Quick answer: Godot ResourceLoader returning the same Resource even after the .tres file changed? Loader caches by path - load with CACHE_MODE_REPLACE or set the resource's resource_local_to_scene flag.
Edited a balance .tres file mid-playtest. Reloading the level still shows the previous values - the resource cache hit on path alone.
Use CACHE_MODE_REPLACE
var data = ResourceLoader.load(
"res://balance.tres",
"",
ResourceLoader.CACHE_MODE_REPLACE)Re-reads the file and replaces the cached entry. Default CACHE_MODE_REUSE hands back whatever was loaded first - which is what you want in production and never what you want in editor-driven iteration.
Or flag local-to-scene
For resources that should never be shared across instances, set resource_local_to_scene = true on the resource. Each scene that loads it gets its own copy.
Editor-only reload
In dev tools, wire a hotkey to ResourceLoader.add_resource_format_loader with a custom loader that always returns fresh. Toggle it off for shipping builds.
“Resource caching is what makes Godot fast - and also what makes runtime tuning maddening.”
Distinguish 'data' resources (balance, config) from 'asset' resources (textures, audio). Cache aggressively for the latter; flush often for the former.