Niedawno znalazłem te dwa klejnoty:
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ć?
physics
efficiency
Marc Müller
źródło
źródło
Odpowiedzi:
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 .
źródło
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ć.
źródło
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.
źródło