вторник, 6 марта 2012 г.

Практическое применение XNA. Часть 5.

 Звуковое оформление в XNA :
Работа со звуком в играх до недавнего времени не отличалась особой легкостью.
В том же DirectX SDK на организацию звукового движка уходило очень много времени, а с появлением Xbox 360 программирование звука в играх на базе
DirectX SDK стало и вовсе невозможным. Поэтому для платформы XNA был создан новый компонент под названием  (Microsoft Cross Platform Audio CreationTool). Или просто XACT. Это кросс платформенный механизм, позволяющий создавать отдельные звуковые проекты, которые впоследствии вы можете встроить в свою игру, как для ПК, так и для Xbox 360, затратив при этом минимум усилий и времени. Все проекты с использованием XACT создаются по одному принципу. Вам необходимо произвести стандартный набор операций, и у вас на руках будет готовый звуковой проект. В этой главе вы научитесь создавать XACT проекты и интегрировать их в свои программы. Что касается нашей игры, то мы добавим в программу два звуковых эффекта. Один звуковой эффект будет проигрываться в момент касанияплатформы и падающего объекта, а второй звуковой эффект будет воспроизводиться, когда объект упадет в пропасть. Сейчас вам главное – разобраться с общим принципом работы проектов XACT, а затем вы сможете интегрировать в своиигры любое количество звуковых эффектов или отдельных мелодий. Начнем с того, что рассмотрим технику и механику создания проектов XACT.
Создаем проект XACT 
Прежде чем начинать создавать проект XACT, необходимо подготовить все звуковые файлы, которые вы собираетесь использовать в игре. Причем отнеситесь к этому делу ответственно, поскольку заменить один или несколько не понравившихся вам звуковых файлов в проекте простой операцией удалить/вставить нельзя. Придется редактировать созданный ранее проект XACTзаново. Алгоритм действий по созданию проекта XACT и добавлению его в программу следующий. Вы создаете определенное количество звуковых файлов и явно добавляете их в свой проект. Затем с помощью программы Microsoft Cross Platform Audio Creation Tool создается XACT проект, в котором выполняется ряд простых действий пара-тройка кликов кнопкой мыши  для присоединения к XACTпроекту звуковых файлов. Когда все операции выполнены, нужно просто сохранить проект XACT в рабочем каталоге вашего проекта в том месте, где хранятся звуковые файлы. После этого начинается работа над исходным кодом проекта, в котором вам необходимо описать ряд стандартных действий для воспроизведения звуковых эффектов в игре.
Программа Microsoft Cross Platform Audio Creation Tool понимает три формата: WAV, AIF и AIFF. Самый распространенный и часто используемый в играх – это, конечно, WAV формат. Кстати, очень  много начинающих  программистов склоняются к формату MP3, но на самом деле не учитывают один недостаток этого формата. Если вы не в курсе, то знайте, за использование формата MP3 в играх необходимо платить, то есть приобретать соответствующую лицензию, которая стоит приличных денег. Поэтому бесплатный WAV формат, по крайней мере для начинающих программистов, смотрится проще, да и всегда можно преобразовать звуковые файлы из формата MP3 в формат WAV.
На самом деле в коммерческих проектах необходимо очень ответственно подходить к созданию звуковой дорожки игры. Лучше всего для этих целей привлекать хороших аранжировщиков, которые действительно могут без видимых усилий сыграть на слух любую мелодию. Но это мы немного отвлеклись, теперь переходим к созданию XACT проекта, который изучим в пошаговом режиме. 
   1. Создайте в каталоге рабочего проекта новую папку под названием Sound (команды Add New Folder). Эту папку лучше всего переместить или изначально создать как вложенную в папке Content.
   2. В дальнейшем в эту папку мы добавим звуковой файл, предназначенный для воспроизведения в игре. Звуковые файлы могут находиться где угодно, поскольку их добавление в проект, как вы помните, должно происходить явно. Для добавления в проект звуковых файлов в панели Solution Explorer щелкните правой кнопкой мыши на названии папки Sound ив контекстном меню выберите команды Add Exiting Item. Откроется диалоговое окно Add Exiting Item. В этом окне в списке Files of Types нужно выбрать тип Audio files и найти на вашем компьютере звуковые файлы. В нашей игре в качестве таких файлов выступают WAV файл под названием error. После этой операции в папку sound добавится файл. Всегда сначала явно добавляйте звуковые файлы в свой проект и только потом приступайте к созданию проекта XACT, который, в свою очередь, берет эти звуковые файлы из папки вашего проекта!
    3. Сейчас можно на некоторое время отложить в сторону работу с Visual C# Express и перейти к созданию XACT проекта. Инструментарий Visual C# Express можно оставить открытым, а можно закрыть, существенной разницы в этом нет. Открываем на компьютере программу Microsoft Cross Platform Audio Creation Tool, которая поставляется вместе с инструментарием XNA Game Studio Express. Для этого выполните на компьютере команды Пуск Все программы Microsoft XNA Game Studio Express Tools Microsoft Cross Platform Audio Creation Tool. Откроется рабочее окно программы, изображенное на рис.16. Приступим к созданию нового проекта.
    4. Поочередно в рабочем окне программы выполните следующие команды. Сначала в линейке меню изберите команды Wave Banks New Wave Bank, а затем команды Sound Banks New Sound Bank. Итогом этих операций станет открытие двух пустых окон в рабочей области Microsoft Cross Platform Audio Creation Tool с одноименными названиями выполняемых команд (рис. 17). Эти два пустых файла, входящих в один проект, позволяют в пару кликов мыши конвертировать ваши звуковые данные для XACT проекта.
    5. Затем выберите в линейке меню команду View и в появившемся меню изберите флажком платформу, для которой вы создаете проект. Есть всего два варианта – это Xbox 360 или Windows. Выбрав платформу, нажмите правой кнопкой мыши на пустом месте файла Wave Bank. Появится контекстное меню, где необходимо избрать команду Insert Wave File(s), как показано на рис. 18. Выполнение этой команды откроет простое диалоговое окно выбора файлов. Проследуйте в этом окне в каталог вашего рабочего проекта в папку Sound и добавьте звуковой файл – error.
Он моментально добавится в файл Wave Bank (рис. 19). Этой операцией вы присоединили два звуковых файла к проекту XACT.
Всегда сначала явно добавляйте звуковые файлы в каталог своего проекта и только потом уже из этого каталога добавляйте в Wave Bank все звуковые файлы, иначе в дальнейшем у вас может возникать масса непонятных ошибок во время компиляции и сборки проекта!
    6. Затем выделите курсором мыши два добавленных файла в Wave Bank и перетащите файл в окно Sound Bank, непосредственно в часть окна с названием Cue Name (рис. 20). После перетаскивания файлов их названия появятся в Cue Name. Клик мыши на любом из файлов откроет более подробную информацию о звуковом файле во всех текстовых частях окна Sound Bank. Убедитесь, что все добавленные файлы при клике на них мышью отображают свои свойства во всех текстовых частях окна Sound Bank.
Если какой - то из  файлов не представлен во всех текстовых областях окна Sound Bank, то нужно обязательно удалить этот файл из окна Sound Bank щелчок правой кнопкой мыши на названии файла и выбор команды Delete. Затем необходимо вновь выполнить операцию по перетаскиванию данного файла из окна Wave Bank в окно Sound Bank. Но обычно все работает с первого раза.
     7. Последний штрих к созданию кросс(платформенного проекта XACT – это сохранение всего того, что вы сейчас имеете в открытом окне программы Microsoft Cross-Platform Audio Creation Tool. Выберите в меню команды File Save Project As и в появившемся диалоговом окне Save Project As (рис. 13.8) проследуйте в каталог вашего проекта в папку sound. В поле этого окна Имя файла задайте любое название проекту и нажмите кнопку  Сохранить. Всегда сохраняйте проект XACT в той папке вашего проекта, где хранятся звуковые файлы! На этом все, вы создали и сохранили проект XACT в рабочем каталоге вашего проекта (рис. 13.9), и теперь можно спокойно приступать к работе над исходным кодом программы.
Итогом всех этих незамысловатых действий стало создание проектного файла mySound.xap. Что нам это дало? В момент компиляции проекта в работу вступит Content Pipeline, который своими внутренними сервисами на основе проектного файла mySound.xap произведет преобразование всех звуковых файлов проекта в три специфических файла: Wave Bank.xwb, Sound Bank.xsb и mySound.xgs. Именно из этих трех файлов в дальнейшем будет происходить воспроизведение звука в игре. То есть после того как вы откомпилируете проект, в рабочем каталоге проекта в папках Debug или Release Content Sound появятся новые файлы Wave Bank.xwb, Sound Bank.xsb и Sound.xgs – и вся работа программы со звуковыми данными будет происходить именно с этими файлами.
    Ключевыми фигурами в звуковых проектах, основанных на использовании XACT, являются три класса: AudioEngine, SoundBank и WaveBank. Объявление и создание объектов этих классов, а также загрузка звука в игру всегда происходят в одном и том же ключе. Посмотрите на нижеприведенные строки исходного кода.

В своих играх вам обязательно захочется воспроизводить одну или более мелодий в цикличном режиме. В XNA Game Studio Express такая возможность, несомненно, имеется. При этом цикличное воспроизведение одного из файлов задается еще на этапе формирования проекта XACT. Посмотрите на рис. 21, где представлен этап добавления в проект XACT новых звуковых файлов. Так вот если в окне Sound Bank выделить курсором название файла, а затем в правой части этого окна выделить ветку структуры древовидной иерархии с названием Play Wave (рис. 22), то в левой части главного окна программы Microsoft Cross - Platform Audio Creation Tool откроется дополнительная панель со свойствами выбранного звукового файла. В перечислениях свойств файла имеется параметр LoopEvent. В данный момент значение этого параметра выставлено в No, что означает: цикличное воспроизведение для этого файла не задано (рис. 13.11). Для того чтобы установить цикличность для этого параметра, достаточно выбрать из списка значение Infinite и продолжать работу с проектом по рассмотренной в этой главе схеме. Затем, когда вы запустите проект, то для того файла, для которого назначили цикличное проигрывание, программа автоматически выберет заданный режим воспроизведения.

Комментариев нет:

Отправить комментарий