Microsoft XNA - это набор инструментов с управляемой средой выполнения, предоставляемый Microsoft, который облегчает разработку компьютерных игр и управление ими. XNA пытается освободить разработчиков игр от написания «повторяющегося стандартного кода» и объединить различные аспекты производства игр в единую систему.
Он спроектирован как фреймворк - на самом деле XNA - это Microsoft XNA Framework - так что технически это не движок по имени.
Механизма не существует - если вы заметите, вы извлекаете свой основной класс из XNA.Framework.Game и должны самостоятельно переопределить функции рисования и обновления. Нет готовой центральной системы рендеринга, или системы ввода, или аудиосистемы. Есть SpriteBatch и классы вершин, есть KeyboardState, и есть некоторые классы аудио ... но они являются только абстракциями над кодом рисования низкого уровня.
РЕДАКТИРОВАТЬ: Ради полезности, почему что-то имеет значение, если оно помечено как движок, каркас, библиотека или набор инструментов?
Чтобы прояснить ситуацию: я разрабатываю движок в XNA. Очевидно, я не могу сделать это в чем-то вроде Unreal, как упоминал Джонатан. Однако есть несколько вещей, которые я считаю важными, которых у XNA просто нет:
Plug-n-play: я хочу иметь возможность создать какой-то шаблон - есть этот HP, этот меш, эта анимация и БУМ! У меня есть NPC в моей игре.
Низкий уровень скрыт - XNA уже делает это, но я не хочу возиться с GameServiceProviders. Я просто хочу собрать вещи вместе.
Игра отделена от движка - может быть класс «игра», но я хочу отделить свою логику и код от базовой системы. Я не хочу if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
смешивать с обновлением буферов на моем графическом рендерере.