!-- Modification history 2000-October-10 Jason Rohrer Created. 2001-June-3 Jason Rohrer Added Modification history. --> CTF FAQ

Capture The Flag Frequently Asked Questions

Question: Answer:
Is the number of agents per side running simultaneously in the tournament fixed? Yes. For the tournament, we will be running games with two agents per team.
When an agent is tagged and returns to starting position, will the agent be reinstantiated as new object? Will the agent class instance's local state be lost? No. The position variable associated with the agent is changed, but that's all. However, agents ARE reinstantiated after every flag capture: the entire board is reinstantiated along with all of the agents. Thus, if you're saving local state in your agent class, it will be lost after each flag capture. Static local state won't be lost, of course, but managing static local state can be tricky. Anyway, it's not clear how static local state could be useful. (You could, for instance, keep a counter of how many instances of your agent class have been constructed, but how would this help you?)
Is it the case that when ever there is a tag, both agents involved return to their starting positions? If so, which agent gets credit for the tag? Whenever two agents from opposing teams end up on the same board space, both agents are tagged and return to their starting locations. Any other specification would involve assumptions about which agent was "trying" to tag the other: we really shouldn't be ascribing these sorts of internal meta-states to our agents. No agents ever get "credit" for a tag. Agents score points for their team only by capturing the enemy flag.
It seems that there's a problem with the babysitting rule: What if an enemy is sitting on your base with the flag? Then your agents can't move onto the base to tag the enemy (since they can't move onto their own base while the flag is there unless they have the enemy flag themselves). Even if one of your agents does have the flag, it seems backwards to have to sacrifice the flag capture just to get the flag-carrying enemy off of your base. Though no fool-proof stall tactic is possible here (since you can always sacrifice the flag capture to get the flag-carrying enemy off of your base), we've determined that the most sensible thing to do here would be to alter the rules to deal with this case. We've changed the code, but we still need to post the changed version for download.
Should we direct questions to cs472@cs.cornell.edu, or can we send them to jcr13@cornell.edu directly? Please direct all questions about this project to cs472@cs.cornell.edu. Jason Rohrer will most likely be the one who will answer your questions, but it will be good for Prof. Cardie and the other TAs to hear your concerns too.
Is there any way for agents to get _________ information about the environment/board/board state? (Fill the blank with an information type that isn't provided by the AgentEnvironment class.) No. The point of this assignment is to get you to design agents that can operate intelligently in limited-information environments. All information that's available to your agent is available in the AgentEnvironment interface. If you don't see particular piece information available in AgentEnvironment, then you should assume that there's no way to get that information directly.
To clarify, here is a brief list of information that your agents CANNOT get directly:
  • board size
  • score
  • their own board position
  • whether they have just been tagged or not
  • whether another agent is immediately next to them diagonally
Note that most of these pieces of information can be obtained indirectly through clever, deductive use of local agent states.