Skip to content
quest'n'click

InstallReferenceFor authors, contributorsApplies from 4.1.8

doctor: checking your machine

Cette page en françaisThis page on the GitHub wiki

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).

Running it

# 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 doctor

Both run the same file, tools/doctor.ts, whose checks live in tools/doctor-checks.ts.

What it checks

LineProbeRequiredFix it prints
Node.jsthe running Node's major version is 22 or moreyesInstall Node.js 22 or newer.
Pythonpython3 -c … prints its versionoptional (required with --release)Install Python 3 to prepare the assets (npm run assets).
Python image modulespython3 imports Pillow, NumPy and SciPyoptional (required with --release)Run: python3 -m pip install -r requirements.txt
ffmpegffmpeg -version succeedsoptional (required with --release)Install ffmpeg to build audio.
Playwright ChromiumPlaywright's Chromium executable existsyesRun: npx playwright install chromium
Playwright Firefoxits executable existsoptionalRun: npx playwright install firefox
Playwright WebKitits executable existsoptionalRun: npx playwright install webkit
Reality BridgeEd25519 in Node's WebCrypto, then Biscuit's WebAssembly loadsonly Ed25519Install 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.

Output and exit code

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.

since 4.1.8

--release

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.

What it does not check

  • 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.

In a created project

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 doctor

The 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.

Since

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.