オンラインゲームの遅延解消!ネットワーク、モニタ、音、反応速度

2020/04/06

最近流行りのゲーム、Apex、フォートナイト、荒野行動、VALORANTなどなど…

オンラインゲームの快適性を決める要素に ラグ 、つまり遅延(レイテンシとも言うが、この記事では遅延で統一する)があります。

特にリアルタイム性を重視するFPSでは勝敗に直結する重要な要素です。

FPSで同じ実力の人が対戦するとします。

片方はプレイの遅延が100ms、片方は10msだったとすると遅延が100msのプレイヤーは何度やっても勝てないでしょう。

なぜなら遅延が10msのプレイヤーのほうが90msも先に打てるのですから。

「今俺のほうが先に打っただろ!判定うっざ!」ということがよくある人、それは遅延のせいかもしれません。

そんな遅延の発生原因と対処法を紐解いていきます!

 

構成

オンラインゲームをプレイする際、もの凄く簡略化すると下図のような構成となっています。

この図を基に話をしていきます。

 

ネットワークの遅延

遅延の中でもかなりの割合を占めるのがネットワークの遅延。

ゲーム画面で 「Ping」 という単語を見かけたことはありませんか?

その横には 「XX ms」 などと書かれていると思います。

これがまさに遅延を表しているもので、データがゲームサーバーへ行って帰ってくるまでの時間を表し、msはミリ秒を表します。

つまり、「Ping 50ms」 などと表示されていたらゲームサーバーとの通信は50msラグってるわけです。
ラグは少ないほうがいいので数字が小さいほうが有利です。

ちなみに、Ping値の目安はおおむね下記のような評価になります。

Ping値 評価
~10ms めっちゃいい。この値で判定負けはありません。それが実力です。
11~30ms まぁいい。実力が同じ場合、環境がいい人には判定負けしてしまうことがあるかも。
31~60ms 普通。多くのユーザーはここ。(ゲームにもよるが)
61~100ms 悪い。実力があっても判定負けすることも。早急に改善したい。
101ms~ ありえない。そのままの状態でオンラインゲームをやるべきではない。お互いがワープしているように見える。

 

ではこのネットワーク遅延はどこで発生するか?

大きくホームネットワークの内と外に分けられます。

ホームネットワーク内

まずはホームネットワーク内です。

冒頭の図で言うところの「家」と囲まれているエリアのところです。

「パソコン」と「ホームルータ」の経路で遅延が発生し得ます。

余程特殊な接続方法でない限りはホームネットワーク内の遅延は1ms以下で、さほど気にすることはありません。

ただし、例えば無線LANを使っていたり、有線LANでも粗悪なLANケーブルを使っていると無視できない遅延が発生することがあります。

確認方法としては「ホームルーター」にpingコマンドを打ってみることです。

コマンドプロンプトを立ち上げて、下記のコマンドでpingが打てます。(ホームルーターのIPアドレスは各自で異なります)

ping 192.168.11.1

私の環境だと下記の応答が返ってくるため、遅延が1ms以下であることが確認できます。

「192.168.11.1 からの応答: バイト数 =32 時間 <1ms TTL=64」

遅延が1ms以上ある場合は有線LANにすることを検討しましょう。

 

ホームネットワーク外

次いでホームネットワーク外です。

冒頭の図で言うところの「ホームルーター」と「ゲームサーバー」に囲まれているエリアのところです。

ここは人により構成は様々ですので冒頭の図は参考程度に止めてください。

プロパイダ、そしてその契約内容などにより決定します。本来ユーザーが知る必要がない部分です。

そしてゲームサーバーのIPアドレスも本来ユーザーは意識しません。

知りたければググるか、問い合わせるか、パケットキャプチャでログを取得することです。

 

遅延時間の測定方法はホームネットワーク内と同じでpingコマンドで可能です。

例えば某ゲームのサーバーに対してpingを打ってみます。

ping 3.112.154.150

結果

「3.112.154.150 からの応答: バイト数 =32 時間 =31ms TTL=42」

31msなので普通くらいです。

 

