Production context
GDD/05-Technical/03-Content-Folder-Structure.mdVerified implementation evidence
- Not verified for this documentation pass.
Relationships
Document contract coverage
Use these required Folder Structure areas during review. The imported GDD below is canonical; items not stated explicitly remain unresolved.
- ReviewRepository Layout
- ReviewSource Assets / DCC
- ReviewExports / Interchange
- ReviewUE5 Content Layout
- ReviewOwnership Boundaries
- ReviewPlacement Rules
- ReviewMigration Rules
- ReviewExamples
Canonical GDD content
This defines the canonical layout for Content/ and the asset naming conventions. Following it from day one prevents the disorganized asset sprawl that plagues survival projects with thousands of assets.
Core principles
- Single project root folder. Everything project-specific lives under
Content/Lambeer/. This isolates our content from plugin/marketplace/engine content and makes migration and search trivial. - Organize by feature/module, not by asset type at the top level. Group assets by what they belong to (a weapon, a zombie), then by type within. This keeps related assets together.
- Consistent prefixes. Every asset uses a type prefix so type is obvious in the content browser and in references.
- No assets in the
Content/root. Nothing loose at the top level. - Mirror the code structure where it makes sense (a
Combatcode module ↔Weaponscontent area).
Marketplace/Fab and template content stays in its own folders (or under a
Content/ThirdParty/), never mixed intoContent/Lambeer/.
Top-level layout
Content/
Lambeer/ # ALL project content lives here
Core/ # global/shared gameplay assets
GameModes/ # BP_GameMode, BP_GameState (BP children of C++)
Player/ # BP_PlayerController, BP_PlayerState, BP_GameInstance
Input/ # Enhanced Input: IMC_*, IA_*
Data/ # global DataTables/curves/settings (DT_*, DA_*, CRV_*)
UI/ # shared/global widgets, fonts, common textures
Characters/
Player/
MetaHumans/ # imported MetaHuman assets (per MetaHuman pipeline)
Animation/ # ABP_*, AM_*, BS_* for the player
Blueprints/ # BP_PlayerCharacter (child of ALambeerCharacter)
Materials/ # player-specific M_/MI_
Zombies/
Shared/ # shared zombie anims, materials, base BP
Walker/ # SK_, ABP_, BP_Zombie_Walker, materials
Runner/
Tank/
Spitter/
Bosses/
Boss_T1_<Name>/ # mesh, anim, BP, VFX, data per boss
AI/ # ST_* (StateTree), EQS_*, BP_ZombieAIController
Weapons/
Firearms/
<WeaponName>/ # SK_, anims, BP_Weapon_<Name>, DA_Weapon_<Name>
Melee/
<WeaponName>/
Attachments/ # optics, mags, muzzles
Shared/ # shared weapon VFX, ammo meshes, decals
Items/
Resources/ # wood, stone, metal, scrap (SM_, T_, DA_Item_*)
Consumables/ # food, water, medical
BuildingItems/ # placeable-piece items (the deployers)
Data/ # DA_Item_*, DT_LootTables, DT_Recipes
Building/
Pieces/ # foundation, wall, floor, ceiling (SM_ + BP_Build_*)
Deployables/ # door, storage, crafting stations, traps
Materials/ # tier materials (twig/wood/stone/metal/armored)
Crafting/
Stations/ # workbench, campfire, fabricator (BP_ + DA_)
Data/ # DT_Recipes, DA_Blueprint_* (recipe unlocks)
World/
Maps/
L_MainWorld/ # World Partition persistent level (+ external actors)
L_MainMenu/
L_Dev_Sandbox/ # greybox/test maps
Environment/
Meshes/ # SM_ environment props/architecture (Nanite)
Materials/ # M_/MI_ environment
Foliage/
Decals/
Lighting/ # sky/time-of-day; rain weather (wetness: Gameplay/11-Wetness-and-Rain)
POIs/ # reusable POI building blocks / level instances
Vehicles/
<VehicleName>/ # SK_, BP_Vehicle_<Name>, DA_Vehicle_<Name>, materials
AI/ # shared AI assets not tied to one enemy (if any)
VFX/
Niagara/ # NS_*, NE_*
Materials/ # M_FX_*
Audio/
SFX/ # SW_* (sound waves), SC_* (cues / metasounds)
Music/
Attenuation/ # ATT_*
Mixes/ # SCLASS_/SMIX_
UI/
HUD/ # WBP_HUD, WBP_StatusBars, WBP_Compass
Menus/ # WBP_MainMenu, WBP_Settings, WBP_ServerBrowser
Inventory/ # WBP_Inventory, WBP_Crafting, WBP_Container
Building/ # WBP_BuildMenu
Common/ # reusable widgets, styles, fonts, icons (T_UI_*)
Cinematics/ # (optional) intro/level sequences
Developers/ # engine default: personal sandbox/test (keep)
ThirdParty/ # marketplace/Fab content kept isolated (optional)
Asset naming conventions
Pattern: Prefix_AssetName_Variant (PascalCase, no spaces).
| Asset type | Prefix | Example |
|---|---|---|
| Blueprint class | BP_ |
BP_PlayerCharacter |
| Blueprint (data-only/struct) | BP_ / BPS_ |
BPS_ItemState |
| Widget Blueprint | WBP_ |
WBP_Inventory |
| Animation Blueprint | ABP_ |
ABP_Player |
| Anim Montage | AM_ |
AM_Reload_Rifle |
| Anim Sequence | AS_ |
AS_Idle |
| Blend Space | BS_ |
BS_Locomotion |
| Skeletal Mesh | SK_ |
SK_Zombie_Walker |
| Skeleton | SKEL_ |
SKEL_Zombie |
| Static Mesh | SM_ |
SM_Wall_Wood |
| Material | M_ |
M_Building_Metal |
| Material Instance | MI_ |
MI_Building_Metal_Damaged |
| Material Function | MF_ |
MF_Detail |
| Texture | T_ |
T_Wall_Wood_BC |
| Niagara System / Emitter | NS_ / NE_ |
NS_MuzzleFlash |
| Data Asset | DA_ |
DA_Weapon_AK |
| Data Table | DT_ |
DT_LootTables |
| Curve | CRV_ |
CRV_DamageFalloff |
| Sound Wave / Cue / MetaSound | SW_ / SC_ / MS_ |
SC_Gunshot_Rifle |
| Attenuation | ATT_ |
ATT_Gunfire |
| Input Mapping Context | IMC_ |
IMC_Default |
| Input Action | IA_ |
IA_Fire |
| StateTree | ST_ |
ST_Zombie_Walker |
| Level / Map | L_ |
L_MainWorld |
| Level Sequence | LS_ |
LS_Intro |
| Texture suffixes | _BC/_N/_ORM/_M etc. |
T_Barrel_N (normal) |
Conventions & rules
- Folders: PascalCase, no spaces. Group by feature, then type.
- No loose assets in
Content/or feature roots — always in a typed subfolder. - One-way references: lower-level/shared content (Core, Shared) must not depend on higher-level feature content. Avoid cross-feature reference cycles.
- Migrate template assets out of the way (the existing
ThirdPerson,Variant_*,LevelPrototypingfolders are template content — removeVariant_*; reuse/relocateInput/Charactersonly if useful, otherwise replace underLambeer/). See 05-Project-Setup-Steps.md. - Collections (the existing
Collectionsfolder) may be kept for editor organization but are not authoritative structure.
This structure is the standard to enforce in code review and asset review.