Skip to main content

Binaries

A server, written in C, that generates the inhabitants’ world. A graphical client, written in C++, that can be used to watch what happens in the world. A client, with no language constraint, that drives an inhabitant through orders sent to the server.

info

We chose to use the C++ language for the client (ia).

Server

$> ./zappy_server -help
USAGE: ./zappy_server -p port -x width -y height -n name1 name2 ... -c clientsNb -f freq
OptionDescription
-p portPort number
-x widthWidth of the world
-y heightHeight of the world
-n name1 name2 ...Name of the team
-c clientsNbNumber of authorized clients per team
-f freqReciprocal of time unit for execution of actions

Clients

Graphical Client

$> ./zappy_gui -help
USAGE: ./zappy_gui -p port -h machine
OptionDescription
-p portPort number
-h machineHostname

AI Client

$> ./zappy_ai -help
USAGE: ./zappy_ai -p port -n name -h machine
OptionDescription
-p portPort number
-n nameName of the team
-h machineName of the machine; localhost by default

The server is executed as one single process and one single thread.
It must use select to handle socket multiplexing; the select must unlock only if something happens on a socket or if an event is ready to be executed. (See strace)

warning

The team name GRAPHIC is reserved for the GUI to authenticate itself as such to the server.

The AI client is autonomous.
After it’s launched the user has no further influence on how it functions.
It drives a drone (the player) (kind of similar to what a champion does in the Corewar project, remember?).

The graphical client is autonomous.

warning

The mandatory protocol for the graphical client is given alongside this subject, see GUI Protocol.
It is used by the reference server (so you can test your GUI with it aswell).