microsoft xna для чего

Microsoft XNA: Арканоид шаг за шагом

Несколько дней назад, бороздя просторы великого и могучего Интернета, наткнулся на Microsoft XNA Studio. Не то чтобы услышал об этом фреймворке в первый раз, но все предыдущие разы как-то проходил мимо, времени разбираться не было совершенно.
В этот раз что-то меня дернуло покопаться поглубже. Справедливо рассудив что для знакомства с библиотекой лучшего метода чем реализовать что нибудь на нем нет, а также имея в распоряжении свободный вечер, решил написать что нибудь простенькое, например любимый мною с детства Arkanoid (Brick Out), не корысти ради, а ознакомления для.

Это моя первая статья на хабре, убедительно прошу ногами не пинать

Смысл данной статьи показать как легко можно начать создавать свои игры при помощи XNA и, собственно, дать стимул для дальнейшего изучения этой платформы. Посему, на полноценную игру не претендует, графика — никакая, как и художник из меня. Да и физика могла бы быть пореалистичнее, но это уже выходит за рамки данной статьи, уверен что интересующиеся разработкой игр найдут немало достойных (и не очень) материалов в сети.

Исходники можно скачать тут

Итак, что же такое Microsoft XNA?

Последняя версия на момент написания статьти – Microsoft XNA Game Studio 3.1 (73.2 MB)

Создание проекта

Создадим новый проект – XNA Game Studio 3.1 – Windows Game (3.1)

Мастер создаст скелет игры:

Самый большой интерес для нас представляет файл Game1.cs, в котором определен класс Game1, наследованный от Microsoft.Xna.Framework.Game, где мы и будем разрабатывать нашу игру.
В классе Game1 переопределены следующие методы Game:

void Initialize() – Вызывается единожды, для инициализации ресурсов до начала игры
void LoadContent() – Вызывается единожды, используется для загрузки контента (спрайты и т.д.)
void UnloadContent() – Вызывается единожды, используется для выгрузки контента
void Update(GameTime gameTime) – В этом методе реализуется собственно логика игры, обработка коллизий, обработка событий клавиатуры или джойстика, проигрывание аудио и т.д.
void Draw(GameTime gameTime) – Вызывается для прорисовки игрового поля.

На данный момент скомпилированная игра выглядит вот так

Добавление контента

Обратите внимание на свойство Asset Name, его мы используем для создания обьекта Texture2D необходимого для дальнейшей анимации.

Рисуем фон игрового поля

Загрузим изображение для фона игрового поля:

Метод SpriteBatch.Begin подготавливает графическое устройство к отрисовке спрайтов, SpriteBatch.End завершает процесс отрисовки и возвращает устройство к начальному состоянию. Все методы SpriteBatch.Draw должны быть заключены в SpriteBatch.Begin — SpriteBatch.End.

Создание игрового обьекта

Создадим класс GameObject инкапсулирующий любой из наших игровых обьектов:

Отрисовка и анимация ракетки

Сначала создадим обьект представляющий ракетку и расположим его в середине игрового поля чуть повыше от его нижнего края

Отрисовка ракетки на экране

На данном этапе, если скомпилировать приложение, получим что-то вроде этого:

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

Отрисовка кирпичей

Создадим массив GameObject представляющий кирпичи которые собственно и будем разбивать

Добавим следующий код в метод LoadContent()

Отрисовка массива кирпичей, отисовка производится если кирпич “жив”, т.е. не разбит мячем

На данном этапе игровое поле выглядит следующим образом

Отрисовка мячика

Создаем обьект мячика

Для анимации мячика добавим новый метод UpdateBall(), и его вызов в в метод Update(). Данный метод нам понадобится в дальнейшем для обработки столкновений мячика с кирпичами и ракеткой

Для отрисовки мячика добавим следующий код в метод Draw()

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

Обработка столкновений

Создадим новый метод определяющий место столкновения обьектов и меняющий направление полета мяча.

Добавим следующий код в метод UpdateBall()

Итак, что получилось

