How to collaborate in Unreal Engine 5

An explanation of source control for artists, focusing on Git and Unreal Engine 5.

Matthäus Niedoba
January 12, 2023
9
min read
Content

TL;DR:

For frictionless collaboration in Unreal Engine you need source control. A source control system replaces incremental saving and a file syncing service like Dropbox or Google Drive. Rather than synchronizing your files continuously, you upload and download a list of files manually.

If you come from VFX/ Animation or Motion Graphics and are familiar with this pipeline, you quickly recognize that game engines like Unreal Engine, Unity or Godot work kind of differently. There is no scene file like in Blender, Cinema 4D or Nuke. So nothing that you can just send over Slack or do incremental versioning (v001, v002, v003), which is your basis for frictionless collaboration. And how do you share the project with your team? You may have heard the term source control or version control. We will cover it here.

Why Dropbox, Google Drive or a NAS don’t work with game engines

Simple, because they sync changes instantly and because a game engine has no document file that you can save incrementally. An Unreal project consists of multiple files that are linked together. E.g. when importing an FBX to Unreal, it will convert that FBX to a .uasset file in its own structure. Each re-import of a newer version of the FBX file will just overwrite the .uasset. Unreal will not create a _v002.uasset. That’s the opposite of Blender where you have full control over the linked .blend files.

That means that a game engine only understands one version of a file. The file on your disk (the .uasset), is basically the only version that exists. In the case of importing FBX files, you could have a history of FBX files (v001, v002. v003) but when modifying a Blueprint there is no way to do that outside of Unreal.

Now imagine working on only one version of a file on Dropbox. Two artists would constantly override each other and there would be no way to go back to older versions, when needed. That is the reality when collaborating on an Unreal project and why you cannot work together properly using Dropbox, Google Drive or NAS. The only way to do that is to constantly talk to each other. This will prevent you from working on the same file, which is impossible in a game engine workflow, where you frequently modify multiple files.

Source control

Source control (or version control) comes from software development. Writing an application is similar to developing a game. A compiler (think of it like a render engine/ exporter for software source code) only understands one version of a file. And to no surprise software has versions like 1.3.4 etc. These versions are managed by source control.

What is source control

Source control is a system that allows you to collaborate in Unreal Engine. It can distribute your files (alternative to Dropbox, Google Drive or your NAS) and allows you to have control over your file version (alternative to incremental saves). Generally speaking, it's the perfect foundation for remote and asynchronous work. Not only that, it also adds valuable things to your workflow:

Safety

You can always go back to an older version of your project (not just a file, but your whole project) if something breaks.

Restore or undo commits in a git history using Anchorpoint
With source control you can always undo unwanted changes

Transparency

You always know who did what at the time. Using incremental saves, you are adding your initials (and some are adding the date) to the file name e.g. 20230111_character_modelling_mn_v023.c4d. Using source control that is no longer needed, because this info (date and your name) is stored in the system. You won’t even add the incremental number. Your filename would be character_modelling.c4d which is shorter, because all the other information is in the source control database.

Git commit history in Anchorpoint
Every change to the project is visible in a log

Control

As the name source control suggests, you have control over your file versions and files in general. Where e.g. Dropbox is syncing constantly, a source control system has an explicit “upload” and “download” button. Furthermore, you can also choose which files should be uploaded, and which should not, e.g. cache files.

Unreal Engine project folder for source control
You can specify exactly which files are uploaded to the server and which are not. In an Unreal Engine project it makes no sense to upload folders like "DerivedDataChache", because it contains a lot of cache data that only causes garbage.

Source control for Unreal Engine

Anchorpoint is an artist friendly desktop application that allows you to collaborate on Unreal Engine projects using source control with Git.
Learn about Anchorpoint

Source control vs Multi-User Editing in Unreal Engine

You are probably familiar with the Multi-User Editing feature, which allows you to collaborate on a scene in Unreal. While this is convenient for editing a scene together, it has nothing to do with saving and distributing your files. This is what source control takes care of. Source control does not care how you modified your scene, whether you did it alone or with multiple users. It only understands that a scene has been modified and will allow you to create a new version.

How does it work

While there are different source control systems out there, at a high level, they work pretty similar. First of all, there is a central server that has all the files. In most cases, it’s in the cloud. Everybody has a local copy of the Unreal Engine files on their computer. It’s not like working from a NAS, where everybody works directly on the server. A workflow with 2 artists can look like this:

Source control (version control) explained for artists
Everyone has a local copy of the project and the synchronization goes through a server, which is the source of truth

Artist A (You)

  1. You work in Unreal
    You import new assets, modify shaders and you are editing the map. You save and overwrite existing files. The end result is a set of modified files (Usually a list of .uasset and .umap files)
  2. The source control system detects all of these modified files and shows them in a list
    You will either use a desktop application that does that or a plugin in Unreal Engine, which will show you the list of all modified files.
  3. You upload these files
    It’s common to comment on what you have done. E.g. “I changed the light in the scene and made it look warmer” and press an upload button. The source control system will now send your changes to the server.

Artist B (your best friend)

  1. Works in Unreal, just like you
    Normally, your friend will be working on another part of the project. Modifying another map or asset. He is not interrupted by your work, because he has a local copy of the project on his computer.
  2. The source control system sees that there are new changes on the server
    Your friend will see the list of your modified files and your comment
  3. Your friend is downloading your changes
    After the download, your friend has the latest version of all the project files
  4. Your friend is uploading his changes
    As you did, he will add a comment and upload a set of changed files.

That’s all in a nutshell. This may sound overengineered and complicated, but it isn't. Once you create a habit for it, it just happens. And, you have a detailed history of comments, so you can see how the project evolves.

Source control systems

Once we have figured out the theory, let’s get practical. There are basically four source control systems for Unreal Engine to mention. Unreal has a plugin for all of these. We also wrote an article that does a deeper comparison of source control systems.

Perforce

Mostly used in AAA game studios. Perforce is a well established source control system that works well at scale.

Git

The most popular source control system for software developers. Git is open-source and has the richest ecosystem when it comes to community, tools and cloud providers. Nowadays, it's a great alternative to Perforce.

Subversion

A pretty old but solid and simple source control system.

Plastic SCM

The newest system out there. Since 2021 it has been owned by Unity and is also great for game development.

Why Git

Freedom of choice where to host your files

Git has by far the biggest ecosystem when it comes to hosting providers. You may have heard of GitHub, which is the most popular service to host software projects using Git as a source control system. To avoid confusion: Git is the source control system and GitHub is the name of the company that builds their service on top of Git. Next to GitHub there are other providers with better pricing structures for huge Unreal projects such as Microsoft Azure Devops or Atlassian Bitbucket. You can also ask your developer to setup your own Git server if you want more independence.

Popular among developers

A project in Unreal Engine needs artists and developers. Most developers know Git and can always provide help when something breaks. Furthermore, Git has a rich ecosystem of tools that developers love. Anchorpoint takes care of the artists and makes Git approachable to them.

Cost-effective

When you do your research on Perforce, you will quickly find out that it’s very expensive, especially when you want to scale your team. Furthermore, it is usually necessary to setup your own server which requires time and technical skills. It's much easier in the world of Git, where you have the rich ecosystem mentioned above.

Open-source

That means no vendor lock-in. You can always get your production files without relying on a company. It also has an active community that develops features and provides help when something goes wrong.

Working at scale

This was not possible back in the days. However the latest development of Git allows us to work on large scale projects. Microsoft puts a lot of effort into making Git work at scale as it uses Git to develop the operating system Windows.

Furthermore, Unreal Engine 5 introduced the one file per actor feature, which allows you to work with multiple artists on the same map. You are not blocking each other, because changes are stored in a lot of small .uasset files, instead of one huge .umap file.

What Anchorpoint adds to Git: UX

Git by itself is not very friendly for artists. Anchorpoint changes that by providing a simple desktop application that does all the complicated things under the hood and provides a three-button solution for artists.

How to use Git with Unreal Engine 5

Unreal Engine comes with a plugin for Git, which we don’t recommend using. The reason is that it slows it down and cannot display changes very accurately. It’s better to use a desktop application like GitHub Desktop, GitKraken or Anchorpoint to push and pull (that's Git lingo for upload and download) changes from the computer to the server. Anchorpoint is made for artists, while GitHub Desktop and GitKraken are designed for developers. It takes all the unnecessary complexity away and works well at scale. We tested it with almost half a million files.

Summary

Don’t be scared about using source control in your workflow. Yes, it’s a slight habit change when you are used to saving incrementally. However, working in Unreal, it is the only way to collaborate with your team. If you are not a developer, you can try Anchorpoint which should make that process easy for you.