So, I’ve been building my game within a series of Data Layers, and recently I’ve run into a huge wall trying to understand how we are supposed to reload a saved game to the state it was previously. When I reload or reactivate any Data Layer that is NOT in the list of DLs that are set as initially activated or loaded, I keep seeing this crash and stack trace:
[2026.05.31-16.59.16:082][493]LogLoad: Took 1.181282 seconds to LoadMap(/Game/Assets/Levels/UEDPIE_0_MainPersistentLevel)
[2026.05.31-16.59.16:083][493]LogGlobalStatus: UEngine::LoadMap Load map complete /Game/Assets/Levels/UEDPIE_0_MainPersistentLevel
[2026.05.31-16.59.31:100][878]Cmd: DebugManager.CycleToPreviousColumn
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_BB023G0R2DZDHJFNZDNBRYEGN.
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_BB023G0R2DZDHJFNZDNBRYEGN.
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_BB023G0R2DZDHJFNZDNBRYEGN.
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_55DO2ZIXMIGX5EI3HBP636MI2.
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_55DO2ZIXMIGX5EI3HBP636MI2.
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_55DO2ZIXMIGX5EI3HBP636MI2.
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_55DO2ZIXMIGX5EI3HBP636MI2.
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_55DO2ZIXMIGX5EI3HBP636MI2.
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_55DO2ZIXMIGX5EI3HBP636MI2.
[2026.05.31-16.59.39:198][519]LogUObjectGlobals: Warning: LoadPackage can't find package /Memory/UEDPIE_0_MainPersistentLevel_55DO2ZIXMIGX5EI3HBP636MI2.
[2026.05.31-16.59.39:208][519]LogBlueprintUserMessages: [HE_SaveGameComponent] Loading active data asset: DL_HorrorHouse_Start
[2026.05.31-16.59.39:209][519]LogBlueprintUserMessages: [HE_SaveGameComponent] Loading active data asset: DL_HorrorHouse_Section_01
[2026.05.31-16.59.39:209][519]LogWorldPartition: Data Layer Instance 'DL_HorrorHouse_Section_02' state changed: Unloaded -> Activated
[2026.05.31-16.59.39:209][519]LogWorldPartition: Data Layer Instance 'DL_HorrorHouse_Section_02' effective state changed: Unloaded -> Activated
[2026.05.31-16.59.39:209][519]LogBlueprintUserMessages: [HE_SaveGameComponent] Loading active data asset: DL_HorrorHouse_Section_02
[2026.05.31-16.59.39:211][519]LogWorldPartition: Streaming performance changed: Good -> Immediate
[2026.05.31-16.59.39:212][519]LogOutputDevice: Warning:
Script Stack (0 frames) :
[2026.05.31-16.59.39:224][519]LogWindows: Error: appError called: Assertion failed: !FindObject<UPackage>(nullptr, *PackageName) [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\WorldPartition\WorldPartitionLevelHelper.cpp] [Line: 417]
[2026.05.31-16.59.39:224][519]LogWindows: Windows GetLastError: The operation completed successfully. (0)
[2026.05.31-16.59.42:179][519]LogWindows: Error: === Critical error: ===
[2026.05.31-16.59.42:179][519]LogWindows: Error:
[2026.05.31-16.59.42:179][519]LogWindows: Error: Assertion failed: !FindObject<UPackage>(nullptr, *PackageName) [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\WorldPartition\WorldPartitionLevelHelper.cpp] [Line: 417]
[2026.05.31-16.59.42:179][519]LogWindows: Error:
[2026.05.31-16.59.42:179][519]LogWindows: Error:
[2026.05.31-16.59.42:179][519]LogWindows: Error:
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffa08df8448 UnrealEditor-Core.dll!FDebug::CheckVerifyFailedImpl2() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\AssertionMacros.cpp:745]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffa0674c764 UnrealEditor-Engine.dll!FWorldPartitionLevelHelper::CreateEmptyLevelForRuntimeCell() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\WorldPartition\WorldPartitionLevelHelper.cpp:417]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffa0674dcd7 UnrealEditor-Engine.dll!UWorldPartitionLevelStreamingDynamic::CreateRuntimeLevel() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\WorldPartition\WorldPartitionLevelStreamingDynamic.cpp:178]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffa0678cbb6 UnrealEditor-Engine.dll!UWorldPartitionLevelStreamingDynamic::RequestLevel() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\WorldPartition\WorldPartitionLevelStreamingDynamic.cpp:310]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffa0555cf1c UnrealEditor-Engine.dll!`ULevelStreaming::UpdateStreamingState'::`2'::<lambda_1>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\LevelStreaming.cpp:1011]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffa055b9304 UnrealEditor-Engine.dll!ULevelStreaming::UpdateStreamingState() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\LevelStreaming.cpp:1222]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffa065737c8 UnrealEditor-Engine.dll!UWorld::UpdateLevelStreaming() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\World.cpp:5045]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffa0524fa9f UnrealEditor-Engine.dll!UGameViewportClient::Draw() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\GameViewportClient.cpp:1848]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffa064522b5 UnrealEditor-Engine.dll!FViewport::Draw() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\UnrealClient.cpp:1798]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ff9fe6a8aaa UnrealEditor-UnrealEd.dll!UEditorEngine::Tick() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorEngine.cpp:2440]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ff9ff1fe396 UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdEngine.cpp:537]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ff7e86d4da6 UnrealEditor.exe!FEngineLoop::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5828]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ff7e86f0bfe UnrealEditor.exe!GuardedMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:190]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ff7e86f0d0a UnrealEditor.exe!GuardedMainWrapper() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:123]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ff7e86f4590 UnrealEditor.exe!LaunchWindowsStartup() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:277]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ff7e8705be4 UnrealEditor.exe!WinMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:334]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ff7e8708f9a UnrealEditor.exe!__scrt_common_main_seh() [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
[2026.05.31-16.59.42:179][519]LogWindows: Error: [Callstack] 0x00007ffacde0e957 KERNEL32.DLL!UnknownFunction []
[2026.05.31-16.59.42:179][519]LogWindows: Error:
[2026.05.31-16.59.42:190][519]LogExit: Executing StaticShutdownAfterError
[2026.05.31-16.59.42:200][519]LogWindows: FPlatformMisc::RequestExit(1, LaunchWindowsStartup.ExceptionHandler)
[2026.05.31-16.59.42:200][519]LogWindows: FPlatformMisc::RequestExitWithStatus(1, 3, LaunchWindowsStartup.ExceptionHandler)
[2026.05.31-16.59.42:200][519]LogCore: Engine exit requested (reason: Win RequestExit)
Notice that I am waiting until after the level is finished loading and streaming before attempting to reactivate the data layers. I don’t see these LoadPackage can’t find package errors the first time loading the data layers. So, lets go through the steps of an example a little more and hopefully someone can point out what I am doing wrong:
1 - Load a persistent level with a set of default Data Layers activated and unloaded. The player starts with DL_HorrorHouse_Start and HorrorHouse_Section_01 as initially activated.
2 - The player solves a puzzle, and activates a data layer that was by default unloaded and hidden behind this mural (HorrorHouse_Section_02):
3 - The player walks up to a save point, and this creates a game save object containing a map of data layer names mapped to their current runtime states.
4 - Reload game from save file - load same level again, either from same persistent level or a different one from a start menu. Persistent Level loads and its Data Layers revert to default runtime state. (Yes there are other actors of interest and their states being saved, but I am not loading or referencing them on load anymore while I try to narrow down the crash) :
5 - I using a World Partition Query for world partition streaming/loading and wait until completed. I am using coroutines (as suggested here ) and doing several checks to ensure assets are loaded, the collision for the character on the floor is present, etc. ( Once this completes, if we resume gameplay at this point everything runs fine, other than the data layers previously active are unloaded and none of the saved actors states updated bc that must happen after loading. ) Added the code here in case anyone finds it helpful:
-
/** * * Checks if the streaming is completed and that there is a solid floor under the spawn location we are going to * * @param LatentInfo * @param WorldContextObject * @return */ FVoidCoroutine UMyGameInstance::WaitForStreamingCompletedAsync(FLatentActionInfo LatentInfo, const UObject* WorldContextObject, const FVector Location) { const UWorld* World = WorldContextObject->GetWorld(); UWorldPartitionSubsystem* WorldPartitionSubsystem = World->GetSubsystem<UWorldPartitionSubsystem>(); if (!World || !WorldPartitionSubsystem) co_return; bool bStreamingComplete = false; bool shadersCompilingComplete = false; bool bFloorFound = false; int32 MaxAttempts = 30; // 30 seconds timeout int32 CurrentAttempt = 0; //Run Query to make sure DL actors are loaded around player before releasing while (!bStreamingComplete || !shadersCompilingComplete || !bFloorFound) { if (CurrentAttempt >= MaxAttempts) { UE_LOG(LogTemp, Error, TEXT("MyGameInstance::WaitForStreamingCompletedAsync - Timed out waiting for floor/streaming at %s"), *Location.ToString()); break; } co_await UE5Coro::Latent::Seconds(1); CurrentAttempt++; TArray<FWorldPartitionStreamingQuerySource> QuerySources; FWorldPartitionStreamingQuerySource& QuerySource = QuerySources.Emplace_GetRef(); QuerySource.bSpatialQuery = true; // Use location and radius QuerySource.Location = Location; QuerySource.Radius = DataLayerQueryRadius; // The radius to check QuerySource.bDataLayersOnly = false; // Whether to only check data layers int32 RemainingPSOs = UKismetRenderingLibrary::NumPrecompilingPSOsRemaining(); shadersCompilingComplete = !GShaderCompilingManager->IsCompiling() && RemainingPSOs == 0; FString Shaders = FString::FromInt(RemainingPSOs); UE_LOG(LogTemp, Log, TEXT("MyGameInstance::WaitForStreamingCompletedAsync - Precompiling PSOs - %s"), *Shaders); bStreamingComplete = WorldPartitionSubsystem->IsAllStreamingCompleted(); // Capsule sweep downwards to check for floor collision with player dimensions FHitResult HitResult; // Trace from slightly above the location to ensure we catch the floor if we're exactly on it FVector TraceStart = Location + FVector(0, 0, 30.0f); FVector TraceEnd = TraceStart + FVector(0, 0, -550.0f); // Trace 550 units down FCollisionQueryParams QueryParams; QueryParams.bTraceComplex = true; QueryParams.AddIgnoredActor(UGameplayStatics::GetPlayerCharacter(WorldContextObject, 0)); float CapsuleRadius = 34.0f; float CapsuleHalfHeight = 88.0f; if (const ACharacter* PlayerCharacter = UGameplayStatics::GetPlayerCharacter(WorldContextObject, 0)) { if (const UCapsuleComponent* CapsuleComponent = PlayerCharacter->GetCapsuleComponent()) { CapsuleRadius = CapsuleComponent->GetScaledCapsuleRadius(); CapsuleHalfHeight = CapsuleComponent->GetScaledCapsuleHalfHeight(); } } FCollisionShape CollisionShape = FCollisionShape::MakeCapsule(CapsuleRadius, CapsuleHalfHeight); bFloorFound = World->SweepSingleByChannel( HitResult, TraceStart, TraceEnd, FQuat::Identity, ECC_Visibility, CollisionShape, QueryParams ); // Ensure the hit is a walkable surface (normal is relatively vertical) if (bFloorFound && HitResult.ImpactNormal.Z < 0.7f) // Approx 45 degrees { bFloorFound = false; } DrawDebugCapsule( World, bFloorFound ? HitResult.Location : TraceEnd, CapsuleHalfHeight, CapsuleRadius, FQuat::Identity, bFloorFound ? FColor::Green : FColor::Red, false, 1.1f, 0, 2.0f ); DrawDebugLine( World, TraceStart, TraceEnd, bFloorFound ? FColor::Green : FColor::Red, false, 1.1f, 0, 2.0f ); if (bFloorFound) { UE_LOG(LogTemp, Log, TEXT("MyGameInstance Floor found at %s during streaming check."), *HitResult.ImpactPoint.ToString()); } else { UE_LOG(LogTemp, Warning, TEXT("MyGameInstance Still waiting for floor to load at %s. Streaming complete: %s"), *TraceStart.ToString(), bStreamingComplete ? TEXT("True") : TEXT("False")); } } co_return; }
6- After level is reloaded, we check a bool in the game instance to see if this is a reload and if so we set Data Layer runtime states to those found in the game save file.
7 - This then crashes every time when reactivating the data layer from step 2. This happens whatever way I attempt to reactivate them, including re-triggering via the same BP puzzle actor that activated the data layer in step 2. I’m actually now just activating the LoadDataLayers function above with a key press, so even after waiting wayyy more than should be needed, this still causes the crash.
So what am I missing? I can activate any number of data layers when I start the main persistent level and play through the game with no issue. I don’t understand how opening the main level from a menu level or from the main level after reloading itself and waiting for streaming to complete could be causing any issues, and normally after typing out the problem like this I would find my error in logic but I am still lost.
Any help is greatly appreciated, thanks!





