Que recherchez-vous ?
Case studies

Comment une équipe de six personnes a porté LEGO® Builder's Journey sur Apple Vision Pro en seulement trois mois

Mar 13, 2024
Le voyage du bâtisseur LEGO® par Light Brick Studio
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.

Ayant débuté sur Apple Arcade, LEGO Builder's Journey de Light Brick Studio, un jeu de puzzle multiplateforme immersif, n'a cessé de prendre de l'ampleur. Voici ce que l'équipe a appris lorsqu'elle a adopté la nouvelle ère de l'informatique spatiale et qu'elle a porté le titre sur Apple Vision Pro.

LE DÉFI :
Addressables les obstacles au rendu et à l'optimisation pour un portage sur Apple Vision Pro en trois mois.
PROJET STAFF :
20, avec une équipe de 6 personnes pour le portage d'Apple Vision Pro
PLATES-FORMES :
Apple Arcade, PC, Xbox One, Xbox X|S, PlayStation®4, PlayStation®5, Nintendo Switch™, Apple Vision Pro...
LOCATION :
Copenhague, Danemark

Comment un studio novice en matière de réalité mixte construit-il pour l'immersivité de l'Apple Vision Pro tout en restant fidèle à l'expérience de jeu sur les autres plateformes ?

Les briques LEGO® étant des produits physiques réels, Light Brick Studio était conscient des défis que représentait la création d'une expérience où les joueurs interagissent avec les éléments du jeu dans la pièce. Pour la sortie du jeu sur Apple Vision Pro, le temps était également une contrainte. Alors que l'équipe avait réalisé d'autres portages de plates-formes avec des interfaces 2D en un mois ou deux, le délai de trois mois était trop court pour cette nouvelle entrée dans l'informatique spatiale.

Naviguer dans une nouvelle dimension

"Une fois que vous connaissez les limites de la plateforme pour le jeu et son gameplay, vous pouvez pratiquement créer n'importe quel type d'expérience", explique Mikkel Fredborg, responsable technique chez Light Brick Studios.

Pour l'équipe, l'adaptation d'un jeu à visionOS "a été principalement un défi technique consistant à le faire fonctionner de manière fluide et à tirer parti de toute l'expérience". Il s'agissait de mettre en œuvre de nombreux remaniements techniques, y compris une refonte complète de l'interface utilisateur (UI) pour placer dans la pièce des éléments d'UI qui étaient auparavant plats. L'équipe a également dû mettre à jour ses outils et méthodes de rendu pour garantir la qualité visuelle et l'immersion du produit final. L'équilibrage des systèmes Unity et RealityKit en parallèle a ajouté des obstacles supplémentaires à l'optimisation des performances.

"Nous avons réalisé de nombreux portages différents, et celui-ci a été le plus complexe car Apple Vision Pro est très différent des autres plateformes", explique Karsten Lund, directeur général de Light Brick Studio. "L'objectif était de voir jusqu'où nous pouvions pousser l'expérience, et cela a très bien fonctionné.

Les résultats

  • Construction des 80 niveaux du titre et des 60 353 briques LEGO pour Apple Vision Pro en moins de 100 jours.
  • Économie de semaines de retard de développement grâce au soutien de l'équipe Unity PolySpatial
  • Toutes les zones de jeu sont restées intactes, avec seulement des optimisations spécifiques des performances, sans modification du déroulement général du jeu.
  • Mise en place d'une transition en douceur avec un style de réalité mixte ouvert qui devient de plus en plus immersif au fur et à mesure que le joueur progresse.

Nintendo Switch est une marque déposée de Nintendo.

Un gif des éléments du jeu LEGO Builder's Journey en action
Le voyage du constructeur LEGO par Light Brick Studio

Refonte de l'interface utilisateur et du gameplay

LEGO Builder's Journey possède une interface utilisateur minimale, contenant tout au plus 20 boutons pour des actions telles que le chargement de parties sauvegardées et le redémarrage d'un niveau. La refonte de l'interface utilisateur s'est faite dans Unity, en prenant des GameObjects et en leur attachant des colliders pour que l'entrée fonctionne correctement tout en imitant le langage de conception de visionOS.

