Customizing scenarios will allow you to have full control on what will exists in the scenarios and where they are. This guide will go through parts of the Scenario.json that will allow customization of key components such as spacecrafts, ground stations and text that will appear in the scenario.
It is recommended to work off an existing scenario JSON file which can be easily downloaded from studio. See the Scenario section within Configuring Space Range Settings on how to do so.
This guide will not go through settings that will not be important for hosts to configure and their default values will be acceptable for most use cases.
WARNING
Participants of active or future Space Range sessions are discouraged to look this page as it contains spoilers of a preset scenario.
Simulation
"Simulation": {
"Speed": 2.0,
"Step Size": 0.1,
"Integrator": "Euler"
},
These settings will control how fast the simulation will run.
Speed: This will manipulate how fast the simulation will run. Step Size: This will control the time in between each ticks. Integrator: This will set the integrator to use in the simulation. The options are RK4 and Euler. RK4 is more precise however it is slower. It is recommended to use Euler for scenarios as highly accurate orbits are generally not needed.
Universe
"Universe": {
"Epoch": "2025/10/06 14:30:00",
"Atmosphere": false,
"Magnetosphere": false,
...
},
These settings will control the universe environment.
Epoch: Sets the starting date of the scenario Atmosphere: Sets whether or not a simple atmosphere model will exists on the Earth. Magnetosphere: Sets whether or not a simple Magnetosphere model will exists on the Earth.
Ground Stations
"Ground Stations": {`
"Locations": [
"Los Angeles",
"Toronto"
],
...
},
These settings will control the ground stations.
Locations: For every city that exists in this list, there will be a ground station at the locations. Only supported cities in this list are accepted.
- Adelaide, Amundsen-Scott, Anchorage, Ankara, Auckland, Baghdad, Bangkok, Beijing, Berlin, Bogota, Brasilia, Brisbane, Buenos Aires, Cairo, Canberra, Cape Town, Caracas, Chicago, Colombo, Dallas, Darwin, Delhi, Dubai, Helsinki, Hobart, Hong Kong, Honolulu, Istanbul, Jakarta, Johannesburg, Karachi, Lagos, Lima, London, Los Angeles, Lusaka, Madrid, Manila, Marrakech, Melbourne, Mexico City, Moscow, Mumbai, Nairobi, New York, Paris, Perth, Reykjavik, Rio de Janeiro, Riyadh, Rome, Santiago, Sao Paulo, Seoul, Shanghai, Singapore, Stockholm, Sydney, Tehran, Tokyo, Toronto, Ulaanbaatar, Warsaw, Vancouver
Spacecraft
This section will go through all the settings relevant to the spacecraft.
Orbit
"Orbit": {
"Semi Major Axis": 42164140.6,
"Eccentricity": 0.15,
"Inclination": 40.0,
"Omega Ascension": 40,
"Argument of Periapsis": 0,
"True Anomaly": 85.0,
"Delta": 1.5
},
These are the standard Classical Orbital Elements to define the orbit.
Delta: Defines the gap between the True Anomaly between each spacecraft in degrees.
Power
"Power": {
"Safe Fraction": 0.1,
"Capture Tax": 0.001,
"Downlink Tax": 0.001
},
This section defines the settings around the power and how much power is taken during certain actions.
Safe Fraction: When the battery charge fraction is at or below this number, the spacecraft will enter a safe mode, that is change into sun pointing mode if it isn’t already and ignore any commands sent from the user. It will stay in sun pointing mode and start accepting commands again once the battery charge fraction reaches the value. This is a fraction between 0 to 1. Capture Tax: How much battery charge fraction will be consumed when a image is captured. This is a fraction between 0 to 1. Downlink Tax: How much battery charge fraction will be consumed when a a downlink is initiated. This is a fraction between 0 to 1.
Components
{
"Type": "Reaction Wheels",
"Enabled": true,
"Position": [ 0.0, 0.0, -0.15 ],
"Data": {}
},
Components can be added to all spacecraft. Above is an example of one.
Type: The type of component to be added. Name: Name of the component to appear in the outliner if specified. Otherwise it will default to the component. Enabled: This sets whether or not the component will be enabled during the scenario. This can be a true or false. Position: The position offset for the component relative to the center of the spacecraft in a X, Y, Z coordinate. Data: Sets further properties on the component.
All the components that can be added to a spacecraft are:
- Battery, Computer, EM Sensor, GPS Sensor, Optical Camera, Reaction Wheels, Receiver, Solar Panel, Storage, Transmitter.
Notable data properties are:
- Battery
- Nominal Capacity: The maximum capacity of the battery in Ah
- Charge Fraction: The starting charge fraction of the battery
- Solar Panel
- Area: The total area of the solar panel
- Efficiency: The efficiency of how much power the solar panel will produce. The higher, the more power it will produce.
Objects, Earth
"Objects": {
"Ground": [
{
"Type": "Word",
"Name": "NY",
"Location": {
"Planet": "Earth",
"Latitude": 40.713047,
"Longitude": -74.007233,
"Altitude": 0
},
"Scale": 25000.0,
"Data": {
"Text": "WATERS",
...
}
},
This section defines objects located around the Earth.
Type: The type of object it is. It can be either a word or vessel. Name: The name of the object that will appear in the outliner. Location: The object will be located on the planet within the solar system and the geodetic coordinates provided. Scale: This manipulates the size of the object Color: For vessels, this will define the color of the container on the ship in hex color code. Data: Modifies specific properties of the object.
- Words
- Text: The text that will appear at this location
- Vessel
- Heading: The heading the vessel will be pointing at
- Speed: The speed he vessel will be travelling at in m/s.
Events
"Events": [
{
"Enabled": false,
"Name": "Packet Corruption",
"Type": Spacecraft,
"Time": 100.0,
"Repeat": false,
"Interval": 1.0,
"Target": "Transmitter",
"Data": {
"CorruptionFraction": 0.5,
"CorruptionIntensity": 0.01
}
},
Events will set what type of events will occur during the scenario and their properties.
Enabled: Sets whether the event will be activated or not. Name: Name of the event. Type: The type of object the event will affect. Only spacecraft is enabled. Time: The simulation time the event will trigger at in seconds. Repeat: True will set the event to be repeated while false won’t. Interval: How many seconds in between each activation of this event after the first trigger. This will only occur if repeat is set to true otherwise it is ignored. Target: The target component the event will affect. Data: The property the event will modify on the component and it’s value when triggered. In the example code above, the transmitter will have it’s CorruptionFraction set to 0.5 and CorruptionIntensity to 0.01.