About

JSpace is a general purpose, 3D, multi-user cyberspace. JSpace is a client-server version of the Digital Sunlite Project. It uses much of the same technology but has a more traditional client-server design instead of a peer-to-peer design. JSpace is free to use; anyone can run their own server. JSpace is customisable - server logic can be extended with a dll.

JSpace is designed to be used for many different applications, including 3D chat, information visualisation, architectural visualisation, and games.

3D Engine

The 3d engine is based on the OpenGL graphics API. Right now it uses the fixed function graphics pipeline as opposed to vertex/fragment shaders.

Model formats supported are .md2 (Quake2) models and .3ds (3D Studio Max) models. Image files can also be treated as models. Model animation is not supported at this time.

Image formats supported are Jpeg and TGA.

In-World editing

All hand-editing of objects is done 'in-world' through the client program. Objects can be picked up, moved, rotated, and the properties of objects can be changed. Changes are propagated to the server and to other clients in realtime.

Resource System

Files used by the client are called resources. Resource types include 3d models, texture bitmaps, script files etc. The resource system allows lazy (on-demand) loading of resources from a range of source - RAM, the local disk, HTTP servers, or the current J-Space server. Loading of a resource is transparent to the requesting object, and runs in its own thread. The requesting object is notified using an event driven-design when the resource has loaded or the load failed. Resources downloaded from the server are cached on the local disk. HTTP downloads are currently not cached.

Resources can also be uploaded from a client to a server, when a client uses an avatar for which the server does not have the model, or a client creates an object with a model the server does not have. Consistency of resources between a client and server is lacking strong guarantees right now but this should be remedied soon.

Physics

Currently only the player avatar obeys any kind of physics rules. Player physics is computed for each client on the local client machine. The resulting avatar transformation is sent to the server where it is propagated to other clients. Computing player physics on the client side has the advantage of avoiding CPU load on the server.

Credits

Designed by Nick Chapman. Email me.

Libraries used:

glTexFont - Nate Miller

Intel JPEG Library - Intel Corp.

TinyXML

Lua

ZLib