1. Создание нового персонажа класса Character. Новый персонаж получает имя BPAI.
2. Выставление на сцену. Для того чтобы искусственный интеллект правильно функционировал, нам необходимо растянуть Nav Mesh Bounds Volume по всей площади, по которой ИИ может передвигаться. Найти его можно во вкладке Modes.
Modes World Outlmer г? Content Brows?
,-«» / * v Щ
Recently Placed
Visual Effects
^i;* Lightmass Character Indirect Deti
#1 Lightmass Importance Volume
Mesh Merge Culling vp!wi id
Nav Mesh Bounds Volume
All classes Nav Modifier Volume
§ Pain Causing Volume '¿I Physics Volume
Post Process volume
Рис. 1. Выставление сцены
3. Для управления ИИ создаем контроллер класса AIController и называем его C_AI. Заходим в контроллер и добавляем компонент AIPerception.
• Г- Components
+Add Component * ß
* C^AI (self)
%TransformComponent (Inherited)
PathFollowingComponent (Inherited)
ActionsComp (Inherited)
; Alperceptlon
Рис.2. Добавление компонента AlPerception
Этот компонент позволяет управлять «органами чувств» ИИ. В его свойствах
добавляем 2 сенсора: Sight Config и Hearing Config.
В Class Defaults объекта ИИ меняем контроллер на только что созданный CAI.
187
Заходим в Blueprint персонажа, добавляем компонент AIPerceptionStimuliSource и выставляем ему следующие настройки:
AIPerceptionStimuliSource Al Perception
Ало Register as Source Q
* Register as Source for Senses 2 Array elements + ® "Э
!! 0 шшшшя P X ~ 1
l яшмпяврд p * - -э
Рис.3. Настройки AIPerceptionStimuliSource
Данный компонент нужен для того, чтобы ИИ мог воспринимать игрока.
По нажатию кнопки Q игрок будет издавать звук, на который ИИ будет идти.
Система Behaviour Tree позволяет указывать, что должен делать ИИ в зависимости от параметров, которые хранятся в Blackboard. Для того чтобы описывать, как ИИ должен делать, используются Behaviour Tree Tasks.
Сначала создается Behaviour Tree и называется BT_AI. Далее создается Blackboard и называется её BBAI. После этого в Behaviour Tree в качестве доски с данными автоматически проставляется BBAI. В BBAI создаются переменные:
- CanSeePlayer(Bool) - проверяет, видит ли ИИ игрока;
- TargetLocation(Vector) - хранит координаты позиции, куда нужно идти.
Логика Behaviour Tree начинается с Root и идёт слева направо.
Далее добавляются 2 состояния: когда ИИ видит игрока и когда ИИ не видит игрока.
Selector - выбирает действие пока оно успешно выполняется.
Sequence - выполняет действия, пока одно из них не провалится.
Для того чтобы добавить условия, используется Decorator. Он позволяет менять требуемое значение переменной для выполнения условия. При нажатии на ПКМ по Sequence добавляется Blackboard Decorator.
"" Seque"'"D
Sequence
Toggle breakpoint '- Add breakpoint
д| Delete
Cut '-fa Copy im Duplicate Break Linkis)
Blackboard
Check Garneplay Tags on Aclor
Compare BHEntnes
Composite
ccndittonal Loop
cone check
Cooldown
Do es Path Eni st
Force Success
Is at Locatton
Is BBEntry Of Class
Keep in Corte
loop
Set Tag cooldown Tag Cooldown
Рис. 4. Добавление Blackboard Decorator
Теперь необходимо указать ИИ, что делать в случае, когда он видит или не видит игрока. Если ИИ видит, он должен получать и следовать к местоположению игрока. Если ИИ не видит игрока, он должен следовать к Target Location. То есть, пока не будет услышан звук, ИИ не сдвинется с места, потому что Target Location не будет меняться.
Для реализации сопровождения игрока необходимо создать новый Task, с названием его BTT_ChasePlayer и прописать преследование игрока.
Все в правильной последовательности подключается к Behaviour Tree.
Итоговый вариант будет выглядеть так:
к пост
»ttj'
J
Рис.5. Итоговый вариант
Теперь необходимо запустить Behaviour Tree в AIController. Когда ИИ видит или слышит игрока, компоненту AlPerception поступают сигналы, которые расписывают на выполняемые действия.
Когда компоненту AlPerception поступает сигнал о воздействии, необходимо взять информацию о поступивших сигналах и обновить переменные в Behaviour Tree.
Таким образом, с помощью системы Behaviour Tree можно с лёгкостью манипулировать поведением ИИ в зависимости от потребностей. Она также позволяет отслеживать состояние ИИ, на какой ветке происходит логика, значения переменных в Blackboard. Дополнительным плюсом может являться то, что эта система избавляет от лишней логики Blueprint персонажа. Взглянув на неё, даже необученный человек может понять, как работает ИИ.
Список литературы:
Портал издательской группы «ЭКСМО» [Электронный ресурс]. URL: https://eksmo.ru/book/izuchaem-unreal-engine-4-za-24-chasa-ITD965340/ (дата обращения 28.12.2019).
Туториал по Unreal Engine. Часть 2: Blueprints [Электронный ресурс]. URL: https://habr.com/ru/post/344446/ (дата обращения 28.12.2019).
Unreal Engine: официальный сайт [Электронный ресурс]. URL: https://docs.unrealengine.com/en-US/Engine/Blueprints/index.html (дата обращения 28.12.2019).
УДК 004.4'27
Погодин М.Д.
студент
Московский политехнический университет (Россия, г. Москва)
Унгуряну Д.
студент
Московский политехнический университет (Россия, г. Москва)
Арсентьев Д.А.
к.т.н., доцент кафедры «Информатика и информационные технологии»
Московский политехнический университет (Россия, г. Москва)
СРАВНЕНИЕ BLUEPRINT VISUAL SCRIPTING В UNREAL ENGINE И VISUAL SCRIPTING В UNITY
Аннотация: в статье рассматривается возможности визуального программирования для создания игр. В процессе написания статьи были проанализированы возможности визуального программирования в Unreal Engine и Unity.
Ключевые слова: разработка игр, визуально программирование, среда разработки, Unreal Engine, Unity.
Многим начинающим GameDev разработчикам предоставляется трудный выбор между множеством игровых движков. Решение зависит от того, с какими языками они лучше всего знакомы, какие игры они собираются разрабатывать, и на какие платформы больше всего ориентированы.