首页> 中国专利> 控制虚拟角色进行移动的方法、装置、设备及介质

控制虚拟角色进行移动的方法、装置、设备及介质

摘要

本申请公开了一种控制虚拟角色进行移动的方法、装置、设备及介质,运用于计算机技术领域。该方法包括:显示虚拟环境画面,虚拟环境画面包括棋盘活动区域和位于棋盘活动区域上的目标虚拟角色,目标虚拟角色由第二客户端控制;响应于接收到来自第二客户端的开始移动指令,在虚拟环境画面上显示目标虚拟角色在棋盘活动区域上进行按照第一速度移动;响应于接收到位置同步指令,在虚拟环境画面上显示目标虚拟角色在棋盘活动区域上按照第二速度移动至目标位置,目标位置是位置同步指令携带的位置。该方法可以在第一客户端上预先展示目标虚拟角色的移动状况,使得目标虚拟角色的移动更为顺畅,提高不同客户端中同一虚拟角色的位置同步率。

著录项

  • 公开/公告号CN112891932A

    专利类型发明专利

  • 公开/公告日2021-06-04

    原文格式PDF

  • 申请/专利权人 腾讯科技(深圳)有限公司;

    申请/专利号CN202110250472.2

  • 发明设计人 李巍;严润发;马立洋;

    申请日2021-03-08

  • 分类号A63F13/428(20140101);A63F13/5258(20140101);A63F13/55(20140101);A63F13/822(20140101);

  • 代理机构11138 北京三高永信知识产权代理有限责任公司;

  • 代理人祝亚男

  • 地址 518057 广东省深圳市南山区高新区科技中一路腾讯大厦35层

  • 入库时间 2023-06-19 11:17:41

说明书

技术领域

本申请涉及计算机技术领域,特别涉及一种控制虚拟角色进行移动的方法、装置、设备及介质。

背景技术

在MMORPG(Massive Multiplayer Online Role-Playing Game,大型多人在线角色扮演游戏)游戏中,通常会提供一些休闲游戏,供用户消遣。例如,通过在虚拟环境中放置“炸弹”,来击败其它用户和敌对单位,以取得游戏的胜利。

相关技术是基于状态同步的网络游戏实现的,具体的,用户在第二客户端上的行动都会先在第二客户端上进行表现,然后通知给服务器,再由服务器广播给其它客户端,其它客户端在接收到服务器发送的信息后,在各自的显示屏上显示对应的表现过程。

但是相关技术会出现明显的状态偏差,例如,由于状态的不及时性,用户A看到的目标虚拟角色是在第1个方格上,而用户B看到的目标虚拟角色是在第6个方格上,两名用户看到的目标虚拟角色的位置出现了明显的偏差。

发明内容

本申请实施例提供了一种控制虚拟角色进行移动的方法、装置、设备及介质,该方法会在第一客户端上预先显示目标虚拟角色的移动情况,减少了网络延迟带来的影响,使得用户观察到的目标虚拟角色的移动更为平滑。所述技术方案如下:

根据本申请的一个方面,提供了一种控制虚拟角色进行移动的方法,应用于第一客户端中,该方法包括:

显示虚拟环境画面,所述虚拟环境画面包括棋盘活动区域和位于所述棋盘活动区域上的目标虚拟角色,所述目标虚拟角色由第二客户端控制;

响应于接收到来自所述第二客户端的开始移动指令,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上进行按照第一速度移动;

响应于接收到位置同步指令,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上按照第二速度移动至目标位置,所述目标位置是所述位置同步指令携带的位置。

根据本申请的一个方面,提供了一种控制虚拟角色进行移动的装置,该装置包括第一客户端,该装置包括:

第一显示模块,用于显示虚拟环境画面,所述虚拟环境画面包括棋盘活动区域和位于所述棋盘活动区域上的目标虚拟角色,所述目标虚拟角色由第二客户端控制;

第一收发模块,用于响应于接收到来自所述第二客户端的开始移动指令,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上进行按照第一速度移动;

第一同步模块,用于响应于接收到位置同步指令,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上按照第二速度移动至目标位置,所述目标位置是所述位置同步指令携带的位置。

在本申请的一个可选设计中,所述第一同步模块,还用于响应于接收到所述位置同步指令,确定所述位置同步指令的发送时间和接收时间;根据所述发送时间和所述接收时间的差值,确定所述第二速度;在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上按照所述第二速度移动至所述目标位置。

在本申请的一个可选设计中,所述第一同步模块,还用于响应于所述发送时间和所述接收时间的所述差值大于第一阈值,确定所述第一速度*放大系数为所述第二速度;或,响应于所述发送时间和所述接收时间的所述差值小于所述第一阈值,确定所述第一速度等于所述第二速度。

在本申请的一个可选设计中,所述第一同步模块,还用于根据所述发送时间和所述接收时间的所述差值,确定所述放大系数,所述放大系数与所述差值呈正相关;确定所述第一速度*所述放大系数为所述第二速度。

在本申请的一个可选设计中,所述第一同步模块,还用于响应于所述差值大于第二阈值,在所述虚拟环境画面上显示所述虚拟角色在所述棋盘活动区域上跳变至所述目标位置,所述第二阈值大于所述第一阈值。

在本申请的一个可选设计中,所述第一显示模块,还用于在响应于接收到来自所述第二客户端的所述开始移动指令,根据所述移动方向,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上按照第一速度向所述第一移动方向移动。

在本申请的一个可选设计中,所述第一显示模块,还用于响应于接收到所述位置同步指令,获取已经历路点,所述已经历路点用于记录在所述第一客户端上所述目标虚拟对象已经移动通过的路径;比较所述完整路点和所述已经历路点,获得未经历路点,所述未经历路点用于记录所述第一客户端上所述目标虚拟对象还未移动通过的路径;根据所述未经历路点,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上按照所述第二速度移动至所述目标位置。

根据本申请的一个方面,提供了一种控制虚拟角色进行移动的方法,应用于第二客户端中,该方法包括:

显示虚拟环境画面,所述虚拟环境画面包括棋盘活动区域和位于所述棋盘活动区域上的第一虚拟角色;

响应于接收到移动操作,控制所述第一虚拟角色在所述棋盘活动区域上移动,以及向第一客户端发送开始移动指令,所述开始移动指令用于触发所述第二客户端显示所述目标虚拟角色在所述棋盘活动区域上按照第一速度进行移动;

确定所述第一虚拟角色在所述棋盘活动区域上的目标位置;

向所述第一客户端发送位置同步指令,所述位置同步指令用于触发所述第一客户端显示所述虚拟角色在所述棋盘活动区域上按照第二速度移动至所述目标位置。

根据本申请的一个方面,提供了一种控制虚拟角色进行移动的装置,该装包括第二客户端,该装置包括:

第二显示模块,用于显示虚拟环境画面,所述虚拟环境画面包括棋盘活动区域和位于所述棋盘活动区域上的第一虚拟角色;

第二收发模块,用于响应于接收到移动操作,控制所述第一虚拟角色在所述棋盘活动区域上移动,以及向第一客户端发送开始移动指令,所述开始移动指令用于触发所述第二客户端显示所述第一虚拟角色在所述棋盘活动区域上按照第一速度进行移动;

第二同步模块,用于确定所述第一虚拟角色在所述棋盘活动区域上的目标位置;

所述第二收发模块,还用于向所述第一客户端发送位置同步指令,所述位置同步指令用于触发所述第一客户端显示所述第一虚拟角色在所述棋盘活动区域上按照第二速度移动至所述目标位置。

在本申请的一个可选设计中,所述第二收发模块,还用于向所述第二客户端发送所述位置同步指令和发送时刻,所述发送时刻是基于服务器时间生成的。

在本申请的一个可选设计中,所述第二同步模块,还用于响应于接收到摇杆部件上触发的摇动操作,确定所述摇动操作的摇动方向所属的摇动方向区域,所述摇杆部件的可摇动方向被划分为n个摇动方向区域,每个所述摇动方向区域对应各自的移动方向,n为正整数;响应于所述摇动操作的摇动方向所属的摇动方向区域为第一摇动方向区域,确定所述第一虚拟角色的移动方向为第一移动方向;控制所述第一虚拟角色在所述棋盘活动区域上沿所述第一移动方向移动。

在本申请的一个可选设计中,所述第二显示模块,还用于获取所述第一虚拟角色的角色坐标、所述第一虚拟角色的移动方向和所述棋盘活动区域的原点坐标;根据所述第一虚拟角色的角色坐标,确定所述第一虚拟角色所在的第一方格;根据所述第一虚拟角色的移动方向和所述第一方格,确定位于所述移动方向前方的第二方格;响应于所述第一虚拟角色的所述角色坐标达到所述第二方格,确定所述第二方格的中心点为所述目标位置。

在本申请的一个可选设计中,所述第二同步模块,还用于获取方格边长;基于所述虚拟环境中的坐标系,获取平行于第一坐标轴的第一线条和平行于第二坐标轴的第二线条,所述第一线条与所述第一坐标轴的距离为a*方格边长,所述第二线条与所述第二坐标轴的距离为b*方格边长,所述a和所述b为正整数;根据所述第一线条、所述第二线条、所述第一坐标轴和所述第二坐标轴,生成所述棋盘活动区域。

在本申请的一个可选设计中,所述第二同步模块,还用于获取所述棋盘活动区域的原点坐标和方格边长;将所述角色坐标和所述原点坐标的差值,作为坐标差值;根据所述坐标差值和所述方格边长的比值的余数,确定所述第一方格的中心点的坐标;根据所述第一方格的中心点的坐标,确定所述第一虚拟角色所在的所述第一方格。

在本申请的一个可选设计中,所述第二同步模块,还用于根据所述第一虚拟角色的移动方向、所述第一方格的中心点的坐标和所述方格边长,确定所述第二方格的中心点的坐标;根据所述第二方格的中心点的坐标,确定位于所述移动方向前方的所述第二方格。

在本申请的一个可选设计中,所述第二显示模块,还用于响应于接收到所述移动操作且所述目标位置处存在虚拟障碍物,在所述虚拟环境画面上显示所述第一虚拟角色在所述棋盘活动区域上原地踏步。

根据本申请的另一个方面,提供了一种计算机设备,该计算机设备包括:处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上方面所述的控制虚拟角色进行移动的方法。

根据本申请的另一个方面,提供了一种计算机存储介质,计算机可读存储介质中存储有至少一条程序代码,程序代码由处理器加载并执行以实现如上方面所述的控制虚拟角色进行移动的方法。

根据本申请的另一个方面,提供了一种计算机程序产品或计算机程序,上述计算机程序产品或计算机程序包括计算机指令,上述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从上述计算机可读存储介质读取上述计算机指令,上述处理器执行上述计算机指令,使得上述计算机设备执行如上方面所述的控制虚拟角色进行移动的方法。

本申请实施例提供的技术方案带来的有益效果至少包括:

该方法会将目标虚拟角色的移动分为两个部分,在第二客户端上的目标虚拟角色刚开始移动时,就向第一客户端发送开始移动指令,使第一客户端上的目标虚拟角色预先开始移动,并在之后发送位置同步指令,确定目标虚拟角色的目标位置。由于本方法会预先使第一客户端上的目标虚拟角色显示开始移动,由于开始移动指令携带的数据量较小,使得第一客户端上目标虚拟角色的移动对网络的依赖性下降,在高网络延迟下,第一客户端上显示目标虚拟角色的移动仍旧比较平滑,也使得第一客户端和第二客户端上的目标虚拟角色的移动方式更为接近,增强整体系统的实时性。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本申请一个示例性实施例提供的游戏场景的界面示意图;

图2示出了本申请一个示例性实施例提供的计算机系统的结构框图;

图3示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的方法的流程示意图;

图4示出了本申请一个示例性实施例提供的棋盘活动区域的示意图;

图5示出了本申请一个示例性实施例提供的第一虚拟角色的移动示意图;

图6示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的方法的流程示意图;

图7示出了本申请一个示例性实施例提供的摇杆部件的示意图;

图8示出了本申请一个示例性实施例提供的棋盘活动区域的示意图;

图9示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的流程示意图;

图10示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的示意图;

图11示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的方法的流程示意图;

图12示出了本申请一个示例性实施例提供的目标虚拟角色的移动示意图;

图13示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的方法的流程示意图;

图14示出了本申请一个示例性实施例提供的目标虚拟角色跳变的移动示意图;

图15示出了本申请一个示例性实施例提供的通过路点确定路径的流程示意图;

图16示出了本申请一个示例性实施例提供的爆炸物道具的爆炸的流程示意图;

图17示出了本申请一个示例性实施例提供的敌对对象的撞击的流程示意图;

图18示出了本申请一个示例性实施例提供的敌对对象的撞击的流程示意图;

图19示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的装置的结构示意图;

图20示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的装置的结构示意图;

图21示出了本申请一个示例性实施例提供的服务器的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先,对本申请实施例中涉及的名词进行介绍:

虚拟环境:是应用程序在终端上运行时显示(或提供)的虚拟环境。该虚拟环境可以是三维虚拟环境,也可以是二维虚拟环境。该三维虚拟环境可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的环境。

虚拟角色:是指在虚拟环境中的可活动角色。该可活动角色可以是虚拟人物、虚拟动物、动漫人物等,比如:在虚拟环境中显示的人物、动物、植物、油桶、墙壁、石块等。可选地,当虚拟环境为三维虚拟环境时,虚拟角色是基于动画骨骼技术创建的三维立体模型,每个虚拟角色在三维虚拟环境中具有自身的形状和体积,占据三维虚拟环境中的一部分空间。可选地,当虚拟环境为二维虚拟环境时,虚拟角色是基于动画技术创建的二维平面模型,每个虚拟角色在二维虚拟环境中具有自身的形状和面积,占据二维虚拟环境中的一部分面积。

RPG游戏(Role-playing Game,角色扮演游戏):在一个虚拟或写实的世界中,由用户扮演一个或多个角色,并在一个结构化规则下通过一些行动令所扮演的角色发展的游戏。例如,在RPG游戏中,由用户扮演角色“ABC”,用户在游戏过程中,通过击杀敌对目标来推进游戏的发展,以击杀最终目标“XYZ”为胜利条件。其中,MMORPG(Massive MultiplayerOnline Role-Playing Game,大型多人在线角色扮演游戏)游戏属于RPG游戏的一种。MMORPG游戏是在一个虚拟的世界中,在用户退出游戏后,该虚拟环境仍在游戏运营商提供的服务器中继续存在,并不断演进。

MOBA(Multiplayer Online Battle Arena,多人在线战术竞技游戏)游戏:是一种在虚拟环境中提供若干个据点,处于不同阵营的用户控制虚拟角色在虚拟环境中对战,占领据点或摧毁敌对阵营据点的游戏。例如,MOBA游戏可将用户分成两个敌对阵营,将用户控制的虚拟角色分散在虚拟环境中互相竞争,以摧毁或占领敌方的全部据点作为胜利条件。MOBA游戏以局为单位,一局MOBA游戏的持续时间是从游戏开始的时刻至达成胜利条件的时刻。

FPS(First Person Shooting game)游戏:是一种在虚拟环境中提供若干个据点,处于不同阵营的用户控制虚拟角色在虚拟环境中对战,占领据点或摧毁敌对阵营据点或击杀敌对阵营全部或部分角色的游戏。通常,FPS游戏中用户以第一人称视角进行游戏,用户也可以选择第三人称视角进行游戏。例如,FPS游戏可将用户分成两个敌对阵营,将用户控制的虚拟角色分散在虚拟环境中互相竞争,以击杀敌方的全部用户作为胜利条件。FPS游戏以局为单位,一局FPS游戏的持续时间是从游戏开始的时刻至达成胜利条件的时刻。

SLG(Simulation Games)游戏:是一种在虚拟环境中提供虚拟资源,模拟现实的游戏类型。例如,SLG游戏可将多名用户分入单个阵营,多名用户协同完成指定任务。一局SLG游戏通常不存在胜利条件。

“炸弹人”游戏:是一种在虚拟环境中放置爆炸物道具,并通过爆炸物道具淘汰其它用户的游戏。示例性的,对“炸弹人”游戏进行简单介绍,如图1所示,图1示出了本申请一个示例性实施例提供的游戏场景的界面示意图。整个界面包括:第一虚拟角色101、目标虚拟角色102、虚拟障碍物103(为简化附图标记,图1中四棱形均为虚拟障碍物103)、爆炸物道具104、敌对对象105、场景虚拟对象106、摇杆部件107、道具放置控件108、对战信息109、排名信息110和状态信息111。

首先,整个虚拟环境是基于方格进行划分的,在图1中,基于虚拟障碍物103的分布的情况,将游戏场景中,分为一行(列)可移动的区域,搭配一行(列)可移动的区域。

第一虚拟角色101:由当前客户端上的用户控制的角色。用户控制第一虚拟角色在虚拟环境中进行活动。可选地,第一虚拟角色是人物、动物、植物、动漫角色中的至少一种。

目标虚拟角色102:由其他客户端上的用户控制的角色。用户控制目标虚拟角色在虚拟环境中进行活动。可选地,目标虚拟角色是人物、动物、植物、动漫角色中的至少一种。

虚拟障碍物103:在虚拟环境中生成的障碍物。虚拟环境中的虚拟角色无法直接通过虚拟障碍物。其中,虚拟障碍物分为可破坏障碍物和不可破坏障碍物,可破坏障碍物可通过虚拟道具、技能、攻击、射击、爆破中的至少一种方式进行破坏,不可破坏障碍物在虚拟环境中无法通过任何形式进行破坏。虚拟障碍物会随机出现在虚拟环境中,或者,根据预先设置出现在虚拟环境中。

爆炸物道具104:在虚拟环境中对炸弹进行仿真的道具。其中,爆炸物道具有作用范围。爆炸物道具由虚拟角色进行放置,或者,随机出现在虚拟环境中。爆炸物道具在爆炸时会破坏作用范围内的可破坏障碍物。且,爆炸物道具在在爆炸时会减少作用范围内虚拟角色的血量。可选地,在爆炸物道具的周侧位置显示倒计时,用于提示用户该爆炸物道具会在何时爆炸。

敌对对象105:出现在虚拟环境中与用户敌对的对象。敌对对象会出现在虚拟环境中的随机位置,用户可通过爆炸物道具破坏敌对对象,在击败敌对对象时,用户会获得奖励,例如,获得积分、提升虚拟角色的属性、增加金币中的至少一种,相反的,敌对对象也会攻击用户控制的虚拟角色,攻击方式包括但不限于射击、撞击、放置爆炸物道具、释放技能、拳击、踢击中的至少一种。可选地,敌对对象分为普通敌对对象和精英敌对对象,普通敌对对象和精英敌对对象是基于敌对对象的AI(Artificial Intelligence,人工智能)进行划分的,示例性的,精英敌对对象具有更高的AI,会有更高的攻击欲望,或者,具有更多的攻击方式。

场景虚拟对象106:是随机出现在虚拟环境中的虚拟道具,用于增加游戏的趣味性和随机性。场景虚拟对象包括火力增强道具、加速道具、积分道具中的至少一种。其中,火力增强道具可以提升虚拟角色放置的爆炸物道具的作用范围,例如,作用范围从1格增加到2格,可选地,火力增强道具可以被叠加,例如,获得一个火力增强道具可以将爆炸物道具的作用范围从1格增加到2格,获得两个火力增强道具可以将爆炸物道具的作用范围从1格增加到3格。加速道具可以增加虚拟角色在虚拟环境中的移动速度。积分道具可以增加用户的积分。

摇杆部件107:用于控制虚拟角色的移动方向。用户可以拖动摇杆部件中的圆来决定虚拟角色的移动方向。

道具放置控件108:用于虚拟角色在虚拟环境中放置爆炸物道具。示例性的,用户单击道具放置控件,控制虚拟角色在当前位置放置一个爆炸物道具。

对战信息109:用于向用户展示本次对战的基本信息。示例性的,图1中对战信息显示为“用户A击败了用户B,积分+10”。

排名信息110:指参与对战的用户的排行榜,该排行榜是基于用户的积分生成的。积分的获取方式包括击败其它虚拟角色、击败敌对对象、获取积分道具、破坏可破坏障碍物中的至少一种。示例性的,如图1所示,“1用户A 85;2用户B 65;3用户C 40”。

状态信息111:用于向用户展示虚拟角色的剩余生命值。示例性的,如图1所示,“1用户A 5;2用户B 3;3用户C 0”。

另外,“炸弹人”游戏的胜利条件包括淘汰所有其他用户、在规定时间内获得最高积分、在规定时间内存活到最后、在规定时间内淘汰最多用户、在规定时间内到达指定的位置中的至少一种。

综上,对“炸弹人”游戏的简单介绍结束。

在开始介绍本申请的实施例之前,有必要说明本申请的方案是应用于上述的MMORPG游戏中的,MMORPG游戏与传统的“炸弹人”游戏相比:1、“炸弹人”游戏需要用户可以实时观察到各个虚拟角色的位置和移动情况,与传统的“炸弹人”游戏相比,MMORPG游戏的数据传输量更大,而在高网络延迟下,会出现从不同客户端上观察到的同一虚拟角色的位置不同的现象,甚至可能会出现虚拟角色位置的跳变,严重影响用户的游玩体验,故如何在网络存在延迟的前提下,优化虚拟角色的移动是本申请所要解决的问题之一;2、传统MMORPG游戏的地图是模拟现实世界的地图设计的,整个地图是由多个像素组成的,虚拟角色在地图中可以朝任意方向移动,且理论上可以到达虚拟环境中地图上的任意像素点位置,虚拟角色在虚拟世界中的移动基本不受任何约束。而在传统的“炸弹人”游戏中,地图是基于棋盘方格来构建的,也即地图是由棋盘方格根据阵列分布排列得到的,虚拟角色在棋盘活动区域上只能朝固定的方向按照固定步长进行移动,比如,只能按照上下左右四个方向中的一个方向进行移动,每次移动至少一个方格,或者,又比如只能按照上下左右及四个斜角方向共八个方向中的一个方向移动,每次移动至少一个方格。由于地图设计思路的根本性不同。因此,如何在MMORPG游戏的地图中实现“炸弹人”游戏的移动方式也是本申请所要解决的问题之一;3、MMORPG游戏是通过摇杆来控制虚拟角色的移动,而摇杆本身是具有各向自由度,即摇杆朝任意方向摇动,因此,如何通过摇杆来限制虚拟角色的移动方向也是本申请所要解决的问题之一。

图2示出了本申请一个示例性实施例提供的计算机系统的结构框图。该计算机系统200包括:第一终端220、服务器集群240和第二终端260。

第一终端220安装和运行有支持虚拟环境的应用程序,第一终端220同第一客户端相对应。该应用程序可以是MMORPG游戏、MOBA游戏、虚拟现实应用程序、三维地图程序、军事仿真程序、FPS游戏多人枪战类生存游戏中的任意一种。第一终端220是第一用户使用的终端,第一用户使用第一终端220操作位于三维虚拟环境中的第一虚拟角色进行活动,该活动包括但不限于:攻击、释放技能、购买道具、治疗、调整身体姿态、爬行、步行、骑行、飞行、跳跃、驾驶、拾取、射击、投掷中的至少一种。示意性的,第一虚拟角色是第一虚拟人物。

第一终端220通过无线网络或有线网络与服务器集群240相连。

服务器集群240包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。服务器集群240用于为支持虚拟环境的应用程序提供后台服务。可选地,服务器集群240承担主要计算工作,第一终端220和第二终端260承担次要计算工作;或者,服务器集群240承担次要计算工作,第一终端220和第二终端260承担主要计算工作;或者,服务器集群240、第一终端220和第二终端260三者之间采用分布式计算架构进行协同计算。

第二终端260安装和运行有支持虚拟环境的应用程序,第二终端260同第二客户端相对应。该应用程序可以是MMORPG游戏、MOBA游戏、虚拟现实应用程序、三维地图程序、军事仿真程序、FPS游戏、多人枪战类生存游戏中的任意一种。第二终端260是第二用户使用的终端,第二用户使用第二终端260操作位于三维虚拟环境中的第二虚拟角色进行活动,该活动包括但不限于:攻击、释放技能、购买道具、治疗、调整身体姿态、爬行、步行、骑行、飞行、跳跃、驾驶、拾取、射击、投掷中的至少一种。示意性的,第二虚拟角色是第二虚拟人物。第一虚拟角色和第二虚拟角色可以属于同一个队伍、同一个组织、具有好友关系或具有临时性的通讯权限。

可选地,第一终端220和第二终端260上安装的应用程序是相同的,或不同平台的同一类型应用程序。第一终端220可以泛指多个终端中的一个,第二终端260可以泛指多个终端中的一个,本实施例仅以第一终端220和第二终端260来举例说明。第一终端220和第二终端260的设备类型相同或不同,该设备类型包括:智能手机、平板电脑、电子书阅读器、MP3播放器、MP4播放器、膝上型便携计算机和台式计算机中的至少一种。

图3示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的方法的流程示意图。该方法可由图2所示的第二终端260上的第二客户端执行,该方法包括:

步骤302:显示虚拟环境画面,虚拟环境画面包括棋盘活动区域和位于棋盘活动区域上的第一虚拟角色。

虚拟环境画面是终端中的应用程序在运行的过程中,以虚拟角色的第一人称视角或者第三人称视角在虚拟世界中进行观察所获得的画面。可选地,本申请的实施例中,虚拟环境画面是在虚拟世界中通过摄像机模型对虚拟角色进行观察时的画面。

第一虚拟角色指由第二客户端控制的角色,且第一虚拟角色是从第二客户端上观察获得的。可选地,第一虚拟角色包括人物、动物、植物、动漫角色中的至少一种。

棋盘活动区域指在虚拟环境中虚拟角色的活动区域,且该活动区域呈棋盘状,由若干个方格组成。示例性的,如图4所示,棋盘活动区域是基于虚拟障碍物103的排列方式而形成的棋盘状区域。

步骤304:响应于接收到移动操作,控制第一虚拟角色在棋盘活动区域上移动,以及向第一客户端发送开始移动指令,开始移动指令用于触发第二客户端显示第一虚拟角色在棋盘活动区域上按照第一速度进行移动。

