[渲染] DRLG 关卡使用 D2 实际选中的瓦片变体(需决定 pickVariant 规则) #502
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?
现象
第一幕 DRLG 移植后,关卡布局(房间、瓦片的 style / sequence / type / DT1 库、预设单位)与 D2MOO 逐格一致(
scene.json中fidelity: "layout")。但同一个 (style, sequence) 下有多个变体(DT1 rarity)时,渲染器仍用 SplitMix64pickVariant重新抽一次,而 D2 是在DRLGROOMTILE_GetTileCache里用房间种子抽的。所以像素层面仍与原版不同。烘焙时统计(3 个幕副本 × 8 关,和烘焙输入完全相同):
约 73% 的引用会被重新抽变体。按单元格的 DT1 掩码过滤后,跨库歧义为 0(整关一个库池时为 250 / 169 / 172),所以只差变体这一步。
建议
烘焙把 D2 实际选中的瓦片(库 + 索引,移植里已经有:
mapTiles阶段与 oracle 逐项一致)写进场景,渲染器对fidelity: "exact"的关卡直接用它,其余关卡照旧用pickVariant。需要先确认
项目规则要求瓦片变体用 SplitMix64
pickVariant(为了消除 45° 周期条纹)。D2 自己的选择来自房间种子,不会出现那种条纹。是否允许 DRLG 关卡改用 D2 的原始选择,需要维护者决定。验收
scripts/render-drlg-compare.ts目前让两份 dump 走同一个渲染器(同样用pickVariant),所以它的 XOR 为空只证明布局一致,不证明变体一致。验收需要:render-drlg-compare.ts加一种模式,按 dump 里 D2 实际选中的瓦片(mapTiles阶段的库和索引)渲染 D2MOO 的结果;