What a world is
A folder of data and models, signed and packed
A world is a package: a folder, later packed into one signed .iamar file. Two JSON files describe it, glTF models give it shape, and an optional WebAssembly script gives it behaviour the data cannot express.
Most worlds are data only. scene.json can say everything the browser already knows how to do: environment (sky, sun, fog), terrain, water, placed models, simple shapes, lights, sounds, spawn points, portals, triggers, creatures, NPCs with dialogue, and quests with a tracker and rewards. You describe; the browser runs it.
The package never contains engine code. It is glTF, PNG or JPEG, Ogg audio, JSON and, when needed, .wasm. Positions are in metres, +Y is up, a standing person is about 1.8 m.
my_world/
manifest.json who made it, version, budgets, features used
scene.json the world, as data: environment, terrain,
water, models, primitives, lights, sounds,
spawn points, portals, triggers, creatures,
NPCs, quests
assets/*.glb 3D models, glTF 2.0 binary, textures embedded
textures/ sky faces, terrain layers, heightmaps (PNG, JPEG)
audio/ Ogg Vorbis
scripts/*.wasm optional behaviour, sandboxed (see Scripts)
thumbnail.png optional, 512 x 288
tools/build.py keep the Blender build script with the world
packed: my_world-0.1.0.iamar a plain zip of the same folder, signed
manifest.json, the short version
{
"format": "iamar-world", "format_version": 0,
"id": "my_world", the <world> of iamar://<owner>/<world>
"name": "My World", "description": "...",
"author": {"name": "..."},
"version": "0.1.0", semver; bump it on every publish
"api_version": "0.1",
"budgets": {"triangles": 150000, "objects": 64, "texture_size": 1024,
"texture_bytes": 33554432, "lights": 4,
"package_bytes": 16777216, "audio_bytes": 4194304,
"script_bytes": 0},
"features": ["sky", "terrain", "objects", "npcs", "portals"],
"license": "CC-BY-4.0", "credits": [ ... ]
}
Every field, every scene.json section and the hard limits are in WORLD_FORMAT.md; where it and the JSON Schemas disagree, the schemas win. Unknown keys are errors, except keys starting with x-, which are yours for notes.