Développer un Jeu VR pour Oculus Quest sur Unity - Partie 0 Introduction

Aujourd’hui je démarre une série de tutoriels pour créer un jeu en VR sur Oculus Quest ! Après avoir réalisé de nombreuses applications pour Oculus Quest et Go, je voulais partager avec vous mon expérience. L’objectif n’est pas tant le jeu ou le gameplay mais tout ce qu’il y  a autour : c’est à dire tout ce qui vous sera utile peu importe le type de jeu que vous souhaitez faire en réalité virtuel !  Dans cette série j’aborderais les interactions, les déplacements, puis on ajoutera l‘avatar et ses mouvements. Ensuite on continue sur l’environnement, la lumière, les post process et toute l’optimisation qui y est lié (je m’attarderais notamment sur ces parties qui sont essentielles en VR “Standalone”, et j’ai remarqué un manque important d’informations sur ces sujets). Nous enchainerons sur l’audio pour enfin finir en parlant du multijoueur local et distant. 

 

Le Projet

Pour contextualiser ce projet j’ai choisi un gameplay très simple qui pourra s’intégrer dans un plus gros projet. Le concept est autour des mini jeux à la Mario Party, le but étant de pouvoir plus tard le faire en multi joueur. Nous allons faire un mini jeu où le joueur sera dans une banque et devra faire un “casse”. Autour de lui des liasses de billets apparaitront à différentes positions et il devra en attraper le plus possible en 1 minute. Pour complexifier un peu, d’autres objets apparaitront aussi, certains lui donnant des power-ups, d’autre qui le bloqueront dans son avancement. 

A terme nous pourront ajouter un environnement supplémentaire pour sélectionner les mini jeu, visualiser les scores, choisir son avatar etc.

Apprentissages

Ce tuto sera découpé en plusieurs parties, chacune ayant un objectif d’apprentissage et un thème précis. L’ordre des tutos suit un ordre logique de développement d’un projet de ce type, mais il possible de consulter les parties séparément pour en apprendre plus sur un sujet précis. Voici les différents thèmes que nous allons aborder :

Partie 1 – Mise en place

Nous allons créer le projet Unity et le configurer pour la VR. Importer les premiers plugins et simplement définir le projet.

Partie 2 – Intéractions VR

On entre tout de suite dans le vif du sujet ! Nous allons faire les première interactions avec des objets comme les sélectionner et attraper. Dans ce tuto nous utiliserons le nouveau système d’interaction XR de Unity (XR Interaction Toolkit) et le nouveau Input System !

Partie 3 – Déplacement et Téléportation

Dans la lignée de la partie précédente, on ajoute les déplacements avec la téléportation et un système pour tourner à gauche et droite avec le joystick. Nous évoquerons les différentes techniques de déplacements qui existent en réalité virtuelle, lesquelles sont les plus adoptées aujourd’hui et comment éviter le motion sickness.

Partie 4 – Avatar joueur

Nous mettrons en place un avatar pour le joueur avec un système de sélection d’avatar. Ensuite on intègrera le plugin Final IK pour la kinematic du joueur et que l’avatar réagisse aux mouvement de la tête et des contrôleurs.

Partie 5 – Environnement & Optimisation

Dans cette partie nous placerons un environnement tout fait venant de l’Asset Store. L’objectif est surtout de montrer les techniques d’optimisation de l’environnement. Une étape cruciale et souvent sous-documentée en VR. Nous verrons quels outils et métriques utiliser pour mesurer les performances et identifier ce qu’il faut optimiser. Nous parlerons billboard, LOD, et Impostors à travers quelques plugins.

Partie 6 – Lumière & Optimisation

Encore une étape dont l’importance et l’impact sur les performance est généralement sous-évaluée : la lumière. Nous évoquerons les Light Probes, le Lightmapping via l’utilisation du plugin Bakery et les Reflections Probes.  

Partie 7 – Post Process

Comment rendre votre jeu plus joli en quelques étapes ? Utilisez des Post Process ! Nous passerons rapidement sur le Post Process de Unity inclus dans la pipeline URP, et pourquoi celui-ci n’est pas très adapté à la VR sur Quest. Nous regarderons aussi le plugin Beautify qui offre des Post Process bien plus optimisés. Finalement je vous présenterais une technique fastidieuse mais bien meilleure en performance pour éviter l’utilisation des Post Process.

Partie 8 – Audio & Spatialisation

Une partie plus rapide sur les concepts de spatialisation de l’audio et son importance en réalité virtuelle pour le réalisme et le positionnement dans l’espace. 

Partie 9 – Mise en place du Multijoueur

Intégration et présentation du plugin Mirror pour mettre le Jeu en multijoueur. Nous nous attarderons plus sur le multijoueur local, avec quelques notes pour passer en distant P2P. Cette partie traitera de la découverte réseau, des principes de serveur / client / host et la mise en réseau des mouvements du joueur.

Partie 10 – VOIP &  parler aux joueurs

Nous intégrerons le plugin Dissonance pour que les joueurs puissent communiquer entre eux.

Partie 11 – Gameplay & Scoreboard

Toujours sur le multijoueur, nous ajouterons les fonctions réseau nécessaires au fonctionnement du gameplay à plusieurs et comment partager les informations telles que les scores.

Avant de démarrer...

Votre feedback est important pour améliorer cette formation, alors n’hésitez pas à me contacter pour des précisions. Vous aussi demander de traiter d’autres sujets qui vous intéresse. 

Il est à noter que cette formation nécessitera l’utilisation d’un certain nombre de plugins, beaucoup étant payant. C’est pourquoi je ne pourrait pas le partager sur un git. Cependant si j’ai décidé de vous présenter ces plugins c’est parce que je les utilise professionnellement et je me suis vite rendu compte que le gain de temps apporté par leur utilisation valait largement leur achat. Je n’ai donc sélectionné que la crème des plugins et ceux que j’utilise dans chaque projet,