Twoverse, the universe of August 23, 1966

May 28, 2011

This post is part of a series describing the August 23, 1966 project.

The software core of the August 23, 1966 project is a Java software system named “Twoverse,” a parallel universe that exists only in the digital realm.

The Twoverse architecture can be split into three levels - server, client and input. This diagram (full size) includes some unimplemented elements, such as input from a sound sensor.

Arch

System Design

The broad concept of Twoverse includes mechanics and partial system specifications for a massively multiplayer online game. The scope was minimized due to time constraints and to better fit the gallery installation. However, even with a smaller scope, a complete vertical slice of the entire system was implemented and used. Downsized from a universe of many types of objects, the system currently supports a universe made of stars with a few properties, and constellations that connect them with meta-objects known as links. Extensibility was considered from the beginning of development, so adding new objects will require a minimal amount of work.

Server

The system relies on a central server to provide the following:

  • A persistant database of all objects in the universe and their current state, using MySQL
  • User account management, as well as authenticated session negotiation
  • A public API for interacting with the universe, via Apache XML-RPC
  • Client pull style updates for minimizing bandwidth requirements, via an XML feed
  • A browser based frontend to view the status of objects in the universe, via PHP

Client

Using the XML-RPC API, many types of clients are possible. This includes graphical, text-based, mobile, e-mail, etc. The clients implemented for the gallery installation are graphical clients written using the Processing development environment and include the following features:

  • Users can scroll and zoom around a graphical universe of glowing stars
  • Users can click on an individual star to view a close-up view and additional details about its creation and properties
  • Users can create a new star in the universe, and watch a 3D visualization of their star’s formation
  • Users can draw constellations that connect the stars in the universe, and leave them for other users to see
  • Users can visit the gallery website to view a table of all of the stars in the universe, their properties and current status

The graphical client uses the XML-RPC API as defined by the server, and updates its local cache of the universe via the server’s XML feed.

A screenshot of the star chart in a web browser during the time the gallery was open:

Star Chart

Library

The client and server for Twoverse share many common functions, and were designed to inherit from the same code hierarchy. They both stem from a Twoverse Java library, which includes many utility classes, shared functionality and the server executable. The Twoverse library provides these features and many others:

Additional documentation is available as Javadoc comments with the source code.

Interface Screenshots

MT-screenshot

A screenshot of the multi-touch Client with a group of stars displayed at the default zoom level. The lines connecting the stars are constellations drawn by a user.

MT-screenshot

A screenshot of the multi-touch Client viewing the details of a single star.

MT-screenshot

A screenshot of the multi-touch Client zoomed in for a closer look at a cluster of stars.

Continue to the next section, details of the multi-touch table.

Other August Articles