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

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

我正在从事一个项目,我希望用户能够尽可能多地进行修改和自定义。

开源可能是一个不错的选择,但这并不是因为我想关闭一些内部类。

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

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

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

我的怀疑是否合理,或者 Lua 是一个好的解决方案吗? 另外,对于我的问题,您能想到更好的/其他选择吗?

总结重要方面:

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

最佳答案

恐怕唯一能回答 Lua 是否对你来说足够快的人就是......你。我们不知道你到底在做什么,你是如何实现的。我的建议是制作原型(prototype)和测量。用 Lua 和 C/C++ 编写一个小但相关的系统部分,测量两者的性能并确定 Lua 是否足够快。以 WoW 作为案例研究,Lua 似乎对于游戏的客户端/UI 部分来说足够快,但我不能说关于服务器的任何事情。但无论如何,我怀疑是否存在比 Lua 更快、更容易嵌入的语言(免责声明:我自己没有衡量过 Lua 的性能,尤其是与其他类似语言相比,所以对此持怀疑态度)

您提到 DLL 不是跨平台的,所以仅供引用:如果您想将 DLL 用于插件并动态加载它们,Linux 上存在相同的功能。 “DLL”称为“共享库”或“共享对象”,通常以 .so 为扩展名。而不是 window LoadLibrary , GetProcAddressFreeLibrary , 有 dlopen , dlsymdlclose .

关于c++ - Lua 是游戏服务器的最佳/最快选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601431/

相关文章:

java - JavaFX 从 jdk 中移除后是否跨平台?

c# - 错误 CS0234 命名空间 'Xamarin.Forms.Platform 中不存在类型或命名空间名称 'Android'

javascript - 如何使用自定义 Vue 插件

xcode - 如何编写 Xcode 插件?

c++ - 如何将指针传递给 C++ 插件

c++ - 嵌套类和 ADL

c++ - 分析 C++ 编译过程

c++ - 在 API 中控制 WndProc 函数的问题

c++ - QGraphicsScene 中的圆弧

go - 在 Go 中封装平台特定代码的正确方法是什么?