リアルタイム性にシビアなゲームと無線LANについて

ゲーム機によるオンラインゲームのプレイ時にラグという現象が生じる。一瞬ではあるが動作が止まっているように見えたり、弾が当たったのに当たっていない等のプレイの整合性が崩れたりする現象を指す。オンラインゲームについての掲示板ではラグを避けるための環境の整備に言及されることが多い。その中でも無線LANはやめておいた方が良いという意見が多く、注目されている。この原因について考えたい。

なお、実際にオンラインゲームを行っている人間が書いた考察ではないので、実際にどうなっているのかは知らない。

アプリケーションと通信の特性

オンラインゲームに限らず、ネットワークを使用するアプリケーションにおいて重要な通信特性は以下になる。

  1. スループット
  2. 遅延

スループットは単位時間あたりのデータ転送量を表す。短時間に大量のデータを送信することが要求されるファイル転送やブラウジングにおいて重要な特性である。オンラインゲームの場合、大容量のデータ転送はそれほど必要がないケースが多い。有線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の理解を深める、よい課題なのかもしれない。

今年の夏の節電の結果

書き忘れていたので。

  • 5月実績 約270kWh
  • 6月実績 約130kWh
  • 7月実績 約130kWh
  • 8月実績 約170kWh

寝る時、エアコンつけっぱなし。エアコン使いまくってこの程度なら、どうでもいい数値。というか寝る時エアコン切っても、効果的かどうか疑問。

ミルエネは効果的だけれども、今回の施行ではミルエネ付ける前に節電終わってた。8月はとある事情でミルエネを使わなかったけれども、そこまで増えていないので、抑止の効果はあるけれども、必須ではない感じ。

あと体重は4月から測定開始して5kg減った。後1年で10kg減目指す。それでベスト体重になる。冬にリバウンドするので、気をつけたい。

未だに体重計測の自動化について考え続けている件について

いや、色々やってきた。
体重計を買ってきたり、Google Docsを使って「最先端!」とかやってみたり。

無理。途中で手打ちはやらなくなった。

しかし、何も言わないでほしい。
だけど、まだ諦めたわけじゃない。

乗るだけで計れるシステムがどうしても欲しいんだ!

体重計とネットワークと計測美の頃からずっと考えてるんだけど!

Aプラン
安価な体重計にWebカメラを用意し、画像認識で自動起動し、文字認識で数値を自動アップロードする方法。

もう無理。いや、「文字認識で数値を自動アップロードする」なら、できる。でも、体重計の上にWebカメラを載せつづけるのがイヤ。Webカメラが届く範囲に限定される。近くにノートPCがないと使えない。だからって無線のWebカメラを検討したり、デジカメで撮影してEyefiで送ればいいんじゃね?と考えたり。むしろ、iPhoneで撮影して文字認識すればいいんじゃね?と考えたり、した!だったら、今までどおり携帯で文字打ってDocsにアップロードするのと話は変わらないじゃん。

もうめんどい。

Bプラン
既製品を買う。WiFi Body Scale、18,000円。

買ったら負けな気がする。

Cプラン
考えに考えた結果、体重計、体重計、体重計、は!一時期、Wiiは体重計といわれてた時期があるな…

バランスWiiボードのことかぁぁぁぁぁ!!!

ということで、バランスWiiボードのHackがどのくらい進んでいるのか調べてみたところ、LinuxでBlueTooth経由で利用できるらしいことが分かった。
Use a Wii Balance Board with Linux

This is a snapshot, but the program runs just as fast as any video game. You can lean and move the circle around really fast. And in the bottom right, you can see that I weigh 81.74 kg, which is about 180 pounds.

おお、10gの精度で出てるじゃないっすか。

バランスWiiボートを使って、どのようにヒューマンインターフェースとして使おうか、という議論があるみたいだけど、

普通に体重計として使えばいいんじゃなかろうか。

ということで、今はCプランを考え中。バランスWiiボート、中古屋に売ってるかなぁ。

GoogleDocsで計るだけダイエットを1ヶ月続けてどうなったのか

他人の体重の話ほど面白くないものはない。ましてや自分の体重の話ほど気色悪いものはない。それでもGoogleDocsを使ったダイエット方法の話をまとめることに少し意義を感じたので、体重計を買ってからの1ヶ月あまりの体験を書いてみようと思う。

「疲れやすいのは体重が増えたせいではないのか?」

常々体重を減らしてみたいと思っていた。それはまったく運動というものをしない、散歩すらしない運動嫌いという性格があり叶わなかった。減らしたいという願望は、疲れ易いという経験からきていた。数km歩いただけで足がだるくなるのは異常だと感じていた。疲れない足が欲しかった。

ついカッとなって体重計を買ってしまった。50g単位で測定できる体重計だ。50g単位で測定できる体重計はNHKの番組「ためしてガッテン」の「計るだけダイエット」の回で推奨されていた。覚えているのは計るだけでダイエットができる、という点だった。ふとした話題でAmazonで体重計を検索してみたところ、手頃な値段で購入できることが分かり踏み切った。

体重計で計ってから、疲れやすくなったように感じるのは体重が増えたせいではないのか、という仮説が自分のなかで生まれた。というのも測定された数値が自分が想像していた値よりも+8kgだったからだ。信じられなかった。いや、過去に+4kg増で驚いた記憶があるような。そういえば最近は菓子をバリボリ食うことが習慣化されている。

そのような感じで体重に敵意を持つようになった。だけれども、この時点で減量を行う気持ちは強くなかった。上手くいかなかったらどうしようか、という自分を守る気持ちが強かった。というのも昨年にスローステップ運動という数十分の運動を行っていたが途中で辞めてしまったからだ。

GoogleDocsが思ったよりも使えることに気がついた

体重測定環境の準備を粛々と進める。減量そのものには強い希望はなかったが、測定・分析の環境の構築は大好物という勢いで色々考えてみたり、使ってみたりを初めていた。思考実践の結果、3つのポイントを上手く抑えることで測定美を実現できるという結論に至った。

  • 測定を忘れないための準備として、よく通る場所に体重計を置くこと
  • 分析を忘れないための準備として、GoogleDocsスプレッドシートのフォームとグラフ化を用いること
  • 測定を楽しむための準備として、インターネットの検索でよく調べること

その気はないのに、なぜか準備は着々と進んでいた。

測定を忘れないための準備として、よく通る場所に体重計を置くこと

部屋のすぐ近くの廊下に置くことにした。

自分は習慣付けできない性格であることはよく分かっている。そして忘れっぽい。忘れないためには通り道、じゃまになるように体重計が設置されているレベルじゃないとまず無理だ。それに、普段座っていてもよく見える位置でなければ、夜に測定することを忘れる。部屋の中にあっては、いけない。ふと寝ようと歩いていると、そこに体重計があるのが、驚きがあって良い。

分析を忘れないための準備として、GoogleDocsスプレッドシートのフォームとグラフ化を用いること

OpenOfficeCalc(Excel)と比べてGoogleDocsスプレッドシートを利用することに決めた。

測定したデータは加工しやすいデジタルデータで管理したい気持ちがあった。紙では数カ月を通しての測定結果を出すことが難しいからだ。どうしても数カ月の測定のグラフが見たかった。また紙のグラフの場合には見やすい場所に貼る方が良いのだが、デジタルデータでもどの端末からでも見やすいことを条件とした。

1つの検討としてOpenOfficeCalcはどうなのか考えた。強力なグラフ描画、豊富な関数機能は魅力的に思えたが、OpenOffice全体に特有の起動するまでに時間がかかる点が気に入らなかった。この時間だけで、測定しようという心が折れる可能性が高い。また全てのPCにインストールが必要で、Calcドキュメントをネットワークを使って共有するなんてことは上手い手法とは思えなかった。

そこでWeb上で記入できるGoogleDocsスプレッドシートはどうなのか、と検討を始めた。懸念だった起動時間はブラウザのみだから、Calcほど酷くはない。しかもブラウザだけあれば閲覧できるので、他のPCにインストールする手間もない。管理の厳しいPCでも見ることができるし、データの送受信も簡単だ。これに加えてフォーム機能がとても素晴らしいということに気づけたことは予想外だった。

フォーム機能が予想外に使えた

GoogleDocsスプレッドシートへの記入でさえ”最終行セルへの移動と記入”という厄介な作業で気が滅入りそうだった。が、フォーム機能では”あなたの体重いくつですか?”の簡単な問いに答えるだけのアンケートを作ることが出来た。ときにはそのアンケートにiPadのブラウザから記入している。

というのも、Calcの起動以前にPCの起動そのものがストレスとなっていた。自分の持っているPCはどれも夜間はスリープ(メモリ内容をハードディスクに退避して電源が切れる)機能を使っている。この仕組を使っていても、(1)30秒程度の待ち時間(2)ログインパスワードの入力時間(3)ブラウザ起動…とかったるい作業が必要だった。

ところがiPadを使ったフォーム入力に必要な時間は、PCがスリープから復帰する時間の間に終わらせることができるほど短時間だった。この出来事が測定のその後に時間がかかるという意識を消した。このGoogleDocsスプレッドシートのフォーム機能は簡単なHTMLで構成されており、携帯電話やポータブルゲーム機であるPSPでも入力できることを確認した。

測定を楽しむための準備として、インターネットの検索でよく調べること

測定を楽しむためにGoogleDocsスプレッドシートで様々なグラフ作成を楽しんだ。例えば、測定ごとの差分をグラフ化したり、朝・夜のみグラフを作成したりだ。グラフが動かないのは楽しくないので、無理のない範囲で1日に3回の測定を行うことにした。

忘れていた計るだけダイエットの基礎について調べなおした。おさらいとしては以下の通りだ。

  • 一気に体重を減らすと食欲を抑えるホルモン「レプチン」が急激に減って食欲が抑えられなくなる
  • 1日50〜100g減らして1週間で500g減を目指す(急激には体重を減らさないように気をつける)
  • 1日50g減ったかどうかを知るためには50g単位の体重計が必要
  • グラム単位の変化を見逃さないためには同じ服を来て測定する
  • グラフを描き、グラフを分析すると出る快楽物質で食べることによって出る快楽物質を代替する
  • 腹が減ったら運動

また暑い時に出る汗と運動したときに出る汗とは違う、という話も面白い。

測り続けていたら減ったのでその気になった

ここまで準備をやってきてもその気にならなかった。単に測定を続けていた。1週間ほどたった頃、何もしなくても体重が減っていくという誘惑に惹かれていった。

「整いました!」という声が聞こえたかどうかは分からないが、”道具が整った”、”理由が整った”、そして”時期が整った”というイメージを持った。いつ減量を始めた、という明確な気持ちがないまま、なし崩し的に減量が始まっていた。それに呼応するように運動も始めていった。

食事は減らさず、運動はちゃんと行う

個人的に減量の理念として、

  • 食事は減らさない
  • 減量を始めたら運動はきちんとする

という2点を守りたいという気持ちがあった。

食事は減らさない

通常の量の食事を減らすと、もうそれだけでストレスなので減らさないことにした。食事の減量を意識せずに測り続けていただけで減ったのだから、問題はないはずだ、という解答を持っていたからだ。ただし、ときどき調子にのって食べる過ぎることがあるので、これはやめるようにした。

菓子も食べたいときは今まで通り食べるようにしてみた。そうして初めて、お腹が減っていないのに惰性で買ってあった菓子を食っていた、という事実に気づいた。その後、食べないように気をつけてみると、ハングリー精神が戻ってきたようだった。

炭酸飲料・スポーツ飲料は飲み過ぎに注意をする。飲むならお茶、とくにカフェインの入っていない麦茶の量産体制を構築することで対処した。

