Search Unity

GDC 基調講演の中で、Unity と Havok が提携して Unity 向けの次世代物理システムを開発することを発表しました。本記事ではこの提携について、私達が具体的に何に取り組んでいるかを詳しくご紹介します。

Unity と Havok、2 つの世界の「衝突」

私達が DOTS(Data-Oriented Technology Stack)の構築に乗り出したのは、豊かでダイナミックなインタラクティブ世界を構築するクリエイターの皆様をサポートしたかったからです。これを実現するためには、高性能なデータ指向物理システムが必要でした。Havok との提携によって、私達は DOTS の技術を基盤に構築された全く新しい物理エンジンの開発に成功しました。これにより、今日におけるネットワーキングのニーズに対応しながら非常に高いパフォーマンスを提供する、スケーラブルな物理シミュレーションの作成が可能となりました。

この新しいソリューションは Unity Physics と Havok Physics の 2 つのオプションで構成されます。Unity Physics と Havok Physics は両方とも DOTS フレームワークと連携機能するので、(それぞれの対応する制作ニーズは異なりますが)同じプロジェクト内で一方のソリューションからもう一方へスムーズに切り替えたり、ユースケースによって両方を同時に使用することもできます。どちらのソリューションでも同様に、リアルタイムなインタラクティブコンテンツの開発で Unity ユーザーに大いに活用されている強力で使い易いツールとワークフローが使用可能となっています。

DOTS フレームワークを用いれば、物理のための単一データプロトコルを構築することができます。つまり、コンテンツやゲームコードを一旦作成すれば、それが Unity Physics と Havok Physics のどちらでも機能するということです。以下の図は、これら 2 つの物理システムがどのような構造で DOTS と統合されているかを示しています。

Unity Physics

Unity Physics の統合は DOTS ベースのプロジェクト用の Unity デフォルトの物理システムとなっており、現在プレビュー版として公開されています。これは Unity 独自の DOTS 物理ソルバーを基盤としており、C# DOTS フレームワークを使用して記述されています。キャッシングを使用しないステートレスな設計にすることで複雑な Unity Physics を単純化しているため、システムが改良されて行く過程においても、ユーザーの皆様は簡単に調整・修正を行ったり習得を進めていただくことができます。私達の目標は、皆様がクリエイターとして本来の力を発揮できるように、それぞれのニーズに合わせて簡単にシステムを拡張できるようにすることです。

Unity Physics システムには以下の特徴があります。

  • キャッシュレスな設計により、入力の精度が重要となるシミュレーション(対戦ゲームや一人称視点シューティングゲームなど)のためのネットワークロールバックアーキテクチャーに対応します。
  • Havok Physics とデータ互換性があり相互運用が可能です。

Unity Physics は Unity パッケージマネージャーから今すぐ入手可能となっており、最新の2019.1 ベータ版と互換性があります。

Havok Physics

Havok Physics の統合は、物理に関するより複雑なニーズに対応するハイエンドソリューションです。このソリューションは、現世代コンソール向けの最有力作品の半数以上に使用されている業界トップの「Havok Physics」エンジンを基盤としており、非常に高いパフォーマンスおよび安定性をもって複雑な物理シミュレーションに対応します。Unity Physics と同じ C# DOTS フレームワークを使用していますが、ネイティブ C++ で記述されたクローズドソースのプロプライエタリエンジン「Havok Physics」が基盤になっています。

Havok Physics システムには以下の特徴があります。

  • キャッシングシステムが、複雑なケース(動的なリジッドボディ(剛体)のスタック、互いにコンストレインされたリジッドボディのシステム、高速で動くリジッドボディ、多数の動的なリジッドボディを含むシーンなど)において安定性と高いパフォーマンスを提供します。
  • Unity Physics とデータ互換性があり相互運用が可能です。

Havok Physics パッケージは今夏に公開される予定です。

今後に向けて

Unity では物理に関して、将来的には、物理シミュレーションの作成・編集・デバッグのための新しいワークフローに対応する完全な物理ソリューションをご提供したいと考えています。今回の提携は、豊かでダイナミックなインタラクティブ世界を構築するクリエイターの皆様をサポートするためのステップです。Unity フォーラムで、本トピックに関する意見交換にご参加いただけます。私達は顧客の皆様のニーズを理解したいと強く望んでいます。新しい物理システムに関する問題・ご意見・ご要望など、お気軽にフィードバックをお寄せください。

32 コメント

コメントの配信登録

返信する

これらの HTML タグや属性を使用できます: <a href=""> <b> <code> <pre>

  1. *jaw drops*

  2. This is amazing news! How will this help with deterministic physics for multiplayer?

  3. Are you planning to add modification of contacts to Unity?

  4. Hi, it’s glad to see that Unity is solving the problem in networking games. Please considering share a roadmap so studios can know when is the best timing to adopt it.

  5. Hakan Karaduman

    3月 20, 2019 3:15 pm 返信

    Hi, I could not see the ‘Unity Physics’ in the packages list. Which package has it?

    1. Fabrice Lété

      3月 20, 2019 4:30 pm 返信

      Make sure you’re using the latest 2019.1 beta, go to package manager and check that “Show preview packages” is toggled on in the “Advanced” drop down menu.

  6. I prefer Bullet Physics over Havok, is free and opensource.

  7. So, lost a little here, is DOTS the ECS and Jop system together?

    1. Yep

  8. Ok so this is all about Nvidia dropping Physics development that Unity was getting a free ride on. So now if you want new Physics features we are going to have to pay for Havok !

    1. Shawn McClelland

      3月 19, 2019 11:16 pm 返信

      Not quite. We have Unity Physics which you can get via the Package Manager right now and use with the 2019.1 Beta.

    2. Slow-down cowboy. No body said you have you pay for Havok nor nVIDIA is dropping anything. Careful with all these baseless assumptions.

  9. Interesting. But will the ‘Unity Physics’ have the same feature set as PhysX – i.e. a character controller and wheelcolliders?
    There are certainly a few changes in the pipeline – new UI system, new Physics, DOTS – a lot to learn…

  10. “Unity Physics is available right now via the Unity Package Manager” => if you are running 2019.1.0 beta…

    1. Shawn McClelland

      3月 19, 2019 4:49 pm 返信

      I’ve updated the blog post the reflect that. Thanks for the reminder!

  11. Riley Labrecque

    3月 19, 2019 3:37 pm 返信

    > Interoperable and data-compatible with Havok Physics.

    I love this. This is really what I want to see from Unity. A collection of puzzle pieces that I can pick and choose how to put together to create exactly what I need. Abstracting multiple different solutions under one API is exactly what game engines should be doing.

  12. Would like to see potential performance improvements and general differences(features?) between Havok and Unity. I hope that will come in a later Blog post. Still very interesting!

    1. Shawn McClelland

      3月 19, 2019 4:50 pm 返信

      Definitely, want to do a follow-up blog post getting into a lot more of the nitty-gritty details. What sort of topics would be most interesting for you to see covered in a follow-up post?

      1. Physics Networking

      2. First, it would be really helpful to start with some pre-existing reference points for familiar concepts and then directly contrast them with what changes in thinking are required. Frame this in the context of benefits: what used to be the status quo (and what did we call it) and what new superpowers are these new tools going to give us? What, if any, will the tradeoffs look like? Are there demographics for whom this might be interesting but still best served by the previous options?

        Then, it wouldn’t hurt to offer some side-by-side looping animated gifs of simple scenes processed through both engines for comparison, ideally showing cases where Unity is better, Havok is worth the money, and where they are roughly the same.

        The other aspect you should consider is that this isn’t really just about Unity vs. Havok; for the working Unity Dev, it’s PhysX < (Unity ~ Havok). We're still wrapping our heads around the changes to the way physics are approached even before Havok is added to the equation. It all sounds really exciting, but you need to lower us into the pot at medium temperature.

  13. why don’t you hire julio jerez for your custom inhouse physics solution? his engine has the nicest solver of all physics engines. :)

  14. This is a meaningless update without a discussion around realized performance benefits. The DOTS model significantly reshapes game architecture — and so what is missing here are quantitative talking points around why the architecture change is worth adopting.
    For example — for this physics system rewrite news to be meaningful there needs to be an accompanying discussion of realized performance gains in real-world game scenarios. “e.g. Unity’s new physics is 1.5x faster than PhysX per time step…” Tech demos don’t quantity the improvement and until I see this hard evidence I am totally unconvinced.

    1. Shawn McClelland

      3月 19, 2019 4:51 pm 返信

      Given that the Unity Physics is in Preview, we’re still building a lot of infrastructure and tooling so a performance comparison at this point seemed unfair in the announcement post. We’ll be following up with more technical details soon. Thanks for the feedback!

    2. I would exchange performance for stability anytime.
      When it comes to performance you can always limit number of objects. When it comes to stability you are basically stucked.

  15. What about large worlds, will either system or PhyX’s pre-existing origin shifting API features be brought to Unity?

  16. “More information on distribution and pricing coming soon!”
    I can only assume that Havok will be licensed on an individual basis… this is extremely unclear.

    Lots of questions:
    Does UT plan on replacing PhysX with Havok or Unity Physics eventually?… or is this intended for use with DOTS exclusively?

    1. Unity Physics and Havok Physics are for DOTS only, PhysX remains for classic (non DOTS) Unity.

    2. The Unity Physics and Havok Physics integrations are for DOTS-based projects only. As far as PhysX, we will continue to support and evaluate upgrades to newer versions of PhysX.

      1. When I have heard about new physics system I have almost jumped, but after reading all info I’m not so sure anymore.

        As I know Unity is going to keep old system based on Physx. Are some of it’s functionality that are not working properly going to be repaired.

        I’m talking especially about OnCollision events that are not giving us proper informations about collision. I have made my own investigation about Physx and it looks like it is possible to get orientation an position of a body during contact, so we can later get the exact position of it on a collider.
        I’m not a Physx specialist but got the data from this site:
        https://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/guide/Manual/AdvancedCollisionDetection.html

        Will new Physics systems solve OnCollision events in different (proper way) than current one ?

  17. Is there going to be a PhysX integration? Since at the moment the experimental physics engine looks like it will be a while before it’s ready for production and Havok is an external licensing thing. Most indies like me can’t afford to license Havok and I would personally much prefer if our reliable battle tested physics engine was also the free, open source and MIT licensed one.

    1. I would imagine it will be part of Unity, not an extra license. Just like enlighten, umbra and all other 3rd party tech.

      1. If you read the article carefully, you’ll notice: “The Havok Physics package will be available in June 2019. More information on distribution and pricing coming soon!”. Also relevant article:

        http://gamasutra.com/view/news/338719/Unity_partners_with_Havok_to_roll_out_new_physics_systems.php