Мода и стиль. Красота и здоровье. Дом. Он и ты

Площадка для создания игр, или Что такое «Игровой движок».

Все мы слышали про движки для создания игр, при этом мало кто понимает, что это такое.

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

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

Понятие

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

Термин образовался в средине 90-х по отношению к шутерам вроде Quake, Wolfenstein и Doom .

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

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

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

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

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

Разновидности

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

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

В любой игре есть взаимодействие объектов , управление кем-либо или чем-либо при помощи геймпада, мыши и клавиатуры, вывод картинки и звука, наложение текста, рендеринг трехмерных объектов (в 3D-играх).

С учётом этого некоторые движки успешно используются для разработки развлечений разных жанров. изначально был платформой для создания шутеров от первого лица, но Gear of War (вид от третьего лица) и Speed Star (гонка) на его основе получились полноценными видеоиграми.

Шутер

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

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

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

Платформер

Обычно это двухмерные развлечения, к ним требования более снисходительны:

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

Файтинг

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

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

Гонки

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

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

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

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

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

Прочий функционал:

  • визуализация сцен с широким цветовым пространством;
  • использование десятков источников света в кадре;
  • полностью динамическое освещение;
  • размытие в движении без влияния на производительность;
  • отличное распараллеливание процесса визуализации;
  • расчёт распространения звука, его поглощение и отражение от преград;
  • множество условий боя;
  • удобная и понятная система скриптования;
  • система анализа топологии ИИ;
  • персонажи наделены зрением, слухом и прочими чувствами, что делает их серьёзными противниками;
  • групповое поведение.
  • сложность процесса портирования игр на консоли;
  • не оригинальная разработка, а усовершенствованный X-Ray (факт не доказан, но намёки на это есть);
  • поддержка DirextX12 не реализована.
  • улучшена графическая часть;
  • разрушаемость моделей и прочие преимущества PhysX;
  • нет спецэффектов ради спецэффектов (добавляются только необходимые).

Игры: серия Metro, в том числе разрабатывается Metro Exodus, и Arktika.1.

Яркий пример реализации личных амбиций и один из немногих всемирно известных движков, созданных на просторах СНГ.

Anvil

Создан дочерней компанией Ubisoft, используется для выпуска и только внутри компании.

Первой игрой была первая часть Креда Убийцы, затем появился симулятор сноуборда и Prince of Persia.

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

Поддерживается на PC, PS всех версий, Nintendo, Wii и Xbox.

Код написан на C++, модели нарисованы в ZBrush, а окружающий мир – в 3ds Max. Для правильной скелетной анимации задействовано . Физику виртуального мира моделирует легендарный Havok. В последних релизах было уделено немало внимания смене времени суток, динамическому освещению и дистанционной прорисовке. Также в него была интегрирована прогрессивная схема растительности (как в Far Cry 2) с новым ИИ, важным отличием коего является усовершенствованная система навигации NPC. Реализация и отладка Direct3D 10/11 хоть и весьма затратные, работа все же была проделана.

Среди неназванных особенностей движка выделим следующие:

  • оптимизация работы на многоядерных системах, вплоть до 32 потоков;
  • запуск игр на нескольких экранах в панорамном режиме;
  • сложный шумовой туман, способный симулировать песчаную бурю без падения fps;
  • эффекты преломления, отражения и рассеивания света в воде;
  • до шести отличающихся персонажей в одной кат-сцене;
  • большинство анимаций снято с реальных актеров;
  • в одной сцене может находиться до 3 тысяч участников, что позволяет устраивать массовые баталии, лишь бы ПК справился с нагрузкой;
  • NPC активно реагируют на героя, могут нападать одновременно, а не поочерёдно;
  • технология отсечения моделей и сортировка объектов по глубине прорисовки.
  • требователен к ресурсам;
  • не лицензируется;
  • долго не поддерживал DirectX 10 и 11.
  • хорошая реализация многопоточности;
  • работает на PC и множестве консолей;
  • возможность реализации массовок при участии сотен игровых персонажей.

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

Creation Engine

Довольно новый движок от американской студии Bethesda, которая продемонстрировала его возможности в Skyrim. Как и предыдущие решения, создан только для нужд его разработчика. За основу был взят Gamebryo – подспорье для Oblivion и его аддонов.

Первое, что интересно в технологии – поддержка огромных локаций с дальней прорисовкой, свободным и быстрым перемещением.

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

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

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

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

Для анимации персонажей использован посторонний инструмент от Havok.

Особенности:

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

Ничего лучшего для моддеров пока не придумано, поэтому больше, чем для Fallout, их создано только для Oblivion.

CryEngine 4

Последняя версия движка от немецкой компании Crytek для шутеров от первого лица.

Самый удачный пример использования – .

С 2016 года движок стал распространяться по схеме «заплати, сколько не жалко», но только для игрового использования.

Особенности и возможности:

  • наличие огромных территорий, причем не коридорных;
  • локации создаются без швов;
  • поддержка инверсной кинематики персонажей и транспорта, его взаимодействия с окружающей средой;
  • имитация различных нетвёрдых объектов: ткань, вода;
  • огромный арсенал с уникальными характеристиками каждого вида оружия;
  • скриптовый и командный интеллект;
  • можно изменять параметры ИИ, не имея знаний в области программирования;
  • интерактивное музыкальное сопровождение – музыка соответствует ситуации;
  • полная поддержка звуковой системы 5.1;
  • воспроизведение звуков природы с учётом среды, отражения и поглощения звука;
  • реалистичный эффект жары и пожара;
  • прозрачность стекол – можно видеть, что находится в зданиях;
  • эксплуатация карт высот для получения многоуровневой среды с видимым расстоянием до 2000 м;
  • невероятные возможности работы с освещением и тенями, что отлично демонстрирует Crysis;
  • объемный густой туман и дым для придания атмосферы;
  • наличие необычных физических эффектов (например, нанокостюма).

