Разработка Игры Дипломная Работа

Разработка Игры Дипломная Работа



>>> ПОДРОБНЕЕ ЖМИТЕ ЗДЕСЬ <<<






























Разработка Игры Дипломная Работа
Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Компьютерная игра - компьютерная программа,
служащая для организации игрового процесса (геймплея), связи с партнёрами по
игре, или сама выступающая в качестве партнёра.


Компьютерные игры часто создаются на основе
фильмов и книг; есть и обратные случаи. С 2011 года компьютерные игры
официально признаны в США отдельным видом искусства. Компьютерные игры оказали
столь существенное влияние на общество, что в информационных технологиях
отмечена устойчивая тенденция к геймификации для неигрового прикладного
программного обеспечения.


Первые примитивные компьютерные игры были
разработаны в 1950-х и 1960-х годах. Они работали на таких платформах, как
университетские мейнфреймы и компьютеры EDSAC. В 1952 году появилась программа
«OXO», имитирующая игру «крестики-нолики», созданная А. С. Дугласом как часть
его докторской диссертации в Кембриджском Университете. В 1958 году Уильям
Хигинботам в Брукхейвенской национальной лаборатории для развлечения
посетителей создал «Tennis for Two» (с англ. - Теннис для двоих). В 1962 году
Стив Рассел разработал игру «Spacewar!» для миникомпьютера PDP-1 в
Массачусетском технологическом институте, которая быстро распространилась по
всем университетам США. В 1969 году Ральф Баер, который позже стал известен как
«Король видеоигр», запросил патент на раннюю версию игровой консоли «Television
Gaming and Training Apparatus». В 1967 году Баер создал игру пинг-понг, похожую
на «Теннис для двоих».


Данная работа посвящена разработке технической
демонстрационной версии трехмерной компьютерной игры «After
Reset». Проект относится
к жанру ролевых компьютерных игр. Компьютерная ролевая игра (англ. Computer
Role-Playing Game (CRPG или RPG)) - жанр компьютерных игр, основанный на
элементах игрового процесса традиционных настольных ролевых игр.







Разработка компьютерных игр - процесс создания
компьютерных игр (видеоигр). Разработкой видеоигр занимается разработчик,
который может быть представлен как одним человеком, так и фирмой. Обычно
крупномасштабные коммерческие игры разрабатываются командами разработчиков в
пределах компании, специализирующейся на играх для персонального компьютера или
консолей. Как правило, разработку финансирует другая, более крупная
компания-издатель, которая по окончанию разработки занимается изданием игры и
связанными с ним тратами. Реже компании-издатели могут содержать внутренние
команды разработчиков, или же компания-разработчик может разрабатывать игры за
свой счет и распространять их без участия издателей, например, средствами
цифровой дистрибуции (инди-игры).


Разработка наиболее крупнобюджетных игр
(«AAA-игры») может стоить десятки миллионов долларов США, причем в течение
последних десятилетий эти бюджеты непрерывно росли, как и численность команд
разработчиков и сроки разработки. Средний бюджет ААА-проекта, как правило,
выпускаемых крупнейшими компаниями-издателями, продающихся на физических
носителях и нередко входящих в состав известной серии из нескольких игр -
колеблется от 18 до 24 млн. долл. Крупнобюджетная игра для двух платформ - Xbox
360 и PlayStation 3 - обходилась в 2012 году в среднем в 20 миллионов долларов,
и для того, чтобы она окупилась, нужно было продать около двух миллионов копий.


Благодаря развитию рынка инди-игр, многие
разработчики компьютерных игр получили возможность работать над своими игровыми
проектами без финансовых и юридических обязательств перед
компаниями-издателями. Инди-игры (англ. Indie games, от англ. independent video
games - «независимые компьютерные игры») - это компьютерные игры, созданные
отдельными разработчиками или небольшими коллективами без финансовой поддержки
издателя компьютерных игр. Распространение осуществляется посредством каналов
цифровой дистрибуции. Масштаб явлений, связанных с инди-играми, ощутимо
возрастает со второй половины 2000-х годов, в основном ввиду развития новых
способов онлайн-дистрибуции и средств разработки.


