rye*_*guy 11 c# python java networking
我只是想知道什么语言是开发游戏服务器以支持大量(数千)用户的好选择?我涉猎python,但意识到它只会太麻烦,因为它不会在核心之间产生线程(意味着8核心服务器= 1核心服务器).我也不太喜欢这种语言(那种"自我"的东西让我大吃一惊).
我知道C++是性能方面的工作语言,但我讨厌它.我不想处理它草率的语法,我喜欢用托管语言来控制它.这带我到C#和Java,但我对其他语言开放.我喜欢.NET的简单性,但我想知道,从速度上来说,这对于这项工作是否有益.请记住,因为它将部署在Linux服务器上,它将在Mono框架上运行 - 不确定这是否重要.我知道Java在语法方面非常类似于.Net,但我对它的体验是有限的.是否有任何框架可供其使用,或者可以在开发中轻松实现?
请帮助我和我挑剔的自己到达解决方案.
更新:我并不是说听起来如此挑剔,我真的不认为我是.我真正排除的唯一语言是C++,我不喜欢Python因为可扩展性问题.我知道进程之间有通信的方式,但如果我有一个8核服务器,为什么我需要制作8个进程?有更优雅的解决方案吗?
小智 19
我讨厌说出来,而且我知道我冒着降压模式在这里冒险,但听起来并不像你有一种语言.所有编程语言都有它们的怪癖,程序员只需要适应它们.完全有可能在Python中编写一个没有类的工作服务器(消除"自"变量类引用),同样也很容易用干净的语法编写C++.
如果您希望部署跨平台并希望开发跨平台,那么您最好的选择可能是Java.它比C和C++这样的编译语言缩短了开发周期,但是比Python和Perl这样的解释语言具有更高的性能(可论证,但我一直都是反Java = P),你不必使用非官方的实现,如Mono可能不时不支持所有语言的功能.
fin*_*vin 16
Erlang是一种围绕多个服务器的并发和分发而设计的语言,非常适合服务器软件.关于Erlang和游戏服务器的一些链接:
http://www.devmaster.net/articles/mmo-scalable-server/
http://www.erlang-consulting.com/euc2005/mmog/mmog_in_erlang.htm
我正在考虑在Erlang中自己编写一个游戏服务器.
mst*_*obl 14
我可能会稍微偏离主题,但这个话题让我感兴趣,因为我(业余爱好)在很多游戏服务器(MMORPG服务器)上工作 - 在其他人的代码和我的代码上.那里有你感兴趣的文献,如果你想要一些参考文献,请给我留言.
在您的问题中让我感到震惊的一件事是希望为多线程应用程序提供服务.从我谦虚的经历来看,这不太合适.:-)
当您为数千名用户提供服务时,您需要尽可能模块化的设计,因为您的主要目标之一是保持整个服务的正常运行.游戏服务器往往相当复杂,因此会有很多显示停止的错误.不要因为单点故障而使你的生活变得悲惨(一次申请!).
相反,尝试构建可在多个主机上运行的多个进程.我的拙见建议如下:
我已经移植了一些用C++和C#编写的引擎,用于在Linux,FreeBSD和Solaris上运行的主机(在旧的UltraSparc IIi上 - 是的,单声道仍在那里运行:).根据我的经验,考虑到它在sparc机器上运行的古老硬件,C#足够快.
业界(据我所知)倾向于使用大量的C++来完成服务工作,并为实际的游戏逻辑嵌入脚本语言.啊,已经写得太多 - 很酷的话题.
说到纯粹的性能,如果你可以运行Java 6,那么与优化的C++相比,你可以获得大约1:1的性能(尽管有特殊情况,有时Java更快,有时候是C++),你唯一的问题当然是像数据库库这样的东西. ,互连性,可扩展性等.我相信每种问题都有各种各样的优秀解决方案,但你找不到一种可以解决所有问题的语言,所以我必须给你一个古老的建议:选择你喜欢的语言并使用那个.
哦,你还在读这个吗?:)好吧,这里有一些额外的指示.
你需要什么样的表现?
对于需要大量并发性的服务器来说,twisted非常适合,就像erlang一样.要么容易支持大规模并发,要么具有分布式计算的功能.
如果你想在python应用程序中跨越多个核心,如果你想跨越多台机器,那就做同样的事情 - 运行多个进程.