Aller au contenu principal

03 — Modèle de données : vue d'ensemble

Les cinq entités listées au départ sont bien les bonnes briques. Ce document répond à la question posée — « est-ce suffisant pour couvrir tous les corps de métier, ou ai-je oublié une dimension ? » — et donne la carte générale.

Les fiches détaillées sont dans data-model/, qui porte aussi les conventions communes (unités, Rated, enum des postes, nommage des événements).


1. Réponse courte

Pour couvrir les corps de métier : oui, People + Éléments suffit. J'ai passé en revue tous les postes d'un long métrage français (cf. §2) — chacun se ramène à « des gens » et/ou « des choses », plus une étiquette poste.

Mais il manque une dimension, et ce n'est pas une dimension de métier : ce sont les dimensions de liaison. Les cinq entités décrivent des choses qui existent. Le jeu, lui, porte sur les engagements qui les relient :

Ce n'est pas « le chef op » qui coûte cher et fait mal. C'est le contrat qu'on a signé avec lui, pour ces dates-là, sur cette ligne de budget-là, au service d'une intention que le réalisateur n'a jamais complètement dite.

Quatre liaisons manquent, plus deux entités qui n'entrent dans aucune des cinq :

#ManquantNatureSans elle…
1Deal (contrat / engagement)liaison personne↔productionpas de négociation, pas de dette différée, pas de clause qui explose
2Day (journée du plan de travail)liaison temps↔tout le restele plan de travail — l'objet central du métier — n'existe pas
3Task / Chantier (travaux de préparation)liaison gens↔éléments dans le tempsles décors et les costumes apparaissent par magie
4BudgetLine + Financementliaison argent↔postesl'argent est un seul nombre, donc il n'y a pas d'arbitrage
5Vision (le film idéal du réalisateur)le barèmeon ne sait pas ce que « le film idéal » veut dire, donc on ne peut pas noter
6Capital relationnel3ᵉ ressource, bidirectionnellela partie n'est qu'une courbe descendante

Détail et justification en §3.


2. Vérification : chaque poste se ramène-t-il à People + Éléments ?

PosteGensÉlémentsManque-t-il quelque chose ?
Réalisation (réal, 1er/2e assistant, scripte)non — mais le réalisateur est aussi porteur de la Vision (§3.5)
Production, administration, comptanon
Casting (comédiens, figuration, doublures)c'est le Deal qui fait mal, pas la personne (§3.1)
Image (chef op, cadre, 1er AC, DIT)caméra, optiques, moniteursnon
Machinerietravellings, grue, dollynon
Électroprojecteurs, groupe, câblesnon
Sonperche, HF, enregistreurnon
Déco✅ chef déco, ensemblier, accessoiriste, constructiondécors, accessoires, mobilier⚠️ oui : un décor se construit — ça prend des semaines et des gens. Il faut un Chantier (§3.3)
Costumescostumes⚠️ idem : essayages, fabrication, retouches = chantier
HMCperruques, prothèses, maquillage FX⚠️ une prothèse se fabrique avant, et se pose le matin (2 h de maquillage = 2 h de tournage en moins) → chantier + contrainte de journée
Cascades✅ coordinateur, cascadeursprotections, câbles, véhiculesnon, mais très réglementé (facette sur l'élément)
SFX plateaupluie, fumée, feu, armurerienon
VFX✅ superviseur (plateau) + studio (post)plaques, tracking markers, shots⚠️ oui : un plan VFX est un travail sur un plan déjà tourné, avec des itérations et des allers-retours. Ni People, ni Élément, ni Plan tel quel → chantier de post (§3.3)
Animaux✅ dresseurl'animalnon (l'animal = élément à facettes Périssable+Réglementé)
Enfants✅ coachcontrainte horaire → porte sur la Journée (§3.2)
Régievéhicules, cantine, base-vienon
Post (montage, mixage, étalonnage, musique)salles, studios, licences⚠️ oui : la post ne produit pas des plans, elle produit des versions du film par itérations. Chantier + livrables
Juridique, assurancescontrats, autorisations, policesl'autorisation est un élément Réglementé ; le reste c'est du Deal

Conclusion. Tous les postes tiennent dans People + Éléments. Ce qui coince systématiquement, c'est le temps de fabrication (déco, costumes, HMC, VFX, post) : ces départements ne fournissent pas, ils fabriquent. D'où l'entité manquante n°3.


3. Les six manquants, en détail

3.1 Deal — le contrat, pas la personne

L'énoncé du jeu le dit lui-même : « le joueur pourra choisir d'engager telle personne au salaire bradé, mais finira par en payer le prix plus tard ». Cette phrase ne parle pas d'une personne, elle parle d'un accord.

Une même personne peut avoir plusieurs deals possibles (3 semaines à plein tarif ? 6 jours groupés ? un forfait ?), et c'est le deal qui porte : le cachet négocié, les jours garantis (payés même si non tournés — piège classique), l'exclusivité, les défraiements, les clauses (loge, chauffeur, coach, doublure, montage final), les pénalités, le dédit.

C'est aussi le deal qui porte la dette : tarif_negocie / tarif_marche = 0.6 est la condition qui armera l'incident dans trois semaines.

→ détaillé dans data-model/people.md.

3.2 Day — la journée du plan de travail

C'est l'oubli le plus important, parce que c'est l'objet quotidien du métier.

L'énoncé dit : « les éléments d'entrée doivent être coordonnés autour des contraintes de temps de chacun ». Cette coordination n'est pas une propriété diffuse : c'est le plan de travail, un document, et le premier livrable du directeur de production.

Une journée est une entité de plein droit :

type DayPlan = {
dayIndex: number
date: string
location: ElementRef // un seul décor principal — c'est la règle
effect: 'jour' | 'nuit' | 'aube' | 'crepuscule'
scenes: SceneRef[] // ce qu'on espère tourner
shots: ShotRef[] // ce qu'on espère couvrir
calledPeople: DealRef[] // qui est convoqué (= qui est payé)
calledElements: ElementRef[] // ce qui doit être livré
callTime: string // PLT — la feuille de service
wrapTarget: string
constraints: DayConstraint[] // enfants, amplitude 12h, repos 11h, nuit
}

