Add Pion piece, surplus stock, and levels 4-6
- Pion (Pawn): orthogonal range 1, social status 1 (lowest), green color - All existing levels get surplus stock including pawns for player choice - Level 4 "Le Carrefour": 8x8, dual cargo diagonal routes, center wall block - Level 5 "Le Labyrinthe": 8x6, wall corridors, knights essential for shortcuts - Level 6 "Trois Royaumes": 10x8, 3 productions + 3 demands, full network puzzle - Production interval concept removed (all produce every turn) - GDD updated with Pion section and 6 level descriptions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a7280b1a5a
commit
672b831fc1
15 changed files with 220 additions and 29 deletions
|
|
@ -5,13 +5,14 @@
|
||||||
"width": 4,
|
"width": 4,
|
||||||
"height": 4,
|
"height": 4,
|
||||||
"productions": [
|
"productions": [
|
||||||
{ "col": 0, "row": 0, "name": "Scierie", "cargo": "wood", "interval": 2 }
|
{ "col": 0, "row": 0, "name": "Scierie", "cargo": "wood" }
|
||||||
],
|
],
|
||||||
"demands": [
|
"demands": [
|
||||||
{ "col": 3, "row": 0, "name": "Depot Royal", "cargo": "wood", "amount": 3, "deadline": 30 }
|
{ "col": 3, "row": 0, "name": "Depot Royal", "cargo": "wood", "amount": 3, "deadline": 30 }
|
||||||
],
|
],
|
||||||
"walls": [],
|
"walls": [],
|
||||||
"stock": [
|
"stock": [
|
||||||
{ "kind": "rook", "count": 3 }
|
{ "kind": "pawn", "count": 4 },
|
||||||
|
{ "kind": "rook", "count": 2 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
"width": 6,
|
"width": 6,
|
||||||
"height": 6,
|
"height": 6,
|
||||||
"productions": [
|
"productions": [
|
||||||
{ "col": 0, "row": 0, "name": "Scierie", "cargo": "wood", "interval": 2 }
|
{ "col": 0, "row": 0, "name": "Scierie", "cargo": "wood" }
|
||||||
],
|
],
|
||||||
"demands": [
|
"demands": [
|
||||||
{ "col": 5, "row": 0, "name": "Depot Royal", "cargo": "wood", "amount": 2, "deadline": 30 },
|
{ "col": 5, "row": 0, "name": "Depot Royal", "cargo": "wood", "amount": 2, "deadline": 30 },
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
],
|
],
|
||||||
"walls": [],
|
"walls": [],
|
||||||
"stock": [
|
"stock": [
|
||||||
|
{ "kind": "pawn", "count": 6 },
|
||||||
{ "kind": "rook", "count": 4 },
|
{ "kind": "rook", "count": 4 },
|
||||||
{ "kind": "bishop", "count": 1 }
|
{ "kind": "bishop", "count": 1 }
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@
|
||||||
"width": 6,
|
"width": 6,
|
||||||
"height": 6,
|
"height": 6,
|
||||||
"productions": [
|
"productions": [
|
||||||
{ "col": 0, "row": 0, "name": "Scierie", "cargo": "wood", "interval": 2 },
|
{ "col": 0, "row": 0, "name": "Scierie", "cargo": "wood" },
|
||||||
{ "col": 5, "row": 0, "name": "Carriere", "cargo": "stone", "interval": 2 }
|
{ "col": 5, "row": 0, "name": "Carriere", "cargo": "stone" }
|
||||||
],
|
],
|
||||||
"demands": [
|
"demands": [
|
||||||
{ "col": 5, "row": 5, "name": "Depot Royal", "cargo": "wood", "amount": 2, "deadline": 40 },
|
{ "col": 5, "row": 5, "name": "Depot Royal", "cargo": "wood", "amount": 2, "deadline": 40 },
|
||||||
|
|
@ -20,7 +20,8 @@
|
||||||
{ "col": 4, "row": 4 }
|
{ "col": 4, "row": 4 }
|
||||||
],
|
],
|
||||||
"stock": [
|
"stock": [
|
||||||
{ "kind": "rook", "count": 4 },
|
{ "kind": "pawn", "count": 6 },
|
||||||
|
{ "kind": "rook", "count": 6 },
|
||||||
{ "kind": "bishop", "count": 1 },
|
{ "kind": "bishop", "count": 1 },
|
||||||
{ "kind": "knight", "count": 2 }
|
{ "kind": "knight", "count": 2 }
|
||||||
]
|
]
|
||||||
|
|
|
||||||
27
Data/levels/level_04.json
Normal file
27
Data/levels/level_04.json
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"name": "Le Carrefour",
|
||||||
|
"description": "Deux productions, deux demandes, et un carrefour au centre.",
|
||||||
|
"width": 8,
|
||||||
|
"height": 8,
|
||||||
|
"productions": [
|
||||||
|
{ "col": 0, "row": 0, "name": "Scierie", "cargo": "wood" },
|
||||||
|
{ "col": 7, "row": 7, "name": "Carriere", "cargo": "stone" }
|
||||||
|
],
|
||||||
|
"demands": [
|
||||||
|
{ "col": 7, "row": 0, "name": "Depot Royal", "cargo": "wood", "amount": 3, "deadline": 40 },
|
||||||
|
{ "col": 0, "row": 7, "name": "Forge", "cargo": "stone", "amount": 3, "deadline": 40 }
|
||||||
|
],
|
||||||
|
"walls": [
|
||||||
|
{ "col": 3, "row": 3 },
|
||||||
|
{ "col": 4, "row": 4 },
|
||||||
|
{ "col": 3, "row": 4 },
|
||||||
|
{ "col": 4, "row": 3 }
|
||||||
|
],
|
||||||
|
"stock": [
|
||||||
|
{ "kind": "pawn", "count": 8 },
|
||||||
|
{ "kind": "rook", "count": 4 },
|
||||||
|
{ "kind": "bishop", "count": 2 },
|
||||||
|
{ "kind": "knight", "count": 2 }
|
||||||
|
]
|
||||||
|
}
|
||||||
35
Data/levels/level_05.json
Normal file
35
Data/levels/level_05.json
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"name": "Le Labyrinthe",
|
||||||
|
"description": "Un couloir etroit serpente a travers les murs. Seuls les cavaliers peuvent prendre des raccourcis.",
|
||||||
|
"width": 8,
|
||||||
|
"height": 6,
|
||||||
|
"productions": [
|
||||||
|
{ "col": 0, "row": 0, "name": "Scierie", "cargo": "wood" },
|
||||||
|
{ "col": 0, "row": 5, "name": "Carriere", "cargo": "stone" }
|
||||||
|
],
|
||||||
|
"demands": [
|
||||||
|
{ "col": 7, "row": 5, "name": "Depot Royal", "cargo": "wood", "amount": 3, "deadline": 50 },
|
||||||
|
{ "col": 7, "row": 0, "name": "Forge", "cargo": "stone", "amount": 3, "deadline": 50 }
|
||||||
|
],
|
||||||
|
"walls": [
|
||||||
|
{ "col": 2, "row": 0 },
|
||||||
|
{ "col": 2, "row": 1 },
|
||||||
|
{ "col": 2, "row": 2 },
|
||||||
|
{ "col": 2, "row": 3 },
|
||||||
|
{ "col": 4, "row": 2 },
|
||||||
|
{ "col": 4, "row": 3 },
|
||||||
|
{ "col": 4, "row": 4 },
|
||||||
|
{ "col": 4, "row": 5 },
|
||||||
|
{ "col": 6, "row": 0 },
|
||||||
|
{ "col": 6, "row": 1 },
|
||||||
|
{ "col": 6, "row": 2 },
|
||||||
|
{ "col": 6, "row": 3 }
|
||||||
|
],
|
||||||
|
"stock": [
|
||||||
|
{ "kind": "pawn", "count": 10 },
|
||||||
|
{ "kind": "rook", "count": 4 },
|
||||||
|
{ "kind": "bishop", "count": 2 },
|
||||||
|
{ "kind": "knight", "count": 3 }
|
||||||
|
]
|
||||||
|
}
|
||||||
35
Data/levels/level_06.json
Normal file
35
Data/levels/level_06.json
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"name": "Trois Royaumes",
|
||||||
|
"description": "Trois productions, trois demandes. Gerez un reseau complet sans interferences.",
|
||||||
|
"width": 10,
|
||||||
|
"height": 8,
|
||||||
|
"productions": [
|
||||||
|
{ "col": 0, "row": 0, "name": "Scierie", "cargo": "wood" },
|
||||||
|
{ "col": 0, "row": 7, "name": "Carriere", "cargo": "stone" },
|
||||||
|
{ "col": 9, "row": 3, "name": "Scierie Est", "cargo": "wood" }
|
||||||
|
],
|
||||||
|
"demands": [
|
||||||
|
{ "col": 9, "row": 0, "name": "Depot Royal", "cargo": "wood", "amount": 3, "deadline": 50 },
|
||||||
|
{ "col": 9, "row": 7, "name": "Forge", "cargo": "stone", "amount": 3, "deadline": 50 },
|
||||||
|
{ "col": 4, "row": 7, "name": "Chantier", "cargo": "wood", "amount": 3, "deadline": 50 }
|
||||||
|
],
|
||||||
|
"walls": [
|
||||||
|
{ "col": 3, "row": 2 },
|
||||||
|
{ "col": 3, "row": 3 },
|
||||||
|
{ "col": 3, "row": 4 },
|
||||||
|
{ "col": 3, "row": 5 },
|
||||||
|
{ "col": 6, "row": 2 },
|
||||||
|
{ "col": 6, "row": 3 },
|
||||||
|
{ "col": 6, "row": 4 },
|
||||||
|
{ "col": 6, "row": 5 },
|
||||||
|
{ "col": 4, "row": 3 },
|
||||||
|
{ "col": 5, "row": 3 }
|
||||||
|
],
|
||||||
|
"stock": [
|
||||||
|
{ "kind": "pawn", "count": 14 },
|
||||||
|
{ "kind": "rook", "count": 6 },
|
||||||
|
{ "kind": "bishop", "count": 3 },
|
||||||
|
{ "kind": "knight", "count": 4 }
|
||||||
|
]
|
||||||
|
}
|
||||||
24
PLAN.md
24
PLAN.md
|
|
@ -20,25 +20,13 @@
|
||||||
- GDD stock corrections: Level 2 = 6R+1B, Level 3 = 10R+2K
|
- GDD stock corrections: Level 2 = 6R+1B, Level 3 = 10R+2K
|
||||||
- 60 tests passing including 2 new CargoFilter tests
|
- 60 tests passing including 2 new CargoFilter tests
|
||||||
|
|
||||||
## Phase 3: Surplus stock and puzzle difficulty tuning
|
## Phase 3: Pion, surplus stock, levels 4-6 (DONE)
|
||||||
|
|
||||||
**Goal**: Levels give more pieces than the minimum, creating genuine puzzle space.
|
- Pion: orthogonal range 1, status 1 (lowest), cheap relay maillon
|
||||||
|
- Surplus stock on all levels (more pieces than minimum solution)
|
||||||
- With forward-preferring transfers working, longer chains are viable.
|
- Levels 4-6: Le Carrefour (8x8), Le Labyrinthe (8x6), Trois Royaumes (10x8)
|
||||||
- Design levels where the player has choice: multiple valid solutions with different
|
- Production interval removed: all productions fire every turn
|
||||||
efficiency scores (PiecesUsed, TurnsTaken, CellsOccupied).
|
- GDD updated with Pion, 6 levels
|
||||||
- Add scoring/star system based on Metrics.
|
|
||||||
- Levels 4-6: increasing board size (8x8, 10x10), more complex wall layouts, multiple
|
|
||||||
productions and demands.
|
|
||||||
|
|
||||||
## Phase 4: New piece — Pion (Pawn)
|
|
||||||
|
|
||||||
**Goal**: Add a one-directional piece for asymmetric relay constraints.
|
|
||||||
|
|
||||||
- Pion moves forward only (one direction, range 1).
|
|
||||||
- Cheap to place (low piece cost if scoring is added).
|
|
||||||
- Creates interesting constraints: must plan direction of cargo flow.
|
|
||||||
- Test levels specifically designed around Pion usage.
|
|
||||||
|
|
||||||
## Phase 5: Network levels and Dame (Queen)
|
## Phase 5: Network levels and Dame (Queen)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ public partial class Main : Node2D
|
||||||
private bool _running;
|
private bool _running;
|
||||||
private bool _panning;
|
private bool _panning;
|
||||||
|
|
||||||
private static readonly string[] LevelFiles = ["level_01.json", "level_02.json", "level_03.json"];
|
private static readonly string[] LevelFiles = ["level_01.json", "level_02.json", "level_03.json", "level_04.json", "level_05.json", "level_06.json"];
|
||||||
|
|
||||||
private const float SidePanelWidth = 280f;
|
private const float SidePanelWidth = 280f;
|
||||||
private const float ControlBarHeight = 48f;
|
private const float ControlBarHeight = 48f;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ public partial class PieceView : Node2D
|
||||||
public Coords StartCell { get; private set; }
|
public Coords StartCell { get; private set; }
|
||||||
public Coords EndCell { get; private set; }
|
public Coords EndCell { get; private set; }
|
||||||
|
|
||||||
|
private static readonly Color PawnColor = new("#7AB54A");
|
||||||
private static readonly Color RookColor = new("#4A7AB5");
|
private static readonly Color RookColor = new("#4A7AB5");
|
||||||
private static readonly Color BishopColor = new("#B54A8E");
|
private static readonly Color BishopColor = new("#B54A8E");
|
||||||
private static readonly Color KnightColor = new("#B5824A");
|
private static readonly Color KnightColor = new("#B5824A");
|
||||||
|
|
@ -32,6 +33,7 @@ public partial class PieceView : Node2D
|
||||||
|
|
||||||
var color = kind switch
|
var color = kind switch
|
||||||
{
|
{
|
||||||
|
PieceKind.Pawn => PawnColor,
|
||||||
PieceKind.Rook => RookColor,
|
PieceKind.Rook => RookColor,
|
||||||
PieceKind.Bishop => BishopColor,
|
PieceKind.Bishop => BishopColor,
|
||||||
PieceKind.Knight => KnightColor,
|
PieceKind.Knight => KnightColor,
|
||||||
|
|
@ -57,6 +59,7 @@ public partial class PieceView : Node2D
|
||||||
{
|
{
|
||||||
Text = kind switch
|
Text = kind switch
|
||||||
{
|
{
|
||||||
|
PieceKind.Pawn => "P",
|
||||||
PieceKind.Rook => "T",
|
PieceKind.Rook => "T",
|
||||||
PieceKind.Bishop => "F",
|
PieceKind.Bishop => "F",
|
||||||
PieceKind.Knight => "C",
|
PieceKind.Knight => "C",
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,7 @@ public partial class PieceStockPanel : VBoxContainer
|
||||||
|
|
||||||
private static string GetPieceName(PieceKind kind) => kind switch
|
private static string GetPieceName(PieceKind kind) => kind switch
|
||||||
{
|
{
|
||||||
|
PieceKind.Pawn => "Pion",
|
||||||
PieceKind.Rook => "Tour II",
|
PieceKind.Rook => "Tour II",
|
||||||
PieceKind.Bishop => "Fou II",
|
PieceKind.Bishop => "Fou II",
|
||||||
PieceKind.Knight => "Cavalier",
|
PieceKind.Knight => "Cavalier",
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ public static class LevelLoader
|
||||||
|
|
||||||
private static PieceKind ParseKind(string kind) => kind.ToLowerInvariant() switch
|
private static PieceKind ParseKind(string kind) => kind.ToLowerInvariant() switch
|
||||||
{
|
{
|
||||||
|
"pawn" => PieceKind.Pawn,
|
||||||
"rook" => PieceKind.Rook,
|
"rook" => PieceKind.Rook,
|
||||||
"bishop" => PieceKind.Bishop,
|
"bishop" => PieceKind.Bishop,
|
||||||
"knight" => PieceKind.Knight,
|
"knight" => PieceKind.Knight,
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ namespace Chessistics.Engine.Model;
|
||||||
|
|
||||||
public enum PieceKind
|
public enum PieceKind
|
||||||
{
|
{
|
||||||
|
Pawn,
|
||||||
Rook,
|
Rook,
|
||||||
Bishop,
|
Bishop,
|
||||||
Knight
|
Knight
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ public static class PieceRules
|
||||||
{
|
{
|
||||||
public static int GetSocialStatus(PieceKind kind) => kind switch
|
public static int GetSocialStatus(PieceKind kind) => kind switch
|
||||||
{
|
{
|
||||||
|
PieceKind.Pawn => 1,
|
||||||
PieceKind.Rook => 5,
|
PieceKind.Rook => 5,
|
||||||
PieceKind.Bishop => 3,
|
PieceKind.Bishop => 3,
|
||||||
PieceKind.Knight => 3,
|
PieceKind.Knight => 3,
|
||||||
|
|
@ -12,6 +13,7 @@ public static class PieceRules
|
||||||
|
|
||||||
public static int GetMaxRange(PieceKind kind) => kind switch
|
public static int GetMaxRange(PieceKind kind) => kind switch
|
||||||
{
|
{
|
||||||
|
PieceKind.Pawn => 1,
|
||||||
PieceKind.Rook => 2,
|
PieceKind.Rook => 2,
|
||||||
PieceKind.Bishop => 2,
|
PieceKind.Bishop => 2,
|
||||||
PieceKind.Knight => 0, // Knight uses L-shape, not range
|
PieceKind.Knight => 0, // Knight uses L-shape, not range
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ public static class MoveValidator
|
||||||
|
|
||||||
return kind switch
|
return kind switch
|
||||||
{
|
{
|
||||||
|
PieceKind.Pawn => GetSlidingMoves(start, OrthogonalDirs, 1, board),
|
||||||
PieceKind.Rook => GetSlidingMoves(start, OrthogonalDirs, 2, board),
|
PieceKind.Rook => GetSlidingMoves(start, OrthogonalDirs, 2, board),
|
||||||
PieceKind.Bishop => GetSlidingMoves(start, DiagonalDirs, 2, board),
|
PieceKind.Bishop => GetSlidingMoves(start, DiagonalDirs, 2, board),
|
||||||
PieceKind.Knight => GetKnightMoves(start, board),
|
PieceKind.Knight => GetKnightMoves(start, board),
|
||||||
|
|
|
||||||
|
|
@ -85,9 +85,22 @@ C'est tout. Pas de programmation, pas de route multi-etapes. La piece fait l'all
|
||||||
|
|
||||||
### 3.2 Pieces disponibles dans le prototype
|
### 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.
|
4 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 :
|
4 types :
|
||||||
|
|
||||||
|
#### Pion
|
||||||
|
|
||||||
|
```
|
||||||
|
X
|
||||||
|
X [Pion] X
|
||||||
|
X
|
||||||
|
```
|
||||||
|
|
||||||
|
- Se deplace de **1 case** en ligne droite (horizontal ou vertical)
|
||||||
|
- Ne peut pas traverser les murs ni les autres pieces
|
||||||
|
- Statut social : **1** (le plus bas — recoit et donne en dernier)
|
||||||
|
- Piece la moins chere, utile pour combler les maillons courts
|
||||||
|
|
||||||
#### Tour (niveau II)
|
#### Tour (niveau II)
|
||||||
|
|
||||||
|
|
@ -178,6 +191,7 @@ Hierarchie de statut social (proto) :
|
||||||
Tour 5
|
Tour 5
|
||||||
Fou 3
|
Fou 3
|
||||||
Cavalier 3
|
Cavalier 3
|
||||||
|
Pion 1
|
||||||
```
|
```
|
||||||
|
|
||||||
**Departage par direction** (en y-up, sens horaire) :
|
**Departage par direction** (en y-up, sens horaire) :
|
||||||
|
|
@ -421,7 +435,7 @@ Le joueur peut arreter la simulation a tout moment, reorganiser, et relancer.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 8. Les 3 niveaux du prototype
|
## 8. Les 6 niveaux du prototype
|
||||||
|
|
||||||
### Niveau 1 — "Premier Convoi"
|
### Niveau 1 — "Premier Convoi"
|
||||||
|
|
||||||
|
|
@ -574,6 +588,86 @@ Le Cavalier saute le mur en L. Il peut connecter les deux cotes du plateau la ou
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Niveau 4 — "Le Carrefour"
|
||||||
|
|
||||||
|
**Intention** : premier plateau 8x8, deux cargaisons en diagonale, un bloc de murs au centre force le contournement.
|
||||||
|
|
||||||
|
```
|
||||||
|
8 . . . . . . . .
|
||||||
|
7 [D2] . . . . . . . Forge — 3 Pierre en 40 coups
|
||||||
|
6 . . . . . . . .
|
||||||
|
5 . . . ## . . . .
|
||||||
|
4 . . . ## . . . .
|
||||||
|
3 . . . . . . . .
|
||||||
|
2 . . . . . . . .
|
||||||
|
1 [S1] . . . . . . [D1] Depot Royal — 3 Bois en 40 coups
|
||||||
|
|
||||||
|
a b c d e f g h
|
||||||
|
[S2] Carriere (h8)
|
||||||
|
```
|
||||||
|
|
||||||
|
- Plateau : **8x8**
|
||||||
|
- S1 = Scierie (a1, Bois), S2 = Carriere (h8, Pierre)
|
||||||
|
- D1 = Depot Royal (h1, 3 Bois/40c), D2 = Forge (a8, 3 Pierre/40c)
|
||||||
|
- Murs : bloc 2x2 au centre (d4, e5, d5, e4)
|
||||||
|
- Stock : 8 Pions, 4 Tours, 2 Fous, 2 Cavaliers
|
||||||
|
|
||||||
|
**L'enjeu** : les routes Bois (a1→h1) et Pierre (h8→a8) se croisent en diagonale. Le bloc central empeche la ligne droite. Le joueur decouvre le Pion comme maillon economique.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Niveau 5 — "Le Labyrinthe"
|
||||||
|
|
||||||
|
**Intention** : des murs verticaux creent des couloirs etroits. Les Cavaliers sont essentiels pour enjamber les obstacles.
|
||||||
|
|
||||||
|
```
|
||||||
|
6 [S2] . # . # . # . Carriere (a6)
|
||||||
|
5 . . # . # . # .
|
||||||
|
4 . . # . # . . [D1] Depot Royal — 3 Bois en 50 coups
|
||||||
|
3 . . # . . . # .
|
||||||
|
2 . . . . # . # .
|
||||||
|
1 [S1] . . . # . . [D2] Forge — 3 Pierre en 50 coups
|
||||||
|
|
||||||
|
a b c d e f g h
|
||||||
|
```
|
||||||
|
|
||||||
|
- Plateau : **8x6**
|
||||||
|
- S1 = Scierie (a1, Bois), S2 = Carriere (a6, Pierre)
|
||||||
|
- D1 = Depot Royal (h6, 3 Bois/50c), D2 = Forge (h1, 3 Pierre/50c)
|
||||||
|
- Murs : 3 colonnes partielles formant un labyrinthe
|
||||||
|
- Stock : 10 Pions, 4 Tours, 2 Fous, 3 Cavaliers
|
||||||
|
|
||||||
|
**L'enjeu** : les murs fragmentent le plateau en couloirs. Seul le Cavalier saute par-dessus. Le joueur doit combiner Pions (relais courts dans les couloirs) et Cavaliers (ponts entre couloirs).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Niveau 6 — "Trois Royaumes"
|
||||||
|
|
||||||
|
**Intention** : reseau a 3 productions et 3 demandes, plateau 10x8. Le joueur gere un vrai reseau logistique.
|
||||||
|
|
||||||
|
```
|
||||||
|
8 [S2] . . # . . # . . [D2] Forge — 3 Pierre en 50 coups
|
||||||
|
7 . . . # . . # . . .
|
||||||
|
6 . . . # ## . # . . .
|
||||||
|
5 . . . . . . . . . .
|
||||||
|
4 . . . # ## . # . . [S3] Scierie Est (j4, Bois)
|
||||||
|
3 . . . # . . # . . .
|
||||||
|
2 . . . . . . . . . .
|
||||||
|
1 [S1] . . . [D3] . . . . [D1] Depot Royal — 3 Bois en 50 coups
|
||||||
|
|
||||||
|
a b c d e f g h i j
|
||||||
|
```
|
||||||
|
|
||||||
|
- Plateau : **10x8**
|
||||||
|
- S1 = Scierie (a1, Bois), S2 = Carriere (a8, Pierre), S3 = Scierie Est (j4, Bois)
|
||||||
|
- D1 = Depot Royal (j1, 3 Bois/50c), D2 = Forge (j8, 3 Pierre/50c), D3 = Chantier (e8, 3 Bois/50c)
|
||||||
|
- Murs : deux colonnes avec pont horizontal
|
||||||
|
- Stock : 14 Pions, 6 Tours, 3 Fous, 4 Cavaliers
|
||||||
|
|
||||||
|
**L'enjeu** : le joueur doit decider comment repartir les productions entre les demandes. S1 et S3 produisent du Bois mais sont loin l'une de l'autre. Les murs creent trois "royaumes" et le joueur doit construire un reseau d'interconnexion.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 9. Direction artistique (prototype)
|
## 9. Direction artistique (prototype)
|
||||||
|
|
||||||
Le prototype vise la lisibilite.
|
Le prototype vise la lisibilite.
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue