生成帧数据的方法及装置、存储介质、计算机设备
文献发布时间:2023-06-19 10:05:17
技术领域
本申请涉及计算机技术领域,尤其是涉及到一种生成帧数据的方法及装置、存储介质、计算机设备。
背景技术
在传统的MMORPG游戏(multiplayer online role-playing game,大型多人在线角色扮演游戏)中,有大量的多人协同的玩法(比如多人副本,多人任务,大型游戏战场等),这些玩法有一个共同点:需要多人同时前往一个起始点开启玩法,在前往玩法的起始点的过程中往往需要经历一段漫长的路程,在这段赶路的过程中,通常都是非常枯燥乏味的,乏味的过程会大大降低玩家的游戏体验,然而这种赶路经历在游戏中并不少见,所以如何提高玩家在进入各个玩法中赶路的游戏体验变得非常重要。
随着游戏社交需求以及个人认同需求的快速发展,现有多数游戏采用了提供跟随功能来提升玩家体验,近一段时间游戏里跟随玩法呈现爆发性增长。当前比较普遍的移动跟随玩法的解决方案为:当第二角色需要跟随第一角色时,第一角色客户端会根据第一角色的移动路径确定第二角色的跟随路径,并由第一角色客户端将跟随路径发送给服务器,再由服务器转发到第二角色客户端中,第二角色客户端根据接收到的跟随路径控制第二角色移动,以展示第二角色对第一角色的跟随效果。上述解决方案存在两个缺陷:第一,跟随路径由第一角色客户端计算,客户端存在性能压力,容易导致客户端卡顿以及表现缺失;第二,第二角色只能完全跟随第一角色的移动轨迹,若第一角色移动存在卡顿、忽快忽慢等效果,第二角色的跟随第一角色的效果,表现力较差,第三,玩家无法对游戏内的NPC角色实现跟随。
综上,以上跟随方案存在的缺陷急需解决。
发明内容
有鉴于此,本申请提供了一种生成帧数据的方法及装置、存储介质、计算机设备。
根据本申请的一个方面,提供了一种生成帧数据的方法,应用于服务器,包括:
获取目标对象对应的目标移动路径帧数据,并根据跟随对象对应的预设跟随帧数差以及所述目标移动路径帧数据,确定所述跟随对象对应的同步跟随数据帧,其中,所述同步跟随数据帧对应的跟随帧时间与目标数据帧对应的目标帧时间相同,所述同步跟随数据帧对应的跟随帧位置基于与相应的所述目标数据帧对应的目标跟随帧的位置确定,所述目标跟随帧为所述目标数据帧前向相差所述预设跟随帧数差的数据帧;
基于所述目标移动路径帧数据对应的位置进行插值处理,确定所述跟随对象对应的异步跟随数据帧;
根据所述同步跟随数据帧以及所述异步跟随数据帧,生成所述跟随对象对应的跟随移动路径帧数据。
具体地,所述异步跟随数据帧包括初始跟随数据帧;所述确定所述跟随对象对应的异步跟随数据帧,具体包括:
获取所述目标移动路径帧数据中第一目标数据帧对应的第一目标帧位置和第一目标帧时间,以及获取所述跟随对象的第一跟随帧位置,其中,所述第一目标数据帧为所述目标移动路径帧数据中的第一帧;
基于所述第一目标帧位置以及所述第一跟随帧位置做插值,得到与所述预设跟随帧数差数量匹配的初始跟随帧位置;
标注所述初始跟随帧位置对应的初始跟随帧时间,确定跟随移动路径帧数据中的所述初始跟随数据帧,其中,第一个初始跟随帧时间为所述第一目标帧时间。
具体地,所述异步跟随数据帧包括起步跟随数据帧;所述确定所述跟随对象对应的异步跟随数据帧,具体包括:
获取所述目标移动路径帧数据中第一目标数据帧对应的第一目标帧位置和第二目标数据帧对应的第二目标帧位置,其中,所述第二目标数据帧为所述第一目标数据帧之后相差所述预设跟随帧数差数量的数据帧;
基于所述第一目标帧位置以及所述第二目标帧位置做插值,得到与所述预设跟随帧数差数量匹配的起步跟随帧位置,其中,所述起步跟随帧位置包括所述第二目标帧位置;
根据所述第一目标帧时间和第二目标帧时间标注所述起步跟随帧位置对应的起步跟随帧时间,确定所述跟随移动路径帧数据中的起步跟随帧数据。
具体地,所述基于所述第一目标帧位置以及所述第二目标帧位置做插值之前,所述方法还包括:
获取所述第一目标数据帧与所述第二目标数据帧对应的全部的起步目标帧位置;
若所述起步目标帧位置存在重复,则基于所述第一目标帧位置以及所述第二目标帧位置做插值。
具体地,所述目标移动路径帧数据包含的每个目标数据帧还对应有目标帧状态,所述同步跟随数据帧对应的跟随帧状态为时间同步的所述目标数据帧之前相差所述预设跟随帧数差的目标数据帧对应的目标帧状态。
具体地,所述目标移动路径帧数据包括的每个目标数据帧还对应有目标帧速度,所述异步跟随数据帧包括停步跟随数据帧;所述确定所述跟随对象对应的异步跟随数据帧,具体包括:
当所述目标数据帧中的任意一个第三目标数据帧对应的目标帧速度为零时,获取所述第三目标数据帧之前与所述预设跟随帧数差数量相当的停步目标数据帧对应的停步目标帧状态;
当所述停步目标帧状态包括多个时,获取状态发生变化的第四目标数据帧,并确定所述第四目标数据帧对应的第四目标帧位置;
根据所述第三目标数据帧对应的第三目标帧时间,获取时间同步的同步跟随数据帧对应的第二跟随帧位置;
基于所述第二跟随帧位置与所述第四目标帧位置之间的距离,确定所述跟随对象对应的所述停步跟随数据帧。
具体地,所述确定所述跟随对象对应的所述停步跟随数据帧,具体包括:
若所述第二跟随帧位置与所述第四目标帧位置之间的距离小于或等于预设停步跟随距离,则将所述第四目标帧位置作为所述跟随对象的第一停步位置,并根据所述第二跟随帧位置以及所述第一停步位置确定所述停步跟随数据帧。
具体地,所述确定所述跟随对象对应的所述停步跟随数据帧,具体包括:
若所述第二跟随帧位置与所述第四目标帧位置之间的距离大于预设停步跟随距离,则基于所述第三目标数据帧对应的第三目标帧位置确定所述跟随对象的第二停步位置,并根据所述第二跟随帧位置以及所述第二停步位置确定所述停步跟随数据帧。
具体地,若所述跟随对象包括多个,则所述获取目标对象对应的目标移动路径帧数据之前,所述方法还包括:
分别确定每个所述跟随对象的跟随顺序,并按照所述跟随顺序分别确定每个所述跟随对象对应的预设跟随帧数差;
所述生成所述跟随对象对应的跟随移动路径帧数据之后,所述方法还包括:
将所述跟随移动路径帧数据发送至与多个所述跟随对象各自对应的跟随终端中。
根据本申请的另一方面,提供了一种生成帧数据的装置,应用于服务器,包括:
同步跟随帧确定模块,用于获取目标对象对应的目标移动路径帧数据,并根据跟随对象对应的预设跟随帧数差以及所述目标移动路径帧数据,确定所述跟随对象对应的同步跟随数据帧,其中,所述同步跟随数据帧对应的跟随帧时间与目标数据帧对应的目标帧时间相同,所述同步跟随数据帧对应的跟随帧位置基于与相应的所述目标数据帧对应的目标跟随帧的位置确定,所述目标跟随帧为所述目标数据帧前向相差所述预设跟随帧数差的数据帧;
异步跟随帧确定模块,用于基于所述目标移动路径帧数据对应的位置进行插值处理,确定所述跟随对象对应的异步跟随数据帧;
跟随帧数据生成模块,用于根据所述同步跟随数据帧以及所述异步跟随数据帧,生成所述跟随对象对应的跟随移动路径帧数据。
具体地,所述异步跟随数据帧包括初始跟随数据帧;所述异步跟随帧确定模块,具体包括:
初始帧时间获取单元,用于获取所述目标移动路径帧数据中第一目标数据帧对应的第一目标帧位置和第一目标帧时间,以及获取所述跟随对象的第一跟随帧位置,其中,所述第一目标数据帧为所述目标移动路径帧数据中的第一帧;
初始帧位置确定单元,用于基于所述第一目标帧位置以及所述第一跟随帧位置做插值,得到与所述预设跟随帧数差数量匹配的初始跟随帧位置;
初始跟随帧确定单元,用于标注所述初始跟随帧位置对应的初始跟随帧时间,确定跟随移动路径帧数据中的所述初始跟随数据帧,其中,第一个初始跟随帧时间为所述第一目标帧时间。
具体地,所述异步跟随数据帧包括起步跟随数据帧;所述异步跟随帧确定模块,具体包括:
第一起步帧数据获取单元,用于获取所述目标移动路径帧数据中第一目标数据帧对应的第一目标帧位置和第二目标数据帧对应的第二目标帧位置,其中,所述第二目标数据帧为所述第一目标数据帧之后相差所述预设跟随帧数差数量的数据帧;
起步帧位置确定单元,用于基于所述第一目标帧位置以及所述第二目标帧位置做插值,得到与所述预设跟随帧数差数量匹配的起步跟随帧位置,其中,所述起步跟随帧位置包括所述第二目标帧位置;
起步帧数据确定单元,用于根据所述第一目标帧时间和第二目标帧时间标注所述起步跟随帧位置对应的起步跟随帧时间,确定所述跟随移动路径帧数据中的起步跟随帧数据。
具体地,所述跟随数据帧确定模块还包括:
第二起步帧数据获取单元,用于基于所述第一目标帧位置以及所述第二目标帧位置做插值之前,获取所述第一目标数据帧与所述第二目标数据帧对应的全部的起步目标帧位置;
起步判断单元,用于若所述起步目标帧位置存在重复,则基于所述第一目标帧位置以及所述第二目标帧位置做插值。
具体地,所述目标移动路径帧数据包含的每个目标数据帧还对应有目标帧状态,所述同步跟随数据帧对应的跟随帧状态为时间同步的所述目标数据帧之前相差所述预设跟随帧数差的目标数据帧对应的目标帧状态。
具体地,所述目标移动路径帧数据包括的每个目标数据帧还对应有目标帧速度,所述异步跟随数据帧包括停步跟随数据帧;所述异步跟随帧确定模块,具体包括:
停步帧状态获取单元,用于当所述目标数据帧中的任意一个第三目标数据帧对应的目标帧速度为零时,获取所述第三目标数据帧之前与所述预设跟随帧数差数量相当的停步目标数据帧对应的停步目标帧状态;
状态切换帧获取单元,用于当所述停步目标帧状态包括多个时,获取状态发生变化的第四目标数据帧,并确定所述第四目标数据帧对应的第四目标帧位置;
停步帧位置获取单元,用于根据所述第三目标数据帧对应的第三目标帧时间,获取时间同步的同步跟随数据帧对应的第二跟随帧位置;
停步跟随帧确定单元,用于基于所述第二跟随帧位置与所述第四目标帧位置之间的距离,确定所述跟随对象对应的停步跟随数据帧。
具体地,所述停步跟随帧确定单元,具体包括:
第一停步跟随帧确定子单元,用于若所述第二跟随帧位置与所述第四目标帧位置之间的距离小于或等于预设停步跟随距离,则将所述第四目标帧位置作为所述跟随对象的第一停步位置,并根据所述第二跟随帧位置以及所述第一停步位置确定所述停步跟随数据帧。
具体地,所述停步跟随帧确定单元,具体包括:
第二停步跟随帧确定子单元,用于若所述第二跟随帧位置与所述第四目标帧位置之间的距离大于预设停步跟随距离,则基于所述第三目标数据帧对应的第三目标帧位置确定所述跟随对象的第二停步位置,并根据所述第二跟随帧位置以及所述第二停步位置确定所述停步跟随数据帧。
具体地,所述装置还包括:
跟随帧数差确定模块,用于若所述跟随对象包括多个,则所述获取目标对象对应的目标移动路径帧数据之前,分别确定每个所述跟随对象的跟随顺序,并按照所述跟随顺序分别确定每个所述跟随对象对应的预设跟随帧数差;
跟随数据帧发送模块,用于所述生成所述跟随对象对应的跟随移动路径帧数据之后,将所述跟随移动路径帧数据发送至与多个所述跟随对象各自对应的跟随终端中。
依据本申请又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述生成帧数据的方法。
依据本申请再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述生成帧数据的方法。
借由上述技术方案,本申请提供的一种生成帧数据的方法及装置、存储介质、计算机设备,服务器获取目标对象对应的目标移动路径帧数据,从而根据预设跟随帧数差在目标移动路径帧数据的基础上确定跟随对象对应的同步跟随数据帧以及异步跟随数据帧,从而生成跟随移动路径帧数据,以使跟随对象基于跟随移动路径帧数据进行移动可以表现出对目标对象的跟随效果。本申请相比与现有技术,将确定跟随移动路径帧数据的繁琐过程交由高性能的服务器处理,大大提升了处理效率,避免客户端性能压力过大导致卡顿、丢帧、表现缺失,甚至跟随过程中出现跟丢的问题,并且通过基于目标对象的移动轨迹位置进行插值从而确定跟随对象的跟随轨迹位置,使得跟随对象的跟随运动表现效果得到提升,另一方面,解决了现有技术无法实现对游戏场景内的NPC角色进行跟随的问题,为游戏开发阶段增加游戏玩法提供了技术支持,也为游戏体验阶段玩家体验更多玩法提供了保障,提高了玩家的游戏体验以及游戏产品的竞争力。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了本申请实施例提供的一种生成帧数据的方法的流程示意图;
图2示出了本申请实施例提供的另一种生成帧数据的方法的流程示意图;
图3示出了本申请实施例提供的另一种生成帧数据的方法的流程示意图;
图4示出了本申请实施例提供的另一种生成帧数据的方法的流程示意图;
图5示出了本申请实施例提供的一种生成帧数据的装置的结构示意图;
图6示出了本申请实施例提供的另一种生成帧数据的装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中提供了一种生成帧数据的方法,应用于服务器,如图1所示,该方法包括:
步骤101,获取目标对象对应的目标移动路径帧数据,并根据跟随对象对应的预设跟随帧数差以及目标移动路径帧数据,确定跟随对象对应的同步跟随数据帧,其中,同步跟随数据帧对应的跟随帧时间与目标数据帧对应的目标帧时间相同,同步跟随数据帧对应的跟随帧位置基于与相应的目标数据帧对应的目标跟随帧的位置确定,目标跟随帧为目标数据帧前向相差预设跟随帧数差的数据帧;
步骤102,基于目标移动路径帧数据对应的位置进行插值处理,确定跟随对象对应的异步跟随数据帧;
步骤103,根据同步跟随数据帧以及异步跟随数据帧,生成跟随对象对应的跟随移动路径帧数据。
本申请实施例主要应用于服务器,在一种应用于游戏服务器的场景中,运动跟随指令具体可以为游戏角色的运动跟随指令,在游戏服务器接收到来自游戏玩家客户端的游戏角色运动跟随指令之后,通过对该指令进行解析确定目标对象终端以及跟随终端,从而确定该指令指示的被跟随对象即目标对象,以及跟随对象。其中,跟随对象可以为一个或多个,该运动跟随指令可以来自目标对象终端,例如在多人协同游戏中,玩家在游戏场景内进行组队,由队长发起队伍跟随指令,命令队伍内的一个或多个队员跟随自己,该运动跟随指令也可以来自跟随终端,例如玩家A在游戏场景内点击玩家B的头像发起跟随,玩家A跟随玩家B在游戏场景内移动。另外,该运动跟随指令可以是玩家对玩家的跟随,例如玩家A跟随玩家B,也可以是玩家对游戏场景内NPC的跟随,例如玩家A跟随游戏场景内的NPC角色“小渔村村长”,还可以是游戏场景内NPC对玩家的跟随,例如游戏场景内的NPC角色“镇妖塔护卫”跟随玩家A。本申请实施例以应用于游戏服务器为例,对提供的技术方案进行解释说明,但本申请并不限于应用于游戏服务器,可以适用于任何应用场景的运动跟随,例如,动画制作中跟随对象对目标对象的跟随。
服务器从目标终端中获取目标对象对应的目标移动路径帧数据,该目标移动路径帧数据为以帧为单位记录的在运动跟随指令创建开始及以后目标对象的移动路径,例如游戏场景内的帧率为10Hz,即1秒用10帧画面进行表现,运动跟随指令在1点整创建,那么获取角色在1点整以及1点整以后的数据帧,即1点整、1点0分0.1秒、1点0分0.1秒对应的数据帧,该数据帧中至少应包括目标对象位置数据以及能够表示该数据帧对应时间的标识,例如可以采用数据帧对应时间的标识可以采用编号形式,具体可以用第1帧表示目标对象在1点整的数据帧,第2帧标识目标对象在1点0分0.1秒的数据帧……,也可以采用该数据帧对应的实际时间或对实际时间的编码数据来表示。另外,在目标终端中,该客户端可以实时对目标对象的全部移动路径帧数据进行记录,以便服务器可以随时调用目标对象任意时间的历史数据;也可以在运动跟随指令被创建后对目标对象的移动路径帧数据进行记录,为其他角色跟随目标对象提供数据支持;也可以对目标对象产生的最新移动路径帧数据进行记录,例如记录1分钟内的移动路径帧数据,更早的数据删除。
服务器获取到目标对象对应的目标移动路径帧数据之后,基于该数据以及预先设置的跟随帧数差确定跟随对象的移动路径帧数据,其中,预设跟随帧数差是指跟随对象的移动路径与目标对象的移动路径相差的帧数,当跟随对象包括多个时,可以根据跟随对象的跟随顺序依次确定多个跟随对象对应的跟随帧数差,跟随帧数差可以随着跟随顺序依次递增,例如第一个跟随对象对应的预设跟随帧数差为5帧,第二个跟随对象对应的预设跟随帧数差为8帧等等,假设目标对象对应于一个跟随对象,该跟随对象对应的预设跟随帧数差为5帧,在跟随状态下,目标对象如果当前所在的位置为A,那么跟随对象在0.5秒(预设跟随帧数差/帧率=5/10=0.5)之后到达A。确定跟随移动路径帧数据之后,服务器将跟随移动路径帧数据发送到跟随对象客户端中,跟随对象客户端可以根据接收到的该跟随移动路径帧数据控制跟随对象移动,以实现跟随对象能够跟随目标对象移动的效果,跟随对象的玩家可以跟随目标对象移动,不需要跟随玩家进行操作。
在上述实施例中,目标移动路径帧数据包含的每个目标数据帧对应有目标帧时间以及目标帧位置。同步跟随阶段是指跟随对象完全按照目标对象的移动轨迹移动的阶段,与此相对的,还包括异步跟随阶段,例如在目标对象的起步阶段,目标对象可能存在走走停停的现象,为了提升跟随表现效果,跟随对象可以不按照目标对象走走停停的方式移动,而是以一种较为平滑的方式移动,这时跟随对象可以不按照目标对象对应的目标数据帧的目标帧位置来移动。
对于同步跟随阶段,跟随移动路径帧数据中对应有同步跟随数据帧,在实际游戏场景内的跟随过程中,大部分的跟随过程都属于同步跟随,本申请实施例中采用每个目标数据帧对应有目标帧时间,该目标帧时间用于反应这一帧数据对应的实际时间或者游戏世界时间,同步跟随数据帧对应的跟随帧时间与目标数据帧对应的目标帧时间相同,例如跟随对象在1点整开始对目标对象跟随,对目标对象在1点零0.5秒以后的移动路径进行同步跟随,假设预设跟随帧数差为5,游戏帧率为10Hz,跟随对象与目标对象有0.5秒的跟随时间差,那么跟随对象应在1点零1秒时,对目标对象在1点零0.5秒的移动特征进行跟随。可以先确定跟随对象的同步跟随开始时间1点零1秒,在目标移动路径帧数据中找到与1点零1秒对应的数据帧,将1点零1秒确定为同步跟随帧对应的跟随帧时间,然后向前偏移5帧,获取1点零0.5秒的目标数据帧对应目标帧位置,将该位置确定为同步跟随数据帧的位置,并且该同步跟随帧对应的跟随帧时间为1点零1秒,再例如同步跟随帧对应的跟随帧时间为1点零1.1秒,那么该同步跟随帧对应的跟随帧位置为时间为1点零0.6秒的目标帧对应的位置。以此类推,确定全部同步跟随帧,进而确定跟随移动路径帧数据。
另外,在一些特殊的跟随阶段可以基于目标移动路径帧数据对应的位置以及跟随对象对应的位置进行插值确定跟随对象的跟随移动路径帧数据。例如,跟随对象的初始跟随阶段,此时运动跟随指令已经下达,但由于存在预设跟随帧数差,跟随对象还没有开始对目标对象进行跟随,可以通过基于跟随对象的所在位置以及目标对象的目标移动路径帧数据对应的目标对象初始位置进行插值,从而基于插值结果确定跟随对象的初始跟随数据帧。再例如,目标对象在连续的几帧中表现出移动速度忽快忽慢,比如第一帧到第二帧移动了10米,第二帧到第三帧移动了1米,第三帧到第四帧移动了8米……,这时可以通过将这几帧数据中的第一帧和最后一帧对应的位置进行插值的方式,得到可以表现出平滑移动效果的跟随数据帧位置。对于一些特殊跟随阶段对应的跟随移动路径帧,可以通过上述的插值方式确定,从而实现跟随对象的平滑跟随效果。
通过应用本实施例的技术方案,服务器获取目标对象对应的目标移动路径帧数据,从而根据预设跟随帧数差在目标移动路径帧数据的基础上确定跟随对象对应的同步跟随数据帧以及异步跟随数据帧,从而生成跟随移动路径帧数据,以使跟随对象基于跟随移动路径帧数据进行移动可以表现出对目标对象的跟随效果。本申请实施例相比与现有技术,将确定跟随移动路径帧数据的繁琐过程交由高性能的服务器处理,大大提升了处理效率,避免客户端性能压力过大导致卡顿、丢帧、表现缺失,甚至跟随过程中出现跟丢的问题,并且通过基于目标对象的移动轨迹位置进行插值从而确定跟随对象的跟随轨迹位置,使得跟随对象的跟随运动表现效果得到提升,另一方面,解决了现有技术无法实现对游戏场景内的NPC角色进行跟随的问题,为游戏开发阶段增加游戏玩法提供了技术支持,也为游戏体验阶段玩家体验更多玩法提供了保障,提高了玩家的游戏体验以及游戏产品的竞争力。
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了另一种生成帧数据的方法,如图2所示,该方法包括:
为了提高跟随功能的表现效果,本申请实施例提供了多种确定跟随移动路径帧数据的方式,多种实施方式可以用于目标跟随的不同阶段,具体步骤103可以包括:
方式一,在跟随对象的初始跟随阶段,如图2所示,步骤102具体包括:
步骤102-1-1,获取目标移动路径帧数据中第一目标数据帧对应的第一目标帧位置和第一目标帧时间,以及获取跟随对象的第一跟随帧位置,其中,第一目标数据帧为目标移动路径帧数据中的第一帧;
步骤102-1-2,基于第一目标帧位置以及第一跟随帧位置做插值,得到与预设跟随帧数差数量匹配的初始跟随帧位置;
步骤102-1-3,标注初始跟随帧位置对应的初始跟随帧时间,确定跟随移动路径帧数据中的初始跟随数据帧,其中,第一个初始跟随帧时间为第一目标帧时间。
在上述实施例中,跟随对象的初始跟随阶段是指运动跟随指令已经下达,但由于存在预设跟随帧数差,跟随对象还没有开始对目标对象进行跟随的阶段,例如预设跟随帧数差为5,跟随对象如果想要跟随目标对象移动,需要等到目标对象移动5帧以后再开始移动。为了解决跟随对象在这5帧图像的展示时间表现为等待状态而导致跟随展示效果差的问题,本申请实施例对上述初始跟随阶段设置了初始跟随数据帧,使得跟随对象可以按照初始跟随数据帧移动,避免原地等待。具体来说,获取目标移动路径帧数据中的第一帧,作为第一目标数据帧,获取第一目标数据帧对应的第一目标帧位置和第一目标帧时间,也就是目标对象的初始位置,将第一目标帧时间作为跟随对象的跟随开始时间,从这个时间开始跟随对象进入跟随状态,该时间对应的跟随对象数据帧为跟随对象的第一跟随帧,进一步获取跟随对象在跟随开始时间的位置,即第一跟随帧位置,从而对第一目标帧位置和第一跟随帧位置做插值,根据插值结果确定跟随对象的初始跟随数据帧,其中,插值结果作为初始跟随数据帧的位置信息,初始跟随数据帧的时间信息与目标跟随数据帧同步。
例如,预设跟随帧数差为5,获取目标对象对应的第一目标数据帧的时间为1点整,位置为A,获取跟随对象在1点整的位置B,那么对位置A和位置B进行插值处理,得到包括位置B在内的4个插值位置,插值1、插值2、插值3、插值4,分别按照插值位置与位置A距离从大到小的顺序标注对应的时间信息,位置B对应的时间为1点整、插值1对应的时间为1点零0.1秒、插值2对应的时间为1点零0.2秒……。从而确定初始跟随数据帧,跟随对象按照初始跟随数据帧进行移动,可以在跟随开始的前5帧图像中也表现为移动状态向目标对象靠近,以免跟随对象客户端展示跟随对象的呆滞等待效果,提升游戏场景内的跟随状态表现力。
方式二,在跟随对象的起步跟随阶段,如图3所示,步骤102具体包括:
步骤102-2-1,获取目标移动路径帧数据中第一目标数据帧对应的第一目标帧位置和第二目标数据帧对应的第二目标帧位置,其中,第二目标数据帧为第一目标数据帧之后相差预设跟随帧数差数量的数据帧;
步骤102-2-2,基于第一目标帧位置以及第二目标帧位置做插值,得到与预设跟随帧数差数量匹配的起步跟随帧位置,其中,起步跟随帧位置包括第二目标帧位置;
步骤102-2-3,根据第一目标帧时间和第二目标帧时间标注起步跟随帧位置对应的起步跟随帧时间,确定跟随移动路径帧数据中的起步跟随帧数据。
在上述实施例中,跟随对象的起步跟随阶段是指跟随对象对目标对象起步移动路径的跟随阶段,例如运动跟随指令下达以后,目标对象开始从原来的停止状态变为移动状态,目标对象开始移动的短暂时间内可能处于走走停停的踌躇不前的状态,如果跟随对象完全按照目标对象的移动路径逐帧跟随,那么跟随对象也将呈现这种状态,导致跟随表现力下降,因此本申请实施例设置跟随对象的起步跟随帧,使跟随对象在对目标对象的起步阶段进行跟随时可以按照起步跟随帧进行跟随,使得跟随路径平滑,提升跟随效果。
具体来说,获取目标移动路径帧数据中的第一帧,作为第一目标数据帧,以及与第一目标数据帧相差预设跟随帧数差的第二目标数据帧,并获取第一目标数据帧对应的第一目标帧位置和第二目标数据帧对应的第二目标帧位置,例如预设跟随帧数差为5,第一目标数据帧为1点整对应的数据帧,第二目标数据帧则为1点零0.5秒对应的数据帧。进一步,基于上述的第一目标帧位置和第二目标帧位置做插值,得到包含第二目标帧位置在内的5个插值位置(5为预设跟随帧数差)作为起步跟随帧位置,而后再分别对每个起步跟随帧位置依次标注相应的时间信息,得到完整的起步跟随帧,并将起步跟随帧作为跟随移动路径帧数据的一部分发送到跟随终端中,指导跟随对象的跟随移动路径,使得跟随对象在起步阶段的移动趋于平滑,提升跟随效果。
另外,在上述实施例中,如果发起角色跟随时,目标对象没有表现为走走停停的起步状态,那么直接按照目标对象对应的目标数据帧确定跟随对象的跟随数据帧即可,不需要对目标数据帧中的位置信息进行平滑处理,具体地,步骤102-2-1之后,步骤102-2-2之前,还可以包括:获取第一目标数据帧与第二目标数据帧对应的全部的起步目标帧位置;若起步目标帧位置存在重复,则执行步骤102-2-2。其中,如果获取的起步目标帧位置存在重复,说明目标对象在跟随指令开始之后表现为走走停停的起步状态,应按照上述方法进行起步状态的平滑处理。
方式三,在跟随对象的停步跟随阶段,如图4所示,步骤102具体包括:
步骤102-3-1,当目标数据帧中的任意一个第三目标数据帧对应的目标帧速度为零时,获取第三目标数据帧之前与预设跟随帧数差数量相当的停步目标数据帧对应的停步目标帧状态;
步骤102-3-2,当停步目标帧状态包括多个时,获取状态发生变化的第四目标数据帧,并确定第四目标数据帧对应的第四目标帧位置;
步骤102-3-3,根据第三目标数据帧对应的第三目标帧时间,获取时间同步的同步跟随数据帧对应的第二跟随帧位置;
步骤102-3-4,基于第二跟随帧位置与第四目标帧位置之间的距离,确定跟随对象对应的停步跟随数据帧。
在上述实施例中,首先应说明的是,目标移动路径帧数据包含的每个目标数据帧还对应有目标帧状态,同步跟随数据帧对应的跟随帧状态为时间同步的目标数据帧之前相差预设跟随帧数差的目标数据帧对应的目标帧状态。也就是说,跟随数据帧除了跟随相应目标数据帧的位置外,还跟随目标数据帧的状态,其中,目标帧状态可以包括目标对象的飞行状态、步行状态等等。目标对象在位置A为飞行状态,那么跟随对象跟随到位置A时也应为飞行状态,目标对象在位置B由飞行状态切换为步行状态,那么跟随对象跟随到位置B时也应从飞行状态切换为步行状态。在此基础上,存在一些较为特殊的情况,例如目标对象在位置C由飞行状态切换为步行状态后很快停止在位置D,如果按照同步跟随的方式,跟随对象也应该在位置C由飞行状态切换为步行状态后停止在位置D,但是若按此方式跟随,跟随对象将和目标对象停止在相同的位置,这会造成游戏场景内多个角色重叠展示效果差,因此,在目标对象停止移动时,跟随对象应与目标对象保持一段距离停止,此外在停步阶段如果目标对象的状态发生了变化,可以通过上述实施例来确定跟随对象的停步跟随数据帧。
具体来说,首先,获取目标对象在停步阶段对应的数据帧,如果目标数据帧对应的速度为零,说明目标对象在该帧的相应位置停止移动,因此获取目标数据帧中目标帧数据为零的第三目标数据帧,以及包括第三目标数据帧在内的之前的5个数据帧(5为预设跟随帧数差)作为停步目标数据帧;其次,通过获取停步目标数据帧对应的停步目标帧状态来判断目标对象在停步阶段是否发生状态切换,若停步目标帧状态包括多个说明目标对象在停步阶段发生了状态切换;然后,在确定目标对象在停步阶段发生了状态切换之后,获取发生状态切换的第四目标数据帧以及第四目标数据帧对应的第四目标帧位置,即目标对象发生状态切换的位置;接着,获取跟随对象在第三目标帧时间(第三目标帧时间即目标对象停止移动的时间)所在的位置,即上述第二跟随帧位置;最后,根据第二跟随位置与第四目标帧位置的距离大小设定跟随对象的停步跟随数据帧,即根据目标对象发生状态切换的位置与跟随对象在目标对象停止移动的时间所在的位置之间的距离来确定停步跟随数据帧。
在上述实施例的步骤102-3-4中,具体地,若第二跟随帧位置与第四目标帧位置之间的距离小于或等于预设停步跟随距离,则将第四目标帧位置作为跟随对象的第一停步位置,并根据第二跟随帧位置以及第一停步位置确定停步跟随数据帧。以及,若第二跟随帧位置与所述第四目标帧位置之间的距离大于预设停步跟随距离,则基于第三目标数据帧对应的第三目标帧位置确定跟随对象的第二停步位置,并根据第二跟随帧位置以及第二停步位置确定停步跟随数据帧。
在该实施例中,假设目标对象在停步阶段由飞行状态切换为步行状态,目标对象在位置C由飞行状态切换为步行状态后很快停止在位置D,目标对象停止在位置D时跟随对象移动到位置E,由于目标对象停止在位置D之后不再移动,因此应根据位置E与位置D的距离确定跟随对象的停步跟随数据帧。如果位置E与位置D的距离较近(小于或等于预设停步跟随距离),说明目标对象停止移动时跟随对象与之距离较近,为了体现出跟随对象的状态跟随目标对象的状态发生切换,那么使跟随对象移动到位置C后停止移动,即将第四目标帧位置(目标对象的状态切换位置)作为跟随对象的第一停步位置,并基于第四目标帧位置设置停步跟随数据帧(要保证停步跟随数据帧的最后一帧对应的位置为第四目标帧位置),由于跟随对象的状态跟随目标对象的状态,因此跟随对象按照停步跟随数据帧移动可以表现为跟随对象跟随目标对象移动到位置C并停止,且在位置C之前表现为飞行状态,在位置C表现为步行状态。
如果位置E与位置D的距离较远(大于预设停步跟随距离),说明目标对象停止移动时距离跟随对象较远,为了体现跟随对象对目标对象的在位置和状态层面上的跟随,并且使跟随对象在停止时与目标对象不发生重叠,基于位置D(第三目标帧位置)确定跟随对象的停步位置,即根据目标对象的移动停止位置确定跟随对象的停步跟随数据帧,例如基于目标对象移动方向将目标对象途径的与位置D距离一定长度的位置确定为第二停步位置F(例如在游戏场景内距离位置D0.5米的位置确定为停步位置),并基于第二停步位置设置停步跟随数据帧,由于跟随对象的状态跟随目标对象的状态,因此跟随对象按照停步跟随数据帧移动可以表现为跟随对象跟随目标对象移动到位置F并停止,且跟随对象在位置C之前表现为飞行状态,在位置C和之后表现为步行状态。
通过上述三种实施例确定跟随数据帧,使得跟随对象在初始阶段可以表现为向目标对象移动而不是呆滞的原地等待,在起步阶段可以平滑起步避免完全跟随目标对象可能表现为走走停停的卡顿状态,在同步阶段可以完全跟随目标对象的位置和状态移动,在停步阶段能够保证完全体现目标对象的状态切换过程且停止在与目标对象不发生重叠的位置,以上方式均起到了提升跟随对象在跟随过程中的表现效果的技术效果,提升了用户游戏体验,并且搭配高性能的服务器进行上述计算,保证了计算准确,不会给客户端带来性能上的压力。
另外,在本申请任一实施例中,具体地,若跟随对象包括多个,则分别确定每个跟随对象的跟随顺序,并按照跟随顺序确定每个跟随对象对应的预设跟随帧数差。相应的,将跟随移动路径帧数据发送至与多个跟随对象各自对应的跟随终端中。
在该实施例中,一个目标对象可以对应多个跟随对象,例如游戏场景内的游戏队伍里包括3个人,队长发起队内跟随,其他两名队员可以跟随队长,为了避免每个队员在跟随过程中不重叠显示,针对这种情况可以设置多个预设跟随帧数差,例如跟随对象1对应的跟随帧数差为5,跟随对象2对应的跟随帧数差为10。在此基础上,按照本申请实施例提供的跟随移动路径帧数据确定方法,分别确定每个跟随对象对应的跟随移动路径帧数据,并发送至相应的跟随终端中,以使多个角色对目标对象进行跟随时不会发生角色重叠,提升跟随显示效果。
进一步的,作为图1方法的具体实现,本申请实施例提供了一种生成帧数据的装置,应用于服务器,如图5所示,该装置包括:
同步跟随帧确定模块61,用于获取目标对象对应的目标移动路径帧数据,并根据跟随对象对应的预设跟随帧数差以及目标移动路径帧数据,确定跟随对象对应的同步跟随数据帧,其中,同步跟随数据帧对应的跟随帧时间与目标数据帧对应的目标帧时间相同,同步跟随数据帧对应的跟随帧位置基于与相应的目标数据帧对应的目标跟随帧的位置确定,目标跟随帧为目标数据帧前向相差预设跟随帧数差的数据帧;
异步跟随帧确定模块62,用于基于目标移动路径帧数据对应的位置进行插值处理,确定跟随对象对应的异步跟随数据帧;
跟随帧数据生成模块63,用于根据同步跟随数据帧以及异步跟随数据帧,生成跟随对象对应的跟随移动路径帧数据。
在具体的应用场景中,如图6所示,异步跟随帧确定模块62,具体包括:
初始帧时间获取单元6201,用于获取目标移动路径帧数据中第一目标数据帧对应的第一目标帧位置和第一目标帧时间,以及获取跟随对象的第一跟随帧位置,其中,第一目标数据帧为目标移动路径帧数据中的第一帧;
初始帧位置确定单元6202,用于基于第一目标帧位置以及第一跟随帧位置做插值,得到与预设跟随帧数差数量匹配的初始跟随帧位置;
初始跟随帧确定单元6203,用于标注初始跟随帧位置对应的初始跟随帧时间,确定跟随移动路径帧数据中的初始跟随数据帧,其中,第一个初始跟随帧时间为第一目标帧时间。
在具体的应用场景中,如图6所示,异步跟随帧确定模块62,具体包括:
第一起步帧数据获取单元6204,用于获取目标移动路径帧数据中第一目标数据帧对应的第一目标帧位置和第二目标数据帧对应的第二目标帧位置,其中,第二目标数据帧为第一目标数据帧之后相差预设跟随帧数差数量的数据帧;
起步帧位置确定单元6205,用于基于第一目标帧位置以及第二目标帧位置做插值,得到与预设跟随帧数差数量匹配的起步跟随帧位置,其中,起步跟随帧位置包括第二目标帧位置;
起步帧数据确定单元6206,用于根据第一目标帧时间和第二目标帧时间标注起步跟随帧位置对应的起步跟随帧时间,确定跟随移动路径帧数据中的起步跟随帧数据。
在具体的应用场景中,如图6所示,异步跟随帧确定模块62还包括:
第二起步帧数据获取单元6207,用于基于第一目标帧位置以及第二目标帧位置做插值之前,获取第一目标数据帧与第二目标数据帧对应的全部的起步目标帧位置;
起步判断单元6208,用于若起步目标帧位置存在重复,则基于第一目标帧位置以及第二目标帧位置做插值。
在具体的应用场景中,目标移动路径帧数据包含的每个目标数据帧还对应有目标帧状态,同步跟随数据帧对应的跟随帧状态为时间同步的目标数据帧之前相差预设跟随帧数差的目标数据帧对应的目标帧状态。
在具体的应用场景中,如图6所示,目标移动路径帧数据包括的每个目标数据帧还对应有目标帧速度;异步跟随帧确定模块62,具体包括:
停步帧状态获取单元6209,用于当目标数据帧中的任意一个第三目标数据帧对应的目标帧速度为零时,获取第三目标数据帧之前与预设跟随帧数差数量相当的停步目标数据帧对应的停步目标帧状态;
状态切换帧获取单元6210,用于当停步目标帧状态包括多个时,获取状态发生变化的第四目标数据帧,并确定第四目标数据帧对应的第四目标帧位置;
停步帧位置获取单元6211,用于根据第三目标数据帧对应的第三目标帧时间,获取时间同步的同步跟随数据帧对应的第二跟随帧位置;
停步跟随帧确定单元6212,用于基于第二跟随帧位置与第四目标帧位置之间的距离,确定跟随对象对应的停步跟随数据帧。
在具体的应用场景中,图中未示出,停步跟随帧确定单元6212,具体包括:
第一停步跟随帧确定子单元62121,用于若第二跟随帧位置与第四目标帧位置之间的距离小于或等于预设停步跟随距离,则将第四目标帧位置作为跟随对象的第一停步位置,并根据第二跟随帧位置以及第一停步位置确定停步跟随数据帧。
在具体的应用场景中,图中未示出,停步跟随帧确定单元6212,具体包括:
第二停步跟随帧确定子单元62122,用于若第二跟随帧位置与所述第四目标帧位置之间的距离大于预设停步跟随距离,则基于第三目标数据帧对应的第三目标帧位置确定跟随对象的第二停步位置,并根据第二跟随帧位置以及第二停步位置确定停步跟随数据帧。
在具体的应用场景中,如图6所示,该装置还包括:
跟随帧数差确定模块64,用于若跟随对象包括多个,则获取目标对象对应的目标移动路径帧数据之前,分别确定每个跟随对象的跟随顺序,并按照跟随顺序分别确定每个跟随对象对应的预设跟随帧数差;
跟随数据帧发送模块65,用于生成跟随对象对应的跟随移动路径帧数据之后,将跟随移动路径帧数据发送至各自对应的跟随终端中。
需要说明的是,本申请实施例提供的一种生成帧数据的装置所涉及各功能单元的其他相应描述,可以参考图1至图4方法中的对应描述,在此不再赘述。
基于上述如图1至图4所示方法,相应的,本申请实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述如图1至图4所示的生成帧数据的方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
基于上述如图1至图4所示的方法,以及图5至图6所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1至图4所示的生成帧数据的方法。
可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现服务器获取目标对象对应的目标移动路径帧数据,从而根据预设跟随帧数差在目标移动路径帧数据的基础上确定跟随对象对应的同步跟随数据帧以及异步跟随数据帧,从而生成跟随移动路径帧数据,以使跟随对象基于跟随移动路径帧数据进行移动可以表现出对目标对象的跟随效果。本申请实施例相比与现有技术,将确定跟随移动路径帧数据的繁琐过程交由高性能的服务器处理,大大提升了处理效率,避免客户端性能压力过大导致卡顿、丢帧、表现缺失,甚至跟随过程中出现跟丢的问题,并且通过基于目标对象的移动轨迹位置进行插值从而确定跟随对象的跟随轨迹位置,使得跟随对象的跟随运动表现效果得到提升,另一方面,解决了现有技术无法实现对游戏场景内的NPC角色进行跟随的问题,为游戏开发阶段增加游戏玩法提供了技术支持,也为游戏体验阶段玩家体验更多玩法提供了保障,提高了玩家的游戏体验以及游戏产品的竞争力。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
- 数据帧的生成方法、存储介质及计算机设备
- 数据帧结构的配置方法、装置、计算机设备和存储介质