Chapter 5: Techniques for Teamwork in Unreal Engine
5.1 Importance and Requirements of Teamwork in Unreal Engine
Teamwork is very important in the development of Unreal Engine. A good Unreal Engine production team usually has: a project manager with good communication skills, an innovative set designer, a good 3D modeler, a technical artist who knows the UE material editor, an engineer who knows how to operate Unreal Engine, and a conscientious tester. Only the cooperation of the team will prevent the project from stalling for any reason.
Dividing Teamwork in an Unreal Engine Project
In an Unreal Engine project for virtual production, there are different tasks to handle; therefore, it is not necessary for every team member to build virtual environments in Unreal Engine. In our project, our team initially needs to build two virtual environments, so tasks are divided into finding suitable models or assets, modifying or customizing the assets in Unreal Engine or Blender, and constructing the virtual environments using the assets.
5.2 Version Control Solutions
This section provides an introduction to version control solutions and version control systems (VCS), explaining the characteristics of Unreal Engine projects.
Introduction
A Version Control Solution in this context refers to an integrated solution for version control and synchronization of Unreal Engine projects. It can be separated into two components: the version control system and a server with storage to host central or remote repositories where your Unreal Engine projects are stored. A version control system is a software system that provides synchronization and versioning of project files.
Characteristics of Unreal Engine Projects
Large file sizes
An Unreal Engine project often contains many large files, such as 3D models and high-resolution textures. The initial size of a project may not require much storage, but as the project grows, it will need more space measured in gigabytes.Diverse file types
An Unreal Engine project typically contains different types of files, many of which are binary files.
How These Characteristics Affect the Choice of Version Control System
It is possible that a version control system may not manage large files and binaries effectively. For example, Git itself does not handle large binaries well, but the Git extension Git LFS1 addresses this issue.
Version Control Systems
Categories of Version Control Systems
There are mainly three types of version control systems:
Centralized Version Control Systems
Centralized systems, such as Perforce Helix Core2, use a single server to store all versions of project files and their changes. This central server stores all versions of the project files and is the main repository for team collaboration.Distributed Version Control Systems
Distributed systems, like Git3, keep a complete project repository on each collaboratorβs computer. This allows team members to work offline, committing changes locally before pushing updates to the remote repository.Local Version Control Systems
Local systems are primarily designed for solo developers rather than virtual production teams.
Possible Version Control Systems for Unreal Engine Projects
This section references Unreal Engine documentation4, which describes methods for enabling version control within Unreal Engine. Three version control systems are discussed:
Perforce
P42 is a version control platform widely used in game development. Known as “Helix Core” or “Perforce,” it is utilized (internally) by Epic Games and stakeholders in our project. Although it is commercial software, it offers free use for small teams of up to 5 users (without hosting services).Subversion
Subversion5 is an open-source centralized version control system, distributed under the Apache License, Version 2.06.Diversion
Diversion7 is a cloud-based version control system.Git with Git LFS
Git3 is a distributed version control system, open source under the GNU General Public License version 2.08. Git LFS1 is an open-source extension that helps manage binary files and large files.
Version Control Service
This section analyzes the pricing of the version control systems discussed above to identify a suitable option for a student group. (The pricing data may change over time; please refer to the respective websites for up-to-date information.)
Paid Version Control Service
Perforce
Perforce does not provide hosting services on its free plan. If you are on the free plan, you must either find a cloud host or self-host the service9.Subversion
Since Subversion is open source, you also need to self-host or use a cloud service.
Free Version Control Service for Small Teams or Educational Purposes
Diversion for Educational Use
Diversion is commercial software but offers free use for educational users, allowing up to 100 GB and 10 users per repository. A user is classified under the Educational tier upon registration (verified at the time of writing)10.Git with Git LFS
As with Subversion, you need to find a cloud hosting service that supports Git and Git LFS. Both GitHub11 and GitLab12 are popular cloud-based platforms for hosting code repositories. With Git LFS, each free-tier GitHub account receives 1 GiB of storage and 1 GiB of bandwidth monthly, and every GitLab project gets 10 GiB for free. However, Git can be challenging for students and creators without prior experience, which may make it less suitable for Virtual Production.
Git LFS β https://github.com/git-lfs/git-lfs?tab=readme-ov-file ↩︎ ↩︎
Perforce Products: Helix Core β https://www.perforce.com/products/helix-core ↩︎ ↩︎
Git β https://git-scm.com/ ↩︎ ↩︎
Unreal Engine Collaboration and Version Control β https://dev.epicgames.com/documentation/en-us/unreal-engine/collaboration-and-version-control-in-unreal-engine ↩︎
Subversion β https://subversion.apache.org/ ↩︎
Apache License, Version 2.0 β https://www.apache.org/licenses/LICENSE-2.0 ↩︎
Diversion β https://www.diversion.dev/ ↩︎
GNU General Public License v2.0 β https://opensource.org/licenses/GPL-2.0 ↩︎
Helix Core Pricing β https://www.perforce.com/resources/vcs/helix-core-pricing ↩︎
Diversion Pricing β https://www.diversion.dev/pricing ↩︎
Managing Large Files on GitHub β https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage ↩︎
GitLab Storage Usage Quotas β https://docs.gitlab.com/user/storage_usage_quotas/ ↩︎