diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_A.png b/games/carcassonne/20AE_Base_Game_C2_Tile_A.png new file mode 100644 index 0000000..c9a4062 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_A.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15a12d46e53d770d84a3d0506584d86ff9a6ede64318aad9e6b65d82b640bc47 +size 26826 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_B.png b/games/carcassonne/20AE_Base_Game_C2_Tile_B.png new file mode 100644 index 0000000..c48bdf6 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_B.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5bf07762757665e037b9f1e5727998107b02891bb2c46979ca29b4c585f9dde +size 26370 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_C.png b/games/carcassonne/20AE_Base_Game_C2_Tile_C.png new file mode 100644 index 0000000..f0140df --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_C.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ad0d7ca7f50f66e87c53c69f6da33e3b1f44d5854c37d2fac43700a886260d2 +size 31009 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_D.png b/games/carcassonne/20AE_Base_Game_C2_Tile_D.png new file mode 100644 index 0000000..a075a00 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_D.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd1c05c9f285a9dce95c07fda37eda578e9f7ee08fe4b405ce5b34c8c801ea83 +size 28414 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_E.png b/games/carcassonne/20AE_Base_Game_C2_Tile_E.png new file mode 100644 index 0000000..f4611e0 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_E.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ad4ee54248e66063e16e73f57ba5ccf56cb6b28a00ef2406cf40e70b933704c +size 26701 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_F.png b/games/carcassonne/20AE_Base_Game_C2_Tile_F.png new file mode 100644 index 0000000..f3c9e8d --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_F.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:102496d7b454855234e26b603453bb741054d38637deb216d8249edcb073a059 +size 30529 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_G.png b/games/carcassonne/20AE_Base_Game_C2_Tile_G.png new file mode 100644 index 0000000..6ca49a6 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_G.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ceed076afdd4519796bd8cc04c65616bf409df8c6dcdaf9852fb769c8c32b52 +size 29261 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_H.png b/games/carcassonne/20AE_Base_Game_C2_Tile_H.png new file mode 100644 index 0000000..d2a0b37 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_H.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46b5cf5c4a5cd2dee2a872dd726d332d68b0b72118ba4f47799c7bf2033438b8 +size 27154 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_I.png b/games/carcassonne/20AE_Base_Game_C2_Tile_I.png new file mode 100644 index 0000000..9a6427f --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_I.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7403d0d3cec84ee502f1a3c98fc8f204ba94d70a6be5237d39c945db5734a49 +size 28387 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_J.png b/games/carcassonne/20AE_Base_Game_C2_Tile_J.png new file mode 100644 index 0000000..99f157d --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_J.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1c9f7a0e0869ac5852d5b77ff7a2a5ab5c133f37014084d41b63095bca6b007 +size 27322 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_K.png b/games/carcassonne/20AE_Base_Game_C2_Tile_K.png new file mode 100644 index 0000000..dd6b689 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_K.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ea63592b069e84b06b4993abe68dca813808a4996169ab3abb4415851d8c6f6 +size 27084 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_L.png b/games/carcassonne/20AE_Base_Game_C2_Tile_L.png new file mode 100644 index 0000000..e9af235 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_L.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:122ac6298b91f76193722179ab1c1432a47ffb2f3e867265477552e20ded9069 +size 27409 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_M.png b/games/carcassonne/20AE_Base_Game_C2_Tile_M.png new file mode 100644 index 0000000..d345ad3 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_M.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e511e2803c1b8d65f55ee6bcbf1780e33a1327cae17df5201a6006c1f83e13e +size 27372 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_N.png b/games/carcassonne/20AE_Base_Game_C2_Tile_N.png new file mode 100644 index 0000000..fedfb81 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_N.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:014262ff66a56208e52144ab37b7ada3f912e96da856bf2e431ada59f4ca8114 +size 28303 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_O.png b/games/carcassonne/20AE_Base_Game_C2_Tile_O.png new file mode 100644 index 0000000..a40cdd0 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_O.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c453c8cdc26b4a6875b608bedc906998caf7f420b79fb978a4e2e4b11b76197d +size 29325 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_P.png b/games/carcassonne/20AE_Base_Game_C2_Tile_P.png new file mode 100644 index 0000000..9f97c2c --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_P.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e46a87580c05263a13bd45ee8f2bd8da241b35aec236baa510e30eba06a94de +size 28879 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_Q.png b/games/carcassonne/20AE_Base_Game_C2_Tile_Q.png new file mode 100644 index 0000000..58648fe --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_Q.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f786107d804153fc34e0ba158b8cf9ee49299b8883379850f71d5797359f8ba4 +size 30082 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_R.png b/games/carcassonne/20AE_Base_Game_C2_Tile_R.png new file mode 100644 index 0000000..e504f7b --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_R.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:704bdb8d58eb4245aa1223291708c7c2cafe6a32e7481aebf0623489cc5933b7 +size 30351 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_S.png b/games/carcassonne/20AE_Base_Game_C2_Tile_S.png new file mode 100644 index 0000000..26dfdca --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_S.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87590f2a2154c6c9e437fdb8b8246239ba81c5dfa690ac8f0c8cc452c5d7da85 +size 29954 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_T.png b/games/carcassonne/20AE_Base_Game_C2_Tile_T.png new file mode 100644 index 0000000..4ccc2ce --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_T.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a5e6e56b45edeff5405daf9b6c9a1901f02b9d07076d558e9a2ccfe357afeb8 +size 29713 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_U.png b/games/carcassonne/20AE_Base_Game_C2_Tile_U.png new file mode 100644 index 0000000..9b93588 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_U.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d29dd87cc46a59e8cd898f09de43bd0479380eade7bd1a499eba724c8a7e6f0 +size 24392 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_V.png b/games/carcassonne/20AE_Base_Game_C2_Tile_V.png new file mode 100644 index 0000000..0644fef --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_V.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20bfd6995bb35e26da9fac19453e94aed3e97e6f47b2928f2e2e27245cabe3be +size 24234 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_W.png b/games/carcassonne/20AE_Base_Game_C2_Tile_W.png new file mode 100644 index 0000000..14f5401 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_W.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c792eb53c724c15964295831fefe6f4289d42cd4e91f34dfede6eee26f339cf6 +size 25553 diff --git a/games/carcassonne/20AE_Base_Game_C2_Tile_X.png b/games/carcassonne/20AE_Base_Game_C2_Tile_X.png new file mode 100644 index 0000000..9ee9bf7 --- /dev/null +++ b/games/carcassonne/20AE_Base_Game_C2_Tile_X.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:381fc8da32a85f62779b53eef01def89ae1b44862fc17aa4600335fde77473af +size 24319 diff --git a/games/carcassonne/carcassonne.md b/games/carcassonne/carcassonne.md new file mode 100644 index 0000000..1677dc7 --- /dev/null +++ b/games/carcassonne/carcassonne.md @@ -0,0 +1,229 @@ +# 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: + /draw: carcassonne:tile + /grid/5/5: carcassonne:tile#a + /grid/5/6: carcassonne:tile#b + /grid/6/5: carcassonne:tile#c +``` \ No newline at end of file