Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Game Version Control

ASecurity

Set up Git LFS for binary assets, handle unmergeable scene and prefab conflicts, and know when Perforce beats Git. Use when configuring Perforce, Git LFS, or binary asset branching.

4 stars
0 votes
0 copies
0 views
Added 9/22/2026
developmentgobashgit

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add poorvith-mp/skills-gamedev --skill game-version-control --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Game Version Control?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Game Version Control
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/poorvith-mp-game-version-control/badge)](https://www.skillsdirectory.com/skills/poorvith-mp-game-version-control)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: game-version-control
last_reviewed: 2026-09-06
group: Engineering
description: >-
  Set up Git LFS for binary assets, handle unmergeable scene and prefab conflicts, and know when
  Perforce beats Git. Use when configuring Perforce, Git LFS, or binary asset branching.
---

# game-version-control

## Core Philosophy
Game development source control is fundamentally different from traditional web or software engineering. While code is text and merges easily, 80% of a modern game repository consists of multi-gigabyte monolithic binary assets: 4K textures, 3D FBX meshes, WAV audio banks, and binary scene graphs. Merging binary conflicts is mathematically impossible—a concurrent edit on a binary scene or prefab invariably destroys someone's work. Robust game version control requires strict locking paradigms, Git LFS (Large File Storage) or Perforce (Helix Core), and rigorous branching strategies tailored for cross-functional artist and programmer collaboration.

---

## 4-Step Game Version Control Architecture

### Step 1: Git LFS vs Perforce (Helix Core) Decision Matrix
1. **The Git LFS Model (Indie & AA Studios, < 30 Devs)**:
   - *Strengths*: Cheap hosting (GitHub, GitLab), familiar developer tooling, decentralized branching.
   - *Weaknesses*: Clunky file locking mechanism, slow clone times for 100GB+ repos, pointer sync overhead.
2. **The Perforce Helix Core Model (AAA Studios & Large Art Teams)**:
   - *Strengths*: Centralized server authority, native exclusive file locking (`p4 lock` / `p4 edit`), instant handling of multi-terabyte depots, granular directory permissions, visual artist UI (P4V).
   - *Rule of Thumb*: If your project repo exceeds 100GB or your team has more than 10 dedicated 3D/audio artists simultaneously editing shared scenes, migrate to Perforce.

### Step 2: Git LFS Configuration & Binary Attribute Tracking
1. **`.gitattributes` Locking Rules**:
   - Every non-mergeable binary asset must have the `lockable` attribute enabled so artists must explicitly obtain a lock before editing:
     ```gitattributes
     # 3D Assets
     *.fbx filter=lfs diff=lfs merge=lfs -text lockable
     *.obj filter=lfs diff=lfs merge=lfs -text lockable
     *.blend filter=lfs diff=lfs merge=lfs -text lockable

     # Textures & Images
     *.png filter=lfs diff=lfs merge=lfs -text
     *.tga filter=lfs diff=lfs merge=lfs -text
     *.psd filter=lfs diff=lfs merge=lfs -text lockable
     *.exr filter=lfs diff=lfs merge=lfs -text

     # Audio
     *.wav filter=lfs diff=lfs merge=lfs -text
     *.ogg filter=lfs diff=lfs merge=lfs -text

     # Unity / Unreal Engine Binaries
     *.unity filter=lfs diff=lfs merge=lfs -text lockable
     *.prefab filter=lfs diff=lfs merge=lfs -text lockable
     *.uasset filter=lfs diff=lfs merge=lfs -text lockable
     *.umap filter=lfs diff=lfs merge=lfs -text lockable
     ```
2. **Locking Workflow**:
   - `git lfs lock Assets/Scenes/MainWorld.unity`
   - Edit, save, and commit.
   - `git push && git lfs unlock Assets/Scenes/MainWorld.unity`

### Step 3: Scene Decomposition & Conflict Prevention
1. **Sub-Scene & Level Streaming Architecture**:
   - Never allow artists and programmers to work in a single monolithic `Main.unity` or `PersistentLevel.umap`.
   - Break levels into additive sub-scenes:
     - `Lighting_Subscene` (Lighting artists only).
     - `Environment_Art_Subscene` (Environment artists only).
     - `Gameplay_Logic_Subscene` (Level designers and programmers).
     - `Audio_Triggers_Subscene` (Sound designers).
2. **Prefab / Blueprint Chunking**:
   - Deconstruct mega-prefabs into modular nested prefabs.

### Step 4: Repository Hygiene & Large File Garbage Collection
1. **Preventing Binary Leaks**:
   - Add automated pre-commit hooks that scan commit payloads. Reject any raw file over 20MB that is not tracked by Git LFS.
2. **LFS Pruning**:
   - Run `git lfs prune --recent` locally to free cached binary pointers without breaking remote history.

---

## Deliverable Format: Production `.gitattributes` & Pre-Commit Hook

```bash
#!/bin/sh
# .git/hooks/pre-commit: Reject un-tracked binary files > 20MB
MAX_SIZE=20971520 # 20MB in bytes

for file in $(git diff --cached --name-only); do
    if [ -f "$file" ]; then
        filesize=$(wc -c < "$file")
        if [ "$filesize" -gt "$MAX_SIZE" ]; then
            # Verify if tracked by LFS
            if ! git check-attr filter "$file" | grep -q "lfs"; then
                echo "[ERROR] File '$file' is $(($filesize/1048576))MB and NOT tracked by Git LFS!"
                echo "Please run: git lfs track '$file' before committing."
                exit 1
            fi
        fi
    fi
done
```

---

## Worked Example: Studio Migration to Sub-Scenes & Git LFS Locks

- **Context**: An 18-person indie studio experienced 3 lost workdays per month due to concurrent edits on Unity's binary `Hub_World.unity` scene.
- **Implementation**: Decomposed `Hub_World` into 4 additive scenes (`Hub_Geometry`, `Hub_Lighting`, `Hub_Gameplay`, `Hub_Props`). Enforced `git lfs lockable` on `.unity` files and enabled Unity Smart Merge (`UnityYAMLMerge`).
- **Result**: Scene merge conflicts dropped from 14/month to 0. Zero hours of lost art progress over a 6-month vertical slice sprint.

---

## Verification Checklist

- [ ] `.gitattributes` covers all binary extensions (`.fbx`, `.png`, `.psd`, `.wav`, `.uasset`, `.unity`).
- [ ] Exclusive file locking (`lockable`) is active on non-mergeable scene and prefab formats.
- [ ] Large levels are split additively into multi-disciplinary sub-scenes.
- [ ] CI / pre-commit hooks prevent binary files > 20MB from leaking into standard Git blobs.
- [ ] Unity Smart Merge (`UnityYAMLMerge`) or Unreal Merge Tool configured for text-based asset resolution.

---

## Anti-Patterns

- **Committing 4K Video/Raw Textures to Git History**: Pushing raw 2GB MP4s or PSDs directly to git without LFS, permanently bloating the `.git` directory forever.
- **Concurrent Monolithic Scene Editing**: Two developers working on the same persistent master scene simultaneously on separate branches without sub-scene isolation.
- **Ignoring Git LFS Locks**: Modifying a locked file locally without acquiring the lock from the remote server first.

Attribution

poorvith-mppoorvith-mp
View sourceMore from poorvith-mp →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

284722 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2192 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →