logo
REPORT

3.2 Розробка програмних модулів

Диаграмма классов разработанного приложения представлена на рисунке 3.6.

Рис. 3.6. Диаграмма классов разработанной платформенной игры

В таблице 3.1 представлено описание классов приложения, в таблице 3.2 – описание некоторых переменных.

Таблица 3.1. Описание объектов программы

Класс

Описание

AnimatedSprite

Хранит в себе полную информацию о персонаже (анимация, гравитация, перемещение, весь функциональный ряд)

Block

Хранит в себе информацию о блоках (спрайт блоков и т.д)

Bonus

Аналогичен классу Block только хранит информацию о бонусах

Enemy

Аналогичен классу AnimatedSprite, исключая некоторые функции функционального ряда

Game1

Тело программы

Таблица 3.2. Описание переменных программы

Переменная

Описание

Texture2D

idle, run, jump и т.д.

Хранят в себе изображение или анимационный спрайт

Bool isRunning

Переменная, отвечающая за перемещение персонажа вправо или влево

Bool isJumping

Переменная, отвечающая за прыжок персонажа

Bool isStop

Переменная, отвечающая за остановку персонажа

Rectangle rect

Структура хранит в себе позицию прямоугольника на экране, ширину и высоту. Фактически она и есть наш персонаж на экране

Фрагменты листингов представлены в Приложении А.

Framework XNA Game Studio поддерживает различные способы организации сетевого взаимодействия игр.

XNA Game Studio предоставляет через пространства имен Microsoft.Xna.Framework.GamerServices и Microsoft.Xna.Framework.Net набор функций и компонентов, позволяющих создавать главные узлы многопользовательских игр (к которым могут подключаться другие игроки), поддерживать соединения и обмен сообщениями между игроками и главным узлом, и включает многие дополнительные возможности, такие как встроенная поддержка для голосовых коммуникаций.

Главным узлом игры может быть один из игроков в одноранговых играх, или серверная машина, если используется подход клиент/сервер. Вот четыре этапа создания главного узла:

  1. Зарегистрировать игрока (с локальным или удаленным профилем).

  2. Создать сессию, установить ее свойства, включая доступные слоты.

  3. Подождать, пока другие игроки подключатся и будут готовы.

  4. Сменить состояние сессии на «Игра запущена».

Аналогичным образом можно разделить создание игрового клиента на четыре простых этапа, которые подходят как для одноранговых, так и для клиент/серверных игр:

  1. Зарегистрировать игрока (с локальным или удаленным профилем).

  2. Найти какую-нибудь сессию со свободными слотами для подключения.

  3. Подключиться к сессии.

  4. Сменить состояние игрока на «Готов».

Рассмотрим создание сессии в XNA Game Studio детально.

Класс XNA Framework NetworkSession представляет многопользовательскую сессию, и используется для создания, поиска, присоединения и завершения сессии. Он также предоставляет набор свойств, которые позволяют собирать информацию о текущей сессии.

Для создания новой сессии используется метод NetworkSession.Create, получающий до пяти параметров:

Чтобы создать сессию необходимо определить несколько закрытых переменных уровня класса и метод CreateSession в классе NetworkHelper:

private NetworkSession session = null; // Игровая сессия

private int maximumGamers = 2; // Могут играть только двое

private int maximumLocalPlayers = 1; // Нет разделенного экрана,

// только удаленные игроки

public void CreateSession()

{

if (session == null)

{

session = NetworkSession.Create(NetworkSessionType.SystemLink,

maximumLocalPlayers,

maximumGamers);

}

}

Создать многопользовательскую игровую сессию гораздо XNA проще. Однако, для работы этой сессии, чтобы она надлежащим образом обрабатывала сетевые пакеты, необходимо вызывать ее метод Update в каждом обновлении игрового цикла. Для этого необходимо включить метод Update в класс NetworkHelper:

public void Update()

{

if (session != null)

session.Update();

}

Лучший способ вызывать этот метод в каждом игровом цикле — включить следующую строку в начало метода Game1.Update:

networkHelper.Update();