DOTS ベースのプロジェクト向け Unity Physics/Havok Physics

Unity の C# Data-Oriented Technology Stack を利用して、リッチでインタラクティブ、かつダイナミックな世界を創造してください。

2 つの物理演算システム、1 つのデータプロトコル

この物理演算ソリューションは、Unity Physics と Havok Physics の 2 つで構成されています。どちらも DOTS フレームワークに基づいているので、同じデータプロトコルが使われています。

そのため、コンテンツやゲームコードを再構築することなく、2 つの物理演算システム間でプロジェクトをシームレスに移行できます。

Unity Physics と Havok Physics のいずれか、または両方を一緒に使っていても、データプロトコルが統一されているため、一度作成すれば、どの DOTS 対応システムを使ってもシミュレーションできます。

舞台裏:Unity と Havok のパートナーシップ

Unity は Havok と連携して、DOTS テクノロジーをベースに構築された新たな物理演算エンジンを開発しました。

Shawn McClelland(Unity の製品マネージャー)と Joel Van Eenwyk(Havok のフィールドアプリケーションエンジニア)が、今日のネットワーキングのニーズに対応しながら並外れたパフォーマンスを実現する物理演算シミュレーションを作成できるようにするシステムを、両社がどのように連携して DOTS フレームワークの上に構築したかについて説明しています。

Unity Physics と Havok Physics

Unity Physics と Havok Physics は Data-Oriented Technology Stack(DOTS)フレームワークの上に構築されています。2 つのソリューション間でプロジェクトを移行でき、両方のソリューションで同時に実行することもできます。2 つのソリューションにはデータ互換性があるため、Unity の強力なツールやワークフローを使うことができます。

Unity Physics

高速、軽量、ステートレス、カスタマイズ可能。それが新しい Unity Physics ソリューションのモットーです。

Unity C# DOTS フレームワークの上に構築されていて、ネットワーク対応、完全にカスタマイズ可能、そしてそのまま使えるパフォーマンスが提供されます。モバイルでの次のヒットや新しいネットワーク化したマルチプレイヤーコンソール体験を構築している場合、Unity Physics は Burst コンパイラーと Job System を活用して広範なハードウェアにわたってスケーリングします。

Unity Physics は現時点ではプレビューリリースであり、パッケージマネージャーから入手でき、Unity 2019.1 以降のバージョンに対応しています。

Havok Physics

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

Havok Physics にアクセスする方法について紹介するドキュメントをご覧ください。

パフォーマンス 
Havok Physics は一般的なゲームのユースケースに合わせて大幅に最適化されています。コアとなるアルゴリズムは数年かけて改良されており、各種自動化キャッシング戦略により、必要な場面(非アクティブなオブジェクトのスリープを有効にするなど)でのみ CPU リソースが消費されます。 

Havok Physics と Unity の統合:パフォーマンス(YouTube) を参照

動作
Havok Physics は、物理的なインタラクションが多数組み込まれた緻密なシーンが含まれている、グラフィック要件が最も厳しいゲームのパフォーマンス需要に対応するよう設計された、堅牢な物理演算エンジンです。その業界において 20 年以上にわたるパートナーとの連携により、Havok は物理演算シミュレーションに関わる最も困難な問題の多くを目撃し、その解決に向けて繰り返し取り組んできた実績があります。これはつまり、特に最適化されていない衝突ジオメトリを操作しているときに、物理ボディのスタッキングが安定し、動きの速いボディがあるときのアーティファクトが最小限に抑えられ、一般的に動作をより細かく制御できます。 

スタッキングの安定性(YouTube)メッシュ結合(YouTube)を参照

よくある質問

「決定論的」とはどういう意味ですか?

「決定論的」とは、物理的シミュレーションに同じ入力セットが与えられたときに同じ成果が得られることです。Unity Physics と Havok Physics のどちらでも決定論的な結果が提供されます。ただし、CPU アーキテクチャ(x86、ARM など)の違いによって数学的演算でわずかな相違が生じるため、異なるハードウェアではシミュレーションの決定論的な結果が異なる可能性があります。

Burst ではクロスアーキテクチャでの決定論の問題が今年中に解決される予定であるため、Unity Physics も自動的にこの機能の恩恵を受けることになり、あらゆる装置でシミュレーション結果が同じになります。

注:単一アーキテクチャでの決定論については、Unity Physics では近日公開予定の Burst の更新が必要です。

「ステートレス物理演算」とはどういう意味ですか?

Havok も含めてほとんどの物理演算エンジンでは、インテリジェントな最適化(各種の演算を回避または一定に保つためにワールドの状態の一部をキャッシュするなど)によって、パフォーマンスと安定性が実現されています。ステートレス物理演算では、代わりに総当たりの最適化によってパフォーマンスが実現されています。そのため、また将来のバージョンの Burst で複数のアーキテクチャ間での実行が可能になるため、さまざまなネットワーク化のシナリオでステートレス物理演算の恩恵を受けることができます。その一方で、Havok の方が優れたパフォーマンスと安定性を実現できるシナリオもあります。

ステートレス物理演算は、ネットワーク化したゲームにどのように良い影響を与えるのですか?

将来のバージョンの Burst では、ステートレス物理演算を複数の CPU アーキテクチャ間で決定論的に実行できるため、ネットワーキングのさまざまなセットアップをすぐに簡単に使うことができます。そのような例として、クライアント側予測(FPS など)、ロックステップ式クライアントシミュレーション(RTS など)、GGPO/ロールバック(格闘ゲームなど)があります。

ゲームで Havok Physics を使うとどのようなメリットがありますか?

Havok Physics では、インテリジェントな最適化を行うためにさまざまな状態情報がキャッシュされるので、大規模なゲームや複雑な物理演算システムを使うゲームで優れたパフォーマンスを実現できます。Havok Physics では、溶け込んでいるオブジェクトや積み重なったボディの処理で、より優れた安定性も提供されます。キャッシュを必要とする高度な摩擦モデルによって、挙動も改善されます。

既存のゲームに Havok Physics を事後適用することはできますか?可能である場合、どの程度困難ですか?

Havok Physics と Unity Physics のどちらでも、Unity エディターでは同じデータモデルが使われます。1 つの方法でコンテンツを作成し、ゲームやゲームワールドのサブセットに特有のニーズに応じて、いずれかまたは両方の物理演算バックエンドを選択します。

新しいシステムによって、現在または今後のプロジェクトで何かが中断されることや複雑になることがありますか?

いいえ。Havok Physics と Unity Physics のどちらも DOTS に基づく選択可能パッケージです。既存のコンテンツが中断されることはありませんが、新しいバックエンドのいずれかに移行した場合に、既存のコンテンツの再調整が必要になることがあります。

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

OK