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

О различиях
Разница между Unity и Unreal Engine 4 фундаментально огромная. И в техническом плане, и в лицензионном, и в финансовом, и в сообществе, но обо всём по порядку.
Анрил появился в 1998 году. В те времена еще не было даже понятия «движок». Ребята просто делали классную игру, которая должна была использовать самые современные возможности компьютерного железа. В этом плане их философия остается такой до сих пор — выжать максимум из железа.
Юнити в этом плане появился в 2005 году — чтобы делать игры на компьютерах от Apple и для компьютеров от Apple. И на волне смартфонов ребята быстро оседлали волну технологического прогресса под лозунгом «чем больше платформ, тем лучше».



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

Одно из важных отличий — система блюпринтов в анриле, мол «можно делать игру без программиста» и «можно делать шейдеры без программиста». Это был огромной фичей, но её скоро не станет. Unity совсем недавно добавила аналогичную возможность, или вот-вот добавит.
В интернете часто можно встретить заявление «Юнити для мобилок, анрил для пк и консолей». Противоречивое утверждение, и может даже устаревшее. Unity в последнее время сделали довольно много для 2D-игр. Но и для улучшения картинки и производительности они сделали немало. Unreal же давно обзавелся 2D-инструментами, просто их редко используют.
О взаимодействии
Для работы с Unity надо знать две небольшие вещи: язык программирования C# и сам движок. С# нужен для создания скриптов. Иначе говоря, чтобы сделать что угодно — это нужно написать на С#.
В Unreal надо взаимодействовать с одним большим — с самим движоком. Он похож на кухонный комбайн с тысячью функций. И выучить несколько маленьких вещей всегда проще, чем одну большую.
Обратная сторона медали в том, что без программирования в Unreal можно сделать достаточно много, и не обязательно изучать весь комбайн. Скриптинг в Unreal делаются с помощью их визуального языка — Blueprints. Но На С++ можно писать и игровую логику, и расширения для движка.
В том же Fortnite к примеру 80% игровой логики написано на блюпринтах, и оставшиеся 20% на С++ . В Unity же 100% игровой логики пишется на C#. И из этого вытекает второе различие.

В индустрии часто случается так, что если команда разрабатывает на Unity, то с движком работают только программисты. Художники и геймдизайнеры предоставляют им контент и сами движок вообще не трогают. Иногда даже доходит до такого, что в отделе появляется «специалист по вставлению контента в движок».
С Unreal же работает вся команда — художники, которые сами вставляют в движок контент, и геймдизайнеры, которые сами пишут правила игры на блюпринтах. Так происходит не во всех студиях, но движок способствует такому подходу.
О возможностях
Поговорим о стандартной работе по найму — офис, полный день. Unity с этой позиции конечно более актуальный. Если открыть список объявлений, то соотношение вакансий на Unity и на Unreal будет примерно 8 к 1.
Обратная сторона медали — проекты. В них куда меньше романтики. Чаще всего это мобильные проекты, типа три в ряд или ферма-ферма. В работе на большую компанию всегда так: есть вещи, которые работают, а есть непроверенные, и неизвестно как они себя поведут.
Забавный факт: опытные разработчики игр на Unity могут перекочевать на роль Unreal-специалиста — и наоборот. Рынок в этом плане гибкий.
Вадим работал над сетевым кодом The Godlike. Под его руководством были еще два разработчика
Если говорить про стартап, когда ты сам собираешь команду энтузиастов и делаешь то, к чему лежит душа — то у Unreal Engine потолок возможностей выше.
Во-первых, есть гранты, о которых я упоминал. Если проект прям классный — Epic Games могут отсыпать денег и помочь с технической стороны.
Во-вторых, у Unreal есть свой магазин игр, Epic Game Store, в котором хорошие условия для разработчиков.
Ну и раз уж речь о деньгах, то Unreal просто берут 5% от выручки, если вы зарабатываете больше 3000$ за 3 месяца. Unity в этом плане условно-бесплатный. До 100000$ в год они ни просят ничего, но потом нужно платить минимум 480$ в год за каждого члена команды.
О старте
— Скажите, пожалуйста, куда мне отсюда идти?
— А куда ты хочешь попасть? — ответил Кот.
— Мне все равно… — сказала Алиса.
— Тогда все равно, куда и идти, — заметил Кот.
Иногда новичкам советуют сделать понг или змейку своим первым проектом. Тут дело не в жанре, тут дело в масштабе. Самое главное — закончить игру и выложить ее куда-нибудь, где в нее смогут играть люди. Ведь пока в игру не играют, игры как бы и нет.
Разработка первой игры это время набивания шишек, а значит все календарные сроки можно умножать на пять. И еще на два, если это делается в свободное от работы время. Первая игра должна по этим подсчетам делаться за пару недель.

Второй важный нюанс — состав команды. Обычно в индустрии в среднем по больнице на 1 программиста — 3 художника, а на 1 геймдизайнера по 3 программиста. Но так бывает не всегда. Если программистов больше чем нужно, можно попробовать сделать головоломку или симулятор. Если художников в запасе — можно начать с тамагочи или файтинга.
Просто надо принять тот факт, что первая игра, а лучше первые три, это не про мечту и уж тем более не про деньги. Это пристрелка и притирка, и главная цель тут выпустить продукт.
О навыках
У разработчика игр на Unity 80% навыка — это навыки программиста. Еще 16% — геймдизайнера и оставшиеся 4% занимает художник. Я бы так распределил.
Навыки художника, о которых идёт речь — это базовое владение графическим редактором, в первую очередь. Теоретические знания тоже не помешают — теория цвета, композиция.
Навыки геймдизайна, а конкретно знания в области User Experience достаточно важны при разработке самой игры. Тогда она получится приятной и плавной. А ещё результатом труда программиста часто оказывается инструмент для других членов команды — он тоже должен быть простым в управлении и эффективным.
Ну и о программировании. Есть 4 направления:
- алгоритмизация
- структуры данных и алгоритмы (немного тавтология, но что поделать — так их назвали)
- философия программирования SOLID
- и конструирование программ.
Алгоритмизация — это про то, в каком порядке выполняются вещи. Это самое начало любого программирования. В целом, не сложная тема. Кроме стандартных вещей, в Unity к этому добавляются coroutines — сопрограммы, если на русский переводить.
Структуры данных и алгоритмы — это про накопленные человечеством знания в области программирования. Есть определенные проблемы, у которых давно есть методы решения.
SOLID ближе к теоретической науке. Что такое хорошо и что такое плохо, и почему одни вещи — это ок, а другие нет.
Конструирование программ — о том, как писать код, чтобы не выстрелить себе в ногу.
Кроме программирования есть еще и математика с информатикой. В играх нужно двигать вещи. Для этого используется векторная алгебра, матричная алгебра и линейная алгебра. Звучит страшно, но на самом деле все сводится к шести формулам.
Под информатикой я имею ввиду знание о компьютерных программах — про форматы файлов, про системы управления версиями и принципы работы сети, про архивацию и цифровую безопасность.

Кроме этого есть еще так называемые гибкие навыки, или soft skills. Тайм-менеджмент, английский язык, навыки общения. Это не специфичная только для программистов вещь, но достаточно важная.
В современном мире бывает банально дешевле для компании взять человека который что-то не умеет, но готов учиться и хорошо ладит с людьми, чем взять эксперта, который всех раздражает.
Об обучении
На курсе планируем делать совсем разные игры. Программа примерно одна, но у каждого преподавателя примеры разные. У нас есть два модуля — для самых начинающих, и для продолжающих.
В первом нужно научить людей основам. И мы обычно делаем что-то простое, например змейку или crimsonland. Во втором там уже совсем разные проекты могут быть — тут учитываем интересы учащихся. Это может быть RPG а-ля Diablo или стратегия в духе Героев.
Но нужно напомнить, что в курсе по разработке мы не учим людей рисовать или моделить. На выходе мы получим игру, скорее всего не самую красивую и блестящую, но это будет проект в портфолио. Который очень важен для того, чтобы устроиться на первую работу. На собеседовании, в первую очередь, смотрят на предыдущий опыт. Если устраиваетесь на работу впервые — просят пример вашего кода. А потом уже задают теоретические и другие вопросы.
Предыдущая статья

Набор на курсы по разработке игр на Unity и Unreal Engine 4
Следующая статья

3D-модели, сделанные нашими студентами для игры Barrenstorm