遊戲 Lag 白皮書 › 只有部分人遇到的問題
時鐘推估誤差導致物件暫緩顯示 Clock estimate error holds or discards entities
原因 ID pt-clock-hold · 主要負責 遊戲開發團隊(用戶端開發)
在含圖解與實驗的完整版中開啟卡片 →
用戶端推估的伺服器時間有誤時,會把剛抵達的物件資訊當成「還在未來」而暫緩,或當成「太舊」而丟棄。
為什麼 某一個用戶端的伺服器時間推估大幅偏差(在載入中測量、從省電喚醒) → 於是 內插的基準時間與物件資訊的時間對不上 → 畫面上 物件很晚才出現,或看起來停住不動
- 症狀
- 看不見/幽靈物件, 卡頓
- 因素
- 延遲
- 誰會遇到
- 同一台電腦只有其中一個用戶端
- 何時
- 閒置一段時間後, 剛登入/維護剛結束
- 負責單位
- 主要負責 遊戲開發團隊(用戶端開發)
- 遊戲開發團隊要做的事
- 定期重新做時間同步,差距大時立即重設,不採用在載入中或剛從省電喚醒時測到的值。
- 圖表上
- 只有部分偏高 · 各用戶端的伺服器時間推估誤差
- 查看位置
- 在用戶端記錄推估的伺服器時間、RTT、重新做時間同步的時間、暫緩或丟棄物件資訊的次數。在剛載入完或剛從省電喚醒時嘗試重現
- 符合的跡象
- 只有出問題的用戶端推估誤差超過重設門檻(Unity 為 hardResetThresholdSec,預設 0.2 秒),且有把物件資訊當成未來而暫緩、當成過去而丟棄的紀錄,重新做時間同步後立即恢復正常
- 不符合的跡象
- 推估誤差很小卻很晚出現時,是各連線的傳送預算與優先順序或載入方面的原因
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- NetworkTimeSystem class (Netcode for GameObjects 2.5) Unity
時間差超過 hardResetThresholdSec(預設 0.2 秒)時強制對齊,平時用 adjustmentRatio 一點一點調快或調慢 - NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
LocalTime 領先伺服器,ServerTime 落後。晚到的訊息,等待時間可能為負值
相關原因
同一層:只有部分人遇到的問題
同一症狀(看不見/幽靈物件)在其他層的原因
查看含圖解與實驗的完整版卡片