首页> 中国专利> 缓解游戏服务端技能目标检测计算压力的方法

缓解游戏服务端技能目标检测计算压力的方法

摘要

本发明涉及一种缓解游戏服务端技能目标检测计算压力的方法,其包括以下步骤:战斗技能触发后,服务端获取技能范围,并发送目标数据至客户端,通知客户端在所述技能范围内检测与所述目标数据对应的目标对象;服务端接收由客户端根据检测得到的目标对象生成的命中包,并对所述命中包进行验证;服务端根据其对命中包验证得到的验证结果判断是否执行技能操作。由此相对于现有技术,本发明通过客户端检测获取技能目标,服务端只负责验证客户端检测得到的技能目标的方法,从而减少服务端的运算量和资源占用,由此有效地降低了服务端计算压力和平衡服务端的其它计算操作。

著录项

  • 公开/公告号CN106693364A

    专利类型发明专利

  • 公开/公告日2017-05-24

    原文格式PDF

  • 申请/专利权人 广州多益网络股份有限公司;

    申请/专利号CN201610281582.4

  • 发明设计人 徐波;

    申请日2016-04-28

  • 分类号A63F13/35;A63F13/73;A63F13/71;A63F13/77;A63F13/56;

  • 代理机构广州新诺专利商标事务所有限公司;

  • 代理人华辉

  • 地址 510000 广东省广州市萝岗区伴河路90号1号楼3楼

  • 入库时间 2023-06-19 02:13:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-07-17

    授权

    授权

  • 2017-06-16

    实质审查的生效 IPC(主分类):A63F13/35 申请日:20160428

    实质审查的生效

  • 2017-05-24

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,特别涉及一种缓解游戏服务端技能目标检测计算压力的方法。

背景技术

在大型多人在线即时制网游系统中,对服务端有着较高的要求——服务端必须完成游戏中所有战斗对象的技能目标检测。由于服务端对每个技能目标的检测都是范围检测,且绝大部分的技能需要的只是一个或几个目标,则在服务端进行技能目标的检测过程中,服务端还是需要在范围内一一遍历以获取目标,会产生较大的运算量并占用大部分资源,且在遍历范围检测中会产生大部分的无用功,耗时较多,造成服务端计算压力过大难以平衡其它计算操作。

发明内容

本发明的目的是为了解决上述现有技术的缺点和不足,提供一种缓解游戏服务端技能目标检测计算压力的方法,通过客户端检测获取技能目标,服务端只负责验证客户端检测得到的技能目标的方法,减少服务端的运算量和资源占用,由此降低服务端计算压力和平衡服务端的其它计算操作。

一种缓解游戏服务端技能目标检测计算压力的方法,包括以下步骤:

战斗技能触发后,服务端获取技能范围,并发送目标数据至客户端,通知客户端在所述技能范围内检测与所述目标数据对应的目标对象;

服务端接收由客户端根据检测得到的目标对象生成的命中包,并对所述命中包进行验证;

服务端根据其对命中包验证得到的验证结果判断是否执行技能操作。

本发明上述技术方案通过客户端检测获取技能目标,服务端只负责验证客户端检测得到的技能目标的方法,从而减少服务端的运算量和资源占用,由此有效地降低了服务端计算压力和平衡服务端的其它计算操作。

作为本发明的进一步改进,所述步骤服务端接收由客户端根据检测得到的目标对象生成的命中包,并对所述命中包进行验证,具体包括以下步骤:

服务端在游戏范围内建立若干单位格,由客户端记录技能触发时技能所在的单位格位置、技能作用的方向及技能当前作用时长;

由客户端根据接收到的目标数据绘制相应的检测框,并通过检测框获取与所述目标数据对应的目标对象,生成命中包并发送至服务端;

服务端接收由客户端根据检测得到的目标对象生成的命中包后,获取命中包中的目标对象的验证数据及目标对象的移动速度数据;

服务端通过自身直接获取目标对象的移动速度数据,且服务端比较其自身获取得到的目标对象的移动速度数据与从命中包中得到的目标对象的移动速度数据的大小,得到数值较大的一移动速度数据;

服务端利用数值较大的一移动速度数据参与验证运算,并结合命中包中目标对象的验证数据处理得到目标对象经过的单位格数量,生成相应的位置列表;

服务端根据技能触发时技能所在的单位格位置、技能作用的方向、技能当前作用时长及检测框的形状于服务端生成相应的位置范围图形;

服务端遍历所述位置列表,并判断所述位置列表是否位于所述位置范围图形中;若所述位置列表中存在一位置位于所述位置范围图形中,则验证结果为验证通过;否者,验证结果为验证失败。

由上述步骤可知,相比于现有技术中游戏技能目标检测均由服务端对每一个技能进行范围检测和遍历该范围获取目标的方法实现,本发明通过上述方法步骤实现对技能目标的检测,使得服务端只需要对接收到的客户端的命中包进行验证,而将范围检测和遍历改为判断位置点是否在位置范围图形中,由此大大减少了检测的运算和消耗,实现服务端可以腾出更多资源满足其他操作。

作为本发明的进一步改进,验证结果为验证失败时,服务端还记录验证失败的目标对象,生成错误列表。此处有利于对验证失败的目标对象的失败原因进行分析和方便其它方面的后续处理。

作为本发明的进一步改进,所述步骤服务端根据其对命中包验证得到的验证结果判断是否执行技能操作,具体包括以下步骤:

如果验证结果为验证通过,则服务端对命中包中的目标对象执行技能操作;

如果验证结果为验证失败,则服务端通知客户端继续于技能范围内检测与目标数据对应的目标对象,并接收由客户端重新发送的命中包,继续对新的命中包进行验证,直至服务端接收到由客户端发送的结束检测信号。

通过上述步骤,有利于避免检测时间过长而影响游戏效果和对运算空间的占用。

作为本发明的进一步改进,当服务端接收到的命中包中包括若干目标对象的数据时,服务端对包含若干目标对象的命中包的验证还包括以下步骤:

服务端预设一标准命中率数值和一标准相似度数值;所述标准命中率数值用于表明命中包中通过验证的目标对象数量与全部目标对象数量的比例;所述标准相似度用于表明命中包 中非标准包中的目标对象与标准包中的目标对象的相似度;

服务端接收由技能发动者所在的客户端发送的命中包,并标志为标准包;

服务端接收由除技能发动者外的其它客户端发送的命中包,并标志为非标准包;

服务端通过对标准包和非标准包中的全部目标对象的分别验证,得到标准包的目标对象验证通过率和非标准包的目标对象验证通过率;

服务端分别判断标准包和非标准包的目标对象验证通过率是否大于或等于所述标准命中率数值,并判断非标准包中的目标对象与标准包中的目标对象的相似度是否大于或等于所述标准相似度数值,如果是,则验证通过,否则,记录验证失败的标准包和/或非标准包所在的客户端,并生成一用于记录验证失败的客户端及客户端验证失败次数的错误列表。

通过上述步骤,实现对命中包中的多个目标对象的快速验证,并保证了对命中包验证的合理性,保证对标准包和非标准包的均衡处理,进一步保证了游戏的均衡性和有利于减少对多个目标对象验证的验证运算,保证服务端在验证多个目标对象的过程中留有一定的空间,进一步减少对服务端运算空间的占用。

作为本发明的进一步改进,本发明缓解游戏服务端技能目标检测计算压力的方法还包括以下步骤:

服务端在战场初始化时生成一命中包接收次数的最大限值,并生成一正常比例限值;

战斗过程中,服务端接收由每一客户端发送的命中包,并对每一客户端发送的每一命中包进行验证,同时于错误列表中分别记录每一客户端发送的命中包的验证失败次数;且服务端分别统计对每一客户端发送的命中包的接收次数;

