Déploiement et optimisation d'UG pour Meta Quest

Pour Continuum XR, construire UG pour Meta Quest signifiait combiner la collection de créatures, l'interaction sociale et le gameplay VR piloté par la physique dans une expérience Multiplayer évolutive pour les casques autonomes. Inspiré par les collectionneurs de créatures et les jeux de pilotage mécanique, UG permet aux joueurs de collecter des dinosaures à travers des quêtes, des échanges et des achats, puis de les chevaucher en utilisant une locomotion de style gorille.
Pour offrir cette expérience, il fallait équilibrer la mise en réseau Multiplayer, les workflows de déploiement et l'optimisation des performances sur l'ensemble du matériel Meta Quest. L'équipe devait également prendre en charge les mises à jour en direct, les systèmes réseau et les interactions de gameplay VR tout en maintenant des performances stables sur le matériel mobile.
Nous avons discuté avec les développeurs VR Mark Minehan et Conrad Dugger, et la productrice associée Hala Louviere sur la construction et le déploiement d'UG avec Unity, l'optimisation du réseau et des performances pour la VR autonome, et l'échelle d'un jeu VR Multiplayer live sur les appareils Meta Quest.
Quels étaient vos principaux objectifs techniques ?
Mark Minehan : Pour Meta Quest, le jeu devait se dérouler sans problème malgré la grande portée d’UG. Nous avons testé d'autres moteurs, mais Unity fournissait le meilleur support et les meilleures performances. Photon Fusion 2 Shared Mode évolue bien car une grande partie du réseau fonctionne côté client, ce qui permet de maintenir le développement abordable et évolutif.
Unity fournissant les intégrations et le support dont nous avions besoin, nous nous sommes appuyés sur les outils existants au lieu de créer une pile réseau ou un moteur de jeu à partir de zéro.
Comment avez-vous structuré votre pipeline de build dans Unity pour soutenir un déploiement VR efficace ?
MM: L'équipe utilise Unity Version Control afin que les membres puissent travailler simultanément sur des branches et gérer leurs propres modifications. Nous utilisons les branches main, live, dev, beta et feature. Unity Version Control maintient l'équipe synchronisée et facilite la poussée et la traction des modifications.
Pour les builds et les déploiements, nous utilisons Unity Hub pour construire des Package Kits Android (APK) et Meta Quest Developer Hub pour les déployer en quelques minutes. À partir de là, nous promouvons ou rétrogradons les builds et les diffusons aux joueurs ou aux testeurs alpha.
Conrad Dugger : Lors du lancement, d'autant que UG a gagné en puissance, nous avions besoin de visibilité sur ce qui se passait à grande échelle. L'éditeur ne pouvait pas simuler tous les scénarios, nous avons donc téléchargé des symboles de débogage et utilisé un tableau de bord Mixpanel pour surveiller les erreurs en continu. Nous le vérifions encore quotidiennement et après chaque patch pour nous assurer que les problèmes ne reviennent pas. Cela nous aide à résoudre les problèmes avant qu'ils n'affectent les joueurs.
MM: Nous pouvons accéder aux symboles de plantage directement via Meta, donc nous n'avions pas besoin d'une solution personnalisée. Unity nous permet de les construire et de les télécharger dans Meta dans la même étape ou dans une étape séparée. Pour les erreurs et exceptions que les symboles de plantage ne capturent pas, nous avons construit des outils personnalisés qui limitent les uploads par joueur et incluent des traces de pile complètes.
Nous passons en revue ces rapports en même temps que l'historique des utilisateurs pour identifier ce que les utilisateurs faisaient avant qu'un événement se produise. Mixpanel agrège les événements afin que les équipes puissent créer des requêtes, des flux et des visualisations, ce qui nous aide à repérer et à résoudre les problèmes rapidement.

