休闲网络游戏平台框架设计与实现.doc

上传人:gs****r 文档编号:1822973 上传时间:2019-03-17 格式:DOC 页数:5 大小:105KB
下载 相关 举报
休闲网络游戏平台框架设计与实现.doc_第1页
第1页 / 共5页
休闲网络游戏平台框架设计与实现.doc_第2页
第2页 / 共5页
休闲网络游戏平台框架设计与实现.doc_第3页
第3页 / 共5页
休闲网络游戏平台框架设计与实现.doc_第4页
第4页 / 共5页
休闲网络游戏平台框架设计与实现.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1休闲网络游戏平台框架设计与实现【摘要】休闲网络游戏以其轻松的游戏方式、多样的游戏特征,正逐步成为最时尚的网络娱乐形式.作为分布式软件系统重要应用之一,其设计过程中面临多种技术挑战,比如负载均衡、服务器端大量 l/O 通信的管理、平台构架的可扩展性等.本文采用了 ACE 及框架、分层抽象、信号,槽机制等技术,完成了一个可扩展、易维护、可复用的休闲网络游戏平台框架. 【关键词】休闲游戏平台 ACE 框架 信号/槽机制 休闲网络游戏的通信传输过程随着因特网的普及,上网用户迅猛增加,选择网络游戏娱乐的人也越来越多.据 CNNIC 统计分析,2008 年中国国内上网用户:恪达到 3.O5 亿;网络游戏

2、家数量接近 4000 万,其中,休闲游戏玩家将达 3000 万. 网络游戏的开发涉及广泛的软硬件技术,包括通信技术、程序设计、数学、人工智能、图形图像处理、CPU 和 GPU 等. 一、休闲网络游戏通信技术 (一)休闲网络游戏的通信库的建立 通信库的建立主要是为了方便封装底层通信过程,使上层游戏逻辑能够透明地使用通信操作.通信库提供了收发数据包和从数据包叶 1 提取消息的功能.客户端和服务器端都将使用到这个通信库.在客户端,选择了使用简单方便的 WSAAsync.Select I/O 模型,首先要创建一个隐藏窗2口,以便在 socket 上有消息时能够接收.游戏协议在发送之前,上层游戏逻辑已经

3、把协议数据打包成字节流.而对游戏协议解包时,还需要知道协议的长度,所以,在实际发送之前需要把游戏协议的长度添加在这个字节流中.由于客户端和服务器端都要进行这个过程,把对字节流的再封包单独封装在一个类中,以增加复用.通信库为服务器端提供前摄器(ACE Proactor)模式的服务器处理器(ACESeniceHandler) ,完成异步的数据送收. 数据包结构 CMsgWindow 是一个隐藏的窗口,来处理 socket 端口上的消息;CWndServerLink 负责实际的连接到 服务器进行数据发送和接收.CWndSenerLink 中维护一个发送队列,在发送数据时,如发送队列中无数据就直接使用

4、当前 socket 的 send()函数发送,否则就表示发送循环还未结束,只需把数据加入到发送队列中即可.当收到数据时,由CTCPLink 解包分析,然后由 CWndSen,erLink 进行消息处理.CWnd Sen?erLink 主要给客户端使用.CSen,iceHandler 是供服务器端使用的组件,用于处理大量的客户端连接.其继承自 CTCPLink,又继承自 ACESeniceHandler,用于实现 CTC-PLink 定义的一些功能.CServiceHandler 内部使用一个线程安全的消息队列 sendmsgqueue来缓 存向客户端发送的数据.另外还使用了一个 ACE Mes

5、sage_Block类型的接收缓冲区 vmsgblock.ACEMessageBlock 类型可以存放任何类型任何长度的消息,当然包括自己定义的消息. 二、休闲网络游戏平台设计与实现 游戏服务器是处理游戏逻辑的服务器程序,是几个服务器中比较重3要也比较复杂的一个.客户端通过和游戏服务器的交互,实现游戏过程.休闲网络游戏平台可以同时支持多个游戏,每个游戏以 DLL 形式独立存在,由游戏服务器动态加载. (一)服务器端设计 游戏服务器仅启动一个游戏逻辑程序,通过配置文件来决定要加载哪个 DLL.平台框架设置特定的接口,所有独立的游戏都继承这些接口,这样,新的游戏就可以不断添加到平台中来,以插件的形

6、式发布.服务器程序结构的设计本着“对扩展开放,对 修改关闭”的软件工程思想,利用成熟的设计模式,设计了如图 2 所示的主要结构和接口. RoomSenrice 是服务器程序 RoomSen,er 上的启 动对象,它是负责运行各个休闲游戏的框架.RoomSenice 管理所有连接到 RoomSera,er上的用户,提供 聊天,进入游戏,邀请,通信等功能.在 RoomSenice 初始化时,载人处理具体游戏逻辑的 DLL,以利用反射机制启动具体游戏逻辑.ICommunieator 接口由房间服务器实现,提供给具体游戏逻辑程序使用,用于端发消息等给客户端.消息的发送是通过房间服务器完成实际发送的.

7、ILog 接 El 用于实现写日志文件.网络游戏平台 是一个大 的软件,为方便对平台的管理和维护,在服务器近行过程中把不断变化的运行状态和执 行操作写入 13 志文件.平台是运行游戏的框架,支持在其上开发符合规范的游戏,ILog 接 13 也为游戏 开发和调试带来了极大的方便所有的游戏都继承 IGameManager 和 IGame 接口.Room.Sen,ice 通过IGameManager 接 El 创建游戏桌对象,在 IGameManager 接 1:3 中提供有4CreateGame()函数,该函数返回一个 IGame 类对象,也就是具体游戏的一个游戏桌.IGame 接口提供游戏逻辑功

8、能,主要包括玩家逃跑,玩家掉线,掉线玩家重连,旁观者加入,旁观者离开,玩家使用道具,接收客户端消息等.房间服务器就是通过 IGame 接口把消息通知给具体游戏逻辑处理程序的. Player 类用于管理游戏玩家数据.不同的玩家 用他的 IP 和会话号(sessionlD)来标识.这个会话号是玩家在登陆时从游戏人口服务器中获得的. (二)客户端设计及其关键代码实现 具体游戏窗口在玩家进人房间入座后启动,这时就由游戏框架窗口加载具体的游戏动态连接库(Dynamic Link Library).登陆窗口的实现过程全面展示了在界面编程中信号/槽机制的应用.玩家运行游戏大厅时,首先出现登陆界面.登陆窗口中

9、的服务器列表保存在本地配置文件中,在下载游戏客户端时从服务器端获得.历史玩家帐号保存在本地注册表中,保存数量定为 10 个. 在客户端应用程序启动时,需要首先准备网络连接,并建立连接对象. 具体游戏窗口的启动过程如下: 三、总结 本文虽已实现了一个休闲网络游戏平台的基 本框架.但是,网络游戏作为一个新兴产业,很多相 关技术也在迅速发展中,这就需要不断地学习和发 现新的技术和方法.而且,今后还需要进一步完善 平台功能,5如对 MMORPG 游戏的集成、对移动平台 的支持及与 IP1v 的结合等. 参考文献: 1Douglas C.sch dt,Stephen D.Huston.C+网络编程卷 2:运 用 ACE 和框架的系统化复用.北京:电子工业出版社,2004, (01). 2李虎雄.网络游戏数据平台数据通讯的实现方案J.计算机 工程与设计,2005(08).

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 学科论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。