ゲーム機によるオンラインゲームのプレイ時にラグという現象が生じる。一瞬ではあるが動作が止まっているように見えたり、弾が当たったのに当たっていない等のプレイの整合性が崩れたりする現象を指す。オンラインゲームについての掲示板ではラグを避けるための環境の整備に言及されることが多い。その中でも無線LANはやめておいた方が良いという意見が多く、注目されている。この原因について考えたい。
なお、実際にオンラインゲームを行っている人間が書いた考察ではないので、実際にどうなっているのかは知らない。
アプリケーションと通信の特性
オンラインゲームに限らず、ネットワークを使用するアプリケーションにおいて重要な通信特性は以下になる。
- スループット
- 遅延
スループットは単位時間あたりのデータ転送量を表す。短時間に大量のデータを送信することが要求されるファイル転送やブラウジングにおいて重要な特性である。オンラインゲームの場合、大容量のデータ転送はそれほど必要がないケースが多い。有線LANでは100BASE-TX接続では100Mbps、1000BASE-T接続では1Gbpsの帯域幅を確保できるが、無線LANではIEEE 802.11nでは100Mbps程度、IEEE 802.11gではせいぜい20~30Mbps程度が限界だ。しかしながら、1Mbps程度あれば十分だと考えられるので、それほど問題になるとは思えない。
遅延は転送データが到達する時間を表す。ネットワークにおける遅延の中には簡単に処理遅延、キューイング遅延、伝送遅延などがある。処理遅延はパケットのヘッダを処理して宛先インタフェースに出力するまでの時間、キューイング遅延はキューの中に入ったパケットが出力されるまでの時間、伝送遅延は伝送路を経由して次の端末に到達するまでの時間とされている。
特にリアルタイム性が問われる格闘ゲームの場合、映像の1フレームの操作が勝負を左右すると言及されることが多い。ゲームの処理が1秒間に60フレーム処理される場合を考えると、1秒÷60フレーム=16.6ミリ秒であり、仮に1フレーム毎に他者との通信を行うときには16.6ミリ秒の間に転送完了する必要があると考えられる。これらのことから、スループットよりも遅延の重要性が高いと考えられる。
実際に無線LAN接続が有線LAN接続に比べてどのくらい遅いのか実験を行ってみることとする。無線LANアクセスポイントを用意し、Linuxサーバと接続する。PS3と無線LANアクセスポイントは実験に応じて有線LANと無線LANのどちらかで接続される。サーバからPS3に対してpingを行うことによってRTTを測定し、遅延時間を測る。PS3は802.11b/gに対応するため、今回は802.11gを用いた。PS3と無線LANアクセスポイントの位置関係は見通しではないが、同じ部屋であり、3-4mほどの距離である。
PS3–(有線)–無線AP–(有線)–サーバ
20 packets transmitted, 20 received, 0% packet loss, time 18997ms
rtt min/avg/max/mdev = 0.271/0.313/0.651/0.089 ms
PS3–(802.11g)–無線AP–(有線)–サーバ
20 packets transmitted, 20 received, 0% packet loss, time 19027ms
rtt min/avg/max/mdev = 2.017/3.854/8.679/2.307 ms
20回程度のpingで分かることは、有線LANの場合は0.3ミリ秒程度のRTTであり無線LANの場合は3.9ミリ秒程度のRTTであるということである。
また無線LANの場合は最大8.7ミリ秒程度のRTTが記録されている。
ゲームの1処理16.6ミリ秒を思い出すと、無線LANでもその域に数値が収まっているように見える。しかし、インターネット接続が何であるか、それによってどのくらいの遅延があるのかによって条件は変わってくるかもしれない。例えばインターネット接続による相手先へデータ到達にかかる遅延が14ミリ秒であった場合、今回の実験で観測された8.7ミリ秒の半分の4ミリ秒が遅延として現れると14+4=14ミリ秒の遅延となり、目標である16.6ミリ秒を超えてしまう。有線LANの場合、最大0.7ミリ秒でその半分の0.4ミリ秒が遅延としても14+0.4=14.4ミリ秒となり16.6ミリ秒に間に合う計算になる。
この結果は無線状況が良い場合であり、無線LANアクセスポイントとPS3がもっと離れている場合や、無線状況が悪くてフレーム到達率が悪く再送を必要とする場合、より多くの伝送遅延がかかることはあり得る。それに加えてインターネット接続の遅延が大きいと無線LAN接続が問題となり、有線LAN接続にすると問題が解決するケースがあるのではないか、と推定される。
逆にインターネット接続による相手先への片方向遅延が4ms程度であり、かつ無線LANが良い状況であれば、4+4=8ミリ秒程度となり、安定したプレイができる可能性が高いはずである。しかしインターネットの遅延や無線状況は時々刻々と変化するものであり、少しでも遅延に関する懸念を減らしたいと考えるのであれば、有線LANを導入すべきだろう。
まとめ
- ゲームの1フレームの処理は16.6ミリ秒であり、1フレーム間に1回の通信が必要であるとすれば、通信の片方向遅延は16.6ミリ秒以内に抑える必要がある。
- サーバに対して無線LANアクセスポイントを有線LAN/無線LANで接続したPS3で接続し、サーバからPS3に対してpingによるRTT測定を行い、それぞれ平均0.3ミリ秒/3.9ミリ秒、最大0.7ミリ秒/8.7ミリ秒のRTTが見られた。
- インターネット接続の遅延が小さく無線LANも良い状況で接続できるのであれば無線LANの遅延時間は小さく16.6ミリ秒の目標を達成できるため、直ちに問題になることはない。
- 無線LANは有線LANより懸念がある。
- インターネット経由で相手端末にデータ転送するためにかかる片方向遅延が大きい場合。
- 無線LANの接続状況が悪化した場合。
おまけ
同様に無線LANアクセスポイントにiPhone 4Sを接続し、サーバからiPhoneに対してpingを行ったところ平均93ミリ秒、最大145ミリ秒のRTTという結果が出た。
20 packets transmitted, 20 received, 0% packet loss, time 19028ms
rtt min/avg/max/mdev = 33.496/93.057/144.923/32.753 ms
これに対して、iPhoneアプリのPing Analyzer – Graphical Network Pingからサーバにpingを行ったところ平均27ミリ秒、最大44ミリ秒のRTTという結果が出る。
サーバからiPhoneへのpingでは平均93ミリ秒だが、iPhoneからサーバへのpingでは平均27ミリ秒。
なぜ、このような結果が出るのか。
こういった差異こそがネットワークや無線LANの理解を深める、よい課題なのかもしれない。