Unity を検索

Havok Physics for Unity が製品版としてサポートされました

2022年12月19日 カテゴリ: Engine & platform | 18 分 で読めます
Havok Physics for Unity is now supported for production | Hero image
Havok Physics for Unity is now supported for production | Hero image
シェア

Is this article helpful for you?

Thank you for your feedback!

Game Developers Conference(GDC)2019 で発表された Havok Physics for Unity は、当初 Unity Asset Store で実験的なパッケージとして配布されました。今回、Unity 2022.2 TECH ストリームで ECS(Entity Component System)for Unity が公開されたことにより、Havok Physics for Unity は正式に製品版としてサポートされることになりました。このパッケージは、Unity Pro、Enterprise、Industrial Collection にご加入の皆様には、無料でご提供しております。

成功の歴史

Havok Physics for Unity は、『Destiny』や『アサシンクリード』など、世界トップクラスのさまざまなゲームのシリーズで用いられているものと同じ技術基盤で構築されています。私たちが Data-Oriented Technology Stack(DOTS)に基づいて将来の物理演算ソリューションの姿を定義することに乗り出したとき、私たちはコアとなるコンセプトと価値観を共有するパートナーが現れることを強く願っていました。Havok とのパートナーシップを通じて、私たちは DOTS を活用して、高度に最適化され、ステートレスですべて C# で書かれた、今日見られるような高性能の Unity Physics を実現することができました。

また、ユーザーがステートフルな物理演算システムを必要とするような、より複雑なシミュレーションの要件にも対応できるように準備しました。そのようなハイエンドシミュレーションに対応するために Unity に搭載するソリューションとしては、Havok が最適であろうということは把握していました。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

Shawn McClelland(Unity のプロダクトマネージャー)とJoel Van Eenwyk 氏(Havok のフィールドアプリケーションエンジニア)が、DOTS フレームワークを基礎として機能を構築するために、私たちがどのように連携しているかを説明します。

Havok Physics for Unity パッケージは、Unity Physics と同じ C# ECS フレームワークを使用して記述されていますが、ネイティブ C++ で記述されたクローズドソースのプロプライエタリエンジン Havok Physics を基盤としています。Havok Physics for Unity は一般的なゲームのユースケースの多くに合わせて大幅に最適化されています。例えば、コアとなるアルゴリズムは長い年月をかけて改良されており、各種自動キャッシング戦略(非アクティブなオブジェクトのスリープなど)により、必要な時だけ CPU リソースが消費されるようになっています。

Havok Physics for Unity:最新のアップデート

実験的パッケージとしてリリースされて以来、Unity と Havok は早期からプラグインを使っているユーザーと協力して、改良と新機能の追加を進めています。

ここでは、新機能の内訳を紹介します。

  • Havok Physics for Unity は、Unity Pro、Enterprise、および Unity Industrial Collection をご契約の方を対象に、無料で提供されています。
  • Havok Physics for Unity は、オリジナルの Havok SDK の 2021.2 バージョンをベースにしており、Unity プラグインにさらなる安定性とパフォーマンスをもたらしています。
  • フルリリースの一環として、直線位置だけでなく、直線、回転、角速度などのモーター付きジョイント(モーター)のサポートを組み込みました。
  • また、HavokSimulation API には新しいメソッドが追加され、きめ細かなステップによるシミュレーションが可能になりました。さらにシングルトンで Havok シミュレーションに、より効率的にアクセスするためのメソッドも追加されています。

Havok Physics for Unity のアップデートに関する完全な変更履歴をご覧ください。

他のクリエイターが作っているものを見よう

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

もちろん、物理演算は動きにつながります。ここで、2 組のクリエイターが Havok Physics for Unity を使って現在取り組んでいる事例を見てみましょう。

Big Rook Games

タイトル Hostile Mars
スタジオ Big Rook Games
スタジオ規模 個人
プラットフォーム:Windows PC、コンソール
ジャンル:オープンワールド、基地構築・オートメーションタワーディフェンス
プレイヤー:シングルプレイヤー

