Implementieren einer einfachen XML-basierten Skriptsprache für ein XNA-Spiel

Ich arbeite mit einem Team an einer RPG-Engine in C # und XNA. Wir planen das Targeting auf Windows und Windows Phone 7, haben jedoch Probleme mit KI-Interaktionen und der Steuerung von Player-Aktionen während Zwischensequenzen. Zum größten Teil wird alles mit dem MVC-Entwurfsmuster extrahiert, aber die Zusammenfassung aller Logik und Bewegung in einen Controller kann Probleme auf der ganzen Linie verursachen. Die Idee ist also, eine Schnittstelle (IScriptEngine) zu haben, die ein IScriptObject aufnimmt und die Daten im Kartenmodell entsprechend aktualisiert. Ich habe darüber nachgedacht, die Skripte in eine XML-Syntax zu bringen:

<Script Name="MoveNPC_1"> 
    <Action Command="MoveToTile" Target="NPC_1" Value="10,2"/> 
</Script> 

Und eine IScriptEngine parst es entsprechend. Ich bezweifle sehr, dass das Parsen in einer riesigen switch-Anweisung eine gute Idee wäre, aber damit habe ich gearbeitet.

switch(Action.Command)
{
    case "MoveToTile":
      { 
         doMovement(Action.Value, Action.Target); 
         break;
      }
}

Sogar meine High School Programmiererfahrung hat mir gezeigt, dass dies eine schlechte Idee ist, aber ich kann mir keinen anderen Weg vorstellen.

Edit: Ich möchte das alles irgendwie in die Map-Datei einbetten. In der XML-Kartendatei sind Bereiche vorgesehen, die mehrere Tags enthalten. Dann würde es einen Abschnitt geben, in dem angegeben wird, wo sich der NPC auf der Karte befindet und welche Ressourcen und Skripte er verwenden würde. Dann gäbe es einen Abschnitt, in dem alle Schlachten definiert würden (Wieder Ressourcen definieren und was nicht), und möglicherweise einen Abschnitt, in dem diese Skripte definiert würden. Ich wünschte nur, es gäbe eine Möglichkeit, C # im laufenden Betrieb mit WP7 zu kompilieren. Wenn ich auf beiden Seiten Unterstützung bekommen könnte, wäre das kein Problem. Ich frage mich, ob es eine Mono-Bibliothek geben würde, die auf WP7 portiert werden könnte und die die Funktionalität von CodeDom und allen Compiler-Klassen teilen würd

Antworten auf die Frage(10)

Ihre Antwort auf die Frage