
SERVICE PHONE
363050.com发布时间:2025-07-16 05:09:22 点击量:
棋牌游戏大全,棋牌游戏app,棋牌游戏平台,棋牌游戏赌博,棋牌娱乐,棋牌娱乐平台,棋牌论坛,棋牌,开元棋牌,棋牌游戏有哪些,斗地主,扑克游戏,麻将,德州扑克,牛牛,麻将糊了,掼蛋,炸金花,掼蛋技巧,掼蛋口诀,抢庄牛牛,十点半,龙虎斗,21点,贵阳捉鸡麻将,牌九
棋牌网络游戏服务端的架构设计 ◆ 陶维英 l州天盟数码有限公司福建福州350003) 【 摘要】 网络游戏目前在 国内相 当热门, 棋牌类游戏在网络游戏 中占有比较重要的地位。越来越多的开发商加入到 了网络游戏 的开发中来. 但有关网络游戏开发技术介绍的资料却比较少。 该 文总结了一款通用的棋牌类网络游戏服务端的架构设计.介绍 了基本架构、 通信协议、 多线 方接口的相关 内容。 并对整个架构作了一定分析。 【 关键词】 网络游戏 服务器 服务端架构 通信协议 棋牌类休闲游戏是网络游戏中非常重要的一类。 从早期的联 众到现在的 Q Q 游戏...
棋牌网络游戏服务端的架构设计 ◆ 陶维英 l州天盟数码有限公司福建福州350003) 【 摘要】 网络游戏目前在 国内相 当热门, 棋牌类游戏在网络游戏 中占有比较重要的地位。越来越多的开发商加入到 了网络游戏 的开发中来. 但有关网络游戏开发技术介绍的资料却比较少。 该 文总结了一款通用的棋牌类网络游戏服务端的架构设计.介绍 了基本架构、 通信协议、 多线 方接口的相关 内容。 并对整个架构作了一定分析。 【 关键词】 网络游戏 服务器 服务端架构 通信协议 棋牌类休闲游戏是网络游戏中非常重要的一类。 从早期的联 众到现在的 Q Q 游戏, 棋牌类休闲游戏得到了长足的发展。 由于 这类游戏是将传统的民间游戏网络化, 玩家很容易上手, 因此这 类游戏成了受众群最大的网络游戏之一。 作为研究开发人员, 比 较关心如何去开发这样的游戏。 然而, 由于商业竞争的原因, 目前 网络上、 期刊上很难找到相关的技术文档。 、 设计 (一) I 架构 种通用的棋牌类网络游戏服务端的架梅, 主要分为 5 种 软服务器: 登录服务器 ( 1 0 g i n s e r v e r , L S ) , 大厅服 务器( h a l l s e r v e r , H S ) , 中央服务器(m a i n s e r v e r , M S ) , 游戏服务器( g a m e s e r v e r , G S )和数据库服务器 (D B ) 。 所谓“ 软服务器, 是指逻辑意义上 的服务器, 并不等于现实中的一台具体的物理服务器。 一台物理 服务器上可以运行多个软服务器, 一个软服务器也可能是由多台 物理服务器所组成 H s 也可以根据负载设置多个, 负载均衡算法下面给出例 子说 明。 M s 可以说是整个服务端的核心, 它用于存储一些全局信 息, 如厅中玩家信息、 游戏服务器的信息等等。 M s 还负责一些 合法性检验和消息的转发等功能。 为保证系统的安全性, 整个过 程中玩家不会直接与 M s 进行连接和交互。 G s 在客户端看来, 就是提供游戏的一个房间。 玩家在客户 端点击进入某个房间, 就会与相应的 G s 建立连接, 玩家离开 G S 时便 与之 断开连接 D B 用于存储玩家的游戏信息, 包括账号信息和游戏中的 数据等等。 为保证系统安全, 玩家不会直接与 D B 进行连接和交 互 。 (二) 通信协议 我们没有采用现成的网络中间件, 如 D C 0 M 、 C 0 R B A 等。 一方面是为了节约开发成本, 另一方面这些网络中间件的诸 多功能也用不上。 根据需求设计了一套通信协议, 称为星形分布式通信协议 ( S t a r D i s t r i b u t e d C 0 1 1 3 . m u n i c a t i 0 n P r 0 t 0 c 0 l , s D c P ) 。 由图 1 可以看出, 整个 服务端 (不包括 D B) 的架构是一个星型结构, M s 是中心节点 ( C e n t e r N 0 d e , C N) , 而其他服务器是叶节( L e a f N 0 d e , L N) 。 这里没把 D B 考虑在内, 是因为一般 D B 本 身都会提供相应的通信功能。 实际上, s D C P 仍然是一种 c / s 模式的通信协议, c N 作为 S e r v e r , 而 L N 作为 一一黔 29 6 C l i e n t 。 为 C N 设计了一个 C e n t e r N e t b a s e 类, 为 L N 设计了一个 L e a f N e t b a s e 类。 (三) 多线程模型 以 M S 为例, M s 的 C e n t e r N e t b a s e 包含 两个缓冲队列,i n Q U e u e 和 0 U t Q u e U e 。 i n Q u e u e 用于存放接收到的消息, o u t Q U e U e 用 于存放待发送的消息。 c e n t e r N e t b a s e 中将启动 两个线程, 接收线程和发送线程。 接收线程不停地将网络上接 收到的消息存放到 i n Q u e u e 中, 而发送线程不停地将 o u t Q u e u e 中的消息发送给相应接收者。 M S 还将启动 唯一的一个主线程, 用于处理 i n Q u e U e 中的消息。 在处理 过程 中, 当需要往外发送消息时, 则将消息插入 0 u t Q U e u e 。 L s 、 G S 和 H s 的多线程模型和 M S 有点不一样。 这 3 种服务器除了含有类似于 C e n t e r N e t b a s e 的 L e a f N e t b a s e 之外, 还有一个 s e r v e r N e t b a s e 类用于处理和客户端的通信。 同 样, s e r v e r N e t b a s e 中也包含两个线程和两个 队列。 为了保证数据同步处理的简单, 在主线程中仍然只启动 唯一的一个线程, 只不过这时需要处理两个 i n Q U e u e 中的消息 扩展一下, 当N e t b a s e 类不止是两个时, 就 得到了一个可复用的多线程模型 处理线程的片段代码如下: w h i l e ( 1 ) ( // 对 i n Q u e u e c 0 U n t 个 i n Q u e u e 依 次处 理 f o r ( i n t i0 :i i + + ) ( 1 T1 s g C 0 u n t =i n Q u e u e [ i ] . // 将此 i n Q u e u e 中的当前消息处理完 f 0 r ( i n t j 一一 0 : j m s g C 0 u n t : j + + ) ( //获取消息 m s g n e t b a s e [ i ] 一 G e t M s g 0 : tt a t l d l e M e s s a g e (m s g ) : //处理消 息)) ) S l e e p ( 1 n t e r v a 1 ) ; ) 二 、 小结 本文提出的服务端的系统架构, 在一定程度上比较好地解决 了高效性、 安全性、 扩展性和通用性的问题。 当然, 本系统架构仍 然存在很多不完善的地方, 希望与读者进行交流, 能够提出更好 的解决方案来与大家分享, 让网络游戏开发者都得到进一步的提 高。 一i n Q u e u e C 0 u n t ; s i z e 0 ; 参考文献: ⋯ 苏羽 , 王媛媛. vis ualc++ 网络游戏建模与实现【 M]. 科海电 子出版社, 清华大学出北京: 北京, 2003, (O8). 【 2】 李文正, 郭巧 , 王利. Intemet 服务 器负载均衡 的研 究与实 现【 M]. 计算机工程, 2005, (O 6) .