Remove temp plan file, normalize GDD whitespace

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Samuel Bouchet 2026-04-11 11:42:07 +02:00
parent 84ab0a1d0f
commit 358ab48d59
2 changed files with 30 additions and 137 deletions

View file

@ -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é

View file

@ -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) OBSERVER la situation (productions, demandes, terrain, pieces disponibles)
| |
PLACER des pieces sur le plateau (point de depart + point d'arrivee) PLACER des pieces sur le plateau (point de depart + point d'arrivee)
| |
LANCER la simulation — les pieces font leurs allers-retours, 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** : **Exemple** :
``` ```
Tour (colis) ─adjacent─ case vide ─adjacent─ Cavalier (vide) 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). 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 . . # . . . 3 . . # . . .
2 . . . . . . 2 . . . . . .
1 [S1] . . . . [S2] Scierie (Bois) 1 [S1] . . . . [S2] Scierie (Bois)
Carriere (Pierre) Carriere (Pierre)
a b c d e f a b c d e f
``` ```
- Plateau : **6x6** - Plateau : **6x6**
@ -647,7 +647,7 @@ Le Cavalier saute le mur en L. Il peut connecter les deux cotes du plateau la ou
2 . . . . # . # . 2 . . . . # . # .
1 [S1] . . . # . . [D2] Forge — 3 Pierre en 50 coups 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** - Plateau : **8x6**
@ -736,29 +736,29 @@ Le prototype vise la lisibilite.
``` ```
Chessistics/ Chessistics/
scenes/ scenes/
Main.tscn Main.tscn
Board/ Board/
Board.tscn — Le damier Board.tscn — Le damier
Cell.tscn — Une case Cell.tscn — Une case
Pieces/ Pieces/
Piece.tscn — Scene piece (silhouette + cube cargaison) Piece.tscn — Scene piece (silhouette + cube cargaison)
TrajectView.tscn — Trait visuel du trajet (Line2D) TrajectView.tscn — Trait visuel du trajet (Line2D)
UI/ UI/
ObjectivePanel.tscn — Objectifs + stock de pieces ObjectivePanel.tscn — Objectifs + stock de pieces
DetailPanel.tscn — Detail piece selectionnee DetailPanel.tscn — Detail piece selectionnee
ControlBar.tscn — Play / pause / stop / vitesse ControlBar.tscn — Play / pause / stop / vitesse
MetricsOverlay.tscn — Resultats post-victoire MetricsOverlay.tscn — Resultats post-victoire
LevelSelect.tscn — Selection de niveau LevelSelect.tscn — Selection de niveau
scripts/ scripts/
Core/ Core/
Board.cs — Grille, cases, adjacence Board.cs — Grille, cases, adjacence
Cell.cs — Type de case, contenu Cell.cs — Type de case, contenu
Piece.cs — Type, statut, mouvement, cargaison Piece.cs — Type, statut, mouvement, cargaison
PieceType.cs — Enum + regles de mouvement + statut social PieceType.cs — Enum + regles de mouvement + statut social
TransferResolver.cs — Logique de transfert (adjacence, priorite, statut) TransferResolver.cs — Logique de transfert (adjacence, priorite, statut)
Executor.cs — Moteur de simulation (coups, collisions, transferts) Executor.cs — Moteur de simulation (coups, collisions, transferts)
Data/ Data/
Level.cs — Definition d'un niveau Level.cs — Definition d'un niveau
LevelLoader.cs — Chargement JSON LevelLoader.cs — Chargement JSON
UI/ UI/
PiecePlacer.cs — Logique du placement 2 clics PiecePlacer.cs — Logique du placement 2 clics
@ -781,14 +781,14 @@ Chessistics/
"width": 4, "width": 4,
"height": 4, "height": 4,
"productions": [ "productions": [
{ "x": 0, "y": 0, "name": "Scierie", "cargo": "wood", "interval": 2 } { "x": 0, "y": 0, "name": "Scierie", "cargo": "wood", "interval": 2 }
], ],
"demands": [ "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": [], "walls": [],
"pieces": [ "pieces": [
{ "type": "rook", "level": 2, "count": 3 } { "type": "rook", "level": 2, "count": 3 }
] ]
} }
``` ```