UE 5.2 load IkRig Asset assertion failed in Standalone mode

I migrate my project to Unreal 5.2 today, when I play in standalone mode, the program crashed due to assertion failed. It says package and object can not be only load from gamethread. But the function called was LoadSynchronous().
I try to reproduce it in a new project but I failed.
Can someone help me or give me a workaround methos? Here are the crash report:

LoginId:f777312e4e84f04ce0175489724f0a55
EpicAccountId:b774b9417555447e9f02e69a5d3747ef

Assertion failed: IsInGameThread() [File:D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp] [Line: 1549] Unable to load /Game/CosmoBunnyGirl/Mesh/IKRig_BunnyGirl. Objects and Packages can only be loaded from the game thread.

UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1549]
UnrealEditor_CoreUObject!LoadPackage() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1958]
UnrealEditor_CoreUObject!LoadPackage() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1931]
UnrealEditor_CoreUObject!ResolveName() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1184]
UnrealEditor_CoreUObject!StaticLoadObjectInternal() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1268]
UnrealEditor_CoreUObject!StaticLoadObject() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!FSoftObjectPath::TryLoad() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\SoftObjectPath.cpp:536]
UnrealEditor_IKRig!FSoftObjectPtr::LoadSynchronous() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Public\UObject\SoftObjectPtr.h:56]
UnrealEditor_IKRig!UIKRetargetProcessor::ApplySettingsFromAsset() [D:\build++UE5\Sync\Engine\Plugins\Animation\IKRig\Source\IKRig\Private\Retargeter\IKRetargetProcessor.cpp:2185]
UnrealEditor_IKRig!FAnimNode_RetargetPoseFromMesh::Evaluate_AnyThread() [D:\build++UE5\Sync\Engine\Plugins\Animation\IKRig\Source\IKRig\Private\AnimNodes\AnimNode_RetargetPoseFromMesh.cpp:108]
UnrealEditor_Engine!FPoseLink::Evaluate() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Animation\AnimNodeBase.cpp:396]
UnrealEditor_Engine!FAnimInstanceProxy::EvaluateAnimationNode_WithRoot() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Animation\AnimInstanceProxy.cpp:1420]
UnrealEditor_Engine!FAnimInstanceProxy::EvaluateAnimation_WithRoot() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Animation\AnimInstanceProxy.cpp:1341]
UnrealEditor_Engine!UAnimInstance::ParallelEvaluateAnimation() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Animation\AnimInstance.cpp:826]
UnrealEditor_Engine!USkeletalMeshComponent::EvaluateAnimation() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\SkeletalMeshComponent.cpp:1982]
UnrealEditor_Engine!USkeletalMeshComponent::PerformAnimationProcessing() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\SkeletalMeshComponent.cpp:2074]
UnrealEditor_Engine!USkeletalMeshComponent::ParallelAnimationEvaluation() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\SkeletalMeshComponent.cpp:4017]
UnrealEditor_Engine!FParallelAnimationEvaluationTask::DoTask() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\SkeletalMeshComponent.cpp:149]
UnrealEditor_Engine!TGraphTask::ExecuteTask() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:1310]
UnrealEditor_Core!<lambda_17c904c32264d0348d15245fba0e1bff>::operator()() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\Fundamental\Task.h:499]
UnrealEditor_Core!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<<lambda_17c904c32264d0348d15245fba0e1bff>,0>::CallAndMove() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\Fundamental\TaskDelegate.h:171]
UnrealEditor_Core!LowLevelTasks::FTask::ExecuteTask() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\Fundamental\Task.h:627]
UnrealEditor_Core!LowLevelTasks::FScheduler::ExecuteTask() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:150]
UnrealEditor_Core!LowLevelTasks::FScheduler::TryExecuteTaskFrom<LowLevelTasks::TLocalQueueRegistry<1024>::TLocalQueue,&LowLevelTasks::TLocalQueueRegistry<1024>::TLocalQueue::DequeueGlobal,0>() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:350]
UnrealEditor_Core!LowLevelTasks::FScheduler::WorkerMain() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\Fundamental\Scheduler.cpp:378]
UnrealEditor_Core!UE::Core::Private::Function::TFunctionRefCaller<<lambda_be2218a0adc66e92e8734764b1b5dd37>,void __cdecl(void)>::Call() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Templates\Function.h:475]
UnrealEditor_Core!FThreadImpl::Run() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\HAL\Thread.cpp:67]
UnrealEditor_Core!FRunnableThreadWin::Run() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:149]

1 Like

Now I just use a workaround method load asset blocking before I add the retargeting animation to Character.
Hope someone come up a better solution.

I ran into the same issue on UE5.2.0 release. Seems specific to IKRig and animations when running in stand-alone mode.

This assertion (failed) was not present when I last tested my game in standalone mode using UE 5.1.1, and quite possibly UE 5.2.0 preview 2 as well.

Extra info:
My game is 100% blueprint based, no c++ code (yet) so trying to work around this assertion failing seems like an impossible task unless I edit a copy of UE 5.2.0’s source code and block out that assertion check.

I’m assuming this was done as part of an anti-cheat system for Fortnite but somehow ended up as part of the general 5.2.0 release code?

For now just use LoadAssetBlocking before you use the IKrig asset will fix the issue.

Unreal Engine do not allowd working thread to load package , load it manually before the character spawn in the world.

CVarUseParallelAnimationEvaluation(TEXT(“a.ParallelAnimEvaluation”), 1, TEXT(“If 1, animation evaluation will be run across the task graph system. If 0, evaluation will run purely on the game thread”));

1 Like

Where i can find loadassetBlocking ?

In any blueprint event gragh.

can you give more details ?

[SystemSettings]
a.ParallelAnimEvaluation=0

add in DefaultEngine.ini

3 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.