Unity Project Folder Structure¶
Audience: Everyone who creates or imports assets — artists, technical artists, engineers, designers.
Owners: Emman (Lead Artist) owns all art-asset naming (materials, shaders, meshes, textures, VFX). Amera (Tech Lead) owns the engineering boundary (prefab names, ScriptableObject names, folder structure that Addressables depends on).
Status: Living.
Main Folder Structure¶
Assets/
├── _Project/
│ ├── Core/
│ ├── Features/
│ ├── Shared/
│ ├── UI/
│ ├── Networking/
│ └── Bootstrap/
├── _WarforgeEngine/
├── ThirdParty/
├── Plugins/
└── Editor/
Key Points¶
Anything project related should be inside _Project folder making it clear that all scripts, files, etc. created for the project execution will be inside that folder. Any third partner, plugin and editors we build should be outside the project folder.
Bootstrap¶
Responsible for initialize global services, connect network, load first scene, setup our DI flow.
Bootstrap/
├── GameBootstrap.cs
├── DependencyInstaller.cs
├── SceneLoader.cs
├── ServiceRegistry.cs
└── AppStateMachine.cs
Core¶
Responsible for global systems
Core/
├── Events/
│ ├── GameEventBus.cs
│ └── EventTypes.cs
├── State/
│ ├── GameState.cs
│ └── SessionState.cs
├── Time/
│ ├── GameTimeService.cs
│ └── EventTypes.cs
├── SaveSystem/
│ ├── SaveManager.cs
│ └── SaveData.cs
├── Utilities/
│ ├── Logger.cs
│ └── MathUtils.cs
└── Extensions/
_Project folder structure¶
Everything should be organized by feature. Some of the possible features: - Heroes - Combat - Alliance - City - WorldMap - Economy - Pets - Artifacts - Quests - Behemoths
Assets/
└── _Project/
├── Heroes/
├── Combat/
├── Alliance/
├── City/
├── Economy/
├── Pets/
├── Artifacts/
├── Quests/
└── Behemoths/
├── Core/
├── Features/
├── Shared/
├── UI/
├── World/
├── Networking/
└── Bootstrap/
Inside each feature we would have a structure of DataProviders, Services, Controllers, Views, Model
Let’s see an example using Heroes¶
Assets/
└── _Project/
└── Heroes/
├── DataProviders/
├── Services/
├── Controllers/
├── Views/
└── Models/
Art & Asset Folder Structure¶
Two zones, because shared and feature-specific assets organize differently:
Assets/_Project/
_Shared/
Materials/
Opaque_TrimSheets/ M_GEN_Metal_Trims … (grouped by master shader)
Opaque_Tileable/
Transparent_Masked/
Shaders/ SH_Opaque_TrimSheets …
Buildings/
Barracks/ PF_KL_Barracks_Lvl03, SK_, SO_KL_BarracksDefinition …
Units/
Factions/
KnightsOfLight/ faction-exclusive art
UI/ Environment/ Audio/ VFX/
Generic shared materials live in _Shared, grouped by master shader because that's the perf-relevant grouping. Feature-specific assets live with their feature. Third-party packages stay in Plugins/ and are never renamed.