Développer un Jeu VR pour Oculus Quest sur Unity - Partie 1 Mise en place

Commençons le développement du Jeu par la base : aujourd’hui on crée le projet Unity, en mettant les configurations essentielles à l’optimisation du Jeu. Cette configuration est une base propre pour un bon développement.

 

1. Création du Projet
2. Paramètres de Build
3. Paramètres Joueurs
4. Paramètres XR
5. Paramètres de Qualité
6. Paramètres URP

Pipeline URP

Pour tout ce tutoriel nous utiliserons Unity 2019.4, les versions suivantes n’étant pas encore très stables.
Il est impératif de sélectionner la pipeline URP dès le départ pour éviter des déconvenues par la suite. Cette Universal Render Pipeline est optimisée pour avoir les meilleures performances, mais au détriment de certaines fonctionnalités.

Paramètres de Build

Dans les Builds Settings il faut impérativement choisir la compression de texture ASTC. Il s’agit d’une recommandation directe d’Oculus car les processeurs mobiles (Snapdragon) sont excellents pour décoder rapidement de format.

Paramètres Joueur

Dans les Player Settings, choisissez Il2CPP comme scripting backend. Cela ajoute une étape au build le rendant un peu plus long mais donne un gain de performance non négligeable. IL2CPP va convertir le code Mono en programme C++. Attention, si vous utilisez Bolt ou des DLL, IL2CPP utilise la compilation AOT (Ahead Of Time). Un setting de Bolt permet de régler ce problème. Pour les DLL, il faut créer un fichier link.xml dans le dossier Assets pour éviter le “Bytecode Stripping” (plus d’informations ici et ici). 

Ensuite utilisez .NET4.

Changer les systèmes d’input pour le nouveau système de Unity “Input System Package“. Ça nous permettra de découvrir une nouvelle fonctionnalité.

Finalement cocher les settings d’optimisation comme sur la capture d’écran.

Note additionnelle pour Builder plus vite

Si vous souhaitez itérer rapidement sur un build sans avoir besoin d’un bon framerate, décochez les paramètres suivants, et utilisez la compilation Mono au lieu d’IL2CPP :
 Optimize Mesh Data : false
Prebake collision meshes : false
Mais remettez bien les paramètres d’optimisation proposés dans le capture d’ecran lorsque vous passez en production et phase d’optimisation.

Paramètres XR

Dans la partie XR Settings, activer la XR en cochant Virtual Reality Supported puis ajouter le support pour Oculus et cocher V2 Signing.

Dans Stereo Rendering Mode, choisir Single Pass, cela va diviser le nombre de Draw Call par 2. Nous en parlerons plus tard dans les chapitres sur l’optimisation.

Paramètres de Qualité

Dans la partie Quality Settings, désactiver Anisotropic Texture.
Mettre VSync Count sur Don’t Sync.

Pour éviter les problèmes, décocher toutes les autres configurations possibles en ne gardant que la Medium. Les autres peuvent même être supprimées.

Paramètres URP

Sélectionner la Pipeline URP présente dans les Quality Settings (supprimer les autres s’il y en a pour ne pas les mélanger). Les paramètres de la pipeline sont au format de Scriptable Object.

Pour l’instant on va mettre l‘anti aliasing à 4x, c’est un des seuls paramètres de type Post Process dont on ne peut pas se passer.

Désactiver le Cast Shadows pour toutes les lumières. Nous allons plus tard “bake” les lumières et ombres sur l’environnement mais pas calculer d’ombres en temps réel pour le joueur ou les objets dynamiques. Le coût en performance risque d’être trop grand pour un gain visuel minime.

Même chose avec Soft Shadows.

Cocher le dynamic batching. Il permet de dessiner plusieurs mesh de petites tailles en même temps sur le CPU, diminuant le nombre de draw call.

Ca y est, votre projet est correctement configuré, on va enfin pouvoir entrer dans le vif du sujet !
On se retrouve dans le prochain tutoriel où nous allons mettre en place le Rig VR, et commencer à interagir avec l’environnement, alors sortez votre casque VR !