Как работает система дыхания в The Last of Us Part II

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

Он отдельно отметил, что при сотрудничестве с программистами и художниками на свет может появиться «истинное волшебство».

Есть две фундаментальные концепции для понимания этой системой: мурмурация и частота сердцебиения.

Мурмурация — это зацикленный звук персонажа с наименьшим приоритетом. Поэтому любой срабатывающий звук (рукопашного боя, анимации, вызов из скрипта/кода), прерывает его. После проигрывания этого звука, цикл воспроизводится с того места, где остановился, придавая дыханию плавность.

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

Частота сердечных сокращений — это значение в диапозоне [0,0;1,0]. Оно инкапсулирует то, какой будет частота сердечных сокращений персонажа в конкретном контексте.

Это «сердцебиение» существует для каждого персонажа, напарника, заражённого, собаки и человеческого NPC в игре.

Для измерения частоты сердечных сокращений существуют состояния, которые назначаются числовым значениям, называемым состояниями сердечного ритма. Эти состояния могут основываться на осведомлённости AI (например, Unaware), типе атаки противника (например, Bloater Charge) или на любом другом, требующем цикличного решения.

Программная часть позволила разделить столько состояний, сколько нужно для выполнения работы. Например, у щелкунов есть состояния, которые включают Frenzy и Unaware, которые имеют целевой сердечный ритм 1,0 и 0,7, соответственно.

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

Элли

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

Например, если Элли бежит, испытывая напряжение от обстановки, её состояние сердечного ритма является «эмбиент-высоким». Когда перестаёте бежать, состояние становится «эмбиент-низким».

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

Возможности становятся бесконечными. К примеру, можно:

  1. Проигрывать разные звуки в зависимости от того, как долго вы бегаете, в любом напряжении.
  2. Проигрывать разные вариации истощённого дыхания после того, как вы бежите определённое время.

Если Элли начнёт бежать, когда враг её увидит, вы услышите, как дыхание становятся всё более лихорадочными и утомлёнными. Каждое напряжение имеет 3 этапа, различающихся по интенсивности.

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

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

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

Пульс также можно завязать на сюжетные моменты. Дизайнер может поднять частоту сердечных сокращений персонажа, чтобы услышать затем «спад» в скримерах.

В этом видео намеренно сделан скачок сердечного ритма для Элли, когда она проходит через отвертсие, чтобы продемонстрировать страх. Это прекрасно сочетается с игровым диалогом, который срабатывает после того, как Элли схватила трубу!

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

Одна заслуживающая внимания особенность — это стелс-дыхание с открытым/закрытым ртом, великолепная идея Майка Хоурихана (@ m1keadelic). Если противник находится на определённом расстоянии и в поле зрения игрока, Элли перейдет к дыханию с закрытым ртом.

Это создаёт напряжение, которое игрок может даже не уловить, но тем не менее это влияет на его восприятие.

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

Дыхания при ранениях также интегрированы в систему. Флаг устанавливается, когда в персонажа попадает стрелка или если у игрока низкое здоровье.

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