盛りだくさんのアップデート Unity5.4と5.5でUnityはこう進化する CEDEC+KYUSHU2016


いまや日本のゲーム開発シーンで必須となったUnity。かつてのOSやDirect Xなどと同じく、今ではUnityがゲーム開発者コミュニティの中核に位置しているといっても過言ではない。CEDEC+KYUSHU2016でも「Unity最新機能紹介と今後のロードマップ」と題して、ユニティ・テクノロジーズ・ジャパン合同会社の山村達彦氏が講演。Unity5.4以降の現状と見通しについて語った。

unity-technologies-japan-cedec-kyushu-2016-001

なお本セッションはCEDEC2016で行われた「Unity最新機能紹介と今後のロードマップ」をベースに内容を更新したものになっている。講演資料と共に講演映像も配信されているので、本記事で興味を覚えた人は、そちらをチェックしていただきたい。山村氏は個人ブログ「テラシュールブログ」を通してUnityの情報発信も積極的に行っている。実践的なTIPSが満載なので、こちらもチェックしてみると良いだろう。

 

サブスクリプションと新ライセンス

はじめに山村氏はUnityのラインナップとライセンス解説から切り出した。中でもポイントは買い切りからサブスクリプション制に移行したことで、「Unity Personal」は無料のまま。「Unity Pro」は全プラットフォーム入りで月額1万5000円。「Unity Plus」は商業開発を指向する個人・小規模開発者むけに新設されたライセンスで、月額4200円からとなっている。Unity Plusでもすべてのエンジン機能を利用でき、クラッシュレポートツールなどもビルトインされていると説明された。

また「これだけは覚えて帰ってほしい」とされたのが、Unityライセンス所有者に向けたサブスクリプションへの移行についてだ。旧サブスクリプションのUnity Pro+AddOnユーザーは実質割引、Unity Proのみのライセンスでも旧価格(9000円)で1年間使用できる。をUnity 5.xユーザーは2017年3月まで追加費用なし、その後条件により最大2年間を月額9000円で利用可能だ。なお、本割引は年内で終了するため、忘れずにライセンス更新してほしいと呼びかけられた。

unity-technologies-japan-cedec-kyushu-2016-002

unity-technologies-japan-cedec-kyushu-2016-003

 

実験版Unity

続いて山本氏はUnity5.5で追加される「実験版Unity」の存在について説明した。現在Unityは5.4が最新版で、β版のUnity5.5も配布されている。またUnity5.4向けに5.4.1 p1のパッチもリリースずみだ。その上でさらに新機能を盛り込んだ「実験版Unity」も配信中。いち早く新機能を試してみたいユーザー向けに、Unity forumのBeta & Experimental Featuresで公開されている。つまり、安定版と実験版の2つのラインに明確に切り分けられたのだ。

山村氏はこの背景に「Unity5.1と5.2の反省があった」とあかした。実際、Unity5世代ではバージョンアップのたびにUnityが不安定になり、それをパッチのリリースで押さえ込むサイクルが生まれてしまったという。この連鎖を断ち切るために、安定版とβ版が明確にブランディングされたのだ。 その上でUnity5.5では、新たに実験版も加わった。これによりUnityでは、イノベーションと安定性を両立させていくとのことだ。

unity-technologies-japan-cedec-kyushu-2016-004

 

Unity 5.4以降のオーバービュー

これら前置きの後に、いよいよ本題であるUnity5.4以降で加わる新機能が紹介された。以下、機能の概要を箇条書き風に列挙していく。

【新機能の概要】
・対応プラットフォームの増加
・強化されたグラフィックス
・強化されたVRサポート
・クラウドサービス機能の統合推進
・より最適化されたパフォーマンス

 

プラットフォーム

新たにNintendo 3DS、Facebook、Oculas Rift、Gear VRなどが加わった。その一方でBlack berry、PS3、Unity WEB Playerはサポートが終了した。

グラフィック

GPU Instancing

同一メッシュで同一マテリアルのオブジェクトに対して、GPU側で描画処理を行うことで、高速化を図る機能。ひらたくいえば「たくさんのオブジェクトを一気に描く」ことができ、同じモンスターを画面に大量に配置する際などに効果を発揮する。

unity-technologies-japan-cedec-kyushu-2016-005

GPU Instancingの原理
GPU Instancingの原理

Single Path Stereo Rendering

VRコンテンツむけに両眼を描画する作業を最適化する機能。通常VR空間を描画する場合、左右の眼でカメラ位置やプロパティが微妙に異なるため、片眼ずつ合計2回描画する必要がある。Single Path Stereo Rendering機能を使うと、個々の要素を左右同時に描画していくため、Setpass Callsを半分にできる。

New Image Effects

被写界深度、Bloom(光源の周囲にじわっと光がにじみ出すような効果)、モーションブラー、スクリーンスペースリフレクション、アンチエイリアシングなど、多彩な機能を持つイメージエフェクト。ディティールを補強するシャープフィルタも備えている。最適化に最適化を重ねており、フルHD環境でも0.8ミリ秒以内に処理が可能だという。

unity-technologies-japan-cedec-kyushu-2016-007

Line & Trail Renderer

移動するオブジェクトの後ろに直線や曲線を描画する機能。飛行機の翼の先端から発生する飛行機雲の表現など、移動感を表現するのに用いられるが、これまでは非常に貧弱だった。これが大幅にリニューアルされ、色や幅、太さなどがスクリプトで制御可能になった。

ライティング

Light probe Proxy Volume

light probeは空間内に小型の円球を配置することで、空間内のオブジェクトに対して動的に間接光表現を与えられる機能。デモでは黄色・赤色・黒色にライティングされた空間で、長細い家のオブジェクトを動かし、場所によって表面がそれぞれの色で照らされる様子が示された。

建物を左右に動かすと、それぞれ間接光で照らされる色が動的に変化する
建物を左右に動かすと、それぞれ間接光で照らされる色が動的に変化する

Progressive Lightmapper(実験版Unity)

スクリーンビューで表示されているエリアを優先してベイクするライトマッパーのこと。スクリーンビューを移動するたびにリアルタイムにベイクを行って、そのまま表示していく。全体のベイク完了を待たなくても良いため、広大な空間でもライトの結果をより早く確認できる。実験版Unityで配布されている。

黒く表示されているところが、ビューを動かすことで動的にベイクされていく
黒く表示されているところが、ビューを動かすことで動的にベイクされていく

パフォーマンス

Transform制御の高速化

Transform処理をSIMD(並列化演算)で行うようになった。一般的にUnityではTransformの階層構造が多いほどパフォーマンスが低下する。球体などに比べて一般的な人型キャラクターは、それだけで(階層構造を持つため)負荷が高まるため、最適化のポイントの一つだった。これをSIMDで処理することで、階層構造が深くても高速化が可能になった。

また位置情報・移動時の判定などの親子関係の解決にOnTransformChildrenChangedを使用するようになった。これまでPrefabをインスタンス化して、オブジェクト以下に配置したものをRootに移動させると、階層構造の深さに応じて大量のコールバックが発生していた。OnTransformChildrenChangedを使用することで、コールバックの発生が抑えられた。

unity-technologies-japan-cedec-kyushu-2016-010

unity-technologies-japan-cedec-kyushu-2016-011

一見すると地味な変更に感じられるが、実は高速化において大きく寄与する改良だ。
一見すると地味な変更に感じられるが、実は高速化において大きく寄与する改良だ。

MonoとC#コンパイラのアップデート

Unity5.5でMono(統合開発環境)が4.4にアップデートされる。ただし他ツールとの兼ね合いで、C#4+.NET3.5相当に留まる。なお、実験版Unityでは一足先にC#6+.NET 4.6相当の最新版Monoの提供が始まっている。現在はエディタ限定だが、近いうちにプレイヤーでも提供される見通しとのことだ。

エディタ

プラットフォーム(実機)上の絵の確認性が向上

通常Unityエディタと実機では表示に違いがあり、大きく「パフォーマンス特性」「解像度」「グラフィックAPI」「シェーダー品質」「color Space」に大別される。このうちパフォーマンス特性については解決が困難だが(エミュレーションではなくシミュレーションしているため)、他の4項目については下記のような対応が行われる。

解像度→Zoom View

グラフィックAPI→エディタ上でMetalやOpenGL ES3が確認可能に
シェーダー品質→モバイルでも最高品質のPBRシェーダー
color Space→モバイルでもLinear Colorをサポート

OSやAPIに制限があることに注意
OSやAPIに制限があることに注意

Local Cache Server

これまでプラットフォームごとに紐付いたテクスチャーやシェーダーなどのフォーマット変換に時間がかかっていた。しかし、Cache Serverがローカルに統合されることで、プラットフォーム切り替え高速化が可能になる。一度インポートされたものが対象で、別プロジェクトでも可能。

AssetBundle利用前提の新しいAPIを導入

Unityはゲーム内で使用されないコードや機能を削除することで、アプリサイズの小型化や起動時間の低減などを実現している。ただしAssetBundleを使用する場合、本来必要な機能がAssetBundleごと削除されるというトラブルが発生してしまい、それを防ぐための設定も面倒だった。これがUnity5.5では新APIの導入で設定が容易になった。

クラウドサービスとの連携

ほぼすべてのクラウドサービスがエディタからワンクリックで使用可能になった。クラウドビルドもメニューに統合され、Unity画面内でビルドやダウンロードが操作可能になる。クラッシュレポートツールについてもエディタ側から直接有効化でき、クラッシュした箇所などを詳細に把握できるようになる。

unity-technologies-japan-cedec-kyushu-2016-014

最後に山村氏はユニティ・テクノロジーズ・ジャパンではUnityの新機能や使い方を学べる公式イベント「Unity道場」を毎月開催していると説明した。主要会場は渋谷だが、東京以外でも開催しているため、機会があればぜひ参加してほしいと述べられ、講演が終了した。