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 stuff)
art
	sprites
	tiles
	backgrounds
	ui
	vfx
audio
	music
	sfx
resources
scenes
	(example_scene_folder)
		(example.tscn)
		(example.gd)
scripts
	(global_script.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.

Another benefit, is it’ll be very clear which scripts are actually in use and not just leftover from some deleted scene, as if we delete a scene, we’d delete its folder, and all scripts related to it.

Additionally, this makes art and audio top level, there’s not a massive benefit to stuffing them into assets, they deserve to be first class citizens!

The scripts folder that does exist here will be specifically for global, autoload singleton scripts only.