0%
Boucle de jeu, FPS et delta time — Chapitre 20

Chapitre 20 — Boucle de jeu, FPS et delta time

Partie 2A — Les fondamentaux du jeu 2D · Chapitre 20 sur 62 · 6 h

Chapitre 20 — Boucle de jeu, FPS et delta time

Niveau : intermédiaire Durée estimée : 6 h Pré-requis : chapitre 19 — Flutter en accéléré pour le jeu (runApp, StatefulWidget, setState, Ticker, CustomPainter) Ce que vous saurez faire à la fin : écrire une boucle de jeu complète en Dart et en Flutter pur, mesurer les FPS, et faire bouger un objet à la même vitesse réelle sur toutes les machines grâce au delta time.


20.0 — Objectifs du chapitre

À la fin de ce chapitre, vous serez capable de :

  • expliquer ce qui distingue techniquement un jeu d'une application classique ;
  • décrire le schéma entrées → mise à jour → rendu et le redessiner de mémoire ;
  • écrire une première boucle de jeu en Dart console ;
  • expliquer pourquoi un while (true) gèle une application Flutter ;
  • définir une image (frame) et un taux d'images par seconde (FPS) ;
  • convertir un nombre de FPS en durée de frame en millisecondes, et l'inverse ;
  • démontrer le bug d'un déplacement écrit x += 5 par frame ;
  • définir le delta time et écrire x += vitesse * dt ;
  • raisonner en pixels par seconde plutôt qu'en pixels par frame ;
  • calculer un dt à partir d'un Stopwatch ;
  • utiliser un Ticker et SchedulerBinding pour piloter une boucle Flutter ;
  • afficher un compteur de FPS et le lisser avec une moyenne glissante ;
  • reconnaître un dt aberrant après un pic de lag et le plafonner avec clamp ;
  • implémenter un pas de temps fixe avec un accumulateur ;
  • comparer pas fixe et pas variable et choisir en connaissance de cause ;
  • découpler la mise à jour du rendu et interpoler entre deux états ;
  • mettre le jeu en pause, au ralenti ou en accéléré avec un facteur de temps ;
  • nommer précisément ce que le moteur Flame fera à votre place à partir du chapitre 27 ;
  • assembler un petit moteur de boucle réutilisable pour tous les chapitres suivants.

Commentaires

Les commentaires sont alimentés par GitHub Discussions

Connectez-vous avec GitHub pour participer à la discussion

Lien copié !