Как создать коллекцию мини-игр в XNA, где пользователь может загружать пакеты мини-игр, а основной .exe-файл может запускать их без изменений?

12

В настоящее время я делаю компьютерную игру в XNA. На самом деле это коллекция мини-игр (в данный момент есть 3 мини-игры), но я планирую делать и добавлять больше в загружаемых «пакетах».

Мой вопрос: каков наилучший способ добиться этого?

В настоящее время мои мысли:

  • Создать игровой интерфейс
  • Создавайте игры для этого интерфейса, но создавайте их как .dll
  • Имейте основной файл .exe, просканируйте каталог и загрузите в .dll во время выполнения.

Я не особо задумывался над этой идеей, но я знаю, что есть приложения, по крайней мере, использующие этот подход к подключаемым модулям (Notepad ++, похоже), но я не уверен ни в каких играх, которые это делают (хотя я уверен, они должны существовать). Однако кажется, что это проблема, которая была решена ранее, поэтому мне интересно, есть ли какая-либо форма признанной передовой практики.

Эндрю Торп
источник

Ответы:

5

В Windows вы можете просто открыть сборку (dll), импортировать типы и выполнять методы. См. Документацию класса сборки .

На Xbox 360 у вас нет доступа к System.Reflection. Здесь вы должны положиться на API магазина XBLA. Я не уверен, какая часть этой функциональности доступна для приложений XBLIG.

drxzcl
источник
Да, я знаю, что могу просто загрузить .dlls (поскольку это игра для ПК), однако мне интересно, является ли это лучшим способом сделать это, или это идет вразрез с какой-то признанной лучшей практикой
Эндрю Торп
+1 Это стандартный способ загрузки плагинов. Посмотрите плагин архитектуры; К вашему сведению, это очень хорошее решение.
ashes999
1

Поскольку вы создаете игру для Windows, вы можете получить доступ к полной структуре, как сказано в @Ranieri. Ваша архитектура звучит солидно; тем не менее, вы можете захотеть проверить MEF , платформу управляемой расширяемости. Это может сделать рабочий процесс более наглядным. Я не использовал это сам, но я прочитал хорошие вещи об этом.

Nate
источник