netlib.narod.ru | < Назад | Оглавление | Далее > |
Rock Rain Enhanced уже реализует многие возможности, которые вам понадобятся для новой многопользовательской сетевой версии Rock Rain. Вам надо добавить новый элемент в меню из начального экрана игры, который будет вести к новой сцене с вариантами для сетевой игры (создание игры, присоединение к игровой сессии, и т.д.). После добавления этой новой сцены, начальная сцена будет выглядеть как показано на рис. 6.1.
Рис. 6.1. Новая начальная сцена
Вам по-прежнему надо заранее подумать о том, как ваша игра будет работать в сети. Вы видели в предыдущей главе, что XNA предоставляет всю поддержку для обмена данными между игроками по сети, будь то локальная сеть или сервис LIVE. Достаточно просто отправлять и получать данные синхронизированным и безопасным способом, но главный вопрос в следующем: что вы должны отправлять или получать на машине игрока чтобы создать сетевой матч?
Вспомните, что Rock Rain — это игра, в которой вы должны избегать астероидов (и других игроков) и пытаться получить источники энергии, чтобы оставаться в игре как можно дольше. Итак, два игрока должны быть синхронизированы, чтобы они видели одни и те же астероиды, счет другого игрока, источник энергии и т.д. Следовательно, они должны совместно использовать одно и то же состояние игры.
Помните главу 2? Здесь мы немного больше поговорим о состоянии игры; управление этим состоянием — одна из наиболее важных задач в любой игре. В случае Rock Rain Live, помимо управления этим состоянием, вы также должны подумать о том, как синхронизировать состояние у двух игроков, которые будут играть матч по локальной сети или через сервис Microsoft LIVE.
В этой игре вы используете архитектуру клиент/сервер, описанную в предыдущей главе, где один из игроков является игровым сервером, предоставляющим службы синхронизации игрового состояния самому себе. Мы назовем этого игрока локальным игроком. Другой игрок является игровым клиентом, потребляющим данные от сервера, чтобы показать корректное состояние игры другому игроку. Мы назовем этого игрока удаленным игроком.
Очевидно, что удаленный игрок будет всегда потреблять информацию от локального игрока для получения игрового состояния. Удаленный игрок будет всегда спрашивать о состоянии игры, получая от локального игрока счет игры, местоположения астероидов, и т.д. Следовательно, локальный игрок всегда имеет «контроль» над состоянием игры, и изменение этого состояния всецело зависит от него (например, добавление новых астероидов).
Однако, удаленный игрок управляет новым игровым состоянием: его собственным местоположением на экране. Таким образом, вы также информируете локального игрока о местоположении удаленного игрока, чтобы игровое состояние оставалось синхронизированным между двумя игроками.
Такой информационный обмен требует привлечения большого числа кода, но он не сложен. Затем вы создаете все коммуникационные протоколы для отправки информации об игровом состоянии между игроками простым, но мощным способом, который может меняться или расширяться в других играх.
netlib.narod.ru | < Назад | Оглавление | Далее > |