Разработка основного функционала игрового приложения для персональных компьютеров с использованием Unreal Engine
Автор: Буткина А.А., Кочкаева Ю.С., Чуднова Р.А.
Журнал: Огарёв-online @ogarev-online
Статья в выпуске: 14 т.10, 2022 года.
Бесплатный доступ
В статье описана реализация авторами основного функционала, разработанного на игровом движке «Unreal Engine» тестового приложения, предназначенного для запуска на персональных компьютерах. Разработка выполнялась с использованием визуального блокового языка программирования «Blueprint».
Визуальный блоковый язык программирования blueprint, игровой движок, скрипт, функциональные возможности
Короткий адрес: https://sciup.org/147250171
IDR: 147250171
Текст научной статьи Разработка основного функционала игрового приложения для персональных компьютеров с использованием Unreal Engine
Таким образом, данное исследование, посвященное рассмотрению реализации тестового игрового приложения, предназначенного для персональных компьютеров, на визуальном языке программирования с применением в качестве среды разработки игрового движка является актуальным.
Для достижения этой цели были поставлены и решены следующие задачи:
‒ выполнить анализ наиболее популярных игровых движков и на его основе сделать выбор оптимальной среды разработки;
‒ рассмотреть особенности использования языков визуального программирования;
‒ реализовать основные функции разрабатываемого приложения.
Анализ игровых движков. Игровой движок – особый класс программного обеспечения, который используется в качестве среды разработки игровых приложений. Современные разработчики видеоигр чаще всего используют следующие игровые движки: CryEngine, Unity, Unreal Engine. Каждый из них имеет свои особенности, но в тоже время существуют и общие черты, которые позволяют создавать проекты высокого уровня. Авторами были изучены основные принципы работы в каждой из данных сред разработки, а также проведён их сравнительный анализ, основные результаты которого приведены в таблице 1.
Таблица 1
Сравнение игровых движков
CryEngine |
Unity |
Unreal Engine |
|
Лицензия |
Условнобесплатная |
Условнобесплатная |
Условно-бесплатная |
Язык программирования |
С++ |
С# |
С++ |
Визуальная система программирования |
Flow Graph |
Bolt – требуется покупка |
Blueprint |
Внедрение 3D моделей в движок |
+ |
+ |
+ |
Библиотека ассетов |
Маленькая |
Большая |
Большая |
Оптимизация |
+ |
- |
+/- |
Кроссплатформенность |
Windows, PS, XBOX |
Windows, IOS, Android |
Windows, IOS, Android, PS, XBOX |
Тестирование в реальном времени |
+ |
+ |
+ |
Дополнительное ПО для работы |
- |
+ |
- |
Учебные пособия |
- |
+ |
+ |
Язык интерфейса |
Английский |
Английский |
Английский |
Техническая поддержка |
- |
+ |
+ |
Таким образом, в результате проведенного сравнительного анализа в качестве наиболее подходящего для разработки тестового приложения был выбран игровой движок «Unreal Engine», являющийся безоговорочным лидером среди всех аналогов.
Unreal Engine . В частности, «Unreal Engine» был выбран авторами благодаря своей доступности (является условно-бесплатным) и большим количеством возможностей, за которые в других движках пришлось бы доплачивать, например, за визуальный блоковый язык программирования «Blueprint», который облегчает и ускоряет процесс написания кода и не требует особых знаний C++, языка программирования, поддерживаемого для написания скриптов в «Unreal Engine». Кроме того, данный движок имеет достаточно большое количество учебных пособий и возможность обратиться в техподдержку по решению возникшей проблемы или за получением дополнительной информации [3].
Следует учитывать, что для полноценной стабильной работы в данной среде разработки на компьютере необходимо выполнение следующих системных требований для операционных систем семейства Windows [4]:
‒ операционная система: Windows 10 64-bit;
-
‒ процессор: Intel или AMD 4 ядра и более, тактовая чистота 2,5 ГГц или выше;
-
‒ оперативная память: 8 ГБ;
-
‒ видеокарта: совместимая с DirectX 11 или DirectX 12;
-
‒ 22 ГБ свободного места на жёстком диске.
Для написания функциональных скриптов программа «Unreal Engine» поддерживает два языка программирования: «С++» и «Blueprint». Для разработки программы авторами было принято решение использовать язык программирования «Blueprint».
Blueprint . « Blueprint » – строго типизированный визуальный скриптовый язык, с помощью которого можно описать логику приложения любой сложности без использования языков программирования. Другими словами, это тот же C++, но в более удобном блочном виде [5]. Главным плюсом такого языка является простота при его использовании. Вместо написания кода предлагается возможность составлять системы из логических блоков. С помощью такой системы можно «собрать» программу любой сложности, главное – понимать основные принципы объектно-ориентированного программирования [6].
Однако, у данного языка программирования также есть и недостатки. В частности, одним из его недостатков является громоздкость, т.к. при составлении простого действия необходимо использование нескольких блоков, а при наличии большого количества операций система быстро становится слишком нагруженной и трудной для восприятия.
Реализованный функционал приложения. Авторами были реализованы следующие основные функциональные возможности разрабатываемого приложения, позволяющие пользователю осуществлять управление главным персонажем.
-
1) Управление игровым персонажем
В первую очередь перед созданием логики передвижения персонажа в игровом движке были определены и настроены клавиши, которые при нажатии вызывают определённое действие (рис. 1).

Таким образом, персонаж будет передвигаться вперёд/назад при нажатии на клавиши «W»/«S», а также вправо/влево при нажатии на клавиши «D»/«A». Считывание сигнала с клавиатуры реализовано следующим образом (рис. 2).

Рис. 2. Модуль логики управления главным персонажем.
Для более реалистичного игрового процесса была добавлена возможность вращения камерой с помощью мыши. Вектор X отвечает за поворот влево/вправо, вектор Y - за поворот вверх/вниз. В данном случае нам нужно получать текущие значения осей мыши и вращать камеру в зависимости от её движения (рис. 3).

C Is Alive? Do Can?
О InputAxis Turn
Do Can ^
Axis Value •>
Target | self
Sence •'
•> Vai
Do Can ^
Axis Value •>
Target [ self
Sence •'
J Add Controller Yaw Input
Target rs Pawn
Рис. 3. Модуль логики управления камерой.
Для бега и передвижения персонажа в положении «полуприсед» авторами были реализованы отдельные модули логики (рис. 4, 5). Основная логика построения блоковой системы для функции «бег» состоит в следующем: изначально необходимо определить, какова скорость персонажа. Далее, при нажатии и удерживании любой клавиши Shift, задаётся значение скорости бега/шага персонажа путём прибавления/вычитания ускорения к полученному на предыдущем шаге результату. Передвижение в положении «полуприсед» происходит после получения сигнала о смене положения персонажа, т.е. после нажатия на клавишу C, при этом скорость передвижения самого персонажа становится медленнее.

Рис. 4. Модуль логики, отвечающий за быстрое передвижение персонажа.
(> InputAction Run Pressed ^ Released | Key |
'{5 Is Alive? Do Can’ — b In Do Can * ^e^—---^^^ |
_| SET •> Max Walk Speed Target SET |
D o- |
||
\ 5 ls Alive ? Do Can’ ^ In Do Can ^ ♦ ^ |
V'- |
Add pin + |
|||
Character Movement |
Target Max Walk Speed >► Acceleration ♦> — |
Character Movement |
•> Max Walk Speed Target |
D O' |

Рис. 5. Модуль логики, отвечающий за передвижение персонажа в положении «полуприсед».
-
2) Виджет шкал жизненных показателей
Для визуального представления специальных численных показателей «Выносливость» и «Рассудок», реализуемых в тестовом игровом приложении, авторами используется виджет. Виджет (widget) представляет собой элемент графического интерфейса пользователя, используемый в программе «Unreal Engine» для создания человеко-машинного интерфейса программы. Для этого первоначально создаётся дизайн виджета, в который добавляются все необходимые компоненты из встроенных в игровой движок элементов, например, «Полоса прогресса», «Текстовое поле» и т.п. (рис. 6). Далее с помощью языка «Blueprint» реализуется логика работы виджета, т.е. добавляются отклики на определённые действия (рис. 7–9). На заключительном этапе устанавливается событие, позволяющее игроку открыть определённый виджет в процессе работы приложения (рис. 10).

Рис. 6. Создание интерфейса виджета «Шкалы жизненных показателей».

Рис. 7. Модуль логики передачи значений жизненных показателей в виджете «Шкалы жизненных показателей».

Рис. 8. Модуль логики получения значений жизненных показателей.

Рис. 9. Модуль логики записи значений жизненных показателей.

Рис. 10. Настраиваемое событие для виджета «Шкалы жизненных показателей».
-
3) Отображение жизненных показателей главного персонажа
Во многих играх выносливость персонажа зависит от скорости прохождения уровней, причём под скоростью подразумевается скорость шага/бега персонажа. Так в разрабатываемом тестовом приложении при передвижении персонажа в режиме «бег» теряется выносливость. Когда её количество достигает отметки «0», персонаж перестаёт передвигаться в режиме «бег». Количество выносливости автоматически восстанавливается при условии, если персонаж передвигается обычным шагом (рис. 11).

Рис. 11. Модуль логики для реализации игрового механизма «выносливость».

Рис. 12. Модуль логики для нанесения урона персонажу.

Рис. 13. Модуль логики вызова события смерти персонажа.
Мёртвый персонаж не может совершать каких-либо действий, поэтому авторами была создана функция для предотвращения таких ситуаций. Данная функция проверяет состояние персонажа и в случае его смерти блокирует любые его движения (рис. 14).

Рис. 14 Модуль логики блокировки любых действий персонажа в случае его смерти.
-
4) Разрушение объектов
Иногда пользователю необходимо будет найти определённые предметы в реализуемом приложении для дальнейшей работы в нём. Для усложнения поиска данные предметы будут спрятаны внутри других, например, в вазе. Чтобы достать их, персонаж должен разбить данную вазу или, другими словами, разрушить объект.
Чтобы при взаимодействии с определённым объектом главный герой мог его разрушить, первоначально потребовалось создать и настроить разрушаемый объект (рис. 15, красным прямоугольником обозначен триггер разрушения объекта, жёлтым прямоугольником – количество частей, на которые распадётся объект при столкновении). Далее авторами была реализована логика, позволяющая объекту, разрушится при взаимодействии с персонажем (рис. 16).

Рис. 15. Создание и настройка разрушаемого объекта.

Рис. 16. Модуль логики разрушения объекта при столкновении с главным персонажем.
Заключение. Все задачи, поставленные в рамках данного исследования, были решены. Результатом работы является разработанное тестовое игровое приложение с описанным функционалом, позволившее в процессе своей реализации изучить основные принципы работы в игровом движке «Unreal Engine», а также особенности программирования на визуальном языке программирования «Blueprint».
Список литературы Разработка основного функционала игрового приложения для персональных компьютеров с использованием Unreal Engine
- Объемы игрового рынка в 2022 году могут превысить 200 млрд долларов [Электронный ресурс]. - Режим доступа: https://club.dns-shop.ru/digest/obemyi-igrovogo-ryinka-v-2022-godu-mogut-prevyisit-200-mlrd-dolla/(дата обращения: 02.11.2022).
- Компьютерные и видеоигры (российский рынок) [Электронный ресурс]. - Режим доступа:https://www.tadviser.ru/index.php/Статья:Компьютерные_и_видеоигры_(российский_рынок) (дата обращения: 02.11.2022).
- 5 лучших программ для создания собственной игры [Электронный ресурс]. - Режим доступа: https://geeker.ru/games/programmy-dlya-sozdaniya-igr (дата обращения: 02.11.2022).
- Hardware and Software Specifications [Электронный ресурс]. - Режим доступа: https://docs.unrealengine.com/4.27/RecommendedSpecifications/(дата обращения: 02.11.2022).
- Unreal Engine 4 [Электронный ресурс]. - Режим доступа: https://habr.com/ru/post/249965/(дата обращения: 02.11.2022).
- Основные приёмы Blueprint-программирования [Электронный ресурс]. - Режим доступа: https://it-cube48.ru/основные-приёмы-blueprint-программирования/(дата обращения: 02.11.2022).