When should I build the engine from source?

So far using the engine I see that there are two ways one can use the engine. (correct me if I’m wrong)

1.Augmenting over pre-compiled core game-play classes like AActor APawn etc (which are compiled into the binary?) with access only to H files for those classes

2.Take the whole source code and customize the core classes Actors , Lights etc. and even the editor

Now the case is I don’t want to migrate all my work when I realize that pre compiled binaries need to be customized and then take the pain of moving everything to setup no 2 above.

So say the case of a FPS is the pre compiled version enough for this or should I consider the source build so as to have full control ?

Also doesn’t case 2 means that I’ll need to recompile a new copy of the engine for each project if I want them to have different core classes?

  1. You may face some problem building your game if it is not compiled on your own system (It happened to myself).
  2. You may face some problem building light maps on pre-compiled version (It happened to myself).
  3. If you are trying to do everything by Blueprint then you are less dependent on source codes of engine.
  4. Migrating is not that hard, what you need to do is to compile your engine, then you must configure it as a valid installation of engine (find UnrealEngine4.x\Engine\Binaries\Win64\UnrealEngineVersionSelector). Now all you have to do is to set your project version to new installed version (fined Documents\Unreal Projects\ [YourProj][YourPtoj].uproject).
  5. You are not going to change core classes of engine like AActor, APawn etc. those are sacred classes, all you do is to create classes inheriting from them, so your are extending them not modifying them.
  6. It is better to compile whole source of engine at the beginning of every new project but it is only once per project. next time you are going to compile you can choose to compile only your added codes and classes not the whole engine again.

I did a quick tutorials about this matter. Hope it helps: