游戏数据处理方法、控制方法、服务端、客户端及系统与流程
本发明涉及虚拟对象控制技术领域,特别涉及一种游戏数据处理方法、控制方法、服务端、客户端及系统。
背景技术:
随着计算机和移动端智能机的普及,游戏已经成为一种越来越普遍的娱乐形式。随着游戏市场规模不断扩大,游戏业的竞争日益激烈,因此玩家对于游戏玩法的多样性的要求也水涨船高。一款长期运营的游戏如何不断丰富游戏玩法是各大游戏厂商都十分关注的问题。载具作为人们日常生活息息相关的一个工具,在游戏里也有着举足轻重的地位。通过在游戏中引入载具,可以大大加强玩家的移动能力,提高游戏玩法的多样性。
现代3d游戏中的载具解决方案可以划分为两种类型。第一种类型的方案为:玩家实体直接和载具实体绑定,通过玩家的操作输入可以直接控制载具进行自由的漫游,比如《荒野行动》中玩家大部分情况是步行状态,找到车辆后游戏界面发生变化,出现驾驶车辆的交互界面(ui),玩家从控制角色移动变成控制车辆移动,如图1。第二种类型的方案为:完全动画控制的载具形式;由动作制作者制作一段固定的动画;当玩家登陆上载具的时候播放这个动作来表现载具的运动;玩家登陆载具之后,载具和玩家的移动就完全被动作动画所控制,玩家将不再能进行交互,如图2所示,是一个载具的动画展示界面。
对于前述第一种类型的方案,玩家直接控制载具虽然自由度最高,但是比较适合赛车之类以载具为主角的竞速游戏,与玩家控制轨道载具(或者称为轨道车)只能在固定轨道上运动的应用场景不契合。
对于前述第二种类型的方案,由固定的动作来控制载具的运动虽然限制了载具的移动范围,但是固定的载具动作大大增加了动作制作者的工作量,影响效率,成本较高。
以上背景技术内容的公开仅用于辅助理解本发明的发明构思及技术方案,其并不必然属于本发明的现有技术,在没有明确的证据表明上述内容在本发明的申请日之前已经公开的情况下,上述背景技术不应当用于评价本发明的新颖性和创造性。
技术实现要素:
本发明提出一种游戏数据处理方法、控制方法、服务端、客户端及系统,可实现虚拟对象与虚拟场景中的周围环境的融合,可减少工作量以及提高效率。
在第一方面,本发明提供一种游戏数据处理方法,通过终端设备提供图形用户界面,所述图形用户界面上显示游戏画面,所述游戏画面中包括虚拟对象,所述虚拟对象配置为根据控制指令沿限制路径以与所述控制指令相对应运动参数进行移动,其中,所述限制路径为所述游戏场景中限制所述虚拟对象移动轨迹的路径,所述方法包括:获取所述虚拟对象的移动信息和所述限制路径上相对应的标记点和所述标记点对应的位置信息,其中,所述限制路径包括至少一个标记点;根据所述虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置;根据所述目标位置确定所述虚拟对象的当前位置。
在一些优选的实施方式中,所述方法还包括:
获取所述标记点对应的方向信息;
根据所述虚拟对象的移动信息和所述标记点对应的方向信息确定出目标位置对应的方向;
根据所述目标位置对应的方向确定所述虚拟对象的当前朝向。
在一些优选的实施方式中,通过线性插值计算出所述虚拟对象的目标位置和对应的方向;或者,通过曲线插值计算出所述虚拟对象的目标位置和对应的方向。
在一些优选的实施方式中,所述标记点包括第一标记点和第二标记点;
根据所述虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置具体为:根据所述第一标记点的位置信息、所述第二标记点的位置信息和所述虚拟对象的移动信息,计算出所述虚拟对象的目标位置。
在一些优选的实施方式中,所述标记点包括第一标记点和第二标记点;
所述虚拟对象的移动信息包括所述虚拟对象在所述第一标记点和所述第二标记点之间的动态运行比例;
根据所述虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置具体为:根据所述标记点的位置信息和所述动态运行比例,确定出所述虚拟对象的目标位置;所述标记点的位置信息包括所述第一标记点的位置信息和所述第二标记点的位置信息。
在一些优选的实施方式中,获取所述虚拟对象的移动信息和所述限制路径上相对应的标记点和所述标记点对应的位置信息包括:接收所述虚拟对象在所述第一标记点和所述第二标记点之间的动态运行比例。
在一些优选的实施方式中,所述第一标记点和所述第二标记点为相邻的两个所述标记点。
在一些优选的实施方式中,所述标记点包括第一标记点和第二标记点;
所述标记点的位置信息包括所述第一标记点的位置信息和所述第二标记点的位置信息;
所述根据所述虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置具体为:
计算出所述虚拟对象在所述第一标记点和所述第二标记点之间的动态运行比例;
根据所述动态运行比例和所述标记点的位置信息,计算出所述虚拟对象的目标位置。
在一些优选的实施方式中,所述第一标记点和所述第二标记点为相邻的两个所述标记点;
所述虚拟对象的移动信息包括在所述第一标记点和所述第二标记点之间的所述虚拟对象的上一帧运行比例、上一帧经过时间和实时速度;
计算出所述虚拟对象在所述第一标记点和所述第二标记点之间的动态运行比例具体为:基于所述上一帧运行比例、所述上一帧经过时间和所述实时速度,计算出所述虚拟对象在所述第一标记点和所述第二标记点之间的动态运行比例。
在一些优选的实施方式中,所述获取所述虚拟对象的移动信息和所述限制路径上相对应的标记点和所述标记点对应的位置信息包括:接收所述第一标记点和所述第二标记点之间的所述虚拟对象的上一帧运行比例、上一帧经过时间和实时速度。
在一些优选的实施方式中,所述第一标记点的位置信息包括所述第一标记点的位置;
所述第二标记点的位置信息包括所述第二标记点的位置;
根据所述虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置具体为:基于所述动态运行比例、所述第一标记点的位置和所述第二标记点的位置,计算出所述虚拟对象的目标位置。
在一些优选的实施方式中,所述虚拟对象的移动信息包括路径选定信息;
所述标记点包括路径交叉标记点和多个候选变轨标记点;
获取所述限制路径上相对应的标记点和所述标记点对应的位置信息具体为:获取所述限制路径上的路径交叉标记点和根据所述路径选定信息从所述多个候选变轨标记点中确定变轨标记点,以及获取所述路径交叉标记点和所述变轨标记点的位置信息;
根据所述虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置具体为:根据所述虚拟对象的移动信息,以及所述路径交叉标记点和所述变轨标记点对应的位置信息确定出目标位置;
获取所述标记点对应的方向信息具体为:获取所述路径交叉标记点和所述变轨标记点对应的方向信息;
根据所述虚拟对象的移动信息和所述标记点对应的方向信息确定出目标位置对应的方向具体为:根据所述虚拟对象的移动信息和所述路径交叉标记点和所述变轨标记点对应的方向信息确定出目标位置对应的方向。
在一些优选的实施方式中,获取所述虚拟对象的移动信息包括:接收所述路径选定信息。
路径交叉标记点路径交叉标记点在一些优选的实施方式中,所述路径交叉标记点和所述变轨标记点为相邻的两个所述标记点;
所述虚拟对象的移动信息还包括所述虚拟对象在所述路径交叉标记点和所述变轨标记点之间的动态运行比例;
所述路径交叉标记点的方向信息包括所述路径交叉标记点的切向方向;所述路径交叉标记点的位置信息包括所述路径交叉标记点的位置;
所述变轨标记点的方向信息包括所述变轨标记点的切向方向;所述变轨标记点的位置信息包括所述变轨标记点的位置;
根据所述虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置具体为:根据所述动态运行比例、所述路径交叉标记点的位置和所述变轨标记点的位置确定出目标位置;
根据所述虚拟对象的移动信息和所述标记点对应的方向信息确定出目标位置对应的方向具体为:根据所述动态运行比例、所述路径交叉标记点的切向方向和所述变轨标记点的切向方向确定出目标位置对应的方向。
路径交叉标记点路径交叉标记点路径交叉标记点路径交叉标记点路径交叉标记点路径交叉标记点在一些优选的实施方式中,还包括:计算所述虚拟对象距离目的位置的实时距离,若所述实时距离达到第一条件,则改变所述虚拟对象的实时速度。
在一些优选的实施方式中,所述目的位置为所述限制路径的最后一个所述标记点。
在一些优选的实施方式中,所述计算所述虚拟对象距离目的位置的实时距离具体为:计算所述虚拟对象的当前位置与所述限制路径的最后一个所述标记点之间的距离,所述距离为所述实时距离。
在一些优选的实施方式中,所述限制路径的最后一个所述标记点为所述限制路径中序列号最大的所述标记点。
在一些优选的实施方式中,还包括:生成并记录所述标记点的场景信息;
生成并记录所述标记点的场景信息包括:生成并记录所述标记点的切向方向;
生成并记录所述标记点的切向方向包括:
将所述标记点与上一个所述标记点或者下一个所述标记点的连线的方向作为所述标记点的切向方向;
根据上一个所述标记点到所述标记点的方向向量、所述标记点到下一个所述标记点的方向向量、上一个所述标记点到所述标记点的距离、以及所述标记点到下一个所述标记点的距离,生成并记录所述标记点的切向方向;
所述标记点为不同轨道的交叉标记点;生成并记录交叉标记点在不同轨道的切向方向;
生成并记录所述标记点的切向方向具体包括:通过线性差值生成并记录所述标记点的切向方向。
在一些优选的实施方式中,根据所述虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置包括:基于所述虚拟对象的移动信息和所述标记点的位置信息计算出所述虚拟对象的待转换位置;将所述待转换位置转换成所述虚拟对象的目标位置。
在一些优选的实施方式中,根据所述虚拟对象的移动信息和所述标记点对应的方向信息确定出目标位置对应的方向包括:根据所述虚拟对象的移动信息和所述标记点对应的方向信息确定出所述虚拟对象的待转换方向;将所述待转换方向转换成所述虚拟对象的目标位置对应的方向。
在一些优选的实施方式中,根据所述虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置还包括:
将所述虚拟对象的至少一部分移动信息进行转换和/或将所述标记点的至少一部分位置信息进行转换;
所述虚拟对象的移动信息包括转换后的所述虚拟对象的至少一部分移动信息,和/或所述标记点的位置信包括转换后的所述标记点的至少一部分位置信息。
在一些优选的实施方式中,获取预先记录的用于标记轨道的多个标记点的场景信息;获取预先记录的虚拟对象的场景信息。
在一些优选的实施方式中,接收虚拟对象的至少一部分场景信息作为虚拟对象的场景信息。
在一些优选的实施方式中,还包括:对所述虚拟对象的目标位置和对应的方向进行径向补正。
在一些优选的实施方式中,还包括:向客户端发送虚拟对象控制指令,以实现使所述虚拟对象的当前位置与所述目标位置一致以及使所述虚拟对象的当前方向与所述目标位置对应的方向一致。
在一些优选的实施方式中,还包括:向客户端发送校验数据,以使所述客户端实现:根据所述校验数据对所述客户端的计算结果进行校验,若校验结果满足第一校验条件,则根据所述校验数据中的数据在所述客户端上对所述虚拟对象的位置与所述虚拟对象的方向进行修改。
在一些优选的实施方式中,所述第一校验条件为:所述客户端计算出的所述虚拟对象的位置和所述虚拟对象的方向与所述服务端计算出的所述虚拟对象的位置和所述虚拟对象的方向的差距大于指定范围。
在一些优选的实施方式中,所述校验数据包括所述服务端计算出的所述目标位置;
所述客户端的计算结果包括所述客户端计算出的目标位置;
所述第一校验条件为:所述客户端计算出的目标位置与所述服务端计算出的所述目标位置的差距大于指定范围。
在第二方面,本发明还提供一种虚拟对象控制方法,包括:用多个标记点标记限制路径;生成并记录所述标记点的位置信息;向服务端传输第一数据,以使所述服务端实现:基于获取到的虚拟对象的移动信息和所述标记点的位置信息,计算出所述虚拟对象的目标位置;使所述虚拟对象的当前位置与所述目标位置一致。
在一些优选的实施方式中,生成并记录所述标记点的位置信息包括:生成并记录所述标记点的位置;生成并记录所述标记点的切向方向;生成并记录所述标记点在限制路径中的序列号;生成并记录所述标记点所属的限制路径信息。
在一些优选的实施方式中,所述序列号为递增的;
至少有两个相邻的所述标记点的所述序列号是间断的;
还包括在两个所述标记点增加新标记点,所述新标记点的序列号的大小在两个所述标记点的序列号的大小之间;两个所述标记点是相邻的。
在第三方面,本发明还提供一种虚拟对象控制方法,包括:向服务端发送运行于限制路径的虚拟对象的至少一部分移动信息,其中,所述限制路径由多个标记点标记,以使所述服务端基于所述虚拟对象的移动信息和所述标记点的位置信息计算出所述虚拟对象的目标位置;所述虚拟对象的移动信息包括所述至少一部分移动信息;接收包含所述虚拟对象的目标位置的虚拟对象控制数据;使所述虚拟对象的当前位置与所述目标位置一致。
在一些优选的实施方式中,所述标记点包括第一标记点和第二标记点;
向服务端发送运行于限制路径的虚拟对象的至少一部分移动信息具体为:向服务端发送运行于限制路径的虚拟对象的至少一部分移动信息;其中,所述限制路径由多个标记点标记,所述虚拟对象的至少一部分移动信息包括所述虚拟对象在所述第一标记点和所述第二标记点之间的动态运行比例;从而使所述服务端基于所述标记点的位置信息和所述动态运行比例,计算出所述虚拟对象的目标位置;所述标记点的位置信息包括所述第一标记点的位置信息和所述第二标记点的位置信息。
在一些优选的实施方式中,还包括:基于在所述第一标记点和所述第二标记点之间的所述虚拟对象的上一帧运行比例、上一帧经过时间和实时速度,计算出所述动态运行比例;所述第一标记点和所述第二标记点为相邻的两个所述标记点。
在一些优选的实施方式中,所述标记点包括第一标记点和第二标记点;所述第一标记点和所述第二标记点为相邻的两个所述标记点;
所述至少一部分移动信息包括在所述第一标记点和所述第二标记点之间的所述虚拟对象的上一帧运行比例、上一帧经过时间和实时速度。
在一些优选的实施方式中,所述至少一部分移动信息包括路径选定信息;
向服务端发送运行于限制路径的虚拟对象的至少一部分移动信息具体为:向服务端发送运行于限制路径的虚拟对象的至少一部分移动信息,以使所述服务端基于所述标记点的位置信息和包括所述路径选定信息的所述虚拟对象的移动信息,计算出所述虚拟对象的目标位置;
使所述虚拟对象的当前位置与所述目标位置一致具体为:使所述虚拟对象的当前位置与所述目标位置一致,以及使所述虚拟对象的当前方向与所述目标位置对应的方向一致,从而使所述虚拟对象切换轨道。
在一些优选的实施方式中,所述标记点包括路径交叉标记点和多个候选变轨标记点;
所述至少一部分移动信息还包括所述虚拟对象在所述路径交叉标记点和变轨标记点之间的动态运行比例;所述变轨标记点为所述多个候选变轨标记点中的一者;所述路径交叉标记点和所述变轨标记点为相邻的两个所述标记点;
向服务端发送运行于限制路径的虚拟对象的至少一部分移动信息具体为:向服务端发送运行于限制路径的虚拟对象的至少一部分移动信息,以使所述服务端基于所述标记点的位置信息以及基于包括所述路径选定信息和所述动态运行比例的所述虚拟对象的移动信息,计算出所述虚拟对象的目标位置;所述标记点的位置信息包括所述路径交叉标记点的位置信息和所述变轨标记点的位置信息。
在一些优选的实施方式中,还包括:计算所述虚拟对象距离目的位置的实时距离,若所述实时距离达到第一条件,则改变所述虚拟对象的实时速度。
在一些优选的实施方式中,所述目的位置为所述限制路径的最后一个所述标记点。
在一些优选的实施方式中,所述计算所述虚拟对象距离目的位置的实时距离具体为:计算所述虚拟对象的当前位置与所述限制路径的最后一个所述标记点之间的距离,所述距离为所述实时距离。
在一些优选的实施方式中,所述限制路径的最后一个所述标记点为所述限制路径中序列号最大的所述标记点。
在第四方面,本发明提供一种服务端,包括一个或多个处理器、存储器和一个或多个程序;其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行上述方法的指令。
在第五方面,本发明提供一种客户端,包括一个或多个处理器、存储器和一个或多个程序;其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行上述方法的指令。
在第六方面,本发明提供一种开发端,包括一个或多个处理器、存储器和一个或多个程序;其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行上述方法的指令。
在第七方面,本发明提供一种虚拟对象控制系统,包括上述服务端和上述客户端;或者,包括上述服务端和上述开发端;或者,包括上述客户端和上述开发端;或者,包括上述服务端、上述客户端和上述开发端。
在第八方面,本发明提供一种虚拟对象控制系统的控制方法,所述虚拟对象控制系统包括上述服务端和上述客户端;
所述控制方法包括:
所述客户端接收所述服务端发送的校验数据;
所述客户端根据所述校验数据对所述客户端的计算结果进行校验,若校验结果满足第一校验条件,则根据所述校验数据中的数据在所述客户端上对所述虚拟对象的位置与所述虚拟对象的方向进行修改。
在一些优选的实施方式中,所述校验数据包括所述服务端计算出的所述目标位置和所述目标位置对应的方向;
所述客户端的计算结果包括所述客户端计算出的所述目标位置和所述目标位置对应的方向;
所述客户端根据所述校验数据对所述客户端的计算结果进行校验,若校验结果满足第一校验条件,则根据所述校验数据中的数据在所述客户端上对所述虚拟对象的位置与所述虚拟对象的方向进行修改具体为:所述客户端根据所述服务端计算出的所述目标位置和所述目标位置对应的方向对所述客户端计算出的所述目标位置和所述目标位置对应的方向进行校验,若校验结果满足第一校验条件,则采用所述服务端计算出的所述目标位置和所述目标位置对应的方向在所述客户端上使所述虚拟对象的当前位置与所述服务端计算出的所述目标位置一致以及使所述虚拟对象的当前方向与所述服务端计算出的所述目标位置对应的方向一致。
在一些优选的实施方式中,所述第一校验条件为:所述客户端计算出的所述虚拟对象的位置和所述虚拟对象的方向与所述服务端计算出的所述虚拟对象的位置和所述虚拟对象的方向的差距大于指定范围。
在一些优选的实施方式中,所述校验数据包括所述服务端计算出的所述目标位置和所述目标位置对应的方向;
所述客户端的计算结果包括所述客户端计算出的所述目标位置和所述目标位置对应的方向;
所述第一校验条件为:所述客户端计算出的所述目标位置和所述目标位置对应的方向与所述服务端计算出的所述目标位置和所述动态方向的差距大于指定范围。
在第九方面,本发明提供一种虚拟对象控制装置,包括信息获取单元、动态运算单元和位置控制单元;
所述信息获取单元用于:获取虚拟对象的移动信息和获取用于标记轨道的标记点的位置信息;
所述动态运算单元用于:基于所述虚拟对象的移动信息和所述标记点的位置信息计算出所述虚拟对象的目标位置;
所述位置控制单元用于:使所述虚拟对象的当前位置与所述目标位置一致。
在第十方面,本发明还提供一种虚拟对象控制装置,包括标记单元、标记点场景信息处理单元和传输单元;
所述标记单元用于:用标记点标记轨道;
所述标记点场景信息处理单元用于:生成并记录所述标记点的场景信息;
所述传输单元用于向服务端传输第一数据,以使所述服务端实现:基于获取到的虚拟对象的场景信息和所述标记点的场景信息,计算出所述虚拟对象的目标位置;使所述虚拟对象的当前位置与所述目标位置一致。
在第十一方面,本发明还提供一种虚拟对象控制装置,包括信息发送单元、信息接收单元和对象控制单元;
所述信息发送单元用于:向服务端发送运行于轨道的虚拟对象的至少一部分移动信息,其中,所述轨道由标记点标记,以使所述服务端基于所述虚拟对象的移动信息和所述标记点的位置信息计算出所述虚拟对象的目标位置和动态方向;所述虚拟对象的移动信息包括所述至少一部分移动信息
所述信息接收单元用于:接收包含所述虚拟对象的目标位置控制数据;
所述对象控制单元用于:使所述虚拟对象的当前位置与所述目标位置一致。
在第十二方面,本发明还提供一种计算机可读存储介质,包括:所述计算机可读存储介质中存储有程序指令,所述程序指令被计算机的处理器执行时使所述处理器执行上述方法。
与现有技术相比,本发明的实施例的有益效果包括:
限制路径由多个标记点标记;通过获取标记点的位置信息和运行于限制路径的虚拟对象的移动信息,基于虚拟对象的移动信息和标记点的位置信息计算出虚拟对象的目标位置;使虚拟对象的当前位置与计算出的目标位置一致。如此,可在虚拟场景中控制虚拟对象沿着由标记点标记的限制路径运动,虚拟对象的位置在虚拟对象的移动信息的约束下动态变化;虚拟对象的运动与虚拟场景中的周围环境融合在一起,实现虚拟对象与周围环境的融合;可减少动作制作者的工作量,比如无需制作大量的固定动画,从而可提高效率和降低成本。
附图说明
图1为《荒野行动》中的虚拟对象系统展示图;
图2为虚拟对象动画的编辑器界面的示意图;
图3为本发明第一实施例的虚拟对象控制系统的信息交互图;
图4为本发明第一实施例的一种变型方式的虚拟对象控制系统的信息交互图;
图5为本发明第一实施例的服务端的一种形式的结构示意图;
图6为本发明第一实施例的开发端的一种形式的结构示意图;
图7为本发明第一实施例的开发端的另一种形式的结构示意图;
图8为本发明第一实施例的客户端的一种形式的结构示意图;
图9为本发明第一实施例的服务端的另一种形式的结构示意图;
图10为本发明第二实施例的虚拟对象控制系统的信息交互图;
图11为本发明第一实施例的标记点在场景编辑器中的表现形式的示意图;
图12为本发明第一实施例的游戏数据处理方法的总体流程图;
图13为示出本发明第一实施例的多个标记点的示意图;
图14为本发明第二实施例的客户端的结构示意图。
具体实施方式
为了使本发明的实施例所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合图1至图14及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
需要说明的是,当元件被称为“固定于”或“设置于”另一个元件,它可以直接在另一个元件上或者间接在该另一个元件上。当一个元件被称为是“连接”另一个元件,它可以是直接连接到另一个元件或间接连接至该另一个元件上。另外,连接即可以是用于固定作用也可以是用于电路连通作用。
需要理解的是,术语“长度”、“宽度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明实施例和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多该特征。在本发明实施例的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
第一实施例
本实施例提供一种游戏数据处理方法,具体为一种基于标记点的可切换轨道的虚拟对象的数据处理方法。本实施例的游戏数据处理方法包括两部分,分别为预处理部分和后处理部分。其中,后处理部分是基于预处理部分的处理结果来进行的。
本实施例提供一种虚拟对象控制系统;参考图3,该系统包括开发端1、服务端2和客户端3。本实施例的游戏数据处理方法的预处理部分和后处理部分在不同的装置上执行:预处理部分在开发端1上先产生处理结果,然后该处理结果以数据的形式传输至服务端2和客户端3,后处理部分在服务端2和客户端3上基于该处理结果运行,也即服务端2和客户端3均运行本实施例的游戏数据处理方法的后处理部分;此外,服务端2与客户端3进行通信,比如:服务端2向客户端3发送数据,客户端3向服务端2发送数据。在其它实施例中,虚拟对象控制系统包括服务端2和客户端3;或者,虚拟对象控制系统包括开发端1和服务端2;或者,虚拟对象控制系统包括开发端1和客户端3。
下面结合本实施例的方法和系统对本实施例进行详细说明。
虚拟对象4为能沿限制路径运动的虚拟对象,比如载具。在游戏中,参考图13,虚拟对象4可以是沿限制路径(固定路线)运动的车辆、船只、飞行器、武器、道具、云朵或者动物,不以此为限。在其它实施例中,虚拟对象4是虚拟现实环境中的物体。
本实施例的游戏数据处理方法通过终端设备(比如客户端3)提供图形用户界面,图形用户界面上显示游戏画面,游戏画面中包括虚拟对象4,虚拟对象4配置为根据控制指令沿限制路径以与控制指令相对应运动参数进行移动。其中,限制路径为游戏场景中限制虚拟对象移动轨迹的路径,限制路径例如可以是轨道。
参考图3和图12,本实施例的游戏数据处理方法的预处理部分包括步骤c1至步骤c3。如前所述,由开发端1执行步骤c1至步骤c3。其中,开发端1为微服务器或者个人计算机。
步骤c1、用多个标记点标记轨道。
在场景中摆下多个标记点来表示期望虚拟对象运转的轨迹也即轨道所在的地方,比如事先在场景编辑器里放置多个标记点来标记轨道。
标记点可以在场景编辑器中用一个小方块的形式表示;小方块底面的正方形的中心被认为是标记点标识的位置,标记点在场景编辑器里的样子如图11所示。
用多个标记点标记轨道表示:用多个标记点作为轨道,或者用多个标记点将场景中的轨道进行标记。无论何种表示,其目的都是使得场景中存在多个标记点。
步骤c2、生成并记录标记点的场景信息,其中,标记点的场景信息分为位置信息和方向信息。
标记点的场景信息是指标记点在场景中的信息,用于开展后续处理。
预处理部分生成应用比如游戏运行时需要的场景信息,包括标记点对应的虚拟对象实际位置、虚拟对象的切向方向、轨道切换的点、切换点衔接哪些轨道以及轨道终点的信息等。标记点的场景信息包括标记点对应的虚拟对象实际位置、标记点的位置、标记点的切向方向、标记点在轨道中的序列号、轨道切换的点、和标记点所属的轨道信息;其中,标记点的位置信息包括标记点的位置、标记点在轨道中的序列号和标记点所属的轨道信息;标记点的方向信息包括标记点的切向方向。
标记点的位置可以是二维位置(比如由x坐标和y坐标表示),也可以是三维位置(比如由x坐标、y坐标表示和z坐标表示)。在标记点放置完毕后,生成并记录标记点在场景中的位置。
生成并记录标记点在轨道中的序列号。除了位置之外,为了标识轨迹运动的来龙去脉并实现轨道切换,每个标记点还需要记录特殊属性来标识轨道的信息。如下面显示标记点的自定义属性的表一所示,标记点自定义属性的第一列标识标记点所在轨道的名字(也即标记点所属的轨道信息),第二列标识标记点在轨道中的序列号。标记点的序列号按照单调递增的顺序来记录,也即序列号为递增的,比如第一个标记点的序列号为1,后面的标记点的序列号可以是2也可以是5,实现预留标记点位置,使得标记点的序列号是间断的。
表一
采用预留标记点位置的方式,为以后标记点精度没有达到期望导致虚拟对象运动不够平滑时需要增加标记点留下了空间,避免为了增加点而需要将所有标记点重新标号的情况。示例的,在所有的标记点中,至少有两个相邻的标记点的序列号是间断的;在这两个相邻的标记点增加新标记点,那么,新标记点的序列号的大小就是在两个相邻的标记点的序列号的大小之间;具体的,两个相邻的标记点的序列号分别为1和5,新标记点的序列号就可以是2、3或4。
如前所述,每个小方块表示一个标记点,同时一个标记点在轨道的交叉处是可以被多个轨道所共享的。表一中,这个标记点处在一个岔路口,所以该标记点同时属于轨道tramcar0、轨道tramcar1和轨道tramcar2。该标记点在轨道tramcar0中的序列号是75,而在轨道tramcar1和轨道tramcar2这两条轨道里的序列号都是1。如此,一个标记点同时存储有三行轨道的信息,也就是赋予在切换轨道处的标记点多个轨道的信息。
标记点在场景编辑器之中摆放完成之后,导表程序会读取场景文件,并解析其中的标记点信息进行预处理,并将预处理得到的数据保存,比如保存在程序可以直接读取的python脚本文件格式.py中。对标记点信息进行预处理的具体内容如下文。
识别轨道中的特殊点。根据轨道标记点的自定义属性名后缀的序列号,可以很容易识别出第一条轨道和最后一条轨道。需要额外保存最后一条轨道的信息,因为在轨道达到终点前,希望虚拟对象(也可以称为轨道车)可以自然减速,避免出现虚拟对象急停或者冲出轨道等不合理表现。
除了轨道的起点和终点外,还需要额外记录轨道的切换点,用于后续实现虚拟对象切换轨道。在轨道的交叉点,一个标记点会同时保存多个轨道自定义属性信息,根据这些信息可以构建出轨道的拓扑结构。为了进行运行时的轨道信息插值,轨道的连接信息需要保存双方向的,即同时保存轨道t可以通过哪些轨道和哪些轨道可以过渡(或者说切换)到轨道t。
如此,标记点的场景信息还包括标记点是否为特殊点的信息。
计算虚拟对象4(轨道车)的质心位置。通常希望用一个标记点来标识虚拟对象的运动轨迹,参考图13,然而实际上虚拟对象是一个实体模型,有着自己的长度和宽度,所以需要确定标记点是代表虚拟对象哪个点的运行位置。为了直观易于使用,将放置的标记点用来表示虚拟对象头部(比如轨道车车头)中间的位置;但是游戏里使用的是虚拟对象的质心位置,也就是虚拟对象中间段的位置,所以在预处理时需要将标记点的位置转换为虚拟对象的质心位置。虚拟对象的长度是一个已知量l,那么虚拟对象头部(比如轨道车车头)到质心的距离就是l/2,得到虚拟对象的质心位置还需要一个方向。现阶段的数据只有标记点的位置,没有方向信息,参考图13,因此使用某个标记点到下一个标记点的连线方向d作为这个方向,其中,连线方向d为向量。假设该某个标记点的位置为p,那么该某个标记点表示的虚拟对象质心位置为p–d*l/2。
生成并记录标记点的切向方向。计算标记点的切线方向(也即切向方向)是十分重要和困难的,因为标记点只能传达位置信息,方向信息则需要通过计算得到。标记点的方向计算将直接影响虚拟对象运行中虚拟对象的驱动部分(比如车轮)与轨道的贴合度。比如,参考图13,计算一个标记点p的切向方向,需要得到标记点p的位置以及标记点p的前一个标记点a的位置和后一个标记点b的位置,根据标记点p的情况可以分为以下几种情况进行计算。
标记点p点是整条轨道的起点或者终点的情况。因为标记点p点是整条轨道的起点或终点,所以标记点p就会没有上一个标记点或者下一个标记点,如此,标记点p的切线方向为:标记点p与标记点a和标记点b中存在的那个标记点的连线的方向,也即标记点p与上一个标记点或者下一个标记点的连线的方向。
参考图13,标记点p是一条轨道的中间位置的一个标记点的情况。这种情况是最常见的情况。对于这种情况,本实施例同时计算方向向量ap和方向向量pb,则标记点p的切向向量
其中,
|pa|和|pb|分别表示线段pa的长度和线段pb的长度。
公式(2)和公式(3)意味着:如果两个标记点越接近,那么这两个标记点在切线方向的计算中占有更大的比重。之所以有这样的方向向量占有比重,是因为两个标记点越接近往往表示这个弯道比较急;相比之下,在直线上很长的轨道只需要一个起点和一个终点即可表示。当然作为切向方向向量,在线性插值完成之后,对向量进行归一化处理。
参考图13,标记点p是多条轨道的交叉点的情况。在轨道的交叉点,玩家可以选择让虚拟对象往左或者往右走两条完全不同的轨道,所以在这种情况下标记点p的切向向量信息需要存储两个切向向量,即虚拟对象往左走时采用的切向向量和往右走时采用的切向向量。这样,记录交叉标记点p在不同轨道的切向向量,在虚拟对象运行的插值过程中,通过查询上文中保存的轨道切换拓扑信息,就可以确定虚拟对象运动到标记点p附近时采用哪个切向向量进行插值运算。
步骤c3、向服务端传输第一数据。
预处理部分完成之后,就可运行后处理部分。参考图3,开发端1将第一数据均传输给服务端2和客户端3;具体是通过网络传输给服务端2和客户端3。在其它实施例中,开发端1通过存储介质将第一数据传输给服务端2和客户端3。服务端2和客户端3接收到第一数据后,基于第一数据执行后处理部分。示例的,第一数据包括标记点的场景信息和虚拟对象的场景信息,只要能使服务端2和客户端3基于第一数据执行后处理部分即可。其中,服务端2为服务器;客户端3为智能终端比如智能手机或者个人电脑。
在其它实施例中,预处理部分由服务端2或客户端3执行的。
参考图3,本实施例的游戏数据处理方法的后处理部分包括步骤a1至步骤a3。如前所述,服务端2和客户端3均执行步骤a1至步骤a3。服务端2为服务器。客户端3为智能终端。
步骤a1、获取虚拟对象的移动信息和限制路径上相对应的标记点和标记点对应的位置信息;其中,限制路径包括至少一个标记点。
虚拟对象的移动信息是指虚拟对象在虚拟场景中的信息,用于开展后续处理。示例的,虚拟对象的移动信息包括如下信息的至少一种:虚拟对象的上一帧运行比例、上一帧经过时间、实时速度、虚拟对象的运行时间、路径选定信息、虚拟对象的位置、虚拟对象的方向、虚拟对象的历史速度、虚拟对象的历史位置、虚拟对象的历史位置、虚拟对象的历史方向、以及虚拟对象在虚拟场景中的尺寸(比如长宽高)。其中,路径选定信息是:在虚拟对象将要切换轨道时,代表虚拟对象将会切换到哪一条轨道运动的信息。
具体的,服务端2或客户端3预先保存虚拟对象的移动信息,比如接收开发端1传输过来的虚拟对象的移动信息并保存在诸如硬盘之类的存储介质中,在需要使用虚拟对象的移动信息时,从存储介质获取即可。
在其它实施例中,获取虚拟对象的移动信息是从其它设备比如开发端1接收虚拟对象的移动信息;或者,获取虚拟对象的移动信息是从其它设备比如开发端1或者客户端3接收虚拟对象的一部分移动信息,然后基于该一部分移动信息计算出另一部分移动信息,并将这两部分移动信息保存在存储介质,在需要使用虚拟对象的移动信息时,从存储介质获取。
在其它实施例中,服务端2从客户端3获取虚拟对象的移动信息。
如前所述,标记点的位置信息包括如下至少一种信息:标记点的位置、标记点在路径中的序列号和标记点所属的轨道信息,以及包括标记点是否为特殊点的信息。
具体的,服务端2或客户端3预先记录标记点的位置信息,比如接收开发端1传输过来的标记点的位置信息并保存在诸如硬盘之类的存储介质中,在需要使用标记点的位置信息时,从存储介质获取即可。
在其它实施例中,获取用于标记路径的多个标记点的位置信息是从其它设备比如开发端1接收用于标记轨道的多个标记点的位置信息;或者,获取用于标记轨道的多个标记点的位置信息是从其它设备比如开发端1接收标记点的一部分位置信息,然后基于该一部分位置信息计算出另一部分位置信息,并将这两部分位置信息保存在存储介质,在需要使用标记点的位置信息时,从存储介质获取。
步骤a2、根据虚拟对象的移动信息和标记点对应的位置信息确定出目标位置。
虚拟对象的目标位置是指虚拟对象在运动过程中将要运动至的位置,即虚拟对象下一时刻的位置。
由于已经获取到虚拟对象的移动信息和标记点的位置信息,虚拟对象是沿着标记点限定的路径运动的,根据动力学和几何学可以得到虚拟对象的目标位置。
虚拟对象在运动时是位于两个标记点之间,比如:位于两个标记点中间的位置,或者刚好与其中一个标记点重合。参考图13,在多个标记点中存在第一标记点s1和第二标记点s1;第一标记点s1和第二标记点s1为相邻的两个标记点。之前获取的标记点的位置信息包含第一标记点s1的位置信息和第二标记点s1的位置信息。
那么,基于第一标记点s1的位置信息、第二标记点s2的位置信息和虚拟对象的移动信息,就可以计算出虚拟对象的目标位置。
一种得到虚拟对象的目标位置的方法为:获取到的虚拟对象的移动信息中包含虚拟对象在第一标记点s1和第二标记点s2之间的动态运行比例r(比如虚拟对象在两个标记点之间的运行百分比);示例的,服务端2从客户端3接收虚拟对象在第一标记点s1和第二标记点s2之间的动态运行比例r;其中,动态运行比例r;那么,基于第一标记点s1的位置信息、第二标记点s2的位置信息和动态运行比例r,就可以计算出虚拟对象的目标位置;其中,第一标记点的位置信息包括第一标记点的位置poss1;第二标记点的场景信息包括第二标记点的位置poss2;根据以上信息,通过线性插值可以计算出虚拟对象的目标位置posp。虚拟对象的目标位置posp的表达式为下式(4)。
posp=r*poss1+(1-r)*poss2(4)
在本实施例中,第一标记点的位置poss1表示第一标记点s1对应的虚拟对象的质心位置,在预处理部分就已得到;第二标记点的位置poss2表示第二标记点s2对应的虚拟对象的质心位置,在预处理部分就已得到;如此,posp就是目标位置posp对应的虚拟对象的质心位置。在其它实施例中,第一标记点的位置poss1表示第一标记点s1对应的虚拟对象的车头中间位置;第二标记点的位置poss2表示第二标记点s2对应的虚拟对象的车头中间位置;那么,posp就是目标位置posp对应的虚拟对象的车头中间位置;如果在虚拟场景中,需要使用虚拟对象的质心位置,则按前述方式将posp转换为目标位置posp对应的虚拟对象的质心位置。
在其它实施例中,通过曲线插值计算出虚拟对象的目标位置posp。
虚拟对象在第一标记点s1和第二标记点s2之间的动态运行比例r是由服务端2或客户端3计算得到的,具体是根据获取的虚拟对象的移动信息计算得到的。
那么步骤a2就包括步骤a21和步骤a22。
步骤a21、计算出虚拟对象在第一标记点s1和第二标记点s2之间的动态运行比例r。
虚拟场景中的角色比如玩家角色登上虚拟对象比如载具之后,可以通过点击智能终端(比如手机)的屏幕的方式对载具进行加速,而不点击智能终端的屏幕,载具则会以一定的加速度进行减速。如此,载具在第一标记点s1和第二标记点s2之间的动态运行比例r的一种能计算方式为:参考图13,对于两个连续的标记点,也即第一标记点s1和第二标记点s2,将载具在第一标记点s1时的运行比例定为0,将载具在第二标记点s2时的运行比例定为1;载具的上一帧移动比例为r`;载具在上一帧经过时间t,以速度v运动到目标位置;则载具的动态运行比例r为下式(5)。
|s1s2|表示线段s1s2的长度,也即第一标记点s1和第二标记点s2的直线距离。使用标记点之间连成的折线(线段s1s2)的长度来得到虚拟对象(载具)在标记点之间移动情况的比例(动态运行比例r),参考图13,可避免计算曲线的长度开销比较大的情况,从而可减少系统开销。
那么,获取的虚拟对象的移动信息就包括在第一标记点s1和第二标记点s2之间的虚拟对象的上一帧运行比例、上一帧经过时间和实时速度;示例的,服务端2从客户端3接收第一标记点s1和第二标记点s2之间的虚拟对象的上一帧运行比例、上一帧经过时间和实时速度。
a22、根据动态运行比例和标记点的位置信息,计算出虚拟对象的目标位置。
具体的,服务端2或客户端3根据动态运行比例、第一标记点的位置和第二标记点的位置,计算出虚拟对象的目标位置。
在其它实施例中,采用除动态运行比例之外的插值信息,第一标记点的位置、第二标记点的位置之类的标记点的场景信息,计算出虚拟对象的目标位置;比如,插值信息还可以是虚拟对象的剩余能源或者已消耗的能源,或者插值信息是虚拟对象上承载的道具的剩余量或者虚拟对象上承载的道具的已消耗量。
在其它实施例中,第一标记点和第二标记点不是相邻的两个点,也即在第一标记点和第二标记点之间还有一个或多个标记点。
步骤a3、根据目标位置确定虚拟对象的当前位置。
服务端2需要更新或者保存虚拟对象的位置和方向信息。客户端3需要在显示屏上显示虚拟对象的位置和方向。因此,根据得到的虚拟对象的目标位置posp,服务端2将虚拟对象的位置更新或者保存为虚拟对象的目标位置posp,客户端3则在显示屏上将虚拟对象的位置显示为虚拟对象的目标位置posp。如此,使得虚拟对象沿限制路径运动。
在其它实施例中,服务端2向客户端3发送虚拟对象控制指令,以实现使虚拟对象的当前位置与目标位置一致;示例的,虚拟对象的目标位置posp由服务端2计算,服务端2将计算得到的虚拟对象的目标位置posp以数据的形式(比如虚拟对象控制指令)发送给客户端3,客户端3根据接收到的数据在显示屏上将虚拟对象的位置显示为虚拟对象的目标位置posp。
前面已经确定出虚拟对象的目标位置,使得虚拟对象的当前位置沿着限定路径动态变化;在一些情况下,还需要确定虚拟对象的目标位置对应的方向,使得虚拟对象的当前朝向也动态变化;为此,本实施例的游戏数据处理方法还包括步骤d1至步骤d3。
步骤d1、获取标记点对应的方向信息。
如前所述,标记点的方向信息至少包括标记点的切向方向。
与标记点的位置信息的获取方式相同,服务端2或客户端3预先保存标记点的方向信息,比如接收开发端1传输过来的标记点的方向信息并保存在诸如硬盘之类的存储介质中,在需要使用标记点的方向信息时,从存储介质获取即可。
步骤d2、根据虚拟对象的移动信息和标记点对应的方向信息确定出目标位置对应的方向。
目标位置对应的方向是指虚拟对象在运动过程中将要处于的方向,即虚拟对象下一时刻的方向或者说朝向。
在前面已经确定虚拟对象的目标位置的情况下,由于已经获取到虚拟对象的移动信息和标记点对应的方向信息,而虚拟对象是沿着标记点限定的路径运动的,根据动力学和几何学可以得到虚拟对象的目标位置对应的方向。
虚拟对象在运动时是位于两个标记点之间,基于第一标记点s1的方向信息、第二标记点s2的方向信息和虚拟对象的移动信息,就可以确定出目标位置对应的方向。
一种得到虚拟对象的目标位置对应的方向的方法为:获取到的虚拟对象的移动信息中包含虚拟对象在第一标记点s1和第二标记点s2之间的动态运行比例r(比如虚拟对象在两个标记点之间的运行百分比);示例的,服务端2从客户端3接收虚拟对象在第一标记点s1和第二标记点s2之间的动态运行比例r;其中,动态运行比例r;那么,基于第一标记点s1的方向信息、第二标记点s2的方向信息和动态运行比例r,就可以计算出虚拟对象的目标位置对应的方向;其中,第一标记点的方向信息包括第一标记点的切向方向
虚拟对象的车头中间位置的方向与虚拟对象的质心位置的方向是相同的,因此,在本实施例中,不需要对
同样的,也可以根据动态运行比例和标记点的方向信息,计算出虚拟对象的目标位置对应的方向。具体的,服务端2或客户端3基于动态运行比例、第一标记点的切向方向、第二标记点的切向方向,计算出虚拟对象的目标位置和动态方向。
在其它实施例中,采用除动态运行比例之外的插值信息,再结合第一标记点的切向方向、第二标记点的切向方向之类的标记点的场景信息,计算出虚拟对象的目标位置对应的方向。
步骤d3、根据目标位置对应的方向确定虚拟对象的当前朝向。
根据得到的虚拟对象的目标位置posp对应的方向
在其它实施例中,服务端2向客户端3发送虚拟对象控制指令,以实现使虚拟对象的当前方向与方向
根据上述可知,用多个标记点标记轨道(限制路径);通过获取标记点的位置信息和运行于轨道的虚拟对象的移动信息,基于虚拟对象的移动信息和标记点的位置信息计算出虚拟对象的目标位置和对应的方向;使虚拟对象的当前位置与计算出的目标位置一致,以及使虚拟对象的当前方向与计算出的方向一致。如此,可在虚拟场景中控制虚拟对象沿着由标记点标记的轨道运动,虚拟对象的位置和方向在虚拟对象的场景信息的约束下动态变化;虚拟对象的运动与虚拟场景中的周围环境融合在一起,实现虚拟对象与周围环境的融合,使得虚拟对象行驶过程中与其它虚拟对象比如游戏实体的交互更加灵活以及便于拓展;可减少动作制作者的工作量,比如动作制作者无需制作大量的固定动画或者不用制作所有轨道的动作动画,对于直线轨道只需要头尾各放置一个标记点即可,从而可提高效率和降低成本。其中,虚拟场景中的周围环境是虚拟对象所处的环境,比如:虚拟对象在地下运动,地下就是周围环境;虚拟对象在野外运动,则野外就是周围环境;虚拟对象在天空中运动,则天空就是周围环境。通过预处理,在应用比如游戏运行前生成并记录虚拟对象行驶过程中需要的插值数据、标记点信息、轨道信息等标记点的位置信息或虚拟对象的移动信息,可减少游戏的加载时间,可缓解游戏运行中的卡顿。
根据标记点的位置信息比如两个标记点的位置信息,以及标记点的方向信息,以及根据虚拟对象的移动信息,在虚拟对象运行的过程中,通过线性插值得到虚拟对象的目标位置和对应的方向,可在有限系统资源的情况下保证在虚拟对象运动的自然过渡以及虚拟对象与轨道的贴合程度。在系统资源充足的情况下,比如客户端3的配置很高,通过曲线差值得到虚拟对象的目标位置和对应的方向,可更好地实现虚拟对象运动的自然过渡以及虚拟对象与轨道的贴合程度。
对于通过标记点之间(比如第一标记点s1和第二标记点s2之间)的虚拟对象的上一帧运行比例、上一帧经过时间和实时速度,计算出虚拟对象的目标位置和对应的方向;由于这个计算过程需要在虚拟对象运行时的每一帧进行调用,为使得计算量尽可能的小以减少对于虚拟场景比如游戏性能的影响,直接采用折线插值的位置坐标作为位置的最终结果,在虚拟场景中的实际表现被证明是合理的,并不会造成很明显的穿模现象。当然,在系统资源充足的情况下,也可以在用折线模拟曲线运动的过程中对虚拟对象的目标位置和对应的方向进行径向补正,这样可获得更逼真的运动效果。
如前所述,虚拟场景中有多条轨道,虚拟对象在运动到交叉位置时需要切换轨道。在这种情况下,虚拟对象的移动信息包括路径选定信息(比如轨道选定信息)。如前所述,路径选定信息是:在虚拟对象将要切换路径时,代表虚拟对象将会切换到哪一条路径运动的信息;路径选定信息是由玩家通过操作设备比如客户端3而触发的;其中,服务端2从客户端3接收路径选定信息。
参考图13,虚拟场景中的多个标记点包括路径交叉标记点和多个候选变轨标记点。路径交叉标记点是多条轨道共享或者共用的标记点,为交叉处。多个候选变轨标记点分别是不同轨道上的标记点,这些不同轨道是指虚拟对象将要切换至的轨道。那么,需要先确定虚拟对象将要切换至哪条轨道,然后再计算虚拟对象的目标位置和对应的方向。
步骤a1中的获取限制路径上相对应的标记点和标记点对应的位置信息具体为:获取限制路径上的路径交叉标记点和根据路径选定信息从多个候选变轨标记点中确定变轨标记点,以及获取路径交叉标记点和变轨标记点的位置信息。
根据路径选定信息可以知道被选定的是哪条轨道,也就是虚拟对象将要切换到哪条轨道。那么,被选定的轨道上的候选变轨标记点就是变轨标记点。路径交叉标记点和变轨标记点为相邻的两个标记点;如此,路径交叉标记点就相当于前述第一标记点,变轨标记点就相当于前述第二标记点;在切换轨道的场景中,虚拟对象的目标位置和对应的方向计算方式跟前述是一样的。
步骤a2中的根据虚拟对象的移动信息和标记点对应的位置信息确定出目标位置具体为:根据虚拟对象的移动信息,以及路径交叉标记点和变轨标记点对应的位置信息确定出目标位置。
步骤d1获取标记点对应的方向信息具体为:获取路径交叉标记点和变轨标记点对应的方向信息。
步骤d2根据虚拟对象的移动信息和标记点对应的方向信息确定出目标位置对应的方向具体为:根据虚拟对象的移动信息和路径交叉标记点和变轨标记点对应的方向信息确定出目标位置对应的方向。
虚拟对象的移动信息还包括虚拟对象在路径交叉标记点和变轨标记点之间的动态运行比例;路径交叉标记点的场景信息包括路径交叉标记点的切向方向和路径交叉标记点的位置;变轨标记点的场景信息包括变轨标记点的切向方向和变轨标记点的位置;如此,基于动态运行比例、路径交叉标记点的切向方向、变轨标记点的切向方向、路径交叉标记点的位置和变轨标记点的位置,就可以计算出虚拟对象的目标位置和对应的方向。
根据上述可知,在轨道交叉的位置,预先计算不同轨道上的标记点的位置和方向,根据路径选定信息确定下一条轨道,选择进行插值的数据比如两个标记点的位置信息和方向信息,得到虚拟对象的目标位置和对应的方向,使虚拟对象切换轨道,可实现轨道切换处的平滑过渡,可在游戏中实现可切换的轨道的虚拟对象控制方法。
在虚拟对象达到目的位置比如终点前,通常希望虚拟对象可以自然减速,避免出现虚拟对象急停或者冲出轨道等不合理表现。因此,参考图3,本实施例的虚拟对象控制方法还包括步骤a4。
步骤a4、计算虚拟对象距离目的位置的实时距离,若实时距离达到第一条件,则改变虚拟对象的实时速度。
目的位置为虚拟对象所在的轨道的最后一个标记点。由于标记点具有递增的序列号,因此,轨道的最后一个标记点为轨道中序列号最大的标记点。
通过计算虚拟对象的当前位置与轨道的最后一个标记点之间的距离即可得到前述实时距离。如果实时距离小于阈值(也即达到第一条件),则改变虚拟对象的实时速度,也就是使虚拟对象减速。在其它实施例中,改变虚拟对象的实时速度是使虚拟对象加速。
如前所述,存在需要对位置和方向进行转换的情况,具体包括如下情况。
步骤a2根据虚拟对象的移动信息和所述标记点对应的位置信息确定出目标位置包括:基于虚拟对象的移动信息和标记点对应的位置信息计算出虚拟对象的待转换位置;其中,待转换位置为虚拟对象的车头中间位置;然后将待转换位置转换成虚拟对象的目标位置。
或者,步骤d2根据虚拟对象的移动信息和标记点对应的方向信息确定出目标位置对应的方向包括:基于虚拟对象的移动信息和标记点对应的方向信息计算出虚拟对象的待转换方向;其中,待转换方向为虚拟对象的车头中间位置的方向;将待转换方向转换成虚拟对象的目标位置对应的方向。
步骤a2还包括:将虚拟对象的至少一部分移动信息进行转换和/或将标记点的至少一部分位置信息进行转换;比如:将与虚拟对象的车头中间位置对应的标记点的位置,转换为与虚拟对象的质心位置对应的位置。那么,虚拟对象的移动信息包括转换后的虚拟对象的至少一部分移动信息,和/或标记点的位置信息包括转换后的标记点的至少一部分位置信息。
在多人联网的虚拟场景比如多人联网游戏,必须要考虑网络传输的差异的技术问题以及客户端3和服务端2逻辑帧率的差异带来的技术问题。为此,参考图4,本实施例还提供一种虚拟对象控制系统的控制方法,包括步骤d1和步骤d2。其中,该虚拟对象控制系统包括服务端2和客户端3。
步骤d1、客户端3接收服务端2发送的校验数据。
由服务端2向客户端3发送校验数据。
d2、客户端根据校验数据对客户端的计算结果进行校验,若校验结果满足第一校验条件,则根据校验数据中的数据在客户端上对虚拟对象的位置与虚拟对象的方向进行修改。
校验数据包括服务端2计算出的虚拟对象的目标位置和对应的方向。
客户端3的计算结果包括客户端2计算出的虚拟对象的目标位置和对应的方向。
客户端3根据服务端计算出的目标位置和对应的方向对客户端3计算出的目标位置和对应的方向进行校验,若校验结果满足第一校验条件,则采用服务端2计算出的目标位置和对应的方向在客户端3上使虚拟对象的当前位置与服务端计算出的目标位置一致以及使虚拟对象的当前方向与服务端计算出的方向一致。
其中,第一校验条件为:客户端3计算出的目标位置和对应的方向与服务端2计算出的目标位置和对应的方向的差距大于指定范围。
在其它实施例中,校验数据包括服务端2计算出的虚拟对象的历史位置和虚拟对象的历史方向,客户端3的计算结果包括客户端2计算出的虚拟对象的历史位置和虚拟对象的历史方向;那么,若校验结果满足第一校验条件,则采用服务端2计算出的历史位置和历史方向在客户端3上使虚拟对象的历史位置与服务端计算出的历史位置一致以及使虚拟对象的历史方向与服务端计算出的历史方向一致;其中,第一校验条件为:客户端3计算出的虚拟对象的历史位置和虚拟对象的历史方向与服务端计算出的虚拟对象的历史位置和虚拟对象的历史方向的差距大于指定范围;如此,可以实现历史数据的校正。
根据上述可知,服务端2和客户端3均执行本实施例的虚拟对象控制方法,也即服务端2和客户端3运行的程序代码大部分是一样的,实现客户端3与服务端2的同步,可保证算法的一致性以及便于维护。客户端3的计算享受客户端高逻辑帧率的红利,负责表现的平滑,可以保证轨道动画的平滑过渡;而服务端2的计算帧率比较稳定,计算结果被用来用作校验数据向各个客户端3发送,可实现对客户端3的校正,比如对性能相对差的客户端3的计算结果进行校正,可保证不同客户端3之间的表现同步。具体的,每个客户端3由于机器性能的差异等原因会出现表现不同步的现象,当客户端3本地的虚拟对象运行情况和校验差距过大的时候,将客户端3本地的数据(比如客户端的计算结果)校对成服务端2发来的校验数据,而当客户端3本地的数据和服务端2的数据差距较小的情况,则不采纳服务端2的校验数据,主要是考虑到客户端3可能存在网络延迟和跳ping(跳ping是指网速不稳定),这样可防止采纳服务端2数据而造成虚拟对象(比如矿车)抖动,可使得虚拟对象的运动更真实。
本实施例提供一种虚拟对象控制装置,用于实现本实施例的方法;该装置为服务端2或者客户端3。参考图5,该装置包括信息获取单元21、动态运算单元22、位置控制单元23和速度改变单元24。由标记点位置信息获取单元21实现步骤a1。由动态运算单元22实现步骤a2。由位置控制单元23实现步骤a3。由速度改变单元24实现步骤a4。
本实施例还提供一种虚拟对象控制装置,该装置为开发端1,用于实现本实施例的方法;参考图6,该装置包括标记单元11、标记点场景信息处理单元12和传输单元13。由标记单元11实现步骤c1。由标记点场景信息处理单元12实现步骤c2。由传输单元13实现步骤c3。
参考图7,本实施例的开发端1包括一个或多个处理器101、存储器102和一个或多个程序;其中一个或多个程序被存储在存储器102中并被配置为由一个或多个处理器101执行,一个或多个程序包括用于执行本实施例的方法的指令。
参考图8,本实施例的服务端2包括一个或多个处理器201、存储器202和一个或多个程序;其中一个或多个程序被存储在存储器202中并被配置为由一个或多个处理器201执行,一个或多个程序包括用于执行本实施例的方法的指令。
参考图9,本实施例的客户端3包括一个或多个处理器301、存储器302和一个或多个程序;其中一个或多个程序被存储在存储器302中并被配置为由一个或多个处理器301执行,一个或多个程序包括用于执行本实施例的方法的指令。
第二实施例
参考图10,本实施例提供一种虚拟对象控制方法,由客户端3执行;在这样的情况下,由该方法包括步骤b1至步骤b3。本实施例的一些内容与第一实施例的是相同的,在此简述。
步骤b1、向服务端发送运行于轨道的虚拟对象的至少一部分移动信息。
如前所述,轨道由多个标记点标记。虚拟对象的至少一部分移动信息可以是路径选定信息、虚拟对象的实时速度、虚拟对象的历史速度、或者虚拟对象的历史位置等。
那么,如前所述,服务端2基于虚拟对象的移动信息和标记点的场景信息计算出虚拟对象的目标位置和对应的方向;其中,虚拟对象的移动信息包括前述虚拟对象的至少一部分移动信息。
步骤b2、接收包含虚拟对象的目标位置的虚拟对象控制数据。
服务端2计算出虚拟对象的目标位置和对应的方向之后,将包含虚拟对象的目标位置和对应的方向的虚拟对象控制数据发送给客户端3,以对客户端3进行控制。
步骤b3、使虚拟对象的当前位置与目标位置一致,以及使虚拟对象的当前方向与目标位置对应的方向一致。
客户端3收到服务端2发送的虚拟对象控制数据之后,提取虚拟对象控制数据中的数据,对虚拟对象进行控制,使虚拟对象的当前位置与目标位置一致,以及使虚拟对象的当前方向与目标位置对应的方向一致。
虚拟场景中的多个标记点包括第一标记点s1和第二标记点s2;其中,第一标记点s1和第二标记点s2为相邻的两个标记点。
步骤b1具体为:向服务端2发送运行于轨道的虚拟对象的至少一部分移动信息。
虚拟对象的至少一部分移动信息包括虚拟对象在第一标记点s1和第二标记点s2之间的动态运行比例r。服务端2基于标记点的场景信息和动态运行比例r,计算出虚拟对象的目标位置和对应的方向。其中,标记点的场景信息包括第一标记点的场景信息和第二标记点的场景信息。
在一些情况下,需要由客户端3计算出前述动态运行比例r,然后再发送给服务端2。具体的,客户端3基于在第一标记点s1和第二标记点s2之间的虚拟对象的上一帧运行比例、上一帧经过时间和实时速度,计算出前述动态运行比例r。在其它实施例中,将在第一标记点s1和第二标记点s2之间的虚拟对象的上一帧运行比例、上一帧经过时间和实时速度,作为前述至少一部分场景信息发送给服务端2。
对于切换轨道的情况。前述至少一部分移动信息包括路径选定信息。客户端3向服务端2发送包括路径选定信息的至少一部分移动信息。服务端2则基于标记点的场景信息和包括路径选定信息的虚拟对象的移动信息,计算出虚拟对象的目标位置和对应的方向。客户端3接收包含虚拟对象的目标位置和对应的方向的虚拟对象控制数据,实现使虚拟对象切换轨道。
具体的,多个标记点包括路径交叉标记点和多个候选变轨标记点。前述至少一部分移动信息还包括虚拟对象在路径交叉标记点和变轨标记点之间的动态运行比例;其中,变轨标记点为多个候选变轨标记点中的一者;路径交叉标记点和变轨标记点为相邻的两个标记点。标记点的场景信息包括路径交叉标记点的场景信息和变轨标记点的场景信息。
本实施例还提供一种虚拟对象控制装置,用于实现本实施例的方法;参考图14,该装置包括信息发送单元31、信息接收单元32和对象控制单元33;该装置为客户端3。
由信息发送单元31执行步骤b1。由信息接收单元32执行步骤b2。由位置方向控制单元33执行步骤b3。
根据上述可知,客户端3向服务端2发送运行于轨道的虚拟对象的至少一部分移动信息,服务端2基于虚拟对象的移动信息和标记点的场景信息计算出虚拟对象的目标位置和对应的方向并发送虚拟对象控制数据给客户端3,由客户端3根据虚拟对象控制数据使虚拟对象的当前位置与所述目标位置一致,以及使虚拟对象的当前方向与目标位置对应的方向一致,可保证各个客户端3的表现的一致性。
上述的至少一个实施例可在虚拟场景比如3d游戏中实现虚拟对象的切换轨道,动画制作者比如美术人员只需要事先在场景中摆放下数个和轨道轨迹吻合的标记点,程序即可控制虚拟对象运动,用户比如玩家可以对虚拟对象自由地进行加速、减速、切换轨道等控制,并将新加入的虚拟对象控制方法和游戏原有的核心内容无缝地融合起来。
在上述的至少一个实施例中,客户端3利用客户端逻辑的高帧率提高插值的平滑度;在网络通信上,服务端2只低频向客户端3发送校验数据;可缓解服务端2的计算压力,同时也可保证在网络情况比较不理想以及客户端3卡顿严重等情况下各个客户端3之间的表现不至于差异过大。在校验结果表明客户端3的计算结果与服务端2的计算结果差距较小时,舍弃服务端2发来的校验数据,可避免在网络环境不稳定、丢包严重情况下出现虚拟对象来回抖动的情况。
与自由移动的虚拟对象方案相比,上述的至少一个实施例将移动的限制通过在场景铺下标记点来反映出来,虚拟对象只会在这些标记点之间平滑的进行移动。与纯动画控制虚拟对象移动的方案相比,上述的至少一个实施例通过接收玩家的输入(比如接收路径选定信息之类的虚拟对象的移动信息)实时控制虚拟对象的移动速度以及切换轨道,而虚拟对象的运动移动路径完全由程序通过结合标记点和虚拟对象当前的运动状态(虚拟对象的场景信息)计算得出,避免将虚拟对象的移动和运动学参数分隔开,使得程序可以获取虚拟对象的实时位置、速度、加速度等运动信息,对虚拟对象和其它游戏要素的融合友好且直观,也可提高灵活性。
本领域的技术人员可以理解实施例方法中的全部或部分流程可以由计算机程序来命令相关的硬件完成,程序可存储于计算机可读取存储介质中,程序在执行时,可包括如各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。
以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除