Геймдев
#статьи

Разбор деталей системы дыхания в The Last of Us Part 2

Рассказываем, как много усилий опытная студия Naughty Dog потратила на создание одной едва заметной детали.

Скриншот: игра The Last of Us Part 2 / Naughty Dog

The Last of Us Part 2 — одна из самых противоречивых игр последних лет. Многие фанаты считают её одним из лучших эксклюзивов PS4, а кто-то говорит, что это одна из лучших игр во всей индустрии в целом. В то же время есть и те, кто не смог проникнуться центральными персонажами и остался недоволен спорными сюжетными перипетиями.

Впрочем, даже самые ярые противники второй части The Last of Us отмечают безупречное техническое состояние игры, а также беспрецедентное внимание к деталям со стороны студии Naughty Dog. И одно из самых явных доказательств подобного внимания — проработанная система дыхания. Тональность вздохов и их частота зависят от контекста. Когда Элли слышит щелкуна, она начинает нервно дышать, а пожилой Джоэл выдыхается после нескольких секунд бега.

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

В этой статье редакция «Геймдев» Skillbox Media пересказывает ключевые моменты выступления и объясняет, как студия «оживила» персонажей The Last of Us Part 2 при помощи правдоподобного дыхания.

Подписывайтесь на наш телеграм-канал «Чекпоинт». Это уютное место, в котором мы рассказываем об играх и о том, как они создаются, а также делимся полезными советами разработчиков и пишем о важных обновлениях популярного софта. Комментарии открыты: вы можете предложить идею для нового текста или просто обсудить всё, что связано с геймдевом.

Лекция разработчиков на GDC, информация из которой легла в основу этой статьи

В тексте есть незначительные сюжетные спойлеры к The Last of Us Part 2.

Кратко о спикерах

Бо Энтони Хименес

Старший саунд-дизайнер в PlayStation Studios

Начал карьеру в игровой индустрии в 2014 году — с должности саунд-дизайнера в студии Wabi Sabi Sound, в составе которой работал над звуком в платформере Ori and the Blind Forest и головоломке The Witness. Затем перешёл в Bungie, где в той же должности саунд-дизайнера работал над Destiny: Rise of Iron, Destiny: The Taken King и Destiny 2.

С 2017 по 2021 год работал в студии Naughty Dog, где добавил к своему портфолио Uncharted: The Lost Legacy и The Last of Us Part 2. После этого присоединился к PlayStation Studios, которая работает с разными студиями Sony и помогает им с разработкой игр. Так, Бо Энтони Хименес сотрудничал в роли саунд-дизайнера с создателями Marvel’s Spider-Man 2 и God of War: Ragnarok.

Джесси Джеймс Гарсия

Старший саунд-дизайнер в Naughty Dog

Начал карьеру в игровой индустрии с работы в рекламных агентствах в качестве саунд-дизайнера, а затем работал с Naughty Dog над Uncharted 4: Thief’s End в составе студии-аутсорсера. В 2018 году присоединился к Naughty Dog в качестве штатного сотрудника.

За пять лет в составе команды Джесси Джеймс Гарсия успел поработать как саунд-дизайнер сперва над The Last of Us Part 2, а затем и над The Last of Us Part 1.

Игра мускулами

Бо Энтони Хименес признаётся, что он и его коллеги с самого начала хотели сделать что-то впечатляющее. Ещё на этапе препродакшена разные отделы Naughty Dog показывали наработки интересных новых технологий. Было ясно, что у студии намечается «технологический монстр», как это называет сам Хименес. Тогда в отделе саунд-дизайна поняли, что нельзя отставать от коллег: звук в The Last of Us Part 2 должен быть существенно лучше, чем в оригинальной игре.

Команда сразу обратила внимание на дыхание персонажей. У этого были как творческие причины, так и технические. Как указывает Джесси Джеймс Гарсия, звук в играх Naughty Dog всегда должен помогать истории. The Last of Us — очень приземлённая и реалистичная игра, где много внимания уделяется эмоциям героев. Правдоподобное дыхание персонажей может подчеркнуть как напряжённые, так и спокойные эпизоды. Правильный вздох сделает акцент на состоянии героя, и история станет более иммерсивной.

Скриншот: игра The Last of Us Part 2 / Naughty Dog

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

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

Команде саунд-дизайнеров предстояло придумать более универсальное модульное решение, которое позволило бы воспроизводить звуки в любой момент.

Ропот

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

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

Сердцебиение

Чтобы придать этому механизму разнообразие и сделать героев живее, как дизайнеры планировали изначально, ропот должен указывать на актуальное состояние героев. Для этого его привязали к сердцебиению. Так разработчики обозначили переменную, которая отражает эмоциональность персонажа. Она имеет значения от 0 до 1 и меняется в зависимости от ситуации. Например, во время спокойной прогулки игровое сердцебиение принимает значение 0, а во время боя возрастает до 0,7.

Разработчики выделяют три основных состояния игрока: спокойствие (значения от 0 до 0,3), стелс (значения от 0,4 до 0,6) и бой (значения от 0,7 до 1). Каждое из них может иметь две вариации: обычную и интенсивную. Вторая активируется, когда персонаж начинает бежать. Энтони Хименес отмечает, что на скриншоте — упрощённая схема, и в самой игре подобных состояний больше
Лекция разработчиков на GDC / YouTube

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

Технологии ропота и сердцебиения впоследствии перенесли и в ремейк первой части, The Last of Us Part 1
Скриншот: игра The Last of Us Part 1 / Naughty Dog

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

Обратите внимание на дебаг-значения в правой части экрана после фразы «Rate/Target». Левое число — актуальное сердцебиение, правое — целевое. Как только Элли остановилась, целевой показатель мгновенно упал до 0,7, но реальное сердцебиение опускалось до этого показателя около 15 секунд
Лекция разработчиков на GDC / YouTube

Финальный штрих звуковой системы — добавление дельты для каждого персонажа. Это ещё одна переменная, которая отвечает за то, насколько быстро актуальное сердцебиение достигает целевого показателя. Эта деталь помогает указать на специфическую разницу между разными людьми. Так, Джоэл, человек в возрасте за 50 лет, будет быстро уставать, а на восстановление дыхания ему потребуется больше времени. Элли же, наоборот, будучи молодой активной девушкой, приходит в себя быстро.

Хименес шутит, что Джоэлу не помешало бы чаще заниматься кардиотренировками
Лекция разработчиков на GDC / YouTube

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

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

Техническая реализация

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

Разработчики не раскрывают всех деталей своего ПО, но вкратце описывают основной принцип. Scream представляет собой набор условных операторов, которые быстро переносят код к выполнению конкретного блока. Например: «Если персонаж ранен, отправляйся выполнять функцию номер X». Иными словами, это удобный инструмент оптимизации: код быстро определяет нужное состояние персонажа и выбирает случайный подходящий звуковой семпл.

Лекция разработчиков на GDC / YouTube

Второй интересный инструмент Naughty Dog — это Continuous Controller Screen. Это интерфейс, который визуализирует постепенное изменение переменных ропота и сердцебиения, а также позволяет настраивать плавность их изменений. То есть дизайнеры могут создавать разнообразные кривые Безье для получения нужного эффекта.

Лекция разработчиков на GDC / YouTube

Влияние на повествование

Саунд-дизайнеры Naughty Dog считают, что звук должен в первую очередь дополнять повествование игры. Поэтому все придуманные командой технологии нужно было правильно встроить в The Last of Us Part 2. В некоторых ситуациях ропот уместно было насильно выключить, ведь «иногда молчание говорит лучше любых слов».

Лекция разработчиков на GDC / YouTube

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

Лекция разработчиков на GDC / YouTube

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

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

Другой яркий пример режиссуры звуков: в момент атаки топляка сердцебиение героев резко поднимается до максимума
Лекция разработчиков на GDC / YouTube

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

Лекция разработчиков на GDC / YouTube

Были и случаи, когда дизайнеры перехватывали алгоритм сердцебиения, чтобы избежать нелепых ситуаций. В обеих частях The Last of Us есть эпизоды, где Элли стреляет из игрушечного оружия. Технически героиня в этот момент находится в агрессивном боевом состоянии. Однако истошные всхлипы и громкое дыхание в эти моменты были бы неуместны. Поэтому разработчики нарочно ограничили сердцебиение Элли.

Сотрудничество с аниматорами

Для достижения лучшего эффекта правдоподобные звуки нужно синхронизировать с визуалом. В первой The Last of Us реплики были привязаны к анимациям. Примечательно, что в The Last of Us Part 2 случилась обратная ситуация. Команде аниматоров очень понравилась работа саунд-дизайнеров, поэтому они решили совместить усилия. Отделу звука предоставили готовые анимации дыхания героев игры, чтобы синхронизировать их с ропотом.

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

Лекция разработчиков на GDC / YouTube

В результате ропот диктует, какие именно анимации можно использовать. Более того, во многих случаях длительность отдельных вздохов подгоняется под длину звукового семпла. Это также делается в реальном времени.

Боязнь высоты Эбби также подчёркивается при помощи звуков и анимаций. Обратите внимание на движения плечами. Они, как и лицевые анимации, привязаны к ропоту
Лекция разработчиков на GDC / YouTube

***

The Last of Us Part 2 вызвала неоднозначную реакцию даже у некоторых преданных фанатов первой части. Однако технические достижения сиквела неоспоримы. Naughty Dog скрупулёзно проработала даже самые незначительные детали и сделала, пожалуй, свою самую иммерсивную игру.

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

Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована