Разработка игры с применением движка Unity

1.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное
учреждение инклюзивного высшего образования
Российский Государственный Университет Социальных Технологий
(ФГБОУ ИВО «РГУСоцТех»)
Выпускная квалификационная работа
на тему:
РАЗРАБОТКА ИГРЫ С
ПРИМЕНЕНИЕМ ДВИЖКА UNITY
Направление подготовки: 09.03.03 Прикладная информатика
Выполнили работу:
Студенты группы ПИ-0420
Калинин Н.А.
Седова А.И.
Научный руководитель:
К.т.н., доцент кафедры ЦТиК
Теодорович Н.Н

2.

ЦЕЛЬ ИССЛЕДОВАНИЯ И ПОСТАНОВКА
ГЛАВНЫХ ЗАДАЧ
Цель выпускной квалификационной работы – разработать прототип компьютерной
игры в жанре 2D-платформер при помощи средств среды Unity.
Для достижения поставленной цели необходимо выполнить следующие задачи:
1) изучить особенности и состояние компьютерной индустрии России;
2) выбрать жанр, вид и платформу для компьютерной игры;
3) разработать сценарий, концепцию основных элементов;
4) выбрать и изучить средство реализации;
5) подготовить необходимые для игры анимации;
6) реализация прототипа игры.
2

3.

ОБЪЕКТ И ПРЕДМЕТ ИССЛЕДОВАНИЯ
Объект исследования при разработке игры с использованием Unity — это
процесс создания игры с помощью этого игрового движка, включая изучение
основ Unity, определение идеи и концепции игры, создание прототипа,
разработку дизайн-документа, создание игрового мира, добавление
персонажей и объектов, реализацию механики игры, добавление графики и
звука, тестирование и доработку игры.
Предметом исследования является технология разработки компьютерной
игры в жанре 2D-платформер для операционной системы Windows.
3

4.

АКТУАЛЬНОСТЬ
В современном мире видеоигры стали неотъемлемой частью жизни многих
людей, а масштабы игровой индустрии сопоставимы с киноиндустрией.
Разработка игр — это сложный и трудоемкий процесс, требующий знаний и
навыков в различных областях, таких как программирование, графика, звук и
геймдизайн.
Проблемой является то, что наибольшую часть индустрии заняли компании и
специалисты из европейских и азиатских стран. Представителей стран СНГ,
добившихся популярности и признания на общем рынке, в данной области
достаточно мало.
4

5.

UNITY
Unity (Юнити) —
это кроссплатформенная среда разработки компьютерных игр, разработанна
я американской компанией Unity Technologies. Unity позволяет создавать при
ложения, работающие на более чем 25 различных платформах, включая перс
ональные компьютеры, игровые консоли, мобильные устройства и интернетприложения.
Unity был выпущен в 2005 году и с тех пор постоянно развивается. Основные
преимущества Unity включают визуальную среду разработки, межплатформе
нную поддержку и модульную систему компонентов.
5

6.

СОЗДАНИЕ ГРАФИКИ
6

7.

СОЗДАНИЕ ГРАФИКИ
7

8.

ЛОКАЦИИ
8

9.

РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ
ПРОЕКТА
Первый скрипт PlayerController.
Он будет отвечать за передвижение по
локации.
using System.ComponentModel;
using UnityEngine;
using UnityEngine.SceneManagement;
public bool FacingRight = true;
public Rigidbody2D player;
public Transform groundCheck;
public float groundCheckRadius;
public Animator anim;
public bool grounded;
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
public float jumpSpeed = 8f;
public float direction = 0f;
9

10.

РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ
ПРОЕКТА
Выбрав в списке настроек Horizontal, мы можем
назначить кнопки передвижения персонажа по
горизонтальной оси. Положительное значение
(positive) отвечает за движение вправо, а
отрицательное (negative) - за движение влево. Unity
поддерживает два набора клавиш, поэтому будут
назначены две схемы управления движением героя стрелками на клавиатуре и клавишами WASD.
10

11.

РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ
ПРОЕКТА
grounded = false;
Создаем метод checkGround(),
}
который и будет
осуществлять проверку.
метод Jump
private void checkGround()
{
Collider2D[] results =
Physics2D.OverlapCircleAll
(new
Vector2(groundCheck.position.x,
groundCheck.position.y),
groundCheckRadius);
if (results.Length > 1)
grounded = true;
else
private void Jump()
{
player.AddForce(transform.up
* jumpSpeed,
ForceMode2D.Impulse);
grounded = false;
}
11

12.

РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ
ПРОЕКТА
Скрипт Health:
public class Health : MonoBehaviour
{
public float maxHealth;
public float currentHealth;
public float maxMana;
public float currentMana;
public float manaRegen;
public GameUI ui;
private Animator anim;
Скрип на получение урона
public void TakeDamage(float damage)
{
currentHealth =
Mathf.Clamp(currentHealth - damage, 0,
maxMana);
if (currentHealth > 0)
{
anim.SetTrigger("damaged");
}
else
{
gameObject.SetActive(false);//dead
}
}
12

13.

РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ
ПРОЕКТА
скрипт PlayerAttack, метод Update
Attack();
private void Update()
playerMana.SpendMana(fireballManaco
{
st);
if (Input.GetMouseButtonDown(0) &&
cooldownTimerMelee > meleeCooldown)
{
Melee();
}
if (Input.GetButtonDown("Fire1") &&
cooldownTimerFireball > fireballCooldown &&
playerMana.currentMana > fireballManacost)
}
cooldownTimerFireball +=
Time.deltaTime;
cooldownTimerMelee +=
Time.deltaTime;
}
{
13

14.

РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ
ПРОЕКТА
Метод Melee:
private void Melee()
private void Attack()
{
{
anim.SetTrigger("melee");
anim.SetTrigger("fireball");
cooldownTimerMelee = 0;
Collider2D[] hitEnemies =
cooldownTimerFireball = 0;
Physics2D.OverlapCircleAll(firePoint.position,
Instantiate(fireball, firePoint.position,
attackRange, enemyLayers);
foreach(Collider2D enemy in hitEnemies) firePoint.rotation);
{
}
enemy.GetComponent<Enemy>().TakeDama
ge(meleeDamage);
}
}
14

15.

РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ
ПРОЕКТА
Метод OnTriggerEnter2D:
private void OnTriggerEnter2D(Collider2D
collision)
{
if (collision.gameObject.tag != "Player")
{
rb.velocity = transform.right * 0;
hit = true;
boxCollider.enabled = false;
anim.SetTrigger("explode");
}
if (collision.gameObject.tag == "Enemy")
{
Enemy enemyHealth =
collision.gameObject.GetComponent<Enemy
>();
enemyHealth.TakeDamage(damage);
}
}
15

16.

РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ
ПРОЕКТА
Часть метода Update позволяет
слизи преследовать игрока, как
только тот подходит на достаточно
близкое расстояние, и атаковать
его, оказавшись вплотную.
if (distance < 30 && distance > 2.5)
{
transform.position
=
Vector2.MoveTowards(this.transform.positio
n, player.transform.position, speed *
Time.deltaTime);
}
if (distance < 2.5 && cooldownTimer >
attackCooldown)
{
Attack();
}
16

17.

РАЗРАБОТКА ПРОГРАММНОЙ ЧАСТИ
ПРОЕКТА
public void SetHealth(float health, float maxHealth)
{
slider.gameObject.SetActive(health < maxHealth);
slider.maxValue = maxHealth;
slider.value = health;
}
private void Update()
{
slider.transform.position =
Camera.main.WorldToScreenPoint(transform.parent.position + offset);
}
17

18.

СОСТАВЛЯЮЩАЯ СТАРТАП-ПРОЕКТА
Бизнес-модель стартап-проекта игры включает в себя:
Анализ рынка и конкурентов: изучение популярных игр, определение целевой аудитории и её потребностей.
Создание авторской концепции игры: разработка уникальной идеи, жанра и механики игры.
Формирование команды разработчиков: набор квалифицированных специалистов (программистов, художников
и др.).
Написание программного кода: создание основы игры с использованием игрового движка и интеграция всех
элементов.
Разработка игровой механики: добавление искусственного интеллекта, системы управления персонажами и
объектами.
Художественное оформление: прорисовка окружения, персонажей и других деталей игры.
Тестирование и исправление ошибок: проверка качества игры и устранение недочётов.
Продвижение и монетизация: разработка стратегии продвижения, выбор способов получения прибыли (продажа
лицензий, платная подписка, внутриигровые покупки).
18

19.

ЗАКЛЮЧЕНИЕ
Проект отвечает следующим требованиям:
Игра обладает простым и увлекательными игровыми механиками.
Управление должно быть интуитивным.
Игровой персонаж должен уметь перемещаться в пространстве и обладать
несколькими способностями.
На уровнях должны присутствуют противники, управляемые компьютером и
атакующие игрока.
Игрок имеет возможность победить всех противников на уровне, используя свой
арсенал способностей и различные игровые механики.
При завершении уровня игрок переходит на следующий уровень.
При поражении игрок должен вернуться на стартовую локацию, начиная
прохождение игры заново.
19
English     Русский Правила