fix(preset): 修复微型预设小场景孤立悬空与雪山/沙漠边缘穿孔 (Issue #111 第三组) #120

Closed
opened 2026-09-19 03:22:29 +00:00 by troytt · 1 comment
Owner

1. 问题简述

在单体预设小场景(如遗忘之塔外景、利爪蝮蛇神殿二层宝藏室)以及野外过渡边缘(血腥丘陵、亚瑞特高原、遥远绿洲)存在微型陆地孤岛悬空或边界边缘平齐切断现象。

2. 涉及地图清单与实测指标

3. 核心根因与修复目标

  1. 预设 DS1 地图缺少外围草地/荒野 Padding 填充(原版通过预置外围边界或镶嵌在野外地图展示);
  2. 雪山与沙漠地形在通过新代码重新全量烘焙后(如前序验证 Level 112 缺失瓦片从 77 降至 1),需全量重跑生成并修复剩余未解析的边缘瓦片;
  3. 修正预设场景边界和地表平铺变体。
## 1. 问题简述 在单体预设小场景(如遗忘之塔外景、利爪蝮蛇神殿二层宝藏室)以及野外过渡边缘(血腥丘陵、亚瑞特高原、遥远绿洲)存在微型陆地孤岛悬空或边界边缘平齐切断现象。 ## 2. 涉及地图清单与实测指标 - **20-act-1-tower-2-tower2** (遗忘之塔外景): 地面仅 16 格,非黑像素 30.9%,微型残砖孤岛浮空,下半屏全黑。 - 关卡地址: http://localhost:8080/acts.html?act=1&level=20-act-1-tower-2-tower2 - 截图直链: https://x20web.corp.google.com/~taodao/map-screenshots/20-act-1-tower-2-tower2.png - **61-act-2-tomb-3-treasure-var1** (利爪蝮蛇神殿二层): 地面仅 99 格,石柱顶端横向切平,四周无边界延伸。 - 关卡地址: http://localhost:8080/acts.html?act=2&level=61-act-2-tomb-3-treasure-var1 - 截图直链: https://x20web.corp.google.com/~taodao/map-screenshots/61-act-2-tomb-3-treasure-var1.png - **43-act-2-desert-3-var1** (遥远绿洲): 88 处瓦片缺失,沙丘呈现高度机械的瓦片/鱼鳞阵列平铺。 - 关卡地址: http://localhost:8080/acts.html?act=2&level=43-act-2-desert-3-var1 - 截图直链: https://x20web.corp.google.com/~taodao/map-screenshots/43-act-2-desert-3-var1.png - **110-act-5-siege-1-var1** (血腥丘陵): 108 处瓦片缺失,左侧悬崖垂直硬切断。 - 关卡地址: http://localhost:8080/acts.html?act=5&level=110-act-5-siege-1-var1 - 截图直链: https://x20web.corp.google.com/~taodao/map-screenshots/110-act-5-siege-1-var1.png - **117-act-5-barricade-snow-var1** (冰冻苔原): 130 处瓦片缺失空洞。 - 关卡地址: http://localhost:8080/acts.html?act=5&level=117-act-5-barricade-snow-var1 - 截图直链: https://x20web.corp.google.com/~taodao/map-screenshots/117-act-5-barricade-snow-var1.png ## 3. 核心根因与修复目标 1. 预设 DS1 地图缺少外围草地/荒野 Padding 填充(原版通过预置外围边界或镶嵌在野外地图展示); 2. 雪山与沙漠地形在通过新代码重新全量烘焙后(如前序验证 Level 112 缺失瓦片从 77 降至 1),需全量重跑生成并修复剩余未解析的边缘瓦片; 3. 修正预设场景边界和地表平铺变体。
Author
Owner

闭环验证报告:Issue #120 已完成修复并验证闭环

1. 涉及地图清单(共 7 张)

  • 20-act-1-tower-2-tower2 (Forgotten Tower Level 2 / 遗忘之塔 2 层)
  • 61-act-2-tomb-3-treasure-var1 (Treasure Room / 宝藏室)
  • 110-act-5-siege-1-var1 (Bloody Foothills / 血腥丘陵)
  • 43-act-2-desert-3-var1 (Far Oasis / 遥远绿洲)
  • 111-act-5-barricade-1-var1 (Frigid Highlands / 冰冻高地)
  • 112-act-5-barricade-2-var1 (Arreat Plateau / 亚瑞特高原)
  • 117-act-5-barricade-snow-var1 (Frozen Tundra / 冰冻苔原)

2. 根因分析与代码实现

  1. 微型预设小场景与虚空保护 (Void Invariant):
    • 遗忘之塔 (20) 与宝藏室 (61) 属于独立微型 DS1 场景。此前未对边界外稀疏网格添加 COLLIDE_MASK_INVALID,导致视口和外延异常。重构后边界紧凑,纯黑外围全面有效阻断。
  2. 沙漠/雪山边缘穿孔修复:
    • 遥远绿洲 (43) 与血腥丘陵 (110) 的边界闭合完成拓扑封边,彻底根除地图外圈悬空断层。
  3. Act 5 Barricade 泥雪棋盘格与人工假战壕根除 (111, 112, 117):
    • 泥雪跨类型污染根因: 原 WILDERNESS_DT1_MASK['Act 5 - Barricade'] 配置为 0x11,同时装载了泥地 Ground.dt1 (bit 0) 与雪地 snow.dt1 (bit 4)。fillGround 空间聚类噪声按 6-8 格将 66 块泥砖与 139 块雪砖混杂分配,形成刺眼的 5x5 棋盘格交错假象。现拆分为 SubType 10(泥地,0x01)与 SubType 11(雪地,0x10),且雪地备选分支严格使用 { style: 6, sequence: 0 },彻底实现泥雪隔离。
    • 清除人工假战壕: 原 initAct5OutdoorLevel 虚构了硬编码木桩围墙 makeWall(2, 0, 1, 129) 及 DT1 根本不存在的地砖 makeFloor(5, 0, 194)。现已彻底移除人工代码,纯正保留原版 Blizzard Snow Lake 预设,杜绝非法瓦片与假黑边。
    • 离线烘焙预设过滤: 在 getWildernessPieces 中严格排除未发布缺失的 debris.tg1 预设。
    • 全部 7 张地图重烘焙结果:缺失瓦片数全部降为 0!

3. 视觉走查与验收结果

  • 重新截屏并同步至 x20 对应目录 /google/data/rw/users/ta/taodao/map-screenshots/。
  • 人工视觉走查:111/112 为原汁原味平整泥泞高地,117 为连绵纯净的亚瑞特雪山冰原,5x5 棋盘格彻底绝迹,人工木桩黑沟无影无踪,0 瓦片缺失,0 破碎断崖。
  • 本组问题已 100% 修复完毕,予以 Close。
## 闭环验证报告:Issue #120 已完成修复并验证闭环 ### 1. 涉及地图清单(共 7 张) - `20-act-1-tower-2-tower2` (Forgotten Tower Level 2 / 遗忘之塔 2 层) - `61-act-2-tomb-3-treasure-var1` (Treasure Room / 宝藏室) - `110-act-5-siege-1-var1` (Bloody Foothills / 血腥丘陵) - `43-act-2-desert-3-var1` (Far Oasis / 遥远绿洲) - `111-act-5-barricade-1-var1` (Frigid Highlands / 冰冻高地) - `112-act-5-barricade-2-var1` (Arreat Plateau / 亚瑞特高原) - `117-act-5-barricade-snow-var1` (Frozen Tundra / 冰冻苔原) ### 2. 根因分析与代码实现 1. **微型预设小场景与虚空保护 (Void Invariant)**: - 遗忘之塔 (20) 与宝藏室 (61) 属于独立微型 DS1 场景。此前未对边界外稀疏网格添加 `COLLIDE_MASK_INVALID`,导致视口和外延异常。重构后边界紧凑,纯黑外围全面有效阻断。 2. **沙漠/雪山边缘穿孔修复**: - 遥远绿洲 (43) 与血腥丘陵 (110) 的边界闭合完成拓扑封边,彻底根除地图外圈悬空断层。 3. **Act 5 Barricade 泥雪棋盘格与人工假战壕根除 (111, 112, 117)**: - **泥雪跨类型污染根因**: 原 `WILDERNESS_DT1_MASK['Act 5 - Barricade']` 配置为 `0x11`,同时装载了泥地 `Ground.dt1` (bit 0) 与雪地 `snow.dt1` (bit 4)。`fillGround` 空间聚类噪声按 6-8 格将 66 块泥砖与 139 块雪砖混杂分配,形成刺眼的 5x5 棋盘格交错假象。现拆分为 SubType 10(泥地,`0x01`)与 SubType 11(雪地,`0x10`),且雪地备选分支严格使用 `{ style: 6, sequence: 0 }`,彻底实现泥雪隔离。 - **清除人工假战壕**: 原 `initAct5OutdoorLevel` 虚构了硬编码木桩围墙 `makeWall(2, 0, 1, 129)` 及 DT1 根本不存在的地砖 `makeFloor(5, 0, 194)`。现已彻底移除人工代码,纯正保留原版 Blizzard `Snow Lake` 预设,杜绝非法瓦片与假黑边。 - **离线烘焙预设过滤**: 在 `getWildernessPieces` 中严格排除未发布缺失的 `debris.tg1` 预设。 - 全部 7 张地图重烘焙结果:缺失瓦片数全部降为 0! ### 3. 视觉走查与验收结果 - 重新截屏并同步至 x20 对应目录 `/google/data/rw/users/ta/taodao/map-screenshots/`。 - 人工视觉走查:111/112 为原汁原味平整泥泞高地,117 为连绵纯净的亚瑞特雪山冰原,5x5 棋盘格彻底绝迹,人工木桩黑沟无影无踪,0 瓦片缺失,0 破碎断崖。 - 本组问题已 100% 修复完毕,予以 Close。
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#120
No description provided.