Дизайн музыкальных систем: лееринг в соревновательных играх

Денис Злобин Статья 0 Comments

7 Layers of Summoning

Лееринг (или вертикальная реоркестровка) — одна из самых распространённых техник создания адаптивной музыки в видеоиграх. Она подразумевает разбиение композиций на отдельные слои, которые будут добавляться и вычитаться из музыкальной фактуры в зависимости от игровой ситуации. Чаще всего лееринг применяется чтобы увеличить интенсивность музыки в нужные игровые моменты. Я пойду немного дальше, и расскажу о применении этой техники для плавного переключения между двумя разными музыкальными композициями через промежуточные слои. В качестве примера я буду использовать маленькую игру 7 Layers of Summoning, сделанную нами на Global Game Jam 2016 за 48 часов.

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

7 Layers of Summoning — это простой файтинг про финского шамана и демона, которые сражаются друг с другом. Игроки могут перемещать персонажей в горизонтальной плоскости и атаковать, последовательно выполняя нужную комбинацию действий. По ходу разработки мы решили сделать музыку индикатором состояния игры — музыкальная тема изменяется в зависимости от побеждающего персонажа и становится более интенсивной по мере наращивания преимущества. Оговорюсь, что с точки зрения гейм-дизайна решение оказалось провальным, не повторяйте наших ошибок. Вот полные версии тем персонажей с максимальным уровнем интенсивности, как они звучат перед непосредственной победой:

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

Система спроектирована так, что ни нулевой слой, ни какие-либо слои темы персонажа не будут звучать одновременно с темой противоположного персонажа. Графическое представление музыкальной системы будет выглядеть следующим образом:

Схема адаптивной музыки 7LoS

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

  1. Сочинять короткие музыкальные фрагменты с фиксированной длительностью около 30 секунд. Баланс сил постоянно меняется по ходу игры, значит игроки будут слышать динамически изменяющуюся музыку и не успеют устать от повторов одинаковых фрагментов.
  2. Темы должны быть написаны в одной тональности с одинаковой гармонией и темпом (в данном случае фа-минор, i-VII-i-iv, 130 bpm).
  3. Темы должны максимально различаться тембрально и ритмически — этим можно в какой-то степени нивелировать ограничения лееринга.
  4. Поскольку музыка служит индикатором баланса сил, каждый новый слой должен добавлять какой-то значимый элемент к общей музыкальной фактуре. Так, в обоих случаях второй и третий слои привносят заметные мелодические элементы и/или вокальные партии. Предвосхищая вопросы: для вокальных партий я использовал готовые фразы из пары библиотек от Soundiron, существенно изменяя их с помощью Celemony Melodyne.
  5. Очень важно, что вся работа будет производиться в одном и том же проекте в DAW. Для быстрого переключения между разными темами и слоями необходимо заранее настроить папки (folder tracks) и шины (buses) для каждого элемента системы.

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

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

Мы разобрались с музыкой 7 Layers of Summoning. Теперь подумаем, как можно развить описанную методику.

  1. Не обязательно писать темы в одной и той же гармонии, можно просто использовать общий гармонический фреймворк. Мы имеем дело с зацикленными музыкальным фрагментами, а значит точка условного начала музыкальной темы не играет большой роли. Например, тема A написана в миноре в гармонии i-VII-III-VI (предположим — Cm-Bb-Eb-Ab). Тогда тема B может быть написана в параллельном мажоре с использованием гармонии I-IV-vi-V (Eb-Ab-Cm-Bb), просто точка её начала сместится на середину темы А.
  2. И даже гармонический фреймворк можно сломать, если мы настроим квантизацию так, что переход на следующий слой будет возможен только со следующей музыкальной доли. Такой принцип работы — это основа движка Elias. Но это снижает быстроту реакции музыкальной системы на изменение состояния игры, то есть нивелирует важное преимущество лееринга как техники создания адаптивной музыки.
  3. Если темы разных сторон обязательно предполагают различный темп и/или музыкальный размер, можно сделать нулевой слой максимальной абстрактным и аморфным, лишённым выраженной ритмической структуры. После этого мы сможем добавлять ритмические партии и элементы при изменении состояния игры вне зависимости от текущей точки воспроизведения нулевого слоя. Если мне не изменяет память, что-то подобное было реализовано в саундтреке к Halo.
  4. Используя последовательное добавление и вычитание различных слоёв мы можем получить многоплановую и нелинейно развивающуюся музыкальную систему — например, изменять гармонию композиции под звучащей мелодией, а потом плавно подключать новую мелодию, соответствующую изменённой гармонии и т.п.