Zentral (First Draft)

There is a central object database that stores objects persistently.

The structure of an object is individually defineable.

Each object carries JavaScript? code that is able to render the data that this object stores (clientscript).

Changes in the database will be broadcasted to all clients.

Clients may modify the database, either through the clientscript, or manually.

Clientscripts can be stored per object or in a common base class.

The database server communicates with clients through an IRC daemon.

Changes in the database will be streamed by the server to a specific channel.

Clients which wish to receive these events, join the channel as well.

We exploit the broadcasting nature of ircd servers and the ability to watch output for debug purposes.

Clients support the irc protocol and expose an opengl view to the user.

When a client connects, it initially queries the database for available objects and individual object data, if not already locally available. It also queries for the clientscripts associated with each object.

Clientscripts have full access to a high level graphics rendering API and may modify the objects they are associated with.

Changes made by clientscripts will be posted back from the client to the db server through the IRC server.

The idea is to establish a basic bootstrapping for a virtual reality where clients can program/define appearance and behaviour of objects.

Server or clients never have to be restarted in order to make modifications to appearance and behaviour of objects.

Each object supports access rights, so it is possible to make attributes read- or write-only for a group of users.

Each object also carries a serverscript that is being executed by the db server and animates object data on the server based on a global time index.

Thus, each object carries one serverscript and one clientscript.

Client and server execute all scripts sequentially or threaded.

If a scripts execution time exceeds a given limit, the script will be halted and marked as bad locally.

As scripts are written in JavaScript?, exploits that breach system security should be virtually impossible.

Objects may also carry references to externally stored shaders, meshes and textures.

A reference comes in form of an URL to a http resource.

Clients may cache data locally to save bandwidth.