Файл: ЮжноУральский государственный университет (национальный исследовательский университет).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 29
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего образования
«Южно-Уральский государственный университет»
(национальный исследовательский университет)
Высшая школа электроники и компьютерных наук
Кафедра системного программирования
РАБОТА ПРОВЕРЕНА
Рецензент
Программист СКЦ ЛСМ ЮУрГУ
__________ В.И. Козырев
“___”___________ 2017 г.
ДОПУСТИТЬ К ЗАЩИТЕ
Заведующий кафедрой, д.ф.-м.н., профессор
__________ Л.Б. Соколинский
“___”___________ 2017 г.
РАЗРАБОТКА КОМПЬЮТЕРНОЙ ИГРЫ В ЖАНРЕ
«АРКАДА» НА ПЛАТФОРМЕ UNITY
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
ЮУрГУ – 02.03.02.2017.13-024-1382.ВКР
Научный руководитель, ассистент каф. СП
__________ Д.М. Баскаков
Автор работы, студент группы КЭ-401
__________ Е.О. Турусов
Ученый секретарь
(нормоконтролер)
_____________ О.Н. Иванова
“___”___________ 2017 г.
Челябинск-2017
3
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ .......................................................................................................... 4 1.
АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ .......................................................... 6 1.1.
Обзор аналогов ............................................................................................. 6 1.2.
Эскизный проект .......................................................................................... 7 1.2.1.
Общие сведения ......................................................................................... 7 1.2.2.
Диаграмма вариантов использования ..................................................... 7 1.2.3.
Внешние спецификации ........................................................................... 9 2.
ПРОЕКТИРОВАНИЕ.................................................................................... 11 2.1.
Архитектура приложения .......................................................................... 11 2.2.
Диаграмма состояний ................................................................................ 13 3.
РЕАЛИЗАЦИЯ .............................................................................................. 15 3.1.
Структура проекта ...................................................................................... 15 3.2.
Реализация игрового объекта Player ........................................................ 16 3.3.
Реализация фона и декоративных элементов .......................................... 18 3.4.
Реализация генерации и уничтожения объектов .................................... 19 3.5.
Реализация графического интерфейса ..................................................... 19 3.6.
Реализация игровых эффектов .................................................................. 21 4.
ТЕСТИРОВАНИЕ ......................................................................................... 22 4.1.
Функциональное тестирование ................................................................. 22 4.2.
Юзабилити-тестирование .......................................................................... 26
ЗАКЛЮЧЕНИЕ ................................................................................................. 27
ЛИТЕРАТУРА ................................................................................................... 27
4
ВВЕДЕНИЕ
Актуальность
Игровое приложение в жанре аркада – игровое приложение, в кото- ром игрок управляет объектом, перемещающимся по игровому полю по вертикали, уничтожающим препятствия или преодолевающим их.
Аркадная игра – игра с нарочно примитивным игровым процессом.
Компьютерная игра называется «аркадной» в том случае, если она напря- мую портирована с автомата или же схожа по концепции с играми для ав- томатов. Например, к аркадным играм относятся все проекты жанров
«файтинг» (fighting), часть игр жанра «гонки» (racing), часть игр жанра
«шутер» (shooter). К ним никогда не относятся ролевые игры, симуляторы
(кроме т. н. «танцевальных симуляторов»), стратегии.
Более всего аркадные игры распространены на игровых приставках
(в том числе и портативных) и, разумеется, аркадных автоматах.
Аркадные игры подразумевают простое, интуитивно-понятное управление игровыми объектами. Пользователю нет необходимости настраивать и изучать управление игры, что позволяет практически сразу приступить к игровому процессу.
Таким образом, актуальной является задача разработки игрового приложения в жанре аркада.
Цель и задачи
Целью данной работы является разработка игры в жанре «аркада» на платформе Unity.
Для достижения поставленной цели необходимо решить следующие задачи:
1) выполнить анализ требований и разработать внешние специфика- ции;
2) выполнить проектирование игрового приложения;
3) реализовать игровое приложение;
4) протестировать разработанное игровое приложение.
5
Структура и объем работы
Работа состоит из введения, четырех глав, заключения и библиогра- фии. Объем работы составляет 29 страниц, объем библиографии – 16 ис- точников.
Содержание работы
В первой главе работы, «Анализ предметной области», проведен об- зор аналогов, разработан эскизный проект, определены требования к игре и внешние спецификации.
Во второй главе работы, «Проектирование», выполнено проектиро- вание игрового приложения.
Третья глава работы, «Реализация», описывает реализацию игры.
Четвертая глава, «Тестирование», посвящена тестированию игрового приложения.
В заключении описаны основные результаты, полученные при вы- полнении дипломной работы.
6
1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1. Обзор аналогов
Pac-Man [14] – компьютерная игра в жанре аркады, разработанная компанией Namco и впервые вышедшая в 1980 году в Японии. Игра состо- ит из 255-и уровней, рассчитанных на прохождение одним игроком. Пак- ман (Pac-Man) – круглое желтое существо только с одним ртом. Задача иг- рока – собрать (съесть) все белые точки на уровне, избегая столкновений с привидениями. Уровень заканчивается, когда съедены все точки. Игра имеет простое и понятное управление.
Doodle Jump [15] – компьютерная игра, разработанная и выпущенная компанией Lima Sky для следующих платформ: iOS, BlackBerry, Android и
Nokia S60. Для платформы iOS игра вышла 6 апреля 2009 года, а для плат- форм Android и Blackberry – 2 марта 2010 года. С самого момента выхода игра приобрела огромную популярность. Игра не имеет финала и рассчи- тана на прохождение одним игроком. Цель игры – добраться как можно выше по платформам и набрать как можно большее количество очков. Ге- роем можно управлять с помощью всего трех кнопок на мобильном устройстве (влево, вправо, центральная кнопка). В версии для устройств с акселерометром управление происходит с помощью наклона устройства в нужном направлении.
Sea Dragon – компьютерная игра, первоначально разработанная
Wayne Westmoreland и Terry Gilman, и выпущенная в 1982 году для до- машнего компьютера TRS-80 компанией Adventure International. Затем иг- ра была портирована на Apple II, Atari 400/800 и TRS-80 Color Computer.
Игрок управляет подводной лодкой, которая может стрелять торпедами как вперед, так и вверх. Нужно уклоняться, огибая подводные мины, и время от времени всплывать для пополнения запаса воздуха. После про- хождения ряда подводных тоннелей, игрок достигает цели – подводного реактора, который требуется уничтожить.
7
1.2. Эскизный проект
1.2.1. Общие сведения
Игровое приложение рассчитано на его использование одним игро- ком. Игра начинается с игрового поля, в левой части которого располага- ется управляемый объект (танк игрока). Игрок управляет танком, который может перемещаться по вертикали вверх и вниз, а также башней танка, ко- торая может вращаться на 360 градусов и стрелять в выбранном игроком направлении.
Непосредственно победные условия отсутствуют. Цель игрока за- ключается в том, чтобы как можно больше набрать очков, за уничтожение вражеских объектов, движущихся навстречу игроку. Игра завершается, ес- ли у танка игрока заканчивается здоровье. Здоровье танка может умень- шится при столкновении с вражеским танком, либо при попадании враже- ского снаряда в танк игрока.
Изначально у игрока нет снарядов, при помощи которых можно уни- чтожать вражеские танки. В процессе игры на игровом поле случайно ге- нерируются игровые объекты, при соприкосновении с которыми игрок по- лучает некоторое количество снарядов (ящики со снарядами). В течение 10 секунд после начала игры, игроку дается возможность собрать некоторое количество снарядов, после чего на игровом поле появляются случайно сгенерированные вражеские танки.
Игровая камера имеет фиксированное положение и охватывает игро- вое поле целиком.
1.2.2. Диаграмма вариантов использования
В ходе анализа требований к приложению [8] была разработана
UML-диаграмма вариантов использования [2, 16] (рис. 1).
Игра рассчитана на использование одним игроком. Игрок управляет танком.
Танк – объект, управляемый игроком, перемещающийся по игровому полю по вертикали. Управление осуществляется с помощью клавиатурных
8 клавиш WS (перемещение), мыши (поворот башни), левой кнопки мыши
(выстрел).
В главном меню игрок может выполнить следующие действия.
Изменить настройки приложения: у игрового приложения должна быть настройка громкости музыки и эффектов, возможность отключения музыки и эффектов.
Посмотреть лучший результат: в процессе игры игрок зарабатыва- ет очки, которые сохраняются в конце игры. Перед началом новой игры игрок должен видеть наибольшее набранное количество очков.
Начать игру: приступить к игровому процессу.
Рис. 1. Диаграмма вариантов использования
Во время игры игрок может перемещать танк вверх и вниз по игро- вому полю, располагаясь в левой части экрана. Постоянное движение фона справа налево создает эффект движения танка вперед по плоскости карты.
Игрок должен по возможности собирать снаряды, соприкасаясь с ящиками, объезжать вражеские танки либо уничтожать их выстрелом. Для
9 уничтожения вражеского танка игрок должен направить башенное орудие в сторону противника и выстрелить. При столкновении с вражеским тан- ком либо с вражеским снарядом количество здоровья танка игрока умень- шается. При соприкосновении с танком игрока любой игровой объект
(ящик, вражеский танк или снаряд) уничтожается.
Игра завершается в том случае, если у танка игрока заканчивается запас здоровья.
1.2.3. Внешние спецификации
В результате анализа предметной области разработан интерфейс иг- рового приложения [6]. Он состоит из двух основных экранов – главного меню (рис. 2, рис. 3).
В главном меню находятся лучший результат, окно настроек и окно начала игры.
На игровом экране расположены счетчик снарядов и очков, шкала состояния здоровья и непосредственно игровое поле с фиксированным со- отношением сторон.
Рис. 2. Прототип главного меню
10
Рис. 3. Прототип игрового экрана
11
2. ПРОЕКТИРОВАНИЕ
2.1. Архитектура приложения
В результате проектирования была разработана UML-диаграмма классов [10, 16] игрового приложения (рис. 4).
Unity – это инструмент для разработки двух- и трехмерных прило- жений и игр, работающий под операционными системами Windows, Linux и OS X. Созданные с помощью Unity приложения работают под операци- онными системами Windows, OS X, Windows Phone, Android, Apple iOS,
Linux, а также на игровых приставках Wii, PlayStation 3, PlayStation 4,
Xbox 360, Xbox One и MotionParallax3D [12].
Архитектура проекта Unity3D основана на шаблоне Entity-
Component-System [3, 4]. Согласно этому шаблону, приложение состоит из базовых сущностей, функциональность которых расширяется с помощью специализированных компонентов.
Проект Unity3D состоит из нескольких сцен (Scene), на которых рас- положены игровые объекты (GameObject) с прикрепленными к ним ком- понентами (Component). У каждого игрового объекта есть обязательный компонент Transform, отвечающий за расположение объекта на сцене. По- мимо этого, могут быть подключены как готовые компоненты (например,
Rigidbody, отвечающий за физическую симуляцию), так и пользователь- ские компоненты [7].
Непосредственно программирование в Unity3D заключается в первую очередь в разработке пользовательских классов, которые подклю- чаются к игровым объектам как компоненты. Все такие классы должны наследоваться от класса MonoBehaviour. Указание этого отношения значи- тельно перегрузило бы диаграмму, поэтому для обозначения классов- компонентов к их именам добавлен суффикс «Script».
Были спроектированы следующие классы игрового приложения [9].
Класс Audio отвечает за проигрывание музыки и звуковых эффектов игры.
12
Рис. 4. Диаграмма классов игрового приложения
Класс Settings отвечает за то, чтобы состояние игры соответствовало текущим настройкам игрока.
Класс Data отвечает за хранение пользовательских данных: рекорда и настроек.
Класс SerializableSettings используется для хранения настроек игры: уровней громкости музыки и звуковых эффектов.
Класс Player – класс, отвечающий за поведение танка игрока. С по- мощью него определяются такие параметры танка, как скорость и направ- ление перемещения, а также угол поворота башни.
Класс Health – класс, отвечающий за здоровье танка игрока. В нем определяются изначальное количество здоровья танка игрока, способ отображения уровня здоровья, урон, наносимый столкновением или попа- данием снаряда.
Класс Destroy – класс, отвечающий за уничтожение вражеских тан- ков. В нем определяются количество снарядов танка игрока и набранные очки за уничтожение врагов.
Класс Move – класс, отвечающий за направление и скорость движе- ния вражеских танков и ящиков с боеприпасами.
13
Класс Scrolling – класс, отвечающий за непрерывное движение фона
(дороги) игры и декоративных объектов фона.
Класс Generator – класс, отвечающий за генерацию вражеских тан- ков и ящиков с боеприпасами на игровом поле. В нем определяются коор- динаты игровых объектов, их количество, а также среднее время задержки генерации объектов.
2.2. Диаграмма состояний
В результате проектирования была разработана UML-диаграмма со- стояний игрового приложения [16] (рис. 5).
Рис. 5. Диаграмма состояний игрового приложения
Были определены следующие состояния приложения.
Состояние «Меню» – первое состояние игрового приложения. При переходе в него открывается главное меню и становится доступно измене- ние настроек игры. После команды игрока осуществляется переход в со- стояние «Начало игры».
Состояние «Начало игры» – при переходе в это состояние происхо- дит инициализация необходимых для игры объектов. Переход в следую- щее состояние осуществляется автоматически после инициализации игро- вых объектов.
14
Состояние «Игра» – когда игровое приложение находится в этом со- стоянии, игроку доступно управление танком на игровом поле. При проиг- рыше осуществляется переход в следующее состояние.
Состояние «Конец игры» – при переходе в это состояние сохраняют- ся результаты игры, игровые объекты удаляются и осуществляется переход в состояние «Меню».
Конечного состояния программной системы не предусмотрено, так как игровое приложение должно быть рассчитано на то, что игрок может решить завершить работу с ним в любой момент.