Двухмерная сетка моделирования воды / жидкости (на основе плиток платформеров)

У меня есть игра на основе сетки (платформер), где я все построил на тайлах. У меня есть твердые и жидкие плитки. Я пытаюсь найти хороший способ заставить плитки с водой грубо имитировать воду.

На данный момент у меня действующая система: Когда водный тайл добавляется над другим водным тайлом, он добавляет 1 к водному тайлу ниже. Число указывает на давление.

Вот как это выглядит на данный момент:

[0]   <- This water tile has 0 in pressure.
[1]   <- This water tile has 1 in pressure.

если я добавлю еще одну плитку с водой рядом с нижней, она будет искать слева, справа и сверху, есть ли какие-либо плитки с водой, и наследует наибольшее давление вокруг него.

Пример:

[0]
[1][1]

А вот более крупный пример после добавления нескольких плиток с водой:

[0][0]
[1][1][1][1]
[2][2][2][2][2]

Затем я заставляю каждую плитку с водой, давление которой равно или больше 1, пытаться переместиться влево / вправо, если есть свободное место, затем установите давление на 0 и проверьте, может ли он унаследовать давление вокруг себя от соседних плиток с водой, если они есть.

Эта система работает очень хорошо, за исключением случая, когда плитки с водой удаляются сверху.

Если я удалю верхние плитки с водой из последнего примера:

[1][1][1][1]
[2][2][2][2][2] 

Затем у нас есть верхняя строка с давлением 1, там теперь должно быть 0, а в нижней строке должно быть 1.

Есть ли какая-нибудь более умная система, которую я могу реализовать, чтобы сделать это более правильным?

Ниже приведены ограничения:

Каждая плитка может проверять только свои соседние плитки. Плитка может иметь любую определенную функцию. Tile может иметь любую переменную для хранения данных.

Ребята, можете ли вы придумать лучшую систему, которая работает лучше моей?

Обычный тестовый пример, который я делаю:

[]
[] should become [][]

[]
[]
[] should become [][][]

  []
[][][] should become [][][][]

Предполагая, что игра будет работать некоторое время.

Любые предложения приветствуются!

6
задан raRaRa 22 October 2010 в 21:06
поделиться