Конечно физика в игре, мягко говоря, никакая, мячик иногда залипает при столкновении с движущейся ракеткой. Но, повторюсь, смысл данной статьи знакомство со средой Microsoft XNA Game Studio, и, надо сказать, она отлично справляется с рутиной, освобождая время разработчика для фокусировки внимания на логике игры.

Исходники можно скачать тут

PS. Большое спасибо ivv за приглашение.
PPS. Спасибо за карму, перенес в XNA

Источник

Обзор Microsoft XNA

Цель лекции: Обзор пакета Microsoft XNA, перспективы его применения в данной системе.

Из предыдущих лекций мы помним, что Microsoft XNA— набор инструментов с управляемой средой времени выполнения (. NET ), созданный Microsoft, облегчающий разработку и управление компьютерными играми. XNA стремится освободить разработку игр от написания «повторяющегося шаблонного кода» и объединить различные аспекты разработки игр в одной системе. Набор инструментов XNA был анонсирован 24 марта 2004 на Game Developers Conference в Сан-Хосе, Калифорния.

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

Первое что нам предстоит сделать, написать простую программу, отображающую небольшое приветствие в центре экрана. Но сделать это здесь не так просто как в приложениях на Silverlight. В них текст обычно превалирует, а в видеоиграх его встретишь не часто. В играх роль текста сведена к описанию правил или отображению счета. Поэтому сама концепция приложения «здравствуй, мир» не вполне вписывается в общую идеологию программирования на XNA.

В XNA даже нет встроенных шрифтов. И приложение на XNA, выполняющееся на телефоне, не может использовать те же встроенные шрифты телефона, что и программы на Silverlight, как это можно было бы предположить. Silverlight применяет векторные шрифты TrueType, а XNA ничего не знает о таких экзотических концепциях. Для XNA все, включая шрифты, является растровыми изображениями.

Читайте также:  провозглашение курса нэп в каком году

Чтобы помочь в решении этого правового затруднения, Майкрософт предоставляет лицензию на использование шрифтов Ascender Corporation именно в целях их применения в приложениях на XNA. Вот эти шрифты:

Обратите внимание, что в шрифте Pericles в качестве строчных букв используются уменьшенные заглавные, поэтому, вероятно, он подойдет только для заголовков.

В левой части диалогового окна выберите Visual C # и XNA Game Studio 4.0. В середине выберите Windows Phone Game (4.0). Задайте месторасположение и имя проекта, XnaHelloPhone.

Visual Studio создает два проекта, один для логики приложения и другой для его содержимого. Приложения на XNA обычно включают большой объем содержимого, которым преимущественно являются растровые изображения и трехмерные модели, но также и шрифты.

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

Проект XNA: XnaHelloPhone Файл : SpriteFont1.spritefont (полностью за исключением комментариев)

ASCII (англ. American Standard Code for Information Interchange ) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов.

Изначально проект XNAHelloPhone включает два C #-файла: Program.cs и Game1.cs. Первый очень простой и, как выясняется, не имеет отношения к играм для Windows Phone 7. Директива препроцессора активирует класс Program ( Программа ), только если определен символ WINDOWS или XBOX. При компиляции программ для Windows Phone вместо них задается символ WINDOWS_PHONE.

Чаще всего при создании небольших игр основная часть времени уходит на файл Game1.cs. Класс Game1 наследуется от Game ( Игра ). Первоначально в нем определены два поля: graphics (графические элементы) и spriteBatch (Пакет спрайтов). К этим двум полям добавим еще три:

Проект XNA: XnaHelloPhone Файл : Game1.cs (фрагмент, демонстрирующий поля)

В этих трех новых полях просто указан текст для отображения, используемый для этого шрифт и месторасположения текста на экране. Координаты задаются в пикселах относительно верхнего левого угла экрана. Структура Vector2 имеет два поля: X и Y, типа float (число с плавающей точкой).

В целях обеспечения лучшей производительности в XNA все значения с плавающей точкой берутся с одинарной точностью. (В Silverlight – с двойной точностью.) Структура Vector2 часто используется для задания точек, размеров и даже векторов в двухмерном пространстве.

