Round 1 played all fifty levels and came back with the mechanics clean and one
complaint repeated across the reports: 短暂以为转错了方向 — a turn that changed
nothing. That one is mechanical rather than perceptual, so it can be gated.
The first attempt gated `doubleDead`, and it was wrong. That counts dead states,
which scales with the state space: three-turn levels have ~187 reachable stuck
states and five-turn ones ~739, so a raw count made deep levels look eight times
worse when the rate is 2% against 5%. It would have erased every level past
three turns — the opposite of the brief, where turning is the signature and is
not to be rationed. The gate is `maxDeadTurns`, the longest run of turns before
something opens, at 1: one beat of suspense, then a release. Eleven of the fifty
shipped at 2.
Selection could not express the curve either. Spreading picks evenly over the
ranked pool returns whatever the pool is made of, and the pool is 88%
three-turn, so no weighting moved the distribution off {3: 46}. A quota per
depth states the curve outright, deepest first so the scarce end picks before a
family cap is spent on levels the shallow end has hundreds of.
Same rule bot, both sets: blind rotations 0.24 → 0.12, worst blind streak 4 → 1,
decisions unchanged at 10.3. The same amount to do, half the wasted motion.
Rotation now runs 1.8 / 3.0 / 4.1 across the bands against 1.8 / 3.0 / 3.5.
Verdicts are keyed by the board rather than by its id, because a reselect
re-issues ids from the ordinal and `c50-01-v05` is not the same board before and
after — the review sheet was one reselect away from printing one level's verdict
under another's thumbnail.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
HEX TRAILS · 转转六角
一款竖屏六角轨道解谜游戏:观察路线,点击箭头棋子让它离场;免费旋转底盘和尝试路线,在清楚的反馈中逐步清空棋盘。
项目使用原生 JavaScript ES modules 和 Canvas,无第三方运行依赖,无在线字体或 CDN。选关窗口提供 v0.1 最初 24 关、v0.2 直线较多的 48 关、v0.3 弯轨 48 关、v0.4「长路与惊喜」20 关,以及 v0.5「千段轨迹」1000 关。新玩家默认 v0.5,已有版本选择继续保留。另有关卡工坊、求解器、确定性关卡生成器,以及 Cocos Creator 适配示例。
v0.5 按 20 章 × 50 关组织花瓣、环绕、螺旋、回折、编织、双叶交叉六类真实路线,穿插巡游、清挡、反差、换路和分段释放。沿用主游戏的快速连点与并行离场。每关保存构造配方、正式解、体验解与 20 种顺序回放;制作与验收范围见 千关制作报告。
正式第 1 关前另有 3 关入门序章:单棋子沿弯路离场、两棋子清挡连点、旋转底盘找出口。三课都使用与正式第 1 关相同的完整 19 格六边形棋盘,分别只放 1、2、2 枚棋子。新玩家从序章开始,教学单独存档,原 1–1000 编号与完成记录保持原位;选关窗口可以重玩教学。开始教学,教学设计与验证。明确的 ?level=1 链接仍直达正式第 1 关。
v0.4 按 4 组 × 5 关安排长路巡游、朝内棋子一次旋转放行、短路清挡和往返换路。设计依据见 新版关卡设计准则,逐关制作意图与完整操作证据见 v0.4 体验报告。长路径本身是观看内容,轻巧反差也可通过短路径兑现;不按难度分对关卡排序。
后续关卡优化的原始设计参照见 v0.1 · 最初 24 关设计理念:还原必要旋转、空间让路与分阶段解开轨道的结构,并区分历史规则、实际布局和本次设计归纳。
快速开始
需要 Node.js 20 或更高版本,以及 Git;无需执行 npm install。
git clone git@git.zeroplus.fun:Zeroplus/HexTrails.git
cd HexTrails
npm run dev
打开 游戏。请通过 HTTP 访问,直接双击 HTML 文件无法正常加载 ES modules。开发服务监听 0.0.0.0,同一局域网的手机可通过电脑 IP 和端口访问。
- 关卡工坊:当前精简游戏界面隐藏工坊导航,通过此地址进入。
- 千关版:按章选关或直接输入 1–1000;URL 的关号从 1 开始。
- 千关审核页:按章看布局,检查制作证据,逐步回放和导出本章总览。
- 花形轨道测试:双层十二瓣与三重环带编织成花,包含 10 枚棋子的独立可玩实验,详见 设计说明。
- 交互设计规范:色板、图标、组件状态与动效示例。
- 设计方案总览:01–05 五套设计、25 种主题、完整设计稿与多选审核入口;最新为「轻线纸境」。方案目录记录各套特点与共用规则。
- 修改端口:
PORT=4174 npm run dev。
游戏规则
- 点击棋子,从箭头方向进入轨道;弯道自动转向,交叉处不换轨。
- 点击左右旋转按钮,或沿棋盘边缘拖动,将底盘旋转 60°。棋子的位置与箭头方向保持不动,底板格子与轨道配对一起旋转。
- 棋子不能穿过其他棋子。碰撞检测覆盖整段运动路径,包括弯道与邻格擦碰;碰撞动画展示接触后退回原位。
- 只有成功移除棋子消耗 1 次预算;旋转和失败试路均免费。主线预算等于初始棋子数,只表示剩余消除工作量,不惩罚试错。撤销恢复棋盘、棋子、朝向和计数;没有倒计时。
- 提示会高亮可安全离场的棋子,或建议旋转方向。棋子配色不影响规则。
v0.3 每章按“进入 → 换路 → 展开 → 小挑战 → 释放 → 长局回报”安排,不按难度分数单调排序,也不要求每关必须旋转。早期就可使用 37 格棋盘,后期舒缓关使用 61 格延长熟悉操作的体验;19 格小棋盘也可承担局部挑战。棋盘规模与认知难度分别记录。
9 月 9 日版的 48 关以真正的弯轨消除为主:每关参考解答至少 65% 的成功离场棋子经过弯道,且不少于 3 枚。直线只作少量节奏调剂,不安排纯直出关,也不用空格上的装饰曲线充数。当前单关最多 25 枚棋子,后期长局增加的是沿弯轨观察与解开的实际内容。
v0.3 第 1 关为 37 格、8 枚棋子,开局全部可离场,每枚参考路径恰好转弯一次,无需旋转;“全部可离场”不表示任意朝向都相同。前 7 关通过 lesson 字段依次学习箭头起步与弯轨转向、旋转换路而棋子箭头不动、交叉不换轨、阻挡先后、舒缓的一两弯、大盘连续解路径,以及完整路线观察。
v0.3 发布要求包括完整可解、每枚棋子在六个朝向下的独立路线无闭环,以及参考解答中的阻挡可解释、旋转后有明确进展;这些门槛不代表玩家任意旋转或点击序列都不会遇阻。该版制作方向见 玩法方向,逐关生成与验收记录见 主线审阅报告,验证结果以实际生成报告和测试输出为准。v0.4 按新版准则单独筛选与回放,不沿用以上全部布局限制。
所有关卡可自由选择。在左上角选关窗口切换 v0.1 至 v0.5,分别保存通关进度与上次选关;对应旧存档会自动迁移,旧数据继续保留。历史布局原样恢复,五版共用当前免费旋转与失败试路规则,详见 关卡版本与来源。以上弯轨比例与节奏门槛针对 v0.3。音效使用 Web Audio 合成,首次交互后启用,可在设置中关闭并保存偏好。
关卡工坊
工坊支持 19、37、61 格底板、棋子方向与配色、15 种轨道配对、单格轨道旋转和整体底盘旋转;还提供擦除、路径检查、撤销编辑、试玩、随机生成、本机单槽存档及 JSON 导入导出。
试玩不修改草稿,也不计入主线进度。工坊与正式游戏共用碰撞及求解规则。分析器区分最少消除成本 minimumMoves=N 与最少交互数 minimumActions=N+R,其中 R 是最少旋转数;自定义预算不足 N 时仍会报告预算不足。认知难度与工作量分别提供,搜索达到上限时显示“尚未确定”,不直接判定无解。
不具备六重旋转对称性的导入底板会禁用整体旋转。导入失败保留当前草稿;不可解关卡仍可保存用于调试。浏览器存档不会跨设备同步,需长期保存或分享时请导出 JSON。
关卡字段、导入限制、求解算法和评分公式见 关卡设计说明。
开发与构建
| 命令 | 用途 |
|---|---|
npm run dev |
启动本地开发服务,默认端口 4173 |
npm test |
执行 Node 内置测试套件 |
npm run build |
生成设计资源并输出静态站点到 dist/ |
npm run levels |
读取 v0.3 种子清单重新生成 48 关,同步关卡 JSON、共享模块和实际路径验收报告 |
npm run levels:v04 |
读取 v0.4 制作卡重新生成 20 关,验证两套完整回放并同步体验报告 |
npm run levels:v05 |
离线生成并筛选完整 1000 关,冻结配方、布局、分章数据及回放证据 |
npm run levels:v05:verify |
校验冻结数据及生成源码指纹,重新求解 1000 关并回放每关 22 套解 |
npm run levels:versions |
校验历史关卡归档并生成 v0.1 / v0.2 / v0.3 的归档模块 |
npm run design |
生成颜色 token、CSS、JSON、PNG、对比度报告和设计指南 HTML |
node scripts/serve.mjs --dist |
本地预览构建产物 |
部署时先执行 npm run build,再将 dist/ 的内容上传至静态网站服务器。站点无需后端服务。构建会清空并重建 dist/;不要提交 dist/ 或 node_modules/。
修改语义颜色时编辑 src/design-tokens.js,然后运行 npm run design 并检查生成资源的差异。修改关卡生成逻辑后运行 npm run levels 和 npm test,确保关卡数据同步且全部可解。
v0.3 布局来源为 levels/campaign-seeds.json,包含逐关种子和生成参数;v0.4 来源为 levels/v0.4-seeds.json,包含种子、生成参数、设计意图和完整体验动作。不要直接编辑派生关卡。levels/campaign-analysis.json 与 levels/v0.4-analysis.json 记录实际成功路径;后者还区分最少旋转参考解与突出关键反差的体验解。报告是结构与回放证据,不包含真人体验数据。
v0.5 的编排在 src/production-plan.js,选中配方在 levels/v0.5-recipes.json;静态构建只验证冻结千关,不在每次构建时重新抽取布局。完整生产使用确定性种子,每个槽位在同一种形态和体验内比较候选。调试小批次可运行 node scripts/build-production-levels.mjs --count=50,仅写入临时目录;仅完整 1000 关可通过 --publish 写入本地正式数据。此标志不会部署网站。
项目结构
| 路径 | 职责 |
|---|---|
index.html、style.css |
响应式浏览器界面 |
src/core.js |
游戏规则、旋转、求解、生成、评分与导入校验 |
src/path-math.js |
渲染与连续碰撞共享的路径数学 |
src/geometry.js、src/tile-shape.js |
坐标转换、命中检测与棋子轮廓 |
src/renderer.js |
引擎无关绘制命令与 Canvas 适配 |
src/app.js、src/ui.js、src/audio.js |
浏览器交互、界面、存档与音效 |
src/collision-animation.js |
碰撞反馈动画 |
src/sprites.js、src/ui-skin.js |
棋子与 UI 图集裁切、共享皮肤定义 |
src/design-tokens.js、design/ |
语义颜色源与生成的设计资源 |
levels/campaign-seeds.json |
48 关种子与生成参数的制作来源 |
levels/campaign.json、src/levels.js |
根据种子清单生成的主线 JSON 与浏览器模块 |
levels/campaign-analysis.json |
逐关回放、真实成功路径 pathUsage 与结构指标 |
levels/v0.4-seeds.json、src/experience-generator.js |
v0.4 逐关制作卡与支持不同朝向逆向放置的生成器 |
levels/v0.4.json、src/levels-v04.js、levels/v0.4-analysis.json |
v0.4 布局、浏览器模块与双方案回放证据 |
src/route-grammar.js、src/stage-seed.js、src/production-generator.js |
六类开放路线、两次换路锁组与有构造解的布子 |
src/campaign-evidence.js |
正式求解、策略回放、对称去重、结构难度与体验兑现证据 |
levels/v0.5.json、levels/v0.5/、src/levels-v05.js |
千关全集、20 章独立 JSON 与浏览器模块 |
levels/v0.5-analysis.json、levels/v0.5-recipes.json |
千关逐关证据与可复现配方 |
assets/ |
PNG 图集、历史素材与生成提示词 |
tests/、scripts/ |
自动测试、开发服务和生成脚本 |
cocos/ |
Cocos Creator 棋盘及 UI 适配示例 |
wechat/HexTrail/ |
Cocos Creator 3.8.8 工程,后续游戏移植的目标工程 |
docs/ |
玩法分析、关卡设计和移植说明 |
规则与数学模块不依赖 DOM、存储 API 或浏览器物理引擎。新增玩法应留在模型层,浏览器输入与存储逻辑留在适配层。
美术与移植
当前界面采用蓝灰背景、暖白棋盘、哑光棋子和生成图标。主要资源为 assets/tiles-matte-clean-v8.png、assets/ui-icons-generated.png 和 assets/ui-surfaces.png;裁切与颜色定义以源码为准,历史素材不一定用于当前界面。
Design.md 记录设计规范;Design.html 内嵌图片与样式,可单文件离线分享。生成过程与提示词见 素材说明。
五套独立设计的 Agent 入口是 design/README.md,共用接入规则见 design/shared.md。每套在 design/directions/<id>/ 下提供人工维护的 design.md、生成的 tokens.json 和预览 index.html;manifest.json 提供可编程读取的目录。使用方案时复用共享 JS/CSS,基础 Design.md 不包含各套的全部独立规则。
Cocos 示例复用规则、碰撞、渲染命令和图集;HTML 控件、文件导入导出与存储需替换成宿主接口。接入步骤见 Cocos 移植指南。wechat/HexTrail/ 是本仓库管理的 Cocos Creator 3.8.8 工程,后续将把当前游戏移植到该工程中。使用 Creator 打开该目录;工程自身的 .gitignore 排除缓存、本地配置和构建产物,源码与项目配置随主仓库提交。
验证与已知限制
自动测试覆盖主线完整解答、生成关卡、旋转与撤销、弯轨寻路、连续碰撞、闭环、导入校验,以及设计颜色对比度和图标裁切。测试结果以当前 npm test 输出为准。
界面变更还需在浏览器检查竖屏布局、旋转、碰撞回位、弹窗和工坊导入导出;自动测试不替代实机交互验收。较小屏幕可能需要纵向滚动。认知难度评分不直接加入棋盘规模,仍是未经玩家数据标定的结构估计。工作量中的估计秒数也只是内部制作假设,不能当作真人平均通关时长。
cocos/ 是适配示例,不是完整 Creator 工程;原生场景及 Android/iOS 构建尚未完成验收。docs/ui-layout.json 是旧版布局快照,不应直接作为当前场景模板。
更多背景见 视频与规则分析。
V2 色彩与离场展示
打开 http://localhost:4173/design-showcase.html,切换五套关卡主题并播放离场动效。主线按难度使用四套背景,12 色棋子库在每关收敛为 3–4 色;编辑器开放全部 12 色。每周挑战目前为独立美术主题预览,尚未实现周赛功能。规范与色库详见 Design.md。
视频 UI 实验室
Hex Video Lab 是基于 examples/hex.mp4 的独立 UI / 特效复刻,可切换地图、棋盘和领奖场景,支持自动试玩、单片翻转、彩纸、金币飞入、慢速播放及参考帧对照。棋子按本项目要求保留单片薄侧边,不使用视频中的多片堆叠。运行 npm run dev 后访问 /labs/hex-video/index.html;详见 复刻笔记。
环路车场 Lab
打开环路车场实验:对照六角与方格道路,点击方块小车发车,经固定引道汇入顺时针环路,驶向右上方终点。提供多弯路网、旋转、路线提示、三组样本和自动演示。独立实验不影响主线;详见 Lab 说明。
转盘发车玩法于 2026-09-10 暂缓研发,保留可运行版本;详见 研发记录与阶段结论。
玩法变种 Lab
打开独立实验室:分色归站、机关换轨、接力停靠,各 5 个可解关卡,支持旋转、撤销、提示和重来。仅使用实验室数据,不写入主线存档。规则和验证范围见 Lab 说明。