Sovereign Storm is a pirate-era naval blockade game: browser-first, multiplayer, and turn-based. Captains plan a round of moves and cannon fire in secret, submit, and watch the server resolve every ship’s actions simultaneously into a single deterministic replay. It is built as a TypeScript monorepo with a Phaser 3 client, a server-authoritative Colyseus game server, and a shared wire-contract package, and ships five distinct match modes spanning team PvP, co-op expeditions, a boss fight, and free-for-all.
This wiki is a portfolio-level tour of how the game is designed and built. The source code lives in a private repository; this documentation describes the architecture and mechanics without exposing secrets or operational credentials.
Quick Links
- Game Design — the simultaneous-turn combat loop, vessels, and what makes each round a planning puzzle.
- Match Modes — Blockade, Voyage, Hunt, Free-for-All, and The Odyssey.
- The Odyssey — the themed PvE expedition mode and its looter-shooter future.
- Architecture — the monorepo layout and the three packages.
- Multiplayer & Netcode — server-authoritative resolution and the plan/submit/resolve/replay flow.
- Developer Guide — running the project, hosting a session, and testing.
Key Facts
| What it is | Turn-based, multiplayer naval combat — plan moves and cannons in secret, resolve simultaneously. |
| Genre | Naval tactics / simultaneous-turn strategy |
| Stack | TypeScript, Phaser 3, Colyseus, Node, Vite, pnpm workspace monorepo |
| Architecture | Server-authoritative — one room resolves the round and ships a full replay to clients that only animate. |
| Modes | Blockade · Voyage · Hunt · Free-for-All · The Odyssey |
| Hosting | Self-host with a one-command Cloudflare quick tunnel to share with friends. |
| Status | Pre-playtest; core loop and all five modes playable. |
Source of Truth
The canonical design and code live in the main repository: github.com/blamechris/sovereign-storm. This wiki mirrors that source; when a documented behaviour changes there, the relevant page here is updated to match.