При запуске игры на телефоне, создается экземпляр класса Game1 и выполняется конструктор Game1. Рассмотрим стандартный код:

Проект XNA: XnaHelloPhone Файл : Game1.cs (фрагмент)

По умолчанию частота кадров для Windows Phone составляет 30 кадр/с.

В третьем выражении задается время игрового цикла программы, что управляет частотой обновления изображения.

Когда экземпляр Game1 создан, вызывается его метод Run (Выполнить), и базовый класс Game инициирует процесс запуска игры. Один из первых шагов – вызов метода Initialize (Инициализировать), который может быть перегружен в производных от Game классах. XNA Game Studio автоматически формирует скелетный метод, в который мы не будем ничего добавлять:

Проект XNA: XnaHelloPhone Файл : Game1.cs (фрагмент)

В методе Initialize шрифт или любое другое содержимое не должно загружаться. Это происходит несколько позже, когда базовый класс вызывает метод LoadContent (Загрузить содержимое). Добавим несколько строк, чтобы содержимое соответствовало следующему:

Проект XNA: XnaHelloPhone Файл : Game1.cs (фрагмент)

Первое выражение данного метода формируется автоматически. Вскоре мы увидим, как этот объект spriteBatch используется для вывода спрайтов на экран.

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

У класса SpriteFont есть чрезвычайно удобный метод MeasureString (Измерить строку), возвращающий объект Vector2 с размером конкретной текстовой строки в пикселах. (Для шрифта Segoe UI Mono размером 14 пунктов, высота которого эквивалентна 18-2/3 пикселам, метод MeasureString возвратит высоту 28 пикселов.)

Как правило, для получения размера экрана в приложении на XNA используется свойство Viewport (Окно просмотра) класса GraphicsDevice. Оно доступно через свойство GraphicsDevice класса Game и предоставляет свойства Width (Ширина) и Height ( Высота ).

После этого довольно просто вычислить textPosition (Положение текста) – координаты точки относительно верхнего левого угла окна просмотра, в которой будет располагаться верхний левый угол текстовой строки.

В нашем приложении XnaHelloPhone метод Update абсолютно тривиальный. Отображаемый текст зафиксирован в одной единственной точке. Все необходимые вычисления уже выполнены в методе LoadContent. Поэтому оставляем метод Update без изменений, просто в том виде, в каком он был изначально создан XNA Game Studio:

Проект XNA: XnaHelloPhone Файл : Game1.cs (фрагмент)

В формируемом по умолчанию коде для проверки события нажатия кнопки Back использует статический класс GamePad (Игровой планшет). Это событие является сигналом к выходу из игры.

Проект XNA: XnaHelloPhone Файл : Game1.cs (фрагмент)

Проект XNA: XnaHelloPhone Файл : Game1.cs (фрагмент)

Обратите внимание, что по умолчанию программы на Silverlight отображаются в портретном режиме, а программы на XNA – в альбомном. Повернем телефон или эмулятор (с помощью панели в правом верхнем углу):

Ключевые термины

ASCII (англ. American Standard Code for Information Interchange ) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов.

Краткие итоги

В данной лекции мы:

Набор для практики

Упражнения

Добавьте к нашей программе вторую строчку с другим текстом, располагающуюся немного ниже первой.

Источник

Microsoft XNA

Microsoft XNA (англ. XNA’s Not Acronymed [2] ) — набор инструментов с управляемой средой времени выполнения (.NET), созданный Microsoft, облегчающий разработку и управление компьютерными играми. XNA стремится освободить разработку игр от написания «повторяющегося шаблонного кода» [3] и объединить различные аспекты разработки игр в одной системе. Набор инструментов XNA был анонсирован 24 марта 2004 на Game Developers Conference в Сан-Хосе, Калифорния. Первый Community Technology Preview XNA Build был выпущен 14 марта 2006.

Читайте также:  Что значит число 704

Содержание

Цели и описание проекта

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

Инструментарий XNA изначально разрабатывался с целью максимально облегчить процесс разработки игр для консоли Xbox и компьютеров, работающих под управлением операционной системы Windows. Вместе с тем, пакет XNA позволит распространить общие сервисы Xbox Live, такие как, например, аутентификация, на игры для персональных компьютеров. Инструментарий XNA позволяет Microsoft конкурировать с Sony на рынке видеоигр для следующего поколения игровых приставок.

Обзор

XNA Framework

XNA Content Pipeline

XNA Content Pipeline — набор интегрированных в Visual Studio инструментов управления конвейером ресурсов игры, помогающий при определении, поддержке, отладке и оптимизации конвейера ресурсов игры. Конвейер ресурсов игры(англ. Content Pipeline ) описывает процесс, при котором содержимое игры, такое как текстуры и трёхмерные модели, преобразуется в форму, подходящую для использования игровым движком. Content Pipeline помогает идентифицировать зависимости конвейера, а также предоставляет доступ к программному интерфейсу, позволяющему производить дальнейшую обработку данных о зависимостях. Данные о зависимостях могут быть проанализированы для уменьшения размера игры посредством выявления содержимого, которое не используется.

XNA Game Studio

Лицензионное соглашение

EULA Microsoft XNA Framework 2.0 специально запрещает распространение коммерческих сетевых игр, которые соединяются с Xbox Live и/или Games for Windows Live без специального соглашения между Вами и Microsoft. XNA Game Studio может быть использована для разработки коммерческих игр и других программ для платформы Windows, но код Microsoft для поддержки сети Xbox/Windows Live не может быть использован. В своём проекте XNA можно использовать собственный код поддержки сети.

XNA Community Games

Microsoft также распространяет «тестовые аккаунты» для образовательных учреждений в рамках их программы DreamSpark. Эти аккаунты позволяют студентам разрабатывать игры для Xbox 360, но, чтобы выставить игру на Marketplace, требуется привилегированный аккаунт.

Источник

Знакомство с XNA и написание первой музыкальной игры

Привет всем начинающим геймдевелоперам и просто хорошим людям. Сегодня, я хочу познакомить вас с замечательным фреймворком XNA (набор инструментов с управляемой средой времени выполнения dotNet). Программировать мы будем на C#.
Для того, чтобы познакомить вас с XNA ближе, я предлагаю написать простую «музыкальную» 2D игрушку. Остальное под катом.

Краткое описание на википедии

Microsoft XNA (англ. XNA’s Not Acronymed) — набор инструментов с управляемой средой времени выполнения (.NET), созданный Microsoft, облегчающий разработку и управление компьютерными играми. XNA стремится освободить разработку игр от написания «повторяющегося шаблонного кода»

Что для этого нам будет нужно?
Что предполагается разобрать и сделать на этом уроке?
Какую игру мы будем реализовывать?

Механика игры проста до безумия. Смысл будет построен на музыке, в случае с этой игрой, будет использована композиция Исаака Шепарда — Leaves in the Wind. Нужно будет ловить мышкой «ноты», скорость и кол-во которых будут зависимы от текущей позиции в музыки, грубо говоря игровой «визуализатор». Для разнообразия существуют 5 тип нот: обычные, красные (враги), пурпурные (мощь), мигающие (превращает все в желтые), желтые (увеличивает скорость набора очков и размеры).

Собираем вещи пустой проект

Проект music_catch — «логика» нашего приложения.
Game1.cs — главный класс приложения, унаследован он от Microsoft.Xna.Framework.Game
Program.cs — «точка входа» в приложение, он нам не интересен.
Проект music_catchContent — «контент» нашего приложения, туда мы будем складывать ресурсы.

Более подробно взглянем на Game1.cs
В нем можно выделить основные функции, такие как:
Game1() — конструктор класса.
Initialize() — инициализация приложения.
LoadContent() — загрузка контента.
UnloadContent() — выгрузка контента.
Update(GameTime gameTime) — обновление логики приложения (например физики, etc)
Draw(GameTime gameTime) — отрисовка игры. ВНИМАНИЕ, любые операции с рисованием нужно проводить тут и только тут.

