Aller au contenu
quest'n'click

InstallerGuidePour auteursS'applique de 4.3.0

Venir de web-scumm

This page in EnglishCette page sur le wiki GitHub

quest'n'click s'appelait web-scumm jusqu'à la 4.2.4 (D47). La 4.2.5 a renommé les paquets, les commandes et les imports, en gardant les anciens noms comme alias pendant toute la 4.2.x ; la 4.3.0 a retiré ces alias. Un jeu qui dit encore web-scumm passe avec une commande, npx quest-n-click migrate. Les sauvegardes des joueurs ne sont pas touchées : les formats ont gardé leur nom.

Ce que vous obtenez

Un projet de jeu qui dépend de quest-n-click, importe quest-n-click/…, appelle quest-n-click dans ses scripts, et se construit et se joue comme avant, les sauvegardes de ses joueurs retrouvées là où elles étaient.

Contexte et versions

  • Un projet créé avec create-web-scumm (ou web-scumm create), passé à un moteur 4.3.0 ou plus récent.
  • Jusqu'à la 4.2.4, tous les noms étaient web-scumm…. Depuis la 4.2.5, les nouveaux noms existent, et chaque release 4.2.x livrait aussi les archives sous les anciens noms, dont les commandes tournaient après une ligne d'avertissement (« web-scumm is now quest-n-click; the old name works until 4.3 »). Depuis la 4.3.0, il n'y a plus d'archive, de commande ni d'import web-scumm.
  • Le dépôt est github.com/wanoo/quest-n-click ; les anciens liens github.com/wanoo/web-scumm redirigent, y compris les téléchargements de release. Le jeu d'exemple et la démo du Studio sont passés à https://wanoo.github.io/quest-n-click/ ; l'ancienne adresse y redirige, mais mettez à jour vos favoris et vos liens.

Les noms, avant et après

Avant (jusqu'à la 4.2.4)Depuis la 4.2.5
paquet web-scumm, commande web-scummquest-n-click, commande quest-n-click
imports web-scumm/content, /player, /minigames, /testing, /realityquest-n-click/content, …
create-web-scummcreate-quest-n-click
web-scumm-bridge (paquet et commande)quest-n-click-bridge
web-scumm-connectors, commande web-scumm-connectorquest-n-click-connectors, commande quest-n-click-connector
web-scumm-studio-server, web-scumm-studio-workerquest-n-click-studio-server, quest-n-click-studio-worker
fichiers de release web-scumm-<version>.tgz, web-scumm-<tag>-…quest-n-click-<version>.tgz, quest-n-click-<tag>-…

Ce qui garde son nom

Les formats sont des identifiants à l'intérieur des fichiers et des stockages, pas le nom du projet : les renommer casserait les sauvegardes, les fichiers et les déploiements existants. Une sauvegarde reste une enveloppe web-scumm-save, une session web-scumm-session, un run un fichier .wsrun au format web-scumm-speedrun, un monde Remix web-scumm-remix-1 ; un signal reste web-scumm-world-signal, un manifeste de réalité web-scumm-reality-manifest. Le navigateur garde ses bases IndexedDB (web-scumm-saves, web-scumm-runs) et ses clés de stockage web-scumm.… : les sauvegardes et les runs d'un joueur sont retrouvés là où ils étaient. Les en-têtes X-Web-Scumm-* du Bridge, les contextes des signatures, les variables d'environnement WEB_SCUMM_* et les tables du Studio Server ne changent pas.

Les releases jusqu'à la v4.2.4 gardent les noms de leurs fichiers et leurs attestations, qui nomment le dépôt wanoo/web-scumm ; depuis la v4.2.5, les attestations nomment wanoo/quest-n-click (ship verify demande celui sous lequel chaque release a été signée). Les crédits du jeu d'exemple et du chapitre de référence disent quest'n'click : leur empreinte de présentation a bougé et leur run de référence a été réenregistré. L'empreinte d'un jeu ne bouge que si son propre texte change.

Prérequis

  • Le projet commité : migrate réécrit des fichiers sur place.
  • Les Prérequis de la version cible.

Où lancer les commandes

Dans le dossier du projet créé, sur votre machine.

Étapes

  1. Retirez l'ancien paquet :

    # dans le projet créé
    npm uninstall web-scumm
  1. Installez le moteur sous son nouveau nom, depuis l'archive de la release :

    # dans le projet créé
    npm install https://github.com/wanoo/quest-n-click/releases/download/v4.4.0/quest-n-click-4.4.0.tgz
  1. Renommez ce que dit encore le projet, vérifiez, et réinstallez :

    # dans le projet créé
    npx quest-n-click migrate
    npx quest-n-click migrate --check
    npm install
    npm run verify

    migrate renomme, dans chaque fichier source du projet (.ts, .tsx, .mts, .cts, .js, .jsx, .mjs, .cjs ; node_modules, dist, public et les dossiers cachés laissés de côté), les imports web-scumm/… en quest-n-click/…, quel que soit le style de guillemets ; dans tsconfig.json, le chemin web-scumm/* et les cibles node_modules/web-scumm/… ; dans package.json, les commandes des scripts (web-scumm dev devient quest-n-click dev, web-scumm-bridge serve devient quest-n-click-bridge serve), et il retire la dépendance à un ancien paquet quand le nouveau est installé. Toute chaîne qui commence par web-scumm/ entre guillemets est renommée, import ou pas ; web-scumm-save et les autres noms de formats ne le sont pas. Il se relance ensuite dans un nouveau processus, qui lit le tsconfig.json renommé, pour la suite de la migration.

  1. Changez de la même façon les commandes que vous tapez et vos scripts : npx web-scumm … devient npx quest-n-click … ; npx web-scumm-bridge, npx web-scumm-connector, npx web-scumm-studio-server, npx web-scumm-studio-worker deviennent npx quest-n-click-bridge, npx quest-n-click-connector, npx quest-n-click-studio-server, npx quest-n-click-studio-worker.
  1. L'hôte d'un Bridge, des connecteurs ou du Studio Server installe les archives quest-n-click-… et appelle les nouvelles commandes dans ses fichiers d'unité et ses scripts.

À la main, sans migrate

Depuis le dossier du projet, les imports dans les deux styles de guillemets, noms avec espaces compris (grep et sed GNU comme BSD), puis tsconfig.json et package.json comme ci-dessous :

# dans le projet créé
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 : la dépendance "web-scumm": "<spec>" devient "quest-n-click": "<spec>", son archive quest-n-click-<version>.tgz ; les scripts web-scumm dev, web-scumm build… deviennent quest-n-click dev, quest-n-click build….
  • tsconfig.json : le chemin web-scumm/* devient quest-n-click/*, qui pointe sur ./node_modules/quest-n-click/src/engine/api/* ; @engine/* pointe sur ./node_modules/quest-n-click/src/engine/* ; include nomme node_modules/quest-n-click/src/env.d.ts.

Résultat attendu, et comment le vérifier

migrate affiche ✔ the former name web-scumm renamed quest-n-click in <fichiers> (then: npm install), puis la ligne du schéma. npx quest-n-click migrate --check sort avec 0 ; grep -rn "web-scumm/" game ne trouve rien ; npm run verify passe.

Erreurs fréquentes

migrate dit ce qu'il vous laisse, chaque point sur une ligne ✖, et --check ne déclare jamais un tel projet propre :

Ce qu'il ditQue faire
package.json depends on web-scumm: npm uninstall web-scumm && npm install quest-n-clickÉtapes 1 et 2 : le nouveau paquet n'était pas installé
package.json has both a web-scumm and a quest-n-click script: the web-scumm one is left as it isSupprimez ou renommez vous-même le script web-scumm
<chemin>: a symbolic link out of the project, not renamed (rename what it leads to by hand)Renommez les fichiers liés là où ils sont
<chemin>: a symbolic link that leads nowhere, not renamedSupprimez ou réparez le lien

Fichiers ou données modifiés

Les fichiers sources du projet qui contenaient web-scumm/…, tsconfig.json, package.json (son indentation et sa marque d'ordre des octets gardées), package-lock.json après npm install. Rien dans les navigateurs des joueurs.

Reprise ou retour arrière

git reset --hard au commit fait avant, puis npm install. Un moteur 4.3.0 ou plus récent ne relit jamais les anciens imports : revenir en arrière veut donc dire revenir aussi à un moteur 4.2.x.

Un jeu sur un Studio hébergé

Un jeu sur un Studio hébergé qui importe encore web-scumm/… ne se charge plus en 4.3.0 (sa santé n'est pas verte et ses écritures sont refusées) tant que son propriétaire n'a pas lancé la mise à jour du moteur (POST /api/engine/migrate). La mise à jour renomme d'abord ses imports, en une révision à part jugée seulement sur le fait que le jeu se charge (et, s'il se chargeait avant, sur l'absence de nouvelle erreur du validateur), jamais par le solveur ; puis la migration du schéma, si elle est due, est jugée comme avant et peut encore être refusée (422, le renommage gardé). Le renommage ne s'annule pas : faites une sauvegarde avant pour pouvoir revenir. Mettre à jour le moteur d'un jeu hébergé.

Références