Chessistics/PLAN_leveldesign.md

158 lines
5.5 KiB
Markdown
Raw Normal View History

# Plan : Level Design - Batiments de Transformation
## Concept
Les batiments de **transformation** consomment une ressource en entree et produisent une ressource differente en sortie. Le joueur doit construire des chaines logistiques multi-etapes : extraction → transformation → livraison.
Exemple : Scierie (produit bois) → Forge (consomme bois, produit outils) → Caserne (demande outils).
## Modele Engine
### Nouveau type de cellule : Transformer
```
CellType.Transformer
```
Un `TransformerDef` combine une demande (input) et une production (output) :
```csharp
public record TransformerDef(
Coords Position,
string Name,
CargoType InputCargo, // ce qu'il consomme
int InputRequired, // nb d'unites avant conversion
CargoType OutputCargo, // ce qu'il produit
int OutputAmount // nb d'unites produites par cycle
);
```
### Logique de production
Chaque tour, le `TransferResolver` livre du cargo au transformateur comme a une demande normale. Quand le buffer d'entree atteint `InputRequired`, le transformateur :
1. Vide son buffer d'entree
2. Remplit son buffer de sortie avec `OutputAmount` unites de `OutputCargo`
3. Le buffer de sortie est distribue aux pieces adjacentes (comme une production classique)
Cela cree un rythme : accumulation → conversion → distribution.
### Changements au TerrainPatch
Ajouter le type `"transformer"` dans le JSON :
```json
{
"col": 3, "row": 2,
"type": "transformer",
"transformer": {
"name": "Forge",
"inputCargo": "wood",
"inputRequired": 2,
"outputCargo": "tools",
"outputAmount": 1
}
}
```
### Nouveaux types de cargo
Ajouter au `CargoType` enum :
- `Tools` (outils) — bois transforme
- `Arms` (armes) — pierre transformee
- `Gold` (or) — ressource rare de fin de campagne
## Evolution de la campagne (10 missions)
### Mission 1 : Premier Convoi (4x4)
- **Deverrouille** : Pion
- **Batiments** : Scierie → Depot Royal
- **Objectif** : livrer 3 bois — apprendre le placement de base
### Mission 2 : Forger les Tours (6x6)
- **Deverrouille** : Tour
- **Batiments** : +Carriere, +Caserne (bois), +Forge (pierre)
- **Objectif** : livrer bois a la caserne ET pierre a la forge
- **Defi** : gerer deux routes independantes
### Mission 3 : Le Col (6x6)
- **Deverrouille** : Cavalier
- **Batiments** : mur bloquant + Depot (bois)
- **Objectif** : traverser les murs avec des cavaliers
- **Les demands precedentes restent actives**
### Mission 4 : Le Carrefour (8x8)
- **Deverrouille** : Fou
- **Batiments** : +Chateau (bois), +Forge Royale (pierre), murs
- **Objectif** : routes diagonales avec les fous
### Mission 5 : La Forge (8x8) -- TRANSFORMATION
- **Deverrouille** : aucun (nouveau type de cargo : Outils)
- **Batiments** : Forge *transformee* en transformateur (bois → outils)
- **Objectif** : livrer des outils a un nouveau batiment (Armurerie)
- **Defi** : la route bois existante doit continuer, PLUS une branche vers la forge qui produit des outils
### Mission 6 : La Dame Blanche (10x10)
- **Deverrouille** : Dame
- **Batiments** : +Scierie Nord, +Grand Chantier (bois), +Arsenal (pierre)
- **Objectif** : routes longue distance avec la dame
### Mission 7 : L'Armurerie (10x10) -- TRANSFORMATION
- **Nouveau cargo** : Armes
- **Batiments** : Armurerie (transforme pierre → armes)
- **Objectif** : livrer des armes a une Garnison
### Mission 8 : Le Comptoir (12x12)
- **Batiments** : Comptoir (transforme outils → or)
- **Objectif** : livrer de l'or au Tresor Royal
- **Defi** : chaine a 3 etapes : bois → outils → or
### Mission 9 : L'Expansion Finale (14x14)
- **Batiments** : multiples transformateurs, murs complexes
- **Objectif** : maintenir toutes les chaines tout en s'etendant
- **Defi** : gestion de la congestion (risque de collisions)
### Mission 10 : Le Couronnement (14x14)
- **Batiments** : Cathedrale (demande or + armes + outils)
- **Objectif** : livrer les 3 types de cargo transforme
- **Defi** : orchestrer l'ensemble des chaines logistiques simultanement
## Demands recurrentes (futur)
Pour que le joueur doive "preserver ses automatisations", les demands pourraient devenir recurrentes :
- Un batiment de demande **consomme** N unites par tour
- S'il n'est plus approvisionne, il passe en etat "en penurie"
- Condition de mission : **aucun** batiment en penurie pendant X tours consecutifs
Cela force le joueur a maintenir ses routes existantes quand le terrain s'agrandit, au lieu de tout reconstruire.
## Implementation par phases
### Phase 1 : Modele Transformer
- Ajouter `CellType.Transformer` et `TransformerDef`
- Ajouter `TransformerState` avec buffers input/output
- Integrer dans `BoardState`
### Phase 2 : Logique de conversion
- Modifier `TurnExecutor` : sous-phase "transformation" entre production et transferts
- Le transformateur agit comme une demande (recoit) ET une production (emet)
### Phase 3 : Nouveaux cargos
- Ajouter `Tools`, `Arms`, `Gold` a `CargoType`
- Couleurs visuelles pour chaque cargo
- Mise a jour du `CampaignLoader` pour parser les transformateurs
### Phase 4 : Visuels
- Couleur de cellule pour les transformateurs (ex: orange cuivre)
- Animation de conversion (flash input → flash output)
- Icones de cargo dans les pieces
### Phase 5 : Missions 5-10
- Ecrire les donnees JSON des missions 5 a 10
- Tester la solvabilite de chaque mission
- Equilibrer les quantites (input/output ratios)
### Phase 6 (optionnel) : Demands recurrentes
- Modifier `DemandState` pour tracker la consommation par tour
- Ajouter un flag "en penurie"
- Condition de victoire : pas de penurie pendant N tours