Uploaded by User 28

Реферат по Blueprint

advertisement
Визуальное программирование (visual programming language, VPL)
— это технология, которая позволяет создавать код программы не с
помощью текста, а посредством графических элементов, тем самым
используя их для непосредственного описания логики программы.
В отличие от традиционного программирования, в визуальном
программист имеет дело со структурами по типу блок-схем. При этом
составляющие этих блоков являются заранее разработанными
подпрограммами и функциями. При соединении таких блоков их взаимный
интерфейс настраивается без участия программиста. Поскольку код более
нагляден, для его понимания необходимо меньше абстрактного мышления.
Таким образом, визуальные языки позволяют программировать на уровне
алгоритмов, а не программного кода, тем самым представляя собой
инструмент, предназначенный для того, чтобы сделать входной барьер для
программирования намного ниже.
Однако, причина, по которой наличие такого удобного и мощного
инструмента как визуальное программирование, не делает существующее
программирование устаревшим, заключается в том, что такой "код" не
масштабируется на таком же уровне. Для создания кода с его помощью
требуется значительно больше времени, и зачастую его сложнее
модифицировать, чем просто написание нескольких символов. Более того,
практически все визуальные средства нуждаются в дополнении
функциями, которые не могут быть представлены в виде графических
конструкций и требуют текстового выражения. Визуальные средства
дополняются специальными программами - "скриптами", написанными на
различных языках программирования.
В качестве примеров визуальных языков можно привести как
простые, интуитивно понятные языки программирования, выполняющие
ознакомительную и подготовительную роль в качестве первого языка
программирования для детей или для взрослых без какого-либо опыта в
компьютерной разработке (Scratch, Google Blockly, Alice, KTurtle, Snap!),
так и более продвинутые для уже разбирающихся пользователей (Blueprint,
UnityScript, Godot, FlowGraph).
Позиционирование визуального программирования
Наиболее востребованными сферами
программирования считаются следующие:
применения
визуального
 Начинающие разработчики игр, желающие освоить игровой движок, но
еще не имеющие опыта программирования.
 Художники и гейм-дизайнеры, которые не имеют опыта в
программировании, но при этом хотят быстро создавать прототипы или
простые игры.
 Программисты, работающие в команде, которые хотят сделать часть
игровой логики доступной для художников или гейм-дизайнеров,
1
чтобы рационально и в соответствии с профильными навыками
распределить нагрузку при создании игровых проектов.
Blueprint
Blueprint (англ. blueprint — план, чертеж) — система визуального
скриптинга, представляющая собой визуальный интерфейс для создания
элементов комплексного геймплея, используемая в игровом движке Unreal
Engine. Данная система позволяет использовать почти полный
потенциал программирования.
Использование
Язык Blueprint может использоваться в движке Unreal Engine для
самых разных целей. С помощью Блупринтов, разработчики могут
создавать такие элементы игры, как:
 Игровые режимы — устанавливать правила игры, изменять поведение
игры в общем плане;
 Игроки — назначать игроков, придавать им особые черты и вид;
 Камеры — создавать виды для обзора и изменять свойства камер в
реальном времени;
 Управление — назначать кнопки, для управления персонажем,
автомобилем, или внешнем уровнем;
 Вещи — оружие, подбираемые предметы и прочее;
 Окружение — создавать случайно сгенерированное окружение.
Несмотря на то, что движок Unreal Engine также поддерживает язык
программирования C++, игра может быть написана только на Blueprint.
Существует 2 наиболее использующихся типа blueprint’ов: Level
Blueprint (используется для управления глобальными событиями на
уровне, в пределах которого может быть только один блюпринт уровня,
автоматически сохраняющийся при сохранении уровня) и Class Blueprint.
Class Blueprint унаследует другие классы, которые в свою очередь
унаследуют следующие:
 Class Blueprint — родительский класс для всех подклассов; является
производным классом от другого существующего класса, созданного с
помощью C++ или другого блюпринт-класса. Он используется для
кодирования функционала актеров, помещенных на уровень. На рис.1
показано окно с запросом выбора родительского класса, всплывающее
при создании Blueprint - проекта.
o Actor Blueprint — объекты, которые могут быть размещены или
призваны в мире
 Pawn — объекты, которым можно управлять клавиатурой,
мышкой, джойстиком и т. п.
 Character — объекты, имеющие возможность бегать, прыгать,
ходить и т. п.
2
GameMode — определяет саму игру, например, ее правила, подсчет
очков и т. п. Также здесь настраиваются другие Blueprint’ы по
умолчанию, например, скрипт объекта, которым управляет игрок.
 Data-Only Blueprint – блюпринт, хранящий только измененные свойства
унаследованного блюпринта
 Blueprint Interface (BPI). Блюпринт-интерфейсы используются для
хранения коллекции определенных пользователем функций, которые
могут быть назначены другим блюпринтам. Блюпринт-интерфейсы
позволяют другим блюпринтам обмениваться данными друг с другом.
 Blueprint Macros – независимые графы часто используемых
последовательностей
нодов,
которые
могут
многократно
использоваться другими блюпринтами. Блюпринт-макросы хранятся в
библиотеке макро-блюпринтов (Blueprint Macro Library)
o
Рисунок 1. Выбор родительского класса в Blueprint
Синтаксис языка
Вся логика языка Blueprint строится из нодов (узлов или блоков),
которые соединяются проводами (линиями передачи данных), образуя
графы. Ноды – это визуальные компоненты интерфейса, позволяющие
создавать события, функции и их вызовы, операции управления потоком,
переменные и так далее, которые можно использовать в графах. Последние
представляют собой сеть, состоящую из узлов и описывающую игровую
логику. На рис. 2 представлены возможные варианты узлов.
3
Рисунок 2. Примеры узлов в Blueprint
Существует несколько типов нодов:
1. Event (англ. event — событие) — некоторое событие, после которого
начинает выполняться следующий код. Примеры event’ов: event tick
(вызывается каждый кадр), event beginPlay (вызывается при запуске
игры), event onActorBeginOverlap (вызывается, когда хитбокс какоголибо объекта пересекся с хитбоксом другого объекта). Event — это
собственно функции, которые вызываются самим движком при
определенных условиях.
2. 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.
4
6. Блок Construction Scipt (англ. Construction — строительство) —
специальная функция, вызываемая при появлении объекта или изменении
его характеристик. Может быть вызвана даже до начала игры в редакторе.
В отличие от схожих по применению нодов материалов, задающих
внешний вид поверхности объектов, ноды Blueprint имеют специальные
контакты, называемые контактами Execution или exec-контактами. Контакт
слева — это вход, контакт справа — выход. Все ноды обладают как
минимум одним входом или выходом. Если нод имеет контакт входа, то
его необходимо подключить, чтобы он заработал. Если нод не подключен,
то все последующие ноды не будут выполняться. На рис. 3
продемонстрирован принцип работы нод Blueprint.
Рисунок 3. Принцип работы нод Blueprint: Node A и Node B будут
выполняться, т.к. у их входных контактов есть подключение. Node
C и Node D никогда не выполняются, потому что входной контакт Node
C не имеет подключения.
Помимо прочего ноды и контакты данных имеют цветовой код,
который выражает их назначение. Красный нод — это нод события,
используемый для инициирования выполнения последовательности нодов
и имеющий только один exec-контакт «вывода». Синие ноды — это
функции для выполнения определенных операций, имеющие execконтакты как «ввода», так и «вывода» (в большинстве случаев), чтобы
пропускать контакты через себя. Цветные овальные ноды, каждый из
которых имеет только по одному контакту данных, представляют
переменные. Цветовой код контактов данных основывается на типе
используемых ими данных: контакты данных в левой части нода
извлекают данные, в то время как контакты данных в правой части нода
возвращают данные.
Комментарии
В Blueprint есть возможность добавлять к коду комментарии, однако
при этом, как во всех других языках программирования, код не будет
пропускаться, а будет продолжать работать. Комментарий — это белый
полупрозрачный квадрат (при необходимости есть возможность поменять
цвет), который оборачивает один или несколько нодов, и имеет сверху
поле, в которое можно ввести текст, собственно, самого комментария. Для
того чтобы оставить комментарий к ноду достаточно щелкнуть правой
кнопкой мыши по названию помещенного нода, или навести курсор на
5
нод, после чего появится всплывающий блок комментирования. Пример
комментирования нода представлен на рис.4.
Рисунок 4. Пример комментирования нода
Интерфейс редактора Blueprint
Для открытия блюпринт уровня и перехода в редактор (Blueprint
Editor) необходимо выбрать на панели инструментов редактора уровней
пункт Blueprints → Open Level Blueprint (рис. 4). Интерфейс редактора
блюпринтов содержит строку меню, панель инструментов для быстрого
доступа к основным инструментам и операциям, панель Event Graph для
проектирования скриптов, панель Details для отображения свойств,
выбранных в редакторе блюпринта объектов, и панель My Blueprint,
которая используется для управления и отслеживания графов нодов,
функций, макросов и переменных, используемых в выбранном блюпринте.
Рисунок 5. Открытие блюпринта уровня в редакторе блюпринтов для
текущего уровня
Возможности редактора блюпринтов выделены на рис. 5 и описаны
ниже:
6
Рисунок 6. Интерфейс редактора блюпринтов
1. Панель инструментов. Панель инструментов содержит кнопки (с
коротким описанием) для управления редактором блюпринтов.
2. Панель My Blueprint. Используется для управления графами,
функциями, макросами и переменными, которые содержатся в вашем
блюпринте.
3. Панель Details. С помощью данной панели возможно
управлениями свойствами добавленных в блюпринт компонентов,
переменных и функций с помощью панели Details.
4. Панель Event Graph (граф событий). Эта панель используется для
программирования базового функционала блюпринта.
Панель инструментов редактора блюпринтов
Панель инструментов редактора блюпринтов включает в себя только
пять инструментов. Два инструмента сосредоточены на кнопках Compile и
Play. Вы нажимаете кнопку Compile, чтобы скомпилировать скрипт и
увидеть проблемы в окне результатов компиляции внизу панели Event
Graph. Кнопка Play в этом редакторе аналогична кнопке Play в редакторе
уровней для запуска уровня. Обратите внимание, что на панели
инструментов нет кнопки Save. Это связано с тем, что блюпринт уровня
связан с уровнем, поэтому, если вы хотите сохранить блюпринт, просто
сохраните уровень.
Панель инструментов редактора блюпринтов имеет следующие
кнопки для управления блюпринтами:
 Compile. Компилирует блюпринт.
 Search. Открывает панель Find Results с поисковой строкой для
