遊戲 Lag 白皮書 › L9 伺服器遊戲程式
進入密集區域時的生成暴增 Spawn burst when entering a crowd
原因 ID sp-spawn-burst · 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
在含圖解與實驗的完整版中開啟卡片 →
用傳送移動到擠滿人的城鎮時,伺服器必須一次送出數百位新進入視野者的外觀、裝備與狀態。
為什麼 因傳送移動、登入或切換頻道,突然出現在人多的地方 → 於是 伺服器一次產生並送出數百人份的完整資訊,自己的電腦也要一次載入 → 畫面上 剛抵達時畫面短暫停住,角色一個一個慢慢出現,輸入也有延遲
- 症狀
- 定格, 輸入延遲, 快轉
- 因素
- 停滯, 延遲
- 誰會遇到
- 只有我, 特定地點/頻道
- 何時
- 移動中/切換地圖時, 剛登入/維護剛結束
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
- 遊戲開發團隊要做的事
- 伺服器:依距離由近到遠分成多個 tick 送出、快取外觀資訊。用戶端:在讀取畫面期間預先接收,把收到的角色分散到多個畫格生成。
- 數值參考
- 一個人的外觀、裝備、buff 資訊若為 300 位元組,500 人就約 150KB。相當於平常一個 tick 傳送量(數 KB)的數十倍在一瞬間湧入。
- 圖表上
- 剛開服或維護結束後暴增 · 每條連線的傳送位元組數、用戶端畫格時間
- 查看位置
- 抵達人多的地方後幾秒內,透過該連線送出的位元組數與封包數(伺服器 log),以及用戶端畫格時間(net graph、用戶端 log)
- 符合的跡象
- 剛抵達時該連線的傳送量衝到平常一個 tick 的數十倍後回落,同一時間用戶端畫格時間也飆高
- 不符合的跡象
- 移動到人少的地方也一樣停住時,是切換 zone(跨伺服器轉移)或用戶端載入
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- Detailed Actor Replication Flow in Unreal Engine Epic Games
第一次開啟 actor channel 時會一併送出初始位置、旋轉等資訊,連線飽和時其餘 actor 延到下一個 tick - Actor Priority in Unreal Engine Epic Games
依距離與視線方向設定優先順序,從近處且看得到的 actor 先送
相關原因
同一層:L9 伺服器遊戲程式
同一症狀(定格)在其他層的原因
查看含圖解與實驗的完整版卡片