ゲームラグ白書 › 一部のユーザーだけに起きる問題
回線が重いパーティメンバー1人とボスのギミック One laggy member in a synchronized mechanic
原因ID pt-raid-member · 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
図と実験のあるメインページでこのカードを開く →
全員が決まった瞬間に一緒に反応しなければならないレイドのギミックでは、回線が重い1人の遅れた反応がパーティ全体の失敗になります。
なぜ 「全員同時に散開」「1人がボタンを押す」のような全員で対処するギミック → すると 回線が重い人は予兆を見るのが遅れ、入力も遅れて届く → 画面では その1人のせいで全滅、ほかのパーティメンバーは「ラグい人のせい」と感じる
- 症状
- 不発・ロールバック, 入力遅延
- 要因
- 遅延
- 誰に起きるか
- 特定の場所・チャンネル, 特定のキャラだけおかしく見える
- いつ
- 人が集中したとき, 特定の操作をしたとき
- 担当
- 主担当 ゲーム開発チーム・サーバー開発 · 副担当 ゲーム開発チーム・クライアント開発
- ゲーム開発チームの対応
- サーバー:ギミックの判定の受付時間をPingの分だけ余裕を持たせる、予兆はサーバー時刻で前もって送る、1人の失敗が全滅につながらない設計。クライアント:受け取った予兆をサーバー時刻に合わせて再生。
- グラフでは
- 一部だけ高い · ギミック失敗を招いたプレイヤーごとのRTT
- 確認箇所
- サーバーのギミックログに、失敗を招いたプレイヤー、その人の入力の到着時刻、判定の受付時間、その人のRTT・パケットロスを記録
- 該当する場合
- 全滅を招いた入力のほとんどが同じ1人のもので、その人のRTTがパーティの平均よりはっきり高く、入力が受付時間の直後に届いている
- 該当しない場合
- 失敗がパーティメンバーに均等に分かれているなら、受付時間そのものが短い問題(Pingに削られる短い判定の受付時間)。回線が重い人の入力が受付時間内に届いているのに失敗するなら、サーバーの判定コード
- 確認手段
- ゲームサーバー・クライアントのログ・メトリクスが必要
出典
- NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
サーバー時刻に合わせてイベントを予約し、全員が同じ瞬間に再生する方法 - Factors influencing the latency of simple reaction time (Frontiers in Human Neuroscience, 2015) Frontiers
単純反応時間の平均は約231ms
あわせて読みたい原因
同じ層:一部のユーザーだけに起きる問題
同じ症状(不発・ロールバック)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る