画面的显示方法和装置、存储介质、电子装置与流程

文档序号:17633329发布日期:2019-05-11 00:15阅读:212来源:国知局
画面的显示方法和装置、存储介质、电子装置与流程

本发明涉及互联网领域,具体而言,涉及一种画面的显示方法和装置、存储介质、电子装置。



背景技术:

近年来,随着互联网的普及,网络游戏得到了极大的发展,在网络游戏中,用户需要通过操作来控制游戏中对象移动以实现某些目的,比如到达某些特定位置或者做出某些动作,这些移动需要系统进行移动逻辑运算。此类移动的逻辑运算是在服务器端上进行的,再由服务器端向所有客户端下发逻辑运算的结果,以便于在客户端上表现上述对象移动的画面。

在上述方案中,由于游戏服务器与玩家客户端之间数据传输需要时间、游戏服务器与玩家客户端之间的时间存在延时、游戏服务器的逻辑运算需要一定时间等原因,造成了客户端对用户的操作的响应具有一定的滞后性,从而影响了用户体验,如表现为客户端本地播放的游戏动画出现卡顿。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种画面的显示方法和装置、存储介质、电子装置,以至少解决相关技术中的动画播放存在滞后的技术问题。

根据本发明实施例的一个方面,提供了一种画面的显示方法,包括:检测到在客户端上触发的控制操作,其中,控制操作用于指示对虚拟场景中的对象进行状态变更;向服务器发送第一请求,其中,第一请求用于请求获取第一结果,第一结果为服务器根据控制操作和第一信息确定的对虚拟场景中的对象的状态变更结果,第一信息为服务器保存的与虚拟场景中的对象关联的信息;在获取到服务器返回的第一结果之前,在客户端上根据控制操作和第二信息确定第二结果,其中,第二结果为客户端确定的虚拟场景中的对象的状态变更结果,第二信息为客户端保存的与虚拟场景中的对象关联的信息;响应于控制操作,在客户端中显示第二结果的画面。

根据本发明实施例的另一方面,还提供了一种画面的显示装置,包括:检测单元,用于检测到在客户端上触发的控制操作,其中,控制操作用于指示对虚拟场景中的对象进行状态变更;发送单元,用于向服务器发送第一请求,其中,第一请求用于请求获取第一结果,第一结果为服务器根据控制操作和第一信息确定的对虚拟场景中的对象的状态变更结果,第一信息为服务器保存的与虚拟场景中的对象关联的信息;确定单元,用于在获取到服务器返回的第一结果之前,在客户端上根据控制操作和第二信息确定第二结果,其中,第二结果为客户端确定的虚拟场景中的对象的状态变更结果,第二信息为客户端保存的与虚拟场景中的对象关联的信息;预显示单元,用于响应于控制操作,在客户端中显示第二结果的画面。

根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。

根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。

在本发明实施例中,检测到在客户端上触发的控制操作,其中,控制操作用于指示对虚拟场景中的对象进行状态变更;向服务器发送第一请求,其中,第一请求用于请求获取第一结果,第一结果为服务器根据控制操作和第一信息确定的对虚拟场景中的对象的状态变更结果,第一信息为服务器保存的与虚拟场景中的对象关联的信息;响应于控制操作,在获取到服务器返回的第一结果之前,在客户端中显示第二结果的画面,第二结果为客户端根据控制操作和第二信息预测的对虚拟场景中的对象的状态变更结果,第二信息为客户端保存的与虚拟场景中的对象关联的信息,由于客户端不用等到第一服务器返回第一结果,而直接在客户端预表现客户端预测的第二结果,从而可以解决相关技术中的动画播放存在滞后的技术问题,进而达到即时对用户的控制操作进行响应的技术效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的画面的显示方法的硬件环境的示意图;

图2是根据本发明实施例的一种可选的画面的显示方法的流程图;

图3是根据本发明实施例的一种可选的游戏操作界面的示意图;

图4是相关技术中的一种可选的cs架构中交互的示意图;

图5是根据本发明实施例的一种可选cs架构中交互的示意图;

图6是根据本发明实施例的一种可选cs架构中交互的示意图;

图7是相关技术中的一种可选的cs架构中交互的示意图;

图8是根据本发明实施例的一种可选cs架构中交互的示意图;

图9是根据本发明实施例的一种可选的画面的显示装置的示意图;

以及

图10是根据本发明实施例的一种终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例的一方面,提供了一种画面的显示方法的方法实施例。

可选地,在本实施例中,上述画面的显示方法可以应用于如图1所示的由终端101和服务器103(即server)所构成的cs架构(client-server网络同步架构)的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,服务器103可用于执行管理资源,并执行为用户提供服务(如游戏服务、社交服务等)的计算机软件,终端101上可安装用于使用服务器所提供服务的客户端(client),如客户端在需要该服务时向服务器发送请求,服务器运算核心逻辑然后下发执行结果给客户端,由客户端展现执行结果。可在服务器上或独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101并不限定于pc、手机、平板电脑等。

本发明实施例的画面的显示方法可以由终端101来执行,终端101执行本发明实施例的画面的显示方法也可以是由安装在其上的客户端来执行。本申请的技术方案所适用的场景包括但不局限于如下场景:

本申请的技术方案可以应用在采用增强现实ar、虚拟现实vr等技术的社交场景中,此时提供的社交场景就相当于虚拟场景,在采用增强现实ar、虚拟现实vr等的社交应用中,在用户登陆后,在虚拟场景中存在一个与登录用户对应的对象(相当于下述第一对象),该对象在虚拟场景中可以操控所属的道具(即第二对象),在用户控制第一对象时(即检测到控制操作时),会向服务器发送同步控制操作的第一请求,在接收到服务器反馈的第一结果前,客户端可以按照相同的算法估算出第二结果,并进行预表现,而不用等到服务器反馈的第一结果后再进行表现,可以让用户感受到自己的操作被迅速响应,从而可以提供用户体验。

类似地,本申请的技术方案还可以应用在游戏场景中,如moba游戏(multiplayeronlinebattlearena,中文译为多人在线战术竞技游戏)、fps游戏(first-personshootergame,中文译为第一人称射击类游戏)、tps游戏(third-personshootergame,中文译为第三人称射击类游戏)等,此时游戏提供的游戏场景就相当于虚拟场景,当玩家处于游戏的过程中,在虚拟场景中存在一个与玩家对应的游戏角色(相当于下述第一对象),该角色可以在虚拟场景使用枪支、手榴弹等道具(相当于第二对象),在玩家控制第一对象时(即检测到控制操作时),会向服务器发送同步控制操作的第一请求,在接收到服务器反馈的第一结果前,客户端可以按照相同的算法估算出第二结果,并进行预表现,而不用等到服务器反馈的第一结果后再进行表现,可以让玩家感受到自己的操作被迅速响应,从而可以提供用户体验。

图2是根据本发明实施例的一种可选的画面的显示方法的流程图,如图2所示,该方法可以包括以下步骤:

步骤s202,终端检测到在客户端上触发的控制操作,控制操作用于指示对虚拟场景中的对象进行状态变更。

上述客户端可为moba游戏或射击游戏等游戏应用、采用增强现实ar或虚拟现实vr等技术的社交应用安装在上述终端上后所形成的客户端;客户端所提供的虚拟场景可为游戏场景、社交场景等场景;对象(如第一对象、第二对象等)为虚拟场景中与用户相关的对象,如用户在社交场景中自己的映射(即用于表示用户自己的虚拟对象)、自己的宠物、道具等,再如用户在游戏中所操作的角色、所使用的道具等;上述的状态可以为对象在虚拟场景的场景地面位置的状态、对象在虚拟场景中空间位置的状态、膨胀大小的状态等。

步骤s204,终端向服务器发送第一请求,第一请求用于请求获取第一结果,第一结果为服务器根据控制操作和第一信息确定的对虚拟场景中的对象的状态变更结果,第一信息为服务器保存的与虚拟场景中的对象关联的信息。

本申请的技术方案适用于cs架构,即终端和服务器构成的架构,对于终端而言,在终端的客户端上的操作需要经由服务器的认可,因此,在客户端上检测到控制操作时,可向服务器发送第一请求,以请求服务器的许可,与此同时,若游戏为多人游戏,还需由服务器将控制操作同步到其他玩家的客户端,服务器确定的状态变更结果可以用来表示服务器是否认可对虚拟场景中的对象进行状态变更,在认可的情况下,还可用来表示对虚拟场景中的对象进行状态变更的变更量,如移动的距离等。

步骤s206,在获取到服务器返回的第一结果之前,终端在客户端上根据控制操作和第二信息确定第二结果,第二结果为客户端确定的虚拟场景中的对象的状态变更结果,第二信息为客户端保存的与虚拟场景中的对象关联的信息,换言之,第二信息与第一信息是相同类型的信息,但是因为客户端与服务器之间的信息同步存在延迟,所以可能存在客户端保存的第二信息与第一信息部分或者全部不同的情况。

步骤s208,响应于控制操作,终端在客户端中显示第二结果的画面。

步骤s204和步骤s206为在步骤s202之后执行的步骤,步骤s206和步骤s208是串行执行的,步骤s208显示的即步骤s206得到的第二结果,步骤s204和步骤s206之间并无先后顺序,步骤s204和步骤s206可以并行执行,也即检测到控制操作时,同时触发发送第一请求和在客户端的预表现(在客户端中确认和显示第二结果的画面);步骤s204可以在步骤s206之后执行,换言之,即检测到控制操作时先在客户端的预表现,然后再发送第一请求给服务器;步骤s206可以在步骤s204之后且在收到第一结果之前执行,即检测到控制操作时先发送第一请求给服务器,不用等到第一服务器返回第一结果,而直接在客户端预表现客户端预测的第二结果。

由于服务器与客户端之间对第一请求、第一结果等数据的传输需要时间、游戏服务器的逻辑运算需要一定时间等原因,造成了客户端对用户的操作的响应具有一定的滞后性,在本申请的步骤s206-s208中,由于客户端不用等到第一服务器返回第一结果,而直接在客户端确认第二结果并进行预表现客户端预测的第二结果,从而可以解决相关技术中的动画播放存在滞后的技术问题,进而达到即时对用户的控制操作进行响应的技术效果。

上述实施例中以本发明实施例的画面的显示方法由终端101来执行为例进行说明,可选地,本发明实施例的画面的显示方法也可以由服务器103和终端101共同执行,如终端检测到在客户端上触发的控制操作时,向服务器发送第一请求并在获取到服务器返回的第一结果之前,在客户端中显示第二结果的画面,而服务器根据控制操作和第一信息确定的对虚拟场景中的对象的第一结果并返回给终端。下面继续以本发明实施例的画面的显示方法由终端101来执行为例、并结合图2所示的步骤对本申请的技术方案进行说明:

在步骤s202提供的技术方案中,虚拟场景中的对象可以分为两个类型,其一是客户端可以直接操控的对象(记为第一对象),另一个是受控于第一对象的对象(记为第二对象),终端检测到在客户端上触发的控制操作,该控制操作为用于操控第一对象的操作,如图3所示点击右下角的跳动标识的按钮的操作,可能引起第一对象和/或第二对象的状态变更。

可选地,在上述实施例中,检测到在客户端上触发的控制操作包括:在客户端中检测到第一控制操作,第一控制操作用于指示对虚拟场景中的第一对象进行状态变更,如操控第一对象进行移动,即相当于指示第一对象进行位置状态变更;和/或,在客户端中检测到第二控制操作,第二控制操作用于指示对虚拟场景中的第二对象进行状态变更,如操控第一对象使用载具(如车辆)这一第二对象,就相当于指示第二对象进行速度状态变更。

可选地,在向所述服务器发送第一请求之前,可以按照如下方式对虚拟场景中的对象进行预创建:向服务器发送第二请求,其中,第二请求用于请求服务器按照所携带的目标对象标识(可以为前述第一对象和/或第二对象的标识)创建虚拟场景中的对象;在获取到服务器返回的创建结果之前,在客户端上展示客户端预创建的虚拟场景中的对象。

可选地,在客户端上展示客户端预创建的目标对象标识对应的第二对象之后,在创建结果指示第二对象创建成功的情况下,保持第二对象的状态不变;在创建结果指示第二对象创建失败的情况下,在客户端上删除预创建的第二对象,并停止对第二对象的显示。类似地,对于第一对象,也可按照上述对第二对象的方式处理,不再赘述。

在创建预表现时,以玩家使用一个会投放榴弹的角色为例,在相关技术的方案里,如图4所示,玩家每点击按钮尝试投放一颗榴弹,都需要等待服务器回包(如响应第二请求返回的网络对象创建数据,即第二对象的数据),在弱网络的情况下,从玩家按下按钮到榴弹实际出来,可能需要经过400ms以上的延迟,且在传递网络对象移动数据时也存在类似问题,玩家体验极差。在本申请的方案里,玩家点击按钮尝试投放榴弹后,客户端不需等待服务器回包,立刻预表现创建榴弹(即预创建网络对象)并使用和服务器一样的逻辑移动榴弹(即进行位置状态的预表现),等到弱网络400ms服务器回包后,客户端将榴弹数据应用到预表现的榴弹,如比较创建结果是否一致,比较状态结果是否一致,若服务器同意创建且客户端本地确定的位置与服务器端指示的位置不一致,则将榴弹位置插值到服务器下发的位置,玩家几乎感受不到榴弹从没有到出现这个最关键时刻的延迟,从而改进了玩家体验。

上述网络对象(networkobject)为可同时存在于服务器和客户端的对象(如游戏对象),由服务器创建和更新状态,并通知客户端创建和更新状态,比如网络游戏里的一个角色、一把枪,可认为是网络对象。

在步骤s204提供的技术方案中,终端向服务器发送第一请求,第一请求用于请求获取第一结果,第一结果为服务器根据控制操作和第一信息确定的对虚拟场景中的对象的状态变更结果,第一信息为服务器保存的与虚拟场景中的对象关联的信息。

可选地,虚拟场景中的对象的状态变更包括至少一个状态阶段,每个状态阶段可以对应一个阶段标识,例如手榴弹预计从被扔出到落地需要消耗2秒,可以将其分为2个阶段,第1秒为第一个阶段,第2秒为第二个阶段,为了便于服务器知晓是哪个阶段,在向服务器发送第一请求时,生成包括对象标识、操作标识以及状态标识的第一请求,对象标识用于标识虚拟场景中的对象,操作标识用于标识控制操作,状态标识用于标识待服务器确定的第一结果在至少一个状态阶段中所处的目标状态阶段;向服务器发送生成的第一请求。

可选地,在接收到的服务器发送的创建信息中的对象标识与第一请求中的对象标识相同的情况下,丢弃所述创建信息,创建信息用于指示按照所携带的对象标识在虚拟场景中创建对象,换言之,对于已经预创建的对象,若收到服务器的创建信息则可以直接丢弃。

可选地,对于不同类型的操作,服务器可使用多个算法中与该类型的操作对应的算法(即目标方式)来确定变更结果,例如,在控制第一对象扔手榴弹这一动作时,需要首先看看第一对象的血量是否为零,若是则动作失败,否则允许执行这一动作,进一步看第一对象的体力值,手榴弹被扔的距离y与体力值成x正比,如y=kx+b,k和b为常数。

在步骤s206提供的技术方案中,在获取到服务器返回的第一结果之前,终端在客户端上根据控制操作和第二信息确定第二结果,第二结果为客户端确定的虚拟场景中的对象的状态变更结果,第二信息为客户端保存的与虚拟场景中的对象关联的信息。

可选地,终端在客户端上根据控制操作和第二信息确定第二结果可包括:按照目标方式确定与控制操作和第二信息对应的第二结果,目标方式为服务器确定与控制操作和第一信息对应的第一结果时所使用的方式,然后在客户端中显示第二结果的画面。

在步骤s208提供的技术方案中,响应于控制操作,终端在获取到服务器返回的第一结果之前,在客户端中显示第二结果的画面。

在一个可选的实施例中,若上述场景中的对象包括第一对象,则在客户端中显示第二结果的画面时,可在客户端中播放用于表示客户端确定的第一对象进行状态变更的第二结果的动画。

可选地,在客户端中显示第二结果的画面可以仅仅播放用于表示第二结果所表示的状态的单帧画面,也可以动画的形式来表现从初状态到第二结果所表示的状态之间的动画,即在客户端中播放用于表示第一对象从第一状态变更为第二结果所指示的第二状态的过程的多帧第一画面,第一状态为第一对象在变更前所处的位置。

可选地,客户端中播放用于表示第一对象从第一状态变更为第二结果所指示的第二状态的过程的多帧第一画面,状态可以为地面位置、空间位置、膨胀大小等状态,以状态为位置为例,可在客户端中播放用于表示第一对象从第一位置变更为第二位置的过程的多帧第一画面,其中,第一位置为第一状态所表示的位置,第二位置为第二状态所表示的位置。

可选地,客户端上的操作需要服务器的鉴权,且客户端上的操作需要由服务器同步至其他客户端,各个客户端上的信息(如对象的攻击值、血量等)需要以服务器为准,例如客户端上的第一对象遭到其他客户端上的对象攻击时,是先由服务器判定攻击是否有效,若有效则相应地减少第一对象的血量,然后再告知客户端其第一对象减少后的血量。由于信息传输、网络延迟等原因会造成客户端与服务器的信息不对等,即第一信息和第二信息可能不同(如血量不一样),就有可能造成客户端利用第二信息确定的第二结果与服务器利用第一信息确定的第一结果不同。

为了保证客户端与服务器的一致,在接收到服务器返回的目标状态阶段的第一结果之后,在客户端预测得到的目标状态阶段下的第二结果所指示的第二状态与服务器返回的目标状态阶段的第一结果所指示的第三状态不同的情况下,将第一对象的状态由第二状态更正为第三状态。

可选地,为了更为流畅地表现状态变更,在将虚拟场景中的对象的状态由第二状态更正为第三状态时,可在客户端中播放用于表示第一对象从第二状态更正为第三状态的过程的多帧第二画面,第一帧第二画面用于表示第二状态,最后一帧用于表示第三状态,中间的第二画面用于表示第二状态向第三状态进行过渡的中间状态,如手榴弹从角色手中飞向目标之间轨迹的画面。

在又一个可选的实施例中,若上述场景中的对象包括第二对象,则在客户端中显示第二结果的画面时,可在客户端中播放用于表示客户端确定的第二对象进行状态变更的第二结果的动画。

