2. #UE4 | @UNREALENGINE
Epic Games Japan
● French 🇫🇷
● Twitter : @AxRiff
● Hobbies : Whisky, Cats and Disneyland
● Currently Playing: Dragon Quest XI, COD Mobile, The Witcher III (Switch)
9. #UE4 | @UNREALENGINE
There is no such thing as THE perfect pipeline.
Rely on experience ! In this session, I will only talk to you about mine and
give you a few best practices. But donʼt trust me, trust yourself !
14. #UE4 | @UNREALENGINE
● Local build breaks after updating
● Finding the bad commit wastes time
● Communication issues, fights in the team
● Non technical members are scared to commit things
● Building locally every time is a waste
15. #UE4 | @UNREALENGINE
CI = Continuous Integration
A combination of software and hardware allowing to merge the team source
code and assets several times every day.
21. #UE4 | @UNREALENGINE
● Free Open Source
● Plenty of documentation and plugins
● Huge Community
● Commercial Support exists but is complicated
● Some plugins are unreliable
31. #UE4 | @UNREALENGINE
Build Machine - MacOS
No C++ and Shader compiling distribution on Mac,
So get as many cores as you can for your CPU.
If itʼs just for a build machine, no need for GPU.
High spec Mac Mini is good enough.
40. #UE4 | @UNREALENGINE
● Reduce dependency on CI framework.
● Work on it locally -> No more Jenkins master
● XML Based : easy to read and write
● Platform Agnostic
● Can be shared between projects
● Steep learning curve at first
41. #UE4 | @UNREALENGINE
● Agents: Group of nodes being executed on the same build machine
● Nodes: Sequence of Tasks
● Tasks: Build Process Step (Updating, Compiling, etc)
49. #UE4 | @UNREALENGINE
● Think of it as your own Unreal Launcher
● Created by Epic to deploy a non editable engine
● Easy to use for Designers and Artists
● Engine build only. Canʼt use it to build a project.
57. #UE4 | @UNREALENGINE
● Script located at /Engine/Build/BatchFiles/
● From build to package, do anything
● Highly customizable
● Command line based : nostalgic feeling ! <3
58. #UE4 | @UNREALENGINE
BuildCookRun, BuildGraph, InstalledBuild
● Depending on the situation, the best choice will differ
● I think adaptability is the most important thing in game dev, so I
personally use BuildCookRun most of the time.
65. #UE4 | @UNREALENGINE
You need a uproject to use RunUAT. You
can use a sample project or blank one !
86. #UE4 | @UNREALENGINE
Argument to zip all the assets in one “pak” file
93. #UE4 | @UNREALENGINE
● Manual Trigger
● For those “Hey mate, I need to show the build in 40 minutes to our
investor / boss / publisher, do smth plz lolwut”
● Contrary to the nightly build, faster is better so …
● Use -partialgc
● Donʼt make it clean
94. #UE4 | @UNREALENGINE
Incremental Build Flow
For DevKit deployment, check your platform
But you might get an idea
95. #UE4 | @UNREALENGINE
Instead of cleaning the memory when you run out of it, it will free it
up at the end of the packaging process
109. #UE4 | @UNREALENGINE
Argument Type Comment
ReadOnly Bool Make it false when Shared
Clean Bool Delete files that went over UnusedFileAge limit
Flush Bool Delete all DDC
DeleteUnused Bool Il false, never deletes old assets (overrides UnusedFileAge and Clean)
UnusedFileAge Int Limit of days after which an asset will be deleted, Fortnite sets it to 10.
FoldersToClean Int Max limit of folders to be flushed each time. ０ or -1 means no limit.
117. #UE4 | @UNREALENGINE
There are times you want to check the lights in the editor / game
In this case, build locally, and Swarm is your new BFF
118. #UE4 | @UNREALENGINE
Lighting Build - Swarm
With Swarm, you can distribute the task of
building lights between the computers of your
You will need a Coordinator. Your Jenkins master
should do the trick.
119. #UE4 | @UNREALENGINE
Lighting Build - Swarm
To add it at startup,
Create a shortcut the the Agent and copy it here.
121. #UE4 | @UNREALENGINE
● When you move or rename an asset in the editor, a Redirector is created to
know the ”new address”
● Super convenient feature but it has a tendency to bug, so you will need to
clean them up frequently
● Once a month is fine, but do it once a week in the critical phases of the
project (alpha, beta, gold, patch release)
127. #UE4 | @UNREALENGINE
Testing a Level on Device
So letʼs say your artist has just changed a characterʼs hair color and
wants to see how it looks on the release platform screen before
First, create an incremental build task on your CI software, and commit
the binaries to Project/Binaries/PlatformName
128. #UE4 | @UNREALENGINE
Custom Launch Profile
Then in the editor, click on the triangle on
the right side of of “Launch”, scroll down
and create a new Custom Launch Profile
In the profile, untick the Build step, and
then you can deploy the currently edited
level on the machine connected to the
computer, even without Visual Studio.
129. #UE4 | @UNREALENGINE
Build Machine Jobs
What I think a UE4 build pipeline should have :
● Engine Build
● Project Build
● Nightly Package
● Incremental Package
● Incremental Package for the Device Launcher
● Lightmaps Build
● Fixup Redirectors Command
● SharedDDC Cleanup Command
● SharedDDC Fillup Command
Any suggestion on what to add ? Tell me in Q&A !!!
130. #UE4 | @UNREALENGINE
● Epic uses Perforce. If you want to be as close as possible to our
workstyle, you know what to do
● SVN might be a little slow, but it is very reliable and still heavily used
● GIT is free, modern design choices and is very used for mobile and
social games (in Japan !)
SVN and Perforce have Editor support !
GIT too, but itʼs still experimental !
134. #UE4 | @UNREALENGINE
Get the latest version anytime on GitHub and Perforce.
UGS dev is unrelated to UE4, so always get the latest version even if
youʼve locked your engine version !