Unreal Engine Blueprint — основы Visual Scripting языка

Приветствую, друзья, с Вами Будуев Антон. В данной статье мы подробно поговорим о том, что такое Visual Scripting Blueprint или, иначе говоря, визуальный язык программирования в Unreal Engine (UE4, UE5). Разберём основы Blueprints, типы и из каких основных элементов состоят эти самые блюпринты.

Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.

Что такое Unreal Engine Blueprint

Unreal Engine — это игровой движок, который позволяет нам создавать собственные видеоигры. Как мы можем это сделать? Очевидно, что для этого необходимо написать программный код. Сам движок Анрил Энджин создан на языке программирования C++. Таким образом, используя этот движок, его многочисленные функциональные модули и язык C++, мы можем написать свою игру.

Однако есть одна проблема. Несмотря на то, что С++ является одним из самых популярных языков программирования, он также считается одним из самых сложных языков для изучения и понимания.

Чтобы упростить процесс создания игр и сделать его более доступным, разработчики Unreal Engine создали систему Blueprints. Она предназначена не только для программистов, но и для других специалистов самого широкого профиля. Таких как аниматоры, художники, дизайнеры, которые могут использовать её для быстрого прототипирования игровых механик и настройки разных функциональностей движка. Благодаря Blueprints, Unreal Engine стал доступным для широкого круга пользователей. Включая независимых разработчиков и небольшие студии по всему миру.

Итак, Blueprints Visual Scripting (блюпринт-чертежи) — это визуальный язык программирования (скриптинга), который используется в движке Анрил Энджин (в версиях UE4 и UE5). Он позволяет создавать игровые механики без необходимости писать код на C++.

* Прочитать статью Blueprint или C++?

Основы Blueprint в Unreal Engine

Для программирования механик на Blueprints разработчик создаёт чертёж визуального скрипта, состоящий из готовых визуальных нод (узлов, блоков) и связей между ними («проводов», линий). Ноды могут быть как стандартными, входящими в состав Unreal Engine, так и созданными самим разработчиком. Но опять же, на основе уже готовых, стандартных нод.

Основы Blueprint в Unreal Engine — пример программирования игровой механики Crouch
Основы Blueprint в Unreal Engine — пример программирования игровой механики Crouch

Blueprint-ноды

Нода (узел) — это базовый строительный блок в Blueprint. Каждый узел выполняет определенную функцию, например, сложение чисел, воспроизведение звука, получение данных и так далее.

Каждая нода в Blueprints выполняет определенную функцию
Каждая нода в Blueprints выполняет определенную функцию

Каждая нода имеет внутри себя так называемые пины (Pin) — точки подключения. Они используются для соединения нод друг с другом или для передачи данных. Есть разные типы пинов:

  • Execution — пины исполнения (белые треугольники, находящиеся слева или справа, как правило в верхней части ноды). Этот вид пинов определяет порядок выполнения узлов (порядок потока процесса). Подключая через Execution-пины ноды друг к другу, обеспечивается непрерывный поток выполнения каждой ноды слева направо.
Основы Blueprint — Execution-пины
Основы Blueprint — Execution-пины
  • Input — входящие пины (цветные кругляшки, располагающиеся с левой стороны нод). В эти пины подключаются необходимые входящие данные, требуемые для работы текущей ноды. Цвет пина указывает на тип передаваемых данных (целые или дробные числа, логический тип, векторы и так далее).
Основы Blueprint — Input-пины
Основы Blueprint — Input-пины
  • Output — исходящие пины (цветные кругляшки, располагающиеся с правой стороны нод). Содержат в себе данные, которые образовались после отработки данной ноды. Эти исходящие данные можно подключить к другой ноде в качестве входящих данных. Цвет пина указывает на тип передаваемых данных (целые или дробные числа, логический тип, векторы и так далее).
Основы Blueprint — Output-пины
Основы Blueprint — Output-пины

Любая цепочка нод всегда начинается с определенного вида ноды с красным заголовком — Event (событие).

