DirectPlay

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Microsoft DirectPlay — сетевой программный интерфейс (API), обеспечивающий обслуживание на транспортном и сеансовом уровне. DirectPlay работает поверх протоколов IPv4, IPX и по прямому соединению модемами или последовательным кабелем. Голосовое API DirectPlay позволяет передавать голос в реальном времени с использованием различных кодеков, требующих небольшую ширину полосы пропускания 1,2—32 Кбод.

Функционирование DirectPlay[править | править вики-текст]

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

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

Внутренний сервис DPNSRV сохраняет список всех сессий, запущенных на машине, и передаёт его клиентам, подключающимся к выделенном для DirectPlay порту 6073. Номера портов для соединений между клиентами (или клиентов с сервером) указываются при установке соединения.

Передача голоса[править | править вики-текст]

При использовании топологии клиент-клиент аудиопоток передаётся одновременно всем получателям. Требуемая ширина полосы пропускания и нагрузка на ЦПУ клиента увеличивается с ростом количества клиентов, поэтому данная топология плохо масштабируется.

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

Другим вариантом клиент-серверной модели является пересылка сессий, при которой сервер пересылает аудиопоток всем получателям без микширования. Это значительно снижает загрузку ЦПУ сервера (но повышает для клиентов, поскольку им приходится производить микширование), требуемая полоса пропускания меньше чем при использовании топологии клиент-клиент, но больше чем при микшировании сессий.

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

Ссылки[править | править вики-текст]