Quelles ont été les plus grandes contraintes de déploiement que vous avez rencontrées en ciblant les périphériques VR ?
CD: Pour les builds, notre configuration est simple. Nous utilisons le système de construction intégré d'Unity et maintenons le projet sur la cible Android. Nous construisons l'APK, le téléchargeons sur Meta Quest Developer Hub et le distribuons via la plateforme Meta Quest. Occasionnellement, nous avons besoin de reconstruire un APK, et nous avons vu un petit nombre d'erreurs de téléchargement.
MM: Pendant l'accès anticipé, le jeu a attiré des utilisateurs malveillants, des moddeurs et des pirates. Les APK d'expédition présentant des risques de sécurité, nous avons renforcé notre sécurité de construction VR avec des solutions personnalisées et des modules complémentaires Unity Asset Store.
CD: Nous utilisons également des paquets d'obscurcissement pour protéger les fichiers et le backend. Notre processus d'auto-déploiement effectue des vérifications par le biais de l'attestation Meta, et PlayFab aide à vérifier l'activité du compte et à empêcher tout accès non autorisé. Nous appliquons également des versions minimales afin que les joueurs ne puissent pas se connecter en utilisant des APK obsolètes.
Hala Louviere : Le matériel VR s'améliore rapidement entre les générations, et de nombreux joueurs utilisent encore Meta Quest 2. Chaque nouvelle fonctionnalité nécessite une prise en compte des performances. Nous évaluons régulièrement les idées en fonction de leur impact sur la performance. Ce compromis est un défi distinct en VR, où les différences matérielles peuvent affecter considérablement l'expérience du joueur.

Comment la mise à niveau d'Unity 2021.1 vers Unity 6 a-t-elle eu un impact sur votre workflow de déploiement ?
MM: Nous avions initialement utilisé Unity 2021.1 parce que l"équipe l'avait standardisé, mais cette version présentait des problèmes de build et de workflow, notamment de focus VR et d'incohérences de suivi.
Lorsque nous sommes passés à Unity 6, nous avons choisi une version plus stable pour notre flux de travail. La mise à niveau a nécessité des mises à jour de code pour les API obsolètes et a pris quelques jours pour être terminée. Nous avons amélioré pour la stabilité.
CD: Nous avons aussi changé car Unity 6 fonctionnait mieux avec Fusion. Unity 6 a également supporté un PlayMode Tool qui nous a aidé à tester des scénarios Multiplayer dès le début du développement. Nous avons fini par arrêter de l'utiliser après avoir renforcé la sécurité. Nous avons résolu la plupart des problèmes migratoires en une semaine environ.
MM: Le comportement de débordement des animateurs a créé le principal défi, mais nous avons développé une solution de contournement.
Unity 6 n'a pas introduit de nouveau bug. Unity 6 a fait apparaître un problème existant impliquant des compteurs d'animation atteignant leur valeur maximale. Plutôt que de l'ignorer, nous avons créé des outils et des systèmes personnalisés pour identifier les animations affectées et les réinitialiser avant qu'elles ne débordent.

