Projet PFA

Cours 3

kn@lri.fr
http://www.lri.fr/~kn

Structure d'une boucle principale

Jeu moderne

La structure d'un moteur de jeu moderne suit invariablement le même schéma :

La norme actuelle est de réussir à faire un tour de boucle en 1000/60 = 16.666ms, pour avoi run affichage en 60fps

La plupart des écrans ont un taux de rafraîchissement de 60Hz, donc ça ne sert à rien d'aller plus vite.

Entrées utilisateur

Il n'y a pas grand chose à dire. Une façon courante de l'implémenter est de :

Logique de jeu

C'est ici qu'on implémente la logique du jeu. Par exemple

C'est aussi ici qu'on peut mettre une IA pour s'occuper des objets contrôlés par le jeu

Il est courant de découper cette boite en plusieurs sous boites

Logique de jeu

C'est ici que l'on déplace les éléments mobiles (par exemple, le boulet de canon qui a une certaine vitesse et déplacée d'un certain nombre de pixels)

Détection de collision

C'est ici que l'on détecte les collisions, c'est à dire les interactions entre deux objets du monde.

Pour chaque collision détectée, et une fois qu'on a détecté toutes les collisions, on peut appliquer du code de résolution dont le but est de modifier la logique du jeu (marquer le personnage comme touché, ayant pris un bonus, …)

Rendu de la scène

C'est ici qu'on appelle les primitives de rendu graphique en fonction de l'état du monde.

Intuitivement, le plus simple est de toute effacer et tout redessiner

On peut cependant, pour des questions de performances appliquer des techniques variées (superposition de couches graphiques évoluant a des fréquences distinctes par exemple)

Une fois la frame courante marquée comme dessinée, le système graphique fait le rendu à l'écran

Détection et résolutions de collisions AABB

Collisions AABB

Étant donné deux hitboxes (boites rectangulaires), on veut savoir si elles sont en intersection.

Si elles le sont, on veut appliquer un mecanisme de résolution

Sinon on ne fait rien

Résolutions de collisions AABB

Au minimum, si deux boites sont en collision on peut :

C'est une approche qui fonctionne pour les jeux simples : Jeu de tir en scrolling horizontal, jeu de plateforme, casse brique, …

Pour des jeux plus complexe, il faut intégrer un moteur physique et calculer les rebonds éventuels des objets (voir TP) : jeu de catapulte (à la Angry Birds), jeu basé sur la physique, jeu de plateforme où l'on peut pousser et lancer des objets de façon complexe ou en empiler, …

Détection de collisions AABB

Une technique courante est d'utiliser la soustraction de Minkowski (voir TP).