Первые впечатления от работы со звуком на Unity.

Вообще я скорее dj, музыкант и стример, но уж никак не программист. Изучать Unity меня подтолкнула игра Escape From Tarkov. В ней я провёл очень много времени и замечал, что со звуком там существуют определённые сложности. Причём, сами сэмплы записаны круто, а вот звуковой движок имеет свою специфику и не всегда звучит так, как того ожидаешь. Если сравнивать с другими современными шутерами, то в Таркове, пожалуй, самый реалистичный звук. Хотя, в SQUAD разработчики тоже очень хорошо сделали звук и эффекты — к ним у меня вопросов никогда не было.

Про особенности Таркова я готов говорить очень долго, но сейчас хочу обозначить несколько основных проблем со звуком на февраль 2022:

Баг с occlusion — самое большое зло. Выражается в резком и полном исчезновении звука за преградами (стены и пол) в некоторых случаях.

Применение эффекта приглушения sound occlusion с задержкой. Атака звука успевает пройти как бы напрямую через препятствия.

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

Слабая реализация ambient. Это про напрягающий однообразный шум ветра, намертво привязанный к голове. А меня привлекает реализация через ambisonic, как в Grounded, или многослойный локальный ambient как в DayZ.

Неточности механики активных наушников. Хотя сами наушники — очень крутая фича!

Почти полное отсутствие реверберации и других эффектов пространства на самом движке.

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

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

«Так что же, в итоге, побудило тебя заняться Unity?» — спросите вы. — Поворотным моментом стало добавление самолёта с механикой airdrop. Сама механика очень крутая, я очень рад, что она, наконец, появилась и внесла разнообразие, вдохнула новую жизнь в локации. Но когда я впервые услышал звук самолёта ИЛ-76МД в Таркове — я был в полном шоке.

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

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

Сначала я думал, что это такая шутка, или баг. Или что это placeholder, который скоро исправят. Думал, что разработчики в какой-то момент определят ошибку и последует справедливые дисциплинарные меры к тому, кто прикручивал эти самые звуки. Но время шло, а самолёт так и продолжал уничтожать уши тысяч Тарковских игроков. На данный момент, со своей стороны, я сделал уже всё возможное, чтобы передать разработчикам своё мнение насчёт этого звука самолёта. Я писал, говорил и даже снимал отдельные небольшие видео с примером того, как мог бы звучать loop самолёта, если к нему применять нужные эффекты. Но, как я понял, это не в приоритете.

Чтобы вы понимали, у меня нет цели как-то дискредитировать BattlestateGames и её специалистов. Напротив, давно люблю Тарков и хочу, чтобы игра стала ещё круче и популярнее. Как раз поэтому у меня не укладывается в голове, как могут гениальные ходы уживаться с таким откровенным браком. Есть многие вещи, которые я бы хотел фиксануть в игре — и этот звук самолёта стал той яркой искрой, которая, наконец, знатно подожгла мой «звукорежиссёрский» пукан.

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

Конечно, процесс этот не был быстрым. Я много тупил и туго соображал, как, например, тут:

Хотел добавить plane. Всё-таки, там имелась в виду именно равнина, а не самолёт. Зато я научился добавлять «равнины».

Думал прикрутить к объекту движение, чтобы самолёт уже летал над моей головой со звуком: вроде нужно небольшой скрипт добавить в несколько строчек. Ребята предлагают установить для этого Visual Studio на 9 GB минимум. Да я даже на некоторые VSTi жалею столько места выделять! Догадался прикрутить через Notepad++. Люблю его.

Я уже и забыл как это: открывать по 20 вкладок в браузере, чтобы найти нужные ответы.

Получил свои первые ошибки reference.exception, и так далее.

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

Удалось сделать так, чтобы самолёт реально начал летать по кругу. Понятное дело, в начале скорость и поведение самолёта были очень кринжовыми, но с этим я довольно быстро справился.

Самый первый код. Конечно, взят с просторов интернета.
Самый первый код. Конечно, взят с просторов интернета.

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

Первый «самолёт». Масштаб 1:1 Лётные испытания проходит без покраски )
Первый «самолёт». Масштаб 1:1 Лётные испытания проходит без покраски )

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

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

Отдельную благодарность хочется сказать тому человеку, который делал озвучку самолёта в Таркове. Если бы не этот таинственный незнакомец, то я бы никогда не открыл для себя целый новый мир виртуального звука в 3D. А этот мир мне реально очень понравился. СПАСИБО! <3

#Unity #звук #audio #SteamAudio #EscapeFromTarkov

453 views·1 share