Project Structure
The usual
Generally, the project structure I’ve seen most is as follows:
addons
(third party plugins and assets)
assets
art
sprites
tiles
backgrounds
ui
vfx
audio
music
sfx
resources
scenes
(.tscn files)
scripts
(.gd files)
shaders
What winds up happening is the scripts wind up in the scenes folder and we wind up refactoring eventually which can get messy.
An alternative
I suggest a scene oriented approach instead:
addons
(third party godot stuff)
vendor
(third party generic stuff [like kenney assets or something])
models
(some_model)
(model.blend)
textures
(model_albedo.png)
(model_normal.png)
(model_roughness.png)
music
sfx
textures
resources
(resource_type)
(some_resource.tres)
scenes
(example_scene_folder)
(example.tscn)
(example.gd)
(inherited_scene)
(inherited_example.tscn)
(inherited_example.gd)
(sub_scene [as in, a scene only used in example_scene])
(sub_scene.tscn)
(sub_scene.gd)
singletons
(global.gd)
types
(non_resource_type.gd)
shaders
The goal here is to take advantage of godot’s default script placement (in the folder of the screen it’s being instantiated in), so that its default will place it with the scene it’s related to. Additionally, this’ll mean scenes with a lot of scripts specific to it will be placed in its scene folder, which will contain its messiness.