Scene Schema Reference
This is a complete reference for the scene JSON schema. All scenes must conform to this schema to load successfully.
Top-Level Properties
Required Properties
name (string, required)
The name of the scene. Must be at least 1 character.
"name": "My Awesome Scene"
version (string, required)
The version of the scene. Use semantic versioning (e.g., "1.0", "1.2.3").
"version": "1.0"
schemaVersion (string, required)
The schema version this scene conforms to. Currently "1.0".
"schemaVersion": "1.0"
assets (array, required)
Array of asset definitions. Can be empty [] but must be present.
"assets": [
{
"id": "model1",
"type": "model",
"uri": "https://example.com/model.obj",
"mediaType": "model/obj"
}
]
Optional Properties
description (string, optional)
A description of the scene.
"description": "A beautiful 3D environment"
id (string, optional)
Unique identifier for the scene. Used for scene discovery and references.
"id": "my_scene_001"
author (string, optional)
The author or creator of the scene.
"author": "John Doe"
rating (string, optional)
Content rating. Must be one of:
"GENERAL"- Suitable for all audiences"MODERATE"- May contain mild content"ADULT"- Mature content
"rating": "GENERAL"
thumbnail (string, optional)
URL to a thumbnail image for the scene. Must be a valid URI.
"thumbnail": "https://example.com/thumbnail.jpg"
manifestUrl (string, optional)
Alternative URL where the scene manifest can be found. Must be a valid URI.
"manifestUrl": "https://example.com/manifest.json"
world (object, optional)
World information for scenes that belong to a larger world.
"world": {
"id": "my_world",
"position": {"x": 0.0, "y": 0.0, "z": 0.0}
}
Properties:
id(string): World identifierposition(vec3): Position of this scene in the world
spawn (vec3, optional)
Player spawn point. Defaults to (0, 0, 0) if not specified.
"spawn": {"x": 0.0, "y": 1.0, "z": 0.0}
movementBounds (object, optional)
Limits player movement to a bounding box.
"movementBounds": {
"min": {"x": -10.0, "y": 0.0, "z": -10.0},
"max": {"x": 10.0, "y": 20.0, "z": 10.0}
}
Properties:
min(vec3, required): Minimum boundsmax(vec3, required): Maximum bounds
Defaults to (-100, -100, -100) to (100, 100, 100) if not specified.
gameType (string, optional)
Player movement type. Must be one of:
"FPS"- First-person shooter style movement (default)"NONE"- No player movement, view-only
"gameType": "FPS"
instances (array, optional)
Array of instances (objects placed in the scene). Can be empty [] or omitted.
"instances": [
{
"id": "instance1",
"asset": "model1",
"position": {"x": 0.0, "y": 0.0, "z": 0.0},
"rotation": {"x": 0.0, "y": 0.0, "z": 0.0},
"scale": {"x": 1.0, "y": 1.0, "z": 1.0}
}
]
gamemode (object, optional)
Gamemode script for scene-wide logic.
"gamemode": {
"file": "gamemode-script"
}
Properties:
file(string, required): Asset ID of the gamemode script
skybox (object, optional)
Skybox configuration for environment mapping.
"skybox": {
"uri": "https://example.com/skybox.jpg",
"rotation": {"x": 0.0, "y": 0.0, "z": 0.0}
}
Properties:
uri(string, required): URL to skybox texturerotation(vec3, optional): Rotation in degrees
autosaveNotification (object, optional)
Configuration for autosave notifications.
"autosaveNotification": {
"text": "Game saved!",
"position": {"x": 0.02, "y": 0.95},
"font": "default-font",
"color": {"x": 1.0, "y": 1.0, "z": 1.0}
}
Properties:
text(string, optional): Notification textposition(vec2, required): Screen position (0-1 normalized)font(string, optional): Font asset IDcolor(vec3, optional): Text color (RGB, 0-1)
Validation Rules
- All required fields must be present
- Field types must match (string, number, boolean, object, array)
- Enum values must be from the allowed set
- URIs must be valid HTTPS URLs
- Vec3 values must have x, y, z components
- Scale values must be > 0
- Asset IDs must be unique within the scene
- Instance IDs must be unique within the scene
- Asset references in instances must exist
Example Complete Scene
{
"name": "Complete Scene Example",
"version": "1.0",
"schemaVersion": "1.0",
"description": "A complete scene with all optional fields",
"id": "complete_scene",
"author": "Scene Creator",
"rating": "GENERAL",
"thumbnail": "https://example.com/thumb.jpg",
"world": {
"id": "my_world",
"position": {"x": 0.0, "y": 0.0, "z": 0.0}
},
"spawn": {"x": 0.0, "y": 1.0, "z": 0.0},
"movementBounds": {
"min": {"x": -50.0, "y": 0.0, "z": -50.0},
"max": {"x": 50.0, "y": 100.0, "z": 50.0}
},
"gameType": "FPS",
"assets": [],
"instances": []
}
Next Steps
- Assets - Learn about asset definitions
- Instances - Learn about placing objects
- Metadata - Learn about scene metadata
- Advanced Features - Learn about advanced features