140 lines
4.3 KiB
JSON
140 lines
4.3 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"note": "Exact historical campaign JSON bytes archived from Git. Layouts, names and original moveLimit values are unchanged. Validation uses the current shared game rules: rotations and failed probes are free; only successful removals consume budget. These are historical level layouts, not complete reproductions of historical application code or scoring rules.",
|
|
"versions": [
|
|
{
|
|
"version": "v0.1",
|
|
"sourceCommit": "ef2724bb2e6582c92ac26b3a45fcc18c406d6c21",
|
|
"sourceRef": "ef2724b",
|
|
"sourcePath": "levels/campaign.json",
|
|
"sourceBlob": "bb7b2886092acc599c85034224348ff239209887",
|
|
"archivePath": "levels/versions/v0.1.json",
|
|
"sha256": "07f1ccdb985d37f6d1fc6e132aeab63423045427f00af2a7bf8bdcf6ecefc9d1",
|
|
"bytes": 170975,
|
|
"levelCount": 24,
|
|
"firstLevelName": "转一转,路就通了",
|
|
"lastLevelName": "六角大满贯",
|
|
"legacyStorageKeys": [
|
|
"hex-trails-v2"
|
|
],
|
|
"legacyDraftStorageKey": "hex-trails-draft",
|
|
"historicalMoveLimit": {
|
|
"preserved": true,
|
|
"min": 8,
|
|
"max": 32
|
|
},
|
|
"validation": {
|
|
"engine": "current shared src/core.js",
|
|
"validLevels": 24,
|
|
"solvableLevels": 24,
|
|
"replayedWins": 24,
|
|
"failedReplayActions": 0,
|
|
"minimumRotations": 1,
|
|
"maximumRotations": 3,
|
|
"minimumBudgetAfterWin": 3,
|
|
"maximumBudgetAfterWin": 9,
|
|
"initialIndependentLoopPieces": 6,
|
|
"levelsWithInitialIndependentLoops": [
|
|
1,
|
|
6,
|
|
7,
|
|
16,
|
|
20,
|
|
21
|
|
],
|
|
"initialSweptOnlyBlockedPieces": 119,
|
|
"levelsWithInitialSweptOnlyBlocks": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7,
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14,
|
|
15,
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
21,
|
|
22,
|
|
23,
|
|
24
|
|
],
|
|
"note": "Historical loops and swept collisions are intentionally preserved. Audited independently against the historical git blob."
|
|
}
|
|
},
|
|
{
|
|
"version": "v0.2",
|
|
"sourceCommit": "70b021d4cc2fecc832bb3a601452953ed0bd6dd5",
|
|
"sourceRef": "70b021d",
|
|
"sourcePath": "levels/campaign.json",
|
|
"sourceBlob": "601b4ae192935bd3e27ad4eb2bd33770988596a8",
|
|
"archivePath": "levels/versions/v0.2.json",
|
|
"sha256": "becf6422b9e49bda72a7b4c5f6ecd55e40a3bf2f90dd244f9e80a25a1a8589da",
|
|
"bytes": 434460,
|
|
"levelCount": 48,
|
|
"firstLevelName": "一眼看见出口",
|
|
"lastLevelName": "自在回响",
|
|
"legacyStorageKeys": [
|
|
"hex-trails-observe-v3"
|
|
],
|
|
"legacyDraftStorageKey": "hex-trails-draft",
|
|
"historicalMoveLimit": {
|
|
"preserved": true,
|
|
"min": 4,
|
|
"max": 33
|
|
},
|
|
"validation": {
|
|
"engine": "current shared src/core.js",
|
|
"validLevels": 48,
|
|
"solvableLevels": 48,
|
|
"replayedWins": 48,
|
|
"failedReplayActions": 0,
|
|
"initialIndependentLoopPieces": 0,
|
|
"levelsWithInitialIndependentLoops": [],
|
|
"initialSweptOnlyBlockedPieces": 0,
|
|
"levelsWithInitialSweptOnlyBlocks": [],
|
|
"referenceSweptOnlyBlockedStates": 0,
|
|
"minimumRotations": 0,
|
|
"maximumRotations": 1,
|
|
"minimumBudgetAfterWin": 0,
|
|
"maximumBudgetAfterWin": 0
|
|
}
|
|
},
|
|
{
|
|
"version": "v0.3",
|
|
"sourceCommit": "e92cccba82cfc6dab5afb64b2c77a686fd1eb6ba",
|
|
"sourceRef": "e92cccb",
|
|
"sourcePath": "levels/campaign.json",
|
|
"sourceBlob": "bb33a66b0953305d3d2b4a680052408531299a64",
|
|
"archivePath": "levels/versions/v0.3.json",
|
|
"sha256": "6540e28fbc238441791d6afafcace35b80f04d01d57f1d2b6bfb153b30ac6886",
|
|
"bytes": 455033,
|
|
"levelCount": 48,
|
|
"firstLevelName": "跟着弯道走",
|
|
"lastLevelName": "自在回响",
|
|
"legacyStorageKeys": [
|
|
"hex-trails-observe-v3-r2"
|
|
],
|
|
"validation": {
|
|
"engine": "current shared src/core.js",
|
|
"validLevels": 48,
|
|
"solvableLevels": 48,
|
|
"replayedWins": 48,
|
|
"failedReplayActions": 0,
|
|
"minimumRotations": 0,
|
|
"maximumRotations": 2
|
|
}
|
|
}
|
|
]
|
|
}
|