Overview
At G68 every new multiplayer game started from scratch: its own socket layer, its own matchmaking, its own persistence. I designed a shared real-time platform — lobby, rooms, matchmaking, chat, leaderboards, and game-state sync as reusable Node.js services — so a new game only implements its game rules.
The platform shipped 8+ casual multiplayer titles and became the team's standard, cutting new-game development time and maintenance cost significantly.
The problem
Each game team was rebuilding the same real-time infrastructure — connection handling, rooms, reconnection, state sync — with different bugs in each copy. Fixes didn't propagate, and launching a new game took months of server work before any gameplay existed.
Architecture
A gateway service terminates WebSocket connections and routes messages to per-game room services. Shared services handle auth, matchmaking, presence, and leaderboards; Redis backs ephemeral room state and pub/sub between nodes, with MySQL for durable player data. Game logic plugs in as an isolated module with a fixed lifecycle contract.

Highlights
- —8+ games on one platform New titles reused lobby, rooms, matchmaking, and leaderboards — server work for a new game dropped from months to weeks.
- —Horizontal room scaling Rooms are pinned to nodes with Redis pub/sub bridging, so capacity grows by adding nodes — no session stickiness hacks.
- —Reconnection & state sync Players resume mid-game after network drops; the room replays authoritative state instead of trusting the client.
- —Operational simplicity One deployment pipeline, one monitoring story, one on-call runbook for every game the studio ran.
Screenshots
The production system is under NDA, so these are illustrative schematics of the platform's behaviour — not captures of the real service. Figures shown are sample data.