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
$ make
Will compile all the project
$ make clean
Will delete all object files
$ make fclean
Will delete all object files and the binary
$ make re
Will execute fclean rule and compile the project
Targets:
zappy_server
zappy_gui
zappy_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