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

7 March

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

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

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

О различиях

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

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

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

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

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

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

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

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

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

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

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

В плане обучения есть одно важное различие. Если начинать с Unity, то надо учить две небольшие вещи — язык программирования C# и сам движок, который похож на лего.

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

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

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

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

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

Забавный факт: разработчики с опытом отлично взаимозаменяются. Рынок в этом плане гибкий.

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

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

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

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

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

О старте

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

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

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

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

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

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

О навыках

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

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

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

А это Hydropunk. Игру в свободное время разрабатывают опытные геймдев-спецы из Беларуси — и Вадим среди них. На его плечах — боевая система
А это Hydropunk. Игру в свободное время разрабатывают опытные геймдев-спецы из Беларуси — и Вадим среди них. На его плечах — боевая система

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

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

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

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

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

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

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

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

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

Об обучении

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

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

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