著录项信息
专利名称 | 战斗系统实现方法 |
申请号 | CN201110247809.0 | 申请日期 | 2011-08-25 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2012-03-21 | 公开/公告号 | CN102387132A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/06 | IPC分类号 | H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 北京像素软件科技股份有限公司 | 申请人地址 | 北京市昌平区科技园区火炬街21号401-07室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京像素软件科技股份有限公司 | 当前权利人 | 北京像素软件科技股份有限公司 |
发明人 | 刘毅 |
代理机构 | 北京德琦知识产权代理有限公司 | 代理人 | 杨春香;宋志强 |
摘要
本发明提供了战斗系统实现方法,包括:客户端检测其担任的游戏角色是否能够移动,如果是,动态计算寻路逻辑,并按照自身计算的寻路逻辑尝试寻路移动,在移动成功后,通知给服务器;服务器接收到通知后,动态计算寻路逻辑,并按照自身计算的寻路逻辑与客户端一起寻路,在寻路过程中发现异常时,通知客户端终止移动,并将客户端拉回到指定位置。采用本发明,一方面实现客户端及时移动,另一方面避免客户端频繁向服务器发送位置信息,并降低外挂风险。
1.一种战斗系统实现方法,其特征在于,该方法包括:
客户端检测其担任的游戏角色是否能够移动,如果是,动态计算寻路逻辑,并按照自身计算的寻路逻辑尝试寻路移动其担任的游戏角色,客户端担任的游戏角色在移动成功后,通知给服务器;
服务器接收到通知后,动态计算寻路逻辑,并按照自身计算的寻路逻辑与客户端一起寻路,在寻路过程中发现异常时,通知客户端终止其担任的游戏角色移动,并将客户端担任的游戏角色拉回到指定位置;
当所述异常为所述服务器检测到限制所述客户端移动的条件时,所述将客户端拉回到指定位置包括:将客户端担任的游戏角色拉回至所述服务器指定的在所述服务器中游戏角色当前所在位置附近的位置;
所述客户端计算的寻路逻辑和所述服务器计算的寻路逻辑中,寻路的起点和终点相同。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
所述客户端担任的游戏角色按照设置的战斗逻辑进行战斗,并在战斗过程中需要使用技能时,向服务器发送技能请求,并在接收到服务器发送的使用技能的通知后,开始使用技能。
3.根据权利要求2所述的方法,其特征在于,所述客户端向服务器发送技能请求包括:
判断需要使用的技能是否满足条件,如果满足,则向服务器发送技能请求,否则,给出技能不满足条件的提示。
4.根据权利要求2或3所述的方法,其特征在于,所述服务器发送使用技能的通知包括:
所述服务器接收到技能请求后,验证所述客户端是否能够使用所述客户端请求的技能,如果是,则向客户端发送使用技能的通知,并且自身也依照所述战斗逻辑开始使用所述客户端请求的技能。
5.根据权利要求4所述的方法,其特征在于,所述服务器向客户端发送使用技能的通知包括:
服务器生成随机数种子,将所述随机数种子携带在使用技能的通知中发送给客户端;
该方法进一步包括:
客户端在使用的技能中包括随机事件时,使用所述随机数种子处理所述随机事件。
6.根据权利要求4所述的方法,其特征在于,所述客户端发送的技能请求中携带所述客户端担任的游戏角色当前所处的位置;
所述服务器在验证出所述客户端能够使用所述客户端请求的技能时,进一步包括:所述服务器判断自身距所述技能请求携带的位置的距离是否合理,如果是,设置自身至所述位置,否则,按照当前速度移动至所述位置;
所述客户端开始使用技能包括:检测所述服务器是否到达所述位置,如果是,则开始使用技能,否则,继续等待,直至所述服务器到达所述位置。
7.根据权利要求2或3所述的方法,其特征在于,该方法进一步包括:
服务器在检测到客户端开始使用技能时,发送事件对应的结果数据给客户端;所述事件至少包括:伤害判定事件、技能流程跳转事件;
客户端缓存接收的结果数据,并在触发事件时,直接显示缓存的该被触发的事件对应的结果数据。
战斗系统实现方法\n技术领域\n[0001] 本发明涉及网络技术,特别涉及战斗系统实现方法。\n背景技术\n[0002] 在目前的各种网络游戏中,战斗系统是一个非常基础也非常重要的底层系统。战斗系统的好坏,关系到游戏玩家在游戏中的体验效果,也关系到游戏的效果。\n[0003] 目前的战斗系统主要分为两类,一类为回合制战斗系统,代表作为《梦幻西游》、《问道》等,另一类为即时制战斗系统,代表作为《传奇》、《魔兽世界》等。\n[0004] 在目前的战斗系统中,客户端的移动主要包含两种方式:一种方式为客户端在移动时通知给服务器,等待服务器反馈后再移动,这种方式会造成客户端移动迟缓,操作不流畅;另一种方式为:客户端不断地发送位置信息给服务器,服务器信赖该位置信息,这种方式会大大增加客户端和服务器之间的通信流量,造成浪费,并且,通常会被外挂,产生各种严重的bug,风险比较大。\n发明内容\n[0005] 本发明提供了战斗系统实现方法,一方面实现客户端及时移动,另一方面避免客户端频繁向服务器发送位置信息,并降低外挂风险。\n[0006] 本发明提供的技术方案包括:\n[0007] 一种战斗系统实现方法,包括:\n[0008] 客户端检测其担任的游戏角色是否能够移动,如果是,动态计算寻路逻辑,并按照自身计算的寻路逻辑尝试寻路移动,在移动成功后,通知给服务器;\n[0009] 服务器接收到通知后,动态计算寻路逻辑,并按照自身计算的寻路逻辑与客户端一起寻路,在寻路过程中发现异常时,通知客户端终止移动,并将客户端拉回到指定位置。\n[0010] 由以上技术方案可以看出,本发明中,服务器信任客户端,由客户端先移动,之后服务器和客户端同时寻路,当服务器在寻路过程中发现异常时,修正客户端的位置,这能够保证客户端及时移动,并且,由于客户端和服务器各自按照自身的寻路逻辑寻路,并不需要频繁交互,这减少了客户端和服务器之间的通信流量,节省资源,并且也降低被外挂利用的风险。\n附图说明\n[0011] 图1为本发明实施例提供的基本流程图;\n[0012] 图2为本发明实施例提供的战斗流程图;\n[0013] 图3为本发明实施例提供的战斗中事件同步流程图。\n具体实施方式\n[0014] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。\n[0015] 本发明提供的方法包括图1所示的流程:\n[0016] 参见图1,图1为本发明实施例提供的基本流程图。如图1所示,该流程可包括以下步骤:\n[0017] 步骤101,客户端检测其担任的游戏角色是否能够移动,如果是,则执行步骤102,否则,不移动。\n[0018] 具体地,本步骤101可通过以下判断来实现检测其担任的游戏角色是否能够移动:判断当前有没有限制客户端担任的游戏角色移动的条件存在来实现,如果有,则确定游戏角色不能移动,否则,则确定游戏角色能移动。\n[0019] 步骤102,动态计算寻路逻辑,并按照自身计算的寻路逻辑尝试寻路移动。\n[0020] 步骤103,客户端在移动成功后,通知给服务器。\n[0021] 步骤104,服务器接收到通知后,动态计算寻路逻辑,并按照自身计算的寻路逻辑与客户端一起寻路。\n[0022] 本步骤104中,所述服务器计算的寻路逻辑中,寻路的起点和终点均与客户端计算的寻路逻辑中的起点和终点相同。通常,只要是起点和终点相同,则寻路逻辑也几乎相同。\n[0023] 可以看出,本发明中,客户端和服务器同时寻路,并不需要像现有技术那样在移动时通知给服务器,等待服务器反馈后再移动,这会使客户端展示流畅的技术效果,并且,本发明中,客户端和服务器各自按照自身的寻路逻辑寻路,并不需要频繁交互,这减少了客户端和服务器之间的通信流量,节省资源,并且也降低被外挂利用的风险。\n[0024] 步骤105,服务器在寻路过程中发现异常时,通知客户端终止移动,并将客户端拉回到指定位置。\n[0025] 这里,当所述异常为所述服务器和所述客户端之间的距离不合理时,所述将客户端拉回到指定位置包括:将客户端拉回至使所述服务器和所述客户端之间的距离合理的位置,比如服务器所在的位置等。\n[0026] 当所述异常为所述服务器检测到限制所述客户端移动的条件时,所述将客户端拉回到指定位置包括:将客户端拉回至所述服务器指定的在所述服务器当前所在位置附近的位置,以避免该异常。\n[0027] 至此,完成图1所示的流程。\n[0028] 从图1所示的流程可以看出,本发明中,服务器信任客户端,由客户端先移动,之后服务器和客户端同时寻路,当服务器在寻路过程中发现异常时,修正客户端的位置,这能够保证客户端及时移动,并且,由于客户端和服务器各自按照自身的寻路逻辑寻路,并不需要频繁交互,这减少了客户端和服务器之间的通信流量,节省资源,并且也降低被外挂利用的风险。\n[0029] 优选地,本发明中,所述客户端担任的游戏角色还可进行战斗,并在战斗过程中需要使用技能时,向服务器发送技能请求,并在接收到服务器发送的使用技能的通知后,开始使用技能。下面通过图2所示的流程进行描述:\n[0030] 需要说明的是,本发明中,所述客户端和服务器遵守相同的战斗逻辑,该战斗逻辑预先被设定好。\n[0031] 参见图2,图2为本发明实施例提供的战斗流程图。如图2所示,该流程可包括以下步骤:\n[0032] 步骤201,客户端在担任的游戏角色进行战斗需要使用一技能时,判断该技能是否满足条件,如果是,则执行步骤202,否则,给出技能不满足条件的提示。\n[0033] 步骤202,向服务器发送技能请求。\n[0034] 需要说明的是,为保证客户端和服务器在战斗中位置同步,所述技能请求中可携带所述客户端担任的游戏角色当前所处的位置,以使服务器接收到该技能要求后,根据该技能要求携带的位置达到客户端和服务器之间的同步。\n[0035] 步骤203,服务器接收到技能请求后,验证所述客户端是否能够使用所述客户端请求的技能,如果是,则执行步骤204,否则,通知客户端终止使用所述技能。\n[0036] 本步骤203中的验证包括:判断所述客户端请求的技能的使用频率是否超过预设值,所述预设值用于防止外挂恶意利用的门限,所述客户端请求的技能的使用频率由设置的计数器实现,如果是,则确定为恶意外挂利用,终止客户端使用所述技能,并记录外挂情况至LOG;否则,确定客户端能够使用请求的技能,执行步骤204。\n[0037] 步骤204,服务器判断自身距所述技能请求携带的位置的距离是否合理,如果是,执行步骤205,否则,执行步骤206。\n[0038] 本步骤205中的判断具体实现时可有多种形式,比如判断按照所述游戏角色的当前速度设定时间内能够正常移动至所述技能请求携带的位置,如果可以,则认为合理,否则,认为不合理。\n[0039] 步骤205,设置自身至所述位置。之后,执行步骤207。\n[0040] 步骤206,按照当前速度移动至所述位置。之后,执行步骤207。\n[0041] 通过步骤204至步骤206可以实现服务器和客户端同步。可以看出,在客户端每次向服务器请求技能时,都会执行客户端和服务器的同步。也就是说,客户端向服务器请求技能,是客户端和服务器同步的时机。之所以执行客户端和服务器同步,主要原因是:战斗过程中位置是非常重要的,而本发明是信任服务器位置的,所以必须在战斗过程中尽可能的同步服务器和客户端的位置。\n[0042] 步骤207,服务器生成随机数种子,将所述随机数种子携带在使用技能的通知中发送给客户端,并且,自身也开始使用所述技能。\n[0043] 本步骤207可在步骤206的移动过程中执行。\n[0044] 步骤208,客户端接收服务器发送的使用技能的通知,并在检测到所述服务器到达所述位置后,开始使用技能。\n[0045] 本步骤208中,客户端如果检测到所述服务器未到达所述位置后,则继续等待,直至所述服务器到达所述位置,才开始使用其请求的技能。\n[0046] 步骤209,客户端在使用的技能中包括随机事件时,使用所述随机数种子处理所述随机事件。\n[0047] 通过执行步骤209,能够保证客户端和服务器的处理结果一致。\n[0048] 至此,完成图2所示的流程。\n[0049] 需要说明的是,在图2所示的流程中,如果服务器发现任何异常,都需要及时纠正,这能够提高玩家的体验感。\n[0050] 另外,还需要说明的是,客户端执行的战斗逻辑中,存在一些判定操作比如攻击判定,而客户端自身不会判定,其会按照默认的判定结果执行,在服务器执行判定后,发现客户端执行的判定结果是错的,则及时纠正客户端。这能够保证战斗的准确度。\n[0051] 另外,在战斗中,客户端触发的事件与该事件对应的结果必须同步,图3示出了战斗中事件同步的流程。\n[0052] 参见图3,图3为本发明实施例提供的战斗中事件同步的示意图。如图3所示,该事件同步分为6个阶段,下面依次描述:\n[0053] 阶段1,在此阶段内客户端开始使用技能。\n[0054] 阶段2,在此阶段内服务器检测到客户端开始使用技能;\n[0055] 阶段3,在此阶段内服务器发送事件对应的结果数据至客户端。\n[0056] 此阶段3中,服务器相比于客户端触发事件,会提前一段时间(一般提前100-200毫秒,具体可根据平均网络延迟调整)发送该事件对应的结果数据。这里,事件一般为客户端执行的动作,而事件对应的结果数据为该动作造成的结果。本阶段3中,可对该事件进行限定,比如,为关键事件,诸如伤害判定事件、技能流程跳转事件等。以事件为打击为例,比如,客户端火球打中一个目标,该打中即为事件,对应的结果可为挨打的动画,火球爆炸动画,以及伤害等,该伤害是服务器计算的。\n[0057] 阶段4,客户端缓存接收的结果数据。\n[0058] 阶段5,客户端触发事件,\n[0059] 阶段6,客户端直接显示缓存的该被触发的事件对应的结果数据。\n[0060] 以事件为客户端火球打中一个目标,对应的结果数据为挨打的动画,火球爆炸动画,以及伤害为例,则本阶段6内,当客户端火球打中一个目标时,客户端会及时播放目标挨打的动画,火球爆炸的动画,并显示伤害。这保证了客户端的表现更加及时、准确,即事件和客户端表现的效果同步,不像现有技术那样要么是提前要么是滞后。\n[0061] 需要说明的是,如果因为某些原因,服务器没能及时将事件对应的结果数据发送给客户端,则当客户端触发事件时,会等到,直到对应的结果数据到达时,显示该结果数据。\n[0062] 至此,完成本发明提供的方法描述。\n[0063] 由以上技术方案可以看出,本发明中,服务器信任客户端,由客户端先移动,之后服务器和客户端同时寻路,当服务器在寻路过程中发现异常时,修正客户端的位置,这能够保证客户端及时移动,并且,由于客户端和服务器各自按照自身的寻路逻辑寻路,并不需要频繁交互,这减少了客户端和服务器之间的通信流量,节省资源,并且也降低被外挂利用的风险。\n[0064] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
法律信息
- 2014-05-14
- 2012-06-06
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 201110247809.0
申请日: 2011.08.25
- 2012-03-21
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-03-21
|
2006-10-19
| | |
2
| |
2010-01-27
|
2009-08-14
| | |
3
| |
2011-07-20
|
2010-12-30
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |