Артем Вознюк о профессии Gameplay-программиста

Артем Вознюк о профессии Gameplay-программиста

Привет, ребята! В рамках нашего большого обсуждения профессий в геймдеве “Как стать разработчиком игр?” Артем Вознюк согласился рассказать о своей работе.

Привет, расскажи о себе? Как пришел в геймдев? Где учился? Где/над чем сейчас работаешь?
Меня зовут Артем Вознюк, мне 28 лет. Работаю в геймдеве чуть более 5-ти лет. Я родился в городе Севастополь, в 6 лет с родителями переехал в Санкт-Петербург. Учился я в СПбГУ на факультете Прикладной Математики-Процессов Управления.

В геймдеве я оказался совершенно случайно. Наш факультет выпускает специалистов с тайтлом “математик-программист”, но, к сожалению, математики там в разы больше, чем программирования. На 10 математических курсов выпадает 1-2 курса, которые как-то относятся к Computer Science и технологиям.

Моей первой работой была должность преподавателя математики в компании Юниум – это курсы доп. образования для школьников, по крайней мере так было лет 8 назад :) После одного
семестра я понял, что это совсем не мое и переключился на программирование.

Я стал учиться самостоятельно и на 4-м курсе получил свою первую работу программистом в одном из Питерских НИИ. Работа была не интересная, я с трудом вспоминаю чем мы вообще там занимались. Спустя 9 месяцев я решил, что пора двигаться дальше и получил контрактную работу(не в штате) в компании LG Electronics на позицию Junior C++ Developer.

Работа заключалась в написании автотестов для телефонов под Android. Через год мой контракт закончился, ни работы в штате ни нового контракта мне предложить не смогли и мне пришлось
искать себе новую работу.

Тогда я очень расстраивался, но сейчас я понимаю, что это повернуло мою карьеру в совсем другую сторону, чему теперь я несказанно рад :) В течении месяца я ходил по собеседованиям. Признаюсь, в тот момент я абсолютно не понимал чем хочу заниматься. В то время я еще не был уверен, что программирование – это то, с чем бы я хотел связать свою жизнь. То что геймдев – это что-то с той же планеты, на которой я живу, я даже не мог подумать :)

Но на мой почтовый ящик пришло письмо, которое говорило об обратном. В компанию Saber Interactive был нужен Gameplay Programmer и мне предложили выполнить тестовое задание на эту позицию, которое я успешно выполнил.

Меня пригласили на собеседование, оно тоже прошло удачно и мне предложили работу. Вот так от состояния, когда я даже не знал, что в у нас в Питере делаются игры до официального вступления в геймдев сообщество прошло несколько дней.

За эти 5 лет я поработал в трех геймдев компаниях, занимающихся AAA играми(Saber Interactive, 4A Games, Sperasoft). Участвовал в разработке таких игр как Quake Champions и Metro Exodus. Недавно я вернулся в Saber, занимаю здесь должность Game Engine программиста.

Сейчас мы работаем над неанонсированным проектом, про который я могу говорить ровно ничего :)

Были ли в детстве мечты/мысли о разработке игр?
Может быть во что-то играл в детстве такое из-за чего захотелось делать именно игры? Почему именно программирование игр? Почему геймплей?
Как и большинство из нас, я был увлечен играми с раннего детства. Я до сих пор помню тот день, когда родители купили мне мой первый компьютер и две игры: Quake 3 Arena и Diablo 2. Наверное я не вставал из-за стола несколько дней. То что игры делают такие же обычные люди как я, я тогда, конечно, не знал.

Представить себе, как вообще происходит этот процесс тоже не мог. Это сейчас я могу часами сидеть и рассказывать, чем геймдев лучше других индустрий (минусы тут, конечно, тоже есть и существенные), а тогда я просто отдавал кучу времени своему хобби. Сейчас я остаюсь в индустрии по нескольким причинам. В геймдеве особенная рабочая атмосфера. Ты всегда окружен талантливыми и позитивными людьми, тут нет дресскода, нет жесткой субординации.

Программист в игровой разработке – это, наверное, самый творческий вид программиста. Ты всегда можешь поучаствовать в обсуждении дизайна игры, предложить какие-то идеи. Ну и то, что из под твоих
пальцев выходит продукт в виде красивого интерактивного, развлекательного приложения очень вдохновляет. Если говорить о минусах, то это зарплата. Меньшие зарплаты, по сравнению со многими другими направлениями очень легко объяснить.

