我可以使用C作为我的引擎的脚本语言吗?

时间:2011-05-24 10:07:33

标签: c scripting lua

我现在有一个游戏引擎,我正在寻找一种脚本语言。我尝试过Lua并且发现它非常好但是我希望我的脚本看起来像C或更好的C ++,或者看起来像虚幻引擎的脚本会更好。

这甚至可能吗?

6 个答案:

答案 0 :(得分:6)

当然可以:P如果你愿意,你可以做任何事情。

我目前看到这三种方式:

  • 你自己编写代码来解析C / C ++ - Code,这真的不是一件容易的事。
  • 您使用分析和解释C代码的解析器。 Ch Standard edition应该可以做到这一点,因为它可以作为脚本语言包含在自己的项目中。
  • 另一种方法是创建一个脚本,该脚本将用户生成的代码动态编译为由引擎动态加载的共享库。虽然这不再是“脚本”了。

答案 1 :(得分:4)

检查AngelScript,GameMonkey,还有很多其他的

http://codeplea.com/game-scripting-languages

或许可以顺利完成并将CINT C / C ++解释器(http://root.cern.ch)与ROOT库集成。我们的想法是,您将解释您正在积极处理的所有.c / .cpp文件,而其余文件将被编译(您的选择)。

例如,你是音频程序员,你希望其余的非音频代码非常快,而你正在积极工作的东西不是这样,但要快速迭代 - 热负载,改变飞等等。

此外,CINT解释器还具有额外的动态语言功能 - 您可以内省(反射) - 允许您创建序列化器,用于打包您的游戏资产,或者您可能需要的任何内容。

还有UnderC和Ch(正在提及)和许多其他人......

答案 2 :(得分:2)

Metalua是基于Lua代码库的语言实现系统,它公开了各种语言内部,例如解析器(gg/mlp),因此允许您扩展语言或完全更改语法。想想yacc和Lispy metacircular翻译之间的交叉。

对于我来说,使用看起来像C或更好的C ++ 之后我不太清楚,但我认为这听起来是正确的,并且在实现简易性和灵活性之间提供了很好的平衡。

答案 3 :(得分:2)

有许多脚本语言具有或多或少的C语法。其他人已经提到过ECMAScript,另一种选择是s-lang,它被设计为脚本语言,易于嵌入,并且语法非常接近C.

答案 4 :(得分:2)

TCC有一个允许动态编译C代码的库,并且看作它作为C编译器的速度非常快,它可以用来(几乎)即时编译东西,真的有一个基本示例here,但标题中的TCC文档在解释内容方面更好。

它还带有一个better example,它自己展示了如何在使用libtcc时向编译器公开符号,如果禁用编译器的某些部分(主要是外部导入),这可以允许您对脚本进行沙箱处理除了安全列表上的库之外的库,这可能是完全开源的,而不是复杂,并且它的内部结构有一些基本文档。

答案 5 :(得分:1)

像@Charles所说的那样,如果你想要一些易于实现并具有灵活性的东西,请使用Metalua。如果您需要类似C语言的脚本语言,可以尝试使用ECMAScript或其中的任何超集(JavaScript,JScript,ActionScript)。