同期ズレってなーに?

【同期】どうき:作動の時間を一致させること。内容や情報を一致させること。シンクロナイズさせること。

出典|デジタル大辞典-weblio

「同期ズレ」はマルチプレイの仕組み的に必ず発生する現象なので、インターネット回線の通信速度(bps)とは直接関係ありません。

 なので、世界中のプレイヤーが超ウルトラ高速スーパー回線を使っていても発生しますし、インターネット通信を利用しない、オフライン大会のローカル通信でも発生します。

 とはいえ、応答速度(Ping値)が影響する現象なので、インターネット回線の影響をまったく受けないというわけでもありません。

 オンラインゲームの世界では、「ラグ」の次に有名な「同期ズレ」なのですが、ラグとごっちゃになってややこしいので、なるべく分かりやすく解説してみたいと思います。

まず、フレームレートの話

(アニメーション)

 同期ズレを語る上で避けては通れない「フレームレート」について少しだけお話します。

 ゲームにも、映画にも、アニメにも、「絵が動く作品」には『フレームレート』が設定されています。ええ、もちろん、ファインディング・ニモにもです。

 フレームレートは「1秒あたりに処理される絵の数」ってほどの意味で、スプラトゥーン2は「1秒あたり約60枚の絵」で動いているのでフレームレートは「60fps※1」と表現します

 ちなみに、映画のフレームレートはフィルム文化の名残で「24fps」なのですが、映画館で観る映像のあの「独特の映画らしさ※2」はフレームレートの仕業なのです。

※1)この場合の【fps】は「frames per second = フレーム毎秒」の意味です。
※2)テレビで放送されるときは「30fps」に変換されています。

同期という概念

 1秒を60枚の絵で分割しているので、1枚の絵が表示される時間は僅か「0.016秒(0.0166666...7秒)」、これを『1フレーム』と数えます。

 スプラトゥーンに例えると、「プロモデラー」の連射時間は「0.067秒」なので『4フレーム』、つまり4枚の絵を使ったアニメーションで1発の弾が発射されるので…0.0166666...7秒×4=0.0666666...7秒……

 ( ˘ω˘ ) スヤァ… 

 主婦イカさんが遠い目をして夕飯の献立を考えはじめたので、もっとザックリいきましょう。

 例えば、スプラトゥーン甲子園でMC暴徒さんの「プレイボ〜〜〜ル!」の掛け声に対して、視聴者の弾幕(コメント)がピッタリ揃わないのも、視聴者の回線それぞれに「ラグ(時間的な遅延)」があるからなんです。

 そこで『同期』という概念が生まれます。

 もしも、「プレイボ〜〜〜ル!」の「プレイボ〜〜〜」の間に送信されたみんなのコメントを、「ル!」のときにまとめて表示できれば、ある程度の時間的遅延(バラツキ)が許容されて、みんなが同じタイミングで発言しているように錯覚します。

 これが「同期」という概念です。

同期の種類

 オンラインゲームの同期の方法は、大きく二種類に分かれます。

❶完全同期型

 1フレーム単位で「完全に同期させること」が前提の同期で、0.016秒毎にすべての行動判定が行われるシビアな世界です。

※ストリートファイターなどの格闘ゲームや、スタークラフトなどのRTS。

❷非同期型

まったく同期しないように感じる名称ですが、「ある程度のズレは許容する」を前提とした同期で、数フレーム単位で同期するユルイ世界です※3

※スプラトゥーンなどのFPS/TPSや、ファンタシースターなどのオンラインRPG。

※3)イギリスのソフトウェアエンジニア Oliver Brammer(Octobyte)氏によると、スプラトゥーン2は「1秒間に約16回の同期」が行われているそうなので、『4フレーム』毎に同期されている計算になりますが、公式の情報ではないので参考までに。

同期ズレの正体

 格闘ゲームなどは対戦フィールドが狭く、基本的に1vs1でプレイするので、完全同期型を採用しやすいのですが、スプラトゥーンなどのFPS/TPSでは、広大なフィールドに複数vs複数がプレイするため、『1フレーム』あたりの情報量が多すぎて非同期型を採用せざるを得ないのが現状です。

 そして、非同期型のオンラインゲームは「同期していない間のフレームの絵はコンピューターの予測で描いている」ので必ず下の画像のようになります。

イラスト|カカポ

 プレイヤーのモニターで見えている敵の位置【A】と、実際の敵の位置【B】※4がズレているので、画面上では弾が当たっているように見えても「システム上は当たってないので倒せない」という現象が起こります。

 これが『同期ズレ』の正体です。

 スプラトゥーンが「非同期型」のオンラインゲームである以上、回線にラグが無くても必ず発生する現象なのですが、ラグがあるほど同期のタイミングがズレるので、Ping値 の高い回線を使用しているホストプレイヤーの部屋では、有名な『ワープ現象』が発生します。

※4)スプラトゥーンの同期は、サーバー処理型ではなく「P2P方式」なので、厳密には「サーバーではここ」はおかしいのですが、この説明をしだすと先に進まないのでこの記事では割愛させて頂きます。詳しく知りたい方は以下の記事を参考にしてください。

ワープ現象の正体(おまけ)

イラスト|カカポ

 ちなみに、ワープ現象の正体は、プレイヤーが最初に入力した【A】に対して、コンピューターが予測した移動地点と、同期完了直前に変更した入力【B】の移動地点が異なっていた場合に、強引に辻褄を合わせようとして起こる現象です。

 オンラインゲームの「同期」や「仕組み」について、もっとちゃんと知りたい方や、本気でゲームクリエイターを目指している方は、「CESA※5」が主催するCEDEC(国内最大のゲーム開発者向け技術交流会)への参加や、オンラインゲーム業界の伝説的プログラマー「中嶋謙互※6」さんの著書をオススメします。

 この本の第四章に「ゲームサーバーの話」、第五章に「P2Pの話」が書いてあります(上級者向け)。

※5【CESA】:コンピュータエンターテインメントソフトウェア協会(Computer Entertainment Software Association)東京ゲームショウの開催や、日本ゲーム大賞の開催をしている日本のコンシュマーゲーム業界の中心にある団体。
※6【中嶋謙互】:国産MMORPGで圧倒的シェアを誇ったミドルウェア『VCE』の開発者。

おすすめの記事