# Virtual 3D address space Each *plane* is a separate space where objects exist and actors can move around. Each *plane* is a torus, i.e. at the end of the address space the coordinates wrap around. *Cells* are the smallest unit which can be mapped to servers, which simulate them. The association between cells and servers is done via DNS(?). The same risks apply. Clients receive and send sensations and actions from and to *virtual addresses*, which are then routed to the underlying servers. *Subscriptions* define which messages a client is interested in. Servers may serve less events in case permissions or the simulation itself don't allow for them to be served to a particular client (think visibility or fog of war). *Federation* between servers in the grid is necessary to handle overlap and transition between cells as well as event relay to adjacent cells. All *objects* in the world are instances of *blueprints* from the server database. Blueprints are cryptographically signed packages of assets, code and other metadata, which can be taken with you from server to server. A server might not run your objects, but could give you a temporary replacement. Ownership and trust is managed analogous to Bitcoin and the GPG web of trust. Your identity is linked to an account on another server, which manages your assets, however only concensus opinion is ultimately valid as a proof of ownership etc. Special rules depend on the server settings. The common protocol allows for integration of various quality levels, assets and other web infrastructure. # Limits - Coordinates: -2^62+1 to 2^62-1 signed integers used as fixed point floats where the basic unit is 1000, i.e. down to millimeter scale. This presumably allows faster/smaller implementation on languages with GC and tagged representation of fixnums. - Cells: Depends on hardware limits and base scale, e.g. in the area of 1km to 10km cubes. However given the current state and in the foreseeable future cells of this size should be good enough. Future iterations may co-locate cells on the same server and/or raise the cell sizes. # Protocol - Events: Binary frames in custom protocol. - World information, objects, etc: Might be shared as structured text form data, i.e. SEXP/JSON/XML. - Content exchange: Via direct connection, server download, or distributed, i.e. Bittorrent. A single server instance can run one or more cells. From the point of view of a client a proxy can distribute load and provide a single address to access a network of simulated cells. +---------------------------------------------+ +-------.. | +--------+ +--------+ +--------+ +--------+ | | +--------+ | |CELL ...| |CELL 23 | |CELL 24 | |CELL ...| +--+ |CELL ...| | +--------+ +--------+ +--------+ +--------+ +--+ +--------+ | SERVER 1 | | SERVER ... +------+------------+------------+------------+ +----+--.. | | | | +----+-----+ +----+-----+ +----+-----+ | |CLIENT ...| |CLIENT 42 | |CLIENT ...+--------------/ +----------+ +----------+ +----------+