可选地,在客户端中显示第二结果的画面可包括:按照目标方式确定与控制操作和第二信息对应的第二结果,目标方式为服务器确定与控制操作和第一信息对应的第一结果时所使用的方式;然后在客户端中显示第二结果的画面。

可选地,在客户端中显示第二结果的画面可以仅仅播放用于表示第二结果所表示的状态的单帧画面,也可以动画的形式来表现从初状态到第二结果所表示的状态之间的动画,即在客户端中播放用于表示第二对象从第一状态变更为第二结果所指示的第二状态的过程的多帧第一画面,第一状态为第二对象在变更前所处的位置。

可选地,客户端中播放用于表示第二对象从第一状态变更为第二结果所指示的第二状态的过程的多帧第一画面,状态可以为地面位置、空间位置、膨胀大小等状态,以状态为位置为例,可在客户端中播放用于表示第二对象从第一位置变更为第二位置的过程的多帧第一画面,其中,第一位置为第一状态所表示的位置,第二位置为第二状态所表示的位置。

为了保证客户端与服务器的一致,在接收到服务器返回的目标状态阶段的第一结果之后,在客户端预测得到的目标状态阶段下的第二结果所指示的第二状态与服务器返回的目标状态阶段的第一结果所指示的第三状态不同的情况下,将第二对象的状态由第二状态更正为第三状态。

可选地,为了更为流畅地表现状态变更,在将虚拟场景中的对象的状态由第二状态更正为第三状态时,可在客户端中播放用于表示第二对象从第二状态更正为第三状态的过程的多帧第二画面。

若上述场景中的对象包括第一对象和第二对象,则将第一对象和第二对象分别按照上述方案进行处理即可,在此不再赘述。

在上述进行状态预表现的方案中,以玩家使用一个会翻滚的角色为例,在相关技术的方案里,玩家每点击按钮尝试进行翻滚,都需要等待服务器回包,在弱网络的情况下,从玩家按下按钮到角色进入翻滚状态进行实际翻滚,可能需要经过400ms以上的延迟,玩家体验极差。在本申请的技术方案里,玩家点击按钮尝试翻滚后,客户端不需要等待服务器回包,立刻预表现自己的角色进入了翻滚状态并使用和服务器一样的逻辑进行翻滚动画和翻滚移动,等到弱网络下的服务器回包后,客户端收到了角色刚才的翻滚状态结果和位置,客户端校验出若这个服务器状态和客户端刚才预表现的状态是一致的,从而可以直接忽略这个服务器回包,客户端继续进行状态预表现,从而使得玩家几乎感受不到角色翻滚过程中的延迟,从而改进了玩家体验。

相关技术中的cs架构的游戏实现,缺乏预表现机制,这会让游戏在弱网络情况下,让玩家有明显的延迟感,影响玩家手感。而本申请的技术方案在底层作出了创新的预表现机制,如网络对象创建预表现、网络对象状态预表现,采用本申请的技术方案,将让玩家在弱网络的游戏过程中,能够即时以动画的形式对玩家的操作进行反馈,使得玩家感受到手感及时迅速,从而提高了玩家体验。

作为一种可选的实施例,下面以将本申请的技术方案应用于游戏为例进一步详述本申请的技术方案,若将本申请的技术方案应用于社交,与此类似,不再赘述。

如3图所示,为当前unity/unreal等网络框架下网络对象(networkobject)的创建(spawn)流程,客户端发送命令(command,即第二请求)给服务器,服务器执行创建逻辑(spawnlogic)决定生成,发送创建数据(spawndata)给客户端;在创建完成之后,服务器也执行其他逻辑,比如所创建对象的运动(movement)逻辑,并发送运动数据(即移动数据)给客户端,客户端接收到创建数据后,在客户端本地创建对应的网络对象;客户端接收到运动数据后,让网络对象按照运动数据运动,可以从图4中看出,从用户发出命令到真正创建对象,可能需要延迟40ms-400ms的时间,给用户带来非常不好的延迟感的体验。

上述unity、unreal为游戏引擎(gameengine),指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件,如对于射击游戏,游戏引擎可为游戏射击者提供各种编写游戏所需的工具,让游戏射击者能容易和快速地做出游戏程序而不用由零开始。

而本申请的创建预表现逻辑如图5所示,在玩家客户端发送命令(command)给服务器了之后,客户端不等待服务器,立刻在本地预创建网络对象,并用服务器一样的逻辑让网络对象进行运动。在预创建时,客户端会生成一个predictspawnid(比如值为1,即对象标识),并附在command里发给服务器。服务器如果同意创建(spawn),则也发送创建数据(spawndata)给客户端并附带这个predictspawnid(比如值为1),服务器也执行其他逻辑比如运动(movement)逻辑并发送数据给客户端。客户端收到这个predictspawnid后,知道对应的就是网络对象a,从而不用再重复生成a,而仅仅把spawn信息赋值给对象a。对于运动信息,因为客户端已经预表现了位置,如果直接赋值对象a的位置会有突变,视觉体验不好,所以需要有一个插值,将客户端当前对象a的位置慢慢插值到服务器告诉给客户端的真实位置。

通过上述技术方案,就算在弱网络的情况下,客户端也会立即看到对象a,改进了用户体验。

可选地,如果服务器拒绝这次创建,客户端需要有逻辑取消自己的预创建,如图6所示,当预创建一定时间后(即超时的情况下),也没有收到服务器返回的对应predictspawnid的创建消息,则客户端需要销毁这个网络对象a。

除了预表现创建网络对象外,对于玩家操作已经存在的网络对象,当这些网络对象发生状态变化时,客户端也可对它进行状态预表现。

如图7所示,传统客户端服务器游戏,当客户端发送command(即第一请求)后,会等待服务器的状态变化下发后,才将状态应用给网络对象a。可以从图7看出,从用户发出命令到对象状态真正变化,可能需要延迟40ms-400ms的时间,给用户带来了不好的延迟感的体验。

而在本申请的技术方案中,如图8所示,针对网络对象的任意状态(包括不限于位置移动、对象逻辑主状态、对象逻辑子状态,等理论上任意状态),客户端和服务器为其增加状态序号(statusindex)的逻辑,客户端服务器同时按照一致的逻辑进行同样的运算,所以在客户端发出command的同时,客户端可立刻运算新状态,并让网络对象以状态序号等于第k次的身份预表现进入新状态,而不必等待服务器回包,客户端会把这个预表现的状态和状态序号保存起来。当服务器接收到command后,执行同样的逻辑进行运算,并把结算结果状态数据(statusdata)和状态序号(statusindex)发给客户端。当客户端接收到后,依据服务器的状态序号,找到客户端刚才保存的状态序号,并拿对应的状态数据进行比较,如果比较相等,则客户端预测成功,将直接抛弃这个服务器数据,如果比较不相等,则客户端预测失败,将把服务器的状态数据应用到客户端的这个网络对象,即网络对象的状态被回退。

采用本申请的技术方案,就算在弱网络的情况下,客户端也会立即看到对象的状态变化,玩家的体验会得到更加实时的反馈,让用户几乎感受不到弱网络的存在,改进了用户体验。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

根据本发明实施例的另一个方面,还提供了一种用于实施上述画面的显示方法的画面的显示装置。图9是根据本发明实施例的一种可选的画面的显示装置的示意图,如图9所示,该装置可以包括:

检测单元901,用于检测到在客户端上触发的控制操作,其中,控制操作用于指示对虚拟场景中的对象进行状态变更。

上述客户端为moba游戏或射击游戏等游戏应用、采用增强现实ar或虚拟现实vr等技术的社交应用安装在上述终端上后所形成的客户端;所提供的虚拟场景即为游戏场景、社交场景等场景;对象(如第一对象、第二对象等)为虚拟场景中与用户相关的对象,如用户在社交场景中自己的映射(即用于表示用户自己的虚拟对象)、自己的宠物、道具等,再如用户在游戏中所操作的角色、所使用的道具等。

上述的状态可以为对象在虚拟场景的场景地面位置的状态、对象在虚拟场景中空间位置的状态等。

发送单元903,用于向服务器发送第一请求,其中,第一请求用于请求获取第一结果,第一结果为服务器根据控制操作和第一信息确定的对虚拟场景中的对象的状态变更结果,第一信息为服务器保存的与虚拟场景中的对象关联的信息。

本申请的技术方案适用于cs架构,即终端和服务器构成的架构,对于终端而言,在终端的客户端上的操作需要经由服务器的认证,因此,在客户端上检测到控制操作时,可向服务器发送第一请求,以请求服务器的许可,与此同时,若游戏为多人游戏,还需由服务器将控制操作同步到其他玩家的客户端。状态变更结果可以用来表示服务器是否认可对虚拟场景中的对象进行状态变更,在认可的情况下,还可用来表示对虚拟场景中的对象进行状态变更的变更量,如移动的距离等。

确定单元905,用于在获取到服务器返回的第一结果之前,在客户端上根据控制操作和第二信息确定第二结果,其中,第二结果为客户端确定的虚拟场景中的对象的状态变更结果,第二信息为客户端保存的与虚拟场景中的对象关联的信息。

预显示单元907,用于响应于控制操作,在客户端中显示第二结果的画面。

需要说明的是,该实施例中的检测单元901可以用于执行本申请实施例中的步骤s202,该实施例中的发送单元903可以用于执行本申请实施例中的步骤s204,该实施例中的确定单元905可以用于执行本申请实施例中的步骤s206,该实施例中的预显示单元907可以用于执行本申请实施例中的步骤s208。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。

