欢迎来到天天文库
浏览记录
ID:5233507
大小:26.50 KB
页数:4页
时间:2017-12-06
《棋牌网络游戏服务端架构设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、棋牌网络游戏服务端架构设计 【摘要】网络游戏目前在国内相当热门,棋牌类游戏在网络游戏中占有比较重要的地位。越来越多的开发商加入到了网络游戏的开发中来,但有关网络游戏开发技术介绍的资料却比较少。该文总结了一款通用的棋牌类网络游戏服务端的架构设计,介绍了基本架构、通信协议、多线程模型和第3方接口的相关内容,并对整个架构作了一定分析。【关键词】网络游戏服务器服务端架构通信协议棋牌类休闲游戏是网络游戏中非常重要的一类。从早期的联众到现在的QQ游戏,棋牌类休闲游戏得到了长足的发展。由于这类游戏是将传统的民间游戏
2、网络化,玩家很容易上手,因此这类游戏成了受众群最大的网络游戏之一。作为研究开发人员,比较关心如何去开发这样的游戏。然而,由于商业竞争的原因,目前网络上、期刊上很难找到相关的技术文档。一、设计(一)I架构一种通用的棋牌类网络游戏服务端的架构,主要分为5种软服务器:登录服务器(1oginserver,LS),大厅服务器(hallserver,HS),中央服务器(mainserver,MS),游戏4服务器(gameserver,GS)和数据库服务器(DB)。所谓“软服务器”是指逻辑意义上的服务器,并不等于现实
3、中的一台具体的物理服务器。一台物理服务器上可以运行多个软服务器,一个软服务器也可能是由多台物理服务器所组成。Hs也可以根据负载设置多个,负载均衡算法下面给出例子说明。MS可以说是整个服务端的核心,它用于存储一些全局信息,如厅中玩家信息、游戏服务器的信息等等。MS还负责一些合法性检验和消息的转发等功能。为保证系统的安全性,整个过程中玩家不会直接与MS进行连接和交互。GS在客户端看来,就是提供游戏的一个房间。玩家在客户端点击进入某个房间,就会与相应的GS建立连接,玩家离开GS时便与之断开连接。DB用于存储玩
4、家的游戏信息,包括账号信息和游戏中的数据等等。为保证系统安全,玩家不会直接与DB进行连接和交互。(二)通信协议我们没有采用现成的网络中间件,如DCOM、CORBA等。一方面是为了节约开发成本,另一方面这些网络中间件的诸多功能也用不上。根据需求设计了一套通信协议,称为星形分布式通信协议(StarDistributedCommunicationProtocol,SD4CP)。由图1可以看出,整个服务端(不包括DB)的架构是一个星型结构,MS是中心节点(CenterNode,CN),而其他服务器是叶节(Lea
5、fNode,LN)。这里没把DB考虑在内,是因为一般DB本身都会提供相应的通信功能。实际上,SDCP仍然是一种C/S模式的通信协议,CN作为Server,而LN作为Client。为CN设计了一个CenterNetbase类,为LN设计了一个LeafNetbase类。(三)多线程模型以MS为例,MS的CenterNetbase包含两个缓冲队列,inQueue和outQueue。inQueue用于存放接收到的消息,outQueue用于存放待发送的消息。CenterNetbase中将启动两个线程,接收线程和发
6、送线程。接收线程不停地将网络上接收到的消息存放到inQueue中,而发送线程不停地将outQueue中的消息发送给相应接收者。MS还将启动唯一的一个主线程,用于处理inQueue中的消息。在处理过程中,当需要往外发送消息时,则将消息插入outQueue。LS、GS和HS的多线程模型和MS有点不一样。这3种服务器除了含有类似于CenterNetbase的LeafNetbase之外,还有一个ServerNetbase类用于处理和客户端的通信。同样,ServerNetba‘se中也包含两个线程和两个队列。为了
7、保证数据同步处理的简单,在主线程中仍然只启动唯一的一个线程,4只不过这时需要处理两个inQueue中的消息。扩展一下,当Netbase类不止是两个时,就得到了一个可复用的多线程模型。处理线程的片段代码如下:二、小结本文提出的服务端的系统架构,在一定程度上比较好地解决了高效性、安全性、扩展性和通用性的问题。当然,本系统架构仍然存在很多不完善的地方,希望与读者进行交流,能够提出更好的解决方案来与大家分享,让网络游戏开发者都得到进一步的提高。参考文献:[1]苏羽,王媛媛.Visualc++网络游戏建模与实现[
8、M].科海电子出版社,清华大学出北京:北京,2003,(08).[2]李文正,郭巧,王利.Intemet服务器负载均衡的研究与实现[M].计算机工程,2005,(06).4
此文档下载收益归作者所有