Define vertical slice technical plan
This commit is contained in:
1 parent
c38e09a663
commit
9d4a89f355
3 files changed
+600
-1
No files matched your search
@@ -6,13 +6,15 @@
|
||||
|
||||
- Nature : plan directeur de conception et de production
|
||||
- Version : 0.3
|
||||
- État : POC A et POC B validés ; cadrage de la verticale à préparer
|
||||
- État : POC A et POC B validés ; cadrage technique de la verticale proposé
|
||||
- Titre : titre de travail, à valider juridiquement avant toute annonce publique
|
||||
- Prix commercial : volontairement non défini à ce stade
|
||||
|
||||
Les baselines techniques consolidées sont conservées dans
|
||||
[POC_A_TECHNICAL_BASELINE.md](POC_A_TECHNICAL_BASELINE.md) et
|
||||
[POC_B_TECHNICAL_BASELINE.md](POC_B_TECHNICAL_BASELINE.md).
|
||||
Le périmètre et l'architecture proposés pour le prochain jalon sont décrits dans
|
||||
[VERTICAL_SLICE_TECHNICAL_PLAN.md](VERTICAL_SLICE_TECHNICAL_PLAN.md).
|
||||
|
||||
## Pitch
|
||||
|
||||
|
||||
@@ -0,0 +1,596 @@
|
||||
# Verticale jouable — Cadrage technique proposé
|
||||
|
||||
## Statut
|
||||
|
||||
- Date : 7 août 2026.
|
||||
- État : proposition à valider avant le premier code de production.
|
||||
- Jalon : verticale jouable, après validation des POC A et B.
|
||||
- Durée directrice du plan général : quatre à six mois.
|
||||
- Moteur figé pour le jalon : Godot 4.7.1.
|
||||
- Références : baselines techniques des POC A et B.
|
||||
|
||||
Ce document définit ce que la verticale doit prouver, les frontières de son
|
||||
implémentation et l'ordre de construction. Il ne remplace ni le game design
|
||||
général ni les baselines des prototypes.
|
||||
|
||||
## 1. Question à valider
|
||||
|
||||
La verticale doit répondre à une seule question principale :
|
||||
|
||||
> Piloter, chercher une épave réellement cachée, l'identifier, récupérer une
|
||||
> preuve et revenir sous contrainte forme-t-il une boucle claire et assez
|
||||
> satisfaisante pour porter une campagne ?
|
||||
|
||||
Les POC ont validé séparément le véhicule et le langage du sonar. La verticale
|
||||
doit vérifier leur combinaison dans une mission complète avec préparation,
|
||||
objectif, conséquence et progression.
|
||||
|
||||
## 2. Parcours joueur retenu
|
||||
|
||||
La verticale utilise le premier navire de la campagne : le bâtiment de
|
||||
prospection contemporain du précédent opérateur.
|
||||
|
||||
1. Consulter un message de contrat et une fiche de secteur.
|
||||
2. Accepter la mission avec un équipement imposé ou très limité.
|
||||
3. Déployer le mini-sous-marin à proximité de la zone probable.
|
||||
4. Suivre le relief tout en surveillant oxygène, propulsion et coque.
|
||||
5. Utiliser manuellement le sonar bathymétrique pour trouver un accès masqué.
|
||||
6. Découvrir l'épave sans marqueur posé directement sur elle.
|
||||
7. Observer deux indices permettant de confirmer son identité.
|
||||
8. Dégager ou ouvrir un accès avec une interaction contextuelle simple.
|
||||
9. Récupérer une caisse ou un journal lié à la piste du U-Boot.
|
||||
10. Calculer la marge de retour et remonter au bateau.
|
||||
11. Consulter le débriefing, conserver la preuve et vendre un objet secondaire.
|
||||
12. Acheter une première amélioration dont l'effet est vérifiable en replongeant.
|
||||
|
||||
Durée cible initiale : 15 à 25 minutes pour une première réussite, hors reprise
|
||||
après échec. Ce nombre sera corrigé par playtest.
|
||||
|
||||
## 3. Périmètre obligatoire
|
||||
|
||||
### Plongée
|
||||
|
||||
- POV intérieur et hublot circulaire.
|
||||
- Pilotage inertiel avec retour immédiat des commandes.
|
||||
- Oxygène, batterie de propulsion, profondeur et intégrité.
|
||||
- Alarmes texte, couleur et son.
|
||||
- Estimation de retour compréhensible.
|
||||
- Sonar manuel progressif, compact et agrandissable.
|
||||
- Un terrain conçu à la main avec une route sûre et une route plus risquée.
|
||||
- Une épave identifiable et une anomalie secondaire optionnelle.
|
||||
- Une interaction d'ouverture et une récupération.
|
||||
- Retour réussi, abandon volontaire et perte du véhicule.
|
||||
|
||||
### Métajeu minimal
|
||||
|
||||
- Un écran de contrat.
|
||||
- Une fiche historique courte.
|
||||
- Un écran de préparation limité.
|
||||
- Un débriefing.
|
||||
- Une vente ou restitution.
|
||||
- Une amélioration achetable.
|
||||
- Une sauvegarde locale versionnée.
|
||||
|
||||
### Qualité minimale
|
||||
|
||||
- Clavier-souris remappable.
|
||||
- Textes français structurés pour une future localisation anglaise.
|
||||
- Taille du texte et réduction des mouvements accessibles depuis les réglages.
|
||||
- Chargement, sauvegarde et reprise d'une session sans état incohérent.
|
||||
- Barrière qualité reproductible sur macOS, puis Windows et Linux avant la fin
|
||||
du jalon.
|
||||
|
||||
## 4. Hors périmètre ferme
|
||||
|
||||
- Deuxième grande épave.
|
||||
- Carte maritime complète et pilotage de surface.
|
||||
- Trois ports ou marchés dynamiques.
|
||||
- Relations de personnages complètes.
|
||||
- Dialogue à embranchements complexe.
|
||||
- Plusieurs classes de coque.
|
||||
- Plusieurs outils de salvage simulés.
|
||||
- Intérieur complet de l'épave.
|
||||
- Véritable grotte à plusieurs niveaux ou surplomb complexe.
|
||||
- Génération procédurale de site majeur.
|
||||
- Corruption surnaturelle avancée.
|
||||
- Doublage, cinématique ou art final.
|
||||
- Manette certifiée, succès, cloud ou intégration de boutique.
|
||||
- Import d'une sauvegarde de démo.
|
||||
|
||||
Une idée hors périmètre peut être inscrite dans le backlog. Elle ne peut entrer
|
||||
dans la verticale sans retirer un élément de coût comparable et mettre à jour ce
|
||||
document.
|
||||
|
||||
## 5. Critères de réussite
|
||||
|
||||
### Compréhension humaine
|
||||
|
||||
- Au moins 8 testeurs sur 10 trouvent l'accès à l'épave en 5 à 10 minutes après
|
||||
l'arrivée dans la zone de recherche, sans aide orale.
|
||||
- Au moins 8 sur 10 comprennent le rapport entre bleu, vert, jaune et hauteur.
|
||||
- Au moins 8 sur 10 identifient la caisse ou l'anomalie sur le sonar.
|
||||
- Aucun testeur ne confond oxygène et batterie après le tutoriel.
|
||||
- Les alarmes sont comprises avant la première perte.
|
||||
- Au moins 4 testeurs sur 5 souhaitent essayer une seconde mission.
|
||||
|
||||
### Boucle de jeu
|
||||
|
||||
- Une enquête attentive réduit la recherche locale à moins de dix minutes.
|
||||
- Le joueur peut expliquer les deux indices ayant confirmé l'épave.
|
||||
- Le retour est une décision anticipable et non une surprise punitive.
|
||||
- Une première erreur ne rend jamais la mission principale impossible.
|
||||
- L'amélioration achetée produit un changement visible lors d'une seconde sortie.
|
||||
|
||||
### Technique
|
||||
|
||||
- La barrière qualité reste verte à chaque tranche.
|
||||
- Aucun code de production ne dépend des dossiers des POC.
|
||||
- Une seule source de vérité existe pour chaque ressource et progression.
|
||||
- Une sauvegarde V1 peut être chargée après redémarrage du jeu.
|
||||
- Les références de contenu invalides sont refusées par des tests de contrat.
|
||||
- Le jeu tient 60 FPS à 1080p sur la machine macOS ARM64 disponible, avec mesure
|
||||
séparée du coût du sonar.
|
||||
- Aucun `ERROR`, `SCRIPT ERROR`, avertissement ou objet Godot fuité n'est accepté
|
||||
dans les parcours automatisés.
|
||||
|
||||
## 6. Architecture de production
|
||||
|
||||
La verticale suit `docs/ENGINEERING_GUARDRAILS.md` et les ADR acceptés.
|
||||
|
||||
```text
|
||||
game/
|
||||
domain/
|
||||
dive/
|
||||
sonar/
|
||||
mission/
|
||||
inventory/
|
||||
economy/
|
||||
upgrades/
|
||||
application/
|
||||
dive/
|
||||
sonar/
|
||||
mission/
|
||||
port/
|
||||
interfaces/
|
||||
world/
|
||||
submarine/
|
||||
sonar/
|
||||
sites/
|
||||
interactions/
|
||||
presentation/
|
||||
cockpit/
|
||||
sonar/
|
||||
briefing/
|
||||
debriefing/
|
||||
settings/
|
||||
infrastructure/
|
||||
input/
|
||||
save/
|
||||
audio/
|
||||
localization/
|
||||
composition/
|
||||
vertical_slice/
|
||||
|
||||
content/
|
||||
wrecks/
|
||||
contracts/
|
||||
evidence/
|
||||
items/
|
||||
upgrades/
|
||||
sites/
|
||||
localization/
|
||||
```
|
||||
|
||||
Le dossier `application/interfaces/` contient les contrats abstraits vers les
|
||||
adaptateurs externes. Le dossier `application/port/` orchestre les écrans et cas
|
||||
d'usage du port maritime.
|
||||
|
||||
## 7. Propriétaires des états
|
||||
|
||||
| État | Propriétaire unique | Lecteurs principaux |
|
||||
|---|---|---|
|
||||
| Oxygène, batterie, coque, profondeur autorisée | `DiveSession` du domaine | HUD, alarmes, débriefing, sauvegarde |
|
||||
| Transform, vitesses et collisions | `SubmarineActor` dans `world` | télémétrie, caméra, capteur |
|
||||
| Commande de propulsion | cas d'usage de pilotage | adaptateur physique |
|
||||
| Scan courant et précédent | service applicatif sonar | renderer, HUD, sauvegarde si retenue |
|
||||
| Échantillons physiques bruts | adaptateur sonar du monde | service applicatif sonar |
|
||||
| Objectifs et preuves observées | `MissionProgress` du domaine | HUD, fiche, débriefing |
|
||||
| Cargaison du panier | `DiveInventory` du domaine | HUD, récupération, débriefing |
|
||||
| Argent et améliorations | `CampaignState` du domaine | port, préparation, sauvegarde |
|
||||
| Écran ouvert et sélection locale | présentation concernée | aucune règle de gameplay |
|
||||
| Réglages joueur | service de réglages | input, caméra, audio, présentation |
|
||||
|
||||
La profondeur affichée est calculée à partir de la position physique, puis
|
||||
transmise à `DiveSession` par un échantillon de télémétrie. Le HUD ne la recalcule
|
||||
jamais depuis un nœud 3D.
|
||||
|
||||
## 8. Premiers contrats typés
|
||||
|
||||
Les noms ci-dessous sont des responsabilités proposées. Leur API exacte sera
|
||||
validée par tests avant toute scène complète.
|
||||
|
||||
### `VehicleCommand`
|
||||
|
||||
- poussée longitudinale normalisée ;
|
||||
- gouvernail normalisé ;
|
||||
- commande verticale normalisée ;
|
||||
- forte poussée active ou non ;
|
||||
- tick ou instant logique.
|
||||
|
||||
Produit par l'infrastructure d'entrée, validé par l'application et consommé par
|
||||
l'acteur physique.
|
||||
|
||||
### `VehicleTelemetry`
|
||||
|
||||
- position et orientation mondiales ;
|
||||
- vitesse linéaire et angulaire ;
|
||||
- profondeur en mètres ;
|
||||
- effort de propulsion normalisé ;
|
||||
- intensité de la dernière collision ;
|
||||
- tick logique.
|
||||
|
||||
Snapshot immuable produit par le monde. Aucune référence de nœud n'en sort.
|
||||
|
||||
### `DiveSnapshot`
|
||||
|
||||
- identifiant de session ;
|
||||
- oxygène restant ;
|
||||
- batterie restante ;
|
||||
- intégrité ;
|
||||
- profondeur nominale et critique ;
|
||||
- coût de retour estimé ;
|
||||
- niveau d'alarme ;
|
||||
- état terminal éventuel.
|
||||
|
||||
Produit par le domaine après application d'un tick et d'une télémétrie.
|
||||
|
||||
### `SonarSample`
|
||||
|
||||
- ligne et colonne ;
|
||||
- position et normale dans un repère déclaré ;
|
||||
- distance en mètres ;
|
||||
- intensité normalisée ;
|
||||
- catégorie de matériau ;
|
||||
- élévation ou profondeur ;
|
||||
- temps de révélation ;
|
||||
- statut observé ou inconnu.
|
||||
|
||||
Il remplace les dictionnaires implicites du POC B.
|
||||
|
||||
### `SonarScan`
|
||||
|
||||
- identifiant unique ;
|
||||
- transform du capteur à l'émission ;
|
||||
- portée et ouvertures ;
|
||||
- durée ;
|
||||
- dimensions de grille ;
|
||||
- collection typée de `SonarSample` ;
|
||||
- état : demandé, actif, terminé ou remplacé.
|
||||
|
||||
Le résultat stocke le repère de capture. La présentation peut ainsi orienter la
|
||||
carte sans relire un acteur mutable.
|
||||
|
||||
### `MissionProgress`
|
||||
|
||||
- contrat actif ;
|
||||
- objectifs connus ;
|
||||
- preuves observées ;
|
||||
- identité proposée ou confirmée ;
|
||||
- interaction d'accès ;
|
||||
- objet principal récupéré ;
|
||||
- résultat de mission.
|
||||
|
||||
### Définitions de contenu
|
||||
|
||||
- `WreckDefinition` : identité, époque, dimensions, preuves et références.
|
||||
- `ContractDefinition` : donneur, site, objectifs, paiement et prérequis.
|
||||
- `EvidenceDefinition` : type d'observation, cible et texte de fiche.
|
||||
- `ItemDefinition` : volume, catégorie, valeur et caractère essentiel.
|
||||
- `UpgradeDefinition` : coût, prérequis et effet typé.
|
||||
- `DiveSiteDefinition` : scène, profondeur, limites et contenu autorisé.
|
||||
|
||||
Chaque définition possède un ID stable et ne référence jamais une ressource par
|
||||
un texte libre destiné au joueur.
|
||||
|
||||
## 9. Flux principaux
|
||||
|
||||
### Démarrage de mission
|
||||
|
||||
```text
|
||||
Briefing UI
|
||||
→ AcceptContract
|
||||
→ CampaignState valide les prérequis
|
||||
→ StartDive crée DiveSession et MissionProgress
|
||||
→ Composition charge le DiveSite
|
||||
→ World reçoit uniquement les paramètres nécessaires
|
||||
```
|
||||
|
||||
### Pilotage
|
||||
|
||||
```text
|
||||
InputAdapter
|
||||
→ VehicleCommand
|
||||
→ PilotUseCase
|
||||
→ SubmarineActor
|
||||
→ VehicleTelemetry
|
||||
→ TickDive
|
||||
→ DiveSnapshot
|
||||
→ cockpit et alarmes
|
||||
```
|
||||
|
||||
### Scan sonar
|
||||
|
||||
```text
|
||||
Action F
|
||||
→ RequestSonarScan
|
||||
→ validation état/cooldown
|
||||
→ WorldSonarAdapter capture les retours
|
||||
→ SonarScanService structure le scan
|
||||
→ progression déterministe
|
||||
→ SonarPresentationSnapshot
|
||||
→ renderer compact et agrandi
|
||||
```
|
||||
|
||||
La petite et la grande vue consomment la même sortie du renderer. Elles ne
|
||||
maintiennent jamais deux reconstructions indépendantes.
|
||||
|
||||
### Observation et récupération
|
||||
|
||||
```text
|
||||
Interaction monde
|
||||
→ ObserveEvidence ou RecoverItem
|
||||
→ MissionProgress / DiveInventory
|
||||
→ résultat explicite
|
||||
→ snapshot UI et sauvegarde éventuelle
|
||||
```
|
||||
|
||||
L'acteur d'épave ne décide pas qu'une mission est terminée. Il décrit le contact
|
||||
observé ; le domaine applique les règles du contrat.
|
||||
|
||||
### Retour et débriefing
|
||||
|
||||
```text
|
||||
Zone de retour atteinte
|
||||
→ CompleteDive
|
||||
→ résultat immuable
|
||||
→ transfert autorisé de cargaison
|
||||
→ calcul économique
|
||||
→ sauvegarde atomique
|
||||
→ Debriefing UI
|
||||
```
|
||||
|
||||
## 10. Scènes de production minimales
|
||||
|
||||
| Scène | Responsabilité |
|
||||
|---|---|
|
||||
| `vertical_slice_root.tscn` | composition et transitions du parcours |
|
||||
| `dive_site_survey_wreck.tscn` | environnement, limites et points d'injection |
|
||||
| `submarine_actor.tscn` | physique et adaptateurs du véhicule |
|
||||
| `survey_wreck.tscn` | géométrie, collisions et points observables |
|
||||
| `cockpit_hud.tscn` | télémétrie et alertes |
|
||||
| `sonar_display.tscn` | affichage compact et agrandi partagé |
|
||||
| `briefing_screen.tscn` | contrat, fiche et départ |
|
||||
| `debriefing_screen.tscn` | résultat, cargaison et progression |
|
||||
| `workshop_screen.tscn` | une amélioration et son installation |
|
||||
|
||||
Ces scènes reçoivent leurs dépendances depuis la composition. Aucun autoload de
|
||||
gameplay n'est introduit pour éviter cette injection.
|
||||
|
||||
## 11. Sauvegarde V1 minimale
|
||||
|
||||
La sauvegarde existe avant le métajeu complet afin d'empêcher une architecture
|
||||
reposant sur des nœuds sérialisés.
|
||||
|
||||
Contenu V1 :
|
||||
|
||||
- version du format ;
|
||||
- ID de campagne et date technique non utilisée par le gameplay ;
|
||||
- contrat actif ou terminé ;
|
||||
- argent ;
|
||||
- améliorations acquises et installées ;
|
||||
- preuves principales sécurisées ;
|
||||
- dernier résultat de plongée ;
|
||||
- réglages joueur séparés de la campagne.
|
||||
|
||||
La position arbitraire du sous-marin, les particules, les collisions et le
|
||||
maillage sonar dynamique ne sont pas sauvegardés dans cette verticale.
|
||||
|
||||
Procédure : sérialiser dans un fichier temporaire, relire et valider, puis
|
||||
remplacer atomiquement la sauvegarde précédente. Conserver une fixture V1 et un
|
||||
test de round-trip dès la première implémentation.
|
||||
|
||||
## 12. Stratégie de tests
|
||||
|
||||
### Unitaires
|
||||
|
||||
- consommation des trois ressources ;
|
||||
- seuils de profondeur et dégâts ;
|
||||
- estimation du retour ;
|
||||
- transitions terminales ;
|
||||
- validation et progression temporelle d'un scan ;
|
||||
- remplacement d'un seul scan précédent ;
|
||||
- classification des matériaux ;
|
||||
- ajout idempotent d'une preuve ;
|
||||
- conditions d'identification ;
|
||||
- capacité de cargaison ;
|
||||
- résultat de mission ;
|
||||
- vente, restitution et achat d'amélioration.
|
||||
|
||||
### Contrats
|
||||
|
||||
- IDs de contenu uniques ;
|
||||
- références résolues ;
|
||||
- contrat principal terminable ;
|
||||
- deux preuves valides pour l'épave ;
|
||||
- objet principal invendable ou récupérable selon la règle ;
|
||||
- effet d'amélioration reconnu ;
|
||||
- sauvegarde V1 aller-retour ;
|
||||
- rejet d'une version inconnue ;
|
||||
- textes visibles munis d'une clé de localisation.
|
||||
|
||||
### Intégration
|
||||
|
||||
- entrée abstraite vers mouvement et télémétrie ;
|
||||
- collision vers dégâts uniques ;
|
||||
- sonar monde vers `SonarScan` puis maillage ;
|
||||
- rotation du véhicule vers orientation de la carte ;
|
||||
- vue compacte et agrandie partageant la même texture ;
|
||||
- observation monde vers progression de mission ;
|
||||
- récupération vers inventaire ;
|
||||
- retour vers débriefing et sauvegarde ;
|
||||
- chargement d'une sauvegarde vers écran correct.
|
||||
|
||||
### Parcours automatisés
|
||||
|
||||
1. Succès nominal avec deux preuves et retour.
|
||||
2. Retour sans preuve principale : mission non terminée.
|
||||
3. Abandon volontaire : perte appliquée, campagne encore jouable.
|
||||
4. Batterie vide : pas de mort instantanée, oxygène continue.
|
||||
5. Sauvegarde après débriefing puis redémarrage.
|
||||
|
||||
Les parcours utilisent des adaptateurs déterministes, pas une simulation de
|
||||
plusieurs minutes en temps réel.
|
||||
|
||||
### Tests humains
|
||||
|
||||
- compréhension du pilotage sans aide orale ;
|
||||
- lecture du relief dans les deux tailles sonar ;
|
||||
- découverte de l'accès ;
|
||||
- compréhension des indices ;
|
||||
- anticipation du retour ;
|
||||
- désir de relancer une mission.
|
||||
|
||||
Chaque session note les interventions verbales du testeur. Une réussite obtenue
|
||||
après explication ne satisfait pas le critère d'autonomie.
|
||||
|
||||
## 13. Budgets techniques initiaux
|
||||
|
||||
| Budget | Cible de départ |
|
||||
|---|---:|
|
||||
| Framerate de validation locale | 60 FPS à 1080p |
|
||||
| Budget total par frame | 16,7 ms |
|
||||
| Sonar, coût CPU moyen pendant scan | ≤ 3 ms |
|
||||
| Sonar, pic CPU exceptionnel | ≤ 8 ms sur une frame |
|
||||
| Durée de chargement du site sur SSD | ≤ 3 s |
|
||||
| Écriture de sauvegarde | ≤ 100 ms hors blocage visible prolongé |
|
||||
| Barrière qualité locale | ≤ 60 s avant croissance du contenu |
|
||||
| Erreurs ou avertissements Godot acceptés | 0 |
|
||||
|
||||
Ces budgets sont des alarmes, pas des promesses commerciales. Une mesure doit
|
||||
indiquer la machine, le renderer, la résolution, le build et la scène.
|
||||
|
||||
Le renderer Forward+ reste la cible de production. Son adoption pour la
|
||||
verticale nécessite un ADR et un test immédiat sur les machines disponibles ;
|
||||
elle ne doit pas attendre la phase de finition graphique.
|
||||
|
||||
## 14. Tranches d'implémentation
|
||||
|
||||
### Tranche 0 — fondations exécutables
|
||||
|
||||
- Créer les sous-dossiers nécessaires, sans architecture vide exhaustive.
|
||||
- Définir horloge, IDs et premiers types de résultat.
|
||||
- Porter `DiveSession` comme règle pure avec tests.
|
||||
- Créer une composition minimale et un écran de diagnostic.
|
||||
|
||||
Sortie : état de plongée déterministe, testable sans scène, affiché par une scène
|
||||
de production qui ne dépend pas des POC.
|
||||
|
||||
### Tranche 1 — véhicule de production
|
||||
|
||||
- Réécrire le contrôleur derrière `VehicleCommand` et `VehicleTelemetry`.
|
||||
- Reproduire les sensations validées du POC A à partir de sa baseline.
|
||||
- Intégrer caméra intérieure et hublot.
|
||||
- Ajouter les tests de mouvement et de dégâts prioritaires.
|
||||
|
||||
Sortie : parcours de pilotage court avec ressources et retour immédiat lisible.
|
||||
|
||||
### Tranche 2 — sonar de production
|
||||
|
||||
- Définir `SonarSample` et `SonarScan`.
|
||||
- Séparer acquisition, reconstruction et présentation.
|
||||
- Reproduire la bathymétrie validée sans importer le POC B.
|
||||
- Mesurer le coût et passer à une mise à jour incrémentale.
|
||||
|
||||
Sortie : relief inconnu révélé manuellement, lisible dans les deux vues, avec
|
||||
rotation et remplacement d'un relevé.
|
||||
|
||||
### Tranche 3 — site et découverte
|
||||
|
||||
- Construire le terrain graybox et l'épave contemporaine.
|
||||
- Ajouter une entrée masquée simple, sans surplomb complexe.
|
||||
- Définir deux preuves et une anomalie secondaire.
|
||||
- Organiser le premier playtest de recherche.
|
||||
|
||||
Sortie : 8 testeurs sur 10 trouvent l'épave dans la fenêtre cible ou une porte de
|
||||
décision est déclenchée.
|
||||
|
||||
### Tranche 4 — interaction et retour
|
||||
|
||||
- Ajouter une interaction d'ouverture bornée.
|
||||
- Ajouter la caisse, le panier et l'objet principal.
|
||||
- Ajouter zone de retour, succès, abandon et perte.
|
||||
- Automatiser les parcours nominaux et d'échec.
|
||||
|
||||
Sortie : boucle de plongée complète sans métajeu.
|
||||
|
||||
### Tranche 5 — contrat, économie et sauvegarde
|
||||
|
||||
- Ajouter briefing, fiche, débriefing et atelier.
|
||||
- Ajouter une vente/restitution et une amélioration.
|
||||
- Écrire Save V1 et ses tests de contrat.
|
||||
|
||||
Sortie : boucle verticale complète et rejouable après redémarrage.
|
||||
|
||||
### Tranche 6 — présentation et validation
|
||||
|
||||
- Remplacer les éléments graybox nécessaires à la compréhension.
|
||||
- Ajouter audio moteur, sonar, alarmes et ambiance.
|
||||
- Ajouter réglages d'accessibilité retenus.
|
||||
- Profiler, tester sur trois OS et conduire le playtest final.
|
||||
|
||||
Sortie : décision documentée de poursuivre, corriger ou réduire le projet.
|
||||
|
||||
## 15. Risques et portes de décision
|
||||
|
||||
| Risque | Détection précoce | Réponse prévue |
|
||||
|---|---|---|
|
||||
| Sensations perdues pendant la réécriture | test véhicule dès tranche 1 | comparer aux mesures POC A, ajuster avant sonar |
|
||||
| Sonar lisible seul mais confus en mission | playtest tranche 3 | réduire relief parasite ou resserrer la zone probable |
|
||||
| Ouverture impossible à représenter | site graybox dédié | ajouter surfaces locales ; ne pas revenir aux voxels globaux |
|
||||
| États dupliqués entre monde et HUD | tests de propriétaire et snapshots | supprimer la copie, rétablir un flux unidirectionnel |
|
||||
| Scènes fortement couplées | contrôle d'architecture | déplacer l'assemblage vers `composition` |
|
||||
| Sauvegarde conçue trop tard | Save V1 tranche 5 au plus tard | bloquer le métajeu tant que le round-trip échoue |
|
||||
| Contenu lent à produire | mesure sur l'épave contemporaine | réduire preuves et interactions avant d'ajouter une épave |
|
||||
| Performance du maillage sonar | profil tranche 2 | buffers incrémentaux, fréquence bornée ou travail distribué |
|
||||
| Palette inaccessible | tests contraste/daltonisme | palette alternative et indices de forme |
|
||||
| Portée verticale excessive | revue à chaque tranche | retirer une fonctionnalité de coût comparable |
|
||||
|
||||
Une porte de décision produit une conclusion écrite. Elle ne devient pas une
|
||||
suite indéfinie de corrections sans critère de sortie.
|
||||
|
||||
## 16. Décisions à formaliser après validation de ce cadrage
|
||||
|
||||
Une fois ce document approuvé, créer des ADR séparés pour :
|
||||
|
||||
1. le renderer de production de la verticale ;
|
||||
2. les contrats `VehicleTelemetry`, `DiveSnapshot` et `SonarScan` ;
|
||||
3. la sauvegarde V1 et sa stratégie atomique ;
|
||||
4. l'absence initiale d'autoload de gameplay ;
|
||||
5. le modèle hybride retenu si le site exige une surface non bathymétrique.
|
||||
|
||||
Les noms de classes peuvent évoluer pendant la tranche 0. Les responsabilités,
|
||||
les propriétaires et les directions de dépendance ne changent qu'avec un ADR.
|
||||
|
||||
## 17. Première action après approbation
|
||||
|
||||
La première implémentation ne sera ni le sous-marin ni le sonar. Elle créera une
|
||||
tranche verticale minuscule :
|
||||
|
||||
1. `DiveSession` pur avec horloge injectée ;
|
||||
2. `VehicleTelemetry` minimal fourni par un faux adaptateur ;
|
||||
3. `DiveSnapshot` affiché dans une scène de diagnostic ;
|
||||
4. tests de consommation, profondeur et état terminal ;
|
||||
5. ajout de cette suite à `scripts/quality_gate.sh`.
|
||||
|
||||
Cette tranche prouvera le chemin complet domaine → application → présentation
|
||||
et la discipline de tests avant de porter un comportement complexe.
|
||||
Reference in new issue
Block a user