World Streaming core concepts
This chapter defines the vocabulary used throughout the World Streaming handbook. For the shortest path to a working level, see Getting started.
Data flow
WorldConfig + partition view"] --> wsworld[".wsworld + shard Prefabs"] wsworld --> ap["Asset Processor
PrefabProcessor + aggregator"] ap --> manifest[".wsmanifest"] ap --> spawnables["Cell / HLOD Spawnables"] manifest --> runtime["WorldStreamingSystemComponent"] spawnables --> runtime sources["Streaming sources"] --> runtime runtime --> world["On-demand Loaded / Activated world"]
Authoring writes WorldConfig and shard Prefabs; bake produces a Manifest and per-cell Spawnables; runtime resolves desired cell states from streaming sources within budgets.
Cell and Grid
| Term | Meaning |
|---|---|
| Cell | Smallest streaming unit. Logical key is WorldStreamingCellCoord (x, y, z, gridLevel, layerId); stable hash is WorldStreamingCellId (includes cellIdSalt). Each content cell maps to one Spawnable. |
| Grid | A set of equal-size cells. You can declare multiple grid levels (finer = smaller m_cellSize, typically lower m_gridLevel). Optional vertical (Z) partitioning uses m_verticalPartitioning + m_cellSizeZ. |
| AlwaysLoaded | Non-spatial cell for entities with IsSpatiallyLoaded = false. Always resident when their Content Layer allows it; still gated by layer state. |
Default cell size is 128 m. Changing cell size, origin (m_gridOriginD), or salt repartitions the world—regenerate cellIdSalt and rebake. See
Authoring.
Loaded vs Activated
World Streaming uses a two-tier residency model:
| State | Meaning |
|---|---|
| Unloaded | Not in memory |
| Loaded | Entities resident; no simulation / rendering (warmup) |
| Activated | Entities active for simulation and rendering |
| Failed | Load failed; retries with exponential backoff |
Unloaded → Loading → Loaded → Activating → Activated
↑ |
└── Deactivating ←───────────┘
Loaded → Unloading → Unloaded
- Load Radius drives the Loaded ring around a streaming source.
- Activate Radius drives the Activated ring (usually smaller).
- Unload and deactivate apply hysteresis and cooldown so cells do not thrash at boundaries.
Render-origin switches do not change desired cell state: resolution uses absolute world distance (double-precision friendly). Streaming sources prefer HighPrecisionTransformBus double translation.
Streaming sources
A streaming source is an interest point that contributes to the desired cell set:
| Form | Model | Typical use |
|---|---|---|
WorldStreamingStreamingSourceComponent | Push | Player, camera |
Script RegisterStreamingSource | Push (handle; cleared on world unload) | Portal preheat, scripted zones |
WorldStreamingStreamingSourceProviderRequestBus | Pull | Cinematic cameras, AI / server interest |
Multiple sources merge (Include) or carve (Exclude). Field-level detail: Runtime streaming.
Manifest and .wsworld
| Asset | Role |
|---|---|
.wsworld | Authoring descriptor: aggregation source list, optional m_chunkSize / m_shardSize, Loaded Regions are editor-only and never enter the runtime Manifest. |
.wsmanifest | Runtime schedule: cell layout, dependencies, HLOD, contentHash for multiplayer handshake. |
.wschunk | Optional Manifest chunk when the world exceeds chunk thresholds—lazy metadata for huge worlds. |
Root Spawnable stays light; world content streams through the Manifest. Details: Baking.
Content Layers and HLOD
- Content Layer: logical group across cells with runtime tri-state Unloaded / Loaded / Activated. Child effective state is clamped by ancestors (min). Use for quest phases, day/night sets, client-only or server-only content. See Content Layers.
- HLOD: distant proxy cells generated at bake time. When child content activates, matching proxy regions hide; on unload, proxies appear before content unloads. Mesh show/hide in Atom usually needs
Bridge/AtomMode = Bridge. See HLOD.
Editor shard vs server shard
These share the word “shard” but mean different things:
| Kind | What it is | Configured by |
|---|---|---|
| Editor shard | Collaboration Prefab split of cell content (AutoShard, sub-shards, per-actor sidecars) | Partition view / editor tools |
| Server shard | Multi-authority server ownership index over the world | .wsworld m_shardSize + OwnedShardCoords |
Do not confuse the two when reading multiplayer docs. See Authoring and Multiplayer.
Gem modules
World Streaming is one Gem with optional build targets:
| Target | Role |
|---|---|
WorldStreaming | Runtime core (AzCore / AzFramework only; dedicated-server friendly) |
WorldStreaming.Editor / .Builders | Partition UI and bake pipeline |
WorldStreaming.Multiplayer | Optional interest sync and authority |
WorldStreaming.TerrainVegBridge / .NavMeshBridge / .AtomBridge | Optional subsystem bridges |
WorldStreaming.Debug | Optional ImGui diagnostics |
Next steps
- Authoring: place content and configure the partition view.
- Runtime streaming: how sources resolve desired state.
- Reference: component field tables.