Skip to content
← Back to Blog 3d-modeling

Game Asset Folder Structure and Naming Conventions: The Complete Pipeline Organization Guide for Unity, Unreal Engine 5, and Godot 4

By BitSoul3D6 min read1,397 views

A disorganized asset pipeline is a hidden tax on every hour you spend in production. You waste time hunting for the right mesh, importing the wrong texture version, or untangling a merge conflict caused by inconsistent naming. Professional studios enforce strict folder structures and naming conventions from day one — and once you adopt the same habits, your solo or team projects will move significantly faster.

Game Asset Folder Structure and Naming Conventions: The Complete Pipeline Organization Guide for Unity, Unreal Engine 5, and Godot 4

This guide covers the universal principles behind clean asset organization, engine-specific folder layouts for Unity, Unreal Engine 5, and Godot 4, and the naming convention standards that prevent the most common pipeline headaches. Whether you're building from scratch or cleaning up an existing project, you can implement these patterns immediately.

Why Organization Kills (or Saves) Your Game Project

Most developers discover the cost of poor organization at the worst possible moment: mid-crunch, when a missing texture reference crashes a build or the wrong LOD version ships to QA. The underlying cause is almost always the same — assets were added to the project incrementally with no consistent system, and the folder tree became a graveyard of ambiguously named files.

Clean organization solves three concrete problems. First, it reduces search time — with a logical structure, any team member can find any asset in under ten seconds without relying on memory or asking colleagues. Second, it prevents version conflicts — when file names encode their purpose, format, and variant, accidental overwrites become obvious before they happen. Third, it enables automation — import scripts, build pipelines, and CI/CD tools can only reliably process assets when naming and structure are predictable.

The payoff compounds. A project that starts organized stays organized because the structure itself communicates intent. New contributors onboard faster, refactoring is less risky, and the BitSoul marketplace assets you drop into the project slot cleanly into the existing hierarchy rather than creating orphaned folders.

The Universal Folder Structure for Game Assets

Regardless of engine, a good asset folder structure separates source assets (editable originals) from runtime assets (engine-ready, imported files). This distinction is the foundation of every professional pipeline.

The Universal Folder Structure for Game Assets — illustrated

A recommended top-level layout for any project:

/Assets
  /Characters
    /Player
      /Meshes  /Textures  /Materials  /Animations  /Rigs
    /NPC_Guard ...
  /Environment
    /Props  /Modular  /Terrain
  /VFX          (particles, shaders)
  /Audio        (SFX, music)
  /UI           (icons, fonts)
  /Source
    /Blender    <- .blend working files
    /Substance  <- .spp projects
    /Photoshop  <- .psd layered textures

The /Source folder is critical and often missing from beginner projects. Keeping editable source files inside the project repo (tracked separately with Git LFS) ensures the whole team can re-export if formats change or target specs are updated. Runtime engine formats go in their engine-specific folders; source originals stay in /Source.

Key rules to enforce across all engines: never mix source and runtime files in the same directory; group by asset type within a subject (Characters/Player/Meshes), not by file extension across the project; and keep folder depth to 4-5 levels maximum. Deeper hierarchies become harder to navigate and can trigger path-length issues on Windows.

Naming Convention Standards for 3D Assets

A consistent naming convention encodes asset metadata into the filename itself. The most widely adopted pattern uses prefixes to identify asset type at a glance:

PrefixAsset TypeExample
SM_Static MeshSM_Crate_Wood_01
SK_Skeletal MeshSK_Player_Male
T_TextureT_Crate_Wood_BaseColor
M_MaterialM_Crate_Wood
MI_Material InstanceMI_Crate_Wood_Damaged
A_AnimationA_Player_Run_Loop
BP_Blueprint/ScriptBP_Door_Sliding
PS_Particle SystemPS_Dust_Impact

Texture suffix convention deserves special attention because texture files multiply fast. Append the map type at the end of every texture name: T_Rock_Cliff_BaseColor, T_Rock_Cliff_Normal, T_Rock_Cliff_ORM (packed Occlusion/Roughness/Metallic), T_Rock_Cliff_Emissive. Using _ORM (or _RMA depending on your pipeline) signals channel packing at a glance and prevents importing the wrong map into the wrong material slot — a trivially preventable but surprisingly common error.

Variant numbering should always be zero-padded: _01, _02, not _1, _2. This ensures alphabetical sort order matches numerical order, which matters when scripts iterate over file lists.

Avoid spaces, special characters, and camelCase inconsistency. Use PascalCase for asset names (SM_WoodCrate_Large) and snake_case for folder names (/environment/props/crates). This hybrid is the de facto standard across Unreal Engine 5 documentation and large Unity projects alike.

Engine-Specific Folder Layouts

The universal structure above maps onto each engine with minor differences driven by how each engine handles imports and project settings.

Engine-Specific Folder Layouts — illustrated

Unity enforces a few reserved folder names that modify import behavior: Editor/ compiles scripts only for the editor; Resources/ bundles assets into the build for runtime loading by name (use sparingly; prefer Addressables); StreamingAssets/ serves files verbatim at runtime; and Plugins/ contains native libraries. A clean Unity root keeps art under Assets/Art/ (Characters, Environment, VFX), with sibling folders for Audio/, Prefabs/, Scripts/ (split into Editor/ and Runtime/), Settings/, and a ThirdParty/ folder where imported packs — including your BitSoul assets — live in their own subfolder.

Unreal Engine 5 uses its Content Browser with a /Content/ root that maps to the Content/ folder on disk. The engine generates .uasset files from source imports, so your source folder lives outside the UE project:

Content/
  Characters/
    Player/
      Meshes/  Textures/  Materials/  Animations/
  Environment/
  VFX/
  UI/
  Blueprints/
  Maps/

Keep the /Game/ prefix convention in Blueprint references (e.g., /Game/Characters/Player/Meshes/SK_Player). Avoid placing general assets directly in the root /Content/ folder; organize everything one level deeper so the top level stays navigable as the project grows.

Godot 4 uses a flat res:// virtual filesystem. Mirror the same pattern in lowercase: res://assets/ (characters, environment, vfx), res://scenes/ (levels, ui), res://scripts/, res://resources/ for .tres/.res files, and res://shaders/. Godot is case-sensitive on Linux exports — T_Crate.png and t_crate.png are treated as different files. Enforce lowercase for all Godot asset filenames to prevent platform-specific import failures on Linux servers and Android builds.

Source Control and Version Tagging

Git with Git LFS (Large File Storage) is the standard for game asset version control. Track binary assets (textures, meshes, audio) with LFS and keep text assets (scripts, scene files, shader code) in standard Git tracking.

A minimal .gitattributes for any Unity, Unreal, or Godot project:

# Binary 3D assets — LFS (extend the same line to .tga, .psd, .exr,
# .wav, .mp3, .ogg and every other binary format in your pipeline)
*.fbx filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text

For version tagging in filenames, reserve the suffix _v01, _v02 for work-in-progress source assets only — never for runtime assets that the engine has already imported. Versioning runtime filenames breaks engine references (UE5 redirectors, Unity GUIDs, Godot resource paths) and causes broken references across prefabs and scenes.

The clean approach: tag WIP source files (SK_Player_v03.blend), then strip the version when exporting the final runtime asset (SK_Player.fbx). The version lives in Git history; the runtime name stays stable.

Build Your Pipeline Once, Benefit Every Project

A well-defined folder structure and naming convention is a one-time investment with permanent returns. Document your conventions in a PIPELINE.md at the project root, enforce them in code review, and add a linter step to your CI pipeline that flags non-conforming filenames before they land in main.

The assets you source from BitSoul's marketplace arrive ready to import — clean GLB/FBX exports, PBR-ready textures, and organized structures. Use BitSoul's 3D Studio to preview any model's structure and verify naming before it enters your pipeline. Drop them into the correct subject folder, apply your prefix convention, and they integrate without friction into any pipeline you've built.

Start clean. Stay organized. Ship faster.

Related reading: game-ready asset checklist and quality gates · batch exporting assets from Blender · blender-to-UE5 export workflow.


This post is part of the Ultimate Guide to Free 3D Game Assets — BitSoul's complete reference for formats, texturing, rigging, optimization, and engine integration.


Build with real assets: grab the 98-model Character Pack on the BitSoul marketplace and drop them straight into your project.

Tags: characters

Skip the modeling — download it instead

A free BitSoul3D account gets you 2 GLB downloads every month for personal use plus 25 one-time AI Engine credits, no card required. PBR-textured GLB downloads with a full 3D preview before you buy, for Unreal, Unity, Godot or Blender — OBJ and 3D-printable STL come with any purchase or paid plan.

Browse 1,051 models — from $4.99 → or start free (2 downloads a month)