С продуктом геймдева — видеоиграми — в наше время знакомы все, но мало кто достаточно осведомлен о процессе их разработки. А ведь эта IТ-отрасль имеет свои особенности, характеристики и свойства, особенно с точки зрения программиста. Создавать игры — детская мечта доброй половины девелоперов, а также студентов инженерных специальностей. Возможно, именно поэтому о данной индустрии всегда большое количество вопросов, предположений и даже мифов.
Правда ли, что жизнь гейм-разработчика похожа на игру, но попасть в геймдев-компанию очень сложно, знания и навыки требуются нереальные, а компенсации в отрасли до неприличия малы? Только недавно на форуме ДОУ мелькнуло мнение, что «в геймдеве работают высококвалифицированные программисты, но получают зарплату середнячков из аутсорсинга».
Обобщенный взгляд на геймдев извне выглядит следующим образом:
«Поработав год с небольшим рядовым PHP разработчиком, я начал испытывать скуку. Все проекты в целом похожи друг на друга, в них нет идеи, нет вызова. Редко когда приходится придумывать свои решения. Геймдев же привлекает не столько в финансовом плане, сколько возможностью проявить больше креатива. Я думаю, в разработке игр куда легче найти что-то, совмещающее в себе и творческую, и техническую стороны».
Александр, студент-девелопер.
Чтобы разобраться в специфике игровой разработки, мы пообщались с людьми, непосредственно связанными с этой областью. Александр Савчуков (СТО компании Nival Red), Олесь Шишковцов (СТО компании 4A Games), Максим Грынив (независимый разработчик игр, создатель головоломки Contre Jour), Эдуард Лобас (HR-менеджер компании iLogos), а также гейм-девелоперы Александр и Андрей рассказали нам:
Об особенностях индустрии
Александр Савчуков:Геймдев подразумевает, что работник хоть как-то интересуется играми как таковыми. Я лично считаю, что если человек не интересуется или просто равнодушен к играм, то делать ему в этой индустрии нечего (по крайней мере, я бы не стал брать такого сотрудника в команду). Что касается зарплат, то в геймдеве работают разные специалисты и зарплаты соответственно у них разные.
Олесь Шишковцов:Основная особенность — в том, что мы всё время находимся в состоянии поиска новых решений: как правило, не существует решений, готовых и проверенных заранее кем-то другим. Мы балансируем на острие исследований в огромном количестве областей, начиная от АИ, анимаций, моушен планнинга, физики, графики, геймплея и даже тулсета. Соответственно, нам никогда не скучно.
Но надо иметь в виду, что мы — сравнительно большая компания, занимающаяся только ААА играми, т. е. всё, что я пишу, относится только к данному направлению. В компаниях, которые занимаются мелкими мобильными или, например, социальными играми, всё может быть совсем иначе. У нас работают высококвалифицированные программисты, и получают они значительно выше среднего по рынку.
Максим Грынив:Все, что напишу ниже, верно только для небольших команд, которые стараются делать сложные проекты. Первая особенность — сложность задач. Я знаю, что большинство аутсорсеров просто в это не поверят, мол «у нас тоже бывают крутые проекты». Но я 5 лет отпахал в аутсорсинге, из них 4 на позициях архитекта/тим лида, в разных городах и командах, и знаю, о чем говорю: задачи на порядки сложнее. Именно не «своя специфика», которую можно освоить, а фундаментальная сложность.
Вторая особенность (для команд типа моей) — отсутствие специализации: ты пишешь нетворкинг, графику, AI, параллельно дописываешь свой движок, используя несколько языков, парочку IDE, постоянно переключаешься с уровня работы напрямую с железом на уровень высоких абстракций, всё это под постоянным давлением ограничений производительности, памяти.
Эдуард Лобас:Геймдев — специфическая область. Существует заблуждение, что в геймдеве обычно менее опытные программисты, чем в энтерпрайзе. Это не так. Программисты должны быть одинаково хорошими для обеих этих сфер — ведь работа их от специфики меняется не сильно: алгоритмы, расчёты, структура, оптимизация. Что касается особенностей: чаще в геймдев-компаниях атмосфера лучше, меньше бюрократии и отлично налажена связь с руководством. Я работал и в энетерпрайзе, и в геймдеве. Мне кажется, что в игровых компаниях люди более счастливые.
Зарплаты же в геймдеве зависят исключительно от компании, а не от области как таковой. Чем круче сама компания и чем более прибыльны её проекты, тем выше и зарплаты программистов.
Александр:Геймдев — это очень интересная сфера работы для тех, кому интересно разнообразие, когда есть возможность проявить себя с творческой точки зрения, привнести в игру какие-то идеи, которые будут радовать тысячи людей. Процесс разработки не выглядит однообразным, как в случае, когда разрабатывается приложение или целый пакет программных продуктов.
Андрей:Если нравятся игры и программирование, то в геймдеве каждый рабочий день будет в радость!
О преимуществах и недостатках работы в геймдеве
Александр Савчуков:Преимуществ много, но каждый находит свои. Одним из таких критериев является то, что вы можете «играть» в работе — разрабатывая игру, вы так или иначе в нее играете. Более того, вы сами меняете и творите этот мир, чего не сделаешь в игре, которую создали другие люди. На мой взгляд, творчество — это очень важный и неотъемлемый аспект мотивации для любого программиста.
Кроме того, в геймдеве вы решаете совсем другие задачи — более приближенные к реальному осязаемому миру, если можно так выразиться. К примеру, вы программируете логику стрельбы какого-то оружия или способ перемещения врага в игре, или же — как резонанс — вы программируете логику вычисления бухгалтерского учета в какой-то офисной программе. Я думаю, есть разница, но каждому своё.
Главный недостаток (и в то же время преимущество) геймдева — большая динамичность и нестабильность индустрии. Рынок меняется очень быстро, поэтому практически невозможно запланировать весь проект от начала до конца. В этой индустрии тяжело работать людям, которые любят стабильность, предсказуемость и упорядоченность. Сотрудник должен быть готов к хаосу и уметь под него адаптироваться в максимально сжатые сроки. Также всегда нужно держать руку на пульсе, двигаться в ногу с технологиями, повышать и расширять свой портфель навыков, чтобы быть востребованным на рынке и не оказаться «за бортом». Но это всё добавляет интереса и азарта!
Олесь Шишковцов:Кроме относительно свободного графика работы, у нас всегда есть чем заняться, т. е. скучать не приходится — и это интересно. Многим также нравятся частые выставки, конференции — мир можно посмотреть. Например, прямо сейчас будут соревнования на яхтах между несколькими гейм-дев конторами в Хорватии — чем не плюс?
Из недостатков: бывают кранчи, выход каждого проекта весьма болезненный. Бывают моменты, когда весь креатив заканчивается, и мы все вместе идём сверху вниз по баг-трекеру без оглядки на «специализацию» программиста. Иногда баги валят по 1000 в день неделями, а мы успеваем пофиксить максимум по 100... Хотя это, наверное, специфика не только геймдева.
Максим Грынив:Преимуществ много: интересные задачи, прямой фидбек от игроков — чувствуешь, что то, что ты делаешь, нужно живым людям. Сам играешь в то, что делаешь.
Огромные возможности для одиночек и небольших команд — сформированная инди-сцена. Намного более неформальная атмосфера. Известность, внимание, слава, фанаты — это, конечно, не Голливуд, но немного похоже. Кому-то это нравится, кому-то — нет, но это есть.
Недостатки: большие риски, расширенная зона ответственности. Всем плевать, что ты пишешь идеальный код, что он супер оптимизированный — если геймплей получается унылым, вашу команду ничто не спасет.
Эдуард Лобас:У многих программистов есть идеи относительно игр, которые они любят, которые они представляют себе в уме. Работа в геймдев-компании помогает им раскрыть это. Они участвуют в чём-то позитивном. К тому же, приятно, когда твои друзья в соцсетях приглашают тебя в те игры, над которыми ты работал.
Недостатки — ровно такие же, как и в других областях IT. Тут уже зависит от разделения на продуктовые, аутсорсинговые, стартапы и так далее.
Александр:Разрабатывать игры весело! Очень приятно осознавать, что в игры, которые ты делаешь, будут играть тысячи людей, а если они будут проводить в игре часы — твои старания не прошли даром. В разработке ПО, систем автоматизации и т. д. нет такого. В приложении человек проводит ровно столько времени, сколько потребуется на выполнение какой-то задачи. В игре человек может сидеть часами, а чтобы этого добиться, нужно очень постараться.
Про недостатки сказать что-то конкретное сложно, особенно когда дело касается любимой работы. Как говорят — найди работу по душе, и тебе больше никогда не придётся работать. Один из основных минусов: когда подсел на разработку игр, слезть уже сложнее. Например, после геймдева работать на проекте по автоматизации будет на порядок скучнее, а это значит, что и продуктивность человека падает, и никакие деньги не дадут того настроения, которое возникает при разработке игры, пускай даже не самой популярной.
Андрей:Главным преимуществом я бы назвал то, что игры — это весело и интересно. Игры дарят людям радость и удовольствие. Еще в геймдеве есть место для творчества и предложения своих идей по улучшению проекта. Для сравнения, в энтерпрайзе очень часто уже всё решено заранее, и нужно реализовать строго определенный функционал, иногда даже нет возможности выбора технологий, нужно просто написать код. Но это дело вкуса.
А главный недостаток — отношение людей к играм и геймдеву. Неоднократно встречал мнение, что разработка игр — это несерьезное занятие, которое не требует особых усилий или знаний.
Также сложности в работе производит постоянное изменение требований (но это ведь развитие?) и, как следствие, ухудшение качества кода. Из технических проблем: для геймдева особо остро стоит вопрос производительности системы. В отличие от большинства энтерпрайз проектов, в игровой индустрии пользователи более «избалованные» и не будут ждать по
О том, как стать гейм-разработчиком
Александр Савчуков:Если вы уже работаете программистом в другой индустрии, то стать гейм-разработчиком очень просто. Но вы должны быть готовы перейти на новое место с понижением ставки на первое время. Большую роль играет степень желания стать именно гейм-программистом — именно на этом следует делать упор и пытаться показать его в полной мере на собеседовании. В нормальной гейм студии это всегда отмечают и оценивают.
Лично для меня и нашей компании самым важным является сама личность, характер человека и его коммуникабельность. Если человек был отличник и побеждал на всех олимпиадах, но вместе с тем он является «ботаником», то я бы не стал брать его на работу. Зачастую такие, как я их называю, ниндзя-программисты — совершенно не командные игроки. А командность в геймдеве намного важнее, чем в soft development’е, потому что динамика индустрии предопределяет постоянное делегирование задач между всеми членами команды. Нельзя допускать, чтобы человек садился в «бункер» и выполнял задачу единолично и больше никому неведомо как, даже если это будет сделано гениально. Командная разработка упрощает поддержку, изменение кода и всего проекта в целом, а это прямая экономия инвестиций. Подводя итог, можно сказать, что принять решение о найме сотрудника можно, просто пообщавшись и задав несколько наводящих технических вопросов, не выискивая в интернете хитроумных задачек.
Если говорить про технологии и термины, то все зависит от того, какие технологии использует в данный момент компания, в которую вы идёте. Но всегда хорошо бы знать хотя бы основы (С++, C#, Java, OpenGL, DirectX, шейдерные языки). В современных реалиях особенно полезно изучить хотя бы один Game Engine из ряда самых популярных (Unreal, CryEngine, Unity3D).
Олесь Шишковцов:Стать гейм-девелопером можно точно так же, как и любым другим программистом. Нужно очень захотеть. Минимум знаний — это C++, алгоритмы и структуры данных. Дальше уже начинается специализация. В любом случае учиться придется всю жизнь.
На собеседование главное — показать умение работать в команде и желание учиться. Еще мы всегда спрашиваем, во что играет человек, в какие игры? Странно, если человек хочет делать игры, но не играет в них, не так ли?
Эдуард Лобас:Как попасть в геймдев-компанию? Если честно, то такие же, как и в любую другую. Как правило, приветствуется, а иногда и необходим опыт работы в геймдеве. А знания матчасти, своей технологии и прочего нужны равноценные.
Максим Грынив:Как стать гейм-девелопером? — писать игры. И в процессе изучать, что потребуется.
Александр:Гейм-программистом стать легко — так же, как и обычным программистом, за исключением того, что человек должен любить игры, любить играть. Думаю, многие айтишники, которые с детства играли в компьютерные игры, мечтали(ют) разрабатывать свою.
На что делать упор и что учить? Учиться нужно кодить, и кодить хорошо! Конкретный язык программирования выбирается в зависимости от масштабности будущих проектов и, конечно, от сложности для человека.
Андрей:Главное, чтобы отрасль нравилась, и было желание в ней развиваться. Основной упор в изучении нужно делать на структуры данных и алгоритмизацию, а дальше уже смотреть и пробовать какие-нибудь движки и фреймворки. Все зависит от направления в геймдеве: мобильные платформы, консоли, браузерные или десктопные игры. Вариантов много, и всё интересно.
Все, кто мечтал создавать свои игровые миры, но по каким-то причинам колебался, — дерзайте!
Личными историями, опытом или просто своим мнением приглашаем поделиться в комментариях.