Quick answer: Perforce dominates AAA for real reasons — native large-binary handling, file locking so two artists never silently overwrite each other, and monorepo scale — while Git plus LFS dominates indie for equally real ones: free, universal, with an ecosystem (GitHub, CI, every tutorial) Perforce can't match. For teams under ~10 without heavy binary churn, Git+LFS is the right default.
Perforce dominates AAA for real reasons — native large-binary handling, file locking so two artists never silently overwrite each other, and monorepo scale — while Git plus LFS dominates indie for equally real ones: free, universal, with an ecosystem (GitHub, CI, every tutorial) Perforce can't match. For teams under ~10 without heavy binary churn, Git+LFS is the right default. That's the short version — the sections below get into the how, the why, and the mistakes worth dodging.
The two problems Perforce actually solves
Problem one: binary scale. Perforce stores massive binary depots natively and checks out only what you sync — terabyte projects work without ceremony, which is why studios with film-scale assets never left. Problem two: unmergeable files. Perforce's check-out/lock model means an artist locks a scene, works, submits — and nobody else's afternoon was silently wasted on a parallel edit that can't merge.
Git's answers are honest workarounds: LFS for the first (works, with quotas and setup), social coordination or LFS file locking for the second (functional, less enforced).
What Git's ecosystem buys indies
Git is free at indie scale, runs everywhere, and plugs into the modern pipeline: GitHub/GitLab hosting, pull-request review, CI/CD, issue tracking, and ten years of Stack Overflow answers. Perforce offers small-team free tiers, but you'll host or pay beyond them, hiring contractors who know it is harder, and the tooling integration story is thinner outside studio environments.
Engine support is parity: Unity, Unreal, and Godot work with both (Unreal's editor integration historically favors Perforce — relevant if you're deep in UE with artists who never touch a CLI).
The actual decision rule
Choose Git+LFS when: team under ~10, asset volume in gigabytes not terabytes, programmers comfortable with Git, budget near zero. Consider Perforce when: artist-heavy team allergic to merge concepts, Unreal-centric workflow with constant binary churn, file locking would prevent real weekly losses, or you're scaling toward studio size where its model is the industry's worn path.
Mixed reality: some teams run Git for code and Perforce (or simpler shared storage) for raw art sources. Whatever you choose, choose at project start — VCS migration mid-production is the move everyone regrets scheduling.
Your future self is a stranger — leave notes
Six months from now you will not remember why that magic number is 0.73 or which scene is safe to delete. Project knowledge that lives only in your head evaporates on contact with a break, a jam, or a day job crunch.
Keep one running NOTES file: decisions made, things that look unused but aren't, how to do the fiddly release steps. Five minutes of writing per week buys you days of re-discovery later.
Boring tools are a superpower
Every hour spent fighting your own pipeline is an hour not spent on the game. The goal of tooling isn't sophistication — it's that builds, backups, and versioning become so boring you forget they exist. Set them up once, automate them, and let them run.
The test is simple: if your machine died tonight, how long until you're working again? If the answer is 'an hour', your tooling is good. If it's 'I'd lose a week', fix that before adding any feature.
Close the loop with real players
Advice gets you to a sensible starting point; only real player behavior tells you if it worked. Ship the change, then watch what actually happens — the reports that come in, the errors that spike or vanish, the place sessions end.
Make that loop short. When a player can report a bug in ten seconds and you see it with logs attached, you stop guessing what to fix next. Tight feedback loops are the closest thing indie development has to a cheat code.
Putting it to work
Don't try to act on all of this at once. Pick the one change that costs you the least and pays the most this week, do it, and see what actually happens before reaching for the next.
Most of this rewards steadiness over intensity. A small improvement made every week, checked against how real players respond, outruns any single burst of effort — in this corner of game development and every other one.
If your machine died tonight, you should be working again by morning. Build toward that.