From 358ab48d596406b8bc540717e0cb6b15a327f558 Mon Sep 17 00:00:00 2001 From: Samuel Bouchet Date: Sat, 11 Apr 2026 11:42:07 +0200 Subject: [PATCH] Remove temp plan file, normalize GDD whitespace Co-Authored-By: Claude Opus 4.6 (1M context) --- PLAN_juice.md | 107 ------------------------------------------ docs/GDD_prototype.md | 60 +++++++++++------------ 2 files changed, 30 insertions(+), 137 deletions(-) delete mode 100644 PLAN_juice.md diff --git a/PLAN_juice.md b/PLAN_juice.md deleted file mode 100644 index 746155f..0000000 --- a/PLAN_juice.md +++ /dev/null @@ -1,107 +0,0 @@ -# Plan: Juice Pass - Animations, Sons, Visuels - -## Context - -Le jeu fonctionne mais manque de "juice" — les interactions sont plates, pas de sons, les animations sont minimales. L'objectif est de rendre chaque action satisfaisante visuellement et auditivement. - -## Principes - -- Pas de dépendance externe (pas de fichiers audio .wav/.ogg) — sons générés procéduralement via `AudioStreamGenerator` ou les nœuds Godot (`AudioStreamPlayer` avec des tones synthétiques) -- Tout est fait en code (pas de .tscn supplémentaires) -- Les effets sont subtils, jamais bloquants - -## Changements par catégorie - -### 1. Pièces — Vie et feedback (PieceView.cs) - -- **Bounce à la pose** : quand une pièce est placée, scale 0→1.2→1.0 (0.2s, ease back-out) -- **Pulse quand porte un colis** : le cargo indicator pulse doucement (scale 1.0↔1.2, loop) -- **Ombre sous la pièce** : un cercle sombre semi-transparent (alpha 0.15) légèrement décalé en bas -- **Lettre de la pièce** : utiliser le nom complet court au lieu de la lettre seule pour plus de clarté - -### 2. Trajectoires (TrajectView.cs) - -- **Flèche directionnelle** : ajouter un triangle au bout de la ligne pour montrer le sens -- **Pulse pendant la simulation** : la ligne pulse (alpha oscille 0.3↔0.6) quand la sim tourne -- **Couleur par type de pièce** : la trajectoire reprend la couleur de la pièce - -### 3. Animations de tour (EventAnimator.cs) - -- **Production** : particules (petits carrés colorés) qui jaillissent de la cellule de production + scale bounce de la cellule -- **Transfert** : le cargo slide laisse une traînée (2-3 carrés plus petits qui suivent avec délai) + ease back-out pour un effet de "whip" -- **Mouvement** : les pièces se soulèvent légèrement (scale 1.0→1.1→1.0 pendant le déplacement) pour donner l'impression de vol -- **Destruction** : la pièce se réduit (scale→0) + rotation + particules rouges éclatantes au lieu d'un simple flash -- **Victoire** : pluie de confettis dorés sur tout l'écran - -### 4. Cellules (CellView.cs) - -- **Hover amélioré** : la cellule survolée fait un léger scale-up (1.0→1.03) + outline pulse -- **Highlight de placement** : les cellules valides pulsent doucement (alpha oscille) - -### 5. UI — Contrôles et panneaux - -**ControlBar.cs** : -- Boutons avec style (fond coloré, coins arrondis) au lieu du style par défaut Godot -- Boutons disabled grayed out visuellement - -**MetricsOverlay.cs** : -- Apparition avec fade-in + scale (0.8→1.0) au lieu d'un Visible=true brutal -- Les métriques apparaissent une par une avec un petit délai - -**LevelSelectScreen.cs** : -- Cards hover : légère élévation (border-color plus clair) + scale 1.0→1.02 - -**ObjectivePanel.cs** : -- Flash vert sur la barre de progression quand une livraison arrive -- Animation de la jauge (tween de la valeur plutôt qu'un saut) - -### 6. Sons procéduraux (nouveau: SfxManager.cs) - -Un nœud singleton qui génère des bips synthétiques via `AudioStreamPlayer` : -- **Placement** : bip court montant (C5, 0.08s) -- **Production** : bip grave doux (C3, 0.1s) -- **Transfert** : swoosh (bruit blanc filtré, 0.15s) -- **Livraison à demande** : ding satisfaisant (C5+E5 chord, 0.2s) -- **Mouvement** : léger whoosh (bruit blanc très court, 0.05s) -- **Destruction** : crunch descendant (C4→C2, 0.15s) -- **Victoire** : arpège majeur montant (C4-E4-G4-C5, 0.5s) -- **Clic UI** : tick léger (0.02s) - -Implémenté avec `AudioStreamGenerator` pour les tones, buffer rempli avec des sinusoïdes + enveloppe ADSR simple. - -### 7. Transitions (Main.cs) - -- **Fade in/out** entre level select et gameplay : ColorRect noir plein écran, alpha 1→0 (0.4s) -- **Camera** : zoom léger quand la simulation démarre (1.0→0.95→1.0) - -## Fichiers à modifier - -| Fichier | Changements | -|---------|-------------| -| `Scripts/Pieces/PieceView.cs` | Ombre, bounce, cargo pulse | -| `Scripts/Pieces/TrajectView.cs` | Flèche, pulse, couleur | -| `Scripts/Presentation/EventAnimator.cs` | Particules, trails, destruction améliorée, confettis victoire | -| `Scripts/Board/CellView.cs` | Hover scale, highlight pulse | -| `Scripts/UI/ControlBar.cs` | Boutons stylés | -| `Scripts/UI/MetricsOverlay.cs` | Fade-in, métriques séquentielles | -| `Scripts/UI/LevelSelectScreen.cs` | Card hover effects | -| `Scripts/UI/ObjectivePanel.cs` | Flash vert, tween jauge | -| `Scripts/Main.cs` | Fade transition, camera juice | -| `Scripts/Presentation/SfxManager.cs` | **NOUVEAU** — sons procéduraux | - -## Ordre d'implémentation - -1. SfxManager (fondation audio) -2. PieceView (bounce, ombre, cargo pulse) -3. EventAnimator (particules, trails, destruction, confettis) -4. CellView (hover, highlight pulse) -5. TrajectView (flèche, pulse) -6. UI polish (ControlBar, MetricsOverlay, ObjectivePanel, LevelSelectScreen) -7. Transitions (Main.cs fade, camera) - -## Vérification - -- Lancer le jeu, vérifier chaque animation visuellement -- S'assurer que les sons ne sont pas trop forts ou gênants -- Vérifier que les animations n'interfèrent pas avec le gameplay (pas de blocage) -- `dotnet test` pour s'assurer que l'engine n'est pas impacté diff --git a/docs/GDD_prototype.md b/docs/GDD_prototype.md index 4c23f3a..fff722a 100644 --- a/docs/GDD_prototype.md +++ b/docs/GDD_prototype.md @@ -17,7 +17,7 @@ Chaque piece est un **maillon de convoyeur**. La strategie est dans la compositi ``` OBSERVER la situation (productions, demandes, terrain, pieces disponibles) - | + | PLACER des pieces sur le plateau (point de depart + point d'arrivee) | LANCER la simulation — les pieces font leurs allers-retours, @@ -222,7 +222,7 @@ Cette alternance empeche un biais permanent vers une direction et cree des patte **Exemple** : ``` Tour (colis) ─adjacent─ case vide ─adjacent─ Cavalier (vide) - ─adjacent─ Tour (vide) + ─adjacent─ Tour (vide) ``` La Tour avec colis donne. Deux receveurs possibles : Cavalier (3) et Tour (5). La Tour recoit (statut 5 > 3). @@ -565,8 +565,8 @@ Le Fou peut couvrir des trajets diagonaux que les Tours ne peuvent pas. Pour att 3 . . # . . . 2 . . . . . . 1 [S1] . . . . [S2] Scierie (Bois) - Carriere (Pierre) - a b c d e f + Carriere (Pierre) + a b c d e f ``` - Plateau : **6x6** @@ -647,7 +647,7 @@ Le Cavalier saute le mur en L. Il peut connecter les deux cotes du plateau la ou 2 . . . . # . # . 1 [S1] . . . # . . [D2] Forge — 3 Pierre en 50 coups - a b c d e f g h + a b c d e f g h ``` - Plateau : **8x6** @@ -736,29 +736,29 @@ Le prototype vise la lisibilite. ``` Chessistics/ scenes/ - Main.tscn - Board/ - Board.tscn — Le damier - Cell.tscn — Une case - Pieces/ - Piece.tscn — Scene piece (silhouette + cube cargaison) - TrajectView.tscn — Trait visuel du trajet (Line2D) - UI/ - ObjectivePanel.tscn — Objectifs + stock de pieces - DetailPanel.tscn — Detail piece selectionnee - ControlBar.tscn — Play / pause / stop / vitesse - MetricsOverlay.tscn — Resultats post-victoire - LevelSelect.tscn — Selection de niveau + Main.tscn + Board/ + Board.tscn — Le damier + Cell.tscn — Une case + Pieces/ + Piece.tscn — Scene piece (silhouette + cube cargaison) + TrajectView.tscn — Trait visuel du trajet (Line2D) + UI/ + ObjectivePanel.tscn — Objectifs + stock de pieces + DetailPanel.tscn — Detail piece selectionnee + ControlBar.tscn — Play / pause / stop / vitesse + MetricsOverlay.tscn — Resultats post-victoire + LevelSelect.tscn — Selection de niveau scripts/ - Core/ - Board.cs — Grille, cases, adjacence - Cell.cs — Type de case, contenu - Piece.cs — Type, statut, mouvement, cargaison - PieceType.cs — Enum + regles de mouvement + statut social - TransferResolver.cs — Logique de transfert (adjacence, priorite, statut) - Executor.cs — Moteur de simulation (coups, collisions, transferts) - Data/ - Level.cs — Definition d'un niveau + Core/ + Board.cs — Grille, cases, adjacence + Cell.cs — Type de case, contenu + Piece.cs — Type, statut, mouvement, cargaison + PieceType.cs — Enum + regles de mouvement + statut social + TransferResolver.cs — Logique de transfert (adjacence, priorite, statut) + Executor.cs — Moteur de simulation (coups, collisions, transferts) + Data/ + Level.cs — Definition d'un niveau LevelLoader.cs — Chargement JSON UI/ PiecePlacer.cs — Logique du placement 2 clics @@ -781,14 +781,14 @@ Chessistics/ "width": 4, "height": 4, "productions": [ - { "x": 0, "y": 0, "name": "Scierie", "cargo": "wood", "interval": 2 } + { "x": 0, "y": 0, "name": "Scierie", "cargo": "wood", "interval": 2 } ], "demands": [ - { "x": 3, "y": 0, "name": "Depot Royal", "cargo": "wood", "amount": 3, "deadline": 30 } + { "x": 3, "y": 0, "name": "Depot Royal", "cargo": "wood", "amount": 3, "deadline": 30 } ], "walls": [], "pieces": [ - { "type": "rook", "level": 2, "count": 3 } + { "type": "rook", "level": 2, "count": 3 } ] } ```