Как работает генерация структур в Minecraft? ⛰ | День 78
Недавно решил посмотреть как устроен современный генератор мира и структур в Minecraft, оказывается многое изменилось со времён 1.16.5, когда я последний раз его анализировал :D (именно полноценно, а не просто по гайду структуру добавить и пару циферок в конфиге поменять)
И на удивление нет ни одного нормального ролика или статьи на эту тему, придётся сделать это самому... По сути все генерация сводится к 4 этапам:
Этап 1: Математика
Шум Перлина: Для каждой точки (x,z) вычисляются абстрактные параметры: Температура, Влажность, "Континентальность", Эрозия.
Выбор Биома: Игра смотрит в таблицу: "Тут жарко и сухо? Значит, будет Пустыня". Биом назначается региону, но блоки ещё не ставятся.
Планирование Структур (Structure Placement):
- С некоторым шансом и при определённых условиях игра решает: "Здесь будет центр Деревни".
- Берётся структура, собирается её полноценный вариант (все домики и трапинки в деревне) и вычисляются её размеры (BoundingBox).
- Важно: В чанк записывается невидимая метка StructureStart ("Здесь занято!"), но физически в мире всё ещё пустота. (Но это позволяет использовать команду /locate или даже визуализировать размеры структуры при наличии определённых модов)
Этап 2: Формирование Ландшафта
Расчет высоты: Генератор спрашивает: "Какой высоты тут должна быть гора?".
Вмешательство (страшная штука под названием Beardifier):
- Если рядом есть метка структуры (из Этапа 1), Beardifier говорит: "Стоп! Тут должен быть дом, тут нужно сглаживание".
- Шум плавно искажается под структуру. (Примерно как в видео)
Базовая заливка: Только сейчас пространство заполняется базовыми блоками (Камень, Глубинный сланец, Вода) согласно форме ландшафта.
Этап 3: Резьба и Покраска
Карверы: Специальные черви-алгоритмы прогрызают в камне пещеры и каньоны. Они, наоборот, удаляют блоки.
Обычно они настроены не трогать места, помеченные как Структура. Чтобы вдруг посреди данжа не появилось пещеры))
Поверхность: Верхние слои камня заменяются на блоки биома (Трава, Песок, Снег, Мицелий).
Этап 4: Наполнение
Только теперь игра берет тот виртуальный план из Этапа 1 и физически ставит доски, стены, сундуки, заменяя собой воздух или камень.
Декорации (Features):
Генерируются руды, деревья, цветы. Причём самое забавное, что те же руды вполне могут заменить блоки камня в структуре, так что имейте это ввиду :D
Перед спавном дерева игра проверяет: "Я не внутри структуры?". Если внутри - дерево не растет.
Ну и уже потом, когда мир начинает тикать, начинают спавниться мобы, тикают блоки и т.п.
Я конечно многое упростил, поскольку этапов так немножко больше:
empty → structure_starts → structure_references → biomes → noise → surface → carvers → liquid_carvers → features → light → spawn → full
Но думаю и так тема не самая простая, пока что остановимся и на этом 🙃
P.S. Ролик с подстановкой окружения под структуру не поместился, так что отправлю следующим постом
Post #171
676
- ❤ 2
- 🔥 2
- 👀 1