Rapport de développement sur console - n°3

Cette semaine, nous allons évoquer les divers niveaux de détail, ce que ce terme signifie, et en quoi il est important pour les performances du jeu.

Bonjour à tous,

Nous revoilà pour un tout nouveau rapport de développement sur console ! Cette semaine, nous allons évoquer les divers niveaux de détail, ce que ce terme signifie, et en quoi il est important pour les performances du jeu.

Il existe des niveaux de détail différents en fonction des objets représentés dans PUBG. En fonction des circonstances, il peut nous arriver d’utiliser un niveau de détail plus ou moins élevé afin de trouver le meilleur équilibre possible entre les performances et la qualité visuelle de PUBG, le but étant bien évidemment de rendre votre expérience de jeu la plus agréable possible. En règle générale, PUBG utilise trois niveaux de détail différents en fonction de la situation. Ils sont numérotés de 0 à 2, le NDD 0 étant le plus élevé des trois. Plus le niveau de détail est élevé, plus le coût en ressources l’est également, ce qui a un impact sur les performances. Évidemment, les performances du jeu sont extrêmement importantes, mais il est également crucial de ne pas nuire au gameplay, comme cela pourrait parfois se produire en ayant recours à un niveau de détail moins élevé.

Par exemple, vous aurez peut-être remarqué que certains bâtiments semblent être en pâte à modeler quand on les regarde de loin lors d’un saut en parachute. Cela s’explique par le fait que leur rendu s’effectue au plus faible des trois niveaux de détail. En début de partie, les bâtiments plus proches peuvent également avoir cet aspect, car le jeu doit traiter une quantité colossale de données. Ils passent ensuite au NDD 0 (le plus élevé) le plus rapidement possible, en fonction de ce que permet votre matériel.

Trois types de niveau de détail différents sont également appliqués à vos personnages : les NDD Mesh, Bone et AnimNode. Nous allons commencer par vous expliquer en quoi consistent les NDD Mesh et Bone, après quoi nous nous concentrerons sur ce qui constitue le cœur du sujet de ce rapport, à savoir le NDD AnimNode.

Les NDD Mesh et Bone

Le NDD Mesh détermine le niveau de détail du modèle de personnage. Quand un personnage est proche de vous, il est représenté au NDD 0 (celui qui offre le plus de détails) et, au fur et à mesure que vous vous éloignez de lui, son rendu devient de moins en moins détaillé. Cela se produit peu à peu. On passe donc du NDD 0 au NDD 1 puis au NDD 2, et inversement quand on se rapproche. La plupart du temps, vous ne remarquerez même pas ces transitions, car elles se produisent de loin, à une distance où les personnages sont tout petits à l’écran.

Le NDD Bone fonctionne de la même manière, si ce n’est qu’il détermine le nombre d’os activés durant l’activation d’un personnage. Cela signifie que, de loin, le jeu n’a pas besoin de traiter des animations détaillées qui réduiraient les performances. Si le niveau de détail est moindre, cela signifie que le moteur du jeu doit traiter moins de vertex et d’os. Ce qui augmente grandement les performances par rapport à un jeu aussi gourmand en ressources n’optimisant pas les niveaux de détail.

Si nous avions d’autres niveaux de détail (NDD 3, NDD 4, etc.), cela améliorerait encore les performances en réduisant le coût en ressources, mais hélas, cela demanderait beaucoup à la mémoire de la console, et il ne nous est pas possible de l’implémenter efficacement à ce stade.

Le NDD AnimNode

Les animations bénéficient également d’un niveau de détail appelé NDD AnimNode, mais il ne nous est pas possible de l’utiliser aussi souvent que les NDD Mesh ou Bone car, dans son cas, les changements sont extrêmement visibles.

Toutes les animations telles que le fait de courir, de regarder sur le côté, ou encore de viser à l’aide de votre arme, sont basées sur le contrôle du squelette de votre personnage. Le moteur de jeu calcule ce type d’animation membre après membre, ce qui signifie qu’il a besoin d’effectuer des calculs différents pour les bras, les jambes, le cou, etc.

