State Machine

The game is in essence a big state machine. Its state is updated in response to events which are generated by players or the server itself.

The state machine is fully synchronous. Each event is immediately applied and changes the game state, and may cause other events to be generated.