移动操作用于控制第一虚拟角色开始向一个方向进行移动。其中,移动操作携带有第一虚拟角色的移动方向。

示例性的,在第二客户端上,用户通过摇杆的推动操作来控制第一虚拟角色开始向上方运动。

开始移动指令用于通知第一客户端目标虚拟角色开始向一个方向进行移动。其中,开始移动指令携带有目标虚拟角色的移动方向。

可选地,在截取服务器向第一客户端发送的数据包后,从该数据包中可以取得上述开始移动指令。

示例性的,在第二客户端上,当用户控制目标虚拟角色开始向右移动,第二客户端向第一客户端发送上述的开始移动指令,开始移动指令携带有目标虚拟角色向右移动的信息。

第一速度指第一虚拟角色在第二客户端上显示的移动速度。可选地,第一速度为固定值。

可选地,第二客户端先向服务器发送开始移动指令,再由服务器向第一客户端转发该开始移动指令。或者,第二客户端直接向第一客户端发送开始移动指令。

示例性的,如图5所示,在第二客户端接收到移动操作时,显示第一虚拟角色101在棋盘活动区域上进行按照第一速度从位置501移动到位置502。

步骤306:确定第一虚拟角色在棋盘活动区域上的目标位置。

目标位置是基于第一虚拟角色当前位置、移动方向和第一速度确定的。示例性的,如图5所示,第一虚拟对象101在棋盘活动区域上移动时,接收到的移动操作为向右移动,由当前的位置501移动到位置502,位置502即为目标位置。

步骤308:向第一客户端发送位置同步指令,位置同步指令用于触发第一客户端显示第一虚拟角色在棋盘活动区域上按照第二速度移动至目标位置。

位置同步指令是由第二客户端向第一客户端发送的,且用于触发第一客户端显示第一虚拟角色在棋盘活动区域上按照第二速度移动至目标位置。

第二速度指第一客户端接收到来自第二客户端的位置同步指令时,在第一客户端上显示的目标虚拟角色的移动速度。其中,第二速度可以和第一速度相同,也可以不同。

可选地,在截取服务器向第一客户端发送的数据包后,从该数据包中可以取得上述位置同步指令。

可选地,位置同步指令是基于一定的频率进行发送的,例如,第二客户端每隔1秒发送位置同步指令。或者,位置同步指令是在开始移动指令发送后的第i秒发送,i为正数,例如,在开始移动指令发送后的第1秒发送位置同步指令。

综上所述,本实施例会将第一虚拟角色的移动分为两个部分,在第二客户端上的第一虚拟角色刚开始移动时,就向第一客户端发送开始移动指令,使第一客户端上的第一虚拟角色预先显示开始移动,并在之后发送位置同步指令,时第一客户端确定第一虚拟角色的目标位置。由于本方法会预先使第一客户端上的目标虚拟角色显示开始移动,由于开始移动指令携带的数据量较小,使得第一客户端上第一虚拟角色的移动对网络的依赖性下降,在高网络延迟下,第一客户端上显示第一虚拟角色的移动仍旧比较平滑,也使得第一客户端和第二客户端上的第一虚拟角色的移动方式更为接近,增强整体系统的实时性。

在接下来的实施例中,一方面将传统MMORPG游戏中的地图进行栅格化,构建棋盘活动区域,使得在棋盘活动区域中的虚拟角色中可以朝固定的方向按照固定的步长进行移动;另一方面将摇杆的可摇动方向划分为多个摇动方向区域,使得用户可以通过操纵摇杆来控制虚拟角色在棋盘活动区域上进行固定方向的移动;又一方面将虚拟角色的移动过程分为两部分,并在不同的阶段发送相应的指令,即使在网络延迟较高的情况下,第二客户端上虚拟角色的移动动作仍比较顺畅,降低不同客户端上虚拟角色位置的误差。

图6示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的方法的流程示意图。该方法可由图2所示的第二终端260上的第二客户端执行,该方法包括:

1、地图栅格化阶段:

步骤601:获取方格边长。

方格边长指棋盘活动区域中方格的边长。示例性的,方格边长为2个单位长度。

可选地,方格边长与虚拟环境中地图的尺寸呈正相关。例如,地图大小为10*10时,方格边长为1,而地图大小为20*20时,方格边长变为2。

可选地,方格边长与虚拟环境中地图的尺寸呈负相关。例如,地图大小为10*10时,方格边长为2,而地图大小为20*20时,方格边长变为1。

可选地,方格边长由技术人员自行设置。

步骤602:基于虚拟环境中的坐标系,获取平行于第一坐标轴的第一线条和平行于第二坐标轴的第二线条,第一线条与第一坐标轴的距离为a*方格边长,第二线条与第二坐标轴的距离为b*方格边长,a和b为正整数。

第一坐标轴和第二坐标轴相互垂直。示例性的,坐标系为平面直角坐标系,则第一坐标轴为横轴(x轴),第二坐标轴为纵轴(y轴),横轴与纵轴相互垂直。

第一线条包括直线、线段、射线中的至少一种。

第二线条包括直线、线段、射线中的至少一种。第一线段的种类可以与第二线段的种类相同,也可以不同。示例性的,第一线条为直线,而第二线条为线段,或者,第一线条和第二线条均为直线。本申请对此不做限定。

示例性的,在平面直角坐标系中,假设方格边长为2个单位长度,则第一直线为x=2,x=4,x=6对应的直线,第二直线为y=2,y=4,y=6对应的直线。

步骤603:根据第一线条、第二线条、第一坐标轴和第二坐标轴,生成棋盘活动区域。

可选地,根据第一线条、第二线条、第一坐标轴和第二坐标轴,生成完整棋盘活动区域或部分棋盘活动区域。

示例性的,在平面直角坐标系中,假设方格边长为1个单位长度,则第一直线为x=1,x=2对应的直线,第二直线为y=1,y=2对应的直线,由第一直线、第二直线、x轴和y轴共同构成上述的棋盘活动区域。

示例性的,如图8所示,图8展示了棋盘活动区域的示意图。

2、摇杆控制阶段:

步骤604:显示虚拟环境画面。

具体过程可参照步骤302,此处不再赘述。

步骤605:响应于接收到摇杆部件上触发的摇动操作,确定摇动操作的摇动方向所属的摇动方向区域,摇杆部件的可摇动方向被划分为n个摇动方向区域,每个摇动方向区域对应各自的移动方向,n为正整数。

由于摇杆部件具有各向自由度,因此,如何通过摇杆部件来限制虚拟角色的可移动方向是本步骤所要解决的问题。

示例性的,如图7所示,摇杆部件701为用户可以直接观看的摇杆,而摇杆部件702为对摇杆部件的可摇动方向被划分为4个摇动方向区域后,所得到的摇杆。其中,通过摇杆中心703进入哪个摇动方向区域来判断移动方向。示例性的,当摇杆中心位于图7中的“上”区域时,说明摇动方向为“上”。

可选地,当摇杆部件上触发的摇动操作的摇动距离小于最小摇动阈值时,按用户为摇动摇杆部件处理。这样可以避免用户的误操作。

示例性的,给出一种确定摇动方向所属的摇动方向区域的方法:

以摇杆中心点703为原点,正右方向为x轴正方向,正上方为y轴正方向建立坐标轴。计算摇动方向和x轴正向的夹角。则夹角与摇动方向区域的映射满足表1:

表1夹角与摇动方向区域之间的关系表

步骤606:响应于摇动操作的摇动方向所属的摇动方向区域为第一摇动方向区域,确定第一虚拟角色的移动方向为第一移动方向。

示例性的,以图7进行说明,当摇杆中心位于“右”区域时,确定第一虚拟角色的移动方向为“右”。

3、虚拟角色移动阶段:

步骤607:控制第一虚拟角色在棋盘活动区域上沿第一移动方向移动。

第二客户端控制第一虚拟角色在棋盘活动区域上沿第一移动方向移动。

步骤608:获取第一虚拟角色的角色坐标、第一虚拟角色的移动方向和棋盘活动区域的原点坐标。

角色坐标至第一虚拟角色的模型的中心点所对应的坐标。

原点坐标由技术人员自行设置。

步骤609:根据第一虚拟角色的角色坐标,确定第一虚拟角色所在的第一方格。

由于第一虚拟角色实在棋盘活动区域上移动的,故整个棋盘活动区域可以抽象为由若干个方格组成的区域。示例性的,如图8所示,整个棋盘活动区域可以被抽象为4*4的方格结构,其中,点802为原点,点801代表第一虚拟角色。示例性的,根据点801的位置关系,确定第一方格81。

步骤610:根据第一虚拟角色的移动方向和第一方格,确定位于移动方向前方的第二方格。

示例性的,如图8所示,第一虚拟角色向右移动,则位于第一方格81右侧的第一个方格被确定为第二方格82。

步骤611:响应于第一虚拟角色的角色坐标达到第二方格,确定第二方格的中心点为目标位置。

示例性的,当第一虚拟角色801进入第二方格83中时,确定第二方格82的中心点803为目标位置。

可选地,在第一虚拟角色移动的过程中,随时监测是否到达第二方格。因为即使每帧监测也存在误差,所以设定一个误差值,当玩家离第二方格的距离小于误差值时,进行下一步。

步骤612:判断目标位置处是否存在虚拟障碍物。

若目标位置处存在虚拟障碍物,则执行步骤613;

若目标位置处不存在虚拟障碍物,则执行步骤614。

步骤613:在虚拟环境画面上显示第一虚拟角色在棋盘活动区域上原地踏步。

响应于目标位置处存在虚拟障碍物,在虚拟环境画面上显示第一虚拟角色在棋盘活动区域上原地踏步。由于在目标位置处存在虚拟障碍物,则说明第一虚拟角色无法到达目标位置处,则显示第一虚拟角色的原地踏步,使之符合实际情况。

步骤614:控制第一虚拟角色在棋盘活动区域上沿第一移动方向移动至目标位置处。

第二客户端控制第一虚拟角色在棋盘活动区域上沿第一移动方向移动至目标位置处,并向第一客户端发送位置同步指令。

可选地,由于第一虚拟角色的运动是一个动态的过程,故在接收摇杆部件上触发的摇动操作后,返回步骤607,重复上述步骤。

步骤615:当第一虚拟角色到达目标位置时,向第一客户端发送位置同步指令。

当第一虚拟角色到达目标位置时,第二客户端向第一客户端发送位置同步指令。

综上所述,本实施例会将第一虚拟角色的移动分为两个部分,在第二客户端上的第一虚拟角色刚开始移动时,就向第一客户端发送开始移动指令,使第一客户端上的第一虚拟角色预先显示开始移动,并在之后发送位置同步指令,时第一客户端确定第一虚拟角色的目标位置。由于本方法会预先使第一客户端上的目标虚拟角色显示开始移动,由于开始移动指令携带的数据量较小,使得第一客户端上第一虚拟角色的移动对网络的依赖性下降,在高网络延迟下,第一客户端上显示第一虚拟角色的移动仍旧比较平滑,也使得第一客户端和第二客户端上的第一虚拟角色的移动方式更为接近,增强整体系统的实时性。

且,将摇杆部件的摇杆部件的可摇动方向划分为n个摇动方向区域,并建立相应的关系,使得用户可以通过摇杆来实现“炸弹人”游戏中的移动方式。同时通过将棋盘活动区域抽象为由若干方格组成的区域,使得第一虚拟角色可以实现在虚拟环境中进行一格一格地移动。

此外,本实施例还将虚拟环境划分为多个方格,使得虚拟角色只能在方格之间移动,而不是在虚拟环境中随意移动,虚拟角色的移动方式更符合“炸弹人”游戏的移动方式。

进一步的,在接下来的实施例中,由于在传统MMORPG游戏中,地图是基于像素设计的,虚拟角色理论上可以位于任意一个像素点处,而“炸弹人”游戏要求虚拟角色每次只能在固定的若干个位置上,因此,在MMORPG游戏中实现“炸弹人”游戏时,有必要先根据虚拟角色所位于的像素点确定虚拟角色所处的方格,并使得在棋盘活动区域中的虚拟角色中可以朝固定的方向按照固定的步长进行移动。

图9示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的流程示意图。该方法可由图2所示的第二终端260上的第二客户端执行,该方法包括:

步骤901:响应于接收到移动操作,控制第一虚拟角色在棋盘活动区域上移动,以及向第一客户端发送开始移动指令。

具体过程可参考上述的步骤304,此处不再赘述。

步骤902:获取第一虚拟角色的角色坐标、第一虚拟角色的移动方向和棋盘活动区域的原点坐标。

具体过程可参考上述步骤608,此处不再赘述。

步骤903:计算第一虚拟角色的角色坐标相对于第一方格的中心点坐标的偏差值。

示例性的,如图10所示,将Xp记为第一虚拟角色的角色坐标1002,Xs记为原点坐标1001,则先获得角色坐标1002与原点坐标1001的差值Xdiff=Xp–Xs。此时,偏差值Xoffset=Xdiff%2。

步骤904:计算第一方格的中心点坐标。

示例性的,当偏差值Xoffset>n/2时,n表示方格的边长,第一方格的中心点坐标Xcurrent=Xp+2–Xoffset;当Xoffset

步骤905:计算第二方格的中心点坐标,并将第二方格的中心点坐标作为目标位置。

示例性的,如图10,在确定第一虚拟角色的移动方向和第一方格1005的中心点坐标后,由于第二方格在第一虚拟角色的移动方向所对应的路径上,故第二方格1006的中心点坐标为Xnext=Xcurrent+n*x/2,其中,x为正整数,点1004即为第二方格的中心点。

步骤906:判断目标位置处是否存在虚拟障碍物。

若目标位置处存在虚拟障碍物,则执行步骤908;

若目标位置处不存在虚拟障碍物,则执行步骤907。

步骤907:控制第一虚拟角色向目标位置移动,并向第一客户端发送位置同步指令。

响应于目标位置处不存在虚拟障碍物,控制第一虚拟角色向目标位置移动,并向第一客户端发送位置同步指令。

步骤908:控制第一虚拟角色在棋盘活动区域上原地踏步。

响应于目标位置处存在虚拟障碍物,控制第一虚拟角色在棋盘活动区域上原地踏步。

步骤909:判断第一虚拟角色是否到达目标位置。

若第一虚拟角色到达目标位置,执行步骤910;

若第一虚拟角色未到达目标位置,返回步骤907。

步骤910:判断是否继续接收到移动操作。

若继续接收到移动操作,返回步骤902;

若未继续接收到移动操作,执行步骤911。

由于在实际的游戏过程中,第一虚拟角色的移动是一个连贯的过程,在第一虚拟角色到达目标位置后,第一虚拟角色极有可能还会继续移动,故需要重复上述的流程。

步骤911:流程结束。

综上所述,本实施例给出了一种控制虚拟角色进行移动的计算方法,该方法可以运用于任意形状的棋盘活动区域上,还可以建立任意形态的坐标系,满足实际条件的需求,且上述过程是一个循环迭代的过程,为传统MMORPG游戏中的虚拟角色的移动提供了完整的实施方式,且便于实现,计算过程相对简单,可以进一步提高系统的实时性。

由于本申请涉及的MMORPG游戏是基于多人对战的,故在虚拟环境中存在其它客户端也在进行游戏,对第一客户端涉及的内容进行介绍,如下。

图11示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的方法的流程示意图。该方法可由图2所示的第一终端220上的第一客户端执行,该方法包括:

步骤1102:显示虚拟环境画面,虚拟环境画面包括棋盘活动区域和位于棋盘活动区域上的目标虚拟角色,目标虚拟角色由第二客户端控制。

虚拟环境画面是终端中的应用程序在运行的过程中,以虚拟角色的第一人称视角或者第三人称视角在虚拟世界中进行观察所获得的画面。可选地,本申请的实施例中,虚拟环境画面是在虚拟世界中通过摄像机模型对虚拟角色进行观察时的画面。

目标虚拟角色指由第二客户端控制的角色,且目标虚拟角色是从第一客户端上观察获得的。可选地,目标虚拟角色包括人物、动物、植物、动漫角色中的至少一种。

棋盘活动区域指在虚拟环境中虚拟角色的活动区域,且该活动区域呈棋盘状,由若干个方格组成。示例性的,如图4所示,棋盘活动区域是基于虚拟障碍物103的排列方式而形成的棋盘状区域。

步骤1104:响应于接收到来自第二客户端的开始移动指令,在虚拟环境画面上显示目标虚拟角色在棋盘活动区域上进行按照第一速度移动。

开始移动指令用于通知第一客户端目标虚拟角色开始向一个方向进行移动。其中,开始移动指令携带有目标虚拟角色的移动方向。

示例性的,在第二客户端上,当用户控制目标虚拟角色开始向右移动,第二客户端向第一客户端发送上述的开始移动指令,开始移动指令携带有目标虚拟角色向右移动的信息。

第一速度指接收到来自第二客户端的开始移动指令时,目标虚拟角色的移动速度。可选地,第一速度为固定值。

可选地,第二客户端先向服务器发送开始移动指令,再由服务器向第一客户端转发该开始移动指令。或者,第二客户端直接向第一客户端发送开始移动指令。

可选地,在截取服务器向第一客户端发送的数据包后,从该数据包中可以取得上述开始移动指令。

示例性的,如图12所示,在第一客户端接收到来自第二客户端的开始移动指令时,显示目标虚拟角色102在棋盘活动区域上进行按照第一速度从位置1201移动到位置1202。

步骤1106:响应于接收到位置同步指令,在虚拟环境画面上显示目标虚拟角色在棋盘活动区域上按照第二速度移动至目标位置,目标位置是位置同步指令携带的位置。

位置同步指令是由第二客户端发送的,且用于同步在第一客户端上目标虚拟角色的位置。且,位置同步指令携带有目标虚拟角色的位置。

第二速度指接收到来自第二客户端的位置同步指令时,目标虚拟角色的移动速度。其中,第二速度可以和第一速度相同,也可以不同。

可选地,位置同步指令是基于一定的频率进行发送的,例如,第二客户端每隔1秒发送位置同步指令。或者,位置同步指令的发送时间是在开始移动指令发送后的第i秒,i为正数,例如,在开始移动指令发送后的第1s发送位置同步指令。

可选地,在截取服务器向第一客户端发送的数据包后,从该数据包中可以取得上述位置同步指令。

示例性的,如图12所示,在第一客户端接收到来自第二客户端的位置同步指令时,显示目标虚拟角色102在棋盘活动区域上进行按照第一速度从位置1202移动到位置1203。

综上所述,本实施例会将目标虚拟角色的移动分为两个部分,在第二客户端上的目标虚拟角色刚开始移动时,就向第一客户端发送开始移动指令,使第一客户端上的目标虚拟角色预先开始移动,并在之后发送位置同步指令,确定目标虚拟角色的目标位置。由于本方法会预先使第一客户端上的目标虚拟角色显示开始移动,由于开始移动指令携带的数据量较小,使得第一客户端上目标虚拟角色的移动对网络的依赖性下降,在高网络延迟下,第一客户端上显示目标虚拟角色的移动仍旧比较平滑,也使得第一客户端和第二客户端上的目标虚拟角色的移动方式更为接近,增强整体系统的实时性。

在接下来的实施例中,从第一客户端的角度对本申请进行介绍,接下来的实施例将虚拟角色的移动过程分为两部分,并在不同的阶段发送相应的指令,即使在网络延迟较高的情况下,第二客户端上虚拟角色的移动动作仍比较顺畅,还能降低不同客户端上虚拟角色位置的误差。

图13示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的方法的流程示意图。该方法可由图2所示的第一终端220上的第一客户端执行,该方法包括:

基于图11实施例的可选实施例中,上面步骤1102至步骤1104可替代实现成为如下步骤1301至步骤1302。

步骤1301:显示虚拟环境画面。

步骤1302:响应于接收到来自第二客户端的开始移动指令,在虚拟环境画面上显示目标虚拟角色在棋盘活动区域上进行按照第一速度移动。

第一速度为第二客户端上目标虚拟角色的实际移动速度。

步骤1303:响应于接收到位置同步指令,确定位置同步指令的发送时间和接收时间。

发送时间指服务器向位置同步指令的时间,该发送时间是基于服务器时间。

接收时间指第一客户端接收到位置同步指令的时间,该时间也是基于服务器时间。

示例性的,服务器于12:00:00向第一客户端发送位置同步指令,第一客户端与12:00:01接收到服务器发送的位置同步指令。

可选地,提高向第一客户端发送位置同步指令的频率。该做法可以保证第一客户端及时接收到目标虚拟角色的位置信息和状态信息,由于在虚拟环境中存在的用户有限,故适当增加发送位置同步指令的频率,不会对服务器产生太大影响。

可选地,技术人员可以根据实际情况降低虚拟角色的移动速度的大小。由于信息传输的延迟是不可避免的,故适当降低虚拟角色的移动速度,这样可以减少由于延迟产生的目标虚拟角色的移动距离的误差量。

步骤1304:响应于发送时间和接收时间的差值大于第一阈值,确定第一速度*放大系数为第二速度。

第一阈值可由技术人员根据实际情况自行设置。示例性的,第一阈值为1s。

示例性的,将第二速度记为S,第一速度记为Speed,加速系数记为factor,则S=factor*Speed。

其中,根据发送时间和接收时间的差值,确定放大系数,放大系数与差值呈正相关。示例性的,放大系数factor=k*factor

步骤1305:响应于发送时间和接收时间的差值小于第一阈值,确定第一速度等于第二速度。

响应于发送时间和接收时间的差值小于第一阈值,确定放大系数为1,即确定第一速度等于第二速度。

步骤1306:响应于发送时间和接收时间的差值大于第二阈值,在虚拟环境画面上显示目标虚拟角色在棋盘活动区域上跳变至目标位置。

其中,第二阈值大于第一阈值。第二阈值也由技术人员根据实际情况确定。由于在差值大于第二阈值时,说明第一客户端已经在较长的时间内没有接收到位置同步指令,此时接收到位置同步指令时,目标虚拟角色已经移动了较远的距离,为保证游戏中虚拟角色位置之间的偏差较小,对目标虚拟角色的位置坐跳变处理。

示例性的,图14示出了目标虚拟角色的跳变移动过程,其前提是发送时间和接收时间的差值大于第二阈值,在第一客户端接收到来自第二客户端的位置同步指令时,显示目标虚拟角色102在棋盘活动区域上从位置1201跳变到位置1203。

步骤1307:在虚拟环境画面上显示目标虚拟角色在棋盘活动区域上按照第二速度移动至目标位置。

示例性的,图12示出了目标虚拟角色的连续移动过程,其前提是发送时间和接收时间的差值小于第二阈值,在第一客户端接收到来自第二客户端的开始移动指令时,显示目标虚拟角色102在棋盘活动区域上进行按照第一速度从位置1201移动到位置1202,在第一客户端接收到来自第二客户端的位置同步指令时,显示目标虚拟角色102在棋盘活动区域上进行按照第一速度从位置1202移动到位置1203。

综上所述,本实施例会将目标虚拟角色的移动分为两个部分,在第二客户端上的目标虚拟角色刚开始移动时,就向第一客户端发送开始移动指令,使第一客户端上的目标虚拟角色预先开始移动,并在之后发送位置同步指令,确定目标虚拟角色的目标位置。由于本方法会预先使第一客户端上的目标虚拟角色显示开始移动,由于开始移动指令携带的数据量较小,使得第一客户端上目标虚拟角色的移动对网络的依赖性下降,在高网络延迟下,第一客户端上显示目标虚拟角色的移动仍旧比较平滑,也使得第一客户端和第二客户端上的目标虚拟角色的移动方式更为接近,增强整体系统的实时性。

而且,对在视野中的其他玩家进行移动时,会进行适当的加速,可以让每个用户看到的移动表现不会出现肉眼可见的延迟,保证虚拟角色的移动更为平滑,也使得第一客户端和第二客户端上的目标虚拟角色的移动方式更为接近,增强整体系统的实时性,保证用户的游玩体验。

在接下来的实施例中,位置同步指令中包括完整路点,完整路点用于记录目标虚拟角色从开始移动到到达目标位置的路径。而在第一客户端在接收到位置同步指令时,第一客户端上的目标虚拟对象已经按照第一速度移动了一定的距离,这时完整路点中最前端的一个甚至多个路点都是已经表现过的,如果按照位置同步指令表现目标虚拟角色的移动,则可能出现目标虚拟角色向一个方向移动,然后返回到出发点,从出发点重新移动的情况,为避免这种情况的发生,需要在接收到位置同步指令时,剔除掉已经在第一客户端中表现过的路点。

图15示出了本申请一个示例性实施例提供的控制虚拟角色进行移动的方法的流程示意图。该方法可由图2所示的第一终端220上的第一客户端执行,该方法包括:

步骤1501:响应于接收到来自第二客户端的开始移动指令,在虚拟环境画面上显示目标虚拟角色在棋盘活动区域上按照第一速度移动。

具体过程可参照步骤1104,此处不再赘述。

步骤1502:响应于接收到位置同步指令,获取已经历路点,已经历路点用于记录在第一客户端上目标虚拟对象已经移动通过的路径。

在上文中已经提到,在接收到开始移动指令和位置同步指令之间,目标虚拟角色就已经移动了一段距离,这里的已经历路点就是用于表示这段已经移动的距离。

示例性的,在接收到开始移动指令时,目标虚拟角色在第1格上,并根据开始移动指令向正方向移动,在接收到位置同步指令时,在第一客户端上,目标虚拟角色已经移动到了第2格,这时,已经历路点表示的是目标虚拟角色在第一客户端上从第1格移动到第2格的过程。

步骤1503:比较完整路点和已经历路点,获得未经历路点,未经历路点用于记录第一客户端上目标虚拟对象还未移动通过的路径。

由于网络延迟是不可避免的,所以在第一客户端接收到位置同步指令时,在第一客户端上显示的目标虚拟角色的位置,同第二客户端上目标虚拟角色的位置存在偏差,故使用未经历路点记录上述存在偏差的路点。

示例性的,在接收到位置同步指令时,目标虚拟角色在第一客户端上表现为移动了2格的距离,而位置同步指令表示目标虚拟角色实际上移动了6格的距离,故未经历路点表示目标虚拟角色从第3格移动到第6格的过程。

步骤1504:根据未经历路点,在虚拟环境画面上显示目标虚拟角色在棋盘活动区域上按照第二速度移动至目标位置。

示例性的,在接收到位置同步指令时,目标虚拟角色在第一客户端上表现为移动了2格的距离,而位置同步指令表示目标虚拟角色实际上移动了6格的距离,故在第一客户端上显示目标虚拟角色从第2格移动到第6格的过程。

综上所述,本实施例在表现目标虚拟角色的移动时,会剔除已经在第一客户端上表现过的路点,选择未表现的路点进行表现,可以避免目标虚拟角色进行多余的移动,而且保证了目标虚拟角色移动表现比较平滑。

可选地,为提高用户在游戏中的随机性和趣味性,在棋盘活动区域上生成场景虚拟对象,且场景虚拟对象包括虚拟障碍物、移动速度道具、积分道具、爆炸物道具、敌对对象、中立对象中的至少一种。其中,目标虚拟道具可与场景虚拟对象进行交互。

示例性的,对爆炸物道具的爆炸过程进行简单介绍。由于客户端对炸弹爆炸的展示,是播放一个特定时长的特效,而服务器对于伤害的判定是一个瞬间的过程。因此导致如果玩家出现了在客户端播放炸弹特效开始后,服务器判定炸弹伤害效果前从爆炸范围内移动至了爆炸范围外,或者在服务器判定炸弹效果后,客户端播放炸弹特效完毕前从爆炸范围外移动至了爆炸范围内等情况,会导致客户端表现出了,玩家处于炸弹的爆炸范围内而没有被炸弹所伤害的误表现,极大的影响玩家的体验,使得玩家对游戏的公平性产生怀疑,故本申请提出以下方法来进行优化。如图16所示,图16示出了本申请一个示例性实施例提供的爆炸物道具的爆炸的流程示意图,该流程包括以下步骤:

步骤1601:响应于爆炸物道具爆炸开始,向第一客户端发送爆炸通知。

爆炸通知携带有目标虚拟角色的属性值变化、爆炸物道具的作用范围、爆炸物道具的种类、目标虚拟角色的身份信息、爆炸物道具的爆炸时长中的至少一种。示例性的,爆炸通知携带有目标虚拟角色血量值减少3点和爆炸物道具的作用范围为1格。

步骤1602:服务器对爆炸物道具的作用范围内的目标虚拟角色的属性值进行一次数值判定。

数值判定用于判断爆炸物的作用范围的目标虚拟角色的属性值是否会发生变化。例如,目标虚拟角色在爆炸物道具爆炸时处于作用范围内,则扣除目标虚拟角色的部分生命值。

爆炸物道具在爆炸的过程中具有特定的作用范围。可选地,作用范围呈现圆形、矩形、十字形、扇形、三角形中的至少一种。且,爆炸物道具在爆炸的过程中会影响作用范围内的目标虚拟角色的属性值。

步骤1603:服务器对爆炸物道具的作用范围内的目标虚拟角色的属性值进行第二次数值判定。

本步骤中的数值判定同步骤1602中的数值判定相同。

可选地,每隔预设时间就对爆炸物道具的作用范围内的目标虚拟角色的属性值进行一次数值判定。

步骤1604:判断爆炸物道具是否爆炸结束。

爆炸物道具爆炸结束时,执行步骤1605;

爆炸物道具未爆炸结束时,返回步骤1603。

步骤1605:在棋盘活动区域上显示爆炸物道具的爆炸结果。

在第一客户端的棋盘活动区域上显示爆炸物道具的爆炸结果。

爆炸结果包括爆炸物道具的爆炸动画和目标虚拟角色的属性值变化中的至少一种。示例性的,爆炸动画为在爆炸物道具的位置显示一朵“蘑菇云”,并显示目标虚拟角色的血量值变化。

综上所述,本实施例将服务器中的炸弹爆炸伤害判定进行了优化,将原先的单次瞬时伤害判定过程,优化为了多次瞬时的伤害判定过程,使得第一客户端上显示的爆炸结果更符合实际情况,从而避免了客户端的误表现,保证了玩家的体验效果不出现差错。

示例性的,对敌对对象的撞击过程进行简单介绍。由于服务器在判断玩家所控制角色与敌对对象碰撞时,客户端有一定概率出现如下错误表现:客户端显示玩家所控制角色与敌对对象碰撞,但服务器并没有判定该玩家受到伤害。或者,客户端显示玩家所控制角色与敌对对象并没有碰撞,而服务器判定该玩家受到伤害,本申请提出以下方法来进行优化。

如图17所示,图17示出了本申请一个示例性实施例提供的敌对对象的撞击的流程示意图,该方法应用于终端中,该流程包括以下步骤:

步骤1701:第一客户端判断目标虚拟角色与敌对对象之间的距离是否小于距离阈值。

当目标虚拟角色与敌对对象之间的距离小于距离阈值时,执行步骤1702;

当目标虚拟角色与敌对对象之间的距离不小于距离阈值时,结束该流程。

距离阈值可由技术人员根据目标虚拟角色的模型和敌对对象的模型进行确定。

步骤1702:第一客户端向服务器发送撞击信息。

撞击信息携带有目标虚拟角色与敌对对象之间的距离、目标虚拟角色的信息和敌对对象的信息。

步骤1703:基于撞击信息,服务器判断目标虚拟角色与敌对对象之间的距离是否小于距离阈值。

目标虚拟角色与敌对对象之间的距离小于距离阈值时,执行步骤1704;

目标虚拟角色与敌对对象之间的距离不小于距离阈值时,返回步骤1701。

步骤1704:服务器生成撞击结果。

撞击结果用于表示目标虚拟角色与敌对对象相撞。

可选地,撞击结果还携带有目标虚拟角色的属性值、敌对对象的属性值、目标虚拟角色的属性值变化、敌对对象的属性值变化、撞击动画的种类中的至少一种。

步骤1705:第一客户端接收由服务器返回的撞击结果。

步骤1706:根据撞击结果,第一客户端显示目标虚拟角色的撞击动画。

撞击动画是目标虚拟角色与敌对对象相撞时,在第一客户端上显示的动画。

综上所述,本实施例将单独的服务器判定的伤害过程,优化成为了服务器判定+客户端辅助判定与服务器裁决的双重判定方式。通过客户端辅助判定与服务器裁决的方式保证客户端的表现不出现差错,并提升玩家的体验,同时将缩减后的服务器判定作为保底机制,避免玩家作弊或者客户端网络环境不稳定,造成服务器无法收到客户端发送的撞击结果,从而导致用户所控制的虚拟角色与敌对对象撞击后无法死亡的情况,保证了游戏的公平运行。

如图18所示,图18示出了本申请一个示例性实施例提供的敌对对象的撞击的流程示意图,该方法应用于服务器中,该流程包括以下步骤:

步骤1801:服务器判断目标虚拟角色与敌对对象之间的距离是否小于距离阈值。

目标虚拟角色与敌对对象之间的距离小于距离阈值,执行步骤1802;

目标虚拟角色与敌对对象之间的距离不小于距离阈值,重复执行步骤1801。

步骤1802:生成撞击结果。

撞击结果用于表示目标虚拟角色与敌对对象相撞。

可选地,撞击结果还携带有目标虚拟角色的属性值、敌对对象的属性值、目标虚拟角色的属性值变化、敌对对象的属性值变化、撞击动画的种类中的至少一种。

步骤1803:向第一客户端发送撞击结果。

综上所述,本实施例通过在服务器上判定用户所控制的虚拟角色与敌对对象撞击的撞击结果。通过服务器裁决的方式保证客户端的表现不出现差错,并提升玩家的体验。

图19示出了本申请的一个示例性实施例提供的控制虚拟角色进行移动的装置的结构示意图。该系统可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分,该装置1900包括:

第一显示模块1901,用于显示虚拟环境画面,所述虚拟环境画面包括棋盘活动区域和位于所述棋盘活动区域上的目标虚拟角色,所述目标虚拟角色由第二客户端控制;

第一收发模1902,用于响应于接收到来自所述第二客户端的开始移动指令,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上进行按照第一速度移动;

第一同步模块1903,用于响应于接收到位置同步指令,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上按照第二速度移动至目标位置,所述目标位置是所述位置同步指令携带的位置。

在本申请的一个可选设计中,所述第一同步模块1903,还用于响应于接收到所述位置同步指令,确定所述位置同步指令的发送时间和接收时间;根据所述发送时间和所述接收时间的差值,确定所述第二速度;在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上按照所述第二速度移动至所述目标位置。

在本申请的一个可选设计中,所述第一同步模块1903,还用于响应于所述发送时间和所述接收时间的所述差值大于第一阈值,确定所述第一速度*放大系数为所述第二速度;或,响应于所述发送时间和所述接收时间的所述差值小于所述第一阈值,确定所述第一速度等于所述第二速度。

在本申请的一个可选设计中,所述第一同步模块1903,还用于根据所述发送时间和所述接收时间的所述差值,确定所述放大系数,所述放大系数与所述差值呈正相关;确定所述第一速度*所述放大系数为所述第二速度。

在本申请的一个可选设计中,所述第一同步模块1903,还用于响应于所述差值大于第二阈值,在所述虚拟环境画面上显示所述虚拟角色在所述棋盘活动区域上跳变至所述目标位置,所述第二阈值大于所述第一阈值。

在本申请的一个可选设计中,所述第一显示模块1901,还用于在响应于接收到来自所述第二客户端的所述开始移动指令,根据所述移动方向,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上按照第一速度向所述第一移动方向移动。

在本申请的一个可选设计中,所述第一显示模块1901,还用于响应于接收到所述位置同步指令,获取已经历路点,所述已经历路点用于记录在所述第一客户端上所述目标虚拟对象已经移动通过的路径;比较所述完整路点和所述已经历路点,获得未经历路点,所述未经历路点用于记录所述第一客户端上所述目标虚拟对象还未移动通过的路径;根据所述未经历路点,在所述虚拟环境画面上显示所述目标虚拟角色在所述棋盘活动区域上按照所述第二速度移动至所述目标位置。

综上所述,本实施例会将目标虚拟角色的移动分为两个部分,在第二客户端上的目标虚拟角色刚开始移动时,就向第一客户端发送开始移动指令,使第一客户端上的目标虚拟角色预先开始移动,并在之后发送位置同步指令,确定目标虚拟角色的目标位置。由于本方法会预先使第一客户端上的目标虚拟角色显示开始移动,由于开始移动指令携带的数据量较小,使得第一客户端上目标虚拟角色的移动对网络的依赖性下降,在高网络延迟下,第一客户端上显示目标虚拟角色的移动仍旧比较平滑,也使得第一客户端和第二客户端上的目标虚拟角色的移动方式更为接近,增强整体系统的实时性。

图20示出了本申请的一个示例性实施例提供的控制虚拟角色进行移动的装置的结构示意图。该系统可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分,该装置2000包括:

第二显示模块2001,用于显示虚拟环境画面,所述虚拟环境画面包括棋盘活动区域和位于所述棋盘活动区域上的第一虚拟角色;

第二收发模块2002,用于响应于接收到移动操作,控制所述第一虚拟角色在所述棋盘活动区域上移动,以及向第一客户端发送开始移动指令,所述开始移动指令用于触发所述第二客户端显示所述第一虚拟角色在所述棋盘活动区域上按照第一速度进行移动;

第二同步模块2003,用于确定所述第一虚拟角色在所述棋盘活动区域上的目标位置;

所述第二收发模块2002,还用于向所述第一客户端发送位置同步指令,所述位置同步指令用于触发所述第一客户端显示所述第一虚拟角色在所述棋盘活动区域上按照第二速度移动至所述目标位置。

在本申请的一个可选设计中,所述第二收发模块2002,还用于向所述第二客户端发送所述位置同步指令和发送时刻,所述发送时刻是基于服务器时间生成的。

在本申请的一个可选设计中,所述第二同步模块2003,还用于响应于接收到摇杆部件上触发的摇动操作,确定所述摇动操作的摇动方向所属的摇动方向区域,所述摇杆部件的可摇动方向被划分为n个摇动方向区域,每个所述摇动方向区域对应各自的移动方向,n为正整数;响应于所述摇动操作的摇动方向所属的摇动方向区域为第一摇动方向区域,确定所述第一虚拟角色的移动方向为第一移动方向;控制所述第一虚拟角色在所述棋盘活动区域上沿所述第一移动方向移动。

在本申请的一个可选设计中,所述第二显示模块2001,还用于获取所述第一虚拟角色的角色坐标、所述第一虚拟角色的移动方向和所述棋盘活动区域的原点坐标;根据所述第一虚拟角色的角色坐标,确定所述第一虚拟角色所在的第一方格;根据所述第一虚拟角色的移动方向和所述第一方格,确定位于所述移动方向前方的第二方格;响应于所述第一虚拟角色的所述角色坐标达到所述第二方格,确定所述第二方格的中心点为所述目标位置。

在本申请的一个可选设计中,所述第二同步模块2003,还用于获取方格边长;基于所述虚拟环境中的坐标系,获取平行于第一坐标轴的第一线条和平行于第二坐标轴的第二线条,所述第一线条与所述第一坐标轴的距离为a*方格边长,所述第二线条与所述第二坐标轴的距离为b*方格边长,所述a和所述b为正整数;根据所述第一线条、所述第二线条、所述第一坐标轴和所述第二坐标轴,生成所述棋盘活动区域。

在本申请的一个可选设计中,所述第二同步模块2003,还用于获取所述棋盘活动区域的原点坐标和方格边长;将所述角色坐标和所述原点坐标的差值,作为坐标差值;根据所述坐标差值和所述方格边长的比值的余数,确定所述第一方格的中心点的坐标;根据所述第一方格的中心点的坐标,确定所述第一虚拟角色所在的所述第一方格。

在本申请的一个可选设计中,所述第二同步模块2003,还用于根据所述第一虚拟角色的移动方向、所述第一方格的中心点的坐标和所述方格边长,确定所述第二方格的中心点的坐标;根据所述第二方格的中心点的坐标,确定位于所述移动方向前方的所述第二方格。

在本申请的一个可选设计中,所述第二显示模块2001,还用于响应于接收到所述移动操作且所述目标位置处存在虚拟障碍物,在所述虚拟环境画面上显示所述第一虚拟角色在所述棋盘活动区域上原地踏步。

本实施例会将第一虚拟角色的移动分为两个部分,在第二客户端上的第一虚拟角色刚开始移动时,就向第一客户端发送开始移动指令,使第一客户端上的第一虚拟角色预先显示开始移动,并在之后发送位置同步指令,时第一客户端确定第一虚拟角色的目标位置。由于本方法会预先使第一客户端上的目标虚拟角色显示开始移动,由于开始移动指令携带的数据量较小,使得第一客户端上第一虚拟角色的移动对网络的依赖性下降,在高网络延迟下,第一客户端上显示第一虚拟角色的移动仍旧比较平滑,也使得第一客户端和第二客户端上的第一虚拟角色的移动方式更为接近,增强整体系统的实时性。

图21是本申请一个实施例提供的服务器的结构示意图。具体来讲:服务器2100包括中央处理单元(英文:Central Processing Unit,简称:CPU)2101、包括随机存取存储器(英文:Random Access Memory,简称:RAM)2102和只读存储器(英文:Read-Only Memory,简称:ROM)2103的系统存储器2104,以及连接系统存储器2104和中央处理单元2101的系统总线2105。计算机设备2100还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)2106,和用于存储操作系统2113、应用程序2114和其他程序模块2115的大容量存储设备2107。

基本输入/输出系统2106包括有用于显示信息的显示器2108和用于用户输入信息的诸如鼠标、键盘之类的输入设备2109。其中显示器2108和输入设备2109都通过连接到系统总线2105的输入/输出控制器2110连接到中央处理单元2101。基本输入/输出系统2106还可以包括输入/输出控制器2110以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入/输出控制器2110还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备2107通过连接到系统总线2105的大容量存储控制器(未示出)连接到中央处理单元2101。大容量存储设备2107及其相关联的计算机可读介质为服务器2100提供非易失性存储。也就是说,大容量存储设备2107可以包括诸如硬盘或者只读光盘(英文:Compact Disc Read-Only Memory,简称:CD-ROM)驱动器之类的计算机可读介质(未示出)。

不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读存储器(英文:Erasable Programmable Read-Only Memory,简称:EPROM)、电可擦除可编程只读存储器(英文:Electrically Erasable Programmable Read-Only Memory,简称:EEPROM)、闪存或其他固态存储其技术,CD-ROM、数字通用光盘(英文:Digital Versatile Disc,简称:DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器2104和大容量存储设备2107可以统称为存储器。

根据本申请的各种实施例,服务器2100还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器2100可以通过连接在系统总线2105上的网络接口单元2111连接到网络2112,或者说,也可以使用网络接口单元2111来连接到其他类型的网络或远程计算机系统(未示出)。

根据本申请的另一方面,还提供了一种计算机存储介质,计算机可读存储介质中存储有至少一条程序代码,程序代码由处理器加载并执行以实现如上述的控制虚拟角色进行移动的方法。

根据本申请的另一方面,还提供了一种计算机程序产品或计算机程序,上述计算机程序产品或计算机程序包括计算机指令,上述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从上述计算机可读存储介质读取上述计算机指令,上述处理器执行上述计算机指令,使得上述计算机设备执行如上述的控制虚拟角色进行移动的方法。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号