Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика Домашнее задание 1.doc
Скачиваний:
2
Добавлен:
19.11.2019
Размер:
138.75 Кб
Скачать

2.2. Application Model

В расширенном каркасе высокоуровневых классов и, в частности, в Application Model (Модель приложения) реализована общая структура работы модели приложения. Этот набор компонентов позволяет автоматизировать процесс создания игры и создает за вас механизм реализации оконного или полноэкранного приложения, организует необходимый в игре таймер, обрабатывает различные сообщения, управляет процессом рисования сцены на экране монитора (рендиринг), загрузкой ресурсов игры и т. д.

Все перечисленные элементы преподносятся вам в виде готового шаблона игры с небольшим количеством строк исходного кода, в которые вам необходимо вставлять свой код игры. То есть за вас создается полнофункциональный каркас игрового приложения, готовый к «употреблению». Например, давайте посмотрим на исходный код каркаса игры, созданный шаблоном XNA Game Studio Express и Visual C# Express, представленный в листинге 2.1.

/// <summary>

/// Здесь происходит обновление состояния игровых объектов, логики, звука,

/// получение событий с устройств ввода и так далее

/// Метод реализует простой таймер

/// </summary>

protected override void Update(GameTime gameTime)

{

// Обработка событий, получаемых с джойстика

if(GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

this.Exit();

// Добавьте свой код для обновления состояния игровых объектов

// Это таймер

base.Update(gameTime);

}

Класс Game1 описан в файле с расширением *.cs (Game1.cs). Расширение в данном случае указывает на то, что используется язык программирования С#. Весь исходный код создан шаблоном, а перевод комментариев на русский язык осуществлен в вольной форме. Класс Game1.cs создал за нас полное игровое оконное приложение с методами для загрузки графической составляющей игры, инициализации данных, систему вывода сцены на экран, систему обновления состояния игры (таймер) и даже обработку событий, получаемых с джойстика. Неплохо, не правда ли? Более подробно с классом Game1 мы начнем знакомиться в следующих главах, когда приступим к работе над своей игрой.

2.3. Компонент Content Pipeline

Одной из важнейших составляющих любой программы является графический и игровой контент, который включает в себя различные графические изображения (текстуры, спрайты…), звуковые файлы, модели и материалы. Если вспомнить методику загрузки графики в DirectX, то станет понятно, почему в XNA уделено этому большое внимание.

В DirectX, чтобы загрузить модель, приходилось писать десяток другой строк исходного кода! Более того, загружать можно было только определенные графические файлы, которые DirectX понимал. Для остальных моделей и изображений приходилось писать свои экспортеры или искать инструменты для конвертирования контента в необходимый формат данных.

Используя XNA Framework и Content Pipeline (Конвейер контента), который входит в пространство имен Microsoft.Xna.Framework.Content, вам не нужно беспокоиться о том, в каком формате представлено изображение или модель. Вы просто пишете пару строк исходного кода, и ваш графический контент будет успешно загружен в игру внутренними средствами конвейера. В главе 6 мы подробно остановимся на этом вопросе.

Конвейер контента понимает следующие форматы:

  1. Трехмерные модели – формат X и формат FBX. Формат Х – это всем известный Х(файл, или мэш. Формат FBX – относительно новый формат в игровой индустрии, продвигаемый компанией Autodesk, и поскольку эта же компания является создателем всем известного инструментария 3DMAX Studio, то сомнений в дальнейшем распространении этого формата нет. На сайте компании Autodesk можно бесплатно скачать плагин и конвертер для преобразования сделанной модели в 3DMAX Studio до версии 8 в формат FBX. В 3DMAX Studio 9 все перечисленные средства встроены по умолчанию.

  2. Графические изображения – поддержаны наиболее распространенные графические форматы DDS, BMP, JPG, PNG и TGA.

  3. Материал – имеется поддержка формата FX, или формата шейдеров.

  4. Аудиоформат – осуществлена поддержка работы с проектами, созданными при помощи XACT. Подробно о самом формате и загрузке в игру звуковых данных вы узнаете в главе 13.

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

private Texture2D mySprite;

private Model myBoll;

mySprite = content.Load<Texture2D>(“sprite”)

myBoll = content.Load<Model>(“boll”);

В последних двух строках этого блока кода мы загрузили в программу из корневого каталога проекта графическое изображение и модель (для дополнительной или вложенной папки используется следующая запись «Имя_папки\\boll»). Вот и все, теперь вы можете использовать загруженные элементы для вывода на экран монитора (о том, как это сделать, в следующих главах).

Если представить себе абстрактно внутренний принцип работы Content Pipeline и то, как происходит загрузка контента в игру и его преобразование, то можно перейти к следующей схеме (рис. 2.3). Как видно из этого рисунка, весь игровой контент проходит через конвейер импорта и преобразования данных, после чего на выходе в проекте получаются файлы со специфическим расширением XNB и XACT для звуковых данных. На этапе запуска игры в игровом процессе принимают участие именно преобразованные файлы с расширением XNB и XACT. Все преобразования контента происходят внутренне, без вашего участия и на этапе компиляции проекта в Visual C#.