AlRick

AlRick

На Пикабу
443 рейтинг 4 подписчика 63 подписки 2 поста 0 в горячем
Награды:
10 лет на Пикабу За исследование параллельных миров
12

Найден телефон. Новороссийск (хозяин найден)

В г. Новороссийск ул. Южная д. 25 найден телефон.

Если кто-то узнал пропажу и может помочь телефону вернуться к хозяину - напишите, пожалуйста.

Показать полностью 3
4

Сотворение мира не за 7 дней.

Под этим Солнцем и небом я тепло приветствую Вас, мои дорогие подписчики и войны свежего!


Для ЛЛ и просто проходящих мимо:

Данный пост описывает историю создания генератора карт на все случаи жизни, является отчетом о проделанной работе, а также должен мотивировать меня продолжать работу, ибо она еще не закончена. Букв много, многим повествование покажется скучным. Но если будут заинтересованные - продолжу отчеты.


По случаю увлечения настолками типа D&D я столкнулся с небольшой проблемой. Использовать чьи-то готовые карты для игр не всегда интересно, рисовать я, увы, не умею, а водить игроков по интересным локациям хочется. Начались поиски генератора случайных карт, которые привели к выводу, что если хочешь получить действительно удобный инструмент, создающий правдоподобные карты, но не хочешь платить за это - пиши сам. К чему я и приступил.


Началось всё с генерации карты высот.

Перепробовав ряд алгоритмов, было решено остановиться на "Diamond-Square", который давал сравнительно неплохие результаты, но реалистичности им не хватало. Карты были слишком симметричными. Некоторое время и множество правок в коде спустя алгоритм был несколько видоизменен и результаты стали чуть более реалистичными.

Но о какой реалистичности может идти речь, если карта представляет собой голый камень?

Разумеется, карта будет выглядеть гораздо лучше, когда на ней появятся заснеженные вершины, озёра, реки, бескрайние леса и пустыни. А значит путь лежит через генерацию климата.


В качестве входных параметров генератор использует максимальные и минимальные значения температур (условно говоря, экватор и полюс холода), наклон оси (на случай, если мир всё же шарообразный и обращается вокруг звезды), а также минимальную и максимальную широту (на случай, если захочется создать небольшой участок мира).

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


Далее была создана одна из моих любимых частей, генерация рек.

Сначала создается список точек, подходящих для начала реки. Основным критерием является возможность таяния снегов. Далее случайным образом из списка берутся точки и река начинает течь. На первый взгляд всё просто. Проверяем все точки вокруг, находим меньшую, направляем течение туда. Но что же делать, если мы уже в нижней точке, но до большой воды еще далеко? Есть как минимум пара вариантов (если кто пожелает поделиться другими - буду рад обсудить возможные решения в комментариях). Вариант первый, упаднический: Просто считаем, что такого быть не может, убираем эту реку и строим новую из нового источника. Плюсы: получаем красивые реки, которые всегда достигают своей цели. Минусы: никаких горных (и не только горных) озёр.

Вариант второй, ресурсоемкий: Приправа река должна течь. Оказались в нижней точке - заполняем местность, пока не найдется точка перелива, а дальше продолжаем искать путь к нулевой отметке. Плюсы: реалистичные реки, озёра. Минусы: алгоритм на некоторых картах уходит в слишком глубокую рекурсию и, несмотря на все труды по его оптимизации, вызывает старый добрый StackOverflowException, из-за чего приходится генерировать реки в несколько этапов.

Но всем мучениям приходит конец, реки текут, озёра радуют глаз, ветра дуют, а нет, еще не дуют.

Вот теперь дуют. А заодно распространяют влажность по миру.

Алгоритм еще нуждается в крупной доработке, ибо использует только упрощенное направление ветра, вне зависимости от его силы и ландшафта, способного влиять на силу и направление. Также требуется корректировка коэффициентов, отвечающих за испарение с поверхности и выпадение осадков. Но к этому вернемся позже.


Итак, высоты - есть, температура - есть, влажность - есть. Настал час генерации биомов!

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


Если будет интересно - продолжу отчёты по доработке этого генератора (в планах доработка биомов, генерация дорог и городов), а также отчёты о его переделке в 3D.


Спасибо тем, кто дочитал всё это до конца!

Показать полностью 6
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества