DOTS がモバイルゲームとその開発をスピードアップ

新しい Data-Oriented Technology Stack はどのようにして Tic Toc ゲームを大きく改善したのか

Tic Toc:Unity 開発者のケーススタディ

How do you speed up development and improve the user experience while adding unprecedented numbers of components to game graphics? Tic Toc Games leveraged Unity’s high-performance Data-Oriented Technology Stack (DOTS) – which includes the Entity Component System (ECS), the C# Job System, and the Burst Compiler – to enable 60 frames per second (fps) performance on mobile devices without draining batteries or overheating phones.

プロジェクト

データ指向のソフトウェアデザインアプローチを実装 ​​​​​

目標

マルチスレッドのパフォーマンスを改善し、デバイスの消費電力を削減

プラットフォーム

iOS、Android、Xbox One、PS4、Steam、Nintendo Wii U e ショップ

チームメンバー

約 40 名中、5 名の開発者が Unity を使用

場所

バーバンク(カリフォルニア州)

Tic Toc Games は、総合ゲーム開発会社です。いずれもベテランのアーティスト、デザイナー、プログラマー、プロダクトマネージャーたちが力を合わせてインタラクティブな製品を出荷しています。製品の中には賞を授与されたものも少なくありません。彼らの求めるのは、プレイ中はプレイヤーを熱中させ、プレイをしていないときもプレイヤーにゲームのことを考えさせ、そのおもしろさを友だちに伝えずにはいられず、何度でも繰り返しプレイしたくなるようなゲームを作ることです。Tic Toc Games では 2011 年にゲームの開発を始めた当初から Unity を使ってきました。

他のゲーム会社と同様、Tic Toc も常に、パフォーマンスを向上させると同時にデザインのイテレーションを迅速化できる方法を探してきました。Tic Toc のリードプログラマー、Garth Smith は一言、「より良いゲームをより速く作りたいのです」と言っています。Unity の長期愛用者である Smith は、Unity 2018.x の新機能のいくつかがきわめてパワフルなことに目をつけました。

Tic Toc Games では、2019 年内にマッチ 3 や落ち物パズルを含む斬新なパズルゲームをいくつかリリースする予定ですが、Smith はその開発に当たって ECS を積極的に活用することを決めました。「ECS では、コーディングの方法が従来とはまったく違っています。データ指向のプログラミングは学校で教わらないため、私たちにとっては大きなパラダイムシフトです。未知のことを始めるときには、私たちでさえ少しばかり勇気が必要です」けれども、ECS によってもたらされたものが彼らを ECS の信奉者に変えました。

成果:

  • CPU をオーバーヒートさせることなしに、モバイルで 60 FPS を実現
  • より効率的なテストのワークフロー
  • イテレーションとトラブルシューティング/バグ修正の手間を軽減
  • バッテリーの消費を減らす
Tic Toc は DOTS を採用しました

パフォーマンスと生産性の大幅な向上を目指し Tic Toc は Entity Component System(ECS)、C# Job System、Burst コンパイラなどを始めとする、Unity の新しい Data-Oriented Technology Stack(DOTS)の主要コンポーネントを実装しました。

ECS によってオブジェクトからデータへ

ECS replaces object-oriented coding with a data-oriented approach much more appropriate for many parts of gaming applications. It decouples data from processing, eliminating an enormous amount of data scattering and enables true multithreading as events no longer have to be processed sequentially.

For example, two entities might be a bullet and a player, each with references to different attributes like position, spawning, and health data. The entities and the attributes are pure data with no attached functionality. The system applies a function to an entity, such as a motion system to a bullet or a spawning system to a player. This separation of data and function lets Unity create jobs that can be processed in parallel on multiple cores. According to Mike Geig, Unity’s Global Head of Evangelism Content, “Once it clicks, it’s pretty easy to wrap your head around it.”

The benefits of using ECS are significant. Simply because of the way data is organized, it’s easier to write optimized code – thus the tagline, “Performance by default.” Smith added, “Some of the doors that ECS opened showed us how to make better algorithms.” In addition, ECS code is highly reusable, archetypes (unique entities) are tightly packed in memory, and perhaps most importantly, ECS can take advantage of increasing numbers of CPU cores. Today, mainstream CPUs have up to 4-6 physical and 8-12 logical cores, while “enthusiast” CPUs have up to 16 physical and 32 logical cores. Most go unused, but DOTS takes full advantage of them all.

Watch Mike Geig’s 5-part Intro to the Entity Component System (ECS) and C# Job System.

C# Job System を有効活用

