Je travaille avec une équipe sur un moteur RPG en C# et XNA. Nous prévoyons de cibler Windows et Windows Phone 7, mais nous sommes confrontés à des problèmes liés aux interactions AI et au contrôle des actions des joueurs pendant les cinématiques. La plupart du temps, tout est extrait à l'aide du modèle de conception MVC, mais l'abstraction de toute la logique et du mouvement dans un contrôleur peut entraîner des problèmes sur toute la ligne. L'idée est donc d'avoir une interface (IScriptEngine) qui prend un IScriptObject et met à jour les données dans le modèle de carte en conséquence. Je pensais à mettre les scripts dans une sorte XML de la syntaxe:Implémentation d'un langage de script XML simple pour un jeu XNA
<Script Name="MoveNPC_1">
<Action Command="MoveToTile" Target="NPC_1" Value="10,2"/>
</Script>
et ont un IScriptEngine parser en conséquence. Je doute fortement que l'analyse d'une déclaration de switch géante soit une bonne idée, mais c'est ce sur quoi j'ai travaillé. Même mon expérience de programmation au secondaire me dit que c'est une mauvaise idée, mais je ne vois pas d'autre moyen de contourner cela.
Editer: Je voudrais d'une manière ou d'une autre intégrer tout ceci dans le fichier de carte. Dans le fichier XML de carte, nous avons des zones désignées pour, qui contient plusieurs balises. Ensuite, il y aurait une section, désignant où le PNJ est sur la carte, et quelles ressources et scripts il utiliserait. Ensuite, il y aurait une section, où toutes les batailles seraient définies (encore une fois, en définissant les ressources et quoi d'autre), puis éventuellement une section, où ces scripts seraient définis. Je souhaite juste qu'il y avait un moyen de compiler C# à la volée en utilisant WP7. Si je pouvais obtenir du soutien des deux côtés, ce ne serait pas un problème. Je me demande s'il y aurait une bibliothèque Mono qui pourrait être portée sur WP7 et qui partagerait les fonctionnalités de CodeDom et de toutes les classes du compilateur?
Je suis entièrement d'accord. Le plus gros problème que je peux voir est le manque de Reflection.Emit sur WP7. Existe-t-il un moyen de faire LUA dans .Net sans Reflection.Emit ou Native Interop? –
Eh bien, il y a LuaCE (bien que ce ne soit pas géré). http://github.com/ynezz/luace/downloads – ctacke