Fighting Game · Guides & deep dives

V2 Asset Version Control Artist Workflow

Generate the large-repository performance profile first:

10sections2 minread

On this page

This guide covers TODOS.phase-72.72.20.1.14: the end-to-end artist workflow for V2 binary asset version control.

Source Of Truth#

  • Manifest: V2/ue/Build/AssetPipeline/v2-asset-version-control-artist-workflow.json
  • Validator: V2/ue/Tools/check-v2-asset-version-control-artist-workflow.py
  • Related guides: artist-shallow-clone.md, large-repo-performance.md, binary-diff-visualization.md, asset-change-notification.md, asset-backup-disaster-recovery.md, and perforce-integration-guide.md

Artist Onboarding#

Generate the large-repository performance profile first:

bash
python3 V2/ue/Tools/v2_large_repo_performance.py profile \
  --profile artist \
  --repo-url <repo-url> \
  --workspace <workspace>

Then generate the shallow clone plan:

bash
python3 V2/ue/Tools/v2_artist_shallow_clone.py plan \
  --repo-url <repo-url> \
  --workspace <workspace>

The approved onboarding path uses GIT_LFS_SKIP_SMUDGE=1, --filter=blob:none, cone-mode sparse checkout, git lfs fetch --recent, and git lfs checkout V2/ue. Do not use git lfs fetch --all for onboarding.

Daily Sync And Performance#

Keep sparse checkout enabled for V2/ue, V2/docs/asset-pipeline, and TODOS/phase-72.md. Add narrow paths with git sparse-checkout add <path> when needed. Keep LFS batch mode, TUS transfers, eight concurrent transfers, 60-second activity and keep-alive timeouts, and recent-ref fetches from the large-repo performance profile.

Lock Edit Submit#

Lock binary assets before opening them in Unreal, Blender, Maya, Photoshop, or an audio tool:

bash
python3 V2/ue/Tools/v2_asset_locking_workflow.py lock --path <asset>

The pre-commit hook rejects staged binary assets that are not locked by the current user. The post-commit hook releases current-user locks after the commit. If a file is already locked by someone else, coordinate before editing instead of replacing the asset locally.

New Asset Intake#

New binary assets must match V2/ue/.gitattributes and v2-binary-asset-attributes.json. Textures, HDR images, source images, meshes, audio, video, fonts, Unreal packages, and compressed textures are stored in Git LFS. Respect the size budget: 100 MiB warns and 500 MiB fails.

Run:

bash
python3 V2/ue/Tools/check-v2-asset-size-budget.py
python3 V2/ue/Tools/check-v2-asset-deduplication.py
python3 V2/ue/Tools/check-v2-asset-pruning.py

Binary Diff Review#

Before review, generate visual diffs for supported texture and mesh changes:

bash
python3 V2/ue/Tools/v2_binary_diff_visualization.py compare \
  --kind image \
  --left <old.png> \
  --right <new.png> \
  --out-dir <report-dir>

python3 V2/ue/Tools/v2_binary_diff_visualization.py compare \
  --kind mesh \
  --left <old.obj> \
  --right <new.obj> \
  --out-dir <report-dir>

Attach report.html, diff.png, or wireframe-overlay.svg to the review when the asset type supports it.

Change Notification#

Use the asset change notification planner to route affected owners and dependent content teams:

bash
python3 V2/ue/Tools/v2_asset_change_notification.py plan \
  --changed-list <changed-assets.txt> \
  --json-report <report.json>

The report includes direct owner routing, dependency evidence, Slack, Microsoft Teams, email, and generic webhook payloads. CI keeps this in dry-run mode; studio automation sends payloads using secrets outside source control.

Cleanup And Recovery#

Unused assets are reported, not deleted, by the pruning tool. Duplicate assets are grouped by sha256: content address by the deduplication tool. LFS storage is backed up by six-hour snapshots with us-west-2 and eu-central-1 replication, six-hour RPO, four-hour RTO, and monthly restore drills.

Perforce Studio Option#

Studios using Perforce follow perforce-integration-guide.md for stream depot layout, typemap, exclusive checkout, workspace setup, and P4 Git Connector operation. The Git LFS mirror remains the OSS-style branch and CI validation surface.

Validation And Troubleshooting#

Run the focused workflow validator before handing a workspace to an artist:

bash
python3 V2/ue/Tools/check-v2-asset-version-control-artist-workflow.py
python3 V2/ue/Tools/check-v2-artist-shallow-clone.py
python3 V2/ue/Tools/check-v2-large-repo-performance.py
python3 V2/ue/Tools/check-v2-asset-locking-workflow.py
python3 V2/ue/Tools/check-v2-binary-diff-visualization.py
python3 V2/ue/Tools/check-v2-ci-workflow.py

If checkout is slow, verify --filter=blob:none, sparse checkout roots, LFS batch settings, and recent-ref windows. If commit is blocked, check the Git LFS lock owner and staged binary asset list. If review is unclear, regenerate the binary diff report from known old and new files.