Game Developer's Overview

So you have a game, and you want to implement it in Volity.

This is an (extremely high-level) overview of what you need to do:

What you need

See the page about the development environment we recommend.

The game module

The game module is the "referee.html" class=wikipagelink>referee. The referee manages a table; the game module is in charge of the game which gets played there.

You currently have two choices for writing a game module: Perl, and Python. For each language, there is a library which implements the Volity parlor and referee.

There is also a "Game" class. (In Python, this is volity.game.Game; in Perl, it is Volity::Game.) Your actual task is to write a subclass of this class.

Right now, you have two language options for game module creation. Both include extensive documentation and examples.

Perl

Jmac maintains Frivolity, a set of libraries and programs that allow you to create and run parlors in Perl. The package includes a complete, working example of a Tic Tac Toe parlor, including sample UI and ruleset files (even though those aren't part of the game module creation process).

Python

[the Volity page of Zarf's website].

The UI file

The UI file is, as the name implies, the user interface. It is displayed in a client window. Whenever the referee announces a move, the UI updates itself to display the new game state. Whenever a player needs to make a move, the UI watches for his mouse-clicks and reports them to the referee.

You currently have just one choice for writing a UI file: SVG, with embedded ECMAScript. (That's the same as Javascript, really.)

The embedded script code can call various functions to get stuff done: see the ECMAScript API.

A [thorough introduction and example] is in the [developer documentation].

See also: SVG tricks and SVG script tricks.

Jmac wishes me to note that there is actually a second choice: plain text with embedded ECMAScript. This is the Friv client. It exists purely as a protocol example right now -- it's horribly unfriendly and no player will want to use it. So you can ignore it.