diff --git a/docs/技术报告_音频资源制作.md b/docs/技术报告_音频资源制作.md index 021f295..cdaa552 100644 --- a/docs/技术报告_音频资源制作.md +++ b/docs/技术报告_音频资源制作.md @@ -89,10 +89,10 @@ | **DiffRhythm 2** | 新项目 | ~8GB | 最快:10 秒生成 4:45 歌曲;精确歌词对齐;Latent Diffusion 架构 | 快速迭代 BGM 候选 | | **YuE (乐)** | Apache 2.0 | 8GB(量化)-80GB(全) | 双 LLaMA 架构;完整歌曲(人声+伴奏同步);最接近 Suno 的开源方案 | 需要完整歌曲(含唱) | | **MusicGen (Meta)** | CC BY-NC | ~12GB fp16 | 研究级纯器乐生成;立体声输出;Loop 素材可控性强 | 纯器乐 BGM / 素材 | -| **Stable Audio Open 1.5** | 已 clone | ~12GB | 47s 立体声 44.1kHz;SFX 和音乐兼顾;代码已在本机 | 音效与短音乐片段 | +| **Stable Audio Open 1.0** | 已部署 | ~12GB | 47s 立体声 44.1kHz;SFX 和音乐兼顾;代码和模型均已在本机 | 音效与短音乐片段 | **部署优先级建议**: -1. **Stable Audio Open 1.5** — 代码已在本机 (`/home/xsl/tools/stable-audio-tools/`),只需下载模型权重 + `pip install`,马上可用 +1. **Stable Audio Open 1.0** — 已在本机 (`/home/xsl/tools/stable-audio-tools/`) 部署完成,可直接用于精细音效补充 2. **DiffRhythm 2** — 速度碾压 ACE-Step,适合大量迭代试听 3. **YuE** — 32GB VRAM 可跑量化版,适合需要有歌词人声的完整歌曲 @@ -122,11 +122,11 @@ | 工具 | VRAM | 为什么值得部署 | 适用场景 | |------|------|--------------|---------| -| **Stable Audio Open 1.5** | ~12GB | 音效生成品质最高的开源方案;44.1kHz 立体声;47s 时长 | 高品质 Foley、环境音 | +| **Stable Audio Open 1.0** | ~12GB | 音效生成品质最高的开源方案之一;44.1kHz 立体声;47s 时长 | 高品质 Foley、环境音 | | **AudioLDM 2** | 8-16GB | 全能型(SFX + 音乐 + 语音);48kHz;多种模型尺寸 | 短音效、过渡音 | **部署优先级建议**: -1. **Stable Audio Open 1.5** — 同上,已有代码,补模型即可 +1. **Stable Audio Open 1.0** — 同上,已完成部署,可直接用于补充 ACE-Step 不擅长的精细音效 2. **AudioLDM 2** — pip 安装,轻量推理,适合补充短促音效 #### 线上服务 @@ -186,6 +186,8 @@ voice/ **注:全部使用 CUDA 12.8 编译版 torch,支持 RTX 5090 (sm_120)**。 PyTorch wheel 来源:`https://mirrors.aliyun.com/pytorch-wheels/cu128/` +> 版本说明:当前本机已部署并验证的是 **Stable Audio Open 1.0**。此前文档中出现的 "Stable Audio Open 1.5" 作为潜在升级方向处理,不与当前已部署环境混用;若后续升级,需要单独记录模型路径、配置文件和启动命令。 + #### 启动命令 ```bash @@ -265,5 +267,5 @@ RTX 5090 (32GB) 可同时运行的组合: | 现状 | 升级方案 | 收益 | |------|---------|------| -| ACE-Step 生成全部音效 | → Stable Audio Open 1.5 补充精细音效 | 44.1kHz 立体声,电话底噪/UI 音效品质更高 | +| ACE-Step 生成全部音效 | → Stable Audio Open 1.0 补充精细音效 | 44.1kHz 立体声,电话底噪/UI 音效品质更高 | | 结局仅语音 + 字幕 | → ACE-Step/DiffRhythm 生成结局专属 BGM | 5 个结局各有独立氛围音乐,沉浸感提升 | diff --git a/docs/游戏策划案.md b/docs/游戏策划案.md index af7a493..148b2f6 100644 --- a/docs/游戏策划案.md +++ b/docs/游戏策划案.md @@ -1,8 +1,8 @@ # 《听仙》— 纯听觉仙侠MUD游戏策划案 -> 版本:v1.2(修订版) +> 版本:v1.5(修订版) > 日期:2026-05-21 -> 状态:修订策划(解决交互冲突、属性体系一致性、MVP收窄、技术架构前置、音频队列收敛) +> 状态:修订策划(解决交互冲突、属性体系一致性、H5平台限制、键盘输入收敛、MVP收窄、技术架构前置、音频队列收敛) --- @@ -34,7 +34,7 @@ | 游戏名称 | 《听仙》(暂定) | | 类型 | 纯听觉多人在线MUD | | 题材 | 仙侠(修真/修仙) | -| 平台 | HTML5 移动端浏览器 | +| 平台 | HTML5 移动端浏览器(首次启动需用户手势解锁音频) | | 商业模式 | 纯免费 | | 目标用户 | 仙侠爱好者、音频内容爱好者、视障玩家、通勤/睡前场景用户 | @@ -42,7 +42,7 @@ > **"闭上眼,踏入修仙界。"** -玩家打开游戏后,屏幕全黑,只通过耳朵感知整个仙侠世界。风声、鸟鸣、市集喧闹、剑气破空——所有信息都通过声音传递。玩家用最简单的手势(滑动、点击)与世界互动,在语音引导下探索、修炼、战斗、结交道友。 +玩家打开游戏后,先通过一个极简启动页点击"开始听仙"以解锁浏览器音频权限,随后进入全黑模式,只通过耳朵感知整个仙侠世界。风声、鸟鸣、市集喧闹、剑气破空——所有信息都通过声音传递。玩家用最简单的手势(滑动、点击)与世界互动,在语音引导下探索、修炼、战斗、结交道友。 ### 1.3 与传统MUD的异同 @@ -51,7 +51,7 @@ | 信息载体 | 文字描述 | 语音播报 + 音效氛围 | | 输入方式 | 键盘打字指令 | 6种手势(4滑动+单击+双击) | | 世界结构 | 房间/节点网络 | 相同,但每个房间有独立声景 | -| 多人交互 | 文字聊天 | 语音播报 + 文字转语音 | +| 多人交互 | 文字聊天 | 语音输入/快捷消息 + TTS播报,键盘输入兜底 | | 战斗 | 文字指令回合制 | 手势选择回合制 | | 沉浸感来源 | 文字描写的想象力 | 声音营造的空间感 | @@ -63,6 +63,7 @@ 4. **渐进披露原则**:信息分层播报,先说关键信息,玩家可通过手势请求更多细节 5. **容错友好原则**:误操作不会造成不可逆后果,所有危险操作需要确认 6. **声景区分原则**:不同场景有明显不同的环境音,玩家通过氛围音即可感知位置变化 +7. **平台约束显性化原则**:移动浏览器的音频解锁、后台挂起、网络断连等限制必须转化为明确交互和服务端规则,不能依赖客户端持续运行 --- @@ -192,6 +193,8 @@ > **职责分离**:**上滑专管移动**,**双击专管互动**,二者不重叠。焦点为出口时双击播放该出口的详细描述(而非移动),要移动必须上滑。这避免了纯听觉用户误把出口当NPC互动却意外移动的问题。 > > **焦点系统**:左右滑动在当前房间的所有可交互对象(出口、NPC、物品、玩家)之间循环切换。进入房间时默认焦点为第一个出口。MUD中没有固有的"后退"概念,玩家通过切换到反向出口再上滑即可返回。 +> +> **危险移动保护**:上滑移动只在普通安全出口上立即执行。若移动会离开安全区、进入高于推荐等级的区域、进入 PvP 区、进入副本 Boss 房或触发一次性剧情选择,第一次上滑只播报风险提示,玩家需在 3 秒内再次上滑确认;左/右滑切换焦点或单击查看状态会取消本次确认。 #### 战斗态 @@ -251,9 +254,24 @@ | 上滑 | 上一个物品 | "回灵丹,数量3" | | 下滑 | 下一个物品 | "铁剑,已装备" | | 左滑 | 返回上一级 | (返回音效) | -| 右滑 | 物品操作子菜单 | "可用操作:使用、丢弃、查看详情" | -| 单击 | 查看物品详细信息 | "回灵丹:恢复50点灵力。品质:普通。描述:以灵草炼制的入门丹药。" | -| 双击 | 使用/装备当前物品 | "你服下回灵丹。灵力恢复50点,当前灵力:115/200。" | +| 右滑 | 切换分类(全部/装备/丹药/材料/其他) | "丹药分类,共3件。" | +| 单击 | 查看当前物品详细信息,进入物品详情层 | "回灵丹:恢复50点灵力。品质:普通。描述:以灵草炼制的入门丹药。" | +| 双击 | 使用/装备当前物品的默认操作 | "你服下回灵丹。灵力恢复50点,当前灵力:115/200。" | + +物品详情层中,右滑打开当前物品的操作子菜单(使用、丢弃、查看详情、放入交易等),左滑返回背包列表层。 + +#### 传送选择流程(背包态子流程) + +玩家在背包中对传送符双击使用后,进入传送选择流程。 + +| 手势 | 功能 | 语音反馈示例 | +|------|------|------------| +| 上滑 | 上一个目的地 | "清风镇·镇中广场" | +| 下滑 | 下一个目的地 | "青云宗·山门" | +| 左滑 | 取消传送,返回背包态 | "已取消传送。" | +| 右滑 | 重听当前目的地限制/距离 | "安全区,可传送。" | +| 单击 | 查看目的地详情 | "清风镇·镇中广场,安全区,已解锁传送点。" | +| 双击 | 开始传送符施法 | "传送符燃起,三息后传送。" | #### 突破流程(菜单态子流程) @@ -280,6 +298,8 @@ | 战斗结束 | 战斗态 | 探索态 | 胜利/失败音效 | | 菜单进入背包 | 菜单态 | 背包态 | 背包打开音效 | | 背包中左滑返回 | 背包态 | 菜单态 | 返回音效 | +| 背包中双击使用传送符 | 背包态 | 传送选择流程 | 符箓展开音效 | +| 传送完成/取消/被打断 | 传送选择流程 | 背包态或目标房间探索态 | 传送完成/取消/打断提示音 | | 菜单进入修炼/突破且满足条件 | 菜单态 | 突破流程 | 修炼氛围音 + 突破提示 | | 突破完成/取消 | 突破流程 | 菜单态 | 成功/失败/取消提示音 | | 对话中选择"交易" | 对话态 | 商店态 | 商店打开音效 | @@ -291,8 +311,22 @@ 1. **防误触**:战斗中的逃跑、丢弃贵重物品等操作需要双击确认后再次双击 2. **状态播报**:任何状态下**单击**都可查看当前完整状态(这是单击在所有状态下的统一语义) -3. **超时回退**:菜单态/对话态超过60秒无操作,自动返回探索态并语音提示 +3. **超时回退**:子流程状态按风险分级超时,避免玩家停留在无声界面 4. **严格6手势**:不引入长按、三击等额外手势,避免增加学习成本和误触概率 +5. **危险移动二次确认**:探索态上滑进入危险出口时,先播报"前方危险,再次上滑确认前进",避免误触离开安全区或进入高危区域 + +超时规则: + +| 状态/流程 | 无操作超时 | 超时行为 | +|----------|-----------|---------| +| 菜单态 | 60秒 | 自动返回探索态,播报"菜单已关闭" | +| 对话态 | 60秒 | 自动结束对话,返回探索态 | +| 背包态 | 60秒 | 自动返回菜单态,播报"已返回菜单" | +| 传送选择流程 | 30秒 | 自动取消传送,返回背包态 | +| 商店态 | 60秒 | 自动返回对话态,播报"商店已关闭" | +| 交易态 | 45秒 | 自动取消交易,双方播报"交易超时取消" | +| 突破流程(未开始) | 60秒 | 自动返回菜单态 | +| 突破流程(已开始) | 不自动退出 | 只按突破事件计时;错过干扰处理按失败/受损规则结算 | > **注意**:操作缓冲和打断规则见第六章"音频播报状态机",此处不重复定义。 @@ -306,8 +340,9 @@ ``` 1. 语音:"欢迎来到苍玄大陆。请为自己取一个道号。" - → 跳转到文字输入界面(唯一需要键盘的环节) - → 输入完成后语音播报确认:"道号——[玩家名],可对否?双击确认,左滑重新输入。" + → 系统随机生成道号并语音播报:"道号——云松子,可对否?双击确认,上滑/下滑更换,右滑按风格生成。" + → 默认不调起键盘;若玩家选择"自定义道号",才进入文字输入界面 + → 自定义输入完成后语音播报确认:"道号——[玩家名],可对否?双击确认,左滑重新输入。" 2. 语音:"请选择你的灵根属性。上滑下滑切换,双击确认。" → 金灵根(物理攻击见长) @@ -358,9 +393,11 @@ - 播放修炼氛围音 - 语音引导玩家"凝神静气,双击开始突破"(**双击**确认开始) - 单击可查看当前突破进度/状态(保持单击统一语义) - - 突破过程中随机出现干扰(需要在音效提示后及时**双击**化解) + - 突破过程中随机出现干扰(需要在音效提示后 3 秒内**双击**化解) + - 干扰响应窗口:提示音开始后 3 秒内双击视为化解成功;3 秒未响应或误操作其他手势,视为本次化解失败 - 成功/失败有不同的音频叙事 - 失败不掉级,但需等待冷却时间后重试 +- 突破流程继续遵守全局一致性规则:单击只读查看状态,双击执行当前确认/化解动作 - 突破冷却: - 普通大境界突破失败:现实时间 30 分钟后可重试 - 天劫/终极试炼类突破失败:现实时间 60 分钟后可重试 @@ -378,6 +415,8 @@ | **控制功法** | 限制敌人 | 定身术、缚灵索 | | **身法** | 闪避/移动 | 踏云步、瞬移术 | +> 毒不是独立灵根或主功法类别,默认作为状态效果或附加效果存在,例如中毒、腐蚀、毒雾持续伤害。若后续设计毒修流派,应作为资料片式特殊体系单独定义,不混入五行克制矩阵。 + #### 技能获取途径 1. **出身自带**:根据灵根和出身获得1-2个初始技能 2. **门派传授**:完成门派任务后由师父NPC传授 @@ -404,7 +443,10 @@ > **移动浏览器限制**:移动端浏览器在后台会暂停 JavaScript 计时器、WebSocket 连接和音频播放。因此修炼收益**不依赖客户端持续运行**。 - 玩家开始修炼时,服务端记录 `{start_time, room_id, cultivation_rate}` -- 玩家离线/切换应用/关闭屏幕后,服务端按时间差计算离线收益 +- 玩家在前台且 WebSocket 心跳正常时,按在线修炼收益结算 +- 玩家离线/切换应用/关闭屏幕/WebSocket 断开后,服务端从最后一次有效心跳开始按离线收益结算 +- 客户端监听 `visibilitychange`:页面隐藏时立即上报后台状态并播放/排队提示"浏览器进入后台,修炼将按离线收益结算" +- 恢复前台后,客户端重新连接并请求服务端结算差额;收益以服务端时间为准,不信任客户端计时器 - 下次上线时,服务端一次性结算离线期间的经验并语音播报: - "你打坐修炼了3小时42分,获得经验1860点。当前等级:练气四层。" - 离线修炼收益 = 在线修炼收益 × 0.5(鼓励在线但不惩罚离线) @@ -485,6 +527,14 @@ - 安全区内允许打坐修炼、交易、整理背包、社交聊天 - 房间配置以 `safe_zone: true` 标记;若 `safe_zone: true`,默认 `pvp_allowed: false` +战斗与安全区边界: + +- 战斗态中没有房间移动操作;上滑/下滑用于切换技能,因此玩家不能在战斗中通过移动进入安全区 +- 传送符、普通出口移动在战斗中均不可用,会播放无效提示"战斗中无法离开" +- 逃跑是战斗动作而不是地图移动;只有战斗规则判定逃跑成功后,才退出战斗并移动到预设安全落点或上一房间 +- 逃跑成功不会把怪物带入安全区;安全区内其他玩家不受该战斗实例影响 +- 若玩家在安全区边界被攻击,战斗实例仍发生在原危险房间,不能通过一步进入安全区取消结算 + #### 主要区域概览 | 区域 | 等级 | 房间数(MVP) | 核心声景 | @@ -615,9 +665,16 @@ 4. P3 消息:按到达顺序排到队尾 **队列溢出:** -- 队列上限 5 条。超出时,从队尾开始丢弃最低优先级的消息 +- 队列上限 5 条(MVP/单人阶段默认值;多人阶段需按实测重新评估)。超出时,从队尾开始丢弃最低优先级的消息 - 被丢弃的 P3 消息不做任何提示(风味文本丢失无影响) +**战斗事件合并:** +- 同一回合内的同类 P2/P3 状态事件合并播报,避免连续碎片化提示 +- 新 P1/P0 到达时,过期的 P2/P3 详细播报改写为一句状态摘要,例如"你中毒,气血降至三成" +- 状态摘要只保留当前仍有效的信息;已结束的中毒、护盾、增益不再补播 +- Boss 大招、濒死、队友阵亡等 P0/P1 不参与合并,必须即时播报 +- 不通过加速语速强行塞入旧消息,避免纯听觉用户在高压战斗中听不清关键信息 + **玩家操作与播报的关系:** - **音效层**(操作反馈音):手势触发后 **立即播放**,不进队列,不受语音层影响 - **浏览类操作**(单击查看、上下滑切换技能/目标):在语音播报过程中 **立即生效**,对应音效立即播放 @@ -1156,8 +1213,8 @@ NPC: 张道长 - 可传送目的地:玩家已到访并解锁的城镇传送点、门派山门、公共安全区 - 不可使用场景:战斗中、Boss房间、未结算副本、自由 PvP 追击状态、剧情强制场景 -- 使用流程:在背包选中传送符 → 双击使用 → 上/下滑选择目的地 → 单击确认目的地详情 → 双击开始施法 -- 施法时间:现实 5 秒,期间播放符箓燃烧音;受到攻击、移动或左滑取消会打断施法,传送符不消耗 +- 使用流程:在背包选中传送符 → 双击使用并进入传送选择流程 → 上/下滑选择目的地 → 单击确认目的地详情 → 双击开始施法 +- 施法时间:现实 3 秒,期间每秒播放一段递进提示音(符箓燃烧 → 空间嗡鸣 → 传送完成);受到攻击、移动或左滑取消会打断施法,传送符不消耗 - 成功后播放空间撕裂音,进入目标房间并按 5.3 的房间播报顺序播报 #### 材料 @@ -1199,10 +1256,18 @@ NPC: 张道长 ``` 右滑 → 切换分类:"全部" → "装备" → "丹药" → "材料" → "其他" 上/下滑 → 在当前分类内翻页 -单击 → 播报物品详情 +单击 → 播报物品详情,并进入物品详情层 双击 → 使用/装备 ``` +物品详情层: +``` +右滑 → 打开操作子菜单:"使用、丢弃、放入交易、查看详情" +左滑 → 返回背包列表层 +上/下滑 → 在操作子菜单内切换操作 +双击 → 执行当前操作 +``` + 物品满时获得新物品: ``` 语音:"背包已满。获得铁剑。是否丢弃一件物品腾出空间?双击打开背包。左滑放弃此物品。" @@ -1215,9 +1280,9 @@ NPC: 张道长 ### 11.1 玩家登录与账号系统 #### 注册流程 -1. 打开游戏页面(全黑屏幕) +1. 打开游戏页面,点击启动页"开始听仙"解锁音频后进入全黑模式 2. 语音:"欢迎来到《听仙》。如果你是新修士,请双击开始你的修仙之旅。如果你已有道号,请单击登录。" -3. 新用户 → 输入用户名/密码(唯一的文字输入环节)→ 进入角色创建 +3. 新用户 → 输入用户名/密码(账号安全所需,必须调起键盘)→ 进入角色创建 4. 老用户 → 输入用户名/密码 → 登录进入游戏世界 #### 登录态 @@ -1264,15 +1329,24 @@ NPC: 张道长 | 世界 | 全服 | 可选择开关 | #### 发送消息 -- 玩家输入文字消息(调起键盘的唯一场景之一) -- 系统将文字通过TTS转为语音播报给接收方 +- 入口一:菜单 → 社交 → 当前房间聊天/私聊/门派聊天 → 语音发言 +- 入口二:探索态焦点为玩家时,双击打开玩家互动菜单,选择"传音/私聊"后进入语音发言 +- 进入聊天态后,上/下滑选择语音发言、快捷消息、键盘输入;双击当前项开始 +- 默认方式:玩家选择"语音发言"后开始录音,客户端录制并上传音频,由服务端 ASR 转为文字;玩家单击可重听识别结果,双击确认发送 +- 发送后系统将识别文本通过 TTS 转为语音播报给接收方 - 接收方听到:音效提示 + "[频道标识][玩家名]说:[消息内容]" +- 键盘输入作为备用方式,用于嘈杂环境、ASR 失败或玩家主动选择精确输入 +- 若 ASR 置信度过低,系统播报"没有听清,请重说或使用快捷消息",不自动发送 + +> MVP 决策:ASR 推理放在服务端。客户端只负责录音、压缩和上传,避免在移动端加载 ASR 模型导致首包膨胀和性能不可控。目标是 3 秒以内完成"录音结束→识别文本返回",若实测超过目标,再评估端侧轻量 ASR 或云端 ASR。 #### 快捷消息 预设一组常用消息,无需打字: - "你好" / "谢谢" / "救命" / "组队吗" / "交易吗" / "告辞" - 菜单 → 社交 → 快捷消息 → 上下选择 → 双击发送 +> 输入策略:账号注册/登录的用户名和密码不可避免需要键盘;角色道号默认随机生成;聊天优先语音输入和快捷消息,键盘只作为兜底。 + ### 11.5 玩家间互动 | 互动 | 触发方式 | 说明 | @@ -1364,6 +1438,16 @@ NPC: 张道长 > **标识方式**:查看游历修士时播报"游历修士·[名字],练气三层",其中"游历修士"前缀明确其NPC身份。 +#### 能力边界与玩家预期 + +MVP 到内测阶段,游历修士按"功能性 NPC"设计,不做开放式智能问答: + +- 对话保持短句模板,主要承担问候、引路、简单交易、组队陪伴、世界氛围填充 +- 不回答复杂剧情设定、现实知识、系统外问题;遇到越界问题时回复"此事我也不清楚,道友可去问镇中长者" +- 不伪装真人玩家,不使用容易造成真人错觉的自由闲聊频率 +- 不承接关键主线剧情判断,避免玩家把 AI 的随机回复当作正式线索 +- 后续若引入更强 AI 对话,必须单独标记"智能游历修士",并在交互开始时说明其能力边界 + --- ## 十三、技术架构概要 @@ -1414,7 +1498,19 @@ NPC: 张道长 | 网络通信 | WebSocket | 双向实时通信 | | 状态管理 | 有限状态机 | 管理探索/战斗/菜单/对话等状态 | | 数据缓存 | IndexedDB | 缓存已下载的音频资源 | -| 页面 | 单页HTML | 全黑背景,无视觉元素 | +| 语音输入 | MediaRecorder + 服务端ASR | 客户端录音/压缩/上传,服务端识别为文字;失败时退回快捷消息/键盘输入 | +| 页面 | 单页HTML + 启动页 | 启动页用于解锁音频;进入游戏后全黑背景,无核心视觉元素 | + +#### 启动页与音频解锁 + +移动端 Chrome/Safari 禁止未经用户手势触发的自动音频播放,因此游戏不能直接以全黑自动播报开场。启动流程固定如下: + +1. 首次进入页面显示极简启动页,包含一个可访问按钮:"开始听仙" +2. 用户点击/触摸按钮后,客户端创建并 `resume()` Web Audio `AudioContext`,同时播放 0.1 秒静音或极短提示音以完成解锁 +3. 解锁成功后预加载 L0 核心音频,播放欢迎语,页面切换为全黑游戏模式 +4. 若解锁失败,保留启动页并提示用户再次点击;不进入无声黑屏 + +启动页允许视觉元素存在,但只服务于浏览器权限解锁和可访问性,不承载游戏内信息。进入游戏后,核心交互仍以音频和手势为准。 ### 13.3 服务端技术栈 @@ -1425,6 +1521,7 @@ NPC: 张道长 | 缓存 | Redis | 在线状态、会话、排行榜 | | 音频资源 | 静态文件服务 / CDN | 预生成音频文件托管 | | TTS服务 | VoxCPM2 REST API | 动态语音生成 | +| ASR服务 | SenseVoice Small / Whisper Tiny | MVP阶段在服务端推理,玩家语音聊天转文字,低置信度时要求重录或改用快捷消息 | | 任务队列 | BullMQ(Redis) | TTS生成任务排队、重试、失败追踪 | ### 13.4 通信协议设计 @@ -1534,11 +1631,19 @@ NPC: 张道长 | 级别 | 内容 | 加载时机 | 缓存策略 | |------|------|---------|---------| -| L0-核心 | 操作音效、通用语音片段 | 游戏启动时预加载 | 永久缓存(IndexedDB) | +| L0-核心 | 操作音效、通用语音片段、核心系统提示 | 启动页点击并解锁音频后预加载 | 永久缓存(IndexedDB) | | L1-区域 | 当前区域BGM、氛围音 | 进入区域时加载 | LRU缓存(50MB上限) | | L2-内容 | NPC对话、房间描述 | 进入房间/触发对话时加载 | LRU缓存 | | L3-动态 | 动态生成的玩家名等 | 首次遇到时生成并缓存 | 永久缓存 | +#### 首包体积预算 + +- 首次点击后必须下载的 L0 音频目标控制在 5MB 以内,硬上限 10MB +- BGM、房间描述、NPC 对话、怪物叫声默认不进首包,按区域或触发点流式加载 +- L0 只保留"能开始玩"所需内容:手势反馈音、错误提示、核心系统短句、最小战斗提示 +- 若网络较慢,允许先进入无 BGM 的轻量模式,待 L1 资源下载完成后再淡入氛围/BGM +- 构建阶段输出音频清单和体积报告,超过预算时优先压缩或延后加载非关键资源 + #### 音频加载失败降级 - 单个音频资源加载失败时,客户端重试 2 次;仍失败则查找本地缓存 @@ -1550,7 +1655,7 @@ NPC: 张道长 | 用途 | 格式 | 码率 | 原因 | |------|------|------|------| -| BGM/氛围 | OGG Vorbis | 128kbps | 循环播放,体积优先 | +| BGM/氛围 | OGG Vorbis | 128kbps | 支持更稳定的无缝循环,适合长时间环境声/BGM | | 语音片段 | MP3 | 64kbps | 兼容性最好,单句语音对码率要求低 | | 短音效 | WAV/PCM | 无压缩 | 延迟敏感,直接用AudioBuffer | | UI音效 | Web Audio合成 | — | 无需文件,实时合成 | @@ -1673,22 +1778,25 @@ Redis: #### MVP音频资产清单 -按"必需首包 / 首次进入区域 / 可按需生成"分类: +按"必需首包 / 首次进入区域 / 可按需生成"分类。这里的 MVP 对标 v0.3 内容原型:必须完成"移动→接任务→战斗→交任务"闭环,因此比 v0.1 纯移动原型需要更多语音资源。 | 分类 | 类别 | 数量 | 说明 | |------|------|------|------| | **首包必需** | UI音效(Web Audio合成) | 13 | 6手势反馈+菜单音+确认音等,无需文件 | | **首包必需** | 系统提示语音 | 20 | 教程引导、通用播报("你的回合""战斗胜利"等) | -| **首包必需** | 通用词汇片段 | 15 | 数字0-9、"点""伤害""恢复"等高频拼接词 | +| **首包必需** | 通用词汇片段 | 15 | "点""伤害""恢复"等高频拼接词 | +| **首包必需** | 数字语音 | 10 | MVP阶段只预生成0-9,复杂数字由拼接组合 | | **首包必需** | 战斗音效 | 6 | 剑击、拳击、防御、闪避、命中、战斗开始 | -| **首包必需** | BGM | 2 | 城镇BGM、战斗BGM | +| **首次进入** | BGM | 2 | 城镇BGM、战斗BGM,按场景加载,不阻塞启动 | | **首次进入** | 房间描述语音 | 5 | 每个房间1段描述 | | **首次进入** | 环境氛围 | 2 | 市集喧嚣、山林清风 | | **首次进入** | NPC对话语音 | 15 | 教程NPC的对话树 | | **首次进入** | 怪物名称+音效 | 4 | 2种怪物×(名称+叫声) | | **首次进入** | 技能名称语音 | 3 | 3个技能名 | | **首次进入** | 物品名称语音 | 5 | 5种物品名 | -| | **合计预生成文件** | **~90** | 不含Web Audio合成的13个UI音效 | +| | **合计预生成文件** | **~87** | 不含Web Audio合成的13个UI音效,按 v0.3 内容原型口径 | + +首包下载目标:L0 核心语音与战斗音效约 50-60 个短文件,控制在 5MB 以内,弱网硬上限 10MB。其余资源进入房间、遇到 NPC、进入战斗或切换场景时按需加载。版本规划中的 v0.3 仍保留约 90 个文件的预算上限,用于追加失败提示、ASR确认语、随机道号播报等冗余资源。 ### 14.4 版本迭代路线图(渐进验证) @@ -1726,7 +1834,7 @@ Redis: | UI音效 | 13(合成) | 13(合成) | 13(合成) | 13(合成) | | **合计预生成文件** | **~23** | **~90** | **~292** | **~2575** | -> 各版本数字为累计值。UI音效通过 Web Audio API 实时合成,不计入预生成文件数。 +> 各版本数字为累计值。UI音效通过 Web Audio API 实时合成,不计入预生成文件数。14.3 的 MVP 清单与 v0.3 内容原型采用同一口径:数字语音单独列出,合计约 87 个预生成文件,按 ~90 做预算上限。 ## 附录B:完整手势映射速查表 @@ -1736,8 +1844,9 @@ Redis: | 战斗态 | 上一技能 | 下一技能 | 上一目标 | 下一目标 | 查看状态 | 出招 | | 菜单态 | 上一项 | 下一项 | 返回 | 展开子菜单 | 查看详情 | 确认 | | 对话态 | 上一选项 | 下一选项 | 结束对话 | 重听 | 当前选项 | 选择 | -| 背包态 | 上一物品 | 下一物品 | 返回 | 操作菜单 | 物品详情 | 使用/装备 | +| 背包态 | 上一物品 | 下一物品 | 返回 | 切分类/详情层操作菜单 | 物品详情 | 使用/装备 | | 突破流程 | 上一辅助选项 | 下一辅助选项 | 取消/返回 | 重听提示 | 查看突破状态 | 开始/化解/确认 | +| 传送选择流程 | 上一目的地 | 下一目的地 | 取消/返回 | 重听限制 | 目的地详情 | 开始施法 | | 商店态 | 上一商品 | 下一商品 | 返回 | 切分类 | 商品详情 | 购买 | | 交易态 | 上一物品/金额 | 下一物品/金额 | 取消/返回 | 切换交易区域 | 查看摘要 | 放入/锁定/确认 | diff --git a/docs/策划案任务拆分.md b/docs/策划案任务拆分.md index 53f8638..5a6989f 100644 --- a/docs/策划案任务拆分.md +++ b/docs/策划案任务拆分.md @@ -2,7 +2,7 @@ > 创建日期:2026-05-21 > 修订日期:2026-05-21 -> 状态:修订完成(技术架构前置至第一层,AI游历修士明确标识为NPC) +> 状态:修订完成(技术架构前置至第一层,补充启动页音频解锁与系统依赖) --- @@ -15,12 +15,12 @@ | 参考 | 传统 MUD 游戏 | | 平台 | 纯 HTML5(浏览器运行) | | 操作 | 上滑、下滑、左滑、右滑、单击、双击(共6种手势) | -| 输出 | 语音播报 + 音效 + 环境氛围音乐(无视觉元素) | +| 输出 | 语音播报 + 音效 + 环境氛围音乐(启动页有可访问按钮,游戏内无核心视觉元素) | | 战斗 | 回合制 | | 联机 | 大型MUD在线世界,支持PvP/PvE/副本,低人数时游历修士NPC填充 | | 商业模式 | 纯免费 | | 玩法 | 主线剧情 + 自由探索/修炼 | -| 语音策略 | 预生成 + 按需生成 + 播报时拼装 | +| 语音策略 | 预生成 + 按需生成 + 播报时拼装;玩家聊天支持语音输入 ASR | --- @@ -55,6 +55,7 @@ #### 任务 4:技术架构概要(从第四层前置) - 客户端架构(HTML5 + Web Audio API + WebSocket) - 移动浏览器限制调研(后台暂停、音频自动播放策略、内存限制) +- 启动页设计与音频解锁流程(用户手势激活 AudioContext,避免无声黑屏) - 服务端架构(游戏逻辑服务 + 音频资源服务) - 通信协议设计 - 数据存储方案 @@ -122,7 +123,7 @@ - 玩家登录与账号系统 - 好友系统 - 门派/公会系统 -- 聊天系统(文字转语音播报) +- 聊天系统(语音输入 ASR → 文本确认 → TTS播报,快捷消息/键盘输入兜底) - 玩家间互动(切磋、交易、组队) #### 任务 13:AI游历修士系统(原"机器人") @@ -146,17 +147,17 @@ 第一层(并行) 第二层(并行) 第三层(并行) 第四层(并行) ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ 1.游戏概述 │──┬────────→│ 5.角色修炼 │───┬──→│ 8.战斗系统 │───┬──→│12.社交系统 │ -└──────────┘ │ └──────────┘ │ └──────────┘ │ └──────────┘ +└──────────┘ │ └──────────┘ │ └──────────┘ │ └────▲─────┘ ┌──────────┐ │ ┌──────────┐ │ ┌──────────┐ │ ┌──────────┐ │ 2.世界观 │──┼────────→│ 6.地图导航 │───┼──→│ 9.副本系统 │───┼──→│13.AI游历修士│ └──────────┘ │ └──────────┘ │ └──────────┘ │ └──────────┘ ┌──────────┐ │ ┌──────────┐ │ ┌──────────┐ │ ┌──────────┐ │ 3.交互设计 │──┼────────→│ 7.音频系统 │───┘──→│10.任务剧情 │───┘──→│14.生产管线 │ -└──────────┘ │ └──────────┘ └──────────┘ └──────────┘ -┌──────────┐ │ ┌──────────┐ +└──────────┘ │ └──────────┘ └──────────┘ └────▲─────┘ +┌──────────┐ │ 5/6 ───────────────→┌──────────┐─────────────┘ │ 4.技术架构 │──┘ │11.经济物品│ -│ (前置!) │ └──────────┘ -└──────────┘ +│ (前置!) │ └────┬─────┘ +└──────────┘ └────────────→ 12.社交交易 ``` > **变更说明**:技术架构从第四层提升至第一层。手势识别、音频引擎、WebSocket协议、移动浏览器限制等技术约束会直接决定玩法设计能否落地,必须前置验证。