bug(map-gen): 户外地图 (Wilderness/Siege) 缺少内部地形结构、石质围墙、道路与预设工事 (如血腥丘陵/Act1荒野) #35

Closed
opened 2026-09-16 02:34:16 +00:00 by troytt · 2 comments
Owner

问题描述 (Problem Description)

当前户外地图生成器(src/game/wilderness.ts,对应 Levels.txt 中 DrlgType == 3 的 31 张户外地图)生成的地形与原版《暗黑破坏神 II》存在显著缺失,导致户外场景空旷平坦、缺少标志性建筑与战术地形结构:

  1. 第五幕户外攻城战地图(如血腥丘陵 Bloody Foothills LevelId = 110)几乎完全是平地:

    • 原版表现(见对比图 1):血腥丘陵(Act 5 - Siege 1,240×48 格)是一条从哈洛加斯城门层层向上推进的阶梯式攻城战壕,包含:
      • 多层石质台阶与高台地形(Elevation Walls / Tiered Stairs);
      • 木质拒马、堑壕工事(Trenches & Barricades);
      • 燃烧的火炬/火盆(Burning Braziers & Torches,Object 实体);
      • 投石车阵地与督军山克(Shenk the Overseer)的 Boss 祭坛高台(Siege Boss 预设块)。
    • 当前渲染表现(见对比图 2):110-act-5-siege-1-var1 仅生成了 240×48 = 11520 地面 / 0 墙 · 对象 0,整张地图完全是一马平川的泥土地面,没有任何台阶、堑壕或火炬。
  2. 第一幕等户外荒野地图(Act 1 Wilderness LevelId = 2..7)缺少内部石质围墙(Stone Walls)、木栅栏与蜿蜒道路网:

    • 原版表现:鲜血荒地(Blood Moor)、冰冷之原(Cold Plains)、石块旷野(Stony Field)等户外地图中间,普遍存在**横跨地图内部的石质围墙(Stone Walls)与木栅栏(Wooden Fences)将旷野分割为多个院落/区域(带缺口/木门供通行),并由泥土小路(Dirt Roads)**连接入口、出口、传送点与洞穴入口。
    • 当前渲染表现:外圈仅有山崖/树木边界,地图内部除了零星随机散落的独立小屋(Cottages)外,完全没有连续的内部石质围墙、栅栏分割线以及主干道路网。

根因分析 (Root Cause Analysis)

1. 第五幕攻城地图 (LevelId = 110 血腥丘陵 / 111 冰冻高地 / 112 亚瑞特高原) 未接入 DRLGOUTSIEGE 序列预设拼接

  • 在原版引擎(D2MOO/source/D2Common/src/Drlg/DrlgOutSiege.cpp 的 DRLGOUTSIEGE_InitAct5Siege / DRLGOUTSIEGE_PlaceSpecialPresets)中:
    • Act 5 - Siege 1(LevelId = 110)虽然 DrlgType = 3,但它的 SubType = -1,不依赖随机 LvlSub 散落;
    • 相反,引擎沿着 240×48(30×6 个 8×8 Block)的狭长走廊,按固定拓扑顺序拼接 LvlPrest.txt Def 819..843(Act 5 - Siege 1 至 Act 5 - Siege 8、Siege Boss 山克高台、Siege To Barricade 等) 的完整预设 DS1 地图块;
    • 当前 src/game/wilderness.ts 既未实现 DRLGOUTSIEGE 的序列预设拼接,SPECIAL_PRESETS_BY_LEVEL[110] 亦为空,且该 LevelType 无通用 borderPieces,导致生成器仅执行了 fillGround() 铺满 11,520 格泥土地板,产生 0 墙 / 0 对象 的空地图。

2. 第一幕内部石质围墙 (LvlSub.txt BordType / DRLGTILESUB) 被错误限制且未按线性围墙规则生成

  • 在 src/game/wilderness.ts 的 applySubstitutions(第 1058–1066 行)中:
    // BordType 0 = one cluster for the whole level, 1 = one per row.
    const allowance = row.bordType === 0 ? Math.min(1, unlimitedBudget) : row.bordType === 1 ? 1 : Number.POSITIVE_INFINITY
    
    • 代码将 bordType === 0(恰对应 LvlSub.txt 中的 Act 1 Stone Wall / Wooden Fence 围墙组)硬编码限制为全图最多仅生成 1 个 cluster;
    • 更重要的是,在原版 DRLGOUTPLACE.cpp 与 DRLGTILESUB.cpp 中,内部石质围墙并非只贴 1 个孤立 DS1 碎片,而是先在荒野 Block 网格中规划内部区域分割线(Sub-room Divider Lines / Border Chains),或通过 LvlSub 的 levels[] 方向变体(直线段、拐角、门洞端头)沿网格生成连续贯通的石质围墙/木栅栏院落。

