包括.NET应用程序的脚本功能

我有一个用C#创建的情节。 它使用数据库作为后端。 它的。 一个交易卡游戏,我也打算将卡的功能作为手稿来实现。

我的建议是我基本上有一个用户界面,ICard,卡类适用(public class Card056: ICard),并且还具有视频游戏调用的功能。

目前,为了使事物可维护/可修改,我希望将每张卡的类作为数据库中的资源代码,并且基本上在第一次使用时编译它。 因此,当我需要添加/更改卡时,我只需将其添加到数据库中,并通知我的应用程序恢复活力,而无需任何类型的设置发布(特别是考虑到我们肯定会说每个设置1个)建议成千上万的设置卡。

这可行吗? 从资源文档注册一个类,然后实例化它,依此类推

ICard Cards[current] = new MyGame.CardLibrary.Card056();
Cards[current].OnEnterPlay(ref currentGameState);

如果用任何.NET语言编写稿件是可行的,那么语言就是C#,但又增加了激励。

0
2019-05-03 17:52:40
资源 分享
答案: 6

我部门市场的主要应用程序确实具有可比性,可以提供客户定制(这表明我无法上传任何类型的资源)。 我们有一个C#应用程序,许多充满活力的VB.NET手稿(虽然任何.NET语言都可以方便地维持 - 由于自定义组源自ASP历史,因此选择了VB)。

使用.NET是CodeDom,我们从数据源编译手稿,利用VB CodeDomProvider(如果你打算维持3.5个属性,你需要使用“CompilerVersion”=“v3来传递同义词库,那么它更加默认为.NET 2)。 5“到它的安装员。 利用CodeDomProvider.CompileAssemblyFromSource方法进行编译(你可以通过设置强制它在内存中编译)。

这肯定会在内存中引起数以千计的设置,但是你可以把所有充满活力的课程的代码放在一个单独的设置中,并且在任何调整时也重新编译整个大部分。 这样做的好处是,您可以在检查磁盘时使用PDB添加标记以进行编译,从而允许您通过充满活力的代码进行调试。

0
2019-05-19 21:31:18
资源

如果您不打算使用DLR,可以使用使用Boo(有翻译),也可以考虑CodePlex上的Script.NET(S#)项目。 使用Boo补救措施,您可以在汇编的手稿之间进行选择或使用解释器,Boo也可以制作出精彩的脚本语言,具有适应性强的语法以及使用其开放式编译器风格的可扩展语言。 然而,Script.NET看起来也很精彩,而且您可以方便地扩展该语言及其开放资源任务,并且还可以使用非常令人愉快的编译器生成器(Irony.net)。

0
2019-05-10 05:33:33
资源

您可以使用任何一种DLR语言,这种语言可以方便地组织您自己的脚本系统。 尽管如此,您不需要为此使用脚本语言。 您可以使用C#并使用C#代码载体进行编译。 只要您将其加载到自己的AppDomain中,您就可以加载并将其卸载到您心中的Web内容中。

0
2019-05-07 18:17:39
资源

Oleg Shilo的C#脚本解决方案(在The Code Project)实际上是在您的应用程序中提供稿件能力的精彩介绍。

各种策略肯定会考虑一种特别为脚本编写的语言,例如IronRuby的IronPython的LUA

IronPython和IronRuby今天都很容易买到。

有关安装IronPython的概述,请阅读如何通过10个简单步骤在现有应用程序中嵌入IronPython脚本支持

Lua是一种通常在视频游戏中使用的脚本语言。 有一个用于.NET的Lua编译器,可以从CodePlex - http://www.codeplex.com/Nua获得

如果您打算了解有关在.NET中构建编译器的更多信息,那么该代码库是一个很棒的读物。

各种角度完全是尝试电源外壳。 有无数的实例将PowerShell安装到应用程序中 - 下面是关于该主题的详细任务:Powershell隧道

0
2019-05-07 17:29:36
资源

是的,我想到了这一点,但我很快发现其他领域特定语言(DSL)肯定会有点过分。

基本上,他们需要以可能不确定的方式与我的游戏状态联系。 例如,一张牌可以有一个规则“当这张牌进入游戏时,你的所有亡灵小兵都会获得+3攻击而不是飞行对手,除非对手获得荣誉”。 由于交易卡视频游戏是基于转换的,因此GameState Manager肯定会在OnStageX场合放电,并且允许卡以任何方式更换各种其他卡或GameState。

如果我尝试创建一个DSL,我需要实现一个巨大的属性集,也可能经常升级它,这会将维护作业更改为一个额外的组件,而不会实际消除它。

这就是我打算保持“实际”的原因。 NET语言基本上有能力简单地放电的场合,也允许卡以任何方式调整游戏状态(在代码可访问性保护的限制范围内)。

0
2019-05-07 17:29:12
资源

你可以为此使用IronRuby。

否则我肯定会建议你有一个目录网站,你可以在其中定位预编译设置。 之后,您可以在DB中引用设置和类,还可以使用表示在运行时加载正确的设置。

如果您确实打算在运行时进行编译,则可以使用CodeDOM,之后您可以使用表示来加载充满活力的设置。 Microsoft文档文章可能有所帮助

0
2019-05-07 16:34:48
资源