Microsoft XNA, Microsoft tarafından sağlanan ve bilgisayar oyunu geliştirme ve yönetimini kolaylaştıran, yönetilen bir çalışma zamanı ortamına sahip bir dizi araçtır . XNA, oyun geliştiricilerini "tekrarlayan kazan plakası kodu" yazmaktan kurtarmaya ve oyun üretiminin farklı yönlerini tek bir sisteme getirmeye çalışır.
Bir çerçeve olarak tasarlanmıştır - aslında, XNA Microsoft XNA Framework'tür - bu nedenle teknik olarak isme göre bir motor değildir.
Hiçbir 'motor' yoktur - fark ederseniz, ana sınıfınızı XNA.Framework.Game'den türetir ve çizim ve güncelleme işlevlerini kendiniz geçersiz kılmanız gerekir. Kutudan çıkarılmış merkezi görüntüleme sistemi veya giriş sistemi veya ses sistemi yoktur. SpriteBatch ve köşe sınıfları var, KeyboardState var ve bazı ses sınıfları var ... ama bunlar sadece düşük seviyeli çizim kodu üzerinde soyutlamalar.
EDIT: Yararlılık için, bir şey bir motor, çerçeve, kütüphane veya araç seti olarak etiketlenmişse neden önemlidir?
İşleri biraz temizlemek için: XNA'da bir motor geliştiriyorum. Açıkçası bunu Unreal gibi bir şeyde yapamam, Jonathan'ın bahsettiği gibi. Ancak, XNA'nın sahip olmadığı önemli olduğunu düşündüğüm birkaç şey var:
Plug-n-play: Bir çeşit şablon yapabilmek istiyorum - bu HP, bu mesh, bu animasyon ve BOOM! Oyunumda bir NPC var.
Gizli düşük seviye - XNA bunu zaten yapıyor, ancak GameServiceProviders ile uğraşmak istemiyorum. Sadece birlikte bir şeyler itmek istiyorum.
Oyun motordan ayrılmış - Bir 'oyun' sınıfı olabilir, ama mantığımı ve kodumu temel sistemden ayırmak istiyorum. if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
Grafik oluşturucumdaki arabelleklerin güncellenmesi ile karıştırmak istemiyorum .