一种基于游戏移动逻辑客户端与服务端同步的延迟计算方法

文档序号:7855230阅读:617来源:国知局
专利名称:一种基于游戏移动逻辑客户端与服务端同步的延迟计算方法
技术领域
本发明涉及一种基于游戏移动逻辑客户端与服务端同步的延迟计算方法。
背景技术
近年来,随着宽带的普及,网络游戏得到了极大的发展,现在网游已经成为了ー个举足轻重的产业,创造了可观的 经济效益。在网游中,用户需要控制对象移动以实现某些目的,比如到达某些特定位置或者做出某些动作,这些移动需要系统进行移动逻辑运算。此类移动逻辑运算可在客户端或者服务器端上进行,并在客户端与服务器端之间同步数据。现阶段,移动逻辑运算更多的选择在客户端运算,在提供更好的用户体验的同时避免加重服务器端的负载,目前市面上许多游戏都采用了客户端运算这种方法。但是事实证明这种方法存在严重的安全隐患,容易被一些游戏外挂恶意篡改数据。而在服务端运算,又存在太过依赖网络延迟,移动容易被扯动的问题。在客户端进行运算可靠性较低的原因在干由于客户端运算容易被外挂等工具篡改数值,所以移动逻辑在玩家客户端进行计算,并需要在服务端进行相同的计算与之校验;由于游戏服务器与玩家客户端之间不可避免地存在延时,所以导致玩家的操作在传送到服务器后,有一定的滞后性(服务器计算的结果在传送到客户端的时候也有相似的问题),造成两边的运算结果不一致而严重影响玩家体验。

发明内容
为解决以上问题,本发明在客户端(或者服务端)将所有操作指令添加一个基于服务端延迟的參数,然后发送,发送端与接收端同时在接收到操作后在指定时间点执行该操作。本发明的目的在于防止移动运算在客户端上被外挂等工具篡改数值,将移动逻辑的运算放到服务器上。本发明的目的还在于避免游戏服务器与玩家客户端之间因为不可避免的延时,导致玩家的操作在传送到服务器计算后,得到的结果与客户端运算得到的结果不一样,导致服务器不断扯动客户端,严重影响玩家体验。本发明的技术方案为
一种基于游戏移动逻辑客户端与服务端同步的延迟计算方法,包括游戏的客户端与服务器端,包括以下步骤
1.玩家在客户端上发出移动请求;
2.客户端计算出时间点K,其中时间点K为当前时间和预设的延迟期望值的和;
3.客户端将移动请求和时间点K发送给服务器端,并要求服务器端在时间点K开始移动逻辑运算;4.客户端和服务器端同时在时间点K开始移动逻辑计算,并将计算结果保存;
5.服务器端将计算结果发送给客户端;
6.客户端获取到服务器端发送过来的计算結果,并对客户端的计算结果和服务器端的计算结果进行校验,如果一致,则不修改,如果不一致,认为数据被篡改过,使用服务器端的计算结果覆盖客户端的计算结果;
其中,赋予游戏中受玩家控制的角色一不受玩家控制的惯性动作,所述惯性动作的时长覆盖所述延迟期望值。作为以上技术方案的一种改进,玩家通过鼠标键盘等方式在客户端上发出移动请求。 作为以上技术方案的一种改进,服务器端的计算结果中含有帧数标志,客户端根据所述帧数标记在其保存的历史计算结果中寻找相应的计算结果,并进行验证。由于添加了延迟同步,所以包括急停,快速启动这些动作玩家会感觉到角色的动作并不会在按键按下的那一瞬间响应,但是不会影响用户体验(如果网络流畅,一般可以控制在0.1 0.2 S以内,低于人的正常反应速度,其实可以忽略不计)。另外,在这部分动作中可以添加ー些惯性的动作(例如急停的时候添加“刹车滑步”动作)也可以降低延迟造成的对用户造成的影响。另外,通过客户端与服务端同步计算移动逻辑,有效避免了外挂等工具篡改游戏数据的现象;延迟计算有效地避免了客户端与服务端同步计算移动逻辑过程中网络延迟带来的负面效果。
以下结合附图
对本发明进行进ー步的说明,其中
图I为现有技术中移动逻辑计算的示意 图2为本发明中移动逻辑计算的示意图。
具体实施例方式为了解决延迟问题,本发明使用了ー套延迟计算的模式,当客户端获取移动操作的时候,并不直接开始计算移动結果,而是先发送该操作至服务器端,告诉服务器在某ー个时间点进行这个操作,然后当这个时间到了以后,客户端与服务器端同步进行计算(即干脆两边同时将这个操作延迟到时间点K),然后服务器端会将计算结果发送回客户端,与客户端进行数据校验。其中留意到,客户端获得的、由服务器端计算出来的结果也会受到延迟的影响,所以会带上帧数的标志,客户端会将之前一段时间的计算结果保存下来,这样当获取服务器端发送下来的计算结果的时候,可以在历史计算结果中找到并进行验证。本发明的运算步骤详细如下
1.玩家通过鼠标键盘等方式,在网游的客户端上发出移动请求;
2.客户端计算出时间点K,其中时间点K为当前时间和预设的延迟期望值的和,其中所述延迟期望值一般大于或者等于网络的延迟时间;
3.客户端将移动请求和时间点K发送给服务器端,并告诉服务器端在时间点K开始运算;
4.客户端在时间点K开始运算玩家的移动请求,并将计算结果保存;服务器端在时间点K也开始运算玩家的移动请求;
5.服务器端将计算结果发送给客户端;
6.客户端获取到服务器端发送过来的计算結果,与客户端保存的K时间点的数据进行校验,如果数据一致,则对移动进行操作;如果数据不一致,认为数据被篡改过,则进行修复动作,即使用服务器端的数据覆盖客户端的数据。在现有技术中,如图I所示,假设玩家正在向右移动,然后在S点发出停止指令,但是由于延迟的原因,在服务器端接收到命令的时候,人物的位置可能已经运行SI的位置,这个时候,服务器端会把人物校验到Si的位置,就会发生扯动, 从而影响用户体验。然而,在本发明中,如图2所示,假设玩家正在向右移动,然后在S点发出停止指令,这个时候,客户端就会服务器端发出一条在时间点K停止的指令(即上文所说的在时间点K进行移动逻辑运算),并在时间点K停止在SI处,此时服务器端和客户端将同时停止,避免了扯动的出现,保证了用户的体验。其中,为解决处理客户端与服务端之间同步的时候存在的延时问题,本发明主要是引入一个延迟操作的思想,将延迟转嫁到玩家操作上,用一部分类似惯性的动作去填补延迟带来的体验问题。在网游中,延迟的主要影响主要是玩家按下按钮可能需要一定的反应时间,但是实际操作中这个很短的时间一般很难察觉出来。本发明的延迟參数(即预设的延迟期望值)一般设置在ー个玩家无法察觉的值,比如0. ro. 2秒一般玩家体验不出来,但是对于网络延时来说已经足够了。举例来说,本发明在角色切换移动状态的时候,引入惯性的概念,这样当你在运动中突然停止,因为延迟的缘故,需要一定的时间服务器才能响应停止操作(从位置S到位置SI的过程)这个时候,给角色一个表现,例如刹车的动作,这个时候玩家的角色会短暂地不受控制,平滑地度过这个延时过程。本发明通过客户端与服务端同步计算移动逻辑,有效避免了外挂等工具篡改游戏数据的现象,在目前运营的游戏中,还没有出现过这方面的现象。本发明的延迟计算有效地避免了客户端与服务端同步计算移动逻辑过程中网络延迟带来的负面效果。当然,本发明除了上述实施方式之外,其它等同技术方案也应当在其保护范围之内。
权利要求
1.一种基于游戏移动逻辑客户端与服务端同步的延迟计算方法,包括游戏的客户端与服务器端,其特征在于包括以下步骤 玩家在客户端上发出移动请求; 客户端计算出时间点K,其中时间点K为当前时间和预设的延迟期望值的和; 客户端将移动请求和时间点K发送给服务器端,并要求服务器端在时间点K开始移动逻辑运算; 客户端和服务器端同时在时间点K开始移动逻辑计算,并将计算结果保存; 服务器端将计算结果发送给客户端; 客户端获取到服务器端发送过来的计算结果,并对客户端的计算结果和服务器端的计算结果进行校验,如果一致,则不修改,如果不一致,则认为数据被篡改过,并使用服务器端的计算结果覆盖客户端的计算结果; 其中,赋予游戏中受玩家控制的角色一不受玩家控制的惯性动作,所述惯性动作的时长覆盖所述延迟期望值。
2.根据权利要求I所述的基于游戏移动逻辑客户端与服务端同步的延迟计算方法,其特征在于玩家通过鼠标、键盘等方式在客户端上发出移动请求。
3.根据权利要求I所述的基于游戏移动逻辑客户端与服务端同步的延迟计算方法,其特征在于服务器端的计算结果中含有帧数标志,客户端根据所述帧数标记在其保存的历史计算结果中寻找相应的计算结果,并进行验证。
全文摘要
本发明提出了一种基于游戏移动逻辑客户端与服务端同步的延迟计算方法,包括以下步骤玩家在客户端上发出移动请求;客户端计算出时间点K;要求服务器端在时间点K开始移动逻辑运算;客户端和服务器端同时在时间点K开始移动逻辑计算;服务器端将计算结果发送给客户端;客户端获取到服务器端发送过来的计算结果,并对客户端的计算结果和服务器端的计算结果进行校验;其中,赋予游戏中受玩家控制的角色一不受玩家控制的惯性动作值。本发明不仅有效避免了外挂等工具篡改游戏数据的现象,而且有效地避免了客户端与服务端同步计算移动逻辑过程中网络延迟带来的负面效果。
文档编号H04L29/08GK102769616SQ20121022911
公开日2012年11月7日 申请日期2012年7月4日 优先权日2012年7月4日
发明者彭鹏, 怀宾, 陈杰 申请人:珠海金山网络游戏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1