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

flowchart LR author["Editor authoring
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

TermMeaning
CellSmallest streaming unit. Logical key is WorldStreamingCellCoord (x, y, z, gridLevel, layerId); stable hash is WorldStreamingCellId (includes cellIdSalt). Each content cell maps to one Spawnable.
GridA 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.
AlwaysLoadedNon-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:

StateMeaning
UnloadedNot in memory
LoadedEntities resident; no simulation / rendering (warmup)
ActivatedEntities active for simulation and rendering
FailedLoad 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:

FormModelTypical use
WorldStreamingStreamingSourceComponentPushPlayer, camera
Script RegisterStreamingSourcePush (handle; cleared on world unload)Portal preheat, scripted zones
WorldStreamingStreamingSourceProviderRequestBusPullCinematic cameras, AI / server interest

Multiple sources merge (Include) or carve (Exclude). Field-level detail: Runtime streaming.

Manifest and .wsworld

AssetRole
.wsworldAuthoring descriptor: aggregation source list, optional m_chunkSize / m_shardSize, Loaded Regions are editor-only and never enter the runtime Manifest.
.wsmanifestRuntime schedule: cell layout, dependencies, HLOD, contentHash for multiplayer handshake.
.wschunkOptional 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:

KindWhat it isConfigured by
Editor shardCollaboration Prefab split of cell content (AutoShard, sub-shards, per-actor sidecars)Partition view / editor tools
Server shardMulti-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:

TargetRole
WorldStreamingRuntime core (AzCore / AzFramework only; dedicated-server friendly)
WorldStreaming.Editor / .BuildersPartition UI and bake pipeline
WorldStreaming.MultiplayerOptional interest sync and authority
WorldStreaming.TerrainVegBridge / .NavMeshBridge / .AtomBridgeOptional subsystem bridges
WorldStreaming.DebugOptional ImGui diagnostics

Next steps


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.