Tips on tackling a seemingly corrupt asset?

I’m currently able to open my project and edit most of the files just fine.

However, recently, there’s been an issue where if I edit a specific asset and close the project, the project will crash on load and be permanently bricked.

Using source control to constantly go back and figure out which asset causes this behaviour, I’ve narrowed it down to one specific blueprint asset (Item_Base, incase that’s relevant).

If I leave this specific blueprint untouched, I can close my project and re-open it without issue.
If I ever save the blueprint (even if I don’t change ANYTHING inside of it, I just open it in the blueprint editor and Ctrl+s save it), the project will crash on startup if I close the project and try to re-open it.

Note that the project doesn’t crash immediately when I save the blueprint; I can still continue working in the editor and even run the game, and everything works fine. It’s only once I close the project, it’ll crash on startup after getting to about 93%.

As for the blueprint itself, my hunch is that its corruption has to do with a Struct it extensively uses to hold item data. I’ve heavily tinkered with this particular struct for the entire duration of this project, and I’ve heard UE isn’t great at handling extensive blueprint struct changes.

THINGS I’VE TRIED:

  • Refreshing all nodes in every blueprint
  • Right-click fixing all redirectors
  • Deleting/Regenerating the project’s Binaries, Intermediate, and Saved folders

Would anyone be able to point me in the right direction for how to go about tackling this?

I know there won’t be a one-trick solution to it, so I’m moreso interested in hearing if anyone else has ever experienced this unusual kind of crash before, or if there’s something I should do to resolve the kinds of memory errors being shown in the crash log below.

Here’s the entire stack trace dump, which seems to make reference to memory allocation stuff:

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffffffffff

UnrealEditor_Core!_mi_heap_malloc_zero() [D:\build\++UE5\Sync\Engine\Source\ThirdParty\mimalloc\src\alloc.c:147]
UnrealEditor_Core!FMallocMimalloc::Realloc() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\HAL\MallocMimalloc.cpp:129]
UnrealEditor_Core!FMemory::Realloc() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\HAL\FMemory.inl:56]
UnrealEditor_Core!TArray<wchar_t,TSizedDefaultAllocator<32> >::ResizeTo() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Containers\Array.h:2803]
UnrealEditor_Core!FString::PrintfImpl() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Containers\String.cpp:1740]
UnrealEditor_Core!FOutputDeviceHelper::FormatLogLine() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\OutputDeviceHelper.cpp:28]
UnrealEditor_Core!FOutputDeviceDebug::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\OutputDeviceDebug.cpp:20]
UnrealEditor_Core!FOutputDeviceRedirector::SerializeImpl<FName const >() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\OutputDeviceRedirector.cpp:414]
UnrealEditor_Core!FOutputDeviceRedirector::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\OutputDeviceRedirector.cpp:429]
UnrealEditor_UnrealEd!FFeedbackContextEditor::Serialize() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\FeedbackContextEditor.cpp:404]
UnrealEditor_Core!FMsg::Logf_InternalImpl() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Logging\LogMacros.cpp:98]
UnrealEditor_CoreUObject!DispatchCheckVerify<void,<lambda_5c804792452f78a0a9e7f17b45b4f312>,FLogCategoryLogOutputDevice,wchar_t [3],wchar_t const *>() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Misc\AssertionMacros.h:170]
UnrealEditor_CoreUObject!PrintScriptCallStackImpl() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\ScriptCore.cpp:304]
UnrealEditor_Core!StaticFailDebug() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\AssertionMacros.cpp:165]
UnrealEditor_Core!FDebug::LogAssertFailedMessageImplV() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\AssertionMacros.cpp:313]
UnrealEditor_Core!FDebug::CheckVerifyFailedImpl() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\AssertionMacros.cpp:514]
UnrealEditor_Engine!`UBlueprintGeneratedClass::InitPropertiesFromCustomList'::`6'::Impl::ExecCheckImplInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\BlueprintGeneratedClass.cpp:813]
UnrealEditor_Engine!UBlueprintGeneratedClass::InitPropertiesFromCustomList() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\BlueprintGeneratedClass.cpp:813]
UnrealEditor_CoreUObject!FObjectInitializer::InitProperties() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:3253]
UnrealEditor_CoreUObject!FObjectInitializer::PostConstructInit() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:2979]
UnrealEditor_CoreUObject!FObjectInitializer::~FObjectInitializer() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:2885]
UnrealEditor_CoreUObject!StaticConstructObject_Internal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:3522]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5027]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveResource() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3973]
UnrealEditor_CoreUObject!FLinkerLoad::operator<<() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5671]
UnrealEditor_Core!FStructuredArchiveSlot::operator<<() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Serialization\StructuredArchive.cpp:536]
UnrealEditor_CoreUObject!FObjectPtrProperty::StaticSerializeItem() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyObjectPtr.cpp:73]
UnrealEditor_CoreUObject!FObjectPtrProperty::SerializeItem() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyObjectPtr.cpp:52]
UnrealEditor_CoreUObject!FPropertyTag::SerializeTaggedProperty() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyTag.cpp:240]
UnrealEditor_CoreUObject!UStruct::SerializeVersionedTaggedProperties() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:1471]
UnrealEditor_CoreUObject!UStruct::SerializeTaggedProperties() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:1271]
UnrealEditor_CoreUObject!UObject::SerializeScriptProperties() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp:1606]
UnrealEditor_CoreUObject!UObject::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp:1436]
UnrealEditor_CoreUObject!UObject::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp:1320]
UnrealEditor_Engine!UActorComponent::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\ActorComponent.cpp:2257]
UnrealEditor_Engine!USceneComponent::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\SceneComponent.cpp:3351]
UnrealEditor_Engine!UChildActorComponent::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Components\ChildActorComponent.cpp:85]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4388]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3752]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveDeferredDependencies() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1458]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4438]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5146]
UnrealEditor_CoreUObject!FLinkerLoad::CreateImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5316]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveDependencyPlaceholder() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1641]
UnrealEditor_CoreUObject!FLinkerLoad::DeferPotentialCircularImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1132]
UnrealEditor_CoreUObject!FLinkerLoad::CreateImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5208]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4614]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3745]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveDeferredDependencies() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1458]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4438]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5146]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3745]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveDeferredDependencies() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1458]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4438]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5146]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4743]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3745]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveDeferredDependencies() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1458]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4438]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5146]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3745]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveDeferredDependencies() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1458]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4438]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5146]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3745]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveDeferredDependencies() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1458]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4438]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5146]
UnrealEditor_CoreUObject!FLinkerLoad::CreateImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5316]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4614]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3745]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveDeferredDependencies() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1458]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4438]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5146]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3745]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!LoadPackage() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1520]
UnrealEditor_CoreUObject!LoadPackage() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1500]
UnrealEditor_CoreUObject!StaticLoadObjectInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:897]
UnrealEditor_CoreUObject!StaticLoadObject() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:953]
UnrealEditor_CoreUObject!FObjectPropertyBase::FindImportedObject() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyBaseObject.cpp:513]
UnrealEditor_CoreUObject!FObjectPropertyBase::ParseObjectPropertyValue() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyBaseObject.cpp:332]
UnrealEditor_CoreUObject!FObjectPropertyBase::ImportText_Internal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyBaseObject.cpp:365]
UnrealEditor_CoreUObject!FObjectProperty::ImportText_Internal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyObject.cpp:142]
UnrealEditor_CoreUObject!FClassProperty::ImportText_Internal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyClass.cpp:101]
UnrealEditor_CoreUObject!FProperty::ImportText() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Public\UObject\UnrealType.h:428]
UnrealEditor_UnrealEd!FBlueprintEditorUtils::PropertyValueFromString_Direct() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\Kismet2\BlueprintEditorUtils.cpp:9118]
UnrealEditor_UnrealEd!FBlueprintEditorUtils::PropertyValueFromString() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\Kismet2\BlueprintEditorUtils.cpp:8999]
UnrealEditor_UnrealEd!UUserDefinedStructEditorData::ReinitializeDefaultInstance() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UserDefinedStructEditorData.cpp:247]
UnrealEditor_Engine!UUserDefinedStruct::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\UserDefinedStruct.cpp:133]
UnrealEditor_Engine!UUserDefinedStruct::Serialize() [D:\build\++UE5\Sync\Engine\Intermediate\Build\Win64\UnrealEditor\Inc\Engine\UserDefinedStruct.gen.cpp:217]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4388]
UnrealEditor_Engine!UUserDefinedStruct::RecursivelyPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\UserDefinedStruct.cpp:338]
UnrealEditor_CoreUObject!PreloadInnerStructMembers() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyStruct.cpp:33]
UnrealEditor_CoreUObject!FStructProperty::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyStruct.cpp:226]
UnrealEditor_CoreUObject!UStruct::SerializeProperties() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:1756]
UnrealEditor_CoreUObject!UStruct::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:1861]
UnrealEditor_CoreUObject!UClass::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:4541]
UnrealEditor_Engine!UBlueprintGeneratedClass::Serialize() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\BlueprintGeneratedClass.cpp:1805]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4388]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5146]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3745]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!<lambda_016cec4293e743540f8ee81a30ee3940>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3293]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3408]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3436]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::CreateImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5302]
UnrealEditor_CoreUObject!FLinkerLoad::ResolveAllImports() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1763]
UnrealEditor_CoreUObject!FLinkerLoad::FinalizeBlueprint() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Blueprint\BlueprintSupport.cpp:1852]
UnrealEditor_CoreUObject!FLinkerLoad::Preload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:4438]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:5146]
UnrealEditor_CoreUObject!FLinkerLoad::CreateExportAndPreload() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3745]
UnrealEditor_CoreUObject!FLinkerLoad::LoadAllObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3921]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1346]
UnrealEditor_CoreUObject!<lambda_016cec4293e743540f8ee81a30ee3940>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3293]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3408]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3436]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::Verify() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2738]
UnrealEditor_CoreUObject!FLinkerLoad::FinalizeCreation() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2573]
UnrealEditor_CoreUObject!FLinkerLoad::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:821]
UnrealEditor_CoreUObject!FLinkerLoad::CreateLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:465]
UnrealEditor_CoreUObject!GetPackageLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Linker.cpp:850]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1239]
UnrealEditor_CoreUObject!<lambda_016cec4293e743540f8ee81a30ee3940>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3293]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3408]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3436]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::Verify() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2738]
UnrealEditor_CoreUObject!FLinkerLoad::FinalizeCreation() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2573]
UnrealEditor_CoreUObject!FLinkerLoad::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:821]
UnrealEditor_CoreUObject!FLinkerLoad::CreateLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:465]
UnrealEditor_CoreUObject!GetPackageLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Linker.cpp:850]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1239]
UnrealEditor_CoreUObject!<lambda_016cec4293e743540f8ee81a30ee3940>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3293]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3408]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3436]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::Verify() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2738]
UnrealEditor_CoreUObject!FLinkerLoad::FinalizeCreation() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2573]
UnrealEditor_CoreUObject!FLinkerLoad::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:821]
UnrealEditor_CoreUObject!FLinkerLoad::CreateLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:465]
UnrealEditor_CoreUObject!GetPackageLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Linker.cpp:850]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1239]
UnrealEditor_CoreUObject!<lambda_016cec4293e743540f8ee81a30ee3940>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3293]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3408]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3436]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::Verify() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2738]
UnrealEditor_CoreUObject!FLinkerLoad::FinalizeCreation() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2573]
UnrealEditor_CoreUObject!FLinkerLoad::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:821]
UnrealEditor_CoreUObject!FLinkerLoad::CreateLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:465]
UnrealEditor_CoreUObject!GetPackageLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Linker.cpp:850]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1239]
UnrealEditor_CoreUObject!<lambda_016cec4293e743540f8ee81a30ee3940>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3293]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3408]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3436]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImportInner() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:3436]
UnrealEditor_CoreUObject!FLinkerLoad::VerifyImport() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2959]
UnrealEditor_CoreUObject!FLinkerLoad::Verify() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2738]
UnrealEditor_CoreUObject!FLinkerLoad::FinalizeCreation() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:2573]
UnrealEditor_CoreUObject!FLinkerLoad::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:821]
UnrealEditor_CoreUObject!FLinkerLoad::CreateLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp:465]
UnrealEditor_CoreUObject!GetPackageLinker() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Linker.cpp:850]
UnrealEditor_CoreUObject!LoadPackageInternal() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1239]
UnrealEditor_CoreUObject!LoadPackage() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1520]
UnrealEditor_CoreUObject!LoadPackage() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp:1500]
UnrealEditor_UnrealEd!UEditorEngine::Map_Load() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorServer.cpp:2694]
UnrealEditor_UnrealEd!UEditorEngine::HandleMapCommand() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorServer.cpp:6232]
UnrealEditor_UnrealEd!UEditorEngine::Exec() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorServer.cpp:5722]
UnrealEditor_UnrealEd!UUnrealEdEngine::Exec() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdSrv.cpp:659]
UnrealEditor_UnrealEd!FEditorFileUtils::LoadMap() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\FileHelpers.cpp:2761]
UnrealEditor_UnrealEd!FEditorFileUtils::LoadDefaultMapAtStartup() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\FileHelpers.cpp:4336]
UnrealEditor_UnrealEd!FUnrealEdMisc::OnInit() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdMisc.cpp:359]
UnrealEditor_UnrealEd!EditorInit() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdGlobals.cpp:134]
UnrealEditor!GuardedMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:159]
UnrealEditor!GuardedMainWrapper() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:147]
UnrealEditor!LaunchWindowsStartup() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:283]
UnrealEditor!WinMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:330]
UnrealEditor!__scrt_common_main_seh() [d:\a01\_work\6\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll

Thanks!

Sounds like you have an ‘asset chain’ problem.

Try right clicking on the blueprint in question, and choosing ‘size map…’

I think you’ll see all sorts of things in there, that shouldn’t be there. It means the BP has decencies where it shouldn’t.

1 Like

Thank you for the advice!

Looking at the size map of the asset, I do feel like I’m seeing things in here that shouldn’t be in here, though it is a little hard to parse because of how big it is. This is what it looks like, incase you’re curious. I don’t know if this is what a healthy size map looks like, or if it’s very obvious that I’ve done something terrible with this asset and its dependencies.

So the size map lets me see the asset chain issue, but do you have any advice on how to actually fix the asset chain issue?

Like, would the idea be to go to every asset listed in this size map and do something to the assets that don’t actually use the BP in question? I’d imagine UE doesn’t have a secret tool for automatically assessing and resolving these dependency issues, so if there’s anything manual I can do, please do let me know.

And again, I appreciate the advice. ‘Asset chain’ isn’t something I’ve seen before in my google crawling, which feels like a great pair of keywords to start my google journey again to get more info on this issue.

I can tell you at one glance, that’s REALLY bad.

A BP should be about < 250MB say, ball park figure.

I’m gonna study it a bit more…

In an ideal world, no asset should know about any other assets. Of course that’s not usually possible. What kind of thing is it? What is an Item Base?

It seems ‘item base’ is related to crops? ( could be totally wrong ). First thing would be to totally separate widgets and items ( crops ). That’s got to help. Do they need to know about each other?

You need to go to ‘decoupling school’ :wink: Here’s a starter vid, but I would read and watch everything you can ( before tinkering too much ).

It’s very hard to tell you how to do it from here.

Ask me if you need more info, I can explain it in a different way.

1 Like

Ahaha, I appreciate the honesty that it looks bad. It definitely doesn’t strike me as unusual that it is, given that I’ve been working on this project ever since I was a UE baby, and this is my first time hearing about the concept of decoupling!

I’m gonna mark this as the solution, as the concept of decoupling seems like a key anchor point for me and any future googlers to follow when it comes to resolving this dependency issue I’m facing.

I 100% understand it’d be too complicated to know the ins-and-outs of my project to tell me exactly what to do, so I definitely don’t expect that. You’ve already been tremendously helpful in just mentioning the topics you have for me to go learn about and apply to my project :slight_smile:

But just to go over that aspect of my project, incase you or anyone else reading is curious…

Item_Base is the BP for the item that the player is holding. There are many items in the game: Guns, Buckets, Seeds, etc. Each of these items is a child BP of Item_Base. There are hundreds of items currently in the game, a lot of which do unique things, so it makes sense to me that Item_Base references a lot of things (probably in ways it doesn’t need to).

To give one example of how an Item_Base is being used, here’s a summary of what Item_Seed_Apple does. (Warning: it’s long and complicated)

Item_Seed_Apple Logic

Item_Seed_Apple is an item for spawning a BP_AppleTree. The logic is as follows:

  1. Selecting the item creates a BP_Hologram of the apple tree mesh, which is a static mesh constantly placed at the spot where BP_MainPlayerCharacter is looking
  2. When the player presses the PlantSeed key, Item_Seed_Apple checks for if the BP_Hologram is in a valid spot (true if its inside of a BP_PlantableZone)
  3. It then checks if the plantable zone is full by checking how many BP_Crops are inside of it, and comparing it with the “CropsPerField” value inside of BP_MainGameState
  4. If the plantable zone isn’t full, a BP_AppleTree is spawned at the transform of the BP_Hologram
  5. Item_Seed_Apple then calls event “OwningClientIncreaseIntStatCount” inside of the BP_MainPlayerController, which then calls the “AddToIntStat” function inside of BP_SavedStats, to increase the number of apple seeds the player has planted by 1
  6. Item_Seed_Apple then calls Item_Base’s “DeleteItem” function, which goes through the following references: Item_Seed_AppleBP_MainPlayerCharacterBP_MainHUDW_PlayerHUDW_ItemSlotW_Item
  7. Once it reaches the W_Item that displays data about the currently held Item_Seed_Apple, it runs its “SetItemNull” function, which clears the data in that W_Item
  8. Finally, we call BP_MainPlayerCharacter’s “SetNewHeldItem” function, in order to make the player hold nothing, because the slot they have selected currently has nothing in it

Again, I absolutely do not expect anyone to go through my project and suggest ways to improve every aspect of it. I feel exhausted reading my own writings of how the Item_Seed_Apple works, haha.

But hopefully this does show how easy it has been to let my Item_Base BP have so many references to many other assets in my project. Hopefully I’ll be able to save my project by employing the principles I learn while researching the topic of decoupling :slight_smile:

1 Like

I’m going to read this properly in a while and get back later.

I think I might be able to help over Discord sometime if you like ( PM me ).

Sorry, was just trying to emphasize the critical nature of it. The whole of my game on Steam is 8GB, so you can appreciate that 6GB for one asset is pushing it :slight_smile:

I can totally understand how people end up doing this kind of thing, mind. I did it myself with the game, and it wasn’t until I had asset chains coming out my a***, I realized something was wrong. It took me a couple of MONTHS to track it down.

I just doubled checked my current project. I have ( for instance ) ‘clickable item’ which is a BP that knows how to interact with the player. I then inherit from that for a clickable button, for example.

Neither BP knows about the other. As you can imagine, everything in my game is clickable, and yet the parent BP is 600K, and a complex object I can interact with is 180MB ( including textures ).

The root of your problem is probably because you’re using ‘hard coded’ ( literal ) references between your items, and this problem would go away if you decoupled.

For example, that whole placement and spawning process is a generic process, and none of the operating parts need to know what kind of thing is being spawned.

Same goes for the widgets, they should really not know about the classes of objects you have in your game.

1 Like

My goal now is absolutely to get that 6GB number down, thank you for bringing me into the know on all of this!

As for actually resolving the crash in order to start decoupling everything, I did more source control time travelling and found the commit where it all started:

It was caused by me updating a default value in one of my item Structs.

I verified this by jumping back to the commit before I did that, and made sure everything worked perfectly fine (I could save Item_Base without the project crashing on startup).

I then changed a default value of a name field in my item Struct, closed the project, and re-opened it. It was able to open just fine, but when I saved Item_Base and closed the project, trying to re-open the project caused the crash.

So for anyone coming across this thread in the future with the exact same issue I was having, consider looking back through your commit history for if you ever updated the default values of a Struct in your project.

Unfortunately, I couldn’t find a way to un-corrupt the struct after I had corrupted it by changing one of its default values. Fortunately, I did that change only about a week ago, so rebasing from before I did the corrupting change only cost me about a week of progress, which in the grand scheme of things isn’t too bad.

I’m positive the fact that this Struct is a part of that 6gb blob of chained assets contributed to why modifying it bricked my project, so I’m still definitely going to go about decoupling as much as I can. But I’m glad I found the source of the issue, and I hope this helps anyone else who also experiences this in the future :slight_smile:

Good that you found it.

I’ll bet the struct has a reference to a user defined type in it, right? I don’t think the engine handles that well.

How big is the blueprint now? :slight_smile:

Hah, there totally are! One array of a struct I’ve defined, and two different kinds of enums I’ve defined. Maybe I’ll try to extract those from the big struct in the future after gathering some courage.

I’ve gotten it down to 3.1gb, as seen under the divider :smile: still a LONG way to go to get a healthy looking size map/reference viewer, but there were a few easy offenders to cull.

3.1gb Size Map Screenshot

Specifically, I had one item that was intended to be used by players to decorate the map by spawning static meshes where they’re looking. There were 300 static meshes for them to choose from, all of which were held in a hard-reference array of static meshes.

Simply changing the array to a soft object array and reworking the item to load in the static mesh the user has selected instantly cut down the size of the Item_Base BP by 3gb.

Glad to hear you’re making progress :slight_smile:

But now it works without crashing, right?

Still worth continuing from the user loading point of view.

Yeah! Just going back to a commit from before I changed a default value in my struct resolved the crashing.

And I wholeheartedly agree; not only have my project’s loading times improved, but I’d imagine it’ll help with debugging project-level issues similar to the original one in this chain in the future when the asset-chains are tremendously cleaner.

1 Like