Gry w proszku: jak działają?

13

Niedawno znalazłem te dwa klejnoty:

http://powdertoy.co.uk/

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

Moje pytanie brzmi: w jaki sposób efektywnie radzi sobie fizyka z tak wieloma pierwiastkami? Czy po prostu poważnie nie doceniam współczesnej mocy obliczeniowej, czy też możliwe jest „po prostu” posiadanie dwuwymiarowej tablicy, z której każda komórka opisuje to, co jest umieszczone w odpowiedniej pozycji i symulować każdą komórkę na każdym etapie. Czy też podejmowane są bardziej złożone czynności, takie jak sumowanie dużych obszarów tego samego rodzaju w jednym zestawie danych i oddzielanie tego zestawu w razie potrzeby?

Czy są jakieś gry typu open source, na które mógłbym spojrzeć?

Marc Müller
źródło
Zadałem podobne pytanie dotyczące symulacji piasku na oryginalnym Stackowerflow . Odpowiedzi mogą ci pomóc.
Evgeny Vinnik

Odpowiedzi:

5

Z pewnością jest ich sporo; Modyfikowałem je. Uwaga: linki dotyczą wątków na forum i plików do pobrania. Dwa, które mam najlepsze wspomnienia to:

EngimaSand autor: xavierenigma ( C ++ | Java ) Wersja Java jest nowsza.

BurningSand by sieben ( C ++ ) Ten jest bardzo szybki z fizycznego punktu widzenia.

Strona jest niestety bliski śmierci, ale jest kilka wątków tutaj o fizyce.

EDYCJA: Dla każdego zainteresowanego, tutaj uruchomiłem media Java dla EnigmaSand .

Kaczka komunistyczna
źródło
Bardzo mile widziane. Linki są w tej chwili niedostępne. Spróbuję ponownie za kilka godzin.
Marc Müller,
Oni są? Wszystkie działają dobrze dla mnie.
Kaczka komunistyczna
1
Mediafire przesłano i zredagowano w odpowiedzi.
Kaczka komunistyczna
5

Fizyka w tych grach jest symulowana przy użyciu systemu opartego na złożonym automacie komórkowym . Jest znacznie bardziej skomplikowany niż ten używany w, powiedzmy, w Game of Life, i zawiera funkcje, które oznaczają, że prawdopodobnie nie jest to właściwy CA, ale nadal jest stosunkowo prosty do obliczenia i był używany od lat. Nie zagłębiając się w zbyt wiele szczegółów, ale złożoność algorytmu będzie dość mała, być może nawet O (obszar).

Wygląda na to, że jest tam także inteligencja roju, która jest zaskakująco skuteczna, jeśli chodzi o ciekawe efekty, które może stworzyć.

Gregory Avery-Weir
źródło
„i zawiera funkcje, które oznaczają, że prawdopodobnie nie jest to właściwy urząd certyfikacji” ... co przez to rozumiesz? Czy te urzędy certyfikacji różnią się tylko tym, że mają więcej reguł, czy coś więcej?
Gastón
2
Kanoniczny CA ma stan każdej komórki w generacji N + 1 zdefiniowany przez funkcję, która zależy od stanów bliskiego sąsiedztwa komórki w generacji N, a funkcja jest zasadniczo taka sama dla każdej komórki. Wiele gier „w proszku” zawiera rzeczy takie jak boidy lub obiekty fizyki oparte na ograniczeniach, które tak naprawdę nie są objęte tą definicją. Wątpię, czy są one w całości zakodowane jako CA. Nawet jeśli są, w pewnym momencie okolica staje się wystarczająco duża, a funkcja przejścia staje się na tyle złożona, że ​​tak naprawdę nie masz do czynienia z urzędem certyfikacji.
Gregory Avery-Weir
Dobra odpowiedź i komentarz Gregory, dziękuję za twoje spostrzeżenia.
Inżynier
1
Chociaż automat komórkowy może być jego częścią, to zdecydowanie nie jest cała odpowiedź. Tam też jest płynny solver, dzięki czemu wygląda tak „realistycznie”
bobobobo
@bobobobo: Tak, zdecydowanie wykracza poza granice właściwych automatów komórkowych.
Gregory Avery-Weir
3

Wiele lat temu Jos Stam zaczął publikować swój kod źródłowy dla płynnych rozwiązań. Jest bardzo krótki fragment kodu, który tworzy siatkę i bardzo szybko rozwiązuje równania Naviera-Stokesa. Pełne źródło jest również dostępne na jego stronie.

Bobobobo
źródło