Основные понятия

Microsoft DirectPlay - это набор функций API, которые позволяют приложениям для Windows создавать коммуникации через локальные сети. DirectPlay - это также технология, которая упрощает создание игровых серверов.

Самая главная вещь в сетевых приложениях - донести информацию о текущем состоянии игрового поля (назовем его "миром") до всех компьютеров, учавствующих в сессии. Текущее состояние мира - это то, что пользователь может видеть на своем компьютере, и какие действия он может выполнять. В "мир" входят две вещи: окружающая среда и индивидуальные пользователи (или игроки).

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

Когда игрок впервые подсоединятся к сессии, теущее ее состояние должно быть загружено к нему, включая окружающую среду и состояние других игроков.

Действия, выполняемые пользователем в прогрессе игры изменяют состояние сессии. Когда это происходит, изменения должны быть донесены до остальных компьютеров в этой сессии путем распространения сообщений. Есть много способом обновления состояния сессии, но все они основываются на распространении сообщений межу компьютерами.

Когда два игрока пытаются сделать действие, которое может повлиять друг на друга и на окружающую среду (например оба пытаются открыть одну и ту же дверь) неизбежны конфликты в программе. Поэтому, требуется ввести некий арбитражный код, который будет следить за появлением таких конфликтов и устранять их. Все конфликты должны быть устранены до того, как сессия будет обновлена.

Существует два основных способа поддержания соединения и постоянного обновления сессии:

  • Peer-to-peer. Или соединение равноправных узлов, отличающееся отстутствием какого-либо сервера. При таком способе каждый компьютер имеет собственную копию состояния мира и всех игроков. То, что происходит на каждом компьютере доносится до всех остальных компьютеров в сессии. Не существует одного, ответственного за все компьютера.
  • Client/Server. Это распространенный способ, при котором один компьютер отвечает за все: сам обновляет мир, устраняет конфликты и т.д. Все остальные компьютеры при этом - клиенты. Они загружают нужные части состояния мира, а когда надо поменять состояние с их стороны, они говорят об этом серверу, который доносит изменение до всех остальных компьютеров по необходимости.

С DirectPlay вы можете создавать и управлять обоими типами соединения peer-to-peer и client/server. DirectPlay имеет полный набор инструментов, которые необходимы для написания полнофункционального сетевого приложения.