基于cs结构网络游戏的通信协议的研究与实现

上传人:F****n 文档编号:90860852 上传时间:2019-06-19 格式:DOCX 页数:9 大小:24.41KB
返回 下载 相关 举报
基于cs结构网络游戏的通信协议的研究与实现_第1页
第1页 / 共9页
基于cs结构网络游戏的通信协议的研究与实现_第2页
第2页 / 共9页
基于cs结构网络游戏的通信协议的研究与实现_第3页
第3页 / 共9页
基于cs结构网络游戏的通信协议的研究与实现_第4页
第4页 / 共9页
基于cs结构网络游戏的通信协议的研究与实现_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《基于cs结构网络游戏的通信协议的研究与实现》由会员分享,可在线阅读,更多相关《基于cs结构网络游戏的通信协议的研究与实现(9页珍藏版)》请在金锄头文库上搜索。

1、基于cs结构网络游戏的通信协议的研究与实现篇一:基于CS结构的即时通信系统的设计与实现毕业设计沈阳理工大学毕业设计(论文)成绩评定学生姓名:专业: 通信工程学号:题目: 基于C/S结构的即时通信系统的设计与实现毕业设计(论文)答辩委员会(小组)评语:答辩评分:答辩委员会主任(组长)(签字):年月日毕业设计(论文)成绩毕业设计(论文)总评成绩(等级):答辩委员会主任(签字):年月日毕业设计(论文)评语毕业设计(论文)任务书学生毕业设计档案*注:阶段成绩分A、B、C三级: A为全面完成任务、B为完成任务、C为完成摘 要随着互联网的发展,越来越多的人使用即时通讯工具。即时通讯是指一种能够让使用者即时

2、发送和接收互联网消息等的实时通讯服务。即时通讯的最大特点在于它的即时性,不用等候,只要两个人都同时在线,就能像多媒体电话一样,传送文字、档案、声音、影像给对方。只要有网络,无论对方在天涯海角,或是双方隔得多远都没有距离。因此即时通信系统在现代社会中有着非常重要的地位。本论文详细的论述了即时通讯系统的客户端和服务器端的主要组成模块,论述各模块实现方式和详细的设计,每个模块的主要功能进行了阐述,并画出模块流程图。系统按照软件工程思想釆用面向对象和模块化设计方法设计,其中采用了网络通信技术、数据库技术、多线程技术等计算机技术,实现了文本通信、用户分组、用户管理等功能,具有通信即时性等特点。系统基于C

3、/S体系结构,使用Java语言进行开发,实现多用户的即时通信。设计并实现了用户注册,登录,用户列表,多用户即时聊天和聊天记录管理等功能。基于Swing开发图形用户界面;通过套接字编程完成通信功能。最终实现了一款面向企业用户的在局域网使用的即时通讯系统。本系统基本实现了上述的研究,能够满足基本的通信需求。同时由于本系统采用模块化程序设计,具有良好可扩充性。关键词:Swing编程;C/S;多线程编程;即时通信系统篇二:080275090_赵云华_基于J2SE的CS架构的多人网络游戏对战平台的设计与实现学号:080275090河南大学20XX届本科毕业论文基于J2SE的C/S架构的多人网络游戏对战平

4、台的设计与实现The Design and Implementation of the multiplayer network game BattlePlatform Based on J2SE C / S structure论文作者姓名: 作 者 学 号: 所 在 学 院: 所 学 专 业: 导师姓名职称: 论文完成时间:20XX年5月10日河南大学20XX届毕业设计(论文、创作)开题报告(学生本人填写)开题报告开题报告河南大学20XX届毕业论文(设计、创作)任务(导师根据学生的开题报告填写)指导教师签名: 20XX年3月 25 日任务书河南大学20XX届毕业设计(论文、创作)中期检查表(导

5、师只填写评语,其他由学生填写)中期检查表篇三:在线网络游戏信息通信实现近期完成一个稍稍涉及网络同步的游戏,结合网络上查到的一点资料和自己的心得做个小结。游戏描述:略形象的归纳为地图中5个玩家在5个不同位置消息,地图中有20个道具,玩家选择出发时间,出发角度和出发速度去奔向某道具。现在玩家1向server发消息,准备从当前currposition出发,对应的currtime,currangle,currspeed都确定,假定前方有prop1,现在服务器收到消息currservertime,然后广播玩家1的出发,那么玩家2,玩家3,玩家4,玩家5可能又由于网络原因接收到消息的时间是time2,ti

6、me3,time4,time5。如果玩家1发出消息时开始绘图,玩家2,3,4,5接收到消息时绘图,这里就会产生一个不同步问题,玩家1和玩家2,3,4,5对应有一个time2,3,4,5-currtime的时间误差。而且中间还可能有5个玩家的本地时间并不相同的情况。首先可以通过服务器验证群发方式解决:玩家1发出消息的时候并不进行绘图,而是挂起等待服务器接收玩家1消息,广播给5位玩家之后大家一起绘图。考虑5个玩家本地时间不同的情况和网络延时时间,我们可以在玩家开始游戏的前进行一个玩家本地时间和服务器时间的误差比较,在服务器和5个客户端记录每个玩家和服务器的时间误差motifytime1,2,3,4

7、,5。在服务器收到出发消息时,根据motifytime1,2,3,4,5确定玩家1,2,3,4,5每个人收到玩家1出发消息的绘图时间。这个方案在网络延迟很大发出消息的玩家会感觉极其不顺。很多并不是很需要及时通信的游戏会采用这种方式。如果玩家1在发出消息时就绘图,也可以通过motifytime方式进行同步,在服务器收到玩家1消息时,通过motifytime1计算出服务器中的玩家1出发时间,进行广播后玩家2,3,4,5根据自己的motifytime2,3,4,5判断接收到消息的时间和服务器发来的时间是否满足motifytime2,3,4,5范围,超出范围则计算出超出的时间,*speed后可以得到实

