Генератор землеподобных планет на Godot
Всем привет! Начал осваивать Godot и в качестве пробы пера делаю генератор планет, похожих на нашу Землю. Вот примерные результаты творчества:
Исходными данными для построения планеты являются следующие данные: Зерно генератора случайных чисел (в моем случает это номер орбиты), количество тепла, поступающего от солнца (SunEffectKoef [0-10]), количество жидкости на планете (WatersKoef [0-10]), сейсмическая активность (SeismicKoef[0-10]). Для ускорения расчетов карта планеты имеет размер 128х64. Стоит отметить, что маленький размер карты планеты обусловлен необходимостью в большом количестве расчётов, особенно это касается вычисления влажности и расчёта сейсмически активных зон. И чтоб как то сохранить реалтайм пришлось ужаться в такие размеры.
Тектонические плиты
Карта тектонических плит имеет еще меньший размер 32х16. первым этапом по планету псевдослучайным методом раскидываются изначальные точки плит, затем в цикле они растут во все стороны. Когда свободных ячеек не остается, то карта детализируется до размера 128х64 при помощи алгоритма Diamond-Square. Получаются очень "географические" очертания.
Сейсмическая карта
Сейсмическая активность каждой точки зависит от общего коэффициента SeismicKoef и увеличивается на границах между созданными ранее тектоническими плитами. Такие границы будут основой для создания горных хребтов.
Карта высот
Высота поверхности зависит от того, является ли плита океанической либо материковой (коэффициент WatersKoef), а также от текущего уровня сейсмоактивности.
Температура
С температурой все просто. Чем больше солнца на планете (SunEffectKoef), тем жарче . Чем больше высота, тем холоднее.
Влажность
Влажность распространяется путем испарения от океанов с учетом особенностей рельефа, воздушных течений и других факторов.
Биомы
Биомы определяются по классической отработанной схеме, зависящей от температуры и влажности. Схема старая, популяризованная еще Нотчем в майнкрафте, поэтому останавливаться на ней не буду, просто перечислю местные биомы:
{BIOM_JUNGLES, BIOM_SWAMP, BIOM_SEASONALFOREST, BIOM_FOREST, BIOM_SAVANNA, BIOM_WOODS, BIOM_TAIGA, BIOM_DESERT, BIOM_PLAINS, BIOM_TUNDRA, BIOM_ICEPLAINS, BIOM_HOTWATER, BIOM_WARMWATER, BIOM_COLDWATER, BIOM_ICEWATER}
Карта со спутника
Сопоставив карту биомов земли со спутниковой картой, я подобрал примерные цветовые схемы и дорисовав сверху карту облаков, получил примерные изображения новых планет. Кстати, плотность облаков зависит от количества жидкости на планете.
Здесь показаны возможные изменения параметров при фиксированном зерне генератора:
А тут различные варианты зерна генератора (seed) при фиксированных параметрах, близких к земле:
Спасибо за внимание! Дальше буду делать построение региона на основании карты планеты методом diamond square.
Лига Разработчиков Видеоигр
9K постов23.1K подписчика
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"