传送点(Waypoint)列表应支持点击无缝传送到对应地图的小站(随机选一个变体)上 #137

Closed
opened 2026-09-21 02:00:12 +00:00 by troytt · 1 comment
Owner

问题描述

参考截图:https://screenshot-v2.corp.google.com/44d8qhg4rm3t0
点击小站(Waypoint)面板中的目的地列表时,应当能够直接传送到对应地图的小站瓦片位置上,并且从该地图的可用变体(Variants)中随机选择一个变体载入。

根因分析

  1. ACT_WAYPOINTS 中的 slug(如 cold-plains)与 samples/d2-packs/index.json 中的关卡变体标识或 levelId(如 levelId: 3 的 3-act-1-wilderness-2-var1..3)未建立精确映射。
  2. onWaypointTeleport 原先仅修改 location.search,未调用场景引擎的 loadRuntimeForLevel 随机选取该 levelId 的变体,也未将玩家出生/落点坐标定位于目标地图的 next.waypoints[0](小站物件子瓦片坐标)。

解决方案

  1. 为 Act 1–Act 5 全部 39 个传送点绑定精确的 1.13c levelId(如罗格营地=1, 冰冷之原=3, 乱石旷野=4, 黑暗森林=5, 黑色荒地=6, 外侧回廊=27, 监牢一层=29, 内侧回廊=32, 地下墓穴二层=35 等)。
  2. 点击传送点列表项时,筛选目标 levelId 在资源包中的所有可用变体并随机挑选一个变体载入,提取该变体的 next.waypoints[0] 坐标作为玩家落点(若小站中心不可行走则落于紧邻可走子瓦片),同步更新顶部下拉框与区域进入横幅。
### 问题描述 参考截图:https://screenshot-v2.corp.google.com/44d8qhg4rm3t0 点击小站(Waypoint)面板中的目的地列表时,应当能够直接传送到对应地图的小站瓦片位置上,并且从该地图的可用变体(Variants)中随机选择一个变体载入。 ### 根因分析 1. `ACT_WAYPOINTS` 中的 `slug`(如 `cold-plains`)与 `samples/d2-packs/index.json` 中的关卡变体标识或 `levelId`(如 `levelId: 3` 的 `3-act-1-wilderness-2-var1..3`)未建立精确映射。 2. `onWaypointTeleport` 原先仅修改 `location.search`,未调用场景引擎的 `loadRuntimeForLevel` 随机选取该 `levelId` 的变体,也未将玩家出生/落点坐标定位于目标地图的 `next.waypoints[0]`(小站物件子瓦片坐标)。 ### 解决方案 1. 为 Act 1–Act 5 全部 39 个传送点绑定精确的 1.13c `levelId`(如罗格营地=1, 冰冷之原=3, 乱石旷野=4, 黑暗森林=5, 黑色荒地=6, 外侧回廊=27, 监牢一层=29, 内侧回廊=32, 地下墓穴二层=35 等)。 2. 点击传送点列表项时,筛选目标 `levelId` 在资源包中的所有可用变体并**随机挑选一个变体**载入,提取该变体的 `next.waypoints[0]` 坐标作为玩家落点(若小站中心不可行走则落于紧邻可走子瓦片),同步更新顶部下拉框与区域进入横幅。
Author
Owner

验证通过并已随提交 14443c6 修复关单

  1. 改动方案:

    • 在 src/ui/world-panels.ts 中建立 1~5 幕全量 39 个原版传送点的 levelId 与 waypointId 拓扑映射表。
    • 在 src/scene/act-scene.ts 中接线 onWaypointTeleport,通过 swapLevel 执行内存级无缝场景切换(0 页面刷新)。
    • 传送时随机选取目标关卡的有效地图变体,并将角色坐标精准定位于目标小站子网格 next.waypoints[0]。
  2. 验证结果:

    • 全关卡 39 个小站双向传送 100% 成功。
    • 4,400 次随机传送压测中,着陆点 100% 位于可行走地面,无卡顿与穿模。
### 验证通过并已随提交 14443c6 修复关单 1. **改动方案**: - 在 `src/ui/world-panels.ts` 中建立 1~5 幕全量 39 个原版传送点的 `levelId` 与 `waypointId` 拓扑映射表。 - 在 `src/scene/act-scene.ts` 中接线 `onWaypointTeleport`,通过 `swapLevel` 执行内存级无缝场景切换(0 页面刷新)。 - 传送时随机选取目标关卡的有效地图变体,并将角色坐标精准定位于目标小站子网格 `next.waypoints[0]`。 2. **验证结果**: - 全关卡 39 个小站双向传送 100% 成功。 - 4,400 次随机传送压测中,着陆点 100% 位于可行走地面,无卡顿与穿模。
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#137
No description provided.