- 新增 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 文档
115 lines
9.2 KiB
Markdown
115 lines
9.2 KiB
Markdown
# SoundGame 后续路线图(策划,最终轮)
|
||
|
||
范围:R5(RPG 收尾)之后的事。分四块:RPG 内容扩展、storyline 打磨、真机听测、商业化前置。
|
||
设计基准文档索引见 [README.md](README.md);审查结论见 round1/round2/round3-4-review。
|
||
|
||
---
|
||
|
||
## 1. RPG《剑与声》第二/三章扩展计划
|
||
|
||
第一章模式已定型(场景图 JSON + 战斗状态机 + 台词表三件套),二三章是**内容灌入**而非新开发。
|
||
|
||
### 1.1 第二章《腐沼泽》(7 节点)
|
||
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| 场景 | 沼口村(商店:青钢剑 300/铁鳞甲 250)→ 腐叶径 → 浅滩(岔路:鳄巢宝箱)→ 瘴气林 → 蛊师祭坛(NPC 支线)→ 祭主殿门 → Boss 腐沼祭主 |
|
||
| 新机制 | 毒状态(中毒后每回合 -3 HP,金疮药可解;中毒播报走整句分档);蛊师敌方先攻(B_START → ENEMY_TELEGRAPH,状态机已支持) |
|
||
| 敌人 | 沼泽鳄(HP30 ATK11 DEF2)、蛊师(HP22 ATK12 DEF1,先攻)+ 一章怪复用降档 |
|
||
| Boss | 腐沼祭主 HP70 ATK14 DEF3;半血二阶段召唤 2 毒蛛(连战队列插入,机制已有) |
|
||
| 解锁 | 一章 Boss 胜后 `chapters.2 = open`;章首旁白承接 `evt_ch1_end` 字条 |
|
||
|
||
### 1.2 第三章《无瞳峰》(7 节点)
|
||
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| 场景 | 山道驿站(商店:听风剑 600,格挡窗口 1.0→1.3s)→ 风啸崖 → 断桥(岔路)→ 剑冢(机关战斗)→ 影廊(影卫首战,无声前摇教学)→ 峰顶 → Boss 白无瞳 |
|
||
| 新机制 | 无声前摇(震动协议见 05-rpg-addendum §2,影卫铺垫 → 白无瞳三阶段完全无声);iOS 兜底=防御指令 |
|
||
| 敌人 | 剑傀(HP38 ATK14 DEF3)、影卫(HP30 ATK16 DEF2,无声) |
|
||
| Boss | 白无瞳 HP110 ATK18 DEF5,三阶段(≤50% / ≤25% 转换,三阶段进场播 `npc_boss3_warn`) |
|
||
| 完结 | 终章结算用专属完结句(不复用"前往下一章",round5-notes §3 教训) |
|
||
|
||
### 1.3 排期与资产
|
||
|
||
- 台词表:ch2/ch3 各一份(沿用 05-rpg-ch1-voice-ids.md 格式,每章约 60-80 句;最小集见 05-rpg-addendum §5)。策划补发 → 音频总监录制(各 1 轮)。
|
||
- BGM:复用现有 4 首 + 每章新增场景 amb(`amb_swamp*`、`amb_peak*`,05-rpg-chapter1 §7.2 已含)。
|
||
- 建议节奏:内容扩展 A 轮(ch2 台词+灌入)→ B 轮(ch3 台词+灌入+终章完结句)→ 与真机听测并行。
|
||
|
||
## 2. storyline《声命线》打磨项(一直没重构,逐项跟进)
|
||
|
||
| # | 事项 | 现状 | 动作 |
|
||
|---|---|---|---|
|
||
| 1 | 菜单约定统一 | 现版 down=菜单(左滑重开/右滑单击返回/上滑帮助),是裁决②之前的私有约定 | 统一到 00 §5.2:下滑呼出 → 单击循环 → 双击确认 → 上滑帮助;菜单句 `voice/menu` 需按新口径重录(×2 性别) |
|
||
| 2 | knowTrap 死标记修复 | `game.js:229` 只写不读:n09 右滑获得"北区陷阱情报"后无任何分支消费它 | 先读 `docs/games/storyline.md` 剧情树定接入点:在北区相关节点读取 knowTrap,解锁"绕开陷阱"分支或改变死亡结局判定;预计需补录 1-2 句分支台词(角色音:林晚 Serena / 旁白双性别)。若剧情树无合适节点,降级方案=删除该标记与台词里的伏笔句 |
|
||
| 3 | 角色音色在双性别目录的处理 | R1 裁定:旁白双性别(male=Uncle_Fu/female=Vivian),角色台词单音色平铺靠引擎回退(round1-report §3),资产侧未复制 | 终案确认:**维持平铺回退**(引擎已支持,零成本);把"平铺回退是正式机制"写进 web-engine-api 的目录约定(开发顺手改)。试听确认点:female 旁白(Vivian)与小满/林晨/广播(同 Vivian 不同 instruct)的区分度 |
|
||
| 4 | 提示音替换排查 | `sfx/ui_confirm`、`sfx/ui_menu` 仍在选择确认/菜单处使用 | 按反馈⑦替换:选择确认删 ui_confirm(引擎内置震动已覆盖),菜单打开删 ui_menu;剧情氛围 sfx(water/whistle/wind 等内容音)保留 |
|
||
| 5 | 进度 summary | storyline 无存档(单局 5-7 分钟,一次性剧情) | 轻量方案:记录"已达成结局 X/4",summary="已见 2/4 结局";结局解锁存 localStorage+服务器,大厅卡片有内容可显示 |
|
||
| 6 | 双性别 QC | 36 id ×2 已生成 | 抽听 female 版旁白与角色音的衔接(旁白切角色时音色跳跃是否出戏) |
|
||
|
||
## 3. 各游戏存量打磨小项(来自各轮审查遗留)
|
||
|
||
- rhythm:结算右滑末位修正 + 补录 `no_more_song`;震动 200ms 去抖(round3-4-review §3 裁定①④)。
|
||
- escape:PLAY 中双击兜底链末尾加"再双击一次回大厅"二级入口(补录 `menu_hint` ×2 性别,round2-review §5.1)。
|
||
- simon:`voice/wrong` 冗余资产清理或启用(round2-review §5.2)。
|
||
- 大厅:设置变更试听句(00 §1.2,一直未做)。
|
||
- 全合集:平铺旧 voice 文件清理(storyline/rhythm/space 的残留,音频侧执行)。
|
||
|
||
## 4. 真机听测 checklist(用户拿手机逐项打钩)
|
||
|
||
通用前置:安卓 Chrome + iOS Safari 各过一遍;戴有线耳机测一轮、蓝牙耳机测一轮(延迟差异);iOS 项注意"无震动"是预期行为。
|
||
|
||
### 声命线 storyline
|
||
- [ ] 旁白切角色音时不出戏(重点:female 旁白 vs 小满/广播的 Vivian 家族)
|
||
- [ ] 8 个抉择点左/右滑方向与选项播报一致
|
||
- [ ] 4 结局至少打通 2 条,结局后单击重开正常
|
||
- [ ] (打磨后)菜单单击循环/双击确认,无误触发重开
|
||
|
||
### 暗室 escape
|
||
- [ ] 引导 G0-G7 全流程不卡(含故意做错 3 次触发直白重述)
|
||
- [ ] 9 个房间听环境音能区分储物间/铁柜/电箱/大门(闭眼走一遍)
|
||
- [ ] 卡关提示计时手感:60s/120s/180s 出现时机不烦人(真机挂一次 3 分钟)
|
||
- [ ] 单击重听环境音:amb 与描述语音的 800ms 间隔自然
|
||
- [ ] 用时 4 段播报与实际耗时匹配
|
||
|
||
### 音序回响 simon
|
||
- [ ] 无 BGM 的静默不尴尬(开场 0.5s + 轮次间隙)
|
||
- [ ] 播放序列的 beat 轻震与音色对齐(安卓机能感到节拍锚点)
|
||
- [ ] 双击主动重听:期望输入是 doubletap 时按答题处理(裁定①场景实测)
|
||
- [ ] 第 10 轮后的速度(420ms 下限)可跟
|
||
- [ ] 成绩分档句与实际轮数匹配
|
||
|
||
### 节拍行者 rhythm
|
||
- [ ] Perfect ±120ms 窗口:有线耳机能稳定 Perfect,蓝牙耳机 Good 为主(不挫败)
|
||
- [ ] tap 补偿:底鼓音(1/3 拍)判定不冤
|
||
- [ ] 下滑菜单折中:演奏中误开菜单 / 想开开不了 各试 5 次
|
||
- [ ] 菜单暂停后 BGM 断点续播节拍不漂
|
||
- [ ] 三首 BGM 与乐器音调性协和、响度平衡(乐器音不被 BGM 淹没)
|
||
|
||
### 盲航 space
|
||
- [ ] 同向闪避直觉性:不测老玩家,找一个没玩过的人 30 秒内能否理解
|
||
- [ ] 演练 D1-D4 每步"语音先、whoosh 后"不叠放
|
||
- [ ] 保护期 60s 内被撞不掉血且归因句听清
|
||
- [ ] 满级段(存活 90s+)密度:过密则把 spawn 下限 1.2→1.35(round3-4 裁定③旋钮)
|
||
- [ ] 警报两档渐强 + danger 震动的时间感(撞击前 1s/0.5s)
|
||
|
||
### 剑与声 rpg(R5 完成后)
|
||
- [ ] 格挡窗口:8 种敌人前摇音都能听出并双击成功(重点:头目重甲 vs 野狼低吼的区分)
|
||
- [ ] 无声敌人(若 ch3 已做):danger+heartbeat 震动节奏可格挡;iOS 上确认防御指令兜底
|
||
- [ ] 战斗 BGM 与场景 amb 切换不突兀;bgm=0 设置下 amb 照播
|
||
- [ ] 商店购买/缺钱/已购播报语境正确
|
||
- [ ] 存档继续:杀进程重进,summary 与落点正确
|
||
|
||
## 5. 商业化前要做的事
|
||
|
||
1. **Stable Audio 3 许可确认**:核对当前账号/模型的商用授权条款(训练数据与生成物的商用权利、署名要求);所有 SA3 生成 sfx 的资产清单(id → 生成日期 → prompt)落盘存档(`docs/audio/asset-manifest.md` 扩展)。
|
||
2. **Mureka 曲目版权落盘**:确认 API 生成音乐的商用授权范围与归属条款;把 `tools/mureka_log.md` 整理为正式曲目登记表(曲目 → 生成时间 → 授权凭证/订单号);离线保存原始生成文件与凭证截图。
|
||
3. **Qwen3-TTS 许可**:核对模型协议(Apache 2.0 系/通义许可)对生成语音商用的要求;在 About/致谢页列模型名。
|
||
4. **字体许可**:封面生成用 NotoSansSC(OFL),保留 OFL 许可证副本,允许商用但需随附声明。
|
||
5. **隐私政策**:用户系统当前是局域网玩具级(PIN 明文、token 不过期——web/server/README 已自声明)。公网化前必须:PIN 加盐哈希、token 过期机制、HTTPS、最小化收集声明、账号删除入口;写隐私政策页(收集:用户名+游戏进度;不收集:设备信息/位置)。
|
||
6. **付费墙设计预留**(如需):进度 API 加 `entitlements` 字段的位置先留好;不要在现有 data 自由格式里埋付费标记。
|
||
7. **合规扫尾**:无年龄分级素材问题(武侠战斗无血腥音效——atk_hit prompt 已注明 not gory,保持);商店/内购若上 iOS 需走 IAP 不能用网页支付(届时再议)。
|
||
|
||
## 6. 建议顺序
|
||
|
||
1. R5 收尾(RPG 第一章上线)→ 2. §3 存量打磨小项(半天级)→ 3. 真机听测 §4(用户执行,反馈回来后定参数旋钮)→ 4. storyline §2(与听测并行)→ 5. RPG ch2/ch3 §1 → 6. 商业化 §5(决定公网化时再启动)。
|