OpenNel Khanat Server - Overview
Prerequisite: Our game server uses RyzomCore / OpenNeL, and all related documentation also applies to our game server: www.ryzomcore.org.
The alphabetical index page of their “wiki's” makes it possible to find a lot of useful information, tutorials: https://ryzomcore.atlassian.net/wiki/display/RC/Reference+Guides
Some previous definitions
- Server: by server we refer to the physical machine on which our universe is running. As an abuse of the language we can one also use the term server for talking about the programs/services of the game running it.
- Shard: It is an instance of the game universe. Each instance is independent(ex: Aniro and Aristopole formerly on Ryzom) and represents the world in which players circulate.(Note: you can run two shards on the same server)
- Service: A service is a program that runs on the server. The game universe is managed entirely by a dozen services that share different tasks, for example: the service AI manages the mobs while the service IOS manages the “chat channels”. These services are run on the server, but can be distributed on several machines with even different OS(windows + linux for example).
In our case, (as our first single serve), a virtual machine named “kh-dev” was running Debian Squeeze 7 and installed on a real physical server: “ninm.net”. Our second server run on Debian Jessie 8 and our third is a virtual machine also under Debian Jessie 8.
Starting and stopping game services
Starting and stopping game services is done using a simple script once connected to our game server.
Launching Game Services « Khanat » :
$ shard start
Stopping Game services « Khanat » :
$ shard stop
The services
There are 23 services(as shown by the display from the binary file of ryzom core). However, they are not all useful for running a game.
khanat@kh-dev:~$ ls ryzomcore/code/build/bin/ryzom_* ryzomcore/code/build/bin/ryzom_admin_service ryzomcore/code/build/bin/ryzom_ai_service ryzomcore/code/build/bin/ryzom_backup_service ryzomcore/code/build/bin/ryzom_dynamic_scenario_service ryzomcore/code/build/bin/ryzom_entities_game_service ryzomcore/code/build/bin/ryzom_frontend_service ryzomcore/code/build/bin/ryzom_general_utilities_service ryzomcore/code/build/bin/ryzom_gpm_service ryzomcore/code/build/bin/ryzom_ios_service ryzomcore/code/build/bin/ryzom_log_analyser_service ryzomcore/code/build/bin/ryzom_logger_service ryzomcore/code/build/bin/ryzom_mail_forum_service ryzomcore/code/build/bin/ryzom_mirror_service ryzomcore/code/build/bin/ryzom_mission_compiler ryzomcore/code/build/bin/ryzom_monitor_service ryzomcore/code/build/bin/ryzom_naming_service ryzomcore/code/build/bin/ryzom_patchman_service ryzomcore/code/build/bin/ryzom_pd_support_service ryzomcore/code/build/bin/ryzom_persistant_data_service ryzomcore/code/build/bin/ryzom_reference_builder_service ryzomcore/code/build/bin/ryzom_session_browser_service ryzomcore/code/build/bin/ryzom_shard_unifier_service ryzomcore/code/build/bin/ryzom_tick_service ryzomcore/code/build/bin/ryzom_welcome_service
Details of the services:
- AES (Admin Executor Service): This service allows to launch and kill the other services, and also to collect information about the various services of the machine where it runs.
- AS (Admin Service): When services are spread over several machines, there's a unique administration service called AS which coordinates all AES tasks for correct order sending.
- AIS (AI Service): The purpose of this service is to manage the AI's of the world(mob behavior). An AIS service is responsible for a specific geographical area, as for example on Ryzom, there are six AIS services running: one for every continent.
- BMS (Backup Manager Service): This service manages the loading/saving of the “player data”. This data is saved(to the disk) in an special “archive format”. Each shard has two BMS services: one master and one second in slave mode.
- EGS (Entities Game Service): One EGS service per shard, this service manages the status of each avatar, missions, items, Guilds, rules of the game(eg, spells, combat, harvest, craft, etc.), etc. It is a central service and without it the game can't run.
- GPMS (Global Position Manager Service): One per shard, it knows the position of each entity(avatar, mobs, etc …), determines who sees who, and then gives the information to FES, it also handles collisions.
- IOS (Input Output Service): One per shard, this service takes care of the chat channels, all the texts displayed as well as their different versions(Translation).
- NS (Naming Service): One per shard, it's a pure “network service” whose role is to coordinate the other services. It keeps a list of each service launched, it's ports, etc.. It's a kind of “translation page”, DNS as we say in computer slang.
- WS (Welcome Service): One per shard, it takes care of the connection process and authentication of the player before returning it to the service FES(of his shard).
- TS (Tick Service): One per shard, it is a very simple service that manages the game time(date/time) and allows the synchronization of all services.
- MS (Mirror Service): One per server, this service uses “shared memory” and synchronizes data across all servers so that services can access specific “Game informations”.
- SU (Shard Unifier Service): Unique service, it handles functions not specific to the shard, like the teleportation of a player from one shard to another, it also manages the process of player connections.
- FES (Front End Service): One or more per shard, this service is the one that manages the game client, sending it the different events but also by calculating properties changes to send to it without saturating bandwidth. All communications from the customer go through this service which then routes those calls to the right services. If there is more than one FES service for a shard, then the connections are distributed uniformly between the different FES. This makes it possible to distribute the load between several machines if necessary.
- SBS (Session Browser Service): Similar to FES, it handles Rings sessions.
- MFS (Mail Forum Service): Web IG?
- LGS (Logger Service): Log Service?
- DSS (Dynamic Scenario Service): Ring?
- PDSS (Persistent Data Service): This service creates archives for regularly do backups of files containing information about avatars. It is also able to extract some information to generate “player stats”. Not used.
- MOS (Monitor Service): (not used)
- LAS (Log Analyzer Service): (not used)
- RBS (Reference Builder Service): (not used)
Liste des ports
- admin_service.cfg
- WebPort = 49995
- login_service.cfg
- WSPort = 49999
- WebPort = 49998
- ClientsPort = 49997
- admin_executor_service.cfg
- ASPort=“46701”
- admin_service.cfg
- ASWebPort=“46700”
- ASPort=“46701”
- ai_service.cfg
- SUPort = 50505
- backup_service.cfg
- WebPort = 49970
- ListeningPort = 49990
- WebPort = 49898
- L3BSPort = “49950”
- common.cfg
- AESPort=“46702”
- dynamic_scenario_service.cfg
- ASWebPort=“46700”
- ASPort=“46701”
- AESPort=“46702”
- SUPort = 50505
- SUGlobalPort = 50503
- L3BSPort = “49950”
- L3SlaveBSPort = “49951”
- L3MasterLGSPort = 49992
- LGSBSPort = 49994
- L3LGSBSPort = 49995
- BasePort = 51400
- entities_game_service.cfg
- AESPort=“46702”
- SUPort = 50505
- SUGlobalPort = 50503
- L3MasterLGSPort = 41292
- L3SlaveLGSPort = 49993
- frontend_service.cfg
- FSUDPPort = 47851
- input_output_service.cfg
- AESPort=“46702”
- SUPort = 50505
- SUGlobalPort = 50503
- L3MasterLGSPort = 41292
- L3SlaveLGSPort = 49993
- logger_service.cfg
- LGSL3Port = 41292
- naming_service.cfg
- BasePort = 51000
- session_browser_server.cfg
- SBSPort = 48851
- shard_unifier_service.cfg
- SUGlobalPort = 50503
- welcome_service.cfg
- SUPort = 50505