Дипломная работа: Разработка многопользовательской ролевой онлайн игры World of Magic

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Оглавление

  • Введение
    • 1. Аналитический обзор
      • 1.1 Анализ предметной области
      • 1.2 Анализ требований к разрабатываемой игре
      • 2. Проектирование
      • 2.1 Разработка архитектуры
      • 2.2 Анализ и выбор средств разработки
      • 2.3 Проектирование схемы базы данных
      • 2.4 Проектирование GUI
      • 3. Реализация
      • 3.1 Серверное приложение
      • 3.2 Клиентское приложение
      • 4. Тестирование
      • 4.1 Функциональное тестирование
      • 4.2 Нагрузочное тестирование
      • 4.3 Тестирование самовосстановления системы после внепланового отключения
    • Заключение7
    • Список используемых источников
    • Приложение 1 Блок-схема функции server_accept
    • Приложение 2 Файл Elements.h
    • Введение
    • Актуальность
    • В наше время почти у каждого второго человека есть компьютер, они являются неотъемлемой частью жизни. Пару десятилетий назад не каждый мог себе позволить ЭВМ. Но те времена прошли. Сейчас дети с раннего возраста пользуются смартфонами и планшетами, а иногда даже компьютерами. Более взрослые люди уже умеют пользоваться этими устройствами для работы или отдыха. С каждым годов ЭВМ наращивают мощности и становятся более доступными. С развитием техники идёт и развитие игровой индустрии, чем мощнее компьютеры, тем красочнее и производительнее игры. Именно из-за этого разработка игр для телефонов и компьютеров в наше время очень хорошо оплачивается. Актуальность разработки можно подтвердить статистикой приведённой на сайте App2Top [1]. Эксперты компании считают, что прибыль с игр по итогу 2018 года составят $138 млрд. Это на 13% больше, чем индустрия заработала в прошлом году. Доля прибыли компьютерных игр составляет 24%.
    • MMO RPG - это жанр игр, предполагающий взаимодействие пользователей между собой и исполнение каких-то ролей. Это как торговец, солдат и врач. Один лечит, другой калечит, а третий наживается.
    • Цели и задачи
    • Целью данной работы является разработка игры в жанре MMORPG для компьютера. Для достижения поставленной цели необходимо решить следующие задачи:
    • 1) провести анализ аналогичных игровых приложений и анализ существующих решений;
    • 2) спроектировать приложение;
    • 3) реализовать игру;
    • 4) протестировать игровое приложение.
    • Структура и объём работы
    • Работа состоит из введения, 4 глав, заключения, списка используемых источников и приложений. Объем работы составляет 42 страницы, объем списка используемых источников - 12 источников, объем приложения - 3 страница. игра приложение тестирование игровой
    • Содержание работы
    • В первой главе, «Аналитический обзор», рассматриваются примеры существующих игр в жанре «MMO RPG, выделены особенности разрабатываемой игры и ее интерфейса.
    • Вторая глава содержит определение функциональных требований к разрабатываемой игре. Представляется проектирование интерфейса.
    • В третьей главе, представлено проектирование приложений.
    • В четвертой главе, «Тестирование игрового приложения», проведено функциональное тестирование разрабатываемой игры, нагрузочное тестирование и тестирование системы на самовосстановление.
    • В заключении сделаны выводы о проделанной работе.
    • В приложениях продемонстрирована блок-схема одной из важнейших функций и один из заголовочных файлов.

1. Аналитический обзор

1.1 Анализ предметной области

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

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

1.1.1 Классификация игр

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

Игровые платформы:

1) PC и ноутбуки.

2) смартфоны и планшеты.

3) консоли и приставки (Sega, Sony PlayStation 4, Xbox360).

Виды игр по количеству игроков:

1) одиночные игры

2) совместные игры

3) многопользовательские игры

Виды сетевых игр:

1) браузерные и социальные игры

2) мобильные игры

3) клиентские игры

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

1.1.2 Массовые многопользовательские игры

Жанр MMO (Massively multiplayer online) - массовые многопользовательские онлайн игры. Он расширяет возможности обычных жанров, дарует новые возможности и перспективы развития.

Среди MMO можно выделить четыре основных жанра:

1) MMORPG (massive multiplayer online role-playing game) - ролевые

2) MMORTS (massive multiplayer real time strategy) - стратегии

3) MMOFPS (massive multiplayer online first person shooter) - шутеры

4) MOBA (multiplayer online battle arena) - боевые арены

MMORPG - жанр игр, в котором большое количество игроков заключено в огромном виртуальном мире, наполненном контентом: приключениями, опасностями и живописным окружением (графикой и музыкой). Основной упор таких игр сделан на социальное взаимодействие - общение, друзья, браки, группы, гильдии, альянсы и сражения. То есть коммуникацию и взаимодействие игроков друг с другом. Это почти как социальная сеть, только с графической оболочкой и иным функционалом. Примеры многопользовательских игр: World Of Warcraft, Shining Nation (Рисунок 1), Ap:piel (Рисунок 2).

Рисунок 1 MMORPG Shining Nation

Рисунок 2 MMORPG Ar:piel Online

1.1.3 Анализ игровых движков

