42

ゲームで 2D 物理をモデル化する方法を学習するための参考資料を探しています。私は自分のためにそれをやってくれる図書館を探しているわけではありません - 私は考えて学びたいのです。

私はグーグルでかなりのことをしました.GameDevなどに関するいくつかのチュートリアルを見つけましたが、それらのチュートリアルは不十分に書かれているか、数学的な理解のレベルを想定していないため、理解するのが難しいと思います.まだ所有していません。

詳細については、タンク戦闘ゲームのようなトップダウンの 2D ゲームをモデル化する方法を探しています。(とりわけ) 加速と速度、「コンポーネント」の熱蓄積、モデルとレベルの境界、およびミサイル型の武器。

Web サイト、推奨書籍、ブログ、コード例 - 理解に役立つものであれば、すべて歓迎します。私は C# と F# を使用してゲームを構築することを検討しているので、これらの言語のいずれかでコード例を作成することをお勧めします。=)

編集:私は数学を理解していないという意味ではありません - 関連するシステムを理解するために何を知る必要があるのか​​ わからないということであり、そのリソースを見つける方法を本当に知らないということです。分かりやすく教えてくれます。

4

8 に答える 8

21

ここに私が数年前に集めたいくつかのリソースがあります。注目すべきは、Verlet 統合です。その時に見つけたいくつかのオープン ソースおよび商用の物理エンジンへのリンクも含めます。このテーマに関するスタックオーバーフローの記事がここにあります: 2d game physicals?

物理学の方法

書籍

  • 「Game Physics Engine Development」、Ian Millington -- 私はこの本を所有しており、強くお勧めします。この本は、C++ でゼロから物理エンジンを構築します。著者は、基本的な素粒子物理学から始めて、「運動の法則」、制約、剛体物理学などを追加します。彼はよく文書化されたソースコードをずっと含んでいます。

物理エンジン

于 2008-10-03T07:20:45.417 に答える
8


(ソース: oreilly.com )

O'Reilly によるゲーム開発者のための物理学

于 2008-10-03T03:47:57.050 に答える
7

経験から言えば、2D 物理エンジンの実装はかなり困難です。エンジンを作成する際に行ったいくつかの手順について詳しく説明します。

  1. 衝突検出。3D ワールドやネットワーク化されたシミュレーションを扱っていない場合でも、衝突検出は難しい問題になる可能性があります。2D 物理学の場合、分離軸定理を使用することは間違いありません。SAT を実装すると、エンジンのダイナミクス部分の作成が半分完了します。

  2. キネマティクス/ダイナミクス。Chris Hecker は、衝突応答を順を追って説明する優れたオンライン リソースを作成しました。

  3. ほかのすべて。衝突の検出と応答が完了したら、あとはエンジンに必要なものをすべて実装するだけです。これには、摩擦、接触力、関節など、考えられるあらゆる要素が含まれます。

楽しむ!独自の物理シミュレーションを作成することは、信じられないほどやりがいのある経験です。

于 2011-03-10T22:23:13.110 に答える
3

すべてをボトムアップで学びたい場合でも、適切にコーディングおよび文書化されたオープンソースの物理ライブラリには、本よりもはるかに多くの情報が含まれています。状況xに対処するにはどうすればよいですか...ファイル内の検索は紙のインデックスよりも高速です。

元の応答:

何、Box2Dの言及はありませんか?ブリザードの従業員によるオープンソースのサイドプロジェクトであり、優れたコミュニティがあり、うまく機能しています。

Box2DをTorqueGameBuilderと統合した私の(簡単な)経験では、APIは使いやすく、ドキュメントは明確で、期待したすべての物理オブジェクトをサポートし(特にジョイントが必要でした)、コミュニティは友好的でした。活発です(2010年初頭頃)。

フォーラムのポスターから判断すると、マネージャーは(ライセンスの手荷物を運ばなかった)寄付を調達することを受け入れているようにも見えました。

アイランドベースのソルバーは、その評判から予想したように、非常に高速に見えましたが、主要なパフォーマンステストを行ったわけではありません。

于 2008-10-24T00:13:28.387 に答える
3

これは、フラッシュを使用した 2D 物理の概念を示す優れたチュートリアルであり、フラッシュに固有のものではありません。 http://www.rodedev.com/tutorials/gamephysics/game_physics.swf

于 2008-10-14T20:44:18.907 に答える
2

F# には、次元分析を行うUnits of Measureと呼ばれる機能があり、間違えるとエラーが発生します。たとえば、次のように言うと:

let distance : float<meters> = gravity * 3.0<seconds>

重力は < メートル/秒 ^2 > であり < メートル > ではないため、コンパイル エラーが発生します。また、F# は単なる .NET であるため、数学/物理学のコードをクラス ライブラリに記述し、それを C# から参照できます。

詳細については、次のブログ投稿を確認することをお勧めします。

于 2008-10-03T17:54:07.207 に答える
1

これは、最初のエンジンを作成するための優れたリソースです。3D ですが、2D に変換するのは非常に簡単です。私は、内部エンジンでこのチュートリアルに従った大企業を少なくとも 1 つ知っています。彼は、スプリング/インパルス ベースの物理学における基本的な物理学の概念をすべて説明し、独自の積分器を作成する方法を示します。

于 2008-10-18T17:33:36.133 に答える
0

F#.NET Journalは、これに関する2つの記事を公開しています。

于 2010-02-19T23:04:26.337 に答える