Uploaded by tanya.roden.58

Диплом

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ
Факультет
Кафедра
вычислительной техники
МОиПЭВМ
Направление подготовки
09.03.04 «Программная инженерия»
Профиль
БАКАЛАВРСКАЯ РАБОТА
на тему
Программное игровое приложение с использованием
мультиплатформенной инструментальной среды Unity
Студент
___________
Жеребцов Никита Дмитриевич
(подпись, дата)
Руководитель
___________
(подпись, дата)
Нормоконтролёр
___________
(подпись, дата)
(ФИО полностью)
Князев В.Н.
(фамилия, инициалы)
Попова Н.А.
(фамилия, инициалы)
Работа допущена к защите (протокол заседания кафедры от ___________№_____)
Заведующий кафедрой
__________________
(подпись)
_Макарычев П.П._____
(фамилия, инициалы)
Работа защищена с отметкой ______ (протокол заседания ГЭК от ______№____)
Секретарь ГЭК
__________________
(подпись)
Пенза, 2016
____Попова Н.А.______
(фамилия, инициалы)
5
Содержание
Введение ................................................................................................................... 7
1 Анализ предметной области ............................................................................... 9
1.1 История развития компьютерных игр ............................................................. 9
1.1.1 1940-1960-е годы ............................................................................................ 9
1.1.2 1970-1990-е годы .......................................................................................... 11
1.1.3 2000-е годы ................................................................................................... 14
1.1.4 Наши дни ....................................................................................................... 15
1.2 Классификации и виды игр ............................................................................ 16
1.3 История игровых автоматов ........................................................................... 18
1.4 Анализ аналогов .............................................................................................. 19
1.4.1 Slot Machine Angry Birds ............................................................................. 20
1.4.2 Игровой автомат «Вулкан» ......................................................................... 21
1.5 Выбор технологии разработки ....................................................................... 22
1.5.1 Методология RUP ........................................................................................ 22
1.5.2 Технология Occlusion Culling...................................................................... 24
1.5.3 Технология Legacy ....................................................................................... 24
1.6 Выбор инструментальных средств ................................................................ 26
1.6.1 Unity3D .......................................................................................................... 26
1.6.2 Язык программирования C#........................................................................ 27
1.6.3 Среда разработки графических объектов Adobe Photoshop CC .............. 29
2 Анализ требований ............................................................................................. 31
2.1 Анализ функциональных требований ........................................................... 31
2.2 Анализ нефункциональных требований ....................................................... 34
2.2.1 Интерфейсы пользователей......................................................................... 34
2.2.2 Интерфейсы программного обеспечения .................................................. 35
2.2.3 Требования к производительности ............................................................. 35
2.2.4 Атрибуты качества ПО ................................................................................ 35
3 Проектирование .................................................................................................. 36
3.1 Проектирование программных средств ........................................................ 36
3.1.1 Базовая архитектура игрового приложения .............................................. 36
3.1.2 Проектирование игрового приложения ..................................................... 36
6
3.2 Проектирование пользовательского интерфейса......................................... 40
3.3 Планирование разработки и оценка бюджета .............................................. 45
4 Реализация........................................................................................................... 55
4.1 Реализация программного игрового приложения ....................................... 55
4.2 Реализация графических объектов ................................................................ 56
5 Контроль качества программного обеспечения .............................................. 62
5.1 Функциональное тестирование ...................................................................... 62
5.2 Модульное тестирование................................................................................ 63
5.3 Метрики кода ................................................................................................... 64
5.4 Метрика Чепина .............................................................................................. 65
Заключение ............................................................................................................ 67
Список использованных источников .................................................................. 68
Приложение А. Глоссарий…………..………………………………………..... 71
Приложение Б. Листинг………………..………………………………………. 73
Приложение В. Результаты тестирования.………………..…………………. 101
7
Введение
В современном мире развитие техники не стоит не месте, идёт
постоянный прогресс.
Создается множество различных устройств, идёт
создание новейшего программного обеспечения. При создании всего этого
люди преследовали цели обеспечения быстрой работы человека, упрощения
определенных проблем, но сейчас эти задачи уступают место индустрии
развлечений.
В последнее время все чаще можно услышать об увеличениях
масштабов
разработки
программного
обеспечения
развлекательного
характера. К числу таких продуктов относятся видеоигры. Спустя десятки
лет индустрия видеоигр заняла фиксированное место на рынке наряду с
другими
развлечениями
сферы
мультимедиа,
таких
как
кино,
мультипликация, музыка. Все больше и больше людей используют свои
компьютеры и различные гаджеты не столько для работы, сколько для
вышеперечисленных приложений развлекательного характера. На данный
момент свыше 90% современных детей и огромное количество взрослых
играют в видеоигры. Это многомиллиардные компании, занимающиеся
разработкой развлекательных продуктов и программных обеспечений,
состоящих из миллионов строк программного кода и файлов мультимедиа
[1].
Игры стали охватывать огромную аудиторию по всему миру, появляясь
на различных игровых устройствах. Они стали сложнее и масштабнее:
улучшилась
обработка
визуального
пространства,
обработка
физики
объектов и искусственный интеллект. Но направляющая методология
разработки не изменилась. В виртуальном пространстве может находиться
огромное количество разнообразных объектов, но их количество попрежнему зависит от технических возможностей устройств, на которые
рассчитана видеоигра.
Интерактивность в такой программе сводится к
8
взаимодействию между объектами. Они могут пересылать информацию друг
другу, окружающему пространству и пользователю в том числе.
Основной
проблемой
является
загруженность
кода
объектов
взаимодействия, выполняющих, закрепленный за ними, определенный
сценарий [2].
Исходя из вышеизложенного было принято решение создать игровое
программное приложение с использованием современных сред и способов
разработки.
В связи с поставленной целью решаются следующие задачи:

исследовать существующие аналоги программного продукта и
выявить их достоинства и недостатки;

спроектировать алгоритмы для реализации игрового приложения
с учетом достоинств и недостатков существующих аналогов;

реализовать
составленные
алгоритмы
на
языке
программирования C#;

