Розробка гри жанру Action-platformer з використанням Unity та штучного інтелекту презентация

Содержание

Слайд 2


Актуальність роботи  полягає в тому, що поєднання елементів гри жанру "Action-platformer" та штучного

інтелекту відкриває широкі можливості для розвитку інтерактивних віртуальних середовищ. Останні роки спостерігається зростання інтересу до використання штучного інтелекту в галузі розробки відеоігор, що дозволяє створювати більш складні, глибокі та захопливі ігрові досвіди.
Метою цієї роботи розробка 2D гри жанру екшн-платформер з використанням штучного інтелекту. 

Слайд 3

Платформери
Платформер — жанр відеоігор, ігровий процес в якому складається зі стрибків персонажа по різноманітним

платформам  та через перешкоди, збирання предметів, зазвичай необхідних для проходження рівня.
Особливості Геймплею:
Складність та Рівні: Грати в платформери може бути викликом через різноманітні перешкоди, які гравець повинен подолати. Різні рівні надають гравцеві нові виклики та завдання.
Стрибки та Подолання Висот: Основна механіка — стрибки, які можуть варіюватися від простих до складних, включаючи стрибки через ворота, виноси платформ, тощо.
Збір Об'єктів та Бонусів: Гравці часто збирають різні предмети чи бонуси, що додають балів або покращують навички героя.

Слайд 4

Ігровий рушій Unity
Unity - це платформа для створення і розробки ігор та інших інтерактивних

віртуальних додатків. Вона відома своєю гнучкістю та доступністю, що робить її однією з найпопулярніших серед розробників у галузі ігрової індустрії та віртуальної реальності.

Слайд 5

Unity Machine Learning Agents

ML-Agents (Machine Learning Agents) - це відкритий інструментарій, розроблений компанією

Unity Technologies, призначений для розвитку інтелектуальних агентів у віртуальному середовищі за допомогою методів машинного навчання (ML). Основна ідея ML-Agents полягає в тому, щоб навчити віртуальних агентів приймати відповідальні рішення та взаємодіяти зі оточуючим віртуальним середовищем.

Слайд 6

Навчання з підкріпленням (Reinforcement Learning)

Навчання з підкріпленням (Reinforcement Learning) в контексті ML-Agents включає в

себе використання агентів, які сприймають навколишнє середовище, вчаться взаємодіяти з ним та отримують відповідні винагороди або покарання за свої дії з метою максимізації кумулятивної винагороди в часі.

Кумулятивна винагорода служить метрикою успіху агента у вирішенні завдання. Під час тренування агенти коригують свої стратегії з метою збільшення кумулятивної винагороди, що веде до покращення їхніх взаємодій з середовищем та досягнення бажаних результатів.

Слайд 7

Основні етапи роботи з ML-Agents

Встановлення Unity ML-Agents
Створення середовища
Створення агентів
Налаштування моделі
Визначення винагород та завдань
Тренування моделі
Оцінка результатів
Впровадження

Слайд 8

Приклад одного із етапів тренування агентів в середовищі

Слайд 9

Приклад одного із етапів тренування агентів в середовищі

Слайд 10

Результати одного із тренувань

Слайд 11

Гра «Action-platformer»

Гра розроблена у піксельному стилі у 2D. Гравець бере на себе управління персонажем,

жінкою-воїном. Завданням є пройти складний рівень, долаючи ворогів і використовуючи стратегію, щоб уникнути хитрих пасток, якими сповнений кожен куток ігрового світу. Гравець має володіти не тільки майстерністю у бою, але й витонченим чуттям взаємодії з навколишнім середовищем, оскільки навколо неї чекає безліч викликів та небезпек. Перед гравцем розкривається захоплива піксельна графіка, яка створює атмосферу пригодницьких веселощів, та чудовий саундтрек.

Слайд 12

 Головне меню та меню опцій

Слайд 13

Початок та кінець рівня

Слайд 14

Вороги та різні пастки

Слайд 15

Вікно паузи та повідомлення про смерть

Слайд 16

Розробка  управління  персонажем

Отримання введених значень:
HorizontalMove = Input.GetAxisRaw("Horizontal") * speed;: Отримання значень горизонтального вводу

від користувача і масштабування його за швидкістю руху персонажа.
Перевірка стану на землі:
if (isGrounded) { jumpsRemaining = maxJumps; isJumping = false; }: Перевірка, чи персонаж перебуває на землі, і скидання кількості залишених стрибків, якщо це так. Також встановлення стану стрибка в false.
Стрибок:
if (jumpsRemaining > 0 && Input.GetKeyDown(KeyCode.Space) && !isJumping) { ... }: Перевірка, чи є залишені стрибки, чи була натиснута клавіша простору і чи персонаж не в стані стрибка. Якщо умова виконується, то відбувається стрибок.
Анімація:
animator.SetFloat("HorizontalMove", Mathf.Abs(HorizontalMove));: Передача значення горизонтального руху в аніматор для управління анімацією персонажа.
animator.SetBool("Jumping", !isGrounded);: Встановлення параметра аніматора "Jumping" в true, якщо персонаж не на землі, тобто в стані стрибка.

Рух:
Vector2 targetVelocity = new Vector2(HorizontalMove * 10f, rb.velocity.y);: Визначення цільової швидкості персонажа вздовж вісі X.
rb.velocity = targetVelocity;: Встановлення швидкості руху персонажа.
Переворот:
if (HorizontalMove < 0 && FacingRight) { Flip(); } else if (HorizontalMove > 0 && !FacingRight) { Flip(); }: Перевірка напрямку руху і обертання персонажа, якщо напрямок змінився.
Метод Flip():
private void Flip() { ... }: Змінює напрямок обличчя персонажа, використовуючи зміну знаку масштабу по осі X.
Метод CheckGround():
private void CheckGround() { ... }: Викликається для перевірки, чи персонаж перебуває на землі шляхом використання Physics2D.OverlapCircleAll для області під ногами персонажа.

Слайд 17

Скрипт здоров'я персонажа

Змінні:
maxHealth: Максимальне значення здоров'я гравця.
currentHealth: Поточний рівень здоров'я гравця.
knockbackForce: Сила відштовхування,

яка застосовується при зіштовхуванні з певними об'єктами.
healthBar: Зображення шкали здоров'я на екрані.
uiManager: Посилання на інший скрипт (UIManager), який управляє інтерфейсом користувача.
animator: Посилання на компонент Animator для керування анімацією гравця.
rb: Посилання на компонент Rigidbody2D гравця.
Метод Start():
Ініціалізує початкові значення здоров'я і отримує компонент Rigidbody2D.
Метод Update():
Перевіряє натискання клавіші "Y" (це тимчасове умовне навантаження для тестування) і наносить гравцеві шкоду при виконанні цієї умови.
Перевіряє, чи гравець мертвий, і, у разі смерті, викликає метод Die().

Метод UpdateHealthBar():
Оновлює шкалу здоров'я на основі поточного і максимального значень здоров'я гравця.
Метод TakeDamage(int damage):
Наносить гравцеві шкоду, оновлює шкалу здоров'я та викликає метод Die(), якщо гравець мертвий.
Метод OnTriggerEnter2D(Collider2D other):
Викликається при зіткненні гравця з іншим об'єктом.
Перевіряє, чи об'єкт має тег "TrapSpikes" і, у випадку позначеного об'єкта, наносить гравцеві шкоду та застосовує силу отталкивання.
Метод IsDead():
Повертає значення true, якщо поточне здоров'я менше або дорівнює нулю, інакше - false.
Метод Die():
Виводить повідомлення про смерть гравця в консоль.
Викликає метод ShowDeathPanel() з uiManager.
Вимикає об'єкт гравця.

Слайд 18

Атака головного персонажа

Змінні:
animator: Посилання на компонент Animator для управління анімацією атаки гравця.
attackPoint: Точка

атаки гравця, визначена у вигляді позначення в інтерфейсі Unity.
enemyLayers: Шари, які визначають, що вважати ворогами для атаки гравця.
attackRange: Радіус атаки гравця.
attackDamage: Кількість шкоди, яку гравець завдає при атакуванні ворога.
attackRate: Частота атаки в атаках за секунду.
nextAttackTime: Час наступної доступної атаки.
Метод Update():
Перевіряє, чи настала наступна доступна атака з урахуванням частоти атаки.
Якщо гравець натиснув клавішу "R" і відповідний інтервал часу пройшов, гравець викликає метод Attack().

Метод Attack():
Викликає анімацію атаки шляхом встановлення тригера "Attack" у компоненті Animator.
Використовує Physics2D.OverlapCircleAll для визначення всіх ворогів у заданому радіусі навколо точки атаки.
Застосовує шкоду всім виявленим ворогам, викликаючи метод TakeDamage(attackDamage) у їхніх компонентах Enemy.
Метод OnDrawGizmosSelected():
Візуалізує радіус атаки у вигляді дротяної сфери навколо точки атаки у сцені Unity.

Слайд 19

Анімації головного героя

Слайд 20

Анімації ворога

Слайд 21

ДЯКУЮ ЗА УВАГУ!

Имя файла: Розробка-гри-жанру-Action-platformer-з-використанням-Unity-та-штучного-інтелекту.pptx
Количество просмотров: 10
Количество скачиваний: 0