如何为游戏编译C#脚本

如何为游戏编译C#脚本,c#,dll,scripting,C#,Dll,Scripting,我用C#制作了一个简单的游戏引擎(在VB 2008中,主要是为我自己)。有一个主要的应用程序可以处理图形和其他东西,而实际游戏中的大部分数据都将保存在一个dll中,该dll由我提供给游戏设计者的工具生成 我听说过很多关于C#非常适合编写脚本的说法(看起来它比任何其他方式都更适合我的需要),但我真的找不到确切的答案。我遇到了这个问题: 显然,我不想给出main exe的源代码,但它将包含脚本编写所需的所有主要方法(因为它们作用于main exe) 当dll没有定义它将在父exe中调用的方法时,如何

我用C#制作了一个简单的游戏引擎(在VB 2008中,主要是为我自己)。有一个主要的应用程序可以处理图形和其他东西,而实际游戏中的大部分数据都将保存在一个dll中,该dll由我提供给游戏设计者的工具生成

我听说过很多关于C#非常适合编写脚本的说法(看起来它比任何其他方式都更适合我的需要),但我真的找不到确切的答案。我遇到了这个问题:

显然,我不想给出main exe的源代码,但它将包含脚本编写所需的所有主要方法(因为它们作用于main exe)

当dll没有定义它将在父exe中调用的方法时,如何生成dll?主exe将dll作为使用它的依赖项。这意味着dll不能依赖于会导致循环的exe

我可以创建另一个dll,exe和库都可以使用,但是其中的方法无法直接作用于使用它的主exe

我提出的唯一合乎逻辑的解决方案是:

  • 一个包含我需要的类的基本结构的dll
  • 包含游戏数据的dll。这将有一个从dll a继承的类
  • Exe依赖于A和B。它将重写B中的A方法,使其以应有的方式运行
不过这看起来不太优雅

在我累得读不下去之前,我在研究中看到了很多单词(MAF、MEF、Roslyn等)。我一个人花了好几个小时


在你看来,我应该怎么做呢?有什么我忽略了的吗?

我不知道你从哪里听说C#是脚本编写的“伟大”工具。Rosyln半生不熟的尝试并不是真正的“脚本”

为什么不试试那些DLR语言中的一种——比如IronPython和IronRuby


此外,还有针对.NET的Lua绑定。。现在大多数游戏开发人员都使用Lua编写脚本。因此,如果你打算保持游戏引擎的封闭源代码,modder社区肯定会喜欢你的游戏引擎。

听起来你把DLL的可扩展性和脚本的可扩展性混为一谈

让我们首先采用dll方法

实现这一点的标准方法与您概述的非常接近:

  • 有一个
    interfaces.dll
  • 您的入口点dll将依赖于
    接口.dll
  • 扩展dll将依赖于
    接口.dll
  • 在运行时,要扩展main,请扫描entention dll以查找在
    interfaces.dll
    中实现所需接口的类,并根据需要调用这些方法

  • 对于脚本编写,您通常需要使用脚本语言—powershell在.Net中很流行,而且脚本编写中也有

    您指的是C#的插件体系结构吗?或者类似“我听说过很多关于C语言非常适合编写脚本”之类的话???Powershell非常适合编写脚本。C#是一种编译语言。还有一个Microsoft脚本主机。这个问题问得很好,但我相信它会更合适,并在programmers.stackexchange上得到更好的响应。com@Dan-o这个问题确实属于这里。起初我尝试过Lua,但是为它创建.NET库的人没有任何问题文档编制和按我想要的方式设置都是一团糟。这就是我产生C#scripting想法的地方:但我认为接口方法可能会工作得最好。出于某种原因,我只是痴迷于将所有内容都放在一个额外的dll中的想法。