feat(map-gen/wilderness): 野外底土地表由单一瓦片平铺升级为基于 dwDt1Mask 的多 DT1 动态权重混合 #52

Closed
opened 2026-09-17 05:20:41 +00:00 by troytt · 1 comment
Owner

背景与现状

在 src/game/wilderness.ts:481 中,fillGround 使用单一的 groundTile 将整张画布铺满完全相同的地砖。

暗黑2原版逻辑(Oracle / Ground Truth)

  • 原版室外初始化时设置 0x40002 底板逻辑标记。
  • 在实际渲染/烘焙前,由 DRLGROOMTILE_GetTileCache 依据关卡所配置的 dwDt1Mask(如第一幕野外激活 5 个 DT1 库),按各瓦片的 RarityFrameIndex 权重进行随机抽取,将纯草地、碎石地、杂草地自然混合平铺。

差异点与缺陷表现

  • 当前 TS 野外地图地面纹理极度均一单调,缺乏原版丰富的地表斑驳质感。

解决建议与改造方案

  1. 在 fillGround 中读取关卡 dwDt1Mask 对应的所有可用地面瓦片。
  2. 依据各瓦片的 RarityFrameIndex 权重进行加权随机分布,实现地表的自然混合平铺。
## 背景与现状 在 `src/game/wilderness.ts:481` 中,`fillGround` 使用单一的 `groundTile` 将整张画布铺满完全相同的地砖。 ## 暗黑2原版逻辑(Oracle / Ground Truth) - 原版室外初始化时设置 `0x40002` 底板逻辑标记。 - 在实际渲染/烘焙前,由 `DRLGROOMTILE_GetTileCache` 依据关卡所配置的 `dwDt1Mask`(如第一幕野外激活 5 个 DT1 库),按各瓦片的 `RarityFrameIndex` 权重进行随机抽取,将纯草地、碎石地、杂草地自然混合平铺。 ## 差异点与缺陷表现 - 当前 TS 野外地图地面纹理极度均一单调,缺乏原版丰富的地表斑驳质感。 ## 解决建议与改造方案 1. 在 `fillGround` 中读取关卡 `dwDt1Mask` 对应的所有可用地面瓦片。 2. 依据各瓦片的 `RarityFrameIndex` 权重进行加权随机分布,实现地表的自然混合平铺。
Author
Owner

修复完成并验证通过

  • 关联分支: fix/issue-52
  • 提交记录: 12588ea9488f6336402084e872c517ad81c4c568
  • 核心改动:
    1. 实现了基于 dwDt1Mask 与 rarityFrameIndex 权重的多 DT1 地表瓦片动态混合流水线;
    2. 支持 CDF 抽样与 2D 空间平滑 Hermite 噪声采样,实现地表瓦片的自然平滑渐变与地貌混叠;
    3. 保留单瓦片/缺省状态下的 100% 快速回退路径,保证向后兼容性;
    4. 新增 tests/wilderness-ground-blend.test.ts(17/17 项单测全绿),全量 647 项测试无回归,npx tsc --noEmit 0 报错。
### 修复完成并验证通过 - **关联分支**: `fix/issue-52` - **提交记录**: `12588ea9488f6336402084e872c517ad81c4c568` - **核心改动**: 1. 实现了基于 `dwDt1Mask` 与 `rarityFrameIndex` 权重的多 DT1 地表瓦片动态混合流水线; 2. 支持 CDF 抽样与 2D 空间平滑 Hermite 噪声采样,实现地表瓦片的自然平滑渐变与地貌混叠; 3. 保留单瓦片/缺省状态下的 100% 快速回退路径,保证向后兼容性; 4. 新增 `tests/wilderness-ground-blend.test.ts`(17/17 项单测全绿),全量 647 项测试无回归,`npx tsc --noEmit` 0 报错。
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#52
No description provided.