Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Графика -> Гончаров Д. -> "DirectX 7.0 Для программистов" -> 185

DirectX 7.0 Для программистов - Гончаров Д.

Гончаров Д., Салихо Т. DirectX 7.0 Для программистов — Спб.: Питер, 2001. — 528 c.
ISBN 5-318-00173-4
Скачать (прямая ссылка): dirext7dlyaprogrammistov2001.djvu
Предыдущая << 1 .. 179 180 181 182 183 184 < 185 > 186 187 188 189 190 191 .. 229 >> Следующая

Первым шагом в использовании лобби является перечисление всех лобби-провай-деров, которые могут быть применены для присоединения. Перечисление лобби-провайдеров производится подобно перечислению системных провайдеров.
Лобби-клиент использует те же методы для нахождения и присоединения к лоб-би-сеансу, что и обычное клиентское приложение для подключения к стандартному сеансу DirectPlay. Присоединение к лобби-серверу позволяет клиентскому приложению получить всю информацию о сервере и взаимодействовать с другими клиентами, присоединенными к этому серверу.
Как и в обычном DirectPlay, основной единицей в лобби является игрок. Каждый игрок представляет пользователя на клиентском компьютере, присоединенном к серверу. В лобби также присутствует понятие серверного игрока, который был создан на сервере. После того как лобби-клиент присоединиться к лобби-серверу, необходимо создать все условия для представления пользователя. Для этого создается игрок, который выступает в роли этого пользователя и присоединяется к начальной группе. Только после этого появляется возможность взаимодействия с сервером и другими игроками.
Игроки в лобби-сеансе не могут обмениваться обычными сообщениями. При использовании лобби-архитектуры любое приложение, использующее DirectPlay API может присоединиться к любому лобби-серверу. То есть на одном лобби-сер-вере могут присутствовать лобби-клиенты, использующие различные типы данных для обмена.
Лобби предоставляет дополнительные функции для передачи сообщений: SendLobbyMessageO — для передачи данных и SendChatMessageO — для отправки текстовых сообщений.
В лобби группы имеют более весомое значение, чем в обычных сеансах DirectPlay, так как они используются для организации игроков и открытия совместных сеансов. В лобби группы делятся на два типа — «комнаты» и «игровые зоны».
Комнатой называют стандартную группу, в которую могут входить как игроки, так и другие группы. Обычно комнаты используются для организации игроков
Управление игроками и группами
427
внутри лобби, а не в игровой программе. Комнаты могут содержать в себе ссылки на другие комнаты или игровые зоны.
Игровые зоны в отличие от комнат могут содержать только игроков. Они используются с целью объединения игроков для открытия совместного сеанса. После открытия сеанса игровая зона может быть либо уничтожена, либо оставлена на тот случай, если появится игрок, пожелавший присоединиться к сеансу. Комнаты обычно имеют иерархическую структуру. Группы верхнего уровня могут создавать другие группы или присоединять их к себе. Лобби-клиентам доступно перечисление всех групп, как верхнего уровня, так и присоединенных. После создания группы появляется возможность присоединить ее к другой группе, тем самым установив связь между этими двумя группами. При перечислении всех групп лобби-клиент получает информацию как о группах, так и о присоединенных подгруппах.
Сведения об игроках недоступны до тех пор, пока они не будут присоединены к какой-нибудь группе. Каждый игрок одновременно может входить в любое количество групп.
Лобби-провайдеры
В отличие от системных лобби-провайдеры создаются специально для каждого лобби-сервера и размещаются на клиентском компьютере в виде динамически подключаемой библиотеки (DLL). Лобби-клиент может подключиться к любому лобби-серверу, провайдер которого присутствует на его компьютере.
К сожалению, Microsoft DirectX SDK не содержит инструментов для создания своих провайдеров, и мы в своем примере будем вынуждены использовать провайдер, который поставляется в качестве примера с SDK.
Перечисление лобби-провайдеров осуществляется при помощи метода EnumConnectionsO интерфейса IDi rectPl ау4:
pDP->EnumConnections( &LOBBYAPPGUID. Di rectPl ayEnumConnectionsCall back. &enStruct. DPCONNECTIONDIRECTPLAYLOBBY );
В этом примере происходит перечисление лобби-провайдеров, на что указывает флаг DPCONNECTION DIRECTPLAYLOBBY.
Управление игроками и группами
Управление игроками в лобби осуществляется точно так же, как и в обычном сеансе DirectPlay. А вот управление группами в лобби имеет небольшие отличия, так как в этом случае имеются два вида групп — комнаты и игровые зоны. Создание комнаты в лобби абсолютно идентично созданию обычной группы в сеансе DirectPlay. Для создания же игровой зоны используется немного иная форма вызова метода IDi rectPl ау4: :CreateGroup():
p->lpTree->CreateGroupInGroup(p*>dpidParent. dpld, pName->lpszShortNameA.
^DPGROUPSTAGINGAREA);
Как вы уже заметили, для создания игровой зоны указывается флаг DPGROUPSTAGINGAREA. Этот флаг используется во многих функциях управления се-
428
Урок 13 • Соединение при помощи лобби
ансами, например для получения флагов сеанса, и всегда указывает на наличие игровой зоны.
Никогда не забывайте, что игровая зона в отличие от комнаты может содержать в себе только игроков, добавление других игровых зон или комнат невозможно. Если все же произойдет такая попытка, будет возвращена ошибка DPERR_ INVALIDGROUP.
В лобби-сеансах группы имеют своего владельца. Только он может изменять параметры этой группы.
Предыдущая << 1 .. 179 180 181 182 183 184 < 185 > 186 187 188 189 190 191 .. 229 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.