Aller au contenu
quest'n'click

Moteur de point & click open source

Faites un point-and-click pour le navigateur.

Écrivez-le comme des données, façonnez-le dans un Studio visuel, prouvez qu'il peut être terminé, et livrez-le comme un jeu web qui s'installe sur un téléphone et joue hors ligne.

v4.5.0publiée le 23 octobre 2026★ 15 étoiles sur GitHub

The Pantry Key
Des conversations avec sujets, choix et transcription

Un jeu, ce sont des données, jamais du code

Salles, objets, règles et répliques sont des objets TypeScript ordinaires. Une personne les écrit, un assistant IA les écrit, un solveur les lit.

import { defineRoom } from 'quest-n-click/content';

export default defineRoom({
  id: 'house',
  name: "Grandma's house",
  decor: 'decor/house',
  music: 'house',

  // Props: images on the background, each with states.
  props: {
    lamp:  { name: 'lamp', states: { off: 'house/r1c1', on: 'house/r1c2' } },
    stool: { name: 'stool', states: { shelf: 'house/r1c5', pulled: 'house/r1c6' } },
  },

  // Characters present.
  actors: {
    grandma: { char: 'grandma', facing: 'left' },
    cat: { char: 'cat', pose: 'sleep', visible: '!cat_awake' },
  },

  // Zones of the background that can be acted on.
  hotspots: {
    shelf: { name: 'shelf' },
    door:  { name: 'garden door' },
  },

  // Look. A list = a different line each time.
  look: {
    shelf: 'The shelf. Too high without a step up.',
    cupboard: ['An old cupboard.', 'Still an old cupboard.',
               'Someday I will check what is behind it.'],
  },
});

Ce que vous obtenez

Selon qui vous êtes. Chaque point renvoie à la page qui en dit plus.

Pour les joueurs

  • Une interface de point-and-click classique : des verbes, un sac, une ligne de phrase ; un double tap agit avec le verbe que vous voulez dire ; une touche par verbe quand le jeu en donne une (Commandes).
  • Téléphone et ordinateur : en paysage sur un téléphone, la mise en page classique à la souris ; le jeu entier au clavier (Accessibilité).
  • S’installe et se joue hors ligne : une PWA qui met le jeu entier en cache après la première visite et dit quand c’est complet (Installer le jeu comme une application).
  • Sauvegarde automatique et emplacements, avec export et import en fichier (Sauvegardes).
  • Réglages : vitesse et taille du texte, animations réduites, police lisible, sous-titres des sons, volumes, langue (Réglages, Langues).
  • Speedruns : catégories, horloge de jeu, temps intermédiaires, fantôme, preuve scellée, OBS et LiveSplit (Speedrun pour les joueurs).

Dans un jeu

  • Plusieurs personnages jouables, et depuis la 4.3.0 le héros choisi à la Nouvelle partie parmi autant qu’on veut, avec des portraits, un nom par héros et des répliques qui suivent le héros (Héros).
  • Une carte du monde, ses lieux débloqués par l’histoire ; depuis la 4.4.0, une épingle peut porter plusieurs lieux (Carte du monde).
  • Des mini-jeux au toucher ou au clavier (pick, hide, pipes, runner, stroke, scratch, cables, la roue à code), et les vôtres (Mini-jeux fournis).
  • Des cinématiques et des coups de téléphone, des scripts et des événements qui font agir le monde sans un tap, des personnages qui marchent et patrouillent (Scripts et événements, Déplacer les personnages).
  • La mise en scène : salles larges et caméra, animations avec événements d’image, calques, masques, lumières, particules, zones de marche et passages (Mise en scène, La scène).
  • Une musique en pistes séparées qui suit l’état du jeu, des bruitages tirés d’une même palette, des voix enregistrées par langue et par héros (Musique en pistes, Voix).
  • Remix : des mondes générés depuis une graine, chacun validé et résolu avant d’être livré ; un défi du jour et des mondes mystère avec un Bridge (Remix).
  • Speedrun : des runs enregistrés, scellés et vérifiés par un rejeu ; des classements sur le Bridge (Speedrun pour les auteurs).
  • Reality : un jeu réagit à un fait du monde (un email reçu, une commande de terminal, un badge) par un signal signé venu d’un Bridge, sans que son contenu touche au réseau (Le Bridge Reality).

Pour les auteurs

  • Le contenu en données, des objets TypeScript sans code ; les commandes sur mesure comme du code de confiance nommé dans le jeu (Principes du contenu, Code sur mesure).
  • Vérifié avant que quiconque joue : le validateur trouve les références cassées, les salles inatteignables et les répliques non traduites ; le solveur fait tourner le vrai moteur pour trouver un chemin gagnant (npm run verify) ou prouver que chaque état atteignable peut finir (solve --prove) (Vérifier son jeu, Ce que prouve le solveur).
  • Rejoué : une session reproduit exactement la partie d’un testeur (Parties de test).
  • Images, son et langues : un prompt pour chaque planche de sprites, des planches découpées en sprites, une musique chiptune arrangée depuis un MIDI, chaque réplique traduisible (Images, Traductions).
  • Livré : un site statique avec un budget de téléchargement et chaque fichier compté avec sa licence (Construire et publier, Provenance des assets).
  • Le Studio local : le vrai moteur avec un éditeur par-dessus, le storyboard, les assets, les vérifications après chaque enregistrement, un onglet de jeu qui explique une règle et rejoue une session, la matrice héros × langue, un assistant avec votre propre clé (Le Studio local).
  • Travailler avec une IA : chaque opération est une commande et un outil MCP (Travailler avec une IA).

Pour les équipes et les opérateurs

  • Le Studio d’équipe hébergé (expérimental) : un jeu, plusieurs personnes derrière OpenID Connect, des pans et des baux, des prévisualisations par révision, des commentaires, un diff sémantique, Git, un MCP distant pour les agents, des sauvegardes et des restaurations ; documenté pour Clever Cloud (Ce qui tourne où, Clever Cloud : vue d’ensemble).
  • Le Bridge Reality : sur SQLite (stable) ou Postgres (expérimental), plusieurs locataires, des sauvegardes, des classements ; quatre connecteurs (expérimentaux) (Installer et faire tourner le Bridge).

Toutes les pages de la documentation

Captures du vrai build de production et du vrai Studio, tirées de la galerie du moteur.

  • Des conversations avec sujets, choix et transcription

  • Des minijeux, au toucher ou au clavier

  • Une carte du monde, des personnages qui se déplacent

  • Une fin qui se souvient de ce que le joueur a deviné

  • Salles : le vrai moteur, un éditeur de placement par-dessus, chaque ligne modifiable sur place

  • Storyboard : l'histoire case par case, vérifiée contre le jeu

  • Assets : chaque planche et chaque case, où elle sert, le prompt pour la faire

  • Vérification : le validateur et le solveur, relancés après chaque sauvegarde

Prouvez qu'il peut être terminé

Avant que quiconque joue, le validateur trouve ce qui est cassé et le solveur fait tourner le vrai moteur dans chaque état atteignable.

  1. 1

    Valider

    Références cassées, salles inaccessibles, lignes non traduites, paramètres des minijeux.

  2. 2

    Résoudre

    Un chemin gagnant depuis Nouvelle partie, puis une preuve exhaustive : aucun état où la partie est perdue.

  3. 3

    Livrer

    Une PWA avec un budget de téléchargement, chaque fichier compté avec sa licence, vérifiée dans de vrais navigateurs.

En chiffres

3315
déclarations de tests unitaires
288
états prouvés dans le jeu de référence
136
Ko de JavaScript à la première visite, gzippé

Mesurés sur le commit de la release par les portes automatiques, lus dans le README du tag.

Studio · Check
The puzzle graph with the critical path and the solver's heat

Démarrer en trois commandes

Node 22.12 ou plus récent. Python 3 et ffmpeg servent les outils d'images et de son ; `npm run doctor` dit lequel manque.

Puis le tutoriel vous mène à une première salle en quinze minutes.

T=https://github.com/wanoo/quest-n-click/releases/download/v4.5.0/quest-n-click-4.5.0.tgz
npx --package=$T quest-n-click create my-game "My Game" --engine=$T
cd my-game && npm install
npm run assets && npm run dev