Zénith : La dernière ville
How does a small, remote team create an MMO in VR? With a flexible development platform, multithreaded programming, robust DevOps tools, and the support of an active community, Ramen VR launched a well-optimized, multiplatform game that’s delighting players and ushering in a new era of gaming.
Creating a successful, high-performance VR MMO for all major VR platforms
PlayStation®VR, PlayStation®VR2, Quest, Quest 2, Rift, SteamVR
22
Remote
Un pari ambitieux
Andy Tsen et Lauren Frazier se sont rencontrés à l'Oculus Launch Pad en 2016, où ils ont tissé des liens autour d'un intérêt commun pour les MMO et les anime isekai. Le duo a vu l'opportunité de combiner ces genres et de créer une nouvelle expérience MMO immersive dans la RV. En 2019, ils ont quitté leur emploi, fondé Ramen VR et commencé à travailler sur Zenith : La dernière ville.
Les résultats
- Lancement d'un MMO VR avec une équipe de seulement 15 personnes
- Une réussite éclatante avec la première place sur Quest et Steam au lancement
- Levée de fonds de plus de 45 millions de dollars auprès d'investisseurs à ce jour
- Élimination de la perte de données du projet avec Unity Version Control
La réalisation de Zenith a nécessité un acte de foi : Tsen et Frazier ont financé les premiers développements de leur poche. "Le nom de notre studio vient de tout ce que nous pouvions nous permettre de manger à l'époque", plaisante Tsen.
Un investisseur providentiel a tout changé. Rapidement, Ramen VR s'est inscrit au programme d'accélérateur Y Combinator et a levé 280 000 dollars en 45 jours grâce à une campagne Kickstarter record. Les bailleurs de fonds ont été impressionnés par l'ampleur du projet et la détermination du studio à le mener à bien.
"Personne n'ayant jamais construit un MMO auparavant n'essaierait de le faire", déclare Tsen. "Startup, VR, MMO, cross-platform - c'est le gamedev en mode hard !"
Tsen et Frazier avaient déjà collaboré sur un projet Unity primé - un MOBA VR, Conjure Strike - et étaient convaincus de pouvoir s'attaquer à quelque chose d'encore plus ambitieux.
"Nous savions à quel point il serait difficile de créer un jeu de cette envergure dans la RV, mais nous pensions également qu'il y avait un fossé entre la difficulté que les gens pensaient et celle qu'ils avaient réellement", explique Tsen. "Cette lacune a été comblée par des plateformes et des outils comme Unity, qui permettent de créer du contenu à une échelle beaucoup plus grande avec une équipe beaucoup plus petite."
Ramen VR a lancé Zenith avec une équipe de 15 personnes, mais l'équipe principale compte désormais 22 membres. Lorsqu'ils choisissent de nouveaux outils de développement, ils s'assurent qu'ils sont personnalisables, facilement intégrables, qu'ils fonctionnent bien avec les systèmes existants et qu'ils sont accessibles aux contributeurs techniques et non techniques.
En tant que jeux basés sur des systèmes, les MMO nécessitent des bases techniques solides et évolutives. Au début du développement, Ramen VR a organisé les systèmes de Zenith à l'aide de MonoBehaviors, mais l'exécution de la logique des centaines de fois sur des centaines de GameObjects identiques était inefficace. Ils se sont appuyés sur le système de composants d'entités (ECS) de Unity, un pilier essentiel de la pile technologique orientée données (DOTS), pour éviter les inconvénients de la programmation orientée objet.
"Un MMO est une excellente application pour l'ECS", note Frazier. "Zenith nécessite la coexistence de milliers d'entités en même temps, et ECS nous permet de fonctionner à l'échelle.
Dans le nouveau workflow, chaque GameObject "acteur" (joueurs, mobs, objets à collectionner) a une Entité ECS correspondante. L'ECS parcourt les objets de jeu et vérifie la présence de balises pertinentes, déclenchant une logique dès qu'elles sont trouvées.
"Il était agréable de pouvoir choisir le flux de travail approprié à la situation. Nous aurions pu faire des objets purs ou des entités pures, mais je ne pense pas qu'il faille choisir", déclare M. Frazier.
L'ECS a également contribué à relever les défis infrastructurels. Plus de 120 000 joueurs se sont inscrits au test alpha de Zenith, et Ramen VR a sous-estimé la charge que cela représenterait pour ses serveurs. Lorsqu'un grand nombre de joueurs se déconnectaient, les serveurs dépassaient les limites de stockage et les joueurs perdaient leurs données de sauvegarde. Pour résoudre ce problème, l'équipe a créé une étiquette ECS pour suivre la progression de la quête. "Notre système ECS vérifie la présence de balises et, lorsqu'il en détecte une, il la place dans une file d'attente, l'enlève toutes les X secondes et l'écrit sur un support de stockage externe", explique M. Frazier.
Zenith est un MMO multiplateforme. Il était donc essentiel d'optimiser les graphismes pour tous les principaux dispositifs VR afin de s'assurer que le jeu atteigne le plus grand nombre de joueurs possible. La création de jeux VR implique de dessiner deux fois plus de GameObjects, à une résolution plus élevée, à des fréquences d'images plus élevées, afin de garantir une bonne immersion et de réduire le mal des transports. Ils ont donc opté pour le Universal Render Pipeline (URP).
"L'Universal Render Pipeline était le meilleur choix pour nous, car nous expédiions sur PC, Android (Oculus Quest) et PSVR", explique M. Frazier. "URP nous a permis de construire pour toutes les plateformes VR.
Avec l'URP Single Pass Instanced rendering, Ramen VR peut rendre les images pour les deux yeux en un seul endroit, ce qui permet d'économiser du temps de CPU et de GPU et d'améliorer les performances. La possibilité de personnalisation était également un atout. "Nous avons modifié les shaders standard (Simple Lit, Unlit) pour répondre aux changements de notre cycle jour-nuit - en rendant les choses plus orange ou rouges au coucher du soleil, en ajoutant une teinte bleue la nuit, et ainsi de suite", explique Frazier.
Le studio est satisfait de ce qu'il a réalisé avec URP, mais espère pousser les visuels de Zenith plus loin dans une prochaine version. "Une grande partie de notre qualité initiale a été sacrifiée en raison des limitations matérielles - principalement la mémoire, mais aussi le temps du GPU", explique M. Frazier. "Nous essayons maintenant de tirer parti de choses telles que les tableaux de textures pour retrouver une partie de la fidélité perdue.
Pour s'assurer de pouvoir fournir du nouveau contenu en continu et dans les délais, Ramen VR utilise Unity Version Control (UVCS) pour gérer le projet. "Il nous a permis d'améliorer notre productivité, nos flux de travail et de travailler en collaboration beaucoup plus facilement", explique le programmeur Jordan J.
UVCS dispose de deux flux de travail pour les artistes et les ingénieurs, et les coéquipiers peuvent choisir de travailler de manière centralisée ou distribuée tout en s'engageant dans le même référentiel. "La centralisation des flux permet de réduire les accidents et les décalages entre le local et le distant par rapport à ce que l'on observe avec Git", explique M. Frazier. Ramen VR n'a jamais perdu de données de projet depuis qu'il a adopté l'UVCS.
La mise en œuvre intelligente de l'ECS et l'optimisation visuelle avec URP permettent aux joueurs de partir à l'aventure ensemble et d'explorer le monde gigantesque de Zenith sans subir de ralentissement ou de perte de progression. Grâce à une technologie évolutive et personnalisable, Ramen VR est en mesure d'ajouter de nouveaux contenus au Zenith pour les années à venir.
Joignez les développeurs du monde entier qui utilisent Unity pour créer des jeux VR réussis.