Lately i’ve been receiving crashes with child blueprints that have a AI Perception Component inherited.
The engine itself doesn’t crash, however when closing the engine and booting it up again it does cause a crash making the project unable to boot up.
Only way to solve it is to delete the childed blueprints and set them up again. These are childs with no additonal code, nor is the AI Per. Com. adjusted in the children, it inherits everything. Only thing I change would be the Skel Mesh and even that causes it to be unable to boot up.
I’ve reset-up the childeren multiple times, I even tried to change the name of the per. com. but all with no luck. Anyone an idea?
Here’s the crash log:
Assertion failed: !Obj->HasAnyFlags(RF_NeedLoad|RF_NeedPostLoad|RF_ClassDefaultObject) || bIsOwnedByCDO [File:D:\Build++UE4+Release-4.14+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp] [Line: 2358]
Attempting to replace an object that hasn’t been fully loaded: AISenseConfig_Sight /Game/_CORE_GAME/AI/Childs/FemaleRobot.FemaleRobot_C:AiPercepComp_GEN_VARIAB
Hey, I just wanted to add that I’m having the same problem currently, but it’s with 4.15. Everything was working just fine until a handful of days ago - only thing that I even worked on in the project most recently were some post-process materials. But suddenly it really doesn’t like my AI perception component.
Really hoping this does get patched up soon. Project is entirely inaccessible after months of work.
The issue persists in 4.16 as well. The only workaround is to remove any (or all) of the senses added to the “Sense Config” array and saving the blueprint before closing the editor. This is quite a hassle though. =(
there is a workaround for this issue, as i’ve run into this problem a lot using aiperception components as well as procedural mesh components. if you’re using blueprints, don’t add the component in the components tab (meaning don’t use the +add component button). instead, in the construction script, add the component using a node i.e. “add ai perception component” or “add procedural mesh component”. then, assign the returned value to a variable. use that variable to do all your logic stuff. this method seems to bypass all of the registration problems causing the fatal errors, and actually allows for a null value where you can check if the variable is valid anyhow. fractionally larger overhead, but it works.
There is a workaround in blueprint too: Clear all AIPerception configurations (sense config, dominant sense) in the parent class. Than you can configure the AIPerception in the child classes like you want without crash. You can also use inherited AI events from parent class.