Well we are hoping not to have much changes in the engine, but we do have some. So the idea is to separate engine changes into a separate branch that only engine programmers will work on and have the distribution for artists and game programmers in another location. When just building (non-rocket), I noticed that there are some dependent files that get removed from a temp directory that causes the engine to build when first compiling the game. The rocket build packages it all up and I donāt have to worry about what dependencies are needed. One main goal is to prevent game programmers from having to build the engine and not worry about accidentally hitting the rebuild or clean from the solution. So itās a very convenient way of getting a distribution out for the team; setting up our build machine to pull source changes, build and submit.
Plus itās kind of cool figuring out epics build process.
The rebuild build button without a confirmation is beyond evil We have some own engine modules that contain common functionality that we reuse, so there is where we got a ton of changes.
I tried your addition and was successful in building a local build up to the point where it tried building the DerivedDataCache. At that point, the editor cmd failed because it could not load a DLL that it was looking in a VS2013 folder. Apparently the build script only copies the VS2015 folders in ThirdParty binaries, even though all my environment is supposedly 2013. By manually copying the VS2013 folders, I managed to make it work. Not sure how I can force the whole rocket process to assume VS2013. I also had to explicitly add a ThirdParty folder that was specific to my build, but I donāt see where the list of ThirdParty things to be included in Rocket build is.
Any pointers?
Edit: found the file InstalledEngineFilters.ini which seems the likely culprit
Iām guessing you are on 4.10. I havenāt touched that version yet. However, if you donāt need to do the DDC, you can skip it by adding the -NoDDC parameter to the command line.
You can read this to see if you need to build it or not: Derived Data Cache | Unreal Engine 5.2 Documentation
Thanks, I think I got it figured out now. Mostlyā¦
Only thing that I havenāt really managed is to redo a rocket build after a succesful one. There must be some config file somewhere that tells the build system that it has already created a rocket build and it doesnāt go into a full rebuild because of it. I tried deleting the LocalBuild folder and the Saved/Rocket folder but that only results in errors when I run the RunUAT command. I used forceincrementalcompile, so I was hopeful I wouldnāt need to do a full delete and cloning to get back doing a build after changing a few files. I am sure itās possible but I canāt figure it out. Anyone has done that successfully?
Well the below contains some chicken scratch notes I took as I went through this months ago, not quite sure how accurate they are or if I am missing anything.
The ā-CleanLocalā parameter deletes the manifests from Saved\GUBP directory. Those manifests determine whether a node script has been completed or not. If a manifest is there it will skip I think. So This might be all you need, but it will do a full build.
The ā-ForceIncrementalCompileā parameter prevents the build from cleaning.
A big caution, if I remember correctly I think it was this parameter that will complain if binaries are compiled in non-rocket before running the rocket build again.
The incremental build with minimal changes is also on my TODO list. I did write up a custom GatherRocket node script to not copy the entire rocket build over and just the changes. However, there are more files that compiled that were unnecessary from a simple change.
This is what my thoughts on it (Just a reminder, Iām still using version 4.8.2):
Each node script has a list of dependent node scripts and a DoBuild() method. If you pass in ā-OnlyNodeā, the dependencies are skipped.
The node GUBP.GamePlatformMonolithicsNode (I think the name of the node is āUE4_Win64_Mono_Precompiledā) compiles in the DoBuild():
+ UE4Game Development.
The node GUBP.ToolsNode ( I think the name of the node is āToolsā) compiles in the DoBuild():
+ CrashReport (shipping)
+ UE4EditorServices (development)
+ UnrealCEFSubProcess (Development)
+ UnrealFileServer (Development)
+ UnrealLightMass(Development)
+ UnrealPak(Development)
+ UnrealVersionSelector(Shipping)
+ BootstrapPackage(Shipping)
I havenāt tried it, but I was thinking of writing a shell script that only removes those single node manifests and running those nodes separately with ā-OnlyNodeā and ā-ForceIncrementalCompileā, then also run my custom GatherRocket node script I mentioned earlier to package the changes.
There might be an easier way to do that. lol. I just havenāt gotten back into the build process yet.
Bumping this too as I have the same issue. If anyone from Epic is watching this, it would be extremely helpful if you posted some instructions on how to set up an environment, and what the process is to reproduce your launcher distributed builds. I work for a middleware vendor who maintain a UE4 integration, and our aim is to produce a Rocket build which we can push downstream to the subset of our customers who donāt modify engine source, and just want to have the off-the-shelf experience they get from the launcher distributed vanilla builds, but with our special sauce. Any help much appreciated!
And I build an engine based on various github forks that provide extra functionalities. And some of those forks have additional APIs and API keys which are restricted to my own machine.
We have a team of developers across two continents, each developer is using its own version for his/her own little specialty, then I merge the whole back into my engine. A custom build would be a boon to our development.
How to do Rocket build is also shown in this Answerhub thread. It actually ends up being pretty simple. Iāve had to make two quick changes for it to use VS2015 for PDBCopy as part of the process, and had to add the folders for the Templates as shown in the thread otherwise you may get an error. But once you do that itās one command line call and looks identical to the Epic launcher builds.
First of all, thanks to all who have contributed to working out how to get a Rocked build made. We donāt plan to make many changes to the Unreal Engine as a whole, but would like to be able to distribute a custom build to the team with Win64 + PS4 + Xbox One support.
Iāve managed to create a rocket build for distribution as per instructions on this thread with 2 target platforms Win32 + Win64. Now we also have access to PS4 and in future Xbox One portions of the Unreal Engine and Iāve added both those platforms to -TargetPlatforms=Win32+Win64+PS4+XboxOne but it still only generates a rocket build that only create Win32 + Win64 cooked builds. Is it possible to add the Xbox One and PS4 build targets to a rocket build and if so, how do you do this because adding the extra targets to -TargetPlatforms command-line parameter doesnāt seem to do anything extra?
This can be done but it requires source code modification. I suggest you take the question to the appropriate forums. (sorry, I do not have access to those.)