Files
HEROLL/docs/2026-08-24_HEROLL-MVP-latest.md

195 lines
10 KiB
Markdown

# HEROLL 玩法验证 MVP 最新整合文档
> 版本:2026-08-24
> 状态:当前可运行 DEMO 的规范基线
> 范围:Grass 主题、10 层、单机玩法验证;不包含广告、局外成长、抽卡、付费或联网功能。
## 1. 本版锁定结论
1. 棋盘共有 **40 个独立实际地块**,不存在“10 个逻辑格映射 40 个画面格”。
2. 双骰总点数就是移动步数:**1 点移动 1 个地块**。例如从 0 号起点 ROLL 出 10,角色顺时针逐格移动 10 次并停在 10 号地块。
3. 棋盘固定不旋转。角色从底部起点出发,沿左侧、顶部、右侧顺时针移动。
4. 普通战斗格按 1–4 个骷髅区分,严格对应 1–4 只怪物。
5. 加入普通小 Boss 地块和污染 Boss 地块;暂不加入其他负面格或原作角落格。
6. 战斗、两类小 Boss、商店或事件完整结算后,来源地块变成荒地。
7. 每层只走完一圈。进入下一层后,荒地继续保持荒地,除非被 Boss 转化/污染机制或新增地块覆盖。
8. 保留所有必要的移动、落地、战斗、UI 数字和结算动画;正常游玩不提供跳过动画或直接硬切界面的入口。
9. 当前 DEMO 不显示任何广告按钮;死亡时仅允许源码复生祝福生效,否则进入失败结算。
## 2. 核心循环
\`\`\`text
ROLL 双骰
→ 显示两枚骰子和总点数
→ 按总点数逐格顺时针移动
→ 播放落地反馈
→ 结算战斗 / 小Boss / 商店 / 事件 / 荒地
→ 已结算功能格变荒地
→ 越过起点进入下一层,恢复最大生命的30%
→ 第10层击败最终Boss后胜利
\`\`\`
角色从 39 号地块继续前进会越过 0 号起点。每次越过起点只触发一次楼层推进,不会重复结算起点,也不会在同一移动中再次触发其他落点。
## 3. 棋盘与地块完整清单
### 3.1 基础地块
| 地块 | 图形识别 | 数量/生成 | 停留作用 | 结算后 |
|---|---|---:|---|---|
| 起点 \`START\` | 蓝色起点图标 | 固定 1 个,索引 0 | 越过时进入下一层并恢复最大生命 30% | 永久保留 |
| 荒地 \`EMPTY\` | 无功能图标的空格 | 初始剩余位置及已消耗位置 | 无事件、无战斗,落地后返回 ROLL | 继续保留,直到被合法覆盖 |
| 普通战斗 1 骷髅 | 1 个骷髅 | 初始普通战斗池 | 生成 1 只普通怪物 | 胜利后变荒地 |
| 普通战斗 2 骷髅 | 2 个骷髅 | 初始普通战斗池 | 生成 2 只普通怪物 | 胜利后变荒地 |
| 普通战斗 3 骷髅 | 3 个骷髅 | 初始普通战斗池 | 生成 3 只普通怪物 | 胜利后变荒地 |
| 普通战斗 4 骷髅 | 4 个骷髅 | 初始普通战斗池 | 生成 4 只普通怪物 | 胜利后变荒地 |
| 普通小 Boss \`MINIBOSS\` | 原作普通 Boss 地块和怪箱图标 | 初始 1 个 | 触发小 Boss 战斗;怪物数量随机 1–4 | 胜利后变荒地 |
| 污染 Boss \`INFECTED_BOSS\` | 原作污染 Boss 地块和污染怪箱图标 | 初始 1 个 | 触发污染小 Boss 战斗;未消灭时进入新层会污染普通战斗格,最多生效 3 次 | 胜利后变荒地 |
| 商店 \`MERCHANT\` | 原作蓝色商店图标 | 第 3/6/9 层安装 | 打开 3 个固定丹药商品和 3 个随机商品 | 离开后变荒地 |
新局棋盘初始生成 13 个普通战斗格、1 个普通小 Boss、1 个污染 Boss、1 个本层核心事件和起点,其余位置为荒地。所有 40 个位置均可被角色真实停留。
### 3.2 事件地块
| ID | 地块 | 当前 DEMO 作用 | 结算后 |
|---|---|---|---|
| EV-137 | 铁匠铺 | 选择已装备物品强化;按品质使用 80%/50%/30%/10%/0% 基础成功率,失败时装备被分解 | 荒地 |
| EV-138 | 灵泉/营火 | 恢复最大生命 30%,不超过上限 | 荒地 |
| EV-139 | 传奇装备 | 生成 1 件传奇装备并进入标准装备比较 | 荒地 |
| EV-140 | 挖掘 | 5×5 棋盘,基础 5 次挖掘;获得局内点数或装备 | 荒地 |
| EV-141 | 宝箱 | 生成 1 件普通掉落池装备并进入装备比较 | 荒地 |
| EV-142 | 彩票 | 单次随机结算;当前验证收益为 100/20/7/0 点 | 荒地 |
| EV-143 | 21 点 | 当前验证版自动比较玩家与庄家点数,奖励 18/5/0 点 | 荒地 |
| EV-144 | 祝福点 | 揭示并接受 1 个祝福 | 荒地 |
| EV-151 | 抓娃娃 | 基础 1 次,当前验证成功率 55%;成功获得装备 | 荒地 |
| EV-152 | 黄金马车 | 二选一:恢复最大生命 20%,或获得 15 点 | 荒地 |
| EV-164 | 骰子机 | 掷 3 枚 D6;三同 50 点、对子 15 点,否则获得最大骰面点数 | 荒地 |
| EV-166 | 泡泡射手 | 基础 3 发,每发获得 1–6 点 | 荒地 |
事件格使用各自的 \`Installtile_*\` 原作图标。当前不加入未确认的负面格、角落格或额外事件种类。
## 4. 地块生命周期与跨层规则
每个功能地块在一局中遵循同一条生命周期:
\`\`\`text
功能地块
→ 玩家落地
→ 完整播放进入与结算动画
→ 战斗胜利或事件退出/领取完成
→ 该位置变为荒地
→ 进入下一层仍保持荒地
\`\`\`
允许覆盖荒地的来源只有两类:
- Boss 2+4 行动将合法的非起点、非祝福位置转为普通战斗格。
- 过层或商店购买产生的新增地块安装到合法荒地。
污染 Boss 自身未被消灭时,每次进入新层让现存普通战斗格的怪物数 \`+1\`,最高 4 只,同时污染层级 \`+1\`,最多生效 3 次。它不会覆盖起点或祝福格。
## 5. Boss 行动规则
Boss Gauge 不是“玩家攻击几次、Boss 攻击一次”的战斗条。它只统计玩家完成的 ROLL 行动:
1. 玩家先完成 2 次 ROLL,右侧显示 \`0/2 → 1/2\`。
2. 第二次 ROLL 后进入 4 次 ROLL 倒计时,显示 \`4 → 3 → 2 → 1 → 0\`。
3. 倒计时结束后,播放 Boss 警示、棋盘震动和逐格转化动画。
4. Boss 将 4 个互不重复的合法地块变为普通战斗格。
5. 祝福格和起点不会被转化。
6. 行动结束后回到玩家 2 次 ROLL 的蓄势阶段,循环继续。
## 6. 战斗与难度
- 普通战斗格的骷髅数就是本场敌人数,不允许图标与实际敌人数不一致。
- 1–4 敌人的单体攻击倍率分别为 \`1.00 / 0.72 / 0.58 / 0.48\`,避免多目标简单叠加造成不可控秒杀。
- 普通小 Boss 和污染 Boss 的怪物数量权重为 \`60% / 25% / 10% / 5%\`,分别对应 1/2/3/4 只。
- 小 Boss 在同层普通敌人基线上使用 \`生命 ×1.18、攻击 ×1.12\`。
- 玩家和敌人自动攻击,保留反击。玩家战斗中的唯一即时主动输入是丹药。
- 初始配置已加入新手容错,自动化用例要求不使用丹药、广告或调试强化也能连续击败前三组普通怪物。
## 7. 丹药
全局只有一种丹药。商店固定提供三个丹药商品:
| 商品 | 作用 |
|---|---|
| 补充丹药 | 增加 1 瓶,但不能超过当前持有上限 |
| 增加上限 | 持有上限永久增加 1 瓶 |
| 增加恢复量 | 提升这唯一一种丹药的基础恢复量 |
当前验证实现按逆向配置使用固定 HP 基础曲线 \`50、80、110……650\`;最大生命百分比治疗由独立丹药祝福叠加。丹药只在战斗中可使用,恢复不超过最大生命。进入下一层的 30% 恢复属于楼层机制,不消耗丹药。
## 8. 主要 UI 位置
| 区域 | 位置 | 内容与作用 |
|---|---|---|
| 局内货币 | 左上 | 当前局内点数 |
| AUTO / 暂停 | 右上 | 自动战斗状态与暂停入口 |
| 楼层进度 | 右侧竖条 | 当前层/总层数、Boss 蓄势或倒计时 |
| 棋盘 | 画面中上部 | 40 个实际地块、中心 Boss、玩家棋子和顺时针路线 |
| 玩家状态 | 棋盘下方 | 当前层、等级、生命值与生命条 |
| 装备 | 底部中间 | 武器、戒指、手套、鞋四个固定槽 |
| 属性查看 | 左下 | 打开角色属性与调试验收入口 |
| ROLL | 底部中央 | 唯一的棋盘主操作;掷骰期间锁定 |
| 丹药 | 右下 | 显示当前瓶数/上限;仅战斗中可用 |
地块必须优先通过原作图标辨认,文字只作为辅助,不允许玩家只能依赖颜色或猜测地块功能。
## 9. 动画与节奏硬约束
以下表现均必须保留一段可读动画或反馈:按钮按下、双骰滚动和定格、总点数显示、逐格移动、落地、过层恢复、战斗进入、双方攻击与受击、伤害和治疗数字、反击、胜利/失败、装备比较、祝福、商店购买、事件操作、源码祝福复生和最终结算。
正常游玩不得提供跳过这些动画的按钮,也不得在 ROLL 后直接把角色硬跳到最终地块。调试入口可加速战斗,但不能改变点数、步数、落点或结算顺序。
## 10. 当前验证结果
| 验收项 | 结果 |
|---|---|
| TypeScript 严格编译 | 通过 |
| 核心自动测试 | 24/24 通过 |
| 40 个独立实际地块 | 通过 |
| 可见 ROLL 总点数 = 动画步数 = 最终索引差 | 通过 |
| 1–4 骷髅 = 1–4 只怪物 | 通过 |
| 两类小 Boss 与三次污染 | 通过 |
| 战斗/事件变荒地且跨层保留 | 通过 |
| Boss 2+4 循环并转化 4 个地块 | 通过 |
| 浏览器完整冒烟 | 通过 |
| 原作 UI/地块资源还原测试 | 通过 |
| 广告按钮数量 | 0 |
## 11. 证据到实现
| 证据 | 结论 | 实现路径 |
|---|---|---|
| 用户标注图 1 | 点数必须与实际地块步数一一对应 | \`ROLL → dice sum → animateMovement(sum) → tileIndex\` |
| 用户标注图 2 | HUD、棋盘、装备、ROLL、丹药采用原作关卡内布局 | \`main.ts\` 渲染层 + \`styles.css\` 固定锚点 |
| 用户标注图 3 | 1–4 骷髅、小 Boss、污染 Boss 是不同战斗地块 | \`TileState.kind/enemyCount\` → 独立原作资源 → \`startBattle\` |
| 用户本轮确认 | 已触发地块变荒地并跨层保留;暂不加入其他负面格 | \`clearTileAfterResolution\` → \`EMPTY\` → 过层保留 |
| 自动测试与实机截图 | 规则、移动和资源加载可重复验证 | \`mvp/tests/core.test.mjs\`、\`browser-smoke.mjs\`、\`restoration.test.mjs\` |
## 12. 运行与复验
双击项目根目录:
\`\`\`text
HEROLL_MVP_START.cmd
\`\`\`
完整验证:
\`\`\`powershell
cd C:\Users\toshio\Documents\ChatGPT\heroll\mvp
.\Validate-Heroll-MVP.ps1
\`\`\`
启动器自检(不打开浏览器):
\`\`\`cmd
set HEROLL_MVP_SELF_TEST=1
HEROLL_MVP_START.cmd
\`\`\`
更细的公式、数据表和技术契约见 \`design/gameplay-validation/Heroll_Gameplay_Validation_GDD.md\`;原作视觉证据和还原边界见 \`analysis/reference-study/RESTORATION_REPORT.md\`。