[P3][T6] 按子系统人工精读审计低命名可追溯区域 #86
Labels
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: troytt/diablo2-web#86
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
scratch/audit_coverage.py抽取原版 328 个DRLG*/DUNGEON*函数定义,检查它们是否在仓库
src/scripts/tests/中被提及:72 个被提及,256 个从未出现;过滤掉内存/销毁/激活类噪声后,
仍有 135 个影响内容的函数从未出现。
按前缀统计(已排除
_Free/_Alloc/_Realloc):DRLGOUTJUNG_DRLGOUTROOM_DRLGOUTDESR_DRLGPRESET_DRLGOUTWILD_DRLGOUTSIEGE_DRLGOUTPLACE_DRLGOUTDOORS_DRLGMAZE_DRLGTILESUB_这份数据的正确解读
另有两条附带观察:
src/game/wilderness-acts.ts:701存在运行时告警Act 4 basalt plateaus not implemented for level ${request.levelId};verify-packs输出楼梯来源:美术瓦片 415,迷宫楼梯间 0,兜底 80——'room'这条来源从未被命中,疑似死代码路径,值得顺手确认。
本 issue 的任务
这是一个审计任务,不是实现任务。产出是一份「哪些是真差异、哪些只是命名不同」的结论,
以及据此拆出的后续 issue。
建议顺序(按「低可追溯 × 玩法影响」排序,与 P2 的瓦片缺失名单吻合):
DRLGOUTDESR_(Act 2 沙漠,9.1%) —— 对应 43 Desert 3 的瓦片缺失DRLGOUTJUNG_(Act 3 丛林 / Kurast,0%) —— 对应 79/80/81 的 6%+ 瓦片缺失,影响最大DRLGPRESET_(预设流水线,10.3%) —— 面最广,几乎所有关卡都经过它DRLGOUTROOM_(室外 Room 链接,0%)每个子系统的审计方法:
验收标准
DRLGOUTDESR_、DRLGOUTJUNG_)的精读提升下一轮审计的可追溯率
楼梯来源 'room'是否为死代码,是则清理或补测试溯源
113c-divergence-audit.md(条目编号与本 issue 标题中的 T 编号对应)D2Common.dll,PE 时间戳0x4B95C439= 2010-03-09,ImageBase0x6FD50000与 #83 的关系
#83(Kurast / Mesa / Desert / Barricade 瓦片引用缺失)是本审计的具体症状,
两者目标子系统完全重叠:
DRLGOUTDESR_(9.1%)DRLGOUTJUNG_(0%)DRLGOUTSIEGE_(28.6%)这是一个有利条件:#83 提供了可量化的失败信号,可以用来验证本审计的结论是否抓到了真问题
——若精读认定某子系统「等价」,但对应关卡仍有 6% 的瓦片缺失,那说明精读漏了东西。
建议把 #83 当作本审计前两个子系统的验收指标之一。
相关:#83
审计验证与溯源实施报告 (Issue #86)
1. 审计目标与背景
针对低命名可追溯性的户外子系统:
DRLGOUTDESR_(暴雪原始 11 个函数)DRLGOUTJUNG_(暴雪原始 5 个函数)开展人工逐行代码精读审计,查明仓库对应实现、偏差程度与设计决策,并在源码中注入 JSDoc 溯源标注(严禁增加伪造命名)。同时对
verify-packs输出中的迷宫楼梯间 84进行深度溯源。2. 审计核心发现与产物
DRLGOUTDESR_):DRLGOUTDESR_InitAct2OutdoorLevel: 等价对应wilderness-acts.ts:initAct2OutdoorLevel,完整管理关卡 41-46。DRLGOUTDESR_PlaceBorders: 等价对应wilderness.ts:findDirectionalBorderPiece8 块方向边界。DRLGOUTDESR_AddExits: 等价对应wilderness.ts:SPECIAL_PRESETS_BY_LEVEL(Levels 41-45 碎石墓穴/死亡之殿/蛆虫巢穴/古代通道/利爪蝮蛇神殿)。DRLGOUTDESR_PlaceTombEntriesInCanyon: 等价对应wilderness-acts.ts峡谷周缘 7 处古墓与传送门。DRLGOUTJUNG_):DRLGOUTJUNG_BuildJungle: 近似对应wilderness-jungles.ts:DRLG_GenerateJungles32x32 水系与树篱阻隔。DRLGOUTJUNG_BuildLowerKurast/BuildKurastBazaar/BuildUpperKurast: 等价对应wilderness-acts.ts:initAct3OutdoorLevel分别布置 79/80/81 贫民窟、商场与上层围墙。DRLGOUTJUNG_SpawnRandomPreset: 近似对应wilderness.ts:SPECIAL_PRESETS_BY_LEVEL随机网格放置。source: room84 处来源实证:Warp0..7美术瓦片,全部由generateMaze()算法在随机网格节点盖印预设楼梯间(产出mazeWarps),楼梯 100% 取自room。source=tile,深入下楼取自迷宫密室source=room)。docs/drlg-subsystem-audit-report.md(261 行详尽对照矩阵与技术深度解析)。wilderness-acts.ts、wilderness-jungles.ts、wilderness.ts中规范标注暴雪原生函数对应关系。3. 验证结果
npm run typecheck: 0 errorsnpx vitest run: 全量测试套件通过 (包含 drlg-alias-guard 守卫)npx tsx scripts/verify-packs.ts: 1671/1671 项断言通过9896ada(基于 worktree commitafc368a0817143af4490bd29ba6e2f46b01d0a25)