ShintTools

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.