1. かどから 出た 人が、とくを する
1. 角から出る側が有利になる「のぞき見有利」
1. のぞき見有利 ── 基準状態で約141ミリ秒という試算
てっぽうで うちあう ゲームで、かべの かどから ひょいと 出る 人を、「のぞく 人」と よびます。まって いる 人は 「まもる 人」です。
この ゲームを 作った 会社は、のぞく 人の ほうが 0.14びょうほど 長く 動ける と 計算しました[1]。うちあいの かち まけは、0.02〜0.05びょうの ちがいで きまる ことが 多かった そうです[1]。
ちがいの 一つの もとは、「おくれ」です。おくれは、ネットの みちを とおる 時間と、サーバーが 世界を 新しく する 時間から 生まれる と、会社は せつめい しています[2]。
では、ネットの おくれは どこで 生まれるのでしょう。
Riot Gamesはこの有利さを、のぞき見有利(peeker's advantage)と呼んでいます。角からのぞく側が、守る側より先に相手を見て動ける、という状況です。基準状態の試算では、のぞく側は守る側より約141ミリ秒長く反応できます[1]。
141ミリ秒は0.141秒で、まばたきより短い時間です。それでも勝敗には大きく響きます。Riotの社内実験では、撃ち合いの勝ち負けは20〜50ミリ秒の差で決まることが多く、のぞき見有利が10ミリ秒変わるだけでも勝率に大きな差が出ました[1]。
この差の背景に、画面の外の遅れがあります。Riotは、遅れの一部はネットワーク(通信経路)から、一部はサーバーの更新間隔(tickレート)から来ると説明し、サーバーを1秒に128回更新する設計に決めました[2]。
この記事は、その遅れを順番にほどいていきます。まず、通信そのものにかかる時間です。
Riot Gamesは、のぞき見有利を、角からのぞく側が守る側より長く反応できる有利さと定義し、基準状態では約141ミリ秒と試算した。のぞき見有利を縮める最適化で約40ミリ秒(28%)を削り、144FPSの環境では約71ミリ秒になる[1]。ここでの数字はVALORANTでのRiot社の試算で、別のゲームや別の設定にそのまま当てはめられない。
この有利さが勝敗に響く理由を、Riotは実験で示す。撃ち合いの勝ち負けは、20〜50ミリ秒の差で決まることが多く、10ミリ秒の違いでも勝率に大きな差が出た[1]。ただし勝率の具体的な数字は、ここで使った資料の要約には含まれていない。
では、遅れはどこから来るのか。Riotは、遅れの一部は通信、一部はサーバーのtickレートに由来すると述べ、そのため128tickのサーバーが必要だと判断した[2]。通信の遅れとサーバーの遅れを、順に分けて見ていく。
eスポーツの規模を示す参考として、JeSUの白書をもとにした報道は、2023年の国内市場を前年比117%の146.85億円、ファン数を前年比110.3%の856万人と推定したと伝える[8]。版によって数字が異なるため、これは2024年版白書の2023年の推定値である。
2. 光でも、とおくへは 時間が かかる
2. ネットの線の中では、光でも距離ぶん遅れる
2. 光ファイバー中の光速 ── 1kmあたり約5マイクロ秒
ネットの 線の 中では、光が しんごうを はこんで います。光は とても 速いので、すぐ 着きそうです。でも、線に つかわれる ガラスの 中では、少し おそく なります。
その 速さは、1びょうに 20万キロメートルほど です[3]。1びょうに 地きゅうを 5しゅう ほど できる 速さ です。
1000キロメートル はなれた 場所なら、かかる 時間は 5ミリびょう ほど。0.005びょうです。これは、この 記事で 計算した 数字で、まっすぐ 線が ある と かりに かんがえた ときの 目安です。
とおい 国と あそぶ ほど、おくれは 大きく なります。ゲームの 会社は、これを どう へらすのでしょう。
光ファイバーの中を進む光信号は、1秒に約20万km進みます。1kmあたりでは約5マイクロ秒(1マイクロ秒は100万分の1秒)です[3]。この数字はWikipediaにある値で、百科事典のような二次資料です。1秒で地球を5周ほどする速さですが、真空中の光(約30万km/s)の3分の2ほどです。これは、ガラスの屈折率が約1.5で、光速を屈折率で割った値になるからです(この割り算は筆者の計算で、出典に直接の記載はありません)。
英語版Wikipediaも、通信用の光ファイバー中の信号を約20万km/sとし、シドニー〜ニューヨーク間の通話には最小でも80ミリ秒の遅れがあると述べます[4]。
この速さで距離を遅れに直すと、1000km離れた相手との通信は、一方向で約5ミリ秒(1000×5マイクロ秒)かかります。経路が曲がるぶん、実際はもう少しかかります。つまり、遠い相手と遊ぶほど、ゲームの外の遅れは避けられず増えていきます。
距離は変えられません。では、ゲームの会社はどこで遅れを減らしているのでしょう。
光ファイバーの遅れは、光の速さが真空中より遅いことから来る。光信号はファイバー中を約20万km/s(1kmあたり約5マイクロ秒)で進む[3]。この値はWikipedia(二次資料)に依拠している。ガラスコアの屈折率は1.4以上で、真空中の光速(約30万km/s)を屈折率約1.5で割ると約20万km/sになり、資料の数字と一致する(この割り算は筆者の確認で、出典に直接の記載はない)。
この数字を距離に当てはめると、1000kmは1000×5μs=5msの片道遅延になる。東京〜大阪を仮に500kmとすれば、片道約2.5ms、往復約5msである(筆者の試算。実際の経路は直線より長く、中継機器の処理時間も加わる)。英語版Wikipediaも、約200,000km/sという速さと、シドニー〜ニューヨーク間の通話に最小80msの遅れがあることを述べ、別言語の記述として数字を裏づけている[4]。
遅れを縮める研究もある。空気の屈折率は1.0で、屈折率が低いほど光は速く進む。そこで空気の穴を光が通る空孔コア光ファイバーでは、遅延を4〜5割改善する見込みがあると、古河電工と慶應義塾大学の研究が紹介されている[5]。ただし「見込み」の段階で、いまの通信網の標準ではない。
距離による遅れは物理的に避けにくい。そこで残る遅れを、サーバーの側でどう扱うかが次の問いになる。
3. サーバーは、1びょうに 128かい 世界を 新しく する
3. サーバーは1秒に128回、世界を更新している
3. tickレートの制約 ── 1フレーム7.8125ミリ秒の予算
オンライン ゲームでは、サーバーという 大きな コンピューターが、みんなの 動きを まとめて います。サーバーは、ぱらぱら まんがの ように、1びょうに 何回も ゲームの 中の 世界を 新しく します。
VALORANTでは、この 回数が 1びょうに 128かい です[2]。1000ミリびょうを 128で わると、1回の 時間は 7.8ミリびょうほど。この みじかい 時間の うちに、しごとを おえなければ なりません。
はじめは、1回に 50ミリびょう かかって いました。作った 人たちは、これを 2ミリびょうより 短く しました[2]。
ただし、この 数字は サーバーの 中の 話です。人が うごき出す 時間では ありません。
オンラインゲームでは、サーバーが全員の動きを集めて、ゲームの世界を一定の間隔で更新します。この更新の回数をtickレートと呼びます。パラパラ漫画の1ページ1ページを、サーバーがめくる回数のようなものです。ただしゲームでは、めくり終えるまでに計算を済ませなければなりません。
VALORANTのサーバーは、1秒に128回更新する「128tick」です。1000÷128=7.8125なので、1回の更新(1フレーム)を7.8125ミリ秒以内に終える必要があります。開発の途中では、サーバーの1フレームが50ミリ秒かかっていましたが、最後は2ミリ秒未満まで縮めたとRiotは報告しています[2]。
更新の間隔が長いと、それだけ遅れが増えます。Riotが128tickを選んだのは、遅れの一部がサーバーの更新間隔から来ると考えたからです[2]。ただし7.8125ミリ秒はサーバーの処理の目標で、プレイヤーが反応できる時間ではありません。
通信にもサーバーにも遅れがあります。では、通信の遅れそのものは小さくできるのでしょうか。
tickレートは、サーバーがゲームの世界を更新する回数で、遅れの一因になる。Riotは、遅れの一部は通信、一部はサーバーのtickレートに由来すると説明し、128tickのサーバーが必要だと判断した[2]。
128tickでは、1秒に128回の更新を行うので、1000÷128=7.8125msが1回の持ち時間(フレーム予算)になる。サーバーの処理がこれを超えれば、更新が間に合わない。Riotの報告では、開発の途中で50msかかっていたサーバーの1フレームを、最終的に2ms未満まで縮めた[2]。50msは、7.8125msの6倍以上にあたる。つまり128tickは、サーバープログラムの高速化という別の努力があって成り立つ設計である。
この7.8125msは、サーバー側の更新の数字であり、プレイヤーの反応時間ではない。141msやtickレートの数字を混ぜて、「人は何msで反応できる」と読んではいけない。
サーバーの処理を速くしても、通信経路が長ければ遅れは残る。次の問いは、サーバーと経路をどこに置くかだ。
4. 世界じゅうに サーバーを おく わけ
4. 遅れを減らすため、世界中にサーバーを置く
4. Riot Directとサーバー配置 ── 70%のプレイヤーに35msを届ける目標
きょりが 遠いほど、おくれは 大きく なります。そこで この ゲームの 会社は、世界じゅうに サーバーを おきました。
また、じぶんたちで ネットの みちも 作りました。「Riot Direct」と いう 名前です。よけいな まわり道を へらして、おくれを 少なく する ためです[1]。
めあては、プレイヤーの 70%に、0.035びょうの おくれ(ピン)を とどける ことです[1]。
ただし、これは もくひょうで、いつも この 数字に なる わけでは ありません。
距離そのものを変えることはできません。そこでRiotは、世界各地にサーバーを置き、プレイヤーの近くで遊べるようにしています。さらに、自前のインターネット回線網「Riot Direct」をつくり、通信が遠回りになることで生じる遅れを減らしました[1]。
目標は、プレイヤーの70%に35ミリ秒のping(往復の遅れ)を届けることです[1]。35ミリ秒は目標値で、実際の達成値ではありません。
距離を縮め、経路を短くし、サーバーの更新を速くする。ここまでは、会社の側でできる工夫です。ところが最後の数メートルは、プレイヤーの家の中にあります。
光ファイバーの遅れが距離に比例する以上、遅れを減らす現実的な方法は、プレイヤーの近くにサーバーを置くことと、経路の無駄を省くことになる。Riotは、世界中にサーバーを置き、さらに自前のインターネット回線網Riot Directを構築して、経路の遅れ(ルーティングの遅れ)を最小化しようとした[1]。
目標は、プレイヤーの70%に35msのpingを届けることである[1]。目標値であって、実際の達成値ではない。
先の計算を使うと、片道が約5ms(1000km)なら、往復は約10msになる。35msの目標は、経路の曲がりや機器の処理を含む余裕をもった数字だと読める(これは筆者の読みで、Riotが内訳を示したわけではない)。
こうして会社の側の遅れは減らせる。残る最後の区間は、プレイヤーの家の中だ。
5. 家の 中の むせんは、ゆれる ことが ある
5. 最後の数メートル ── 無線のゆれと、届かないデータ
5. パケットの遅れ・欠落とバッファ ── 有線に切りかえる理由
ネットでは、データが 小さな まとまりに わけられて とどきます。この まとまりを 「パケット」と いいます。手紙を 何まいかの はがきに わけて おくる ような ものです。
パケットは、おくれて とどく ことも あれば、とどかない ことも あります[1]。そこで ゲームは、とどいた データを 少し ためて から つかいます。
ためる ぶん、画面の 動きは 少しだけ おそく なります。でも、動きが とぎれるより、よいのです。
この 会社は、とどかない パケットを へらす ほうほうの 一つとして、ケーブルで つなぐ ことも あげて います[1]。
ただし、むせんが いつも わるい わけでは ありません。ケーブルの ほうが 安定 しやすい、という 話です。
ネットでは、データは「パケット」という小さなまとまりに分けて送られます。このパケットは、遅れて着くことも、まったく届かないこともあります[1]。
ゲームは、これに備えて、受け取ったデータを少しためてから使います。ためる時間があれば、パケットが少し遅れても動きがとぎれにくくなりますが、その分だけ反応も少し遅れます。遅れを増やしてでも、なめらかさを守るという選択です。
Riotは、パケットが届かない状況を減らす手段として、有線接続への切りかえを挙げています[1]。ただし、これはRiotが挙げた一つの方法で、無線が必ず悪いという意味ではありません。
日本eスポーツ連合(JeSU)の大会規約(ストリートファイターVの例)も、参加者に通信回線の性能・品質を含め、試合に支障のない環境を自分で用意することを求めています[7]。
遅れや欠けは、完全には消せません。それなら、どうやって「遅れていないように」感じさせるのでしょうか。
パケットは遅れたり、届かなかったりする。Riotはこれを前提に、受信データを少しためる(バッファ)仕組みを使う、と説明する[1]。バッファがあると、パケットの到着時刻がばらついても、表示は途切れにくい。代わりに、ためた時間ぶんだけ反応が遅れる。つまり、なめらかさと即応性は、一方を増やすと他方が減る関係にある。
Riotは、パケット落ちを減らす手段として、有線接続への切りかえを挙げる[1]。ただしRiotの文章は、無線と有線の遅延差を数字で比較してはいない。民間の記事には差の数字もあるが、公的な基準ではないので、ここでは使わない。
JeSUのストリートファイターVの大会規約は、参加者が、PCや機器の動作状態や通信回線の性能・品質を含め、試合に支障のないゲーム環境を用意できることを求めている[7]。一方で、大会が有線LANを一律に義務づけると断定する根拠は、ここで使った資料にはない。
家の回線がゆれても、勝負が壊れないようにするには、遅れそのものを埋め合わせる設計が要る。それが遅延補償である。
6. おくれを うめあわせる 「じかんを もどす」くふう
6. 遅れを埋め合わせる「遅延補償」の工夫
6. 遅延補償 ── 過去の世界を再現して当たり判定をする
おくれが あると、こまった ことが 起きます。あなたが てきを ねらった とき、てきは もう 少し 先に 動いて いるかも しれません。つまり、少し 前の てきを ねらって いる のです。
そこで ゲームは、「うった 時間」を サーバーに おくります。サーバーは、その ときの 世界を 思い出して、当たったか どうかを 調べます[6]。
これを 「ちえん ほしょう」と いいます。ただし、いい ことばかり ではありません。かくれた 直後の 人が、まだ うたれる ことも あります[6]。
ちえん ほしょうでは、うつ 人と うたれる 人で、かちやすさが かわる ことが あります。ゲームの 会社は、その ちがいを 小さく する くふうも して います。
遅れがあると、ゲーム画面の相手は、実際の相手より少し前の姿になります。プログラマーのガブリエル・ガンベッタさんの解説では、撃った時には「100ミリ秒前の敵の頭」を狙っているような状態になります(100ミリ秒は説明のための例で、決まった値ではありません)[6]。
そこで考えられたのが遅延補償(lag compensation)です。撃った瞬間の時刻と照準をサーバーに送り、サーバーが過去のその瞬間の世界を再現して、当たったかどうかを判定します[6]。
この方法には代償もあります。撃たれる側からすると、遮蔽物に隠れた直後でも、数ミリ秒は撃たれうるのです[6]。撃つ側は有利になりますが、撃たれる側には「隠れたのに当たった」と感じる場面が出ます。
のぞき見有利を縮める工夫は、この種の不公平を10ミリ秒単位で調整していく作業です。Riotはその努力で、基準状態の約141ミリ秒から約40ミリ秒(28%)を削りました[1]。
遅延補償は、通信の遅れによる「見えている世界」と「サーバー上の世界」のずれを埋める工夫だ。クライアントが撃った時刻と照準を送り、サーバーが過去のその瞬間の世界を再現して当たり判定をする。この仕組みがなければ、撃つ側は約100ms前の敵の頭を狙っていることになる(100msは解説用の例で、固定値ではない)[6]。
代償として、撃たれる側は、遮蔽物に隠れた直後でも数ミリ秒は撃たれうる[6]。補償は撃つ側の見た目を優先する設計であり、遅れの大きさそのものを変えるわけではない。そのため、補償だけに頼らず、のぞき見有利そのものを縮める取り組みが並行して行われる。
Riotは、基準状態の約141msののぞき見有利から、最適化で約40ms(28%)を削った[1]。40÷141≒0.28で、報告の数字と合う。
このように、通信の遅れは物理(光速)、サーバー(tick)、家庭の無線、そして遅延補償というソフトウェアの4つの段階で扱われている。どの段でも、遅れをゼロにはできず、減らすか、埋め合わせるかである。
7. じぶんの 家と、あいての 家の きょりを はかって みよう
7. 地図で測って、光の遅れを計算してみる
7. 出口 ── 距離から遅れを見積もる、資料の読みどころ
おうちの 人と いっしょに、ちずちょうで、はなれた 2つの 町を えらびます。ちずの すみに ある 「しゅくしゃく」の ものさしを つかうと、じょうぎで はかった 長さから、ほんとうの きょりが わかります。
はかった キロメートルの 数に 5を かけると、光ファイバーを 光が とおる 時間が マイクロびょうで わかります。1000マイクロびょうが 1ミリびょうです。
たとえば 100キロメートルなら 500マイクロびょうで、0.0005びょうです。とても みじかいですね。でも、ゲームでは、ほかの おくれも たされて いきます。
ゲームきが あるなら、おうちの 人と いっしょに、つうしんの テストの 画面で、ピンの 数を 見て みても よいでしょう。せっていは かえずに、見るだけにします。
地図の縮尺と定規を使って、地図帳で行ってみたい2つの都市を選び、直線距離を測ってみましょう。地図の隅にある縮尺の目盛りを使うと、定規で測った長さを実際の距離に直せます。測ったキロメートルの数に5を掛けると、光ファイバーの中を光が進む時間がマイクロ秒で出ます。1000マイクロ秒が1ミリ秒です。
たとえば東京〜大阪を500kmとすると、片道は約2.5ミリ秒です。往復なら約5ミリ秒ですが、実際の通信は、機器の処理や回線の曲がりで、この計算より長くなります。
ゲーム機や家のパソコンに、通信の状態を調べる画面があれば、おうちの人と一緒に、遅れの数字(ping)を見てみるのもよいでしょう。設定は変えず、見るだけにしましょう。
もっと知りたくなったら、日本語では光ファイバーの遅れの解説が読めます[3]。英語ですが、Riotの技術ブログがこの記事の141ミリ秒や128tickの話の元です[1][2]。ゲームの「ラグ」が、光の速さとソフトウェアの工夫のあいだにある問題だと分かると、プレイ中の見え方が少し変わるかもしれません。
距離から遅れを見積もるには、距離(km)に5μs/kmを掛ける。500kmなら片道約2.5ms、往復約5msで、実際はこれに経路の曲がりと機器の処理が加わる(筆者の試算)。35msのpingを目標にするRiotの数字[1]と比べると、光の速さだけでは説明できない部分が大きいことに気づく。それを埋めるのが、経路の最適化やサーバーの高速化である。
読み進めるなら、Riotの2本の技術ブログ(Peeking into VALORANT's Netcode と VALORANT's 128-Tick Servers)が遅れの設計を述べる一次資料[1][2]、ガンベッタの連載が遅延補償の解説[6]、日本語では光ファイバーの遅れと空孔コアの研究紹介がある[3][5]。いずれも英語か技術寄りの文章を含む。
残る問いは、無線と有線の遅延差を、公的な基準でどう測るかだ。ここで使った資料は有線への切りかえを挙げるにとどまり、数字の比較を示していない。試すなら、おうちの人と相談し、設定は変えずに使える通信テストで、同じ端末・同じ場所から数回ずつ記録すると、ばらつきも見えてくる。
しらべた もとの じょうほう
参考にした情報源
参考にした情報源と、その使い方
出典について:Riot Gamesの技術ブログ、ガンベッタの解説、Wikipedia、古河電工・慶應義塾大学の研究紹介、JeSUの大会規約、報道を使った。何に使ったかは、それぞれの項目の最後に書いている。
- Riot Games Tech Blog "Peeking into VALORANT's Netcode". https://www.riotgames.com/en/news/peeking-valorants-netcode (のぞき見有利、撃ち合いの20〜50ミリ秒、Riot Direct、パケットと有線について。一次資料・英語)
- Riot Games Tech Blog "VALORANT's 128-Tick Servers". https://www.riotgames.com/en/news/valorants-128-tick-servers (tickレートと遅れ、1フレームの処理時間について。一次資料・英語)
- Wikipedia日本語版「光ファイバー」。https://ja.wikipedia.org/wiki/光ファイバー (光ファイバー中の光の速さについて。二次資料)
- Wikipedia英語版 "Optical fiber". https://en.wikipedia.org/wiki/Optical_fiber (光速の数字とシドニー〜ニューヨーク間の遅れについて。二次資料・英語)
- ビジネスネットワーク.jp 空孔コア光ファイバー特集。https://businessnetwork.jp/article/19075/2/ (空孔コア光ファイバーの研究紹介について。報道)
- Gabriel Gambetta "Fast-Paced Multiplayer: Lag Compensation". https://www.gabrielgambetta.com/lag-compensation.html (遅延補償の考え方について。解説・英語)
- JeSU ストリートファイターV 大会規約。https://jesu.or.jp/japanesportsgp/pdf/sfv_tournament_rules.pdf (参加者が通信環境を用意する規定について)
- GAME Watch「JeSU『日本eスポーツ白書2024』の紹介」。https://game.watch.impress.co.jp/docs/news/2002583.html (2023年の国内eスポーツ市場とファン数の推定について。報道)
なおした ところ
更新履歴
更新履歴(改版の記録)
- 初版を公開。
このサイトでは、公開した記事の本文は原則として書き直しません。誤りが見つかったときや、内容が古くなったときだけ手を入れ、その理由をこの欄に残します。