Runtime Settings Registry keys are runtime tuning only—they do not enter Manifest contentHash. Defaults reproduce “unconfigured” behavior. Full ship defaults: Gems/WorldStreaming/Registry/WorldStreaming.setreg.
Top-level keys
| Key | Default | Description |
|---|
/WorldStreaming/Enabled | false | Master switch |
/WorldStreaming/DefaultManifest | "" | .wsmanifest path auto-loaded at startup |
/WorldStreaming/PolyPartitionSignatureMismatchKick | 0 | PolyTerrain signature mismatch kick (advanced) |
Runtime streaming core
Key (Runtime/) | Default |
|---|
MaxConcurrentLoads / MaxConcurrentUnloads | 4 / 4 |
MaxConcurrentActivations / MaxConcurrentDeactivations | 0 (unlimited) |
MaxConcurrentStreamingCells | 0 |
StreamingResolveEveryNFrames | 1 |
UnloadHysteresisMeters / ActivateHysteresisMeters | 32 / 16 |
UnloadCooldownSeconds | 3.0 |
MemoryBudgetBytes | 0 |
PerGridMemoryBudgetBytes | [] ([{ "GridLevel", "MemoryBudgetBytes" }]) |
StreamingRangeScale | 1.0 |
GridLoadingRangeOverrides | [] ([{ "GridLevel", "LoadRadius", "ActivateRadius" }]; ≤0 = that radius not overridden) |
ChunkEvictionCooldownSeconds | 0 |
MergeProximateSourcesDistance | 0 (off) |
Failure, blocking, monitoring
| Key | Default |
|---|
MaxLoadRetries | 0 (unlimited) |
LoadRetryBaseCooldownSeconds / LoadRetryBackoffMultiplier / MaxLoadRetryCooldownSeconds | 0.0 / 1.0 / 0.0 (base ≤0 uses unload cooldown) |
LoadTimeoutWarningSeconds | 0 |
MaxBlockingStreamingSeconds / MaxBlockingStreamingIterations | 0 / 0 |
BlockOnSlowStreaming | false |
AutoBlockCooldownSeconds | 5.0 |
SlowStreamingLagSeconds | 0 (off) |
CriticalStreamingLagSeconds / CriticalStreamingDistanceRatio | 0 / 0.5 |
StreamingPredictionSeconds / MaxStreamingPredictionDistance | 0 / 0 |
PriorityForwardConeHalfAngleRadians / PriorityAngleContribution | 0 / 0 |
HLOD and coverage
| Key | Default |
|---|
HlodWarmupFrames | 0 |
EnableHlodDowngradeUnderBudget | false |
EnforceHlodLoadingRange | false |
TightShapeCoverage | false |
Multiplayer Runtime
| Key | Default |
|---|
ServerAuthority | "ServerDriven" |
NetworkInstantiationMode | "StaticAliasAutoInstantiate" |
ServerStreamingMode | "StreamInOut" |
FilterForcedRelevantByCell | false |
OwnedShardCoords | "" |
Bridge
| Key | Default |
|---|
TerrainMode | "Bridge" |
VegetationMode | "Coexist" |
NavMeshMode | "Coexist" |
AtomMode | "Off" |
Details:
Bridges.
Bake keys
Under /Dawn Engine/WorldStreaming/Bake/:
| Key | Default |
|---|
HlodWorkerThreads | ≤1 (serial) |
AssignCellGenerations | false |
MergeMultiSourceCells | false |
Details:
Baking.
CVars
| CVar | Default | Description |
|---|
ws_logCellTransitions | false | Log cell state transitions / reasons |
ws_blockOnRootDoubleInstance | false | Catch Root + cell double instantiation |
ws_drawRuntimeHash3D / ws_drawRuntimeHash2D | false | In-world / 2D hash grid overlay |
ws_drawRuntimeHashIncludeUnloaded | false | Include Unloaded cells in overlay |
ws_drawRuntimeHashColorByLayer | false | Color by Content Layer |
ws_imguiPanel | false | ImGui diagnostics (WorldStreaming.Debug) |
ws_entityCellRefreshMs | 0 | Entity→cell refresh period |
ws_gateReplicatedEntitiesOnCellLoaded | false | Gate replication on Loaded |
ws_installCellEntityDomainOnHost | false | Server-shard host entity domain |
sv_worldStreamingInterestUpdateMs / sv_worldStreamingInterestRadius | 250 ms / 512 m | Interest |
sv_worldStreamingPeriodicSnapshotPushes | 20 | |
sv_worldStreamingShardAuthorityUpdateMs | 500 ms | |
ws_test_forceManifestMismatch | 0 | Test hook |
Overlay colors: Activated green / Loaded amber / Unloaded gray. Headless servers have no render provider—draw commands silently no-op.
Console commands
| Command | Description |
|---|
ws_dumpStats | Runtime diagnostic snapshot (counts, per-source table, budgets, streaming=PAUSED, render origin, …) |
ws_flushStreaming [seconds] | Blocking flush |
ws_setStreamingEnabled [0|1] | Pause / resume; no arg = report status |
ws_overrideGridLoadingRange [gridLevel] [loadRadius] [activateRadius] | No args = clear all overrides |
WsDumpBridgeStats | Terrain / Vegetation |
WsDumpNavBridgeStats | NavMesh |
WsDumpAtomBridgeStats | Atom |
All diagnostics are runtime-only, never enter contentHash, and are zero-cost when off.
Editor diagnostics
Partition view: streaming preview, memory heatmap, 2D minimap, unloaded-cell proxies (session-only). Transition reasons seen in logs include SourceDemand, LoadCompleted, AssetError, LoadRetry, BudgetEviction, BudgetDowngrade, BundleMirror, and more.
Troubleshooting
| Symptom | Likely cause | What to try |
|---|
| Nothing loads | Disabled, bad Manifest, no streaming source | Confirm Enabled and DefaultManifest; check ws_dumpStats for a world and sources |
| Cells stuck at Loaded | Activate radius too small; no MP auth; layer clamped | Increase Activate Radius; check ServerDriven auth and Content Layer effective state |
| A region never loads | Exclude source; layer Unloaded; grid mask | Check Exclude sources, layer ancestors / network role, source grid mask |
| Thrashing at boundaries | Hysteresis / cooldown too small | Increase UnloadHysteresisMeters / UnloadCooldownSeconds |
| Streaming lags behind movement | Low concurrency or no prediction | Enable prediction, raise concurrency; optionally BlockOnSlowStreaming |
| Streaming fully stopped | Paused | Check ws_setStreamingEnabled / ws_dumpStats for streaming=PAUSED |
| HLOD not showing/hiding | Atom bridge off | Set Bridge/AtomMode = Bridge; verify with WsDumpAtomBridgeStats |
| Cells repeatedly Failed | Spawnable failed to build | ws_logCellTransitions for AssetError; check Asset Processor |
| Stale content after bake | Manifest not re-aggregated | Confirm the .wsworld job ran; in MP, verify contentHash |
Next steps