Inside Unreal - Version Control Fundamentals - January 16 - Live from HQ

At the core of any successful project lies planning, tools, and execution. To reduce risk and improve collaboration between developers, agile teams often implement Version Control systems to record changes to files over time, allowing them to easily recall specific versions at a later point. On this week’s livestream, Arran Langmead will walk us through how to set up Subversion and Perforce and how to use the systems when working with Unreal Engine. Plus, we’ll also discuss the hardware and software configurations that might be the best for your team.

Thursday, January 16 @ 2:00PM ET - Countdown


Arran Langmead - Developer Relations Technical Artist - @ArranLangmead](
Victor Brodin - Community Manager - @victor1erp](

Slide deck
SVN documentation
Perforce documentation
Tools and Infrastructure for Large Teams | Unreal Dev Days 2019

Version Control Fundamentals | Live from HQ | Inside Unreal - YouTube

Awesome, I definitely have some Perforce questions I hope Arran can help with!

  • Is branching recommended? And if so, how should it be done? I’ve been trying to sort this one out and have an open forum post here with the steps I’ve tried, but I’m not sure if I’m going about it correctly.

  • If the above is true, can Perforce be configured to force branches, so all commits to master can be reviewed first?

  • If branches are used, can multiple commits be “squashed”](About pull request merges - GitHub Docs) so they appear on master as a single commit?

Our team is small, and our source control is split up between Git and Azure DevOps for code and task assignment, while Perforce is used for content. We’ve just started using branches in Git, and I’m struggling to find a way to manage the content side in a similar way.

Said the sage, master of the repo.

Very good Livestream topic !
If it’s possible and relevant, I want to know more about the way for a team to work simultaneously on the same level.

Once it would be great to do something similar for Git, because it can be used for free with MS Azure by small indie teams (max. 5 users, no project size or quantity limit), and probably it is not an negligible user base. Or I will do it! :smiley:

Biggest Questions I have:

  • How can you have a Review workflow for Blueprints
  • When will an efficient Blueprint Merging be possible

We are using Perforce in a Team of around 15 People for about 2 Years now, and made very good experiences with it. Just the two topics above are troubling us.

I was using git in azure for free,but i was having some problems with my local repo size. So i just rented a vps for $5/month and installed perforce on it. So much better, although i’m also testing plastic SCM and really loving the ability to work distributed/centralized (Although perforce has something like this, called edge servers). Since i mostly work solo, i think i’ll move to Plastic Personal since having the ability to work distributed and checkin to my local repo is so much faster than always work in the remote server. I’ll just use my vps remote server to replicate my main branch and have a cloud backup just in case (and use it when i work in my laptop).

Epic is researching ASCII files (assets saved as text).
May take years to be usable if at all.

Hi Arran - looking forward to it! Also - as a long time member of the London is Unreal meetup group I’ve seen you do great shader stuff - they should get you doing some of that stuff too!

[Question] Will you also cover (completely) free solutions like tortoise or similar?

Great! I love Subversion and that’s what I am planning to use with UE4.

I’d like to cast one more vote for covering git (at some point), as sivan has already mentioned. I know subversion/perforce is what you guys at epic use, and from the feedback here, it seems to be a solid choice. Nonetheless, there are lots of us using git, so don’t forget about us. Also, thanks much for all the awesome stuff you guys do. It is much appreciated. I could not imagine my world without UE4. -Kenneth

Can you go over c++ projects with perforce. Rolling back always wrecks my projects.

Looking forward to seeing this one. Just got Perforce set up and needed a video that can help the team understand it.

Would like to know what files and folders to skip when versioning in Perforce and how to do this best. For both projects and the engine it self. This is for a Perforce that are running on a server for several users. Also interested in a workflow for backing up projects running on a local installation of Perforce(mainly for versioning). Thanks!

Hi Epic!
P4 user here.
It would be nice if you, either today in the stream or through online documentation (this would be ideal) explain the things nobody can find online:

  1. What’s the process to get an Epic P4 user to access your perforce depots
  2. What’s the best way to upgrade the engine?

Point 2 REALLY needs proper documentation. All that the current documentation explains (and I’m very thankful for that even being bit old) is what to sync/not sync.

Right now, what we do to upgrade (and almost everyone we talked to about this) is this:

  1. download from the stream needed from Epic’s depot to a computer
  2. Upload all that to our depot to a stream just for that
  3. Merge whatever engine changes we have from our Main stream into the Upgrade stream used in #2
  4. Test everything works and copy the upgrade stream in to the main one.

Step #1 + #2 are very problematic, because we don’t know what kind of encoding Epic’s depot uses and there’s no way (or at least we couldn’t find a way) to keep the same r/w permissions in the files types. Every time we do this, we have to spend A LOT of time fixing problems due wrong r/w permissions in our end, which means that need to look the original config in your depot for the failing file type and modifying the permission in our end to match it through p4 console commands.

There’s a much better approach for all this: remote depot. But we can’t get access to it. Mainly because there’s no pipeline/process to manage p4 users with you Epic. It’s either opening a UDN threat (cross fingers) or sending emails to people you know at Epic (if you happen to know people there).

So please, make good documentation explaining the best way to upgrade using P4 and put a process to request and fix problems with P4 accounts. It would make our lives much easier.



Upgrading the engine isn’t that bad. I do it in an hour or so each time a new version drops.

  1. Unzip the new version. Don’t run Setup.bat yet as that’s needless content
  2. Upload it to a new branch in your P4.
  3. Integrate any engine level changes to the new engine.
  4. Done.

At that point you run Setup.bat locally and build the engine like normally and submit the binaries for others. Then just point your project to the new install locally (right click on your uproject and do Change Engine Version").

If you’re having type issues, make sure you are using the typemap Epic has:

Thanks for this - I’d love to hear from anyone who knows how to easily setup Subversion on a QNAP NAS. There are several docker images but I imagine there are some command line extras in order to mount a volume for backup storage etc. If anyone knows how to do this, I - and many others I expect - would love a walkthrough! Cheers in advance.