20/2/2020

BLOG DES DÉVELOPPEURS : EXPLOSIONS ET SHRAPNEL EN A5S1

Que se passe-t-il lorsqu'une explosion éclate dans Rainbow Six Siege ? Quels sont les facteurs qui permettent de calculer les dégâts infligés ? Comment tout cela fonctionne-t-il ?

Les explosions jouent un rôle majeur dans le gameplay de Rainbow Six Siege. Elles ne se contentent pas de faire boum ! Dans ce nouvel article, vous allez découvrir comment elles fonctionnent et ce que nous souhaitons mettre en place pour les améliorer.

Anatomie d'une explosion

Le système de destruction dans Rainbow Siege est assez unique et les explosions ne s'effectuent jamais deux fois de la même façon.

Les dégâts et la destruction infligés par une explosion sont calculés en quelques millisecondes seulement. Les joueurs reçoivent un retour sonore et visuel et subissent des dégâts s'ils se trouvent à portée. Mais pour que tout cela soit possible, le moteur qui se charge de gérer les explosions doit passer par plusieurs étapes.

Rayon d'effet et forme de l'explosion

Chaque type d'explosion est défini par de nombreux points de données, et c'est ce qui détermine la forme de l'explosion et son rayon d'effet. La forme de l'explosion dépend de son type : l'explosion d'une grenade frag est radiale, tandis que celle d'une mine claymore est rectangulaire, par exemple.

Lorsqu'une explosion se produit, le jeu regarde la forme de l'explosion et envoie une requête à notre moteur physique. Puis, après avoir pris en compte l'origine de la détonation et la forme de l'explosion, la requête fournit une liste d'entités (agents et objets) présentes dans le rayon d'effet. Cette liste représente donc les entités qui sont potentiellement affectées par l'explosion.

[R6S] Explosions: R6 AOE Animated

*La barricade et l'agent à l'intérieur de la sphère ont été indiqués comme des entités que l'explosion peut affecter.*

Le raycasting pour déterminer les cibles touchées

Une fois qu'il dispose de la liste des entités potentiellement affectées à l'intérieur du rayon d'effet, notre moteur physique exécute du raycasting. Il envoie des rayons depuis l'épicentre vers toutes les entités et leurs points de requêtes à l'intérieur de la zone d'explosion.

Chaque entité dispose de plusieurs points de requête qui sont utilisés pour déterminer si des dégâts sont infligés ou non. Plutôt que de cibler les os du squelette d'un modèle, ou de définir arbitrairement un point unique pour un agent, ces points de requêtes nous permettent de mieux voir si un agent est touché par l'explosion tout en optimisant les performances et en minimisant la latence.

Les raycasts ciblent ces points de requête en se basant sur différents paramètres et créent des points de données afin de pouvoir calculer plus tard la quantité de dégâts infligés. Prenons un exemple. Les raycasts vont cibler les points les plus proches de l'origine de l'explosion sur la capsule physique d'un agent, ainsi que quatre points sur leur volume de délimitation (la forme qui entoure le visuel de l'agent), tandis qu'ils cibleront les points de requête d'un mur à l'aide d'un ensemble de règles bien différentes.

[R6S] Explosions: R6 Raycast Animated

*Les résultats du raycasting déterminent si l'explosion affecte ou non l'entité.*

Il y a une dernière variable à prendre en compte avant que la quantité de dégâts ne soit calculée : les objets de l'environnement modifient les éléments de la forme d'explosion et peuvent potentiellement vous éviter d'être touché.

Ce sont les métadonnées qui vous sauvent la vie

Une fois que les raycasts arrivent aux entités affectées par l'explosion, ils renvoient des données pour déterminer le résultat de l'explosion.
Dans Siege, il existe des objets qui peuvent bloquer les dégâts d'une explosion. Tous les objets contiennent des métadonnées qui les définissent et qui permettent de gérer leur interaction avec les autres éléments du jeu. Certains objets contiennent des métadonnées qui bloquent les dégâts d'explosion, comme les barricades en métal, les murs de Castle ou encore les boucliers déployables.

Si le chemin du raycast croise un objet renfermant des métadonnées qui bloquent les explosions, et ce, avant d'atteindre les points de requête d'un agent dans le rayon d'explosion, alors aucun dégât ne sera infligé. Si le raycast ne rencontre rien, ou s'il rencontre des objets contenant des métadonnées qui ne bloquent pas les explosions, alors vous subissez des dégâts. Cela s'applique également aux gadgets entraînant une explosion, comme les grenades IEM de Thatcher.

[R6S] Explosions: R6 Results Animated

*Objets qui renferment des métadonnées bloquant les explosions et objets qui n'en contiennent pas à l'intérieur de la zone d'explosion.*

Pour finir, grâce à tous ces points de données, la quantité de dégâts infligés par l'explosion peut être calculée et appliquée.

Déterminer la quantité de dégâts subis

Lors du calcul des dégâts, le moteur regarde votre distance par rapport à l'épicentre de l'explosion : plus vous êtes éloigné, moins la quantité de dégâts subis est importante. Les explosions ont toutes une courbe de dégâts différente, mais de manière générale, la plus grosse quantité de dégâts est infligée à l'épicentre. À l'aide des résultats des raycasts, la quantité finale de dégâts infligés est déterminée en interpolant la courbe de dégâts en fonction de la distance qui vous sépare de l'explosion.

Destruction ou dégâts ?

Les explosions dans Siege sont exécutées par notre moteur de destruction, "Realblast". C'est un système de génération procédurale qui soutient les bases du gameplay dynamique qui fait tout le charme du jeu. Pour en savoir plus, n'hésitez pas à visionner le panel de Julien L’Heureux sur le sujet, disponible ici.

Les explosions entraînent généralement deux choses : destruction et dégâts. Les dégâts infligés aux joueurs et la destruction causée à l'environnement. Chacun de ces paramètres peut avoir différentes formes et différentes portées, en fonction de l'explosion.

[R6S] Explosions: R6 DamageVsDestruction Animated

*Portée de destruction (Realblast) contre portée des dégâts.*

Actuellement dans Siege, une fois l'exploration initiale du raycast effectuée et les requêtes renvoyées, on détermine la portée des dégâts et des effets de destruction. Si le raycast rencontre un bloqueur, la portée des dégâts se limite alors au rayon calculé par Realblast.

Malgré tout, la solution actuelle pour calculer les effets et la portée d'une explosion n'est pas idéale, et il arrive que le résultat ne soit pas très réaliste. Avec le système actuel, par exemple, une charge de C4 en extérieur est beaucoup plus dévastatrice qu'en intérieur, parce que les murs peuvent limiter le rayon des dégâts.

Modifications dues au shrapnel pour l'Année5 S1

Avec l'arrivée de la saison 1 de l'Année 5, on va apporter quelques changements aux explosions, des modifications mineures mais qui vont avoir leur importance, et ce dans le but de rendre les dégâts plus réalistes et transparents. On va introduire le concept de shrapnel dans les explosions de Rainbow Six Siege. Cela veut dire que les objets destructibles ne limiteront plus la portée des dégâts d'explosion, ce qui devrait corriger le problème "Portée de destruction contre portée des dégâts" décrit plus haut.

Le shrapnel va permettre aux dégâts d'explosion d'être plus réalistes, car les dégâts appliqués au joueur seront réduits en fonction du nombre d'objets destructibles que les raycasts touchent sur leur chemin. Les explosions seront également plus transparentes, puisque les trous de shrapnel fourniront plus de feedback visuel sur la direction d'où viennent les dégâts d'explosion.

[R6S] Explosions: Shrapnel Animated

*Modifications dues au shrapnel.*

EN RÉSUMÉ

L'art de la destruction dans Rainbow Six Siege est une expérience unique qui tend vers des réactions et des résultats réalistes. L'ajout des dégâts de shrapnel va permettre d'atteindre un degré plus poussé de réalisme au niveau des effets et des dégâts d'explosion, tout en offrant un rendu plus visuel et transparent.

Pour en savoir plus sur les explosions et le shrapnel, et voir un aperçu exclusif, rendez-vous sur la chaîne Logic Bomb Podcast en cliquant.

Visiter nos autres réseaux sociaux

facebook icontwitter iconyoutube icontwitch icon