한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › 只有部分人遇到的问题

时钟估算误差导致实体被搁置 Clock estimate error holds or discards entities

原因 ID pt-clock-hold · 主责 研发团队·客户端开发

在含图示和实验的完整版中打开此卡片 →

客户端估算的服务器时间不准时,刚到达的实体信息会被当成“还在未来”而搁置,或被当成“太旧”而丢弃。

起因 某一个客户端对服务器时间的估算偏差很大(在加载中测量、从省电状态恢复) → 结果 插值基准时间与实体信息的时间对不上 → 画面表现 实体出现得晚,或看起来停在原地不动

症状
隐身/幽灵实体, 一卡一卡
因素
延迟
谁会遇到
双开时只有一个客户端
何时出现
挂机一段时间后, 刚登录/维护结束后
负责方
主责 研发团队·客户端开发
研发团队要做的事
定期重新做时间同步,偏差大时立即重置,不使用加载中或刚从省电状态恢复时测得的值。
监控图上
仅部分偏高 · 各客户端的服务器时间估算误差
查看位置
在客户端记录估算的服务器时间、RTT、重新做时间同步的时刻,以及搁置或丢弃实体信息的次数。在刚加载完或刚从省电状态恢复时尝试复现
确认依据
只有出问题的客户端估算误差超过重置阈值(Unity 为 hardResetThresholdSec,默认 0.2 秒),有把实体信息当成未来而搁置、或当成过去而丢弃的记录,重新做时间同步后立即恢复正常
排除依据
估算误差很小却出现得晚,看“按连接分配的发送预算/优先级”或加载方面的原因
确认手段
需要游戏服务器/客户端的日志和指标

出处

  1. NetworkTimeSystem class (Netcode for GameObjects 2.5) Unity
    时间差超过 hardResetThresholdSec(默认 0.2 秒)时强制对齐,平时用 adjustmentRatio 一点点调快或调慢
  2. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    LocalTime 领先于服务器,ServerTime 落后于服务器。晚到的消息等待时间可能为负数

相关原因

同一层:只有部分人遇到的问题

其他层中同样导致“隐身/幽灵实体”的原因

查看含图示和实验的原卡片