Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал:
https://er.chdtu.edu.ua/handle/ChSTU/9103| Назва: | Програмне забезпечення комп’ютерної гри за мотивом Vampire Survivors |
| Автори: | Заспа, Григорій Олександрович Тітов, Олександр Андрійович |
| Ключові слова: | КОМП’ЮТЕРНА ГРА;VAMPIRE SURVIVORS;UNITY;C#;ІГРОВА МЕХАНІКА;МОДУЛЬНА АРХІТЕКТУРА;РОЗШИРЮВАНІСТЬ;COMPUTER GAME;VAMPIRE SURVIVORS;UNITY;C#;GAME MECHANICS;MODULAR ARCHITECTURE;SCALABILITY |
| Дата публікації: | 17-чер-2025 |
| Короткий огляд (реферат): | АНОТАЦІЇ
Виконавець: Тітов Олександр Андрійович
Назва роботи: Програмне забезпечення комп’ютерної гри за мотивом
Vampire Survivors
Спеціальність: 121 Інженерія програмного забезпечення.
Навчальний заклад: «Черкаський державний технологічний університет» м.
Черкаси, 2025 р.
У бакалаврській роботі розглядається розробка програмного забезпечення
комп’ютерної гри за мотивом Vampire Survivors. Основною метою роботи є
створення гри з елементами виживання та розвитку персонажа, що забезпечує
гравцю захопливий ігровий досвід. Гра повинна відповідати вимогам до
функціональності, зручності використання та продуктивності.
У ході роботи було проведено детальний аналіз жанру виживання та
основних механік оригінальної гри Vampire Survivors, визначено ключові вимоги
до гри та спроєктовано її основні компоненти. Основні ідеї та результати
досліджень включають:
формування вимог: визначено основні ігрові механіки, включаючи
систему вибору та покращення зброї, управління персонажем, створення ворогів та
їх поведінки;
моделювання функціоналу: створено концептуальну, логічну та фізичну
моделі гри, що включають карту, персонажа, систему зброї та ворогів. Визначено
механізми взаємодії між цими елементами;
реалізація системи: гра розроблена на основі ігрового рушія Unity з
використанням мови програмування C#. Забезпечено гнучкість та можливість
розширення гри за рахунок модульної архітектури. Описана структура проєкту та
використані технології. ANNOTATIONS Performer: Titov Oleksandr Andriiovych. The title of the work: "Computer game software based on Vampire Survivor". Specialty: 121 software engineering. Educational Institution: Cherkasy State Technological University, Cherkasy, 2025. The bachelor's thesis focuses on the development of software for a computer game inspired by Vampire Survivors. The main objective is to create a game with survival elements and character progression, providing players with an engaging gameplay experience. The game must meet functional, usability, and performance requirements. The study included a detailed analysis of the survival genre and the core mechanics of the original game, Vampire Survivors. Key requirements for the game were identified, and its main components were designed. The main ideas and findings include: Requirements formulation: the primary game mechanics were defined, including the weapon selection and upgrade system, character control, enemy creation, and their behavior; Functionality modeling: conceptual, logical, and physical models of the game were developed, covering the map, character, weapon system, and enemies. Interaction mechanisms between these elements were also defined; System implementation: the game was developed using the Unity game engine with C# programming language. Flexibility and scalability were ensured through a modular architecture. The project structure and technologies used are described. The conclusions show that the created game meets the survival genre's requirements, has an engaging character and weapon progression mechanic, and demonstrates stable performance. The system is easily scalable and can be extended with new elements. |
| URI (Уніфікований ідентифікатор ресурсу): | https://er.chdtu.edu.ua/handle/ChSTU/9103 |
| Розташовується у зібраннях: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) |
Файли цього матеріалу:
| Файл | Опис | Розмір | Формат | |
|---|---|---|---|---|
| Кваліфікаційна робота бакалавра Тітов Олександр Андрійович.pdf Restricted Access | 4.34 MB | Adobe PDF | Переглянути/Відкрити Запит копії |
Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи
«бакалавра»
на тему: Програмне забезпечення комп’ютерної гри за мотивом Vampire
Survivors
Виконав: студент 4 курсу, групи ПЗ-2104
Напряму підготовки
121 «Інженерія програмного забезпечення»
(шифр і назва напряму підготовки)
Студент Тітов О. А.
(прізвище та ініціали)
Керівник Заспа Г. О.
(прізвище та ініціали)
Рецензент Федонюк В. В.
(прізвище та ініціали)
Черкаси 2025
АНОТАЦІЇ
Виконавець: Тітов Олександр Андрійович
Назва роботи: Програмне забезпечення комп’ютерної гри за мотивом
Vampire Survivors
Спеціальність: 121 Інженерія програмного забезпечення.
Навчальний заклад: «Черкаський державний технологічний університет» м.
Черкаси, 2025 р.
У бакалаврській роботі розглядається розробка програмного забезпечення
комп’ютерної гри за мотивом Vampire Survivors. Основною метою роботи є
створення гри з елементами виживання та розвитку персонажа, що забезпечує
гравцю захопливий ігровий досвід. Гра повинна відповідати вимогам до
функціональності, зручності використання та продуктивності.
У ході роботи було проведено детальний аналіз жанру виживання та
основних механік оригінальної гри Vampire Survivors, визначено ключові вимоги
до гри та спроєктовано її основні компоненти. Основні ідеї та результати
досліджень включають:
формування вимог: визначено основні ігрові механіки, включаючи
систему вибору та покращення зброї, управління персонажем, створення ворогів та
їх поведінки;
моделювання функціоналу: створено концептуальну, логічну та фізичну
моделі гри, що включають карту, персонажа, систему зброї та ворогів. Визначено
механізми взаємодії між цими елементами;
реалізація системи: гра розроблена на основі ігрового рушія Unity з
використанням мови програмування C#. Забезпечено гнучкість та можливість
розширення гри за рахунок модульної архітектури. Описана структура проєкту та
використані технології.
Ключові слова. КОМП’ЮТЕРНА ГРА, VAMPIRE SURVIVORS, UNITY,
C#, ІГРОВА МЕХАНІКА, МОДУЛЬНА АРХІТЕКТУРА, РОЗШИРЮВАНІСТЬ
ANNOTATIONS
Performer: Titov Oleksandr Andriiovych.
The title of the work: "Computer game software based on Vampire Survivor".
Specialty: 121 software engineering.
Educational Institution: Cherkasy State Technological University, Cherkasy, 2025.
The bachelor's thesis focuses on the development of software for a computer game
inspired by Vampire Survivors. The main objective is to create a game with survival
elements and character progression, providing players with an engaging gameplay
experience. The game must meet functional, usability, and performance requirements.
The study included a detailed analysis of the survival genre and the core mechanics
of the original game, Vampire Survivors. Key requirements for the game were identified,
and its main components were designed. The main ideas and findings include:
Requirements formulation: the primary game mechanics were defined, including
the weapon selection and upgrade system, character control, enemy creation, and their
behavior;
Functionality modeling: conceptual, logical, and physical models of the game
were developed, covering the map, character, weapon system, and enemies. Interaction
mechanisms between these elements were also defined;
System implementation: the game was developed using the Unity game engine
with C# programming language. Flexibility and scalability were ensured through a
modular architecture. The project structure and technologies used are described.
The conclusions show that the created game meets the survival genre's
requirements, has an engaging character and weapon progression mechanic, and
demonstrates stable performance. The system is easily scalable and can be extended with
new elements.
Keywords. COMPUTER GAME, VAMPIRE SURVIVORS, UNITY, C#, GAME
MECHANICS, MODULAR ARCHITECTURE, SCALABILITY.
ЗМІСТ
ВСТУП .............................................................................................................................. 6
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ ......................................................................................................................... 0
1.1 Сучасні підходи до розробки 2D-ігор .................................................................. 4
1.2 Постановка задачі .................................................................................................. 4
1.3 Огляд ігор типу Vampire Survivors ....................................................................... 5
1.3.1 Огляд гри Vampire Survivors .......................................................................... 6
1.3.2 Огляд гри Soulstone Survivors ........................................................................ 7
1.4 Технології для створення процедурної генерації та механіки виживання ...... 8
1.5 Аналіз ігрового рушія Unity для створення 2D-ігор .......................................... 9
1.6 Використання мови програмування C# у розробці 2D-ігор ............................ 10
1.7 Аналіз бойових механік в survivor-like іграх .................................................... 11
1.8 Вивчення підходів до масштабування складності ........................................... 12
ВИСНОВОК ДО ПЕРШОГО РОЗДІЛУ...................................................................... 13
РОЗДІЛ 2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У ПРАКТИКУ
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНИХ
СИСТЕМ ........................................................................................................................ 15
2.1 Моделювання предметної області...................................................................... 15
2.1.1 Предметна область моделювання. Модель предметної області. Словник
предметної області ................................................................................................. 15
2.1.2 Елементи моделювання предметної області .............................................. 17
2.1.3 Робоча область моделювання ....................................................................... 19
ЧДТУ. 252172.020 ПЗ
Зм. Лист № документа№ Підпис Дата
Розроб. Тітов. О. А. «Програмне забезпечення комп’ютерної гри Літ. Лист Листів
Керівник Заспа Г. О. за мотивом Vampire Survivors» Д 3
Пояснювальна записка ФІТІС, кафедра ПЗАС,
Н.контр. Півень. О. Б.
Затв. Голуб С. В. ПЗ-2104
2.2 Формування та аналіз вимог ............................................................................... 19
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні
вимоги. ..................................................................................................................... 20
2.2.2 Формування вимог за допомогою діаграми прецедентів .......................... 22
2.3 Проектування логічної структури програмного комплексу ............................ 24
2.3.1 Діаграми класів .............................................................................................. 25
2.3.2 Діаграми пакетів ............................................................................................ 28
2.4 Архітектурне проектування ................................................................................ 30
2.4.1 Діаграма компонентів ................................................................................... 31
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання ............................................................................................................. 32
2.5 Моделювання поведінки системи ...................................................................... 34
2.5.1 Діаграма діяльності ....................................................................................... 34
2.5.2 Діаграма послідовності ................................................................................. 35
2.5.3 Діаграма комунікації ..................................................................................... 38
2.5.4 Діаграма скінченного автомату ................................................................... 40
ВИСНОВОК ДО ДРУГОГО РОЗДІЛУ ....................................................................... 42
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ .. 44
3.1 Розробка програмного комплексу ...................................................................... 44
3.1.1 Обґрунтування вибору засобів реалізації ................................................... 44
3.1.2 Опис структурної (функціональної) схеми ................................................. 45
3.1.3 Опис логічної схеми системи ....................................................................... 47
3.1.4 Розробка бази даних ...................................................................................... 48
3.1.5 Розробка програмного інтерфейсу .............................................................. 50
3.1.6 Опис розробки програмних компонентів ................................................... 51
3.2 Тестування системи ............................................................................................. 53
ЧДТУ 252172.020 ПЗ
Змн. Арк. № докум. Підпис Дата
3.2.1 Модульне тестування .................................................................................... 54
3.2.2 Інтеграційне тестування ............................................................................... 56
3.2.3 Системне тестування ..................................................................................... 57
3.2.4 Приймальне тестування ................................................................................ 59
3.3 Приклади впровадженого програмного комплексу ......................................... 61
ВИСНОВОК ДО ТРЕТЬОГО РОЗДІЛУ ..................................................................... 64
ВИСНОВКИ ................................................................................................................... 65
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ .................... ПОМИЛКА! ЗАКЛАДКУ НЕ
ВИЗНАЧЕНО.
ДОДАТОК А .................................................................................................................. 68
ДОДАТОК Б .................................................................................................................. 70
ДОДАТОК В .................................................................................................................. 81
ДОДАТОК Г .................................................................................................................. 83
ЧДТУ 252172.020 ПЗ
Змн. Арк. № докум. Підпис Дата
482. ЧДТУ 252172 12 20 2
ВСТУП
Актуальність теми актуальність розробки програмного забезпечення
комп’ютерної гри за мотивом Vampire Survivors зумовлена необхідністю створення
ефективної, масштабованої та оптимізованої програмної архітектури, що
забезпечує стабільну роботу ігрових механік у реальному часі. Зростання
популярності жанру rogue-lite формує високі вимоги до якості внутрішньої
реалізації систем керування персонажем, обробки подій, а також взаємодії між
компонентами гри. У таких проєктах програмне забезпечення має не лише
підтримувати плавний геймплей, а й забезпечувати гнучкість для подальшого
розширення функціоналу.
Гра за мотивом Vampire Survivors реалізована з використанням програмних
методів, які дозволяють забезпечити простий у засвоєнні, але технічно
збалансований ігровий процес. Основу становить система автоматизованих атак,
побудована на таймерах і шаблонах зброї, а розвиток персонажа реалізовано через
механіку накопичення досвіду та покрокового вдосконалення об’єктів. Вибір зброї
та її покращення виконуються за допомогою структурованої системи інтерфейсів
та обробки подій. Така реалізація дозволяє швидко масштабувати гру, забезпечує
гнучкість налаштувань і підтримує адаптацію під різні стилі гравців, що відповідає
сучасним тенденціям у створенні як казуальних, так і хардкорних ігор.
Розробка цієї гри також актуальна з точки зору дослідження та впровадження
сучасних методів розробки ігор на основі рушія Unity, що дозволяє створювати
високоякісні проекти з використанням технологій 2D-анімації, обробки фізики та
реалізації складних ігрових механік.
Мета і завдання розробки
Мета розробки метою роботи є створення програмного забезпечення
комп’ютерної гри за мотивом Vampire Survivors із застосуванням сучасних
технологій розробки ігор на основі ігрового рушія Unity. Гра має забезпечити
захоплюючий ігровий процес із різноманіттям ворогів, зброї та механік розвитку
персонажа.
Завдання розробки:
482. ЧДТУ 252172 12 20 2
1 Провести аналіз вимог до гри та дослідити особливості ігрового жанру
rogue-lite.
2 Розробити концепцію гри та визначити її основні механіки.
3 Створити архітектуру програмного забезпечення гри.
4 Реалізувати основні функціональні модулі гри: систему бою, систему
прогресу персонажа, генерацію ворогів.
5 Забезпечити графічне та звукове оформлення гри, включаючи створення
анімацій та ефектів.
6 Провести тестування гри та оптимізувати її продуктивність.
Об'єкт розробки є процес розробки програмного забезпечення комп’ютерної
гри за мотивом Vampire Survivors.
Предмет розробки предметом розробки є програмне забезпечення
комп'ютерної гра за мотивом Vampire Survivors, яка являє собою 2D-гру жанру
rogue-lite з елементами екшену, де гравець бореться проти хвиль ворогів,
використовуючи різноманітну зброю.
Методи проектування та конструювання
Методи проектування для розробки гри використано об'єктно-орієнтоване
програмування (ООП) з використанням мови C# та рушія Unity. Основні принципи
ООП, такі як інкапсуляція, наслідування та поліморфізм, забезпечують гнучкість і
масштабованість проєкту.
Практичне значення отриманих результатів
Розроблена гра може бути використана як готовий продукт для розваги
користувачів. Вона демонструє застосування основних принципів програмування
та проєктування ігор.
Особистий внесок автора у процесі виконання роботи автор самостійно
розробив концепцію гри, реалізував основні механіки та функціональні модулі,
включаючи програмування системи бою, програмування генерації ворогів та
програмування системи прокачки персонажа. Також було виконано тестування та
оптимізацію продуктивності гри, що забезпечило її стабільну роботу.
482. ЧДТУ 252172 12 20 2
РОЗДІЛ 1 ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ
ПОСТАВЛЕНИХ ЗАВДАНЬ
1.1 Сучасні підходи до розробки 2D-ігор
Розробка 2D-ігор залишається актуальною завдяки відносно простій
реалізації, невисоким вимогам до апаратного забезпечення та широким
можливостям для творчості. Сучасні підходи до розробки 2D-ігор базуються на
використанні спеціалізованих ігрових рушіїв, таких як Unity, Unreal Engine, Godot,
GameMaker та інші.
Ключовими аспектами сучасних підходів є:
компонентно-орієнтована архітектура цей підхід дозволяє розбивати
складні елементи гри на модулі, що полегшує їх повторне використання
та тестування;
скриптові мови програмування більшість рушіїв використовують
зручні мови, наприклад, C#, Python чи GDScript, які дозволяють швидко
створювати ігрову логіку [10];
інтегровані засоби розробки вбудовані редактори сцени, анімацій та
фізичних властивостей значно спрощують створення гри;
процедурна генерація контенту це підхід, що використовується для
автоматичного створення ігрових рівнів, враховуючи задані правила та
алгоритми.
Такі підходи дозволяють створювати продуктивні і стабільні ігрові проекти,
забезпечуючи розробників усіма необхідними інструментами.
1.2 Постановка задачі
Метою кваліфікаційної роботи є програмне зебезпечення комп’ютерної гри
за мотивом Vampire Survivors. Гра має забезпечувати динамічний геймплей, що
включає автоматичні атаки, поступове посилення персонажа, хвилі ворогів зі
зростаючою складністю та вибір поліпшень під час підвищення рівня.
Для досягнення цієї мети необхідно вирішити наступні задачі:
482. ЧДТУ 252172 12 20 2
1 Провести аналіз існуючих ігор жанру survivor-like, зокрема Vampire
Survivors і Soulstone Survivors, для визначення ключових геймплейних та
технічних особливостей.
2 Вибрати відповідний технологічний стек для реалізації гри — рушій
Unity, мову програмування C#, інструменти для створення графіки
(наприклад, Photoshop).
3 Розробити архітектуру програмного забезпечення з урахуванням
принципів модульності, повторного використання коду та
масштабованості.
4 Реалізувати:
базову систему автоматичних атак;
декілька типів зброї та ворогів;
механіку отримання досвіду та підвищення рівня;
хвилі ворогів з поступовим зростанням складності;
базовий інтерфейс користувача.
5 Провести тестування реалізованого програмного продукту на різних
рівнях: модульному, інтеграційному, системному та приймальному.
Вирішення вищевказаних задач дозволить створити стабільне та
розширюване програмне забезпечення, що може слугувати основою для
подальшого розвитку гри як повноцінного комерційного проєкту.
1.3 Огляд ігор типу Vampire Survivors
Ігри типу Vampire Survivors є представниками жанру "виживання в аркадному
стилі" (survivor-like games), де гравець протистоїть безперервному потоку ворогів.
Основні особливості таких ігор:
проста механіка управління зазвичай використовується мінімум
кнопок, що робить гру привабливішою для більшої аудиторії;
рогаликова структура багато ігор цього жанру пропонують випадкову
генерацію рівнів і елементів, що підвищує реіграбельність;
482. ЧДТУ 252172 12 20 2
система розвитку персонажа у процесі гри гравець покращує свого
персонажа, обираючи з доступних навичок або зброї;
прогресивна складність гра ускладнюється з часом за рахунок
збільшення кількості ворогів, їх швидкості чи сили.
До прикладів ігор цього жанру належать Vampire Survivors, Soulstone
Survivors. Вони демонструють успішну реалізацію механік, що забезпечують
високу динаміку та захоплюючий ігровий процес.
1.3.1 Огляд гри Vampire Survivors
Vampire Survivors – це інді-гра, розроблена студією poncle, що набула великої
популярності завдяки простій, але захоплюючій геймплейній петлі. Гра була
випущена у 2021 році та отримала численні позитивні відгуки як від гравців, так і
від критиків. Її успіх започаткував цілий піджанр ігор, орієнтованих на виживання
в умовах нескінченного натовпу ворогів.
Основні характеристики гри:
автоматичні атаки гравець не натискає кнопки для атаки – зброя
активується автоматично через певні інтервали, дозволяючи зосередитись
на позиціонуванні;
мінімалістичне керування управління відбувається лише за допомогою
клавіш напрямку або аналогового стику, що робить гру доступною для
всіх типів користувачів;
система прогресу під час гри гравець отримує досвід, збираючи сфери
після знищення ворогів. Кожен рівень дає змогу вибрати нову зброю або
покращення існуючої;
випадкова генерація вибору кожен апгрейд пропонується випадково з
обмеженого набору, що робить кожну сесію унікальною;
експоненційне зростання складності з часом вороги стають сильнішими
та численнішими, що створює відчуття постійної напруги;
різноманіття персонажів та зброї: гра включає десятки героїв, кожен з
яких має унікальні стартові характеристики та стартову зброю.
482. ЧДТУ 252172 12 20 2
Переваги:
Простота реалізації керування та бойової системи;
Висока реіграбельність завдяки випадковим елементам;
Легка масштабованість новими персонажами/зброєю;
Низькі вимоги до ресурсів, що робить гру доступною для більшої
аудиторії.
Недоліки:
Обмежена взаємодія гравця з бойовими механіками – все відбувається
автоматично;
Спрощена графіка може не задовольнити частину сучасної аудиторії;
Відсутність крафту, глибокого кастомізування персонажа та RPG-
елементів.
Vampire Survivors є чудовим прикладом, коли програмне забезпечення ігрової
системи реалізує ефективну логіку керування, колізій, бойової механіки та
процедурного розвитку, зберігаючи при цьому низький рівень складності реалізації.
1.3.2 Огляд гри Soulstone Survivors
Soulstone Survivors – це гра, яка продовжує ідеї, закладені у Vampire Survivors,
але пропонує їх у більш складній та технічно вдосконаленій формі. Вона була
створена студією Game Smithing Limited та вийшла в ранньому доступі у 2022 році.
Гра має стиль low-poly 3D, з ізометричним видом, що додає глибини та сучасного
вигляду.
Ключові особливості Soulstone Survivors:
активна бойова система на відміну від Vampire Survivors, гравець має
більше впливу на атаки – використання навичок часто потребує
натискання кнопок.
кастомізація персонажа система талантів, майстерностей та активних
умінь дає змогу гнучко налаштовувати стиль гри під себе.
система крафту гравці можуть збирати ресурси для створення нових
зброї, рун та покращень, що підвищує стратегічну глибину.
482. ЧДТУ 252172 12 20 2
боси та спеціальні події окрім звичайних хвиль ворогів, гра включає
складних босів, які мають унікальні механіки та вимагають тактичного
підходу.
візуальні ефекти та прокачка уміння гравця часто супроводжуються
потужною графікою та масштабними ефектами, що створює відчуття
сили та епічності.
Переваги:
Вища глибина геймплею та стратегічної взаємодії;
Значно розширений інструментарій для кастомізації;
Сучасна графіка приваблює візуально орієнтованих гравців;
Наявність активних умінь сприяє залученню до процесу.
Недоліки:
Більша складність освоєння, що може відлякати казуальних гравців;
Вища ресурсомісткість (через 3D-графіку та складну логіку);
Вища складність розробки – потребує більше часу, знань і оптимізації.
Гра значно розширює базову формулу «виживання проти натовпу», додаючи
елементи RPG, збирання ресурсів, ігрової економіки та вибору спорядження. Це
робить її складнішою в освоєнні, але й більш привабливою для гравців, які шукають
глибину.
1.4 Технології для створення процедурної генерації та механіки
виживання
Процедурна генерація контенту є ключовою особливістю багатьох ігор жанру
"виживання". Вона дозволяє створювати унікальні ігрові рівні, розподіляти ворогів
і предмети випадковим чином, що збільшує інтерес гравців до гри [13]. Основними
технологіями є:
алгоритми шуму Перліна та simplex-алгоритми використовуються для
створення псевдовипадкових карт та рівнів;
дерева прийняття рішень (BSP) використовуються для поділу простору
та генерації рівнів;
482. ЧДТУ 252172 12 20 2
алгоритми розподілу ворогів найчастіше використовуються системи
хвильового розподілу, де вороги з’являються групами, складність яких
залежить від рівня гри.
Що стосується механіки виживання, основними принципами є:
управління ресурсами гравець обмежений у здоров'ї, боєприпасах чи
енергії;
висока динаміка швидке зростання кількості ворогів змушує гравця
постійно адаптувати свою стратегію;
механіка розвитку за кожен ігровий успіх гравець отримує очки, які
дозволяють покращувати навички чи зброю.
1.5 Аналіз ігрового рушія Unity для створення 2D-ігор
Unity є одним із найпопулярніших ігрових рушіїв у світі, який широко
використовується як професійними студіями, так і інді-розробниками. Основними
причинами популярності Unity є його багатофункціональність, підтримка
різноманітних платформ, потужна спільнота, а також безкоштовна версія для
невеликих команд [9].
Для розробки 2D-ігор Unity пропонує спеціалізовані інструменти:
2D Tilemap – дозволяє створювати тайлові рівні за допомогою зручного
редактора;
sprite Renderer та Animator – використовуються для відображення
графіки персонажів і реалізації анімацій;
physics 2D – окремий фізичний рушій для 2D-ігор, який забезпечує
взаємодію об’єктів, колізії та сили;
cinemachine та Post-Processing – дають змогу створювати плавні камери
та додаткові візуальні ефекти.
Переваги Unity:
кросплатформеність – можливість компіляції гри для Windows, macOS,
Linux, Android, iOS, WebGL, PlayStation, Xbox та інших платформ;
482. ЧДТУ 252172 12 20 2
гнучка компонентна архітектура – кожен об’єкт складається з набору
компонентів, які легко додавати, прибирати або замінювати;
Asset Store – онлайн-магазин, де можна знайти тисячі безкоштовних і
платних ресурсів: моделі, анімації, ефекти, скрипти тощо;
підтримка 2D та 3D – Unity дозволяє поєднувати 2D- та 3D-елементи в
одному проєкті, що відкриває широкі можливості для дизайну.
Завдяки своїй інтуїтивній системі редакторів, широким можливостям
кастомізації та активній спільноті Unity є ідеальним вибором для реалізації
комп’ютерної гри за мотивами Vampire Survivors. Наявність добре розроблених
інструментів для UI, фізики, анімацій та навігації дозволяє створювати повноцінні
2D-проєкти з мінімальними технічними обмеженнями [9].
1.6 Використання мови програмування C# у розробці 2D-ігор
Мова програмування C# (сі-шарп) є основною мовою скриптингу в Unity.
Вона поєднує в собі об'єктно-орієнтований підхід, зручний синтаксис та високу
продуктивність, що робить її однією з найкращих мов для розробки ігор [11].
Переваги використання C# в Unity:
об'єктно-орієнтоване програмування (ООП) дозволяє створювати
гнучку структуру коду, використовувати спадкування, інтерфейси та
композицію для зменшення дублювання коду;
висока читабельність та простота C# має зрозумілий синтаксис, що
полегшує навчання і підтримку проєкту;
розширені можливості IDE Unity інтегрується з Visual Studio, що
забезпечує автодоповнення коду, підсвічування синтаксису, покрокове
зневадження (debugging) та інші зручності;
можливість створення власних класів, структур і атрибутів C#
дозволяє створювати розширювані та багаторазово використовувані
компоненти;
події та делегати надають ефективний механізм сповіщення про зміни у
стані гри (наприклад, втрата здоров’я, досягнення нового рівня тощо).
482. ЧДТУ 252172 12 20 2
У контексті 2D-ігор, C# дозволяє ефективно керувати ігровою логікою:
обробка руху персонажа та колізій;
управління ворогами та їхньою поведінкою;
реалізація апгрейдів, інвентарю та прокачки;
реагування на дії користувача через UI.
Крім того, у C# є підтримка асинхронного програмування, що корисно для
реалізації завантаження сцен, пауз та анімацій без блокування основного потоку.
1.7 Аналіз бойових механік в survivor-like іграх
Бойова система є центральним елементом ігор жанру survivor-like, оскільки
вона визначає основну взаємодію між гравцем і ворогами. Попри зовнішню
простоту, бойові механіки в таких іграх можуть мати велику кількість внутрішніх
параметрів та синергій, що суттєво впливають на ігровий процес [7].
Основні компоненти бойових механік:
автоматичні або напівавтоматичні атаки у більшості ігор цього жанру
атаки активуються без участі гравця – з певною періодичністю. Це
дозволяє зосередитися на ухиленні та стратегічному розміщенні;
активні уміння у складніших проєктах гравець має кілька активних
умінь, які використовуються вручну. Це ускладнює геймплей і вимагає
вищого рівня майстерності;
система зіткнень та шкоди визначає, як відбувається взаємодія між
гравцем, ворогами і навколишнім середовищем. Часто використовується
колізійна система рушія, яка перевіряє перетин колайдерів;
механіка критичних ударів і статус-ефектів удари можуть мати
додаткові ефекти: сповільнення, отруєння, вибухи, підпал, тощо. Це
створює більшу варіативність та глибину бойової системи;
еволюція зброї зброя може покращуватися під час гри або навіть
змінювати форму, відкриваючи нові механіки.
Бойові стратегії:
482. ЧДТУ 252172 12 20 2
позиційна гра виживання часто залежить від точного розміщення гравця
відносно натовпу ворогів.
контроль простору зброя чи навички часто призначені для блокування
напрямків, де з'являються вороги.
синергії між вміннями комбінації зброї та покращень можуть значно
змінити ефективність гравця.
Таким чином, бойові механіки у survivor-like іграх базуються на балансі між
простотою керування і стратегічною глибиною, що дозволяє одночасно залучити
новачків і надати можливості для досвідчених гравців.
1.8 Вивчення підходів до масштабування складності
Масштабування складності – критично важливий елемент дизайну ігор на
виживання. Від нього залежить, наскільки довго гравець зберігатиме інтерес до гри.
Якщо складність зростає занадто повільно – гра здається легкою і нудною; занадто
швидко – стає фруструючою [13].
Поширені підходи:
Часове масштабування найбільш базовий підхід – кожна хвилина
геймплею додає нових ворогів, збільшує їх швидкість або здоров’я.
Наприклад, Vampire Survivors має чітку шкалу зростання сили ворогів
залежно від часу, що минув;
Хвилі ворогів вороги надходять хвилями, кожна з яких складніша за
попередню. Цей підхід дозволяє розділити гру на умовні фази, наприклад:
перша – легка, друга – з новими типами ворогів, третя – з босами;
Масштабування з урахуванням прогресу гравця деякі ігри
підвищують складність в залежності від того, наскільки успішно гравець
виконує завдання – чим сильніше він стає, тим більше загроза від ворогів;
Адаптивна складність цей підхід передбачає аналіз дій гравця та
підлаштування складності в реальному часі. Наприклад, якщо гравець
тривалий час не отримує шкоди, система може пришвидшити появу
ворогів або дати їм нові навички.
482. ЧДТУ 252172 12 20 2
Елементи, що масштабуються:
кількість ворогів;
швидкість їхнього руху;
сила атаки та кількість здоров’я;
час появи босів та їх складність;
частота або складність випадкових подій (наприклад, елітні вороги або
пастки).
Мета ефективного масштабування – створити поступове відчуття небезпеки,
водночас не змушуючи гравця відчувати безвихідь. Це дозволяє підтримувати
мотивацію грати далі, прагнучи досягти нових результатів або рекордів.
ВИСНОВОК ДО ПЕРШОГО РОЗДІЛУ
У першому розділі кваліфікаційної роботи було розглянуто сучасні підходи
до розробки 2D-ігор, проаналізовано особливості ігор типу Vampire Survivors та
досліджено технології, що забезпечують процедурну генерацію контенту і механіку
виживання.
Сучасні методи розробки 2D-ігор базуються на використанні потужних
ігрових рушіїв, таких як Unity, що забезпечують розробникам широкий набір
інструментів для створення якісного ігрового контенту. Компонентно-орієнтована
архітектура та використання скриптових мов програмування спрощують процес
розробки, а інтегровані засоби розробки дозволяють створювати проекти з високою
продуктивністю.
Аналіз ігор типу Vampire Survivors виявив їх ключові риси: проста механіка
управління, рогаликова структура, система розвитку персонажа та прогресивна
складність. Ці особливості забезпечують високу реіграбельність та залученість
гравців.
Також було досліджено основні технології, що використовуються для
процедурної генерації контенту та механіки виживання. Використання алгоритмів
шуму Перліна, BSP-дерев та системи хвильового розподілу ворогів дозволяє
482. ЧДТУ 252172 12 20 2
створювати динамічні ігрові рівні та підтримувати інтерес гравця протягом усього
ігрового процесу.
Отримані знання та проведений аналіз стануть основою для подальшого
розроблення власного ігрового проекту в межах даної кваліфікаційної роботи.
482. ЧДТУ 252172 12 20 2
РОЗДІЛ 2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У ПРАКТИКУ
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНИХ
СИСТЕМ
2.1 Моделювання предметної області
Моделювання предметної області є важливим етапом у розробці
комп’ютерної гри, оскільки дозволяє створити абстрактне уявлення про систему,
що допомагає визначити основні компоненти гри та їх взаємодію. У цьому процесі
визначаються ключові елементи гри, такі як гравець, вороги, зброя, рівні, механіки
бою, система прогресу та інтерфейс користувача.
Концептуальна модель гри визначає основні об'єкти та їх властивості.
Гравець має такі характеристики, як здоров'я, швидкість руху та набір зброї. Вороги
можуть мати різні типи, рівні здоров'я та особливі здібності. Зброя поділяється на
кілька видів (меч, флакон зі святою водою, інше), кожен з яких має свої параметри
та ефекти.
Логічна модель деталізує взаємодію між цими об'єктами. Гравець може
атакувати ворогів різними типами зброї, отримувати досвід за їх знищення та
підвищувати рівень. При підвищенні рівня гравець може обирати нову зброю або
покращувати наявну. Вороги з'являються на рівні з певною частотою та
переслідують гравця.
Фізична модель описує технічні аспекти реалізації гри. Гра розробляється на
рушії Unity з використанням мови програмування C#. Всі об'єкти гри представлені
у вигляді префабів, що дозволяє легко керувати їх параметрами та взаємодією.
Графічний інтерфейс користувача створений за допомогою UI-системи Unity, де
відображаються іконки зброї, панель здоров'я та інші елементи.
Такий підхід до моделювання предметної області дозволяє чітко визначити
структуру гри, забезпечити її масштабованість та оптимізувати процес розробки,
що мінімізує ризики помилок і підвищує ефективність реалізації проекту.
2.1.1 Предметна область моделювання. Модель предметної області. Словник
предметної області
482. ЧДТУ 252172 12 20 2
Предметна область моделювання моделювання предметної області для
комп’ютерної гри за мотивом Vampire Survivors охоплює всі аспекти геймплейної
механіки, що підлягають розробці та оптимізації, з метою забезпечення
захопливого ігрового досвіду. Основні компоненти предметної області для цієї гри
включають:
герой (гравець): персонаж, яким керує користувач. Герой має
характеристики (здоров'я, сила атаки, швидкість руху) та може
використовувати різноманітну зброю;
зброя: різноманітні типи зброї, які герой може отримувати та
покращувати. Основні види зброї включають: меч, флакон зі святою
водою, автоматичні снаряди тощо. Кожна зброя має свої унікальні
характеристики та механіку використання;
вороги: супротивники, які з'являються на карті та намагаються атакувати
героя. Вони мають різні характеристики, типи атаки та рівень складності;
система розвитку: механіка отримання досвіду та підвищення рівня героя.
З кожним новим рівнем гравець отримує можливість вибирати нову
зброю або покращувати наявну;
карта: ігрове поле, де відбуваються події. Вона може мати різні біоми та
зони, що впливають на тактику гравця;
здоров'я та ресурси: показник здоров'я героя, що зменшується при
отриманні шкоди від ворогів. Додатково на карті можуть з'являтися
ресурси, які відновлюють здоров'я або надають інші бонуси.
Моделювання предметної області дозволяє створити чітке уявлення про
структуру та функціональність гри, визначити ключові елементи системи та їх
взаємодію. Це допомагає забезпечити ефективний процес розробки та
впровадження гри, мінімізувати ризики помилок і забезпечити відповідність
системи потребам гравців.
Словник предметної області
Герой - персонаж, яким керує гравець. Має характеристики (здоров'я, сила
атаки, швидкість руху) та використовує зброю для боротьби з ворогами.
482. ЧДТУ 252172 12 20 2
Зброя - об'єкти або здібності, які герой використовує для атаки ворогів. Може
включати меч, флакон зі святою водою, снаряди тощо.
Вороги - супротивники, які з'являються на карті та атакують героя. Мають
різні типи та характеристики.
Досвід - очки, які герой отримує за знищення ворогів. З накопиченням
досвіду герой підвищує рівень.
Рівень героя - показник розвитку героя, який підвищується з отриманням
досвіду. Кожен новий рівень дозволяє вибирати нову зброю або покращувати
наявну.
Карти - ігрові локації, де відбувається основний геймплей. Можуть мати різні
візуальні стилі та геймплейні особливості.
Здоров'я - ресурс героя, що визначає його життєздатність. Зменшується при
отриманні шкоди від ворогів та відновлюється за допомогою спеціальних
предметів.
2.1.2 Елементи моделювання предметної області
У процесі моделювання предметної області для програмного забезпечення
комп’ютерної гри за мотивом Vampire Survivors ми будемо використовувати різні
елементи UML (Unified Modeling Language), які допоможуть наочно представити
структуру та функціональність системи. Основні елементи UML, які ми будемо
використовувати, включають класи, атрибути, операції, асоціації та діаграми класів
(рисунок 2.1).
Для моделювання предметної області гри будуть використані діаграми UML
(Unified Modeling Language), які є стандартним засобом для візуалізації,
специфікації, конструювання та документування артефактів програмних систем.
Основні елементи моделювання UML, що використовуються для опису предметної
області гри, включають класи (наприклад, Гравець, Ворог, Зброя), об'єкти
(конкретні екземпляри цих класів), атрибути (характеристики об'єктів, такі як
здоров'я, атака, швидкість), методи (дії, які можуть виконувати об'єкти), асоціації
(зв'язки між об'єктами), та різні типи діаграм (рисунок 2.2).
482. ЧДТУ 252172 12 20 2
Рисунок 2.1 - Основні графічні символи UML [16]
Рисунок 2.2 - Єднальні елементи UML [16]
482. ЧДТУ 252172 12 20 2
Використання UML для моделювання системи дозволяє створити наочну та
зрозумілу структуру гри, що забезпечує ефективну комунікацію між розробниками
та іншими зацікавленими сторонами проєкту, а також полегшує процес
проєктування, реалізації та тестування програмного забезпечення. Таке
моделювання дозволяє чітко визначити основні компоненти гри та їх взаємодію.
2.1.3 Робоча область моделювання
Робоча область моделювання охоплює всі аспекти комп’ютерної гри за
мотивом Vampire Survivors, які підлягають моделюванню для розуміння, аналізу та
подальшого проектування. В контексті розробки цієї гри, робоча область
моделювання включає всі сутності та їх взаємодії, необхідні для реалізації
основних ігрових механік та систем.
Основні компоненти робочої області моделювання охоплюють:
гравець: персонаж, яким керує користувач, зі своїми характеристиками,
рівнем, зброєю та навичками;
вороги: різноманітні типи ворогів з унікальними характеристиками та
поведінкою;
зброя та предмети: різні види зброї та предметів, які гравець може
отримати та використовувати;
поле бою: ігровий простір, де відбуваються зіткнення між гравцем і
ворогами;
система досвіду та рівнів: механіка підвищення рівня гравця та вибір
нових або покращення існуючих умінь;
інтерфейс користувача: візуальні елементи для відображення здоров'я,
рівня досвіду, обраної зброї та інших параметрів.
2.2 Формування та аналіз вимог
Формування вимог є важливим етапом для програмного забезпечення
комп’ютерної гри за мотивом Vampire Survivors який визначає функціональність,
стабільність та зручність користування майбутнім продуктом. На основі аналізу
482. ЧДТУ 252172 12 20 2
особливостей ігор типу Vampire Survivors. У цьому розділі буде розглянуто
формування вимог до програмного забезпечення, первинні і детальні вимоги,
вимоги замовника і розробника, функціональні та нефункціональні вимоги.
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні
вимоги.
Формування вимог до програмного забезпечення є критичним етапом у
розробці будь-якої системи, включаючи програмне забезпечення комп’ютерної гри
за мотивом Vampire Survivors. Цей процес включає збір, аналіз, документування та
управління вимогами, що забезпечує чітке розуміння потреб і очікувань як
замовника, так і розробника.
Первинні вимоги включають загальні функції та властивості, які система
повинна мати для виконання своїх основних завдань. Вони визначають основні цілі
та обмеження системи:
гра повинна надавати користувачу можливість керувати персонажем, що
бореться проти хвиль ворогів;
користувач повинен мати можливість покращення зброї під час
проходження гри;
вороги повинні з’являтися хвилями, з поступовим збільшенням
складності;
персонаж гравця повинен мати показники здоров’я, досвіду та рівня;
система повинна надавати користувачу інформацію про прогрес у грі,
включаючи кількість убитих ворогів, набраний досвід та рівень.
Детальні вимоги включають більш точні та конкретні описи функцій,
інтерфейсів, даних та інших аспектів системи. Вони уточнюють первинні вимоги і
забезпечують основу для розробки технічної документації та реалізації системи.
1 Система бою:
персонаж гравця автоматично атакує ворогів найближчою зброєю;
482. ЧДТУ 252172 12 20 2
різні типи зброї мають унікальні механіки та характеристики (меч,
флакон зі святою водою тощо).
2 Розвиток персонажа:
з кожним новим рівнем користувач має можливість обирати одну з
двох випадкових опцій: покращити існуючу зброю або отримати нову;
зброя має кілька рівнів покращення, які підвищують її ефективність.
3 Генерація ворогів:
вороги з'являються хвилями, зі збільшенням їх кількості та
складності;
різні типи ворогів мають унікальні характеристики (швидкість,
здоров'я, тип атаки).
4 Інтерфейс користувача:
у верхньому лівому куті має відображатися список активної зброї
персонажа;
при підвищенні рівня повинно з’являтися вікно з вибором покращення
або нової зброї.
5 Система досвіду та рівнів:
вороги після знищення залишають досвід, який збирається
персонажем;
набраний досвід веде до підвищення рівня персонажа.
Вимоги замовника визначаються кінцевими користувачами системи і
включають функціональні та нефункціональні аспекти, що мають значення для
задоволення їхніх потреб:
інтерфейс гри повинен бути інтуїтивно зрозумілим і простим у
використанні;
система повинна забезпечувати плавний геймплей без затримок та
підвисань;
дані користувача повинні бути надійно захищені.
Вимоги розробника визначаються командою розробників і включають
технічні аспекти реалізації системи:
482. ЧДТУ 252172 12 20 2
гра повинна бути розроблена на платформі Unity з використанням C#;
система повинна підтримувати масштабованість, дозволяючи додавання
нових видів зброї та ворогів.
Функціональні та нефункціональні вимоги
Функціональні вимоги описують специфічні функції, які система повинна
виконувати:
автоматичні атаки персонажа на ворогів;
вибір і покращення зброї;
візуалізація прогресу (досвід, рівень).
Нефункціональні вимоги включають характеристики системи:
продуктивність: гра повинна працювати стабільно при великій кількості
ворогів на екрані;
безпека: дані користувача (прогрес) повинні зберігатися без ризику
втрати;
зручність використання: інтерфейс має бути зрозумілим навіть для нових
користувачів.
2.2.2 Формування вимог за допомогою діаграми прецедентів
Діаграма прецедентів демонструє взаємодію основних акторів гри – гравця
(Player) та ворога (Enemy) – із функціональністю системи, що реалізована у
програмному забезпеченні комп’ютерної гри за мотивами Vampire Survivors
(рисунок 2.3).
482. ЧДТУ 252172 12 20 2
Рисунок 2.3 - Діаграма прецедентів для програмного забезпечення комп’ютерної
гри за мотивом Vampire Survivors
Опис Прецедентів
1 Вибір зброї:
актор: Гравець;
опис: Гравець отримує можливість обрати нову зброю або покращити
наявну при досягненні нового рівня. Зброя може бути випадково
вибрана з доступного списку.
2 Атака зброєю:
актор: Гравець;
опис: Гравець автоматично атакує ворогів за допомогою обраної
зброї. Тип атаки та її характеристики залежать від виду зброї та її
рівня.
3 Збір досвіду:
актор: Гравець;
опис: Гравець збирає кулі досвіду, що випадають із переможених
ворогів. Досвід дозволяє гравцеві підвищувати рівень та отримувати
нову зброю чи покращення.
4 Зіткнення з ворогами:
актор: Гравець, Ворог;
482. ЧДТУ 252172 12 20 2
опис: Якщо гравець стикається з ворогом, він отримує шкоду. Вороги
постійно з'являються та атакують гравця.
5 Знищення ворогів:
актор: Гравець;
опис: Гравець знищує ворогів за допомогою своєї зброї. Знищені
вороги залишають кулі досвіду.
2.3 Проектування логічної структури програмного комплексу
У цьому підрозділі буде детально розглянуто проектування логічної
структури програмного забезпечення комп’ютерної гри за мотивом Vampire
Survivors. Спочатку будуть представлені діаграми класів, які відображатимуть
взаємодію між основними компонентами гри, їх атрибути та методи. Це дозволить
краще зрозуміти логіку роботи гри та структуру її елементів.
Кожен клас буде відповідати за функціональність окремих частин гри, таких
як:
гравець – керування персонажем, збір досвіду, вибір і використання
зброї;
зброя – визначення типів зброї, їх характеристик та поведінки (меч,
флакон зі святою водою, кулі тощо);
вороги – налаштування різних типів ворогів, їх характеристик та способу
атаки;
система рівнів та досвіду – обчислення набраного досвіду, підвищення
рівня гравця та надання вибору нової зброї або покращення;
ігровий світ – визначення ігрового поля, управління об'єктами та їх
взаємодією.
Далі буде зображено взаємозв'язки між класами, що визначатимуть, як різні
компоненти гри взаємодіють між собою та забезпечують її функціональність. Це
включатиме:
залежність гравця від зброї та їх характеристик;
482. ЧДТУ 252172 12 20 2
взаємодію гравця та ворогів, що призводить до отримання шкоди або
досвіду;
спосіб, у який зброя завдає шкоди ворогам.
Така структура дозволить створити чітке уявлення про поведінку об'єктів у
грі, а також спростить розробку та подальшу інтеграцію нових функціональностей.
2.3.1 Діаграми класів
Діаграма класів демонструє зв'язки між класами для розуміння взаємодій між
основними компонентами (рисунок 2.4, рисунок 2.5) програмного забезпечення
комп’ютерної гри за мотивами Vampire Survivors. Вона є одним з основних
інструментів моделювання об'єктно-орієнтованих систем, що дозволяє
візуалізувати структуру та логіку майбутньої реалізації проєкту. У діаграмі класів
представлені ключові сутності гри: Player, Enemy, WeaponManager, XPOrb,
EnemySpawner та Weapon.
Рисунок 2.4 – Діаграма класів без атрибутів та методів для програмного
забезпечення комп’ютерної гри за мотивом Vampire Survivors
1 Клас Player
Атрибути:
health: значення здоров'я гравця;
speed: швидкість переміщення гравця;
level: рівень гравця;
482. ЧДТУ 252172 12 20 2
experience: досвід гравця.
Методи:
move(): метод для управління рухом гравця;
takeDamage(amount): метод для зниження здоров'я гравця;
gainExperience(amount): метод для отримання досвіду.
2 Клас Enemy
Атрибути:
health: значення здоров'я ворога;
damage: значення шкоди, яку завдає ворог;
speed: швидкість руху ворога.
Методи:
move(): метод для переміщення ворога;
attack(player): метод для атаки гравця;
takeDamage(amount): метод для зниження здоров'я ворога.
3 Клас Weapon
Атрибути:
name: назва зброї;
damage: базова шкода зброї;
range: дальність атаки зброї;
cooldown: час перезарядки зброї.
Методи:
attack(): метод для виконання атаки;
upgrade(): метод для покращення зброї.
4 Клас WeaponManager
Атрибути:
weapons: список зброї, що належить гравцю.
Методи:
addWeapon(weapon): метод для додавання нової зброї;
upgradeWeapon(weapon): метод для покращення існуючої зброї;
482. ЧДТУ 252172 12 20 2
removeWeapon(weapon): метод для видалення зброї.
5 Клас EnemySpawner
Атрибути:
spawnRate: частота появи ворогів;
maxEnemies: максимальна кількість ворогів на сцені.
Методи:
spawnEnemy(): метод для створення нового ворога;
updateSpawner(): метод для контролю частоти появи ворогів.
6 Клас XPOrb
Атрибути:
value: кількість досвіду, яку отримує гравець при зборі.
Методи:
collect(player): метод для додавання досвіду до гравця при збиранні
сфери.
Зв'язки між класами:
player ↔ WeaponManager (асоціація): Гравець має менеджер зброї, який
зберігає всі доступні йому види зброї;
weaponManager ↔ Weapon (агрегація): Менеджер зброї може мати
кілька видів зброї;
player ↔ XPOrb (асоціація): Гравець може збирати сфери досвіду;
enemySpawner ↔ Enemy (агрегація): Спавнер створює ворогів;
player ↔ Enemy (асоціація): Гравець може взаємодіяти з ворогами
(нападати або отримувати шкоду).
482. ЧДТУ 252172 12 20 2
Рисунок 2.5 - Діаграма класів для програмного забезпечення комп’ютерної гри за
мотивом Vampire Survivors
2.3.2 Діаграми пакетів
На діаграмі пакетів представлена структура програмного комплексу
«Програмне забезпечення комп’ютерної гри за мотивом Vampire Survivors»,
організована у вигляді логічних модулів (пакетів), що відповідають за різні аспекти
роботи системи. Кожен пакет відповідає за окрему функціональну область
(рисунок 2.6).
482. ЧДТУ 252172 12 20 2
Рисунок 2.6 - Діаграма пакетів для програмного забезпечення комп’ютерної гри за
мотивом Vampire Survivors
1 User Management (Управління користувачами)
містить класи, що відповідають за зберігання та управління
інформацією про користувачів гри, таких як гравець. Цей пакет
включає функціонал реєстрації та авторизації користувачів, а також
зберігання їхніх прогресів.
2 Weapon Management (Управління зброєю)
включає класи, що описують різні види зброї, їхні характеристики та
механіку використання. Також містить логіку вибору та покращення
зброї під час гри.
3 Enemy Management (Управління ворогами)
містить класи ворогів з їхніми характеристиками та поведінкою.
Забезпечує створення та керування хвилями ворогів у грі.
4 Combat System (Бойова система)
включає класи, що відповідають за обробку бойових взаємодій, таких
як атака, захист, завдання шкоди та управління здоров’ям гравця та
ворогів.
5 Level Management (Управління рівнями)
482. ЧДТУ 252172 12 20 2
забезпечує створення та зміну ігрових рівнів. Включає механізм
підрахунку досвіду, підвищення рівня та вибору нових умінь або
зброї.
6 UI Management (Управління інтерфейсом користувача)
включає всі компоненти інтерфейсу користувача, такі як
відображення здоров’я, індикатори досвіду, вибір зброї та меню
паузи.
Зв'язки між пакетами:
user Management має залежність від Level Management, оскільки
прогрес гравця впливає на його рівень;
weapon Management пов'язаний з Combat System, оскільки вибір і
використання зброї безпосередньо впливають на бойову систему;
enemy Management взаємодіє з Combat System, оскільки вороги
атакують гравця та отримують шкоду;
UI Management отримує інформацію від усіх інших пакетів, щоб
коректно відображати стан гри та взаємодію користувача.
2.4 Архітектурне проектування
У цьому підрозділі розглядається архітектура проєкту програмного
забезпечення комп’ютерної гри за мотивом Vampire Survivors. Основна мета
архітектурного проєктування полягає у структуризації програмних компонентів
гри таким чином, щоб забезпечити модульність, масштабованість і можливість
подальшого розвитку.
Архітектура гри реалізована за принципами розділення відповідальностей
(Separation of Concerns), де кожен компонент системи виконує строго визначену
функцію. У рамках цього підходу компоненти розділені на логічні блоки:
управління гравцем, бойова система, система генерації ворогів, система досвіду і
рівнів, менеджер зброї та інтерфейс користувача.
Для кращого розуміння структури гри представлено діаграму компонентів,
яка демонструє, як основні компоненти гри взаємодіють між собою, які між ними
482. ЧДТУ 252172 12 20 2
зв’язки, і як дані передаються між системами. Особливу увагу приділено тому, як
гравець через систему керування впливає на ігровий світ, як обробляється завдання
шкоди, прокачка та взаємодія зі зброєю.
Окремо також буде розглянута діаграма розгортання, що ілюструє, як
програмне забезпечення гри розміщується у середовищі виконання. У випадку
комп’ютерної гри це включає взаємодію між клієнтською частиною та зовнішніми
службами, наприклад, сервером для аналітики, збереження прогресу. Діаграма
демонструє, як логічні модулі гри працюють разом на одному фізичному пристрої.
Таким чином, архітектурне проєктування гри забезпечує логічно
організовану структуру, яка дозволяє легко вносити зміни, додавати нові
можливості (наприклад, нові види зброї, ворогів або рівнів), а також адаптувати гру
під нові платформи без суттєвих змін в існуючому коді.
2.4.1 Діаграма компонентів
Діаграма компонентів в UML використовується для відображення структури
фізичної реалізації системи. Вона показує різні компоненти системи, їх
взаємозв'язки та залежності (рисунок 2.7).
482. ЧДТУ 252172 12 20 2
Рисунок 2.7 - Діаграма компонентів для програмного забезпечення комп’ютерної
гри за мотивом Vampire Survivors
Компоненти:
1 Логіка гри
управління персонажем: реалізує переміщення, атаки та використання
навичок персонажа;
генерація ворогів: створює ворогів відповідно до складності рівня, а
також скільки гравець знаходиться на цьому рівні;
обчислення бою: опрацьовує взаємодію між персонажем і ворогами
(втрати здоров’я, атаки тощо);
прокачка персонажа: додає нові навички та покращення за досягнення
рівнів.
2 Графічний рушій
відображення персонажів: малює ігрового персонажа на екрані;
анімація ворогів: забезпечує рухи та дії ворогів;
обробка ефектів: реалізує візуальні ефекти (удари, вибухи тощо).
3 Аудіо рушій
звуки атак: відтворює аудіоефекти ударів та навичок;
музичний фон: забезпечує музичний супровід гри;
ефекти ворогів: включає звуки атак та поразок ворогів.
4 Система вводу
клавіатура: опрацьовує дії гравця за допомогою клавіш;
мишка: додає можливість керування за допомогою миші.
5 Система збереження
збереження прогресу: дозволяє зберігати поточний стан гри.
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання
Діаграма розгортання показує фізичне розміщення програмних компонентів
на апаратних вузлах у системі (рисунок 2.8). Вона відображає взаємодію між
482. ЧДТУ 252172 12 20 2
комп’ютером гравця, аналітичним сервером, платформою розповсюдження та
сервером хмарного збереження.
Рисунок 2.8 - Діаграма розгортання для програмного забезпечення комп’ютерної
гри за мотивом Vampire Survivors
Основні компоненти гри:
клієнт гри (Game Client);
ігровий рушій (Game Engine);
інтерфейс користувача (UI);
логіка гри (Game Logic);
менеджер збережень (Save Manager);
сервер статистики (Stats Server) – опціонально, для аналітики;
сховище хмарних збережень (Cloud Save Storage) – якщо підтримується;
платформа дистрибуції (наприклад, Steam).
Опис вузлів:
1 ПК користувача (Player's PC)
встановлено клієнт гри;
містить Game Engine, UI, Game Logic, Save Manager.
2 Сервер аналітики (Analytics Server)
482. ЧДТУ 252172 12 20 2
отримує статистику з гри (вбивства, проходження, і т.д.).
3 Хмарне сховище (Cloud Save Server)
використовується для синхронізації збережень між пристроями.
4 Платформа розповсюдження (Distribution Platform)
Steam або інша – забезпечує доставку гри на пристрої користувачів.
2.5 Моделювання поведінки системи
У цьому підрозділі детально розглянемо динамічні аспекти функціонування
програмного забезпечення комп’ютерної гри за мотивом Vampire Survivors.
Спочатку буде представлена діаграма діяльності, яка демонструє послідовність дій
гравця та системи під час ігрового процесу. Далі розглянемо діаграму
послідовності, що відображає взаємодію між основними об’єктами гри, такими як
гравець, вороги, рушій гри та система збереження, у вигляді хронологічного обміну
повідомленнями. Також буде подано діаграму комунікації, яка ілюструє
взаємозв’язки між об’єктами гри з акцентом на структурну організацію взаємодії.
Нарешті, буде представлена діаграма скінченного автомату, що описує можливі
стани гри (наприклад: головне меню, гра, пауза, завершення гри) та переходи між
ними в залежності від дій користувача або внутрішніх подій у грі.
2.5.1 Діаграма діяльності
Діаграма діяльності в UML використовується для моделювання поведінки
системи, показуючи потік діяльностей або дій від початку до кінця. Вона
відображає різні кроки, які виконуються в процесі, та їхні взаємозв'язки,
включаючи умови розгалуження та паралельні дії (рисунок 2.9).
Опис логіки гри:
1 Гравець запускає гру.
2 Обирає персонажа та локацію.
3 Гра починається – активується генерація ворогів.
4 Гравець керує персонажем, ухиляється та атакує.
5 Система оновлює стан гри (позиції, зіткнення, досвід).
6 При досягненні певного досвіду – вибір нового уміння.
482. ЧДТУ 252172 12 20 2
7 Якщо гравця вбито – завершення гри.
8 Виводиться статистика, пропонується збереження.
9 Повернення в головне меню або вихід.
Рисунок 2.9 - Діаграма діяльності для програмного забезпечення комп’ютерної
гри за мотивом Vampire Survivors
2.5.2 Діаграма послідовності
Діаграма послідовності відображає взаємодію між об'єктами системи в
певній послідовності. Вона показує, які повідомлення передаються між об'єктами і
482. ЧДТУ 252172 12 20 2
в якому порядку це відбувається (рисунок 2.10). Це дозволяє проаналізувати логіку
виконання основних ігрових дій, що сприяє кращому розумінню часових
залежностей між об’єктами та дозволяє виявити можливі помилки у взаємодії між
компонентами системи.
Рисунок 2.10 - Діаграма послідовності для програмного забезпечення
комп’ютерної гри за мотивом Vampire Survivors
Етапи діаграми послідовності:
Учасники:
1 Player (Гравець)
Ініціює запуск гри та обирає дії (рух, атака, вибір покращень тощо).
2 GameController (Контролер гри)
Основний керівник логіки гри. Координує взаємодію між компонентами,
оновлює стан гри.
3 EnemySpawner (Генератор ворогів)
482. ЧДТУ 252172 12 20 2
Відповідає за створення ворогів протягом гри, а також взаємодіє з
персонажем.
4 Character (Персонаж)
Головний ігровий об’єкт, що реагує на вхідні команди, пересувається, атакує
та отримує шкоду.
5 UIManager (Менеджер інтерфейсу)
Відображає інформацію для гравця: меню, інтерфейс підвищення рівня,
статистику тощо.
6 SaveManager (Менеджер збережень)
Відповідає за збереження результатів гри після її завершення.
Основні кроки взаємодії:
1 Player → GameController: startGame()
Гравець запускає гру.
2 GameController → EnemySpawner: spawnEnemies()
Контролер гри активує генерацію ворогів.
3 GameController → Character: updateCharacter()
Оновлення стану персонажа: координати, швидкість, стан здоров’я.
4 Character → EnemySpawner: attackEnemies()
Персонаж атакує ворогів.
5 EnemySpawner → Character: applyDamage()
Вороги завдають шкоди персонажу у відповідь.
6 Character → GameController: checkXP()
Персонаж повідомляє про новий досвід.
7 GameController → UIManager: showLevelUpUI()
Якщо рівень підвищено, викликається інтерфейс вибору нового уміння.
8 UIManager → Player: chooseUpgrade()
Гравець обирає покращення.
9 GameController → Character: applyUpgrade()
Покращення застосовується до персонажа.
Альтернативна гілка:
482. ЧДТУ 252172 12 20 2
Якщо персонаж загинув:
1 GameController → SaveManager: saveResults()
Збереження результатів сесії.
2 GameController → UIManager: showGameOverStats()
Виведення статистики на екран.
2.5.3 Діаграма комунікації
Діаграма комунікації описує поведінку системи як взаємодію об'єктів у
певному контексті, показуючи відносини між об'єктами та використовуючи
нумерацію для представлення послідовності повідомлень (рисунок 2.11).
Рисунок 2.11 - Діаграма комунікації для програмного забезпечення комп’ютерної
гри за мотивом Vampire Survivors
Опис взаємодії в грі
482. ЧДТУ 252172 12 20 2
1 Запуск гри
Мета: Ініціалізувати ігровий процес.
Ключові кроки:
гравець натискає "Start Game";
інтерфейс передає команду до GameController;
GameController створює об'єкт персонажа (Character);
GameController надсилає команду EnemySpawner для початку
створення ворогів.
2 Атака та взаємодія з ворогами
Мета: Обробити бойову взаємодію.
Ключові кроки:
Character атакує ворогів через EnemySpawner;
EnemySpawner завдає шкоди персонажу;
Character надсилає відповідь про отримання шкоди;
GameController перевіряє поточний рівень персонажа.
3 Отримання рівня та вибір покращення
Мета: Запропонувати нове вміння при підвищенні рівня.
Ключові кроки:
Character повідомляє GameController про підвищення рівня;
GameController викликає UIManager для показу вибору покращень;
UIManager передає вибір гравця;
GameController застосовує вибране покращення до Character.
4 Завершення гри
Мета: Обробити подію смерті персонажа.
Ключові кроки:
GameController викликає метод isDead() у персонажа;
Character повертає результат смерті;
GameController звертається до SaveManager для збереження
результатів;
482. ЧДТУ 252172 12 20 2
GameController активує UIManager для показу фінальної статистики.
2.5.4 Діаграма скінченного автомату
Діаграма скінченного автомату (діаграма станів) використовується для
моделювання поведінки об'єктів, що змінюють свій стан у відповідь на події
(рисунок 2.12). Вона дозволяє системно описати всі можливі стани об’єкта та
передбачити сценарії, які можуть виникати під час гри.
Рисунок 2.12 - Діаграма скінченного автомату для програмного забезпечення
комп’ютерної гри за мотивом Vampire Survivors
Основні стани гри:
1. Main Menu (Головне меню)
Початковий стан після запуску гри. Доступні дії: старт гри, перегляд
налаштувань, вихід.
2. Character Selection (Вибір персонажа та рівня)
Стан, у якому гравець обирає ігрового героя, карту або стартову зброю.
3. Playing (Гра триває)
Основний ігровий процес: рух, атака, отримання досвіду, взаємодія з
ворогами.
482. ЧДТУ 252172 12 20 2
4. Level Up (Підвищення рівня)
Тимчасовий стан, коли гравець досягає нового рівня та вибирає одне з
покращень.
5. Paused (Пауза)
Призупинення гри. Гравець може продовжити або повернутись у головне
меню.
6. Game Over (Кінець гри)
Стан, що настає після загибелі персонажа. Відображаються результати сесії.
7. Exit (Вихід)
Завершення гри та вихід із програми.
Таблиця 2.1
Переходи між станами
Звідки Умова / Подія Куди Опис переходу
(початковий Гра запускається і переходить у
[*] Main Menu
стан) головне меню
Character
Main Menu startGame() Гравець обирає почати гру
Selection
Character
play() Playing Починається ігровий процес
Selection
Playing levelUp() Level Up Гравець досягає нового рівня
Обрано покращення — гра
Level Up upgradeChosen() Playing
продовжується
Playing pause() Paused Гравець ставить гру на паузу
Paused resume() Playing Гравець відновлює гру
Playing playerDies() Game Over Персонаж загинув
Game Over backToMenu() Main Menu Повернення в головне меню
Main Menu exit() Exit Вихід із гри
Game Over exit() Exit Вихід після завершення гри
482. ЧДТУ 252172 12 20 2
ВИСНОВОК ДО ДРУГОГО РОЗДІЛУ
У другому розділі було проведено комплексне моделювання структури та
поведінки комп’ютерної гри за мотивом Vampire Survivors. На основі аналізу
предметної області визначено ключові сутності гри: гравець, персонаж, вороги,
ігровий простір, предмети та здібності. Було сформовано як функціональні вимоги
(наприклад, рух персонажа, автоматична атака, генерація ворогів, підвищення
рівня), так і нефункціональні (продуктивність, масштабованість, зручність у
керуванні).
Для відображення взаємодії користувача з грою створено діаграму
прецедентів, яка ілюструє основні сценарії використання системи, зокрема запуск
гри, вибір персонажа, бій з ворогами та перегляд результатів.
Діаграма класів дозволила структуровано представити об'єктну модель гри,
охопивши сутності персонажів, ворогів, предметів і механіку бою, що створило
основу для подальшої реалізації логіки гри.
Діаграма пакетів відобразила логічну організацію коду за модулями, такими
як ядро гри, механіка бою, інтерфейс користувача та управління подіями, що
сприяє зручності підтримки й масштабування проєкту.
Діаграма компонентів і діаграма розгортання висвітлили технічні аспекти
реалізації гри, продемонструвавши розподіл компонентів між клієнтською
частиною (ігровий клієнт) і серверною (збереження результатів, хмарні сервіси).
Динамічні аспекти функціонування гри моделювались за допомогою
поведінкових діаграм. Діаграма діяльності показала типову послідовність дій
гравця під час гри. Діаграма послідовності деталізувала хронологію взаємодій між
ігровими об'єктами під час бою. Діаграма комунікації дала змогу побачити
структуру обміну повідомленнями між об'єктами гри. Діаграма скінченного
автомату описала зміну станів гри (від головного меню до завершення гри) залежно
від дій гравця та внутрішніх подій.
Усі створені діаграми надали цілісне уявлення про архітектуру, логіку та
поведінку гри, що є фундаментально важливим для подальшого етапу програмної
реалізації проєкту.
482. ЧДТУ 252172 12 20 2
482. ЧДТУ 252172 12 20 2
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ
3.1 Розробка програмного комплексу
У подальших главах буде детально описано процес створення програмного
забезпечення комп’ютерної гри за мотивом Vampire Survivors. Метою є
сформувати повне уявлення про процес розробки гри – від вибору технологічного
стеку до реалізації ключової ігрової логіки та інтеграції основних модулів.
Розглядатимуться всі етапи, включаючи розробку інтерфейсу користувача,
побудову механік бою, системи прокачування персонажів, генерації ворогів і
обробки ігрових подій. Такий підхід дозволяє чітко зрозуміти технічні рішення, що
лежать в основі гри, та методи, які використовуються для досягнення високої
продуктивності, стабільності та гнучкості програмного комплексу [3].
3.1.1 Обґрунтування вибору засобів реалізації
У процесі розробки програмного забезпечення комп'ютерної гри за мотивом
Vampire Survivors важливо обрати технології, які забезпечать гнучкість,
продуктивність, зручність підтримки та швидкість розробки. Для досягнення цих
цілей було обрано сучасний стек технологій, що добре себе зарекомендував у
створенні ігрових проєктів з двовимірною графікою.
Клієнтська частина гри реалізована з використанням Unity — популярного
ігрового рушія, який дозволяє створювати кросплатформені ігри з високою
продуктивністю та зручним інструментарієм для роботи з графікою, фізикою та
анімаціями. Для написання ігрової логіки використовується мова програмування
C#, яка забезпечує високу продуктивність та підтримує об'єктно-орієнтований
підхід, що спрощує структурування коду [14].
Для роботи з ігровими ресурсами, такими як спрайти, текстури та анімації,
використовується вбудований редактор Unity, що забезпечує зручний процес
імпорту, налаштування та організації графічних активів. Це дозволяє швидко
тестувати та змінювати ігровий контент без необхідності змінювати програмний
код.
482. ЧДТУ 252172 12 20 2
Звуковий супровід гри реалізується через аудіосистему Unity, що підтримує
роботу з аудіокліпами різних форматів, забезпечуючи можливість налаштування
гучності, відтворення звуків залежно від умов гри та створення атмосферного
звукового середовища.
У якості середовища розробки використовувався ПК з операційною
системою Windows 10, процесором Intel Core i5, відеокартою NVIDIA GeForce GTX
1650 Ti, 16 ГБ оперативної пам'яті та підтримкою DirectX 12. Така конфігурація
забезпечує стабільну роботу Unity, швидку компіляцію та тестування гри.
Обрані засоби реалізації дозволяють забезпечити надійну та масштабовану
архітектуру гри, що полегшує її подальший розвиток та підтримку. Unity у
поєднанні з C# забезпечує можливість створення складної ігрової логіки, а також
реалізації графічних і звукових ефектів, що створюють захопливий ігровий процес.
3.1.2 Опис структурної (функціональної) схеми
На рисунку 3.1 зображено функціональну схему взаємодії основних
компонентів програмного забезпечення комп'ютерної гри за мотивом Vampire
Survivors під час обробки ігрових даних та взаємодії гравця з ігровим середовищем.
Архітектура проєкту побудована з урахуванням принципів розділення
відповідальності, гнучкості та масштабованості.
Гравець взаємодіє з грою через інтерфейс користувача, розроблений у Unity.
За допомогою клавіатури та миші (або іншого контролера) він керує персонажем у
двовимірному ігровому світі. Всі введені користувачем команди обробляються
системою вводу Unity, що забезпечує швидкий і точний відгук на дії гравця.
Ігровий процес базується на декількох ключових компонентах:
контролер гравця отримує команди користувача та керує переміщенням,
атаками та іншими діями персонажа;
система зброї відповідає за вибір та активацію різних типів зброї, які має
гравець. Вона взаємодіє з відповідними класами зброї (меч, флакон зі
святою водою тощо), визначаючи їхній вплив на ворогів;
482. ЧДТУ 252172 12 20 2
система ворогів та спавнер керує генерацією ворогів, їх поведінкою та
взаємодією з гравцем;
система підрахунку досвіду та рівнів обробляє збирання досвіду,
підвищення рівня та вибір нових умінь або зброї.
Для зберігання даних гри (такі як налаштування, досягнення гравця або
результати ігрових сесій) використовується внутрішня система Unity для роботи з
PlayerPrefs або збереженням у файлах [14].
У випадку, коли гравець досягає нового рівня, система вибору зброї
активується, пропонуючи гравцю вибір між покращенням існуючої зброї або
отриманням нової. Після вибору інформація зберігається та відображається у
інтерфейсі користувача (рисунок 3.1).
Рисунок 3.1 - Функціональна схема
482. ЧДТУ 252172 12 20 2
3.1.3 Опис логічної схеми системи
Процес функціонування програмного забезпечення комп'ютерної гри за
мотивом Vampire Survivors побудований на чіткій взаємодії між основними
компонентами гри: гравцем, ворогами, зброєю та іншими ігровими об'єктами.
Система реалізована з використанням сучасних технологій і підходів, що
забезпечують високу продуктивність, масштабованість та гнучкість.
У логічну схему роботи системи входять наступні етапи:
1 Ініціалізація ігрової сесії
При запуску гри відбувається завантаження початкових ресурсів (спрайтів,
звуків, карт), створення ігрового світу та ініціалізація об'єктів (гравець, вороги,
зброя). Ігровий цикл починає обробляти кадри в режимі реального часу.
2 Рух та управління гравцем
Гравець керує персонажем за допомогою клавіш або геймпада. Вхідні дані
обробляються системою введення, яка визначає напрямок руху гравця та інші дії
(наприклад, використання спеціальних здібностей).
3 Генерація ворогів
Вороги створюються відповідно до налаштувань хвиль, що залежать від часу
гри та рівня гравця. Вони мають різні характеристики (швидкість, здоров'я, тип
атаки) та взаємодіють із гравцем, завдаючи шкоди при зіткненні.
4 Система зброї та атак
Гравець може використовувати різні типи зброї (меч, флакон зі святою
водою, інші). Зброя автоматично активується відповідно до свого типу та механіки
(ближній бій, атака по області тощо). Усі атаки перевіряють зіткнення з ворогами
та завдають їм шкоди.
5 Збір досвіду та прокачка
Знищуючи ворогів, гравець отримує очки досвіду (XP), які збираються у
вигляді сфер. При досягненні певної кількості XP гравець підвищує рівень та
отримує можливість вибору нової зброї або покращення наявної.
6 Обробка зіткнень та шкоди
482. ЧДТУ 252172 12 20 2
Усі об'єкти в грі перевіряються на зіткнення (гравець з ворогами, зброя з
ворогами тощо). У разі зіткнення відбувається зниження здоров'я об'єкта
відповідно до завданої шкоди.
7 Оновлення стану гри
На кожному кадрі відбувається оновлення стану всіх об'єктів гри (гравець,
вороги, зброя). Вороги рухаються до гравця, гравець може переміщуватися та
атакувати, а зброя активується автоматично.
8 Завершення ігрової сесії
Якщо здоров'я гравця досягає нуля, гра завершується. На екран виводиться
підсумкова статистика (час виживання, кількість знищених ворогів, рівень).
Гравець може перезапустити гру або вийти в головне меню (рисунок 3.3).
Така структура забезпечує чітке розділення обов'язків між різними
компонентами гри, що дозволяє легко додавати новий контент (зброю, ворогів,
здібності) та покращувати загальну продуктивність системи.
Рисунок 3.2 - Блок-схема логічної роботи системи
3.1.4 Розробка бази даних
482. ЧДТУ 252172 12 20 2
У процесі створення програмного забезпечення комп'ютерної гри за мотивом
Vampire Survivors було передбачено використання реляційної бази даних, яка
забезпечує надійне та структуроване зберігання інформації про гравця, ворогів,
зброю та інші елементи гри. Основними сутностями системи є гравці, вороги, типи
зброї, характеристики зброї та рівні гри.
Розробка бази даних охоплює декілька послідовних етапів:
1 Концептуальне моделювання на початковому етапі формується
концептуальна модель, що відображає ключові об’єкти ігрового світу та
їхню взаємодію. Наприклад, гравець має декілька видів зброї, кожен з
яких має свої характеристики та рівні покращення. Вороги мають різні
типи, що визначають їх поведінку та силу.
2 Логічна структура визначаються таблиці та їхні атрибути,
встановлюються зв’язки між ними. Основні таблиці включають:
player (гравець): зберігає інформацію про гравця, його ім'я, рівень,
здоров'я та досвід.
weapon (зброя): містить дані про тип зброї, її базові характеристики
(швидкість, сила атаки, радіус ураження).
enemy (ворог): включає тип ворога, його здоров'я, швидкість та
нагороду за знищення.
level (рівень): визначає інформацію про поточний рівень гри,
включаючи кількість ворогів та їх склад.
3 Фізична реалізація база даних реалізується за допомогою SQLite, що є
легким і продуктивним рішенням для локального зберігання даних гри.
Для взаємодії з базою даних у коді гри використовується ORM (Object-
Relational Mapping), що спрощує обробку даних без написання складних
SQL-запитів.
4 Забезпечення захисту даних застосовуються механізми контролю
доступу до даних користувача та шифрування важливих даних
(наприклад, прогресу гравця), що забезпечує збереження ігрової
інформації навіть у разі непередбачених збоїв.
482. ЧДТУ 252172 12 20 2
3.1.5 Розробка програмного інтерфейсу
Розробка програмного інтерфейсу (UI) є важливою частиною будь-якого
програмного забезпечення, особливо у випадку комп'ютерної гри, де
користувацький інтерфейс забезпечує гравцеві доступ до основних функцій гри та
інформації [2]. Втім, у поточній версії проєкту програмне забезпечення
комп'ютерної гри за мотивом Vampire Survivors має мінімальну кількість елементів
UI. Це пов'язано з тим, що гра перебуває на етапі впровадження основних механік,
таких як:
реалізація системи бою та атаки: створення різних типів зброї та їх
взаємодія з ворогами;
розробка системи ворогів: нові типи ворогів, вороги міні-боси та боси;
створення системи прокачки: підвищення рівня гравця, вибір нової або
покращеної зброї.
Програмний інтерфейс у поточному стані включає лише необхідний мінімум
елементів:
індикатор здоров'я ворогів, який дозволяє дізнатись скільки ще
потрібно нанести пошкоджень ворогу щоб його знищити;
модель ворога (рисунок 3.3);
модель гравця (рисунок 3.4);
модель снаряду (рисунок 3.5).
Рисунок 3.3 - Модель ворога
482. ЧДТУ 252172 12 20 2
Рисунок 3.4 - Модель гравця
Рисунок 3.5 - Модель снаряду
Така обмежена кількість елементів UI пояснюється необхідністю
зосередитися на функціональних аспектах гри, перш ніж переходити до розробки
повноцінного інтерфейсу. Це дозволяє уникнути витрат часу на розробку елементів
UI, які можуть потребувати змін після внесення нових механік.
На наступних етапах, із завершенням основних механік гри, програмний
інтерфейс буде розширюватися. Планується додавання:
Головного меню, яке надасть можливість почати нову гру, змінити
налаштування або вийти.
Вікно вибору/покращення зброї, яке надасть можливість вибирати та
покращувати нові види зброї
Меню паузи, що дозволить призупинити гру та налаштувати параметри.
Розширених показників ігрової статистики, таких як кількість
знищених ворогів, кількість зібраного досвіду та тривалість поточної
сесії.
Такий поетапний підхід забезпечує ефективне планування розробки та
дозволяє зосередитися на ключових аспектах геймплею.
3.1.6 Опис розробки програмних компонентів
Розробка програмних компонентів комп'ютерної гри за мотивом Vampire
Survivors здійснювалася відповідно до принципів модульності та розділення
482. ЧДТУ 252172 12 20 2
відповідальності. Такий підхід дозволяє спростити підтримку системи та
забезпечити її масштабованість у разі розширення функціональності. Проєкт
поділено на кілька основних компонентів: гравець, вороги, зброя та
користувацький інтерфейс. Кожен із цих компонентів має свою чітко визначену
функціональність, що забезпечує зручність у розробці та модифікації.
Компоненти гри
Гравець (Player)
PlayerMovement: відповідає за переміщення гравця, обробку
користувацького введення та управління швидкістю руху;
PlayerXP: керує системою досвіду та рівнями, надаючи можливість
гравцю покращувати зброю або отримувати нову;
PlayerHealth: визначає кількість здоров'я гравця та обробляє отримання
шкоди від ворогів.
Вороги (Enemies)
EnemySpawner: контролює генерацію ворогів на рівні, забезпечуючи
поступове збільшення складності;
EnemyBat та інші вороги: класи, що визначають характеристики та
поведінку окремих типів ворогів, включаючи їхнє пересування та атаки;
IDamageable: інтерфейс, який забезпечує стандартизовану взаємодію
між атакуючими компонентами (зброєю) та ворогами.
Зброя (Weapons)
WeaponManager: керує списком зброї, доступної гравцю, та відображає
іконки у верхньому лівому куті екрана;
WeaponBase: базовий клас для всіх типів зброї, що визначає загальні
характеристики (шкоду, швидкість атаки, область ураження);
AutoShooter: система автоматичного використання зброї на основі
встановлених таймерів;
SwordStrike та HolyWater: специфічні типи зброї, які мають унікальну
логіку атаки.
Користувацький інтерфейс (UI)
482. ЧДТУ 252172 12 20 2
HealthBar: індикатор здоров'я гравця;
XPOrbs: відображення досвіду, який збирає гравець після знищення
ворогів.
Архітектура гри
Структура проєкту побудована за принципом компонентно-орієнтованої
архітектури. Кожен ключовий елемент гри реалізований як окремий скрипт або
клас, що дозволяє з легкістю додавати або змінювати функціональність:
PlayerManager: управляє основними властивостями та поведінкою
гравця;
EnemyManager: контролює генерацію та поведінку ворогів,
підтримуючи різні типи супротивників;
WeaponManager: централізує управління зброєю та її відображення у
користувацькому інтерфейсі.
3.2 Тестування системи
У цьому розділі описано процес перевірки комп’ютерної гри за мотивом
Vampire Survivors на різних рівнях для забезпечення її коректної роботи та
відповідності функціональним вимогам.
Модульне тестування проводилось зосереджено на окремих скриптах та
компонентах, таких як PlayerMovement, EnemyBat, WeaponBase та інших.
Перевірялися ключові функції, наприклад:
Коректність руху гравця;
Обчислення шкоди та досвіду;
Виклик зброї та її таймінги.
Це дозволяє впевнитися в правильності роботи кожного елемента гри в
ізоляції.
Інтеграційне тестування зосереджувалось на взаємодії між модулями.
Наприклад, перевірялась узгодженість між зброєю і ворогами – чи правильно
завдається шкода.
482. ЧДТУ 252172 12 20 2
Системне тестування охоплювало перевірку всієї гри як єдиного цілого. На
цьому етапі тестувались усі основні геймплейні сценарії, включаючи:
початок нової гри;
появу та поведінку ворогів;
збирання досвіду та покращення зброї;
загибель гравця.
Це дозволяє переконатись у стабільній роботі системи загалом.
Приймальне тестування проводилося з урахуванням очікувань кінцевих
користувачів. Оскільки гра перебуває на ранньому етапі розробки, фокус був
спрямований на базовий функціонал: ігровий процес, керування гравцем. За
результатами тестування було підтверджено, що реалізовані механіки працюють
стабільно та відповідають початковим цілям проєкту.
У майбутньому, зі зростанням функціональності гри, обсяг тестування буде
розширено, зокрема буде додано автоматизовані юніт-тести для критичних механік
та регресійне тестування після кожної ітерації.
3.2.1 Модульне тестування
Модульне тестування є першим етапом перевірки якості гри, під час якого
тестуються окремі компоненти в ізоляції (таблиця 3.1). Метою цього етапу є
виявлення помилок у функціональності окремих скриптів ще до того, як вони
будуть інтегровані в загальну систему гри. Для модульного тестування
використовувались вбудовані інструменти Unity (зокрема, Unity Test Framework),
що дозволяють створювати та виконувати тести безпосередньо в середовищі
розробки [9].
Основні кроки:
1 Налаштування середовища тестування:
підключення Unity Test Framework;
створення окремого тестового Assembly для PlayMode та EditMode.
2 Написання тестів:
482. ЧДТУ 252172 12 20 2
розробка тестових сценаріїв для перевірки ключових скриптів гри:
PlayerXP, EnemyBat, AutoShooter, WeaponManager тощо;
імітація вхідних параметрів і перевірка правильності результатів.
3 Виконання тестів:
запуск тестів через Unity Test Runner;
аналіз результатів з можливістю перегляду виводу та логів виконання.
Результати модульного тестування свідчать про правильну реалізацію
основних механік гри. Усі тестові випадки були успішно пройдені, що свідчить про
надійність скриптів і готовність до наступного етапу тестування – інтеграції
компонентів між собою. Це також дозволяє вчасно виявити логічні помилки в
окремих системах та уникнути складнощів під час майбутнього розширення гри.
Окрему увагу було приділено тестуванню сценаріїв з граничними значеннями
вхідних параметрів, щоб перевірити стабільність поведінки системи у
нестандартних умовах.
Таблиця 3.1
Модульне тестування
Тестовий Очікуваний Фактичний
Модуль Статус
випадок результат результат
Набір досвіду Значення досвіду Значення досвіду
PlayerXP після збирання збільшилось, UI збільшилось, UI Пройдено
сфери XP оновлено оновлено
Атака у ворога Снаряд Снаряд
HolyBible в межах згенеровано, шкода згенеровано, шкода Пройдено
радіусу завдана ворогу завдана ворогу
Зіткнення з Завдано шкоду Завдано шкоду
EnemyBat Пройдено
гравцем гравцю гравцю
Рух при
Позиція гравця Позиція гравця
PlayerMovementнатисканні Пройдено
змінюється змінюється
клавіш WASD
482. ЧДТУ 252172 12 20 2
Тестовий Очікуваний Фактичний
Модуль Статус
випадок результат результат
відповідно до відповідно до
вхідних подій вхідних подій
3.2.2 Інтеграційне тестування
Інтеграційне тестування є наступним етапом після модульного і має на меті
перевірку взаємодії між різними скриптами та підсистемами гри (таблиця 3.2). Під
час цього етапу тестування перевіряється, як окремі компоненти гри (управління
гравцем, збір досвіду, атаки, вороги, інтерфейс користувача тощо) працюють
разом, забезпечуючи цілісну ігрову логіку та стабільну поведінку.
Основні кроки інтеграційного тестування:
1 Підготовка середовища тестування:
налаштування інтеграційних сцен у Unity;
ініціалізація даних: стартова позиція гравця, початкове озброєння,
вороги тощо.
2 Визначення інтеграційних тестових сценаріїв:
перевірка процесу атаки ворога і врахування завданої шкоди;
взаємодія гравця з XP-сферами й оновлення досвіду;
поява вікна вибору зброї при підвищенні рівня;
інтеграція зброї з UI та атакуючими компонентами.
3 Написання інтеграційних тестів:
розробка тестів, які охоплюють повні сценарії з кількома
взаємодіючими модулями;
перевірка змін у стані гри після певних подій.
4 Виконання тестів та аналіз результатів:
запуск інтеграційних сценаріїв у режимах PlayMode;
виправлення помилок при необхідності та повторне тестування.
482. ЧДТУ 252172 12 20 2
Таблиця 3.2
Інтеграційне тестування
Модульна Очікуваний Фактичний
Тестовий випадок Статус
взаємодія результат результат
Досвід гравця Досвід гравця
PlayerXP + Гравець збирає
збільшується, UI збільшується, UI Пройдено
XPOrbs сферу досвіду
оновлюється оновлюється
Гравець
Ворог отримує Ворог отримує
HolyBible + автоматично
шкоду, можлива шкоду, можлива Пройдено
EnemyBat стріляє в
смерть смерть
ближнього ворога
Результати інтеграційного тестування підтверджують, що основні механіки
гри взаємодіють між собою коректно. Всі передбачені сценарії було успішно
перевірено, що свідчить про правильну інтеграцію ігрових компонентів. Система
демонструє стабільну поведінку під час складних комбінацій дій, що дозволяє
перейти до наступного етапу – системного тестування гри як єдиного цілого.
3.2.3 Системне тестування
Системне тестування є наступним етапом після інтеграційного тестування і
передбачає перевірку всієї гри як єдиного цілого (таблиця 3.3). Метою цього етапу
є впевнитися, що ігрова система відповідає всім встановленим функціональним і
нефункціональним вимогам, стабільно працює під час звичайного ігрового процесу
та забезпечує належний ігровий досвід для кінцевого користувача.
Основні кроки системного тестування:
1 Підготовка тестового середовища:
створення повноцінної сцени гри з усіма активними елементами;
завантаження тестових профілів гравця для перевірки прогресу,
збереження тощо;
482. ЧДТУ 252172 12 20 2
імітація реального геймплею з різним навантаженням на систему
(багато ворогів, прокачана зброя тощо).
2 Визначення системних тестових сценаріїв:
всі ключові функції: старт гри, управління, бойові дії, підбір досвіду,
вибір зброї, завершення гри;
нефункціональні вимоги: продуктивність (кількість об’єктів на сцені),
стабільність FPS, відсутність підвисань та помилок.
3 Написання тестів:
сценарії поведінки гравця з різним набором зброї;
перевірка коректності UI у всіх ситуаціях;
тестування стабільності гри протягом тривалого часу.
4 Виконання тестів:
запуск гри з різними конфігураціями (різні види зброї, кількість
ворогів, тривалість сесії);
збір логів, спостереження за споживанням ресурсів, виявлення
помилок.
5 Аналіз результатів і виправлення помилок:
аналіз поведінки системи в стресових умовах;
виправлення багів, повторне проходження тестів до досягнення
стабільного результату.
Таблиця 3.3
Системне тестування
Тестовий Очікуваний Фактичний
Модуль/Функція Статус
випадок результат результат
Гравець рухається Гравець рухається
Переміщення
плавно, зіткнення плавно, зіткнення
Керування по карті,
з ворогами з ворогами Пройдено
гравцем уникнення
відбувається відбувається
ворогів
коректно коректно
482. ЧДТУ 252172 12 20 2
Підбір XP- Досвід додається, Досвід додається,
сфери після прогрес прогрес
Збір досвіду Пройдено
знищення відображається в відображається в
ворога UI UI
Автоматичне Зброя діє Зброя діє
використання відповідно до відповідно до
Система зброї Пройдено
зброї під час типу, вороги типу, вороги
гри отримують шкоду отримують шкоду
Вороги Вороги
Постійна поява
з’являються і з’являються і
ворогів, рух у
Вороги та спавн рухаються до рухаються до Пройдено
напрямку
гравця, реагують гравця, реагують
гравця
на атаки на атаки
Велика
кількість Гра не втрачає Гра не втрачає
Продуктивність ворогів, продуктивність, продуктивність, Пройдено
тривала гра, FPS стабільний FPS стабільний
ефекти атак
Результати системного тестування підтвердили, що всі компоненти гри
працюють узгоджено та стабільно в рамках повного ігрового процесу. Усі тестові
сценарії пройдені успішно, що свідчить про готовність гри до наступного етапу –
приймального тестування, де буде перевірено відповідність гри очікуванням
кінцевих користувачів.
3.2.4 Приймальне тестування
Приймальне тестування є завершальним етапом перед запуском гри у реліз
або перед її передачею кінцевим користувачам (таблиця 3.4). Метою цього
тестування є перевірка відповідності гри очікуванням гравців та виконання всіх
вимог, сформульованих на етапі проєктування. Приймальне тестування
482. ЧДТУ 252172 12 20 2
проводиться за участі реальних гравців, які взаємодіють із повноцінною версією
гри, виконуючи типові ігрові дії.
Основні кроки приймального тестування:
1 Підготовка до тестування:
визначення ключових сценаріїв використання, які імітують звичайну
ігрову поведінку (наприклад, виживання, прокачка, використання
зброї);
вибір тестової групи користувачів (гравці різного рівня досвіду).
2 Проведення тестування:
організація ігрових сесій з тестовими користувачами;
користувачі проходять гру, підвищують рівень, вибирають зброю,
взаємодіють з ворогами;
збір зворотного зв’язку щодо ігрового процесу, балансу, інтерфейсу
та загального задоволення від гри.
3 Аналіз результатів:
оцінка відповідності гри очікуванням гравців;
виявлення можливих проблем (баги, складність, незрозумілий
інтерфейс) на основі зібраного фідбеку;
документування усіх зауважень.
4 Виправлення помилок і остаточне тестування:
усунення виявлених проблем та доопрацювання гри;
повторне тестування для перевірки, чи були ефективно усунуті
помилки;
фінальна оцінка готовності гри до публічного запуску.
482. ЧДТУ 252172 12 20 2
Таблиця 3.4
Приймальне тестування
Модуль/Фун Тестовий Очікуваний Фактичний
Статус
кція випадок результат результат
Старт гри,
Гравець може Гра запускається,
початкова
Початок гри розпочати гру, все вороги з’являються, Пройдено
зброя, поява
працює стабільно немає збоїв
ворогів
Підбір досвіду,
Прокачка вибір зброї при
Покращення зброї Зброя покращується Пройдено
гравця підвищенні
рівня
Урон наноситься, Урон працює
Атаки зброї,
вороги гинуть, коректно, вороги
Система бою взаємодія з Пройдено
ефекти зникають, ефекти
ворогами
відображаються відображаються
Показ
Повідомлення
Завершення гри відповідного
Завершення з’являється,
при втраті повідомлення, Пройдено
гри повернення в меню
всього здоров’я повернення в
працює
меню
Приймальне тестування підтвердило, що гра відповідає очікуванням
користувачів, забезпечує захопливий ігровий процес, має зручний інтерфейс і
працює стабільно. Усі ключові функції протестовані та працюють коректно. Всі
тестові сценарії були успішно виконані, що підтверджує високу готовність гри до
випуску.
3.3 Приклади впровадженого програмного комплексу
482. ЧДТУ 252172 12 20 2
У цьому підрозділі наведено приклади впровадженого програмного
комплексу – гри, створеної за мотивами Vampire Survivors, а також описано процес
її публікації на платформі itch.io.
Готова версія гри була зібрана за допомогою рушія Unity [14]. Для хостингу
було обрано платформу itch.io, яка підтримує ігри на Unity та надає зручні
інструменти для розповсюдження інді-проєктів.
Після реєстрації облікового запису на itch.io було створено сторінку проєкту
з описом гри та скриншотами. Посилання на сторінку гри було поширено для
тестування серед користувачів, що дозволило отримати реальний зворотний
зв’язок.
На сторінці гри користувачі мають змогу:
ознайомитись із коротким описом механік;
переглянути скриншоти;
залишити коментар або оцінку;
завантажити десктопну версію (за потреби).
Реалізований функціонал гри:
1 Початок гри
Після запуску гравець автоматично потрапляє у сесію виживання. Персонаж
з’являється на ігровій мапі, вороги починають з’являтись з усіх боків, а персонаж
починає атакувати автоматично.
2 Система накопичення досвіду та рівнів
Вороги після знищення залишають XP-орби. Після збору достатньої кількості
гравець підвищує рівень, що відкриває можливість покращити зброю.
3 Автоматична атака та типи зброї
Зброя активується без втручання гравця. Кожна одиниця зброї має свій
унікальний інтервал, анімацію атаки та зону дії. Реалізовано кілька типів зброї,
таких як снаряд, меч, флакон зі святою водою.
4 Поведінка ворогів
482. ЧДТУ 252172 12 20 2
Вороги рухаються в напрямку гравця з різною швидкістю та здоров’ям. Час
від часу складність зростає: частота появи ворогів збільшується, а також вводяться
нові типи супротивників.
5 Інтерфейс користувача
На екрані відображаються наступні елементи: здоров’я ворогів, модель ворогів,
модель гравця, модель снаряду та модель досвіду (рисунок 3.6).
Рисунок 3.6 – Інтерфейс користувача
Результати публікації:
Гра була протестована на різних пристроях, що дозволило виявити дрібні
проблеми продуктивності, які згодом були усунені. Сторінка проєкту на itch.io
дозволяє не лише поширювати гру, але й відстежувати статистику запусків, що
корисно для аналізу активності користувачів. Таким чином, впровадження
програмного комплексу в реальне середовище (через itch.io) дозволило
переконатися у працездатності гри, зручності інтерфейсу та привабливості ігрових
механік для кінцевого користувача.
482. ЧДТУ 252172 12 20 2
ВИСНОВОК ДО ТРЕТЬОГО РОЗДІЛУ
У третьому розділі було розглянуто процес розробки, тестування та
впровадження 2D-гри, створеної за мотивами Vampire Survivors. У проєкті
реалізовано основні ігрові механіки: автоматичні атаки, система вибору й
прокачування зброї, генерація ворогів із різною поведінкою, система досвіду й
підняття рівня, а також інтерфейс для взаємодії з гравцем.
Розробка велась з використанням ігрового рушія Unity, що забезпечило
зручне створення анімацій, фізики та управління об’єктами на сцені. Архітектура
гри побудована з урахуванням принципів модульності: логіку розділено між
окремими скриптами, зокрема для гравця, ворогів, зброї, обробки досвіду, UI тощо.
У ході тестування було перевірено функціональність усіх основних
компонентів, як окремо (під час інтеграційного тестування), так і у складі всієї
системи (під час системного та приймального тестування). Виявлені недоліки було
усунуто, і всі ключові сценарії успішно пройшли перевірку.
Особливу увагу було приділено зручності керування, інтуїтивності
інтерфейсу та стабільності гри при різних навантаженнях. Результати тестування
підтвердили готовність гри до використання в реальному середовищі та
подальшого вдосконалення, з можливістю додавання нових механік, ворогів і видів
зброї.
482. ЧДТУ 252172 12 20 2
ВИСНОВКИ
Кваліфікаційна робота була спрямована на розробку програмного
забезпечення у вигляді 2D-гри за мотивами Vampire Survivors. У рамках проєкту
було проведено аналіз сучасних підходів до створення ігор, застосовано результати
досліджень на практиці при розробці функціональних ігрових механік, а також
виконано повний цикл створення та тестування ігрового застосунку.
У першому розділі проведено детальний аналіз наукових та технічних джерел
з тематики розробки 2D-ігор. Було досліджено ігрові рушії, мови програмування та
інструменти, які найчастіше використовуються у сучасній ігровій індустрії.
Особливу увагу приділено рушію Unity, як одному з найпоширеніших засобів для
розробки 2D-проєктів. На основі аналізу було обґрунтовано вибір технологій та
інструментів для реалізації гри.
Другий розділ присвячений проєктуванню архітектури гри та реалізації
основних функціональних компонентів. Було сформовано вимоги до гри,
розроблено структуру об'єктів, механіку бою, систему досвіду, прокачування зброї
та інтерфейс користувача. Також реалізовано зручне керування гравцем і базові
механізми штучного інтелекту для ворогів. Створено систему автоматичних атак,
підбору та використання досвіду, а також прокачки здібностей.
У третьому розділі детально описано процес розробки, тестування та
налагодження гри. Було обґрунтовано вибір підходів до реалізації окремих
компонентів, створено гнучку архітектуру проєкту, що дозволяє легко додавати
нову зброю, ворогів та ігрові ефекти. Проведено модульне, інтеграційне та
приймальне тестування, результати якого підтвердили правильність роботи всіх
елементів гри. Усі ключові ігрові механіки працюють згідно з вимогами та
забезпечують стабільний ігровий процес.
Результати виконаної кваліфікаційної роботи підтверджують успішну
реалізацію проєкту 2D-гри, яка демонструє класичні механіки жанру rogue-lite. Гра
забезпечує динамічний та захопливий ігровий процес, підтримує розширення
функціональності та може бути основою для подальшого розвитку.
482. ЧДТУ 252172 12 20 2
ДОДАТОК А
ЗАТВЕРДЖЕНО:
Зав. кафедрою ПЗАС, професор
_________________ Голуб С.В.
„____” ______________ 2025 р.
Програмне забезпечення комп’ютерної гри за мотивом Vampire Survivors
Специфікація
482. ЧДТУ 252172.020
Листів 2
Розробник ________________ Тітов О.А.
Керівник ________________ Заспа Г.О.
Черкаси 2025
482. ЧДТУ 252172 12 20 2
Позначення Найменування Примітки
Документація
482.ЧДТУ. 252172 12 20 Текст програми
482.ЧДТУ. 252172 34 20 Інструкція користувачеві
482.ЧДТУ. 252172 90 20 Графічні матеріали
482. ЧДТУ 252172 12 20 2
ДОДАТОК Б
Програмне забезпечення комп’ютерної гри за мотивом Vampire Survivors
Текст програми
482.ЧДТУ.252172 12 01
Листів 11
Розробник _______________ Тітов О.А.
Черкаси 2025
ЧДТУ 252172.020 ПЗ
Лістинг файлу PlayerMovement.cs:
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float moveSpeed = 5f;
private Rigidbody2D rb;
private Animator animator;
private Vector2 movement;
private Vector2 lastMoveDir = Vector2.right;
void Start()
{
rb = GetComponent<Rigidbody2D>();
animator = GetComponent<Animator>();
}
void Update()
{
movement.x = Input.GetAxisRaw("Horizontal");
movement.y = Input.GetAxisRaw("Vertical");
if (movement != Vector2.zero)
{
lastMoveDir = movement;
}
animator.SetFloat("MoveX", movement.x);
animator.SetFloat("MoveY", movement.y);
animator.SetBool("IsMoving", movement != Vector2.zero);
animator.SetFloat("LastMoveX", lastMoveDir.x);
animator.SetFloat("LastMoveY", lastMoveDir.y);
}
void FixedUpdate()
{
rb.MovePosition(rb.position + movement.normalized * moveSpeed *
Time.fixedDeltaTime);
}
}
Лістинг файлу PlayerXP.cs:
using UnityEngine;
public class PlayerXP : MonoBehaviour
{
public int currentXP = 0;
public int currentLevel = 1;
6
ЧДТУ 252172.020 ПЗ
public int xpToNextLevel = 100;
public HolyBible weapon;
public void AddXP(int amount)
{
currentXP += amount;
if (currentXP >= xpToNextLevel)
{
LevelUp();
}
}
void LevelUp()
{
currentXP -= xpToNextLevel;
currentLevel++;
xpToNextLevel = Mathf.RoundToInt(xpToNextLevel * 1.5f);
weapon.Upgrade(currentLevel);
Debug.Log("Level UP! Поточний рівень: " + currentLevel);
}
}
Лістинг файлу PlayerHealth.cs:
using UnityEngine;
public class PlayerHealth : MonoBehaviour
{
public int maxHealth = 100;
private int currentHealth;
void Start()
{
currentHealth = maxHealth;
}
public void TakeDamage(int damage)
{
currentHealth -= damage;
Debug.Log("Гравець отримав урон. Поточне ХП: " + currentHealth);
if (currentHealth <= 0)
{
Die();
}
}
void Die()
7
ЧДТУ 252172.020 ПЗ
{
Debug.Log("Гравець загинув!");
Destroy(gameObject);
}
}
Лістинг файлу EnemyBat.cs:
using Unity.VisualScripting;
using UnityEngine;
public class EnemyBat : MonoBehaviour, IDamageable
{
public float speed = 2f;
public int maxHealth = 100;
public int damage = 10;
private CooldownTimer cooldown;
private int currentHealth;
private Transform player;
private Rigidbody2D rb;
public EnemyHealthBar healthBar;
public GameObject xpPrefab;
void Start()
{
player = GameObject.FindWithTag("Player")?.transform;
rb = GetComponent<Rigidbody2D>();
if (rb != null)
{
rb.freezeRotation = true;
rb.gravityScale = 0;
}
cooldown = GetComponent<CooldownTimer>();
currentHealth = maxHealth;
if (healthBar != null)
{
healthBar.SetHealth(1f);
}
}
void FixedUpdate()
{
if (player == null || rb == null) return;
8
ЧДТУ 252172.020 ПЗ
Vector2 direction = (player.position - transform.position).normalized;
rb.MovePosition(rb.position + direction * speed * Time.fixedDeltaTime);
}
void OnCollisionStay2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Player") && cooldown != null &&
cooldown.IsReady())
{
PlayerHealth playerHealth = collision.gameObject.GetComponent<PlayerHealth>();
if (playerHealth != null)
{
playerHealth.TakeDamage(damage);
cooldown.Reset();
}
}
}
public void TakeDamage(int damage)
{
currentHealth -= damage;
if (healthBar != null)
{
float healthPercent = Mathf.Clamp01((float)currentHealth / maxHealth);
healthBar.SetHealth(healthPercent);
}
if (currentHealth <= 0)
{
Die();
}
}
void Die()
{
if (xpPrefab != null)
{
Instantiate(xpPrefab, transform.position, Quaternion.identity);
}
Destroy(gameObject);
}
}
Лістинг файлу EnemySpawner.cs:
using UnityEngine;
public class EnemySpawner : MonoBehaviour
{
9
ЧДТУ 252172.020 ПЗ
public GameObject batPrefab;
public GameObject bigBatPrefab;
public float spawnRadius = 15f;
public float spawnInterval = 2f;
public int maxEnemies = 30;
private Transform player;
private float timer;
void Start()
{
player = GameObject.FindWithTag("Player")?.transform;
InvokeRepeating(nameof(SpawnEnemy), 1f, spawnInterval);
}
void SpawnEnemy()
{
if (GameObject.FindGameObjectsWithTag("Enemy").Length >= maxEnemies) return;
if (player == null) return;
Vector2 spawnPos = (Vector2)player.position + Random.insideUnitCircle.normalized *
spawnRadius;
GameObject enemyToSpawn;
if (Time.timeSinceLevelLoad >= 20f)
{
enemyToSpawn = Random.value < 0.3f ? bigBatPrefab : batPrefab;
}
else
{
enemyToSpawn = batPrefab;
}
Instantiate(enemyToSpawn, spawnPos, Quaternion.identity);
}
}
Лістинг файлу EnemyHealthBar.cs:
using UnityEngine;
using UnityEngine.UI;
public class EnemyHealthBar : MonoBehaviour
{
public Image fillImage;
public Transform followTarget;
void Update()
{
transform.rotation = Quaternion.identity;
10
ЧДТУ 252172.020 ПЗ
if (followTarget != null)
{
transform.position = followTarget.position + Vector3.up;
}
}
public void SetHealth(float normalizedValue)
{
fillImage.fillAmount = normalizedValue;
}
}
Лістинг файлу CooldownTimer.cs:
using UnityEngine;
public class CooldownTimer : MonoBehaviour
{
[Tooltip("Час затримки між атаками")]
public float cooldownTime = 0.2f;
private float lastUseTime = -Mathf.Infinity;
public bool IsReady()
{
return Time.time >= lastUseTime + cooldownTime;
}
public void Reset()
{
lastUseTime = Time.time;
}
}
Лістинг файлу HolyBible.cs:
using UnityEngine;
public class HolyBible : MonoBehaviour
{
public GameObject bulletPrefab;
public float shootInterval = 2f;
private int bulletDamage = 50;
private float bulletSpeed = 10f;
void Start()
{
InvokeRepeating(nameof(Shoot), 1f, shootInterval);
}
void Shoot()
11
ЧДТУ 252172.020 ПЗ
{
GameObject nearestEnemy = FindClosestEnemy();
if (nearestEnemy != null)
{
Vector2 direction = (nearestEnemy.transform.position -
transform.position).normalized;
GameObject bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity);
Bullet bulletScript = bullet.GetComponent<Bullet>();
bulletScript.SetDirection(direction);
bulletScript.damage = bulletDamage;
bulletScript.speed = bulletSpeed;
}
}
public void Upgrade(int level)
{
switch (level)
{
case 2:
bulletDamage = 60;
break;
case 3:
bulletSpeed = 12f;
shootInterval = 1.7f;
break;
case 4:
bulletDamage = 80;
break;
case 5:
bulletSpeed = 14f;
shootInterval = 1.3f;
break;
case 6:
bulletDamage = 100;
break;
case 7:
bulletSpeed = 16f;
shootInterval = 0.8f;
break;
case 8:
bulletDamage = 150;
bulletSpeed = 18f;
break;
}
Debug.Log($"HolyBible прокачано до рівня {level}! Урон: {bulletDamage}, Швидкість:
{bulletSpeed}, Перезарядка: {shootInterval}");
}
GameObject FindClosestEnemy()
12
ЧДТУ 252172.020 ПЗ
{
GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
GameObject closest = null;
float minDistance = Mathf.Infinity;
foreach (GameObject enemy in enemies)
{
float dist = Vector2.Distance(transform.position, enemy.transform.position);
if (dist < minDistance)
{
minDistance = dist;
closest = enemy;
}
}
return closest;
}
}
Лістинг файлу Bullet.cs:
using UnityEngine;
public class Bullet : MonoBehaviour
{
public float speed = 10f;
public float lifetime = 6f;
public int damage = 50;
private Vector2 moveDirection;
private bool hasHit = false;
void Start()
{
Destroy(gameObject, lifetime);
}
void Update()
{
transform.Translate(moveDirection * speed * Time.deltaTime);
}
public void SetDirection(Vector2 dir)
{
moveDirection = dir.normalized;
Vector3 scale = transform.localScale;
scale.x = dir.x >= 0 ? -Mathf.Abs(scale.x) : Mathf.Abs(scale.x);
scale.y = dir.y > 0 ? -Mathf.Abs(scale.y) : Mathf.Abs(scale.y);
transform.localScale = scale;
13
ЧДТУ 252172.020 ПЗ
}
void OnTriggerEnter2D(Collider2D collision)
{
if (hasHit) return;
if (collision.CompareTag("Enemy"))
{
hasHit = true;
EnemyBat enemy = collision.GetComponent<EnemyBat>();
if (enemy != null)
{
enemy.TakeDamage(damage);
}
Destroy(gameObject);
}
}
}
Лістинг файлу XPOrb.cs:
using UnityEngine;
public class XPOrb : MonoBehaviour
{
public int xpValue = 10;
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
PlayerXP playerXP = other.GetComponent<PlayerXP>();
if (playerXP != null)
{
playerXP.AddXP(xpValue);
}
Destroy(gameObject);
}
}
}
14
ЧДТУ 252172.020 ПЗ
ДОДАТОК В
Програмне забезпечення комп’ютерної гри за мотивом Vampire Survivors
Інструкція користувачеві
482. ЧДТУ. 242239 34 01
Листів 2
Розробник ________________ Тітов О.А.
Черкаси 2025
15
ЧДТУ 252172.020 ПЗ
Це програмне забезпечення комп’ютерної гри за мотивом Vampire Survivors.
У ній гравець керує персонажем, який автоматично атакує ворогів. Завдання гравця
– вижити якомога довше, ухиляючись від ворогів, збираючи досвід і покращуючи
свою зброю.
Завантаження гри
1 Відкрийте інтернет-браузер (наприклад, Google Chrome).
2 У адресному рядку введіть: https://itch.io і натисніть Enter.
3 У пошуку на сайті введіть Holy Survivors або перейдіть за прямим
посиланням, якщо воно є.
4 На сторінці гри натисніть кнопку Download (Завантажити).
5 Коли файл завантажиться, розпакуйте архів у будь-яку папку (клацніть
правою кнопкою миші на архіві → оберіть «Витягнути все»).
6 Відкрийте розпаковану папку.
7 Знайдіть файл Holy Survivors.exe і двічі клацніть лівою кнопкою миші на
нього.
Початок гри
гра почнеться одразу. Персонаж автоматично атакуватиме ворогів.
Як керувати персонажем
Для переміщення використовуйте клавіші на клавіатурі:
W – рух вгору;
A – рух вліво;
S – рух вниз;
D – рух вправо.
Підвищення рівня та покращення зброї
1 Коли ворог помирає, з нього випадає зелена кулька досвіду.
2 Підійдіть до кульки – вона підбереться автоматично.
3 Коли ви наберете достатньо досвіду – зброя покращиться автоматично
Завершення гри
якщо персонаж загинув – гра зупиниться і її можна закрити натисненням
комбінації клавіш Alt + F4.
16
ЧДТУ 252172.020 ПЗ
ДОДАТОК Г
Програмне забезпечення комп’ютерної гри за мотивом Vampire Survivors
Графічні матеріали
482. ЧДТУ. 242239 90 01
Листів 11
Розробник ________________ Тітов О.А.
Черкаси 2025
17
ЧДТУ 252172.020 ПЗ
Рисунок Г1 - Слайд 1
Рисунок Г2 - Слайд 2
18
ЧДТУ 252172.020 ПЗ
Рисунок Г3 - Слайд 3
Рисунок Г4 - Слайд 4
19
ЧДТУ 252172.020 ПЗ
Рисунок Г5 - Слайд 5
Рисунок Г6 - Слайд 6
20
ЧДТУ 252172.020 ПЗ
Рисунок Г7 - Слайд 7
Рисунок Г8 - Слайд 8
21
ЧДТУ 252172.020 ПЗ
Рисунок Г9 - Слайд 9
Рисунок Г10 - Слайд 10
22
ЧДТУ 252172.020 ПЗ
Рисунок Г11 - Слайд 11
Рисунок Г12 - Слайд 12
23
ЧДТУ 252172.020 ПЗ
Рисунок Г13 - Слайд 13
Рисунок Г14 - Слайд 14
24
ЧДТУ 252172.020 ПЗ
Рисунок Г15 - Слайд 15
Рисунок Г16 - Слайд 16
25
ЧДТУ 252172.020 ПЗ
Рисунок Г17 - Слайд 17
Рисунок Г18 - Слайд 18
26
ЧДТУ 252172.020 ПЗ
Рисунок Г19 - Слайд 19
Рисунок Г20 - Слайд 20
27