Создание механики стратегии в реальном времени

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,64 Мб
  • Опубликовано:
    2017-07-26
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание механики стратегии в реальном времени

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ»

Факультет Информатики и прикладной математики

Кафедра Информационных систем и технологий




Выпускная квалификационная работа на тему: «Создание механики стратегии в реальном времени»


Направление 090302 Информационные системы и технологии

Направленность (профиль) Информационные системы в экономике

Студент 4 курса группы ИС 1301 очной формы обучения

Воробьев Даниил Юрьевич

Руководитель ВКР д.т.н. проф. Колбанёв Михаил Олегович

Зав. кафедрой ИСиТ, кандидат технических наук, доцент

Коршунов И.Л.

Санкт-Петербург 2017

Аннотация

Тема дипломного проекта - «Разработка механики стратегии в реальном времени».

Ключевыми словами дипломного проекта являются видеоигры, стратегия в реальном времени.

Объектом исследования проекта является жанр видеоигр «стратегия в реальном времени».

Предмет исследования - базовая механика стратегии в реальном времени.

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

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

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

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

Заключение содержит основные выводы о том, насколько актуальна и перспективна разработка стратегии в реальном времени.

Содержание

 

Аннотация

Введение

Список терминов

. Анализ особенностей жанров и технологий видеоигр

.1 Обзор жанров

.2 Обзор платформ

.3 Обзор средств разработки видеоигр

. Реализация механики стратегии в реальном времени

.1 Технические требования к разрабатываемому ПО

.2 Средства разработки ПО

.3 Минимальные требования к программному обеспечению

.4 Разработка архитектуры программы и пользовательского интерфейса

.6 Тестирование

. Бизнес-модель

.1 Обзор рынка видеоигр

.3 Модель распространения игры

.4 Платформы для продвижения игры

.5 Модель позиционирования игры

.6 Выставки для представления игры

.7 Издатели независимых игр

.8 Экономические расчеты

.9 Целевая аудитория

Заключение

Список литературы

 

Введение


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

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

Объект исследования - жанр стратегия в реальном времени.

Предмет исследования - механика стратегии в реальном времени.

Целью дипломной работы является разработка базовых возможностей стратегии в реальном времени при помощи программного средства Unity Engine.

Для достижения этих целей в работе решались следующие задачи:

.        Анализ жанров видеоигр и средств для их реализации

.        Реализация базовых возможностей механики стратегии в реальном времени

.        Создание бизнес-модели

Методы исследования

         Анализ литературы

         Изучение документации

         Написание кода

         Изучение статистики

Структура

Введение раскрывает актуальность, определяет объект, предмет, цель, задачи и методы исследования.

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

Список терминов

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

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

Ресурсы - измеряемый в цифрах показатель, который игрок использует для какой-либо цели, «валюта» в игровом мире. Игрок может их потратить на строительство базы или создание юнита.

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

Потоковое вещание (по-английски «streaming») - термин, использующийся для обозначения трансляции игры одним игроком на видеосервис, чтобы игровой процесс могли посмотреть и другие люди.

1. Анализ особенностей жанров и технологий видеоигр

 

.1 Обзор жанров


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

Шутер от первого лица

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

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

Ролевая игра

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

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

         Характеристики персонажа улучшаются походу игры;

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

         Открытый мир;

         Боевая система, основанная на способностях персонажа.

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

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

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

Симулятор

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

Гонки

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

Спортивные игры

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

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

Пошаговая стратегия

Это игра, где у игрока есть большое количество времени для обдумывания своих действий. Обычно они именуются ходами, то есть игроки ходят по очереди, как в шахматах. Игровой процесс включает в себя постройку зданий, создание юнитов и управление войсками. Главная цель в играх подобного рода - это победа над другим игроком путем военных действий.

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

Стратегия в реальном времени определяется следующими важными признаками:

Экономическая система

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

Соперничество

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

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

«Туман войны»

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

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

Пример стратегии в реальном времени

StarCraft 2

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

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

Самые базовые юниты в игре - «рабочие». Они собирают ресурсы, которые нужны для строительства базы и покупки новых юнитов, также они строят здания. Более продвинутые юниты появляются только при выполнении определенных условий, например, постройки здания или покупки улучшения.

В StarCraft 2 присутствует и режим сетевой игры, который является основным для многих игроков. В нем присутствуют таблицы лучших игроков, проводятся турниры и имеется целая сетевая платформа для матчей среди игроков.

1.2 Обзор платформ

Playstation 4

Это домашняя видеоигровая консоль, разработанная компанией Sony Interactive Entertainment. Она относится к восьмому поколению видеоигровых систем.

Архитектура консоли похожа на компьютерную. Данное сходство делает разработку игр под обе платформы легче и дешевле. В ее основе лежит AMD Fusion - процессор, который объединяет центральный многозадачный универсальный процессор с графическим параллельным многоядерным процессором. Это называется ускоренное обрабатывающее устройство. Центральный процессор состоит из двух четырехъядерных модулей Jaguar. Графический процессор состоит из 18 вычислительных единиц. Консоль содержит 8 гигабайтов памяти GDDR5, что в 16 раз мощнее ее предыдущей версии, Playstation 3.

Также применяется дополнительный вычислительный чип, который отвечает за загрузку приложений, обновлений и онлайн-сервисы. С помощью него эти задачи могут обрабатываться в фоновом режиме при игре или в «спящем» состоянии. Консоль поддерживает HDR, то есть цвета высокой четкости и яркости. Playstation 4 имеет Blu-Ray дисковод.

Сетевая составляющая предоставляет доступ пользователям к приложениям Playstation Network, которые включают в себя Playstation Store, то есть магазин для игр, Playstation Plus, это подписка для возможности сетевой игры и бесплатных игр, и Playstation Music. Функция Share Play позволяет пользователям приглашать их друзей поиграть с помощью потокового вещания, то есть даже если у них нет копии игры, они могут поиграть в нее. Они могут перехватить управление у основного игрока или присоединиться, если в игру встроен сетевой элемент.One

Это домашняя видеоигровая консоль, разработанная компанией Microsoft. Она третья по счету для компании и принадлежит к восьмому поколению систем.

В центре ее архитектуры лежит микропроцессор Jaguar от AMD с двумя четырехъядерными модулями с тактовой частотой 1.75 Гигагерц. В ней содержится восемь гигабайт оперативной памяти DDR3. Три из них уходят на обработку операционной системы, оставшиеся пять - на сами игры.имеет две операционные системы. Одна для игр, другая - для пользовательского интерфейса и других приложений. Последние запускаются под управлением урезанной версии Windows. При запуске консоли то была Windows 8, но затем ее обновили до 10. Такая архитектура позволяет ресурсам быть использованными специально под разные цели, гарантируя, что игры будут всегда в приоритете. Консоль поддерживает приложения из сервиса Universal Windows Platform, который связывает все текущие системы Microsoft: Xbox, Windows 10 и Windows 10 Mobile для смартфонов.

Сервис Xbox Live используется для сетевой игры и использования приложений. Облачная часть позволяет хранить музыку, фильмы, игры и сохраненные достижения. Пользователи могут иметь до 1000 друзей, а с недавнего времени введена поддержка групп по интересам, а функция Looking for group помогает пользователям легче искать других игроков для игры по сети. Сервис Upload Studio позволяет загружать и обрабатывать последние пять минут игрового процесса. В нем есть функция настройки загрузки видео в интернет после определенного события, например, получения достижения. Xbox One поддерживает потоковое вещание на платформы Mixer и Twitch. Приложение SmartGlass предоставляет устройствам на iOS, Android и Windows Phone доступ к некоторым возможностям консоли, таким как включение и выключение, удаленный доступ, покупка контента, а также взаимодействие внутри некоторых игр. С помощью приложения Xbox может вещать игры на мобильные устройства и персональные компьютеры под управлением Windows 10.Switch

Это седьмая консоль от компании Nintendo. Она вышла чуть позже своих текущих конкурентов, Sony Playstation 4 и Xbox One, но все равно относится к восьмому поколению. В отличие от них, Switch является гибридной системой. Она может использоваться и дома с помощью подключения к станции, которая будет транслировать игру на телевизор, но может и на улице с помощью переносного планшета. Консоль имеет отсоединяющиеся котроллеры, которые можно использовать с планшетом в дорогt, а можно соединять друг с другом и играть с ними дома.

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

Но без компромиссов это было бы невозможно. Домашняя станция не предоставляет дополнительных графических возможностей, чтобы разработчикам не надо было создавать две версии игры, и чтобы портативная версия не была урезана по сравнению с домашней. Поэтому графическая составляющая может быть хуже, чем у основных конкурентов, но в эпоху смартфонов мобильность является большим плюсом.Switch предоставляет сетевые функции. Они включают в себя игру по сети, приобретение и загрузку через магазин eShop, возможность объединяться в группы и голосовой чат. Вместе с другими производителями Nintendo требует обязательной подписки, чтобы пользоваться сетевой игрой и голосовым чатом, хотя предыдущая игровая система Nintendo Wii U этого не требовала. Компания планирует в будущем дальше перенимать практику своих конкурентов, которые раздают бесплатно игры всем подписчикам, и давать бесплатный доступ к классическим играм с их прошлых консолей.

1.3 Обзор средств разработки видеоигр


Unreal Engine 4

Unreal Engine это средство разработки видеоигр от Epic Games, первая версия которого была использована еще в 1998 году с выходом игры Unreal. Изначально средство разработки было сделано только для экшенов от первого лица, но в последствие успешно использовалось и при создании игр в жанре сетевых ролевых игр и гонок.

Unreal использует язык программирования C++ как основной. Также система содержит в себе язык визуального программирования Blueprint. Он позволяет быстро создавать прототипы, уровни и игровые механики без кода. Это дает возможность проверять идеи и тестировать различные концепты, не потратив при этом много времени на написание кода.

Данный движок предназначен для создания игр для текущего поколения консолей, то есть на более старые Playstation 3 и Xbox 360 игру не перенести, персональные компьютеры и мобильные телефоны на базе iOS и Android. Для создания игры на консоли требуется уже история созданных игр для того, поэтому компьютеры - более частый выбор пользователей Unreal.

Одна из главных особенностей в новой версии движка - поддержка веб возможностей. На данный момент Mozilla поддерживает не только двухмерную графику, но и трехмерную с достаточно большим количеством объектов на экране. Четвертая версия Unreal стала бесплатной, вместо 19$ в месяц как в прошлую версию, но теперь требуется отдавать 5% с общих сборов игры, если она собрала более 3000$ за один квартал.

Source

Это движок для разработки трехмерных игр от компании Valve Corporation. Он дебютировал в игре Counter Strike Source.

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

Движок содержит также упрощенный комплект средств разработки, в котором есть множество инструментов, что помогали Valve создавать разные части их игры. В нем есть три компонента: Hammer Editor, Model Viewer и Face Poser. Hammer Editor - это редактор игровых уровней. Model Viewer - это компонент, который помогает работать с трехмерными моделями. Разработчики также могут создавать анимацию, смотреть связные точки модели и так далее. Face Poser помогает создавать лицевую анимацию, синхронизировать губы модели с речью, а также занимается жестами рук.

CryEngine

Данный движок создан немецкой компанией Crytek и был впервые применен в игре Far Cry. С помощью него разрабатываются игры для персональных компьютеров и консолей нового поколения.

Графические возможности CryEngine являются одними из самых лучших на сегодняшний день, с ним в данном аспекте может сравниться только Unreal Engine. Движок содержит реалистичную физику и современное освещение. Но так как он довольно мощный, то осваивать его тяжелее, и если у разработчика есть мало опыта, то может быть не рационально его использовать. Движок стоит 9.90$ в месяц, но есть и бесплатная версия, но она может быть использована только для бесплатных проектов или обучающих программ.

Game Maker

