I want to provide our artists and designers with a periodically updated, instantly usable binary version of our custom build of the UE4.11 editor and engine. The only source code that they need to build regularly is our game code.
I also want to minimize the amount of engine code and data that we have to retain in our local Perforce depot while providing hooks into our Jenkins CI server for automated testing.
The first approach I tried was to build the editor from a pared down subset of the Epic Perforce depot biased towards Win64. This weighs in at around 6GB initially (dominated by third party libraries), growing to 40GB after building the Development and Development Editor solution configurations to provide a full complement of binaries.
The build time was around 15 minutes when using distribution and the results, excluding intermediates and debug information, can be compressed to a very portable 1.5GB. This looked promising.
Unfortunately, after running UnrealVersionSelector and opening a 4.10 project from the editor (for conversion to 4.11), UnrealBuildTool instigates a time consuming engine/editor build, ultimately failing to write UE4Editor-Core.dll (which is in use by the running UE4Editor process). The user experience when distribution is enabled is a progress bar that sits at 100% for the majority of the build, leading to confusion/frustration. Invoking UE4Editor with -rocket speeds the process up, but it ultimately fails in the same manner.
I amended the build phase above with -precompile in the hope that statically linked libraries would save the day, but the new binary was identical in size and behavior/failure to the original, suggesting either that I’m doing something wrong, this option has no effect, or it’s not being propagated through the build batch file and UnrealBuildTool.
The runuat gubp -Node=GatherRocket approach fared better but required many more files to be included in the depot (e.g. templates, starter content, and IOS/HTML5 materials) and didn’t take advantage of build distribution, taking around 2 hours to complete, albeit in both regular and DDC flavours.
The resulting editor binary worked as required, converting and opening the legacy project without an engine rebuild, but the lengthy build process is too much of a burden for our programmers when they’re trying to incrementally test and distribute updates to the wider team.
Having already spent quite a lot of time on this and conscious that others have asked similar questions with limited success, I’m hoping that somebody at Epic can provide some assistance.
Key questions include:
- “is it possible to avoid the engine rebuilds in my first scenario?”
- “is it possible to dramatically reduce the footprint and overhead of GUBP?”
- and/or “are there any practical alternatives for providing artists and designers with bespoke editor binaries?”