Aller au contenu principal

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 cause rempli partout.
  • Les snapshots et l'en-tête de session (contentHash, engineVersion, seed).
  • Le harnais de simulation npm run simavant 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 content polymorphe, 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 Vision du 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

TentationPourquoi attendre
Le bureau en zoom arrière, jolic'est de l'habillage ; il ne répond à aucune question de design
L'éditeur de graphe visuelon ne sait pas encore ce qu'un fil narratif doit contenir
Les 10 chapitres de devis complets4 ou 5 suffisent à créer l'arbitrage ; les 10 arriveront quand la mécanique tiendra
Le générateur LLM de packsgénérer du contenu avant de savoir ce qu'est un bon contenu produit du bruit relu par personne
La post-production détailléeelle ne vaut que si l'acte II a produit des regrets
Les comptes, la synchro, le multi-appareilpersonne 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 prototypeOù il se retrouve ici
L'interface est une boîte mail, rien d'autre06-ui-desktop-metaphor.md — étendu à tout un bureau
Le contenu est un arbre de mails et de réponsesdata-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 vingt00-vision.md — les trois ressources
Le mail est le bon porteur de mauvaise nouvelle06-ui-desktop-metaphor.md §3 — mais un canal parmi d'autres

Ce que la conception actuelle change délibérément :

  1. 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.
  2. chaos devient 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.
  3. Une jauge qui remonte. budget et quality seuls font une descente ; d'où le capital relationnel (03-data-model.md §3.6).
  4. 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.
  5. 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.xyz correspond au registre du projet ; PocketBase sur le sous-domaine admin.* selon le motif habituel du lab. À confirmer au moment du premier déploiement.