VR Watch
VR開発の基本はゲームエンジン。ゲームエンジンとは何か、UnityとUnreal Engineの違いは?
「VRコンテンツ開発ガイド 2017」試し読み/その2
2017年5月26日 08:01
株式会社エムディエヌコーポレーションから発売中の書籍「VRコンテンツ開発ガイド 2017」今回から数回にわたって、本書の中身を少しだけ紹介していきます。
今回は古林克臣氏によるChapter 2「VRソフト開発環境の概況とヘッドセット別開発手法」より「VRアプリケーション開発環境の概況」の試し読みをお送りします。
古林 克臣
Unity・UE4エンジニア。CTOを務めるVRコンテンツ制作会社のハシラスでは、主にHTC Viveを使用したVRアトラクションを制作。「ソロモン・カーペット」や「Hashilus」新バージョンなどの制作に関わる。また、「フレームシンセシス」という個人活動名でも多数のVRコンテンツを制作し、VR体験会などで精力的に作品の出展を行っている。
Twitter:http://twitter.com/k0rin
https://framesynthesis.jp/
http://hashilus.com/
VRアプリケーション開発環境の概況
まず、2017年時点におけるVRアプリケーション開発の概況について解説します。
Unityを使うのか、Unreal Engineを使うのか、はたまた使わないのかということについて、指針を示します。
VRアプリケーション開発はゲームエンジンの使用が基本
2017年現在においては、VRゲームやVRアプリケーションの大多数が、ゲームエンジンのUnityもしくはUnreal Engineを使用してつくられています 。そのほかのエンジンや内製のエンジンを使用しているものも一部あります。
「ゲームエンジン」とは何でしょうか? ゲーマーもしくはゲーム系の開発者ではない方には耳慣れない言葉かもしれません。一般にゲームエンジンとは、ゲームアプリケーションの動作に必要なグラフィックス、入力、サウンド、物理シミュレーション、リソース管理などのランタイムや、シーンエディタ、コードエディタなどの開発環境といった、ゲームソフトをつくって動かすのに必要な機能がひとまとまりで提供されているソフトウェアです。
ゲーム系以外の開発者には「フレームワーク」や「ミドルウェア」といった言葉がまず連想されるかもしれませんが、ゲームエンジンはもう少し特定のソフトウェアをピンポイントで指すニュアンスです。
UnityとUnreal Engineの2つが有名なゲームエンジンですが、それ以外にもLumberyard、PhyreEngine、PlayCanvas、Godot Engineといった、多数の商用ゲームエンジンや内製ゲームエンジン、オープンソースのゲームエンジンが存在します。
なぜゲームエンジンが使われるのか
一昔前の3Dゲームは、専門技能をもつプログラマが、C++でDirectXやOpenGLなどの低レイヤーのグラフィックスAPIをたたき、複雑な幾何学のアルゴリズムを自力で実装して動かしているものがほとんどでした。当時は新しいゲームをつくるたびに一からそうした基幹コードが書かれていましたが、そのうちに、ライブラリとして使いまわしたり、いろんな種類のゲームに対応できるようにしようという流れが起きます。さらにそれが発展して、スクリプトでゲーム内のオブジェクトを制御したり、シーンエディタを組み込んだりといった、開発の効率化が行われるようになりました。そうした総合的なゲーム開発・実行環境がいつしか「ゲームエンジン」と呼ばれるようになりました。ゲームエンジンとは、3Dゲームをつくるためのプログラム技術が数十年かけて進化した末にたどりついた、ひとつのパターンのようなものです(なお、これらゲームエンジンの実装面の仕組みについては、下記の書籍が詳しいので参照してください)。
- ゲームエンジン・アーキテクチャ 第2版
- URL●http://www.sbcr.jp/products/4797377484.html
元来、そうしたゲームエンジンの多くは非公開だったり、企業向けで非常に高価だったのですが、2010年前後から安価で高機能なUnityが台頭し、スマートフォン用ゲームの領域で爆発的に普及することになります。Unreal Engineも2015年に基本無償化を発表し、この2大エンジンが広く一般に提供されています。結果として、こうした最高クラスのゲームエンジンを個人や小規模事業者でも利用できるようになりました。
現在のVRのムーブメントは、GPUやスマートフォンのディスプレイパネル・センサーなど、ハードウェアの進歩が追いついてきたのもさることながら、こうしたゲームエンジンの開発競争やユーザー獲得競争による、3Dアプリケーション開発の破壊的な容易化・低廉化がもたらした面も大きいです。プログラマではない人や学生ですら比較的容易にVRソフトをつくれる今の状況は、一昔前には想像もできなかったことです。
さらに、UnityやUnreal Engineのエコシステムは非常に強力なため、ゲームエンジンと銘打ってはいるものの、最近では、映像、建築、医療、アカデミックといった非ゲーム分野での使用も増加してきています。とりわけVR領域ではその傾向が強いです。Leap MotionやOptiTrackといった周辺デバイスも、たいていの場合はUnityもしくはUnreal Engineのプラグインが提供されており、この両ゲームエンジンがVRヘッドセットを含めた各種デバイスのハブとなっている面もあります。さらに、MicrosoftのHoloLensのアプリケーションもUnityで開発可能です。
やや後ろ向きな話をしますと、UnityとUnreal Engineはいずれもソースコード何百万行という非常に大規模なソフトウェアです。実は、現在も「アンチャーテッド」や「コール オブ デューティー」、「アサシン クリード」、「Horizon Zero Dawn」といった、いわゆるAAAタイトルを制作しているゲーム会社は、自社開発のエンジンを使っていることのほうが多いのですが、そういったところでもない限り、自前でUnityやUnreal Engineに太刀打ちできるゲームエンジンを開発しようというのは手に余る状況になっています。各種ヘッドセットを含め、非常に多数の実行環境をサポートする必要も生じます。UnityもUnreal Engineもプロプライエタリ・ソフトウェアですから、これに依存するリスクを指摘する声もないわけではありませんが、VR開発をしようとすると、このどちらかのエンジンを使用するのが2017年現在のほぼスタンダードとなっています。
UnityとUnreal Engineのどちらを使うか?
UnityとUnreal EngineのどちらもHTC ViveやOculus Rift、Gear VR、Google Cardboard、DaydreamさらにPlayStation VRといった一通りのVRヘッドセットをサポートしています。ただし、2017年現在は過渡期で、ヘッドセットによって動作状況がまちまちだったり、Unityでは追加のプラグインを使用する必要があります。
UnityとUnreal Engineのどちらに将来性があるのか、なくなったりしないのかということがときおり話題になりますが、あくまで私見として、どちらのゲームエンジンにも非常に多数のユーザーやユーザー企業がおり、強固なエコシステムを形成しているため、今後5年以上のスパンで、衰退したり、使えなくなってしまうことは考えにくいのではないでしょうか。また、2つのゲームエンジンが競争関係にあることで、両者ともお互いの長所を取り込もうと急速に機能向上が進んでいますし、より多くのユーザーを獲得しようと気を使っているのが感じられます。どちらを選ぶかは、細かな差異、もしくは好みという面があるかもしれません。
商業用途でしたら、案件ベースで、ヘッドセットの対応状況や、今回はこのエンジンの機能を使いたいのでUnityを選ぶ、もしくはUnreal Engineを選ぶといったこともありますし、開発者やクライアントがどちらのエンジンに慣れているかで決まることもあります。また、Unityはシート制、Unreal Engineはロイヤリティ制とライセンスの体系が異なりますので、そちらで判断することもあるでしょう。
以下にVRソフト開発におけるUnityとUnreal Engineそれぞれの特徴をおおまかに示します。
Unityの特徴
Unityは非常に大きなエコシステムをもち、特にスマートフォンのゲームの多数がUnityでつくられています。国内のVR関連企業ではコロプラ、グリーなどモバイルゲーム由来の会社がUnityを主に使用していることが多いです。以下のような特徴が挙げられます。
モバイル対応が良好
Unityはモバイル方面から普及したエンジンのため、ハイエンド方面から使用されているUnreal Engineよりも低スペックの端末でパフォーマンスを出しやすくなっています。Gear VRやGoogle Cardboardでは現状ほとんどのVRアプリがUnity製となっています。
パソコン画面に別の映像を出せる
VR体験会やアトラクションで、ヘッドセットで見ている光景とは別に、パソコン画面に別視点の映像を出したい場合があります。Unityではこれがシーン内にカメラを追加することで簡単にできます。もちろん、ネットワーク連携で別のパソコンで表示する方法もあります。
VRモードで再生中にエディタを操作できる
さりげなく重要なポイントなのですが、Unityでは、再生ボタンを押してヘッドセットでVR空間が見える状態でエディタを操作できます。シーンの微調整(位置合わせやパラメータの調整など)やデバッグに非常に便利です。
ハードウェアサポート
周辺デバイスについて、現状はUnityが先行してサポートされる傾向があります。また、MicrosoftのHoloLensのアプリの開発にもUnityを使用できます。VRアプリケーションに加えて、今後HoloLens用アプリの開発を検討するならUnityを使用することになるかもしれません(ただし、現状はUnityでつくったHoloLensアプリケーションは、ほかのアプリケーションと同時に実行できない排他的な動作となります)。
HTC Viveでグリーンバック合成ができる
クロマキー合成で、体験者が実際にVR空間の中にいるかのような映像を見たことがあるかもしれません。UnityのSteam VRプラグインにはこの映像合成を支援する機能が標準で搭載されています。宣伝用の映像を作成したり、YouTubeなどのゲーム実況に使用したり、体験者だけではなく周囲の観客にも何が起こっているかを伝えたりといった目的に利用できます。
その他
C#でコーディングできることや、360度動画コンテンツのつくりやすさ、日本語の情報の多さといった特徴があります。また、Final IKのVRIKやLive2D Euclid、Pencil+といった特殊なアセットやミドルウェアの存在がUnityを採用する理由となる場合があるかもしれません。
Unreal Engineの特徴
Unreal Engineはコンシューマゲームやアーケードゲーム方面の利用が多いです。国内のVR関連企業では、バンダイナムコエンターテインメントやヒストリアなどがUnreal Engineを主に利用しているようです。また、「Robo Recall」や、Oculus VR社の「First Contact」「Henry」といったデモにUnreal Engineが使用されています。以下のような特徴が挙げられます。
リアリスティックな絵を出しやすい
Unreal Engineはデフォルトで写実的な絵が出やすいセットアップがされており、マーケットプレイスの素材もリアル志向のものが多いです。リアル志向のVRコンテンツを制作する場面ではUnreal Engineが採用されることが多いようです。
映像向き
映像・CG方面のクリエイターが、UnityよりもUnreal Engineを好むことが多い印象です。シェーダを書かずにノードベースでマテリアルをつくれること、高度なアニメーションエディタ機能(シーケンサー)が標準で搭載されていること、エディタのUIが日本語化されていることなどが大きいです。
エンジンが新しい
「新しい」というと語弊があるかもしれませんが、コードベースを10年以上引き継いでいるUnityに対して、Unreal Engineは2012年リリースのUE4において大規模な改修が行われたため、エンジン全体の構成やUIの外観がUnityよりも洗練されている印象です。
一通り特徴を挙げましたが、Unity、Unreal Engineともに基本無料でほぼ全機能が使用できますので、とりあえず両方のエンジンを使ってみて、どちらが向いているか確かめるのもよいでしょう。
なお、筆者が所属するVRコンテンツ制作会社のハシラスでは、今のところ1プロジェクトのみで実験的にUnreal Engineを使用し、そのほかのプロジェクトはすべてUnityです。ただ、これは慣例的にUnityを使っており、Unityエンジニアが多いという面が大きく、コンテンツの内容次第では今後またUnreal Engineを選択することも十分あり得るでしょう。
この先の内容は?
次節以降では、UnityとUnreal EngineにおけるVR開発の基本的方法や、VR空間の設計、VR酔いの防止など実践的ノウハウを解説。VR開発を実際に始めるには必読の内容となっています。