Jak mogę stworzyć kolekcję mini-gier w XNA, w której użytkownik może pobierać pakiety minigier, a główny plik .exe może je uruchamiać bez zmian?


12

Obecnie tworzę grę na PC w XNA. To właściwie zbiór mini-gier (w tej chwili są 3 mini-gry), ale planuję zrobić i dodać więcej, w „paczkach” do pobrania.

Moje pytanie brzmi: jaki jest najlepszy sposób na osiągnięcie tego?

Obecnie moje myśli to:

  • Utwórz interfejs „gry”
  • Twórz gry do tego interfejsu, ale twórz je jako pliki .dll
  • Niech główny plik .exe przeskanuje katalog i załaduje pliki .dll w czasie wykonywania.

Nie pomyliłem się zbytnio nad tym pomysłem, ale wiem, że istnieją aplikacje, które przynajmniej używają tego podejścia do wtyczek (wydaje się, że Notepad ++), ale nie jestem pewien, które gry to robią (chociaż jestem pewien muszą istnieć). Wydaje się jednak, że jest to problem, który został wcześniej rozwiązany, więc zastanawiam się, czy istnieje jakakolwiek forma sprawdzonych najlepszych praktyk.

Odpowiedzi:


5

W systemie Windows możesz po prostu otworzyć zestaw (dll) oraz zaimportować typy i wykonać metody. Zobacz dokumentację klasy asemblera .

Na Xbox 360 nie masz dostępu do System.Reflection. Tutaj powinieneś polegać na interfejsie API sklepu XBLA. Nie jestem pewien, ile tej funkcji jest dostępne dla aplikacji XBLIG.


Tak, wiem, że mogę po prostu załadować .dll (ponieważ jest to gra na PC), ale zastanawiam się, czy jest to najlepszy sposób, czy jest to sprzeczne z jakąś sprawdzoną najlepszą praktyką
Andrew Thorpe,

+1 Jest to standardowy sposób ładowania wtyczek. Wyszukaj architekturę wtyczek; Do Twojej wiadomości, to bardzo dobre rozwiązanie.
prochy999

1

Ponieważ budujesz grę dla systemu Windows, możesz uzyskać dostęp do pełnego środowiska, jak stwierdził @Ranieri. Twoja architektura brzmi solidnie; jednak możesz chcieć sprawdzić MEF , Managed Extensibility Framework. Może sprawić, że ten obieg pracy, który zarysujesz, będzie bardziej usprawniony. Sam go nie używałem, ale czytałem o nim dobre rzeczy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.