2022 年の PAX East で初めて発表された『Hostile Mars』は、そのこだわりの物理演算の使い方とユニークなジャンルの取り合わせにより、多くのオーディエンスの注目を集めました。広大な火星の風景が、オープンワールドの工場基地建設・オートメーションゲームで再現されています。プレイヤーは地上での接近戦に臨み、三人称視点シューティングとプログラム仕掛けの防御施設をもって、工場を防衛するのです。

Scenes from Hostile Mars: Defend your factories from thousands of physics-based enemies.
『Hostile Mars』のシーン。物理演算で動く何千もの敵から工場を守ろう。

Big Rook Games の創設者である Jake Jameson 氏は、マルチプレイヤーゲームとシングルプレイヤーゲームのジャンルを融合させることから始め、パズルゲームの要素に加え、一人称視点シューティング(FPS)や敵が集団で襲ってくるタイプのシューティングの要素を取り入れました。このアイデアを進化させていく中で、Jake はシングルプレイヤーの基地建設ゲームを作ることに焦点を絞り込んでいったのです。彼はすぐに、建築、戦略、戦闘の理想的なバランスを発見し、最終的に『Hostile Mars』という唯一無二の形にたどり着きました。

Hostile Mars』の最後のイテレーションを終えた時、このゲームにはある種のデータ指向のプログラミングモデルが必要であることが明らかになりました。Jake はハイエンドなビジュアルを実現しつつ、敵の大群を出現させたいと考えていました。プレイヤーに最高の体験を提供するためには、画面上に何千もの敵を同時に出現させるという大規模な仕掛けを使っても、高いパフォーマンスを維持して動作させる必要がありました。

このような要求に応えるために、Jake は Unity の DOTS を採用しました。ECS for Unity を活用することで、『Hostile Mars』のすべての敵は、堅牢なステートシステム、アニメーション、武器や飛び道具のシステム、高品質の VFX、パーティクルシステムなどに加え、メッシュ物理演算と衝突A* パスファインディング局所回避をリアルタイムに実行できるようになったのです。

「DOTS がなければ、私が最初にデザインしたような体験を提供することはできなかったと思います。独自の ECS フレームワークを実装しなければ不可能でしたし、一人で開発をしている私のスケジュールと予算では実現不可能です。」- Jake Jameson 氏(Big Rook Games 創設者)

Jake は職業としての開発者ではありませんが、熱心なゲーマーであり、オリジナルの Havok Physics エンジンにはすでに親しんでいました。Havok の技術が AAA スタジオの間でいかに信頼されているかを知っていた Jake は、Unity で実験的なパッケージとして利用できるようになった時、すぐに信頼感を抱いて導入することができました。

Hostile Mars』は、物理演算を駆使した体験です。プレイヤーは、物理法則に基づいたトラップややぐらを使って、敵の物理特性を操作します。敵にさまざまな物理特性を与えることで、足止めしたり、より強力なトラップに追い込んだりすることが目的です。

Hostile Mars』に信じられないほどの数の敵が登場するのは言うまでもありません。具体的には、プレイヤーが火星に建造している工場に、最大 5,000 体の物理演算で動く敵が押し寄せます。同時に数百の衝突が発生し、画面上に数百の飛び道具が飛び交います。

Up to 5,000 individual physics-based enemies can flood the player’s Martian factories at once.
最大 5,000 体の物理演算で動く敵が、火星に建造された工場に押し寄せてくることがある。

Hostile Mars』のすべての物理演算に Havok Physics for Unity が使用されています。飛び道具と敵、プレイヤーと敵、あるいは敵と他の敵との衝突から、敵と風景自体の衝突、そして浮遊するために一定の力をかけ続けてホバリングする敵の動きまで、すべての物理現象の計算を行っています。ホバリングや重力、メッシュの点での衝突などをリアルに表現する物理シミュレーションを使って、他とはレベルの違う物理インタラクションを実現しています。そのため、プレイヤーが特定のポイントに敵に攻撃を当てると、Havok Physics for Unity が意図したとおりに、敵が回転しながら飛んでいきます。

Build bases at a massive scale with physics-based traps to defend against waves of enemies.
物理法則に基づいたトラップを仕込んだ大規模な基地を建設し、敵の集団をしのごう。

敵はもちろんすべて物理演算で動いていますが、ゲームプレイに必要なトラップもすべて物理演算で動きます。敵を跳ね飛ばしたり引きつけたりする重力トラップがあると思えば、敵の速度を下げたり上げたりして敵を倒すトラップもあります。さらに、敵の進路上にトゲを跳ね上げるトラップもあります。これはただ敵を押し流すだけでなく、トゲの勢いや速度をリアルにシミュレートして、敵の反応がリアルに見えるようになっています。

プレイヤーがゲームを進めると、敵の集団も多様になり、だんだん複雑になってきます。そのため、プレイヤーはより戦略的にトラップを構築し、物理演算ベースのさまざまなインタラクションを組み合わせて、異なる弱点を持つ敵を、それぞれ最もダメージを与えられる強力なトラップややぐらに誘導する必要があります。例えば、凍結トラップは一部の敵の動きを遅くすることができる一方、爆発トラップは高密度の敵の集団に対して最大限のダメージを与えることができるようになっています。

Hostile Mars』コンソール版のリリース時期はまだ未定ですが、リリースを待つ間、Windows PC 向けの『Hostile Mars』を Steam のウィッシュリストに追加しておくことをおすすめいたします。

Freejam Games

タイトルRobocraft 2
スタジオ Freejam Games
スタジオ規模 25 名
プラットフォーム Windows PC、コンソール
ジャンル:オンライン車両戦闘
プレイヤー:5 対 5 のオンラインマルチプレイヤー

Robocraft 2』は、2017 年に賞を獲得した F2P ゲーム『Robocraft』の続編で、プレイヤーはオープンワールドのマルチプレイヤー環境で、走行、浮遊、歩行、飛行をこなすカスタマイズ可能なロボット戦闘車両を建造します。最初に成功を収めて以来、Freejam Games のチームは、プレイヤーが自分の作品を対戦型マルチプレイヤーゲームに持ち込めるように、『Robocraft 2』の完全にカスタマイズ可能な体験を洗練させてきました。

In Robocraft 2, all vehicles and robots are built by the players themselves, then pitted against one another in team-based combat.
『Robocraft 2』では、すべての車両やロボットをプレイヤー自身が建造し、チーム戦で対戦します。

Freejam Games は、成功を収めた『Robocraft』に続くプロジェクトにおいて実験を重ね、刺激的な新しい建造ツールを提供することに力を注いできました。これにより、プレイヤーは物理シミュレーションによる複雑な作品をより自由にデザインすることができるようになりました。

チームは、物理演算をクライアント側からマルチプレイヤーゲーム専用サーバーに移行することで、プレイヤーが作成した車両やロボット間の物理インタラクションがどのように強化されるかを評価しました。そして彼らは物理演算をサーバーに移管することで、重量、慣性、運動量、摩擦、質量、跳ね返りなどが正確にシミュレートされ、さまざまなゲームプレイが楽しめることを発見したのです。つまり、重い乗り物が軽い乗り物を押したり、ピストンやサーボ、回転台などのジョイントと組み合わせたりすることが容易にできるのです。武器や爆発物も、当たったときのキックバックやかかってくる力がリアルに再現されています。これらの実験に加え、コミュニティでのテストやフィードバックを経て、『Robocraft 2』が形になりました。

Robocraft 2』では、プレイヤーは複雑な車両を建造し、戦闘に持ち込み、5 対 5 のチームバトルでその車両を吹っ飛ばすバトルを行います。Freejam のチームは、初代の 『Robocraft』における経験から、プレイヤーたちが競争的かつ創造的で、バトルに勝つために提供された建築ツールを最適化する新しい方法を見出すことを知っていました。

そのため、すべての人に公平な体験を提供するためには、物理エンジンの 3 つの主要な機能に頼る必要がありました。

  1. 高速なパフォーマンス
  2. 不具合のない堅牢な物理シミュレーション
  3. 物理エンジンの低レベルの領域にアクセスし、ゲームの改造を行うことができる
Physics in Robocraft 2 was fully processed on the server, which allows for dynamic, real-time physics, while maintaining performance for player versus player (PvP) combat.
『Robocraft 2』の物理演算は完全にサーバー上で処理されるため、プレイヤー対プレイヤー(PvP)のバトルのパフォーマンスを維持したまま、ダイナミックかつリアルタイムな物理演算が可能になった。

