首页 > 运动玩具 专利正文
延迟消除的制作方法

时间:2022-02-02 阅读: 作者:专利查询

延迟消除的制作方法
延迟消除


背景技术:

1.延迟(latency)是困扰交互式计算的常见问题。随着全球越来越多的人和设备连接起来,从提供输入到接收到所得响应之间的时间间隔可能会很长。因此,延迟可能会产生不合需的异步影响,用户可能会将异步影响视为对用户输入的延时(delay)响应。
附图说明
2.附图解说了本概念的实现。所例示的实现的特征可通过参考以下结合附图的描述来更容易地理解。所例示的实现的特征可通过参考以下结合附图的描述来更容易地理解。在一些情况下,在附图标记之后使用括号来区分相似元素。使用不带相关联的括号的附图标记对元素是通用的。这些附图不一定是按比例绘制。在附图中,附图标记中最左边的数字标识该附图标记首次出现的附图。在说明书和附图的不同实例中使用类似的附图标记可指示类似或相同的项目。
3.图1示出了与本概念一致的第一人称射击视频游戏中的示例游戏状态。
4.图2示出了与本概念一致的平台(platformer)动作视频游戏中的示例游戏状态。
5.图3示出了与本概念一致的用于处理用户输入的示例方案。
6.图4示出了与本概念一致的示例延迟场景。
7.图5和图6示出了与本概念一致的解说延迟消除方法的流程图。
8.图7示出了与本概念一致的延迟消除系统的示例配置。
具体实施方式
9.本概念一般涉及降低源自延迟的延时响应影响(通常称为滞后(lag))。延迟可能是由低速网络连接、远距网络连接、处理能力慢和/或处理资源过载而引起的。这些类型的延迟中的任一者都可能导致提供输入的用户感知到远程计算机的延时异步响应,而不是用户期望的几乎立即的响应。例如,在用户通过网络(例如,因特网)与远程计算机分离的情况下,可能存在从用户提供输入(例如,命令或信号)的时间到远程计算机接收到该输入的时间的延时。此外,可能存在从远程计算机传送其对用户输入的响应到用户接收到该响应的时间的附加延时。这一往返延时可能随着延迟的增加而变成是用户可明显注意到的。
10.例如,在通过网络玩的传统视频游戏中,用户的游戏体验可能受到延迟的显著影响。换言之,如果远程执行的视频游戏对用户输入作出响应所花费的时间太长,则用户可能会有不良的体验。许多视频游戏的目标是要求用户在短时间窗口内快速提供特定输入,从而测试用户快速反应的能力。不幸的是,如果延迟太高,则由于延迟而导致的将必要输入从用户传递到视频游戏的延时可能使得从视频游戏的角度来看用户难以或甚至不可能及时成功地提供必要的输入。在收到用户输入时简单地进行处理的传统视频游戏可能不正确地确定用户错过了时间窗口,而实际上从用户的角度来看,用户在正确的时间提供了适当的输入。这样的结果可能会挫败甚至激怒用户,用户可能会觉得视频游戏对用户在玩视频游戏时的表现进行了不公平和不正确的打分。
11.传统视频游戏通常试图通过确定在多久之前用户实际提供了输入来解决延迟。例如,一些传统视频游戏对来自用户的输入加上时间戳,并随后从接收到的时间戳中减去近似延迟时间,以估计用户实际提供输入的近似时间。然而,这种传统的方法有几个缺点。首先,由于网络抖动和其他改变网络条件的因素,难以准确地估计延迟时间。第二,这种传统方法仅考虑从用户到视频游戏的单向延迟;它没有考虑在另一方向上从视频游戏到用户的延迟。因此,传统视频游戏可能不知道视频帧被传送并随后被显示给用户花费了多长时间。其他传统视频游戏试图通过将用户输入与视频帧编号进行关联来处理延迟。这种传统技术也有几个缺点。首先,简单地对视频帧进行计数无法计及在网络通信中可能很常见的、可能从未到达用户的丢弃帧。第二,当视频游戏接收到用户输入连同视频帧计数器值时,视频游戏将必须通过缓存视频游戏世界状态或通过向后运行游戏仿真(即,倒带)以基于接收到的视频帧计数器值来查明视频游戏的过去状态。
12.为了用处理用户输入的常规方法解决上述问题以及为了解决与延迟相关联的其他缺点,本概念涉及用于处理用户输入的新颖方案,其可去除或消除用户对延迟的感知。例如,计算机可以向用户正在使用来提供输入的输入设备发送状态信息,并且输入设备可以将输入连同该状态信息发送回计算机。作为响应,计算机可以基于用户在最初提供输入时而不是在计算机实际接收到输入时用户所感知的状态信息来处理该输入。因此,计算机可以处理输入,就好像它是即时提供的并且没有延迟一样。此外,用户可以准确且即时地感知计算机响应,从而提供更令人满意的体验。下面将用附图更详细地描述本概念。
13.图1示出了来自与本概念的一些实现一致的第一人称射击视频游戏的示例游戏状态。在该示例射击游戏中,服务器可以通过一系列时间段对具有虚拟对象(例如,包括鸭子102)的虚拟游戏世界的仿真进行建模。服务器可以控制鸭子102的移动。用户可以使用客户端玩该游戏,例如通过观看客户端显示的视频帧以及通过向客户端提供输入。在该示例中,用户可以控制具有带有用于帮助瞄准虚拟目标(例如鸭子102)的十字准线的瞄准镜104的虚拟步枪。用户还能够提供输入,以朝瞄准镜104指向的任何事物(即十字准线相交的位置)开枪。
14.图1中的顶行示出了从服务器的角度的随时间进展的一系列游戏状态。在该示例中,鸭子102可以在瞄准镜104的视野中从右向左飞。例如,在0ms处,服务器游戏状态sgs_1a使十字准线瞄准鸭子102,即瞄准目标。在100ms处,服务器游戏状态sgs_1b使鸭子102在瞄准镜104的视野中稍微向左飞行,使得十字准线不再瞄准鸭子102,即偏离目标。在200ms处,服务器游戏状态sgs_1c使鸭子102向左飞得更远,使得十字准线远离目标。服务器可以通过对这三个示例游戏状态以及在图1所示的这三个示例游戏状态之前、之间和之后的更多游戏状态进行仿真来对虚拟世界建模。服务器可以基于例如预定义的游戏场景、游戏规则、包括随机性的各种因素和/或用户输入来对虚拟世界建模。
15.图1中的底行示出了从用户的角度的随时间进展的一系列游戏状态。例如,在0ms处,用户游戏状态ugs_1a使鸭子102在十字准线相交处的右侧并朝着相交处飞行。在100ms处,用户游戏状态ugs_1b使十字准线瞄准鸭子102,即瞄准目标。用户游戏状态ugs_1b可对应于服务器游戏状态sgs_1a。在200ms处,用户游戏状态ugs_1c使鸭子102在瞄准镜104的视野中稍微向左飞行,使得十字准线不再瞄准鸭子102,即偏离目标。用户游戏状态ugs_1c可对应于服务器游戏状态sgs_1b。客户端可以向用户输出视频、音频、触觉反馈或与游戏状态
相对应的任何其他类型的输出。
16.在此示例中,客户端与服务器之间可能存在100ms的延迟。因此,如果服务器在0ms处向客户端传送反映服务器游戏状态sgs_1a的视频帧,则可能需要花费100ms来使客户端将该视频帧在100ms处显示给用户。此外,如果用户在100ms处向客户端提供输入,可能花费100ms才能使服务器在200ms处接收到来自客户端的输入。尽管此处使用100ms作为简化示例,但从服务器到客户端的延迟可能不同于从客户端到服务器的延迟。此外,延迟可能不会保持不变。网络抖动和其他因素会导致延迟在不同时间发生很大变化。本概念的有效性不随波动的延迟而变化,这是相对于传统技术的另一优点。
17.对于传统视频游戏,由于服务器和客户端之间的延迟,用户可能感觉到明显的滞后。例如,在服务器游戏状态sgs_1a中,正在运行游戏仿真的服务器可能要求用户在0ms当十字准线位于鸭子102上时提供开火输入。然而,从用户的角度来看,在0ms处,鸭子102尚未飞入用户游戏状态ugs_1a中十字准线的交叉点,因此射击为时过早。相反,从用户的角度来看,由于从服务器到客户端的100ms延迟,在用户游戏状态ugs_1b中在100ms处十字准线将瞄准在鸭子102上。相应地,用户将在100ms处向客户端提供开火输入。此外,由于从客户端到服务器的100ms延迟,服务器将在200ms处接收到来自客户端的开火输入。不幸的是,从服务器的角度来看,在200ms处在服务器游戏状态sgs_1c中,鸭子102已经飞离十字准线的交叉点很远。因此,即使从用户的角度来看,用户向目标开火(即,在正确的时间开火),服务器也会登记用户的未命中射击(即,开火太迟)。传统视频游戏的这种不合需影响对具有高延迟的用户而言是不公平的,并且通常会引起用户的不满、沮丧和愤怒。为了解决传统视频游戏的这些缺点,本概念可以实现用于处理用户输入的新颖方案。与本概念的一些实现一致,服务器可以向客户端传送游戏状态信息。例如,服务器可以向客户端传送鸭子102的位置坐标。作为替换或补充,服务器可以向客户端传送指示瞄准镜104的十字准线是在目标上(on-target)还是偏离目标(off-target)的布尔值。此外,当用户向客户端提供输入时,除了客户端向服务器传送该输入之外,客户端还可向服务器传送游戏状态信息。即,从客户端传送到服务器的输入(例如,开火输入)可伴有与从用户的角度来看用户提供输入的时间相对应的游戏状态信息(例如,鸭子102的位置坐标或者在目标上或偏离目标布尔值)。作为响应,服务器可以基于连同输入从客户端接收的游戏状态信息而不是服务器接收到该输入时游戏仿真所处的当前状态来处理所接收的输入。
18.例如,在图1所示的示例中,在0ms处,服务器可以将与服务器游戏状态sgs_1a相对应的游戏状态信息连同对应的视频帧传送到客户端。在100ms处,客户端可以接收来自服务器的与服务器游戏状态sgs_1a(与用户游戏状态ugs_1b相同)相对应的游戏状态信息和视频帧,并且可以向用户显示视频帧。同样,在100ms处,用户可以向客户端提供开火输入。作为响应,客户端可以将该输入连同对应于服务器游戏状态sgs_1a(即,对应于用户游戏状态ugs_1b)的游戏状态信息传送到服务器。在200ms处,服务器可以接收到来自客户端的开火输入和与服务器游戏状态sgs_1a相对应的游戏状态信息。作为响应,服务器可以基于开火输入和服务器游戏状态sgs_1a而不是200ms处的当前游戏状态sgs_1c来操纵所仿真的虚拟游戏世界。相应地,与本概念一致,服务器可以通过登记在鸭子102上的命中对该开火输入作出响应,因为接收游戏状态信息对应于服务器游戏状态sgs_1a,其十字准线在鸭子102上。然而,传统游戏会响应于在200ms处接收到的开火输入而登记未命中的射击,因为在
200ms处的服务器游戏状态sgs_1c的十字准线远离鸭子102。因此,本概念可能够减少或消除通常由服务器和客户端之间的延迟引起的滞后影响,从而向用户提供服务器同步响应的感知。
19.图2示出了来自与本概念的一些实现一致的平台动作视频游戏的示例游戏状态。在该示例平台游戏中,服务器可以对具有虚拟对象(包括例如轨道202和跑者204)的虚拟游戏世界的仿真进行建模。服务器可以对跑者204可在轨道202上跑步的虚拟游戏世界进行仿真。用户可以使用客户端玩该视频游戏,例如通过观看客户端显示的视频帧以及通过向客户端提供输入。在该示例中,用户可以控制跑者204在轨道202上的位置和/或跑者204的速度。用户还可能够提供输入以使跑者204跳跃。例如,轨道202可包括间隙206,诸如悬崖,跑者204必须跳过该间隙才能在游戏中存活。该示例游戏要求用户在正确的时间提供跳跃输入,即,当跑者204在跑者204进入悬崖之前处于正确的位置时。
20.图2中的顶行示出了从服务器的角度的随时间进展的一系列游戏状态。在此示例中,跑者204可在轨道202上奔跑。例如,在0ms处,服务器游戏状态sgs_2a使得跑者204在轨道202上正好在间隙206之前。在100ms处,服务器游戏状态sgs_2b使得跑者204离开轨道202并在间隙206上方。在200ms处,服务器游戏状态sgs_1c使跑者204掉入间隙206,即掉下悬崖。服务器可以在其过渡经过一系列游戏状态(包括图2所示的三个示例游戏状态)时对虚拟世界进行建模。服务器可以基于例如预定义的游戏场景、游戏规则、包括随机性的各种因素和/或用户输入来对虚拟世界建模。
21.图2中的底行示出了从用户的角度的随时间进展的一系列游戏状态。例如,在0ms处,用户游戏状态ugs_2a使跑者204在轨道202上并且接近间隙206,但对于能跳离间隙206而言还太早。在100ms处,用户游戏状态ugs_2b使跑者204在轨道202上恰好在间隙206之前,使得从该位置跳跃将造成成功地跳越间隙206。用户游戏状态ugs_2b可对应于服务器游戏状态sgs_2a。在200ms处,用户游戏状态ugs_2c使得跑者204离开轨道202并在间隙206上方。用户游戏状态ugs_2c可对应于服务器游戏状态sgs_2b。客户端可以向用户输出视频、音频、触觉反馈或与游戏状态相对应的任何其他类型的输出。
22.与图1中的示例类似,在图2中所示的示例中,客户端可以与服务器分开达100ms的延迟。因此,如果服务器在0ms处向客户端传送反映服务器游戏状态sgs_1a的视频帧,则可能需要花费100ms来使客户端在100ms处将该视频帧显示给用户。此外,如果用户在100ms处向客户端提供输入,可能花费100ms才能使服务器在200ms处接收到来自客户端的输入。
23.对于传统视频游戏,由于服务器和客户端之间的延迟,用户可能感觉到明显的滞后。例如,正在运行游戏仿真的服务器可能要求用户在0ms处提供跳跃输入,即在服务器游戏状态sgs_2a中,当跑者204恰好在跑者到达间隙206之前位于轨道202的边缘之处或附近时。然而,从用户的角度来看,在0ms处,跑者204在用户游戏状态ugs_2a中尚未足够接近间隙206来跳跃,并且因而跳跃为时过早。相反,从用户的角度来看,由于从服务器到客户端的100ms延迟,在用户游戏状态ugs_1b中在100ms处跑者204将就位来跳过间隙206。相应地,用户将在100ms处向客户端提供跳跃输入。此外,由于从客户端到服务器的100ms延迟,服务器将在200ms处接收到来自客户端的跳跃输入。不幸的是,从服务器的角度来看,在200ms处在服务器游戏状态sgs_1c中,跑者204已经跑离悬崖并落入间隙206。因此,即使从用户的角度来看用户及时跳跃(即,在正确的时间跳跃),服务器也会登记用户的失败跳跃(即,跳跃太
迟)。传统视频游戏的这种不合需影响对具有高延迟的用户而言是不公平的且可提供不利的游戏体验。
24.为了解决传统视频游戏的这些缺点,本概念可以实现用于处理用户输入的新颖方案。与本概念的一些实现一致,服务器可以向客户端传送游戏状态信息。例如,服务器可以将跑者204的位置和/或间隙206的位置传送给客户端。作为替换或补充,服务器可以将指示跑者204是在轨道202上奔跑还是在空中飞行(即,不在轨道202上)的布尔值传送给客户端。此外,当用户向客户端提供输入时,除了客户端向服务器传送该输入之外,客户端还可向服务器传送游戏状态信息。即,从客户端传送到服务器的输入(例如,跳跃输入)可伴有与从用户的角度来看用户提供输入的时间相对应的游戏状态信息(例如,跑者204的位置、间隙206的位置、和/或地面-或-空中布尔值)。作为响应,服务器可以基于连同输入从客户端接收的游戏状态信息而不是服务器接收到该输入时游戏仿真所处的当前状态来处理所接收的输入。
25.例如,在图2所示的示例中,在0ms处,服务器可以将与服务器游戏状态sgs_2a相对应的游戏状态信息连同对应的视频帧传送到客户端。在100ms处,客户端可以接收来自服务器的与服务器游戏状态sgs_2a(与用户游戏状态ugs_2b相同)相对应的游戏状态信息和视频帧,并且可以向用户显示视频帧。同样,在100ms处,用户可以向客户端提供跳跃输入。作为响应,客户端可以将该输入连同对应于服务器游戏状态sgs_2a(即,对应于用户游戏状态ugs_2b)的游戏状态信息传送到服务器。在200毫秒处,服务器可以接收来自客户端的跳跃输入和服务器游戏状态sgs_2a。作为响应,服务器可以基于跳跃输入和服务器游戏状态sgs_2a而不是200ms处的当前游戏状态sgs_2c来操纵所仿真的虚拟视频游戏世界。因此,与本概念一致,服务器可以通过登记跑步者204成功跳过间隙206来对跳跃输入作出响应,因为接收的游戏状态信息对应于服务器游戏状态sgs_2a,这使跑者204位于轨道202上的适当位置以跳过间隙206并降落在悬崖外轨道202的远侧。然而,传统游戏会响应于在200ms处接收到的跳跃输入而登记失败的跳跃,因为在200ms处的服务器游戏状态sgs_2c使跑者204已经落入间隙206。因此,本概念可能够减少或消除通常由服务器和客户端之间的延迟引起的滞后影响,从而向用户提供服务器同步响应的感知。
26.尽管已经在上面结合图1和2所示的示例视频游戏解释了本概念,但本概念可在涉及接收和处理用户输入的延迟的任何场景中实现。例如,服务器可以建模其他类型的环境,包括虚拟现实世界和增强现实。服务器还可以建模现实生活环境。由于使用传统技术的服务器和用户(例如,用户通过其向服务器提供输入的输入设备)之间的延迟而可由用户感知到的滞后可使用本概念来消除。
27.图3示出了与本概念一致的用于处理用户输入的示例方案。此外,图3示出了使用本概念的示例信息流。图3描绘了示例系统300。系统300可包括服务器302。服务器302可以是软件、硬件或其组合。服务器302可以对环境建模。例如,服务器302可以通过运行单玩家视频游戏或多玩家视频游戏来对虚拟游戏环境进行建模。在一些实现中,服务器302可以运行允许一个或多个远程用户连接并玩视频游戏的虚拟游戏控制台。例如,服务器302可以运行第一人称射击视频游戏,就像图1所示的那个。服务器302可以建模鸭子102的位置、移动和动作,以及步枪的位置、移动和动作。在另一示例中,服务器302可以运行平台视频游戏,就像图2中所示的那个。服务器302可以建模轨道202的位置和移动,以及跑者204的位置、移
动和动作。在其他实现中,服务器302可以对包括各种虚拟对象以及现实世界对象的虚拟现实环境或增强现实环境进行建模。服务器302不限于仅对虚拟环境进行建模。在其他实现中,服务器302可以对现实世界环境进行建模。例如,服务器302可以对股票交易环境、车辆交通环境、酒店预订环境或具有对象和变化状态的任何其他环境进行建模。服务器302可以是具有对环境进行建模以及处理输入的处理能力并且还具有接收输入的通信能力的任何设备。例如,服务器302可以是计算机设备、视频游戏控制台、虚拟现实耳机,等等。
28.系统300可包括客户端304。客户端304可以是软件、固件、硬件或其组合。客户端304可以是用户可以用来连接到服务器302并与服务器302所建模的环境进行交互的任何设备和/或任何软件。例如,客户端304可以是个人计算机、膝上型计算机、平板、智能手机、可穿戴设备、键盘、鼠标、话筒、电话、视频游戏控制台、视频游戏控制器、虚拟现实耳机、虚拟现实控制器等,和/或在这样的设备上运行的软件和/或固件。客户端304可以能够接收关于由服务器302建模的环境的信息,并将该信息输出给用户。客户端304可以能够从用户接收输入并将输入传送到服务器302。客户端304可以通过向通信增加延迟的一个或多个网络(未示出)与服务器302通信。
29.在与本概念一致的一些实现中,服务器302可以向客户端304传送环境信息。在视频游戏示例中,服务器302可以生成表示环境的一系列视频帧306,并将视频帧306传送给客户端304。例如,关于图1的第一人称射击视频游戏,如图1所示,服务器302可以将示出鸭子102和瞄准镜104的视频帧306传送给客户端304。作为另一示例,关于图2的平台动作视频游戏,如图2所示,服务器302可以将示出跑者204和轨道202的视频帧306传送给客户端304。服务器302可以按预定义的频率(例如,每秒30帧或每秒60帧)、可变频率(例如,取决于服务器302和客户端304之间的网络连接的能力,或者取决于用户对视频帧质量的偏好)或者根据需要(因为视频帧306由于环境的变化而需要更新)来传送视频帧306。服务器302可以向客户端304传送其他环境信息,诸如音频(例如,背景音乐或音效)。客户端304可以接收由服务器302传送的环境信息,并将环境信息输出给用户。例如,客户端304可以在将被用户看到的显示器上显示视频帧306,并且客户端304可以使用扬声器播放将被用户听到的音频。
30.与本概念的一些实现一致,服务器302可以生成一系列状态信息308并将状态信息308传送给客户端304。状态信息308可包括服务器302想要知悉的与环境的状态有关的任何信息,以便处理用户提供的输入。例如,状态信息308可包括环境中对象的状态、特征和/或属性,诸如鸭子102的位置坐标、鸭子102的方向和速度向量、瞄准镜104的位置坐标、鸭子102和步枪之间的距离、跑者204的位置坐标、间隙206的位置坐标、跑者204相对于轨道202的速度等。状态信息可以是矩阵、列表、向量、标量、布尔值或任何其他数据结构。例如,状态信息可包括指示瞄准镜104的十字准线相对于鸭子102是在目标上还是偏离目标的布尔值,指示射击输入是在成功射击的时间窗口之内还是之外提供的布尔值,指示跑者204是在坚实地面上(即在轨道202上)还是在空中(即离开轨道202)的布尔值,指示跑者204是在轨道202就位以便跳过间隙206还是失位(跳跃输入将导致跳跃失败)的布尔值,或者指示跳跃输入是在成功跳跃的时间窗口之内还是之外提供的布尔值。状态信息308中可以包括各种各样的其他类型的信息,诸如玩家统计(例如,健康、生命、力量、装备、弹药、状态效果、得分、加分、攻击强度、防御强度、灵巧度、金钱量、赢、输、等级,等等)、敌人统计、团队统计、游戏中计时器、移动速度、加速度或任何其他变量。取决于由服务器302建模的环境,状态信息
308的内容可以取决于上下文和所建模的场景而变化。例如,示例视频游戏的设计者或开发者可以基于视频游戏的类型和体系结构来选择状态信息308的内容。
31.服务器302可以按照预定义的频率、可变的频率或按需传送一系列状态信息308,因为状态信息308由于环境的变化而需要更新。在一些实现中,状态信息308可以具有与视频帧306的对应关系。例如,对应的视频帧306和状态信息308可以共享公共时间戳或公共计数器值(例如,帧计数器)。作为另一示例,对应的视频帧306和状态信息308可以被一起传送。即,对应的视频帧306和状态信息308可以在同一数据包中一起传送,或者它们可以在相同或类似的时间(即,同步地)一起传送。在其他实现中,视频帧306和状态信息308之间可能没有对应关系。视频帧306系列和状态信息308系列可以异步地传送。
32.在一些实现中,由服务器302传送到客户端304的状态信息308可以包括描述关于环境的特定状态(例如,环境中对象的位置坐标)的内容。在替换实现中,服务器302可以在本地存储内容,生成与对应内容相关联的一系列令牌,并将令牌(代替内容)传送到客户端304,使得由服务器302传送到客户端304的状态信息308包含令牌而不是内容。例如,具有令牌的特定状态信息308可以是与存储在服务器302处的内容相关联的标识符(例如,计数器、时间戳、随机生成的值或任何其他数据结构)。将令牌代替内容发送作为状态信息308可以减少需要在服务器302和客户端304之间交换的信息量。此外,作为令牌来传送状态信息308可阻止可能操纵内容但可能难以解释和操纵令牌的骗子。
33.使用传统方法,当客户端接收到来自用户的输入时,客户端将该输入传送到服务器。相应地,当服务器接收到该输入时,服务器基于接收到该输入时环境所处的任何状态来处理该输入。与本概念一致,当客户端304从用户接收到输入310时,客户端可以将该输入310连同对应的状态信息312传送到服务器302。
34.在一个实现中,状态信息312可对应于输入310,因为当客户端304从用户接收到输入310时,状态信息312是客户端304从服务器302接收到的一系列状态信息308中的最新的。在另一实现中,状态信息312可对应于输入310,因为状态信息312与在客户端304从用户接收到输入310时向用户显示的视频帧306相对应。
35.从客户端304返回到服务器302的状态信息312可包括服务器302向客户端304传送一系列内容的内容(例如,对象在环境中的位置)。或者,从客户端304返回到服务器302的状态信息312可包括令牌,其中服务器302向客户端304发送一系列令牌。
36.例如,关于图1所示的第一人称射击视频游戏,当用户在100ms处提供与射击命令相对应的输入310时,客户端304可以将该输入310连同与用户游戏状态ugs_1b(其可以与服务器游戏状态sgs_1a相同)相对应的状态信息312(其中瞄准镜104的十字准线瞄准在鸭子102上)传送。状态信息312可以包括鸭子102的位置坐标、瞄准镜104的位置坐标、鸭子102和步枪之间的距离、指示瞄准镜104瞄准在鸭子102上的布尔值或其组合,或者对应于前述任何一者的令牌。作为另一示例,关于图2所示的平台动作视频游戏,当用户在100ms处提供与跳跃命令相对应的输入310时,客户端304可以将该输入310连同与用户游戏状态ugs_2b(其可以与服务器游戏状态sgs_2a相同)相对应的状态信息312(其中跑者204在轨道202上就位以跳过间隙206)传送。状态信息312可包括跑者204的位置坐标、跑者204的速度、间隙206的位置坐标、指示跑者204在轨道202上的布尔值、指示跑者在轨道202上就位以跳离间隙206的布尔值,或其组合,或对应于上述任何一者的令牌。与本概念的一些实现一致,客户端304
不必理解或解释从服务器302接收的状态信息308。客户端304可以从服务器302接收状态信息308,并简单地将状态信息308中的一者或多者连同输入310返回给服务器302。
37.与本概念一致,服务器302可以一起接收输入310和状态信息312。即,服务器302可以在同一数据包中、在相同或相似的时间、或者使用公共标识符、或者使用任何其他方法,接收输入310和状态信息312,使得服务器302可以将输入310与状态信息312相关联。相应地,服务器302可以基于连同输入310接收的状态信息312而不是基于接收到输入310时的环境状态来处理输入310。
38.例如,关于图1所示的第一人称射击视频游戏,当服务器302在200ms处接收到与射击命令相对应的输入310和与服务器游戏状态sgs_1a相对应的状态信息312时,服务器302可以通过根据连同输入310接收的服务器游戏状态sgs_1a而不是环境在200ms时所处的服务器游戏状态sgs_1c来执行射击命令来操纵环境。相应地,服务器302可以登记成功的射击,因为输入310(即,射击命令)是与对应于瞄准镜104的十字准线瞄准在鸭102上的状态的状态信息312一起接收的,尽管服务器302可以在服务器游戏状态sgs_1c中建模环境,其中当服务器302在200ms处接收到用于射击鸭子102的输入310时,瞄准镜104的十字准线偏离目标。
39.作为另一示例,关于图2所示的平台动作视频游戏,当服务器302在200ms处接收到与跳跃命令相对应的输入310和与服务器游戏状态sgs_2a相对应的状态信息312时,服务器302可以通过根据与输入310一起接收的服务器游戏状态sgs_2a而不是环境在200ms时所处的服务器游戏状态sgs_2c来执行跳跃命令来操纵环境。相应地,服务器302可以登记成功的跳跃,因为输入310(即,跳跃命令)是与对应于跑者204在轨道202上且在适当位置以跳离间隙206的状态的状态信息312一起接收的,尽管服务器302可以在服务器游戏状态sgs_2c中建模环境,其中当服务器302在200ms处接收到用于跳跃的输入310时,跑者204离开轨道202并落空进入间隙206。
40.本概念的这些示例实现允许服务器302快速处理输入310,这是与处理延迟的传统技术相比的另一优点。例如,传统服务器可以检查包括在从客户端接收的输入中的时间戳,其中该时间戳指示客户端何时发送该输入,即使服务器由于延迟而实际上接收到该输入要晚得多。或者,传统服务器和客户端可以交换视频帧计数器或虚拟世界时钟值连同用户输入。在这些场景中,传统服务器需要“倒带”正在建模的环境,以计算环境在过去的适当时间所处于的状态(基于与输入一起接收到的时间戳、视频帧计数器值或虚拟世界时钟时间)以了解如何处理接收到的输入。这样的计算可能花费处理资源,但更重要的是,花费时间,从用户的角度来看这可能会对服务器的响应性产生负面影响。相反,根据本概念,服务器302可以生成服务器302快速处理输入310所必需的状态信息308(由视频游戏设计者选择)。例如,关于图1的射击视频游戏,与输入310一起返回到服务器302的状态信息312可以包括指示瞄准镜104的十字准线是瞄准目标还是偏离目标的布尔值。相应地,服务器302在接收到输入310时将知道是登记命中还是未命中,并且因此与传统技术相比,可以非常快地处理输入310。类似地,关于图2的平台动作视频游戏,与输入310一起返回到服务器302的状态信息312可以包括指示跑者204是否在轨道202上的适当位置以跳离间隙206的布尔值。相应地,当服务器302接收到输入310(即,跳跃命令)连同状态信息312时,服务器302可以立即知道是登记成功跳跃还是失败跳跃,并且因此可以比传统技术快得多地处理输入310。
41.此外,服务器302可以继续根据基于与输入310一起接收的状态信息312处理的输入310对环境建模。即,服务器302可以继续生成后续(即,将来)环境信息并将其传送给客户端304。例如,关于图1所示的第一人称射击视频游戏,服务器302可以生成反映步枪成功射击鸭子102的一系列视频帧306、音效和/或一系列状态信息308,诸如描绘鸭子102从空中坠落到地面的视频帧。作为另一示例,关于图2所示的平台动作视频游戏,服务器302可以生成反映跑者204成功跳过间隙206、在悬崖的另一侧落地并继续在轨道202的另一侧奔跑的一系列视频帧306、音效和/或一系列状态信息308。服务器302还可以取决于正在玩的视频游戏的上下文,基于输入310将适当数量的点数、奖金或生命奖励给用户。
42.因此,与本概念一致,服务器302处理来自用户的输入310,如同输入310是在0ms处接收的,即在服务器302所建模的环境的状态(例如,服务器游戏状态sgs_1a或sgs_2a)与用户在100毫秒处由用户提供输入310时所感知的环境的状态(例如,用户游戏状态ugs_1b或ugs_2b)相匹配的时刻,即使输入310实际上是晚得多地在200ms处当服务器302所建模的环境状态(例如,服务器游戏状态sgs_1c或sgs_2c)与同输入310一起接收的状态信息312不是同时接收的。因此,使用本概念,用户可以感知服务器302与用户提供给客户端304的输入310即时或同步地作出反应,而没有与由慢网络和/或慢设备所引起的延迟相关联的传统滞后和延时影响。因此,本概念允许用户使用客户端304通过网络与服务器302交互(例如,玩视频游戏)获得更愉快和真实的体验。此外,通过减少或消除低延迟玩家通常比高延迟玩家具有的优势,本概念可以提供更公平的多玩家视频游戏体验。
43.就服务器302在接收到输入310时所建模的环境的状态(例如,200ms处的服务器游戏状态sgs_1c或sgs_2c)与随输入310一起接收的状态信息312(例如,0ms处的服务器游戏状态sgs_1a或sgs_2a)相冲突而言,服务器302可以采用一种或多种冲突解决技术。这些冲突解决技术可与本概念结合使用。在延迟较大的地方,对冲突解决技术的需求更大,并且冲突解决技术的效果可能变得夸张。例如,服务器302可能需要“倒带”服务器302在接收到输入310之前已建模的环境的仿真(即,将环境的建模逆转),并根据已处理的输入310使用不同的结果来重新建模环境(即,正向建模环境)。在一些实现中,可以使用时间戳技术。因此,可能的是,玩图1的第一人称射击视频游戏的用户看到如下视频帧:这些视频帧反映步枪射向鸭子102但未命中,使得鸭子102继续在空中飞行一段时间,如服务器游戏状态sgs_1c所示,然后在服务器302由于延迟而稍后登记输入310之后,鸭子102像被射中一样突然落下。还可能的是,玩图2的平台动作视频游戏的用户看到如下视频帧:这些视频帧反映出跑者204未能跳跃并从而落入空中进入间隙206,如服务器游戏状态sgs_2c所示,然后在服务器302稍后由于延迟而登记输入310之后,跑者204突然出现在轨道202的另一侧,就好像跑者204及时跳跃并跳离间隙206。虽然服务器302可由于延迟而延时地接收输入310,但是输入310对环境的影响可以如同服务器302在没有延迟的情况下即时地接收输入310,这与本概念一致。
44.随着延迟的增加,冲突解决效果可能会更加夸张。为了减少服务器302可能需要由于服务器302和客户端304之间的延迟而导致的经延时输入而纠正环境的次数和程度,服务器302和/或客户端304可以通过预测用户可能提供的输入并主动生成经预测输入的效果来使用预测技术。例如,客户端304可甚至在射击输入到达服务器302之前和在服务器登记鸭子102已经被射中之前,响应于用户提供的射击输入来生成描绘步枪开火和/或鸭子102被
射中的视频帧。作为另一示例,服务器302可甚至在服务器302接收到来自客户端304的跳跃输入之前,生成描绘跑者204在轨道202的末端跳跃并越过间隙206的视频帧。即,服务器302和/或客户端304可以假设用户将随着视频游戏的进展而提供正确的输入,并且如果没有接收到预期输入(例如,在时间窗口容差内),服务器302和/或客户端304可以因缺失正确输入而“倒带”并纠正环境。
45.此外,对于多玩家游戏,服务器302可以使用缓冲技术,其中服务器302接收来自一个或多个用户的输入,缓冲这些输入,有意地等待(容差等待时段)其他用户提供输入,并随后一起处理接收到的输入。即,服务器302可以在等待预期稍后从高延迟用户接收到附加输入的同时,将早期从低延迟用户接收的输入留置。这一缓冲方法可以使用时间戳技术。例如,如果服务器302具有连接到它的多个用户,并且最高延迟用户具有约200ms的近似和/或平均延迟,则当服务器302接收到来自10ms延迟用户的输入时,服务器302可以等待约200ms,以便服务器302接收来自其他用户的输入。该缓冲技术可为多个用户提供更公平的游戏机会,无论他们具有低延迟还是高延迟。然而,如果用户具有过高的延迟,例如超过容差等待时间限制,则服务器302可停止缓冲并开始处理接收到的输入,使得可能太晚从非常高的延迟用户接收到的任何输入将不会与先前接收到的来自其他用户的输入一起处理。上述倒带技术、预测技术和/或缓冲技术可结合本概念使用。
46.作弊是游戏行业普遍存在的问题。作弊者会给其他玩家带来不公平、不愉快的游戏体验。本概念可实现一种或多种欺骗遏制技术。作弊者可能操纵从服务器302接收的状态信息308,并发回经更改的状态信息312,以在视频游戏中获得不公平的优势。例如,玩图1的第一人称射击视频游戏的用户可能从服务器302接收到将导致未命中射击的状态信息308(例如,鸭子102的位置坐标偏离目标或指示步枪偏离目标的布尔值),但传送射击输入310连同经操纵的状态信息312(例如,鸭子102的位置坐标位于瞄准镜104的十字准线交叉点处或指示步枪瞄准目标的布尔值),这将欺骗服务器302为作弊者奖励目标命中。
47.作弊遏制技术之一可包括对从服务器302传送到客户端304的状态信息308(无论是内容还是令牌)应用密码数字签名,使得服务器302可以确定从客户端304返回的状态信息312是否被篡改。与状态信息312一起返回到服务器302的有效数字签名可以证明原始状态信息308未经修改就被返回。否则,服务器302可以丢弃与具有无效数字签名的状态信息312一起接收的输入310。因此,密码数字签名可以遏制作弊者更改状态信息308。
48.另一作弊遏制技术可涉及通过加密来混淆状态信息308。即,在将状态信息308从服务器302传送到客户端304之前对其进行加密可致使作弊者无法理解状态信息308。服务器302可以丢弃从客户端304与未正确解密为有效状态信息的经加密状态信息312一起接收的输入310。因此,作弊者操纵由客户端304接收的经加密状态信息308以获得视频游戏中的不公平优势可能极其困难或几乎不可能。
49.用于遏制作弊的另一技术可涉及服务器302每用户仅接受一次特定状态信息312。例如,作弊者可能从服务器302接收与命中射击或成功跳跃相对应的特定状态信息308。然后,欺骗者可以制作该状态信息308的副本,保持该副本,然后将该状态信息308(可能多次)传送回服务器302,以欺骗服务器302在稍后时间登记命中射击和成功跳跃。为了遏制这种类型的行为,服务器302可以例如通过向状态信息308指派唯一标识符(例如,计数器、时间戳或足够大的随机数)来生成唯一性状态信息308。服务器302可以跟踪先前从用户接收的
状态信息312。因此,服务器302可能够检测重复接收的状态信息308。即,服务器302可以确定是否首次接收到特定状态信息312。否则,服务器302可以丢弃与先前接收到的状态信息312一起接收的输入310。
50.用于遏制上述作弊行为的另一技术可涉及服务器302仅按次序接受状态信息312。服务器302可以例如通过向状态信息308指派计数器或时间戳来按次序生成状态信息308。服务器302可以跟踪从用户接收的最后状态信息312,使得服务器302可以确定从用户接收的特定状态信息312是有序的还是无序的。服务器302可以丢弃与无序状态信息312一起接收的输入310。这种技术可以遏制作弊者持有旧的状态信息308并在以后使用它。此外,上述作弊遏制技术的任何组合可与本概念一起使用。
51.在一些实现中,系统300可以包括输入设备314。输入设备314可以是能够从用户接收输入的任何设备,例如视频游戏控制器、虚拟现实控制器、鼠标、键盘、轨迹板、触摸板、触摸屏、操纵杆等。输入设备314可以通过向通信增加延迟的一个或多个网络(未示出)与客户端304通信。
52.与本概念一致,客户端304可以向输入设备314传送一系列状态信息316。从客户端304传送到输入设备314的状态信息316可以与从服务器302传送到客户端304的状态信息308相同。即,客户端304可以将从服务器302接收的一系列状态信息308转发到输入设备314。
53.与本概念一致,当输入设备314从用户接收到输入318时,输入设备314可以将该输入318连同对应的状态信息320一起传送到客户端304。状态信息320可以对应于输入318,因为状态信息320是输入设备314在从用户接收输入318时该输入设备314已接收到的一系列状态信息316中的最新的。或者,状态信息320可对应于输入318,因为状态信息320与在输入设备314从用户接收到输入318时向用户显示的视频帧306相对应。
54.当从输入设备314接收到输入318和状态信息320时,客户端304可以将输入318和状态信息320两者转发到服务器302。即,由客户端304传送到服务器302的输入310和状态信息312可以与客户端304从输入设备314接收到的输入318和状态信息320相同。作为响应,服务器302可以基于状态信息320处理输入318,如同当环境处于对应于状态信息320的状态时已经接收到输入318一样,即使服务器302在实际接收到输入318时可能已经在不同的状态中建模了环境。相应地,服务器302可以通过以下方式对用户提供的输入318作出反应来操纵环境:用户将感知到服务器302和客户端304之间的延迟以及客户端304和输入设备314之间的延迟被有效消除。
55.从上面结合图3的描述中应该清楚,服务器302(其对环境进行建模)和输入设备314(其从用户接收输入)之间的附加设备可以被菊链(daisy-chained),以便减少或消除由于服务器302和输入设备314以及它们之间的一个或多个设备之间的延迟而引起的延时影响。中间设备可以在从服务器302到输入设备314的方向上转发状态信息,并且在从输入设备314到服务器302的相反方向上转发输入和对应的状态信息。
56.所描述的本概念可适用于多用户场景,即多个用户与同一环境交互的场景(例如,多玩家视频游戏)。服务器302可以将一系列状态信息308传送到多个客户端304,这些客户端304通过具有延迟的一个或多个网络与服务器302分开。客户端304中的一者或多者可以向服务器302传送输入310和对应的状态信息312。服务器302可以处理和协调一起接收的多
个输入310及其它们对应的状态信息312,以修改和建模环境。
57.图4示出了与本概念一致的示例延迟场景。这些场景仅作为示例提供。本概念的应用不限于所示的场景。例如,图4所示的特定类型的设备可以交换成其他类型的设备。示例场景中的网络数量也可变化。
58.在第一示例场景中,游戏服务器410可以运行虚拟游戏控制台,该虚拟游戏控制台允许远程用户使用该虚拟游戏控制台玩游戏,就像她坐在起居室中的物理游戏控制台前一样。游戏服务器410可以连接到网络412。用户可以使用智能手机414作为客户端,该客户端可以通过网络412连接到游戏服务器410以玩在游戏服务器410上运行的视频游戏。
59.网络412可以是局域网、广域网、有线网络、无线网络、蜂窝网络、wi-fi网络、蓝牙网络、因特网、用于交换数据的任何其他网络、或其组合。取决于速度、带宽、距离、利用率、可靠性和其他因素,网络412可能导致游戏服务器410和智能手机414之间的通信延迟。例如,游戏服务器410可以位于数据中心,手持智能手机414的用户可能在乘坐城市公交车,并且网络412可包括蜂窝网络。
60.在该第一示例场景中,游戏服务器410可以对虚拟游戏环境进行建模,并将对应的视频帧(即流)传送到智能手机414。游戏服务器410还可以向智能手机414传送游戏状态信息。智能手机414可以从游戏服务器410接收视频帧,并向用户显示该视频帧。智能手机414可以接收来自用户的输入。例如,用户可以通过如下来提供输入:按下或按住按钮;触摸、轻叩或滑动触摸屏;倾斜、旋转或晃动智能手机414;或其任何组合。作为响应,智能手机414可以将输入连同对应的游戏状态信息一起传送到游戏服务器410。虽然仅描绘了一个智能手机414和一个网络412,但多个用户可以使用多个智能手机414通过多个网络412连接到游戏服务器410。多个用户可以位于一处并通过同一网络412连接,或者他们可以位于不同的位置并通过不同的网络412连接。该多个用户可以在玩同一多玩家游戏,或者他们可以在玩不同的游戏(即,游戏服务器410可以运行虚拟游戏控制台的多个实例)。游戏服务器410可以向多个智能手机414传送视频帧和游戏状态信息。
61.在第二示例场景中,游戏服务器420可以主控多玩家联网游戏服务器,该多玩家联网游戏服务器允许远程用户通过使用视频游戏控制台424作为客户端通过网络422玩游戏。游戏服务器420和视频游戏控制台424可以连接到网络422。视频游戏控制台424可以连接到显示器426,诸如监视器或电视机,并且还连接到视频游戏控制器428。网络422可以是局域网、广域网、有线网络、无线网络、蜂窝网络、wi-fi网络、蓝牙网络、因特网、用于交换数据的任何其他网络、或其组合。取决于速度、带宽、距离、利用率、可靠性和其他因素,网络422可能导致游戏服务器420和视频游戏控制台424之间的通信延迟。
62.在该第二示例场景中,游戏服务器420可以对虚拟游戏环境进行建模。在一个实现中,游戏服务器420可以通过网络422向视频游戏控制台424发送虚拟游戏环境信息。视频游戏控制台424可以基于从游戏服务器420接收的虚拟游戏环境信息生成视频帧,然后在显示器426上向用户显示这些视频帧。在替换环境中,游戏服务器420可以基于虚拟游戏环境生成视频帧,并将这些视频帧(即流)传送到视频游戏控制台424。视频游戏控制台424可以从游戏服务器420接收视频帧,并在显示器426上向用户显示这些视频帧。
63.在该第二示例场景中,游戏服务器420还可以向视频游戏控制台424传送游戏状态信息。视频游戏控制台424可经由视频游戏控制器428接收来自用户的输入。例如,用户可以
通过如下来提供输入:按下或按住按钮;移动或按下操纵杆;倾斜、旋转或晃动视频游戏控制器428;或其任何组合。作为响应,视频游戏控制台424可以将输入连同对应的游戏状态信息一起传送到游戏服务器420。虽然仅描绘了一个视频游戏控制台424和一个网络422,但多个用户可以使用多个视频游戏控制台424通过多个网络422连接到游戏服务器420,其中游戏服务器420可以运行多玩家网络游戏。多个视频游戏控制台424可以使用同一网络422或不同的网络422来连接到游戏服务器420。
64.在第三示例场景中,可以分别类似于第一示例场景中的游戏服务器410、网络412和智能手机414来设置游戏服务器430、第一网络432和智能手机434。在该第三示例场景中,作为用户使用智能手机434提供输入的补充或替换,用户可以使用无线视频游戏控制器438提供输入。用户可以按与第二示例场景中的视频游戏控制器428类似的方式操作无线视频游戏控制器438。无线视频游戏控制器438可以通过第二网络436与智能手机434通信。第二网络436可以是局域网、广域网、有线网络、无线网络、蜂窝网络、wi-fi网络、蓝牙网络、因特网、用于交换数据的任何其他网络、或其组合。例如,游戏服务器430可以位于数据中心,智能手机434可以位于用户家中并连接到用户家中的wi-fi网络,第一网络432可以是连接数据中心中的游戏服务器430和用户家中的智能手机434的因特网,且第二网络436可以是连接智能手机434和无线视频游戏控制器438的蓝牙网络。取决于速度、带宽、距离、利用率、可靠性和其他因素,第一网络432和/或第二网络436可能导致游戏服务器430、智能手机434和无线视频游戏控制器438之间的通信延迟。
65.在该第三示例场景中,游戏服务器430可以对虚拟游戏环境进行建模,并经由第一网络432将对应的视频帧(即流)传送到智能手机434。游戏服务器430还可以向智能手机434传送游戏状态信息。智能手机434可以从游戏服务器430接收视频帧,并向用户显示该视频帧。此外,智能手机434可以通过第二网络436向无线视频游戏控制器438转发游戏状态信息(即,中继或传送其副本)。无线视频游戏控制器438可以接收来自用户的输入。作为响应,无线视频游戏控制器438可以将输入连同对应的游戏状态信息一起通过第二网络436传送到智能手机434。作为响应,智能手机434可以将输入连同对应的游戏状态信息一起转发到游戏服务器430(即,中继或传送其副本)。
66.虽然仅描绘了一个无线视频游戏控制器438和一个第二网络436,但多个用户可以使用多个无线视频游戏控制器438通过第二网络436连接到智能手机434。多个用户可以位于同一处并通过同一第二网络436连接,或者他们可以位于不同的位置并通过不同的第二网络436连接。智能手机434可以将游戏状态信息传送到多个无线视频游戏控制器438。
67.在第四示例场景中,可以分别类似于第一示例场景中的游戏服务器410、网络412和智能手机414;或者分别类似于在第二示例场景中的游戏服务器420、网络422和视频游戏控制台424来设置游戏服务器440、第一网络441和个人计算机442。即,用户可以使用个人计算机442作为通过第一网络441连接到游戏服务器440以玩游戏服务器440主控的视频游戏的客户端。个人计算机442可包括显示器443。用户可操作无线鼠标445以提供输入。在替换实现中,用户可操作无线操纵杆、无线虚拟现实控制器或任何其他具备网络能力的设备以提供输入。无线鼠标445可以通过第二网络444与个人计算机442通信。第二网络444可以是局域网、广域网、有线网络、无线网络、蜂窝网络、wi-fi网络、蓝牙网络、因特网、用于交换数据的任何其他网络、或其组合。例如,游戏服务器440可以位于数据中心中,个人计算机442
可以位于用户家中,第一网络441可以是连接数据中心中的游戏服务器440和用户家中的个人计算机442的因特网,且第二网络444可以是连接个人计算机441和无线鼠标445的蓝牙网络。取决于速度、带宽、距离、利用率、可靠性和其他因素,第一网络441和/或第二网络444可能导致游戏服务器440、个人计算机442和无线鼠标445之间的通信延迟。
68.在该第四示例场景中,游戏服务器440可以对虚拟游戏环境进行建模。在一个实现中,游戏服务器440可以通过第一网络441向个人计算机442发送虚拟游戏环境信息。个人计算机442可以基于从游戏服务器440接收的虚拟游戏环境信息生成视频帧,并且随后在显示器443上向用户显示这些视频帧。在替换环境中,游戏服务器440可以基于虚拟游戏环境生成视频帧,并将这些视频帧(即流)传送到个人计算机442。个人计算机442可以从游戏服务器440接收视频帧,并在显示器443上向用户显示该视频帧。
69.在该第四示例场景中,游戏服务器440还可以通过第一网络441向个人计算机442传送游戏状态信息。此外,个人计算机442可以通过第二网络444向无线鼠标445转发游戏状态信息(即,中继或传送其副本)。无线鼠标445可以接收来自用户的输入。作为响应,无线鼠标445可以将输入连同对应的游戏状态信息一起通过第二网络444传送到个人计算机442。作为响应,个人计算机442可以将输入连同对应的游戏状态信息一起转发到游戏服务器440(即,中继或传送其副本)。
70.在第五示例场景中,多玩家游戏服务器450可以连接到第一网络451。多玩家游戏服务器450可以主控多玩家游戏(例如,类似于第二示例场景中的游戏服务器420),其允许远程用户通过使用物理视频游戏控制台(例如,第二示例场景中的视频游戏控制台424)或者虚拟视频游戏控制台(例如,第一示例场景中的游戏服务器410)作为客户端通过第一网络451玩该多玩家游戏。在该第五示例场景中,虚拟游戏控制台服务器452可以连接到第一网络451以与多玩家游戏服务器450通信。虚拟游戏控制台服务器452可以运行虚拟游戏控制台,该虚拟游戏控制台允许远程用户使用该虚拟游戏控制台玩多玩家游戏,如同她坐在起居室中的物理游戏控制台前一样。虚拟游戏控制台服务器452可以连接到第二网络453。用户可以使用智能手机454作为客户端(关于虚拟游戏控制台服务器452),其可以通过第二网络453连接到虚拟游戏控制台服务器452以玩在多玩家游戏服务器450上运行的多玩家游戏。此外,用户可以使用无线视频游戏控制器456提供输入。用户可以按与第二示例场景中的视频游戏控制器428类似的方式操作无线视频游戏控制器438。无线视频游戏控制器456可以通过第三网络455与智能手机454通信。
71.第一网络451、第二网络453和/或第三网络455可以是局域网、广域网、有线网络、无线网络、蜂窝网络、wi-fi网络、蓝牙网络、因特网、用于交换数据的任何其他网络、或其组合。取决于速度、带宽、距离、利用率、可靠性和其他因素,第一网络451、第二网络453和/或第三网络455可能导致多玩家游戏服务器450、虚拟游戏控制台服务器452、智能手机454和无线视频游戏控制器456之间的通信延迟。
72.在该第五示例场景中,多玩家游戏服务器450可以对虚拟游戏环境进行建模。在一个实现中,多玩家游戏服务器450可以通过第一网络451向虚拟游戏控制台服务器452传送虚拟游戏环境信息。虚拟游戏控制台服务器452可以基于从多玩家游戏服务器450接收到的虚拟游戏环境信息生成视频帧,并随后通过第二网络453将视频帧(即流)传送到智能手机454以显示给用户。在替换环境中,多玩家游戏服务器450可以基于虚拟游戏环境生成视频
帧,并将这些视频帧(即流)传送到虚拟游戏控制台服务器452。虚拟游戏控制台服务器452可以将从多玩家游戏服务器450接收到的视频帧转发到智能手机454以显示给用户(即,中继或传送其副本)。
73.在该第五示例场景中,多玩家游戏服务器450还可以向虚拟游戏控制台服务器452传送游戏状态信息。虚拟游戏控制台服务器452可以向智能手机454转发游戏状态信息(即,中继或传送其副本)。智能手机454可以通过第三网络455向无线视频游戏控制器456转发游戏状态信息(即,中继或传送其副本)。无线视频游戏控制器456可以接收来自用户的输入。作为响应,无线视频游戏控制器456可以将输入连同对应的游戏状态信息一起通过第三网络455传送到智能手机454。作为响应,智能手机454可以将输入连同对应的游戏状态信息一起转发到虚拟游戏控制台服务器452(即,中继或传送其副本)。作为响应,虚拟游戏控制台服务器452可以将输入连同对应的游戏状态信息一起转发到多玩家游戏服务器450(即,中继或传送其副本)。
74.在图4的五个示例场景中,对虚拟游戏环境进行建模的服务器(即,游戏服务器410、游戏服务器420、游戏服务器430、游戏服务器440或多玩家游戏服务器450)可以传送一系列游戏状态信息,并且可以接收输入连同对应的游戏状态信息。此外,用户用来提供输入的设备(即,智能手机414、无线视频游戏控制器438、无线鼠标445或无线视频游戏控制器456)可以接收一系列游戏状态信息,并且可以将输入连同对应的游戏状态信息一起传送(或者,在视频游戏控制器428的情况下,用户用来提供输入的设备没有与通过网络接收游戏状态信息的设备分开)。相应地,在对虚拟游戏环境进行建模的服务器和用户用来提供输入的设备之间的一个或多个网络引起的延迟影响可以被消除。此外,虽然上面提供的场景涉及服务器和客户端,但是本概念可以实现在对等场景中,其中多个对等用户由延迟分开。
75.图5示出了解说与本概念一致的示例延迟消除服务器方法500。例如,游戏服务器410、游戏服务器420、游戏服务器430、游戏服务器440和/或多玩家游戏服务器450可以实现延迟消除服务器方法500。
76.在动作502中,服务器可以对环境进行建模。取决于上下文,服务器可以对现实环境或虚拟环境进行建模。例如,视频游戏服务器可以对包括虚拟对象的虚拟视频游戏环境进行建模。在一些实现中,服务器可以随时间推移在各种状态中对环境进行建模。例如,视频游戏角色或视频游戏对象可能会随时间而改变位置。
77.在动作504中,服务器可以生成状态信息。状态信息的内容可包括关于环境的一些信息。例如,状态信息可以包括视频游戏角色的位置坐标。与本概念一致,状态信息可包括与处理可从用户接收的输入相关或所需要的信息。
78.在动作506中,服务器可以向客户端传送状态信息。服务器和客户端可以由网络分开,使得两者之间的通信涉及延迟。在一些实现中,服务器可以向客户端传送状态信息的内容(例如,视频游戏角色的位置坐标)。在其他实现中,服务器可以向客户端传送与状态信息的内容相关联的令牌,同时服务器存储该内容和相关联的令牌。
79.在一些实现中,随着服务器继续对变化的环境进行建模、生成与变化的环境一致的一系列状态信息、并将该系列状态信息(无论是内容还是令牌)传送给客户端,动作502、504和/或506中的一者或多者可以重复。服务器还可以在执行动作502、504和/或506时执行其他功能。例如,服务器可能正在生成关于环境的其他信息并将其传送给客户端,诸如视频
帧、音频、触觉反馈等。
80.在动作508中,服务器可以从客户端接收输入连同状态信息。输入可以是由与客户端交互的用户提供的,以引起由服务器建模的环境中的变化。例如,用户可以在玩由服务器主控的视频游戏时提供用于改变视频游戏角色的输入。服务器从客户端接收的状态信息可以是客户端从服务器接收的最新状态信息。或者,与客户端从服务器接收的最新状态信息相比,服务器从客户端接收的状态信息可能对应于环境的较旧状态。
81.在动作510中,服务器可以基于与输入一起从客户端接收的状态信息来处理输入。即,并非基于服务器接收到输入时的环境状态来处理输入,服务器可以响应于该输入根据与从客户端接收到的状态信息相对应的环境的先前状态来操纵环境。相应地,服务器可对输入做出反应,就好像输入是在比实际被接收的时间更早的时间接收到一样。因此,可以减少或消除用户通常通过传统技术感知到的延迟反应。
82.图6示出了解说与本概念一致的延迟消除客户端方法600。例如,智能手机414、视频游戏控制台424、无线视频游戏控制器438、无线鼠标445、无线视频游戏控制器456可以实现延迟消除客户端方法600。延迟消除服务器方法500和延迟消除客户端方法600可以一起执行以实现本概念。
83.在动作602中,客户端可以从服务器接收状态信息。例如,服务器可以对其状态变化的环境进行建模,并且服务器可以生成传送到客户端的一系列状态信息。客户端接收的状态信息可以包括内容(诸如,关于环境的信息),或者它可以是与存储在服务器中的内容相关联的令牌。客户端和服务器可以通过网络连接,使得客户端和服务器之间的通信存在延迟。
84.在一些实现中,客户端还可以从服务器接收环境信息,诸如视频帧、音频、触觉反馈,等等。客户端可以向用户输出此类环境信息,使得用户可以与环境交互。
85.在动作604中,客户端可以接收来自用户的输入。例如,用户可以在玩由服务器主控的视频游戏时提供输入。客户端本身可具有供用户提供输入的机制,诸如按钮、触摸屏、操纵杆,等等。此外,客户端可连接到用户可用来提供输入的输入设备。输入设备可以物理地连接到客户端,或者可以经由有线或无线地可通信地耦合到客户端。
86.在动作606中,客户端可以将输入连同对应的状态信息一起传送到服务器。从客户端传送到服务器的状态信息可以对应于该输入,因为该状态信息是客户端从用户接收到输入时从服务器接收到的一系列状态信息中的最新的。或者,从客户端传送到服务器的状态信息可以对应于该输入,因为该状态信息对应于在客户端接收到来自用户的输入时输出给用户的环境信息。与本概念的一些实现一致,客户端不必一定解释该状态信息。客户端可以从服务器接收一系列状态信息,并且响应于接收到来自用户的输入,客户端可以将该输入连同最新状态信息一起传送到服务器。状态信息可以被加密。客户端可不必解密状态信息。
87.图7示出延迟消除系统700的示例配置,其中可以使用本概念的一些实现。出于解释的目的,示例延迟消除系统700包括设备702。设备702的示例可包括传统的计算设备,诸如个人计算机、台式计算机、服务器、笔记本计算机、蜂窝电话、智能电话、个人数字助理、平板型计算机、移动计算机、相机、电器、虚拟现实头戴式耳机、视频游戏控制台、控制器、智能设备、iot设备、车辆等,和/或无数不断演进或有待开发的类型的计算设备中的任一者。
88.在图7所示的示例中,设备702可以包括服务器设备702(1)(或服务器的集合)、膝
上型设备702(2)、视频游戏控制台702(3)和智能手机702(4)。出于解释的目的,设备702(1)可以被视为服务器侧设备704(或基于云的资源),并且设备702(2)-702(4)可以被视为客户端侧设备706(或客户端设备)。所描述和描绘的设备的数量以及设备的客户端对服务器侧旨在是说明性的和非限制性的。设备702可以经由一个或多个网络708彼此通信和/或可以通过一个或多个网络708访问因特网。
89.如本文中所使用的术语“设备”或“计算设备”可意指具有一定量的处理能力和/或存储能力的任何类型的设备。处理能力可由一个或多个硬件处理器提供,这些处理器可执行计算机可读指令形式的数据以提供功能。数据(诸如计算机可读指令和/或用户相关的数据)可被储存在存储上,诸如对设备而言可以是内部或外部的存储。存储可包括易失性或非易失性存储器、硬盘驱动器、闪存设备、和/或光存储设备(例如,cd、dvd等)、远程存储(例如,基于云的存储)等等中的任何一者或多者。如本文中所使用的,术语“计算机可读介质”可包括暂时传播信号。相反,术语“计算机可读存储介质”排除暂时传播信号。计算机可读存储介质可包括“计算机可读存储设备”。计算机可读存储设备的示例可包括诸如ram之类的易失性存储介质、诸如硬盘驱动器、光盘和闪存存储器之类的非易失性存储介质,以及其他。
90.在一些实现中,服务器侧设备704可以执行延迟消除服务器方法500,并且一个或多个客户端设备706可以执行延迟消除客户端方法600,例如,以消除或减少由网络708引起的延迟的某些影响。服务器侧设备704可以对环境建模。客户端侧设备706中的一者或多者可以接收来自用户的输入,并将该输入传送到服务器侧设备704。例如,服务器侧设备704可以对虚拟视频游戏环境进行建模,并且用户可能正使用客户端侧设备706中的一者或多者玩视频游戏。与本概念一致,服务器侧设备704可以向客户端侧设备706传送关于环境的一系列状态信息,并且客户端侧设备706可以将该状态信息连同输入一起返回给服务器侧设备704。
91.图7示出了可由任何或所有设备702采用的两种设备配置710(1)和710(2)。各个体设备702可采用配置710(1)或710(2)中的任一者,或者替换配置。图7中解说了每一配置710的一个实例。简言之,设备配置710(1)可表示以操作系统(os)为中心的配置。配置710(2)表示片上系统(soc)配置。配置710(1)可被组织成一个或多个应用712、操作系统714和硬件716。配置710(2)可被组织成共享资源718、专用资源720以及其间的接口722。
92.在任一配置710中,设备702可包括存储724和处理器726。设备702还可包括延迟消除器728。例如,服务器侧设备704中的延迟消除器728可以实现延迟消除服务器方法500,而客户端侧设备706中的延迟消除器728可以实现延迟消除客户端方法600。
93.如上所述,配置710(2)可被认为是片上系统(soc)型设计。在这样的情况下,设备所提供的功能可被集成在单个soc或多个经耦合的soc上。一个或多个处理器726可被配置成与共享资源718(诸如存储724等),和/或与一个或多个专用资源720(诸如被配置成执行某些特定功能的硬件块)进行协调。因此,本文中所使用的术语“处理器”还可指代中央处理单元(cpu)、图形处理单元(gpu)、控制器、微控制器、处理器核或其他类型的处理设备。
94.一般而言,本文中所描述的任何功能可使用软件、固件、硬件(例如,固定逻辑电路系统)或这些实现的组合来实现。如本文中所使用的术语“组件”一般表示软件、固件、硬件、整个设备或网络,或其组合。例如在软件实现的情况下,这些可以表示当在处理器(例如,一
个或多个cpu)上执行时执行指定任务的程序代码。程序代码可被储存在一个或多个计算机可读存储器设备中,诸如计算机可读存储介质。组件的各特征和技术是平台无关的,从而意味着它们可在具有各种处理配置的各种商用计算平台上实现。
95.虽然出于解说的目的,在视频游戏的上下文中解释了以上提供的本概念的许多示例实现,但是本概念具有各种各样的应用。例如,可以在虚拟现实环境和增强现实环境以及可以由计算机建模并由具有延迟的用户远程观察和操纵的现实生活环境的上下文中消除延迟的影响。
96.在上文中描述了各个示例。尽管用结构特征和/或方法动作专用的语言描述了本主题,但所附权利要求书中定义的主题不必限于上述特定特征或动作。相反,上述特定特征和动作是作为实现权利要求书的示例形式而呈现的,并且由本领域技术人员认可的其他特征和动作旨在落在权利要求书的范围之内。