События вызываются во время наступления определённых условий или изменений в игровом процессе с целью запуска пользовательской ответной логической цепочки, состоящей из других функциональных нод, для обработки этих изменений.

Такими событиями могут быть начало игры, пересечение объектов друг с другом, получение урона, такт обновления кадра игры и многое другое. И всё это мы можем обработать, написав свою собственную логику.

То есть весь код, который программируется на Blueprint, — это ответная логика объекта на возникающие игровые события.

Ноды событий (Events) в Blueprint
Ноды событий (Events) в Blueprint

Также в Blueprint имеются и другие ноды:

  • Функции, изменяющие данные (нода с синим заголовком). Меняют состояние какого-либо объекта, например, меняют масштаб или координаты объекта, скорость передвижения.
  • Функции, возвращающие данные (нода с зелёным заголовком). Подготавливают и возвращают необходимые данные, характеризующие какое-либо свойство объекта, например, возвращают скорость передвижения.
  • Макросы (нода с серым заголовком) — как правило, используются для работы с потоком процесса, например, для временной остановки потока или его ветвления по условиям.
Set Active — функция, изменяющая данные, Get Controller — функция, возвращающая данные, Flip Flop — макрос, разделяющий поток процесса
Set Active — функция, изменяющая данные, Get Controller — функция, возвращающая данные, Flip Flop — макрос, разделяющий поток процесса

Таким образом, соединяя ноды между собой различными способами, а также встраивая в чертеж свои собственные ноды с уникальным функционалом, мы можем создавать логику для игровых объектов.

Blueprints — это логические скрипты, состоящие из последовательностей нод, которые определяют поведение объектов в игровом мире и их взаимодействие друг с другом. Скрипты, которые задают ответные действия объекта на различные игровые события.

Основы Blueprints Visual Scripting

В качестве основ программирования на блюпринтах, рассмотрим пример визуального скриптинга (Visual Scripting Blueprints), описывающий скрипт обработки приседания персонажа при ходьбе.

Основы Blueprints Visual Scripting — пример программирования игровой механики Crouch
Основы Blueprints Visual Scripting — пример программирования игровой механики Crouch

В данном примере производится обработка события приседания игрока — Enhanced Input Action IA_Crouch. Событие вызывается в момент нажатия игроком клавиши приседания (как правило, это левый CTRL). Данное событие имеет в своём составе несколько пинов, среди которых три Execution-пина:

  • Triggered — генерирует поток выполнения процесса каждый кадр обновления игры, пока нажата клавиша приседания.
  • Canceled — генерирует поток выполнения процесса один раз при отмене выполнения данного события.
  • Completed — генерирует поток выполнения процесса один раз, при отжатии клавиши приседания.

Соответственно, по Execution-пину Triggered (пока нажата клавиша приседания) нам необходимо изменить состояние персонажа на приседание. Но перед этим необходимо проверить условие, находится ли персонаж в режиме ходьбы или нет, так как по условиям игровой механики приседание возможно только во время ходьбы персонажа.

Само условие проверяется нодой Branch, являющейся макросом, который производит ветвление процесса по условию. Если условие выполняется, то процесс далее идет по Execution-пину True, если условие не выполняется, то по Execution-пину False.

Для проверки условия нам необходим текущий режим, в котором находится персонаж. Его возвращает функция Get Locomotion Type. Далее мы сравниваем этот режим с режимом Walking, и если режимы совпадают, то во входящий пин Condition ноды Branch поступает логическое True, если не совпадает, то логическое False.

В итоге, если условие возвращает значение True, то Branch запускает верхний Execution-пин True, в цепочке которого располагается функция Crouch, изменяющая состояние персонажа на приседание.

При отжатии игроком клавиши приседания, событие Enhanced Input Action IA_Crouch генерирует поток выполнения процесса Completed, в котором находится функция Un Crouch, оканчивающая состояние приседания персонажа, при котором он перейдет в свое базовое основное состояние.

