Siatka prostych zasad, a nie silnik fizyki
Piasek, dym, ogień i woda w tej symulacji nie są modelowane za pomocą rzeczywistych równań płynów – to automaty komórkowy: siatka komórek, każda z nich przechowująca typ materiału, aktualizowana co kadr przez niewielki zestaw lokalnych zasad, które patrzą tylko na najbliższych sąsiadów każdej komórki. Jest to ta sama rodzina technik jak Conway'a Gra Życia, tyle że z więcej niż dwoma stanami i zasadami dostrojonymi do wyglądu fizycznych materiałów. Używana jest ta sama sztuczka wykorzystana w klasycznych grach "spadający piasek" – tania w obliczeniach, łatwa do interakcji i wizualnie przekonująca bez rozwiązywania pojedynczego równania różniczkowego.
Piasek: grawitacja plus rzut monetą
Każda komórka piasku zadaje pytanie, co każde klatki: czy komórka bezpośrednio poniżej jest pusta? Jeśli tak, upada do niej. Jeśli komórka bezpośrednio poniżej jest zajęta, ale jedno z dwóch komórek po przekątnej poniżej jest puste, przesuwa się tam zamiast tego – to umożliwia powstawanie realistycznych zboczy stosów piasku, które widzimy, gdy pada, zwanych kątem spoczynku, zamiast pojedynczej, nienaturalnej kolumny pionowej. Gdy obie komórki po przekątnych są wolne, automat zazwyczaj wybiera jedną z nich losowo, co sprawia, że stopy piasku mają lekko nieregularne, naturalnie wyglądające krawędzie zamiast idealnych symetrycznych trójkątów.
Dym i ogień: dyfuzja i wyporność
Dym zachowuje się odwrotnie niż piasek – ma tendencję do unoszenia się i rozprzestrzeniania. Każda komórka dymu ma szansę poruszać się w górę lub na boki, do pobliskiej wolnej komórki, a jej gęstość lub wartość życiowa powoli maleje z każdym kadem, aż do zniknięcia, co sprawia, że chmura dymna staje się cieńsza i zanika wraz ze wzrostem. Komórki ognia zachowują się podobnie jak komórki dymu, ale posiadają również zasadę spalania: komórka ogienna obok palnego (np. piasek zastępujący paliwo) ma szansę przekształcić sąsiada w komórkę ognistą, a spalające się komórki przekształcają się w komórki dymne po wyczerpaniu wartości paliwowej. Ten lokalny wzorzec infekcji i rozkładu wystarcza do wytworzenia płomieni tańczących, rozprzestrzeniających się na źródło paliwa oraz pozostawiających ślad dymu – wszystko to pochodzi z zasad, które patrzą tylko o jeden komórkę dalej.
SAND: if below empty → fall down
elif diag empty (either) → fall diagonally (random pick)
else → stay
FIRE: each frame: chance to ignite a flammable neighbour
fuel -= decay_rate; fuel <= 0 → convert to SMOKE
SMOKE: chance to move up/sideways into empty cell
life -= decay_rate; life <= 0 → cell becomes empty
Woda: sprawa z wolno spływającym się strumieniem
Komórki z wodą dodają jedno kolejne prawo, które opiera się na zachowaniu piasku w spadnie: jeśli komórka z wodą nie może spaść pionowo lub ukośnie, próbuje przesunąć się poziomo do wolnego sąsięda, w obu kierunkach. Ta dodatkowa opcja – rozprzestrzenianie się poziomo, gdy jest blokowana od dołu – to właśnie sprawia, że zasada spadającego piasku przekształca się w tworzenie się zbiorników wodnych, znalezienie swojego poziomu i rozlewanie się na kałużę zamiast zbierania się w stos.
Żadne z tego nie jest symulatorem Naviera-Stokesa; nie ma pola ciśnienia, nie ma termu lepkości, nie ma wektora prędkości na cząstkę. To, co to uchwyciło, to jakościowe zachowanie każdego materiału – piaskowe stosy, rozprzestrzenianie się wody, dym unosi się i zgęszcza, ogień pożera paliwo i wytwarza dym – a to jest dokładnie poziom realizmu, którego potrzebuje sandbox typu 'kliknij i narysuj', aby czuć się żywy i reagujący z częstotliwością 60 obrazów na sekundę na siatce liczącej dziesiątki tysięcy komórek.
Frequently asked questions
Czy to jest prawdziwa symulacja płynu jak woda w silniku gry?
Nie — jest to automatyczny komórkowy, ta sama rodzina techniki co Gra Życia Conwoja. Każda komórka sprawdza kilka sąsiednich komórek i przestrzega krótkiej listy zasad ruchu i konwersji; nie rozwiązuje się pola ciśnienia ani prędkości, co dokładnie sprawia, że jest wystarczająco szybki do działania na dużej sieci w czasie rzeczywistym.
Dlaczego piasek tworzy schludne trójkątne stosy?
Ponieważ ziarno, które nie może spaść prosto w dół, sprawdza dwa komórki po przekątnych poniżej, zanim się podda, więc ślizga się na boki podczas upadku, podobnie jak kąt spoczynku prawdziwego piasku. Losowy wybór między tymi dwoma przekątnymi, gdy obie są otwarte, to właśnie utrzymuje naturalny wygląd powierzchni stosu zamiast idealnej konika.
Jak ogień się rozprzestrzenia i ostatecznie gaśnie?
Każda komórka ognia ma szansę zapalić sąsiednią, łatwopalną komórkę co klatkę, więc front ognia powoli przesuwa się o jedną komórkę w czasie; każdy spalający się komórka również przenosi malejącą wartość paliwa i gdy ta osiągnie zero, komórka przekształca się w dym, dlatego płomienie migoczą, rozprzestrzeniają się i ostatecznie ustępują unoszącemu się śladowi dymu.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Magic Sand & Smoke i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację Magic Sand & Smoke