Exploration technique du "Server Meshing" d'Ashes of Creation

Découvrez comment Ashes of Creation utilise la technologie de server meshing pour permettre à un grand nombre de joueurs d'interagir simultanément dans un monde ouvert. Cet article explore en détail le fonctionnement technique du server meshing, les optimisations du moteur Unreal Engine 5, et la comparaison avec les systèmes de réplication traditionnels.

Ashes of Creation, développé par Intrepid Studios, se distingue par l'utilisation avancée du "server meshing" pour permettre à un très grand nombre de joueurs d'interagir simultanément dans un monde ouvert (par exemple, lors de batailles JcJ) sans recourir à des techniques traditionnelles telles que le "layering" ou le "sharding", qui ont le défaut de briser la persistance du monde et l'immersion des joueurs. Cette approche technique explore en profondeur les mécanismes et avantages du server meshing, les optimisations apportées au moteur Unreal Engine 5, et les implications d'une architecture de réplication décentralisée.

Remettre le "Massivement Multijoueur" au cœur de MMORPG

L'objectif principal du server meshing dans Ashes of Creation est de permettre à un grand nombre de joueurs d'interagir simultanément dans un monde ouvert, en éliminant les limitations des systèmes centralisés traditionnels. Pour ce faire, le monde de jeu est divisé entre plusieurs serveurs interconnectés, chacun gérant une partie spécifique du monde, tout en communiquant continuellement pour synchroniser les informations.

69c732567d3c5a2fa22f4190944e17f9.jpg
70bdda2d897f7247749b9d87c8893b87.jpg

Fonctionnement de base du Server Meshing

Division du monde de jeu

Le monde de jeu est divisé en cellules, chacune gérée par un serveur distinct. Cette division permet de répartir la charge entre plusieurs serveurs, éliminant ainsi le goulot d'étranglement d'un serveur unique.

Communication inter-serveurs

Ces serveurs communiquent entre eux pour synchroniser les états des entités (acteurs) et garantir une expérience de jeu fluide. Chaque serveur maintient des "proxy actors" pour représenter les entités proches mais sur des serveurs adjacents, permettant aux joueurs d'interagir avec des éléments gérés par d'autres serveurs sans interruption.

Scalabilité, tolérance aux pannes

En répartissant la charge du monde de jeu entre plusieurs serveurs, le server meshing offre une meilleure scalabilité. De nouveaux serveurs peuvent être ajoutés pour augmenter la capacité du monde de jeu sans dégrader les performances. La décentralisation du système de réplication permet une meilleure tolérance aux pannes. Si un serveur tombe en panne, ses responsabilités peuvent être transférées à d'autres serveurs, minimisant l'impact sur l'expérience de jeu.

Réplication inter-serveurs

11b6d619894fd45a7062c87cef37d087.jpg

Proxies pour les acteurs

Les "proxy actors" représentent les entités d'un serveur sur un autre. Ces proxies sont des versions allégées des acteurs originaux (joueurs, PNJ, etc.), ne contenant que les informations nécessaires pour les interactions de base, permettant ainsi une réplication efficace sans surcharge inutile.

Synchronisation des états

Chaque serveur est responsable de répliquer ses données aux serveurs voisins. Cela inclut la mise à jour des états des acteurs, la position, l'animation, et autres paramètres pertinents pour garantir une cohérence visuelle et comportementale (selon la démonstration, il est tout à fait possible pour des joueurs de s'affronter en JcJ tout en se trouvant de part et d'autre de la frontière entre deux serveurs) à travers les frontières des serveurs. Ces communications inter-serveurs s'effectuent grâce à la fonctionnalité d'Unreal Engine appelée Remote Procedure Calls (RPCs).

RPCs

Designating function replication across the network

RPCs Remote Procedure Calls ) are functions that are called locally, but executed remotely on another machine (separate from the calling machine).

Transferts entre serveurs

Système de promotion

Lorsque les acteurs traversent une frontière entre serveurs, un système de "promotion" transfère l'autorité de ces acteurs de manière transparente. Ce processus assure que les transitions sont invisibles pour les joueurs, maintenant une immersion totale.

Ainsi, lorsque Personnage 1 (P1) sur Serveur 1 (S1) est visible de Personnage 2 (P2) sur Serveur 2 (S2), celui-ci n'est alors qu'à l'état de proxy actor sur S2. En revanche, quand P1 traverse la frontière et rejoint P2 sur S2, alors le système de promotion se charge de transférer son "autorité" (sa capacité à influer sur son environnement) de son actor sur S1 à son proxy actor sur S2, devenant ainsi un actor à part entière (non pas avec "que les informations nécessaires pour les interactions de base" mais une autorité à part entière).

Optimisations techniques

Équilibrage de charge en temps réel

La grille dynamique permet de détecter les surcharges sur un serveur et de diviser ce serveur en cellules plus petites pour équilibrer la charge. Cela inclut la création de nouveaux processus serveur à la volée et la redistribution des acteurs pour maintenir une performance optimale.

fc8a99dc522f2dee0ba0c1d29c037795.png

Gestion des fonctionnalités globales

Certaines fonctionnalités globales, comme le système social ou la gestion de la population (ex : voir la position d'un allié groupé mais à l'autre bout du monde), sont gérées par des microservices. Ces services indépendants permettent une communication efficace entre des serveurs éloignés dans la grille, assurant une cohérence à travers le monde de jeu.

abbdb4fcd95f1e6dc6f83a3d64164f8f.png

Graphe de réplication

L'utilisation d'un "graphe de réplication" (fonctionnalité récemment introduite par Unreal Engine) permet de vérifier qu'il est pertinent de répliquer une information. Ce graphe détermine précisément quelles entités doivent être répliquées pour chaque serveur et pour différents scénarios, réduisant ainsi le nombre de réplications (en priorisant) lorsque c'est nécessaire.

Multithreading de la réplication

Intrepid Studios a réussi à rendre le processus de réplication multi-threadé, ce qui est un défi notable compte tenu de la nature principalement mono-threadée d'Unreal Engine 5. Cette optimisation permet de mieux utiliser les ressources CPU et d'améliorer la performance de réplication.

Server Meshing : La clé d'une évolution majeure dans l'univers des jeux en ligne massivement multijoueurs

L'implémentation du server meshing dans Ashes of Creation par Intrepid Studios représente une avancée technologique significative pour les MMORPGs. En adoptant une approche de réplication décentralisée, avec des optimisations spécifiques pour Unreal Engine 5, et une architecture de grille dynamique, Intrepid Studios a créé une infrastructure capable de gérer des milliers de joueurs dans un monde ouvert vaste, interactif et persistant. Cette approche innovante promet une expérience de jeu fluide, immersive et évolutive, redéfinissant les standards des jeux en ligne massivement multijoueurs. L'Alpha 2 prévue pour ce troisième trimestre 2024, offrira l'opportunité aux joueurs d'évaluer concrètement ces engagements et de se faire leur propre opinion sur leur mise en application du server meshing.

Source : https://www.youtube.com/watch?v=pdav0as54mU

Réactions (59)

Afficher sur le forum