поиска нодов в блюпринте.
7
 Class Settings. Показывает опции блюпринта на панели Details.
 Class Defaults. Отображает свойства блюпринта на панели Details.
 Play. Запускает уровень.
Панель My Blueprint
Панель My Blueprint отслеживает все графы нодов, функции,
макросы и переменные, которые используются в блюпринте. Каждая
категория разделена заголовком, и справа от каждого заголовка есть
символ «+», по которому можно щелкнуть, чтобы добавить элемент при
необходимости. С помощью панели My Blueprint, возможно добавлять,
переименовывать или удалять все эти элементы.
Панель Event Graph
Панель Event Graph — это граф нодов по умолчанию, который
используется для кодирования блюпринтов. Event Graph — это та область,
в которой производится значительная часть работы при использовании
редактора блюпринтов. Возможно добавлять больше графов нодов в
существующий блюпринт при необходимости. Эта панель аналогична
листку бумаги в клетку. В процессе работы над проектами существует
возможность добавлять в блюпринт столько графов, сколько потребуется
для сохранения организованности.
Контекстное меню блюпринта
Контекстное меню блюпринта (Blueprint Context Menu) — одно из
наиболее часто используемых меню при работе в редакторе блюпринтов.
Если щелкнуть правой кнопкой мыши по пустой области или перетащить
контакт, то откроется контекстное меню блюпринта (рис. 6), которое
позволяет добавлять в граф события, функции, переменные и условия. Это
меню по умолчанию чувствительно к контексту, отчего оно отображает
только действия, которые соответствуют выбранному элементу или
элементу, от которого протягивается контакт.
8
Рисунок 7. Контекстное меню блюпринта
Компиляция кода
При запуске игры все Blueprint коды переводятся на язык C++. В
самой игре используется уже переведенный код на С++. Само переведение
занимает некоторое время, поэтому игра на Blueprint может работать
несколько дольше, чем на C++, однако это зависит от чистоты кода. У
профессионального программиста разница между скриптом на Blueprint и
на С++ может быть почти незаметна.
Преимущества составления скрипта на Blueprint по сравнению с
С++:
1) Blueprint, как С++ поддерживает объектно-ориентированное
программирование, поэтому поддерживает все принципы ООП, в том
числе абстракцию, инкапсуляцию, наследование и полиморфизм,
что
помогает составлять удобную классовую иерархию в проекте. При этом
Blueprint позволяет создавать новый класс без необходимости написания
кода и его дополнительной компиляции, что делает возможным работу без
задержек, тем самым экономя время.
2) Blueprint — строго типизированный язык (как и С++), поэтому все
переменные должны иметь свой тип данных. Более того, язык
поддерживает массивы и словари.
3) Более высокая скорость компиляции в Blueprint по сравнению с
C++, что позволяет оперативно тестировать выполнение алгоритма,
просматривать, как работает та или иная функция.
4) Простота упорядочивания: можно разделять ноды на разные
области, например, на функции и графы. За счет подобной графической
9
отладки пользователь без особых усилий сможет выявить неисправности в
игровой логике.
5) Совпадающий API Blueprint с С++, то есть идентичность
входящих в их состав классов, функций и процедур.
6) Неограниченные возможности Blueprint благодаря использованию
специальных плагинов в среде С++. Расширить функционал Blueprint
помогают как плагины, требующие наличие студии для компиляции
проекта (например, Substance Plugin), так и не требующие студию плагины
и свободно компилирующие проект без ее наличия (например, Rama
Plugins с припиской «для Blueprint проектов»)
7) Blueprint может стать оптимальным средством разработки для
небольшой группы разработчиков, где имеется мало программистов.
Визуальное представление функций, запрет соединения блоков разных
типов и интуитивная понятность помогут избежать ошибок и позволят
начинающему разработчику легко составить игровую логику. В крупных
компаниях Blueprint может помочь составить логику дизайнерам игр для
последующего написания кода на С++ программистами.
Однако, не смотря на все преимущества Blueprint, разработчики
языка Epic Games рекомендуют прибегать к использованию блюпринтов,
когда в проекте очень много ссылок на контент, а его логика работает в
первую очередь на визуальную составляющую. Также они пригодятся в
создании прототипов, прямолинейной или редко используемой логики,
которая не является частью основной архитектуры.
Игры на Blueprint
1)Fortnite (2017) - мультиплатформенная и кроссплатформенная freeto-play игра (PC, PlayStation 4, Xbox One, Nintendo Switch, IOS, Android,
PlayStation 5, Xbox Series X) в жанрах экшен, шутер, симулятор выживания
от студии Epic Games;
2) RUMP! - It's a Jump and Rump! (2017) - казуальная игра в жанре
гонки платформа РС, разработанная Dedication Labs
3) Monkey Land 3D: Reaper Rush - игра в жанрах экшен, приключения
и инди, разработанная Full Metal Jacket Games на платформе PC.
4) Robo Recall (2017, 2019) - игра в жанре шутер от первого лица,
разработанная Epic Games для шлемов виртуальной реальности на
платформе Microsoft Windows (Oculus Rift) и Oculus Quest
10
Download