По ту сторону кода: чем занимаются Unity-разработчики
Мы в Azur Games не только издаем проекты партнеров, но и разрабатываем собственные мобильные игры. В нашем портфолио — десятки тайтлов в разных жанрах: от гиперкэжуала до мидкора. Поговорили с теми, из под чьих рук рождается код. Три истории Unity-разработчиков о пути в геймдеве, треках развития и любимых задачах. Бонус: советы начинающим юнитистам.
Заклинатель Unity в отделе ГК
Владимир Кузьмин, Unity Developer
— Как ты попал в геймдев? Расскажи про свой карьерный путь.
Как и многие, с самого детства хотел работать в геймдеве, но тогда эта идея казалась недостижимой мечтой. Я жил в маленьком городе, где после универа попал джуном в местную продвинутую IT-компанию: интернет-провайдера. Там занимался разработкой простых нативных приложений под iOS. Это был отличный старт для программиста, и мне все нравилось. Не исключено, что я до сих пор трудился бы в родных местах, если бы через полтора года работы один товарищ не показал интересный движок — это оказался Unity. Я вдохновился его возможностями и стал делать на нем свою первую игру под ПК.
Первый блин, как положено, оказался комом — игра так и не была доведена до финиша. Зато я понял, что обрел новые скиллы и хочу их развивать. В итоге нашел первую работу с Unity — в отделе, где поддерживал старые игры и внедрял различные SDK. А потом случился Азур, здесь я почти три года. Так что, мечта сбылась.
— Почему Unity?
Это гибкий инструмент с большим комьюнити: почти любая проблема решается гуглом и сканированием форумов. Плюс, по сравнению с движками попроще, язык более прогрессивный — на C# можно сделать все, что душе угодно.
— Чем ты занимаешься?
Работаю в отделе гиперкэжуал. Изначально пришел сюда заниматься развитием и поддержкой старых игр, например, популярных кликеров вроде Homo Evolution и Zoopolis. Сейчас вместе с коллегами создаем новые игры, причем пробуем себя не только в ГК. Берем в работу также кэжуал и гибридные проекты. Например, в разработке есть игра, где мы нацелились на более хардкорную аудиторию. Там я написал один полезный инструмент — геймдизайнер может настраивать поведение босса почти без моего участия.
Еще мне довелось одним из первых в Азуре поработать с нашими коллегами из китайского офиса. С ними мы разработали простые пути, как помогать другим студиям портировать игры в Китай, и сделали для этого специальную SDK-шку под Unity. Кстати, здесь очень пригодился мой бэкграунд нативного разработчика. Китайский рынок пока еще не настолько гибок, чтобы предоставлять готовый Unity-плагин на любую потребность, так что приходилось писать небольшие нативные плагины самому.
— В чем особенность работы Unity-разработчика в ГК?
Жанр гиперкэжуал интересен тем, что обычно это игра с одним кор-геймплеем, который нужно идеально отточить, а затем почти сразу перейти к следующей игре. Проектов много, они все разные, надо уметь быстро перестраиваться. То есть, задачи здесь короткие, но интересные.
Unity Developer в ГК — не только кодер. Я должен уметь и анимации настраивать, и переходы, и UI, и внешний вид. Особенность жанра в том, что ты занимаешься проектом один. Все полностью под твоим контролем, но и ответственность тоже твоя. Конечно, есть вещи, которые многим кажутся рутинными, например, делать шаблоны или возиться с SDK. Но я как раз люблю эту часть работы, она меня совсем не напрягает.
И еще: в гиперкэжуал, как программист, ты постоянно делаешь те вещи, которые суммарно могут стать крупной игрой. Кажется, что ты занимаешься простым кликером, но на самом деле это может быть часть RPG-системы. Поэтому если человек горит делать игры — не надо бояться идти в ГК.
— Что самое крутое в твоей работе? А что самое неприятное?
Коллектив — это очень важно, и я считаю, что мне повезло. Одна из причин, почему я здесь так долго — мне очень нравится команда.
Еще из крутого — свобода действий. У нас вся работа устроена таким образом, что тебе дают задачу и почти не пинают в процессе. При этом, приветствуется открытый обмен мнениями. Если, например, ставят общую задачу и я вижу, что что-то не сработает, то сразу говорю об этом и предлагаю свои варианты.
Из минусов могу, наверное, назвать недостаток профессионального общения. Не общения с коллегами по отделу — здесь как раз все отлично, а работы внутри проекта плечом к плечу с другими программистами, когда есть «одна боль на всех». Но это оборотная сторона работы в ГК, где Unity-разработчик — одинокий волк по сути.
— Какие есть треки развития у ГК-разработчика?
Их несколько. Первый — личное развитие, и я сейчас на этом пути. Когда делаешь множество разных проектов, растет насмотренность. Если ты на одном проекте написал код «с душком», в следующем проекте у тебя есть шанс это исправить. Такое постепенное развитие.
Второй путь: двигаться в лиды. Здесь важно адекватно себя оценивать, чтобы из хорошего программиста не превратиться в плохого менеджера. Лид должен брать ответственность за других, видеть картину проекта целиком, уметь ставить задачи. Но если чувствуешь силы и желание, это интересный трек.
Третий путь: ГК — это неплохой старт, чтобы перейти в другие жанры геймдева, например, в кэжуал или мидкор. Примерно такое сейчас происходит у меня в отделе. Мы пробуем чуть более сложные проекты и растем в эту сторону.
Еще неочевидный вариант роста в ГК: программист, при желании, может стать геймдизайнером или даже продюсером. Это вполне реально, особенно если перейти под чье-то менторство.
Мидкор-Лид-Девушка — ничего лишнего
Наталья Леонтьева, Lead Unity Developer
— Как ты попала в геймдев? Расскажи про свой карьерный путь.
Я закончила математический факультет. Во время учебы стажировалась, а по окончании – некоторое время работала разработчиком кроссплатформенных Android/iOS мобильных приложений. Тогда же познакомилась с C#, до этого работала только на Java.
Через год перешла программистом в другую компанию, где и встретилась с Unity. Это была любовь с первого взгляда. Я поняла, что дальше хочу заниматься именно играми. Нашла работу Junior Unity Developer в одном веселом стартапе, где мы занимались разработкой ММОRPG с геолокацией. А потом попала в Азур на миддловую позицию Unity-разработчика. Через год мне предложили стать тимлидом, на этой позиции я уже больше двух лет.
— Почему Unity?
В геймдеве обычно стоит выбор между Unity и Unreal Engine. Unreal Engine больше используется для разработки ПК-проектов, а мобильные игры в основном пишутся на Unity. Поскольку в предыдущем опыте я использовала C# для кроссплатформенной разработки, мне было очень легко перейти на Unity. Вообще, это очень простой движок с низким порогом входа. Можно сделать свою игру и сразу пощупать ее на телефоне, что для меня было очень важно.
— Расскажи поподробнее, чем ты сейчас занимаешься?
Я тимлид в команде Game Object. Мы занимаемся разработкой мидкорных проектов с мультиплеером — мультипользовательских PvP-игр. Моя команда разрабатывала King of Sails и Trooper Shooter.
Как тимлид, я отвечаю за сбалансированное распределение задач между программистами, адекватные сроки исполнения и решение текущих проблем. Еще на мне подготовка релиза. Когда у нас готовы все фичи, я делаю отдельную ветку релиза и смотрю за тем, чтобы там все было хорошо. Чекаю вес билда, слежу за крашрейтом и ошибками, которые сыплются в метрику. В целом, держу на контроле рабочее состояние проекта.
Кроме того, я являюсь связующим звеном между проджект-менеджерами и другими командами, например, девопсами. Ну и, конечно, занимаюсь точно такими же задачами, как и наши программисты. То есть, менеджерская и программистская функции соотносятся как 30/70. Мне нравится программистская часть работы, и я не хочу от нее отказываться.
— В чем особенность разработки мидкорных проектов под мобильные устройства?
Во-первых, это сетевая часть для многопользовательской игры. Здесь нужно понимать, как работать с сетью, чтобы игра была отзывчивой и быстро отображала изменения в игровом мире, на который влияют другие игроки. При этом нужно еще бороться с читерами. В нашей команде программисты пишут не только клиентскую часть, но и сетевую. И мне кажется это очень удобно. Потому что ты полностью отвечаешь за фичу.
Во-вторых, это мета часть. В мидкорных играх очень много времени уделяется не только основному геймплею, но и мета части игры. Это разнообразная прокачка, сундуки, офферы. В поддержке мета части есть свои нюансы: например, нужно волноваться о том, чтобы в профиле все сохранялось и из версии к версии игрок ничего не терял. Если ты изменяешь какую-то большую часть игры — убедись, что игра не зависнет и не упадет с ошибкой, когда пользователь ее обновит.
— Самое приятное и самое неприятное в твоей работе?
Самое приятное — это завершить сложный таск. Самое неприятное — это пытаться не выгореть на этом сложном таске.
Я часто слышу от программистов: «Когда я получил таск, то прям загорелся, но в какой-то момент стало дико тяжело». Особенно это касается задач R&D (Research & Development), где не существует определенного результата. Тебе нужно просто что-то попробовать, пощупать, причем сделать это довольно быстро. Например, тестировать камеру: как она летает, как она чувствуется игроком, постоянно это изменять, чтобы улучшить филинг игры. Ты не знаешь, когда этот таск закончится, и должен постоянно общаться с feature owner, чтобы понять, что он от тебя хочет. Такая неопределенность может напрягать, давить. В этот момент очень важно общаться с командой, делиться ситуацией, пытаться вместе находить решения.
— Были ли какие-то сложности на твоем пути? Ведь девушка-лид в геймдеве — явление не частое.
Я знаю, что по статистике около 70% сотрудников геймдева — это парни. Но лично у меня никаких сложностей не возникало. Если не считать смешного случая на самой первой работе, когда были сомнения, брать ли меня — из опасения, что я уйду в декрет. Но взяли же в результате.
В Азуре вообще ничего такого нет. У нас супер экологичная обстановка, я совершенно свободно себя чувствую, мне комфортно с ребятами. Вообще, с командой сильно повезло. Мы очень хорошо взаимодействуем, общаемся, вместе развиваемся. Со мной советуются, ко мне прислушиваются. Возможно, потому, что мне самой никогда не приходило в голову решать вопросы из позиции «ну я же девочка». В целом, если твой профессионализм не убеждает людей, значит, это не те люди, с которыми тебе стоит работать.
— Как думаешь, какие вообще качества нужны, чтобы стать лидом?
Лид — это не тот, кто умнее других, а тот, у кого есть видение проекта. Для этого нужно обладать обширным опытом, чтобы понимать весь цикл разработки и его этапы. Лид отвечает за целостность проекта и поддержку выстроенной архитектуры внутри него. Такой специалист должен видеть сильные стороны каждого члена команды и грамотно их использовать.
Важно быть открытым, прислушиваться к людям, быть готовым помочь. И при этом держать руку на пульсе проекта в целом — это твоя ответственность. Нельзя спускать все на тормозах, но и нельзя стоять над душой, следить за каждым шагом. Над джуном, правда, придется немного посидеть вначале, но важно дать ему пространство для развития, возможность предлагать свои идеи.
Есть два пути в лиды. Первый — вырасти в тимлида в рамках одной компании. Тогда ты уже изначально почувствовал команду и понимаешь, на кого и в чем можно рассчитывать. Со мной так и произошло. Второй — прийти тимлидом на новое место, в новую команду. Это, конечно, сложнее. Но если ты лидер по природе и готов вести людей за собой — ничего невозможного нет.
На стыке тимлида и техлида
Игорь Панченко, Lead Unity Developer
— Как ты попал в геймдев? Расскажи про свой карьерный путь.
В геймдеве я уже больше 10 лет: я сюда специально стремился. Правда, попал не сразу. Отучился на инженера, работал в компании, не имеющей никакого отношения к играм. Но в какой-то момент понял, что больше не могу — мне интересен только геймдев. Тогда нашел вакансию разработчика в маленькой игровой конторе, делавшей проекты под ПК. Денег там не было, зато я оказался в любимом деле. Так начался «светлый путь»: я поменял несколько компаний, работал на четырех больших коммерчески успешных мидкорных проектах. И через несколько итераций попал в Азур, где переключился на казуалки.
— Почему Unity?
Мне нравится низкий порог входа. Чтобы начать что-то делать на юнити, достаточно посмотреть одно видео на ютубе. Развитый инструментарий к движку, большое коммьюнити, ассет-стор. Почти на любую задачу можно найти готовое решение. И еще, конечно, поддержка большого количества платформ.
— Чем ты занимаешься в Azur Games? Над какими проектами работаешь?
В Азуре я 4 года. Стал лидом год назад. Сейчас в моей команде 10 программистов, а в работе — три проекта: гиперказуальный, казуальный и NFT. Так что, есть объемный фронт работ с разными командами, в разных жанрах, и это классно.
Менеджерская часть моих обязанностей: набирать новых людей, оценивать текущих, следить за их зарплатами, больничными и другими повседневными процессами.
В то же время я погружен в код, на каких-то проектах руковожу разработкой в качестве PM, участвую в общих азуровских continuous integration. То есть, фактически совмещаю деятельность Tech Lead и Team Lead.
— Что самое крутое и, наоборот, самое неприятное в твоей работе?
Есть такой стереотип: вроде как на мидкоре программисту круто работать, а на казуалках — так себе. По-моему, это ерунда. Мне нравится моя работа сейчас. Я рад, что это кэжуал, а не мидкор, потому что могу одновременно работать на трех проектах и сделать в три раза больше.
В ГК все делается быстро: нет долгих мидкорных релизов, A/B-тесты дают мгновенный результат, расстояние от идеи до воплощения минимальное. Все очень технично организовано — это позволяет и мне, и всей команде посвящать время своему развитию. После релиза появляется окно для рефакторинга, возможность сделать какую-то классную техническую штуку. На мидкоре сложно выделить на это время, а на казуалках оно по умолчанию остается, и это позволяет развиваться быстрее.
Неприятного нет, есть пока не доведенное до желаемого результата. Например, разница в организации внутри проектных команд. Когда команда хорошо организована, то разработка идет относительно размеренно, без стрессовых ситуаций. Можно пробовать новые подходы, решать интересные технические задачи. Джуны быстро вливаются в такую команду и быстро набирают опыт. Мы хотим сделать так, чтобы любая наша команда, независимо от проекта и количества задействованных сотрудников, была «командой мечты». И последовательно движемся в этом направлении.
— Как ты считаешь, кому лучше идти в лиды?
Если мы говорим про ГК, то тут есть своя специфика: быстрые итерации, много интерактива и общения с командой. Работа лида — на 80% коммуникация, и если ты это любишь, у тебя лучше получится. Кому это дается нелегко, будет потяжелее. Бывают неприятные моменты, надо задавать людям неприятные вопросы, спрашивать с них — это тоже надо уметь. К счастью, всему можно научиться. Но если ты уж совсем интроверт, то, наверное, лучше выбрать чисто техническое направление.
Блиц: советы начинающим Unity-разработчикам
Как попасть в геймдев?
- Любить игры и хотеть работать именно здесь.
- Разбираться с движком. Изучить C#, хотя бы по краткому руководству. Смотреть бесплатные гайды на YouTube.
- Пытаться делать свои проекты. Пробовать-пробовать-пробовать.
- Ходить на собеседования. Делать тестовые задания. Получать фидбэк и выкладывать проекты на GitHub.
- Влиться в коммьюнити. Стараться помогать другим. Участвовать в геймджемах и хакатонах.
- Активно искать стажировку и менторство.
Что должен уметь Unity-разработчик?
Hard skills
- Хорошо знать возможности движка и C#.
- Знать, как быстро найти нужную информацию.
- Владеть английским на уровне чтения профессиональных форумов и документации.
- Не пугаться понятий: 3D математика, объектно-ориентированное программирование (ООП), ECS.
- Уметь работать с Git.
- Изучить основы оптимизации в Unity.
- Уметь читать чужой код.
Soft skills
- Быть проактивным. Постоянно развиваться в выбранном направлении.
- Не сторониться людей, быть открытым к взаимодействию в команде.
- Не бояться самому задавать вопросы и отвечать на вопросы коллег.