Skvot

Mag

Skvot Mag
Курсы по теме:

Не стыдно спросить: чем занимается геймдевелопер

3D developer Саша Пучка — про этапы создания игр, моды и старт в геймдеве.
card-photo
card-photo
Юля
Романенко

Авторка в SKVOT

11 октября, 2021 / Дизайн / Статья

Весь день сидеть за ноутом и рубиться в игры — звучит как работа мечты. Но это не про разработчика игр. Здесь все немного иначе: прототипы, шейдеры, билды и переработки — потому что вылез новый баг и нужно срочно чинить.

Прежде чем нырять в любую профессию, важно узнать о ее изнанке. Капот разработки видеоигр для нас приподнял Саша Пучка — 3D developer с 9-летним опытом. Саша участвовал в создании пяти последних Assassin's Creed в Ubisoft, а сейчас он — 3D Lead в стартапе ZibraAI, который упрощает жизнь разработчикам игр. 

Задали Саше самые стыдные (а потому важные) вопросы о работе в геймдеве.

Какие бывают специализации в геймдеве?

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

Геймдевелоперы отвечают за техническую сторону игры. Они не создают игру как единицу контента (это задача геймдизайнеров и художников), а помогают реализовать ее с технической точки зрения. Делают так, чтобы все, что придумали остальные, работало.

Есть речь идет о создании большой и сложной игры, в геймдев-команде будет много разработчиков (иногда даже их команд) самых разных специализаций:

  • Gameplay Developer — программирует игровую механику (взаимодействие игрока с игровым миром)
  • 3D Developer / Graphics Programmer — занимается отображением игрового мира на экране
  • Physics Programmer — отвечает за игровую физику (то, как объекты ведут себя в пространстве и взаимодействуют между собой)
  • UI Developer — создает пользовательский интерфейс
  • AI Programmer — разрабатывает игровой ИИ (систему, которая имитирует поведение персонажей в игре)
  • Audio Developer — занимается звуковыми эффектами
  • Network Programmer — отвечает за то, чтобы в (мультиплеерную) игру можно было играть по сети
  • Engine Developer — занимается игровыми движками и вспомогательными инструментами для разработки игр (если компания решает написать свой движок)
  • Back-end Developer — отвечает за серверную часть, чтобы игра работала корректно
  •  

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

Ближе всего к понятию «создание игр» находится работа геймдизайнеров. Они придумывают игру как таковую: устройство игрового мира (лор), время и место действия (сеттинг), сюжет, персонажей, механики, на которых строится игровой процесс (геймплей), графику, текст, звук.

Геймдизайнеры, как и разработчики, бывают разные. Среди них:

  • Game Mechanics Designer — придумывает игровые механики
  • Level Designer — специализируется на создании уровней
  • Сценарист — отвечает за сторителлинг и текстовую составляющую игры
  • Балансировщик — создает систему правил и ограничений, которые определяют сложность и увлекательность геймплея
  •  

Это всего несколько примеров — специализаций геймдизайнеров куда больше.

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

В масштабных играх художники могут целый год отрисовывать камни у дороги. Вспомнить тот же Cyberpunk 2077: в студии-разработчике CD Projekt — 450 человек, а над игрой работали 5 000+ людей. Все это — контентщики на аутсорсе, которые помогли создать этот огромный открытый мир и сделать его живым.

В арт-направлении геймдева тоже огромная развилка специализаций. Например:

  • Concept Artist — придумывает внешний вид персонажей или локаций (в зависимости от специализации) и делает наброски (концепт-арты), с которыми дальше работает 3D Modeller
  • 3D Modeller — отрисовывает 3D-модели персонажей, объектов, локаций
  • Animator — «оживляет» персонажей и объекты, заставляя их двигаться
  • VFX Artist — художник по визуальным эффектам
  • Technical Artist — связующее звено между художниками и разработчиками, помогает вписать 3D-модели в пространство так, чтобы это выглядело сбалансировано и реалистично
  •  

В Ubisoft ты был 3D Programmer-ом. Расскажи, чем ты занимался?

Я отвечал за оптимизацию и портирование (адаптацию) игр под разные платформы.

Задача 3D-программера в том, чтобы выжать из игры максимум в плане графики. Если она потенциально может выдать более крутую картинку — добиться этого. Добавить фичи, которые позволят художникам создавать новые визуальные эффекты и делать графику круче и круче. Настроить, протестировать все это, найти баги. Для этого нужно понимать, как работает графический конвейер: аппаратная составляющая, шейдеры (программа, которая выполняет визуализацию объекта и другие необходимые вычисления физических параметров — прим. ред.) и так далее.

Например, несколько лет назад появилась технология рейтрейсинга (ray tracing, трассировка лучей — прим. ред.). Это метод рендеринга 3D-моделей, когда система отслеживает путь виртуальных лучей света от источника и симулирует их взаимодействие с объектами по всем законам физики (так, как это происходит в реальном мире). Благодаря этому освещение, отражения и тени в игре получаются максимально реалистичными.

Так вот, чтобы художники смогли использовать эту технологию, 3D-программеры писали поддержку этой фичи для игрового движка. Это нетривиальная задача, особенно с учетом количества платформ, на которых сейчас выпускают игры: PC, Playstation 4, Playstation 5, Xbox One, Xbox Series, игровой клауд-сервис Google Stadia. У них разные API (Application Programming Interface, программный интерфейс — прим. ред.), возможности и ограничения. Получается, чтобы игра была доступна на разных платформах, нужно создать шесть ее технических вариаций.

Не каждая компания может позволить себе полное портирование игры. А если и может — не факт, что это будет работать корректно. В той же Cyberpunk 2077 разработчики, видимо, делали упор на PC — поэтому на консолях в игре вылезло много багов, которые до сих не могут починить.

Решить проблему, просто увеличив команду программистов, можно далеко не всегда (в отличие от такой же ситуации с контентом — там просто нанимаешь больше художников, и дело движется быстрее). Если ошибка кроется в архитектуре самого движка, процесс может идти нелинейно, затянуться на неопределенный срок — и не важно, сколько человек в нем задействованы.

С развитием платформ таких технических челленджей становится все больше, а портировать современные игры на разные платформы (особенно прошлых поколений) — все сложнее. Все эти задачи ложатся на плечи 3D-шников.

Кому проще стать геймдевелопером: ярому геймеру или программисту из другой отрасли?

Я встречал разработчиков игр (причем очень крутых), которые равнодушны к играм — им больше нравится преодолевать технические сложности при разработке, выжимать максимум из «железа».

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

Так было и у меня: я начинал в IT тестировщиком, отучился на программиста, а потом пришел в геймдев. Это окей.

Попасть на лекцию
 

Что отличает геймдев от остального IT?

Скажу, за что люблю эту сферу лично я:

#1. Подход к работе. До геймдева я занимался enterprise-разработкой (разработка программных решений под требования заказчика, чаще — компании). Там было как: приходит бизнес-аналитик, говорит, что надо сделать, — ты это делаешь и идешь дальше. То есть выполняешь задачу чисто формально. Абсолютно безжизненный подход, на мой взгляд.

Работая над играми, я делал все как для себя: отталкивался от того, какой продукт я (как игрок) хочу видеть, и сам ставил себе планку. Стандарты, которые задаешь себе сам, обычно самые высокие, но и удовлетворение от работы — максимальное.

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

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

#3. Чувство причастности. Разработка игр немного напоминает съемки кино, где в финальных титрах перечислены имена всей команды. Даже если твой вклад небольшой — это все равно прикольно. Вот ты запускаешь игру, видишь какую-то кнопочку, функционал, что угодно и думаешь: «Это делал я». Приятно осознавать, что там есть частичка и твоей работы.

Что важнее для успеха игры: геймплей, графика, сюжет — или что-то еще?

У каждого жанра своя киллер-фича. Если говорить про Action RPG (action role-playing game, ролевая игра в жанре «экшн» — прим. ред.) вроде Diablo — там самое главное не сюжет, а игровые механики. То же самое в мультиплеерных играх-стрелялках — механика и, может быть, графика. Если это игра с открытым миром, там должно быть много интересного контента, чтобы игроку было прикольно там сидеть.

В ААА-играх (класс высокобюджетных игр, как фильмы-блокбастеры в кино — прим. ред.) вроде GTA 5 и Assassin's Creed важен нарратив. ААА-тайтлы отличаются уровнем контента и большей длительностью прохождения. А нарратив, смысл истории — это то, что делает игру и продает ее.

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

Как устроен процесс разработки игры поэтапно?

Выделить этапы в разработке инди-игр (игры, которые создают независимые разработчики — прим. ред.) сложно, потому что команда может состоять всего из трех человек и обязанности разделены очень размыто.

Расскажу, как это происходит с большими играми от издателей.

Сначала определяют концепт игры: жанр, сеттинг, etc. Потом разрабатывают First Playable Prototype (FPP) — он нужен для того, чтобы отвалидировать идею. Допустим, хотим сделать игру про плавание на кораблях: можно ли будет в это играть, насколько это прикольно?

Если FPP прошел ревью и все окей, начинается непосредственно разработка: создание контента, наполнения, фичей. На разработку современных ААА-тайтлов уходит от 3 до 5 лет — в зависимости от масштаба.

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

От альфы до бета-версии игру шлифуют и добивают оставшийся контент — например, кат-сцены (внутриигровое видео, когда игрок не может влиять на происходящее — прим. ред.). Я видел альфа-версии игр, где кат-сцены были в виде скетчей, как в комиксах. До беты все эти видосы должны быть сняты, компьютерная графика полностью готова.

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

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

В Gold Master не должно быть багов. Но это в идеальном мире. В реальности их там полно. И за несколько недель до официального релиза, пока заводы печатают диски и рассылают их продавцам по всему миру, программисты делают first day patch / Day 1 Patch (файл с обновлениями для исправления багов в игре — прим. ред.), который выходит в первый день. То есть человек только вставил диск, а ему говорят: «Тут еще надо скачать немножко обновлений — 50 гигабайт. Так что подожди». Примерно так.

Но и это еще не все — дальше идет Post Launch. Программисты ужасно не любят этот этап: ты просто сидишь, фиксишь краши, собираешь баги — и так в течение нескольких месяцев. Поэтому в команде обычно происходит так: «Кто остается на пост-лонч? Так, ты еще ни разу не был — тогда ты. А ты уже был — значит, идешь на новый проект». Это как трудовая повинность — скучная, но суперважная, потому первые месяцы после выхода игры самые активные в плане продаж.

Так как разработка игр становится все более дорогостоящей, геймдев-компании ищут дополнительные способы монетизации. Например, создают DLC (Downloadable Legal Content) — дополнительный платный контент. Это повышает интерес к основной игре и помогает отбить затраты на разработку. Если 10 лет назад выводы об окупаемости делали спустя несколько месяцев после релиза, то современные игры благодаря DLC монетизируются еще пару лет. Часть программистов остаются на проекте саппортить DLC.

Реально ли сделать игру в одиночку?

Да, есть очень много таких примеров. Как правило, для этого используют движок Unity или Unreal Engine. Просто находишь туториал («как сделать игру на Unity»), сидишь и делаешь: прорисовываешь базовые версии, механики, контент. Даже уметь рисовать не обязательно — есть куча платных и бесплатных ассетов (набор готовых программных моделей — прим. ред.). Останется добавить игре индивидуальности.

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

Объясни простыми словами, что такое движки и как они работают?

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

По большому счету — что нам нужно, чтобы сделать игру? Показать какой-то мир, персонажа и добавить возможность управлять этим персонажем. Это можно сделать в любом движке в базовой версии. Современные движки, конечно, сильно круче и сложнее. В Unreal Engine 5, например, можно загружать кинематографические ассеты — делать практически кино.

