Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/6186| Title: | Комп’ютерна 3-D гра жанру «Slasher» на рушії Unity |
| Authors: | Підгорний, Микола Володимирович Єфіменко, Олег Вікторович |
| Keywords: | ПРЕДМЕТНА ОБЛАСТЬ;КОМП’ЮТЕРНА ГРА;СЛЕШЕР. |
| Issue Date: | 12-Jun-2024 |
| Abstract: | Комп'ютерні 3D ігри залишаються актуальними завдяки своїй здатності забезпечити імерсивний геймплей та високий рівень візуальної привабливості. Завдяки потужності рушія Unity, розробники можуть створювати реалістичні бойові сцени з ефектними анімаціями та вражаючими візуальними ефектами. Жанр "Slasher" зберігає популярність серед геймерів завдяки своєму динамічному геймплею та можливості відчути себе справжнім воїном, занурившись у світ захоплюючих бойових пригод. Мета кваліфікаційної роботи бакалавра – створення комп’ютерної 3-D гри жанру «Slasher» на рушії Unity. Об’єктом дослідження є ігри жанру «Slasher» та особливості створення їх на Unity. Предмет дослідження: створення гри «The Ramble». |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/6186 |
| Appears in Collections: | 122 Комп’ютерні науки (Комп’ютерні науки та прикладне програмування) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Пояснювальна записка_Єфіменко Олег_КНС-2201_2023-2024.pdf Restricted Access | 2.8 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИЧЕРКАСЬКИЙ ДЕРЖАВНИЙ
ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра комп’ютерних наук та системного аналізу
Пояснювальна записка
до кваліфікаційної роботи
бакалавра
(освітньо-кваліфікаційний рівень)
на тему: «Комп’ютерна 3-D гра жанру «Slasher» на рушії Unity»
Виконав: студент 4 курсу, групи КНС-2201
спеціальності 122 «Комп’ютерні науки»
(шифр і назва спеціальності)
освітня програма «Комп’ютерні науки та
(назва освітньої програми)
прикладне програмування
Єфіменко Олег Вікторович
Керівник __________ Підгорний М.В.
(прізвище та ініціали)
Рецензент __________ Мельник В.П.
(прізвище та ініціали)
Черкаси 2024 року
2
Бланк завдання на кваліфікаційну роботу бакалавра студенту
Черкаський державний технологічний університет
Факультет Інформаційних технологій і систем
Кафедра Комп’ютерних наук та системного аналізу
Освітньо-кваліфікаційний рівень Бакалавр
Спеціальність 122 – Комп’ютерні науки
Освітня програма Комп’ютерні науки та прикладне програмування
ЗАТВЕРДЖУЮ
Завідувач кафедри КНСА
_______________ Юрій ТРИУС
«____» _____________ 2024 р.
ЗАВДАННЯ
на кваліфікаційну роботу бакалавра студенту
Єфіменку Олегу Вікторовичу
(прізвище, ім‘я, по батькові)
1. Тема роботи Комп’ютерна 3-D гра жанру «Slasher» на рушії Unity
Керівник роботи Підгорний М.В., к.т.н., доцент
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом університету від «26» лютого 2024 р. №60/04.
2. Строк подання студентом роботи до 12 червня 2024 року
3. Вихідні дані до роботи:
Жанр гри – «Slasher». Програмне середовище Unity та Visual Studio.
Мова програмування C#.
4. Зміст пояснювальної записки (перелік питань, що їх належить розробити):
Вступ
4.1. Дослідження предметної області.
4.2. Проєктування та розробка комп’ютерної 3-D гри жанру «Slasher» на рушії Unity.
4.3. Тестування комп’ютерної 3-D гри жанру «Slasher» на рушії Unity.
Висновки.
5. Перелік додатків (з точним зазначенням назв додатків):
5.1. Додаток А. Специфікація 482.ЧДТУ. 42284-01.
5.2. Додаток Б. Текст програми.
5.3. Додаток В. Інструкція користувача.
5.5. Презентація у вигляді 27 слайду.
6. Консультанти розділів роботи
3
Прізвище, ініціали та Підпис, дата
Розділ
посада консультанта завдання видав завдання прийняв
7. Дата видачі завдання 15.01.2024
КАЛЕНДАРНИЙ ПЛАН
Строк виконання
№ з/п Назва етапів кваліфікаційної роботи бакалавра Примітка
етапів роботи
1 Видача завдання на кваліфікаційну роботу
15.01.2024 Виконано
бакалавра.
2 Аналіз літературних джерел, об’єкту та предмету
до 13.02.2024 Виконано
дослідження.
3 Написання теоретичного розділу кваліфікаційної
до 15.03.2024 Виконано
роботи бакалавра.
4 Написання аналітичного розділу кваліфікаційної
до 01.04.2024 Виконано
роботи бакалавра.
5 Написання практичних розділів й висновків до
до 01.05.2024 Виконано
кваліфікаційної роботи бакалавра.
6 Передзахист кваліфікаційної роботи бакалавра
03.06.2024 Виконано
на засіданні кафедри КНСА.
7 Подання роботи завідувачу кафедри КНСА. до 10.06.2024 Виконано
8 Захист кваліфікаційної роботи бакалавра. 12.06.2024 Виконано
Студент _____________________________ Олег ЄФІМЕНКО
(підпис)
Керівник роботи ____________________________ Микола ПІДГОРНИЙ
(підпис)
4
РЕФЕРАТ
Кваліфікаційна робота бакалавра містить: 67 с., 32 рис., 1 таблицю, 11
використаних джерел, 3 додатки.
Актуальність теми. Комп'ютерні 3D ігри залишаються актуальними завдяки
своїй здатності забезпечити імерсивний геймплей та високий рівень візуальної
привабливості. Завдяки потужності рушія Unity, розробники можуть створювати
реалістичні бойові сцени з ефектними анімаціями та вражаючими візуальними
ефектами. Жанр "Slasher" зберігає популярність серед геймерів завдяки своєму
динамічному геймплею та можливості відчути себе справжнім воїном, занурившись
у світ захоплюючих бойових пригод.
Мета роботи і задачі дослідження. Мета кваліфікаційної роботи бакалавра –
створення комп’ютерної 3-D гри жанру «Slasher» на рушії Unity.
Для досягнення поставленої мети були поставлені такі завдання:
дослідити сферу ігрової індустрії;
виконати аналіз порівнюючи існуючі ігор;
обрати програмно-технічні засоби для розробки комп’ютерної 3-D гри жанру
«Slasher»;
розробити саму гру;
провести тестування.
Об’єктом дослідження є ігри жанру «Slasher» та особливості створення їх на
Unity.
Предмет дослідження: створення гри «The Ramble».
Методи дослідження.
– теоретичний (проблеми дослідження та аналіз літературних джерел);
– емпіричний – проведення експериментів у середовищах розробки для
створення комп’ютерної 3-D гри в жанрі «Slasher» на рушії Unity;
– порівняльний – для здійснення порівнянь існуючих ігор в такому жанрі.
Перелік ключових слів: ПРЕДМЕТНА ОБЛАСТЬ, КОМП’ЮТЕРНА ГРА,
СЛЕШЕР.
5
ABSTRACT
The bachelor's thesis contains: 67 pages, 32 figures, 1 table, 11 used sources, 3
appendices.
Actuality of theme. 3D computer games remain relevant due to their ability to provide
immersive gameplay and a high level of visual appeal. Thanks to the power of the Unity
engine, developers can create realistic combat scenes with spectacular animations and
impressive visual effects. The "Slasher" genre remains popular among gamers thanks to its
dynamic gameplay and the opportunity to feel like a real warrior, immersing yourself in the
world of exciting combat adventures.
The purpose of the work and research tasks. The purpose of the bachelor's
qualification work is to create a 3-D computer game of the "Slasher" genre using the Unity
engine.
To achieve the goal, the following tasks were set:
– research the field of the game industry;
– perform an analysis comparing existing games;
– choose software and technical means for developing a 3-D computer game of the
"Slasher" genre;
– develop the game itself;
– conduct testing.
Research object: development of a 3-D game on the Unity engine in the "Slasher"
genre.
Research subject: creation of the game "The Ramble".
Research methods.
– theoretical (research problems and analysis of literary sources);
– empirical – conducting experiments in development environments to create a
computer 3-D game in the “Slasher” genre using the Unity engine;
– comparative – for making comparisons of existing games in this genre.
List of keywords: SUBJECT FIELD, COMPUTER GAME, SLASHER.
6
ЗМІСТ
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ, СИМВОЛІВ, СКОРОЧЕНЬ І ТЕРМІНІВ .... 8
ВСТУП .............................................................................................................................. 9
1 ДОСЛІДЖЕННЯ ПРЕДМЕТНОЇ ОБЛАСТІ ....................................................... 11
1.1 Аналіз сучасного стану ігор жанру «Slasher» ................................................... 11
1.2 Огляд існуючих аналогів комп’ютерних 3-D ігор жанру «Slasher» .............. 13
1.2.2 Аналіз гри «Metal Gear Rising: Revengeance». ................................................ 15
1.2.3 Аналіз гри «TheDawn». ..................................................................................... 16
1.3 Порівняльний аналіз наявних рішень, розгляд реалізованих варіантів та
формулювання завдання. .......................................................................................... 17
Висновки до розділу 1 ............................................................................................... 19
2 ПРОЄКТУВАННЯ ТА РОЗРОБКА КОМП’ЮТЕРНОЇ 3-D ГРИ ЖАНРУ
«SLASHER» НА РУШІЇ UNITY .................................................................................. 20
2.1 Опис програмного середовища для розробки гри ........................................... 20
2.1.1 Опис програмного середовища Microsoft Visual Studio. ............................... 20
2.1.2 Опис програмного середовища Unity. ............................................................. 21
2.1.3 Опис мови програмування C#. ......................................................................... 22
2.1.4 Опис бібліотеки MonoBehaviour. ..................................................................... 24
2.1.5 Опис програмного пакету Blender. .................................................................. 25
2.2 Принципи розробки комп’ютерної 3-D гри жанру «Slasher» на рушії Unity 26
2.3 Архітектура комп'ютерної 3D гри ...................................................................... 27
2.3.1 Опис взаємодії ігрових об’єктів на мапі. ........................................................ 28
2.4 Розробка діаграми способів використання........................................................ 31
2.5 Опис процесу проходження комп’ютерної 3-D гри жанру «Slasher» на рушії
Unity 32
2.6 Проєктування інтерфейсу ................................................................................... 35
2.7 Проєктування ігрової мапи ................................................................................. 37
Висновки до розділу 2 ............................................................................................... 39
7
3 ПРОГРАМНА РЕАЛІЗАЦІЯ ТА ТЕСТУВАННЯ КОМП’ЮТЕРНОЇ 3-D ГРИ
ЖАНРУ «SLASHER» НА РУШІЇ UNITY ................................................................... 40
3.1 Постановка завдання ........................................................................................... 40
3.2 Розробка головного меню ................................................................................... 40
3.3 Розробка меню паузи ........................................................................................... 43
3.4 Розробка ігрової мапи, локацій .......................................................................... 44
3.5 Розробка моделей та анімацій ............................................................................ 47
3.6 Розробка бою ........................................................................................................ 49
3.7 Розробка штучного інтелекту ворогів ............................................................... 51
3.8 Розробка збереження ігрового прогресу ........................................................... 52
3.9 Тестування ............................................................................................................ 53
Висновки до розділу 3 ............................................................................................... 54
ВИСНОВКИ ................................................................................................................... 55
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ..................................................................... 56
ДОДАТОК А. Специфікація 482.ЧДТУ. 42284-01 .................................................... 57
ДОДАТОК Б. Текст програми ..................................................................................... 59
ДОДАТОК В. Інструкція користувача ........................................................................ 66
8
ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ, СИМВОЛІВ, СКОРОЧЕНЬ І ТЕРМІНІВ
ПЗ – програмне забезпечення;
Слешер – з англ. hack рубати та англ. slash — різати. Значно більш відомий за
скороченням слешер (slaher).
VR – різновид реальності в формі тотожності матеріального й ідеального, що
створюється та існує завдяки іншій реальності.
AR – термін, що позначає всі проєкти, спрямовані на доповнення реальності будь-
якими віртуальними елементами.
Геймпад – або ґеймпад, пристрій введення для двох рук, що використовується для
керування ігровим процесом відеогри, передусім на гральній консолі.
Геймплей – термін, яким називають особливості взаємодії людини з відеогрою.
UI – засіб зручної взаємодії користувача (людини) з інформаційною системою.
NPC – персонаж в комп'ютерних і настільних рольових іграх, керований програмою
або майстром, в останньому випадку іноді може називатися ма́йстровим персонажем.
Асети – цифровий об'єкт, який переважно складається з однотипних даних,
неподільна сутність, яка представляє частину ігрового контенту і має деякі
властивості.
Спрайт – окреме двовимірне зображення, що застосовується в комп'ютерній графіці
як частина більшого зображення.
Текстура – растрове зображення, що накладається на поверхню.
9
ВСТУП
Багато людей сьогодні використовують комп’ютерні ігри для відпочинку та для
того щоб зануритись у світ захоплюючих пригод і хорошої історії. В ігровій індустрії
певну свою нішу займають ігри жанру «Slasher», які дають гравцеві унікальний
ігровий досвід та можуть дати виклик для більш досвідчених гравців. Багато ігор в
жанрі «Slasher» запам’ятовуються своїм сюжетом, ігровими механіками та бойовою
системою. Деякі з цих ігор стають культовими та гравці які грали в них вкрай
рекомендують їх іншим людям спробувати цей унікальний досвід, звідси випливає
їхня популярність серед гейммерів.
Hack and slash (Значно більш відомий за скороченням слешер) – термін на
означення ігрового процесу відеоігор, акцентованого на використанні зброї
ближнього бою та знищення, за її використання, великої кількості супротивників.
Геймплей побудований на домінуванні видовищності та анімації понад сюжет.
[1]. Багато слешерів в першу чергу розробляються для консолей, оскільки геймпади
ідеально підходять для цього жанру завдяки вдалому та зручному розташуванні
кнопок яке покращує управління, що спрощує виконання комбо та забезпечує
зручність гравцям. У порівнянні з консолями, ПК має обмежені засоби керування:
клавіатури нерідко великі та не такі зручні для гри в слешери, а миші з двома-трьома
кнопками недостатньо функціональні. Це призводить до відносно низької
популярності слешерів серед користувачів ПК. Однак для поліпшення геймплею на
ПК можна скористатися багатокнопковими «ігровими» мишами або підключити
додатковий геймпад, який підтримується на цій платформі.
Деякі розробники ігор використовують та вдосконалюють вже створені
інструменти та середовища розробки щоб створювати ігри. Зараз дуже багато
незалежних розробники ігор використовують ігровий двигун Unity –
міжплатформний інструмент для розробки відеоігор і застосунків, і рушій, на якому
вони працюють. Створені за допомогою Unity ігри працюють на настільних
комп'ютерних системах, мобільних пристроях та гральних консолях у дво- та
10
тривимірній графіці, та на пристроях віртуальної (VR) чи доповненої реальності (AR).
Актуальність даної теми.
Актуальність теми комп’ютерна 3-D гра жанру «Slasher» на рушії Unity полягає
в постійному розвитку гейміндустрії та пошуку нових способів залучення гравців.
Слешери відіграють важливу роль у цьому процесі, надаючи можливість
насолоджуватися швидким та екшн-насиченим геймплеєм. Зростання технологій у
розробці гри, а також поява нових платформ для гри, таких як віртуальна реальність,
збільшують інтерес до даного жанру та його актуальність серед аудиторії.
Мета кваліфікаційної роботи бакалавра – комп’ютерна 3-D гра жанру
«Slasher» на рушії Unity.
Для досягнення поставленої мети були поставлені такі завдання:
дослідити сферу ігрової індустрії;
виконати аналіз порівнюючи існуючі ігор;
обрати програмно-технічні засоби для розробки комп’ютерної 3-D гри жанру
«Slasher»;
розробити саму гру;
провести тестування.
Об’єкт і предмет дослідження.
Об’єктом дослідження є ігри жанру «Slasher» та особливості створення їх на
Unity.
Предметом дослідження є створення гри «The Ramble».
Для досягнення цілей були використані такі методи дослідження:
– теоретичний (проблеми дослідження та аналіз літературних джерел);
– емпіричний – проведення експериментів у середовищах розробки для
створення комп’ютерної 3-D гри в жанрі «Slasher» на рушії Unity;
– порівняльний – для здійснення порівнянь існуючих ігор в такому жанрі.
Для створення програмного забезпечення використано новітні технології, а
саме: Unity, C#, Visual Studio, Blender. Обрані технології задовольняють всім
функціональним і не функціональним вимогам до такого типу програмного
забезпечення (ПЗ).
11
1 ДОСЛІДЖЕННЯ ПРЕДМЕТНОЇ ОБЛАСТІ
1.1 Аналіз сучасного стану ігор жанру «Slasher»
Сучасний стан ігор жанру «Slasher» вражає різноманіттям та технологічним
просуванням. Нові частини ігор продовжують привертати увагу гравців завдяки
поєднанню захоплюючого геймплею зі стильними візуальними ефектами.
Розробники активно впроваджують передові технології, такі як штучний інтелект для
реалістичної поведінки ворогів та ігрових персонажів, а також фізичні двигуни для
ще більш імерсивного досвіду.
Жанр «Slasher» також успішно експериментує з різними аспектами геймплею,
включаючи розвиток історії, варіативність героїв та механіку бою. Велика увага
приділяється саме маханікам (методам бою) та ігровим мапам, для того щоб гравець
не зміг занудьгувати.
Однак, з ростом конкуренції із іншими жанрами та зростанням очікувань
гравців, розробники повинні постійно проводити інновацію та вдосконалювати свої
ігри, щоб зберігати інтерес аудиторії. Також, з'являються виклики, пов'язані з
технічними обмеженнями різних платформ та забезпеченням оптимального
геймплею на різних пристроях, від консолей до персональних комп'ютерів та
мобільних пристроїв.
Популярність та необхідність сектору слешерів обумовлюються декількома
аспектами та тенденціями:
− Зростання інтересу до екшн-ігор: Гравці шукають захоплюючі ігри з
інтенсивним геймплеєм та швидкими бойовими сценами. Слешери відповідають на
цей попит, надаючи можливість відчути себе справжнім воїном у захоплюючих
битвах.
− Технологічний прогрес: Завдяки розвитку технологій, які дозволяють
створювати реалістичні візуальні ефекти та штучний інтелект для ворогів, слешери
стають ще більш імерсивними та захоплюючими.
12
− Мультиплатформенність: Слешери випускаються на різних платформах, від
консолей до ПК та мобільних пристроїв, що розширює аудиторію гравців та сприяє
популярності жанру.
− Розвиток мультиплеєра: Онлайн-режими та можливість спільної гри з друзями
або змагання з іншими гравцями збільшують привабливість слешерів та стимулюють
їх популярність.
− Експерименти з геймплеєм: Розробники постійно експериментують з різними
аспектами геймплею, щоб зробити ігри ще цікавішими та різноманітнішими для
гравців.
Розглянемо головні характеристики комп’ютерної 3-D гри жанру «Slasher» на
рушії Unity.
При створенні гри повинні забезпечуватись наступні функції та можливості:
– Управління персонажем для того щоб гравець мав змогу керувати ним за
допомогою пристроїв введення, в цьому випадку клавіатури та миші.
– Можливість вільно керувати камерою мишею для того щоб гравцеві було
зручніше обрати ракурс під час проходження гри.
– Перегляд інформації про наявні очки здоров’я.
– Бойова механіка яка дозволить перемагати над ворогами.
– Можливість натиснути гру на «паузу», щоб гравець міг відійти від гри в будь
який момент.
– Логічний сюжет гри для розуміння внутрішньо ігрового світу.
– Можливість збереження ігрового прогресу гравця і повернення до нього навіть
після закриття гри.
– Закінчення гри, або фінал.
– Ігрові локації або мапи на яких гравець буде грати та проходити гру.
На ігрових локаціях повинні розташовуватись зони з ворогами та безпечні зони
де гравець може перепочити та паралельно цьому ознайомитись з новими
фрагментами сюжету гри.
Опис основних етапів розробки комп’ютерної 3-D гри жанру «Slasher» на рушії
Unity.
13
Розробка гри включає такі основні кроки:
1. Планування та концепція. Визначення основних характеристик гри, таких як
механіка бою, архітектура рівнів, головні персонажі тощо. Створення концепції гри,
включаючи скетчі, концептуальні малюнки та опис геймплею.
2. Створення середовища та об'єктів. Створення або завантаження моделей
персонажів, ворогів, об'єктів у середовищі. Розміщення об'єктів на сцені та
налаштування їх фізики, колізій та анімацій.
3. Реалізація механіки бою. Розробка системи управління персонажем та
ворогами. Визначення механік атаки, руху та інших дій в бою. Налаштування
анімацій та звукових ефектів для більшої реалістичності.
4. Створення інтерфейсу користувача. Розробка UI елементів, таких як життя,
енергія, інвентар та інші ігрові параметри. Реалізація меню, налаштувань та інших
екранів.
5. Тестування та поліпшення. Проведення внутрішнього тестування для
виявлення та виправлення помилок. Оптимізація гри для підвищення продуктивності
та зниження навантаження на систему. Виправлення помилок та вдосконалення
геймплею за допомогою отриманої зворотного зв'язку.
6. Реалізація та підтримка. Підготовка гри до випуску на різні платформи.
Підтримка та випуск оновлень для виправлення помилок та додавання нового
контенту після випуску.
1.2 Огляд існуючих аналогів комп’ютерних 3-D ігор жанру «Slasher»
В кваліфікаційній роботі бакалавра проведено огляд існуючих комп’ютерних 3-
D ігор жанру «Slasher», таких як: «Devil May Cry 5», «Metal Gear Rising: Revengeance»,
«TheDawn».
1.2.1 Аналіз гри «Devil May Cry 5». За перший розглянутий аналог було взято
гру «Devil May Cry 5» – це відеогра в жанрі пригодницького екшена і «Slasher»,
розроблена і видана студією Capcom. Це шоста гра у франшизі і п'ята в основній серії
«Devil May Cry». Вийшла для Microsoft Windows, PlayStation 4 і Xbox One 8 березня
14
2019 року. [2] «Devil May Cry 5» отримала позитивну критику від фахівців. Багато
хвалили її за відновлення традиційного стилю франшизи та розмаїття бойових технік,
які представлені трьома головними персонажами, а також V, який виділяється своїм
унікальним стилем командування підлеглими. Продажі гри перевищили два мільйони
примірників менше, ніж за місяць після випуску. Також були випущені ранобе та
манґа, пов'язані з грою.
Рисунок 1.1 – Постер «Devil May Cry 5»
Розглянем переваги та недоліки.
Переваги гри «Devil May Cry 5»:
– Геймплей: «Devil May Cry 5» має динамічний та захоплюючий геймплей, який
дозволяє гравцям виконувати різноманітні комбінації атак та рухів;
– Візуальна привабливість: Гра вражає своїм вражаючим візуальним
оформленням та деталізацією персонажів та оточуючого світу;
– Різноманітність персонажів: Гравці можуть грати за кількох різних персонажів,
кожен з яких має унікальні стилі бою та атаки;
– Звукове супроводження: Гра має потужний саундтрек та звукові ефекти, які
доповнюють дію та створюють насичену атмосферу.
Недоліки гри «Devil May Cry 5»:
15
– Тривалість гри: Деякі гравці відзначають, що гра може виявитися досить
короткою, особливо для тих, хто швидко проходить основний сюжет;
– Наявність мікроплатежів: Деякі елементи гри можуть бути доступні для
придбання за додаткову плату, що може розчарувати деяких гравців;
– Сюжетні аспекти: Хоча багато хто оцінюють сюжет гри, існують деякі гравці,
які відмічають деякі слабкі моменти або недоліки у розвитку персонажів.
1.2.2 Аналіз гри «Metal Gear Rising: Revengeance». Наступною грою було
проаналізовано «Metal Gear Rising: Revengeance» – відеогра 2013 року, жанру
«Slasher» бойовик, розроблена студіями PlatiniumGames та Kojima Productions і
випущена компанією Konami Digital Entertaiment, для PlayStation 3, Xbox 360 і
Microsoft Windows. Є спінофом серії Metal Gear. Події відбувається через 4 роки після
Metal Gear Solid 4: Guns of the Patriots, гравець керує Райденом – кіборгом, який
протистоїть приватній військовій компанії Desperado Enforcement. Ігровий процес
фокусується на битвах з ворогами використовуючи меч та інше озброєння для
здійснення комбо та контратак. Райден може за допомогою «Blade Mode» розрізати
кіборгів в уповільненому русі та діставати спеціальні частини з їх тіл. Стелс,
властивий серії цих ігор тут є, але опціональним. [3]
Рисунок 1.2 – Постер «Metal Gear Rising: Revengeance»
Переваги гри «Metal Gear Rising: Revengeance»:
16
– Інтенсивний геймплей: Гра має швидкий та захоплюючий бойовий геймплей,
який дозволяє гравцям виконувати ефектні атаки та комбінації;
– Унікальна механіка різання: Однією з ключових особливостей гри є система
реального часу, яка дозволяє гравцям різати об'єкти та ворогів в будь-якому
напрямку, що додає глибини бою;
– Стильний арт-дизайн: Гра має вражаючий арт-дизайн, що поєднує в собі
механічні та футуристичні елементи, що створює неповторну атмосферу;
– Захоплюючий саундтрек: «Metal Gear Rising: Revengeance» має потужний
саундтрек, який підкреслює енергію та напругу бойових сцен.
Недоліки гри «Metal Gear Rising: Revengeance»:
– Тривалість гри: Також як і «Devil May Cry 5», гра може виявитися досить
короткою;
– Відсутність глибокої сюжетної розвиненості: У порівнянні з іншими іграми
серії Metal Gear, Revengeance може відзначатися менш розвиненим сюжетом та
персонажами;
– Навігаційні проблеми: Деякі гравці можуть відзначати незручності в управлінні
та навігації, особливо в складних бойових сценах.
1.2.3 Аналіз гри «TheDawn». Наступною грою було взято «TheDawn» – це
шутер від третьої особи з елементами «Slasher» розроблена на рушії Unity про
подорож Майї, супергероїні, яка може маніпулювати часом, і Макса, хакера, який їй
допомагає. Їхня мета – врятувати людство від штучного інтелекту, який захопив світ.
Гра розгортається в антиутопічному майбутньому, де Корея вже не та, що
колись. Штучний інтелект захопив владу і збудував величний палац у центрі міста.
Майя та Макс повинні пробитися крізь штучний інтелект, щоб дістатися до палацу та
перемогти правителя, Блендера.
17
Рисунок 1.3 – Постер «TheDawn»
Переваги гри «TheDawn»:
– Захоплюючий сюжет: Історія гри добре продумана та інтригуюча, з
несподіваними поворотами та розкриттями;
– Динамічний геймплей: Гра пропонує динамічні та захоплюючі бої, де вам
доведеться використовувати здібності Майї та Макса, щоб перемогти ворогів;
– Хороша графіка: TheDawn має візуально хорошу графіку, яка створює красивий
та захоплюючий світ.
Недоліки гри «TheDawn»:
– Короткострокова: TheDawn – це відносно коротка гра, яку можна пройти
протягом кількох годин;
– Складність: Гра може бути складною для новачків, оскільки вона потребує
швидких рефлексів та вміння пристосовуватися до мінливих умов;
– Обмежена повторюваність: Через свою коротку довжину та лінійний сюжет
TheDawn не має високої повторюваності.
1.3 Порівняльний аналіз наявних рішень, розгляд реалізованих варіантів
та формулювання завдання.
Проаналізувавши існуючі рішення розглянутих проєктів, в кваліфікаційній
роботі бакалавра основною задачею є недопущення недоліків існуючих та увібравши
найкращі їх переваги .
18
У таблиці 1.1 продемонстровано порівняльний аналіз розглянутих раніше 3D
ігор в жанрі «Slasher» а саме: «Devil May Cry 5», «Metal Gear Rising: Revengeance»,
«TheDawn».
Таблиця 1.1 – Таблиця порівнянь існуючих ігор розглянутих раніше
Критерії порівняння ігор
Назва гри Графіка Головний сюжет Геймплей
(0-5) (0-5) (0-5)
«Devil May Cry
4.5 5 4
5»
«Metal Gear
Rising: 3.5 4 3
Revengeance»
«TheDawn» 3 3 3
Провівши аналіз існуючих ігор розглянутих вище, в кваліфікаційній роботі
бакалавра при розробці комп’ютерної 3-D гри жанру «Slasher» на рушії Unity
необхідно звернути увагу на такі аспекти:
– гра повинна мати логічний початок та кінець;
– гра повинна мати продуманий геймплей;
– гра повинна добре працювати з технічної частини.
Постановка завдання:
1) Аналіз роботи, вимог та використаних засобів для інтерфейсу комп’ютерної 3-
D гри жанру «Slasher».
2) Дослідження рушія Unity, C# та вибір найактуальніших технологій для
створення 3-D ігор.
3) Розробка комп’ютерної 3-D гри жанру «Slasher» на рушії Unity, яка задовольняє
таким функціональним вимогам:
– Інтуєтивне управління головним персонажем;
– Збереження ігрового прогресу гравця;
19
– Завантаження збереження ігрового процесу гравця;
– Розробка ігрового світу та його ворогів;
– Сюжет та його закінченість або відкритість;
– Можливість гравця пройти гру;
– Робочий штучний інтелект ворогів.
Висновки до розділу 1
У даному розділі досліджено предметну область, а саме: комп’ютерної 3-D ігри
жанру «Slasher»; огляд аналогів комп’ютерних 3-D ігор в жанрі «Slasher».
Виконано порівняльний аналіз аналогів, таких як: «Devil May Cry 5», «Metal
Gear Rising: Revengeance», «TheDawn» та визначено постановку завдання для
реалізації проєкту.
20
2 ПРОЄКТУВАННЯ ТА РОЗРОБКА КОМП’ЮТЕРНОЇ 3-D ГРИ ЖАНРУ
«SLASHER» НА РУШІЇ UNITY
2.1 Опис програмного середовища для розробки гри
Розробку комп’ютерної 3-D гри жанру «Slasher» на рушії Unity розділено на дві
частини – розробка програмної частини та графічної частини. Для розробки
програмної частини було обрано мову програмування C# та бібліотеку
MonoBehaviour для взаємодії з Unity, а для графічної частини був використаний сам
графічний рушій Unity, безкоштовні ассети та Blender. Для розробки програмної
частини було обрано середовище розробки Microsoft Visual Studio. Далі буде
розглянуто детальніше програмні середовища, технології та їх особливості
комп’ютерної 3-D гри жанру «Slasher».
2.1.1 Опис програмного середовища Microsoft Visual Studio. Microsoft Visual
Studio – серія продуктів фірми Майкрософт, які містять інтегроване середовище
розробки програмного забезпечення та низку інших інструментальних засобів. Ці
продукти дають змогу розробляти як консольні програми, так і програми з графічним
інтерфейсом, включно з підтримкою технології Windows Forms, а також вебсайти,
вебзастосунки, вебслужби як у рідному, так і в керованому кодах для всіх платформ,
що підтримуються Microsoft Windows, Windows Mobile, Windows Phone, Windows CE,
.NET Framework, .NET Compact Framework та Microsoft Silverlight [4]. Також
використовується для програмування на мовах програмування, таких як C#, C++, і
інших. Вона є одним з найпопулярніших інструментів для розробки програмного
забезпечення та ігор, включаючи створення 3D ігор на платформі Unity.
Microsoft Visual Studio є потужним і зручним засобом для розробки 3-D ігор на
платформі Unity, який надає розробникам зручність, продуктивність та можливість
налаштування для ефективного створення ігрового контенту.
Особливості використання Microsoft Visual Studio для розробки 3D ігор на
Unity:
21
– Підтримка C#: Unity використовує мову програмування C# для розробки гри.
Microsoft Visual Studio надає потужний інструментарій для програмування на цій
мові, включаючи автодоповнення коду, підказки та інші корисні функції, які
полегшують процес розробки;
– Інтеграція з Unity: Visual Studio ідеально інтегрується з Unity, що дозволяє легко
відкривати та редагувати сценарії (scripts) Unity прямо в середовищі розробки VS. Це
полегшує використання обох інструментів під час розробки гри;
– Налаштування оточення розробки: VS дозволяє налаштовувати середовище
розробки згідно з особистими потребами, включаючи вибір кольорової схеми,
розміщення вікон та інші параметри, що полегшують роботу з кодом;
– Налаштування налагодження: Visual Studio має потужні засоби налагодження,
такі як точки зупинки, відстеження змін змінних та інші, які допомагають виявляти
та виправляти помилки у коді гри;
– Підтримка різних платформ: VS дозволяє розробляти гри для різних платформ,
таких як Windows, MacOS, Android, iOS та інші, що робить його ідеальним
інструментом для розробки крос-платформенних ігор на Unity.
2.1.2 Опис програмного середовища Unity. Unity – багатоплатформовий
інструмент для розроблення відеоігор і застосунків, і рушій, на якому вони працюють.
Створені за допомогою Unity програми працюють на настільних комп'ютерних
системах, мобільних пристроях та гральних консолях у дво- та тривимірній графіці,
та на пристроях віртуальної чи доповненої реальності. Застосунки, створені за
допомогою Unity, підтримують DirectX та OpenGL [5].
Редактор Unity має інтерфейс, що складається з різноманітних вікон, які можна
розмістити за власним бажанням. Це дозволяє виконувати налагодження гри або
додатка безпосередньо в редакторі. Основні вікна включають оглядач ресурсів
проєкту, інспектор поточного об'єкта, вікно попереднього перегляду, оглядач сцени
та оглядач ієрархії ресурсів.
Особливості використання Unity для розробки ігор:
– Графічний рушій: Unity має потужний графічний рушій, який надає велику
кількість інструментів для реалізації 3D графіки. Він підтримує високоякісні моделі,
22
текстури, освітлення, тіні та інші візуальні ефекти, що дозволяють створювати
реалістичні ігрові світи;
– Фізичний рушій: Unity включає в себе потужний фізичний рушій, який дозволяє
симулювати реалістичну фізику для об'єктів у грі. Це дозволяє створювати вірогідні
фізичні ефекти, такі як гравітація, зіткнення, рух та інші;
– Мови програмування: Unity підтримує кілька мов програмування для створення
гри, але найпоширенішою є мова програмування C#. Вона є потужною та динамічною
мовою, яка дозволяє створювати складну логіку та взаємодію гри з користувачем;
– Імпорт активів: Unity підтримує широкий спектр форматів файлів для
імпортування активів у гру, таких як моделі, текстури, звуки, анімації тощо. Це
дозволяє розробникам використовувати різноманітний контент для створення
унікальних ігор;
– Крос-платформенна підтримка: Unity дозволяє розробляти гри для різних
платформ, включаючи ПК, консолі, мобільні пристрої та віртуальну реальність. Це
робить його ідеальним інструментом для створення крос-платформенних ігор;
– Спільність та співпраця: Unity надає інструменти для спільної роботи та
співпраці над проєктами. Розробники можуть легко ділитися ресурсами, кодом та
ідеями, що дозволяє збільшити продуктивність та якість роботи;
– Система контролю версій: Unity інтегрується з різними системами контролю
версій, такими як Git, що дозволяє розробникам ефективно керувати версіями свого
проєкту та спільно працювати над ним в команді;
– Можливості монетизації: Unity надає різноманітні можливості монетизації ігор,
включаючи рекламу, мікротранзакції, продаж контенту та інші. Це дозволяє
розробникам заробляти гроші на своїх іграх та розвивати свій бізнес.
2.1.3 Опис мови програмування C#. C# – об'єктно-орієнтована мова
програмування з безпечною системою типізації для платформи .NET. Розроблена
Андерсом Гейлсбергом, Скотом Вілтамутом та Пітером Гольде під егідою Microsoft
Research.
Синтаксис C# близький до С++ і Java. Мова має строгу статичну типізацію,
підтримує поліморфізм, перевантаження операторів, вказівники на функції-члени
23
класів, атрибути, події, властивості, винятки, коментарі у форматі XML. Перейнявши
багато від своїх попередників – мов С++, Object Pascal, Модула і Smalltalk – С#,
спираючись на практику їхнього використання, виключає деякі моделі, що
зарекомендували себе як проблематичні при розробці програмних систем, наприклад,
мова С#, на відміну від C++, не передбачає множинне успадкування класів [6].
Сьогодні C# є однією з найпопулярніших мов програмування у світі. Вона
використовується для розробки різноманітних програм та додатків, включаючи веб-
додатки, мобільні додатки, ігри, програмне забезпечення для вбудованих систем та
багато іншого. Стабільність, продуктивність та широкі можливості роблять C#
однією з перших мов програмування для багатьох розробників у всьому світі.
C# використовує "директиви препроцесора" на основі препроцесора C, що
дозволяє програмістам визначати символи, але не макроси. Умовні директиви, такі як
#if, #endif та #else, також підтримуються. Директиви, подібні до #region, надають
можливість редактору коду згортати фрагменти коду.
Специфікація C# встановлює мінімальний набір типів і класів бібліотек, на який
може розраховувати компілятор. Зазвичай, C# використовується разом з реалізацією
Common Language Infrastructure (CLI), яка стандартизована як ECMA-335 Common
Language Infrastructure (CLI).
Особливості мови програмування C#:
− Синтаксис інтуїтивний: Синтаксис C# схожий на синтаксис інших мов
програмування, таких як C++ та Java, що робить його легким для вивчення і
використання для розробників, які мають досвід у цих мовах;
− Підтримка об'єктно-орієнтованого програмування (ООП): C# повністю
підтримує принципи ООП, такі як спадкування, інкапсуляція, поліморфізм,
абстракція, що дозволяє розробникам створювати чистий, структурований код;
− Мова безпечна: C# має вбудовані засоби для запобігання помилок під час
виконання програм, таких як виходи за межі масиву або нульові вказівники. Це
дозволяє розробникам писати більш безпечний код;
24
− Можливості розширення: C# підтримує розширення методів (extension methods)
та делегати, що дозволяє додавати нові функціональні можливості до існуючих типів
даних без необхідності модифікації їх коду;
− Підтримка LINQ: Language Integrated Query (LINQ) – це вбудований запитовий
механізм, який дозволяє розробникам виконувати операції з об'єктами, які зазвичай
виконуються в базах даних, безпосередньо в коді C#;
− Крос-платформенність: Запуск коду C# можливий на різних платформах
завдяки реалізаціям .NET, таким як .NET Framework для Windows, .NET Core для
крос-платформенних застосунків та Xamarin для мобільних пристроїв;
− Інтеграція з іншими технологіями Microsoft: C# інтегрується з широким
спектром технологій Microsoft, таких як ASP.NET для веб-розробки, Windows Forms
та WPF для розробки клієнтських додатків для Windows, Azure для хмарних
застосунків тощо.
Загалом, C# є мовою програмування з потужними можливостями, яка підходить
для розробки різноманітних програм та додатків для різних платформ.
2.1.4 Опис бібліотеки MonoBehaviour. Бібліотека MonoBehaviour є ключовою
складовою в середовищі розробки Unity і використовується для створення
компонентів поведінки об'єктів у грі. Вона є базовим класом для всіх скриптів, які ви
створюєте в Unity. Кожен скрипт, який ви додаєте до об'єкта у вашій грі, має
успадковувати клас MonoBehaviour. Також дозволяє додавати різноманітні
компоненти поведінки до об'єктів у вашій грі. Це можуть бути скрипти, які
контролюють рух, анімацію, здоров'я персонажів, взаємодію з іншими об'єктами та
багато іншого.
MonoBehaviour має ряд методів, які автоматично викликаються під час різних
подій в життєвому циклі об'єкта в Unity. Це включає методи, які викликаються при
створенні об'єкта, початку та завершенні кожного кадру, взаємодії з колайдерами,
введенням користувача та іншими.
Деякі особливості MonoBehaviour:
25
− MonoBehaviour надає доступ до різноманітних методів та властивостей Unity
API, що дозволяє вам керувати об'єктами, компонентами та іншими елементами вашої
гри.
− Класи, які успадковують MonoBehaviour, можуть реагувати на події, такі як
натискання клавіш, кліки миші, зіткнення об'єктів та інші, що дозволяє створювати
інтерактивні та живі ігрові світи.
Загалом, бібліотека MonoBehaviour відіграє важливу роль у створенні ігор в
середовищі Unity, дозволяючи розробникам легко керувати поведінкою об'єктів та
створювати складні інтерактивні досвіди для гравців.
2.1.5 Опис програмного пакету Blender. Blender – програмний пакет для
створення тривимірної комп'ютерної графіки, що включає засоби моделювання,
анімації, рендерінгу, після-обробки відео. До версії 2.80 містив рушій Blender Game
Engine для створення відеоігор. Пакет є вільним програмним забезпеченням та
розповсюджується під ліцензією GNU GPL [7].
Особливості Blender:
− Безкоштовність та відкритий код: Однією з найбільших переваг Blender є те, що
він повністю безкоштовний і має відкритий вихідний код. Це дозволяє користувачам
з усього світу використовувати програму безкоштовно та навіть вносити власні зміни
в програму, якщо потрібно;
− Тривимірне моделювання: Blender має потужні інструменти для тривимірного
моделювання, що дозволяють створювати складні тривимірні об'єкти з нуля або за
допомогою вбудованих шаблонів;
− Анімація: Blender підтримує анімацію об'єктів, включаючи скелетальну
анімацію, ключові кадри та інші техніки. Це дозволяє створювати реалістичні
анімаційні сцени та персонажі;
− Візуалізація та рендеринг: Blender має вбудований рушій рендерингу, який
дозволяє створювати фотореалістичні зображення та анімації. Користувачі можуть
використовувати різні методи рендерингу, такі як Cycles та Eevee, для досягнення
різної якості та швидкості відтворення;
26
− Відеоредактор та композитор: У Blender є вбудований відеоредактор та
композитор, що дозволяє користувачам редагувати та обробляти відео, включаючи
додавання ефектів, текстури, звуку та інших елементів;
− Спільнота користувачів і підтримка: Blender має велику та активну спільноту
користувачів, яка надає підтримку, навчальні матеріали, онлайн-курси та різні
ресурси для новачків та досвідчених користувачів.
В цілому, Blender – це потужна програма з великим набором функцій та
можливостей, яка підходить для різних видів творчої роботи у галузі тривимірної
графіки та анімації.
2.2 Принципи розробки комп’ютерної 3-D гри жанру «Slasher» на рушії
Unity
Створення комп’ютерної 3-D гри жанру «Slasher» ґрунтується на деяких
ключових принципах. Завдяки дотримуванням цим принципам розробка хорошого
слешеру гарантована.
Розробка комп'ютерної 3D гри жанру "Slasher" на рушії Unity включає декілька
наступних принципів:
– Проєктування ігрового світу: Перший крок – це проєктування світу гри,
включаючи рівні, об'єкти, персонажі та їх взаємодію. Важливо створити динамічні та
захоплюючі рівні, які стимулюватимуть гравця до подальшого дослідження;
– Реалізація геймплею: Головна увага при розробці "Slasher" спрямована на
бойову систему та битви. Реалізація рухів, атак та захистів, а також реакція ворогів на
дії гравця є ключовими аспектами;
– Створення персонажів і анімацій: Розробка реалістичних персонажів з
потужними анімаціями є важливим етапом. Кожен персонаж повинен мати
унікальний стиль бою та вигляд, який відображає його характер;
– Графіка та ефекти: Для створення захоплюючого візуального досвіду важливо
використовувати високоякісну графіку та спеціальні ефекти, такі як освітлення,
частинки та фізична симуляція;
27
– Звукове оформлення: Звук відіграє велику роль у "Slasher", додаючи атмосфери
та підсилюючи динаміку боїв. Важливо використовувати якісні звукові ефекти для
атак, захистів та фонової музики;
– Тестування та поліпшення: Після завершення розробки важливо провести
тестування гри для виявлення та виправлення помилок, а також для забезпечення
збалансованості та приємного геймплею.
2.3 Архітектура комп'ютерної 3D гри
Архітектура комп'ютерної 3D гри – це структура та організація програмного
коду, ресурсів та компонентів, що визначають спосіб, яким гра розробляється,
взаємодіє з користувачем та функціонує в цілому. Ця архітектура включає в себе
різноманітні аспекти, такі як структура коду, система управління об'єктами,
реалізація логіки гри, візуалізація, звукове оформлення, штучний інтелект та багато
іншого.
Архітектура проєкту для комп'ютерної 3D гри жанру "Slasher" на рушії Unity
повинна бути добре структурованою та організованою, щоб забезпечити ефективний
розвиток, керованість та легкість супроводу. Таку архітектура представлено на рис.
2.1.
Деякі ключові принципи архітектури проєкту для такої гри:
− Модульність: Розробка проєкту повинна бути розділена на модулі, які
відповідають за конкретні аспекти гри, такі як управління персонажем, боєві системи,
штучний інтелект ворогів, анімація, аудіо та інші. Це дозволить забезпечити легке
розширення та підтримку коду;
− Складність ієрархії об'єктів: Важливо створити збалансовану ієрархію об'єктів,
де кожен об'єкт відповідає за свою частину функціональності. Наприклад, можна
використовувати паттерн "Компонентний підхід", де кожен компонент відповідає за
певний аспект поведінки об'єкта;
28
− Управління станами гри: Для ефективного керування різними станами гри,
такими як головне меню, ігровий процес, вікно налаштувань тощо, рекомендується
використовувати станові машини або паттерн "Сцена-компонент";
− Оптимізація та продуктивність: Важливо ретельно вибирати та оптимізувати
алгоритми та структури даних для досягнення високої продуктивності гри, особливо
в умовах обробки великої кількості об'єктів та ефектів.
Рисунок 2.1 – Взаємодія компонентів та складових гри
2.3.1 Опис взаємодії ігрових об’єктів на мапі. Деякі компоненти зображені
безпосередньо на екрані гравця, вони повинні взаємодіяти між собою створюючи
геймплей, який в свою чергу є основою гри.
На рис. 2.2 зображено діаграму взаємодію ігрових об’єктів.
29
Рисунок 2.2 – Діаграма взаємодій ігрових об'єктів
У цій діаграмі показано, як різні ігрові об'єкти взаємодіють між собою на мапі
гри. Об'єкт гравця рухається по мапі та взаємодіє з тригерами для завдань, ворогами
та іншими об'єктами. Вороги можуть реагувати на дії гравця, а також взаємодіяти між
собою. Інтерфейс відображає необхідну інформацію для гравця, таку як життя, бали,
завдання тощо.
Карта гри є основним ігровим світом, де відбувається весь ігровий процес. Вона
може включати в себе різні регіони, рівні або локації, які гравець може відвідати.
Об'єкт гравця – це ігровий об'єкт, який представляє гравця в грі. Гравець може
керувати цим об'єктом та взаємодіяти з іншими елементами гри.
Тригери для завдань – це спеціальні об'єкти, які запускають певні події або
завдання при певних умовах. Наприклад, тригер може активувати завдання, коли
гравець підходить до певної області на карті.
Об'єкти ворогів представляють ворогів або противників у грі. Вони можуть
мати власну штучну інтелект, яка визначає їх поведінку та реакцію на дії гравця.
Інтерфейс – це елементи, що відображаються на екрані гравця та надають
необхідну інформацію про гру. Це може включати панелі з життям, енергією, балами,
інвентарем, картою тощо.
2.3.2 Опис взаємодії скриптів. У цьому прикладі ми маємо два класи скриптів:
"Головний скрипт" і "Сцена об'єкт". Головний скрипт відповідає за управління
гравцем, камерою та іншими аспектами гри. Сцена об'єкт відповідає за управління
30
об'єктами на сцені, такими як вороги та оточуюче середовище. Діаграма яка
демонструє ці приклади зображена на рис. 2.3.
Рисунок 2.3 – Діаграма взаємодії скриптів
У цій діаграмі показано, які елементи кожного класу взаємодіють між собою.
Наприклад, "Головний скрипт" може мати посилання на гравця, камеру та менеджер
інтерфейсу користувача (UIManager). В той же час "Сцена об'єкт" може мати
посилання на ворогів та оточуюче середовище.
Докладніше про компоненти діаграми скриптів:
− Головний скрипт: Це основний код, який керує головними аспектами гри. Він
може містити основну логіку гри, таку як управління головним героєм, керування
камерою, обробка введення гравця та інші важливі функції;
− Сценарій об'єкту: Це код, який прикріплений до конкретного ігрового об'єкта
на сцені. Він відповідає за унікальну поведінку цього об'єкта та взаємодію з іншими
об'єктами та скриптами;
− Логіка об'єкту: Це може бути окремий код або частина коду об'єкту, яка
відповідає за конкретний аспект поведінки об'єкта. Наприклад, це може бути скрипт
для керування анімацією об'єкта або для обробки його фізики;
− Управління інтерфейсом: Це код, який керує відображенням інтерфейсу
користувача (UI) та його взаємодією з гравцем. Він може включати в себе логіку для
відображення різних елементів інтерфейсу, таких як життя, енергія, інвентар та інші.
31
2.4 Розробка діаграми способів використання
Діаграма способів використання є хорошим інструментом при розробці
комп'ютерних 3-D ігор, оскільки вона допомагає визначити, як гравці можуть
взаємодіяти з ігровою системою. Це найпростіший спосіб відображення функціоналу
гри та сценаріїв її використання. При створенні такої діаграми використовуються
актори, такі як гравці, NPC (штучний інтелект) та інші сутності, які взаємодіють з
грою. Після ідентифікації акторів формується перелік можливих сценаріїв взаємодії
з системою, що допомагає розробникам краще зрозуміти потреби користувачів та
функціональність гри.
Для кваліфікаційної роботи бакалавра було розроблено діаграму варіантів
використання на основі аналізу інформації про користувачів додатку та можливих
сценаріїв взаємодії. На діаграмі один тип користувача.
Елементи діаграми:
− Гравець (користувач): жива людина яка грає в дану гру;
− Управління персонажем: включає в себе бойову систему, пересування
персонажа так користувацький інтерфейс;
− Ігрове поле: на ігровому полі розташовуються всі ігрові об’єкти та тригери;
− Вороги: одна з цілей гравця;
− Перемога над ворогами: одна із головних цілей для успішного закінчення гри;
− Кінець гри: безпосередньо продуманий кінець гри який ставить крапку в
продовження даної гри;
− Збереження гри: зберігання ігрового прогресу гравця;
− Завантаження збереження.
Варіанти використання комп’ютерної 3-D гри:
Гравець (користувач) через управління персонажем може взаємодіяти з ігровим
полем створювати збереження та завантажувати їх. В свою чергу ігрове поле надає
нам змогу взаємодіяти з ворогами. Перемоги над ворогами дає змогу пройти далі по
ігровому полю та в кінці проходження гри.
32
На основі сформованих елементах про компоненти гри та всі можливі варіанти
використання комп’ютерної 3-D гри, побудовано діаграму варіантів використання
(рис. 2.4).
Рисунок 2.4 – Діаграма варіантів використання
2.5 Опис процесу проходження комп’ютерної 3-D гри жанру «Slasher» на
рушії Unity
У кваліфікаційній роботі бакалавра, окрім того, що розглянуто предметну
область і вибрані програмно-технічні засоби, увагу приділено реалізації проходження
комп’ютерної 3-D гри жанру «Slasher» на рушії Unity. Для належного представлення
функціоналу гри необхідно визначити наступні процеси:
– процес завантаження;
– процес управління персонажем;
– процес проходження ігрової мапи;
– процес бою;
– процес пошуку гравця;
33
– процес збереження прогрессу;
– процес нового початку;
– закінчення гри.
Процес проходження гри гравцем (рис. 2.5) є головним процесом гри та самим
геймплеєм. Для того щоб забезпечити проходження гри треба дотримуватись
сценарію.
Рисунок 2.5 – Діаграма процесу проходження гри
Самим першим в проходження гри є процес завантаження гравця на ігрове поле
та надання йому (гравцю) можливість керувати головним персонажем, далі йде
безпосередньо проходження ігрової мапи. Під час проходження ігрової мапи
головному персонажеві будуть зустрічатись вороги в яких буде постійно увімкнений
процес пошуку гравця для того щоб розпочати з ним битву. Результат бою може бути
різним: гравець може перемогти над ворогами та пройти далі в проходженні ігрової
мапи, гравець може проігнорувати ворогів (таке можливо лише в деяких випадках
коли перемога над ворогами не обов’язкова), при закінчення очків життя головний
персонаж помирає і в такому випадку починається процес нової гри який завантажує
останнє збереження яке буле створено. Коли процес проходження ігрової мапи
добігає кінця то запускається процес закінчення гри.
34
Не менш важливим є поінформування гравця про стан головного персонажа і
сюжету, можливість зберегтись чи вийти до головного меню. Цю функцію виконує
інтерфейс користувача який має такі елементи:
– головне меню;
– ігровий інтерейс;
– меню паузи;
– текстове поле;
– процес збереження;
– процес завантаження збереження;
– процес продовження або початку гри;
– процес виходу до головного меню;
– процес отримання стану очків життя головного персонажа;
– сюжет.
Структура взаємодії цих елементів зображено на рис. 2.6.
Рисунок 2.6 – Діаграма взаємодії елементів інтерфейсу та процесів
35
Самий початок гри починається з головного меню через яке можна почати
проходження гри або його продовжити в випадку якщо ви вже грали і зберігались.
Безпосередньо після початку або продовження гри гравець опиняється на ігровій мапі
де спочатку його інформує текстове поле через ігровий інтерфейс описуючи
внутрішньо-ігровий сюжет. На ігровий інтерфейс виводиться стан очків життя
головного персонажа у вигляді горизонтальної шкали. Гравець може викликати меню
паузи через яке він може зберегтись і вийти до головного меню.
2.6 Проєктування інтерфейсу
У ході виконання кваліфікаційної роботи бакалавра було поставлено завдання
розробити інтерфейс, що буде досить зручним та легким для розуміння користувачем.
Проєктування інтерфейсу в комп’ютерній 3-D грі жанру «Slasher» на рушії
Unity включає в себе розробку елементів, які забезпечують зручну та інтуїтивно
зрозумілу взаємодію гравця з грою. Розглянемо детальніше проєктування таких
елементів, як головне меню, меню паузи та шкали життя головного персонажа.
1. Головне меню (рис. 2.7):
− Початок або продовження гри: Ця опція дозволяє гравцю розпочати нову гру
або продовжити попередній ігровий сеанс.
− Вихід: Пункт меню, який дає можливість гравцеві вийти з гри. При виборі цієї
опції може з’являтися підтверджувальне вікно для уникнення випадкового виходу з
гри.
36
Рисунок 2.7 – Готовий макет головного меню
2. Меню паузи (рис. 2.8):
− Збереження ігрового прогресу: Опція, яка дозволяє гравцеві зберегти поточний
стан гри для подальшого продовження з того ж місця.
− Повернення до головного меню: Гравець може повернутися до головного меню
гри для вибору інших опцій або завершення гри.
Рисунок 2.8 – Не кінцевий макет пеню паузи
3. Ігровий інтерфейс (рис. 2.9):
− Шкала очків життя. Це важливий елемент інтерфейсу, який відображає
кількість життя або здоров’я головного персонажа. Шкала може бути представлена у
37
вигляді горизонтальної або вертикальної смуги з показниками життя. При отриманні
ушкоджень або взаємодії з ворогами, значення на шкалі зменшується, що візуалізує
втрату здоров’я героя.
− Текстове поле. На цьому елементі виконується вивід тексту який інформує
гравця про сюжет та дає підказки по управлінню головним героєм.
Рисунок 2.9 – Макет ігрового інтерфейсу
2.7 Проєктування ігрової мапи
Проєктування ігрової мапи є одним з ключових етапів розробки комп'ютерних
ігор, особливо в жанрі "Slasher". Це творчий і складний процес, який вимагає
ретельного планування, уваги до деталей та тестування для досягнення найкращих
результатів.
Для полегшення розробки, можна розробити невелику схему як буде виглядати
ігрова мапа (рис. 2.10).
Деякі кроки проєктування ігрової мапи:
− Визначення концепції: Перш ніж розпочати роботу над мапою, важливо
визначити концепцію гри і атмосферу, яку ви хочете передати. Це може бути
постапокаліптичний світ, середньовічне королівство або наукова фантастика;
38
− Створення контуру: На початковому етапі можна намалювати або створити
контур мапи, вказуючи на основні локації, дороги та ключові точки інтересу;
− Розміщення об'єктів: Після цього можна розмістити об'єкти на мапі, такі як
будівлі, природні елементи, вороги, предмети і т.д. Важливо збалансувати
розміщення об'єктів для створення цікавого геймплею;
− Створення взаємодії зі світом: Мапа повинна бути не просто набором об'єктів,
але і світом, з яким гравець може взаємодіяти. Це може включати в себе можливість
руйнування будівель, взаємодію з предметами, приховані ходи та інші елементи;
− Тестування та ітерації: Після створення першої версії мапи важливо провести
тестування геймплею, щоб визначити, чи відповідає мапа вимогам гри. Потім можна
вносити зміни та вдосконалення на основі отриманих результатів;
− Оптимізація та доведення до кінця: Після того як мапа пройшла тестування та
отримала позитивний відгук, вона може бути оптимізована для покращення
продуктивності гри та доведена до кінця шляхом додавання деталей, текстур та
ефектів.
Рисунок 2.10 – Схема планування першої ігрової зони
39
Висновки до розділу 2
У цьому розділі ми оглянули ключові аспекти розробки комп'ютерної 3-D гри
жанру "Slasher" на рушії Unity. Почали ми з опису програмного середовища для
розробки гри, вказавши на основні інструменти та можливості, які воно надає. Далі
розглянули принципи розробки, зосередившись на важливості врахування
особливостей жанру та використання Unity для створення 3-D ігор.
Також було оглянуто архітектуру комп'ютерної 3D гри, де зазначили важливі
компоненти та взаємозв'язки між ними. Наступним кроком було розроблення
діаграми способів використання, що дозволило краще зрозуміти, як користувачі
будуть взаємодіяти з грою.
Детально розглянуто процес проходження гри, наголосивши на ключових
моментах та етапах. Проєктування інтерфейсу та ігрової мапи виявилися важливими
аспектами розробки, оскільки вони безпосередньо впливають на враження від гри та
зручність її використання. Таким чином, розглянуті аспекти вказують на необхідність
комплексного та уважного підходу до розробки комп'ютерних ігор жанру "Slasher" на
платформі Unity.
40
3 ПРОГРАМНА РЕАЛІЗАЦІЯ ТА ТЕСТУВАННЯ КОМП’ЮТЕРНОЇ 3-D ГРИ
ЖАНРУ «SLASHER» НА РУШІЇ UNITY
3.1 Постановка завдання
Завданням кваліфікаційної роботи бакалавра є створення комп’ютерної 3-D гри
жанру «Slasher» на рушії Unity.
Гру буде створено з використанням мови програмування C# для написання
скриптів та програмного середовища Visual Studio, а розробки деяких 3-D моделей
Blender та різні безкоштовні асети, для розробки ігрової мапи, інтерфейсу та
безпосередньо розробки самої гри буде використано програмне середовище Unity,
для анімацій буде використано онлайн сервіс Mixamo.
3.2 Розробка головного меню
Самий початок гри починається з головного меню в якому гравець може почати
або продовжити проходження гри, перейти до налаштувань (якщо такі будуть в
подальшому розвитку гри) та вийти з гри. Головне меню створюється на новій ігровій
сцені, як інші ігрові мапи чи інтерфейс. Відповідно до цього були створені
функціонуючи кнопки які знаходяться в відповідних елементах, також в головному
меню повинно знаходитись назва гри «The Ramble» яке записується в відповідний
компонент «Text». На тлі головного меню розташована анімація яка краще вражає
гравця ніж статична картина.
Структуру всіх об’єктів на цій сцені та кінцевий вигляд головного меню
зображено на рис. 3.1.
41
Рисунок 3.11 – Головне меню
Окрему увагу варто приділити анімації яка знаходиться на тлі головного меню,
вона створювалась з GIF-зображення яке було перероблено в PNG картинку в які
знаходились всі кадри. Це було вимушено зробити через те що стандартний пакет
Unity без доповнень не підтримує GIF-зображення, тому було зроблено як звичайну
2-D анімацію. Для розміщення цієї анімації треба було в інспекторі ігрового об’єкту
який відповідає за тло головного меню створити компонент «Image» і посиланні на
перший кадр анімації (рис. 3.2).
Рисунок 3.12 – Компонент "Image" в інспекторі об'єкту тла головного меню
Для розробки анімації треба спочатку картинку в якій знаходяться кадри,
розрізати відповідно на ці кадри. Unity дозволяє це зробити за допомогою Sprite Editor
який в свою чергу може автоматично нарізати картинку на потрібні кадри. В самому
Sprite Editor є функція Slice для нарізання картинки, в ній треба обрати опцію «Grid
By Cell Size» яка дозволяє вказати розміри спрайтів анімації, в даної анімації розміри
спратів 1500x681 (рис. 3.3).
42
Рисунок 3.13 – Нарізання картинки на спрайти
Після нарізання спрайтів треба створити анімацію, для цього треба обрати
об’єкт тла головного меню та викликати аніматор в якому треба створити нову
анімацію та розмістити всі нарізані спрайти відповідно як було це на GIF-картинці та
зберегти анімацію (рис. 3.4). При запуску головного меню, анімація буде сама
постійно програватись.
Рисунок 3.14 – Аніматор
Код головного меню повинен забезпечити функціональність кнопок, а саме:
початок або продовження проходження гри, вивід опцій гри та вихід з гри.
43
3.3 Розробка меню паузи
Під час проходження гри, гравець може викликати меню паузи натиснувши
клавішу Esc. Коли викликається меню паузи, курсор розблоковується і стає видимим
час в грі зупиняється, цьому відповідає код який записаний у скрипті меню паузи на
рис. 3.5. Також як і головне меню, в ньому розташовані кнопки які відповідають за
продовження гри (тобто закривання меню паузи та продовження часу і блокування
курсору), кнопка збереження ігрового прогресу та вихід до головного меню[9].
Рисунок 3.15 – Приклад коду меню паузи
44
Рисунок 3.16 – Меню паузи
Після натискання кнопки «Save» данні про головного персонажа і ігровий
прогрес зберігаються у файл який зберігається на комп’ютері гравця. При натисканні
кнопки «Main menu» гравець повертається до головного меню.
3.4 Розробка ігрової мапи, локацій
Перед тип як розглядати розробку ігрової мапи, слід зазначити що перелік та
номери всіх сцен можна подивитись в налаштуваннях проєкту яке зображено на рис.
3.7. Це допоможе при розробці скриптів для переходу між локаціями.
Для кращої оптимізації та певних сюжетних умовностей можна розділити
ігрову мапу на декілька сцен які є незалежні одні від одного.
Перелік сцен які створенні в грі: Головне меню, Перший рівень на якому
відбувається перше занурення в ігровий процес гравця, Другий рівень на якому
гравець закінчує гру. Тестова сцена призначена для розробника який тестує гру.
Для розробки першого та другого рівня були використанні безкоштовні 3-D
моделі з інтернету – це значно пришвидшує розробку гри, багато розробників
користуються цим.
45
Рисунок 3.17 – Налаштування проєкту та перелік сцен
Перший рівень розроблений за схемою яка була розглянута пункті 2.8.
Обов’язково для того щоб гравець більше був занурений в гру треба відповідно
робити мапу, при розташуванні ігрових об’єктів треба це враховувати, щоб вони
виглядали реалістично як зображено на рис. 3.8.
Рисунок 3.18 – Розташування ігрових об'єктів на першому рівні
46
Також ігрові об’єкти які будуть розташовані на мапі треба додати в інспекторі
компонент Mesh Collider – цей компонент робить об’єкт відчутним для персонажів
щоб вони не могли проходити скрізь об’єкт в випадку якщо на персонажах теж є
якийсь колайдер.
Рисунок 3.19 – Вигляд першого рівня
Оскільки другий рівень – фінальний в сюжеті гри, то його не є обов’язково
робити великим (рис. 3.10).
Рисунок 3.10 – Вигляд другого рівня
47
3.5 Розробка моделей та анімацій
Більшість моделей були взяті з офіційного сайту Unity Asset Store, це занчно
прискорило розробку гри. З анімаціями трішки інша історія – анімацію можнв
створити самому, або як із моделями, використати онлайн сервіс Mixamo, на якому
можна завантажити модель та обрати анімацію яка потрібна.
Рисунок 3.20 – Модель головного персонажа
Рисунок 3.21 – Модель ближнього ворога
48
Рисунок 3.22 – Модель далекого ворога
Завантажуючи обрану анімацію з онлайн сервісу, треба не просто встановити її
на відповідний об’єкт, а треба прив’язати її в аніматорі (рис. 3.14) [11].
Рисунок 3.23 – Аніматор головного персонажа
Відповідно до створених треба створити тригери для того щоб взаємодіяти з
ними в коді персонажа (рис. 3.15).
Відповідно з методами які викликаються натисканням кнопок гравця, ці
анімації повинні програватись (рис. 3.15).
49
Рисунок 3.24 – Приклад коду управління персонажем
Моделі змінюють свою анімацію відповідно яка викликається у коді.
3.6 Розробка бою
Головним елементом гри є бій, він створюється шляхом виконання анімацій і
виконанням коду який в свою чергу змінює параметри персонажів і таким чином
визначається чи персонаж переможений чи ні (рис. 3.16). Коли головний персонаж
потрапляє у поле зору ворогів, вони починають його переслідувати та періодично
наносити йому шкоду. Також гравець при натисканні лівої клавіші миші, головний
персонаж виконує атаку яка наносить шкоду ворогам якщо вони в зоні дії цієї атаки
код якої продемонстровано на рис. 3.15. Цьому відповідають методи PlayerInput
MelleAttack.
50
Рисунок 3.25 – Приклад коду в якому надається шкоду гравцеві
Метод PlayerInput зчитує натискання клавіш гравця і відповідно цим
натисканням викликаються методи анімації та надання шкоди MelleAttack.
В методі MelleAttack обраховується надання шкоди ворогам та чи знаходяться
вони в зоні ураження (рис. 3.17).
Рисунок 3.26 – Приклад коду методу MelleAttack
51
3.7 Розробка штучного інтелекту ворогів
Головний компонент який допомагає у створенні штучного інтелекту є
NavMesh. Він створює мапу для штучного інтелекту враховуючи всі перепони на
ігровій мапі для того щоб ШІ міг пересуватись по ігровій мапі самотужки [10].
Як було зазначено вище, коли гравець заходить в зону видимості ворога, то
ворог починає рух в його сторону оминаючи перепони до тих пір коли не зможе
достати до нього атаками. Якщо головний персонаж покидає поле зору ворога, то
ворог повертається на своє місце (рис. 3.18).
Рисунок 3.27 – Приклад коду штучного інтелекту
В методі Update який виконується кожен кадр викликаються порівняння та
методи які забезпечують пошук гравця та подальшого його переслідування,
надавання шкоди повернення назад і забезпечення механіки «добивання». Коли у
ворога закінчуються очки життів, то він на час зупиняється, щоб його гравець зміг
52
добити, йому треба підійти до знерухомого ворога і натиснути відповідну для цього
кнопку. Ця механіка забезпечує різноманітність геймплею та відповідає сюжету.
3.8 Розробка збереження ігрового прогресу
Гравець може в будь який момент зберегти свій ігровий прогрес викликавши
меню паузи і натиснувши відповідну кнопку. Після натискання кнопки в файлах гри
створюється файл збереження в якому міститься інформація про стан головного
персонажа: його координати та кількість очків життя. Координати відповідають за
знаходження головного персонажа на ігровій мапі, а очки життів – це результат
попередніх боїв з ворогами якщо такі зустрічались (рис. 3.19).
Рисунок 3.28 – Приклад коду збереження ігрової інформації
Збережений файл повинен шифруватись, оскільки деякі користувачі можуть
скористатись незашифрованим файлом і змінювати параметри гравця – це може
53
призвести до багів або нечесної гри яка не була передбачена розробником. За
шифрування файлу відповідає клас BinaryFormatter який шифрує інформацію. В свою
чергу для запису інформації в відповідний файл збереження відповідає клас
FileStream, з допомогою якого можна відкривати потів для роботи з файлами. Для
завантаження збереженого процесу достатньо в головному меню натиснути кнопку
грати і буде автоматично завантажено файл збереження.
3.9 Тестування
Тестування – це процес перевірки функціональності, продуктивності та якості
програмного забезпечення перед випуском на ринок або публічним випуском.
Першим етапом тестування є перевірка функціональності головного меню.
Вході першого тестування не було виявлено помилок чи некоректного працювання.
Другий крок є перевірка переходу від головного меню до першого рівня. Тут
також все добре працює.
Далі йде перевірка управлінням персонажем. З’явилась некоректна робота
управління, а саме у методі який викликає стрибок головного персонажа, скоріше за
все неправильно записана формула, оскільки при виконання стрибку – персонаж
починає не передбачувано прискорюватись.
Наступним тестуванням є перевірка бою. Вороги переслідують головного
персонажа та повертаються назад коли той виходить за їх поле зору, вони отримують
шкоду та наносять її головному персонажеві. Також працює механіка «добивання».
Далі йде проходження гри, після виконання завдання на першому рівні, гравець
завантажується на другий. Після завантаження на другий рівень у головного
персонажа не зберігся стан його очків життя який був на першому рівні. Скоріше за
все треба зробити збереження станів очків життя. Після закриття головного завдання,
гра закінчується і гравець повертається до головного меню.
Тестування збереження. Після натискання відповідної кнопки в меню паузи –
файл зі збереженням створюється, але якщо вийти до головного меню, та спробувати
54
продовжити грати, завантажиться самий початок гри. Скоріше за все збереження не
проходить по сценам. Це можна виправити збереженням станів сцен.
Висновки до розділу 3
В цьому розділі представлена програмна реалізація. Було визначено, що гра
створена з використанням мови програмування C# в програмному середовищі Visual
Studio та Unity з використанням редактору Blender для створення деяких 3-D
моделей.
Описано створення інтерфейсу головного меню, меню паузи, створення
розробка ігрової мапи, створення моделей та анімацій, розробка бойової механіки,
штучного інтелекту та збереження.
Виконано тестування гри, було виявлено деякі баги та некоректну роботу,
ведеться робота по ліквідації їх.
55
ВИСНОВКИ
Мета кваліфікаційної роботи бакалавра досягнута: був розроблений
комп’ютерний 3-D гра жанру "Slasher" на рушії Unity. Для досягнення цієї мети були
проведені наступні кроки:
− вивчено предметну область;
− виконано аналіз існуючих ігор жанру "Slasher", а саме: «Devil May Cry 5»,
«Metal Gear Rising: Revengeance», «TheDawn»;
− розроблено архітектуру гри та вибрано необхідні технології;
− реалізовано збереження гри;
− реалізовано основний функціонал гри та проведено тестування.
Гра була розроблена на рушії Unity з використанням мови програмування C# в
програмному середовищі Visual Studio. Реалізація включала розробку ігрових об'єктів
моделей за допомогою Blender та безкоштовних асетів, управління персонажем,
бойову систему, анімації та інші важливі елементи.
Обрані технології задовольнили всі функціональні та нефункціональні вимоги
до гри. Були виявлені недоліки аналогів та нейтралізація їх. Гра має зручний та
інтуїтивно зрозумілий інтерфейс, що забезпечує приємний геймплей для гравця.
56
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Hack and slash URL: https://uk.wikipedia.org/wiki/Hack_and_slash (дата звертання
03.03.2024);
2. Devil May Cry 5 URL: https://uk.wikipedia.org/wiki/Devil_May_Cry_5 (дата
звертання 03.03.2024);
3. Metal Gear Rising: Revengeance URL:
https://uk.wikipedia.org/wiki/Metal_Gear_Rising:_Revengeance (дата звертання
03.03.2024);
4. Microsoft Visual Studio URL:
https://uk.wikipedia.org/wiki/Microsoft_Visual_Studio (дата звертання
03.03.2024);
5. Unity URL: https://uk.wikipedia.org/wiki/Unity (дата звертання 03.03.2024);
6. C Sharp URL: https://uk.wikipedia.org/wiki/C_Sharp (дата звертання 03.03.2024);
7. Blender URL: https://uk.wikipedia.org/wiki/Blender (дата звертання 03.03.2024);
8. MonoBehaviour URL:
https://docs.unity3d.com/ScriptReference/MonoBehaviour.html (дата звертання
11.04.2024);
9. Scripting URL: https://docs.unity3d.com/Manual/ScriptingSection.html (дата
звертання 11.04.2024);
10. NavMesh URL: https://docs.unity3d.com/ScriptReference/AI.NavMesh.html (дата
звертання 15.04.2024);
11. AnimatorURL: https://docs.unity3d.com/ScriptReference/Animator.html (дата
звертання 15.04.2024).
57
ДОДАТОК А
Затверджую
Зав. кафедри КНСА,
______________ Юрій ТРИУС
«____»____________2024 р.
КОМП’ЮТЕРНА 3-D ГРА ЖАНРУ «SLASHER» НА РУШІЇ UNITY
СПЕЦИФІКАЦІЯ
482.ЧДТУ. 42284-01
Листів 2
Розробник ____________________ Єфіменко О.В.
Керівник ____________________ Підгорний М.В.
Черкаси – 2024
58
482.ЧДТУ. 42284-01
Позначення Найменування Примітка
Документація
482.ЧДТУ. 42284-01 12 01 Текст програми
482.ЧДТУ. 42284-01 34 01 Інструкція користувача
59
ДОДАТОК Б
КОМП’ЮТЕРНА 3-D ГРА ЖАНРУ «SLASHER» НА РУШІЇ UNITY
ТЕКСТ ПРОГРАМИ
482.ЧДТУ. 42284-01 12 01
Листів 7
Розробник _____________ Єфіменко О.В.
Черкаси – 2024
60
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor.XR;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class PlayerMuvement : MonoBehaviour
{
public Image HPBar;
public Animator animator;
public float startDelayAttack;
public float delayAttack;
public float melleAttackRange;
public LayerMask enemyLayer;
public int health;
[Header("Muvement")]
public float moveSpead;
public float groundDrag;
public float jumpForce;
public float dashForce;
public float jumpCooledown;
public float startDashCooledown;
public float dashCooledown;
public float airMultiplier;
public bool readyToJump;
[Header("Keybinds")]
public KeyCode jumpKey = KeyCode.Space;
[Header("Graund Check")]
public float playerHeigth;
public LayerMask whatIsGround;
public bool grounded;
public Transform oritation;
float horizontalInput;
float verticallInput;
Vector3 moveDirection;
Rigidbody rb;
public bool run = false;
public bool jump = false;
private void Start()
{
rb = GetComponent<Rigidbody>();
rb.freezeRotation = true;
}
private void Update()
{
//Перевірка на землю
grounded = Physics.Raycast(transform.position, Vector3.down, playerHeigth * 0.5f + 0.2f,
whatIsGround);
61
PlayerInput();
SpeedControl();
if (grounded)
rb.drag = groundDrag;
else
rb.drag = 0;
HPBar.fillAmount = health / 10;
}
private void FixedUpdate()
{
MovePlayer();
}
private void LateUpdate()
{
animator.SetBool("run", run);
animator.SetBool("jump", jump);
}
public void TakeDamage(int dmg)
{
health -= dmg;
if (health < 0)
{
Destroy(gameObject);
SceneManager.LoadScene("Main Menu");
}
}
private void PlayerInput()
{
horizontalInput = Input.GetAxisRaw("Horizontal");
verticallInput = Input.GetAxisRaw("Vertical");
//Стрибок
if(Input.GetKeyDown(jumpKey) && readyToJump && grounded)
{
readyToJump = false;
jump = true;
Jump();
Invoke(nameof(ResetJump), jumpCooledown);
}
if (dashCooledown <= 0)
{
if (Input.GetKeyDown(KeyCode.LeftShift))
{
Dash();
}
}
else dashCooledown -= Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Mouse0))
{
MelleAttack();
animator.SetTrigger("attack");
}
62
}
private void MovePlayer()
{
//обчислення пересування гравця
moveDirection = oritation.forward * verticallInput + oritation.right * horizontalInput;
if (moveDirection != Vector3.zero)
{
run = true;
}
else
{
run = false;
}
//на землі
if (grounded)
rb.AddForce(moveDirection.normalized * moveSpead * 10f, ForceMode.Force);
else if(!grounded)
rb.AddForce(moveDirection.normalized * moveSpead * 10f * airMultiplier,
ForceMode.Force);
}
private void SpeedControl()
{
Vector3 flatVel = new Vector3(rb.velocity.x, 0f, rb.velocity.z);
//обмеження швидкості
if (flatVel.magnitude > moveSpead)
{
Vector3 limitedVel = flatVel.normalized * moveSpead;
rb.velocity = new Vector3(limitedVel.x, rb.velocity.y, limitedVel.z);
}
}
private void Jump()
{
rb.velocity = new Vector3(rb.velocity.x, 0f, rb.velocity.z);
rb.AddForce(transform.up * jumpForce, ForceMode.Impulse);
}
private IEnumerator SmoothDash()
{
float elapsedTime = 0f;
float dashTime = .2f;
while (elapsedTime < dashTime)
{
// Рассчитываем текущую силу на основе интерполяции между начальной и конечной силой
float normalizedTime = elapsedTime / dashTime;
float currentDashForce = Mathf.Lerp(0f, dashForce, normalizedTime);
// Применяем силу к Rigidbody
rb.AddForce(oritation.transform.forward * currentDashForce, ForceMode.Impulse);
// Увеличиваем прошедшее время
elapsedTime += Time.deltaTime;
// Ждем следующего кадра
yield return null;
}
}
63
private void Dash()
{
StartCoroutine(SmoothDash());
dashCooledown = startDashCooledown;
}
private void ResetJump()
{
readyToJump = true;
jump = false;
}
private void MelleAttack()
{
delayAttack -= Time.deltaTime;
if (delayAttack > 0)
return;
delayAttack = startDelayAttack;
Collider[] hitEnemy = Physics.OverlapSphere(transform.position, melleAttackRange,
enemyLayer);
foreach (Collider enemy in hitEnemy)
{
enemy.GetComponent<Enemy>().TakeDamage(10);
}
}
public void SavePlayer()
{
SaveSystem.SavePlayer(this);
}
public void LoadPlayer()
{
PlayerData data = SaveSystem.LoadPlayer();
health = data.health;
Vector3 position;
position.x = data.position[0];
position.y = data.position[1];
position.z = data.position[2];
transform.position = position;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Enemy : MonoBehaviour
{
private NavMeshAgent agent;
private PlayerMuvement player;
public enum EnemyType { Melle, Range }
public EnemyType enemyType;
[SerializeField] private GameObject bulletSpawnPoint;
[SerializeField] private GameObject bullet;
public int health;
64
public float melleAttackRange;
public float startDelayAttack;
public float delayAttack;
public LayerMask enemyLayer;
private bool isDeadly = false;
private void Start()
{
agent = GetComponent<NavMeshAgent>();
player = FindAnyObjectByType<PlayerMuvement>();
}
private void Update()
{
if (health > 0)
{
agent.SetDestination(player.transform.position);
if (enemyType == EnemyType.Range)
{
Vector3 dir = player.transform.position - transform.position;
transform.rotation = Quaternion.LookRotation(dir);
}
switch (enemyType)
{
case EnemyType.Melle:
MelleAttack();
break;
case EnemyType.Range:
Shooting();
break;
}
}
else agent.SetDestination(transform.position);
if (health <= 0)
isDeadly = true;
if (isDeadly)
Retrieving();
}
private void MelleAttack()
{
delayAttack -= Time.deltaTime;
if (delayAttack > 0)
return;
delayAttack = startDelayAttack;
Collider[] hitEnemy = Physics.OverlapSphere(transform.position, melleAttackRange,
enemyLayer);
foreach (Collider enemy in hitEnemy)
{
enemy.GetComponent<PlayerMuvement>().TakeDamage(10);
}
}
65
private void Shooting()
{
delayAttack -= Time.deltaTime;
if (delayAttack > 0)
return;
delayAttack = startDelayAttack;
Vector3 dir = player.transform.position - transform.position;
GameObject bulletObject = Instantiate(bullet, bulletSpawnPoint.transform.position,
bulletSpawnPoint.transform.rotation);
bulletObject.transform.rotation *= Quaternion.Euler(0f, 90f, 0f);
Rigidbody bulletRb = bulletObject.GetComponent<Rigidbody>();
bulletRb.velocity = dir.normalized * 40;
Destroy(bulletObject, 1f);
}
public void TakeDamage(int damage)
{
if (health > 0)
health -= damage;
}
private void Retrieving()
{
if (Input.GetKeyDown(KeyCode.F))
Destroy(gameObject);
}
private void OnDrawGizmos()
{
Gizmos.DrawWireSphere(transform.position, melleAttackRange);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Menu : MonoBehaviour
{
public void PlayGame()
{
if (Time.timeScale == 0) //зарефакторить
{
Time.timeScale = 1;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
SceneManager.LoadSceneAsync(3);
}
public void QuitGame()
{
Application.Quit();
}
}
66
ДОДАТОК В
КОМП’ЮТЕРНА 3-D ГРА ЖАНРУ «SLASHER» НА РУШІЇ UNITY
ІНСТРУКЦІЯ КОРИСТУВАЧА
482. ЧДТУ. 42284-01 34 01
Листів 2
Розробник _____________ Єфіменко О.В.
Черкаси – 2024
67
Інструкція користувачеві гри «The Ramble»:
1. Запуск гри:
− Запустіть гру, подвійно натиснувши на її ярлик або вибравши її зі
списку програм на вашому пристрої.
2. Головне меню:
− Після запуску гри ви потрапите до головного меню.
− У головному меню ви знайдете наступні опції:
a. "Play": натисніть на цю опцію, щоб розпочати нову гру, або
родовжити.
b. "Option" налаштування гри.
c. "Quit": вийти з гри.
3. Управління гравцем:
− Для переміщення гравця використовуйте стрілки або клавіші WASD
на клавіатурі.
− Для атаки використовуйте відповідні клавіші або кнопки миші.
4. Бійова система:
− Виконуйте різноманітні комбінації атак, щоб перемогти ворогів.
− Уникайте атак ворогів, використовуючи стрибки.
− Добивайте ворогів коли в них закінчується очки життів.
5. Збереження прогресу:
− Прогрес треба зберігати натиснувши відповідну кнопку в меню паузи.
6. Меню паузи:
− Натисніть на клавішу "Esc" на клавіатурі щоб відкрити меню паузи.
− У меню паузи ви можете вибрати опції, такі як "Продовжити гру",
"Зберегти прогрес" або "Вихід до головного меню".
7. Завершення гри:
− Гра закінчується, коли ви успішно досягаєте кінцевої точки або
поразка, якщо ваші життя досягають нуля.