チームのデータ指向の ECS コードを Unity の C# Job System と組み合わせることによって、Tic Toc はマルチコアの処理とマルチスレッディングの活用を拡大することができました。競合状態(予期しない順序で実行されるスレッドが予期しない結果を引き起こす)が制約を追加し、継続的なコンテキストスイッチが非効率的であることが原因となって、スレッドセーフなコードの作成を難しくします。

Job System はこのような問題をすべて管理し、Tic Toc の開発者はゲーム固有のコードに専念することができます。Smith は言います。「ジョブのおかげで私たちはシステムを複数のスレッドで実行し、CPU の異なるコアを使うことができます。以前なら非常に難しかった処理です。ECS と Job System によって他のコアをほぼ 100% 使えるようになり、効率が大幅にアップしました」

Burst コンパイラーが直接ハードウェアに語りかける

新しい Burst コンパイラーは LLVM ベースの演算認識コンパイラー技術で、C# のジョブを受け取って、ターゲットのプラットフォームの特定の機能に合わせて高度に最適化されたマシンコードを生成します。おかげで Tic Toc の Smith と彼のチームは、パフォーマンスの遅延を修復するために貴重な時間を削って、複雑な低レベルのコードを学びなおし、生成する必要がなくなりました。

「Burst コンパイラーのおかげで、自分たちが ECS を使って何をしているのかを推測することができ、それによってすべてがスピードアップしました。一部のループは約 30 倍の速さになり、特にループが同じフレーム中に何度も発生する場合はそれが際立ちました」と Smith は言います。

チームは、大きなシステムがインタラクトする場合、Burst コンパイラーが、通常なら QA の段階で取り除かなければならない膨大な数の統合バグを除去してくれることに気づきました。「Burst コンパイラーがあれば、たいした苦労なしに、複数のプラットフォームにわたって、ハンドチューニングされたアセンブラーコードの利点を生かすことができます」と Smithは言います。

DOTS についての他のスタジオへのアドバイス

Tic Toc はデータ指向のアプローチへの移行に対し当初は及び腰でしたが、実際にやってみるとそれはかなりおもしろい挑戦でした。「こつさえわかれば、ECS の扱いは徐々に簡単になっていきました。今ではスタジオのメンバー全員が理解していると思います。私たちは ECS がとても気に入り、おそらくは今後すべてのゲームで ECS を活用するつもりです」と Smith は言います。

彼は他のスタジオに対し頼もしいアドバイスを提供してくれます。「最初からすべてを ECS で行う必要はありません。徐々に活用していけば良いのであって、ほんのわずかなことで、パフォーマンスが大幅に向上します。特にコードの再利用性のすばらしさは驚くばかりです」

Smith はさらに本格的な活用を開始する前に、プロトタイプのプロジェクトで試してみることを薦めます。「ゲームジャムやテトリスや三目並べなど簡単なもので試し見てください。何でもかまいません。アートを含む全チームで制作を開始する前にゲームを 1 つ完成させるのです。最初の挑戦で多くのことを学べるはずです」

最後に Smith は、Tic Toc のプレイヤーが得る恩恵も相当なものになると語ります。「画面で何が起ころうと、ほぼ 60 FPS で動作する新しいゲームの感覚やパフォーマンスのすばらしさに目をみはるはずです。改善されたゲームプレイや反応の良さは必ず気に入ってもらえると思います」

Garth Smith, Lead Programmer, Tic Toc Games

「Unity の Entity Component System を使ったときのパフォーマンスのすばらしさは驚くばかりのものです。たとえパフォーマンスの向上にはそれほど関心がなかったとしても、コードの再利用性の良さとモバイルデバイスのバッテリーの持ちの良さは大きな利点です」

Garth Smith, Lead Programmer, Tic Toc Games

モバイルゲーム開発での ECS の利点

ここでは ECS によりモバイルゲームの開発期間が短縮し、バグが減り、バッテリ寿命が延びる理由などを示します。

DOTS をいち早く導入した Garth Smith 氏が、Unity の新しいデータ指向のアプローチに関する体験を語ります。

Tic Toc がモバイルパズルゲームで ECS を活用した方法

Unite Los Angeles において Tic Toc は「私たちは パフォーマンスを最優先します」 と題したセッションを主催しました。講演の中で Garth Smith は、 ECS によってイテレーションが迅速化された方法を始め、 Unity の Entity Component System の活用を通じて得た経験を紹介します。 

デフォルトで高度なパフォーマンスを

最新のハイパフォーマンスなマルチスレッドシステムでマルチコアプロセッサをフルに活用しましょう。

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

OK