Blueprint
Blueprint (англ. blueprint — план, чертеж) — система визуального скриптинга, представляющая собой визуальный интерфейс для создания элементов Геймплей, используемая в игровом движке Unreal Engine. Данная система позволяет использовать почти полный потенциал программирования.
Использование
Язык Blueprint может использоваться в движке Unreal Engine для самых разных целей. Несмотря на то, что движок Unreal Engine также поддерживает язык программирования C++, игра может быть написана только на Blueprint.
Существует 2 типа blueprint’ов: Level Blueprint (в котором происходит настройка уровня в целом) и Class Blueprint. Class Blueprint унаследует другие классы, которые в свою очередь унаследуют следующие:
- Class Blueprint — родительский класс для всех подклассов
- Actor Blueprint — объекты, которые могут быть размещены или призваны в мире
- Pawn — объекты, которым можно управлять клавиатурой, мышкой, джойстиком и т. п.
- Character — объекты, имеющие возможность бегать, прыгать, ходить и т. п.
- Pawn — объекты, которым можно управлять клавиатурой, мышкой, джойстиком и т. п.
- GameMode — определяет саму игру, например, ее правила, подсчет очков и т. п. Также здесь настраиваются другие Blueprint’ы по умолчанию, например, скрипт объекта, которым управляет игрок.
- Actor Blueprint — объекты, которые могут быть размещены или призваны в мире
Синтаксис языка
Вся логика языка 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 — язык объектно-ориентированный, поэтому поддерживает все принципы ООП: абстракция, инкапсуляция, наследование и полиморфизм.
Комментарии
В Blueprint есть возможность добавлять к коду комментарии, однако при этом, как во всех других языках программирования, код не будет пропускаться, а будет продолжать работать. Комментарий — это белый полупрозрачный квадрат (хотя цвет можно поменять, этим редко пользуются), который оборачивает один или несколько нодов, и имеет сверху поле, в который можно ввести текст, собственно самого комментария.
Компиляция кода
При запуске игры все Blueprint коды переводятся на язык C++. В самой игре используется уже переведенный код на С++. Само переведение занимает некоторое время, поэтому игра на Blueprint может работать несколько дольше, чем на C++, однако это зависит от чистоты кода. У профессионального программиста разница между скриптом на Blueprint и на С++ может быть почти незаметна.