03 / Real-time / Multiplayer
ShotCaller
A multiplayer strategy platform combining a server-authoritative game engine, persistent state, and private real-time voice communication.
Simultaneous decisions. One authoritative state.
Many decisions. One source of truth.
Player actions → Server resolution → Persistent state. Simplified explanatory diagram, not a product screenshot.01 / The problem
Players act at the same time, deadlines still matter, and conflicting actions need a consistent outcome. Voice communication adds another boundary: who can hear whom must follow the game state.
02 / What I built
I built the platform from the ground up: deterministic state resolution, action conflict handling, deadlines, persistence, authentication, sessions, administration, security controls, and game lifecycle management.
03 / Engineering decisions
The server owns the result.
A server-authoritative engine resolves simultaneous actions into a deterministic state, with conflict handling and persistent game state.
Voice is a permission, not just a connection.
Private WebRTC / TURN communication uses state-based permissions, signaling controls, and privacy boundaries.
Test the conversation between browsers.
Automated Playwright scenarios exercise real multiplayer flows and real-time communication behavior across multiple browser sessions.
04 / Inspect the engineering
Here’s what
you can open.
Public engine reference, not the complete game platform. The voice, authentication, and deployment systems described above belong to the wider project.
shotcaller-engineWhat the public reference demonstrates
- Deterministic simultaneous-turn rules, deadlines, SQLite transactions, optimistic versions, and idempotent command handling.
- Hashed seat capabilities, explicit player-view allowlists, and a restart/recovery demonstration.
The public reference excludes the full game UI, user-account system, WebRTC / TURN infrastructure, and production operations. Those wider-project claims come from my CV.
The repository README describes its scope and limitations. Production claims and public reference-code behavior are intentionally kept separate.