Proving Ground
The Proving Ground is the 3D world editor and live session. Put your systems in a room, run their firmware, and watch what they do.
Open it
- In a project, open World and choose Create world (or Edit world). Each project has one world.
- Or choose Proving Ground in the app’s sidebar.
A world holds parts placed in a room, your project’s systems on those parts, and the room itself: temperature, light, gravity. See Core concepts for the words.
Modes
The switcher at the left of the toolbar picks a mode, or press 1 to 6. A mode changes the tools; your selection and your work stay. Ctrl+Z undoes any edit, Ctrl+Shift+Z or Ctrl+Y redoes.
| Key | Mode | What you do there |
|---|---|---|
1 | Build | Add parts (box, cylinder, sphere or an imported model), move and turn them, set mass, place sensors and put your systems on parts. |
2 | Rig | Say what a part is (its class, such as a battery or a switch) and how it hangs together: attach it to a parent with a fixed, hinge, slider or ball joint and a pivot. |
3 | Wire | Wire boards to parts, buses and power on the system canvas, and pick the firmware each microcontroller runs. |
4 | Run | Start a session and drive it: play, pause and speed, the console, the bus monitor and the readings. |
5 | Inspect | Plot any live value over virtual time and pin probes on a part, a board, a sensor or a bus. |
6 | Analyze | The saved runs of this world: their reports, two runs compared, Save as test, and rerunning saved tests. |
Check: what is missing
The Check badge on the toolbar counts what needs attention; click it to open the Check tab. Each item is one line with Show, which selects the thing it names, and a fix when one change settles it.
- Blocks run items, such as a microcontroller with no firmware, turn Play off until you fix them.
- Everything else never stops a run: things the run ignores, things not live yet, Using defaults and Labelled. The last two start closed but are always counted.
The same list comes from the CLI:
ct world check room.world.json # exits 1 when something blocks the runImport 3D models
Use Import in Build mode to add a model: GLB, glTF, STL, OBJ, STEP or a KiCad PCB. We convert it, work out its size and collision shape, and you place it like any other part. STL and OBJ carry no units, so you pick them on import. From the terminal, ct asset import does the same.
Run a live session
Press Play. The session runs your firmware on its twins inside the world, and the Run mode shows:
- Time: play, pause and speed, with the virtual time and the real-time factor.
- Board console: each board’s output, and a field to send text to it.
- Bus monitor: UART bytes and CAN frames, newest first.
- Readings: what the world feeds the board’s sensors, and the board’s LEDs.
- Motion: drop, push, strike or shake a part, or script its motion in steps.
- Inputs: pick a part in the outliner and set what it measures in the Inspector, such as a bus voltage. See Set inputs by hand.
While a session runs, editing is locked: stop it to edit. Every input you give is recorded, so the session can be replayed exactly.
Plots and probes
In Inspect, plot any value the session streams over virtual time: sensor readings, temperatures, circuit voltages, power outputs, LEDs, and each part’s position and speed. Up to eight plots at once. Pin a probe on a part, a board, a sensor or a bus to keep its current values in a small panel over the view. Without a session, Inspect plots what the last saved run recorded.
Compare, report and save as test
- Save as test turns a session into a saved run that replays its recorded inputs, with an optional console line that must appear for a pass. It is listed under Runs; from the terminal,
ct scene rerun <ID>runs it again. - Report shows a run’s verdict, its checks, the issues and why a run is not a pass. Download it as JSON or JUnit XML.
- Compare puts two runs side by side: whether their inputs and results are the same, and what differs.
- Run again replays one saved run on the current engine. Solve replays every saved test of the world and compares each result with the one before.
What to trust
The world’s physics (motion, contact, temperature, light, power) is provisional: models chosen for testing firmware, not validated against real hardware. The firmware and its twins carry their own labels; see Core concepts. Sessions and saved tests never use generation credits.