User Departure

Games are delicate. To prevent their own untimely demise, most games need the continual participation of all their original players. Should one player stop playing before the game's done, the whole enterprise is usually ruined.

Sadly, the Internet is flaky, as are client applications and operating systems. Volity users will sometimes drop out of a game they're playing without really meaning to. In other cases, a luserly user might run away from a table rather than risk losing the game, leaving the other players in the lurch. In either case, without some sort of mechanism to preserve the game, the remaining users are left with nothing but frustration at having wasted their time.

This article proposes some recommendations for handling unexpected user departures without causing the destruction of the whole game, mainly by proscribing automated referee reactions.

For the purposes of this article, user means a Volity user who is seated and playing a game, and a user leaving literally means a table occupant setting its Jabber presence to "unavailable" within the MUC that underlies the table.

Overview

The referee pays attention to users leaving. If a seated player disconnects but then returns some time later, the referee restores its seat, no questions asked.

However, the referee considers the total abandonment of a non-eliminated seat "disruptive", and will note this when it happens. This serves to passively prompt the remaining players to decide on a course of action, which might include suspending or throwing the game, inviting bots to replace the player, or simply waiting for the missing player's return.

Nondisruptive departure

A referee considers a user's departure disruptive only if that user leaves its containing seat empty as a result. If other active users remain within that seat, the referee does not need to react in any particular way.

Should that user return to the table while the seat remains occupied, the referee will quietly consider it seated and re-inserted into that role.

It is possible, in some games, that a seat will be eliminated from the game before the game is over. The referee makes this determination; an eliminated seat is one from which no further game decisions will be required. This is significant because departure from an eliminated seat is always nondisruptive. The referee does not need to take any action when an eliminated seat is empty.

Disruptive departure

If a user's departure leaves a (non-eliminated) seat devoid of users to control it, the referee considers it disruptive and changes its discoverable state accordingly.

No matter what the game state or the disruption level, if any "state_recovery.html" class=wikipagelink>state recovery information (as it does with all who arrive at the table).

Player reactions

The fate of a disrupted game is up to its players. If a crucial player goes missing, the remaining players can discuss how long to wait, and whether they should suspend the game in order to bring new players in, or invite a bot to the table to fill the abandoned seat.

They can even decide to throw a game, if they don't think that it's worth continuing. This would happen by one player setting the volity.kill_game configuration variable, and then all seated players voting their readiness.