Путешественник по игровым мирам

Как Pax Dei собирает свой мир из кусочков

В докладе на Everything Procedural Conference ведущий теххудожник Pax Dei Ийту Мартола показывает, как маленькая команда из пяти человек собирает огромный MMO-мир не вручную, а через умный процедурный конвейер на Houdini и Unreal 5.4.

Мир вдохновлён югом Франции и разбит на регионы, провинции по 10×10 км и ячейки по 2×2 км — каждая такая «долина» в терминах движка это отдельный уровень Unreal, который генерируется заново из набора карт и таблиц, когда разработчики нажимают кнопку в своём оркестраторе сборки Bro.

С технической точки зрения долины Pax Dei начинаются с грубого скульпта рельефа (где горы, где низины и большие озёра), затем поверх него накладываются данные из QGIS-карты: расположение поселений, дорог, озёр, биомов и серверных зон. Высотное поле дорабатывается нейросетями и эрозией, а средний масштаб (камни, буераки, кочки) решается через систему biome tiles — библиотеку шестиугольных плиток с вручную расставленными объектами, которые адаптируются под местный рельеф. Для линий — дорог, берегов, стен — используется похожая система «линейных тайлов»: заранее собранные отрезки дороги/берега деформируются вдоль настоящих контуров мира.

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

Интересных фактов в докладе много: все параметры мира живут в Google Sheets, мир можно пересобрать хоть целиком за ночь, а крупные точки интереса — города, руины, лагеря — это отдельные рукотворные уровни, которые «врезаются» в рельеф по отпечатку-маске. Переходы между провинциями реализованы как ворота в горах с загрузочным экраном, а внутри одной провинции игрок на самом деле незаметно прыгает между несколькими Unreal-серверами, чтобы выдерживать MMO-нагрузку.

В конце Мартола честно рассказывает и о проблемах: world partition до недавних версий Unreal постоянно портил жизнь, генератор не видит содержимое ассетов уровней, а любая мелкая правка в начале пайплайна по эффекту бабочки может заметно перекроить финальный ландшафт. На этом фоне становится понятнее, почему даже «простой» баг вроде деревьев, прорастающих через постройки, на практике упирается не в один флаг, а во всю сложную цепочку модулей, масок, скаттера и повторной генерации мира — чинить это аккуратно в уже живой игре действительно непросто.

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

См. также:

Дальше