O Microsoft XNA é um conjunto de ferramentas com um ambiente de tempo de execução gerenciado fornecido pela Microsoft que facilita o desenvolvimento e o gerenciamento de jogos de computador. O XNA tenta libertar os desenvolvedores de jogos de escreverem "códigos repetitivos" e trazer diferentes aspectos da produção de jogos em um único sistema.
Ele foi projetado como uma estrutura - de fato, o XNA é o Microsoft XNA Framework -, portanto, tecnicamente, não é um mecanismo por nome.
Não existe um 'mecanismo' - se você notar, você obtém sua classe principal do XNA.Framework.Game e precisa substituir as funções de desenhar e atualizar. Não existe um sistema central de renderização, sistema de entrada ou sistema de áudio pronto para uso. Há SpriteBatch e as classes de vértice, há KeyboardState e existem algumas classes de áudio ... mas elas são apenas abstrações no código de desenho de baixo nível.
EDIT: Por uma questão de utilidade, por que algo importa se está rotulado como um mecanismo, estrutura, biblioteca ou conjunto de ferramentas?
Para esclarecer um pouco: estou desenvolvendo um mecanismo no XNA. Obviamente, não posso fazer isso em algo como Unreal, como Jonathan mencionou. No entanto, há algumas coisas que considero importantes que o XNA simplesmente não possui:
Plug-n-play: Eu quero poder criar algum tipo de modelo - tenho esse HP, essa malha, essa animação e BOOM! Eu tenho um NPC no meu jogo.
Nível baixo oculto - o XNA já faz isso, mas não quero mexer com o GameServiceProviders. Eu só quero enfiar coisas juntos.
Jogo separado do mecanismo - Pode haver uma classe 'jogo', mas quero separar minha lógica e meu código do sistema básico. Não quero if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
misturar com a atualização dos buffers no meu renderizador gráfico.