我想知道用什么语言开发一个支持大量(数千)用户的游戏服务器会是一个很好的选择?我涉足了python,但我意识到它太麻烦了,因为它不会跨核心(即8核server=1核心服务器)产生线程。我也不是很喜欢这种语言(那种“自我”的东西让我觉得很恶心)。
我知道就性能而言,C++是适合这项工作的语言,但我讨厌它。我不想处理它草率的语法,我喜欢托管语言来拉我的手。这让我想到了C#和Java,但我对其他语言持开放态度。我喜欢.NET的简单性,但我想知道,在速度方面,这是否适合这项工作。请记住,由于它将部署在Linux服务器上,它将在Mono框架上运行-不确定这是否重要。我知道Java在语法上与.Net非常相似,但我的经验有限。在开发过程中,有没有什么框架可以用来解决这个问题呢?
请帮助我和我挑剔的自己达成一个解决方案。
更新:我不是故意这么挑剔的,我真的不认为我是这样的。我唯一真正排除的语言是C++,因为可伸缩性问题,我不喜欢它。我知道有很多方法可以在进程之间通信,但是如果我有一个8核的服务器,为什么我需要8个进程?有没有更优雅的解决方案?
发布于 2008-12-25 13:50:59
Erlang是一种围绕并发和分布在多个服务器上设计的语言,非常适合服务器软件。关于Erlang和游戏服务器的一些链接:
http://www.devmaster.net/articles/mmo-scalable-server/
http://www.erlang-consulting.com/euc2005/mmog/mmog_in_erlang.htm
我正在考虑自己用Erlang编写一个游戏服务器。
发布于 2008-12-25 08:30:17
我不想这么说,我知道我在冒着失败的风险,但听起来好像没有适合你的语言。所有的编程语言都有它们的怪癖,程序员只能简单地去适应它们。用Python语言编写一个没有类的服务器是完全可能的(消除了"self“变量的类引用),同样,用干净的语法编写C++也同样容易。
如果您希望部署跨平台,并且想要开发跨平台,那么最好的选择可能是Java。它比C和C++等编译语言的开发周期更短,但它的性能比Python和Perl等解释语言更高(有争议,但我一直反对Java =P),而且你不必使用非官方的实现,比如Mono,这些实现有时可能不支持一种语言的所有特性。
发布于 2008-12-25 15:57:20
我可能在这里有点离题,但是这个话题引起了我的兴趣,因为我(业余爱好)在相当多的游戏服务器(MMORPG服务器)上工作过--除了我自己的代码之外,还在其他人的代码上工作。有一些你会感兴趣的文献,如果你想要一些参考资料,请给我留言。
在你的问题中,有一件事让我印象深刻,那就是希望通过多线程应用程序为1000名用户提供服务。从我卑微的经验来看,这并不是很有效。:-)
当您为成千上万的用户提供服务时,您需要一个尽可能模块化的设计,因为您的主要目标之一将是保持整个服务的正常运行。游戏服务器往往相当复杂,因此会有相当多的停止显示的bug。不要因为单点故障(一个应用程序!)而让你的生活苦不堪言。
相反,可以尝试构建可以在多个主机上运行的多个进程。我的建议如下:
我已经为运行在Linux、FreeBSD和Solaris上的主机移植了一些用C++和C#编写的这样的引擎(在旧的UltraSparc IIi上-是的,mono仍然在那里运行:)。根据我的经验,考虑到它在sparc机器上运行的是什么古老的硬件,C#已经足够快了。
业界(据我所知)倾向于使用大量的C++进行服务工作,并嵌入脚本语言来实现实际的游戏逻辑。啊,写了太多已经很酷的话题了。
https://stackoverflow.com/questions/392624
复制相似问题