Game Suspension

Game suspension occurs either when a player makes a successful volity.suspend_game RPC request, or as a result of an abandoned game (if all the seated players leave a game).

The ref signals the start of suspension by sending a volity.suspend_game(JID) call to call players at the table. (The JID is the player who requested the suspension, or the referee if it was an automated suspension.) When the game resumes, the ref sends volity.resume_game() to everyone.

A suspended game retains the state it held at the moment of suspension, but is temporarily unplayable. While its game is suspended, the referee will neither send any game-namespaced (that is, ruleset-defined) RPC requests, nor accept any (kicking them all back with a fault).

Limited table configuration may take place. Basically, players can change settings marked by volity-namespaced RPC requests, such as the table's preferred language. However, no game-namespaced configuration calls can occur, as these generally have the effect of changing the game's URI, and that simply can't happen after a game starts.

While a game is suspending, players can freely move among the table's seats -- obervers can sit, players can swap seats or stand, and bots can be summoned and invited to sit. However, the number of occupied seats cannot change. If, during suspension, one of the seats that was occupied at game start becomes empty, then the referee will refuse to resume the game (and will send back faults to any other seat's occupant that tries to declare readiness). Furthermore, the referee will deny requests to sit in empty seats that were available during the game's initial configuration but not used by the time the game started.