quest'n'click 4.5.0 · r1

Construite pour quest'n'click 4.5.0, révision r1. Si elle est publiée, et laquelle est la courante, est dit par publication.json.

Venir de web-scumm

English · Type : procédure · Public : auteur · Contexte : projet créé · Statut : prête · S'applique depuis : 4.3.0

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

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

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.

Garantie · former-name-imports · référencée · exécutée sur aff6caab7514 · portée vérifiée par son auteur (IA), pas relue migrate renomme les imports web-scumm/… quel que soit le style de guillemets, et rien de ce qui ne fait que leur ressembler (web-scumm-save reste). Le test lance la fonction de renommage sur des textes d'exemple ; le renommage d'un projet entier est couvert par les autres tests du même fichier et par l'external-consumer du candidat, pas par celui-ci.

  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

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


Modifier la source de cette page · Signaler une erreur