Содержание статьи
Компьютеров, ноутбуков, приставок, планшетов и смартфонов у людей стало дико много. Их вычислительные возможности огромны, но используются они вовсе не для того, чтобы вычислять траекторию полета к альфе Центавра, искать лекарство от рака или способ накормить всех голодающих. Да, на всем этом вычислительном барахле люди просто играют. Поэтому сегодня речь пойдет о технологиях, ставших незаменимыми при разработке игр. Можно, конечно, написать движок с нуля самому, но это займет неоправданно много времени. Пока ты точишь его под конкретный проект, не факт, что к финалу разработки жанр, а то и целая отрасль индустрии не устареют. Поэтому рационально использовать готовый движок.
Немного истории
Не волнуйся: дальше последних 10–15 лет я углубляться не буду. Я бы рад, конечно, пофилософствовать о былых временах, но редактор будет против (отстаньте вы уже от меня, я же не виноват, что журнал бумажный. — Прим. ред.).
Итак, еще 15 лет назад кодовая база для игр создавалась с нуля внутри компаний — разработчиков определенных продуктов. Немного позже (примерно в середине первого десятилетия XXI века) вслед за разработкой других компонентов игр, таких как арт или звук, создание движков вышло на аутсорсинг — выделилось в отдельную индустрию. Происходило это постепенно. Стоит отметить, что и в 90-е были игры на готовых движках (DOOM и Quake от id Software), но это было редким исключением от опередивших свое время дяденек, а правилом стало только в середине 2000-х. Во многом из-за дороговизны движков. А когда сформировалась обособленная кодовая индустрия, бизнес приобрел другой вид, появились движки широкой ценовой категории. Сначала рынок заполнился инструментами разработчиков — фреймворками, представляющими собой скорее графические движки, нежели игровые, отличающиеся от последних наличием лишь прослойки над графическим API и отсутствием внутриигровых редакторов: средств для level-моделинга, импорта объектов, текстурирования, загрузки и анимации персонажей. В качестве примера можно привести Ogre, DarkGDK (много лет назад я писал о нем), HGE. Позже на рынок вышли другие, более прокачанные игроки, предложившие разработчикам полноценные движки: Torque 3D, Unity 3D, UDK.
Одновременно с появлением полноценного рынка движков, в индустрии наметился отток геймеров от синглплеерных к мультиплеерным онлайновым играм. Результатом этого стало появление движков вроде HeroEngine и BigWorld.
Вслед за социальными сетями произошел всплеск интереса к веб-играм. На него разработчики движков отреагировали довольно оперативно, предоставив своим пользователям возможность запускать игры в браузере, установив плагин. Конечные пользователи в браузере получили игры, по качеству почти ничем не уступающие клиентским. С популярностью веб-игр большее распространение получила Flash-технология, в результате чего скромная Macromedia (разработчик Flash) была приобретена могущественным Adobe. А на базе Flash стали появляться не только игры, но и движки для их разработки. Хорошим примером служит движок Alternativa от отечественной компании Alternativa Platform.
Затем случились мобильные технологии. Как гром среди ясного неба появились мобильные девайсы, по мощности сопоставимые с ПК средней ценовой категории и способные потянуть крутые игровые приложения со всеми спецэффектами, которыми обладали низкоуровневые графические интерфейсы. На этот факт разработчики игровых движков ответили кто созданием специализированных конверторов, создающих нативный для конкретного оборудования код (например, Unity 3D), а кто — адаптацией своих продуктов к кросс-платформенности (к примеру, Torque 2D).
Также на рынке появились новые игроки, предлагающие кросс-платформенные фреймворки для всего парка мобильных устройств, не требующие при этом даже перекомпиляции и выполняющиеся со скоростью нативного кода. Среди подобных средств можно отметить Corona SDK, Marmalade SDK, AGK (App Game Kit).
Универсальные движки
Unity 3D
Сайт: unity3d.com
Цена: indie-версия: free, pro-версия: 1500 долларов
Порог вхождения: низкий
Исходный код: закрытый
Самый популярный движок для создания 2D- и 3D-игр. Бесспорно, он стал лидером индустрии, и, как только появляется новая игровая/графическая технология, разработчики незамедлительно реализуют ее в Unity. Кроме разработки синглплеерных игр для PC, посредством подключаемых экспортеров можно портировать игры под другие ОС, консоли и мобильные технологии (за экспортер придется доплатить 1500 долларов за каждую платформу: iOS, Android, BlackBerry). Плюс к этому образовалась целая индустрия, работающая над созданием дополнений и расширений движка, среди них есть как специализированные серверные решения для Unity (e. g. Photon — полноценный игровой сервер), так и средства для разработки пользовательского интерфейса (NGUI), конструкторы, предназначенные для создания игр определенных жанров (e. g. Playmaker).
У самого редактора Unity есть порты под OS X и Windows, при этом изначально он был предназначен для OS X. В Unity включена поддержка DirectX 11, что открывает твоим приложениям дорогу в миры Windows 8 и Windows Phone 8. Во время написания статьи вышла очередная версия Unity под номером 4.2, в которой появилась поддержка последней на данный момент OpenGL ES 3.0, пока этими средствами обладают только топовые Android-смартфоны. Движок Unity особенно ценен за низкий порог вхождения для начинающих юзеров, благодаря этому, а также тому, что инди-версия бесплатна, вокруг движка организовалось огромное сообщество. Низкий порог вхождения является результатом грамотного дизайна приложения: многие вещи можно выполнить с помощью различных редакторов, не написав при этом ни строчки кода (если что, код пишется на JavaScript, C#, Boo). Исходный код на C/C++ закрыт, но это в связи с расширенной компонентной структурой движка не создает никаких преград.
Название: Torque 2D/3D
Сайт: www.garagegames.com
Цена: free (лицензия MIT)
Порог вхождения: средний
Исходный код: открытый
Несомненно, мой любимый игровой движок. Был в свое время лидером, но под натиском Unity утратил свои позиции. Тем не менее до сих пор на нем разрабатывается множество успешных проектов, поскольку он активно развивается сообществом. Не так давно я посвятил трехмерной версии целую статью в нашем журнале, поэтому сейчас я обращу твое внимание на Torque 2D.
Различия между двумерной и трехмерной версиями весьма значительны, но есть и общие элементы, например развитая сетевая подсистема. После выхода в мир open source T3D сохранил и даже увеличил свои возможности, а T2D, напротив, многое потерял. Например, он утратил абсолютно все встроенные редакторы, которые, очевидно, были изъяты из-за определенных юридических соглашений. Зато на нем можно разрабатывать игры для трех платформ: Windows, OS X и, что самое интересное, iOS (и продавать игры в App Store, не отчисляя ни копейки авторам движка). Весь движок — это одна кодовая база на C++ без дополнительных экспортеров. Во время написания статьи в сообществе разработчиков T2D кипела работа над созданием компилируемой версии для Android и реинкарнацией этих самых «потерянных» редакторов. Текущей стабильной версией является 2.0. Как видно, фундаментальные различия 2D- и 3D-версий заключаются в графической подсистеме: T2D для визуализации использует OpenGL, а T3D — DirectX, притом еще пока девятой версии, что преграждает созданным с его помощью играм путь в Windows Store. Есть куда развиваться!
В качестве скриптового языка в T2D, как и в T3D, используется Torque Script. Вместе с тем в T2D для описания игровых элементов служит XML-подобный язык TAML. Он позволяет определить свойства объектов на стадии инициализации уровня игры. Для воспроизведения звуков T2D использует библиотеку OpenAL. Симуляция физики осуществляется посредством движка Box2D, ставшего стандартом в двумерных физических исчислениях. Несмотря на то что в двумерном Торке еще пока нет конструктора GUI, с помощью средств движка (в скриптовом коде) можно создавать пользовательский интерфейс привычными компонентами, а не простыми спрайтами. Однако, если нужный компонент отсутствует, его можно создать на основе спрайтов. Имея аналогичную с 3D-версией сетевую систему, на T2D можно разрабатывать мультиплеерные игры, которые набирают популярность, — например P2P с планшетов. Вместе с T2D поставляется коллекция из огромного количества сэмплов, которая «дружно» укомплектована в Sandbox. В каждом примере раскрывается определенная фича движка, а наличие исходного кода позволяет узнать ее устройство.
![Рис. 1. TruckToy — сэмпл на Torque 2D](https://xakep.ru/wp-content/uploads/2014/09/10.png)
![](https://xakep.ru/wp-content/uploads/2013/11/cover-4-215x280.png)
Хакер #178. Mesh-сети или строим свой интернет
У семейства движков от GarageGames тоже есть комьюнити, которое делает полезные для остального сообщества вещи: создаются туториалы и мануалы, решаются проблемы — все, как принято при социализме. Есть и платные инструменты: система ИИ, разнообразные улучшения и эффекты графической системы, арт, встраиваемые редакторы — диалогов, инвентаря, террейнов, источников света.
CryEngine 3
Сайт: mycryengine.com
Цена: free для некоммерческого использования (изучения и «домашних» разработок)
Порог вхождения: средний
Исходный код: закрытый
CryEngine 3 берет начало своей истории в 2001 году, когда была анонсирована первая разрабатываемая на нем игра Far Cry. С тех пор много воды утекло, и текущая — на данный момент третья — последняя версия была выпущена в октябре 2009-го. Разработчики этого движка с самого начала преследовали цель не самим создавать на нем игры, а продавать его как технологию. Следовательно, все разрабатываемые Crytek’ом игровые приложения — это «игра мышцами» с целью сделать дополнительную рекламу своему главному продукту. Хотя для изучения он доступен бесплатно, чтобы разрабатывать на нем коммерческие проекты, необходимо заплатить, причем цена публично не объявляется. В итоге лицензиат получает движок, документацию (обучающие материалы), исходный код, а также оперативную поддержку. Кроме того, процесс лицензирования движка таит в себе множество подводных камней — хотя бы то, что лицензировать его может только юридическое лицо, которое должно предоставить данные о разработанных продуктах и в отдельных случаях обо всех своих сотрудниках.
В отличие от предыдущих движков линейки (которые были исключительно PC-ориентированными), CryEngine 3 ориентирован на создание кросс-платформенных игр, предназначенных для PC и консолей. В настоящее время поддерживаются платформы Xbox 360, Xbox One, PlayStation 3–4, WiiU, а также технологии визуализации настольной Windows — DirectX 9–11. Как можно заметить, поддержки мобильных платформ нет. В нем изначально присутствует поддержка глобальных мультиплеерных (MMO) игр. CryEngine 3 обладает ошеломляющим списком технологий визуализации, вот некоторые из них: динамическое освещение и затенение в реальном времени, затуманивание, Terrain 2.5D, карты нормалей и параллакс-маппинг, подповерхностное рассеивание, световые лучи и волны, управление уровнем детализации ландшафта, а также многое другое. Самое интересное, что CryEngine по своим возможностям опережает текущую версию DirectX, то есть, к примеру, CryEngine 2 (в игре Crysis Warhead), визуализируя через DirectX 9, выдавал эффекты от DirectX 10. А третья версия движка, работая под DirectX 10, выдавала эффекты, ставшие доступными широкому кругу разработчиков только в DirectX 11. Физический компонент движка CryPhysics также работает независимо от физических API, таких как PhysX. Встроенная система анимации предлагает несколько отличных подсистем: индивидуализация персонажей, параметрическая скелетная анимация, процедурное деформирование движения. Также заслуживает отдельного внимания встроенная система ИИ, которая позволяет обрабатывать поведение не только персонажей, но и транспортных средств. Она состоит из трех модулей: умные объекты, алгоритмы динамического обнаружения пути, а также система, управляемая сценариями. В отсутствие лицензии, соответственно, при отсутствии исходного C++ кода ты будешь рулить движком с помощью скриптового языка Lua, который благодаря гибкости прекрасно подходит для встраивания в игровые движки. Да и при наличии исходника многие задачи проще решить скриптовым языком — это, кстати, справедливо для всех движков.
![Рис. 2. Sandbox в CryEngine 3](https://xakep.ru/wp-content/uploads/2014/09/91.png)
UDK (Unreal Development Kit)
Сайт: www.unrealengine.com/udk
Цена: free
Порог вхождения: средний
Исходный код: закрытый
Прямой наследник движка, использующегося в одном из первых реально успешных командных шутеров. Тогда, еще в конце прошлого века, были выпущены Unreal и более успешный Unreal Tournament. Собственно, UDK построен на основе Unreal Engine 3 и использует всю мощь последнего.
UDK — это бесплатная версия движка UE 3, обладающая всем унаследованным инструментарием последнего для создания игровых миров. Список поддерживаемых платформ не настолько широк, как у Unity, но этого вполне хватает, чтобы окупить разработку: Windows PC, Windows Store, OS X, iOS, Android и консоли предпоследнего поколения.
Для скриптинга в движке используется собственный язык — UnrealScript. На сайте разработчиков представлены тонны обучающих материалов, как текстовых, так и видео, как по редактору, так и по скриптингу. UE3 получил множество наград на индустриальных мероприятиях, а также в кинематографе и не раз становился лучшим игровым/графическим движком года. По сути, UDK отличается от UE3 только отсутствием исходного кода. На базе данного движка выпущено более 300 тайтлов! В их числе: Gears of War 3, BioShock Infinite, Lost Planet 3, Transformers: Fall of Cybertron, Batman: Arkham Asylum, Mass Effect 3 и многие другие.
Теперь заглянем внутрь. Гибкая система анимации позволяет контролировать каждую деталь анимируемого объекта. Анимационная модель контролируется системой AnimTree, которая включает следующие механизмы: контроллер смешения (Blend), контроллер, управляемый данными, физические, процедурно-скелетные контроллеры. Для импортирования объектов используется формат FBX, ставший стандартом для экспорта моделей между редакторами. Для визуализации UE3 использует 64-битный цветной HDR графический конвейер, осуществляющий гамма-коррекцию, размытие движущихся объектов, внешнюю окклюзию и другие эффекты постобработки. Движком поддерживаются все современные эффекты освещения и технологии визуализации: нормализированные карты, параметризированное освещение по Фонгу, различные анизотропные эффекты и прочее. UE3 известен своей высоко оптимизированной сетевой архитектурой, включающей поддержку онлайновых баталий для игр разных жанров. Он обладает множеством других средств, которые, если тебе интересно, ты сможешь узнать сам, ну а мы перейдем к следующей теме.
Специальные MMO-движки
HeroEngine
Сайт: www.heroengine.com
Цена: 99 долларов в год (за одно рабочее место)
Порог вхождения: высокий
Исходный код: закрытый
Да-да, это тот самый движок, на котором разработана ошеломляющая MMORPG Star Wars: The Old Republic. История движка началась еще в конце девяностых, когда американская компания Simutronics приступила к разработке MMORPG Hero’s Journey. Как показало время, с игрой у них ничего не получилось: многократные переносы даты и срывы выхода проекта. Однако технология, на основе которой велась разработка, была высоко оценена внутри индустрии и на игровых мероприятиях, и движок был лицензирован несколькими студиями, в том числе BioWare. В итоге в 2010 году движок как самостоятельная технология был продан корпорации Idea Fabrik. В этом же году она начала продажу движка под двумя лицензиями. Первая лицензия предполагает покупку всего движка вместе с исходниками за баснословную (или все-таки охрененную) сумму денег. По второй лицензии за 99 долларов (в расчете на одного разработчика) на год приобретается доступ к облачному сервису, в котором с помощью специальной программы-клиента разработчик может создавать игру. Если исходить из первого варианта, то юзеру придется организовывать всю аппаратную и программную инфраструктуру игры (на рис. 3 можно увидеть клиент-серверную архитектуру HeroEngine). Кроме серверного железа, сюда входит: серверная ОС (Cent OS), БД Oracle, лицензия на которую стоит также немерено. Исходя из второго варианта, все лицензии на дополнительное ПО, обслуживание серверного ПО и железа берет на себя Idea Fabric — для инди-студий очень благоприятный вариант, поэтому далее мы приведем описание облачной технологии HE2.
![Рис. 3. Клиент-серверная архитектура HeroEngine](https://xakep.ru/wp-content/uploads/2014/09/71.png)
Клиентское приложение (как и разработанные игры) предназначено только для Windows. В облаке над одной игрой могут работать сразу несколько человек: гейм-дизайнер пробует новую фичу, аниматор настраивает перса, левел-дизайнер строит уровень, кодер пишет логику. HeroEngine предоставляет всем участникам группы разработки специальные инструменты. Это составляет одно из важнейших преимуществ — «живая» совместная разработка. Второе, что ты получаешь вместе с HeroCloud, — это доступ к примерам реальных MMO-игр: от социальных до онлайн-шутера, среди сэмплов имеется «недоделанная» MMORPG Hero’s Journey, она представляет собой охватывающий все аспекты глобальных игр пример.
С технической стороны HeroEngine предлагает визуализацию на DirectX 9.0c и другие интегрированные программные системы, среди которых: PhysX — для обработки физики, FaceGen — middleware для генерации трехмерных лиц, FMod — для воспроизведения звуков и музыки, видеоконверторы от RAD Game Tools, высококачественная визуализация растений SpeedTree и другое.
Особого внимания заслуживают инструменты, предоставляемые HeroCloud. Итак, HeroBlade — клиентское приложение включает: World Builder — конструктор мира дает интуитивные инструменты для изменения ландшафта, построения зданий, размещения объектов, настройки динамического освещения; с помощью системы персонажей можно создавать легко настраиваемые, динамические существа, технология морфинга позволяет тонко настраивать лица и синхронизировать губы с речью; гибкая система слежения за костями позволяет создавать спецэффекты, происходящие, например, при ударе мечом; система эффектов включает параметризированную подсистему частиц: частицы могут быть источниками частиц, FX-система позволяет связать вместе частицы и аудиоэффекты; игровая система служит для возможности непрерывной работы, после внесения изменений тебе никогда не придется перезапускать игровой сервер или перезагружать БД, все изменения подхватываются на лету, кроме того, она предоставляет общие для всех MMO-игр компоненты, к примеру, во всех подобных играх, чтобы получить доступ к аккаунту, надо ввести логин и пароль, и такая система уже реализована; чтобы менеджер твоей команды мог самостоятельно следить за процессом разработки, в HB встроен DreamManager, который позволяет создавать и назначать таски для разработчиков, а также следить за их выполнением.
Для написания скриптов в движке есть объектно-ориентированный типобезопасный скриптовый язык HeroScript, написанные и скомпилированные скрипты сохраняются непосредственно на сервере. Скрипты на языке HeroScript выполняются даже быстрее Python-программ. Таким образом, все игровые действия, реакция на события, игровые механизмы и прочее реализуются на этом языке. Интегрированный скриптовый редактор не только подсвечивает код, но и позволяет провести отладку. Кроме того, в нем ведется история версий, он позволяет проводить сравнения, мержить изменения, то есть получать в свое распоряжение функции полноценной IDE. Вдобавок в HE есть удобный редактор GUI.
![Рис. 4. HeroBlade в действии](https://xakep.ru/wp-content/uploads/2014/09/6.png)
Движок для мобильной платформы
Предел на размер статьи неумолимо приближается с каждым символом, но в разгар мобильных технологий я не могу не рассказать о движках данной категории.
Cocos 2D-X
Сайт: www.cocos2d-x.org
Цена: free
Порог вхождения: средний
Исходный код: открытый
Оригинальный Cocos 2D был разработан на Python в 2008 году, затем в том же году он был портирован на языке Objective C под iPhone (версия Cocos 2D-iPhone); два годя спустя была выпущена кросс-платформенная версия Cocos 2D-X на C++.
Если коротко проследить дальнейшую историю, то видно, что потом появились версии с поддержкой Android (Java), XNA (C#) и HTML 5 (JavaScript). Также имеется расширение для визуализации трехмерной графики Cocos 3D, но оно не получило особого развития и распространения просто потому, что юзерам не хочется 3D на мобильном девайсе.
Самая востребованная версия именно Cocos 2D-X, благодаря C++ и кросс-платформенности. Текущей стабильной версией движка является 2.1.5, которая вышла 23 августа сего года. Заявлена поддержка: iOS, Android, Windows Phone 7 (XNA), BlackBerry, Tizen, Bada, Marmalade, Windows, Linux. Используя Cocos 2D-X, можно кодить на C++, Lua и JavaScript. Движком пользуются как программисты-исследователи, небольшие инди-команды, так и монстры игровой индустрии: Zynga, Konami, Disney Mobile. Благодаря бешеной популярности движка — полтора миллиарда закачек основанных на нем игр — в его развитии принимают участие разработчики из Google, Microsoft, Intel.
Поддержка движком акселерометра позволяет создавать динамичные игры с перемещением в пространстве. Безусловно, для обработки физики используется Box 2D, плюс, на выбор, движок Chipmunk. Имеется несколько специальных отдельных редакторов (как платных, так и бесплатных), служащих для создания определенного контента: атласы, шрифты, частицы, спрайтовые таблицы и так далее. Набор GUI-элементов довольно мал, но можно создать недостающие компоненты самостоятельно.
Итоги
Мы вкратце рассмотрели современные игровые движки для всех популярных на сегодняшний день платформ: универсальные, специально предназначенные для MMO и мобильные. Выбор навязывать не буду: все зависит от конкретного случая и предполагаемого проекта. На основе приведенных данных можно также сделать выбор, исходя из своего бюджета.
Однако, к сожалению, реальность такова, что в настоящее время имеет смысл разрабатывать игры только для двух платформ: iOS и Android. Будем считать, что я этого не говорил, так как я сам верю в светлое будущее и большие хардкорные игры. До встречи!