フォーリングサンドベータ

砂・水・火・溶岩を撒いて反応を眺めるサンドボックス

このツールはまだ安定化中のベータ版です。結果に違和感があればお知らせください。

シミュレーションエンジン(WebAssembly)を読み込み中…

素材を選んでキャンバスをドラッグすると撒けます (右ボタン = 消しゴム)。砂は積もり、水と油は流れて広がり、油は水に浮きます。火は木・油・植物を燃やし、水に触れると水蒸気になります。溶岩は水と出会うと石に固まり、植物は水を吸って育ちます。水蒸気は冷えると雨になって落ちてきます。 氷は火で溶け、触れた水をゆっくり凍らせます。雪はふわふわと積もります。酸は壁以外なんでも溶かし、火薬は火が触れると爆発します。複製機は最初に触れた素材を延々と生み出します。種は地面に落ちると木に育ち、花火は打ち上がって弾け、ガスは火が触れた瞬間に燃え広がり、ブラックホールは触れたものをすべて飲み込みます。ツール: 直線・四角で壁を作り、爆弾で吹き飛ばし、雷を落としてみましょう。解像度を「極限」にすると数百万粒まで使えます。

フォーリングサンドについて

フォーリングサンドは、格子の各マスに元素が1つずつ入ったセル・オートマトンです。このツールは1ステップごとに最下段から上へ1行ずつマスを更新し、行ごとに左から進むか右から進むかをランダムに決めます。同じステップですでに動いた粒子は二度と動かしません。粒子の動きは「隣のマスと入れ替わる」という1つの操作だけで表され、入れ替われるかどうかは密度で決まります。

つまりここでの物理はニュートン力学ではなく規則です。砂山の角度、水の広がる速さ、油が浮く理由は、すべて数行の規則といくつかの数字から出てきます。以下ではその規則と、実際の物理とどこで食い違うかを見ていきます。

砂1粒の規則と45度の山

砂・砂利・火薬は毎ステップ真下へ進もうとし、ふさがっていれば左下か右下のどちらかをランダムに先に試します。両方ふさがっていれば止まります。横へ滑るだけの動きはありません。

この規則だけで山の傾きが決まります。粒が止まるには真下と斜め下の両方が埋まっている必要があるので、1点に注いだ砂は1段下がるごとに左右へ1マスずつ広がる三角形、つまり45度の山になります。高さ h 段の三角形は 1 + 3 + 5 + … + (2h − 1) = h² マスなので、400マス分の砂を1か所に注ぐと高さ約20段になります。実際の乾いた砂は粒の摩擦や形によってこれよりゆるい傾きで崩れます。このツールで傾きが常に45度なのは、近傍が斜めまでしかない格子の限界です。

落ちる速さも規則から決まります。粒子は1ステップに1マスしか下がらないので、高い所から落としても加速しません。実際の自由落下では速さが時間に比例して大きくなります。

密度の順番がつくる層

動く粒子は自分より密度の低いマスにしか入れません。ツール内の順番は、砂利10 > 砂9 > 火薬・種8 > 溶岩7 > 雪6 > 水・酸5 > 油4 > 煙・水蒸気・火・ガス1 > 空0 です。砂を水に注ぐと砂は水と入れ替わりながら沈み、油を水の下に入れても1マスずつ上がって水面に浮きます。

この規則は液体の層にはよく合いますが、粉どうしでは実際と違います。このツールで砂利と砂を混ぜると、砂利が砂を突き抜けて底へ沈みます。実際の粒の混合物は揺すると大きな粒がむしろ上に来ることが多く、「ブラジルナッツ効果」と呼ばれます。1987年にロザートらがシミュレーションでその原因を分析しました。大きさと揺れによる分離は、密度比較の規則からは出てきません。

水に圧力がない

水は下へ行けないとき1ステップで横へ最大4マス、油は2マスまで流れます。油が水よりゆっくり広がるのはこの数字のためで、粘り気のまねです。

