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

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

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

ゲームのグラフィックに途方もない数のコンポーネントを追加しながら、開発をスピードアップし、ユーザー体験を改善するにはどうすればよいのか? Tic Toc Games は Unity の高性能な Data-Oriented Technology Stack(DOTS)を活用しました。DOTS には Entity Component System(ECS)、C# Job System、Burst コンパイラーが含まれ、バッテリーの浪費やモバイルデバイスの過熱を防ぎながら、60 FPS のパフォーマンスを実現します。

プロジェクト

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

目標

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

プラットフォーム

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 はオブジェクト指向のコーディングをデータ指向のアプローチに切り替えるもので、ゲームアプリケーションの多くの部分にとっては後者の方がより適しています。データと処理を切り離し、膨大な量の分散するデータを削除、さらにイベントを連続して処理する必要がないことによって、真のマルチスレッド化を実現します。

たとえば、弾丸とプレイヤーという 2 つのエンティティを考えてみましょう。それぞれ、位置、出現、体力データのような異なる属性に対するリファレンスを持っています。エンティティと属性は純粋なデータで、付随する機能はありません。システムは、弾丸に対するモーションシステム、プレイヤーに対する出現システムという具合に、エンティティに対し機能を適用します。このようなデータと機能の分離により、Unity は、複数のコアで並列して処理することのできるジョブを作成します。Unity のエバンジェリズムコンテントのグローバルヘッド Mike Geig によると、「必ずある瞬間に何かがひらめき、あとは簡単に理解できるようになります」

ECS の使用は大きな恩恵をもたらします。従来とは異なる方法でデータが整理されるだけで、文字通りキャッチフレーズの「デフォルトで高度なパフォーマンスを」のように最適なコードを簡単に書けるようになるのです。Smith は続けます。「ECS のおかげでより良いアルゴリズムを作る方法が明らかになりました」さらに、ECS コードは再利用しやすく、アーキタイプ(独自のエンティティ)はメモリにきちんと収納されます。そしておそらくはこれが最大の利点ですが、ECS は今後ますますコアの数が増える傾向にある CPU を有効活用できることです。現在、主流の CPU では物理コアが 4~6、論理コアは 8~12 あり、ハードコアなゲーマー向け CPU では物理コアが 16、論理コアは 32 に達します。現在はその大半が使用されないままですが、DOTS はそのすべてを最大限に活用します。

Mike Geig による 5 部構成の Entity Component System(ECS)および 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 で動作する新しいゲームの感覚やパフォーマンスのすばらしさに目をみはるはずです。改善されたゲームプレイや反応の良さは必ず気に入ってもらえると思います」

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

Garth Smith, Lead Programmer, Tic Toc Games

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

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

Listen to DOTS early-adopter Garth Smith share his experience with Unity’s new data-oriented approach.

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

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

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

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

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