游戏服务器技术浅问

轻纱罗幔细柳腰 2014-06-05 09:58:06
游戏服务器有没有成熟的架构 类似于web服务器的 apache tomcat ,一般游戏服务器都用什么语言写,最近在看一个Nodejs框架的使用语言是JavaScript,不知这种框架应用面怎么样?有服务器经验的给普及下入门概念吧。欢迎灌水
...全文
858 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
emyueguang 2014-07-02
  • 打赏
  • 举报
回复
C 端只连接到网关, 由网关将C端的包转发给指定的游戏服务器. 同样, 服务器也是连接到网关, 服务器也是向网关发包, 由网关将数据包转发到C端. 再架设一个DNS服务器, 自动匹配目前比较闲的网关, 这样就实现负载均衡啦
emyueguang 2014-07-02
  • 打赏
  • 举报
回复
正好我现在 在游戏服务器, 对于用什么语言写, 这个没有限制, 什么语言熟悉就用什么语言. 我用的是C++ & lua. 说说我的框架设计吧, center_server + 多网关 + data_server + 多游戏服务器 + 数据库. 组成 中心服务器用来处理登陆, 注册, 验证, 生成KEY值, 等操作 游戏服务器是连接到网关的, 游戏C端并不能直接连接到游戏服务器. 这样一来, 网关多开, 就可以做负载均衡了. 至于多个游戏服务器, 比如说, N个场景, 每进一个场景就是一个单独的进程, 也就是一个独立的游戏服务器了. 那不同的玩家进不同的场景, 数据怎么办呢, 好的, 数据都放在data_server上面, 这是玩家实时的数据! 放在内存里面的, 只不是这是用一个单独的进程来实现的数据服务器. 数据库就没什么好说了, 数据库要定期的写数据库, 要不然宕机了玩家会让你死的很惨很惨! 另外有一点, 这一点是个人建议咯. 建立使用多进程, 单线程的方式来写游戏服务器, 尤其是新手, 多线程错综复杂, 各种加锁, 到最后把自己搞的精疲力竭不说, 对于没有太多服务器编写经验的, 使用多线程, 其性能不见得比多进程, 单线程服务器高! 而且使用多进程最大的好处是, 一个场景就是一个单独的进程, 即, 是一个单独的服务器, 这个场景崩溃了, 不影响其它场景中的玩家, 如果你是使用多个线程, 那一个线程中出了问题就会导致整个程序崩溃. 关于网络库, 个人建议使用成熟的, 开源的网络库吧, 吐槽一下, 我现在是在windows下写游戏服务器, 使用的的windows线程池, 它是对IOCP一个封装. 现在已经写的差不多了, 如果再给我一次机会, 我一定一定不会自己写网络库, 推荐使用libevent这个网络库, 跨平台的, 可以linux下面用, 也可以在windows下面用. 另外, 我看楼主发询问关于web服务器, 这个看你游戏应用了, 如果你的游戏是短连接的话, 那你可以使用web服务器来实现, 对于短连接, 使用web服务器是一个不错的选择. 但是大部分的游戏都是长时间在线, 即长连接, 长时间与服务器保持TCP连接的. 这种情况你得自己写游戏服务器, 不能用web服务器. 你说的apache tomcat, 它是web服务器, 即, 接收C端发起的连接, 并只能解析HTTP协议, 游戏服务器是要定义自己的通信协议, 就是通信包的规则啦, 然后按照这种规则来解析数据包.
业余草 2014-06-28
  • 打赏
  • 举报
回复
游戏服务器的性能要求很高的
  • 打赏
  • 举报
