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

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

クライアント権威型 Client-authoritative results

原因ID sy-client-auth · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発

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

それぞれが自分の結果を決めると、自分の画面は快適ですが、ほかの人の画面と結果が食い違い、チートにも弱くなります。

なぜ 位置・命中をクライアントが決め、サーバーは中継するだけ → すると 2人が互いに自分が先に当てたと主張し、サーバーは検証できない → 画面では 相手がワープ・壁抜け、「自分は当てたのに当たっていない」

症状
ワープ, 不発・ロールバック
要因
遅延
誰に起きるか
サーバー全体
いつ
常に
担当
主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
ゲーム開発チームの対応
サーバー:重要な結果(命中など)は自ら検証、移動は速度・距離をチェック。クライアント:サーバーが拒否・補正した結果を受け取ったら、その値に戻す。
グラフでは
最初から常に高い · ありえない移動速度・食い違う命中報告の数
確認箇所
サーバーで、クライアントが報告した位置・命中をそのまま記録しておき、連続する位置報告から移動速度を計算して、最大速度を超える報告と、2人が互いに先に当てたという報告を数える
該当する場合
サーバーが報告を検証せずにほかのクライアントへ中継しており、ありえない速度や互いに食い違う命中報告が、アップデート・地域に関係なく継続的に出る
該当しない場合
サーバーが結果を自ら計算・検証しているなら、この原因ではない。その場合のワープはパケットロスか補間バッファ側を確認
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要

出典

  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
    権限をクライアントに分散するとチートが容易になり、すべてのオブジェクトを管理する単一のシミュレーションがなくなる

あわせて読みたい原因

同じ層:同期設計

同じ症状(ワープ)を起こすほかの層の原因

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