Файл: ЮжноУральский государственный университет (национальный исследовательский университет).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 30
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
15
3. РЕАЛИЗАЦИЯ
3.1. Структура проекта
Разработка велась на языке программирования C# [1] в среде разра- ботки Visual Studio.
Microsoft Visual Studio – линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспече- ния и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графиче- ским интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows,
Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone
.NET Compact Framework и Silverlight [13].
Игровое приложение состоит из двух сцен: меню и игрового поля.
Иерархия объектов игрового поля представлена на рис. 6. Игровые объек- ты условно можно разделить на три категории: отвечающие за генерацию и уничтожение объектов (GeneratorEnemy, GeneratorAmmo, DestroyObject), графический интерфейс (Canvas и вложенные объекты) и игровое поле
(Background, Middleground, Foreground и вложенные объекты).
Рис. 6. Иерархия сцены игры
16
Вложенность игровых объектов определяет точку отсчета их коор- динат: объект верхнего уровня за точку отсчета принимает центр игровой сцены, а вложенный объект – координаты объекта более высокого уровня.
3.2. Реализация игрового объекта Player
Объект Player отвечает за поведение и логику танка игрока на игро- вом поле. К нему подключены компоненты Sprite Renderer, Box Collider
2D, Rigidbody 2D, Player (Script), Health (Script), Destroy (Script) (рис. 7).
Компонент Sprite Renderer отвечает за двумерное графическое пред- ставление игрового объекта. Компонент Box Collider 2D отвечает за обра- ботку столкновений с другими объектами. Компонент Rigidbody 2D добав- ляет игровому объекту физические свойства, такие как масса, скорость и ускорение.
Компонент Player (Script) отвечает за перемещение танка игрока по игровому полю. Он позволяет назначить клавиши управления танком, до- пустимые направления движения (ProjectAxis), возможность поворота объ- екта в сторону указателя мыши (LookAtCursor), а также добавочную ско- рость перемещения. Данный компонент также используется игровым объ- ектом Gun. Объект Gun отвечает за поведение башни танка, которая пере- мещается вместе с танком игрока по игровому полю и может вращаться, следуя за указателем мыши (используется метод LookAtCursor).
Компонент Health (Script) отвечает за здоровье танка игрока. Он определяет максимальное значение здоровья (Hp), способ отображения уровня здоровья в графическом интерфейсе игры (Lifes), урон, наносимый столкновением с вражеским танком или попаданием снаряда (CountDam- age). При значении уровня здоровья равным 0, игра завершается и осу- ществляется переход в меню (загружается сцена Menu). Способом отобра- жения здоровья является схематичный рисунок танка в верхней части экрана, заполненный зеленым цветом. При уменьшении значения здоровья танка, уровень заполнения рисунка уменьшается, незаполненная часть ста- новится прозрачной, уведомляя игрока об уменьшении уровня здоровья.
17
Компонент Destroy (Script) отвечает за уничтожение вражеских тан- ков, подсчет очков и снарядов. Он определяет изначальное количество снарядов танка игрока (Ammo), количество снарядов в ящике
(CountAmmo). Текущее количество снарядов отображается в верхней части экрана. При столкновении с ящиком, игроку начисляется количество сна- рядов в ящике. После выстрела, при попадании по вражескому танку, сна- ряд и танк противника уничтожаются, после чего игроку начисляются оч- ки, количество которых отображается в верхней части экрана.
Рис. 7. Структура игрового объекта Player
18
3.3. Реализация фона и декоративных элементов
Объект Background отвечает за отображение фона игрового прило- жения. К нему подключен компонент Scrolling (Script) (рис. 8).
Компонент Scrolling (Script) отвечает за непрерывное движение фона с одинаковыми заданной скоростью (Speed) и направлением (Direction). Он использует два одинаковых элемента, для применения их в качестве фона.
При движении справа налево, в тот момент, когда правый край фона пере- секается с правым краем камеры, создается новый объект фона, левый край которого стыкуется с правым краем предыдущего объекта. В тот момент, когда объект фона покидает пределы камеры, происходит уничтожение данного объекта. Благодаря этому, создается впечатление непрерывного движения фона в пределах экрана.
Объект Middleground отвечает за отображение декоративных элемен- тов фона игры. К нему также подключен компонент Scrolling (Script), отве- чающий за постоянное движение и обновление декоративных элементов.
Рис. 8. Структура объекта Background
19
3.4. Реализация генерации и уничтожения объектов
Объект GeneratorEnemy отвечает за случайную генерацию вражеских танков на игровом поле. К нему подключен компонент Generator (Script)
(рис. 9).
Компонент Generator (Script) отвечает за случайное расположение танков противника на игровом поле в изначально заданном пространстве.
Оно задается параметрами SpawnPos (X, Y, Z), представляя собой паралле- лепипед. Координаты X и Z указываются точно, координата Y указывает- ся по модулю (случайная генерация осуществляется в любой точке про- странства с координатами (X; от -Y до Y; Z)). Далее указывается количе- ство типов вражеских танков (Size), отличающихся скоростью передвиже- ния и размерами. В связи с выбранным количеством типов танков против- ника, компоненту передаются префабы каждого типа танков (Element 0,
Element 1, и т.д.). Также указывается время простоя генератора после начала игры, по истечении которого, генератор начинает случайно распо- лагать танки на игровом поле. Последним параметром компонента указы- вается среднее время между генерацией объектов.
Объект GeneratorAmmo отвечает за случайную генерацию ящиков со снарядами на игровом поле. К нему также подключен компонент Generator
(Script), в котором указываются количество типов ящиков, префабы ящи- ков, время простоя генератора и среднее время между генерацией ящиков.
Объект DestroyObject отвечает за уничтожение игровых объектов, вышедших за пределы игрового поля. К нему подключен компонент Box
Collider 2D. При выходе за пределы игрового поля ящик или вражеский танк сталкивается с коллайдером объекта DestroyObject и уничтожается.
3.5. Реализация графического интерфейса
Объект Canvas отвечает за отображение элементов графического ин- терфейса (рис. 10). В него вложены объекты Score, withLifes, withoutLifes.
Объект Score отвечает за отображение текста с количеством снаря- дов и очков в верхней части экрана. Объекты withLifes и withoutLifes ис-
20 пользуются для отображения уровня здоровья танка игрока. При уменьше- нии уровня здоровья, текстура withLifes, заполненная зеленым цветом, урезается сверху вниз. В том же месте интерфейса под withLifes находится текстура withoutLifes, не заполненная цветом и представляющая собой схематичный контур танка.
Рис. 9. Структура объекта GeneratorEnemy
Рис. 10. Интерфейс игры
21
3.6. Реализация игровых эффектов
В игровом приложении реализованы эффекты: взрыва и дыма, при уничтожении вражеских танков, а также при попадании снаряда по танку противника; вращения гусениц танка игрока; колебания огня за летящим снарядом.
Эффект взрыва и дыма реализован при помощи частиц. Частицы – это простые спрайты, которые повторяются и отображаются в течение ко- роткого промежутка времени. Данный эффект представлен на рис. 11.
Эффекты вращения гусениц и колебания огня снарядов реализованы при помощи аниматора, который использует контроллер аниматора, для создания эффекта пламени за летящим снарядом и вращения гусениц.
Возможные состояния снаряда представлены на рис. 12.
Рис. 11. Эффект уничтожения танка противника
Рис. 12. Текстура снаряда, используемая аниматором
22
4. ТЕСТИРОВАНИЕ
Для проверки работоспособности игрового приложения было прове- дено функциональное тестирование и юзабилити-тестирование.
4.1. Функциональное тестирование
Функциональное тестирование – это тестирование ПО в целях про- верки реализуемости функциональных требований, то есть способности
ПО в определенных условиях решать задачи, нужные пользователям [5,
11].
Тест № 1. Изменение настроек игрового приложения.
Входные данные: игрок двигает ползунок громкости музыки и эф- фектов.
Ожидаемый результат: изменение уровня громкости и эффектов.
Полученный результат: совпадает с ожидаемым.
Тест пройден успешно.
Тест № 2. Отображение лучшего результата.
Входные данные: несколько результатов по завершении игры.
Ожидаемый результат: выведен лучший результат.
Полученный результат: совпадает с ожидаемым (рис. 13).
Тест пройден успешно.
Рис. 13. Снимок экрана меню
23
Тест № 3. Перемещение и стрельба танка игрока.
Входные данные: игрок управляет танком, пробует переместить танк по игровому полю вверх и вниз, стреляет в заданном направлении.
Ожидаемый результат: танк перемещается по игровому полю, стре- ляет в заданном направлении.
Полученный результат: совпадает с ожидаемым (рис. 14).
Тест пройден успешно.
Рис. 14. Снимок экрана с танком игрока в момент выстрела
Тест № 4. Взаимодействие с ящиками и вражескими танками.
Входные данные: игрок управляет танком, пробует столкнуться с ящиком и вражеским танком.
Ожидаемый результат: при столкновении с ящиком количество сна- рядов увеличивается, ящик уничтожается; при столкновении с вражеским танком здоровье уменьшается, вражеский танк уничтожается.
Полученный результат: совпадает с ожидаемым (рис. 15, рис. 16).
Тест пройден успешно.
24
Рис. 15. Снимок экрана до столкновения с ящиком и танком противника
Рис. 16. Снимок экрана непосредственно после столкновения с ящиком и танком противника
Тест № 5. Попадание снаряда противника по танку игрока и попада- ние снаряда игрока по вражескому танку.
Входные данные: игрок управляет танком, пробует получить урон от
25 попадания вражеского снаряда и выстрелить по танку противника.
Ожидаемый результат: при столкновении с вражеским снарядом здо- ровье танка игрока уменьшается, снаряд уничтожается; при попадании снаряда игрока по вражескому танку прибавляются очки, снаряд и враже- ский танк уничтожаются.
Полученный результат: совпадает с ожидаемым (рис. 17, рис. 18).
Тест пройден успешно.
Рис. 17. Снимок экрана до столкновения с вражеским снарядом и уничто- жения танка противника
Рис. 18. Снимок экрана после столкновения с вражеским снарядом и уни- чтожения танка противника
26
4.2. Юзабилити-тестирование
Юзабилити-тестирование (проверка эргономичности) – метод оценки удобства продукта в использовании, основанный на привлечении пользо- вателей в качестве испытателей и суммировании полученных от них выво- дов [10].
При прохождении данного теста были привлечены восемь пользова- телей. Тестировщикам было предложено решить следующие задачи:
изменить настройки приложения;
начать игру;
набрать тысячу или больше очков;
просмотреть рекорд.
Все задачи были решены всеми тестировщиками без затруднений.
Пользователи отметили интуитивность управления и правил игры. Юзаби- лити-тестирование прошло успешно.
27
ЗАКЛЮЧЕНИЕ
В ходе выполнения данной работы были получены следующие ос- новные результаты:
1) выполнить анализ требований и разработать внешние специфика- ции;
2) выполнить проектирование игрового приложения;
3) реализовать игровое приложение;
4) протестировать разработанное игровое приложение.
28
ЛИТЕРАТУРА
1. C# Programming Guide. [Электронный ресурс] URL: https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx (дата обращения:
30.04.2017).
2. Flower M. UML Distilled: A Brief Guide to the Standard Object Model- ing Language. – USA: Addison-Wesley Publishing Company, 2004. – 150 p.
3. Gold J. Object-Oriented Game Development. – UK: Pearson Education
Limited, 2004. – 404 p.
4. Gregory J. Game Engine Architecture. – USA: A K Peters/CRC Press,
2009. – 864 p.
5. Kaner C., Bach J., Pettichord B. Lessons Learned in Software Testing. –
USA: Wiley, 2001. – 320 p.
6. Tidwell J. Designing Interfaces. – USA: O’Reilly Media, 2004. – 578 p.
7. Unity3D Manual. [Электронный ресурс] URL: http://docs.unity3d.com/Manual/index.html (дата обращения: 29.04.2017).
8. Вигенс К., Битти Д. Разработка требований к программному обес- печению. – М.: Русская Редакция, 2014. – 736 с.
9. Гамма Э., Хелм Р., Джонсон Р., Влиссидс Д. Приемы объектно- ориентированного программирования. Паттерны проектирования. – СПб.:
Питер, 1994. – 395 с.
10. Ларман К. Применение UML 2.0 и шаблонов проектирования.
Введение в объектно-ориентированный анализ, проектирование и итера- тивную разработку. – М.: Вильямс, 2013. – 736 с.
11. Майерс Г., Баджет Т. Искусство тестирования программ. – М.: Ви- льямс, 2012. – 272 с.
12. Официальный сайт Unity3D. [Электронный ресурс] URL: https://unity3d.com/ru (дата обращения: 28.04.2017).
13. Официальный сайт Visual Studio. [Электронный ресурс] URL: https://www.visualstudio.com/ru/vs/ (дата обращения: 28.04.2017).
29 14. Официальный сайт игры Pacman. [Электронный ресурс] URL: http://pacman.com/en/ (дата обращения: 28.04.2017).
15. Официальный сайт компании Lima Sky. [Электронный ресурс]
URL: http://www.limasky.com/ (дата обращения: 28.04.2017).
16. Рамбо Дж. UML 2.0. Объектно-ориентированное моделирование разработка. – СПб.: Питер, 2007. – 544 с.