由于服务器与客户端之间对第一请求、第一结果等数据的传输需要时间、游戏服务器的逻辑运算需要一定时间等原因,造成了客户端对用户的操作的响应具有一定的滞后性,通过上述模块,由于客户端不用等到第一服务器返回第一结果,而直接在客户端预表现客户端预测的第二结果,从而可以解决相关技术中的动画播放存在滞后的技术问题,进而达到即时对用户的控制操作进行响应的技术效果。

可选地,上述确定单元可包括:确定模块,用于按照目标方式确定与控制操作和第二信息对应的第二结果,其中,目标方式为服务器确定与控制操作和第一信息对应的第一结果时所使用的方式。

可选地,预显示单元还可用于:在客户端中播放用于表示虚拟场景中的对象从第一状态变更为第二结果所指示的第二状态的过程的多帧第一画面,其中,第一状态为虚拟场景中的对象在变更前所处的位置。

可选地,预显示单元还可用于:在客户端中播放用于表示虚拟场景中的对象从第一位置变更为第二位置的过程的多帧第一画面,第一位置为第一状态所表示的位置,第二位置为第二状态所表示的位置。

可选地,虚拟场景中的对象的状态变更包括至少一个状态阶段,其中,发送单元可包括:生成模块,用于生成包括对象标识、操作标识以及状态标识的第一请求,其中,对象标识用于标识虚拟场景中的对象,操作标识用于标识控制操作,状态标识用于标识待服务器确定的第一结果在至少一个状态阶段中所处的目标状态阶段;发送模块,用于向服务器发送生成的第一请求。

可选地,本申请的装置还可包括,矫正单元,用于在接收到服务器返回的目标状态阶段的第一结果之后,在客户端预测得到的目标状态阶段下的第二结果所指示的第二状态与服务器返回的目标状态阶段的第一结果所指示的第三状态不同的情况下,将虚拟场景中的对象的状态由第二状态更正为第三状态。

可选地,矫正单元还可用于在客户端中播放用于表示虚拟场景中的对象从第二状态更正为第三状态的过程的多帧第二画面,其中,第二画面用于表示第二状态、或第三状态、或第二状态向第三状态进行过渡的中间状态。

可选地,客户端用于控制虚拟场景中的第一对象,其中,检测单元还可用于在客户端中检测到第一控制操作,其中,第一控制操作用于指示对虚拟场景中的第一对象进行状态变更;预显示单元还可用于在客户端中播放用于表示客户端确定的第一对象进行状态变更的第二结果的动画。

可选地,检测单元还可用于在客户端中检测到第二控制操作,其中,第二控制操作用于指示对虚拟场景中的第二对象进行状态变更,第二对象受控于第一对象;预显示单元还可用于在客户端中播放用于表示客户端确定的第二对象进行状态变更的第二结果的动画。

可选地,在虚拟场景中的对象为第二对象的情况下,发送单元还可用于在向服务器发送第一请求之前,向服务器发送第二请求,其中,第二请求用于请求服务器按照所携带的目标对象标识创建虚拟场景中的对象;在获取到服务器返回的创建结果之前,在客户端上展示客户端预创建的虚拟场景中的对象,其中,在接收到的服务器发送的创建信息中的对象标识与第一请求中的对象标识相同的情况下,丢弃创建信息,其中,创建信息用于指示按照所携带的对象标识在虚拟场景中创建对象。

可选地,矫正单元还可用于在客户端上展示客户端预创建的目标对象标识对应的第二对象之后,在创建结果指示第二对象创建失败的情况下,在客户端上删除预创建的第二对象,并停止对第二对象的显示。

在创建预表现时,以玩家使用一个会投放榴弹的角色为例,在相关技术的方案里,如图4所示,玩家每点击按钮尝试投放一颗榴弹,都需要等待服务器回包(如响应第二请求返回的网络对象创建数据,即第二对象的数据),在弱网络的情况下,从玩家按下按钮到榴弹实际出来,可能需要经过400ms以上的延迟,且在传递网络对象移动数据时也存在类似问题,玩家体验极差。在本申请的方案里,玩家点击按钮尝试投放榴弹后,客户端不需等待服务器回包,立刻预表现创建榴弹(即预创建网络对象)并使用和服务器一样的逻辑移动榴弹(即进行位置状态的预表现),等到弱网络400ms服务器回包后,客户端将榴弹数据应用到预表现的榴弹,如比较创建结果是否一致,比较状态结果是否一致,若服务器同意创建且客户端本地确定的位置与服务器端指示的位置不一致,则将榴弹位置插值到服务器下发的位置,玩家几乎感受不到榴弹从没有到出现这个最关键时刻的延迟,从而改进了玩家体验。

