Configuration Files:

At run time the main function can be passed the name of a configuration file to use. If none is provided a simple default one will be used. The configuration files are XML based and contain all the set-up data for a game.

The Python utility: RoboTourney.py reads and edits these files via a GUI. It can also launch the tournament

The default xml config file

<?xml version="1.0" ?>
<RoboConfigData roborootdir="d:\mysoftware\zbotwar">
    <RoboConfigDatarelease roborootdir=".\" />
    <xporter ipaddr="127.0.0.1" port="5002" rcv="OFF" send="OFF" />
    <gameparams endofround="AtFirstElim" numberofrounds="10" numprograms="8" startenergy="60" timelimit="30000" tourneytype="Evolve" />
    <robomap file="maps\WideOpen.xml" ipaddr="127.0.0.1" port="5001"  maptype="PYTHON" />
    <robomapexe glfile="..\OpenGLmap\Release\OpenGLmap.exe" pyfile="RoboMapIface.py" />
    <robots cloning="ON" hitpoints="2" lifespan="600" maxrobots="250" shooting="ON" />
    <RoboTrace id="0" max_file_size="600" status="OFF">RoboTrace.txt</RoboTrace>
    <robotfile>robots\newrobot3.txt</robotfile>
    <robotfile>robots\Random</robotfile>
    <robotfile>robots\Random</robotfile>
    <robotfile>robots\Random</robotfile>
    <robotfile>robots\Random</robotfile>
    <robotfile>robots\Random</robotfile>
    <robotfile>robots\Random</robotfile>
    <robotfile>robots\Random</robotfile>
    <evolution bestbot="ON" genesize="32" genesizefixed="ON" intrateam="ON" mutationrate="4" sexual="NOP_XOVER" status="ON" />
    <evolution bestbot="ON" genesize="32" genesizefixed="ON" intrateam="OFF" mutationrate="4" sexual="NOP_XOVER" status="ON" />
    <evolution bestbot="ON" genesize="32" genesizefixed="ON" intrateam="OFF" mutationrate="4" sexual="NOP_XOVER" status="ON" />
    <evolution bestbot="OFF" genesize="32" genesizefixed="ON" intrateam="ON" mutationrate="4" sexual="NOP_XOVER" status="ON" />
    <evolution bestbot="ON" genesize="32" genesizefixed="ON" intrateam="OFF" mutationrate="4" sexual="FIXED_XOVER" status="OFF" />
    <evolution bestbot="OFF" genesize="32" genesizefixed="ON" intrateam="ON" mutationrate="4" sexual="NOP_XOVER" status="OFF" />
    <evolution bestbot="ON" genesize="32" genesizefixed="ON" intrateam="OFF" mutationrate="4" sexual="FIXED_XOVER" status="ON" />
    <evolution bestbot="OFF" genesize="32" genesizefixed="ON" intrateam="ON" mutationrate="4" sexual="NOP_XOVER" status="ON" />
</RoboConfigData>

xporter element:

The xporter allows networked machines to pass robots from arena to arena. A central server utility (Python based) must
be running somewhere. The XML element has 4 attributes that tell the core logic where to find that central server.

1) ipaddr is the TCP/IP address of the machine running the python transport server.
2) Port is the TCP/IP port the server is using
3) rcv must be "OFF" or "ON" (use upper case!) . If OFF the core logic will not accept input robots from the server.
If 'ON' The core logic will accept robots from the server.3) rcv must be 'OFF' or 'ON' (use upper case!) .
4)send must be "OFF" or "ON" (use upper case!) . If OFF the core logic will not send robots to the server.
If 'ON' the core logic will send robots to the server.

gameparams element:

endofround="AtFirstElim"
currently an unused attribute, eventually will set the conditions to use to decide when a round has ended
numberofrounds="10"
how many rounds to run before the tournament is ended
numprograms="8"
how many Teams are run in each round. Must be greater than 0 and less than or equal to 8
startenergy="60"
the initia energy level of each robot
timelimit="30000"
the maximum time a round is allowed to run, in seconds
tourneytype="Evolve"
One of three settings: "Evolve" "TestEvolStrategy" "NoEvolution"

robomap element:

The game can put up a visual display of the robots in action, which is refered to as the map. This can
be a seperate process acting as a server on the local or a remote host. There are Python maps and OpenGLmap servers.
Or it can be an 'in process' display, which is a recasting of the OpenGL standalone code.
Or the maptype can be set to invisible and no display will show. This allows for the CPU cycles to go into robot processing
and evolution.

1) file is the path to the xml file describing the layout of the map itself (obstacles, etc)
2) ipaddr is the TCP/IP address the map server is using
3) Port is the TCP/IP port the map server is using
4) maptype must be one of 4 choices: "INVISIBLE" "PYTHON" "OPENGL" "INPROC_OPENGL"