Оглавление
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)