Files
SoundGame/docs/design/05-rpg.md
T
SoundGame Dev cc0f8c008d HTML5 重写:6 款游戏 + 用户系统 + 全局设置 + 5 轮迭代重构
- 新增 web/ 纯音频 HTML5 平台:共享引擎(手势/WebAudio 三层/设置/震动)、
  Node 零依赖服务器(静态 + 注册登录 + 进度存档 API)
- 游戏:剑与声(RPG 新作)、声命线、暗室(重设计)、音序回响(重设计)、
  节拍行者(跟随领奏重构)、盲航(同向闪避重构);声东击西删除
- 全局功能:男声/女声双套 TTS 资产、三档语速、BGM 音量三档、
  震动反馈语言(10 种震型)、服务器进度同步
- 资产:899 ogg + 899 m4a(Qwen3-TTS 双性别语音、Stable Audio 3 音效、
  Mureka BGM 4+3 首),终检零缺失
- 文档:docs/design/ 13 篇设计审查文档、docs/audio/ 资产管线、
  web/server/README.md API 文档
2026-08-29 21:55:44 +08:00

14 KiB
Raw Blame History

05 · 新 RPG《剑与声》完整设计(rpg / Sword & Sound)

给开发者的实现要点摘要

  1. 纯音频回合制 RPG:节点式场景图(不是网格),左右滑=切换选项、单击=确认/前进、双击=重听、上滑=角色状态、下滑=菜单。回合制战斗:左右滑选指令、单击执行;敌方攻击有 1s 前摇音,前摇内双击=格挡(减伤 70%)——这是唯一的即时操作,绑双击规避 tap 延迟。
  2. 规模按"一轮开发(R5)可完成"控制:3 章、每章 6-8 个场景节点、共 8 种敌人 + 3 个 Boss、装备 6 件、数值一套线性公式。复杂度对标 escape(单文件 game.js + ~120 条语音 ×2 音色)。
  3. 进度存服务器:存档 JSON 结构见 §7,在场景切换、战斗结束、商店交易后自动保存。
  4. 第一章《迷雾林》内容全部给出(§5):8 场景、敌人表、对白功能大纲。第二、三章只给结构骨架与 Boss 设定,正文沿用第一章模式由开发 agent 扩写。
  5. 语音全部整句(禁止数字拼接):血量/等级/金币的播报用分段整句("毫发无损/受了轻伤/伤势很重/命悬一线"),数值细节进上滑状态播报的档位句。

R2 增补:施工级文档已就位,以这两份为准——

  • 05-rpg-chapter1.md:第一章场景图 JSON、战斗状态机转换表、全数值表、存档字段定义、BGM/sfx 资产清单(含 Mureka/SA3 prompt 草稿)。
  • 05-rpg-ch1-voice-ids.md:第一章 120 句台词表(旁白 104×2 性别 + NPC 16 单音色)。 本文 §7 的存档结构、§9 的资产数量为设计初稿,若与施工稿不一致,以 05-rpg-chapter1.md 为准(主要差异:存档 data 为服务器自由格式 + 必带 summary 字段;语音总量 104×2+16)。

1. 游戏定位与核心循环

  • 题材:武侠/奇幻。玩家是"盲剑客"沈听澜——眼盲,耳即眼。题材与纯音频玩法互为叙事 justification,敌人方位、招式前摇全部天然用声音呈现。
  • 单局时长:一章 15-25 分钟;全三章 60-80 分钟。死亡从章首重生(背包/等级保留),鼓励反复推图。
  • 核心循环:探索场景 → 听环境音与描述 → 选择行动(前进/调查/战斗/商店/休息)→ 回合制战斗(格挡是技巧点)→ 获得经验金币 → 升级换装备 → 打 Boss → 下一章。

2. 手势映射(符合全局默认,无需豁免)

2.1 探索态

手势 作用
左/右滑 在当前场景的选项间切换(每切换播选项名 + SWIPE_OK 震动)。选项循环
单击 确认执行当前选项(CONFIRM 震动)
双击 重听当前场景描述 + 环境音(重听是探索游戏的生命线)
上滑 角色状态播报(等级档位、血量档位、金币档位、装备名,全整句)
下滑 菜单:继续 / 保存并回大厅 / 重听帮助

