-
Notifications
You must be signed in to change notification settings - Fork 0
Asset Naming Conventions
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]
-
AssetTypePrefix
identifies the type of Asset, refer to the table below for details. -
AssetName
is the Asset's name. -
Descriptor
provides 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. -
OptionalVariantLetterOrNumber
is optionally used to differentiate between multiple versions or variations of an asset.
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_Collectable
T_Collectable_Normal
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
.
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 |
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 |
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
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_ |
PascalCase
Asset Type | Prefix | Suffix | Notes |
---|---|---|---|
Characters | CH_ | ||
Vehicles | VH_ | ||
Weapons | WP_ | ||
Static Mesh | SM_ | ||
Skeletal Mesh | SK_ | ||
Skeleton | SKEL_ | ||
Rig | RIG_ |
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 |
Asset Type | Prefix | Suffix | Notes |
---|---|---|---|
Animation Clip | A_ | ||
Animation Controller | AC_ | ||
Avatar Mask | AM_ | ||
Morph Target | MT_ |
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 |
Asset Type | Prefix | Suffix | Notes |
---|---|---|---|
Prefab | |||
Prefab Instance | I | ||
Scriptable Object |
Asset Type | Prefix | Suffix | Notes |
---|---|---|---|
Material | M_ | ||
Material Instance | MI_ | ||
Physical Material | PM_ |
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_ |
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
A
to the_D
suffix 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.
Asset Type | Prefix | Suffix | Notes |
---|---|---|---|
Universal Render Pipeline Asset | URP_ | ||
Post Process Volume Profile | PP_ | ||
User Interface | UI_ |
Asset Type | Prefix | Suffix | Notes |
---|---|---|---|
Physical Material | PM_ |
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 |
Asset Type | Prefix | Suffix | Notes |
---|---|---|---|
Font | Font_ | ||
Texture (Sprite) | T_ |
Asset Type | Prefix | Suffix | Notes |
---|---|---|---|
Particle System | PS_ |
Links | Description |
---|---|
What-is-made | Here is a list of the team members with their roles and what they have made |
Asset Naming Conventions | An in depth convention for naming files |
Code Convention | A code convention used for this project |
Definition of done | When is something done? Here's a list of criteria of the definition of done. |
Functional Design | A description about how to play the game |
Git workflow | This is our git workflow, with branch naming |
Scrum | A page with all our scrum notes and files |
Software in use | Here's a list of the software we use to make this project |
Technical Design | An in depth explanation of how complex systems work in the game |
Full code documentation | The full documentation of each feature and class |
User testing | User testing video's of the game |
- Bas de Reus - Lead developer
- Dylan Vermeulen - Scrummaster & artist
- Lisa van Boven - Lead artist & notulist
- Martijn van der Meer - Product owner & developer
- Taquila van Houwelingen - Artist & notulist
- William Soijer - Technical artist & developer