# 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 (A–X), 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 (A–X). 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 ```