Files
SoundGame/web/rpg/README.md
T
xsl ee5d4d2544 feat(playbook): 26 号交互手册全量落地——剩余 12 款深度重构 + 语音全量重制
storyline/escape/simon 首批之后的推广收官:15 款全部按 26 号模式运行
(发言权/回执/三档提示/迷茫接管/手势阶梯/断点复述),旧「双击重听/格挡/
菜单确认」等反模式口径全线废除,开场零规则念白(首句即动手)。

游戏层(12 款):rpg(格挡=前摇窗口内再单击)/ rhythm / space / radio /
dungeon / abyss / detective / cipher / teahouse / keeper / bridge /
hunt(联机切片):
- 每款 game.js 接引擎六模块 + makeInputPipeline(doubleTapWindow:0);
  四向玩法类 swipeCore + 长按帮助;双击是玩法的(space 护盾 / hunt
  旋风斩)按手势阶梯阶段 3 分档恢复双击窗口(doubletapCore)
- 每款 playtest 重写:玩法断言 + §6.2 乱点机器人(无声操作 / 被动
  原句重复 / 打断失败 = 0);15 款 3900+ 断言全绿
- 12 份 docs/design/26-apply-*.md 施工单 + tools/voice_lines_26/
  台词清单 + voice-ids 文档同步 + 转写会话剧本按新口径重写

引擎层(web/engine/,6 处修复):pipeline 增 doubletapCore;novice
teachLine 带 voice/ 前缀(此前教学句被静默丢弃);confusion.record
前置到新手门(锁定手势的乱点也计信号);InvalidHints 播完恢复解释前
状态(根治孤儿 BUSY);WaitPoint takeover(2) 台账去重;台账只在
speak 真正播出时登记。遗留引擎债登记 roadmap §3.1。

语音资产:台词表合并(新增 ~250 系统句 / 改 ~50 旧口径 / 删 ~110
废止句;合并器 tools/merge_voice_lines_26.py + 引用校验器
tools/validate_voice_refs.py),GPU 重录 1536 wav → 4204 ogg/m4a
落地,check_all_assets + validate_voice_refs 双绿;键盘变体同步扩表。

大厅/文档:15 款统一新交互口径(「新交互」徽标退役);README /
HANDOVER / rpg README 旧口径修正;roadmap P0-P3 置完成。
2026-10-02 12:33:20 +08:00

98 lines
5.3 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.
# 剑与声(RPG · Sword & Sound)
纯音频回合制武侠 RPG。你是盲剑客沈听澜——眼盲,耳即眼。
黑风寨掳走了你唯一的徒弟,追进迷雾林,把他们连根拔起。
## 玩法
- **探索**:节点式场景图(雾口村 → 林间小路 → 岔路口 → 溪流 → 猎人小屋 →
密林深处 → 黑风寨 → 聚义厅)。每个场景有环境音循环与语音描述,
在选项间切换、确认行动:前进 / 调查 / 商店 / 休息 / 对话 / 强攻或绕行。
- **战斗**:明雷回合制。选指令出手;敌方攻击前会响起**前摇音**
(野狼低吼、山贼拔刀、寨主双刀互击……)——在前摇内**再单击一次格挡**,
减伤 70%(伤害 ×0.3)。新手期无双击:双击按一次单击处理(26 号手势宪法)。
前摇时长按新手保护分档(见下"难度曲线"),标准档 1.0s。
- **首战教学**:第一场战斗(溪流教学狼)是四步强制教学——
认识指令(左右滑 2 次)→ 攻击命中 → 听前摇格挡(受击也算过)→ 防御演示,
每步 8s 无操作重复提示、16s 看门狗兜底推进;教学狼 ATK 2、前摇 1.8s、
玩家 HP 锁底 1 必不死。每场战斗开始还有回合提示音 `turn_player`,
胜利有号角 `victory`。
- **难度曲线**(按已完成战斗场数 `battlesWon`):第 1-3 场敌方前摇 1.5s、
伤害 ×0.6;第 4-5 场 1.25s、×0.8;第 6 场起标准;Boss 恒标准。
- **逃跑**:Lv<3 普通战必成;Lv≥3 70% 成功,失败则敌方追加一个正常前摇回合
(可格挡);Boss/剧情战"避无可避"。Lv<3 首次到寨门会听到 boss1_warn 劝退提示。
- **旁白跳过**:探索/剧情/状态语音播放中单击=跳过本句(链继续);
战斗指令名与教学句不可跳。开局插播一次"单击可跳过旁白"。
- **成长**:战斗得经验金币 → 升级(maxHp/atk 提升)→ 商店换铁剑/皮甲 →
金疮药回血。战败从章首重生,等级金币装备保留。
- **Boss**:黑风寨主半血进二阶段(攻击提升、前摇变急促)。讨伐后章结算。
## 手势
### 探索态
| 手势 | 作用 |
|---|---|
| 左 / 右滑 | 切换选项(播选项名,循环) |
| 单击 | 确认执行当前选项(语音播放中单击=跳过本句) |
| 双击 | 新手期按单击处理;手势阶梯阶段 3 解锁后 = 重听当前等待点完整句 |
| 上滑 | 角色状态(等级/血量/金币/装备,分档整句) |
| 下滑 | 菜单:继续旅程 / 保存并回大厅 / 重新听帮助 |
### 战斗态
| 手势 | 作用 |
|---|---|
| 左 / 右滑 | 切换指令:攻击 → 破空斩(耗内劲 3,双倍伤害)→ 防御(本回合受伤减半)→ 金疮药(回 40% HP) |
| 单击 | 执行当前指令 |
| 单击(窗口内再按) | **格挡**:仅敌方前摇窗口(教学 1.8s / 保护 1.5s / 过渡 1.25s / 标准 1.0s,听风剑再 +0.3s)内有效,减伤 70%;窗口外单击给 invalid 回执 + 首次解释 |
| 上滑 | 敌我血量档位 |
| 下滑 | 逃跑(Lv<3 必成;Lv≥3 70%,失败吃一个可格挡的前摇回合;Boss/剧情战"避无可避") |
菜单操作(RPG 豁免,与探索同构):左右滑切换 + 单击确认;上滑=帮助;下滑=关闭。
## 战斗数值
```
maxHp = 20 + 8×(lv-1) atk = 5 + 2×(lv-1) + 武器 def = 护甲
内劲 mp = 3 + lv(破空斩耗 3) 升级所需 exp = lv × 20
伤害 = max(1, round((攻-防) × 0.85~1.15)) × 难度系数(保护 0.6 / 过渡 0.8 / 标准 1.0,向下取整 min 1)
格挡 ×0.3 / 防御 ×0.5(不叠加)
难度档位按 stats.battlesWon 在每场战斗开始时取档:0-2 场保护 / 3-4 场过渡 / ≥5 标准 / Boss 恒标准
```
## 状态音乐(docs/design/10-feedback2-state-bgm.md §7)
BGM 层报状态 + sfx 层 amb 报场景:菜单 `bgm/menu` / 村庄 `bgm/village` /
探索 `bgm/explore`(volume 0.35 轻垫 + amb 环境音)/ 战斗 `bgm/battle`、
Boss `bgm/boss`(400ms 快切,amb 停)/ 胜利 → 战斗 BGM 淡出 1.5s →
explore 淡入 2s / 章结算 `bgm/ending`。
## 无头试玩测试
```bash
tools/node/bin/node web/rpg/test/playtest.mjs # 139 条断言,退出码 0=全过
```
mock 浏览器环境 + 虚拟时钟,覆盖 13 号文档 §6 全部关键路径与边界断言
(四步教学/看门狗/锁血/逃跑分档/格挡防御减伤/战败重生/跳过旁白/存档续玩)
+ 资产引用校验(game.js 引用的全部 id 双性别/双格式零缺失)。
## 存档
- 结构:`{schema, updatedAt, summary, chapter, scene, player, flags, chapters, stats}`
(见 docs/design/05-rpg-chapter1.md §6 精确定义)。
- 保存时机:场景切换、战斗结算、商店交易、菜单"保存并回大厅"。
- 本地 localStorage(`soundgame.progress.rpg`)+ 已登录时同步服务器
(`PUT /api/progress {game:'rpg'}`),大厅卡片显示 `summary`。
- 有存档进游戏时:单击=继续旅程,右滑=开始新旅程(保留 stats 累计)。
- 战败:章首(雾口村)重生,HP/MP 回满,等级/金币/装备/flags 保留,
本章非 Boss 遭遇重置。
## 运行
```bash
python3 -m http.server 8117 --directory /home/ubuntu/SoundGame/web
# 浏览器打开 http://localhost:8117/rpg/ ,务必戴耳机
```