Ce qu'elle apporte au jeu :

  • Le regroupement (tourner par décor, grouper les jours d'un comédien) — la compétence n°1 du métier, et impossible à enseigner sans cette entité.
  • Le coût réel : une journée, c'est l'équipe entière payée, qu'on tourne 12 plans ou 3. Le joueur doit sentir qu'un jour de tournage a un prix fixe énorme.
  • Les contraintes légales (amplitude, repos, enfants, nuit) s'appliquent à une journée, pas à une personne.
  • Le rythme du jeu : une journée = un tour. Cf. 04-game-loop.md.
  • Le report : la mécanique de catastrophe la plus lisible est « la scène 34 n'a pas été tournée, elle glisse » — il faut une journée pour qu'elle glisse.

En pré-production le joueur construit le plan de travail ; au tournage il le répare tous les matins. C'est le jeu.

3.3 Task / Chantier — la fabrication

Ce qui se passe entre l'achat et le tournage. Un chantier consomme des gens d'un poste pendant une durée, et produit ou améliore un élément (ou un plan, en post).

type Task = {
kind: 'construction' | 'costume' | 'prothese' | 'repérage'
| 'essai' | 'casting' | 'vfx' | 'montage' | 'mixage' | 'etalonnage'
poste: Poste
produces: ElementRef | ShotRef | DeliverableRef
workRequired: number // en jours-hommes
assignedDeals: DealRef[]
deadlineTick: Tick // la date à laquelle il faut que ce soit prêt
quality: Rated // le résultat, connu tard
iterations?: number // VFX, montage : on refait
}

Pourquoi c'est indispensable :

  • Sinon la pré-production n'est qu'une boutique, alors que c'est 80 % du métier : on y fabrique, on y essaie, on y répète.
  • Ça donne un vrai coût au temps en préparation : réduire la préparation de deux semaines, c'est livrer un décor bâclé — la leçon la plus utile du jeu.
  • Ça modélise la post-production sans entité nouvelle : le montage, le mixage et les VFX sont des chantiers itératifs sur des plans déjà tournés.
  • Ça donne un rôle au VFX supervisor (cf. les collaborateurs du projet) : les décisions VFX se prennent avant le tournage — plaque, tracking, fond vert vs décor réel — et se payent en post.

3.4 BudgetLine + Financement — l'argent n'est pas un nombre

Un seul compteur d'argent supprime tout l'intérêt. Il faut :

  • Des chapitres de devis (cf. data-model/README.md §6) avec chacun son enveloppe. Le drame « il reste de l'argent, mais pas sur la bonne ligne » est une vraie situation de production.
  • Un engagé vs un dépensé. On engage une dépense (bon de commande, contrat) bien avant de la payer. Le joueur doit apprendre que l'argent est parti au moment de la signature, pas au moment du virement.
  • La trésorerie, distincte du budget : les financements arrivent par tranches (à la signature, au premier jour de tournage, à la livraison). On peut être « dans le budget » et incapable de payer la cantine vendredi.
  • Les sources de financement : producteur, CNC, préachat chaîne, région, coproduction, crédit d'impôt, SOFICA — chacune avec ses conditions. C'est le seul mécanisme qui permet à l'argent de remonter, et il doit rester narratif : « si Marion V. signe, la chaîne remet 300 k€ » est un excellent ressort dramatique.
  • La marge d'imprévus (~10 %) comme ligne visible qui fond.

3.5 Vision — le barème du réalisateur

Le jeu dit : « aboutir au film idéal du réalisateur ». Il faut donc que « le film idéal » soit une donnée, sinon la note finale est arbitraire.

type Vision = {
weights: Record<Criterion, number> // ce qui compte pour lui
nonNegotiables: SceneRef[] // les scènes auxquelles il tient
redLines: string[] // « je ne tourne pas en studio »
hiddenPreferences: Rated[] // ce qu'il n'a pas dit, et qu'on découvre
}

Deux choix de design qui découlent directement :

  1. La vision est partiellement cachée. Le joueur la découvre en discutant, en se trompant, en observant. Elle se révèle par événements. C'est ce qui fait qu'on travaille avec quelqu'un plutôt qu'on optimise une fonction.
  2. L'utilité réelle d'une scène ≠ l'attachement du réalisateur à cette scène. Le désaccord entre les deux est exactement le « choix cornélien » décrit dans l'énoncé : la scène chère, magnifique, inutile au film — et à laquelle il tient.

3.6 Le capital relationnel — la troisième ressource

Le temps descend, l'argent descend. S'il n'y a que ça, la partie est une courbe monotone et le joueur ne connaît jamais l'élan.

Il faut au moins une jauge qui remonte :

JaugeMonte quandDescend quandSert à
Confiance du réalisateuron protège ses scènes, on trouve des solutionson coupe, on refuse, on mentil accepte des concessions, il tourne plus vite
Patience du producteuron tient le devis, on communiquedépassement, mauvaise nouvelle tardiveil débloque, ou il impose
Moral de l'équipebonnes conditions, respect des horaires, cantineheures sup, chaos, injusticevitesse, fiabilité, taux d'aléa
Réputation du joueurce que la partie laisse en héritageméta-progression, fin de partie

Ces jauges sont ce qui permet de se rattraper : on ne récupère jamais un jour perdu, mais on peut regagner une équipe.


4. Carte générale

┌──────────────┐
│ VISION │ ce que le réal veut (partiellement caché)
└──────┬───────┘
│ définit les pondérations

SCENE ──dépouillement──► REQUIREMENTS ──────┐
│ │
│ importance narrative │ il faut, pour chaque poste :
▼ │
FILM ◄── SHOTS ◄──── résolution ◄────────────┤
▲ │
│ ▼
DAY ◄──── PEOPLE (via DEAL) + ELEMENTS (via TASK)
│ │ │
│ └── BUDGET LINE ┘
│ │
▼ ▼
EVENTS ◄──────────── conditions sur tout l'état

└──► effets ──► nouveaux GameEvents ──► état

Lecture : la scène dit ce qu'il faut, les deals et les chantiers fournissent, la journée coordonne, la résolution produit des plans, les plans font le film, la vision le note, et les événements sabotent tout le trajet.


5. Inventaire des entités

EntitéTypeFiche
Personcontenudata-model/people.md
Elementcontenudata-model/production-elements.md
Scenecontenudata-model/scenes.md
Shotcontenu (prévu) + runtime (produit)data-model/shots.md
IncidentDef / GameEventcontenu / runtimedata-model/events.md
Dealruntime (négocié en jeu)people.md §6
DayPlanruntime (construit par le joueur)§3.2 ci-dessus — fiche à écrire
Taskruntime§3.3 — fiche à écrire
BudgetLine / FundingSourcecontenu (barème) + runtime§3.4 — fiche à écrire
Visioncontenu§3.5 — fiche à écrire
Reputation / jaugesruntime§3.6

6. Deux contraintes transverses décidées après coup

Les fiches détaillées ont été rédigées avant ces deux réponses ; elles doivent être relues à cette lumière.

a. Une partie dure 30 à 60 minutes

C'est la contrainte de cadrage, et elle est violente. Elle interdit de simuler un long métrage entier scène par scène. Conséquences sur le modèle :

  • 10 à 15 scènes dans le scénario jouable, pas 90. Les autres existent en toile de fond, agrégées (« le bloc des scènes d'appartement »).
  • 12 à 20 tours au total, tous actes confondus.
  • 8 à 12 recrutements décisifs ; le reste de l'équipe est engagé en bloc par poste (« l'équipe machinerie, standard, 3 personnes »).
  • Le dépouillement se fait sur 2 ou 3 scènes seulement, en détail — les autres sont dépouillées automatiquement. On enseigne le geste, on ne le fait pas répéter 90 fois.
  • Une granularité de tour = une journée, pas une demi-journée (à corriger dans data-model/README.md §3 si confirmé).

Le modèle de données ne change pas ; c'est le volume de contenu instancié qui change. Le moteur doit savoir traiter une scène « détaillée » et une scène « agrégée » avec le même type.

b. i18n dès le modèle

FR d'abord, EN ensuite. Donc aucune chaîne affichable ne doit être un string nu dans le contenu :

type LocalizedText = { fr: string; en?: string }

À appliquer sur : name, summary, tous les textes d'incident, les options, le texte des scènes, les libellés de traits. Les slug, id, tag et clés d'énumération restent en français technique non traduit (c'est du vocabulaire métier, il fait partie du produit). C'est cinq minutes maintenant, une semaine plus tard.


7. Ce qui reste à trancher

Repris dans 08-open-questions.md.

  1. Le Deal est-il négociable en continu (renégociation en cours de tournage) ou figé à la signature ?
  2. Le joueur construit-il le plan de travail lui-même, ou valide-t-il celui que propose le 1er assistant réalisateur (plus réaliste, et bien plus jouable en 45 minutes) ?
  3. Les chantiers sont-ils visibles individuellement, ou agrégés en une barre de progression par poste ?
  4. Combien de chapitres de devis exposer au joueur — les 10 réels, ou 4 ou 5 regroupés ? (« réaliste simplifié » plaide pour 5 avec les vrais noms)
  5. La réputation persiste-t-elle entre les parties (méta-progression) ?