Scripting 什么时候可以使用像Lua这样的嵌入式脚本语言
我玩魔兽世界大约有两年了,我对Lua很好奇,它是用来写插件的。因为到目前为止我读到的关于Lua的内容是“快”、“轻”和“这很棒”,所以我想知道如何以及何时使用它Scripting 什么时候可以使用像Lua这样的嵌入式脚本语言,scripting,lua,Scripting,Lua,我玩魔兽世界大约有两年了,我对Lua很好奇,它是用来写插件的。因为到目前为止我读到的关于Lua的内容是“快”、“轻”和“这很棒”,所以我想知道如何以及何时使用它 典型情况下,您需要在系统中嵌入Lua之类的脚本语言吗?针对具有实时约束的应用程序的快速开发。电脑游戏就是其中之一;-) 如果您希望允许第三方为您的软件开发插件或MOD,这是一个有效的解决方案 您可以用您正在使用的任何语言实现API,但是像LUA这样的脚本语言往往更简单,对于临时开发人员来说更容易访问。当您需要最终用户能够定义/更改系统而
典型情况下,您需要在系统中嵌入Lua之类的脚本语言吗?针对具有实时约束的应用程序的快速开发。电脑游戏就是其中之一;-) 如果您希望允许第三方为您的软件开发插件或MOD,这是一个有效的解决方案
您可以用您正在使用的任何语言实现API,但是像LUA这样的脚本语言往往更简单,对于临时开发人员来说更容易访问。当您需要最终用户能够定义/更改系统而无需重写系统时。它用于游戏中,允许扩展或允许主游戏引擎保持不变,同时允许更改内容。Lua是:
- 轻量级
- 易于集成,即使在异步环境(如游戏)中
- 易于学习的非程序员工作人员,如集成商,设计师和艺术家
由于游戏通常需要所有这些品质,Lua在那里被广泛使用。其他情况可能是需要一些脚本功能的任何应用程序,但开发人员通常会选择更重的解决方案,如.Net或python。嵌入式脚本语言也适用于存储配置信息。最后我检查了一下,Mozilla系列都使用JavaScript作为配置信息 接下来,它们非常适合开发插件。您可以创建一个自定义API来向插件开发人员公开,插件开发人员可以从使用整个语言中获得很多自由 另一种情况是平面文件表达能力不足。如果您想编写行为参数化的数据驱动应用程序,您将对配置组合的长字符串条件测试感到厌倦。发生这种情况时,最好将规则及其计算结果写入配置中
本主题在Pragramtic Programmer一书中得到了一些介绍。除了提到的脚本和可配置性案例之外,我只想说Lua+C(或Lua+C++)是任何软件开发的完美匹配。它允许用户创建一个引擎/使用接口,其中引擎在C/C++中完成,行为或定制在Lua中完成 OSXCocoa有Objective-C(C和Smalltalk Amalga,语言按行变化)。我发现Lua+C与之类似,只是源文件改变了语言,这对我来说是更好的抽象
您不想使用Lua的原因也是值得注意的。因为它几乎没有一个好的调试器。再说一次,人们似乎也不太需要 除了其他人提到的所有优秀理由外,当您需要操作文本、处理文件或只需要更高级的语言时,在C中嵌入Lua非常有用。Lua有很多漂亮的特性(表、函数都是一流的值,还有很多其他的好东西)。此外,虽然Lua的速度不如C或C++,但是对于解释的语言来说,它是非常快的。如果你在应用程序运行时必须改变代码(即时生效),那么也可以使用类似于Lua的脚本语言。在wow中可能看不到这一点,因为据我记忆所及,代码是在开始时加载的(在运行时没有重新检查和加载) 但想想另一个例子:webserver和脚本语言(谢天谢地),您可以更改php代码,而无需重新编译apache或重新启动apache steve yegge使用jython或rhino和javascript(不记得了)为自己的mmorpg引擎供电。他用java编写了核心引擎,但用python/javascript编写了程序逻辑 其效果是:
- 更改脚本时,他不必重新启动核心引擎,因为这样会断开所有玩家的连接
- 他可以让其他人做更简单的编程,比如定义新项目和怪物,而不向他们公开所有关键代码
- 沙盒:如果脚本内部发生错误,您可以优雅地处理它,而不会危及周围的应用程序