We have a mobile UE4 project (version 4.20.3) that is written fully in Blueprints. Nativization is enabled to boost performance. I was trying to port our game to latest stable version - 4.22.3, but encountered an error, while cooking the project:
LogBlueprint: Error: BP_SomeBlueprint overrides component 'Cube' inherited from BP_SomeBlueprintParent, which will be converted to C++. This requires Event-Driven Loading (EDL) to be enabled; otherwise, BP_SomeBlueprintParent must be excluded from Blueprint nativization.
We have EDL disabled due to high amounts of cycle dependecy nodes. The game works just fine with EDL disabled and nativization enabled on 4.20.3. Is there a way I can port the project to 4.22.3 without enabling EDL?
If this is a bug, when will it be fixed? If not, what is the reason nativized blueprints now forcing EDL to be enabled?
EDL is now required in order for the component inheritance to work properly between a nativized parent class and a non-nativized child class. There were some data loss issues that manifested in that case when EDL is not enabled (as well as potentially other issues, also note that we don’t fully test the non-EDL path w/ nativization all that much with later releases). I believe in general (regardless of nativization), the recommendation is that EDL be enabled going forward in cooked builds, but this is more strongly suggested if nativization is to also be used.
As a workaround, if you cannot exclude the parent class from nativization as the note suggests, then as an alternative, you might try ensuring that BP_SomeBlueprint is also nativized. If it’s a data-only Blueprint, you’ll need to add something to it (e.g. a variable or a function) in order to get it to nativize (data-only Blueprints are excluded from nativization by default). You can also enable all data-only Blueprints to be nativized with an .ini setting (set ‘bDontNativizeDataOnlyBP’ to ‘false’ in BaseEditor.ini or override it in your projects’ DefaultEditor.ini), but that might bloat your EXE size a bit, as a side note.