その代わり、水が上へ動く規則はありません。U字管を作って片側だけに水を入れても、実際と違って両側の水位はそろいません。本物の水では底の圧力が反対側の水を押し上げますが、このツールの水粒子はすぐ隣のマスしか見ていません。噴水やサイフォンが再現されないのも同じ理由です。商用ゲームは粒子規則の上に別の圧力計算や剛体物理を重ねてこの限界を越えています。ゲーム全体をフォーリングサンド方式で作った「Noita」の開発者は、GDC 2019 の講演でそうした層をどう組み合わせたかを説明しています。

反応の規則いくつか

火は上下左右の4マスを見て毎ステップ燃え移ります。1ステップの確率はガス0.6、油0.15、木・植物・種0.05です。木についた火は90〜150ステップ燃え続けるので、ガスは一瞬光って消え、木の山は長く燃えます。

火が水に触れると水は水蒸気になり、火は消えます。溶岩が水に触れると溶岩は石(砂利)に、水は水蒸気になります。水蒸気は上へ昇り、寿命が尽きると30%の確率で水滴になって再び落ちます。雨の循環はこの1行から生まれます。火薬は火か溶岩が触れると半径6マスを吹き飛ばします。

  • 底を開ける:最下段の動く粒子が抜けていく。流れ続ける滝を作るときに使う。
  • 複製機:最初に触れた元素を作り続けるので、水の複製機と溶岩の複製機を近くに置くと石が際限なくできる。
  • 解像度「極限」:マスが小さくなり粒子数が数百万に増える。規則は同じなので山の傾きはやはり45度。

例

1か所に注いだ砂山の高さ

入力
砂400マス分を床の1点に注ぐ
結果
底辺約39マス、高さ約20段の45度の三角形

高さ h の三角形は h² マスを含みます(1 + 3 + … + 39 = 400)。筆は密度50%で塗るので筆の大きさと実際のマス数は違いますが、積もった形は常にこの比に従います。

水と油を同じ幅の水槽に注ぐ

入力
幅20マスの水槽、水と油を同量
結果
油が上、水が下に分かれ、水面が平らになるのは水のほうが速い

密度5 > 4 で層が分かれ、1ステップに横へ進む距離が水4マス・油2マスなので、広がる速さはおよそ2倍違います。

U字管の実験

入力
壁で U 字管を作り、片側の柱だけに水を入れる
結果
底の通路が水で満ちても、反対側の柱の水位は上がらない

上へ動く規則がないので圧力が伝わりません。連通管の水位がそろう現象を再現できないことが、このツールの水と本物の水の最も大きな違いです。

使い方

  1. パレットで元素を選び、キャンバスをドラッグして注ぐ(右ボタンは消しゴム)。
  2. 直線・四角ツールで先に壁や容器を作る。
  3. 火・溶岩・火薬を加えて反応を見るか、爆弾や雷で揺さぶる。

よくある質問

砂山がいつも同じ角度になるのはなぜですか?

砂の粒子は真下と斜め下の3マスだけを見て動くので、傾きが45度に固定されます。実際の砂の安息角は粒の大きさ・形・湿り気で変わりますが、この規則にはそうした変数がありません。

両側の水位がそろわないのはなぜですか?

このツールの水は横と下にしか動かず、圧力を計算しません。U字管やサイフォンのように圧力で水が上がる現象は再現されません。

なぜ下から1行ずつ計算するのですか?

上から計算すると、同じ粒子が1ステップに何度も落ちてしまいます。下から上へ進み、動いた粒子に印をつけておけば、どの粒子も1ステップに1回だけ動きます。行ごとに左右の向きをランダムにするのは、砂や水が片側へ偏るのを防ぐためです。

解像度を上げるとよりリアルになりますか?

粒子が増えて形はなめらかになりますが、規則は同じなので45度の傾きや圧力がない性質はそのままです。1マスが小さくなるので、同じステップ数で落ちる画面上の距離は短くなります。

出典

基準日:

プライバシーとデータの扱い