12

私は「クロスプラットフォーム」の 2D ゲーム エンジンに変わるものを開発しています。私の最初のプラットフォーム ターゲットは iPhone OS ですが、Android や、PSP やニンテンドー DS のようなコンソールに移行することもできます。開いた。

私のエンジンは C++ で開発されており、Box2D と Chipmunk について多くのことを読んできましたが、物理ミドルウェアとしてどちらを使用するかまだ決められません。

Chipmunk は簡単に埋め込むことができるように作成されているようで、Box2D が広く使用されているようです。シマリスは C で、Box2D は C++ ですが、Box2D の API はシマリスの API よりもはるかに悪いと聞いています。

今のところ、エンジンの形状作成と衝突検出機能を不規則なポリゴン (凹面ではない) に使用します。

私は〜を重視します:

1) Good API's
2) Easy to integrate.
3) Portability.

もちろん、他にも何かお気づきの点がございましたら、ぜひお聞かせください。

どちらが私のニーズにより適していると思いますか?

編集:私は自分の特定の選択について記事を書くことになりました。ここで見つけることができます

4

3 に答える 3

6

私は両方を使用していますが、選択できる場合は、はるかに優れた API を備えており、習得がはるかに簡単だったシマリスを選びます...

でもそれはコミュニティいらずで学んだからこそ、マニュアルは全然いいんです。

更新: 私の現在のゲームは Box2D を使用していますが、シマリスを一緒に使用したかったのですが... 主な理由は、Box2D には 2 つの深刻な問題があり、私のゲームでは悪化しています。 、私のゲームはブレイクアウト ゲームです。そのため、ボールが壁に沿って「転がる」と、引っかかって壁から離れてしまうことがあります。多くの人が、なぜ私のゲームの物理が「ランダム」に見えるのかと尋ねました。

Box2D が持つその他の問題は、オブジェクトの保存方法、シマリスは空間ハッシュを使用し、Box2D はバイナリ ツリーを使用することです。私のゲームでは、多くのオブジェクトを含むレベルで大幅な速度低下が発生していました。Erin (Box2D の作成者) にその理由を尋ねました。彼は、Box2D はバイナリ ツリーを使用するため、オブジェクトをグリッドに配置すると (私が言ったように、私のゲームはブレイクアウト クローンです! すべてがグリッドにあります!)、ツリーのバランスが崩れ、Box2D の速度が低下すると説明しました。私のゲームの解決策は、この問題を回避するために、いくつかのレベルを「チェッカーボード」パターンにすることでした。

したがって、すべてのタイルベースのゲームでは、私は単に Chipmunk を使用します。Box2D は、これらのゲームにはまったく適していません (タイル コーナーのバグの「ひっかかり」と、タイル グリッドの速度低下のバグのため)。

于 2010-05-04T03:14:07.350 に答える
5

そうです、シマリスは Box2D が失敗する多くの場所を改善するために開発されました。

しかし、Box2D は間違いなくより確立されたプラットフォームであり、どのエンジンを使用するかを決定する際の私の個人的な経験から、Box2D には非常に大きなコミュニティがフォローしているため、例から学ぶ方が簡単であることがわかりました.

于 2010-04-25T08:50:31.990 に答える
4

Chipmunk はストレート C ですが、Box2D は C++ です。Chipmunk 用の新しいObjective-C バインディングのセットもありますが、商用利用は自由ではありません。

私が理解しているように、シマリスは連続衝突検出をサポートしていませんが、Box2D はサポートしています。これは、「トンネリング」(高速で移動するときにオブジェクトが互いにわずかにすり抜けること) を防ぐために重要です。

結局のところ、私が聞いた限りでは、どちらも素晴らしいものです。C よりも C++ を好む場合、または継続的な衝突検出が必要な場合は、おそらく Box2D を選択する必要があります。

純粋な C ライブラリを使用したい場合は、Chipmunk を使用してください。

私は個人的に Box2D を使用しており、これまでの経験は素晴らしいものでした。

また、Box2D には別の (おそらくより大きな) ジョイント タイプのセットがあると思います。

于 2011-08-29T22:53:47.313 に答える