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

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

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

Содержание

Введение

Шутер от первого лица (англ. First Person Shooter, FPS) — жанр видеоигр, в котором игровой процесс основывается на сражениях с использованием огнестрельного и метательного оружия с видом от первого лица: игрок воспринимает происходящее глазами главного героя (см. рис. 1). В целом шутеры от первого лица имеют многие общие черты со всеми остальными шутерами, которые, в свою очередь, являются подвидом аркадных игр. С момента появления жанра, сложные трёхмерные или псевдотрёхмерные графические элементы ставили сложные задачи перед разработчиками аппаратного обеспечения компьютеров.

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

Рисунок 1 – Шутер от первого лица
(анимация: 20 кадров, 60 мс задержка, 148 килобайт)

Возможность создавать собственный шутер самостоятельно обеспечивает не только полный творческий контроль, но и более уникальный потенциал развития проекта, используя строго ограниченный бюджет. Ведь, когда вы сами делаете свой проект, вы сами себя финансируете, опираясь только на своё видение ситуации. Благодаря доступности инструментов (движков и конструкторов, редакторов контента) можно разрабатывать различные игры, от простого SMB-подобного платформера до MMO RPG.

Многие компании всё ещё делают AAA-игры, как «Assassin's Creed» или «Call of Duty», тысячными составами, но мелкие инди-разработчики уже частенько могут конкурировать с ними по популярности и прибыли, выпустив меньшие игры даже для мобильных систем. Это говорит о том, что вместо набора больших команд, покупки дорогостоящего инструментария, можно использовать доступные всем средства, сосредоточившись на оригинальности идеи [1].

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

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

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

Таким образом, разработкой видеоигр занимается разработчик, который может быть представлен как одним человеком, так и фирмой. Разработка AAA проекта (высший класс) стоит от миллиона долларов и более. Процесс разработки обычной современной игры занимает около года, для ААА-проектов может затянуться до 2-3 лет. Цикл разработки обычных «казуальных» игр занимает порядка 4-6 месяцев, при том, что идет конвейерная разработка сразу 2-3 проектов. Для разработки игр используют различные инструментальные средства, одним из которых является конструктор игр.

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

Иногда конструкторы игр ограничены тем или иным жанром (например аркадами, RPG или квестами). В простейшем случае к конструкторам можно отнести готовую игру с продвинутым редактором игр (напр. Cube или Stratagus). На другой стороне спектра находятся классические среды программирования, ориентированные на разработку игр, такие как Blitz BASIC [3].

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

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

Основные задачи исследования:

1. Обзор и анализ существующих игровых движков.

2. Обзор и анализ существующих конструкторов игр и сред разработки игр.

3. Разработка нового эффективного конструктора по созданию компьютерных игр жанра шутер.

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

5. Анализ полученных результатов и оценка эффективности разработанного проекта.

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

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

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

3. Обзор исследований и разработок

Стоит отметить, что за последние два года грань между игровыми движками и конструкторами игр была серьёзна размыта. Если раньше можно было сказать, что игровой движок - это голый кусок кода с минимальным набором редакторов ( или вовсе без них ) и прочих прелестей, облегчающих жизнь, а конструктор - это «закрытый» код, обвешанный всевозможными визуальными редакторами и снабжённый определённым базовым контентом, то теперь многие игровые движки исповедуют «визуальный» подход к созданию игр, поддерживают всевозможные принципы drag&drop, слайдеры, ползунки, визуальные редакторы почти для всего на свете при минимизации ручного написания программного кода. Наиболее яркий пример - игровой движок Unity, который до 90 % работы по созданию игры позволяет проводить в своём редакторе [4].

3.1 Обзор сред разработки

Blitz3D - это среда разработки, предназначенная для быстрого создания игровых проектов с использованием трехмерной графики и основанная на языке программирования под названием BlitzBasic. По сути, BlitzBasic базируется на синтаксисе языка Basic, который получил широкое распространение и известность благодаря своей простоте в изучении и использовании. Кроме того, Blitz3D позволяет подключать к проекту библиотечные файлы, написанные на других языках, что исключительно расширяет его возможности. Простота создания игр на этом языке достигается тем, что он практически полностью состоит из уже готовых команд для работы с графическими и другими объектами. Таким образом, чтобы, например, отобразить на экране куб, сферу или конус, достаточно одной строчки, в которой будут присутствовать название объекта и его параметры (координаты центра и размеры), а также команда отображения на экране. Чтобы проделать с предметом какие-либо действия наподобие вращения, перемещения и т.д., достаточно двух-трех команд. Вместо простейших геометрических примитивов можно брать и более сложные объекты (рельеф местности, модели персонажей, антураж лабиринтов): основные команды по их манипулированию останутся теми же. Blitz3D - хороший инструмент для создания казуальных или мини-игр [5].

