save code
This commit is contained in:
+139
-30
@@ -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:
|
||||
| 战斗态 | 上一技能 | 下一技能 | 上一目标 | 下一目标 | 查看状态 | 出招 |
|
||||
| 菜单态 | 上一项 | 下一项 | 返回 | 展开子菜单 | 查看详情 | 确认 |
|
||||
| 对话态 | 上一选项 | 下一选项 | 结束对话 | 重听 | 当前选项 | 选择 |
|
||||
| 背包态 | 上一物品 | 下一物品 | 返回 | 操作菜单 | 物品详情 | 使用/装备 |
|
||||
| 背包态 | 上一物品 | 下一物品 | 返回 | 切分类/详情层操作菜单 | 物品详情 | 使用/装备 |
|
||||
| 突破流程 | 上一辅助选项 | 下一辅助选项 | 取消/返回 | 重听提示 | 查看突破状态 | 开始/化解/确认 |
|
||||
| 传送选择流程 | 上一目的地 | 下一目的地 | 取消/返回 | 重听限制 | 目的地详情 | 开始施法 |
|
||||
| 商店态 | 上一商品 | 下一商品 | 返回 | 切分类 | 商品详情 | 购买 |
|
||||
| 交易态 | 上一物品/金额 | 下一物品/金额 | 取消/返回 | 切换交易区域 | 查看摘要 | 放入/锁定/确认 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user