Skip to content
Verse Scripting

Verse Scripting для начинающих: ваш первый UEFN Device

2026-03-059 мин чтения

Что такое Verse?

Verse — это язык программирования Epic Games, разработанный специально для UEFN. Если вы использовали Python, Verse покажется вам знакомым — он использует синтаксис на основе отступов и читается почти как английский. Но он также заимствует идеи из функциональных языков программирования, таких как Haskell, что делает его мощным для игровой логики.

Любое пользовательское поведение в UEFN, выходящее за рамки базовых устройств Creative, требует Verse. Системы подсчёта очков, пользовательский UI, менеджеры экипировки, управление раундами, ранговая прогрессия — всё на Verse.

Настройка вашего первого Verse Device

В UEFN создайте новый Verse device:

  1. Откройте ваш проект в UEFN
  2. Перейдите в меню VerseCreate New Verse File
  3. Выберите Creative Device в качестве шаблона
  4. Назовите его my_first_device

UEFN генерирует шаблонный файл, который выглядит так:

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

my_first_device := class(creative_device):

 OnBegin<override>()<suspends>:void=
 Print("Hello, Fortnite!")

Давайте разберём этот код.

Понимание основ

Инструкции `using` — они импортируют API. /Fortnite.com/Devices предоставляет доступ к устройствам Creative. /Verse.org/Simulation предоставляет основные функции симуляции. /UnrealEngine.com/Temporary/Diagnostics даёт вам Print() для отладки.

Определение классаmy_first_device := class(creative_device) создаёт новый класс устройства, наследующий от creative_device. Это ваше пользовательское устройство, которое вы размещаете в мире.

OnBegin — эта функция запускается при старте игры. Тег <override> означает, что вы заменяете OnBegin родительского класса. Тег <suspends> означает, что эта функция может использовать асинхронные операции (например, Sleep()).

Создание Kill Counter

Давайте создадим что-то полезное — устройство, которое отслеживает килы и отображает их. Сначала вам нужно сослаться на UI-устройство в вашем уровне:

using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Verse.org/Simulation }

kill_counter := class(creative_device):

 @editable
 EndGameDevice : end_game_device = end_game_device{}

 var KillCounts : [agent]int = map{}

 OnBegin<override>()<suspends>:void=
 # Subscribe to elimination events
 GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)

 OnPlayerAdded(Player : player):void=
 if (FortCharacter := Player.GetFortCharacter[]):
 FortCharacter.EliminatedEvent().Subscribe(OnEliminated)

 OnEliminated(Result : elimination_result):void=
 if (Eliminator := Result.EliminatingCharacter):
 if (Player := player[Eliminator.GetAgent[]]):
 if (set KillCounts[Player] += 1) {}

Ключевые концепции Verse

Выражения, которые могут завершиться неудачей — Verse использует if для операций, которые могут не выполниться. Player.GetFortCharacter[] может ничего не вернуть, если у игрока нет персонажа. Скобки [] указывают на вызов, который может завершиться неудачей, а оборачивание в if элегантно обрабатывает случай неудачи.

Мутабельность — переменные, объявленные с var, могут быть изменены. Без var значения по умолчанию неизменяемы. Это предотвращает случайные мутации состояния.

События и подписки — Verse использует событийно-ориентированный паттерн. Вы подписываетесь на события (PlayerAddedEvent, EliminatedEvent) и предоставляете функции обратного вызова. Так вы реагируете на геймплей без поллинга.

Словари и массивы[agent]int — это тип map (словарь), сопоставляющий агентов с целыми числами. map{} создаёт пустой словарь.

Распространённые паттерны

Вот паттерны, которые вы будете использовать практически в каждом Verse device:

Таймер/задержка:

Sleep(5.0) # Ждать 5 секунд

Цикл:

loop:
 DoSomething()
 Sleep(1.0)

Итерация по игрокам:

Players := GetPlayspace().GetPlayers()
for (Player : Players):
 # Сделать что-то с каждым игроком

Следующие шаги

Это руководство охватывает абсолютные основы. Чтобы углубиться:

  • Прочитайте официальную документацию Verse от Epic
  • Изучайте open-source проекты на Verse на GitHub
  • Практикуйтесь, воссоздавая существующие устройства Creative на Verse
  • Присоединяйтесь к сообществу UEFN Discord для получения помощи

Создание пользовательских Verse devices — это то, что отличает профессиональных UEFN developers от любителей. Если вам нужны сложные пользовательские механики для вашей карты, наша команда специализируется на Verse scripting — от пользовательских систем подсчёта очков до полноценных фреймворков игровых режимов.

Ознакомьтесь с нашим портфолио, чтобы увидеть Verse в действии на 10 опубликованных картах с более чем 4,8 миллиарда минут игры.

K

Kaio

Разработчик карт UEFN в Kaio Corporation

Профессиональный разработчик карт Fortnite UEFN. Более 4,8 млрд минут сыграно . Подробнее

Нужна пользовательская карта?

Свяжитесь с нами