ГРИА
553 subscribers
116 links
Новостной канал Гильдии Разработчиков Интерактивного Аудио
Официальный сайт - https://griaudio.ru
ВК - https://vk.com/griaudio
Facebook - https://www.facebook.com/griaudio/
Twitter - https://twitter.com/griaudio
Telegram - https://t.me/griaudio
Download Telegram
Денис Злобин, Technical Audio Designer из Ubisoft RedLynx, рассказывает про аналитический фреймворк для аудио-дизайна в видеоиграх. https://griaudio.ru/ludic-narrative-sound
В этот четверг, 25 февраля Ресса Шварцвальд поучаствует в официальном стриме Audiokinetic и расскажет об использовании Wwise в качестве инструмента воспроизведения и управления звуком в реальном времени. Стрим пройдёт в 20:00 по московскому времени. Присоединяйтесь!

https://twitch.tv/audiokinetic
Forwarded from Game Audio Evangelism
Имплементация звуковой системы автоматического оружия в играх.

Всем привет!
Довольно часто возникают вопросы о реализации оружейных аудио систем в играх. Сегодня попробую немного раскрыть эту тему в первую очередь с технической точки зрения, так как доступных материалов по дизайну звуков «пушек» в сети довольно много, и не хотелось бы повторяться только ради увеличения объема статьи.:) Я постараюсь описать способы имплементации наиболее абстрактно, чтобы они были применимы к любому middleware/игровому движку.
Так что присаживайтесь поудобнее, желаю вам приятного и интересного прочтения! Как всегда задавайте вопросы/комментируйте в чате: https://t.me/game_audio_chat



Часть первая: Автомат делает «Трррррррррр».

Если с интеграцией одиночных выстрелов обычно не возникает никаких проблем, то как только необходимо имплементировать «очереди» или же burst-mode (чаще всего это короткие очереди по 3 патрона за раз), то начинаются сложности.
Давайте рассмотрим наиболее часто используемые подходы с их плюсами и минусами.



Полифоническая/монофоническая система.

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

Плюсы:

1. Наиболее простая имплементация как с точки зрения звука, так и с точки зрения кода.
2. Не нужно создавать отдельные наборы звуков для одиночных выстрелов и автоматической стрельбы.
3. Если в процессе разработки было решено поменять скорострельность оружия в разумных пределах, не требуется менять аудио ассеты.
4. Изменение скорострельность оружия не вызывает изменения высоты тона выстрелов.
5. При ограничении полифонии система может использовать небольшое количество голосов и соответственно CPU.

Минусы:

1. Зависимость от фреймрейта. Так как вызов звукового ивента завязан на визуальный эффект/апдейт скрипта, при плавающей частоте кадров/микрофризах мы получаем неконсистентный звук. Это очень сильно влияет на геймплей и ощущение от стрельбы.
2. Данный метод не подходит для реализации оружия с высокой скорострельностью и воссоздания реалистичного значения RPM, так как частота выстрелов всегда будет так или иначе зависеть от «сетки» фреймрейта.
3. При сильных ограничениях полифонии, автоматическая стрельба начинает звучать очень отрывисто и плоско.
4. При многослойных системах полифония умножается на количество слоев и может занимать 6-8 голосов/каналов на постоянной основе. Что ведёт к возрастанию нагрузки на CPU.
Forwarded from Game Audio Evangelism
Система на основе зацикленных звуков:

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

Плюсы:

1. Максимальная простота имплементации.
2. Независимость от фреймрейта, так как игровая механика присылает только два события - запуск ивента в начале стрельбы и остановка в конце, а ритм создаётся непосредственно внутри лупа.
3. Наиболее дешевый с точки зрения CPU метод, так как в один момент времени проигрывается только один звук.
4. Есть возможность получить очень аутентичный звук оружия, с натурально плавающей скорострельностью, различными естественными призвуками механики и т.п.
5. Отличное решение для пушек со скорострельностью > 2000 выстрелов в минуту: различных вариаций Gatling gun/пулеметов/футуристических smg.

Минусы:

1. Требуются отдельные наборы звуков для одиночных выстрелов и автоматической стрельбы. Соответственно увеличивается время на производство ассетов. Это не совсем минус, сколько особенность, которую нужно учитывать, особенно в условиях сжатых сроков.
2. При любом малейшем изменении скорострельность оружия в игре необходимо переделывать луп, так как синхронность пропадет. Так как в процессе разработки скорострельность постоянно настраивается для лучшего «ганплея» и общего баланса игры, заниматься пересборкой лупов придётся постоянно. Без пересборки изменение скорости приведёт к понижению/повышению тона, что звучит странно и нереалистично.
3. При одиночных выстрелах звук становится невыразительным, так как реалистичный луп уже содержит послезвучие от предыдущих выстрелов, из-за чего смазывается атака и «punch». Это может быть крайне критично для соревновательных игр где решает время реакции и отклик от действия крайне важен. В некоторых случаях, чтобы этого избежать делают комбинированную систему, где первые 2 выстрела воспроизводятся по принципу Полифонической системы, после чего включается зацикленной луп. Однако стоит учитывать заранее, что это уже довольно сложная система, которая требует большого количества технической поддержки со стороны программистов и индивидуального тюнинга для каждого отдельного оружия. Более «дешевым» методом можно считать настройку огибающей громкости и фильтров в middleware, таким образом, чтобы на слух немного более ярче и «острее» выделялся первый выстрел.
4. Хороший луп/набор лупов требует скрупулезной подготовки. Если луп будет слишком коротким, то стрельба будет звучать слишком репетативно, если же слишком длинным, то будет требоваться внушительное количество оперативной памяти для его проигрывания. Для борьбы с репетативностью часто применяется техника, при которой оригинальный аудиофайл размечтается маркерами по транзиентам выстрелов и проигрывание каждый раз начинается со случайного выстрела. Этот приём позволяет немного разнообразить звучание, если игрок часто стреляет короткими очередями.
Forwarded from Game Audio Evangelism
Гранулярная система:

Наиболее сложная в реализации, но при этом обладающая самыми богатыми возможностями по настройке система. Требует подготовленных определенным образом исходных файлов и механизма воспроизведения гранул максимально независимым от фреймрейта образом. Система воспроизведения может быть реализована как внутри middleware (без поддержки со стороны кода), так и быть выполнена в виде отдельного плагина (для добавления дополнительных функций и большей оптимизации с точки зрения использования ресурсов).
В качестве исходных файлов может выступать как размеченные маркерами аудиофайлы, содержащие набор начальных выстрелов, несколько вариаций зацикленных лупов и отдельных хвостов, так и предварительно нарезанные индивидуальные «гранулы». Простейшая реализация подобной системы с заранее подготовленными гранулами показана в данном видео от Tom Write: https://youtu.be/-Cw36iIGfns
В качестве системы воспроизведения используются встроенные возможности WWise.

Плюсы:

1. Возможность изменения скорости стрельбы в разумных пределах без изменения высоты тона.
2. Максимальная гибкость с точки зрения управления звуком, так как любые эффекты могут быть применены к отдельным гранулам. К примеру в случае с магазином, заполненным в рандомном порядке обычными боеприпасами в перемешку с трассирующими, для трассирующих можно иметь отдельный «свистящий» звук. Или же если игра в фантастическом сеттинге, то каждая последующая пуля может иметь слышимый огненный, кислотный или замораживающий заряд.
3. Механизм воспроизведения гранул обновляется в отдельном потоке и не зависит от частоты кадров в игре.
4. Система способна покрыть все возможные сценарии стрельбы: одиночные выстрелы, burst-fire, очереди, переменную скорость стрельбы и т.д.
5. В случае с отдельным плагином можно очень сильно оптимизировать использование ресурсов и благодаря софтварному микшированию добиться того, что любое оружие вне зависимости от количества слоев и элементов всегда будет занимать один физический голос/канал в middleware. При этом не придётся заниматься организацией и поддержкой сложной иерархии звуковых контейнеров.

Минусы:

1. Крайне сложная имплементация и по сути разработка отдельной полноценной подсистемы. Что требует серьезного взаимодействия с отделом программистов, большого бюджета, доступных ресурсов и хорошо продуманного дизайна системы как с точки зрения возможностей, так и юзабилити.
2. Помимо дизайна ассетов, требуется дополнительная подготовка исходных файлов, что сказывается на времени производства.
3. Если нет возможности разрабатывать плагин, требуется организация довольно сложной системы звуковых контейнеров в middleware, настройка приоритетов и тюнинг параметров.


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