Українська   English
ДонНТУ   Портал магистров

Реферат по теме выпускной работы

При написании данного реферата магистерская работа ещё не завершена. Окончательное завершение: декабрь 2014 г. Полный текст работы и материалы по теме могут быть получены у автора после указанной даты.

Содержание

Введение
1. Актуальность темы
2. Цель и задачи исследования, планируемые результаты
3. Обзор типовой структуры игрового движка
3.1 Графика
3.2 Искусственный Интеллект (ИИ)
3.3 Физика
3.4 Аудио
3.5 Ввод пользователя
3.6 Фреймворк
3.7 Менеджеры
4. Обзор источников
5. Анализ будущего проекта
Выводы
Список источников

Введение

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

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

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

Стратегическая карта в динамике. Игра "Machines at War"

Рисунок 1 — Стратегическая карта в динамике. Игра Machines at War [3]
(анимация: 147 килобайт, повторение 6 раз, 10 кадров, интервалы показа кадров [2с, 1с (8 кд.), 5с]

1. Актуальность темы

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

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

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

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

2. Цель и задачи исследования, планируемые результаты

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

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

Объект исследования: архитектура игрового движка и его компоненты.

Предмет исследования: разработка игрового движка для компьютерных игр жанра стратегия.

3. Обзор типовой структуры игрового движка

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


Типичная структура современного игрового движка

Рисунок 2 — Типичная структура современного игрового движка


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

Далее по подразделам следуют описания и пояснения к каждому из компонентов.

3.1 Графика

За графику в игровом движке отвечает графический движок. Наилучшее определение понятия графический движок найдено на википедии: Графический движок – это промежуточное программное обеспечение, программный движок, основной задачей которого является визуализация (рендеринг) двухмерной или трёхмерной компьютерной графики [6]. Стоит отметить, что графические движки могут существовать (и существуют), как отдельные от игрового движка полноценные продукты. Графические движки бывают разного вида и предназначения, начиная от предназначенных для визуализации отдельных изображений или компьютерного видео, заканчивая движками предназначенных для сложной трёхмерной графики, формально называемыми несколькими разными именами-синонимами рендереры, отрисовщики или визуализаторы, которые используются в компьютерных играх или же просто системах трёхмерного моделирования (таких, как 3ds Max, Maya, Cinema 4D, Zbrush, Blender).

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

В примитиве — берут на себя типичную задачу отобразить на экране обозримое пространство, видимое из точки по направлению.... Но также имеют множество параметров-настроек, влияющих на качество и вид выходящей картинки, начиная от разрешения кадра и угла обзора, продолжая такими весомыми параметрами как качество текстур, теней и эффектов, и заканчивая различными технологиями улучшения качества изображения как фильтрация (билинейная, трилинейная, анизотропная), шейдеры, mapping (bumpmapping, parallax mapping), Anti-Aliasing (сглаживание), тесселяция, вертикальная синхронизация, пост-обработка, High Dynamic Range, bloom, glow, film grain, motion blur, SSAO (Screen Space Ambient Occlusion - преграждение окружающего света в экранном пространстве), Cel shading, Depth of field (глубина резкости), с более подробным описанием которых можно ознакомиться по ссылкам в списке источников [7] [8].

3.2 Искусственный Интеллект (ИИ)

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

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

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

Как компонент игрового движка, модуль искусственного интеллекта предоставляет разработчику набор действий, функций и триггеров, которые могут выполнять объекты обладающие разумом, а также средства связывания их между собой и механизм задания условий переходов между состояниями. Более того, модуль ИИ часто включает в себя алгоритмы оптимизации, поиска наилучшего решения и другое. На сайте habrahabr.ru есть отличный набор статей по искусственному интеллекту [10]

3.3 Физика

Физический движок — компьютерная программа, которая производит компьютерное моделирование физических законов реального мира в виртуальном мире, с той или иной степенью аппроксимации. Чаще всего физические движки используются не как отдельные самостоятельные программные продукты, а как составные компоненты (подпрограммы) других программ [11].

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

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

3.4 Аудио

Звуковой движок — программный компонент игрового движка, отвечающий за воспроизведение звука (шумовое и музыкальное оформление, голосов персонажей) в компьютерной игре или другом приложении. Звуковой движок часто отвечает также за имитацию определённых акустических условий, воспроизведение звука согласно местоположению, эхо и т. д. [12].

3.5 Ввод пользователя

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

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

3.6 Фреймворк

Фреймворк (внутренняя интегрированная среда) — компонент, который объединяет воедино все компоненты движка, инициализирует их работу, а также хранит в себе информацию о сцене [5].

Цикл игры выполняется во фреймворке и имеет следующий порядок (рисунок 3):

Основной цикл игры

Рисунок 3 — Основной цикл игры

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

3.7 Менеджеры

Менеджеры обеспечивают поддержку глобальных функций в рамках движка и реализуются в виде singleton-объектов, иными словами, менеджер каждого типа доступен только в одном экземпляре [5]. Их цель состоит в управлении ресурсами движка, регистрации изменений, планировании задач и учёта общего состояния игрового движка, позволяя как реализовывать возможность работы самого движка как такового, но также и оптимизировать процесс его работы.

4. Обзор источников

В результате поиска работ, посвящённых тематике данной работы, в интернете было найдено множество работ со связанной тематикой, информация которых была использован при написании данного реферата, ознакомиться с ними можно посмотрев ссылки в списке источников данного реферата. Стоит отметить, что в интернете имеются редкие, но достаточно информативные и познавательные ресурсы посвящённые разработке игровых движков (например 3D Game Engine Programming), однако обнаруженные ресурсы, тесно связанные с тематикой данной работы и качественно реализованные, англоязычны, т.е. в русскоязычных и украиноязычных сообществах вопрос конструирования игровых движков освещается гораздо слабее, ограничиваясь преимущественно описанием API уже разработанных игровых движков и инструкциями по их использованию.

Локально, на портале магистров ДонНТУ было обнаружено достаточное количество работ по темам, имеющим отношение к 3D рендерингу и разработке интерактивных приложений, ознакомиться с ними можно в разделе ссылки. Отдельно стоит отметить из них одну наиболее релевантную работу Илькуна В.П. Инструментальные средства для разработки компьютерных игр жанра экшн от первого и третьего лица [13].

5. Анализ будущего проекта

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

В качестве среды разработки игрового движка будет использована Visual Studio 2012. Используемый язык программирования — C++. В качестве графической системы будет использован примитивный рендерер, написанный с использованием OpenGL. Воспроизведение звука будет осуществляться с помощью OpenAL, какой-либо серьёзный физический движок для игры жанра стратегия не нужен, физических процессов, требующих какого-либо расчёта — минимум. Поскольку игра компьютерная, управление будет заточено, очевидно, под клавиатуру и мышь. В движке будут предусмотрены команды управления искусственным интеллектом объектов соответствующего военной стратегии типа (пехота, танки, авиация), для написания алгоритмов поведения юнитов будет использован скриптовый язык Python.

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

Выводы

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


Список источников

  1. GameDev.ru / Программирование / Термины / Движок (игровой движок) [Электронный ресурс]. — Режим доступа: http://www.gamedev.ru/...
  2. Чеканов Д. Анатомия игровых движков [Электронный ресурс]. — Режим доступа: http://www.3dnews.ru/...
  3. Machines at War. A real time strategy on massive scale [Электронный ресурс]. — Режим доступа: http://www.isotope244.com/... (использована анимация)
  4. Robotex Пишем игровой движок, статья на habrahabr.ru [Электронный ресурс]. — Режим доступа: http://habrahabr.ru/...
  5. Эндрюс Дж. Проектирование архитектуры параллельного игрового движка [Электронный ресурс]. — Режим доступа: http://www.uraldev.ru/...
  6. Википедия. Графический движок [Электронный ресурс]. — Режим доступа: http://ru.wikipedia.org/...
  7. Настройки графики в играх и на что они влияют [Электронный ресурс]. — Режим доступа: http://itc.ua/...
  8. Белокриницкий А. Настройки графики в играх: с чувством, с толком, с расстановкой [Электронный ресурс]. — Режим доступа: http://www.notebook-center.ru/...
  9. Википедия. Игровой Искусственный Интеллект [Электронный ресурс]. — Режим доступа: http://ru.wikipedia.org/...
  10. Искусственный интеллект. Раздел сайта habrahabr.ru [Электронный ресурс]. — Режим доступа: http://habrahabr.ru/...
  11. Википедия. Физический движок [Электронный ресурс]. — Режим доступа: http://ru.wikipedia.org/...
  12. Википедия. Звуковой движок [Электронный ресурс]. — Режим доступа: http://ru.wikipedia.org/...
  13. Илькун В.П. Инструментальные средства для разработки компьютерных игр жанра экшн от первого и третьего лица [Электронный ресурс]. — Режим доступа: http://masters.donntu.ru/...