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.