Прежде, чем начатьПривет всем! Продолжаем изучать DirectX и в этот раз я попробую помочь вам создать приложение (игру, если уж быть точным) в которой будет работать сетевой мультиплеерный режим. Если вы собираетесь делать деловое приложение, которому нужно общение по сети, изучите лучше Microsoft Winsock Control, однако если вы делаете игру, то DirectPlay здорово облегчит вам задачу. Я не советую вам приступать к изучению DirectPlay, если вы еще не знакомы с другими компонентами DirectX, в частности с DirectDraw. Если вы уже программировали для разных компнонент DirectX, то наверняка заметили схожесть принципов инициализации и работы. Поэтому, далее я не буду еще раз объяснять почему все именно так, а буду ссылаться на аналогичные действия, которые вы выполняли в DirectDraw. Как бы там ни было, Приятного программирования, Antiloop Основные понятияMicrosoft DirectPlay - это набор функций API, которые позволяют приложениям для Windows создавать коммуникации через локальные сети. DirectPlay - это также технология, которая упрощает создание игровых серверов. Самая главная вещь в сетевых приложениях - донести информацию о текущем состоянии игрового поля (назовем его "миром") до всех компьютеров, учавствующих в сессии. Текущее состояние мира - это то, что пользователь может видеть на своем компьютере, и какие действия он может выполнять. В "мир" входят две вещи: окружающая среда и индивидуальные пользователи (или игроки). Окружающая среда состоит из объектов, которыми игроки могут манипулировать или с которыми они могут взаимодействовать. Например, это может быть карта подземелья, гоночный трек или даже некий документ. Окружающая среда может также включать в себя контролируемых компьютером игроков. Внутри окружающей среды, каждый игрок имеет набор собственных свойств, отражающих его состояние. К таковым может относиться позиция, скорость, энергия, защита и т.п. Когда игрок впервые подсоединятся к сессии, теущее ее состояние должно быть загружено к нему, включая окружающую среду и состояние других игроков. Действия, выполняемые пользователем в прогрессе игры изменяют состояние сессии. Когда это происходит, изменения должны быть донесены до остальных компьютеров в этой сессии путем распространения сообщений. Есть много способом обновления состояния сессии, но все они основываются на распространении сообщений межу компьютерами. Когда два игрока пытаются сделать действие, которое может повлиять друг на друга и на окружающую среду (например оба пытаются открыть одну и ту же дверь) неизбежны конфликты в программе. Поэтому, требуется ввести некий арбитражный код, который будет следить за появлением таких конфликтов и устранять их. Все конфликты должны быть устранены до того, как сессия будет обновлена. Существует два основных способа поддержания соединения и постоянного обновления сессии:
С DirectPlay вы можете создавать и управлять обоими типами соединения peer-to-peer и client/server. DirectPlay имеет полный набор инструментов, которые необходимы для написания полнофункционального сетевого приложения.
Ступени в создании простого приложения DirectPlay1. Инициализировать DirectPlay. 2. Перечислить доступные сетевые протоколы. 3. Инициализировать соединение 4. Создать, или подсоединиться к существующей сессии 5. Создать игрока 6. Начать игру [Вверх] |