R&D : la VR en warehouse-scale de Daedalis

Article paru initialement sur le blog de Wanadev

Sujet de recherche et de développement, le projet est désormais abouti et accessible au grand public. Daedalis, c’est un jeu de réalité virtuelle multijoueur, jouable sur plus de 300m² dans un véritable labyrinthe. Retour sur le projet, sa création, ses évolutions, et sur les mois de travail passés à développer ce jeu grandeur nature innovant.


Daedalis, un jeu warehouse-scale unique au challenge technique important

Dans un univers mêlant Egypte et Rome antique, parcourez plus de 300m² de véritables labyrinthes, en compagnie de 11 autres joueurs, équipés d’armes imprimées sur mesure.

Egyptiens et Romains doivent piller les pièces d’or du camp adverse et les ramener dans leur territoire. En calquant très précisément les cloisons d’un hangar sur l’environnement virtuel, le jeu n’a jamais été aussi proche du réel.

Quelques images du jeu

Daedalis, le jeu warehouse scale multijoueur

Daedalis, le jeu warehouse scale multijoueur

Un peu de contexte autour des expériences VR XXL

La VR telle qu’on la connaît aujourd’hui a débuté en 2016 avec la sortie commerciale du HTC Vive et de l’Oculus Rift : deux ans après, on estime à 4000 le nombre de salles d’arcades VR au monde (environs 400 en 2017), la plupart proposant des jeux non multijoueurs dans des espaces de moins de 10m².*

Quand la technologie sera devenue plus accessible et qu’on pourra tous jouer à des jeux VR dans nos salons de 10m², l’attrait des salles d’arcades VR viendra de l’immersion accrue que proposent les simulateurs et les expériences de jeu multijoueurs “warehouse-scale” (à l’échelle d’un entrepôt), qui proposent de se déplacer librement dans un espace réel de 200 à plus de 500m².

C’est ce que l’on appelle le “Location-Based Entertainment” (LBE). Ceci représentera un marché d’un milliard de dollars fin 2018 et d’environ 12 milliards de dollars d’ici 2023.

Des technologies dédiées existent (Vicon, Optitrack, etc.) mais elles sont très chères (parfois 200 000€ et bien plus juste pour le tracking). Nous voulions avoir une alternative pour proposer à nos clients une qualité similaire pour un centième du prix…on s’est donc penché sur la technologie des casques Windows Mixed-Reality (WMR).

Après 9 mois de recherche et développement, notre premier jeu basé sur les casques WMR propose aux joueurs de se déplacer librement dans un labyrinthe virtuel qui correspond parfaitement à l’environnement physique de 300m². Petit résumé des étapes qui ont permis d’en arriver là…


Retour sur la conception de ce projet innovant

Étape 1 : l’environnement de jeu

Une fois que la thématique est fixée (Egypte et Rome antique) et le concept mis sur papier (une sorte de laser game en mode “capture de drapeau” dans un véritable labyrinthe grandeur nature), on commence par le level design : créer une carte de jeu adaptée à la taille et à l’agencement de la salle, équilibrée pour les deux équipes, offrant des choix stratégiques intéressants et favorisant les rencontres.

carte de jeu daedalis

Cette étape est essentielle puisque le labyrinthe va être réellement construit à échelle 1 et le plan ne pourra donc pas être modifié par la suite. A ce stade, c’est d’ailleurs une bonne idée de tester la carte en y jouant en mode FPS traditionnel pour vérifier l’équilibrage.

Étape 2 : la fabrication des murs et scan 3D

Une fois la carte dessinée et testée, on envoie les plans à l’exploitant du local, qui prendra soin de monter les murs ou les cloisons au plus près des dimensions indiquées. Comme on sait très bien qu’il est impossible de construire exactement ce qui était marqué sur les plans au centimètre près, on attend la fin des travaux et on réalise un scan 3D ultra précis du résultat (+ ou – 1mm).

Exemple d’une vue orthographique de dessus du scan 3D : exemple d'une vue orthographique de dessus du scan 3D

Étape 3 : modélisation du labyrinthe 3D et le level building

On peut maintenant s’attaquer à la phase de level building : dans Blender puis dans le moteur de jeu (ici Unity) on se base sur le scan 3D pour placer précisément les murs, les poteaux, et tous les autres éléments du jeu.

modélisation murs 3D VR

Voici quelques images tirées directement de l’éditeur pendant la conception (toutes les options graphiques qui font que c’est joli sont pour l’instant désactivées) :

level building daedalislevel building daedalis

À ce stade de la conception, nous avons une carte de jeu physique d’un coté (avec des vrais murs !), et une carte virtuelle aux mêmes dimensions d’autre part, et un level building correct avec des objets et animations tout au long de la carte et du scénario de jeu.

Étape 4 : prototype de l’arme

L’élément principal du jeu est l’arme à énergie que les joueurs manipulent, il est donc important pour l’immersion qu’ils puissent tenir physiquement l’objet entre leurs mains, ressentir son poids et sa forme, tout en profitant du tracking de la manette, de la gâchette pour le tir et du retour haptique.

Le fait d’avoir une réplique exacte de l’arme dans la main permet aussi de se rendre compte de la précision du système en touchant les murs ou ses coéquipiers.

Les étapes pour créer l’arme ont donc été les suivantes :

  • Conception
  • Modélisation en utilisant l’arme virtuelle comme calque
  • Impression d’un modèle à échelle réduite pour valider l’assemblage (l’arme est composée de plusieurs parties)
  • Impression d’un modèle à l’échelle 1 pour valider le prototype

Lors de la phase de conception, il faut bien prendre en compte la manière dont l’arme sera utilisée lors de l’exploitation : prévoir une version gaucher et droitier, le support de différents types de contrôleurs, un accès facile au compartiment des piles, un démontage complet sans aucun outil, etc.

Impression des prototypes :

Modélisation de l'arme en 3D

Modélisation et impression 3D de l'arme

rendu arme 3D

Étape 5 : Apprentissage de l’environnement

Pour proposer une qualité de tracking irréprochable, il est essentiel de comprendre comment le casque perçoit son environnement et se repère par rapport au monde extérieur. Ça passe par une analyse du matériel utilisé (deux caméras noir et blanc, pas de caméra de profondeur) et énormément de tests.

La première chose à faire est de donner des points de repère visuels très contrastés aux caméras : aujourd’hui nous avons créé un outil spécifique de génération de lignes aléatoires qui seront imprimées sur les murs et le sol, mais dans les premiers temps c’était beaucoup plus artisanal (à coups de scotch et de bombes de peinture).

Nos premiers tests à la bombe

test calibration warehouse scale

Les sessions peinture permettent aux membres de l’équipe de libérer leur côté créatif !

Une version plus évoluée, avec une génération de lignes aléatoires imprimées sur le sol

dalles de sol imprimée

Les caméras sont très sensibles à la quantité et à la variation de lumière, une attention toute particulière doit être portée à l’éclairage des salles.

La deuxième chose à faire c’est “apprendre” l’environnement : se déplacer dans l’espace du jeu en s’assurant que le casque a bien vu chaque endroit.

Dans le cas très spécifique d’un labyrinthe, la manière de “scanner” l’environnement est extrêmement importante, il y a un ordre à respecter pour limiter les erreurs de mesure, en général du centre vers l’extérieur…encore une chose qu’on a apprise sur le tas puisqu’on est les premiers à s’attaquer à ce défi.

math zach

Étape 6 : Gestion du parc de machines

Comme 12 joueurs peuvent se combattre simultanément dans Daedalis, on arrive à un parc de 18 machines à installer et à gérer.

L’installation à la main prenant beaucoup trop de temps, on est rapidement passés à l’utilisation de scripts d’installation. Pour les prochains exploitants, nous avons préparé une image disque qui permettra d’accélérer encore le processus et de s’assurer de la stabilité des machines côté software.

En parallèle nous installons le réseau : une double connexion filaire + 4G pour maximiser le débit et s’assurer d’avoir toujours un accès à internet, et un nombre suffisant de bornes wifi 5gHz pour que la couverture soit parfaite sur les 300m² du labyrinthe.

La maintenance à distance des aspects spécifiques aux jeux “grandeur nature” est effectuée par un logiciel client-serveur sur mesure.

Enfin, pour la gestion des jeux, les mises à jour et le lancement des parties au quotidien, nous installons notre logiciel maison “Octopod Play”, qui lui aussi fonctionne à distance. Nous en dirons prochainement plus sur cette infrastructure complète.

image Octopod Play

L’avantage d’avoir une équipe pluridisciplinaire, c’est qu’on a pu s’occuper en interne de tous les aspects du projet, du développement du jeu VR en lui-même au logiciel de lancement de parties, en passant par les bases de données en ligne, le réseau, la gestion d’un parc de machines, etc. C’est la grande force des équipes Wanadev.

Étape 7 : La calibration

C’est peut-être le point le plus crucial du projet : comme les joueurs auront en permanence un casque sur la tête, il est absolument essentiel que l’environnement virtuel soit aligné à l’environnement réel au centimètre près…sinon les joueurs fonceraient la tête la première dans les murs, et ça on préfère éviter !

calibration fail dans le mur

Notre première idée consistait à prendre le casque ou un contrôleur comme point de référence dans le sas de départ, mais comme les informations de rotation ne sont pas très précises, ça créait des écarts de plusieurs mètres à l’autre bout du labyrinthe !

Plusieurs itérations plus tard, nous mesurons maintenant des dizaines de points de référence dans l’ensemble de l’environnement et on les aligne sur leurs équivalents dans le monde virtuel en minimisant les erreurs introduites par le casque et par l’imprécision des mesures. Et ça marche.

Voici une petite vidéo réalisée lors des premiers tests de calibration :

En réalité, on calcule la transformation des points mesurés vers les points théoriques et on l’applique sur le joueur plutôt que sur l’environnement. Ça permet de conserver tout le monde 3D en statique, ce qui est essentiel pour les calculs de lumière et les performances.

Une fois les bases de l’algorithme posées, de nombreuses améliorations ont été apportées pour mieux compenser les erreurs de mesure, augmenter la précision, accélérer le calcul, et faciliter le processus de calibration.

Nous avons également imprimé en 3D plusieurs versions de supports de contrôleurs pour améliorer la reproductibilité, l’expérience utilisateur et la précision générale.

Étape 8 : Tester, tester tester.

Contrairement aux jeux VR traditionnels, les tests d’un jeu d’une telle ampleur sont compliqués à réaliser en amont : certains problèmes n’apparaîtront que dans les conditions réelles, et nous sommes souvent confrontés à des problèmes liés au hardware (les ordinateurs, le réseau, l’environnement, etc.) plus qu’au software (le jeu lui-même).

On se réserve donc suffisamment de temps sur place pour régler les problèmes avant le début de l’exploitation. C’est aussi l’occasion de tester et d’améliorer l’expérience utilisateur de l’exploitant et le game design, qui est souvent novateur et spécifique donc nécessite régulièrement des ajustements pour être intéressant, efficace et fun.

Étape 9 : On recommence et on poursuit !

À chaque nouveau jeu et à chaque nouvelle installation de salle, on engrange énormément d’expérience qui nous permet d’améliorer les algorithmes, les process, le matériel, l’ergonomie des outils, le game design, le discours client, etc.

Même si nous commençons à avoir pas mal d’expérience dans le domaine nous essayons toujours de repousser les limites de ce qu’il est possible de faire et nous avons donc toujours plein de choses à apprendre.

On a d’ailleurs hâte de pouvoir tester en conditions réelles les stations de base SteamVR 2.0 pour pouvoir rajouter des objets et du full-body tracking à nos futures expériences !


Les sources des chiffres sur le LBE :