Blueprint
Blueprint (англ. blueprint — план, чертеж) — система визуального скриптинга, представляющая собой визуальный интерфейс для создания элементов Геймплей, используемая в игровом движке Unreal Engine. Данная система позволяет использовать почти полный потенциал программирования.
Использование
Язык Blueprint может использоваться в движке Unreal Engine для самых разных целей. Несмотря на то, что движок Unreal Engine также поддерживает язык программирования C++, игра может быть написана только на Blueprint.[1]
Существует 2 типа blueprint’ов: Level Blueprint (в котором происходит настройка уровня в целом) и Class Blueprint. Class Blueprint унаследует другие классы, которые в свою очередь унаследуют следующие[2]:
- Class Blueprint — родительский класс для всех подклассов
- Actor Blueprint — объекты, которые могут быть размещены или призваны в мире
- Pawn — объекты, которым можно управлять клавиатурой, мышкой, джойстиком и т. п.
- Character — объекты, имеющие возможность бегать, прыгать, ходить и т. п.
- Pawn — объекты, которым можно управлять клавиатурой, мышкой, джойстиком и т. п.
- GameMode — определяет саму игру, например, ее правила, подсчет очков и т. п. Также здесь настраиваются другие Blueprint’ы по умолчанию, например, скрипт объекта, которым управляет игрок.
- Actor Blueprint — объекты, которые могут быть размещены или призваны в мире
Синтаксис языка
Вся логика языка Blueprint строится из нодов (или блоки), которые соединяются проводами.
Существует несколько типов нодов[3]:
- Event (англ. event — событие) — некоторое событие, после которого начинает выполняться следующий код. Примеры event’ов: event tick (вызывается каждый кадр), event beginPlay (вызывается при запуске игры), event onActorBeginOverlap (вызывается, когда хитбокс какого-либо объекта пересекся с хитбоксом другого объекта). Event — это собственно функции, которые вызываются самим движком при определенных условиях.
- Function (англ. function — функция) - также как и в других языках программирования функции. Составляют большую часть кода на blueprint. Существуют внутриигровые функции, которые можно использовать, например:
- Get/Set variable — получает переменную или устанавливает в нее указанное значение
- AddActorWorldOffset — сдвигает объект в мировых координатах на указанное расстояние.
- PrintString — печатает на экране указанный текст. Текст виден только в редакторе, в уже скомпилированной игре его не будет.
- Delay — приостанавливает выполнение скрипта на указанное количество времени.
- и так далее.
Также функции могут быть созданы самим программистом, после чего вызваны в коде. Функции могут принимать или возвращать значения, в таком случае у блока функции появятся дополнительные контакты, слева и справа, для подсоединения вводных значений и получения вывода.
3. Блок Branch (англ. branch — ветка) — аналог условного оператора if-else
4. Блоки Switch on … (англ. switch — переключатель) — аналог оператора switch case.
5. Блоки циклов for, for with break (цикл for с условием выхода), while.
6. Блок Construction Scipt (англ. Construction — строительство) — специальная функция, вызываемая при спавне объекта или изменении его характеристик. Может быть вызвана даже до начала игры в редакторе.
Blueprint — строго типизированный язык (как и С++), поэтому все переменные должны иметь свой тип данных. Поддерживаются также массивы, словари.
Также Blueprint — язык объектно-ориентированный, поэтому поддерживает все принципы ООП: абстракция, инкапсуляция, наследование и полиморфизм.
Комментарии[4]
В Blueprint есть возможность добавлять к коду комментарии, однако при этом, как во всех других языках программирования, код не будет пропускаться, а будет продолжать работать. Комментарий — это белый полупрозрачный квадрат (хотя цвет можно поменять, этим редко пользуются), который оборачивает один или несколько нодов, и имеет сверху поле, в который можно ввести текст, собственно самого комментария.
Компиляция кода
При запуске игры все Blueprint коды переводятся на язык C++. В самой игре используется уже переведенный код на С++. Само переведение занимает некоторое время, поэтому игра на Blueprint может работать несколько дольше, чем на C++, однако это зависит от чистоты кода. У профессионального программиста разница между скриптом на Blueprint и на С++ может быть почти незаметна.
Примечания
- Maltsev Denis. Баланс C++ и Blueprints в UE4 — Gamedev на DTF . DTF (10 июля 2019). Дата обращения: 6 сентября 2020.
- Blueprint Class (англ.). docs.unrealengine.com. Дата обращения: 6 сентября 2020.
- Nodes (англ.). docs.unrealengine.com. Дата обращения: 6 сентября 2020.
- Unreal Engine 4 • » Комментарии Блупринтов . Дата обращения: 6 сентября 2020.