Эта функция находится на этапе экспериментальной версии. Вы можете опробовать её, оставить отзыв и узнать, что мы планируем делать с ней дальше. На данный момент нельзя публиковать проекты, в которых используются пользовательский инвентарь и предметы.
Обратите внимание: мы не можем гарантировать обратную совместимость для ресурсов, созданных на экспериментальном этапе. API для этих функций могут меняться, при этом мы можем полностью удалить экспериментальные функции или отдельные их части по своему усмотрению. Прежде чем приступать к работе с этой функцией, ознакомьтесь со списком известных проблем.
В этом уроке вы узнаете, как использовать систему пользовательских предметов и инвентаря со Scene Graph и Verse для создания пользовательского предмета «Ключ-карточка».
После того как вы попробуете самостоятельно создать пользовательскую ключ-карточку, вы сможете настраивать игры с заданиями, в которых необходимо искать ключ-карточки, чтобы открывать разные закрытые зоны. Вот некоторые примеры:
Закрытая комната, в которой находится объект, который необходимо украсть
Следующая область в игре
Сокровище или награды за победу над боссом
Подготовка
Для успешного прохождения этого обучения вы должны быть знакомы с UEFN, Scene Graph и Verse.
Настройка проекта
Выполните следующие действия, чтобы настроить проект и включить систему пользовательских предметов и инвентаря.
Откройте UEFN и создайте проект из любого шаблона острова. Используйте Пустой проект в шаблонах островов, если для начала работы вам требуется плоская область. Придумайте название для нового проекта и нажмите Создать, чтобы открыть его в редакторе.
На панели инструментов нажмите на Проект и выберите Настройки проекта.
Прокрутите вниз до раздела Экспериментальный доступ и установите флажок для параметра Система инвентаря. Так вы включите систему пользовательских предметов и инвентаря.
Создание комнаты
Сначала вам нужно воссоздать комнату из примера. В приведённом примере-демонстрации сравниваются две запертые двери:
На первой двери размещено устройство «Замок», и она открывается с помощью ключ-карточки Fortnite — для этого используется устройство «Кнопка с условием», которое определяет, есть ли у игрока ключ-карточка.
Для открытия второй двери используется пользовательская ключ-карточка вместо существующего предмета «Ключ-карточка» Fortnite, а также код Verse, определяющий, есть ли у игрока пользовательская ключ-карточка.
Для создания комнаты из примера можно использовать следующие ресурсы Fortnite:
Комната: в Каталоге ресурсов выберите Fortnite > Ресурсы набора «Серый ящик» > Демо-версия. В этом примере используются ресурсы DemoRoom.
Демонстрационная кабинка: в Каталоге ресурсов выберите Fortnite > Ресурсы набора «Серый ящик» > Демо-версия. Используйте ресурс DemoDisplay.
Двери:
Дверь в зелёной стене: перейдите в Fortnite > Наборы > Строительство > Набор Брошенных башен (стены N). Найдите Внутреннюю дверь C 02 a8a9d603 (пригород) в конце первой строки.
Дверь в бежевой стене с тёмной отделкой сверху: Внутренняя дверь C 02 a9577d9d (пригород) находится в том же наборе, что дверь выше, но слева.
Стол: выберите Fortnite > Объекты > Супер. Найдите Круглый академический стол A 13a04066.
Настройка устройств
Необходимые устройства:
1 точка появления игроков
2 устройства «Замок»
1 устройство «Кнопка с условием»
2 устройства «Область»
1 устройство размещения предметов (предмет «Ключ-карточка к администрации»)
Настройка двери для ключ-карточки Fortnite
Выберите одну дверь для настройки обычной запертой двери Fortnite. Для настройки устройств для первой двери выполните следующие действия.
Разместите одно устройство «Замок» на стене рядом с дверью. На панели «Сведения» настройте параметры устройства, как показано ниже. Для параметров, не указанных в списке, можно оставить значения по умолчанию.
Настройка
Значение
Пояснение
Отображение в игре
False (флажок снят)
Делает устройство «Замок» невидимым для игроков.
Заперто в начале игры
Заперто
Дверь будет заперта в начале игры.
Скрывать взаимодействие, если заперто
True (флажок)
Подсказка о взаимодействии будет скрыта, когда дверь заперта.
Начальное положение двери
Закрыто
В начале дверь будет закрыта.
В разделе Пользовательские настройки — функции настройте следующие функции для устройства «Замок».
Настроить функции замка можно только после размещения устройства «Область» на шаге 3 ниже.
Функция
Целевое устройство
Событие для привязки
Пояснение
Отпереть
Кнопка с условием
При активации
Дверь открывается при активации кнопки с условием.
Запереть
Область
При выходе
Дверь закрывается, когда игрок выходит из области, настроенной для двери с устройствами Fortnite.
Разместите одно устройство «Область» по центру двери. На панели «Сведения» настройте параметры устройства, как показано ниже. Для параметров, не указанных в списке, можно оставить значения по умолчанию.
Настройка
Значение
Пояснение
Форма области
Цилиндр
Определяет форму области.
Высота области
0,25
Определяет высоту цилиндра области.
Радиус области
х0,9
Задаёт радиус цилиндра области, определяющий, насколько близко или далеко она простирается от места расположения устройства. Желательно установить небольшой радиус, чтобы игроку пришлось подойти вплотную к двери, чтобы войти в область.
Разместите кнопку с условием рядом с дверью, под замком. Настройте параметры, как показано ниже. Для параметров, не указанных в списке, можно оставить значения по умолчанию.
Настройка
Значение
Пояснение
Требуемые предметы-ключи
True (флажок), 1
Выберите этот параметр, чтобы указать, что для выполнения условия требуется предмет-ключ. Введите 1 в поле, чтобы указать, что требуется только одна ключ-карточка.
Предмет-ключ 1
Ключ-карточка к администрации (внутриигровое название) или AGID_CP_Keycard_Agency (идентификатор предмета)
Чтобы выбрать нужный предмет, нажмите на выпадающее меню и введите в поиске «ключ-карточка». Есть несколько предметов «Ключ-карточка», но в данном примере используется предмет «Ключ-карточка к администрации».
В разделе Пользовательские настройки — функции настройте следующие функции для устройства «Кнопка с условием».
Функция
Целевое устройство
Событие для привязки
Пояснение
Активировать
Область
На входе
Когда игрок входит в область для двери с устройствами Fortnite, активируется кнопка с условием. Она проверяет, есть ли у игрока ключ-карточка к администрации.
Подготовка двери для пользовательской ключ-карточки
Выполните следующие действия для настройки устройств для второй двери.
Поскольку параметры для обоих устройств «Замок» одинаковы, вы можете скопировать первое устройство «Замок» и вставить его на уровень. Рекомендуем переименовать второе устройство, чтобы не путать его с первым.
В разделе Пользовательские настройки — функции настройте следующие функции для устройства «Замок».
Эту функцию можно настроить только после размещения точки появления игрока (указать здесь ссылку на этот раздел).
Функция
Целевое устройство
Событие для привязки
Пояснение
Запереть
Точка появления игрока 1
При появлении игрока
Когда игрок появляется на точке появления игрока 1, устройство «Замок» активируется и запирает дверь.
Параметры для обоих устройств «Область» одинаковы, поэтому вы можете скопировать первое устройство «Область» и вставить его на уровень. Рекомендуем переименовать второе устройство, чтобы не путать его с первым.
Подготовка столика для ключ-карт
Выполните следующие действия, чтобы настроить столик с ключ-карточкой Fortnite и вашей пользовательской ключ-карточкой.
Расположите устройство размещения предметов на стороне столика, которая ближе всего к запертой двери, которая функционирует только через устройства.
На панели «Сведения» настройте параметры устройства размещения предметов, как показано ниже.
Настройка
Значение
Пояснение
Список предметов
Ключ-карточка к администрации
Нажмите на значок +, чтобы добавить элемент массива, а затем нажмите на выпадающее меню и введите в поиске «ключ-карточка». Затем выберите предмет «Ключ-карточка к администрации».
Найдите свой пользовательский предмет «Ключ-карточка» в Каталоге ресурсов и перетащите его на уровень. Разместите пользовательскую ключ-карточку на столике на стороне, которая ближе всего к запертой двери, настроенной для этого предмета.
После создания устройства keycard_gameplay_device (указать здесь ссылку), найдите устройство Verse в Каталоге ресурсов и перетащите его на уровень.
Настройка точки появления игрока
Наконец, нужно разместить точку появления игрока. В этом примере вам понадобится только одна точка. Однако, если вы создаёте многопользовательскую игру, выполните следующие действия, чтобы настроить больше точек. Вы можете задать для них другие настройки, в зависимости от атмосферы на вашем острове.
Разместите точку появления игрока там, где игрок сможет сразу увидеть столик и обе двери.
Настройте параметры устройства, как показано ниже.
Настройка
Значение
Пояснение
Отображать в игре
False (флажок снят)
В этом примере точка появления игрока невидима.
После того, как вы подготовите помещение и настроите устройства, можно создать пользовательскую ключ-карточку.
Создание готового элемента «Модуль пользовательского предмета»
В Каталоге ресурсов щёлкните правой кнопкой мыши, чтобы открыть контекстное меню, и выберите Определение готового элемента модуля. В Каталог ресурсов будет добавлен новый готовый элемент модуля Scene Graph.
Переименуйте готовый элемент Item_Keycard.
Перетащите экземпляр нового готового элемента в мир, перетащив его в окно просмотра. После этого его можно будет выбрать на панели «Структура».
Выберите готовый элемент Item_Keycard на панели «Сведения», нажмите +компонент и выберите item_component. Вы можете прокрутить список, чтобы найти этот компонент, или ввести «item» в строке поиска, чтобы сузить результаты и найти его быстрее.
Нажмите +компонент ещё раз и выберите item_details_component. В этом компоненте хранятся текстовые данные об предмете.
В компоненте item_details есть три поля свойств, которые отображаются на панели «Сведения»: Название, Описание и ShortDescription. Введите в эти поля название, описание предмета и краткую описательную метку.
Нажмите +компонент ещё раз и выберите item_icon_component.
На панели «Сведения» разверните item_icon_component. Выберите двухмерное изображение, которое будет отображаться в игровом интерфейсе (например, в инвентаре игрока) и которое будет представлять предмет.
Нажмите на выпадающее меню рядом с плиткой Нет, чтобы открыть контекстное меню, и введите часть названия выбранного изображения в строке поиска. В данном примере используется изображение в формате PNG с названием T_Icon_Keycard.png.
Выберите изображение в результатах поиска.
Нажмите +компонент ещё раз и выберите mesh_component. В этом примере выберите значение Плоскость.
Это позволит добавить к вашему предмету плоскую сетку. В зависимости от настроек эта плоскость поначалу может быть очень большой. Выполните следующие действия, чтобы изменить размер плоскости до размера ключ-карточки.
Выберите инструмент Масштаб на панели инструментов в верхней части окна просмотра. Чтобы перейти к этому инструменту, можно также нажать клавишу R.
Справа от инструмента «Масштаб» нажмите на выпадающее меню, чтобы открыть параметр Готовая настройка коэффициента масштабирования. Установите значение 0,0625. Это позволит уменьшить плоскость до очень небольшого размера, и она станет похожа на ключ-карточку.
Нажмите +компонент ещё раз и выберите fort_item_pickup_component. Добавление этого компонента добавляет полный функционал предметов Fortnite:
анимация подбора и анимация сброса предмета;
взаимодействие для добавления предмета в инвентарь;
виджет предмета по умолчанию, который отображается, когда игрок смотрит на предмет;
отключение сетки предмета при его подборе;
включение сетки предмета, когда он сброшен.
Теперь, когда у вас есть базовый готовый элемент пользовательской ключ-карточки, вы можете создать пользовательский компонент Verse, который сделает этот предмет уникальным, чтобы с помощью кода Verse можно было проверять, открывает ли он определённую запертую дверь.
Создание пользовательского компонента Verse
Обычно в большом проекте с большим количеством файлов кода Verse требуется создать новый файл Verse для пользовательского компонента. Для этого выполните нижеследующие действия.
Поскольку пример для этого урока небольшой, пользовательский компонент keycard_item_component был определён в файле Verse для пользовательского устройства keycard_gameplay_device. Эти шаги описаны в разделе Написание кода на языке Verse для игрового процесса.
После выбора нового предмета «Ключ-карточка» на панели «Сведения» нажмите +компонент и выберите Новый компонент Verse. Откроется окно Создать компонент Verse.
Вы также можете создать компонент Verse, добавив новый файл Verse через проводник Verse.
В разделе Выбрать шаблон выберите Компонент Scene Graph.
В нижней части поля Название компонента введите keycard_item_component. Затем нажмите Создать.
На Панели «Сведения» нажмите +компонент и введите «keycard» в строке поиска. Вы увидите в списке новый компонент Verse. Выберите его, чтобы добавить к пользовательскому предмету «Ключ-карточка».
В строке меню выберите Verse > Проводник Verse. Найдите новый компонент Verse, нажмите по нему правой кнопкой мыши и выберите Открыть в Visual Studio Code.
Написание кода Verse для игрового процесса
Поскольку вы создаёте пользовательский предмет (ключ-карточку) и хотите активировать устройство, когда пользовательская ключ-карточка появится в инвентаре игрока, вам нужно настроить для этого устройство Verse.
В строке меню выберите Verse > Проводник Verse. Проводник Verse откроется на вкладке рядом с панелью «Структура».
В проводнике Verse нажмите правой кнопкой мыши на название вашего проекта и выберите Добавить новый файл Verse в проект, чтобы открыть окно Создать сценарий Verse.
В окне «Создать сценарий Verse» в разделе Выберите шаблон нажмите на Устройство Verse, чтобы выбрать его. В поле Название устройства введите keycard_gameplay_device. Затем нажмите Создать, чтобы создать файл Verse.
Чтобы открыть файл Verse в Visual Studio (VS) Code, дважды щёлкните по новому устройству Verse в проводнике Verse. Убедитесь, что все указанные элементы добавлены в верхние строки кода.
Verseusing { /Fortnite.com/Devices } using { /Fortnite.com/Itemization } using { /Verse.org/Simulation } using { /Verse.org/SceneGraph } using { /Verse.org/Random } using { /UnrealEngine.com/Itemization } using { /UnrealEngine.com/Temporary/Diagnostics }Далее добавьте код, определяющий ваш пользовательский компонент предмета.
Verse# KEYCARD ITEM COMPONENT keycard_item_component := class(item_component) :Мы добавили вспомогательную функцию, которая позволит находить корневой инвентарь целевого агента:
Verse# Helper function that gets the first descendant inventory component from an agent. # This will be the root inventory. GetAgentInventory(Agent:agent)<decides><transacts>:inventory_component= TargetInventory := (for (I : Agent.FindDescendantComponents(inventory_component)) { I })[0]Затем определите пользовательское устройство Verse как подкласс
creative_device. Задайте в нём редактируемое свойство для устройств «Область» и «Замок». Это позволит выбрать конкретный экземпляр устройства «Область» или «Замок» в редакторе (это важно, поскольку у вас два устройства «Область» и два устройства «Замок»).Verse# DEVICE //// GAMEPLAY keycard_gameplay_device := class(creative_device) : # Use a volume_device to be able to check when a player approaches @editable VolumeDevice:?volume_device = false # The lock device is attached to a wall/door prop. This can be activated to lock/unlock the door it is attached to. @editable LockDevice:?lock_device = falseТеперь вы будете использовать этот запрос, чтобы проверять наличие устройства «Область» и подписываться на следующие события этого устройства: При входе агента и При выходе агента.
Verse# Subscribe to the entry and exit events on the Volume to determine when a player/agent approaches. OnBegin<override>()<suspends>:void= if: TargetVolume := VolumeDevice? then: TargetVolume.AgentEntersEvent.Subscribe(OnAgentEntersEvent) TargetVolume.AgentExitsEvent.Subscribe(OnAgentExitsEvent)Далее, нужно проверить инвентарь игрока, чтобы определить, есть ли у него пользовательская ключ-карточка. Это выполняется путём проверки наличия любого объекта с компонентом
keycard_item_component. В этом коде также должен присутствоватьkeycard_item_componentдля открытия устройства «Замок».VerseOnAgentEntersEvent(Agent:agent):void= # Get the inventory from the player that is entering. if(TargetInventory := GetAgentInventory[Agent]): # Check the item in the inventory, if it has the keycard_item_component, proceed for(item : TargetInventory.FindItems(), KeycardComponent := item.GetComponent[keycard_item_component]) # If there is a valid lock_device, then this opens the door. if(TargetDoorLock := LockDevice?):Наконец, если в игре присутствует несколько игроков и у одного из них есть ключ-карточка, с помощью кода можно сделать так, чтобы замок всегда был открыт. Однако, если игрок с ключ-карточкой выйдет из области, замок снова закроется.
VerseOnAgentExitsEvent(Agent:agent):void= # Start by assuming that no one has the required keycard_item_component. var AgentWithKeycardInVolume:logic = false if(TargetVolume := VolumeDevice?): # Get the Agents that are inside the volume_device as an array. for(TargetAgent:TargetVolume.GetAgentsInVolume()): # Use the same check to see if any of the agents in the volume_device have a keycard_item_component.
Вот полный фрагмент кода Verse.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Itemization }
using { /Verse.org/Simulation }
using { /Verse.org/SceneGraph }
using { /UnrealEngine.com/Itemization }
using { /UnrealEngine.com/Temporary/Diagnostics }
# KEYCARD ITEM COMPONENT
keycard_item_component := class(item_component) :