Files
HexTrails/labs/variants/README.md
T

32 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 玩法变种 Lab
运行 `npm run dev`,打开 http://localhost:4173/labs/variants/index.html 。
这是用户授权的独立玩法原型,包含三种模式,各 5 关。主线规则、界面、编号和存档不变。Lab 本身不保存进度;刷新后回到首关。模式可用 `?mode=color`、`?mode=switch`、`?mode=relay` 直达。
## 规则
- 分色归站:所有边界端口分配橙色或蓝色终点,棋子只能从同色端口离场。外围终点不随底盘旋转。错色、碰撞和闭环均返回原位。
- 机关换轨:标记 A 的棋子离场后,切换金色 A 格的两套轨道配对。机关格及其两套配对随底盘旋转。每关一个一次性机关;冻结参考解中,机关会实际打开至少一枚剩余棋子的出口。
- 接力停靠:中央 P 点固定在世界坐标。经过 P 时先驶入格中心,停下后箭头变为该格轨道出口方向;再次点击从此方向出发。每次重新进入 P 都会停靠。P 被占用时不能进入。只检测抵达 P 之前的碰撞,不受 P 后方障碍影响。
全模式保留免费旋转、免费试路、弯轨自动转向和交叉不换轨。采用顺序动画输入,动画期间暂停发车和旋转;重来和切关可以取消动画。撤销恢复完整状态,包括机关、停靠位置和朝向。提示在当前局面重新搜索;无解或搜索超限有独立反馈。
## 实现与关卡
`model.js` 复用主线 `core.js` 的寻路、旋转和 `path-math.js` 的连续碰撞与曲线采样。实验规则仅在 Lab 模型中扩展,不修改主线模型。Canvas 负责实验标记与轨迹动画,棋子大小与共享碰撞体一致。
`levels.json` 冻结 15 关、确定性种子、完整动作解和机制证据。每关 19 格、3–5 枚棋子,先验证机制是否易懂;这些是原型样本,不代表经过真人标定的难度曲线。
`generate.mjs` 按确定性候选筛选:完整可解、实际经过弯轨、参考解需要旋转;机关关必须触发开路;接力关必须发生停靠。局面搜索包含朝向、剩余棋子位置与方向、机关状态,不能沿用主线“安全棋子全部贪心移除”的简化。
重新生成:`node labs/variants/generate.mjs`。
规则验证:`node --test tests/variants.test.js`。
静态打包:`node scripts/build.mjs`(Lab 已加入复制清单)。
## 验证范围
15 关数据校验、独立求解和冻结解回放;六次旋转恢复两套机关轨道;错色不改变状态;停靠截断路径、占位阻挡及继续出发;每步不修改历史快照。
浏览器检查桌面和 390×844 手机视口、模式切换、选关、提示与通关。当前仅 Web 原型,未移植或验收 Cocos、Android、iOS。尚未开展真人玩法偏好测试。