なんとかするから、なんとかなる

エンジニア関係のことを書きます

Unite2017 参加しました その9

WebGL:ゲームプラットフォームとしてのWebと現在と未来

www.slideshare.net

WebGLの動機

ブラウザのプラグインを無くしたい

Web Assembly(.wasm)

  • ブラウザ向けのバイナリフォーマット
  • W3Cのコミュニティグループで議論されている
  • WebAssembly Explorerでコードを書いてコンパイル結果を見ることができる

対応状況

  • FireFox ChromeはMVP(Minimum Viable Product 最低限の実装はサポート)
  • Edge, safariは開発中

WASM MVP とは

  • 最低限必要な要件が定義されている内容
  • WASMモジュールの構造などに対応する、などなど

WASMの特徴

  • 早い Nativeと比較して130〜150%くらいの実行時間で動くことができる。

    asm.jsとWASMの違い

  • WASMの方が早い。WASMは構文解析の時間が無いので早い。
  • asm.jsはブラウザごとにコンパイル方法が異なる。(ベンダー依存)

WebGL

今のところ2世代

普及率

WebGLはほとんど100%。WebGL2は50%ないくらい。

WebGL出力の注意点

WebGLでは以下のように出力される

C# ⇨ (MONO) ⇨ IL ⇨ (il2cpp) ⇨ C++ ⇨ (Clang) ⇨ LLVM IL ⇨  WASM + JS

  • 結構重たい処理はJSに投げた方がスレッドが異なるので楽。
  • 2種類のGCが存在するので注意。プロファイルする際は両方を使う

    • JSVM内のUnity用メモリはUnityのGCが使用される
    • JSVM内はJSVM用のGCが走る
  • ファイルシステムはメモリ上に仮想的に作っているので、ファイルが多すぎるとメモリを圧迫することになる。

    • IndexedDBもその裏ではメモリ上に展開している。

Webのこれから

  • Shared Array Buffer: 共有メモリ(スレッドの実現)
  • 音声処理の別スレッド化
  • payment
  • キャッシュ処理