服务端判断是每一客户端的接收次数是否达到最大限值,

当某一客户端的接收次数已达到最大限值,则服务端从错误列表中获取该客户端的验证失败次数,并分别计算得到该客户端的验证失败次数与最大限值的比值,并将该比值与正常比例限值进行比较;如果该比值大于正常比例限值时,则将该客户端列入黑名单,并清空该客户端的接收次数和错误列表中记录的验证失败次数,并对该客户端重新进行接收次数和验证失败次数的记录;如果该比值小于正常比例限值时,则清空该客户端的接收次数和错误列表中记录的验证失败次数,并对该客户端重新进行接收次数和验证失败次数的记录;

及如果某一客户端的接收次数还没达到最大限值,则继续对该客户端的接收次数和验证失败次数进行统计直至其接收次数达到最大限值。通过上述步骤,实现对战斗双方技能目标的合理检测,并有利于对外挂游戏的客户端的处理,以保证游戏过程的公平性和平衡性。

作为本发明缓解游戏服务端技能目标检测计算压力的方法的另一种实施角度,以下以客户端所在的角度对本发明进行阐述,其包括以下步骤:

战斗技能触发后,客户端接收由服务端发送的技能范围和目标数据,并在所述技能范围内检测与所述目标数据对应的目标对象,生成命中包;

客户端将命中包发送至服务端,由服务端对所述命中包进行验证,并由服务端根据对命中包验证得到的验证结果判断是否执行技能操作。

相对于现有技术,本发明通过客户端检测获取技能目标,服务端只负责验证客户端检测得到的技能目标生成的命中包的方法,从而减少服务端的运算量和资源占用,由此有效地降低了服务端计算压力和平衡服务端的其它计算操作。

作为本发明的进一步改进,所述客户端接收由服务端发送的技能范围和目标数据后,根据接收到的目标数据绘制相应的检测框,并通过检测框获取与所述目标数据对应的目标对象,生成命中包。通过运用检测框的方式实现对技能范围内的技能目标的检测和获取,有利于提高获取技能目标的准确性,并更加贴合技能范围,避免检测疏漏。

具体地,所述客户端控制检测框以恒定的速度沿战斗技能作用方向前移,实现对技能范围中与目标数据对应的目标对象的获取。

作为本发明的进一步改进,当检测框前移超出技能范围时,客户端生成一终止包,并发送至服务端,通知服务端结束检测;并由服务端进一步验证检测框是否超出技能范围,如果是,则由服务端中断技能,否则,则对处于技能范围内的目标对象执行技能操作。此处有利于保证检测的及时结束,避免超出技能范围后的继续检测而引发的错误,并避免检测过长而占用过多的资源。

为了更好地理解和实施,下面结合附图详细说明本发明。

附图说明

图1是本发明实施例1中缓解游戏服务端技能目标检测计算压力的方法的流程图;

图2是图1中完善后的步骤S2的方法流程示意图;

图3是图1中缓解游戏服务端技能目标检测计算压力的方法的进一步详细后的流程图;

图4是本发明实施例1中服务端对包含若干目标对象的命中包的验证的方法流程图;

图5是本发明实施例2中缓解游戏服务端技能目标检测计算压力的方法的流程图。

具体实施方式

实施例1

请参阅图1,一种缓解游戏服务端技能目标检测计算压力的方法,包括以下步骤:

步骤S1:战斗技能触发后,服务端获取技能范围,并发送目标数据至客户端,通知客户端在所述技能范围内检测与所述目标数据对应的目标对象;在本实施例中,所述目标数据包 括表示所述技能范围的技能范围数据也即需要检测的范围相关的数据、目标对象的类型、目标对象所属阵营、及目标对象的个数等数据。

步骤S2:服务端接收由客户端根据检测得到的目标对象生成的命中包,并对所述命中包进行验证;在本实施例中,所述命中包内包含的数据有由客户端检测到的符合目标数据(目标对象类型和目标对象所属阵营)的目标对象、目标对象的唯一标识、目标对象所处的位置及目标对象的当前速度等数据。

步骤S3:服务端根据其对命中包验证得到的验证结果判断是否执行技能操作。

通过步骤S1~S3,本发明实现利用客户端检测获取技能目标,使得服务端只负责验证客户端检测得到的技能目标的方法,从而减少服务端的运算量和资源占用,由此有效地降低了服务端计算压力和平衡服务端的其它计算操作。

请参阅图2,为大大减少检测的运算和消耗,实现服务端可以腾出更多资源满足其他操作,作为一种更优的技术方案,对所述步骤S2进行进一步完善,完善后的步骤S2具体包括以下步骤:

步骤S21:服务端在游戏范围内建立若干单位格,由客户端记录技能触发时技能所在的单位格位置、技能作用的方向及技能当前作用时长;

步骤S22:由客户端根据接收到的目标数据绘制相应的检测框,并通过检测框获取与所述目标数据对应的目标对象,生成命中包并发送至服务端;在本实施例中,所述检测框为固定形状或形状大小固定的图形,如可为圆形、长方形或环形等。

步骤S23:服务端接收由客户端根据检测得到的目标对象生成的命中包后,获取命中包中的目标对象的验证数据及目标对象的移动速度数据;在本实施例中,所述验证数据包括技能触发时技能所在的单位格位置也即技能开始出发时的位置点、技能作用的方向也即技能前进方向、技能从触发开始时到当前的运行时长及检测框的形状等数据。

步骤S24:服务端通过自身直接获取目标对象的移动速度数据,且服务端比较其自身获取得到的目标对象的移动速度数据与从命中包中得到的目标对象的移动速度数据的大小,得到数值较大的一移动速度数据;

步骤S25:服务端利用数值较大的一移动速度数据参与验证运算,并结合命中包中目标对象的验证数据处理得到目标对象经过的单位格数量,生成相应的位置列表;

步骤S26:服务端根据技能触发时技能所在的单位格位置、技能作用的方向、技能当前作用时长及检测框的形状于服务端生成相应的位置范围图形;

步骤S27:服务端遍历所述位置列表,并判断所述位置列表是否位于所述位置范围图形中;若所述位置列表中存在一位置位于所述位置范围图形中,则验证结果为验证通过;否者, 验证结果为验证失败。

在本实施例中,服务端会为每一个目标对象创建一个记录其移动过的单位格的位置列表,当目标对象移动到新的单位格上时,则将该格子的信息位置记录到位置列表中,在本实施例中,允许位置列表最多保存10个单位格的信息,当收录第11个单位格的信息时,则将最先收录的单位格从位置列表中删除,保证位置列表记录的是目标对象最近移动过的10个单位格。

且在本实施例中,客户端将命中包发给服务端时,会带上目标对象的移动速度,由当前运算速度较大的一方参与验证运算,获取目标对象的位置信息。由于目标对象的移动速度不同,则单位时间内通过的距离长度也不同,若规定标准时间为200毫秒,则根据目标对象的移动速度与该标准时间即可计算得到目标对象移动的单位格数目,由此获得位置信息。以下举一例子说明,如果目标对象的移动速度为20mm/s,则判断该速度在200毫秒内可以移动4个单位格,则从该目标对象的位置列表中获取该目标对象最近移动过的4个单位格的位置信息(如从单位格7到单位格10),并对这些位置进行一一验证,只有一个位置在技能范围表示的位置范围图形中,即可通过验证。

在其它实施例中,上述步骤S21~S22的顺序可互换。

为对验证失败的目标对象的失败原因进行分析和方便其它方面的后续处理,作为一种更优的技术方案,所述步骤S2还包括步骤S28:验证结果为验证失败时,服务端还记录验证失败的目标对象,生成错误列表。

请参阅图3,具体地,所述步骤S3中,服务端根据其对命中包验证得到的验证结果判断是否执行技能操作,具体包括以下步骤:

步骤S31:如果验证结果为验证通过,则服务端对命中包中的目标对象执行技能操作;在本实施例中,执行技能操作是指对作为技能承受者的目标对象进行扣血、晕眩、加状态等操作。

步骤S32:如果验证结果为验证失败,则服务端通知客户端继续于技能范围内检测与目标数据对应的目标对象,并接收由客户端重新发送的命中包,继续对新的命中包进行验证,直至服务端接收到由客户端发送的结束检测信号。

请参阅图4,为实现对命中包中的多个目标对象的快速验证,保证对命中包验证的合理性,并保证对标准包和非标准包的均衡处理,从而保证游戏的均衡性和有利于减少对多个目标对象验证的验证运算,保证服务端在验证多个目标对象的过程中留有一定的空间,进一步减少对服务端运算空间的占用,作为一种更优的技术方案,当服务端接收到的命中包中包括若干目标对象的数据时,服务端对包含若干目标对象的命中包的验证还包括以下步骤:

步骤S41:服务端预设一标准命中率数值和一标准相似度数值;所述标准命中率数值用于表明命中包中通过验证的目标对象数量与全部目标对象数量的比例;所述标准相似度用于表明命中包中非标准包中的目标对象与标准包中的目标对象的相似度;为更清楚地了解本发明中的标准命中率数值和标准相似度数值的定义,以下举一例子简单说明:对于标准命中率数值:例如,本实施例中设定的标准命中率数值为60%,若一个命中包中一共有10个目标,其中8个通过验证,则该命中包的命中率为80%,则可知该命中包的命中率80%大于标准命中率数值60%,故通过验证。对于标准相似度数值:在本实施例中,设定攻击者(也即技能发动者)所在的客户端发送的命中包为标准包,并设定被攻击者(也即技能承受者)所在的客户端为非标准包,如果标准包中具有目标对象1和目标对象2;及非标准包中具有目标对象1和目标对象3;则可知标准包中和非标准包中仅有一个相同的目标对象,也即目标对象1,并由于非标准包和标准包中的目标对象数量分别为2,因此,此时非标准包与标准包的相似度为50%,如果设定的标准包相似度数值为50%,则此时非标准包可认为达到标准相似度。

步骤S42:服务端接收由技能发动者所在的客户端发送的命中包,并标志为标准包;

步骤S43:服务端接收由除技能发动者外的其它客户端发送的命中包,并标志为非标准包;例如一场比赛有10个玩家,此时有10个客户端,A发动了技能1,则A所在的客户端发送的技能1命中包称为标准包,其他9个客户端发送的技能1命中包称为非标准包。

步骤S44:服务端通过对标准包和非标准包中的全部目标对象的分别验证,得到标准包的目标对象验证通过率和非标准包的目标对象验证通过率;

步骤S45:服务端分别判断标准包和非标准包的目标对象验证通过率是否大于或等于所述标准命中率数值,并判断非标准包中的目标对象与标准包中的目标对象的相似度是否大于或等于所述标准相似度数值,如果是,则验证通过,否则,记录验证失败的标准包和/或非标准包所在的客户端,并生成一用于记录验证失败的客户端及客户端验证失败次数的错误列表。例如技能1发动后,客户端A发送的命中包命中率和相似度都为100%,全部达标则不记录;客户端B的命中率为10%,不达标则将客户端B记入错误列表,并且B相应的错误次数加1;客户端C的相似度为10%,不达标则将C也记入错误列表,并且C对应的错误次数加1。

