Asset Naming Conventions - Team-Swamp/CaptureGraafsmeer GitHub Wiki
Everything is typed in English.
Most things are prefixed with the prefix generally being an acronym of the asset type followed by an underscore.
[AssetTypePrefix]_[AssetName]_[Descriptor]_[OptionalVariantLetterOrNumber]
AssetTypePrefixidentifies the type of Asset, refer to the table below for details.AssetNameis the Asset's name.Descriptorprovides additional context for the Asset, to help identify how it is used. For example, whether a texture is a normal map or an opacity map.OptionalVariantLetterOrNumberis optionally used to differentiate between multiple versions or variations of an asset.
Asset Prefixes
This list is not exhaustive, as new features can require new Asset types. If you are using an Asset type not listed, use the existing list as a guideline for your naming convention for that Asset.
Examples based on the contentions in the table below:
M_CollectableT_Collectable_Normal
Base Asset Name
All assets should have a Base Asset Name. A Base Asset Name represents a logical grouping of related assets. Any asset that is part of this logical group
should follow the the standard of Prefix_BaseAssetName_Variant_Suffix.
Keeping the pattern Prefix_BaseAssetName_Variant_Suffix in mind and using common sense is generally enough to warrant good asset names. Here are some detailed rules regarding each element.
Prefix and Suffix are to be determined by the asset type through the following Asset Name Modifier tables.
BaseAssetName should be determined by short and easily recognizable name related to the context of this group of assets. For example, if you had a character named Calvin, all of Calvin's assets would have the BaseAssetName of Calvin.
For unique and specific variations of assets, Variant is either a short and easily recognizable name that represents logical grouping of assets that are a subset of an asset's base name. For example, if Calvin had multiple skins these skins should still use Calvin as the BaseAssetName but include a recognizable Variant. An 'Evil' skin would be referred to as Calvin_Evil and a 'Retro' skin would be referred to as Calvin_Retro.
For unique but generic variations of assets, Variant is a two digit number starting at 01. For example, if you have an environment artist generating nondescript rocks, they would be named Rock_01, Rock_02, Rock_03, etc. Except for rare exceptions, you should never require a three digit variant number. If you have more than 100 assets, you should consider organizing them with different base names or using multiple variant names.
Depending on how your asset variants are made, you can chain together variant names. For example, if you are creating flooring assets for an Arch Viz project you should use the base name Flooring with chained variants such as Flooring_Marble_01, Flooring_Maple_01, Flooring_Tile_Squares_01.
Examples
Character
| Asset Type | Asset Name |
|---|---|
| Skeletal Mesh | SK_Calvin |
| Material | M_Calvin |
| Texture (Diffuse/Albedo) | T_Calvin_D |
| Texture (Normal) | T_Calvin_N |
| Texture (Evil Diffuse) | T_Calvin_Evil_D |
Prop
| Asset Type | Asset Name |
|---|---|
| Static Mesh (01) | SM_Rock_01 |
| Static Mesh (02) | SM_Rock_02 |
| Static Mesh (03) | SM_Rock_03 |
| Material | M_Rock |
| Material Instance (Snow) | MI_Rock_Snow |
Asset Name Modifiers
When naming an asset use these tables to determine the prefix and suffix to use with an asset's Base Asset Name.
- Most Common
- Animations
- Artificial Intelligence
- Prefabs
- materials
- Textures
- Miscellaneous
- Physics
- Audio
- User Interface
- Effects
Most Common
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Level / Scene | * | Should be in a folder called Scenes. e.g. Scenes/ArtTest.unity |
|
| Level (Persistent) | _P | ||
| Level (Audio) | _Audio | ||
| Level (Lighting) | _Lighting | ||
| Level (Geometry) | _Geo | ||
| Level (Gameplay) | _Gameplay | ||
| Prefab | |||
| Material | M_ | ||
| Static Mesh | SM_ | ||
| Skeletal Mesh | SK_ | ||
| Texture | T_ | _? | See Textures |
| Particle System | PS_ |
3D Models FBX Files
PascalCase
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Characters | CH_ | ||
| Vehicles | VH_ | ||
| Weapons | WP_ | ||
| Static Mesh | SM_ | ||
| Skeletal Mesh | SK_ | ||
| Skeleton | SKEL_ | ||
| Rig | RIG_ |
3D Models 3ds Max Files
All meshes in 3ds Max are lowercase to differentiate them from their FBX export.
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Mesh | _mesh_lod0* | Only use LOD suffix if model uses LOD's | |
| Mesh Collider | _collider |
Animations
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Animation Clip | A_ | ||
| Animation Controller | AC_ | ||
| Avatar Mask | AM_ | ||
| Morph Target | MT_ |
Artificial Intelligence
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| AI Controller | AIC_ | ||
| Behavior Tree | BT_ | ||
| Blackboard | BB_ | ||
| Decorator | BTDecorator_ | ||
| Service | BTService_ | ||
| Task | BTTask_ | ||
| Environment Query | EQS_ | ||
| EnvQueryContext | EQS_ | Context |
Prefabs
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Prefab | |||
| Prefab Instance | I | ||
| Scriptable Object |
Materials
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Material | M_ | ||
| Material Instance | MI_ | ||
| Physical Material | PM_ |
Textures
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Texture | T_ | ||
| Texture (Diffuse/Albedo/Base Color) | T_ | _D | |
| Texture (Normal) | T_ | _N | |
| Texture (Metallic) | T_ | _MT | |
| Texture (Height) | T_ | _H | |
| Texture (Roughness) | T_ | _R | |
| Texture (Alpha/Opacity) | T_ | _A | |
| Texture (Ambient Occlusion) | T_ | _AO | |
| Texture (Bump) | T_ | _B | |
| Texture (Emissive) | T_ | _E | |
| Texture (Mask) | T_ | _M | |
| Texture (Specular) | T_ | _S | |
| Texture (Packed) | T_ | _* | See notes below about packing |
| Texture Cube | TC_ | ||
| Media Texture | MT_ | ||
| Render Target | RT_ | ||
| Cube Render Target | RTC_ | ||
| Texture Light Profile | TLP_ |
Texture Packing
It is common practice to pack multiple layers of texture data into one texture. An example of this is packing Emissive, Roughness, Ambient Occlusion together as the Red, Green, and Blue channels of a texture respectively. To determine the suffix, simply stack the given suffix letters from above together, e.g. _ERO.
It is generally acceptable to include an Alpha/Opacity layer in your Diffuse/Albedo's alpha channel and as this is common practice, adding
Ato the_Dsuffix is optional.
Packing 4 channels of data into a texture (RGBA) is not recommended except for an Alpha/Opacity mask in the Diffuse/Albedo's alpha channel as a texture with an alpha channel incurs more overhead than one without.
Miscellaneous
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Universal Render Pipeline Asset | URP_ | ||
| Post Process Volume Profile | PP_ | ||
| User Interface | UI_ |
Physics
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Physical Material | PM_ |
Audio
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Audio Clip | A_ | ||
| Audio Mixer | MIX_ | ||
| Dialogue Voice | DV_ | ||
| Audio Class | No prefix/suffix. Should be put in a folder called AudioClasses |
User Interface
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Font | Font_ | ||
| Texture (Sprite) | T_ |
Effects
| Asset Type | Prefix | Suffix | Notes |
|---|---|---|---|
| Particle System | PS_ |