什么时候使用像Lua这样的嵌入式脚本语言是好的

时间:2009-02-26 17:22:52

标签: scripting lua

我玩WoW已经有两年了,我对用来写插件的Lua很好奇。因为我到目前为止所读到的Lua是“快速”,“轻盈”和“这很棒”,我想知道如何以及何时使用它。

您需要在系统中嵌入像Lua这样的脚本语言的典型情况是什么?

8 个答案:

答案 0 :(得分:13)

当您需要最终用户能够定义/更改系统而无需重写系统时。它在游戏中用于允许扩展或允许主游戏引擎保持不变,同时允许更改内容。

答案 1 :(得分:8)

嵌入式脚本语言也适用于存储配置信息。最后我查了一下,Mozilla家族都使用JavaScript来获取配置信息。

接下来,它们非常适合开发插件。您可以创建一个自定义API以向插件开发人员公开,并且插件开发人员可以免于使用整个语言。

另一个是平面文件不够表达的时候。如果你想编写数据驱动的应用程序,其中行为参数化,你会厌倦测试配置组合的长串条件。发生这种情况时,最好将规则及其评估写入配置中。

本主题在Pragramtic Programmer一书中得到了一些报道。

答案 2 :(得分:3)

Lua是:

  • 轻型
  • 即使在游戏等异步环境中也易于集成
  • 易于学习非程序员工,如集成商,设计师和艺术家

由于游戏通常需要所有这些品质,因此Lua主要用于那里。其他引用可能是需要某些脚本功能的任何应用程序,但开发人员通常选择更重量级的解决方案,如.Net或python。

答案 3 :(得分:3)

如果您必须在应用程序运行时更改代码(立即生效),也可以使用像Lua这样的脚本语言。一个人可能不会在哇中看到这个,因为据我记得,代码是在开始时加载的(而不是在运行时重新检查和重新加载)。

但想想另一个例子:网络服务器和脚本语言 - (幸运的是)你可以改变你的PHP代码,而无需重新编译apache或重启apache。

使用jython或rhino和javascript(不记得),史蒂夫为他自己的mmorpg引擎驱动wyvern做了那件事。他用java编写了核心引擎,但是用python / javascript编写了程序逻辑。

这样的效果是:

  • 他在更改脚本时不必重新启动核心引擎,因为这会断开所有玩家的连接
  • 他可以让别人做更简单的编程,比如定义新项目和怪物,而不会将所有关键代码暴露给他们
  • 沙盒:如果脚本中发生错误,您可以优雅地处理它而不会危及周围的应用程序

答案 4 :(得分:2)

快速开发具有实时约束的应用程序。电脑游戏就是其中之一; - )

答案 5 :(得分:2)

如果您想允许第三方为您的软件开发插件或模块,这是一个有效的解决方案。

您可以使用您正在使用的任何语言来实现API,但是像LUA这样的脚本语言对于临时开发人员来说往往更简单易用。

答案 6 :(得分:2)

除了提到的脚本和可配置性案例之外,我只想说Lua + C(或Lua + C ++)是任何软件开发的完美匹配。它允许我们创建一个引擎/使用界面,其中引擎在C / C ++中完成,行为或定制在Lua中完成。

OS X Cocoa有Objective-C(C和Smalltalk汞合金,其中语言根据行改变)。我发现Lua + C类似,只有语言根据源文件而改变,这对我来说是一个更好的抽象。

想要使用Lua的原因也值得注意。因为它几乎没有一个好的调试器。然后,人们似乎也几乎不需要一个人。 :)

答案 7 :(得分:0)

除了其他人提到的所有优秀原因之外,当您需要操作文本,处理文件或只需要更高级别的语言时,在C语言中嵌入Lua非常有用。 Lua有很多漂亮的功能(表,函数是一流的值,很多其他的好东西)。此外,虽然lua不如C或C ++快,但对于解释语言来说却很快。