The whole world: .streamingsector
Documentation on .streamingsector files
Last updated
Documentation on .streamingsector files
Last updated
Last documented update: January 80, 2025 by
This page will tell you what .streamingsector files do and how they do it.
If you would rather edit streamingsector files, check out our World Editing guides
If you're looking for a certain streaming sector, see here or check out RedHotTools ->
For a list of interesting locations, see here
For a (partial) list of node types and what they are, see Reference: .streamingsector node types
This is where the world of Cyberpunk is defined.
Other than the world environment, streaming sector files can also define
navigation
sound
collision
illumination
as there are several types.
If you create a mod with sectors, you need to create a streamingblock
CDPR auto-generates these files from a much larger dataset. For that reason, cutoffs are sometimes arbitrary, and locations are scattered across multiple streamingsectors.
In addition, different LODs also have different sector files. For more information, check the expendable box under LOD (Level of Detail) Data and grid sizes
Node and nodeData indices may change every time CDPR updates their game.
This list tells the engine where to put the data from nodes.
Via the NodeIndex
property, each entry points an element inside the nodes array.
One node can have multiple associated nodeData
entries.
You can find some info in <Cyberpunk 2077>\tools\redmod\metadata.json
The actual class name of worldNodeData
is worldCompiledNodeInstanceSetupInfo
QuestPrefabRefHash
globalNodeId
should be defined in nodeRefs block
MaxStreamingDistance
secondaryRefPointDistance
streamingDistance
UkFloat1
Pivot
secondaryRefPointPosition
Bounds.Min
streamingRefPoint
Bounds.Max
not listed
Seems there's no box/bounds, but two different vectors
This list defines the assets that make up the sector — everything from the list of objects around you and their interactions, to the locations of light, sounds, and effects, to the NPCs, the minimap, and almost everything else.
Each entry is a worldNode
object with a number of nodeData entries. These nodes can do wildly different things, depending on their types and properties.
For a (partial) list of node types and what they are, see Reference: .streamingsector node types
This list contains linked quests that are triggered via scene files. You can find more information under NodeRefs (this is not yet fully explored)
contains as many values as ranges are needed (at least one default range). Each range is mapped on entries in nodeData
starting at index
, and stops before (excludes) the index of the following range.
The default variant index is 0.
Node entries in this default range are always enabled, regardless of variant state.
variantNodes
contains as many empty arrays as variants (in this case, 10).
TODO: FAFO Do they have to be empty? What if they aren't? What even goes there?
Streaming Sectors contain the world's data, holding a node tree that includes all its models and entities.
A steamingsector can split its nodes into ranges called variants. A variant is used to display/enable an amount of nodes in a specific situation (like during or after a quest). All sectors and their variants need to be declared somewhere; this place is the streamingblock.
For more information on how to trigger variants, see Switching between sector states in the World Editing section.
The information below used to be the only way to find sectors. However, as this has gotten much easier via RedHotTools -> , the information below has been preserved for posterity.