Files
AIGame/Doc/Design/Combat/PartnerSkills/Production.md
T

68 lines
6.0 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.
# 伙伴技能特效与音效制作记录
2026-10-21:十位伙伴的技能表现已接入正式 `PrototypeArena`。本批补齐四条 TangoFlux 音效,九条计划音效均有真实产物及生成回执。
## 已制作资源
特效目录:`AIClient/Assets/Bundles/Combat/Partners/`。各行文件名均以 `Vfx_` 开头、`.prefab` 结尾。
| 伙伴 | 特效文件名 | 触发与形态 |
| --- | --- | --- |
| 石球 | RockBallGuard | shield:琥珀护环与石甲颗粒,跟随目标直到护盾耗尽/到期 |
| 火喵 | FireCatFlare | hit:火花与橙色冲击环;复用火焰蓄力、发射与弹道 |
| 芽芽 | BudBudBloom | heal:绿环、粉色花瓣与治疗十字 |
| 闪闪雀 | SparkBirdBolt | hit:连接施法挂点与命中目标的蓝色折线雷电 |
| 泡泡龟 | BubbleTurtleBubbles | slow:围住目标的蓝色泡泡 |
| 岩甲犀 | RockRhinoQuake | slow:贴地震波与飞散石块;石击沿用岩石命中 |
| 烈焰狮 | FlameLionBreath | ability release:面向目标的锥形喷焰;hit:火焰命中 |
| 藤灵 | VineSpriteVines | heal:上升藤蔓、叶片与绿环 |
| 雷纹豹 | ThunderLeopardClaw | hit:紫色雷电连接与三道爪痕 |
| 潮汐鲸 | TideWhaleTide | shield:半球水罩与涟漪,状态结束清理 |
Pipeline 同时制作六个共用低多边形网格:`SkillStone`、`SkillLeaf`、`SkillHealCross`、`SkillBubble`、`SkillWaterDome`、`SkillVineHelix`(`.asset`)。`PartnerSkillGlow.mat` 使用现有 `AIGame/EnemyCombatParticle` Shader,白纹理及顶点色;不修改敌人共用材质。所有 Prefab、材质、网格均在编辑器内持久化。
新增音效位于 `AIClient/Assets/Bundles/Sound/SFX/BattleSkills/`:
| 文件 | 用途 | 成品长度 | 实际 seed |
| --- | --- | --- | --- |
| Sfx_Heal.wav | 治疗 | 0.55s | 52005 |
| Sfx_Slow.wav | 减速 | 0.50s | 52007 |
| Sfx_Lightning.wav | 雷电命中 | 0.38s | 52008 |
| Sfx_EnemyHit.wav | 软受击 | 0.26s | 52009 |
按 `D:/UD/AI/XModel/TangoFlux_AI调用指南.md` 调用本地 `127.0.0.1:8012`。每条源音频2秒、50步、guidance 4.5,最多2条并发;65Hz高通、起音裁切、5ms淡入/50ms淡出、峰值约 -1.94dBFS。成品 PCM16/44.1kHz/双声道,Unity 导入为 PCM、DecompressOnLoad、保留采样率。源文件与请求缓存:`Tools/output/partner_skill_sfx/`;回执:`Doc/Design/Sound/BattleSkills/Partners/generation.json`;九条连听文件:同目录 `preview_all_nine.wav`。前五条保留 Slice 原始回执和真实 seed。本批未声称完成主观听审;发布授权审查沿用原 manifest 的 pending 状态。
## 标准制作与接入步骤
1. 在 `Config/Combat/partner_presentations_v1.json` 配置角色、效果索引、声音索引、地面效果、持续时间与池容量。数据效果仍由 `skill_runtime_v1.json` 的服务器逻辑决定。
2. 用 `BuildPartnerSkillFx.Build` 经 Unity Pipeline 制作/更新持久化美术资产,再用 `BuildBattleSkills.Build` 构建正式表现池并嵌入已有战场。
3. 声音按 TangoFlux 指南生成,保留 request/job/source/output 哈希;补登记 manifest,设置 Unity 导入参数。维护共用音效优先于按角色重复生成。
4. `BattleSkillPresentation` 仅消费已结算的 cast_start、release、projectile、hit、shield、heal、slow 等事件;原 Attack 仍按既有15种角色的 attackImpact 对齐。19个既有 SkillMuzzle 随角色朝向与T2缩放;表现组件不计算伤害/治疗/减速。
5. 验证索引与文件、音频格式及回执、真实轨迹、播放清理和画面,追加资源登记后完成。
正式池当前15类效果、76个根粒子实例、8个音源、9条音效、10个伙伴配置。雷电折线复用池中的 LineRenderer;运行时不创建材质、粒子或声音对象。雷电/群体治疗/减速同一次 cast 同种声音只播一次;普通软受击避免旧敌人声音与新伙伴声音重复叠播,硬壳/护盾反馈仍保留。
暂停与倍速作用于表现时钟及粒子;声音保留原始音高。过期的一次性事件跳过,未到期护盾和弹道可恢复。取消/死亡/目标消失/状态到期/battle_end/禁用均清理对应租约,代数标识避免旧租约停止刚复用的粒子。战斗结束保留计数供验收、清空播放对象。
## 验收证据
- `audio_config_validation.json`:十个配置与 Prefab、九条音效的源/请求/成品哈希、成功任务、起音/淡出/响度/零削波通过。
- `behavior.json`:十种专属效果与九种声音均触发;连接端点、多目标音效去重、超池复用、过期跳过、暂停/2倍速/静音、死亡/到期/取消/结束/禁用清理通过。23份既有服务器轨迹覆盖十个伙伴,全部回放至末尾无残留。
- `battle_visual.json`:真实 `PrototypeFlow` 消费服务器第20关T2轨迹并截图,验证正式战场、既有挂点和雷电命中。测试夹具不写真实账号。
- `Assets/Screenshots/partner_skills_overview.png`:十角色独立特效总览;`partner_skills_battle.png`:正式场景命中。已目视检查颜色、形态、源点到目标及亮背景可见度。
- `VerifyBattleRuntime.Assets`:正式战场76实例/8音源/9音效、19个局部-Z挂点、10伙伴/5敌人动作相位绑定通过。
- `python -m unittest discover -s Tools/tests -p test_skill_design.py`:8项通过;`python Tools/verify_partner_skills.py`、`python Tools/validate_skill_runtime.py` 通过。
尚未进行微信真机帧耗、内存与混音主观验收;本次为编辑器功能及视觉验收。本批不改服务器逻辑、数值或现有账号,未重启8080服务。收尾退出测试 Play,保留原编辑场景。
重建入口:
```text
python Tools/generate_partner_skill_sfx.py
Unity Pipeline: BuildPartnerSkillFx.Build -> BuildBattleSkills.Build
python Tools/verify_partner_skills.py
Unity Pipeline (Play): VerifyPartnerSkillFx.Behavior / ContactSheet
Unity Pipeline (Play): VerifyBattleRuntime.VisualSkills
Unity Pipeline (Stop): VerifyPartnerSkillFx.Finish / VerifyBattleRuntime.Assets
```