Андрей Романенко сменил специальность с сервис-инженера на разработчика игр, нашёл работу в новой компании и теперь рассказывает о том, как ему всё это удалось.
Всем привет. Меня зовут Андрей Романенко, живу и работаю я в Ростове-на-Дону. По образованию — программист, но так получилось, что в течение нескольких лет был сервис-инженером.
Про обязанности сервис-инженера подробно рассказывать, наверное, не стоит: многие и так знают, чем занимаются сервисники. В первую очередь это ремонт, обслуживание и настройка вычислительной техники в компании. Если коротко, я следил, чтобы всё работало как надо.
Изначально идеи поменять работу не было, просто знакомый стал учиться в GeekUniversity, рассказал об этом мне, и я решил тоже попробовать. Хотелось освежить знания.
Почему выбрал GameDev
В геймдеве ты видишь результаты своего труда. Если игровая компания небольшая, то гарантированно оценишь совокупный результат работы — как своей, так и коллег.
В неигровой разработке, особенно в корпоративном секторе, даже на добавление незначительных функций порой уходят месяцы. Нередки случаи, когда уже готовую фичу внедряют через год, причём разработчик может даже не узнать, куда именно её добавили.
В геймдеве всё иначе: здесь ты не колёсико в огромном корпоративном механизме, а полноценный член команды. Каждый вправе предлагать идеи и принимать активное участие в развитии проекта.
Что нужно знать разработчику игр
Если цель — создавать игры вроде Minecraft или мобильные игры под Android, то нужно знать Java. Тем разработчикам, кто выбрал платформу iOS, требуется Objective-C. С браузерными играми немного проще, здесь во многих случаях достаточно Ruby on rails и, конечно, HTML.
Для разработки Flash-игр нужно знать ActionScript, а чтобы создавать скрипты, пригодится JavaScript и в некоторых случаях Lua. С консольными играми несколько сложнее — здесь требуется C#.
Если в планах разработка игр в крупных компаниях класса ААА, нужно знать и С++. Многие движки игр, включая Doom 3, Call Of Duty, FIFA и The Sims, написаны на этом языке.
Ну и плюсом к языкам — математика. Мне пригодилось знание той самой линейной алгебры, которая, как считают многие школьники, никогда не найдёт применения в реальной жизни. А вот и нет — найдёт, и ещё как. Могу порекомендовать статью «Линейная алгебра для разработчиков игр», которая раскрывает многие важные нюансы математики для игростроя.
Обязателен технический английский. Читать документацию и форумы нужно именно на нём, поскольку информации на международных ресурсах гораздо больше, чем на русскоязычных или любых других.
Нашёл работу ещё во время учёбы
Хорошим стартом для меня стал факультет разработки игр от GeekUniversity. Мотивировали домашние задания, новые знания и, конечно, заплаченные за курсы деньги. Ещё не завершив обучение, я устроился в компанию Full HP Ltd. Здесь я работаю с июля 2019 года. Собеседование, кстати, было несложным, и мне удалось неплохо выполнить тестовое задание. Я использовал DI-контейнер Zenject, а также ScriptableObject для всего, что можно настроить (это префабы, скорость, очки, звуки и т. д.).
В компании мне нравилась тёплая атмосфера — она реально такая. А ещё постоянное взаимодействие со всеми членами команды. Офис в центре города, большой и комфортный. У разработчиков всегда есть доступ к важнейшему ресурсу: кофе и печенькам. Работал на проектах Fury Wars, Blocky Cars. Мои обязанности были: адаптирование билда под iOS (то еще развлечение), под магазин POKI (WebGL), рефакторинг, разработка новых фич и т.д. Игры есть в каталогах Google Play, iOS, POKI, Amazon.
В октябре 2020 я устроился в Gaming Sense LLC — дочернюю студию Mail.ru Group (MY.GAMES) на должность Middle Unity Developer. Разница, конечно, — небо и земля. Задачи и стек технологий стали сильно интереснее и сложнее, но и зарплата приличная.
Вырос до мидл-разработчика за четыре месяца
Изначально я устроился джуниором. Но всего за четыре месяца удалось добраться до позиции мидла. Так что увеличился и доход: сейчас получаю примерно в два раза больше, чем на старте. В новой компании доход повысился ещё в два раза. Так что всё реально, нужно только стараться и делать то, что тебе нравится, вкладываясь в это.
В будущем планирую перебраться в Европу или США, где разработчикам с тем же опытом и знаниями платят гораздо больше. Ростов-на-Дону, конечно, хороший город, но для IT он подходит не на 100%. Здесь не так много геймдев-компаний, так что выбор маленький. Поэтому и перебрался в московскую компанию, для дальнейшего карьерного роста.
Развитие нон-стоп
Я продолжаю учиться даже сейчас, получаю новые знания и опыт. В IT, если не развиваться, вообще никому не будешь нужен, поскольку знания очень быстро устаревают.
Первое время хватает того, что узнаёшь на работе, решая текущие задачи и обмениваясь опытом с коллегами. Но спустя время наступает стагнация — когда для ежедневной работы нужны только те знания и опыт, которые уже есть. Новое как бы уже и не требуется. И вот здесь кроется опасность: можно облениться, перестать учиться и потерять квалификацию.
Чтобы обучаться, нужно либо постоянно расти в плане карьеры, отвечая самосовершенствованием на новые вызовы, либо вести pet-проекты, получая информацию на Хабре, DTF, Stack Overflow.
Полезные материалы о геймдеве
- Мне очень помог канал на YouTube — Brackeys (на английском). У авторов очень интересная подача. Правда, там показывают написание кода в упрощённом виде. Так что, разбирая уроки Brackeys, стоит сверяться с кодстайлом, принятым в команде. Также необходимо применять good practices. Например, при использовании GetComponent нужно помечать класс соответствующим атрибутом RequireComponent, избегать Find, Magic numbers, литералов. Вместо этого рекомендуются константы.
- Jason Weimann — ещё один канал на английском языке. Авторы показывают, как делать стоит, а как нет.
- Game Dev Guide — очень приятная подача информации, много интересных решений.
- Emerald powder — канал на русском языке, похож на тот, что строчкой выше.
- Что касается книг, то мне очень пригодился «Совершенный код» С. Макконнелла — это книга о практиках программирования. Также была полезной «Чистый код. Создание, анализ и рефакторинг» Мартина Роберта, а ещё «CLR via C#» Джеффри Рихтера — своеобразная библия C#.
Чему научат на факультете разработки игр, а также о лучших Unity Assets можно узнать из интервью с деканом GeekUniversity Ильёй Афанасьевым.