2019年5月24日
Drifter Entertainment が巧みな最適化によって Robo Recall を Oculus Quest に移植
システムのスペックが控えめであるにもかかわらず、Robo Recall: Unplugged では Rift 版と同等のプレイが可能です。敵の数、物理、空間音響などの面はオリジナル版と変わりありません。さらに驚くべきことに、Drifter Entertainment はこの移植をわずか 7 人で 6 か月のうちに完成させました。どうやってそのようなことができたのか、テクニカル ディレクターの Matt Tonks 氏にお話を伺いました。会話のなかで Tonks 氏は、チームが克服する必要があった課題、パフォーマンス面で最大の効果を上げた最適化、Quest 向けの開発のヒントについて触れています。

Oculus Quest 向けに Robo Recall を開発するにあたって Drifter Entertainment が主導的な立場をとるようになった経緯について教えていただけますか?
テクニカル ディレクター、Matt Tonks 氏:Quest では、Rift と同じスタイルのゲームを遊べるようにすることに重点が置かれています。その点を考えると、Robo Recall を Quest にリリースすることは、Oculus としても強く期待していることだったでしょう。ところで、Robo Recall は Epic のゲームです。ご想像いただけるかと思いますが、Epic としては移植を他社に任せるのは乗り気ではなかったのではないかと思います。幸いにも、当社は Epic と強い関係があり、メンバーの経験を合計すれば、Unreal Engine の使用 (と開発の) 期間は数十年におよびます。そういったことから、Unreal Engine を使って Quest で何ができるか、その準備を整えて実証するうえで、当社は最適なパートナーとなりました。
ゲームプレイの面で、Robo Recall の Quest バージョンは Epic が開発した Rift バージョンとどのくらい似ているのですか?
Tonks 氏:ゲームプレイはほぼ同じだと言えることを誇りに思っています。Robo Recall を Quest に移植すると聞いた人は、敵の数、物理、混乱など、あらゆる面がスケールダウンすることを想像したのではないかと思いますが、そういったことはありません。自分たちのしたことによって元のゲームの感覚 (あるいはスコアリングの可能性) が変化していないか、振り返ってよく確認しました。敵の数、武器の挙動、オリジナルにあった物理ベースのすばらしいアニメーション機能、どれもそのままです。当初は安定したフレーム レートで実行するためにそれらの要素の一部を削る必要があるかもしれないと懸念していました。しかし、幸いにも、ゲームプレイを同じにしようとこだわったことが実を結び、要素を削減する必要はありませんでした。

元々 Robo Recall は、比較的高性能なゲーミング PC を必要とする Oculus Rift 向けに開発されたものでした。性能が控えめな Quest のモバイル用プロセッサーでどうやってそのゲームを動作させることができたのですか?
Tonks 氏:簡単に言えば、ハード ワークのおかげです。対象とするデバイスの正確な性能を前もって知ることができたので、その情報を活用しました。Quest でだいたい何ができるかはすぐにわかりましたし、削ったり、考え直したり、作り直したりする必要があるところもわかりました。ゲームを PC 向けに開発するときは、レベルにある建物の構造や、キャラクターに細々としたものがいくつ含まれているかというようなことを気にかける必要はありません。ですから、「40 個のコンポーネントがあるが、3 個でも同じような結果を出せる」というところがたくさんありました。昔ながらのアセットの最適化と、ゲームプレイに関わるあらゆるシステムのぜい肉を削ぎ落とす作業に同じくらい手間をかけたと思います。パズルの最後のピースとなったのはエンジンの調整です。CPU と GPU の性能を限界まで引き出すようにしました。
弾丸がスローモーションになったり、武器を投げることができたり、遊び心のある Robo Recall では、多くの物理が使われています。その物理の実装は難しいことでしたか?
Tonks 氏:物理エンジンが CPU を一定量使えるようにして、Android への移行に伴う小さなバグをいくつか修正したら、ほとんどは「ただ動く」ようになりました。ただし、物理が複雑になっているところを簡素化して負荷を緩和するために、作業が必要なところもいくつかありました。

既存のアセットは再利用できましたか? それとも多くを作り直す必要がありましたか?
Tonks 氏:アセットはできるかぎり再利用しました。それはプロダクションのコストを下げるためでもあり、オリジナルのゲームに忠実であるためでもありました。動的なアセットについては、大半でエクスポートしてから Quest の仕様を念頭に大幅な最適化を行いましたが、静的なアセットの大部分はそのまま使えました。
御社ではマルチビューによって Quest の GPU を最大限に活用できたと述べていらっしゃいますね。マルチビューの仕組みと、どう活用したかについて、詳して教えていただけますか?
Tonks 氏:マルチビューは、ゲームをステレオでレンダリングするためのコストの一部をオフセットするために設計されたテクニックです。奥行きを認識できるようにするために、ゲームは片目ごとに 1 回ずつ、合わせて 2 回描画されます。そこで通常は、各フレームの描画に 2 倍の時間がかかります。マルチビューはその処理の一部を再利用するクレバーな仕組みです。片方の目のために行った処理を、もう一方の目のために流用します。マルチビューを活用することで、全体的な見た目をオリジナルにより近付けることができました。
ハードウェアの性能に合わせたグラフィックスに加えて、空間化したオーディオを組み込むことは困難でしたか?
Tonks 氏:当初はそのことを心配していたのですが、杞憂となりました。それは Epic Games のリード オーディオ プログラマー、Aaron McLeran さんと、彼が率いる Epic のチームが Android 版の Fortnite のために行っているオーディオ システムの最適化のおかげです。オーディオの面は苦労なく進められました。UE4 のオーディオ システムは大きく発展していますね。

