How to collaborate in Unreal Engine 5
An explanation of source control for artists, focusing on Git and Unreal Engine 5.
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 (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:
You can always go back to an older version of your project (not just a file, but your whole project) if something breaks.
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.
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.
Source control for Unreal Engine
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:
Artist A (You)
- 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)
- 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.
- 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)
- 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.
- 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
- Your friend is downloading your changes
After the download, your friend has the latest version of all the project files
- 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. Which system you choose, that is up to you. For us as Anchorpoint it is very difficult to provide a fair comparison, because we are specialized in Git.
Mostly used in AAA game studios. Perforce is a well established source control system that works well at scale.
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.
A pretty old but solid and simple source control system.
The newest system out there. Since 2021 it has been owned by Unity and is also great for game development.
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.
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.
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.
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.