feat(wilderness): 还原 DRLGOUTPLACE_PlaceAct1245OutdoorBorders 边界峭壁与门洞状态机 #67

Closed
opened 2026-09-18 01:10:16 +00:00 by troytt · 0 comments
Owner

背景

在原版暗黑 2 中,室外边界的闭合与开口贴装由 DRLGOUTPLACE_PlaceAct1245OutdoorBorders 严格驱动:

  • 外围 8×8 block grid 形成的环状带,按照固定顺时针/逆时针方向,放置每幕对应的:
    • Corner(转角断崖)
    • Border(平直断崖)
    • Opening(连接相邻关卡的开口)
  • 各幕有专属的边界预设定义表(如 Act 1 Bord1..4,Act 2 沙漠悬崖峡谷,Act 4 熔岩深渊边缘,Act 5 冰山雪峰断崖)。

而当前 Web 引擎在非第一幕或复杂多开口边界匹配失败时,存在降级到合成石墙或简单开放空间的处理(如 proceduralWallCells),导致部分关卡边缘失去了原版天然悬崖峭壁的幽闭感与宏伟感。


改造内容

  1. 完善五幕全套边界预设映射表:
    • 补齐 Act 2 沙漠悬崖、Act 4 熔岩断崖、Act 5 冰峰绝壁的预设查找与变体选择。
  2. 重构环形边界贴装状态机:
    • 严格按照 DRLGOUTPLACE_PlaceAct1245OutdoorBorders 环形走查算法,逐块放置 Corner、Border 与 Opening DS1 预设。
  3. 消除对兜底合成石墙的依赖:
    • 保证野外关卡外围 100% 由真实 DS1 峭壁闭合,消除 proceduralWallCells 降级。
    • 边界开口处与相邻关卡或特定门面(如修道院大门门面 facade1.ds1)严丝合缝对齐。

验收标准

  • 五幕野外关卡边缘均为原版 DS1 悬崖峭壁贴装,零程序化兜底石墙
  • 边界开口处与相邻关卡大门无缝对接
  • 边界周围无不可到达的缝隙或穿墙漏洞
  • npm run typecheck 零错误,npx vitest run 全绿
## 背景 在原版暗黑 2 中,室外边界的闭合与开口贴装由 `DRLGOUTPLACE_PlaceAct1245OutdoorBorders` 严格驱动: - 外围 8×8 block grid 形成的环状带,按照固定顺时针/逆时针方向,放置每幕对应的: - **Corner(转角断崖)** - **Border(平直断崖)** - **Opening(连接相邻关卡的开口)** - 各幕有专属的边界预设定义表(如 Act 1 `Bord1..4`,Act 2 沙漠悬崖峡谷,Act 4 熔岩深渊边缘,Act 5 冰山雪峰断崖)。 而当前 Web 引擎在非第一幕或复杂多开口边界匹配失败时,存在降级到合成石墙或简单开放空间的处理(如 `proceduralWallCells`),导致部分关卡边缘失去了原版天然悬崖峭壁的幽闭感与宏伟感。 --- ## 改造内容 1. **完善五幕全套边界预设映射表**: - 补齐 Act 2 沙漠悬崖、Act 4 熔岩断崖、Act 5 冰峰绝壁的预设查找与变体选择。 2. **重构环形边界贴装状态机**: - 严格按照 `DRLGOUTPLACE_PlaceAct1245OutdoorBorders` 环形走查算法,逐块放置 Corner、Border 与 Opening DS1 预设。 3. **消除对兜底合成石墙的依赖**: - 保证野外关卡外围 100% 由真实 DS1 峭壁闭合,消除 `proceduralWallCells` 降级。 - 边界开口处与相邻关卡或特定门面(如修道院大门门面 `facade1.ds1`)严丝合缝对齐。 --- ## 验收标准 - [ ] 五幕野外关卡边缘均为原版 DS1 悬崖峭壁贴装,零程序化兜底石墙 - [ ] 边界开口处与相邻关卡大门无缝对接 - [ ] 边界周围无不可到达的缝隙或穿墙漏洞 - [ ] `npm run typecheck` 零错误,`npx vitest run` 全绿
troytt added this to the [M16] 野外生成器原版一致性:还原 Blizzard DRLG 原生机制 milestone 2026-09-18 01:10:16 +00:00
Sign in to join this conversation.
No Label
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#67
No description provided.