等尺性ゲームでの水のシミュレーション


7

私はFlash AS3でゲームを作成しています。このゲームでは、プレイヤーが水を正しい方向に向けるために土地を変更する必要があります。

しかし、水のシミュレーションは私にとって新しいトピックであり、ちょっと行き詰まっています。波紋などでリアルな水のようである必要はありませんが、流れる必要があり、十分な水がある場合は上昇する必要があります。

私は2種類の水を考えました。

  • 春:無限の水源。海などのシミュレーションに使用されます。
  • ウォーターブロック:たった1ユニットの水。

現在の実装では、水がどのように広がるのかを示していますが、上昇せず、有限の水を許容しません。また、拡散は水の量を考慮せず、実際に水の単位を移動するのではなく、複製するだけです。

皆さんがこの問題をどのように解決するのか知りたいです。例/疑似コードは常に高く評価されています。


現在のバージョン:http : //dl.dropbox.com/u/319897/ProjectWater.swf 左マウスを押すと、土地を操作できます。Aを押すと、一度に1ステップの水をシミュレートできます。

水の部分のソース:http : //pastebin.com/Js2kYt4y


Uベンドのようなものを処理するために(概算)必要なオーバーフローと圧力については、水を(1ブロック以上の高さになる可能性がある)高さとしてシミュレートし、互いに直接上にあるブロックをマージすることを検討してください。明らかに、それをディスプレイや他のシステムのブロックに変換し直し、各フロアブロックの上の「ヘッドルーム」を保存する必要があります。
Martin Sojka、2009

ウォーターブロックにいくつかの情報を追加する必要があります。ブロックの親が誰であるかを知っていれば、多くの情報を得ることができます。あなたは流れの方向を得ることができ、親が戻って水が行くことができる最大の高さを見つけます。次に、あなたが流出できない場合は、あなたの両親があなたが流出できるかどうかを確認してください。さらに、ブロックに「水位」を追加して、単一の非ソースキューブが流れているときに、それ自体をフローに分割できるようにすることもできます。Nickの回答に関する私のコメントも参照してください。
MichaelHouse

私はこれについてブログ投稿を書き、私の流れがどのように見えるかのビデオを投稿しました。ほとんどの読者にとって退屈なものになるので、具体的な詳細についてはあまり触れませんでした。詳細については、お気軽にご質問ください。さらに、ニックの回答を承認済みとしてマークする必要があります。
MichaelHouse

回答:


7

セルオートマトン、そして場合によっては流体力学をチェックする必要があります。Tarn Adamsは、Dwarf Fortressにセルベースの流体システムを実装しました。これらは、私がしばらく読んだインタビューで使用したと彼が主張したツールです(また、ユースケースごとに3次元で)。あなたの目的には、セルオートマトン(水細胞の自己複製/増殖)で十分だと思います。セルラーオートマトンは基本的に、ジョン・コンウェイのクラシックなライフゲームで目にするものです。

ローグライクな開発コミュニティには、この種のゲームに関する大量の情報があります。これらのゲームは本質的にセルベースであるためです。Webzのどこかにrec.games.roguelikeメーリングリストがあり、詳細な情報を入手できると思います。

また、YouTubeでボクセルトロンの動画をチェックしてみてください。そのうちの1つ(約2つか3つしかありません)は、溶岩の動きを示しています。メインキュービックグリッド内で十分に小さいサブキューブを使用すると、表面の動​​きに正弦波などを使用して、非常にクールな非ブロック水が流れる可能性があります。ここでも、伝播にはセルラーオートマトンのテクニックを使用します。

CAの概要については、こちらをご覧ください。


これは言及された記事だと思います(水は終わりに近づいています)。興味深いですが、突然突然途切れてしまいます。私はこれと同じ問題に取り組んでおり、問題の多くを解決しましたが、最終的な解決策に着手していません。私はセルオートマトンに似たものを使っています。これがあなたの答えだと思います。水がさらに "流し出されたら"ブログに投稿します:)
MichaelHouse

@ Byte56それなら、私はあなたのブログから目を離さない!
ロビン

1

良い方法は、洪水を埋めることです。

各セルの水の公称量を追跡し、シミュレーションの各タイムステップで特定の割合の水の移動のみを許可することで、時間ディメンションを簡単に追加できます。この比率は、息を最初に満たす水ベースの隣接セル間で均等に分割できます。この単純なアプローチは、水が平原の上を満たし、盆地などを満たしていることを意味します。

高い水移動率の副作用としてカノンや川の彫刻をしたい場合は、プレイヤーにとって楽しい側面で楽しい擬似物理シミュレーションを構築できます。

芸術的に、これは、水が地形の高さなどで移動している場合に滝ブロックを配置する機会を与えます。

スプリングだけでなくシンクもあり、ボードの端が自然なシンクであるように設定できます。そうしないと、スプリングが最終的にマップを氾濫させます。

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