АННОТАЦИЯ 3
Анализ предметной области 10
1.1 Индустрия видеоигр как сфера научной деятельности 10
1.2 Обзор существующих решений 11
1.3 Обзор аналогов видеоигр жанра RogueLike 13
2 ECS и ООП в Unity 16
2.1 Объектно-Ориентированное Программирование (ООП) в Unity 16
2.2 Entity Component System (ECS) в Unity с использованием Leeks 16
2.3 Разработка диаграммы ECS 17
3 Реализация PVE подсистемы на примере ECS и ООП 19
3.1 Система врагов 21
3.2 Система игрока 28
3.3 Система способностей 34
4 Сравнение производительности ООП и ECS архитектур в Unity 44
4.1 Профилирование 44
4.2 Бенчмаркинг 46
4.3 Итоги сравнения 48
ЗАКЛЮЧЕНИЕ 51
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 53
Современная игровая индустрия является динамичной и постоянно развивающейся областью, где разработчики постоянно стремятся к инновациям и улучшениям. От креативных и содержательных аспектов разработки игр, таких как сюжет, графика и геймплей, до использования наиболее эффективных программных средств и архитектур для обеспечения гибкости и производительности - все эти элементы играют ключевую роль в создании успешных игровых приложений.
Среди многочисленных вопросов, стоящих перед современными игровыми разработчиками, важное место занимает выбор между различными подходами к программированию. Каждый из этих подходов имеет свои уникальные преимущества и недостатки, и выбор между ними может оказать значительное влияние на конечный результат.
В частности, стоит обратить внимание на сравнение двух основных архитектур: традиционной объектно-ориентированной архитектуры (ООП) и более современной архитектуры Entity Component System (ECS)[4]. В то время как ООП славится своей гибкостью и интуитивной структурой при описании и взаимодействии с игровыми объектами и их атрибутами, ECS предлагает впечатляющую производительность и легкость масштабирования, особенно при управлении большим количеством сущностей в игре.
В этой работе мы представим глубокое и детальное сравнение этих двух архитектур. Мы познакомимся с их основными характеристиками, разберем преимущества и недо статки каждой из них, и проанализируем их в контексте реальных игровых сценариев. Наша цель - предоставить конкретную, объективную и полезную информацию, которая поможет игровым разработчикам принимать обоснованные решения при выборе между ООП и ECS для своих будущих проектов.
Анализ будет основан на профилировании, бенчмаркинге и статистическом анализе производительности обеих систем на примере игры Unity в жанре "RogueLike". Мы исследуем различные аспекты производительности, включая использование процессора, управление памятью, пропускную способность, а также затраты на поддержку и расширение кода.
Жанр "RogueLike" в мире видеоигр, представляет собой уникальную категорию, которая сосредотачивается на особенностях ролевых игр (RPG). Давайте представим, что это как в фильмах про героев, которые отправляются в приключение, где каждый шаг, каждое действие влияет на исход истории. "RogueLike" игры, если перевести на простой язык, - это подобные приключения, но в мире компьютерных игр.
В основе названия этого жанра лежит игра под названием "Rogue", созданная еще в 1980 году. Эта игра стала своеобразным "первопроходцем", заложившим основы жанра "RogueLike".
Сейчас попробуем разобрать ключевые особенности этого жанра:
• "Перманентная смерть", или "permadeath". Это как в жизни - если герой погибает, ему не просто "отрастают новые жизни", а игра начинается сначала. Это добавляет ощущение реальности и серьезности происходящего.
• "Процедурная генерация". Это значит, что каждый раз, когда вы начинаете игру заново, уровни, предметы и даже враги создаются случайным образом. Это похоже на новую книгу или фильм, где сюжет всегда отличается от предыдущего. Именно такой подход увеличивает интерес и желание снова и снова возвращаться к игре.
• "Игровая сложность". Игры в жанре "RogueLike" часто требуют от игрока не просто быстро нажимать кнопки, но и думать, принимать решения, строить стратегии. Это как шахматы, где каждый ход может повлиять на исход игры.
В выборе этого жанра для сравнения ООП и ECS есть несколько весомых причин:
• Масштабируемость: Игры жанра "RogueLike" часто предполагают наличие большого числа объектов и сущностей на экране одновременно, что делает их подходящими для тестирования производительности различных подходов к программированию.
• Сложность: Динамичность и разнообразие "RogueLike" игр, их сложность и нелинейность геймплея помогают продемонстрировать возможности и преимущества использования разных архитектур в различных игровых сценариях.
• Популярность: Жанр "RogueLike" набирает все большую популярность, и многие разработчики стараются создать уникальные и интересные игры в этом жанре, что делает его актуальным и значимым для анализа.
Цель данной дипломной работы заключается в создании прототипа PVE-подсистемы для игры жанра "RogueLike" и сравнении двух основных подходов при разработке видеоигр: объектно-ориентированной программной архитектуры (ООП) и системы Entity Component System (ECS). Для достижения поставленной цели были определены следующие ключевые задачи:
• Провести обзор и анализ существующих решений
• Сравнить подходы к реализации контексте ООП и ECS.
• Реализовать прототип подсистемы на ECS и ООП.
• Сравнить реализации PVE подсистемы на ООП и ECS по производительности.
В ходе разработке создана PVE подсистема для игры в жанре "RogueLike". Данный прототип PVE-подсистемы имеет 2 реализации ECS (Entity-Component-System) и ООП (объектно-ориентированное программирование) архитектуре.
Для достижения этой цели были выполнены следующие задачи:
1. Разработаны концептуальные модели системы врагов, игрока, способностей для обеих архитектур - ECS и ООП. Были определены основные компоненты и системы.
2. Реализована система врагов, игрока, способностей на обеих архитектурах.
3. Проанализированы результаты тестирования и проведено сравнение ECS и ООП архитектур по различным критериям, таким как производительность, эффективность использования ресурсов, гибкость и расширяемость.
В результате работы были получены следующие выводы:
1. Архитектура ECS позволяет эффективно управлять и обрабатывать большое количество объектов, благодаря использованию систем и компонентной модели. Она обладает высокой производительностью и эффективностью в использовании ресурсов.
2. ООП архитектура обладает гибкостью и расширяемостью, позволяя создавать уникальные классы объектов с различными свойствами и методами. Однако, при работе с большим количеством объектов, может возникнуть проблема производительности из-за накладных расходов на управление объектами.
Таким образом, при выборе архитектуры для разработки PVE подсистемы в игре "RogueLike" рекомендуется использовать ECS архитектуру, если требуется обрабатывать большое количество врагов и обеспечить высокую производительность и эффективность использования ресурсов. Однако, если требуется гибкость и расширяемость в создании уникальных классов врагов, ООП архитектура также может быть применена с учетом возможных проблем производительности при работе с большим количеством объектов.