CN116271845A - 虚拟角色的位置校验方法、装置、电子设备和存储介质 - Google Patents
虚拟角色的位置校验方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116271845A CN116271845A CN202310269509.5A CN202310269509A CN116271845A CN 116271845 A CN116271845 A CN 116271845A CN 202310269509 A CN202310269509 A CN 202310269509A CN 116271845 A CN116271845 A CN 116271845A
- Authority
- CN
- China
- Prior art keywords
- client
- time
- server
- historical
- virtual character
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/75—Enforcing rules, e.g. detecting foul play or generating lists of cheating players
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供虚拟角色的位置校验方法、装置、电子设备和存储介质,该方法包括:向多个客户端同步基准服务器时间,其中,多个客户端包括第一客户端和第二客户端;当接收到第一客户端上传的交互请求时,获取当前服务器时间;其中,交互请求包括第一客户端检测得到通过第二客户端控制操作的虚拟角色的第一位置;根据当前服务器时间和基准服务器时间,计算网络延迟时长;根据网络延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置;若第二位置与第一位置之间的距离小于第一距离阈值,则校验第一位置为有效位置,否则校验第一位置为无效位置。本申请实施例可有效减少误判的现象,提高校验准确率,为玩家提供更加和平的游戏竞技环境。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种虚拟角色的位置校验方法、一种虚拟角色的位置校验装置、一种电子设备和一种计算机可读存储介质。
背景技术
在运行游戏时,为了防止玩家利用外挂手段修改游戏客户端的其他游戏角色的位置,来达到某种作弊优势,因此服务器需要对客户端上传的消息进行校验。
目前的校验方法是在客户端上传的消息中添加目标的位置信息,服务器在接收到消息时,根据消息中记录的目标位置与服务器记录的当前目标位置进行比较,如果两者距离小于指定的范围内时,则认为该消息有效,反之无效。
由于网络延迟的存在,简单地将客户端消息中记录的目标位置和服务器记录的当前目标位置进行比较,容易出现误判的问题,因为服务器将其他玩家的游戏角色的位置同步到客户端会有网络延迟,而客户端将消息发送到服务器也会有网络延迟,当总的网络延迟较大时,在服务器记录的目标位置与在客户端消息记录的目标位置,两者的距离很有可能超过指定的范围,导致被误判为无效,从而降低校验准确率,玩家游戏体验不佳。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
鉴于上述问题,提出了本申请以便提供克服上述问题或者至少部分地解决上述问题的一种虚拟角色的位置校验方法和相应的一种虚拟角色的位置校验装置、一种电子设备,以及一种计算机可读存储介质。
本申请实施例公开了一种虚拟角色的位置校验方法,应用于服务器,所述方法包括:
向多个客户端同步所述服务器的基准服务器时间,其中,所述多个客户端包括第一客户端和第二客户端;
当接收到所述第一客户端上传的交互请求时,获取所述服务器的当前服务器时间;其中,所述交互请求包括所述第一客户端检测得到通过所述第二客户端控制操作虚拟角色的第一位置;
根据所述当前服务器时间和所述基准服务器时间,计算网络延迟时长;
根据所述网络延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置;
若所述第二位置与所述第一位置之间的距离小于第一距离阈值,则校验所述第一位置为有效位置;若所述第二位置与所述第一位置之间的距离大于或等于第一距离阈值,则校验所述第一位置为无效位置。
本申请实施例还公开了一种虚拟角色的位置校验装置,应用于服务器,所述装置包括:
基准服务器时间同步模块,用于向多个客户端同步所述服务器的基准服务器时间,其中,所述多个客户端包括第一客户端和第二客户端;
当前服务器时间获取模块,用于当接收到所述第一客户端上传的交互请求时,获取所述服务器的当前服务器时间;其中,所述交互请求包括所述第一客户端检测得到通过所述第二客户端控制操作的虚拟角色的第一位置;
网络延迟时长计算模块,用于根据所述当前服务器时间和所述基准服务器时间,计算网络延迟时长;
第二位置计算模块,用于根据所述网络延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置;
第一校验模块,用于若所述第二位置与所述第一位置之间的距离小于第一距离阈值,则校验所述第一位置为有效位置;若所述第二位置与所述第一位置之间的距离大于或等于第一距离阈值,则校验所述第一位置为无效位置。
本申请实施例还公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的虚拟角色的位置校验方法的步骤。
本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的虚拟角色的位置校验方法的步骤。
与现有技术相比,本申请实施例包括以下优点:
在本申请实施例中,向多个客户端同步服务器的基准服务器时间,其中,多个客户端包括第一客户端和第二客户端;当接收到第一客户端上传的交互请求时,获取服务器的当前服务器时间;其中,交互请求包括第一客户端检测得到通过第二客户端控制操作的虚拟角色的第一位置;根据当前服务器时间和基准服务器时间,计算网络延迟时长;根据网络延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置;若第二位置与第一位置之间的距离小于第一距离阈值,则校验第一位置为有效位置;若第二位置与第一位置之间的距离大于或等于第一距离阈值,则校验第一位置为无效位置。本申请实施例通过服务器同步基准服务器时间给客户端,使得服务器依据当前服务器时间和基准服务器时间计算出服务器下发数据到客户端和客户端上传数据到服务器的网络延迟时长,从而采用网络延迟时长,回溯虚拟角色的第二位置,从而采用服务器计算的第二位置,对客户端检测的第一位置进行校验,进而可有效减少误判的现象,提高校验准确率,为玩家提供更加和平的游戏竞技环境。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例的一种虚拟角色的位置校验方法的步骤流程图;
图2是本发明实施例中涉及服务器、第一客户端、第二客户端的交互示意图;
图3是本申请实施例的一种虚拟角色的位置校验装置的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
游戏外挂是指通过修改程序的正常代码或数据,来改变客户端的运行环境和游戏角色的能力。在运行游戏时,玩家可以利用外挂来修改游戏客户端的其他游戏角色的位置,从而达到某种作弊优势,例如在多人射击的竞技类游戏中,利用外挂将其他游戏角色吸附到准心瞄准的位置,从而大大提高射击命中率。由于客户端的程序和数据都可以被篡改,因此服务器不能完全信任来自客户端的消息,需要对客户端上传的消息进行校验。
针对上述这种修改其他游戏角色位置的外挂,目前的校验方法是在客户端发送到服务器的消息中,加上目标的位置信息,服务器在接收到这些消息时,根据客户端消息中记录的目标位置与当前服务器记录的目标位置进行比较,如果两者距离小于指定的范围内,则认为该消息有效,反之无效。
由于网络延迟的存在,简单地将客户端消息中记录的目标位置和服务器记录的当前目标位置进行比较,容易出现误判的问题,因为服务器将其他玩家的游戏角色的位置同步到客户端会有网络延迟,而客户端将消息发送到服务器也会有网络延迟,当总的网络延迟较大时,目标在服务器的位置与在客户端消息记录的位置是不同的,两者的距离很有可能超过指定的范围,从而被判定为无效。
因此,针对上述的服务器对客户端消息中目标位置的校验因网络延迟而导致的误判率过大的问题,在本实施例中的一种虚拟角色的位置校验方法可以运行于服务器。该信息处理方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器和客户端设备。
在一可选的实施方式中,云交互系统下可以运行各种云应用,例如:云游戏。以云游戏为例,云游戏是指以云计算为基础的游戏方式。在云游戏的运行模式下,游戏程序的运行主体和游戏画面呈现主体是分离的,虚拟角色的位置校验方法的储存与运行是在云游戏服务器上完成的,客户端设备的作用用于数据的接收、发送以及游戏画面的呈现,举例而言,客户端设备可以是靠近用户侧的具有数据传输功能的显示设备,如,移动终端、电视机、计算机、掌上电脑等;但是进行虚拟角色的位置校验方法的终端设备为云端的云游戏服务器。在进行游戏时,玩家操作客户端设备向云游戏服务器发送操作指令,云游戏服务器根据操作指令运行游戏,将游戏画面等数据进行编码压缩,通过网络返回客户端设备,最后,通过客户端设备进行解码并输出游戏画面。
本申请实施例提出了一种虚拟角色的位置校验方法,本申请实施例通过服务器同步基准服务器时间给客户端,使得服务器依据当前服务器时间和基准服务器时间计算出服务器下发数据到客户端和客户端上传数据到服务器的网络延迟时长,从而采用网络延迟时长,回溯虚拟角色的第二位置,从而采用服务器计算的第二位置,对客户端检测的第一位置进行校验,进而可有效减少误判的现象,提高校验准确率,为玩家提供更加和平的游戏竞技环境。
参照图1,示出了本申请实施例的一种虚拟角色的位置校验方法的步骤流程图,应用于服务器,该方法包括如下步骤:
步骤101,向多个客户端同步所述服务器的基准服务器时间,其中,所述多个客户端包括第一客户端和第二客户端。
在本申请实施例中,可以应用于服务器,服务器可以为参与游戏的各个玩家的客户端提供游戏世界的状态,包括虚拟角色的状态和游戏场景的状态。
在客户端上可以运行游戏应用,并在客户端的触控显示器上渲染图形用户界面,图形用户界面所显示的内容至少部分地包含一局部或全部的游戏场景,游戏场景的具体形态可以是方形,也可以是其它形状(比如,圆形等)。
具体地,游戏场景中包括至少一虚拟角色,该虚拟角色可以是玩家通过客户端进行操控的游戏虚拟角色,可以通过图形用户界面所呈现,所呈现的内容可以包含虚拟角色的全部,也可以是虚拟角色的局部。例如,在第三人称视角游戏中,图形用户界面所呈现的内容可以包含虚拟角色的全部,或者,在第一人称视角游戏中,图形用户界面所呈现的内容可以包含虚拟角色的部分或局部。
在游戏开局后,服务器首先会给每个虚拟角色设置对应的初始位置,比如出生点,然后服务器可以将初始位置同步给各个客户端,使得各个客户端将初始位置应用到对应的虚拟角色上,从而每个虚拟角色位于相应的初始位置上。此时,玩家可以通过客户端控制自己的虚拟角色,比如移动自己的虚拟角色的位置,或者对其他玩家的目标虚拟角色进行交互,等等。
每隔第一周期,比如每隔0.1s,各个客户端可以将其所控制操作的虚拟角色的第四位置上传给服务器,第四位置是指客户端每隔第一周期所检测的自身虚拟角色的当前位置。示例性地,客户端A控制操作虚拟角色a,客户端B控制操作虚拟角色b,客户端A每隔0.1s上传虚拟角色a的当前位置,客户端B每隔0.1s上传虚拟角色b的当前位置。
服务器每次接收到各个客户端上传的虚拟角色的第四位置后,可以对各个虚拟角色的第四位置进行校验,从而判断各个虚拟角色的第四位置是否允许的,比如某一虚拟角色是否移速过快,或者某一虚拟角色是否移动到非法的位置,等等。
在具体实现中,服务器可以通过前一第一周期接收的虚拟角色的第四位置与当前第一周期接收的虚拟角色的第四位置进行比较,例如服务器将前0.1s接收的虚拟角色a的第四位置Pa1与当前0.1s接收的虚拟角色a的第四位置Pa2进行比较,如果两者的距离在允许的范围内,那么虚拟角色a的第四位置Pa2校验通过,服务器可以将虚拟角色a的第四位置Pa2同步给其他客户端,使得其他客户端将第四位置Pa2应用到对应的虚拟角色a上,从而在其他客户端上更新虚拟角色a的位置。
为了避免玩家利用外挂来修改其他玩家的虚拟角色的位置,服务器需要对客户端上传的交互请求进行校验。进一步地,为了解决在校验过程中因网络延迟而导致误判率过大的问题,本申请实施例可以向多个客户端同步服务器的基准服务器时间。
其中,多个客户端可以包括第一客户端和第二客户端,第一客户端和第二客户端均是参与同一场游戏的客户端。在服务器上可以设置定时器,每隔第二周期,比如每隔0.1s,服务器可以向第一客户端和第二客户端同步基准服务器时间,基准服务器时间是指服务器每隔第二周期所获取的当前服务器时间,为了便于区分,设服务器每隔第二周期所获取的当前服务器时间为t0,即基准服务器时间为t0。
步骤102,当接收到所述第一客户端上传的交互请求时,获取所述服务器的当前服务器时间;其中,所述交互请求包括所述第一客户端检测得到通过所述第二客户端控制操作的虚拟角色的第一位置。
在本申请实施例中,当客户端接收到基准服务器时间t0时,客户端可以记录基准服务器时间t0以及获取基准客户端时间,基准客户端时间是指客户端在接收到基准服务器时间t0时所获取的当前客户端时间,为了便于区分,设客户端在接收到基准服务器时间t0时所获取的当前客户端时间为t1,即基准客户端时间为t1。
客户端可以计算基准服务器时间t0与基准客户端时间t1的时间差dt,即:dt=t0-t1。时间差dt是指服务器与客户端之间的时间差。
以第一客户端为示例,当第一客户端接收到服务器同步的基准服务器时间t0时,第一客户端可以记录基准服务器时间t0以及获取基准客户端时间t1,然后第一客户端可以计算基准服务器时间t0与基准客户端时间t1的时间差dt。
第一客户端控制操作的虚拟角色在对第二客户端控制操作的虚拟角色进行交互时,第一客户端可以检测第二客户端控制操作的虚拟角色此时的第一位置,第一位置即是第一客户端检测得到的通过第二客户端控制操作的虚拟角色的被交互位置,第一客户端可以将通过第二客户端控制操作的虚拟角色的第一位置作为交互请求。示例性地,客户端A控制操作的虚拟角色a,对客户端B控制操作的虚拟角色b进行射击,客户端A可以检测到通过客户端B控制操作的虚拟角色b此时的被射击位置,客户端A将检测得到的通过客户端B控制操作的虚拟角色b的被射击位置作为交互请求,例如FPS游戏的射击请求。
步骤103,根据所述当前服务器时间和所述基准服务器时间,计算网络延迟时长。
在本申请实施例中,由于服务器定时向第一客户端同步了服务器的基准服务器时间t0,因此服务器可以根据当前服务器时间t4和基准服务器时间t0,计算出服务器下发数据到客户端和客户端上传数据到服务器的网络延迟时长,具体是计算出服务器下发数据到第一客户端和第一客户端上传数据到服务器的网络延迟时长。
本申请的一个可选实施例中,所述交互请求还包括相对服务器时间,所述相对服务器时间基于所述基准服务器时间计算得到;步骤103可以包括以下子步骤:
子步骤S11,根据所述当前服务器时间和所述相对服务器时间,计算网络延迟时长。
第一客户端在将通过第二客户端控制操作的虚拟角色的第一位置作为交互请求的同时,第一客户端可以依据基准服务器时间t0计算出相对服务器时间t3。在具体实现中,第一客户端可以获取当前客户端时间,当前客户端时间是指第一客户端准备上传交互请求时所获取的当前客户端时间,为了便于区分,设第一客户端准备上传交互请求时所获取的当前客户端时间为t2,即当前客户端时间为t2。第一客户端可以将当前客户端时间t2与上述的时间差dt进行相加,得到相对服务器时间t3,即:t3=t2+dt。相对服务器时间t3是指第一客户端计算的上传交互请求时的服务器时间。
第一客户端可以将计算得到的相对服务器时间t3添加到交互请求中,从而将携带有相对服务器时间t3的交互请求发送给服务器。
在本申请实施例中,当服务器接收到第一客户端上传的交互请求时,服务器可以获取此时的当前服务器时间,当前服务器时间是指服务器在接收到第一客户端上传交互请求时所获取的当前服务器时间,为了便于区分,设服务器在接收到第一客户端上传交互请求时所获取的当前服务器时间为t4,即当前服务器时间为t4。
服务器可以从交互请求中提取相对服务器时间t3,然后根据当前服务器时间t4和相对服务器时间t3,计算出服务器下发数据到第一客户端和第一客户端上传数据到服务器的网络延迟时长。
本申请的一个可选实施例中,子步骤S11可以包括以下子步骤:
子步骤S21,计算所述当前服务器时间与所述相对服务器时间的时间差;
子步骤S22,将所述当前服务器时间与所述相对服务器时间的时间差,确定为网络延迟时长。
在本申请实施例中,服务器可以计算当前服务器时间t4与相对服务器时间t3的时间差lag1,即:lag1=t4-t3。
服务器可以将计算得到的时间差lag1确定为服务器下发数据到第一客户端和第一客户端上传数据到服务器的网络延迟时长。
结合上述公式t3=t2+dt,dt=t0-t1,可以得到:lag1=t4-t3=(t4-t0)-(t2-t1)。
其中,t4和t0都是服务器时间,t2和t1都是客户端时间,因此(t4-t0)是指服务器下发数据与服务器接收到数据的时间差,(t2-t1)是指第一客户端接收到数据到第一客户端上传数据的时间差,那么(t4-t0)-(t2-t1)就是服务器下发数据到第一客户端和第一客户端上传数据到服务器的网络延迟时长lag1。
步骤104,根据所述网络延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
在本申请实施例中,在计算得到网络延迟时长lag1后,服务器可以采用网络延迟时长lag1,计算通过第二客户端控制操作的虚拟角色的第二位置,第二位置即是服务器计算的通过第二客户端控制操作的虚拟角色的被交互位置。
本申请的一个可选实施例中,步骤104可以包括以下子步骤:
子步骤S31,确定消息分发延迟时长;
子步骤S32,确定位置平滑过渡所需时长;
子步骤S33,将所述网络延迟时长、所述消息分发延迟时长和所述位置平滑过渡所需时长进行相加,得到通过所述第二客户端控制操作的虚拟角色的位置延迟时长;
子步骤S34,根据所述位置延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
在本申请实施例中,除了网络延迟时长lag1,还存在消息分发延迟时长lag2和位置平滑过渡所需时长lag3,因此服务器需要确定消息分发延迟时长lag2和位置平滑过渡所需时长lag3。
消息分发延迟时长lag2,是指服务器消息进入消息发送队列到网络发送的时间差,消息分发延迟时长lag2相对稳定。
位置平滑过渡所需时长lag3,是指第一客户端接收到服务器同步的通过第二客户端控制操作的虚拟角色的第四位置到将该第四位置设置到对应虚拟角色的时间差。如果该第四位置是瞬移位置类型,则会立即修改对应虚拟角色的位置;如果该第四位置是平滑过渡位置类型,则会采用内插法进行平滑过渡,该平滑过渡所需时长较为固定。
需要说明的是,虚拟角色的位置的改变,可能来源于客户端同步上传的自身虚拟角色的位置(第四位置),也可能来源于服务器主动设置的位置。一般地,服务器主动设置的位置采用的是瞬移的方式,即不考虑虚拟角色的位置的平滑过渡,而客户端上传的位置是考虑平滑过渡的。
其中,服务器主动设置的位置一般与玩法相关,例如虚拟角色进入了传送门,服务器就会主动设置该虚拟角色的位置;或者,虚拟角色阵亡后需要在指定地点复活,服务器就会主动设置该虚拟角色的位置。
在本申请实施例中,可以将网络延迟时长lag1、消息分发延迟时长lag2和位置平滑过渡所需时长lag3进行相加,得到通过第二客户端控制操作的虚拟角色的位置延迟时长lag,位置延迟时长lag即是总的延迟时长,服务器可以根据位置延迟时长lag,计算通过第二客户端控制操作的虚拟角色的第二位置。
由于消息分发延迟时长lag2和位置平滑过渡所需时长lag3均相对固定,因此本申请实施例可以设置一预设值A,将预设值A替代消息分发延迟时长lag2和位置平滑过渡所需时长lag3,替代后的位置延迟时长lag=网络延迟时长lag1+预设值A。
在一种示例中,预设值A可以设置为240ms,由于网络抖动程度各不相同,因此网络延迟时长不稳定,网络抖动越厉害,网络延迟时长越长。
本申请的一个可选实施例中,所述服务器记录有通过第二客户端控制操作的虚拟角色的第二历史位置序列,所述第二历史位置序列包括按序进行排列的多个历史位置,所述多个历史位置分别具有对应的记录时间;子步骤S34可以包括以下子步骤:
子步骤S41,计算所述当前服务器时间与所述位置延迟时长的时间差;
子步骤S42,将所述当前服务器时间与所述位置延迟时长的时间差,确定为通过所述第二客户端控制操作的虚拟角色处于第二位置的目标时间;
子步骤S43,判断所述目标时间是否在所述第二历史位置序列的时间长度内;
子步骤S44,若所述目标时间在所述第二历史位置序列的时间长度内,则从所述第二历史位置序列中确定与所述目标时间相邻的第一记录时间和第二记录时间;其中,所述第一记录时间小于等于所述目标时间,所述第二记录时间大于所述目标时间;
子步骤S45,从所述多个历史位置中,获取所述第一记录时间对应的第一历史位置,以及获取所述第二记录时间对应的第二历史位置;
子步骤S46,根据所述第一历史位置和所述第二历史位置,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
在本申请实施例中,为了获得虚拟角色对应时间点的历史位置信息,服务器可以维护最近第三周期内的各个虚拟角色的历史位置序列,例如服务器可以维护最近2s内的各个虚拟角色的历史位置序列。
以通过第二客户端控制操作的虚拟角色的第二历史位置序列为示例,第二历史位置序列可以记录多个历史位置,为[P1,P2,P3,P4,…,Pn],其中,每个P为(位置,时间,类型),位置是指通过第二客户端控制操作的虚拟角色的世界坐标位置,时间是指服务器接收到第二客户端上传的自身虚拟角色的第四位置时此时的服务器时间,类型标记为瞬移位置类型或者平滑过渡位置类型。
其中,历史位置的数量n一般取决于客户端上传自身虚拟角色的位置的间隔,即第一周期的大小,比如第一周期设置为0.1s,那么正常情况下服务器可以记录最近2s内的20个历史位置。
在第二历史位置序列中,多个历史位置是按照时间的先后顺序进行排列,每次在第二历史位置序列的末尾增加新的历史位置时,服务器可以将已过期(比如2s前)的历史位置从第二历史位置序列中删除。
在具体实现中,当服务器接收到第二客户端同步上传的自身虚拟角色的第四位置时,或者当服务器主动设置虚拟角色的位置时,服务器可以将该位置统一转换为世界坐标,例如虚拟角色站在移动平台上时,第二客户端上传的是相对移动平台的位置坐标,此时服务器需要将相对移动平台的位置坐标转换为世界坐标,并记录接收到第二客户端上传的自身虚拟角色的第四位置时此时的服务器时间T,服务器时间T即是记录时间T,然后服务器可以确定该位置是否采用平滑过渡。一般地,服务器主动设置的位置采用的是瞬移的方式,即不考虑虚拟角色的位置的平滑过渡,而客户端上传的位置是考虑平滑过渡的,因此服务器可以得到(虚拟角色的世界坐标位置,记录时间T,是否采用平滑过渡)的序列。
在一种示例中,客户端A每隔0.1s上传自身虚拟角色a的第四位置Pa1,当服务器接收到虚拟角色a的第四位置Pa1时,服务器记录此时的服务器时间Ta1,服务器时间Ta1即是记录时间Ta1,然后服务器可以对虚拟角色a的第四位置Pa1进行校验。如果校验通过,那么服务器可以将虚拟角色a的第四位置Pa1转换为世界坐标位置P’a1,由于是客户端同步上传的位置,所以服务器可以将虚拟角色a的世界坐标位置P’a1标记为平滑过渡位置类型,因此服务器可以得到(世界坐标位置P’a1、记录时间Ta1、平滑过渡位置类型)的序列,世界坐标位置P’a1作为新的历史位置,添加到虚拟角色a的历史位置序列的末尾,并且服务器可以将已过期(比如2s前)的历史位置从历史位置序列中删除。
在另一种示例中,当服务器主动设置虚拟角色a的位置时,比如设置为Pa2,服务器记录此时的服务器时间Ta2,服务器时间Ta2即是记录时间Ta2,然后服务器可以将虚拟角色a的位置Pa2转换为世界坐标位置P’a2,由于是服务器主动设置的位置,所以服务器可以将虚拟角色a的世界坐标位置P’a2标记为瞬移位置类型,因此服务器可以得到(世界坐标位置P’a2、记录时间Ta2、瞬移位置类型)的序列,世界坐标位置P’a2作为新的历史位置,添加到虚拟角色a的历史位置序列的末尾,并且服务器可以将已过期(比如2s前)的历史位置从历史位置序列中删除。
在本申请实施例中,当服务器计算得到位置延迟时长lag后,服务器可以计算当前服务器时间t4与位置延迟时长lag的时间差t,即:t=t4-lag。
时间差t是指通过第二客户端控制操作的虚拟角色处于第二位置的目标时间t,即服务器计算的通过第二客户端控制操作的虚拟角色处于被交互位置时的对应时间点。服务器可以判断目标时间t是否在第二历史位置序列的时间长度内,也即是判断目标时间t是否超过服务器维护的第二历史位置序列的时间长度。示例性地,假设当前服务器时间t4是9:00:00,服务器维护最近2s内的第二历史位置序列,如果计算得到的目标时间t是8:59:59,那么判断出目标时间t在第二历史位置序列的时间长度内;如果计算得到的目标时间t是8:59:57,那么判断出目标时间t不在第二历史位置序列的时间长度内。
在本申请实施例中,如果目标时间t在第二历史位置序列的时间长度内,那么可以通过二分查找覆盖目标时间t,来找到相邻的第一历史位置Px和第二历史位置Py,其中第一历史位置Px的时间小于等于目标时间t,第二历史位置Py的时间大于目标时间t。
在具体实现中,如果目标时间t在第二历史位置序列的时间长度内,那么可以从第二历史位置序列中找到与目标时间t相邻的第一记录时间Tx和第二记录时间Ty,其中,第一记录时间Tx小于等于目标时间t,第二记录时间Ty大于目标时间t。然后可以从第二历史位置序列中的多个历史位置中,获取第一记录时间Tx对应的第一历史位置Px,以及获取第二记录时间Ty对应的第二历史位置Py。其中,第一历史位置Px即是通过第二客户端控制操作的虚拟角色的第二位置的左边的相邻位置,第二历史位置Py即是通过第二客户端控制操作的虚拟角色的第二位置的右边的相邻位置。服务器可以在第一历史位置Px与第二历史位置Py之间找到通过第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,在判断所述目标时间是否在所述第二历史位置序列的时间长度内之后,所述方法还可以包括:
若所述目标时间不在所述第二历史位置序列的时间长度内,则从所述第二历史位置序列中获取位于首位的历史位置;将所述位于首位的历史位置确定为通过所述第二客户端控制操作的虚拟角色的第二位置。
在本申请实施例中,如果目标时间t不在第二历史位置序列的时间长度内,说明网络抖动厉害,超过了服务器维护的第二历史位置序列的时间长度,那么可以直接返回服务器最早记录的历史位置。
在具体实现中,如果目标时间t不在第二历史位置序列的时间长度内,那么可以从第二历史位置序列中获取位于首位的历史位置,例如第二历史位置序列为[P1,P2,P3,P4,…,Pn],位于首位的历史位置即是P1,那么可以将位于首位的历史位置P1确定为通过第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,子步骤S46可以包括以下子步骤:
子步骤S51,确定所述第一历史位置的位置类型,以及确定所述第二历史位置的位置类型;
子步骤S52,基于所述第一历史位置的位置类型以及所述第二历史位置的位置类型,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
在本申请实施例中,在第二历史位置序列中,每个历史位置均标记有对应的类型,类型可以包括瞬移位置类型和平滑过渡位置类型中的任一种。服务器可以根据标记的类型,确定第一历史位置Px的位置类型,以及确定第二历史位置Py的位置类型,然后基于第一历史位置的位置类型以及第二历史位置的位置类型,计算通过第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,子步骤S52可以包括以下子步骤:
子步骤S61,若所述第一历史位置属于瞬移位置类型,且所述第二历史位置属于瞬移位置类型,则将所述第一历史位置确定为通过所述第二客户端控制操作的虚拟角色的第二位置。
在本申请实施例中,如果第一历史位置Px属于瞬移位置类型,且第二历史位置Py属于瞬移位置类型,说明第一历史位置Px和第二历史位置Py均是通过服务器主动设置的位置而改变。
在正常情况下,服务器是在第一历史位置Px与第二历史位置Py之间进行线性插值,从而计算出通过第二客户端控制操作的虚拟角色的第二位置是处于Px到Py之间的哪一位置点,如果第二历史位置Py是一个瞬移位置,那么第二历史位置Py很可能是服务器直接给它设置到一个很远的位置,此时它没有过渡,所以无法进行线性插值,因此服务器可以直接返回第一历史位置Px,也即是将第一历史位置Px确定为通过第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,子步骤S52可以包括以下子步骤:
子步骤S71,若所述第一历史位置属于瞬移位置类型,而所述第二历史位置属于平滑过渡位置类型,则采用所述目标时间、所述第一历史位置、所述第一记录时间、所述第二历史位置、所述第二记录时间进行线性插值,得到通过所述第二客户端控制操作的虚拟角色的第二位置。
在本申请实施例中,如果第一历史位置Px属于瞬移位置类型,然而第二历史位置Py属于平滑过渡位置类型,说明第一历史位置Px是通过服务器主动设置的位置而改变,第二历史位置Py是通过客户端同步上传的位置而改变。
由于第二历史位置Py是一个平滑过渡位置,此时它有过渡,所以可以按时间进行线性插值返回通过第二客户端控制操作的虚拟角色的第二位置,具体可以采用目标时间t、第一历史位置Px、第一记录时间Tx、第二历史位置Py、第二记录时间Ty进行线性插值,即:Px+(t–Tx)/(Ty–Tx)*(Px–Py)。从而得到通过第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,子步骤S52可以包括以下子步骤:
子步骤S81,若所述第一历史位置属于平滑过渡位置类型,而所述第二历史位置属于瞬移位置类型,则将所述第一历史位置确定为通过所述第二客户端控制操作的虚拟角色的第二位置。
在本申请实施例中,如果第一历史位置Px属于平滑过渡位置类型,然而第二历史位置Py属于瞬移位置类型,说明第一历史位置Px是通过客户端同步上传的位置而改变,第二历史位置Py是通过服务器主动设置的位置而改变。
由于第二历史位置Py是一个瞬移位置,那么第二历史位置Py很可能是服务器直接给它设置到一个很远的位置,此时它没有过渡,所以无法进行线性插值,因此服务器可以直接返回第一历史位置Px,也即是将第一历史位置Px确定为通过第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,子步骤S52可以包括以下子步骤:
子步骤S91,若所述第一历史位置属于平滑过渡位置类型,且所述第二历史位置属于平滑过渡位置类型,则采用所述目标时间、所述第一历史位置、所述第一记录时间、所述第二历史位置、所述第二记录时间进行线性插值,得到通过所述第二客户端控制操作的虚拟角色的第二位置。
在本申请实施例中,如果第一历史位置Px属于平滑过渡位置类型,且第二历史位置Py属于平滑过渡位置类型,说明第一历史位置Px和第二历史位置Py均是通过客户端同步上传的位置而改变。
由于第二历史位置Py是一个平滑过渡位置,此时它有过渡,所以可以按时间进行线性插值返回目标虚拟角色的第二位置,具体可以采用目标时间t、第一历史位置Px、第一记录时间Tx、第二历史位置Py、第二记录时间Ty进行线性插值,即:Px+(t–Tx)/(Ty–Tx)*(Px–Py)。从而得到通过第二客户端控制操作的虚拟角色的第二位置。
步骤105,若所述第二位置与所述第一位置之间的距离小于第一距离阈值,则校验所述第一位置为有效位置;若所述第二位置与所述第一位置之间的距离大于或等于第一距离阈值,则校验所述第一位置为无效位置。
在本申请实施例中,第二位置是服务器通过计算出服务器到第一客户端再从第一客户端到服务器的网络延迟时长,然后采用网络延迟时长计算得到的通过第二客户端控制操作的虚拟角色的被交互位置,从而可以解决在校验过程中因网络延迟而导致误判率过大的问题。由于第一位置是第一客户端上传的交互请求中第一客户端检测得到通过第二客户端控制操作的虚拟角色的被交互位置,为了避免玩家在第一客户端上利用外挂来修改通过第二客户端控制操作的虚拟角色的位置,因此服务器需要将服务器计算的第二位置与第一客户端检测的第一位置进行比较,以校验第一客户端检测第一位置是否为有效位置。
在具体实现中,服务器可以计算出服务器计算的第二位置与第一客户端检测的第一位置之间的距离D1,然后将距离D1与第一距离阈值进行比较。
在一种示例中,如果距离D1小于第一距离阈值,也即是服务器计算的第二位置与第一客户端检测的第一位置之间的距离小于第一距离阈值,那么可以确定第一客户端检测的第一位置是有效位置,说明玩家并没有在第一客户端上利用外挂来修改通过第二客户端控制操作的虚拟角色的被交互位置。
在另一种示例中,如果距离D1大于或等于第一距离阈值,也即是服务器计算的第二位置与第一客户端检测的第一位置之间的距离大于或等于第一距离阈值,那么可以确定第一客户端检测的第一位置是无效位置,说明玩家很可能在第一客户端上利用外挂来修改通过第二客户端控制操作的虚拟角色的被交互位置。
本申请的一个可选实施例中,所述交互请求还包括所述第一客户端控制操作的虚拟角色的第三位置;所述服务器记录有通过所述第一客户端控制操作的虚拟角色的第一历史位置序列,所述方法还可以包括:
从所述第一历史位置序列中获取位于末位的历史位置;若所述位于末位的历史位置与所述第三位置之间的距离小于第二距离阈值,则校验所述第三位置为有效位置;若所述位于末位的历史位置与所述第三位置之间的距离大于或等于第二距离阈值,则校验所述第三位置为无效位置。
在第一客户端控制操作的虚拟角色对第二客户端控制操作的虚拟角色进行交互的时候,玩家在第一客户端上利用外挂手段,不仅可以修改通过第二客户端控制操作的虚拟角色的被交互位置,还可以修改通过第一客户端控制操作的虚拟角色的移动位置。
对此,本发明实施例可以校验交互请求中第一客户端控制操作的虚拟角色的第三位置。其中,第三位置是指第一客户端在检测得到通过第二客户端控制操作的虚拟角色的第一位置的这一时刻,此时的第一客户端控制操作的虚拟角色的当前位置。第一客户端可以将其控制操作的虚拟角色的第三位置添加至交互请求中。
服务器可以从交互请求中提取通过第一客户端控制操作的虚拟角色的第三位置,由于第一客户端会定时上传其控制操作的虚拟角色的位置给服务器,所以第一客户端控制操作的虚拟角色的第三位置是保序的,因此在校验第一客户端控制操作的虚拟角色的第三位置时,服务器无需考虑网络延迟的情况。
服务器记录有通过第一客户端控制操作的虚拟角色的第一历史位置序列,第一历史位置序列的生成过程与第二历史位置序列的生成过程相同,具体内容请参见第二历史位置序列的生成过程,在此不再赘述。
在第一历史位置序列中,多个历史位置是按照时间的先后顺序进行排列,因此位于末位的历史位置是服务器记录的最新位置。服务器可以从第一历史位置序列中获取位于末位的历史位置,然后可以将位于末位的历史位置与交互请求中的第三位置进行比较。
在具体实现中,服务器可以计算出位于末位的历史位置与交互请求中第三位置之间的距离D2,然后将距离D2与第二距离阈值进行比较。
在一种示例中,如果距离D2小于第二距离阈值,也即是位于末位的历史位置与交互请求中第三位置之间的距离小于第二距离阈值,那么可以确定交互请求中第三位置是有效位置,说明玩家并没有在第一客户端上利用外挂来修改通过第一客户端控制操作的虚拟角色的移动位置。
在另一种示例中,如果距离D2大于或等于第二距离阈值,也即是位于末位的历史位置与交互请求中的第三位置之间的距离大于或等于第二距离阈值,那么可以确定交互请求中第三位置是无效位置,说明玩家很可能在第一客户端上利用外挂来修改通过第一客户端控制操作的虚拟角色的移动位置。
本申请的一个可选实施例中,所述方法还可以包括:
当所述第一位置为有效位置,且所述第三位置为有效位置时,生成允许信息,并将所述允许信息发送至所述第一客户端;所述允许信息用于指示所述第一客户端执行对通过所述第二客户端控制操作的虚拟角色的交互操作;
当所述第一位置为无效位置,和/或,所述第三位置为无效位置时,生成拒绝信息,并将所述拒绝信息发送至所述第一客户端;所述拒绝信息用于指示所述第一客户端不执行对通过所述第二客户端控制操作的虚拟角色的交互操作。
第一位置是第一客户端检测得到通过第二客户端控制操作的虚拟角色的被交互位置,第三位置是第一客户端检测得到其控制操作的虚拟角色的移动位置。
当第一位置为有效位置,且第三位置为有效位置时,服务器可以生成允许信息,并且将允许信息发送至第一客户端,以使第一客户端响应于允许信息,执行对通过第二客户端控制操作的虚拟角色的交互操作。示例性地,假设交互请求是射击请求,那么第一客户端在接收到服务器针对射击请求返回的允许信息时,第一客户端可以响应于该允许信息,执行对通过第二客户端控制操作的虚拟角色的射击操作。
当存在任何一个无效位置时,服务器可以生成拒绝信息。具体地,当第一位置为有效位置,而第三位置为无效位置时;或者,当第三位置为有效位置,而第一位置为无效位置时;或者,当第一位置为无效位置,且第三位置为无效位置时,服务器可以生成拒绝信息,并且将拒绝信息发送至第一客户端,以使第一客户端响应于拒绝信息,不执行对通过第二客户端控制操作的虚拟角色的交互操作。示例性地,假设交互请求是射击请求,那么第一客户端在接收到服务器针对射击请求返回的拒绝信息时,第一客户端可以响应于该拒绝信息,不执行对通过第二客户端控制操作的虚拟角色的射击操作。
综上,在本申请实施例中,向多个客户端同步服务器的基准服务器时间,其中,多个客户端包括第一客户端和第二客户端;当接收到第一客户端上传的交互请求时,获取服务器的当前服务器时间;其中,交互请求包括第一客户端检测得到通过第二客户端控制操作的虚拟角色的第一位置;根据当前服务器时间和基准服务器时间,计算网络延迟时长;根据网络延迟时长,计算通过第二客户端控制操作的虚拟角色的第二位置;若第二位置与第一位置之间的距离小于第一距离阈值,则校验第一位置为有效位置;若第二位置与第一位置之间的距离大于或等于第一距离阈值,则校验第一位置为无效位置。本申请实施例通过服务器同步基准服务器时间给客户端,使得服务器依据当前服务器时间和基准服务器时间计算出服务器下发数据到客户端和客户端上传数据到服务器的网络延迟时长,从而采用网络延迟时长,回溯虚拟角色的第二位置,从而采用服务器计算的第二位置,对客户端检测的第一位置进行校验,进而可有效减少误判的现象,提高校验准确率,为玩家提供更加和平的游戏竞技环境。
为了使本领域技术人员能够更好地理解本发明实施例,下面通过以下示例对本发明实施例加以说明:
参考图2,示出了本发明实施例中涉及服务器、第一客户端、第二客户端的交互示意图,其中,第一客户端控制操作虚拟角色a,第二客户端控制操作虚拟角色b。
虚拟角色的位置校验的具体过程如下:
1.每隔第二周期(如0.1s),服务器向第一客户端和第二客户端同步基准服务器时间t0;
2.当接收到基准服务器时间t0时,第一客户端获取基准客户端时间t1,然后计算基准服务器时间t0与基准客户端时间t1的时间差dt,即:dt=t0-t1;
3.当第一客户端控制操作的虚拟角色a对第二客户端控制操作的虚拟角色b进行交互时,第一客户端检测虚拟角色b此时的被交互位置,该被交互位置作为虚拟角色b的第一位置;并且,第一客户端检测虚拟角色a此时的移动位置,该移动位置作为虚拟角色a的第三位置;并且,第一客户端获取当前客户端时间t2,然后将当前客户端时间t2与步骤2计算得到的时间差dt进行相加,得到相对服务器时间t3,即:t3=t2+dt;
4.第一客户端将虚拟角色b的第一位置、虚拟角色a的第三位置、相对服务器时间t3作为交互请求发送至服务器;
5.当接收到第一客户端上传的交互请求时,服务器获取当前服务器时间t4,然后计算当前服务器时间t4与相对服务器时间t3的时间差,将当前服务器时间t4与相对服务器时间t3的时间差确定为网络延迟时长lag1,即:lag1=t4-t3;
6.将预设值A与网络延迟时长lag1进行相加,得到位置延迟时长lag,即:位置延迟时长lag=网络延迟时长lag1+预设值A;其中,预设值A是息分发延迟时长lag2和位置平滑过渡所需时长lag3的总和;然后,服务器计算当前服务器时间t4与位置延迟时长lag的时间差,得到通过第二客户端控制操作的虚拟角色b处于第二位置的目标时间t,即:t=t4-lag;
7.服务器判断目标时间t是否在第二历史位置序列的时间长度内;若否,则跳转至步骤8;若是,则跳转至步骤9;其中,第二历史位置序列是服务器维护的最近第三周期内的虚拟角色b的历史位置序列;
8.如果目标时间t不在第二历史位置序列的时间长度内,则服务器从第二历史位置序列中获取位于首位的历史位置,并将该位于首位的历史位置确定为虚拟角色b的第二位置,然后跳转至步骤12;
9.如果目标时间t在第二历史位置序列的时间长度内,则服务器从第二历史位置序列中确定与目标时间t相邻的第一记录时间和第二记录时间;其中,第一记录时间小于或等于目标时间t,第二记录时间大于目标时间t;
10.服务器从第二历史位置序列中获取第一记录时间对应的第一历史位置,以及获取第二记录时间对应的第二历史位置;
11.服务器基于第一历史位置的位置类型以及第二历史位置的位置类型,计算通过第二客户端控制操作的虚拟角色b的第二位置,具体有以下(11-1)、(11-2)、(11-3)和(11-4)这四种情况:
(11-1)若第一历史位置属于瞬移位置类型,且第二历史位置属于瞬移位置类型,则将第一历史位置确定为通过第二客户端控制操作的虚拟角色b的第二位置;
(11-2)若第一历史位置属于瞬移位置类型,而第二历史位置属于平滑过渡位置类型,则采用目标时间t、第一历史位置、第一记录时间、第二历史位置、第二记录时间进行线性插值,得到通过第二客户端控制操作的虚拟角色b的第二位置;
(11-3)若第一历史位置属于平滑过渡位置类型,而第二历史位置属于瞬移位置类型,则将第一历史位置确定为通过第二客户端控制操作的虚拟角色b的第二位置;
(11-4)若第一历史位置属于平滑过渡位置类型,且第二历史位置属于平滑过渡位置类型,则采用目标时间t、第一历史位置、第一记录时间、第二历史位置、第二记录时间进行线性插值,得到通过第二客户端控制操作的虚拟角色b的第二位置;
12.在得到虚拟角色b的第二位置后,服务器判断第二位置与第一位置之间的距离是否小于第一距离阈值;若否,则跳转至步骤13;若是,则跳转至步骤15;需要说明的是,第一位置是第一客户端检测得到的虚拟角色b的位置,第二位置是服务器计算得到的虚拟角色b的位置;
13.如果第二位置与第一位置之间的距离大于或等于第一距离阈值,则服务器校验虚拟角色b的第一位置为无效位置,此时服务器可以生成拒绝信息,并将拒绝信息发送至第一客户端;
14.第一客户端响应于拒绝信息,不执行对通过第二客户端控制操作的虚拟角色b的交互操作,此时流程结束。
15.如果第二位置与第一位置之间的距离小于第一距离阈值,则服务器校验虚拟角色b的第一位置为有效位置,此时服务器可以进一步校验虚拟角色a的第三位置,具体是服务器从第一历史位置序列中获取位于末位的历史位置,然后判断该位于末位的历史位置与虚拟角色a的第三位置之间的距离是否小于第二距离阈值;若否,则跳转至步骤16;若是,则跳转至步骤18;其中,第一历史位置序列是服务器维护的最近第三周期内的虚拟角色a的历史位置序列;
16.如果该位于末位的历史位置与虚拟角色a的第三位置之间的距离大于或等于第二距离阈值,则服务器校验虚拟角色a的第三位置为无效位置,此时服务器可以生成拒绝信息,并将拒绝信息发送至第一客户端;
17.第一客户端响应于拒绝信息,不执行对通过第二客户端控制操作的虚拟角色b的交互操作,此时流程结束。
18.如果该位于末位的历史位置与虚拟角色a的第三位置之间的距离小于第二距离阈值,则服务器校验虚拟角色a的第三位置为有效位置,此时虚拟角色b的第一位置和虚拟角色a的第三位置均为有效位置,因此服务器可以生成允许信息,并将允许信息发送至第一客户端;
19.第一客户端响应于允许信息,执行对通过第二客户端控制操作的虚拟角色b的交互操作,此时流程结束。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图3,示出了本申请实施例的一种虚拟角色的位置校验装置的结构框图,应用于服务器,具体可以包括如下模块:
基准服务器时间同步模块301,用于向多个客户端同步所述服务器的基准服务器时间,其中,所述多个客户端包括第一客户端和第二客户端;
当前服务器时间获取模块302,用于当接收到所述第一客户端上传的交互请求时,获取所述服务器的当前服务器时间;其中,所述交互请求包括所述第一客户端检测得到通过所述第二客户端控制操作的虚拟角色的第一位置;所述相对服务器时间基于所述基准服务器时间计算得到;
网络延迟时长计算模块303,用于根据所述当前服务器时间和所述基准服务器时间,计算网络延迟时长;
第二位置计算模块304,用于根据所述网络延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置;
第一校验模块305,用于若所述第二位置与所述第一位置之间的距离小于第一距离阈值,则校验所述第一位置为有效位置;若所述第二位置与所述第一位置之间的距离大于或等于第一距离阈值,则校验所述第一位置为无效位置。
本申请的一个可选实施例中,所述交互请求还包括相对服务器时间,所述相对服务器时间基于所述基准服务器时间计算得到;所述网络延迟时长计算模块303可以包括:
网络延迟时长计算子模块,用于根据所述当前服务器时间和所述相对服务器时间,计算网络延迟时长。
本申请的一个可选实施例中,所述网络延迟时长计算子模块可以包括:
第一计算单元,用于计算所述当前服务器时间与所述相对服务器时间的时间差;
网络延迟时长确定单元,用于将所述当前服务器时间与所述相对服务器时间的时间差,确定为网络延迟时长。
本申请的一个可选实施例中,所述第二位置计算模块304可以包括:
消息分发延迟时长确定子模块,用于确定消息分发延迟时长;
位置平滑过渡所需时长确定子模块,用于确定位置平滑过渡所需时长;
第二计算子模块,用于将所述网络延迟时长、所述消息分发延迟时长和所述位置平滑过渡所需时长进行相加,得到通过所述第二客户端控制操作的虚拟角色的位置延迟时长;
第二位置计算子模块,用于根据所述位置延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,所述服务器记录有通过所述第二客户端控制操作的虚拟角色的第二历史位置序列,所述第二历史位置序列包括按序进行排列的多个历史位置,所述多个历史位置分别具有对应的记录时间;所述第二位置计算子模块可以包括:
第三计算单元,用于计算所述当前服务器时间与所述位置延迟时长的时间差;
目标时间确定单元,用于将所述当前服务器时间与所述位置延迟时长的时间差,确定为通过所述第二客户端控制操作的虚拟角色处于第二位置的目标时间;
判断单元,用于判断所述目标时间是否在所述第二历史位置序列的时间长度内;
相邻的记录时间确定单元,用于若所述目标时间在所述第二历史位置序列的时间长度内,则从所述第二历史位置序列中确定与所述目标时间相邻的第一记录时间和第二记录时间;其中,所述第一记录时间小于等于所述目标时间,所述第二记录时间大于所述目标时间;
历史位置获取单元,用于从所述多个历史位置中,获取所述第一记录时间对应的第一历史位置,以及获取所述第二记录时间对应的第二历史位置;
第二位置计算单元,用于根据所述第一历史位置和所述第二历史位置,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,所述第二位置计算单元可以包括:
位置类型确定子单元,用于确定所述第一历史位置的位置类型,以及确定所述第二历史位置的位置类型;
第二位置计算子单元,用于基于所述第一历史位置的位置类型以及所述第二历史位置的位置类型,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,所述第二位置计算子单元可以用于:
若所述第一历史位置属于瞬移位置类型,且所述第二历史位置属于瞬移位置类型,则将所述第一历史位置确定为通过所述第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,所述第二位置计算子单元可以用于:
若所述第一历史位置属于瞬移位置类型,而所述第二历史位置属于平滑过渡位置类型,则采用所述目标时间、所述第一历史位置、所述第一记录时间、所述第二历史位置、所述第二记录时间进行线性插值,得到通过所述第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,所述第二位置计算子单元可以用于:
若所述第一历史位置属于平滑过渡位置类型,而所述第二历史位置属于瞬移位置类型,则将所述第一历史位置确定为通过所述第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,所述第二位置计算子单元可以用于:
若所述第一历史位置属于平滑过渡位置类型,且所述第二历史位置属于平滑过渡位置类型,则采用所述目标时间、所述第一历史位置、所述第一记录时间、所述第二历史位置、所述第二记录时间进行线性插值,得到通过所述第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,在判断所述目标时间是否在所述第二历史位置序列的时间长度内之后,所述装置还可以包括:
首位的历史位置获取模块,用于若所述目标时间不在所述第二历史位置序列的时间长度内,则从所述第二历史位置序列中获取位于首位的历史位置;
第二位置确定模块,用于将所述位于首位的历史位置确定为通过所述第二客户端控制操作的虚拟角色的第二位置。
本申请的一个可选实施例中,所述交互请求还包括所述第一客户端控制操作的虚拟角色的第三位置;所述服务器记录有通过所述第一客户端控制操作的虚拟角色的第一历史位置序列,所述装置还可以包括:
末位的历史位置获取模块,从所述第一历史位置序列中获取位于末位的历史位置;
第二校验模块,用于若所述位于末位的历史位置与所述第三位置之间的距离小于第二距离阈值,则校验所述第三位置为有效位置;若所述位于末位的历史位置与所述第三位置之间的距离大于或等于第二距离阈值,则校验所述第三位置为无效位置。
本申请的一个可选实施例中,所述装置还可以包括:
允许信息生成模块,用于当所述第一位置为有效位置,且所述第三位置为有效位置时,生成允许信息,并将所述允许信息发送至所述第一客户端;所述允许信息用于指示所述第一客户端执行对通过所述第二客户端控制操作的虚拟角色的交互操作;
拒绝信息生成模块,用于当所述第一位置为无效位置,和/或,所述第三位置为无效位置时,生成拒绝信息,并将所述拒绝信息发送至所述第一客户端;所述拒绝信息用于指示所述第一客户端不执行对通过所述第二客户端控制操作的虚拟角色的交互操作。
综上,在本申请实施例中,向多个客户端同步服务器的基准服务器时间,其中,多个客户端包括第一客户端和第二客户端;当接收到第一客户端上传的交互请求时,获取服务器的当前服务器时间;其中,交互请求包括第一客户端检测得到通过第二客户端控制操作的虚拟角色的第一位置;根据当前服务器时间和基准服务器时间,计算网络延迟时长;根据网络延迟时长,计算通过第二客户端控制操作的虚拟角色的第二位置;若第二位置与第一位置之间的距离小于第一距离阈值,则校验第一位置为有效位置;若第二位置与第一位置之间的距离大于或等于第一距离阈值,则校验第一位置为无效位置。本申请实施例通过服务器同步基准服务器时间给客户端,使得服务器依据当前服务器时间和基准服务器时间计算出服务器下发数据到客户端和客户端上传数据到服务器的网络延迟时长,从而采用网络延迟时长,回溯虚拟角色的第二位置,从而采用服务器计算的第二位置,对客户端检测的第一位置进行校验,进而可有效减少误判的现象,提高校验准确率,为玩家提供更加和平的游戏竞技环境。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的虚拟角色的位置校验方法的步骤。
本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的虚拟角色的位置校验方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种虚拟角色的位置校验方法、装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (16)
1.一种虚拟角色的位置校验方法,其特征在于,应用于服务器,所述方法包括:
向多个客户端同步所述服务器的基准服务器时间,其中,所述多个客户端包括第一客户端和第二客户端;
当接收到所述第一客户端上传的交互请求时,获取所述服务器的当前服务器时间;其中,所述交互请求包括所述第一客户端检测得到通过所述第二客户端控制操作的虚拟角色的第一位置;
根据所述当前服务器时间和所述基准服务器时间,计算网络延迟时长;
根据所述网络延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置;
若所述第二位置与所述第一位置之间的距离小于第一距离阈值,则校验所述第一位置为有效位置;若所述第二位置与所述第一位置之间的距离大于或等于第一距离阈值,则校验所述第一位置为无效位置。
2.根据权利要求1所述的方法,其特征在于,所述交互请求还包括相对服务器时间,所述相对服务器时间基于所述基准服务器时间计算得到;所述根据所述当前服务器时间和所述基准服务器时间,计算网络延迟时长,包括:
根据所述当前服务器时间和所述相对服务器时间,计算网络延迟时长。
3.根据权利要求2所述的方法,其特征在于,所述根据所述当前服务器时间和所述相对服务器时间,计算网络延迟时长,包括:
计算所述当前服务器时间与所述相对服务器时间的时间差;
将所述当前服务器时间与所述相对服务器时间的时间差,确定为网络延迟时长。
4.根据权利要求1所述的方法,其特征在于,所述根据所述网络延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置,包括:
确定消息分发延迟时长;
确定位置平滑过渡所需时长;
将所述网络延迟时长、所述消息分发延迟时长和所述位置平滑过渡所需时长进行相加,得到通过所述第二客户端控制操作的虚拟角色的位置延迟时长;
根据所述位置延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
5.根据权利要求4所述的方法,其特征在于,所述服务器记录有通过所述第二客户端控制操作的虚拟角色的第二历史位置序列,所述第二历史位置序列包括按序进行排列的多个历史位置,所述多个历史位置分别具有对应的记录时间;所述根据所述位置延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置,包括:
计算所述当前服务器时间与所述位置延迟时长的时间差;
将所述当前服务器时间与所述位置延迟时长的时间差,确定为通过所述第二客户端控制操作的虚拟角色处于第二位置的目标时间;
判断所述目标时间是否在所述第二历史位置序列的时间长度内;
若所述目标时间在所述第二历史位置序列的时间长度内,则从所述第二历史位置序列中确定与所述目标时间相邻的第一记录时间和第二记录时间;其中,所述第一记录时间小于等于所述目标时间,所述第二记录时间大于所述目标时间;
从所述多个历史位置中,获取所述第一记录时间对应的第一历史位置,以及获取所述第二记录时间对应的第二历史位置;
根据所述第一历史位置和所述第二历史位置,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一历史位置和所述第二历史位置,计算通过所述第二客户端控制操作的虚拟角色的第二位置,包括:
确定所述第一历史位置的位置类型,以及确定所述第二历史位置的位置类型;
基于所述第一历史位置的位置类型以及所述第二历史位置的位置类型,计算通过所述第二客户端控制操作的虚拟角色的第二位置。
7.根据权利要求6所述的方法,其特征在于,所述基于所述第一历史位置的位置类型以及所述第二历史位置的位置类型,计算通过所述第二客户端控制操作的虚拟角色的第二位置,包括:
若所述第一历史位置属于瞬移位置类型,且所述第二历史位置属于瞬移位置类型,则将所述第一历史位置确定为通过所述第二客户端控制操作的虚拟角色的第二位置。
8.根据权利要求6所述的方法,其特征在于,所述基于所述第一历史位置的位置类型以及所述第二历史位置的位置类型,计算通过所述第二客户端控制操作的虚拟角色的第二位置,包括:
若所述第一历史位置属于瞬移位置类型,而所述第二历史位置属于平滑过渡位置类型,则采用所述目标时间、所述第一历史位置、所述第一记录时间、所述第二历史位置、所述第二记录时间进行线性插值,得到通过所述第二客户端控制操作的虚拟角色的第二位置。
9.根据权利要求6所述的方法,其特征在于,所述基于所述第一历史位置的位置类型以及所述第二历史位置的位置类型,计算通过所述第二客户端控制操作的虚拟角色的第二位置,包括:
若所述第一历史位置属于平滑过渡位置类型,而所述第二历史位置属于瞬移位置类型,则将所述第一历史位置确定为通过所述第二客户端控制操作的虚拟角色的第二位置。
10.根据权利要求6所述的方法,其特征在于,所述基于所述第一历史位置的位置类型以及所述第二历史位置的位置类型,计算通过所述第二客户端控制操作的虚拟角色的第二位置,包括:
若所述第一历史位置属于平滑过渡位置类型,且所述第二历史位置属于平滑过渡位置类型,则采用所述目标时间、所述第一历史位置、所述第一记录时间、所述第二历史位置、所述第二记录时间进行线性插值,得到通过所述第二客户端控制操作的虚拟角色的第二位置。
11.根据权利要求5所述的方法,其特征在于,在判断所述目标时间是否在所述第二历史位置序列的时间长度内之后,所述方法还包括:
若所述目标时间不在所述第二历史位置序列的时间长度内,则从所述第二历史位置序列中获取位于首位的历史位置;
将所述位于首位的历史位置确定为通过所述第二客户端控制操作的虚拟角色的第二位置。
12.根据权利要求1所述的方法,其特征在于,所述交互请求还包括所述第一客户端控制操作的虚拟角色的第三位置;所述服务器记录有通过所述第一客户端控制操作的虚拟角色的第一历史位置序列,所述方法还包括:
从所述第一历史位置序列中获取位于末位的历史位置;
若所述位于末位的历史位置与所述第三位置之间的距离小于第二距离阈值,则校验所述第三位置为有效位置;若所述位于末位的历史位置与所述第三位置之间的距离大于或等于第二距离阈值,则校验所述第三位置为无效位置。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
当所述第一位置为有效位置,且所述第三位置为有效位置时,生成允许信息,并将所述允许信息发送至所述第一客户端;所述允许信息用于指示所述第一客户端执行对通过所述第二客户端控制操作的虚拟角色的交互操作;
当所述第一位置为无效位置,和/或,所述第三位置为无效位置时,生成拒绝信息,并将所述拒绝信息发送至所述第一客户端;所述拒绝信息用于指示所述第一客户端不执行对通过所述第二客户端控制操作的虚拟角色的交互操作。
14.一种虚拟角色的位置校验装置,其特征在于,应用于服务器,所述装置包括:
基准服务器时间同步模块,用于向多个客户端同步所述服务器的基准服务器时间,其中,所述多个客户端包括第一客户端和第二客户端;
当前服务器时间获取模块,用于当接收到所述第一客户端上传的交互请求时,获取所述服务器的当前服务器时间;其中,所述交互请求包括所述第一客户端检测得到通过所述第二客户端控制操作的虚拟角色的第一位置;
网络延迟时长计算模块,用于根据所述当前服务器时间和所述基准服务器时间,计算网络延迟时长;
第二位置计算模块,用于根据所述网络延迟时长,计算通过所述第二客户端控制操作的虚拟角色的第二位置;
第一校验模块,用于若所述第二位置与所述第一位置之间的距离小于第一距离阈值,则校验所述第一位置为有效位置;若所述第二位置与所述第一位置之间的距离大于或等于第一距离阈值,则校验所述第一位置为无效位置。
15.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至13中任一项所述的虚拟角色的位置校验方法的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至13中任一项所述的虚拟角色的位置校验的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310269509.5A CN116271845A (zh) | 2023-03-16 | 2023-03-16 | 虚拟角色的位置校验方法、装置、电子设备和存储介质 |
PCT/CN2023/113857 WO2024187682A1 (zh) | 2023-03-16 | 2023-08-18 | 虚拟角色的位置校验方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310269509.5A CN116271845A (zh) | 2023-03-16 | 2023-03-16 | 虚拟角色的位置校验方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116271845A true CN116271845A (zh) | 2023-06-23 |
Family
ID=86828417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310269509.5A Pending CN116271845A (zh) | 2023-03-16 | 2023-03-16 | 虚拟角色的位置校验方法、装置、电子设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116271845A (zh) |
WO (1) | WO2024187682A1 (zh) |
-
2023
- 2023-03-16 CN CN202310269509.5A patent/CN116271845A/zh active Pending
- 2023-08-18 WO PCT/CN2023/113857 patent/WO2024187682A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024187682A1 (zh) | 2024-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3713653B1 (en) | Temporary game control by user simulation following loss of active control | |
KR102628963B1 (ko) | 게임 시스템들에서 디스플레이 랙의 검출 및 보상 | |
US20210146262A1 (en) | Interactive gameplay playback system | |
CN111167116B (zh) | 一种平滑显示的方法、终端和计算机存储介质 | |
EP3807766B1 (en) | Shadow tracking of real-time interactive simulations for complex system analysis | |
WO2018201935A1 (zh) | 多化身位置同步系统、方法、装置及电子设备和存储介质 | |
US20170056773A1 (en) | Method and system of moving character in online game | |
BR112021007415A2 (pt) | coordenação de entrega de conteúdo de mídia para múltiplos reprodutores de mídia | |
CN109568948B (zh) | 网络游戏中对象的运动状态同步方法及装置 | |
US20210289255A1 (en) | Synchronization of media content across multiple participant devices | |
US11058948B1 (en) | Predictive modeling for multiplayer gaming | |
KR20200027059A (ko) | 출력 데이터 제공 서버 및 출력 데이터 제공 방법 | |
CN111773680B (zh) | 虚拟角色的位置校验方法、装置、电子设备和存储介质 | |
CN116271845A (zh) | 虚拟角色的位置校验方法、装置、电子设备和存储介质 | |
CN111729312A (zh) | 位置同步方法、装置及设备 | |
Shi et al. | Dead reckoning using play patterns in a simple 2D multiplayer online game | |
CN110769904A (zh) | 输出内容处理方法、输出方法、电子设备及存储介质 | |
CN114095785A (zh) | 视频播放方法、装置及计算机设备 | |
CN114522416A (zh) | 一种虚拟角色的移动控制方法和装置 | |
JP2023057614A (ja) | ゲームシステム、コンピュータプログラム及び制御方法 | |
WO2013188900A1 (en) | Validation of virtual entities of a multi-user application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |