«Для ушей нельзя сделать раздельный режим»: как работает технология разделения аудио для split-screen

На примере Unreal Engine 4.

Ведущий аудио-программист Epic Games Аарон Маклиран на сайте движка UE4 рассказал, как устроена технология раздельного звука для тех, кто играет в режиме split-screen. Аарон взялся за этот текст после релиза функции для Fortnite — оказалось, что многие люди неправильно понимают, как она устроена, поэтому автор решил внести ясность и подробно описал её принципы работы. Мы выбрали из текста главное.

На самом деле добавление режима split-screen имеет некоторые подводные камни. Из-за нескольких экранов значительно увеличивается нагрузка на каждую подсистему игрового движка. Самое очевидное — возрастает количество объектов, которые нужно визуализировать. А со звуком всё становится ещё интереснее.

[Большинство людей считает], что аудио для каждого экрана должно включать все звуки, которые слышит игрок. Действительно, это имеет смысл: если пистолет стреляет рядом с игроком №1, то выстрел должен прозвучать рядом с игроком №1. Но с точки зрения игрока №2, находящегося вдали, это должно звучать так, словно источник звука находится далеко! В конце концов, для ушей нельзя сделать раздельный режим. Мы должны слышать всё аудио для обоих игроков, верно? Нет.

Аарон Маклиран, ведущий аудио-программист Epic Games

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

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

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

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

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

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

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

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

4343
16 комментариев

Ещё бы этот сплит скрин увидеть в новых игорях, джва года жду.

9
Ответить

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

10
Ответить

в гирс 5 есть

3
Ответить

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

3
Ответить

А в каких современных играх есть сплит скрин? В голову приходит только Gran Turismo, в которой он вообще не очень

Ответить

В рокет лиг ещё, в дивинити, кажется в бордерлэндс... Мало где, к сожалению

5
Ответить

Gears 5 ещё

4
Ответить