Как разобраться в игровых движках
Некоторые из вас наверняка только начинают интересоваться игростроем, а потому не очень разбираются в том, что такое игровой движок и как его использовать. Поэтому для подготовки к джему я предлагаю вам краткий эскурс в понятие игрового движка и расскажу, какие они бывают и как выбрать себе подходящий.
Прежде всего, игровой движок — это программный комплекс, который упрощает разработку игр, предоставляя вам набор необходимых для разработки инструментов. Из этого следует несколько простых фактов. Во-первых, движок совершенно необязателен, игру можно написать и без него на голом языке программирования. Во-вторых, движок не сделает крутую игру за вас. Но с ним работа пойдёт в десятки раз быстрее, так что я всем очень советую не писать велосипеды, а использовать готовое.
Обобщённо говоря, игровой движок ответственен за организацию и поведение игровых объектов, а также за их отображение на экране. Ваша же задача — выбрать, как они будут выглядеть и как себя вести. Для этого движок предоставит вам возможность создавать и удалять объекты, задавать их параметры, добавлять логику и управлять ресурсами.
На самом деле, не так легко поделить игровые движки на отдельные категории, потому что чаще всего они предоставляют одни и те же возможности, вопрос лишь в количестве этих возможностей. Но я попробую.
Касательно внутреннего устройства игровые движки делятся на:
- Полноценное ПО — это такая специальная программа, которая может собрать игру воедино за вас, а вам предоставляет полноценный редактор.
- Фреймворк — это набор полезных классов и функций, которые вы можете использовать при создании своей игры с нуля. Игру вам придётся собирать самостоятельно, но зато у вас будет больше контроля за процессом.
Если мы говорим о фреймворках, то игра пишется на том же языке, на котором написан фреймворк. Если же мы говорим о полноценном ПО, то программировать в них можно на:
- Полноценный язык программирования. Такими языками могут быть C++, C#, Javascript, Lua.
- Адаптированный скриптовый язык. Обычно за основу берётся какой-нибудь скриптовый язык, а его синтаксис и возможности расширяются, чтобы им было проще пользоваться в контексте разработки игр. Тут нет универсальных решений, но чаще всего эти языки очень похожи друг на друга.
- Визуальный интерфейс. Это абсолютно такой же процесс программирования, но вместо написания строк кода вы соединяете узлы действий между собой. Это ещё проще, чем писать код вручную, но процесс программирования всё равно изучать придётся. А ещё в узлах сложнее ориентироваться из-за их громоздкости.
Если говорить о лицензии, то тут тоже есть несколько вариантов:
- Платные движки — за использование этих программ придётся платить, иногда даже каждый месяц.
- Бесплатные для использования — эти движки вы можете спокойно скачать и использовать для разработки, но чтобы продавать игры, сделанные на нём, придётся отчислять процент владельцам движка.
- Движки с открытым исходным кодом — эти движки вы можете спокойно скачать и использовать с минимумом ограничений.
Возможности, которые может предоставлять или не предоставлять игровой движок (список неокончательный):
- Система уровней
- Физика
- Система частиц
- Навигация
- Двумерная анимация
- Трёхмерная анимация
- Карты тайлов
- Редактор местности (terrain)
- Воспроизведение звука
- Источники освещения и тени
- Шейдеры
- Диалоговая система
Чем больше возможностей предоставляет движок, тем сложнее и дольше им пользоваться из-за огромного количества кнопочек и удлинённого времени компиляции, так что подбирать движок лучше не из соображений «чтобы умел побольше», но «взять достаточно для моих нужд — и не больше».
Ну и последнее разделение, которое относится к движкам лишь косвенно — это их дата создания и популярность. Чем раньше был создан движок и чем популярнее он, тем легче вам будет с ним работать, поскольку создатели движка наверняка уже починили огромное количество багов (да, это тоже важно, в игровых движках могут быть баги и их может быть много), а в сети вы сможете найти очень много обучающих материалов.
Игровой мир состоит из игровых объектов (GameObject). К этой базовой категории можно практически отнести всё, что находится в игре, в том числе игрока, его инвентарь, камеру, землю под ногами, каждый отдельный кустик и даже небо. Не стоит думать, что все объекты обязательно должны быть видимы — всякие триггеры (объекты, вызывающие события при прикосновении), барьеры, источники освещения и даже части интерфейса являются такими же объектами. Все игровые объекты обладают несколькими базовыми свойствами: положение в пространстве (Transform), включены ли они (Active), какой у них родительский объект и есть ли он (Parent).
Игровые объекты так же могут быть дополнены поведением (Behaviour или Component). Поведение — это отдельный код, который привязан к объекту и выполняется при определённых условиях. Условия могут быть самыми разными, а количество поведений, привязанных к объекту, ничем не ограничено. В таком коде вы например можете двигать объект по движению мыши или перекрашивать его цвет. А ещё у каждого поведения могут быть свои отдельные параметры (выраженные в переменных).
Например, мы можем создать для картинки поведение «Персонаж», у которого будут очки здоровья и возможность прыгать. И когда персонаж падает со слишком большой высоты, эти очки здоровья у него отнимать.
Помимо своих собственных поведений в игровом движке есть несколько стандартных типов поведений: форма столкновения (Bounding Box/Sphere/Capsule/…), физическое тело (Rigidbody), отрисовщик (Renderer), камера (Camera), создатель частиц (Particle Manager), аниматор (Animator) и ещё десятки других типов. Всеми этими поведениями вы можете управлять на лету.
Очень важным концептом является событие (Event). Это сигнал, который возникает при соблюдении каких-то условий. Поведения объектов в игре могут порождать эти события и реагировать на них. Например, столкновение — это событие, причём одно из самых частых по использованию. Именно на событиях строится основной игровой процесс, разработчик игры может навешивать действия (Action) одних поведений на события других и так, например, делать кнопки, рычаги, точки сохранений и так далее.
Но это и не единственный способ заставить игру работать, ещё есть раздел Update, в который можно написать код и который будет выполняться постоянно, в каждый игровой тик (tick). Тик — это самая минимальная единица времени, которую игра может обеспечить. Обычно тик составляет 16 миллисекунд, но если у вас плохо с оптимизацией, то он увеличится. Без этой функции не обойтись, и некоторые вещи, например плавное передвижение и проверка столкновений, пишутся именно там. Но чем меньше кода написано в этой секции — тем лучше.
Место, в котором находятся игровые объекты, называется уровень или сцена (Level или Scene). Уровни можно менять в любой момент, а в некоторых движках ещё и совмещать между собой. Ваши игровые объекты будут распределены по уровням, чтобы друг другу не мешать. Например это будут локации и их наполнение. Но определённые универсальные для всех уровней объекты, например главный персонаж или интерфейс, лучше хранить в отдельном месте.
В вашем проекте должна быть отдельная папка, в которой вы будете хранить сохранённые объекты (Prefab). Любой объект в игре вы можете сконструировать всего один раз, а затем сохранить в эту папку для дальнейшего, в том числе многократного, использования. Например, это могут быть деревья или враги. Во время игры вы можете создать любое количество объектов из этой папки, но лучше не переборщить и не использовать тысячи объектов, иначе движок начнёт лагать.
И последнее, про графику. Объекты в игре могут выглядеть самым разным способом. И дело даже не в отдельный настройках, а в самом способе их отображения на экране. Это могут быть 2D-объекты, например различные простейшие геометрические формы (Shape) или картинки (Sprite). А могут и 3D-объекты, которые состоят из 3D-модели (Mesh). Все видимые объекты в игре обязаны иметь материал (Material) — набор параметров, влияющий на отображение объекта. Такими параметрами могут являться текстуры (Texture), цвета (Color) и обычные числа (Float). Некоторые движки дают доступ ограниченный доступ материалу, давая лишь задать текстуру и цвет окрашивания, другие же дают полный доступ. В основе материала лежит шейдер (Shader) — особая программа, которая проводит математические вычисления и проецирует объекты в пространстве на плоский экран камеры.
Сразу предупреждаю, что список далеко не окончательный, в мире буквально каждый день кто-нибудь создаёт новый движок программирования — просто потому что это очень интересное испытание. Здесь же указаны более-менее популярные движки, о которых хорошо отзываются и которые вы можете начать использовать прямо сейчас, а их порядок ни в коей степени не отражает мои мнения о них.
Construct 3 — настоящий ветеран индустрии. Используется для создания 2D-игр и достаточно популярен. У движка больше настроек, с недавних пор есть версия для браузера, очень много примеров и шаблонов. Логика на визуальном интерфейсе. Но большинство возможностей скрыто за крайне дорогой лицензией. Бесплатная версия ограничена.
Stencyl — ещё один движок для создания 2D-игр. Имеет открытый исходный код и и приятный интерфейс. Логика на визуальном интерфейсе. Мало известен, но полностью бесплатен (платно только публикация на ПК).
GDevelop — другой движок для создания 2D-игр, набирающий огромную популярность. Так же имеет открытый исходный код и приятный интерфейс. Логика на визуальном интерфейсе. Полностью бесплатен.
RPG Maker — очень популярный движок для создания пиксельных RPG. Именно для RPG движок и заточен, но он подойдёт и для похожих жанров. Много встроенных ассетов и настроек для персонажей. Есть бесплатный 30-дневный пробник, дальше придётся платить.
Game Maker Studio — очень популярный движок для разработки 2D-игр. Позволяет программировать логику на адаптированном Lua и даёт много возможностей. Есть бесплатный 30-дневный пробник, дальше придётся платить.
Godot — очень многообещающий движок с открытым исходным кодом, который грозится «заменить Unity» в своей распространённости. Godot поддерживает 2D и 3D графику, а так же несколько языков программирования (C++, C# и модификация Python) и имеет свой визуальный скриптинг. Его использование полностью бесплатно.
Ren’Py — самый популярный движок визуальных новелл, на котором написаны тысячи новелл. Использует Python в качестве языка программирования логики. Полностью бесплатен
Monogatari — простой движок визуальных новелл на веб-технологиях. Мало известен, но выглядит интересно, к тому же движок на Javascript легче исправить под свои нужды. Код пишется на том же языке. Полностью бесплатен.
Unity — самый популярный в мире движок для разработки игр. Поддерживает 2D и 3D графику, имеет в себе невиданное количество вспомогательных модулей, огромный магазин ассетов и поддерживает большинство платформ. К сожалению, с ростом популярности движок становится всё сложнее и тяжелее в освоении, но всё равно очень доступен. Программирование на C#. Использование условно-бесплатное, при превышении определённого порога прибыли придётся платить за лицензию.
Unreal Engine — настоящий гигант, используемый профессионалами в индустрии кино и игр. Имеет самую лучшую графику на рынке, кучу инструментов внутри и ежемесячно раздаваемые бесплатные ассеты на любой вкус. В качестве программирования используется визуальный интерфейс, но есть возможность писать и на C++. Инструмент для профессионалов, поэтому очень просто что-то испортить. Использование бесплатно, но с каждой проданой игры надо отчислять процент.
Source — игровой движок, использумый Valve для своих игр. Использование напрямую недоступно, но с помощью него можно делать модификации на основе других игр — и вот тут уже намного больше возможностей.
Cocos2d — популярный фреймворк, портированный на несколько языков (C, Python, JS, Swift, C#). С его помощью сделано много игр в том числе для мобильных устройств.
Phaser — набирающий популярность фреймворк для разработки игр на Javascript.
libGDX — завоевавший доверие фреймворк для разработки игр для Java.
SFML — популярный фреймворк для разработки игр на C++
Что ж, теперь вы знаете, как выбрать движок и какие опции доступны. А теперь дерзайте! Скачивайте, тыкайте, экспериментируйте. На сайтах движков вы можете найти очень много шаблонов и примеров, а на YouTube (особенно английской его версии) можно найти буквально сотни и иногда даже тысячи гайдов по тем или иным сторонам разработки. Ждём ваши работы!
Что такое игровой движок?

Когда-то для каждой игры делали собственный движок, но в наше время большинство пользуется универсальными решениями, которые доступны кому угодно. Но что вообще такое игровой движок, что он делает и какими они бывают? Рассказываем об этом понятным языком в нашем материале.
Содержание
- Что такое игровой движок?
- Виды игровых движков
- За что отвечает движок в играх?
- Как создать игру с помощью игрового движка?
- Обзор самых популярных движков для игр
Что такое игровой движок?
Игровой движок простыми словами — это набор программного обеспечения, необходимый для работы компьютерных игр и не привязанный жестко к какой-либо из них. То есть от самой игры ее движок отличается тем, что на его основе можно сделать какую-нибудь другую игру.
Впрочем, это не всегда так, и в некоторых случаях созданный для игры движок был от нее практически неотделим. Это часто происходило в ранние годы развития игровой индустрии, когда для каждой из игровых консолей выпускалась отдельная версия, которая могла разительно отличаться от оригинала. Например, так произошло с популярной в России и ближнем зарубежье игре про Аладдина, версии которой для Super Nintendo и SEGA Mega Drive были не особо похожи друг на друга.

При этом часто бывает, что то, из чего состоит игровой движок, и есть набор меньших игровых движков, отвечающих за более конкретные функции.
Виды игровых движков
Игровые движки между собой во многом схожи, хотя их все равно можно попытаться классифицировать между собой.
Во-первых, существует два подхода, определяющих, как разработчики в принципе работают над игрой:
- С отдельным редактором. Многие игровые движки предлагают пользователю создавать что-то не с помощью навыков программирования, а через удобный редактор, который отдаленно напоминает Photoshop или программы для видеомонтажа. Обычно такие движки максимально самодостаточные и не требуют подключения дополнительных модулей, однако из-за этого могут быть ограничены в своем функционале. Но в наше время даже самые продвинутые игровые движки могут позволять работать через редактор.
- Во втором случае движок подразумевает, что разработчики игр пишут непосредственно программный код. Такие решения запускаются уже через обычную для программистов среду разработки и представляют собой не столько законченный продукт для создания игр, а набор ранее написанных программ, которые можно адаптировать под что-то новое.
Также движки могут отличаться друг от друга способом распространения, ведь, как и с любым другим программным обеспечением, разработчики этого софта чаще всего хотят получить вознаграждение. Впрочем, так бывает не всегда:
- Движки с открытым исходным кодом представляют собой не бесплатные версии каких-то технологий, а полноценные инструменты разработки, созданные энтузиастами. Такие решения можно использовать в неограниченном количестве, создавать на них коммерческие проекты и не платить за это создателю движка. Пример такого движка — Godot.
- Бесплатные движки могут не предоставлять конечному пользователю весь исходный код, однако для использования они бесплатные. Чаще всего подразумевается, что разработчикам придется платить какую-то часть прибыли с продаж игры, при условии, что эта прибыль вообще будет. По такой схеме сейчас распространяется большинство популярных сторонних игровых движков — например, Unreal Engine, Unity, CryEngine и так далее.
- Полностью платные движки уже остались в прошлом, и сейчас в этой категории скорее упоминаются программные платформы, которые большие команды разработки делали конкретно под свои игры. Из-за высокой трудоемкости и дорогостоимости этого процесса позволить себе такое могут лишь самые успешные команды — например, движок Frostbite для серии Battlefield и RAGE для GTA и RDR.
Впрочем, не всегда можно говорить об игровой платформе как об универсальных движках: часто бывает так, что технологическая начинка игры складывается из множества технологий, каждая из которых не является полноценным движком, но выполняет важную функцию.
Для создания качественного изображения из компьютерной графики необходимо, чтобы все элементы на экране выглядели впечатляюще. Последние версии движков уже предлагают целые магазины с заранее созданными объектами, которые можно использовать с собственными объектами. Но есть такие объекты, которые должны быть уникальны по собственной природе. Например, камни, деревья и другая растительность с природным ландшафтом. Для таких работ используются отдельные движки, которые интегрируются с основным.
Один из популярных примеров — технология SpeedTree. Этот движок изначально разрабатывался для работы с деревьями и растительностью и с середины двухтысячных помогает разработчикам игр в самых разных жанрах создавать уникальные леса и заполнять пустые пространства флорой. Современная версия движка стала создавать настолько фотореалистичное изображение, что теперь используется не только для разработки игр, но и применяется для создания кино.

Другой известный пример — движок Euphoria. Это был физический движок, который обсчитывал поведение объектов в играх, где пользователь мог каким-то нетривиальным способом взаимодействовать с окружением. Одной из таких игр была GTA 4 — многие до сих пор вспоминают, что нетрезвый главный герой падал там максимально реалистично, как и пешеходы, пострадавшие в ДТП.

За что отвечает движок в играх?
Если коротко, то проще всего сказать «за все». Движок обсчитывает не только визуальный компонент происходящего на экране, но и множество процессов, происходящих «под капотом».
Благодаря работе игрового движка на экране не только двигаются объекты, но и происходит расчет освещения, влияние действий на игровой мир, обработка команд, поступающих с контроллера игрока, переключение музыки и множество других действий.
Движок игры работает на настолько глубоком уровне, что именно он обеспечивает появление на экране необходимых моделей персонажей, задает им анимации и поведение, а также включает озвучку, музыку и звуковые эффекты, соответствующие происходящим событиям.

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

Что такое файтинги и почему стоит попробовать в них поиграть
Как создать игру с помощью игрового движка?
Так как же в итоге с помощью всех этих мощных движков создать собственную игру? Ответ что для обычного человека, что для профессионального разработчика прозвучит примерно одинаково: необходимо запустить программную среду в том или ином виде и что-то там делать.
Как уже было упомянуто, разные движки предоставляют разработчику разные подходы к созданию игр. В некоторых случаях получится ограничиться лишь управлением процессом в окошках редактора, перетаскивая логические блоки, — например, так построена система Blueprints в Unreal Engine 4. Пользователю достаточно лишь научиться правильно работать с интерфейсом редактора движка и строить там правильные цепочки, а код будет автоматически сгенерирован.

В то же время этот же Unreal Engine 4 подразумевает базовое знание пользователем языков C++ или C#, на которых можно программировать более сложные схемы. На самом деле, большинство современных игровых движков все-таки требуют навыка программирования: даже если большинство вещей можно создать с помощью интерфейса и «перетаскивания квадратиков», то сложный функционал придется добавлять своими силами.
Также для создания игры понадобятся непосредственно ассеты — ресурсы, используемые логикой игры. Речь идет о, например, трехмерных моделях персонажей и окружения, текстурах, звуковых файлах и прочем. При создании крупных игр эти ресурсы создаются командой разработчиков — что-то рисуется самостоятельно, что-то генерируется с помощью других движков, о которых мы рассказывали выше, а некоторые вещи отдают на аутсорс, то есть сторонним студиям. Однако начинающему разработчику большинство этих способов недоступно.
Тут на помощь приходят магазины с контентом — у всех популярных платформ сейчас такие есть. Там за большую или небольшую плату, а часто и вовсе бесплатно, можно получить те самые трехмерные модели и объекты окружения. Умение пользоваться такими площадками и находить там нужные ресурсы тоже является важной частью профессии современных разработчиков игр.
Обзор самых популярных движков для игр
Unreal Engine
Unreal Engine — не просто линейка знаменитых игровых движков, а практически лидер направления в создании крупнобюджетных приключенческих игр. Услугами компании Epic пользовались создатели The Callisto Protocol, Final Fantasy, Tekken, Gears of War, Mortal Kombat, Batman: Arkham и многих других. А с недавних пор все больше студий переходит на использование Unreal Engine вместо движков собственной разработки: на пятой версии прямо сейчас разрабатывают новые части «Ведьмака», Mass Effect, S.T.A.L.K.E.R. и других хитов.

Источник: unreal engine
Прямо сейчас актуальными можно назвать две версии: Unreal Engine 4 и 5. Для четвертой версии выпущено гораздо больше обучающих материалов и внутриигровых ассетов, поскольку он находится на рынке уже почти десять лет и за это время на нем были выпущены сотни игр. В то же время Unreal Engine 5 станет стандартом будущего, поскольку в нем используются самые передовые технологии, упрощающие создание реалистично выглядящих игр.
В Unreal Engine 5 появится сразу пачка программных компонентов, которые значительно упростят разработку игр на нем и позволят без огромных бюджетов делать очень красивые игры. Например, технология Lumen реализует глобальное освещение (то есть свет будет идти от неба, а не как сейчас в большинстве игр — от маленьких искусственных объектов), Nanite изменяет программный рендеринг объектов, что сделает их более качественными и менее ресурсоемкими, а также MetaHuman — система, генерирующая реалистичные модели людей.
При этом создатели движка из компании Epic предоставляют достаточно гибкую ценовую политику: если разработанная игра приносит прибыль меньше чем 3 тысячи долларов в квартал, то использование любой версии Unreal Engine бесплатно. Если же проект приносит больше указанной суммы, то необходимо приобрести лицензию и начать выплачивать процент с этой прибыли.
Нет у движка и ограничений по платформам, на которых можно выпускать свои игры. Хоть обе версии Unreal Engine в первую очередь создавались для невероятно красивых игр для игровых приставок PlayStation и Xbox, а также мощных ПК, все равно на данных движках делали и мобильные игры для устройств на Android и iOS.
Unity
Еще один движок, который пользуется огромной популярностью. Он также не ставит пользователю ограничений по платформам и жанрам, но исторически сложилось так, что с помощью его функционала удобно делать игры на мобильных платформах и небольшие проекты для ПК и игровых приставок, тогда как для масштабных игр он подходит меньше.

Система оплаты здесь еще проще и понятнее, чем у Unreal: для некоммерческих проектов движок полностью бесплатен, а с выручки коммерческих нужно выплачивать процент комиссии создателям Unity.
Ограничений по жанрам у этого движка нет — на нем сделан и известный мобильный шутер Dead Trigger, и не менее известная стратегия для ПК Endless Legend. При этом популярность движка обеспечивается простотой его освоения — хоть для создания игр и понадобится что-то программировать, а не только использовать встроенный редактор, в целом он гораздо проще, чем тот же Unreal и другие движки.
В то же время трехмерная графика в играх на Unity выглядит гораздо более скромно, чем игрокам хотелось бы от проектов для игровых приставок и компьютеров. По этой причине движок часто используют именно для мобильных игр, в то время как для разработки мощных игр выбирают другие решения.
Ранее мы рассказывали:

NVIDIA DLSS в играх: что такое технология DLSS
Любите делиться своим мнением о технике? Тогда напишите обзор товара в «Эльдоблоге» и получите до 1000 бонусов на новые покупки!
Игровой движок
В последние годы исчезли все препятствия, связанные с созданием видеоигр. Необходимые инструменты сильно подешевели, обладают открытым исходным кодом, а иногда и вовсе находятся в бесплатном доступе. Такое программное обеспечение обычно относится к категории готовых к использованию движков для игр. Так что, если вы думали, в какие игры можно поиграть на ПК, почему бы не сделать их самостоятельно по своему вкусу.
Соответствующее ПО, как правило, с легкостью справляется с поставленными перед ним задачами, то есть обеспечивает механику игры, благодаря которой оживают выдуманные миры и персонажи. Тем не менее для начинающего геймдизайнера движки для игр все еще могут казаться инопланетной технологией.
Возможно, вы уже пробовали себя в создании онлайн флеш игры или мобильных игр. Мы предлагаем окунуться в мир профессиональных движков для игр, которыми пользуются большие студии.
Что такое игровой движок простыми словами?
Для начала давайте определим, что такое игровой движок.
В двух словах, движок игры предоставляет все необходимое для ее полноценной работы, включая физику, структуру уровней, звуковое оформление, вводимые пользователем данные, а также такие элементы, как инвентарь, расположение врагов и других неигровых персонажей, поддержку графики.
Игровые движки часто используются из поколения в поколение. Но поскольку они постоянно развиваются и совершенствуются, игры, выпущенные на ранних этапах франшизы, могут сильно отличаться от более поздних релизов.
Вот, например, несколько коммерческих игровых движков:
- RE Engine (Capcom)
- Luminous Engine (Square-Enix)
- Frostbite (DICE)
Чтобы создать ощущение полного погружения в игру, лучшие игровые движки не заставляют геймдизайнера разбираться в технических подробностях. Все, что он видит, – это чистая магия.
Итак, давайте рассмотрим три самых популярных игровых движка, доступных на сегодняшний день.
Какой движок выбрать для игры?
1. Игровой движок Unity 3D
Будучи геймером, вы не могли не слышать о Unity 3D, даже если понятия не имеете о том, что такое игровой движок.
Это связано с тем, что название именно этого движка часто всплывает на заставках во время загрузки игры вместе с именами разработчиков и издателей, участвующих в создании конкретного произведения.
Движок Unity 3D – самое популярное решение для игр, занимающее 50 % рынка игровых движков для мобильных телефонов, ПК и консолей*, хотя сфера его применения выходит далеко за пределы индустрии развлечений.
В настоящее время 71 % из топа 1000 лучших мобильных игр сделан на Unity.
Unity 3D – один из нескольких бесплатных игровых движков, доступных онлайн. Его можно использовать для создания практически всего, что связано с графикой, включая браузерные игры, фильмы c CGI, ААА-игры, трейлеры и анимацию. Сама компания называет эти продукты RT3D или Real-Time 3D, то есть 3D в реальном времени.
Однако у движка Unity также есть настройки для работы в 2D, которые вы можете активировать после первого запуска программы. Для дизайнеров, привыкших к инструментам с более наглядным интерфейсом (например, к RPG Maker от Enterbrain), Unity 3D может показаться непонятным.
С одной стороны, приходится использовать C# или Java для создания игры, но с другой стороны, с помощью пошаговых руководств с YouTube можно сделать игру примерно за час.
Это подводит нас к одному из самых главных преимуществ Unity. Мы имеем в виду поддержку внутри сообщества. На сайте Unity опубликована исчерпывающая документация, но разработчики игр также могут обратиться к образовательным материалам на YouTube, Udemy и других сайтах с пользовательским контентом.
При этом туториалы могут быть довольно узконаправленными. Это значит, что если вам нужно найти видео о том, как сделать систему инвентаря в РПГ, или о том, как применять микротранзакции на мобильных платформах, вы с легкостью найдете подходящие ролики.
У Unity также есть магазин контента Assert Store, так что вы сможете добавить шика к своей версии «Змейки» или «Космических захватчиков».
Возможно, один из главных вопросов, которыми задаются начинающие разработчики, заключается в том, хватит ли игрового движка для создания чего-то особенного? Не волнуйтесь, Unity 3D пользуется популярностью как среди создателей ААА-игр, так и среди людей, которые только пробуют заниматься геймдизайном, сидя на диване у себя дома.
Этот движок адаптируется к вашим задачам, замыслам, а также к текущему бюджету вашего проекта.
Например, если у компании доход меньше 100 000 долларов в год, то она может пользоваться Unity бесплатно. Пакеты услуг стоимостью до 4000 долларов в месяц покупают по-настоящему большие корпорации.
Если вы не планируете конкурировать с крупными студиями и создавать лучшие игры на ПК всех времен, вероятно, вам не понадобится весь спектр возможностей игрового движка в таком объеме.
В целом сейчас Unity 3D – самый доступный бесплатный игровой движок в мире с лучшей поддержкой.
* Все цифры взяты с Unity.com.
2. Игровой движок Unreal Engine (Анриал)
Как и в случае с Unity 3D, вы наверняка о нем слышали. Unreal Engine от Epic Games существует с 1998 года и это именно тот движок, на котором создан один из самых популярных шутеров (Unreal или, как предпочитают писать русскоязычные пользователи, «Анриал»), а также различные спин-оффы. Если вы думали скачать игры про войну, обратите внимание на релиз Hell Let Loose – он сделан на движке Unreal Engine 4.
Конечно, с конца 1990-х было выпущено несколько поколений этого движка, и сейчас мы стоим на пороге выхода новой части. Как сообщается, Unreal Engine 5 станет доступным в 2022 году. Без сомнения, посредственные проекты так долго не живут.
В настоящее время Unreal Engine – это один из главных конкурентов Unity из-за его исключительных графических возможностей. Итак, давайте посмотрим на движок Анриал с точки зрения начинающего разработчика игр.
Назначение этого продукта немного отличается от целей его конкурентов, но в остальном это такой же игровой движок, как и любой другой. Однако на этот раз Epic Games добавляет к списку сфер применения такие задачи, как разработка архитектуры и услуги для телевидения.
В первую очередь стоит отметить, что Unreal не ориентирован на новичков, так как его язык программирования (C++) сегодня считается немного устаревшим. Ему также не хватает более интуитивно понятного интерфейса Unity.
Другими словами, Unreal Engine – популярный выбор среди разработчиков ААА-игр и часто используется при создании международных блокбастеров. Но давайте забудем о сравнениях и сосредоточимся на том, что может делать топовый игровой движок от Epic Games.
Как уже упоминалось, Unreal Engine – это графический гигант, который привлекает художников, геймдизайнеров игровых уровней, экспертов по освещению и просто страстных любителей технологий.
Эта платформа отличается поддержкой объемного тумана, теней с точностью до пикселя, постобработкой и «миллиардами треугольников», если цитировать маркетинговые материалы об Unreal Engine 5.
Что касается будущего графического потенциала, Epic Games стремится к фотореализму без потери производительности. Это мечта всех дизайнеров видеоигр с тех пор, как Pong доказала, что можно заставить нарисованный мячик отскакивать от платформы и перемещаться по всему экрану.
Само собой разумеется, для разработок такого уровня сложности требуется армия экспертов, а не дилетант-одиночка. Одно из основных достоинств Unreal Engine, помимо визуала, – это встроенные мультиплатформенные инструменты.
В частности, после обновления в 2022 году этот игровой движок позволит запускать что угодно и на чем угодно. По крайне мере точно можно будет портировать игру, сделанную под ПК, на консоль без каких-либо сложностей. Согласно анонсам, Unreal Engine 5 будет доступен для iOS. Следовательно, нас ждут лучшие игры на iPad и iPhone, выполненные на этом игровом движке.
Этот функционал особенно оценят те системы и издатели, которые испытывали проблемы с качеством портированных игр в прошлом, например, Nintendo Switch. Но он пригодится и всем, кто создает видеоигры или играет в них.
Что касается операционных расходов, с Unreal Engine может быть все немного сложнее, поскольку необходимо учитывать роялти. По словам бывшего генерального директора, это одно из главных преимуществ Unity 3D перед Unreal. Бесплатные лицензии Unreal бывают двух типов: для издателей и для авторов.
Разница состоит в том, что по лицензии издателя роялти в размере 5% выплачиваются, если продукт приносит более 1 миллиона долларов. Epic Games предлагает гибкие корпоративные решения или универсальный план за 1500 долларов в год.
3. Игровой движок Amazon Lumberyard
Amazon не пользовалась большим успехом в мире видеоигр, и ее идея купить Twitch, безусловно, была блестящей. Недавно Amazon также выпустила MMO New World. Браузерные ММОРПГ других студий меркнут на фоне этой новинки, но в остальном ситуация выглядит не очень радужно.
Несмотря на более чем десятилетнюю историю существования, Amazon Games не уходила далеко от мобильных приложений и приложений для социальных сетей до того, как в 2018 году выпустила игру, основанную на популярном ТВ-шоу The Grand Tour на Amazon Prime.
Попытки компании сделать что-то для консолей и ПК обернулись катастрофой: на сегодняшний день отменено пять игр, в том числе одна (Crucible) уже после релиза. Учитывая предыдущие неудачи, можно сказать, что игра New World добилась очень многого.
В контексте нашей статьи самое главное – это та технология, на основе которой была создана упомянутая игра, а именно Lumberyard. Это один из немногих полностью бесплатных игровых движков.
Lumberyard обеспечил себе место в нашем списке, потому что это новая и интересная разработка в области игровых движков. Давайте забудем все, что нам известно об Amazon Games, и приступим к детальному разбору.
Во-первых, Lumberyard – это модифицированная версия CryEngine, еще одной среды разработки, известной по играм студии Crytek, таким как Far Cry и Crysis.
Обратите внимание, что Lumberyard – это ответвление от движка CryEngine (и, возможно, его значительно улучшенная версия), поэтому если упоминание последнего вас оттолкнуло, все же не спешите ставить на Lumberyard крест.
Учитывая, что игровой движок CryEngine известен настолько вычурной графикой, что это даже породило мемы (например, «А Crysis потянет?»), Lumberyard скорее относится к категории Unreal, чем Unity 3D.
Если вы внимательно читаете нашу статью, вы сразу же поймете, что мы имеем в виду. Lumberyard не так удобен для пользователя, как Unity 3D, и для него нет такой подробной документации. Это новинка в области игровых движков.
Однако в долгосрочной перспективе Lumberyard позволит AAA-разработчикам сэкономить миллионы долларов. По факту, роялти Unreal Engine в размере 5 % – это очень крупная сумма, когда такие студии, как CD Projekt Red, продают 13 миллионов копий в течение месяца после выпуска игры.
Итак, почему же Lumberyard обладает потенциалом для того, чтобы стать лучшим игровым движком? Технологические компоненты Amazon практически не имеют себе равных, и некоторые из ее самых популярных инструментов интегрированы в этот дебютный игровой движок.
Хорошим примером служит Amazon Web Services (AWS) – платформа для облачных вычислений, которая может упростить внедрение многопользовательского режима в проекты, выполненные на движке Lumberyard.
К сожалению, GameLift – сегмент AWS, который можно применяться в играх, – это услуга премиум-класса с оплатой по факту использования. Вы вряд ли захотите делать на нем бесплатные мультиплеерные игры.
Тем не менее, сумма не выглядит чрезмерной, учитывая, какие ресурсы нужны для многопользовательского режима. Вы можете начать работу с 8 долларов в месяц, но стоимость использования GameLift будет постоянно пересчитываться в зависимости от ваших потребностей.
Какой самый лучший движок?
Игровой движок ведет свою историю (в том числе в графике 3D) с 1995 года. Платформа XnGine была спроектирована все еще действующим на данный момент разработчиком Bethesda и применялась в качестве движка игры Daggerfall – одного из первых релизов в мире The Elder Scrolls. Также на нем была сделана часть Battlespire. Что касается этой серии, сейчас доступны более новые игры на ПК, скачать которые вы сможете в любой момент в цифровом магазине Steam.
Раньше игры создавались с нуля, и каждый элемент был совершенно новым. В современном мире, благодаря движкам, все части франшиз происходят в одной и той же вселенной вплоть до кода, который описывает то, как виртуальный ветер шевелит волосы персонажа.
Их можно расширять, модифицировать, портировать и иным образом адаптировать игровой мир к следующему громкому релизу.
Для новичка в индустрии игр именно Unity 3D – это идеальная точка входа в разработку видеоигр.
В сочетании с прочими бесплатными инструментами, такими как Notepad 3D, Inkscape, YouTube и Blender, у вас будет все необходимое для создания игры. Но кроме этого вам, конечно, понадобятся сценарист, художник и немного упорства.
Однако некоторые обозреватели отмечают, что Unity склонен вылетать и не подходит в качестве движка игры с графикой высочайшего уровня. Тут придутся кстати два упомянутых выше варианта.
Из движков для игр Unreal Engine и Amazon Lumberyard лучше выбирать первый, в основном потому, что движок Amazon все еще считается темной лошадкой. Однако если вам нужно портировать готовый проект на Lumberyard, детище Джеффа Безоса безоговорочно выигрывает.
Специалисты отмечают, что Amazon Lumberyard может занять ведущую позицию в ближайшее время.
Игровой движок, который подойдет именно вам
В конечном счете, выбор лучшего игрового движка зависит от того, чего вы и ваша компания ждете от программного обеспечения. Вы хотите изучить что-то новое или поэкспериментировать с чем-то, что вы не до конца понимаете? Может быть, вы студент, который хочет сделать карьеру в этой индустрии после получения диплома? Или вы уже делали игры на HTML5 и теперь хотите выйти на новый уровень?
Подумайте, что такое геймер? Это не только тот, кто часами играет в видеоигры, но и тот, кто разбирается в том, как они сделаны. Настоящий хардкорный геймер может даже сделать несколько модов к любимой игре самостоятельно, чтобы персонализировать свой игровой опыт.
Чтобы узнать больше и получить полное представление о разработке игр, почитайте нашу статью «Как создать игру?». Это поможет вам научиться делать игры, играть бесплатно в которые вы сможете, когда захотите.
«Начинайте с идеи игры, а не движка». Разработчик игровых движков — о том, что это и как устроено
Василий разрабатывает игровые движки с 16 лет, с того момента, как дома появился первый ZX Spectrum, — и не представляет, чем еще мог бы заниматься в жизни. Айтишник выпускал мобильные и веб-игры, создавая их в одиночку, а также написал несколько движков (вот один из них). В рамках спецпроекта Onliner и BGaming мы узнали у разработчика этой компании, как устроен игровой движок и что он собой представляет.
Как выглядит движок
— Простым языком: движок игры — что это такое?
— Изначально у тебя есть язык программирования, в котором ты можешь сделать все что угодно. Но примерно ко второй игре становится ясно, что многие вещи повторяются из игры в игру, и чтобы не писать их повторно, ты объединяешь их в некий набор библиотек и инструментов, который и принято называть движком. Хороший движок избавляет от необходимости делать то, что уже сделано раньше, но в то же время оставляет тебе свободу действий. Продвинутый и удобный движок — это не просто набор библиотек, понятный только программистам. Это инструмент, в котором можно увидеть и отредактировать игру. То есть это, если сильно утрировать, как Photoshop или Word, только для игр. Такого пути при разработке движка я всегда придерживался.

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

— По такому принципу можно любую игру сделать?
— Визуально вся игра сводится к тому, что каждый объект перед каждым кадром обновляет свою позицию. У него есть координаты — X и Y. Если к X прибавить 1, объект сдвинется на один пиксель. А если на каждом кадре прибавлять к X по единице, то объект будет непрерывно двигаться вправо. Вот и все: когда в 16 лет я узнал, как вывести произвольную букву в произвольную точку экрана, мне хватило, чтобы уйти в это с головой. Я составлял человечков из букв, которые бегали по лестницам, собирали монеты и так далее.
Но есть более продвинутый способ двигать объекты по экрану — это когда мы работаем не с X и Y объекта напрямую, а с его скоростями по оси X и Y. Назовем их speedX и speedY, значения которых попросту прибавляются к X и Y каждый кадр. Теперь, однажды установив speedY значение, равное 1, мы заставим объект двигаться вниз со скоростью 1 пиксель за кадр. А если мы начнем каждый кадр увеличивать speedY на 1, то объект будет двигаться вниз с ускорением — получится действие гравитации. Нам останется проверить наличие препятствия под объектом и установить speedY в 0, чтобы объект не проваливался сквозь пол. А можно при касании пола speedY умножить на минус один (изменить скорость на противоположную), и тогда объект «отскочит» и полетит вверх.

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

В целом при разработке самое главное — не ставить глобальные задачи, пытаясь все охватить. И не пытаться в новой для тебя задаче с ходу сделать что-то фундаментальное и долгоживущее. Нужно подходить экспериментально: двинулся куда-то, понял, что есть проблема, — попробуй другой путь. Если видишь, что идея рабочая — можешь проработать ее детальнее. Свой игровой редактор я создал не с первой попытки. Было множество версий на разных языках, были и тупиковые версии, которые я бросал через две недели после начала разработки, так как понимал, что подход нежизнеспособный.
Кстати, важный момент в любой разработке — скорость итерации, то есть насколько быстро ты увидишь внесенные тобой изменения в действии. Бывают проекты, в которых на компиляцию и запуск игры уходит минута и больше, а бывают такие, где хватает 1—2 секунд. И простая математика: ты сразу становишься в 15—30 раз эффективнее. Даже не в том смысле, что сделаешь в 30 раз больше работы, а в том, что получишь в 30 раз меньше стресса и при этом будешь полон сил двигаться дальше.

— От чего зависит популярность движка? Например, CryEngine, несмотря на технологичность, почти нигде не использовался, а Unreal Engine много где встречается.
— Движков тысячи, есть удобные и не очень. У человека есть какое свойство: когда ты смотришь на что-то новое с большим количеством кнопок — оно тебе всегда не нравится. Допустим, работаешь год в 3ds Max, потом переходишь на Blender — кажется, что это полная муть и его инопланетяне придумали. Только дня через три начинаешь понимать, что к чему. То есть привыкание, инертность играют большую роль. Допустим, появился новый движок — он может быть объективно удобным и хорошим. Но кто захочет уйти от чего-то привычного и понятного? А когда речь идет о крупной компании, все в разы сложнее, тем более если на кону большие деньги.
— Почему многие студии делают собственные движки? Не проще ли лицензировать существующий?
— Я лицензированием движков не занимался, но по себе могу сказать, что свое всегда ближе, и ты меньше тратишь времени на доработку и исправление чужих «косяков». Цепляешься за какой-то недочет в стороннем движке — и либо тебе приходится от чего-то отказываться, либо тратить большое количество времени на поиск обходного пути.

Года три назад при переходе с Flash на HTML я около месяца просидел на Unity в качестве эксперимента. На мой вкус, там слишком много рутинных вещей, игровые объекты избыточно раздроблены на подкомпоненты, и 90% твоего кода занимают связи между этими подкомпонентами. Другие вещи, которые я считаю важными, реализованы не идеальным образом. Возможно, тут сыграла роль та самая человеческая инертность.
— Ты разрабатываешь только движок или игрой тоже занимаешься?
— Разрабатывать движок, отгородившись от игры, вредно. Если сам с ним не работаешь как пользователь, то понятия не имеешь, куда двигаться дальше. Только непосредственно при разработке игровой сцены ты заметишь, что чего-то не хватает или какая-то процедура занимает больше сил, чем могла бы. Как только я натыкаюсь на рутину или баг — сразу добавляю какую-то кнопку, галочку, пару дней проверяю, как оно работает в «боевых условиях», и если все в порядке, включаю ее для всех.
Если делать движок отдельно от игры, то ты не сможешь до конца понять, что именно нужно разработчику, и то, что ты сделаешь, не будет таким удобным и полезным, каким могло бы быть.

Принципы оптимизации
— Как выглядит оптимизация под разные платформы, железо?
— Устройств много, и в первую очередь нужно думать о самых слабых девайсах. Наиболее простой способ оптимизации выглядит так. Допустим, у тебя есть набор анимаций, частиц. Их можно сделать в десять раз меньше по количеству. На маленьком экране разницу даже не заметишь, а нагрузка на железо серьезно уменьшится.
Однако больше всего производительность страдает от отрисованной на экране площади за один кадр. Когда картинка состоит из нескольких слоев, каждый слой в ней отъедает значительную часть ресурсов, даже если она неподвижная. Неподвижные объекты из разных слоев нужно склеивать в один везде, где это возможно, и не отправлять на отрисовку то, что находится за пределами экрана. Например, изображение для фона в играх часто имеет размер намного больше, чем сам игровой экран, видимый пользователю. Если такое изображение отрисовывать как есть, то области за пределами экрана будут нагружать видеокарту. Значит, нужно вычислить область в пределах экрана и отрисовать только ее. В нашем движке для этого есть специальный объект, который обрезает у себя «лишние» части.
Даже если у тебя игра уже работает максимально быстро и дополнительная оптимизация не дает видимого глазу эффекта, есть батарея телефона, которая будет греться и быстро садиться, если не подойти к вопросу оптимизации с душой или хотя бы с серьезными намерениями.

— Разработчик игры должен быть технарем?
— Человек, отвечающий за программирование, — да. Для художника это не обязательно, но когда он имеет опыт разработки игр собственными руками — это очень сильно помогает и экономит время. Он может заранее организовать слои максимально близко к тому виду, в каком они будут организованы в игре. Не потратит время на то, что будет в любом случае вырезано и реализовано программно.
Даже в отрыве от арта и кода игра — это сложная инженерная система, в которой пересекается множество идей и механик. Если ты не видишь все эти пересечения наперед, всплывает множество неожиданных переделок, которые дорого обходятся.
«Самое сложное — не начать разработку, а закончить ее»
— По каким признакам можно понять, хороший в игре движок или нет?
— Если движок хороший, то его присутствие в игре не заметно. Бывает, вижу какую-нибудь известную игру, а спустя годы узнаю, что ее сделали в GameMaker.
В 3D-играх возможны некоторые особенности в освещении и цветообработке. Но в случае с 2D все обычно сводится к отрисовке картинки такой, какая она есть, и движок не оставляет своих признаков. У меня была игра Iron Impact: она сделана в 2D с динамическим освещением, то есть каждый спрайт был не плоским, а имел карту высот и нормалей. И если бы на этом моем движке мне показали другую игру, я бы его узнал.

— Что посоветуешь разработчикам игровых движков?
— Начинайте с игры и ее идеи, а не движка. Нельзя сделать движок, а потом думать, какую игру на нем разработать. Только в процессе создания игры будет понятно, в какую сторону двигаться по расширению движка, как его адаптировать и оптимизировать.
Главный совет — не делайте чего-то глобального. Даже если уверены в своих силах, лучше сделать что-то простое, тогда будет шанс закончить дело и выпустить игру. Самое сложное — не начать разработку, а закончить ее. Ведь как все идет: за второй день разработки ты удвоишь объем сделанной работы, и это очень много. А день разработки после трех месяцев работы — это лишь один процент от уже проделанного. Чувство прогресса замедляется, и радость от разработки улетучивается.
BGaming — быстрорастущий игровой провайдер с белорусскими корнями, предлагающий качественные продукты для онлайн-казино по всему миру.
Игрок и его выбор — главная ценность компании, поэтому мы постоянно изучаем и анализируем потребности и предпочтения аудитории, чтобы создавать яркие и запоминающиеся продукты. Студия разрабатывает онлайн-игры на стыке gambling и gaming, в которых идеально сбалансированы визуальные эффекты и математика. Это возможно благодаря команде экспертов с безграничной энергией и более чем 20-летним опытом в индустрии.
Спецпроект подготовлен при поддержке ООО «Меркелеон девелопмент», УНП 193084780.
Читайте также:
Наш канал в Telegram. Присоединяйтесь!
Есть о чем рассказать? Пишите в наш телеграм-бот. Это анонимно и быстро