Pax Dei
Inscrivez-vous à l'Alpha
Pax Dei

Foire aux questions (FAQ)

Technique

Une introduction aux “Shards”, aux serveurs et aux zones de Pax Dei

Comme vous le savez peut-être déjà, le monde de Pax Dei comprend plusieurs régions (Gallia, Anatolia, Gothia…) divisées en provinces (Ancien, Merrie, Kerys…). Une province représente une large zone géographique composée de nombreuses vallées entrecoupées de grandes chaînes de montagnes. Certaines provinces spécifiques appelées les Provinces hospitalières englobent plusieurs vallées “habitables” que nous appelons des Domaines. C’est là que vous pourrez construire votre foyer. Bien entendu, vous trouverez aussi de sombres donjons et grottes situés principalement sous la surface de ces provinces.

Comment ces éléments géographiques se traduisent-ils sur les serveurs physiques et comment affectent-ils la jouabilité ?

Mondes/Shards

Dans Pax Dei, votre premier choix lors de la création de personnage sera la sélection d’une instance spécifique du monde, parfois appelé une shard. Bien que la carte de Pax Dei soit très grande, elle ne peut accueillir qu’un nombre limité de joueurs. C’est pourquoi nous avons créé plusieurs copies du monde, chacune identique, mais complètement indépendante des autres en terme de population. Chacune de ces copies est appelée un Monde ou, dans le vocabulaire technique, une shard.

Nous estimons que pour le lancement du jeu, la population maximale d’un Monde avoisinera les 7 000 joueurs.

Les différents Mondes (shards) vivront dans le Cloud, dans des infrastructures répartis à travers le monde (comme l’Amérique du Nord ou l’Europe). Chacun des Mondes sera entièrement hébergé dans une seule infrastructure.

Les facteurs qui influenceront votre choix seront donc principalement les suivants :

  • Le temps de latence par rapport à votre ordinateur (dépendant de la localisation des infrastructures physiques);

  • La disponibilité, car certains Mondes peuvent être saturés;

  • Les Mondes où se trouvent vos amis.

FAQ tech - Kjartoon A

Les serveurs de zone

D’un point de vue informatique, une shard est composée d’une multitude de serveurs et de services en Cloud, chacun d’entre eux remplissant une fonction précise. Les serveurs les plus nombreux sont les serveurs dits de zone. En effet, la simulation d’un monde complet est bien trop gourmande en termes de calculs pour être gérée par une seule machine. Elle est donc divisée en unités de calcul plus petites, appelées des zones. Un serveur de zone est un serveur Unreal dédié gèrant la simulation d’une partie spécifique du monde, par exemple un Domaine.

Tech FAQ - Kjartoon 2

Une fois en jeu, vous êtes constamment connecté à un serveur de zone, et ce, de manière automatique. Chaque fois que la frontière d’une zone est franchie, la connexion est transférée vers le serveur de la zone adjacente. C’est ce qu’on appelle une transition de zone. Dans la plupart des cas, ces transitions se font en douceur, mais il existe quelques exceptions :

  • Les transitions entre les différentes provinces ou vers les donjons requièrent généralement un certain temps de chargement, car le client télécharge l’intégralité d’une nouvelle carte;

  • Il est actuellement impossible de voir les autres joueurs et les PNJ au-delà des frontières des zones.

Instances de zone

Comme indiqué ci-dessus, un serveur de zone est un serveur Unreal dédié qui gère la simulation d’une petite portion du monde. À terme, il est possible qu’un serveur de zone soit submergé par un trop grand nombre de joueurs connectés.

Actuellement, cette limite se situe autour de 150 joueurs, mais elle devrait évoluer grâce à du matériel plus performant et à des optimisations du code. Pour ne pas avoir à fermer des zones dont le nombre maximum de joueurs est atteint, par exemple pendant les heures de grande affluence, nous avons introduit le concept d’instances de zone.

Ainsi, lorsque le nombre maximum de joueurs dans une zone dépasse la limite fixée, nous répartissons l’ensemble des utilisateurs d’une zone donnée entre plusieurs instances de zone. Chaque instance de zone est en réalité un serveur de zone distinct pour la même zone. Cependant, les joueurs d’une instance de zone donnée ne peuvent pas interagir avec les joueurs d’une autre instance.

FAQ Tech - Kjartoon 3

Cette distinction s’applique uniquement pour les interactions directes entre joueurs. La persistence des bâtiments, entre autres, est assurée sur chaque instance, ainsi, les envronnements sont les mêmes pour tous. Lorsque la population de la zone diminue, les instances fusionnent.

Si ces instanciations de zones risquent d’être courantes dans les premières phases du jeu. Une fois que ce dernier aura atteint une certaine maturité et que la population des Mondes sera plus stables, elles ne devraient se produire que rarement.

Back-end : persistance

En plus des serveurs de zone, le reste du back-end gère la coordination entre les serveurs de zone, la logique transactionnelle en jeu, la communication et la persistance. Dans certains cas, comme pour les processus d’authentification, les clients se connectent directement à ce back-end par le biais d’API sécurisées. Toutefois, dans la plupart des cas, ce sont les serveurs de zone qui communiquent avec le back-end pour fournir des services spécifiques tels que la gestion de l’inventaire, des ressources, etc.

Toute cette infrastructure est ensuite déployée, coordonnée et mise à l’échelle par le biais d’une architecture Kubernetes fonctionnant au-dessus d’une infrastructure Cloud.

Pouvez-vous nous expliquer en quoi consiste exactement le travail d’un ingénieur back-end ?

Un ingénieur back-end intervient sur l’ensemble des services présents dans le back-end, mais aussi au niveau des interactions entre les serveurs de zone et le back-end. En règle générale, les ingénieurs back-end définissent et développent les API utilisées pour la communication entre Unreal et les services back-end. Ils déterminent également les structures de données et la logique de persistance pour toutes les données conservées dans la base de données principale. Enfin, ils veillent également au déploiement et à la surveillance de l’ensemble de l’infrastructure sous-jacente.

Comment se déroule la coopération entre le back-end et le front-end ?

La plupart du temps, on communique par l’intermédiaire d’API parfaitement documentées. L’API définit toutes les opérations autorisées pour un service donné. Le back-end permet également de valider et d’authentifier le client de l’API, et ainsi s’assurer qu’il a le droit d’appeler une fonction. Généralement, l’API répond sous forme de données ou de validation. Les clients utilisent alors ces informations pour communiquer avec les joueurs par l’intermédiaire d’une interface utilisateur personnalisée.

Quel est le plus grand défi à relever lorsqu’on travaille sur un MMO comme Pax Dei ?

Le plus grand défi est la complexité de la pile technologique (tech-stack). La pile technologique réunit divers composants, certains provenant de tiers (par exemple, Unreal Engine ou PostgresDB) et d’autres entièrement développés en interne. La plupart d’entre eux n’ont pas été conçus pour faire tourner un MMO. Leurs fonctions vont de la simulation physique au rendu graphique, en passant par le comportement de l’intelligence artificielle, l’intégrité transactionnelle et l’évolutivité des transactions du serveur. Tous ces composants utilisent plusieurs langages de programmation et doivent être développés puis déployés en parfaite harmonie pour que tout fonctionne correctement. Enfin, il est difficile de tester un MMO sans la présence de joueurs réels, d’où l’importance des tests en amont avec des utilisateurs.

Existera-t-il des shards spécifiques à chaque langue, ou les joueurs du monde entier joueront-ils ensemble ?

C’est un aspect du jeu que nous souhaitons surveiller de près. Nous débuterons sans restrictions linguistiques particulières, mais il est très probable que nous voyons émerger des préférences linguistiques précises sur certains Mondes. Nous ferons tout notre possible pour mettre ce type de métadonnées à la disposition des joueurs afin que vous puissiez choisir votre Monde en toute connaissance de cause.

Il n’est pas question non plus de vous obliger à jouer dans une région spécifique. Si vous êtes un joueur européen et que vous souhaitez jouer avec des amis aux États-Unis, vous devriez pouvoir le faire (tout en acceptant un temps de latence potentiellement plus élevé).

Aurons-nous des shards dédiées au JcE sans aucune interaction avec le mode JcJ ?

Non. Actuellement, il est prévu que tous les Mondes soient identiques.

Combien de joueurs seront présents sur une même shard ?