Программист, работающий над большой игрой 2-4 года, конвертируется в деньги для компании не так хорошо, как программист занятый, скажем, в банке те же 2-4 года. Если вы хороший специалист, вас будут ценить и хорошо поощрять и в геймдеве, но надо признать, что в среднем программист больше заработает в банке или enterprise, чем в разработке игр. Также в некоторых компаниях вы можете столкнуться с кранчами(переработками), особенно под конец проекта.

Геймплей я не выбирал, он выбрал меня :) Если вы начинающий игровой разработчик, скорее всего вы будете начинать с геймплея. Это особенно актуально сейчас с развитием таких игровых движков, как Unity и Unreal Engine.

Игровые разработчики уже не начинают писать свой движок когда хотят сделать игру, как это было раньше. Ты просто заходишь на сайт, скачиваешь дистрибутив и начинаешь разрабатывать игровые механики на готовом фреймворке. Во всех компаниях, где я работал, я
имел дело с проприетарными технологиями, что позволило мне со временем начать заниматься другими вещами.

Сейчас, например, моя работа тесно связана с физикой и анимациями. Стоит также отметить, что граница между Gameplay и Engine
программированием очень размыта и варьируется в зависимости от компании и технологий, на которых ведется разработка. То что в одной компании делает Engine программист, в другой – прерогатива Gameplay команды.

Расскажи о работе Геймплей-программиста (для тех кто не представляет что это такое). В чем заключается работа?
В чем заключается, какие задачи перед тобой стоят, как ты их решаешь?
Команда, разрабатывающая игру, состоит из специалистов различных профилей. Здесь есть разные художники: концепт, моделлеры, аниматоры, текстурщики, UI, VFX, технические художники; дизайнеры: гейм-дизайнеры, левел-дизайнеры, саунд-дизайнеры; програмисты: Engine, Render, Tools, Backend.

Все эти люди делают контент из которого состоит игра и движок, на котором можно сделать игру. Задача геймплей программиста с помощью систем игрового движка склеить все эти разрозненные части – модели, анимации, звуки и тд, и превратить это в консистентное интерактивное приложение, где все на своих местах. Персонаж, например, слушается ваш gamepad и красиво бегает, а не стоит в T-позе, его анимации соответвуют перемещению в пространстве, звуки шагов проигрываются, когда он наступает на поверхность, визуальные эффекты появляются в позиции взрыва гранаты и т д.

Какая рутина присутствует в ежедневной работе?
Что больше всего утомляет, пожалуйся :)
Геймплей программист прежде всего – программист. У него все те же проблемы, что и у других программистов. Ты не обсуждаешь дизайн игры с утра, пишешь код после обеда и к вечеру выпускаешь игру. Очень часто долгие мучительные часы проходят в затирании кнопки F10 (примечание для чайников: Это Step Over – функция отладки в Visual studio и других IDE) на вашей клавиатуре в поисках очередного неуловимого бага.

Кроме того, работа геймплей программиста завязана на специалистов всех остальных профилей очень часто можно оказаться в ситуации, когда твоя работа находится в подвешенном состоянии до чекина кого-нибудь из ваших коллег. Иногда это жутко утомляет :)

Расскажи о процессе создания игры с точки зрения геймплей-программиста? Какая у тебя зона ответственности? Какие этапы претерпевает игра, как ты способствуешь тому чтобы она стала крутой? С кем еще из команды ты взаимодействуешь?
Разработка игры обычно начинается с диз. дока – документа в которой отражена общая концепция игры, core фичи, история, сеттинг. Когда дизайнеры его подготовили, самое время приступать к прототипированию.

Прототип – это обычно мини игра, которая включает основные механики. Он нужен для того, чтобы понять, стоит ли вообще разрабатывать игру с таким геймплеем, интересно ли в это играть, можно ли это будет развить в полноценный законченый продукт. Обычно на этом этапе качество кода и ассетов не важно – главное воссоздать нужный филинг.