Данный проект относится к инди-разработке и
развивается только за счет средств его разработчиков. Благодаря развитию ПО
разработки компьютерных игр, команде разработчиков не требуется тратить
несколько лет на разработку игрового движка. Это позволяет сразу же приступать
к непосредственной работе над игровым проектом и значительно сокращает время
его разработки.




Задачей данной работы является разработка
технической демонстрационной версии трехмерной компьютерной ролевой игры «After
Reset».


Техническая демонстрация, техническая
демонстрационная версия, техно-демоверсия (англ. tech demo) - прототип,
приближенный пример или неполная версия продукта, которая создана с целью
продемонстрировать идею, производительность, метод или особенности какого-либо
программного продукта. Технические демонстрационные версии могут использоваться
как демонстрации для инвесторов, партнёров, журналистов или даже потенциальных
потребителей для того, чтобы убедить их в жизнеспособности данного продукта,
материального товара или идеи.


Компьютерные технические демонстрации не должны
путаться с демо-сценами, которые, хотя и демонстрируют новые программные
методики, на самом деле являются отдельной формой компьютерного искусства.
Техническая демонстрационная версия отображает не только внешние свойства
проекта, но и его внутреннюю архитектуру, и механизмы взаимодействия.




Основным средством разработки данного проекта
является игровой движок Unity.
Unity - это
мультиплатформенный инструмент для разработки двух- и трёхмерных приложений и
игр, работающий под операционными системами Windows
и OS X.
Созданные с помощью Unity
приложения работают под операционными системами Windows,
OS X,
Windows Phone,
Android, Apple
iOS, Linux,
а также на игровых приставках Wii,
PlayStation 3 и Xbox
360. Есть возможность создавать интернет-приложения с помощью специального
подключаемого модуля к браузеру Unity.
Приложения, созданные с помощью Unity,
поддерживают DirectX
и OpenGL.


–  Сценарии на C#,
JavaScript (модификация) и Boo
(диалект языка Python
со строгой типизацией для платформы.NET);


–       Игровой движок полностью связан со
средой разработки. Это позволяет прямо в редакторе испытывать игру;


–       Работа с ресурсами возможна через
простой Drag&Drop.
Интерфейс редактора настраиваемый;


–       Осуществлена система наследования
объектов;


–       Поддержка импорта из очень большого
количества форматов;


–       Есть решение для совместной разработки -
Version Control;


–       Также можно использовать подходящий
пользователю способ контроля версий. К примеру, Tortoise
SVN или Source
Gear.


В качестве целевой платформы разработки выбраны
операционные системы семейства MS
Windows (XP/Vista/7/8).
Основным языком программирования является C#
с платформой.NET 2.0.
Написание простых скриптов выполняется на JavaScript,
в редких случаях - Boo.
В проекте используется графическая библиотека DirectX;
основным шейдерным языков является Cg
(англ. C for Graphics), разработанный компанией NVidia.







Проект «After
Reset» относится к жанру
ролевых компьютерных игр. Компьютерная ролевая игра (англ. Computer
Role-Playing Game (CRPG или RPG)) - жанр компьютерных игр, основанный на
элементах игрового процесса традиционных настольных ролевых игр.


В ролевой игре игрок управляет одним или
несколькими персонажами, каждый из которых описан набором численных
характеристик, списком способностей и умений; примерами таких характеристик
могут быть хит-поинты (англ. hit points, HP), показатели силы, ловкости,
защиты, уклонения, уровень развития того или иного навыка и т.п. В ходе игры
они могут меняться. Одним из характерных элементов игрового процесса является
повышение возможностей персонажей за счёт улучшения их параметров и изучения
новых способностей.


У жанра CRPG много общего с настольными ролевыми
играми наподобие Dungeons and Dragons - жаргон, сеттинги, геймплейная механика.
Обычно игрок управляет одним или несколькими главными героями («партией»), и
добивается победы, выполняя задания («квесты»), участвуя в тактических боях и
доходя до самого конца сюжета. Ключевая особенность CRPG в том, что персонажи
растут в способностях, и этот рост зачастую контролируется игроком. CRPG, за
исключением поджанра «action RPG», редко полагаются на физическую координацию и
реакцию.обычно полагаются на продуманный сюжет и игровой мир. Сюжет обычно
делится на серию заданий. Игрок отдаёт персонажу команды, и он выполняет их в
соответствии с численными показателями, отвечающими за качество выполнения
команды. Когда персонаж набирает определённое количество очков опыта, он
получает очередной уровень, и эти показатели увеличиваются. часто предлагают
более сложное и динамичное взаимодействие игрока с компьютерными персонажами,
чем остальные жанры - это может обеспечиваться как развитым искусственным
интеллектом, так и жёстко запрограммированным поведением персонажей.


Механика данного игрового проекта основывается
на настольной ролевой игре Dungeons & Dragons редакции 3.5. & Dragons
(D&D, DnD; Подземелья и Драконы) - настольная ролевая игра в жанре фэнтези,
разработанная Гэри Гайгэксом и Дэйвом Арнесоном. Ранний успех Dungeons &
Dragons привёл к распространению схожих игровых систем. Несмотря на это,
D&D удерживает позиции лидера на рынке индустрии ролевых игр. В 1977 году
система была разделена на две ветви: более простая в освоении Dungeons &
Dragons (D&D) и более структурированная Advanced Dungeons & Dragons
(AD&D). В 1989 году было опубликовано второе издание AD&D. В 2000 году
первоначальная серия игр D&D была прервана, изданная третья редакция
AD&D с новой системой была переименована в D&D, которая легла в основу
d20 System. В 2008 году была опубликована четвёртая редакция. В настоящее время
идёт разработка пятой редакции.


Традиционно руководство игры или свод правил
включает в себя три книги: «Player’s Handbook» [2], «Dungeon Master’s Guide»
[3] и «Monster Manual» [4]. Данные книги содержат подробное описание игровой
механики данной ролевой системы, включая характеристики персонажей, боевую
систему, взаимодействие игроков и т.д.


В качестве примера рассмотрим характеристики
персонажа. Каждый персонаж обладает набором из 6 основных характеристик:


сила, определяет максимально допустимый вес
багажа, а также максимально возможный урон, наносимый голыми руками или оружием
ближнего боя;


ловкость, определяет координацию, скорость,
рефлексы и устойчивость персонажа, точность выстрелов из огнестрельного и
метательного оружия, а также вероятность уклонения от атак противников;


телосложение, определяет общее количество
здоровья персонажа, а также количество потребляемой воды и пищи;


восприятие, определяет сообразительность,
реакцию и находчивость персонажа, а также скорость его адаптации к окружающей
среде;


интеллект, определяет эрудированность и
умственные способности персонажа. Чем выше интеллект, тем больше навыков может
освоить персонаж.


Входными данными в компьютерной игре являются не
только действия пользователя (ввод с клавиатуры, нажатие кнопки мыши и т.д.),
но и текущее состояние игрового мира, т.к. игра - это цикл состояний игровой
модели мира, где каждая следующая итерация определяется событиями из предыдущих
итераций. Помимо действий игрока на игровой процесс оказывают влияние
искусственный интеллект, управляющий компьютерными персонажами, случайные
события, математический аппарат игровой механики. Основные используемые типы
данных приведены в таблице 2.1.




Движок Unity
имеет лицензию несвободного программного обеспечения с закрытым исходным кодом.
Все программирование выполняется с помощью сценариев (скриптов) [5]. В качестве
скриптовых языков на Unity
используются C#, JavaScript
и Boo. В каждый из
языков внесены модификации для поддержки полного функционала внутреннего
скриптового языка UnityScript.


Сценарии являются ясным, простым и быстрым
подходом программирования. Все три скриптовых языка используют платформу Open
Source.NET
(Mono).


Программирование на движке Unity
является объекто-ориентированным. Иерархия классов представлена на рисунке 3.1.




Рисунок 3.1 - Иерархия классов Unity3d





Все внутриигровые объекты (персонажи, предметы и
т.д.) являются экземплярами классов, описывающих их поведения. Все
внутриигровые события (эффекты, сцены и т.д.) определяются скриптами. Игровой
процесс складывается из совместной работы менеджеров, каждый из которых
отвечает за свою часть игрового процесса (геймплея):


GameManager,
игровой менеджер - отвечает за игровой цикл. Является связующим звеном между
отдельными элементами архитектуры игры;


InterfaceManager,
менеджер интерфейса - отвечает за интерфейс пользователя, включая графический
интерфейс и устройства ввода;


PlayerManager,
менеджер игрока - отвечает за главного персонажа игры, контролируемого
пользователем, его поведение и состояние;


UnitManager,
менеджер юнитов - отвечает за юнитов;


SceneManager,
менеджер уровней - отвечает за игровые уровни и т.д.


Все менеджеры реализованы на основе паттерна Singleton
(«одиночка») (см. Приложение А). Они имеют только один экземпляр и являются
общими для всей игровой системы. Обращение к ним происходит по типу.


Основные игровые объекты реализованы на основе
паттерна Finite State
Machine («конечный
автомат») (см. Приложение Б). Это позволяет легко контролировать состояние
игрового объекта и управлять его поведением.




Рисунок 3.2 - Конечный автомата для описания
поведения игрока





ПО Unity
является игровым движком с закрытым исходным кодом, вследствие чего весь
функционал реализуется с помощью скриптов. Любой скрипт должен быть наследован
от класса MonoBehaviour, после чего он может быть назначен конкретному
внутриигровому объекту. Шаблон скрипта на языке программирования C#
представлен в приложении В.


Компьютерная игра является сложной системой,
состоящей из отдельных подсистем, которые разрабатываются независимо, а затем
интегрируются в единую программную архитектуру. В данной работе проект можно
разбить на следующие подсистемы:


–       система графического интерфейса
пользователя;


–       система взаимодействия объектов;


–       и дополнительные системы управления
приложением.


Рассмотрим эти системы по-отдельности.


Поиск пути (англ. Pathfinding) - термин в
информатике и искусственном интеллекте, который означает определение
компьютерной программой наилучшего, оптимального маршрута между двумя точками.
Пример поиска пути представлен на рисунке 3.3.




Рисунок 3.3 - Пример расчета пути в двумерном
пространстве





Существует огромное множество алгоритмов поиска
пути. В данной работе поиск пути реализован с помощью алгоритма навигационных
сеток.


Навигационная сетка или Navmesh, является
абстрактной структурой данных, используемой в приложениях искусственного
интеллекта (далее ИИ), чтобы позволить агентам движения найти путь через
большие геометрически сложные трехмерные пространства. Объекты, которые не
являются статическими препятствиями в окружающей среде, воспринимаются ИИ как
динамические преграды. Это дает дополнительное преимущество данному подходу
решения задачи поиска пути в пространстве, т.к. агенты, имеющие доступ к
навигационной сетке не будут рассматривать эти препятствия во время построения
своей траектории движения. Метод навигационных сеток обеспечивает снижение
вычислительных затрат и делает обнаружение столкновений между агентами и
динамическими преградами менее затратным. Навигационные сетки обычно
реализуются в виде графов, открывая их использование большому числу алгоритмов,
определенных на этих структурах.


В отличие от классических решений задачи поиска
пути в навигационных сетках вместо того, чтобы представлять пространство как
ряд соединенных точек, создавать более точное представление конфигурационного
пространства ИИ через связный граф выпуклых многоугольников. На каждом узле
(полигоне) заранее известно, куда агент движения может переместиться из одной
точки этого узла к любой другой точке этого же узла из-за его выпуклости. Таким
образом, задача поиска пути через граф упрощается до поиска пути вдоль связного
графа узлов.


Путь представляется серией многоугольников,
которые агент должен пройти, чтобы достичь цели. Вместо того чтобы проверять
каждую точку вдоль пути, ИИ имеет всю информацию, связанную с интерфейсом между
узлами навигационной сетки. Это позволяет получить точный и гораздо более
естественный вид движения.


На рисунке 3.4 изображен пример расчета пути на
конфигурационном пространстве, представленным навигационной сеткой.




Рисунок 3.4 - Пример поиска пути на основе
навигационной сетки




Следующая рассматриваемая система - это
графический интерфейс пользователя.


Графический интерфейс пользователя, графический
пользовательский интерфейс (англ. Graphical user interface, GUI) -
разновидность пользовательского интерфейса, в котором элементы интерфейса
(меню, кнопки, значки, списки и т. п.), представленные пользователю на дисплее,
исполнены в виде графических изображений.


