04 — The Asset
Naming and versioning
Boring, and the difference between a working build and a lost week.

A directory listing: dull, and the difference between a working build and a lost week.
Photo: Pixabay / Pexels
A file called final_FINAL_v3_USE_THIS.fbx is a system that has already failed.
The cost of informality
Every asset on a project lives in shared storage and arrives in an engine build. How it is named determines whether the engine can find it, whether tools can process it automatically, and whether a second person six months later can tell what it is and which version is current.
Naming conventions look like housekeeping. They function as infrastructure. A folder full of character_hero_rig_new2.ma and character_hero_rig_backup_FINAL.ma is not a minor embarrassment — it is a bug vector. The wrong file gets exported, the wrong texture gets referenced, and the integration error shows up in a build review rather than at the moment the mistake was made. Finding it then costs a day. Finding it after submission costs more.
The minimum a working convention needs: asset type, descriptive name, and version — all separated by the same delimiter, always. env_crate_wood_v004.fbx is readable by a person and parseable by a script. Spaces and special characters break path handling in a majority of pipeline tools. Mixed case breaks case-sensitive file systems. Neither failure announces itself loudly; both accumulate.
Versioning is separate from naming but inseparable in practice. Sequential version strings (v001, v002) are better than dates because they sort correctly and express nothing except sequence. Date-stamped filenames look useful and become ambiguous the moment two people work in different time zones or one person revises twice in a day. The live file in source control is the canonical version; anything sitting in a local folder is a liability until it is committed.

What a level looks like before it exists: routes, sightlines and one crossed-out room.
Photo: Anete Lusina / Pexels
Source control — even a lightweight solution — removes the need for most filename versioning gymnastics, because the history is stored in the repository rather than encoded in the filename. The pipeline depends on assets arriving with predictable names at predictable paths; if those names shift between export and import, automated steps break silently and someone troubleshoots by hand.
None of this is glamorous. It is also not optional. Conventions decided in the first week of production cost almost nothing to enforce. Conventions retrofitted at alpha cost far more than the time to write them down.
The wrong file gets exported, the wrong texture gets referenced, and the integration error shows up in a build review rather than at the moment the mistake was made.

Capture is cheap next to the cleanup. Every take is retargeted, trimmed and blended by hand afterwards.
Photo: Bruno Massao / Pexels