Научная статья на тему 'ИССЛЕДОВАНИЕ ПАТТЕРНОВ ПРОЕКТИРОВАНИЯ ВИДЕОИГР ДЛЯ ФОРМУЛИРОВАНИЯ ОБОБЩЕННОЙ МОДЕЛИ РАЗРАБОТКИ'

ИССЛЕДОВАНИЕ ПАТТЕРНОВ ПРОЕКТИРОВАНИЯ ВИДЕОИГР ДЛЯ ФОРМУЛИРОВАНИЯ ОБОБЩЕННОЙ МОДЕЛИ РАЗРАБОТКИ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
298
33
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВИДЕОИГРЫ / АРХИТЕКТУРНЫЕ ПАТТЕРНЫ / ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ / ИГРОВЫЕ ДВИЖКИ / РАЗРАБОТКА ИГР

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Богданов С. И., Костюкова Е. П., Лысенко А. Ф.

Рассмотрено текущее применение параллельных вычислений в видеоиграх. Указана значимость параллельных вычислений в соответствии с законом Мура. Проведен сравнительный анализ. Выявлена проблема, связанная с параллельными вычислениями. Отмечены основные инструменты, направленные на внедрение многопоточной обработки в игровые движки. Описаны требуемые параметры для проведения эксперимента. Выдвинута гипотеза об оптимизации кодовой части Unity D.O.T.S.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

STUDY OF VIDEO GAME DESIGN PATTERNS FOR THE FORMULATION OF A GENERALIZED DEVELOPMENT MODEL

The current application of parallel computing in video games is considered. The significance of parallel computing is indicated, referring to Moore's law. A comparative analysis of game engines was carried out. A problem related to parallel computing has been identified. The main tools aimed at implementing multithreaded processing in game engines are noted. The required parameters for the experiment are described. A hypothesis is put forward about optimizing the code part of Unity D.O.T.S.

Текст научной работы на тему «ИССЛЕДОВАНИЕ ПАТТЕРНОВ ПРОЕКТИРОВАНИЯ ВИДЕОИГР ДЛЯ ФОРМУЛИРОВАНИЯ ОБОБЩЕННОЙ МОДЕЛИ РАЗРАБОТКИ»

УДК 004.457

ИССЛЕДОВАНИЕ ПАТТЕРНОВ ПРОЕКТИРОВАНИЯ ВИДЕОИГР ДЛЯ ФОРМУЛИРОВАНИЯ ОБОБЩЕННОЙ МОДЕЛИ РАЗРАБОТКИ

С. И. Богданов, Е. П. Костюкова, А. Ф. Лысенко

Донской государственный технический университет (г. Ростов-на-Дону, Российская Федерация)

Рассмотрено текущее применение параллельных вычислений в видеоиграх. Указана значимость параллельных вычислений в соответствии с законом Мура. Проведен сравнительный анализ. Выявлена проблема, связанная с параллельными вычислениями. Отмечены основные инструменты, направленные на внедрение многопоточной обработки в игровые движки. Описаны требуемые параметры для проведения эксперимента. Выдвинута гипотеза об оптимизации кодовой части Unity D.O.T.S.

Ключевые слова: видеоигры, архитектурные паттерны, параллельные вычисления, игровые движки, разработка игр.

STUDY OF VIDEO GAME DESIGN PATTERNS FOR THE FORMULATION OF A GENERALIZED DEVELOPMENT MODEL

S. I. Bogdanov, E. P. Kostyukova, A. F. Lysenko

Don State Technical University (Rostov-on-Don, Russian Federation)

The current application of parallel computing in video games is considered. The significance of parallel computing is indicated, referring to Moore's law. A comparative analysis of game engines was carried out. A problem related to parallel computing has been identified. The main tools aimed at implementing multithreaded processing in game engines are noted. The required parameters for the experiment are described. A hypothesis is put forward about optimizing the code part of Unity D.O.T.S.

Keywords: video games, architectural patterns, parallel computing, game engines, game development.

Введение. Разработка компьютерных игр в данный момент является быстроразвивающейся индустрией [1]. В соответствии с темпами создания новых игровых проектов совершенствуются текущие и выходят в свет новые технологии [2], позволяющие сделать процесс создания игр более комфортным и эффективным. Однако создатели программного обеспечения (ПО) иногда недостаточно углубляются в процесс оптимизации своих конечных продуктов и их ресурсопотребление. Поэтому параллельные вычисления в данный момент очень актуальны, ведь они предоставляют огромный потенциал для этих целей [3].

Согласно закону Мура, вычислительная мощность процессоров растет экспоненциально, каждые два года увеличиваясь вдвое. Примерно с середины 2000-х годов по разным причинам производители процессоров предпочитают многоядерные архитектуры. Соответственно, для получения всей выгоды от возросшей производительности процессоров, программы должны переписываться в соответствующей манере, с использованием параллельных вычислений. В противном случае, разработчики столкнутся с проблемой, при которой для созданного ПО не будет хватать вычислительных мощностей.

Основная часть. На данный момент все ныне существующие игровые движки используют параллельные вычисления, однако не во всех аспектах — так, например, многопоточной обработке подвергаются рендеринг изображения, обработка физических вычислений, обработка звуковых дорожек. Несмотря на это, логика игры, ее правила и механики обрабатываются в одном

L4QQ/J

потоке одного ядра ЦП, что, при большом масштабе проекта выливается в так называемые «фризы» — моменты, когда в очереди на выполнение оказывается множество команд и время обработки значительно вырастает.

Решить данную проблему призван архитектурный паттерн Entity — Component — System (ECS) [4], который заменяет традиционную для разработки игр парадигму объектно-ориентированного программирования на параллельное программирование и работу с данными.

В Unity3D применение данного архитектурного шаблона представлено в виде D.O.T.S. [5] — пакетов дополнений, устанавливаемых поверх основного Unity. Этот пакет, помимо реализации систем сущностей, содержит в себе планировщик задач (C# Jobs), открывающий доступ к написанию безопасного многопоточного кода.

Целью данной работы является оптимизация архитектурного паттерна ECS в рамках Unity D.O.T.S., для чего необходимо:

1. Изучить внутреннее устройство компонентов D.O.T.S.

2. Разработать игровой проект, задействующий загрузку ЦП, версию с использованием D.O.T.S. и без; провести сравнительный анализ роста производительности.

3. Найти и устранить критические ошибки в кодовой части D.O.T.S.

4. Поставить эксперимент — внедрить исправленную версию D.O.T.S. в игровой проект. По результатам эксперимента провести сравнительный анализ с оригинальным решением и подтвердить или опровергнуть гипотезу исследования.

Для проведения показательного эксперимента потребуется разработать игровой проект, в котором будет задействовано множество однотипных 3D-объектов. Необходимыми требованиями к игровому движку в данном случае являются:

1. Поддержка 3D-графики.

2. Полномасштабная поддержка параллельных вычислений, задействование всех доступных ресурсов процессора для обработки.

3. Опционально, поддержка DataFlow-парадигмы программирования для лучшей работы с параллельными вычислениями.

4. Возможность портировать готовые проекты на мобильные устройства.

Проведем сравнительный анализ наиболее популярных игровых движков.

Unity3D

Unity является одним из популярных движков, использующий язык программирования C#. Данный продукт предоставляет множество платных и бесплатных ассетов, которые помогут разработчикам в создании игры. Также существует пробная версия дополнительных программных пакетов D.O.T.S., позволяющая применять параллельные вычисления ко всем игровым составляющим — логика, физика, видео- и звуковые потоки.

Unreal Engine

Unreal Engine [6] универсальный и очень гибкий движок, использующий язык программирования C++. Он наполнен множеством бесплатных инструментов разработки. Начинающим разработчикам в работе поможет визуальный редактор Blueprints, позволяющий создать игру без единой строки кода. Его преимуществом является поддержка UltraHD разрешения графики и прямая работа с памятью с помощью встроенных библиотек. Параллельные вычисления можно осуществлять с помощью встроенного в C++ планировщика задач, однако его невозможно применить к чему-либо, кроме логической части игры и физическим вычислениям.

L4QQ/J

CryEngine

CryEngine [7] на данный момент представляет разработчикам возможность делать в своих проектах фотореалистичную графику. Данный движок предоставляет встроенную поддержку мультипоточных вычислений, однако, так же, как и в Unreal Engine, они применимы лишь на логическую и физическую части игрового проекта.

Godot

Godot [8] развивающийся движок, использующий собственный язык программирования. Присутствует поддержка C++ и C#, в скором времени и Python. Идеально подойдет для знакомства с разработкой игр, если у пользователя уже есть небольшой опыт в программировании. Также имеет встроенный функционал распараллеливания процессов с помощью планировщика задач.

GameMaker Studio 2

GameMaker Studio 2 [9] является хорошим вариантом для начинающих разработчиков, которые хотят попробовать себя в сфере разработки игр — движок имеет похожую на Blueprints в Unreal систему программирования D&D, имеет встроенный редактор графики. Однако данный продукт не предназначен для реализации 3D-проектов. Встроенный язык GML не имеет возможности вести параллельные вычисления.

В следующей сравнительной таблице приведены требования к игровым движкам и соответствие этим требованиям самих движков.

Таблица 1

Требования к игровым движкам и соответствие этим требованиям самих движков

Критерий/ Движок Unity3D c DOTS. Unreal Engine CryEngine Godot GameMaker Studio 2

Поддержка 3D + + + + -

Полномасштабные параллельные вычисления + - - - -

DataFlow -парадигма + + + + +

Портирование на мобильные устройства + + - + +

Исходя из таблицы сравнений, наиболее подходящим по критериям движком является Unity3D с пакетами D.O.T.S.

Целью проведения эксперимента является целесообразность применения D.O.T.S. как инструмента для запуска параллельной обработки видеоигр на ЦП. В данном эксперименте авторы планируют расположить на одной игровой сцене множество однотипных объектов (более 10000), задать им определенное поведение, запустить и измерить интересующие нас показатели на различных платформах, а именно:

1. Частоту кадров в секунду.

2. Нагрузку на процессор.

3. Наличие кратковременных просадок в работе процессора.

4. Нагрузку на видеокарту.

L4QQ/J

5. Температуру и энергопотребление процессора.

Вывод. Основываясь на теоретических знаниях о выгоде применения параллельных вычислений при разработке ПО, была выдвинута гипотеза: «Оптимизация кодовой части Unity D.O.T.S., отвечающей за взаимодействие Сущностей и Систем, позволит пользователям не углубляться в строение движка, а сфокусироваться на написании многопоточных, модульных игр». Также предполагается, что данные модификации полностью раскроют потенциал архитектурного паттерна ECS и Data Driven парадигмы программирования. В следующей публикации будут описаны результаты эксперимента и предложены наилучшие пути оптимизации игровых проектов.

Библиографический список

1. Индустрия моды — Индустрия компьютерных игр / Дата-центр Высшей школы экономики : [сайт]. — URL: https://dcenter.hse.ru/data/2020/07/27/1599127653/-Индустриякомпьютерных%20игр-2020.pdf (дата обращения : 06.04.2022).

2. Топ - 4 технологии разработки компьютерных игр в 2020 году / GDJob : [сайт]. — URL: https://gdjob.pro/stati/raznoe/top-4-tekhnologii-razrabotki-kompyuternykh-igr-v-2020-godu (дата обращения : 06.04.2022).

3. Достоинства и недостатки параллельного программирования / Электронный научно-практический журнал «Современные научные исследования и инновации» : [сайт]. — URL: https://web.snauka.ru/issues/2016/06/69538/ (дата обращения : 06.04.2022).

4. Шаблон проектирования Entity-Component-System — реализация и пример игры / Хабр : [сайт]. — URL: https://habr.com/ru/post/343778 (дата обращения : 06.04.2022).

5. Unity D.O.T.S. — Производительность по умолчанию / Unity3D : [сайт]. — URL: https://unity.com/ru/dots (дата обращения : 06.04.2022).

6. Unreal Engine 5 / UnrealEngine : [сайт]. — URL: https://www.unrealengine.com/en-US/unreal-engine-5 (дата обращения : 06.04.2022).

7. CryEngine / CryEngine: [сайт]. — URL: https://www.cryengine.com (дата обращения : 06.04.2022).

8. Godot Engine - Free and open source 2D and 3D game engine / Godot Engine: [сайт]. — URL: https://godotengine.org/ (дата обращения: 06.04.2022).

9. GameMaker Studio 2 / YoYoGames : [сайт]. — URL: https://www.yoyogames.com/ru/gamemaker (дата обращения : 06.04.2022).

Об авторах:

Богданов Сергей Игоревич, магистрант кафедры «Робототехника и мехатроника», Донского государственного технического университета (344003, РФ, г. Ростов-на-Дону, пл. Гагарина, 1), ghostofsergo@ gmail.com

Костюкова Елена Петровна, магистрант кафедры «Робототехника и мехатроника», Донского государственного технического университета (344003, РФ, г. Ростов-на-Дону, пл. Гагарина, 1), [email protected]

Лысенко Алексей Федорович, заместитель директора Института технологий Донского государственного технического университета, к.т.н., «Робототехника и мехатроника» (344003, РФ, г. Ростов-на-Дону, пл. aflysenko@ gmail.com

опережающих доцент каф. Гагарина, 1),

About the Authors:

Bogdanov, Sergey I., Master's degree student, Department of Robotics and Mechatronics, Don State Technical University (1, Gagarin sq., Rostov-on-Don, 344003, RF), [email protected]

Kostyukova, Elena P., Master's degree student, Department of Robotics and Mechatronics, Don State Technical University (1, Gagarin sq., Rostov-on-Don, 344003, RF), [email protected]

Lysenko, Aleksey F., Associate Director, Institute of Emerging Technologies, Don State Technical University, Cand.Sci., Associate professor, Department of Robotics and Mechatronics (1, Gagarin sq., Rostov-on-Don, 344003, RF), [email protected]

i Надоели баннеры? Вы всегда можете отключить рекламу.