3. 户外主干道路网 (DRLGOUTDOORS_BuildRoad) 尚未实现

  • src/game/wilderness.ts 顶部的 UNIMPLEMENTED_PASSES 明确记录了尚未实现的生成阶段:
    • 缺少从地图入口(Entrance)连接至出口(Exit)、传送点(Waypoint)及特殊预设(如邪恶洞窟 Den of Evil、埋骨之地 Burial Grounds)的 A / 折线道路铺设阶段(Road Generation Pass)*,导致户外地图地面缺乏原版标志性的泥土路引导。

修复方案规划 (Proposed Solution)

  1. 实现第五幕攻城战地图专有生成器 (DRLGOUTSIEGE / DRLGOUTBARRICADE):
    • 针对 LevelId = 110(血腥丘陵 Bloody Foothills):解析 LvlPrest.txt 中的 Act 5 - Siege * 预设 DS1 序列(含城门过渡区、中段阶梯堑壕、山克 Boss 平台 Siege Boss、通往冰冻高地的隘口),将其完整拼接到 240×48 画布上,保留全部多层台阶墙体(Walls)、碰撞网格与火盆/火炬对象(Objects);
    • 针对 LevelId = 111(冰冻高地 Frigid Highlands)与 112(亚瑞特高原 Arreat Plateau):补齐 Act 5 - Barricade 攻城塔、拒马防线、野蛮人战俘营(Prison Pens)及高台预设块。
  2. 实现 Act 1 户外地图内部石质围墙/木栅栏分割网(Interior Stone Wall & Fence Chains):
    • 修复 applySubstitutions 中对 bordType === 0 的错误单次限制;
    • 在荒野内部 Block 网格上生成连续的水平/垂直石墙与木栅栏分割链(包含拐角拼接、随机破损缺口与木门出入口),还原 Act 1 标志性的石墙院落生态。
  3. 实现户外地图道路连接网(Wilderness Road Network Pass):
    • 在边界出口确定后、装饰物散落前,使用 LvlPrest / DT1 中的道路地砖(Road Floor Tiles)连接入口、出口及核心地标。
