Microsoft XNA es un conjunto de herramientas con un entorno de tiempo de ejecución administrado proporcionado por Microsoft que facilita el desarrollo y la administración de juegos de computadora. XNA intenta liberar a los desarrolladores de juegos de escribir "código repetitivo repetitivo" y traer diferentes aspectos de la producción de juegos en un solo sistema.
Está diseñado como un marco, de hecho, XNA es el Marco XNA de Microsoft, por lo que técnicamente no es un motor por su nombre.
No hay 'motor': si observa, deriva su clase principal de XNA.Framework.Game y tiene que anular las funciones de dibujar y actualizar usted mismo. No hay un sistema de renderizado central, ni un sistema de entrada, ni un sistema de audio listo para usar. Hay SpriteBatch y las clases de vértice, KeyboardState y algunas clases de audio ... pero son solo abstracciones sobre el código de dibujo de bajo nivel.
EDITAR: En aras de la utilidad, ¿por qué importa algo si está etiquetado como un motor, marco, biblioteca o conjunto de herramientas?
Para aclarar un poco las cosas: estoy desarrollando un motor en XNA. Obviamente no puedo hacer eso en algo como Unreal, como Jonathan ha mencionado. Sin embargo, hay algunas cosas que considero importantes que XNA simplemente no tiene:
Plug-n-play: quiero poder hacer algún tipo de plantilla: ¡tenga este HP, esta malla, esta animación y BOOM! Tengo un NPC en mi juego.
Nivel bajo oculto: XNA ya hace esto, pero no quiero jugar con GameServiceProviders. Solo quiero juntar cosas.
Juego separado del motor: puede haber una clase de "juego", pero quiero separar mi lógica y mi código del sistema base. No quiero if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
mezclarlo con actualizar los búferes en mi renderizador de gráficos.