Parlor

A parlor (formerly "jabber_entity.html" class=wikipagelink>Jabber entity with a JID that listens for requests over the network. These can be service discovery requests from players wishing to know more about the parlor, or (more interestingly) RPC requests from players who want to create a new game table there.

A parlor "ruleset.html" class=wikipagelink>ruleset. This might be Chess, Backgammon, Rock, Paper, Scissors, or anything else that someone has turned into a Volity game. It doesn't play the game itself, but instead manages several tables, each with its own, autonomous referee.

Running a parlor

Anyone can run a parlor! That's part of what makes the Volity idea so cool, after all; it's an entirely open game network.

Running a parlor entails obtaining and then running a parlor program, such as Frivolity. Generally, a parlor often ships as more of a framework than a single, self-running game, and you have to plug a separate game module into it before it will run.

Every parlor needs its own Jabber ID, just like every other entity on the global Jabber network. It should also be registered with the Volity network's bookkeeper, if you want game records to work. Unfortunately, until the VolityNet website is up and running, there's no real way to do this yourself. If you do happen to have a functional parlor you'd like to add to the network, for now, contact Jmac.

Examples

The test parlors offer live examples that you can try with any working client program.

Current Implementations

Frameworks that implement a referee (in [developer download page.]

If you want to create a Volity game, you do not have to implement the entire referee from scratch. Download one of these frameworks, and then extend the base Game class to implement your game logic.

RPC Requests

volity.new_table ()

A client calls this on a parlor when the player wishes to start a new, empty conference for that game. If the server can start a new table, it should respond to this call by creating a referee, which will start, join, and configure a new MUC.

Implementation note: Remember that the parlor that created the referee needs to send back the response with the table's JID, not the referee that created the table.

The parlor may also respond to various admin RPC requests.

Service Discovery responses

parlors should respond to disco info and items requests as follows.

Info

The parlor's identity should have category "volity" and type "parlor". The name field will hold a brief title of the game parlor, suitable for display as a window title or icon label.

More machine-readable information (useful to systems like the UI finder) is available through the attached JEP-0128 form:

volity-role
The string parlor.
ruleset
The URI of the ruleset that this parlor provides.
ruleset-version
The version number of that ruleset which this parlor supports.
description
A headline describing the game.
website
Human-browsable URL for the game's website
contact-email
Parlor administrator contact.
contact-jid
Parlor administrator contact.
volity-version
Version of the Volity spec which the parlor adheres to. (Currently 1.0.)
visible
1 if the table is visible to the game finder; 0 otherwise.

Should we define a FORM_TYPE for this?

Note that some elements (ruleset, ruleset-version, description, website) are representative of the game or its ruleset. Others (contact-jid and contact-email) represent the entity which hosts the parlor.

Items

The parlor responds to disco#items queries under the following nodes:

no node
Returns the following node list (open_tables, ruleset, bots).

open_tables
Returns a list of JID pointers to all the parlor's active referees whose tables have not been configured to remain hidden from public discovery.

ruleset
Returns a pointer to a node on the bookkeeper that describes the parlor's ruleset URI. (Consequently, the URI itself is visible as the node part of the returned item.)

bots
Returns a list of bots and bot factories recommended by the parlor. Internal bots (those that the parlors can create itself) will have the same jid as the parlor, and a node which gives the bot algorithm URI. External bots will have the jid of a bot factory, and a node which gives the bot algorithm URI. The list may also contain the jid of a bot factory with no node (in which case the client must query the factory itself). Any entry in the bots list may also have a human-readable name.