DOTS パッケージ

Data-Oriented Technology Stack(DOTS)を使用すると、プログラミングで頭を悩ませることなく最新のマルチコアプロセッサーを最大限に活用できます。DOTS はプレビュー版であり、Unity ではスタックに新しいパッケージを継続的に追加しています。

DOTS パッケージ

DOTS を使用して Unity のコアを再ビルドするにあたり、新機能を継続的に追加しています。現在開発中の重要な DOTS パッケージの概要を紹介します。

ゲーム設計に関する優れたアプローチ

Unity の Entity Component System(ECS)を使用すると、解決中の実際の問題(ゲームを構成するデータや動作)にフォーカスするハイパフォーマンスな C# コードを記述できます。

ECS によって、Unity はオブジェクト指向からデータ指向の設計手法へと移行しようとしています。ECS では、Unity の C# Job SystemBurst コンパイラーを活用して、最新のマルチコアプロセッサーと CPU キャッシュの性能を最大限に発揮させることができます。

またデータ指向設計では、コードの再利用がより容易になり、コードの内容がよりわかりやすくなるので、複数の開発者が作業に参加しやすくなります。

ECS を使ってゲームプレイを作成する方法については、ECS のドキュメントをご覧ください。コード戦略を選ぶうえでのヒントについては、Unite Copenhagen 2019 で行われた講演「Options for Entity interaction」をご覧ください。また、GitHub からこれら Entity Component System のサンプルを入手することもお勧めしています。

Entities パッケージには Unity Live Link も含まれます。新しい Unity Live Link では、エディターで変更を加え、スタンドアロンプレイヤーを実行している任意の接続されたデバイスで反映された変更を確認できます。これにより、実機でのパフォーマンスについてのフィードバックが直接得られます。

さらに、Conversion Workflow では、既知のワークフローを使用しながら DOTS の能力を利用して、ゲームオブジェクトをワンクリックでエンティティに変換できるため、現在の GameObjects のまま DOTS を使用することが可能です。

詳細を見る
C# Job System

C# Job System

新しい C# Job System では、最新のコンピューターの複数のコアを安全かつ簡単な方法で活用できます。これは、C# プログラマーによる安全かつ高速で並列化されたコードの記述をサポートするよう設計されています。 

複数のコアを活用する

C# Job System は Unity 内部の C++ Job System を公開し、C# スクリプトを Unity の内部コンポーネントに沿ってジョブとして実行することを許可します。

安全な環境

競合状態などのマルチスレッディングに関わる潜在的な危険から保護を提供します。

詳細を見る

Burst コンパイラー

新しい LLVM ベースのバックエンドのコンパイラーテクノロジーにより、C# のジョブから高度に最適化されたマシンコードを生成します。

すべてのプラットフォームに最適
Burst コンパイラーは、コンパイルするプラットフォームに合わせて出力を最適化します。

ハンドコーディングがより少なく
手間をかけることなく、複数のプラットフォームにわたって、ハンドチューニングされたアセンブラーコードの数多くの利点を得ることができます。

使用を開始する前に、こちらの Unite Copenhagen の講演を視聴して、GitHub からコンパニオンコードをダウンロードしてください。

詳細を見る

Unity Physics(プレビュー版)

Unity は DOTS テクノロジーをベースに構築された新たな物理演算エンジンを開発しました。これにより、最新のネットワーキングのニーズに対応した並外れたパフォーマンスを実現する、物理演算シミュレーションを作成できます。Unity Physics は現在プレビュー版として公開中で、Unity 2019.1 以降のバージョンと互換性があります。

Havok Physics for Unity は、非常に複雑な物理演算シミュレーションを生成する必要があるお客様向けのソリューションです。このソリューションは、現世代コンソール向けの最有力作品の半数以上に使用されている業界トップの Havok Physics エンジンを基盤としています。Unity Physics と同じ C# DOTS フレームワークを使用して記述されていますが、ネイティブ C++ で記述されたクローズドソースの独自開発エンジン Havok Physics を使用できるほか、高いパフォーマンスと安定性が得られます。

詳細を見る
DOTS を利用したアニメーション、FPS Netcode、Conversion Workflow、Unity Live Link など、Unity 2019.3 の DOTS ベースプロジェクトの新機能について説明します。

Unity NetCode(プレビュー版)

Unity を使用してマルチプレイヤーゲームを制作することを検討している方は、DOTS サンプルプロジェクトでこの領域における Unity の現時点までの進捗を確認できます。付属の NetCode によりクライアント側の予測、権威サーバー、補間が提供され、ネットワーク化した FPS ゲームを簡単に制作できます。

Unity のネットワーキングの未来については、こちらの Unite Copenhagen 2019 の講演で確認してください。

詳細を見る

DSPGraph(実験的)

今後予定されている DOTS オーディオシステムの基盤となるのが、DSPGraph です(プレビュー版公開中)。Unity の新しいローレベルのオーディオエンジンは Burst コンパイラーと一緒に使用できるほか、C# で完全に拡張可能で、オーディオプログラマーやオーディオシステム開発者が独自のカスタムオーディオシステムを構築できるようにします。

DOTS オーディオディスカッションフォーラムに参加し、質問をしたり、オーディオに関するニーズを共有したりしてください。

詳細を見る
ステージを走っている 3D ビデオゲームのキャラクター

Unity Animation(実験的)

今後予定されている DOTS 対応のアニメーションシステムの初期バージョンの動作については、DOTS サンプルプロジェクトで確認できます。アニメーションブレンディング、IK、ルートモーション、レイヤー、マスキングなどのアニメーション機能が提供されており、今後さらに予定されています。

追加のサンプルを入手
Unity エディターの『Tiny Racing』のデモ

DOTS ランタイム(プレビュー版)

Unity が予定している高度にモジュール化された DOTS 搭載の最新ランタイムである Project Tiny では、小さくて軽量、そして高速なインスタントゲームを作成できます。Unity が現在取り組んでいる内容についての初期段階の情報については、Tiny Racing のデモをダウンロードして確認してください。これには、初期 3D レンダリング機能のプレビューと、iOS/Android/HTML5/Windows および Mac 用のビルドターゲットが含まれます。

詳細を見る

DOTS の使用を開始する

エンティティのドキュメントには、DOTS ベースのプロジェクトを作成するうえで必要となるエッセンシャルパッケージの概要が記載されてます。Unity のパッケージレジストリサーバーからプレビュー中の DOTS パッケージをインストールする方法については、こちらのガイドをご覧ください。また、ライフサイクルステージが異なる複数のパッケージを使用した場合の影響についてもご確認ください

DOTS パッケージに関するドキュメント

Entities(プレビュー版)

Entities パッケージは、DOTS の中核を成します。Unity の Entity Component System(ECS)が含まれており、Conversion Workflow と Unity Live Link を使用するための前提条件です。このパッケージは現在プレビュー版として公開中であり、「Package Manager」ウィンドウで表示することはできません。com.unity.entitiesは、こちらの手順に従ってインストールしてください。

 

 

DOTS エディター(プレビュー版)

DOTS エディターパッケージには、データ分析ツールや可視化ツールが追加されています。たとえば、Entity Preview Inspector を使用すると、ゲームオブジェクトがどのようにしてエンティティに変換されるかを詳しく見ることができます。このパッケージは現在プレビュー版として公開中であり、「Package Manager」ウィンドウで表示することはできません。com.unity.dots.editorは、こちらの手順に従ってインストールしてください。

Hybrid Renderer(プレビュー版)

Hybrid Renderer は、既存のレンダラーがオブジェクトをレンダリングするために必要とするインスタントデータを提供する、新しい経路です。シーン内のゲームオブジェクトをエンティティに変換するために、変換システムは各ゲームオブジェクト上の MeshRenderer コンポーネントと MeshFilter コンポーネントを探し、それらをエンティティ上の RenderMesh コンポーネントに変換します。このパッケージは現在プレビュー版として公開中であり、「Package Manager」ウィンドウで表示することはできません。com.unity.rendering.hybridは、こちらの手順に従ってインストールしてください。

Burst コンパイラー

Burst コンパイラーは、LLVM を使用して、ジョブ化された C# コードをネイティブコードに変換します。コンパイルするプラットフォームに合わせて出力を最適化します。

Unity Physics(プレビュー版)

Unity は、DOTS テクノロジーをベースに構築された、新しいハイパフォーマンスな物理演算エンジンを開発しています。Unity Physics パッケージを使用して、決定論的なリジッドボディのダイナミクスと空間クエリシステムのメリットを享受してください。このパッケージは現在プレビュー版として公開中であり、「Package Manager」ウィンドウで表示することはできません。com.unity.physicsは、こちらの手順に従ってインストールしてください。

Havok Physics(プレビュー版)

Havok Physics は、非常に複雑な物理演算シミュレーションを生成する必要がある顧客向けの、クローズドソースソリューションです。Unity Physics と同じ入力および出力データフォーマットを共有するため、2 つのオプション間でいつでもスワップできます。現在、Unity Pro ユーザー向けのサブスクリプションプランを Unity アセットストアから入手できます。このパッケージは現在プレビュー版として公開されています。

Unity Transport(プレビュー版)

Unity Transport API を使用すると、ご自身のマルチプレイヤープロジェクト用にサーバーとクライアントを作成して設定できます。このパッケージは現在プレビュー版として公開中で、Windows、Linux、Mac、OSX、iOS、Android のプラットフォームにのみ対応します。このパッケージは現在プレビュー版として公開中であり、「Package Manager」ウィンドウで表示することはできません。com.unity.transportは、こちらの手順に従ってインストールしてください。

Unity NetCode(プレビュー版)

Unity NetCode パッケージには、マルチプレイヤーゲームの制作に使用できる、クライアント予測機能が付属した専用サーバーモデルが用意されています。現在プレビュー版として公開中で、エンティティの同期に必要なアーキテクチャにフォーカスしています。このパッケージは現在プレビュー版として公開中であり、「Package Manager」ウィンドウで表示することはできません。NetCode の使用を開始するには、こちらの手順に従ってください。

Unity Mathematics

Burst コンパイラーは、この演算ライブラリを使用して、C# を高度に効率化されたネイティブコードにコンパイルします。シェーダーのような構文のベクタータイプと数学関数が用意されています。このパッケージは Burst コンパイラー パッケージと依存関係があります。

次はどちらへ

DOTS を使用したサンプルプロジェクト

実際のコードを見てみたいですか?GitHub で Unity のサンプルライブラリをご確認ください。

Entity Component System のサンプル
Unity Physics のサンプル

 

DOTS のチュートリアル

DOTS の重要な用語と概念について、簡単な例でご確認ください。その後、Unite 2019 の講演を見て、詳しい内容をお確かめください。

DOTS とは(チュートリアル)
DOT に関する Unite Copenhagen の講演

DOTS に関するフォーラム

Unity の開発者コミュニティフォーラムに参加して、DOTS の新機能と今後予定されている機能について DOTS チームにフィードバックを提供し、情報を交換してください。

DOTS フォーラムに参加する

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

OK