ARTILLERIE ET PHYSIQUE DANS UN JEU VIDÉO

Documents pareils
Repérage de l artillerie par le son.

Celestia. 1. Introduction à Celestia (2/7) 1. Introduction à Celestia (1/7) Université du Temps Libre - 08 avril 2008

APPENDICE B SYSTÈME DE PESAGE INTELLIGENT MODÈLE ILC3 ET LM3D VERSION 1.7

Quels avantages apportent les systèmes de sécurité modernes à l aide de l informatique et de l intégration? Par exemple:

Gestion d un VIDÉOPROJECTEUR. ou d un ÉCRAN SECONDAIRE

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

été 1914 dans la guerre 15/02-21/09/2014 exposition au Musée Lorrain livret jeune public 8/12 ans

C était la guerre des tranchées

Infolettre #18 : Les graphiques avec Excel 2010

APPRENDRE, VIVRE & JOUER AVEC LES JEUNES ESPOIRS DE L IHF

Sujets. Éléments de la Loi Position de hors-jeu Jeu actif. Infractions Recommandations

CHAPITRE. Le mouvement en deux dimensions CORRIGÉ DES EXERCICES

L EFFET PARALLAXE N EST

L'arbitre doit veiller à l'application des Lois du Jeu.

OUTILS DE SENSIBILISATION : PIÉTON / CYCLISTE / AUTOMOBILISTE / CYCLOMOTEUR

LES GRADES PROGRAMME D EXAMEN DE LA CEINTURE JAUNE A LA CEINTURE MARRON

LES TOUT PREMIERS PAS

LOGICIEL DE SURVEILLANCE NUUO NOTICE

GEOLOCALISATION ET NAVIGATION A L AIDE DES SIGNAUX GNSS

Utilisation du logiciel GALAAD

CONSTRUCTION DE LA CIBLE

Disney Wizards of Waverly Place (Nintendo DS MC )

Comment accéder à une vision synthétique de mon activité commerciale?

Chapitre 4 : Guide de Mouvement et Masque

My Custom Design ver.1.0

Le Livre de l Overlord

Sillage Météo. Notion de sillage

LES REGLES DE VOL VFR

Choisir entre le détourage plume et le détourage par les couches.

BALISE GPS. Modèle EOLE. MANUEL INSTALLATEUR Version 3.4 GPS+GSM+SMS/GPRS

Un accueil de qualité :

NOTICE D' UTILISATION CAMWORKS FRAISAGE. Luc Vallée Lycée Blaise Pascal Segré

Jeu de tirs et passes L artilleur

Riddle Blocks. Jeu sous Android. - Yann Bertrand. Membres de l'équipe : - Clément Guihéneuf TS5. - Guillaume Renotton TS4

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

Pagaie rouge. Lieu de pratique Plan d eau calme ou piscine comprenant un parcours sur deux buts (terrain 36 mètres par 20 mètres).

IDENTIFIER LES TEMPS DE JEU NE PAS PERDRE LE BALLON

Rapport de Projet Béatrice Frey et Cyril Crassin Printemps Projet Fourmis. Université de Technologie de Belfort-Montbéliard

Pi, poker et informatique ; une «épuisante» alliance pour des projets en mathématiques

MISSION DE L ENTREPRISE. Fabriquer grâce à son savoir faire, des produits en acier, aluminium et polymères pour les vendre sur le marché mondial

CHAPITRE. Le mouvement en une dimension CORRIGÉ DES EXERCICES

Guide de l utilisateur

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

LES SERVICES ET UTILISATION DU RADAR

Proces-Verbaux Procédure de téléchargement

Tableau d Alarme Incendie Type 3 type marche/arrêt avec ou sans flash

Dessiner dans Galaad FRANÇOIS PALLUT

Introduction à l informatique temps réel Pierre-Yves Duval (cppm)

ANICOTTE Guillaume GUFFROY Matthieu LIMA Juliette SALLOUH Chamsseddine CAHIER DES CHARGES SI 28

Ken Bell s Sommaire des Abréviations

Risques liés aux systèmes informatiques et de télécommunications

Chapitre 4: Dérivée d'une fonction et règles de calcul

Le seul ami de Batman

Prezi. Table des matières

Les clients puissance cube

techniques de tirs a l avant - partie 2

Traceur GPS Antivol. Le traceur est conforme aux normes européennes 95/56 E27

PROGRAMME D HABILETÉS EN FAUTEUIL ROULANT (WSP-F)

4. L assurance maladie

CHAPITRE IX : Les appareils de mesures électriques

Découvrez ce que votre enfant peut voir

Cours Fonctions de deux variables

LPP SAINT JOSEPH BELFORT MODE OPERATOIRE ACTIVINSPIRE. Bonne utilisation à toutes et tous! UTILISATION DES TBI LE LOGICIEL ACTIVINSPIRE

Assistant d e tablissement de Tableaux

6 ème. Rallye mathématique de la Sarthe 2013/ ère épreuve de qualification : Problèmes Jeudi 21 novembre 2013

L Essentiel des Règles de jeu du GN Version 2014-finale

Généralités. Premier lancement

SECURIT GSM Version 2

Comment choisir l ouverture (loft) de votre Driver

Contrôle et Visibilité des applications «Dans le firewall» vs. «A côté du firewall»

UFR de Sciences Economiques Année TESTS PARAMÉTRIQUES

Du Thermostat à l ordinateur climatique. Vincent Aubret Hortimax

Livret de jeux Découverte

Guide de l utilisateur

La vie des étoiles. La vie des étoiles. Mardi 7 août

AMELIORER SES COMPETENCES LINGUISTIQUES les prépositions de lieu

PHANTOM. Manuel Avancé. V Révision DJI Innovations. All Rights Reserved. 1

Le plombier chauffagiste a aussi besoin de cette représentation pour savoir ce qu il y a à l intérieur de la maison au niveau des hauteurs.

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Nos Ateliers WII, PS3 et Kinect

Guide utilisateur Performance

Analyse de la vidéo. Chapitre La modélisation pour le suivi d objet. 10 mars Chapitre La modélisation d objet 1 / 57

PRECAUTIONS DESCRIPTION DU PRODUIT

i7 0 Guide de référence rapide Français Document number: Date:

Former des sportifs citoyens

Trois nouveaux formulaires sont donc nécessaires : Pour l affichage de la liste, un formulaire de sortie WEB_Liste associé à la table des [Films] ;

CAHIER TECHNIQUE DU JOUEUR DEBUTANT. Billards Américain Pool et Snooker

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Livre blanc. Au cœur de Diskeeper 2010 avec IntelliWrite

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Texte Agrégation limitée par diffusion interne

Dossier de presse. Création de l observatoire sanef 1 ère étude scientifique des comportements au volant sur autoroute JUILLET 2012

Situation d apprentissage Les traits vivants avec le logiciel LopArt DUO (#P002)

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

FOOTBALL LES 17 LOIS DU JEU. Juillet 2004 FEDERATION INTERNATIONALE DE ASSOCIATION (FIFA) SUAPS UNIVERSITE DU MAINE FUINEL SAMUEL

Créer le schéma relationnel d une base de données ACCESS

LES CONTENUS ET LES OPTIONS MOINS DE 14 ANS MOINS DE 16 ANS

Transcription:

ARTILLERIE ET PHYSIQUE DANS UN JEU VIDÉO Stranger, Niavok 29 octobre 2015

Table des matières 1 Introduction 5 2 Un peu de contexte 7 3 L artillerie antiaérienne à l époque des guerres mondiales 9 4 16.7ms chrono 11 5 Pluie de métal 15 6 Pour aller plus loin 17 3

1 Introduction Créer des armes pour un jeu vidéo est une entreprise complexe. Les armes doivent être efficaces, agréables à jouer et suffisamment crédibles, sans pour autant rendre leur coût en performances trop élevé. La plupart des jeux vidéo prennent donc des raccourcis : les balles traversent souvent un niveau en une seule frame 1, permettant de simuler le tir en un seul test de collision ; les dégâts dits de zone se contentent de causer des dégâts dans un rayon bien défini ; la localisation des dégâts sur la victime se borne habituellement à des zones bonus qui causent plus de dégâts. Est-il possible de faire quelque chose de plus réaliste avec les contraintes d un jeu vidéo? C est le pari que nous avons fait! Voyons ensemble quelques techniques pour contourner les limites des moteurs physiques. 1. Une frame est une image faisant partie d une vidéo. On parle de frames per seconds pour désigner le débit d images à l écran, par exemple. 5

2 Un peu de contexte Cet article est rédigé par l équipe du jeu vidéo Helium Rain et a initialement été publié en anglais sur notre Devblog. Notre jeu est une space sim qui inclut du combat dans l espace, avec un objectif de réalisme. Nous avions besoin d une arme antiaérienne 1 efficace pour défendre les vaisseaux majeurs des attaques de chasseurs, ce qui nous a conduit à développer un canon antiaérien en nous inspirant des technologies modernes. ->!(https ://www.youtube.com/watch?v=xy4crksvlte)<- 1. On parle d antiaérien parce que le terme est courant, il est inutile de préciser qu il n y a pas d air dans l espace. 7

3 L artillerie antiaérienne à l époque des guerres mondiales Il y a historiquement deux options pour se débarrasser de chasseurs : utiliser des chasseurs en riposte, ou embarquer des canons antiaériens sur les cibles à protéger. La seconde option est celle qui nous intéresse ici. Ces canons répondent à des contraintes lourdes : il faut toucher une cible mouvante de quelques mètres de large qui évolue à plusieurs kilomètres d altitude avec un obus qui met dix secondes à toucher sa cible, et une technologie de visée qui pendant les deux guerres mondiales se bornait essentiellement à l estimation humaine. Au cours de la Première Guerre mondiale, on comprend donc bien vite que les simples obus ne sont pas une solution et on développe des obus qui explosent près de la cible, projetant des fragments métalliques dans toutes les directions. A l époque, il n y a que deux façons de déterminer l instant de l explosion : soit un seuil de temps, soit un seuil d altitude. Les deux méthodes exigent un réglage avant le tir. Tout change avec la Seconde Guerre mondiale qui voit l introduction des fusées de proximité, des obus explosant quand ils détectent une cible près d eux. Ces projectiles détectent les objets métalliques et rendent les batteries antiaériennes extrêmement efficaces ; à l époque, les Alliés prennent toutes les dispositions nécessaires pour que cette technologie reste secrète, quitte à limiter son déploiement. C est cette technologie que nous simulons dans la vidéo ci-dessus - comme vous pouvez le voir, son efficacité est certaine. Figure 3.1 Détonateur de proximité des années 50 (Wikimedia) Contrairement à l essentiel des jeux, nous avons décidé de simuler physiquement ces obus d artillerie. La première étape est de recréer une fusée de proximité. Notre version est perfectionnée : l obus explose quand il entre dans un rayon de détonation, mais il peut aussi exploser quand il détecte qu il a atteint sa distance minimale à la cible. On met donc en place une distance d activation en dessous de laquelle l obus est armé. Une fois armé, si l obus détecte que sa distance à la cible augmente, il explose. Nos obus ont une distance 9

3 L artillerie antiaérienne à l époque des guerres mondiales d activation de 50m et une distance de détonation de 3m. 10

4 16.7ms chrono 16.7 millisecondes, c est le temps qui se déroule entre deux images (ou frames) d un jeu vidéo quand ce dernier a un débit d image de 60fps, la valeur habituellement visée par les développeurs. C est un intervalle de temps très court pendant lequel on doit mettre à jour toute la logique du jeu, transmettre une scène au moteur de rendu 3D, effectuer un rendu et l afficher. Le budget de temps pour les projectiles, lui, est de l ordre d une seule milliseconde : pas question de passer toute une frame à calculer des positions de projectiles! Et pourtant, 16.7 millisecondes c est énorme : pendant ce temps-là, un obus a le temps de parcourir près de quinze mètres, la taille d un petit vaisseau. Chaque mise à jour du moteur physique va déplacer un obus de cette distance. On comprend mieux pourquoi les balles de jeux vidéo ne sont jamais simulées physiquement! L implémentation de notre mécanisme est donc très difficile. La simulation de la physique est faite pas à pas, chaque pas de simulation correspondant au calcul de tout ce qui s est passé dans le monde du jeu entre le temps présent et le temps de la prochaine frame. Comme nos obus sont très rapides (près de 800 m/s), on ne peut pas se contenter de vérifier la proximité à la fin de chaque pas, puisqu on pourrait traverser une cible pendant ce temps! Figure 4.1 Trajectoire d un obus vis-à-vis d une cible C est ce qu on appelle l effet tunnel dans les jeux vidéo. Cette anomalie peut permettre à des balles de traverser des murs, par exemple. Les moteurs physiques pour le jeu vidéo ne permettent simplement pas de simuler de telles vitesses. Pour corriger le problème, il nous faut calculer la distance minimale entre la cible et la trajectoire de l obus, ainsi que le point associé sur la trajectoire. Si ce point n est pas sur le segment (S0S1) correspondant à la frame courante, cette distance minimale n est pas utilisable. Si la distance minimale est inférieure à la distance de détonation, l obus explose. La position initiale de l explosion n est en revanche pas le point de distance minimale D, car le projectile doit toujours exploser à la distance de détonation et jamais en dessous. En effet, ce point de distance 11

4 16.7ms chrono Figure 4.2 Différentes positions de l obus pendant un tick minimale peut parfaitement être situé à l intérieur du vaisseau - un cas typique d effet tunnel. Une telle explosion causerait des dégâts irréalistes. Pour éviter cela, on calcule la position où la distance à la cible est égale à la distance de détonation, pour exploser à cet endroit précis. Une conséquence amusante de cet ajustement est qu il faut parfois faire revenir un obus en arrière pour exploser. Figure 4.3 Explosion à la position précédente Si on n est pas encore à la distance de détonation, mais déjà en dessous de la distance d activation, l obus est armé. Dans ce pas de simulation ou dans les pas ultérieurs, si l obus a été armé et que la distance augmente, l obus explose. 12

Figure 4.4 Explosion au plus près 13

5 Pluie de métal Dans la plupart des jeux vidéo, les obus explosent avec des dégâts dans un rayon fixe et tous les ennemis proches sont touchés. Habituellement, ils reçoivent plus de dégâts s ils sont proches du centre. Dans le monde réel, l explosion du projectile en elle-même ne cause pas de dégâts, c est le nuage de fragments métalliques qu elle projette qui cause le plus de dégâts. Plus une cible est proche du centre de l explosion, plus la probabilité d être touché est grande. Notre simulation reproduit ce comportement. Dans Helium Rain, les vaisseaux n ont pas de points de vie. Ils sont constitués de dizaines de composants individuels, chaque composant ayant son modèle de collision. Les obus simulent des centaines de fragments touchant les vaisseaux alentour, pour rendre les effets du tir aussi réalistes que possible. Une explosion sur le côté gauche d un vaisseau endommagera donc des composants sur sa gauche, sans affecter son côté droit. La méthode la plus simple pour implémenter cette simulation serait de créer autant de traces 1 physiques qu il y a de projectiles, mais elle serait bien trop coûteuse en performances, et inefficace, car très peu de rayons toucheraient leur cible. Figure 5.1 Tracé de rayon pour des fragments Pour augmenter la densité du nuage de fragments tout en diminuant la charge du processeur, il devient nécessaire d optimiser. On sélectionne d abord toutes les cibles dans un rayon raisonnable (en rouge sur les images suivantes), et pour chacune d entre elles on calcule l intersection entre leur sphère circonscrite 2 (en magenta) et une sphère centrée sur l obus (en jaune) qui représente la distance à la cible. Le ratio de surface entre la sphère jaune et l intersection des deux sphères correspond au ratio entre le nombre de fragments que devrait émettre la munition et le nombre de fragments que l on doit vraiment simuler (en bleu). Un dessin pour comprendre Il suffit ensuite de simuler les fragments utiles et de propager les dégâts correspondants aux composants touchés. Voici le résultat en 3D, dans le jeu, avec la visualisation correspondant à l image précédente. 1. Une trace, dans le jeu vidéo, est un segment entre deux points qui teste l existence d objets physiques. Imaginez une balle dans un jeu de tir. 2. La sphère circonscrite ou bounding sphere est la plus petite sphère qui contient tout un objet, en 3D. 15

5 Pluie de métal Figure 5.2 Tracé de rayon optimisé pour des fragments Figure 5.3 Tracé de rayon pour des fragments, vu en 3D 16

6 Pour aller plus loin Ces obus sont encore très dangereux à utiliser, car ils ne font pas la différence entre alliés et ennemis, puisqu ils se comportent comme des détecteurs de métaux. Plus simplement, tirer sur un ennemi proche peut causer des dégâts à son propre vaisseau. Pour pallier ce problème, les obus sont équipés d un timer, qui ne permet à l obus de s armer que quand il est à une certaine distance du canon. Ce timer permet aussi de désactiver un obus qui aurait dépassé sa cible. La vidéo au début de l article montre l efficacité de ces obus. Bien sûr, on pourrait encore développer le sujet en parlant des tourelles qui tirent ces projectiles, puisqu elles doivent anticiper les mouvements des adversaires et compenser ceux du joueur ; ou encore de l intelligence artificielle qui régit les pilotes des vaisseaux pour leur permettre d échapper à ces obus Ce qu il faut retenir, c est qu il est possible de simuler très précisément des mécanismes réels dans un jeu vidéo. En bonus, voici un petit extrait du code du jeu, issu du calcul du nombre de fragments à simuler. float ApparentRadius = FMath::Sqrt(FMath::Square(CandidateDistance) + FMath::Square float Angle = FMath::Acos(CandidateDistance/ApparentRadius); float ExposedSurface = 2 * PI * ApparentRadius * (ApparentRadius - CandidateDistanc float TotalSurface = 4 * PI * FMath::Square(ApparentRadius); float ExposedSurfaceRatio = ExposedSurface / TotalSurface; int FragmentCount = ShellDescription->GunCharacteristics.AmmoFragmentCount * Expose On peut noter que le niveau de mathématiques requis pour ce genre de travail est très accessible. Les notions basiques de géométrie sont suffisantes. Merci de votre lecture! :) 17