Building Engine from Source with Team

Hi,

First of all I’ll describe what we do here at Epic; as you’d expect, in general we don’t get content creators to build the engine themselves. Our process goes something like this:

  • Programmers check in changes into Perforce as and when they need.
  • Our build farm performs continuous integration of these changes, creating builds periodically and checking binaries into our depot.
  • QA pick up these builds and perform quick smoke tests on them to make sure they are OK to use.
  • If the build is verified OK, then a Perforce label is made that designates a changelist as a ‘Promoted’ build.
  • Artists then use a program called UnrealSync (source to which is located in Engine\Source\Programs\UnrealSync) to sync to the labels specified by QA. These are usually only the binaries and content required to run the build, rather than the whole depot. UnrealSync is not set up to work with SVN, unfortunately.
  • Content is not checked into our depots unless it is from a ‘Promoted’ build. This ensures that file versioning is straightforward (i.e. we don’t have to cope with file format changes from the ‘future’).

Now in your case you are using SVN, which has a different set of capabilities. “Labels” can be replaced by “branches”, for instance.

Using a separate repository for each “part” of the build may be easier from a data management point of view as the repository could get large with lots of binaries in it. I agree that extern-ing your Game & Engine directories sounds like a useful exercise if you plan on using separate repos. I think making a branch before a build is made would be convenient. Branches are lightweight and you may want to revisit that build at some point in the future.

As far as directories go, it depends on what you are building for, but in general you would want to these directories available for people to sync:

Engine build:

Engine/Binaries
Engine/Build
Engine/Config
Engine/Content
Engine/Extras
Engine/Plugins
Engine/Shaders

(Engine/Plugins contains source as well, so you could be more picky with what you sync from there - you don’t really need the /Source directories, for instance.)

Game build:

Game/Binaries

Artists should only need to work with these files/directories in their local working copies:

Game/Config
Game/Content
Game.uproject

Bear in mind that this is all only theory as we only use Perforce internally and have not tried SVN as a build distribution method!

One more thing to mention too - a shared DDC can be really useful when working on a team with many artists and anything more than a small project. I strongly recommend setting one up!