SimGroup

SimGroup is a container object used to organize other level objects in the scene tree and in items.level.json files.

Most levels use a root group named:

MissionGroup

Nested groups are commonly used to keep props, lights, roads, terrain objects, markers, and generated content in manageable folders.


Basic example

A simple group entry in items.level.json:

{
  "class": "SimGroup",
  "name": "road_props",
  "__parent": "MissionGroup"
}

Objects can then use that group as their parent:

{
  "class": "TSStatic",
  "name": "barrier_01",
  "__parent": "road_props",
  "shapeName": "/levels/example/art/shapes/barrier.dae",
  "position": [10, 20, 0],
  "rotationMatrix": [1, 0, 0, 0, 1, 0, 0, 0, 1],
  "scale": [1, 1, 1]
}

Important fields

Field Type Description
class string Must be "SimGroup".
name string Group name. Other objects use this value in __parent.
__parent string Parent group name. Usually "MissionGroup" or another group.
persistentId string Stable editor/runtime identifier where present. Usually generated automatically.
hidden bool Hides the group in supported editor/runtime contexts. Child objects may still exist.
enabled bool/string Group enabled state where present.

Relationship with __parent

Level item files commonly store hierarchy through __parent.

Example:

{
  "name": "lights_night",
  "class": "SimGroup",
  "__parent": "MissionGroup"
}

Child object:

{
  "name": "street_lamp_01",
  "class": "SpotLight",
  "__parent": "lights_night"
}

The group must be loaded before children that reference it, or the loading tool must rebuild the parent relationship.

When external tools move objects between files, preserve __parent or intentionally rebuild the same group hierarchy.

MissionGroup

MissionGroup is the main level group used by the scene tree.

A typical main item file contains:

{
  "name": "MissionGroup",
  "class": "SimGroup",
  "enabled": "1"
}

Most level objects are direct or indirect children of MissionGroup.


Tool notes

For tools that generate or transform levels:

  • Preserve group names used by __parent.
  • Preserve persistentId values unless creating a new group.
  • Keep generated groups close to the content they own.
  • Avoid flattening the whole scene into MissionGroup; large levels rely on nested groups for editing.
  • Do not delete a group without moving or deleting its children intentionally.

Common issues

  • Objects appear in the wrong scene tree location because __parent references the wrong group.
  • Generated objects fail to load under the intended group because the group entry is missing.
  • Renaming a group breaks child object placement if __parent values are not updated.

Validation criteria

  • MissionGroup exists.
  • Every generated __parent value resolves to an existing SimGroup.
  • Large object sets are organized into meaningful groups.
  • Group names are stable enough for tools, scripts, and editor workflows.

See also: Level object files (items.level.json) .

Last modified: June 24, 2026

Any further questions?

Join our discord
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.