Всем привет! Хочу немного рассказать о проекте, которым занимался последний год.
В какой-то момент захотелось немного переосмыслить Papyrus. Улучшить его синтаксис, сделать более эргономичным. Привнести лучшие практики из других языков программирования, насколько это возможно в рамках ограничений движка Creation Engine. Основным требованием и одновременно ограничением являлась полная совместимость с PEX (бинарный формат скриптов, написанных на Papyrus).
Если вы пишите скрипты для Skyrim и хотелось более удобный синтаксис без потери совместимости с PEX — это как раз оно.
Итогом стал Vellum. Коротко перечислю реализованные фишки, которых нет в Papyrus:
Автоматический вывод типа для переменных (при помощи ключевого слова var)
Цикл for в различных вариациях (можно итерироваться по массивам, по FormList'ам, по заданному диапазону)
Операторы break и continue для циклов
Форматирование строк
Pattern matching (позволяет сократить цепочку if-elseif-else)
Однострочное создание и заполнение массивов (var nums = [1, 2, 3])
Тернарный условный оператор (?:)
Оператор is для проверки типов (source is Weapon) (как в FO4; в Vellum есть и для Skyrim)
Vellum полностью совместим с Papyrus и рантаймом движка Creation Engine. Что это значит на практике?
Можно наследоваться от Papyrus скриптов (ObjectReference, Actor и др) и вызывать функции из Papyrus
Игроку не нужно устанавливать доп. зависимостей. Автору мода достаточно скомпилировать Vellum скрипты в pex.
Пример того, что можно написать на Vellum:
На текущий момент поддержан только Skyrim. Есть планы добавить поддержку Fallout и Starfield.
Есть расширение для VS Code (подсветка синтаксиса, completion, go-to-definition, команда для компиляции).
Ссылки
Исходный код доступен на GitHub
Скачать компилятор можно на Nexus, либо на странице GitHub Releases (там же расширение для VS Code)
Документация по языку и компилятору