Я недавно нашел эти два драгоценных камня:
http://dan-ball.jp/en/javagame/dust/
Мой вопрос: как эффективно обрабатывается физика с таким количеством элементов? Я просто сильно недооцениваю современную вычислительную мощность или возможно «просто» иметь двумерный массив, каждая ячейка которого описывает то, что находится в соответствующей позиции, и моделирует каждую ячейку на каждом шаге. Или же выполняются более сложные вещи, такие как объединение больших областей одного вида в один набор данных и разделение указанного набора по мере необходимости?
Есть ли какие-нибудь игры с открытым исходным кодом, на которые я мог бы посмотреть?
physics
efficiency
Марк Мюллер
источник
источник
Ответы:
Там, конечно, немало; Я использовал их мод. Обратите внимание, что ссылки предназначены для веток форума и загрузок исходного кода. У меня есть два лучших воспоминания:
EngimaSand от xavierenigma ( C ++ | Java ) Java более новый.
BurningSand by sieben ( C ++ ) Этот метод очень быстр с точки зрения физики.
На сайте , к сожалению , близки к смерти, но есть несколько потоков здесь о физике.
РЕДАКТИРОВАТЬ: Для всех, кто интересуется, у меня есть Mediafire Java источник для EnigmaS и здесь .
источник
Физика в этих играх моделируется использованием системы, основанной на сложном клеточном автомате . Он значительно сложнее, чем тот, что используется, скажем, в Game of Life, и включает в себя функции, которые означают, что он, вероятно, не является правильным CA, но его все же относительно просто вычислить, и он использовался годами. Не вдаваться в подробности, но сложность алгоритма будет довольно мала, возможно, даже O (площадь).
Похоже, там также есть некоторый интеллект роя, который также удивительно эффективен для интересных эффектов, которые он может создать.
источник
Много лет назад Йос Стам начал выпускать свой исходный код для флюидных решателей. Существует очень короткий фрагмент кода, который устанавливает сетку и очень быстро решает уравнения Навье-Стокса. Полный источник также доступен на его странице.
источник