2017 年の DOTS と ECS for Unity の発表に先立ち、Freejam Games は ECS フレームワークを内製する可能性について検討しました。その後、実験的にリリースされた ECS for Unity をいち早く採用し、最初は Unity Physics を使いました。サーバーサイドの技術を使った実験では、プレイヤーのクライアントとサーバー上のシミュレーションを同期させるためのソリューションとして決定論を用いました。この時、決定論的な Unity Physics により、パフォーマンスが確保されていました。

ゲームの進化に伴い、ステートレスなアプローチから脱却し、Havok Physics for Unity をいち早く採用しました。Havok Physics for Unity はステートフルなシステムとして、『Robocraft 2』のゲームプレイ要件にあったシミュレーションのパフォーマンスを最終的に実現させました。

「Havok(Physics for Unity)の高いパフォーマンスにより、当社のオンラインゲームで正確なサーバーサイド物理を実現することができます。その結果、すべてのクライアントが平等に物理現象を表現できるようになり、より質の高い体験ができるようになるなど、いくつかの大きなメリットがもたらされます。また、サーバーがシミュレーションに対して権威を持っているということは、不正行為を行う機会を減らすという利点もあります。」- Ed Fowler 氏(Freejam プリンシパルプログラマー兼共同設立者)

 

See Havok Physics for Unity within the Unity Editor.
Unity エディター内で Havok Physics for Unity を使おう

Havok Physics for Unity は Freejam Games の複雑な問題解決に貢献しました。例えば、プレイヤーが敵を倒すと、ロボットや乗り物がブロックごとにバラバラになり、環境中に数百個のリジッドボディを作り出すことがあります。CPU を解放し、高いフレームレートを維持するために、Deactivation を使って、アクティブでないリジッドボディをスリープ状態にすることができます。これは、壊れた部品の物理演算を一時的に止める上で効果的な機能です。

Robocraft 2』のプレイヤーの作品は、多数のリジッドボディと複合コライダーがジョイントで拘束されたもので、互いにぶつけたり重ねたりすることができます。物理シミュレーションの全体的なパフォーマンスをさらに向上させるには、Collision Caching を使います。これを使うと、スタッキングの状況など、ジョイントや制約の精緻なシミュレーションを追加で行うことができます。

最後に、ゲーム世界での衝突をリアルタイムで可視化するために、Havok Visual Debugger を使用しました。これにより、Freejam Games は不具合や障害を特定し、不正な接触が発生するケースを効率的に発見することができました。これにより、ワークフローが加速され、迅速な修正が可能となりました。

Robocraft 2』が実際に動いているところをご覧になりたい方は、この作品を Steam のウィッシュリストに追加しましょう。

飛び込む準備はできていますか。

Performance demo of asteroids around a planet using Havok Physics for Unity
Havok Physics for Unity を使用した惑星周辺の小惑星のパフォーマンスデモ

始めるにあたって、GitHub の ECS Physics Samples をチェックしましょう。

より詳しいガイダンスが必要な場合は、Havok Physics for Unity を含む Unity の物理演算オプションについて、チュートリアルがありますので、そちらをご参照ください。

このチュートリアルを終えると、以下のことができるようになります。

  • Havok Physics for Unity と Unity Physics の主な利点について説明する
  • Unity Physics と Havok Physics for Unity の関係を説明する
  • ECS の物理演算ソリューションがプロジェクトに適している状況を特定する

このチュートリアルは、ECS for Unity の物理演算ソリューションの紹介となっており、Unity エディターの使用経験がある中級から上級のユーザー向けに構成されています。前述の通り、DOTS は Unity の Data-Oriented Technology Stack のことで、複雑なプロジェクトを高度に最適化されたパフォーマンスで作りたいユーザー向けのデータ指向技術スイートです。DOTS についてもっと知りたい方には、新しく GitHub で公開された DOTS Guide をおすすめします。

ディスカッションに参加する

また、Unity Discord のDOTS チャンネルフォーラムでも、多くの方々と積極的に交流しています。私たちは Havok Physics for Unity を使ったプロジェクトについて、もっと知りたいと考えています。

2022年12月19日 カテゴリ: Engine & platform | 18 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

フォーラムでディスカッションに参加する
関連する投稿