Overview
"Beyond the Doors" is a 2-player cooperative escape room built for the EPITA J3D project. Two players — one hosting a server, one connecting to it — must solve complementary puzzles to escape a series of medieval-alchemist rooms. The game runs a server-authoritative architecture: all game logic and state live on the server (TCP sockets + JSON), while each client renders a Pygame scene and sends its actions over the network.
Gameplay
Each player starts in their own room and progresses towards the exit. Their puzzles are complementary — the game can only be completed if both players finish their side.
Player 1 (host) — the Alchemist
- The Wheel: Align the Four Elements with their cardinal directions (Earth = North, Air = East, Fire = South, Water = West)
- The Alchemy Room: Activate the four stages of the alchemical process in the correct order (Nigredo → Albedo → Citrinitas → Rubedo) to obtain the Philosopher's Stone
- The Library: Use the Philosopher's Stone to unlock the door and consult the flower reference book
- The Exit: Reach the final room
Player 2 (client) — the Botanist
- The Wheel: Align the four Humours with their cardinal directions (Bile noire = North, Sang = East, Bile jaune = South, Phlegme = West)
- The Book Room: Read the close-up book for clues
- The Garden: Gather the specific flowers described in the book (Globe Amaranth, Willow, Angrec, Star of Bethlehem, Crown Imperial) and present the correct bouquet to the statue to open the door. A wrong bouquet makes the statue drop every flower.
- The Exit: Reach the final room
Controls & Networking
- Move: Left mouse button on an adjacent walkable cell (click-to-move)
- Interact: E key
- Pause/Resume: ESC or P
- Debug grid overlay: F3
Host a game via python main.py → option 1. Port 65432 must be reachable. Clients connect by choosing option 2 and entering the host's IP. All game logic runs on the server — clients are rendering terminals.
Technologies
Interesting Details
- Server-authoritative design: the server owns all game state; clients send actions, not positions
- Complementary puzzles: both players must complete their side — solo completion is impossible
- Wrong bouquet in the Garden makes the statue drop every flower, requiring the player to gather them again
- Standalone server mode: you can start just the server process without launching a client