Skip to content

Instantly share code, notes, and snippets.

@kimoto
Created January 12, 2011 09:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kimoto/775950 to your computer and use it in GitHub Desktop.
Save kimoto/775950 to your computer and use it in GitHub Desktop.
帯域測定サイトがFPSにおいてアテにならない理由
帯域測定サイトがFPSにおいてアテにならない理由
= 用語整理 =
まず用語の整理、知ってる人は読まなくて良い
bps
Bit Per Second
1秒間当たりのデータ転送量、単位はbit
FPS
First Person Shooting
一人称視点のシューティングゲームのこと
fps
Frame Per Second
1秒間当たりに何フレーム更新されるか
フレームとは画像のこと、1秒間当たりに何回画面が更新されるかという値
60fpsであれば1秒間に60回画面が更新されるということ
30fpsであれば1秒間に30回画面が更新されるということ
10fpsであれば1秒間に10回画面が更新されるということ
時間の単位について
1秒は1000ミリ秒
英語で書くとそれぞれ1sec、1000msec(1000ms)
bpsってのはbit per secondの略で、秒間当たりのbit数
1秒ってのは1000ms。msとはミリセカンドのことで秒より1/1000小さい時間の単位
= 概論 =
・一般的な帯域測定サイトでは1秒間当たりの平均データ転送量(bit)が測定できるが
FPSゲームにおいてはそれよりも小さなミリ秒間当たりのデータ転送量が重要である
よって秒間当たりの平均データ転送量(bit)はあまり意味がない
・秒間当たりの平均値では1FPSに相当するミリ秒あたりの遅延のばらつきがわからないため、標準偏差を利用した測定サイトがあるべきだ
= 詳細 =
なぜ敵がカクついて見えるのか
FPSにおいて必要とされる転送速度は60FPSのゲームであれば、1FPSあたり0.016666666秒
16msごとに16ms以内でデータを転送することが必須であり、そうでなければカクついて見える可能性があるということ
ラグ補正の仕組みについて
実際には近年のFPSではラグ補正の仕組みが存在するので16msほどは必要とされない可能性がある
Quake EngineやSource Engineで作られたゲームはデフォルトでは100msまではラグ補正の仕組みが有効に働く
詳細な説明に関しては割愛するがこれはどういった仕組みであるか簡単に説明すると
サーバー以外のすべてのプレイヤーは100ms過去の時間を見るように設計されているので100msまでの遅延は存在しないことになる
帯域測定サイトでわかること
一般的な帯域測定サイトでは1秒間(1000ms)当たりの平均データ転送量(bit)を調べている
FPSにおいては1000ms当たりの平均通信速度を調べてもあまり意味がない
秒間当たりの平均を調べることの意味のなさ
どういう風に意味がないのかというと60fpsのゲームでは16msごとにデータが転送されることを想定しているのにも関わらず
32msごとにその二倍の量送信されてしまえば実は秒間当たりの平均としては同じ値になってしまうからだ。
たとえば以下のAとBでは秒間当たりのデータ転送量は同一のものとなる
A. 10msの時点でデータ転送量が0で990msの時点でも0
1000ms(1秒)になった時点で1000bitのデータが転送された場合
1000msあたりのデータ転送量は1000bitとなり、1000bpsとなる
B. 10msごとにデータが10bit送られた場合
1000ms当たりの平均データ転送量は1000bit(10bit * 1000ms / 10ms)となり、1000bpsとなる
= まとめ =
・fpsにおいては秒間当たりの平均データ転送量(bps)はアテにならない
・平均値では値のばらつきがわからないという問題、偏っていた場合も安定していた場合も平均値は同じになってしまう
・10msごとの回線速度の標準偏差がわかる帯域測定サイトが欲しい
= 参考文献 =
http://www.hinkai.com/qc/hensa.html
http://www.cap.or.jp/~toukei/kandokoro/html/14/14_2migi.htm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment