(Продолжение. Начало в №27)
Итак, сегодня мы перейдем в техническую область и начнем разговор о звуковых движках. В принципе, в самом начале договоримся о том, что автор, вернее, ваш покорный слуга все-таки разделяет понятия "звукового движка" (Sound Engine) от API (Application Programming Interface). Вернее, просит вносить такие разделения, и, например, если я спрашиваю у тех или иных разработчиков, какой именно у них звуковой движок, и получаю в ответ что-то типа DirectSound или DirectMusic, то в последующий процесс программирования не вмешиваюсь. Поскольку у нас разные представления о происходящем. Лично для меня API - это стандартизированные средства вывода звука самой системой, а сам звуковой движок - это то, что "над ним".
Простейший пример, когда музыка к игре помещается не в виде готовых wav/mp3/ogg-файлов, а делается за счет специального синтезатора, последний как раз и можно считать звуковым движком. Если интерактивность даже на уровне эффектов реализуется в отдельной программе, а потом в ее рамках формируется результирующий аудиопоток, то это тоже звуковой движок. Хотя ту же интерактивность можно реализовать и на уровне тех же API, меняя файлы для воспроизведения и так далее. В общем, вопрос достаточно разнообразен.
Также к движкам, по моему мнению, не стоит относить отдельные библиотеки для чтения, т.е. декодирование некоторых форматов файлов, которые не поддерживаются стандартными API. Это просто необходимые разработчикам надстройки, не более. При этом стоит отметить, что сама звуковая структура, предусмотренная в любой из современных игр, напоминает сэмплерную...
Программные синтезаторы/сэмплеры в
играх
В середине 80-х прошлого столетия Карстен Обарски получил заказ на озвучивание, вернее, даже музыкальное сопровождение компьютерной игры. Для этого нужен был хоть какой-нибудь синтезатор, а его не было. В результате Карстен написал программу, которая могла воспроизводить короткие сэмплы, а управлять этим воспроизведением (высота ноты, темп, эффекты и т.п.) можно было с помощью несложного кода, правда, изначально его хотели понимать:) только программисты. Дело в том, что в то время MIDI как технология стоила очень больших денег, соответственно, ее применение было затруднено по финансовым причинам. Таким образом, Карстен Обарски, особо не мудрствуя, написал трекер, который был принят с очень большим успехом. Тем самым было заложено целое направление, которое сейчас выросло в программные сэмплеры в том числе.
Потом в компьютерных играх пришла другая эпоха, что особенно характерно для рынка РС. Дело в том, что в некоторый период в звуковых картах появилось два тракта - MIDI и аудио. Следовательно, с помощью MIDI можно было воспроизводить музыку, а wav'ами или pcm'ами добавлять звуки, голоса персонажей и так далее. Качество звучания MIDI-инструментов оставляло желать лучшего, но все же это было принято как некий стандарт.
С появлением технологии DirectX стало возможным воспроизводить несколько аудиопотоков одновременно. В результате чего изменились подходы как в профессиональном звуковом ПО, так и в играх. Если говорить о звуковом ПО того времени, а говорить о нем нужно, то возможность совмещения нескольких аудиофайлов в единый поток там была и до этого. То есть, существовал некий алгоритм сведения, который брал данные сразу из нескольких треков, и после вычислений на воспроизведение выдавался практически обычный стереофайл. DirectX же воплотил в себе практически ту же самую идею, что и в старых мультитреках, только на уровне ОС и прямого общения с "железом". То есть до этого мы могли говорить о "звуковых движках", а после это перешло в ранг API.
За возможности DirectX тогда очень крепко ухватились, это изменило концепцию ПО, в целом. Например, появились неплохие синтезаторы/сэмплеры, в которых звучание каждого из инструментов могло формироваться из слоев, состоящих из аудиофайлов. Помимо этого, сведение и обработка аудио стали происходить в режиме реального времени, который и был таковым... если хватало компьютерных мощностей.
Появились первые синтезаторы/сэмплеры, которые могли не только заменить аппаратные General MIDI, но и вообще не привязывались к конкретным звукам, оные могли быть любыми. А инструментов можно было одновременно воспроизводить много. Самый яркий пример - возникновение DLS. В общем и целом, ситуация значительно улучшилась.
Но... что касается игр, там стала значительно нарастать графическая часть, она ставилась во главу угла, поэтому нагрузку процессора и т.п. начали рассчитывать исходя из нее, в первую очередь, а звук в таком случае опять нужно было ужимать по ресурсам. Таким образом, произошел некий технологический откат, снова пошли разговоры о трекерах, 8-битных звуках и так далее.
Причем в некоторое время ситуацию стали улучшать производители звуковых плат, вернее, разработчики технологий к ним. Тогда технологической вершиной стал считаться 3D, во-первых, появился API DS3D (DirectSound3D), а у производителей "железа" мы можем найти знаменитые EAX, QSound и т.п., а также аппаратно реализованные эффекты реверберации, эха и т.п.
Потом ситуация начала развиваться в сторону многоканальных решений, и, как результат, в некоторых играх мы можем увидеть 5.1.
Почему об этом стоит говорить в рамках обсуждения программных синтезаторов для игр? Дело в том, что, в отличие от стерео, 3D и 5.1 предусматривают свои специализированные варианты панорамирования. Конечно, если синтезатор/сэмплер предназначен только для воспроизведения фоновой музыки, то этот момент не актуален, но если он же воспроизводит голоса персонажей, окружающие звуки и т.п., то тут уже нужно учитывать все. Хотя последняя модель и излишне громоздка в реализации.
Сейчас программные синтезаторы/сэмплеры, а также трекеры в играх используются не так часто. Дело в том, что музыка в дорогих проектах, в основном, уже предоставляется в готовом виде, записана оркестрами, музыкальными коллективами и т.п. А эти игры и являются основными законодателями мод в индустрии. Иными словами, они дают "разработанную методу". Таким образом, возникает...
...вопрос
А зачем вообще применять движки синтезаторов/сэмплеров, если можно просто воспроизводить музыкальные аудио-файлы, их фрагменты? Обычно это может быть менее ресурсоемко и более качественно. Да, правда. Но есть и еще один веселый нюанс, который может оказаться в будущем наиболее значимым - игры в он-лайне, виртуальные миры. Представьте себе ситуацию, когда разработчиками для он-лайна строится дополнительный мир с новыми для игроков собственными характеристиками (область, философия, персонажи, музыка и т.п.). Если в самой игре используется синтезатор/сэмплер, то музыку можно делать на его базе, а игрокам давать только небольшие потоки данных, связанных с описанием номеров инструментов, нот, эффектов и т.п. Само же воспроизведение музыки осуществляется за счет компьютера пользователя, хотя управление синтезатором поступает извне. Плюс к этому если есть необходимость в подгрузке дополнительных звуков, то это также легко реализуемо. То есть, если говорить более наглядно, то аудио приходит не в виде ужатого потока звуковых данных, а как некое подобие HTML, где просто указываются объекты и их свойства и подгружаются только необходимые данные.
Таким же образом можно быстро реализовывать ту же интерактивность (смена музыкальной темы в зависимости от ситуации). Также можно вносить и дополнительное музыкальное разнообразие, время от времени предоставляя новые музыкальные темы.
Промежуточное завершение
Звуковые движки, как и графические, относятся к разряду готовых решений, которые дают разработчикам возможность ускорения процесса разработки, превращают ее в некое подобие конструктора. На данный момент все движки синтезаторов/сэмплеров и трекеров, если мы говорим о качественном их исполнении, являются shareware или же пишутся вручную, что не так и трудоемко, как может казаться на первый взгляд. И это себя оправдывает, поскольку в стандартных решениях можно увидеть некачественно реализованную реверберацию и т.п. Все может быть очевидным даже на таком уровне.
В рамках данного материала мы описали только один вариант движков, он связан с воспроизведением музыки и сэмплерами. Но данный материал можно назвать вводным, а почему, вы поймете в следующих материалах серии.
Кристофер,
[email protected]
![Версия для печати Версия для печати](https://www.kv.by/sites/all/modules/print/icons/print_icon.png)
Комментарии