Это система для создания игр, созданная Марком Овермаром на языке программирования Delphi. Она поддерживает разработку кроссплатформенных игр разного жанра с помощью метода «Drag and Drop», то есть перетаскивания и расставления уже готовых элементов системы, и языка разработки Game Maker Language. Изначально движок задумывался как инструмент для создания прототипов. Game Maker позволяет пользователям создавать видеоигры без изучения языков программирования вроде Java или C++.

Unity Engine

Это инструмент, позволяющий создавать двух- и трехмерные игры и приложения. Средство поддерживает языки C# и JavaScript. Расчеты физики производятся на базе PhysX от компании NVidia.

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

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

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

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

Видеоигры на данный момент представляют собой обширную отрасль бизнеса, которая включает в себя множество разных компонентов. В нее включаются игры разных типов, среди которых стратегия в реальном времени выделяется в силу своей истории и связи с таким понятием как тактика, которое является важнейшей составляющей данного типа игрового процесса. Но сегодня жанр становится слишком медленным для современного игрока. Не все технологии, рассмотренные в этой главе, отвечают главным требованиям: удобство для малобюджетной разработки и создания стратегии. Поэтому и был выбран Unity Engine, который является оптимальным инструментом для небольших игр такого жанра.

2. Реализация механики стратегии в реальном времени

 

.1 Технические требования к разрабатываемому ПО


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

         Постройка здания;

         Создание юнита;

-        Передвижение юнита;

-        Уничтожение юнита.

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

-        Окно ресурсов;

-        Карта;

-        Обрамление игровых объектов;

-        Окно юнита;

-        Окно построек;

2.2 Средства разработки ПО


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

Основные компоненты средства разработки

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

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

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

Структуры данных и алгоритмы. Движок имеет средства управления фундаментальными структурами данных, таких как связанные списки, динамические множества, двоичные деревья и так далее, и алгоритмов, таких как поиск, сортировка и так далее.

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

Движок рендеринга

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

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

На данном уровне входят такие компоненты как:

Шейдеры. Это вычисляющийся алгоритм, который содержит математические вычисления для цвета каждого пикселя, который зависит от освещения и выбранного материала.

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

Высокоуровневый рендеринг. На данном уровне вычисляются объекты, которые тяжело обрабатывать.

Внешний интерфейс

Большинство игр используют двухмерную графику, которая наложена трехмерную сцену. Самые часто встречающиеся компоненты:(Head-Up). Это часть визуального интерфейса игрока, отображающаяся на фоне виртуального игрового пространства в процессе игры от первого лица.

Графический интерфейс пользователя. Это разновидность пользовательского интерфейса, в котором различные элементы, такие как меню, кнопки, значки, списки и так далее, представленные пользователю на экране, исполнены в виде графических изображений.

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

Физический движок и движок столкновений

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

Обнаружение столкновений проявляется в двух видах: дискретном и непрерывном. Второй обычно требует много ресурсов, поэтому обрабатывается только, когда он очень нужен. Большинство столкновений обрабатывается дискретно. То есть объекты сталкиваются, и движок сразу разводит их обратно.

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

В Unity встроена разработка на базе стороннего продукта NVidia PhysX. Это промежуточное связующее программное обеспечение, кроссплатформенный физический движок для симуляции ряда физических явлений, а также комплект средств разработки на его основе.

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

Это бесплатный и открытый набор для создания трехмерных моделей. Также он поддерживает создание анимации, физическую симуляцию, обработку моделей, захват движений, постобработку видео и создание простых приложений. Blender хорошо подходит для небольших студий, которым удобно использовать широкий спектр его функций, а также осуществление быстрой поддержки со стороны разработчика. Это кросс - платформенный набор средств, и он может быть запущен на Linux, Windows, OSX. Интерфейс использует OpenGL.

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

Это интегрированная среда разработки, встроенная в Unity Engine. Она вмещает в себя все базовые функции текстового редактора с дополнительными возможностями для совместных проектных задач.

 

.3 Минимальные требования к программному обеспечению


Процессор: 1.2 Гигагерц;

Оперативная память: 512 Мегабайт;

Видеокарта: 256 Мегабайт;

 

.4 Разработка архитектуры программы и пользовательского интерфейса


Архитектура игры включает в себя блоки, которые выполняют разные цели внутри программы. В проекте содержатся:

Блок управления основной информацией

Данная часть кода проекта оперирует общей информацией о всех игроках:

Имя. У каждого игрока должно быть имя, чтобы их удобно было различать;

Позиция. Начальная точка, в которой игрок начинает матч;

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

Начальные юниты. Список юнитов, с которыми игрок начинает игру по умолчанию;

Текущие юниты. Список юнитов, которые есть у игрока в текущий момент времени;

Текущее количество баз. Список баз, которые есть у игрока в текущий момент времени;

ИИ. Показывает, человек или искусственный интеллект управляет игроком;

Ресурсы. Количество ресурсов, которыми владеет игрок в текущий момент времени;

Действия

Эта часть архитектуры содержит в себе действия создания баз и юнитов и возможности сбора ресурсов.

Бой

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

Взаимодействие

Данная часть описывает взаимодействие игрока с виртуальным миром посредством клавиатуры и мыши. Мышь выполняет главную роль в управлении игрой. В этом блоке прописаны возможности клика левой и правой кнопкой мыши. Первая должна выбирать объекты виртуального мира, а также взаимодействовать с интерфейсом пользователя - на панели возможных действий, например. Также прописана возможность «подсветки» игровых объектов при их выборе. Правая кнопка мыши отвечает за перемещение юнитов в пространстве. Клавиатура используется для управления камерой и для выбора нескольких юнитов одновременно.

Имитация поведения противника

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

Интерфейс пользователя

Интерфейс состоит из четырех блоков, которые описывают разную информацию

 

Рисунок 1 - Схема пользовательского интерфейса

Ресурсы

Окно ресурсов показывает количество ресурсов, которые игрок имеет в текущий момент времени. Оно располагается в правом углу экрана. Игрок не может с ним взаимодействовать.

Рисунок 2 - Окно ресурсов

Карта