## 问题描述 (Problem Description) 当前户外地图生成器(`src/game/wilderness.ts`,对应 `Levels.txt` 中 `DrlgType == 3` 的 31 张户外地图)生成的地形与原版《暗黑破坏神 II》存在显著缺失,导致户外场景空旷平坦、缺少标志性建筑与战术地形结构: 1. **第五幕户外攻城战地图(如血腥丘陵 Bloody Foothills `LevelId = 110`)几乎完全是平地**: - **原版表现**(见对比图 1):血腥丘陵(`Act 5 - Siege 1`,240×48 格)是一条从哈洛加斯城门层层向上推进的**阶梯式攻城战壕**,包含: - 多层石质台阶与高台地形(Elevation Walls / Tiered Stairs); - 木质拒马、堑壕工事(Trenches & Barricades); - 燃烧的火炬/火盆(Burning Braziers & Torches,Object 实体); - 投石车阵地与督军山克(Shenk the Overseer)的 Boss 祭坛高台(`Siege Boss` 预设块)。 - **当前渲染表现**(见对比图 2):`110-act-5-siege-1-var1` 仅生成了 `240×48 = 11520 地面 / 0 墙 · 对象 0`,整张地图完全是一马平川的泥土地面,没有任何台阶、堑壕或火炬。 2. **第一幕等户外荒野地图(Act 1 Wilderness `LevelId = 2..7`)缺少内部石质围墙(Stone Walls)、木栅栏与蜿蜒道路网**: - **原版表现**:鲜血荒地(Blood Moor)、冰冷之原(Cold Plains)、石块旷野(Stony Field)等户外地图中间,普遍存在**横跨地图内部的石质围墙(Stone Walls)与木栅栏(Wooden Fences)**将旷野分割为多个院落/区域(带缺口/木门供通行),并由**泥土小路(Dirt Roads)**连接入口、出口、传送点与洞穴入口。 - **当前渲染表现**:外圈仅有山崖/树木边界,地图内部除了零星随机散落的独立小屋(Cottages)外,**完全没有连续的内部石质围墙、栅栏分割线以及主干道路网**。 --- ## 根因分析 (Root Cause Analysis) ### 1. 第五幕攻城地图 (`LevelId = 110` 血腥丘陵 / `111` 冰冻高地 / `112` 亚瑞特高原) 未接入 `DRLGOUTSIEGE` 序列预设拼接 - 在原版引擎(`D2MOO/source/D2Common/src/Drlg/DrlgOutSiege.cpp` 的 `DRLGOUTSIEGE_InitAct5Siege` / `DRLGOUTSIEGE_PlaceSpecialPresets`)中: - `Act 5 - Siege 1`(`LevelId = 110`)虽然 `DrlgType = 3`,但它的 `SubType = -1`,不依赖随机 `LvlSub` 散落; - 相反,引擎沿着 `240×48`(30×6 个 8×8 Block)的狭长走廊,按固定拓扑顺序拼接 **`LvlPrest.txt` Def 819..843(`Act 5 - Siege 1` 至 `Act 5 - Siege 8`、`Siege Boss` 山克高台、`Siege To Barricade` 等)** 的完整预设 DS1 地图块; - 当前 `src/game/wilderness.ts` 既未实现 `DRLGOUTSIEGE` 的序列预设拼接,`SPECIAL_PRESETS_BY_LEVEL[110]` 亦为空,且该 LevelType 无通用 `borderPieces`,导致生成器仅执行了 `fillGround()` 铺满 11,520 格泥土地板,产生 `0 墙 / 0 对象` 的空地图。 ### 2. 第一幕内部石质围墙 (`LvlSub.txt` `BordType` / `DRLGTILESUB`) 被错误限制且未按线性围墙规则生成 - 在 `src/game/wilderness.ts` 的 `applySubstitutions`(第 1058–1066 行)中: ```ts // BordType 0 = one cluster for the whole level, 1 = one per row. const allowance = row.bordType === 0 ? Math.min(1, unlimitedBudget) : row.bordType === 1 ? 1 : Number.POSITIVE_INFINITY ``` - 代码将 `bordType === 0`(恰对应 `LvlSub.txt` 中的 **Act 1 Stone Wall / Wooden Fence** 围墙组)硬编码限制为**全图最多仅生成 1 个 cluster**; - 更重要的是,在原版 `DRLGOUTPLACE.cpp` 与 `DRLGTILESUB.cpp` 中,内部石质围墙并非只贴 1 个孤立 DS1 碎片,而是先在荒野 Block 网格中规划**内部区域分割线(Sub-room Divider Lines / Border Chains)**,或通过 `LvlSub` 的 `levels[]` 方向变体(直线段、拐角、门洞端头)沿网格生成**连续贯通的石质围墙/木栅栏院落**。 ### 3. 户外主干道路网 (`DRLGOUTDOORS_BuildRoad`) 尚未实现 - `src/game/wilderness.ts` 顶部的 `UNIMPLEMENTED_PASSES` 明确记录了尚未实现的生成阶段: - 缺少从地图入口(Entrance)连接至出口(Exit)、传送点(Waypoint)及特殊预设(如邪恶洞窟 Den of Evil、埋骨之地 Burial Grounds)的 **A* / 折线道路铺设阶段(Road Generation Pass)**,导致户外地图地面缺乏原版标志性的泥土路引导。 --- ## 修复方案规划 (Proposed Solution) 1. **实现第五幕攻城战地图专有生成器 (`DRLGOUTSIEGE` / `DRLGOUTBARRICADE`)**: - 针对 `LevelId = 110`(血腥丘陵 Bloody Foothills):解析 `LvlPrest.txt` 中的 `Act 5 - Siege *` 预设 DS1 序列(含城门过渡区、中段阶梯堑壕、山克 Boss 平台 `Siege Boss`、通往冰冻高地的隘口),将其完整拼接到 `240×48` 画布上,保留全部多层台阶墙体(Walls)、碰撞网格与火盆/火炬对象(Objects); - 针对 `LevelId = 111`(冰冻高地 Frigid Highlands)与 `112`(亚瑞特高原 Arreat Plateau):补齐 `Act 5 - Barricade` 攻城塔、拒马防线、野蛮人战俘营(Prison Pens)及高台预设块。 2. **实现 Act 1 户外地图内部石质围墙/木栅栏分割网(Interior Stone Wall & Fence Chains)**: - 修复 `applySubstitutions` 中对 `bordType === 0` 的错误单次限制; - 在荒野内部 Block 网格上生成连续的水平/垂直石墙与木栅栏分割链(包含拐角拼接、随机破损缺口与木门出入口),还原 Act 1 标志性的石墙院落生态。 3. **实现户外地图道路连接网(Wilderness Road Network Pass)**: - 在边界出口确定后、装饰物散落前,使用 `LvlPrest` / `DT1` 中的道路地砖(Road Floor Tiles)连接入口、出口及核心地标。
Author
Owner

