Chessistics/docs/GDD_prototype.md

701 lines
28 KiB
Markdown
Raw Normal View History

# Chessistics — Game Design Document (Prototype)
> "Et si la logistique etait contrainte par les echecs ?"
**Version** : 0.3 — Prototype
**Scope** : 3 niveaux jouables, mecaniques de base uniquement
---
## 1. Vision
Chessistics est un jeu de logistique ou le joueur construit des chaines de transport sur un damier. Les unites de transport sont des pieces d'echecs : chacune fait un unique aller-retour entre deux cases, selon ses regles de mouvement. Le joueur assemble des pieces bout a bout pour former des convois qui acheminent des cargaisons des productions vers les demandes.
Chaque piece est un **maillon de convoyeur**. La strategie est dans la composition des chaines : quelles pieces, ou, dans quel ordre. Les contraintes de mouvement des echecs creent des puzzles de routage emergents — le joueur n'a pas a les "resoudre" explicitement, il developpe une intuition pour les forces de chaque piece.
**Core loop** :
```
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,
les colis se transmettent automatiquement entre pieces adjacentes
|
+---> Le debit est insuffisant ? Observer les goulets, reorganiser
+---> Le debit est atteint ? Optimiser ou niveau suivant
```
**Ce qui distingue Chessistics** :
- La logistique (macro) : le joueur compose des chaines, choisit sa flotte, gere l'espace
- Le puzzle chess (micro) : les contraintes de mouvement creent des enigmes de couverture et d'espacement emergentes
- Le systeme de transfert automatique + statut social elimine toute programmation — le joueur pense reseau, pas code
---
## 2. Le plateau
### 2.1 La grille
Le plateau est un damier avec des cases claires et sombres alternees. Chaque case est identifiee par des coordonnees (colonne, ligne) : a1, b2, etc.
**Taille par niveau** :
- Niveaux tutoriels : 4x4 a 6x6
- Niveaux standard (post-proto) : 8x8+
### 2.2 Types de cases
| Case | Visuel | Effet |
|------|--------|-------|
| **Case claire** | Carre clair du damier | Traversable normalement |
| **Case sombre** | Carre sombre du damier | Traversable (les Fous sont limites a une couleur) |
| **Mur** | Case barree, gris fonce | Bloque toutes les pieces sauf le Cavalier (qui saute) |
| **Production** | Icone ressource + nom (ex: "Scierie") | Produit M cargaisons tous les N coups (M=1 dans le proto, futur: 2-4). Le buffer est ecrase a chaque production — les cargaisons non recuperees sont perdues. Donne automatiquement aux pieces adjacentes disponibles. |
| **Demande** | Icone cible + nom (ex: "Depot") + jauge | Recoit la cargaison d'une piece adjacente qui arrive avec un colis compatible. Accepte toujours un colis du bon type, meme si l'objectif est deja atteint. |
### 2.3 Cargaison
Pour le prototype, deux types de cargaison (le niveau 3 en utilise deux, les niveaux 1-2 un seul) :
- **Bois** (icone buche, couleur brune)
- **Pierre** (icone bloc, couleur grise)
Une piece ne peut porter qu'**une cargaison a la fois**.
---
## 3. Les pieces
### 3.1 Concept fondamental : 1 piece = 1 maillon
Chaque piece fait un **unique mouvement** en aller-retour perpetuel entre deux cases :
```
Coup 1: [Depart] ═══► [Arrivee] (transporte le colis si elle en a un)
Coup 2: [Depart] ◄═══ [Arrivee] (revient a vide ou avec un colis)
Coup 3: [Depart] ═══► [Arrivee] (repart)
...a l'infini
```
Le joueur place une piece en choisissant :
1. Sa **case de depart**
2. Sa **case d'arrivee** (parmi les cases atteignables en 1 mouvement legal)
C'est tout. Pas de programmation, pas de route multi-etapes. La piece fait l'aller-retour automatiquement.
### 3.2 Pieces disponibles dans le prototype
3 types. Chaque piece a un **niveau** (I, II, III…) qui determine sa puissance relative au sein d'un meme type. Dans le prototype, toutes les pieces sont de niveau fixe — le systeme de niveaux sera exploite dans les versions futures.
3 types :
#### Tour (niveau II)
```
X
X
X X [Tour] X X
X
X
```
- Se deplace de **1 ou 2 cases** en ligne droite (horizontal ou vertical)
- Ne peut pas traverser les murs ni les autres pieces
- Statut social : **5**
#### Fou (niveau II)
```
X X
X X
[Fou]
X X
X X
```
- Se deplace de **1 ou 2 cases** en diagonale
- Ne peut atteindre que les cases de sa couleur de depart (parite)
- Ne peut pas traverser les murs ni les autres pieces
- Statut social : **3**
#### Cavalier
```
X X
X X
[Cav]
X X
X X
```
- Se deplace en **L** (2+1 ou 1+2 cases)
- **Saute par-dessus** les murs et les autres pieces
- Statut social : **3**
> A statut egal, la piece de **niveau le plus eleve** est consideree superieure (ex: Tour II > Tour I, Fou III > Cavalier II). En cas d'egalite parfaite, le departage se fait par **direction en sens horaire** depuis la piece qui donne (voir 4.3).
### 3.3 Occupation et collision
- Chaque piece **occupe sa case actuelle** (depart ou arrivee selon le coup)
- Une piece bloque le passage des autres pieces (sauf le Cavalier qui saute)
- Si deux pieces arrivent sur la meme case apres le mouvement, la piece de **statut le plus eleve** detruit l'autre. A statut egal, le **niveau** departage. A egalite parfaite (meme statut ET meme niveau), **destruction mutuelle**.
- La piece survivante reste sur la case avec sa cargaison intacte. La cargaison des pieces detruites est perdue.
- Les pieces detruites sont restaurees quand le joueur arrete la simulation (retour en mode edition).
---
## 4. Systeme de transfert
### 4.1 Le principe
Les colis se transmettent **automatiquement** entre entites adjacentes (4-connecte : haut, bas, gauche, droite). Le joueur ne gere pas les transferts — il gere l'espace.
Les transferts se produisent entre :
- **Production → Piece** : la production donne a une piece adjacente sans colis
- **Piece → Piece** : une piece avec colis donne a une piece adjacente sans colis
- **Piece → Demande** : une piece avec colis compatible donne a une demande adjacente
### 4.2 Quand le transfert a lieu
Un transfert se produit quand, a la **fin d'un coup** (une fois que toutes les pieces ont bouge) :
- Une entite avec colis et une entite sans colis (ou une demande) sont sur des **cases adjacentes** (4-connecte)
- Le colis est compatible (la demande accepte ce type de cargaison)
Le transfert est **instantane** : le colis passe d'une entite a l'autre entre deux coups.
### 4.3 Priorite et departage
Quand plusieurs transferts sont possibles au meme point, la priorite determine l'ordre :
**Chaine de priorite** : statut social (desc) → niveau de piece (desc) → direction en sens horaire.
**Regle de don** : parmi les pieces avec colis adjacentes a un meme receveur, celle de priorite la plus elevee donne en premier.
**Regle de reception** : parmi les pieces sans colis adjacentes a un meme donneur, celle de priorite la plus elevee recoit en premier.
```
Hierarchie de statut social (proto) :
Tour 5
Fou 3
Cavalier 3
```
**Departage par direction** (en y-up, sens horaire) :
- Coups pairs : priorite depuis 0° (droite) → droite, haut, gauche, bas
- Coups impairs : priorite depuis 180° (gauche) → gauche, bas, droite, haut
Cette alternance empeche un biais permanent vers une direction et cree des patterns de routage dynamiques.
**Exemple** :
```
Tour (colis) ─adjacent─ case vide ─adjacent─ Cavalier (vide)
─adjacent─ Tour (vide)
```
La Tour avec colis donne. Deux receveurs possibles : Cavalier (3) et Tour (5). La Tour recoit (statut 5 > 3).
### 4.4 Pourquoi c'est un outil de design
Le statut social n'est pas une regle abstraite — c'est un **outil de routage** pour le joueur :
- Aux croisements, le joueur choisit le TYPE de piece pour controler ou va le colis
- Une Tour "capte" un colis avant un Cavalier — le joueur met une Tour sur la route prioritaire
- Un Cavalier sur une route secondaire ne prend que les colis que personne d'autre ne veut
Le joueur n'ecrit pas de logique conditionnelle. Il **compose sa flotte** pour que le flux aille ou il veut.
### 4.5 Le puzzle d'espacement
Les pieces qui ne doivent PAS interagir doivent etre **espacees d'au moins 2 cases**. Sinon un transfert involontaire se produit.
```
PROBLEME — deux chaines trop proches, les colis se melangent :
──Tour A──► ◄──Tour B── (chaine 1 : bois)
──Tour C──► ◄──Tour D── (chaine 2 : pierre)
↕ adjacentes = transfert involontaire !
SOLUTION — espacer les chaines :
──Tour A──► ◄──Tour B── (chaine 1)
. . . . . . . . (1 case d'ecart)
──Tour C──► ◄──Tour D── (chaine 2)
```
Gerer l'espace sur le plateau pour eviter les interferences EST le puzzle. Le joueur doit router ses chaines en tenant compte des contraintes de mouvement (echecs) ET de l'espacement (logistique).
---
## 5. Deroulement d'un coup
### 5.1 Sequence d'un coup
A chaque coup, toutes les pieces jouent chaque etape **simultanement**, dans cet ordre :
```
1. PRODUCTION : les cases de production remplissent leur buffer
(M cargaisons, ecrase le buffer precedent — les restes sont perdus)
2. TRANSFERTS : tous les transferts automatiques se resolvent
(productions → pieces, pieces → pieces, pieces → demandes)
En respectant la chaine de priorite (statut → niveau → direction)
3. MOUVEMENT : toutes les pieces bougent simultanement
(chaque piece avance de Depart→Arrivee ou de Arrivee→Depart)
4. RESOLUTION DE COLLISION : si deux pieces sont sur la meme case,
la plus forte detruit les autres (voir 3.3)
```
### 5.2 Collisions
Quand deux pieces ou plus occupent la meme case apres le mouvement :
- La piece de **statut le plus eleve** survit, les autres sont **detruites**
- A statut egal, le **niveau** departage (niveau superieur survit)
- A egalite parfaite (meme statut ET meme niveau), **destruction mutuelle** (aucun survivant)
- La piece survivante conserve sa cargaison. Les cargaisons detruites sont perdues.
- La simulation **continue** (pas de pause automatique)
Les collisions deviennent un element strategique — le joueur doit anticiper les croisements de trajectoires et espacer ses chaines pour les eviter.
### 5.3 Condition de victoire
Le niveau est reussi quand **toutes les demandes** ont ete satisfaites selon leur objectif.
Chaque demande specifie : "recevoir N colis de type X en Y coups ou moins".
Exemple : "Le Depot Royal demande 3 livraisons de Bois en 30 coups."
Le compteur de coups tourne en temps reel. Le joueur voit sa progression.
---
## 6. Les metriques
A la completion d'un niveau, 3 metriques sont affichees :
| Metrique | Description | Ce que ca mesure |
|----------|-------------|------------------|
| **Pieces** | Nombre de pieces deployees | Economie de flotte |
| **Coups** | Nombre de coups pour atteindre l'objectif | Efficacite du reseau |
| **Espace** | Nombre de cases du plateau utilisees (occupees par une piece au moins 1 coup) | Compacite du reseau |
Chaque metrique a un **histogramme** montrant la distribution des solutions de tous les joueurs.
> **Proto** : histogrammes avec donnees fictives pour tester l'UI.
**Triangle d'optimisation** :
- Moins de pieces = chaines courtes = couverture limitee → plus de coups
- Moins de coups = pieces puissantes ou nombreuses → plus de pieces, plus d'espace
- Moins d'espace = chaines compactes = risque d'interferences → plus difficile a router
**Affichage en jeu** (pendant la simulation) :
```
Coup: 12/30 Depot Royal: 2/3 Bois ✓ Forge: 0/2 Pierre ✗
```
---
## 7. Interface utilisateur
### 7.1 Ecran de jeu — layout
Le plateau est le centre. L'interface est minimale.
```
+---------------------------------------------------------------+
| CHESSISTICS La Scierie Royale [≡] [?] [←] |
+---------------------------------------------------------------+
| | |
| | OBJECTIF |
| | Depot Royal |
| | 3x Bois / 30c |
| P L A T E A U | |
| (damier interactif) | ───────── |
| | |
| Les pieces et leurs trajets | PIECES |
| sont visibles sur le plateau | [Tour II] x3 |
| | [Fou II] x1 |
| | [Cavalier] x1 |
| | |
+---------------------------------------------------------------+
| [▶ PLAY] [⏩ x2] [⏸] [⏹ STOP] Coup: -- |
+---------------------------------------------------------------+
```
### 7.2 Placement d'une piece
Le flux de placement est en 2 clics :
1. Le joueur **selectionne un type de piece** dans le panneau de droite
2. Il **clique une case du plateau** → c'est le point de depart. Les cases d'arrivee possibles s'affichent en surbrillance.
3. Il **clique une case en surbrillance** → c'est le point d'arrivee. La piece est placee.
4. Un trait apparait entre depart et arrivee, montrant le trajet.
```
Placement d'une Tour II :
1. Clic sur (a1) 2. Cases atteignables 3. Clic sur (c1)
en surbrillance
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . [.][.] . . . . . .
[T] . . . [T][■][■] . [T]══════[·]
^ a1 a2 a1 c1
haut1 haut2 aussi
```
**Interactions** :
- **Clic sur une piece placee** → la selectionne, affiche son trajet, panneau de detail
- **Clic droit sur une piece** → la retire du plateau (retourne dans le stock)
- **Glisser une piece** → deplace son point de depart (recalcule les arrivees possibles)
### 7.3 Visualisation des trajets
Chaque piece placee affiche son trajet sur le plateau :
- **Trait** semi-transparent entre depart et arrivee (couleur unique par piece)
- **Fleches** indiquant le sens du mouvement
- La piece **oscille** visuellement entre ses deux cases pendant la simulation
Quand plusieurs chaines sont en place, le joueur voit le reseau complet :
```
[S]═══Tour A═══[·] [·]═══Tour B═══[·] [·]═══Tour C═══[D]
Scierie relais relais Depot
```
### 7.4 Panneau de detail (contextuel)
Quand une piece est selectionnee :
```
+---------------------------+
| TOUR A (Tour II) |
| Trajet: a1 ↔ c1 (2 cases)|
| Statut social: 5 |
| Porte: [Bois] |
| [Retirer] |
+---------------------------+
```
### 7.5 Phases de jeu
**Phase EDIT** (temps arrete)
- Placer, deplacer, retirer des pieces
- Pas de limite de temps
- Les trajets sont visibles comme des traits sur le plateau
**Phase EXEC** (simulation)
- Les pieces font leurs allers-retours simultanement
- Les colis se transmettent automatiquement aux points de contact
- Compteur de coups et progression des objectifs en temps reel
- Controles : pause, step-by-step, vitesse x1/x2/x4, stop (retour a EDIT)
- En cas de collision → pause auto, pieces en erreur surlignees
Le joueur peut arreter la simulation a tout moment, reorganiser, et relancer.
### 7.6 Feedback visuel
**Pieces** :
- Glissement fluide d'une case a l'autre (~0.3s)
- Cavalier : arc leger pendant le saut (~0.4s)
- Cargaison visible sur la piece (petit cube colore au-dessus)
- Piece sans colis = silhouette normale. Piece avec colis = silhouette + cube.
**Transferts** :
- Quand un colis passe d'une piece a l'autre : animation de "lancer-rattraper" entre les deux (le cube glisse d'une piece a l'autre, ~0.2s)
- Flash subtil sur le receveur
**Productions et demandes** :
- Les productions **pulsent** quand elles generent un colis
- Les demandes ont une **jauge** de progression (ex: "2/3")
- Jauge verte = objectif atteint. Jauge rouge = pas encore.
**Erreurs** :
- Collision : flash rouge + shake des deux pieces
- Simulation en pause automatiquement
**Victoire** :
- Toutes les jauges au vert → animation sobre (les trajets scintillent en dore)
- Overlay des metriques + histogrammes
---
## 8. Les 3 niveaux du prototype
### Niveau 1 — "Premier Convoi"
**Intention** : apprendre a placer une piece et voir la chaine fonctionner. Le joueur decouvre que les pieces sont des maillons.
```
4 . . . .
3 . . . .
2 . . . .
1 [S] . . [D]
a b c d
```
- Plateau : **4x4**
- S = Scierie (a1, produit du Bois tous les 2 coups)
- D = Depot Royal (d1, objectif : recevoir 3 Bois en 30 coups)
- Pieces disponibles : **3x Tour II**
**Le probleme** :
La Scierie est en a1, le Depot en d1. Distance : 3 cases. Une Tour II ne se deplace que de 2 cases max. **Aucune piece seule ne peut couvrir le trajet.**
Le joueur doit enchainer 2 Tours minimum :
```
[S]═══Tour A═══[·]───Tour B───[D]
a1 c1 d1
(2 cases) (1 case)
```
Tour A : a1 ↔ c1 (2 cases). Tour B : c1 ↔ d1 (1 case).
Mais c1 est l'arrivee de Tour A ET le depart de Tour B. Les deux pieces se croisent en c1 → le colis se transmet automatiquement.
**Probleme** : Tour A et Tour B ne peuvent pas etre sur c1 au meme coup (collision). Le joueur decouvre que les pieces doivent etre **decalees** :
- Tour A est en a1 → Tour B est en d1 (pas de conflit)
- Tour A avance en c1 → Tour B avance en c1 → **collision !**
**Solution** : Tour A couvre a1↔c1, Tour B couvre **d1↔c1** (meme case mais direction opposee). Coup 1 : A va en c1, B va en c1 → collision. Il faut decaler.
**Vraie solution** : Tour A couvre a1↔b1 (1 case). Tour B couvre b1↔d1 (2 cases). Decales dans le temps, ils ne sont jamais sur b1 en meme temps car A est en b1 quand B est en d1, et inversement.
Ou : Tour A couvre a1↔c1 (2 cases), Tour B couvre c1↔d1 (1 case). Ils ne sont jamais sur c1 ensemble si les arrivees alternent. A verifier dans la simulation.
> **Note de design** : ce premier niveau est volontairement simple en apparence mais contient deja le puzzle fondamental du jeu — l'espacement et le timing des maillons. Si le joueur place naïvement, ca collisionne. Il apprend en observant.
**Objectif pedagogique** :
- Placer une piece (2 clics : depart + arrivee)
- Comprendre qu'une piece = un maillon, pas un convoi complet
- Decouvrir le transfert automatique entre pieces adjacentes
- Premiere rencontre avec le probleme de collision/timing
---
### Niveau 2 — "Deux Clients"
**Intention** : premier choix logistique. Le joueur decide comment organiser 2 chaines a partir d'une seule source.
```
6 . . . . . .
5 . . . . . [D2] Caserne — 2 Bois en 30 coups
4 . . . . . .
3 . . . . . .
2 . . . . . .
1 [S] . . . . [D1] Depot Royal — 2 Bois en 30 coups
a b c d e f
```
- Plateau : **6x6**
- S = Scierie (a1, produit du Bois tous les 2 coups)
- D1 = Depot Royal (f1, objectif : 2 Bois en 30 coups)
- D2 = Caserne (f5, objectif : 2 Bois en 30 coups)
- Pieces disponibles : **4x Tour II, 1x Fou II**
**L'enjeu** :
- S→D1 : 5 cases en ligne droite. Faisable avec une chaine de Tours.
- S→D2 : trajet en angle (droite + haut). Plusieurs routes possibles.
- La Scierie ne produit qu'un colis tous les 2 coups. Les deux chaines partagent la meme source.
- Le joueur doit decider : comment repartir les colis entre les deux destinations ?
**Le statut social entre en jeu** :
Si le joueur place une Tour (statut 5) vers D1 et un Fou (statut 3) vers D2, tous deux adjacents a la Scierie → la Tour recoit le colis en priorite. D1 est servie en premier, D2 attend.
Le joueur peut inverser la priorite en mettant le Fou vers D1 et la Tour vers D2.
Ou il espace ses chaines pour que chaque direction ait son propre premier maillon adjacent a la Scierie, et alterne naturellement.
**Le Fou en diagonale** :
Le Fou peut couvrir des trajets diagonaux que les Tours ne peuvent pas. Pour atteindre D2 (f5), une route diagonale via le Fou pourrait etre plus courte. Mais le Fou ne peut atteindre que les cases de sa couleur — le joueur decouvre cette contrainte par l'experimentation.
**Objectif pedagogique** :
- Premiere decision logistique : repartir le flux
- Decouvrir le statut social comme outil de routage
- Decouvrir la contrainte de parite du Fou
- Gerer deux chaines simultanees partageant une source
- **Sensation de "je concois MON reseau"**
---
### Niveau 3 — "Le Col"
**Intention** : un vrai reseau avec terrain, 2 types de cargaison, et le Cavalier comme solution aux obstacles.
```
6 [D2] . . . . [D1] Depot Royal — 2 Bois en 40 coups
5 . . # # # . Forge — 2 Pierre en 40 coups
4 . . # . . .
3 . . # . . .
2 . . . . . .
1 [S1] . . . . [S2] Scierie (Bois)
Carriere (Pierre)
a b c d e f
```
- Plateau : **6x6**
- S1 = Scierie (a1, Bois, tous les 2 coups)
- S2 = Carriere (f1, Pierre, tous les 2 coups)
- D1 = Depot Royal (f6, objectif : 2 Bois en 40 coups)
- D2 = Forge (a6, objectif : 2 Pierre en 40 coups)
- Murs : c3, c4, c5, d5, e5 (barriere en L)
- Pieces disponibles : **4x Tour II, 1x Fou II, 2x Cavalier**
**L'enjeu logistique** :
Le mur en L coupe le plateau. Les deux routes (S1→D1 et S2→D2) traversent le plateau en diagonale et doivent contourner ou franchir le mur.
**Route S1(Bois) → D1(Depot)** : a1 → f6
- Par le bas : a1→f1→f6. Chaine de Tours le long du bord. Long mais faisable.
- Via le Cavalier : le Cavalier saute le mur. Plus court mais statut social 3, il perd la priorite face aux Tours.
**Route S2(Pierre) → D2(Forge)** : f1 → a6
- Meme probleme en miroir, sens inverse.
- Les deux routes se **croisent** → risque de transferts involontaires !
**Le puzzle de croisement** :
Si les chaines Bois et Pierre passent par les memes cases intermediaires, les colis risquent de partir dans la mauvaise direction. Le joueur doit :
- Soit **espacer** les chaines (routes differentes, chaines separees)
- Soit utiliser le **statut social** pour diriger les colis (une Tour capte avant un Cavalier)
- Soit **decaler temporellement** les chaines (pieces de portees differentes)
**Le Cavalier comme pont** :
Le Cavalier saute le mur en L. Il peut connecter les deux cotes du plateau la ou les Tours et Fous sont bloques. C'est la piece "speciale" de ce niveau — chere en slot mais indispensable pour certaines routes.
**Objectif pedagogique** :
- 2 types de cargaison = flux separes a ne pas melanger
- Le mur force des choix de flotte non triviaux
- Le Cavalier comme outil unique (saut)
- Le puzzle de croisement : gerer les interferences entre chaines
- **Le joueur sent qu'il gere un reseau de transport complet**
---
## 9. Direction artistique (prototype)
Le prototype vise la lisibilite.
**Palette** :
- Damier : beige clair (#F0D9B5) / brun (#B58863)
- Murs : gris fonce (#555555)
- Productions : vert doux avec pulsation
- Demandes : or/jaune avec jauge
- Trajets : couleur unique par piece (bleu, rouge, violet, orange)
- Fond : gris neutre (#2D2D2D)
**Pieces** :
- Silhouettes 2D classiques des pieces d'echecs (vectorielles)
- Couleur correspondant au trajet
- Cargaison = petit cube colore au-dessus (brun = Bois, gris = Pierre)
**Trajets sur le plateau** :
- Trait semi-transparent entre depart et arrivee
- Fleches directionnelles
- Le trait pulse legerement quand la piece est en mouvement
**Animations** :
- Tour/Fou : glissement lineaire (~0.3s)
- Cavalier : arc de saut (~0.4s)
- Transfert de colis : le cube glisse d'une piece a l'autre (~0.2s)
- Collision : flash rouge + shake
- Victoire : trajets scintillent en dore
---
## 10. Choix technique : Godot 4 + C#
### Pourquoi Godot 4
| Critere | Godot 4 | MonoGame |
|---------|---------|----------|
| Licence | MIT (libre) | MIT (libre) |
| Langage | C# (.NET) | C# (.NET) |
| Systeme UI | Nodes Control natifs | A construire from scratch |
| TileMap | Integre | A implementer |
| Tweens | Natifs | A implementer |
| Export | Win, Linux, Mac, Web | Win, Linux, Mac |
### Architecture suggeree
```
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
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
LevelLoader.cs — Chargement JSON
UI/
PiecePlacer.cs — Logique du placement 2 clics
ControlBar.cs — Play/pause/stop/vitesse
ProgressDisplay.cs — Compteur de coups + progression objectifs
data/
levels/
level_01.json
level_02.json
level_03.json
```
### Format d'un niveau (JSON)
```json
{
"id": 1,
"name": "Premier Convoi",
"description": "Acheminez du bois de la scierie au depot.",
"width": 4,
"height": 4,
"productions": [
{ "x": 0, "y": 0, "name": "Scierie", "cargo": "wood", "interval": 2 }
],
"demands": [
{ "x": 3, "y": 0, "name": "Depot Royal", "cargo": "wood", "amount": 3, "deadline": 30 }
],
"walls": [],
"pieces": [
{ "type": "rook", "level": 2, "count": 3 }
]
}
```
---
## 11. Risques et questions ouvertes
| Question | Options | Decision proto |
|----------|---------|----------------|
| Adjacence pour transfert ? | 4-connecte (bords) vs 8-connecte (bords + coins) | **4-connecte** — plus de contrainte = plus de puzzle |
| La piece tourne a vide ? | Oui (aller-retour permanent) vs attend un colis | **Oui, tourne en permanence** — plus visuel, plus simple |
| Collision = destruction ? | Destruction (fort mange faible) vs erreur stricte (pause) | **Destruction** — la piece de plus haut statut/niveau survit, les autres sont detruites. Destruction mutuelle si egalite parfaite. |
| Sources infinies ? | Oui (production periodique sans stock) vs stock limite | **Production periodique infinie** — le proto teste le reseau, pas la gestion de stock |
| Pieces fixes par niveau ? | Fixes (catalogue impose) vs achat libre | **Fixes** — plus facile a designer. L'achat/fabrication est post-proto. |
| Egalite de statut social ? | Niveau > direction horaire | **Niveau puis direction horaire alternee** (pairs: depuis droite, impairs: depuis gauche) — deterministe, pas de biais permanent |
---
## 12. Lore
Les pions sont en manque d'un roi. Ils vont se mettre a produire toutes les pieces intermediaires car ils en ont besoin pour aller chercher plus loin les ressources requises pour fabriquer le roi. A la fin, le roi execute tout le monde. Game over.