author-pic

Georgi Tsaklev

Programmer struggling with art

Version Control for Games

Development Practice


Published on March 12, 2021

Version Control is one of the most important aspects of development nowadays (Spinellis, 2005). People make mistakes and hardware is volatile, and these are only a couple of reasons why years of progress in a project can evaporate in seconds (Spinellis, 2005). Text documents are the standard use case for version control, however, the gaming industry introduces a new interesting challenge for those systems - new types of files.

Challenges of Version Control for Games

Games are very large pieces of software that nowadays take anywhere from a gigabyte for an indie game to 150 gigabytes for a AAA game. However, most of the size comes from the art assets, rather than the source code. These art assets are mostly treated as unmergeable binary files by version control systems - differences between versions can't be easily seen and compared. This makes it increasingly difficult to work on such projects using a traditional version control system such as Git.

Solving Those Challenges

In my research, I found two main competitors in this space - Perforce and Plastic SCM. Both of them focus on solving this problem by enabling file locking to prevent conflicts and providing custom tools to compare versions of common art assets.

A big drawback of both appears to be their focus on corporations with a lack of affordable flexible plans and lack of a clear path for adoption for personal use. GitHub has made affordable version control accessible to everybody. Tools such as Perforce and Plastic SCM should focus on widening their audience and reaching their target industries.

The talented contributors behind Git have also been busy trying to solve this problem, they have implemented a tool called Git LFS (Large File Storage). It is designed to take such problematic files outside of the repository and only link them back. It has the ability to lock files as well, however, it is still in an early stage and not everything has been implemented with proper support and user documentation. To try and understand this part of Git, I have developed a Git LFS server (the repository is private due to deployment specifics still being embedded into it) and gained a good understanding of the state of the tool. However, I think it is not ready to replace tools like Perforce and Plastic SCM for large corporations because it is focused on fairly simple scenarios so far.

I am confident the team behind Git would extend and catch up to those specialised tools and would allow even small developers in the industry to gain the benefits of version control.

Going forward

Version control is not new to me and it is already a mandatory part of every single project I work on. However, there are still some questions I need to answer. It is clear the industry is sticking to the more specialised tools like Perforce and Plastic SCM as there are no authoritative articles I was able to find to state otherwise. I will have to experiment further and learn these systems in order to make an informed decision on which one to go ahead with for my studio. This would be vital as most people in the industry would be more confident with them and if I am using a different one it might become an issue to find capable employees and keep them happy.

For a student and indie game developer, however, Git provides a solid foundation for small to medium-sized games with the Git LFS system. I plan on setting up and using Perforce and Plastic SCM in game jams during my degree so that I have experience and have the information I need to choose between the systems.

Additionally, I plan to spend some free time contributing to Git in order to help other game developers in a similar position like myself.

References

Códice Software Inc. 2021. Plastic SCM. [Software]

  1. Git. [Software]

Perforce Software, Inc. 2021. Perforce. [Software]

Spinellis, D., 2005. Version control systems. IEEE Software, 22(5), pp.108-109.

If you like it, share it!