произвести тестирование визуального представления алгоритмов.
9
1 Анализ предметной области
1.1 История развития компьютерных игр
Видеоигра (так же называется компьютерной игрой, если пользователь
использует в качестве основного устройства компьютер) - программа,
предназначенная для развлечения или обучения, так же может быть
использована для организации связи с партнёрами, или имитирующая
партнёра.
История видеоигр началась в 50-ых годах прошлого столетия. В те
годы были созданы первые устройства, которые потом стали игровыми
приставками, портативные игровые консоли и персональные ЭВМ, которые
сегодня являются одной из самых старых и проверенных игровых платформ.
Термин «видеоигры» в современных реалиях часто применяется для
обобщения всех видов игр, для взаимодействия с которыми используются
различные устройства для улучшения эргономичности управления игровым
процессом и отображения видеоинформации. К категории можно отнести
компьютерные игры, игры для портативных устройств, игры для консолей и
игры для мобильных устройств.
Чтобы лучше понять историю видеоигр необходимо рассмотреть
данное направление на различных этапах формирования [1].
1.1.1 1940-1960-е годы
Компьютерные игры начинают свою историю в 1947 году. Тогда была
разработана первая игра – ракетный симулятор. Эта разработка вряд ли
смогла бы стать массовой, а массовость – это один из важнейших
показателей современных игр. Она была создана с помощью катоднолучевой трубки. Игрок обладал возможностью управлять световым пятном,
которое изображало ракету, необходимую для устранения цели. Причем, в те
времена катодно-лучевые трубки были очень редки и ограничены в
10
возможностях, поэтому цель была просто нарисована и закреплена на
поверхности экрана.
Разработка игровых устройств и программ занимала умы многих
людей, работавших в высокотехнологичной сфере, людьми, работавшими с
компьютерами, поэтому в 50-х годах можно отметить начало развития этой
сферы.
Развитие компьютеров и средств отображения информации, позволило
создать несколько заметных игровых проектов. Как и раньше, они
рассматривались
как
достижения
искусства
программирования
и
современной в то время техники, а не как игры, в которые несут
развлекательный характер и в которые могут играть все желающие.
В 1952 году Александр Дуглас разработал программу под названием
OXO – компьютерный прототип игры в крестики-нолики. Эта программа
была создана в процессе его научной деятельности, которая была посвящена
человеко-машинному
искусственного
взаимодействию.
интеллекта,
который
Игра
содержала
позволял
модуль
компьютеру
взаимодействовать с человеком [1, 2].
В 1958 году Уильям Хигинботэн создал игру Tennis for Two (Теннис
для двоих) – примитивный симулятор игры в теннис. Часто именно эту игру
называют первой настоящей видеоигрой. В качестве способа взаимодействия
в игре использовались контроллеры, имевшие джойстик и кнопку. В качестве
устройства отображения информации игра использовала осциллограф.
Устройство
служило
для
развлечения
посетителей
Брукхэвенской
Национальной Лаборатории в Нью-Йорке.
В 60-х годах стали появляться проекты, которые вполне можно было
сравнить с современными компьютерными играми. Однако, разрабатывались
они, в большинстве случаев, на ЭВМ, которыми обладали учебные
заведения.
В 1961 году Стив Рассел и его коллеги из Массачусетского
университета в США написали игру «Spacewar». Она работала на
11
компьютере PDP-1. Целью игры являлась атака космического корабля
противника и уклонение от его огня, таким образом, чтобы не столкнуться со
звездой.
В 1966 Ральф Баер разработал видеоигру под названием «Chase»,
которая была примечательна тем, что впервые использовала в качестве
устройства вывода информации обычный телевизор.
В 1969 Кен Томпсон из компании AT&T разработал игру «Space
Travel» для Операционной Системы MULTICS. В последствии, игра была
перенесена и на другие ОС, в результате чего она стала первым
программным продуктом для ОС Unix.
1.1.2 1970-1990-е годы
70-е годы можно сравнить с настоящим игровым взрывом. Видеоигры
стали развиваться уже в нескольких направлениях. Например, игровые
автоматы, игры для компьютеров, установленных в учебных заведениях,
игры для домашних компьютеров, а также – игры для приставок. Особой
популярность в то время стали пользоваться консоли от Atari и Magnavox.
Необычно развивалась ситуация среди пользователей домашних
компьютеров. Например, в те времена некоторые игры распространялись в
виде текстов, напечатанных в журналах или книгах. Таким образом,
домашний пользователь ПК должен был самостоятельно набирать текст
игры, производить отладку, компилировать программу, чтобы потом в неё
поиграть.
В 1971 появился первый игровой автомат, который был запущен в
Стэнфордском университете. На этот автомат была установлена игра
«Galaxy». В том же году Нолэн Басшнелл и Тед Дабни разработали игровой
автомат, основанный на той же «Spacewar». Игра называлась «Computer
Space», и всего было выпущено 1500 экземпляров этого автомата. В том же
году Дон Дэглоу разработал первую компьютерную симуляцию бейсбола на
12
компьютере DEC PDP-10. В том же году Майк Мэйфил из Массачусетского
технологического университета США создал игру «Star Trek».
В 1972 была основана компания «Atari», и тогда же вышла игра «Atari
PONG» и соответствующее устройство к нему. Было выпущено 19000 копий
этой игры.
В 1974 появились игры «Maze War» и «Spasim» – первые попытки
разработки многопользовательских трехмерных шутеров. В том же году Брэд
Фортнер создал авиасимулятор «Airflight». Эта игра стала примером для
создания Microsoft Flight Simulator.
В 1975 году была написана текстовая компьютерная игра «Adventure».
Компьютеры
тех
времен
обладали
скромными
вычислительными
способностями, поэтому текстовые игры обретали популярность. К тому же,
существовали игры, которые "общались" с игроками благодаря печати
игровой информации на принтере.
В 1979 году, выпущена всемирно известная игра «Pac Man». Эта игра
не потеряла актуальность и в наши дни. Она была занесена в Книгу Рекордов
Гиннеса как самая распространенная игра в мире [14].
В 80-х годах игровые автоматы, которые обрели популярность в
прошлом десятилетии, стали терять свои позиции. Однако начало 80-х можно
считать золотой эрой игровых автоматов.
Теперь на первый план выходят игры для ПК, а также – для игровых
консолей. Примерами компьютеров тех времен являются ZX Spectrum, Apple
II, Apple Macintosh, Commodore 64, IBM PC.
В это же время начинают появляться многие компании-издатели и
компании-разработчики игр, известные и по сей день. Такие, как например,
Electronic Arts, которая занимает одно из главных мест на современном
рынке видеоигр.
Золотая эра игровых автоматов - 80-е стали причиной зарождения
основ многих популярных на сегодня игровых жанров и вариантов
построения игрового мира и игровой механики. Например – это трехмерные
13
игры, сетевые игры, квесты, скроллинговые игры. Благодаря созданию новых
аппаратных
средств,
в
играх
стало
появляться
неплохое
звуковое
оформление. В 1985 году была создана игра, которая стала прообразом
одноименному портативному устройству. Речь конечно идет о всемирно
известном Тетрисе, который написал наш соотечественник Алексей
Пажитнов. В том же году вышла в свет Nintendo Entertainment System –
игровая консоль, набравшая огромную популярность к началу 1990-х годов.
Кстати, сегодня тоже можно поиграть в NES-игры. Nintendo и другие
компании выпускают игровые консоли до сих пор [1].
В 1987 была создана ролевая игра «Final Fantasy», которая стала
символом японского игростроя.
«Final Fantasy» является одной из
популярнейших ролевых игр нашего поколения.
В 1989 компания «Nintendo» выпустила карманную игровую консоль
«Game Boy». С этого момента у компании, которая начала свое
существование с магазина игрушек, появились проблемы [8, 2].
В
90-х
годах
индустрия
разработки
игрового
программного
обеспечения окрепла. Игры уже разрабатывались не одиночками, как это
было ранее, а огромными командами профессиональных разработчиков.
Сегодняшним играм мы обязаны разработкам, которые были сделаны в
1990-е годы. Многие игры тех времен до сих пор популярны. Например –
«Star Craft» 98-ого года выпуска, чемпионаты по которому проводятся и в
наше время или «Counter Strike» 99-ого года выпуска, который является
модификацией к игре «Half Life», а так же первая часть серия «Alone in the
Dark» 92-ого года выпуска.
Одна из первых трехмерных игр была «Quake», которая была
разработана 1996 году и была выпущена благодаря появлению микросхем
«Voodoo», созданных компанией «3dfx». Этот набор микросхем значительно
ускорял работоспособность ПК по части трехмерной графики.
В 90-е переняли эстафету Интернет-игры. Ранее упомянутая «Quake»,
разрешала организовывать многопользовательские баталии в Интернете, на
14
ровне с такими играми, как «StarCraft», «EverQuest, «Ultima Online», «Age of
Empires». Стали разрабатываться игры на Macromedia Flash. Подобные игры
обычно являлись различными реализациями простых, но атмосферных и
увлекательных
концепций,
которые
популярны
и
сегодня.
Главная
особенность Flash-игр заключалась в том, что они запускались в окне WEBбраузера, оснащенного соответствующими плагинами от компании Adobe.
1.1.3 2000-е годы
В 2000-х годах игровая индустрия продолжала развиваться. В
частности, на рынке игровых консолей присутствовали три сильных
конкурента. Это Microsoft Xbox 360 (ее предшественница – Xbox – появилась
в 2001 году), Sony Play Station III и Nintendo Wii.
Можно отметить, что игры этих времен (преимущественно –
консольные) активно используют нестандартные игровые контроллеры –
такие, как контроллер-гитару в игре «Guitar Hero» для Sony Play Station,
контроллер в виде барабанов от Nintendo для некоторых ее игр. Кроме того, в
эти
времена
вполне
привычными
стали
беспроводные
игровые
манипуляторы. В 2010 году начались продажи Microsoft Kinect – устройства,
отслеживающего
перемещения,
позволяющего
превратить
в
игровой
контроллер все тело игрока. В этом же году начали продавать PlayStation
Move – игровой контроллер, положение которого отслеживается в трех
измерениях. Существуют и другие подобные разработки, вдохновителем
которых можно считать беспроводной Wii Remote от Nintendo с детектором
движения, который является основным контроллером для Nintendo Wii.
В эти годы можно отметить бурное развитие онлайн-игр. Игровая
графика и другие возможности игр шли в ногу со временем, а игры этих лет
все еще популярны.
Нужно отметить, что в 2000-х годах разработчики уделяли большое
внимание мобильным играм. Причем, среди мобильных платформ можно
выделить как узкоспециализированные игровые, так и платформы более
15
широкого профиля – такие, как ОС для мобильных телефонов, смартфонов и
КПК.
В частности, если говорить о мобильных игровых платформах – то
здесь мы имеем PlayStation Portable. Изначально она была выпущена в 2004-м
году, за период 2004-2010 гг. были созданы несколько модификаций, ее
развитие продолжается до сих пор.
В 2003-м была анонсирована, а в 2004-м выпущена Nintendo DS,
развитие которой так же продолжается и в наши дни. Кроме того, Nintendo
продолжает развивать серию Game Boy.
В
2003-м
был
выпущен
мобильный
телефон
Nokia
N-Gage,
ориентированный на игровое применение, в 2004-м – Nokia N-Gage QD [23].
1.1.4 Наши дни
В настоящее время игры продолжают развиваться. Особое внимание
сегодня уделяется разработке новых игровых интерфейсов (таких, как
Microsoft Kinect, Nintendo Wii U) и мобильным играм.
Показательно то, что Kinect для Xbox 360 попал в Книгу рекордов
Гиннеса как самое быстро продаваемое потребительское электронное
устройство. В первые 60 дней после начала продаж Kinect было продано 8
миллионов экземпляров. Существует немало игр, совместимых с Kinect, но
потенциал этого сенсора еще предстоит раскрыть.
В среде игровых консолей так же наблюдается оживление – в 2013
увидели свет Xbox One и Sony PlayStation 4. На данный момент
заканчивается разработка Xbox One S, которая появится на прилавках уже в
октябре 2016 года.
Традиционные игры – для стационарных игровых консолей и ПК, с
привычным управлением, конечно же, не оставляют без внимания. Но на
фоне новых технологических решений они смотрятся достаточно спокойно,
не привлекают к себе повышенного внимания.
16
Сегодня разработка компьютерных игр – это гигантская индустрия.
Бюджеты игровых проектов достигают десятков миллионов долларов, а
объем рынков современных игр – компьютерных, консольных, мобильных,
оценивается десятками миллиардов долларов.
1.2 Классификации и виды игр
В зависимости от целей и направлений игры можно разделить на:

игры на мастерство;

азартные игры;

логические игры;

обучающие игры.
Игры на мастерство, как игры-симуляторы видов спорта, военные
игры, клавиатурные тренажеры, тетрис и другие, основаны на управлении
игровыми oобъектами, всё зависит от ловкости игрoкa. В азартных же, всё
наоборот, исход игры зависит от случайности, вероятности. Ярким примером
азартных игр являются карточные игры и имитационные, как кости, рулетка.
Логические игры, например, шахматы, шашки или крестики-нолики,
содержат стратегию, тактику поведения игрока, влияющую на исход. В играх
на обучение игроку предлагается стать учеником и получить некоторые
знания. Последние занимают ведущую роль в мире компьютерных игр.
По способам реализации игры бывают:

игры с режимом реального времени;

конечные и бесконечные;

со случайными событиями или детерминированные;

для одного, для многих игроков;

игры с различными уровнями сложности.
По структуре игры делятся на три блока:

блок игровой среды (правило игры);

блок оценки игровой ситуации (анализ);
17

блок взаимодействия с игроком (интерфейс).
Общая структура компьютерных игр представлена на рисунке 1.
Рисунок 1 – общая структура компьютерных игр
Блок игровой среды – это то пространство, в котором происходит то
или иное действие в соответствии со смыслом, задумкой разработчика и
законами самой игры.
Блок взаимодействия с играющими – это все в программе, что
позволяет игроку изменять ход игры.
Блок оценки – это условия, созданные игроку к объекту игры внутри
игрового пространства. Это такие средства, как подсчет очков, описание
условий, показ начальной или конечной игровой ситуации.
Так же можно выделить три основных иерархических уровня, которые
позволяют построить схему игры:

оперативный уровень (локальные сети, усложняющие игры);

тактический уровень (текущее управление клавишами);

стратегический уровень (конец игры, фиксация результатов).
На первом, оперативном уровне происходит изменение объектов в
игровом пространстве с помощью нажатия клавиш клавиатуры, мыши или
другого управляющего устройства (джойстик). В результате на экране
дисплея пользователю должны быть отображены все перемещения и
изменения.
Тактический уровень включает в себя оперативный. Все действия на
этом уровне ведут к достижению некоторой определенной цели. На этом
этапе происходит изменение уровня сложности, темпа игры.
18
Стратегический уровень содержит в себе тактический с добавлением
нескольких самостоятельных блоков, таких как ввод на игровое пространство
всех объектов для определения задания и визуализации их начальных
параметров. Помимо этого, на данном уровне происходит проверка
критериев окончания игры, фиксации и визуализации результатов всей игры
в целом и подведение итогов прошлых игр.
Игры
могут
принадлежать
одной
платформе
или
быть
мультиплатформенными.
Классификация по платформам:

персональный Компьютер;

игровые консоли;

мобильные устройства.
Также по количеству платформ, на которых может запуститься игра:

мультиплатформенные – игры, способные запуститься на
нескольких платформах;

одноплатформенные – эксклюзивные игры, созданные только для
одной определенной платформы [1].
Исходя
из
вышеизложенного
можно
сделать
вывод,
что
разрабатываемое приложение является симулятором игрового азартного
автомата с режимом реального времени.
1.3 История игровых автоматов
Начиная с древних времен люди, верующие в различные мистические и
магические вещи, выдавали любое случайное событие за «не случайное», за
выполнение неких законов. Это называли по-разному: судьба, рок, воля
богов, короче говоря – его Величество Случай. Эта игра продолжается и по
сей день. Люди слепо верят в невероятное везение и предполагают его
использование в сою сторону. Но находятся и такие, кто увидел в этом
выгоду, пользу для себя [12].
19
И начиная со дня, когда это началось, люди стали использовать
случайность как способ заработка. Так начали появляться различные
азартные игры, основанные на ГСЧ, то есть генераторе случайных чисел.
Человечество, яро увлеченное легкой прибылью или просто удовольствием
от своего «везения», тысячами использует программы, автоматы, игры и
многое другое, основанное на этом подходе. Начинают создаваться
стратегии, выясняться принципы работы.
Одним из самых примитивных представителей азартного мира является
«игровой автомат». Правила пользования им просты: небольшое количество
поставленных очков в один миг может стать тысячью или даже миллионом.
Когда-то давно такие автоматы были механическими, внутри них находились
шестерни, запускающие механизм барабанов, картинки на них были
напечатаны на бумаге и составляли они примерно 61% от всевозможных
игровых автоматов.
Сейчас эта старая система перенесена на цифровой монитор вашего
устройства. Огромные блоки заменены рукописным интерфейсом, ручки –
объемными красивыми клавишами, но принцип работы остается тот же.
Только сейчас компьютер не использует выданное значение. Вместо этого
машина работает по определенному алгоритму: умножает, делит и переводит
с языка цифр на язык картинок по заранее составленным таблицам. Именно
здесь закладывается коэффициент выигрышных результатов, изменяя
который можно сделать программу более или менее «щедрой».
Исходя из анализа данного направления программных игровых
средств, можно сделать вывод, что данное направление всегда было и будет
актуально в мире не только технологий. Поэтому было принято решение о
создании именно такого симулятора азартного игрового автомата [21].
1.4 Анализ аналогов
Начиная с начала 90-х годов прошлого века особую популярность
начали набирать азартные игры. В их число входили и игровые автоматы. На
20
данный момент частота их использования заметно снизилась, но всё равно
продолжает занимать лидирующие позиции.
1.4.1 Slot Machine Angry Birds
Данное игровое приложение представлено в видео онлайн-приложения
на некоторых сайтах. Оно имеется в общем и бесплатном доступе на
нескольких сайтах с подобной тематикой.
Рисунок 2 – игровое пространство приложения «Slot Machine Angry
Birds»
Здесь используется стандартный набор игрового автомата: кнопки
просмотра
комбинаций,
запуска
автомата,
создание
ставки.
Также
пользователю выведен его текущий счет, но нет поля для просмотра очков в
случае выигрыша. Помимо всего не предоставляется возможность просмотра
21
выигрышных комбинаций, то есть игрок не знает, в случае чего он может
получить выигрыш.
1.4.2 Игровой автомат «Вулкан»
Как и предыдущий аналог этот имеет возможность использования
только в сети. Перейдя по ссылке и открыв определенный адрес, вы обязаны
зарегистрироваться, чтобы сыграть. Так же необходим денежный взнос, то
есть, игра платная. Игровой интерфейс представлен на рисунке 3.
Рисунок 3 – главное окно игрового автомата «Вулкан»
В ходе анализа аналогов было принято решение о создании
собственного игрового приложения, отвечающего всем вышеперечисленным
требованиям, имеющим, такие же функции с добавлением новых. Так же
добавлена возможность бесплатного использования приложения и в режиме
офлайн.
22
1.5 Выбор технологии разработки
Методология – это система принципов, а также совокупность идей,
понятий, методов, способов и средств, определяющих стиль разработки
программного обеспечения. Конкретные вещи реализуется через выбранную
методологию. Именно она определяет, как будет выполняться разработка.
Существует
много
успешных
методологий
создания
программного
обеспечения. Выбор конкретной методологии зависит от размера команды,
от специфики и сложности проекта, от стабильности и зрелости процессов в
компании и от личных качеств сотрудников [7].
1.5.1 Методология RUP
Rational Unified Process (RUP) – это основа технологии разработки
программного обеспечения, разработанная и продаваемая компанией Rational
Software [9]. Он обеспечивает дисциплинарный подход к распределению и
управлению
задачами
и
областями
ответственности
в
организации,
занимающейся разработкой ПО. RUP использует итеративный подход, то
есть последовательность нарастающих шагов или итераций. Каждая итерация
включает в себя некоторые или большую часть дисциплин разработки
(выявление требований, анализ, проектирование, реализацию и т.п.). У
каждой итерации есть четко определенный набор целей, и она создает
частично работающую реализацию конечной системы. Каждая последующая
итерация строится на результатах предыдущих, развивает и усовершенствует
систему до тех пор, пока не будет создан конечный продукт.
Особенность методологии состоит в том, что степень формализации
может меняться в зависимости от потребностей проекта. Можно по
окончании каждого этапа и каждой итерации создавать все требуемые
документы и достигнуть максимального уровня формализации, а можно
создавать только необходимые для работы документы, вплоть до полного их
отсутствия. За счет такого подхода к формализации процессов методология
является достаточно гибкой и широко популярной.
23
Модель жизненного цикла RUP является довольно сложной, детально
проработанной итеративно–инкрементной моделью с элементами каскада. В
модели RUP выделяются 4 основные фазы, 9 видов деятельности
(процессов).
Основными фазами RUP являются:
–
фаза начала проекта (Inception);
–
фаза проработки (Elaboration);
–
фаза построения (Construction);
–
фаза передачи (Transition).
Цель фазы – сделать систему полностью доступной конечным
пользователям. Здесь происходит окончательное развертывание системы в ее
рабочей среде, подгонка мелких деталей под нужды пользователей.
В рамках каждой фазы возможно проведение нескольких итераций,
количество которых определяется сложностью выполняемого проекта.
Одним из основных столпов, на которые опирается RUP, является
процесс
создания
моделей
при
помощи
унифицированного
языка
моделирования (UML). Унифицированный язык моделирования (Unified
Modeling
Language,
UML)
–
это
универсальный
язык
визуального
моделирования систем. Чаще всего UML ассоциируется с моделированием
объектно-ориентированных программных систем, но он имеет намного более
широкое применение благодаря свойственной ему расширяемости. UML не
привязан к какой–либо конкретной методологии или жизненному циклу. Он
может использоваться со всеми существующими методологиями. Основная
идея UML – возможность моделировать программное обеспечение и другие
системы как наборы взаимодействующих объектов [22].
Методология
RUP является
более универсальной, чем
другие
рассмотренные методологии, так как применима как в небольших и быстрых
проектах, где за счет отсутствия формализации требуется сократить время
выполнения проекта и расходы, так и в больших и сложных проектах, где
требуется высокий уровень формализма, именно поэтому она будет
24
использоваться в качестве основной методологии разработки в данной
работе.
1.5.2 Технология Occlusion Culling
Occlusion Culling это функция, отключающая рендеринг тех объектов,
которые в данные момент не видит камера (они закрыты другими
объектами). В компьютерной 3D графике это не происходит автоматически.
Чаще всего сначала создаются объекты, расположенные дальше от камеры, и
уже поверх них рисуются ближние к камере объекты (это называется
«overdraw»). Occlusion Culling отличается от Frustum Culling. Frustum Culling
отключает только рендеринг объектов, не попадающих в область обзора
камеры, не трогая при этом скрытые по overdraw объекты. Обратите
внимание, что Frustum Culling полезен даже при использовании Occlusion
Culling.
Occlusion сulling, используя виртуальную камеру, проходит по сцене
для построения иерархии потенциально видимых наборов объектов. Эти
данные используются в рантайме каждой камерой для определения того что
она видит, и что нет. Опираясь на полученную информацию, Unity
обеспечивает
рендеринг
только
видимых
объектов.
Это
уменьшает
количество draw calls и увеличивает производительность игры.
Данные для occlusion culling состоят из ячеек. Каждая ячейка - частичка
сцены. Ячейки образуют бинарное дерево. Occlusion Culling использует два
дерева. Первое View Cells (для статичных объектов), второе Target Cells (для
движущихся объектов). View Cells содержит список индексов, который
определяет видимость статичных объектов с более высокой точностью[10].
1.5.3 Технология Legacy
Данная технология, используемая вместе с определенными игровыми
платформами, способна создавать необычные анимации отдельных объектов.
Складывать их, создавать плавный переход, задавать циклы движения и
25
многое другое. С помощью этой технологии возможно создание слоев
объекта, что позволяет описывать его поведение различными способами.
Появление такой технологии значительно облегчило работу разработчикам и
художникам видеоигр.
26
1.6 Выбор инструментальных средств
1.6.1 Unity3D
Unity — это игровой движок для разработки двух- или трёхмерных
приложений и игр, предназначенный для операционных системам Windows и
OS X. Созданные с помощью Unity игровое программное обеспечение
работает на таких операционных системах, как Windows, OS X, Android,
Apple iOS, Linux, а также на игровых приставках Wii, PlayStation 3 и XBox
360. Компьютерные игры и другая продукция, созданные с помощью Unity,
поддерживают набор библиотек DirectX и OpenGL. Главное окно программы
представлено на рисунке 4.
Рисунок 4 – Программное пространство мультиплатформенной среды
Unity
Unity — это игровой движок для разработки двух- или трёхмерных
приложений и игр, предназначенный для операционных системам Windows и
OS X. Созданные с помощью Unity игровое программное обеспечение
работает на таких операционных системах, как Windows, OS X, Android,
Apple iOS, Linux, а также на игровых приставках Wii, PlayStation 3 и XBox
27
360. Компьютерные игры и другая продукция, созданные с помощью Unity,
поддерживают набор библиотек DirectX и OpenGL.
Этот движок позволяет создать сцену, на которой будут размещены
импортированные из 3D’s Max объекты взаимодействия.
Особенности:
–
несколько сценарных языков программирования: C#, JavaScript
(модификация) и Boo;
–
возможность мгновенного запуска игры;
–
простая работа с ресурсами через Drag-and-Drop;
–
широкие возможности импорта;
–
полностью настраиваемый и доступный большинству людей
интерфейс;
–
кроссплатформенность;
–
мощь, гибкость и бесконечная расширяемость;
–
наличие бесплатной версии с некоторыми ограничениями.
На данный момент Unity является одним из самых простых, но в тоже
время и самых эффективных, игровых движков. Его возможности
безграничны, а средства разработки будут понятны даже начинающему
программисту. Исходя из этих параметров, была выбрана именно эта
мультплатформенная среда разработки [10, 11].
1.6.2 Язык программирования C#
28
В качестве первого ключевого языка программирования в данной
дипломной работе выбран С#.
Рисунок 5 – Пространство языка программирования C#
C# относится к языкам с C-подобным синтаксисом, из которых его
синтаксис скорее близок к C++ и Java. Унаследовав многое от своих
предшественников — языков C++, Java и др. — С#, опирается на
практическое
их
использования
и
исключает
некоторые
модели,
определившие себя как проблематичные при разработке программного
продукта. Например, C# в отличие от C++ не поддерживает множественное
наследование классов.
Переняв многое от своих предшественников — языков C++, Java,
Delphi, Модула и Smalltalk — С#, опираясь на практику их использования,
исключает некоторые модели, зарекомендовавшие себя как проблематичные
при разработке программных систем, например, C# в отличие от C++ не
поддерживает множественное наследование классов (между тем допускается
множественное наследование интерфейсов).
29
Данный язык был выбран в качестве основного, так как обладает
нужными качествами для реализации, имеет встроенную поддержку
обобщений, делегатов и событий, что облегчит реализацию [7].
1.6.3 Среда разработки графических объектов Adobe Photoshop CC
Adobe Photoshop является редактором растровой графики,
разработанным и опубликованным семейством Adobe Systems для ОС
Windows и OS X.
Рисунок 6 – Пространство графического редактора Adobe Photoshop
Программа предназначена для работы с фотографиями и создания
коллажей из них, рисованными иллюстрациями. Photoshop обладает
практически безграничными возможностями. Это одна из самых популярных
программ среди фотохудожников. Они используют её для ретуши, цветовой
и тоновой коррекции, повышения резкости и создания художественных
эффектов. Хорошо продуманный набор инструментов для работы с частями
изображения незаменим для оформления монтажей. Огромный набор
специальных
фильтров
активно
применяется
при
создании
как
30
коммерческого дизайна, так и художественных произведений. Webдизайнеры по достоинству оценят удобный и полный впечатляющих
возможностей интерфейс [4].
Программа
предоставляет
весь
спектр
средств
обслуживания
допечатного процесса — от сканирования до установки параметров
цветоделения и растрирования. Photoshop является стандартом в этой
области и гарантирует получение наилучшего результата и максимальную
совместимость со всеми другими программами издательского цикла.
Наконец,
множество
разработчиков
и
сторонних
фирм
расширяют
инструментарий программы за счет подключаемых программных модулей.
Они адаптируют программу для решения специфических задач: от дизайна
текстиля до обработки результатов научных наблюдений.
Photoshop был создан в 1988 году Томасом и Джоном Нолл. С тех пор
этот графический редактор стал стандартом в растровом графическом мире
программ. Он может редактировать и создавать растровые изображения в
несколько
слоев
и
поддерживает маски, альфа-композитинга
и
несколько цветовых моделей, включая RGB , CMYK. Photoshop имеет
обширную поддержку графических форматов файлов, но и использует свой
собственный «.psd» и «.psb» форматы, которые поддерживают все
вышеупомянутые функции. В дополнение к растровой графики, он имеет
неограниченные
возможности
для
редактирования
текста векторной графики, 3D-графики и видео [5].
или
визуализации
31
2 Анализ требований
Требование можно определить, как «подробное описание того, что
должно быть реализовано». Существует два основных типа требований:

функциональные
требования
–
какое
поведение
должна
предлагать система;

нефункциональные
требования
–
особое
свойство
или
ограничение, накладываемое на систему.
2.1 Анализ функциональных требований
В качестве пользователей разрабатываемого программного игрового
приложения представлен один тип пользователя «Игрок». Его классы и
характеристики представлены в таблице 1.
Таблица 1 – Классы и характеристики пользователя
Класс пользователей
Игрок
Характеристика пользователей
Игрок имеет право просмотра игровых сцен, изменения
параметров изображения (разрешения экрана, параметров
графики и т.д.), а также непосредственно возможность
просмотра выигрышных комбинаций, сделать ставку,
запустить автомат и просмотреть результаты.
Исходя из этого была построена модель прецедентов предметной
области для класса пользователя – игрок (рисунок 7).
32
Рисунок 7 – Диаграмма вариантов использования
Для наглядного представления поведения прецедентов наилучшим
вариантом будет построение диаграмм деятельности [15]. Диаграмма
деятельности, представлена на рисунке 8, построена для прецедента «Запуск
автомата» ввиду его сильной загруженности и наибольшей значимости.
33
Рисунок 8 – Диаграмма деятельности прецедента «Запуск автомата»
34
Для более детального понимания взаимодействия между выделенными
на этапе анализа сущностями игрового приложения, рассмотрим диаграммы
последовательностей для прецедентов «Запуск автомата» (рисунок 9).
Рисунок 9 – Диаграмма последовательности прецедента «Запуск автомата»
Диаграмма
последовательности
помогает
установить временную
взаимосвязь между классами, иными словами она лишь показывает
реализацию поведения прецедента, но не является точным представлением
каждого его шага.
2.2 Анализ нефункциональных требований
2.2.1 Интерфейсы пользователей
Первое окно выбора настроек должно представлять собой понятный и
простой интерфейс, не создающий никаких препятствий для пользователя.
35
Следующее окно самой игры должно отвечать тем де требованиям, что и
предыдущее. Но, изучив особенности построения аналогов данного
приложения, психологию цвета и другие аспекты, было принято решение о
создании яркого запоминающегося интерфейса, способного привлечь
внимание пользователей, помочь им окунуться в атмосферу игры.
2.2.2 Интерфейсы программного обеспечения
При запуске автомата запускается барабан, работа которого заранее
описана на скрипте языка C#
2.2.3 Требования к производительности
Игра должна обеспечивать быструю и корректную работу. В то же
время все действия не должны быть слишком резкими, пестрыми и яркими,
дабы не вызвать проблем со здоровьем у людей, страдающими особенными
заболеваниями [7].
2.2.4 Атрибуты качества ПО
Для готового данного программного обеспечения не требуется никаких
дополнительных
атрибутов.
Достаточно
установленной
операционной
системы с исправно работающим монитором и звуковыми устройствами. В
игру можно играть, как и на клавиатуре, путем нажатия на определенные
клавиши, так и мышкой.
36
3 Проектирование
3.1 Проектирование программных средств
3.1.1 Базовая архитектура игрового приложения
Диаграмма развертывания, показанная на рисунке 10, демонстрирует
физическую архитектуру компьютерной системы. Диаграмма изображена на
рисунке 10 и показывает, что развертывание предельно просто: на
компьютере пользователя имеются установленная библиотека «XNA Game
Studio» и программная платформа «.Net Framework 2.5+», с помощью
которой служба, написанная на языке C# для Microsoft .NET, обращается к
методу класса из библиотеки «XNA Game Studio» [13].
Рисунок 10 – Диаграмма развертывания
3.1.2 Проектирование игрового приложения
В ходе проектирования было выявлено 6 классов – сущностей,
описание которых приведено в таблице 2.
37
Таблица 2 - Описание классов игрового приложения
Класс
Назначение
iTween
Библиотека пустых переменных, необходимых для
создания пространства, описания добавленных в нее
объектов
MxLightSprite
Создает 2D игровое пространство, камеру, работающую с
ним
MxSlotMachine
Основополагающий класс, описывающий работу автомата,
его логику и вывод на экран
MxSpinTextures Описывает соединения художественных объектов,
добавленных в Unity, с соответствующими им
переменными в языке программирования C#
MxSplashScreen Запускает заставку, описывает ее плавное появление и
угасание
MxUtils
Диаграмма
Отвечает за соотношение сторон в пикселях (расширение
экрана), введенное в первом окне игры
классов
для
программного
игрового
симулирующего азартную игру представлена на рисунке 11.
приложения,
38
Рисунок 11 – Диаграмма классов
39
Продолжение рисунка 11
40
Соответственно для всех анимационных приложений, моделирующих
работу систем массового обслуживания, спроектированы аналогичные
классы, отличающиеся друг от друга только наличием (или отсутствием)
некоторых функций и свойств.
3.2 Проектирование пользовательского интерфейса
Исходя из анализа требований и модели анализа, были спроектированы
простые и интуитивно понятные графические пользовательские интерфейсы,
представленные
на
рисунках
12
–
17.
Описание
компонентов
пользовательских интерфейсов приведено в таблицах 3 – 5.
Рисунок 12 – Главная заставка, создаваемая по умолчанию
Данная анимационная заставка всегда запускается первой в любом
приложении, созданном в мультиплатформенной среде Unity.
41
Рисунок 13 – Второстепенная плавно появляющаяся заставка, созданная в
процессе работы
Эта заставка появляется и угасает сама в течении 3,5 сек. Она
указывает логотип (в данном случае - группу) разработчика.
42
1 - Переход к настройкам управления
2 - Переход к настройкам графики
3 - Выбор разрешения экрана
4 - Выбор качества текстур
5 - Выбор дисплея, на который будет транслироваться игра, если
имеются дополнительные
6 - В случае поставленной там отметки игра будет открываться в
оконном режиме, иначе – в полноэкранном
7 - Запуск игры, т.е. переход к следующему окну программы
8 - Закрыть первое окно, окончить работу с программой
Рисунок 14 – Первое окно программы
Данная технология, предоставлена разработчиками Unity, также
появляется автоматически. В ней игроку предоставляется возможность
изменения параметров игры.
43
1 - Показатель «Очки» выводит на экран ставку игрока
2 - Показатель «Выигрыш» в случае выигрыша выводит на экран
количество выигранных очков
3 - Открывает графическое окно с таблицей выигрышных комбинаций
(рисунок 16)
4 - Увеличивает ставку на одно очко
5 - Отображает пользователю комбинацию графических объектов,
таким образом показывает получит ли выигрыш игрок или нет
6 - Показатель «Счет» показывает текущий счет игрока, доступный
для игры
7 - Увеличивает ставку до трех очков
8 - В случае сделанной ставки запускает автомат
Рисунок 15 – Интерфейс демонстрационного примера
44
Рисунок 16 – Интерфейс дополнительного окна «Игровое Табло»
45
Рисунок 17 – Окно окончания игры
В случае поражения игроку предоставляется возможность выйти из
игры или же продолжить ее, т.е. начать заново. Для этого в новом
открывшемся окне надо либо закрыть его, либо нажать на кнопку
«Попробовать еще». Интерфейс окна окончания игры представлен на
рисунке 17.
Таким образом был спроектирован удобный интерфейс, отвечающий,
как всем программным аспектам, так и параметрам разработчиков игр.
3.3 Планирование разработки и оценка бюджета
Управление проектами – область деятельности, в ходе которой
определяются и достигаются цели проекта при балансировании между
объемом работ, ресурсами (такими как люди, деньги, труд, материалы,
энергия, пространство и др.), временем, качеством и рисками. Ключевым
фактором успеха проектного управления является наличие четкого заранее
определенного плана.
46
В ходе планирования проекта было выделено 29 задач. Перечень задач
проекта, их виды, связи, длительность и предшественники приведены в
таблице 3.
Таблица 3 – Задачи проекта
№
1
Вид Задачи
Веха
12
Название
Начало реализации
проекта
Анализ предметной
области
Анализ классификаций
игр
Анализ сред разработки
игровых приложений
Анализ выбранной
методологии разработки
Анализ программных
средств
Анализ предметной
области завершен
Анализ требований
Анализ функциональных
требований
Анализ не
функциональных
требований
Анализ требований
завершен
Проектирование
13
Постановка задачи
Задача
11
2
14
Проектирование
художественных
объектов
Проектирование
интерфейса
Проектирование
завершено
Реализация
Задача
13
2
Задача
14
3
Веха
16
–
2
3
4
5
6
7
8
9
10
11
15
16
17
Предшественники
Фаза
Длительность
–
–
Задача
2
1
Задача
3
3
Задача
4
1
Задача
5
1
Веха
6
–
Фаза
Задача
7
–
3
Задача
9
3
Веха
10,
–
Фаза
–
Фаза
–
Задача
17НН
6
19
Реализация
художественных
объектов
Реализация интерфейса
Задача
19
3
20
Реализация завершена
Веха
20
–
21
Контроль качества ПО
Фаза
18
–
47
Продолжение таблицы 3
№
22
23
24
25
26
27
38
29
Название
Функциональное
тестирование
Модульное тестирование
Оценка качества ПО
Контроль качества
завершен
Завершение проекта
Составление
программной
документации
Проект завершен
Конец проекта
Вид Задачи
Задача
Предшественники
22
Длительность
20
Задача
Задача
Веха
24
12
26
17
12
–
Фаза
Задача
27
–
23
Веха
Веха
–
–
Определим необходимые ресурсы для выполнения каждой из задач
данного проекта. Ресурсы и затраты приведены в таблице 4.
Таблица 4 – Ресурсы проекта
Название
ресурса
Программист1
Программист2
Аналитик
Тестировщик
Художник
Компьютер
Принтер
Бумага
Интернет
Тип
Т
Т
Т
Т
Т
М
М
М
З
Затраты
Таблица
норм
А
А
А
А
А
А
А
А
Станд.
ставка
20000 р./мес
20000 р./мес
15000 р./мес
13000 р./мес
18000 р./мес
15000
3000
400
Затраты
на исп.
Ставка сверхур.
–
–
–
–
–
–
–
–
–
250р./ч
250р./ч
400р./ч
400р./ч
450р./ч
Распределение ресурсов по задачам приведено в таблице 5.
Таблица 5 – Распределение ресурсов по задачам
Название
Ресурс
Единицы (затраты)
Начало реализации
проекта
Компьютер,
Принтер,
Бумага,
Интернет
Аналитик
1 штуки
1 штука
1 пачка
Аналитик
100
Анализ классификации
игр
Анализ сред разработки
игровых приложений
100
Таблица норм
затрат
А
А
А
1000
А
А
А
48
Продолжение таблицы 5
Название
Ресурс
Единицы (затраты)
Анализ выбранной
методологии разработки
Анализ программных
средств
Анализ функциональных
требований
Анализ не
функциональных
требований
Проектирование
художественных
объектов
Проектирование
интерфейса
Реализация
художественных
объектов
Реализация интерфейса
Аналитик
100
Аналитик
100
Аналитик
Программист1
Аналитик
100
100
100
Таблица норм
затрат
А
А
А
А
А
А
А
Художник
100
А
Художник
Программист1
Художник
Программист1
100
100
100
100
А
А
А
А
Художник
Программист1
Тестировщик
100
100
100
А
А
А
Программист2
Тестировщик
Программист2
Аналитик
Программист1
Программист2
100
100
100
100
100
100
А
А
А
А
А
А
Функциональное
тестирование
Модульное тестирование
Оценка качества ПО
Составление
программной
документации
Введем ресурсы в наш проект. Результаты приведены на рисунке 18.
Рисунок 18 – Ресурсы проекта
49
Создадим задачи и закрепим за ними соответствующие ресурсы.
Результаты выполнения приведены на рисунке 19.
Рисунок 19 – Диаграмма Ганта
Наглядно составленный план можно представить в виде сетевого
графика. При этом Microsoft Project предоставляет возможность отобразить
на сетевом графике критический путь [18]. Сетевой график представлен на
рисунке 20.
50
Рисунок 20 – Сетевой график
Графики загрузки трудовых ресурсов программиста 1, программиста 2,
аналитика, художника и тестировщика представлены на рисунках 21 – 25.
соответственно.
Рисунок 21 – График загрузки Программиста 1
51
Рисунок 22 – График загрузки Программиста 2
Рисунок 23 – График загрузки Аналитика
52
Рисунок 24 – График загрузки Тестировщика
Рисунок 25 – График загрузки Художника
53
Также Microsoft Project предоставляет возможности по составлению
разного рода отчетов. Наибольший интерес представляют отчеты по затратам
и сводка по проекту. Отчет по затратам позволяет определить, какие этапы
разработки потребовали наибольшего объема денежных средств. Сводка по
проекту дает возможность отобразить прогресс и общую длительность
проекта. Отчет по затратам на задачи проекта приведен на рисунке 26, а
общая сводка по проекту – на рисунке 27.
Рисунок 26 – Отчет по затратам
54
Рисунок 27 – Сводка по проекту
Исходя из построенного отчета по затратам следует, что общая
стоимость разработки собственного компьютерного учебного курса с
использованием анимационных приложений, составляет 212 300,00 рублей.
Общая сводка по проекту позволяет отобразить общую длительность
проекта, а также процент завершения проекта. В данном случае длительность
проекта составила 100 дней, было выполнено 29 задача, а сам проект
выполнен на 100%.
55
4 Реализация
4.1 Реализация программного игрового приложения
Реализованная
структура
программного
приложения
полностью
соответствует структуре, определенной на этапе анализа. Диаграмма
компонентов системы приведена на рисунке 18.
Рисунок 28 – Диаграмма компонентов игрового приложения.
В таблице 5 приведено описание основных компонентов программного
игрового приложения.
56
Таблица 3 – Описание компонентов игрового приложения
Компонент
Назначение
iTween
Библиотека пустых переменных, необходимых для
создания пространства, описания добавленных в нее
объектов
MxLightSprite
Создает 2D игровое пространство, камеру, работающую с
ним
MxSlotMachine
Основополагающий класс, описывающий работу
автомата, его логику и вывод на экран
MxSpinTextures Описывает соединения художественных объектов,
добавленных в Unity, с соответствующими им
переменными в языке программирования C#
MxSplashScreen Запускает заставку, описывает ее плавное появление и
угасание
MxUtils
Отвечает за соотношение сторон в пикселях (расширение
экрана), введенное в первом окне игры
Для наглядной демонстрации взаимодействия компонентов, была
построена, схема веб-узла, частично представленная на рисунке 18.
На схеме веб-узла видно, что тематические разделы изолированы друг
от друга, но внутри этих разделов реализована навигация, позволяющая
изучить весь раздел, не обращаясь к оглавлению.
4.2 Реализация графических объектов
Для создания полноценного графического интерфейса недостаточно
обыкновенных
форм,
поэтому
было
принято
решения
создания
художественных объектов игры в соответствии со стилистикой игры.
Используемые кнопки, объекты барабана и другое представлены на
рисунках 19-32.
57
Рисунок 29 – Кнопка «+1»
Рисунок 30 – Кнопка «+3»
Рисунок 31 – Кнопка «ПУСК»
Рисунок 32 – Кнопка «ТАБЛО»
Рисунок 33 – Кнопка «Попробовать еще»
58
Рисунок 34 – Изображение на барабане «Аванс»
Рисунок 35 – Изображение на барабане «Зарплата»
Рисунок 36 – Изображение на барабане «Премия»
Рисунок 37 – Изображение на барабане «Путевка в Сочи»
59
Рисунок 38 – Изображение на барабане «Шестеренки»
Рисунок 39 – Изображение на барабане «Веселый начальник»
Рисунок 40 – Изображение на барабане «Обед»
Рисунок 41 – Изображение лампочек
60
Игровое приложение помимо названия имеет свой собственную
иконку, оформленную в своей стилистике (рисунок 42).
Рисунок 42 – Иконка программного игрового приложения
Кнопки, представленные на рисунках 29-42, имеют три различных
состояния. Последнее состояние – обычное, т.е. так кнопка выглядит при
запуске игры. Среднее, черно-белое выполняется, когда сделана ставка и
запущен автомат, либо ставка равна максимуму. Первое выполняется, когда
игрок нажимает на кнопку. Кнопка «Попробовать еще» (рисунок 23) схожа
по свойствам с предыдущими, но имеет только 2 состояния.
Далее показаны художественные объекты (рисунки 24-30), которые
имеют так же три состояния. Первое из них, размытое, подключается при
запуске движения барабанов. Следующее, обведенное желтым контуром,
появляется на экране при выпадении выигрышной комбинации. Она
указывает, какие именно объекты принесли выигрыш в данный ход.
Последнее, обычное, такое состояние имеют объекты без каких-либо
действий над ними.
На рисунке 31 представлены примеры некоторых из имеющихся
объектов
мигающих
приложения.
лампочек,
дополняющих
интерфейс
игрового
61
62
5 Контроль качества программного обеспечения
Тестирование
–
этап
разработки
программного
обеспечения,
позволяющий выявить ситуации, в которых поведение программы не
соответствует спецификации [16]. В данной выпускной квалификационной
работы были выбраны две методологии тестирования: функциональное и
модульное.
5.1 Функциональное тестирование
Функциональное
тестирование
предполагает
составление
плана
тестирование, который строится на основе вариантов использования и
включает в себя описание тестов и их результаты [17].
Функциональное тестирование позволяет оценить работоспособность
каждой
из
функций
разработанного
программного
обеспечения,
не
заглядывая в особенности реализации, то есть фактически производится
тестирование методом черного ящика. План тестирования приведен в
таблице 13.
Таблица 4  План тестирования
№
1
Вариант использования
-
Тест
Запуск начального окна
2
Выбрать параметры графики
3
Выбрать расширение
экрана
Выбрать качество текстур
4
Выбрать дисплей
5
Выбрать, в каком режиме
запускать игру
Нажать на кнопку «Табло»
6
Посмотреть таблицу
выигрышных комбинаций
Просмотреть комбинации
7
8
Посмотреть текущий
результат
На главном окне под
барабаном представлены
цифровые числа,
показывающие выигрыш,
ставку и очки
Результаты
Тест выполнен
(рисунок В.1)
Тест выполнен
(рисунок В.2)
Тест выполнен
(рисунок В.3)
Тест выполнен
(рисунок В.4)
Тест выполнен
(рисунок В.5)
Тест выполнен
(рисунок В.6)
Тест выполнен
(рисунок В.7)
Тест выполнен
(рисунок В.8)
63
Продолжение таблицы 4
№
9
Вариант использования
Добавить одно очко
Увидеть отображение на
цифровом табло под
барабаном
Нажать на кнопку «Пуск»
9
10
11
12
Тест
Нажать на кнопку «+1»
Добавить три очка
Запустить автомат
нажатием кнопки «Пуск»
Нажать на кнопку «+3»
Увидеть отображение на
цифровом табло под
барабаном
Нажать на кнопку «Пуск»
13
14
Запустить автомат
нажатием кнопки «Пуск»
15
Результаты
Тест выполнен
(рисунок В.9)
Тест выполнен
(рисунок В.10)
Тест выполнен
(рисунок В.11)
Тест выполнен
(рисунок В.12)
Тест выполнен
(рисунок В.13)
Тест выполнен
(рисунок В.14)
Тест выполнен
(рисунок В.11)
Тест выполнен
(рисунок В.12)
На основе анализа результатов тестирования можно сделать вывод о
том, что разработанное программное игровое приложение с использованием
мультиплатфоременной среды, работает корректно.
5.2 Модульное тестирование
Модульное или unit-тестирование позволяет провести более глубокое
исследование и анализ работоспособности отдельных модулей программного
обеспечения.
При
разработке
программный
модуль
FlexUnit,
модульных
результаты
приложения представлены на рисунке 33.
тестов
был
использован
тестирования
игрового
64
Рисунок 43 – Результаты модульного тестирования
5.3 Метрики кода
Пользователю предоставляется возможность автоматического подсчета
данных с помощью специальных возможностей C#. Результатом такой
функции является таблица со значениями (рисунок 33).
В первом столбце данного анализа метрик указан индекс удобства
поддержки, который оценивает простоту обслуживания кода (большие
значения предпочтительнее), во втором – сложность организации циклов,
которая определяет число ветвей (меньшее значение предпочтительнее). В
третьем показана глубина наследования, определяющая число уровней в
иерархии наследования объекта (желательнее меньшее значение). В
четвертом – определение классов, показывает число классов, имеющих
наследников (меньшее значение предпочтительнее). И в пятом показано
число количества строк кода.
65
Рисунок 44 – Анализ метрик кода, построенных автоматически в C#
5.4 Метрика Чепина
Метрика Чепина: суть метода состоит в оценке информационной
прочности отдельно взятого программного модуля с помощью анализа
характера использования переменных из списка ввода-вывода.
Все
множество
переменных,
составляющих
список
ввода-вывода,
разбивается на 4 функциональные группы:
1. P - вводимые переменные для расчетов и для обеспечения вывода;
2. M - модифицируемые, или создаваемые внутри программы
переменные;
3.
C - переменные, участвующие в управлении работой программного
модуля (управляющие переменные);
4. T - не используемые в программе ("паразитные") переменные.
Поскольку каждая переменная может выполнять одновременно
несколько функций, необходимо учитывать ее в каждой соответствующей
функциональной группе.
Метрика Чепина:
Q = a1*P + a2*M + a3*C + a4*T,
где a1, a2, a3, a4 - весовые коэффициенты.
Весовые коэффициенты использованы для отражения различного
влияния на сложность программы каждой функциональной группы. По
мнению автора метрики, наибольший вес, равный 3, имеет функциональная
группа C, так как она влияет на поток управления программы. Весовые
коэффициенты остальных групп распределяются следующим образом: a1=1,
a2=2, a4=0.5. Весовой коэффициент группы T не равен 0, поскольку
"паразитные" переменные не увеличивают сложность потока данных
программы, но иногда затрудняют ее понимание. С учетом весовых
коэффициентов:
Q = P + 2M + 3C + 0.5T.
66
Метрика Спена основывается на локализации обращений к данным
внутри каждой программной секции. Спен - это число утверждений,
содержащих данный идентификатор, между его первым и последним
появлением
в
тексте
программы.
Следовательно,
идентификатор,
появившийся n раз, имеет спен, равный n-1. При большом спене усложняется
тестирование и отладка.
Произведем расчет по формулам просмотренного выше метода:
Q = a1*P+a2*M+a3*C+a4*T
a1 = 1; a2 = 2; a3 = 3; a4 = 0.5
P (обычные переменные) = 1
M (модифицируемые переменные) = 3
C (управляющие переменные) = 6
T (неиспользуемые переменные) = 7
Q = 1*1+2*3+3*6+0,5*7 = 37,5
Проанализируем полученные результаты. Комплексный показатель
качества кода «Индекс удобства поддержки» может принимать значения от 0
до 100 и показывает относительную сложность поддержки кода. В данном
примере комплексный показатель находится на уровне в 61%, что
свидетельствует об относительной простоте поддержки исходного кода.
Структурная сложность кода «Сложность организации циклов», в два
раза выше желаемого значения в 5 единиц, однако это охарактеризовано
спецификой данного класса, т.е. в большинстве его функций используются
циклы и условные операторы, для обеспечения корректного моделирования
накопителя, являющегося важной частью игрового приложения. Количество
строк кода достаточно мало, что позволяет быстро разобраться в способе
организации данного класса.
67
Заключение
В ходе выполнения выпускной квалификационной работы было
разработано
программное
игровое
приложение
с
использованием
мультиплатформенной среды Unity.
Был проведен анализ существующих игровых приложений, схожих с
созданным, и поиск готовых решений для его построения. Также было
проведено
проектирование,
позволившее
определить
окончательную
структуру игрового приложения, а затем был спроектирован простой и
удобный пользовательский интерфейс.
Программная игра реализована средствами мультиплатформенного
движка Unity, языка программирования C#, а графические объекты
рисовались в графическом редакторе Adobe Photoshop CC.
На этапе контроля качества программного обеспечения было
проведено функциональное тестирование. На основе анализа результатов
тестирования можно сделать вывод о том, что разработанное игровое
приложение и все входящие в его состав объекты работают корректно.
Также был проведен анализ качества программного кода, показавший
хороший результат.
В ходе выполнения работы также было выполнено планирование
проекта. Длительность выполнения проекта равна 100 дням, а бюджет равен
212 300,00 рублей. Оценка сроков и бюджета говорит о том, что данная
разработка экономически выгодна.
Таким образом, в результате выполнения выпускной
квалификационной работы
были
разработаны
программные
отвечающие всем требованиям технического задания.
средства,
68
Список использованных источников
1.
Могилев, А.В. Информатика. / Н.И. Пак, Е.К. Хённер – М.:
Академия, 2004. – 848 c.
2.
Шеллинг, Т. Стратегия конфликта. / М.: ИРИСЭН, 2007. – 376 с.
3.
Диксит, А. Теория игр: искусство стратегического мышления в
бизнесе и жизни/ Б. Нейлбафф, – М.: Манн, Иванов и Фербер, 2014. – 464 с.
4.
Мураховский, В.И. Компьютерная графика – М.: АСТ-ПРЕСС
2002 – 638 с.
5.
Корабельникова, Г.Б. Adobe Photoshop в теории и на практике. /
Ю.А.Гурский – М.: Новое Знание, 2002. – 528 с.
6.
Макарова, Н. В. Информатика / Л.А. Матвеев, В.Л. Бройдо – М.:
Финансы и Статистика, 2002. – 768 с.
7.
Пауэль, Т.А. Справочник программиста. / Т.А. Пауэль, Д.
Уитворт – М.: АСТ, 2005. – 470 с.
8.
Симонович, С.В. Практическая информатика. / Г.А. Евсеев – М.:
АСТ-ПРЕСС КНИГА, 2005. – 480 с.
9.
Морелос-Сарагоса,
Р.
Искусство
помехоустойчивого
кодирования. Методы, алгоритмы, применение – М.: ТЕХНОСФЕРА, 2006.
– 320 с.
10.
Блэкманн, С. Моделирование с помощью Unity – М.: АСТ-
ПРЕСС, 2011. – 147 с.
11.
Голдстон, В. Предметы первой необходимости для создания игр
на Unity – М.: Академия, 2009 – 201 с.
12.
Игошев, Б. ЭВТ: знакомимся, делаем, играем. / М. Галагузова,
Д. Комский – М.:Молодая гвардия, 1989. – 156 с.
13.
Лысовский, А. Как сибирские программисты заставили весь
мир играть. / А.Егошин, А.Бочкарев - М.:Русский Репортер №10, 2012. - 5661с.
69
14.
Мильчин, К. Школа доктора Пакмэна. Чему нас научили
компьютерные игры - М.: "Русский Репортер" №38 2013 - 32с.
15.
Вандер, Вер Э. Flash CS3. Недостающее руководство. / Вер Э
Вандер – СПб.: Проспект Науки, 2008 – 354 с.
16.
Слепченко, К.С. Flash CC на примерах. / К.С. Слепченко –
СПб.: Проспект Науки, 2012 – 432 с.
17.
Мук, К. ActionScript 3.0 для Flash. Подробное руководство. –
СПб.: Проспект Науки, 2009 – 440 с.
18.
Лотт, Д. ActionScript 3.0. Сборник рецептов / Д. Лотт, Д. Шалл,
К. Питерс – СПб.: Проспект Науки, 2008 –320 с.
19.
Гриффит, Э. Лучшие бесплатные программы/ Э. Гриффит// – М.:
PC Magazine №5 2008. - 94-103 с.
20.
Скирюк, Д. Рискни костями. История игровых кубиков/ Д.
Скирюк// – М.: Мир фантастики №143: Июль 2015. - 8-15с.
21.
Якутенко, И. Математика обмана/ И. Якутенко// – М.: Вокруг
света №11 2014. - 170-179 с.
22.
Соловов, А.В. Электронное обучение/ А.В. Соловов// – М.:
Высшее образование в России №11 2015. - 66-75с.
23.
Лесничая, И.Г. Информатика и информационные технологии /
И.В. Миссинг, Ю.Д. Романова, В.И. Шестаков – М.: EKSMO EDUCATION
2007. – 157 c.
70
Download