Freeing Git for the Game Development Industry
Games are perhaps one of the most common types of computer (and mobile) software – games make up 21.8% of Apple’s App Store (as of June 2021) and a similar proportion of Android Play store. The video game market size is expected to reach $218.7 billion in 2024, growing at a CAGR of 8.7%.
The games are mostly available for PCs, mobile devices, and dedicated consoles, but they don’t stop there. The Metaverse has made strides in recent years, with over 15 million units of Oculus Quest sold to date, with games being one of the main attractions for its adoption, and they will remain a key part of the ecosystem. of the metaverse.
Being at the heart of the software economy, streamlining and optimizing game development results in immediate benefits and gains. Today, most games are developed using game engines such as Unity or Unreal Engine (there are several others, but these two dominate the market), where artists with little or no software development experience can create amazing works of art and collaborate with developers who write the code that drives the game.
These game engines have been around for a few decades now and have evolved significantly along with technology. They’re powerful enough to create cutting-edge 2D and 3D graphics, but their pricing (both include a free tier) is flexible enough to make them accessible even to indie game studios.
Nevertheless, game development is like developing any other type of software, which requires the implementation of software development best practices such as version control (SCM). Tools like Git, SVN, Perforce, and PlasticSCM (acquired by Unity in 2020 and integrated into the Unity development environment) are quite common in game development companies these days.
Note, however, that most of these tools were developed primarily to handle standard software source code, which makes them suboptimal for game companies that have unique requirements. Game development forums on the web are filled with discussions regarding release management tools, best practices, and methodologies. The consensus is that some fine-tuning of SCM tools and workflows is needed, as well as dedicated training for some people in these organizations to use release management effectively.
Unique challenges in game development
One of the unique differentiators in game development starts with something as basic as the stakeholders in the process. Game development has game designers who work closely with software engineers to create and deliver game software. The most popular platforms, Unity and Unreal, also have their own set of requirements and formats proprietary files for designers.
All of this combined, along with quality requirements and process compliance, adds a bit of friction when working with typical source control management platforms. Below, we’ll dive into each of them individually and see where they add friction in game development and how to remove that friction to bring the benefits of modern software delivery into game development.
The four major pain points unique to game development are:
- The extraordinary size of their files and repositories.
- Non-technical stakeholders being an essential part of the technical delivery.
- The complexity of conformance testing and other delivery requirements.
- Difficulty resolving conflicts in proprietary file formats.
We’ll also describe typical workflows and where game development can benefit from improved processes more aligned with other areas of engineering.
File and repository size
Some of the most popular SCM tools today are less suitable for handling large binary files (such as media files, which are widely used in games), as part of the project, despite popular engineering fields that require large file management (from game development to AI and machine learning). This remains complex and unresolved. Git, the de facto SCM in other engineering fields, for example, requires the use of a dedicated extension called Git-LFS to be able to handle large files efficiently. Using this extension is cumbersome to say the least, based on popular opinion, and adds an inordinate amount of friction, making everything slower for users.
Even tools capable of handling large binaries natively slow down the workflow due to functional requirements such as synchronization with a changelist or a branch. This requires transferring and replacing large files that are part of the set being processed, each time you check out or check out. This is true even if the files are not relevant to the current edit or current job. As a result, many game development companies use “ghost version management” for large binaries, using tools such as Google Drive or Dropbox, where versions are encoded in filenames or folders, and a manual process is applied to “assemble” these files. together into a cohesive project using the source code found in the SCM system.
Non-technical critical stakeholders
Designers and artists, who make up a significant portion of game development teams, are less accustomed to the relatively complex workflows of SCM tools (e.g. branching, verification, validation), despite being required to ship their artifacts coupled with code and using the same workflows as software delivery.
While this can be overcome with training, many organizations typically deal with this issue using tools such as Google Drive or Dropbox (which also eliminate the previously discussed large file size issue). This adds a lot of friction to training and onboarding, and even hiring talent. It also adds friction to other aspects related to file formats and their handling in typical testing, quality, and automation processes, which we’ll get to shortly.
Testing against compliance and gaming requirements
Game development has strict compliance requirements to ensure the quality of the final product, as well as to enable efficient and streamlined collaboration between different stakeholders. However, due to the nature of the files created, the disparity between software files and proprietary formats, it is quite complex to apply typical quality, testing and automation gates to gaming software. lots of manual intervention and extra tape to check the software against the relevant requirements.
The more human and manual intervention is required, the more friction is added to the process and the more error is likely to occur. Manual and human processes are far more prone to error. One of the ways in which game development overcomes this problem is to have a dedicated person on the design team (“technical artist”) who integrates the large binary graphics files into the SCM tools. Some companies have even built their own proprietary tools and plugins (and some contribute them to their communities) to overcome these limitations around SCM. However, these processes must be automated, as in other fields.
Merge proprietary file formats
Closely related to the previous challenge, it resolves conflicts in proprietary files and merges them into main/production. This too is largely the responsibility of the technical artist who must resolve conflicts in proprietary YAML and binary files. For lack of a better option, this usually results in manually reimplementing one of the conflicting features on top of the other and recommitting the resulting file. Basically, every game design merge conflict is like the worst merge conflict you’ve ever experienced in Git. So imagine how often this happens and the friction it adds to game development processes. Better support for more file formats and deployment processes can change that significantly.
Game development needs to be rethought
Gaming is a serious business with significant revenue streams and fierce competition, which requires game development to align workflows with more progressive software delivery principles to take greater advantage of automation, speed and efficiency. Many of the real challenges are closely tied to something as fundamental as what their SCM is capable of withstanding. To this day, there still seems to be no good solution to the engineering and delivery challenges this industry faces.
We have moved beyond theory and now have more advanced tools to overcome the many technical challenges posed by size and scale. Game development should be able to reap similar benefits from these advances. At Diversion, we believe the gaming industry should be first class citizens when it comes to cloud native engineering practices and should have the tools to support their unique requirements and workflows. Diversion offers a cloud-native and scalable git alternative.
We believe it’s possible to create a modern tool that helps address the unique challenges that game developers face with today’s SCM tools, most of which have been around for at least two decades and haven’t progressed as far as many. other engineering tools and frameworks. By working with leading game companies to help identify challenges and ruthlessly remove friction from their processes, we can align game development workflows with the delivery of elite software possible in other areas that impact directly to the business.