イベント
[Unite 2015]スマホ向けゲームをPS Vitaで快適に動かすポイントとは。「Project Morpheus」のUnity 5.0対応も披露されたSCE講演レポート
ゲームエンジンUnityの最新版である「Unity 5.0」の,PlayStationプラットフォー
Unityを軸にして様々な話題が披露された講演の概要をレポートしよう。
UnityベースのゲームをスマートフォンとPS Vitaとで同時展開するとき注意点
講演はSCEJA開発サポート責任者の秋山賢成氏によって行われた。最初の話題となったのは,Unity 5.0の話ではなく,PlayStation Vita(以下,PS Vita)向けタイトルの開発に利用されることが多くなっているという,「Unity 4.3 for PS Vita」の事例だ。
もともとUnityは,小規模な開発チームでPCやスマートフォン向けにゲームを制作するインディーズゲーム開発者に人気のあったゲームエンジンである。しかし,最近では,比較的規模の大きなゲームスタジオでも採用が進んできており,PlayStationプラットフォームのようなコンシューマゲーム機向けのタイトルがUnityで開発される事例も増えてきていると,秋山氏は指摘した。
Unityの魅力は,なんといっても対応するプラットフォームの幅広さだ。PCやスマートフォン向けに制作されたゲームを,PS VitaやPlayStation 4(以下,PS4)にまで移植することが可能で,実際,そうした展開事例からヒット作も生まれている。
SCEはこうした状況を歓迎する一方で,危惧している部分もあると秋山氏は打ち明ける。とくに,Unityベースのゲームをマルチプラットフォーム展開をするときにPS Vitaへの展開を考えているのなら,一定の配慮を持って開発する必要があるというのだ。
それは,「PS Vitaの性能に対する配慮」である。
PS Vitaは2011年12月に発売された携帯ゲーム機だ。当時としては,かなりハイスペックなSoC(System-on-a-Chip)を搭載していたが,発売から4年も経つと陳腐化は免れない。とくに,スマートフォン向けSoCは進化のスピードも速く,ミドルクラスのスマートフォンがPS Vitaと同等の性能を持ち,ハイエンドスマートフォンに至ってはPS Vitaを軽く上回っているという状況だ。そのため,スマートフォンでの動作を前提にUnityでゲームを開発していると,PS Vitaでは同等のクオリティでは動作させられなくなりつつあるというのだ。
これは,Unity上で開発したアプリケーションが,さほど苦労なく異なるプラットフォーム上で動作するために起こりがちな問題だと秋山氏は指摘する。
Unityというゲームエンジンは,比較的分厚い抽象化レイヤーを介することで,ハードウェアプラットフォームごとの差異を吸収してアプリケーションを実行する仕組みだ。それゆえに,Unity上でのゲーム開発はターゲットとするハードウェア向けのゲームを開発しているというよりも,Unityプラットフォームで動くゲームを開発しているという感覚になりがちだという。
Unityにおける抽象化レイヤーの性能は,CPUの処理速度に依存する傾向があり,しかもマルチコアCPUによる並列化の効果が出にくいそうだ。つまり,CPUコアのシングルスレッド性能に依存してしまう傾向にある。PS VitaのCPUは,最新スマートフォンのそれには及ばないため,この性能差に配慮して開発を進めないと「動くことは動くが,スマートフォン版に見劣りする体感速度」となってしまう。
もちろん,ネイティブコードでPS Vita向けのゲーム開発をすればこうした性能問題は出にくいが,抽象化レイヤーによって,一定のCPU性能を消費されてしまうUnityでのゲーム開発では,「動いただけで安心せず,性能については常にシビアな目線で高頻度にチェックをする必要がある」というわけだ。
秋山氏は,Unityで開発されたスマートフォン向けゲームをPS Vitaに移植している事例を説明した。この事例は,まさに秋山氏が警告した「Unityの便利さにハマってしまった」パターンの典型だそうだ。
Unityで開発した最初期の試作版がPS Vita上で楽に動作してしまうことで,「このままいける」と安心。逐次の確認をしないままPC上で開発を進めてしまったために,β版をPS Vita実機で動作させた段階で初めて性能の落ち込みが激しいことが発覚。結局,開発は間に合わなくなってしまった。というのが事例の詳細である。
※2015年4月17日18:45頃更新:本稿とは無関係な事例と混同される可能性がある表記を修正いたしました。
このような問題は増えているそうで,こうした失敗を回避するためには,PS Vita実機での動作確認を頻繁に行うことが重要だと,秋山氏は語っていた。
また,こうした問題への対策としてSCEは,PS Vitaのシステムソフトウェア Ver 3.50以降で,システム側が持つ一部の標準機能を制限することと引き替えに,ゲームが利用できるメインメモリ容量を約30%増加できるようにする改良を施したという。この改良でも,Unityで開発されたゲームをPS Vitaで動かすときの問題を解決できるわけではないが,性能改善には大きく貢献するだろうと目されているそうだ。
PlayStationプラットフォーム対応版Unity4とUnity5の違いは?
まず,Unity 5.0は,すでにPS4とPlayStation 3(以下,PS3),そしてPS Vitaに対応している。秋山氏は,これらPlayStationプラットフォーム向けのゲームを開発するうえで,Unity 4.xからUnity 5.0へと乗り換えるメリットについて説明した。
1つめのメリットは,エラーメッセージに生じていた問題が解消されたこと。これは,コンパイル時に表示されるエラーメッセージで,エラーが発生した行を示していた部分が,実際のエラー発生行とずれていた問題のことだという。
2つめは,グラフィックス描画を行うシェーダのコンパイルが改善されたこと。今までは,ターゲットとするプラットフォームすべてのシェーダをコンパイルしていたそうだが,これが必要なものだけを適宜コンパイルできるように改善されたそうだ。
また,Unity 5では,コマンドバッファに対する描画コマンドの構築もマルチスレッド化されており,GPU駆動のオーバーヘッドも削減されている。これらの改良によって,Unity 5.0では,Unity 4.x世代よりも多くのゲームオブジェクト描画が行えると秋山氏はアピールしていた。
しかし秋山氏は,Unity 5.0に搭載された新機能の数々に大きな魅力があると認めつつも,地味に改良されたエンジンの根幹アーキテクチャをより高く評価しているという。そして,この恩恵を利用するためだけでも,「Unity 5.0への移行はお奨めできる」と述べていた。
IL2CPPとは,C#で書かれたプログラムコードをC++のコードに変換する仕組みのこと。ブラウザゲームにおいて,C#からC++に変換したコードをさらにJavaScriptへと変換して実行する処理系の一部として言及されることの多い機能だが,C++のコードをそのままコンパイルしてネイティブコードで実行させることも可能だ。
実際,Unityでは,iOS向けの64bit版向けプログラムにおいて,IL2CPPを利用するという方針を打ち出している(関連リンク)。それをほかのプラットフォームにも拡大することができれば,ゲームの実行性能を向上させられるだろう。
国内初披露となったProject Morpheusの新型試作機
ステージでは,実際に装着してのリアルタイムデモも行われている。披露されたのはUnityのマスコットキャラクターであるユニティちゃんを使った「ユニティちゃんライブステージ - Candy Rock Star -」だ。秋山氏によると,第2世代Morpheusでは,レンダリングフレームレートこそ60fps固定であるものの,Temporal Reprojection処理(時間再射影,いわゆるTime Warp処理)によって,頭部の動きに対して120fps相当で追従した映像表示を実現しているとのことだった。
このデモは,Unity 5.0用に開発した「Morpheusプラグイン」をインストールした環境下で制作されたものだという。Unityベースのプログラムによる映像出力を単純にMorpheusで表示させるだけならば,用意された専用スクリプトを設定するだけでOKとのことで,とても簡単に作れそうに見える。
もちろん,仮想現実対応HMDならではのコンテンツを作るとなれば,ほかにも苦労や工夫は必要になるが,Unityによるゲームを「とりあえずMorpheusで見られるようにして評価する」だけであれば,すぐに実現できるというのは開発者にとって利点となるはずだ。
新しいコンピュータエンターテイメントである仮想現実対応ゲームの開発において,SCEは,開発途中段階での試行錯誤がスピーディに行えるUnityに大きな期待をしていることが,短い説明の中でも伝わってくる講演であった。
「Unite 2015 Tokyo」公式サイト
- 関連タイトル:
Unity
- 関連タイトル:
PlayStation VR本体
- この記事のURL: