ゲームラグ白書 › 一部のユーザーだけに起きる問題
特定の通信事業者のユーザーに集中する検証の誤検知 Anti-cheat / movement validation false positives on bad ISPs
原因ID pt-isp-validation · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 インフラチーム・ネットワークインフラ
図と実験のあるメインページでこのカードを開く →
ジッターが大きい回線を使う人は入力がまとまって届くため、サーバーの速度・クールタイムのチェックに頻繁に引っかかります。
なぜ 特定の通信事業者・地域の回線のジッターが夜に大きくなる → すると まとまって届いた正常な入力を、サーバーが速度超過・クールタイム違反と判断 → 画面では その通信事業者のユーザーだけ引き戻し、スキル拒否、ひどいとサーバーから追い出されて切断
- 症状
- 引き戻し, 不発・ロールバック, 切断
- 要因
- ジッター
- 誰に起きるか
- 特定の地域・ISP, 自分だけ
- いつ
- 夜のピーク時間帯, 移動中・マップ切り替え時
- 担当
- 主担当 ゲーム開発チーム・サーバー開発 · 副担当 インフラチーム・ネットワークインフラ
- ゲーム開発チームの対応
- チェックは数秒にわたる累積の許容量で行う、回線の状態(Ping・ジッター)を参考に基準を緩和、強制切断の前に警告段階を設ける、プレイヤーごとの入力バッファでまとまって届いた入力をティックごとに均等に分け、誤検知そのものを減らす。
- インフラチームの対応
- 通信事業者ごとのパケットロス率・ジッターの分布を時間帯別に確認してゲーム開発チームに共有、その通信事業者の区間の経路を点検(双方向のmtr)、必要なら経路変更・通信事業者へのエスカレーション。
- グラフでは
- 特定の時間帯だけ高い · 通信事業者(ASN)ごとの検証拒否・強制切断の数、通信事業者ごとのジッター
- 確認箇所
- サーバーの検証拒否・補正・強制切断のログに接続元IPの通信事業者(ASN)と時刻を付け、通信事業者・時間帯ごとに集計。インフラチームは同じ時間帯にその通信事業者に向けて双方向のmtrを実行し、ジッター・パケットロスを確認
- 該当する場合
- 拒否・強制切断が特定の通信事業者に集中して夜に増え、同じ時間帯にその通信事業者のジッターも高く、数秒単位で合計した移動量はルールの範囲内
- 該当しない場合
- 通信事業者に関係なく特定のアカウントだけで繰り返すなら、実際のチートの可能性。すべての通信事業者で一緒に増えるなら、サーバーのティックが遅れてコマンドがまとめて適用されるサーバー側の原因(ティックバジェット超過)
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
出典
- Source SDK 2013: player.cpp Valve
ティックごとにたまるコマンドバジェットで速度超過を防ぐが、より厳しい制限は正常なユーザーにもカクつきを生むという開発者のコメント - RFC 2697: A Single Rate Three Color Marker IETF
トークンバケット:平均速度と許容バーストサイズで判定 - Understanding Networked Movement in the Character Movement Component for Unreal Engine Epic Games
クライアント・サーバーのタイムスタンプの差が大きければ、移動を破棄するか時間差の解消手順で処理、サーバー時刻で計算してスピードハックを防止
あわせて読みたい原因
同じ層:一部のユーザーだけに起きる問題
同じ症状(引き戻し)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る