Repository navigation
FR Creer Mini Jeux
English · Type : référence · Public : auteur · Contexte : dépôt du moteur, projet créé · Statut : prête · S'applique depuis : 4.2.5
Le moteur fournit huit mini-jeux. Un jeu en lance un avec la commande minigame ; quand il se termine, les commandes
de then s’exécutent. Cette page liste chacun, son geste et ses paramètres, tels que le code de la 4.4.0 les lit
(src/engine/minigames/). Pour écrire le vôtre, voir
Un mini-jeu sur mesure.
Chaque mini-jeu déclare son contrat : les params required, textParams (les chaînes visibles par le joueur,
extraites pour la traduction) et bindings (les params qui nomment une image ou un son : validate vérifie qu’ils
existent, par exemple sfx de stroke, sfx.ring / sfx.stamp de cables, ticket et sfx de scratch). Leurs
métadonnées sont dans src/engine/minigames/meta.ts.
Où lancer les commandes : cette page les écrit pour le dépôt du moteur (
npm run validate,npm run solve, précédées deGAME=<id>pour un autre jeu que celui par défaut). Dans un projet créé, les mêmes outils sontnpx quest-n-click validate,npx quest-n-click solve(--prove,--chapters),npx quest-n-click lint,npx quest-n-click i18n statusetnpx quest-n-click voices, et les sources sont dansgame/au lieu degames/<id>/.
Tous les mini-jeux sauf pick et code-wheel acceptent intro (une consigne de la voix des indices au début) ;
pick affiche à la place le prompt de chaque manche, code-wheel sa question. Tous sauf scratch acceptent win
(la phrase de fin). Le moteur ne nomme aucune image : chaque mini-jeu reçoit les siennes par params. Les paramètres
en gras sont obligatoires ; npm run validate signale ceux qui manquent
(minigame "pipes": missing required param "tank"), et un id inconnu (unknown minigame: "…" (known: …)).
| Id | Geste | Paramètres |
|---|---|---|
pipes |
Toucher un tuyau pour le faire tourner d’un quart de tour |
tiles { ground, straight: [sec, mouillé], elbow: [sec, mouillé], tee: [sec, mouillé] } (images de base : droit gauche-droite, coude gauche-bas, té gauche-droite-bas), source, nozzle [sec, qui arrose], tank, mushrooms [assoiffé, content], cols (4), rows (3), helpAfter (15 taps avant que le bon tuyau scintille), background
|
stroke |
Caresser lentement : une jauge monte |
target (image de l’animal), hand (image de la main fantôme), goal (100), sfx (bruit de la réussite), tooFast (phrase si trop vite) |
pick |
Toucher la bonne image |
rounds [{ prompt, options: [image…], answer }], decoy (image piège), decoyLine, wrongLine, background
|
hide |
Trouver la bonne cachette |
spots [{ img, x, y, h, reply, found }], bg (image de fond), answer (index de la bonne ; par défaut la dernière) |
runner |
Haut de l’écran : sauter, bas : se baisser |
hero { run: [images], jump, slide, stumble, h, slideH }, buddy (même forme, second coureur derrière), chaser { frames: [images], fps, x, speed, h }, obstacles { jump, duck } (à sauter au sol, à éviter en se baissant), bg (décor qui défile), seconds (20), stumble (phrase quand on trébuche) |
cables |
Tirer une fiche : son câble gigote dans le nœud ; la glisser sur la bonne prise |
board (panneau de 4 prises), knot, plugs { couleur: image } (ids de couleur libres, 4 au plus), sockets (ordre des couleurs sur le panneau, de haut en bas), tints { couleur: css }, gags (lamp, phone, toaster, windows ; un gag sans ses images ou son texte est retiré), lampOn, lampOff, phone, toaster, windowsText, sfx: { ring, stamp }, helpAfter (4), background
|
scratch |
Gratter un ticket |
ticket (image), text, color, sfx (bruit pendant qu’on gratte), threshold (0,55 de la surface), cover (texte imprimé sur la couche argentée), hold (3200 ms d’affichage une fois révélé), background, skippable ; utilisé par la fin scellée via ending.scratch
|
code-wheel |
Tourner deux disques, lire la fenêtre, donner la réponse |
actors [{ id, label, img? }] (de 3 à 11, en nombre impair), symbols (autant), answers (autant, toutes différentes), mode (parody), tries (3), seed, et les textes question, wrong, pass, win, fail, list, turnLeft, turnRight
|
Un jeu peut ajouter ses propres mini-jeux : export const minigames = { monjeu: { required: ['…'], run(ctx) { … } } }
dans index.ts (Un mini-jeu sur mesure).
Exemple :
{ music: { push: 'minigame' } },
{ minigame: 'pipes', params: {
tiles: { ground: 'pipes/r3c1', straight: ['pipes/r3c2', 'pipes/r3c5'], elbow: ['pipes/r3c3', 'pipes/r3c6'], tee: ['pipes/r3c4', 'pipes/r4c1'] },
source: 'pipes/r4c2', nozzle: ['pipes/r4c3', 'pipes/r4c4'], tank: 'maison/r3c6', mushrooms: ['maison/r4c5', 'maison/r4c6'],
intro: 'Khhh… tourne les tuyaux… jusqu’aux plantes.', win: 'Khhh… elles ont bu.',
}, then: [
{ music: { pop: true } },
{ say: ['grandpere', 'Merci. Maintenant, je me souviens : j’ai laissé ta clé au marché.'] },
{ unlock: 'marche' },
] },{ music: { push: 'minigame' } } et { music: { pop: true } } autour passent à la musique du mini-jeu et en reviennent
(Musique en stems).
Limite ·
minigame-solver-counts-wonLe solveur ne joue pas un mini-jeu : il le compte gagné et exécutethen. Une énigme que seul le résultat d’un mini-jeu décide n’est pas prouvée parnpm run solve.
-
Passer. Chaque mini-jeu intégré a un bouton « Passer », sauf
scratch(la fin scellée elle-même, sauf avecskippable: true) et uncode-wheelen modestrict. Passer exécute quand mêmethen: l’histoire continue. Son libellé est leui.skipdu jeu. -
Échouer. Aucun mini-jeu intégré ne s’échoue, sauf un
code-wheelen modestory, qui se terminefailedaprès sestries. -
Le résultat (4.1.16). Dans le lecteur, un mini-jeu qui se termine écrit comment dans le drapeau réservé
minigame.<id>:won,passed,skipped,failedoudisabled(chaque mini-jeu ditskippedouwon; seule la roue de codes dit les autres). L’histoire le lit avec{ flag: 'minigame.pipes', eq: 'skipped' }, le journal le rapporte commeflagChanged, et une session l’enregistre pour qu’une rediffusion le rejoue. Aucune commande ne peut poser un drapeauminigame.*(le validateur le refuse). Le solveur n’en enregistre aucun : il n’explore pas les branches accrochées à ce drapeau.
Utilisez-en un comme une porte que le joueur comprend : la fiction dit pourquoi on y joue. La cuve a besoin d’une
autre sortie, alors on pose des tuyaux. Le vendeur veut des fleurs, alors on les cueille. Restez court : 30 secondes,
pas 3 minutes (trois manches de pick, une grille 4 × 3 de pipes), avec helpAfter pour que le bon tuyau brille
quand le joueur est perdu, et des répliques intro et win dans la voix d’aide. Le raisonnement est dans
Concevoir des énigmes.
| Mini-jeu | Va avec une fiction sur |
|---|---|
pipes |
l’eau, la plomberie, l’arrosage, tout ce qui coule |
cables |
l’électricité, un standard, le nœud derrière la télé |
pick |
les courses, choisir le bon, une recette, une confrontation |
hide |
cache-cache, trouver quelqu’un ou quelque chose dans une scène |
runner |
une poursuite, une fuite, une course pour attraper un bus |
stroke |
calmer un animal, endormir un bébé |
scratch |
la fin scellée seulement (La fin scellée) |
code-wheel |
une roue anti-copie des années 1990, pour rire, dessinée avec vos propres personnages (Remix) |
Une grille de tuyaux (cols × rows, 4 × 3 par défaut, au moins 2 × 1) à tourner jusqu’à ce que l’eau aille de
source à la buse (nozzle), qui arrose les champignons (mushrooms). Obligatoires : tiles, source, nozzle,
tank. Textes : intro, win. helpAfter (15) est le nombre de taps avant que le bon tuyau scintille.
Caresser lentement la cible (target) du doigt ; la main fantôme (hand) montre le geste ; une jauge monte jusqu’à
goal (100). Obligatoires : target, hand. Textes : intro, win, tooFast. Liaison : sfx doit être un son
de audio.sfx.
Des manches d’images ; toucher la bonne (answer) à chacune. Obligatoire : rounds. Textes : le prompt de chaque
manche, decoyLine, wrongLine, win ; pas d’intro (le prompt de la première manche l’ouvre). Une image piège
(decoy) dit decoyLine quand on la touche.
Des cachettes dessinées sur bg ; chacune répond par sa reply, la bonne (answer, par défaut la dernière) termine.
Obligatoire : spots. Textes : intro, win, la reply de chaque cachette.
Une poursuite qui défile pendant seconds (20) : toucher le haut de l’écran pour sauter, le bas pour se baisser.
Obligatoires : hero, chaser, obstacles, bg. Textes : intro, win, stumble. Les libellés « sauter » et
« se baisser » sont des textes d’interface du jeu.
Jusqu’à quatre fiches, chacune emmêlée dans le nœud (knot), à glisser sur la bonne prise du panneau (board).
Obligatoires : board, knot, plugs. Textes : intro, win, windowsText. Liaisons : sfx.ring et sfx.stamp
doivent être des sons de audio.sfx. Un gag (lamp, phone, toaster, windows) sans ses images ou son texte est
retiré.
Une couche argentée qui part sous le doigt ; il se termine quand threshold (0,55) de la surface est gratté et que le
text est resté affiché hold ms (3200). Obligatoire : ticket. Texte : intro (le text est la fin scellée
déchiffrée, donnée à l’exécution, jamais un contenu à traduire). Liaisons : ticket (une image) et sfx. Utilisé par
la fin scellée via ending.scratch.
fonction apparue en 4.1.15
« The Extremely Legitimate Pirate Check » : deux disques dessinés avec les personnages et les symboles du jeu, jamais
un DRM (la réponse est dans la page, et la roue le dit). Obligatoires : actors, symbols, answers : un nombre
impair d’acteurs de 3 à 11, autant de symboles et autant de réponses, toutes différentes. mode : parody (par
défaut : après tries mauvaises réponses, 3 par défaut, le joueur passe, passed), story (se termine failed après
ses essais), strict (pas de bouton Passer, ne laisse jamais passer), cosmetic (toute réponse gagne), disabled,
daily. La graine (seed) est remplie par Remix à partir de celle du monde. Elle se tourne aux boutons, aux flèches
du clavier ou à la manette, s’annonce au lecteur d’écran et se lit comme une simple liste. npm run code-wheel
l’imprime. Tout le reste, sa preuve et les règles de speedrun : Remix.
- La commande :
{ minigame: '<id>', params: { … }, then: [ … ] }(Commandes du jeu). - Le drapeau
minigame.<id>;ending.scratch;audio.sfxpour les liaisons. -
npm run validate,npm run i18n(lestextParamssont extraits pour la traduction). - L’API :
minigames,Minigame,MinigameCtx,MINIGAME_CSSdequest-n-click/minigames(API publique).
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