Spine :: Requirements

The following is a possible set of requirements for a platform that enables the creation of immersive applications. spineFORGE is working towards providing as much of this functionality as possible via a set of logically structured programmeable software components.

An platform for building immersive worlds could offer the following functionality:

For a set of requirements and use cases for immersive application software in general - see Use Cases.


Simple placement of the software on the users machine

The mechanism by which software is installed on a computer is very important. It is the first interaction the user has with a digital product. Spine will ship via a standardized, familiar installation system that will cleanly place the system on a new computer, and just as cleanly, remove it again if required. The spineFORGE website will provide detailed instructions and extra information about setting up a Spine system for use.

Unified install process

If it is at all possible, when Spine is deployed on multiple platforms, it should provide a similar install procedure on each of these platforms.

Operating System Services

Computer information retrieval and manipulation

Spine must provide access to general computer and operating system information so that it can be exposed to applications or integrated into the digital environment.

Computer name

A Spine-based application must be able to access the name of the computer.

User name

A Spine-based application must be able to access the name of current user of the computer.

Network addresses

A digital environment application must be able to query the local network environment.

Hardware probing

Spine should provide mechanisms for discovering hardware capabilities of the host machine.

File management

Spine should provide access to the operating system file structure as well as cater for commonly used file management functions such as reading, writing and copying files.

Buffers and streams

Spine should offer components that simplify the use of data buffers and streams.

Configuration Management

A Spine-based application should be configurable, and thus should provide a means to read, and manipulate configuration data.

XML Support

XML is the latest open format for data exchange. Spine should support XML for many areas of use, such as message passing, configuration and storage.


Spine should allow applications to be easily ported to languages other than English.

Network Services


Spine, being a distributed system, provides a Server component that can "serve" environment data.

Session management

Spine should manage connections, disconnections and message passing between remote applications.

Connection listener

A server must listen for incoming connection requests from remote client applications.

Resource management

The server-side of a digital environment must provide means to manage and control potentially large amounts of environment data.

Server Tick

An immersive environment - like it's human users, changes through time. The server must provide a means to update itself for each time-frame.


Spine's multimedia and interactivity aspects are controlled through it's Client component.

Session Management

The Spine Client must be able to search for Servers, and connect to one once it is found. It must also be capable of sending and recieving messages or signals to and from the Server.

Resource Management

The Client-side of an immersive environment must control multimedia resources such as graphical images, textures and sounds.

Client Tick

As with the Server, the Spine Client must provide a means to update itself through time.


If possible, Spine should allow peer-to-peer immersive worlds to be created.


Spine clients must be able to connect to HTTP servers and retrieve data and documents as well as perform the standard set of HTTP commands.

Data compression

The key to large scale immersive worlds is allowing large amounts of environment and session data to pass to all computers involved. Compression will help with fitting all that data into the limited bandwidth available to computer networks

Multimedia Services

Graphics (Plug-in renderers)

The pluggable Spine graphics system must provide simple control and creation of a graphical scene.

2D Graphics

In this world of immersive 3D graphics, we cannot overlook the importance of 2D effects:
Vector drawing
Surface management

3D Graphics

3D graphics are a primary enabler of immersive digital worlds.

Geometry management

3D graphics is accomplished using complex geometrical systems. Spine must provide ways of loading, manipulating and displaying many kinds of geometrical shape and animation data.

Static meshes

Pre-made 3D objects must be able to be loaded, placed and viewed within an immersive scene.

Morphing meshes

Differing shapes should be able to be blended together over time to provide morphing or shape-shifting effects as well as other kinds of animation.

Skeletally-animated meshes

Geometry must be able to be animated using complex jointed skeleton heirarchies. This will enable realistic character animation. Smooth-weighted surfaces should be supported for believable animation.

Inverse Kinematics

This technology will allow things like complex constraints and animations.


Spine graphics must be able to draw complex materials and surfaces using the advanced rasterization capabilities of modern graphics systems.


Spine must support the ultimate in graphics flexibility - shaders.


Realistic materials are created using a combination or artist-created and procedurally generated texture that is applied to geometry.


Projection allows textures and images to be placed over geometry in special ways that can simulate complex lighting effects or decals.

Cameras and Viewports

Since Spine enables interactive immersive worlds to be created and controlled, we need a way to view these worlds.


All scene aspects: geometry, texture and cameras, must be able to be transformed, or manipulated in position and orientation.


No multimedia experience is complete without video. Spine should allow video streams to be played back in multiple ways - fullscreen, within windows, and placed on geometry.


Graphical user interface elements should be able to be placed onscreen alongside the scene itself. These could provide means of controlling as well as analyzing the environment.

Resource Management

2D and 3D graphics are stored in many different formats and data types. Spine should allow the loading of as many formats as possible, to maximize the variety of software that can be used to create content for Spine-based applications.

Alternative Mediums

Spine-based applications should be presentable on multiple formats.
Some possibilities are:
Panoramic displays


Immersion within a digital environment is maximized with good use of sound. Spine must provide simple access to powerful sound functionality.


Spine should support the loading, playing and filtering of music within an environment. It would be preferable to support a wide array of music formats.

Surround Sound

Surround sound is incredibly effective when it comes to convincing a user they are taking part in a real experience. Spine must allow world-builders to place and control sounds in 3D space.

Streaming and compression

Spine should support streaming audio, as well as various compressed sound and music formats.

User Interface Services


The keyboard is the primary computer input device. Spine must support computer keyboard input with speed and simplicity.


Mice are very effective controllers of a 3D scene or user inteface. Spine must provide fast and precise access to the state of mouse controllers.

Joysticks and control wheels

Many kinds of immersive application will benefit from being joystick-controlled, for example flight simulators and driving applications.

Force feedback

Spine should be able to control the force feedback mechanisms of modern controllers, thus maximizing immersiveness.


It would be great to provide support for VR datagloves, for the ultimate in manipulative possiblities within 3D worlds.

Scripting and Behaviour Services

Scripting Language Integration

Spine should support the building of applications with scripting and interpreted languages. It would be ideal to have a plug-in language system.

Common Utilities

Spine must provide access to a wide set of internationally-recognized constants. These will be of many cateogories, from mathematical contants, to lists of things such as ther days of the week, the names of the months in various cultures. If possible these could be accessed by operating system-hosted API's, otherwise default builtins can be used.
Spine should provide information, conversions and display of multiple scientific units, such as the metre and kilogram, newton and kelvin. This capability should possibly be hosted within the default number type, or at least string formatting functions.
Rendering systems (DrawModules)

The Spine graphics system should support add-on DrawModules that extend it's functionality and allow for the presentation of advanced immersive elements such as :
Outdoor rendering system
Indoor rendering system
Space rendering system

Physics system

Spine could provide a physics system that will control objects that should behave in a real-world manner. The physics system should control things that are flying, falling, breaking etc.
It could be argued that this should be provided by another seperate library, although such capabilities will soon be provided by add-on hardware or even on the Graphics chip, so core integration might simlpy be more efficient.
Such a system should support:
Rigid Bodies
Soft Bodies


The Spine Software Development Kit should ship with a comprehensive documentation set that includes:
Easy to navigate website
Simple, yet complete API documentation
Reference Manuals

[Prev]        [Next]

Back to Top