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.

Mettre à jour le moteur d'un jeu hébergé

English · Type : procédure · Public : administrateur · Contexte : Studio hébergé · Statut : prête · S'applique depuis : 4.2.3

Le Studio Server (Studio d'équipe hébergé) · contrat : expérimental · vérifié par la CI (matrice de support de la 4.4.0, 2026-10-23) : Postgres, S3 et Keycloak en CI ; Chromium et Firefox (job studio-hosted) ; WebKit sous macOS, à la main seulement · vérifications automatiques : jobs studio-hosted, studio-install-smoke ; plan de CI studioHosted ; 3 fichiers de tests · passes humaines : studio-hosted pas faite (#149), studio-collab pas faite (#150), studio-preview pas faite (#166), studio-assets-hosted pas faite (#167), studio-mcp-remote pas faite (#196), studio-oidc-generic pas faite (#197) · limites connues : engine-upgrade-scope

Un jeu importé dans un Studio d'équipe depuis un projet plus ancien peut être encore écrit pour un moteur plus ancien : au schéma d'écriture 2 (un projet 4.1.x qui n'a jamais lancé quest-n-click migrate), ou avec des imports sous l'ancien nom web-scumm/…. Un owner le met à niveau sur le serveur, en un appel, jugé avant que rien ne soit écrit.

Cette page parle du contenu du jeu. Passer le serveur à une nouvelle version du moteur est un redéploiement : voir Mettre à jour le serveur.

Ce que vous obtenez

Le jeu hébergé au schéma d'écriture actuel (3, avec des identifiants stables), et ses imports sous le nom actuel, en une ou deux révisions, ou bien un refus qui laisse la tête telle qu'elle était.

Contexte et versions

Un Studio hébergé avec son worker, depuis la 4.2.3 ; le renommage de l'ancien nom depuis la 4.3.0 (D47). Le code est studio-server/src/server/engine-upgrade.ts. Un Studio local n'a pas cette route : lancez quest-n-click migrate dans le projet (voir Mettre à jour).

Dans la ligne 4.2.x, le format du contenu est gelé (D40) : la migration du schéma vise un jeu fait sur une 4.1.x.

Prérequis

Où lancer les commandes

Sur toute machine où la CLI est connectée au Studio (voir La ligne de commande du serveur). Il n'y a pas encore de bouton dans le Studio : la route est le moyen d'y accéder.

Étapes

  1. Faites une sauvegarde et notez la révision (le « revision N » de l'en-tête).
  1. Appelez la route en owner :

    curl -X POST -H "Authorization: Bearer $(npx quest-n-click-studio-server token --server https://studio.example)" \
      https://studio.example/api/engine/migrate
    
  1. Lisez la réponse.
    • { "changed": 0, "schema": {…} } : le jeu était déjà au schéma 3 (et sous le nom actuel) ; rien n'a été écrit.
    • { "revision", "changed", "paths", "schema": { "from", "to" } } : la migration a été écrite en une révision, engine upgrade: authoring schema 2 → 3 ; paths sont les fichiers écrits. Avec renamed, les imports ont été renommés d'abord, dans une révision à part.
    • Une 422 avec errors (et skipped, rev, éventuellement renamed) : refusé, rien de la migration n'a été écrit.
  1. Rejouez les playtests ensuite : ils ne sont ni migrés ni jugés (une session enregistrée au schéma 2 peut nommer les anciennes clés positionnelles).

Ce qu'elle fait

L'ancien nom

S'applique depuis la 4.3.0

Un jeu qui importe encore web-scumm/… ne se charge pas sur un Studio 4.3.0 ou plus récent (les alias ont disparu) : sa santé n'est pas verte et la garde refuse ses écritures (une 422 : le jeu ne se charge toujours pas). La mise à niveau renomme d'abord ces imports elle-même, dans toutes les sources TypeScript de la tête (sans exécuter le code du jeu), en une révision à part, engine upgrade: the former name's imports renamed, jugée par le seul validateur : le jeu doit se charger après et, s'il se chargeait avant, ne gagner aucune erreur. Le solveur ne la juge pas, si bien qu'un jeu qu'on ne peut pas encore finir n'est jamais bloqué. La migration du schéma suit, jugée comme ci-dessus ; si elle est refusée, le body.renamed de la réponse dit que le renommage est gardé.

Le renommage est écrit sans annulation (elle ramènerait des imports qui ne se résolvent plus), si bien que l'historique antérieur de l'owner reste accessible ; une sauvegarde faite avant est le chemin du retour. Un worker qui refuse, dépasse son délai ou ne laisse aucun résultat pendant que la garde l'interroge ne compte jamais comme un jeu qui ne se charge pas : l'écriture échoue (503) et la suivante redemande.

Garantie · engine-upgrade-judged-first · référencée · exécutée sur aff6caab7514 · portée vérifiée par son auteur (IA), pas relue Un jeu que la migration casserait est refusé avant que rien ne soit écrit, et la tête reste intacte.

Limite · engine-upgrade-scope Le tsconfig.json du projet (baseUrl, que quest-n-click migrate corrige aussi) ne fait pas partie d'un jeu hébergé et n'est pas touché. Les playtests (playtests/) ne sont ni migrés ni jugés. Un jeu dont le defineGame n'est pas dans game.ts est refusé : migrez-le sur un Studio local.

Résultat attendu, et comment le vérifier

L'en-tête montre la ou les nouvelles révisions ; l'historique liste engine upgrade: … ; la santé passe au vert pour la nouvelle tête. Un second appel répond { "changed": 0 }.

Erreurs courantes

SymptômeCauseCorrection
422 refused: the migration would break the game (…); nothing was writtenUn identifiant que l'outil n'a pas pu écrire, une liste construite par du code, un jeu qu'on ne peut plus finirMigrez-le sur un Studio local (quest-n-click migrate, puis npm run ids pour voir ce qui reste) et importez-le de nouveau, ou corrigez-le d'abord
422 refused: the migrated game cannot be judged (…); nothing was writtenLe solveur a manqué de tempsPareil : migrez en local
422 refused: the game still does not load once its imports are renamed (…)Autre chose que le nom l'empêche de se chargerCorrigez le jeu en local
422 refused: renaming the imports adds N validation error(s)Le renommage ajouterait des erreursCorrigez-les en local
429 the engine's upgrade is running: try again when it is doneUne autre mise à niveau tourneAttendez
Des 423 pour les autres pendant qu'elle tourneLe bail exclusifNormal ; ils écrivent de nouveau une fois qu'elle est finie
404 the engine's upgrade needs a hosted Studio with its processing workerPas de worker, ou un serveur localUtilisez quest-n-click migrate en local

Fichiers ou données modifiés

rooms/*.ts, rules.ts, items.ts, game.ts, les tables de traduction, ids.migration.json, ids.paths.json ; pour l'ancien nom, chaque source TypeScript qui importait web-scumm/….

Revenir en arrière

Références


Modifier la source de cette page · Signaler une erreur