DOTS によってモバイルで未来的な Megacity を実行

Unity 開発者のケーススタディ:Nordeus 社が DOTS を採用してコーディングをどのように劇的に変化させたか、そして Megacity のモバイル版をどのようにして制作したか

Unity のコミュニティイベントでの Megacity のようなインパクトを与えるデモはどのようなインスピレーションから生まれたのでしょうか? ただの目の保養ではなく Unity の開発者にとって実際のメリットがあるのでしょうか? ベオグラードに本社がある Nordeus 社は、多くの Unite 開発者カンファレンスで注目のスタジオであり、ヒットした自社のゲームから選定した作品のデモを行っていました。Nordeus 社は最先端のクリップを見せつけるだけではなく、ユーザーが実現できることをクリエイティブ面とプログラム面の両方で劇的に変化させる Unity の新しい機能を実証しています。

プロジェクト

「デフォルトで高度なパフォーマンスを」の最新の進化を定期的に実演 - DOTS イニシアティブ

目標

すべての Unity 開発者向けに、マルチスレッド対応コードのパフォーマンスを向上

プラットフォーム

Android、iOS、PC

チームメンバー

Megacity では 3 人、戦闘デモでは 20 人

場所

セルビアのベオグラード

CPU はコア数が増える傾向にあるため、最新のコンピューティングエンジンではハイパフォーマンスなマルチスレッド化が不可欠な機能になっています。複数のコアやスレッドに対する Unity のソリューションは Data-Oriented Technology Stack(DOTS)です。この用語は、 Entity Component System(ECS)C# Job System、そして Burst コンパイラーの総称です。

ロサンゼルスからベルリンまで Unite のオーディエンスを常に熱狂させてきた Nordeus 社は、DOTS と、軽量レンダーパイプライン(LWRP)や ネストされたプレハブなどの Unity の他の機能のメリットを実証しています。

次のようなメリットが生まれています。

  • 記述が容易で効率的なマルチスレッド対応コード
  • モバイルなどの低パフォーマンスのプラットフォーム向けに最適化されたレンダリング
  • 統合のバグが大幅に減少したことによる QA の迅速化
ハッカソンで DOTS につなぐ

すさまじくクリエイティブで国際的なチーム

2010 年に Microsoft 社の元エンジニアの Branko Milutinovic 氏、Milan Jovovic 氏、そして Ivan Stojisavljevic 氏によって設立された Nordeus 社は、最初にフリーミアムのチームマネジメントゲーム『Top Eleven – Be a Soccer Manager』(米国以外では「Football」)を公開しました。このゲームは Facebook で桁外れの成功を収め、3 週間で採算が取れて、2011 年に Android と iOS に移植されました。それ以降は、iOS と Android で『Golden Boot』を公開し、ソフトローンチで『Heroic: Magic Duel』を公開し、その他に多数のゲームを開発中です。

Nordeus 社はベオグラードにある本社に 22 か国から人材を集めていて、各地の文化と歴史に並外れて富んでいます。ヨーロッパで上位の職場として頻繁に取り上げられていて、いくつかの慈善団体への惜しみない寄与者としても知られています。

ソフトウェアエンジニアのトップ 2 人 Jozef Oros 氏と Srdja Stetic-Kozic 氏はベオグラード出身であり、Nordeus Central Tech チームで他の 8 人のエンジニアと一緒に働いています。このチームは Nordeus 社のすべてのゲームで使われるツールと手法の育成の責任を負っています。Srdja は「当社のゲームはすべて Unity で制作されています」と語っています。

ハッカソンで DOTS につなぐ

Jozef は「DOTS のことを聞いてすぐに Unity に連絡して、DOTS を試すこととコラボレーションできるかどうかを確認しました。当社のプレイヤーに可能な限り最高のユーザー体験を提供したいと常々考えていて、スムーズなゲームプレイはその重要な部分です。もちろん、ゲームを高速に実行できるようになるものには特に関心があります」と言います。

コラボレーションは、Unity 社と Nordeus 社の CTO によるベオグラードでのミーティングで始まりました。Nordeus 社は、新しいテクノロジーに慣れることへの支援を歓迎し、Unity 社は現実世界のアプリケーションで DOTS を限界までテストすることを望んでいました。Srdja は「当社も、Joachim Ante 氏(Unity の共同設立者)が示したような壮大ですばらしいものを創りたいと思っています。Unite Austin(2017 年)では Heroic: Magic Duel の戦闘を取り入れて、10 万ユニットの特大サイズにして、すべてを吹き飛ばすことを考えてました。そのことにものすごくワクワクしていました」と付け加えています。

Jozef と Srdja は Nordeus 社での最初の DOTS ユーザーでした。2 人は自分たちの時間の 90% をゲームプレイシステム(特に、レンダリング、ユニットの動作、そしてロジック)を記述することに費やすと見積もっていました。Jozef はUnity の DOTS を使うと、大規模に爆発する本当にすごい呪文を作成でき、分かっていたはずのエフェクトでオーディエンスの度肝を抜きます」と言います。

このチームは Unite Austin 用の Nordeus Battle Demo を 2 か月で完成しました。最初の 4 週間はプログラミングとプロトタイピングに専念し、その内の 1 週間は Unity チームと一緒にコペンハーゲンで過ごして、1 つの部屋でハッカソンスタイルで一丸となって取り組みました。Jozef は「Joe とそのチームと同席したことはすばらしい体験でした。私たちは、ECS、C# Job System、Burst コンパイラー、そしてデータ指向プログラミングの全般について膨大な量の情報をソースコードから直接学びました」と付け加えています。

オブジェクト指向プログラミングとの決別

データ指向プログラミングへの移行は意義深いシフトであり、最初は威圧的に見えるかもしれません。しかし、Stetic-Kozic 氏は「DOTS は全く別の考え方ですが、1~2 週間もすれば勘が働いて、はるかに優れたコードを記述できることが分かります。また、古いコードを統合する場合に ECS を使うとかなり簡単にできます」と言います。

DOTS の不可欠な要素は C# Job System であり、スレッドセーフなコードを記述し、競合状態(想定していない順序でスレッドが実行されると予期しない結果になる)を制御し、複数のコアでほぼ 100% の使用率が得られるようにコンテキストスイッチを最適化します。もうひとつのコンポーネントは Burst コンパイラーであり、C# のジョブを受け取ってターゲットシステムの特定の機能用に最適化された高度に効率的なマシンコードを生成する、LLVM ベースで数値演算対応のコンパイラーテクノロジーです。

Joachim Ante 氏は「Burst コンパイラーは数値演算とジオメトリを深いレベルで理解しているため、他のコンパイラーでは全く行われていない数値演算の最適化を行うことができます。C# コードを自動的にベクトル化して、特定のターゲットプラットフォーム用にベクトル化された命令を生成します。その結果、コードははるかに高速に実行されます」と言います。Burst コンパイラーでは、通常は QA で取り除く必要がある統合バグもかなりの数が解消されています。

Megacity の闘いに勝利する

Unite Austin で公開された Battle Demo では Heroic: Magic Duel のコンポーネントが使われていました。Nordeus 社のチームは、DOTS の専門知識をダイナミックなゲームプレイ要素に主に適用して、サイズが限定された地形で膨大な数のアニメーション化ユニットを使っていました。

これによって次のチャレンジへの道が開かれて、Nordeus 社は Megacity を引き受けました。これは、レンダリング、カリング、ロードが必要な 4,500 万ものオブジェクト、シミュレーションが必要な 5,000 台もの空飛ぶ自動車、さらには同時に再生する必要がある 10 万ものオーディオソースを使った巨大なオープンワールドです。さらには、そのすべてが PC だけでなくモバイルでも動作する必要があります。Jozef は「Megacity では、新しいレンダリングやアニメーション手法、UI システム、さらにはオーディオなど、すべてに Unity の DOTS が使われていました。私たちはそのすべてを、開発で使うだけでなく当社の既存のゲームで使うことができます」と語っています。

大都市をモバイルに載せるのを LWRP が支援

Joachim Ante’s keynote address at Unite LA 2018 included an astonishingly complex live demo from Megacity. The demo contains 4.5M mesh renderers, 5,000 dynamic vehicles and 200,000 unique building objects. The vehicles fly on spline-based traffic lanes, never colliding, and there are 100,000 unique audio sources, including neon signs, air-conditioning fans, and cars producing unique sounds to form a rich, realistic audioscape. And it all runs smoothly on smartphones.

“For the Megacity demo, we wanted to show our complex graphics on a mobile version with a very fast frame rate. We used LWRP plus a few custom shader tweaks to make it resemble the PC version as much as possible,” said Jozef. Srdja added, “When you are working on a game that is supposed to stretch the limits of PCs, and then you decide to port it to mobile later, you usually have to rework large parts of it due to performance limitations of mobile platforms. This was not the case with Megacity. DOTS enabled us to use the exact same code running gameplay logic and rendering on a PC and seamlessly scale it down to mobile platforms.”

The Unity Lightweight Render Pipeline optimizes real-time performance on mobile devices by making tradeoffs with lighting and shading. It performs single-pass forward-rendering with one real-time shadow light and light culling per-object (with all lights shaded) in a single pass, minimizing draw calls.

ネストしたプレハブと DOTS の解説

「Megacity のデモは私たちにとって Unity の新しいネストしたプレハブシステムとの最初の出会いでもあり、当社のアーティストはとても気に入っています」と Jozef は言います。たとえば、ネストしたプレハブでは、大きい建物を多くの部屋のプレハブで構成でき、各部屋は家具のプレハブで構成できます。開発者はプレハブを複数のエンティティに分割することで効率が向上し、大小にかかわらずコンテンツを再利用し、コンテンツの別のパーツを同時に作業できます。

Nordeus 社の製品ロードマップは野心的であり、Unity と DOTS のコーディングのアプローチに 100% コミットしています。Srdja は「Unity DOTS を採用しようと考えているなら、すぐに取りかってください。そしてオブジェクト指向プログラミングの知識を忘れてください。恐れることはありません」と語っています。

「DOTS は全く別の考え方ですが、1~2 週間もすれば勘が働いて、はるかに優れたコードを記述できることが分かります。また、古いコードを統合する場合に ECS を使うとかなり簡単にできます」

Srdja Stetic-Kozic, Senior Software Engineer

「DOTS のことを聞いてすぐに Unity に連絡して、DOTS を試すこととコラボレーションできるかどうかを確認しました。当社のプレイヤーには可能な限り最高のユーザー体験を提供したいと考えていて、スムーズなゲームプレイはその重要な部分です。もちろん、ゲームを高速に実行できるようになるものには特に関心があります」

Jozef Oros, Software Engineer

We use cookies to ensure that we give you the best experience on our website. Click here for more information.