オンライン対戦で起こる「同期ズレ」の原因と解消法
投稿日:
更新日:
※当ページはアフィリエイトプログラムによる収益を得ています。
ネトゲあるあるとして語られることが多い不具合「同期ズレ」。いわゆる「ラグ」なのですが、同期ズレが発生するとプレイ品質はガタ落ちですよね。
昔からPCゲーマーの大敵である同期ズレについて、原因と解決策をまとめてみました。FPSなどでは特に致命的なので、参考にしてみてください。
同期とはそもそも何か
同期ズレを語る上では、まずフレームレートを理解する必要があります。
フレームレートは、動画や映画でも存在する概念で、いわゆる「1秒あたりに処理される絵の枚数」ですね。60fpsであれば「1秒あたり約60枚の絵」が処理されて動いています。
しかしネットゲームの場合、相手と自分の「絵の動き」を合わせる必要があります。両方とも全く同じフレームレートが実現されていればよいのですが、ネットワーク遅延などの理由から2者の間に違いがでてしまうことも。
例えばAさんは60fpsのうち「10枚目」の絵を処理しているにも関わらず、Bさんでは「7枚目」の絵を処理しています。この状態で、AさんとBさんは同期がとれておらず、どちらか片方が瞬間移動のような状況になる可能性が高いです。
これが同期ズレですね。
同期の種類
オンラインゲームの同期は「完全同期型」と「非同期型」の2つに分類されます。
完全同期型は上の例のようにAさんとBさんですべての絵が完全に一致すること。FPSやRTSは完全同期型が多いです。動きやタイミングがシビアですからね。
これに対して非同期型はズレがあることを前提にしており、数フレームのズレは許容します。MMO RPGなんかはこちらが多いですね。
なぜ同期ズレが起こるのか?
同期ズレが起こる原因は主に以下2点です。
- 同期の対象が1つではない(複数、それもかなり多い)
- プレイヤー全員の通信品質が同一ではない
まず1についてですが、基本的に1:1の環境で同期ズレはあまり起こりません。片方の回線速度がよほど悪くない限り、同期は取れます。
なので格闘ゲームのようなシビアなゲームであっても、1:1が多い環境ではあまり同期ズレが起こらないのですよね。
一方、大規模なフィールドで数人~数十人が集中するようなゲームでは同期ズレが起こります。この手のゲームでは情報量が多く同期の対象も膨大なので「非同期型」を採用することが普通です。
つまり、常に同期ズレは起こっているのですが、ズレがあることを見越してある程度の「予測」でPCが処理しています。サーバー側の情報とPCでの情報の差分を調整しているのです。
ただし、あまりにもズレが大きくなると調整できなくなり、「止まって見える」「動いていない」「突然ワープした」という症状が起こるわけですね。
また、2の理由も大きく影響してきます。プレイヤー間の通信品質の差があまりにも大きいと、調整がききません。Aさんは8フレーム目まで処理を送信しているのに、Bさんは3フレーム目までしか送信されていないのでは、同期を取りようがないからです。
同期ズレの解消法は?
これは単純で、以下の方法が有効です。
- Ping値が低い通信環境(通信品質が高い環境)を作る
- 上の環境をほかのユーザーにもすすめる
前者は簡単ですが、後者はなかなか難しいですよね。しかしプレイヤー全員の通信品質が良い環境では、ほとんど同期ズレが起こらないことも事実。
ほかのプレイヤーに迷惑をかけないためにも、できるだけ良い通信環境を整えたいですね。