В игре на устранение на базе Verse игроки получают новое снаряжение с каждым устранением. Эта механика достигается за счёт привязки устройств наподобие устройства выдачи предметов к устройству Verse.
В этом расширенном шаблоне Verse используются следующие API Verse:
-
контейнерный тип
map
; -
подписка на событие
EliminateEvent
класса fort_character.
Обзор
-
Создайте новый проект и измените настройки острова, чтобы подготовить игру.
-
Подготовьте устройства.
-
Добавьте сценарий Verse.
Создание нового проекта и настройка игры
-
Откройте UEFN и создайте новый пустой проект.
-
Выберите устройство IslandSettings в окне Структура и найдите Пользовательские настройки — Настройки игры.

- Задайте пользовательские настройки, как показано ниже.
Параметр | Значение | Пояснение |
---|---|---|
Предметы устранённого игрока | Оставлять | Игроки будут возрождаться со своим снаряжением. |
Выбрасывание предметов | False | Игроки не могут выбрасывать предметы из инвентаря во время игры. |
Урон окружению | Откл. | Во время игры нельзя наносить урон окружению. |
Подготовка устройств
В этом уроке используются следующие устройства:
Устройство выдачи предметов

Используйте устройство выдачи предметов, чтобы выдавать оружие игрокам. Оно напрямую связывается с устройством Verse через событие. Сценарий Verse позволяет выдавать оружие за устранение в произвольном порядке.
Можно использовать любое количество устройств выдачи предметов. Игра будет масштабироваться соответствующим образом, если привязывать их к массиву устройств Verse.
Зайдите в Панель ресурсов > Fortnite > Devices и добавьте устройства выдачи предметов на уровень.
Задайте для этого устройства следующие Пользовательские настройки:
Параметр | Значение | Пояснение |
---|---|---|
Список предметов | Выберите оружие | Выберите одно уникальное оружие на каждое устройство выдачи предметов. |
Устройство «Завершение игры»

Используйте устройство Завершение игры, чтобы закончить раунд при выполнении условий. При достижении определённого количества устранений сценарий 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):
@editable
EndGameDevice : end_game_device = end_game_device{}
# Массив устройств выдачи предметов, выдающий оружие
@editable
var WeaponItemGranters : []item_granter_device = array{}
# Этот параметр задаётся позже. Он будет равен количеству устройств выдачи предметов на острове
var NumberOfEliminationsToWin : int = 0
# Контейнер типа map для отслеживания выполнения задания игроками. Так определяется, какое оружие выдать игроку
var AgentMap : [agent]int = map{}
В коде выше представлены определения переменных.
OnBegin<override>()<suspends>:void=
# Вы можете использовать эту переменную для определения количества необходимых устранений с учётом количества устройств выдачи предметов в игре
set NumberOfEliminationsToWin = WeaponItemGranters.Length
Print("Количество устройств выдачи оружия: {WeaponItemGranters.Length}")
# Зададим случайный порядок выдачи оружия
set WeaponItemGranters = Shuffle(WeaponItemGranters)
# Получим всех игроков в игре
AllPlayers := GetPlayspace().GetPlayers()
for (EliminationGamePlayer : AllPlayers):
if (FortCharacter := EliminationGamePlayer.GetFortCharacter[]):
FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # Подпишемся на событие устранения
# Добавим игроков на карту, чтобы отслеживать выполнение задания
if (set AgentMap[EliminationGamePlayer] = 1) {}
# Выдадим первое оружие каждому игроку
if (FirstItemGranter:item_granter_device = WeaponItemGranters[0]):
FirstItemGranter.GrantItem(EliminationGamePlayer)
В коде выше представлена логика игровых правил, которая задаёт количество устранений, необходимое для победы. Элементы в массиве устройства выдачи предметов перемешиваются в случайном порядке.
Игроки добавляются на уровень, чтобы отслеживать их количество устранений и следующий выдаваемый предмет.
# Событие, обрабатываемое в момент устранения игрока
OnPlayerEliminated(Result:elimination_result):void=
Print("Игрок устранен")
EliminatingCharacter := Result.EliminatingCharacter
if (FortCharacter := EliminatingCharacter?):
if (EliminatingAgent := FortCharacter.GetAgent[]):
GrantNextWeapon(EliminatingAgent)
Код выше описывает событие, которое возникает в момент устранения игрока. Устранивший игрок получает следующее оружие.
# Проверим, есть ли победитель игры. Если нет, выдадим следующее оружие
GrantNextWeapon(Agent:agent):void=
if (var CurrentItemNumber:int = AgentMap[Agent]):
if (IsVictoryConditionMet(CurrentItemNumber) = true):
EndGame(Agent) # Победитель определён
else: # Игра ещё не завершена
set CurrentItemNumber = CurrentItemNumber + 1
if (ItemGranter := WeaponItemGranters[CurrentItemNumber - 1]):
ItemGranter.GrantItem(Agent)
if (set AgentMap[Agent] = CurrentItemNumber) {}
В коде выше представлена логика для определения оружия, выдаваемого устранившему игроку, а также проверки того, является ли выданное оружие последним, что необходимо для завершения матча.
# Проверим, выполнено ли условие победы, и вернём результат
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.

На панели Сведения устройства Verse задайте настройки, как на картинке выше, соблюдая ссылки на все устройства.
Задайте для устройства Verse следующие Пользовательские настройки:
Параметр | Значение | Пояснение |
---|---|---|
EndGameDevice | Устройство завершения игры | Привязывает устройство Verse к устройству завершения игры. |
WeaponItemGranters — 0 | Устройство выдачи предметов | Привязывает устройство выдачи предметов к устройству Verse. |
WeaponItemGranters — 1 | Устройство выдачи предметов 2 | Привязывает устройство выдачи предметов к устройству Verse. |
WeaponItemGranters — 2 | Устройство выдачи предметов 3 | Привязывает устройство выдачи предметов к устройству Verse. |
WeaponItemGranters — 3 | Устройство выдачи предметов 4 | Привязывает устройство выдачи предметов к устройству Verse. |
Нажмите Запуск сеанса, чтобы протестировать готовый уровень.