Быть может кто-то из Вас знает игру Sims, к какому жанру она относиться? Жизненная симуляция, ролевая игра, там можно и дома строить..... |
Сетевые игры
Задачи работы
- Изучить модели сетевого взаимодействия игр
- Познакомиться с поддержкой сервиса Microsoft LIVE для Windows-игр
- Ознакомиться с объектами XNA, предназначенными для организации сетевого взаимодействия игр
- Создать сетевую игру – клон игры Pong.
Модели сетевого взаимодействия компьютерных игр
Существуют две основные модели взаимодействия сетевых игр.
Первая модель – это Peer-to-peer – то есть, архитектура, основанная на взаимодействии равноправных программ. Такая модель взаимодействия предусматривает равноправие каждой из запущенных копий игры. При подобном способе взаимодействия каждая из запущенных копий игры равноправна, она обязана отслеживать состояние других копий, отправлять каждой из них сообщения. Такая модель взаимодействия подходит лишь для игр, предусматривающих небольшое количество игроков – при росте количества лавинообразно увеличивается поток сообщений, которыми они вынуждены обмениваться для поддержания игрового процесса. Фактически, каждая из копий игры связана с каждой из других копий. Схематически модель взаимодействия peer-to-peer вы можете видеть на рис. 16.1.
Как правило, в такой модели взаимодействия одна из игр назначается хостом – именно к ней должны обратиться новые игроки для того, чтобы принять участие в игре. Однако хост не управляет обменом сообщениями между играми
Вторая модель сетевого взаимодействия игр – это модель Client/Server (Клиент/Cервер). При таком взаимодействии выделяется два вида программ. Первая – это программа-сервер, на которую ложатся все заботы по организации игры и по взаимодействию с программами-клиентами. При таком подходе клиенты обмениваются сообщениями лишь с сервером, не взаимодействия друг с другом напрямую. Этот подход позволяет создавать игры, эффективно использующие пропускную способность каналов связи и поддерживающие одновременное участие в игре множества игроков. На рис. 16.2. вы можете видеть схематически изображенную модель взаимодействия Client/Server.
Каждая из игр одноранговой архитектуры является самостоятельной единицей, содержащей в себе все необходимое для полноценной организации игрового процесса. Фактически, каждая из копий игры работает самостоятельно, отсылая другим копиям информацию о своем состоянии и получая от других игр данные об их состоянии. При клиент-серверной схеме взаимодействия возможны несколько подходов. При первом каждый клиент является полноценной программой, которая выполняет все необходимые вычисления и отсылает серверу лишь их результаты. В итоге сервер превращается в инструмент для рассылки информации о состоянии игр между подключенными к нему клиентами. Второй подход заключается в большей нагруженности сервера – так, например, все игровые вычисления могут вестись на сервере, а клиенты используются лишь для приема ввода пользователя и отправки его на сервер, а так же для визуализации принятых от сервера данных.
Возможны и другие модели организации сетевого взаимодействия игр. Например – кольцевая система обмена сообщениями или модель, предусматривающая наличие нескольких игровых серверов.
Виды сетевых игр
Сетевые игры можно подразделить на два вида. Первый вид – это пошаговые игры (Turn Based Games). Яркий пример подобных игр – шахматы, шашки, компьютерные представления настольных игр. Игрок имеет определенное время на то, чтобы принять решение об очередном действии, ходе, а другие игроки вынуждены ждать своей очереди. Такие игры хорошо переносят проблемы сетевой связи – задержка прибытия сообщения на несколько секунд не слишком испортит впечатление от неторопливого шахматного турнира.
Второй вид игр – это игры реального времени (Real Time Games). К таким играм относится, например, популярная Counter Strike. Действия игроков происходят в реальном времени – даже небольшая проблема со связью способна очень сильно помешать игровому процессу.
Многие современные игры, не поддерживающие игру по сети, предусматривают хранение результатов игр на специальных интернет-сервисах фирм-производителей игр, позволяя игрокам соревноваться друг с другом "заочно".
XNA поддерживает различные способы организации сетевого взаимодействия игр.
Сетевые сервисы XNA
Мы отметим здесь два основных вида сетевого взаимодействия игр, которые поддерживает XNA.
Первый вид – это игры, которые используют для взаимодействия сервис Microsoft LIVE. Например – одна из моделей взаимодействия через LIVE организуется с помощью сессии типа NetworkSessionType.PlayerMatch. Для того, чтобы играть в такие игры, нужно подключение к Интернету, нужно получить учетную запись на сервере LIVE. Этот вид сетевых игр позволяет объединять игроков без учета их территориальной расположенности или других подобных ограничений.
Второй вид – это игры, которые могут взаимодействовать лишь в локальной сети. Эта модель взаимодействия реализуется с помощью сетевой сессии типа NetworkSessionType.SystemLink. Для организации игры не нужно подключение к Интернету, LIVE-аккаунт. Эта модель взаимодействия хорошо подходит для простых игр, однако, если вы хотите серьезно заниматься разработкой сетевых игр на платформе XNA – ориентируйтесь на LIVE-игры.
Рассмотрим последовательность создания сетевой составляющей компьютерной игры.