Чем отличается Unity от Unreal и о навыках Unity-разработчиков — Вадим Воробьёв

Вадим Воробьёв шесть лет в геймдеве. За это время успел поработать в четырёх игровых студиях, в том числе и в одной из известнейших в Беларуси Vizor Games. Разрабатывал игры и на Unity, и на Unreal.
И теперь Вадим делится своими знаниями с другими как по одному движку, так и по другому являясь инструктором этого курса разработки игр на Unity (а также и на Unreal Engine).

Мы посчитали, что Вадиму есть что рассказать на тему игровых движков, и задали ему пару вопросов.

О различиях

Разница между Unity и Unreal Engine 4 фундаментально огромная. И в техническом плане, и в лицензионном, и в финансовом, и в сообществе, но обо всём по порядку.

Анрил появился в 1998 году. В те времена еще не было даже понятия «движок». Ребята просто делали классную игру, которая должна была использовать самые современные возможности компьютерного железа. В этом плане их философия остается такой до сих пор — выжать максимум из железа.

Юнити в этом плане появился в 2005 году — чтобы делать игры на компьютерах от Apple и для компьютеров от Apple. И на волне смартфонов ребята быстро оседлали волну технологического прогресса под лозунгом «чем больше платформ, тем лучше».

Unreal (1998)
Первая игра на движке Unreal Engine — Unreal (1998). Именно с неё началась серия Unreal Tournament и развитие самого движка
Unreal Tournament 3
Unreal Tournament 3, которая вышла в 2007 году. Движок — Unreal Engine 3
Unreal Tournament 4
К сожалению, отмененная Unreal Tournament 4. Epic Games её разрабатывали на Unreal Engine 4

Историю выше надо знать. Потому что эти вещи легли в основу философии обоих компаний. Компания Epic Games зарабатывает тем, что делает и продает игры. Компания Unity Technologies зарабатывает тем, что делает и продает игровой движок. Это объясняет и разницу между экосистемами.

Unity — движок для всех. Компания предоставляет кучу сопутствующих услуг: формальное обучение и сертификаты, соответственную аналитику и рекламу.

Epic Games — движок для выжимания технологического максимума. С продвижением в массы у них поскромнее, но зато есть гранты. Они просто дают денег тем, кто им понравится.

В плане работы юнити сделан простым, а анрил — эффективным. Это прослеживается в работе с файлами, в том как пишется игровая логика, даже в том, как выглядит стартовый проект.

Guns of Icarus — пример инди-игры на Unity со своей изюминкой. Вы член экипажа… Боевого дирижабля и сражаетесь против таких же команд живых игроков. У каждого своя роль — кто-то рулит воздушной махиной, стрелки бегают от одной пушки к другой, ремонтники — чинят и тушат постоянно горящие двигатели

Одно из важных отличий — система блюпринтов в анриле, мол «можно делать игру без программиста» и «можно делать шейдеры без программиста». Это был огромной фичей, но её скоро не станет. Unity совсем недавно добавила аналогичную возможность, или вот-вот добавит.

В интернете часто можно встретить заявление «Юнити для мобилок, анрил для пк и консолей». Противоречивое утверждение, и может даже устаревшее. Unity в последнее время сделали довольно много для 2D-игр. Но и для улучшения картинки и производительности они сделали немало. Unreal же давно обзавелся 2D-инструментами, просто их редко используют.

О взаимодействии

Для работы с Unity надо знать две небольшие вещи: язык программирования C# и сам движок. С# нужен для создания скриптов. Иначе говоря, чтобы сделать что угодно — это нужно написать на С#.

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

Обратная сторона медали в том, что без программирования в Unreal можно сделать достаточно много, и не обязательно изучать весь комбайн. Скриптинг в Unreal делаются с помощью их визуального языка — Blueprints. Но На С++ можно писать и игровую логику, и расширения для движка.

В том же Fortnite к примеру 80% игровой логики написано на блюпринтах, и оставшиеся 20% на С++ . В Unity же 100% игровой логики пишется на C#. И из этого вытекает второе различие.

Инди-игра Firewatch тоже разработана на Unity. Здесь ставку разработчики делали на историю, в которую погружается игрок. Поэтому высокотехнологичную графику уместно заменила лоу-поли с тёплым светом

В индустрии часто случается так, что если команда разрабатывает на Unity, то с движком работают только программисты. Художники и геймдизайнеры предоставляют им контент и сами движок вообще не трогают. Иногда даже доходит до такого, что в отделе появляется «специалист по вставлению контента в движок».

С Unreal же работает вся команда — художники, которые сами вставляют в движок контент, и геймдизайнеры, которые сами пишут правила игры на блюпринтах. Так происходит не во всех студиях, но движок способствует такому подходу.

О возможностях

Поговорим о стандартной работе по найму — офис, полный день. Unity с этой позиции конечно более актуальный. Если открыть список объявлений, то соотношение вакансий на Unity и на Unreal будет примерно 8 к 1.

Обратная сторона медали — проекты. В них куда меньше романтики. Чаще всего это мобильные проекты, типа три в ряд или ферма-ферма. В работе на большую компанию всегда так: есть вещи, которые работают, а есть непроверенные, и неизвестно как они себя поведут.

Забавный факт: опытные разработчики игр на Unity могут перекочевать на роль Unreal-специалиста — и наоборот. Рынок в этом плане гибкий.

THE GODLIKE Alpha Version In-Game Footage

Вадим работал над сетевым кодом The Godlike. Под его руководством были еще два разработчика

Если говорить про стартап, когда ты сам собираешь команду энтузиастов и делаешь то, к чему лежит душа — то у Unreal Engine потолок возможностей выше.

Во-первых, есть гранты, о которых я упоминал. Если проект прям классный — Epic Games могут отсыпать денег и помочь с технической стороны.

Во-вторых, у Unreal есть свой магазин игр, Epic Game Store, в котором хорошие условия для разработчиков.

Ну и раз уж речь о деньгах, то Unreal просто берут 5% от выручки, если вы зарабатываете больше 3000$ за 3 месяца. Unity в этом плане условно-бесплатный. До 100000$ в год они ни просят ничего, но потом нужно платить минимум 480$ в год за каждого члена команды.

О старте

— Скажите, пожалуйста, куда мне отсюда идти?
— А куда ты хочешь попасть? — ответил Кот.
— Мне все равно… — сказала Алиса.
— Тогда все равно, куда и идти, — заметил Кот.

Иногда новичкам советуют сделать понг или змейку своим первым проектом. Тут дело не в жанре, тут дело в масштабе. Самое главное — закончить игру и выложить ее куда-нибудь, где в нее смогут играть люди. Ведь пока в игру не играют, игры как бы и нет.

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

Самая первая игра, в разработке которой принимал участие Вадим — Aerena. Отвечал за игровые микротранзакции. Тогда он был в австрийской команде Cliffhanger Productions, вместе с другими программистами из Беларуси, а игру делали для корейского рынка 🙂

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

Просто надо принять тот факт, что первая игра, а лучше первые три, это не про мечту и уж тем более не про деньги. Это пристрелка и притирка, и главная цель тут выпустить продукт.

О навыках

У разработчика игр на Unity 80% навыка — это навыки программиста. Еще 16% — геймдизайнера и оставшиеся 4% занимает художник. Я бы так распределил.

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

Навыки геймдизайна, а конкретно знания в области User Experience достаточно важны при разработке самой игры. Тогда она получится приятной и плавной. А ещё результатом труда программиста часто оказывается инструмент для других членов команды — он тоже должен быть простым в управлении и эффективным.

Ну и о программировании. Есть 4 направления:

  • алгоритмизация
  • структуры данных и алгоритмы (немного тавтология, но что поделать — так их назвали)
  • философия программирования SOLID
  • и конструирование программ.

Алгоритмизация — это про то, в каком порядке выполняются вещи. Это самое начало любого программирования. В целом, не сложная тема. Кроме стандартных вещей, в Unity к этому добавляются coroutines — сопрограммы, если на русский переводить.

Структуры данных и алгоритмы — это про накопленные человечеством знания в области программирования. Есть определенные проблемы, у которых давно есть методы решения.

SOLID ближе к теоретической науке. Что такое хорошо и что такое плохо, и почему одни вещи — это ок, а другие нет.

Конструирование программ — о том, как писать код, чтобы не выстрелить себе в ногу.

Кроме программирования есть еще и математика с информатикой. В играх нужно двигать вещи. Для этого используется векторная алгебра, матричная алгебра и линейная алгебра. Звучит страшно, но на самом деле все сводится к шести формулам.

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

Да-да, Вадим успел поработать и с дополненной реальностью

Кроме этого есть еще так называемые гибкие навыки, или soft skills. Тайм-менеджмент, английский язык, навыки общения. Это не специфичная только для программистов вещь, но достаточно важная.

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

Об обучении

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

В первом нужно научить людей основам. И мы обычно делаем что-то простое, например змейку или crimsonland. Во втором там уже совсем разные проекты могут быть — тут учитываем интересы учащихся. Это может быть RPG а-ля Diablo или стратегия в духе Героев.

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