Fixing Character Movement Jitter in Godot 4.x
Learn how to diagnose and resolve movement jitter in Godot 4.x by synchronizing physics processing with visual rendering using built-in interpolation and correct logic placement.
01 Jul 2026, 16:40 UTC

The Problem: Visual Stuttering During Movement
Character movement in Godot 4 often appears to "jitter" or "stutter," even when the game is running at a high frame rate. This happens because the physics engine updates at a fixed interval (typically 60 times per second), while the renderer draws frames as fast as the hardware allows. When these two cycles are out of sync, the character's visual position may stay the same for one frame and jump forward the next, creating a perceived vibration.
Diagnostic Matrix: Identifying the Cause
| Symptom | Likely Cause | Primary Diagnostic Check |
|---|---|---|
| Movement feels "choppy" despite high FPS | Physics/Render mismatch | Check if movement logic is in _process() |
| Character "teleports" small distances | Incorrect Delta usage | Check for delta multiplication in _physics_process() |
| Smooth movement but input feels "heavy" | Over-interpolation | Check if both manual and built-in interpolation are active |
Step-by-Step Resolution Path
1. Verify Logic Placement
The most common cause of jitter is placing move_and_slide() or velocity calculations inside _process(). Because _process() runs every frame (variable delta), it conflicts with the fixed-step nature of the physics engine.
- Action: Move all
CharacterBody2DorCharacterBody3Dmovement logic into_physics_process(delta). - Risk: Moving logic to
_physics_process()without interpolation can make the movement look stuttery on monitors with refresh rates higher than 60Hz.
2. Enable Built-in Physics Interpolation
Godot 4 provides a native way to smooth the gap between physics ticks and render frames by interpolating the transform of physics bodies.
- Navigate to Project > Project Settings.
- Enable Advanced Settings (top right toggle).
- Go to Physics > Common.
- Set Physics Interpolation to
On.
This tells Godot to automatically calculate the visual position of the body between the last two physics states, eliminating the jitter without requiring manual code.
3. Audit Delta Multiplication
When using move_and_slide(), Godot automatically applies delta to the velocity. If you manually multiply your velocity by delta before calling the function, your character will move significantly slower than intended and may exhibit precision-based jitter.
# INCORRECT: Double-applying delta
func _physics_process(delta):
velocity = direction * speed * delta
move_and_slide()
# CORRECT: move_and_slide handles delta internally
func _physics_process(delta):
velocity = direction * speed
move_and_slide()
Comparison: Manual vs. Built-in Interpolation
Before built-in interpolation, developers often manually smoothed positions in _process(). Here is why the built-in approach is preferred in Godot 4:
| Method | Implementation Effort | Performance Impact | Behavior |
|---|---|---|---|
| Manual (Lerp in _process) | High (Requires custom variables) | Moderate | Can cause "floaty" movement if not tuned. |
| Built-in Interpolation | Low (Project Setting) | Low | Precise visual tracking of physics state. |
Verification and Limitations
To verify the fix, open the Debugger > Monitors tab and observe the FPS versus the Physics FPS. If the Physics FPS is stable (e.g., 60) and the FPS is higher (e.g., 144), the movement should now appear fluid.
Limitations:
- Input Lag: Physics interpolation introduces a tiny amount of visual lag (usually one physics tick) because the renderer is interpolating between two known past states.
- Custom Transforms: If you are manually setting the
global_transformof a physics body every frame instead of using velocity, interpolation may not apply correctly.
Rollback Procedure
If enabling interpolation causes visual artifacts or unacceptable input lag:
- Return to Project Settings > Physics > Common.
- Toggle Physics Interpolation to
Off. - Restart the scene to clear the interpolation cache.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.