XNA neden bir oyun motoru olarak kabul edilmiyor?


13

Sadece XNA'nın eksik olduğunu merak ediyorum, bir oyun motoru olarak kabul edilmek. Bir oyun motorunun yapması gereken her şeyi yapar (fizik bölümü hariç); oyun motorları hakkındaki Wikipedia makalesinde tanımlanan her yönü destekliyor .

XNA neden bir oyun motoru olarak kabul edilmiyor?


19
@Miro Bu hiç mantıklı değil.
Komünist Ördek

2
Amaç ne? İhtiyacınız olan işi yaparsa kullanın. Değilse, yapma. İnsanların nasıl dediği kimin umurunda? Her neyse, çoğunlukla pazarlama maymunlarından kullanılan bir etiket;)
Maik Semder 25:03

Komünist Ördek bu sorudaki
yorumuma

4
@Maik Semder Hiç bir etiket değil. Bir motor ve bir çerçeve iki ayrı ve ayrı şeydir ve XNA ikincisidir. XNA'nın bir motor olmadığını ayırt etmek ve anlamak yararlıdır, aksi takdirde aslında XNA'da bir motor oluşturmanız gerekebileceğini veya bazı eklentiler sunmadığını keşfettiğinizde çok karışabilirsiniz. gerçek motorlar gibi oyun yetenekleri yapar.
doppelgreener

3
@Maik Bu, ne yaptığını anlama şeklimizin bir parçası. Sürücü diyorum , ne olduğunu biliyorsun, değil, ne yaptığını ve nasıl kullanabileceğini biliyorsun. Çerçeve dediğimde benzer bir şey olmalı - ama sadece bir çerçevenin ne olduğunu ve ne olmadığını (motor) fark ederseniz. Bu pratik sonuçları göz önünde bulundurarak temelde size "İnsanların nasıl çağırdığını kim önemsiyor? Bu sadece bir etiket"
demeye itiraz ediyorum

Yanıtlar:


28

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 .


Çizim ve güncelleme ayarlarını geçersiz kılmak zorunda olduğunuzu kabul ediyorum, ancak bu, oluşturma motoru olmadığı anlamına gelmiyor, nokta, çizmeniz için her şeyi hazır hale getiriyor ve bunlar sadece örneğine bakarak soyut çizim çağrıları değil 2d GameEngine'den daha az bir şey yok (gerçekten 3d şeyleri kontrol etmedim) ve hatırlayabildiğim kadarıyla giriş kontrolörleri var ve demek istediğim sadece çerçeve çünkü microsoft bunu adlandırdı veya mantıklı bir nedeni var ?
Ali1S232

1
@Gajet: Bir an için XNA'da bir motorun nasıl oluşturulacağına dair bir tartışma olduğunu düşünün, ancak Unreal Engine veya CryEngine için değil. Bir oyun motorunun ortak bir özelliği, sadece bitleri takabilmeniz ve bir şeylerin gidebileceğidir ( TV Tropes, motorların bu konuda oldukça veri odaklı olabileceğini iddia ediyor ). Aksine, XNA temelde işin her onsunu kendiniz yapmanıza izin verir - cihazlarla arayüz oluşturmak için ara katman oluşturmak zorunda değilsiniz.
doppelgreener

1
Dahası, henüz bir oyun motorunun açık bir tanımını bulduğuma inanmıyorum, ancak bildiğim şey oyun motorları olduğu ve XNA'nın yaptıkları şeylerden hiçbirini yapmadığı (ara katman yazılımı sağlama ve bazı çok basit düşük seviyeli bileşenler).
doppelgreener

@Jonathan Hobbs: Şimdi ne hakkında konuştuğunuzu görebiliyorum ama yine de GameBryo (NetImmerse) 'i denedim ve bu bir oyun motoru olarak kabul edildi, ancak lightspeed XNA'nın kendisinden daha az özelliklere sahipti, sadece bir ortadaydı, bu yüzden biz sadece soru başlığını değiştirebilirsinizwhat makes an sdk to be called a GameEngine?
Ali1S232

1
Ama olabilir gerçekten bilgiçlik olmak istiyorsa bir çerçeve olarak varolan motoru kullanarak bir motor geliştirmek. Birçok insan deprem 3 teknolojisini aldı ve daha kullanışlı bir motor yaptı. Daha sonra, gerçekten isterseniz, "motor" olmadan da bir oyun yapabilirsiniz. Bir çerçeveyi xna olarak adlandırmak daha doğrudur, ancak "çerçeve" kadar güçlü bir şekilde tanımlanmadığı için, bir "motor" dan ayrım yapmayı bilmiyorum.
Tetrad

5

Bir çerçeve, belirli bir uygulama türü için oluşturulmuş minimal bir mimari sağlar. Mimarinin belirtilen hedeflerinin ötesinde uygulama detayları hakkındaki varsayımları en aza indirir. Bir platformlar arası oyun geliştirme çerçevesi, "platformdan bağımsız olarak (neredeyse) tüm bilgisayar oyunlarında ortak olan şeyleri" sağlama amacına sahip olabilir ve yalnızca zamanlama ve varlık yönetimi gibi soyut faktörleri uygulayabilir, XNA Framework (örtük olarak) "XNA CLR'de yürütülmesi için yazılan tüm bilgisayar oyunlarında ortak olan (neredeyse) ne ortak" bir hedef sunmaktır. Bu odağın çok dar olduğu göz önüne alındığında, motor özelliklerini cezasız bir şekilde dahil edebildiler. Her şeyi "Çerçeve" başlığı altında toplarlar, çünkü bu, oyun geliştiricisi olarak hoşunuza gidecek belirli bir uygulama özgürlüğünü gösterir.

Kabaca konuşmak gerekirse, bir çerçeve faydalı temeller sağlarken mümkün olduğunca sınırlayıcı olmamalıdır. Öte yandan, bir motor tipik olarak belirli özelliklere daha fazla odaklanır ve bunu kullanırken, bağlanacağınız bazı sınırlamalar olduğunu kabul edersiniz.


2

Asla bir 'oyun motoru' kullanmadım, ancak bu anlayışım daha çok belirli bir oyun türünün geliştirilmesi için önceden tanımlanmış bir iskelet oyun yapısı ile birlikte önceden tanımlanmış bir araç seti olarak. Ve elbette, belirli bir oyun türünün geliştirilmesi için bir oyun motorundaki ana tanımlayıcı faktördür, kesinlikle yukarıda bahsedilen Wikipedia makalesinin çekici olduğu gibi görünüyor. Bana göre XNA çerçevesi, mevcut çıplak kemikli programlama diline önceden oluşturulmuş rutinleri eklediği için AJAX gibi bir üçüncü taraf kütüphane setine daha çok benziyor. Programcı olarak bu kütüphane rutinleri ile yapabilecekleriniz ve yapamayacağınız konusunda herhangi bir kısıtlama veya yönerge koymaz. Bana göre bu hiçbir şekilde bir motora benzemiyor. Sonra bir iş yazılımı / web merkezli altyapıdan geliyorum,

XNA kullanarak bir oyun fikri için çerçeve inşa ettik ve kesinlikle C # üzerinde sadece başka bir kütüphane kullanıyorum gibi geliyor. Windows ve muhtemelen Xbox için iki veya üç oyun üretmek için test programında hacklediğim işlemleri kullanacağım.

Dediğim gibi, aklımda bu bir 'Oyun Motoru' olarak anladığım kadar uzak değil, bu yüzden bu yazıyla karşılaştığımda birinin neden bu karşılaştırmayı yapacağı hakkında hiçbir fikrim yoktu. Yanlış mıyım?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.