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)
|
||||
|
|
||||
|
|
||||
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 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue