Supporting multiple Unreal Engine versions for my plugin

Hi

Im trying to figure out a way to support multiple Unreal Engine versions (4.17 - 4.20) for my plugin. One way is to submit multiple plugins, each specifying the EngineVersion in the .uplugin file corresponding to the Unreal Engine version I want to support. Is there a better way of doing this where I do not have to manage multiple plugins?

Thanks
Sanchit

Hey @sanchitgarg, thanks for asking. Currently, the binary/api compatibility of UE4 C++ requires that we build different versions of your plugin against each version of UE. So you’re correct to edit the EngineVersion in the .uplugin to differentiate which binary each version should be built against. Please take a look at the Code Plugins section of the Marketplace Guidelines for more information on differences in the requirements for each UE version and how to compile your plugin accordingly.

2 Likes

Hi, are you saying that even if the only difference between version of a plugin is the EngineVersion value in the .uplugin file you still need to submit separate complete packaged plugins for each one?
I have a plugin in development that compiles fine against several versions, can’t you support an array for the EngineVersion field please? e.g. “EngineVersion”: [ “4.25.0”, “4.26.0”, “4.27.0”. “5.0.0” ],

1 Like

It’s been years since this topic came about, and this is something that should have been answered definitively by now… If we refer to the official documentation for plugins, there is no clear guidance on how to set the engine version number properly. I’ve personally looked at tons of words and erroneous expert advice on the subject, watched YouTube bits and bobs on the topic, but alas there doesn’t seem to be a final, official solution to engine version madness. At least that I’ve found, yet.

I’ve been developing a suite of plugins lately and even though I have version parity throughout my files, the infamous popup complaining about a version mismatch always manages to rear it’s ugly head. The *.uproject has "EngineAssociation": "5.5" even though it was created with 5.5.4, so already we have a different semantic of X.Y which is annoying when it comes to pinning down a standard versioning scheme environment-wide.

We can’t set the "EngineVersion" in a plugin descriptor to an X.Y scheme without issue, which is frustrating. If I set that to 5.5.4, then there are warnings in logs. Annoying. If I set it to 5.5.0 and then fire up the project, the pop up about different engine version joins the party and even though I just successfully compiled, I have to compile again…

The most common “expert” advice I’ve received is “it’s not a big deal, don’t worry about it”. I get that, and ultimately there is no other choice in some circumstances. However, I’ll always push back at this mindset. Just because some have a lower level of quality standards, some of us want razor edge sharpness. I don’t want those extra 12 lines in my log whining about the minutia of the version string. I don’t want the extra 40 seconds of an extra compilation pass because build tools think something is awry.

So if anyone at Epic, or the community, has a solid technical solution, not a workaround - I am so down to adopt whatever solution that might be. I’ll gladly take up the torch to update the documentation on the plugin page as well, I’m sick of ended up there randomly only to be reminded it lacks the technical deep dive we deserve.

And yes - I realize I necro’d this topic. It should have been addressed, and I think it still deserves to be.