Implementando uma linguagem de script simples baseada em XML para um jogo XNA
Estou trabalhando com uma equipe em um mecanismo de RPG em C # e XNA. Planejamos segmentar o Windows e o Windows Phone 7, mas estamos enfrentando problemas com as interações de IA e o controle das ações dos jogadores durante as cenas. Na maior parte, tudo é extraído usando o padrão de design MVC, mas abstrair toda a lógica e movimento em um controlador pode causar problemas na linha. Portanto, a idéia é ter uma interface (IScriptEngine) que aceite um IScriptObject e atualize os dados no modelo de mapa de acordo. Eu estava pensando em colocar os scripts em uma espécie de sintaxe XML:
<Script Name="MoveNPC_1">
<Action Command="MoveToTile" Target="NPC_1" Value="10,2"/>
</Script>
E faça com que um IScriptEngine analise-o adequadamente. Eu duvido que analisar uma declaração de switch gigante seja uma boa idéia, mas é com isso que tenho trabalhado.
switch(Action.Command)
{
case "MoveToTile":
{
doMovement(Action.Value, Action.Target);
break;
}
}
Até minha experiência em programação do ensino médio me diz que essa é uma péssima idéia, mas não consigo pensar em outra maneira de contornar isso.
Edit: Gostaria de alguma forma incorporar tudo isso no arquivo de mapa. No arquivo XML do mapa, temos áreas designadas para, que contêm várias tags. Depois, haveria uma seção, indicando onde o NPC está no mapa e quais recursos e scripts ele usaria. Depois, haveria uma seção, onde todas as batalhas seriam definidas (novamente, definindo recursos e quais não) e, possivelmente, uma seção, onde esses scripts seriam definidos. Eu só queria que houvesse uma maneira de compilar C # em tempo real usando o WP7. Se eu pudesse obter apoio de ambos os lados, isso não seria um problema. Gostaria de saber se haveria alguma biblioteca Mono que pudesse ser portada para o WP7 que compartilharia a funcionalidade do CodeDom e de todas as classes do Compiler?