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

Prefixes

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.

Suffixes

Textures

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

Animation

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.

9 Comments

  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?

Leave a Reply