Qu’est-ce que le Server Meshing ?

Le Server Meshing est une technologie avancée, encore en cours de développement, qui permet à plusieurs serveurs de fonctionner ensemble de manière transparente, comme s’ils formaient un unique serveur de grande envergure. Cette approche vise à surmonter les limitations de capacité des serveurs en répartissant la charge de travail sur plusieurs serveurs interconnectés. Dans cette article, nous allons voir qu’est-ce que le Server Meshing, comment la technologie fonctionne et son but.

Objectifs du Server Meshing

Pour l’instant, la plupart des jeux utilisent le principe de Dedicated Game Server, DGS, (serveur de jeu dédié), qui correspond au fait qu’un univers de jeu est géré par un serveur dédié. Cela est dû au fait qu’un serveur peut accepter un nombre limité de joueurs, souvent bien inférieur au nombre total de joueurs. Les joueurs sont donc répartis sur plusieurs serveurs, et donc plusieurs univers, afin d’éviter les lags ou les bugs causés par la surcharge des serveurs.

Image montrant l'utilisation des DGS pour héberger plusieurs monde différents, donc sans server meshing

De plus, l’utilisation d’un meilleur matériel serveur (scalabilité verticale), comme l’amélioration ou l’augmentation des performances des CPU ou de la RAM, pour éviter de surmener les serveurs en raison du nombre de joueurs et d’entités, n’est pas une solution suffisamment évolutive ni viable sur le long terme.

Le principal objectif du server meshing est donc d’éliminer cette contrainte matérielle en rendant les serveurs évolutifs horizontalement (scalabilité horizontale). Cela permettrait de jouer sur un serveur unique accueillant des milliers de joueurs, où chacun partage le même univers, la même économie, la même carte, etc. Cela permet également d’éliminer les transitions ou les temps de chargement lors des déplacements entre différentes zones gérées par des serveurs distincts, offrant ainsi une meilleure immersion.

Résumé

  • Unification du monde de jeu : Tous les joueurs évoluent dans un même univers, partageant la même économie, carte, etc.
  • Augmentation de la capacité : La charge de travail est répartie entre plusieurs serveurs, permettant d’accueillir des milliers de joueurs simultanément.
  • Expérience fluide : Les temps de transition et écrans de chargement sont supprimés, renforçant l’immersion.
Image montrant l'utilisation de plusieurs DGS pour héberger un seul monde, donc avec server meshing

Fonctionnement général du Server Meshing

1. Répartition des zones

Le monde du jeu est divisé en zones géographique ou logiques (ex. : planètes, villes). Chaque zone est attribuée à un serveur spécifique, responsable des entités présentes (joueurs, PNJs, objets, etc.).

2. Propriété de l’entité

  1. Responsabilité : Chaque serveur est responsable du maintien de l’état des entités dans la région qui lui est attribuée. La propriété inclut la gestion de leurs physiques, du comportement de l’IA ou encore des interactions entre ces dites entités.
  2. Transfert de propriété : Lorsqu’une entité traverse les limites d’un serveur (par exemple, un joueur quittant une ville et entrant dans une autre région), la responsabilité est transférée au serveur voisin.
Capture d'écran d'un live de Star Citizen montrant la réparation en zone d'une carte et le principe de propriété

3. Communication entre serveurs

Les serveurs échangent constamment des informations pour maintenir la cohérence du monde, garantissant que les actions des joueurs soient synchronisées et visibles par tous. Cependant si chaque serveur devait transmettre les informations de ses entités à tous les autres serveurs, cela entraînerait une surcharge de communication exponentielle. Pour éviter ce problème, la couche de réplication (Replication Layer) agit comme un système centralisé, assurant une synchronisation cohérente des données sur tous les serveurs. Cette couche simplifie la communication en se positionnant comme une source unique de vérité pour l’état des entités, réduisant ainsi la surcharge de communication serveur à serveur. Elle permet également de synchroniser les interactions entre des joueurs situés sur des serveurs différents, par exemple lors d’une bataille.

4. Tolérance aux pannes