L’objectif initial est d’environ 7 000 joueurs par shard (dans 3 à 4 Provinces hospitalières). À mesure que de nouvelles Provinces hospitalières seront mises en ligne, la population maximale par shard augmentera en conséquence.

Compte tenu du pic de demandes prévisible au lancement du jeu, comment prévoyez-vous d’éviter les files d’attente trop longues ?

Nous pouvons ouvrir assez facilement de nouveaux Mondes afin d’accueillir un plus grand nombre de joueurs, et le mécanisme d’instanciation des zones contribuera à réduire la charge initiale de chacune des shards.

Comment comptez-vous minimiser les temps de latence pour les joueurs ?

Les Mondes seront disponibles dans différentes régions géographiques. L’idée est que les nouveaux joueurs puissent en trouver un qui soit proche de leur domicile. Par ailleurs, les interactions typiques des MMO (dont le systeme de combat) sont par nature moins impactées par les soucis de latence que les FPS (jeux de tir à la première personne), par exemple.

Prévoyez-vous des opérations de maintenance hebdomadaires ? Ces dernières s’adapteront-elles aux fuseaux horaires des différentes régions ?

Notre système a été conçu pour ne pas nécessiter de maintenance, à l’exception de mises à jour majeures du client et du serveur. Cela dit, pour le moment, nous devons encore procéder à des interruptions de service et parfois à des réinitialisations complètes des Mondes. Nous nous efforcerons de choisir des créneaux minimisant l’impact sur les joueurs.

Comment gérerez-vous la population des Mondes ? Prévoyez-vous d’autoriser le transfert de personnages ?

Oui, absolument. C’est une fonctionnalité indispensable pour le confort des joueurs et la gestion de la population.

Mais regardons cette question sous plusieurs angles : déplacer un personnage d’un monde à un autre est assez facile. C’est pourquoi cette fonctionnalité sera certainement implantée (en tant que service supplémentaire ou gratuit, si cela permet de désaturer la population d’un monde donné). Par contre, déplacer une parcelle avec le ou les bâtiments qui s’y trouvent, c’est une autre paire de manches. Nous ne pouvons pas simplement transférer des bâtiments, car leur emplacement pourrait ne pas être libre dans le nouveau monde. Nous ne pouvons pas non plus les déplacer vers un « espace similaire », car leur structure dépend du terrain sur lequel ils sont construits. Dans l’idéal, nous disposerons d’un système qui vous permettra de sauvegarder la structure de votre bâtiment en tant que modèle ou, au moins, de placer tous ses composants dans un sac magique (Par contre, ne vous attendez pas à ce qu’on le justifie dans le lore…). Pour conclure, parlons du transfert de clan : nous réfléchissons actuellement à l’implémentation de ce service, mais pour de multiples raisons (priorités, effectifs, fonctionnalités inachevées…), il nous est impossible de dire que cela arrivera avant longtemps. Nous vous donnerons plus de détails sur les transferts et leur faisabilité ultérieurement.

Si je veux jouer avec mes amis, comment faire pour nous retrouver dans le même monde ? Puis-je les rejoindre même si leur monde est au complet ?

Quand un monde est surchargé, son accès est verrouillé afin de préserver la qualité du service. Notre objectif est donc de trouver un équilibre entre prévenir la surpopulation et veiller à ce que des utilisateurs amis puissent facilement jouer ensemble. Il est essentiel de bien choisir les indicateurs que nous appliquerons et la manière dont nous guiderons les gens vers des mondes spécifiques. Dans les situations extrêmes, nous aimerions pouvoir proposer le transfert gratuit de personnages vers un monde peuplé. Ça reste l’un des meilleurs moyens de réduire la surpopulation. Nous vous en dirons plus ultérieurement

Quelle est votre position sur les programmes tiers et les extensions ?

Nous n’avons rien contre les programmes tiers et les extensions, à condition qu’il ne s’agisse pas de triche. Nous sommes conscients que ces contributions améliorent souvent l’expérience des joueurs et offrent des fonctionnalités appréciables. Hélas, nous ne disposons pas pour l’instant des ressources nécessaires pour leur offrir un réel soutien. Nous espérons sincèrement que, dans un avenir proche, nous serons en mesure de vous aider comme il se doit. Nous vous tiendrons évidemment au courant et vous communiquerons de plus amples informations dès que possible.