Skip to content
Jan Boon edited this page Mar 14, 2026 · 31 revisions

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).

Setup

Domain (Unifier) Services

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.

Per-Shard Services

Each shard runs one instance of each of these (except where noted). A Ring shard runs the same set plus DSS.

Infrastructure

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.

Game World

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.

Ring Shard Only

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.

Per-Machine Services

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.

Administration

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 name AS. Acts as the central admin interface: web administration, aggregates status from all raes instances, routes admin commands.
  • raes — Runs on each service machine. Same RAS binary launched with --fulladminname=admin_executor_service --shortadminname=AES. The StartCommands create the AdminExecutorService module (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 the ras instance via L3 gateway. In patchman deployments, defined as cmdLine 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.

Other Services

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).

Not Used in Production

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.

See also

Clone this wiki locally