Des serveurs de secours sont en veille pour prendre le relais en cas de panne d’un serveur principal, évitant ainsi un crash global en cas de défaillance d’un serveur. La couche de réplication joue un rôle clé dans ce processus en stockant les données persistantes des différentes entités et en continuant à les distribuer aux serveurs encore actifs. Elle garantit également la conservation du dernier état connu des entités lorsqu’un nouveau serveur reprend la gestion, même en cas de panne totale de tous les serveurs.

5. Expérience de jeu fluide

Les serveurs se chevauchent légèrement au niveau de leurs bordures pour gérer en douceur et en continu les transferts de propriété des entités. Les joueurs s’approchant de ces limites sont préchargés sur le serveur voisin avant de les franchir, garantissant ainsi l’absence de pics de latence. Les transitions entre les régions gérées par différents serveurs se déroulent en temps réel, sans interruption de jeu ni affichage d’écrans de chargement

Capture d'écran d'un live de Star Citizen montrant le fonctionnement de la couche de réplication

Différence entre static et dynamic server meshing

  • Partitionnement statique (static meshing) : Les zones sont manuellement allouées aux serveurs et restent fixes. Cette approche est plus simple à mettre en œuvre mais manque de flexibilité lorsque le nombre de joueurs évolue de manière inégale entre les régions. Par exemple, si la densité d’entités dépasse la capacité de calcul d’un serveur dans une zone particulière, des problèmes de performances peuvent survenir en raison de l’incapacité de réaffecter les ressources de manière dynamique.
  • Partitionnement dynamique (dynamic meshing) : À l’inverse, les zones sont allouées dynamiquement. Les serveurs recalculent continuellement leurs besoins en ressources et les réallouent en fonction de la charge de travail. Ainsi, des algorithmes analysent le comportement des entités pour estimer la charge de travail et répartir les ressources en conséquence. Les ajustements dans l’affectation des serveurs se produisent en temps réel.

Avantages du dynamic server meshing

Subdivision des régions : Lorsque la densité de joueurs augmente dans une zone spécifique (par exemple, une ville), cette zone peut être subdivisée en zones plus petites si le serveur devient surchargé. De nouveaux serveurs peuvent être affectés à la gestion de ces nouvelles sous-zones, équilibrant et répartissant ainsi la charge sur plusieurs serveurs.

Fusion de régions : Inversement, lorsque l’activité diminue dans une zone, les zones adjacentes peuvent être fusionnées pour être gérées par un seul serveur. Cela permet d’optimiser l’utilisation des ressources serveurs.

Capture d'écran d'un live de Ashes of Creation montrant le principe du dynamic server meshing

Limitation actuelle du server meshing

Le server meshing n’est pas une technologie récente. Toutefois, l’implémenter à une si grande échelle dans un jeu vidéo, avec le principe de couche de réplication, comme dans Star Citizen ou Ashes of Creation, représente une avancée majeure dans l’industrie du jeu vidéo. Cette technologie, encore fraîchement introduite, présente de nombreux bugs et problèmes de latence, ce qui la rend encore instable, bien que ses promesses et premiers tests soient extrêmement encourageants.

Pour l’instant, seul le static server meshing est en place. L’objectif ultime reste le dynamic server meshing. Cependant, cette version avancée n’est pas encore en production, car même sa version simplifiée est encore en phase de test et de polissage.

De plus, envisager un serveur unique pour l’ensemble de la planète n’est pas réaliste à l’heure actuelle. La différence de latence entre, par exemple, un joueur en Europe et un autre aux États-Unis serait trop importante, simplement en raison de la distance physique entre les deux. Ainsi, les joueurs seront regroupés au sein de serveurs régionaux (Europe, États-Unis, etc.), même si l’on peut rêver d’un jour où tous les joueurs du monde seront réunis sur un unique serveur global.

Conclusion

Le résultat de ces années de travail acharné est un monde virtuel massif et fluide, dans lequel les joueurs peuvent explorer, interagir et participer à des activités sans être limités par les capacités des serveurs ou les frontières géographiques. Le server meshing ouvre la voie à une expérience persistante et immersive pour tous les participants à l’univers du jeu. Bien que le développement soit en bonne voie et que le plus difficile ait été accompli, la version finale reste encore à venir.

Sources pour aller plus loin

Si vous souhaitez comprendre en détail le fonctionnement actuel du server meshing ou découvrir ses différentes variantes et implémentations, voici quelques sources intéressantes (en anglais) :

Laisser un commentaire