2.2 战斗态

手势 作用
左/右滑 切换指令:攻击 → 技能(破空斩,耗内劲)→ 防御(本回合受伤减半)→ 道具(金疮药,回 40% HP)→ 循环
单击 执行当前指令
双击 格挡:仅在敌方攻击前摇音播放的 1.0s 窗口内有效,成功减伤 70% 并播格挡音;窗口外双击无效(ERROR 震动)
上滑 战场状态(己方血量档位 + 敌方血量档位)
下滑 尝试逃跑(Boss 战无效,播"避无可避")

格挡窗口的 300ms tap 延迟问题不存在——格挡绑双击(即时回调),这是全局规范"即时反馈绑滑动/双击"的应用。

3. 数值框架(简单可平衡)

3.1 玩家

等级 lv: 1..10
maxHp  = 20 + 8*(lv-1)          // lv1=28? 不——lv1=20, lv10=92
atk    = 5 + 2*(lv-1) + 武器atk  // lv1 裸装=5
def    = 护甲def
内劲 mp = 3 + lv                 // 破空斩耗 3,伤害 = atk*2
升级所需 exp = lv * 20           // lv1→2 需 20,lv9→10 需 180;全三章总 exp ≈ 900

伤害公式:dmg = max(1, round((攻方atk - 守方def) * (0.85 ~ 1.15 随机))) 格挡:dmg = max(0, round(dmg * 0.3));防御指令:dmg = round(dmg * 0.5)(与格挡不叠加)。

3.2 敌人表(三章通用模板 + 第一章实例)

敌人 章 HP ATK DEF EXP 金币 前摇音特征
野狼 1 10 4 0 8 5 扑击前低吼
山贼 1 16 6 1 12 12 挥刀前的脚步
毒蛛 1 12 7 0 12 8 肢节摩擦(高频)
精英·寨丁头目 1 24 8 2 20 25 重甲碰撞
Boss 黑风寨主 1 45 10 2 50 100 双刀互击(两下金属声)
沼泽鳄 / 蛊师 / … 2 按 lv4-6 玩家数值 +30% 调 18-30
Boss 腐沼祭主 2 70 14 3 90 200 吟唱(人声哼鸣)
剑傀 / 影卫 / … 3 按 lv7-9 玩家数值 +30% 调 35-50
Boss 盲剑宿敌·白无瞳 3 110 18 5 150 500 无声!前摇是"寂静"(特殊机制:格挡窗口用震动 DANGER 提示,教学点在 Boss 战开场由旁白讲明)

第三章 Boss"无声前摇"是全游戏叙事+玩法高潮:耳朵最强的剑客遇到没有声音的敌人,格挡提示从听觉转触觉——呼应全局震动语言。

3.3 装备与道具

物品 类型 效果 价格
铁剑 武器 atk+3 100(一章商店)
青钢剑 武器 atk+6 300(二章商店)
听风剑 武器 atk+9,格挡窗口 +0.3s 600(三章商店,特色装)
皮甲 护甲 def+2 80
铁鳞甲 护甲 def+4 250
金疮药 道具 回复 40% maxHp 30,可叠 5 瓶

平衡校验:lv3 玩家(atk≈9+3=12 铁剑)打野狼 dmg≈11-13 → 一刀秒;打山贼 2 刀;Boss 黑风寨主 45HP 需 ~5 刀,Boss dmg 对皮甲玩家 ≈ 8-10/刀,玩家 36HP 可吃 4 刀,格挡成功只吃 2-3 → 不格挡会死、会格挡能过,技巧有真实收益。

4. 场景与探索结构

  • 每章 = 有向节点图(非网格):节点 = 场景,边 = 选项。探索时当前场景播环境音循环底(长底噪用 bgm 层 loop、低音量)+ 首次进入播描述语音。
  • 每章结构:起点(教学/商店) → 主线节点 ×4~5 → Boss,其中 2 个节点带岔路(一条主线、一条奖励支线:宝箱/支线 NPC/休息点)。
  • 战斗触发:进入战斗节点即触发(暗雷不做了——纯音频里"突然遇敌"没有视觉游戏的信息缓冲,全部明雷:场景描述里明说"有杀气")。
  • 场景环境音要求:每场景一个专属 amb 循环(同 escape 重设计的做法,Stable Audio 3 生成)。

