Choosing a Git hosting provider for game projects

How to choose a Git hosting provider for game projects is a question that is often asked around. Game projects differ from the typical software project in size, team profile and requirements.

If you’re using GitCentral, you will most certainly need a remote repository to host your project. In this article we will go through some of the major Git hosting providers and compare them for this particular use case.

So what are the specific needs of a game project that make it special?

  • Confidentiality: In most cases, you don’t want your game’s source and assets to be available to everyone out there. Especially when your game is going to attract some attention from players. You will want to control the narrative, how to announce your IP or new features, and having access to the repository will let anyone know what you are doing. This is also a security issue: access to your source code could make it easier to cheat or to exploit your game.
  • Size: A game project is much larger than an average code project due to all the assets in binary form. For instance, all of Unreal’s uasset and umap files, but also work files from external tools such as Photoshop or Maya, which tend to be rather heavy. Git is notoriously bad at dealing with large files and its decentralized model requires full access to the entire history locally. This means your computer would have to store all binary files of the project, even those you don’t need, and enough data to rebuild any version of those files. Fortunately, there has been one major effort to solve this problem, Git-LFS. This is a mandatory feature for GitCentral, so we will only look at hosting with Git-LFS and we will be looking at how much data you can store and at what cost.
  • Project Management: Unlike open-source software projects, game projects often need centralized management tools. Several people in the team need to collaborate on features at the same time. Milestones are a collaborative effort towards a certain date or set of features, all of which needs to be tracked. Good project management tools are extremely important to a game project and we will review them.
  • Users: Most users of Git are programmers. Programmers are used to dealing with command line tools and less than ideal user experience. Game projects have many different kinds of users, such as Artists and Designers, who will easily get confused if the user experience is not great. We will look at the various tools offered by those hosting providers and evaluate ease of use and user experience.

We will compare the four major hosting providers that fulfill these criteria: GitHub, GitLab, BitBucket and Microsoft Azure DevOps. If you know of another service that is comparable or better than those, please let me know in the comments and I will try it out.

Please note: this study was done in May 2019. Pricing and services of these platforms can evolve rapidly and by the time you read this, it may no longer be fully up to date.

GitHub

If you’re reading this, you should already know about GitHub. In recent years, GitHub has become ubiquitous for collaborating on code projects and hosts a great number of open-source projects. For instance, Epic uses GitHub to share UnrealEngine‘s source code.

As it has become the standard, we will use it as a point of comparison for the other hosting providers.

Tools and workflow

GitHub has become famous for its forking and pull request workflow. This workflow works great for open-source software projects where collaborators can be anyone and you do not want them to work in the main repository which you moderate. However this does not fit for a typical game team where everyone is trusted and collaborates in a single remote repository. As a result, GitHub’s UX may sometimes feel inadequate for private and centralized projects, since it is not their main audience.

GitHub comes with several project management and software lifecycle tools. Pull Request can be used to perform code reviews. There are also issue tracking tools, a very basic wiki and a Kanban-style project management tool. While all of those are easy to use, they lack advanced features you may need as your project grows in size and complexity.

GitHub’s Kanban board

Pricing

GitHub’s pricing has changed over the years. Most notably, you can now create private repositories on the free plans but those are limited to 3 users. GitHub for organizations starts at $9/user/month with a minimum of $25/month which includes the first 5 users.

GitHub was also the main driving force behind Git-LFS, therefore it is not surprising that they support it by default. However you only get 1GB of storage without paid upgrades. On top of storage limitations, you also have bandwidth limitations which can quickly become the bottleneck as you add more team members. Remember that each new team members need to download the project and upload binary files of their own. Data upgrade packs cost $5/month each and add 50GB of storage and 50GB of bandwidth/month.

Here are some relevant links:

Summary

Pros

  • As the market leader, GitHub is unlikely to disappear anytime soon
  • Access to the largest ecosystem of software projects
  • Has the most add-ons and integrations to third party services
  • Most companies use GitHub to collaborate with third parties, even if they use other source control or hosting internally
  • Very good user experience overall, GitHub is easy to use and the interface is simple

Cons

  • Free plan is limited to 3 users and 1GB data
  • Bandwith is limited. Git-LFS service may be interrupted when your bandwith quotas are reached
  • Basic project management tools
  • No Continuous Integration out of the box
  • Expensive. GitHub for organizations starts at $9/user/month and $25/month minimum

