Files

114 lines
8.8 KiB
Markdown
Raw Permalink 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.
# HEROLL 玩法验证 MVP
这是 `Heroll_Gameplay_Validation_GDD.md` 的本地单机 H5 垂直切片。目标是验证“公平双骰 → 绕棋盘推进 → 自动战斗 → 局内构筑 → 十层 Boss”的可玩闭环,不是完整 IAA 产品,也不包含其他项目内容。
> 仅限本机内部验证。提取的 HEROLL 原型资产未取得发行授权,不得公开、上传或分发。
![棋盘实机截图](tests/artifacts/heroll-mvp-board.png)
最新整合玩法文档:[`../docs/2026-08-24_HEROLL-MVP-latest.md`](../docs/2026-08-24_HEROLL-MVP-latest.md)。
本版本已按 `参考资料/功能浏览与关卡流程.mp4` 逐帧校正玩法界面。录像展示的是火山13层关卡;本切片采用Grass、10层和40个独立实际地块,并复刻录像中的固定环形棋盘、玩家顺时针移动、HUD、双骰演出、战斗构图、商店分区和事件表现。
## 双击运行(推荐)
直接双击项目根目录的 [`HEROLL_MVP_START.cmd`](../HEROLL_MVP_START.cmd)(中文名入口也保留)。启动器使用 Windows CRLF/ASCII 包装,自动编译 TypeScript、启动隐藏的本地服务器并打开浏览器;游玩期间保持启动窗口开启,关闭该窗口即可停止服务器。若系统只阻止自动打开浏览器,服务器会继续运行并显示可复制地址;真正的启动错误不会闪退,完整原因会保存到 `mvp/launcher-last-error.txt`。
启动链自测(不打开浏览器,验证编译、服务器和 HTTP 200):
```cmd
set HEROLL_MVP_SELF_TEST=1
HEROLL_MVP_START.cmd
```
## PowerShell 运行
在 PowerShell 中执行:
```powershell
cd C:\Users\toshio\Documents\ChatGPT\heroll\mvp
.\Run-Heroll-MVP.ps1
```
脚本会编译 TypeScript、启动 `http://127.0.0.1:4173/mvp/` 并打开默认浏览器。保持 PowerShell 窗口开启,按 `Ctrl+C` 停止服务器。
也可手动执行:
```powershell
node node_modules\typescript\bin\tsc -p tsconfig.json
node tools\server.mjs
```
## 已实现的验证闭环
| 模块 | MVP 行为 | 规范依据 |
|---|---|---|
| 骰子 | A/B 两枚独立公平 D6;36 个有序结果等权;对子触发机缘;无暗改、保底或重掷 | GDD 4.1 |
| 第三骰 | 获得对应祝福后,在基础双骰之后选择替换 A、替换 B 或放弃 | GDD 8.4 |
| 棋盘/楼层 | 40个独立实际地块;棋盘固定不旋转;1点严格移动1格;玩家从底部起点沿左侧、顶部、右侧顺时针移动;越过起点升层并恢复30%最大生命 | GDD 4.2、4.4 |
| Boss 循环 | 玩家 ROLL 2 次后开始 4 次 ROLL 倒计时;倒计时结束,Boss 将 4 个非祝福地块转为怪物地块,然后循环 | GDD 4.3 |
| 内容保证 | 商人固定在 3/6/9 层;商人、宝箱、营火、铁匠、祝福、挖掘在十层内均可自然生成 | GDD 9–10 |
| 战斗 | 1–4骷髅地块严格对应1–4只怪物;另有小Boss和污染Boss地块;攻击/`skill_0`自动执行;保留反击;玩家只手动使用唯一丹药 | GDD 5–7 |
| 复活 | 仅保留源码 `Revive` 祝福;祝福不可用或结算后仍死亡时直接失败 | GDD 5.6 |
| 装备 | 读取 40 件装备、13 种属性、五档品质及 `210:60:28:4:1` 权重;四固定槽;替换自动分解 | GDD 8.2–8.3 |
| 祝福 | 读取 31 个启用源码祝福 + 第三骰祝福;单卡揭示并直接接受 | GDD 8.4 |
| 丹药/商店 | 唯一丹药采用逆向确认的固定 HP 曲线 `50/80/110…650`;3 个固定商品为补 1 瓶/上限 +1/基础恢复 +30 HP,另有 3 个非丹药随机商品 | GDD 7.2、8 |
| 事件 | 13个事件入口全部可从调试台验收;事件或战斗完整结算后地块变为荒地,荒地跨层保留,直到被污染或玩家新增地块覆盖 | GDD 9–10 |
| 广告入口 | 当前构建不显示广告、即时增强、广告复活、广告重抽或补次数按钮;相关旧事务结构仅作未来预留,不可从 UI 触发 | GDD 2.4、9.3 |
| 安全点 | 本地双副本 + SHA-256 校验;地块、战斗、购买和选择完整结算后保存 | GDD 13 |
| 调试台 | 指定楼层/点数、强制 13 事件、战斗、死亡、Boss、4×战斗及日志导出 | GDD 14 |
## 原作还原层
- 40个画面格全部是独立逻辑落点;棋盘全程固定,骑士从底部起点沿左侧、顶部、右侧顺时针逐格移动,ROLL多少点就播放多少次逐格位移。
- 使用逆向导出的原作 `knight_m_idle/run_anim_f0–f3`、`boss_0`、红蓝骰面、`tile_battle`、1–4怪物图标、小Boss/污染Boss地块、商店图标和12类 `Installtile_*` 事件图标。
- 四类普通敌人不再使用 CSS 占位:分别解析并接入 `enemy_sword_0 → m_004`、`enemy_straight_0 → m_002`、`enemy_curved_0 → m_010`、`enemy_rush_0 → m_005`。
- 掷骰演出完成前保持棋盘画面,不会抢先切换战斗或事件;主按钮按状态显示 `ROLL / EXIT / GET / FIGHTING...`。
- 骰子定格后明确显示总点数,骑士严格按总点数沿40格固定棋盘逐格顺时针跑动;落地反馈结束后才触发地块。
- 战斗入口锁定 `BATTLE / BOSS BATTLE` 演出;每次攻击按“出手 → 受击 → 伤害数字”表现,最后一击后先播放 `VICTORY / DEFEAT`,再进入装备、源码祝福复生或结算界面。
- 最终结算使用原作胜利骑士与背景素材,奖励数字滚动计入;这些节奏锁不提供跳过入口,调试操作也不能绕过移动和胜负演出。
- 右侧 Boss 区先显示 `0/2 → 1/2`;第二次 ROLL 后切换为红色 `4 → 3 → 2 → 1 → 0` 倒计时。结束时播放 Boss 警示与棋盘震动,并逐个感染 4 个地块;祝福格和起点不会被转换。
- 动画节奏不是只保护移动和 Boss:按钮、骰子、逐格移动、落地、楼层恢复、战斗进出、双方攻击/受击、伤害与治疗数字、装备、祝福、商店购买、事件、源码祝福复生和结算都必须经过至少一段可读反馈;普通游玩没有跳过入口或直接硬切。
- 详细 Evidence → Finding → Implementation → Test 对照见 [`../analysis/reference-study/RESTORATION_REPORT.md`](../analysis/reference-study/RESTORATION_REPORT.md)。
## 操作
- `ROLL`:手动掷双骰。
- 右下丹药:只在战斗中可用;基础恢复为固定 HP,百分比治疗只来自独立的 `Potion_PercentHeal` 强化。
- 左下地图按钮:打开验证调试台;4×速度只属于调试入口。
- 调试台“结束战斗”用于验证击杀、胜利字样和最终结算动画,仍会经过完整表现链。
- 顶部暂停:安全点已自动写入,可返回标题后继续。
- 当前构建没有广告、`▶` 即时增强、广告复活、广告重抽或补次数按钮。
## 结构与 Cocos 迁移
- `src/core.ts`:与 DOM 无关的确定性单局状态机,可迁移为 Cocos Creator 3.x TypeScript service。
- `src/rng.ts`:六条独立 RNG 流及可序列化状态。
- `src/data.ts`:直接读取权威 GDD 的 CSV 配置并校验 10/40/13/32/97/13 等规模。
- `src/storage.ts`:安全点、备份和校验。
- `src/main.ts`:浏览器输入、渲染、轻引导和调试台适配层。
- `styles.css`:750×1334 竖屏、整数像素语言和 HEROLL 内部原型资源引用。
Cocos 移植时保留 `core/rng/types`,将 `main.ts` 的 DOM 事件映射为 Creator Component,将 CSS 布局映射为 Canvas/Widget/Layout 即可;随机、存档和事务语义不需要重写。
## 自动化验收
```powershell
.\Validate-Heroll-MVP.ps1
```
当前基线:
- TypeScript 严格模式编译通过。
- 24/24核心测试通过,包括100万次双骰统计、40格棋盘、1点=1格、1–4怪物数量、小Boss、污染Boss三次跨层污染、事件转荒地、荒地跨层、Boss 2+4循环、反击、旧存档迁移和前三组怪物连续通关。
- Chrome 750×1334 浏览器冒烟通过:开局 → 掷骰 → 商店 → 挖掘 → 装备 → 祝福 → 战斗 → 无广告失败结算 → Boss → 安全点。
- Chrome 758×1352原录像分辨率还原测试通过:固定棋盘、40个独立落点、点数与位移一致、原作1–4怪物及Boss地块图标、骰子时序、战斗角色/敌人和商店3+3结构。
- 控制台错误与资源加载失败均为 0;浏览器在测试结束后关闭。
## 验证边界
- 当前战斗使用 GDD 中明确标注的“验证版基准公式”,没有冒充已经恢复原作精确公式。原作伤害、命中、防御、攻速和 DDA 的黑盒拟合仍受干净录像样本不足限制。
- `功能浏览与关卡流程.mp4` 的火山 13 层主题、`抽卡.mp4` 与 `截图说明.jpg` 中的抽卡/商城/任务属于本验证切片之外;后两者只用于校正像素 UI 语言,不会把局外或付费系统混入 MVP。
- 当前交付用于负责人完成十局现场签收;单局 10–12 分钟、P50 装备查看 6–8 件和三类构筑体验仍需通过真实试玩调参。
- 无账号、服务器、局外成长、体力、抽卡、剧情、BGM、IAP、真实广告 SDK 或用户统计。