| |
|
Chameleon Table is a distributed multiplayer card game inspired by Coloretto, developed as a final project for the Distributed Systems course. The application allows between 2 and 5 players to join a shared game room from different devices and play in turns, with one active game per authenticated user. The system follows a client-server architecture: a central FastAPI server manages game logic and state, while clients interact through a React single-page application running in the browser. Real-time updates are pushed to all connected clients via WebSocket, ensuring that every player sees the current state of the game without polling. Game state is persisted in a PostgreSQL database, so that active games survive server restarts and players can reconnect within a grace period. The full system is containerised with Docker and starts with a single command. Key distributed systems challenges addressed include crash recovery, real-time state synchronisation across multiple clients, and safe concurrent access to shared game state.