Рисунок 1.1 Структурная схема СКДИ
Структурная схема включает в себя ряд подсистем.
Подсистема проектирования предназначена для разработки сценариев деловых игр.
Подсистема проведения предназначена для проведения деловой игры с использованием сценариев разработанных в подсистеме проектирования.
Подсистема мониторинга предназначена для отслеживания хода игры и результатов игроков.
Подсистема анализа предназначена для обработки результатов прохождения деловой игры и получения отчетов качества методического обучения.
Подсистема корректировки предназначена для оперативного изменения элементов и процесса деловой игры.
Подсистема измерения использует контрольно-измерительные материалы, которые позволяют определить уровень сформированных компетенций [13].
Результатом прохождения деловой игры можно считать уровень выработанных в процессе обучения компетенций.
При реализации среды СКДИ возникает несколько проблем, в том числе и проблема представления деловой игры для обучаемого, отображение, разработанных в подсистеме проектирования, сценариев игры, а так же, как осуществить управление элементами и действиями игрока в соответствии с логикой деловой игры.
В качестве средства для визуального отображения игровых сценариев будет служить игровой движок. На данный момент существует огромное множество представителей игровых движков, и их количество с каждым годом только увеличивается. В зависимости от требований которые ставятся перед игрой можно сделать выбор в пользу того или иного средства разработки.
Игровых движков, которые могут быть использованы для разработки деловой игры, существует огромное множество. Их спецификации варьируются от конструкторов с простой графикой до промышленных игровых движков, с передовыми возможностями и графикой нового поколения. Также выбор средства разработки может зависеть от целевой платформы и средств разработки, которые будут использованы в ходе создания игры.
На данный момент в сфере игровых движков существует большой выбор, что позволяет найти подходящее средство разработки каждому. Для того чтобы определить наиболее подходящий именно для данной работы, необходимо сравнить самые популярные игровые движки, которые представлены на рынке.
Для сравнения возьмем четыре наиболее популярных и востребованных движков.
Unity3D является активно развивающимся игровым движком. В первую очередь его популярность связана с низким уровнем вхождения и удобством использования, что позволяет вести разработку без особых глубоких знаний. Unity распространяется абсолютно бесплатно с пользовательской лицензией. Она позволяет использовать программу до тех пор, пока ежегодных доход не превысит 100 тыс. долларов, после чего разработчики предлагают перейти на одну из трех платных программ подписки. Unity содержит огромное количество инструментов, которые помогают в разработке. Для программирования используется высокоуровневый язык C# или JavaScript. Unity позволяет создавать игры абсолютно любых жанров, а также экспортировать их на 21 платформу, среди которых: Windows, iOS, Android, macOS, Xbox, Playstation и другие [14]. Unity также отличает огромное сообщество и колоссальный магазин компонентов для движка - Asset Store, в котором продаются элементы для игр.
Unreal Engine 4 игровой движок от студии разработчиков Epic Games. За последние несколько лет UE кардинально изменился. На данный момент движок распространяется по бесплатной лицензии, взымается 5% роялти от продажи проекта, приносящего более 3000 долларов в квартал. С помощью движка можно разрабатывать как простые двухмерные игры так и трехмерные игры любых жанров. UE предоставляет два пути создания проекта: при помощи графического скриптового языка Blueprint или C++. В первом случае операции связываются между собой с помощью графического редактора. Во втором случае описание геймплея осуществляется на языке C++. UE оснащен всеми необходимыми для разработки игр редакторами и поддерживает все популярные платформы.
Cryengine также является одним из бесплатных игровых движков. Он главным образом нацелен на разработку MMO-игры с передовой графикой. В движке хорошо проработана сетевая подсистема, есть поддержка широкого ряда современных технологий. Движок активно развивается и часто получает обновления. Причиной этому является открытый код, доступ к которому может получить любой желающий. Также Crytek активно занимается поддержкой инди-разработчиков на движке Cryengine. Абсолютно любой проект, разработанный на игровом движке, может получить финансовую и техническую поддержку, победив в конкурсе.
Игровой движок Lumberyard является ответвлением от оригинального Cryengine. Этот движок разрабатывается компанией Amazon. Разработчики встроили в игровой движок поддержку облачных технологий -Amazon Web Services и Twitch [14]. Это позволяет работать и хранить данные в облаке Amazon. Вместе с тем, эти сервисы подходят для разработки массивных мультиплеерных проектов. Игровой движок абсолютно бесплатный с открытым кодом. В Lumberyard есть графический редактор кода, схожий с редактором в UE4, он позволяет связывать сущности с компонентами. Также система генерации кода позволяет модифицировать старый код C++ и создавать новый.
Ниже, в табл.1.1 представлено сравнение описанных выше игровых движков.
Таблица 1.1 Сравнение игровых движков
|
Показатели |
Unity3D |
Unreal Engine 4 |
Cryengine |
Lumberyard |
|
Цена |
Персональная версия - бесплатно Плюс версия - 35 долл/мес с человек Про версия - 125 долл/мес с человек |
Бесплатно + 5% роялти с проектов с доходом 3000 долл./мес |
Бесплатно |
Бесплатно |
|
Порог вхождения |
Низкий |
Средний |
Средний |
Средний |
|
Исходный код |
Закрытый |
Открытый |
Открытый |
Открытый |
|
Платформа для использования |
Windows, macOS |
Windows, macOS |
Windows |
Windows |
|
Способ создания проекта |
C# |
Blueprint, C++ |
C++, C# |
Графический редактор, C++ |
|
Целевые платформы |
iOS, Android, Windows 8 Store, Windows 10 Store, macOS, PS3, PS4, Xbox 360, Xbox One, Wii U, Oculus Rift, Gear VR, PlayStation VR, Samsung Smart TV и тд. |
iOS, Android, Windows 8 Store, Windows 10 Store, macOS, PS3, PS4, Xbox 360, Xbox One, Wii U, Oculus Rift, Gear VR, PlayStation VR, Samsung Smart TV и тд. |
Windows, Linux, PlayStation 4, Xbox One. |
Windows, PlayStation 4, Xbox One. |
Сравнение показывает, что все современные игровые движки обладают как
достоинствами, так и недостатками, однако в основном предоставляют схожие
возможности. В результате для данной работы выбор был сделан в пользу Unity3D. Это в первую очередь связано с предпочтением языка
программирования C#. Также игровой
движок является относительно простым для понимания и использования, что позволит
сократить время на разработку игры.
В рамках выполнения выпускной квалификационной работы необходимо понять, возможно ли применение платформы Unity для создания деловых игр. Для этого выделим основные критерии, которые необходимы при реализации компьютерных деловых игр.
. Основой любой КДИ является сценарий, программы руководителя и участника и регламент.
. Игра должна быть привлекательной для пользователя, чтобы сосредотачивать его внимание на себе, для продуктивного обучения.
. Одно из главных преимуществ индивидуальной КДИ является то, что у пользователя есть возможность установить программу дома.
В работе предполагается, использовать игровые сценарии, которые будут созданы средствами СКДИ. Реализованы модули СКДИ будут при помощи веб-сервисов, что ставит перед игровым движком требование поддержки данной службы.
На основе описанных критериев можно провести проверку пригодности платформы Unity для разработки КДИ.
Для того чтобы задавать необходимые правила взаимодействия внутри игровых элементов Unity3D использует скрипты - программный код, описывающий эти правила на языках C# и JavaScript.
Благодаря архитектуре игрового движка игры можно создавать для любой платформы и в случае необходимости легко сменить ее. Это позволит создавать как настольные, так и мобильные приложения.
Для работы необходимо реализовать визуальное представление игровых сценариев СКДИ при помощи средств Unity3D, в то время как игровая логика должна быть реализована при помощи веб-сервиса. Для того чтобы понять, возможно ли выделить игровую логику отдельно от визуальной части, определим какие элементы отвечают за игровую логику, а какие за визуальное представление [15].
Для того чтобы визуализировать игровые элементы движок использует GameObject. В случае с 3D игрой это могут быть геометрические фигуры, 3D модели и т.д. В 2D играх используются Sprites чтобы отобразить игровой объект. Также Unity обладает элементами UI, которые используются для реализации пользовательского интерфейса и могут быть одним из ключевых элементов в ходе разработки компьютерной деловой игры. Для отображения игровых элементов на экране используется Camera.
Для того чтобы задавать логические связи и правила взаимодействия внутри игрового мира Unity использует скрипты, которые описываются при помощи высокоуровневого языка программирования C# или JavaScript. При помощи скриптов можно задавать как порядок действий на сцене, так и правила по которым будут взаимодействовать друг с другом и с игроком игровые элементы.
Также при помощи скриптов игровой движок позволяет взаимодействовать с реляционными базами данных, такими как Microsoft SQL Server а также позволит взаимодействовать с управляющими модулями СКДИ, реализованными с помощью веб-сервисов.
Исходя из возможностей игрового движка, которые были описаны выше, можно сделать вывод, что Unity обладает необходимым для разработки КДИ функционалом. Также, благодаря структуре игрового движка, становится возможным разделить визуальную и логическую части игр, что позволит нам выделить игровую логику отдельно в модуль СКДИ. Движок является отличным инструментом, который можно использовать для разработки деловой игры на основе сценариев СКДИ.
В рамках данной работы необходимо разработать подсистему взаимодействия между логической и визуальной частью ДИ. Для реализации визуальной части используется игровой движок Unity3D. Выделим основные функции, за которые будет отвечать движок. В первую очередь игровой движок будет отрисовывать все элементы и сцены внутри игры. Также при помощи высокоуровневого языка программирования C# зададим основные правила взаимодействия игровых элементов в сцене, их свойства и характеристики, эти свойства не будут меняться в рамках игры.
В отличие от других компьютерных игр, где игровая логика прописана на игровом движке и находится внутри игры, в работе за игровую логику будет отвечать СКДИ. Веб-сервис, на котором планируется реализовать СКДИ, будет брать модель бизнес-процесса и, основываясь на ней, создавать игровые сценарии. Игровой сценарий должен хранить в себе игровую логику, правила взаимодействий игрока с игровыми предметами, свойства игровых сцен и предметы в них.
В работе необходимо создать подсистему взаимодействия между веб-сервисом СКДИ и визуальной частью игры. Проблема заключается в том, что сценарии СКДИ должны быть представлены в виде строки на языке логический схем алгоритмов (ЛСА), в то время как Unity располагает своими сущностями, сценами и объектами в сцене.
Для взаимодействия визуальной части деловой игры и для проведения деловой
игры СКДИ предлагается использовать зашифрованную шестнадцатеричную
строку-взаимодействия. Строка-взаимодействия должна хранить информацию об одном
или нескольких ресурсах, их свойствах и задачах, которые необходимо
визуализировать для обучающегося в игре.
Для того чтобы два модуля могли взаимодействовать друг с другом необходимо сформировать структуру, которую можно будет использовать как при кодировании, так и при декодировании сообщений между СКДИ и подсистемой визуализации:
. При совершении игроком действия должна посылаться информация об этом действии в СКДИ.
. При изменении свойств игровых объектов, происшествии каких либо событий, должна посылаться информация об этом в СКДИ.
. При изменении свойств или параметров ресурсов в СКДИ, должна посылаться информация игровому движку об изменениях у тех или иных объектов, с параметрами для них.
. При изменении игровой сцены в СКДИ, должна посылаться информация об изменении и состоянии игровой сцены которую необходимо применить в игровом движке.
Для пересылки информации будет использоваться шестнадцатеричная строка-взаимодействия.
На основе сформированных функциональных требований выделим прецеденты:
. Передать информацию в СКДИ от подсистемы визуализации о ресурсе.
. Передать информацию в подсистему визуализации от СКДИ о ресурсе.
. Передать информацию в СКДИ от подсистемы визуализации о произошедшем в сцене событии.
. Передать информацию в подсистему визуализации от СКДИ о произошедшем в сцене событии.
. Передать информацию в СКДИ от подсистемы визуализации о сцене.
. Передать информацию в подсистему визуализации от СКДИ о сцене.
Главной целью системы взаимодействия между подсистемы визуализации и СКДИ является передача информации между двумя визуальной частью и логической частью деловой игры.
Как видно из выделенных нами прецедентов при помощи строки нам необходимо передавать информацию о трех сущностях: сцена, ресурс и событие. На основе выделенных сущностей будем делить строку на три типа: строка с информацией о сцене; строка с информацией о ресурсе; строка с информацией о событии. Исходя из этого, сформируем структуру данной строки, для взаимодействия СКДИ и подсистемы визуализации между собой.
Первоначально разделим строку на две структурные части:
. Первая часть. Информационная часть.
. Вторая часть. Параметризованная часть.
Первая часть строки будет нести общую информацию о типе и количестве
взаимодействий данного типа, которые описаны в этой строке. На основе этого,
можем сформировать первую часть строки. Для определения типа выделим один
символ в строке, для определения количества взаимодействий выделим два символа,
что позволит нам в одной строке описывать до двухсот пятидесяти шести
взаимодействий одного типа. Закодируем типы взаимодействия следующим образом: 0
- сцена, 1 - ресурс, 2 - событие. Пример представлена в табл.2.1. В данной
строке закодировано, что строка хранит информацию о десяти событиях.
Таблица 2.1 Пример первой части строки-взаимодействия
|
Тип взаимодействия |
Количество взаимодействий |
|
|
2 |
0 |
A |
Ограничением для строки будет является то, что в одной строке-взаимодействия может храниться информация только об одном типе взаимодействий.
Для того чтобы сформировать вторую часть строки необходимо определить какие параметры должны в ней храниться. Так как в одной строке может быть закодирована информация о нескольких сущностях одного типа, первоначально необходимо определить к какой сущности относятся параметры. Для этого во второй части строки первые два символа будут отвечать за кодировку сущности, к которой относится взаимодействие, будь то игрок или игровой объект.