遊戲 Lag 白皮書 › 同步設計
主機(房主)架構 Listen server / host advantage
原因 ID sy-host · 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發), 基礎設施團隊(伺服器基礎設施)
在含圖解與實驗的完整版中開啟卡片 →
由某個玩家的電腦擔任伺服器時,那個人的線路與電腦效能決定了所有人的體感。
為什麼 房主的電腦擔任伺服器(P2P、listen server) → 於是 房主的線路或電腦慢時會影響所有人,房主本人 ping 為 0 → 畫面上 只有房主占優勢,房主離開時所有人定格、斷線
- 症狀
- 卡頓, 定格, 斷線
- 因素
- 延遲, 停滯
- 誰會遇到
- 特定地點/頻道
- 何時
- 偶爾隨機發生
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發), 基礎設施團隊(伺服器基礎設施)
- 遊戲開發團隊要做的事
- 伺服器:改用負責判定的專用伺服器;在那之前,配對時選線路與電腦較好的人當房主。用戶端:支援主機轉移(migration),配對時測量與其他參與者之間的 ping、上傳速度與電腦效能並回傳。
- 基礎設施團隊要做的事
- 準備專用伺服器用的伺服器設備與執行個體,部署在玩家多的地區附近。
- 圖表上
- 只有部分偏高 · 各房主的 lag 回報、斷線次數
- 查看位置
- 在對戰 log 記錄房主(主機)的上傳速度、各參與者與房主之間的 RTT、房主電腦的畫格時間、房主離開的時間,並把 lag 與斷線回報依房主分組來看。玩家也可以讓同一批人只換房主再玩一次來確認
- 符合的跡象
- lag 與斷線集中在特定房主的房間,該房主上傳速度低或畫格時間長時所有參與者一起變差;沒有主機轉移時,房主離開的瞬間所有人都斷線
- 不符合的跡象
- 與房主無關、只有同一地區的參與者變差時,是線路或路由問題。若是專用伺服器架構,就不是這個原因
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- Networking Overview for Unreal Engine Epic Games
listen server 的主機比其他用戶端有利,而且同時負責伺服器與渲染,負載很大 - Distributed authority topologies (Netcode for GameObjects 2.5) Unity
session 擁有者離開時,自動從剩下的用戶端中選出新的擁有者 - A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games (ACM Computing Surveys, 2022) ACM
P2P 遊戲也可以看成由主機兼任伺服器的用戶端-伺服器架構
相關原因
同一層:同步設計
同一症狀(卡頓)在其他層的原因
查看含圖解與實驗的完整版卡片