Files
AIGame/Doc/Design/Sound/UiSfx/ProductionBrief.md
T
udxandClaude Opus 5.5 89e0fa246f Add formal enemies, remaining formal partners and synthesized UI SFX
- UI SFX v3: procedurally synthesized one-shots (Tools/synth_ui_sfx.py) wired to
  buttons, rewards, errors and red dots via UiSfx, gated by the SFX setting.
- Five formal enemies (Hornlet, Dashlet, Shellhorn, HornCaptain, GreatHorn):
  Hunyuan 50k -> 2000-tri XPbr, DGXA TokenRig, Idle/Walk/Attack, nested per type
  in PrototypeArena; PrototypeBattle.Enemy gains presentation-only Moving/Strikes.
- Formal partners for all ten pets in the arena and portraits, including new
  VineSprite, ThunderLeopard and TideWhale.
- Pipeline fixes: reject local TokenRig fallback, drop loose mesh islands,
  configurable Unity run_script timeout, companion static stage.
- Also includes concurrent work from another tool in this working tree
  (FlameLion, enemy combat FX, challenge mode, home explorer, server updates).
- Resources registered in Doc/ResDesc_*.md; verified on isolated :18081.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:23:55 +08:00

80 lines
5.2 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.
# UI 音效批次 v1
2026-10-20,按 `D:/UD/AI/XModel/TangoFlux_AI调用指南.md` 调用本机 `TangoFluxService`(`http://127.0.0.1:8012`)生成。风格贴近《微风小镇》菜单氛围:轻柔木感/糖果感 UI,短促、无音乐、无人声。
## 清单(10 条)
| 地址 | 用途 | 时长 | 种子 |
| --- | --- | --- | --- |
| `Ui_Click` | 通用按钮点击 | 1.5s | 41001 |
| `Ui_Confirm` | 确认 / 正向操作 | 2.0s | 41002 |
| `Ui_Back` | 返回 / 取消 | 1.5s | 41003 |
| `Ui_Open` | 打开面板 | 2.0s | 41004 |
| `Ui_Close` | 关闭面板 | 1.5s | 41005 |
| `Ui_Tab` | 页签切换 | 1.5s | 41006 |
| `Ui_Claim` | 领奖 / 领取附件 | 2.5s | 41007 |
| `Ui_Deny` | 拒绝 / 余额不足等 | 1.5s | 41008 |
| `Ui_Toggle` | 设置开关 | 1.5s | 41009 |
| `Ui_Notify` | 红点 / 通知提示 | 2.0s | 41010 |
## 生成参数
- 模型:`declare-lab/TangoFlux` + 本地 `flan-t5-large`
- `steps=50`,`guidance_scale=4.5`
- 输出:44.1 kHz 立体声 WAV
- 清单:`manifest.json`;任务回执:`Tools/output/ui_sfx_v1/` 与 `generation.json`
- 入口脚本:`python Tools/generate_ui_sfx.py`
## 工程路径
- Bundle:`AIClient/Assets/Bundles/Sound/SFX/UI/{Id}.wav`
- 收集:Art / Sound,`AddressByFileName`,`PackSeparately`
- Unity 导入回执:`unity_validation.json`(10 条、44100 Hz 立体声、DecompressOnLoad/PCM;Art/Sound 已收集)。
- v1 只入库与登记,未接入运行时播放;2026-10-21 已由下文 v2 替换同名 WAV 并接入运行时。
- 许可:TangoFlux 权重为非商业研究用途,商用前须核对上游许可。
## v2 一次性短音效与运行时接入(2026-10-21)
v1 的 10 条里有 9 条从头响到尾,持续 1.5~2.5 秒;`Ui_Open` 前 1.36 秒为静音,不适合作为按钮音。v2 改用"单发后静音"的提示词,每条以服务允许的最短时长 1 秒、4 个种子(52001~52004)生成候选。候选经 `Tools/generate_ui_sfx_v2.py` 后处理:去掉开头静音、截到目标长度、加 2ms 淡入和尾部 40% 平方淡出、归一化峰值。自动选择取目标窗口内能量占比最高、起音最快的候选,原始峰值低于 0.1 的视为噪声并淘汰(这条规则排除了 Notify 原先选中的 52002)。清单为 `manifest_v2.json`,选择结果与全部候选指标见 `generation_v2.json`。
| 地址 | 目标时长 | 峰值 | 选用种子 |
| --- | --- | --- | --- |
| `Ui_Click` | 0.15s | -6 dBFS | 52002 |
| `Ui_Confirm` | 0.45s | -4 dBFS | 52001 |
| `Ui_Back` | 0.22s | -6 dBFS | 52002 |
| `Ui_Open` | 0.35s | -6 dBFS | 52002 |
| `Ui_Close` | 0.28s | -7 dBFS | 52002 |
| `Ui_Tab` | 0.12s | -7 dBFS | 52001 |
| `Ui_Claim` | 0.8s | -3 dBFS | 52001 |
| `Ui_Deny` | 0.3s | -6 dBFS | 52002 |
| `Ui_Toggle` | 0.14s | -7 dBFS | 52001 |
| `Ui_Notify` | 0.5s | -6 dBFS | 52004 |
候选的原始音频和处理后版本在 `Tools/output/ui_sfx_v2/raw|trimmed/`。如需改用其他候选,执行 `python Tools/generate_ui_sfx_v2.py --process --pick Ui_Click=52003`,再用 Pipeline 运行 `BuildUiSfx.Build`。自动选择只依据波形指标,**听感仍需人工试听确认**。v1 原始文件保留在 `Tools/output/ui_sfx_v1/`。
运行时:`UiSfx.prefab`(`Assets/Bundles/Sound/Prefab/`,Art/Sound,地址 `UiSfx`)带一个 2D AudioSource(volume 0.8),并按 `UiSound` 枚举顺序引用 10 个 Clip,由 `GameplayBootstrap` 与主界面音乐一同加载。播放受设置里的"音效"开关控制,与音乐开关互不影响;同一音效 60ms 内的重复请求会被忽略。
| 地址 | 触发 |
| --- | --- |
| `Ui_Click` | 普通按钮 |
| `Ui_Confirm` | 训练/进化/购买/营地操作成功、重复胜利 |
| `Ui_Back` | 取消预览、撤下伙伴、放弃战斗 |
| `Ui_Open` | 首页入口打开面板 |
| `Ui_Close` | 返回/关闭回到首页 |
| `Ui_Tab` | 页签、邮件翻页 |
| `Ui_Claim` | 领奖、捕捉、开宝箱、首通胜利 |
| `Ui_Deny` | 服务端拒绝或连接失败 |
| `Ui_Toggle` | 设置开关、画质、布阵部署/撤下/推荐 |
| `Ui_Notify` | 首页新出现红点 |
验证:`BuildUiSfx.Verify` 与 `VerifyUiSfx.Play` 在隔离的 18081 账号上实际点击,结果为 hud.settings=Open、quality=Toggle、sfxOff=Toggle、关闭音效后关闭页面与打开设置均无声、settings.close=Close、hud.rewards=Open、每日宝箱=Claim、chest.back=Close;真实账号与音效偏好已还原,本轮无新增 Console 错误或警告。未构建或发布。
## v3:程序化合成(2026-10-21)
v2 试听反馈为“不好听”,与清脆轻松的游戏风格不符。v3 不再使用生成模型,改由 `Tools/synth_ui_sfx.py` 合成:
- 音色:木琴(基频加 3.93×、9.2× 快衰泛音)、钟琴(1 / 2.76 / 5.40 / 8.93× 非谐泛音)、气泡 pop(快速上滑的正弦),以及 4ms 高通噪声作起音。
- 映射:Click 气泡 pop;Tab 木琴 A6 轻敲;Toggle 两连 pop;Confirm 木琴 E6→B6 上行;Back 木琴 G6→D6 下行;Open 上滑加 E7 叮;Close 下滑加 G5 闷敲;Claim 钟琴 C6-E6-G6-C7 琶音加高音闪烁;Deny 两声低音柔和 boop;Notify 钟琴 G6→D7 叮叮。
- 调整:改 `RECIPES` 里的音高、衰减和音量后运行 `python Tools/synth_ui_sfx.py --preview`,再在 Unity 里执行 `BuildUiSfx.Build`。