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: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

@@ -0,0 +1,85 @@
{
"earlier": {
"actions": [
{
"lesson": "trail-tutorial-01",
"type": "tap",
"id": "traveler",
"status": "exit",
"steps": 4,
"time": 462.7000000178814
},
{
"lesson": "trail-tutorial-02",
"type": "tap",
"id": "traveler",
"status": "blocked",
"steps": 3,
"time": 46924.20000001788
},
{
"lesson": "trail-tutorial-02",
"type": "tap",
"id": "gate",
"status": "exit",
"steps": 1,
"time": 47732.20000001788
},
{
"lesson": "trail-tutorial-02",
"type": "tap",
"id": "traveler",
"status": "exit",
"steps": 4,
"time": 47740.40000000596
}
],
"formalBefore": "{\"current\":848,\"completed\":[999,33,848]}"
},
"opened": {
"orientation": "300°",
"feedback": "转一转,2 枚棋子的出口打开了!"
},
"third": {
"won": true,
"result": "入门 3 / 3\n转一下,路就通了\n\n旋转只改变底盘轨道,棋子的位置和箭头不变。新路线接通,就能出发。\n\n开始第 1 关\n再试一次",
"actions": [
{
"lesson": "trail-tutorial-03",
"type": "rotate",
"dir": -1,
"status": "rotated",
"tilesFixed": true
},
{
"lesson": "trail-tutorial-03",
"type": "tap",
"id": "north",
"status": "exit",
"steps": 4,
"time": 779.5
},
{
"lesson": "trail-tutorial-03",
"type": "tap",
"id": "south",
"status": "exit",
"steps": 4,
"time": 891
}
],
"tutorialProgress": "{\"current\":2,\"completed\":[0,1,2]}",
"formalAfterTeaching": "{\"current\":848,\"completed\":[999,33,848]}"
},
"entered": {
"header": "LEVEL 01",
"moves": "3",
"tutorial": false,
"formalProgress": "{\"current\":0,\"completed\":[999,33,848]}",
"viewport": {
"width": 390,
"height": 844,
"scrollWidth": 390
}
}
}
@@ -0,0 +1,116 @@
[
{
"header": "入门 3 / 3",
"width": 320,
"height": 568,
"scrollWidth": 320,
"scrollHeight": 568,
"notice": {
"x": 20,
"y": 98,
"width": 280,
"height": 56,
"top": 98,
"right": 300,
"bottom": 154,
"left": 20
},
"noticeOpacity": "1",
"canvas": {
"x": 8,
"y": 160,
"width": 304,
"height": 336,
"top": 160,
"right": 312,
"bottom": 496,
"left": 8
},
"rotate": {
"x": 210.6640625,
"y": 493.3565979003906,
"width": 101.3359375,
"height": 63.999969482421875,
"top": 493.3565979003906,
"right": 312,
"bottom": 557.3565673828125,
"left": 210.6640625
}
},
{
"header": "入门 3 / 3",
"width": 390,
"height": 844,
"scrollWidth": 390,
"scrollHeight": 844,
"notice": {
"x": 49.5,
"y": 107,
"width": 291,
"height": 38,
"top": 107,
"right": 340.5,
"bottom": 145,
"left": 49.5
},
"noticeOpacity": "1",
"canvas": {
"x": 8,
"y": 160,
"width": 373.9921875,
"height": 612,
"top": 160,
"right": 381.9921875,
"bottom": 772,
"left": 8
},
"rotate": {
"x": 257.328125,
"y": 769.2265014648438,
"width": 124.6640625,
"height": 64,
"top": 769.2265014648438,
"right": 381.9921875,
"bottom": 833.2265014648438,
"left": 257.328125
}
},
{
"header": "入门 3 / 3",
"width": 1440,
"height": 1000,
"scrollWidth": 1440,
"scrollHeight": 1000,
"notice": {
"x": 564.75,
"y": 130.25,
"width": 310.5,
"height": 39.5,
"top": 130.25,
"right": 875.25,
"bottom": 169.75,
"left": 564.75
},
"noticeOpacity": "1",
"canvas": {
"x": 260,
"y": 184,
"width": 919.9921875,
"height": 712,
"top": 184,
"right": 1179.9921875,
"bottom": 896,
"left": 260
},
"rotate": {
"x": 873.328125,
"y": 895.62353515625,
"width": 306.6640625,
"height": 72,
"top": 895.62353515625,
"right": 1179.9921875,
"bottom": 967.62353515625,
"left": 873.328125
}
}
]
Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

+79
View File
@@ -0,0 +1,79 @@
{
"edition": "complete-19-cell-boards",
"formalBefore": "{\"current\":0,\"completed\":[999,33,848]}",
"results": [
{
"header": "入门 1 / 3",
"won": true,
"moves": "0",
"cells": 19
},
{
"header": "入门 2 / 3",
"won": true,
"moves": "0",
"cells": 19
},
{
"header": "入门 3 / 3",
"won": true,
"moves": "0",
"cells": 19
}
],
"actions": [
{
"lesson": "trail-tutorial-01",
"type": "tap",
"id": "traveler",
"status": "exit",
"steps": 6,
"time": 64082.79999998212
},
{
"lesson": "trail-tutorial-02",
"type": "tap",
"id": "gate",
"status": "exit",
"steps": 3,
"time": 66306
},
{
"lesson": "trail-tutorial-02",
"type": "tap",
"id": "traveler",
"status": "exit",
"steps": 6,
"time": 66308.79999998212
},
{
"lesson": "trail-tutorial-03",
"type": "rotate",
"dir": 1,
"status": "rotated",
"tilesFixed": true
},
{
"lesson": "trail-tutorial-03",
"type": "tap",
"id": "north",
"status": "exit",
"steps": 6,
"time": 68922.19999998808
},
{
"lesson": "trail-tutorial-03",
"type": "tap",
"id": "south",
"status": "exit",
"steps": 6,
"time": 68928
}
],
"formalAfterTeaching": "{\"current\":0,\"completed\":[999,33,848]}",
"tutorialProgress": "{\"current\":2,\"completed\":[0,1,2]}",
"entered": {
"header": "LEVEL 01",
"formalProgress": "{\"current\":0,\"completed\":[999,33,848]}"
}
}
+46
View File
@@ -0,0 +1,46 @@
[
{
"width": 320,
"height": 568,
"scrollWidth": 320,
"scrollHeight": 568,
"cells": 19,
"canvas": {
"x": 8,
"y": 160,
"width": 304,
"height": 336,
"top": 160,
"right": 312,
"bottom": 496,
"left": 8
},
"bounds": {
"top": 29.43674831559187,
"bottom": 306.5632516844081
},
"allRowsVisible": true
},
{
"width": 1440,
"height": 1000,
"scrollWidth": 1440,
"scrollHeight": 1000,
"cells": 19,
"canvas": {
"x": 260,
"y": 184,
"width": 919.9921875,
"height": 712,
"top": 184,
"right": 1179.9921875,
"bottom": 896,
"left": 260
},
"bounds": {
"top": 47.69676500219191,
"bottom": 664.3032349978081
},
"allRowsVisible": true
}
]
Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB