发布日期:2024-09-01 浏览次数:次
本发明涉及计算机,具体而言,涉及一种角色移动的校验方法及装置、存储介质、电子装置。背景技术:1、相关技术中,mmorpg(大型多人在线角色扮演游戏,massive multiplayer onlinerole-playing game,)游戏都包含有大量的玩家之间交互性玩法,例如pvp战斗、资源争夺等,如果服务器不对玩家移动进行校验,玩家就可能利用作弊工具来加速移动、穿墙、飞天、进入正常玩家无法到达的区域等,从而严重影响游戏的公平性。2、相关技术中,大多数游戏出于性能或系统复杂度考虑,只在服务器对玩家移动进行粗略的校验。方案包括:(1)将场景体素化,然后基于体素数据完成对玩家移动校验;(2)基于场景高度图对速度、位置进行粗略的检查;(3)运行完整的物理引擎完成对玩家移动校验。3、基于场景体素数据的方案,虽然可以实现移动防作弊,但是由于对场景体素化的过程会损失大量的场景细节,所以移动表现会受影响。基于场景高度图的方案,由于缺少必要的场景信息,只能对速度、位置进行粗略检查,所以只能防止部分作弊的情况,无法有效的阻止玩家作弊。运行完整物理引擎的方案,虽然可以实现移动防作弊并且准确度较高,但是对系统性能消耗比较大,实际项目中很少使用。mmorpg游戏中的玩家移动采用客户端计算、服务器验证的方式,也就是客户端利用场景数据在每一帧中计算玩家的位置,然后按照一定的时间间隔(一般是50ms~500ms之间)发送玩家的移动数据至服务器,服务器利用场景数据对收到的玩家移动数据进行校验,如验证通过,则接受玩家移动,否则将玩家拉回至上一个位置。为了减少计算消耗,提高性能,需要对场景数据进行简化处理,并且客户端和服务器要使用同一份场景数据,这样才能保证校验的正确性,才能避免因校验结果错误产生错误拉回的情况。场景体素化的本质是对场景数据进行简化,以减少移动时的计算量。体素化过程中体素大小的选取直接影响体素数据的准确度,体素越小,体素数据越接近原始场景,但数据量越大、计算消耗越高。所以最后会平衡效果和性能进行折中选择,移动的表现也因体素数据的准确度问题而不是特别理想。只采用高度图进行校验时,因为服务器缺少必要的场景信息,所以不能对玩家移动进行完整的校验,这就留下了一些玩家可以利用的漏洞。4、针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。技术实现思路1、本发明实施例提供了一种角色移动的校验方法及装置、存储介质、电子装置。2、根据本发明的一个实施例,提供了一种角色移动的校验方法,包括:定位目标角色第一时间在游戏场景中的角色位置;判断所述角色位置是否高于所述游戏场景的地形,以及判断所述角色位置是否嵌入碰撞体内部;若所述角色位置高于所述游戏场景的地形,且所述角色位置未嵌入碰撞体内部,根据所述角色位置计算所述目标角色的位移量;根据所述位移量校验所述目标角色是否为合法移动。3、可选的,定位目标角色第一时间在游戏场景中的角色位置包括:定位所述目标角色的目标胶囊体;查找所述目标胶囊体第一时间在游戏场景中的三维坐标位置;将所述三维坐标位置确定为所述目标角色第一时间在游戏场景中的角色位置。4、可选的,在定位目标角色第一时间在游戏场景中的角色位置之前,所述方法还包括:获取所述游戏场景的地形数据和模型数据;采用所述地形数据和所述模型数据生成所述游戏场景的碰撞体集合;将所述游戏场景的水平面均匀分割为相同面积的单元网格;对所述碰撞体集合和所述单元网格进行重叠测试,并将含有碰撞体的单元网格保存为碰撞网格。5、可选的,对所述碰撞体集合和所述单元网格进行重叠测试,并将含有碰撞体的单元网格保存为碰撞网格,包括:遍历所述碰撞体集合中的每个碰撞体,对每个碰撞体执行以下操作:将当前碰撞体与每个单元网格进行重叠测试;若当前碰撞体与单元网格发生重叠,将当前碰撞体记录在重叠的单元网格中,得到碰撞网格;在遍历完成之后,读取所有碰撞网格,并根据碰撞网格所包含的碰撞体的空间分布参数构建所有碰撞网格的层次包围盒树。6、可选的,根据所述位移量校验所述目标角色是否为合法移动包括:获取所述目标角色第二时间在所述游戏场景中的历史位置,其中,所述第二时间是早于所述第一时间的前一校验点的历史时间;根据所述历史位置与所述角色位置计算所述目标角色从所述第二时间至所述第一时间的位移量;根据所述位移量校验所述目标角色是否为合法移动。7、可选的,根据所述位移量校验所述目标角色是否为合法移动包括:从所述位移量中提取水平位移分量和竖直位移分量;基于所述水平位移分量校验所述目标角色在水平方向是否为合法移动,基于所述竖直位移分量校验所述目标角色在竖直方向是否为合法移动;若所述目标角色在水平方向为合法移动,且所述目标角色在竖直方向为合法移动,确定所述目标角色为合法移动。8、可选的,基于所述竖直位移分量校验所述目标角色在竖直方向是否为合法移动包括:从所述角色位置向下进行碰撞测试,得到碰撞距离;判断所述碰撞距离是否小于预设阈值;若所述碰撞距离小于预设阈值,确定所述目标角色在竖直方向为合法移动;若所述碰撞距离大于或等于预设阈值,且所述竖直位移分量为正,获取所述目标角色的上升总时长和上升总高度,并计算上升速度,若所述上升总时长、所述上升总高度、所述上升速度均满足第一约束条件,确定所述目标角色在竖直方向为合法移动;若所述碰撞距离大于或等于预设阈值,且所述竖直位移分量为负,获取所述目标角色的下降总时长,并计算下降速度,若所述下降总时长、所述下降速度均满足第二约束条件,确定所述目标角色在竖直方向为合法移动。9、可选的,所述角色位置为目标胶囊体的三维坐标位置,从所述角色位置向下进行碰撞测试,得到碰撞距离包括:以所述目标胶囊体的三维坐标位置中的运动起始点和向下的运动终止点之间的连线为对角线构建胶囊体包围盒;确定与所述胶囊体包围盒发生重叠的碰撞网格列表,其中,所述碰撞网格列表包括多个包含碰撞体的单元网格,所述游戏场景的水平面由多个单元网格组成;对所述胶囊体包围盒与所述碰撞网格列表中的碰撞体包围盒进行碰撞检测,得到碰撞距离。10、可选的,确定与所述胶囊体包围盒发生重叠的碰撞网格列表包括:确定与所述胶囊体包围盒发生重叠的单元网格列表;分别计算所述起始胶囊体与所述单元网格列表中每个单元网格的距离,得到单元网格序列;在所述单元网格序列中筛选包含碰撞体的碰撞网格,得到碰撞网格列表。11、可选的,对所述胶囊体包围盒与所述碰撞网格列表中的碰撞网格进行碰撞检测,得到碰撞距离包括:针对所述碰撞网格列表中的每个碰撞体包围盒,判断当前碰撞体包围盒与所述胶囊体包围盒是否发生碰撞;若当前碰撞体包围盒与所述胶囊体包围盒发生碰撞;判断当前碰撞体与所述目标胶囊体是否发生碰撞;若当前碰撞体与所述目标胶囊体发生碰撞,记录碰撞距离。12、根据本发明的另一个实施例,提供了一种角色移动的校验装置,包括:定位模块,用于定位目标角色第一时间在游戏场景中的角色位置;判断模块,用于判断所述角色位置是否高于所述游戏场景的地形,以及判断所述角色位置是否嵌入碰撞体内部;计算模块,用于若所述角色位置高于所述游戏场景的地形,且所述角色位置未嵌入碰撞体内部,根据所述角色位置计算所述目标角色的位移量;校验模块,用于根据所述位移量校验所述目标角色是否为合法移动。13、可选的,所述定位模块包括:定位单元,用于定位所述目标角色的目标胶囊体;查找单元,用于查找所述目标胶囊体第一时间在游戏场景中的三维坐标位置;确定单元,用于将所述三维坐标位置确定为所述目标角色第一时间在游戏场景中的角色位置。14、可选的,所述装置还包括:获取模块,用于在所述定位模块定位目标角色第一时间在游戏场景中的角色位置之前,获取所述游戏场景的地形数据和模型数据;生成模块,用于采用所述地形数据和所述模型数据生成所述游戏场景的碰撞体集合;分割模块,用于将所述游戏场景的水平面均匀分割为相同面积的单元网格;保存模块,用于对所述碰撞体集合和所述单元网格进行重叠测试,并将含有碰撞体的单元网格保存为碰撞网格。15、可选的,所述保存模块包括:遍历单元,用于遍历所述碰撞体集合中的每个碰撞体,对每个碰撞体执行以下操作:将当前碰撞体与每个单元网格进行重叠测试;若当前碰撞体与单元网格发生重叠,将当前碰撞体记录在重叠的单元网格中,得到碰撞网格;构建单元,用于在遍历完成之后,读取所有碰撞网格,并根据碰撞网格所包含的碰撞体的空间分布参数构建所有碰撞网格的层次包围盒树。16、可选的,所述校验模块包括:获取单元,用于获取所述目标角色第二时间在所述游戏场景中的历史位置,其中,所述第二时间是早于所述第一时间的前一校验点的历史时间;计算单元,用于根据所述历史位置与所述角色位置计算所述目标角色从所述第二时间至所述第一时间的位移量;校验单元,用于根据所述位移量校验所述目标角色是否为合法移动。17、可选的,所述校验单元包括:提取子单元,用于从所述位移量中提取水平位移分量和竖直位移分量;校验子单元,用于基于所述水平位移分量校验所述目标角色在水平方向是否为合法移动,基于所述竖直位移分量校验所述目标角色在竖直方向是否为合法移动;确定子单元,用于若所述目标角色在水平方向为合法移动,且所述目标角色在竖直方向为合法移动,确定所述目标角色为合法移动。18、可选的,所述校验子单元还用于:从所述角色位置向下进行碰撞测试,得到碰撞距离;判断所述碰撞距离是否小于预设阈值;若所述碰撞距离小于预设阈值,确定所述目标角色在竖直方向为合法移动;若所述碰撞距离大于或等于预设阈值,且所述竖直位移分量为正,获取所述目标角色的上升总时长和上升总高度,并计算上升速度,若所述上升总时长、所述上升总高度、所述上升速度均满足第一约束条件,确定所述目标角色在竖直方向为合法移动;若所述碰撞距离大于或等于预设阈值,且所述竖直位移分量为负,获取所述目标角色的下降总时长,并计算下降速度,若所述下降总时长、所述下降速度均满足第二约束条件,确定所述目标角色在竖直方向为合法移动。19、可选的,所述角色位置为目标胶囊体的三维坐标位置,所述校验子单元还用于:以所述目标胶囊体的三维坐标位置中的运动起始点和向下的运动终止点之间的连线为对角线构建胶囊体包围盒;确定与所述胶囊体包围盒发生重叠的碰撞网格列表,其中,所述碰撞网格列表包括多个包含碰撞体的单元网格,所述游戏场景的水平面由多个单元网格组成;对所述胶囊体包围盒与所述碰撞网格列表中的碰撞体包围盒进行碰撞检测,得到碰撞距离。20、可选的,所述校验子单元还用于:确定与所述胶囊体包围盒发生重叠的单元网格列表;分别计算所述起始胶囊体与所述单元网格列表中每个单元网格的距离,得到单元网格序列;在所述单元网格序列中筛选包含碰撞体的碰撞网格,得到碰撞网格列表。21、可选的,所述校验子单元还用于包括:针对所述碰撞网格列表中的每个碰撞体包围盒,判断当前碰撞体包围盒与所述胶囊体包围盒是否发生碰撞;若当前碰撞体包围盒与所述胶囊体包围盒发生碰撞;判断当前碰撞体与所述目标胶囊体是否发生碰撞;若当前碰撞体与所述目标胶囊体发生碰撞,记录碰撞距离。22、根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。23、根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。24、通过本发明,定位目标角色第一时间在游戏场景中的角色位置,判断角色位置是否高于游戏场景的地形,以及判断角色位置是否嵌入碰撞体内部,若角色位置高于游戏场景的地形,且角色位置未嵌入碰撞体内部,根据角色位置计算目标角色的位移量,根据位移量校验目标角色是否为合法移动,能有效的防止玩家在移动时的作弊行为,通过计算目标角色的位移量,并根据位移量校验目标角色是否为合法移动,解决了相关技术校验角色移动的准确度低或效率低的技术问题,保证游戏场景中角色良好的移动表现,系统性能开销较小,对玩家营造了公平的游戏环境和良好的游戏生态。