Ищем алгоритм для генерации плоской 2D карты - PullRequest
0 голосов
/ 22 сентября 2010

Я не уверен, что мне нужно «традиционное» генерирование карты высот на основе случайного шума, потому что я хочу закончить очень простой картой, состоящей из двух типов областей.

Конечный результат, который мне нужен, - это очень простая геометрия, разделяющая «сухопутные» участки от «морских» и определяющая, является ли точка влажной или сухой.

В идеале все должно быть процедурным, а не основанным накарты высот, так как я хочу, чтобы карта генерировалась случайным образом и была несколько параметризована.

Ближайшие примеры, которые я могу вспомнить, это генераторы карт в SimCity и Civilization серия, но упрощенная вплоть до 2D с ощущением Defcon .

1 Ответ

0 голосов
/ 22 сентября 2010

Что-то вроде: начать в любой момент.Объявите это высота 0 (пляж).Рекурсивно посещайте каждую смежную точку Север, Восток, Юг и Запад через заливку, проходящую через высоту текущего узла.Добавьте или вычтите некоторое параметризованное, случайное значение (скажем, от -2 до 2).Зафиксируйте значения в минимальных и максимальных общих значениях (скажем, -5 и 20).Повторяйте по размеру вашей карты, игнорируя ранее посещенные узлы.Теперь у вас есть довольно смежная 2D карта высот.Отрицательный рост мокрый.Вы можете поиграть с тем, насколько изменяется высота на узел, а также с минимальными / максимальными общими значениями, чтобы получить больше или меньше суши - океаны и континенты против архипелага и т. Д.

...