Unreal Engine asset naming conventions: prefix reference and how to enforce them
Most Unreal Engine 5 projects name assets as Prefix_BaseName_Variant_Suffix, such as SM_Crate_01 or T_Brick_N. The Dousen style combines Epic's recommended prefixes with the Allar structure. Dousen enforces it from one YAML document per project, in every DCC before export and again when the DousenUE plugin imports.
- The common pattern is
Prefix_BaseAssetName_Variant_Suffix, for exampleSM_Crate_01. - The Dousen style uses Epic's prefixes, so
SM_for a Static Mesh. The Allar style guide usesS_; Dousen ships that as a separate preset. - Texture suffixes name the channel, for example
_Dfor base color and_Nfor normal. - Dousen stores the prefixes in one version 3 YAML document per project and checks them in every DCC before export.
Epic's recommendation is [AssetTypePrefix]_[AssetName]_[Descriptor]_[OptionalVariantLetterOrNumber]. Epic also says the convention is only a recommendation and that your project's requirements take precedence. The tables below are the Dousen style: Epic's prefixes with Allar's structure. That means the PascalCase Prefix_BaseAssetName_Variant_Suffix pattern and texture suffixes of the community UE5 style guide by Allar (MIT). The Dousen (default) preset in the portal ships the DCC-created types (SM_, SK_, A_, SKEL_, Rig_, T_ with channel suffixes, MI_, HDA_, VAT_). Engine-only types such as BP_ and WBP_ are listed here for reference and are not managed by Dousen conventions. Where Allar's own prefixes differ, the text says so.
What are the prefixes for each asset type?
Meshes and physics
| Asset type | Prefix | Example |
|---|---|---|
| Static Mesh | SM_ | SM_Crate_01 |
| Skeletal Mesh | SK_ | SK_Guard |
| Skeleton | SKEL_ | SKEL_Humanoid |
| Physics Asset | PHYS_ | PHYS_Guard |
| Morph Target | MT_ | MT_Smile |
Materials and textures
| Asset type | Prefix | Example |
|---|---|---|
| Material | M_ | M_Concrete |
| Material Instance | MI_ | MI_Concrete_Wet |
| Material Function | MF_ | MF_Triplanar |
| Material Parameter Collection | MPC_ | MPC_Weather |
| Post Process Material | PP_ | PP_Outline |
| Physical Material | PM_ | PM_Gravel |
| Texture | T_ | T_Concrete_D |
| Texture Cube | TC_ | TC_Sky |
| Render Target | RT_ | RT_Minimap |
Animation
| Asset type | Prefix | Example |
|---|---|---|
| Animation Sequence | A_ | A_Guard_Walk |
| Animation Blueprint | ABP_ | ABP_Guard |
| Animation Montage | AM_ | AM_Guard_Attack |
| Blend Space | BS_ | BS_Locomotion |
| Aim Offset | AO_ | AO_Rifle |
| Level Sequence | LS_ | LS_Intro |
Blueprints, data, AI, UI and effects
| Asset type | Prefix | Example |
|---|---|---|
| Blueprint | BP_ | BP_Door |
| Widget Blueprint | WBP_ | WBP_MainMenu |
| Blueprint Interface | BPI_ | BPI_Interactable |
| Blueprint Function Library | BPFL_ | BPFL_Math |
| Data Table | DT_ | DT_Weapons |
| Behavior Tree | BT_ | BT_Patrol |
| Blackboard | BB_ | BB_Patrol |
| AI Controller | AIC_ | AIC_Guard |
| Font | Font_ | Font_Title |
| Particle System (Cascade) | PS_ | PS_Sparks |
| Niagara System | NS_ | NS_Sparks |
Some assets only take a suffix. Allar's guide uses _P for a persistent level, _Audio, _Lighting, _Geo and _Gameplay for sublevels, _Cue after A_ for a Sound Cue, and _SC for a Sound Concurrency. Epic's page also lists Niagara asset prefixes under FXS_ (system), FXE_ (emitter) and FXF_ (function). Pick one scheme for effects and keep it. Both source pages carry longer lists than this one, covering AI, media, Paper 2D and more.
What suffixes do textures and meshes use?
| Texture content | Suffix | Example |
|---|---|---|
| Diffuse, albedo, base color | _D | T_Brick_D |
| Normal | _N | T_Brick_N |
| Roughness | _R | T_Brick_R |
| Alpha, opacity | _A | T_Leaf_A |
| Ambient occlusion | _O | T_Brick_O |
| Bump | _B | T_Brick_B |
| Specular | _S | T_Brick_S |
| Emissive | _E | T_Lamp_E |
| Metallic or mask | _M | T_Rail_M |
| Packed channels | letters stacked, such as _ORM | T_Brick_ORM |
Allar's guide stacks the suffix letters of packed textures, for example _ERO for emissive, roughness and ambient occlusion. _ORM (occlusion, roughness, metallic) is the same rule applied to the common glTF-style pack. Whatever order you choose, write it down once.
For variants, use a descriptive word (_Snow) or a two-digit number starting at 01. Allar's guide notes you should never need a three-digit variant number. Neither source fixes a naming scheme for LODs, so choose one, such as _LOD0, _LOD1, and apply it everywhere.
How should the folders be organized?
Allar's guide puts all project assets under /Content/ProjectName/, uses PascalCase for every folder, allows no spaces or symbols, avoids empty folders, and avoids redundant type folders such as Meshes or Textures. Group by what the asset is, for example Characters/Common/Animations/Locomotion, so one feature's meshes, materials and textures sit together.
What breaks when names drift?
- Content Browser search and filters stop finding assets. Searching
SM_misses a mesh namedCrate_Mesh. - Renaming or moving an asset in the editor leaves a redirector behind. Redirectors pile up and have to be fixed up before a clean cook.
- Cook and chunking rules, and scripts that match on path or prefix, miss assets that don't follow the pattern.
- Reviewers can't tell a material from an instance or a normal map from a mask without opening the asset.
How do you enforce the convention?
A style guide only works if something checks it. In Dousen, a project admin writes the convention as one YAML document per project, in the web portal's Conventions tab. The current schema is version 3. Each asset type gets a prefix, optional naming.pattern and naming.max_length guard rails, and a tree of categories that can nest to any depth and add folders and name tokens. Studios that need computed rules can write the document as a Lua script instead. The Preset list offers Dousen (default), the DCC-created types of the style on this page, and UE5 Allar Style Guide with Allar's own prefixes.
version: 3
asset_types:
static_mesh:
prefix: SM
suffix: ""
naming:
pattern: "^SM_[A-Z][A-Za-z0-9]*(_[A-Za-z0-9]+)*$" # PascalCase, single underscores
max_length: 64
categories:
Props:
folder: true
subcategories:
Weapons:
folder: true
prefix: Wep
Dousen checks names in every supported DCC before export, with the naming.convention rule, and the DousenUE plugin builds the asset's name and Content Browser folder from the same document when it imports. A mesh that violates its pattern is blocked at the DCC before it reaches Perforce (in Houdini, run Dousen: Validate first; its export tools don't block). Existing Unreal assets aren't renamed when you change a rule. See Naming conventions for the full keyword reference and Unreal Engine for the import side.
To test a name without installing anything, use the online naming checker.
Sources
- Epic Games, Recommended Asset Naming Conventions in Unreal Engine projects
- Allar, UE5 Style Guide (MIT license)
Related
- Naming conventions and Unreal Engine in the documentation
- Naming checker
- What to validate in an FBX before Unreal imports it
Dousen is free during the studio beta, with access by request, and free forever for teams of up to 5 users. Request early access.