Microsoft XNA adalah seperangkat alat dengan lingkungan runtime terkelola yang disediakan oleh Microsoft yang memfasilitasi pengembangan dan manajemen permainan komputer. XNA berusaha membebaskan pengembang game dari menulis "kode boilerplate berulang" dan untuk membawa berbagai aspek produksi game ke dalam satu sistem tunggal.
Ini dirancang sebagai kerangka kerja - sebenarnya, XNA adalah Microsoft XNA Framework - jadi secara teknis itu bukan mesin dengan nama.
Tidak ada 'mesin' - jika Anda perhatikan, Anda mendapatkan kelas utama dari XNA.Framework.Game dan harus menimpa sendiri fungsi undian dan pembaruan. Tidak ada sistem render sentral, atau sistem input, atau sistem audio yang siap. Ada SpriteBatch dan kelas vertex, ada KeyboardState, dan ada beberapa kelas audio..tapi mereka hanya abstraksi atas kode gambar tingkat rendah.
EDIT: Demi kegunaan, mengapa ada masalah jika dilabeli sebagai engine, framework, library, atau toolset?
Untuk menjernihkan semuanya: Saya sedang mengembangkan mesin di XNA. Jelas saya tidak bisa melakukan itu dalam sesuatu seperti Unreal, seperti yang telah disebutkan Jonathan. Namun, ada beberapa hal yang saya rasa penting agar XNA tidak miliki:
Plug-n-play: Saya ingin bisa membuat semacam template - miliki HP ini, mesh ini, animasi ini dan BOOM! Saya memiliki NPC di game saya.
Tingkat rendah tersembunyi - XNA sudah melakukan ini, tapi saya tidak ingin bermain-main dengan GameServiceProviders. Saya hanya ingin mendorong barang bersama.
Game terpisah dari engine - Mungkin ada kelas 'game', tapi saya ingin memisahkan logika dan kode saya dari sistem basis. Saya tidak ingin if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
bercampur dengan memperbarui buffer pada renderer grafik saya.