Игровой движок (англ. game engine ) — это центральный программный компонент компьютерных и видеоигр и других интерактивных приложений с графикой, обрабатываемой в реальном времени. Он обеспечивает основные технологии, упрощает разработку и часто даёт игре возможность запускаться на нескольких платформах, таких как игровые консоли и настольные операционные системы, например, GNU/Linux, Mac OS X и Microsoft Windows.

Словосочетание «игровой движок» подразумевает целый комплекс прикладных программ, включающий движок рендеринга («визуализатор») для 2D или 3D графики, физический движок, или обнаружение столкновений (и реакции на столкновение), звук, скриптинг, анимацию, искусственный интеллект, сетевой код, streaming, управление памятью, threading и граф сцены. Строго говоря, все части кода, написанные программистами при разработке игры, являются компонентами движка. Игровой процесс (геймплей) определяется функциями, реализованными в этих программах.

Если на заре компьютерной эры каждая игра создавалась разработчиками «с нуля», то всё изменилось с момента появления игры Doom (более 10 лет назад). В настоящее время практически все коммерческие игры создаются с использованием готового инструментария: в процессе разработки можно сэкономить за счет повторного использования одного игрового движка для создания множества различных игр.

Иногда «мододелы» делают какие-то видоизменения с помощью встроенного в игру языка программирования через скриптовые сценарии. Можно подкрутить некоторые параметры функций движка, чем с удовольствием пользуются читеры (увеличивая, например, количество денег у игрока). Однако серьезные изменения геймплея невозможны без вмешательства в исходный код игры. И тут начинаются проблемы. Во-первых, не каждая игровая компания код обнародует. Во-вторых, далеко не каждый может разобраться самостоятельно в огромном количестве функций движка. А другого пути часто нет, поскольку отсутствует справочная информация и техническая поддержка (спросить не у кого). В-третьих, как правило, публикуют исходный код уже технически устаревших движков (например, Quake II, III).

Что же остается начинающим разработчикам?

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

Бесплатные игровые движки

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

  • OGRE (Object-Oriented Graphics Rendering Engine)

Объектно-ориентированный графический движок рендеринга. Написан на C++, 3D графика, в нем используются Direct3D and OpenGL. По этому движку существуют печатные книги (на английском языке). Имеется и русскоязычный сайт . Для работы с последней версией движка нужен один из следующих компиляторов: gcc, Visual C++ 7.1 (2003), Visual C++ 8.0 (2005). Движок поддерживает компиляторы Для работы в Linux и Mac применяется gcc 3+. Если в игре будет использован DirectX, необходимо предварительно установить DirectX SDK (можно скачать с сайта Microsoft).

По утверждению разработчика, Ogre не является в строгом смысле слова игровым движком. Как сказано в документации, «Ogre — графический, и только графический движок. Это значит что ничего другого, кроме вывода и обработки графики, он не делает. Но это значит еще и то, что к нему можно прикрутить сторонние библиотеки для создания полноценной игры, а именно:

  • звук;
  • организация сети;
  • ввод (манипуляторы, джойстики);
  • расчет столкновений.

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

Движок отличается широкой поддержкой разнообразных графических форматов. Помимо стандартных, можно использовать объемные, сжатые текстуры и cubemaps. Много плагинов, которые позволяют импортировать в него 3D-модели из различных пакетов 3D-графики (3DS Max, Maya, Milkshape3D, Blender Wings3D). При этом можно использовать как фреймовую, так и скелетную анимацию. Ландшафты в Ogre выглядят неплохо. Для создания небольшой игры в состав движка включены все необходимые стандартные классы управления сценой. Игровые ресурсы можно паковать в архивы PK3 ZIP.

