Порошкові ігри: як вони працюють?


13

Нещодавно я знайшов ці два дорогоцінні камені:

http://powdertoy.co.uk/

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

Моє запитання: як ефективно обробляється фізика з такою кількістю елементів? Я просто сильно занижую сучасну обчислювальну потужність чи можливо "просто" мати двовимірний масив, кожна комірка якого описує те, що розміщується у відповідному положенні та імітує кожну клітинку на кожному кроці. Або робляться більш складні речі, такі як узагальнення великих областей одного типу в єдиний набір даних та відокремлення цього набору за потребою?

Чи є такі ігри з відкритим вихідним кодом, які я можу подивитися?


Я задавав подібне запитання про моделювання піску на оригінальному Stackowerflow Відповіді можуть вам допомогти.
Євген Винник

Відповіді:


5

Там, звичайно, досить багато; Я звик їх модифікувати. Зверніть увагу, що посилання стосуються потоків форуму та завантаження джерел. Дві найкращі спогади про мене:

EngimaSand від xavierenigma ( C ++ | Java ) У Java один новіший.

BurningSand by sieben ( C ++ ) Цей дуже фізичний розум .

На сайті , до жаль , близькі до смерті, але є кілька потоків тут про фізику.

EDIT: Для всіх, хто цікавиться, я маю mediafire'd джерело Java для EnigmaSand тут .


Цінується. Наразі посилання в даний час не працюють. Я спробую ще раз через кілька годин.
Марк Мюллер

Вони є? Вони для мене добре працюють.
Качка комуніста

1
Mediafire завантажено та відредаговано у відповідь.
Качка комуніста

5

Фізика в цих іграх моделюється за допомогою системи на основі складного стільникового автомата . Він значно складніший, ніж той, який використовується, скажімо, у грі життя, і включає в себе функції, які означають, що це, ймовірно, не належний КА, але все-таки порівняно просто його обчислити і є роками. Не вдаватись до занадто багато деталей, але складність алгоритму буде зовсім невеликою, можливо, навіть O (область).

Схоже, там також є якась розвідна розвідка, яка також дивно ефективна для цікавих ефектів, які вона може створити.


"і містить функції, які означають, що це, ймовірно, не належний CA" ... що ви маєте на увазі під цим? Чи відрізняються ці КА лише тим, що мають більше правил чи щось більше?
Гастон

2
Канонічний СА має стан кожної клітини в поколінні N + 1, визначений функцією, яка залежить від станів близького сусідства клітини в поколінні N, і функція, як правило, однакова для кожної комірки. У багатьох «порошкових» іграх є такі речі, як боїди чи фізичні об'єкти, які не підпадають під це визначення. Я сумніваюся, що вони повністю кодовані як КА. Навіть якщо вони є, в якийсь момент околиці набувають достатньо великих розмірів, і функція переходу стає досить складною, що ви справді не маєте справи з ЦА.
Григорій Евері-Вейр

Гарна відповідь та коментар, Григорій, дякую за вашу думку.
Інженер

1
Хоча стільниковий автомат може бути частиною цього, це точно не вся відповідь. Там також є рідина для розрідження рідини, і саме це робить її такою реалістичною
bobobobo

@bobobobo: Так, це безумовно виходить за межі належних стільникових автомати.
Григорій Евері-Вейр

3

Багато років тому Джос Стам почав висувати свій вихідний код для рідинних рішень. Існує дуже короткий біт коду, який встановлює сітку і вирішує рівняння Нав'є-Стокса дуже швидко. Повне джерело також доступне на його сторінці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.