遊戲 Lag 白皮書 › 只有部分人遇到的問題
集中在特定電信業者玩家的驗證誤判 Anti-cheat / movement validation false positives on bad ISPs
原因 ID pt-isp-validation · 主要負責 遊戲開發團隊(伺服器開發) · 協同 基礎設施團隊(網路基礎設施)
在含圖解與實驗的完整版中開啟卡片 →
線路抖動大的人,輸入會成批抵達,因此常被伺服器的速度、冷卻檢查攔下。
為什麼 特定電信業者、地區線路的抖動在晚間變大 → 於是 伺服器把成批抵達的正常輸入判定為加速或違反冷卻 → 畫面上 只有該電信業者的玩家出現拉回、技能被拒,嚴重時被伺服器踢出而斷線
- 症狀
- 拉回, 吃指令/回檔, 斷線
- 因素
- 抖動
- 誰會遇到
- 特定地區/電信業者, 只有我
- 何時
- 晚間尖峰時段, 移動中/切換地圖時
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發) · 協同 基礎設施團隊(網路基礎設施)
- 遊戲開發團隊要做的事
- 檢查改用數秒內的累積容許量,參考線路狀態(ping、抖動)放寬標準,強制斷線前先有警告階段,並用每位玩家各自的輸入緩衝把成批湧入的輸入平均分配到各 tick,從根本減少誤判。
- 基礎設施團隊要做的事
- 依時段確認各電信業者的遺失率與抖動分布並分享給遊戲開發團隊,檢查該電信業者區段的路由(雙向 mtr),必要時變更路由或向電信業者升級處理(escalation)。
- 圖表上
- 只在特定時段偏高 · 各電信業者(ASN)的驗證拒絕、強制斷線次數,各電信業者的抖動
- 查看位置
- 在伺服器的驗證拒絕、校正、強制斷線 log 加上連線 IP 所屬電信業者(ASN)與時間,依電信業者與時段統計。基礎設施團隊在同一時間往該電信業者方向執行雙向 mtr,查看抖動與封包遺失
- 符合的跡象
- 拒絕與強制斷線集中在特定電信業者、晚間增加,同一時間該電信業者的抖動也偏高,而以數秒為單位加總的移動量仍在規則內
- 不符合的跡象
- 與電信業者無關、只有特定帳號反覆出現時,可能真的是作弊。所有電信業者一起增加時,是伺服器 tick 落後、指令被集中套用的伺服器端原因(超出 tick 預算)
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- Source SDK 2013: player.cpp Valve
以每個 tick 累積的指令預算防止加速;開發註解提到,更嚴格的限制會讓正常玩家也出現卡頓 - RFC 2697: A Single Rate Three Color Marker IETF
token bucket:以平均速率與容許的突發量判定 - Understanding Networked Movement in the Character Movement Component for Unreal Engine Epic Games
用戶端與伺服器的時間戳記差距大時,會丟棄該次移動或走時間差異修正流程;以伺服器時間計算,防止加速外掛
相關原因
同一層:只有部分人遇到的問題
同一症狀(拉回)在其他層的原因
查看含圖解與實驗的完整版卡片