- 07 macaron, referenced from Meowdoku: cream worlds, a white tray with gutters, candy tokens with white arrows, two-column 关卡/待解 HUD, white elevated tool discs (macaron-only exception to the flat rule), full-screen dark result overlay, a brick ripple on board clear, an eased glide-out and dot-lattice dissolve on exit; Resource Han Rounded subset fonts (SIL OFL) in assets/fonts with the charset and regeneration note - 06 signpost: the design.md, tokens and preview directory that earlier commits left untracked - design docs, catalog, manifest, showcase and base spec updated to seven directions; the analysis and proposal live in docs/art-proposal-macaron.html - the renderer, app, geometry and CSS sources for both directions were already carried by the level commits made from this working tree Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
153 lines
16 KiB
Markdown
153 lines
16 KiB
Markdown
# 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 种顺序回放;制作与验收范围见 [千关制作报告](docs/v0.5-production-report.md)。
|
||
|
||
正式第 1 关前另有 3 关入门序章:单棋子沿弯路离场、两棋子清挡连点、旋转底盘找出口。三课都使用与正式第 1 关相同的完整 19 格六边形棋盘,分别只放 1、2、2 枚棋子。新玩家从序章开始,教学单独存档,原 1–1000 编号与完成记录保持原位;选关窗口可以重玩教学。[开始教学](http://localhost:4173/?campaign=v0.5&tutorial=1),[教学设计与验证](docs/tutorial-prologue.md)。明确的 `?level=1` 链接仍直达正式第 1 关。
|
||
|
||
v0.4 按 4 组 × 5 关安排长路巡游、朝内棋子一次旋转放行、短路清挡和往返换路。设计依据见 [新版关卡设计准则](docs/level-design-principles-v2.md),逐关制作意图与完整操作证据见 [v0.4 体验报告](docs/v0.4-experience-review.md)。长路径本身是观看内容,轻巧反差也可通过短路径兑现;不按难度分对关卡排序。
|
||
|
||
后续关卡优化的原始设计参照见 [v0.1 · 最初 24 关设计理念](docs/v0.1-design-philosophy.md):还原必要旋转、空间让路与分阶段解开轨道的结构,并区分历史规则、实际布局和本次设计归纳。
|
||
|
||
## 快速开始
|
||
|
||
需要 Node.js 20 或更高版本,以及 Git;无需执行 `npm install`。
|
||
|
||
```bash
|
||
git clone git@git.zeroplus.fun:Zeroplus/HexTrails.git
|
||
cd HexTrails
|
||
npm run dev
|
||
```
|
||
|
||
打开 [游戏](http://localhost:4173/)。请通过 HTTP 访问,直接双击 HTML 文件无法正常加载 ES modules。开发服务监听 `0.0.0.0`,同一局域网的手机可通过电脑 IP 和端口访问。
|
||
|
||
- [关卡工坊](http://localhost:4173/?editor=1):当前精简游戏界面隐藏工坊导航,通过此地址进入。
|
||
- [千关版](http://localhost:4173/?campaign=v0.5&level=1):按章选关或直接输入 1–1000;URL 的关号从 1 开始。
|
||
- [千关审核页](http://localhost:4173/labs/campaign-review/index.html):按章看布局,检查制作证据,逐步回放和导出本章总览。
|
||
- [花形轨道测试](http://localhost:4173/labs/flower/index.html):双层十二瓣与三重环带编织成花,包含 10 枚棋子的独立可玩实验,详见 [设计说明](docs/flower-study.md)。
|
||
- [交互设计规范](http://localhost:4173/Design.html):色板、图标、组件状态与动效示例。
|
||
- [设计方案总览](http://localhost:4173/design/index.html):01–07 七套设计、35 种主题、完整设计稿与多选审核入口;最新为「马卡龙」(参考 Meowdoku),主游戏用 `?design=macaron` 查看。[方案目录](design/README.md)记录各套特点与共用规则。
|
||
- 修改端口:`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 发布要求包括完整可解、每枚棋子在六个朝向下的独立路线无闭环,以及参考解答中的阻挡可解释、旋转后有明确进展;这些门槛不代表玩家任意旋转或点击序列都不会遇阻。该版制作方向见 [玩法方向](docs/gameplay-direction.md),逐关生成与验收记录见 [主线审阅报告](docs/campaign-review.md),验证结果以实际生成报告和测试输出为准。v0.4 按新版准则单独筛选与回放,不沿用以上全部布局限制。
|
||
|
||
所有关卡可自由选择。在左上角选关窗口切换 v0.1 至 v0.5,分别保存通关进度与上次选关;对应旧存档会自动迁移,旧数据继续保留。历史布局原样恢复,五版共用当前免费旋转与失败试路规则,详见 [关卡版本与来源](docs/campaign-versions.md)。以上弯轨比例与节奏门槛针对 v0.3。音效使用 Web Audio 合成,首次交互后启用,可在设置中关闭并保存偏好。
|
||
|
||
## 关卡工坊
|
||
|
||
工坊支持 19、37、61 格底板、棋子方向与配色、15 种轨道配对、单格轨道旋转和整体底盘旋转;还提供擦除、路径检查、撤销编辑、试玩、随机生成、本机单槽存档及 JSON 导入导出。
|
||
|
||
试玩不修改草稿,也不计入主线进度。工坊与正式游戏共用碰撞及求解规则。分析器区分最少消除成本 `minimumMoves=N` 与最少交互数 `minimumActions=N+R`,其中 `R` 是最少旋转数;自定义预算不足 `N` 时仍会报告预算不足。认知难度与工作量分别提供,搜索达到上限时显示“尚未确定”,不直接判定无解。
|
||
|
||
不具备六重旋转对称性的导入底板会禁用整体旋转。导入失败保留当前草稿;不可解关卡仍可保存用于调试。浏览器存档不会跨设备同步,需长期保存或分享时请导出 JSON。
|
||
|
||
关卡字段、导入限制、求解算法和评分公式见 [关卡设计说明](docs/level-design.md)。
|
||
|
||
## 开发与构建
|
||
|
||
| 命令 | 用途 |
|
||
| --- | --- |
|
||
| `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.md) 记录设计规范;[Design.html](Design.html) 内嵌图片与样式,可单文件离线分享。生成过程与提示词见 [素材说明](assets/GENERATION.md)。
|
||
|
||
五套独立设计的 Agent 入口是 [design/README.md](design/README.md),共用接入规则见 [design/shared.md](design/shared.md)。每套在 `design/directions/<id>/` 下提供人工维护的 `design.md`、生成的 `tokens.json` 和预览 `index.html`;[manifest.json](design/manifest.json) 提供可编程读取的目录。使用方案时复用共享 JS/CSS,基础 Design.md 不包含各套的全部独立规则。
|
||
|
||
Cocos 示例复用规则、碰撞、渲染命令和图集;HTML 控件、文件导入导出与存储需替换成宿主接口。接入步骤见 [Cocos 移植指南](docs/cocos-port.md)。`wechat/HexTrail/` 是本仓库管理的 Cocos Creator 3.8.8 工程,后续将把当前游戏移植到该工程中。使用 Creator 打开该目录;工程自身的 `.gitignore` 排除缓存、本地配置和构建产物,源码与项目配置随主仓库提交。
|
||
|
||
## 验证与已知限制
|
||
|
||
自动测试覆盖主线完整解答、生成关卡、旋转与撤销、弯轨寻路、连续碰撞、闭环、导入校验,以及设计颜色对比度和图标裁切。测试结果以当前 `npm test` 输出为准。
|
||
|
||
界面变更还需在浏览器检查竖屏布局、旋转、碰撞回位、弹窗和工坊导入导出;自动测试不替代实机交互验收。较小屏幕可能需要纵向滚动。认知难度评分不直接加入棋盘规模,仍是未经玩家数据标定的结构估计。工作量中的估计秒数也只是内部制作假设,不能当作真人平均通关时长。
|
||
|
||
`cocos/` 是适配示例,不是完整 Creator 工程;原生场景及 Android/iOS 构建尚未完成验收。`docs/ui-layout.json` 是旧版布局快照,不应直接作为当前场景模板。
|
||
|
||
更多背景见 [视频与规则分析](docs/video-analysis.md)。
|
||
|
||
## V2 色彩与离场展示
|
||
|
||
打开 `http://localhost:4173/design-showcase.html`,切换五套关卡主题并播放离场动效。主线按难度使用四套背景,12 色棋子库在每关收敛为 3–4 色;编辑器开放全部 12 色。每周挑战目前为独立美术主题预览,尚未实现周赛功能。规范与色库详见 `Design.md`。
|
||
|
||
## 视频 UI 实验室
|
||
|
||
[Hex Video Lab](labs/hex-video/index.html) 是基于 `examples/hex.mp4` 的独立 UI / 特效复刻,可切换地图、棋盘和领奖场景,支持自动试玩、单片翻转、彩纸、金币飞入、慢速播放及参考帧对照。棋子按本项目要求保留单片薄侧边,不使用视频中的多片堆叠。运行 `npm run dev` 后访问 `/labs/hex-video/index.html`;详见 [复刻笔记](labs/hex-video/README.md)。
|
||
|
||
## 环路车场 Lab
|
||
|
||
[打开环路车场实验](http://localhost:4173/labs/car-loop/index.html):对照六角与方格道路,点击方块小车发车,经固定引道汇入顺时针环路,驶向右上方终点。提供多弯路网、旋转、路线提示、三组样本和自动演示。独立实验不影响主线;详见 [Lab 说明](labs/car-loop/README.md)。
|
||
|
||
转盘发车玩法于 2026-09-10 暂缓研发,保留可运行版本;详见 [研发记录与阶段结论](docs/car-loop-research.md)。
|
||
|
||
## 玩法变种 Lab
|
||
|
||
[打开独立实验室](http://localhost:4173/labs/variants/index.html):分色归站、机关换轨、接力停靠,各 5 个可解关卡,支持旋转、撤销、提示和重来。仅使用实验室数据,不写入主线存档。规则和验证范围见 [Lab 说明](labs/variants/README.md)。
|