Hi all - had mentioned this doc in the alpha meeting today - here it is for your review and comments. Let me know if it all makes sense.
Design: The Metaverse
“The Metaverse is a collective virtual shared space, created by the convergence of virtually enhanced physical reality and physically persistent virtual space, including the sum of all virtual worlds,augmented reality, and the internet.” http://en.wikipedia.org/wiki/Metaverse
The Metaverse consists of the many inter-networked virtual world servers using the High Fidelity virtual world protocol. Many of these servers (which are called domains) will want to be referenced using globally unique names, and may also want to occupy locations in a public 3D space in which they can be seen relative to each other.
High Fidelity provides a lookup service allowing you to find people or places in the metaverse. You register these uniques names with High Fidelity (usernames or placenames) for an annual fee, in a manner very similar to registering a domain name. High Fidelity also provides a service allowing the 3D positioning of domain servers within larger regions of the metaverse which are controlled by regional operators, in a manner similar to how you might register a domain name with a top level domain provider (e.g. “.TV”, etc).
To find a place in the metaverse you do a search for a person or place. You can use a web API for this, or in the High Fidelity interface client, you can bring up the address bar. To go to a person, type @username, and to go to a place type placename.
When you register a placename with High Fidelity, you can choose to make it either a domain, or a location. If you register your placename is a domain, you are given an ID that is used by your domain server to tell High Fidelity the hostname where this server can be found. If your placename is a location, you provide High Fidelity with the domain as well as path (the local place inside the domain) where you want that place name to send as the result of a lookup. Both domain names and location names are part of a single globally unique list of placenames.
The web API place lookup (e.g. http://data.highfidelity.io/api/v1/places/sandbox) will return JSON address data allowing you to go to the place you requested. The JSON data will give you either a domain (in the case where the place name corresponds to a specific named domain), or both a domain and a path that will give you the exact location within the metaverse for that place.
Lookups return data allowing the creation of a High Fidelity address, which is used to connect to that location within the metaverse. The returned address is of the form:
can be an internet hostname or IP address (e.g. “sandbox.highfidelity.io”, or “184.108.40.206”), or the placename of a domain (e.g. “sandbox”).
The path contains an optional string of local names that are resolved by the local domain server (e.g. “/noeValley/starbucks”), followed by an optional viewpoint containing a position and orientation (view direction), e.g. “/downtown/buildingC/23.2,13.0,1015.3/120,0,0”
The final part of a path optionally contains a viewpoint containing a position and orientation, e.g. “23.2,13.0,1015.3/120,0,0”. The viewpoint is relative to the last place resolved in the path.
Hifi addresses can also include local paths, which is similar to a web server - the path following the domain is resolved by the local domain server, e.g. in the address hifi://GeneralElectric/plantHeadquarters/kitchen , first the placename “GeneralElectric” would be resolved by High Fidelity into a domain or location (domain plus path), and the “/plantHeadquarters/kitchen” would then be resolved by the domain server into a specific position and orientation (AKA viewpoint) within the server.
Domain servers will specify the ‘index path’ for the domain, which is the viewpoint to which users will be sent if there is no path specified when they connect to the domain server.