減量を始めたら運動はきちんとする

食べない減量の場合、運動をしなければ筋力が衰えてますます疲れそうだ。逆に食べる減量の場合、落とすためには運動が必要だ。筋力低下は避けたいので後者の方がいい。

前回断念したスローステップ運動を再開することにした。足の運動で、足が疲れなくなることに期待しているからだ。また減量のためには無酸素運動よりも有酸素運動に持ち込みたい。有酸素運動は数十分続けなければ意味が無いので、目標設定を30分に設定した。ただし厳密ではなく20分を超えたらよいくらいのゆるい感じで行っている。この運動は漫画や本を読みながら・テレビを見ながら・ゲームをやりながら行える点もよい。

約5週間続けた結果は3kg減

1週間で600gずつ減っていった計算になる。これは少し減りすぎだが、問題はなくいい感じだ。ただ個人的には夏の典型的な食細りによる夏痩せの可能性が高いとして観測を続けている。

それ以上に測定を1ヶ月続けられたことが嬉しい。記録・日記を毎日つけるような習慣付けは失敗が多かったが、測定は上手く行っているようだ。これはGoogleDocsで上手く環境を作れているからかもしれない。

足が疲れにくくなった実感は感じられない。というよりも、足がプルプルしている。貧乏揺すりではなく、筋肉痛だ。筋肉痛は超回復の作用で筋肉を作っている状態なので、ある程度の許容と快感がある。

測定を続けていくと、体重の推移が理解出来ない時があるが、焦らない方がよい。急に1kg増えたり1kg減ったりするときがある。原因は水を沢山飲んだとき、その水が抜けていったときのような気がしているが、未だに確信はしていない。仮説の状態なので、水をたくさん飲んだ日は言い訳欄に、水を飲んだ旨を書くようにしている。

参考になる人がいれば幸い

と、始めてまだ1ヶ月しか経過していないが、体験記としてまとめた。自慢にはなるレベルではないが、参考になる人がいるかもしれないと考えたからだ。

この画期的なダイエット手法を現代のデジタルを上手く活用して行うにはどうしたらよいのか、という思案が出発点だった。「ためしてガッテン」での「計るだけダイエット」の初出は2003年だそうで、この間、いかにexcelやその他を使ってどうにかしようと思っていたらしいが、結局はGoogleDocsに落ちついた。いかに測定後の入力を短時間で出来るのか、そして閲覧時のグラフ作成を簡単に行えるのかが鍵だった。

GoogleDocsを利用した擬似計るだけダイエット

1ヶ月前に体重計とネットワークと計測美を考え、結果的にWiFi Body Scaleを買ったほうがよいだろうという結論を出しつつも、Amazonに売っている50g単位で計れる格安な体重計を買ったという顛末を迎えた体重計の一検討。

今宵の進展はデータの記入方法について。

OpenOffice Calcによるデータ記入は芸が無いが、だからといってrailsで自前の体重サイトを作るほどの執念は無い。そこで、流行のAjax、Google Docsのスプレッドシート(表計算)にて、体重を記入することに決めた。どのPCからでも、ブラウザさえあれば更新が行える便利さと、簡易的ながらもグラフを描画できる機能が気に入ったからだ。

使い込んでいった結果、新たな境地に達した。Google Docsの表計算にはフォーム(アンケートフォーム)という機能があるが、これを利用することだ。フォームを使うと簡単にWeb上でアンケートを作成できる。その結果は表計算のシートに1行ずつ収納される。フォームに投稿があった場合にメールを飛ばすようにすれば、簡単なWebサイトの「お問い合わせ」としても利用できる。

フォームの利点は、Ajaxではない簡単なHTMLフォームで構成されることだ。それはつまり、通常のPCでも、iPadでも、PSPでも、携帯電話でも、簡単なHTMLに対応する機器であれば、何でも対応する。


フォームの作成はPC上で行う。Ajaxばりばりの作成画面だ。慣れれば簡単に質問が作成できる。ガッテン流の言い訳欄も準備。運動する人は運動欄があってもいいかも。


