07 — Chemin de fabrication
Ce document ne planifie pas le jeu complet. Il ordonne les étapes de manière à ce que la question la plus risquée soit répondue en premier.
La question risquée
Est-ce qu'un arbitrage de production peut être ressenti comme un moment de jeu ?
Tout le reste — le graphe narratif, les 90 scènes, la post-production, le bureau en 3D — est du travail. Ça, c'est un pari. Il faut le lever en quelques jours, pas en quelques mois.
Jalon 0 — La verticale de 20 minutes (le pari)
Objectif : une partie jouable de bout en bout, minuscule, mais complète.
- 3 scènes, dont 1 à dépouiller à la main.
- 4 recrutements décisifs, dont un choix cher/pas cher explicite.
- 3 journées de tournage.
- 1 semaine de post.
- 1 incident différé : le choix du jour 1 provoque la crise du jour 3.
- Le débrief causal, même moche : la frise, et le fil qui remonte.
Tout est en dur dans un pack JSON écrit à la main. Pas d'éditeur, pas de PocketBase, pas de comptes, pas de bureau en zoom arrière, pas d'images. Des fenêtres grises et du texte.
Le seul critère de réussite : trois personnes y jouent, et à la fin elles peuvent dire « j'ai perdu parce que j'ai pris le chef op pas cher ». Si oui, le jeu existe. Sinon, on rediscute la boucle avant d'écrire quoi que ce soit d'autre.
C'est ce jalon qu'il faut montrer à Dom et Claire en premier, même laid.
Jalon 1 — Le moteur pour de vrai
Une fois le pari gagné, on construit ce sur quoi tout reposera.
packages/schema— les schémas Zod, avec i18n dès le départ.packages/engine— pur, déterministe : réducteur, PRNG à canaux, résolution d'un plan, résolution d'une journée.- Le journal d'événements avec le champ
causerempli partout. - Les snapshots et l'en-tête de session (
contentHash,engineVersion,seed). - Le harnais de simulation
npm run sim— avant d'écrire du contenu, parce que c'est lui qui dira si le contenu est équilibré. - Le chargeur de pack et
content:lint.
Ce jalon est du travail sans surprise, à condition de ne rien laisser fuiter :
pas de React, pas de réseau, pas de Math.random, pas de Date.now.
Jalon 2 — L'éditeur minimal
Assez d'éditeur pour que Gabriel n'écrive plus de JSON à la main, et pour que Dom et Claire puissent relire.
- PocketBase, la collection
contentpolymorphe, l'auth et les rôles. - Import / export git ⇄ PocketBase, déterministes.
- Les écrans dans cet ordre d'utilité : scène + dépouillement, puis personne, puis incident, puis le graphe.
- Le tableau de bord de validation.
- Le bouton « jouer ce pack ».
Le graphe visuel vient en dernier dans ce jalon : tant que le contenu est petit, une liste d'incidents avec leurs conditions suffit, et on découvre en écrivant ce que le graphe doit vraiment montrer.
Jalon 3 — Le premier vrai scénario
Le pack de référence, écrit à trois.
- 10 à 15 scènes jouables, un scénario fictif crédible.
- Un casting complet, avec ses pièges.
- 30 à 50 incidents, dont 6 à 8 fils narratifs traversant la partie.
- La
Visiondu réalisateur, avec sa part cachée. - Les trois actes équilibrés à la simulation, pas à l'intuition.
- Relecture métier complète par Dom (VFX, plateau) et Claire (production, devis, plan de travail).
C'est le jalon le plus long, et c'est normal : le contenu est le produit.
Jalon 4 — L'habillage
Ce qu'on a volontairement repoussé jusqu'ici.
- Le zoom arrière sur le bureau, les objets, l'heure, le désordre progressif.
- Les visios et les portraits.
- Les documents mis en page pour de vrai (feuille de service, contrat, devis) — avec relecture des collaborateur·rice·s : un professionnel doit reconnaître ses documents.
- Le son.
- Le glossaire et la couche « école ».
Jalon 5 — Ouverture
- L'anglais.
- Plusieurs packs = plusieurs films, chacun enseignant autre chose : un premier film sans argent · une comédie avec une vedette · un film d'époque (déco, costumes, figuration) · un film avec des enfants et des animaux · un film à VFX (le terrain de Dom).
- Les comptes auteurs invités.
- Les statistiques d'usage pour l'équilibrage continu.
- Éventuellement : le mode « pack généré » relu et figé.
Ce qu'il ne faut surtout pas faire en premier
| Tentation | Pourquoi attendre |
|---|---|
| Le bureau en zoom arrière, joli | c'est de l'habillage ; il ne répond à aucune question de design |
| L'éditeur de graphe visuel | on ne sait pas encore ce qu'un fil narratif doit contenir |
| Les 10 chapitres de devis complets | 4 ou 5 suffisent à créer l'arbitrage ; les 10 arriveront quand la mécanique tiendra |
| Le générateur LLM de packs | générer du contenu avant de savoir ce qu'est un bon contenu produit du bruit relu par personne |
| La post-production détaillée | elle ne vaut que si l'acte II a produit des regrets |
| Les comptes, la synchro, le multi-appareil | personne ne joue encore |
Le prototype de 2025 — ce qu'il a déjà appris
Un premier prototype de ce jeu existe :
GabrielVidal1/lost-in-production
(mars 2025, « Movie production arcade game »). Il ne faut pas le refaire sans
regarder ce qu'il a établi.
Ce qu'il fait : un client mail en React/Vite. Les mails arrivent en temps
réel (un nouveau toutes les 2 à 3 secondes), chacun ouvre un fil de
conversation où l'on choisit une réponse, chaque réponse peut avoir une
followUp — un arbre de dialogue. Trois compteurs : budget (100 000 au
départ), quality, chaos. La partie s'arrête quand le budget tombe à zéro.
Ce qu'il valide, et qu'il faut garder :
| Acquis du prototype | Où il se retrouve ici |
|---|---|
| L'interface est une boîte mail, rien d'autre | 06-ui-desktop-metaphor.md — étendu à tout un bureau |
| Le contenu est un arbre de mails et de réponses | data-model/events.md — le graphe nodal |
Une réponse peut appeler une suite (followUp) | les conséquences différées |
| Trois compteurs lisibles valent mieux que vingt | 00-vision.md — les trois ressources |
| Le mail est le bon porteur de mauvaise nouvelle | 06-ui-desktop-metaphor.md §3 — mais un canal parmi d'autres |
Ce que la conception actuelle change délibérément :
- Tour par tour, plus temps réel. L'arcade produit du stress, pas de la compréhension. Un directeur de production décide à froid, et le public visé (écoles, professionnels) a besoin de temps pour lire un devis.
chaosdevient une conséquence, pas une jauge. Le désordre se lit dans l'état du bureau, le retard et le moral, plutôt que dans un compteur.- Une jauge qui remonte.
budgetetqualityseuls font une descente ; d'où le capital relationnel (03-data-model.md§3.6). - Les aléas cessent d'être tirés au hasard dans une liste pour devenir conditionnés par l'état de la partie — c'est ce qui permet la dette différée, qui n'existait pas encore.
- Le contenu sort du code (
src/data.ts) pour aller dans un catalogue éditable, versionné et validable (05-backoffice-editor.md).
À décider : repartir de ce dépôt (son historique, son nom, sa boîte mail
déjà écrite) ou repartir de zéro en récupérant data.ts comme corpus de
départ. Le prototype pèse ~45 Ko : la reprise coûte peu, la relecture de ce qui
y a été écrit vaut plus que le code.
Le nom des choses
Deux détails à trancher tôt parce qu'ils sont partout :
- Le nom de code du dépôt :
lost-in-production. - Le domaine : le rayon
*.game.gabvdl.xyzcorrespond au registre du projet ; PocketBase sur le sous-domaineadmin.*selon le motif habituel du lab. À confirmer au moment du premier déploiement.