Code Architecture

Servers

Credence Software Corporation (CSC) will maintain scalable servers that define the Credence virtual world. Servers include

Asset Server

Bulk assets are kept here. An Asset is an immutable set of bits with a unique ID. Examples are an artifact model, a texture, a text message, a terrain deformation.
The Asset Server will serve signed assets (ID and content checksum encrypted with Asset Server private key). Clients may freely exchange authenticate assets in a bit-torrent-style mesh.
APIs are available to fetch an asset, query the availablility of a set of assets, upload assets, set and query asset management attributes.

Zone Server

A zone server animates a subset of the World by creating Realtime Differential Streams (RDS) for all moving artifacts and avatars in a Zone. Each Client is subscribed to a small set of RDS feeds that are used to render their current view.
RDS can be distributed P2P if desired, especially when Clients are co-located. RDS data can be encrypted using a key provided by the Zone Server, so each sharing Client can authenticate the stream.
Note that only physics is simulated on the Zone Server. Object poses are rendered on each Client station, though they may be parameterized by the Zone Server (e.g. “at rest”, “jumping style 3”).
Our goal is to transmit NO basic terrain info to the Client. The terrain will be algorithmically generated based on a location seed.  All Clients use the same algorithm and seed, so see the same landscape.

World Server

A World Server contains the Rule Engine. It tracks avatar states, artifact conditions, processes and triggers. All user requests are executed here. Processes such as growing, weather and aging are executed here.
CAC and SAM streams define the engine API.

NPC Server

Unoccupied avatars are animated using algorithms that run on the NPC Server. Also herd, lair and unique creatures have processes here (vermin run on the Zone Server).

Login Server

A single-sign-in login is provided thru SSL HTTP/SOAP. The credential returned is authenticatable by every other CSC Server (and anyone else for that matter). A Client can gain access to any server by providing their credential.
Credential: Signed {user id,  payment option (free player/standard/gold)} ?

Database Servers

All models, artifacts, avatars, users, processes and terrain modifications are kept in a database. It is back-end, accessed only by Login, Zone and World servers.
Scalability can be achieved through “sharding”, where rows of large tables are hashed by key to choose the database?
Assets are NOT kept in a database, though their IDs may be indexed here.

Client

CSC will create a “dumb terminal” client that is distributed free or at duplication-cost. This facilitates viral adoption of the game.

Rendering Engine

Some OpenGL tool set like DarkStar/Havok/Speedtree.

Terrain model

Terrain includes everything from continental forms to the layout of trees in a forest.

Credence uses a proprietary algorithmic terrain generator. This allows an infinite world, and drastically reduces the need to download models and textures.

Deformation is tracked thru model updates, which are identified by the Zone Server from data provided by the World Server, and downloaded by the client from the Asset Server. Deformation and asset information is signed and shared P2P as needed.

Object model

Scene objects are abstract, provided by the Zone Server with a physical description for rendering/animating. Each object is identified with a set of uuids calling out class, subclass, instance. Attributes can be queried in bulk e.g. a container capacity, owner, purpose. Attributes let the client guide the user in using objects appropriately through the GUI e.g. can it be wielded? consumed? carried? ridden?

User requests to use an object are communicated to the World Server as a state change. If valid, the World Server communicates with the Zone Server which controls animation for the containing Zone, which in turn communicates to the client a change in orientation/location/pose for the affected object.

Incremental release

The Credence Client Application is released as a set of granular libraries. Each library supports some feature: terrain generation, rendering adapter, object handler, attribute interpreter, GUI control.

As features change, only the affected libraries need be re-released. They can be loaded by the Client app on-demand, from the Asset Server.

 

 

Philosopy               Boon System            Honor      Craft      Design  Home

 

Credence: an MMP world of Consequences

Contact us

©2009 Credence Software