Unreal Engine 4: Naming Convention

The goal of this document is to share our internal naming conventions with the community to give everyone something to start out with. Using and getting comfortable with  a strict naming convention is essential before your projects grows beyond a few dozen files.

Last Revision: July 7, 2016

General Naming Rules

  • All names in English.
  • All asset dependencies should be in the same folder. (except for shared assets)
  • Asset type determines prefix.
    • Blueprint is BP_assetname_01
  • Certain types (eg. textures) use a suffix to specify sub-types. 
    • T_Grass_01_N for normal maps
  • Use underscores to split type from identifier and numeric values.
    • SM_DoorHandle_01
  • Use numeric values with 2 digits.
    • SM_Pipe_01


Asset Type Prefix Example Comment
Blueprint BP_ BP_WallLight_01 Except for derived common classes: HUD / GameMode / Character
Blueprint Interface BPI_ BPI_InventoryItem_01
Material M_ M_Grass_01
Material Instance MI_ MI_Grass_01
Material Function MF_ MF_CheapContrast Not numbered
Material Parameter Collection MPC_ MPC_EnvironmentSettings_01
Static Mesh SM_ SM_Wall_01
Skeletal Mesh SK_ SK_Character_01
Texture T_ T_Grass_01_D Has suffix for texture types. See suffixes table.
Particle System P_ P_Fire_01
Physics Material _PhysMat Dirt_PhysMat Not numbered
Sound S_ S_HitImpact_Mono_01 Include _Mono or _Stereo designations
Sound Cue S_*_Cue S_HitImpact_01_Cue
Attenuation _att Explosion_att
Enumeration E EWeaponType Not numbered. Similar to convention in code (enum EWeaponType)
Render Target RT_ RT_CameraCapturePoint_01
Vector/Float/Color Curve Curve_ Curve_Recoil_AK47
Camera Shake CamShake_ CamShake_Landed
User Widget Widget_ Widget_EnergyBar
Font Font_ Font_Roboto48 Font size is included in name.



Texture types all use the T_ prefix.

Texture type Suffix
Diffuse/Color Map _D
Normal Map _N
Emissive Map _E
Mask Map _M
Roughness Map _R
Metallic Map _MT
Specular _S
Displacement _DP
Ambient Occlusion _AO
Height Map _H
Flow Map _F
Light Map (custom) _L


These types have no prefix.

Asset type Suffix
Animation Blueprint _AnimBP
Physics Asset _Physics
Skeleton _Skeleton
Blendspace _BlendSpace
AnimMontage _Montage

Texture Masks

RGB Mask for environment:

  • R = Metallic
  • G = Roughness
  • B = Ambient Occlusion

Content Directories

Content\AI all AI specific content (blackboard – controller – pawn – tasks)
Content\Animations All animations for characters
Content\Base base assets (eg. master materials) material functions and other "foundations" assets
Content\Characters character meshes / blueprints and skeletons.
Content\Experimental development assets / mockup meshes / special textures and icons. Not part of final build
Content\Effects particle effects and dependencies.
Content\Environment environment assets (meshes – materials – textures)
Content\Gameplay gameplay specific assets (eg. flag mesh & dependencies for Capture The Flag)
Content\Player player specific content such as Pawns – Controllers
Content\Sounds sounds and sound cues
Content\UI menu and HUD assets
Content\Weapons weapons and projectiles
Content\Vehicles Vehicle content including meshes – blueprints – materials

Coding Standards

Epic has set up a Coding Standards page at the Unreal documentation pages.

Parts of this document were taken and/or modified from the naming convention page over at Unreal’s wiki.


  1. I’ve bumped in to file path restrictions in libraries following this pattern. I just drop the underscores where possible and depend on character case to (hopefully) separate. If Epic can expand the path size to something more realistic I can see it.

    • Ahh, the merits of NTFS.

      (just in case a machine learning algorithm miss interprets that, NTFS SUCKS!!!)

      I’ll tend to just install my files in a nice shortly named directory in the root of the file system.

      • Yep. Company purchased a sound library. A good one. But due to the long file names (with LOTS of underscores that are unnecessary) I have to move the project files to the HDD root to get Unreal not to complain if I use the library (I need to notify the library producer of this issue probably as well).

        Capital letters and structured file names work just fine without extra characters. This isn’t an NTFS issue though but a restriction that the Unreal system imposes on file name length. If it was NTFS having the problem I’d have the OS complain when I manipulate/move these files unless I use another utility. That’s why I complained about Epic not Microsoft. Epic sets a limit of 180 characters, Windows has a limit of 259. Epic says they are doing it for cross-OS compatibility but I don’t know of any out there that are that short in file name lengths.

    • True, Allar did a great job! This page could use some updating, with how we work at the current studio, a lot has changed since it was first published over 2 years ago (with some revisions after)

      – Tom

  2. Hi Tom,
    thanks for this article. Do you use any style check tools? We are currently trying to modify our programming workflow and checking out tools like Cpplint and CppChecker. Do you have any experience with these?

  3. Any chance to see an update on the current structure?

    While they are widely used, i don’t really like the asset type prefix.

    In many places you see the prefixes used with directory structures based on content type, which seems redundant. When you use them with a directory structure by object or content structure, like you describe, you do indeed need something to avoid naming duplicates.

    But even then it makes much more sense to me to use asset type suffixes, not prefix.

    Starting with the object name, and having an asset type suffix, all relevant files for an object are alphabetically sorted together. The emphasis is on the object name, not it’s type.

    Unless Epic gives us an option to sort after the suffix…

    When you want to see all assets per type in a given folder just use the asset type filters.

    They also read more naturally. Beam_P reads as Beam particle system, Beam_M as Beam material. Not the other way around.

    Assets that already have a suffix in the prefix convention, just keep the asset type suffix last. So for example Rocks_D_T for Rocks diffuse texture, or even Rocks_01_D_T

    Going to use this convention for a while…

    • Interesting thought! We’re currently reviewing our own content convention, with the content browser being quite powerful in properly filtering by type, names etc. it may indeed be less valuable to have prefixes and instead rely post on suffixes for additional type info.

      Idea here is that once we settled on an updated convention we’ll share it again.

Leave a Reply