Langue et objectifs
English · Type : procédure · Public : auteur · Contexte : Studio local · Statut : prête · S'applique depuis : 4.2.1
Le Studio local · contrat : stable · vérifié par la CI (matrice de support de la 4.4.0, 2026-10-23) : Chromium de bout en bout (les vérifications du Studio) ; Windows : la suite unitaire seulement · vérifications automatiques : jobs
e2e,windows; plan de CIe2e,windows; 2 fichiers de tests · passes humaines :studio-hero-matrixpas faite (#238) · limites connues :game-file-objectives-only
L'onglet Language montre le jeu tel que le voient les outils : ses objectifs d'abord, modifiables par des formulaires
générés depuis leur schéma, puis son IR, la logique du jeu en données avec le fichier:ligne qui écrit chaque pièce.
Ce que vous obtenez
Un objectif ajouté ou changé dans le fichier du jeu depuis un formulaire, prévisualisé en diff, validé avant d'être écrit ; et l'endroit, dans le code, de chaque lieu, règle, sujet, écouteur et script.
Contexte et versions
Le Studio local, dépôt du moteur ou projet créé. Vrai depuis la 4.2.1 (l'écriture est jugée avant d'être faite). Ce que sont les objectifs et comment un jeu s'en sert : Chapitres et objectifs.
Prérequis
- Le Studio lancé (présentation).
- Un fichier de jeu avec
defineGame({...}); un dossier qui n'en a pas répondno defineGame({...}) in the game folder(404).
Où lancer les commandes
Dans le navigateur, sur l'onglet Language. npm run ir se lance dans le dépôt du moteur.
Étapes
- Lisez les objectifs. Chacun avec son id, son titre, sa condition (
done), son parent, s'il est facultatif, et lefichier:lignequi l'écrit.
- Edit sur un objectif, ou + objective. Le formulaire est généré depuis le schéma d'un objectif
(
src/studio/forms-gen.ts) : chaque champ avec sa description, l'id du parent avec les objectifs du jeu en suggestions, la condition avec l'éditeur du DSL. Un problème est nommé par fichier, id et champ avant tout envoi.
- Preview the change montre le diff du fichier du jeu. Apply l'écrit : le serveur valide le jeu tel qu'il
serait, et refuse l'écriture si elle ajoute une erreur ; un objectif dont le
donene peut jamais tenir est donc refusé. Les erreurs du validateur s'affichent ensuite. Undo dans l'en-tête reprend un changement appliqué (Aperçu, application, annulation).
Lisez l'IR. Sous les objectifs : les lieux, entités, règles, sujets, écouteurs et scripts, chacun avec l'endroit qui l'écrit, et l'IR entière en JSON. Le même JSON s'obtient en ligne de commande :
# dans le dépôt du moteur npm run ir -- --json
Limite ·
game-file-objectives-onlyPar le Studio (et l'outilset_valuesur@game), seuls les objectifs du fichier du jeu s'écrivent :objectives,objectives.<id>ou un de ses champs. Tout autre chemin dedefineGame({...})est refusé (400).
Résultat attendu, et comment le vérifier
L'objectif apparaît dans la liste avec son nouveau fichier:ligne ; git diff montre le changement dans le fichier du
jeu ; l'onglet Check valide et résout toujours.
Erreurs fréquentes
| Symptôme | Cause | Que faire |
|---|---|---|
| Un champ est signalé en rouge avant l'envoi | La vérification du formulaire (fichier, id, champ) | Corriger ce champ |
refused: the edit adds N validation error(s): … (422) | L'objectif casse le jeu (un done qui ne peut jamais tenir, un parent inconnu) | Lire les erreurs et changer l'objectif |
400 sur un autre chemin que objectives | Seuls les objectifs s'écrivent dans le fichier du jeu | Modifier les autres champs dans le code |
Fichiers ou données modifiés
Le fichier du jeu qui porte defineGame({...}) (games/<id>/game.ts ou là où le jeu le définit).
Revenir en arrière
Undo dans l'en-tête, pendant la session ; sinon git.