Digital Salmon
Title Icon
Pipeline
DIG015_DarkestFayte

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.

DarkestFayte

The Engine project.

The actual Unity/Unreal Engine project root.

Source

Our Assets

All our source files for production.

Resources

Their Assets

Unmodified 3rd party and client files.

Media

Premiere & Photoshop

Promotional/Video project files.

Output

Ready to go.

Files that will be/have been sent to the client.

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

Variant Icon Graphic

OakTree

OakTree.fbx

Primary

Variant Icon Graphic

OakTree

OakTree_Crooked.fbx

Variant

Variant Icon Graphic

OakTree

OakTree_Crooked_Dif.png

Variant Secondary

Variant Icon Graphic

TurboTank

TurboTank.fbx

Primary

Variant Icon Graphic

TurboTank

TurboTank_Jumping.fbx

Secondary

Variant Icon Graphic

EnchantedChest

EnchantedChest_Dif.png

Secondary

Variant Icon Graphic

StridingManStatue

StridingManStatue.fbx

Primary

Variant Icon Graphic

StridingManStatue

StridingManStatue_UVd.fbx

Variant

Variant Icon Graphic

JaguarXC40

JaguarXC40_ReadyToBake.obj

Variant

Variant Icon Graphic

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

redgreenblue
rgbexample-asset

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

Prefix Icon GraphicMMaterial
Prefix Icon GraphicMiMaterial Instance
Prefix Icon GraphicMFMaterial Function
Prefix Icon GraphicMPCMaterial Parameter Collcetion
Prefix Icon GraphicDAData Asset
Prefix Icon GraphicDTData Table
Prefix Icon GraphicBFLBlueprint Function Library
Suffix Icon GraphicIDamageableInterface

Non-Prefixed Assets

Non-Profixed Icon GraphicSceneControllerBlueprint
Non-Profixed Icon GraphicOakTreeStatic Mesh
Non-Profixed Icon GraphicUndeadGoblinSkeletal Mesh
Non-Profixed Icon GraphicMidnightBluePaintData Asset Instance
Non-Profixed Icon GraphicFireworksNiagara System
Non-Profixed Icon GraphicIntroductionLevel Sequence
Non-Profixed Icon GraphicToggleButtonWidget
Non-Profixed Icon GraphicDamageTypeEnumeration
Non-Profixed Icon GraphicEnvironmentDataStruct

AirShip

Almost There

  • TickClear & concise asset marker 'AirShip'
  • TickCorrect texture letter codes
  • TickCorrect Material Instance prefix
  • TickSensible 'Cool/Warm' variant naming
  • TickAll first-order dependancies stored together
  • WarningInconsistent capitalisation
  • ContentAssetsAirShip
    Graphic Style Graphic

    AirShip

    StaticMesh

    Tick
    Graphic Style Graphic

    AirShip_AORghMet

    Texture

    Tick
    Graphic Style Graphic

    Airship_Cool_Dif

    Texture

    Warning
    Graphic Style Graphic

    AirShip_Nrm

    Texture

    Tick
    Graphic Style Graphic

    AirShip_Warm_Dif

    Texture

    Tick
    Graphic Style Graphic

    Mi_Airship_Cool

    MaterialInstance

    Warning
    Graphic Style Graphic

    Mi_Airship_Warm

    MaterialInstance

    Warning

    Can

    Common Mistakes

  • WarningUse a more specific marker 'CronkCan' or 'DrinkCan'
  • WarningConsider using variant naming 'Can_Crushed'
  • WarningMaterial Instance name should include asset marker: 'Mi_Can'
  • CrossMaterial Instances should be prefixed 'Mi_'
  • CrossTextures should use asset marker 'Can_'
  • CrossLetter code capitalisation should be 'AORghMet'
  • Cross'_BaseColor' should be '_Dif'
  • ContentAssetsPropsCan
    Graphic Style Graphic

    Can

    StaticMesh

    Tick
    Graphic Style Graphic

    CanCrush

    StaticMesh

    Warning
    Graphic Style Graphic

    M_CronkCan

    Texture

    Cross
    Graphic Style Graphic

    Tin_AoRghMet

    Texture

    Cross
    Graphic Style Graphic

    Tin_BaseColor

    Texture

    Cross
    Graphic Style Graphic

    Tin_Nrm

    MaterialInstance

    Cross

    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.

    Project Layout

  • Source Layout