ZAPPY¶
Overview¶
ZAPPY is a network game about managing a world and its inhabitants, where several teams confront each other on a tile map containing resources. The winning team is the first one where at least 6 players reach the maximum elevation. To do so, a team of player AIs is launched on a board representing their planet, communicating –and sabotaging other teams– together to achieve victory.
Features¶
…
Requirements¶
gcc
python3
make
Nix (optional, for reproducible builds via
flake.nix)
Project Structure¶
.
├── server/
│ └── ...
├── ai/
│ └── ...
├── gui/
│ └── ...
├── scripts/
│ ├── align_columns.py
│ ├── check_commit_message.py
│ ├── discard_headers.py
│ └── insert_headers.py
├── .clang-format
├── .clang-tidy
├── .gitignore
├── Makefile
├── flake.nix
├── flake.lock
├── assignment.pdf
├── zappy_ref-v3.0.0.tgz
├── .github/
│ └── workflows/
│ └── ci.yml
└── (bonus/)
Installation¶
Clone the repository:
git clone <repository-url> cd <repository-directory>
Build the project:
make
Use
make reto force a rebuild.Use
make cleanto remove object files.Use
make fcleanto remove all build artifacts and binaries.
(Optional) Using Nix:
nix develop make
Usage¶
Server¶
Run the server shell with:
./zappy_server -p port -x width -y height -n name1 name2 ... -c clientsNb -f freq
-p port: Port number.-x width: Width of the world.-y height: Height of the world.-n name1 name2 ...: Name(s) of the allowed team(s).-c clientsNb: Number of authorized clients per team.-f freq: Reciprocal of time unit for execution of actions.
[!NOTE] The team name
GRAPHICis reserved for the GUI to authenticate itself as such to the server.
GUI¶
Run the server shell with:
./zappy_gui -p port -h machine
-p port: Port number.-h machine: Hostname of the server.
AI¶
Run the server shell with:
./zappy_ai -p port -n name -h machine
-p port: Port number.-n name: Name of the team.-h machine: Name of the machine; localhost by default.
Testing¶
Coverage: Run:
make cov(To be completed: Add test instructions and coverage details.)
Contributors¶
Yohann B. |
Gabriel H. |
Julien B. |
Valentin R. |
Hugo H. |
|---|---|---|---|---|
|
|
|
|
|
For more details, see assignment.pdf.




