Гайд по созданию карты Bannerlord (Часть 1)
Приветствую, мододелы Баннерлорда! Я наконец-то смог найти время и перевести этот крупный гайд. В этом гайде вы научитесь, как делать карту в Баннерлорд.
Для каждого мода полной конверсии нужна собственная карта кампании. Taleworlds выпустили свои внутренние инструменты, чтобы помочь мододелам создавать новые миры или заново изобретать Кальрадию.
Лучшим примером мира Bannerlord является ../Modules/SandBox/SceneObj/Main_map. Пожалуйста, проверьте это в своем редакторе сцены.
В этих примечаниях предполагается, что вы знакомы с редактором сцены и документацией Taleworlds.
Ваше первое решение - создать новую сцену или отредактировать Main_map.
Чтобы использовать ваш мир в игре, он должен называться Main_map, который затем переопределяет карту Кальрадии. Автор бы порекомендовал отредактировать карту Main_map Кальрадии по следующим причинам:
1. Существующие поселения доступны для перепозиционирования.
2. Необходимые объекты для сцены уже настроены.
3. Необходимые протокольные карты уже настроены.
4. Вы не ограничены масштабом или схемой раскраски карты Кальрадии.
Тем не менее, автор также рекомендует, когда вы сохраняете карту в папку SceneObj вашего мода, вы даете ей новое название во время создания и переименовываете ее в Main_map только тогда, когда вы, наконец, сможете протестировать ее в игре.
Это необратимый шаг, который удаляет сетку ландшафта и слои краски Main_map, но оставляет поселения, ресурсов и навигационную сетку нетронутыми для модификации.
Перед созданием нового ландшафта вам необходимо указать New Terrain Properties:
Все сцены создаются в сетке узлов, что позволяет создавать различные уровни детализации (LOD) в окружающих узлах, оптимизируя производительность.
X и Y - количество узлов, которые должны быть созданы на каждой 2D-оси. Размер одного узла - это длина каждой стороны квадратного узла в метрах (или игровом эквиваленте). Размер одного узла представляет собой количество вершин, которые будут использоваться с каждой стороны каждого узла для создания вашей сетки ландшафта.
Размер карты Кальрадии составляет 16x16 узлов, 53 метра в длину и 256x256 вершин. Таким образом, его сетка была сгенерирована с использованием 4096x4 096 вершин (16 x 256 = 4096), что позволило высоту карте 4K импортировать один пиксель данных о высоте в каждую вершину. Размер растягивает эту треугольную сетку на 848 х 848 метров (16x53 = 848).
Метры - игровой эквивалент в обычной сцене миссии. Карта мира составляет треть этого размера (то есть значок карты мира игрока будет втрое меньше размера его персонажа в сцене). Таким образом, по горизонтали, с точки зрения человека, Кальрадия на самом деле составляет всего 2,5 км x 2,5 км (848x3 = 2544), но символически представляет собой континент. Это делает спутниковую высоту карты неудобными на картах мира, поскольку любой горный хребет должен иметь высоту в несколько миль, чтобы соответствовать значку игрока и символической карте.
Как масштабировать карту? Следует учитывать множество факторов, в том числе этих:
Форма - автор рекомендует квадратную карту, чтобы она соответствовала внешней границе сетки Main_map, и потому что у автора были проблемы с рендерингом текстур Vista на неквадратных картах.
Вершины - один из пользователей рекомендует от одной до двух вершин на метр для оптимизации производительности (т.е. размер одного узла составляет 53x53 или 106x106 для карты Кальрадии). В то время как другой пользователь создал Кальрадию с использованием 256x256 для увеличения геометрии художественного ландшафта (т.е. 256/53 = 4,83 вершины на метр). Выбирайте.
Узлы - заданный максимум - 16x16 узлов.
Размер - технически узлы могут быть любой длины, но могут растягивать такое же количество полигонов сетки в большие треугольники, слишком грубые для лепки.
На этих скриншотах показаны два уменьшенных вида Кальрадии:
Точка A показывает свою белую сетку 16x16 игровых узлов в центре. Точка B показывает компоненты своей недоступной outer_mesh, которые обеспечивают визуальные горизонты и непрерывность. Под ними обоими находится круглый водный стол.
Автор считает, что уровень грунтовых вод - это жестко запрограммированный размер, который вполне подходит для Кальрадии, но может ограничивать размер других карт мира. Однако он не фиксируется на месте, а по центру камеры.
Это означает, что вода всегда будет отображаться в пределах определенного радиуса с точки зрения камеры. На уровне земли она никогда не будет ограничивающим фактором в масштабе. Тем не менее, игроки могут летать над картами мира, принимая во внимание вид, и в таких случаях уровень грунтовых вод должен обеспечивать водой все океаны вашей карты.
Outer_Mesh карты Кальрадии более чем в 8 раз больше по площади, чем игровая карта, и окружает ее границей, немного шире, чем она сама. Хотя это красиво, она может быть излишним, если размер вашей карты визуально скомпрометирован в летающем режиме из-за размера зеркала грунтовых вод.
Она существует полностью вне навигационной сетки, чисто для эстетики. Однако карта мира без границы нарушает погружение, позволяя игрокам добраться до края плоского континента и заглянуть в бездну.
Эта граница состоит из 32 сеток worldmap_outermesh_00 - _31, которые легко сочетаются друг с другом. Одна сетка вызовет проблему с производительностью.
Как это можно использовать с совершенно другой картой мира? Нужно ли его утилизировать и заменять с нуля?
Желательно нет, поскольку создание нового outer_mesh было бы крупным проектом:
1. Если ваш мир квадратный, outer_mesh можно масштабировать, чтобы подогнать под него, не искажая ни один из его компонентов.
2. Проблемные части outer_mesh можно отредактировать во внешнем пакете 3D-моделирования, чтобы подтолкнуть их под воду, где они не видны.
3. После того как вы измените масштаб и выровняете outer_mesh на новую карту, неопознанный скрипт привяжет граничную область к той же высоте, что и ваша карта, и грубо имитирует контуры на краю вашего мира для визуальной непрерывности.
outer_mesh визуализируется материалом worldmap_outermesh:
Для пробного размера карты давайте установим новые свойства ландшафта: 16x16 узлов, 104 метра на узел и 512x512 вершин (в четыре раза больше площади Кальрадии).
Затем выберите «Создать ландшафт» в Property_browser.
И подтвердите значение по умолчанию для базового слоя краски. Это создает плоскую сетку, которую можно увидеть, выбрав все узлы (Ctrl + A):
Ландшафты в карте Кальрадии видны в нижнем левом квадранте, а внешняя сетка не сдвинулась.
Изменение масштаба и выровнивание Outer_Mesh:
Намного проще изменить масштаб и выровнять outer_mesh Калрадии по вашей новой карте, пока она плоская:
Здесь X и Y были увеличены с 1 до 1,96 и перемещены с 424 на 832, что дает небольшое перекрытие по краям.
Крупным планом, даже несмотря на то, что карта плоская и не имеет слоев рисования, она все равно выглядит как Кальрадия:
Потому что ландшафт текстурирован неизменным набором Vista.
Что можно изменить следующим образом:
Установите для имени тайлсета значение none, импортируйте вашу собственную текстуру Vista в формате pgn и присвойте ей plain_white Detail Albedo, чтобы сделать ее видимой. Переключение с тайлсета на текстуру никогда не бывает легким.
Возможно, вам придется переключить режим смещения на «Нет» и обратно для умножения, чтобы редактор зарегистрировал это изменение.
Текстура Vista обеспечивает большую часть цвета вашей карте мира - посмотрите на Main_map, все его слои краски, кроме рек, прозрачны. Автор считает, что набор тайлов Worldmap использует текстуру main_map_area 16K, которую стоит изучить. Он помечен как ландшафт, хотя инструменты обычно не позволяют использовать эту метку для текстур больше 2K.
Для использования тайлов высокого разрешения, вероятно, потребуется внешнее программное обеспечение. Итак, на карте мира 16x16 узлов следующий лучший вариант - использовать нашу собственную текстуру 16K.
Звучит громоздко, но эффективно обеспечивает разрешение 1K только для любого узла, через который проходит игрок. Тем не менее, он значительно превосходит текстуры рельефа уменьшенного размера, повторяющиеся мозаики которых создают на ландшафте узоры, нарушающие погружение.
Любая используемая текстура может быть только отправной точкой и потребует редактирования фотографий, чтобы улучшить ее по мере развития вашего мира. Используемая визуальная текстура была взята отсюда.
Исходная высота карты, которую автор импортировал, была 8K, но если экспортируете ее после изменений, редактор сцены понизит ее до 4K.
Для ландшафта узлов 16x16 с вершинами 512x512 на узел вам понадобится высота карты 8K, чтобы сопоставить каждый пиксель с вершиной. Если вы используете нескорректированную карту высот Европы с уровнем грунтовых вод Баннерлорда, правильный уровень моря поместит части Голландии и Восточной Англии под воду. Соответственно, автор считает полезным использовать маску земли/воды, чтобы затемнить морские районы и гарантировать, что земля ниже уровня моря не затоплена.
Найти карту 8K с точной областью, которая вам нужна, может быть непросто. В качестве альтернативы вы можете найти 16-битную карту высот ЦМР размером 10 800 x 5 400 пикселей и маску земли / воды размером 16 200 x 8 100 пикселей здесь. Их можно использовать для вырезания и масштабирования исторических карт кампании для разных частей нашей планеты.
Перейдите в Terrain Property_browser, выберите все узлы (Ctrl + A) и импортируйте высоту карты.
Затем вам будет предложено ввести масштаб. Автор считает, что это должно быть расстояние в метрах между самой высокой и самой низкой точкой на вашей карте. Однако внешние карты, импортированные в редактор, похоже, имеют масштаб, который отличаются от редактора сцены. Автор использовал шкалу 60, чтобы получить альпы выше 20 метров (помните, что при масштабе одной трети рост игрока составляет всего две трети метра).
Если затем вы экспортируете высоту карты без каких-либо изменений, редактор откалибрует другой масштаб и смещение, которые отображаются красным цветом в нижнем левом углу экрана:
Автор может только предположить, что начальный масштаб 60 связан с расстоянием между чистым белым и абсолютным черным, хотя такие крайности никогда не присутствуют в высоте карты в градациях серого.
Каждый раз, когда вы экспортируете высоту карты из редактора, важно записывать ее последний масштаб и смещение, иначе повторный импорт с неправильными настройками может исказить геометрию в неровные террасы и оставить ваши поселения над или под землей.
Сетка ландшафта, созданная для вашего высоты карт, обеспечивает ее трехмерную топографию и родительские слои для ваших слоев рисования. Помните, что удаление ландшафта Кальрадии приводит к удалению всех слоев краски.
Неизмененные спутниковые высоты карт не могут стать жизнеспособным ландшафтом карты мира, поскольку игровая карта использует искаженный вертикальный масштаб, превращая горы в пики высотой в несколько миль:
Их нужно сгладить и вылепить или заменить. Размытие карты высот перед импортом должно выполняться только для горных районов, иначе ваша карта высот будет мягкой. К сожалению, нам нужно усилить топографию низменных участков, чтобы они не стали плоскими и невыразительными, и в то же время размыли/сгладили горы от шипов до гребней. Естественно, эти цели соперничают.
Растягивание оси высоты Z до игрового масштаба вытягивает вершины из пропорциональной зависимости от их координат X и Y, создавая неровные террасы, которые показывают лежащую под ними треугольную сетку ландшафта:
Повсюду необходимо сгладить (или слегка размыть), чтобы удалить артефакты, нарушающие погружение. Для обычных сцен миссии это никогда не проблема, поскольку координаты X, Y и Z всегда сохраняют свои отношения в реальном мире.
Теоретически исходный базовый слой краски закрепляется внизу любой стопки слоев краски. Однако есть редкая ошибка, связанная с перетаскиванием слоев, которая может это нарушить.
Базовый слой - это единственный слой рисования, который закрашивает всю карту по умолчанию, дополнительные слои по умолчанию не окрашиваются. При генерации ландшафта авторы приняли формат редактора по умолчанию, что привело к неприятному шаблону проверки.
Чтобы изменить это, дважды щелкните слой краски и измените его летние компоненты, чтобы они соответствовали настройкам, используемым Main_map:
Установка лета в слое краски также обновляет другие сезоны, в отличие от сеток флоры слоя, которые должны быть скопированы с лета (поскольку флора может меняться в зависимости от сезона).
Этот слой, как и другие слои краски Main_map (кроме Rivers), является прозрачным, добавляя световые тени, неровности карты нормалей и световые эффекты, чтобы детализировать цвета фона Vista Texture.
Если вы используете обычную сцену DiffuseMap, рельеф становится темным и давящим:
На картах мира используется техника смешивания красочных слоев, который отличается от обычных сцен миссий.
Bannerlord использует систему плоского уровня моря, которой нужна карта высот для определения глубины вашего океана. Когда вы регенерируете местность, этот уровень воды автоматически сбрасывается до -100 метров, поэтому он скрыт под землей на скриншотах выше.
Откройте раздел с водой в параметрах сцены и измените уровень на что-нибудь подходящее:
Растягивая ось Z, мы потянули разделение суши и моря текстуры Vista над уровнем моря, показывая белые края. Вам нужно будет отредактировать текстуру Vista и повторно импортировать ее, чтобы исправить это.
Осмотрите 16K текстуру main_map_area Кальрадии:
Он показывает, как TaleWorlds улучшили окраску своего моря. Вам нужно неглубокое прибрежное морское дно, которое постепенно ползет, чтобы цвета Vista сверкали в вашем шейдере волн.
Текстура worldmap_wave_map используется для FoamDirection в материале wat_main_map_ocean_g:
Шейдер water_surface использует данные этого красного канала для создания пены из разбивающихся волн вдоль береговых линий вашего мира. Черный - это земля, белый - глубокий океан, а размытая область - это место, где образуется пена вдоль побережья Кальрадии.
Если вы не отредактируете это, чтобы отобразить свой мир, у вас будут странные узоры пены, где кусочки береговой линии Кальрадии перекрывают ваши моря.
Ландшафт на карте мира символичен. Автор использовал 1664 игровых метра (16 узлов x 104 метра), чтобы представить приблизительно 3000 миль по осям X и Y. Если бы масштаб Z был совместим, ваш значок игрока в масштабе одной трети был бы высотой 1,2 мили. Чтобы он чувствовал себя как дома и не нарушал погружение игрока в игру, ваши горы должны использовать аналогичную вытянутую ось Z. Это делает недопустимыми выбросы, генерируемые нашей спутниковой высотой карты.
Main_map превращает горные хребты в пологие линии хребтов. Альтернативный подход - использовать меньшее количество делегатных гор для изображения альпов. Это можно сделать путем лепки в редакторе сцены или во внешнем программном обеспечении. Taleworlds не рекомендуют использовать редактор сцен, и они использовали Houdini для карты Кальрадии.
Если автор будет придерживаться редактора сцены, им нужно смешать множество маленьких гор в гребни или сгладить их и заменить их несколькими большими, используя кисти ландшафта.
ЧАСТЬ 2 - Здесь
ЧАСТЬ 3 - скоро
Комментариев 2
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.