Skip to main content

Virtual Universe settings.json Reference

Every Virtual Universe (VU) folder must contain a settings.json file at its root. The WebPlatform reads this file to register the VU in the simulation selector and to know which GAML model and experiment to launch.


Single-model configuration

{
"type": "json_settings",
"name": "Quang Binh Flood Simulation",
"splashscreen": "./splash.png",
"model_file_path": "./models/FloodingVR.gaml",
"experiment_name": "Launch",
"minimal_players": "1",
"maximal_players": "6"
}

Fields

FieldTypeRequiredDescription
typestringYesMust be "json_settings" for a single model.
namestringYesDisplay name shown in the simulation selector.
splashscreenstringNoPath to a preview image (PNG recommended). Shown as a thumbnail in the selector. If omitted, a placeholder is shown.
model_file_pathstringYesPath to the .gaml file. Relative paths are resolved from the location of settings.json.
experiment_namestringYesName of the GAMA experiment to launch (must match the experiment declaration in the .gaml file).
minimal_playersstringYesMinimum headset count suggested for this simulation (informational, not enforced).
maximal_playersstringYesMaximum player count (informational, used for display in the admin UI).
selected_monitoringstringNoDisplay mode hint. "gama_screen" or "shared_screen". Currently unused.

Path resolution

All paths (splashscreen, model_file_path) are resolved relative to the settings.json file itself — not relative to the WebPlatform root. Absolute paths are accepted.

Example:

learning-packages/
└── flood-simulation/
├── settings.json"model_file_path": "./models/FloodVR.gaml"
├── splash.png"splashscreen": "./splash.png"
├── models/
└── FloodVR.gaml

Catalog configuration

When you have many simulations, a catalog groups them into a collapsible folder in the simulation selector. Catalogs can be nested.

{
"type": "catalog",
"name": "Mekong Flood Scenarios",
"splashscreen": "./catalog-splash.png",
"entries": [
{
"type": "json_settings",
"name": "Quang Binh",
"model_file_path": "./quang-binh/models/FloodVR.gaml",
"experiment_name": "Launch",
"minimal_players": "1",
"maximal_players": "6"
},
{
"type": "json_settings",
"name": "Mekong Delta",
"model_file_path": "./mekong/models/FloodVR.gaml",
"experiment_name": "Launch",
"minimal_players": "2",
"maximal_players": "6"
}
]
}

Catalog fields

FieldTypeRequiredDescription
typestringYesMust be "catalog".
namestringYesDisplay name shown as the folder label.
splashscreenstringNoOptional thumbnail for the catalog folder.
entriesarrayYesArray of json_settings objects or nested catalog objects.

Nested catalogs

{
"type": "catalog",
"name": "All Simulations",
"entries": [
{
"type": "catalog",
"name": "Flood Scenarios",
"entries": [ ... ]
},
{
"type": "json_settings",
"name": "Traffic Demo",
...
}
]
}

Scanning behavior

The WebPlatform scans the root of each directory configured in LEARNING_PACKAGE_PATH and EXTRA_LEARNING_PACKAGE_PATH. For each immediate subdirectory that contains a settings.json, the file is parsed. Subdirectories without a settings.json are ignored.

learning-packages/
├── flood-sim/
│ └── settings.jsonscanned
├── traffic/
│ └── settings.jsonscanned
└── archived/ ← ignored (no settings.json)

The scan is performed once at startup. Restart the WebPlatform to pick up newly added VUs.