物理エンジンはいつ使用する必要がありますか?[閉まっている]


12

Box2Dを発見したので、非常に小さなプロトタイプや何かをテストする小さなプログラムから実際のプロジェクトまで、私が作成しようとするゲームのようなアプリケーションに使用しています。

そのおかげで、衝突から実際の物理学まで何でも簡単に処理できます。

しかし、時々、私はそれについていくつかの疑問を持っています:円またはAABBを処理するだけで、高度な物理ツール(ジョイントまたはそのようなもの)が必要ない場合、物理エンジンは、不要なオーバーヘッド。

私の質問を再確認するには:物理学が本当にシンプルなゲーム(たとえば、スーパーマリオなど)でBox2D(または他の物理エンジン)を使用しますか?そして、そうでない場合、なぜですか?


2
正しいと思うことをしてください。ゲームに物理エンジンが必要だと思いますか?マリオはBox2Dの恩恵を受けると思いますか?最新のマリオは確かに素晴らしい物理学でいい感じがしますが、Box2Dで構築したもののようなものは感じません。
ジェフ

@Jeff:「Box2Dをいつ使うべきか」という質問に依存します。または「いつ物理エンジンを使用すべきですか?」。新しいマリオには確かに物理エンジンが含まれています。

1
@Joe Wreschnig:ええ、しかし、物理エンジンが使用されない場合はありますか?私が考えることができるのは、テキストアドベンチャー、またはポイントアンドクリックだけです。私はそれはあなたが物理エンジンのあなたの定義を作成する方法を一般に依存推測
ジェフ・

@Jeff:いくつかの(非物理)パズルゲームには、テトリス、宝石をちりばめたようなものが必要です。アクションゲームでは、ほとんどの2D shmupsは物理エンジンの恩恵を受けないと主張できます。一般にAABB /サークルオーバーラップチェック、衝突応答なし、絶対に固定された移動パス、および一定速度が必要なだけです。プラットフォーマーは、しかし、物理学がすべてです。

回答:


8

Box2Dに使用されるメモリ、ディスク容量、開発努力、またはプロセッサ時間が目的に対して多すぎる場合は、使用しないでください。それ以外の場合は、有用だと判断した場合に回避する理由はありません。


2
これが本当にすべてです。それがあなたの人生を楽にし、あなたが望むプラットフォームからあなたを妨げないなら、たとえそれの一部を使わなくても、それは勝利です。

1
または、言い換えれば、「車輪を再発明する唯一の理由は、車輪の再発明について学ぶことです」。
Exilyth

4

物理学があまりないので、スーパーマリオと同じくらい簡単です。(マリオはジャンプで他のオブジェクトの物理に影響しません)

物理学を使用して他のオブジェクトの結果に影響を与える複数のアイテム(複数)の意味で物理学を使用している場合、エンジンを使用します。


一方、マリオには運動量、加速、可変サイズ、および方向性衝突があります。これらはすべて、物理エンジンで「無料」で取得でき、単なる境界のオーバーラップチェックではありません。

私は同意します-ほとんどの場合、物理エンジンはあなた自身を実装するのに少し時間の無駄になる多くのものをあなたに与えると思います。
クリストファーホレンシュタイン

3
車輪を発明しないほうが常に良いのは確かです。ただ車輪が欲しいだけなら、車の青写真を撮るつもりはないことを知っています。それに加えて、ゲーム全体についての詳細がわかり、物理学の変更/変更が簡単になります。
スプーク

1
それは本当に恐ろしい類推です。これは、ホイールと車軸、そしておそらくステアリングコラムとモーターが必要ですが、ダッシュボードやパワーウィンドウは必要ないようなものです。

3
パワーウィンドウが必要ない人はいますか?
スプーク

2

私の答えは「はい」です。物理エンジンからすぐに得られる機能の一部を実装するために不要な開発時間を費やすべきではないので、単純なことには絶対にBox2Dのような物理エンジンを使用してください。たとえば、静的なボディを定義し、その上に動的なボディをドロップし、方向入力のために動的なボディに力を加えると、数分でプラットフォーマーが得られます。エンジンがこれに値しないほど十分なオーバーヘッドを追加するとは思わない。


