No Description
Nemo b36e3a3367 Start writing tests (again!) 2 months ago
gothok Start writing tests (again!) 2 months ago
sushigo Docs 6 months ago
.editorconfig Adds a init script 6 months ago docs 6 months ago


An attempt at board game state space serialization. The basic assumption is that the board game is just a complicated state machine, with player playing moves that result in state transitions.

If you can serialize a board game, you can do cool stuff:

  1. Play it over the wire
  2. Record games played over time
  3. Learn patterns from previous games

This tries not to introduce players into the state itself, instead use markers to keep track of where everything is. Built using Cap’n Proto. The game rules themselves are not part of this, and game validations are optional.

For eg, having a chess serialization that allows for 2 kings is okay, since the game’s logic would never allow it to reach such a state.


Game State Partial State Transform RPC Game Engine
Sushi Go


  • State: Support to serialize the current state of any game. Just the state specification.
  • Partial State: State specification for partial state (if any). Just the partially observable state that the players would get.
  • Transform: Code to transform the state -> partial state given other parameters.
  • RPC: Code to send state transforms over the wire. Or moves
  • Game Engine: Code for the server

Only the first 2 are covered in the project.