feat: add production campaigns, gameplay labs, and review documentation

This commit is contained in:
cabinw
2026-09-13 12:27:10 +08:00
parent d1dffa9338
commit 4644e975b0
214 changed files with 98994 additions and 134 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

+185
View File
@@ -0,0 +1,185 @@
{
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"files": [
{
"chapter": 1,
"first": 1,
"last": 50,
"path": "docs/v0.5-review/contact-01.png",
"width": 1524,
"height": 3876,
"sha256": "7d427f9540b3a2357358367f47d2b83e4cc52fecf88b733bc3f8f0829421495c"
},
{
"chapter": 2,
"first": 51,
"last": 100,
"path": "docs/v0.5-review/contact-02.png",
"width": 1524,
"height": 3876,
"sha256": "ba33ac284f23d8d1dd197b259ccf9ace37f9d24c41ef31a81dd091124d92ac1e"
},
{
"chapter": 3,
"first": 101,
"last": 150,
"path": "docs/v0.5-review/contact-03.png",
"width": 1524,
"height": 3876,
"sha256": "04edcf0acd252cfd7039320be1360e21bb22d7972d4a66ea56d2c81e9d599e19"
},
{
"chapter": 4,
"first": 151,
"last": 200,
"path": "docs/v0.5-review/contact-04.png",
"width": 1524,
"height": 3876,
"sha256": "325b1ccdbb9c24af981eb1560ad5f1b4f7a98e2bf0882ddd0c00062b045fb8a6"
},
{
"chapter": 5,
"first": 201,
"last": 250,
"path": "docs/v0.5-review/contact-05.png",
"width": 1524,
"height": 3876,
"sha256": "4d117b50cc82b720be9ecd94c72ce8a29cc336eafe26d91f4fd8a0a7c258e375"
},
{
"chapter": 6,
"first": 251,
"last": 300,
"path": "docs/v0.5-review/contact-06.png",
"width": 1524,
"height": 3876,
"sha256": "1c83dd3c799886099ff39c1a883753e20c7dcd9e404505a85638ebecb8987063"
},
{
"chapter": 7,
"first": 301,
"last": 350,
"path": "docs/v0.5-review/contact-07.png",
"width": 1524,
"height": 3876,
"sha256": "0d943a96cf661409357d18dd2429fb806f4da738665ac201a4d43d0ad9713917"
},
{
"chapter": 8,
"first": 351,
"last": 400,
"path": "docs/v0.5-review/contact-08.png",
"width": 1524,
"height": 3876,
"sha256": "f892fd7a96b7a9793ce14d63f8b636d2a48aeb53ad3b907b1d8b715afd44ec0f"
},
{
"chapter": 9,
"first": 401,
"last": 450,
"path": "docs/v0.5-review/contact-09.png",
"width": 1524,
"height": 3876,
"sha256": "e27b08364f9c3f20ccd9cf804e61cb480dfa583d933136a5fbf6a2eb86bf43a3"
},
{
"chapter": 10,
"first": 451,
"last": 500,
"path": "docs/v0.5-review/contact-10.png",
"width": 1524,
"height": 3876,
"sha256": "e47a2b9fbff70c3699f6c7ddf4cad64d60e066630daf25e05d2014a4eb1dcb47"
},
{
"chapter": 11,
"first": 501,
"last": 550,
"path": "docs/v0.5-review/contact-11.png",
"width": 1524,
"height": 3876,
"sha256": "9e5ecd87383af7c008ddcffaed930eb7a0b5e726526fcfdc8cd3dde93e4adbe4"
},
{
"chapter": 12,
"first": 551,
"last": 600,
"path": "docs/v0.5-review/contact-12.png",
"width": 1524,
"height": 3876,
"sha256": "183c8cf1348a8c5f4a2505e98f6152b2d986a06a6cb4c112f132b2264491759a"
},
{
"chapter": 13,
"first": 601,
"last": 650,
"path": "docs/v0.5-review/contact-13.png",
"width": 1524,
"height": 3876,
"sha256": "4a70031fd760f440a20dba999f132c0bca4e7c3fb451c78ae4e37a9646fe6add"
},
{
"chapter": 14,
"first": 651,
"last": 700,
"path": "docs/v0.5-review/contact-14.png",
"width": 1524,
"height": 3876,
"sha256": "5e65d366050cd7b3a259b7e6e6e465adffbb0f18063e2448971472087757d6fd"
},
{
"chapter": 15,
"first": 701,
"last": 750,
"path": "docs/v0.5-review/contact-15.png",
"width": 1524,
"height": 3876,
"sha256": "a72dfe42b728ccbabd09c8fca4172d725f37766391af872d89163b04c3551389"
},
{
"chapter": 16,
"first": 751,
"last": 800,
"path": "docs/v0.5-review/contact-16.png",
"width": 1524,
"height": 3876,
"sha256": "d8dda5c1d53d35078bb15a67b615101e011562a42737b404bb017f664bf316ee"
},
{
"chapter": 17,
"first": 801,
"last": 850,
"path": "docs/v0.5-review/contact-17.png",
"width": 1524,
"height": 3876,
"sha256": "811b59cd004b0e33046ba7c96109a2868ef6a206daa93d07f185dd4098ad31d3"
},
{
"chapter": 18,
"first": 851,
"last": 900,
"path": "docs/v0.5-review/contact-18.png",
"width": 1524,
"height": 3876,
"sha256": "078ccf07931bac8893fca74019089cd5e46f7dfe1b0ccf13c1d81d8fd3f0d968"
},
{
"chapter": 19,
"first": 901,
"last": 950,
"path": "docs/v0.5-review/contact-19.png",
"width": 1524,
"height": 3876,
"sha256": "77ac13cf98305b694f6f1b820dc5f272fb956f3984d7a76ba2b48700587228dd"
},
{
"chapter": 20,
"first": 951,
"last": 1000,
"path": "docs/v0.5-review/contact-20.png",
"width": 1524,
"height": 3876,
"sha256": "5aec4c5b52cda1185ce8a8aad088d3674b4b192816b9f9fe0690646fa2fe14ae"
}
]
}
+54
View File
@@ -0,0 +1,54 @@
{
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"levels": 1000,
"samples": [
{
"number": 1,
"id": "trail-v05-0001",
"name": "回折 · 长路巡游",
"layoutHash": "d40409ef64404be3faaddd00576309648439d7d5b34a991f91a10a76f62090a0",
"expected": "d40409ef64404be3faaddd00576309648439d7d5b34a991f91a10a76f62090a0",
"verified": true
},
{
"number": 3,
"id": "trail-v05-0003",
"name": "花瓣 · 清挡放行",
"layoutHash": "9b6259948949878233b94977dffccc9a2cd1a22b2ae7961b723af67ec85a9d49",
"expected": "9b6259948949878233b94977dffccc9a2cd1a22b2ae7961b723af67ec85a9d49",
"verified": true
},
{
"number": 4,
"id": "trail-v05-0004",
"name": "螺旋 · 轻巧反差",
"layoutHash": "aaa748bc33cb199f27478a76b23e71959082f5974a93b8173bde29c7466ca833",
"expected": "aaa748bc33cb199f27478a76b23e71959082f5974a93b8173bde29c7466ca833",
"verified": true
},
{
"number": 34,
"id": "trail-v05-0034",
"name": "环绕 · 分段释放",
"layoutHash": "31736443aaa234fe34fee7a6263d75a679ab46d37dd548f28304085d650b6927",
"expected": "31736443aaa234fe34fee7a6263d75a679ab46d37dd548f28304085d650b6927",
"verified": true
},
{
"number": 849,
"id": "trail-v05-0849",
"name": "编织 · 长路巡游",
"layoutHash": "82243dd0eee425b1ce2bc640ca184046712959fe3090d0f8287f0e0645367838",
"expected": "82243dd0eee425b1ce2bc640ca184046712959fe3090d0f8287f0e0645367838",
"verified": true
},
{
"number": 1000,
"id": "trail-v05-1000",
"name": "花瓣 · 分段释放",
"layoutHash": "c855ba95f504d7280b81820c2af64010fddcfc731041c3b176e7d88301249ba9",
"expected": "c855ba95f504d7280b81820c2af64010fddcfc731041c3b176e7d88301249ba9",
"verified": true
}
]
}
+393
View File
@@ -0,0 +1,393 @@
[
{
"number": 34,
"tiles": 8,
"cells": 37,
"layoutHash": "31736443aaa234fe34fee7a6263d75a679ab46d37dd548f28304085d650b6927",
"actions": [
{
"type": "tap",
"id": "t7"
},
{
"type": "tap",
"id": "t6"
},
{
"type": "tap",
"id": "t5"
},
{
"type": "tap",
"id": "t4"
},
{
"type": "tap",
"id": "t3"
},
{
"type": "rotate",
"direction": 1
},
{
"type": "tap",
"id": "t1"
},
{
"type": "rotate",
"direction": -1
},
{
"type": "tap",
"id": "t0"
},
{
"type": "tap",
"id": "t2"
}
],
"kind": "stages",
"entry": "LEVEL 34",
"reduced": false,
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"events": [
{
"method": "tap",
"value": "t7",
"status": "exit",
"remaining": 7
},
{
"method": "tap",
"value": "t6",
"status": "exit",
"remaining": 6
},
{
"method": "tap",
"value": "t5",
"status": "exit",
"remaining": 5
},
{
"method": "tap",
"value": "t4",
"status": "exit",
"remaining": 4
},
{
"method": "tap",
"value": "t3",
"status": "exit",
"remaining": 3
},
{
"method": "rotate",
"value": 1,
"status": "rotated",
"remaining": 3
},
{
"method": "tap",
"value": "t1",
"status": "exit",
"remaining": 2
},
{
"method": "rotate",
"value": -1,
"status": "rotated",
"remaining": 2
},
{
"method": "tap",
"value": "t0",
"status": "exit",
"remaining": 1
},
{
"method": "tap",
"value": "t2",
"status": "exit",
"remaining": 0
}
],
"remaining": "0",
"wonDialog": true
},
{
"number": 849,
"tiles": 8,
"cells": 61,
"layoutHash": "82243dd0eee425b1ce2bc640ca184046712959fe3090d0f8287f0e0645367838",
"actions": [
{
"type": "tap",
"id": "t0"
},
{
"type": "tap",
"id": "t7"
},
{
"type": "tap",
"id": "t6"
},
{
"type": "tap",
"id": "t5"
},
{
"type": "tap",
"id": "t4"
},
{
"type": "tap",
"id": "t3"
},
{
"type": "tap",
"id": "t2"
},
{
"type": "tap",
"id": "t1"
}
],
"kind": "tour",
"entry": "LEVEL 849",
"reduced": false,
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"events": [
{
"method": "tap",
"value": "t0",
"status": "exit",
"remaining": 7
},
{
"method": "tap",
"value": "t7",
"status": "exit",
"remaining": 6
},
{
"method": "tap",
"value": "t6",
"status": "exit",
"remaining": 5
},
{
"method": "tap",
"value": "t5",
"status": "exit",
"remaining": 4
},
{
"method": "tap",
"value": "t4",
"status": "exit",
"remaining": 3
},
{
"method": "tap",
"value": "t3",
"status": "exit",
"remaining": 2
},
{
"method": "tap",
"value": "t2",
"status": "exit",
"remaining": 1
},
{
"method": "tap",
"value": "t1",
"status": "exit",
"remaining": 0
}
],
"remaining": "0",
"wonDialog": true
},
{
"number": 1000,
"tiles": 14,
"actions": [
{
"type": "tap",
"id": "t13"
},
{
"type": "tap",
"id": "t12"
},
{
"type": "tap",
"id": "t11"
},
{
"type": "tap",
"id": "t10"
},
{
"type": "tap",
"id": "t9"
},
{
"type": "tap",
"id": "t8"
},
{
"type": "tap",
"id": "t7"
},
{
"type": "tap",
"id": "t6"
},
{
"type": "tap",
"id": "t5"
},
{
"type": "tap",
"id": "t4"
},
{
"type": "tap",
"id": "t3"
},
{
"type": "rotate",
"direction": 1
},
{
"type": "tap",
"id": "t1"
},
{
"type": "rotate",
"direction": -1
},
{
"type": "tap",
"id": "t0"
},
{
"type": "tap",
"id": "t2"
}
],
"kind": "stages",
"entry": "LEVEL 1000",
"reduced": false,
"events": [
{
"method": "tap",
"value": "t13",
"status": "exit",
"remaining": 13
},
{
"method": "tap",
"value": "t12",
"status": "exit",
"remaining": 12
},
{
"method": "tap",
"value": "t11",
"status": "exit",
"remaining": 11
},
{
"method": "tap",
"value": "t10",
"status": "exit",
"remaining": 10
},
{
"method": "tap",
"value": "t9",
"status": "exit",
"remaining": 9
},
{
"method": "tap",
"value": "t8",
"status": "exit",
"remaining": 8
},
{
"method": "tap",
"value": "t7",
"status": "exit",
"remaining": 7
},
{
"method": "tap",
"value": "t6",
"status": "exit",
"remaining": 6
},
{
"method": "tap",
"value": "t5",
"status": "exit",
"remaining": 5
},
{
"method": "tap",
"value": "t4",
"status": "exit",
"remaining": 4
},
{
"method": "tap",
"value": "t3",
"status": "exit",
"remaining": 3
},
{
"method": "rotate",
"value": 1,
"status": "rotated",
"remaining": 3
},
{
"method": "tap",
"value": "t1",
"status": "exit",
"remaining": 2
},
{
"method": "rotate",
"value": -1,
"status": "rotated",
"remaining": 2
},
{
"method": "tap",
"value": "t0",
"status": "exit",
"remaining": 1
},
{
"method": "tap",
"value": "t2",
"status": "exit",
"remaining": 0
}
],
"remaining": "0",
"wonDialog": true,
"nextButton": "完成旅程 · 回到第一关 ",
"returnedLevel": "LEVEL 01",
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"layoutHash": "c855ba95f504d7280b81820c2af64010fddcfc731041c3b176e7d88301249ba9",
"retainedByIdenticalLayoutHash": true,
"replaySource": "development-snapshot-witness"
}
]
+48
View File
@@ -0,0 +1,48 @@
{
"gate": {
"number": 3,
"heroBefore": "blocked",
"tiles": 5,
"kind": "gate",
"heroAfterGate": "exit",
"events": [
{
"id": "t1",
"status": "exit",
"at": 345,
"routeCells": 2,
"remaining": 4
},
{
"id": "t0",
"status": "exit",
"at": 380.59999999403954,
"routeCells": 13,
"remaining": 3
}
],
"layoutHash": "9b6259948949878233b94977dffccc9a2cd1a22b2ae7961b723af67ec85a9d49",
"retainedByIdenticalLayoutHash": true,
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d"
},
"contrast": {
"number": 4,
"tiles": 5,
"kind": "contrast",
"heroBefore": "blocked",
"loadMs": 168.5,
"orientation": "60°",
"events": [
{
"id": "t0",
"status": "exit",
"at": 2039.9000000059605,
"routeCells": 10,
"duration": 1995.229284140118,
"remaining": 4
}
],
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"layoutHash": "aaa748bc33cb199f27478a76b23e71959082f5974a93b8173bde29c7466ca833"
}
}
+43
View File
@@ -0,0 +1,43 @@
{
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"previousPipelineHash": "a2188a0951cf3985337e2d3cfaff5ca97f5dcd25c426c5373512f6b0e6684193",
"changed": 790,
"samples": [
{
"number": 1,
"previous": "e808ef41665cca5b44d01acdfacf5a24d0b058c011389ca7f9b89097d7690158",
"final": "d40409ef64404be3faaddd00576309648439d7d5b34a991f91a10a76f62090a0",
"unchanged": false
},
{
"number": 3,
"previous": "9b6259948949878233b94977dffccc9a2cd1a22b2ae7961b723af67ec85a9d49",
"final": "9b6259948949878233b94977dffccc9a2cd1a22b2ae7961b723af67ec85a9d49",
"unchanged": true
},
{
"number": 4,
"previous": "5a3d8fd6909bc341cf6bee6586c8d785fba4c1ecfb90b5a5d4018ff2e53c1e08",
"final": "aaa748bc33cb199f27478a76b23e71959082f5974a93b8173bde29c7466ca833",
"unchanged": false
},
{
"number": 34,
"previous": "f7fc41f08ea89a58eee51a217190be08450c1f2933578821cb8892a041996e7d",
"final": "31736443aaa234fe34fee7a6263d75a679ab46d37dd548f28304085d650b6927",
"unchanged": false
},
{
"number": 849,
"previous": "f7846fbc3361fda6c5e2670c3cea2b0b9887da3145140bd7fe4eed83b594f125",
"final": "82243dd0eee425b1ce2bc640ca184046712959fe3090d0f8287f0e0645367838",
"unchanged": false
},
{
"number": 1000,
"previous": "c855ba95f504d7280b81820c2af64010fddcfc731041c3b176e7d88301249ba9",
"final": "c855ba95f504d7280b81820c2af64010fddcfc731041c3b176e7d88301249ba9",
"unchanged": true
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

+12
View File
@@ -0,0 +1,12 @@
{
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"viewport": {
"width": 1440,
"height": 1000
},
"loadMs": 178.69999998807907,
"moduleMs": 42.5,
"moduleBytes": 9622010,
"cacheDisabled": true,
"environment": "local HTTP, no mobile network throttling"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

+22
View File
@@ -0,0 +1,22 @@
{
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"entries": 1000,
"level": "trail-v05-1000",
"manualLoaded": true,
"manualReview": {
"id": "trail-v05-1000",
"number": 1000,
"layoutHash": "c855ba95f504d7280b81820c2af64010fddcfc731041c3b176e7d88301249ba9",
"visual": "chapter-overview-reviewed",
"browserPlay": "complete-browser-replay-passed: 16 actions, victory, campaign ending; mobile zoom/pan/rotate sampled",
"playerCalibration": "not-tested",
"sources": [
"docs/v0.5-review/contact-20.png",
"docs/v0.5-visual-audit-late.md",
"docs/v0.5-browser-review.md",
"docs/v0.5-review/final-browser-batch.json"
]
},
"dialogOpen": true,
"title": "花瓣 · 分段释放"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

+24
View File
@@ -0,0 +1,24 @@
{
"first": {
"chapter": "0",
"buttons": 50,
"sideButtons": 50,
"first": "0",
"last": "49"
},
"last": {
"buttons": 50,
"first": "950",
"last": "999",
"overflow": false
},
"jumped": "LEVEL 501",
"old": {
"version": "v0.4",
"level": "LEVEL 01"
},
"restored": {
"version": "v0.5",
"level": "LEVEL 501"
}
}
+10
View File
@@ -0,0 +1,10 @@
{
"changed": true,
"remainingBefore": "14",
"remainingAfter": "14",
"zoomDuringPan": "154%",
"resetZoom": "100%",
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"layoutHash": "c855ba95f504d7280b81820c2af64010fddcfc731041c3b176e7d88301249ba9",
"retainedByIdenticalLayoutHash": true
}
@@ -0,0 +1,290 @@
[
{
"number": 34,
"tiles": 8,
"actions": [
{
"type": "tap",
"id": "t7"
},
{
"type": "tap",
"id": "t6"
},
{
"type": "tap",
"id": "t5"
},
{
"type": "tap",
"id": "t4"
},
{
"type": "tap",
"id": "t3"
},
{
"type": "rotate",
"direction": 1
},
{
"type": "tap",
"id": "t1"
},
{
"type": "rotate",
"direction": -1
},
{
"type": "tap",
"id": "t0"
},
{
"type": "tap",
"id": "t2"
}
],
"kind": "stages",
"entry": "LEVEL 34",
"events": [
{
"method": "tap",
"value": "t7",
"status": "exit",
"remaining": 7
},
{
"method": "tap",
"value": "t6",
"status": "exit",
"remaining": 6
},
{
"method": "tap",
"value": "t5",
"status": "exit",
"remaining": 5
},
{
"method": "tap",
"value": "t4",
"status": "exit",
"remaining": 4
},
{
"method": "tap",
"value": "t3",
"status": "exit",
"remaining": 3
},
{
"method": "rotate",
"value": 1,
"status": "rotated",
"remaining": 3
},
{
"method": "tap",
"value": "t1",
"status": "exit",
"remaining": 2
},
{
"method": "rotate",
"value": -1,
"status": "rotated",
"remaining": 2
},
{
"method": "tap",
"value": "t0",
"status": "exit",
"remaining": 1
},
{
"method": "tap",
"value": "t2",
"status": "exit",
"remaining": 0
}
],
"remaining": "0",
"wonDialog": true,
"reduced": false
},
{
"number": 1000,
"tiles": 14,
"actions": [
{
"type": "tap",
"id": "t13"
},
{
"type": "tap",
"id": "t12"
},
{
"type": "tap",
"id": "t11"
},
{
"type": "tap",
"id": "t10"
},
{
"type": "tap",
"id": "t9"
},
{
"type": "tap",
"id": "t8"
},
{
"type": "tap",
"id": "t7"
},
{
"type": "tap",
"id": "t6"
},
{
"type": "tap",
"id": "t5"
},
{
"type": "tap",
"id": "t4"
},
{
"type": "tap",
"id": "t3"
},
{
"type": "rotate",
"direction": 1
},
{
"type": "tap",
"id": "t1"
},
{
"type": "rotate",
"direction": -1
},
{
"type": "tap",
"id": "t0"
},
{
"type": "tap",
"id": "t2"
}
],
"kind": "stages",
"entry": "LEVEL 1000",
"reduced": false,
"events": [
{
"method": "tap",
"value": "t13",
"status": "exit",
"remaining": 13
},
{
"method": "tap",
"value": "t12",
"status": "exit",
"remaining": 12
},
{
"method": "tap",
"value": "t11",
"status": "exit",
"remaining": 11
},
{
"method": "tap",
"value": "t10",
"status": "exit",
"remaining": 10
},
{
"method": "tap",
"value": "t9",
"status": "exit",
"remaining": 9
},
{
"method": "tap",
"value": "t8",
"status": "exit",
"remaining": 8
},
{
"method": "tap",
"value": "t7",
"status": "exit",
"remaining": 7
},
{
"method": "tap",
"value": "t6",
"status": "exit",
"remaining": 6
},
{
"method": "tap",
"value": "t5",
"status": "exit",
"remaining": 5
},
{
"method": "tap",
"value": "t4",
"status": "exit",
"remaining": 4
},
{
"method": "tap",
"value": "t3",
"status": "exit",
"remaining": 3
},
{
"method": "rotate",
"value": 1,
"status": "rotated",
"remaining": 3
},
{
"method": "tap",
"value": "t1",
"status": "exit",
"remaining": 2
},
{
"method": "rotate",
"value": -1,
"status": "rotated",
"remaining": 2
},
{
"method": "tap",
"value": "t0",
"status": "exit",
"remaining": 1
},
{
"method": "tap",
"value": "t2",
"status": "exit",
"remaining": 0
}
],
"remaining": "0",
"wonDialog": true,
"nextButton": "完成旅程 · 回到第一关 ",
"returnedLevel": "LEVEL 01"
}
]
@@ -0,0 +1,41 @@
{
"gate": {
"number": 3,
"heroBefore": "blocked",
"tiles": 5,
"kind": "gate",
"heroAfterGate": "exit",
"events": [
{
"id": "t1",
"status": "exit",
"at": 345,
"routeCells": 2,
"remaining": 4
},
{
"id": "t0",
"status": "exit",
"at": 380.59999999403954,
"routeCells": 13,
"remaining": 3
}
]
},
"contrast": {
"number": 4,
"heroBefore": "blocked",
"tiles": 5,
"kind": "contrast",
"orientation": "60°",
"events": [
{
"id": "t0",
"status": "exit",
"at": 912.1000000238419,
"routeCells": 10,
"remaining": 4
}
]
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

+23
View File
@@ -0,0 +1,23 @@
{
"events": [
{
"id": "t0",
"status": "exit",
"at": 356.19999998807907,
"routeCells": 14,
"duration": 2818.0381373993723,
"remaining": 2
},
{
"id": "t1",
"status": "exit",
"at": 390.7999999821186,
"routeCells": 3,
"duration": 779.6152422706633,
"remaining": 1
}
],
"remaining": "1",
"resultOpen": false,
"overflow": false
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

+46
View File
@@ -0,0 +1,46 @@
{
"before": {
"width": 390,
"height": 844,
"zoom": "100%",
"visible": "flex",
"overflow": false,
"canvas": {
"x": 8,
"y": 208,
"width": 373.9921875,
"height": 564,
"top": 208,
"right": 381.9921875,
"bottom": 772,
"left": 8
},
"toolbar": {
"x": 228.3515625,
"y": 163,
"width": 143.640625,
"height": 42,
"top": 163,
"right": 371.9921875,
"bottom": 205,
"left": 228.3515625
}
},
"zoom": "154%",
"tile": {
"id": "t13",
"x": 106.1888882483258,
"y": 387.45427199526,
"pieceDiameter": 58.31673161276606,
"fitPieceDiameter": 37.77674172794118
},
"orientation": "60°",
"tap": {
"id": "t13",
"status": "exit",
"remaining": 13
},
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"layoutHash": "c855ba95f504d7280b81820c2af64010fddcfc731041c3b176e7d88301249ba9",
"retainedByIdenticalLayoutHash": true
}
+30
View File
@@ -0,0 +1,30 @@
{
"number": 1,
"tiles": 3,
"kind": "tour",
"heroBefore": "exit",
"loadMs": 183.5,
"events": [
{
"id": "t0",
"status": "exit",
"at": 356.09999999403954,
"routeCells": 13,
"duration": 2627.2810841634755,
"remaining": 2
},
{
"id": "t1",
"status": "exit",
"at": 465.7000000178814,
"routeCells": 1,
"duration": 318.5640646055102,
"remaining": 1
}
],
"remaining": "1",
"resultOpen": false,
"overlapConfirmed": true,
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"layoutHash": "d40409ef64404be3faaddd00576309648439d7d5b34a991f91a10a76f62090a0"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

+7
View File
@@ -0,0 +1,7 @@
{
"status": "3 步回放完成,3 枚棋子全部离场。",
"actions": 3,
"active": "放出棋子 t1",
"pipelineHash": "ef59b3d561147031a8cbfd059c67fabe01054039e89cba4c27c7b6408d05b03d",
"layoutHash": "d40409ef64404be3faaddd00576309648439d7d5b34a991f91a10a76f62090a0"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

+26
View File
@@ -0,0 +1,26 @@
{
"date": "2026-09-12",
"change": "Main game renders all real tracks uniformly; route emphasis remains in design review only.",
"smallRotated": {
"level": "LEVEL 05",
"orientation": "60°",
"strokes": {
"#89867D / 1": 19,
"#F2EEE5 / 6.51984375": 57,
"#435F78 / 4.07490234375": 57
}
},
"large": {
"level": "LEVEL 1000",
"viewport": {
"width": 390,
"height": 844,
"scrollWidth": 390
},
"strokes": {
"#89867D / 1": 91,
"#F2EEE5 / 4": 273,
"#435F78 / 2.5": 273
}
}
}