L'équipe a également dû tenir compte de la flexibilité des mouvements du corps. À l'exception de l'interface utilisateur, tout dans le jeu est construit à partir de briques LEGO dans un outil appelé LEGO Digital Designer. L'équipe a toujours essayé de simuler l'espace 3D dans une surface 2D, mais avec Apple Vision Pro, elle a dû tenir compte du fait qu'un joueur pouvait se déplacer n'importe où. Pour permettre une expérience à 360 degrés, l'équipe a retravaillé des modèles existants conçus pour être vus uniquement sous des angles spécifiques afin de s'assurer qu'il n'y avait pas de trous dans la géométrie du modèle. Pour réduire les appels de dessin, plusieurs maillages ont également été combinés en un seul GameObjects.

M. Fredborg explique : "Nous avons pu tenir compte du fait qu'un joueur peut faire le tour complet du modèle et l'optimiser à 360 degrés. Nous nous sommes débarrassés de toute la géométrie qui se trouvait à l'intérieur des briques lorsque nous les avons importées dans le jeu, et nous avons donc supprimé tous les détails intérieurs, car vous ne les voyez jamais. Nous avons pu utiliser les outils automatisés dont nous disposons et les ajuster pour qu'ils fonctionnent avec l'expérience de simulation complète.

Prise de vue dans l'éditeur de l'équipe de Light Brick Studio mettant en place l'interface utilisateur et les événements pour le composant PolySpatial VolumeCamera.
Prise de vue dans l'éditeur de l'équipe de Light Brick Studio mettant en place l'interface utilisateur et les événements pour le composant PolySpatial VolumeCamera.

Gestion du placement en mode délimité

Très tôt, l'équipe a décidé de concevoir en mode limité, c'est-à-dire qu'elle devait opérer dans un volume défini. S'ils ont tenté de travailler en dehors de ce volume, les éléments ont été coupés et sont restés invisibles. Ils ont décidé d'accepter les limites du mode Bounded, dans lequel il n'y a aucune information sur la position/orientation de la tête, des yeux ou des mains du joueur, à moins qu'une interaction ne soit effectuée. Lorsque le joueur effectue un geste de pincement, le jeu sait où se trouve la main et avec quel objet il interagit. Lorsque le pincement prend fin, l'information prend également fin. En ce sens, il est similaire à un écran tactile, où l'on ne sait ce que fait le joueur que lorsqu'il touche l'écran.

"Nous ne savions pas ce que les gens regardaient, ce qui était un grand changement, d'autant plus que notre jeu nécessite que les joueurs regardent une brique pour la sélectionner", explique M. Fredborg. "Une fois que nous avons franchi toutes ces limites, cela a très bien fonctionné et s'inscrit parfaitement dans le système. En fin de compte, il a été très agréable de fonctionner de cette manière, car tout est orienté dans la même direction en matière d'expérience utilisateur."

Donner un coup de main aux shaders MaterialX

Dans les premières versions de LEGO Builder's Journey, l'équipe a utilisé une version personnalisée du Lightweight Render Pipeline (LWRP) d'Unity, avant de passer au High Definition Render Pipeline(HDRP) pour les portages Xbox et PlayStation. Pour Apple Vision Pro, il a fallu d'abord tout convertir pour qu'il soit basé sur l'Universal Render Pipeline(URP) et le Shader Graph, puis le transférer vers le RealityKit d'Apple.

Pour ce faire, ils ont traduit les shaders créés dans Shader Graph en shaders MaterialX qu'ils ont pu charger dans RealityKit. Mais l'équipe s'est heurtée à des obstacles, constatant que les résultats n'étaient pas bien optimisés et qu'ils nécessitaient plus de travail que prévu.

Ils avaient prévu une optimisation manuelle, mais se sont rendu compte qu'ils devaient automatiser le processus pour l'étendre. Ils apportaient des correctifs manuels aux nuanceurs, trouvaient le code dupliqué, puis remplaçaient cette section du code pour s'assurer qu'elle ne serait exécutée qu'une seule fois. "Cela a été un défi de faire fonctionner les choses en douceur", admet M. Fredborg, "mais je pense que l'équipe de PolySpatial fait un excellent travail en allant de l'avant pour optimiser les choses".

Les éléments de jeu des différents niveaux de LEGO Builder's Journey
Le voyage du constructeur LEGO par Light Brick Studio

Trouver la meilleure lumière

En raison du court délai d'exécution du jeu, ils ont dû trouver des solutions à la volée. "Nous avons dû trouver des solutions pour accroître le réalisme du jeu tout en prenant en charge les Light and Shadows en temps réel ", explique M. Fredborg. "C'est l'un des changements les plus importants.

Dans un premier temps, ils ont repris l'éclairage basé sur l'image de l'Apple Vision Pro, dans le but de l'ajouter correctement sur les matériaux qu'ils souhaitaient inclure, comme le plastique et ses différentes variantes. Ils ont dû s'attaquer à des éléments difficiles à résoudre tels que les empreintes digitales et les rayures sur les briques.

Le jeu ayant été initialement développé pour les premiers iPhones, son éclairage est très simple. L'équipe a utilisé une texture de volume - une texture 3D avec occlusion ambiante intégrée - afin de pouvoir prélever des échantillons n'importe où dans la scène. Ils échantillonnaient des points et analysaient la quantité d'occlusion ambiante. Les textures 3D n'étant pas prises en charge par Apple Vision Pro, ils ont dû convertir la texture du volume en textures 2D et procéder à un échantillonnage manuel à partir de celles-ci. Ce processus est désormais automatisé dans PolySpatial, mais il n'était pas disponible lorsque l'équipe de Light Brick Studio a commencé à travailler.

Prise de vue au montage de l'équipe du Light Brick Studio en train de préparer l'une des scènes nocturnes.
Prise de vue au montage de l'équipe du Light Brick Studio en train de préparer l'une des scènes nocturnes.

L'équipe a commencé par utiliser l'ombrage des briques en plastique et ce système d'échantillonnage de texture en volume. Ils ont ensuite incorporé des lumières en temps réel et, comme la texture du volume enveloppait la scène, ils ont dû modifier l'éclairage extérieur. Lorsqu'ils ont commencé le développement, il n'était pas possible d'écraser l'éclairage basé sur l'image, ils ont donc dû échantillonner une carte cubique différente, puis estomper la lumière à partir de l'éclairage basé sur l'image de RealityKit.

"Ce que nous faisions n'était pas vraiment possible, mais nous avons trouvé une solution de contournement en réduisant la douceur de la brique et en augmentant différentes valeurs avant de l'envoyer à l'éclairage RealityKit", explique M. Fredborg. "Les développeurs auront plus de facilité puisque l'écrasement de l'éclairage basé sur l'image est désormais possible dans PolySpatial et RealityKit."

Les éléments de jeu des différents niveaux de LEGO Builder's Journey
Le voyage du constructeur LEGO par Light Brick Studio

Créer une ombre douce

L'équipe de Light and Shadows Studio a également dû trouver une solution pour les ombres. Bien qu'il soit possible d'ajouter des ombres à certains éléments dans l'Apple Vision Pro, ce n'est pas la norme. Pour ce faire, l'équipe a rendu l'ombre dans Unity sous la forme d'une carte de hauteur ou de profondeur, l'a envoyée à RealityKit et l'y a rééchantillonnée. Ils ont rendu la scène sous forme de carte d'ombres sur le backend Metal dans Unity, puis l'ont transmise au côté rendu de RealityKit.

"Ce que vous pouvez faire passer par le rendu est limité si vous devez toujours atteindre 90 images par seconde. Nous avons réalisé une très petite carte d'ombre, de 64 x 64 pixels, puis nous avons combiné les niveaux de la mipmap dans les canaux RGBA d'une seule texture, qui peut ensuite être échantillonnée avec un seul échantillon dans RealityKit pour produire quelque chose qui ressemble à une ombre douce", explique Fredborg. "Ainsi, lorsque la brique est très proche de la surface, les ombres sont très nettes, mais lorsqu'elle est en hauteur, les ombres sont plus douces. C'est ce que nous avons fait avec un seul échantillon de texture".

Une expérience immersive en jouant au LEGO Builder's Journey à la maison
Le voyage du constructeur LEGO par Light Brick Studio

Pour les lumières en temps réel d'Unity, ils ont utilisé le nœud d'éclairage PolySpatial dans Shader Graph, qui s'est étendu à plusieurs nœuds de Shader Graph une fois qu'il a été converti en RealityKit.

"Pour RealityKit, le seul moyen de modifier les shaders est d'utiliser une interface de type Shader Graph", explique M. Fredborg. Du côté d'Unity, l'équipe a découvert qu'il était possible de créer une fonction de code personnalisé dans Shader Graph, et, tant que celle-ci suit certaines règles spécifiques, elle peut être convertie par la suite en un graphique de nœuds MaterialX. "Cela nous a beaucoup aidés", poursuit-il, "sinon cela aurait été un monstre de spaghetti à l'intérieur d'un monstre de spaghetti dans Shader Graphs".

Les éléments de jeu des différents niveaux de LEGO Builder's Journey
Le voyage du constructeur LEGO par Light Brick Studio

Optimisation à 90 FPS

Alors que l'équipe poussait les visuels vers une nouvelle dimension, elle a rencontré quelques obstacles pour assurer le bon fonctionnement de la plateforme. Le développement a fonctionné comme un système en deux parties, passant tout d'Unity à RealityKit, qui a des techniques de rendu différentes. Cela signifie qu'Unity s'occupait de la logique du jeu, tandis que RealityKit s'occupait du rendu des visuels, et qu'une optimisation était nécessaire pour un fonctionnement fluide à 90 images par seconde. L'un des principaux défis consistait à identifier si un goulot d'étranglement venait du côté d'Unity ou de RealityKit, et il fallait à l'équipe de multiples essais pour trouver la solution.

"Au début, le package PolySpatial reflétait tout ce que nous faisions dans Unity sur RealityKit, donc chaque GameObjects ou transformation s'y trouvait, et à l'époque, nous n'étions pas en mesure de désactiver des couches spécifiques pour qu'elles ne soient pas transférées ou reflétées. Il reflétait tout, du rendu de l'interface utilisateur au rendu de la toile, en passant par le système de particules de l'animateur", explique M. Fredborg. "Il existe maintenant un filtre qui permet de ne pas suivre certaines couches, mais à l'époque, nous devions trouver un moyen de nettoyer tout ce que nous n'allions pas voir du côté de RealityKit.

Un niveau dans LEGO Builder's Journey par Light Brick Studio
Le voyage du constructeur LEGO par Light Brick Studio

L'équipe devait optimiser les hiérarchies de GameObjects. Sur d'autres plateformes, les briques sont constituées de trois GameObjects liés ou plus, mais pour visionOS, ils ont fixé un maximum de deux GameObjects par brique pour limiter les allers-retours entre Unity et RealityKit. Cela a très bien fonctionné et a été une grande victoire pour l'équipe.

L'amélioration de l'animation en stop motion a également été un point fort. Le jeu contient des cascades animées qui échangent des mailles sur des briques. Ils étaient constitués de centaines de GameObjects différents, ce qui était assez lent. "Nous avons fini par l'aborder de manière échelonnée au lieu de faire chaque image pour chaque GameObjects", explique Fredborg. "Nous attendions et le faisions toutes les quelques images entre les différentes chutes d'eau. Cela m'a beaucoup aidé".

Trouver les meilleures solutions et le meilleur partenaire

Tout au long de son parcours de construction pour l'Apple Vision Pro, l'équipe de Light Brick Studio a dû faire preuve d'agilité, résoudre les problèmes rapidement et procéder par itérations pour obtenir de bons résultats.

"Je pense qu'il faut porter les lunettes pour comprendre", déclare M. Fredborg. "Nous recommandons de faire plusieurs constructions et d'utiliser l'appareil autant que possible pour se concentrer sur le toucher et le mouvement. Vous avez le simulateur que vous pouvez utiliser sur le Mac pour avoir une idée de la façon dont les choses fonctionnent, mais l'entrée est différente. Il s'agit d'une plateforme beaucoup plus physique".

En fin de compte, l'équipe était très satisfaite de la façon dont le jeu s'est déroulé, en partie grâce à la collaboration avec un partenaire de soutien solide. "L'équipe de PolySpatial a été très réactive, tant sur Slack que dans les forums de discussion", poursuit-il. "Lorsque nous étions bloqués, ils nous proposaient rapidement des solutions, ce qui nous a beaucoup aidés. Ils nous ont vraiment soutenus et ont voulu faire la meilleure version possible de PolySpatial".

Un niveau dans LEGO Builder's Journey par Light Brick Studio
Le voyage du constructeur LEGO par Light Brick Studio
"Tant qu'Unity prend en charge une plateforme, nous pouvons la faire fonctionner là-bas".
MIKKEL FREDBORG / LIGHT BRICK STUDIOTechnical Lead

Construire pour Apple Unity Pro dès aujourd'hui avec Unity 2022 LTS

Parlez à notre équipe pour savoir comment nous pouvons vous aider à tirer parti des puissants outils et flux de travail d ' Unity pour créer des expériences spatiales convaincantes.

Explorer l'étude de cas

Remplissez ce formulaire pour avoir accès aux derniers témoignages de clients.