質問が完成したら、フォームに回答する。フォームには何度でも回答できる。フォームのアドレスを携帯電話やPSPのお気に入りに入れておく。


フォームの回答には、自動的に日付がつく。B列に対してグラフを自動作成するようにする。これで完成だ!

さらに、作成した表、グラフはブラウザ環境で簡単に見ることができる。特にグラフについては、単純な画像なので、色々と流用が可能だ。体重を誇示したい人はブログのサイドにブログパーツと一緒に並べよう。

公開HTMLの例
公開HTMLのURL

公開スプレッドシートの例

公開グラフの画像の例

iPadのGoodReaderというソフトを利用すると、Google Docs APIにアクセスできる。つまり簡単に体重xlsをダウンロード可能だ。しかしグラフは描画してくれない。iPadを使って体重を自慢したい人には残念な結果だ。”公開グラフの画像の例”にある画像をブラウザで見せて我慢しよう。(他人の体重など見たくは無いが…)

格安で軽量な50g単位の体重計、どこでも記入できるシートの2つが揃う。こんなにうれしいことはない。とりあえず計るだけの環境は整ったので、計るだけ計ってみようと思う。ダイエット的な積極な動作はしないで、気軽に計ってみたい。

興味深いのは測定し始めて、下がりトレンドを見せている点だ。また、急激に下がったような日もあるが、すぐに戻る。これがリバウンドというものであり、一気にダイエットを行ってもリバウンドによって効果が無くなるといわれているものだ。この手のダイエットは1日50g〜100gの減量を行うことに注力し、細かな数字のゆれは気にしないことが良いとされている。このグラフの表すトレンドと、生活の関連性を深く考え、分析していくことが、食の快楽の代用たる知の喜びに変化していく…ということが計るだけダイエットのコンセプトと受け止めている。

#

大事な注意点として述べなければならない。例にある体重は架空のもので、執筆者と何ら関わりの無いように見える、ということだ。それは妄想の世界の産物だ。

Amazonに売っている50g単位で計れる格安な体重計を買った

BS-113BS-221の両方。家族用と自分用。

ガッテン流の体重測定では、体重計の選択ポイントとして「デジタルの体重計を利用すること」と「50g単位で測定できる体重計を利用すること」の2点が挙げられていた(ように思う)。Amazonで調べてみたところ、BS-221が3,343円、BS-113が2,456円で販売されていた。通常の体重計を買うよりも割安感を感じたので、双方ともに購入して見ることにした。安価な製品なので精度の点で不安があるが、2つ買えば双方利用して確認することができると考えた。

BS-221は、体重以外にも体脂肪を測定する電極、デジタル表示部を見やすくするランプなどの機能を有している。それに対してBS-113は体重を計るのみしか出来ないし、表示部を照らすランプもない。また測定時の電源の入れ方の違いが有り、BS-221は本体中央部にあるボタンを押すことで電源が入るが、BS-113は足で「ノック」することで電源が入る。また電池の本数がBS-221では4本必要だが、BS-113は2本のみで済む。

これらの体重計はサイズがかなり小さく、また重量も軽い。iPadよりも”少し軽い”程度だ。よって、iPadを持ち歩ける筋力があるのなら、体重計をも旅行に連れて歩けるほどの軽さだ。体重測定による健康管理は旅行による中断があってはならないので、重宝することだろう。またデザインは既存の体重計に比して洗練されており、そこらへんに転がっていても残念感がない。

残念なところは、とても小さいので乗るのが大変だ、という点だ。19cm×22cm程度しかないため、表示部のすぐそこに足をおくようにしないとバランスよく乗れない。たまに足で表示部を隠してしまうこともある。

個人的には体脂肪には興味がなく、またLEDランプがなくとも読めるので、2,456円であるBS-113がおすすめだ。光量の足りない場所や目の悪い人が利用する場合は、ランプつきのBS-221の方が良いかもしれない。