Zappy is a multiplayer network game where artificial intelligences (AIs) control players on a tile-based map. Teams compete to evolve their members through incantation rituals. The winning team is the first to have 6 players at level 8.
zappy_server(C): game serverzappy_gui(C++): graphical interface (2D with SFML)zappy_ai(C++): autonomous AI client
$ makeWill compile all the project
$ make cleanWill delete all object files
$ make fcleanWill delete all object files and the binary
$ make reWill execute fclean rule and compile the project
Targets:
zappy_serverzappy_guizappy_ai
./zappy_server -p <port> -x <width> -y <height> -n <teamname1> <teamname2> ... -c <clientsNb> -f <freq>
<port>Is the port of the server<width><height>Are respectively the width and the height of the map of the server<teamname>Are the names of the different teams<clientsNb>This is the number of client authorized by team<freq>This it the time frequency of the server, it will define the speed of the game
./zappy_ai -p <port> -n <team> -h <host>
<port>Is the port of the server<team>Is the name of the team it plays for<host>Is the hostname of the server, localhost by default
./zappy_gui -p <port> -h <host>
<port>Is the port of the server<host>Is the hostname of the server, localhost by default
The graphical interface identifies itself using the reserved team name
GRAPHIC.
- Taurus map (exiting one side wraps to the opposite)
- Resources: food, linemate, deraumere, sibur, mendiane, phiras, thystame
- Survival: 1 food = 126 time units
- Vision: increases with level
- Reproduction:
Fork→ egg → new slot for team - Elevation through incantation (see table below)
- Ressources and player required to complete the elevation
| Level | Players | Linemate | Deraumere | Sibur | Mendiane | Phiras | Thystame |
|---|---|---|---|---|---|---|---|
| 1→2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
| 2→3 | 2 | 1 | 1 | 1 | 0 | 0 | 0 |
| 3→4 | 2 | 2 | 0 | 1 | 0 | 2 | 0 |
| 4→5 | 4 | 1 | 1 | 2 | 0 | 1 | 0 |
| 5→6 | 4 | 1 | 2 | 1 | 3 | 0 | 0 |
| 6→7 | 6 | 1 | 2 | 3 | 0 | 1 | 0 |
| 7→8 | 6 | 2 | 2 | 2 | 2 | 2 | 1 |
- Communication via TCP sockets
- Commands sent as plain text, separated by
\n - Server and client uses
poll()for socket multiplexing
Examples:
msz X Y: map sizebct X Y q0...q6: content of one tilepnw #n X Y O L N: new player connectionppo #n X Y O: player positionplv #n L: player levelpin #n X Y q0...q6: player inventorypic/pie: start / end of incantationpdr/pgt: drop / take objectsmg: server messageseg: end of game
- This project was made by Lorenzo LA ROCCA
- This project was made by William JOLIVET
- This project was made by Killian QUINTIN
- This project was made by Nathan DELEGER
- This project was made by Max ROBBERT