4.6.1 engine github version loading precompiled plugins

Hi,

Assume You have a precompiled plugin with some version for example 4.6.1 built from changelist “2369412”, and You trying to load this plugin with your engine forked from github. Basically You can’t because the engine tell You that plugin is incompatible:

UE_LOG(LogModuleManager, Warning, TEXT(“Found module file %s (API version %d), but it was incompatible with the current engine API version (%d). This is likely a stale module that must be recompiled.”), Filename, ModuleApiVersion, MODULE_API_VERSION);

The question:
Why this module is incompatible?
My #define MODULE_API_VERSION 2369412 is the same as the plugin version, but plugin won’t load.

This is happening because the github engine doesn’t have “BUILT_FROM_CHANGELIST” macro defined to something greater than 0.

ModuleVersion.h

#if BUILT_FROM_CHANGELIST > 0
#define MODULE_API_VERSION 2369412
#else
#define MODULE_API_VERSION 0
#endif

I wonder why BUILT_FROM_CHANGELIST is 0, I’ve been working with github engine version since 4.2 and now when I define BUILT_FROM_CHANGELIST to 1 the engine will log spam for every asset:

[2015.01.08-11.41.15:398][ 0]LogLinker:Warning: Asset ‘m_en_film_sf_01.uasset’ has been saved with empty engine version. The asset will be loaded but may be incompatible.

As You see I have here 2 problems:

  1. I can’t load module without defined BUILT_FROM_CHANGELIST macro
  2. LogSpam “The asset will be loaded but may be incompatible.”

In order to get plugin loading properly I must define BUILT_FROM_CHANGELIST but what should I do with my assets? Is it safe to save them with updated module version ?

Regards

Pierdek

I don’t know if you’ve seen this thread:

Long story short, this whole system is quite painful. Your modules will not work in official binary install and modules from your install will not work in your github / source build.

We solve this problem by patching BUILT_FROM_CHANGELIST in Engine\Source\Runtime\Launch\Resources\Version.h of the source (automatically grabbing latest changelist number from commit messages) in order to make our plugin work in official binary install… but it also makes plugin incompatible with engines build from github / source.

Also, you can run your engine with -log cmd param and see the mismatched message in engine console.

Hope you find this helpful. I would also appreciate input from Epic on this topic and advice on how to tackle this issue.