Repository navigation
EN Studio Sessions
Français · Type: how-to · Audience: author · Context: local Studio · Status: ready · Applies from: 4.1.14
The local Studio · contract: stable · verified by CI (support matrix of 4.4.0, 2026-10-23): Chromium end to end (the Studio's checks); Windows: the unit suite only · automated checks: jobs
e2e,windows; CI plane2e,windows; 2 test files · people's passes:studio-hero-matrixnot run (#238) · known limits:text-switches-local
The Play tab runs the game in a frame beside its live state and its journal, exports what you played as a session file, replays one to land the game where it ends, and, for a speedrun game or a game with hero choice, adds the panels that go with them.
A session file (<game>-session.json) that reproduces a bug, the game put back exactly where a tester stopped, and
the journal of what every action answered.
The local Studio, engine repository or created project. True from 4.1.14 (the speedrun panel); the text switches from 4.3.0. On a hosted Studio the game runs on its own origin: the frame shows it with its dev tools, and the panels that read into the frame (state, journal, rule explainer, sessions, text switches) are left out.
- The Studio running (overview).
In the browser, on the Play tab. npm run replay runs in the engine repository.
- Play in the frame. The game runs with its dev tools on. Beside it, the live state: room, bag, flags, what is unlocked, where the moving characters are, the scripts running, the players. Under it, the rule explainer.
-
Read the journal. What every action answered (a rule, a look line, a fallback…), the events emitted and the
listeners they reached, each script step, characters moved, player switches; filter it by kind. The engine keeps it
in dev mode only (
Engine.trace, the last 200 entries).
-
Export session downloads the inputs since the game started, with the journal:
<game>-session.json. That file is a bug report.
-
Replay… loads a session file: the engine plays it silently and the game lands where it ends. A slider scrubs through the entries (tap one to land there), and a divergence from the recording is flagged. On the command line, the same file replays without a display, prints the journal and the final state, and exits 1 where the replay stops matching the recording:
# in the engine repository npm run replay -- <game>-session.json
For a game that declares speedrun (Speedrun for authors): the categories and their rules; the
splits with an editor (name, trigger; + split; Write to the game writes the manifest with set_value on
@game); Preview on this session (the frame's session replayed with the category's splits: the times a run would
record); Export route / Import route (.wsroute); Logical route (solver) (the solver's witness, never a
record); the last two routes compared; and Export run (.wsrun) once an attempt in the frame is sealed.
Applies from 4.3.0
For a game whose texts hold switches ({form?m=…|f=…}, {hero}), Text switches under the state offers a select
per flag a switch reads; its values are the ones the switches list and the ones a literal set (or the start, a
checkpoint) writes. A pick sets the flag in the frame ("unset" removes it), so the room, the hero's sprite variant,
{hero} and every line show that hero; the hero's name as shown now is in the heading. The Rooms tab reads the same
pick to show a switched text as a player reads it (Edit a room).
Limit ·
text-switches-localText switches are the local Studio's: a hosted Studio's game runs on its own origin; set the flag there in the game's DEV panel.
After Replay…, the frame shows the game where the session ends and the slider is at its last entry; no divergence
is flagged. npm run replay exits 0.
| Symptom | Cause | Fix |
|---|---|---|
| A divergence is flagged during a replay | The content changed since the session was recorded | Look at the entry flagged: that is where the game now answers differently |
| The journal is empty | The game in the frame was not played yet | Play in the frame |
| No state, journal or replay on a hosted Studio | The game is on another origin | Use a local Studio, or the game's own DEV panel |
None in the game, except Write to the game in the speedrun panel (the game's speedrun manifest, through
set_value). Sessions, routes and runs are downloads.
-
src/studio/play.ts,src/studio/speedrun-panel.ts,src/studio/hero-picker.ts,tools/replay.ts. - Playtests (shared sessions summed up), Heroes: several characters and hero choice.
Generated publication · publication générée — current documentation · documentation courante: quest'n'click 4.4.0 r1, documentation revision · révision de la documentation 8dc717c69acb62c4742b69c54a7e7dfb620f75d8.
Earlier versions and permalinks · versions précédentes et liens permanents: https://wanoo.github.io/quest-n-click/docs/
An edit made in this wiki is overwritten at the next publication · une modification faite dans ce wiki est écrasée à la publication suivante.
Edit the source · Modifier la source · Report an error · Signaler une erreur
Index (6)
Start (6)
Play (9)
Install (17)
- Requirements
- Install from the release archive
- Install from npm, once published
- Install from the repository to work on the engine
- doctor: checking your machine
- Image toolchain
- Audio toolchain: ffmpeg, fluidsynth, Furnace, uv
- Upgrade
- Upgrade notes: 4.4
- Upgrade notes: 4.3
- Upgrade notes: 4.2
- Upgrade notes: 4.1
- Upgrade notes: v3
- Upgrade notes: v2 to v3
- Coming from web-scumm
- Package reference
- Install troubleshooting
Create a game (55)
- Your first game
- Layout of a created project and of the engine repository
- The working loop
- Content principles and the identity contract
- Rooms
- Geometry: placement, walk zones, masks, layers, camera
- Something is visible but unreachable
- Reactions
- Game commands
- Conditions
- Flags, variables and events: which to use
- Custom code
- Characters
- Items and inventory
- World map
- Dialogues
- Scripts and events
- Moving characters: patrols and walks
- Exits
- Chapters and objectives
- State and saves: persistent or temporary, renaming an id, migrations
- Staging: wide rooms and animations
- The stage: lights, particles, floors
- Skin and fonts
- Title and credits
- Heroes: several characters and hero choice
- Built-in minigames
- A custom minigame
- Translations
- Music in stems
- Sound effects
- Voices: per language and per hero
- Images: prompts, cutting sheets, transparency, scale
- Asset provenance
- The storyboard, source of truth
- Puzzle design
- Classic mechanics
- Review pages
- DSL reference
- Checking your game
- What the solver proves
- Solver options
- Playtests
- Remix
- Speedrun for authors
- The sealed ending
- Production template
- Example games
- Working with an AI
- Build and release a game
- Publish on GitHub Pages
- The static game on Clever Cloud
- Other static hosts
- Sub-path, cache and service worker, incomplete deploys, going back
- Testing on a phone over the LAN
Local Studio (24)
- The local Studio: overview and launch
- Edit a room
- Placement and stage
- Preview, apply, undo
- Storyboard
- Assets and cutting
- Check: validator, solver, critical path, heat, health, coverage
- Before and after captures
- Semantic diff
- Play and replay a session
- Rule explainer
- Language and objectives
- Voices and the heroes × languages matrix
- Map
- Notes
- Remix in the Studio
- Music
- The Assistant: bring your own key
- Demo mode and studio-apply
- Local and LAN security
- Studio API
- Local MCP: setting up each client
- MCP tools
- Studio troubleshooting
Team Studio (21)
- What runs where
- Concepts: revision, transaction, span, lease, preview, build
- Starting as an invited dev
- Working together day to day
- Roles and actions: the full matrix
- Invitations
- Managing members
- Write refused on the hosted Studio: stale base revision (409)
- Write refused on the hosted Studio: span locked (423)
- Recovering after a lost lease, a disconnection or a stale preview
- Comments
- Map and semantic diff
- Publishing builds
- Remote MCP
- The game in Git
- Upgrading the engine of a hosted game
- Hosted assets
- The server's command line
- Health and metrics routes
- Trying it locally with compose.yml
- Known limits
Clever Cloud (23)
- Clever Cloud: overview, cost and prerequisites
- Apps and add-ons
- Domains and TLS
- Keycloak
- Generic OIDC and GitLab
- Configuration
- First deployment
- Backups
- RPO and RTO
- Restore the Studio on a fresh installation
- Redeploys
- Upgrading the server and checking state after a migration
- Limits of going back
- Monitoring
- Security
- Rotating keys
- Recovering admin access
- Changing domain or OIDC provider
- Worker, PostgreSQL or Cellar down
- Exporting the game and leaving the installation
- Retention
- Clever Cloud troubleshooting
- Costs and teardown
Reality Bridge and connectors (16)
- The Reality Bridge: what it is
- Quick start
- Guarantees
- Install and run the Bridge
- Backup and restore
- Several tenants
- Signals and the manifest
- The Bridge's command line
- Connectors overview
- Email connector
- Telnet connector
- SSH connector
- Open Badges connector
- The connector SDK
- Security: Biscuit and signatures
- Bridge and connector troubleshooting
Contribute (25)
- Welcome
- Developer setup
- The dev loop
- Before a pull request
- Conventions
- Writing documentation
- Architecture
- Code tour
- Import boundaries
- Which tests run when
- Mutation testing
- The coverage ratchet
- The quality baseline
- CI explained
- Field passes
- Benchmarks
- Releasing
- npm packages
- Decisions and ADRs
- Governance
- Bot pull requests
- Contributing with AI agents
- Security policy
- Code of conduct
- Licences and credits