Создание пользовательских локаций — различия между версиями
VolgaIgor (обсуждение | вклад) (→Логика передвижения танковых ботов) |
VolgaIgor (обсуждение | вклад) м (Защитил Создание пользовательских локаций ([Редактирование=Разрешено только администраторам] (бессрочно))) |
(нет различий)
|
Текущая версия на 15:38, 25 мая 2018
Содержание
Создание и проверка локаций
Локации создаются с помощью редактора daeditor. Чтобы создать новую локацию, необходимо скопировать имеющийся пример (location_sample) с новым названием (например my_location) и переименовать файл locations_sample.level.blk в my_location.level.blk. Описание возможностей по редактированию локаций предмет отдельной статьи. Кратко опишем основные возможности:
- редактирование карты высот кисточками
- автоматическое и ручное раскрашивание ландшафта
- использование сплайновых объектов (дороги, с растущими вокруг деревьями; телеграфные линии; заборы; прибрежные линии и тд и тп), а также различные возможности модифицировать сплайнами ландшафт
- расстановка объектов вручную (таких как например аэродромы замки, скалы или порты). Объекты расставляемые вручную бывают нескольких типов - эффекты, rendinstances, prefabs, composits.
После того, как вы создали\модифицировали локацию, необходимо отэкспортить её в игру, в папку content/pkg_local/levels/my_location.bin. Если вам необходимо сделать доступной локацию, созданную другим пользователем, необходмо поместить её в папку content/pkg_user/levels/my_location.bin Для того, чтобы локация работала в игре ей необходим также Location configuration file (файл настроек) - my_location.blk, который необходимо разместить рядом с отэкспорченным уровнем. Как правило, для уровня также нужна карта. Настройки вывода карты и её название также лежат в конфигурационном файле уровне.
Для того, чтобы запустить вашу локацию в игре необходима миссия, которая бы работала на вашей локации. Вы можете модифицировать любую миссию в папке UserMissions (например - test_location_sample.mission.blk) вписав в блок mission_settings->mission в поле параметра level имя своей локации, например так level:t="levels\my_location.bin". Теперь достаточно выбрать модифицированную вами миссию в User Missions в игре, и если всё было сделано правильно, то вы окажитесь на своей локации в игре.
Подробнее о функционале редактора локаций читайте в статье.
Логика передвижения танковых ботов
В наземных миссиях необходимо понимать, как ездят танковые боты. Для передвижения по ландшафту специально рассчитывается при экспорте миссии так называемый navigation mesh. Это специальная геометрия, в пределах которой работает навигация у танковых ботов. Если этот меш где-то отсутствует, то бот туда проехать не сможет. В редакторе миссий вы можете посмотреть на него, выбрав кнопку в плагине Scene view. Он изображается красными треугольниками поверх существующего ландшафта и по умолчанию включен.
В редакторе локаций для выгрузки навигационного меша предусмотрено отдельное окошко.
После нажатия кнопки Build nav mesh создаётся визуальная модель, которую можно оценить во вьюпорте. Если он вас устраивает, можно убедиться, что включена галка Export nav mesh, и выгрузить локацию в игру.
Важно понимать, что навигационный mesh создаётся только вокруг сплайнов, у которых это указано в свойствах.
Microdetail
Добавлено с выходом обновления 1.77 “Буря”, Dagor Engine 5.0 и обязательно к использованию. |
Текстуры microdetail_* отвечают за микрофактуры на разных типах поверхностей (без них поверхности отображаются некорректно). Их всегда двенадцать на уровень (не больше и не меньше).
Для их работоспособности в файл настроек уровня или пользовательского ангара my_level.blk необходимо вписывать дополнительную информацию об этих текстурах. А в файл лендклассов (файлы с суфиксом *.land.blk) необходимо прописывать tex_r.
Также у текстур детализации (detail_*) добавились новые свойства, которые находятся в дополнительных файлах под названием tex_r (имена полностью совпадают вплоть до суффикса tex_d, см. пример ниже).
Дополнение в level_name.blk / my_sample.blk
Необходимо прописать блок, добавляюший 12 microdetail на уровне (можно взять прямо из примера) в ваш основной файл настроек уровня или пользовательского ангара my_level.blk
В WarThunder\content\pkg_local\levels\location_sample.blk он уже прописан.
Пример:
micro_details{ micro_detail:t=microdetail_stone_a_tex_n micro_detail:t=microdetail_sand_c_tex_n micro_detail:t=microdetail_sand_a_tex_n micro_detail:t=microdetail_soil_a_tex_n micro_detail:t=microdetail_generic_granules_a_tex_n micro_detail:t=microdetail_grass_a_tex_n micro_detail:t=microdetail_forest_floor_a_tex_n micro_detail:t=microdetail_fabric_a_tex_n micro_detail:t=microdetail_wood_b_tex_n micro_detail:t=microdetail_metal_a_tex_n micro_detail:t=microdetail_snow_a_tex_n micro_detail:t=microdetail_generic_granules_a_tex_n land_micro_details_uv_scale:r=0.73 }
Текстур microdetail в списке всегда должно быть 12.
Первые четыре текстуры в списке отвечают за фактуры на ландшафте (разные грунты, асфальтовые дороги, бетонные плиты и фактура на камнях).
Последние четыре (т.е. с 8 по 12) отвечают за фактуры на объектах окружения (метал, дерево, брезент, пластик).
Текстуры слотов с 5 по 8 дают микродетализацию на более уникальные для уровня поверхности (лёд, снег, мох на камнях, опавшие листья под деревьями и т.д).
Посмотреть, какие текстуры вы можете использовать, можно в assetviewer путём набора в Filter: microdetail_
Лендклассы
Для используемых на уровне лендклассов *.land.blk нужно добавить строки с tex_r. В WarThunderCDK\develop\assets\landclasses\test_editable_land.land.blk он уже прописан.
Пример для блока detail:
Был
detail { texture:t="avg_karpaty_pass_detailed_part_tex_d" splattingmap:t="avg_karpaty_pass_detailed_part_tex_m" detailRed:t="detail_rocks_tex_d" detailGreen:t="detail_grass_small_tex_d" detailBlue:t="detail_grass_moss_tex_d" detailBlack:t="detail_dirt_tex_d" detailSizeRed:r=17.71 detailSizeGreen:r=18.52 detailSizeBlue:r=11.71 detailSizeBlack:r=11.11 detailSize:r=8 size:p2=2048, 2048 offset:p2=0, 0 }
Должен стать
detail { texture:t="avg_karpaty_pass_detailed_part_tex_d" splattingmap:t="avg_karpaty_pass_detailed_part_tex_m" detailRed:t="detail_rocks_tex_d" detail2Red:t="detail_rocks_tex_r" detailGreen:t="detail_grass_small_tex_d" detail2Green:t="detail_grass_small_tex_r" detailBlue:t="detail_grass_moss_tex_d" detail2Blue:t="detail_grass_moss_tex_r" detailBlack:t="detail_dirt_tex_d" detail2Black:t="detail_dirt_tex_r" detailSizeRed:r=17.71 detailSizeGreen:r=18.52 detailSizeBlue:r=11.71 detailSizeBlack:r=11.11 detailSize:r=8 size:p2=2048, 2048 offset:p2=0, 0 }
Всё прописываем по аналогии: добавляем detail2 и в конце tex_d меняем на tex_r.
Посмотреть, какие текстуры вы можете использовать, можно в assetviewer путём набора внизу слева в Filter: detail_