2026-04-02 00:08:43 +02:00
|
|
|
{
|
|
|
|
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"name": { "type": "string", "ID": 101},
|
|
|
|
|
"description": { "type": "string", "ID": 102},
|
|
|
|
|
"entities": {
|
|
|
|
|
"type": "array",
|
2026-04-17 21:00:35 +02:00
|
|
|
"ID": 103,
|
2026-04-02 00:08:43 +02:00
|
|
|
"items": { "$ref": "#/definitions/Entity" }
|
2026-08-30 16:59:35 +02:00
|
|
|
},
|
|
|
|
|
"entities2D": {
|
|
|
|
|
"type": "array",
|
|
|
|
|
"ID": 104,
|
|
|
|
|
"items": { "$ref": "#/definitions/Entity2D" }
|
2026-04-02 00:08:43 +02:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": ["name", "entities"],
|
|
|
|
|
"definitions": {
|
|
|
|
|
|
|
|
|
|
"Entity": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"entityref": { "type": "integer", "ID": 201 },
|
|
|
|
|
"parent": { "type": ["integer", "null"] , "ID": 202},
|
|
|
|
|
"name": { "type": "string", "ID": 203 },
|
|
|
|
|
"description": { "type": "string", "ID": 204 },
|
|
|
|
|
"children": {
|
|
|
|
|
"type": "array",
|
|
|
|
|
"ID": 205,
|
|
|
|
|
"items": { "type": "integer" }
|
|
|
|
|
},
|
2026-04-17 21:00:35 +02:00
|
|
|
"components": { "ID": 206, "$ref": "#/definitions/Components" }
|
2026-04-02 00:08:43 +02:00
|
|
|
},
|
|
|
|
|
"required": ["entityref", "name", "components"]
|
|
|
|
|
},
|
|
|
|
|
|
2026-08-30 16:59:35 +02:00
|
|
|
"Entity2D": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"entityref": { "type": "integer", "ID": 207 },
|
|
|
|
|
"name": { "type": "string", "ID": 208 },
|
|
|
|
|
"description": { "type": "string", "ID": 209},
|
|
|
|
|
"components": { "ID": 210, "$ref": "#/definitions/Components2D" }
|
|
|
|
|
},
|
|
|
|
|
"required": ["entityref", "name", "components"]
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-02 00:08:43 +02:00
|
|
|
"Components": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
2026-04-17 21:00:35 +02:00
|
|
|
"transform": { "ID": 2061, "$ref": "#/definitions/Transform" },
|
|
|
|
|
"renderer": { "ID": 2062, "$ref": "#/definitions/Renderer" },
|
|
|
|
|
"camera": { "ID": 2063, "$ref": "#/definitions/Camera" },
|
|
|
|
|
"collider": { "ID": 2064, "$ref": "#/definitions/Collider" },
|
2026-08-30 16:59:35 +02:00
|
|
|
"rigidbody": { "ID": 2065, "$ref": "#/definitions/RigidBody" },
|
|
|
|
|
"speaker": { "ID": 2066, "$ref": "#/definitions/Speaker" },
|
|
|
|
|
"script": { "ID": 2067, "$ref": "#/definitions/Script" },
|
|
|
|
|
"light": { "ID": 2068, "$ref": "#/definitions/Light" }
|
2026-04-02 00:08:43 +02:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
2026-08-30 16:59:35 +02:00
|
|
|
"Components2D": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"transform": { "ID": 2069, "$ref": "#/definitions/Transform2D" },
|
|
|
|
|
"renderer": { "ID": 2070, "$ref": "#/definitions/Renderer2D" },
|
|
|
|
|
"camera": { "ID": 2071, "$ref": "#/definitions/Camera2D" },
|
|
|
|
|
"collider": { "ID": 2072, "$ref": "#/definitions/Collider2D" }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"Vec2": {
|
|
|
|
|
"type": "array",
|
|
|
|
|
"items": { "type": "number" },
|
|
|
|
|
"minItems": 2,
|
|
|
|
|
"maxItems": 2
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-02 00:08:43 +02:00
|
|
|
"Vec3": {
|
|
|
|
|
"type": "array",
|
|
|
|
|
"items": { "type": "number" },
|
|
|
|
|
"minItems": 3,
|
|
|
|
|
"maxItems": 3
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"Vec4": {
|
|
|
|
|
"type": "array",
|
|
|
|
|
"items": { "type": "number" },
|
|
|
|
|
"minItems": 4,
|
|
|
|
|
"maxItems": 4
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"Transform": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
2026-04-17 21:00:35 +02:00
|
|
|
"position": { "ID": 3011, "$ref": "#/definitions/Vec3" },
|
|
|
|
|
"rotation": { "ID": 3012, "$ref": "#/definitions/Vec3" },
|
|
|
|
|
"scale": { "ID": 3013, "$ref": "#/definitions/Vec3" }
|
2026-04-02 00:08:43 +02:00
|
|
|
},
|
|
|
|
|
"required": ["position", "rotation", "scale"]
|
|
|
|
|
},
|
|
|
|
|
|
2026-08-30 16:59:35 +02:00
|
|
|
"Transform2D": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"position": { "ID": 4011, "$ref": "#/definitions/Vec2" },
|
|
|
|
|
"rotation": { "ID": 4012, "type": "number" },
|
|
|
|
|
"scale": { "ID": 4013, "$ref": "#/definitions/Vec2" },
|
|
|
|
|
"size": { "ID": 4014, "$ref": "#/definitions/Vec2" },
|
|
|
|
|
"pivot": { "ID": 4015, "$ref": "#/definitions/Vec3" },
|
|
|
|
|
"zorder": { "ID": 4016, "type": "integer", "minimum": 0 },
|
|
|
|
|
"visible": { "ID": 4017, "type": "boolean" }
|
|
|
|
|
},
|
|
|
|
|
"required": ["position", "size"]
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-02 00:08:43 +02:00
|
|
|
"Renderer": {
|
2026-04-17 21:00:35 +02:00
|
|
|
"type": ["object", "null"],
|
2026-04-02 00:08:43 +02:00
|
|
|
"properties": {
|
2026-04-17 21:00:35 +02:00
|
|
|
"model": { "type": ["string", "null"], "ID": 3021 },
|
2026-04-02 00:08:43 +02:00
|
|
|
"shader": { "type": "string", "ID": 3022 },
|
2026-04-17 21:00:35 +02:00
|
|
|
"albedo": { "type": ["string", "null"], "ID": 3023 }
|
2026-04-02 00:08:43 +02:00
|
|
|
},
|
|
|
|
|
"required": ["model", "shader"]
|
|
|
|
|
},
|
|
|
|
|
|
2026-08-30 16:59:35 +02:00
|
|
|
"Renderer2D": {
|
|
|
|
|
"type": ["object", "null"],
|
|
|
|
|
"properties": {
|
|
|
|
|
"model": { "type": "string", "ID": 4021 },
|
|
|
|
|
"shader": { "type": "string", "ID": 4022 }
|
|
|
|
|
},
|
|
|
|
|
"required": ["model", "shader"]
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-02 00:08:43 +02:00
|
|
|
"Camera": {
|
2026-04-17 21:00:35 +02:00
|
|
|
"type": ["object", "null"],
|
2026-04-02 00:08:43 +02:00
|
|
|
"properties": {
|
|
|
|
|
"fov": { "type": "number", "minimum": 1, "maximum": 179, "ID": 3031 },
|
|
|
|
|
"near": { "type": "number", "minimum": 0.001, "ID": 3032 },
|
|
|
|
|
"far": { "type": "number", "minimum": 0.1, "ID": 3033 }
|
|
|
|
|
},
|
|
|
|
|
"required": ["fov", "near", "far"]
|
|
|
|
|
},
|
|
|
|
|
|
2026-08-30 16:59:35 +02:00
|
|
|
"Camera2D": {
|
|
|
|
|
"type": ["object", "null"],
|
|
|
|
|
"properties": {
|
|
|
|
|
"zoom": { "type": "number", "minimum": 1.0, "ID": 4031 }
|
|
|
|
|
},
|
|
|
|
|
"required": ["zoom"]
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-02 00:08:43 +02:00
|
|
|
"Collider": {
|
2026-04-17 21:00:35 +02:00
|
|
|
"type": ["object", "null"],
|
2026-04-02 00:08:43 +02:00
|
|
|
"properties": {
|
|
|
|
|
"type": {
|
2026-08-30 16:59:35 +02:00
|
|
|
"type": "integer",
|
2026-04-02 00:08:43 +02:00
|
|
|
"ID": 3041,
|
2026-08-30 16:59:35 +02:00
|
|
|
"enum": [0,1,2,3,4,5]
|
2026-04-02 00:08:43 +02:00
|
|
|
},
|
2026-04-17 21:00:35 +02:00
|
|
|
"size": { "$ref": "#/definitions/Vec3", "ID": 3042 },
|
|
|
|
|
"radius": { "type": "number", "minimum": 0, "ID": 3043 },
|
|
|
|
|
"halfHeight": { "type": "number", "minimum": 0, "ID": 3044 }
|
2026-04-02 00:08:43 +02:00
|
|
|
},
|
|
|
|
|
"required": ["type"],
|
|
|
|
|
"allOf": [
|
|
|
|
|
{
|
2026-08-30 16:59:35 +02:00
|
|
|
"if": { "properties": { "type": { "const": 0 } } },
|
2026-04-02 00:08:43 +02:00
|
|
|
"then": { "required": ["size"] }
|
|
|
|
|
},
|
|
|
|
|
{
|
2026-08-30 16:59:35 +02:00
|
|
|
"if": { "properties": { "type": { "const": 1 } } },
|
2026-04-02 00:08:43 +02:00
|
|
|
"then": { "required": ["radius"] }
|
|
|
|
|
},
|
|
|
|
|
{
|
2026-08-30 16:59:35 +02:00
|
|
|
"if": { "properties": { "type": { "const": 2 } } },
|
2026-04-02 00:08:43 +02:00
|
|
|
"then": { "required": ["radius", "halfHeight"] }
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
|
2026-08-30 16:59:35 +02:00
|
|
|
"Collider2D": {
|
|
|
|
|
"type": ["object", "null"],
|
|
|
|
|
"properties": {
|
|
|
|
|
"type": {
|
|
|
|
|
"type": "integer",
|
|
|
|
|
"ID": 4041,
|
|
|
|
|
"enum": [0,1,2,3]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": ["type"]
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-02 00:08:43 +02:00
|
|
|
"RigidBody": {
|
2026-04-17 21:00:35 +02:00
|
|
|
"type": ["object", "null"],
|
2026-04-02 00:08:43 +02:00
|
|
|
"properties": {
|
|
|
|
|
"type": {
|
2026-08-30 16:59:35 +02:00
|
|
|
"type": "integer",
|
2026-04-02 00:08:43 +02:00
|
|
|
"ID": 3051,
|
2026-08-30 16:59:35 +02:00
|
|
|
"enum": [0,1,2]
|
2026-04-02 00:08:43 +02:00
|
|
|
},
|
|
|
|
|
"mass": { "type": "number", "minimum": 0, "ID": 3052 },
|
|
|
|
|
"friction": { "type": "number", "minimum": 0, "maximum": 1, "ID": 3053 },
|
|
|
|
|
"restitution": { "type": "number", "minimum": 0, "maximum": 1, "ID": 3054 }
|
|
|
|
|
},
|
|
|
|
|
"required": ["type"]
|
2026-08-30 16:59:35 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"Speaker": {
|
|
|
|
|
"type": ["object", "null"],
|
|
|
|
|
"properties": {
|
|
|
|
|
"clips": {
|
|
|
|
|
"type": "array",
|
|
|
|
|
"ID": 3061,
|
|
|
|
|
"items": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"path": { "type": "string", "ID": 30611 },
|
|
|
|
|
"gain": { "type": "number", "minimum": 0, "ID": 30612 },
|
|
|
|
|
"pitch": { "type": "number", "minimum": 0, "ID": 30613 },
|
|
|
|
|
"loop": { "type": "boolean", "ID": 30614 },
|
|
|
|
|
"spatial": { "type": "boolean", "ID": 30615 }
|
|
|
|
|
},
|
|
|
|
|
"required": ["path"]
|
|
|
|
|
}}
|
|
|
|
|
},
|
|
|
|
|
"required": ["clips"]
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"Light": {
|
|
|
|
|
"type": ["object", "null"],
|
|
|
|
|
"properties": {
|
|
|
|
|
"type": {
|
|
|
|
|
"type": "integer",
|
|
|
|
|
"ID": 3071,
|
|
|
|
|
"enum": [0,1,2]
|
|
|
|
|
},
|
|
|
|
|
"color": { "$ref": "#/definitions/Vec3", "ID": 3072 },
|
|
|
|
|
"intensity": { "type": "number", "minimum": 0, "ID": 3073 },
|
|
|
|
|
"range": { "type": "number", "minimum": 0, "ID": 3074 },
|
|
|
|
|
"attenuation": { "type": "number", "minimum": 0, "ID": 3075 },
|
|
|
|
|
"innerangle": { "type": "number", "minimum": 0, "ID": 3076 },
|
|
|
|
|
"outerangle": { "type": "number", "minimum": 0, "ID": 3077 },
|
|
|
|
|
"castshadow": { "type": "boolean", "ID": 3078 }
|
|
|
|
|
},
|
|
|
|
|
"required": ["type", "color", "intensity", "range", "attenuation", "innerangle", "outerangle", "castshadow"]
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"Script": {
|
|
|
|
|
"type": ["object", "null"],
|
|
|
|
|
"properties": {
|
|
|
|
|
"scriptNames": {
|
|
|
|
|
"type": "array",
|
|
|
|
|
"items": {"type" : "string", "ID": 3079}}
|
|
|
|
|
},
|
|
|
|
|
"required": ["scriptNames"]
|
2026-04-02 00:08:43 +02:00
|
|
|
}
|
|
|
|
|
}
|
2026-08-30 16:59:35 +02:00
|
|
|
}
|