Unity 3D - система разработки 3D приложений для Mac OS, Windows, Wii, Xbox 360, PlayStation 3, iOS и Android. Обладает продвинутым редактором, «заточенным» на визуальный подход к созданию игр. Доступна бесплатная инди-версия и профессиональная лицензия (1500 $). Хорошо подходит для казуальных и инди-проектов.

Unreal Development Kit (UDK) - мощный набор инструментов для создания интерактивных 3D-приложений и игр на базе игрового движка Unreal Engine 3. Пригоден для создания игр высшего, AAA-класса. Бесплатен для некоммерческого использования, доступно коммерческое лицензирование по схеме «99 $ + 25 % от прибыли после первых заработанных 50.000 $». Поддерживает платформы Windows и iOS.

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

Конструкторы игр:

Game Maker - популярный и простой в освоении конструктор игр, позволяющий создавать игры без глубокого знания программирования. Поддерживает платформы Windows, iOS и Android.

RPG Maker - серия конструкторов игр в стиле jRPG (от japaneseRPG, японская ролевая игра). Конструктор прост в освоении и поставляется с готовым набором контента.

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

3.2 Перечень свободных и коммерческих движков игр

Свободные движки:

• Agar (англ.) – высокоуровневый каркас графического приложения, используемый для разработки как 2D, так и 3D компьютерных игр.

• Axiom Engine – ответвление, содержащее в основе графический движок OGRE.

• Boom – порт исходного кода игры Doom от TeamTNT.

• CheapHack (англ.) – более не разрабатываемый движок на основе TomazQuake.

• Crystal Entity Layer – расширение движка Crystal Space 3D Engine.

• Crystal Space – полный каркас для разработки 3D приложений.

• DarkPlaces – один из многих усовершенствованных свободно распространяемых Quake engines.

• Daybreak motor – объектно-ориентированный графический движок для XNA (XNA 3d engine – Xbox, Windows).

• Delta3D (англ.) – соединяет другие хорошо известные бесплатные проекты в простое API, изначально разрабатывался U.S. Navy.

• DGD – объектно-ориентированный MUD движок.

• Eternity Engine – исходный порт движка игры Doom.

• Exult (англ.) – свободная реинкарнация игрового движка Ultima VII.

• FIFE (англ.) – свободный 2D ISO движок, поддерживающий ресурсы Fallout 1 и 2.

• Game Blender – под-приложение Blender для создания игр.

• Game Maker – объектно-ориентированный программный продукт для разработки игр с drag-and-drop интерфейсом и своим скриптовым языком.

• GQ – движок игры Quake, который включает в себя фичи из TomazQuake и DarkPlaces.

• GZDoom – исходники игрового движка Doom, основанные на ZDoom.

• Genesis3D – 3D движок реального времени для Windows.

• GemRB – свободная реализация Infinity Engine.

• HGE – Haaf’s Game Engine, движок для создания 2D игр.

• Jogre – клиент/серверный игровой движок, написанный на языке Java, содержащий API для онлайновых игр реального времени, будь-то шашки, шахматы, и прочее.

• MGF – Mortem’s Game Framework – активно развивающийся игровой фреймворк с открытым исходным кодом для игровой консоли PSP на языке С++.

• MRPGe – игровой движок для Visual Basic, для двухмерных RPG-игр, со встроенным скрипто-языком. Весьма изменяем на ранних стадиях разработки.

• M.U.G.E.N – двухмерный движок для игр жанра файтинг (например, Mortal Kombat).

• Multiverse Network – MMOG платформа, включающая сервер, клиент, и инструментарий.

• Nebula Device – трехмерный игровой движок реального времени, разработанный немецкой студией игр Radon Labs.

• OctLight – игровой движок на Java, использующий scene-graph, и отрисовывающий на базе Lightweight Java Game Library (LWJGL), используя OpenGL.

• OMEGA Engine – простой в использовании 2D движок. Использует в качестве рендера Direct3D8 или OpenGL, для звука – DirectSound.

• OSlib – Old School Library – библиотека для портирования старых игр на PSP или написания 2D игр в стиле игр прошлых лет на языке С++.

• Pentagram – проект создающий игровой движок, который используется в выпущенной игре Ultima VIII: Pagan.

• PLIB – игровой движок, включающий в себя: трехмерку, звук, музыку, графические интерфейс пользователя, менеджера окон, и портируемый на Linux/Windows/MacOSX.

• pH Engine – мощный и гибкий ООП движок, использующий Direct3D9 (Рендер), DirectSound (Звук) и TCP/IP (Сеть). Возможность «наращивания» возможностей с помощью плагинов.

• ProQuake – усовершенствованный движок игры Quake.

• QSP – популярный кроссплатформенный русский движок для создания игр в жанре Interactive Fiction.

• RealmForge – игровой движок с открытым кодом для Microsoft .NET Framework, предшественник Visual3D.NET.

• rRenderer – игровой движок современного уровня написанный на VB6, для DX8.

• Sauerbraten – усовершенствованный движок, ответвленный от движка Cube.

• SmartX – игровой движок использующий платформу .NET Framework. Написан на C#, но имеется возможность интеграции в языки поддерживающие технологию .NET.

• Storm3D – движок использующий Direct3D 9, написанный на С++.

• Stratagus – кроссплатформенный игровой движок для стратегических игр реального времени.

• Telejano – измененный движок игры Quake.

• URQ – популярный русский движок для создания игр в жанре Interactive Fiction.

• vbGORE – движок с открытым исходным кодом, на основе которого можно создать двухмерную онлайновую игру с некоторыми 3D эффектами.

• Yake – компоненто-основанный, объектно-ориентированный, частично родовой движок, написанный на C++.

• ZDoom – один из многих исходников Doom [7].

Коммерческие движки:

• Arcane Engine – разработан Wolfpack Studios для Shadowbane.

• Auran Jet – движок, разработанный австралийской компанией AURAN и используемый в игре Trainz.

• Baja Engine – движок профессионального качества, используемый для игры The Lost Mansion.

• Blitz3D – графический движок со своим языком программировнаия BlitzBasic.

• C4 Engine – появляющийся игровой движок следующего поколения от Эрика Ленгела.

• Dark engine – устаревший движок, использованный для игр Looking Glass Studios.

• Earth-4 Engine – графический движок, используемый в Earth 2160.

• Explorations – создатель двухмерных MMO.

• IMUSE – специально разработанный движок для синхронизации музыки с визуальными действиями.

• KjAPI – технология C++ для создания игр и трехмерных приложений для ПК.

• Medusa (игровой движок) – игровой трехмерный движок на C++ разработанный Palestar и использованный в игре DarkSpace MMO. В нем есть симуляция игрового мира, единый инструмент контроля версий, реализация активов, кроссплатформенная поддержка и встроенная система клиент/сервер.

• Odyssey Engine – использован для создания трехмерных ролевых игр, а также игры Star Wars: Knights of the Old Republic.

• ORE – онлайновый движок для ролевых игр.

• Quasar – игровой объектно-ориентированный движок следующего поколения, разрабатываемый компанией Syide Technologies.

• Power Render – основная цель этого пакета – разработка игр и трехмерных представлений.

• Reality Engine – трехмерный игровой движок компании Artificial Studios.

• Retribution Engine – игровой движок для создания игр в стиле Экшн.

• Revolution3D – трехмерный графический движок, разработанный X-Dream Project.

• Shark 3D – нечто среднее между Spinor для ПК, видео играми и трехмерными приложениями реального времени.

• Silent Storm engine – трехмерный игровой движок для тактических стратегий (напр. Silent Storm).

• Torque Game Engine – измененная версия игрового трехмерного движка, изначально разработанная Dynamix для игры 2001 FPS Tribes 2.

• TOSHI – кроссплатформенный игровой движок четвертого поколения, разработанный Blue Tongue Entertainment.

• Truevision3d – трехмерный игровой движок, использующий DirectX API.

• Unigine – кроссплатформенный middleware.

• Unity (game engine) – легко используемый игровой трехмерный движок.

• Vicious Engine – игровой движок, портируемый под Microsoft Windows, Sony PlayStation 2, Microsoft Xbox, и Sony PlayStation Portable.

• 3DGame Studio – полноценный игровой конструктор, целая система система для создания трехмерных игр.

• Visual3D.NET – трехмерная платформа для визуальной разработки окружения, построенная на Microsoft .NET 2.0 и XNA Framework для разработки под PC, Xbox 360, и устройств Windows Mobile поддерживающая C#, Visual Basic, J# (Java), C++.NET, JScript.NET, IronPython, и визуальное скриптование.

• Virtools – движок для создания игр, тренажеров и симуляторов, 3D Internet и систем виртуальной реальности.

• WGAF – игровой движок, разработанный Guild Software, который используется в их MMORPG Vendetta Online.

• White Engine – игровой движок седьмого поколения, принадлежащий Square-Enix, будет использован в их проектах для PS3. Продумана возможность использования заранее отрисованной качественной CGI графики в реальном времени.

• Xors3d Engine – движок для создания трехмерных игр. Начал свое существование как динамически подключаемая библиотека для Blitz3D, которая позволяет использовать GAPI DirectX9.

• Zero – трехмерный игровой движок, используемый в Star Wars: The Clone Wars, Star Wars: Battlefront, и Star Wars: Battlefront II.

• LyN engine – движок компании Ubisoft, используемый в собственных разработках.

• Vicarious Visions Alchemy – движок компании Intrinsic Graphics.

• Cry Engine 1-3 – игровой движок, созданный немецкой частной компанией Crytek в 2002 году и первоначально используемый в шутере от первого лица Far Cry.

• Id Tech – семейство игровых движков, разработанных американской компанией id Software.

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

• Serious Engine – игровой движок, разработанный хорватской компанией Croteam и впервые использованный в игре Serious Sam 2001 года выпуска. Технология находилась в разработке на протяжении трёх лет. Впоследствии компанией Croteam были разработаны более совершенные игровые движки – Serious Engine 2 и Serious Engine 3 [8].

3.3 Обзор локальных источников

В результате поиска работ, посвященных тематике данной работы, не было найдено ни одной работы соответствующей данному направлению. Поверхностный обзор по теме представлен в работах Частикина С.С. «Исследование средств создания объёмных моделей геометрических фигур и их связь с комплексным чертежом» [9] и Кодак Е.А. Исследование средств ускоренной разработки систем геометрического моделирования [10].

Однако, содержание работ имеет несколько другой характер.

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

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

1. Графический движок. Тут работа с нижележащими API (OpenGL, DirectX), работа с буферами памяти, шейдерами, процедурная генерация, жесткие оптимизации. Здесь C++ вне конкуренции.

2. Игровая логика. Как правило в конечном счете это просчет взаимодействий объектов с объектами. Причем объекты вполне соответствуют объектам в традиционном ООП понимании.Действия одних объектов, могут вызывать реакции в других; объекты могут образовывать сложные иерархии. Удобно воспользоваться объектно-ориентированным языком с автоматической сборкой мусора, чтобы сосредоточиться на поведении игровой среды. Например, C#, Java, Python, Ruby.

3. Алгоритмическая база. Различные варианты AI, работа с графами и сложными структурами данных, поиски и сортировки. Задачи, типичные для функциональных языков. F#, Scala, Lisp, Haskell, OCaml, Clojure. Разумеется, не стоит разводить зоопарк трудносовместимых сред в одном проекте. Но некоторые комбинации могут быть вполне эффективными: C++/Java/Scala, C++/C#/F#, C++/Python [11].

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

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

Irrlicht использует возможности OpenGL, DirectX и нескольких собственных рендереров. Пользователю предоставляются различные функциональные возможности по загрузке и управлению трёхмерными (3D) объектами (сцены, модели и т. п.), немногими спецэффектами и графическим интерфейсом пользователя. Рекомендуется для ознакомления с процессом разработки игр (Gamedev – «игростроительная индустрия»; «разработка игр») и создания несложных игр и демосцен (Irrlicht поддерживает форматы популярных игр и движков, в частности модели quake 2, quake 3, карты уровней и др.). Не требует подключения сторонних модулей для реализации высокоуровневых функций (есть простейшая физика, GUI (графический интерфейс пользователя) и т. д.). Существует три официальных дополнения для Irrlicht: IrrKlang (аудиобиблиотека), IrrXML (загрузка и обработка XML-файлов), IrrEdit (редактор сцен). Для использования расширенных функций физики существует физический движок ChronoEngine (по причине того, что в Irrlicht встроена примитивная физическая система) [12].

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