あちこち最適化するうえでパフォーマンス上の最大の課題となったのは何ですか?
Tonks 氏:最後まで工夫を続けたのはドローコールとシェーダーの複雑さです。ボブ・ロスがゲームの各フレームの絵を描いていて、ボブに「happy little tree」を描くように 1 本ずつ明示的に指示していく必要がある、というところを想像してみてください。長い間そこに座って、「次はそこに木を描いて、それからそこ、それからそこ」とボブに指示を出し続けることになるでしょう。ここでの木の 1 本 1 本が、画面に何かを描画するために GPU に送られるコマンドに相当します。オリジナルの Robo Recall では、1 フレームごとに約 1,000 ドローコールが使われていました。Quest でフレーム レートを維持するには、その 4 分の 1 のドローコールしか処理できません。そこで、長い時間をかけてゲームのすべてのレベルを確認し、メッシュを結合したり、目に見えないメッシュを削除したり、ほかのうまい方法を考えたりして、かわいそうなボブに絵を描かせる回数を減らす必要がありました。
先ほど述べたとおり、もう 1 つの問題はシェーダーの複雑さでした。オリジナルの Robo Recall は高性能な GPU 向けに最適化されていたので、ゲーム全体で負荷の高いシェーダーが大量に使われていました。長い時間をかけてすべてのシェーダーを調査し、複雑ではないが概ね同じ視覚効果をもたらす、負荷の低いマテリアルに置き換えました。
パフォーマンス向上に最も役立った最適化はどのようなものでしたか?
Tonks 氏:1 つ挙げるなら、Drifter Entertainment の創業者兼アート ディレクター、Kenneth Scott による、キャラクターと銃のメッシュを Quest に取り込むためのすばらしい仕事でしょうか。Kenneth は制限があるなかですばらしいビジュアルを作り出すことに習熟していて、その経験が活かされました。
Fixed Foveated Rendering (FFR) は負荷の高いシーンを描画するために役立ちました。最終的に、どの程度 FFR を積極的に使うかについては、そのシーンでの GPU の負荷に応じて決める動的なアプローチを採用しました。
ほかにもいくつかあります。階層的 LOD (HLOD) システムを活用し、調整することで、遠くにあるオブジェクトについて GPU の負荷を下げることができました。Quest はハードウェア オクルージョンをサポートしないので、可視性については事前計算を行いました。また、メッシュの結合とインスタンス化を全体でたくさん行いました。

Quest への移植に 4 か月しかかからなかったというのは本当でしょうか?比較的小さなチームでこのような難しい作業をそれほどすばやく行えたのはどうしてでしょうか?
Tonks 氏:大きなチームのほうが速いとはかぎりません。移植に取り組むのは主に経験豊富な業界のベテランであるということもありますし、一般的に大量のイテレーションや創造的な脳の働きを必要としないとも言えるでしょう。
正確には合計で 6 か月ほどかかりました。4 か月の時点では、ゲーム全体をプレイできるようになった状態でした。残りの時間で、パフォーマンスが急激に悪化するところを調整して、Quest のディスプレイのリフレッシュ レートに合わせて 72 フレーム毎秒で円滑に実行できるようにしました。
Oculus Quest 向けに初めて開発したデベロッパーの一員として、Quest についてこれまで学んだことを教えていただけますか?
Tonks 氏:発売前はいろいろと懐疑的な見方をされていましたが、Quest が本物のゲーム デバイスであることは今や明らかです。魅力的な VR エクスペリエンスを実行できるハードウェアに優れたトラッキング機能を搭載して 400 ドルのパッケージにして、ケーブルも設置も、ほかのハードウェアも必要ないというのはすばらしいことです。
モバイル GPU やモバイル VR プラットフォームには、理論上は優れた VR エクスペリエンスを実行できるものがたくさんありますが、それらには実際には欠点があります。通常、デバイスがずっと全力で動作し続けられるようには設計されていないのです。たとえばスマートフォンがいずれオーバーヒートして自動的にダウンクロックし、VR のエクスペリエンスが楽しいものではなくなってしまいます。Quest に長時間 100% の負荷をかけ続けてみたところ、オーバーヒートすることもなければ、エクスペリエンスが悪化することもありませんでした。

Oculus Quest 向けにゲームを移植または開発しようとしているデベロッパー向けにヒントをいただけますか?
Tonks 氏:
- Quest にはコードがなく、方向の制限がなく、トラッキングは非常に優れています。これを活用しましょう。
- ドローコールは 250 まで、という点について早い段階から心がけ、その範囲内で自分の望むビジュアルをどう伝えるかを考えましょう。
- Robo Recall の開発時点では使えるほどにサポートが整っていなかったのですが、Vulkan には注目してください。やがて登場するもので、シーンでより多くのことができるようになるので、採用する価値が十分にあります。
- 車輪の再発明は避けましょう。UE4 は必要なツールすべてを提供しているので、それらの使い方を把握するために時間をかける価値があります。
お時間をいただきありがとうございました。Drifter Entertainment と Robo Recall: Unplugged の詳細情報はどこで確認できますか?
Tonks 氏:どういたしまして。Drifter Entertainment の最新情報については www.driftervr.com をご覧ください。
Robo Recall: Unplugged については、www.driftervr.com/roborecall をご覧ください。以前にリリースした VR ゲーム、Gunheart についてもチェックしてください!