Zappy is Epitech's second-year final project.
This project aimed at developing a network game where multiple AI teams compete on a field to gather resources.
The winning team is the one that manages to have at least 6 players reaching the maximum level.
Players, represented by AIs, move around a field to gather necessary resources to evolve.
Each player starts at level 1 and must collect specific resources to reach higher levels. The ultimate goal is to have at least 6 team members reaching the maximum level.
Teams need to devise strategies to optimize resource collection and hinder other teams' progress. Communication and coordination among AIs within the same team are crucial to achieving this goal.
- Author:
- Technology:
- Features:
- Manages communication between GUI and AIs
- Manages resources and field state
- Synchronizes and manages AI and GUI actions
- Author:
- Technology:
- Features:
- Resource gathering strategy
- Autonomous decision-making to reach the maximum level
- Coordination with other team members
- Author:
- Technology:
- Features:
- Real-time visualization of the field and AI actions
- User interface to monitor team progress
- Debug and performance monitoring tools
To install gui dependencies, do this once:
./InstallGuiDependencies.sh
To install AI dependencies, do this once:
pip install numpy
To make the project:
make
After installation, here's how to launch the project
./zappy_server -p [PORT] -x [WIDTH] -y [HEIGHT] -n [TEAMS] -c [NB_CLIENTS] -f [FREQ]
-p: Connection port to the server.
-x & h: Dimensions of the game map.
-n: Names of all the teams.
-c: Maximum number of players per team.
-f: Execution frequency of the server.
./zappy_ai -p [PORT] -n [TEAM NAME] -h [SERVER HOSTNAME] -i [ID]
-p: Connection port to the server.
-n: Team name of this AI.
-h: IP address for server connection.
-i: Client ID. (optional)
./zappy_gui -p [PORT] -h [SERVER HOSTNAME]
-p: Connection port to the server.
-h: IP address for server connection.