本申请涉及游戏技术领域,特别涉及一种游戏中的动作同步方法、装置、电子设备及存储介质。
背景技术:
网络游戏的移动同步方式通常包含两种,一种是锁步同步(lockstep),一种是状态同步(statesynchronization),两种同步方式各有优劣。其中,对于状态同步来说,其同步的是游戏中的各种状态。一般的流程是客户端上传操作到服务器,服务器收到后计算游戏行为的结果,然后以广播的方式下发游戏中各种状态,客户端收到状态后再根据状态显示内容。
现有的基于状态同步实现网络游戏的移动同步时,针对动作类网络游戏来说,由于玩家对这类游戏的操作即时反馈要求十分苛刻,因此,一般通过客户端先行的方式,也即虚拟角色的移动位置在客户端提前更新,而不用等待服务端位置信息下发。
但现有的同步方式中,由于客户端和服务器之间的位置计算存在误差,因此,客户端和服务器中虚拟角色的位置存在不同步的问题。
技术实现要素:
本申请的目的在于,针对上述现有技术中的不足,提供一种游戏中的动作同步方法、装置、电子设备及存储介质,可以保证游戏客户端和服务器中虚拟角色位置的同步,提升游戏体验。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供了一种游戏中的动作同步方法,应用于游戏客户端,所述方法包括:
获取服务器下发的目标位置数据,所述目标位置数据包括:下发时间戳、虚拟角色的位置信息、帧间隔;
根据所述目标位置数据、所述虚拟角色的当前位置信息,获取本地位置校准参数,其中,所述虚拟角色的当前位置信息为游戏客户端根据当前帧数据预测的位置信息;
根据所述本地位置校准参数对所述虚拟角色的当前位置信息进行校准,获取所述虚拟角色校准后的位置信息。
可选地,所述获取服务器下发的目标位置数据,包括:
判断是否收到所述当前帧数据对应的位置数据;
若否,则将所述服务器最近一次下发的位置数据作为所述目标位置数据。
可选地,所述根据所述目标位置数据、所述虚拟角色的当前位置信息,获取本地位置校准参数,包括:
获取历史摇杆操作队列,所述摇杆操作队列包括:预设历史时长中的历史摇杆信息、所述历史摇杆信息对应的历史时间戳、帧间隔;
根据所述历史摇杆操作队列和所述目标位置数据,获取推演位置信息;
根据所述虚拟角色的当前位置信息和所述推演位置信息,获取所述本地位置校准参数。
可选地,所述根据所述虚拟角色的当前位置信息和所述推演位置信息,获取所述本地位置校准参数,包括:
计算获取所述虚拟角色的当前位置信息和所述推演位置信息之间的位置差值;
若确定所述位置差值大于预设第一预设阈值且小于第二预设阈值,根据第一预设校准算法获取所述本地位置校准参数;
若确定所述位置差值大于第二预设阈值,根据第二预设校准算法获取所述本地位置校准参数。
可选地,所述方法还包括:
若收到所述当前帧数据对应的位置数据,则根据所述当前帧数据对应的位置数据更新历史摇杆操作队列。
可选地,所述根据所述当前帧数据对应的位置数据更新历史摇杆操作队列,包括:
获取所述历史摇杆操作队列中存储的历史摇杆信息和帧间隔;
若确定所述历史摇杆信息的数量等于1,将所述帧间隔作为第一时间差;或,若确定所述历史摇杆信息的数量大于1,计算获取所述历史摇杆操作队列中连续两个历史摇杆信息对应的历史时间戳最小的时间差作为第一时间差;
获取所述历史摇杆操作队列中历史摇杆信息对应的历史时间戳,与所述当前帧数据对应的位置数据中时间戳之间最小的时间差作为第二时间差;
根据所述第一时间差和所述第二时间差,更新所述历史摇杆操作队列。
可选地,所述根据所述第一时间差和所述第二时间差,更新所述历史摇杆操作队列,包括:
获取所述第二时间差对应的历史摇杆信息,将所述历史摇杆信息对应的历史时间戳记为参考时间戳;
将历史摇杆操作队列中时间戳小于或等于所述参考时间戳的历史摇杆信息删除,获取更新后的所述历史摇杆操作队列。
可选地,所述获取服务器下发的目标位置数据之前,所述方法还包括:
若确定所述当前帧数据包括摇杆信息,将所述当前帧数据对应的当前摇杆信息加入所述历史摇杆操作队列中。
可选地,所述方法还包括:
若确定所述当前帧数据包括摇杆信息,根据所述当前帧数据包括的摇杆信息,获取所述虚拟角色的朝向参数;
根据所述朝向参数,调整所述虚拟角色的朝向。
可选地,所述根据所述朝向参数,调整所述虚拟角色的朝向,包括:
根据所述当前帧数据包括的摇杆信息,获取摇杆方向;
根据所述虚拟角色的当前朝向、所述摇杆方向、所述帧间隔、以及虚拟角色的预设转身角速度,调整所述虚拟角色的朝向。
可选地,所述方法还包括:
若确定所述当前帧数据包括摇杆信息,设置所述虚拟角色的运动状态为移动状态;或,若确定所述当前帧数据不包括摇杆信息,设置所述虚拟角色的运动状态为停止状态。
第二方面,本申请实施例提供了一种游戏中的动作同步装置,应用于游戏客户端,所述装置包括:第一获取模块、第二获取模块以及校准模块;
所述第一获取模块,用于获取服务器下发的目标位置数据,所述目标位置数据包括:下发时间戳、虚拟角色的位置信息、帧间隔;
所述第二获取模块,用于根据所述目标位置数据、所述虚拟角色的当前位置信息,获取本地位置校准参数,其中,所述虚拟角色的当前位置信息为游戏客户端根据当前帧数据预测的位置信息;
所述校准模块,用于根据所述本地位置校准参数对所述虚拟角色的当前位置信息进行校准,获取所述虚拟角色校准后的位置信息。
可选地,所述第一获取模块,具体用于判断是否收到所述当前帧数据对应的位置数据;若否,则将所述服务器最近一次下发的位置数据作为所述目标位置数据。
可选地,所述第二获取模块,具体用于获取历史摇杆操作队列,所述摇杆操作队列包括:预设历史时长中的历史摇杆信息、所述历史摇杆信息对应的历史时间戳、帧间隔;
根据所述历史摇杆操作队列和所述目标位置数据,获取推演位置信息;
根据所述虚拟角色的当前位置信息和所述推演位置信息,获取所述本地位置校准参数。
可选地,所述第二获取模块,具体用于计算获取所述虚拟角色的当前位置信息和所述推演位置信息之间的位置差值;
若确定所述位置差值大于预设第一预设阈值且小于第二预设阈值,根据第一预设校准算法获取所述本地位置校准参数;
若确定所述位置差值大于第二预设阈值,根据第二预设校准算法获取所述本地位置校准参数。
可选地,所述装置还包括:更新模块,用于若收到所述当前帧数据对应的位置数据,则根据所述当前帧数据对应的位置数据更新历史摇杆操作队列。
可选地,所述更新模块,具体用于获取所述历史摇杆操作队列中存储的历史摇杆信息和帧间隔;
若确定所述历史摇杆信息的数量等于1,将所述帧间隔作为第一时间差;或,若确定所述历史摇杆信息的数量大于1,计算获取所述历史摇杆操作队列中连续两个历史摇杆信息对应的历史时间戳最小的时间差作为第一时间差;
获取所述历史摇杆操作队列中历史摇杆信息对应的历史时间戳,与所述当前帧数据对应的位置数据中时间戳之间最小的时间差作为第二时间差;
根据所述第一时间差和所述第二时间差,更新所述历史摇杆操作队列。
可选地,所述更新模块,具体用于获取所述第二时间差对应的历史摇杆信息,将所述历史摇杆信息对应的历史时间戳记为参考时间戳;
将历史摇杆操作队列中时间戳小于或等于所述参考时间戳的历史摇杆信息删除,获取更新后的所述历史摇杆操作队列。
可选地,所述装置还包括:加入模块,用于若确定所述当前帧数据包括摇杆信息,将所述当前帧数据对应的当前摇杆信息加入所述历史摇杆操作队列中。
可选地,所述装置还包括:调整模块,用于若确定所述当前帧数据包括摇杆信息,根据所述当前帧数据包括的摇杆信息,获取所述虚拟角色的朝向参数;根据所述朝向参数,调整所述虚拟角色的朝向。
可选地,所述调整模块,具体用于根据所述当前帧数据包括的摇杆信息,获取摇杆方向;
根据所述虚拟角色的当前朝向、所述摇杆方向、所述帧间隔、以及虚拟角色的预设转身角速度,调整所述虚拟角色的朝向。
可选地,所述装置还包括,设置模块,用于若确定所述当前帧数据包括摇杆信息,设置所述虚拟角色的运动状态为移动状态;或,若确定所述当前帧数据不包括摇杆信息,设置所述虚拟角色的运动状态为停止状态。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行上述第一方面的游戏中的动作同步方法的步骤。
第四方面,本申请实施例提供了一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述第一方面的游戏中的动作同步方法的步骤。
本申请的有益效果是:
本申请实施例提供的游戏中的动作同步方法、装置、电子设备及存储介质,可以应用于游戏客户端,包括:获取服务器下发的目标位置数据,目标位置数据包括:下发时间戳、虚拟角色的位置信息、帧间隔;根据目标位置数据、虚拟角色的当前位置信息,获取本地位置校准参数,其中,虚拟角色的当前位置信息为游戏客户端根据当前帧数据预测的位置信息;根据本地位置校准参数对虚拟角色的当前位置信息进行校准,获取虚拟角色校准后的位置信息,应用本申请实施例,通过校准可以保证游戏客户端与服务器之间虚拟角色位置的同步,且在校准过程时,由于可以基于游戏客户端预测的虚拟角色的当前位置信息进行校准,因此,可以实现平滑回滚,使得对游戏客户端中虚拟角色的位置进行更新表现时,表现过程中可以减少同步带来的拉扯感,提升玩家体验。
基于上述实施例,可以看出,虽然游戏客户端中虚拟角色的移动是先行的,但是会根据服务器下发的目标位置数据进行虚拟角色位置的平滑回滚,如此保证了游戏客户端与服务器之间虚拟角色位置之间的同步,提升了游戏体验;且本申请所提供的游戏中的动作同步方法可以不改变服务器中游戏的运行逻辑,只优化游戏客户端的表现,具有实现简单的特点。
基于上述实施例,可以看出,虽然游戏客户端中虚拟角色的移动是先行的,但是会根据服务器下发的目标位置数据进行虚拟角色位置的平滑回滚,如此保证了游戏客户端与服务器之间虚拟角色位置之间的同步,提升了游戏体验;且本申请所提供的游戏中的动作同步方法可以不改变服务器中游戏的运行逻辑,只优化游戏客户端的表现,具有实现简单的特点。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种游戏中的动作同步方法的流程示意图;
图2为本申请实施例提供的另一种游戏中的动作同步方法的流程示意图;
图3为本申请实施例提供的又一种游戏中的动作同步方法的流程示意图;
图4为本申请实施例提供的另一种游戏中的动作同步方法的流程示意图;
图5为本申请实施例提供的又一种游戏中的动作同步方法的流程示意图;
图6为本申请实施例提供的另一种游戏中的动作同步方法的流程示意图;
图7为本申请实施例提供的又一种游戏中的动作同步方法的流程示意图;
图8为本申请实施例提供的一种游戏中的动作同步装置的功能模块示意图;
图9为本申请实施例提供的另一种游戏中的动作同步装置的功能模块示意图;
图10为本申请实施例提供的又一种游戏中的动作同步装置的功能模块示意图;
图11为本申请实施例提供的一种电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
网络游戏中,针对动作类网络游戏,一般地,玩家对这类游戏的操作即时反馈要求十分苛刻,一种直观的解决方案就是做客户端预测(client-sideprediction),也即客户端先行。
客户端先行按照虚拟角色的状态分为三种:移动先行、施法先行、结算先行。其中,移动先行是虚拟角色的移动位置在客户端提前更新,而不用等待服务端位置下发;施法先行是虚拟角色施法的可行性和表现效果在客户端提前判定和更新,而不用等待服务端施法状态下发;结算先行是虚拟角色攻击造成的伤害结算在客户端提前预测模拟,而不用等待服务端伤害结算下发。可以理解的是,虽然三种先行都是客户端本地提前进行预测,但后续收到服务端下发的状态,还是需要对本地状态和服务端校准状态进行调解(reconciliation),权衡客户端表现效果和真实逻辑状态。
一般情况下,在游戏开发中,移动先行相较于施法先行和结算先行在客户端的实际应用更多,因为施法先行和结算先行一旦预测失败,就是有和无的差别,如果进行状态回滚,体验会比较差;而移动先行即使预测失败,也只是虚拟角色位置的误差,因此,一种合理权衡的方案是:客户端移动先行,而施法和结算依赖服务端的判定。但是,现有的同步方式中,存在客户端和服务器中虚拟角色的位置存在不同步的问题。
有鉴于此,本申请实施例提供一种游戏中的动作同步方法,该方法可以保证游戏客户端和服务器之间虚拟角色位置的同步,提升游戏体验。
图1为本申请实施例提供的一种游戏中的动作同步方法的流程示意图,该方法可以应用于游戏客户端,该游戏客户端可以安装在移动终端、计算机、掌上电脑等游戏客户端设备上,该游戏客户端设备可以存储有游戏程序并用于呈现图形用户界面,该图形用户界面包括游戏画面,该游戏画面可以呈现玩家所控制的虚拟角色、非玩家角色(non-playercharacter,npc),比如,虚拟宠物、虚拟精灵等。如图1所示,该方法可以包括:
s101、获取服务器下发的目标位置数据,目标位置数据包括:下发时间戳、虚拟角色的位置信息、帧间隔。
其中,游戏客户端与服务器之间可以通过帧数据进行数据交互,交互过程中,根据玩家在游戏客户端中的操作,游戏客户端可以获取交互过程中的帧数据发送给服务器,服务器根据该帧数据可以下发相应的目标位置数据,该目标位置数据可以包括下发时间戳、虚拟角色的位置信息以及帧间隔。对于帧间隔来说,根据不同的应用场景,可以对应不同的参数,比如1/30ms、1/60ms等,本申请在此不作限定。
在一些实施例中,该目标位置数据可以是服务器根据当前帧数据预测的位置信息,也可以是根据历史帧数据预测的位置信息,在此不作限定。游戏客户端通过获取该目标位置数据则可以对虚拟角色的位置信息进行修正,实现游戏客户端和服务器中虚拟角色位置的同步。
s102、根据目标位置数据、虚拟角色的当前位置信息,获取本地位置校准参数,其中,虚拟角色的当前位置信息为游戏客户端根据当前帧数据预测的位置信息。
在一些实施例中,当前帧数据可以包括相应的摇杆信息,摇杆信息可以通过玩家操控虚拟摇杆对象产生,虚拟摇杆对象可以位于图形用户界面中,玩家通过操控该虚拟摇杆对象可以操控游戏中虚拟角色的转向、移动等,当然,上述游戏客户端设备也可以外接其他输入设备,比如,键盘、鼠标、游戏手柄等,则摇杆信息可以通过玩家操控键盘、鼠标、游戏手柄等产生,本申请在此不作限定。
可选地,摇杆信息通过玩家操控虚拟摇杆对象产生时,该摇杆信息可以包括虚拟摇杆偏移摇杆中心的偏移值,其可以是一个-180°至180°之间的任意角度值;又或者,摇杆信息通过操控键盘、鼠标、游戏手柄等产生时,该摇杆信息可以包括键盘按键值、鼠标信号、游戏手柄的输入指令等,本申请在此不作限定。
其中,虚拟角色的当前位置信息为游戏客户端根据当前帧数据预测的位置信息,使得在高延迟网络环境下,可以提高游戏客户端中虚拟角色的移动对摇杆操作的响应速度,提升游戏体验。
可以理解的是,游戏客户端获取到服务器下发的目标位置数据时,则可以根据该目标位置数据和该虚拟角色的当前位置信息,获取本地位置校准参数,该本地位置校准参数可以用于在虚拟角色的当前位置信息的基础上对虚拟角色的位置进行校准,实现游戏客户端和服务器中虚拟角色位置的同步。
s103、根据本地位置校准参数对虚拟角色的当前位置信息进行校准,获取虚拟角色校准后的位置信息。
可选地,本地位置校准参数可以对应一位置校准向量,对于游戏客户端来说,游戏客户端可以根据上述计算得到的本地位置校准参数对该虚拟角色的当前位置信息进行校准,也即可以在游戏客户端预测的虚拟角色的当前位置信息的基础上进行校准,实现平滑回滚。在一些可选的实施例中,可以将虚拟角色的当前位置与该本地位置校准参数对应的位置校准向量进行相加,从而得到虚拟角色校准后的位置,但不以此为限。
举例说明,假设虚拟角色的当前位置信息为pa,本地位置校准参数为pb,在一些实施例中,虚拟角色校准后的位置信息可以为pc=pa+pb,但实际更新方式并不以此为限,根据实际的应用场景可以灵活设置,使得游戏客户端中虚拟角色校准后的位置信息可以与服务器中计算的虚拟角色的位置信息保持一致,从而保证游戏客户端与服务器之间虚拟角色位置的同步。可以理解的是,由于在进行校准时,可以基于游戏客户端预测的虚拟角色的当前位置信息进行校准,因此,对于游戏客户端来说,对游戏客户端中虚拟角色的位置进行更新表现时,表现过程中可以减少同步带来的拉扯感,提升玩家体验。
综上,本申请实施例提供一种游戏中的动作同步方法,该方法可以应用于游戏客户端,该方法包括:获取服务器下发的目标位置数据,目标位置数据包括:下发时间戳、虚拟角色的位置信息、帧间隔;根据目标位置数据、虚拟角色的当前位置信息,获取本地位置校准参数,其中,虚拟角色的当前位置信息为游戏客户端根据当前帧数据预测的位置信息;根据本地位置校准参数对虚拟角色的当前位置信息进行校准,获取虚拟角色校准后的位置信息,应用本申请实施例,通过校准可以保证游戏客户端与服务器之间虚拟角色位置的同步,且在校准过程时,由于可以基于游戏客户端预测的虚拟角色的当前位置信息进行校准,因此,可以实现平滑回滚,使得对游戏客户端中虚拟角色的位置进行更新表现时,表现过程中可以减少同步带来的拉扯感,提升玩家体验。
基于上述实施例,可以看出,虽然游戏客户端中虚拟角色的移动是先行的,但是会根据服务器下发的目标位置数据进行虚拟角色位置的平滑回滚,如此保证了游戏客户端与服务器之间虚拟角色位置之间的同步,提升了游戏体验;且本申请所提供的游戏中的动作同步方法可以不改变服务器中游戏的运行逻辑,只优化游戏客户端的表现,具有实现简单的特点。
可选地,上述获取服务器下发的目标位置数据,包括:
判断是否收到所述当前帧数据对应的位置数据;若否,则将所述服务器最近一次下发的位置数据作为所述目标位置数据。
其中,游戏客户端可以通过判断是否收到了当前帧数据对应的位置信息来确定目标位置数据,若未收到,则可以将服务器最近一次下发的位置数据作为该目标位置数据。可选地,该服务器最近一次下发的位置数据可以是当前帧数据的上一帧数据对应的位置数据,也可以是当前帧数据之前的任一历史帧数据对应的位置数据,本申请在此不作限定。
图2为本申请实施例提供的另一种游戏中的动作同步方法的流程示意图。可选地,如图2所示,上述根据目标位置数据、虚拟角色的当前位置信息,获取本地位置校准参数,包括:
s201、获取历史摇杆操作队列。
摇杆操作队列包括:预设历史时长中的历史摇杆信息、历史摇杆信息对应的历史时间戳、帧间隔。
其中,游戏客户端中的历史摇杆操作队列可以用于存储一定时长中历史摇杆操作的相关信息,例如该历史摇杆操作队列可以包括预设历史时长中的历史摇杆信息、历史摇杆信息对应的历史时间戳、帧间隔,根据实际的应用场景,该预设历史时长可以是:1分钟、2分钟、5分钟等,在此不作限定,当然,也不限定该预设历史时长中的历史摇杆信息的数量,可选地,可以是5个、10个等,在此不作限定。
s202、根据历史摇杆操作队列和目标位置数据,获取推演位置信息。
可选地,获取推演位置信息时,可以根据历史摇杆操作队列,以目标位置数据为起点按照时间顺序依次进行位置推演,以得到新的位置,该新的位置对应的位置信息可以记为推演位置信息。
举例说明,比如,历史摇杆操作队列中包括历史摇杆信息x1、历史摇杆信息x2、历史摇杆信息x3,且其对应的时间戳分别是,t1、t2及t3,且t3>t2>t1,也即t1对应的历史摇杆信息x1是最先存储的,t3对应的历史摇杆信息x3是最新存储的,而目标位置数据p1是历史摇杆信息x1对应的位置信息,则游戏客户端可以根据本地的推演算法来获取推演位置p。可选地,推演位置p可以表示为p=p1+x2*预设速度+x3*预设速度,当然,根据实际的应用场景,推演方式并不以此为限。
s203、根据虚拟角色的当前位置信息和推演位置信息,获取本地位置校准参数。
其中,虚拟角色的当前位置信息为游戏客户端根据当前帧数据预测的位置信息,推演位置信息为游戏客户端根据历史摇杆操作队列和目标位置数据所获取的位置信息,则根据该虚拟角色的当前位置信息和该推演位置信息可以获取本地位置校准参数,使得基于该本地位置校准参数可以将虚拟角色的当前位置向获取的推演位置进行平滑过渡,减少游戏客户端虚拟角色位置同步带来的拉扯感,实现平滑过渡,保证了游戏客户端与服务器之间虚拟角色位置的同步,提升游戏体验。
图3为本申请实施例提供的又一种游戏中的动作同步方法的流程示意图。可选地,如图3所示,上述根据虚拟角色的当前位置信息和推演位置信息,获取本地位置校准参数,包括:
s301、计算获取虚拟角色的当前位置信息和推演位置信息之间的位置差值。
s302、若确定位置差值大于预设第一预设阈值且小于第二预设阈值,根据第一预设校准算法获取本地位置校准参数。
s303、若确定位置差值大于第二预设阈值,根据第二预设校准算法获取本地位置校准参数。
其中,计算本地位置校准参数时,可以根据虚拟角色的当前位置信息和推演位置信息之间的位置差值来进行校准,可选地,可以将该位置差值和第一预设阈值、第二预设阈值进行比较,根据比较结果来确定是否进行位置校准,以及,若进行位置校准时,如何获取本地位置校准参数。
可选地,本地位置校准参数可以用位置校准向量来表示,若该位置差值小于第一预设阈值,则可令该位置校准向量为零向量,说明无需进行位置校准;若该位置差值大于预设第一预设阈值且小于第二预设阈值,则可以根据第一预设校准算法获取位置校准向量,比如,位置校准向量=虚拟角色的预设移动速度v*帧间隔dt*固定系数r1;若该位置差值大于第二预设阈值,则可以根据第二预设校准算法获取位置校准向量,比如,位置校准向量=位置差值d*固定系数r2。其中,固定系数r2的取值可以大于固定系数r1,在一些实施例中,r1可以取0至0.2之间的任意值,以使根据第一预设校准算法计算的本地位置校准参数可以用于虚拟角色位置的微调;r2可以取较大的值(比如,1~2之间的任意值),以使根据第二预设校准算法计算的本地位置校准参数可以应对特殊情况,实现虚拟角色位置的强制回滚,本申请在此并不对r1和r2的取值进行限定,根据实际的应用场景可以灵活设置;对于虚拟角色的预设移动速度v来说,根据不同的游戏场景可以有所不同,比如,根据玩家的游戏等级,游戏等级较高时,该虚拟角色的预设移动速度v可以较大,游戏等级较低时,该虚拟角色的预设移动速度v可以较小,但不以此为限;对于帧间隔来说,根据不同的游戏场景也可以有所不同,比如,30帧率的游戏帧间隔是1/30ms,即约为33.3ms;60帧率的游戏帧间隔是1/60ms,即约为16.7ms。
可选地,上述方法还包括:
若收到当前帧数据对应的位置数据,则根据当前帧数据对应的位置数据更新历史摇杆操作队列。
其中,若游戏客户端收到了服务器下发的当前帧数据对应的位置数据,则可以根据该当前帧数据对应的位置数据来更新历史摇杆操作队列,使得可以将历史摇杆操作队列中历史时戳较早的历史摇杆信息进行删除,以便后续游戏客户端产生新的摇杆信息时,可以通过该历史摇杆操作队列进行存储。
图4为本申请实施例提供的另一种游戏中的动作同步方法的流程示意图。可选地,如图4所示,上述根据当前帧数据对应的位置数据更新历史摇杆操作队列,包括:
s501、获取历史摇杆操作队列中存储的历史摇杆信息和帧间隔。
s502、若确定历史摇杆信息的数量等于1,将帧间隔作为第一时间差;或,若确定历史摇杆信息的数量大于1,计算获取历史摇杆操作队列中连续两个历史摇杆信息对应的历史时间戳最小的时间差作为第一时间差。
其中,可以获取历史摇杆操作队列中存储的历史摇杆信息和帧间隔,根据历史摇杆信息的数量的不同,可采用不同的方式计算第一时间差。可选地,若历史摇杆信息的数量等于1,也即该历史摇杆信息只包括当前帧数据对应的当前摇杆信息,则可以将帧间隔作为第一时间差(也即当前帧数据与上一帧数据之间的时间差);而若历史摇杆信息的数量大于1,则说明历史摇杆操作队列中除过当前帧数据对应的当前摇杆信息之外,还包括其他历史摇杆信息,则可以计算历史摇杆操作队列中连续两个历史摇杆信息对应的历史时间戳之间的时间差,将其中最小的时间差作为第一时间差。
s503、获取历史摇杆操作队列中历史摇杆信息对应的历史时间戳,与当前帧数据对应的位置数据中时间戳之间最小的时间差作为第二时间差。
s504、根据第一时间差和第二时间差,更新历史摇杆操作队列。
其中,可以计算历史摇杆操作队列中每个历史摇杆信息对应的历史时间戳,与当前帧数据对应的位置数据中的时间戳之间的时间差,并将最小的时间差作为第二时间差,根据上述第一时间差和该第二时间差来更新历史摇杆操作队列。
图5为本申请实施例提供的又一种游戏中的动作同步方法的流程示意图。可选地,如图5所示,上述根据第一时间差和第二时间差,更新历史摇杆操作队列,包括:
s601、获取第二时间差对应的历史摇杆信息,将历史摇杆信息对应的历史时间戳记为参考时间戳。
s602、将历史摇杆操作队列中时间戳小于或等于参考时间戳的历史摇杆信息删除,获取更新后的历史摇杆操作队列。
其中,第二时间差对应的历史摇杆信息,也即该历史摇杆信息对应的历史时间戳与当前帧数据对应的下发时间戳之间的时间差最小,对于该历史摇杆信息,可以将该历史摇杆信息对应的历史时间戳记为参考时间戳。
举例说明,历史摇杆操作队列中包括历史摇杆信息x1、历史摇杆信息x2、历史摇杆信息x3,且其对应的时间戳分别是t1、t2及t3,且t3>t2>t1,也即t1对应的历史摇杆信息x1是最先存储的,t3对应的历史摇杆信息x3是最新存储的,当前帧数据对应的下发时间戳为tx,若经计算确定时间戳t2与时间戳tx之间的时间差最小,那么,可以将该时间戳t2记为参考时间戳,而历史摇杆信息x2则为第二时间差对应的历史摇杆信息。
基于上述实施例的基础上,则可以将历史摇杆操作队列中时间戳小于或等于该参考时间戳的历史摇杆信息删除,如此,可以将历史摇杆操作队列中历史时戳较早的历史摇杆信息进行删除,从而获取更新后的历史摇杆操作队列。
可选地,获取服务器下发的目标位置数据之前,上述方法还包括:
若确定当前帧数据包括摇杆信息,将当前帧数据对应的当前摇杆信息加入历史摇杆操作队列中。
可以理解的是,对于游戏客户端来说,游戏客户端生成了当前帧数据,若确定该当前帧数据包括摇杆信息,则可以将该当前帧数据对应的当前摇杆信息加入历史摇杆操作队列中,使得在生成新的摇杆信息时,可以通过历史摇杆操作队列进行存储。
图6为本申请实施例提供的另一种游戏中的动作同步方法的流程示意图。可选地,如图6所示,上述方法还包括:
s801、若确定当前帧数据包括摇杆信息,根据当前帧数据包括的摇杆信息,获取虚拟角色的朝向参数。
s802、根据朝向参数,调整虚拟角色的朝向。
其中,若当前帧数据包括摇杆信息,则可以根据该摇杆信息获取虚拟角色的朝向参数,进而根据该朝向参数,可以调整虚拟角色的朝向,实现虚拟角色转向的先行,使得在高延迟网络环境下,可以提高游戏客户端中虚拟角色的转向对摇杆的响应速度,实现即时响应,提升游戏体验。
图7为本申请实施例提供的又一种游戏中的动作同步方法的流程示意图。可选地,如图7所示,上述根据朝向参数,调整虚拟角色的朝向,包括:
s901、根据当前帧数据包括的摇杆信息,获取摇杆方向。
s902、根据虚拟角色的当前朝向、摇杆方向、帧间隔、以及虚拟角色的预设转身角速度,调整虚拟角色的朝向。
其中,可以根据当前帧数据包括的摇杆信息,获取该摇杆信息对应的摇杆方向,进而根据该摇杆方向,虚拟角色的当前朝向、帧间隔以及虚拟角色的预设转身角速度可以调整虚拟角色的朝向,获取调整后的虚拟角色的朝向,使得在高延迟网络环境下,可以提高游戏客户端中虚拟角色的转向对摇杆的响应速度,实现即时响应。其中,对于虚拟角色的预设转身角速度(即转身速率),根据不同的应用场景可以有所不同。
可选地,可以采用下述方式进行调整,其中,记摇杆方向为ot、虚拟角色的当前朝向为os、则调整后的虚拟角色的朝向可以为min(ot-os,虚拟角色的预设转身角速度w*本帧时间间隔dt),也即可以为这两者之间的最小值;此外,还需要说明的是,若当前帧数据不包括摇杆信息,则ot的值可以为游戏客户端最近一次摇杆信息对应的摇杆方向,采用上述相同的计算过程可以获取调整后的虚拟角色的朝向,当然,实际计算方式并不以此为限。
可选地,上述方法还包括:
若确定当前帧数据包括摇杆信息,设置虚拟角色的运动状态为移动状态;或,若确定当前帧数据不包括摇杆信息,设置虚拟角色的运动状态为停止状态。
可以理解的是,当前帧数据包括摇杆信息,则表征玩家操控了虚拟摇杆对象、键盘、鼠标、游戏手柄等,因此,若确定当前帧数据包括摇杆信息,可以设置虚拟角色的运动状态为移动状态;而若当前帧数据不包括摇杆信息,则表征玩家未操控虚拟摇杆对象、键盘、鼠标、游戏手柄等(比如,移动刚停止或移动尚未开始),因此,此时可以设置虚拟角色的运动状态为停止状态。通过上述设置,可以实现虚拟角色移动动画的先行,实现即时响应,为控制虚拟角色的下一步移动作好准备,也使得在高延迟网络环境下,玩家的摇杆操作能够及时获得响应,提高玩家的游戏操作手感。
其中,关于移动状态和停止状态,需要说明的是,移动状态对应的可以是一个基础的移动动作,比如,可以是原地步行的动作;停止状态对应的可以是一个不作任何移动的动作,比如,可以是原地静止的动作,但不以此为限。
图8为本申请实施例提供的一种游戏中的动作同步装置的功能模块示意图,该装置可以应用于游戏客户端,该装置基本原理及产生的技术效果与前述对应的方法实施例相同,为简要描述,本实施例中未提及部分,可参考方法实施例中的相应内容。如图8所示,该游戏中的动作同步装置100包括:第一获取模块110、第二获取模块120以及校准模块130。
第一获取模块110,用于获取服务器下发的目标位置数据,目标位置数据包括:下发时间戳、虚拟角色的位置信息、帧间隔;
第二获取模块120,用于根据目标位置数据、虚拟角色的当前位置信息,获取本地位置校准参数,其中,虚拟角色的当前位置信息为游戏客户端根据当前帧数据预测的位置信息;
校准模块130,用于根据本地位置校准参数对虚拟角色的当前位置信息进行校准,获取虚拟角色校准后的位置信息。
可选地,第一获取模块110,具体用于判断是否收到当前帧数据对应的位置数据;若否,则将服务器最近一次下发的位置数据作为目标位置数据。
可选地,第二获取模块120,具体用于获取历史摇杆操作队列,摇杆操作队列包括:预设历史时长中的历史摇杆信息、历史摇杆信息对应的历史时间戳、帧间隔;
根据历史摇杆操作队列和目标位置数据,获取推演位置信息;
根据虚拟角色的当前位置信息和推演位置信息,获取本地位置校准参数。
可选地,第二获取模块120,具体用于计算获取所述虚拟角色的当前位置信息和所述推演位置信息之间的位置差值;
若确定所述位置差值大于预设第一预设阈值且小于第二预设阈值,根据第一预设校准算法获取所述本地位置校准参数;
若确定所述位置差值大于第二预设阈值,根据第二预设校准算法获取所述本地位置校准参数。
图9为本申请实施例提供的另一种游戏中的动作同步装置的功能模块示意图。可选地,如图9所示,游戏中的动作同步装置100还包括:更新模块140,用于若收到所述当前帧数据对应的位置数据,则根据所述当前帧数据对应的位置数据更新历史摇杆操作队列。
可选地,所述更新模块140,具体用于获取所述历史摇杆操作队列中存储的历史摇杆信息和帧间隔;
若确定所述历史摇杆信息的数量等于1,将所述帧间隔作为第一时间差;或,若确定所述历史摇杆信息的数量大于1,计算获取所述历史摇杆操作队列中连续两个历史摇杆信息对应的历史时间戳最小的时间差作为第一时间差;
获取所述历史摇杆操作队列中历史摇杆信息对应的历史时间戳,与所述当前帧数据对应的位置数据中时间戳之间最小的时间差作为第二时间差;
根据所述第一时间差和所述第二时间差,更新所述历史摇杆操作队列。可选地,所述更新模块,具体用于获取所述第二时间差对应的历史摇杆信息,将所述历史摇杆信息对应的历史时间戳记为参考时间戳;
将历史摇杆操作队列中时间戳小于或等于所述参考时间戳的历史摇杆信息删除,获取更新后的所述历史摇杆操作队列。
图10为本申请实施例提供的又一种游戏中的动作同步装置的功能模块示意图。可选地,如图10所示,游戏中的动作同步装置100还包括:加入模块160,用于若确定所述当前帧数据包括摇杆信息,将所述当前帧数据对应的当前摇杆信息加入所述历史摇杆操作队列中。
可选地,如图10所示,游戏中的动作同步装置100还包括:调整模块180,用于若确定所述当前帧数据包括摇杆信息,根据所述当前帧数据包括的摇杆信息,获取所述虚拟角色的朝向参数;根据所述朝向参数,调整所述虚拟角色的朝向。
可选地,所述调整模块,具体用于根据所述当前帧数据包括的摇杆信息,获取摇杆方向;
根据所述虚拟角色的当前朝向、所述摇杆方向、所述帧间隔、以及虚拟角色的预设转身角速度,调整所述虚拟角色的朝向。
可选地,所述装置还包括,设置模块,用于若确定所述当前帧数据包括摇杆信息,设置所述虚拟角色的运动状态为移动状态;或,若确定所述当前帧数据不包括摇杆信息,设置所述虚拟角色的运动状态为停止状态。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,简称asic),或,一个或多个微处理器(digitalsignalprocessor,简称dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。
图11为本申请实施例提供的一种电子设备结构示意图。如图11所示,该电子设备可以包括:处理器210、存储介质220和总线230,存储介质220存储有处理器210可执行的机器可读指令,当电子设备运行时,处理器210与存储介质220之间通过总线230通信,处理器210执行机器可读指令,以执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。
可选地,本申请还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。