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

ゲームラグ白書 › 一部のユーザーだけに起きる問題

モンスターの制御権が遅いクライアントにある Monster movement delegated to a player client

原因ID pt-mob-control · 主担当 ゲーム開発チーム・サーバー開発

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

サーバー負荷を減らすため、モンスターの移動計算を近くのプレイヤー1人のクライアントに任せるゲームがあります。その人の回線が悪いと、そのモンスターが全員の画面でおかしな動きをします。

なぜ サーバーがモンスターの移動計算を、最も近い(または先に来た)プレイヤーのクライアントに任せる → すると 任された人の結果報告が遅れたり、まとまったりしてサーバーに届く → 画面では そのモンスターだけが周囲全員の画面で一瞬止まってはワープ。任された本人の画面では問題なし

症状
ワープ, カクつき, 早送り
要因
ジッター, パケットロス
誰に起きるか
特定のキャラだけおかしく見える, 特定の場所・チャンネル
いつ
常に, ときどきランダムに
担当
主担当 ゲーム開発チーム・サーバー開発
ゲーム開発チームの対応
制御権を回線の良い人に渡す(Ping・パケットロス基準)、報告が途切れたらサーバーが即座に回収、ボスのような重要なモンスターはサーバーが自ら計算。
グラフでは
一部だけ高い · モンスターごとの位置報告の間隔(制御権を持つクライアント別)
確認箇所
サーバーに、モンスターごとに制御権を持つクライアントと、そのクライアントの報告間隔・RTT・パケットロスを記録。サーバー側のパケットキャプチャで、そのクライアントが送ったパケットの到着間隔も確認できる
該当する場合
おかしく動くモンスターの制御権がすべて同じ1人にあり、その人の報告間隔がばらつくか途切れ、制御権をほかの人に渡すとすぐ正常になる
該当しない場合
サーバーが自ら計算するモンスターも同じように飛ぶなら、サーバーのティック遅延か見ている人側の回線。制御権を移しても飛び続けるなら、コマンド同期の経路計算の不一致
確認手段
ゲームサーバー・クライアントのログ・メトリクスが必要
もっと詳しく
任された人は問題ないと感じるため、報告は「モンスターがおかしい」という形でしか来ません。1人を除く全員が同じモンスターをおかしく見ているなら、まずそのモンスターの制御権を誰が持っているかを確認します。

出典

  1. Authority (Netcode for GameObjects 2.5) Unity
    分散権限モデルでは、ゲームインスタンス(クライアント)ごとに一部のネットワークオブジェクトの権限を持ち、そのオブジェクトを計算
  2. Distributed authority topologies (Netcode for GameObjects 2.5) Unity
    権限がクライアントに分散すると単一のシミュレーションがなくなり、チートに弱くなる

あわせて読みたい原因

同じ層:一部のユーザーだけに起きる問題

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

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