Пустой проект собран, идем дальше, добавляем ресурсы в приложение, все нужные ресурсы «кидаем» в папку music_catch\music_catchContent. В нашем случае — пять PNG файлов и одно музыкальное сопровождение. Добавляем это все в проект:

Там же создаем шрифт, в теле SpriteFont1.spritefont указываем имя и размер:

Создаем переменные для будущего контента:

И грузим его в LoadContent():

Кстати, подгружается контент следующим образом: вызывается Content.Load<>(«asset»);
В треугольных скобках указывается процессор контента, в нашем случае это Texture2D, Song, SpriteFont. Можно использовать свои процессоры, об этом я расскажу как-нибудь потом.

Контент подгружен, идем в конструктор Game1() и пишем:

Пишем «игровую логику»

Теперь нам нужно создать контроллер системы частиц и сами частицы (ноты), которые мы будем виртуозно ловить мышкой.
Создаем два класса: Catcher (сами частицы) и CatcherHolder (система частиц).

Листинг Catcher с комментариями:

Листинг CatcherHolder с комментариями:

Объясню, что за загадочный аккумулятор и зачем он нужен. Поговорим о «музыкальном» спектре.

Музыкальный сигнал – пища для аудиосистемы. Точнее – не так. Динамики музыку не слушают, ее восстанавливает наш мозг, получая сложный сигнал, содержащий множество частотных составляющих.
Дак вот, идея такая, слушать «частоты» каждый Update и записывать их в какой-нибудь, например, VisualizationData. Проще говоря, в массив из 128 элементов, которые изменяются от 0f до 1f.

Как этим можно воспользоваться?
Каждый Update: значения в массиве меняются в соответствии с музыкой, нам нужно проверить все 128 элементов, если значение элемента больше чем 0.6f, вызываем Beat-функцию и передаем ей Wave (индекс элемента массива, в котором произошло событие). Все бы хорошо, можно в Beat создавать частичку-ноту. Но представим, что у нас выполняется три Update’а подряд, в котором в одном и том же индексе — значение > 0.6f, как итог будет 100500 частичек за секунду. Чтобы таких вещей не происходило, можно использовать аккумулятор. Смысл его прост: при Beat’е у ячейки массива-аккумулятора соотвествующего индексу Wave отнимается константа BEAT_COST. Каждый Update ко всем элементам аккумулятора прибавляется ACCUMULATE_SPEED. Перед тем, как вызвать Beat проверяется выполняется ли условие — значение аккумулятора > ACCOMULATOR_REACTION, если да, то вызываем Beat. Это решает проблему.

Читайте также:  dogecoin что за порода собаки

Кстати, BEAT_REACTION — значение, после которых нужно проверять, стоит ли вызывать Beat.

Дальше приведу полный листинг GameLogic (Game1). Много кода, но постараюсь расписать в комментариях.

Вот такая простенькая игрушка получается. На конечной машине пользователя должен быть установлен XNA 4.0 и .NET;

Скриншот:

Источник

Microsoft xna для чего

Что же всё-таки представляет собой XNA framework (далее просто XNA)?

XNA — это надстройка над неуправляемым (классическим) DirectX. Во всяком случае такую картину можно наблюдать для операционной системы Windows. Дело в том, что XNA является кроссплатформенной библиотекой.
Библиотека разрабатывалась корпорацией Microsoft с целью создания единого инструмента для разработки игр на двух не совместимых платформах, принадлежащих той же компании. А именно: Microsoft Windows и Microsoft XBOX360.
В связи с этим XNA framework не является банальным враппером.
Во-первых, XNA предоставляет такие возможности, которые в DirectX в принципе не нужны. Например, работа с файловой системой в DirectX-приложениях происходит с помощью использования стандартных библиотек ОС Windows. В XNA же для этих целей предусмотрены специальные классы, которые так же легко работают на XBOX360, как и на Windows.
Во-вторых, математические классы XNA не являются обвёртками над неуправляемым DirectX, а полностью реализованы с нуля. Что, в большинстве случаев, позволяет добиться производительности на уровне классического DirctX.
В-третьих, используя специализированные классы библиотеки программист может лишить себя «удовольствия» писать обработчики на такие задачи, как обработка потери устройства, загрузка/выгрузка контента (модели, текстуры и др.), организация игрового цикла и многие другие «прелести», которые очень сильно омрачали жизнь каждому начинающему игроделу (профи от них, наверное, тоже не в восторге).
В-четвёртых, для этой библиотеки имеется среда разработки XNA Game Studio. При этом Express Edition (бесплатная версия) содержит, кроме основного функционала, так называемые Starter Kit’ы — заготовки в виде простых игр, которые можно использовать, как для обучения, так и для принятия их за основу своих игр.