5. 第一章《迷雾林》详细内容

5.1 场景列表(8 节点)

# 场景 id 名称 环境音 选项 说明
1 village 雾口村 篝火+人语 前进 / 商店 / 休息(回满 HP) / 状态 起点兼教学关;商店卖铁剑/皮甲/金疮药
2 path 林间小路 风+落叶 前进 / 调查(找到 15 金币) 教学:双击重听、上滑状态
3 fork 岔路口 风分两路(立体声) 左(宝箱:金疮药×2) / 右(主线) 教学:左右滑选择
4 stream 溪流 流水 饮水(回满) / 前进 回复点;此处触发教学战:野狼×1(教学格挡,必不死)
5 hunter 老猎人小屋 柴火+磨刀 对话(支线:获金疮药×1+铁剑九折) / 前进 NPC 角色音首登场
6 deepwood 密林深处 虫鸣+远处狼嚎 前进(遭遇山贼×2 连战) 本章难度峰值前
7 gate 黑风寨门前 火把+人声嘈杂 强攻(战寨丁头目) / 绕行(多打一场但 Boss 战前满状态) 战术选择
8 boss1 聚义厅 大厅混响+火盆 Boss 黑风寨主 章 Boss;胜利→第二章解锁

5.2 教学编排(探索与战斗各自交互式)

  • 场景 1:旁白教"左右滑选、单击确认",让玩家亲手在商店完成一次"听价→选→买"(给 50 金币启动金)。
  • 场景 3:教左右滑选择岔路 + 双击重听。
  • 场景 4 教学战(野狼,HP 锁 1 不死保护):旁白分步——"它要扑了,听前摇!"→ 低吼响起 → "双击格挡!"→ 成功/失败都继续(失败只掉 1 血),然后教"左右滑选攻击,单击出剑"。玩家亲手砍出第一刀后教学结束。
  • 之后不再教学,上滑随时可重听帮助。

5.3 对白大纲(每句注明功能与语气;正文由开发 agent 按语气扩写,整句、≤25字/句)

序章旁白(旁白音:Serena/Uncle_Fu,平静叙述)

  1. "你的眼睛看不见了。但你的耳朵,比谁都灵。"——立人设,沉稳
  2. "黑风寨掳走了你唯一的徒弟。追进迷雾林,把他们连根拔起。"——给动机,冷
  3. "先记住怎么用耳朵走路。"——转教学,缓和

村长(village,长者音:Uncle_Fu 同款 speaker 不同 instruct?"同一角色 speaker+instruct 固定"——村长=Uncle_Fu+慈和 instruct;旁白 male 版=Uncle_Fu+平静 instruct。同 speaker 不同角色时 instruct 不同是允许的,规范约束的是"同一角色恒定") 4. 问候+送 50 金币:"外乡人,林子里不太平。这点钱拿着防身。"——慈和 5. 商店引导 2 句——功能性,慢速清晰

老猎人(hunter,沙哑老者 instruct) 6. 戒备开场:"站住。……哦,是个用耳朵的。"——先冷后奇 7. 支线给予:"寨子里有我旧识。带上这个,别死在路上。"——粗中有暖(功能:给药+折扣 flag)

寨丁头目(deepwood/gate,粗哑) 8. 遭遇喝骂 1 句——凶 9. 半血狠话 1 句——凶转慌(功能:血量反馈的叙事化)

黑风寨主(boss1,低沉反派) 10. 登场宣言:"盲剑客?正好,省得挖你眼睛。"——狂 11. 半血:"有两下子。可惜你听不懂死期的声音。"——狠(功能:阶段转换信号) 12. 败亡遗言——惊愕→不甘(功能:章结束钩子,暗示白无瞳存在)

章尾旁白 13. "寨主倒了。但徒弟不在这里——一张字条,指向南方的腐沼。"——收束+引第二章

