A Space Range scenario is one JSON object. Studio first parses it into definitions, then constructs the simulation world from those definitions.
Starting document shape
{
"metadata": {},
"simulation": {},
"universe": {},
"ground_stations": {},
"teams": [],
"assets": {
"space": [],
"collections": [],
"neutral": []
},
"docking": [],
"objects": {
"ground": [],
"space": []
},
"events": [],
"questions": []
}Most sections are optional to the parser. A useful team exercise still needs:
- at least one enabled team
- at least one spacecraft definition
- a collection containing that spacecraft
- a team that references the collection
- a valid ground station
Writing strict JSON
- use double quotes
- do not use comments
- do not use trailing commas
- keep property names and references consistent
- use a JSON-aware editor
Most keys are matched without regard to capitalization, but event parameter names must match the supported component properties. Use the casing shown in examples.
Loading definitions
In Studio:
- save the current project
- open Space Range
- select Load Scenario
- choose the scenario JSON
- open Script and confirm the content
- select Apply Changes after editing Script
Loading updates the scenario definitions. It does not by itself guarantee that every spacecraft has been created.
Constructing the world
Select Construct Scenario after the definitions are valid. Studio then:
- clears the existing Space Range world
- applies simulation and universe settings
- creates ground stations
- creates ground and passive space objects
- creates a ground controller for every enabled team
- resolves each team’s collection and creates its spacecraft
- creates neutral spacecraft once
- initializes spacecraft controllers
- applies initial docking and interconnects
Events and questions are registered from the file and become active during the run.
Understanding partial construction
Studio can continue after skipping an invalid item. Examples include:
- a duplicate team ID
- a missing collection
- a collection containing an unknown spacecraft ID
- an unsupported component class
- a malformed question
Always inspect the Console Panel and test through Operator. A populated Outliner does not prove every section loaded.
Nested and dotted keys
Authoring examples use nested objects:
"orbit": {
"planet": "Earth",
"values": [7000, 0, 51.6, 0, 0, 0]
}Studio exports some values with dotted keys:
"orbit.planet": "Earth",
"orbit.values": [7000, 0, 51.6, 0, 0, 0]Both forms load. Round-trip formatting differences are expected.