23.09.2022

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 — объекты, имеющие возможность бегать, прыгать, ходить и т. п.
    • GameMode — определяет саму игру, например, ее правила, подсчет очков и т. п. Также здесь настраиваются другие Blueprint’ы по умолчанию, например, скрипт объекта, которым управляет игрок.

Синтаксис языка

Вся логика языка Blueprint строится из нодов (или блоки), которые соединяются проводами.

Существует несколько типов нодов:

  • 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 — язык объектно-ориентированный, поэтому поддерживает все принципы ООП: абстракция, инкапсуляция, наследование и полиморфизм.

    Комментарии

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

    Компиляция кода

    При запуске игры все Blueprint коды переводятся на язык C++. В самой игре используется уже переведенный код на С++. Само переведение занимает некоторое время, поэтому игра на Blueprint может работать несколько дольше, чем на C++, однако это зависит от чистоты кода. У профессионального программиста разница между скриптом на Blueprint и на С++ может быть почти незаметна.






    Яндекс.Метрика