回复
引用 11 楼 jiangguobin 的回复:
[quote=引用 楼主 lineage191 的回复:] 游戏服务器有没有成熟的架构 类似于web服务器的 apache tomcat ,一般游戏服务器都用什么语言写,最近在看一个Nodejs框架的使用语言是JavaScript,不知这种框架应用面怎么样?有服务器经验的给普及下入门概念吧。欢迎灌水
我来说说吧,抛砖引玉。 你说的服务器不是很明确,服务器有两大种。 一种我叫backend server,包括那些处理用户账号登陆,inventory,技能,商店之类的数据。这种服务器所用的架构和普通的服务器应用类似,什么tomcat,apache,php之类的都能用上。 还有一种是gameserver,gameserver一般运算量都是很大的,对于fps游戏,每个gameserver一般也就是十几个人,要处理诸如物理,AI等等游戏里的细节, 对于mmorpg,要处理地形,战斗等等这些东西。gameserver都是专门写的,一般当然是c,c++这些语言了,通用框架就没有了,都是各个引擎有自己的网络系统。 [/quote] 多谢普及,说实话,开贴时刚入门,最近也做服务器也一段时间了,其实作为一个新人往往对概念,框架,逻辑很模糊,看到你的回复分析的很到位,获益良多
jiangguobin 2014-06-17
  • 打赏
  • 举报
回复
引用 楼主 lineage191 的回复:
游戏服务器有没有成熟的架构 类似于web服务器的 apache tomcat ,一般游戏服务器都用什么语言写,最近在看一个Nodejs框架的使用语言是JavaScript,不知这种框架应用面怎么样?有服务器经验的给普及下入门概念吧。欢迎灌水
我来说说吧,抛砖引玉。 你说的服务器不是很明确,服务器有两大种。 一种我叫backend server,包括那些处理用户账号登陆,inventory,技能,商店之类的数据。这种服务器所用的架构和普通的服务器应用类似,什么tomcat,apache,php之类的都能用上。 还有一种是gameserver,gameserver一般运算量都是很大的,对于fps游戏,每个gameserver一般也就是十几个人,要处理诸如物理,AI等等游戏里的细节, 对于mmorpg,要处理地形,战斗等等这些东西。gameserver都是专门写的,一般当然是c,c++这些语言了,通用框架就没有了,都是各个引擎有自己的网络系统。
DrSmart 2014-06-15
  • 打赏
  • 举报
回复
实时性高吗,是MMORPG吗
daniel-du 2014-06-14
  • 打赏
  • 举报
回复
5L+1
转角天边 2014-06-14
  • 打赏
  • 举报
回复
erlang的来冒泡
jiangguobin 2014-06-14
  • 打赏
  • 举报
回复
游戏和其它应用的都是一样的
  • 打赏
  • 举报
回复
游戏做得多了肯定都有自己的一套框架了吧,以前的公司用的就是python写的
wangsiyuanoo 2014-06-10
  • 打赏
  • 举报
回复
公司都自己的一套服务器架构 不过往底下看 无非都差不多的 用的时间久的架构 也许稳定性会好 出现当机的几率低 至于用什么语言 这都无所谓的 主流的无非就是c++ JAVA吧 python貌似也有很多现在
彩阳 2014-06-07
  • 打赏
  • 举报
回复
php服务器、C++服务器。
不要做咸鱼 2014-06-06
  • 打赏
  • 举报
回复
我准备下次找工作要找游戏服务器开发了,祝福我把楼主
我要戒烟了 2014-06-06
  • 打赏
  • 举报
回复
服务器框架比较多,很多公司都一套自己的服务器框架,现在国内大部分是c++ java php 和erlang的服务器 Nodejs框架木有接触过。。。不好做评价
笨木头 2014-06-05
  • 打赏
  • 举报
回复
为了消灭零回复,我这个服务端外行也来凑个热闹吧~ 我以前第一家公司服务端是用C++开发的,部分逻辑用lua,不过那貌似是用了5年的框架了,不知道能不能代表什么。 后来的一家公司用的是Java,貌似用Java的也不少~毕竟上手容易吧~ 然后我自己也试过用FireFly这个开源的服务端引擎,写了个简单的服务端,因为没有什么对比,所以没法评价,总而言之,比自己搭框架是要轻松多了~FireFly是用Python开发的~ PS:我就是看到欢迎灌水,于是我就出现了~

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