What is the right way to make source level changes to the UE4 engine and package and distribute the new prebuilt editor and required assets to an internal development team?
The launcher that Epic releases that autoupdates the editor is very useful but I’m not sure how to effectively redistribute custom version of the editor/source to internal teams.
If I made a custom installer with nullsoft for example I’d need to install all the assets provided by the epic installer (all the stuff inside Engine/) AND modify registry keys so the engine code looked in the right spot for all these right?
I guess I’m not sure how to properly version the Engine/* assets provided by epic as part of a version of UE4 and keep them compatible with a custom version.
If you are wanting to distribute your own custom builds I would suggest using the GitHub source code to build your own binaries. You can find instructions on how to clone the repo and build it yourself on the GitHub page.
Getting the binaries to your team should be as simple as distributing the built binaries along with the data in your cloned repository. The method by which you distribute this is entirely up to you (you could check them into VCS, or create an installer).
That doesn’t really answer my question? I already know how to build the binaries.
There are a ton of files that the UE4 installer puts inside the Program Files area. Simply passing out new binaries isn’t going to allow a team member to run the tools, they need all of those files and likely registry keys.
If the answer to this is to have everyone download and install UE4 from the installer provided by Epic my question is then how can that be versioned in our VCS? Our version of the tools are built from a particular version of the source.
I’m a little confused why you would be running any kind of installer if you are building your own binaries from GitHub? Once you have completed an editor build from the UE4 source you should be able to run straight from the build directory.
I need to distribute that build to other people.
You could distribute the entire build directory through your version control (git/hg//perforce/svn) if you wanted, but be aware it will contain large binary data.
Alternatively you could simply copy the entire folder to a network share if you wanted a more crude approach? There is nothing outside of the UE4 directory that is required for UE4 to work, except for shell extension (which users can enable by running RegisterShellCommands.bat in the UnrealEngine/Engine/Build/BatchFiles/ folder once copied locally.
This clears up my confusion. I was very confused…I just looked in my GitHub cloned folder and I see it has a Content folder. For about 10 minutes I was thinking that the UE4 engine actually generates that content but it actually looks like all that stuff is in the Req.zip files that are hanging off of GitHub.
Originally I was under the impression that all of the Engine/Content stuff was installed by the UE4 Login/Launcher front end. I didn’t realize that was distributed as part of the requirements packages.
Thanks for your patience!
Ah yes! The binary data is packaged up in the requirements zip files to keep the repository size down. Once you’ve got those in the same folder as your clone you should be set to go.
Did I forget to mention how mindbogglingly cool UE4 is. I still occasionally pinch myself to make sure that this is actually really happening and not some sort of uber nerd dream.
Thanks, I’ll pass on the compliment
See this page for how to package a custom from-source build of UnrealEditor for your team: Distributing custom build to team - C++ - Unreal Engine Forums