Server Architecture
Overview
At the top level, there is the Conductor, which is the same on the Client. The Conductor is a basic plugin interface for various services. Using a config file, it loads various service plugins. Service plugins can be in the form of network services like a HTTP server, or they can be things that directly involve the virtual world in some way such as a simulation service. In addition to services, the Conductor also has a number of connection factories. These are used to initiate connections with remote servers, for instance over HTTP.
One of the Conductor's major tasks is keeping time. It makes every attempt to iterate 20 times per second, and each iteration, it calls the iterate method of each service that has requested it. In this way, the services have a cycle that is in sync and it can be guaranteed that every service gets one iteration at a time.
Because of the plugin nature of the Conductor, and its service oriented architecture, MV3D can be deployed in single server or multi-server environments.
Services:
- AccountService - Directly handles and stores account information. Provides back end authentication for logins.
- AssetService - Manages AssetGroups and Assets. Can cache individual assets, or host AssetGroups.
- DirectoryService - Provides directories of objects that may be spread out over many servers. Currently used to map a Realm or AssetGroup to its master or slave servers, but can store a ID:Servers mapping for anything.
- LoginService - Includes a JSON RPC over HTTPs interface used to set up a 2 way trust relationship between a client and a server (or two servers).
- PBServer - Runs a Twisted Perspective Broker server that is the basis for communication between servers and clients (and servers with other servers).
- JSONRPCServer - Hosts a HTTP(s) server that speaks in JSON RPC protocol to expose interfaces. Includes authentication support.
- PlayerService - This is the service that Clients talk to. It is their point of entry to MV3D after the LoginService authenticates them.
- RealmService - Hosts Realms, which are responsible for managing their pools of simulation servers. Also maintains redundancy of Areas.
- SimulationService - The workhorse of MV3D. This service performs the simulation of the game world including physics and other game mechanics.
Back to TechnicalDocumentation.
Attachments
-
MV3DLogical.png
(5.8 KB) - added by mike
3 years ago.
Logical setup and dataflow
-
octree.dia
(2.6 KB) - added by mike
8 months ago.
Octree pool diagram (source)
-
octree.png
(22.0 KB) - added by mike
8 months ago.
Octree pool diagram


