[M20-P6] 完成 Act II–V 全 136 关卡 DRLG 1:1 移植与运行时按种子生成 #514
Labels
No Label
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: troytt/diablo2-web#514
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景与目标
将 D2MOO (
D2Common.dll1.13c) 的 DRLG 1:1 移植从目前的 Act I 户外关卡扩展到全游戏五幕全部 136 个关卡(户外、迷宫、预设),并在客户端运行时根据 D2GS0x03 D2GS_LOADACT的mapId种子实时生成与服务端逐格、逐瓦片变体一致的地图。前置与关联 Issue
DRLGROOMTILE_GetTileCache按房间种子 + rarity 抽取)。核心内容与 1.13c Ground Truth 对标 (
D2Common/src/Drlg/)DRLG_AllocDrlg全五幕种子链补齐 (drlg-drlg.ts):src/game/drlg/drlg-drlg.ts对nActNo != 0的报错限制。nStaffTombLevel、nBossTombLevel)与 Act III 丛林互连标志(bJungleInterlink)的SEED_RollRandomNumber(pDrlg->pSeed)调用顺序,保证后续关卡种子与D2Common.dll严格一致。DrlgMaze.cpp) 与 Preset (DrlgPreset.cpp) 统一走 1:1 移植路径:src/game/drlg/,移除近似生成器与伪造门朝向逻辑。DRLGROOMTILE_GetTileCache选出的真实瓦片库与变体索引,确保子格碰撞掩码(pRoomCoords5×5 subtile collision)与服务端完全一致。tools/d2moo-oracle与scripts/drlg-diff.ts扩展支持全部 136 关卡(含 Act I–V 城镇、户外、迷宫、预设)。(act, mapId, difficulty)生成关卡,单帧主线程卡顿 < 4ms。验收标准
npx tsx scripts/drlg-diff.ts对全部 136 关卡 × 32 种子 × 3 难度在act → levelGrid → rooms → maps → activation → mapTiles全阶段 0 差异。0x07 D2GS_MAPREVEAL房间坐标 100% 命中本地 DRLG 房间。