8

これは、どのパターン/アプローチを使用すべきかについてのアドバイスを求める質問です。この問題についていくつかの調査を行いましたが、結果は良くありませんでした。

基本的に、私はゲームのアイデアを持っています。このゲームの主要なゲームプレイ メカニクスは、降る雪 (または、このアイデア ゲームの場合は落下する粒子) に基づいています。

雪/粒子は画面から落ちる必要がありますが、山に蓄積します。問題は、パイルの側面が特定の角度にあるときに雪が「滴り落ちる」ために雪が必要であり、蓄積し続けることです。雪の山の下に穴が開く可能性があり、雪が落ちる必要があります-砂時計から砂が落ちるように考えてください.

私はこれが Box2d であることを試してみました - Box2d が何千もの小さな粒子にとって正しい選択ではないことは明らかです - それは長期間持続します。Box 2D はすぐに死んでしまいました。

画面に 1 ピクセルのビットマップを描画しようとしましたが、更新ごとに 10,000 の衝突を処理するのもパフォーマンスが悪いことがわかりました。

どんなアイデアでも大歓迎です。

乾杯

4

3 に答える 3

1

このCoolEffects(XNAおよびMonoGame用)をたくさん読んで くださいhttp://www.int6.org/development/cool-effects-for-xna-monogame/

雪の効果はありませんが、変更するために使用できるいくつかの興味のある効果があります。

于 2013-02-26T16:04:45.013 に答える
1

どの粒子が実際に物理エンジンによって処理されているかを監視することは可能ですか?もしそうなら、それらの速度が0.01未満などの場合、それらの物理学の処理を停止したり、処理されるものを厳しく制限したりする方法はありますか?

処理が必要なパーティクルのみを処理する場合は、すべてが一度に移動するわけではないと仮定して、必要な数だけパーティクルを処理できます。

それでも問題が解決しない場合は、流体力学は基本的に非常に多くの小さな移動粒子であるため、流体力学ソリューションの方が適しているように思われます。

2D流体力学に関する興味深い情報は次のとおりです。

http://www.ibiblio.org/e-notes/webgl/gpu/fluid.htm

物理エンジンには、必要なものがすでに含まれている場合があります。

于 2013-02-26T16:12:36.717 に答える
1

あなたが発見したように、あなたのシナリオに非常に特化したものでない限り、既存のライブラリは役に立ちません。残念ながら、XNA では選択できるものが多くなく、既存の粒子システム ライブラリのいずれも粒子物理学をサポートしていないようです。

そのため、自分で多くの作業を行う必要があります。何よりもまず、実行できるすべての最適化について考える必要があります。コメントが言ったように、フレームごとにすべてのパーティクル間でチェックを実行するべきではありません。物理エンジンで通常使用される手の込んだものではなく、ポイントベースの衝突チェックを使用する必要があります。この場合、パーティクルが常に同じサイズであることを確認する必要があります (参照座標系に対して、つまり、ズームできないという意味ではありません)。そしてもちろん、できるだけ多くの衝突チェックをスキップする必要があります - 静止していることがわかっている粒子は、すべての側面に粒子が隣接している粒子のように、決してチェックされるべきではありません - これがグリッドについて考えるきっかけになります。おそらく、「世界」全体をグリッドとして表すことができます。

とにかく、私は少しとりとめのないことを認識していますが、それはとても開かれた主題です... :)

于 2013-02-25T23:09:29.267 に答える