6. 第二、三章骨架

  • 第二章《腐沼泽》:7 节点。新机制:毒状态(每回合 -3 HP,金疮药可解)、蛊师敌人(先攻)。Boss 腐沼祭主二阶段(半血召唤 2 小蛛)。解锁青钢剑/铁鳞甲。
  • 第三章《无瞳峰》:7 节点。新机制:黑暗战斗(部分敌人无声前摇,靠震动格挡——为终 Boss 铺垫)、听风剑。终 Boss 白无瞳三阶段,终阶段完全无声前摇。
  • 两章正文沿用第一章模板(场景表+敌人表+对白功能大纲)由开发 agent 扩写,规模与第一章相当。

7. 存档结构(progress JSON)

信封按 00 文档 §4.2({schema, game:"rpg", updatedAt, data}),data:

{
  "chapter": 1,
  "scene": "stream",
  "player": {
    "lv": 3, "exp": 45,
    "hp": 28, "maxHp": 36, "mp": 6,
    "gold": 120,
    "weapon": "iron_sword", "armor": "leather",
    "potions": 2
  },
  "flags": {
    "tutorial_explore_done": true,
    "tutorial_battle_done": true,
    "hunter_quest": true,
    "chest_fork": false,
    "shop_discount": true
  },
  "chapters": { "1": "cleared", "2": "unlocked", "3": "locked" },
  "stats": { "kills": 12, "deaths": 1, "parries": 9, "playSec": 1500 }
}
  • 保存时机:场景切换后、战斗结算后、商店交易后、菜单选"保存并回大厅"。写 localStorage 并 PUT 服务器(未登录只写本地)。
  • 读取:进游戏检测到存档 → 语音问"继续上次的旅程?单击继续,右滑开始新游戏"。新游戏清空 data 保留 stats 累计。
  • 版本:schema 升版时开发 agent 写迁移或丢弃重来(R 轮内允许丢弃,文档标注即可)。

8. 战斗回合时序(实现契约)

回合开始 → 若敌人存活:播敌人行动意图音(前摇 1.0s,期间双击=格挡判定)
  → 前摇结束结算敌方攻击(应用格挡/防御减伤)→ 播受击/格挡音 + 震动(HIT / CONFIRM)
  → 玩家指令阶段:左右滑切指令(播指令名)→ 单击执行 → 播攻击音 + 敌方受击音
  → 敌方血量档位播报仅在上滑查询时播;半血/死亡自动播叙事短句
  → 循环。玩家 HP≤0 → 战败旁白 → 章首重生(等级金币保留,hp 回满)
  • 敌方前摇音 = 敌人表"前摇音特征"列的 sfx(每敌人一个专属前摇音,这是"听声辨招"的核心资产,优先级高于环境音)。
  • 内劲技能"破空斩":atk*2,mp-3,mp 不足时指令播报"内劲不足"并跳过该选项。

9. 资产清单(规模核对)

类别 数量 备注
bgm 5 3 章环境底各 1 + 战斗 1 + Boss 1(Mureka,循环)
sfx ~35 8 敌人前摇 + 3 Boss 前摇 + 攻击/受击/格挡/技能/买药/开箱/升级 + 8 场景 amb 循环(或 amb 走 bgm 层)
voice ~120 句 ×2 音色 旁白 ~30、NPC ~40、教学 ~15、战斗播报 ~20、状态/菜单 ~15;全部整句、角色 speaker+instruct 常量化
对标 escape 现版约 40 句语音 + 15 sfx;《剑与声》约为其 3 倍,R4 备资产 + R5 开发一轮可行(场景/敌人/指令全部数据驱动,game.js 单文件预计 800-1000 行)

10. 开发次序建议(R5 一轮内)

  1. 数据表(场景图/敌人/物品/对话 id)→ 2. 探索循环 + 菜单 + 状态播报 → 3. 战斗回合机(含格挡窗口)→ 4. 商店/道具/升级 → 5. 存档读写 → 6. 第一章内容灌入 → 7. 第二、三章灌入 → 8. 教学关与打磨。资产(R4 已生成)缺失时用 console.error 静默跳过的引擎特性兜底,先通流程后补音。