HTML5、WebGL、WebSockets、JavaScriptを駆使して、ゲーム「QuakeII」をブラウザに移植中
Windows 95の時代に、自分視点での3D表示による画期的なシューティングゲームとして登場した「QuakeII」。現在、HTML5の音声再生機能、ローカルストレージ機能、現在策定中のWebブラウザ用3Dグラフィックス表示規格のWebGL、サーバと任意の通信を可能にするWebSocketsなどの機能とJavaScriptによるプログラミングを駆使することで、QuakeIIをWebブラウザ上に移植しようというプロジェクトが、グーグルのエンジニアによってオープンソースとして進められています。
すでにプロジェクト内部ではプロトタイプが稼働しており、実際に動作している様子がYouTubeで公開されています。ほとんど実用的な動作速度を実現しているようです。
実はこのことが明らかになったは4月1日だったため、いくつかのメディアでは「もしかしたらエイプリルフールかもしれない」という疑念を持つ人も多かったのですが、4月1日を過ぎてもプロジェクトが継続していたことで、これがエイプリルフールではなく、実際に進行中のプロジェクトだということがはっきりしました。
WebGLによるWebブラウザ上でGPUを使った3Dグラフィックスを実現
4月5日時点のプロジェクトのページを基に、技術的な内容を少し詳しく紹介しましょう。Webブラウザへの移植は、QuakeIIのオリジナルをJavaへ移植した「Jake2」をベースに行われています。
プロジェクトの中心はグーグルのエンジニアで、開発ツールとしてGoogle Web Kit(GWT)で行われています。GWTとは、Javaを用いてAjaxアプリケーションのプログラミング、デバッグが可能を可能にするツールです。
HTML5のaudioタグで音声再生を行い、Webブラウザ用のOpenGLに相当するWebGLを用いることで3Dグラフィックス表示をGPUによって高速に表示、WebSocketsによってサーバと通信してマップデータの受信やマルチプレイヤーを実現し、LocalStorage機能でローカルファイルへのデータ保存に相当する機能などを実現しているようです。
対応するWebブラウザとしてはこれらの機能をサポートしていることが条件になります。特にWebGLの実装がポイントのようで、現時点ではChromeもしくはSafariが対応Webブラウザとなっているようです(FAQによるとFirefoxはJavaScriptの実行が遅いため、うまく動かないそうです)。また、ChromeではSafariよりもフレームレートが遅くなってしまい、一方でSafariではときどきクラッシュするとの記載もFAQにあるため、Webブラウザ側の仕様への対応や完成度の向上もまだまだ課題のようです。
一般ユーザーとしては、Webブラウザで実行できるのならば一刻も早くサンプルサーバを立ち上げて、自由に遊べる環境を提供して欲しいところですが、FAQによるとQuakeIIのソースコードはGPLで公開されているものの、テクスチャ、モデル、サウンドなどはGPLとなっていないため、現時点で単純に公開するわけにはいかないとのこと。
しかし合法的に公開できる方法を模索中とのことで、期待していてほしい(stay tuned)と書いてあります。
ブラウザ上でPentium 133MHz相当の実行速度?
idソフトウェアのWebページによると、QuakeIIのオリジナルの実行環境は、OSがWindows 95/98/NT/2000、CPUはPentium 90MHz以上(133MHz推奨)、メモリ16MB以上(Windows 95/98以外は24MB以上)、HDDの空き容量が25MB以上というものです。
ブラウザ上で動作しているQuakeIIのビデオを見るかぎり、かなり実用的な速度で動作しているように見えるため、現在のPCで動作するWebブラウザではほぼ上記相当の潜在的能力を備えているのだといえそうです。
そしてQuakeIIレベルのゲームがWebブラウザに移植可能なことが分かれば、それはこれからWebブラウザでの魅力的なシューティングゲームが、しかもマルチプレイヤーで続々と登場するきっかけになるのかもしれません。