Катсцены и синематики в ААА-играх

С вами на связи как и раньше, я, гейм/синематик дизайнер, прошедший несколько крупных ААА проектов, в том числе ваш любимый Cyberpunk 2077

Сегодня поговорим про обещанную тему: катсцены и синематики в АА+ играх.

Чем кат-сцена отличается от синематика в играх, и какие виды синематиков бывают?

Геймдев - это процесс на 99% состоящий из решения и создания проблем, и на 1% состоящий из творческого безудержного креатива. Поэтому, большая часть поста будет про проблемы разработки. Я пишу пост для широкой аудитории, поэтому постараюсь писать как можно проще. Итак:

Катсценой (cutscene), обычно называется игровая сцена которая 1) сделана на движке игры (в особенности это касается real-time рендера) и 2) "врезается" в геймплей (а значит, разработка катсцены требует от синематик-дизайнера непосредственного взаимодействия с геймплеем игры, тригеррами и пр.) То есть, если вкратце - это сцена, использующая ассеты и realtime рендер игры.

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

Основные инструменты синематик-дизайнера работающего над кат-сценами

Основной инструментарий синематик дизайнера катсцен, это:

  • инструменты для создания превиза
  • софт для работы с видео
  • таймлайн в движке, и сборка / монтаж готовых анимаций
  • visual scripting (блюпринты или их аналог). Системы в целом похожие во всех пропиетарных движках, и по сутя, представляют из себя большую, но заточенную под конкретный проект систему вроде UE Blueprints или Unity Visual Scripting.
  • работа с документацией (подготовка ТЗ для сьемки motion-capture)
  • Работа на площадке с motion-capture актерами или performance capture (запись движения и голоса одновременно)
  • Иногда - супервайзинг VO (озвучки)
  • дебаг-инструменты для проигрывания катсцен и отслеживания багов

Почему кат-сцены всегда будут выглядеть проще синематиков?

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

Пример классической катсцены

Так же, катсцены как правило, используют анимацию, и озвучку, воспроизводимую в реальном времени (с привязкой к fps).

И если звук и анимации более-менее нетребовательны к производительности, то освещение и количество обьектов, единовременно находящихся в поле зрения камеры, будут всегда создавать ограничения по производительности.

Но гораздо существенне для производительности любого движка - это быстрая смена ракурсов.

Почему смена ракурсов критична для производительности? Все дело в том, что в движках используется стриминг геометрии, освещения и текстур. Вы наверняка могли заметить значительные просадки fps при повороте камеры например на город, и резкое повышение fps при взгляде куда-нибудь на пустое пространство. Во время стриминга геометрия и текстуры выгружаются из памяти, и если при повороте камеры скачок fps может быть не так заметен, то при смене камеры - LODы статичных мешей будут быстро подгружаться в память, спрайты превращаться в 3D модели, сжатые текстуры заменяться на high-resolution, а анимации будут скакать из-за перехода от режима компрессии (скажем 8 кадров в секунду ) к режиму realtime.

Допустим, у вас есть секвенция из двух кадров, в котором первый (А) - это вид сверху на едущую машину, а второй (Б) - кадр в салоне автомобиля.

Секвенция (sequence)
Это последовательность шотов (кадров)

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

Шот (shot)
это общепринятое название одного цельного (неразрезного) кадроплана, один ракурс

Как режут бюджеты кат-сцен

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

Бюджет геометрии
Это ограничение целевой платформы на количество полигонов и "веса" текстур.

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

Уииииии!
Уииииии!

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

Работая над Phantom Liberty, например во время установки засады на Max-Tac, мне приходилось учитывать больше шести возможных вариантов старта сцены игроком. Ведь он мог зайти в сцену с разных дверей, забраться по строительным лесам, запрыгнуть через... нелинейность, мать её.

Вариантов начала сцены - более шести, и все учитывают откуда входит игрок. 
Вариантов начала сцены - более шести, и все учитывают откуда входит игрок. 

Что еще сложнее - это сцены, где игрок может отойти, перемещаться, пойти полутать коробки, и вернуться, и где игрок должен следовать за другим персонажем (или наоборот).