На Ogre делают и коммерческие игры — в частности, на нём написаны игры «Стальные монстры» (Pacific Storm) и онлайновая игра Anarchy Online . Разработка на основе движка коммерческих игр говорит о большом потенциале Ogre. У него множество пользователей. Есть к кому обратиться в случае возникновения проблем. Наверняка их кто-то до вас решал или, по крайней мере, знает, как обойти. Большое количество справочной информации и примеров позволят освоить движок даже начинающим. Это отличный вариант для разработки игры при отсутствии финансов на покупку коммерческого engine.

  • Crystal Space . Кросс-платформенный SDK с открытым кодом для 3D графики в реальном времени, в особенности для разработки игр. Написан на C++, но использовать его можно не только в C++ проектах, но и в Python, Perl, Java проектах.
  • Nebula Engine 2 . Движок с открытым кодом для 3D-игр и визуализации. Использовался в нескольких коммерческих играх. Написан также на C++, работает только под Windows, использует DirectX 9.0. Есть классы для реализации шейдеров (HLSL и FX-файлы DirectX), скелетной анимации, системы частиц, теней. Поддерживает несколько широко распространённых скриптовых языков TCL, Python и Lua.
  • . Open source, кроссплатформенный, написан на C++, можно использовать из-под.NET (языки типа C#, VisualBasic, and Delphi.NET), Java — c помощью библиотеки jirr или Bindenlicht, Python — с помощью библиотеки Pyrr, Ruby — с помощью библиотеки IrrRuby и ряда других языков. Этот игровой движок родом из Германии. Продвигает его фактически один человек. Развивать движок в одиночку, сделать его полностью бесплатным и выложить весь исходный код — на такое способен далеко не каждый. Хотя до финальной версии Irrlicht еще далековато, на нём уже можно делать серьезные игры. В движке имеются все необходимые для этого функции. Рендеринг выполняется через OpenGLDirect3D (с поддержкой DirectX9.0). Присутствует и софтверный режим, то есть всё будет отрисовано собственным программным визуализатором, который в эру больших аппаратных возможностей видеокарт практически не используют. Этот достаточно простой в освоении игровой движок подойдет как делающим первые шаги в программировании трехмерных игр, так и опытным командам для создания полноценной игры. Подробнее об Irrlicht можно прочитать на сайте knol.google.com .
  • OpenSceneGraphg . Open source, кроссплатформенный, написан на стандартном C++, использует OpenGL. Работает с трехмерными моделями форматов.lwo, .obj, .geo, .3ds, .x, .wrl, то есть с объектами, созданными в любом современном редакторе трехмерной графики (3DS Max, Maya и Lightwave 3D).
  • Microsoft XNA . Технология от Microsoft по кросплатформенной разработке игр для 3-х платформ — Windows, Xbox 360 и Zune (mp3-плеер от Microsoft). Правда, чтобы разрабатывать игры для Xbox, придётся приобрести Xbox Developer Kit, но под Windows игры можно разрабатывать бесплатно. Технология расчитана на разработку игр под DirectX и.NET Framework (.NET Compact Framework на Xbox 360) и, строго говоря, основным языком при разработке игр с использованием XNA должен быть C#. Есть поддерживаемое корпорацией сообщество разработчиков. На сайте techdays.ru есть несколько « » (слайдов, озвученных закадровым голосом), которые посвященных разработке игр на XNA. Вебинары прочитаны сотрудниками Microsoft и представляют собой введение в курс дела.
  • Есть нескоторые другие бесплатные игровые движки: Panda3D , , Dark Basik , однако они не так широко применяются, как охарактеризованные выше.

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

Источники:

  • sindicollo.blogspot.com — обзор бесплатных игровых движков (game engines);
  • knol.google.com — бесплатные игровые движки (А. Крылов);
  • x-sky.ru — бесплатные игровые движки;
  • irrlicht3d.org — викиресурс по движку Irrlicht (англ. яз.).

Unity3D

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

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

Unreal Engine

Unreal Engine - один из наиболее популярных движков для разработки ААА-игр. Gears of War, Batman: Arkham Asylum, Mass Effect — все эти хиты были сделаны именно на нем.

  • поскольку множество разработчиков его использует, то у Unreal Engine, пожалуй, лучшее комьюнити среди конкурентов. Несколько часов видео-туториалов тому подтверждение;
  • отличная техподдержка и механизм апдейта;
  • новые инструменты выходят с каждым обновлением
  • широкий ассортимент инструментов для различных целей (некоторые настолько просты в использовании, что ими может управлять даже школьник)
  • совместим с различными платформами (iOS, Android, Linux, Mac, Windows и большинство других)
  • новая лицензионная политика включает подписку стоимостью $19 в месяц и 5% роялти, если игра заработает более $5,000, что делает движок куда более привлекательным для разработчиков, чем раньше.
  • субъективны. Некоторые разработчики жалуются, что к определенным инструментам сложно привыкнуть

CryEngine 3

Если внешняя составляющая игры - ваш пунктик, то вам нужен именно CryEngine 3.

  • функция Flowgraph поможет украсить игру отличной графикой;
  • набор функций Fmod для создания мощного звукового сопровождения;
  • самый простой процесс создания AI в сегменте;
  • начинающему разработчику будет легко сделать UI.
  • относительно небрежная техподдержка бесплатной версии;
  • поскольку движок в индустрии сравнительно недавно, ему еще только предстоит создать крепкое комьюнити;
  • относительно высокий порог вхождения.

HeroEngine

Этот движок хорошо зарекомендовал себя в создании мультиплеерных игр - взять хотя бы Star Wars: The Old Republic. Лицензия довольно дорогая и вряд ли подойдет начинающим разработчикам, но если ваш проект амбициозен, то я бы советовал рассмотреть этот вариант.

  • в наличии несколько карт для создания открытого мира. Есть возможность их «бесшовного» соединения;
  • сказочно могучий AI!
  • удобный набор инструментов для моделирования карт;
  • подходит для создания комплексных миссий, крафтинга и собирания ресурсов;
  • техподдержка осуществляется при помощи сервиса HeroCloud, что весьма удобно.
  • скриптовый движок мощный, но неудобный в управлении;
  • HeroEngine вместе с сервисом поддержки клиентов HeroCloud слишком дорого стоит и вряд ли будет доступен начинающим разработчикам;
  • высокий порог вхождения.

Rage Engine

Немногие могут конкурировать с широким спектром возможностей, которые предоставляет Rage Engine. Grand Theft Auto V, Red Dead Redemption и многие другие прославленные проекты сделаны при помощи этого движка.

  • широкие возможности для создания больших миров и погодных эффектов;
  • мощный AI;
  • множество стилей геймплея на выбор;
  • быстрый сетевой код.
  • интерфейс движка сравнительно неудобный;
  • управление плохо оптимизировано под клавиатуру и мышку.

Project Anarchy

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

  • если вы планируете разрабатывать игры на платформах iOS, Android и Tizen, то лицензия — бесплатная;
  • мощные инструменты для поиска и устранения багов;
  • сильное комьюнити;
  • издатель предоставляет четкую, понятную документацию и образцы;
  • Fmod для аудио-сопровождения;
  • мощный Havok AI .
  • отсутствует возможность разрабатывать игру на Mac и Linux;
  • нет вводного руководства для начинающих разработчиков;
  • если игра для ПК, то лицензия влетит вам в копеечку.

GameSalad

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

  • бесплатная лицензия (деньги с вас потребуют только за PRO-версию);
  • активное комьюнити;
  • отличный движок для быстрого создания прототипа;
  • совместимость с популярными мобильными платформами такими, как Cocona и Moai.
  • ограниченный набор инструментов разработки;
  • нет доступа к большинству возможностей платформы iOS.

GameMaker: Studio

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

  • простое и интуитивно понятное управление;
  • собственный язык программирования Game Maker Language (GML);
  • интеграция со Steam;
  • кроссплатформенность.
  • относительно сложно устранять неполадки в игре;
  • чтобы экспортировать свою игру на популярные платформы, придется доплатить круглую сумму.

App Game Kit

App Game Kit - кроссплатформенный софт для разработчиков. Ценится за универсальность и легкость в управлении.

  • позволяет писать коды для основных платформ: Android iOS, Windows, Mac и Linux;
  • поставляется в комплекте с IDE , что позволяет тестить игры на любом устройстве;
  • без дополнительной установки уже включает в себя IAP, AdMob и Push;
  • есть мощные скрипты для 2D графики, физики и сетевого взаимодействия.
  • поскольку мало кто работает с этим движком, то недостатки программы долго не устраняются (относительно слабая техподдержка);
  • множество багов (что органично следует из предыдущего пункта).

Cocos2D

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

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

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

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

Насколько вы знаете, сейчас существует огромное количество игровых движков, начиная от всем известных брендов, таких как Quake и Unreal, которые разработчики и издатели могут приобрести по достаточно внушительной цене, заканчивая движками, которые разработчики создают специально для их внутренних проектов.
Чуть ниже мы познакомим вас со списком лучших игровых движков этого поколения. Это действительно самые лучшие представители, гордо сияющие в руках их создателей, они приносят вам тот самый запоминающейся игровой процесс. Вот пример того как хорошие творческие идеи приносят вам захватывающий геймплей.
Замечание: Стоит отметить, что не все разработчики говорят о своих игровых движках, многие держат их строжайшем секрете. Поэтому много хороших движков, о которых нам не известно не попали в данный список, хотя они этого и достойны. Примеры таких инкогнито использовались и используются для создания: Metal Gear Solid 4, FIFA и God of War III.

***
Замечен в таких проектах как: Rockstar Table Tennis,
GTA IV + его дополнительный контент
Midnight Club: Los Angeles,
Red Dead Redemption,
L.A. Noire (предположительно)
***

GTA III, Vice City, San Andreas и Bully несмотря на свой блеск не были созданы на внутреннем движке Rockstar, вместо этого они использовали движок компании Criterion «Renderware». А вот, несмотря на то, что Red Dead Revolver вроде как и был менее коммерческой игрой, именно он натолкнул популярного издателя на идею создания своего движка для нового поколения приставок. С мечтами о великом сиквеле, который не могли бы осуществить никакие другие игровые движки, отделение Rockstar в Сан Диего начала работу над игровым движком RAGE (Rockstar Advanced Game Engine) в далеком 2004, для того чтобы впервые опробовать его в их будущей игре Red Dead Redemption. А согласно словам разработчиков, к трем играм, которые уже успели выйти на этом движке, в 2010 добавится ещё как минимум одна игра. И это именно тот самый желанный сиквел Red Dead Redemption.

RAGE обладает большим количеством плюсов. Среди них стоит отметить возможность создания обширных миров, комплексного ИИ, погодных эффектов, быстрого сетевого кода и большую разновидность геймлпей стилей, всё это нам как раз и доказал GTA IV. Так же данный движок довольно таки доброжелателен к симбиозу с другими игровыми движками. К примеру, с ныне популярным движком Euphoria от NaturalMotion, который подошёл RAGE так, будто бы он был с ним с рождения (такого симбиоза не достигли даже LucasArts в своей недавней игре Star Wars: The Force Unleashed). Так же отлично к RAGE вписался и физический движок Ервина Коуманса, отвечающий за игровую симуляцию пуль. И что более удивительно, этот движок ещё совсем юн и готов к дальнейшему своему развитию. Улучшенная физика, экосистема, улучшенный ИИ и дальность прорисовки это лишь некоторые из улучшении, которые, по словам разработчикам, принесет нам RAGE в своей следующей игре.

***
Замечен в таких проектах как: Far Cry,
Crysis, Crysis: Warhead, Crysis 2,
Aion: Tower of Eternity
***

Немецким разработчикам из CryTek не понадобилось много времени, чтобы создать себе громкое имя. Их первая же игра, вышедший в 2004 «Far Cry», стала для всех открытием. В то время как мир, как и следовало ожидать, ждал появления Half-life 2, Doom 3 и S.T.A.L.K.E.R., которые, по мнению многих должны были ознаменовать появления нового поколения ПК игр, CryTek опередил всех на шаг, выпустив свой топический шутер, созданный на внутренним движке студии «CryEngine». Три года спустя их новая игра Crysis разработанная на второй версии движка «CryEngine 2» снова добилась того же успеха, установив новую визуальную планку в игростроении. Следующим взятым пиком должен стать Crysis 2, разработанный уже на третьей версии движка «CryEngine 3». С помощью него Crytek попытается обхватить уже и консольный рынок.

Согласно словам CryTek CryEngine 3 будет первым движком на Xbox 360 и PlayStation 3, который позволит разработчикам работать с возможностями DirectX 10 на некст-ген консолях (пф! - прим. ред.). В отличие от большинства конкурентов, этому движку не нужны союзники среди других дополнительных игровых движков. Он может работать и с физикой игры, и с её звуком и анимацией. С помощью такого движка, игры смогут добиться высоких визуальных высот. Собственно, именно благодаря им, Crytek и стали столь популярны. И если собственных игр Crytek не достаточно для того, чтобы добавить CryEngine в данный список лучших движков, тогда стоит отметить тот факт, что его разработчики делают всё возможное чтобы раскрутить его в качестве Программного Обеспечения доступного для других разработчиков. Это хорошие новости для нас геймеров, и не совсем хорошие для Epic Games и их движка «Unreal Engine 3», у которого похоже появится весьма достойный конкурент.
P.S. И ещё давайте надеяться на то, что слухи о TimeSplitters 4 на CryEngine 3 окажутся правдой.

Naughty Dog Game Engine

***
Замечен в таких проектах как: Uncharted: Drake"s Fortune,
Uncharted 2: Among Thieves
***

Несомненно Uncharted 2: Among Thieves был одним из графических чудес последнего E3, а главное он доказал что PlayStation 3 обладает огромным потенциалом если правильно относится к созданию игрового движка. Движок Naughty Dog - названый в честь студии создателей не только Uncharted, но и такой популярной серии как Jak & Daxter - был создан специально под архитектуру PS3. С его помощью разработчики добились огромных высот ещё в 2007 году, с выходом Uncharted: Drake"s Fortune. Великолепная анимация и модели персонажей, объемное освещение, шикарный звук, богатая палитра цветов и Голливудо-подобные кат-сцены стали его визитной карточкой. Более двух лет упорной работы было потрачено для создания движка Naughty Dog 2.0, который уже используется в разработке Uncharted 2: Among Thieves. Результат данной работы ошеломляющий. Все локации игры заполнились большим количеством динамических объектов, которые обладают своей собственной физикой. Анимация окружения стала более сглаженной и разнообразной. Поразительные улучшения коснулись света и ИИ игры. Без шовные переходы от игры к кат-сценам и наоборот. И не забудем, что в новой части Uncharted нас ждёт кооперативная игра и мультиплеер. Просто замечательные результаты.

Так же по нашим данным Naughty Dog делятся своим знанием и опытом с секретной студией Sony The Ice Team которая занимается разработкой основного комплекта инструментов, которые помогут в будущем улучшить все проекты для PS3. И ещё не стоит забывать, что на прошедшей E3 разработчики намекнули на то, что в следующем году может появиться и новая часть их популярной серии Jak & Daxter.

***
Замечен в таких проектах как: Dead Space,
Dante"s Inferno
***

Dead Space была проста замечательна: настолько замечательна, что сразу же после её выхода никому не известная студия EA Redwood Shores сделала себе имя. В мае, Electronic Arts переименовало студию в Visceral Games (дословно - "Интуитивные Игры") дабы сильнее выразить культуру и личность данной студии, которая фокусируется на создании интеллектуальных экшенов (а такие бывают! - прим. ред.). Хотя Dead Engine это и не официальное название движка Visceral Games (так его прозвала пресса и фанаты Dead Space), о его существовании и технических возможностях сообщил Глен Шофилд, во время одной из промо акций Dead Space на территории Австралии.

После релиза The Godfather в 2006 году, команда разработчиков распалась, часть из них, забрав собой движок, и стала той самой студией EA Redwood Shores, выпустившей Dead Space. Движок был почти полностью переделан для того чтобы удовлетворить хоррор-футуристические запросы Dead Space. В конечном счете, успех движка больше обязан Dead Space, нежели The Godfather. Dead Space удивляла нас почти каждой новой локацией, однако главными преимуществами движка являются его легкость в работе, а так же работа со звуком и освещением игры. Dead Space с лёгкостью можно назвать одной из самых страшных игр в истории видеоигр. А следующей точкой в развитии движка уже должна стать новая игра Visceral Games Dante"s Inferno.

***
Замечен в таких проектах как: Gears of War,
Mass Effect,
BioShock,
Unreal Tournament 3,
Borderlands,
Brothers in Arms: Hell"s Highway,
Homefront,
Mirror"s Edge,
Singularity,
Rainbow Six: Vegas
***

Как много раз мы слышали эти слова «сильно модифицированный Unreal Engine» в разных обзорах видео игр или же в игровых пресс релизах? С момента своего первого появления в 1998 году, разработанный Epic Games Unreal Engine (сейчас уже в своей третьей ипостаси) стал ничем иным, как главным оружием большинства известных и не очень разработчиков видеоигр. Он появлялся и в таких детских проектах как Surf"s Up и даже в играх студий, которые имеют помимо него и свои собственные движки. Главный вопрос - почему?

Несмотря на некоторые отрицательные отзывы (Silicon Knights, создатели Too Human) и проблемы связанные с работоспособностью в ранних проектах для PS3 (в основном проблема проседания кадров в секунду), движок от Epic Games предоставлял своим потребителем высокое качество и возможность разработки игры в абсолютно любом жанре. А его скромная цена отговорила многих от дорогостоящего создания своих собственных движков. Самый популярный игровой движок Unreal Engine, именно он сформировал у нас ту самую картинку, как должна выглядеть некст-ген игра.
Согласно последним сообщения «Epic Games» уже вовсю трудится над Unreal Engine 4 и по плану этот движок должен появиться как раз к выходу следующего поколения приставок, среди возможных дат релиза был объявлен 2012 год.

Avalanche Engine

***
Замечен в таких проектах как: Just Cause, Just Cause 2,
The Hunter
***

Just Cause 2 был одной из тех игр, которая нас сильно удивила на прошлой Е3. Хотя первая часть и была достаточно интересной, прошло уже почти 4 года с момента её выхода и об игре мы начали понемногу забывать. Такой промежуток затишья немного убил наш интерес ко второй части, и мы её уже и не ждали. Однако создатели игры - Avalanche Studios, оказывается, потратили всё это время недаром. Они полностью изменили движок Avalanche Engine и пересоздали множество его элементов с чистого листа. Так что, используя новый движок Avalanche Engine 2.0 разработчики создали Just Cause 2, который может с легкостью переплюнуть успех первой части игры.

Глядя на Just Cause 2, сложно не удивится тому, что получилось достичь разработчиков с их новым движком. Движок выдает весьма разнообразную игровую механику (прыжки на парашюте, вождение, стрельба и рукопашный бой от третьего лица, дайвинг и многое другое). На экране постоянно мелькает большое количество взрывов и врагов. У главного героя появились новые возможности, главная возможность это крюк. ИИ враги тоже претерпел ряд изменении и теперь кажется в разы лучше того, что мы видели в первой части. Да и к тому же картинка игры весьма впечатляющая. Всё это действие разворачивается на обширном пространстве, здесь нас ждут и снежные вершины гор, тропические джунгли и песчаные берега. Все эти преимущества и выделяют Avalanche Engine, как один из лучших игровых движков этого поколения.
P.S. К тому же, следующим уже объявленным проектом построенном на Avalanche 2.0 будет игра под названием AionGuard, которая построена в фэнтази-сеттинге; интересно как справится с такой задачей данный движок.

***
Замечен в таких проектах как: Call of Duty 2,
Call of Duty: Modern Warfare,
Call of Duty: World at War,
Quantum of Solace,
Modern Warfare 2
***

Поясняем: IW расшифровывается как Infinity Ward, легендарная студия, создавшая одну из самых популярных игровых серии данного поколения - Call of Duty. И хотя в первой части своей игровой серии Infinity Ward использовали движок id Tech 3, уже к выходу второй части они подготовили свой собственный, внутренний движок, который к сожалению до сих пор так и не получил официального наименования. После одного из вопросов по поводу движка, заданного нами на прошлой Е3, Infinity Ward сообщили нам, что грядущий хит Modern Warfare 2 был создан на четвертой версий движка, то есть IW 4.0. Та же самая версия движка использовалась для создания шедеврального Call of Duty 4, вышедшего в 2007.
Если вы играли в игру, тогда вам, наверное, известны возможности этого движка и то, какой игровой опыт он может предоставить его игрокам. Феноменальная анимация и освещение, сложный ИИ, замечательный звук, симуляция реального поведения пули - всё это движок способен обрабатывать очень быстро - и это никто не отрицает. К тому же, всю эту красоту можно увидеть и играя по сети с друзьями, не зря Call of Duty считается одной из самых удачных онлайн игр за всю историю существования видеоигр. Конечно, для второй части Modern Warfare 2 движок не претерпел больших изменений, однако, они достаточно весомые, чтобы снова нас удивить. Новая система текстурирования позволит увеличить детализацию мира и поднять текстурам разрешение. А главные изменения коснутся освещения, физики и ИИ игры.

P.S. Ещё одной хорошей новостью похоже является то, что Infinity Ward разрешают использовать свой движок и остальным студиям, которые находятся под управлением Activision, к примеру Treyarch.

***
Замечен в таких проектах как: Assassin"s Creed,
Prince of Persia (2008),
Shaun White Snowboarding,
Assassin"s Creed II
***

Наверное, Ubisoft надоело использовать для создания игр чужие технологии, поэтому последнее время их студии начали изрядно клепать одни за другими свои собственные игровые движки. Сейчас этих движков набралось с десятка, среди них стоит отметить следующие: Dunia (Far Cry 2), LEAD (Splinter Cell: Conviction), Fox (Naruto: Broken Bond), LyN (Beyond Good & Evil 2), IRISZOOM (R.U.S.E) и собственно наш герой Anvil, aka Scimitar 2.0 Engine. На самом деле сложно пройти мимо игры построенной на этом движке и не удивится картинке, которую она выдает. К тому же, не забудем, что именно этому движку и обязан своей популярностью нашумевший хит Assassin"s Creed.
И в Assassin"s Creed, и в Prince of Persia, Anvil позволил анимации взаимодействовать с окружающей средой в реальном времени. Он же позволяет заселить виртуальные миры сотнями моделями, при этом наделяя их своим собственным достаточно умным ИИ. Для сиквела Assassin"s Creed разработчики из Ubisoft Montreal приготовят улучшенную систему освещения, отражений, динамическую одежду, продвинутый ИИ, увеличат возможность взаимодействия с окружающим миром, дальность прорисовки, а так же прикрутят игре полный цикл смены дня и ночи. Стоит так же отметить, что ко всему перечисленному, Anvil добавил себе одну из технологий движка Dunia, на котором был построен Far Cry 2. Это технология отвечает за симуляцию растительности игры.

Так же отметим тот факт, что в Shaun White Snowboarding Anvil впервые предложил игрокам сетевую игру, что подогрело слухи о том, что сетевой режим появится и во второй части Assassin"s Creed.

***
Замечен в таких проектах как: Colin McRae: DiRT,
Race Driver: GRiD,
Operation Flashpoint: Dragon Rising,
Colin McRae DiRT 2,
F1 2009,
F1 2010
***

Codemasters уже издало пару весьма посредственных игр на этом поколении приставок, но когда речь заходит о внутренних проектах студии, она пытается принести нам только лучшее. Больше количество этого лучшего построено именно на движке EGO Engine (некогда известного под названием NEON). Кстати, стоит отметить, что в создании этого движка отчасти поучаствовали и люди из Sony. Для многих геймеров Codemasters известны своими игровыми сериями Colin McRae & Race Driver, весьма популярными и качественными гоночными симуляторами.
Среди плюсов движка не только возможность создания хорошего гоночного геймплея игры, с помощью него можно создать и модели и физику для этих самых машин. Так же он может создавать высоко детализированные миры разного покрова (и пустыне и снежные покровы), которые выглядит просто потрясно, особенно через лобовое окно вашего автомобиля на скорости 200 км/час. К тому же разработчики создали вразумительную систему повреждении, блестящий ИИ и освещение. Все эти преимущества превращают игру, созданную на EGO, в конфетку. Ну, а главной причиной, по которой EGO попал в наш список лучших движков, так это его удивительная возможность меняться из гоночного движка, в отличный движок, к примеру, для FPS. Это он доказал нам, став базой для суперреалистичного Operation Flashpoint: Dragon Rising, который появится на прилавках магазина уже в этом сентябре.

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

***
Замечен в таких проектах как: Red Faction: Guerrilla
***

Когда Digital Illusions выпустили свои игровой движок «Frostbite Engine», который показал нам невиданную до сих пор систему динамического разрушения в игре Battlefield: Bad Company, мы были действительно впечатлены тем, как изменяется поле сражения во время битвы. Следующий шаг, в этом направлении, предприняли разработчики из LucasArts, выпустив Star Wars: The Force Unleashed, которая обладала собственным физическим движком Digital Molecular Matter. Он позволял окружающему миру изменяться под давлением внешних сил. Показанное удивило не одного геймера нашей планеты. Но Volition Inc пошли ещё дальше в Red Faction: Guerrilla. Использовав новую версию своего движка Geo-Mod, который появился ещё в 2001 во время создания первой части Red Faction.
Третья часть уже целой игровой серии позволила нам не просто бессмысленно разрушать всё в округе. Geo-Mod позволяет объектам принимать свойства их реальных прототипов, они разрушаются согласно реальным законом нашего мира, это прививает реализм не только действиям игрока, но и объектам, которые его окружают. Симулировать взрывной геймплей игры, её сложный ИИ и имитировать законы реального мира, при этом без потерь в фреймрейте, сможет не любой движок. Плюс ко всему это всё работой отличное и в сетевой игре. И пусть данный движок не обладает многими преимуществами выше перечисленных конкурентов, его способность имитировать реальные законы, создавать удивительные взрывы в реальном времени выделяют его среди остальных.

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

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

В последнее время я занят тем, что пишу игровой движок на C++. Я пользуюсь им для создания небольшой мобильной игры Hop Out . Вот ролик, записанный с моего iPhone 6. (Можете включить звук!)


Your browser does not support HTML5 video.


Hop Out - та игра, в которую мне хочется играть самому: ретро-аркада с мультяшной 3D-графикой. Цель игры - перекрасить каждую из платформ, как в Q*Bert.



С чего бы кому-то хотеть написать игровой движок? Возможных причин много:

  • Вы - ремесленник. Вам нравится строить системы с нуля и видеть, как они оживают.
  • Вы хотите узнать больше о разработке игр. Я в игровой индустрии 14 лет и всё ещё пытаюсь в ней разобраться. Я даже не был уверен, что смогу написать движок с чистого листа, ведь это так сильно отличается от повседневных рабочих обязанностей программиста в большой студии. Я хотел проверить.
  • Вам нравится ощущение контроля. Организовать код именно так, как вам хочется, и всегда знать, где что находится - это приносит удовольствие.
  • Вас вдохновляют классические игровые движки, такие как AGI (1984), id Tech 1 (1993), Build (1995), и гиганты индустрии вроде Unity и Unreal.
  • Вы верите, что мы, индустрия игр, должны сбросить покров таинственности с процесса разработки движков. Мы пока не очень-то освоили искусство разработки игр - куда там! Чем тщательнее мы рассмотрим этот процесс, тем выше наши шансы усовершенствовать его.

Игровые платформы в 2017-ом - мобильные, консоли и ПК - очень мощные и во многом похожи друг на друга. Разработка игрового движка перестала быть борьбой со слабым и редким железом, как это было в прошлом. По-моему, теперь это скорее борьба со сложностью вашего собственного произведения . Запросто можно сотворить монстра! Вот почему все советы в этой статье вращаются вокруг того, как сохранить код управляемым. Я объединил их в три группы:

  1. Осознайте, что сериализация - обширная тема.

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

Используйте итеративный подход

Мой первый совет - не задерживаясь заставьте что-нибудь (что угодно!) работать, затем повторите.


По возможности, начните с образца приложения, которое инициализирует устройство и рисует что-нибудь на экране. В данном случае я скачал SDL , открыл Xcode-iOS/Test/TestiPhoneOS.xcodeproj , затем запустил на своём iPhone пример testgles2 .



Вуаля! У меня появился замечательный вращающийся кубик, использующий OpenGL ES 2.0.


Моим следующим шагом было скачивание сделанной кем-то 3D-модели Марио. Я быстро написал черновой загрузчик OBJ-файлов - этот формат не так уж сложен - и подправил пример, чтобы он отрисовывал Марио вместо кубика. Ещё я интегрировал SDL_Image , чтобы загружать текстуры.



Затем я реализовал управление двумя стиками, чтобы перемещать Марио. (Поначалу я рассматривал идею создания dual-stick шутера. Впрочем, не с Марио).



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



К тому моменту я отказался от формата OBJ и написал скрипт на Python для экспорта собственных JSON-файлов из Blender. Эти JSON-файлы описывали заскиненный меш, скелет и данные анимации. Я загружал эти файлы в игру с помощью библиотеки C++ JSON .



Как только всё заработало, я вернулся в Blender и создал более проработанного персонажа (Это был первый сделанный и зариганный мной трёхмерный человек. Я им весьма гордился.)



В течение следующих нескольких месяцев я сделал такие шаги:

  • Начал выделять функции работы с векторами и матрицами в собственную библиотеку трёхмерной математики.
  • Заменил.xcodeproj на проект CMake
  • Заставил движок запускаться и на Windows, и на iOS, потому что мне нравится работать в Visual Studio.
  • Начал перемещать код в отдельные библиотеки "engine" и "game". Со временем, я разделил их на ещё более мелкие библиотеки.
  • Написал отдельное приложение, чтобы конвертировать мои JSON-файлы в бинарные данные, которые игра может загружать напрямую.
  • В какой-то момент убрал все библиотеки SDL из iOS-сборки. (Cборка для Windows всё ещё использует SDL.)

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




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


Готов поспорить, что больше времени тратится при противоположном подходе: пытаться заранее продумать архитектуру, которая будет делать всё, что вам понадобится. Две моих любимых статьи про опасности чрезмерной инженерии - The Vicious Circle of Generalization Томаша Дабровски и Don’t Let Architecture Astronauts Scare You Джоэла Спольски.


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


Итеративный подход дал мне куда более элегантную архитектуру, чем я мог бы вообразить, глядя на чистый лист бумаги. iOS-сборка моего движка сегодня на 100% состоит из оригинального кода, включая собственную математическую библиотеку, шаблоны контейнеров, систему рефлексии/сериализации, фреймворк рендеринга, физику и аудио микшер. У меня были причины писать каждый из этих модулей самостоятельно, но для вас это может быть необязательным. Вместо этого есть множество отличных библиотек с открытым исходным кодом и разрешительной лицензией, которые могут оказаться подходящими вашему движку. GLM , Bullet Physics и STB headers - лишь некоторые из интересных примеров.

Дважды подумайте, прежде чем слишком обобщать

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

Время от времени нарушайте принцип DRY

Приведу пример: мой движок содержит несколько шаблонных классов умных указателей, близких по духу к std::shared_ptr . Каждый из них помогает избежать утечек памяти, выступая обёрткой вокруг сырого указателя.

  • Owned<> для динамически выделяемых объектов, имеющих единственного владельца.
  • Reference<> использует подсчёт ссылок чтобы позволить объекту иметь несколько владельцев.
  • audio::AppOwned<> используется кодом за пределами аудио микшера. Это позволяет игровым системам владеть объектами, которые аудио микшер использует, такими как голос, который в данный момент воспроизводится.
  • audio::AudioHandle<> использует систему подсчёта ссылок, внутреннюю для аудио микшера.

Может показаться, что некоторые из этих классов дублируют функциональность других, нарушая принцип DRY . В самом деле, в начале разработки я пытался повторно использовать существующий класс Reference<> как можно больше. Однако, я выяснил, что время жизни аудио-объекта подчиняется особым правилам: если объект закончил воспроизведение фрагмента, и игра не владеет указателем на этот объект, его можно сразу же поместить в очередь на удаление. Если игра захватила указатель, тогда аудио-объект не должен быть удалён. А если игра захватила указатель, но владелец указателя уничтожен до того, как воспроизведение закончилось, оно должно быть отменено. Вместо того чтобы усложнять Reference<> , я решил, что будет практичнее ввести отдельные классы шаблонов.


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

Использовать разные соглашения о вызове - это нормально

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


В моём C++ движке некоторые функции принадлежат классами, а некоторые - нет. Например, каждый противник в игре - это класс, и бо́льшая часть поведения противника реализована в этом классе, как и следовало ожидать. С другой стороны, в моём движке выполняются вызовом sphereCast() , функции в пространстве имён physics . sphereCast() не принадлежит какому-либо классу - это просто часть модуля physics . У меня есть система сборки, которая управляет зависимостями между модулями, что сохраняет код достаточно (для меня) хорошо организованным. Заворачивание этой функции в произвольный класс никоим образом не улучшит организацию кода.



Как минимум, постарайтесь представить, насколько сложными будут ваши требования. Если вы делаете маленькую игру вроде Flappy Bird, с несколькими ассетами, вам скорее всего не придётся много думать о сериализации. Вероятно, вы можете загружать текстуры напрямую из PNG и этого будет достаточно. Если вам нужен компактный бинарный формат с обратной совместимостью, но вы не хотите разрабатывать свой - взгляните на сторонние библиотеки, такие как Cereal или Boost.Serialization . Не думаю, что Google Protocol Buffers идеально подходят для сериализации игровых ресурсов, но они всё равно стоят изучения.


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


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

Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!