XNA'da kullanıcının mini oyunlar paketlerini indirebileceği ve ana .exe'nin değiştirilmeden bunları çalıştırabileceği bir mini oyun koleksiyonunu nasıl yapabilirim?


12

Şu anda XNA'da bir PC oyunu yapıyorum. Aslında bir mini oyun koleksiyonu (şu anda 3 mini oyun var), ancak indirilebilir 'paketlerde' daha fazlasını yapmayı ve eklemeyi planlıyorum.

Sorum şu: Bunu başarmanın en iyi yolu nedir?

Şu anda düşüncelerim:

  • Bir 'oyun' arayüzü oluşturun
  • Bu arayüze oyunlar oluşturun ancak .dll olarak oluşturun
  • Ana .exe dosyasının bir dizini taramasını ve çalışma zamanında .dll dosyalarına yüklemesini sağlayın.

Fikirle çok uğraşmadım, ama en azından bu eklenti yaklaşımını kullanan uygulamalar olduğunu biliyorum (Notepad ++ gibi görünüyor), ancak emin olduğum herhangi bir oyundan emin değilim var olmaları gerekir). Ancak bu daha önce çözülmüş bir sorun gibi görünüyor, bu yüzden herhangi bir yerleşik en iyi uygulama şekli olup olmadığını merak ediyorum.

Yanıtlar:


5

Windows'da, sadece bir montaj (dll) açabilir ve türleri içe aktarabilir ve yöntemleri yürütebilirsiniz. Montaj Sınıfı belgelerine bakın .

Xbox 360'ta System.Reflection'a erişiminiz yok. Burada XBLA mağaza API'sına güvenmelisiniz. Bu işlevselliğin ne kadarının XBLIG uygulamaları için kullanılabilir olduğundan emin değilim.


Evet, sadece .dll'leri yükleyebileceğimi biliyorum (bir PC oyunu olduğu için), ancak bunu yapmanın en iyi yolu olup olmadığını merak ediyorum ya da bu bazı yerleşik en iyi uygulamalara karşı gidiyorsa merak ediyorum
Andrew Thorpe

+1 Bu, eklentileri yüklemenin standart yoludur. Eklenti mimarisine bakın; Bilginize, bu çok iyi bir çözüm.
ashes999

1

Windows için bir oyun oluşturduğunuzdan, @Ranieri'nin belirttiği gibi tam çerçeveye erişebilirsiniz. Mimariniz sağlam geliyor; ancak, Yönetilen Genişletilebilirlik Çerçevesi MEF'i kontrol etmek isteyebilirsiniz . Bu iş akışını daha akıcı hale getirebilir. Kendim kullanmadım, ama iyi şeyler okudum.

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.