CN111167116B - 一种平滑显示的方法、终端和计算机存储介质 - Google Patents

一种平滑显示的方法、终端和计算机存储介质 Download PDF

Info

Publication number
CN111167116B
CN111167116B CN201910938008.5A CN201910938008A CN111167116B CN 111167116 B CN111167116 B CN 111167116B CN 201910938008 A CN201910938008 A CN 201910938008A CN 111167116 B CN111167116 B CN 111167116B
Authority
CN
China
Prior art keywords
time
frame
logical
target
target object
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.)
Active
Application number
CN201910938008.5A
Other languages
English (en)
Other versions
CN111167116A (zh
Inventor
刘亚奇
黄光略
林洁文
钟东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910938008.5A priority Critical patent/CN111167116B/zh
Publication of CN111167116A publication Critical patent/CN111167116A/zh
Application granted granted Critical
Publication of CN111167116B publication Critical patent/CN111167116B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/56Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/63Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by the player, e.g. authoring using a level editor

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明实施例公开了一种平滑显示的方法、终端和计算机存储介质。所述方法包括:在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对目标对象的操作指令;根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻;确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置;根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧。采用本发明实施例,可以实现对因网络抖动而延迟接收到的逻辑帧的时间进行修正,改善由网络抖动引起的画面抖动情况,从而优化客户端的画面流畅度。

Description

一种平滑显示的方法、终端和计算机存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种平滑显示的方法、终端和计算机存储介质。
背景技术
在多人合作的网络游戏中,大多采用帧同步技术同步每个玩家的游戏状态以保证玩家的游戏体验。帧同步是指客户端根据玩家动作发送操作指令至服务器,服务器收集所有客户端操作指令组成逻辑帧,并以一定的时间间隔广播给各个客户端,各个客户端收到逻辑帧后计算当前游戏状态并显示画面内容。即通过同步每个玩家的操作实现了同步每个客户端的游戏状态。然而,由于帧同步游戏的客户端画面依靠服务器逻辑帧广播驱动,网络抖动会导致客户端收到的广播帧率不稳定,影响游戏画面的流畅度。例如,在网络延时的情况下,多个游戏玩家中某一个玩家的客户端未能按时接收到服务器发送的逻辑帧,则该客户端未能按时根据所述逻辑帧进行游戏状态的更新和游戏画面的显示,使得在同一游戏场景中,不同客户端的游戏状态不同步,以及游戏画面的突然卡顿,不流畅等。
为改善帧同步游戏的客户端画面流畅度,采用的优化方案主要有网络和客户端逻辑两方面。在网络方面采用带有冗余帧的用户数据报协议(User Datagram Protocol,UDP)代替传统的传输控制协议(Transmission Control Protocol,TCP),保证其低延时和可靠性,但该方案不适用于网页端,局限性大。在客户端逻辑方面基于不同游戏的不同玩法、逻辑策略采用降低游戏的一致性或者实时性的方案,例如,只同步游戏中的一部分必要状态或者设置客户端帧广播缓冲区,将接收到的逻辑帧放入缓冲区,经过一定的时延后再取出逻辑帧进行计算。然而,由于此类方案降低了游戏的一致性或实时性,牺牲了玩家的游戏体验,妥协性大,且不同的游戏其玩法和逻辑策略不尽相同,使得此类方案在不同游戏间难以通用。
发明内容
本发明实施例提供了一种平滑显示的方法、终端及计算机存储介质,可以优化帧同步客户端的画面流畅度,提高用户的使用体验。
一方面,本发明实施例提供了一种平滑显示的方法,该平滑显示的方法包括:
在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对目标对象的操作指令;
根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧;
确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置;
根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景包括所述目标对象。
其中,所述目标对象包括目标游戏虚拟对象,所述目标场景包括目标游戏场景。
其中,所述方法还包括:
根据所述操作指令和预设算法,确定所述操作指令对应的所述目标对象的移动方向、移动速度和移动加速度;
所述确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置,包括:
确定目标时刻与所述第二时刻之间的时间差,基于所述目标对象的移动方向、移动速度、移动加速度、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置。
其中,所述方法还包括:
确定所述目标对象在所述第一逻辑帧的相邻前一逻辑帧对应的实际生效时刻的逻辑位置;
根据所述目标对象的移动方向、移动速度、移动加速度和所述服务器发送所述第一逻辑帧与发送所述前一逻辑帧的时间间隔,基于所述目标对象在所述前一逻辑帧对应的实际生效时刻的逻辑位置,确定所述目标对象在所述第二时刻的逻辑位置。
其中,所述根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,包括:
确定在所述第一时刻之前接收到的一个或多个第二逻辑帧分别对应的第三时刻,以及确定所述一个或多个第二逻辑帧的帧号;
根据所述一个或多个第二逻辑帧分别对应的帧号和第三时刻,确定所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律;
根据所述分布规律和所述第一逻辑帧的帧号确定所述第一逻辑帧对应的实际生效时刻为第二时刻。
其中,所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律满足如下线性方程:
y=ax+b
其中,y为所述一个或多个第二逻辑帧中的任意一个第二逻辑帧对应的实际生效时刻,x为所述任意一个第二逻辑帧的帧号,a、b为通过直线拟合算法计算得到的直线参数。
其中,所述a、b为通过最小二乘法计算得到的使时间差的平方和为最小值的直线参数,所述时间差的平方和为所述一个或多个第二逻辑帧分别对应的第三时刻与对应的实际生效时刻的时间差的平方和。
其中,所述目标对象在所述目标时刻对应的逻辑位置为所述目标对象在所述第二时刻的逻辑位置。
其中,所述方法还包括:
在接收到与所述第一逻辑帧相邻的下一逻辑帧之前,根据所述目标对象在所述第二时刻的逻辑位置和所述渲染帧的帧间隔更新所述目标对象的渲染位置。
另一方面,本发明实施例提供了一种平滑显示的装置,该平滑显示的装置包括:
接收模块,用于在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对目标对象的操作指令;
第二时刻确定模块,根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧;
渲染位置确定模块,用于确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置;
渲染帧生成模块,用于根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景包括所述目标对象。
其中,所述第二时刻确定模块,包括:
逻辑帧确定单元,用于确定在所述第一时刻之前接收到的一个或多个第二逻辑帧分别对应的第三时刻,以及确定所述一个或多个第二逻辑帧的帧号;
分布规律确定单元,用于根据所述一个或多个第二逻辑帧分别对应的帧号和第三时刻,确定所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律;
第二时刻确定单元,用于根据所述分布规律和所述第一逻辑帧的帧号确定所述第一逻辑帧对应的实际生效时刻为第二时刻。
其中,所述装置还包括:
确定模块,用于根据所述操作指令和预设算法,确定所述操作指令对应的所述目标对象的移动方向、移动速度和移动加速度;
所述渲染位置确定模块,具体用于确定目标时刻与所述第二时刻之间的时间差,基于所述目标对象的移动方向、移动速度、移动加速度、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置。
其中,所述装置还包括:
第一逻辑位置确定模块,用于确定所述目标对象在所述第一逻辑帧的相邻前一逻辑帧对应的实际生效时刻的逻辑位置;
第二逻辑位置确定模块,用于根据所述目标对象的移动方向、移动速度、移动加速度和所述服务器发送所述第一逻辑帧与发送所述前一逻辑帧的时间间隔,基于所述目标对象在所述前一逻辑帧对应的实际生效时刻的逻辑位置,确定所述目标对象在所述第二时刻的逻辑位置。
其中,所述装置还包括:
渲染更新模块,用于在接收到与所述第一逻辑帧相邻的下一逻辑帧之前,根据所述目标对象在所述第二时刻的逻辑位置和所述渲染帧的帧间隔更新所述目标对象的渲染位置。
再一方面,本发明实施例提供了一种终端,包括:处理器、存储器和显示屏;
所述存储器、所述显示屏与所述处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述处理器调用所述计算机指令以使得所述终端执行:
在所述显示屏上显示当前时刻下的第一界面,所述第一界面包括目标对象;
在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对所述目标对象的操作指令;
根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧;
确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置;
根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景包括所述目标对象;
在所述显示屏上显示所述目标时刻下的第二界面,所述第二界面为根据所述目标场景在所述目标时刻的渲染帧执行画面渲染操作后得到的界面。
其中,所述第一界面还包括操作控件;所述处理器,还用于调用所述计算机指令以使得所述终端执行:
响应于所述操作控件检测到的所述操作指令,向所述服务器发送所述操作指令,所述操作指令对应所述目标对象的移动方向、移动速度和移动加速度。
其中,所述处理器,还用于调用所述计算机指令以使得所述终端执行:
根据所述渲染帧的帧间隔,在所述显示屏上显示所述目标时刻的相邻下一时刻下的第三界面,所述第三界面包括根据所述目标时刻的相邻下一时刻的渲染位置更新后的目标对象。
其中,所述目标对象包括目标游戏虚拟对象,所述目标场景包括目标游戏场景。
其中,所述处理器,还用于调用所述计算机指令以使得所述终端执行:
根据所述操作指令和预设算法,确定所述操作指令对应的所述目标对象的移动方向、移动速度和移动加速度;
其中,所述处理器,具体用于调用所述计算机指令以使得所述终端执行:
确定目标时刻与所述第二时刻之间的时间差,基于所述目标对象的移动方向、移动速度、移动加速度、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置。
其中,所述处理器,还用于调用所述计算机指令以使得所述终端执行:
确定所述目标对象在所述第一逻辑帧的相邻前一逻辑帧对应的实际生效时刻的逻辑位置;
根据所述目标对象的移动方向、移动速度、移动加速度和所述服务器发送所述第一逻辑帧与发送所述前一逻辑帧的时间间隔,基于所述目标对象在所述前一逻辑帧对应的实际生效时刻的逻辑位置,确定所述目标对象在所述第二时刻的逻辑位置。
其中,所述处理器,具体用于调用所述计算机指令以使得所述终端执行:
确定在所述第一时刻之前接收到的一个或多个第二逻辑帧分别对应的第三时刻,以及确定所述一个或多个第二逻辑帧的帧号;
根据所述一个或多个第二逻辑帧分别对应的帧号和第三时刻,确定所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律;
根据所述分布规律和所述第一逻辑帧的帧号确定所述第一逻辑帧对应的实际生效时刻为第二时刻。
其中,所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律满足如下线性方程:
y=ax+b
其中,y为所述一个或多个第二逻辑帧中的任意一个第二逻辑帧对应的实际生效时刻,x为所述任意一个第二逻辑帧的帧号,a、b为通过直线拟合算法计算得到的直线参数。
其中,所述a、b为通过最小二乘法计算得到的使时间差的平方和为最小值的直线参数,所述时间差的平方和为所述一个或多个第二逻辑帧分别对应的第三时刻与对应的实际生效时刻的时间差的平方和。
其中,所述目标对象在所述目标时刻对应的逻辑位置为所述目标对象在所述第二时刻的逻辑位置。
其中,所述处理器,还用于调用所述计算机指令以使得所述终端执行:
在接收到与所述第一逻辑帧相邻的下一逻辑帧之前,根据所述目标对象在所述第二时刻的逻辑位置和所述渲染帧的帧间隔更新所述目标对象的渲染位置。
再一方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有一条或一条以上指令,所述一条或一条以上指令用于由所述处理器加载并执行如下步骤:
在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对目标对象的操作指令;
根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧;
确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置。
本发明实施例提供了一种平滑显示的方法,可以通过客户端接收到的历史逻辑帧的时间分布规律,将第一逻辑帧的接收时刻(即第一时刻)修正为第一逻辑帧对应的实际生效时刻(即第二时刻);然后根据目标对象在实际生效时刻的逻辑位置、目标时刻与实际生效时刻的时间差、以及第一逻辑帧中针对目标对象的操作指令(例如移动方向、移动速度、移动加速度)计算得到目标对象在目标时刻的渲染位置。在本发明实施例中客户端在由网络延时导致的第一逻辑帧未按时到达的情况下,依然根据第一逻辑帧的上一逻辑位置和渲染帧的帧间隔持续更新目标对象的渲染位置,使得客户端画面持续流畅显示;并且,与现有技术中的客户端画面流畅显示的技术相比,本发明实施例是根据历史逻辑帧的时间分布规律将第一逻辑帧的接收时刻修正为第一逻辑帧对应的实际生效时刻,从而改变了计算目标时刻的渲染帧所基于的逻辑位置对应的时刻,进而改变了计算渲染帧对应的时长(现有技术是目标时刻与接收时刻的时间差,本发明实施例是目标时刻与实际生效时刻的时间差),因此,在目标时刻进行渲染帧的更新时,对于相同时延造成的画面纠正,在较长一段时间纠正比在较短时间纠正,显然更加平滑、流畅,有效的改善由于网络抖动等原因造成的客户端画面抖动情况;并且,由于本发明实施例将第一逻辑帧的接收时刻进行了纠正,使得该逻辑帧对应的逻辑位置在其原本应该对应的实际生效时刻,因此可以有效的稳定帧率,减小逻辑帧与渲染帧之间的误差,提高用户的使用体验。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种平滑显示的方法的系统架构示意图;
图2是本发明实施例提供的一种帧同步游戏流程示意图;
图3是本发明实施例提供的一种帧同步游戏客户端的画面显示方法的系统架构示意图;
图4是本发明实施例提供的一种平滑显示的方法的流程示意图;
图5是本发明实施例提供的另一种平滑显示的方法的流程示意图;
图6是本发明实施例提供的一种平滑显示的方法的应用场景示意图;
图7是本发明实施例提供的一种网络稳定情况下的逻辑帧的帧号与接收时间的关系示意图;
图8是本发明实施例提供的一种网络抖动情况下的逻辑帧的帧号与接收时间的关系示意图;
图9是本发明实施例提供的一种直线拟合的示意图;
图10是本发明实施例提供的一种网络稳定情况下的逻辑帧的帧号与接收时间、游戏状态的关系示意图;
图11为本发明实施例提供的一种网络抖动情况下的逻辑帧的帧号与接收时间、游戏状态的关系示意图;
图12为本发明实施例提供的另一种网络抖动情况下的逻辑帧的帧号与接收时间、游戏状态的关系示意图;
图13是本发明实施例提供的一种网络抖动情况下的游戏画面渲染示意图;
图14是本发明实施例提供的另一种网络抖动情况下的游戏画面渲染示意图;
图15是本发明实施例提供的一种帧同步客户端画面平滑显示的方法的处理流程示意图;
图16是本发明实施例提供的一种基于终端的平滑显示的方法流程示意图;
图17A是本发明实施例提供的一种第一界面示意图;
图17B是本发明实施例提供的一种第二界面示意图;
图17C是本发明实施例提供的一种第三界面示意图;
图18是本发明实施例提供的一种帧同步应用客户端界面示意图;
图19是本发明实施例提供的一种平滑显示的装置的结构示意图;
图20是本发明实施例提供的一种终端设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1是本发明实施例提供的一种平滑显示的方法的系统架构示意图,本发明实施例的技术方案可以在图1举例所示的系统架构或类似的系统架构中具体实施。如图1所示,该系统架构可以包括服务器100a和多个终端设备,如图1所示,具体可以包括终端设备200a、200b、200c和200d。其中,终端设备200a、200b、200c和200d中的客户端可以发送操作指令(例如针对某个游戏角色的奔跑和技能释放等等)至服务器100a,服务器100a接收操作指令,生成相应的逻辑帧(包含有操作指令,例如针对某个游戏角色的奔跑和技能释放等等),并按照一定的时间间隔向终端设备200a、200b、200c和200d中的客户端发送逻辑帧,客户端接收服务器100a发送的逻辑帧并进行相关计算和显示等。由此,终端设备200a、200b、200c和200d中的客户端通过同步各个客户端的操作从而实现同步各个客户端的状态,即实现帧同步。
终端设备200a、200b、200c和200d均可以调用相应的客户端执行帧同步方案,终端设备200a、200b、200c和200d可以为具备上述功能的智能手机、智能可穿戴设备、平板电脑、膝上计算机以及台式电脑等等。此处的客户端可以包括但不限于:手游客户端、端游客户端及其他的应用客户端等等。其中,手游客户端是指运行于移动终端中的游戏客户端,端游客户端是指运行于个人计算机(Personal Computer,PC)中的游戏客户端。服务器100a可以为终端设备200a、200b、200c和200d提供后台服务,服务器100a可以是上述客户端的后台服务器。服务器100a可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。服务器100a可以通过无线网络和有线网络与终端设备200a、200b、200c和200d建立通信连接。
下面以将该平滑显示方案运用在如图1所示的系统架构中,并调用帧同步游戏客户端执行该方案为例,对本发明实施例所提出的平滑显示方案进行阐述。请参见图2,图2是本发明实施例提供的一种帧同步游戏流程示意图。所述帧同步游戏为通过同步各个玩家在游戏客户端的操作从而同步每个游戏客户端的游戏状态。如图2所示,在帧同步游戏中,后台(例如服务器100a)以一定的时间间隔(例如66ms,即15帧/秒的频率)向该帧同步游戏中的每个客户端(例如对应图1所示的终端设备200a、200b、200c和200d中的客户端)发送相同的逻辑帧,所述逻辑帧中可以包括任意一个或多个客户端发送至服务器100a的操作指令,然而大部分情况下,所述逻辑帧为空逻辑帧,当玩家(例如对应图1所示的玩家1、玩家2、玩家3和玩家4)有游戏操作时,客户端会向后台发送操作指令,后台会接收每个客户端发送的操作指令,将所述操作指令包含的数据填入逻辑帧中,并按照一定的时间间隔将所述逻辑帧通过广播的方式发送至每个客户端,每个客户端均可以接收到所述逻辑帧。在帧同步游戏客户端逻辑中,为提高游戏开发率,大多采用逻辑层和表现层分离的策略。其中,所述逻辑层由接收到的逻辑帧驱动,负责数据处理和逻辑运算等,得到游戏逻辑状态,所述游戏逻辑状态具体可以为相关目标对象(例如为游戏角色、子弹、怪兽、车辆和技能特效等等)的逻辑位置等;所述表现层可以用于根据逻辑层计算得到的游戏逻辑状态计算相应的游戏表现状态,并通过引擎渲染向玩家提供所述游戏逻辑状态的表现(例如显示相关游戏画面,如可以包括相关游戏场景和游戏角色的形象、装备和技能特效等等),以及接收玩家的操作指令,为玩家提供一种交互式操作界面。在理想情况下(如无网络时延),每个客户端可以通过在相同的时间接收到相同的逻辑帧,计算得到相同的游戏状态,从而通过同步每个客户端的操作实现同步每个客户端的游戏状态,即实现帧同步。
结合上述图1所示的一种平滑显示的方法的系统架构图以及上述图2所示的一种帧同步游戏流程示意图,以帧同步游戏客户端为例,本发明实施例还提供了一种帧同步游戏客户端的画面显示方法的系统架构示意图,该帧同步游戏可以运行在如图1所示的系统架构中。请参见图3,图3是本发明实施例提供的一种帧同步游戏客户端的画面显示方法的系统架构示意图。如图2所示,例如,某一时刻,在一种多人互动游戏场景中,玩家1可以通过终端设备200a中的游戏客户端1向服务器100a发送操作指令1;同一时刻,在同一种多人互动游戏场景中,玩家2可以通过终端设备200b中的游戏客户端2向服务器100a发送操作指令2。操作指令1和操作指令2可以为针对某个游戏人物的移动、射击和技能释放等等中的任意一种或多种。服务器100a可以接收操作指令1和操作指令2,并根据操作指令1和操作指令2组成逻辑帧,按照一定的时间间隔将所述逻辑帧同时发送至客户端1和客户端2。
如上所述,客户端1和客户端2在接收到该逻辑帧后首先在逻辑层开始计算游戏逻辑状态,其次根据计算所得的游戏逻辑状态在表现层计算游戏表现状态。最终,通过游戏引擎渲染所述游戏表现状态得到游戏画面。需要说明的是,该平滑显示方案的核心是同步每个客户端的游戏状态,但每个客户端渲染得到的游戏画面可以不同,每个客户端可以根据实际需求渲染得到相应的游戏画面。例如,在一种多人互动的网络游戏场景中,己方客户端的游戏画面需要显示己方游戏角色在游戏画面中的具体移动画面,而在其他客户端画面中可以只显示己方游戏角色在地图中的位置,例如通过缩略地图中的一个坐标小圆点来显示,等等。
如上所述,所述逻辑帧的接收频率等于所述游戏逻辑状态的计算频率,即客户端每接收一个逻辑帧,游戏逻辑状态就更新一次;所述游戏表现状态的计算频率等于所述引擎渲染频率,即客户端每更新一次游戏表现状态就通过引擎渲染更新一次游戏画面。需要说明的是,所述表现状态的更新频率(即游戏画面的更新频率)一般大于所述逻辑帧的接收频率(即逻辑状态的更新频率)。具体表现为所述客户端可以基于一个逻辑帧计算得到的逻辑状态,在下一时刻的逻辑帧之前按照一定的时间间隔和预设次数多次更新表现状态,也可以按照一定的时间间隔持续更新表现状态,并通过引擎渲染得到多帧游戏画面。例如,所述逻辑帧的接收频率可以为15帧/秒,所述表现状态的更新频率可以为60帧/秒,即在客户端按时接收到每一帧逻辑帧的情况下,基于一种逻辑状态可以更新得到四种不同时刻的表现状态(即通过引擎渲染更新四次游戏画面)。使得游戏画面的流畅度更高,游戏实时性更高。
在一种可能的实施方式中,某一时刻,玩家1和玩家2均没有游戏操作,所述客户端1和客户端2均没有向服务器100a发送操作指令,则所述服务器100a将向客户端1和客户端2发送的逻辑帧为“空逻辑帧”,所述客户端1和客户端2根据所述“空逻辑帧”计算得到与上一时刻相同的逻辑状态和表现状态以及分别通过游戏引擎渲染得到与上一时刻相同的游戏画面。具体表现为所述客户端1和客户端2的游戏画面维持不变。本发明实施例对此不再做具体赘述。
由上述帧同步游戏流程可知,每个客户端可以通过在相同的时间接收到相同的逻辑帧,计算得到相同的游戏状态,实现通过同步每个客户端的操作进而同步每个客户端的游戏状态,即实现帧同步。显然,在相同的时间接收到所述逻辑帧为理想情况,实际上,客户端的网络很难一直稳定,而网络抖动会造成客户端接收到逻辑帧的时间间隔不固定,各个客户端的游戏状态不同步,导致游戏画面的突然卡顿、不流畅等。此外,在由于网络延时导致的下一时刻的逻辑帧迟迟未到的情况下,若一直根据上一时刻的逻辑帧对应的逻辑状态持续更新表现状态,则会导致在客户端接收到该延时的逻辑帧后,计算得到的表现状态将会与现已更新得到表现状态存在较大偏差,使得游戏画面发生抖动。
基于此,本发明实施例提供了一种平滑显示的方法,在保证帧同步游戏实时性和画面流畅度的同时,可以改善客户端在网络抖动情况下产生的画面抖动问题,提高玩家的游戏体验。
请参见图4,图4为本发明是本发明实施例提供的一种平滑显示的方法的流程示意图,该方法可应用于上述图1所述的系统架构中,其中的客户端可以为上述图1系统架构中的终端设备200a、200b、200c和200d中的任意一个中的客户端(例如为图1所示的客户端1、客户端2、客户端3和客户端4),可用于支持并执行图4中所示的方法流程。下面将结合图4从客户端侧进行描述,该方法可以包括以下步骤S401-S404:
步骤S401,在第一时刻接收到服务器发送的第一逻辑帧。
具体的,客户端在第一时刻接收到服务器发送的第一逻辑帧,所述第一时刻为客户端接收到第一逻辑帧的实际时刻。所述第一逻辑帧为所述服务器按照固定的时间间隔向每个客户端发送的逻辑帧。其中,所述第一逻辑帧可以包括针对目标对象的操作指令(例如针对某一游戏人物的移动,技能释放等等)。所述操作指令可以是本客户端向服务器发送的操作指令,也可以是同一游戏场景中,其他一个或多个客户端向服务器发送的不同操作指令,所述目标对象可以是一个,也可以是多个。
可选的,在客户端接收到第一逻辑帧后,客户端可以确定第一逻辑帧的帧号,所述帧号可以为简单的自然数(例如为1、2、3、4等等)。
步骤S402,根据历史逻辑帧对应的时间规律,确定第一逻辑帧对应的实际生效时刻为第二时刻。
具体的,客户端可以通过接收到的多个历史逻辑帧的时间分布规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述第一逻辑帧对应的实际生效时刻满足其时间分布规律。所述第一逻辑帧对应的实际生效时刻可以认为是在网络状况理想的情况下(如无网络时延的情况下)客户端接收到第一逻辑帧的时刻。
可选的,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧,所述历史逻辑帧可以是在所述第一时刻之前接收到的所有逻辑帧、也可以是在所述第一时刻之前接收到的部分逻辑帧、还可以是包括第一逻辑帧在内的历史逻辑帧,本发明实施例对此不作具体限定。
步骤S403,确定目标时刻与第二时刻之间的时间差,基于操作指令、时间差以及目标对象在第二时刻的逻辑位置,确定目标对象在目标时刻的渲染位置。
具体的,在客户端表现层,可以通过上述步骤S402确定的第一时刻,确定目标时刻与第二时刻的时间差;然后可以根据针对目标对象的操作指令(例如针对某一游戏人物的移动,技能释放等,所述操作指令可以对应相关的移动方向、移动速度、移动加速度等,其中,移动方向、移动速度和移动加速度中的任意一种均可以为零)和目标时刻与所述第二时刻之间的时间差,基于逻辑层计算所得的目标对象在第二时刻的逻辑位置,在客户端表现层计算得到目标对象在目标时刻的渲染位置。所述目标对象在目标时刻的渲染位置可以用于生成目标对象在目标时刻对应的目标场景渲染帧。
步骤S404,根据目标对象在所述目标时刻的渲染位置,生成目标场景在目标时刻的渲染帧。
具体的,在客户端表现层,根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景(例如为某一游戏场景)包括所述目标对象(例如为处于该游戏场景中的某一游戏人物、怪兽、车辆和技能特效等等)。可选的,根据所述渲染帧可以执行所述目标对象在所述目标时刻的渲染位置对应的画面渲染操作,得到所述目标时刻的渲染画面。
本发明实施例提供了一种平滑显示的方法,可以通过客户端接收到的历史逻辑帧的时间分布规律,将第一逻辑帧的接收时刻(即第一时刻)修正为第一逻辑帧对应的实际生效时刻(即第二时刻);然后根据目标对象在实际生效时刻的逻辑位置、目标时刻与实际生效时刻的时间差、以及第一逻辑帧中针对目标对象的操作指令(例如移动方向、移动速度、移动加速度)计算得到目标对象在目标时刻的渲染位置。在本发明实施例中客户端在由网络延时导致的第一逻辑帧未按时到达的情况下,依然根据第一逻辑帧的上一逻辑位置和渲染帧的帧间隔持续更新目标对象的渲染位置,使得客户端画面持续流畅显示;并且,与现有技术中的客户端画面流畅显示的技术相比,本发明实施例是根据历史逻辑帧的时间分布规律将第一逻辑帧的接收时刻修正为第一逻辑帧对应的实际生效时刻,从而改变了计算目标时刻的渲染帧所基于的逻辑位置对应的时刻,进而改变了计算渲染帧对应的时长(现有技术是目标时刻与接收时刻的时间差,本发明实施例是目标时刻与实际生效时刻的时间差),因此,在目标时刻进行渲染帧的更新时,对于相同时延造成的画面纠正,在较长一段时间纠正比在较短时间纠正,显然更加平滑、流畅,有效的改善由于网络抖动等原因造成的客户端画面抖动情况;并且,由于本发明实施例将第一逻辑帧的接收时刻进行了纠正,使得该逻辑帧对应的逻辑位置在其原本应该对应的实际生效时刻,因此可以有效的稳定帧率,减小逻辑帧与渲染帧之间的误差,提高用户的使用体验。
请参见图5,图5是本发明实施例提供的另一种平滑显示的方法的流程示意图,该方法可应用于上述图1所述的系统架构中,其中的服务器可以为上述图1系统架构中的服务器100a,其中的客户端可以为上述图1系统架构中的终端设备200a、200b、200c和200d中的任意一个中的客户端(例如为图1所示的客户端1、客户端2、客户端3和客户端4),可用于支持并执行图5中所示的方法流程。下面将结合图5从客户端侧进行描述,该方法可以包括以下步骤S501-S508:
步骤S501,获取针对目标对象的操作指令。
具体的,客户端可以通过玩家在所述客户端的相关操作获取输入的针对目标对象的操作指令。
在一种可能的实施方式中,所述客户端可以为一种手游客户端,所述手游客户端是指运行于移动终端中的游戏客户端,可以运行相应的帧同步游戏,例如王者荣耀、和平精英等等。用户可以通过相关游戏操作,例如在游戏界面的操控区域中通过对触摸屏的点击或长按等操作,输入针对目标对象的操作指令,所述操作指令可以为移动,射击和技能释放等等。
可选的,所述客户端也可以为一种端游客户端,所述端游是指运行于个人计算机(Personal Computer,PC)中的游戏客户端,可以运行相应的帧同步游戏,例如为英雄联盟、绝地求生等等。用户可以通过相关游戏操作输入针对目标对象的操作指令,例如通过键盘或通过鼠标点击游戏画面中的目标对象等输入针对目标对象的操作指令。此处不再赘述。
步骤S502,向服务器发送针对目标对象的操作指令。
具体的,在玩家通过客户端输入针对目标对象的操作指令后,客户端可以将所述操作指令发送至服务器。
在一种可能的实施方式中,如图6所示,图6是本发明实施例提供的一种平滑显示的方法的应用场景示意图。例如,在一种多人互动的帧同步游戏场景中,存在多个游戏客户端(例如为客户端1、客户端2、客户端3和客户端4)。例如,在某一时刻,只有玩家1有游戏操作,则客户端1可以向服务器发送针对目标对象的操作指令,例如为如图5所示的第一操作指令。又例如,当该帧同步游戏场景中的所有玩家(包括玩家1、玩家2、玩家3和玩家4)同时存在游戏操作时,则每个客户端(包括客户端1、客户端2、客户端3和客户端4)可以同时向服务器发送针对各自不同的目标对象的操作指令。
可选的,所述服务器可以根据接收到的其中一个客户端发送的针对一个目标对象的操作指令生成第一逻辑帧,也可以根据接收到的多个客户端分别发送的针对多个不同目标对象的不同操作指令生成第一逻辑帧。所述第一逻辑帧可以对应针对一个或多个目标对象的移动方向、移动速度和移动加速度等。为了保证服务器发送的逻辑帧可以被客户端及时、有效的接收,不再为网络增加负担,所述逻辑帧中包含的数据应尽量小于一个最大传输单元(Maximum Transmissiom Unit,MTU)。
步骤S503,在第一时刻接收到服务器发送的第一逻辑帧。
具体的,步骤S503可参考上述图4实施例中的步骤S401,此处不再赘述。
例如,如图6所示,服务器根据客户端1发送的第一操作指令生成第一逻辑帧,并同时向客户端1、客户端2、客户端3和客户端4发送所述第一逻辑帧。客户端1、客户端2、客户端3和客户端4的网络状况可以不同,则每个客户端接收到第一逻辑帧的时刻也可以不同。以客户端2为例,客户端2的网络状况稳定,不存在网络抖动、延时等情况,由于服务器发送逻辑帧的时间间隔是固定的,则客户端2接收到逻辑帧的时间间隔也是固定的,并且可以认为客户端2接收到逻辑帧的时刻与服务器发送逻辑帧的时刻是相同的。如图7所示,图7是本发明实施例提供的一种网络稳定情况下的逻辑帧的帧号与接收时间的关系示意图。如图7所示,所述逻辑帧到达客户端的时间间隔为66ms(即15帧/秒的频率),具体的,1号逻辑帧对应的接收时间为第66ms、2号逻辑帧对应的接收时间为第132ms、3号逻辑帧对应的接收时间为第198ms。所述第一逻辑帧可以对应于如图7所示的3号逻辑帧,客户端2接收到所述第一逻辑帧的时刻可以为第198ms。显然,在网络稳定的情况下,逻辑帧的帧号与逻辑帧的接收时间满足如下简单的线性方程:
tn=66*n(ms)
其中,tn为n号逻辑帧到达客户端的时间,n为逻辑帧的帧号,所述帧号n可以为简单的自然数(例如为1、2、3、4等等)。
例如,以客户端1为例,客户端1存在网络抖动的情况,则客户端1接收到道逻辑帧的时间间隔不再固定。如图8所示,图8是本发明实施例提供的一种网络抖动情况下的逻辑帧的帧号与接收时间的关系示意图。如图8所示,客户端接收到逻辑帧的时间间隔不固定,具体的,1号逻辑帧对应的接收时间为第66ms、2号逻辑帧对应的接收时间为第132ms、3号逻辑帧对应的接收时间为第264ms。所述第一逻辑帧可以对应如图6所示的3号逻辑帧,客户端1接收到所述第一逻辑帧的第一时刻可以为第264ms,即客户端1延时接收到所述第一逻辑帧。如图8所示,逻辑帧的帧号与逻辑帧的接收时间也不再是线性关系。
步骤S504,确定操作指令对应的目标对象的移动方向、移动速度和移动加速度。
具体的,客户端可以根据所述目标对象的操作指令和相关预设算法计算得到所述第一逻辑帧对应的目标对象的移动方向、移动速度和移动加速度。所述操作指令可以是同一游戏场景中本客户端或者其他任意一个客户端向服务器发送的操作指令,也可以是多个客户端向服务器发送的操作指令集合。所述操作指令可以直接包括目标对象(例如为游戏角色、子弹、怪兽和技能特效等等)的移动方向、移动速度和移动加速度等等,例如游戏角色以5米/秒的速度向正北方向移动。所述目标对象的操作指令也可以是基于目标对象原先的移动方向的方向调整指令以及移动速度的速度调整指令等。所述目标对象的操作指令还可以包括移动方向的调整调取指令和移动速度的调整调取指令,即所述终端中已经内设好多种移动方向调整机制和移动速度调整机制等,例如目标对象的“加速技能”和“瞬移技能”等等。
步骤S505,根据历史逻辑帧对应的时间规律,确定第一逻辑帧对应的实际生效时刻为第二时刻。
具体的,步骤S505可参考上述图4实施例中的步骤S402,此处不再赘述。
在一种可能的实施方式中,可以通过直线拟合的方法确定第一逻辑帧对应的实际生效时刻。请参见图9,图9是本发明实施例提供的一种直线拟合的示意图。如图9所示,客户端因为网络抖动等原因,例如,原本按照固定的时间间隔(如66ms)在第264ms可以接收到的4号逻辑帧延时到第300ms才接收到。此时,可以根据所述1、2和3号逻辑帧的接收时刻的分布规律,将所述4号逻辑帧拟合到由所述1、2和3号逻辑帧确定的拟合直线上(如图8中的灰色圆点所示),从而修正由网络延时带来的接收时间的误差。
可选的,可以通过最小二乘法对逻辑帧的帧号和接收时刻进行直线拟合,确定历史逻辑帧的帧号和对应的实际生效时刻的线性方程,然后将第一逻辑帧的帧号代入该线性方程进行计算得到第一逻辑帧对应的实际生效时间,即第二时刻。
其中,最小二乘法的计算过程可以具体包括如下步骤s11-s13:
步骤s11,令逻辑帧的帧号和所述逻辑帧对应的实际生效时刻满足线性关系。
具体的,所述线性关系可以为如下线性方程:y=ax+b
其中,x可以为第一时刻之前接收到的任意一个历史逻辑帧的帧号,y为所述任意一个历史逻辑帧对应的实际生效时刻,a、b为直线参数,此时a、b还未被赋予具体数值。
步骤s12,令:
Figure BDA0002221872300000181
Figure BDA0002221872300000182
Figure BDA0002221872300000183
Figure BDA0002221872300000184
其中,xi和yi可以表示客户端接收到的任意一个逻辑帧的帧号和所述任意一个逻辑帧对应的接收时刻。
可选的,在根据步骤s12中提供的公式进行计算时,所采用的逻辑帧可以是接收到的包括第一逻辑帧在内的所有历史逻辑帧,也可以是部分历史逻辑帧,例如,可以设置拟合阈值,将时间差距较大的逻辑帧剔除,不参与直线拟合,以保证较好的直线拟合效果。由步骤s12中提供的公式可知,所述最小二乘法主要涉及累加算法。客户端每接收一次逻辑帧,就累加得到一次计算结果,该算法执行简单,耗时少,占用内存小。
步骤s13,计算直线参数a、b。
具体的,可以通过如下方程计算直线参数a、b:
Figure BDA0002221872300000185
其中,n为参与计算的历史逻辑帧的数量,a、b为通过最小二乘法计算得到的使时间差的平方和为最小值的直线参数,所述时间差的平方和为所述一个或多个第二逻辑帧分别对应的第三时刻与对应的实际生效时刻的时间差的平方和。显然,随着逻辑帧的不断累积,直线参数a、b的计算结果也会更加接近理想值,拟合得到的直线也会逐渐稳定,最终可以达到去除网络抖动带来的影响。
本发明实施例针对步骤S505提供了一种基本接口,例如:
class FrameTimeFit{
/**
*新增拟合直线数据方法
*该方法将使用最小二乘解算出直线参数
*@param frameId逻辑帧的帧号
*@param time客户端接收到逻辑帧的时间
*/
public fitLine(frameId:number,time:number):void{}
/**
*使用直线参数计算给定逻辑帧的帧号在直线上的时间
*@param frameId逻辑帧的帧号
*@returns{number}拟合时间
*/
public predict(frameId:number):number{}
}
如上所述,在本发明实施例提供的一种平滑显示的方法中,客户端可以在接收逻辑帧广播的回调函数(onFrame)中调用本发明实施例的直线拟合方法(fitLine),该直线拟合方法可以将所述第一逻辑帧的帧号和所述第一逻辑帧到达客户端的第一时刻用于最小二乘法进行直线拟合。在通过所述直线拟合方法得到拟合直线后,所述客户端可以通过调用预测方法(predict),计算得到所述第一逻辑帧到达客户端的实际生效时刻时刻,即第二时刻,并将第一时刻修改为第二时刻。
需要说明的是,本发明实施例所提供的最小二乘法可替换为其他直线拟合算法,例如梯度下降法等。可以理解的是,本发明实施例提供的一种平滑显示的方法,其核心在于通过接收到的历史逻辑帧的时间分布规律确定每个逻辑帧对应的实际生效时刻,对其由于网络抖动而产生的时间误差进行修正,使用其他直线拟合算法或者除直线拟合算法外的其他算法的方案与本方案在实质上是一样的。本发明实施例对此不做具体限定。
步骤S506,确定目标对象在第二时刻的逻辑位置。
具体的,可以根据所述操作指令对应的目标对象的移动方向、移动速度、移动加速度和服务器发送逻辑帧的固定时间间隔,基于目标对象在第一逻辑帧的相邻前一逻辑帧对应的实际生效时刻的逻辑位置,确定目标对象在第二时刻逻辑位置。其中,目标对象在第一逻辑帧的相邻前一逻辑帧对应的实际生效时刻的逻辑位置可以是根据第一逻辑帧的相邻前一逻辑帧确定的目标对象的逻辑位置。
可选的,如图5所示,客户端1、客户端2、客户端3和客户端4可以在接收到所述第一逻辑帧后,触发客户端逻辑层中的逻辑帧广播回调函数(onFrame)通过如下公式计算游戏逻辑状态:
Figure BDA0002221872300000191
其中,所述游戏逻辑状态具体可以为目标对象的逻辑位置;所述
Figure BDA0002221872300000201
为第n个逻辑帧对应的逻辑位置(例如可以为所述第一逻辑帧对应的逻辑位置);所述
Figure BDA0002221872300000202
为第n-1个逻辑帧对应的逻辑位置(例如可以为与所述第一逻辑帧的相邻前一逻辑帧对应的逻辑位置)。显然,所述第n-1个逻辑帧为每个客户端接收到的与所述第n个逻辑帧相邻的前一个逻辑帧;所述time1为所述服务器发送逻辑帧的固定时间间隔(例如为66ms,即15帧/秒的频率);所述F函数可以为具体的运动方法,例如可以为匀速直线运动、匀变速直线运动、匀速圆周运动等等,所述F函数可以包括具体的目标对象的移动方向、移动速度和移动加速度等等。可以理解的是,上述计算公式表明所述第n个逻辑帧对应的逻辑位置是基于第n-1个逻辑帧对应的逻辑位置和固定的时间间隔time1,通过相应的F函数计算得到的,即下一逻辑帧对应的逻辑位置是延续了上一逻辑帧对应的逻辑位置。例如,第一逻辑帧包括的针对目标对象的操作指令可以是简单的匀速直线运动,则该游戏逻辑状态计算公式可以简单如:S1=S0+Vt1,其中,S1可以是第一逻辑帧对应的逻辑位置,S0可以是与第一逻辑帧相邻的前一逻辑帧对应的逻辑位置,V可以包括目标对象的移动方向、移动速度等,t1可以是服务器发送逻辑帧的固定时间间隔(即服务器发送第一逻辑帧与发送前一逻辑帧的时间间隔)。可以理解的是,由上述游戏逻辑状态计算公式可知,由于前一逻辑帧对应的逻辑位置已确定,time1为固定的时间间隔,因此,网络抖动不会对游戏逻辑状态的计算结果造成影响。即根据所述第一逻辑帧确定的所述目标对象在所述第二时刻的逻辑位置与所述目标对象在所述第一时刻的逻辑位置相同,只是由于网络抖动会使得到该逻辑位置的时间延迟。
步骤S507,确定目标时刻与第二时刻之间的时间差,基于操作指令、时间差以及目标对象在第二时刻的逻辑位置,确定目标对象在目标时刻的渲染位置。
具体的,步骤S507可参考上述图4实施例中的步骤S403,此处不再赘述。
在一种可能的实施方式中,客户端1、客户端2、客户端3和客户端4可以按照一定的时间间隔定时调用客户端表现层中的表现层渲染回调函数(requestAnimationFrame)通过如下公式计算游戏表现状态:
Figure BDA0002221872300000203
time2=now-T
其中,所述游戏表现状态具体可以为目标对象在表现层的渲染位置;所述stateprest为目标时刻目标对象的渲染位置;所述
Figure BDA0002221872300000211
为第n个逻辑帧对应的逻辑位置,与上述游戏逻辑状态计算公式中的
Figure BDA0002221872300000212
含义相同;所述now为目标时刻(例如为当前时刻),所述T为根据上述步骤S505得到的所述客户端接收到的第n个逻辑帧的实际生效时刻(例如为第一逻辑帧对应的实际生效时刻,即第二时刻)。F函数与上述游戏逻辑状态计算公式中的F函数的含义一致,此处不再赘述。可以理解的是,上述游戏表现状态计算公式表明,在客户端表现层,目标时刻的渲染位置是基于第n个逻辑帧对应的逻辑位置(即游戏逻辑层在目标时刻的最新逻辑位置)和时间差time2,通过相应的F函数计算得到的,所述时间差隔time2为所述目标时刻与客户端接收到的第n个逻辑帧对应的实际生效时刻的时间差。即表现层的渲染位置是在延续逻辑层的最新逻辑位置。例如,第一逻辑帧包括的针对目标对象的操作指令可以是简单的匀速直线运动,则该游戏表现状态计算公式可以简单如:S2=S1+Vt2,其中,S1可以是第一逻辑帧对应的逻辑位置,S2可以是目标对象在目标时刻的渲染位置,V可以包括目标对象的移动方向、移动速度等,t2可以是目标时刻与第一逻辑帧对应的实际生效时刻的时间差。可以理解的是,由于游戏表现状态是通过本地客户端定时调用函数更新得到,则随着目标时刻的不断更新,所述时间差time2也会不断更新。从而,即使由于网络延时等原因,客户端迟迟没有接收到第n+1个逻辑帧,客户端也可以基于第n个逻辑帧对应的逻辑状态和不同的时间差time2计算得到多个时刻的游戏表现状态,保证客户端画面的流畅性和实时性。
例如,以客户端2为例,客户端2的网络稳定,不存在网络抖动、延时等情况,所述操作指令可以为针对目标对象的简单匀速直线运动。所述目标对象的逻辑位置和渲染位置可以通过上述游戏逻辑状态计算公式和游戏表现状态计算公式计算得到,例如为如上所述简单的匀速直线运动计算公式。如图10所示,图10是是本发明实施例提供的一种网络稳定情况下的逻辑帧的帧号与接收时间、游戏状态的关系示意图。其中,客户端2接收到1号逻辑帧、2号逻辑帧和3号逻辑帧的时间分别是第66ms、第132ms和第198ms,所述3号逻辑帧可以为第一逻辑帧。客户端2在接收到所述1号逻辑帧、2号逻辑帧和3号逻辑帧后,可以通过上述游戏逻辑状态计算公式进行计算得到对应的游戏逻辑状态,所述1号逻辑帧、2号逻辑帧和3号逻辑帧对应的游戏逻辑状态如图10中的白色圆点所示,可以分别对应逻辑位置1、逻辑位置2和逻辑位置3。其次,客户端2基于所述游戏逻辑状态和不同的时间间隔计算游戏表现状态,如图10所示,所述客户端在表现层基于所述逻辑位置1、逻辑位置2和逻辑位置3和不同的目标时刻计算得到的渲染位置可以如图10中的黑色圆点所示。如图10所示,所述渲染位置的更新时间间隔可以为22ms。
显然,如图10所示,在没有网络延时的情况下,在相邻两个逻辑帧(例如2号逻辑帧和3号逻辑帧)的时间内,目标时刻客户端的渲染位置始终基于客户端逻辑层在目标时刻最新的逻辑位置(例如2号逻辑帧对应的逻辑位置2),并根据一定的时间间隔进行更新,而无法超前于下一逻辑帧对应的逻辑位置(例如3号逻辑帧对应的逻辑位置3),游戏画面不会发生抖动。
例如,以客户端1为例,客户端1存在网络抖动的情况,则所述客户端1接收到逻辑帧的时间间隔不固定。如图11所示,图11是本发明实施例提供的一种网络抖动情况下的逻辑帧的帧号与接收时间、游戏状态的关系示意图。如图11所示,由于客户端1延迟到第264ms才接收到3号逻辑帧,所述3号数据帧可以为所述第一逻辑帧,所述第264ms可以为第一时刻。则在第132ms至第264ms之间,客户端的游戏逻辑状态没有更新,始终为2号逻辑帧对应的逻辑位置2,而游戏表现状态全部基于所述逻辑位置2和不同的目标时刻与客户端接收到2号逻辑帧的时间(例如为第132ms)的时间间隔(例如为10ms、32ms、54ms、76ms、98ms和120ms)更新。如图11所示,到第264ms,游戏表现状态已更新至状态B,而此时客户端延时接收到3号逻辑帧,由3号逻辑帧计算得到的游戏逻辑状态为逻辑位置3。例如,在客户端1没有采用本发明实施例提供的一种平滑显示的方法的情况下,即没有修正所述3号数据帧的接收时间的情况下。在目标时刻(例如为第274ms),基于3号逻辑帧对应的逻辑状态(例如为逻辑位置3)和目标时刻与客户端接收到3号逻辑帧的时间(例如为第264ms)的时间间隔(例如为10ms)计算得到的游戏表现状态为状态A。相当于根据3号逻辑帧对应的逻辑位置,在较短的时间内将目标时刻的状态B纠正回由目标时刻与3号逻辑帧的接收时刻的时间差确定的游戏状态A。从而,如图11所示,在玩家1视觉中,造成的结果就是游戏画面突然从B切换至A,形成游戏画面的抖动,影响玩家的游戏体验。并且,如图10所示,在第264ms之后的一段时间内,根据3号逻辑帧对应的逻辑位置3和目标时刻与第264ms的时间间隔更新得到的逻辑位置将退回至第264ms前的逻辑位置,影响游戏的实时性。
例如,在客户端1采用了本发明实施例提供的一种平滑显示的方法的情况下,即将所述3号逻辑帧的实际接收时刻,即第一时刻,修正为所述3号逻辑帧的实际生效时刻的情况下,如图12所示,图12为本发明实施例提供的另一种网络抖动情况下的逻辑帧的帧号与接收时间、游戏状态的关系示意图。如图12所示,通过上述步骤S505所述的方法,将接收到所述3号逻辑帧的第一时刻(例如为第264ms)通过直线拟合的方法修正为3号逻辑帧对应的实际生效时刻,即第二时刻(例如为图12中所示的灰色圆点对应的第198ms)。在目标时刻(例如为第274ms),基于3号逻辑帧对应的逻辑状态(例如图12灰色圆点所示的第二时刻的逻辑位置)和目标时刻与3号逻辑帧对应的实际生效时刻的时间间隔(例如为76ms)更新得到的游戏表现状态为状态C。相当于根据3号逻辑帧对应的逻辑位置,在较长的时间内将目标时刻的状态B纠正为由当前时刻与3号逻辑帧对应的实际生效时刻的时间差确定的游戏状态C。如图12所示,例如在理想的匀速直线运动方式中,状态C和状态B在同一直线上,状态C延续了状态B的状态,画面流畅。从而实现在保证游戏实时性和画面流畅性的同时,改善了因网络抖动带来的画面抖动。
可选的,每个客户端都可以有选择性的采用本发明实施例提供的一种平滑显示方案,例如玩家可以通过帧同步游戏的相关设置选项中选择开启“平滑帧”功能。若玩家在其客户端网络状况稳定的情况下,不想再产生多余的计算,则可选择关闭“平滑帧”功能,玩家可以根据自己的实际需求采用本发明实施例,本发明实施例对此不作具体限定,
步骤S508,根据目标对象在目标时刻的渲染位置,生成目标场景在目标时刻的渲染帧。
具体的,步骤S508可参考上述图4实施例中的步骤S404,此处不再赘述。
可选的,如上所述,可以根据一定的时间间隔,例如渲染帧的帧间隔,基于目标对象在目标时刻的逻辑位置不断更新目标对象的渲染位置,得到流畅的渲染画面。需要说明的是,每个客户端中计算得到的游戏状态是相同的,但是每个客户端可以根据实际情况,渲染得到相应的不同游戏画面。例如,在一种多人互动的网络游戏场景中,己方客户端的游戏画面需要显示己方游戏角色在游戏画面中的具体移动画面和游戏场景切换等等,而在其他客户端画面中可以只显示己方游戏角色在地图中的位置,例如通过缩略地图中的一个坐标小圆点来显示,等等。
例如,以客户端1为例,所述客户端1存在网络抖动的情况。请参见图13,图13是本发明实施例提供的一种网络抖动情况下的游戏画面渲染示意图。图13可以对应于如上述图11所示的实施例中的渲染位置的渲染画面。其中的角色1可以根据客户端1发送的操作指令1(如匀速直线移动指令)在游戏画面中进行移动。如图13中的g所示,所述g可以为根据上述图11所示的198ms后的第一个黑色圆点对应的渲染位置,在表现层渲染得到的第7帧游戏画面,在所述第7帧游戏画面中,角色1位于画面偏中部。随着时间的流逝,表现层按照一定的时间间隔在目标时刻对应的逻辑位置基础上,不断更新渲染位置从而更新得到一帧帧的游戏画面,如图13中的i所示,在表现层渲染得到的第9帧游戏画面中,角色1位于画面右侧。然而,此时,客户端1延时接收到3号逻辑帧,在不采用本发明实施例提供的一种平滑显示的方法的情况下,所述客户端1根据3号逻辑帧对应的逻辑位置和目标时刻与接收到3号逻辑帧的时刻的时间间隔(例如为10ms)更新得到的第10帧游戏画面如图13中的j所示。此时,在玩家1视觉中的效果就是角色1从突然从画面右侧切换至画面偏中部,形成游戏画面抖动,影响玩家的游戏体验,并造成在多人互动游戏场景中游戏客户端状态不同步的问题。
例如,以客户端1为例,所述客户端1存在网络抖动的情况。请参见图14,图14是本发明实施例提供的另一种在网络抖动情况下的游戏画面渲染示意图。图14可以对应于如上述图12所示的实施例中的渲染位置的渲染画面。如图14所示,其中的角色1可以根据客户端1发送的操作指令1(如匀速直线移动指令)在游戏画面中进行移动。虽然客户端1仍延时接收到3号逻辑帧,但通过采用本发明实施例提供的一种平滑显示的方法,将所述3号逻辑帧的接收时间(第264ms)修正为所述3号逻辑帧的实际生效时刻(第198ms),所述客户端1根据3号逻辑帧对应的逻辑位置和目标时刻与所述3号逻辑帧对应的实际生效时刻的时间间隔更新得到的第10帧游戏画面如图14中的k所示。此时,在玩家1视觉中的效果就是角色1从画面右侧进一步向右移动,游戏画面流畅。如图14所示,客户端1可以按照一定的时间间隔在目标时刻对应的逻辑位置基础上,在表现层中按一定时间间隔更新目标对象的渲染位置,从而通过游戏引擎渲染得到连续流畅的游戏画面。
结合上述图4和图5对应的实施例,在一种可能的实施方式中,请参见图15,图15是本发明实施例提供的一种帧同步客户端画面平滑显示的方法的处理流程示意图。如图15所示,当帧同步游戏开始时,客户端后台就开始向该帧同步游戏内的所有客户端以广播的方式发送逻辑帧,该逻辑帧包括针对目标对象的操作指令,当客户端接收到该逻辑帧后,就触发客户端逻辑层的回调函数onFrame,该回调函数onFrame中添加了直线拟合方法fitLine,通过执行该直线拟合方法计算得到历史逻辑帧的帧号和对应的实际生效时刻的线性方程,在fitLine执行完之后,调用predict方法,根据该逻辑帧的帧号和该线性方程计算该逻辑帧对应的实际生效时刻(即得到一个时间T)。最后通过回调函数onFrame计算该逻辑帧在对应的实际生效时刻的逻辑位置,完成客户端逻辑层的逻辑状态更新。如图15所示,在理想情况下(如没有网络抖动的情况下),逻辑层的逻辑状态可以依据客户端后台按照固定时间间隔发送的逻辑帧,定时调用函数完成更新。其次,可选的,在客户端逻辑层完成逻辑状态更新后可以对游戏状态进行判断,若玩家选择结束游戏则结束整个流程,若否,则可以继续在客户端表现层通过回调函数requestAnimationFrame根据目标时刻对应的逻辑状态(例如为该逻辑帧在对应的实际生效时刻的逻辑位置)和目标时刻与该逻辑帧对应的实际生效时刻的时间差计算得到目标时刻的表现状态(例如为目标对象在目标时刻的渲染位置),最终通过引擎渲染该表现状态得到游戏画面。如图15所示,可以通过客户端定时调用表现层的回调函数完成表现状态的持续更新,以实现游戏画面的持续更新,使得画面流畅、不抖动。
请参见图16,图16是本发明实施例提供的一种基于终端的平滑显示的方法流程示意图。其中的终端可以为上述图1系统架构中的终端设备200a、200b、200c和200d中的任意一个,可用于支持并执行图16中所示的流程。下面将结合图16从终端侧进行描述,该终端包括:处理器、存储器和显示屏;所述存储器、所述显示屏与所述处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述处理器调用所述计算机指令以使得所述终端执行以下步骤S1601-S1607:
步骤S1601,在显示屏上显示当前时刻下的第一界面。
具体的,在一局游戏中,所述终端在显示屏上显示当前时刻下的第一界面,第一界面包括目标对象。所述第一界面可以为当前时刻下的游戏场景,包含有游戏角色。例如,请参见图17A,图17A为本发明实施例提供的一种第一界面示意图,如图17A所示,当前时刻下,所述游戏角色位于游戏场景的左侧。
可选的,如图17A所示,所述第一界面还包括操作控件1701(例如为如图17A所示的针对游戏角色的移动操作控件),玩家可以通过操作控件1701输入针对目标对象的操作指令,终端响应于所述操作控件检测到的所述操作指令(例如为点击或者长按操作控件1701中的向右移动箭头,该操作指令可以对应目标对象的移动方向、移动速度和移动加速度等,例如以5米/秒的预设标准速度向右匀速直线移动,又例如在长按操作控件1701中的向右移动箭头3秒后,目标对象将会加速向右移动,直到速度达到系统预设的阈值),向所述服务器发送所述操作指令。可选的,所述向所述服务器发送所述操作指令客参考上述图5实施例中的步骤S502,此处不再赘述。其次,所述服务器可以根据所述操作指令生成第一逻辑帧,并按照固定的时间间隔(例如为66ms,即15帧/秒的频率)以广播的形式发送至该游戏场景内的所有终端。除此之外,如图17A所示,所述第一界面还可以包括设置控件、好友控件和结束游戏控件等等,本发明实施例对此不作具体赘述。
步骤S1602,在第一时刻接收到服务器发送的第一逻辑帧。
具体的,步骤S1602可以参考上述图4实施例中的步骤S401,可选的,步骤S1602还可以参考上述图5实施例中的步骤S503,此处不再赘述。
步骤S1603,根据历史逻辑帧对应的时间规律,确定第一逻辑帧对应的实际生效时刻为第二时刻。
具体的,步骤S1603可以参考上述图4实施例中的步骤S402,可选的,步骤S1603还可以参考上述图5实施例中的步骤S505,此处不再赘述。
步骤S1604,确定目标时刻与所述第二时刻之间的时间差,基于操作指令、时间差以及目标对象在第二时刻的逻辑位置,确定目标对象在目标时刻的渲染位置。
具体的,步骤S1604可以参考上述图4实施例中的步骤S403,可选的,步骤S1604还可以参考上述图5实施例中的步骤S507,此处不再赘述。
步骤S1605,根据目标对象在目标时刻的渲染位置,生成目标场景在目标时刻的渲染帧。
具体的,步骤S1605可以参考上述图4实施例中的步骤S404,可选的,步骤S1605还可以参考上述图5实施例中的步骤S508,此处不再赘述。
步骤S1606,在所述显示屏上显示目标时刻下的第二界面。
具体的,在所述显示屏上显示所述目标时刻下的第二界面,所述第二界面为根据所述目标场景在所述目标时刻的渲染帧执行画面渲染操作后得到的界面。
可选的,可以通过游戏引擎执行游戏画面的渲染操作,得到相应的游戏画面,所述第二界面可以为目标时刻下的游戏场景,可以包含有一个或多个游戏角色。例如,请参见图17B,图17B为本发明实施例提供的一种第二界面示意图。该第二界面可以为如图17B所示的游戏场景,该第二界面还可以包括如图17B所示的操作控件1701。如图17B所示,目标时刻下,所述游戏角色位于游戏场景的中部偏左,显然,在玩家针对目标对象进行相关游戏操作后(如点击或者长按操作控件1701中的向右移动箭头),该终端会根据所述操作在显示屏显示相应的游戏场景。
步骤S1607,在显示屏上显示目标时刻相邻的下一时刻下的第三界面。
具体的,根据所述渲染帧的帧间隔,在所述显示屏上显示所述目标时刻的相邻下一时刻下的第三界面,所述第三界面为根据所述目标场景在所述相邻下一时刻的渲染帧执行所述画面渲染操作后得到的界面。例如,请参见图17C,图17C为本发明实施例提供的一种第三界面示意图。该第三界面可以为如图17C所示的下一时刻的游戏场景,还可以包括操作控件1701,如图17C所示,下一时刻的游戏角色位于游戏场景中部。显然,在玩家针对目标对象进行相关游戏操作后(如点击或者长按操作控件1701中的向右移动箭头),该终端会根据所述操作和所述渲染帧的帧间隔(例如为22ms,即45帧/秒的频率)在显示屏更新界面,从而显示连续流畅的游戏画面,例如,如图17A-17C所示,在玩家的视觉中可以看到游戏角色在场景中流畅的向右移动。
需要说明的是,本发明实施例提供的一种平滑显示的方法,不仅可以应用于帧同步游戏客户端,也可以应用于其他帧同步应用客户端。例如,如图18所示,图18是本发明实施例提供的一种帧同步应用客户端界面示意图。如图18所示,用户1和用户2可以通过改变终端设备(例如为智能手机、平板和可穿戴设备等)的方向与移动速度等向服务器发送操作指令,例如可以通过终端设备内置的陀螺仪模块和导航定位模块等感知用户的移动方向与移动速度等,并向服务器发送操作指令。所述应用客户端在接收到服务器发送的包含所述操作指令的逻辑帧后,采用本发明实施例提供的一种平滑显示的方法计算用户1和用户2的逻辑位置,不断更新得到用户1和用户2的渲染位置,并最终显示画面给用户1和用户2。即使在网络抖动的情况下,用户1和用户2都能得到实时且画面运行流畅的运动轨迹以及当前位置。
本发明实施例提供了一种平滑显示的方法,可以通过客户端接收到的历史逻辑帧的时间分布规律,将第一逻辑帧的接收时刻(即第一时刻)修正为第一逻辑帧对应的实际生效时刻(即第二时刻);然后根据目标对象在实际生效时刻的逻辑位置、目标时刻与实际生效时刻的时间差、以及第一逻辑帧中针对目标对象的操作指令(例如移动方向、移动速度、移动加速度)计算得到目标对象在目标时刻的渲染位置。在本发明实施例中客户端在由网络延时导致的第一逻辑帧未按时到达的情况下,依然根据第一逻辑帧的上一逻辑位置和渲染帧的帧间隔持续更新目标对象的渲染位置,使得客户端画面持续流畅显示;并且,与现有技术中的客户端画面流畅显示的技术相比,本发明实施例是根据历史逻辑帧的时间分布规律将第一逻辑帧的接收时刻修正为第一逻辑帧对应的实际生效时刻,从而改变了计算目标时刻的渲染帧所基于的逻辑位置对应的时刻,进而改变了计算渲染帧对应的时长(现有技术是目标时刻与接收时刻的时间差,本发明实施例是目标时刻与实际生效时刻的时间差),因此,在目标时刻进行渲染帧的更新时,对于相同时延造成的画面纠正,在较长一段时间纠正比在较短时间纠正,显然更加平滑、流畅,有效的改善由于网络抖动等原因造成的客户端画面抖动情况;并且,由于本发明实施例将第一逻辑帧的接收时刻进行了纠正,使得该逻辑帧对应的逻辑位置在其原本应该对应的实际生效时刻,因此可以有效的稳定帧率,减小逻辑帧与渲染帧之间的误差,提高用户的使用体验。
除此之外,本实施例提供的方案通用性好,本方案的主要目的是通过直线拟合的方法计算出每个操作指令实际生效的时刻,不涉及任何逻辑变动,与现有技术方案不冲突。在实际使用中可以结合具体场景联合使用多种优化方案,达到更好的使用体验。
基于上述一种平滑显示的方法实施例的描述,本发明实施例还公开了一种平滑显示的装置,所述平滑显示的装置可以是运行于终端中的一个计算机程序(包括程序代码)。请参见图19,图19是本发明实施例提供的一种平滑显示的装置的结构示意图,如图19所示,该平滑显示的装置包括装置1,该装置1可以执行图4或图5所示的方法,所述平滑显示的装置可以包括:接收模块11、第二时刻确定模块12、渲染位置确定模块16和渲染帧生成模块17:
接收模块11,用于在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对目标对象的操作指令;
第二时刻确定模块12,用于根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧;
渲染位置确定模块16,用于确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置。
渲染帧生成模块17,用于根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景包括所述目标对象。
其中,接收模块11、第二时刻确定模块12、渲染位置确定模块16和渲染帧生成模块17的具体功能实现方式可以参见上述图4所对应实施例中的步骤S401-步骤S404,接收模块11的具体实现方式还可以参见上述图5所对应实施例中的步骤S503,第二时刻确定模块12的具体实现方式还可以参见上述图5所对应实施例中的步骤S505和步骤s11-s13,渲染位置确定模块16的具体实现方式还可以参见上述图5所对应实施例中的步骤S507和步骤S508,渲染帧生成模块17的具体功能实现方式还可以参见上述图5所对应实施例中的步骤S508,这里不再进行赘述。
请一并参见图19,第二时刻确定模块可以包括:逻辑帧确定单元121、分布规律确定单元122和第二时刻确定单元123:
逻辑帧确定单元121,用于确定在所述第一时刻之前接收到的一个或多个第二逻辑帧分别对应的第三时刻,以及确定所述一个或多个第二逻辑帧的帧号;
分布规律确定单元122,用于根据所述一个或多个第二逻辑帧分别对应的帧号和第三时刻,确定所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律;
第二时刻确定单元123,用于根据所述分布规律和所述第一逻辑帧的帧号确定所述第一逻辑帧对应的实际生效时刻为第二时刻。
其中,逻辑帧确定单元121、分布规律确定单元122和第二时刻确定单元123的具体功能实现方式可以参见上述图4所对应实施例中的步骤S402,还可以参见上述图5所对应实施例中的步骤S505,分布规律确定单元122的具体功能实现方式可以参见上述图5所对应实施例中的步骤是s11-s13,这里不再进行赘述。
请一并参见图19,所述装置还可以包括:确定模块13:
确定模块13,用于根据所述操作指令和预设算法,确定所述操作指令对应的所述目标对象的移动方向、移动速度和移动加速度;
所述渲染位置确定模块16,具体用于确定目标时刻与所述第二时刻之间的时间差,基于所述目标对象的移动方向、移动速度、移动加速度、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置。
其中,确定模块13的具体功能实现方式可以参见上述图5所对应实施例中的步骤S504,这里不再进行赘述。
请一并参见图18,所述装置还可以包括:第一逻辑位置确定模块14、第二逻辑位置确定模块15:
第一逻辑位置确定模块14,用于确定所述目标对象在所述第一逻辑帧的相邻前一逻辑帧对应的实际生效时刻的逻辑位置;
第二逻辑位置确定模块15,用于根据所述目标对象的移动方向、移动速度、移动加速度和所述服务器发送所述第一逻辑帧与发送所述前一逻辑帧的时间间隔,基于所述目标对象在所述第一逻辑帧的相邻前一逻辑帧对应的实际生效时刻的逻辑位置,确定所述目标对象在所述第二时刻的逻辑位置。
其中,第一逻辑位置确定模块14、第二逻辑位置确定模块15的具体功能实现方式可以参见上述图4所对应实施例中的步骤S506,这里不再进行赘述。
请一并参见图19,所述装置还可以包括:渲染更新模块18:
渲染更新模18,用于在接收到与所述第一逻辑帧相邻的下一逻辑帧之前,根据所述目标对象在所述第二时刻的逻辑位置和所述渲染帧的帧间隔更新所述目标对象的渲染位置。
其中,渲染更新模18的具体功能实现方式可以参见上述图5所对应实施例中的步骤S508,这里不再进行赘述。
根据本发明提供的实施例,图19所示的一种平滑显示的装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于平滑显示的装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本发明提供的实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图4或图5中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图19中所示的平滑显示的装置,以及来实现本发明实施例的平滑显示的方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
基于上述方法实施例以及装置实施例的描述,本发明实施例还提供一种终端设备。请参见图20,图20是本发明实施例提供的一种终端设备的结构示意图。如图20所示,该终端至少包括处理器201、存储器202和显示屏203。其中,终端内处理器201、存储器202与显示屏203耦合,可通过总线或其他方式连接。
计算机存储介质可以存储在终端的存储器203中,所述计算机存储介质用于存储计算机程序,所述计算机程序包括程序指令,所述处理器201用于执行所述计算机存储介质存储的程序指令。处理器201(或称CPU(Central Processing Unit,中央处理器))是终端的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能;在一个实施例中,本发明实施例所述的处理器201可以用于进行一系列的平滑显示处理,包括:在所述显示屏上显示当前时刻下的第一界面,所述第一界面包括目标对象;在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对所述目标对象的操作指令;根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧;确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置;根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景包括所述目标对象。在所述显示屏上显示所述目标时刻下的第二界面,所述第二界面为根据所述目标场景在所述目标时刻的渲染帧执行画面渲染操作后得到的界面,等等。
本发明实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是终端中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端中的内置存储介质,当然也可以包括终端所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器201加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,可由处理器201加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关平滑显示实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器201加载并具体执行:
在所述显示屏上显示当前时刻下的第一界面,所述第一界面包括目标对象;
在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对目标对象的操作指令;
根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧;
确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置;
根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景包括所述目标对象;
在所述显示屏上显示所述目标时刻下的第二界面,所述第二界面为根据所述目标场景在所述目标时刻的渲染帧执行画面渲染操作后得到的界面。
在一种实施方式中,所述第一界面还包括操作控件;所述一条或多条指令还可由处理器201加载并具体执行:
响应于所述操作控件检测到的所述操作指令,向所述服务器发送所述操作指令,所述操作指令对应所述目标对象的移动方向、移动速度和移动加速度。
再一种实施方式中,所述一条或多条指令还可由处理器201加载并具体执行:
根据所述操作指令和预设算法,确定所述操作指令对应的所述目标对象的移动方向、移动速度和移动加速度;
所述确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置,包括:
确定目标时刻与所述第二时刻之间的时间差,基于所述目标对象的移动方向、移动速度、移动加速度、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置。
再一种实施方式中,所述一条或多条指令还可由处理器201加载并具体执行:
确定所述目标对象在所述第一逻辑帧的相邻前一逻辑帧对应的实际生效时刻的逻辑位置;
根据所述目标对象的移动方向、移动速度、移动加速度和所述服务器发送所述第一逻辑帧与发送所述前一逻辑帧的时间间隔,基于所述目标对象在所述前一逻辑帧对应的实际生效时刻的逻辑位置,确定所述目标对象在所述第二时刻的逻辑位置。
再一种实施方式中,在所述根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述一条或多条指令还可由处理器201加载并具体执行:
确定在所述第一时刻之前接收到的一个或多个第二逻辑帧分别对应的第三时刻,以及确定所述一个或多个第二逻辑帧的帧号;
根据所述一个或多个第二逻辑帧分别对应的帧号和第三时刻,确定所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律;
根据所述分布规律和所述第一逻辑帧的帧号确定所述第一逻辑帧对应的实际生效时刻为第二时刻。
再一种实施方式中,所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律满足如下线性方程:
y=ax+b
其中,y为所述一个或多个第二逻辑帧中的任意一个第二逻辑帧对应的实际生效时刻,x为所述任意一个第二逻辑帧的帧号,a、b为通过直线拟合算法计算得到的直线参数。
再一种实施方式中,所述a、b为通过最小二乘法计算得到的使时间差的平方和为最小值的直线参数,所述时间差的平方和为所述一个或多个第二逻辑帧分别对应的第三时刻与对应的实际生效时刻的时间差的平方和。
再一种实施方式中,所述目标对象在所述目标时刻对应的逻辑位置为所述目标对象在所述第二时刻的逻辑位置。
再一种实施方式中,所述一条或多条指令还可由处理器201加载并具体执行:
在接收到与所述第一逻辑帧相邻的下一逻辑帧之前,根据所述目标对象在所述第二时刻的逻辑位置和所述渲染帧的帧间隔更新所述目标对象的渲染位置。
再一种实施方式中,所述一条或多条指令还可由处理器201加载并具体执行:
根据所述渲染帧的帧间隔,在所述显示屏上显示所述目标时刻的相邻下一时刻下的第三界面,所述第三界面为根据所述目标场景在所述相邻下一时刻的渲染帧执行所述画面渲染操作后得到的界面。
本发明实施例提供了一种平滑显示的方法,可以通过客户端接收到的历史逻辑帧的时间分布规律,将第一逻辑帧的接收时刻(即第一时刻)修正为第一逻辑帧对应的实际生效时刻(即第二时刻);然后根据目标对象在实际生效时刻的逻辑位置、目标时刻与实际生效时刻的时间差、以及第一逻辑帧中针对目标对象的操作指令(例如移动方向、移动速度、移动加速度)计算得到目标对象在目标时刻的渲染位置。在本发明实施例中客户端在由网络延时导致的第一逻辑帧未按时到达的情况下,依然根据第一逻辑帧的上一逻辑位置和渲染帧的帧间隔持续更新目标对象的渲染位置,使得客户端画面持续流畅显示;并且,与现有技术中的客户端画面流畅显示的技术相比,本发明实施例是根据历史逻辑帧的时间分布规律将第一逻辑帧的接收时刻修正为第一逻辑帧对应的实际生效时刻,从而改变了计算目标时刻的渲染帧所基于的逻辑位置对应的时刻,进而改变了计算渲染帧对应的时长(现有技术是目标时刻与接收时刻的时间差,本发明实施例是目标时刻与实际生效时刻的时间差),因此,在目标时刻进行渲染帧的更新时,对于相同时延造成的画面纠正,在较长一段时间纠正比在较短时间纠正,显然更加平滑、流畅,有效的改善由于网络抖动等原因造成的客户端画面抖动情况;并且,由于本发明实施例将第一逻辑帧的接收时刻进行了纠正,使得该逻辑帧对应的逻辑位置在其原本应该对应的实际生效时刻,因此可以有效的稳定帧率,减小逻辑帧与渲染帧之间的误差,提高用户的使用体验。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (14)

1.一种平滑显示的方法,其特征在于,包括:
在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对目标对象的操作指令;
根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧,所述第二时刻在所述第一时刻之前;
确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置,所述目标时刻为所述第一时刻之后的任一时刻;
根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景包括所述目标对象。
2.根据权利要求1所述的方法,其特征在于,所述目标对象包括目标游戏虚拟对象,所述目标场景包括目标游戏场景。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述操作指令和预设算法,确定所述操作指令对应的所述目标对象的移动方向、移动速度和移动加速度;
所述确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置,包括:
确定目标时刻与所述第二时刻之间的时间差,基于所述目标对象的移动方向、移动速度、移动加速度、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
确定所述目标对象在所述第一逻辑帧的相邻前一逻辑帧对应的实际生效时刻的逻辑位置;
根据所述目标对象的移动方向、移动速度、移动加速度和所述服务器发送所述第一逻辑帧与发送所述前一逻辑帧的时间间隔,基于所述目标对象在所述前一逻辑帧对应的实际生效时刻的逻辑位置,确定所述目标对象在所述第二时刻的逻辑位置。
5.根据权利要求1所述的方法,其特征在于,所述根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,包括:
确定在所述第一时刻之前接收到的一个或多个第二逻辑帧分别对应的第三时刻,以及确定所述一个或多个第二逻辑帧的帧号;
根据所述一个或多个第二逻辑帧分别对应的帧号和第三时刻,确定所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律;
根据所述分布规律和所述第一逻辑帧的帧号确定所述第一逻辑帧对应的实际生效时刻为第二时刻。
6.根据权利要求5所述的方法,其特征在于,所述一个或多个第二逻辑帧的帧号和对应的实际生效时刻的分布规律满足如下线性方程:
y=ax+b
其中,y为所述一个或多个第二逻辑帧中的任意一个第二逻辑帧对应的实际生效时刻,x为所述任意一个第二逻辑帧的帧号,a、b为通过直线拟合算法计算得到的直线参数。
7.根据权利要求6所述的方法,其特征在于,所述a、b为通过最小二乘法计算得到的使时间差的平方和为最小值的直线参数,所述时间差的平方和为所述一个或多个第二逻辑帧分别对应的第三时刻与对应的实际生效时刻的时间差的平方和。
8.根据权利要求1所述的方法,其特征在于,所述目标对象在所述目标时刻对应的逻辑位置为所述目标对象在所述第二时刻的逻辑位置。
9.根据权利要求1~8任意一项所述的方法,其特征在于,所述方法还包括:
在接收到与所述第一逻辑帧相邻的下一逻辑帧之前,根据所述目标对象在所述第二时刻的逻辑位置和所述渲染帧的帧间隔更新所述目标对象的渲染位置。
10.一种终端,包括:处理器、存储器和显示屏;
所述存储器、所述显示屏与所述处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述处理器调用所述计算机指令以使得所述终端执行:
在所述显示屏上显示当前时刻下的第一界面,所述第一界面包括目标对象;
在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对所述目标对象的操作指令;
根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧,所述第二时刻在所述第一时刻之前;
确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置,所述目标时刻为所述第一时刻之后的任一时刻;
根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景包括所述目标对象;
在所述显示屏上显示所述目标时刻下的第二界面,所述第二界面为根据所述目标场景在所述目标时刻的渲染帧执行画面渲染操作后得到的界面。
11.根据权利要求10所述的终端,其特征在于,所述第一界面还包括操作控件;所述处理器,还用于调用所述计算机指令以使得所述终端执行:
响应于所述操作控件检测到的所述操作指令,向所述服务器发送所述操作指令,所述操作指令对应所述目标对象的移动方向、移动速度和移动加速度。
12.根据权利要求10所述的终端,其特征在于,所述处理器,还用于调用所述计算机指令以使得所述终端执行:
根据所述渲染帧的帧间隔,在所述显示屏上显示所述目标时刻的相邻下一时刻下的第三界面,所述第三界面为根据所述目标场景在所述相邻下一时刻的渲染帧执行所述画面渲染操作后得到的界面。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1~9任一项所述的方法。
14.一种平滑显示的装置,其特征在于,所述平滑显示的装置包括:
接收模块,用于在第一时刻接收到服务器发送的第一逻辑帧,所述第一逻辑帧包括针对目标对象的操作指令;
第二时刻确定模块,根据历史逻辑帧对应的时间规律,确定所述第一逻辑帧对应的实际生效时刻为第二时刻,所述历史逻辑帧包括在所述第一逻辑帧之前接收到的逻辑帧,所述第二时刻在所述第一时刻之前;
渲染位置确定模块,用于确定目标时刻与所述第二时刻之间的时间差,基于所述操作指令、所述时间差以及所述目标对象在所述第二时刻的逻辑位置,确定所述目标对象在所述目标时刻的渲染位置,所述目标时刻为所述第一时刻之后的任一时刻;
渲染帧生成模块,用于根据所述目标对象在所述目标时刻的渲染位置,生成目标场景在所述目标时刻的渲染帧,所述目标场景包括所述目标对象。
CN201910938008.5A 2019-09-29 2019-09-29 一种平滑显示的方法、终端和计算机存储介质 Active CN111167116B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910938008.5A CN111167116B (zh) 2019-09-29 2019-09-29 一种平滑显示的方法、终端和计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910938008.5A CN111167116B (zh) 2019-09-29 2019-09-29 一种平滑显示的方法、终端和计算机存储介质

Publications (2)

Publication Number Publication Date
CN111167116A CN111167116A (zh) 2020-05-19
CN111167116B true CN111167116B (zh) 2022-01-18

Family

ID=70646176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910938008.5A Active CN111167116B (zh) 2019-09-29 2019-09-29 一种平滑显示的方法、终端和计算机存储介质

Country Status (1)

Country Link
CN (1) CN111167116B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111632382B (zh) * 2020-05-25 2021-06-25 腾讯科技(深圳)有限公司 游戏数据同步方法、装置、计算机及可读存储介质
CN111682988B (zh) * 2020-06-18 2022-10-04 重庆京像微电子有限公司 远程控制方法、装置、存储介质和处理器
CN111744177B (zh) * 2020-07-28 2021-06-25 腾讯科技(深圳)有限公司 游戏数据处理方法和装置、存储介质和电子设备
CN112402947B (zh) * 2020-11-20 2022-08-26 上海莉莉丝网络科技有限公司 游戏对象控制系统、方法及计算机可读存储介质
CN112675531A (zh) * 2021-01-05 2021-04-20 深圳市欢太科技有限公司 数据同步方法、装置、计算机存储介质及电子设备
CN112999652A (zh) * 2021-04-28 2021-06-22 苏州仙峰网络科技股份有限公司 一种高效网络同步方法、装置及系统
CN113746931B (zh) * 2021-09-10 2022-11-22 联想(北京)有限公司 数据同步方法及装置
CN113867734A (zh) * 2021-10-20 2021-12-31 北京思明启创科技有限公司 代码块解释执行方法、装置、电子设备及存储介质
TWI812497B (zh) * 2022-10-05 2023-08-11 宏達國際電子股份有限公司 微動作感測裝置以及其感測方法
CN115550713B (zh) * 2022-11-29 2023-04-28 杭州星犀科技有限公司 音视频直播渲染方法、装置、设备及介质
CN115797513B (zh) * 2023-02-01 2023-05-09 腾讯科技(深圳)有限公司 一种动画处理方法、装置、设备、存储介质及程序产品
CN117319935A (zh) * 2023-11-28 2023-12-29 深圳市碧源达科技有限公司 基于蓝牙定位的数据交互方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9589312B2 (en) * 2014-12-19 2017-03-07 Intel Corporation Exploiting frame-to-frame coherence for optimizing color buffer clear performance in graphics processing units
CN107370714A (zh) * 2016-05-13 2017-11-21 吉林纪元时空动漫游戏科技集团股份有限公司 面向云渲染的高效通讯方法
GB2564075B (en) * 2017-03-23 2020-04-01 Pridefield Ltd Multi-Threaded rendering system
CN108022286B (zh) * 2017-11-30 2019-08-13 腾讯科技(深圳)有限公司 画面渲染方法、装置及存储介质
CN108289246B (zh) * 2017-11-30 2020-09-29 腾讯科技(成都)有限公司 数据处理方法、装置、存储介质和电子装置
CN108379832B (zh) * 2018-01-29 2021-03-30 珠海金山网络游戏科技有限公司 一种游戏同步方法和装置

Also Published As

Publication number Publication date
CN111167116A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
CN111167116B (zh) 一种平滑显示的方法、终端和计算机存储介质
EP3713653B1 (en) Temporary game control by user simulation following loss of active control
CN107124416B (zh) 多化身位置同步系统、方法、装置及电子设备和存储介质
CN108379832B (zh) 一种游戏同步方法和装置
EP3760287A1 (en) Method and device for generating video frames
KR20200090256A (ko) 게임 시스템들에서 디스플레이 랙의 검출 및 보상
US20180199041A1 (en) Altering streaming video encoding based on user attention
US11110349B2 (en) Dynamic client buffering and usage of received video frames for cloud gaming
US10075525B2 (en) Output data providing server and output data providing method
CN111265863B (zh) 一种目标对象的位置纠正方法、装置、设备及介质
CN109568948B (zh) 网络游戏中对象的运动状态同步方法及装置
JP2018196578A (ja) 情報処理システム、情報処理装置、情報処理プログラム、および、ゲーム処理方法
US10471347B2 (en) Information processing system, information processing apparatus, storage medium storing information processing program, and information processing method
US11167211B2 (en) Spectating simulation
JP2018196577A (ja) 情報処理システム、情報処理装置、情報処理プログラム、および、情報処理方法
JP2018042679A (ja) ビデオゲーム処理プログラム、及びビデオゲーム処理システム
CN115761092A (zh) 画面绘制方法及装置
CN114522416A (zh) 一种虚拟角色的移动控制方法和装置
JP2019111438A (ja) ビデオゲーム処理プログラム、及びビデオゲーム処理システム
CN116983618A (zh) 一种位置同步方法及装置
JP2018033706A (ja) プログラム、及びシステム

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
GR01 Patent grant
GR01 Patent grant