Que recherchez-vous ?
Case studies

Fusionner les mondes dans un jeu multijoueur palpitant Histera | Unity

Jul 3, 2024|11 Min.
Histera par Stickylock - Key Art
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Découvrez comment les gains de performance de DOTS aident StickyLock à transporter les joueurs à travers l'espace et le temps dans cette nouvelle version d'un FPS multijoueur.

Le défi :
Relever le plafond de performance d'un FPS au rythme soutenu pour échanger dynamiquement le contenu du jeu avec le Glitch.
Personnel du projet :
40
Plateformes :
PC
Localisation :
Hollande septentrionale, Pays-Bas

Comment une petite équipe de développeurs parvient-elle à intégrer un mécanisme de jeu innovant dans un jeu de tir à la première personne au rythme effréné ? L'équipe de StickyLock savait qu'elle aurait besoin d'une nouvelle approche pour s'imposer sur le marché encombré des FPS. Ce qui a commencé comme des portails entre différentes périodes a évolué pour devenir le Glitch, un mécanisme de jeu qui transporte les joueurs dans une autre époque, avec une nouvelle carte. Mais pour concrétiser cette vision audacieuse, il fallait des performances exceptionnelles, une infrastructure Multiplayer solide comme le roc, des composants graphiques innovants et un partenaire solide pour aider à réunir tous ces éléments.

Une nouvelle dimension pour le genre FPS

Jamel Ziaty, artiste technique et programmeur devenu producteur, savait qu'il avait un projet ambitieux entre les mains lorsqu'il a commencé à travailler avec l'équipe de StickyLock sur ce qui est devenu Histera. Ce jeu de tir à la première personne en 8x8 transporte les joueurs à travers des cartes et des timelines qui se chevauchent en temps réel - sans sacrifier les performances.

En tant que développeur Unity chevronné, Jamel savait qu'ils avaient besoin d'un traitement évolutif et de fonctionnalités de backend capables de gérer l'échange de composants de cartes et de personnages à la volée. Pour ce faire, l'équipe a opté pour la pile technologique orientée données (DOTS) d'Unity et le système de composants d'entités (ECS) pour améliorer les performances, tout en faisant appel à Unity Gaming Services (UGS) pour gérer l'infrastructure dorsale Multiplayer.


Les résultats :

- Un cadre backend efficace et performant qui peut gérer des centaines de milliers d'entités et de composants (dont plus de 230 000 à un seul niveau).

- Des centaines, voire des milliers d'heures de développement économisées grâce à UGS

Vue aérienne d'une carte en train d'être remplacée par la faille.

Transporter les joueurs dans des époques parallèles grâce au Glitch

La caractéristique principale de Histeraest le mécanisme de jeu Glitch, où une section d'un niveau passe à une époque complètement différente avec son propre terrain de jeu, ses comportements et ses jeux d'armes. Ce changement soudain de paramètres a suscité beaucoup d'enthousiasme dans le jeu, mais il a également créé des défis pour l'équipe de StickyLock.

Le Glitch se déroule en trois phases distinctes. La première étape, l'anticipation, sert à la fois de signal visuel aux joueurs qu'un Glitch est imminent et, en coulisses, elle prépare la gestion des transitions des actifs. Vient ensuite la phase de déconstruction, au cours de laquelle les visuels de l'ère actuelle commencent à faire place à la prochaine série de graphiques. Au cours de cette transition, les collisions de l'ère initiale sont éliminées tandis que le terrain de la nouvelle ère commence à se dessiner.

Alors que le jeu bascule dans une nouvelle ère, il donne aux joueurs un aperçu des nouveaux visuels et des nouvelles zones de collision, en utilisant une carte de texture unique pour délimiter les zones navigables et les zones de collision imminentes qui guident les joueurs loin des endroits dangereux. Si les joueurs se retrouvent dans ces zones, le jeu les encourage à se déplacer en leur infligeant des dégâts, qui peuvent devenir mortels s'ils restent sur place après la transition. Le tout culmine dans un effet d'onde de choc spectaculaire qui solidifie les visuels et les collisions de la nouvelle ère, complétant ainsi la séquence Glitch.

La construction du Glitch a nécessité des systèmes avancés pour les transitions, le mouvement des joueurs et la gestion des collisions. La flexibilité d'Unity a permis à l'équipe de développer des outils et des scripts personnalisés qui ont automatisé ces opérations, garantissant ainsi un gameplay fluide même si la carte entière se déplace pendant le jeu. "C'est un champ de bataille unique", explique Jamel, "et nous voulions vraiment faire les choses correctement".

Le problème se déroule dans une caverne.

Rationalisation des flux de travail avec les sous-scènes

Le Glitch a été un énorme défi, à la fois dans sa mise en œuvre technique et parce que pour fonctionner, il devait se fondre dans un niveau sans perturber la cohérence visuelle ou la fluidité du jeu. L'équipe a trouvé cet équilibre en utilisant le composant SubScene d'Unity.

Une sous-scène est un GameObject MonoBehaviour qui fait référence à une autre scène. Il est converti en une représentation d'entité, appelée EntityScene. Les sous-scènes peuvent exister dans différents états : ouvertes, fermées ou non chargées, et cet état a une incidence sur la charge de mémoire et de visibilité. Les sous-scènes ouvertes permettent de modifier et de convertir les GameObjects en temps réel, tandis que les sous-scènes fermées chargent les représentations des entités en mémoire. Cette configuration permet de gérer des scènes complexes et d'optimiser les performances en traitant efficacement les données des entités.

"C'est un détail apparemment insignifiant qui fait toute la différence", explique Jamel. "Il nous permet de traiter plusieurs sections de cartes dans une même scène. Cette approche simplifie non seulement le flux de travail de nos artistes, en leur permettant de se concentrer sur des sous-scènes individuelles sans chevauchement, mais elle minimise également les conflits. Il offre une vue d'ensemble claire des sous-scènes actives à tout moment".

Paysage du jeu Histera en plein Glitch.

S'attaquer au décalage et optimiser pour des taux de clics plus élevés

"Offrir une expérience Multiplayer globale est certainement le plus grand défi qu'UGS nous aide à relever", déclare Jamel. "Il permet de résoudre les problèmes liés à la mise en place et à la gestion de flottes tout en garantissant une qualité de service adéquate dans de nombreuses régions du monde.

L'équipe de StickyLock a travaillé dur pour équilibrer l'expérience des joueurs ayant des niveaux de ping différents. Les joueurs ayant un temps de réponse élevé bénéficient d'une compensation de lag car le jeu permet un enregistrement plus équitable des coups en tenant compte de leur retard. Cependant, cela peut avoir un impact négatif sur les joueurs à faible vitesse, car ils risquent d'être touchés derrière une couverture en raison du "rembobinage" du serveur. Les informations sur le placement et les performances fournies par le tableau de bord Multiplay Hosting, ainsi que les fonctionnalités de prédiction, de retour en arrière et de compensation du décalage du package Netcode for Entities ont été essentielles pour garantir une expérience multijoueur plus fluide et plus équitable pour tous les joueurs.

Jamel souligne que beaucoup de travail a été effectué pour régler les serveurs afin qu'ils puissent fonctionner à des taux de clics plus élevés sans augmenter les coûts. L'expérience de l'équipe Unity lui a permis d'identifier les possibilités d'optimisation, tandis que les serveurs pouvaient être configurés pour permettre à l'équipe de procéder rapidement à des ajustements en direct. Enfin, le MatchMaker d'Unity, basé sur des règles, a permis à l'équipe de StickyLock d'équilibrer la conception du jeu en fonction du temps d'attente et de la latence.

