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

ゲームラグ白書 › 同期設計

厳しすぎるサーバー検証 Over-strict server validation

原因ID sy-strict-check · 主担当 ゲーム開発チーム・サーバー開発

図と実験のあるメインページでこのカードを開く →

移動速度・クールタイム・射程をサーバーが厳しくチェックしすぎると、ジッターでまとめて届いた正常な入力まで拒否します。

なぜ 「1ティックで移動できる距離」「クールタイムの許容誤差0ms」のような厳しい基準 → すると ジッターで2つのコマンドが1ティックにまとめて届くと、ルール違反と判定 → 画面では 引き戻し、クールタイムが終わったのにスキルが拒否される

症状
引き戻し, 不発・ロールバック
要因
ジッター
誰に起きるか
自分だけ
いつ
ときどきランダムに, 移動中・マップ切り替え時
担当
主担当 ゲーム開発チーム・サーバー開発
ゲーム開発チームの対応
累積の許容量(トークンバケット)方式でチェック、Ping・ジッターの分の余裕を持たせる。
グラフでは
不定期なスパイク · サーバー検証による拒否・位置補正の数
確認箇所
サーバーログに、検証による拒否・位置補正のたびに、理由、そのティックに届いたそのユーザーのコマンド数、直前のコマンドとの到着間隔を記録
該当する場合
拒否・補正が、1ティックにコマンドが2つ以上まとめて届いた瞬間に集中しており、数秒単位で合計した移動量・使用回数はルールの範囲内
該当しない場合
数秒単位で合計してもルールを超えるなら、実際の速度超過・チートの可能性。拒否が特定の通信事業者と夜の時間帯に集中するなら、特定の通信事業者のユーザーに集中する検証の誤検知側
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要

出典

  1. Source SDK 2013: player.cpp Valve
    ティックごとにたまるコマンド処理バジェット(最大sv_maxusrcmdprocessticks 24ティック)で、まとめて届いたコマンドを許容。これ以上厳しく制限すると正常なユーザーでもカクつきが出たという開発者のコメント
  2. RFC 2697: A Single Rate Three Color Marker IETF
    トークンバケット:平均速度(CIR)と一度に許容するバーストサイズ(CBS)で判定

あわせて読みたい原因

同じ層:同期設計

同じ症状(引き戻し)を起こすほかの層の原因

図と実験のあるメインページでこのカードを見る