admin管理员组文章数量:1531237
2024年3月10日发(作者:)
棋牌网络游戏服务端的架构设计
【摘要】网络游戏目前在国内相当热门,棋牌类游戏在网络游
戏中占有比较重要的地位。越来越多的开发商加入到了网络游戏的
开发中来,但有关网络游戏开发技术介绍的资料却比较少。该文总
结了一款通用的棋牌类网络游戏服务端的架构设计,介绍了基本架
构、通信协议、多线程模型和第3方接口的相关内容,并对整个架
构作了一定分析。
【关键词】网络游戏 服务器 服务端架构 通信协议
棋牌类休闲游戏是网络游戏中非常重要的一类。从早期的联众
到现在的qq游戏,棋牌类休闲游戏得到了长足的发展。由于这类
游戏是将传统的民间游戏网络化,玩家很容易上手,因此这类游戏
成了受众群最大的网络游戏之一。作为研究开发人员,比较关心如
何去开发这样的游戏。然而,由于商业竞争的原因,目前网络上、
期刊上很难找到相关的技术文档。
一、设计
(一)i架构
一种通用的棋牌类网络游戏服务端的架构,主要分为5种软服
务器:登录服务器(1oginserver,ls),大厅服务器(hallserver,
hs),中央服务器(main server,ms),游戏 服务器(gameserver,
gs)和数据库服务器(db)。所谓“软服务器”是指逻辑意义上的
服务器,并不等于现实中的一台具体的物理服务器。一台物理服务
器上可以运行多个软服务器,一个软服务器也可能是由多台物理服
务器所组成。
hs也可以根据负载设置多个,负载均衡算法下面给出例子说明。
ms可以说是整个服务端的核心,它用于存储一些全局信息,如
厅中玩家信息、游戏服务器的信息等等。ms还负责一些合法性检验
和消息的转发等功能。为保证系统的安全性,整个过程中玩家不会
直接与ms进行连接和交互。
gs在客户端看来,就是提供游戏的一个房间。玩家在客户端点
击进入某个房间,就会与相应的gs建立连接,玩家离开gs时便与
之断开连接。
db用于存储玩家的游戏信息,包括账号信息和游戏中的数据等
等。为保证系统安全,玩家不会直接与db进行连接和交互。
(二)通信协议
我们没有采用现成的网络中间件,如dcom、corba等。一方面
是为了节约开发成本,另一方面这些网络中间件的诸多功能也用不
上。
根据需求设计了一套通信协议,称为星形分布式通信协议
(stardistributedcommunicationprotocol,sdcp)。由图1可以
看出,整个服务端(不包括db)的架构是一个星型结构,ms是中
心节点(centernode,cn),而其他服务器是叶节(leaf node,ln)。
这里没把db考虑在内,是因为一般db本身都会提供相应的通信功
能。实际上,sdcp仍然是一种c/s模式的通信协议,cn作为server,
而ln作为client。
为cn设计了一个centernetbase类,为ln设计了一个
leafnetbase类。
(三)多线程模型
以ms为例,ms的centernetbase包含两个缓冲队列,inqueue
和outqueue。inqueue用于存放接收到的消息,outqueue用于存放
待发送的消息。centernetbase中将启动两 个线程,接收线程和发
送线程。接收线程不停地将网络上接收到的消息存放到inqueue中,
而发送线程不停地将outqueue中的消息发送给相应接收者。ms还
将启动唯一的一个主线程,用于处理inqueue中的消息。在处理过
程中,当需要往外发送消息时,则将消息插入outqueue。
ls、gs和hs的多线程模型和ms有点不一样。这3种 服务器除
了含有类似于centernetbase的leafnetbase之外, 还有一个
servernetbase类用于处理和客户端的通信。同样, servernetba
‘se中也包含两个线程和两个队列。为了保证数据 同步处理的简
单,在主线程中仍然只启动唯一的一个线程, 只不过这时需要处
理两个inqueue中的消息。扩展一下,当 netbase类不止是两个时,
就得到了一个可复用的多线程模型。处理线程的片段代码如下:
二、小结
本文提出的服务端的系统架构,在一定程度上比较好地解决了
高效性、安全性、扩展性和通用性的问题。当然,本系统架构仍然
存在很多不完善的地方,希望与读者进行交流,能够提出更好的解
决方案来与大家分享,让网络游戏开发者都得到进一步的提高。
参考文献:
[1]苏羽,王媛媛.visualc++网络游戏建模与实现[m].科海电子
出版社,清华大学出北京:北京,2003,(08).
[2]李文正,郭巧,王利.intemet服务器负载均衡的研究与实现
[m].计算机工程,2005,(06).
版权声明:本文标题:棋牌网络游戏服务端的架构设计 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1710081464a247341.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论