[DRLG] 第四幕户外关卡改用 D2MOO 1:1 移植(关卡 104–106、108) #497

Open
opened 2026-09-27 15:29:40 +00:00 by troytt · 0 comments
Owner

背景

#455 的第一幕部分已完成(b6fc251,D2MOO 逐函数 1:1 移植,32 个随机种子与原生 oracle 全阶段 0 差异)。本 issue 用同样的方法处理第四幕。

范围(Levels.txt DrlgType = 3,第四幕)

104 Outer Steppes、105 Plains of Despair、106 City of the Damned、108 Chaos Sanctum。

需要移植的 D2MOO 函数

  • DrlgOutdoors.cpp:DRLGOUTDOORS_InitAct4OutdoorLevel 已经移植在 src/game/drlg/drlg-outdoors.ts 里,但 DRLGOUTDOORS_GenerateLevel 的第四幕分派仍然 throw,也没有和 oracle 比对过。DRLGOUTDOORS_AddAct124SecondaryBorder 第一幕已移植,可直接复用。
  • DrlgOutPlace.cpp:DRLGOUTPLACE_CreateLevelConnections 的第四幕分支、DRLGOUTPLACE_LinkAct4Outdoors、DRLGOUTPLACE_LinkAct4ChaosSanctum。

目前第四幕仍走旧生成器。另外 108 Chaos Sanctum 在 verify:generators 里本来就失败,移植后应一并消失。

同时删除(不留 fallback)

  • wilderness.ts 旧生成器中第四幕的路径;world-graph.ts 中第四幕臆造的门朝向(assignGateSides)和缝合边。

验收

  1. oracle 扩展到第四幕;npx tsx scripts/drlg-diff.ts --levels 104-106,108 --seeds 32 全阶段 0 差异,另跑 --isolated。
  2. 重新烘焙;对比图 XOR 为空,缺失瓦片 0。
  3. 136 关无头浏览器审计通过;verify:world-graph、verify:world-walk、verify:generators 通过。
## 背景 #455 的第一幕部分已完成(b6fc251,D2MOO 逐函数 1:1 移植,32 个随机种子与原生 oracle 全阶段 0 差异)。本 issue 用同样的方法处理第四幕。 ## 范围(Levels.txt `DrlgType = 3`,第四幕) 104 Outer Steppes、105 Plains of Despair、106 City of the Damned、108 Chaos Sanctum。 ## 需要移植的 D2MOO 函数 - `DrlgOutdoors.cpp`:`DRLGOUTDOORS_InitAct4OutdoorLevel` 已经移植在 `src/game/drlg/drlg-outdoors.ts` 里,但 `DRLGOUTDOORS_GenerateLevel` 的第四幕分派仍然 throw,也没有和 oracle 比对过。`DRLGOUTDOORS_AddAct124SecondaryBorder` 第一幕已移植,可直接复用。 - `DrlgOutPlace.cpp`:`DRLGOUTPLACE_CreateLevelConnections` 的第四幕分支、`DRLGOUTPLACE_LinkAct4Outdoors`、`DRLGOUTPLACE_LinkAct4ChaosSanctum`。 目前第四幕仍走旧生成器。另外 108 Chaos Sanctum 在 `verify:generators` 里本来就失败,移植后应一并消失。 ## 同时删除(不留 fallback) - `wilderness.ts` 旧生成器中第四幕的路径;`world-graph.ts` 中第四幕臆造的门朝向(`assignGateSides`)和缝合边。 ## 验收 1. oracle 扩展到第四幕;`npx tsx scripts/drlg-diff.ts --levels 104-106,108 --seeds 32` 全阶段 0 差异,另跑 `--isolated`。 2. 重新烘焙;对比图 XOR 为空,缺失瓦片 0。 3. 136 关无头浏览器审计通过;`verify:world-graph`、`verify:world-walk`、`verify:generators` 通过。
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#497
No description provided.