Version control is key to software development of any kind and games are not different in that sense - any serious game developer (from indies to AAA) use some shape or form of version control as part of their development infrastructure.
Nevertheless, Game development requirements are somewhat unique so version control tools stack up slightly differently than the way they do for “generic” software development. Perforce (or more accurately HelixCore from Perforce Software) is known to address many of these unique requirements pretty well. In a survey that we conducted among game developers, we learned that Perforce was used by 28% of respondents - a huge market share compared to its foothold in other software market segments. Perforce themselves report that they are in use by 19 of 20 top AAA game vendors.
Speaking to many game developers as part of our exploration of the domain - we learned that even game developers that are heavily invested in Perforce as a version control system have “one eye open” for a Perforce alternative. Some assign the search to a special task force, and for others this is only a wishlist item for the infra team… but it is always present - and here’s why:
Perforce has been around for many years and many of the competitors it had in the 90’s are no longer with us. When Perforce started, Git was not even conceptualized. During that time, it has built robust software and a broad set of features, but if you look at its current focus, it is game development companies, and other vendors that have to manage versions for very large projects and very large files. This is because Perforce is known for its scalability - the ability to handle very large files and repositories.
Another key feature that is attractive to game developers is the ability to integrate perforce into the IDE’s of the two leading game engines - Unreal Engine from Epic Games and Unity. Interestingly enough, Unity has recently acquired a version control tool Plastic SCM (now rebranded as Unity Version Control), so it remains to be seen to what extent this integration will still be maintained.
One major complaint about Perforce is the complex setup and maintenance it requires. As a tool developed back in the 1990’s, and not undergoing an architectural overhaul since, Perforce server is software that needs to be installed on a dedicated server. Being in the era of SaaS (with version control tools like Github, Gitlab and Bitbucket available as SaaS), developers are reluctant to invest excess IT resources running legacy infrastructure and the fact that Perforce still requires them to do so is considered as a drawback.
Another related disadvantage is the smaller set of modern integrations it has compared to other cloud native version control tools. Perforce did start pivoting towards a cloud offering, however it’s more or less the same software, installed on a server provisioned in the cloud - and still requires complex maintenance and configuration.
Finally, probably the key reason game developers are looking for Perforce alternatives is its cost. Perforce pricing (per-seat) is considered to be very high compared to alternatives, and combined with the cost of setup and maintenance you end up with a pretty high Total Cost of Ownership (TCO) making it prohibitive for smaller players, and a noticeable expense for the larger ones.
When looking for alternatives, there are a few evaluation criteria that are unique to the game development industry. First and foremost: scalability. Game projects tend to be large and include many large binary files. Version control tools have to cater for that and apparently not all of them do this all that well. Git, for example, has a limit on its file and repo size, and game developers typically have to use Git-LFS to be able to use Git reasonably (but even that doesn’t work all that well).
Another key criteria is the simplicity of use: game development companies typically have game designers and artists as part of their staff, and they typically prefer simpler interfaces than those offered by version control tools.
The main alternatives game developers have to choose from are Git, SVN and Unity Version Control (which is how Unity packaged their acquired Plastic SCM). A recent article in The New Stack provides a good roundup comparing between the various alternatives. Spoiler: no tool is perfect and something’s got to give…
We at Diversion are looking closely at the needs of the game development community and are building a modern, cloud native version control tool to make their life easier. If you’re looking for a Perforce alternative, be sure to check it out here.