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:
- Operating System Services
- Network Services
- Multimedia Services
- User Interface Services
- Scripting and Behaviour Services
- Common Utilties
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.
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.
A Spine-based application must be able to access the name of the computer.
A Spine-based application must be able to access the name of current user of the computer.
A digital environment application must be able to query the local network environment.
Spine should provide mechanisms for discovering hardware capabilities of the host machine.
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.
A Spine-based application should be configurable, and thus should provide a means to read, and manipulate configuration data.
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.
Spine, being a distributed system, provides a Server component that can "serve" environment data.
Spine should manage connections, disconnections and message passing between remote applications.
A server must listen for incoming connection requests from remote client applications.
The server-side of a digital environment must provide means to manage and control potentially large amounts of environment data.
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.
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.
The Client-side of an immersive environment must control multimedia resources such as graphical images, textures and sounds.
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.
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
Graphics (Plug-in renderers)
The pluggable Spine graphics system must provide simple control and creation of a graphical scene.
In this world of immersive 3D graphics, we cannot overlook the importance of 2D effects:
3D graphics are a primary enabler of immersive digital worlds.
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.
Pre-made 3D objects must be able to be loaded, placed and viewed within an immersive scene.
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.
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.
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.
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.
Spine-based applications should be presentable on multiple formats.
Some possibilities are:
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 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.
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.
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 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.
ConstantsSpine 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.
UnitsSpine 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
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:
The Spine Software Development Kit should ship with a comprehensive documentation set that includes:
Easy to navigate website
Simple, yet complete API documentation