# Faites avancer la simulation par pas de taille fixe.

> Séparez les mises à jour physiques du rendu avec une étape de simulation fixe, un travail de rattrapage limité et des tests de décrochage et de collision.

- URL: https://oneshotgems.ai/fr/topics/fixed-timestep-game-physics
- Catégorie: Pour les développeurs de jeux
- Type: Guide
- Mis à jour le: 5 octobre 2026

Un rappel de rendu peut arriver à des intervalles inégaux, mais la physique du jeu se comporte souvent de manière plus prévisible lorsqu'elle avance par étapes de simulation égales. Un pas de temps fixe fait que chaque mise à jour utilise la même durée, tandis que le rendu peut avoir lieu chaque fois que le navigateur est prêt à peindre. Il s’agit d’un choix d’implémentation pratique, et non d’une promesse de déterminisme parfait : l’arrivée des entrées, le comportement en virgule flottante et les règles de collision comptent toujours. Utilisez-le lorsque des étapes de simulation stables aident vos mécaniciens et testez la réaction de la boucle après un blocage de la boucle.

## Accumulez le temps écoulé et exécutez des mises à jour limitées

Dans chaque rappel d'animation, ajoutez le temps écoulé à un accumulateur. Pendant que l'accumulateur contient au moins une étape, mettez à jour la physique selon un intervalle constant tel que 1/60 de seconde et soustrayez cet intervalle. Rendez ensuite le dernier état. Définir un nombre maximum d'étapes de rattrapage par image ; sinon, une longue pause peut entraîner un retard important qui prend plus de temps et aggrave le retard. Décidez explicitement si le temps excédentaire est supprimé, plafonné ou géré par une autre règle de récupération.

Gardez les unités cohérentes. Si la vitesse est mesurée en unités du monde du jeu par seconde, multipliez-la par le pas fixe dans chaque mise à jour de simulation. Ne multipliez pas la même vitesse par le temps écoulé complet de l'image et n'exécutez pas également plusieurs mises à jour fixes, sinon le mouvement sera compté deux fois.

## Gérer la saisie et le rendu selon leurs propres limites

Échantillonnez les entrées conservées pour chaque étape de simulation ou mettez en file d’attente les actions ponctuelles jusqu’à ce qu’une étape les consomme. Si une pression sur une touche se produit entre deux images, assurez-vous qu'elle n'est pas perdue avant la prochaine mise à jour. Le rendu peut interpoler entre les états physiques, tandis que les collisions et les scores utilisent l'état de simulation. MDN décrit requestAnimationFrame comme un rappel ponctuel planifié avant de repeindre et conseille d'utiliser son horodatage pour calculer la progression ; un accumulateur utilise cet horodatage pour maintenir les mises à jour à pas fixe.

## Testez les limites de la boucle

Comparez le même mouvement court et la même collision sur des images ordinaires, une image lente simulée et une pause plus longue. Vérifiez qu'un joueur ne traverse pas un mur mince, ne gagne pas de vitesse supplémentaire après un blocage de la boucle ou ne déclenche pas de collision plusieurs fois lors du rattrapage. Testez la pause et le retour des onglets cachés selon la règle que vous envisagez. Si la boucle à pas fixes rend la simulation stable mais qu'une collision échoue toujours à grande vitesse, utilisez une méthode de collision adaptée au mouvement plutôt que d'augmenter la fréquence de rendu.

## Questions

**Un pas de temps fixe garantit-il une physique déterministe ?** Non. Cela rend l'intervalle de simulation cohérent, mais le timing des entrées, les mathématiques et l'ordre des collisions peuvent toujours produire des variations. Contrôlez-les séparément pour les tests qui nécessitent une relecture.

**Pourquoi limiter les mises à jour de rattrapage après un blocage du frame ?** Sans limite, le rattrapage peut monopoliser les images ultérieures et aggraver le retard. Choisissez et testez une politique de récupération adaptée au jeu, notamment si le temps simulé peut être ignoré.

## Suivez votre curiosité

- [Utiliser delta time pour éviter les mouvements saccadés](https://oneshotgems.ai/fr/topics/delta-time-in-games): Appliquez le temps écoulé aux mouvements du jeu, choisissez une politique de rattrapage sécurisée et testez les mouvements à différentes fréquences de rafraîchissement et après les décrochages.
- [Choisir des tests de collision pour un petit jeu](https://oneshotgems.ai/fr/topics/game-collision-detection): Choisissez une représentation de collision qui correspond à votre jeu, réduisez les vérifications de paires inutiles et diagnostiquez les objets traversant les obstacles.

## Pour aller plus loin

- [Requête MDNAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/Window/requestAnimationFrame)

---
Page canonique: https://oneshotgems.ai/fr/topics/fixed-timestep-game-physics
