The Client Code
The client code is a 3 letter code indicating the client. Use DIG for internal projects.
The Job Number
The job number indicates which job this is. Starting at 001, we increment each project per-client.
The Project Name
The project may either relate to the project, or be a code name. It is defined at the start of the project and doesn't change.
File Naming
How & When to case, underscore, and suffix.
Files are just data. The two important data types here are: meta data, and asset data.
Metadata is all the data about a file that exists outside it's actual contents. It is made up of it's location, it's type, it's name. These pieces of information are important in a tidy pipeline, and we choose to leverage some of them to communicate intent.
Asset Data is the contents of the file. This might be pixels, size or bit depth data in textures, or points, normals, uvs etc in 3D models.
The Asset Marker
Every asset will have a marker. Markers should be a unique & concise. Markers will inform the naming of all sub assets.
Asset markers are always PascalCase.
The Sub Assets
When a group of assets logically associate with one marker, they can be considered sub assets. Sub assets uses underscores to communicate their nature.
Sometimes, multiple variant identifiers may be required to fully communicate an asset.
Variant: The asset is a variation on the primary asset, such as an alternative configuration or including different data. Low/High poly. With/without UVs.
Secondary: The asset forms one part of the primary asset, such as a specific submesh, animation, or texture asset.
Marker
Asset
Type
OakTree
OakTree.fbx
Primary
OakTree
OakTree_Crooked.fbx
Variant
OakTree
OakTree_Crooked_Dif.png
Variant Secondary
TurboTank
TurboTank.fbx
Primary
TurboTank
TurboTank_Jumping.fbx
Secondary
EnchantedChest
EnchantedChest_Dif.png
Secondary
StridingManStatue
StridingManStatue.fbx
Primary
StridingManStatue
StridingManStatue_UVd.fbx
Variant
JaguarXC40
JaguarXC40_ReadyToBake.obj
Variant
PenthouseStructure
PenthouseStructure_Walls.fbx
Secondary
Texture Naming Conventions
Texture files are named using a consistent 3 letter coding system.
When packing single channel textures into multiple channels, we use the coding system to deduce an appropriate file name.
- Dif
- Nrm
- Rgh
- AO
- Met
- Hgt
- Emi
- Opa
- Sss
- Spc
- Diffuse
- Normal
- Roughness
- Ambient Occlusion
- Metallic
- Height
- Emissive
- Opacity
- Subsurface Scattering
- Specular
You can use these codes to prepend a single channel texture file, or combine multiple codes to prepend a packed texture.
Note: When building a project, your textures will be compressed. The compression algorithm used depends on your target platform/s. Some compression algorithms compress R and B differently to G, giving 1 extra bit to G. This could be the difference between 32 and 64 available values. This is why we put our most value-sensitive channel into G.
Packing Textures
A very common packed texture is Roughness, Metallic, and AO. These three single channel maps are commonly used in PBR materials, and can be packed together to reduce texture memory footprint.
- AO
- Rgh
- Met
- Ambient Occlusion
- Roughness
- Metallic
Combining AO, Roughness, and Metallic would give a file the name _AORghMet, since this indicates both the maps being packed and the packing order.
_AORghMet
Unreal Engine Naming Conventions
We prefix some asset types with a small letter code to help avoid file clashes and clarify file types where their generated icon may not be clear.
Prefixed Assets
Non-Prefixed Assets
AirShip
Almost There
AirShip
StaticMesh
AirShip_AORghMet
Texture
Airship_Cool_Dif
Texture
AirShip_Nrm
Texture
AirShip_Warm_Dif
Texture
Mi_Airship_Cool
MaterialInstance
Mi_Airship_Warm
MaterialInstance
Can
Common Mistakes
Can
StaticMesh
CanCrush
StaticMesh
M_CronkCan
Texture
Tin_AoRghMet
Texture
Tin_BaseColor
Texture
Tin_Nrm
MaterialInstance
Project File Layout
We operate a mirrored file structure. This means our engine content and our source files live in twin directory layouts.
Below is an example folder layout for a typical project.
Unity Layout
In Unity, "Asset" files live in the Unity project. The "Source" directory only needs to contain the working files required to generate/modify assets, such as PSD and Max files.
Project Layout
Source Layout
Unreal Engine Layout
In Unreal, "Asset" files live in the Source directory. Project files are all Unreals own "uasset" format, and thus must be named with an appropriate prefix to avoid clashes.