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

遊戲 Lag 白皮書 › 同步設計

延遲補償過度 Excessive lag compensation

原因 ID sy-lagcomp-overreach · 主要負責 遊戲開發團隊(伺服器開發)

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

以攻擊者為準回溯得太遠時,被打的一方明明已經躲好了還是會中彈。

為什麼 為了 ping 高的攻擊者,伺服器大幅回溯後判定 → 於是 在被打的人的畫面上,早已躲進掩體 → 畫面上 「躲在牆後還被打中」,ping 高的人占優勢

症狀
吃指令/回檔
因素
延遲
誰會遇到
只有我, 特定地區/電信業者
何時
做特定動作時
負責單位
主要負責 遊戲開發團隊(伺服器開發)
遊戲開發團隊要做的事
設定回溯上限(例:200~250ms),ping 比這更高的攻擊者只回溯到上限,其餘由攻擊者自己預留提前量。
圖表上
只有部分偏高 · 每次命中的回溯時間(依攻擊者 ping)
查看位置
在伺服器判定 log 中為每次命中記錄回溯時間、攻擊者 RTT、被打方進入掩體的伺服器時間。在開發版本把回溯後的判定框畫到畫面上(Source 引擎為 sv_showlagcompensation)
符合的跡象
「躲在牆後還被打中」回報中的命中集中在回溯時間長的攻擊者,且回溯時間沒有上限、隨攻擊者 ping 增加
不符合的跡象
回溯時間短的命中也出現牆後中彈時,是判定框或碰撞檢測的問題。被打方 ping 高時,是那個人的移動太晚抵達伺服器造成的
確認方式
需要遊戲伺服器/用戶端的 log 與指標
深入了解
回溯判定是「射擊者優先」。也有人提出例外做法:被打的一方在自己畫面上已經進入安全處時就不回溯,也就是「被打者優先」。

出處

  1. Peeking into VALORANT's Netcode Riot Games
    回溯沒有上限時,延遲 500ms 的人在對方躲進掩體 0.5 秒後仍能打中,因此設定上限
  2. A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games (ACM Computing Surveys, 2022) ACM
    「躲到轉角後還被打中(shot around the corner)」現象、商用 FPS 的回溯上限,並提出被打方安全時不回溯的技術
  3. Source SDK 2013: player_lagcompensation.cpp Valve
    Source 引擎的回溯上限 sv_maxunlag 預設 1 秒(最大 1 秒),sv_showlagcompensation 會在畫面上顯示回溯後的判定框

相關原因

同一層:同步設計

同一症狀(吃指令/回檔)在其他層的原因

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