已在提交 25ae728 完成修复并重新生成 samples/d2-packs 户外地图包:

1. Act 5 血腥丘陵 (LevelId = 110 / Act 5 - Siege 1) 15 段预制攻城条带拼接

  • 实现 stampAct5SiegeStrips (DRLGOUTSIEGE_InitAct5OutdoorLevel 复刻):按原版由西向东(x = 0..224,每段宽 16 格)精确拼接 15 个 16×48 攻城条带 (Def 879 Siege To Barricade -> Def 878..866 Siege Strip 13..1 督军山克高台 -> Def 865 Siege To Town 哈洛加斯城门)。
  • 修复前后对比:
    • 修复前:240×48 纯泥地(10 个图块帧、0 墙体、0 对象)。
    • 修复后:548 个独立图块帧(9 页 PNG)、1,190 个墙体/台阶/悬崖/战壕格、417 个对象(包含 134 个带动画/贴图的燃烧火盆、火炬、投石车、拒马、宝箱及山克等预设事件点),14 条接缝处 48/48 瓦片 100% 吻合,缺失瓦片 0。

2. Act 5 冰冻高地 (111) 与 亚瑞特高原 (112)

  • 修复 pack-act-assets.ts 中对 Snow 预设片的过早过滤,并在 generateWilderness 中按 LevelId 精确分配泥地防御工事 (111) 与雪地悬崖/峡谷/瑞resh Socket 祭坛 (112)。
  • 冰冻高地与亚瑞特高原新增 Act 5 - Barricade 1..4(攻城塔楼与防线)、Barricade Prison 1..3(野蛮人战俘营)、红门入口 (Abaddon / Pit of Acheron)、传送点与废墟预设。

3. Act 1 户外荒野地图 (LevelId = 2..7 鲜血荒地、冰冷之原、石块旷野等)

  • 泥土道路网 (stampAct1DirtRoads):复刻 DRLGOUTDOORS_SpawnAct1DirtPaths,自动铺设连接入口、中央十字路口、出口与地标建筑的 2 格宽蜿蜒泥土小径 (style = 5, prop1 = 194)。
  • 内部石质围墙分割线 (stampAct1InteriorStoneWalls):复刻 Act 1 荒野标志性的横纵石墙 (style = 2, prop1 = 129) 与转角石柱 (type = 3),在道路穿过处自动留出拱门通道并同步碰撞阻挡。
  • 荒野地标预设扩充:加入邪恶洞穴入口 (Act 1 - DOE Entrance)、洞穴入口 (Cave Entrance)、石墙围栏 (Fence Fill 1..6) 及石质废墟 (Act 1 - Ruin)。
