-
Notifications
You must be signed in to change notification settings - Fork 106
server
title: Ryzom Core Server Reference description: Programming reference for all shard services published: true date: 2023-03-18T00:57:16.605Z tags: editor: markdown dateCreated: 2019-12-13T00:40:41.205Z
A Ryzom Core deployment consists of services at three scopes: domain (unifier) services shared across all shards, shard services that make up one game world, and machine services that run on every physical server. Services communicate via NeL's unified network (layer 5) and discover each other through the Naming Service. All services are built on NLNET::IService.
Source code is under ryzom/server/src/ (one subdirectory per service). The NS and WS services are Ryzom-customized copies of the generic NeLNS services under nelns/. The NeLNS LS (login_service) is replaced by a login module inside SU, though WS can still connect to a standalone LS if configured. The NeLNS AS and AES binaries are replaced by the RAS binary (see Administration).
- Development Setup — Building and running a localhost shard
- Production Setup — Deploying on servers
- Service Layout — Which services run where
These run once for the entire domain, shared across all shards.
| Service | Description |
|---|---|
| SU — Shard Unifier | Cross-shard coordination and player authentication. Includes a login service module that replaces the standalone NeLNS LS. Character name uniqueness, character transfers, far-teleport, unified chat routing, entity location tracking, guild names, mail forwarding, and Ring session management. Modules: login_service, character_sync, entity_locator, chat_unifier, name_manager, ring_session_manager. |
| BS — Backup Service (2+) | Persistent file storage. Save, load, append, delete on behalf of all services across all shards. Character saves, guild data, AI persistent variables all go through BS to disk. Typically runs as a master (bms_master) plus a dedicated backup for logs (backup_lgs). Supports master/slave replication and a web interface. |
| LGS — Logger Service (1+) | Structured event logging. Receives game events from all shards (combat, items, character actions) for later GM investigation. |
| MFS — Mail Forum Service | In-game mail and guild forum backend. File-based per-player mail and per-guild forum storage, with a web interface for the client's embedded browser. |
Each shard runs one instance of each of these (except where noted). A Ring shard runs the same set plus DSS.
| Service | Description |
|---|---|
| NS — Naming Service | Service registry and discovery. All services register on startup; peers look each other up by short name. Like DNS for live services. |
| TICKS — Tick Service | Game loop clock. Sends synchronized tick events to all game services at ~100ms. All game state updates happen on tick boundaries. |
| WS — Welcome Service | Shard entry point. Receives authenticated players from SU, checks availability and player limits, selects which FES to route to (load balancing), reports shard status. |
| Service | Description |
|---|---|
| EGS — Entities Game Service | Central game logic. Player characters, inventories, skills, combat, crafting, harvesting, missions, guilds, teams, outposts, PvP, fame, items, phrase/sabrina action system. The largest service. |
| AIS — AI Service (1+) | NPC and creature behaviour. Typically one per continent (e.g. 8 on a main shard, 1 on a Ring shard). Loads World Editor primitives, spawns NPC groups and fauna, runs event/action state machines, executes AI script bytecode, handles aggro, pathfinding, and movement. |
| GPMS — Global Position Manager | Entity position tracking and vision. Authoritative positions, movement validation, PACS cell assignment, vision delta computation (which entities each player can see). |
| FS — Frontend Service (1+) | Network gateway to clients. Clients are distributed across FES instances. Handles the UDP/QUIC protocol, decodes client actions (position, combat, chat), routes impulses to backend services, sends vision updates and database changes back. |
| IOS — Input Output Service | Chat and localization. Routes all chat channels (say, shout, team, guild, region, universe), manages dynamic string translation (phrase resolution, parameter substitution, conditional clauses), bot name resolution. Hot-reloads translations via reload. |
| SBS — Session Browser Server (1+) | Ring session browser. Runs alongside each FES. TCP interface for clients to browse, join, and manage Ring scenarios. |
| Service | Description |
|---|---|
| DSS — Dynamic Scenario Service | Ring scenario management. Server edition and animation modules — scenario loading, act transitions, entity placement, Lua-to-AI-script translation, Adventure Master controls. |
| Service | Scope | Description |
|---|---|---|
| MS — Mirror Service | One per machine per shard | Shared-memory data synchronization. Provides a Structure-of-Arrays dataset in shared memory that local services read and write directly. Changes are mirrored to MS instances on other machines via network. Stores entity properties (position, HP, visual properties, etc.) and fame tables. |
The NeLNS framework provides standalone AS (admin service) and AES (admin executor service) binaries. In Ryzom deployments, both are replaced by RAS (ryzom_admin_service) — a single binary deployed in two configurations via patchman templates:
-
ras— Runs once on the domain entry point machine. Registers as short nameAS. Acts as the central admin interface: web administration, aggregates status from allraesinstances, routes admin commands. -
raes— Runs on each service machine. Same RAS binary launched with--fulladminname=admin_executor_service --shortadminname=AES. The StartCommands create theAdminExecutorServicemodule (AES role: launches, monitors, and kills local services, reports machine stats), open an L3 server for local services to connect to, and connect up to therasinstance via L3 gateway. In patchman deployments, defined ascmdLine none(patchman manages its lifecycle); in Ryzom Core 4 without patchman, launched by a shell script wrapper that auto-detects ports from sibling service configs. Does not appear in admin service listings since it is the process managing all other services on the machine.
Both roles use the same binary with different StartCommands and config. DontUseAES=1 is set globally so no standalone NeLNS AES processes run.
| Service | Description |
|---|---|
| RAS — Ryzom Admin Service | See above. Replaces both NeLNS AS and AES. |
| PATCHMAN | Server-side patch distribution. Deploys updated binaries and data to shard machines. See Install Patchman. |
| Service | Description |
|---|---|
| MOS — Monitor Service | Debug entity viewer. TCP server streaming entity positions from the mirror to external monitor clients for a real-time overhead view. MySQL login auth. |
| LAS — Log Analyser Service | Query engine for PDS delta logs. Web TCP interface for searching entity changes by ID, date range, or string. Ran as master/slave pairs at Nevrax; currently non-functional since PDS is disabled. |
| PDS — Persistent Data Service | Typed column-store database for guilds, missions, and fame. Was running at Nevrax with a dedicated BS pair; broken during the Shard Unifier transition when _PDBsi was removed. Code-generated *_pd.h classes still run in EGS as in-memory data structures, but persistence now goes through the separate BS-based PDR save path. |
| EVS — Entity View Service | Debug entity data viewer. Network interface to query entity information from the mirror. |
| GUS — General Utilities Service | Generic module host. Empty service shell that loads modules via singleton registry. Short name configurable. |
| PDSS — PD Support Service | Batch analytics service. Scans character and guild PDR save files from BS backups and generates player activity statistics (active/inactive reports per shard). Configured with scheduled DailyCommands and .pdss_css scan scripts defining filters (skill level, activity date, guild) and info extractors (play time, session count, activity dates). Runs standalone (DontUseNS=1; DontUseTS=1). |
| Service | Description |
|---|---|
| AS | NeLNS standalone admin service. Replaced by RAS in Ryzom deployments. |
| AES | NeLNS standalone admin executor service. Replaced by RAS in raes configuration. |
| AGS | Early (2002) test harness for spawning and moving NPC actors via GPMS/EGS. Precursor to what became AIS. Uses the pre-CEntityId Sid class. Commented out of the build. |
| AIDS | AI data compiler/dispatcher. Parsed World Editor primitives into binary AI data and sent it to AIS instances via network messages. Designed for a split architecture where data compilation and runtime AI were separate services. Merged into AIS, which now loads primitives directly. |
| SS | Ring load testing tool. Simulates multiple editors and clients connecting to Ring sessions. |
| TTS | Combat balance testing tool (2002). Loads .combat_test sheets, spawns fake players via EGS, makes them fight using sabrina sentences, and writes detailed per-action statistics to testSessionReport.txt. Requires special EGS message handlers (SPAWN_TEST_PLAYER, TEST_TOOL_ENGAGE_COMBAT) that may no longer exist. Commented out of the build. |
| RBS |
PDS delta compaction and reference builder. Compacts fine-grained deltas (seconds → minutes → hours) and builds new .dbref reference snapshots by applying accumulated deltas to the previous reference. Tasks run in background threads. Non-functional since PDS was disabled. |
- NeL Net — The networking library all services are built on
- How to Create a Service — Building your own service
- Basic Architecture of the Ryzom Services — Overview of service interactions
- Shard Commands — Runtime commands for managing a live shard
- Client Reference — The other end of the FES connection