The Zappy is a game where several teams confront each others on a map with the goal of collecting ressources and evolve.
The goal of the game is to be the first team to have 6 player reach the highest level. This is done through collecting food to avoid dying and stones that are required for elevation, the ritual that allows players to increase their level.
The game is played through the network, each players connecting to the main server (zappy_server) of the game and choosing their team.
The players themselves are not human-controlled, but instead controlled by an AI (zappy_ai).
Also controlled through the network, is a Graphical user interface (zappy_gui), that communicate with the server using a special set of commands.
Our group made 2 AI instead of the required 1 to introduce multiple strategies:
- Autonomous AI: More focused on itself with a peer-to-peer mentality (zappy_ai).
- Hivemind AI: Uses a leadership system where one player manages the entire group (zappy_ai_hm).
To display the game, we offer a multitude of graphical modes that uses 2 graphicals libraries:
- SFML Graphics: Includes Tile information and 4 different themes.
- Raylib Graphics: Includes Tile information, camera movement and 2 rendering modes (2D and Isometric).
You can build the 3 executables using the provided Makefile:
mmakeAdditionally, you can build each executable separately using the appropriately named rules:
make zappy_server
make zappy_gui
make zappy_ai
Once built, each executable can be run using the following flags (use -help for more information on each mandatory/optional flags):
USAGE: ./zappy_server -p port -x width -y height -n name1 name2 ... -c clientsNb -f freq -d
USAGE: ./zappy_gui -p port -h machine -g graphics
UUSAGE: ./zappy_ai[_hm] -p port -n name -h machine -d
For developers who wish to implement their own AI/GUI the following documentation files explain in details how to implement each program and how to abide by their respective communication protocol:
While working on this project's source code (or any of its in-house libraries), you can launch its unit tests using the following makefile rule (requires Criterion):
make tests_runServer:
Autonomous AI:
Hivemind AI:
SFML Graphics:
Raylib Graphics:

