パウダーゲーム:どのように機能しますか?


13

最近、次の2つの宝石を見つけました。

http://powdertoy.co.uk/

http://dan-ball.jp/en/javagame/dust/

私の質問は次のとおりです。非常に多くの要素を持つ物理学はどのように効率的に処理されますか?私は現代のコンピューティングパワーをひどく過小評価しているのですか、それとも各セルが対応する位置に配置されているものを記述し、各ステップで各セルをシミュレートする2次元配列を「ちょうど」持つことは可能ですか?または、同じ種類の大きな領域を単一のデータセットにまとめ、必要に応じてそのセットを分離するなど、より複雑なことを行っていますか?

このようなオープンソースのゲームはありますか?


元のStackowerflowでの砂のシミュレーションについても同様の質問をしました。答えが役に立つかもしれません。
エフゲニーヴィンニク

回答:


5

確かにかなりの数があります。私はそれらを変更していました。リンクはフォーラムのスレッドとソースのダウンロード用です。私の最高の思い出は次の2つです。

Engaviand by by xavierenigma(C ++ | Java)Javaのほうが新しいです。

BurningSand by sieben(C ++)これは物理的に非常に高速です。

このサイトは残念ながら死に近づいていますが、ここには物理学に関するいくつかのスレッドがあります。

編集:興味のある方は、ここでEnigmaSandのJavaソースをmediafire'dしました


大変感謝いたします。ただし、リンクは現在ダウンしています。数時間後にもう一度試してみます。
マークミュラー

彼らです?彼らはすべて私のためにうまく働いています。
共産主義のダック

1
Mediafireは回答にアップロードおよび編集しました。
共産主義のダック

5

これらのゲームの物理学は、複雑なセルオートマトンに基づいたシステムを使用してシミュレートされます。これは、たとえばGame of Lifeで使用されているものよりもかなり複雑であり、おそらく適切なCAではないことを意味する機能が組み込まれていますが、計算は比較的簡単で、長年にわたって行われています。あまり詳しく説明しませんが、アルゴリズムの複雑さはかなり小さくなり、おそらくO(area)になります。

そこにはいくつかの群知能もあるように見えますが、それはまた、それが作り出すことができる興味深い効果にとって驚くほど効率的です。


「そして、おそらく適切なCAではないことを意味する機能を組み込んでいます」...それはどういう意味ですか?これらのCAは、より多くのルールやその他のものを持っているという点でのみ異なりますか?
ガストン

2
正規のCAは、世代Nのセルの近くの状態に依存する関数によって定義される世代N + 1の各セルの状態を持ち、関数は一般に各セルで同じです。多くの「パウダー」ゲームには、ボイドや制約ベースの物理オブジェクトなどが含まれていますが、実際にはこの定義に該当しません。それらが完全にCAとしてコーディングされているとは思えません。たとえある場合でも、ある時点で、近所は十分に大きくなり、遷移関数はあなたが本当にCAを扱っていないほど複雑になります。
グレゴリーエイヴリーウィアー

良い答えとコメントGregory、あなたの洞察に感謝します。
エンジニア

1
セルオートマトンはその一部かもしれませんが、完全な答えではありません。そこでの流体ソルバーは、それはそう「現実的」に見える何である、そこにもある
bobobobo

@bobobobo:ええ、それは間違いなく適切なセルオートマトンの範囲を超えています。
グレゴリーエイヴリーウィアー

3

何年も前に、Jos Stamは流体ソルバーのソースコードを公開し始めました。グリッドを設定し、Navier-Stokes方程式を非常に高速に解決する非常に短いコードがあります。完全なソースは彼のページでも利用可能です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.