Разработчик Max Born, автор канала JustPlay, взял за основу бесплатный Acoustics Lite. Оригинальная система оказалась слишком тяжёлой для WebGL, особенно на мобильных устройствах, а часть используемых ей аудиоэффектов в браузере вообще не работала.
Сама система нужна для реалистичного поведения звука за препятствиями. Например, если за стеной стреляет противник, без акустики вы будете слышать выстрел почти так же, как если бы он находился рядом с вами. С акустикой игра понимает, что между вами стена, и делает звук приглушённым, будто он действительно доносится из соседней комнаты.
В оригинальном Acoustics Lite для этого постоянно выпускалось множество невидимых лучей. Они проверяли наличие препятствий между игроком и источником звука, пытались определить, может ли звук их обогнуть, и на основе этого рассчитывали степень приглушения. Причём все эти проверки выполнялись каждый кадр, пока компонент был активен.
В своей версии он свёл систему к одному лучу, который в большинстве случаев запускается всего один раз непосредственно перед воспроизведением звука. Есть стена или другое препятствие, включается приглушённая версия. Нет препятствия, воспроизводится обычная. Для длинных звуков можно периодически повторять проверку через заданные промежутки времени, чтобы состояние менялось прямо во время воспроизведения.
Была и другая проблема: оригинальный ассет использовал аудиофильтры для приглушения звука в реальном времени, но этот способ не работает в WebGL. Поэтому разработчик сделал отдельный инструмент, который автоматически создаёт заранее приглушённые версии аудиофайлов. Во время игры остаётся только выбрать нужную версию.
Такой подход немного увеличивает размер билда и добавляет работы при разработке, зато убирает тяжёлые постоянные расчёты и позволяет использовать окклюзию звука в WebGL. Сам автор пишет, что новая реализация практически не нагружает систему.
Скачать переделанную версию ассета можно тут.
Baxx Studio. Подписаться.