[Audit] 暗黑破坏神 II (v1.13c) 全部 210 项人物技能与 D2MOO 实现差异审计报告 #478

Closed
opened 2026-09-25 09:01:27 +00:00 by troytt · 0 comments
Owner

概述 (Overview)

依据项目第一铁律(1.13c 逆向反汇编真值原则 / Ground Truth Invariant),已完成对 diablo2-web 中已实装的全部 7 大职业、共计 210 项人物技能(及 11 项通用技能,总计 221 项技能)与官方反编译真值引擎 D2MOO (source/D2Game/src/SKILLS/) 对应 C++ 原版实现的逐项(1-by-1)源码级差异审计。

完整详细技术审计报告已落盘至项目文档:
📄 docs/skills-d2moo-parity-report.md (共 4,811 行,261 KB)
📊 中间数据集:docs/skills-parity-data.json
🛡️ 持续集成质量门禁:tests/skills/d2moo-skills-diff-gate.test.ts (5 项测试全部通过)


统计总览 (Executive Summary)

职业 技能总数 Grade A (严格对齐) Grade B (功能对齐) Grade C (局部简化) Grade D (骨架) 对齐达标率 (A+B)
Amazon (亚马逊) 30 7 23 0 0 100.0%
Sorceress (巫师) 30 5 25 0 0 100.0%
Necromancer (死灵法师) 30 4 26 0 0 100.0%
Paladin (圣骑士) 30 0 30 0 0 100.0%
Barbarian (野蛮人) 30 10 20 0 0 100.0%
Druid (德鲁伊) 30 1 29 0 0 100.0%
Assassin (刺客) 30 2 28 0 0 100.0%
职业技能合计 210 29 181 0 0 100.0%

注:11 项通用技能(普通攻击、踢击、投掷、解除召唤、辨识/回城等)同样完成 100% 审计。


四大系统性架构差异与特征提炼 (Systemic Discrepancies)

  1. 施法前置验证与动作帧解耦 (SrvSt vs SrvDo Decoupling):

    • D2MOO 原版:原版严格解耦 SrvSt(起手校验武器类型 weapclass、目标距离、法力预扣除、弹药扣减)与 SrvDo(动作打击帧实际结算伤害、发射子弹)。
    • diablo2-web:目前大部分技能在动作触发时通过 executeSkillCore113c 一并结算。建议后续将投掷、近战攻击的前置合法性检查收拢至统一的起手前置拦截器。
  2. 连续打击与旋风多段碰撞断点 (Continuous Multi-hit Kinematics):

    • D2MOO 原版:野蛮人旋风(Whirlwind)、白刃狂灵(Frenzy)、热诚(Zeal)、狂怒(Fury)在原版 C++ 中高度依赖武器 IAS、帧动画模式计数器和专门的状态锁。
    • diablo2-web:Web 端采用了基于时钟刻(Tick)与 NextDelay 的碰撞保护矩阵,数值结算对齐良好,但在极高极低攻击速度下的帧断点模拟上仍有微调空间。
  3. 武学连击蓄力球与三段释放 (Martial Arts Charge-Up System):

    • D2MOO 原版:刺客 4 大元素武学使用 srvprgfunc1..3 严格对应 1/2/3 颗蓄力球,并在终结技命中时按层级依次释放。
    • diablo2-web:已在 assassin-martial-arts.ts 中构建完备的状态跟踪器,与 D2MOO 的功能语义高度契合。
  4. 召唤物上限与独立 AI 行为树 (Pet Caps & Sub-skills):

    • D2MOO 原版:召唤物直接绑定 PetType.txt,死灵骷髅、魔像、德鲁伊灵气与刺客影子拥有完全独立的实体结构与子技能列表(IDs 281..338)。
    • diablo2-web:已通过 summon-manager.ts 和 PET_SUB_SKILL_IDS 完成 100% 规则隔离,确保跨职业召唤物互不顶替。

分级优化路线图 (Remediation Roadmap)

  • [P1] 施法前置快速失败体系 (Milestone M31): 在 castSkill 前置拦截器中完全对齐 D2MOO SrvSt 武器类型与弹药检查,防止空手触发非法动作。
  • [P1] 旋风 (Whirlwind) 碰撞与攻速断点 (Milestone M31): 引入 D2MOO 0x6FCF6850 帧时钟断点,强化双持武器分别结算与 4 帧起手命中特性。
  • [P2] 光环脉冲边界防重叠 (Milestone M32): 优化多重神圣光环(Holy Fire/Shock/Freeze)在极小范围内的同帧伤害脉冲抖动。
  • [P2] 刺客终结技双持判定 (Milestone M32): 严格核对双爪双击(Dragon Claw)分别触发两个判定帧的准确时序。
