feat: version campaigns and document original puzzle design

Restore v0.1 and v0.2 archives with separate progress, publish the curved v0.3 campaign, and document the original 24-level design with reproducible evidence. Refine board presentation and movement, and keep video lab tooling within its own directory.
This commit is contained in:
cabinw
2026-09-09 13:17:30 +08:00
parent 70b021d4cc
commit e92cccba82
52 changed files with 76449 additions and 15076 deletions
+15 -4
View File
@@ -2,7 +2,9 @@
一款竖屏六角轨道解谜游戏:观察路线,点击箭头棋子让它离场;免费旋转底盘和尝试路线,在清楚的反馈中逐步清空棋盘。
项目使用原生 JavaScript ES modules 和 Canvas,无第三方运行依赖,无在线字体或 CDN。主线按 48 关、8 章 × 6 拍制作,并提供关卡工坊、求解器、确定性关卡生成器,以及 Cocos Creator 适配示例。
项目使用原生 JavaScript ES modules 和 Canvas,无第三方运行依赖,无在线字体或 CDN。选关窗口提供 v0.1 最初 24 关、v0.2 直线较多的 48 关与 v0.3 当前弯轨 48 关;默认 v0.3,按 8 章 × 6 拍制作。另有关卡工坊、求解器、确定性关卡生成器,以及 Cocos Creator 适配示例。
后续关卡优化的原始设计参照见 [v0.1 · 最初 24 关设计理念](docs/v0.1-design-philosophy.md):还原必要旋转、空间让路与分阶段解开轨道的结构,并区分历史规则、实际布局和本次设计归纳。
## 快速开始
@@ -30,9 +32,13 @@ npm run dev
主线每章按“进入 → 换路 → 展开 → 小挑战 → 释放 → 长局回报”安排,不按难度分数单调排序,也不要求每关必须旋转。早期就可使用 37 格棋盘,后期舒缓关使用 61 格延长熟悉操作的体验;19 格小棋盘也可承担局部挑战。棋盘规模与认知难度分别记录。
9 月 9 日版的 48 关以真正的弯轨消除为主:每关参考解答至少 65% 的成功离场棋子经过弯道,且不少于 3 枚。直线只作少量节奏调剂,不安排纯直出关,也不用空格上的装饰曲线充数。当前单关最多 25 枚棋子,后期长局增加的是沿弯轨观察与解开的实际内容。
第 1 关为 37 格、8 枚棋子,开局全部可离场,每枚参考路径恰好转弯一次,无需旋转;“全部可离场”不表示任意朝向都相同。前 7 关通过 `lesson` 字段依次学习箭头起步与弯轨转向、旋转换路而棋子箭头不动、交叉不换轨、阻挡先后、舒缓的一两弯、大盘连续解路径,以及完整路线观察。
主线发布要求包括完整可解、每枚棋子在六个朝向下的独立路线无闭环,以及参考解答中的阻挡可解释、旋转后有明确进展;这些门槛不代表玩家任意旋转或点击序列都不会遇阻。制作方向见 [玩法方向](docs/gameplay-direction.md),逐关生成与验收记录见 [主线审阅报告](docs/campaign-review.md),验证结果以实际生成报告和测试输出为准。
所有关卡可自由选择,通关进度保存在当前浏览器。音效使用 Web Audio 合成,首次交互后启用,可在设置中关闭并保存偏好。
所有关卡可自由选择。在左上角选关窗口切换 v0.1 / v0.2 / v0.3,分别保存通关进度与上次选关;对应旧存档会自动迁移,旧数据继续保留。历史布局原样恢复,三版共用当前免费旋转与失败试路规则,详见 [关卡版本与来源](docs/campaign-versions.md)。以上弯轨比例与节奏门槛针对 v0.3。音效使用 Web Audio 合成,首次交互后启用,可在设置中关闭并保存偏好。
## 关卡工坊
@@ -51,7 +57,8 @@ npm run dev
| `npm run dev` | 启动本地开发服务,默认端口 4173 |
| `npm test` | 执行 Node 内置测试套件 |
| `npm run build` | 生成设计资源并输出静态站点到 `dist/` |
| `npm run levels` | 使用固定种子重新生成 48 关,同步关卡 JSON、共享模块和逐关验收报告 |
| `npm run levels` | 读取主线种子清单重新生成 48 关,同步关卡 JSON、共享模块和实际路径验收报告 |
| `npm run levels:versions` | 校验历史关卡归档并生成 v0.1 / v0.2 的浏览器模块 |
| `npm run design` | 生成颜色 token、CSS、JSON、PNG、对比度报告和设计指南 HTML |
| `node scripts/serve.mjs --dist` | 本地预览构建产物 |
@@ -59,6 +66,8 @@ npm run dev
修改语义颜色时编辑 `src/design-tokens.js`,然后运行 `npm run design` 并检查生成资源的差异。修改关卡生成逻辑后运行 `npm run levels` 和 `npm test`,确保关卡数据同步且全部可解。
主线布局来源为 `levels/campaign-seeds.json`,包含逐关种子和生成参数;不要直接编辑派生关卡。`levels/campaign-analysis.json` 的 `pathUsage` 记录参考解答中真正成功走过的弯轨/直线路径、转弯数量与逐棋子明细,不能用棋盘弯线总数替代。报告仍是结构与回放证据,不包含真人体验数据。
## 项目结构
| 路径 | 职责 |
@@ -72,7 +81,9 @@ npm run dev
| `src/collision-animation.js` | 碰撞反馈动画 |
| `src/sprites.js`、`src/ui-skin.js` | 棋子与 UI 图集裁切、共享皮肤定义 |
| `src/design-tokens.js`、`design/` | 语义颜色源与生成的设计资源 |
| `levels/campaign.json`、`src/levels.js` | 主线关卡 JSON 与浏览器模块 |
| `levels/campaign-seeds.json` | 48 关种子与生成参数的制作来源 |
| `levels/campaign.json`、`src/levels.js` | 根据种子清单生成的主线 JSON 与浏览器模块 |
| `levels/campaign-analysis.json` | 逐关回放、真实成功路径 `pathUsage` 与结构指标 |
| `assets/` | PNG 图集、历史素材与生成提示词 |
| `tests/`、`scripts/` | 自动测试、开发服务和生成脚本 |
| `cocos/` | Cocos Creator 棋盘及 UI 适配示例 |