Unreal Engine Asset Naming Conventions for AA Studios (2026)
A practical, enforceable naming convention for Unreal Engine projects — prefixes, folders, and how to automate validation in CI.
·8 min read
Unreal projects rot from the inside when naming is left to convention. Three contributors in, you have T_grass.png, texture_grass_01.uasset, and Grass_T.uasset all referenced from different Blueprints. Our team has audited 40+ Unreal codebases and the same five mistakes show up every time.
The baseline prefix table
Adopt the Allar/ue5-style convention as your baseline. It is the closest thing to an industry standard and your senior engineers already recognize it.
Texture T_ (T_Grass_D, _D diffuse, _N normal, _M mask, _R roughness)
Material M_ / Material Instance MI_
Static Mesh SM_
Skeletal Mesh SK_
Skeleton SKEL_
Animation Sequence A_ / Animation Blueprint ABP_
Blueprint BP_ / Blueprint Interface BPI_
Widget Blueprint WBP_
Sound Cue / Wave SC_ / SW_
Niagara System NS_ / Emitter NE_
Data Asset DA_ / Data Table DT_
Level L_
Particle System PS_Folders mirror domain, not type
Wrong: /Content/Textures, /Content/Meshes, /Content/Blueprints. This forces every artist into every folder for every commit.
Right: /Content/Characters/Hero, /Content/Environments/Forest, /Content/UI/MainMenu. Type is already encoded in the prefix, so the folder can encode what gameplay system this asset belongs to. This is what makes git blame useful.
What the convention does NOT solve
- Drift — six months in, three people will forget rules and nobody enforces it in PR review.
- Refactors — renaming 8,000 assets after a convention change is a two-week task done by hand.
- Marketplace assets — every pack you buy violates your convention by default.
Convention without automation is wishful thinking. You need a CI step that fails the build when an asset doesn't match.
Automating with the Naming Bot
ShintTools' Naming Bot runs locally in the editor and as a pre-commit hook. It parses your .uasset headers, matches against your rules file, and emits a structured report:
{
"violations": [
{ "path": "/Game/FX/grass_particle.uasset",
"expected_prefix": "PS_", "rule": "particle_system_prefix" }
],
"summary": { "scanned": 4821, "violations": 17 }
}Free plan covers 500 scans/month, enough for a small team. Indie and Studio plans add custom rule packs and CI integration.
Migration playbook
- Snapshot your repo before any rename — Perforce checkpoints or a git tag.
- Run the Naming Bot in dry-run mode to count violations before fixing.
- Fix highest-traffic folders first (Characters, Environments) — those have the most cross-references.
- Add the rule check to PR validation only after baseline is clean.
Don't try to fix all 4,000 violations in one PR. Engine renames are referenced by FName across packages — small batches are safer than one big-bang commit.