Repository navigation
EN Studio Overview
Français · Type: tutorial + how-to · Audience: author · Context: local Studio · Status: ready · Applies from: 4.2.3
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:one-person,lan-engine-repo
The Studio is a page of the dev server where you edit a game with the real engine in front of you: what you see is what players get. This page starts it, on your computer or on your phone, and tours its tabs.
npm run studio starts the dev server and opens the Studio at http://localhost:5173/__studio/. Nothing leaves your
machine: every change is written to files under games/<id>/ (in a created project, under game/), the same files
an AI assistant or a teammate edits with git. The room you edit is drawn by the engine itself (src/engine/dom), so a
change shows as the game will show it.
The Studio is one page, studio.html (entry src/studio/main.ts). Any dev server of the
repository serves it at /__studio/, npm run dev too; npm run studio also opens it in your browser. A production
build leaves it out, unless it is built on purpose as a static demo (Demo mode).
To put a game's Studio online for a team (logins, roles, several people at once), use the hosted Studio instead: What runs where.
Limit ·
one-personThe local Studio is for one person on one machine. It has no accounts, no roles and no locks: two people editing the same files at once go through git, not through the Studio.
The Studio open on the demo game (or yours), the Rooms tab showing a room with its placement editor, and, if you want, the same Studio on your phone over your local network.
- Node 22.12 or later, and the repository installed with
npm install(Install from the repository), or a created project (Your first game). - The prepared assets of the game (
npm run assets), so rooms are drawn with their pictures. - For screenshots and before/after captures only: Playwright and its Chromium (doctor).
-
Start the Studio.
# in the engine repository npm run studio# or in a created project npm run studioIn the engine repository the game is
GAME=<id>when you set it, otherwise the last game chosen withnpm run game, otherwiseconfig.gameofpackage.json, otherwisedemo. A game folder withoutindex.tsstops the start with✖ games/<id>/index.ts not found (GAME=<id>). Your browser opens/__studio/on the Rooms tab.
- Pick a room in the Rooms tab. The room is drawn by the engine, with the placement editor on top, and the list of its props, actors and hotspots on the right. Select one to open its sheet (Edit a room).
-
To work from a phone or a tablet on the same network, stop the Studio and start it in LAN mode instead.
# in the engine repository npm run studio:lanThe command prints a one-session token and the Studio address with it:
LAN write access is protected by this one-session token: <token> Studio: http://<this machine's address>:5173/__studio/?token=<token> Layout editor: http://<this machine's address>:5173/?edit=<room>&token=<token>Open that address on the phone. A new token is drawn at each start, unless you set
WEB_SCUMM_STUDIO_TOKENyourself. Why the token, and what it protects: Local and LAN security.
Limit ·
lan-engine-reponpm run studio:lanandnpm run dev:lanare scripts of the engine repository. A created project has no LAN script yet; Testing on a phone over the LAN says how to do without.
The tabs, in the order of the bar. The URL keeps the tab (#check, or #rooms/<room> for a room), so a reload
lands where you were.
| Tab | What it does | Page |
|---|---|---|
| Rooms (default) | The room drawn by the engine with the placement editor on top; sheets for props, actors and hotspots: look lines, reactions, talk topics, the timeline of scripts; forms for structured values and the stage | Edit a room, Placement and stage |
| Storyboard | The editor of storyboard.json, each panel drawn like a frame, with its coverage against the content |
Storyboard |
| Map | The scenario's groupings (chapters, puzzles, characters) and what no grouping names yet | Map |
| Assets | Every image and sound, where it is used, its art prompt, uploads and the cutting of sheets | Assets and cutting |
| Voices | The voice recording table per language, and the heroes × languages matrix | Voices and the heroes × languages matrix |
| Music | The game's scores through its own music director | Music |
| Check | Validator, solver, world map, puzzle graph, lint, playtests, storyboard coverage, changes between revisions | Check, Semantic diff, Before and after captures |
| Play | The game in a frame with its live state, the rule explainer, the journal, sessions to export and replay | Play and replay a session, Rule explainer |
| Language | The objectives with their forms, and the game's IR | Language and objectives |
| Remix | Seeds, dimensions, worlds compared, coverage and bias | Remix in the Studio |
| Notes | The shared log with the AI and your teammates | Notes |
Beside the tabs: Undo and Redo in the header (Ctrl/Cmd+Z, Shift for redo) over every write of the session
(Preview, apply, undo), and the Assistant button (or the a key when no field has
focus), a chat with a model of your choice that has the same tools as the MCP server (The Assistant).
The Studio follows the files: when an AI, an editor or git changes a file of the game, the Studio reloads what it touches and keeps what you are typing. Vite's full reloads caused by game files are ignored by the Studio page (the engine view reloads).
-
npm run studioopens the Studio;npm run studio:lanopens it to your network behind a token (Local and LAN security). - Every edit is a file of the game, written atomically and undoable (Preview, apply, undo).
- Any AI can work on the same files beside you (Local MCP: setting up each client).
- Edit a room, then Check.
- Studio troubleshooting when the Studio refuses something.
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