godotengine / godotengine/godot
Jittery movement with Engine.max_fps lower than screen refresh rate
- Dominant language
- C++
- Stars
- 117k
- Forks
- 26.8k
- PR merge metrics
- PR metrics pending
Description
### Tested versions
4.5.1, 4.6.rc2
### System information
Windows 11
### Issue description
A simple CharacterBody2D and two StaticBodies, using move_and_slide() to move and change direction when hitting a wall.
Tried with and without Physics Interpolation but if Engine.max_fps is lower than my monitor refresh rate (120), this happens.
https://github.com/user-attachments/assets/cfa8f83e-4c58-4687-b915-3710c27f4c73
### Steps to reproduce
Just run the main scene. If there is no jitter, keep trying. Happens randomly.
### Minimal reproduction project (MRP)
[jitter-test.zip](https://github.com/user-attachments/files/24760062/jitter-test.zip)
Contributor guide
Research direction
Start by running the attached jitter-test.zip minimal reproduction on Windows 11 with a 120 Hz display, then vary Engine.max_fps and Physics Interpolation as described. Compare the movement when the cap is below the refresh rate; done means the reproduced jitter is explained and the relevant engine behavior is corrected without breaking wall-direction changes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- game-dev, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100