Files
tts-workshop/games/carcassonne/carcassonne.md
T
hypercross dc721d5c2d refactor(games): use ordered setup placements
Convert poker and carcassonne setups to the ordered placement list. Deal the deck/draw first, then move the flop cards and opening tiles out onto their paths.
2026-08-10 11:27:53 +08:00

233 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Carcassonne
The base game's 24 landscape tiles, laid out on a table with a draw pile and a
grid of placed tiles. Each tile is a single `110×110` image (AX), sized to a
standard `45×45` mm square.
```yaml file=carcassonne.yaml
role: package
id: carcassonne
title: Carcassonne
designer: Klaus-Jürgen Wrede
publisher: Hans im Glück
players: 5
language: en
include: ['./**/*.yaml']
```
## Parts
One `tile` part per distinct tile type (AX). All tiles share the same square
face image and a uniform size; the `$variants` CSV expands them into the 24
tile parts.
```yaml file=tiles.yaml
role: part
type: tile
face: ./20AE_Base_Game_C2_Tile_A.png
size: [45, 45, 3]
fillet: 1
$variants: ./tiles.csv
```
```csv file=tiles.csv
id,face
string,string
a,./20AE_Base_Game_C2_Tile_A.png
b,./20AE_Base_Game_C2_Tile_B.png
c,./20AE_Base_Game_C2_Tile_C.png
d,./20AE_Base_Game_C2_Tile_D.png
e,./20AE_Base_Game_C2_Tile_E.png
f,./20AE_Base_Game_C2_Tile_F.png
g,./20AE_Base_Game_C2_Tile_G.png
h,./20AE_Base_Game_C2_Tile_H.png
i,./20AE_Base_Game_C2_Tile_I.png
j,./20AE_Base_Game_C2_Tile_J.png
k,./20AE_Base_Game_C2_Tile_K.png
l,./20AE_Base_Game_C2_Tile_L.png
m,./20AE_Base_Game_C2_Tile_M.png
n,./20AE_Base_Game_C2_Tile_N.png
o,./20AE_Base_Game_C2_Tile_O.png
p,./20AE_Base_Game_C2_Tile_P.png
q,./20AE_Base_Game_C2_Tile_Q.png
r,./20AE_Base_Game_C2_Tile_R.png
s,./20AE_Base_Game_C2_Tile_S.png
t,./20AE_Base_Game_C2_Tile_T.png
u,./20AE_Base_Game_C2_Tile_U.png
v,./20AE_Base_Game_C2_Tile_V.png
w,./20AE_Base_Game_C2_Tile_W.png
x,./20AE_Base_Game_C2_Tile_X.png
```
## Board
A table with a draw pile on the left and an `11×11` grid of placed tiles in the
middle. The grid routes each tile to its `col,row` cell, spaced `45` mm apart
so tiles sit edge to edge.
```yaml file=board.yaml
type: board
id: board
role: surface
size: [600, 600]
layout:
- route: /draw
x: -280
y: 0
rotation: 0
stacking:
align: center
zStart: 0
curve: M -50 -200 C 50 -150 450 -150 550 -200
- route: /grid/:col/:row
candidates:
$variants: ./grid.csv
```
```csv file=grid.csv
col,row,x,y,rotation
string,string,number,number,number
0,0,-225,-225,0
0,1,-225,-180,0
0,2,-225,-135,0
0,3,-225,-90,0
0,4,-225,-45,0
0,5,-225,0,0
0,6,-225,45,0
0,7,-225,90,0
0,8,-225,135,0
0,9,-225,180,0
0,10,-225,225,0
1,0,-180,-225,0
1,1,-180,-180,0
1,2,-180,-135,0
1,3,-180,-90,0
1,4,-180,-45,0
1,5,-180,0,0
1,6,-180,45,0
1,7,-180,90,0
1,8,-180,135,0
1,9,-180,180,0
1,10,-180,225,0
2,0,-135,-225,0
2,1,-135,-180,0
2,2,-135,-135,0
2,3,-135,-90,0
2,4,-135,-45,0
2,5,-135,0,0
2,6,-135,45,0
2,7,-135,90,0
2,8,-135,135,0
2,9,-135,180,0
2,10,-135,225,0
3,0,-90,-225,0
3,1,-90,-180,0
3,2,-90,-135,0
3,3,-90,-90,0
3,4,-90,-45,0
3,5,-90,0,0
3,6,-90,45,0
3,7,-90,90,0
3,8,-90,135,0
3,9,-90,180,0
3,10,-90,225,0
4,0,-45,-225,0
4,1,-45,-180,0
4,2,-45,-135,0
4,3,-45,-90,0
4,4,-45,-45,0
4,5,-45,0,0
4,6,-45,45,0
4,7,-45,90,0
4,8,-45,135,0
4,9,-45,180,0
4,10,-45,225,0
5,0,0,-225,0
5,1,0,-180,0
5,2,0,-135,0
5,3,0,-90,0
5,4,0,-45,0
5,5,0,0,0
5,6,0,45,0
5,7,0,90,0
5,8,0,135,0
5,9,0,180,0
5,10,0,225,0
6,0,45,-225,0
6,1,45,-180,0
6,2,45,-135,0
6,3,45,-90,0
6,4,45,-45,0
6,5,45,0,0
6,6,45,45,0
6,7,45,90,0
6,8,45,135,0
6,9,45,180,0
6,10,45,225,0
7,0,90,-225,0
7,1,90,-180,0
7,2,90,-135,0
7,3,90,-90,0
7,4,90,-45,0
7,5,90,0,0
7,6,90,45,0
7,7,90,90,0
7,8,90,135,0
7,9,90,180,0
7,10,90,225,0
8,0,135,-225,0
8,1,135,-180,0
8,2,135,-135,0
8,3,135,-90,0
8,4,135,-45,0
8,5,135,0,0
8,6,135,45,0
8,7,135,90,0
8,8,135,135,0
8,9,135,180,0
8,10,135,225,0
9,0,180,-225,0
9,1,180,-180,0
9,2,180,-135,0
9,3,180,-90,0
9,4,180,-45,0
9,5,180,0,0
9,6,180,45,0
9,7,180,90,0
9,8,180,135,0
9,9,180,180,0
9,10,180,225,0
10,0,225,-225,0
10,1,225,-180,0
10,2,225,-135,0
10,3,225,-90,0
10,4,225,-45,0
10,5,225,0,0
10,6,225,45,0
10,7,225,90,0
10,8,225,135,0
10,9,225,180,0
10,10,225,225,0
```
## Setup
Start with the full tile supply on the draw pile (`carcassonne:tile` expands to
every tile of that type), then seed the grid with a few opening tiles.
```yaml file=main.yaml
role: setup
type: game
id: main
surfaces:
- board#board
setup:
- path: /draw
parts: carcassonne:tile
- path: /grid/5/5
parts: carcassonne:tile#a
- path: /grid/5/6
parts: carcassonne:tile#b
- path: /grid/6/5
parts: carcassonne:tile#c
```