【UNREAL FEST EAST 2017】コロプラが脱Unity!? UE4を使ったVRゲーム移植のノウハウをお届け【後編】

コロプラは、10月8日の「Unreal Fest 2017」で、「脱Unity!?UE4でVR開発のここが変わった」と題するセッションを行い、エンジニアの加田 健志 氏、佐々木 尚人 氏、デザイナーの西村 博司 氏が登壇した。

本セッションでは、Unityで開発したタイトルを、Unreal Engine(UE)を使って移植するにあたってのノウハウ、そして移植を通して分かった同エンジンの強みについてレポートする後編だ。
 

後編となる今回は、UEを使ったアニメーションとVRへの最適化について紹介する。


■使いこなせばこんなに便利になる、UEを用いたアニメーション制作

コロプラから3人目の登壇となるのはエンジニアの佐々木 尚人 氏だ。2016年に新卒としてコロプラに入社し、『TITAN SLAYER』の「描画周りの実装」と「ボスキャラ実装」の開発を担当している。
 

▲コロプラのエンジニア 佐々木 尚人 氏

佐々木氏はUEでのアニメーション制作について語ってくれた。「何故、アニメーションなのか」、同氏は取り上げた理由としてUnityからUEとの差が最も大きく、苦戦もしたのがアニメーション部分だったという。

Unityでは「Animator」という機能を使って、アニメーションをいつ、どんな風に再生するかを、ステートと遷移のルールに基づいて設計する。

一方でUEでは、Animation Blueprintを用いて制作となる。基本的な機能はUnityと同じだが、アニメーションイベントの受け取りや変数の制御もAnimation Blueprint内では行うことができると機能の違いを説明した。
 
 

 
 

▲もちろん両エンジンは全く同じ機能を持っているわけではなく、UnityでAnimation Blueprintと機能を近づけようとすると、管理用のスクリプトが必要になる。
 
具体的な実装で優れていた点として挙げたのは、UEでは注視点を首だけで追うようなアニメーションが可能になっており、モーション毎に細かい動きをコントロールできる事。
 

遷移を制御するための変数で、UEでは独自定義の構造体、クラス、Enumとなんでも変数の定義ができるので非常に便利だという点だ。

例えば2体の敵キャラ、2種類の攻撃パターンを設計する際に、アタックタイプのEnumでモーションの出し分けが出来ることが非常に優れていたと振り返り、移植では大いに活用したという。

なお、同じ内容をUnityでやろうとすると、「Enumを用意し、intにキャストし、int比較するので0%の攻撃はなんだろう・・・」、となかなか骨の折れる作業となる。
 
 

 
佐々木氏はUEでのアニメーション制作にあたって、UEの「Animation」は高機能で便利であることを踏まえ、両エンジンではクセが大幅に違うため、それぞれがどう違うのか確認し、設計レベルで見直して移植することをお薦めするとしてまとめた。


■VR空間で快適に楽しむためのUEでの最適化とは
 

 
再び登壇したのはエンジニアの加田氏だ。加田氏はUEを使ったVRの最適化についての知見を語った。
 

加田氏が、VRの最適化として掲げたのは「処理負荷軽減」と「プレイヤー没入感向上」だ。

VRとは切っても切れない酔いの話だが、最適化を行うことでフレームレートを高く維持すること、それが酔いを起こさない要因の1つとなる。

VRではどのプラットフォームにおいても90fps以上のフレームレートを求められるが、厄介なことに開発の終盤で問題が発覚した場合、エフェクトを切ったり、背景のオブジェクトを消すなど、様々な犠牲の上にフレームレートが成り立つケースが多いのではないかと問題を提起した。

そういった努力を無駄にしないためにも、「当初からのパフォーマンスを考慮した開発」が大事だと強調した。
 

では実際処理負荷の軽減でUEを使った最適化として、どのような手法をとったのか。それは、"Forward Shading"と"カプセルシャドウ"の2つだという。

まずは、Forward Shadingだ。UE4の設定は最初、Deferred Shadingになっている。これをForward Shadingに変更することで、レンダリングパフォーマンスが20%〜30%ほどアップしたという。
 



もちろんForward Shadingにすることは良いことだけではない。Forward Shadingは表現に制限があるので、プロジェクトの途中にShading手法を変えると見た目が変わってしまい、マテリアルを作り直すといった危険性が出てくるのだという。

そのため、最初からShading手法を決めておく事が賢明とのことだ。
 

続いて"カプセルシャドウ"だ。この機能はキャラクターなどの影の表示をする機能で、カプセルシャドウを使うことで丸影ほど単純な処理ではないが、ほどほどにリアルな描画ができるのが特徴だ。
 

実際に、このForward Sharding + カプセルシャドウの組み合わせによって、90fps(11.00ms)に到達することができ、基準値を超えることができたと成果を披露した。

この手法は大量のオブジェクトを表示する場合に有効な方法のようだ。
 

次は没入感だ。VRを使いせっかく360度カメラと言う視点を得ることができても、実際のグラフィックがいまいちであればその世界から冷めてしまう。だがグラフィックをリッチにすればするほど、動作が重くなるというジレンマが発生する。

『TITAN SLAYER』では近くに見えるものにコストを割くという方針で開発を行っており、巨人と戦いが1つのメインとなっている。そのため等身の高い巨人たちに対して、その見える部分は、顔よりも手先や足といった部分であるため、そこにポリゴンを多く割くという手法をとっているそうだ。
 
▲VR内の自分の手の画像、リッチな作りにしたものの、ボーン数は極力減らしたとのこと
 
またVRでは手のモデルの位置と実際の手の位置がずれていると違和感が大きく感じてしまう。更にViveとOculus Touchではそもそも手の位置が異なるので、双方のコントローラで違和感がないように調整も行っている。武器によってもその位置が変わってくるので、それも一つ一つ丁寧に設定したという。

この作業の際にも、加田氏は「UEには、OculusTouchやVIVEコントローラーのモデル」が入っており、非常に便利だったと語っていた。
 

次はサウンドに関してだ。没入感を演出するためには、サウンドも欠かせない要素の一つだ。例えば立体音響を使って、どちらの方向から敵が来ているか示したり、迫力を出すために2Dサウンドを使い分けたりする、というのがその一例だ。

またUEにはSound Cueという便利機能が付いている。この機能はノードベースで、サウンドが制御できる機能になっている。
 

 
さらにオーディオのランダム再生や、Unityにはないアニメーションフレーム指定でのサウンド制御も可能だとのことだ。

なおUnityではサウンド制御をするにはエンジニアを介す必要があったが、Sound Cueがあればサウンド担当のみで対応できるため、ここでも、工数を減らすことができるのは魅力の一つだろう。
 

 

■C++? Blueprint? UEで使うべきエンジニアの書き方
 

UEを使用するにあたって、コードベースのC++を使うべきか、ノードベースのBlueprintを使うべきかは加田氏はエンジニアにとして迷うところであったそうだ。

だが、UEのチュートリアルはほぼBlueprintで作られていることもあり、避けて通ることはできないと考えたという。

では実際に使用した際の違いはどういったものであったかカテゴリーごとに説明してくれた。
 




 
と、どっちにも特徴があるため使い分けは非常に難しかったという。コロプラではUEでの検証をすすめ得た知見として、基礎部分をC++にし、C++を継承したBlueprintをゲームに使用、安定した部分からC++に移行という方式を取っている。
 

このような方式をとっている理由としては、開発サイクルを早めるためだという。

C++はコンパイル速度が遅く、トライアンドエラーの多いテストやモックを作る際にはBlueprintを使うことで時間を短縮。ただし、Blueprintの複雑なベクトル演算のノードは他人から見てもわかりにくいため、安定した部分からC++に持っていくようにしたという。

注意点としては、UEではBlueprintで定義した内容はC++からアクセスできないため、C++で継承していないブループリントを後から書き変えようとすると参照関係など大幅な作り直しになることを挙げていた。
 
 
さて、これらの四苦八苦からUEで移植した『TITAN SLAYER』は、キャラクターの質感アップやエフェクト表現の向上で、よりリッチなコンテンツになったそうだ。

会場ではUEで作られた同タイトルの動画が公開されていたが、よりグラフィカルになり、その世界でのリアリティが強まった印象を受けた。

是非VRで試してみたいところだ。


話の中で、度々開発サイクルの話にも触れているが、エンジニアの手を借りずに実装ができるという強みは大きいようだ。ポストエフェクトの部分をデザイナーだけで完結できるのは効率化という意味ではアドバンテージになるのだろう。

加田氏曰く、「初期機能が豊富で最初は戸惑う部分もあるが1ヶ月ほど触っていれば、おおよそ把握できる」とのことだ。

またコードで書いたいたのでノードベースのBlueprintは抵抗があったが、「エンジンの機能が使いやすくまとめられていた」というのが同氏の感想だ。

初めは初心者だったコロプラも使っていくうちに良い絵が出せるようになっていったので「ぜひUEを使って欲しい」として講演を締めくくった。
 

なお余談ではあるが、スライド内に度々差し込まれているユニークな絵はコロプラが発売しているLINEスタンプのものとなる。

開発者たちの悲哀を非常にユーモア溢れる台詞と絵で表現したスタンプなので気になった人は見てみよう。

 
株式会社コロプラ
https://colopl.co.jp/

会社情報

会社名
株式会社コロプラ
設立
2008年10月
代表者
代表取締役会長 チーフクリエイター 馬場 功淳/代表取締役社長 宮本 貴志
決算期
9月
直近業績
売上高309億2600万円、営業利益28億5800万円、経常利益32億7600万円、最終利益18億9300万円(2023年9月期)
上場区分
東証プライム
証券コード
3668
企業データを見る