3

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

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

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

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

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

我的怀疑是合理的还是 Lua 是一个很好的解决方案?您还可以为我考虑任何更好的/其他选择吗?

总结一下重要的方面:

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

3 回答 3

5

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

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

于 2009-10-23T08:40:55.697 回答
2

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

于 2009-10-21T15:14:48.080 回答
1

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

于 2009-12-06T22:59:06.883 回答