Карта - один из самых важных элементов интерфейса в стратегии реального времени. Игрок должен опираться на карту, продумывая свои действия и создавая на их основе тактику. Она показывает всю местность, на которой проходит игра. Некоторые стратегии имеют так называемый «туман войны», то есть вся территория закрыта от взгляда игрока до тех пор, пока он не будет исследовать карту с помощью юнитов. Тогда карта открывается постепенно, учитывая возможную дальность каждого юнита, который по ней передвигается.

В проекте карта открыта, но все объекты противника на карте не помечаются до тех пор, пока игрок не приблизиться к ним на определенное на расстояние. То есть действия противника все равно скрыты, потому что игрок не видит перемещение юнитов и количество и место баз. На карте также отображается прямоугольник белого цвета, он называется «Viewer». Он отображает камеру игрока, то есть то расстояние на карте, которое он просматривает. Объекты разных игроков помечены разным цветом.

Рисунок 3 - Карта

Окно информации о юните

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

Затем идет его здоровье. Оно тоже изображается крупно, так как игроку должно быть удобно смотреть во время сражения сколько у какого юнита здоровья, чтобы легче ими управлять. И в конце отображается тот кому юнит принадлежит. Игрок может щелкать и на объекты противника, поэтому так будет легче ему различать.

Рисунок 4 - Окно информации о юните

Окно действий

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

Рисунок 5 - Окно действий

.5 Реализация ПО

Основная информация

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

Позиция

В объекте «карта» содержатся две начальные позиции обоих игроков. Они стоят там, где они появятся во время начала игры.

Рисунок 6 - Начальные позиции игроков на карте

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

var go = (GameObject)GameObject.Instantiate(u, p.Location.position, p.Location.rotation);

var pos = p.Location.position;.y = Height;.position = pos;

Информация об игроке

Игра оперирует информаций об игроках, чтобы знать их состояние в любой момент времени. Вся информация хранится в отдельном классе. В нем используется библиотека Unity System.Serializable, которая позволяет удобнее ее показывать, выстраивая иерархию и привязывая к определенному объекту, в данном случае - к игроку.

Рисунок 7 - Информация об игроках

Интерфейс

Интерфейс игры состоит из четырех частей: карта, информация о юните, список возможных действий и окно ресурсов.

Карта

Карта показывает, какую область территории видит игрок. Так как он это делает «через» объект «камера», то необходимо преобразовать его координаты в координаты окна, которое будет перемещаться по карте интерфейса.

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

Затем создается метод, который будет преобразовывать координаты объекта на сцене в координаты окна на карте интерфейса. В случае карты и камеры (Corner.position.z и point.z) в качестве второй координаты берется Z, а в случае окна на карте интерфейса (mapRect.rect.height) - Y. Потому что интерфейс «прикрепляется» к объекту «камера» только при запуске самой игры - в редакторе они расположены на разных осях.

terrainSize = new Vector2 (.position.x - Corner1.position.x,.position.z - Corner1.position.z);= GetComponent<RectTransform> ();

2 WorldPositionToMap{mapPos = new Vector2 (.x / terrainSize.x * mapRect.rect.width,.z / terrainSize.y * mapRect.rect.height);mapPos;

}Update () {.position = WorldPositionToMap (Camera.main.transform.position); }

Разделение по цветам

Следующая функция, которую должна выполнять карта - показ юнитов. Игрок должен видеть, что принадлежат ему, а что - противнику. Осуществляется разделение с помощью цвета. Но он не может видеть юнитов противника, если они дальше определенной дистанции от одного из его юнитов. Они должны быть подсвечены цветом своей команды. Для этого используется элемент Unity Image. Он является изображением, которое показывается в графическом интерфейсе.

Создается объект, ему присваивается цвет игрока. И он показывается на карте с помощью метода WorldPositionToMap, который использовался ранее с объектом «камера».

blip = GameObject.Instantiate (Map.Current.BlipPrefab);color = GetComponent<Player> ().Info.AccentColor;.GetComponent<Image> ().color = color;.transform.position = Map.Current.WorldPositionToMap (transform.position);

При запуске игры изображение юнитов противника отключено. Поэтому проверяется, как далеко они от объектов игрока. Осуществляется это при помощи структуры Vector3. Она используется для того, чтобы работать с координатами в трехмерном пространстве. Метод Distance возвращает расстояние между двумя объектами. Если это расстояние меньше или равно заданному в коде (переменная VisibleRange), то изображение юнита на карте интерфейса включается. Также он становится видимым в самой игре. Для этого используется класс Renderer. Он отвечает за то, чтобы игрок мог видеть объект на экране.

foreach (var o in oBlips) {active = false;(var p in pBlips) {distance = Vector3.Distance(o.transform.position, p.transform.position);(distance <= VisibleRange) {= true;; } }.Blip.SetActive(active);(var r in o.GetComponentsInChildren<Renderer>()) r.enabled = active;}

Рисунок 8 - Юнит игрока на карте

Окно юнита

Окно юнита содержит его изображение, имя и количество очков «здоровья». С помощью метода SetPic добавляется картинка юнита. Затем показывается текущее число очков «здоровья», максимальное число очков «здоровья», и имя игрока, чтобы легко было различить, кому юнит принадлежит.

InfoManager.Current.SetPic (ProfilePic);.Current.SetLines (,+ "/" + MaxHealth,

"Owner: " + GetComponent<Player> ().Info.Name);

Рисунок 9 - Окно информации о юните

Окно действий

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

public void AddButton(Sprite pic, Action onClick)

{.gameObject.SetActive (true);.GetComponent<Image> ().sprite = pic;.Add (onClick);

}

Управление

Выбор юнита

Чтобы подтвердить, что игрок нажал на часть интерфейса, нужен ряд проверок, которые это сделают. Первая - щелкнул ли игрок кнопку вообще. Используется метод класса Input. Он возвращает значение true, если была нажата указанная кнопка мыши. Для левой используется 0, для правой - 1, для средней - 2.(!Input.GetMouseButtonDown (0)) return;

