«Став Unity-разработчиком, обрёл стабильность»: как Муртаз из продаж перешёл в разработку
Муртаз не побоялся сменить профессию и после множества попыток устроился в игровую студию. Теперь он создаёт сразу несколько игр.
Иллюстрация: Sky Assault Squad / freepik / Unity / Colowgee для Skillbox Media
Муртаз Гоциридзе
Россия, Томск
Пройденные курсы
Достижения
Поучаствовал в GameBox, научился круто оптимизировать игры и устроился джуном в студию.
Муртаз рассказал:
- как недовольство игрой Warface подтолкнуло его заняться Unity-разработкой;
- в чём существенная разница между движками Unity и Unreal Engine (и есть ли она вообще);
- почему так важно настраивать мультипоточность;
- как работал над постапокалиптической игрой «Небесная эскадра» в рамках GameBox;
- какой пункт в резюме станет большим преимуществом для джуна.
— Муртаз, как изменилась твоя жизнь после смены профессии?
— Я стал спокойнее. Раньше работал продажником и жил в постоянном стрессе: выполненные задачи не всегда обеспечивали хорошую зарплату, чаще — лишь шанс на неё. Самая частая причина: клиент задерживал платёж и сделка переносилась в следующий отчётный период.
Став Unity-разработчиком, обрёл стабильность. Выполняю задачи — получаю заслуженные и фиксированные выплаты. Музыку в уши, покодил, закрыл ноутбук и пошёл по своим делам. Моя цель — создать качественный продукт, а сколько людей его купят — забота других специалистов.
«Более 10 лет работал в продажах, но выгорел»
— До разработки игр на Unity ты успел попробовать себя в разных профессиях. Расскажи о своём пути.
— Да, обучение всегда было моим главным хобби. Если сложить все дипломы, получится около шести штук: среди них и оператор ЭВМ, и радиомеханик, и даже массажист. Кстати, именно во время обучения на технические специальности я освоил языки программирования прошлого века — BASIC и Delphi — и понял логику написания кода.
Занимался даже отделкой стен декоративной штукатуркой и установкой жалюзи. Получал хорошие деньги… а ещё заработал три грыжи. Потому и пришлось с ремонтами завязать 🙂
Но всё же основой профессией на долгие годы (более 10 лет!) стали продажи. Я работал торговым представителем завода по производству пластмассы, а затем — бренда высококачественной спецодежды; супервайзером в крупном дистрибьюторе бытовой химии; бренд-менеджером завода по производству филаментных источников света и, наконец, продавал металл.
— Что было самым сложным в продажах, кроме нестабильной оплаты?
— Очень много общения с людьми — оно изматывает. Если раньше я воспринимал любые трудности как челлендж («Что значит не будешь брать у меня металл? Возьмёшь, да ещё как!»), то к концу карьеры выгорел дотла («Не хочешь брать металл? Ну не бери»).
Выгоревшего продажника можно списать в «утиль»: он не принесёт компании прибыль.
— Как считаешь: как опыт продаж поможет тебе в новой профессии?
— Уверен: я продвину любую идею игры. Выигрышно опишу концепт и перспективы. Единственная проблема: пока не знаю, где «тусуются» издатели и спонсоры. Те люди из сферы, кто, вкладываясь, понимает, что замораживает деньги на год-два и не факт, что однажды отобьёт их обратно.
«Материшь Warface? А ты попробуй создать что-то сам»
— Когда и как ты впервые столкнулся с Unity-разработкой?
— Я в принципе игрок, обожаю компьютерные игры. Одна из любимых — онлайн-шутер Warface. Там шикарно реализован gunplay (взаимодействие с пушкой): оружие точно стреляет, ощущается весомым и смачно звучит, но за общим техническим состоянием игры никто не следит — постоянно заливают баги и отдел тестирования их не отрабатывает.
Отсюда и любимая забава варфейсеров — устраивать на форуме ожесточённую дискуссию (проще говоря, срач) о забагованности игры. Я активно поддерживал недовольство, пока однажды, года три назад, другой участник форума не написал мне: «Ты постоянно материшь игру, а возьми и попробуй создать хоть что-то сам». Вот я и попробовал.
Игры, которые сам люблю и искренне советую: War Thunder, Wolfenstein, Doom. Они идеально оптимизированы и прорисованы — есть чему учиться.
— Интересный импульс! С чего начал погружение в профессию?
— Сперва прошёл интенсивы Skillbox по двум игровым движкам: Unity и Unreal Engine. Порог входа у первого оказался ниже: язык C# гораздо проще С++ — поэтому и выбрал дружелюбный Unity 🙂
— В чём существенная разница этих двух движков?
— Кроме языка, особой функциональной разницы нет. Выбор зависит от конкретной задачи. Unity в 99% случаев используют для разработки мобильных приложений (казуальные игры), Unreal — для проектов полного цикла (AAA).
Разработка мобильных игр на Unity — оптимальный и перспективный вариант для входа в профессию. Согласно аналитике, за 2022 год объём российского рынка мобильных игр превысил 1,2 миллиарда долларов.
При этом важно понимать, что каждый движок самодостаточен. Пока вы не стали сеньором в Unity, можно развиваться и развиваться. В том числе создавать масштабные игры для компьютера. Знаменитую Escape from Tarkov собрали именно на Unity. По такому пути я и хочу пойти.
Что такое мультипоток и почему он так важен
— А столкнулся ли ты уже с какими-то недостатками Unity?
— В Unity нет мультипотока: если его не настраивать вручную, оперативная память забьётся на раз-два.
— Пожалуйста, объясни простыми словами: что такое мультипоток и зачем с ним возиться?
— У любого ноутбука есть техническая характеристика: например, «4 ядра, 8 потоков». Потоки — это каналы связи, по которым процессор обменивается данными с другими системами.
Среди всех потоков всегда есть главный, а остальные просто идут рядом. При мультипоточности часть инструментов и действий автоматически перенаправляются в другие потоки, что позволяет ноутбуку выполнять больше работ одновременно. Вот у Unity мультипотока нет, и всё «кушает» главный. В него попадают и скрипты, и отрисовка, и эффекты — и он «раздувается».
— А тебе необходимо всё это вручную настраивать…
— Да. Чтобы оперативная память не забилась и не тормозила работу игры, я из главного потока достаю нужные данные, распределяю их по другим потокам и в конце вновь соединяю в главный (так надо, не спрашивайте почему 🙂).
— Неужели создатели не могут выпустить обновление Unity, где настроят мультипоточность?
— Всё не так просто. Если мультипоточность изначально не заложена в движке, её сложно добавить в последующих обновлениях. Советую всем обучиться ручному распределению потоков — пригодится для оптимизации игр и разовьёт внимательность.
Изучите библиотеки Job System и Thread. Показательный пример из моего опыта: одна и та же игра с 500 единицами контента показывала 40 FPS, когда всё находилось в одном потоке, и уже 300 FPS, когда при помощи библиотеки Job System я распределил единицы в разные потоки.
Параметр FPS — количество обработанных кадров в секунду. Чем параметр выше, тем лучше. Минимум, ниже которого стыдно опускаться, — 60 FPS.
«В рамках GameBox наша команда создала постапокалиптический симулятор полёта»
— Какие страхи испытывал перед началом обучения?
— Никаких. Я высшую математику в институте сдавал, не посещав лекции, — о каких страхах вообще речь 🙂 Нужно легче ко всему относиться — вот мой главный подход по жизни. Схожее наставление я дал себе и перед стартом курса: «Муртаз, просто развлекайся».
— И как далеко зашло развлечение?
— За восемь месяцев я окончил курс и ближе познакомился с профессией Unity-разработчика. Базово освоил язык C#, разобрался со структурой внутри него (что такое FixedUpdate, а что такое LateUpdate) научился использовать основные инструменты. Диплом получить не успел — курс обновили и добавили новые модули, до которых пока не добрался.
Конечно, параллельно обучался самостоятельно: подробнее изучал те инструменты, которых на курсе касались лишь вскользь. Например, как с помощью animation rigging контролировать скелетную анимацию. Именно эта настройка используется в шутерах, чтобы прицельно стрелять, или в файтинге, чтобы корректно визуализировать удар.
— Удалось найти единомышленников на курсе?
— Да. Комьюнити обрёл интересным образом: вместе со студентами других направлений прошёл в GameBox, где из нас сформировали команды и под руководством экспертов дали проект на разработку.
Моя группа создавала игру для ПК «Небесная эскадра». Сейчас проект в заморозке, но мы с ребятами часто переписываемся в Discord, обмениваемся идеями.
— Ого! Пожалуйста, расскажи об игре побольше. В чём её основная идея?
— «Небесная эскадра» — симулятор полёта не боевых кораблях в мире экологического постапокалипсиса. Игра совмещает в себе два жанра: top-down-шутер (вид сверху) и tower defence (расправа с постоянно наступающими врагами).
С помощью клавиатуры и мыши играющий управляет кораблём-разведчиком. Задача: осматривать окрестности, перевозить контейнеры с полезными материалами, сражаться с автономными машинами и умело пилотировать.
Itch.io — крупнейший сайт для самостоятельного размещения, продажи и скачивания игр. Помимо нашей «Небесной эскадры» там можно найти десятки интересных проектов.
— За что ты отвечал при создании игры?
— Я создавал и настраивал погодные эффекты: торнадо, молнии, грозы, движение облаков, смену дня и ночи. Также на старте занимался оптимизацией игры. Исключительно для себя: без неё мой слабый комп ничего не запускал 🙂
«Батчинг творит чудеса»: как оптимизировать игру в пару кликов
— Ты несколько раз упоминал про магию оптимизации. Поделись, какой инструмент особенно тебя выручает?
— Батчинг! Ему можно обучиться за час, но это однозначный мастхэв. Он позволяет оптимизировать игру, не касаясь ни кода, ни визуала — достаточно правильно выставить настройки.
— Как работает батчинг?
— Каждый объект в игре необходимо отрисовать. Возьмём, к примеру, дерево. Когда батчинг отключён — программа ежесекундно собирает его из десятка элементов заново. Это сильно съедает мощности. Настроив батчинг, мы обозначаем, что объект не меняется, — компьютер запоминает это и просто клонирует дерево из кадра в кадр.
— А можешь привести пример из своего опыта?
— Конечно. Сейчас в свободное время я развлекаюсь над личным проектом — создаю top-down-шутер, где в закрытой комнате герой должен отстреливаться от сотни монстров.
Благодаря батчингу (когда противники умирают, их тела дублируются) и использованию мультипотока (перевёл отрисовку 200 летающих по экрану пуль из главного канала в другой) я повысил FPS игры в три раза — с 30 до 100!
— Круто! А какие ещё полезные инструменты бывают?
— Параллельно изучаю рирпроекцию — это приём пришёл в разработку из игр 1990-х, а те, в свою очередь, позаимствовали его из фильмов 1970-х. Инструмент позволяет искусно обмануть смотрящего: отобразить плоские элементы как трёхмерные.
«Джунов практически не ищут»: о ситуации на рынке и работе
— Как скоро после окончания курса ты нашёл работу?
— Мой путь до трудоустройства оказался тернист и занял около полутора лет. Пробовал подходами: уволюсь с одной работы продажником — откликаюсь на вакансии Unity-разработчика — нигде не берут, деньги заканчиваются — возвращаюсь к работе в торговле. И так несколько раз.
В свободное от основной работы время улучшал свой код, изучал оптимизацию, документацию DOTween и другие полезные инструменты. Несколько месяцев назад наконец добился своего — устроился в студию. Компания только открылась, разрабатываем первый проект, поделиться деталями не могу — конфиденциально.
— А как в целом сейчас обстоит ситуация на рынке Unity-вакансий?
— Для джунов всё скверно — нас практически не ищут. Ни в Томске, ни во всей России. А вот вакансий для мидлов предостаточно. Таким же начинающим, как и я, советую откликаться на всё подряд, пробовать вновь и вновь. Просто быть готовыми, что 99 заявок из 100 отклонят.
В нынешнюю компанию, например, я попал по счастливой случайности. Как узнал потом — руководитель взял меня от безысходности: ему срочно требовался человек, готовый работать исключительно из томского офиса без возможности удалённой работы. Единственным таким человеком оказался я. Правда, уже на второй день я смог всех удивить…
— Расскажи! Как же ты удивил коллег на новом месте?
— Я оптимизировал разрабатываемую игру и поднял её FPS в два раза. Помню, руководитель подошёл ко мне с изумлённым лицом:
— Муртаз, а почему ты на собеседовании не сказал, что умеешь так хорошо оптимизировать игры?
— А я и не знал, что умею 🙂
Оказалось, что навык оптимизации очень ценится работодателями. Он может стать сильным конкурентным преимуществом в вашем резюме.
— Сейчас ты работаешь джуном. Что необходимо улучшить, чтобы дорасти до мидла?
— Мне нужна практика кода в целом и чистого кода в частности. Для этого я изучаю и внедряю code style — набор правил по оформлению кода, позволяющий визуально его унифицировать. Например, все приватные переменные — начинать с нижнего подчёркивания, публичные — без подчёркивания и так далее. Такой подход облегчит восприятие вашего кода для других членов команды.
— А какие ещё профессиональные цели ставишь перед собой?
— Хочу, чтобы наша с друзьями мобильная игра «Викинги» увидела свет. За месяц мы собрали MVP и теперь ждём мнения потенциального покупателя. Если дадут добро, следующая цель — добиться показателя в 100 FPS. Это позволит игре запуститься даже на очень дешёвом телефоне и увеличит целевую аудиторию продукта.