
Blueprints — это визуальная, нодовая система программирования, которая используется в Unreal Engine 4. С помощью составления логических блоков нодов, можно «собрать» как из конструктора программу любой сложности, начиная от простого кликера, заканчивая полноценной RPG-игрой. Так как в блупринтах не используется программный код — написать программу может каждый, кто понимает основные принципы ООП.
В первую очередь идём по переменным:
Каждый тип переменных в движке имеет свой цвет, чтобы их было удобно различать. Это же визуальное программирование;
Boolean — булева переменная, принимает значения либо True, либо False Byte — Целочисленные значения от 0 до 255 Integer — Целочисленные значения от -2147483647 до 2147483647 Float — Число с запятой, от 3.403*(10^38) до -3.403*(10^38), наименьшее неделимая часть: 1.175·(10^-38). String — Строка, хранящая набор символов
Get, Set

Работая с переменными, мы можем либо получить значение, которое в них лежит, либо записать в них новое значение. За эти операции отвечают ноды Get (получить значение) и Set (задать новое значение).
Array, Add, Get

Array — это массив переменных того или иного типа. Например, нам надо хранить результаты турнирной таблицы для всех игроков. Мы запишем очки каждого игрока в массив в определённой последовательности. На скриншоте мы добавляем в конец массива число 12,54.
А когда нам понадобится достать из массива какое-то значение, мы укажем его порядковый номер и получим результат с помощью ноды Get. На скриншоте — получаем из массива значение переменной с индексом 2.
Есть ещё ноды, отвечающие за ход выполнения логики. Называются они нодами FlowControl
Ноды этого типа регулируют то, по какому «пути» или по какой «ветке» пойдёт дальнейшее выполнение алгоритма в зависимости от заданных условий.
Branch

Работает как оператор IF в языках программировании и в зависимости от того какое значение стоит во входном значении Condition — Branch перенаправляет ход исполнения функций по той или иной «ветке» событий.
ForLoop

Это цикл. Он выполняет определённые последовательности команд N-ое количество раз и после завершения запускает последовательность по пину Completed. В параметрах этой ноды стоит первый и последний индекс, по диапазону между ними и проходит сам цикл. При этом внутри цикла мы можем использовать тот самый индекс, по которому в данный момент происходит выполнение тела цикла «Loop Body».
Например, вам надо создать 50 врагов — тогда соедините функцию «Создание врагов» с пином «Loop Body» и укажите диапазон индексов от 0 до 49.
ForEachLoop

Тот же цикл, только в этом варианте он работает с массивом и выполняется столько раз, сколько в присоединённом массиве находится элементов. Так же в теле цикла мы получаем доступ к N-ому объекту этого массива и можем с ним работать.
Например, мы хотим увеличить каждое значение в массиве на единицу — прогоним массив циклом и каждый элемент увеличим на единицу (нода «++»).
CompareFloat, CompareInt

В зависимости от типа сравнения — сравниваются либо целочисленные (Integer) значения, либо значения с запятой (Float). На входе указывается с каким числом мы сравниваем ту или иную переменную, на выходе выполняется соответственный результату сравнения пин «больше», «меньше» или «равно».
FlipFlop

Это переключатель. Когда сигнал приходит в ноду в первый раз — выполняется Пин «A», когда второй раз — Пин «B», в следующий раз снова «A» и так далее. Кстати выходное значение так же меняется с true на false в зависимости от того какой пин выполняется в данный момент.
Всё это лишь верхушка айсберга, но, думаю суть ясна: программировать на блупринтах совсем не сложно, ведь нет необходимости учить сложный синтаксис и писать код, а визуальное взаимодействие сильно помогает ориентироваться в алгоритме и «писать» программы быстрее.
7 фундаментальных терминов, которые надо знать, работая с игровыми движками
- FPS (Frame Per Second)
Показатель производительности, указывающий количество кадров, которое просчитывается и отображается на экране за 1 секунду. Чем выше FPS — тем плавнее работа трёхмерного приложения. - Вся трёхмерная геометрия состоит из треугольников
Чем больше количество треугольников, тем выше уровень детализации 3D-модели и тем сложнее её отрисовать на экране. Для игр используют LowPoly — геометрию, которая содержит минимум треугольников, а детализация компенсируется специальными текстурами для отображения мелких деталей. - Draw Call
Процесс обращения процессора к видеокарте с передачей конкретного объекта или задания для отрисовки. Чем меньше таких операций, тем выше показатель FPS. Количество Draw Call’ов можно сократить, объединяя несколько объектов в один или используя специальные Instance-объекты, которые посылаются в отрисовку «за один присест». Объединив 10 объектов в 1 вызовется не 10 DC, а лишь 1 и скорость построения изображения этих объектов увеличится в 10 раз. - LOD (Level Of Detail)
Это степени детализации трёхмерных моделей, которые используются для замены моделей по мере их отдаления от камеры на более простые, с меньшим количеством треугольников. Чем меньше треугольников в кадре для отрисовки — тем быстрее строится кадр, а значит выше FPS. - HLOD (Hierarchial LOD)
Специальный инструмент Unreal Engine 4 для создания кластеров (групп) Лодов, производит сильную оптимизацию трёхмерной сцены, объединяя несколько объектов в один. Его работа заключается в уменьшении треугольников в кадре + уменьшении количества DrawCall’ов. - Шейдер
Программный код, выполняющийся на видеокарте для отрисовки конкретного объекта или эффекта в конечное изображение на экране. В шейдере может быть различное количество инструкций в зависимости от сложности эффекта или материала. Чем больше инструкций — тем сложнее видеокарте просчитать и отрисовать изображение. - Antialiasing
Алгоритм сглаживания, который сокращает, либо убирает эффект лесенки. Лесенка — это когда чётко видны границы объекта в виде лесенки из пикселей на экране. В UE4 есть 3 алгоритма сглаживания: FXAA, MSAA, TAA. Каждый из них по-разному работает и предназначен для разных целей. Temporal AA (TAA) — этот режим сглаживания разработан Epic Games для UE4, он считается лучшим из доступных по соотношению производительность/качество.