




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉科技大学硕士学位论文 第1 页 摘要 本论文介绍的网络游戏服务器端系统是在j 2 e e 框架的基础之上,以w 曲浏览器为平 台,实现了一种胖服务器、瘦客户端的模式。它可以支持多种操作系统和数据库系统,支 持分布式应用。该系统针对虚拟社区游戏这个领域,在网络游戏服务器端软件系统的功能 设计、实现技术以及直用上做了较为深入的研究和探讨。 国内外网络游戏的发展带动着游戏产业的成长,迫切需要开发出高性能服务器端系统 来满足网络游戏市场的需求。在一个虚拟社区游戏系统的开发过程中,服务器端系统采用 分布式架构,c o n n e c t o r 服务器系统和每个功能服务器系统相互独立,通过网络s o c k e t 通 信传递数据信息,减轻了单个服务器系统的压力,形成一个高实时性的、稳定的、可扩展 的分布式集成架构体系。客户端和服务器端系统的相互通信是网络游戏开发的基础,通过 制定消息通信协议,完成了网络游戏中底层信息数据包的传递。用户角色信息常驻在服务 器系统的内存中,采用线程安全队列对玩家个人信息资料和单个用户的长连接进行管理, 保证了当前在线角色信息的安全。通过对虚拟花园模块系统的设计,采用了分布式服务器 端系统架构体系,研究了功能服务器端系统的模块化管理,应用了消息信息数据包协议, 实现了一个可扩展的高性能网络游戏服务器端系统。 关键词:网络游戏,服务器系统,高性能,消息传递,分布式 第1 i 页武汉科技大学硕士学位论文 a b s t r a c t i l l 吐l i st l l e s i s ,m eo i l l i n eg 锄es e r v i n t r o l d u c e da 丘锄e w o r kb a s e d j 2 e e ,u s e dw 曲 b r o w s e r 硒ap l a t f o n nt 0a 咖e v ea 也i nc l i t 觚df a ts e r v e rm o d e l ,i tc a l ls u p p o nm u l t i p l e o p 喇t i n gs y s t e l l l sa n dd a t d b a s es y s t 锄s ,s u p p c i nd i s t r i b u t e da p p l i c a t i o 璐t h es y s t e mh a dd e l tt 0 t l l e 缸o f n l l a lc 0 i i l 】 i l u l l i t yg 锄e ;i th a dam o r ed e 印l yr 鼯e a r c ha n dd i s c u s s i o ni nm ed e s i g l l 姚o l o g y 觚da p p l i c a t i o n so fm eo l l l i mg 锄es e r v 盱s y s t e m t h ed e v e l o p m e n to fo n l i n eg a m 鹤a th o m e 锄da b r o a dl e dt 0 l e 乎。o w mo fm eg 锄e i n d u s 臼m e r ei s 锄u r g e n tn e e dt 0d e v e l o pah i g h p e r f 0 m a n c es e r v c rs y s t e mt 0m e e t 圮 d 锄觚do fo i l l i n eg 锄e sm a f k e t h lt l l ed e v e l o p m 饥to fav i r t u a lc o m m u l l i 妙g 锄es y s t 锄,t l l c s e r v e rs y s t e i i lu s e dd i s t r i b l n e da r c m t e c t u r e ,c o n n e c t o fs e c rs y s t e m sa n ds e r 、_ 盯s y s t 锄so f 髓c _ h 劬c t i o na r ca l li 1 1 d e p e n d e n t l yw i me a c _ ho m e r m r o u g ht l l en e t w o r ks o c k e tc 0 嘲m l m i c a t i e dt o c ho t l l e rw i md a t am 懿s a g ep a c k a g e ,i tc 孤r e d u c em e p r 骼s u r c0 n as i n 酉es e r v e rs y s t e m ,h a d f o r m a t t c dal l i g l lr e a l l 一e s t a b l e ,s c a l a b l e 觚n e w 0 出f o rd i 矧b u t e di n t e g r a t i o ns y s t c i l l t h e c o 彻m 埘c 矾o no fc l i e n t 锄ds e r v e rs y s t 锄i st l l eb 雒i so ft l l ed e v e l o p m to fo l l l i n eg a m 鼯, t l l r o u 曲m ed e v e l o p m e n to fi n f o m a t i o nc 0 m m u l l i c a t i o np r o t o c o l s ;i th a dc o m p l 鼬e dm eb o t t o m o fm e 位m s m i s s i o no fi n f o m a t i o np a c k e t si i lo n l i n eg a m 龋t i l ei i l f 0 曲a t i o 璐o fr o l e 哪e r sa 试 也es e r v e rs y s t 锄sm e m o t h es y s t 锄h a dl l s e dn l et 1 1 r e a d - s a f eq u 眺et 0s t o r en l ep l a y 粥 l e i i l s e l v e si l l f 0 i m a t i o n 锄dl o n gc o r u l e c tb 印e 饥c l i 朗t s 锄ds e r v e rs y s t e m ,i tc 锄m a m g et o e i l s u r et 1 1 a tt l l ei n f o n l l a t i o n so ft l l er o l ei n 廿l e 叫r r c l l to n l i n ea r es a f c i i l 心d e s i g no fa 讥加a l g a r d 明m o d u l e ,i th a du s e dd i s t r i b u t e ds e c rs y s t 锄鲫c h i t e c t i l r ct 0s t u d yt i 圮m o d u l a r m 觚a 静n e n to ft l l ef i l n c t i o ns e n ,盯s y s t e m i ta l s oh a da p p l i c a t o rt l l ep a c k e tp r o t o c o lo fm e m c s s a g ei n f 0 1 m a t i o nt 0a c h i e v eah i 曲一p 柏m 龇c e 锄ds c a l a b l eo i l l i n eg a m es e r v e rs y s t 锄 沁y w o r d s : o i l l i n cg 锄豁,s e r v e rs y s t 锄,h i g l l p 晌a n c e ,m 鼯s a g ec h 孤g e s ,d i s 仃i b u t e d 武汉科技大学 研究生学位论文创新性声明 本人郑重声明:所呈交的学位论文是本人在导师指导下,独立进行研 究所取得的成果。除了文中已经注明引用的内容或属合作研究共同完成的 工作外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 论文作者签名:玺塑翌!日期:丝:笪:z 研究生学位论文版权使用授权声明 本论文的研究成果归武汉科技大学所有,其研究内容不得以其它单位 的名义发表。本人完全了解武汉科技大学有关保留、使用学位论文的规定, 同意学校保留并向有关部门( 按照武汉科技大学关于研究生学位论文收录 工作的规定执行) 送交论文的复印件和电子版本,允许论文被查阅和借阅, 同意学校将本论文的全部或部分内容编入学校认可的国家相关数据库进行 检索和对外服务。 论文作者签名:鱼鳖至生 指导教师签名:生立盎 日 期: 兰! 墨。z :2 武汉科技大学硕士学位论文第l 页 1 1 网络游戏的发展 第一章绪论 近年来,计算机越来越普及,计算机应用也越来越广泛,在促进社会发展的同时,也 改变着人们的生活娱乐方式。随着人们进入2 l 世纪,计算机软件不断的开拓新的领域, 一种被称为朝阳产业的网络游戏在计算机技术的发展下逐渐进入人们的视野,使得人们的 娱乐生活越来越丰富多彩。 网络游戏是指通过信息网络传播和实现的互动娱乐形式,是一种网络与文化相结合的 产业【l l 。随着计算机技术的快速发展和网络应用的扩大,网络游戏为人们提供一个跨国界 的虚拟世界,世界各地的人们都可以通过i n t 锄e t 玩同一款游戏,实现互动娱乐,网络游 戏已经成为游戏发展的新趋势。网络游戏产业是一个新兴的朝阳产业,经历了2 0 世纪末 的初期形成期阶段及近几年的快速发展,现在中国的网络游戏产业处在成长期,并快速走 向成熟期的阶段。在中国整个网络经济的发展过程中从无到有,发展到目前成为中国网络 经济的重要组成部分。 网络游戏与一般的应用系统不同,它具有如下特征: ( 1 ) 互动性:网络游戏最大特点就是互动性,这使得它面对的客户是最大的用户群, 几乎各个年龄、各个阶层的人员都可能成为网络游戏的玩家。互动性给玩家提供 了很高的体验回报,可以和世界各地的玩家娱乐、比技巧、进行各种比赛,并且 提供了持久化的功能,人们付出的劳动成果和智慧结晶都能够积累和转让。 ( 2 ) 增值性:这是网络游戏不同于单机游戏和商业应用的主要区别之一。网络游戏世 界中有游戏币和游戏积分为各种增值服务提供了平台,可以进行积分排行榜,积 分兑换,游戏币虚拟流通,提供各种虚拟游戏道具等各种增值服务。 ( 3 ) 安全性:在网络游戏中,安全是一个非常重要的问题。在单机游戏中,玩家修改 游戏资料影响到的是玩家本人,而在网络游戏中影响到的却是所有在网络游戏世 界中的玩家,造成一种不平衡的竞争。由于它的互动性和增值性,必须保证通信 安全,用户信息安全,用户增值信息安全等,网络游戏服务器必须提供端对端的 安全解决方案,如加密机制、签名机制、安全管理、存取控制等。 ( 4 ) 运营性:网络游戏不止是简单的游戏互动,也不止是技术开发,它是一个运营系 统,这一点和一般的应用软件有很大的不同,对于公司来说,需要管理游戏系统, 需要很多部门的协调、宣传策划、市场、技术、运营管理等。网络游戏运营的不 是软件,而是一种服务。 网络游戏伴随着中国市场的发展,技术上的更新以及网络游戏种类和数量的加大都不 能满足市场的需求。2 0 0 7 年中国网络游戏实际销售收入为1 0 5 7 亿元人民币,比2 0 0 6 年 增长6 1 5 。其中,中国自主研发的民族网络游戏市场实际销售收入达6 8 8 亿元,占网络 第2 页武汉科技大学硕士学位论文 游戏市场实际销售收入的6 5 1 。在新投入到中国网络游戏市场公测的7 6 款网络游戏中, 中国自主研发的民族网络游戏达5 3 款,占6 9 7 ,自主研发的网络游戏已经成为国内网络 游戏市场的支柱【2 1 。 每一个产业,在其发展成熟的道路中,都必须经历由不规范走向规范的过程,而这一 过程中必将伴随着这样或那样的阻碍因素,中国的网络游戏产业也不例外。因此需要加大 政府的扶持力度、加快人才培养步伐、重点研发精品网络游戏等。中国游戏市场潜力巨大, 在未来几年内,中国将从资金投入、创造产业环境、保护知识产权以及加强对企业引导等 方面对国内的游戏企业加以扶持。亚洲将是未来全球网络游戏的重要市场,而中国和日本 将成为这个地区最大的两个在线游戏市场。 由于网络游戏的影响日益加大,及其表现出来的巨大潜力,网络游戏产业已引起了国 家的关注。2 0 0 3 年6 月,温家宝总理提出把网上娱乐作为网络金融、电子政务、网上教育 之后的第四个应用领域,这是国家最高层对这个产业的认可,也表明了国家将对这个行业 进行扶剖3 1 。网络游戏的日益发展壮大不但创造了巨大的经济价值,也使得网络游戏的开 发成为一类典型的软件开发问题。如何将最为先进的软件开发技术运用到网络游戏的开发 中,是一个非常值得研究的问题。鉴于国内技术上的滞后,如果能有通用的网络游戏引擎、 甚至是网络游戏开发和运营的平台无疑大大降低了网络游戏开发的技术门槛,对我国网络 游戏产业的腾飞有不可估量的促进作用。 1 2 论文研究的内容和意义 网络游戏产业的发展前景十分广阔,但技术门槛也很高。如果能开发出性能优异而且 通用的游戏服务器或平台,不但对我国的网络游戏产业有提速作用,而且也有一定的商业 前景。一个好的服务器架构可以为大型网络游戏的开发和部署提供底层关键技术,通过为 开发者提供底层的基础部件( 如网络通信,服务器端技术等) ,和一个搭建网络游戏的通用 框架,为网络游戏的开发和运营提供吞吐量大,容错性能好,可靠性高,扩展性好的技术 支撑平台,使游戏开发者避免底层关键技术的重复开发,把精力集中于具体游戏逻辑的设 计和实现上,提高游戏的可玩性和稳定性,节约开发中的开销。 随着网络游戏的发展和市场的需求,一些大型的传统网络游戏占领着一些市场,但是 这些游戏需要花费大量的时间和金钱,网络游戏在给人们带来娱乐的同时也有一些负面的 效应,迫使一些青少年迷失网络,甚至难以自拔。计算机技术的发展和人们认识的改变, 现在一些小型休闲型的网络游戏慢慢的得到玩家的接受,并且这样的游戏也逐渐的占领一 部分市场。这类游戏通过浏览器就可以直接登陆,不需要高性能的机器的配置,不需要百 分百的时间和精力投入,包括一些虚拟社区游戏和一些棋牌休闲游戏,玩家可以自由分配 自己的时间,在工作、学习和娱乐中可以多线程充分利用电脑的作用。 伴随着市场的成长,越来越多的厂商和开发人员加入到网络游戏开发的队伍中。目前 我国网络游戏市场主要以代理韩国游戏为主,而由国内自主开发或与国外合作开发的游戏 在稳步增加中。但是,我国在游戏开发方面起步较晚,从事游戏开发的人员较少,游戏开 武汉科技大学硕士学位论文第3 页 发的基础十分薄弱,而且网络游戏相比传统游戏要复杂得多,对技术的要求也高得多。所 以对于国内的开发商来说,网络游戏的开发是一个巨大的挑战,尤其在技术上。相比与我 们同时起步的韩国,由于其良好的网络条件,再加上官方的大力支持,比如提供通用的游 戏引擎,诞生了数以千计的网络游戏公司和工作室,其在网络游戏开发的技术和经验上的 积累已走在了我国前面。欧美方面,凭借多年来游戏开发的深厚底蕴,及开发人员的良好 素质,其优势更是我们在短时间内难以超越的【引。 本论文研究的范围是:首先通过一个网络游戏服务器端的结构设计,指出高性能服务 器端系统的架构模型和实现类,在系统架构设计的技术上,对整个服务器端系统的流程以 及相关线程池技术进行了分析。探讨了网络游戏中客户端和服务器端系统的消息通信机制 以及其间通信协议的制定,然后介绍了网络游戏中比较重要的用户角色的管理,最后运用 前面介绍完成的一个服务器端系统的底层通信基础,对该虚拟社区游戏中花园功能模块的 服务器系统进行了详细的阐述和理解。 1 3 论文的组织结构 本人开发过一个网络游戏的服务器端系统,参与了这个系统项目的设计与实现,查阅 分析了大量文献资料,研究了网络游戏服务器的开发运行模式,分析了网络游戏客户端和 服务器之间的通信协议,根据w 曲浏览器模式的网络游戏的特点,完成了一个可扩展的通 信服务器端系统的实现。本论文的组织形式如下: 第一章,介绍了国内外网络游戏产业的当前发展状况,并分析了网络游戏的特点。在 此基础上简要讨论了网络游戏的市场价值和高性能服务器的必要性。 第二章,在一个网络游戏开发项目的基础上,详细介绍了该网络游戏服务器端系统的 结构设计和实现,以及相关线程池技术。 第三章,客户端和服务器端系统之间的通信是该系统开发的核心,是网络游戏的功能 能够实现的基础。本章详细阐述了客户端和服务器端系统之间通信的消息协议的制定,以 及信息交换的实现。 第四章,研究了用户角色在服务器端系统中是如何进行管理和实现的,然后介绍了网 络游戏中数据信息的安全。 第五章,通过该虚拟社区游戏中一个花园功能模块,运用前面介绍并实现的服务器端 系统的底层通信技术,分析了具体逻辑服务器端系统的的设计与实现。 第六章,结束语,对全文进行了总结,并提出了下一步的工作。 第4 页武汉科技大学硕士学位论文 2 1 系统的设计目标 第二章服务器端系统结构的设计 考虑到网络游戏服务器往往是要求很高的安全性,可靠性,稳定性,可伸缩性和可扩 展性,这就要求我们所选用的体系架构应该是跨平台的,而且必须是已经经过大量的企业 应用证明其成熟性。综合比较之下,本文最终选用了j 2 e e 作为网络游戏服务器端系统的 体系架构,并应用j 2 e e 中的一些关键技术解决了系统的性能问题。 游戏服务器结构的设计有如下的目标: ( 1 ) 简单性:核心类应尽量流畅。 ( 2 ) 通用性和可扩展性:游戏要支持不同的游戏风格,方便上层开发。 ( 3 ) 伸缩性:服务器要处理大最并发的连接。 ( 4 ) 性能:设计要保证最高的消息流通容量,在低速事件操作时( 如需要数据库或文件 访问时) 不能阻止其他事件的流程。 服务器程序结构的设计本着“对扩展开放,对修改关闭 的软件工程思想,利用成熟 的设计模式,设计出服务器的主要结构和接口。对网络游戏来讲,服务器的负载能力是一 个重要的指标。如果服务器端系统负载过大,将导致玩家不能流畅的玩游戏,也就是我们 常说的服务器“卡 。 2 2 系统的架构设计 2 2 1 分布式架构模型 网络游戏服务器端系统所提供的服务都是非常独立的,因此,我们可以通过功能服务 的不同有效的分离出不同的逻辑功能服务器,形成一个高实时性的、稳定的、可伸缩的、 可扩展的分布式架构体系。每一个相对独立的功能服务独立在一个物理服务器进程上运 行,客户端发送的信息通过c o i l i l e c t o r 服务器发送到各个功能服务器上处理,功能服务器 在完成之后,将结果返回到c o m e c t o r 服务器中,有c o 衄e c t o r 服务器发送给客户端。一个 网络游戏服务器系统的设计如下图所示: 武汉科技大学硕士学位论文第5 页 c o n n e c t o r 服务器 工 i 功能服务器1 功能服务器2功能服务器3 图2 1 游戏系统架构设计图 在如上图所示中,客户端连接到c o i l i i e c t i 叩服务器,c o i l l l e c “) r 服务器和功能服务器之 间是一个相互的连接,它们两个之间可以互相读写,c o r u l e c t o r 服务器为每一个功能服务器 分配不同的端口。 c o 雎e c t o r 服务器:c o i l i l e c t o r 启动时,自动建立与所有功能服务器的连接,作为架构 管理的接口与整个命令执行通道。用户登陆时,c l i 跚t 尝试连接c o 彻e c t o r 服务器,接受连 接并验证帐户的合法性,如合法则保持长连接。c o 尬e t o r 服务器对网络游戏服务器端系统 提供的一个转发机制,它主要是验证来自客户端发送的数据包的合法性,对普通命令执行 直接转发,不做处理。c o 眦鳅o r 服务器把数据信息包分发给不同的功能服务器进行处理, 虽然请求转发会产生一定的延迟,但是这种分布式的架构可以保证在巨大的并发玩家数量 的情况下,游戏服务器端系统依然保持良好的响应实时性。 功能服务器:在这里把网络游戏中的各个功能模块进行分开存放在不同的物理服务器 上,接受c o r h l e c t o r 服务器启动后与游戏功能服务器的连接请求,接受具体场景的逻辑操 作。功能服务器处理由c o 彻e c t o r 服务器直接转发过来的功能性命令,并作出相应的处理, 同时保存该角色当前的数据在服务器内存中,保存该角色的系统数据到数据库,清理临时 数据。功能服务器它被分离出来主要用来处理数据信息包,和数据库服务器紧密相连,实 时接收信息后可以对用户角色相关信息的进行更新。 这个服务器端系统的架构能够适应更多的并发玩家,在服务器端系统由c o 衄e c t o r 服 务器和多个功能服务器共同完成,构成整个服务器架构,c o r u l e c 屯0 r 服务器处理连接以及当 前网络游戏的些实时信息放入内存中,而各功能服务器则专门处理数据信息包,这样就 大大减轻服务器系统的压力。 2 2 2c o n n e c t o r 服务器的设计 服务器端系统是网络游戏运行的基础,玩家登陆游戏,使客户端和服务器之间建立一 第6 页武汉科技大学硕士学位论文 个长连接,并且把这个连接作为用户的基本信息存储在用户信息链表中,链表中的信息是 由每一个玩家的一些基本信息和s o c k e t 连接类组成。 在下图中展示了服务器端软件系统中所需要的主要类用u m l 表示出来: s e e r m 柏a 嚣r - b l 诎i n g ( i 培州) l 雎嘴e i 嚣e l 吐 n u m 了k 蚴如:妇 - 锹婀触a h d l :诚 + 纳:拣c 州) :s c n 蜘彻g 玎 怕t 幽l 迳h l 返l 翰c 廷:s 竹v 前 毒挂僦彗凹 十h a f k l l “ 0 n l e c “咧) :s e n 阳r m 棚埔移r 吣瞻e s c 州h ,:船r v 盯m a 嘴秽 1 攘 j ” i l t l娃 l i 协伽朋翻登1 7 傀 奈薹j t 衢k 一| l i 盯o n 粼豳州) :m 刀陷媛 啼荫如m 女( ) ( ) :m :n 姥 十删矧k a k 錾氍 :m j 狲k 图2 2 服务器端系统开发中u m l 类图 在服务器端系统启动前,首先初始化一些线程安全的队列,全部都设置为静态变量, 一直在服务器的内存中运行,直到服务器端系统关闭。这些队列包括各种包的存储信息队 列,还有当前在线用户存放队列等。例如: p u b l i cs t a t i cb l o c k i n g q u e u e b q ; b q = n e w 缸a y b l o c k i n g q u e u e 4 辨t 斡it e 酗f f e r t ) t 1 :l n s t 辨健 4 辨t l r g t j0 :t 牲t 4 群t a l 孵i ) t :畚撰谴 + s 簪“冀i 穗黯仕皆l s k e “: 弛n 髓e ic h 醢他f 孵l o 4 it c 鬏心饿口坩tl 融t o f & 铸憾娥婚曲t 墙( v m m 中f 矗y f p fi f n f b r jf ) 4 s e ti n t 拄晦e tl n s t a t c 絮i n l 耩疆耐t ) 4 鞭ti n l h 疆# e0 静 :l 矗基t 搿 c p t t 罐i 搬nl 魂t 媾溉轴t 1 舯s s 娃艚) c i l l s t a 妣e 图2 3c o i l i l e c t o r 服务器和功能服务器连接实例图 在这个类图中,我们可以看到s h l s t a n c e 类和c i n s t a l l c e 类都继承h l s t a n c e 接口,并且实 现其中的方法,这个用于c o e c t o r 服务器把接收的数据库信息包直接传递给功能服务器, 包括s o c k e t 连接,功能服务器接收到的是一个完整的s o c k c t 连接,其中还有客户端需要请 求的命令信息包,功能服务器接收到后处理,完全像是c l i e n t 直接连接到功能服务器一样, 实现连接的转移。 下面是功能服务器连接的一个实例的操作的代码。 p u b l i cd a s ss i r i s t a l l c ei m p l 锄饥t sh l s t 趾c e 研v a t el i i l l ( e d l i s t 、槲t e b u f | 陆= n u l l ;截包处理完成保存完整的包信息 研v a t el i i l l 【e d l i s t l i s t = n i l l l ;向该实例发送的包信息 研v a t es o c k e t c h 撇e lc h 勰n d = n u l l ;该实例的通道 研v a t ed e c o m p o s ed e c o m p o s e = n u l l ; 该实例的截包处理函数调用 研v a t ec i i l s t a i l c ec i i l s t a n c e = n u l l ;从c l i e n t 到s e r v e r 过程中的另一个实例 p r i v a t ef i n a li n tn a g = 1 ;实例类型的标识位 第8 页武汉科技大学硕士学位论文 p u b l i cs i i l s t a l l c e ( ) 构造实例对象,初始化一些参数 l i s t = n e wl i l l l ( e d l i s t ( ) ; w n t e b u 仔e r = n e wl i n k e d l i s t ( ) ; d e c o m p o s e = n e wd e c o m p o s e ( 1 i s t ) ; ) p u b l i cv o i dd e c o m p o s e ( b ) 吨e 】i n f o r ) 截包处理 d e c 0 m p o s e a d d m e s s a g e ( i i l f o r ) ; ) p u b l i cv 0 i da d d w 五t e i n f 0 “b ”e b u 旋rm e s s a g e ) 向该实例添加写入信息 i f ( t 0 0 1 j u d g e n u l l ( m e s s a g e ) ) r e 臼姗; w r i t e b u 胝a d d ( m e s s a g e ) ; ) 实现w n t e t o c h 锄e l 方法,向该实例写入信息 p u b l i cv o i dw r i t e l b c h a l l i l e l ( b ”e b u 妇衙m e s s a g e ) t l u d w si o e x c 印t i o n i f ( t 0 0 1 j u d g e n u l l ( m e s s a g c ) ) r c 咖; ) c h a l l n e l w d t e ( m e s s a g e ) ; t 0 0 1 d c b u 矿m t ( ”w 订t ec h 锄旧o f 廿l es i n s t 觚c e ”) ; t 0 0 1 d e b u g p r i n t ( m e s s a g e ) ; ) p u b l i cv o i ds e m 能t e o p s ( ) 改变注册事件的类型 s e l e c t o rs d e c t o r = m a n a g e r g 雕s e l e c t o “) ; s e l e c t i o n k e ys k = c h 猢d k e y f o “s e l e 曲呻; i n to p s = s k m e r e s t o p s ( ) ; s k i n t e r e s t o p s ( 0 p sls e l e c t i o i l l ( e y o p - w r m ! ) ; s e l e c t o r w a l ( 吼l p ( ) ; ) ) 类c i n s t a n c e 也是继承i n s t a l l c c ,它是一个c o l l l l e c t o r 实例,大体程序也如上面所示。 由此可见,c o l l i l e c t o r 服务器在初始化一些队列信息时,管理当前用户的连接信息和用 户角色信息,然后所需要处理的命令信息包全部丢给功能服务器处理。功能服务器处理频 武汉科技大学硕士学位论文第9 页 繁的并发命令,就减轻了对c o 衄e c t o r 服务器的压力,提高服务器的性能,也体现了分布 式服务器处理的优越性。 2 2 3 逻辑服务器的设计 c o n n e c t o r 服务器是整个服务器端系统开发的核心,但是功能服务器的逻辑处理功能 也是系统必不可少的部分。整个虚拟社区游戏中,需要处理的逻辑功能很多,每一个功能 拿出来都可以作为一个功能服务器。下图是在该社区游戏中服务器实现的一些功能,玩家 可以运行的效果,其用例图如下图所示: 卜 :玩家1 辨 绉囊f 铂 s 9 璐滚2 人 ) t 一纱 疆鹾包:潸 多 图2 4 服务器端系统逻辑用例图 在逻辑服务器中,服务器同样需要监听一个服务器端口,c o 眦咖r 服务器发过来的信 息同样需要经过处理“连包”或“断包”的问题,具体如何解决在第三章将详细介绍,在 这里主要说一下逻辑服务器的初始化,以及逻辑功能模块化的处理。 c o 衄e c t o r 服务器把需要处理的逻辑发送给各个功能服务器,各个功能服务器的作用就 是接收对应的包,放到线程安全的队列里,然后对包信息进行分析处理,当然根据各个功 能消息协议的要求。大体上可以看出功能服务器所做的工作都是一样的,由此可见,只要 能设计出一个模块化的抽象的功能服务器,只要改变不同的接口,然后最后处理不同的逻 辑功能,将可以实现公用。 首先是模块化协议,如类m o d u l e p r o t o c o l : p u b l i cc l a l s sm o d u l e p r o t o c o l 研v a t ei n tp o i n ti 船= 8 ;指令位的位置 埘v a t cb y t ep a c a g e h e a d = o 】( 0 l ;包头 面v a t eb y t ep a c a g e t 如e s c e = o x 0 3 包类型 p u b l i cb o o l e a ni s g m d e n ( b y t e 【】t e r i l p ) 判断该信息包是否属于花园模块 1 o d oa u t 0 一g e i l e m t c dm e m o ds t i l b 第1 0 页武汉科技大学硕士学位论文 i f ( t e l i l p 【0 】= = p a c a g e h e a d & t e i r l p 1 】一p a c a g e t 如e s c e i l e & & t e n l p 【9 】一o x 0 6 ) r e t u m 咖e ; e l s e r e 嘶1f a l s e ; ) p u b l i cb 0 0 l e a ni s t r a d e ( b y t e i n f o m a t i o n ) 判断该信息包是否属于交易模块 省略一些判断功能,如上面方法类似 r e t l l mf a l s e ; ) ) 然后是逻辑处理的公用,接口m j r e s o l v e 如下所示: p u b l i ci i l t e r f a c em j r e s o l v e p u b l i cm o d u l e p r o t 0 c 0 1g e t p r o t o c o l o ; p u b l i cv o i ds e t p r o t o c 0 1 ( m o d u l e p r o t o c o lp r o t o c 0 1 ) ; p u b l i cv o i dr e s 0 1 v e i n f o m a t i o n ( h l f o m a t i o n f o m a ti n f o r ) 啪w se x c c p t i o n ; ) 类r e s o l v e 实现接口m j r e s 0 l v e ,初始化每个功能服务器具体处理类,实现 r e s o l v e i n f o m a t i o n 方法,如果信息包中的信息属于那个模块,让他单独处理,返回r 曲l n l 。 其实现接口m j r e s o l v e 如下图: 燮l g e t p r o t d e o ( ) :泰指定 + s ”t p 加t 越( 臻硝i e 轮峙细o lp 脚l o c o l f j r c 鞫j jv e 孙f l j r 豫a fi u n ( i l 0 r 蝴tj t 巾f 玎r 黼tf n f 确r f ) 图2 5 模块化实现类m j r e s 0 1 v e 接口图 最后是各个功能服务器各自处理自己的逻辑功能,解析消息命令包,如类 g 莉e n r e s o l v e ,代码如下所示: p u b l i cv o i dd e a l g 莉e 1 1 p a c k s ( i i l f o n i l a t i o l l f o 肌a ti n f o ) t l l r o w se x c e p t i o n “s i n p a c k = i n f 0 g e t i n f o m a t i o n ( ) ; 廿l i s r o l e = i n f o g e t r 0 1 e ( ) ; i f ( i i l p a c k n u l l ) l o g g 既i n f o ( ”花园空包异常”) ; n 孔哪: i 一一一一 碱 武汉科技大学硕士学位论文第1 1 页 ) p a c k a g e s 砸n t p a c k s ( i n p a c k ) ; 进入花园 i f ( ( i n p a c k i n s 叫p o s 】一o x 0 0 ) & & ( i i l p a c k 1 e n g c l l 一( i i l s 郇p o s + 2 ) ) ) r o l e i i l t o g a r d e l l ( ) ; ) ) 其下面根据协议的规定,还可以处理其他的一些信息,在这里就不介绍了。 2 3 线程池设计 2 3 1 线程池机制 为了处理海量并发在线玩家所产生的各种请求,网络游戏服务器端系统必须采用多线 程机制对玩家请求进行并发的处理。通过多线程技术的运用,系统可以充分利用c p u 资源 对玩家请求进行实时处理,从而取得良好的系统运行性能。 在操作系统中,线程的创建及销毁开销非常大。对于网络游戏中玩家所产生的各种请 求,比如玩家进入游戏、退出游戏等,这些请求处理通常都是非常短暂的,从而处理这些 请求的工作线程维持的时间也非常短。大量的瞬间请求,将使线程过度频繁的创建和销毁, 严重影响系统性能,在这种情况下,线程的创建及销毁的时间甚至比处理玩家请求的时间 更多。因此,创建一个可自行管理的线程池机制非常有必要。 线程池中通常还使用到阻塞队列技术。阻塞队列优点在于实现了异步处理的机制,特 别在网络游戏服务器端系统的层次架构体系上,起到了良好的作用。例如,在调度层上, 有一个工作线程专门负责消息的分发工作。当工作线程向应用层发送请求消息的时候,在 不使用队列的情况下,调度层的工作线程还必须负责应用层对消息的处理,这种机制会严 重拖慢调度层上的消息的分发工作,从而降低了整个平台的工作效率。在使用队列技术的 情况下,系统可以完全分离调度层以及应用层服务之间的处理,使用了队列机制使调度层 工作线程只需要专注于自身的调度服务,调度层工作线程在将消息发送到应用层服务的队 列之后,他对当前消息的处理职责就马上完成,可以转到下一条消息的调度,这种处理方 式极大地提高了调度层服务的工作效率。 2 3 1 线程池的实现 在多线程应用中,为了便于对多个线程进行维护,将多个线程封为线程池类。在网络 游戏设计中,由于大量的用户参与游戏,所以在服务器端必须使用多个线程进行网络接收、 发送、处理数据包等操作。在服务器系统中,为了更好的利用电脑的性能,采用多线程处 理机制,但是并非运行的线程越多越好,过多的线程将导致系统运行线程本身所需要消耗 大量的内存,另外玩家在不同的时段多少也不一样,因此,需要一个灵活的线程池来管理 第1 2 页武汉科技大学硕士学位论文 当前运行的各个线程,在不低于最小值的情况下,又能保证多用户多操作的处理,适当的 增加线程池中线程的数量,提高服务器的性能。 线程池的建立和调用都很简单,在j 2 e e 中有相关的a p i 函数,可以直接调用。例如: 初始化一个长度为1 0 0 的线程池,则只需要实现如下代码: p r i v a t ef i n a le x e c l n o r s e r v i c et a s k p o o l ; t 嬲k p 0 0 l = e x e c u t o r s n e w f i x e d r l l r e a d p 0 0 1 ( 10 0 ) ; 线程池初始化收就可以直接用线程池来执行任务。 p u b l i cs y n c h r o n i z e dv o i dp e r f 0 n n t 缸k ( 协kt a s k ) t a u s k p 0 0 1 e x e c u t e ( n c wp o o l e d l n b r e a d ( t a s k ) ) ; ) 如上代码中它执行的是一个可运行的任务,这个可运行的任务必须是一个可执行的线 程,服务器中为了完成游戏任务,可运行伪代码如下: c l a s sp o o l e d t i :鹏a de x t e i l d st h r e a d t a 啜k t a s k = n l l l l ; p u b l i cp 0 0 1 e d l k e a d ( 协kt 瑚 t l l i s t a s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届广西贺州市平桂管理区平桂高级中学高一化学第一学期期末经典试题含解析
- 2026届贵州省凯里一中高三化学第一学期期末综合测试模拟试题含解析
- 2026届安徽省部分高中化学高一第一学期期中联考模拟试题含解析
- 重庆市主城区七校联考2026届化学高一上期末达标检测试题含解析
- 2025年注册建筑师考试押题卷:建筑设计与施工规范
- 2025年春季小学数学毕业升学考试重点题型冲刺押题试卷
- 2025年注册测绘工程师考试冲刺押题试卷 测绘技术应用专项强化
- 2025年公务员考试申论押题试卷 案例分析专项训练
- 2025年初级经济师职业资格考试 经济基础知识高分冲刺试卷
- 2026届湖北省武汉市新洲一中阳逻校区化学高一第一学期期中质量跟踪监视试题含解析
- 市场营销(第2版)课件全套 王永贵 第1-17章-市场与市场营销概述及发展-顾客营销学
- 2023年6月英语六级考试真题及答案解析(全3套)
- 高中数学 人教A版 必修一 《集合与常用逻辑用语》 1.1集合的概念
- 深圳某电厂锅炉维修改造施工组织设计-new(常用版)
- GB/T 4950-2021锌合金牺牲阳极
- 中药调剂技术-课件
- 证券从业考试基础模拟卷二(题目+解析)
- 水轮发电机讲义课件
- 信息系统运维服务方案
- 化工试生产总结报告
- 导数与原函数的对称性 微专题课件-2023届高三数学一轮复习
评论
0/150
提交评论