Когда прототип признается удачным, начинается основной этап разработки. Обычно разработка происходит в соответствии с какой-нибудь из современных методологий разработки(Agile, Scrum) – весь роадмап разбивается на месячные майлстоуны или недельные спринты, в течении которых ты выполняешь поставленные перед тобой задачи по разработке механик, обсуждаешь их на дейли стендапах.

Как я говорил, геймплей программист взаимодействует практически со всей остальной командой: ты обсуждаешь текущие проблемы с продюсерами, обсуждаешь задачи с дизайнерами, ждешь новые ассеты от художников, аниматоров, звуковиков и новый функционал от программистов других отделов.

В какие игры играешь сейчас? Чем вдохновляешься? Какие последние игры прошел? Любимые жанры?
Играю, к сожалению, не так часто как хотелось бы. Жизнь программиста игр – это постоянное изучение нового. На геймплее игровая разработка не останавливается, а изучать каждый винтик из которого состоит игра можно всю свою карьеру, поэтому
очень много времени уходит на это. Но в этом и кайф – ты никогда не остановишься в развитии, если сам этого не захочешь.

Из того, что прошел за последние пол года – Middle Earth: Shadow of War и Uncharted 4. Игры просто великолепные! Последнюю можно даже посчитать эталоном технического качества, но таковое достигается именно теми самыми кранчами, которые я сегодня упоминал:) Любимой игрой я считаю Fallout: New Vegas – проходил ее раз 5 вдоль и поперек :)

Есть ли какой-то особый жанр игр или может быть известная франшиза, в которой хотелось бы поучаствовать?
В прошлом я как раз мечтал поучаствовать в разработке какого-нибудь из новых Fallout-ов :) Сейчас я уже отошел от мыслей создать игру мечты, не знаю хорошо это или плохо. В будущем хотелось бы сосредоточиться на разработке техгологий для
игр, а не на конкретных играх.

Как относишься к инди? В какие инди-игры играл? Нравятся ли какие-то инди от наших соотечественников?
Кому задонатил? :)
Я помню вечер, когда я посмотрел документальный фильм Indie Game: The Movie. Неделю после я ходил в полной уверенности, что ухожу от офисной работы и сажусь за свой проект :) Вдохновение отступило также внезапно. В итоге я остаюсь убежденным корпоративным разработчиком – я люблю программировать и очень рад, что есть много людей, которые любят все остальное, что надо делать в геймдеве и мне не приходится этим заниматься. Но вместе с тем я с большим уважением отношусь к тем “людям-оркестрам”, которые умеют и делают все. В особенности к тем, кто сумел довести свое дело до конца и добиться успеха.

Я не особо играю в инди игры, поэтому и донатить никому не приходилось :)

Есть ли какая-то профессиональная деформация? Как играются “чужие” игры когда ты сам разрабочик? Репортишь ли баги разработчикам? Возникает ли желание проверить какое-то поведение NPC, например? Может быть чем-то вдохновляешься, берешь идеи из других игр?

Какой-то критичной деформации я за собой не замечал. Иногда, когда видишь какой-то баг, начинаешь невольно думать из-за чего он мог произойти, но играть в игры это никак не мешает. А насчет репортов багов и проверки поведения, такая
деформация, наверное, может возникнуть у ребят из QA.

Что доставляет наибольшую радость в твоей работе? В чем самый большой кайф?
На самом деле любая законченная задача, новая фича, которая работает доставляет радость. Зачекинил свои изменения, получил аппрув от QA и дизайнеров, кайфанул :) Но самый большой кайф, это когда в твою игру начинают играть конечные пользователи и получать от этого фан. Просмотр на youtube стримов с твоей игрой вызавает какие-то особые ощущения.

Посоветуй что-то ребятам, которых привлекает разработка игр и работа геймплей-программиста?
Как начинать? С чего начинать? В какой ВУЗ поступить? Какие предметы ботать? Где поучиться нахаляву?
Поработав в трех разных компаниях с четырьмя разными движками и просмотрев огромное количество вакансий, я выделил для себя четыре core скилла игрового разработчика: языки C/C++, математика, английский язык, знание предметной области.
Языки C/C++ используются для программирования всего, от самого лоу-левела до механик, в абсолютном большинстве игровых компаний, которые занимаются большими играми. Если вам нравится Unity и вы собираетесь заниматься исключительно
геймплеем, вам, наверное, подойдет C#. По C++ я рекомендую курс на youtube от Гоши Дударя… шучу-шучу :) Для начала отлично подходит книга Лафоре “Объектно-ориентированное программирование в C++”, затем можно почитать Скотта Майерса.

Когда осилите это, дальше уже сами разберетесь чем продолжить. Если вы программируете геймплей, анимации, графику, физику, вам абсолютно необходима линейная алгебра. В интернете огромное колличество теории и примеров решения задач.
Начать можно со статьи на хабре “Линейная алгебра для разработчиков игр”. Если вы не знаете английский язык, вы заведомо проигрываете вашим коллегам, которые его знают. Все самые топовые ресурсы для изучения всего остального вы не найдете
на русском
языке.

Читайте, смотрите, говорите сами с собой, идите на курсы, делайте что хотите, но вы должны по крайней мере уверенно читать и воспринимать на слух английский язык. Для начала изучения предметной области есть две книги – Game Engine Architecture и Game Coding Complete. Книги очень похожи – это хайлевел обзор элементов игрового движка и разные подходы к их созданию, выбирайте любую. Лично мне больше нравится первая, ее, кстати, написал Jason Gregory – ведущий программист графики из Naughty Dog, уж этот парень знает, что говорит :)

Если вы всю жизнь планируете проработать в России, то ВУЗ для вас, на мой взгляд, не должен быть принципиален. Ни на одном собеседовании здесь у меня его не проверяли. Если же вы хотите в какой-то момент попробовать себя за рубежом,
диплом вам нужен обязательно, причем по специальности. Я получал офферы из двух компаний из Европы и в обоих случаях для получения разрешения на работу им был необходим мой диплом. То же самое было и со многими моими коллегами.
Качество ВУЗа для них не принципиально, я думаю они их не различают, а вот специальность должна совпадать с той на которую вы претендуете.

А сейчас будет секретная информация. Учиться на халяву можно… в интернете! Бесплатных ресурсов разного рода огромное колличество.

Какими качествами должен обладать крутой программист? Как эти качества в себе развивать?
Для того, чтобы отточить те скилы, о которых я сказал, вам понадобится некоторый запас усидчивости. Многие говорят, что нет смысла заниматься программированием, если оно вам не нравится и в этом, бузусловно, есть зерно, но лично мне программирование понравилось не сразу. В том числе программирование игр. Но когда вы начинаете что-то понимать и когда начинает что-то получаться, вы начинаете кайфовать от этого все больше и больше. Поэтому некоторым людям придется “отмучаться” некоторое время и заставлять себя заниматься. Но когда вспоминаешь, что в награду ты получаешь дело своей жизни и неплохой зароботок, понимаешь, что это стоило того :) 

Рассажи какую-нибудь историю связанную с геймдевом, программированием геймплея?

Примерно полтора года назад я загорелся идеей попробовать поработать за границей. Я начал интенсивно подтягивать разговорный английский, готовиться к собеседованиям. От момента зарождения идеи, до оффера из европейской компании прошло не
так много времени – примерно три месяца. Этой компанией была польская студия People Can Fly известная своими играми Painkiller, Bulletstorm и участием в разработке нескольких частей Gears of War. Все шло так гладко и хорошо, что я начал сильно переживать, как бы чего не сорвалось.

И волновался я не зря, мне отказали в резрешении на работу. А причина была достаточно комична – написание моей фамилии в моем загран паспорте и моем дипломе отличались на одну букву.

Получить разрешение еще можно было, но это обстоятельсто отбрасывало мой переезд минимум на несколько месяцев, так как процедура доказательства, что этот диплом действительно мой была не быстра. Я тогда очень сильно расстраивался, но в итоге все закончилось хорошо.

Через несколько недель я получил оффер от компании 4A Games. Мальтийцы оказались не такими дотошными как поляки, я получил разрешение на работу очень быстро и получил возможность поработать с великолепными профессионалами над отличным проектом. Спустя 7 месяцев по личным причинам я решил вернуться в СПб, но все равно я рад, что попробовал – это был очень важный опыт :)

Понравилась статья? Поделиться с друзьями:
Автор snezhok_13
Время от времени пишет статьи о разработке игр и проводит интервью с разработчиками. Сейчас работает engine-progremmer'ом в Larian Studios. Большой поклонник игр Naughty Dog.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *