Data-Oriented Technology Stack(DOTS)に関わるいくつかの重要なアップデートの概要を紹介します。DOTS を使用して Unity のコアを再ビルドするときに、スタックに新しいパッケージを継続的に追加しています。Unity パッケージマネージャーから DOTS パッケージをインストールして開始します。
DOTS サンプルプロジェクトがリリースされました
Unite Copenhagen 2019 で、DOTS サンプルプロジェクト、ホワイトボックス、および連携するさまざまな新しい DOTS テクノロジー(Unity Physics、NetCode、Hybrid Renderer、Conversion Workflow など)を紹介する三人称視点のシューティングゲームのデモを公開しました。
DOTS サンプルは、Unity 2019.3 のマルチプレイヤーシューティングゲーム内で DOTS パッケージがどのように連携するかを示すシンプルな環境です。内部テストプロジェクトとして設計したものですが、ご自由にダウンロードし、実験してください。GitHub で入手でき、すべてのソースコードとアセットが含まれています。
Conversion Workflow(実験的)
新しい DOTS Conversion Workflow では、ゲームオブジェクトをワンクリックで DOTS ベースのエンティティに変換してから、既存のワークフローに DOTS を利用できます。たとえば、迅速なレベル設計のイテレーションにゲームオブジェクトを使用し、実行時にそれらをエンティティ表現に単純に変換できます。新しい Entity Preview Inspector では、ゲームオブジェクトがどのように DOTS エンティティに変わるかを確認できます。
この変換プロセスにより、ゲームオブジェクトと従来のオーサリングワークフローの概念を、効率的でストリーミング可能なランタイムデータに簡単に変換できます。両方の世界を最大限に活用できます。エディターでゲームの世界を操作するときの迅速で直感的なワークフローと、パフォーマンスの大幅な向上を実現する、Entity Component System(ECS)で大幅に最適化されたストリーミング可能なランタイムデータとの組み合わせです。
新しいワークフローを試すには、パッケージマネージャーから Entities パッケージ(プレビュー)と DOTS エディターをインストールします。
Unity Live Link(実験的)
新しい Unity Live Link では、エディターで変更を加え、スタンドアロンプレイヤーを実行している任意の接続されたデバイスで反映された変更を確認できます。以前は実行ファイルを作成し、すべてのアセットをビルドし、すべてのスクリプトをビルドしてからそれらをテストのたびにデバイスにアップロードする必要がありましたが、現在はリアルタイムでテストできるようになっています。
イテレーション速度はゲーム世界を作成するプロセスの鍵となるため、ユーザー体験の微調整と洗練、実際のターゲットデバイスでのリアルタイムのゲームの操作によって状況が一変する可能性があります。Unity Live Link では、デバイス上のパフォーマンスフィードバックが提供されるため、別の選択を行った場合のパフォーマンス結果をデバイスで直接調べ、詳細とパフォーマンス間の適切なバランスを見つけることができます。
Live Link Build を作成した後、次に選択を行うときには、シーンを保存するだけで、Unity によって更新がバンドルされ、Live Link Player に送信されます。
Unity Live Link を試すには、パッケージマネージャーから Entities パッケージ(プレビュー)をインストールします。
Unity Animation(実験的)
DOTS ベースのプロジェクト用の新しいアニメーションシステムには、アニメーションブレンディング、IK、ルートモーション、レイヤー、マスキングなどのアニメーション機能が用意されており、今後さらに機能が追加されます。現在、DOTS サンプルプロジェクトを通じて、実験的なパッケージとして利用できるようになりました。
DOTS ゲームコードの更新(プレビュー)
この DOTS リリースでは、プログラマーは定型コードを大量に記述する必要がありません。単純な [GenerateAuthoringComponent] 属性でカスタムオーサリングコンポーネントを置き換え、冗長な IJobForEach および IJobForEachWithEntity コンストラクトを、Burst コンパイラーと C# Job System を使用するようになった単純だが高速な Entities.ForEach() に置き換えることができます。
新しい方法での DOTS コードの記述を開始するには、パッケージマネージャーから Entities パッケージ(プレビュー)をインストールします。
Unity Physics
DOTS サンプルプロジェクトは、衝突検知と空間クエリに新しいステートレス Unity Physics システムを利用します。エンジンは C#/HPC# で記述され、Burst コンパイラーで何を実現できるかを示します。新しい Physics エンジンにより、プレイヤー、環境、弾丸の高速で正確な衝突検知と、ヒット検出の解決を行うことができます。Unity Physics では、DOTS サンプルプロジェクトでの正確でパフォーマンスの高い足の配置システムなど、サンプルとユースケースのキャラクターコントローラーも強化されます。
Netcode
DOTS サンプルで使用されている FPS NetCode は、DOTS をベースに構築されており、類似するアーキテクチャを持つネットワーク化したゲームを簡単に作成できるようにします。ネットワークとの親和性が高いデータプロトコルにより、クライアント側の予測、権威サーバー、補間が提供されます。FPS NetCode の概要については、Tim Johansson 氏による Unite でのセッションをご覧ください。
開始するには、パッケージマネージャーから Unity Transport および Unity NetCode パッケージをインストールします。
DSPGraph の更新
DOTS のオーディオミキシングとレンダリングシステムにも引き続き取り組んでいます。具体的には、パフォーマンスを向上させるために新しい低レベルオーディオエンジンである DSPGraph を書き直し、グラフ出力に影響しないサブグラフを実行する機能を追加しました。つまり、たとえば 1 分あたりのビートをカウントするオーディオグラフの中央にノードをプラグインし、それがオーディオシグナルには影響しないようにすることができます。
DOTS オーディオディスカッションフォーラムに参加し、質問をしたり、オーディオに関するニーズを共有したりしてください。