How do I suppress the "different engine version" error for my plugin? How do I deal with engine versions?

So I’m going to answer my own question here.

First, unbeknownst to me, you cannot “install” a binary-only plugin to a game/Plugins/ directory. If it’s there, it needs source, it needs a .Build.cs file for all the modules, and the unreal build tool and header tool expect to be able to see it and generate references to it in the project files. If this isn’t the case, then if the plugin is enabled, the build tool will complain that it found a plugin->module referenced in the .uproject file, but it can’t find the module to build.

So, binary plugins (ones with only the Binaries/ dir) must go in Engine/Plugins/.

Second, when you put a plugin in Engine/Plugins/, Unreal becomes more permissive about not having an "EngineVersion" key in the .uplugin json. So if you just get rid of "EngineVersion" you don’t get the “The following modules are missing or build with a different engine version” modal dialog box.

Looking at the code for FEngineVersion::Parse() it’s pretty clear to me why “4” and “4.26” and “4.27” caused the “The following modules are missing or build with a different engine version” dialog - the parser requires “X.Y.Z”

4 Likes