$30 off During Our Annual Pro Sale. View Details »

UnityWebGL Tips集

mao
June 03, 2018

UnityWebGL Tips集

[秋葉原] Unityもくもく勉強会×1週間ゲームジャム準備会
LT資料

https://weeyble-game.connpass.com/event/87052/

mao

June 03, 2018
Tweet

More Decks by mao

Other Decks in Technology

Transcript

  1. どうしてこうなった ・SafariとEdgeがWebGL 2.0に非対応のため - 今回の実装としてはSSR(Screen Space Reflection)でゴリラを反射させている。 但しSSR自体はDeferred Renderingである事が必要。 -

    Deferred Rendering自体はWebGL 2.0から可能となっているので、 対応していないブラウザでは表示されない。 ※例自体はUnity2017.4.4f1 + PostProcessing v1で実装。Editor上ではWebGL 2.0でエミュレート WebGL グラフィックス https://docs.unity3d.com/ja/current/Manual/webgl-graphics.html ※その他互換性はこちらで確認可能 https://docs.unity3d.com/ja/current/Manual/webgl-browsercompatibility.html
  2. Arialフォントに注意 →UI.Textとかにデフォルトで設定されてる奴 - Editor上だと日本語が表示されるがブラウザ上だと日本語が表示されないので注 意。 ・日本語を含むフォントを設定しよう - ライセンスには注意すること。 - M+

    FONTSさんとかおすすめ。 - 解決策ではないが、入れたついでにTextMeshProを使うとか。 UnityのWebGLで日本語を表示する https://qiita.com/tsubaki_t1/items/93e4b91b830729cd93a4
  3. 参考リンク ・WebGL での開発を始めるにあたって - https://docs.unity3d.com/ja/current/Manual/webgl-gettingstarted.html ・【Unite 2017 Tokyo】WebGL:ゲームプラットフォームとしてのWebと現在と未来 ※講演 動画あり

    - https://www.slideshare.net/UnityTechnologiesJapan/unite-2017-tokyowebglweb-76727421 ・【Unite 2017 Tokyo】Unity+WebGLでゲームを開発・運用して見えてきたメリット・デメリッ ト ※講演動画あり - https://www.slideshare.net/UnityTechnologiesJapan/unite-2017-tokyounitywebgl-76727485
  4. おまけ(ビルド編) ・WebGLのスクリプティングバックエンドはIL2CPP - AssetBundle運用時などはStrip Engine Codeに注意。 - ※例えばassetBundleでは参照していても実行ファイルの方で参照していない Scriptが存在すると、ビルド時に削られる可能性がある。 -

    ※Strip Engine Code自体の有効/無効は設定可能。 - →こちら自体はlink.xmlで解決可能。 - 詳細は公式ドキュメントの「Issues with code stripping」を参照。 ・インクリメンタルビルド - デフォルトで有効との事。 - キャッシュ自体は”Library/il2cpp_cache”にある。こちらを削除するか別のUnityバー ジョンで開かれるとリビルドされる。
  5. おまけ(ビルド編) ・Development Buildについて - 出力後のJavaScriptファイルはminifyされない模様。 - その為にファイルサイズがメチャクチャデカくなる。 - 【GraphicsAPIの違い?】の項目で表示したゴリラ2体表示する実行ファイル一式のサイズの違いを見 比べると...

    - Release Build(通常時) : 8.04 MB - DevelopmentBuild(Use pre-build Engine有効) : 206 MB ・Use pre-build Engineについて - Development Buildを有効時に選択可能。 - 有効にするとUnityはビルド時にマネージドコードのみを再構築してビルド前の UnityEngineと動的にリンクする。(再構築が30%~40%早くなるとか?) - ただし、動的なリンクオーバーヘッドの為にパフォーマンスは通常時よりも遅くなる。
  6. おまけ(メモリ編) ・とにかくメモリ周りが結構シビア。 - 特に32bit環境はブラウザ側で確保できる最大メモリが2GBとなるので、その中で色々とやりくりされるので 結構シビア。 - ※WOW64の上で実行した場合などについては不明...(未調査) - ChromeだとJavaScriptのコード解析の段階で膨大なメモリを食うので32bitだとシビアだとか。 -

    それ以外にもデカいデータを置きまくるなどすれば32bitだと特に厳しくなるかもしれない。 - PlayerSettings -> Publishing Settingsにて「WebGL Memory Size」と言うUnityが使用するメモリ領域を設定 できる項目があるが、256を超えた辺りから警告が出る。 - ※64bitでも物によっては512ぐらい取らないと「Out of memory」が出たりするときも.. - Asset管理戦略は慎重に。一気に読み込んで確保しておくのではなく、細かく読む戦略の方が良いとか。 - ※「【Unite 2017 Tokyo】WebGL:ゲームプラットフォームとしてのWebと現在と未来」でメモリ周りにつ いて解説されているのでおすすめ。
  7. おまけ(その他) ・スレッドは非サポート。 - ※「【Unite 2017 Tokyo】WebGL:ゲームプラットフォームとしてのWebと現在と未来」曰くJavaScript側でゴ ニョゴニョすることでそれっぽいことは出来るとのことだが...未検証。 ・ログはブラウザのJavaScriptコンソールから確認可能 - ChromeだとF12押したら出てくるやつ。

    ・バックグラウンドタブでの実行 - PlayerSettingsにある「Run in background」のチェックが有効であれば、キャンバスや ブラウザがフォーカスされて無くてもゲームが動き続ける。 - →但し裏に回った際には実行に制限が掛かり、更新間隔が大分遅くなったりするの で注意。