Quick answer: Godot _physics_process(delta) getting a huge delta for one frame after un-pause? The engine counts the paused time toward the resume delta. Clamp delta in code.

Player pauses for 30 seconds. On unpause, all physics objects fly across the world because velocity * delta integrates 30s of motion in one frame.

Clamp Delta

func _physics_process(d):
    d = min(d, 1.0 / 30)  # cap at 33ms
    velocity += accel * d

Caps the per-frame step to a sane maximum. Stops the catch-up disaster on resume.

Engine.physics_jitter_fix

Project Settings → Physics → Common → physics_jitter_fix smooths small spikes. Doesn’t fix multi-second resume; clamp in code for that.

Pause Mode

Use process_mode = PROCESS_MODE_PAUSABLE so physics stops during pause. The engine still passes large delta on resume; clamp regardless.

Resume Hook

On unpause, manually reset any time-based accumulators (cooldowns, timers) that shouldn’t count paused time.

Verifying

Pause / unpause sequences don’t produce visible motion spikes. Physics resumes cleanly.

“Clamp delta in physics_process. Engine doesn’t skip paused time on resume.”

Make delta-clamp a project-wide habit — tab-outs and breakpoint pauses also produce huge deltas; one cap handles them all.