Remove temp plan file, normalize GDD whitespace
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
84ab0a1d0f
commit
358ab48d59
2 changed files with 30 additions and 137 deletions
107
PLAN_juice.md
107
PLAN_juice.md
|
|
@ -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é
|
|
||||||
|
|
@ -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 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue