Skip to main content
A scene in Euca is just a set of entities with components — there is no scene file format to learn first. You build a scene by spawning entities, and you read it back with observe.
Start a local server first — see the Quickstart. All commands target http://localhost:3917; every POST sends Content-Type: application/json.

1. Spawn the entities

Each /spawn adds a row to the world table. Give it a position and whatever components the entity needs — physics, health, team, a collider, and so on.
The full set of spawnable components — colliders, AI, roles, inventory, and more — is in the POST /spawn reference.
Step before you read. A spawn sets an entity’s local transform, but world-space positions only propagate when the simulation advances. Always POST /step {"ticks":1} before observe or scene/save, or every position reads back as the origin [0,0,0].

2. Read the assembled scene

observe returns the whole scene as a flat table — one row per entity, with its components.

3. Point a camera (render / editor hosts)

A render- or editor-hosted server owns a camera you can drive:
The camera pose is CPU state, so these endpoints work on a headless host too — GET /camera returns the pose and the writes move it. What’s host-only is the rendered output: nothing is drawn and /screenshot returns 503 without a render host. Build and inspect scene data headless; use a render or editor host to view it.

4. Persist the scene

The durable, rebuildable form of a scene is a scenario — a declarative document of the whole world that you export and re-apply:
See Deterministic replay for the round-trip. There is also a quick POST /scene/save {"path":"scene.json"} that dumps the world to a JSON file, but note its loader is lossyscene/load restores position, scale, and physics body only, and drops health, team, velocity, and rotation. For a faithful rebuild, prefer the scenario.