Verse
Verse — язык программирования Epic Games для игровой логики в UEFN (Unreal Editor for Fortnite) и в будущем Unreal Engine 6. На нём описывают правила матча, счёт, спавн врагов, экономику острова и сетевые события. Графику и анимацию по-прежнему собирают в редакторе; Verse отвечает за поведение.
Контекст движка — Unreal Engine. Термин в глоссарии.
Где Verse уже работает и куда движется
| Среда | Роль Verse |
|---|---|
| UEFN (сейчас) | Основной текстовый язык логики островов Fortnite. Редактор только на ПК, публикация через клиент Fortnite. |
| UE6 (с конца 2027) | Планируется как главный язык сценариев во всём движке — рядом с C++ на уровне ядра. |
| Классический UE5 | Verse не заменяет 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> могут менять состояние мира спекулятивно. Если внутри что-то пошло не так, рантайм откатывает все изменения этой функции.
Типичный сценарий — покупка предмета:
- списать валюту;
- добавить предмет в инвентарь;
- если инвентарь переполнен — вся операция отменяется, золото возвращается.
В 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
- Установить Epic Games Launcher → Fortnite → UEFN (только Windows PC с достаточным GPU).
- Создать проект острова по шаблону Blank или Gameplay.
- Разместить Player Spawner, Button, Mutator Zone — устройства из палитры.
- Прикрепить Verse-скрипт к устройству (счётчик очков, открытие двери по кнопке).
- Start Session в редакторе — тест локально; друзьям — код острова
1234-5678-9012. - Публиковать и смотреть метрики в 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.
См. также
- Unreal Engine 6 — сроки, Scene Graph, MCP.
- Unreal Engine — Blueprints, C++, UE5.
- UGC-платформы — Roblox, UEFN, монетизация.
- Языки программирования игр — C#, C++, выбор стека.
- Luau — скрипты Roblox для сравнения.
- ИИ в играх — боты и ML (это не то же самое, что LLM в редакторе).