遊戲 Lag 白皮書 › 只有部分人遇到的問題
視野登錄順序錯亂 Interest-management race on enter/leave
原因 ID pt-aoi-race · 主要負責 遊戲開發團隊(伺服器開發)
在含圖解與實驗的完整版中開啟卡片 →
角色登錄到視野格狀(grid)的瞬間,與 NPC 換到其他格子的瞬間重疊時,該 NPC 的出現通知可能會漏掉。
為什麼 進場、換頻道、傳送的處理與 NPC 移動在同一瞬間重疊 → 於是 在「新進入視野的物件」計算中漏掉了那個 NPC → 畫面上 只有特定幾隻 NPC 看不見,或早已離開的 NPC 還留著
- 症狀
- 看不見/幽靈物件
- 因素
- 遺失
- 誰會遇到
- 同一台電腦只有其中一個用戶端, 只有我
- 何時
- 移動中/切換地圖時, 偶爾隨機發生
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發)
- 遊戲開發團隊要做的事
- 視野更新以單一執行緒、單一順序處理,並定期重新對齊整份「可見清單」。
- 圖表上
- 偶爾隨機飆高 · 伺服器可見清單與用戶端物件清單的差異數
- 查看位置
- 在伺服器上連同 tick 編號記錄視野格狀登錄、物件換格子、出現與消失通知的發送,並定期比較伺服器的「可見清單」與用戶端持有的清單
- 符合的跡象
- 漏掉的 NPC 在該角色進場或傳送處理的同一個 tick 換了格子,且沒有對該 NPC 發送出現通知的紀錄
- 不符合的跡象
- 出現通知有送、但用戶端沒收到或丟掉時,是傳遞環節的問題(剛進場時湧入的出現資訊遺失、載入中抵達的出現通知被丟棄)。總是同一隻 NPC 不見時,是相位或顯示選項不同
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- Replication Graph in Unreal Engine Epic Games
MMORPG 等把世界切成格狀,每個格子有一份 actor 清單,並以用戶端所在的格子為準傳送 - Actor Relevancy in Unreal Engine Epic Games
相關性依每條連線判斷,不再相關的 actor 會從用戶端刪除
相關原因
同一層:只有部分人遇到的問題
同一症狀(看不見/幽靈物件)在其他層的原因
查看含圖解與實驗的完整版卡片