Organize models and materials in the cleanest way possible

Godot Version

4.2.2

QuestionFirst of all: I’m still quite a beginner when it comes to Godot. But I still hope that you could help me with your best practices.

I’m currently developing a game in the style of “Overcooked”. I’ve now come to a point where I’m wondering how best to manage resources and organize myself.

The question relates specifically to the handling of the models and materials. I would like to have a separate material for each object. This would be the easiest. However, I’m worried that this isn’t exactly resource-saving. That’s why I try, for example, to group several objects together and share the material. For example, in my blend file “Kitchenette” there are three objects (a normal kitchenette, one with a sink and a complete and much larger kitchen island). Then I export the GLB files into individual files Kitchennette–normal.glb
Kitchennette–with-sink.glb
Kitchennette–island.glb

All three should actually use the same material, but when I copy them into a Godot folder, all textures are saved individually for each of the objects (even if the content is logically the same). In general, I wonder whether I’m putting too much stress on myself with organization and optimization. I mean, I just assume that as few materials as possible should be used.

What do you think about that? I look forward to your opinion :slight_smile:

I would definitely make sure you aren’t getting dupes of these textures every time you export separate .glb’s that happen to use the same material or texture in blender. You will want to make sure down the line that if a texture is changed (or a material) and it’s shared, that change will propagate properly.

That said, I do not know the best way to set this up in Godot besides just importing models and textures separately, and connecting the two using manually made materials, or looking for a plugin to help here, or scripting it up yourself. I think with glTF you can export the textures separately, but it seems that the whole workflow with that is WIP.

I always recommend the manual approach, at least up until you really know how the system operates and can exploit using scripts or more complex plugins, this will allow you to establish a good pipeline and organization structure that will make those next steps possible.

If you do look into going further with automation on this, is to somehow get the exports to only hold the material names or ID in Godot on the meshes and nothing more, then upon import it’d somehow find an existing material with that same name or ID. This may exist, so if you manually export your texture sets, create the materials in Godot for those, it would be much smoother.

1 Like