About
Zappy is a large-scale, multiplayer simulation project developed over six weeks during the second-year final at Epitech. Built by a team of six, the project consisted of three main components:
- A game server written in C
- A fully autonomous AI client in C++
- A real-time, 3D graphical interface using Irrlicht
As the team lead, I was responsible for organizing the production timeline, assigning and reviewing tasks, and ensuring deliverables were completed on time. I also developed the entire graphical client, designed the plugin system, and contributed to server command development.
🏅 Awarded the highest score in our class for the final jury presentation
Project Info
- Role: Project Lead & 3D Client Developer (Irrlicht), Plugin System Architect, Server Command Contributor
- Team Size: 6
- Duration: 6 weeks
- Languages: C (server), C++ (AI & client)
- Graphics: Irrlicht 3D
- Communication: Socket-based with
write
,read
, andpoll
🎮 Introduction
Zappy simulates a strategic AI-based competition where teams of drones evolve on a tile-based map. The objective: reach level 8 with six drones from the same team to claim victory.
Each AI:
- Gathers resources scattered on the map
- Consumes food to survive
- Must collaborate and group up to level up
- Can broadcast encrypted messages using a custom pattern based on the team name
The server validates commands and enforces game rules based on a common protocol shared across all groups in the class.
🧠 The AIs are fully autonomous, but our plugin system allows manual control for debugging and demonstration purposes.
🧠 AI Behavior & Game Mechanics
Roles & Strategy
- Levelers: focus on leveling up and teamwork
- Scouts: explore and gather food
- Disruptors: jam or interfere with opponents
- Attackers: harass enemy teams strategically
🔐 All AI messages are broadcast globally, so we implemented a custom encryption system to hide information from opponents.
Map Dynamics
- Tile-based world with resources that must be harvested and used strategically
- Positioning is essential: AIs must group precisely to evolve
🎨 3D Client & Plugin System
Our 3D client was inspired by space-themed visuals, with drones rendered using handmade assets and animated models.
- Each AI drone is visualized with a growing number of rings based on its level – a unique way to visually represent power progression
- 3D elements such as resource pickups, energy cores, and stat displays were created from scratch
- A plugin system allows the client to:
- Load custom 3D elements or environments
- Add new stat displays or in-game menus
- Swap assets, music, and sounds (e.g., transform the theme to a Kirby-style version)
📤 Source Code
👉 GitHub Repository:
https://github.com/ArthuryanLoheac/ZAPPY
📚 What I Learned
- Coordinating a multidisciplinary game dev team under strict time constraints
- Developing a full 3D game interface using Irrlicht
- Designing and using plugins and shared libraries (.so) to build flexible tools
- Ensuring real-time synchronization between server, AI, and GUI
- Building protocol-compliant communication systems
💡 The most difficult part was using Irrlicht, which gave us a less-than-optimal result compared to other engines that could have performed better.