ブログネタ
ドラゴンクエスト10 に参加中!
PING1

まえがき

ping値の話題はDQXに限らずオンラインゲーム全般で問題になりがちです。
ping値の大きな環境では移動がカクカクしたりキャラがワープしたり素早い操作が行えなくなるといった、いわゆるラグと呼ばれている症状が発生しやすいと言われていますし、ラグが多く発生する回線のプレイヤー本人だけではなく一緒に遊ぶ他のプレイヤーにも漏れなく影響が及ぶので、ping値の大きいプレイヤーを嫌う風潮は残念ながら確かにあります。
今回はping値についていろいろ考えつつ、そこからプレイヤー側で改善できそうな部分を探っていきます。
主にWindows版のDQX向けの内容になりますが、Wii版、Wii U版でも該当する項目は多少あると思います。

ping値と回線速度

ping(ピン、またはピング)は宛先の機器までの通信が正常かどうか調べるための仕組みです。通信が正常であれば相手の機器から返事が返ってきます。
ping値はpingを実行した際に宛先の機器から返事が返ってくるまでの時間を指します。

インターネットでウェブサイトの閲覧やメールをやり取りなど他のコンピュータと通信をする場合、実際のデータを送信する前にどこにある端末とどのような通信を行うのか操作コマンドを送信して取り決めの作業を行っています。このコマンドを送る場面で重要なのが通信回線のping値です。通信回線のping値が小さければそれだけ早くコマンドのやり取りを済ませることが出来ます。

例えば1GBの1個のデータをサーバーからダウンロードする場合、データを送るように要求をして全てのデータを受け取り終わるまでに10Mbpsの回線なら15分から20分程度、100Mbpsの回線なら1分30秒から2分程度、1Gbpsの回線なら10秒前後の時間がかかります。合計でかかる時間の中でも最初のコマンドのやり取り部分の割合はとても小さいのでping値よりも回線の太さが重要になります。

一方、オンラインゲームでゲームサーバーと接続する場合にやり取りされるデータの量はそれ程大きくありませんが、細かい通信を頻繁に行うのでそれだけコマンドをやり取りする機会も多くなります。
更にゲームの場合30fpsや60fpsという細かい時間単位の中で複雑な操作を行っています。
FPS(Frames Per Second)は1秒当たりのフレームの数を表し、60fpsの場合1フレームは約0.016秒(16ミリ秒)となります。例えばping値が50msの場合、コマンドのやりとりだけで3フレーム分の待ち時間を費やすことになります。
オンラインゲームを作る側もping値が環境によって大きく異なるのは理解しているので、当然ある程度の速度の差を意識して余裕を持たせた設計をしているのですが、それでもping値が芳しくない環境ではプレイ環境にも大きな影響が及ぶのです。

ゲーム内の絶対時間はフレーム数だよ - プログラマーの脳みそ
http://d.hatena.ne.jp/Nagise/20090824/1251117275

インターネット回線の速さの目安として回線速度は宣伝文句としてよく使われていますが、オンラインゲーマーが求めているping値が良いことを謳っている業者はまず見かけません。

光回線で1GbpsやLTEで150Mbpsなど実際に出るかどうかは分からないけど接続業者が規格上の最高速度をアピールするのはよくある光景です。bps(bits per second)は1秒当たりに送れるデータの量を表します。回線速度が1Gbpsの場合1秒間で1ギガビットのデータを送ることが出来ます。一般にパソコンやスマートフォンではデータファイルの大きさをビットではなくバイトで表していて、1ギガビットは125MB(メガバイト)に相当します。

バイトとは|byte - 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/%E3%83%90%E3%82%A4%E3%83%88.html

ビットといえば、1990年代に「100メガショック」のキャッチコピーで知られたSNKのゲーム機「NEOGEO」は、ソフトを収めるロム容量の大きさが100メガビットを超えたことからキャッチコピーを用いるようになりました。100メガビットをメガバイトに換算すると12.5MBとなります。
1986年発売のファミコン版初代ドラゴンクエストは512キロビットのロム容量で収めるためにカタカナの一部の文字はデータとして入っておらず、例えばゲーム内で「アレフガルド」と表記することは出来ませんでした。1988年発売のファミコン版ドラゴンクエストIIIでは2メガビットまで容量が増えたものの開発中でどうしても容量が足りずにオープニングをバッサリと削る羽目になりました。1992年発売のスーパーファミコン版ドラゴンクエストVでようやく全てのカタカナを使うことが出来るようになったものの(DQ4のアリーナやクリフトの「リ」はひらがなの「り」で代用していた)、それでもロム容量は12メガビットだったことを考えれば、当時の100メガショックは桁違いの衝撃だったのです。

