Перейти к основному содержимому

Verse

Разработчику

Verse — язык программирования Epic Games для игровой логики в UEFN (Unreal Editor for Fortnite) и в будущем Unreal Engine 6. На нём описывают правила матча, счёт, спавн врагов, экономику острова и сетевые события. Графику и анимацию по-прежнему собирают в редакторе; Verse отвечает за поведение.

Контекст движка — Unreal Engine. Термин в глоссарии.


Где Verse уже работает и куда движется

СредаРоль Verse
UEFN (сейчас)Основной текстовый язык логики островов Fortnite. Редактор только на ПК, публикация через клиент Fortnite.
UE6 (с конца 2027)Планируется как главный язык сценариев во всём движке — рядом с C++ на уровне ядра.
Классический UE5Verse не заменяет Blueprints и C++ в обычных проектах до выхода UE6.

Epic задумывал Verse под онлайн-миры с тысячами игроков — постоянное состояние, сетевые транзакции, масштабирование на серверах. Именно поэтому в языке с самого начала заложены откаты состояния и явная работа с ошибками, а не классические исключения try/catch.


Словарь новичка

ТерминЗначение
Failable expressionВыражение, которое может не дать результата (нет элемента в массиве, неудачное приведение типа). В Verse это нормальный путь, а не "авария".
<decides>Модификатор функции — она может завершиться неудачей (failure).
<transacts>Модификатор функции с транзакционной семантикой — при неудаче откатываются изменения состояния внутри вызова.
suspendsАсинхронная функция — может ждать (Sleep, Await) и уступать поток.
spawn / race / syncВстроенная конкурентность — параллельные задачи, гонка, ожидание всех веток.
DeviceГотовый игровой блок в UEFN (спавнер, кнопка, зона урона). К Verse подключают обработчики событий.
Effect systemСистема эффектов — язык помечает, может ли код откатываться, обращаться к сети и т.д.

Общая база "что такое код" — Что такое код. Параллельность в других языках — многопоточность.


Чем Verse похож и чем отличается от других стеков

СтекАналогия для новичка
Blueprints (UE5)Тоже логика в движке, но визуальные узлы. Verse — текст, проще версионировать в Git и рефакторить в больших проектах.
C++ (UE5)Низкий уровень, максимальная скорость. Verse выше — безопаснее для геймплея, рантайм сам думает про сеть и откаты.
Luau (Roblox)Тоже скрипт внутри UGC-платформы. Luau ближе к Lua; Verse — отдельный язык с failable-логикой и транзакциями.
C# (Unity)Оба — "скриптовый" слой поверх движка. Verse сильнее заточен под массовый онлайн и спекулятивное выполнение.

Ключевые идеи языка

Статическая типизация

У каждой переменной и функции есть тип (int, float, string, свои игровые типы). Ошибки типов ловятся до запуска в редакторе UEFN. Это ближе к C#, чем к динамическому Lua.

Failable-выражения вместо исключений

Операции вроде доступа к массиву или поиска игрока могут не сработать. В Verse это выражается явно:

# Упрощённый учебный пример — синтаксис UEFN
if (Player := GetPlayer[Agent]):
Print("Нашли игрока")
  • GetPlayer[Agent]failable-вызов (квадратные скобки).
  • if (...) — ветка выполняется только при успехе.
  • Оператор or задаёт значение по умолчанию, если выражение не удалось.

Такой стиль убирает целый класс багов "забыли проверить null".

Транзакции <transacts>

Функции с <transacts> могут менять состояние мира спекулятивно. Если внутри что-то пошло не так, рантайм откатывает все изменения этой функции.

Типичный сценарий — покупка предмета:

  1. списать валюту;
  2. добавить предмет в инвентарь;
  3. если инвентарь переполнен — вся операция отменяется, золото возвращается.

В C++ или Python такую логику пишут вручную (if + откат). Verse делает это на уровне языка.

Асинхронность и spawn

Игровые события часто ждут таймер или ответ сервера. Функции помечают suspends и могут вызывать Sleep(). Для параллельных задач есть spawn{} (запустить и не ждать), race{} (кто первый), sync{} (дождаться всех).

Отступы вместо фигурных скобок

Тело функции и блоки if задаются отступами (как в Python). Комментарии — через #, не //.


Минимальный синтаксис

Модуль и функция

using { /Fortnite.com/Devices }

my_device := class(creative_device):

OnBegin<override>()<suspends>:void =
Print("Остров запущен")
  • creative_device — базовый класс устройства UEFN.
  • OnBegin — точка входа при старте сессии (аналог BeginPlay в Unreal).
  • <suspends> — можно использовать асинхронные вызовы внутри.

Переменные и циклы

Score : int = 0

AddPoint():void =
set Score = Score + 1

CountDown():void =
for (I := 3..1):
Print("Старт через {I}")
  • set — изменение изменяемой переменной.
  • for (I := 3..1) — цикл по диапазону.
  • {I} в строке — подстановка значения.

Паттерны по значению

DescribeRound(Winner:int):void =
case (Winner):
1 => Print("Победил синий")
2 => Print("Победил красный")
_ => Print("Ничья")

case похож на switch в C# или match в современных языках.


Типичные ошибки начинающих

ОшибкаКак правильно
Писать // для комментарияТолько #
Вызывать failable-функцию с ()Failable — с квадратными скобками []
Цепочка else ifОтдельные блоки if: для каждого условия
Бесконечный loop без suspendsВ теле цикла нужна хотя бы одна асинхронная операция
Путать Verse с C++ синтаксисомVerse — отдельный язык, не надмножество C++

Как начать учить Verse

  1. Установить Epic Games Launcher → Fortnite → UEFN (только Windows PC с достаточным GPU).
  2. Создать проект острова по шаблону Blank или Gameplay.
  3. Разместить Player Spawner, Button, Mutator Zone — устройства из палитры.
  4. Прикрепить Verse-скрипт к устройству (счётчик очков, открытие двери по кнопке).
  5. Start Session в редакторе — тест локально; друзьям — код острова 1234-5678-9012.
  6. Публиковать и смотреть метрики в Creator Portal.

Пошаговый workflow UEFN — UGC-платформы. Для детей короче — UEFN в разделе для детей.

Официальные материалы

  • Verse Language Reference — справочник Epic (нужен аккаунт Developer).
  • UEFN Documentation — редактор и устройства.
  • Book of Verse — неофициальная книга сообщества с разбором транзакций и failable-логики.

Verse и Unreal Engine 6

В UE6 Epic расширяет Verse на весь движок:

  • единые API для материалов, мешей, Niagara и ассетов Fab;
  • тот же код для десктопного релиза и острова в Fortnite;
  • MCP-ассистенты в редакторе помогают писать и объяснять Verse.

C++ останется для ядра движка и плагинов. Blueprints в ранних сборках UE6 ещё поддерживаются, позже появятся конвертеры в Verse.


См. также