已在提交 `25ae728` 完成修复并重新生成 `samples/d2-packs` 户外地图包: ### 1. Act 5 血腥丘陵 (`LevelId = 110` / `Act 5 - Siege 1`) 15 段预制攻城条带拼接 - 实现 `stampAct5SiegeStrips` (`DRLGOUTSIEGE_InitAct5OutdoorLevel` 复刻):按原版由西向东(`x = 0..224`,每段宽 16 格)精确拼接 15 个 `16×48` 攻城条带 (`Def 879` `Siege To Barricade` -> `Def 878..866` `Siege Strip 13..1` 督军山克高台 -> `Def 865` `Siege To Town` 哈洛加斯城门)。 - **修复前后对比**: - 修复前:`240×48` 纯泥地(`10` 个图块帧、`0` 墙体、`0` 对象)。 - 修复后:**`548` 个独立图块帧**(9 页 PNG)、**`1,190` 个墙体/台阶/悬崖/战壕格**、**`417` 个对象**(包含 `134` 个带动画/贴图的燃烧火盆、火炬、投石车、拒马、宝箱及山克等预设事件点),14 条接缝处 48/48 瓦片 100% 吻合,缺失瓦片 `0`。 ### 2. Act 5 冰冻高地 (`111`) 与 亚瑞特高原 (`112`) - 修复 `pack-act-assets.ts` 中对 `Snow` 预设片的过早过滤,并在 `generateWilderness` 中按 `LevelId` 精确分配泥地防御工事 (`111`) 与雪地悬崖/峡谷/瑞resh Socket 祭坛 (`112`)。 - 冰冻高地与亚瑞特高原新增 `Act 5 - Barricade 1..4`(攻城塔楼与防线)、`Barricade Prison 1..3`(野蛮人战俘营)、红门入口 (`Abaddon` / `Pit of Acheron`)、传送点与废墟预设。 ### 3. Act 1 户外荒野地图 (`LevelId = 2..7` 鲜血荒地、冰冷之原、石块旷野等) - **泥土道路网 (`stampAct1DirtRoads`)**:复刻 `DRLGOUTDOORS_SpawnAct1DirtPaths`,自动铺设连接入口、中央十字路口、出口与地标建筑的 2 格宽蜿蜒泥土小径 (`style = 5, prop1 = 194`)。 - **内部石质围墙分割线 (`stampAct1InteriorStoneWalls`)**:复刻 Act 1 荒野标志性的横纵石墙 (`style = 2, prop1 = 129`) 与转角石柱 (`type = 3`),在道路穿过处自动留出拱门通道并同步碰撞阻挡。 - **荒野地标预设扩充**:加入邪恶洞穴入口 (`Act 1 - DOE Entrance`)、洞穴入口 (`Cave Entrance`)、石墙围栏 (`Fence Fill 1..6`) 及石质废墟 (`Act 1 - Ruin`)。
Author
Owner

已完成对 Acts 1–5 全部 136 张地图的系统性排查与修复(提交 6025650),并重新生成全部 66 个户外/特殊地图包:

1. Act 4 混沌避难所 (LevelId = 108 / 108-act-4-diablo-1)

  • 排查发现:因 DrlgType = 3 (wilderness) 且未实现十字圣殿拼接,原为 120×120 纯平地面(9 帧、0 墙、0 对象)。
  • 修复结果:新增 stampAct4ChaosSanctuary,精确拼接 Act 4 - Diablo Heart(中心五芒星)、Arm N/W/E/S(三大封印翼与南走廊)、Entry 与 Bridge 2。现含 458 个图块帧、459 格墙体、130 个可视对象(五大封印与五芒星齐全),缺失瓦片 0。

2. Act 3 热带雨林三图 (LevelId = 76, 77, 78 蜘蛛森林、庞大湿地、剥皮魔丛林)

  • 排查发现:原为 64×192 纯绿草地(12 帧、0 墙、0 对象)。
  • 修复结果:补全 Act 3 - Clearing 预制库并新增 stampAct3Jungle,按 2×6 的 32×32 区块拼装南北连接端(Jungle Head / Jungle Tail)、蜿蜒丛林河流(Riv*.ds1)与丛林空地地标(Webby 蜘蛛洞穴、Boggy 沼泽地洞、Pygmy 剥皮魔村落与吉得宾祭坛)。现含 499~613 个图块帧、2,002~2,360 格墙体/丛林河流、72~103 个对象,缺失瓦片 0。

3. Act 3 崔凡克 (83) 与 库拉斯特三城 (79, 80, 81)

  • 崔凡克 (83):修复 LvlPrest.txt 中 "Act 3 - Travincal N " 与 "Act 3 - Travincal S " 末尾空格导致的匹配遗漏,新增 stampAct3Travincal 完整拼装 6 大神殿区块(TravNW/N/NE/SW/S/SE)。对象数从 1 提升至 66 个可视对象(75 总对象),包含最高评议会主殿、克林姆的意志宝珠与憎恨的囚牢入口。
  • 库拉斯特下层 (79) / 商场 (80) / 上层 (81):按区域严格隔离 Slums / Burbs / Metro 边框,并配置内部 16×16 街区、残破神殿/废弃寺院等六大神殿入口、下水道入口与传送点,对象数从 1~3 提升至 45~71 个。

4. Act 2 沙漠六图 (41..46) & Act 5 冰冻苔原 (117)

  • Act 2 沙漠 (41..46):补齐石制古墓 (Tomb 1)、死亡之殿、绿洲水池 (Oasis 1..3)、蛆虫巢穴 (Lair 1)、古代通道 (Ruins Sewer)、利爪蝮蛇神殿 (Tomb 2 Viper1.ds1) 与塔拉夏七大古墓 cliff 入口。
  • Act 5 冰冻苔原 (117):补齐远古之路冰洞入口 (To Cave 32x16 Snow)、地狱深坑红门 (Hell Portal N)、雪地攻城塔楼与冰湖,图块帧提升至 405 帧、对象提升至 27/54 个。
已完成对 Acts 1–5 全部 136 张地图的系统性排查与修复(提交 `6025650`),并重新生成全部 66 个户外/特殊地图包: ### 1. Act 4 混沌避难所 (`LevelId = 108` / `108-act-4-diablo-1`) - **排查发现**:因 `DrlgType = 3` (`wilderness`) 且未实现十字圣殿拼接,原为 `120×120` 纯平地面(`9` 帧、`0` 墙、`0` 对象)。 - **修复结果**:新增 `stampAct4ChaosSanctuary`,精确拼接 `Act 4 - Diablo Heart`(中心五芒星)、`Arm N/W/E/S`(三大封印翼与南走廊)、`Entry` 与 `Bridge 2`。现含 **458 个图块帧、459 格墙体、130 个可视对象(五大封印与五芒星齐全)**,缺失瓦片 `0`。 ### 2. Act 3 热带雨林三图 (`LevelId = 76, 77, 78` 蜘蛛森林、庞大湿地、剥皮魔丛林) - **排查发现**:原为 `64×192` 纯绿草地(`12` 帧、`0` 墙、`0` 对象)。 - **修复结果**:补全 `Act 3 - Clearing` 预制库并新增 `stampAct3Jungle`,按 `2×6` 的 `32×32` 区块拼装南北连接端(`Jungle Head` / `Jungle Tail`)、蜿蜒丛林河流(`Riv*.ds1`)与丛林空地地标(`Webby` 蜘蛛洞穴、`Boggy` 沼泽地洞、`Pygmy` 剥皮魔村落与吉得宾祭坛)。现含 **499~613 个图块帧、2,002~2,360 格墙体/丛林河流、72~103 个对象**,缺失瓦片 `0`。 ### 3. Act 3 崔凡克 (`83`) 与 库拉斯特三城 (`79, 80, 81`) - **崔凡克 (`83`)**:修复 `LvlPrest.txt` 中 `"Act 3 - Travincal N "` 与 `"Act 3 - Travincal S "` 末尾空格导致的匹配遗漏,新增 `stampAct3Travincal` 完整拼装 6 大神殿区块(`TravNW/N/NE/SW/S/SE`)。对象数从 `1` 提升至 **66 个可视对象(75 总对象)**,包含最高评议会主殿、克林姆的意志宝珠与憎恨的囚牢入口。 - **库拉斯特下层 (`79`) / 商场 (`80`) / 上层 (`81`)**:按区域严格隔离 `Slums` / `Burbs` / `Metro` 边框,并配置内部 `16×16` 街区、残破神殿/废弃寺院等六大神殿入口、下水道入口与传送点,对象数从 `1~3` 提升至 **45~71 个**。 ### 4. Act 2 沙漠六图 (`41..46`) & Act 5 冰冻苔原 (`117`) - **Act 2 沙漠 (`41..46`)**:补齐石制古墓 (`Tomb 1`)、死亡之殿、绿洲水池 (`Oasis 1..3`)、蛆虫巢穴 (`Lair 1`)、古代通道 (`Ruins Sewer`)、利爪蝮蛇神殿 (`Tomb 2` `Viper1.ds1`) 与塔拉夏七大古墓 cliff 入口。 - **Act 5 冰冻苔原 (`117`)**:补齐远古之路冰洞入口 (`To Cave 32x16 Snow`)、地狱深坑红门 (`Hell Portal N`)、雪地攻城塔楼与冰湖,图块帧提升至 **405 帧**、对象提升至 **27/54 个**。
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#35
No description provided.