Tech:

Web browsers and servers have evolved to the point where they provide the infrastructure for social 3D spaces.

The Spaciblō project uses these evolving standards as the basis for all of our tools.

Listed below are the tools under development and their relevant standards.

Lend a hand:

This is a new project and is not ready for primetime, but if you'd like to join the party then check out the Spaciblō GitHub Project. There is a long list of TODO items in the Issues section, including work for artists, developers, theorists, and people who know their way around linear algebra.

In the browser:

Spaciblō tools run in browsers which are embracing the new wave of web standards.

These browsers include Firefox and Safari.

User

A JavaScript object representing a user's preferences (e.g. key bindings).

It also provides a handler for motion and chat gestures.

Message transport

A JavaScript object managing WebSocket based channels to servers.

It also handles serialization and deserialization of events to and from JSON.

Simulation model

A JavaScript model of the various elements of a space: templates, things, portals, etc.

It also manages the loading and unloading of data such as Obj geometry, textures, and animations.

Simulation loop

A JavaScript object which manages space events, updates the model, and communicates with servers.

It uses Web Workers to provide dynamic, non-blocking user interfaces.

3D element

A JavaScript object which uses WebGL to render a visual representation of the simulation model.

It also exposes a 3D picking API.

2D elements

A section of the page which is given over to HTML based UIs provided by things in spaces.

Things are full fledged web applications with URLs, templates, views, and persistent data.

Debug

Loggers, inspectors, and testing tools for browser-side development.

On the web server:

Spaciblō services are web stack agnostic but blatantly opinionated.

The reference implementation uses the Apache web server and Django.

User accounts

Secure authentication and OpenID based identification.

Profiles

Contact info, body editing, and input preferences.

Simulation manager

The controller which runs space simulations as they are needed.

Simulation model

A graph of things which represent a space.

It also wraps a geometry graph for collision detection.

Simulator

The clock, event loop, interpolators, thing API with webhooks, and scripting engine for a space.

It also controls the physics engine.

Message service

The server side of the WebSockets based communication channels.

Static resource service

Serves the geometry, texture, skeleton, and animation files which make up templates.

API

A flexible library enabling RESTful services for the accounts, profiles and simulators.

Third party application support

OAuth controlled, rate limited APIs for connecting remote clients and services.

Dev tools:

Documentation

Tutorials and APIs docs, protocols definitions, and example code.

Distribution

A public source repository, a five minute checkout to boot process, online demos, and a public EC2 image.

Art assets

Creative commons licensed models, templates, and spaces.

Application bridges

Scripts and examples for moving Spaciblō compatible content to and from third party editing applications.