Go, Go, Godot!
  • 0

Update all resources after modifying a resource class

March 11, 2025

Godot’s resources are quite powerful. However, modifying a resource class doesn’t automatically update any corresponding .tres files, unless you happen to edit a scene that uses that resource in some way. This doesn’t impact runtime behavior — the game still runs as expected. But it can impact version control and result in a messier diff where seemingly unrelated files are modified, which increases the chance of merge conflicts.

A simple way to address this is to update all resources by re-saving them after modifying a resource class and check everything in with the same git commit. Godot doesn’t have that functionality built in, but it’s easy to create a script to do this.

@tool
extends EditorScript

## Crawls the entire codebase, loads, and re-saves every resource.
## Run this script with CTRL/CMD+SHIFT+X.


func _run() -> void:
	for filename in _build_file_list("res://", "tres", 20):
		var res: Resource = ResourceLoader.load(filename)
		ResourceSaver.save(res, res.resource_path)
	

static func _build_file_list(
	path: String, 
	suffix: String, 
	recursion_depth: int
) -> Array[String]:
	var dir = DirAccess.open(path)
	if not dir:
		push_error("An error occurred when trying to access path: %s" % [path])
		return []

	var files: Array[String]
	dir.list_dir_begin()
	var file_name = dir.get_next()
	while file_name != "":
		if dir.current_is_dir() and recursion_depth:
			var sub_dir: String = "%s/%s" % [path, file_name]
			files.append_array(_build_file_list(sub_dir, suffix, recursion_depth - 1))
		elif file_name.ends_with(suffix):
			var full_path = "%s/%s" % [path, file_name]
			files.append(full_path)
		file_name = dir.get_next()

	return files

gitgodotresourcesversion control
Posted in Godot.
Share
PreviousInventory System 2 Alpha 3 available
NextInventory System 2 Alpha 2 available

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Related Posts

  • Godot Game Engine Logo
    September 14, 2023

    Building UIs in Godot 4

    Here’s a collection of tutorials that are helpful if you’re new to using Control and Container nodes to create UIs in Godot 4. The Game Dev Artisan video covers creating a simple UI with a reload indicator for a simple 2D tank game: Clear Code’s 11+ hour Ultimate Introduction to Godot 4 has a chapter …

  • March 20, 2025

    Inventory System 2 Alpha 4 available

    This release finally uses Godot Engine 4.4. It adds the GGCraftingSystem singleton and updates the GGInteractable2DStrategyCrafting class to use it. The crafting editor nodes now have prefixes, which makes it much easier to search for specific recipe or item nodes in larger crafting libraries. Some syntactic sugar was added as well. You can now easily …

  • January 15, 2025

    Inventory System 2 Alpha 1 available

    The first alpha of the inventory system v2 is now available. For v2, a lot of refactoring work has been done with a focus on improving the developer experience. As part of that, the naming convention of the addon classes was streamlined and is more consistent now. The GDScript documentation comments have been improved significantly …

  • August 2, 2022

    Launching Godot Games on Steam Deck from the command line via Remote Shell

    For some reason, my Godot game would no longer launch on the Steam Deck. I could hear it running as if it were running in the background, but the screen kept showing the Steam Deck’s UI. Since it’s all Linux I figured it should be possible to just drop to the command line and launch …

    © 2026 GoGoGodot.io. All rights reserved.