Таким образом, в данном визуальном скрипте, используя ноду события, мы смогли для текущего объекта обработать игровое событие «нажатие клавиши». Используя функцию возврата значения, мы смогли получить текущий режим персонажа для проверки его в условии. Используя макрос ветвления потока, мы смогли на основе проверки условия запустить дальнейший поток выполнения процесса, только если условие выполняется. Ну и, используя функции изменения свойств объекта, мы смогли изменить состояние персонажа.

Создать игру на скриптах Blueprints в Unreal Engine теперь может абсолютно каждый, используя их словно как конструктор. Этот инструмент позволяет абсолютно любым разработчикам самостоятельно программировать различные игровые сценарии. А также использовать дополнительные профильные инструменты, которые ранее были доступны только программистам.

Конечно, для работы с Blueprints в UE5 (UE4) нужно научиться работать с этими чертежами. Однако это гораздо проще, понятнее и быстрее, чем изучение языка программирования C++.

* Также советую прочитать статью основы программирования Blueprint.

Основные элементы Unreal Engine Blueprint

В движке Анрил Энджин существует несколько типов Blueprints. Их функциональность определяется внутренними составляющими элементами (объектами). О конкретных типах чертежей мы поговорим ниже, в следующем разделе. А сейчас подробнее остановимся на базовых элементах, которые входят в состав самого часто используемого типа блюпринта — Blueprint Class в UE5 (UE4): Components, Construction Script, Event Graph, функции и переменные.

Components

Components — окно компонентов. Позволяет добавлять стандартные и пользовательские компоненты в Blueprint.

Окно Components в составе Unreal Engine Blueprint
Окно Components в составе Unreal Engine Blueprint

Компонент — это часть готовой логики и функциональности, которая может быть добавлена к любому из Blueprints, например:

  • Capsule Collision, Box Collision, Sphere Collision — компоненты, с помощью которых можно добавить к игровому объекту коллизии (геометрию столкновений и пересечений) в форме капсулы, бокса или сферы;
  • Static Mesh Components, Skeletal Mesh Component — добавление к объекту визуализируемой геометрии в виде статической или скелетной сетки (Mesh);
  • Movement Components — добавление функциональности управления движением объекта.

Компоненты с готовой функциональностью уже заранее встроены в игровой движок. Их можно использовать в любых блюпринтах. Также имеется возможность создавать и свои собственные компоненты, чтобы затем использовать их повторно в любых проектах на Анрил Энджин.

Изучить компоненты Вы можете в отдельной статье: Unreal Engine Components.

Viewport

Viewport — это инструмент, который позволяет визуализировать и редактировать компоненты блюпринта в трёхмерном виде.

Инструмент Viewport в Unreal Engine Blueprint
Инструмент Viewport в Unreal Engine Blueprint

Construction Script

Construction Script — специализированная функция, запускающая сценарий построения блюпринта. Выполняется всякий раз, когда Blueprint размещается в игровом мире или модифицируется в Unreal Editor.

Функция Construction Script
Функция Construction Script

Данная функция представляет собой набор узлов (нод), с помощью которых разработчик может задать действия, которые нужно выполнить всего один раз при создании объекта в игровом мире. Этот процесс часто используется для процедурного расчёта геометрии объекта. Например, для процедурного расчета нужного количества и координат месторасположения деревьев на игровой сцене.

Итак, Construction Script в UE5 (UE4) позволяет еще до основной работы Blueprints выполнять в игровом мире несколько важных действий:

  • настраивать компоненты внутри блюпринта на основе значений публичных глобальных переменных;
  • процедурно создавать новые компоненты и игровой контент;
  • модифицировать схему чертежей на основе данных игрового мира.

Event Graph

Event Graph — это граф событий, который является основным инструментом в Blueprints Unreal Engine. Именно в нём происходит «магия» визуального программирования скриптов. В Event Graph можно размещать множество цепочек узлов, чтобы создать различные варианты поведения объекта в зависимости от игровых событий движка Анрил Энджин и обеспечить ветвление логики.

