Автор: Антон Григорьев. Первую игру написал самостоятельно ещё в школе, а на 4-м курсе устроился на позицию джуниор-разработчика. В Pixonic работает заместителем технического директора и руководит отделом клиентской разработки. Отвечает за запуск новых проектов, обучение и внедрение новых технологий. Говорит на пяти языках, а программирует на десяти.
Когда вместе с vc.ru мы запускали проект «Пора создать свою первую игру», то не ожидали увидеть так много крутых работ в первом конкурсе. После цикла «Геймдизайн» нас завалили концептами с продуманными идеями, геймплеем, метой. С таким уровнем можно смело переходить к прототипированию на движке и тестированию конкретных механик.
Эта статья — первая из нового цикла «Разработка», где мы будем учиться делать цифровые прототипы, выбирать движок, заполнять пробелы в кодинге с помощью обучающих материалов и не только. В конце снова разыграем крутые призы, а главным станет вышедший недавно бандл 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, у последнего она будет детальнее, а потому и погружение ощущается лучше.
- Совершенно другой пользовательский интерфейс, по сравнению с ПК и мобильными устройствами Обычно он трехмерный, а чтобы нажать на какой-нибудь элемент нужно задержать взгляд на определенной кнопке.
Если в планах кроссплатформенная игра, то нужно учитывать все особенности. Но быстро переделать интерфейс или способ ввода на новую платформу в большинстве случаев не получится.
Обзор основных движков
Сначала поговорим про «взрослые» движки. Они позволяют разрабатывать под несколько платформ сразу, кроме того, у них есть очень много полезных инструментов. Пугаться и начинать с более простых не стоит — список составлен с учетом доступности для новичков, количества обучающих материалов в открытом доступе, наличия хороших вышедших игр на движке и цены.
Unity
Один из самых популярных движков на сегодня.
Платформы: мобильные устройства, ПК, 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 и множество других популярных игр.
В Unity можно спокойно разрабатывать как 2D, так и 3D-проекты. В Asset Storeесть много готовых платных и бесплатных решений: модели, текстуры, анимации и полноценные проекты. Например, шутер про зомби. Очень много обучающих материалов как от самих Unity, так и от энтузиастов на YouTube (подробнее расскажем в следующем материале цикла). Плюс множество плагинов для рекламы и внутриигровых покупок.
Язык программирования: C #, по сравнению c С++ у него меньше возможностей выстрелить себе в колено, в частности, это касается работы с памятью. Также поддерживается JavaScript, который на самом деле UnityScript. Если писать код совсем лень или нет навыков, есть плагины, которые позволяют делать игры без написания кода, например, Playmaker. Правда, за него придется выложить 45 долларов.
Кто-то ругает Unity за графику, но на самом деле графику можно сделать красивой на любом движке, просто в Unity она по умолчанию средняя. В последней версии движка появился новый Rendering Pipeline, и с ним вполне можно делать графику на уровне топовых AAA-проектов.
Стоимость движка: бесплатно, если разработчик зарабатывает на игре меньше $100 тысяч в год. Иначе — подписка, но тогда это не будет большой проблемой.
Unreal Engine
Очень продвинутый движок, сообщество которого в последнее время быстро растет, чему способствует компания-разработчик Epic Games. По Unreal Engine проводятся митапы, стримы, а в этом году прошла первая конференция, посвященная разработке на Unreal.
Платформы: движок в первую очередь для тех, кто хочет делать проекты с крутой графикой на ПК и консолях. Для мобильных устройств тоже подходит, но пока популярных мобильных игр на Unreal Engine немного: Fortnite и PUBG. Ещё на нём сделаны серия Infinity Blade, Batman: Arkham Knight и Life is Strange.
Язык разработки: C++. Кого-то это может отпугнуть, но есть решение — блюпринты. С их помощью теоретически можно разработать игру, не написав ни строчки кода. На практике — это очень полезно для быстрой разработки прототипов. Также есть магазин ассетов Unreal Engine Marketplace, где можно скачать готовые модели, звуки и полноценные проекты.
Злые языки говорят, что Unreal Engine превосходит Unity по графике. На самом деле это просто разные движки. Хотя частицы и пост-эффекты в Unreal Engine по умолчанию всё же красивее.
Стоимость движка: 5% роялти, если разработчик зарабатывает на игре больше $3000 за квартал.
CryEngine
Стал известным после выхода Crysis — прорывной для своего времени игры. На нём вышло очень много крутых больших игр: первый Far Cry, MechWarrior Online, Sniper: Ghost Warrior 3, Armored Warfare, Homefront: The Revolution, Prey 2017-го года.
Платформы: ПК, консоли и VR. Официальной поддержки мобильных устройств нет, но по слухам разрабатывать можно.
Код движка можно модифицировать, что приносит как радость, так и боль. Я сам работал с CryEngine 2 — много модифицировали движок, исправляли баги, а когда попытались перейти на CryEngine 3 — потратили месяц и в итоге вернулись на предыдущую версию, так и не справившись с некоторыми проблемами.
Язык разработки: C++. Совсем недавно появился Marketplace с ассетами.
Стоимость движка: начиная с пятой версии — 5% роялти с при доходе с игры более $5000, а ведь помню времена, когда он стоил миллион евро.
Lumberyard
Молодой и бесплатный движок с открытым исходным кодом от 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.
Phaser
Отлично поддерживается создателями. Полезных фич много: спрайтовая графика, анимации, система частиц, 2D-физика, загрузка ресурсов одной строчкой кода, поддержка нескольких камер. Плюс поддержка мобильных браузеров и система плагинов для расширения функциий движка.
Лучше всего подходит для простеньких браузерных 2D-игр (match-3, hidden object, гонки).
Платформы: ПК, iOS, Android.
Turbulenz
Этот движок уже поддерживает 3D-графику с динамическим освещением, физику, обрабатываемую в реальном времени и мультиплеер с присоединением к игре в один клик по ссылке и интеграции с соцсетями. Но игр на Turbulenz пока немного.
Платформы: Web, ПК и PlayStation 4.
Есть и нишевые движки для визуальных новелл, головоломок, RPG старой школы и других 2D-игр. Например, Corona SDK, GameSalad, Cocos2d, Game Maker. В Википедии есть большой список игровых движков, но перечисленных выше должно быть достаточно.
Мы в компании считаем, что для новичков лучше всего подходит Unity. По нему очень много подробных обучающих материалов, простейшую игру можно сделать за день (умелец запилит Flappy Bird за пару часов), легко деплоить на девайсы. Мы сами используем Unity для разработки игр и прототипов, поэтому в следующих материалах цикла «Разработка» будем больше акцентировать внимание именно на этом движке.
Домашнее задание
- Выберите платформу, для которой вы будете делать игру в первую очередь, учитывая все особенности своего проекта.
- Выберите и установите движок, который вам подходит (для начала мы рекомендуем Unity).
В следующей статье рассмотрим источники обучающих материалов для разработки 2D-игр.