How to build an app similar to UE4Editor?

Hi - I’d like to build a 3D application with UE4, similar to UE4Editor, that essentially layers a Slate UI on top of a game, accomplishing the following:

  • Uses its completely own Slate-based UI
  • Loads and runs a typical UE4 game project
  • Can render the UE4 game project inside multiple Slate widgets from different camera angles (think split screen multiplayer)
  • Loads uassets directly, like UE4Editor, not cooked data
  • Is built monolithically (if possible)
  • Ideally it would launch much faster than UE4Editor (e.g. by linking monolithically and/or skipping not needed modules)

How would I architect this the best, I mean in terms of module layout, entry point, etc.? I.e. create my own launch module that sets up its own Slate application? Somehow hijack and suppress UE4Editor?

I am very familiar with UE4’s internal working, have worked a lot with UE4 & Slate in the past, so please feel free to talk shop with me!

Thanks!!!

I can give you a some hints as this is quite complex quastion and i didn’t study possibilities myself

You seam already understand that best approach to it is to make a “game” that acts like tool, rether of seperate slate application which is possibile, as you really need engine do you? So in terms of “module layout” nothing really changes you will build it as standard game with engine code, editor is actually build in similar fusion. Now here biggest challenge, you probably won’t be able to use any edtior code for 2 reasons:

  1. Depencies, editor code for functions you looking for are so integrated that you might end up needing entire editor anyway.

  2. I don’t know what is intentions of you “3d application” but distribution of editor modules are very restricted by EULA, so read it up first before you start doing anything:

So lot of things like “Loads and runs a typical UE4 game project” and “Loads uassets directly, like UE4Editor, not cooked data” most likely will be needed to be rewritten by you. And remeber to read EULA to see what you can do and what not

Now i can give you a hint to how override code to lowest parts of the engine which might help you a lot. UGameEngine and UEditorEngine class contains the core of the engine including it’s initiation process for it and you can override it. Make class based of on whatever of those and set this in Engine.ini:

[/Script/Engine.Engine]
GameEngine=/Script/Engine.GameEngine
EditorEngine=/Script/UnrealEd.EditorEngine
UnrealEdEngine=/Script/UnrealEd.UnrealEdEngine

Also study code of original classes so they know what they do and to not terminate any useful code.

There might be way to do so with separate slate application, if you interested study how programs like UnrealLightmass or UnrealFrontend is made in Engine/Source/Programs maybe oyu find the way somehow

And remember read EULA carefully so if what you doing is in borders of rules.