DirectPlay (DirectPlay)

Перейти к навигации Перейти к поиску

Microsoft DirectPlay — сетевой программный интерфейс (API), обеспечивающий обслуживание на транспортном и сеансовом уровне.

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

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

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

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

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

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

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

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

Ссылки[править | править код]

  • Robert Di Benedetto. Microsoft DirectPlay 8 Overview (англ.) (май 2001). — Перепечатка MSDN Technical Articles. Дата обращения: 14 июля 2012. Архивировано из оригинала 28 сентября 2012 года.