Cours 04 - Algorithmes Fichier

Transcription

Cours 04 - Algorithmes Fichier
Frames et collisions
Introduction à
l’algorithmique pour le jeu
vidéo
Frame et temps dans un jeu vidéo
En jeu vidéo, le temps continu n’existe pas !
Jeu en « temps-réel » : jeu dont les tours sont
très rapides (jusqu’à 60 par seconde) et
s’enchainent que le joueur agisse ou non.
Frame : tour de jeu (boucle d’événements)
Guylain Delmas - IUT de
Montreuil
Frames et collisions
2
Boucle d’événements
On effectue à chaque frame :
La capture des entrées joueur
Le calcul des déplacements
La gestion des événements déclenchés
Le dessin du nouvel état de jeu
Il faut dans l’idéal calculer 60 frames par
seconde pour un jeu fluide (1 par 0,0166s). La
plupart des jeux ne fonctionnent qu’à 15 ou 30
frames par seconde.
Guylain Delmas - IUT de
Montreuil
Frames et collisions
3
Détection de collision
Calculer la collision
(intersection) entre
deux sprites ou objets
d’un jeu.
Gestion de la physique
Déclenchement
d’événements
Guylain Delmas - IUT de
Montreuil
Frames et collisions
4
Détection de collision
Calculer l’intersection d’un pixel avec un sprite :
O(n²)
Calculer l’intersection entre deux sprites : O(n4)
Calculer l’intersection d’un sprite avec tous les
autres : O(n5)
Calculer l’intersection de tous les sprites entre
eux : O(n6)
Guylain Delmas - IUT de
Montreuil
Frames et collisions
5
Exercice : calcul de temps
Si une détection de collision entre tous les
sprites d’un jeu met 0,001s pour n=5,
combien de temps sera nécessaire pour
n=6 ? Et pour n=10 ?
n=6 -> T= 0,003s
n=10 -> T= 0,064s
Guylain Delmas - IUT de
Montreuil
Frames et collisions
6
Amélioration : la boite englobante
Au lieu de tester tous les
pixels, on ne teste que les
coins de la boite.
Test d’intersection entre deux
sprites : O(1)
Test de l’ensemble : O(n²)
Si pour O(n6) et n=5, T=1ms
alors
Pour O(n²) et n=5, T=16µs
Pour O(n²) et n=10, T=64µs
Guylain Delmas - IUT de
Montreuil
Frames et collisions
7
Autres optimisations
Ne tester que la face de la boite située du
coté du déplacement.
Séparer les collisions « de physique » et
les collisions « déclencheurs »
Ne pas faire les tests inutiles :
Objets immobiles entre eux
Ennemis entre eux
Joueur avec ses armes/projectiles.
Guylain Delmas - IUT de
Montreuil
Frames et collisions
8
Déplacer un sprite
Calculer les coordonnées (x,y) de la
position après déplacement
Si pas de collision « physique » à la
nouvelle position
Alors effacer le sprite à l’ancienne position
Afficher le sprite à la nouvelle position
Tester les collisions « trigger »
Guylain Delmas - IUT de
Montreuil
Frames et collisions
9
Problème : le clipping
Si un sprite se déplace de plusieurs pixels en
une frame :
Possibilité de « rater » des tests de bounding box
simplifiés
Possibilité de traverser entièrement un objet fin en
une frame
-> Certaines collisions ne sont pas détectées,
c’est ce que l’on appelle le clipping
Guylain Delmas - IUT de
Montreuil
Frames et collisions
10
Solutions au clipping
Eviter les objets « fins » pouvant être
traversés en une frame
Ne pas tester que la position d’arrivée d’un
sprite, mais aussi les positions
intermédiaires (tracer des lignes)
Guylain Delmas - IUT de
Montreuil
Frames et collisions
11
Et en 3D ?
Même principe mais avec des boites plus
complexes au niveau géométrique.
L’appartenance d’un point à une boite est
remplacé par une intersection de plans.
Compromis entre précision de la boite et
optimisation du modèle.
Guylain Delmas - IUT de
Montreuil
Frames et collisions
12
Pour en savoir plus :
http://openclassrooms.com/courses/theori
e-des-collisions/formes-simples
Guylain Delmas - IUT de
Montreuil
Frames et collisions
13

Documents pareils