Сцена с Макс-Так - это комбо из всех возможных комбинаций этих вариантов. Тут и множество точек входа, и небольшая комната в которой сцена в целом, рассчитана на один ракурс, но игрок может начать бегать вокруг, или выйти наружу, и Рид, который водит игрока за собой...

Та самая сцена. 
Кейшот. 
Кейшот. 

Синематик-дизайнеру как и левел артисту, в данном случае, пришлось провести много времени, создавая "направляющее" игрока пространство, и сцены, которые естестыенным образом подводили бы игрока к актёрам.

И тут возникает вторая проблема катсцен - интеграция в геймплей

Обычный инструмент ААА синематик-дизайнера, это в 90% случаев - те же блюпринты (visual scripting), как и у геймплей дизайнеров. Только фокус в меньшей степени на переменные и логику, а инструментарий использует разные инегрированные тулкиты - например, редактор диалогов, а так же анимации.

Пример Visual Scripting на Unity. Ноды, ноды, и еще раз ноды. В большой сцене их количество может достигать сотен. 
Пример Visual Scripting на Unity. Ноды, ноды, и еще раз ноды. В большой сцене их количество может достигать сотен. 

В финальной сцене DLC Phantom Liberty - более 1000 отдельных нодов!

И сниться нам не рокот космодрома, а нодов неудобная лапша
И сниться нам не рокот космодрома, а нодов неудобная лапша

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

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

И это совершенно нормально - небольшие побочные openworld квесты удесятеряли бы бюджет игры, если бы на них выделяли все те же ресурсы, как и на 'golden path'.

Неплохой пример одной из таких сцен - побочное задание (gig) с Эль-Капитаном. Работая над этой цепочкой квестов, я использовал в основном, базовые анимации и немного анимаций, играющихся на разные части тела отдельно.

В этой сцене нет ни одной заказной анимации, только набор стандартных + немного магии. 

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

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

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

Ну или так. В данном случае, где-то в логике отсутствала проверка на то жив персонаж или нет. 

Катсцена должна учитывать:

  • Время дня/ночи
  • Анимацию персонажей в момент старта сцены
  • Наличие оружия в руках игрока
  • Состояние мира

Возможных проблем могут быть десятки - ведь катсцена должна бесшовно соединяться с анимацией игрока, держащего в руках оружие?

А что, если у него в руках не пистолет, а пулемёт? Что если мокап-анимация выбивания двери от первого лица, и пулемет обязательно"провалится" сквозь текстуры? А что если у него закончились патроны, и он держит нож? С добрым словом и пистолетом можно добиться гораздо большего, чем с добрым словом и ножом...

Ублюдки хреновы, я шел на перестрелку! 
Ублюдки хреновы, я шел на перестрелку! 

И тут возникает главная проблема кат-сцен - анимации.

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

Когда-то давно, в далекой-далекой галактике, когда не было лицевой анимации...

Но как это зачастую бывает, где-то в середине проекта, один департамент начинает обгонять другой, и становится не до смеха. Приводит это к тому, что motion-capture сделанный под один сценарий, нужно переделывать с ноля, потому что где-то там, наверху, плейтесты показали что нужно изменить дизайн всей локации. И в вашей собранной сцене персонажи начинают ходить сквозь стены и столы. А драгоценный по стоимости motion capture уже снят, и возможности впихнуть новые сцены в бюджет нет.

И хорошо, если ваш мокап-артист это няшная кошкожена. Тогда и пережстимировать бюджет не грех... 

С диалоговыми сценами всё еще сложнее - lipsync требует разного времени для каждого из N языков локализации. А значит, четырехсекундный шот на английском, превращается в 9 секунд на русском, и в 8 секунд например, на японском.

А ту самую злосчастную дверь, персонаж открывает всего десять секунд. Значит все персонажи в сцене три секунды неистово айдлят в Т-позе? Не подходит, давайте это чинить.

Казалось бы, анимация не требует больших ресурсов, но что такое CG-скелетная анимация? Это сотни т.н "ключей", описывающих положение, поворот и размер десятков костей скелета в пространстве каждый кадр.

Палка-палка, огуречик... Желтые точки это и есть "ключи" описывающие XYZ положение в пространстве каждой кости или обьекта. 
Палка-палка, огуречик... Желтые точки это и есть "ключи" описывающие XYZ положение в пространстве каждой кости или обьекта. 

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

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

Самый простой - это тело с ногами + руки. Почему отдельно руки, потому что "естественная", комфортная камера для игрока обычно располагается где-то в грудной клетке модели.

В рот мне ноги. То есть, руки. 
В рот мне ноги. То есть, руки. 

Ноги персонажа, часто используют систему IK (инверсная кинематика, сгибающая конечность например при наступании на ступеньку лестницы)

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

Вот только скелет игрока и скелет любого NPC может быть разным - от количества костей, до их названий, и "веса" в анимации, поэтому поднятая рука у одного персонажа у другого вызовет несовместимые с NPCшной жизнью травмы конечностей.

В случае с "говорящими" персонажами, лицо - это отдельная система, играющая свои анимации, синхронизирующаяся с речью (lipsync), а глаза имеют еще и свою, отдельную надстройку систем.

Разница motion и performance capture очень заметна там, где лицо актера накладывается на лицо игрового персонажа, часто отличающееся по физиологическим характеристикам. Поэтому в более дорогих проектах используют performance capture, где в роли актера мокапа играет актер, с лица которого методом сканирования создана 3D модель персонажа игры.

Дружелюбная улыбка - залог взаимопонимания.
Дружелюбная улыбка - залог взаимопонимания.

Поразмыслив, мы пришли к решению отказаться от катсцен, и обойтись только синематиками. И это приводит нас к следующей проблеме:

Кат-сцены - это дорого, а синематики - очень дорого.

Как вы помните, синематики - это те сцены, которые делаются по pre-render пайплайну, иногда на стороннем софте, или ресурсами вообще другой студии.

Pre-rendered pipeline
Это пайплайн, в котором все шоты сначала рендерятся (на более мощном железе)
Пример performace capture c приглашением актеров и/или звезд
Трейлер, собранный из разных синематиков, сделанных аутсорс-студией

Такой пайплайн, обычно гораздо ближе к Full-CG пайплайну, ведь сложность синематика никак не влияет на быстройдействие.

Часто, кстати, синематики заменяют канонические Fallout/TES экраны загрузки, а под капотом в это время идет компиляция или загрузка уровня и других данных.

Обычный инструментарий синематик артиста, работающего именно с синематиками, или трейлерами, отличается от катсцен-дизайнера, и включает в себя следующие инструменты:

  • инструменты для шотвиза/превиза в 2D
  • инструментарий для превиза в 3D (это может быть как и специализированный софт вроде motion builder, так и инструменты движка )
  • софт для VFX эффектов (взрывы, симуляция воды) такой, как Houdini
  • 3D пакеты для анимации, рендера (или снова, движок игры, но рендерящий сцену покадрово в видеофайл)
  • различный софт для монтажа речи и видеоряда, черновой и финальной сборки сцен
  • работа с motion / performance capture на площадке

В целом, как я и говорил, инструментарий синематик-дизайнера с большей мере похож на CGI и пост-продакшн, и в меньшей на работу программиста / геймдизайнера.

Над каждой сценой в ААА+ проектах работает большая команда. Главные ограничения - это:

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

Процесс производства синематиков и катсцен

