Outils du site

fr:serveur_tour

Serveur Khanat - Tour d'horizon

Note préalable : notre serveur de jeu utilisant « RyzomCore », toute la documentation qui s'y rapporte s'applique également à notre serveur de jeu : www.ryzomcore.org.
La page d'index alphabétique de leur wiki permet de trouver bon nombre d'informations utiles, de tutoriels (en anglais exclusivement par contre) : https://ryzomcore.atlassian.net/wiki/display/RC/Reference+Guides

Quelques définition préalables 

  • Serveur : par serveur on se réfère à la machine physique sur laquelle tourne notre univers. Un abus de langage fait qu'on utilise aussi le terme serveur pour parler des programmes/services du jeu tournant dessus.
  • Shard : C'est une instance de l'univers de jeu. Chaque instance est indépendante (ex : Aniro et Aristopole anciennement sur Ryzom) et représente un monde dans lequel circulent les joueurs. (note : on peut faire tourner deux shards sur un même serveur)
  • Service : Un service est un programme qui s'exécute sur le serveur. L'univers de jeu est géré entièrement par une dizaine de services qui se partagent des tâches : par exemple le service AI gère les mobs tandis que le service IOS gère (entre autres) les canaux de chat. Ces services s'exécutent sur le serveur, mais on peut les distribuer sur plusieurs machines avec même des OS différents (un service sous windows + un autre sous GNU/Linux par exemple).

Dans notre cas, notre premier serveur unique, une machine virtuelle dénommée « kh-dev », fonctionnait sous Debian 6 (Squeeze) et était installée sur un véritable serveur physique : « ninm.net ». Notre second serveur tourne sous debian 8 (Jessie) et notre troisième est une machine virtuelle sous debian 8 aussi.

Lancement et arrêt des services du jeu

Le lancement et l'arrêt des services du jeu se font à l'aide d'un script simple une fois connecté sur notre serveur de jeu

Lancement des services du jeu « Khanat » :

$ shard start

Arrêt des services du jeu « Khanat » :

$ shard stop

Les services

Il y a 23 services comme le montre l'affichage du dossier des binaires de ryzom core. Cependant, ils ne sont pas tous utiles pour faire tourner un jeu :

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

Détail des services :

  • AES (Admin Executor Service) : Ce service permet de lancer et tuer les autres services ainsi que de collecter des informations sur les différents services de la machine sur lequel il tourne.
  • AS (Admin Service) : Lorsque les services sont répartis sur plusieurs machines, il existe alors un service d'administration unique AS qui coordonne tous les AES et permet de leur envoyer des commandes.
  • AIS (AI Service) : Le but de ce service est de gérer les IA du monde (le comportement des mobs). Un service AIS est responsable d'une zone géographique. Par exemple sur Ryzom, il y a six services AIS qui tournent : un par continent.
  • BMS (Backup Manager Service) : Ce service gère le chargement et la sauvegarde des données des joueurs. Ces données sont sauvées sur le disque dans un format d'archivage. Chaque shard a deux services BMS : un maitre et un esclave.
  • EGS (Entities Game Service) : À raison d'un service EGS par shard, ce service gère l'état de chaque avatar, les missions, les items, les guildes, les règles du jeu (ex: sorts, combat, récolte, craft, etc). C'est un service central et sans lui le jeu ne peut tourner.
  • GPMS (Global Position Manager Service) : À raison d'un par shard il connaît la position de chaque entité (avatar, mobs, etc.), détermine qui voit qui pour donner l'information au FES, et traite les collisions.
  • IOS (Input Output Service) : À raison d'un par shard c'est ce service qui s'occupe des canaux du chat, de tous les textes affichés ainsi que leurs versions locales (traduction).
  • NS (Naming Service) : À raison d'un par shard c'est un service purement réseau dont le rôle est de coordonner les autres services. Il garde une liste de chaque service lancé, le port sur lequel il écoute, etc. C'est une sorte de “pages jaunes”, DNS dirions-nous dans le jargon informatique.
  • WS (Welcome Service) : À raison d'un par shard, il s'occupe du processus de connexion et d'authentification du joueur avant de le renvoyer vers le service FES de son shard.
  • TS (Tick Service) : À raison d'un par shard c'est un service très simple qui gère le temps jeu (date/heure) et permet la synchronisation de tous les services.
  • MS (Mirror Service) : À raison d'un par serveur, ce service utilise la « mémoire partagée » et synchronise les données entres tous les serveurs afin que les services puissent accéder aux informations de jeu.
  • SU (Shard Unifier Service) : Service unique, il s'occupe de fonctions non spécifiques à un shard comme la téléportation d'un joueur d'un shard à un autre, et il gère aussi le processus de connexion des joueurs.
  • FES (Front End Service) : Un ou plusieurs par shard, ce service est celui qui gère le client de jeu, en lui envoyant les événements mais aussi en calculant quels changements de propriétés lui envoyer sans saturer la bande-passante. Toutes les communications en provenance du client passent par ce service qui route ensuite ces communications vers les bons services. S'il y a plus d'un service FES pour un shard alors les connections sont réparties de manière uniforme entres les différents FES (ndm: round-robin ?). Cela permet donc de répartir la charge entres plusieurs machines si nécessaire.
  • SBS (Session Browser Service) : Similaire à FES, il gère les sessions Ring.
  • MFS (Mail Forum Service) : Web IG ?
  • LGS (LogGer Service) : Service de Log ?
  • DSS (Dynamic Scenario Service) : Ring ?
  • PDSS (Persistent Data Service) : Ce service crée des archives pour sauvegarder de manière régulière les fichiers contenant les informations des avatars. Il est aussi capable d'extraire certaines informations pour générer des stats sur les joueurs. Non utilisé.
  • MOS (MOnitor Service) (non utilisé)
  • LAS (Log Analyzer Service) (non utilisé)
  • RBS (Reference Builder Service) (non utilisé)

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

Cliquez pour afficher ⇲

Cliquez pour masquer ⇱

jeanluc@tomate:~/ryzomcore$ rgrep Port code/*/*/*.cfg code/nelns/admin_service/admin_service.cfg:WebPort = 49995; code/nelns/login_service/login_service.cfg:WSPort = 49999; port for the welcome service connection (default is 49999) code/nelns/login_service/login_service.cfg:WebPort = 49998; port for the web server (default 49998) code/nelns/login_service/login_service.cfg:ClientsPort = 49997; port for the clients connection (default 49997) code/ryzom/server/admin_executor_service.cfg:ASPort=“46701”; code/ryzom/server/admin_executor_service.cfg: “gw_aes.transportCmd aes_l3c(connect addr=”+AESHost+“:”+AESPort+“)”, code/ryzom/server/admin_executor_service.cfg: “asc_gw.transportCmd l3c(connect addr=”+ASHost+“:”+ASPort+“)”, code/ryzom/server/admin_executor_service.cfg: “aes_gw.transportCmd l3s(open port=”+AESPort+“)”, code/ryzom/server/admin_service.cfg:ASWebPort=“46700”; code/ryzom/server/admin_service.cfg:ASPort=“46701”; code/ryzom/server/admin_service_default.cfg:ASWebPort=“46700”; code/ryzom/server/admin_service_default.cfg:ASPort=“46701”; code/ryzom/server/admin_service_default.cfg: “moduleManager.createModule AdminService as webPort=”+ASWebPort, code/ryzom/server/admin_service_default.cfg: “as_gw.transportCmd l3s(open port=”+ASPort+“)”, code/ryzom/server/ai_service.cfg:SUPort = 50505; code/ryzom/server/ai_service.cfg:SUAddress = SUHost+“:”+SUPort; code/ryzom/server/backup_service.cfg:WebPort = 49970; code/ryzom/server/backup_service_default.cfg:ListeningPort = 49990; code/ryzom/server/backup_service_default.cfg:WebPort = 49898; code/ryzom/server/backup_service_default.cfg: Port for the Layer 3 interface of the backup service code/ryzom/server/backup_service_default.cfg:L3ListeningPort = 49950; code/ryzom/server/backup_service_interface.cfg:L3BSPort = “49950”; code/ryzom/server/common.cfg:AESPort=“46702”; code/ryzom/server/common.cfg: “gw_aes.transportCmd aes_l3c(connect addr=”+AESHost+“:”+AESPort+“)”, code/ryzom/server/dynamic_scenario_service.cfg:ASWebPort=“46700”; code/ryzom/server/dynamic_scenario_service.cfg:ASPort=“46701”; code/ryzom/server/dynamic_scenario_service.cfg:AESPort=“46702”; code/ryzom/server/dynamic_scenario_service.cfg:SUPort = 50505; code/ryzom/server/dynamic_scenario_service.cfg:SUGlobalPort = 50503; code/ryzom/server/dynamic_scenario_service.cfg:L3BSPort = “49950”; code/ryzom/server/dynamic_scenario_service.cfg:L3SlaveBSPort = “49951”; code/ryzom/server/dynamic_scenario_service.cfg:L3MasterLGSPort = 49992; code/ryzom/server/dynamic_scenario_service.cfg:LGSBSPort = 49994; code/ryzom/server/dynamic_scenario_service.cfg:L3LGSBSPort = 49995; code/ryzom/server/dynamic_scenario_service.cfg:“gw_aes.transportCmd aes_l3c(connect addr=localhost:”+AESPort+“)”, code/ryzom/server/dynamic_scenario_service.cfg:SUAddress = SUHost+“:”+SUPort; code/ryzom/server/dynamic_scenario_service.cfg:BasePort = 51400; code/ryzom/server/entities_game_service.cfg:AESPort=“46702”; code/ryzom/server/entities_game_service.cfg:SUPort = 50505; code/ryzom/server/entities_game_service.cfg:SUGlobalPort = 50503; code/ryzom/server/entities_game_service.cfg:L3MasterLGSPort = 41292; code/ryzom/server/entities_game_service.cfg:L3SlaveLGSPort = 49993; code/ryzom/server/entities_game_service.cfg:SUAddress = SUHost+“:”+SUPort; code/ryzom/server/entities_game_service_default.cfg: “glob_gw.transportCmd l3c(connect addr=”+SUHost+“:”+SUGlobalPort+“)”, code/ryzom/server/entities_game_service_default.cfg: “lgs_gw.transportCmd masterL3c(connect addr=”+MasterLGSHost+“:”+L3MasterLGSPort+“)”, code/ryzom/server/entities_game_service_default.cfg: “lgs_gw.transportCmd slaveL3c(connect addr=”+SlaveLGSHost+“:”+L3SlaveLGSPort+“)”, code/ryzom/server/frontend_service.cfg:FSUDPPort = 47851; code/ryzom/server/frontend_service_default.cfg:FrontendPort = 47851; code/ryzom/server/frontend_service_default.cfg:ListenAddress = FSListenHost+“:”+FSUDPPort; code/ryzom/server/input_output_service.cfg:AESPort=“46702”; code/ryzom/server/input_output_service.cfg:SUPort = 50505; code/ryzom/server/input_output_service.cfg:SUGlobalPort = 50503; code/ryzom/server/input_output_service.cfg:L3MasterLGSPort = 41292; code/ryzom/server/input_output_service.cfg:L3SlaveLGSPort = 49993; code/ryzom/server/input_output_service.cfg:SUAddress = SUHost+“:”+SUPort; code/ryzom/server/input_output_service_default.cfg: “glob_gw.transportCmd l3c(connect addr=”+SUHost+“:”+SUGlobalPort+“)”, code/ryzom/server/input_output_service_default.cfg: “lgs_gw.transportCmd masterL3c(connect addr=”+MasterLGSHost+“:”+L3MasterLGSPort+“)”, code/ryzom/server/input_output_service_default.cfg: “lgs_gw.transportCmd slaveL3c(connect addr=”+SlaveLGSHost+“:”+L3SlaveLGSPort+“)”, code/ryzom/server/logger_service.cfg:LGSL3Port = 41292; code/ryzom/server/logger_service.cfg:“lgs_gw.transportCmd l3s(open port=”+ LGSL3Port +“)”, code/ryzom/server/naming_service.cfg:BasePort = 51000; code/ryzom/server/session_browser_server.cfg:SBSPort = 48851; code/ryzom/server/session_browser_server.cfg:“moduleManager.createModule SessionBrowserServerMod sbs suAddr=”+SUHost+“:49999 listenPort=”+SBSPort+“ ring_db(host=”+DBHost+“ user=”+DBRingUser+“ password=”+DBRingPass+“ base=”+DBRingName+“)”, code/ryzom/server/shard_unifier_service.cfg:SUGlobalPort = 50503; code/ryzom/server/shard_unifier_service_default.cfg: “glob_gw.transportCmd l3s(open port=”+SUGlobalPort+“)”, code/ryzom/server/welcome_service.cfg:SUPort = 50505; code/ryzom/server/welcome_service.cfg:SUAddress = SUHost+“:”+SUPort; </hidden>

fr/serveur_tour.txt · Dernière modification: 2018/05/14 15:00 par Shepeng