我玩WoW已经有两年了,我对用来写插件的Lua很好奇。因为我到目前为止所读到的Lua是“快速”,“轻盈”和“这很棒”,我想知道如何以及何时使用它。
您需要在系统中嵌入像Lua这样的脚本语言的典型情况是什么?
答案 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 ++快,但对于解释语言来说却很快。