2009-10-21 33 views
3

我正在开发一个项目,我希望用户能够尽可能地修改和定制。Lua是游戏服务器的最佳/最快选择?

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

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

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

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

我的怀疑是否合理或者Lua会是一个很好的解决方案? 你也可以考虑我关心的任何更好的/其他的选择吗?

综上所述重要方面:

  • 跨平台兼容性
  • 良好的性能( - >在线游戏)
  • 插件/任何人都可以,只要建立在他/她的脚本知道的语言,可以说,它是Lua中,C或闭源的插件/脚本(不是那么重要了什么
  • 选项,但会被罚款:)

回答

5

恐怕唯一能回答的人就是Lua对你来说足够快就是......你。我们不知道你到底在做什么以及你如何实施它。我的建议是原型和测量。在Lua和C/C++中编写一个小而相关的系统部分,测量两者的性能,并确定Lua是否足够快。将WoW作为案例研究,Lua似乎对游戏的客户端/用户界面部分来说足够快,但我无法对服务器进行任何说明。但无论如何,我怀疑那里的语言比Lua更快,更易于嵌入(免责声明:我本人没有测量过Lua的性能,尤其是没有反对其他类似的语言,所以请带上一粒盐

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

+0

对不起,以前很忙。 感谢您的帮助,我会尽快尝试LUA。 我的服务器应用程序将瞄准的游戏是魔兽争霸III。 很多人在某些地图上的响应时间非常短,例如50-100毫秒,这就是为什么我担心性能。 我对动态库的问题是我想提供某种像Linux那样的存储库的数据包管理。 但我怀疑是否有任何可能提供任何种类的仍然是跨平台的预编译的东西。 也许应该早些提到这一点,但..谢谢:) – Spoofy 2009-10-31 20:57:23

2

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

+0

根据模块如何耦合,GPL 2可能无法正常工作。通常情况下,动态链接不是防火墙,可以防止GPL许可证应用到其他模块。将模块作为单独的进程调用通常足以阻止GPL许可证在整个流程边界上应用。 – 2009-10-21 19:24:59

+0

LGPL呢? – Lazarus 2009-10-21 22:07:05

+0

非常感谢快速回复。 也许我的描述有点误导,但我的担心并不是使用什么许可证,但是如果LUA对于速度非常高的游戏服务器应用程序足够快地执行。 或万一它不会,如果任何人都可以想到一个很好的选择;) – Spoofy 2009-10-22 21:52:42

1

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

+0

而不像Lua那样使用C API来嵌入C/C++,它使用完全的OOP C++ API,如果你感觉更舒服。 – 2009-12-06 23:10:15