Como posso fazer uma coleção de minijogos no XNA, onde o usuário pode baixar pacotes de minijogos e o principal .exe pode executá-los sem ser alterado?


12

Atualmente, estou fazendo um jogo para PC no XNA. Na verdade, é uma coleção de minijogos (existem 3 minijogos no momento), mas pretendo criar e adicionar mais, em 'pacotes' para download.

Minha pergunta é: qual é a melhor maneira de conseguir isso?

Atualmente, meus pensamentos são:

  • Crie uma interface de 'jogo'
  • Crie jogos para essa interface, mas crie-os como .dlls
  • Faça com que o arquivo .exe principal verifique um diretório e carregue as .dlls em tempo de execução.

Eu não brinquei muito com a idéia, mas sei que existem aplicativos, pelo menos, que usam essa abordagem de plug-in (o Notepad ++ parece), mas não tenho certeza de jogos que o façam (embora tenha certeza eles devem existir). No entanto, parece que esse é um problema que já foi resolvido anteriormente, então estou me perguntando se existe alguma forma de prática recomendada estabelecida.

Respostas:


5

No Windows, você pode simplesmente abrir um assembly (dll) e importar tipos e executar métodos. Veja o documentação da classe Assembly .

No Xbox 360, você não tem acesso ao System.Reflection. Aqui você deve confiar na API da loja XBLA. Não tenho certeza de quanto dessa funcionalidade está disponível para aplicativos XBLIG.


Sim, eu sei que posso carregar as .dlls (já que é um jogo para PC), no entanto, estou me perguntando se essa é a melhor maneira de fazê-lo, ou se isso está indo contra algumas das melhores práticas estabelecidas
Andrew Thorpe

+1 Esta é a maneira padrão de carregar plugins. Procure a arquitetura do plugin; Para sua informação, esta é uma solução muito boa.
Ashes999

1

Como você está construindo um jogo para Windows, é possível acessar a estrutura completa como o @Ranieri afirmou. Sua arquitetura parece sólida; no entanto, convém verificar o MEF , o Managed Extensibility Framework. Isso pode tornar o fluxo de trabalho que você descreve mais simplificado. Eu não o usei, mas li coisas boas sobre isso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.