Любое производство в геймдеве - процесс очень итеративный (финальный продукт проходит десятки итераций и изменения вносятся каждый день)

  • Всё начинается со сценария (как правило чернового). Работа над сценарием может быть как вместе с Narrative / Quest Designers, так и независимо от них.
  • Дальше, по сценарию создаются превизы. Это может быть превиз на стоп-кадрах, с наложенной сгенерированной ИИ озвучкой, а может быть 3D превиз, с черновыми, или символическими анимациями и черновой озвучкой. Как правило их делает сам синематик-дизайнер, но в ААА+ проектах есть отдельные специалисты, которые работают только с превизами. Это может быть как отельный previz-artist, так и previz animator, аниматор умеющий быстро делать много итераций скелетной анимации.
  • Как синематик дизайнер, ты подбираешь ракурсы камеры, работаешь с читабельностью и pacing сцены, придумываешь мизансцены. В таких проектах как Cyberpunk, где сцена может меняться под игрока, ты придумываешь как незаметно "подвести игрока" к наиболее выгодной точке сцены - кейшоту.
  • После этого обычно, делается более-менее финальный драфт, в котором озвучка и порядок кадров, и особенно тайминг сцены ближе всего к будущей финальной сцене. На этом этапе важнее всего взаимодействие с level designers и level artists.
  • Подготовка к мокапу. Здесь 3D сцена экспортируется для мокап-инженеров, драфты записываются в видеофайл, а сцена расписывается в внутристудийном документе, содержащим список всех ассетов, пропсов и например, оружия.
  • Сцена уходит в мокап. Команда мокапа - это инженеры студии motion-capture, актеры motion capture, иногда - приглашенные звезды и супервайзеры из аниматоров. В студии часто присутствует и сам синематик дизайнер (лично или онлайн), но полноценным режиссером он не является.
  • На мокап-сессии есть много ограничений, которые сильно меняют подход к работе по сравнению с кино. Плюс, это жесткое ограничение по времени - как правильно три-пять дублей максимум на одну анимацию.
  • Выбранные дубли со скелетной анимацией уходят в чистку от "шумов" анимации (это происходит например в групповых сценах, когда часть датчиков оказывается закрыта другим актером). Чисткой анимаций занимается команда 3D аниматоров.
  • Когда 3D анимации готовы, аниматор отдает их обратно в работу синематику. Ему из анимаций A-B-C-D нужно создать единую сцену, которая будет укладваться в черновые тайминги.
  • Пользуясь или движковым инструментарием (и visual scripting) или собирая сцену на таймлайне дизайнер совмещает вместе анимации, VFX, звук, речь и анимации камер, которые как правило, анимирует сам. Очень редко, движение камеры так же записывается на сессии motion capture.
  • Часто часть сцены использует базу анимаций проекта, повторно использует анимации с ретаргетом (например, с мужского скелета на женский), паралельно с более дорогостоящим мокап
  • В зависимости от проекта, анимация лица может быть или записана на мокап-сессии, или сделана вручную, иногда только в видео готовых анимаций, которые синематик-дизайнер получает от аниматора, реже - в виде "работы на дом" самому синематик дизайнеру.
  • Финальная сборка и дебаг каждой сцены обычно продолжается и в бета-версии, часто вплоть до финальных дедлайнов или вообще до сертификации игры.

Великолепная игра актеров performance capture - это только часть процесса. 

Таким образом, катсцена или синематик создаются на протяжении всего периода разработки игры

От пре-продакшна до финального полишинга продукта.

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

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

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

На этом всё, я планирую на днях выпустить Q&A пост, с ответами на вопросы, так как мне показалось это будет слишком много для одного поста.

Я какое-то время в отпуске, так что у меня будет время ответить на большинство вопросов, но врядли на все. Самые лучшие вопросы из прошлого поста и из комментариев к этому посту я включу в следующий пост с Q&A
Оскорбляющие личность автора комментарии, особенно мат - будут удаляться, а авторы попадают в чс.
Я не собираю донаты и в целом не получаю никакой выгоды от размещения постов на DTF, кроме интересного общения, поэтому я пишу так, как мне удобно и когда удобно.

390390
88 комментариев
82
Ответить

(с)мутный персонаж какой-то

1
Ответить

Пдф не заслуживает этот пост. Спасибо.

27
Ответить

Хах, да ладно. Меня сегодня вдохновил пост про Орегон на самом деле

11
Ответить
Комментарий удалён модератором

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

11
Ответить

Увидел много неочевидных особенностей, которые нужно держат в уме. Спасибо.

6
Ответить