Quick answer: Godot 4 ResourceLoader.load_threaded_get_progress going backward after an asset redirect? Redirect re-counts dependencies - aggregate progress monotonically in your bar logic.

Loading screen bar moves to 60%; then back to 35%; then to 100%. Confusing UX.

Max-track progress

progress = max(progress, current)

Never decrease. Display monotonic.

Or aggregate across assets

Multiple async loads; weighted average progress; display the average.

Hide the bar during regressions

Show spinner during the regress phase; resume bar when stable. UX-friendly.

“Async progress isn't monotonic by guarantee. Smooth it for display.”

Bar logic should be defensive. Engine progress is informational; display logic is yours.

Related reading