This repository contains everything relating to Volity, an open platform for online real-time multiplayer strategy games.
Volity is a specification for a network of individual game servers, called parlors, organized around a coordinating registration server, known as the bookkeeper. A single Volity game network has a single bookkeeper and many parlors, each of which knows how to play a single game.
Every entity on a Volity network, both servers and players, exists atop a single XMPP (Jabber) user account, and all Volity-specific network communication between these entities occurs over Jabber-RPC. Players are transparently XMPP users, and play Volity games through client programs. These programs know how to use both the basic XMPP protocol as well as Volity's own RPC-based protocol.
Each parlor is a process running on a machine somewhere -- not necessarily alongside the network's bookkeeper, or any other parlor -- that knows how to play a single game. Parlors can be written by anyone with the gumption to do so, using any programming language they choose, so long as they stick to Volity's own communication protocol. They can then register themselves with any Volity bookkeeper open to new parlors, and that bookkeeper will then reveal to its players the availability of this parlor.
The documentation folder in this repository contains a much deeper dive into all these components and how they all work together, and why it's cool. You can browse the Volity Handbook (formerly the Volity Wiki) directly from this repository.
Volity is in fact cool enough that some friends and I launched a startup around it in 2005, where we ran our own Volity network and licensed some commercial games to adapt for it, but it didn't work very well as a business and we shut it down a few years later. So here it is on GitHub! I hope it you find it interesting.
Directories found at the top level:
-
bookeeper-perl: Perl implemenentation of a Volity bookkeeper.
-
documentation: The
handbook
directory contains the static HTML remnants of what used to be Volity's official documentation wiki. It remains the best single reference for the Volity specification. (You can use raw-GitHub magic to browse it online.) The other subdirs contain the book Volity Developers' Guide (incomplete, but lays out some basics fairly well) and an article about creating Volity UI bundles. -
dtd: Contains the XML DTD document describing the grammar used by the game-record documents that parlors submit to bookkeepers after games wrap up.
-
games-perl: Parlor modules implemented in Perl. At the time of this writing, contains only an implementation of Hearts.
-
games-python: Parlor modules for a bunch of public-domain games implemented in Python, including Werewolf, Hex, and others.
-
games-ui: Volity user-interface bundles for all the games found in the previous two directories, as well as some test stuff. Everything has an SVG UI and some have a text UI as well.
-
Javolin: Gamut, A Java-based game client for the Volity. (It had the working title Javolin, and still uses that namespace.) Able to use games' SVG-based UI bundles.
-
server-perl: Implementation of a Volity parlor in Perl.
-
server-python: Implementation of a Volity parlor in Python.
-
smack-dev-2.0-vol: A fork of the Smack XMPP library for Java, containing some customizations that Gamut depends on.
-
web-client: An experimental web-based Volity client ("WebGamut"), which never saw official release.
Many files and directories found throughout this repository contain or reference various open-source licenses. These licenses apply to the files and directories to which they are attached.
Files and directories in this repository that do not specify a license in this manner are copyright (c) 2004-2013 by Jason McIntosh (jmac@jmac.org).
The Volity project was conceived and led by Jason McIntosh (jmac@jmac.org). He, Andrew Plotkin (zarf@eblong.com) and Rebecca Turner (turner@mikomi.org) co-developed its core protocols and implementations, as well as the web services that used to run on volity.net.
Other contributors to software and documentation in this repository include:
-
Bill Barksdale (bill@billbarksdale.com)
-
Phil Bordelon (phil@lsu.edu)
-
Roger Crew (crew@cs.stanford.edu)
-
Austin Henry (ahenry@sf.net)
-
Idoric (idoric@free.fr)
-
Dan Knapp (dankna@accela.net)
-
Doug Orleans (dougorleans@gmail.com)
-
Bill Racicot (sparkyalbatross@gmail.com)
-
Karl von Laudermann (karlvonl@rcn.com)