В отличие от интерфейса командной строки, в GUI
пользователь имеет произвольный доступ (с помощью устройств ввода - клавиатуры,
мыши, джойстика и т. п.) ко всем видимым экранным объектам (элементам
интерфейса) и осуществляет непосредственное манипулирование ими. Чаще всего
элементы интерфейса в GUI реализованы на основе метафор и отображают их
назначение и свойства, что облегчает понимание и освоение программ
неподготовленными пользователями. Графический интерфейс пользователя является
частью пользовательского интерфейса и определяет взаимодействие с пользователем
на уровне визуализированной информации.





На рисунке 3.5 изображено главное меню
приложения. Графический интерфейс пользователя является верхним слоем графической
системы, что позволяет создавать на его фоне полноценные трехмерные сцены. На
рисунке такой сценой является цепочка ДНК.


Одна из важнейших систем, без которых невозможно
представить игровой цикл, - это система взаимодействия объектов.


Взаимодействие объектов -
процесс воздействия объектов друг на друга. Данный процесс
описываем механику игры. К системе взаимодействия объектов можно отнести:


–       интерактивные объекты (двери, пульты
управления и т.д.);


–       управление персонажем с помощью мыши/клавиатуры;


–       коллизию объектов, обладающих
физическими свойствами;


–       звуковую подсистему (звуки шагов,
выстрелов и т.д.);


–       искусственный интеллект компьютерных
персонажей (ботов).


Все эти элементы являются главными составляющими
игрового цикла.


На рисунке 3.6 представлен снимок игрового
процесса. На нем представлено взаимодействие персонажа, управляемого
пользователем, и бота, контролируемого искусственным интеллектом. Игроку
необходимо навести лазерный прицел на бота и уничтожить его, а бот пытается нанести
урон главному персонажу и в тоже время уклонится от атак игрока.




Все игровые подсистемы полностью реализованы и
успешно интегрированы в единую игровую систему, которая позволяет запустить
игровой процесс.







4. Архитектура системы и иерархия классов




В качестве основной парадигмы программирования
используется объектно-ориентированный подход [6]. ООП ориентировано на
разработку крупных программных комплексов. Объектно-ориентированное проектирование
состоит в описании структуры и поведения проектируемой системы, то есть,
фактически, в ответе на два основных вопроса:
–       в чём состоит ответственность каждой из
частей.


Выделение частей производится таким образом,
чтобы каждая имела минимальный по объёму и точно определённый набор выполняемых
функций (обязанностей), и при этом взаимодействовала с другими частями как
можно меньше.


Дальнейшее уточнение приводит к выделению более
мелких фрагментов описания. По мере детализации описания и определения
ответственности выявляются данные, которые необходимо хранить, наличие близких
по поведению агентов, которые становятся кандидатами на реализацию в виде
классов с общими предками. После выделения компонентов и определения
интерфейсов между ними реализация каждого компонента может проводиться
практически независимо от остальных (разумеется, при соблюдении соответствующей
технологической дисциплины).


Большое значение имеет правильное построение
иерархии классов. Иерархии классов подсистем представлены в приложении Г. Одна
из известных проблем больших систем, построенных по ООП-технологии - так
называемая проблема хрупкости базового класса. Она состоит в том, что на
поздних этапах разработки, когда иерархия классов построена и на её основе
разработано большое количество кода, оказывается трудно или даже невозможно
внести какие-либо изменения в код базовых классов иерархии (от которых
порождены все или многие работающие в системе классы). Даже если вносимые
изменения не затронут интерфейс базового класса, изменение его поведения может
непредсказуемым образом отразиться на классах-потомках. В случае крупной
системы разработчик базового класса просто не в состоянии предугадать
последствия изменений, он даже не знает о том, как именно базовый класс
используется и от каких особенностей его поведения зависит корректность работы
классов-потомков.


Совокупность всех подсистем, реализованных с
помощью ООП и представленных в виде иерархии классов, определяют внутреннюю
структуру ПП. Архитектура данного проекта отображена в приложении Д.




Рисунок 4.1 - Прототип архитектуры игрового
движка