Подробнее о возможностях XNA Game Studio я расскажу в следующих статьях. А сейчас только скажу, что для написания статей я использую XNA Game Studio Express Edition v2.0 Так же необходимо указать, что XNA Game Studio требует для своей работы установленный Visual C# 2005 Express Edition с обновлениями до SP1

На что способен XNA framework?

На многое. Что бы не разводить болтологию и дать читателю первое представление о возможностях библиотеки, я решил в эту статью включить таблицу с описанием основных пространств имён XNA framework

Microsoft.XNA.FrameWork Математические расчеты: матричная алгебра, аналитическая геометрия, проверка столкновений и т.д. В Managed DirectX эта функциональность (в урезанном виде) реализовывалась посредством библиотеки D3DX, являющейся частью DirectX. XNA Framework выполняет математические расчеты собственными средствами, что в некоторых случаях несколько повышает производительностью благодаря отсутствию накладных расходов взаимодействия с COM. Microsoft.XNA.FrameWork.Graphics Работа с графикой. В данном пространстве имён находятся все основные классы для работы с двухмерной и трёхмерной графикой. Например, класс графического устройства. Аналог в DirectX — Direct3D Microsoft.XNA.FrameWork.Audio Работа со звуком. Аналог в DirectX — DirectSound Microsoft.XNA.FrameWork.Input Работа с устройствами ввода: клавиатура, мышь, джойстик и тд. Аналог в DirectX — DirectInput Microsoft.XNA.FrameWork.Storage Работа с файловой системой текущей платформы: загрузка и сохранение настроек приложения, сохранение и загрузка игры и другое. Аналога в DirectX не имеется. Это объясняется тем, что DirectX — не кроссплатформеная библиотека. Следовательно все операции с файловой системой ложаться на стандартные функции API Microsoft.XNA.FrameWork.Game Организация цикла игрового приложения : загрузка контента, запуск рендеренга и тд. и тп. Аналога в DirectX я не знаю. В принципе, без этих возможностей можно обойтись, но в конце всё равно прийдётся писать что-то своё подобное

Но не думайте, что я описал хоть десятую часть всех пространств имён библиотеки или всех её возможностей. В дальнейшем мы будем подробней рассматривать те или иные возможности XNA.

И на последок я хотел бы ответить на такой вопрос.

Какие технические характеристики и требования XNA framework?

Ну, во-первых, XNA построена полностью на принципе программированного конвеера. То есть разработчики полностью отказались от фиксированного конвеера и тем самым ужесточили требования к аппаратному обеспечению компьютера. А именно, библиотека может функционировать только если видеокарта поддерживает, как минимум, Pixel Shader v1.1. Но это не сильно должно нас волновать, так как поддержка этой технологии есть у видеокарт начиная с Geforce 2 (кроме серий MX)
Во-вторых, XNA поддерживает фрагментные (пиксельные) шейдеры от версий 1.1 до 3.0 Это объясняется тем, что основа XNA — DirectX 9.0c, а так же тем фактом, что XBOX360 поддерживает шейдеры только до версии 3.0 В связи с этим, в ближайшее время, не предполагается добавление поддержки шейдеров 4-ой версии (DirectX 10)
Что же относительно остального, то возможности XNA практически такие же, как и у DirectX 9.0c

Так же следует указать, что официально XNA Game Studio поддерживает только такие операционные системы: Windows XP SP2 и Windows Vista

Ну и на последок, я думаю, тут не помешает несколько ссылок на тематические сайты.

Источник

Сказочный портал