Александр Пирогов о профессии Tool-programmer
Привет, ребята! В рамках нашего большого обсуждения профессий в геймдеве “Как стать разработчиком игр?” Александр Пирогов согласился рассказать о профессии tool-programmer.
Расскажи о себе? Как пришел в геймдев? Где учился?
Всем привет, меня зовут Пирогов Александр, и в геймдев я попал совершенно случайно. Учился в Политехе, на ФТК, на кафедре АиВТ (ныне КСиПТ) и считал, что в жизни не может быть ничего скучнее, чем писать на С++.
На 3м курсе познакомился с ПЛИС, VHDL и Verilog и подумал “вот оно, чем я хочу заниматься”. 4 года я работал над разного рода железом: мед оборудование, беспилотники, видео кодеки. Но чем больше были проекты, тем дальше я был от железа, и больше в моей жизни было С++.
В один день, ожидая окончания симуляции очередной железки, я листал ленту в вк и увидел пост про день открытых дверей в Sperasoft. “Приходите пить пиво, есть пиццу и говорить про игры”. Решил зайти в гости, убить вечер. Так я попал в геймдев на 7 лет)
Знаю, что ты сейчас ушел из Sperasoft в Jetbrains: расскажи про разницу работы в игровой студии и крупной софтверной компании. Какие плюсы/минусы? Сильно ли различается стэк технологий?
Главное отличие геймдева от разработки IDE – “свежесть” технологий. Как правило в геймдеве делается срез какой-то определенной стабильной версии компилятора/фреймворка/тулзы/движка и на ней можно сидеть годами, пока весь мир движется вперед. В JB практически все технологии, которыми я пользуюсь, это Nightly сборки, Dev или EAP версии.
А про сравнение “игровой индустрии” и “крупной софтверной компании”. Сейчас я про игры говорю с коллегами больше, чем когда делал игры) Наверное специфика профессии. В JetBrains тоже есть свои минусы, но здесь ощущение от стартапа, когда у всех душа болит за продукт и готовы горой встать “на защиту отечества”.
Были ли в детстве мечты/мысли о разработке игр? Хотелось ли создать свой набор утилит или даже игровой движок?
Может быть во что-то играл в детстве такое из-за чего захотелось делать именно игры? Почему именно геймдев? Почему тулы?
Мыслей делать игры (и вообще программировать) особо не возникало. Зато играть оооочень нравилось) Вообще любовь к играм мне привил отец. У нас довольно рано появился комп, мы регулярно заезжали на развалы с пиратскими дисками и если хорошенько порыться, можно откопать подписку Страны Игр, Навигатора и Game.exe от 98 года. Наверное пределом мечтаний было вести передачу про игры, похоже я насмотрелся “От винта” в свое время, Бонус и Гамовер были кумирами.
Если бы не программирование,- какую профессию в сфере разработки игр ты бы выбрал? Почему? Хотел бы рисовать или может заниматься дизайном?
Тех артист, определенно тех артист. По-моему это одна из самых интересных профессий в геймдеве, где надо быть на одной волне и с художниками, и с программистами. Время от времени я даю себе слово перестать быть рукожопом и наконец нормально освоить какой-нибудь редактор модели. Когда-нибудь.
Что для тебя видеоигры? Развлечение/форма искусства? Какое у тебя отношение к играм?
Я думаю все и сразу, и развлечение, и искусство, и хлеб насущный)
Расскажи о работе Tool-программиста (для тех кто не представляет что это такое). В чем заключается работа? Какие задачи перед тобой стоят, как ты их решаешь?
Я как-то раз задал вопрос “расскажите, что для вас значит понятие tools разработчик” в профильном slack канале thetoolsmiths (есть еще сайт с одноименным названием, куда складывается всякая разная инфа про тулзы), там сидят тулз программисты и тех директора Activision, Blizzard, Ubisoft и прочие скучные люди)
Так вот, большинство ответов были скорее философские, чем технические, что-то вроде “от тулзовика главное желание “наносить” добро. Ты можешь сделать самую технически крутую хреновину в мире, но это не сделает тебя матерым тулзовиком. А можешь сделать маленькое улучшение, которое будет экономить 1.5с твоему коллеге в ежедневой задаче, которая его бесит, он перестанет выпадать “из потока” при работе, сэкономит кучу нервов и это позволит ему сделать свою работу на совершенно новом уровне.
Понятие профессии и список обязанностей сильно зависит от размера компании. В инди проекте, где 2.5 землекопа и скорее всего будет использован уже готовый движок вроде Unity или UE, тулзами будет заниматься программист движка или графики “по совместительству”. И скорее всего это будут разного рода утилиты для упрощения жизни коллегам художникам, что-нибудь вроде экспорта моделей в нужный формат и интеграция в движок, или упрощение работы с системой контроля версий.
Для очень крупных парней вроде EA, Ubisoft или Wargaming’а, которые могут позволить себе разработку собственного движка, скорее всего потребуются и собственные редакторые уровней, частиц, игровых объектов, моделей, да чего угодно. Там уже под тулзы может быть выделена отдельная команда. И вот задача этих людей связать два мира, мир тех команды (движок, графика) и мир арта. Необходимо дать художникам удобный и понятный способ настройки тех охренительный гениальных решений, которые придумала рендер команда.
Как же часто я видел ситуацию, когда тех команда выдает наружу табличку ключ/значение для какого-то своего сервиса, с миллионом свистелок и перделок, которые так дороги разработчикам, но которые не несут какого-либо смысла художникам. И на этом их взаимодействие заканчиватеся. Тех команда идет дальше пилить новые фичи, они же уже закончили свою работу, их детище живет и дышит, а как теперь его настроить так, чтобы игрок смог насладиться их трудами? А команда художников вынуждена терпеть и закусив удила учиться работать с тем что есть. Вы когда-нибудь видели настройку сплайн анимации с помощью таблички коэффициентов без возможности проиграть анимацию!? Я видел. До сих пор не по себе. Тут обычно вступает в игру тулз команда, когда по мере сил дает художникам удобные рычаги управления.
Какая рутина присутствует в ежедневной работе? Что больше всего утомляет, пожалуйся :)
Утомляет, когда постоянно дергают и не дают сосредоточиться на задаче. Это из опыта тим лида. Само собой понятно, что когда руководишь командой времени на код уже не остается, но у меня еще не утих инженерный зуд и так хочется что-то руками поделать лишний раз)
Я вот только вернулся с GDC, где мне напомнили о самой большой проблеме геймдева – именование файлов) 90% работы тулзовика – работа с ассетами. Показать, изменить, сконвертировать, сериализовать, засунуть в репозиторий, вытищать из репозитория.
И в зависимости от компании/проекта/движка/редакторов, игровой объект может содержать великое множество ассетов – звуки, модель, текстуры, анимации, какие-то данные для игры, какая-то мета информация исключительно для тулзов, и т.п.
Возникает вопрос – как из всего этого великолепия собрать игровой объект? Или как каталогизировать? Частый ответ – положить в заранее выбранное место ассет, с названием соответствующим определенному шаблону,
Конечно же есть человеческий фактор, художник натура творческая, может назвать не так, положить не туда. И существуют целые семинары о том, как правильно учить художников правильно называть файлы и класть их в нужные места)
Расскажи о процессе создания игры с точки зрения 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.
Есть ли у тебя собственный инди-проект? Игра, идея игры или движок? На каком этапе твой проект? Попиарься, расскажи побольше о нём!
Это самый болезненный вопрос. Идей для игр много, но когда садишься расписать план и понимаешь, что здесь работы на пару-тройку лет минимум, то руки сами опускаются.
Я бы может и взялся делать игру, если бы знал чуть меньше про геймдев)