GitLab

GitLab itself started as an open-source project, initially as a source code management solution which was later extended to a fully integrated solution covering the full product lifecycle. GitLab claims to be “The first single application for the entire DevOps lifecycle”.

Tools and Workflow

Over the years, GitLab has added an impressive array of tools to their platform.

Their Project Management suite contains more features than GitHub. The tools tare care of all the aspects of the agile development methodology. While you can still create tasks and issue boards using a Kanban-style display, you can also manage your product backlog, and track your progress through graphs. Of course, you can break down the work in sprints, milestones and releases.

GitLab’s kanban board

Where GitLab really shines is in Continuous Integration and Delivery. The suite is quickly becoming a serious competitor to dedicated tools such as Jenkins, by providing state-of-the-art CI features. More importantly, it is nicely integrated with the source control, uses infrastruture as code and can run as a managed service, so you can have your full continuous integration pipeline running in the cloud. Without this, you would have to host your own continuous integration service and integrate it with your source control provider. This is a game changer for decentralized teams as there is no longer a need to have an on-premises infrastructure.

On their website, you can find a very nice overview of all the tools included in GitLab and what they could replace. This is a very impressive list and it is no surprise to see more and more enterprises moving their internal infrastructure to GitLab.

Pricing

GitLab offers several plans, ranging from a free plan with unlimited users and repositories to enterprise plans which contain the full suite of tools. The more expensive the plan, the more features are included. Enterprise-level support and project management features are only included in the most expensive plans, but considering all of the features, the high price may very well be worth it for large organizations.

GitLab can be used as a managed service in the cloud or operated on-premises. This can be very important for you if the company grows into a bigger company with an office, an infrastructure and needs to control all of its processes and data. It’s another reason why very big accounts are using GitLab internally rather than a managed solution like GitHub.

For Cloud-hosted projects, which is the focus of this article, the data limit is set at 10GB per repository. There is no option to purchase additional Git-LFS storage at this time. This severely limits the usability of GitLab for games. There is a proposal to allow users to purchase more storage space but it has not been implemented yet.

Summary

Pros

  • Free plan includes unlimited users and repositories
  • Impressive suite of tools that can cover every aspect of the product lifecycle
  • Can be hosted on-premises
  • Open-source means you can extend it to your needs
  • Very good user experience
  • Large ecosystem of integrations with third party services

Cons

  • 10GB Git-LFS hard limit

Atlassian Bitbucket

BitBucket is another hosting provider that has been around for a long time. It is part of Atlassian which is (in)famous for Jira, the industry standard issue tracking and project management software. Atlassian has also acquired Trello, perhaps the most prominent kanban board tool at this time.

Tools and Workflow

BitBucket comes with a limited set of features out of the box. These include the most important features for code collaboration such as code-review tools. BitBucket also comes with a managed Continus Integration solution which is a very welcome addition.

On top of this, BitBucket is natively integrated with Trello boards, and of course Atlassian Jira. While this may seem bare-bones in comparison to GitLab, it is important to note that Jira and Confluence are some of the most powerful and widely used project management tools available. They require an additional subscription but enable the most complex workflows that major games studio rely on.

Pricing

BitBucket has several plans, each coming with more Git-LFS storage included and more build minutes for your CI pipeline. You can purchase additional upgrades for more data and more build minutes.

If you want the full suite of Atlassian tools, you will need to purchase an extra subscription to Jira and Confluence.

Summary

Pros

  • Integration with Trello, Jira and Confluence
  • Can be hosted on-premises
  • Integrated Continuous Integration
  • Pricing is very competitive at $2/user/month

Cons

  • Smaller ecosystem of integration with third party services
  • Wiki and Project Management tools must be purchased additionally

Azure Devops

Microsoft Azure DevOps (previously Visual Studio Team Services and Visual Studio Online) is Microsoft’s take on Git hosting.

Contrary to popular belief, it does not force you to use Visual Studio or Microsoft Azure. Azure DevOps is in fact an evolution of Microsoft’s source control system, Team Foundation Server, now offered as a managed cloud service.

It is important to note that Microsoft is internally using Azure DevOps as their development platform, and that their strategy as of late has been to heavily invest in managed services such as Office 365. We can therefore assume that the range of tools and the user experience will improve. It is, in my eyes, a serious competitor to keep an eye on.

Tools and Workflow

Azure DevOps comes with all the source control management tools including code review, as well as Continuous Integration pipelines hosted on Azure, and a storage for build artifacts.

Moreover, Azure DevOps comes out of the box with a fully featured project management tool. The workflow can be customized to follow the Agile or SCRUM methodology, and even customized beyond for very specific workflows. The backlog can be broken down into Epics, Milestones, Sprints, Tasks and Sub-tasks. There is of course an issue tracker integrated.

Azure DevOps’s kanban board

That being said, Azure DevOps’s suite of tools may not be the easiest to use. I have been using Azure DevOps for my personal projects and I am very satisfied with it, but I will admit that the interface can get confusing sometimes.

The important takeaway is that this is a fully featured suite of tools and a team could use this as their one and only collaboration platform.

Pricing

Azure DevOps is free for up to 5 users, with unlimited repositories and virtually unlimited data storage! For more than 5 users there is a pricing per user per month where the cost per user increases with the team size.

Continuous Integration is of course billed separately as is any process that requires usage of Microsoft Azure’s cloud services.

All of the features are available in all the plans which is great and doesn’t make you feel like very useful features are locked behind a paywall on purpose. The pricing is very transparent, you pay for each user in your team and for the cloud resource usage.

Summary

Pros

  • Supported by Microsoft (although this may not be a pro for everyone…)
  • Entirely free for 5 users with all the features
  • Fully featured Project Management tools
  • Integrated Continuous Integration pipelines
  • Integrated with Microsoft Azure

Cons

  • Complex User Experience
  • Cost per user increases with team size
  • Less add-ons and third party integrations than its competitors

Breakdown

From this table alone we can make a few statetments. GitLab has the best overall package with amazing tools and the best free plans. However, it is limited to 10GB projects. Azure DevOps is the only one to not charge for data and is my choice for personal projects. I use Git-LFS to store all sorts of binary artifacts, such as game builds or work files on top of my game’s core assets and data.

Pricing isn’t so easy to compare in this form. In order to determine the most cost-effective solution, you will have to do the math with your own project’s characteristics in terms of users and size. For the sake of the argument I will take two examples that should represent common project profiles.

Team A is a relatively large team of 20 users with a very large project that requires a lot of storage.

Here is how the cost scales with storage (note that GitLab is not present because of the 10GB limit):

Team B is a team working on a small project of less than 10GB.

Here is how the cost evolves as they add users with each of the hosting providers:

Conclusion

Choosing a git hosting provider that best fits your game project is a very important decision that has to be taken early-on. There are many options out there with complex pricing plans and differing feature sets.

Looking at this study, there isn’t a clear winner that overshadows the others on all aspects. Depending on your needs, team size, data usage and project complexity, one may be better than the other. However, let’s look at the data and try to provide some guidelines.

As we can see, data and storage costs quickly become negligible compared to cost per user. Team size will be the main factor that forces you to choose one hosting provider over another. When making your choice, bear in mind that your team may expand, as you invite more people to collaborate including temporary collaborators. Changing the hosting provider later in the project is not going to be quick and easy, so plan ahead.

With that said, here are a few guidelines you can use:

  • For a personal project, or a very small team that will stay under 5 users, Azure DevOps is the best solution. It is completely free and its unlimited data storage and integration with Azure CI tools offers many possibilities.
  • For more than 5 users and less than 10 GB, GitLab is an amazing solution and the platform itself may have the best tools out there. When the limit of 10GB is lifted and depending on the pricing of data, GitLab may end-up being the best hosting service.
  • For large teams and projects, BitBucket is the most cost-effective solution. Its integration with Atlassian tools will get you close to an “enterprise experience”. If your budget allows, you may want to consider upgrading your source control to more suitable options than Git, but this will be the subject of more blog articles.

Remember that pricing of those services may evolve rapidly. In fact when writing this article I was quite surprised to see that my previous assumptions were now wrong. This information is valid in May 2019, but I expect that by the end of the year the situation might have changed again.

Posted by Samuel Kahn