Создаю алгоритм процедурной генерации карт для будущей игры

Наткнулся я как-то на статью про генерацию игровых миров с помощью алгоритмов на основе шума Перлина и вот что из этого вышло:

5151

Попробуй создать карту большего размера, если хочешь плавности попробуй применить дилатацию и эрозию (Комп зрение). На счёт климатических зон попробуй синусоиды или косинусоиды различные +- норм смотрятся. Я по проц. ген. диплом писал, могу скинуть, там есть интересное всякое(ну или если люди попроси вообще статью напишу >_> )

5
Ответить

Меня особенно раздражают именно микро-точки всякие, которые даже на острова или не тянут.

Как вариант, можно реализовать инструмент magic wand и через алгоритм попиксельно высчитывать площадь получившейся фигуры, и если у неё площадь меньше 5 пикселей например, то просто заливать её в окружающий тип тайлов. Если умно написать алгоритм, с запоминанием уже просканированных зон, этакое кэширование от повторных калькуляций, то весьма быстрый этап получится даже (всё-таки одна из проблем этих генераций что очень много итераций разных циклов).

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

А насчёт статьи: пиши! Диплом скидывать не надо, всё-таки там больше формат воды обычно, и трудно выудить по-настоящему годную информацию. Но сделать какую-то выжимку в виде статьи, плюс может добавить что-то новое если есть, – это круто.

Сам тоже писал про процедурную генерацию, написал свой алгоритм. Но про дилатацию не слышал. Быстрый гуглёж и собственный опыт подсказывает, что с дилатацией будут проблемы и лучше сделать упомянутый magic wand. Либо отказываться от перлин нойза. Насчёт эрозии не знаю… Так что пиши. Тема интересная, буду ждать: подписался.

По поводу того что сам написал, есть небольшое демо (по ссылке ниже). У меня там была куча параметров, но для цели демо оставил только один параметр, размер суши. С микро-островками проблемы не возникло, – хотя никакую дилатацию я не применял. Просто хорошо подобрал параметры генерации. На слабых устройствах демо может медленно работать. Вот статья:

https://jerrygreen.vercel.app/blog/procedural-world-generation

2
Ответить