3
ただし、Box2Dを実装して使用する方法を考え出すには、単純な物理学を作成するよりも時間がかかると言えます。(私はこれが物理学の使用の程度に依存すると思いますが)
Spooks

1
@Spooks:Box2Dよりも「簡単」な、まだ有用なものは想像できません。

私はここでジョーと完全に同意しています。Box2Dの使用に伴う有用性を単純に置き換えるものはありません。Box2Dでフィクスチャを作成し、重力を定義する方法を学ぶよりも、自分のニーズを迅速に満たすものをコーディングすることは想像できません。
クリストファーホレンシュタイン

1

ゲームの「物理」が単純な場合、物理エンジンをインポートする必要はありません。

物理学のモデリングと物理学のシミュレーションには違いがあるため、物理学という用語を大まかに使用します。差別化するための非常に重要なこと。

たとえば、マリオブラザーズでは、走ったり停止したりすると少しスライドします。それをどう実装するか考えてください。

必要な変数をすべて定義することでモデル化できます。質量、重力、摩擦係数、推力などを計算し、新しい速度、加速度などを計算します。

しかし、それだけの価値はありますか?プレイヤーが動いていないときにスピードを落とすことで、同じ効果をシミュレートできます...

何かのようなもの:

if( pressing movement key ) { 
 speed = 5; 
} else { 
 if(speed) speed--; // slide!
} 

違いは1つは物理学で、もう1つは違います。両方に長所と短所があります。しかし、単純なゲームの一般的なルールとして、それを偽造することははるかに簡単です。


1
そのような物理学はひどいです。あなたがそれを偽造するつもりなら、同様にそれが見栄えを良くするかもしれません。摩擦= .9または1未満の数値。speedX* =摩擦。speedY * =摩擦;
AttackingHobo

2
もちろん、プロジェクトの終わりまでに、「if(移動キーを押して動かず、氷の上で、水中ではなく、この特別なパワーアップがあり、ブーツに乗っていない...)」に変わります。

@AttackingHobo:この投稿のポイントは、すてきなスライドアルゴリズムを作成することではありません。シミュレーションとモデルの違いを説明することです。
aaronfarr

@Joe:これらは摩擦変数の単なる変更です。おそらく、あなたと@AttackingHoboはチャットする必要があります。P物理エンジンを使用すると、ゲーム内のすべてのオブジェクトのプロパティを定義する必要があります。私のポイントは、単純なゲームの物理エンジンをプラグインすることは自動であってはならないということです。その状況。
aaronfarr

1
@aaronfarr:シミュレーションとモデルに違いはありません。これらの目的のために、それらは同義語です。示したのは、おもちゃのモデル/シミュレーションの孤立した部分は、Box2D全体よりもコードが少ないということです。

0

状況に応じて決定する必要があります

カスタムエンジンを使用するプロ

  • 制御下のソフトウェア(新しいリリースによる変更なし)
  • ゲームに最適(ゲームに必要な機能のみを必要な方法で)
  • 柔軟性(必要なクレイジーなダイナミクスをエンコードでき、将来の機能はエンジンに依存しません)
  • 学習経験(ある日、エンジンを改善する必要があり、エンジンを構築する方法が必要になる場合があります)
  • 単純な機能の学習とプログラミングが少ない(エンジンで何かを行うには、その構造を深く理解する必要がある場合があり、価値がない場合があります)
  • 単純な機能のより高いパフォーマンス(単純な特定の機能の場合、非常に汎用のエンジンよりも高いパフォーマンスを得ることができます)
  • メモリが少ない(必要な機能のみが使用されている場合、オブジェクトとコードが必要とするスペースとメモリははるかに少なくなります)

市販の物理エンジンの長所:

  • 苦労せずに新しいハードウェアと新しいOSに適応できる
  • 複雑な機能のための学習とプログラミングの労力の削減
  • 複雑な機能のための高性能
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.