Маппинг и SDK

KF2 SDK: как изменить стандартное небо для дневных карт

По умолчанию в картах SDK Killing Floor 2 стоит ночное небо. Этот урок мая 2015 года показывает, как собрать собственный экземпляр материала неба, чтобы действие кастомной карты происходило днём. Предполагается, что вы уже умеете собирать карты. Перед началом сохраните карту.

Подготовка

  1. Откройте Content Browser, выберите пакет KFGame и найдите «Sky» с фильтром Static Meshes. Перетащите ENV_Basic_Sky на карту.

ENV_Basic_Sky в Content Browser Найдите ENV_Basic_Sky и перетащите на уровень.

  1. Переключите фильтр на All, щёлкните правой кнопкой в Content Browser и выберите New MaterialInstanceConstant.

Меню New MaterialInstanceConstant Создание MaterialInstanceConstant из контекстного меню.

  1. В диалоге укажите в Package имя вашей карты. Group - имя папки для кастомной текстуры (автор взял Customtexture), Name - любое (автор взял Sky_day). Нажмите OK.

Диалог Package, Group и Name Package, group и name для нового экземпляра.

  1. В Material Editor прокрутите до Parent. Выберите в Content Browser материал M_Procedural_Sky_MASTER02, затем нажмите зелёную стрелку рядом с Parent, чтобы загрузить его. Можно импортировать и свою текстуру.

Назначение родительского материала Зелёная стрелка назначает выбранный материал родительским.

  1. Закройте редактор, щёлкните правой кнопкой по мешу неба и выберите StaticMeshActor Properties (или нажмите F4).

Свойства StaticMeshActor Откройте свойства актора.

  1. Найдите «material». В разделе Rendering найдите Materials (0), нажмите Add a new item, выберите ваш MaterialInstance в Content Browser и нажмите зелёную стрелку (Use selected object). Так вы сможете видеть правки в реальном времени.

Добавление материала на меш Назначьте новый экземпляр материала мешу неба.

  1. Закройте окно, щёлкните правой кнопкой по материалу неба и выберите Edit Using Material Instance Editor.

Edit Using Material Instance Editor Откройте редактор экземпляра.

Редактирование материала неба

Откройте Parameter Groups, там несколько подменю.

  • Своя текстура неба: откройте Texture Parameter Values. Поставьте галочку у Tex2D_Clouds_Diff и выберите импортированную текстуру. Галочка у Tex2d_Cloud_Norm позволяет задать свои нормали. Об импорте текстур - в кастомных текстурах и материалах через SDK.

Texture Parameter Values Параметры текстур для своего неба.

  • Стандартная текстура: правьте Vector Parameter Values и Scalar Parameter Values.

Vector Parameter Values Векторные параметры.

Scalar Parameter Values Скалярные параметры.

Большинство настроек понятны без пояснений, меняйте на вкус. При закрытии Material Editor изменения сохраняются автоматически, и их видно во вьюпорте и в Content Browser.

Результат во вьюпорте Изменённое небо в отрендеренном вьюпорте.

Добавьте подходящий Skylight

Добавьте актор Skylight, если его ещё нет. Положение значения не имеет, поставьте где удобно найти. В левом нижнем вьюпорте выберите режим Lit, чтобы видеть освещение.

Актор Skylight Размещение Skylight и предпросмотр в режиме Lit.

Затем в свойствах откройте Light, Light Component и измените цвет и яркость. Автор менял только эти два параметра, хотя опций больше.

Настройки Light Component Настройки Light Component.

Завершение

Выполните Build карты, затем Publish. Если появится ошибка вроде показанной ниже, нажмите Yes. Всё равно будет работать.

Диалог ошибки публикации Предупреждение при публикации, которое можно принять.

Наконец, запустите игру и проверьте результат.

Результат в игре Дневное небо в игре.

Больше материалов по картам - в руководстве по картам для SDK.

Вопросы и ответы

Какой меш и материал использует урок?
Статический меш ENV_Basic_Sky из пакета KFGame и родительский материал M_Procedural_Sky_MASTER02, обёрнутый в новый MaterialInstanceConstant в пакете вашей карты.
Зачем добавлять Skylight?
Чтобы освещение карты соответствовало созданному небу. Цвет и яркость Skylight меняются в свойствах Light Component, а для предпросмотра переключите вьюпорт в Lit.
Что делать, если при публикации появляется ошибка?
По гайду нажмите Yes в диалоге с ошибкой. Карта всё равно будет работать.