[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-549065259", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxeub&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&puid32=&fmt=1&pr=" } } ]
{ "author_name": "Андрей Верещагин", "author_type": "self", "tags": ["\u0438\u043d\u0434\u0438\u0434\u0435\u0432","\u0438\u043d\u0434\u0438"], "comments": 5, "likes": 27, "favorites": 5, "is_advertisement": false, "section_name": "gamedev", "id": "9647" }
Андрей Верещагин
2 424
Gamedev

Ударная работа: процедурное изменение музыки в All Walls Must Fall

Музыкальное сопровождение, которое адаптируется к происходящему на экране.

Поделиться

В избранное

В избранном

Сооснователь компании inbetweengames Исаак Эшдаун (Isaac Ahsdown) в блоге на сайте Gamasutra рассказал о том, как музыка в All Walls Must Fall подстраивается под действия игрока. Редакция DTF перевела текст.

Действие All Walls Must Fall происходит в Берлинских ночных клубах в альтернативной реальности, где Холодная война не закончилась. Саундтрек состоит из песен, написанных нашим аудиодизайнером Алмутом Шваке (Almut Schwacke) и другими композиторами.

Я сосредоточусь на композиции Synaesthetic Бена Прунти (Ben Prunty) — в игре эта песня звучит по-разному каждый раз, когда пользователь заходит в клуб. Музыка адаптируется к происходящему на экране.

All Walls Must Fall — тактическая игра. Мы использовали систему, которая напоминает пошаговую: происходящее на экране замирает, когда игрок раздаёт команды персонажам. Приказы исполняются в реальном времени, а затем игра снова ставит действие на паузу.

Все действия имеют собственный ритм. Он должен быть синхронизирован с музыкой, которая играет во время миссии. Нам нужно было сделать так, чтобы музыка динамически подстраивалась под геймплей. Мы разработали систему, которая эмулирует работу композитора — разбивает треки на лупы и редактирует их в секвенсоре. Мы не использовали сторонних плагинов — всё было сделано с помощью звукового движка Unreal.

Луп

Луп — это звуковой файл, в котором содержится повторяющийся музыкальный фрагмент. Synaesthetic звучит со скоростью 110 bpm, а каждый луп трека состоит из восьми тактов в размере 4/4.

Для всех инструментов существует свой набор лупов, а для многих фрагментов записано несколько вариантов звучания. Аудиофайлы снабжены электронными пометками, которые помогают микшеру определять, когда именно необходимо проигрывать тот или иной фрагмент. В Synaesthetic всего 26 лупов, а для их создания использовали 11 инструментов.

Миксы и переходы

Программа выбирает один из доступных для конкретного инструмента лупов. Подборка музыкальных фрагментов называется «миксом» (mix). Игра создаёт новый микс следующим образом: для каждого инструмента в композиции выбирается подходящий луп, а затем определяется, как долго должен проигрываться микс. В Synaesthetic это 8, 16, 24 или 32 такта.

Так микшер случайным образом сочетает разные восьмитактовые миксы в песне. Вы можете увидеть, какие лупы проигрываются сейчас. Когда микс заканчивается, инструменты переходят к другим лупам с кроссфейдом. За один такт до окончания микса проигрывается звук «перехода» — короткий wav-файл, который сглаживает переключение.

Игровые состояния

Основная функция микшера — переключение между лупами «на ходу». Но как игра определяет, какой фрагмент нужно проиграть? Это подводит нас к рассказу о системе меток и о том, как она взаимодействует с геймплеем.

Во всех миссиях All Walls Must Fall игрок должен проникнуть в ночной клуб. Здесь ему предстоит выполнять различные задания, вроде вербовки потенциального информатора или сбора сведений. Игровой процесс состоит из двух элементов: исследования и боёв. У каждого лупа есть пометка, которая указывает на то, к какому состоянию геймплея подходит фрагмент. Вне этого состояния луп проигрываться не будет.

После выполнения задания возрастает показатель «напряжения». Разным уровням «напряжённости» соответствует свой набор лупов. Пользователь не услышит некоторые фрагменты, пока показатель не поднимется до определённого значения.

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

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

Исследование и бой

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

«Управлять временем» способен только пользователь. Активная пауза заставляет игрока тратить на сражения продолжительное время, но для остальных персонажей бои длятся всего несколько секунд. Как только все враги уничтожены, игра «перематывается» (Rewind) к началу схватки. Затем бой проигрывается в реальном времени — это называется «Падение» (The Drop). При этом все выстрелы, крики и взрывы звучат в такт музыке.

Такого эффекта мы добились с помощью ещё двух меток для фрагментов: «Перемотка» и «Падение». В Synaesthetic в первом случае добавляются посторонние glitch-лупы, а во время «Падения» мы слышим основную музыкальную тему.

«Напряжение»

В ряде моментов мы повышаем показатель «напряжения». Чтобы передать его в музыкальном сопровождении появляются новые лупы. Один из ключевых эпизодов — первое посещение клуба. Вне здания уровень «напряжения» находится на самой низкой отметке, и он повышается, как только открываются двери.

«Напряжение» нарастает по мере того, как игрок продвигается по уровню. Музыка становится сложнее, к ней добавляются новые инструменты и лупы. Когда игрок бежит к машине в конце миссии, «напряжение» достигает пика —тогда музыка становится особенно интенсивной и мощной. Каждый раз с ростом показателя «напряжения» проигрывается специальный звук перехода.

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

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

#индидев #инди

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Узнавайте первым важные новости

Подписаться