Folder structure for large game in Godot 4.5

Godot Version

4.5

Question

I asked ChatGPT to suggest a folder structure for a large game in Godot 4.5 and it suggested this:

│
├── addons/                  # Godot plugins (kept separate from your game logic)
│
├── assets/                  # All raw visual/audio assets
│   ├── textures/
│   │   ├── characters/
│   │   ├── environment/
│   │   └── ui/
│   ├── models/
│   │   ├── characters/
│   │   ├── environment/
│   │   └── props/
│   ├── animations/
│   │   ├── characters/
│   │   └── cutscenes/
│   ├── audio/
│   │   ├── music/
│   │   ├── sfx/
│   │   └── voices/
│   └── fonts/
│
├── scenes/                  # All Godot scene files (.tscn)
│   ├── main/                 # Main menu, loading, etc.
│   ├── world/                # Level/world scenes
│   │   ├── level_01/
│   │   ├── level_02/
│   │   └── shared/           # Reusable level parts (terrain chunks, lighting setups)
│   ├── characters/
│   ├── props/
│   ├── ui/
│   └── effects/              # Particle scenes, decals, etc.
│
├── scripts/                  # GDScript or C# scripts
│   ├── core/                  # Core systems (game manager, save/load, etc.)
│   ├── characters/
│   ├── ai/
│   ├── ui/
│   ├── gameplay/              # Mechanics scripts (weapons, vehicles, items)
│   └── world/                 # Level-specific logic
│
├── materials/                # .tres material resources
│   ├── characters/
│   ├── environment/
│   └── props/
│
├── shaders/                  # .shader files for custom rendering
│
├── prefabs/                  # Reusable scene instances (buildings, vehicles, props)
│
├── ui/                       # UI layouts, icons, and theme resources
│
├── lighting/                 # Light setups, HDRIs, GI probes
│
├── data/                     # Config files, JSON, CSV for game data
│
├── tests/                    # Experimental or debug scenes/scripts
│
└── project.godot             # Godot project file

Is this in the ballpark or would you guys structure it differently for a 3D game?

I’d keep textures next to their relevant models, so merge textures and models. And Scripts next to their relevant scenes. But it’s all a matter of opinion and depends on the project.

I’m gonna do large levels with, at first it seems, unique buildings and enemies for each level. So I’m wondering if I should have the level as a folder and sub-folders into each one.

Fear it might get more complex than minestrone soup later on. :slight_smile:

Personally, coming from a web development background, I tend to organise things by type. The pitfall of organising things that belong together, is that eventually you might run into reusing things. Then, where would you look for your files?