Какие файлы отвечают за звук в играх
Саунд-продюсер Playrix Роман Федотовский — о том, что нужно знать начинающему звуковому дизайнеру.
Cаунд-дизайн может показаться не самой важной частью игр: хороший звук едва ли может привлечь к игре столько же игроков, сколько хороший арт или сценарий. Тем не менее звук помогает выстроить связь между геймплеем и игроком, погрузить пользователя в игровой мир и задать конкретное эмоциональное состояние.
Саунд-продюсер Playrix Роман Федотовский объяснил, какие типы звуков бывают в играх, как устроен рабочий пайплайн у саунд-дизайнеров и в чём специфика аудио для мобильных игр. А в заключение дал советы по трудоустройству в индустрии.
По словам Романа, звуки в играх можно условно поделить на пять категорий: специальные звуковые эффекты (SFX), фоли, эмбиенс, музыка и голосовая озвучка. Но для удобства саунд-дизайнеры в Playrix используют классификацию, в которой есть лишь четыре типа звуков.
Первый тип — все одиночные звуки (oneshot), к которым относятся фоли (их можно записать в реальности) и SFX (синтезированные эффекты, использующиеся для озвучки несуществующих явлений. Также это могут быть звуки, которые созданы из нескольких несинтезированных звуков). Фоли чаще всего берут из библиотек, а SFX комбинируют из нескольких других звуков.
Cоздание «несуществующих» звуков, к примеру магических явлений, — это сложная задача, в которой нужно опираться на собственную «наслушенность» и представления о потенциальном звучании. Саунд-дизайнеры — это работники постпродакшена, поэтому они всегда творят на основе готового видео или изображения.
Чтобы получить убедительный фоли-звук, саунд-дизайнер часто приукрашивает его — ставит акценты на нужные элементы. Это нужно, чтобы игрок точно понимал, что происходит в игре. Звук получается не совсем реалистичным, но зато он лучше выполняет свою геймплейную роль.
По словам Романа, у Playrix есть своя библиотека звуков, которую собрали за много лет существования компании. Новые звуки попадают в этот архив. Внутренние команды часто используют готовые наработки, чтобы сэкономить ресурсы. При этом саунд-дизайнеры обращаются и к другим библиотекам, если в их архиве нет чего-то подходящего. Если подходящих звуков нет, то приходится самостоятельно их записывать или создавать.
Второй тип — эмбиенсы, звуки окружения, формирующие пространство вокруг игрока. Это могут быть птицы, ветер, разные погодные эффекты. Звуки окружения могут быть как одиночно-проигрываемыми, так и зацикленными. К примеру, дождь будет зацикленным, а гром — это одиночный эффект, который появляется в разное время и в разных точках пространства. К эмбиенсам можно отнести и некоторые объекты окружения. Например, зацикленный звук фонтана может позиционироваться в пространстве: чем дальше от него, тем шум воды тише, чем ближе — тем громче.
Третий тип — музыка: она бывает статичной или контекстно зависимой. В первом случае просто воспроизводится мелодия, которую написал композитор. Во втором — музыка меняется в зависимости от геймплея: например, если добавить музыкальные инструменты, то саундтрек станет более насыщенным, а если убрать — более прозрачным.
Но для добавления контекстно-зависимой музыки нужно заранее заложить соответствующую логику в игру: будет сложно по ходу разработки перейти со статичной на контекстно-зависимую музыку. Playrix использует этот подход в нескольких своих проектах. К примеру, в Wildscapes вся музыка динамически меняется в зависимости от контекста.
Четвёртый тип — джинглы, короткие музыкальные вставки. Обычно они используются в качестве музыкальных оповещений для игрока: например, при получении награды звучит победный джингл.
По словам Романа, основная задача саунд-продюсера — создание полного видения озвучки проекта. Он же и ответственен за финальный результат: звуки должны улучшать пользовательский опыт при взаимодействии с механиками — давать обратную связь, поощрять и подчёркивать важные элементы.
Также продюсер управляет командой и раздаёт задачи — составляет ТЗ, следит за этапами производства звука, даёт фидбэк.
По мнению Федотовского, в казуальных играх звук не стоит перегружать разными элементами — он должен быть простым для восприятия. Кроме того, все звуки проекта должны создаваться в едином стиле: саунд-продюсер заранее продумывает и определяет основы звучания.
К примеру, в Homescapes используются приёмы джаза: разработчики создали атмосферу лаунджа, домашнего уюта, чего-то мягкого, «округлого» и «пушистого». Они подчёркивают концепцию игры: цель пользователя — вместе с дворецким ухаживать за поместьем. Продюсер должен использовать подобный ассоциативный ряд, чтобы объяснить команде общий стиль звуков в игре.
Пайплайн создания звука примерно такой. Саунд-продюсер решает, какие звуки подойдут для нового игрового события: делает наброски, создаёт список ассетов и задач. В большой игре задачи нужно поделить на блоки и структурировать по приоритету — иначе возникнет хаос.
Затем продюсер назначает задачу саунд-дизайнеру, в ней он описывает своё видение, прикладывает примеры. А задача саунд-дизайнера — создать звук по ТЗ.
Продюсер проверяет готовую работу — даёт фидбэк, отправляет на доработку (если необходимо) или передаёт сэмпл техническим специалистам, чтобы они добавили его в игру. Затем продюсер дорабатывает звук уже внутри игры: настраивает громкость и добавляет необходимые элементы. Потом всё это уходит на тестирование — если всё хорошо, звук попадает в билд.
Финальный результат сильно зависит от техзадания. Сам Роман в ТЗ обычно описывает звук при помощи ассоциаций. Например, если в игре собирается шкаф, то в ТЗ будет написано нечто подобное: «Нужно сделать звук сборки шкафа. Фактура звука — дерево. Плюс железные элементы (или стеклянные)». Для саунд-дизайнера этого должно быть достаточно.
Порой доходит до смешного. Я просто говорю им: «Надо в конце сделать „трям!“». Прямо так и пишу: «трям». И ребята прекрасно меня понимают: делают в конце «трям» — и все довольны.
Если нужно придумать, как звучит нечто, чего нет в реальном мире, можно прибегать к приёмам, которые используются повсеместно, считает Роман. Так, для озвучки падающих блестяшек почти во всех играх используется инструмент бар чаймс: у многих игроков эффект ассоциируется именно с этим звуком, поэтому в данном случае саунд-дизайнеру можно не придумывать велосипед.
По словам Романа, на мобильных устройствах игру чаще всего запускают через динамики. Поэтому звучание игры в Playrix тестируют на разных устройствах: например, на iPhone и каком-нибудь топовом телефоне на Android.
Обычно разработчики избегают верхних частот выше 10 килогерц, потому что они могут плохо звучать. Низкие частоты тоже предполагают ограничения, но менее строгие.
Также звуки проходят через оптимизацию — команда проверяет, как они влияют на память и процессор. Хотя в целом звуки влияют на ресурсы устройства гораздо меньше «картинки». Звуки игр Playrix редко обрабатываются реверберациями и delay-эффектами в реальном времени, так как они значительно нагружают процессор. Ещё ресурсы процессора уходят на распаковку звуковых файлов, которые сжаты для экономии физической памяти. Но это не сильно влияет на производительность.
Часто в больших играх, где одновременно звучит много объектов, маленькие по объёму звуки вообще не сжимают, а оставляют в PCM-формате, чтобы снизить нагрузку на процессор.
В основном оптимизация касается физической памяти — для этого используется сжатие звуковых wav-файлов при помощи кодека Vorbis. Чтобы не нагружать оперативную память, все звуки в игре делятся на группы в FMOD (звуковой движок для воспроизведения аудиофайлов) — когда запускается игровое событие, к нему подгружается соответствующий набор звуков. При смене событий меняется и банк загруженных звуков.
По словам Романа, Playrix стремится к тому, чтобы для новых пользователей игра весила как можно меньше, поэтому все ассеты стартового билда сильно сжаты
Финальное тестирование проводится прямо на устройстве: саунд-продюсер должен слышать, как игра звучит на динамиках телефона или планшета. Звук может казаться подходящим на компьютере, в наушниках или где-то ещё, но при этом быть плохим на телефоне.
По словам Романа, в качестве основного ПО в Playrix используют собственный игровой движок в связке с FMOD. Также работники отдела звука используют редакторы — Logic, Studio One, REAPER. Ещё они применяют Soundly — файловый менеджер для звуков.
Саунд-продюсерам для работы не нужно специфического оборудования. Компьютера, профессиональных наушников и устройства для тестирования вполне достаточно.
Поскольку мы делаем казуальные игры, у нас нет особой потребности в полноценном студийном оборудовании, ведь в конечном счёте мы всё равно слушаем с девайса.
А у саунд-дизайнеров может быть по-другому: у них есть студийное помещение, в котором они при необходимости могут послушать звуки в студийных условиях — в хорошо заглушённой комнате и через студийные мониторы (колонки). Также саунд-дизайнеры часто используют midi-клавиатуры и профессиональные аудио-интерфейсы.
По мнению Романа, сейчас на рынке высокая конкуренция, затеряться среди других фрилансеров проще простого. Поэтому саунд-продюсер советует побольше участвовать в офлайн-встречах и намеренно заниматься нетворкингом.
Чтобы устроиться в штат игровой студии, нужен опыт, портфолио и хорошее тестовое задание. Например, чтобы получить работу в Playrix, техническому саунд-дизайнеру нужно было озвучить игровые события при помощи готового набора звуков, а также составить ТЗ для саунд-дизайнеров.
Роман добавил, что в индустрии саунд-дизайна много специалистов смежных направлений: профессиональные композиторы, звуковые продюсеры из других сфер медиа и так далее. Игровая индустрия предоставляет большие творческие возможности — здесь можно экспериментировать и реализовывать собственные задумки.
В Playrix свобода творчества — это не только особенность отдельно взятой профессии, но и часть корпоративной культуры всей компании. Неважно, создаёте вы VFX-эффекты, работаете с SDK или анализируете маркетинговые показатели, — здесь всегда найдётся место экспериментам, челленджам и нестандартным задачам. А ещё здесь всегда в поисках талантливых специалистов — сейчас в студии открыто больше 80 вакансий по 20 направлениям.
Гайд рассчитан на уверенного пользователя и автор не несёт никакой ответственности, если вы что-то сломаете. Все выполняемые действия лишь на вашей совести.
Когда-то звук был одним из важнейших аспектов, влияющих на погружение в играх, но современные способы вывод звука сильно отличаются от того, что когда-то считалось незыблемой нормой. Если во времена Windows XP звуковой поток передавался напрямую к аппаратной части через интерфейсы с низкой задержкой, то начиная с Windows Vista ситуация приняла печальный оборот и качество звуковых эффектов начало отходить на второй план. Компания Microsoft, под предлогом обеспечения лучшей совместимости и удешевления консолей, переработала привычную схему вывода звука и добавила весьма длинную цепочку программных вмешательств.
Такие изменения в звуковой подсистеме небыли вынужденными, ибо проблемы с микшером или принудительным изменением всего до 48 кГц не были критичными и спокойно исправлялись в пару кликов пользователем или производителями звуковых карт. Все изменения были лишь желанием Microsoft, которое привело к потерям многих звуковых эффектов (EAX), задержкам, искажениям и смерти рынка игровых звуковых карт. Мы получили реальность, где разработчики просто забили на качественный хардварный звук и переложили всю обработку на программную часть ресурсами процессора, превратив звук в плоское подобие прекрасного, а также лишив множество игр былого шарма.
Одной из важнейших потерь, о которой всё ещё плачут геймеры за 30, является технология EAX. Чтобы не быть многословным и не грузить вас лишней информацией, здесь стоит лишь отметить, что технология EAX работала по принципу современного Ray tracing, но только в плане звука. Каждый звук мог отражаться от объекта окружающего мира и звучать исходя из размера помещения, способности материала передавать и поглощать звук, удалённости объекта и т.п.
Пример работы технологии EAX
EAX использовался во многих популярных видеоиграх — это Half-life, Counter-Strike, Grand Theft Auto San Andreas, Grand Theft Auto IV, S.T.A.L.K.E.R., Doom 3 и т.п. Список игр с поддержкой технологии можно найти здесь.
Хотя сжатие ютуба и влияет на качество передачи, но разницу можно отчётливо уловить, особенно это становится заметно в Doom 3 и Halo: Combat Evolved в определении источников звука.
ALchemy Universall — это приложение для восстановления функциональности DirectSound 3D (EAX) на картах от Creative, но в последующем модифицированное для работы с любыми звуковыми картами. Программа работает по принципу ретранслятора, минуя вмешательства со стороны Windows и переводя запросы в OpenAL напрямую.
В основном ALchemy необходим для старых игрушек, но я советую включать приложение для всех игр, ибо если игра даже не поддерживает EAX, то вы всё равно заметите некоторое улучшение играх при использовании ALchemy.Возможно, лучше всего добавить все игры в ALchemy; если вы не заметите никаких преимуществ или испытываете отрицательные эффекты от использования ALchemy, то просто удалите игру из программы.
- Установить ALchemy и OpenAL
- Открываем ALchemy и нажимаем на кнопку Add
- Указываем путь до вашего исполняемого файла
- Нажимаем окей и переносим с помощью стрелок добавленный exe на правую сторону
- EAX активирован.
ASIOALL — это универсальный драйвер разработанный музыкантами для уменьшения задержки ввода и вывода при игре на гитаре. Если вы хотите быть быстрее всех в соревновательных игрушках или вы замечаете, что звук иногда опаздывает за мимикой рта персонажа в игре, то ASIOALL вам просто необходим.
Панель настроек 2.13, с версии 2.15 её нет.
- Установить ASIOALL
- Запустить a4apanel.exe
- Сместить ползунки как на скриншоте.
В основном достаточно ALchemy для возвращения качественно звука, но если вас интересуют только задержки ввода и вывода, то достаточно использовать ASIOALL.
Несмотря на появление новейших технологий объёмного звучания и 7.1 канального звука, смысл в EAX ещё остаётся, ибо многие проекты, благодаря своим звуковым движкам, имеют скрытую поддержку технологии и только ждут пока вы её активируете. Возможность же современных встроенных кодеков поддерживать-эмулировать версии EAX, позволяет без каких-либо затрат окунуться в настоящее объёмное звучание и обеспечить незабываемый эффект присутствия. Посмотреть список игр по звуковым движкам на наличие скрытой технологии можно здесь.
Конечно, обидно, что что-то настолько хорошее, по прихоти IT-гиганта, так бесславно волочит своё существование, но пока остаётся возможность активации настоящего хардварного звука без программных вмешательств и разработчики продолжают использовать EAX в новых проект (Killing Floor 2 [2017]), то надежда, о возвращении хорошего звука продолжит жить.
Если вам понравился материал, пожалуйста посетите блог автора ТЫК.
Если вам кажется, что звук в современных видеоиграх ужасен и сильно отличается от того, который вы когда-то слышали во времена Windows XP
то примите таблетки.
таблетки не помогут. эаксодрочеры застряли в своих нулевых. в современных играх есть и долби, и атмос, и всякие бинауральные, которые ни по каким критериям качества не уступают, а превосходят покрывшийся мхом еах.
А на самом деле мне жаль Павла.
Он реально старается и пилит для вас гайды по ВОЗВРАЩЕНИЮ ГРЕБАНОГО EAX!
А вы его минусите
На будущее. Да, EAX умеет в ретрейсинг со второй и третей версии.
закрепи коммент в верх чата
Мелочь: драйвер бесплатного варианта асинхронного ввода/вывода называется ASIO4ALL, т.е. для всех (у Вас 4 упущена в тексте).
Ну и у большинства современных звуковых карт есть обычный ASIO, про него тоже можно было упомянуть.
Конечно низкокачесвтенного, это же обрабатывалось когда-то на слабеньком EMU10K1, там разрядность вообще смешная должна быть.
Помню, как я офигел от звука в Prey (2017). В одном месте я просто стоял и не мог понять, где враг, потому что по звуку я должен был стоять на том же месте, где и он. Оказалось, что он на этаж выше) И ещё там падение громкости на удалении от источника звука просто колоссальное — достаточно отойти от бушующего пламени метров на пять, как его уже почти не слышно.
В овервотче объемный звук залочен для тех кто заплатит за dolby atmos for headphones, тогда будет немного лучше.
Значит overwatch для "малолетних дэбылов", а 4я батла для тру пацанов) Вообще да.Даже казалось бы в дорогих играх, встречается катастрофическая нехватка звуков окружения.Все будто только на графон смотрят и количество полигонов наращивают,а озаботится о хорошем звуке или интерактивности,новых геймлейных фишках почти никто и не собирается.
В плане точности позиционирования противника довольно хорошо преуспела игра Hunt: Showduwn от Crytek. Они используют какую-то сильную магию и бинауральный звук, сделав его частью геймплея: можно свободно определить по звуку где противник и убить его сквозь стену, некоторые умельцы даже в голову дают. Честно, Hunt: Showduwn это оргазм для ушей, в игре звучит всё: шарканье зомби по битому стеклу, звон цепей в сарае, карканье ворон спугнутых на поле охотниками, схлопывание капкана на первом этаже дома, взведение курка тебе в затылок
Вот прям на днях играл и чет так все хреново с этим. Шаги союзников зачем-то очень громкие, шаги врагов тише, позиционирование никакущее. Может конечно дело в ушах и настройках. У меня sony wh 700, они больше для музыки (подключал по проводу, чтобы BT не тупил и лага не было)
Отлично определяю где, на каком уровне и какой противник находится. Всегда считал, что там отличный звук, без наушников часто просто не понимаю, что происходит, а теперь оказывается, что очень плохо.
Да что это за кряканье (намек на синдром утёнка) не имеющее ничего общего с реальностью в начале статьи?
Выделенные прцоессоры для обработки звука умерли сами и по одной простой причине - ЦП в какой-то момент смогли обрабатывать звук сами без какого-либо влияния на их производительность.
Делай эффекты сколько хочешь, OpenAL для кого придумали?
Просто в какой-то момент и разработчики тоже решили, что звук мало кому нужен.
Собственно что тут добавлять, даже сами креативы реализуют совместимость с хардварным EAX за счет OpenAL.
А по поводу "хардварного звука без программных вмешательств".
Вы похоже не понимаете что такое EAX, как он работал и зачем был нужен.
Мне кажется в эпоху набирающего обороты долби атмоса и все более доступных av ресиверов EAX это уже атавизм)
А реисверы популярны с 90-х. Просто не у нас
Эх, да, печально это. Помню как работал EAX в шутерах того времени вроде Battlefield 2 и BioShock и было ощущение, что за этим будущее. А потом Виста по сути уничтожила "хардварный" звук.
Его уничтожила не виста, а неадекваты из креатива. Которые не смогли договориться с майкрософтом, что бы адекватно туда это интегрировать. Они мало что хотели железки продавать, так еще и деньги за саму технологию грести. По итогу похерили купленного ими разработчика E-mu, который собсвтенно чипы для Eax и разработал.
По поводу "ужасного" звука, просто включите звук в GEARS 5 с долби атмос.
А еще знаете в чем прикол? Последняя EAX аппаратная карта от Creative X-FI THD не имеет официальных драйверов для Windows XP :))) То есть EAX игры в ней только через алхимию.
EAX не работало по принципу ретрейсинг. EAX это ближе к Transform & Lighting в мире видео. EAX это не про 3D звук в первую очередь. Поддержка EAX ничего не даст без прописывание использования определенных эффектов, который и обрабатывали звуки по каналам. Никакого ретрейсинга там и в помине не было. Поэтому игр где вот прям EAX офигенно был заметен было не сказать, что бы очень много.
От аппаратного EAX отказалась даже его создатель креатив, как и от старых алгоритмов. Звук в обход микшеров винды жив и сейчас. OpenAL иначе бы EAX был не возможен на современных Windows.
За более чем 10 лет звук развился и идет в других направлениях. И 3D нормальное есть и виртуализация.
Зачем тут одно и тоже писать третий раз? И откапывать труп мамонта.
Креатив, это те, которые делали шикарный саундбластер? Шикарная компания, никогда не перестает удивлять.
Это те, которые делали кривые драйвера, а на Windows Vista выпустили платные драйвера с поддержкой EAX и судились с чуваком, который пилил бесплатный аналог этих дров.
Звуковой дизайн в видеоиграх и кино во многом схож. Но первые имеют интерактивную природу, из-за которой зачастую используются другие подходы. Звуковой дизайн должен учитывать возможность пользователей взаимодействовать с миром по своему желанию. При этом, ни один элемент не должен выбиваться из общего ряда.
В конце февраля в креативном пространстве для разработчиков игр «Индикатор» в Санкт-Петербурге прошла лекция звукового дизайнера Рината Ситдикова, который рассказал про особенности создания звука в играх. Мы выбрали из его выступления главное.
Для создания целостного звукового дизайна и понимания последовательности работы звуки можно разделить на следующие виды: голосовая озвучка, атмосферы (ambiences), синхронные шумы (foley), звуковые эффекты (SFX), музыка.
Существует несколько способов использования голоса в играх. Озвученные диалоги выступают в качестве основного источника информации для пользователей. Announcers — фразы, которые вознаграждают игрока (например, «Double kill»), или предсказывают какие-либо действия («Round one — Fight»). Озвучка действий главного героя — вскрик при получении урона или прыжке, дыхание при беге — позволяет усилить связь с персонажем и лучше описать его состояние.
При работе с голосовой озвучкой важно подобрать актёров с подходящим тембром, чтобы их голос соответствовал характеру персонажа. У игрока должно возникать ощущение реальности встреченного NPC. Необходимо подчеркнуть особенности произношения и устройства речевого аппарата, если это монстр или пришелец. Для этого саунд-дизайнеры используют инструменты Pitch и Layering: первый помогает изменять звуковысотность и длительность аудио, а второй позволяет накладывать различные слои и фактуры друг на друга. Не стоит забывать и об эффектах.
В игре голосовая озвучка обычно привязывается либо к дереву диалогов, либо к триггеру.
Для создания атмосфер необходимо использовать семплы-петли, в которых конец аудиофайла незаметно входит в своё начало. Нужно убедиться в отсутствии заметных акцентов и использовать аудио длительностью не меньше одной минуты (а ещё лучше — не менее пяти минут). Они должны создавать иллюзию непрерывного фонового звучания. Любой резкий переход может разрушить погружение пользователя.
При добавлении фоновых звуков в виртуальный мир важно учитывать позиционирование на карте. Например, есть локация — джунгли. Общие звуки присутствуют всегда: щебет птиц, водопад, шуршание и так далее. У всех объектов есть зона звучания, которая делится на два уровня: первая — зона нарастания, вторая — зона постоянной громкости. Это называется аттенюацией.
Когда игрок входит в первую зону, то по мере приближения к источнику звука, громкость нарастает. Это происходит до того момента, пока пользователь не подойдёт достаточно близко. Тогда он заходит во вторую зону, в которой громкость не меняется. Это важно для позиционирования и смешивания зон, так как звуки от разных источников могут наслаиваться друг на друга. Фоновые звуки размещаются прямо на локациях. Важно следить за тем, чтобы они не выходили за пределы зоны своего действия.
Параметры атмосфер для ориентирования в мире:
- громкость;
- позиционирование;
- приоритет;
- реверберация — эхо, возникающее в закрытых пространствах.
При работе со звуком важно обратить внимание на главные игровые элементы — акценты, которые определяют опыт пользователя. В этом помогает процесс микширования и приоритета звука.
Например, при появлении противника, звуки, которые он издаёт, должны явно выделяться на фоне окружения. Существует несколько способов осуществления этой задачи:
- распределение слоёв звуков по разным шинам и их микширование;
- приоритезация звуков, обусловленная логикой;
- эффект Sidechain — позволяет менять громкость звуков в зависимости от приоритетов. Если появляется враг и издаёт звук, то другие громкие звуки затихают.
Синхронные шумы (foley) зачастую записываются в студии для того, чтобы создать достаточно достоверное и качественное звучание. В прошлом камеры были очень шумными, поэтому было невозможно писать звук прямо со съёмочной площадки. Джек Фоли, американский специалист по звуку в кино, придумал систему, по которой звук записывался вне площадке синхронно с видео на экране.
Сейчас синхронные шумы также создаются в специальной студии. При этом, не обязательно использовать натуральные материалы для воссоздания нужного звучания. Например, для имитации электричества, достаточно использовать бумагу и эффекты. Или пакет с крахмалом для озвучания снега.
Синхронные шумы проще всего цеплять прямо на анимацию. Например, чтобы озвучить шаги персонажа, нужно смотреть когда нога ставится на поверхность, и в этот момент прикреплять звук. При этом, важно подобрать правильное звучание, которое зависит от материала, на который наступает персонаж.
SFX — это звуковые эффекты всего, чего нет в действительности: инопланетяне, звуки звездолётов, а также акценты, на которые необходимо обратить внимание игрока — взрывы, выстрелы, звуки интерфейса. Для SFX очень важно соответствие сеттингу игры, например, при создании интерфейса можно использовать звуки одной фактуры (стекло, камень, дерево), что придаст единство звучанию.
SFX размещаются на локациях так же, как и шумовые эффекты. Или они могут быть привязаны к конкретному триггеру или анимации.
Музыка используется для того, чтобы задать определённое настроение сцене. Она отлично может передать эмоциональное состояние и драматургию. Может быть как внутрикадровой (источник звука находится в сцене: граммофон, пианино), так и закадровой. Размещается музыка так же, как и фоновые звуки. Практически всегда используется в кат-сценах, и выступает в качестве самого простого и действенного способа склеить звуковую картину.
Глобально музыка в играх делится на:
Адаптивная музыка используется для того, чтобы она гармонично вплеталась в геймплей и соответствовала интенсивности и драматургии происходящего. Но для этого нужно сделать плавные переходы между разными отрезками произведения.
Например, есть закольцованный кусочек музыки А, который привязан к простой прогулке персонажа. Когда игрок подходит к лаве, он наступает на триггер и начинается часть B. Для плавного перехода нужно изначально учитывать возможность смены композиции.
Есть горизонтальный тип перехода: от первого кусочка ко второму, от второму к третьему. Каждый кусочек делится на части, у которых есть свои условия перехода к следующему куску. Например, может быть записана специальная финальная часть, которая включается при переходе на другой кусок.
Также существует вертикальный метод: есть единая фоновая мелодия, которая дополняется другими слоями музыкальных инструментов при переходе в ту или иную локацию или при изменении темпа игры. Например, включается изменённая главная тема. Важно, чтобы все эти части лаконично звучали друг с другом.
Для воссоздания целостного звукового дизайна важно соблюдать определённые критерии:
- использовать подходящие фактуры: нельзя пластиковую коробку озвучить металлической;
- соблюдать плановость звука;
- использовать акценты;
- помнить про приоритет звуков.
Кроме того, важно понимание особенностей звука. Например, если из-за горы летит дирижабль, который пока не виден, но слышен, то высоких частот не будет. Как только он вылетает из-за горы, частоты выравниваются и становится слышна реверберация — эхо от ущелья. Чем ближе объект, тем меньше эха. Чем больше объект, тем более низкочастотная фактура ему подходит. Множество подобных деталей познаётся с опытом.
Для работы со звуком в играх существуют специализированные движки. FMOD Studio — доступный и понятный звуковой движок. В нём есть аудиодорожки, таймлайн, 3D-позиционирование, real-time подключение к игре, возможность интеграции с Unreal Engine, Unity и многое другое. Для музыкантов он самый доброжелательный. На нём сделаны Starcraft II, Witcher 2, почти все игры для Xbox 360 и множество известных тайтлов. К тому же он условно-бесплатный, если затраты на разработку игры не превышают 500 тысяч долларов.
Wwise от Audio Kinetic — более профессиональный движок, который больше подходит программистам, но даёт возможность реализовать абсолютно все задумки. Например, с помощью него разработчики Witcher 3 реализовали в игре lipsync — сопоставление анимации движения губ и текста. Иначе говоря, разработчики для каждой отдельной буквы записали свою анимацию, а движок автоматически соотнёс одно и другое.
Культура модификации игр зародилась ещё в древние времена. Самое раннее, что я помню, это Wolfenstein 3D (1992 год). Если не ошибаюсь, можно было рисовать свои карты, а потом и новых врагов, заменять текстуры и звуки. Главным препятствием в моддинге является разбор неизвестных форматов данных. Оставим моральные аспекты этого явления для других ресурсов, и остановимся на технических сложностях, которые могут возникнуть в этом нелегком деле.
У меня накопилось довольно много историй такого рода, от самых простых, типа разбора простейшего архива, где в одном файле хранятся много тысяч файлов игры, до замены 3D-моделей, исследования и написания нестандартных кодеков звука. Расскажу одну из них, средней сложности.
Допустим, у вас появилось желание заменить определённые фразы в игре, или вообще замахнуться на полную озвучку на каком-нибудь языке, для которого у разработчиков не хватило сил или ресурсов. Казалось бы, надо только записать звук, найти где он находится в игре, и заменить нужные файлы. Но не всегда это бывает просто, например, в последних играх из серии Batman: Arkham используется звуковой движок wwise, который уже довольно давно интегрирован в Unreal Engine.
Я уже не раз сталкивался с UE, но, как известно, коммерческие разработчики имеют возможность полностью менять любую часть кода движка, поэтому почти все игры получаются уникальными с точки зрения структур данных, и это всегда интересно поисследовать.
Для начала посмотрим звуковые файлы. Они как обычно лежат в папке audio и собраны в один большой пакет, с неожиданным расширением .WAD (привет DOOM). При желании даже можно извлечь из него все звуки, но это будет несколько тысяч безымянных файлов, и найти среди них что-то будет весьма проблематично, разве что «вручную» переслушивать их все. Надо сказать, что чаще всего бывает проще. Разработчики, для своего же удобства, оставляют где-нибудь файл со списком фраз. Но это не тот случай.
Логично предположить, что раз сама игра как-то находит нужные звуки и субтитры к ним, значит, эта информация где-то содержится в файлах, надо только её найти. Нигде в папках для локализации тексты не обнаруживаются, значит они разбросаны по отдельным уровням игры, как это часто бывает. Возьмем для примера один из .upk файлов с названием, похожим на уровень, и распакуем его. Благо, инструменты для этого имеются, даже с исходными текстами.
Внутри довольно быстро обнаруживаются файлы типа .RDialogueEvent, в которых невооруженным глазом видны тексты фраз на 11 языках.
Имена файлов похожи на имена исходных звуков. Замечательно, теперь осталось только найти соответствие между ними и звуковыми файлами. Вот только тут и начинаются проблемы. В звуковом пакете конечно есть идентификаторы. Это 30-битный хеш, который всегда используются в wwise для звуков, но к сожалению нигде среди файлов диалога их найти не удаётся. Везде одни непонятные цифры, ничего похожего на ID звука нет, они сразу были бы заметны. С другой стороны, это и понятно, ведь движок не так прост, и нельзя просто так взять и проиграть звуковой файл в игре. Он содержится в аудио-банке, у него множество свойств, накладывающих различные эффекты и т.д.
И тут оказывается, что в каждой папке с диалогом есть файл .akbank — видимо это и есть аудио банк wwise.
Вот у него внутри как раз очень много идентификаторов, перепробовав которые наугад, мы обнаруживаем, что один из них (выделен зеленым) имеется в звуковом пакете. Если мы извлечем оттуда данные по этому идентификатору, то получим некий сегмент из слепленных вместе нескольких звуков. Сконвертируем эти звуки из внутреннего формата wwise в обычные ogg. Да, действительно, в одном из них Бэтмен говорит: «I don't have time for this», а в другом файле ему отвечают. И фразы как раз соответствуют текстам именно этого диалога.
Уже неплохо! В принципе, на этом можно было бы и остановиться: все диалоги разложены по папкам, для каждого из них есть банк со ссылкой на звуковой сегмент. Мы конечно не знаем, где какой файл, но разрезать сегмент на части, послушать и расставить по местам несколько фраз (а их в диалогах обычно бывает всего 3-4 штуки) можно и вручную.
Но мы не ищем легких путей. Разбираться, так до конца. Проверим на всякий случай, вдруг звуки идут прямо по порядку? Конечно же нет, они перепутаны. Как ни крути, где-то должна быть информация о связи звуков в сегменте с текстом диалога. Я довольно долго копался в разных файлах, в надежде что-то обнаружить, но всё бесполезно. Хорошо. Раз такое дело, распакуем все пакеты игры. Это несколько гигабайт, ну ничего, первый раз что-ли? Вот только полный поиск по всем данным игры также ничего не дал. Единственное место, где есть идентификаторы звуков, это аудио банк. Выходит, связь идёт только через него. Ничего не поделаешь, придется лезть внутрь и разбираться, как он устроен.
Теперь, для верности, найдём в игре какой-нибудь диалог, который можно быстро проверять. После эффектного вступления с очаровательной девушкой-репортёршей и маски-шоу, Бэтмена захватывает Hugo Strange. Он говорит пару фраз, начинающихся с «I feel I should thank you», потом уходит, и начинается игра. Именно здесь происходит первое сохранение. Этот момент нам подойдёт.
Найдём фразу злодея в файлах. Она оказывается в пакете OW_E8_Ch1z_Anim. Так сразу и не догадаешься. Внутри всего один диалог, в котором содержится всё начало игры. Это целых 24 фразы, но возможно это даже хорошо, в мешанине кодов легче найти число 24, чем 1 или 2. Итак, мы собирались изучить содержимое .akBank
Формат банков wwise оказывается уже частично исследован. Будем надеяться что этой информации хватит для нашей цели. Судя по началу файла .akbank, в нем находятся сразу 5 аудио банков для 5 языков, первым идёт банк INT (английский) — его мы и посмотрим.
Сначала там имеется непонятная таблица после заголовка ВКРК, потом довольно много нулей (это видно на прошлой картинке), потом сегмент BKHD, и потом сегмент HIRC, в котором, по всей видимости, находится описание всех аудио-объектов. В данном случае у нас их 79 штук (0x4F выделено зеленым). Как утверждает описание, объекты в сегменте идут один за другим, для каждого указан тип (1 байт), потом 32-битная длина, и ID. Длина и содержимое объекта отличается в зависимости от типа.
Объекты тип 2 — это собственно звуки. Тип выделен красным, длина — желтым. У каждого из них указан ID самого объекта (зеленым) и ID звукового файла (фиолетовым), где он содержится. Ниже видно начало следующего объекта такого же типа.
Объекты 3 — звуковые действия, похоже каждое из них это «проиграть звук», с какими-то неизвестными нам параметрами, но в каждом из них есть свой ID (серым) и ID звука, который собственно нужно проиграть (зеленым).
Объекты 4 — звуковые события. Очень короткие записи, в которых только и есть, что ID события (голубым), а также указано, что оно содержит только одно действие, и ID этого самого действия (серым).
Ну вот, похоже у нас имеется 24 цепочки событий следующего вида:
событие —> действие —> звук
Они связаны идентификаторами, и в итоге заканчиваются ссылками на звуковые файлы. Как же найти нужные файлы? Поискав эти коды, мы обнаруживаем их как раз в той самой таблице в начале банка. Видимо это таблица, в которой записано, где внутри звукового сегмента находятся отдельные звуки. И действительно, в ней как раз 24 элемента, и для каждого файла указан тот самый ID, который у нас был в звуковом объекте, смещение относительно начала, и длина. Поздравляем! Теперь у нас полностью прослеживается связь от аудио-событий в банках до отдельных звуковых файлов:
To есть как исходные данные у нас есть ID нескольких событий, по одному для каждой фразы диалога, и для каждого из них мы можем найти звуковой файл. Но как связать их теперь с самим диалогом?
Попробуем поискать где-нибудь эти идентификаторы. В файлах диалогов их опять нет. В папке есть еще какие-то очень короткие файлы .akevent — их тоже 24 штуки. Очевидно, это файлы аудио-событий. Внутри какие-то небольшие числа, у всех одинаковые, от них никакого толку. Единственное, что там есть разного, это как раз id аудио-событий, которые мы нашли в банке.
Опять тупик: есть идентификаторы для всех событий, но связи между ними и текстом диалога нет! На всякий случай сделаем тест: поменяем в нужном файле ID и запустим игру. Да, действительно, Хьюго открывает рот, но ничего не говорит. Значит это именно те данные, по которым игра находит нужный звук. Заодно отмечаем, что субтитр всё равно показывается. Значит тексты диалогов в нашем случае первичны, а от них уже идёт звук.
И тут я вспоминаю, что у движка UE3 есть привычка ссылаться на объекты пакета через их порядковый номер внутри пакета, то есть прямо как они упакованы внутри него. Посмотрим файл экспорта, который образуется у нас при распаковке пакетов:
Номера здесь десятичные, и начинаются с нуля, в игре же они начинаются с 1, поэтому получается, что файлы событий в экспорте идут под номерами 0x35-0x4С. Посмотрим, нет ли их где-то среди диалогов. Начинаем смотреть — и надо же, прямо в начале файла есть этот номер!
Вот и последнее недостающее звено. Заодно рядом обнаруживаем 0x2С — это номер файла банка. В случае если в папке вдруг будет несколько диалогов, их тоже можно будет отличить. Теперь мы полностью знаем, как по тексту диалога найти соответствующий звук.
Такая вот получилась довольно сложная схема взаимодействия. Похоже разработчики решили не заботиться об удобстве, и просто положились на внутренние механизмы движка, что и привело к такому результату в данном случае. А случаи, как я уже сказал, бывают самые разные. Структура файлов и связи между ними могут быть совершенно другие. Здесь у нас от текста диалога шла ссылка на звук. А бывает наоборот, первичным является звук, а к нему по идентификатору находится текст. Или первично событие скрипта игры, а от него идут ссылки и на звук, и на текст. Бывает, что файлы находятся не по имени, а по хешу. Но в любом случае, каким-то образом они все связаны, остаётся только найти эту связь.
В качестве последнего штриха попробуем проверить наши результаты. Найдём файл диалога именно от нужной нам фразы «I feel I should thank you» и заменим в нём 4B на 4C. Запускаем игру, и наш друг Хьюго вместо этой фразы многозначительно произносит: «It will be my legacy, a monument to your failure and if you try to stop me, I guarantee everyone will know your secret.»
Оставим на этом Бэтмена, исследование можно считать законченным. В письменном виде процесс выглядит быстро, но на самом деле каждый этап может сопровождаться долгим созерцанием 16-ричных цифр, без всякой надежды на то, что в какой-то момент они сложатся в осмысленные цепочки, и вы поймёте, что они значат. Но иногда это всё-таки происходит.
Хочу поделиться опытом по теме звука в Windows 7.
На самом деле, всё не так плохо, как сначала кажется, и я вам сейчас это продемонстрирую.
Начну сначала.
О звуковых подсистемах
Windows XP
Тут схема звуковой подсистемы примерно следующая:
Vista, Seven
И вот, жили наши энтузиасты-звукари, горя не знали, но тут подоспела новая ОС от Microsoft, которая конечно же обязана была содержать кардинальные изменения (и не так уж важно, в какую сторону).
Таким образом, в рамках новой концепции абстракции от оборудования, Windows Vista, кроме всего прочего, получила полностью переработанную подсистему ввода/вывода звука. И конечно же, переработали её не самым лучшим образом.
Вот, какой вид она приняла в этот раз:
API — Application Programming Interface
APO — Audio Processing Object
CPT — Cross Process Transport
KST — Kernel Streaming Transport
- Приведение звуковых потоков от разных приложений к одному виду (указанному в настройках Windows) — т.е. к одному количеству каналов, частоте дискретизации, глубине квантования.
- Микширование потоков.
+ базовые возможности обработки для звуковых карт не умеющих обрабатывать звук «своими силами»
+ поддержка на входе практически любого формата аудио — многоканальное аудио с частотой дискретизации до 192 кГц и глубиной квантования до 32-bit float
+ повышенная стабильность (спорное утверждение, в принципе)
— принудительный ресемплинг сомнительного качества
— микширование каналов без эффектов окружения (или же они очень примитивны)
— сужение динамического диапазона (особенно в режиме 16 бит)
— отсутствие доступа к аппаратному DSP, т.е. потеря всего его функционала, включая эффекты EAX в играх (в т.ч. и на картах, где EAX эмулировался программно — так как в WASAPI такого понятия даже нет нет)
— щелчки, хрипы и прочие последствия связанные с использованием ресурсов ЦП.
Как видно, больше всего не повезло компьютерным меломанам-аудиофилам (надеюсь, никто не обидится) и геймерам.
Люди же, не особо интересующиеся тем, что происходит со звуком на пути к звуковой карте — возможно даже получат определенное улучшение (хотя, опять же, им скорее всего всё равно — лишь бы работало)
А теперь, о том как преодолеть большинство из вышеперечисленных проблем, ибо, к великому несчастью, с выходом так любимой многими Windows 7, Microsoft никакой революции в плане звука нам не устроила.
Меломанам: точный вывод звука
1. Как я писал выше, большинство приложений для вывода звука в Windows 7 (хотят они того, или нет) используют режим WASAPI Shared. Но есть и другой режим — WASAPI Exclusive. Если руководствоваться блок-схемой, то в этом режиме отбрасывается всё, что лежит между Application Programming Interface и Kernel Streaming Transport — грубо говоря, звук идет непосредственно от приложения через интерфейс WASAPI на звуковую карту.
Но надо сделать замечание: так как в этом режиме отключен микшер WASAPI, а к микшеру звуковой карты доступа всё равно нет (ибо нет DirectSound), при использовании приложением эксклюзивного режима, воспроизведение любого другого источника через WASAPI становится невозможным.
Но, так или иначе, мы получаем по-битовый вывод аудио на звуковую карту.
2. Есть и другой способ. Если ваша звуковая карта имеет родной драйвер ASIO — вам крупно повезло. ASIO функционирует совершенно отдельно от WASAPI, так что, при прослушивании музыки системные звуки не будут отключаться — потоки ASIO и WASAPI будут микшироваться самой звуковой картой.
Вывод: если ваш драйвер ASIO не вызывает сомнений, используйте его.
Да, чуть не забыл — ASIO4ALL использовать нежелательно — как и Kernel Streaming, в этой ОС он работает очень нестабильно (судя по всему, из-за того, что другие звуки, идущие через WASAPI, периодически блокируют Kernel Transport).
Теперь непосредственно к делу.
Конечно же, для прослушивания музыки я рекомендую foobar2000 с плагином ASIO Output или WASAPI output support — ни за что другое ручаться я не могу. Подробная настройка вывода звука через foobar2000 описана здесь.
Любителей AIMP я разочарую — WASAPI Exclusive не предполагается даже в AIMP3 beta (только Shared), а ASIO в нем пока что сильно хромает (не умеет выставлять правильное количество каналов вывода, что приводит к нехорошим результатам).
Пользователям Winamp могу предложить плагины ASIO output Plugin или даже такое: OpenAL Output — кстати, еще один способ обхода WASAPI (видно из блоксхемы).
Для кинолюбителей: о видеоплеерах
C видеоплеерами ситуация практически аналогичная. Нам необходимо вывести звук на карту в первозданном виде. Особенно это важно, если вы хотите выполнить преобразование многоканального звука в стерео с использованием аппаратных эффектов вроде CMSS-3D в Creative X-Fi (объемное звучание в наушниках или стерео колонках). Для этого звук должен поступить на звуковую карту в многоканальном виде. Но вот беда: WASAPI в общем режиме преобразовывает каналы до кол-ва указанного в настройках Windows. Но даже если вы укажите там, скажем, 5.1, — этот параметр синхронизируется с настройками драйвера звуковой карты, и DSP не будет преобразовывать звук — так как сигнал на входе соответствует по кол-ву каналов настройкам. Т.е. тут принцип таков: в настройках драйвера звуковой карты должна стоять реальная конфигурация подключенного устройства воспроизведения (наушники, АС), а звук на карту должен поступать не измененным.
И так, тут нам опять понадобится WASAPI Exclusive. Я бы посоветовал использовать Media Player Classic HomeCinema в связке с DirectShow фильтром ReClock (только для 32-битного MPC), который, кроме всего прочего, умеет выводить звук на WASAPI Exclusive.
Геймерам: трехмерное позиционирование, EAX
- Creative ALchemy (последняя на момент написания статьи версия) для карт Audigy и X-Fi от Creative
- и даже 3D SoundBack для карт Realtek HDA, которые, кстати говоря, поддерживают EAX 2.0 (хоть и программно)
Выводы
И так, вот вроде бы мы имеем всё, чего нам так не хватало сразу после перехода с Windows XP на Windows 7. Конечно, не без лишней мороки, но, что делать — такие уж задачки подкинула нам фирма Microsoft.
Читайте также: