понедельник, 5 марта 2012 г.

Практическое применение XNA.

Сегодня я начинаю цикл статей, для всех желающих познакомиться со сравнительно новой технологией для создания игр от компании Microsoft - XNA.

Часть 1:

Основы программирования игр и знакомство с платформой XNA

Процесс создания современной компьютерной игры простым назвать никак нельзя.  Если говорить о таких творениях как  STALKER или CRYSIS, то это результат напряженной и кропотливой работы десятков, а иногда и сотен людей. Эти коллективы состоят не только из программистов, но так – же из художников, дизайнеров уровней, звуковиков, тестеров, специалистов по моделированию трехмерных моделей, созданию анимации и это еще далеко не всё. Становится ясно, что создавать такие проекты по плечу только серьезным компаниям, с большим количеством сотрудников. К тому же, до недавних пор, написание графических приложений  для платформы . NET было задачей не тривиальной.  Широко известные графические API, такие как OpenGL и DirectX, использовать совместно с  .NET  не представляется возможным из-за того, что их подключаемые  библиотеки   рассчитанные на язык  C + +.  Преобразование этих файлов к  .NET проблему не решает, так как зачастую переводится только «ядро» API без вспомогательных библиотек. Так вот, для исправления ситуации, Microsoft выпустила XNA – инструментарий разработки  кроссплатформенных графических приложений для   .NET, рассчитанных на сравнительно небольшие группы разработчиков. В основе XNA лежит сборка XNA Framework. Она представляет собой набор высоко -   производительных библиотек  .NET для эффективности работы  с различными подсистемами компьютера, например звуковые карты, джойстики и т.д. К тому же в XNA, отсутствует жесткая привязка к Windows, и это дает возможность запускать графические приложения написанные под XNA на других платформах, поддерживающих XNA Framework. 
XNA  практическое применение
1.Подготовка к работе:
Платформа XNA предназначена для облегчения жизни разработчикам, которые пишут игры для запуска под операционной системой Windows, для игровых приставок X Box 360 и ZUNE и Windows Mobile. Во время работы  мы будем использовать язык программирования  C# , и для написания  шейдеров  HLSL (high level shader language), о котором речь пойдет в следующих главах. Так – же, в конце каждой статьи вы найдете примеры исходного кода описанные в последующих главах.
Для создания игр вам потребуются следующие инструменты разработки  и  умение пользоваться ими :
   1.Microsoft Visual Studio или студия С# express (которая  является бесплатной).
   2.Microsoft Game Studio 3.1.
   3.Графический редактор (не обязательно)
   4.3D редактор (не обязательно)
 5.Установленные компоненты разработки XNA framework. Эти компоненты будут автоматически установлены на ваш компьютер во время установки  GameStudio 3.1, но для того, что - бы ваша игра запускалась на других машинах, вам необходимо будет поставлять эти компоненты вместе с игрой, так же как большинство современных игр поставляются в комплекте с библиотеками DirectX, или OpenGL.


2.Создание пустого проекта:

1.   Создайте новый проект в Visual Studio путем нажатия на кнопку Create Project
2.   В появившемся диалоговом окне выберите тип проекта XNA GameStudio 3.1
3.   В правой части формы выберите тип проекта Windows Game(3.1)
4.   По желанию можете присвоить ему своё название и нажмите OK.
После этого Visual Studio сгенерирует исходный проект готовый для написания вашей будущей игры. В нем мы видим список подключаемых библиотек Microsoft.Xna.Framework, и несколько обязательных методов для начала работы:
1.  Это конструктор нашего пока что единственного класса Game1,унаследованного от Microsoft XNA Framework Gameи реализующий его методы. В нем  уже создан экземпляр нашего графического устройства (видеокарты), и указывается корневая папка игры  в которой будут храниться ресурсы.
2.  Метод  Initialize служит для тех же целей ,что и в любой другой программе
3. Метод  Load Content  служит для загрузки файлов ресурсов таких как текстуры , модели,   эффекты ,аудио или видео файлы.
4. Метод Unload Content служит для выгрузки используемых файлов и освобождения ресурсов.
5. Метод Update обновляет данные используемые в игре, всю игровую логику и математику пишут преимущественно именно здесь.
В этом методе уже имеется строчка, которая позволяет используя игровую приставку X Box 360, осуществить выход из игры.  
6. Метод Draw занимается только рисованием игры на экране монитора, и считается хорошим тоном программирования игр не писать в нем лишний код, который можно было написать в методе Update.В этом методе так же имеется строчка
GraphicsDevice.Clear(Color.CornflowerBlue);
которая очищает экран от предыдущего изображения для создания нового, подобно кинопленке , кадр за кадром.  По умолчанию цвет экрана голубой. Важно отметить, что при компиляции файлов ресурсов, все выходные файлы будут иметь расширение .xnb, поэтому, имея в одной папке с ресурсами файлы с одинаковым названием, но разными расширениями мы получим ошибку компиляции, так как их названия с расширениями станут совпадать. Вот и все, пустой проект создан. Что - бы посмотреть на результаты своего труда, запускаем debug, и видим свое творение. Это пустое окно, окрашенное в голубой цвет. 






Замечательно то, что для достижения этого же результата например в DirectX на С++, нам пришлось бы потратить времени  и сил куда больше, чем в XNA. Как видите, нас избавили от рутинного кодирования инициализации окна, создания графического устройства и многого-многого другого. Фреймворк XNA уже содержит удобные в использовании классы по управлению графическим API, лежащим в его основе. Им является Microsoft DirectX, но в .NET оболочке и частично переписаный специально для нужд новой платформы.
На этом первое знакомство с XNA закончено. В следующий раз я расскажу, как вывести первое 
"Hello World" и первую картинку (спрайт) на экран. 
Всем, кто решился это повторить - Удачи!


Комментариев нет:

Отправить комментарий

Physically Based Rendering