|
|
||
|
Музыка по жанрам Еще по теме
Материалы о музыке
|
Теги страницы: Инициализация DirectPlay Voice. В DirectPlay Voice не существует пирингово (peer-to-peer) интерфейса; есть только IDiiectPlay VoiceServci и IDirectPlayVoiceClient. Это значит, что перед инициализацией DirectPlay Voice вы должны выяснить, являйтесь ли вы голосовым сервером или клиентом. Нужно сказать, что DirectPlay сервер совсем не обязательно должен быть сервером DirectPlay Voice, и ничто не останавливает клиента DirectPlay от того, чтобы быть сервером DirectPlay Voice. Тем не менее, проще всего сделать выбор, используя вашу роль относительно DirectPlay: если вы хост при прямом соединении или вы сервер DirectPlay, то тогда вы и голосовой сервер. Голосовые сообщения. При создании вашего интерфейса DirectPlay Voice вы указываете функцию обратного вызова для получения сообщений DirectPlay Voice. ID сообщения DirectPlay Voice. Существующий игрок DirectPlay, что активировал DirectPlay Voice и стал игроком DirectPlay Voice. Внутри сообщения содержится ID игрока, который начал использовать голос. Вам будет нужен этот ID для установки любых дополнительных параметров игрока для использования в вашей игре DirectPlay Voice. Проверка ваших звуковых настроек. Чтобы получить максимум от голосового общения в реальном времени, игроку очень важно правильно настроить свой микрофон и динамики. Вы можете запустить диалог настройки в любое время, создав интерфейс IDirectPlayVoict'lbst и вызвав его единственный метод. Задавая аргументы метода CheckAudioSetup, вы можете выбрать устройство для воспроизведения и для записи. Полу- и полнодуплексные звуковые карты. Аппаратное обеспечение для звукозаписи делится на две большие категории, которые поддерживают полнодуплексное аудио, и те, которые не поддерживают. Полнодуплексные карты могут записывать и воспроизводить звук одновременно. Полудуплексные карты не могут записывать, когда воспроизводят и наоборот. К сожалению, DirectPIay Voice не поддерживает звукозапись полудуплексной аппаратурой. Все пользователи с полудуплексными звуковыми картами смогут слышать голоса других игроков, но не смогут говорить сами. Подавляющее большинство современных карт являются полнодуплексными, так что обычно это не проблема, но вы можете определить, использует пользователь полу- или полнодуплексную звуковую карту, используя метод клиентского или серверного интерфейса DirectPIay Voice. Этот метод возвращает структуру, заполненную всевозможной информацией об аппаратном обеспечении, включая ту, полу- или полнодуплексная карта используется. Использование CNetVoice. Как и CNetCoiiViCetionWizard, CNetVoice является вспомогательным классом, созданным Microsoft и распространяемым как часть примеров DirectX SDK. Он создан, чтобы скрыть все сложности работы с DirectPIay Voice, и он очень хорошо справляется со своей задачей. Для использования CNetVoice вы все нуждаетесь, что бы вам проиллюстрировали это, для этого выставим некоторые значения по умолчанию и вызовем его метод I!; как показано в следующем коде. Как можно увидеть, вы передаете имена двух ваших функций обратного вызова конструктору CNetVoice. Также обратите внимание, что большинство членов структуры DVOJENTCONFtG могут просто быть выставлены в их значения по умолчанию. После того как это было сделано, все, что остается, - это задать обработчики сообщений клиента и сервера. После не забудьте удалить ваш объект CNetVoice. Подсчет ссылок на объект игрока. В примере программы вы увидите, что голосовые настройки игрока и стандартные настройки игрока объединены в один объекг - CPlayer. Это обычная вещь - большинство игр предпочитают использовать один класс или структуру, которая представляет игрока, включая основные свойства DirectPlay, такие, как его имя, вместе с голосовыми свойствами DirectPlay Voice (такими, как звуковая карта). Единственная вещь, за которой вам нужно следить, — это то, что вы не удалите структуру игрока, когда он еще не прекратил играть, а только прекратил использовать DirectPlay Voice. Чтобы такого не случилось, пример программы Chl6pl_VoiceChat использует счетчик ссылок. При получении сообщения о новом, пример программы создает новый объект игрока и устанавливает его счетчик ссылок равным единице. При получении сообщения «создать голос игрока» от DirectPlay Voice программа ищет соответствующую структуру игрока (сохраненную в STL карте DPNID для объектов CPlayer) и увеличивает ее счетчик ссылок. Таким образом, к тому времени, когда все создано, все объекты игроков имеют значение счетчика ссылок равным двум - одна ссылка для DirectPlay и одна для DirectPlay Voice. Когда приходит время удалять объект, код начинает с уменьшения счетчика ссылок объекта. Только тогда, когда счетчик ссылок становится равным нолю, объект на самом деле удаляется и изымается из карты. Если вы построите все так, то не будет иметь значение, какое сообщение «удалить игрока» вы получите первым. Объект удаляется только тогда, когда и DirectPIay, и DirectPIay Voice приняли сообщения удаления. Голоса как буферы 3D звука. Одна из приятных особенностей DirectPlay Voice состоит в том, что у вас есть возможность привязать входящие голосовые потоки к источникам 3D звука. Таким образом, если другой игрок стоит слева от вас, когда он говорит, вам будет казаться, что его голос идет слева. Вы можете настроить это, вызвав метод Crcatc.'iDsoiindHiiile] интерфейса клиента DirectPIay Voice (ID i rcct!' layVoiceCIient). Этот метод позволит вам привязать источник 3D звука к конкретному ID игрока. После этого вам нужно просто совместить позицию буфера с текущей позицией игрока, и DirectX Audio сделает остальное. Совет. Обратите внимание, что объединение DirectPIay Voice с 3D звуком может быть произведено только в там случае, если вы не используете топологию смешивающего сервера. В топологии смешивающего сервера все потоки смешиваются вместе до того, как они достигнут вашего компьютера, а сервер, который производит смешивание, не имеет никакого понятия, где, относительно вас, расположены игроки. |
|