[これは米国 Mozilla Future Release ブログで公開された記事 "Mozilla Games Technology Roadmap" を翻訳コミュニティ Uemmra3 氏に翻訳協力して頂いたものです。]
ゲームとゲーム技術向けプラットフォームとしての Web の更なる進歩やアピールのため、Mozilla はゲームに特化したロードマップを発行しました。要するに、これは高パフォーマンスで、プラグインなしの Web 上のゲームに関するものです。最近数年で我々はめざましい進歩をとげました。この流れを続けるため、Mozilla はゲーム開発者やツールメーカーと協働し、コミュニティへより大きな力を与える追加改良を割り出しました。次のロードマップは、我々が受けたフィードバックと、そのフィードバックに応えて現在追求している解決策の両方をざっと示しています。このロードマップは変化しがちであるかもしれません。
WebAssembly が明らかになるにつれ、各プラウザは Web パフォーマンスがネィティブレベルになるよう、共通の対策を取ってきています。このロードマップは、ゲーム開発者が最善のエクスペリエンスを提供するために Web プラットフォームに追加された機能について、より広がった視点をざっと示します。ゲームはしばしば、その要求する性質から、技術を進める大きなきっかけになります。Web への利益を最大化するために、解決策ができるだけ広い範囲のアプリケーションに利益となることを保証するよう、注意が払われています。
この文書には 2 つのレベルがあり、最初はロードマップの節で、現在開発中で来年に取り組める、合理的なレベルで自信を持っているものを含んでいます。2 つ目は検討中の節で、研究活動中のトピックを含んでいます。
ロードマップ
- 開発者に、ハードウェアの並行性をより良く利用できるようにする
- 開発者は Web 上でマルチスレッドのゲームが効率よく動作するようになるように格闘しています:
- 開発者は SIMD ハードウェアがコード最適化してくれるのを望んでいます:
- 大規模なコンパイル済みコードベースのコールドロード時間を改善する
- 開発者は、数百万行のコンパイル済みコードベースのダウンロード、コンパイル、スタートアップ時間が削減されることを望んでいます。
- 開発者は HTTP コンテンツエンコードに依存するのを避けたがっています: 汎用的な圧縮には gzip を使う
- Emscripten に対して、asm.js / WebAssembly 内で、ダウンロード中の展開(gzip よりもっと積極的なアルゴリズムを許可する)を実行するサポートを追加
- ブラウザストレージの能力を改良する
- 永続ストレージに関する権限のプロンプト(Storage Standard)を避けようとしている開発者は、現在ブラウザに実装されている一時ストレージの制限につき当たります。
- 永続ストレージの保証を必要とする開発者は、現在ブラウザに実装されている一時ストレージの制限につき当たります。
- ブラウザのグラフィック能力を改良する
- 開発者が32-bitブラウザのメモリ不足(Out-of-Memory)条件をうまく避けられるようにする
- 64-bit Windowsで64-bit Firefoxの出荷
- pthreads と FileReaderSync が同期ファイル I/O をワーカーに供給するよう、てこ入れすることで、Emscripten がアセットストレージ用のメモリ内仮想ファイルシステムを避けます
- プラットフォームをまたいだパフォーマンスへの投資を続ける
- Emscripten への投資を続ける
- すでに記載の通り、pthreads, SIMD, WebAssembly のサポート追加
- コンパイルスピードのいっそうの改良
- Firefox 開発ツールがより良いゲーム開発者サポートするよう投資を続ける
製作中
- 開発者は、負荷を分配するのにいくつの Web ワーカを作成したら良いかを決めるのに困っています。しばしばベンチマークメソッドが信頼できることがわかっています。
- 開発者は Firefox での Web ワーカがオリジン毎に 20 である制限につき当っており、もっと高い制限を要求しています。
- プロセス起動の初期に配分された大きな隣接ヒープで、ゲーム用の新鮮なアドレススペースを保証するマルチプロセスブラウザアーキテクチャをてこ入れします。
- メモリ不足(Out-of-Memory)エラーの報告メカニズムを研究して、安全な/サニタイズ済みの選別情報を Web アプリ開発者に戻す。
- IME 能力の改良のための新標準の共同研究 [1,2].
- ハードウェアカーソル API の追加 [1].
- ゲームパッド API の改良 [1].
- ポインターロック API へポインターをクリップする拡張を追加 [1].
- メモリ使用/リーク のデバッグ用 Emscripten ツールの追加
- 大規模なコンパイルコードに適した、よりスケーラブルなソースマップ形式の標準化(WebAssembly の一部や、より一般的に)
関連情報
- Uemmra3 氏のブログ記事:これからMozillaがどんなゲームプラットフォームを作っていくか?