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

遊戲 Lag 白皮書 › 只有部分人遇到的問題

各連線的傳送預算與優先順序 Per-connection bandwidth budget and priority

原因 ID pt-priority · 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)

在含圖解與實驗的完整版中開啟卡片 →

伺服器對每條連線的傳送量設上限、從近的開始送時,上限被設得較低的那一邊,會較晚收到或收不到遠處的 NPC。

為什麼 在人多的地方,伺服器在每條連線的傳送量上限內依重要度依序傳送 → 於是 頻寬推估偏低的連線(例:因為是背景視窗而接收確認較慢的那一邊),會一直延後後段的物件 → 畫面上 遠處的 NPC 只在一邊較晚出現或看不見

症狀
看不見/幽靈物件, 輸入延遲
因素
延遲
誰會遇到
同一台電腦只有其中一個用戶端, 特定地點/頻道
何時
人潮湧入時
負責單位
主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
遊戲開發團隊要做的事
伺服器:被延後的物件隨時間提高優先順序,避免一直輪不到(starvation),並保證最低更新週期。用戶端:在背景也及時送出接收確認,避免頻寬推估降低。
圖表上
隨人數/負載上升 · 各連線延後的物件數、各連線的傳送量
查看位置
在伺服器上依連線記錄每個 tick 的傳送位元組、傳送上限(推估頻寬)、沒送出而延後的物件數、各物件距離上次傳送經過的時間。Unreal 可在 Networking Insights 查看各連線的封包大小與其中包含的複製物件
符合的跡象
看不見的 NPC 是在那條連線上被延後很久的物件,該連線的上限低於其他連線,且越擁擠延後的物件越多
不符合的跡象
沒有延後的物件、那個 NPC 也及時送出時,問題在傳送之後的環節(接收緩衝區、載入、顯示選項)。所有連線都頂到上限時,是整個伺服器的傳送量或視野設計問題
確認方式
需要遊戲伺服器/用戶端的 log 與指標

出處

  1. Actor Priority in Unreal Engine Epic Games
    頻寬飽和時,依優先順序(距離、視線、上次複製後經過的時間)挑選要複製的 actor。所有 actor 不一定每次都會被複製
  2. State Synchronization Gaffer On Games
    優先順序累積:這次沒放進封包的物件會優先放進下一個封包,頻寬上限即時調整
  3. Networking Insights in Unreal Engine Epic Games
    顯示各連線收發封包的大小,以及其中包含的複製物件與屬性

相關原因

同一層:只有部分人遇到的問題

同一症狀(看不見/幽靈物件)在其他層的原因

查看含圖解與實驗的完整版卡片