Ryzom Service Architecture

Service Architecture

Terminology

  • Server: We often use this word to refer to physical server.
  • Shard: This is an instance of the Ryzom universe. Currently, we have 3 shards, one for the French community, one for the German one and the last one for people who speak English. All shards are independent and there's almost no link between shards.
  • Service: A service is an executable, that is running on Servers. For example, we have a service that manage the AI. We can create heterogeneous shards with some Windows server and GNU/Linux server where some service will run on the Windows and other on the GNU/Linux.

The architecture is completely modular. In 2004, a Ryzom shard ran on 8 servers and now with the power of new computer we can run the same shard on a unique server.

Ryzom Services

Here is a list of what the services do in Ryzom:

  • AES (Admin Executor Service) : There's one AES per physical server. It manages the shard by launching other services on the server, kill them, get some information about the services.
  • AS (Admin Service) : There's one AS that coordinate all AES. It's the central point to get/send command to AES.
  • AIS (AI Service) : We can have one or more AIS per shard. The goal of this service is to handle the AI in Ryzom. An AIS is responsible for a geographic area. For example, in Ryzom, we have 6 AIS, one per continent.
  • BMS (Backup Manager Service) : There's 2 BMS (a master and a slave) for all the shards. They manage the saving/loading of data like player characters, guilds... Data are saved in the hard disk using specific file format.
  • EGS (Entities Game Service) : One per shard. It manages all players state, game play rules, missions, items, guilds, ... It's a central point service.
  • GPMS (Global Position Manager Service) : One per shard. It knows where all entities (players, ai) are and check collision.
  • IOS (Input Output Service) : One per shard. Manage all chats, texts, localizations...
  • NS (Naming Service) : One per shard. It's a low level service that coordinate all other services. It knows which services are launched, on which port, it's like a yellow page.
  • WS (Welcome Service) : One per shard. Used in the login process, this service check and route the player to the good FES.
  • TS (Tick Service) : One per shard. A simple service that manage the game time and sync all services.
  • MS (Mirror Service) : One per server. A service that use shared memory and communication to sync data across servers so all services can access quickly to all necessary information.
  • SU (Shard Unifier Service) : One. Manage the things that are not related to a specific shard. For example, teleporting a player from a shard to another shard. Also manage the login of players.
  • FES (Front End Service) : One or more per shard. It's the interface with the Ryzom client. It handles the messages and route them to the necessary service. If you have 2 FES on a shard, clients connection will be spread equally on both service.
  • SBS (Session Browser Service) : Same number as FES. It manages sessions (mainly used by the Ring).
  • MFS (Mail Forum Service)
  • LGS (LogGer Service)
  • DSS (Dynamic Scenario Service)
  • PDSS (Persistent Data Service) : Create some archive to backup regularly the stored files that contains player character information and also be able to extract some information to do some stats or tests. (not use)
  • MOS (MOnitor Service) (not use)
  • LAS (Log Analyser Service) (not use)
  • RBS (Reference Builder Service) (not use)