Microsoft XNA è un set di strumenti con un ambiente di runtime gestito fornito da Microsoft che facilita lo sviluppo e la gestione dei giochi per computer. XNA tenta di liberare gli sviluppatori di giochi dalla scrittura di "codice ripetitivo" e di portare diversi aspetti della produzione di giochi in un unico sistema.
È progettato come un framework - infatti, XNA è il Microsoft XNA Framework - quindi tecnicamente non è un motore per nome.
Non esiste un "motore": se noti, trai la tua classe principale da XNA.Framework.Game e devi sovrascrivere tu stesso le funzioni di disegno e aggiornamento. Non esiste un sistema di rendering centrale, né un sistema di input o un sistema audio pronto all'uso. C'è SpriteBatch e le classi di vertici, c'è KeyboardState e ci sono alcune classi audio ... ma sono solo astrazioni sul codice di disegno di basso livello.
EDIT: Per motivi di utilità, perché qualcosa importa se è etichettato come motore, framework, libreria o set di strumenti?
Per chiarire un po 'le cose: sto sviluppando un motore in XNA. Ovviamente non posso farlo in qualcosa come Unreal, come ha menzionato Jonathan. Tuttavia, ci sono alcune cose che ritengo importanti che XNA non ha:
Plug-n-play: voglio essere in grado di creare una sorta di modello: avere questo HP, questa mesh, questa animazione e BOOM! Ho un NPC nel mio gioco.
Livello basso nascosto: XNA lo fa già, ma non voglio giocherellare con GameServiceProviders. Voglio solo mettere le cose insieme.
Gioco separato dal motore - Potrebbe esserci una classe "gioco", ma voglio separare la mia logica e il mio codice dal sistema di base. Non voglio if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
mescolare con l'aggiornamento dei buffer sul mio renderer grafico.