Comment puis-je créer une collection de mini-jeux dans XNA où l'utilisateur peut télécharger des packs de mini-jeux et le principal .exe peut les exécuter sans être modifié?

12

Je fais actuellement un jeu PC dans XNA. Il s'agit en fait d'une collection de mini-jeux (il y a 3 mini-jeux pour le moment) mais je prévois d'en créer et d'en ajouter d'autres, dans des "packs" téléchargeables.

Ma question est, quelle est la meilleure façon d'y parvenir?

Actuellement, mes pensées sont les suivantes:

  • Créer une interface «jeu»
  • Créez des jeux sur cette interface mais créez-les en .dlls
  • Demandez au fichier .exe principal d'analyser un répertoire et de le charger dans les fichiers .dll au moment de l'exécution.

Je ne me suis pas beaucoup amusé avec l'idée, mais je sais qu'il existe au moins des applications qui utilisent cette approche de plug-in (Notepad ++ semble le faire), mais je ne suis pas sûr des jeux qui le font (bien que je sois sûr ils doivent exister). Cependant, il semble que ce problème ait été résolu précédemment, je me demande donc s'il existe une forme de meilleure pratique établie.

Andrew Thorpe
la source

Réponses:

5

Sous Windows, vous pouvez simplement ouvrir un assembly (dll) et importer des types et exécuter des méthodes. Voir la documentation de la classe d'assemblage .

Sur la Xbox 360, vous n'avez pas accès à System.Reflection. Ici, vous devez vous fier à l'API du magasin XBLA. Je ne sais pas combien de cette fonctionnalité est disponible pour les applications XBLIG.

drxzcl
la source
Oui, je sais que je peux simplement charger les fichiers .dll (car c'est un jeu PC) mais je me demande si c'est la meilleure façon de le faire, ou si cela va à l'encontre d'une meilleure pratique établie
Andrew Thorpe
+1 C'est la manière standard de charger les plugins. Recherchez l'architecture du plugin; Pour info, c'est une très bonne solution.
ashes999
1

Puisque vous créez un jeu pour Windows, vous pouvez accéder au framework complet comme l'a indiqué @Ranieri. Votre architecture semble solide; cependant, vous souhaiterez peut-être vérifier dans MEF , le Managed Extensibility Framework. Cela pourrait rendre le flux de travail que vous décrivez plus rationalisé. Je ne l'ai pas utilisé moi-même, mais j'ai lu de bonnes choses à ce sujet.

Nate
la source