Unity を検索

Unity 5.3 WebGL アップデート

2015年12月7日 カテゴリ: テクノロジー | 6 分 で読めます
取り上げているトピック
シェア

Is this article helpful for you?

Thank you for your feedback!

きたるUnity 5.3のリリースはUnity 5.xの中でWebGL出力をサポートする4つ目のリリースになります。私たちは最初にUnity 5.0でプレビュー版としてWebGL出力をサポートしてからいままでで大幅な進捗がありましたので、今日はこのアップデートについて共有します。

Unity 5.3での変更点

Unity 5.3はWebGL開発者にとって関係のある数々のアップデートが投入されています:

  • UnityのスタンダードシェーダーはWebGLでもデスクトップ用のものと同じ品質のリフレクション関数を使用するようになりました。Unity WebGLは今まで、モバイルのOpenGL ES 2.0向けに単純化されたスタンダードシェーダーを使用していましたが、5.3からデスクトップ用のものと同じ機能を使うようになったため、見た目のクオリティが格段に向上しました。
  • ソフトシャドウをサポートしました。
  • Unity WebGLはサーバー側で圧縮の設定がされていない場合でも、自分で適切に圧縮をハンドリングするようになりました。以前のバージョンでは、WebGLはホストするWebサーバーがgzip圧縮されたファイルを適切にクライアントに送信するように設定しておく必要がありました。それが行われていない場合、非圧縮のデータを送信することになり、ダウンロードサイズが本来あるべきサイズよりも何倍にもなってしまっていました。結局サーバーの設定を適切に行うのは難しい場合があるということがわかってきたので、私たちのWebGLランタイムはWebサーバーが圧縮データを送信できるように設定されていない場合でも、自動的にgzip圧縮されたバージョンのデータをWebサーバーからダウンロードするようにしました。ランタイムはデータのダウンロードを行うと、クライアント側でgzipの解凍を行います。これはプロトコルレベルで圧縮対応が適切に処理されている状態と比べるとすこし余計な時間がかかるのですが、それでも利用者の皆さんが巨大なダウンロードを避けるためにサーバーのマニュアルを熟読してなんとかする必要がなくなりました。ちなみにこの対応が入った今でも、Webサーバーの設定を適切に行っておけば以前と同じように圧縮対応はプロトコルレベルで適切に処理されます。(配信サイズについてはこちらをご覧ください).
  • ゲームに使用するアセットデータがメモリ内にLZ4圧縮されて保持されるようになりました。WebGLでは、実際にファイルシステムがあるわけではありません。このため、すべてのアセットはずっとメモリに置かれています。Unity 5.3ではメモリ内のアセットデータはLZ4を使用して圧縮されており、アセットがロードされるときにのみ解凍されます。これはアセットデータがより少ないメモリを消費するということで、メモリ不足になるリスクがより小さくなりました。
  • WebGLでビルドされたファイルがより簡単に異なるURL上に持っていけるようになりました。ビルドプロセスで生成されるすべてのファイルは生成されたindex.htmlファイルから直接参照されます。設定が必要なURLがすべて一つのファイルに集約されたので、ビルドしたデータを別のサーバーに持って行くのが簡単になりました。(ビルド出力を移動したい場合は、こちらを参照してください)
  • WebGLはさらに、Unity Cloud Buildで選択可能なプラットフォームとなりました。チームメンバーは直接ゲームやアプリケーションをブラウザからテストすることができます。
  • ドキュメントの改善。Unity 5.3ではWebGLのドキュメントを改修し、たくさんの情報を追加しました。いまのWebGLで何ができて何ができないのか、あるいは特定のブラウザーでのみサポートされている機能は何か、といったことは現状ではとても大事なことなので、これがわかるように詳しい情報を記載しました。
  • 数々のバグ修正。Unity 5.3はUnity 5.2から、28のWebGLに関するバグを修正しています。さらに、ほかにも(WebGL特有というわけではないが)WebGLユーザーにメリットをもたらす修正が含まれています。また、Unity 5.2.xのパッチリリースの中で対応してきたいくつかのWebGL関連バグの修正もすべてUnity 5.3に含まれています。

WebGLはUnityの正式なビルドターゲットに

これまでUnityのWebGL機能は非サポートのプレビュー版機能として提供されてきました。Unity 5.3にて、わたしたちはこの「プレビュー」の表記を落とし、正式にサポートされたビルドターゲットに昇格します。プレミアムサポート、およびエンタープライズサポートプランは、今後WebGLをサポート対象としてカバーします。

Unity 5.3は上記で書かれたような沢山の改善をWebGL開発者に提供します。また、5.2および5.1のサイクルでも、同じように数々の改善を行ってきました。わたしたちはUnityのWebGL機能が5.0以来長い道のりを乗り越えてきたと感じています。同じように、ブラウザーテクノロジーもこの期間で改善されていきました。MicrosoftはWindows 10でasm.jsをサポートする新しいEdge ブラウザーをリリースし、UnityのWebGLコンテンツの実行速度はかつてのInternet Explorer 11に比べて大幅に高速になりました。UnityのWebGLコンテンツを楽しめる人々の潜在的な総数が今までよりも広がったのは間違いありません。

WebGLプラットフォームは5.0でPreview版をリリースしたときに比べて大幅に良くなりました。ただし、これはUnityの全ての機能が突然WebGLで動作するようになったという訳でもなければ、パフォーマンスがデスクトップ向けのビルドと遜色ない速度になったわけでも、全てのブラウザーでコンテンツが再生できるようになったわけでもありません。これらのすべてのエリアで改善が見られていますが、あくまで一歩一歩良くなっているのです。そうした課題はありつつも全体としてみると私たちのWebGL機能はこのプラットフォームの制約の中ではかなり上手く動作するようになったと思いましたので、今がWebGLを正式なビルドターゲットとするべき時だと考えたのです。その分、私たちはドキュメントに力を入れてどういった制約事項があり、どのブラウザーでどの程度の期待ができるのかといったことをよく分かるようにしました。

ブラウザーベンダーとの協力

私たちのWebGL出力機能はブラウザーのWeb技術に大きく頼っています。私たちは過去数年間、ブラウザーベンダー大手3社と密接に協力し、これらのテクノロジーの改善に貢献してきました。

Mozillaのプラットフォームプロダクト マネージメントディレクターである Martin Best氏は「MozillaはUnityが次のステップに進みWebGL出力機能に対する正式なサポートを提供することをとても嬉しく思います。私たちはasm.js、WebGLやEmscriptenと言った多くの基盤となるWebテクノロジーを創始し、こうしたことを可能にしました。私たちはUnityや他のブラウザーベンダーと密接に関わっていき、最高のWebゲーム体験を実現していきます」 と言っています。より詳しくはMozillaのブログでお読みいただけます。

Microsoftでは、EdgeおよびOpen Web Standards のプリンシパル プログラムマネージャーのDavid Catuhe氏が: 「Microsoft EdgeにとってWebGLとasm.jsはWindows 10ユーザーに完全なWeb体験を提供する重要な要素です。WebGLビルドターゲットをリリースすることで、Unityはデベロッパーが素晴らしいゲーム体験を私たちのユーザーに、Webを通して提供する能力を与えてくれます。私たちにとってもUnityと共に仕事をして、WebGL、asm.jsやその他の機能強化をWebプラットフォームに提供していくことはまたとない機会です」とコメントを寄せています。

Google ChromeのWebGLチームであるBrandon Jones氏、Zhenyao Mo氏 と Ken Russell氏はデベロッパーコミュニティに向けて同様の意見を表明しています:「UnityのHTML5およびWebGL出力サポートはこのエコシステムの中で最もエキサイティングなことの一つです。世界中のデベロッパーがUnityを使って素晴らしいコンテンツをWebに持ち込むでしょう。私たちは今後も継続してWebプラットフォームのパフォーマンスと機能を改善し、さらにエキサイティングなインタラクティブコンテンツを可能にしていきます」

さあ、あなたのターンです

私たちはUnityのWebGL出力機能がWebのゲームの未来だと信じています。Heroes Of ParagonSpider BoxBig Buck Hunterのように、UnityのWebGL出力を使ったすでにリリース済タイトルも出てきています。このリストにあなたのゲームの名も連ねましょう!

始めるには:

2015年12月7日 カテゴリ: テクノロジー | 6 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

取り上げているトピック