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 15, 2022

    Godot Engine 4 reaches beta

    Just a couple of days ago, Godot 4.0 alpha 17 was announced. Today, Godot Engine 4.0 beta 1 was released. Be sure to check out the announcement. There are lots of improvements across the board; rendering, lighting, physics and navigation, animation, and scripting.

  • February 17, 2025

    Inventory System 2 Alpha 2 available

    This release contains the new Godot editor integrations. It offers an Item Library bottom panel that makes it easier to manage your inventory item types, and an inspector plugin that lets you edit items in a GGItemCollection. This also reduces the need for manually creating GGItemData resources, which simplifies item management at design time significantly. …

  • September 29, 2022

    Audio Manager to handle the loading of sound effects in bulk

    Years ago I purchased a game dev bundle on HumbleBundle. Part of that was a sound library called Pro Sound Collection. It’s pretty comprehensive, whether RPG or FPS, there are sounds for a ton of use cases. I might as well use them for something. Luckily for me, the sound collection is pretty well organized. …

  • October 30, 2023

    Super Godot Galaxy Concept

    Hugo-Dz created Super Godot Galaxy: https://github.com/Hugo-Dz/super-godot-galaxy, which he announced in this Reddit post. It uses the 3D Starter Kit from Kenney and shows how to achieve the effect of applying gravity toward the center of a small spherical planet.

    © 2026 GoGoGodot.io. All rights reserved.