While implementing your first version control system or moving to a new one can be challenging, the long-term impact is worth it. Here’s what to consider when choosing a version control system, before you commit.
Game creation is a rewarding though often chaotic endeavor. During development, many team members with distinct roles and varying levels of technical expertise work on the same project, attempting to align on a single production process. Coordinating with more than one person at a time can be difficult, and this challenge scales exponentially as your team continues to grow.
When issues arise, the time it takes to identify and fix the problem can slow everything – and everyone – down. Therein lies the importance of choosing the right version control system (VCS) for your aims.
Version control allows you to maintain a bird’s-eye view of your entire project. It brings fundamental organization to your work, which enables your team to iterate rapidly and efficiently. But how?
Project files are stored in a shared database called a repository, or “repo.” Managing your files in this way prompts you to back up your project at regular intervals, and conveniently roll back to previous versions if things don’t go according to plan.
With a VCS, you can make multiple, individual changes, and “commit” them as a single group for sourcing. This lumps the group of changes together, so that when you revert back to a previous version, everything from that same group is undone. In fact, you can review and modify each change grouped within a “commit,” or undo the “commit” in its entirety. Seeing as you have access to the full history, you can more easily trace and eliminate bugs, as well as restore any previously removed features.
Even more, because version control is typically stored in the cloud or a distributed server, it supports your development team’s collaboration across time zones and geographies – an increasingly important benefit as remote work becomes commonplace.
Switching from one version control system to another can be demanding, especially if it means changing the technology your team relies on mid-project. But making an informed decision before you commit can certainly pay off.
Here are just a few common reasons for implementing or switching to a new version control system:
Here are eight key factors to consider when choosing your next version control system:
Implementing or switching to a new VCS primarily serves to strengthen teamwork. Whether onsite or remote, version control will empower you and your colleagues to coordinate with one another, while working independently. To meet your team’s specific needs, ask yourself: How many people will be using this new system? What is their level of technical expertise? What do they think of your current options – and what would they want from something new?
To improve productivity, ensure that everyone is equipped to make changes, without the need for technical intervention. Selecting a system that’s easy to use for all teammates, including non-technical artists, can reduce the emotional cost of switching to a new VCS. Less resistance makes for a quick adoption, followed by fast results.
As the gaming industry expands, so too do consumer expectations. Gamers consistently expect better graphics, bug-free launches, post-launch updates, and stellar support. For developers, the stakes are high – and they’re going to get higher.
The growing complexity of game design means working on and managing more intricate projects with a wider array of file types, larger files, and potentially huge repos. To establish smooth workflows and rapid merges, take on a VCS that can handle your projects at scale. Remember, choosing a version control system is a long game. Even if your team isn’t handling large files now, your needs are sure to change eventually. Think ahead to set yourself up for lasting success.
This factor goes back to the first item on our list – your team. Does your team have the time, expertise, and overall bandwidth to implement and maintain a new version control system? How quickly can implementation take place? Will there be ongoing support once the system is up and running?
Let’s not forget: An easier setup means a faster setup. And a timely launch means giving your team a longer runway to adapt and start working more efficiently. So if the technical aspects of setup and maintenance are a concern, evaluate the customer success rate for packages you’re considering. Start by reading reviews to help determine the best possible VCS for your objectives.
It’s crucial to consider the processes and tools that your team uses day-to-day. Choosing a version control system that integrates smoothly with other required tools speeds up implementation and minimizes disruptions.
Another workflow-related factor to think about is whether your version control system supports branching. Branching is when someone who’s working on a specific set of project files isolates those files from the main project branch, or “trunk.” This allows them to test changes without affecting the main trunk. Changes can then be merged back into the main trunk once they’ve been assessed and proven stable.
In game development, you will likely need to facilitate a high number of branches and create them swiftly. Directory-based systems can lead to improper branching and frequent merge conflicts as your team encounters difficulties merging back into the trunk.
With branching, you can prioritize project stability so that your team continues working toward their shared goals, without impacting the work of others.
Implementing a version control system involves a rigorous adaptation process. After all, this change can completely overhaul existing workflows and tools.
Strategically timing the implementation of your VCS can reduce its impact on current projects, and speed up the adoption of new systems. That said, it is ideal to implement your chosen VCS either at the start of a new project, or during the postmortem phase of a product you’ve just launched.
Of course, things don’t always go according to plan. You might find yourself in the position of migrating to a new version control system in the middle of a project. While this isn’t ideal, it’s not impossible.
Learn more about migrating your Unity Collaborate projects to Plastic SCM below:
Version control systems rank among the more affordable DevOps tools; the true costs lie in implementation. With this in mind, try to evaluate a system for its benefits, and how it can help you save in other ways.
It’s also worth choosing something that’s easily accessible to your whole team, no matter their technical background. As previously mentioned, everyone should be given the chance to contribute autonomously. When your teammates’ needs are not met, hidden costs can start to surface.
If your version control system is challenging to grasp, for example, you’ll have to spend more time teaching others how to use it, as well as creating dense internal documentation on version control best practices. And when teammates can’t work independently, internal frustrations can begin to rise. Whatever you choose, it shouldn’t stand in the way of your team’s overarching success.
Version control isn’t just about managing your game’s source code. The system you choose will also store other assets like business and procedural documentation, design files, tool configurations, and so on.
To keep these files safe, your VCS should provide multiple levels of protection and permissions. This will help secure your code and IP assets from outside intrusions – and safeguard them from the possibility of internal leaks, too.
Would you consider your team big or small? Do you work out of a single office, or are you distributed? Depending on these factors, you’ll need different levels of flexibility from your version control system. More than this, you’ll have to decide whether you’ll operate using centralized, distributed, or multisite workflows. Let’s look at the advantages of each.
A centralized workflow uses a check-in/push workflow to connect to your main server. Whenever changes are made, they are automatically stored in your repository as a new version. This way, you get powerful branching and merging without cloning your repository to multiple machines. It’s a simple and secure solution.
With a distributed workflow, you can check in, branch, and merge on your own time, without connecting to your main server. The advantage here is that remote teammates can work apart, at speed, without having to worry about slow networks or VPNs.
Multisite is like a blend of centralized and distributed workflows. At each location, teammates work in a sort of mini centralized workflow, where they share their branches and progress – easily merging, and pushing and pulling among the team, until they finally push to the main server, on their own time.
Multisite workflows are optimal for teams working on a shared codebase across different cities or continents. In this situation, you should establish a host server at each work site and then copy changes between those servers. If you don’t, the teams working at sites without servers will experience slower responses than others.
Now that you have an idea of what’s at stake when choosing a version control system, it’s time to evaluate some of the most popular options out there.
Open source, free, and easy to use, Git is one of the most popular version control systems around. It features distributed repos and strong branching and merging capabilities, but can’t handle large binary files as effectively as other solutions on the market.
Helix Core is an enterprise-level version control system used by game studios like EA and Ubisoft. This VCS features centralized repos and handles large binary files. However, it does not feature visual repos, so its adoption might be more challenging for non-technical developers.
Like Git, Apache Subversion is a free and open source version control system. It features centralized repos and can handle large binary files, but you must be connected to the main server to use it, which is not ideal for working offline, and could be a hindrance to larger or distributed teams.
Plastic SCM is a flexible version control system that supports programmers and artists alike. It excels at handling large repos and binary files, and as both a file-based and change-set based solution, gives you the capability to download only the specific files that you’re working on, rather than the entire project build.
Even more, Plastic SCM is the only version control system on the market that features visual branching. It can handle thousands of branches at once and doesn’t make you choose between centralized or distributed workflows.
Want to know what else Unity can do for you? Discover Unity solutions to overcome challenges at every stage of development, from big idea to big success.