На рисунке 4.1 изображен прототип архитектуры
игрового движка, на основе которого разрабатывалась данная система. Сплошной
стрелкой отображена иерархия подсистем, а пунктирной - интерфейс между
системами.







Тестирование программного обеспечения - процесс
исследования, испытания программного продукта, имеющий две различные цели:


–  убедиться, что программа соответствует
требованиям;


–       выявить ситуации, в которых поведение
программы является неправильным, нежелательным.


Существует несколько уровней тестирования
программного обеспечения:


–  модульное тестирование (юнит-тестирование) -
тестируется минимально возможный для тестирования компонент, например,
отдельный класс или функция;


–       интеграционное тестирование -
тестируются интерфейсы между компонентами, подсистемами или системами;


–       системное тестирование - тестируется
интегрированная система на её соответствие требованиям;


–       альфа-тестирование - имитация реальной
работы с системой штатными разработчиками, либо реальная работа с системой
потенциальными пользователями/заказчиком;


–       Бета-тестирование - в некоторых случаях
выполняется распространение предварительной версии для некоторой большей группы
лиц с тем, чтобы убедиться, что продукт содержит достаточно мало ошибок.


Проект прошел все стадии тестирования на
различных версиях операционных систем семейства Windows
(XP, 7, 8) с
различными конфигурациями оборудования (тактовая частота процессора, количество
ядер, разрядность, объем оперативной и видео памяти и т.д.). Системные
требования к программе соответствуют заявленным в техническом задании. Все
найденные ошибки исправлены, большинство алгоритмов было оптимизировано, что
позволило увеличить скорость работы приложения и его стабильность.





Рисунок 5.1 - Статистика ресурсопотребления ЭВМ
при работе системы




На рисунке 5.1 представлена информация о
требуемых ресурсах для работы системы:


–  CPU
Usage - использование
ЦПУ ЭВМ;


–       GPU
Usage - использование
ГПУ ЭВМ;


–       Rendering
- построение кадров, выводимых на монитор ЭВМ;


–       Memory - использование
ПЗУ ЭВМ;


–       Audio
- использование аудио подсистемы ЭВМ;


–       дополнительная информация (количество
обращений к видеокарте, количество полигонов на сцене, разрешение экрана и
т.д.).







Дипломная работа «Техническая демонстрационная
версия трехмерной компьютерной игры «After
Reset»:


·  
является
комплексным проектом, охватывающим различные аспекты разработки ПО;


·  
содержит
все основные аспекты компьютерной ролевой игры;


·  
является
продуктом сферы компьютерных развлечений.


2. Требования к программе или программному
изделию


.1 Требования к функциональным характеристикам


Данный проект является компьютерной игрой,
вследствие чего предусматривается одна категория пользователей - игроки. В
процессе работы приложения пользователь является непосредственным участник
игрового процесса и оказывает непосредственное влияние на него.


Программы должна обладать следующим
функционалом:


)        выбор полноэкранного или оконного
режима;


2)      регулировка громкости музыки;


)        регулировка громкости внутриигровых
звуков;


2)      система взаимодействия игровых объектов;


)   переходные сцены (вступительная, финальная,
экран загрузки);


)        графический интерфейс пользователя.


2.2 Требования к входным и выходным данным


Входными данными в компьютерной игре являются
игровые настройки пользователя (разрешение экрана, громкость звуков, качество
графики и т.д.), а также непосредственное управление во время игрового процесса
с помощью компьютерной мыши и клавиатуры. Проект относится к играм в реальном
времени, где в отличие от пошаговых - действия игрока незамедлительно оказывают
влияние на игровой процесс.



Диплом на тему " Разработка компьютерных игр " скачать бесплатно
Разработка игры и защита диплома или «Как я убил двух...» / Хабр
Разработка компьютерной игры
Исследовательская работа на тему " Разработка компьютерных игр "
Дипломный проект. Моя первая игра - Battlecruiser-Survival | Пикабу
Реферат Планировка Детского Отделения
Рабочая Программа Диссертации По Кормодробилка Для Рыб
Сочинение О Зоопарке 5 Класс
Бронхиальная Астма Реферат По Терапии
Цель И Смысл Жизни Реферат

Report Page