[Parity][render][S1][R][H] 传送门:时间轴用页面相对时间;红门(PP)画成蓝门;参数写死 #608

Closed
opened 2026-10-02 11:42:46 +00:00 by troytt · 0 comments
Owner

1.13c 客户端保真度审计立项(基准快照:7bd1090 / main @ 77a20c7)

证据标记说明:V-data = 1.13c MPQ 数据表 (.txt / animdata.d2 / .tbl / pal.pl2);V-src = D2MOO 逆向源码;V-bin = 1.13c DLL 反汇编;K = 1.13c 公认行为。

来源审计项:render#7 — [S1][R][H] 传送门:时间轴用页面相对时间;红门(PP)画成蓝门;参数写死

  • 位置:src/client/scene/world-renderer.ts:799-803;src/client/scene/missile-overlay-renderer.ts:468-520(drawTownPortal)
  • 代码:
    drawTownPortal(renderer, unit.worldX, unit.worldY, nowMs, ctx.overlayArtMap)   // 传入的是全局 nowMs,不是传送门出生后经过的时间
    const frameDurationMs = 51.2 // 1000 / (25 * 200 / 256)
    const isOpening = elapsedMs < openDurationMs                                    // 768 ms
    
  • 原版:V-data objects.txt #59 Portal Token TP:FrameCnt1 15(OP)、FrameCnt2 15(ON,CycleAnim2 1)、FrameDelta 200、Sync 0(速度带随机,见上条 Units.cpp 公式)、RGB 120,120,255、Flicker 1;#60 Portal Token PP:RGB 255,120,120、Sync 1。OP 在门出生(模式切到 OP)时开始播放。
  • 影响:
    • elapsedMs 实际上是页面加载以来的 performance.now(),所以只有页面打开后的前 768 ms 内出现的门能看到开门动画;之后所有门一出现就直接是 ON 循环,而且所有门同相位。
    • classId 60(PP,objects.txt 光色 255,120,120 的红门;奶牛关等红门是否都用它为 K-中)被画成蓝色 TP。
    • 15 帧 / 51.2 ms 恰好与数据表数值一致,但绕过了数据表(H-b)。
    • TR 层固定 normal、HD 层固定 additive,art 名 town_portal_* 不是 overlay.txt 的行,层混合方式也没有来源。
    • 没有门的光源(见光源条)。
  • 建议:作为普通物体走 objects.txt 路径(TP/PP 各自的 DCC token 与模式),用上一条修好的物体计时器;光照按 Lit / RGB / Flicker 处理。
  • 已有 issue:—
> **1.13c 客户端保真度审计立项**(基准快照:`7bd1090` / `main @ 77a20c7`) > 证据标记说明:`V-data` = 1.13c MPQ 数据表 (`.txt` / `animdata.d2` / `.tbl` / `pal.pl2`);`V-src` = D2MOO 逆向源码;`V-bin` = 1.13c DLL 反汇编;`K` = 1.13c 公认行为。 ### 来源审计项:`render#7` — [S1][R][H] 传送门:时间轴用页面相对时间;红门(PP)画成蓝门;参数写死 - 位置:`src/client/scene/world-renderer.ts:799-803`;`src/client/scene/missile-overlay-renderer.ts:468-520`(`drawTownPortal`) - 代码: ```ts drawTownPortal(renderer, unit.worldX, unit.worldY, nowMs, ctx.overlayArtMap) // 传入的是全局 nowMs,不是传送门出生后经过的时间 const frameDurationMs = 51.2 // 1000 / (25 * 200 / 256) const isOpening = elapsedMs < openDurationMs // 768 ms ``` - 原版:V-data `objects.txt` #59 Portal Token TP:FrameCnt1 15(OP)、FrameCnt2 15(ON,CycleAnim2 1)、FrameDelta 200、Sync 0(速度带随机,见上条 Units.cpp 公式)、RGB 120,120,255、Flicker 1;#60 Portal Token **PP**:RGB **255,120,120**、Sync 1。OP 在门出生(模式切到 OP)时开始播放。 - 影响: - `elapsedMs` 实际上是页面加载以来的 `performance.now()`,所以只有页面打开后的前 768 ms 内出现的门能看到开门动画;之后所有门一出现就直接是 ON 循环,而且所有门同相位。 - classId 60(PP,objects.txt 光色 255,120,120 的红门;奶牛关等红门是否都用它为 K-中)被画成蓝色 TP。 - 15 帧 / 51.2 ms 恰好与数据表数值一致,但绕过了数据表(H-b)。 - TR 层固定 normal、HD 层固定 additive,art 名 `town_portal_*` 不是 overlay.txt 的行,层混合方式也没有来源。 - 没有门的光源(见光源条)。 - 建议:作为普通物体走 objects.txt 路径(TP/PP 各自的 DCC token 与模式),用上一条修好的物体计时器;光照按 Lit / RGB / Flicker 处理。 - 已有 issue:—
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#608
No description provided.