"Obtenir des informations sur l'utilisation de la RAM et du CPU du serveur, maintenir un service de haute qualité dans différentes régions et gérer les fonctionnalités du serveur ainsi que la flexibilité des règles de matchmaking sont autant d'éléments essentiels pour nous", déclare Jamel. "Nous sommes toujours à la recherche de moyens d'être plus performants afin d'éviter les compromis défavorables entre l'amélioration de la jouabilité et la gestion des coûts".

Le jeu Histera avec une perspective à la première personne et des éléments de glitch rouge entourant le joueur.

Relever le plafond de performance avec DOTS

La création de mondes parallèles qui se chevauchent dans un cadre multijoueur implique des performances incroyablement élevées. Pour y parvenir, l'équipe de StickyLock s'est tournée vers la pile technologique orientée données (DOTS) d'Unity, composée du package Entities Component System (ECS), de Physics, de C# Job System et du compilateur Burst.

L'adoption de DOTS et d'ECS au début de l'année 2020 comportait certains risques - il s'agissait d'utilisateurs précoces de la technologie, et l'équipe devait investir dans la formation continue et s'adapter aux nouveaux flux de travail à la volée, mais après avoir examiné les échantillons, Jamel et son équipe ont décidé que les avantages l'emportaient sur les risques et ils se sont lancés.

“​Le plafond de performance plus élevé de Burst et d'ECS est crucial pour nous", déclare Jamel, "en particulier face au défi que représente la gestion de cinq époques distinctes. Cela conduit à un plus grand nombre de lots cassés, car nous ne pouvons pas réutiliser les mailles ou les matériaux dans différents styles. Avec ECS, nous obtenons les performances nécessaires pour maintenir des visuels de haute qualité malgré ces contraintes".

Le système de travail C# a permis un traitement parallèle efficace des tâches, tandis que Burst compile le code C# en code machine natif hautement optimisé, évitant ainsi la surcharge du moteur d'exécution .NET traditionnel. Ce code natif est spécifiquement adapté à la plate-forme cible, ce qui se traduit par de meilleures performances. En réfléchissant aux avantages que les DOTS ont apportés à son équipe, Jamel déclare : "Si nous avions consacré une grande partie du budget de performance aux systèmes, nous n'aurions pas été en mesure de rendre cinq époques différentes avec la qualité que nous avons aujourd'hui.

Point de vue à la première personne d'un joueur qui vise avec un fusil à longue distance.

Acheter du temps avec l'UGS

Au-delà de la connectivité, Jamel devait donner à son équipe le temps de se perfectionner en trouvant d'autres moyens de réduire les heures de développement. Il s'est tourné vers UGS pour que les développeurs restent concentrés sur le gameplay, une décision qui, selon lui, "permettrait d'économiser des centaines, voire des milliers d'heures de développement".

L'équipe a utilisé Multiplayer Hosting, Matchmaker, Authentication et Cloud Content Delivery (CCD). Les avantages de l'utilisation de plusieurs services de première partie sont apparus clairement à StickyLock dès le départ. "Un service de première partie serait plus facile à intégrer et à maintenir", explique Jamel, "et les services UGS sont multiplateformes pour le cas où nous voudrions effectuer un portage vers une console plus tard."

L'hébergement Multiplayer est conçu pour s'adapter rapidement en cas de succès du jour au lendemain. "De nos jours, il est plus courant qu'un jeu devienne populaire du jour au lendemain. Le fait de pouvoir compter sur un service qui a l'expérience du lancement de nombreux titres à succès nous donne un sentiment d'aisance", déclare Jamel. De plus, les capacités multiplateformes d'Authentication préparent Histera à une expansion multiplateforme le moment venu, tandis que CCD permettra à l'équipe de gérer facilement son contenu et son pipeline de publication afin de proposer le bon contenu et les bonnes fonctionnalités pour maintenir l'engagement des joueurs au fur et à mesure que le jeu grandit.

Avec une infrastructure backend multijoueur robuste et évolutive, une authentification et des communications avec les joueurs prêtes pour plusieurs plateformes, Jamel aborde le lancement en toute confiance, sachant que les équipes Multiplay et UGS le soutiennent.