Novice opinions on Versioning for Game Dev
Recently I’ve decided to try my hand at some game dev using Unreal, but I didn’t know how to collaborate with others. For web apps the majority of content is text files representing how and where media is presented. In a web app, images, video, sound, and other media are not the main concern for a developer. On the other hand, a game is full of art! Textures on every surface, colors, materials, and lighting are all a major focus that is coupled with the code I’m familiar with. So where should all those files go, and what do we track for changes? I don’t know, but here’s some info.
Git
I’m familiar with Git so this was my go to but as I mentioned above about large files and binaries, I decided to look for other recommendations. To my surprise Diversion was at the top of the list of searches, despite having a Git (er…git like?) backend. To be clear. Git can be self hosted and will work for our use case after setting up Git Large File Storage, but after considering all the options, this was not something I wanted to pursue, but I will be trying Github with Anchorpoint
Diversion
Signing up for Diversion is easy enough, and you’re met with simple page that allows creating a repository.


I typed in an organization name and repo name, but later found that I had no licenses, and wondered what that meant. I was led to an application (like a form where you apply, not an app) where I could attest that I was an indie dev, and describe my project.
I opted out and moved on to setup Github
Github
Github free for an organization has a 10GB bandwidth limit, 10GB storage limit for LFS, 15GB per developer for code space, and 2GB push limit. There’s some other stuff, but these were most important for me getting started.

I saw no mention of LFS in my personal free Github account, which is what prompted me to make an organization. Setting up a repo required a few more clicks, as the platform has quite a few feature these days so the front page isn’t as clean as Diversion, but still not difficult.


Subversion (SVN)
Subversion is an open source version control system made by Apache. It’s 5 years older than git and the main difference is that Subversion is centralized, while git is decentralized. What this means is Subversion holds a working copy on the server and we need to be connected to it to commit changes. A Git repo, on the other hand, allows you to commit changes locally with no network connection to a central server, but checks for merge conflicts when data is pushed to the repository. Git is intended to be used asynchronously and when users are offline. This adds flexibility, but I’ve read that SVN is easier to use I don’t have as much experience with SVN, so I will be deploying an SVN server to try it out. Here’s alist of SVN clients, but I’ll also be tying it into Unreal. This will be the last thing I try, I’d rather get Perforce or Github working first.
Perforce
Perforce is another centralized version control system, but is not open source. Perforce seems to be a popular choice for Unreal users based on my research. I also found an article about Project Titan that describes the use of Perforce and some lessons learned so that should give me a jumping off point. I’ll be standing up a Perforce server because I’ve read that Perforce was designed to handle binaries and is made for artists! Unfortunately, there isn’t a “free” version like Git and Subversion, even when self hosted. Perforce does offer unlicensed usage, but despite being self hosted, the unlicensed version still contains limits on repositories and repo sizes. These things don’t make me very happy, but it’s unlikely I’d hit these limits at first anyway, but this is the only reason I might try SVN instead. If my self-hosted Perforce server was without limits, like git, then this would be a no brainer.
Summary
Git + LFS is free but self hosted, Github is free with limits but is cloud hosted as a SaaS. I’ll be using Anchorpoint as a client to add some additional functionality.
Diversion and Github are easy and cloud hosted, but Diversion requires an application process to get a license. Additionally, Diversion is a baby compared to the others, being in Beta in 2024.
SVN and Perforce are centralized and well supported by Unreal. SVN being open source and Perforce not. Both require hosting a server or a paid subscription to a SaaS provider. Assembla offers both Perforce and SVN, for example. I’m going to host on Oracle Cloud’s free tier and see what I can get away with.
