Plugin system strategy

We are trying to figure out a strategy to customize the engine using decorative modules and plugins, without having to touch the inner core of Unreal Engine 4; can you provide us a strategy to manage this?

Hi Alexandre - what sort of customizations do you want to make? What sort of strategy are you looking for?

Hey ben!
This is actually a really generic question. Normally we develop many titles based on the similar gameplay structures. We saw unreal game framework, but this is not enough. We need to build a layer on top of it.

Each game we are going to make will have this layer. How can we plug this layer between engine module and game module? We don’t want to replicate this layer for each project. We are actually looking for the correct “Unreal Engine Way” to create this “common” layer. Maybe a plugin? A project containing only modules?

Ah, I’m with you. At the moment you’re limited to storing modules or plugins in the engine folder if you want them to be shareable between projects, though we have a task in the backlog to allow plugins to be stored in common folders outside the engine or particular projects.

There are a few modules in the engine distribution at the moment that are only there to be shared between game projects; the GameplayAbilities module, for example. Grouping your own modules under a subfolder in the engine (or using a common prefix to name them) is a good way to separate out your own code from Epic code so you can more easily merge new engine versions in the future, and something that I remember doing when I was a UE licensee before joining Epic.

Individual modules are quick to create, but I’d encourage you to group functionality into plugins where you can. Even if you have to store them in the engine folder, they allow a much higher level of encapsulation for features than adding raw modules into the source tree.

The name “plugins” is a little misleading - I often think “feature” or “extension” would better describe what they do, they’re much more low-level than the name may suggest. There’s nothing stopping you from deriving from classes declared in plugins from your game code, and they’re not limited to specific extension points. They just allow you to a separate content folder and collection of editor and game modules which can be enabled or disabled as a whole, which the engine can then load compile and load without the need for you to modify any existing code.

Hi,

We think this post contains useful information which we would like to share with our public UE4 community. With your approval, we would like to make a copy of this post on the public AnswerHub which includes the discussion but strips out your username and company name. Please let us know if you are okay with this.

Thanks!

Thanks!
What we are looking for is exactly a way to create a “common” layer for our products. That’s very interesting

as long as username and company are removed this is ok for us