t→t+1
Documentation

Simulation

Simulation schema

This reference is generated from the canonical @tplus1/sim-format JSON Schema.

Required top-level fields

versionmetadataenginerenderertemplatesspawns
{
  "required": [
    "version",
    "metadata",
    "engine",
    "renderer",
    "templates",
    "spawns"
  ],
  "engine": {
    "type": "object",
    "properties": {
      "type": {
        "type": "string",
        "description": "Open engine/capability id resolved through the platform registry, e.g. rapier3d, rapier2d, custom-js, pybullet-rigidbody, taichi-fluids, or a custom registered engine."
      },
      "id": {
        "type": "string"
      },
      "mode": {
        "type": "string",
        "enum": [
          "realtime",
          "batch",
          "streaming",
          "offline"
        ]
      },
      "output_tier": {
        "type": "string"
      },
      "payload_kind": {
        "type": "string"
      },
      "substeps": {
        "type": "integer",
        "default": 1
      },
      "config": {
        "type": "object",
        "additionalProperties": true
      }
    },
    "additionalProperties": true,
    "required": [
      "type"
    ]
  },
  "renderer": {
    "type": "object",
    "properties": {
      "type": {
        "type": "string",
        "enum": [
          "three",
          "canvas2d",
          "webgpu",
          "html"
        ]
      },
      "dimensions": {
        "type": "integer",
        "enum": [
          2,
          3
        ]
      },
      "quality": {
        "type": "string",
        "enum": [
          "performance",
          "medium",
          "ultra"
        ]
      },
      "bounds": {
        "type": "array",
        "items": {
          "type": "number"
        },
        "minItems": 2,
        "maxItems": 3
      },
      "camera": {
        "type": "object",
        "properties": {
          "position": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3
          },
          "target": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "minItems": 3,
            "maxItems": 3
          },
          "fov": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 180
          },
          "zoom": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "near": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "far": {
            "type": "number",
            "exclusiveMinimum": 0
          }
        }
      }
    },
    "required": [
      "type",
      "dimensions"
    ]
  }
}