3DCGはWebGLで実現
実際にゲームを動かすためには、3DCG、サウンドなどの移行も必要になる。3DCGでは、グラフィックハードウェア用のAPIのOpenGLが一般的である(OpenGL ESは携帯デバイスや家電用のサブセット)。ブラウザで3D表示を行うWebGLは、OpenGL 2.0のAPIをHTML5のCanvas要素上で使用可能にしたものだ。つまり、OpenGL 2.0で書かれたコードならば、移行がしやすい。さらにEmscriptenでは、あらかじめOpneGL ES 2.0のヘッダが定義してあり、移行は非常にスムーズに行えるとのことだ。
図9 WebGL:3Dのライティングとシェーディング |
Unrealエンジン3の移行では、サウンドAPIにOpenALを使っていたため、新たにラッパーを作ることでWebAudio APIへ移行を行った。コアの移行は1日ですんだが、サウンド系などの移行には4日を要したとのことである(全体で5日で完了したことも驚くべきことだが)。この作業には、MozillaとEpic Gamesのスタッフが協力して行った。その後もEpic Gamesからのフィードバック受け、Mozillaが対応するといったことが行われている。今後も、Firefox上で動作する3Dゲームが増えていくのだろう。
最後に筆者の率直な感想であるが、本当によくここまで動くようになったである。ゲーム(エンジン)メーカーとMozillaが協力が、このような環境を提供してくれたのである。現在でも、高速化のさまざまな努力が続けられている。まずは、Cと比べて遅くなっている要因を減らしていくとのことである。試すことはできなかったが、Emscripten用の新しいコンパイラfastcompなども登場している(従来よりも4倍速い)。また、ゲームではコード量もかなり巨大になるためロードタイムもかなりかかる。この対策として、プリコンパイルの導入も検討されている。
今回、3Dゲームのデモを取り上げたが、今後の応用例として、数値計算や3D表示を多用する事例でも高速化が期待できるだろう。ゲームだけが最終の目的ではないということだ。
Firefox 29の新ユーザーインタフェースもあり、Webがさらに楽しくなったように感じられる。高速リリースに移行してから、バージョンアップの頻度は増えたけど、どこが新しいのか、何が変わったのか、よくわからないといった声も少なくない。今回、技術的な背景もほんの少しだけ紹介したが、JavaScript、Webを取り巻く環境も着実に進化をしている。そのあたりを実感していただければ幸いである。