Comment fonctionnent les balles dans les jeux vidéo?

Les jeux FPS (jeu de tir à la première personne, jeu de tir à la première personne) sont devenus une partie intégrante de l'industrie du jeu vidéo depuis l'avènement du Wolfenstein 3D le plus populaire en 1992. Depuis, le genre a évolué: les graphismes se sont améliorés, les budgets de développement ont augmenté et l'écosystème e-sports s'est développé. Mais qu'en est-il de leur fondation - la mécanique de tir? Comment s'est passé le développement sur ce front? Pourquoi les armes semblent-elles réelles dans certains jeux et comme des jouets dans d'autres?

Hitscan


À l'époque précédente, de nombreux jeux de rendu de scènes 3D en images 2D utilisaient une technique appelée raycasting . Le raycasting permet au moteur de déterminer le premier objet avec lequel le faisceau croise. Mais ensuite, les développeurs ont posé la question: «Et si vous sortiez un faisceau du canon de l'arme pour simuler une balle?» Grâce à cette idée, un hitcan est né («hit scanning»).


Exemple de diffusion de rayons

Dans la plupart des implémentations d'armes avec hitcan, lorsqu'un joueur tire, le moteur physique effectue les opérations suivantes:

  • DĂ©finit la direction dans laquelle l'arme pointe.
  • Libère un faisceau d'un canon d'arme Ă  une distance prĂ©dĂ©terminĂ©e.
  • Utilise la diffusion de rayons pour dĂ©terminer si un rayon a frappĂ© l'objet.

Si le moteur détermine que l’objet est sur la ligne de feu, il l’informera de cela, disant que la balle l’a «touché». Ensuite, la cible peut effectuer tous les calculs nécessaires pour enregistrer les dégâts.


De l' unité . Le point A désigne une arme émettant un faisceau au point maximum B. Le faisceau entre en collision avec un cube auquel le moteur signale qu'il a été touché.

Hitscan est intrinsèquement simple, mais de nombreuses modifications différentes peuvent être apportées pour ajouter une autre logique:

  • Si nous continuons le faisceau au-delĂ  du premier objet qu'il frappe, nous pouvons percer plusieurs objets sur la ligne, comme le railgun dans Quake
  • Si nous supprimons la portĂ©e maximale du faisceau, nous obtenons un laser qui volera pour toujours jusqu'Ă  ce qu'il frappe quelque chose
  • Vous pouvez programmer certaines surfaces rĂ©flĂ©chissantes de sorte que les balles rebondissent sur elles


Overwatch. La capacité de déviation du caractère Genji est un exemple de surface réfléchissante.

Le principal avantage du raycasting est sa vitesse de traitement énorme. Il est calculé rapidement et ne nécessite pas de mémoire supplémentaire ni de temps processeur pour créer un nouvel objet physique. Cela signifie que le code réseau nécessaire pour synchroniser plusieurs clients sera minimal, car le serveur n'a besoin que de suivre la direction du faisceau. Le recul est également réalisé simplement, pour simuler cet effet, il suffit d'ajouter une légère déviation à la vue de l'arme.

Par conséquent, il n'est pas surprenant que hitscan soit utilisé dans la logique de tir de nombreux jeux. Les exemples classiques sont Wolfenstein 3D et Doom , mais cette technologie est également utilisée dans les jeux modernes. Des personnages comme Soldier 76, McCree et Overwatch Doom Widow utilisent des armes avec hitscan, et la plupart des armes dans Call of Duty sont également basées sur hitscan.




Overwatch, Call of Duty, Wolfenstein 3D

Alors pourquoi cette approche n'est-elle pas utilisée dans tous les jeux?

Premièrement, comme vous l'avez probablement remarqué, les rayons ont une vitesse de mouvement infiniment élevée, c'est-à-dire qu'ils atteignent instantanément le point final. Il n'y a pas de temps pour le mouvement d'une balle entre le tir d'une balle et la frappe d'un objet. Cela signifie que si un rayon frappe un objet, il est impossible d'éviter une balle, même si la cible est à plusieurs kilomètres du joueur.


Halo. Notez que le coup de canon et les effets de toucher le sol se produisent simultanément.

Deuxièmement, la plupart des implémentations hitcan utilisent des faisceaux directs. Cela signifie qu'il est difficile de prendre en compte le vent, la gravité et d'autres facteurs externes qui peuvent affecter la balle après avoir volé hors du tronc. Les programmeurs peuvent ajouter toutes sortes d'astuces pour que le faisceau imite de vraies balles, mais dès que le joueur "tire" sur le faisceau, il n'y a aucun moyen de changer son chemin au milieu.

Dans de nombreux jeux occasionnels, hitscan est toujours utilisé car il simplifie la courbe d'apprentissage pour la plupart des nouveaux joueurs. Mais qu'en est-il des jeux cherchant à transmettre la "vraie" sensation de tir? Avec de telles restrictions, cela est impossible à réaliser, donc une méthode différente est nécessaire.

Balistique d'un objet volant


Ce terme peut sembler compliqué, mais à un niveau abstrait, l'idée est assez simple. Chaque balle ou projectile tiré d'une arme crée un nouvel objet physique dans la scène. Il a sa propre masse, sa vitesse et son propre cadre de contact (hitbox), qui sont suivis par le moteur de jeu.


Max Payne 3

Les avantages de la balistique se manifestent pleinement dans les jeux où le réalisme a la plus haute priorité. Étant donné que chaque objet volant existe seul, nous pouvons prendre en compte l'influence du vent, du frottement, de la gravité, de la température - toute force qui devrait agir sur la balle. Maintenant que nous pouvons changer la physique, les joueurs peuvent utiliser des armes plus diverses, pas seulement de simples pistolets et lasers; nous pouvons ajouter des grenades et des roquettes à notre arsenal.

Étant donné que les balles dans un tel système ne se déplacent pas à la vitesse de la lumière, il est également possible de réaliser des propriétés temporelles:

  • Bullet Time utilisĂ© par Max Payne , Sniper Elite et Superhot .
  • Le temps de dĂ©placement des balles, c'est-Ă -dire lors du tir Ă  longue distance (ou lors du tir d'un projectile se dĂ©plaçant lentement), la prĂ©emption devient critique.
  • Explosions d'obus retardĂ©es, telles que des grenades

En raison de ces calculs supplémentaires, le traitement devient plus coûteux que l'utilisation de hitscan. Pour assurer la synchronisation, les serveurs doivent faire beaucoup plus de travail, il est nécessaire d'éliminer les divergences ou les conflits dans la logique côté client, afin que tous les joueurs d'un même serveur soient dans les mêmes conditions.




Superhot, Battlefield 1, Overwatch

Il existe de nombreuses solutions pour maximiser la productivité. Par exemple, le moteur peut stocker un pool d'objets chargés avant le début du jeu et les «activer» selon les besoins. Après avoir touché la surface, vous pouvez jouer l'animation de la balistique et éteindre la balle, en l'enregistrant pour l'avenir. Cette méthode vous permet d'économiser les ressources informatiques et la mémoire occupées par la création et la destruction multiples d'objets.

Il existe également de nombreuses façons d'effectuer des calculs, mais à un niveau élevé, la différence réside dans le lieu où ils décident de traiter le "tact" du jeu - une unité de temps:

  • L'horloge est calculĂ©e sĂ©parĂ©ment de la logique de rendu, c'est-Ă -dire que le jeu aura une reproduction plus prĂ©cise des objets mĂŞme lorsque les images sont sautĂ©es. Plus de logique est nĂ©cessaire pour calculer le temps exact Ă©coulĂ© depuis le rendu prĂ©cĂ©dent.
  • Calcul d'une mesure dans chaque trame; lier la physique Ă  la frĂ©quence d'images. Si vous dĂ©sactivez la restriction sur la frĂ©quence d'images maximale ou si le jeu commence Ă  sauter des images, la physique du monde accĂ©lĂ©rera ou ralentira.

Les effets de la liaison du mouvement aux mesures sont clairement visibles lorsque les obus se déplacent assez rapidement pour parcourir une distance assez grande entre les mesures. Des situations peuvent survenir lorsque des objets «se croisent», car dans le moteur, ils ne se sont jamais intersectés.

Tout cela semble compliqué, tant de gens pensent que c'est une méthode relativement nouvelle; cependant, cela s'est produit avant que hitscan! Avant les jeux FPS, il y avait de nombreux tireurs de haut en bas comme Asteroids , Space Invaders ou Galaxian . Ce sont des jeux d'arcade des années 70, dans lesquels la balistique des obus a déjà été mise en œuvre, bien que de manière assez primitive.


Astéroïdes. Les coquilles sont assez difficiles à voir, mais elles le sont!

Mais même avec toutes ces fonctionnalités, nous ne pouvons pas recréer un modèle réaliste du monde réel. Existe-t-il un moyen de tirer parti des deux méthodes?

Systèmes hybrides


La plupart des moteurs de jeu sont capables de gérer les deux types de simulation de balle: hitcan et balistique. Cela vous permet de réaliser une vaste sélection d'armes; des jeux comme Halo , GTA et Half-Life ont des armes qui peuvent prendre en charge les deux types de physique.



Halo. Le fusil d'assaut utilise hitscan; Needler utilise la balistique des projectiles

Les développeurs peuvent également mélanger les deux techniques pour couvrir les faiblesses de chaque système et fournir un comportement plus réaliste. Par exemple, pour éliminer le problème de passage d'objets entre eux, chaque balle dans chaque cycle du moteur peut émettre un faisceau. Cela permet au moteur de voir si l'un des rayons se croise entre les mesures et entre en collision dans l'air.

Ils peuvent également être combinés pour améliorer les fonctionnalités du jeu. Un bon exemple de cela est la série Sniper Elite ; après avoir appuyé sur la gâchette, le moteur utilise le hit-scan pour déterminer si le tir est effectué suffisamment près d'un objet détectable pour déclencher un ralenti. Si c'est le cas, alors une balle est tirée avec le calcul de la balistique en mode "bullet-time".


Sniper elite

Nous avons donc examiné les bases du comportement des balles dans les jeux vidéo! Fait intéressant, les améliorations dans ce domaine concernent principalement de petites optimisations et améliorations, et non un traitement à grande échelle. Après la sortie des premiers jeux révolutionnaires, nous n'avons fait aucune étape ni percée significative.

Et ensuite? Comment ce domaine se développera-t-il à l'avenir?

Je ne pense pas que dans un proche avenir, l'approche hybride disparaîtra, car elle offre des avantages supplémentaires. Mais je prédis qu'il y aura de nombreuses améliorations de la part de la balistique des obus. La fréquence de calcul de l'horloge continue d'augmenter (car la puissance CPU augmente), et on peut se rapprocher de la limite asymptotique de la simulation de la balle «monde réel».

Source: https://habr.com/ru/post/fr475420/


All Articles