Wie kann ich in XNA eine Sammlung von Minispielen erstellen, in der der Benutzer Minispielpakete herunterladen und die Haupt-EXE-Datei ohne Änderungen ausführen kann?

12

Ich mache gerade ein PC-Spiel in XNA. Es ist eigentlich eine Sammlung von Minispielen (es gibt momentan 3 Minispiele), aber ich plane, mehr davon in herunterladbaren "Paketen" zu erstellen und hinzuzufügen.

Meine Frage ist, wie kann man das am besten erreichen?

Momentan sind meine Gedanken:

  • Erstellen Sie eine "Spiel" -Schnittstelle
  • Erstellen Sie Spiele für diese Schnittstelle, aber erstellen Sie sie als DLLs
  • Lassen Sie die EXE-Hauptdatei ein Verzeichnis durchsuchen und zur Laufzeit die DLLs laden.

Ich habe nicht viel mit der Idee herumgespielt, aber ich weiß, dass es zumindest Anwendungen gibt, die diesen Plug-in-Ansatz verwenden (Notepad ++ scheint dies zu sein), aber ich bin mir nicht sicher, welche Spiele dies tun (obwohl ich mir sicher bin) sie müssen existieren). Es scheint jedoch, dass dies ein Problem ist, das bereits zuvor gelöst wurde. Daher frage ich mich, ob es eine Form von bewährten Vorgehensweisen gibt.

Andrew Thorpe
quelle

Antworten:

5

Unter Windows können Sie einfach eine Assembly (DLL) öffnen, Typen importieren und Methoden ausführen. Weitere Informationen finden Sie in der Dokumentation zur Assemblyklasse .

Auf der Xbox 360 haben Sie keinen Zugriff auf System.Reflection. Hier sollten Sie sich auf die XBLA-Store-API verlassen. Ich bin nicht sicher, wie viel von dieser Funktionalität für XBLIG-Anwendungen verfügbar ist.

drxzcl
quelle
Ja, ich weiß, dass ich die .dlls einfach laden kann (da es ein PC-Spiel ist), aber ich frage mich, ob dies der beste Weg ist, oder ob dies gegen eine bewährte Vorgehensweise verstößt
Andrew Thorpe,
+1 Dies ist die Standardmethode zum Laden von Plugins. Plugin-Architektur nachschlagen; Zu Ihrer Information, dies ist eine sehr gute Lösung.
ashes999
1

Da Sie ein Spiel für Windows erstellen, können Sie wie bei @Ranieri angegeben auf das vollständige Framework zugreifen. Ihre Architektur klingt solide; Möglicherweise möchten Sie jedoch in MEF , dem Managed Extensibility Framework , einchecken . Dadurch wird der Workflow, den Sie skizzieren, möglicherweise rationalisiert. Ich habe es selbst nicht benutzt, aber ich habe gute Dinge darüber gelesen.

Nate
quelle