На сегодняшний день существует огромное количество как платных, так и бесплатных инструментов по разработке игр, начиная от простых библиотек для известных языков программирования, заканчивая крупными редакторами с обширным функционалом [2]. Чтобы создать качественную игру, требуется знать, какой инструмент для разработки приложения придется использовать, в процессе создания игры. Поэтому было решено провести анализ уже готовых инструментов для разработки игр, которые успел себя зарекомендовать, как и на Российском рынке, так и за рубежом. Проведем обзор наиболее популярных игровых платформ, которые имеют обширный функционал для разработки игр, в которых используются наиболее популярные языки программирования, а также зарекомендовавшие себя за последнее время.

Unreal Engine 4 - это игровой движок от компании Epic Games. Написан на С++ и кроссплатформенный [3]. Упрощённое портирование, модульная система зависимых компонентов, различные системы рендеринга, сетевые модули и поддержка различных устройств ввода далеко не полный список всех особенностей движка.

Преимущества:

1) полный доступ к исходным кодам;

2) система Blueprint для написания игровой логики;

3) компиляция С++ кода во время тестирования игрового приложения;

4) богатый функционал;

Недостатки:

1) высокие системные требования;

2) сложность в освоении;

3) плохая оптимизация игровой физики и теней.

Unity3d - это современная среда разработки для создания игр и приложений, разработанная компанией Unity Technologies [3]. Игры можно разрабатывать как для pc, так и для телефонов и консолей.. Огромной плюс данной платформы - это простота разработки приложений и игр для мобильных устройств, как от самых простых в разработке, так и до самых сложных. В Unity есть возможность запускать любое приложение в веб-плагине.

Преимущества:

1) самое большое комьюнити в мире среди всех существующих платформ, для разработки игр и приложений;

2) хороший игровой редактор;

3) огромное количество инструментов для разработки приложений и игр;

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

5) большое количество библиотек, которые позволяют расширить функционал платформы;

6) быстрая компиляция.

Недостатки:

1) у разработчиков нет доступа к исходному коду платформы на системном уровне;

2) условно-бесплатный.

Game Maker - не очень популярный, но довольно интересный игровой движок для создания 2D игр [2].

Преимущества:

1) поддержка расширений и библиотек

2) интеграция со Steam, GooglePlay, AppStore

Недостатки

1) плохая поддержка 3D

2) Среда разработки доступна только на Windows

Таблица 1

Анализ игровых движков

Движок

Языки

Лицензия

Год выпуска

Free

Plus

Pro

Unity

C#, JS

+

35$/мес.

125$/мес.

2005

Unreal Engine

C++

+

5% прибыли

5% прибыли

1998

Game Maker

GML(JS)

+

$39

$99/$399

2012

Среди проанализированных игровых движков не был выбран никакой, а выбор пал на графическую библиотеку. Причинами же такого выбора является желание чувствовать процесс разработки и все его аспекты, связанные с взаимодействием игровых элементов самому, а не использовать чужие наработки не понимая, как они работают и взаимодействуют. Причины не очень то и уважительные, так как для программиста должно быть естественным использовать чужие наработки или продолжать разработку в коллективе. Если рассматривать процесс разработки с точки зрения одиночного разработчика, обучения и создания так называемых «велосипедов», то выбор вполне аргументирован.

1.1.4 Анализ библиотеки для разработки игр

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

Популярные мультимедийные библиотеки:

1) OpenGL / Vulkan

2) DirectX

3) SFML

4) SDL 2.0

OpenGL - интерфейс для графических приложений.

Преимущества:

1) широкий функционал

2) кроссплатформенность

Недостатки

1) сложность освоения и применения

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

Преимущества: позволяет снизить нагрузку на видеокарту, сохраняя качество.

Недостатки: схожесть с названием казино Vulkan, портящее репутацию.

DirectX - графический интерфейс для приложений Windows.

Преимущества:

1) организация максимально реалистичной графики в играх

2) бесплатный доступ к загрузке любой версии платформы

Недостатки:

1) только под Windows

2) при установке игр требуется установка DirectX

SFML - простая и быстрая мультимедийная библиотека

Преимущества:

1) минимальные требования к уровню знаний языка

2) лёгкость освоения

3) кроссплатформенность

4) унаследовала функционал openGL

Недостатки:

1) Плохая поддержка 3D графики

SDL 2.0 - кроссплатформенная 2D библиотека, предназначенная для написания приложений (в основном игр).

Особенности:

1) кроссплатформенность

2) быстрота

3) надёжность

4) лёгкость в эксплуатации

Таблица 2

Анализ графических библиотек

Библиотека

Кроссплат-форменность

тяжесть освоения

Функциональность

3D графика

openGL/Vulkan

+

тяжело

+

+

DirectX

-

тяжело

+

+

SFML

+

просто

-

-

SDL 2.0

+

просто

+

-

Из проанализированных графических библиотек была выбрана SFML, так как она проста в освоении, имеется достаточный опыт работы с данной библиотекой, и она имеет возможность создания приложений, взаимодействующих по сети. Можно сказать, что трёхлетний опыт работы с данной библиотекой является определяющим фактором выбора.

1.1.5 Интегрированные среды разработок

Из одной библиотеки приложения не сделаешь, нужен компилятор, а ещё лучше - среда разработки. Приведём список популярных IDE [5], и выделим особенности выбранной среды.

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

1) Microsoft Visual Studio (проще написать какие языки не поддерживает)

2) Android Studio (Java, Cotlin, C, C++, Python, Basic, Lua)