NEOGEO MUSEUM
http://neogeomuseum.snkplaymore.co.jp/
堀井雄二「恥ずかしい昔の資料も掘り起こした」――『誕生25周年記念ドラゴンクエスト展』レポ - エキレビ!(1/2)
http://www.excite.co.jp/News/reviewmusic/20111011/E1318262679097.html
容量削減の創意工夫その1(ゲーム業界.com)
http://www.gamegyokai.com/column/capacity.htm

利用者だけでなく業者側の立場としても実際にどれだけの速度が出るのか契約して工事をしてみないと分からない部分は多いのですが、過去に契約を済ませた他のお客様の使用実態から似たような事例を探して、だいたいこの程度の速度になると目安を大まかに示すことは可能です。
また、インターネット上の速度計測サイトを使ってみた人の計測結果も大まかな目安としては使えます。

みんなの測定結果 - Radish Network Speed Testing -
http://netspeed.studio-radish.com/cgi-bin/netspeed/openresult/openresult.cgi

ping値は通信する宛先が異なれば当然値が変わってきますし、それこそインターネット上に無数に存在しているサービスを網羅して、お客様の環境ではこのサービスならping値が優れてますと店頭で売り込むのは無理があるのです。

回線速度は道路の幅で例えられることがしばしばあります。
幅の広い道路には一度に多くの車を走らせることが出来るように、太い回線には一度に大量のデータを通すことが出来ます。
一方pingでやりとりするデータは非常に小さいので途中の回線が細くてもうまくすり抜けて通ります。
ping値の方が回線速度よりも純粋に反応の速さだけを掴むことに適しているとも言えます。

回線速度とは|回線速度の測定、スピードテストのラピッドネット
http://www.rapidnet.jp/explanation.php

ping値の調べ方

普段パソコンを使っている人であればping値はすぐに調べることができます。
パソコンに標準で搭載されているコマンドプロンプトからpingコマンドを対象のサーバーに対して実行するだけです。

Tech TIPS:これだけは覚えておきたいWindowsのコマンドプロンプトの使い方 (1/2) - @IT
http://www.atmarkit.co.jp/ait/articles/1502/13/news147.html
Tech TIPS:これだけは覚えておきたいWindowsのコマンドプロンプトの使い方 (2/2) - @IT
http://www.atmarkit.co.jp/ait/articles/1502/13/news147_2.html

ネットワークコマンド使い方:ping ~ネットワークの疎通を確認する - @IT
http://www.atmarkit.co.jp/ait/articles/0108/30/news002.html

pingコマンドはping値を調べるだけでなく、接続先のサーバーが動いているかどうかも分かります。
反応が正常に返ってくれば接続先のサーバーは動作していますし、反応が返ってこなければサーバーは動作していません。
(サーバーの機械そのものは動いていて返事を返すもののサーバー上でプログラムが動作していなかったり、そもそもpingに対して返事をしないサーバーも存在します。)

DQXの場合サーバーのIPアドレスは分かりやすい形で公表されていない様子なので、DQXと同じくスクウェア・エニックスのネットワーク上にあるFF14のサーバーのIPアドレスで仮調査をしてみます。FF14は海外にもサーバーが設置されているので今回は国内のChocobo鯖(124.150.157.29)を使います。

FFXIV:ARR Server Status
http://www.arrstatus.com/

124.150.157.29に対してpingを実行してみます。
C:\>ping 124.150.157.29

124.150.157.29 に ping を送信しています 32 バイトのデータ:
124.150.157.29 からの応答: バイト数 =32 時間 =10ms TTL=240
124.150.157.29 からの応答: バイト数 =32 時間 =8ms TTL=240
124.150.157.29 からの応答: バイト数 =32 時間 =9ms TTL=240
124.150.157.29 からの応答: バイト数 =32 時間 =8ms TTL=240

124.150.157.29 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 8ms、最大 = 10ms、平均 = 8ms
(Windows 7での実行例)

Windowsのpingコマンドの場合、標準では4回pingを送信します。
この実行例では124.150.157.29に対して4回pingを送信して4回とも正常に応答がありました。
時間の部分でms(ミリ秒)単位で書かれている数字がping値です。
この実行例では8~10msがping値となります。

ゲームで遊ぶ際のping値の目安はゲームのタイトルやプレイヤーの感覚で一概に言えない部分はあると思いますが、大まかに区切って20msより小さい場合は優秀で、50msを超えてくると明らかにラグを感じるようになり、100ms以上となると厳しい気がします。

現状ではping値が芳しくないので改善したいと考えた場合、データの通り道を替えるのが有効な方法となります。

(続く)
DQXでping値を小さくするための考え方を探す方法(1)

http://disruption.blog.jp/archives/49257170.html
DQXでping値を小さくするための考え方を探す方法(2)
http://disruption.blog.jp/archives/49257751.html
DQXでping値を小さくするための考え方を探す方法(3)
http://disruption.blog.jp/archives/49258755.html


クリックで救える命がある。クリックでスポーツを応援するクリック募金 Heartin(ハーティン)