Загрузка...
 
Печать
ИГРОКОДИНГ  »  ИГРОКОДИНГ: Учебный курс  »  Знакомство с XNA Framework и XNA Game Studio

Знакомство с XNA Framework и XNA Game Studio




Разработка компьютерных игр (Game development) - одна из самых сложных дисциплин в сфере разработки ПО. Но она также самая эффектная и продуктивная.1 Никогда ранее разработка игр для консолей не была так доступна для всех желающих, как сейчас. Майкрософт находится впереди планеты всей по доступности создания контента для своих консолей. Скоро другие производители игровых консолей пойдут тем же путём, позволяя широким массам энтузиастов создавать контент для своих железок.
У компании Майкрософт накоплен большой опыт в создании стабильных и эффективных сред разработки (development enviroments).

Что такое XNA Framework?

XNA Framework опирается на DirectX. Поэтому рассмотрим их здесь вместе.

Появление XNA Framework

Вернёмся в прошлое, когда на ПК господствовала DOS. Когда для программирования комп. игр и графических демок программеры были вынуждены писать низкоуровневый код для прямого обращения к звуковой карте, графическому адаптеру и устройствам ввода. Это было довольно изнурительное занятие и часто приводило к появлению багов, т.к. различные производители компьютерного железа оснащали свои изделия разными BIOS-прерываниями, портами ввода-вывода (I/O ports) и системами памяти. Как результат, код мог работать на одной системе, а на другой не работал вовсе.
Позднее Майкрософт выпустила ОС Windows 95. Многие игрокодеры скептически относились к разработке игр под данную ОС, т.к. непрямой доступ (через драйверы устройств) к аппаратному обеспечению ПК требовали некислых ресурсов. Компьютерам тех лет просто не хватало для этого быстродействия. В Windows 95 была реализован т.н. "защищёный" (protected) режим памяти, который не позволял разработчикам напрямую обращаться к низкоуровневым прерываниям аппаратных устройств.
Для решения этой проблемы Майкрософт разработала технологию под названием DirectX. Вообще, её первая версия называлась Windows Game SDK. (Подробнее об этом читаем здесь: Эволюция DirectX. От версии к версии (обзор)) Но название быстро поменяли с лёгкой руки одного из журналистов, обозвавшего набор API DirectDraw, DirectSound и DirecInput одним ёмким термином "Direct 'X'".
Именно DirectX позволил разработчикам писать игры с одним исходным кодом, которые будут работать на всех компьютерах под ОС от Майкрософт, независимо от их аппаратного обеспечения (hardware). В свою очередь производители железа были заинтересованы в сотрудничестве с Майкрософт по стандартизации интерфейсов для доступа к тем или иным аппаратным устройствам. Они вместе с устройством выпускали драйверы, позволяющие DirectX определять их (устройств) API. Таким образом, вся та работа, которую. раньше приходилось выполнять игрокодерам, перешла в обязанности производителей устройств. А игрокодеры, в свою очередь, теперб могли больше времени уделять непосредственно разработке игр. Были разработаны т.н. уровень (слой) аппаратной абстракции (Hardware Abstraction Layer, HAL) и уровень аппаратной эмуляции (Hardware Emulation Layer, HEL). Последний предназначен для программной эмуляции функций устройств, физически не поддерживаемых ими. В этом случае вся нагрузка ложилась на центральный процессор, что заметно снижало быстродействие, но позвляло ряду игр работать на компах без специализированного оборудования.
Спустя пару месяцев появилась DirectX 3.0 для ОС MS Windows 95 и NT 4. DirectX 4 так никогда и не вышел, но в 1997 г. появляется DirectX 5, который позднее "оброс" парой обновлений, позволявшими ему работать под управлением Windows 98.
Когда в 2000 году появился DirectX 8, некоторые новые на тот момент видеокарты обладали поддержкой вершинных (vertex) и пиксельных (pixel) шейдеров. Для них Майкрософт добавила способ передавать в шейдерные блоки данных устройств кастомный (=пользовательский) программный код. Посредством ассемблерного кода игрокодеры могли маниплировать данными, которые игра отправляла в видеокарту. Данный ассемблерный код реализовывался непосредственно её вычислительными блоками. В случае отсутствия в видеокарте поддержи шейдеров, их обработкой занимался центральный процессор, что заметно снижало быстродействие, но позвляло играть в игры даже на компьютерах без игрового железа. Современные видеокарты способны с огромной скоростью обрабатывать свет и 3D-контент.
Прежде чем мы рассмотрим DirectX 9, забегая вперёд, расскажу немного о DirectX 10. Релиз DirectX 10 состоялся одновременно с выходом в свет MS Window Vista. В более ранних версиях ОС он не работал (любительские "допилы" под Windows XP SP3 - не в счёт). Причиной этого стала глобальная переработка системы работы с драйверами в Windows Vista. Для своей работы DirectX 10 требовал видеокарту с поддержкой Shader Model 4.0.
Xbox 360 работает под DirectX 9, плюс дполнительно имеет частичную поддержку Shader Model 3.0. DirectX 9 был взят за основу при разработке т.н. управляемого (Managed) DirectX. Managed DirectX представляет собой API, предоставляющий базовый функционал DirectX под платформу .NET Framework. До сих пор спорят, насколько Managed DirectX под .NET Framework проигрывает в быстродействии коду, написанному на чистом C++. По современным оценкам это не более 2%.
XNA Framework вобрал в себя всё самое лучшее от Managed DirectX, используя его в качестве стартового API. В то же время XNA Framework написана с чистого листа и не является надстройкой над Managed DirectX. Она даже использует отличные от него пространства имён (namespaces) и не обращается к его методам. Несмотря на то, что XNA использует DirectX 9, в нём нет ссылок на DirectX API (которые присутствуют в Managed DirectX).

XNA сегодня

XNA является общим термином, охватывающим всё, что Microsoft выпускает для игрокодеров. XNA представляет собой XNA Framework. Конечным продуктом XNA является приложение XNA Game Studio, которое мы детально рассмотрим чуть позднее. XNA Game Studio - это IDE для разработки игр.
XNA Framework (далее просто XNA) обладает массой преимуществ:
  • Даёт простой доступ к устройствам ввода (клавиатура, мышь, геймпад и др.).
  • Даёт простой доступ к графическому "железу".
  • Даёт простой доступ к аудиоустройствам.
  • Даёт возможность быстро организовать в игре систему накопления опыта/очков и даже систему сохранений прогресса.
  • Имеет встроенные средства для организации игры по сети. Поддержка сети появилась только в XNA 2.0. Практически полностью реализована на основе технологии Xbox LIVE.


Источники:


1. Chad Carter. Microsoft XNA Game Studio 3.0 Unleashed. - Sams Publishing. 2009


Содержание курса



ИГРОКОДИНГ  »  ИГРОКОДИНГ: Учебный курс  »  Знакомство с XNA Framework и XNA Game Studio

Contributors to this page: slymentat .
Последнее изменение страницы Среда 13 / Февраль, 2019 23:02:58 MSK автор slymentat.

Хостинг

Помочь проекту

Яндекс-деньги: 410011791055108