Также мы будем использовать интерфейс Windows Forms, отвечающего за графический интерфейс пользователя и являющегося частью Microsoft .NET Framework. Данный интерфейс упрощает доступ к элементам интерфейса Microsoft Windows за счет создания обертки для существующего Win32 API в управляемом коде. Причем управляемый код – классы, реализующие API для Windows Forms, не зависят от языка разработки. То есть программист одинаково может использовать Windows Forms как при написании ПО на C#, С++, так и на VB.Net, J# и др. С одной стороны Windows Forms рассматривается как замена более старой и сложной библиотеке MFC, изначально написанной на языке C++, но с другой стороны, WF не предлагает парадигму, сравнимую с MVC. Для исправления этой ситуации и реализации данного функционала в WF существуют сторонние библиотеки. Одной из наиболее используемых подобных библиотек является User Interface Process Application Block, выпущенная специальной группой Microsoft, занимающейся примерами и рекомендациями, для бесплатного скачивания. Эта библиотека также содержит исходный код и обучающие примеры для ускорения обучения. Внутри .NET Framework, Windows Forms реализуется в рамках пространства имён System.Windows.Forms.

Мы будем использовать .NET враппер Irrlicht Lime, для того чтобы запустить приложение с нужным нам интерфейсом. Irrlicht Lime – это один C++ .NET проект который использует родной (С++) Irrlicht внутри, и снаружи выдает только managed С++.

Managed C++ – набор дополнений к языку C++ (полностью называемых Managed Extensions for C++), позволяющих программам, написанным изначально на С++, управляться CLR и работать по технологии Microsoft .NET. Фактически эти дополнения позволяют писать управляемый код (англ. managed code), совместимый с платформой .NET Framework и исполняемый в среде .NET.

Для написания приложений на .NET-языке, используя Irrlicht достаточно в проект добавить .NET ccылку на IrrlichtLime.dll (рядом с которой обязательно должна лежать родная Irrlicht.dll).

Выводы

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

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

  1. Создание игр. Один в поле воин! Игрострой GCUP. 2013 // Режим доступа: http://gcup.ru...
  2. Создание игр. О начинающем разработчике инди-игр. Игрострой GCUP. 2013 // Режим доступа: http://gcup.ru...
  3. Конструктор игр. Википедия - свободная энциклопедия. - 2013 // Режим доступа: http://ru.wikipedia.org/wiki/...
  4. Как выбрать игровой движок или конструктор игр. 3D Graphics and me - блог о 3d графике и разработке игр, статьи, уроки, аналитика. - 2013 // Режим доступа: http://3dg.me/ru/gamedev/...
  5. Создание 3D игр на языке Blitz3D. Blitz-school - центр обучения созданию компьютерных игр. - 2013 // Режим доступа: http://www.blitz-school.info/
  6. Несколько популярных игровых движков и конструкторов игр. 3D Graphics and me - блог о 3d графике и разработке игр, статьи, уроки, аналитика. 2013 // Режим доступа: http://3dg.me/ru/gamedev/...
  7. Перечень свободных игровых движков. Википедия - свободная энциклопедия. - 2013 // Режим доступа: http://ru.wikipedia.org/wiki/...
  8. Перечень коммерческих игровых движков. Википедия - свободная энциклопедия. - 2013 // Режим доступа: http://ru.wikipedia.org/wiki/...
  9. Частикин С.С., Исследование средств создания объёмных моделей геометрических фигур и их связь с комплексным чертежом // Магистерская работа, руководитель: к.т.н., Карабчевский В.В., 2012 ,http://masters.donntu.ru...
  10. Кодак Е.А., Исследование средств ускоренной разработки систем геометрического моделирования. // Магистерская работа, руководитель: к.т.н., Карабчевский В.В., 2010 ,http://masters.donntu.ru...
  11. C++ - язык программирования для разработки игр. Хэш-код - форум вопросов и ответов для начинающих и опытных программистов. - 2013 // Режим доступа: http://hashcode.ru/...
  12. Irrlicht - графический движок. Википедия - свободная энциклопедия. - 2013 // Режим доступа: http://ru.wikipedia.org/wiki/...