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