Александр Пирогов о профессии Tool-programmer

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

Расскажи о себе? Как пришел в геймдев? Где учился?
Всем привет, меня зовут Пирогов Александр, и в геймдев я попал совершенно случайно. Учился в Политехе, на ФТК, на кафедре АиВТ (ныне КСиПТ) и считал, что в жизни не может быть ничего скучнее, чем писать на С++.

На 3м курсе познакомился с ПЛИС, VHDL и Verilog и подумал «вот оно, чем я хочу заниматься». 4 года я работал над разного рода железом: мед оборудование, беспилотники, видео кодеки. Но чем больше были проекты, тем дальше я был от железа, и больше в моей жизни было С++.

В один день, ожидая окончания симуляции очередной железки, я листал ленту в вк и увидел пост про день открытых дверей в Sperasoft. «Приходите пить пиво, есть пиццу и говорить про игры». Решил зайти в гости, убить вечер. Так я попал в геймдев на 7 лет)

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

Главное отличие геймдева от разработки IDE — «свежесть» технологий. Как правило в геймдеве делается срез какой-то определенной стабильной версии компилятора/фреймворка/тулзы/движка и на ней можно сидеть годами, пока весь мир движется вперед. В JB практически все технологии, которыми я пользуюсь, это Nightly сборки, Dev или EAP версии.

А про сравнение «игровой индустрии» и «крупной софтверной компании». Сейчас я про игры говорю с коллегами больше, чем когда делал игры) Наверное специфика профессии. В JetBrains тоже есть свои минусы, но здесь ощущение от стартапа, когда у всех душа болит за продукт и готовы горой встать «на защиту отечества».

Были ли в детстве мечты/мысли о разработке игр? Хотелось ли создать свой набор утилит или даже игровой движок?
Может быть во что-то играл в детстве такое из-за чего захотелось делать именно игры? Почему именно геймдев? Почему тулы?

Мыслей делать игры (и вообще программировать) особо не возникало. Зато играть оооочень нравилось) Вообще любовь к играм мне привил отец. У нас довольно рано появился комп, мы регулярно заезжали на развалы с пиратскими дисками и если хорошенько порыться, можно откопать подписку Страны Игр, Навигатора и Game.exe от 98 года. Наверное пределом мечтаний было вести передачу про игры, похоже я насмотрелся «От винта» в свое время, Бонус и Гамовер были кумирами.

Если бы не программирование,- какую профессию в сфере разработки игр ты бы выбрал? Почему? Хотел бы рисовать или может заниматься дизайном?

Читай также:  Разработка игр инди глазами Buildbox

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

Что для тебя видеоигры? Развлечение/форма искусства? Какое у тебя отношение к играм?

Я думаю все и сразу, и развлечение, и искусство, и хлеб насущный)

Расскажи о работе Tool-программиста (для тех кто не представляет что это такое). В чем заключается работа? Какие задачи перед тобой стоят, как ты их решаешь?

Я как-то раз задал вопрос «расскажите, что для вас значит понятие tools разработчик» в профильном slack канале thetoolsmiths (есть еще сайт с одноименным названием, куда складывается всякая разная инфа про тулзы), там сидят тулз программисты и тех директора Activision, Blizzard, Ubisoft и прочие скучные люди)
Так вот, большинство ответов были скорее философские, чем технические, что-то вроде «от тулзовика главное желание «наносить» добро. Ты можешь сделать самую технически крутую хреновину в мире, но это не сделает тебя матерым тулзовиком. А можешь сделать маленькое улучшение, которое будет экономить 1.5с твоему коллеге в ежедневой задаче, которая его бесит, он перестанет выпадать «из потока» при работе, сэкономит кучу нервов и это позволит ему сделать свою работу на совершенно новом уровне.

Понятие профессии и список обязанностей сильно зависит от размера компании. В инди проекте, где 2.5 землекопа и скорее всего будет использован уже готовый движок вроде Unity или UE, тулзами будет заниматься программист движка или графики «по совместительству». И скорее всего это будут разного рода утилиты для упрощения жизни коллегам художникам, что-нибудь вроде экспорта моделей в нужный формат и интеграция в движок, или упрощение работы с системой контроля версий.

Для очень крупных парней вроде EA, Ubisoft или Wargaming’а, которые могут позволить себе разработку собственного движка, скорее всего потребуются и собственные редакторые уровней, частиц, игровых объектов, моделей, да чего угодно. Там уже под тулзы может быть выделена отдельная команда. И вот задача этих людей связать два мира, мир тех команды (движок, графика) и мир арта. Необходимо дать художникам удобный и понятный способ настройки тех охренительный гениальных решений, которые придумала рендер команда.

Как же часто я видел ситуацию, когда тех команда выдает наружу табличку ключ/значение для какого-то своего сервиса, с миллионом свистелок и перделок, которые так дороги разработчикам, но которые не несут какого-либо смысла художникам. И на этом их взаимодействие заканчиватеся. Тех команда идет дальше пилить новые фичи, они же уже закончили свою работу, их детище живет и дышит, а как теперь его настроить так, чтобы игрок смог насладиться их трудами? А команда художников вынуждена терпеть и закусив удила учиться работать с тем что есть. Вы когда-нибудь видели настройку сплайн анимации с помощью таблички коэффициентов без возможности проиграть анимацию!? Я видел. До сих пор не по себе. Тут обычно вступает в игру тулз команда, когда по мере сил дает художникам удобные рычаги управления.

Читай также:  Compute Shaders: введение в вычислительные шейдеры

Какая рутина присутствует в ежедневной работе? Что больше всего утомляет, пожалуйся :)

Утомляет, когда постоянно дергают и не дают сосредоточиться на задаче. Это из опыта тим лида. Само собой понятно, что когда руководишь командой времени на код уже не остается, но у меня еще не утих инженерный зуд и так хочется что-то руками поделать лишний раз)

Я вот только вернулся с GDC, где мне напомнили о самой большой проблеме геймдева — именование файлов) 90% работы тулзовика — работа с ассетами. Показать, изменить, сконвертировать, сериализовать, засунуть в репозиторий, вытищать из репозитория.
И в зависимости от компании/проекта/движка/редакторов, игровой объект может содержать великое множество ассетов — звуки, модель, текстуры, анимации, какие-то данные для игры, какая-то мета информация исключительно для тулзов, и т.п.
Возникает вопрос — как из всего этого великолепия собрать игровой объект? Или как каталогизировать? Частый ответ — положить в заранее выбранное место ассет, с названием соответствующим определенному шаблону,
Конечно же есть человеческий фактор, художник натура творческая, может назвать не так, положить не туда. И существуют целые семинары о том, как правильно учить художников правильно называть файлы и класть их в нужные места)

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

«Задача хорошего Tool-программиста — нанести как можно больше добра»

Как правило тулзы рождаются «из необходимости». Хочется увидеть как в игре отображается моделька из 3ds Max’а? Будь добр сделать конвертер из макса в формат, понятный игре.
Тут же захочется иметь кнопочку экспорта в самом максе, будь добр пили плагин, который добавит кнопочку запуска конвертера.
Надоело настраивать игровые объекты с помощью конфиг файлов, хочется увидеть игровой объект в движке, поменять ему характеристики, изменить модельку, добавить звуки, эффекты…
А больше ничего не хочется!!!? Конечно хочется)
Но задача тулзовика нанести как можно больше добра как можно меньшими усилиями, исходя из этого и приоритизируются задачи. Как правило потребности всегда преобладают над возможностями)

В какие игры играешь сейчас? Чем вдохновляешься? Какие последние игры прошел? Любимые жанры?

Да во все подряд) Единственные жанр, которые меня так и не зацепил это симуляторы командных видов спорта. Я могу часами играть в SKATE, но при виде FIFA или NHL меня в сон клонит.

Читай также:  Профессия сценариста компьютерных игр

Есть ли какой-то особый жанр игр или может быть известная франшиза, в которой хотелось бы поучаствовать?

Borderlands, Doom и Mortal Kombat (не мобильный)

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

Если честно, я на многое могу закрыть глаза и простить, кроме UI/UX. Даже если в остальном игра была великолепна, если мне приходиться сделать 300 приседаний голой жопой на раскаленный гвоздодер, чтобы что-то найти в инвентаре, я могу удалить игру)
По этой причине я не осилил Fallout IV, а TES: Skyrim прошел только после выхода модов упрощающих работу с инвентарем.
В остальном я образцово показательный игрок, стараюсь делать все максимально в рамках игры, чтобы получить те ощущение, которые задумывались разработчиками.

Что доставляет наибольшую радость в твоей работе?
В чем самый большой кайф?

Видеть как твой коллега начинает работать эффективней. Или когда получается убрать какой-нибудь необязательный этап в пайплане.

Посоветуй что-то ребятам, которых привлекает разработка игр и работа tool-программиста? Как начинать? С чего начинать? В какой ВУЗ поступить? Какие предметы ботать? Где поучиться нахаляву?

Хотя тулзы для геймдева существуют чуть меньше, чем сам геймдев, этому нигде не обучают.
Практика и еще раз практика.
Возьмите WPF (очень популярен в tools мире) или Qt, сделайте редактор уровней для Pacman’а.
Разберитесь как упаковывать ваше творение в установщик, чтобы пользователь не собирал его из исходников, а мог установить как нормальное десктопное приложение.
Сделайте возможность импорта/экспорта в формат, совместимый с другими редакторами (Tiled например).
Напишите к нему нормальную пользовательскую документацию.
Такого проекта в вашем портфолио вам хватит для того, чтобы попасть во многие геймдев компании мира.

Как относишься к инди? В какие инди-игры играл? Нравятся ли какие-то инди от наших соотечественников?
Кому задонатил? :)

Никогда целенаправленно не интересовался инди. Играл в инди игры, но скорее в те, которые уже получили мировое признание, например Braid.

Есть ли у тебя собственный инди-проект? Игра, идея игры или движок? На каком этапе твой проект? Попиарься, расскажи побольше о нём!

Это самый болезненный вопрос. Идей для игр много, но когда садишься расписать план и понимаешь, что здесь работы на пару-тройку лет минимум, то руки сами опускаются.
Я бы может и взялся делать игру, если бы знал чуть меньше про геймдев)

Понравилась статья? Поделиться с друзьями: