Zappy is a multiplayer network game inspired by the fictional character Zaphod Beeblebrox from "The Hitchhiker's Guide to the Galaxy." In Zappy, several teams of players compete to reach the highest level of evolution in a world called Trantor, a tile-based map abundant in resources. The game includes a server, a graphical user interface (GUI), and AI clients.
The primary goal is for each team to help their players gather resources and elevate their level through a series of incantation rituals. The first team to have six players reach the maximum level wins.
- Multiplayer Network Game: Supports multiple teams and players.
- Tile-based Map: Dynamic world with various resources.
- Graphical User Interface: Visual representation of the game world using Godot.
- AI Clients: Autonomous agents that simulate players' actions.
- Custom Protocol: Client-server communication for game events.
- C Compiler: For compiling the server.
- Godot 4.2.2: For running the GUI.
- Make: For building the project.
-
Clone the Repository
git clone https://github.com/MarioHM2004/Zappy.git cd Zappy
-
Build the Project
Inside each folder you can find a dedicated README in order to understand each section of the project and how to build it and run it (game, AI, server).
The objective is to collect resources, perform rituals, and elevate the players' levels to win the game by having at least six players reach the highest level.
- Food: Essential for survival.
- Stones: Required for rituals and elevation.
- Linemate
- Deraumere
- Sibur
- Mendiane
- Phiras
- Thystame
- Move: Navigate through the map.
- Collect/Drop Resources: Interact with the environment.
- Broadcast: Communicate with other players.
- Incantation: Perform rituals for elevation.
The Zappy protocol defines how the server and clients communicate using TCP sockets. It includes commands for:
- Player Actions: Movement, collecting resources, etc.
- Game Events: Player connection, game status, etc.
- GUI Commands: Visualization updates, map details, etc.
- Move:
Forward
,Right
,Left
- Resource Management:
Take <resource>
,Set <resource>
- Inventory:
Inventory
- Broadcast:
Broadcast <message>
- Incantation:
Incantation
- OK: Indicates a successful command.
- ko: Indicates a failed command.
- Broadcast: Returns a broadcast message from another player.
- Inventory: Lists current resources held by the player.
- Map Details:
msz
to get map size. - Tile Content:
bct x y
to get content of tile (x, y). - Player Position:
ppo #n
to get player position.
Look to the full Zappy GUI Protocol document for a comprehensive list of commands and responses on game folder README.
server
: The game server.game
: The graphical interface developed with Godot.ai
: The AI client.
This project is licensed under the MIT License. See the LICENSE file for details.