Unreal Engine Naming Convention Guide
The goal of this document is to share my internal naming conventions with the community as used by the Action Roguelike GitHub project and the Unreal Engine C++ Course to give everyone something to start out with. Using and getting comfortable with a naming convention is essential before your projects grow beyond thousands of files.
First consider how you are accessing your assets. The Content Browser in Unreal Engine has powerful filter features making pre-fixes and suffixes less critical compared to older Unreal Engine editions. However, this same level of filtering doesn’t apply to the simpler drop-down selection UI for picking class variables, etc. The same can happen when logging asset names in which ‘assetName something error’ occurred, bad naming can make it difficult to track down the origin.
Note: The most complete style guide is available on GitHub by Allar. Allar’s guide has a ton of depth and additional information you can apply as you see fit.
C++ Coding Standards
Epic has an official C++ Coding Standards page that’s worth a read.
Splash Damage has its own extension of the Epic C++ Coding Standard on GitHub. It is well laid out in SplashDamageCodingStandard.h and SplashDamageCodingStandard.cpp.
General Naming Rules
- All names in English.
- Basic asset dependencies should be in the same folder. (except for shared assets)
- This primarily applies to simple structures such as Meshes, Materials and Textures
- Folder names such as Meshes, Textures are redundant and require more navigation.
- Asset type determines prefix.
- Blueprint is BP_AssetName
- Certain types (eg. textures) use a suffix to specify sub-types.
- T_Grass_N for normal maps
- Use underscores to split type from identifier and numeric values.
- SM_DoorHandle
- Use numeric values with 2 digits for generic variants.
- SM_Pipe_01
Assets generally follow the following file structure as described on Epic’s own naming convention doc:
[TypePrefix]_[BaseName]_[Descriptor]_[OptionalVariant]
Naming Examples
- SM_Pipe_Short
- SM_Pipe_Long
- T_Pipe_Long_D
- T_Pipe_Long_N
Content Browser Tips
You can include the asset type to your search query. eg. searching “player material” will search for assets named “ship” that may be of type material. This is powerful to nail down specific assets within a group of similar names. (Make sure “Search Asset Class Names” is enabled in the View Options of your Content Browser).
Use Ctrl+P in the editor/viewport to open the Asset Panel to quickly search for assets without using the Content Browser. This is incredibly powerful when you have properly named your assets! So long as I roughly remember the asset name or partial name, I use this more often than the content browser.
Content Directories
All game content is placed in a sub-folder. eg. Content/MyGame/UI/… This helps in migrating between projects and splitting your content from marketplace packs that are added like Content/MyMarketplacePack/…
When testing out local assets that are not ready to be used by other members of your team (and never should be) you can put them in your Developer-folder. You can enable this folder in the view options of the Content Browser. These assets will not show up in searches by other developers.
| Sub-Folder | Description |
|---|---|
| Content/MyGame | Top-level folder for all game-specific content. All rows are relative to this folder. |
| ../AI | |
| ../Art | All art content such as meshes, textures, materials (except for UI/FX) |
| ../Audio | |
| ../Core | |
| ../Input | Enhanced Input |
| ../Characters | |
| ../Characters/Animations | |
| ../Effects | |
| ../Effects/Flares | Example: Systems, materials and textures specific to all types of Flares. |
| ../Maps | Contains all levels including dev-only. |
| ../Maps/Dev/… | Shared Dev-only maps that are not cooked/packaged. |
| ../UI | |
| ../UI/Materials | UI-specific materials. |
| ../UI/Fonts | |
| ../Actions | Example of Actions, similar to GAS Abilities. |
| ../Expeditions | Example of major feature that deserves its own top-level folder. Mainly holds Blueprints. |
Asset Naming
Common Types
For this list I stick mainly to the commonly used types and those that are used in the C++ Course material and my open-source projects on GitHub. They don’t suffer much from Epic’s own Naming Convention Document.
| Asset Type | Prefix | Comment |
|---|---|---|
| Blueprint | BP_ | |
| Blueprint Interface | BPI_ | |
| Enumeration | E | Same as in C++ (enum EWeaponType) |
| Material | M_ | |
| Material Instance | MI_ | |
| Material Function | MF_ | |
| Material Parameter Collection | MPC_ | |
| Texture | T_ | Has suffix/variants for texture types. See suffixes table below. |
| Static Mesh | SM_ | |
| Skeletal Mesh | SK_ | |
| Niagara System | NS_ | |
| Vector/Float/Color Curve | Curve_ | |
| Camera Shake | CamShake_ | |
| UMG Widget | Widget_ |
Physics
| Asset Type | Prefix | Comment |
|---|---|---|
| Physics Material | _PhysMat | |
| Physics Asset | PHYS_ |
Animation
| Asset Type | Prefix | Comment |
|---|---|---|
| Animation Blueprint | _AnimBP | |
| AnimMontage | _Montage | |
| Skeleton | _SKEL | |
| BlendSpace | BS_ |
### Audio
| Asset Type | Prefix | Comment |
|---|---|---|
| Sound Wave | S_ | Include sub-category like S_UI_ or S_Combat_ |
| MetaSound Source | MSS_ | |
| Attenuation | Att_ |
Suffixes & Variants
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 Ambient Occlusion, _AO
Animation
These types have no prefix. These names are pretty standard to how the engine automatically names them on import / creation.
| Type | Suffix | | — | — |
Example: Lyra Starter Game
Lyra Starter Game is an official sample project that shipped with the release of Unreal Engine 5.0. They use the Gameplay Ability System which introduces certain asset types and their own naming. Here are some of the prefixes they use in the project.
| Prefix | Asset Type |
|---|---|
| GA_ | Gameplay Abilities |
| GE_ | Gameplay Effects |
| GCN_ | Gameplay Cue Notifies (UGameplayCueNotify) |
| AbilitySet_ | Ability Set |
| IA_ | Input Action (Enhanced Input) |
| InputData_ | (Lyra) Input Config |
| W_ | Widget (Blueprint) UI |
| B_ | All other blueprints such as pawn types, item spawners, etc. |