Files
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

6.8 KiB
Raw Permalink Blame History

敌人攻击与受击特效/音效标准制作方案

2026-10-21。已接入当前 PrototypeArena;本批制作五类敌人的攻击表现,以及普通受击、硬甲受击、护盾格挡。五类敌人共用稳定的播放接口,资产和参数持久化在 Prefab 中。

资源与映射

类型 画面表现 TangoFlux 音效
0 · 小角怪(Hornlet) 金色短弧/接触闪光 Enemy_HornletAttack.wav · 0.48s
1 · 疾跑怪(Dashlet) 青白色狭长斜掠 Enemy_DashletAttack.wav · 0.42s
2 · 硬壳怪(Shellhorn) 石甲冲击环/碎屑 Enemy_ShellhornAttack.wav · 0.60s
3 · 角怪队长(HornCaptain) 橙红交叉双弧 Enemy_HornCaptainAttack.wav · 0.58s
4 · 大角首领(GreatHorn) 大范围红金重击/贴地冲击环 Enemy_GreatHornAttack.wav · 0.82s
普通受击(敌人类型0/1,以及敌人击中伙伴) 暖白闪光、短促碎光和小冲击环 Enemy_HitSoft.wav · 0.34s
硬甲受击(敌人类型2/3/4) 金橙碎光、石甲冲击环 Enemy_HitArmor.wav · 0.42s
伙伴护盾完全吸收敌人攻击 青色闪光/格挡环 Enemy_HitShield.wav · 0.55s

特效根目录:AIClient/Assets/Bundles/Effects/EnemyCombat/。八个 Vfx_Enemy_{名称}.prefab 分别配套五种 Attack 与 HitSoft/HitArmor/HitShield。CombatSoft.png 为 Pipeline 制作的径向透明软粒子贴图;CombatArc.asset/CombatRing.asset 为弧带/环带网格;CombatGlow.mat 使用 AIGame/EnemyCombatParticle 加法透明着色器。

音效目录:AIClient/Assets/Bundles/Sound/SFX/EnemyCombat/。EnemyCombatPresentation.prefab 包含八类特效各四实例(共32),八条PCM音频及八个非循环AudioSource;已作为嵌套Prefab放入现有战场。通过战场资源依赖加载,无需另行动态查找特效地址。BuildPrototype.MakeArena 重建时会恢复该嵌套Prefab。

制作与运行标准

  1. 先用固定英文声学描述、seed及请求内容哈希建立音效配方。Tools/generate_enemy_sfx.py 按 D:/UD/AI/XModel/TangoFlux_AI调用指南.md 检查服务ready;调用本机8012,最多两个并发任务;duration=2s、steps=50、guidance=4.5,异步提交和0.8秒轮询。队列满最多等待120秒,不停其它服务。缓存同时检查请求哈希与原稿哈希。
  2. 保存服务job、提示词、原稿、参数与SHA256至 Tools/output/enemy_combat_sfx/,制作记录在 Doc/Design/Sound/EnemyCombat/generation.json。原稿保持44.1kHz立体声;后期做65Hz高通、最强起音截取、5ms淡入、50ms淡出和峰值约-1.94dBFS,输出0.34~0.82秒PCM16立体声短音效。连续试听为同目录 preview.wav,按上表五种攻击、普通受击、硬甲受击、格挡排列,每段间隔0.3秒。
  3. Unity序列化资源、外部资源导入与导入设置全部经Pipeline。BuildEnemyCombatFx.Build 可重建材质、贴图、网格、八套特效及播放池,然后仅替换战场的反馈节点,保留其他战场内容。AudioClip采用PCM/DecompressOnLoad/预加载。
  4. PrototypeBattle 在真实扣血和敌人出手处追加不可变 CombatCue;PrototypeFlow 在每次固定步长后消费队列。既有Pulse仍只用于缩放/状态提示,减速不冒充受击。死亡命中先记录再缩小角色;漏怪和无目标不创建命中。敌人出手弧光位于自身前方,目标命中反馈朝固定战斗相机方向偏移,避免被网格遮挡。
  5. EnemyCombatPresentation 仅消费表现事实。五种敌人攻击各播放自身攻击效果和声音,并为伙伴播放普通受击或护盾格挡;敌人受击按类型选择软体或石甲。每类型4实例循环复用,声音8路轮转、同音75ms抑制、单音音量上限0.40,所有当前活动音源增益之和不超过0.70,防止多敌同时出手叠加失控。对象数与音源数固定。
  6. 暂停冻结粒子和音源,恢复不重复发射;2倍速改变粒子速度,声音保留原音高。SFX开关关闭立即停战斗音,开启不会补播旧事件。离开战场时禁用反馈节点并停止/清空粒子与声音;新战斗清空旧表现。
  7. 仍沿用当前 battleRules=1/2 的即时伤害时间。没有把扣血迁移到动画的 OnEnemyAttackImpact,也没有启用 SkillSystem 的 battleRules=3 前摇/投射物协议;正式技能时序迁移仍按 SkillSystem.md 进行。当前动画的蓄力和视觉冲击相位可能晚于即时命中,本次不改变战斗数值、节奏、服务端结算和奖励。

验证与复用

  • python Tools/verify_enemy_sfx.py:八条音效的请求/原稿/输出哈希、成功任务、采样格式、短时长、前100ms起音、尾部淡出、零削波及有效电平通过。audio_validation.json 只声明自动检测,音色的主观听感需通过 preview.wav 试听,不将自动检查当成人工听审结论。
  • Pipeline BuildEnemyCombatFx.Verify:八类映射、32实例、8音源、音频规格、非循环/无自动播放、着色器无编译错误、战场嵌套通过。
  • Pipeline VerifyEnemyCombatFx.Simulation:两种规则×五类敌人,出手事件数与Strikes完全一致;有受击事件;完全护盾吸收;九个致命命中各一次;消费表现队列不影响战斗结果。报告 simulation.json。
  • Pipeline VerifyEnemyCombatFx.Play:真实粒子和音源播放、五类攻击/受击/格挡、暂停恢复、2倍速、SFX静音、100次连续触发后的有界池、0.70总增益预算及退出清理通过。报告 play.json。
  • Pipeline VerifyEnemyCombatFx.PlayBattle:用真实PrototypeFlow.Update/RefreshBattle驱动隔离内存战斗,五类敌人全部出手、九个敌人击败,事件消费与反馈通过;不登录测试账号、不请求奖励、不改玩家存档。报告 battle.json。
  • VerifyEnemyCombatFx.BuildReview 生成独立 Assets/Bundles/Scenes/Review/EnemyCombatFx_Review.unity,Capture 在Additive场景采样后截图并关闭。截图 Assets/Screenshots/enemy_combat_fx_review.png 和 enemy_combat_fx_battle.png。没有覆盖角色总验收场景,原Boot和烈焰狮场景保持未修改。

Unity调用必须显式指定项目,例如:

unity --json command --project-path D:/UD/AI/AIGame/AIClient set_autotick --enable true
unity --json command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/BuildEnemyCombatFx.cs --entry BuildEnemyCombatFx.Build
unity --json command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/VerifyEnemyCombatFx.cs --entry VerifyEnemyCombatFx.Simulation

本次验证为开发机Editor/Play,未做微信目标设备性能验收或Player资源包构建。TangoFlux指南注明模型权重为非商业研究用途;生成记录保留该来源信息,未认定音频已获得商用许可。