Repository navigation
FR Studio Assets
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 :demo-read-only
L'onglet Assets liste chaque image et chaque son du jeu face à ce que le jeu utilise, donne à chaque planche son prompt de génération, et reçoit les images et les sons générés qui les remplacent ou les complètent, en découpant les planches en cases, sans jamais supprimer un fichier.
Une planche de sprites générée, découpée en les cases que le jeu nomme, une image ou un son remplacé avec l'ancien gardé à côté, et le jeu qui montre le nouveau dessin une fois préparé.
Le Studio local, dans le dépôt du moteur ou un projet créé. Vrai depuis la 4.2.1 (chaque envoi est une opération du journal du jeu). Le Studio de démo montre la liste en lecture seule ; un Studio hébergé a le même onglet avec ses propres limites (plus bas).
- Le Studio lancé (présentation).
- Python 3 avec Pillow pour la découpe et le détourage (
tools/cut-sheet.py), ffmpeg pour les sons, les chaînes d'outils image et audio : Chaîne d'outils image, Chaîne d'outils audio. - Les prompts et les ids de planche viennent du jeu : Images : prompts, découpe des planches, transparence, échelle.
Dans le navigateur, sur l'onglet Assets. Prepare assets lance npm run assets pour vous, dans le dossier que sert
le Studio.
L'onglet liste tout ce qui se trouve sous games/<id>/art/ et audio/ face à ce que le jeu référence
(tools/refs.ts), avec les prompts de npm run prompts (tools/prompts.ts).
- Arbre (à gauche) : Characters (une entrée par planche de sprites, nommée d'après le personnage dont elle porte les poses), Objects, Backgrounds, Furniture, Talk kits, Sounds (musiques, bruitages). Pastilles : rouge = cases que le jeu référence sans fichier ; orange = utilisées mais pas préparées, ou plus anciennes que leur source ; grise = découpées mais inutilisées.
-
Planche (au centre) : les cases en vignettes avec leur id et ce qui les utilise (
walk,portrait,items.key,house.props.pantry…) ; filtres All / Used / Unused / Missing. Au-dessus, le panneau Prompt : la section de la planche dans les prompts avec Copy prompt (le bloc pour le modèle d'image), Copy prompt for missing cells only quand des cases manquent, et le bloc Style partagé (replié) avec son propre Copy. - Case (à droite) : aperçu en grand, fichier, taille, ids d'image, préparée ou non, où elle sert (avec « Open room »), Replace…, et les sauvegardes.
- Backgrounds : le décor avec les zones cliquables, les accessoires (pied et hauteur), les acteurs et la zone de marche du lieu dessinés par-dessus, et la bande de sol en pointillés que le prompt demande de laisser vide ; Replace… et « + background ».
-
Sounds : un lecteur par fichier, où il sert, Replace… (même extension) et Add sound…. Les ids de musique et de
son que le jeu déclare sont listés, qu'un fichier existe ou non ;
npm run assetslivre ce qui est là et signale ce qui manque (Musique).
- Choisissez la planche dans l'arbre, Copy prompt (ou Copy prompt for missing cells only) et générez l'image avec votre modèle d'image.
-
Upload generated sheet… envoie l'image avec l'id et la grille de la planche (6 × 4 par défaut). Elle est
enregistrée sous
private/sheets/<sheetId>-<heure>.<ext>et découpée partools/cut-sheet.pydansart/<sheetId>/. Si des cases de cette planche existent déjà, une boîte de dialogue les liste, chacune avec une case recut : décochée, la case est gardée et seules les nouvelles cases sont découpées. Le résultat de la découpe s'affiche. Pour une planche qui n'a pas encore de dossier, utilisez Upload sheet into a new sheet id… dans la barre d'outils.
- Pour changer une seule image, sélectionnez la case et Replace…. Détourage : un fond uni est détouré par défaut ; choisissez « always » ou « never » pour l'imposer. Un décor (PNG ou JPEG) se remplace de même depuis Backgrounds, un son depuis Sounds (tout format que lit ffmpeg, même extension).
- Prepare assets (npm run assets) dans la barre d'outils lance la chaîne avec sa sortie en direct dans un tiroir ; le nombre à côté est ce qu'elle traiterait. Ensuite la vue Rooms se recharge. Une case remplacée apparaît dans le jeu une fois préparée.
Garantie ·
no-silent-recut· référencée · portée vérifiée par son auteur (IA), pas relue Un envoi qui redécouperait des cases existantes sans les nommer est refusé avec 409 et la liste de ces cases. Un envoi qui nomme une case ne redécoupe que cette case, et l'ancien fichier est d'abord gardé en<nom>_v<N>.
Rien n'est supprimé : un son ou un décor remplacé est lui aussi gardé en <nom>_v<N>.
Les sauvegardes ne sont pas des cases : la liste et les prompts les ignorent.
Limite ·
demo-read-onlyDans le Studio de démo, la liste vient de l'instantané (assetsdanssnapshot.json), les vignettes et les sons des fichiers préparés depublic/assets(les cases inutilisées n'ont pas d'aperçu) ; les envois et Prepare sont cachés.
S'applique depuis la 4.2.3
Le même onglet, servi par le Studio Server sous /api/assets. Les envois sont bornés (10 Mio ; images PNG, JPEG ou
WebP, sons Ogg, MP3 ou WAV, reconnus à leurs octets) ; la découpe, le détourage et Prepare assets (on the server)
sont des jobs de l'application de traitement, sous le bail exclusif du projet, montrés dans un petit panneau avec un
bouton Cancel (un job annulé avant son écriture ne laisse rien). La planche envoyée elle-même n'y est pas gardée.
Voir Assets hébergés.
La pastille de la case quitte le rouge ; après Prepare, elle quitte l'orange ; la case apparaît dans le jeu.
git status montre les nouveaux fichiers sous art/<sheetId>/ et les sauvegardes _v<N> à côté.
| Symptôme | Cause | Que faire |
|---|---|---|
409 avec conflicts à l'envoi |
Des cases de cette planche existent et n'ont pas été nommées | Cocher recut pour les cases à remplacer, ou les laisser gardées |
`sheetId` must be letters, digits, _ and - (not "decor") |
Un mauvais id de planche | Utiliser l'id de planche du jeu |
| Une case remplacée n'apparaît pas dans le jeu | Pas encore préparée (pastille orange) | Prepare assets |
| La découpe échoue | Python 3 ou Pillow manque | Chaîne d'outils image |
games/<id>/art/<sheetId>/<case>.png et leurs sauvegardes _v<N> ; art/decor/<nom>.<ext> ;
audio/<music|sfx>/<fichier> ; la planche envoyée sous games/<id>/private/sheets/ ; les fichiers préparés sous
public/assets/ après Prepare.
Un fichier remplacé est gardé en <nom>_v<N> : recopiez-le sur la case, ou passez par git. Prepare peut être relancé
à tout moment.
- Côté serveur :
tools/studio/assets.ts(monté sur/__studio/api/assets), la découpe danstools/studio/cut.ts. L'onglet :src/studio/assets.tsavec son modèle, ses entrées-sorties et ses vues à côté (assets-model.ts,assets-io.ts,assets-view.ts,assets-sheets.ts,assets-decors.ts,assets-sounds.ts) ; les onglets Storyboard et Rooms sont découpés de même depuis la 4.1.8, chaque fichier sous 800 lignes. - Les routes : API du Studio.
Generated publication · publication générée — current documentation · documentation courante: quest'n'click 4.4.0 r1, documentation revision · révision de la documentation 8dc717c69acb62c4742b69c54a7e7dfb620f75d8.
Earlier versions and permalinks · versions précédentes et liens permanents: https://wanoo.github.io/quest-n-click/docs/
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 (17)
- Prérequis
- Installer depuis l'archive de la release
- Installer depuis npm, une fois publié
- 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.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