"Listening to your customers is the key to building great products"
At Diversion, we are building a next generation Version Control tool, with a strong emphasis on addressing the unique challenges faced by game developers. It’s no secret that the games industry is underserved by existing solutions (see here), but we wanted to hear first hand from game developers about the tools they are using, how they use them, and what challenges they encounter.
With that in mind, we ran a survey among professional game developers. Obviously, people are busy, and you need to show your gratitude for their willingness to contribute, so we added a raffle for VR goggles. We ended up with more than a 100 respondents before closing the poll.
We asked people what size of organization they are currently working for. We thought this could be important in order to look at usage patterns and challenges also from that angle. It is one thing to be an indie developer or work with handful of colleagues, and another to work in a large enterprise split across continents. 45% of our respondents work in small companies (up to 100 employees), 40% work in midsize companies (up to 1000 employees), 15% work in large companies (larger than 1000 employees). We’ll get to some analysis using this information later on.
Our main goal was to find out the distribution of version control tools among game developers.
Git is by far the most common version control solution reported by game devs (used by 82% of respondents). However, approximately 25% of those who use Git also use another version control tool in addition to it.
Other version control products used by survey participants:
There were also 2 respondents reporting using an internally built version control system (which might indicate a lack of adequate solutions, and is probably less than ideal for a game development company).
We looked further into the tools usage patterns, to see if they depended on organization size. Perforce is much more common in larger companies than in the smaller ones. More than 38% of respondents working for mid to large companies (companies larger than 100 employees) use Perforce, compared to 11% in smaller companies (under 100 employees).
Binary files, and especially graphical assets, are a huge problem (pun not intended) in game development. We wanted to check how game developers deal with this problem.
First, we wanted to check whether designers use version control to store the assets that they create. It turned out that nearly half of respondents (45%) say that designers in their company use cloud storage to store the assets that they create. We assume that part of the reason is the complexity of using version control (which we were able to correlate from other responses they provided), as well as large storage volume required to store versioned assets (as version control products don’t have a way to manage that).
Then, we wanted to check how common it is to keep graphical assets in version control (at least the end result of artists’ work). 78% of respondents who use Git and were familiar with the topic reported that graphical assets are also versioned. We’ve got a few more detailed responses explaining that only the final assets are versioned, which makes us believe this may be a typical scenario.
Since large files don’t work well in Git, we wanted to cross correlate this with the use of Git LFS. 59% of Git users reported they are also using Git LFS to handle large files (some of them reported about problems with it, but this deserves a separate article).
From direct interviews we know that some companies who use Git to version code, are also using SVN or Perforce in conjunction with Git to store large assets. This of course is not optimal, as it complicates the toolchain and reduces the team’s ability to collaborate effectively. This might explain the high percentage of cross-usage between Git and SVN/Perforce.
While the global trend is to move hosting to the cloud via SaaS, all prominent Git vendors also offer their product as software that can be installed and maintained by the customer himself. We wanted to understand to what extent this trend is applicable to game developers. First, we wanted to learn how many of our respondents consume their remote Git as a cloud service vs. install the software on-prem. Approximately 22% of our respondents were not sure about this, but from those who did know where their Git is hosted, approximately 2/3 are using the cloud, and 1/3 are hosting Git on prem.
Next, we wanted to understand the split between the different Git offerings in the market. The majority of companies are using Github (41%), followed by Gitlab (30%) and Bitbucket (22%).
Finally, we wanted to explicitly ask about challenges. After all, we are building Diversion in order to better address existing challenges with version control products, so we’d better know what they are.
Many respondents that use git reported on challenges they are having with the solution. Here are the top 3:
We also asked about challenges with Perforce. One of the challenges that was highlighted by users for Perforce was complexity of use by non-developers (seems to be a common theme). Another challenge that stood out in the responses was a poor branching experience.
Finally, we asked about the existence of a dedicated team handling the version control tool. While this does not necessarily translate to a challenge for the end users, it does impose costs and an operational burden on the organizations. To this question, 64% of respondents who were familiar with the subject, indicated that such a team exists in their organization.
One common challenge that we haven’t included in the survey, but that has surfaced in interviews we conducted, is file conflicts. One company we talked about told us they have a slack channel where artists ask each other if someone’s working on a specific art file (of course, sometime this workflow fails). Others have reported frequent and impossible to solve merge conflicts in Unity or Unreal Engine’s files (scene files, prefabs, etc.). Some version control tools offer an ability to lock files (not Git); but this introduces other problems (people forgetting to unlock files). None of the companies we’ve talked to uses file locking - clearly, a better solution is needed.
As we can see, version control remains a significant challenge in game development. The most probable reason is that the popular version control tools were not built with game development in mind, or are just very old and were not built for today’s scale.
We continue to work hard to get Diversion to you. It’s currently in private beta to our early subscribers, and we plan a wider release in the coming weeks. Stay tuned!