This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Khanat server - Overview ====== Prerequisite: Our game server uses "RyzomCore", 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(in English exclusively cons): 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 rotates. 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 __will__ run on debian soon. ===== 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(on which it runs). * **AS** (//Admin Service//): When services are spread over several machines, then 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 RN'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/vital service and without it... the game can NOT 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 the 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!!)