5 Version-Control Tools Game Developers Should Know About
Gaming developers face myriad challenges in their workflows due to a variety of unique requirements — including the different kinds of assets that are core components in games, file size, the different profiles of stakeholders in the process, friction with typical source-code management platforms and much more. These directly affect scalability, ease of use, collaboration with nontechnical stakeholders and compliance processes.
Source code management (SCM), which also serves as version control, has become a core piece to both asset management and developer productivity. Therefore, the one you choose can have a direct impact on your engineering velocity.
Below we’ll dive into each of the different options and the use cases they are optimized for.
How to Choose
Version control software is an essential tool for game developers to manage and track changes to their game’s source code as well as graphical assets throughout the development life cycle.
What should you look at when making such a choice?
- Simplicity and developer and user experience
- Integration with existing tools and stacks
The large size and complexity of game projects require version control software that can handle the storage and management of game assets and codebases efficiently and that can operate smoothly without slowing you down. This will directly affect how your engineering organization can grow and scale. You should select software that can support multiple developers, as well as the other critical stakeholders in the development process, and provide tools for tracking changes to game assets and resolving conflicts. Like all priorities when selecting software, how critical this is to your engineering processes is dependent on the size of your team, projects and the size of the assets used in them.
Simplicity and Developer/User Experience
Game development teams typically contain many members who are not highly technical, such as artists and designers who need to feel comfortable with the tooling the team is using. Depending on the technical skill level across your team, you should prioritize version-control tools that can be operated via simple-to-use interfaces and workflows, that don’t require deep technical skills or syntax and that are easy to learn and adopt.
Like all software, the cost of the tooling and software we choose can have a direct effect on our business’s bottom line. With the variety of version-control tools and price models available for them, you should be cognizant of this when making your decisions, with your technology needs and budget in mind.
Remember that since we are dealing with projects and assets of large size, storage and bandwidth costs come into play as well — be it your own operational expenses or as part of the subscription you are paying. Depending on your budget constraints, you may decide to go with a cheaper or completely free, tool and compromise on other criteria. When it comes to scale and growth, many of these tools are priced per user, and there are other factors that you will need to consider.
Integration with Existing Stacks
Software development typically involves the use of multiple development tools, such as issue trackers, project management software, and continuous integration/continuous deployment (CI/CD) tools that are critical to rolling out software the team is already familiar with and using on a day-to-day basis. Depending on the tools that are part of your workflow, you might need to prioritize version-control software that seamlessly integrates with as many of them as possible, so that you don’t have to invest too much time with integrating the version-control software into your stack but actually delivering value by writing code.
The Most Popular SCMs for Game Development
Git, Perforce, Plastic SCM and SVN are the most popular version control tools used by game developers (you can find more data on the different SCMs gaming developers use in this survey we recently conducted). Git is nearly the de facto version control tool in typical software engineering, as it is a very popular open source distributed version control tool among developers. The rest of the tools are actually more popular for game developers specifically and have unique advantages for them.
Perforce is the second most popular version control tool in the survey we conducted, after Git, and is a proprietary version control tool used by many game studios for centralized version control featuring high performance and scalability.
Plastic SCM, recently acquired by Unity, has undergone a facelift and is now known as Unity Version Control. It is a distributed version-control tool that focuses on game development workflows, particularly for Unity developers (a very popular game development engine and platform).
Apache Subversion (SVN) is a veteran SCM that is still in use today. It was Git before Git was popular, and it is an Apache Software Foundation open source centralized version-control tool that is among the tools used by game developers to overcome some of the unique challenges they face. It has features such as atomic commits and automatic conflict resolution.
Each of these tools has unique features and strengths. Deciding on a version-control tool will depend on the specific needs and preferences of the game development team.
Git: The De Facto Version-Control Tool for Software Developers
Git is the most popular version-control tool used by game developers (especially in small teams), mostly due to the fact that it is the standard de facto across the software-development industry. Git has associated SaaS services like Github, Gitlab and Bitbucket that provide additional features like hosting, code reviews and issue tracking, which played a big part in Git gaining widespread adoption. These services have different pricing plans, including a free tier, and they offer integrations with other development tools like IDEs, project management tools and build systems — and they even have some built into their platforms such as Github Actions and Gitlab Pipelines.
Git has the benefit of being a common tool across the industry, so most developers are familiar with it; however, using it can be challenging for nontechnical users, such as designers and artists, and even some technical users (we’ve spoken about Git and cognitive load in detail, too). Git requires a good understanding of its command-line interface and concepts like branching, merging and conflict resolution, and even when you do have this depth of understanding, you can find yourself getting into conflicts that are difficult to resolve. There are some clients who simplify the work with Git, but learning its syntax and concepts is difficult and may be a challenge to adopt, especially for non-technical staff.
Another consideration for gaming developers is that Git can encounter scalability issues for both repository size and file size, which can affect its performance for large game development projects. To manage large game assets, developers have to use Git-LFS, an extension that enables Git to handle large files more efficiently. However, using Git LFS adds complexity and is known to have issues, and it still has size and performance limitations.
The bottom line: Using Git is the simple choice if you are optimizing for your developers to feel at home — and you are fine with other stakeholders either having more difficulty adopting the tool or to not being a part of the code development process. Although it is open source, note that self-hosting Git is not easy, and if you choose one of the SaaS-based offerings, it will come with its own cost implications. (In the words of Linus Torvalds himself, creator of Git: “Linux is free if your time is worthless.”) Keep that in mind when it comes to cost, and make sure you are aware that you will need to use a different tool for assets and large files.
Perforce: The Gaming Dev-Focused Version Control
Perforce (since the vendor expanded its portfolio, known specifically as HelixCore) is a popular version-control tool used by game developers (mostly in large companies) to manage source code and assets because it is known for its ability to handle large files and repos and support for distributed teams, all challenges well known to gaming developers. Like Git and SVN, Perforce is also a veteran technology, that’s been around since the early 1990s. However, unlike some of the other version control tools, it provides a scalable solution for managing large codebases and assets.
Perforce is a commercial product, with no open source or free option, and the licensing can be very expensive. That said, it does offer robust features and reliability, a balance that makes it popular primarily with AAA game vendors. Anyone who has ever attended Game Developers Conference (GDC), cannot help noticing the major presence of Perforce in the expo, they regard game developers as a target market and focus their marketing and engineering efforts there.
It is relatively simple to use and has extensive documentation, but it is still a technical-looking tool that is not intuitive for nontechnical personnel.
Perforce integrates well with a variety of developer tools used in the gaming industry, but integration with dev tools is not as broad as Git. However, it is definitely satisfactory for most scenarios. Some large customers are using tools they have built on top of Perforce to tailor it to their needs and to their users. Perforce does not have a true SaaS offering and requires you to deal with hosting the server (either on-premises or in the cloud). To use Perforce in a geographically distributed organization, even more significant IT efforts should be invested.
The bottom line: Use Perforce if you want to follow what many AAA game companies do — you get a robust version control tool that supports large assets and large projects. You will also be able to integrate with a variety of tools and have to compromise on user experience with non-techies. Note, however, that using Perforce does come with a price: It is the priciest version control offering, and it is not a turnkey SaaS offering. It requires you to dedicate the IT resources to support it.
SVN: Battle-Tested and Simple
Subversion (SVN) is another popular open source version-control tool used by game developers to manage source code and assets. It was the de facto version control for all developers before Git gained widespread adoption. SVN has been around since 2000 and has been widely adopted by many development teams, and it continues to be supported by the Apache Software Foundation.
SVN is known for its ease of use, with a simple command-line interface and user-friendly GUI clients, which some developers still prefer over more popular SCMs. SVN is also highly scalable, able to handle large codebases and large assets with ease, which makes it popular with game developers.
Like Git there are some companies that offer hosted and SaaS SVN; however, the service is not cloud native. The cost of using SVN is generally low, as it is open source and free to use, but it comes with maintenance overhead, which is an operational cost factor that should be considered and should not be taken lightly (which is why many customers prefer to pay a provider and have it hosted). SVN integrates well with a variety of developer tools and services, but not as extensively as other contenders in this space. Some developers find that SVN’s branching and merging features are not as robust as other version control tools, and it may not be the best option for large teams and complex projects.
The bottom line: Use SVN if you’re tight on budget, want a simple but working solution and are willing to settle for a barebones SCM. It will support your large files and repos, but it may be less than ideal for complex workflows. Your developers will get most of the integrations they need, but they may have to compromise on user experience.
Unity Version Control (Previously Known as Plastic-SCM)
Plastic SCM was created in 2005 by Codice Software and has gained popularity among game development teams due to its focus on this community, providing an intuitive and user-friendly interface, making it easy for developers, as well as non-developers, to use. In 2021, Codice Software was acquired by Unity Technologies, which develops a game engine and development platform, and has since been adapted and optimized for Unity developers.
Plastic SCM was built with game devs in mind, so it is able to handle large codebases and assets, and Unity is now leveraging this value to benefit Unity developers in particular.
While there is a cost associated with using Unity Version Control, the pricing is flexible and depends on the size of the team and project, as well as the amount of storage required. Plastic SCM used to integrate well with the common developer tools game devs use, but since being acquired by Unity, it’s been focused on integration within the Unity product suite. It remains to be seen how support for other toolsets and platforms will evolve and be maintained in the long run.
The bottom line: Unity Version Control is a great choice if you’re a Unity developer, and you find the all-in-one concept appealing (which could also play out well in terms of pricing). It does provide the scalability you need and a relatively simple interface for non-devs. However, if you have cross-platform development needs, or aren’t solely a Unity shop, this may be an important consideration going forward.
Diversion: Cloud Native SCM
Diversion is a new player in the version control space to help evolve an ecosystem that has not changed much over the past two decades. The world of SCMs for game devs as an industry is even further underserved than the general software industry. Diversion has entered the playing field with the ambitious goal of targeting these challenges and harnessing the power of modern, cloud native capabilities to take game development to its next phase of growth.
Diversion is described as a cloud native, SaaS version control which leverages the benefits of the cloud to deliver scalable, instantly available and simple to use version control. It is set to enable the management of all assets — code and art — in a single repo without limitations on size or geographical locations, and it is set to support artists in the same interface and platform.
The bottom line: Diversion is a new player (currently in public beta), up against longstanding incumbent and widely adopted SCMs. With a robust and wide-ranging feature roadmap, it is well-positioned to take on known challenges in the game development space, though not all of these features are currently available (or may still be in the works). With SaaS-based pricing, it is aligned with other hosted tools, and even has a free tier. Built with a cloud-first mindset, it is a contender to disrupt the version control ecosystem; however, it is yet to be seen if it will deliver on this promise.
Cloud Native Trends for Gaming Development
The world of engineering has undergone significant changes over the last two decades, and version controls and other toolsets need to up their game and embed similar practices for the gaming development world.
We can see new trends in cloud native version control development from companies like Diversion, new CI/CD platforms and practices with tools like Dagger and Buildkite, along with many other improvements to longstanding technologies. Some of these haven’t evolved at the pace of engineering either, with the most common tools being decades old and could benefit from a hard reset in some cases, or just leveling up their game to the modern cloud native world.
These are all practices and improvements that the gaming development world should be able to adopt more rapidly and embed in their toolsets and stacks, to support the unique challenges and growing popularity of gaming around the world.