Chess played on a board with hidden fleets buried underneath it. Every move is also a shot.
Standard chess, standard pieces. Before the first move each player secretly hides three ships in their own half of the board. When an enemy piece ends its move on one of your ship segments, that segment is blasted — and if the piece was a pawn, it dies for the information. Sink all three ships, or deliver checkmate.
- GAME_DESIGN.md — the rules, in full.
- PLAN.md — architecture, milestones, and the open questions.
- CHANGELOG.md — what has shipped.
M1 complete — the rules engine. No UI yet.
| Milestone | State |
|---|---|
| M1 — rules engine | Done |
| M2 — local playable (board UI, pass-and-play) | Next |
| M3 — AI opponent, three levels | Planned |
| M4 — online private games | Planned |
| M5 — public matchmaking | Planned |
packages/engine/ the rules, and nothing else — no React, no network, no Node APIs
npm install
npm test # full suite, including perft (~25s)
npm run typecheckThe perft suite is the move generator's proof of correctness: node counts across the six standard test positions, including the starting position to depth 5. If a count is ever off by one, the generator is wrong — the expectations are not ours to adjust.