В игре на устранение на базе Verse игроки во время сражения используют раскладку, которая изменяется с каждым устранением. Эта механика достигается путём привязки таких устройств, как устройство выдачи предметов, к устройству Verse.
В этом расширенном шаблоне Verse используются следующие API Verse:
Контейнерный тип карты
Массивы
Подписка на событие устранения Fort_character
Обзор
Создайте новый проект и измените настройки острова, чтобы подготовить игру.
Настройте устройства.
Добавьте сценарий Verse.
Создание нового проекта и настройка игры
Откройте UEFN и создайте новый пустой проект.
Выберите устройство IslandSettings в окне Структура и найдите Пользовательская настройка — Правила игры.
Задайте пользовательские настройки, как показано ниже.
| option | Значение | Пояснение |
|---|---|---|
Предметы устранённого игрока | Сохранить | Игроки будут возрождаться с прежней раскладкой. |
Разрешить сброс предметов | False | Игроки не смогут выбрасывать предметы из инвентаря во время игры. |
Урон окружению | Выкл. | Окружение не будет получать урон во время игры. |
Настройка устройств
В этом уроке используются следующие устройства:
Устройство выдачи предметов
Используйте устройство выдачи предметов, чтобы выдавать оружие игрокам. После подключения устройства выдачи предметов к устройству Verse путём прямой привязки события сценарий Verse будет изменять порядок выдачи оружия случайным образом и выдавать оружие при каждом устранении.
Вы можете использовать любое количество устройств выдачи предметов. Игра будет масштабироваться соответствующим образом при условии привязки этих устройств к массиву устройств Verse.
На Панели ресурсов зайдите в Fortnite > Устройства и перетащите устройства выдачи предметов на карту.
Задайте для этого устройства следующие Пользовательские настройки:
| option | Значение | Пояснение |
|---|---|---|
Определение предмета | выбор оружия | Выберите одно уникальное оружие на каждое устройство выдачи предметов. |
Устройство завершения игры
Используйте устройство Завершение игры, чтобы закончить раунд при выполнении условий. По выполнении определённого количества устранений сценарий Verse активирует это устройство для завершения раунда.
Для данного устройства необходимо оставить настройки по умолчанию.
Точка появления игрока
Используйте точки появления игроков, чтобы переносить игроков на карту. Распределите эти устройства на карте равномерно, чтобы игроки не появлялись группой.
Для данного устройства необходимо оставить настройки по умолчанию.
Добавление сценариев Verse
Добавьте следующие сценарии Verse, приведя сначала ссылки на устройства с функцией @editable.
Вы можете скопировать представленный код. Комментарии внутри сценария приведены для пояснений.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
using { /Verse.org/Simulation }
using { /Verse.org/Simulation/Tags }
using { /Verse.org/Random }
using { /UnrealEngine.com/Temporary/Diagnostics }
elimination_game_device := class(creative_device):
В коде выше представлены определения переменных.
OnBegin<override>()<suspends>:void=
# Can use this variable to scale the number of eliminations needed based on how many item granters there are in the experience
set NumberOfEliminationsToWin = WeaponItemGranters.Length
Print("Number of Weapon Item Granters: {WeaponItemGranters.Length}")
# Randomize the order in which the weapons are granted
set WeaponItemGranters = Shuffle(WeaponItemGranters)
# Get all the players in the experience
AllPlayers := GetPlayspace().GetPlayers()
В коде выше представлена логика, которая задаёт количество устранений, необходимое для победы. Элементы в массиве устройства выдачи предметов перемешиваются в случайном порядке.
Игроки добавляются на карту, чтобы отслеживать выполнение ими задания и то, какой предмет им следует выдать следующим.
# Event that handles when a player is eliminated
OnPlayerEliminated(Result:elimination_result):void=
Print("Player Eliminated")
EliminatingCharacter := Result.EliminatingCharacter
if (FortCharacter := EliminatingCharacter?):
if (EliminatingAgent := FortCharacter.GetAgent[]):
GrantNextWeapon(EliminatingAgent)
# Код выше описывает событие, которое возникает в момент устранения игрока. Устраняющему игроку выдаётся следующее оружие.
# Check if there is a winner for the game, if not then grant the next weapon
GrantNextWeapon(Agent:agent):void=
if (var CurrentItemNumber:int = AgentMap[Agent]):
if (IsVictoryConditionMet(CurrentItemNumber) = true):
EndGame(Agent) # Game has been won
else: # Game is not over yet
set CurrentItemNumber = CurrentItemNumber + 1
if (ItemGranter := WeaponItemGranters[CurrentItemNumber - 1]):
ItemGranter.GrantItem(Agent)
В коде выше представлена логика для определения оружия, выдаваемого устраняющему игроку, а также проверки того, является ли это оружие последним, чтобы завершить матч.
# Check if the victory condition has been met and return the the result
IsVictoryConditionMet(EliminationNumber:int)<transacts>:logic=
if:
EliminationNumber = NumberOfEliminationsToWin
then:
return true
else:
return falseКод выше описывает логику проверки выполнения условия победы.
EndGame(Agent:agent):void=
EndGameDevice.Activate(Agent)
В коде выше описана логика объявления выигравшего игрока устройством завершения игры.
Настройка устройства Verse
Устройство Verse отвечает за завершение игры и за выдачу оружия за устранение, используя массив устройств выдачи предметов, подключённых путём прямой привязки событий.
Скомпилируйте сценарий Verse, а затем найдите устройство на Панели ресурсов. Перетащите это устройство в непросматриваемую зону карты, чтобы задать его настройки.
Используйте это устройство для прямой привязки событий к необходимым устройствам, чтобы на них можно было ссылаться в сценарии Verse.
На панели Сведения устройства задайте настройки как на изображении выше (выберите каждое устройство).
Задайте для этого устройства следующие Пользовательские настройки:
| option | Значение | Пояснение |
|---|---|---|
EndGameDevice | Устройство завершения игры | Привязывает устройство Verse к устройству завершения игры. |
WeaponItemGranters – 0 | Устройство выдачи предметов | Привязывает устройство выдачи предметов к устройству Verse. |
WeaponItemGranters — 1 | Устройство выдачи предметов 2 | Привязывает устройство выдачи предметов к устройству Verse. |
WeaponItemGranters — 2 | Устройство выдачи предметов 3 | Привязывает устройство выдачи предметов к устройству Verse. |
WeaponItemGranters — 3 | Устройство выдачи предметов 4 | Привязывает устройство выдачи предметов к устройству Verse. |
Нажмите Запустить сеанс, чтобы протестировать готовый уровень.