High Fidelity System Architecture

High Fidelity System Architecture

Our plan, as described in this diagram (download as PDF), is to create the software and protocols enabling VR to reach the scale of today's consumer internet. High Fidelity will allow many different people and institutions to deploy virtual world servers, interconnecting those servers so that people and digital objects can travel among them, and harnessing shared computing devices to scale their content and load.   When used with the new display and input devices coming to market, High Fidelity will enable a planetary-scale virtual space with room for billions of people, served by billions of computers.

The Domain Server is the master server that is started up to create a virtual world.  The domain server creates a number of smaller servers as needed to stream the audio, avatar, and world contents to connecting clients.  Those clients can be either people connecting interactively, or 'agents' that might--for example--be an AI avatar or a piece of interactive content. The virtual world contained inside a particular domain server can be of any size, and can contain any number of servers, people, and content.  Domains can be connected to each other, and can also occupy fixed locations within a larger 'metaverse'.

The Nameserver is a service run by High Fidelity that allows domain servers and places inside them to be discovered via unique text names. So, for example, you can type  @SanFrancisco  or  @HighFidelity  to jump instantly to the location and orientation inside the appropriate domain server for that name.  The Nameserver also can authenticate people, so a particular domain server might be created that allows access to only a specific set of people by checking their identity with the Nameserver.  It is not necessary to use the High Fidelity Nameserver to deploy a domain server.  In a manner similar to websites, the Nameserver uses SSL and OAuth to authenticate accounts, with High Fidelity operating as a certificate authority, so that entrants to a particular virtual world can securely disclose chosen aspects of their identity.

The Voxel Server stores and serves the content that is found inside the virtual world.  Objects inside the virtual world are stored in a sparse voxel octree.  The octree subdivides the world into a smaller and smaller set of nested cubes, and only creates smaller cubes when there is something inside that cube that needs to be stored.  This allows an enormous physical space to be efficiently stored, because the 'empty' areas don't take up any extra space.  More importantly, it allows huge numbers of objects to be viewed at a huge distance, because cubes/voxels can be averaged together.  So, for example, a forest of thousands of highly detailed trees will ultimately become just a single pixel/voxel on the horizon.   High Fidelity voxel servers can be recursively nested inside of each other; for example, your apartment in a large virtual city can be managed by a separate voxel server containing all the content inside it.  In this way, cities and other interesting virtual spaces can be created containing an almost infinite amount of content.

The Audio Mixer serves a 3D spatialized audio stream for the clients that want to 'hear' the virtual world, and does so by mixing together the live audio coming from people and objects in the virtual world.   When an audio mixer becomes overloaded with clients, the domain server can deploy new audio mixers that are connected together in a multicast tree to scale to any number of listeners.  As described below, these new mixers can optionally be obtained from the High Fidelity assignment server, allowing load to be balanced among nearby peers.

The Avatar Mixer collects and re-transmits information about avatars such as facial expressions and body movements, and scales in a manner similar to the audio mixer.

The Assignment Server is a High Fidelity service that allows people to share their computers with each other to act as servers or as scripted interactive content.  Devices register with the assignment server as being available for work, and the assignment server delegates them to domain servers that want to use them.  Units of a cryptocurrency, will be exchanged by users of the assignment server, to compensate each other for their use of each other's devices.  The assignment server can analyze the bandwidth, latency, and Network Address Translation capabilities of the contributed devices to best assign them to jobs.  So, for example, an iPhone connected over home WiFi might become a scripted animal wandering around the world, while a well-connected home PC on an adequately permissive router might be used as a voxel server.

The Digital Marketplace allows people to buy, sell and transfer digital goods to and from each other, and move these goods among different domain servers.

The Currency Server provides the wallet services and other API's needed to allow people to quickly and easily share their computing devices as well as buy and sell digital goods using a cryptocurrency.

Javascript is the language used by the High Fidelity system to create interactive in-world content, avatar attachments, and UI extensions to the interactive client.  Javascript code can also be deployed to additional devices through the assignment server or domain server, allowing interactive content to be deployed across as many machines as desired to create very complex simulations.  Examples of different scripts can be found here.

The Domain Server, Audio Mixer, Avatar Mixer, Voxel Server, Interactive Client, and other software components needed to create and deploy virtual worlds are released under the Apache 2.0 open source license, and the code can be found at the High Fidelity Github repository.