Repository navigation
FR Studio Modifier Une Salle
English · Procédure · Publiée, relue par une personne · S'applique depuis : 4.2.1
L'onglet Rooms modifie les textes, réactions, sujets de conversation et la scène d'un lieu sans ouvrir son fichier TypeScript, et réécrit le changement dans ce fichier sous forme de code lisible.
Public, contexte, et statuts de ce sur quoi repose la page
Public : auteur · Contexte : Studio local
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 :texts-only-literals
Un lieu modifié depuis le Studio : une ligne de Regarder ajoutée, une réaction modifiée par un formulaire, un
accessoire ajouté et placé. Chaque changement est dans rooms/<lieu>.ts (ou layout/<lieu>.json) comme si vous
l'aviez tapé, validé, et annulable.
Le Studio local (npm run studio), dans le dépôt du moteur ou un projet créé. Vrai depuis la 4.2.1, quand chaque
écriture du Studio est devenue une opération du journal du jeu, jugée avant d'être écrite. Le Studio hébergé utilise
le même onglet, avec baux et rôles en plus (Travailler ensemble au quotidien).
- Le Studio lancé : Le Studio local : présentation et lancement.
- Un lieu déclaré dans le jeu (
index.ts/game.ts) ; un lieu que le jeu ne liste pas répondroom "<id>" is not in the game (index.ts / game.ts).
Dans le navigateur, sur la page du Studio (http://localhost:5173/__studio/#rooms/<lieu>). La seule commande est
celle qui lance le Studio, dans le dépôt du moteur ou le projet créé.
- Sélectionnez un élément. Choisissez le lieu dans l'onglet Rooms. Il est dessiné par le moteur, l'éditeur de placement par-dessus ; la liste de droite porte ses accessoires, acteurs et zones cliquables. En sélectionner un, dans la liste ou dans la vue, ouvre sa fiche : nom, sorte, états, visibilité, lignes de Regarder, réactions (verbe, cibles, condition, et les commandes en liste de lignes : textes modifiables, autres commandes affichées), et sujets de conversation, en liste ou en arbre (sujets, répliques, choix et leurs options, branches, chacun avec sa condition ; toucher un nœud saute à son éditeur). Sous la vue : le nom du lieu, les indices, les lignes à l'entrée, les scripts et les événements du lieu (structure en lecture, textes modifiables).
-
Modifiez un texte. Changez un champ puis quittez-le (ou Entrée) : le texte est enregistré. Échap annule. Chaque
enregistrement affiche un toast et lance Check en arrière-plan (Vérifier). Un placement en
cours dans la vue est enregistré d'abord ; la vue se recharge quand le fichier du lieu change. Le texte est écrit
directement dans
rooms/<lieu>.ts: le littéral de chaîne est remplacé par l'analyseur TypeScript, avec le même style de guillemets, et le fichier reste du code lisible. Les lignes de Regarder s'ajoutent, se modifient et se suppriment depuis la fiche.
-
Ajoutez un accessoire, une zone cliquable ou un acteur. « Add prop / hotspot / actor » crée l'entrée dans le
fichier du lieu (la section est créée si elle manque) et lui donne une place dans le layout : un accessoire a son
pied au point donné et une hauteur de 60 ; une zone cliquable est une boîte de 60 × 60 centrée dessus ; un acteur y
a ses pieds. Un accessoire ou une zone cliquable demande un nom. L'id est fait de lettres, chiffres et
_, sans commencer par un chiffre ; un id que le lieu a déjà est refusé (409). Le fichier du lieu et son layout sont écrits en une seule opération, annulée en une fois. Glissez-le ensuite à sa place (Placement et scène).
- Modifiez une réaction ou la scène par un formulaire (plus bas, « Édition structurée ») : Edit… sur une réaction, + Reaction en fin de liste, Stage… et le peintre sur la fiche du lieu. Chaque formulaire montre le diff avant d'écrire (Aperçu, application, annulation).
- Vérifiez le rythme d'un script. À côté de chaque cinématique, script d'arrivée et script du monde, le bouton Timeline dessine combien dure chaque commande et ce qui se chevauche : répliques, marches, animations, branches parallèles, les tours du joueur en rouge. Toucher une barre saute à sa ligne ; un double-clic sur une barre change la durée d'une attente, d'une animation ou d'un mouvement.
-
Des formulaires plutôt que du code. Chaque réaction a Edit… (verbe, cibles, condition, commandes en
formulaire), et la liste finit par + Reaction. La fiche du lieu a Stage… (calques avec leur image, leur
rôle et leur condition ; lumières ; émetteurs de particules ; la transition ; la logique des liens de marche) et le
peintre (celui du jeu, DOM ou canvas). Les formulaires viennent d'une seule table de toutes les conditions et
commandes,
src/studio/schema.ts, vérifiée contre les types du moteur à la compilation : une nouvelle commande sans formulaire ne compile pas. Ce qui n'a pas de champ simple (les paramètres d'un mini-jeu, les événements d'image d'une animation) est une case JSON. -
Calques, masques, zones. Sous la fiche du lieu, l'éditeur de scène (
src/studio/rooms-stage.ts) dessine le fond avec les masques d'occlusion (rouges), les zones de marche (vertes) et les liens entre zones ; la géométrie elle-même est décrite dans Placement et scène. - Aperçu, puis application. « Preview the change » montre le diff que le serveur écrirait, sans rien écrire ; « Apply » l'écrit en code dans le style du fichier, puis le jeu est validé : une modification qui ajoute une erreur de validation est refusée et rien n'est écrit (Aperçu, application, annulation).
- Annuler / Rétablir dans l'en-tête (Ctrl/Cmd+Z, avec Maj pour rétablir), sur toutes les écritures de la session : textes, valeurs, layouts, voix.
- Jouer. L'onglet Play montre le peintre de chaque lieu (DOM ou canvas, comme le dit le jeu) et sa vitesse de dessin (images par seconde, repeints du peintre canvas).
S'applique depuis la 4.3.0
Pour un jeu dont les textes portent des aiguillages ({form?m=…|f=…}, {hero}), l'onglet Rooms garde les accolades
brutes dans son éditeur de texte. Sous un texte qui porte un aiguillage, une ligne en lecture seule montre le texte
tel qu'un joueur le lit avec les valeurs choisies dans Text switches de l'onglet Play ((form=?) tant qu'aucune
ne l'est). Voir Jouer et rejouer une session et
Héros : plusieurs personnages et choix du héros.
Les notes sur le lieu ou une de ses entités apparaissent en bas de la section du lieu (« Notes (n) »), avec une zone pour en ajouter une (Notes).
Limite ·
texts-only-literalsSeuls les littéraux de chaîne que le Studio reconnaît comme textes se modifient ainsi : noms, lignes de Regarder, répliques desay, sujets, indices, toasts, choix, répliques du héros dans les listes de commandes. Les ids, références d'image, flags et conditions ne sont jamais des textes, et l'API refuse de les modifier ; un texte que le lieu construit par du code (une constante partagée, une fonction) n'est pas atteignable. La règle complète est dans API du Studio.
Le toast dit que le texte est enregistré ; la vue du moteur montre le changement ; git diff games/<id>/rooms/<lieu>.ts
montre un changement d'une ligne dans le style du fichier. Le badge de l'onglet Check dit si le jeu se valide encore.
| Symptôme | Cause | Que faire |
|---|---|---|
refused: the edit adds N validation error(s): … (422) |
Le changement casserait le jeu ; rien n'a été écrit | Lire les erreurs, changer la valeur, appliquer à nouveau |
"<id>" already exists in room "<lieu>" (409) |
L'id est déjà pris dans ce lieu | Choisir un autre id |
`name` is required for a prop or a hotspot |
Accessoire ou zone cliquable ajouté sans nom | Donner un nom |
cannot undo "<quoi>": <fichier> changed since (409) |
Le fichier a été modifié hors du Studio après cette écriture | Annuler à la main, ou avec git |
Plus : Dépannage du Studio.
-
games/<id>/rooms/<lieu>.ts(textes, réactions, scène, peintre, entités ajoutées). -
games/<id>/layout/<lieu>.json(la place d'une entité ajoutée). - Le journal du jeu sous
.cache/studio-journal/(les opérations, pour annuler).
Undo dans l'en-tête reprend la dernière écriture de la session, Redo la remet. Une annulation refuse quand le fichier
a été changé depuis par quelqu'un d'autre (une IA, un éditeur, git) : passez alors par git diff et
git checkout -- <fichier>.
-
src/studio/rooms.ts,src/studio/rooms-sheet.ts,src/studio/structured.ts,studio-server/src/ops/core.ts. -
npm run e2e:studio -- <url du Studio>(bloquant en CI) crée une scène par le formulaire, vérifie le diff, l'applique, la voit dans le jeu et l'annule (scripts/e2e-studio.mjs). - Lieux, Réactions, Dialogues.
Generated publication · publication générée — current documentation · documentation courante: quest'n'click 4.5.5 r1, documentation revision · révision de la documentation 301f199dc2e38aa35a552a22ef87fd1e0f1f50f7.
Latest documentation · dernière documentation: https://quest-n-click.cleverapps.io/docs · https://quest-n-click.cleverapps.io/fr/docs; earlier versions · versions précédentes: each release's quest-n-click-docs-<version>.tar.gz · l'archive quest-n-click-docs-<version>.tar.gz de chaque release, https://github.com/Quest-n-Click/quest-n-click/releases
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)
Démarrer (6)
Jouer (9)
Installer (18)
- Prérequis
- Installer depuis l'archive de la release
- Installer depuis npm
- Installer depuis le dépôt pour travailler sur le moteur
- doctor : vérifier sa machine
- Outils pour les images
- Outils audio : ffmpeg, fluidsynth, Furnace, uv
- Mettre à jour
- Notes de mise à jour : 4.5
- Notes de mise à jour : 4.4
- Notes de mise à jour : 4.3
- Notes de mise à jour : 4.2
- Notes de mise à jour : 4.1
- Notes de mise à jour : v3
- Notes de mise à jour : v2 vers v3
- Venir de web-scumm
- Référence du paquet
- Dépannage de l'installation
Créer un jeu (55)
- Votre premier jeu
- Organisation d'un projet créé et du dépôt du moteur
- La boucle de travail
- Principes du contenu et contrat d'identité
- Salles
- Géométrie : placement, zones de marche, masques, calques, caméra
- Un objet est visible mais inaccessible
- Réactions
- Commandes du jeu
- Conditions
- Drapeaux, variables et événements : lequel choisir
- Code sur mesure
- Personnages
- Objets et inventaire
- Carte du monde
- Dialogues
- Scripts et événements
- Faire bouger les personnages : patrouilles et marches
- Sorties
- Chapitres et objectifs
- État et sauvegardes : persistant ou temporaire, renommer un id, migrations
- Mise en scène : salles larges et animations
- La scène : lumières, particules, sols
- Habillage et polices
- Titre et générique
- Héros : plusieurs personnages et choix du héros
- Mini-jeux intégrés
- Un mini-jeu sur mesure
- Traductions
- Musique en stems
- Bruitages
- Voix : par langue et par héros
- Images : prompts, découpe des planches, transparence, échelle
- Provenance des assets
- Le storyboard, source de vérité
- Concevoir des énigmes
- Mécaniques classiques
- Pages de relecture
- Référence du DSL
- Vérifier son jeu
- Ce que prouve le solveur
- Options du solveur
- Playtests
- Remix
- Speedrun pour les auteurs
- La fin scellée
- Modèle de production
- Jeux d'exemple
- Travailler avec une IA
- Construire et publier un jeu
- Publier sur GitHub Pages
- Le jeu statique sur Clever Cloud
- Autres hébergeurs statiques
- Sous-chemin, cache et service worker, déploiement incomplet, retour arrière
- Tester sur un téléphone en réseau local
Studio local (24)
- Le Studio local : présentation et lancement
- Modifier une salle
- Placement et scène
- Aperçu, application, annulation
- Storyboard
- Assets et découpe
- Vérifier : validateur, solveur, chemin critique, chaleur, santé, couverture
- Captures avant et après
- Diff sémantique
- Jouer et rejouer une session
- Explication des règles
- Langue et objectifs
- Voix et matrice héros × langues
- Carte
- Notes
- Remix dans le Studio
- Musique
- L'Assistant : votre propre clé
- Mode démo et studio-apply
- Sécurité en local et en réseau local
- API du Studio
- MCP local : configurer chaque client
- Outils MCP
- Dépannage du Studio
Studio d'équipe (21)
- Ce qui tourne où
- Concepts : révision, transaction, pan, bail, aperçu, build
- Débuter comme dev invité
- Travailler ensemble au quotidien
- Rôles et actions : la matrice complète
- Invitations
- Gérer les membres
- Écriture refusée sur le Studio hébergé : révision de base périmée (409)
- Écriture refusée sur le Studio hébergé : pan verrouillé (423)
- Reprendre après un bail perdu, une déconnexion ou un aperçu périmé
- Commentaires
- Carte et diff sémantique
- Publier des builds
- MCP distant
- Le jeu dans Git
- Mettre à jour le moteur d'un jeu hébergé
- Assets hébergés
- La ligne de commande du serveur
- Routes de santé et de métriques
- L'essayer en local avec compose.yml
- Limites connues
Clever Cloud (23)
- Clever Cloud : vue d'ensemble, coût et prérequis
- Applications et add-ons
- Domaines et TLS
- Keycloak
- OIDC générique et GitLab
- Configuration
- Premier déploiement
- Sauvegardes
- RPO et RTO
- Exercice de restauration sur une installation vierge
- Redéploiements
- Mettre à jour le serveur et vérifier l'état après une migration
- Limites du retour arrière
- Supervision
- Sécurité
- Renouveler les clés
- Récupérer l'accès administrateur
- Changer de domaine ou de fournisseur OIDC
- Worker, PostgreSQL ou Cellar en panne
- Exporter le jeu et quitter l'installation
- Rétention
- Dépannage sur Clever Cloud
- Coûts et démontage
Reality Bridge et connecteurs (16)
- Le Reality Bridge : ce que c'est
- Démarrage rapide
- Garanties
- Installer et lancer le Bridge
- Sauvegarde et restauration
- Plusieurs tenants
- Signaux et manifeste
- La ligne de commande du Bridge
- Vue d'ensemble des connecteurs
- Connecteur email
- Connecteur Telnet
- Connecteur SSH
- Connecteur Open Badges
- Le SDK des connecteurs
- Sécurité : Biscuit et signatures
- Dépannage du Bridge et des connecteurs
Contribuer (25)
- Bienvenue
- Préparer son poste de développement
- La boucle de développement
- Avant une pull request
- Conventions
- Écrire la documentation
- Architecture
- Visite du code
- Frontières d'import
- Quels tests tournent quand
- Tests de mutation
- Le cliquet de couverture
- La référence de qualité
- La CI expliquée
- Passes de terrain
- Mesures de performance
- Publier une release
- Paquets npm
- Décisions et ADR
- Gouvernance
- Pull requests des bots
- Contribuer avec des agents IA
- Politique de sécurité
- Code de conduite
- Licences et crédits