Quick answer: World Partition actors fail to stream in because the actor’s data layer is not activated at runtime, no valid streaming source is registered, or the actor’s Is Spatially Loaded flag is misconfigured. Verify the data layer, attach a WorldPartitionStreamingSource to the player, and check the actor’s grid cell placement.

Here is how to fix Unreal World Partition actors not loading. You place actors in your World Partition level, everything appears in the editor, but at runtime entire sections of the world are missing. Buildings, foliage, props — gone. The landscape loads fine, the player spawns, but the actors you painstakingly placed are nowhere to be seen. No errors in the output log, no loading failures, just an empty world. The actors exist in the level data, but World Partition’s streaming system has decided not to load them.

The Symptom

At runtime (Play In Editor or packaged build), actors placed in a World Partition level do not appear. The level loads, the player can move around, but specific actors or entire regions of the map are missing. In PIE, you might see the actors briefly in the editor viewport and then they vanish when the game starts. In a packaged build, they never appear at all.

The Output Log shows no errors related to the missing actors. There are no “failed to load” or “asset not found” messages. The actors simply are not being streamed in. If you open the World Partition editor window during PIE, you may see that the cells containing the missing actors are marked as unloaded (red) while surrounding cells are loaded (green).

Sometimes only specific actors are missing while others in the same area load correctly. This points to per-actor settings rather than a whole-region streaming failure. Other times, an entire data layer’s worth of actors is missing, which points to layer activation.

What Causes This

Data layer not activated at runtime. World Partition data layers have an activation state that determines whether their actors are eligible for streaming. If a data layer’s Initial Runtime State is set to Unactivated, none of its actors will stream in unless code explicitly activates the layer at runtime. This is the most common cause when an entire category of actors (e.g., all interiors, or all nighttime props) is missing. Developers often create data layers for organizational purposes and forget to set the runtime activation state.

No streaming source. World Partition requires at least one WorldPartitionStreamingSource to determine which cells to load. By default, the player controller acts as a streaming source. But if you use a custom player controller that does not inherit from APlayerController in the standard way, or if you override the streaming source setup, the system may have zero active sources. With no streaming source, no cells are loaded, and no spatially loaded actors appear.

Is Spatially Loaded misconfiguration. Each actor has an Is Spatially Loaded property. When checked (the default), the actor only loads when a streaming source is within range of its grid cell. When unchecked, the actor loads immediately with the level, regardless of streaming. If a critical actor that should always be present — like a game manager or a trigger volume — has Is Spatially Loaded checked, it will not exist until the player gets close enough to its cell. Conversely, if you uncheck it on too many actors, you lose the performance benefits of streaming.

Grid cell size and streaming distance mismatch. The World Partition grid has a configurable cell size. Actors are assigned to cells based on their world position. The streaming source has a loading range that determines how far ahead cells are loaded. If the cell size is very large (e.g., 128K units) and the streaming distance is smaller than the cell size, the player must be very close to the cell’s center before it loads. Actors at the far edge of a large cell might appear to load “late” or not at all from certain approaches.

HLOD generation issues. If HLODs are enabled but not built for the affected cells, the system may attempt to display the HLOD representation (which does not exist) instead of the actual actors. This results in nothing appearing at medium distances where the HLOD should take over, while the full actors only appear when the player is very close.

The Fix

Step 1: Check data layer activation. Open the World Partition editor window (Window > World Partition). Select the data layer containing the missing actors. In the Details panel, verify that Initial Runtime State is set to Activated. If you need the layer to start deactivated and activate later (e.g., for a day/night cycle), ensure your activation code runs before the player reaches the affected area.

// Activate a data layer at runtime (C++)
void AMyGameMode::ActivateInteriorLayer()
{
    UWorld* World = GetWorld();
    if (UWorldPartition* WP =
        World->GetWorldPartition())
    {
        // Find the data layer by name
        for (UDataLayerInstance* Layer :
            WP->GetDataLayerManager()->GetDataLayerInstances())
        {
            if (Layer->GetDataLayerShortName() ==
                "Interiors")
            {
                Layer->SetRuntimeState(
                    EDataLayerRuntimeState::Activated);
                UE_LOG(LogTemp, Log,
                    TEXT("Activated Interiors layer"));
                break;
            }
        }
    }
}

You can also activate layers from Blueprints using the Set Data Layer Runtime State node. The change takes effect on the next streaming update, which happens every frame.

Step 2: Verify the streaming source. Check that your player pawn or player controller has a WorldPartitionStreamingSource component. In most setups, the engine adds one automatically to the player controller. If you are using a custom controller, add the component manually and configure its Streaming Source Shapes — at minimum, a sphere shape with a radius matching your desired loading distance (typically 20,000 to 50,000 units).

// Add streaming source to a custom player controller
AMyPlayerController::AMyPlayerController()
{
    StreamingSource =
        CreateDefaultSubobject<UWorldPartitionStreamingSourceComponent>(
            TEXT("StreamingSource"));

    // Configure loading distance
    FStreamingSourceShape Shape;
    Shape.bUseGridLoadingRange = false;
    Shape.Radius = 40000.f;
    StreamingSource->TargetBehavior =
        EStreamingSourceTargetBehavior::Include;
    StreamingSource->Shapes.Add(Shape);
}

Debug Visualization

Use the console command wp.Runtime.ToggleDrawRuntimeHash2D to overlay the World Partition grid on the viewport. Loaded cells appear green, unloaded cells appear red, and cells in the process of loading appear yellow. This immediately shows you whether the cells containing your actors are being loaded at all.

Additionally, use wp.Runtime.ToggleDrawStreamingSources to visualize where streaming sources are active. If no streaming source is drawn, the system has no reference point for loading decisions. If the source is drawn but its radius does not reach the cells with your actors, increase the streaming distance.

For per-actor debugging, select the actor in the World Partition editor window and check its cell assignment in the Details panel. Verify the cell coordinates make sense for the actor’s world position. If an actor appears in an unexpected cell, its bounds may extend beyond its visual representation, causing it to be assigned to a distant cell.

HLOD and Packaging Considerations

If actors appear in PIE but not in a packaged build, the issue is usually HLOD-related. Open the World Partition window and rebuild HLODs for the entire level using Build > Build HLODs. Missing HLOD data causes the streaming system to skip cells at medium distances because it expects to display the HLOD but has nothing to show.

Also verify that the actors’ assets are included in the packaging settings. World Partition does not automatically add all referenced assets to the cook. If an actor references a mesh or material that is in a plugin or a non-cooked content directory, it will silently fail to load in the packaged build. Check the output log in the packaged build (not PIE) for asset loading warnings that might not appear in the editor.

“World Partition does not fail loudly. A missing streaming source, a deactivated data layer, or an unbuilt HLOD all produce the same result: nothing loads, nothing errors, nothing tells you why. The debug visualization commands are not optional — they are essential.”

Related Issues

If actors stream in but pop visually with no smooth transition, see Level Streaming Pop-In Visible to Player for loading screen and fade strategies. If your World Partition level crashes during cooking, check World Partition Cook Crash for cell size and reference chain issues.

Run wp.Runtime.ToggleDrawRuntimeHash2D first — it shows you exactly which cells are loaded and which are not.