Mozilla Japan ブログ

Mozilla、Firefox、Thunderbird の最新情報をお伝えします

個別記事アーカイブ

Mozilla のゲームテクノロジーロードマップ

[これは米国 Mozilla Future Release ブログで公開された記事 "Mozilla Games Technology Roadmap" を翻訳コミュニティ Uemmra3 氏に翻訳協力して頂いたものです。]

ゲームとゲーム技術向けプラットフォームとしての Web の更なる進歩やアピールのため、Mozilla はゲームに特化したロードマップを発行しました。要するに、これは高パフォーマンスで、プラグインなしの Web 上のゲームに関するものです。最近数年で我々はめざましい進歩をとげました。この流れを続けるため、Mozilla はゲーム開発者やツールメーカーと協働し、コミュニティへより大きな力を与える追加改良を割り出しました。次のロードマップは、我々が受けたフィードバックと、そのフィードバックに応えて現在追求している解決策の両方をざっと示しています。このロードマップは変化しがちであるかもしれません。

WebAssembly が明らかになるにつれ、各プラウザは Web パフォーマンスがネィティブレベルになるよう、共通の対策を取ってきています。このロードマップは、ゲーム開発者が最善のエクスペリエンスを提供するために Web プラットフォームに追加された機能について、より広がった視点をざっと示します。ゲームはしばしば、その要求する性質から、技術を進める大きなきっかけになります。Web への利益を最大化するために、解決策ができるだけ広い範囲のアプリケーションに利益となることを保証するよう、注意が払われています。

この文書には 2 つのレベルがあり、最初はロードマップの節で、現在開発中で来年に取り組める、合理的なレベルで自信を持っているものを含んでいます。2 つ目は検討中の節で、研究活動中のトピックを含んでいます。

ロードマップ

  • 開発者に、ハードウェアの並行性をより良く利用できるようにする
    • 開発者は Web 上でマルチスレッドのゲームが効率よく動作するようになるように格闘しています:
      • 共有配列バッファの標準化、実装、出荷 [1,2].
      • Emscripten への pthread サポート追加 [1,2].
      • パフォーマンスに敏感な次の Web API を Web ワーカに晒す: WebGL, WebSockets, IndexedDB, WebAudio, WebRTC, WebVR
      • ワーカ間でコンパイル済みコード(asm.js や WebAssembly) を共有する [1].
    • 開発者は SIMD ハードウェアがコード最適化してくれるのを望んでいます:
      • SIMD.jsの 標準化、実装、出荷 [1,2].
      • SIMD を WebAssembly 内に含める [1].
      • Emscripten への SIMD サポート追加 [1].
  • 大規模なコンパイル済みコードベースのコールドロード時間を改善する
    • 開発者は、数百万行のコンパイル済みコードベースのダウンロード、コンパイル、スタートアップ時間が削減されることを望んでいます。
      • WebAssembly は目立ったダウンロードサイズ圧縮を提供するでしょう (polyfill 経由でのネイティブサポートがなされる以前であっても) [1].
      • ネイティブにデコードされた WebAssembly は JavaScript/asm.js のパーズよりも、はるかに高速でしょう [1].
      • WebAssembly/asm.js に高速コンパイラを追加して、バックグラウンドのスレッド内で完全な最適化コンパイルを進めて、アプリが素早く起動できるようにする [1].
      • メインスレッド以外で、パーズ/コンパイルをストリーミング化 [1].
    • 開発者は HTTP コンテンツエンコードに依存するのを避けたがっています: 汎用的な圧縮には gzip を使う
      • Emscripten に対して、asm.js / WebAssembly 内で、ダウンロード中の展開(gzip よりもっと積極的なアルゴリズムを許可する)を実行するサポートを追加
  • ブラウザストレージの能力を改良する
    • 永続ストレージに関する権限のプロンプト(Storage Standard)を避けようとしている開発者は、現在ブラウザに実装されている一時ストレージの制限につき当たります。
      • Frecency のような要因を考慮に入れるため、一時クオータ制限を改良する
      • クオータ使用と許可に関するもっと詳細な商法提供 [1].
      • 強制退去可能な(evictable)ストレージの精度単位を細かくすることの提案、標準化、実装 [1].
      • クロスオリジンのストレージ使用の許可 [1].
    • 永続ストレージの保証を必要とする開発者は、現在ブラウザに実装されている一時ストレージの制限につき当たります。
      • 永続化ストレージの標準化して、他のブラウザが実装できるようにする [1].
      • 永続化パーミッションのプロンプトに関する、UI 摩擦の削減 [1].
      • ブラウザユーザ向けに、ストレージ管理/強制退去(eviction)の改良
  • ブラウザのグラフィック能力を改良する
    • WebGL2 を出荷[1].
    • WebRTC 経由での WebGL キャンバスのストリーミングの標準化や実装 [1,2].
    • 統合+ディスクリートつきのシステム向けディスクリートハードウェア (例 nVidia Optimus)で WebGL を実行する
  • 開発者が32-bitブラウザのメモリ不足(Out-of-Memory)条件をうまく避けられるようにする
    • 64-bit Windowsで64-bit Firefoxの出荷
    • pthreads と FileReaderSync が同期ファイル I/O をワーカーに供給するよう、てこ入れすることで、Emscripten がアセットストレージ用のメモリ内仮想ファイルシステムを避けます
  • プラットフォームをまたいだパフォーマンスへの投資を続ける
    • WebAudio パフォーマンスの、重要な最適化 [1].
    • WebGL シェーダーのコンパイル時間の削減 [1,2].
    • ブラウザのレンダリングパイプライン内で、遅延やバラツキの削減 [1,2,3,4].
    • JS, DOM, WebGL, WebRTC, codec, layout, rendering, compositing, animation などへの継続的投資
  • Emscripten への投資を続ける
    • すでに記載の通り、pthreads, SIMD, WebAssembly のサポート追加
    • コンパイルスピードのいっそうの改良
  • Firefox 開発ツールがより良いゲーム開発者サポートするよう投資を続ける
    • Web ワーカのサポート改良 [1].
    • 開発者が asm.js/WebAssembly のさまざまなエラー条件にブレークポイントを貼れるようにする [1].

製作中

  • 開発者は、負荷を分配するのにいくつの Web ワーカを作成したら良いかを決めるのに困っています。しばしばベンチマークメソッドが信頼できることがわかっています。
  • 開発者は Firefox での Web ワーカがオリジン毎に 20 である制限につき当っており、もっと高い制限を要求しています。
  • プロセス起動の初期に配分された大きな隣接ヒープで、ゲーム用の新鮮なアドレススペースを保証するマルチプロセスブラウザアーキテクチャをてこ入れします。
  • メモリ不足(Out-of-Memory)エラーの報告メカニズムを研究して、安全な/サニタイズ済みの選別情報を Web アプリ開発者に戻す。
  • IME 能力の改良のための新標準の共同研究 [1,2].
  • ハードウェアカーソル API の追加 [1].
  • ゲームパッド API の改良 [1].
  • ポインターロック API へポインターをクリップする拡張を追加 [1].
  • メモリ使用/リーク のデバッグ用 Emscripten ツールの追加
  • 大規模なコンパイルコードに適した、よりスケーラブルなソースマップ形式の標準化(WebAssembly の一部や、より一般的に)

関連情報

前後の記事

前の記事: オンライン上の選択肢とコントロール権の保護
次の記事: Firefox OSに期待できること