遊戲 Lag 白皮書 › 只有部分人遇到的問題
頻道、實例、相位不同 Different channel / instance / phase
原因 ID pt-phase · 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
在含圖解與實驗的完整版中開啟卡片 →
兩個角色在不同的頻道或實例(instance),或處在依任務進度決定能看到哪些 NPC 的不同「相位」時,看到的是不同的世界。
為什麼 第二個角色被分配到其他頻道,或任務階段不同 → 於是 伺服器不會把該 NPC 送給那個角色(正常) → 畫面上 只有一邊沒有 NPC。看起來像 bug,但符合設計
- 症狀
- 看不見/幽靈物件
- 因素
- 遺失
- 誰會遇到
- 同一台電腦只有其中一個用戶端, 只有我
- 何時
- 一直都有, 剛登入/維護剛結束
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
- 遊戲開發團隊要做的事
- 伺服器:把頻道、相位資訊送給用戶端,在 QA 檢查清單加入「確認兩個角色的頻道與任務階段」。用戶端:在畫面上顯示頻道與相位。
- 圖表上
- 只有部分偏高 · 各用戶端周圍的物件數、頻道與相位
- 查看位置
- 在遊戲畫面比較兩個角色的頻道編號與該任務的進行階段,調成相同的頻道與階段後再看一次。有伺服器物件傳送 log 的話,確認沒有把那個 NPC 送給該角色的原因(頻道、相位)
- 符合的跡象
- 兩個角色的頻道或任務階段不同,調成相同後就看得到 NPC
- 不符合的跡象
- 頻道與階段都相同、仍只有一邊沒有時,要查載入中抵達的出現通知被丟棄、剛進場時湧入的出現資訊遺失、視野登錄順序錯亂
- 確認方式
- 在玩家端環境確認
- 深入了解
- 也要確認任務進度是以帳號為單位還是以角色為單位儲存。同一帳號的兩個角色,一邊的進度可能會改變另一邊的相位。
出處
- Actor Relevancy in Unreal Engine Epic Games
伺服器對每條連線只複製相關(relevant)的 actor,不相關的 actor 不傳送 - Object visibility (Netcode for GameObjects 2.5) Unity
以 CheckObjectVisibility 決定每個用戶端看得到的物件,隱藏的物件不會傳送給該用戶端
相關原因
同一層:只有部分人遇到的問題
同一症狀(看不見/幽靈物件)在其他層的原因
查看含圖解與實驗的完整版卡片