遊戲 Lag 白皮書 › 只有部分人遇到的問題
載入中抵達的出現通知被丟棄 Spawn messages dropped before the client is ready
原因 ID pt-loading-drop · 主要負責 遊戲開發團隊(用戶端開發) · 協同 遊戲開發團隊(伺服器開發)
在含圖解與實驗的完整版中開啟卡片 →
一進入 zone,伺服器就送出周圍 NPC 的出現通知,但用戶端還在載入地圖,於是把通知丟掉。
為什麼 伺服器在進場處理後立即送出周圍物件的出現通知 → 於是 用戶端正在載入,訊息處理常式(handler)還沒準備好,於是丟棄通知 → 畫面上 伺服器當作已經送過,不會再送。在 NPC 離開視野再回來之前都看不見
- 症狀
- 看不見/幽靈物件
- 因素
- 遺失
- 誰會遇到
- 同一台電腦只有其中一個用戶端, 只有我
- 何時
- 剛登入/維護剛結束, 移動中/切換地圖時
- 負責單位
- 主要負責 遊戲開發團隊(用戶端開發) · 協同 遊戲開發團隊(伺服器開發)
- 遊戲開發團隊要做的事
- 用戶端:載入結束後送出「準備完成」,或把載入中收到的封包先保存起來再處理。伺服器:收到「準備完成」後才傳送周圍資訊。
- 數值參考
- 同一台電腦上兩個用戶端同時載入,或正在載入的那一邊是背景視窗時,CPU 與磁碟要分著用,處理也受到限制,那一邊的載入可能拉長好幾倍。伺服器的進場處理變快時,也會讓同一個 bug 浮現。
- 圖表上
- 只有部分偏高 · 各用戶端的載入時間、載入中丟棄的訊息數
- 查看位置
- 把用戶端在載入中收到並丟棄的訊息數量與種類、載入完成時間,與伺服器送出出現通知的時間比較。在同一台電腦上讓兩個用戶端同時載入,或把正在載入的那一邊放到背景視窗,就容易重現
- 符合的跡象
- 看不見的 NPC 的出現通知伺服器有送,抵達時間在載入完成之前,且那段時間丟棄的訊息數增加。只發生在載入較久的那個用戶端
- 不符合的跡象
- 出現通知在載入完成後才抵達卻仍看不見時,是基準快照遺失或物件 ID 重複使用造成誤認。伺服器根本沒送該 NPC 的通知時,是視野登錄順序錯亂或頻道、實例、相位不同
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- NetworkConfig class (Netcode for GameObjects 2.5) Unity
SpawnTimeout:尚未生成之物件的訊息會先保留,在時限內沒有生成就丟棄 - Actor Relevancy in Unreal Engine Epic Games
不再相關的 actor 會從用戶端刪除,再次相關時重新複製
相關原因
同一層:只有部分人遇到的問題
同一症狀(看不見/幽靈物件)在其他層的原因
查看含圖解與實驗的完整版卡片