# Build, playtest, publish

Buy an experience in the Shop, place its door, and open its setup panel.

Buy an experience in the Shop, place its door, and open its setup panel. Enter
the room to build its scenery. Its script runs in copies of the room.

**Save & playtest** saves the settings and script shown in the panel, then enters
a private copy of the draft. It does not publish. All rooms belonging to the game
are snapshotted together, including their saved scripts and scenery.

During a playtest:

- **Restart** takes a new snapshot of saved drafts and starts fresh script state.
  It keeps test saves, so you can test returning players.
- **Reset progress** starts again with empty test saves, including global values
  and leaderboards. Published-game saves are never read or changed.
- **Script** opens the entry room's script. **Save & restart** applies its changes.
- **Logs** keeps the latest 100 messages and errors for this run. Use `log()`
  inside a handler. Runtime errors identify the handler; window errors name
  the invalid field. Errors during `start` are retained too.
- **Stop** returns to the authoring room and discards test saves. Test data lives
  in memory and also disappears when the player session ends or the server restarts.

Only the creator can enter a playtest. Invitations and spectating are disabled.
Scripts can use `send` and doors to visit the game's draft rooms. A playtest is
currently a solo test; testing several real players together still uses published
copies. Restart always starts at the room where you began the playtest.

**Publish** snapshots the saved game for players. Existing published copies keep
their version until they end; a playtest always starts a new copy. Publishing
from the setup panel uses the saved script, so save script edits first.
