Загарских А.С., Хорошавин А.А., Александров Э.Э. Введение в Разработку Компьютерных Игр
Загарских А.С., Хорошавин А.А., Александров Э.Э. Введение в Разработку Компьютерных Игр
Загарских А.С., Хорошавин А.А., Александров Э.Э. Введение в Разработку Компьютерных Игр
Александров Э.Э.
ВВЕДЕНИЕ В РАЗРАБОТКУ КОМПЬЮТЕРНЫХ
ИГР
Санкт-Петербург
2020
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ
ФЕДЕРАЦИИ
УНИВЕРСИТЕТ ИТМО
Санкт-Петербург
2020
1
Загарских А.С., Хорошавин А.А., Александров Э.Э., Введение в разработку
компьютерных игр– СПб: Университет ИТМО, 2019. – 79 с.
2
Содержание
Введение .................................................................................................................. 4
Занятие 1 Основные инструменты и ключевые элементы Unreal Engine 4 ..... 6
Занятие 2 Программирование на Blueprints. Часть I ....................................... 19
Занятие 3 Программирование на Blueprints. Часть II ...................................... 30
Занятие 4 Работа с материалами. Material Editor ............................................. 42
Занятие 5 Работа с контентом в UE 4 II. Animation Blueprint ......................... 49
Занятие 6 Программирование на Blueprints. Часть III .................................... 55
Занятие 7 Искусственный интеллект. Инструменты написания AI в UE4:
State Machine, Behaviour Tree, Navigation .......................................................... 61
3
Введение
Данное учебное пособие предназначено для слушателей курса “Основы
разработки компьютерных игр” и фокусируется на разработке компьютерных игр
в среде (игровом движке) Unreal Engine 4. Курс не покрывает непосредственно
особенности программирования на C++ в данной среде, он направлен на систему
визуального программирования Blueprints и посвящен основным инструментам
Unreal Engine 4.
Пособие может быть использовано как для самостоятельного изучения
разработки компьютерных игр в среде Unreal Engine 4, так и служить
практическим руководством в процессе изучения курса, так как содержит
ключевые моменты лекционных и практических занятий.
Авторы данного пособия рекомендуют использовать его следующим
образом.
Если вы студент, последовательно следуйте указаниям каждого занятия,
параллельно ищите дополнительную информацию в интернете и смотрите в
официальную документацию движка по ссылке https://docs.unrealengine.com/.
Если вы пропустили занятие, используйте соответствующую тему, чтобы
покрыть пробелы в своих знаниях. Если вы просто стремитесь быстрее узнать все
самые важные инструменты движка, то постарайтесь прочитать и проработать
данное пособие за пару дней в формате интенсива. Таким образом, есть
вероятность преодолеть входной порог сложности Unreal Engine 4 и отправиться
в вольное плавание по поиску дополнительной информации.
Если вы преподаватель, обратите внимание, что занятия данного пособия
покрывают все необходимые знания для работы с основными инструментами
Unreal Engine 4. Все уроки расположены в том порядке, в котором их полезнее
всего преподносить студентам. Не обязательно использовать данное пособие как
прямое руководство к действию – вы можете разнообразить лекции и практики
своими собственными примерами.
Для выполнения практических заданий необходимо скачать движок Unreal
Engine 4 с официального сайта: https://www.unrealengine.com/en-US/. На момент
написания данного пособия актуальна версия Unreal Engine 4.24. Движок
является бесплатным программным обеспечением с несколькими видами
лицензий. Оплата будет необходима лишь в том случае, если ваш проект
подразумевает монетизацию.
Практические задания пособия содержат рекомендованную
последовательность действий для работы в среде Unreal Engine 4 при разработке
компьютерной игры. В результате успешного выполнения всех заданий
обучающийся получит материал, необходимый для создания ключевого проекта
курса, представляющего собой компьютерную игру. Необходимым условием
защиты проекта является наличие написанных пользовательских нестандартных
блюпринт-классов.
4
Словарь сленговых терминов и сокращений
Игровой движок – комплекс программных средств, использующийся для
разработки интерактивных программ.
Темплейт – предустановленный образец, шаблон.
Ассет – цифровой объект, преимущественно состоящий из однотипных
данных.
ПКМ – правая кнопка мышки.
ЛКМ – левая кнопка мышки.
Блюпринт – программный класс, реализованный в правилах языка
визуального программирования Blueprints.
Плюсовый проект – проект, реализованный на языке программирования
С++.
Уровень – виртуальное пространство, сохраненное в файле.
Биллборд – цифровое изображение, которое всегда поворачивается в
сторону виртуальной камеры.
Инстанс класса – единичный экземпляр программного класса.
Нода – небольшая панель, содержащая данные или программные операции.
Ивент – название вида программных функций.
Таймлайн – тип ноды, позволяющий задать зависимость изменения
значения переменной от времени.
Пин ноды – элемент ноды, через который происходит соединение
нескольких нод.
Стейт-машина – то же, что и конечный автомат.
Меш – это совокупность вершин, рёбер и граней, которые определяют
форму многогранного объекта в трёхмерной компьютерной графике.
5
Занятие #1 Основные инструменты и ключевые
элементы Unreal Engine 4.
6
Рисунок 2. Меню выбора темплейта(шаблона) проекта в Unreal Engine 4.
7
Рисунок 3. Окно выбора настроек проекта. Обратите внимание, что вы можете заранее
определить некоторые графические настройки проекта, например функцонал Raytracing.
8
Вы можете осматриваться по сторонам, удерживая ПКМ и перемещая её. Для
перемещения по уровню нужно зажать ПКМ и использовать клавиши WASD.
Клавиши Q и E будут поднимать и опускать камеру соответственно.
Под панелью в среде Unreal Engine 4 будем понимать небольшую область
экрана (зачастую вертикальную), в которой располагаются интерактивные
элементы среды Unreal Engine 4. В отличие от окон, в панели располагаются
контекстные параметры того или иного виртуального объекта.
В панели World Outliner отображаются все объекты на текущем уровне. Вы
можете упорядочить список, распределив связанные объекты по папкам, а также
искать и фильтровать их по типам, можно объединять объекты в группы (рисунок
5). Обратите внимание, что вы можете использовать все классические сочетания
клавиш, характерные для множества программ. Вы можете выделить все объекты
разом, нажав сочетание клавиш Ctrl+A, дублировать объекты сочетанием клавиш
Ctrl+D, копировать в буфер обмена – Ctrl+C, вставить из буфера обмена – Ctrl+V.
Используйте клавишу Delete для удаления выбранных объектов.
В панели Details отображаются все свойства выбранного объекта, экземпляра
блюпринт-класса. Эта панель используется для изменения параметров объекта.
Внесённые изменения повлияют только на выбранный экземпляр объекта (рисунок
6). В Панели Details также перечислены компоненты выбранного объекта. Обратите
внимание, что при выборе отдельного компонента список свойств может
изменяться.
Рисунок 5. Панель World Outliner отображает все объекты текущего уровня. В данной
панели доступны опции сортировки и поиска объектов.
9
Рисунок 6. Панель Details демонстрирует все свойства выбранного на данный момент
объекта.
Рисунок 7. Панель Content Browser, показывает список файлов проекта в Unreal Engine 4.
В конкретном случае, эта панель пуста.
10
проводами (лапшой) ноды, эвенты, функции, переменные, вы можете создать
комплексный геймплей.
Также можно часто встретить использование термина Blueprint иди Blueprint
class для обозначения класса, созданного в системе Blueprints. Классы Blueprints
подчиняются правилам ООП и компонентным подходам к организации
архитектуры приложения.
Панель Modes: в этой панели можно переключаться между различными
инструментами, например, Landscape Tool и Foliage Tool. Инструментом по
умолчанию является Place Tool. Он позволяет располагать на уровне различные
типы объектов, такие как 3D-модели, источники освещения и камеры (рисунок 8).
Добавьте объект Empty Actor на уровень. Просто перетащите его иконку с
вкладки Basic панели Modes (рисунок 9) в окно Viewport. Вы только что поставили
пустой объект, он будет выделен сферой биллбордом (не забывайте про клавишу
G) - данная сфера видна только для разработчика. Иногда объекты, которые могут
находиться на уровне, в Unreal Eninge 4 называют акторами или актёрами. В
данном пособии будут использоваться слова объект Unreal Engine 4 и актор.
11
Рисунок 9. Empty Actor на уровне.
12
Рисунок 11. Добавление компонента Point Light к объекту Empty Actor.
Рисунок 12. При нажатии на синюю кнопку Blueprint/Add Script откроется окно
сохранения объекта в виде блюпринт класса.
13
Рисунок 13. Окно выбора пути сохранения блюпринт класса.
14
Вы можете перетаскивать блюпринт класс из окна Content Browser на ваш
уровень, создавая экземпляры выбранного класса (рисунок 15).
15
Нажав на вкладку окна viewport, можно посмотреть, как выглядит ваш
блюпринт класс (Рисунок 17).
Рисунок 17. Окно Viewport. Важно понимать, что данное окно Viewport является
контекстным для выбранного класса и не отображает блюпринт класс на всём уровне.
16
Рисунок 18. Добавьте компонент Cone из панели Components. Обратите внимание, что
там же перечислены другие компоненты примитивы: куб, цилиндр, сфера и плоскость.
17
Иногда необходимо посмотреть, как изменения на объекте (экземпляр
блюпринта) вписываются в окружение уровня. Если вы хотите, чтобы изменения
объекта применились на блюпринт-класс, нажмите кнопку Edit Blueprint и
выберете Apply Instance Changes to Blueprint. Если всё сделано верно, остальные
экземпляры (другим словом, инстансы) класса автоматически обновятся с учётом
новых изменений (рисунок 20).
Рисунок 20. После нажатия на синюю кнопку Edit Blueprint выберите пункт Apply
Instance Changes to Blueprint.
Сохраните уровень, нажав Ctrl+Shift+S или через меню File-> Save Current.
В открывшемся окне создайте папку Maps, дайте название уровню и нажмите
кнопку Save (рисунок 21).
Рисунок 21. Помните, что при названии уровня безопаснее использовать только
латинские буквы.
18
2.1Результат занятия
- понимать архитектуру Blueprint проекта UE4;
- понимать порядок выполнения блюпринт-класса: ноды Begin Play и Tick
Update;
- понимать Level Blueprint;
- уметь обращаться к компонентам блюпринта и менять их свойства.
Игра — это не просто контент, из которого она состоит. Игра — это контент,
связанный между собой логикой и запрограммированный на определенные
действия.
Для этого у нас есть С++ и система Blueprints.
Blueprints - это система визуального программирования в UE 4. Соединяя
проводами ноды, эвенты, функции, переменные, вы можете создать
комплексный геймплей.
Несмотря на кажущуюся наивность блюпринтов, они подчиняются ООП,
компонентной архитектуре, паттернам программирования.
Откройте Blueprint editor блюпринт класса, созданного в прошлом уроке
(конус с синим источником света) (рисунок 22).
19
Рисунок 23. Расположение вкладок. Нажав на вкладку Event Graph откроется окно Event
Graph, в котором создаётся логика класса.
Рисунок 24. Так выглядит окно Event Graph любого ново-созданного блюпринт-класса.
Обратите внимание на автоматически созданные ноды BeginPlay Event Tick и Event
ActorBeginOverlap.
20
Рисунок 25. Контекстное меню выбора нода. В верху данного меню имеется строка
поиска нод. Введите в строку поиска слово print, чтобы найти нод Print String.
Рисунок 26. Логическая конструкция, выводящая текст Hello во время запуска проекта.
21
Рисунок 27. Кнопка Play запускает выполнение всех экземпляров блюпринт классов,
находящихся на данном уровне.
Подключите нод Print String к ноду Event Tick и запустите проект (рисунок 28).
Рисунок 28. Логическая конструкция выводящая текст Hello без остановки после запуска
проекта.
22
Рисунок 29. Доступ к окно Level Blueprint можно получить нажав на кнопку Blueprints.
Перед вами предстанет обычный Event Graph с ивентами Begin Play и Event
Tick. В Level Blueprint логично располагать функции и ивенты, которые являются
специфичными для конкретного уровня. Level Blueprint может быстро получить
доступ по ссылке к любому блюпринту или актору на уровне:
1. выберите наш блюпринт Pulsar_BP в World Outliner;
2. перейдите в Event Graph Level Blueprint’а;
3. зажмите клавишу R (reference) и нажмите ЛКМ.
Подробнее про Level Blueprint читайте в официальной документации.
В общей архитектуре кода Unreal Engine классы Game State и Game Mode
играют важную роль, однако в основном для онлайн-игр. Для
однопользовательских игр значимость этих классов снижается. Поскольку создание
сетевых игр не рассматривается в данном курсе, подробную информацию по Game
Mode и Game State вы можете узнать в официальной документации.
Зайдите в Event Graph Pulsar_BP. Давайте изменим параметры компонента
Point Light через код. Перетащите компонент Point Light в поле Event Graph.
(рисунок 30).
23
Рисунок 30. Перенесенный компонент из панели Components в окне Event Graph будет
выглядеть как небольшой нод с одним выходным пином.
Вытяните пин Point Light и наберите в поиске Set Light Color (рисунок 31).
Как и в случае с поиском нод, поиск названий нужный параметров нарабатывается
“с опытом”.
24
Обратите внимание, что, следуя логике здравого смысла, вы можете
посмотреть названия нужных вам параметров, нажав на компонент. Вы можете
попробовать вводить Set Intensity, Set Attenuation Radius и прочие в поиске
свойств компонента в Event Graph, чтобы изменять или получать их значения
(рисунок 32).
Рисунок 32. Основные параметры (или свойства) компонента Point Light. Вы можете
обращаться к ним в окне Event Graph.
Свяжите нод Begin Play и нод SetLight Color, выберите желаемый цвет, нажав
на маленький черный квадрат, репрезентирующий черный цвет (по-умолчанию)
(рисунок 33,34). Скомпилируйте и запустите проект.
Цвет источника света в Pulsar_BP должен поменяться на выбранный вами.
P.S. Обратите внимание, что вы можете «разобрать» большинство пинов
составных типов данных на простые типы данных. Нажмите на пин New Light Color
ПКМ и выберите Split Pin. При желании вы сможете указывать цвет в формате
вектора RGBA. Это может пригодиться при генерации рандомных цветов.
25
Рисунок 33. Выберите нужный цвет для аргумента New Light Color в палитре.
Рисунок 34. Не забывайте нажимать на кнопку Compile. При наличии ошибок иконка
Compile изменится.
Теперь сделаем так, чтобы источник света плавно изменял свою интенсивность
с 0 до 5000 со старта игры в течение 10 секунд. Для этого можно использовать
полезный нод Timeline, скоро вы поймете, что этот нод часто используется в
геймплейных и визуальный задачах.
Добавьте нод Timeline, нажав ПКМ и набрав в поиске Add Timeline. Вы можете
дать собственной название ноду таймлайна. Обратите внимание, что у нода
Timeline имеется несколько входящих пинов для execution “проводов” (Рисунок 35).
26
Рисунок 35. Нод Timeline с именем ColorChanger.
27
Рисунок 37. Вы можете редактировать продолжительность изменения переменной.
Переменная Length. Выбрав конкретную точку на кривой, вы можете изменять её
параметры времени и значения.
28
Рисунок 39. Логика изменения интенсивности света в зависимости от кривой в ноде
Timeline.
29
3.1 Результаты занятия
- уметь создавать собственные события (events) в Blueprints;
- уметь создавать собственный функции в Blueprints;
- уметь создавать собственные переменные в Blueprints;
- уметь добавлять package в проект;
- уметь детектировать коллизии в Unreal Engine 4.
Рисунок 40. Пользовательское событие Start Effect и подключенный нод Set Light Color.
30
Рисунок 41. Вызов пользовательского события Start Effect в событии BeginPlay.
31
Создайте следующий аргумент вашего ивента: имя New Color, тип данных
Linear Color. Свяжите появившийся пин в ноде ивента с входящим пином нода Set
Light Color (рисунок 43). Обратите внимание, что вы можете изменять входной
аргумент в ноде вызова вашего ивента.
Рисунок 43. Обратите внимание, что аргумент события появился в ноде вызова вашего
события.
32
Рисунок 44. Поле Functions содержит список всех пользовательских функций, которые
созданы в вашем классе.
Рисунок 45. Для каждой функции создается отдельная вкладка со своим окном, в
котором пишется логика.
33
Рисунок 46. Обратите внимание на аргументы и их типы данных.
34
В панели Details функции вы можете указать Access Specifier (уровень
доступа) в виде классических Public, Private и Protected.
Подробнее про функции читайте в официальной документации Unreal Engine.
Конечно же, вы можете создавать свои собственные переменные и также
давать им уровень доступа (рисунок 49).
35
Рисунок 50. Для добавления дополнительных стандартных ассетов используйте опцию
Add Feature or Content Pack.
36
Рисунок 52. Найдите блюпринт-класс стандартного управляемого персонажа в папке
Blueprints импортированного контента.
Рисунок 53. Доступ к базовым настройкам логики проекта можно найти, нажав на
кнопку Blueprints.
Рисунок 54. Используйте поисковую строку, чтобы найти нужный параметр (Auto
Possess Player) на объекте ThirdPersonCharacter.
Давайте сделаем так, чтобы при приближении нашего персонажа конус менял
цвет на рандомный. В первую очередь давайте добавим Sphere коллайдер в
Pulsar_BP (рисунок 55).
Рисунок 56. Настройки коллизии можно найти в области Collision в панели Details (если в
данный момент выбран компонент Sphere)
39
Рисунок 57. Список доступных событий коллизии можно найти, нажав на компонент
Capsule Component.
Рисунок 58.
40
Реализуйте функцию SetRandomColor в Puslar_BP и вызовите её при
приближении персонажа (рисунок 60, 61).
Рисунок 61 Фрагмент кода из Third Character Blueprint - нод Cast To при успешном
приведение типа возвращает ссылку на объект класса, к которому совершается приведение,
через которую мы можем вызвать все публичные функции и ивенты данного класса.
42
Рисунок 63. Главное окно Material. В нём вы видите главный выходной нод.
43
Рисунок 65. Панель Details.
Панель Palette содержит список всех доступных нодов для Material Editor. Вы
можете перетаскивать ПКМ нужные ноды в Graph или же щелкнуть по свободному
пространству в графе и найти нод, используя строку поиска (рисунок 67).
44
Рисунок 67. Панель Palette. Смотрите официальную документацию, чтобы выяснить
назначения множества нодов.
45
Рисунок 68. Нод BaseColor имеет тип Vector4.
46
Нажмите кнопку Apply, чтобы скомпилировать шейдер материала. В Content
Browser щелкните ПКМ по созданному материалу и выберите Create Material
Instance (первый пункт). Назовите свой экземпляр материала. В данном примере
ConeMaterial (рисунок 70).
Рисунок 71. Вы можете установить ваш материал через поле Materials выбранного
меша. Вы также можете получить доступ к полю Materials программно.
48
- уметь создавать блюпринт-класс из нескольких акторов;
Рисунок 73. Выделив несколько акторов используйте опцию Convert Selected Components
to Blueprint Class.
49
Чтобы создать Animation Blueprint, нажмите ПКМ в свободном месте,
выберете вкладку Animation, далее Animation Blueprint. Будет открыто окно, в
котором нужно указать Skeleton к которому будет приписан блюпринт. Скелет
стандартного манекена - это UE4_Mannequin_Skeleton и нажмите OK (рисунок
74).
50
Рисунок 75. Окно Animation Graph, обратите внимание что сверху доступна вкладка
Event Graph, в окне которой можно писать специальную логику для анимаций.
Находясь в окне AnimGraph, создайте нод State Machine. Для этого щелкните
ПКМ в свободном месте и введите в поиске нод Add New State Machine. Вы можете
изменить название State Machine в панели Details. Свяжите выходной пин стейт-
машины и входной пин нода Output Pose. Output Pose - это всегда выходной нод
любого Animation Blueprint. Желтоё предупреждение Warning! сообщает о том, что
созданная стейт-машина пуста (рисунок 76).
Рисунок 76. Изначально любая новая State Machine будет содержать предупреждение о
том, что она пуста.
51
Чтобы добавить состояния в стейт-машину, нужно щелкнуть два раза на нод
стейт-машины. Нод Entry является стандартным, и с него начинается выполнение
стейт-машины. Вы можете перетаскивать анимации из панели Asset Browser в окно
стейт-машины. Вытягивайте ЛКМ связи из границ нодов анимаций (рисунок 77).
52
В связи, выходящей из анимации ThirdPersonIdle добавьте проверку
значения больше или равно 0.2 переменной Anim Velocity (рисунок 79).
53
Animation является аналогом Tick Update из обычных блюпринтов. Нод TryGetPawn
Owner получает ссылку на объект, к которому назначен данный Animation Blueprint.
Добавьте переменную Owner Ref типа Actor (Reference) - в неё запишите
ссылку на pawn через Try Get Pawn Owner.
В ноде Update Animation получите длину вектора velocity павна и присвойте
её в переменную Anim_Velocity (рисунок 81).
Рисунок 81
Рисунок 82. Выбрать Animation Blueprint можно в поле Animation, переменная AnimClass.
54
уметь создавать Blueprint Interface и назначать его блюпринтам,
вызывать методы Blueprint Interface;
уметь наследовать блюпринт-классы;
уметь подписываться на эвенты.
55
Рисунок 84. В интерфейсе вы можете так же, как и в функциях, объявлять входные и
выходные аргументы.
56
Рисунок 85. Добавление интерфейсов к классу происходит в меню Details при нажатии
кнопки Class Settings.
Рисунок 88. Нод Does Implement Interface проверяет объект на содержание определенного
интерфейса. Заметьте, что с интерфейсом нет необходимости вызывать нод Cast To.
58
Рисунок 89. Создание дочернего класса блюпринта через опцию Create Child Blueprint
Class.
59
Рисунок 90. Чтобы просмотреть список событий и функций, которые можно
переопределить в дочернем классе, нажмите на кнопку Override.
60
Добавьте нод вызова диспетчера по нажатию на клавишу E (рисунок 92).
Затем подпишитесь на данный диспетчер из блюпринта Chest_BP (рисунок 93).
Рисунок 93. Вы можете подписывать ваши события соединяя их красным узлом с нодом
Bind Event to *имя диспетчера*.
61
Занятие #7 Искусственный интеллект. Инструменты написания
AI в UE4: State Machine, Behaviour Tree, Navigation.
62
Utility AI
Модель, которая выявляет доступные для ИИ действия и начисляет им очки в
зависимости от складывающихся обстоятельств, тем самым выбирая наиболее
выгодное.
Зачастую различные поведения AI можно разбить на отдельные состояния
(states). Например, AI игрового агента может иметь состояния “Поиск врагов”,
“Поиск аптечки”, “Покой”, “Атаковать”. Если мы определим правила переходов
между этими состояниями, то эти состояния могут быть трансформированы в
конечный автомат (Finite State Machine). Это простая техника, которая применима
во множестве ситуаций. Стейт-машины исторически были одним из основных
подходов к проектированию алгоритмов AI.
В среде Unreal Engine 4 вы можете реализовать довольно просто свою систему
FSM для AI, либо использовать стандартный инструментарий для написания
Behaviour Tree. В ситуации, когда планируется, что AI в вашей игре будет
комплексным, рекомендуется использовать Behaviour Trees (рисунок 94).
63
Рисунок 95. Нод Root.
Task нод - листья дерева. Они сообщают, что “делать”, и не имеют выходных
соединений (рисунок 96).
64
Рисунок 97. Нод Sequence.
65
Рисунок 99. Нод Decorator.
66
Рисунок 101. Примерный вид Blackboard.
67
формате. Процесс идентификации путей по локации называется Pathfinding. Три
основных типа навигационных систем это — Navigation Points, Navigation Grids
и Navigation Meshes.
Поставьте актор Nav Mesh Bounds Volume на уровень (рисунок 103). Вы
можете изменить масштаб актора, чтобы покрыть нужную площадь уровня.
Рисунок 103. Вы можете видеть границы NavMesh Bounds Volume в окне Viewport.
Откройте пункт Build и выберете пункт Build Paths, чтобы сгенерировать Nav
Mesh. При нажатии на клавишу P будет подсвечена область Nav Mesh, агенты,
управляемые AI, смогут перемещаться только по зеленой зоне (рисунок 104).
Рисунок 104. В выпадающем списке рядом с кнопкой Build, выберете опцию Build Paths.
68
перемещается на ногах. А если у вас игра про морские бои, где корабли
управляются AI, то логичнее использовать Pawn актора.
Добавьте Character Actor, назначьте ему скелетал меш (в данном примере
стандартный манекен) и превратите его в Blueprint класс. Откройте созданный
блюпринт (рисунок 105).
Рисунок 106. Нод AI Move To, заставляет блюпринт перемещаться к нужной позиции,
если она достижима на существующем навигационном меше.
69
Рисунок 107. Флаги, на которые стоит обратить внимание, чтобы персонаж плавно
поворачивался в направлении движения.
70
Рисунок 108. Создайте ассет Behaviour Tree и Blackboard.
71
110).
Рисунок 110. Используйте строку поиска, чтобы найти переменную AI Controller Class в
панели Details.
Рисунок 111. Нод Run Behaviour Tree создает экземпляр дерева поведения и запускает его,
нод Use Blackboard включает использование Blackboards.
72
есть стандартные аргументы. У нода MoveTo - это переменная из Blackboard к
которой нужно двигаться (Vector позиции или ссылка на объект). У нода Wait это
количество секунд ожидания.
Рисунок 113. Используйте кнопку New Key, чтобы добавлять новые переменные в
Blackboard.
73
Рисунок 114. Выделив созданную переменную, вы можете изменять её характеристики,
например, тип даных. В данном примере тип данных Object с Base Class типа Actor.
Рисунок 115. Выбрав нод Move To в его параметрах вы должны указать переменную из
Blackboard, которая будет использоваться нодом. В данном примере это переменная
Player Ref.
74
Рисунок 116
При запуске проекта агент будет следовать за игроком и при достижении цели
ждать 5 секунд, затем повторять дерево. Вы можете проследить выполнение дерева,
открыв его, при запущенной игры (рисунок 117).
Рисунок 117. Желтой обводкой выделяется нод дерева поведения, который выполняется в
настоящий момент времен.
75
Загарских Александр Сергеевич
Хорошавин Александр Александрович
Александров Эдуард Эмильевич
В авторской редакции
Редакционно-издательский отдел Университета ИТМО
Зав. РИО Н.Ф. Гусарова
Подписано к печати
Заказ №
Тираж
Отпечатано на ризографе
76
Редакционно-издательский отдел
Университета ИТМО
197101, Санкт-Петербург, Кронверкский пр., 49
77