Why many game development studios use Perforce instead of Git

May 07, 2024

Have you ever wondered why AAA games often use Perforce instead of Git? Perforce Revision Graph

If you’re a software developer, you’ve probably noticed that Git is an incredibly popular source control system. But have you ever noticed that many video game studios use Perforce? Have you ever wondered why?

While there’s a neat conversation to be had about Centralized vs. Distributed source control managers, let’s save that for the interview questions, shall we?

The truth is that Perforce has a long history of excellence managing large binary assets, and Git is only recently improving this capability. We know that Git+GitLFS is able to support large AAA game projects, but there are very few game studios willing to try! (we see you over there, The Believer Company)

In a past game I’ve worked on, I would perform daily integrations between branches that contained an average of 2 million files. These integrations would often have 100 code conflicts across 20 different engineers. Managing these merges hither and thither was a full time job! There are modern branching strategies a studio can use to avoid these traps.

How fast do you think creating a new branch is in Git when the repo is over 2tb?

Another variable is that some game engines offer deep integrations with Perforce. Epic’s Unreal Engine comes with excellent tooling for managing their software within a Perforce environment. This is a very compelling offer to a studio looking to make the best game they can!

Lastly, Perforce supports centralized file locking, which can be a requirement for many studios. If two artists accidentally work on the same animation (a binary file), their work cannot be merged together and someone is almost certainly going to lose work and have to re-do it. This can get very expensive over time, and a tool (p4 exclusive checkout) to mitigate this is worth its digital-weight in bitcoin!

Feel free to share your stories comparing Perforce and Git. I know you have opinions on using branches in these two tools. Let’s hear them!


Profile picture

Written by Jay Spang
Principal Build & Release Engineer - BespokeCI