[Parity][motion-input][S3][R] 主循环是可变步长:dt 截断到 100 ms,dtMs || 40,没有 25 Hz 固定逻辑步 #599

Closed
opened 2026-10-02 11:42:44 +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 公认行为。

来源审计项:motion-input#20 — [S3][R] 20. 主循环是可变步长:dt 截断到 100 ms,dtMs || 40,没有 25 Hz 固定逻辑步

  • 位置:main.ts:915-936;session/online-session.ts:1503-1508
  • 代码:const dtMs = Math.max(0, Math.min(100, nowMs - lastFrameMs));session.tick(dtMs || 40, nowMs)
  • 原版:游戏逻辑以 25 Hz 固定帧运行(D2_TICK_MS = 40,K-高),单位位置按帧离散步进。
  • 影响:掉帧或切到后台标签页时,超过 100 ms 的时间被直接丢弃,本地预测落后于服务器,触发重同步;两帧时间戳相同(dt = 0)时反而多算了 40 ms。
  • 建议:用固定 40 ms 的累加器驱动逻辑,渲染插值和它分开。
  • 已有 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 公认行为。 ### 来源审计项:`motion-input#20` — [S3][R] 20. 主循环是可变步长:dt 截断到 100 ms,`dtMs || 40`,没有 25 Hz 固定逻辑步 - 位置:`main.ts:915-936`;`session/online-session.ts:1503-1508` - 代码:`const dtMs = Math.max(0, Math.min(100, nowMs - lastFrameMs))`;`session.tick(dtMs || 40, nowMs)` - 原版:游戏逻辑以 25 Hz 固定帧运行(`D2_TICK_MS = 40`,K-高),单位位置按帧离散步进。 - 影响:掉帧或切到后台标签页时,超过 100 ms 的时间被直接丢弃,本地预测落后于服务器,触发重同步;两帧时间戳相同(dt = 0)时反而多算了 40 ms。 - 建议:用固定 40 ms 的累加器驱动逻辑,渲染插值和它分开。 - 已有 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#599
No description provided.