8、际玩家1已经走到的位置positon1,当然我们可以用一个稍微快一点的speed到达position1后面的一点位置。还有一种好像是目前主流的解决方案,笔者没有实践拷贝网络资料: 首先客户端需要在登陆世界的时候建立很多张广播列表,这些列表在客户端后台和服务器要进行不及时同步,之所以要建立多张列表,是因为要广播的类型是不止一种的,比如说有local message,有remote message,还有global message 等等,这些列表都需要在客户端登陆的时候根据服务器发过来的消息建立好。在建立列表的同时,还需要获得每个列表中广播对象的TimeModified,并且要维护一张完整的用户状

9、态列表在后台,也是不及时的和服务器进行同步,根据本地的用户状态表,可以做到一部分决策由客户端自己来决定,当客户端发送这部分决策的时候,则直接将最终决策发送到各个广播列表里面的客户端,并对其时间进行校对,保证每个客户端在收到的消息的时间是和根据本地时间进行校对过的。那么再采用预测拉扯中提到过的计算提前量,提高速度行走过去的方法,将会使同步变得非常的smooth。该方案的优点是不通过服务器,客户端自己之间进行同步,大大的降低了由于网络延迟而带来的误差,并且由于大部分决策都可以由客户端来做,也大大的降低了服务器的资源。由此带来的弊端就是由于消息和决策权都放在客户端本地,所以给外挂提供了很大的可乘之机

10、。 基于这种方案的导航Dead Reckoning算法:大家都知道,在网络传输的时候,延迟现象是很普遍的,而在基于Server/Client结构下的网络游戏的同步也就成了很头疼的问题,在保证客户端响应用户本地指令流畅的情况下,没法有效的保证的同步的及时性。首先,这套同步方案是基于客户端之间的同步的。下面我们先来说一些本文中将用到的名词概念:网状网络:客户端之间构成的网络节点:网状网络中的每个客户端极限误差:进行同步的时候可能产生的误差的极值恩,在探讨其原理的之前,我们先来看看我们需要一个什么样的环境。首先,需要一个网状网络,网状网络如何构成呢?当有新节点进入的时候,通知该网络里面的所有节点,各

11、节点为该客户端在本地创建一个副本,登出的时候,则通知所有节点销毁本地关于该节点的副本。然后每个节点该保存一些什么数据呢?首先有一个很重要的包需要保存,叫做协议数据包(PDU Protocol Data Unit),PDU包含节点的一些相关的运动信息,比如当前位置,速度,运动方向,或者还有加速度等一些信息。除PDU之外,还有其他信息需要保存,比如说节点客户端人物的HP,MP之类的。然后,保证每个节点在最少8秒之内要向其它节点广播一次PDU信息。最后,设置一个极限误差值。到此,其环境就算搭建完成了。下面,我们就来看看相关的具体算法:假设在节点A有一个小人(路人甲),开始跑路了,这个时候,就像所有的

12、节点广播一次他的PDU信息,包括:速度(S),方向(O),加速度(A)。那么所有的节点就开始模拟路人甲的运动轨迹和路线,包括节点A本身(这点很重要),同时,路人甲在某某玩家的控制下,会不时的改变一下方向,让其跑路的路线变得不是那么正规。在跑路的过程中,节点A有一个值在不停的记录着其真实坐标和在后台模拟运动的坐标的差值,当差值大于极限误差的时候,则计算出当前的速度S,方向O和速度A(算法将在后面介绍),并广播给网络中其他所有节点。其他节点在收到这条消息之后呢,就可以用一些很平滑的移动把路人甲拉扯过去,然后重新调整模拟跑路的数据,让其继续在后台模拟跑路。很显然,如果极限误差定义得大了,其他节点看到

13、的偏差就会过大,如果极限偏差定义得小了,网络带宽就会增大。如果定义这个极限误差,就该根据各种数据的重要性来设计了。如果是回合制的网络游戏,那么在走路上把极限误差定义得大些无所谓,可以减少带宽。但是如果是及时打斗的网络游戏,那么就得把极限误差定义得小一些,否则会出现某人看到某人老远把自己给砍死的情况。同步是网络游戏很重要的问题,如何同步也牵扯到各个方面的问题,比如说游戏的规模,游戏的类型以及各种各样的方面,对于规模比较大的游戏,在同步方面可以下很多的工夫,把消息分得十分的细腻,对于不同的消息采用不同的同步机制,而对于规模比较小的游戏,则可以采用大体上一样的同步机制,究竟怎么样同步,没有个定式,是

14、需要根据自己的不同情况来做出不同的同步决策的。笔者完成的是一个休闲游戏,采用了第二种方式做预测拉扯方式完成,对玩家操作采用先绘图,其他玩家接收消息后预测拉扯。同时服务器端也建立一幅地图资源和玩家操作场景,类似服务器和客户端都是一幅地图下同样的位置更新,由服务器做定期更细玩家坐标,并在关键的获得道具等消息处理有服务器决定。最后摘抄以为网络大虾的的一点总结:以下六点,将助你分清楚哪些我们可以努力,哪些我们不值得努力,弄明白实时游戏中同步问题关键之所在,巧妙的化解与规避游戏,最终在适合普遍用户网络环境中,实现实时快速互动游戏:1. 基本情况: 网络性能指标一:带宽,限制了实时游戏的人数容量 网络性能指标二:延时,决定了实时游戏的最低反应时间2. 两个基本原则: 让所有的用户屏幕上面表现出完全不同的表象是完全没有问题的。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号