Одна из самых простых и понятных платформ для создания игр — Roblox. Она рассчитана на детей 8–14 лет, но новичкам в геймдеве вполне подойдет. Чисто поклацать и разобраться, что к чему, поставить персонажей, посмотреть, что они будут делать. А потом уже можно перейти на что-то посложнее, вроде Unity.

Можно ли по графике игры определить, на каком движке ее создали?

Если стандартные настройки графики и освещения сильно не меняли, можно догадаться. Но если в компании есть хороший technical artist, который настраивает вижуал, то две игры, сделанные на одном движке, будут выглядеть совершенно по-разному.

Как можно сделать графику в игре круче? Расскажи на примере своего текущего проекта — ZibraAI.

Мы разрабатываем технологию, которая позволяет делать воду максимально реалистичной. Обычно в играх симулируют только водную поверхность, а мы симулируем воду по партиклам — системам частиц. Благодаря этому она реалистично взаимодействует со сложными объектами и может принимать полноценное участие в механике игры. В роли архиватора формы этих сложных объектов мы используем ИИ.

Чтобы настроить взаимодействие воды, скажем, с лодкой, художнику не нужно эту лодку настраивать. С нашим плагином он просто нажимает одну кнопочку — и добавляет в воду заархивированную форму этой лодки как коллайдер (оболочка, привязанная к объекту, для расчета столкновений с другими объектами — прим. ред.).

Еще мы работаем над технологиями, которые позволяют ускорить процесс рендеринга и генерировать 3D-контент. Сейчас это супергорячая тема — почти все крупные компании что-то разрабатывают в этом направлении. Все потому, что большинство средств на разработку уходит именно на создание контента.

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

Как фанаты создают модификации (моды) для игр? Разработчиков это не оскорбляет?

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

По сути, создание мода — это просто подмена моделей. Человек распаковывает архив с данными и меняет модели, текстуры, шейдеры. Так можно изменить внешний вид игры по-своему.

Чтобы моды в игре работали стабильно, нужны дополнительные усилия со стороны разработчиков. Во-первых, нужно сделать инструмент для их создания. В играх вроде Skyrim или GTA, как правило, есть такой мини-редактор. Во-вторых, сам движок должен поддерживать возможность вносить в игры изменения извне.

Какой самый бесячий вопрос задают тебе в связи с профессией?

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

Даже когда ты работаешь с билдом (версия сборки — прим. ред.) и ничего не мешает тебе запустить и пройти игру — на это просто нет времени, у тебя другие задачи. Сколько я работал над Assassin's Creed — никогда не играл в нее до выхода.

Что нужно знать и уметь, чтобы стартовать в профессии?

Для человека без опыта в программировании вариант только один — пойти на тестировщика. Это поможет за 1–2 года сформировать полноценную картину того, как устроен геймдев, и понять, надо оно ему или нет. А дальше уже можно смотреть, какое направление ближе.

Если знаешь C#, C++ (основные языки, которые используются в геймдеве), можно сразу пойти программистом. Начать с Generalist Programmer — этот программист работает над задачами, для которых не нужна специфическая квалификация вроде 3D. Поработать, посмотреть, как устроены игровые движки, — это очень ценный программистский опыт.

И в любом случае очень важен английский. Когда меня спрашивают, какой язык программирования учить, я отвечаю: «Английский, а там на месте разберемся».

Как попасть в крутую геймдев-компанию? Расскажи про свой опыт с Ubisoft.

Я приходил в Ubisoft в 2014 году — давненько. Конечно, с тех пор у них поменялись и тестовые задания, и все остальное. Но требования везде примерно одинаковые. В первую очередь оценивают программистские скилы (стандартный набор вопросов по алгоритмам, структурам данных, С++) и мотивацию. Это очень важно.

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

Большим плюсом будут pet-проекты — это сразу +100 очков на входе в любую компанию, не только геймдев. Если человек что-то делал руками и понимает, как что работает, это сразу видно. Это избавляет от кучи дополнительных вопросов.

Поделиться материалом