Repository navigation
EN Install From Web Scumm
Français · Type: how-to · Audience: author · Context: created project · Status: ready · Applies from: 4.3.0
quest'n'click was called web-scumm until 4.2.4 (D47). 4.2.5 renamed the packages, the commands and the imports,
and kept the old names as aliases through 4.2.x; 4.3.0 removed the aliases. A game that still says web-scumm
moves with one command, npx quest-n-click migrate. Players' saves are not touched: the formats kept their names.
A game project that depends on quest-n-click, imports quest-n-click/…, calls quest-n-click in its scripts, and
builds and plays as before, with its players' saves found where they were.
- A created project made with
create-web-scumm(orweb-scumm create), moved to an engine of 4.3.0 or later. - Up to 4.2.4 every name was
web-scumm…. From 4.2.5 the new names exist, and each 4.2.x release also shipped the archives under the old names, whose commands ran after a one-line notice ("web-scumm is now quest-n-click; the old name works until 4.3"). From 4.3.0 there is noweb-scummarchive, command or import any more. - The repository is
github.com/wanoo/quest-n-click; the oldgithub.com/wanoo/web-scummlinks redirect, release downloads included. The sample game and the Studio's demo moved tohttps://wanoo.github.io/quest-n-click/; the old address redirects there, but update your bookmarks and links.
| Before (up to 4.2.4) | From 4.2.5 |
|---|---|
package web-scumm, command web-scumm
|
quest-n-click, command quest-n-click
|
imports web-scumm/content, /player, /minigames, /testing, /reality
|
quest-n-click/content, … |
create-web-scumm |
create-quest-n-click |
web-scumm-bridge (package and command) |
quest-n-click-bridge |
web-scumm-connectors, command web-scumm-connector
|
quest-n-click-connectors, command quest-n-click-connector
|
web-scumm-studio-server, web-scumm-studio-worker
|
quest-n-click-studio-server, quest-n-click-studio-worker
|
release files web-scumm-<version>.tgz, web-scumm-<tag>-…
|
quest-n-click-<version>.tgz, quest-n-click-<tag>-…
|
The formats are identifiers inside files and stores, not the project's name: renaming them would break existing saves,
files and deployments. A save is still a web-scumm-save envelope, a session web-scumm-session, a run a .wsrun
file in the web-scumm-speedrun format, a Remix world web-scumm-remix-1; a signal is still web-scumm-world-signal,
a reality manifest web-scumm-reality-manifest. The browser keeps its IndexedDB databases (web-scumm-saves,
web-scumm-runs) and its web-scumm.… storage keys, so a player's saves and runs are found where they were. The
Bridge's X-Web-Scumm-* headers, the signatures' contexts, the environment variables WEB_SCUMM_* and the Studio
Server's tables are unchanged.
Releases up to v4.2.4 keep their files' names and their attestations, which name the repository wanoo/web-scumm; from
v4.2.5 the attestations name wanoo/quest-n-click (ship verify asks for the one each release was signed under). The
sample game's and the reference chapter's credits say quest'n'click: their presentation fingerprint moved and their
reference run was recorded again. A game's own fingerprint moves only if its own text changes.
- The project committed:
migraterewrites files in place. - The Requirements of the target version.
In the created project's folder, on your machine.
-
Remove the old package:
# in the created project npm uninstall web-scumm
-
Install the engine under its new name, from the release archive:
# in the created project npm install https://github.com/wanoo/quest-n-click/releases/download/v4.4.0/quest-n-click-4.4.0.tgz
-
Rename what the project still says, check, and install again:
# in the created project npx quest-n-click migrate npx quest-n-click migrate --check npm install npm run verifymigraterenames, in every source file of the project (.ts,.tsx,.mts,.cts,.js,.jsx,.mjs,.cjs;node_modules,dist,publicand hidden folders left out), the importsweb-scumm/…toquest-n-click/…in either quote style; intsconfig.json, the pathweb-scumm/*and thenode_modules/web-scumm/…targets; inpackage.json, the scripts' commands (web-scumm devbecomesquest-n-click dev,web-scumm-bridge servebecomesquest-n-click-bridge serve), and it drops a dependency on a former package when its new one is installed. Any string that starts withweb-scumm/in quotes is renamed, an import or not;web-scumm-saveand the other format names are not. It then runs again in a new process, which reads the renamedtsconfig.json, for the rest of the migration.
Guarantee ·
former-name-imports· referenced · scope self-checked by the author (AI), not reviewedmigraterenames the importsweb-scumm/…in either quote style, and nothing that only starts like them (web-scumm-savestays). The test runs the renaming function on sample texts; a whole project's rename is covered by the other tests of the same file and by the candidate'sexternal-consumer, not by this one.
- Change the commands you type and your scripts the same way:
npx web-scumm …becomesnpx quest-n-click …;npx web-scumm-bridge,npx web-scumm-connector,npx web-scumm-studio-server,npx web-scumm-studio-workerbecomenpx quest-n-click-bridge,npx quest-n-click-connector,npx quest-n-click-studio-server,npx quest-n-click-studio-worker.
- A host of the Bridge, the connectors or the Studio Server installs the
quest-n-click-…archives and calls the new commands in its unit files and scripts.
From the project's folder, the imports in both quote styles, names with spaces included (GNU and BSD grep and sed
alike), then tsconfig.json and package.json as below:
# in the created project
grep -rl --null -E --include='*.ts' --include='*.tsx' --include='*.mts' --include='*.cts' --include='*.js' \
--include='*.jsx' --include='*.mjs' --include='*.cjs' --exclude-dir=node_modules --exclude-dir=dist \
--exclude-dir=public --exclude-dir='.*' "['\"]web-scumm/" * \
| xargs -0 sed -i.bak -e "s#'web-scumm/#'quest-n-click/#g" -e 's#"web-scumm/#"quest-n-click/#g'
find . -name '*.bak' -not -path './node_modules/*' -delete-
package.json: the dependency"web-scumm": "<spec>"becomes"quest-n-click": "<spec>", its archivequest-n-click-<version>.tgz; the scriptsweb-scumm dev,web-scumm build… becomequest-n-click dev,quest-n-click build…. -
tsconfig.json: the pathweb-scumm/*becomesquest-n-click/*, pointing at./node_modules/quest-n-click/src/engine/api/*;@engine/*points at./node_modules/quest-n-click/src/engine/*;includenamesnode_modules/quest-n-click/src/env.d.ts.
migrate prints ✔ the former name web-scumm renamed quest-n-click in <files> (then: npm install), then the schema
line. npx quest-n-click migrate --check exits 0; grep -rn "web-scumm/" game finds nothing; npm run verify
passes.
migrate says what it leaves to you, each on a ✖ line, and --check never calls such a project clean:
| What it says | What to do |
|---|---|
package.json depends on web-scumm: npm uninstall web-scumm && npm install quest-n-click |
Steps 1 and 2: the new package was not installed |
package.json has both a web-scumm and a quest-n-click script: the web-scumm one is left as it is |
Remove or rename the web-scumm script yourself |
<path>: a symbolic link out of the project, not renamed (rename what it leads to by hand) |
Rename the linked files where they live |
<path>: a symbolic link that leads nowhere, not renamed |
Remove or fix the link |
The project's source files that held web-scumm/…, tsconfig.json, package.json (its indentation and byte order
mark kept), package-lock.json after npm install. Nothing in players' browsers.
git reset --hard to the commit made before, then npm install. A 4.3.0 or later engine never reads the old imports
again, so going back means going back to a 4.2.x engine too.
A game on a hosted Studio that still imports web-scumm/… no longer loads on 4.3.0 (its health is not green and its
writes are refused) until its owner runs the engine's upgrade (POST /api/engine/migrate). The upgrade renames its
imports first, as a revision of its own judged only by whether the game loads (and, if it loaded before, by no new
validator error), never by the solver; then the schema's migration, if one is due, is judged as before and may still
be refused (422, the rename kept). The rename is not undoable: take a backup first to go back.
Upgrading the engine of a hosted game.
- Upgrade, Upgrade notes: 4.2 (§38), Upgrade notes: 4.3 (§39)
-
tools/migrate-name.ts,tools/migrate.ts,tests/former-name.test.ts
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