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

遊戲 Lag 白皮書 › 同步設計

用戶端權威 Client-authoritative results

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

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

各自決定自己的結果時,自己的畫面很順暢,但結果會與其他人的畫面不一致,也容易被外掛利用。

為什麼 位置、命中由用戶端決定,伺服器只負責轉送 → 於是 兩個人都聲稱自己先打中,伺服器無法驗證 → 畫面上 對手瞬移、穿牆,「我明明打中卻沒中」

症狀
瞬移, 吃指令/回檔
因素
延遲
誰會遇到
整個伺服器
何時
一直都有
負責單位
主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
遊戲開發團隊要做的事
伺服器:重要的結果(命中等)由伺服器自行驗證,移動要檢查速度與距離。用戶端:收到伺服器拒絕或校正的結果時,改回伺服器給的值。
圖表上
一開始就一直偏高 · 不可能的移動速度、互相矛盾的命中回報數
查看位置
在伺服器端原樣記錄用戶端回報的位置與命中,用連續的位置回報計算移動速度,統計超過最大速度的回報,以及兩人都說自己先打中的回報
符合的跡象
伺服器未經驗證就把回報轉送給其他用戶端,不可能的速度或互相矛盾的命中回報持續出現,與更新、地區無關
不符合的跡象
伺服器自行計算或驗證結果時,就不是這個原因。這時的瞬移要查封包遺失或內插緩衝
確認方式
需要遊戲伺服器/用戶端的 log 與指標

出處

  1. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization (Yahn W. Bernier, GDC 2001) Valve
    由用戶端回報結果的方式,只有在用戶端可信時才可行。因為擔心外掛而採用權威伺服器
  2. Peeking into VALORANT's Netcode Riot Games
    伺服器權威模型:伺服器絕不信任用戶端看到的遊戲狀態
  3. Distributed authority topologies (Netcode for GameObjects 2.5) Unity
    把權限分給用戶端會讓作弊變容易,也不再有一個掌管所有物件的單一模擬

相關原因

同一層:同步設計

同一症狀(瞬移)在其他層的原因

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