REDDECK / DOCS

The scene file

A scene is the contract between EDGEbuilder’s two halves and the input to REDbridge’s sector.build. Format 1, pinned 2026-10-13. It lives at source/scenes/<name>.scene.json in a REDcode project, or in EDGEbuilder’s data folder when there is no project.

{
  "format": 1,
  "name": "My Alley",
  "game": "2.31",
  "groups": [
    { "id": "grp_crates", "name": "Crates", "parent": null }
  ],
  "objects": [
    {
      "id": "crate_a",
      "kind": "mesh",
      "resource": "base/environment/decoration/containers/cargo/cargo_crate/cargo_crate_a.mesh",
      "appearance": "default",
      "transform": { "position": [-1200.0, 1500.0, 20.0], "rotation": [0, 0, 0.3826834, 0.9238795], "scale": [1, 1, 1] },
      "streaming": { "primary": 60, "secondary": 48 },
      "ref": "edgebuilder/my_alley/crate_a",
      "bounds": { "min": [-0.58, -0.73, 0.0], "max": [0.58, 0.73, 1.24] },
      "group": "grp_crates",
      "props": {}
    },
    {
      "id": "lamp",
      "kind": "light",
      "transform": { "position": [-1199.0, 1500.0, 23.0], "rotation": [0, 0, 0, 1], "scale": [1, 1, 1] },
      "props": { "type": "spot", "color": [255, 200, 120], "intensity": 800, "radius": 12, "innerAngle": 30, "outerAngle": 60 }
    }
  ]
}
Field Meaning
format Always 1 for this page
name The scene’s name. The bake lowercases it and keeps letters, digits and _ for file names
game The game version the scene was made against, for information
groups The scene tree: id, name and parent id. Groups organise the editor; the bake flattens them into one sector
objects[].id Unique in the scene. Letters, digits, _ and -
objects[].kind mesh, entity or light. More kinds come with phase B5
objects[].resource The game path of the mesh or entity template. Forward or backward slashes. None for a light
objects[].appearance The appearance name, default default
objects[].transform position [x, y, z] in metres, world space; rotation a quaternion [x, y, z, w]; scale [x, y, z]
objects[].streaming primary: the distance in metres the node streams in at; secondary: its maximum streaming distance. Both optional: the bake derives them from the object’s size
objects[].ref The node reference, unique in the scene. Generated as edgebuilder/<scene>/<id> when missing
objects[].bounds The resource’s local bounding box, from the asset index, so the bake need not read the game. Read from the game when missing
objects[].group The group the object belongs to
objects[].props The kind’s own fields. Lights: type (point, spot, area), color [r, g, b] 0 to 255, intensity, radius, innerAngle, outerAngle, ev, temperature

Positions are the game’s world coordinates in metres: X east, Y north, Z up. A rotation of [0, 0, 0, 1] is no rotation.

What the bake makes of it

REDbridge’s sector.build turns the objects into one worldStreamingSector with a node per object (worldMeshNode, worldEntityNode, worldStaticLightNode), one worldStreamingBlock whose descriptor holds a streaming box around every node, and an ArchiveXL file that patches the block into the world. The files land in the REDcode project under source/archive/edgebuilder/<name>/ and source/resources/archive/pc/mod/<name>.xl. Every node’s reference goes into its node data, so the game can find it by name.