Nous avons donc mis au point une autre méthode de calcul du niveau de détail du personnage en fonction de sa taille par rapport à celle de l’écran. Cela fait, nous avons fixé des paramètres permettant au moteur de sélectionner automatiquement et de manière dynamique un NDD AnimNode moins détaillé pour les personnages se trouvant suffisamment loin pour que vous ne puissiez pas remarquer la perte de qualité. Cela a eu pour effet d’améliorer les performances du jeu sans avoir le moindre impact négatif sur son gameplay ou ses visuels.

Veuillez noter que, pour les exemples visuels montrés plus bas, les changements de NDD AnimNode s’effectuent à courte distance afin de vous montrer comment fonctionne ce procédé. Toutefois, lorsque vous jouez à PUBG, ils ne se produisent qu’à grande distance, là où vous ne pourrez pas voir la différence.

Voici un premier exemple montrant comment le NDD AnimNode fonctionne dans le jeu :

1.png.ab9f9fa46b1fc44ed6361b1071218498.png

(L’image ci-dessus est tirée d’un environnement de développement du jeu et a pour seul but d’illustrer notre propos.
En réalité, quand on joue à PUBG, le NDD AnimNode n’est désactivé qu’à grande distance.)

L’image ci-dessus vous montre les différences entre un NDD AnimNode activé ou désactivé.

Quand le NDD AnimNode est totalement désactivé, les animations du personnage le sont également, ce qui améliore les performances. Cela étant, quand le joueur est accroupi, le NDD AnimNode doit être activé pour le bas du corps, sans quoi le personnage apparaîtrait debout.

Dans l’exemple suivant, toujours dans notre environnement de développement, nous avons désactivé le NDD AnimNode quand le personnage occupe 10 % de l’écran, afin de mieux vous aider à comprendre ce qui se produit quand on le désactive.

En jeu, le NDD AnimNode n’est désactivé que pour les personnages qui sont trop petits (autrement dit, trop loin) pour que vous puissiez remarquer le changement.

2.gif.691fed682b167d6bd3344771dd96ebec.gif

3.gif.2ce034814181666d44012ee5833ca922.gif

(L’image ci-dessus est tirée d’un environnement de développement du jeu et a pour seul but d’illustrer notre propos.
En réalité, quand on joue à PUBG, le NDD AnimNode n’est désactivé qu’à grande distance.)

Vous devez vous demander ce qui se passe si vous utilisez une lunette de visée pour observer un personnage situé loin de vous.

Lorsque cela se produit, le personnage agrandi occupe une plus grande partie de l’écran et le NDD AnimNode s’active automatiquement en fonction de sa taille par rapport à l’écran, ce afin de veiller à ce qu’il n’y ait pas d’impact négatif sur le gameplay.

Vous pouvez voir ci-dessous, toujours dans notre environnement de développement, un exemple de NDD AnimNode codé afin de se désactiver lorsque le modèle du personnage occupe 10 % de l’écran. Cela devrait vous donner un exemple plus clair de ce qui se produit.

4.gif.9c293279df40a14ad823e0e2b18dc748.gif

(Les images ci-dessus sont tirées d’un environnement de développement du jeu et ont pour seul but d’illustrer notre propos.
En réalité, quand on joue à PUBG, le NDD AnimNode n’est désactivé qu’à grande distance.)

Encore une fois, lorsque vous jouez à PUBG, ces changements ne se produisent que quand un personnage se trouve très loin et n’occupe qu’une très faible portion de l’écran, de sorte que vous ne les remarquerez pas.

Performances du NDD AnimNode

Le graphique ci-dessous vous montre une comparaison entre un NDD AnimNode activé (en bleu) et un autre désactivé (en rouge) quand il y a 10 personnages autour de vous. Désactiver le NDD AnimNode permet d’améliorer les performances d’environ 10 %. 

5.png.0e76f49a4416e8ce3c0310bdb5118256.png* Les données de ce graphique ont été obtenues à l’aide d’une Xbox One X.

Plus il y a de personnages dont le NDD AnimNode est désactivé dans les environs, plus le gain en termes de performances est important par rapport à un NDD AnimNode activé.

En résumé, certains effets d’animation des personnages sont désactivés ou moins détaillés lorsqu’ils sont suffisamment loin pour que vous ne puissiez pas vous rendre compte du changement. Cela permet de réduire le coût en ressources utilisées, et donc d’améliorer les performances.

Merci de nous avoir lus ! À bientôt pour le prochain épisode de notre rapport de développement sur console !

Votre équipe PUBG console.

Discuss this article
Share this article