Lua是游戏服务器的最佳/最快选择吗?

时间:2009-10-21 15:00:46

标签: c++ cross-platform plugins scripting-language

我正在开展一个项目,我希望用户能够尽可能地修改和自定义。

开源可能是一个不错的选择,但不是因为我想保留一些内部类。

我想到的另外两个选项是插件作为外部库和Lua脚本。

库(DLL)的问题是跨平台兼容性是必须的,因为它是某种游戏服务器,它主要设计用于专用服务器(通常是Linux),但很多人也会使用它在本地机器上(主要是Windows)。

由于它是一个游戏服务器应用程序应该能够处理大量的连接并且与游戏性能相关的操作非常重要,所以我对Lua脚本有疑问。

我的怀疑是否合理还是Lua是一个好的解决方案? 您还能想到我担心的更好/其他选择吗?

总结重要方面:

  • 跨平台兼容性
  • 良好的表现( - >在线游戏)
  • 只要他/她知道语言,任何人都可以创建的插件/脚本,可能是Lua,C或其他任何
  • 关闭源代码插件/脚本的选项(不是那么重要,但没关系:)

3 个答案:

答案 0 :(得分:5)

我担心,如果Lua对你来说足够快,唯一可以回答的是......你。我们不知道你究竟在做什么,以及你是如何实现它的。我的建议是原型和测量。在Lua和C / C ++中编写一个小而相关的系统部分,测量两者的性能并确定Lua是否足够快。以WoW作为案例研究,Lua似乎对游戏的客户端/ UI部分足够快,但我不能说服务器。但无论如何,我怀疑那里的语言比Lua更快,更容易嵌入(免责声明:我自己没有测量过Lua性能,特别是对其他类似的语言没有测量,所以带上一粒盐

你提到的一些关于DLL不是跨平台的东西,所以只是FYI:如果你想将DLL用于插件并动态加载它们,那么Linux上就存在相同的功能。 “DLL”被称为“共享库”或“共享对象”,通常通过 .so 的扩展名来实现。而不是窗口LoadLibraryGetProcAddressFreeLibrary,有dlopendlsymdlclose

答案 1 :(得分:2)

没有什么可以阻止您为应用程序中的不同模块提供不同的许可,显然不能使用GPL 3,因为它会立即涵盖所有模块。

答案 2 :(得分:1)

你有没有想过AngelScript?我也不太了解它,但它似乎有类似C ++的语法,并且非常灵活且极其跨平台。