为实现对战斗双方技能目标的合理检测,并有利于对外挂游戏的客户端的处理,以保证游戏过程的公平性和平衡性,作为一种更优的技术方案,本发明缓解游戏服务端技能目标检测计算压力的方法还包括以下步骤:

步骤S51:服务端在战场初始化时生成一命中包接收次数的最大限值,并生成一正常比例限值;在本实施例中,所述命中包接收次数的最大限值是在每次创建战场时随机生成的,而所述正常比例限值可根据实际需要和战场情况设定。

步骤S52:战斗过程中,服务端接收由每一客户端发送的命中包,并对每一客户端发送的每一命中包进行验证,同时于错误列表中分别记录每一客户端发送的命中包的验证失败次数;且服务端分别统计对每一客户端发送的命中包的接收次数;

步骤S53:服务端判断是每一客户端的接收次数是否达到最大限值,

当某一客户端的接收次数已达到最大限值,则服务端从错误列表中获取该客户端的验证失败次数,并分别计算得到该客户端的验证失败次数与最大限值的比值,并将该比值与正常比例限值进行比较;如果该比值大于正常比例限值时,则将该客户端列入黑名单,并清空该客户端的接收次数和错误列表中记录的验证失败次数,并对该客户端重新进行接收次数和验证失败次数的记录;如果该比值小于正常比例限值时,则清空该客户端的接收次数和错误列表中记录的验证失败次数,并对该客户端重新进行接收次数和验证失败次数的记录;

及如果某一客户端的接收次数还没达到最大限值,则继续对该客户端的接收次数和验证失败次数进行统计直至其接收次数达到最大限值。

进一步,还可以在比赛结束后根据异常的客户端超时次数、不达标次数和黑名单次数等相关数据验证该异常的客户端是否使用外挂,再进行后续处理。

实施例2

请参阅图5,作为本发明缓解游戏服务端技能目标检测计算压力的方法的另一种实施角度,以下以客户端所在的角度对本发明进行阐述,在客户端角度上的缓解游戏服务端技能目标检测计算压力的方法包括以下步骤:

步骤Sa:战斗技能触发后,客户端接收由服务端发送的技能范围和目标数据,并在所述技能范围内检测与所述目标数据对应的目标对象,生成命中包;

步骤Sb:客户端将命中包发送至服务端,由服务端对所述命中包进行验证,并由服务端根据对命中包验证得到的验证结果判断是否执行技能操作。

为进一步提高获取技能目标的准确性,并更加贴合技能范围,避免检测疏漏,作为本发明一种更优的技术方案,所述客户端接收由服务端发送的技能范围和目标数据后,根据接收到的目标数据绘制相应的检测框,并通过检测框获取与所述目标数据对应的目标对象,生成命中包。具体地,所述客户端控制检测框以恒定的速度沿战斗技能作用方向前移,实现对技能范围中与目标数据对应的目标对象的获取。

在本实施例中,所述检测框为一个大小和形状固定的图形,其可为圆形、长方形和环形。

为保证检测的及时结束,避免超出技能范围后的继续检测而引发的错误,并避免检测过长而占用过多的资源,作为本发明一种更优的技术方案,当检测框前移超出技能范围时,客 户端生成一终止包,并发送至服务端,通知服务端结束检测;并由服务端进一步验证检测框是否超出技能范围,如果是,则由服务端中断技能,否则,则对处于技能范围内的目标对象执行技能操作。

另外,可结合实施例1和实施例2的进行更好地理解和完善,在此就不再赘述。

相对于现有技术,本发明通过客户端检测获取技能目标,服务端只负责验证客户端检测得到的技能目标的方法,从而减少服务端的运算量和资源占用,由此有效地降低了服务端计算压力和平衡服务端的其它计算操作。

本发明并不局限于上述实施方式,如果对本发明的各种改动或变形不脱离本发明的精神和范围,倘若这些改动和变形属于本发明的权利要求和等同技术范围之内,则本发明也意图包含这些改动和变形。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号