Событие нажатия кнопки прыжка в Event Graph
Событие нажатия кнопки прыжка в Event Graph

Event Graph через размещённые в нём Event-ноды реагирует на различные игровые события (пользовательские или стандартные от Unreal Engine). И запускает на выполнение соответствующие событиям последовательность нод (блоки кода). Иначе говоря, запускает определенный скриптовый код в ответ на эти события.

Если Construction Script работает только во время создания или пересчета объекта, то Event Graph работает всё то время, пока запущена сама игра. Обрабатывая в реальном времени различные игровые события и, в зависимости от исхода этих событий, запуская определенный код.

Blueprints Functions

Functions (функции) — это набор взаимосвязанных общей целью узлов, находящихся внутри отдельного элемента блюпринта.

Пользовательская функция в Blueprint Unreal Engine
Пользовательская функция в Blueprint Unreal Engine

Пользовательские функции в блюпринтах создаются для нескольких целей:

  • для повторно используемого кода;
  • как удобный способ упорядочить разрозненную информацию в единый смысловой блок;
  • для вызова этого смыслового блока кода совершенно из другого Blueprint.

Иначе говоря, функции позволяют разработчикам инкапсулировать определенный смысловой код. И использовать его повторно в разных элементах блюпринта. В Event Graph, Construction Script и в составе других функций. А также вызывать исполнение этого кода совершенно из других Blueprint-классов.

Variables

В Unreal Engine переменные используются для хранения данных. Эти данные могут быть числами, строками, текстом, координатами, логическими значениями или ссылками на другие объекты. Ссылки могут указывать на различные объекты: от компонентов того же самого блупринта до совершенно других Actors в мире.

Переменные в Blueprints
Переменные в Blueprints

Переменные могут использоваться как внутри самого блюпринта, так и за его пределами в редакторе Unreal Editor. Это позволяет дизайнерам, работающим в игровом мире с экземплярами Blueprint, быстро настраивать эти объекты, просто изменяя значения переменных.

Типы блюпринтов в Unreal Engine (UE4, UE5)

В движке Анрил Энджин существует несколько типов блюпринт-чертежей, каждый из которых используется в определённых целях.

Blueprint Class

Наиболее распространённым типом является Blueprint Class или по «народному» просто блюпринты. Это пользовательские дочерние классы. Они позволяют легко добавлять новую функциональность к стандартным родительским классам игрового движка: к классу Actor, Pawn, Character, Player Controller и другим классам.

Blueprint Class в Unreal Engine
Blueprint Class в Unreal Engine

С помощью блюпринтов в Анрил Энджин создают практически все интерактивные и движущиеся объекты игрового мира:

  • раскрывающие двери, шкафы, окна, крышки;
  • выключатели;
  • собираемые предметы;
  • разрушаемые декорации;
  • игровые персонажи;
  • и многое-многое другое, что движется, открывается, ломается…

В общем, именно через Blueprint Class создаются все интерактивные объекты с внутренней логикой, которые нужно разместить в игровом мире.

Подробнее о блюпринт классах Вы можете узнать в отдельной статье: Blueprint Class.

Level Blueprint

Level Blueprint — это специализированный тип чертежа. Он действует как глобальный граф событий (Event Graph) на текущем игровом уровне (игровой карты).

Level Blueprint в UE5 (UE4)
Level Blueprint в UE5 (UE4)

В Unreal Engine для каждого уровня по умолчанию создаётся отдельный «левел-блюпринт», который нельзя создать вручную. Level Blueprint используется для настройки функциональностей, которые зависят от конкретного уровня и присущи только ему. Например, для настройки:

  • зоны триггеров на уровне;
  • звука, воспроизводимого на уровне только в определенных местах;
  • создания (Spawn) объектов на уровне;
  • и прочего, что привязано к конкретному игровому уровню.

Blueprint Interface

Blueprint Interface — это тип ассета (тип ресурса), в котором прописываются только названия функций (с учетом входящих и исходящих параметров). Сама реализация этого интерфейса (то есть определение кода тела функции) уже производится в конкретном блюпринте. Причем реализация конкретного интерфейса в блюпринтах может быть разной. Иначе говоря, названия функций будут одинаковыми, а тело функций — разными.

Блупринт Интерфейс в Анрил Энджин (Blueprint Interface)
Блупринт Интерфейс в Анрил Энджин (Blueprint Interface)

Blueprint Interface могут создаваться разработчиками с помощью редактора аналогично другим блупринтам, но со следующими ограничениями:

  • нет возможности добавлять новые переменные;
  • нельзя редактировать график узлов;
  • нет возможности добавлять компоненты.

В целом же, цель интерфейсов — это взаимодействие разных Blueprints друг с другом. Особенно этот способ эффективен, когда один блюпринт взаимодействует со множеством других.

Blueprint Macro Library

Blueprint Macro Library — это контейнер, содержащий набор макросов или автономных графиков. Данные макросы можно использовать в качестве узлов в других Blueprints, что позволяет сэкономить время. Библиотеку макросов используют для хранения часто используемого кода узлов (нод). Который впоследствии можно использовать совершенно в разных классах Blueprints.

Blueprint Macro Library
Blueprint Macro Library

Макросы являются общими для всех графиков чертежей, которые ссылаются на них. Это означает, что если изменить последовательность узлов в макросе, то эти изменения кода также коснутся и всех блюпринтов, где используются данные макросы. Но эти изменения станут доступны только после перекомпиляции блюпринта.

Animation Blueprint

Animation Blueprint — это специализированные чертежи, управляющие анимацией персонажа во время симуляции или игрового процесса. Анимационные блюпринты редактируются внутри отдельного редактора Animation Blueprint Editor, в котором создаётся логика, определяющая конечную позу анимации для скелетной сетки персонажа.

Анимационный Blueprint в UE5
Анимационный Blueprint в UE5

Material Blueprint

Material Blueprint в Unreal Engine — это визуальный скрипт для создания материалов и управления ими.

Material Blueprint в Unreal Engine
Material Blueprint в Unreal Engine

Материал создаётся при помощи центральной ноды с именем самого материала и других узлов левее неё, которые подсоединяются к её входящим контактам для задания определённых свойств этого материала.

Widget Blueprint

Widget Blueprint — это система визуального программирования для создания элементов интерфейса в Unreal Engine. С её помощью можно выводить на экран как простой статический текст, так и сложные интерактивные графические элементы (кнопки, слайдеры и прочее).

Редактор Widget Blueprint содержит две главные вкладки Designer (дизайнер) и Graph (график). Вкладка Designer позволяет настроить внешний вид интерфейса виджета. А Graph — описать логику блюпринта, для придания виджету интерактивности.

Widget Blueprint (виджет)
Widget Blueprint (виджет)

Unreal Engine Sound Cue

Sound Cue — это мощный Blueprint-инструмент, входящий в состав Unreal Engine. С помощью данных музыкальных блюпринтов можно создавать разнообразные звуковые эффекты, комбинируя и настраивая различные звуковые файлы и ноды эффектов.

Unreal Engine Sound Cue
Unreal Engine Sound Cue

Behavior Tree

Behavior Tree в Unreal Engine — это система определения поведения для неигровых персонажей, используемого искусственным интеллектом (ИИ). Она позволяет разработчикам на основе специализированного Blueprint визуально создавать древовидные процессы принятия решений для этих неигровых персонажей.

Blueprint-система Behavior Tree
Blueprint-система Behavior Tree

[Видео] Что такое Blueprints в Unreal Engine

Выберите удобную для Вас социальную сеть для просмотра видео

Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.


наш Телеграм канал

Оцените статью
( 14 оценок, среднее 5 из 5 )
Поделитесь этой статьей со своими знакомыми в социальных сетях, возможно, эта статья кому-то будет полезна
Unreal Engine - это просто
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.