Repository navigation
EN Install Doctor
Français · Type: reference + troubleshooting · Audience: author, contributor · Context: engine repository, created project · Status: ready · Applies from: 4.1.8
doctor reports, one line each, whether the prerequisites of quest'n'click are on this machine, and how to install
what is missing. It never installs anything. It runs in the engine repository as npm run doctor, and in a created
project as npx quest-n-click doctor (which needs a workaround today: below).
# in the engine repository
npm run doctor
npm run doctor -- --release# in a created project (read "In a created project" first)
npx quest-n-click doctorBoth run the same file, tools/doctor.ts, whose checks live in tools/doctor-checks.ts.
| Line | Probe | Required | Fix it prints |
|---|---|---|---|
Node.js |
the running Node's major version is 22 or more | yes | Install Node.js 22 or newer. |
Python |
python3 -c … prints its version |
optional (required with --release) |
Install Python 3 to prepare the assets (npm run assets). |
Python image modules |
python3 imports Pillow, NumPy and SciPy |
optional (required with --release) |
Run: python3 -m pip install -r requirements.txt |
ffmpeg |
ffmpeg -version succeeds |
optional (required with --release) |
Install ffmpeg to build audio. |
Playwright Chromium |
Playwright's Chromium executable exists | yes | Run: npx playwright install chromium |
Playwright Firefox |
its executable exists | optional | Run: npx playwright install firefox |
Playwright WebKit |
its executable exists | optional | Run: npx playwright install webkit |
Reality Bridge |
Ed25519 in Node's WebCrypto, then Biscuit's WebAssembly loads | only Ed25519 | Install Node.js 22 or newer. |
The Reality Bridge line fails only when Node's WebCrypto has no Ed25519. When Biscuit does not load, it passes and
says Biscuit not installed (only a Bridge needs it): a game that runs no Bridge never needs it.
The Python fix names requirements.txt at the current folder: in a created project the file is
node_modules/quest-n-click/requirements.txt.
Each line starts with ✔ (present), ✖ (missing and required) or ○ (missing and optional, followed by
(optional)); a missing one is followed by its fix. The last line is one of:
Development, asset and browser-test prerequisites are ready.Development and browser-test prerequisites are ready; <n> optional one(s) missing (assets, audio or a second browser).<n> prerequisite(s) missing.
doctor exits 1 when a required prerequisite is missing, 0 otherwise: a machine without Python or WebKit still
develops and plays (since 4.1.6). An example, on the maintainer's Mac on 23 Oct 2026, engine 4.4.0 (paths shortened):
✔ Node.js: 22.14.0
✔ Python: 3.12.7
✔ Python image modules: Pillow 12.3.0, NumPy 2.4.6, SciPy 1.18.1
✔ ffmpeg: ffmpeg version 9.0.2 Copyright (c) 2000-2026 the FFmpeg developers
✔ Playwright Chromium: /Users/…/ms-playwright/chromium-1248/…/Google Chrome for Testing
✔ Playwright Firefox: /Users/…/ms-playwright/firefox-1555/…/firefox
✔ Playwright WebKit: /Users/…/ms-playwright/webkit-2370/pw_run.sh
✔ Reality Bridge: Ed25519 in WebCrypto; Biscuit not installed (only a Bridge needs it)
Development, asset and browser-test prerequisites are ready.
That run shows a limit of the probe: Pillow 12.3.0 passes, while requirements.txt pins 13.0.0. doctor checks
that the modules import, not their versions.
Guarantee ·
doctor-optional-not-fatal· referenced · scope self-checked by the author (AI), not reviewed A missing Python, Python module, ffmpeg or WebKit is reported with its fix and does not makedoctorfail; a missing Node 22 or Chromium does. With--release, Python, its modules and ffmpeg become required, and WebKit stays optional. The test runs the checks with probes it injects, not on a real machine.
feature since 4.1.8
npm run doctor -- --release requires what npm run release-check runs: Python, its modules and ffmpeg. Firefox and
WebKit stay optional (release-check opens no browser; the e2e run in CI on every change); Chromium stays required.
The report ends with (release mode: every prerequisite of npm run release-check is required). release-check and
the candidate's release-check:ci start with it.
- Node's minor version: Node 22.0 to 22.11 pass, though the engine needs 22.12, and 22.13 for the Studio and SQLite (Requirements).
- The versions of the Python modules, OpenCV (the talking-mouth tools), fluidsynth, Furnace and
uv(the audio pipeline). - The network, npm's registry, the release archives.
npx quest-n-click doctor runs tools/doctor.ts from the engine package, and that file imports playwright to find
the browsers' executables. The engine package does not depend on Playwright (scripts/pack.mjs leaves it out with the
other test tools), so in a fresh project the command stops before printing anything:
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'playwright' imported from …/my-game/node_modules/quest-n-click/tools/doctor.ts
Observed on 23 Oct 2026 in a project created from the v4.4.0 archive; the code of main is the same. Nothing in a
created project uses Playwright otherwise: dev, assets, verify, build and release open no browser through
it. Two ways round it, in the created project:
# in the created project: give doctor the Playwright it imports, as a development dependency
npm install --save-dev playwright@^1.64.1
npx playwright install chromium # only if doctor then says Chromium is missing
npx quest-n-click doctorThe range ^1.64.1 is the engine repository's own (its package.json at v4.4.0 and on main on 23 Oct 2026). Or check by hand
what a created project needs: node --version (22.12 or newer), python3 -c "import PIL, numpy, scipy", and
ffmpeg -version if your game has sounds or videos. The step-by-step version is in
Install troubleshooting.
Limit ·
doctor-needs-playwrightIn a created project,doctorworks only onceplaywrightis installed in that project, and it then requires Chromium, which a created project never uses.
npm run doctor exists since 3.0.0. Missing optional prerequisites stopped failing it in 4.1.6, when
quest-n-click doctor (then web-scumm doctor) joined the package's commands; the Reality Bridge line came with
4.1.1, --release with 4.1.8.
-
npm run release-check(runsdoctor -- --releasefirst),npx playwright install - Requirements, Install troubleshooting
- The Reality Bridge has its own
doctor, for its journal (npx quest-n-click-bridge doctor): The Bridge's CLI
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