戦闘機対戦ゲームをFREDDYで実装!

2008年8月25日(月)
横山 昌平

FREDDYによる対戦ゲームの仕組み

 GFighterはもともと、研究発表として実装されたため、ゲームとしてはランキングやセーブなどの基本的な機能が抜けている。しかしながら、WebブラウザとWebサーバーというクライアントサーバー型を超えて、複数のWebブラウザが連携する仕組みをイメージする一助になるのではないかと考えている。

 GFighterでは、ゲームのアクション情報、例えば機体の位置の緯度経度、方向、レーダー照射やミサイルなどの情報をFREDDYフォーマットに付加して、Webサーバーから、参加しているユーザーのWebブラウザへ配信している。これらの情報は、時々刻々と変化するため、これらのデータはデータストリームとして、常にWebサーバーから各ユーザーのWebブラウザへ配信が続けられている。

 このようなデータストリームの通信はFREDDYの得意とすることである。Webアプリケーション側では、データの更新に伴う再取得やサーバーデータとの同期などを考えずとも、単にFREDDYのストリームデータを読み込み続ければ、刻々と変化するゲームの情報を得ることができる。

 WebブラウザからWebサーバーへの情報のアップロードは、FREDDYのPageを取得するURLに含まれている。この仕組みは、現在はFREDDYの機能としてではなく、独自の実装となっているが、今後の課題としてFREDDYに取り込みたいと考えている。

FREDDYの性能評価

 さて、本連載の最後として、FREDDYの性能評価を示したい。本実験では、XmarkのXMLデータ生成器で作成した1MB、10MB、100MBのXML文書(それぞれdataS.xml、dataM.xml、dataL.xmlと呼ぶ)を利用して、FREDDYとスタンドアロンのSAXとの比較を行う。スタンドアロンアプリケーションはPythonで実装した。

 データはそれぞれサーバー上にあり、これをFREDDYとSAXで読み込み、その読み込み完了までの時間を計った。Webアプリケーションの実行にはMicrosoft Internet Explorer 6(以下IEと略す)とMozilla FireFox 2(以下FFと略す)の双方を用いた。つまり、本実験では以下の5つの場合に関して、SAXによってXML文書を処理し終わるまでの時間を計測している。

・Pythonで実装されたスタンドアロンアプリケーション(図3のSAX)
・FFを利用してXML文書を直接読み込む(図3のFreddy(FF))
・FREDDYフォーマットに変換済みのデータをFFで読み込む(図3のFreddy(FF)Cache)
・IEを利用してXML文書を直接読み込む(図3のFreddy(IE))
・FREDDYフォーマットに変換済みのデータをIEで読み込む(図3のFreddy(IE)Cache)

 計測は3つのテストデータに対して、上記5パターンそれぞれの処理終了までに掛かる時間を計測した。計測は100回ずつ行い平均時間を算出した。図3にその結果を示す。グラフは横軸が文書サイズであり、1MB、10MB、100MBの個所にそれぞれの読み込みに掛かった時間(縦軸)が表されている。

 この結果から、まずIEとFFはほぼ同じ動作速度が得られることがわかった。また、読み込み時間は文書サイズにのみ比例することがわかった。

 動作速度に関してはFREDDYフォーマットに変換済みのデータを利用する場合はスタンドアロンアプリケーションによるSAXの処理の1.5倍程度、XML文書を直接FREDDYで読み込む場合はスタンドアロンアプリケーションに比べて2倍程度の処理時間を要することがわかった。

 言い換えるなら、この結果はWebブラウザという非常に制限された環境においても、スタンドアロンアプリケーションの50%~75%のスループットを得ることができることを示している。

 この実験ではSAXハンドラは何も処理を行っておらず、理想的な状態での計測である。スループットはアプリケーション次第で変化するものの、この結果からJavaScriptで大規模なデータ処理ができることを示していると考えられる。

 今回の連載は「JSON vs. FREDDY:Web軽量通信(http://www.thinkit.co.jp/article/116/)」と題して、静岡大学情報学部で筆者らが研究を行っているFREDDYを紹介した。内部実装などの技術的な話から、FREDDYを利用したゲームの紹介まで、硬軟織り交ぜて紹介したが、お楽しみいただけただろうか。

 FREDDYは今後オープンソースとして公開していく予定である。本連載やFREDDYそのものについてご質問、コメント等があれば、遠慮なく筆者まで連絡を頂きたい。もちろん開発の助言者、協力者、共同研究者も常に募集している。

 今回の連載にて、読者の皆さまがWebサーバーからWebブラウザへデータを届ける手法を考える際の一助となれば幸いである。

静岡大学
静岡大学情報学部助教。2006年東京都立大学大学院修了、博士(工学)。1996年から2008年まで東京ディズニーランド内ワールドバザール・コンフェクショナリー勤務、菓子類の販売に従事。産業技術総合研究所(前述と兼業)を経て2008年より現職。データベースとWebを基礎とした、データ通信手法や地理情報システム基盤の構築に興味を持つ。http://shohei.yokoyama.ac/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています