Zappy is a real-time multiplayer network game where multiple AI teams compete to achieve a single goal: have 6 players of the same team reach level 8. The project is composed of three independent modules:
- A server written in C
- A graphical client written in C++ (using Irrlicht)
- An AI written in Python
.
├── server/ # Server source code (C)
├── gui/ # Graphical client (C++ with Irrlicht)
├── ai/ # AI in Python
├── scripts/ # Launch and test scripts
├── docs/ # Technical documentation
└── README.md # This file
gccorclangmakevalgrind(optional for debugging)
-
g++ -
- Recommended install: via package manager (e.g.
libirrlicht-devon Debian/Ubuntu)
- Recommended install: via package manager (e.g.
sudo apt install libirrlicht-dev- Python ≥ 3.8
- Python dependencies (recommended: use a virtual environment)
sudo apt install python3cd server/
makeThis will produce the zappy_server binary.
cd gui/
makeThis will produce the zappy_gui binary.
cd ai/
makeThis will produce the zappy_ai binary.
makeThis will produce the 3 binaries
./zappy_server -p <PORT> -x <WIDTH> -y <HEIGHT> -n <TEAM1> <TEAM2> ... -c <CLIENTS> -f <FREQ>Example:
./zappy_server -p 4242 -x 20 -y 20 -n Team1 Team2 -c 6 -f 100./zappy_gui -p 4242 -h 127.0.0.1cd ai/
python3 zappy_ai.py -p 4242 -h 127.0.0.1 -n Team1ℹ️ You need to launch one zappy_ai for one team
The game is won by the first team to have 6 of its players reach level 8. To achieve this, AIs must:
- Stay alive by collecting food
- Gather the required resources to level up
- Use
broadcastto coordinate with teammates - Use
Forkto create new team players
ForwardRight/LeftLookInventoryTake <item>Set <item>Broadcast <msg>Connect_nbrForkIncantation
⏱️ Each command has an execution time depending on the server frequency (-f).
valgrind ./zappy_server ...: check for memory leaks on the server side- Python AI: enable debug logs with
DEBUG=1 python3 zappy_ai.py ... - Use tools from the
scripts/folder to automate tests or level-up scenarios
Available in the docs/ folder !
- Robin Schuffenecker (Python AI)
- Evann Bloutin (C++ GUI)
- Titouan Bouillot (C++ GUI)
- Paul-Antoine Salmon (C server)
- Santiago Pidcova (C server)