角を曲がった直後に、自分より先に相手に撃たれて負ける。対戦シューターでこの経験をしたことがある人は多いはずだ。原因は「ping(自分の環境とサーバーの間で通信にかかる時間)が高かったから」と考えたくなる。低ping側が有利になる場面はどのタイトルにもあり、その有利をどこまで許容し、どこで補正するかにタイトルごとの工夫がある。VALORANTとApex Legendsの公式技術ブログを読み比べると、同じ問題に別の答えを出していることが分かる。
先に見つけたほうが得をする理由
対戦シューターのサーバーは、全員の操作を1台のサーバーで受け取り、結果を計算してから各プレイヤーの画面に送り返す。この「受け取ってから送り返すまで」の間に、複数の遅延が積み重なる。サーバーは、この遅延を織り込んで「誰が誰をいつ撃ったか」を判定しており、この判定の仕組み全体を遅延補償(ラグコンペンセーション)と呼ぶ。
Riot Gamesは2020年5月のdevブログで、この現象を「ピーカーズアドバンテージ」と呼び、次の要素の合計として説明している(playvalorant.com)。
- 相手側のクライアントのフレームレートによる遅れ
- 相手側の片道ネットワーク遅延
- サーバーの更新間隔(tick)による遅れ
- 自分側の片道ネットワーク遅延
- 自分の画面表示を滑らかにするための補間遅延
角を曲がって相手を先に見つけた側は、この一連の遅れの分だけ「相手がまだこちらに気づいていない」状態で発砲できる。これがピーカーズアドバンテージで、遅延補償が低ping側を有利にする場面の一つだ。VALORANTの場合、この合計は平均40〜70ミリ秒になるとRiotは説明している(playvalorant.com)。数字だけ見ると一瞬に思えるが、反応速度の限界に近い対戦シューターでは、この差が生死を分ける。
この図は、Riotが公式ブログで説明している5つの要素を、影響が積み重なる順に並べたものだ(playvalorant.com)。数値は2020年のクローズドベータ時点で公表されたものだ。
VALORANTは遅れの量を削る
VALORANTはサーバーを128 tick、つまり1秒間に128回、7.8125ミリ秒ごとに状態を更新する頻度で運用している。さらに、キャラクターの動きを滑らかに見せるための補間遅延も同じ7.8125ミリ秒に抑えている(Riot Games)。
先ほどの計算式のうち、「サーバーの更新間隔」と「自分の補間遅延」はどちらも、この2つの値そのものだ。Riotはこの値を小さくすることで、ピーカーズアドバンテージの合計を削っている。Riotは技術ブログで「ピーカーズアドバンテージが小さいほど、駆け引きの多いゲームになると考えている」という設計方針を述べており(playvalorant.com)、低ping側が有利になること自体は前提として受け入れつつ、その有利の絶対量を小さくする方向でチューニングしていることが分かる。
Apexは判定ロジックで調整する
Apex Legendsは、これとは違う場所に手を入れている。開発元Respawnはリード・ネットワークエンジニアの Samy Duc 名義で公開した2021年4月の開発者ブログで、「一部のゲームは常に低ping側を有利にするが、我々のシステムは能動的にそうしない設計を選んだ」という趣旨の説明をしている(EA)。低ping側を一律に有利にしないことで、通信環境が不安定な地域や田舎のプレイヤーでも比較的まともに対戦できることを利点として挙げている。
同じブログでRespawnは、低ping側が有利になる場面も具体的に挙げている。両者がほぼ同時に発砲した場合は低ping側の入力が先にサーバーへ届くこと、角を曲がって相手を発見する場面では低ping側のほうが「過去に戻っている度合い」が小さく先に相手を視認しやすいことだ(EA)。Apexの設計は、こうした場面を残しつつ、低ping有利が一律には出ない状態を作る仕組みだ。
サーバーのtickについては対照的で、Apexは20Hz、1秒間に20回・50ミリ秒間隔のまま運用している。Respawnは60Hzへの引き上げを見送る理由として「帯域とCPUのコストを3倍にしても、短縮できる遅延は最良のケースで2フレーム分にとどまる」という趣旨の説明をしている(EA)。VALORANTがtickの値そのものを遅延削減の主要な手段にしているのに対し、Apexはtickへの投資対効果を低く見積もり、別の仕組みで公平性の問題に対処している。
| タイトル | 低pingの扱い | 具体的な仕組み | サーバーtick | 出典 |
|---|---|---|---|---|
| VALORANT | 低ping有利を前提に、有利の量を削る | tickと補間遅延をどちらも7.8125msに抑える | 128 tick(7.8125ms間隔) | Riot Games |
| Apex Legends | 低ping有利を一律にしない | 同時発砲・索敵など一部の場面以外では低ping側を有利にしない補正 | 20Hz(50ms間隔) | EA |
表からも分かるように、両社は同じ「低ping有利」という結果に対して、削る量を変えるか、有利が出る条件を変えるかという、別の階層で手を入れている。VALORANTはtickの値で、Apexは判定ロジックで、それぞれ公平性を調整している。
読み比べていて面白かったのは、Apexが「tickを上げない」判断をコスト対効果の話として明言していたことだ。自分はインフラの制約だと思っていたが、Respawnは2フレーム分の短縮のためにコストを3倍にする価値がないと判断していると説明している。tickの値も、設計上の優先順位として選ばれていた。
大会など通信環境がそろった対戦を優先するなら、有利不利の起点をping差だけにできるだけ絞るVALORANT型のほうが、条件がそろっているという納得感を得やすいと思う。一方でカジュアル層や通信環境がばらつく地域を含めて遊ばせたいなら、Apexのように低ping有利が常には出ない設計のほうが参加のハードルを下げられる。大会シーンの納得感と参加者の裾野のどちらを優先するかという選択に近い。
まとめ
角を曲がった直後に撃たれる現象は、対戦シューターの仕組みから生まれる。この低ping有利に対して、VALORANTはtickと補間遅延を7.8125msまで絞って有利の量を削り、Apex Legendsは20Hzのまま、低ping有利が一律には出ない判定ロジックを組んでいる。遊んでいるタイトルが遅延補償のどこに手を入れているかを公式のブログや解説で知っておくと、撃ち合いの結果を仕組みから読み解ける。
コメント
気づきや感想をどうぞ記事への補足や、読んで考えたことをお寄せください。個人情報や、他の人を傷つける内容の投稿はお控えください。
投稿にはGoogleログインが必要です。
Googleでログイン投稿にはGoogleアカウントの表示名が公開されます。メールアドレスは取得・公開しません。
コメントを読み込んでいます…