Comment avez-vous défini et validé les objectifs de performance lors du déploiement sur le matériel VR ?
MM: Nous suivons plusieurs indicateurs de performance. L'une des mesures clés est FPS, avec une cible de 72 FPS sur notre appareil. Nous surveillons les chutes inférieures à ce seuil et la fréquence à laquelle elles surviennent. Nous utilisons le tableau de bord Unity Profiler et Meta, qui fournit des ventilations spécifiques aux appareils.
La mémoire n'a pas été un problème majeur en raison des actifs à faible polyvalence et des shaders réutilisables, donc nous voyons rarement des plantages liés à la mémoire. La mise en réseau est un axe majeur car UG possède de nombreux objets et interactions en réseau. Nous avons travaillé directement avec l'équipe Photon pour résoudre les problèmes de performance et les plantages, et utiliser des techniques comme les domaines d'intérêt pour améliorer l'évolutivité.
Nous suivons également les pannes et cherchons à déterminer si de nouveaux changements ou problèmes de performance les ont causées.
Comment avez-vous exploité l'Unity Profiler pour optimiser les builds spécifiques à la plateforme avant le déploiement ?
MM: L'Unity Profiler nous aide à suivre les pics de lag et à surveiller les baisses FPS. Nous pouvons passer en revue les passes de rendu, l'utilisation de la mémoire et l'activité des images pour trouver des causes. Nous l'avons utilisé pour enquêter sur un problème avec le DinoDex. Chaque joueur a son propre DinoDex, nous avons donc utilisé une API de recherche de scène pour trouver le composant concerné à l'exécution.
Cela a fonctionné dans l'éditeur, mais lors des tests en direct, cela a provoqué de graves bégaiements lors de l'ouverture du DinoDex. Le Profiler a montré que l'appel API déclenchait des pics dans les scènes avec de nombreux objets. Nous avons identifié le script et la fonction exacts et trouvé d'autres utilisations du même modèle, réduisant les pics de latence dans le projet.
CD: Il a été essentiel pour le débogage des problèmes de performance. Le problème DinoDex pourrait geler le Lobby pendant quelques secondes à l'ouverture.
Un autre exemple est celui des étagères de joueurs, qui affichent des rangées de dinosaures. L'implémentation originale a généré plusieurs objets en réseau dans une seule trame, provoquant des pics de performance.
Le Profiler a montré que ces pics provenaient d'appels d'apparition Fusion et de grandes hiérarchies d'objets avec les composants NetworkObject et NetworkTransform. Il nous a aidés à identifier la trame exacte et la cause et la résolution des problèmes perturbant le gameplay, y compris les apparitions et plantages répétés.

Quelles décisions ou optimisations de déploiement ont eu le plus d'impact sur la fourniture d'une expérience VR stable et performante ?
MM: L'AQ est l'une de nos forces. Unity nous permet de créer des builds ciblées avec des paramètres configurables pour les modes bêta et autres environnements de test. Nous pouvons publier des builds pour des cohortes de joueurs plus petites, corriger des problèmes et pousser les mises à jour de l'alpha en quelques minutes, souvent moins de 10 minutes.
Ce workflow nous permet de tester rapidement les modifications avant qu'elles n'atteignent la base de joueurs en direct. La capacité de pousser les mises à jour fréquentes et de maintenir cette boucle de rétroaction est la clé de la stabilité.
CD: L'optimisation est continue depuis le début du développement en janvier 2025. Nous sommes allés vite, en publiant aux testeurs et en lançant en septembre, puis en expédiant des mises à jour hebdomadaires après le lancement.
Dès le début, nous nous sommes concentrés sur le réseau, les performances et la qualité du code. Le processus d'AQ a soutenu ce rythme, permettant de tester rapidement de nouveaux systèmes. Nous évitons également les fonctionnalités qui ne justifient pas leurs performances ou leurs compromis de développement.

Quelle est votre meilleure astuce pour les développeurs VR en herbe ?
MM: Construire quelque chose, même un petit prototype. Il n'a pas besoin d'être poli. Partagez votre travail via les jeux jams, itch.io, SideQuest ou le Meta Horizon Store pour obtenir des commentaires directs. Ne prenez pas la critique personnellement, et utilisez la rétroaction pour vous améliorer. De nombreux développeurs VR évitent le partage tout en apprenant, mais travailler dans le vide ralentit la croissance.
HL: Le bêta-test est critique. UG a eu quatre à six semaines de tests alpha et bêta fermés avant la sortie, ce qui a contribué à façonner l'expérience finale. Les joueurs ne se comportent pas toujours comme les développeurs l'attendent, de sorte que des testeurs externes révèlent comment le jeu est réellement joué. Ces commentaires aident les développeurs à réduire l'écart entre l'expérience du joueur prévue et réelle, et les équipes ne devraient pas la sauter même si un jeu semble prêt.
Pour en savoir plus sur les projets Made with Unity, visitez la page Ressources .
