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

Nordeus - Unity 開発者のケーススタディ

What inspires wow-factor demos like Megacity at Unity community events? Are they just eye-candy or are there real benefits for Unity developers? Belgrade-based Nordeus has been a featured studio at many Unite developer conferences, demoing work drawn from their hit games. But their cutting-edge clips aren’t about showing off – they’re about demonstrating new Unity capabilities that will dramatically change what you can achieve both creatively and programmatically.

プロジェクト

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

目標

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

プラットフォーム

Android、iOS、PC

チームメンバー

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

場所

セルビアのベオグラード

データ指向の DOTS コーディングにより Megacity を短時間でモバイルに

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

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

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

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

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

Founded in 2010 by ex-Microsoft engineers Branko Milutinovic, Milan Jovovic, and Ivan Stojisavljevic, Nordeus first published Top Eleven – Be a Soccer Manager (“Football” outside the US), a freemium team-management game. It was enormously successful on Facebook, becoming profitable in three weeks, and was ported to Android and iOS in 2011. Since then, the company has published Golden Boot on iOS and Android, has Heroic: Magic Duel in soft launch, and numerous other games in development stages.

Nordeus has drawn talent from 22 countries to its headquarters in Belgrade, a locale extraordinarily rich in culture and history. They’re routinely cited as a top workplace in Europe and are known as generous contributors to a number of philanthropic organizations.

Two of their top software engineers are Belgrade locals: Jozef Oros and Srdja Stetic-Kozic, who work in the Nordeus Central Tech team with eight others. They are responsible for fostering the tools and techniques used in all Nordeus games, and as Srdja notes, “All of our games are made in 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 の闘いに勝利する

The Battle Demo shown at Unite Austin used components from Heroic: Magic Duel. The Nordeus team applied its DOTS expertise primarily on dynamic gameplay elements, with huge numbers of animated units on a limited-size terrain.

This paved the way for its next challenge, as Nordeus took on Megacity, which is a big, open world with 4.5 million objects that need to be rendered, culled, and loaded, 5,000 flying cars needing to be simulated, and 100,000 audio sources that had to be played simultaneously. And all of this needs to work on mobile as well as PC. Jozef said, “For Megacity, Unity’s DOTS was used for everything, like new rendering and animation techniques, UI systems, and even audio. We can use all of this in our existing games, as well as those in development.”

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

Unite LA 2018 での Joachim Ante による基調講演では、『Megacity』の驚くほど複雑なライブデモが行われました。 このデモでは、メッシュレンダラーが 450 万個、動き回る乗り物が 5,000 台、独自の建築物オブジェクトが 20 万個も使用されています。 これらの乗り物はスプラインベースの車線を衝突せずに飛び交います。また、10 万個もの独自のオーディオソースを使うことで、ネオンサイン、空調ファン、車などのユニークなサウンドを作り出し、豊かでリアルな音景を実現しました。 これらはすべて、スマートフォンでもスムーズに動作します。

「『Megacity』のデモで見せたかったのは、モバイルでも複雑なグラフィックスを非常に高いフレームレートで描画できるということでした。 このデモでは、PC 版に限界まで近づけるためにライトウェイトレンダーパイプライン(LWRP)を使用したほか、カスタムシェーダーを若干調整しています」と Jozef 氏は言います。 Srdja 氏は次のように付け加えました。「PC の性能を限界まで利用するゲームを開発しており、後からモバイルプラットフォームへの移植を決めたような場合には、モバイルプラットフォームの方がパフォーマンス面の制約が厳しいことから、大部分を作り変えなければならないのが普通です。 しかし『Megacity』ではその必要はありませんでした。 DOTS を使えば、ゲームプレイロジックやレンダリングを実行するためのコードをまったく変更することなく、モバイルプラットフォームにシームレスに対応させることできます」

Unity の LWRP は、ライティングとシェーディングを調整し、モバイル端末でのリアルタイムのパフォーマンスを最適化します。 リアルタイムの 1 つのシャドウライトとオブジェクトごとのライトカリング(すべてのライトがシェーディング済み)により、ドローコールを最小限に抑えながら、シングルパスのフォワードレンダリングを実行します。

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

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

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

Srdja Stetic-Kozic, Senior Software Engineer

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

Srdja Stetic-Kozic, Senior Software Engineer
Jozef Oros, Software Engineer

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

Jozef Oros, Software Engineer

弊社のウェブサイトは最善のユーザー体験をお届けするためにクッキーを使用しています。詳細については、クッキーのポリシーのページをご覧ください。

OK