Выбор движка для первой игры

Разбор технологий и платформ — первая статья из цикла о разработке.

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

Когда вместе с vc.ru мы запускали проект «Пора создать свою первую игру», то не ожидали увидеть так много крутых работ в первом конкурсе. После цикла «Геймдизайн» нас завалили концептами с продуманными идеями, геймплеем, метой. С таким уровнем можно смело переходить к прототипированию на движке и тестированию конкретных механик.

За несколько недель мы:

  1. Придумали идею для игры.
  2. Написали концепт.
  3. Сделали бумажный прототип.
  4. Расписали мету.
  5. Целый день отвечали на вопросы о геймдизайне и не только
  6. И разыграли PS4 Pro God of War Limited Edition.

Эта статья — первая из нового цикла «Разработка», где мы будем учиться делать цифровые прототипы, выбирать движок, заполнять пробелы в кодинге с помощью обучающих материалов и не только. В конце снова разыграем крутые призы, а главным станет вышедший недавно бандл PS4 Pro Spider-Man Limited Edition. Поехали.

Платформы

Разработка игр для смартфонов, ПК и консолей значительно отличается. Хотя бы потому, что у них разные технические характеристики, устройства ввода/вывода и способы распространения продукта. Сразу сделать одну игру на несколько платформ не получится, но об этом мы еще поговорим. А пока рассмотрим особенности каждой из платформ и перейдем к движкам.

Мобильные устройства

  • Тачскрин для ввода и вывода информации — следовательно, пальцы не должны закрывать важные элементы интерфейса.
  • Смартфоны и планшеты должно быть удобно держать, чтобы играть одной/двумя руками. Отлично подходит для казуальных игр (match-3, hidden object, интерактивных историй и так далее), а для шутеров — не очень.
  • Ограниченная оперативная и графическая память, которые часто совмещены. Нужно постоянно следить за ними, отгружать ненужные ресурсы, текстуры и ужимать звук, то есть использовать форматы с компрессией.
  • Ограничения графики. Можно сделать крутые шейдеры как в Crysis, но на телефоне это будет жутко тормозить.
  • Частые потери пакетов, пинг в 200 мс — норма. В случае сетевых игр это нужно учитывать.
  • Распространение через сторы (App Store, Google Play, Amazon). Понадобится поддержка API покупок, социальных функций и так далее.
  • Для Android придется учитывать огромное количество гаджетов с разной производительностью, соотношением сторон экрана и разрешением.

ПК

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

Консоли

  • Управление с джойстика. Лучше подходит для аркад, файтингов, игр от 3-го лица, но не так удобно для шутеров. Хотя последнее поколение геймеров играет с джойстика не хуже, чем с клавиатуры и мыши.
  • Продвинутые графические технологии.
  • Ограниченное количество конфигураций устройств. Например, если разработка ведётся под Xbox One или PS4, то нужно знать особенности только этих устройств, а значит и тестировать будет проще. В отличии от различных конфигураций ПК или целого «зоопарка» устройств на Android.
  • Не все плагины портированы или хорошо работают, например, сетевые библиотеки и плагины аналитики. Но в последнее время их становится больше).
  • Вывод на экран телевизора/проектора. У кого-то может стоять новый изогнутый Samsung, а у кого-то бабушкин «ящик» с электронно-лучевой трубкой — это тоже нужно учитывать.
  • Чтобы выпустить игру на консоли, нужно пройти лицензирование — процесс проверки соответствия игры стандартам платформы. Это долгий процесс, со множеством условий и ограничений. Например, при портировании одной игры на консоль от Nintendo я с командой когда-то не прошёл лицензирование с первого раза из-за того, что время загрузки уровня было больше половины секунды, а по их правилам это нужно обозначать в виде иконки загрузки или надписи Loading. И таких нюансов немало.

Web

  • Ограничения на размер игры, поскольку она будет загружаться в браузере. Никто не любит долго ждать. А еще некоторые играют в браузере телефона и платят за трафик. В общем, делать полноценный AAA-тайтл нет смысла.
  • Ограничения по 3D (используется WebGl). Поэтому в Web в основном выходят 2D-игры.
  • Ограничения по сетевой игре, ведь обычные сокеты недоступны. Можно делать запросы по https или использовать WebSockets. В основном на Web можно делать простые игры с небольшим количеством запросов к серверу. Например, фермы. Сетевые 3D-шутеры делать тоже можно, но сложно.
  • Дешёвая интеграция с соцсетями. В первую очередь, Facebook. Поэтому делается упор на социальную составляющую.

VR

  • Необычное управление: головой, перчатками, перемещением, джойстиками. Все эти устройства нужно поддерживать, у них обычно свой SDK. Кроме того, управление нужно сделать «естественным» для человека.
  • Эффект укачивания. Не всем шлем может «зайти», а при плохой реализации игры стошнит даже самого стойкого. Чтобы этого не было, движения в игре обычно делают плавными.
  • «Экран» VR-шлема делится на две части — по одной на глаз. Поэтому, чем выше разрешение, тем качественнее получается картинка. Если сравнить картинку на PS VR и HTC Vive, у последнего она будет детальнее, а потому и погружение ощущается лучше.
  • Совершенно другой пользовательский интерфейс, по сравнению с ПК и мобильными устройствами Обычно он трехмерный, а чтобы нажать на какой-нибудь элемент нужно задержать взгляд на определенной кнопке.

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

Совет для начинающих:

  • Лучше начать с одной платформы, на которой вам самим нравится играть — вы уже хорошо в ней разбираетесь.
  • Тестировать игры для мобильных устройств или ПК обычно в разы проще, чем, например, для консоли. Смартфоны и компьютеры есть почти у всех, и от нажатия кнопки Build в редакторе до загрузки прототипа на устройство может пройти лишь несколько секунд.

Обзор основных движков

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

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

Платформы: мобильные устройства, ПК, Mac, Linux, консоли, Facebook, WebGl, VR и другие.

Unity идеально подходит для разработки под мобильные устройства (но не только). На нём сделаны Angry Birds 2, Hitman Go, Heartstone, Monument Valley, Fallout Shelter, Ori and the Blind Forest, Pillars of Eternity, Firewatch, Inside, Pokémon Go, Super Mario Run, Cuphead, Escape from Tarkov, Life Is Strange: Before the Storm и множество других популярных игр.

Fallout: Shelter

В Unity можно спокойно разрабатывать как 2D, так и 3D-проекты. В Asset Store есть много готовых платных и бесплатных решений: модели, текстуры, анимации и полноценные проекты. Например, шутер про зомби. Очень много обучающих материалов как от самих Unity, так и от энтузиастов на YouTube (подробнее расскажем в следующем материале цикла). Плюс множество плагинов для рекламы и внутриигровых покупок.

Язык программирования: C #, по сравнению c С++ у него меньше возможностей выстрелить себе в колено, в частности, это касается работы с памятью. Также поддерживается JavaScript, который на самом деле UnityScript. Если писать код совсем лень или нет навыков, есть плагины, которые позволяют делать игры без написания кода, например, Playmaker. Правда, за него придется выложить 45 долларов.

Кто-то ругает Unity за графику, но на самом деле графику можно сделать красивой на любом движке, просто в Unity она по умолчанию средняя. В последней версии движка появился новый Rendering Pipeline, и с ним вполне можно делать графику на уровне топовых AAA-проектов.

Стоимость движка: бесплатно, если разработчик зарабатывает на игре меньше $100 тысяч в год. Иначе — подписка, но тогда это не будет большой проблемой.

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

Платформы: движок в первую очередь для тех, кто хочет делать проекты с крутой графикой на ПК и консолях. Для мобильных устройств тоже подходит, но пока популярных мобильных игр на Unreal Engine немного: Fortnite и PUBG. Ещё на нём сделаны серия Infinity Blade, Batman: Arkham Knight и Life is Strange.

Fortnite

Язык разработки: C++. Кого-то это может отпугнуть, но есть решение — блюпринты. С их помощью теоретически можно разработать игру, не написав ни строчки кода. На практике — это очень полезно для быстрой разработки прототипов. Также есть магазин ассетов Unreal Engine Marketplace, где можно скачать готовые модели, звуки и полноценные проекты.

Злые языки говорят, что Unreal Engine превосходит Unity по графике. На самом деле это просто разные движки. Хотя частицы и пост-эффекты в Unreal Engine по умолчанию всё же красивее.

Стоимость движка: 5% роялти, если разработчик зарабатывает на игре больше $3000 за квартал.

Стал известным после выхода Crysis — прорывной для своего времени игры. На нём вышло очень много крутых больших игр: первый Far Cry, MechWarrior Online, Sniper: Ghost Warrior 3, Armored Warfare, Homefront: The Revolution, Prey 2017-го года.

Prey

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

Код движка можно модифицировать, что приносит как радость, так и боль. Я сам работал с CryEngine 2 — много модифицировали движок, исправляли баги, а когда попытались перейти на CryEngine 3 — потратили месяц и в итоге вернулись на предыдущую версию, так и не справившись с некоторыми проблемами.

Язык разработки: C++. Совсем недавно появился Marketplace с ассетами.

Стоимость движка: начиная с пятой версии — 5% роялти с при доходе с игры более $5000, а ведь помню времена, когда он стоил миллион евро.

Молодой и бесплатный движок с открытым исходным кодом от Amazon на основе CryEngine для разработки игр AAA-класса. Главная особенность — встроенная поддержка сервисов от Amazon, например, AWS и Twitch.

Платформы: Windows, PlayStation 4, Xbox One, iOS, Android, VR (Oculus Rift, HTC Vive).

Серьезных проектов на Lumberyard в разработке пока можно пересчитать по пальцам, а выпущенных проектов нет вообще.

Язык разработки: C++.

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

Другие движки

В последнее время среди разработчиков игр для Web набирают популярность HTML5-движки. В их основе лежит WebGL, WebAudio и JavaScript. Самые популярные движки: Phaser и Turbulenz.

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

Лучше всего подходит для простеньких браузерных 2D-игр (match-3, hidden object, гонки).

Платформы: ПК, iOS, Android.

Этот движок уже поддерживает 3D-графику с динамическим освещением, физику, обрабатываемую в реальном времени и мультиплеер с присоединением к игре в один клик по ссылке и интеграции с соцсетями. Но игр на Turbulenz пока немного.

Платформы: Web, ПК и PlayStation 4.

Есть и нишевые движки для визуальных новелл, головоломок, RPG старой школы и других 2D-игр. Например, Corona SDK, GameSalad, Cocos2d, Game Maker. В Википедии есть большой список игровых движков, но перечисленных выше должно быть достаточно.

Hotline Miami — одна из многих известных игр, сделанных на Game Maker

Мы в компании считаем, что для новичков лучше всего подходит Unity. По нему очень много подробных обучающих материалов, простейшую игру можно сделать за день (умелец запилит Flappy Bird за пару часов), легко деплоить на девайсы. Мы сами используем Unity для разработки игр и прототипов, поэтому в следующих материалах цикла «Разработка» будем больше акцентировать внимание именно на этом движке.

Домашнее задание

  1. Выберите платформу, для которой вы будете делать игру в первую очередь, учитывая все особенности своего проекта.
  2. Выберите и установите движок, который вам подходит (для начала мы рекомендуем Unity).

В следующей статье рассмотрим источники обучающих материалов для разработки 2D-игр.

Это статья из нашего большого проекта с vc.ru. Если выполнять все задания, можно — ни много ни мало — научиться делать видеоигры. И выиграть лимитированное издание PS4 Pro в конце каждого цикла статей.

Цикл «Разработка»:

0
19 комментариев
Написать комментарий...
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Tymonr

Эту проблему решили valve со своим steam controller, сомневаюсь что у вас получится с ними потягаться.
Ну а так на кикстартер идти только, там любят такое

Ответить
Развернуть ветку
Аккаунт заморожен

Комментарий недоступен

Ответить
Развернуть ветку
Алексей К

Олег, напиши мне в ВК, может буду полезен. https://vk.com/mirror01

Ответить
Развернуть ветку
Dmitri Chik

Рядом с Phaser или даже выше стоило бы поставить Defold. Также было бы классно более чётко выделить языки скриптинга для каждого движка — так же, как и платформы.

Ответить
Развернуть ветку
Сергей Токарев

defold-у сильно мешает выбранный им lua для набора популярности
все-таки язык, в котором null или undefined является true, слишком идет вразрез с принятыми практиками. Впрочем, дело не в этом, а в том, где искать кадры с Lua-опытом.

Я в свое время выбирал LibGDX из-за Java, а потом Phaser из-за JavaScript, для максимального удобства в плане поддержки. Время показало, что в чем-то я был прав. На последнем проекте я был единственным кодером на Phaser, но два раза, когда фронтендщикам надо было поправить что-то, они с легкостью вносили правки, хотя у них не было никакого бэкграунда в Phaser, только JavaScript (ну и соответствующие фронтенду-бэкенду фреймворки для него)

Ответить
Развернуть ветку
Дмитрий Т

Вопрос даже не в движке. Графон в игре откровенно слабый, как умудрились продержаться на рынке столько времени? За счет инвестиций?

Ответить
Развернуть ветку
Nikita Guk

За счет кор-геймплея

Ответить
Развернуть ветку
Tymonr

Немного дополню по "другим" движкам - сейчас очень крутые обороты набирает godot, просто божественно аккуратная архитектура, внятные интерфейсы и чистый workflow. Очень советую. Лично я всегда использую его на джемах, т.к. знаю что не возникнет никаких crux'ов, отнимающих ценное время

Ответить
Развернуть ветку
Serge Zaigraeff

Подскажите годных туториалов по Godot?

Ответить
Развернуть ветку
Tymonr
Ответить
Развернуть ветку
Max Yankov

Не указана ещё одна особенность VR, которая может здорово укусить за задницу: необходимость в практически любом проекте MSAA, что отрезает deferred рендер пайплайн, который по умолчанию используется практически в любом современном проекте.

Ответить
Развернуть ветку
Василий Скобелев

Сказать, что Batman: The Telltale Series сделан на Unreal в статье, претендующей на грамотность в движках это прям ух.

Ответить
Развернуть ветку
Roman Pinskiy

Ну раз уж пошла такая пьянка у ios тоже уже не одно разрешение экрана а с выходом Xr добавится еще одно не стандартное.

Ответить
Развернуть ветку
Gutal1n

Разве Unity не убрал поддержку JavaScript(UnityScript) тысячу лет назад?

Ответить
Развернуть ветку
Oleksandr Similietov

Для 2д игр ещё можно упомянуть defold.
Скриптинг - lua, билді єкспортить можно под великое множество платформ + мобильные, десктопные, броузерные.

Ответить
Развернуть ветку
Дмитрий Насонов

Прошу прощения, я мог что-то пропустить, но почему AR не рассматривается как платформа?

Ответить
Развернуть ветку
AS

К разработке игр почти никакого отношения не имею, но был бы очень рад, если бы появилось что-то вроде SpriteKit для Android. Из того, что пробовал в 2D он понравился больше всех.
Есть какой-то опенсорсный порт, но он заброшен :(

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Катя Попова

Для полной картины по стоило упомянуть и движок Corona. Он бесплатный, кросс-платформенный и понятный для совсем новичков. Найти разработчиков с опытом на Corona или на Lua в целом и посоветоваться можно в сообществе движка https://vk.com/corona_pub

Ответить
Развернуть ветку
16 комментариев
Раскрывать всегда