Dans cet Inside Star Citizen du 14 novembre 2024, les développeurs de Star Citizen nous expliquent les défis et les progrès de la mise en œuvre de la technologie Server Meshing, notamment les optimisations du système de file d'attente de messages et du processus de synchronisation des variables, qui sont essentielles pour améliorer les performances du jeu et accueillir un plus grand nombre de joueurs.
Inside Star Citizen: Alpha 4.0 - Meshing Forward
Le Server Meshing est une technologie essentielle pour réaliser l'ambition de Star Citizen d'avoir un univers persistant avec des milliers de joueurs interagissant simultanément. Il s'agit de diviser l'univers du jeu en plusieurs serveurs, chaque serveur gérant une partie du monde du jeu.
Les tests avec de vrais joueurs sont cruciaux pour le développement du Server Meshing, car ils révèlent des problèmes qui ne peuvent pas être simulés avec des bots ou des scripts.
L'augmentation progressive du nombre de joueurs dans les tests permet d'identifier les goulots d'étranglement du système et d'évaluer les performances du Server Meshing.
L'équipe de développement a rencontré plusieurs défis techniques lors de la mise en œuvre du Server Meshing.
Le premier obstacle a été le système de file d'attente de messages de réplication (RMQ) initial, qui s'est avéré incapable de gérer le volume élevé de messages généré par un grand nombre de joueurs.
Pour résoudre ce problème, l'équipe a développé un nouveau système RMQ plus performant et évolutif.
Cependant, même avec le nouveau RMQ, des problèmes de latence et de perte de paquets persistaient, entraînant des retards d'interaction pour les joueurs.
L'analyse a révélé que le goulot d'étranglement se situait au niveau du processus de synchronisation des variables "dirty", c'est-à-dire les variables qui n'ont pas encore été communiquées à tous les membres du maillage.
Ce processus consommait une part importante des ressources du processeur, limitant les performances du réseau.
L'équipe a donc optimisé et parallélisé le processus de synchronisation des variables "dirty", ce qui a permis d'améliorer considérablement les performances.
Cette optimisation peut être comparée au passage d'une route à une seule voie à une autoroute, permettant de traiter un volume de données beaucoup plus important simultanément.
Les tests ultérieurs avec un nombre de joueurs plus élevé ont révélé un nouveau goulot d'étranglement au niveau des "binds", qui sont les connexions entre le client d'un joueur et sa vue du monde du jeu, et la vue du serveur du monde du jeu.
Avec un grand nombre d'entités dans le jeu (joueurs, vaisseaux, objets, etc.), le processus de "bind" devenait trop lent et affectait les performances.
L'équipe travaille actuellement sur l'optimisation du processus de "bind" en parallélisant les tâches afin d'augmenter le débit et de réduire les temps de traitement.
Les progrès réalisés dans l'optimisation des "binds" ont déjà permis d'améliorer considérablement les performances du Server Meshing, et l'équipe est confiante de pouvoir atteindre une performance 10 fois supérieure à l'expérience de jeu actuelle.
Cependant, l'optimisation du Server Meshing est un processus continu. Au fur et à mesure que le jeu se développe et que de nouvelles fonctionnalités sont ajoutées, de nouveaux goulots d'étranglement apparaîtront, nécessitant des optimisations supplémentaires.
L'équipe de développement est déterminée à poursuivre ses efforts pour améliorer les performances du Server Meshing afin d'offrir aux joueurs une expérience de jeu immersive et fluide, même avec un grand nombre de joueurs.