When a World Partition map containing Generate-at-Runtime PCG is loaded as a LevelInstance at a non-identity transform (a translation offset), the runtime-generated PCG output is placed in the un-offset world frame and is desynced from the instance’s own WP-streamed content (road/landscape), which is offset correctly. Cooked/partitioned content offsets correctly; runtime-generated content does not.
Root cause (from source)
- Runtime-gen partition actors are pooled/spawned into World->PersistentLevel at world-axis grid cells — PCGRuntimeGenScheduler.cpp (World->PersistentLevel at line 212; SpawnParams.OverrideLevel = World->PersistentLevel at 2013), cell coords via UPCGActorHelpers::GetCellCoord = floor(worldPos / GridSize) (PCGActorHelpers.cpp:817, no origin/transform), PA placed at the raw world cell center (pool Teleport ~1981; create in PCGSubsystem.cpp ~1321).
- They never receive the owning instance’s LevelTransform*, unlike cooked content, which is saved inside the instance level and gets the transform applied at stream-in (LevelInstanceLevelStreaming.cpp:412). There is no LevelInstance / LevelTransform / GetLevel awareness anywhere in the runtime-gen scheduler.
- Secondary determinism issue: point seeds derive from absolute world position (PCGHelpers::ComputeSeedFromPosition, PCGHelpers.cpp:50), so even a grid-size-aligned offset reshuffles the scatter relative to the authored/editor layout. ~18 element call sites compute seeds this way; only PCGSplineSampler exposes a bSeedFromLocalPosition precedent.