OlivierandClaude Opus 5.5 682e1f18e5 perf(sites): validate the site once and hand collision the field array
DiveSite.configure() builds the height field once (TerrainHeightField
validates the data) instead of running the definition validation and
then the field construction again; the composition root relies on the
error returned by configure(). The collision shape takes the field's
row-major elevations directly instead of copying 263k cells one by one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 20:52:04 +02:00
2026-08-07 13:31:21 +02:00
2026-08-07 13:31:21 +02:00
2026-10-06 08:23:48 +02:00

Ransom’s Wake

La première tranche de pilotage de la verticale est désormais la scène principale. Nouvelle partie ouvre un court parcours sous-marin en vue cockpit : le clavier pilote une coque inertielle, la souris déplace seulement le regard et les snapshots du domaine alimentent les instruments physiques à 60 Hz.

Les POC A et B restent disponibles comme références jetables ; aucun code de production sous game/ n'en dépend.

Fondations de production

  • Renderer Forward+ unique.
  • Règles de plongée résolues selon améliorations, difficulté et accessibilité.
  • Oxygène, batterie, coque, pression, alertes et éjection possédés par DiveSession.
  • Contrats séparés pour tick, télémétrie, collisions, outils et retour.
  • DiveUpdate cohérent composé d'un snapshot et d'événements typés.
  • Acteur sous-marin de production derrière des contrats de commande et de télémétrie typés.
  • Habitacle 3D solidaire de la coque : hublot à cloison annulaire bombée, consoles, commandes, éclairage, structure de coque renforcée, conduites, jauges analogiques graduées, tableau d'instruments structuré et emplacement réservé au sonar.
  • Instruments physiques à valeurs réelles ; le HUD reste réservé aux alertes, à l'éjection et aux états terminaux.
  • Pause qui suspend les ticks, confirmations de sortie et premier remappage avec détection des conflits.
  • Première boucle sonar de production : acquisition bathymétrique typée, relief révélé progressivement et texture unique partagée entre cockpit et grande vue.

La tranche sonar reste en cours : la calibration face au faisceau frontal et la décision d'acquisition autoritaire ne sont pas encore terminées.

Prototypes validés

Le POC A validé couvre le pilotage et la survie. Le POC B validé couvre un sonar manuel reconstruisant progressivement une carte bathymétrique 3D continue.

POC A — périmètre validé

  • Pilotage 3D inertiel depuis l'habitacle, derrière un hublot circulaire.
  • Oxygène consommé en continu.
  • Batterie consommée uniquement sous propulsion.
  • Profondeur nominale, zone critique et rupture de coque.
  • Dégâts de collision.
  • Alarmes visuelles et sonores.
  • Estimation du coût de retour.
  • Éjection volontaire.
  • Parcours whitebox en trois étapes.

Le sonar, les épaves, le commerce, la narration et les sauvegardes de campagne sont volontairement absents.

POC B — périmètre validé

  • Zone de calibration avec fond sculpté, passage et objet métallique.
  • Scan manuel de 2,5 secondes, révélé du proche vers le lointain.
  • Surface bathymétrique continue, ombrée et colorée selon l'altitude.
  • Portée de 95 mètres sur une ouverture de 76°.
  • Petit écran de cockpit et grande vue partageant le même rendu.
  • Ancien scan remplacé progressivement par le nouveau.

Prérequis

  • Godot 4.7.2.

Lancer

Depuis le dossier du projet :

godot --editor --path .

Ou lancer directement la fondation de production :

godot --path .

Pour relancer les POC validés :

godot --path . --scene res://scenes/poc_a.tscn
godot --path . --scene res://scenes/poc_b.tscn

Contrôles de la tranche de production

Touche Action
W / S Avancer / reculer
A / D Tourner à gauche / droite
Espace / Ctrl Monter / descendre
Maj Forte poussée
Souris Déplacer le regard dans le hublot uniquement
X maintenu Éjection volontaire
R Recentrer le regard
F Émettre un relevé sonar
Tab Agrandir / réduire le sonar
Échap Pause / retour

Les commandes propres aux POC restent décrites dans leurs documents respectifs.

Tests

Barrière qualité complète obligatoire :

bash scripts/quality_gate.sh

Elle vérifie les frontières d'architecture, charge tous les scripts et scènes, puis exécute les tests unitaires et d'intégration.

Le workflow Gitea Actions .gitea/workflows/quality-gate.yml exécute cette même commande sur chaque push vers main, chaque pull request visant main et à la demande. Il utilise le runner natif portant le label deploy-production, avec bash, curl, git, node, rg, sha512sum et unzip installés. Godot 4.7.2 est vérifié puis conservé dans le cache du compte runner afin d'éviter un téléchargement à chaque exécution. Après sa première exécution réussie, le contrôle Quality Gate doit être rendu obligatoire dans la protection de la branche main.

Commandes individuelles pour diagnostic :

godot --headless --path . --script res://tests/run_tests.gd
godot --headless --path . --script res://tests/unit/run_dive_foundation_tests.gd
godot --headless --path . --script res://tests/unit/run_vehicle_application_tests.gd
godot --headless --path . --script res://tests/integration/run_vertical_slice_foundation.gd

Test d'intégration du POC B :

godot --headless --path . --script res://tests/run_poc_b_integration.gd

Documents

  • Plan général : docs/GAME_DESIGN_PLAN.md
  • Objectifs et protocole du POC : docs/POC_A.md
  • Bilan technique du POC A : docs/POC_A_TECHNICAL_BASELINE.md
  • Objectifs et protocole du POC B : docs/POC_B.md
  • Bilan technique du POC B : docs/POC_B_TECHNICAL_BASELINE.md
  • Barrières techniques de production : docs/ENGINEERING_GUARDRAILS.md
  • Cadrage technique de la verticale : docs/VERTICAL_SLICE_TECHNICAL_PLAN.md
  • Design system UI de la verticale : docs/UI_DESIGN_SYSTEM.md
  • Propositions visuelles UI : Design-Proposal/README.md
  • Décisions d'architecture : docs/adr/
S
Description
No description provided
Readme
158 MiB
0 Stars 1 Watchers 0 Forks
Languages
GDScript 63%
HTML 32.5%
Python 2.1%
Shell 1.6%
GDShader 0.8%