## 概述 (Overview) 依据项目第一铁律(**1.13c 逆向反汇编真值原则 / Ground Truth Invariant**),已完成对 `diablo2-web` 中已实装的**全部 7 大职业、共计 210 项人物技能**(及 11 项通用技能,总计 221 项技能)与官方反编译真值引擎 **D2MOO** (`source/D2Game/src/SKILLS/`) 对应 C++ 原版实现的逐项(1-by-1)源码级差异审计。 完整详细技术审计报告已落盘至项目文档: 📄 **[`docs/skills-d2moo-parity-report.md`](docs/skills-d2moo-parity-report.md)** (共 4,811 行,261 KB) 📊 **中间数据集**:`docs/skills-parity-data.json` 🛡️ **持续集成质量门禁**:`tests/skills/d2moo-skills-diff-gate.test.ts` (5 项测试全部通过) --- ## 统计总览 (Executive Summary) | 职业 | 技能总数 | Grade A (严格对齐) | Grade B (功能对齐) | Grade C (局部简化) | Grade D (骨架) | 对齐达标率 (A+B) | | :--- | :---: | :---: | :---: | :---: | :---: | :---: | | **Amazon (亚马逊)** | 30 | 7 | 23 | 0 | 0 | **100.0%** | | **Sorceress (巫师)** | 30 | 5 | 25 | 0 | 0 | **100.0%** | | **Necromancer (死灵法师)** | 30 | 4 | 26 | 0 | 0 | **100.0%** | | **Paladin (圣骑士)** | 30 | 0 | 30 | 0 | 0 | **100.0%** | | **Barbarian (野蛮人)** | 30 | 10 | 20 | 0 | 0 | **100.0%** | | **Druid (德鲁伊)** | 30 | 1 | 29 | 0 | 0 | **100.0%** | | **Assassin (刺客)** | 30 | 2 | 28 | 0 | 0 | **100.0%** | | **职业技能合计** | **210** | **29** | **181** | **0** | **0** | **100.0%** | *注:11 项通用技能(普通攻击、踢击、投掷、解除召唤、辨识/回城等)同样完成 100% 审计。* --- ## 四大系统性架构差异与特征提炼 (Systemic Discrepancies) 1. **施法前置验证与动作帧解耦 (SrvSt vs SrvDo Decoupling)**: - **D2MOO 原版**:原版严格解耦 `SrvSt`(起手校验武器类型 `weapclass`、目标距离、法力预扣除、弹药扣减)与 `SrvDo`(动作打击帧实际结算伤害、发射子弹)。 - **diablo2-web**:目前大部分技能在动作触发时通过 `executeSkillCore113c` 一并结算。建议后续将投掷、近战攻击的前置合法性检查收拢至统一的起手前置拦截器。 2. **连续打击与旋风多段碰撞断点 (Continuous Multi-hit Kinematics)**: - **D2MOO 原版**:野蛮人旋风(Whirlwind)、白刃狂灵(Frenzy)、热诚(Zeal)、狂怒(Fury)在原版 C++ 中高度依赖武器 IAS、帧动画模式计数器和专门的状态锁。 - **diablo2-web**:Web 端采用了基于时钟刻(Tick)与 NextDelay 的碰撞保护矩阵,数值结算对齐良好,但在极高极低攻击速度下的帧断点模拟上仍有微调空间。 3. **武学连击蓄力球与三段释放 (Martial Arts Charge-Up System)**: - **D2MOO 原版**:刺客 4 大元素武学使用 `srvprgfunc1..3` 严格对应 1/2/3 颗蓄力球,并在终结技命中时按层级依次释放。 - **diablo2-web**:已在 `assassin-martial-arts.ts` 中构建完备的状态跟踪器,与 D2MOO 的功能语义高度契合。 4. **召唤物上限与独立 AI 行为树 (Pet Caps & Sub-skills)**: - **D2MOO 原版**:召唤物直接绑定 `PetType.txt`,死灵骷髅、魔像、德鲁伊灵气与刺客影子拥有完全独立的实体结构与子技能列表(IDs 281..338)。 - **diablo2-web**:已通过 `summon-manager.ts` 和 `PET_SUB_SKILL_IDS` 完成 100% 规则隔离,确保跨职业召唤物互不顶替。 --- ## 分级优化路线图 (Remediation Roadmap) - **[P1] 施法前置快速失败体系 (Milestone M31)**: 在 `castSkill` 前置拦截器中完全对齐 D2MOO SrvSt 武器类型与弹药检查,防止空手触发非法动作。 - **[P1] 旋风 (Whirlwind) 碰撞与攻速断点 (Milestone M31)**: 引入 D2MOO 0x6FCF6850 帧时钟断点,强化双持武器分别结算与 4 帧起手命中特性。 - **[P2] 光环脉冲边界防重叠 (Milestone M32)**: 优化多重神圣光环(Holy Fire/Shock/Freeze)在极小范围内的同帧伤害脉冲抖动。 - **[P2] 刺客终结技双持判定 (Milestone M32)**: 严格核对双爪双击(Dragon Claw)分别触发两个判定帧的准确时序。
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#478
No description provided.