feat(renderer/map): 支持 DT1 动态动画瓦片(Animated Tiles)循环播放 #43

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

背景与现状

在暗黑2的城镇与固定地图中,包含大量动态水面波纹、燃烧的火把与火盆、翻滚的岩浆、喷泉等动态地貌。

当前 src/game/d2map.ts 和离线烘焙管线中,仅将 DT1 瓦片提取为单帧静态的 SpriteFrame 并合入纹理图集。游戏运行时,场景中的水体、火把、岩浆等呈现完全静止的状态。

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

  • DT1 格式规范中,同一 style:sequence 下具有多个帧(Frame),且瓦片的 RarityFrameIndex 带有动画标记及帧延迟配置。
  • 游戏主循环按游戏 Tick 推进动画帧索引,实现水流涌动、火光闪烁等动态视觉效果。

解决建议与改造方案

  1. 在 src/formats/dt1.ts 中解析多帧瓦片的动画序列属性及帧切换速率。
  2. 在 src/render/renderer.ts 与着色器中支持按游戏 Tick 推进瓦片帧索引,或利用 GPU Uniform / 纹理数组动态循环播放动画瓦片。
## 背景与现状 在暗黑2的城镇与固定地图中,包含大量动态水面波纹、燃烧的火把与火盆、翻滚的岩浆、喷泉等动态地貌。 当前 `src/game/d2map.ts` 和离线烘焙管线中,仅将 DT1 瓦片提取为单帧静态的 `SpriteFrame` 并合入纹理图集。游戏运行时,场景中的水体、火把、岩浆等呈现完全静止的状态。 ## 暗黑2原版逻辑(Oracle / Ground Truth) - DT1 格式规范中,同一 `style:sequence` 下具有多个帧(Frame),且瓦片的 `RarityFrameIndex` 带有动画标记及帧延迟配置。 - 游戏主循环按游戏 Tick 推进动画帧索引,实现水流涌动、火光闪烁等动态视觉效果。 ## 解决建议与改造方案 1. 在 `src/formats/dt1.ts` 中解析多帧瓦片的动画序列属性及帧切换速率。 2. 在 `src/render/renderer.ts` 与着色器中支持按游戏 Tick 推进瓦片帧索引,或利用 GPU Uniform / 纹理数组动态循环播放动画瓦片。
Author
Owner

已在分支 fix/issue-43 中真实修复并验证通过。

Commit: c56b808
验证项:

  • 12/12 单元测试通过 (tests/animated-tiles.test.ts)
  • TypeScript 类型检查通过 (npx tsc --noEmit)
  • 生产包构建成功 (npm run build)
  • 全量 35 个测试套件 647 测试全绿
已在分支 `fix/issue-43` 中真实修复并验证通过。 Commit: `c56b808` 验证项: - 12/12 单元测试通过 (`tests/animated-tiles.test.ts`) - TypeScript 类型检查通过 (`npx tsc --noEmit`) - 生产包构建成功 (`npm run build`) - 全量 35 个测试套件 647 测试全绿
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#43
No description provided.