Далее проверяется, есть ли объект интерфейса на месте наведении курсора мыши. Если он есть, то надо убедиться, что объект в игровом мире за ним не выберется. Используется класс EventSystem. Он нужен для обработки ввода информации с мыши и клавиатуры. Метод IsPointerOverGameObject возвращает true, если курсор находится поверх 2D элемента.

var es = UnityEngine.EventSystems.EventSystem.current;(es != null && es.IsPointerOverGameObject ()) return;

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

if (Selections.Count > 0) {

if (!Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.RightShift)) {(var sel in Selections) {(sel != null) sel.Deselect();

}

Selections.Clear(); } }

Далее проверяется, был ли выбран какой-либо объект. Делается это при помощи класса Raycast, который отвечает за «лучевой» поток, работающий с камерой.

Любая точка на камере соответствует линии в пространстве игры. Иногда очень полезно иметь математическое представление подобной линии, и Unity может предоставить это в форме объекта Ray. Ray всегда соответствует точке от «лица» объекта «камера», поэтому класс, который помогает с ней работать, имеет функции ScreenPointToRay и ViewportPointToRay. Данные функции возвращает луч, который содержит начальную точку, и вектор, который содержит направление из этой точки, соответственно.. Наиболее частое использование данного компонента - это осуществлять направленный поток лучей на сцену. Это значит, что камера посылает невидимый «лазерный луч» вдоль Ray до тех пор, он не достигнет коллайдера на сцене. Компонент коллайдер определяет форму объекта для физических столкновений. Коллайдер, который при игре остается невидимым, не должен быть той же формы, что и игровой объект, и обычно даже грубое приближение чаще более эффективно и неразличимо при самой игре. Затем возвращается информация об объекте и фиксируется точка, где данный луч его настиг. Это удобный способ обнаруживать объект с помощью изображения на экране.

Метод RaycastHit выдает положительный результат только при нажатии на тип объекта Collider. Данный тип определяют форму и физическое взаимодействие объекта с игровым миром.

var ray = Camera.main.ScreenPointToRay (Input.mousePosition);hit;(!Physics.Raycast (ray, out hit)) return;

Далее идет проверка на интерактивность объекта. Если у него нет такого компонента, то он не сможет быть выбранным.

var interact = hit.transform.GetComponent<Interactive> ();

if (interact == null) return;

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

Передвижение юнита

Чтобы юнит смог передвинутся на определенный участок на карте, необходима проверка, нажималась ли кнопка, когда курсор мыши наведен на нужную область. Используется метод, который был описан ранее, но с переменной Terrain Collider. Данный вид объекта «обволакивает» всю карту и осуществляет физическое взаимодействие с ней.

public Vector3? ScreenPointToMapPosition(Vector2 point)

{var ray = Camera.main.ScreenPointToRay (point);hit;(!MapCollider.Raycast (ray, out hit))null;hit.point; }

Затем определяется: если игрок нажимает на правую кнопку мыши, то юнит двигается в заданную точку. Но юнит может остановиться раньше. Если юнитов будет много и им всем будет дана команда идти в одно и то же место, то для них может не хватить пространства, и они начнут «толкаться». Поэтому вносится переменная RelaxDistance. Измеряется расстояние, и если дистанция меньше этой переменной, то объект может остановиться.

if (selected && Input.GetMouseButtonDown (1)) {tempTarget = RtsManager.Current.ScreenPointToMapPosition(Input.mousePosition);(tempTarget.HasValue) {(); } }(isActive && Vector3.Distance (target, transform.position) < RelaxDistance) {.Stop ();= false; } }

Передвигается юнит при помощи класса NavMesh. Он отвечает за систему навигации и позволяет создавать объекты, которые могут передвигаться по миру. Он состоит из следующих компонентов:(Navigation Mesh). Это структура данных, которая описывает поверхности в игровом мире, по которым можно передвигаться, и позволяет найти путь из одного места в другое. Она зависит от геометрии уровня.Agent. Данный компонент помогает создавать объекты, которые будут обходить друг друга, если окажутся на пути у друг друга, а также другие препятствия, которые предусмотрены NavMesh.Mesh Link. Компонент позволяет включить в путь точки навигации, которые могут быть не представлены на поверхности.Obstacle. Данная часть структуры данных позволяет описать двигающиеся препятствия, которые объект должен обходить при продвижении по миру игры. Пока препятствие движется, объекты пытаются обойти его, но как только оно остановилось, NavMesh автоматически ограничивает пространство, или если оно заграждает путь, то объект ищет другой маршрут.

Системе навигации нужна информация, чтобы представлять подобное пространство в игре. Оно определяет место, где объект может двигаться и стоять. Затем такие местоположения соединяются в поверхность, которая лежит поверх геометрии всей сцены. Это поверхность называется навигационной сеткой, то есть Navigation Mesh.сохраняет эту поверхность в качестве выпуклых многоугольников. Они являются полезным представлением поверхности, так как между двумя любыми точками многоугольника нет никаких препятствий. В дополнение к границам многоугольников сохраняется информация о том, какие из них являются друг другу соседями. Это позволяет понимать, какая область проходима.

Чтобы найти путь между двумя объектами на сцене, сначала сопоставляются начальный и конечный пункт с ближайшими многоугольниками. Затем начинается поиск с первой точки, с помощью посещений всех нужных полигонов, пока объект не доберется до конечной цели. Отслеживание посещенных полигонов осуществляет алгоритм A*.

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

Логика двигательного управления занимает позицию следующего угла и на основе этого вычисляет желаемое направление и скорость, которые нужны для того, чтобы достичь конечного пункта. Использование предполагаемой скорости может привести к столкновению с другими объектами. Тогда компонент, отвечающий за обход препятствий, выбирает новую скорость, которая должна держать баланс между желаемым направлением и обходом будущих столкновений с другими объектами. Тут используется вычисление столкновений с помощью RVO, то есть reciprocal velocity obstacles. Такой подход берет во внимание реактивное поведение всех объектов, подразумевая, что они делают аналогичные рассуждения об избежании конфликтов.

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

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

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

Строительство базы

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

public bool IsGameObjectSafeToPlace(GameObject go) {verts = go.GetComponent<MeshFilter> ().mesh.vertices;obstacles = GameObject.FindObjectsOfType<NavMeshObstacle> ();cols = new List<Collider> ();(var o in obstacles) {.Add (o.gameObject.GetComponent<Collider> ()); }

Проверяется каждая вершина. Так как они относятся к пространству объекта, то есть к модели объекта «база», с помощью метода TransfromPoint необходимо узнать их позицию в мире игры. Затем проверяются X и Z координаты и столкновение с физической оболочкой объекта.

foreach (var v in verts) {hit;vReal = go.transform.TransformPoint (v);onXAxis = Mathf.Abs (hit.position.x - vReal.x) < 0.5f;onZAxis = Mathf.Abs (hit.position.z - vReal.z) < 0.5f;hitCollider = cols.Any (c => c.bounds.Contains (vReal));


Модель базы должна следовать за курсором мыши. Здесь используется функция ScreenPointToMapPosition, которая отслеживает его движение. Затем место передается в позицию объекта.

var tempTarget = RtsManager.Current.ScreenPointToMapPosition (Input.mousePosition);.position = tempTarget.Value;

Отменить действие игрок может с помощью кнопки Escape. Если он ее нажимает, то объект удаляется.

if (Input.GetKeyDown (KeyCode.Escape)) GameObject.Destroy (active);

Игра должна визуально показывать, возможно ли строить здание или нет. Для этого используется структура Color, и задаются два цвета: красный и зеленый.

Color Red = new Color (1, 0, 0, 0.5f);Green = new Color (0, 1, 0, 0.5f);

Если игрок захочет поставить базу далеко от юнита, то цвет модели станет красным.

if (Vector3.Distance (transform.position, Source.position) > MaxBuildDistance) {.material.color = Red;; }

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

Создание здания.

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

if (RtsManager.Current.IsGameObjectSafeToPlace (gameObject)) {.material.color = Green;(Input.GetMouseButtonDown (0)) {go = GameObject.Instantiate (BuildingPrefab);.transform.position = transform.position;.Credits -= Cost;.AddComponent<Player> ().Info = Info;(this.gameObject);

}

} else {rend.material.color = Red; }

Имитация поведения противника

Искусственный интеллект является симуляцией поведения другого игрока, который существует в игре. Система может быть как небольшим набором правил, так и сложной симуляцией. Главной целью искусственного интеллекта это воспроизводить поведение, которое предложит игроку вызов, который он сможет превзойти.

В данном проекте имитация представляет собой другого игрока, который управляет юнитами на карте. Он должен противостоять живому игроку. Имитация выполнена с помощью метода Сортированного листа. В нем каждое действие оценивается на основе определенных условий, оценка происходит в каждый момент времени игры. Данный метод является серединой между Древом поведений и методом Конечных состояний. Несмотря на то, что оценка происходит у каждого состояния отдельно, решение о том, какое же действие будет происходить следующим, отделено и принимается на основе данных оценок.

Рассматривается два аспекта каждого действия: как оно оценивается и как оно исполняется.

Действия:

- Создание базы;

- Создание юнитов;

- Имитация боя;

Создание базы;

Оценка.

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

if (support == null)= AiSupport.GetSupport (gameObject);(support.Player.Credits < Cost || support.Drones.Count == 0)0;(support.CommandBases.Count * UnitsPerBase <= support.Drones.Count)

return 1;0;

Исполнение

Каждый юнит проверяется на возможность выполнения действия. Ему дается три попытки, чтобы это сделать. Количество попыток выражено в переменной TriesPerDrone. Затем используется метод insideUnitSphere. Он возвращает случайную точку в сфере с радиусом 1. Так как такое расстояние достаточно маленькое, радиус должен быть умножен на число, которое будет более подходящим для возможности строительства. Для позиции здания задается Y величина с помощью метода SampleHeight. Она возвращает высоту карты. И у игрока отнимаются ресурсы за постройку базы.

foreach (var drone in support.Drones)

{(int i = 0; i < TriesPerDrone; i++)

{pos = drone.transform.position;+= Random.insideUnitSphere * RangeFromDrone;.y = Terrain.activeTerrain.SampleHeight (pos);.transform.position = pos;(RtsManager.Current.IsGameObjectSafeToPlace (go)) {.Player.Credits -= Cost;; } } }

Создание юнитов

Оценка 0 идет в двух случаях: если баз нет или юнитов больше, чем того требуется. Чтобы высчитать второе условие, вводится переменная DronesPerBase. Она означает оптимальное число юнитов на каждую базу. Переменная создается для баланса и может быть изменена во время тестирования. Если юнитов больше, чем базы могут себе того позволить, то их создавать больше не нужно. Оценка один, если препятствующих этому условий нет.

if (bases == 0) return 0;

if (drones >= bases * DronesPerBase) return 0; 1;

Имитация боя

Сначала проверяется время. Юниты не посылаются сразу, чтобы игрок успел подготовиться. Игра должна проверить, достаточно ли прошло времени от начала игры. Оно выражено переменной TimeDelay. Далее проходит проверка на количество юнитов, потому что посылать мало не слишком эффективно.

if (TimePassed < TimeDelay) return 0;(ai.Drones.Count < DronesRequired) return 0; 1;

Посылается отряд в определенном количестве юнитов. Оно выражено переменной SquadSize.

foreach (var p in RtsManager.Current.Players)

{if (p.IsAi);(int i = 0; i < SquadSize; i++)

{ var drone = ai.Drones [i];(p.Location.position); }; }

Осуществляется механизм поиска цели. Проверяется, есть ли она в игровом мире. Затем рассчитывается расстояние до каждого юнита противника. Если оно меньше, чем максимальная возможность юнита атаковать, то эту цель возможно достичь. Дистанция выражена в переменной AttackRange. При атаке передается компонент ShowUnitInfo, в котором содержится количество очков «здоровья» отдельно взятого юнита.

if (target != null) return;(var p in RtsManager.Current.Players)

{ if (p == player) continue;(var unit in p.ActiveUnits) {(Vector3.Distance (unit.transform.position, transform.position) < AttackRange) { target = unit.GetComponent<ShowUnitInfo>(); return; } } }

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

if (target == null)(Vector3.Distance(target.transform.position, transform.position) > AttackRange) { target = null; return; }.CurrentHealth -= AttackDamage;.Instantiate (ImpactVisual, target.transform.position, Quaternion.identity);

Ресурсы

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

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

В начале необходимо выбрать место, где объект может быть поставлен. Координаты будут содержаться в переменных Xpos и Zpos, где есть координаты X и Z соответственно. Высота объекта остается неизменной, чтобы объект всегда появлялся в том месте, где его могу бы собрать игрок. Затем с помощью двух функций, описанных раннее, проверяется, возможно ли поставить на данных координатах объект, потому что если он занят чем-то другим, то ресурс там собрать невозможно. В конце функция Instantiate воспроизведет объект.

while (check == false) {= Random.Range(RightCorner, LeftCorner);= Random.Range (UpCorner, DownCorner);pos = new Vector2 (Xpos, Zpos);tempTarget = RtsManager.Current.ScreenPointToMapPosition (pos);(tempTarget.HasValue) {(RtsManager.Current.IsGameObjectSafeToPlace (resource)) {check = true; } } }(resource, new Vector3 (Xpos, 9.7f, Zpos), transform.rotation);

Сбор ресурсов

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

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

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

void OnTriggerEnter(Collider collider){(collider.gameObject.tag == "Resource") {.Credits += 20;(collider.gameObject);

}

2.6 Тестирование


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

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

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

Теперь игрок находится вблизи юнитов противника, поэтому на карте появились красные точки, так как они находятся в его «поле зрения». Также на карте отображаются и базы противника, ведь игрок подошел к его базе достаточно близко.

Рисунок 11 - Проверка видимости противника (2)

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

Рисунок 12 - Проверка нажатия на юнита


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

Рисунок 14 - Проверка сбора ресурсов

Рисунок 15 - Проверка сбора ресурсов (2)

На основании проведенного анализа игрового движка Unity Engine и разработки на нем базиса стратегии в реальном времени можно сделать следующие выводы.

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

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

3. Бизнес-модель

 

.1 Обзор рынка видеоигр


Прибыль от сферы видеоигр в США в 2015 году составляла 23,5 миллиарда долларов, в Китае 22,2 миллиарда, в Великобритании 4,2 миллиарда. Доход от всех стран Европы равнялся 20,5 миллиардам. Сумма прибыли во всем остальном мире была примерно 20 миллиардов. Рынок видеоигр рос с конца 90-х годов, и так как они становятся доступнее все большему количеству людей, предсказывается, что рост будет продолжаться.

Рисунок 16 - Размер рынка видеоигр

3.2 Цифровые платформы

Понятие цифровая «платформа» включает цифровой сервис, где продаются электронные копии игр.

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

Steam предоставляет пользователям возможности установки и автоматического обновления игр, социальные функции, такие как листы друзей, группы, внутриигровой чат и так далее. Отдельная программа предоставляет прикладной интерфейс, с помощью которого разработчики могут интегрировать функции Steam в игру, например, возможность приглашений в сетевую игру, организация матчей, внутриигровые достижения, микротранзакции. Существуют версии для Microsoft Windows, OS X и Linux. Позже были созданы и мобильные версии для iOS, Android и Windows Phone.

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

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

Рисунок 17 - Количество пользователей Steam в Европейском регионе

App Store

Это цифровая платформа дистрибуции, созданная компанией Apple Inc. для мобильных систем под управлением операционной системы iOS. Магазин помогает искать и загружать приложения на устройства iPhone, iPad, iPod Touch и Apple Watch.

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

Инструмент разработки, использующийся в проекте курсовой работы, совместим с мобильным-touch платформами - Apple выпустила специальный комплект средств для него. Более существенны будут изменения в механике игры. Все передвижение и взаимодействие сделаны для управления клавиатурой и мышью, но сам жанр игры может быть устроен с помощью touch-управления.

Рисунок 18 - Сравнение пользователей мобильных и станционарных платформ

3.3 Модель распространения игры


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

Такая система повышает продажи, снижая или убирая входной барьер для покупателей

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

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

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

Помощь при создании сообщества

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

«Плати сколько хочешь» помогает увеличить охват аудитории

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

«Плати сколько хочешь» как реальный пример в видеоиграх

Результаты игры Proun после 3 месяцев после запуска:

-      Полная выручка: 23 000 $;

-        Полное количество установок игры: 250 000;

         Средняя сумма, которая была отдана за одну покупку: 5.23$.

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

3.4 Платформы для продвижения игры

.io

Это веб-сайт, служащий для покупки, продажи и обсуждения игр. В сервисе уже более 40 000 наименований.

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

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

Это цифровая площадка для продажи и покупки видеоигр. Основной ее товар - это сборники игр, то есть вместо покупки одной, человек может получить сразу 5, 8 или 10. Минимальная цена каждого сборника равна одному доллару, максимальную выбирает сам покупатель.

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

3.5 Модель позиционирования игры


Превращение продуктов в сервис - это ответ на потребительский сдвиг, который влияет не только на видеоигры, но и на другие отрасли медиа в целом. Распространение интернета поощряет людей потреблять контент постоянно, ведь они могут то делать как дома, за персональным компьютером, так и в дороге, используя планшет или смартфон. Как пример - сервисы Netflix или Spotify.

Крупнейшие технологические компании уже начинают прокладывать дорогу все дальше в этом направлении не в последнюю очередь с помощью «Интернета вещей». Это означает, что в будущем можно ожидать больше технологических средств, которые могут подходить не только для простой связи с интернетом, но также и для развлечений. А облачные сервисы будут соединять их в одном сетевом пространстве.

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

Данная система основана на идеи вовлечения игроков в разработку игры, она признает их предложения по улучшению и изменению наполнения. Но развитие проекта должно идти так, чтобы первоначальная концепция все равно оставалась в «ядре» игры

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

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

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

3.6 Выставки для представления игры


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

Одна из самых важных конференций в СНГ. Она проводится в трех городах: Москва, Минск и Киев. DevGamm направлена именно на взаимоотношение разработчиков и издателей, то есть внутри нее проводятся мероприятия, которые помогают установить контакт между ними. На выставке присутствуют и обычные посетители, но их количество не так велико, потому на показ игр отводится немного времени. Во время мероприятия проводится конкурс DevGamm Awards, куда принимаются игры любого масштаба.: Play

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

Конференция включает в себя мероприятие Speed Game Dating. Оно представляет из себя трехминутные встречи издателей и разработчиков длительностью в один час. Здесь разработчик пытается продать игру без посредников за короткое время. Версия в альфа-тесте обязательна.

3.7 Издатели независимых игр


C 2008 года независимые игры сделали большой шаг вперед с выходом таких проектов как Braid и Super Meat Boy, которые продались тиражом более 500 000 и активно освещались в прессе. Поэтому начали появляться издатели, которые нацелены на небольшие игры, потому что сегмент показывает денежный потенциал.Digital

Это американский издатель компьютерных игр и кино. Компания была основана в 2009 году в Остине, штат Техас. Её основателями являются Майк Уилсон, Гарри Миллер и Рик Сталтс, ранее основавшие издательство Gathering of Developers и Gamecock Media Group. Деятельность компании сфокусирована на рынке цифровой дистрибуции и поддержке независимых разработчиков за счёт рекламного продвижения и финансовой поддержки их игр.

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

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

-      Реиграбельность. То есть у игрока должно возникать ощущение пройти игру снова;

-        Stream-friendly. Это означает, что в них должны быть интересные элементы для их потокового вещания в интернет;

         Сетевой элемент. То есть игра должна содержать компонент соревновательного или кооперативного режима.

3.8 Экономические расчеты


Расходы

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

Подряд

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

-      30 000 рублей;

-        40 000 рублей;

Продвижение

Маркетинг одна из самых сложных вещей для независимого разработчика. Несмотря на то, что основные площадки, такие как собственный сайт и группы в социальной сети, бесплатны, реклама на социальных площадках необходима, также стоит учитывать продвижение на выставках. Предположительно на это будет потрачено 200 000 рублей.

Зарплата

Она включает в себя затраты на проживание, питание, а также трудовую силу разработчика. На зарплату предположительно будет потрачено 200 000 рублей.

Прибыль

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

* 7 000 = 700 000 рублей

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

3.9 Целевая аудитория


Целевая аудитория жанра стратегия в реальном времени обычно включает в себя два сегмента игроков:

Сегмент средних игроков:

24% игроков на ПК;

Играют в игры меньше пяти часов в неделю;

Большинство мужского пола.

Сегмент серьезных игроков:

20% аудитории;

Играют в игры пять и больше часов в неделю;

Большинство мужчины.

Сервис SteamSpy сообщает, что среднестатистический пользователь Steam играет примерно более 11 часов в неделю. Он имеет в среднем 10 игр в собственности. Разделение платных и бесплатных игр примерно идет на половину.

На основании проведенного анализа состояния игровой сферы и независимого сегмента в частности можно сделать следующие выводы.

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

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

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

Заключение


Видеоигры сегодня это большая отрасль медиа, которая занимает все большее место в человеческой жизни. С ростом использования технологий спрос на них будет только увеличиваться. Как показал анализ рынка, аналитики предсказывают, что весь сектор к 2019 году будет равняться 119 миллиардам долларов.

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

Сегодня все большую популярность обретает сервис как вид распространения контента. Имеет смысл использовать данную стратегию распространения и с маленькими играми, потому что это помогает выпустить игру до ее завершения, чтобы аудитория помогала разработчику обратной связью.

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

Целью выпускной квалификационной работы было создание базиса механики стратегии в реальном времени. После анализа различных инструментов для разработки был выбран Unity Engine по следующим причинам:

Проекты, сделанные на Unity, удобнее переносить на другие платформы, потому что его поддерживают как производители домашних систем, так и мобильных платформ;

Большое сообщество;

Наличие магазина, в котором продается различный игровой материал;

Средство бесплатно до тех пор, пока доход использующего его разработчика не будет более 10 000 долларов в год.

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

Во время разработки применялись основные функции части Unity, которая отвечает за трехмерные игры. Был использован физический движок, который производит компьютерное моделирование физических законов реального мира в виртуальном, а также часть, которая отвечает за вычисление столкновений. Был применена система навигации, с помощью которой юниты могут точнее передвигаться. Часть второй главы «Тестирование ПО» показала, что функции являются рабочими.

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

Список литературы


1. Джон Шарп, Microsoft Visual C#. Подробное руководство / Джон Шарп : Питер, 2017. - 848 с.

. Францеско Сапио, Пользовательский интерфейс, Францеско Сапио : Packt Publishing, 2015. - 284 с.

. Хорхе Паласиос, Программирование искусственного интеллекта в играх / Хорхе Паласиос : ДМК Пресс, 2017. - 274 с.

. Майкл Доусон, Изучаем C# через программирование игр / Майкл Доусон : Питер, 2016. - 352 с.

. Патриция Пелланд, Visual C#. Краткое руководство / Патриция Пелланд : Microsoft Press, 2010. - 253 с.

. Володимир Герасимов, Создание уровней в Unity / Володимир Герасимов : Packt Publishing, 2015. - 274 с.

. Саймон Джексон, Основы графического интерфейса Unity/ Саймон Джексон : Packt Publishing, 2015. - 280 с.

. Джефф Мюррей, C# Программирование на Unity / Джефф Мюррей : CRC Press, 2014. - 452 с.

. Джейсон Грегори, Архитектура игрового движка / Джейсон Грегори : CRC Press, 2010. - 830 с.

. Джастин Браун, Видеоигры: Специальный доклад / Джастин Браун // Economist. - 2011. - 12.10. - С. 57 - 66.

. Джере Майлз, Unity 3D и основы игростроения / Джере Майлз : CRC Press, 2016. - 482 c.

Похожие работы на - Создание механики стратегии в реальном времени

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!