ホームネットワーク外の遅延状況を改善したければ下記を試しましょう。

・光回線を契約する
→一般に、光回線が遅延の観点では最速です。

・インターネット接続方法をIPoEの契約にする。(⇔PPPoEは時間帯により遅いです)
→PPPoE形式ではプロパイダの認証サーバーを経由するため遅くなってしまいます。

・ゲームサーバーが複数あるなら物理的に近いサーバーを選択する(例えば中国サーバーと日本サーバーだと日本サーバーのほうが早いです)

[豆知識]
光回線の場合、データは光速で伝わりますが注意点があります。
光速は30万km/sと記憶している方がいるとおもいますが、正確には間違いです。
真空中では約30万km/sですが、光が通る媒体によって光速は変化します。例えば光ファイバーだと約20万km/hまで低下します。
この数字からかなり乱暴な計算が可能です。
例えば私の住む金沢市から香港までは直線距離で27000kmです。
仮に光ファイバーが直線で繋がっていたとすると27000[km]/20万[km/s]=135msとなり、最低でも片道で135msになります。
pingは往復の時間ですのでping値にすると270msにもなります。
光速とは言え、インターネットの世界だと遅いもんです。

実際には光ファイバーが直線で繋がることはないですし、インターネットの経路はより複雑ですので更に時間がかかることになります。

 

モニタの遅延

モニタでも遅延が発生します。

描画するデータが確定してから実際にモニタに反映されるまでの時間のことです。

冒頭の図ではパソコンとディスプレイ、ユーザーの間で発生します。

モニタでの遅延は下記2つに分けられます。

・PC(グラフィックボード)からモニタに信号が伝わる際に生じる、入力遅延。

・伝わった信号を実際にモニタに描画する際に生じる、応答速度。

詳しくはちもろぐさんの記事が分かりやすいです。

https://chimolog.co/bto-monitor-response-lag/

一例として、Dell S2716DGでは

入力遅延:2.7ms

応答速度:1ms

となっており、モニタの遅延としては計3.7msあります。

事務用モニタなどのゲーミングに適さないモニタだと数十msにもなることがあるため、低遅延なゲーミング向けモニタを揃えましょう。

 

音の遅延

音が鳴るところでも遅延が発生します。

有線であれば1ms以下の無視できる程度の遅延ですが、無線だと別です。

Bluetoothヘッドホン(イヤホン)の場合、データをやり取りするためのコーデックが肝になります。

コーデックの種類と遅延の大きさを下記表に示します。

コーデック種類 遅延
SBC 200~300ms
aptX 60~80ms
aptX LL(Low Latency) 15~40ms
LDAC 1000ms程度

この通り、一番遅延が少ない aptX LLコーデックでも15~40msも遅延があります。

この遅延を許容するにしてもaptX LLに対応した機器はまだまだ少なく値段もそこそこするため、
ゲーム用途であればヘッドホン(イヤホン)は有線が無難ですね。

 

人間の反応時間

視覚または聴覚に反応して行動を起こし始めるまでの時間を反応時間といいます。

wikipediaによると「平均的な反応時間は、視覚刺激の検出では180から200ミリ秒、聴覚刺激の検出では140-160ミリ秒である」とされています。視覚より聴覚からの刺激のほうが早いのは意外ですね。

また、最速でも0.1秒を切ることは無いとされています。

陸上競技で反応時間が0.099秒だったためにフライングとして失格になった例もあります。

 

こちらの研究結果によると刺激が強ければ強いほど反応時間も短くなるようです。

 

調べた内容から、人間の反応時間を早くするには以下のことをすれば良さそうです。

・モニタの輝度、コントラストをできるだけ上げる

・ヘッドホン(イヤホン)の音量をできるだけ上げる

 

まとめ

人間の反応速度が0.1~0.2秒ほどあることを考慮するとネットワーク、モニタ、ヘッドホンの遅延もかなりのウェイトを占めることが分かります。

「数十ms程度じゃ誤差程度だ!そんなの対策したって変わらないよ!」という意見もありますが、FPSにおいてはその数十msが命取りとなるので対策することは意義があると思います。