在进行状态预表现的方案中,以玩家使用一个会翻滚的角色为例,在相关技术的方案里,玩家每点击按钮尝试进行翻滚,都需要等待服务器回包,在弱网络的情况下,从玩家按下按钮到角色进入翻滚状态进行实际翻滚,可能需要经过400ms以上的延迟,玩家体验极差。在本申请的技术方案里,玩家点击按钮尝试翻滚后,客户端不需要等待服务器回包,立刻预表现自己的角色进入了翻滚状态并使用和服务器一样的逻辑进行翻滚动画和翻滚移动,等到弱网络下的服务器回包后,客户端收到了角色刚才的翻滚状态结果和位置,客户端校验出若这个服务器状态和客户端刚才预表现的状态是一致的,从而可以直接忽略这个服务器回包,客户端继续进行状态预表现,从而使得玩家几乎感受不到角色翻滚过程中的延迟,从而改进了玩家体验。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

根据本发明实施例的另一个方面,还提供了一种用于实施上述画面的显示方法的服务器或终端。

图10是根据本发明实施例的一种终端的结构框图,如图10所示,该终端可以包括:一个或多个(图中仅示出一个)处理器1001、存储器1003、以及传输装置1005,如图10所示,该终端还可以包括输入输出设备1007。

其中,存储器1003可用于存储软件程序以及模块,如本发明实施例中的画面的显示方法和装置对应的程序指令/模块,处理器1001通过运行存储在存储器1003内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的画面的显示方法。存储器1003可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1003可进一步包括相对于处理器1001远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

上述的传输装置1005用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1005包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1005为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

其中,具体地,存储器1003用于存储应用程序。

处理器1001可以通过传输装置1005调用存储器1003存储的应用程序,以执行下述步骤:

检测到在客户端上触发的控制操作,其中,控制操作用于指示对虚拟场景中的对象进行状态变更;

向服务器发送第一请求,其中,第一请求用于请求获取第一结果,第一结果为服务器根据控制操作和第一信息确定的对虚拟场景中的对象的状态变更结果,第一信息为服务器保存的与虚拟场景中的对象关联的信息;

在获取到服务器返回的第一结果之前,在客户端上根据控制操作和第二信息确定第二结果,其中,第二结果为客户端确定的虚拟场景中的对象的状态变更结果,第二信息为客户端保存的与虚拟场景中的对象关联的信息;

响应于控制操作,在客户端中显示第二结果的画面。

处理器1001还用于执行下述步骤:

生成包括对象标识、操作标识以及状态标识的第一请求,其中,对象标识用于标识虚拟场景中的对象,操作标识用于标识控制操作,状态标识用于标识待服务器确定的第一结果在至少一个状态阶段中所处的目标状态阶段;

向服务器发送生成的第一请求。

采用本发明实施例,检测到在客户端上触发的控制操作,其中,控制操作用于指示对虚拟场景中的对象进行状态变更;向服务器发送第一请求,其中,第一请求用于请求获取第一结果,第一结果为服务器根据控制操作和第一信息确定的对虚拟场景中的对象的状态变更结果,第一信息为服务器保存的与虚拟场景中的对象关联的信息;响应于控制操作,在获取到服务器返回的第一结果之前,在客户端中显示第二结果的画面,其中,第二结果为客户端根据控制操作和第二信息预测的对虚拟场景中的对象的状态变更结果,第二信息为客户端保存的与虚拟场景中的对象关联的信息,由于客户端不用等到第一服务器返回第一结果,而直接在客户端预表现客户端预测的第二结果,从而可以解决相关技术中的动画播放存在滞后的技术问题,进而达到即时对用户的控制操作进行响应的技术效果。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图10所示的结构仅为示意,终端可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图10其并不对上述电子装置的结构造成限定。例如,终端还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行画面的显示方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

检测到在客户端上触发的控制操作,其中,控制操作用于指示对虚拟场景中的对象进行状态变更;

向服务器发送第一请求,其中,第一请求用于请求获取第一结果,第一结果为服务器根据控制操作和第一信息确定的对虚拟场景中的对象的状态变更结果,第一信息为服务器保存的与虚拟场景中的对象关联的信息;

在获取到服务器返回的第一结果之前,在客户端上根据控制操作和第二信息确定第二结果,其中,第二结果为客户端确定的虚拟场景中的对象的状态变更结果,第二信息为客户端保存的与虚拟场景中的对象关联的信息;

响应于控制操作,在客户端中显示第二结果的画面。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:

生成包括对象标识、操作标识以及状态标识的第一请求,其中,对象标识用于标识虚拟场景中的对象,操作标识用于标识控制操作,状态标识用于标识待服务器确定的第一结果在至少一个状态阶段中所处的目标状态阶段;

向服务器发送生成的第一请求。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1