Repository navigation
FR Installer Outils Images
English · Type : procédure · Public : auteur · Contexte : dépôt du moteur, projet créé · Statut : prête · S'applique depuis : 4.3.0
Les outils qui transforment des planches générées ou dessinées en images de jeu sont des scripts Python que le moteur
livre sous tools/ : ils découpent une planche en sprites, choisissent son fond, et préparent pour le navigateur
chaque image qu'un jeu cite. Cette page les installe et lance chacun une fois, dans le dépôt du moteur et dans un projet
créé. À quoi doivent ressembler les images, et comment s'écrivent les prompts : voir Images.
Python et ses modules épinglés installés, une planche découpée en sprites détourés sous le dossier art/ de votre jeu,
et ces sprites préparés dans public/assets/ par npm run assets.
- Le dépôt du moteur (un jeu sous
games/<id>/) ou un projet créé (le jeu sousgame/, les outils sousnode_modules/quest-n-click/tools/). Les commandes ne diffèrent que par le chemin de l'outil et de sa sortie. - Depuis la 4.3.0, les modules sont Pillow 13.0.0, NumPy 2.4.6 et SciPy 1.18.1 (
requirements.txt) ; avec ce passage, les images du jeu d'exemple sont sorties identiques octet pour octet (notes 4.3).
- Python 3 (Prérequis) ; la CI utilise la 3.12.
- Un jeu, avec son
site.json(le modèle en a un). - Pour les sons et les vidéos de
npm run assets: ffmpeg (Prérequis).
À la racine du dépôt du moteur, ou à la racine du projet créé. Chaque bloc dit lequel.
-
Installez les modules épinglés :
# dans le dépôt du moteur python3 -m pip install -r requirements.txt# dans un projet créé python3 -m pip install -r node_modules/quest-n-click/requirements.txt
-
Obtenez un prompt prêt à coller par planche que cite le jeu, avec la commande de découpe de chacune (
--missingpour les planches pas encore découpées). Il écritprompts.mddans le dossier du jeu :# dans le dépôt du moteur : games/<id>/prompts.md npm run prompts# dans un projet créé : game/prompts.md npx quest-n-click prompts
-
Découpez une planche générée en sprites détourés,
<sortie>/<id-planche>/r<ligne>c<colonne>.png(une grille 6 × 4 par défaut,--gridpour la changer,--autopour des figures hors grille) :# dans le dépôt du moteur : écrit games/<GAME>/art/hero/ python3 tools/cut-sheet.py hero_sheet.png hero# dans un projet créé : nommez le dossier de sortie, celui par défaut est games/<GAME>/art du dépôt python3 node_modules/quest-n-click/tools/cut-sheet.py hero_sheet.png hero --out game/artAvec
"artStyle": "pixel"danssite.json(ou--pixel), l'outil réduit aussi chaque case par 4 (--scale), la limite à 32 couleurs exactes (--colors) et écrit des PNG indexés ;npm run assetsécrit ensuite du WebP sans perte. Une planche sur fond transparent ("sheetBackground": "transparent") est découpée sur sa transparence, sans détourage par couleur.
-
Choisissez le fond des planches, une fois par outil de génération d'images :
# dans le dépôt du moteur (dans un projet créé, préfixez l'outil par node_modules/quest-n-click/) python3 tools/check-alpha.py test_image.png python3 tools/pick-bg.py games/<id>/art/hero/
check-alpha.pydit si un outil d'images écrit une vraie transparence :TRANSPARENT,FAKE CHECKERBOARDouOPAQUE.pick-bg.pyprend des planches, des dossiers de sprites ou des images de référence et classe les couleurs unies selon leur distance au dessin ; sa première ligne,BEST #RRGGBB, est lesheetBackgroundà prendre.
-
Préparez chaque image et chaque son que cite le contenu :
# dans le dépôt du moteur, pour le jeu courant npm run assets# dans un projet créé npm run assetstools/refs.tsliste ce que cite le contenu (lieux, personnages, objets, la carte, les paramètres des mini-jeux,skin, les écrans de titre et de crédits,ending.scratch, et lesextraImagesd'index.ts), puistools/assets.pyle prépare danspublic/assets/. Seul ce qui a changé est retraité. D'où chaque image est lue, etsources.jsonpour la lire ailleurs : voir Images.
Après l'étape 3, le dossier de la planche sous art/ contient un PNG par case. Après l'étape 5,
public/assets/img/<planche>/<case>.webp existe pour chaque image que cite le contenu, et assets affiche un
avertissement pour chacune qu'il n'a pas trouvée : warning: missing images: … (et warning: missing sounds: …).
Aucun avertissement : chaque image citée a été préparée.
| Symptôme | Cause | Correction |
|---|---|---|
ModuleNotFoundError: No module named 'PIL' (ou numpy, scipy) |
Étape 1 pas faite, ou faite pour un autre Python | L'étape 1 avec le python3 qui lance les outils ; dans un projet créé, PYTHON=<chemin> fait prendre un autre interpréteur à assets
|
ModuleNotFoundError: No module named 'cv2' |
Un outil de bouches qui parlent demande OpenCV, absent de requirements.txt
|
Installez vous-même le module Python d'OpenCV |
Les sprites arrivent dans un games/<id>/art d'un dossier qui n'existe pas |
cut-sheet.py lancé dans un projet créé sans --out
|
Ajoutez --out game/art
|
warning: missing images: … |
Le contenu cite une image sans fichier | Découpez-la ou ajoutez-la, ou corrigez le nom dans le contenu |
-
prompts.mddans le dossier du jeu (étape 2). -
art/<id-planche>/dans le dossier du jeu (étape 3) ;--cells r1c2,r3c1ne redécoupe que ces cases. -
public/assets/(pas commité), leassets.gen.jsondu jeu (les tailles en pixels des images préparées) et.cache/refs.json(étape 5).
Commitez le dossier art/ du jeu avant de redécouper une planche : l'outil écrase les cases qu'il écrit.
public/assets/ se reconstruit à tout moment depuis les sources avec npm run assets.
tools/talk-kit.py prépare un « kit de parole » par personnage et par pose (la tête du sprite validé copiée dans une
grille 3 × 2), tools/talk-apply.py recolle les bouches générées sur le sprite, et tools/talk-normalize.py accorde une
rangée d'une planche de parole au sprite validé. Les deux derniers importent OpenCV (cv2).
Limite ·
talk-tools-repository-layouttalk-kit.pyettalk-apply.pylisent et écriventgames/<GAME>/…depuis le dossier courant (games/<id>/talk-kits.json,games/<id>/private/talk_kits/) : ils ne marchent que dans l'organisation du dépôt du moteur, pas dans un projet créé.talk-normalize.pyprend tous ses chemins en arguments et marche partout.
-
Images (le pipeline,
sources.json, le style graphique), Bruitages - Prérequis, Outils audio
-
tools/cut-sheet.py,tools/assets.py,tools/check-alpha.py,tools/pick-bg.py,requirements.txt
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