用于数据传输路径选择的数据层次结构协议的制作方法

文档序号:31700134发布日期:2022-10-01 07:43阅读:64来源:国知局
用于数据传输路径选择的数据层次结构协议的制作方法
用于数据传输路径选择的数据层次结构协议
1.相关申请的交叉引用
2.本技术要求于2019年12月20日提交的美国临时申请号62/951,926的权益,该申请的全部内容通过引用并入本文。
技术领域
3.本公开涉及计算机网络协议,并且具体地涉及用于在彼此物理接近的设备之间提供低时延无线通信的协议。


背景技术:

4.计算机网络是交换数据的互连的计算设备集合,诸如互联网。通信协议(诸如用户数据报协议(udp))定义了用于使用计算机网络交换数据的规则的系统。udp遵循无连接通信模型,没有数据报的受保证的传递、排序或非重复性。数据报是用于通信的基本单位,并且包括报头和有效负载。报头是指定数据报的方面的元数据,诸如源端口、目的地端口、数据报的长度和数据报的校验和。有效负载是由数据报传送的数据。使用udp通信的计算设备经由计算机网络相互传输数据报。
5.无连接通信协议(诸如udp)通常具有比面向连接的通信协议(诸如传输控制协议(tcp))低的开销和时延,后者在传输数据之前在计算设备之间建立连接。然而,现有的无连接通信协议不适用于需要比由现有技术所适应的时延少的数据传送。例如,以60帧每秒(fps)流式传输的增强现实(ar)环境可能需要比由当前技术提供的时延低一个数量级的时延。在这样的ar环境中,帧可能以大约十六毫秒的间隔被隔开,而当前的网络协议通常提供大约一百毫秒(或更多)的时延。
6.因此,利用现有技术,用户在ar环境中交互时可能会遇到某种程度的时延。这种时延可能会引起与ar定位数据的旧状态的交互。例如,在平行现实游戏中,玩家可能会在旧位置(例如,该对象在100毫秒之前的位置)看到ar对象,而ar定位数据实际上具有针对该对象的新位置(例如ar对象已被另一玩家移动)。客户端与托管或协调平行现实游戏的服务器之间的通信中的时延可能会引起令人沮丧的用户体验。当多于一个的用户参与平行现实游戏时,这个问题可能特别严重,因为时延可能会引起出现在其他玩家的ar环境视图中的一个玩家的动作之间的明显延迟。此外,随着玩家数目的增加,由于延迟引起的不匹配会进一步加剧。


技术实现要素:

7.增强现实(ar)系统利用计算机生成的内容补充现实世界的视图。将ar融入平行现实游戏可能会改善现实世界和虚拟世界之间的整合。ar还可以通过为玩家提供参与他们交互的共享游戏体验的机会来增加玩家之间的交互性。例如,在坦克战游戏中,玩家可能会在真实世界的位置周围导航虚拟坦克,试图摧毁彼此的坦克。坦克的移动可能会受到现实世界地理的限制(例如,坦克在河流中移动得较慢、在道路上移动得较快、不能移动穿过墙壁
等)。
8.现有的ar会话技术涉及服务器维护主状态并经由网络(例如,互联网)周期性地将客户端处的环境的本地状态同步到主状态。然而,同步设备的本地状态可能花费大量时间(例如,~100毫秒),这不利于游戏体验。玩家实际上是在与过去的游戏状态而不是当前的游戏状态交互。当多于一个的用户参与平行现实游戏时,这个问题可能会特别严重,因为时延会引起出现在其他玩家的视图中的一个玩家的动作之间的明显延迟。例如,如果一个玩家在世界中移动了一个ar对象,其他玩家可能直到一百毫秒(或更多)之后才看到它已经移动,这是人类可感知的延迟。因此,另一个玩家可能会尝试与先前位置的对象交互,并在游戏纠正时延时感到沮丧(例如,通过拒绝实现由玩家请求的动作或最初实现该动作,然后在玩家的客户端下一次与服务器同步时撤销它)。
9.这个和其他问题可以通过实现优化一个或多个设备如何处理数据报的数据流层次结构协议来解决。数据流层次结构包括用于数据流的各种网络路径。实现数据流层次结构的设备可以利用网络路径种的一个或多个网络路径来确保与其他设备进行数据通信的低时延。在一些实施例中,设备对各种网络路径进行采样以确定用于在通过中间节点的数据通信中使用的最小时延的网络路径。各种网络路径可以包括通过一个或多个中间节点的路径,诸如通过游戏服务器的路径、通过小区塔的路径和通过网络的路径。网络路径还可以包括设备之间的直接连接(例如,使用蓝牙)。使用数据流层次结构协议可以将时延改善到毫秒数量级,例如,小于5毫秒。此外,数据流层次结构可以根据带宽可用性来优化带宽使用。
附图说明
10.图1示出了根据实施例的可以实现数据流层次结构协议的网络环境。
11.图2是示出根据一个实施例的客户端的框图。
12.图3是示出根据一个实施例的游戏服务器的框图。
13.图4是示出根据一个实施例的小区塔的框图。
14.图5示出了根据实施例的用于使用数据流层次结构协议的过程。
15.图6示出了根据实施例的用于在小区塔周围的地理区域内的客户端之间传输数据的过程。
16.图7是示出根据实施例的适合在图1所示的计算机网络内使用的示例计算机的高级框图。
17.附图和以下描述仅通过说明来描述某些实施例。本领域技术人员将从以下描述中容易地认识到,可以采用结构和方法的备选实施例而不背离所描述的原理。现在将参考几个实施例,其示例在附图中示出。在可行的情况下,在图中使用相似或类似的附图标记来指示相似或类似的功能。当元素共享一个共同的数字后跟一个不同的字母时,这些元素是相似的或相同的。单独的数字是指这些元素中的任何一个或任何组合。
具体实施方式
18.网络环境
19.如本文所公开的,数据流层次结构协议可以提供相对于先前方法减少的计算机网
络时延(例如,在一个实施例中,时延为~10毫秒)。图1图示了根据一个实施例的使用数据流层次结构协议通信的计算机网络100。为清楚起见,该图使用框图图示了一个简化示例。计算机网络100包括两个客户端110、游戏数据库115、游戏服务器120、小区塔130和局域网(lan)140。在其他一些实施例中,计算机网络可以包括较少、附加或其他组件,诸如附加客户端110、附加游戏服务器120、附加小区塔130或其他网络节点。客户端110与托管平行现实游戏的游戏服务器120通信。当玩家与平行现实游戏的其他玩家交互时,客户端110在平行现实游戏期间相互通信。
20.客户端110是计算设备,诸如个人计算机、膝上型计算机、平板计算机、智能手机等。客户端110可以使用数据流层次结构协议相互通信,例如,在玩平行现实游戏的同时。在一个实施例中,每个客户端110包括本地ar模块并且游戏服务器120包括主ar模块。每个本地ar模块将ar数据传送到其他客户端110上的本地ar模块和/或游戏服务器120上的主ar模块。客户端110将在图2中进一步描述。
21.游戏服务器120类似地是托管由各种客户端110玩的平行现实游戏的计算设备。游戏服务器120在客户端110之间建立连接以接收和传输平行现实游戏状态的信息。游戏服务器120在游戏数据库115中存储玩家简档、游戏状态、地图(真实和虚拟)以及与平行现实游戏相关的其他信息。游戏服务器120将在图3中进一步描述。
22.小区塔130是被配置用于客户端110之间的数据通信的网络。小区塔130可以支持客户端110之间的数据传送,例如,经由udp。在一个或多个实施例中,小区塔130具有本地ar模块,该模块被配置为帮助托管连接到小区塔130的客户端110之间的平行现实游戏。小区塔130可以将游戏状态共享给游戏服务器120,例如,周期性地或实时地。小区塔130在图4中进一步描述。
23.lan 140是客户端可以连接到的本地网络。lan 140包括客户端110可以连接到的一个或多个路由器。lan 140利用wi-fi和以太网操作。与小区塔130类似,lan 140可以包括本地ar模块,该模块被配置为帮助托管连接到lan的客户端110之间的平行现实游戏。lan 140同样可以与游戏服务器120共享游戏状态。
24.客户端110可以使用数据流层次结构协议或其他实施例中的其他协议相互通信。为了相互通信,两个或更多个客户端经由一个或多个路径传输数据。如图1所示,在客户端110a和客户端110b之间的计算机网络110中存在三个路径。在第一路径中,客户端110可以经由游戏服务器120彼此通信,例如使用tcp。在第二路径中,客户端110可以经由小区塔130彼此通信,例如,使用tcp或udp。在第三路径中,客户端110可以经由lan 140彼此通信,例如,使用tcp或udp。在其他一些实施例(未示出)中,客户端之间可能存在用于通信的其他路径,例如,经由以太网、蓝牙、近场通信(nfc)等。在这些路径中的每个路径中,客户端110经由中间节点通信,例如,游戏服务器120、小区塔130或lan 140。数据流层次结构协议评估客户端110之间的可用通信路径并且优化在客户端110之间传送数据时使用的一个或多个路径。
25.在一个实施例中,客户端110通信可以通过游戏服务器120或对等网络(peer-to-peer,p2p)来路由。通过游戏服务器120路由的通信可以从第一客户端110a经由小区塔130到达游戏服务器120,并且然后通过小区塔130返回到第二客户端110b。与之相对照,p2p通信可以从第一客户端110a到小区塔130,并且然后直接到第二客户端120b。请注意,在某些
情况下,通信可能会通过其他中间设备,诸如信号提升器。如本文所使用的,如果通信被路由到目标客户端110b而不通过游戏服务器120,则该通信被认为是p2p的。例如,如果目标客户端110b与发送客户端110a连接到相同的小区塔130,则消息(例如,数据报)可以p2p地被发送,否则消息经由游戏服务器120被路由。与发送客户端110a相同的蜂窝塔130,否则通过游戏服务器120路由。在另一实施例中,客户端110完全使用p2p通信。此外,在一些实施例中,udp打洞或用于涉及网络地址转换(nat)的p2p通信的其他技术可以用于在两个或更多个客户端110之间建立连接。
26.在一个实施例中,客户端110使用(例如,托管在游戏服务器120处并经由tcp通信的)协调服务来同步ip地址。然后客户端110可以使用面向公众的ip地址或lan 140(例如,经由udp)通信。例如,第一客户端110a可以经由tcp向协调服务发送请求以加入本地ar共享环境。协调服务可以向第一客户端110a提供(例如,经由相同的小区塔130)连接到ar环境的第二客户端110b的ip地址。协调服务还可以向第二客户端110b提供第一客户端的ip地址,或者第一客户端110a可以直接使用第二客户端的ip地址来提供它(如由协调服务提供)。在一些实施例中,协调服务可以在提供第二客户端的ip地址之前提示第二客户端110b批准第一客户端110a(例如,通过请求用户确认或检查受批准与第二客户端110b连接的客户端110的列表)。
27.在一个实施例中,客户端110经由udp与面向公众的ip地址通信,并且通信利用公钥密码学来被保护。在特定实施例中,实现椭圆曲线密码学(ecc)。ecc使用作为单向和确定性函数的有限域上的椭圆曲线来加密要被公开提供给其他计算系统和网络的私钥。ecc优于其他公钥密码学方法的一个好处是ecc是一种较简单的函数,允许较小的密钥大小,从而减少带宽使用。
28.客户端
29.图2是根据实施例的客户端110的框图。客户端110可以是可以由玩家使用以与游戏服务器120接口的任何便携式计算设备。例如,客户端110可以是无线设备、个人数字助理(pda)、便携式游戏设备、蜂窝电话、智能手机、平板电脑、导航系统、手持gps系统、可穿戴计算设备、具有一个或多个处理器的显示器或其他此类设备。在另一实例中,客户端110包括传统的计算机系统,诸如台式或膝上型计算机。然而,客户端110可以是具有计算设备的交通工具。简而言之,客户端110可以是能够使玩家与游戏服务器120交互的任何计算机设备或系统。作为计算设备,客户端110可以包括一个或多个处理器和一个或多个计算机可读存储介质。计算机可读存储介质可以存储使处理器执行操作的指令。客户端110优选地是便携式计算设备,其可以容易地被玩家携带或以其他方式运输,诸如智能手机或平板电脑。
30.客户端110与游戏服务器120通信以向游戏服务器120提供物理环境的感测数据。客户端110包括相机组件210,相机组件210在客户端110所在的物理环境中的场景的二维中捕获图像数据。客户端110还包括深度估计模型130,其是机器学习模型,例如由游戏服务器120训练的机器学习模型。如图1所示的实施例中,每个客户端110包括软件组件,诸如游戏模块220和定位模块230。客户端110可以包括用于从玩家接收信息和/或向玩家提供信息的各种其他输入/输出设备。示例输入/输出设备包括显示屏、触摸屏、触摸板、数据输入键、扬声器和适用于语音识别的麦克风。客户端110还可以包括用于记录来自客户端110的数据的其他各种传感器,包括但不限于运动传感器、加速度计、陀螺仪、其他惯性测量单元(imu)、
气压计、定位系统、温度计、光传感器等。客户端110还可以包括用于通过网络105提供通信的网络接口。网络接口可以包括用于与一个或多个网络接口的任何合适的组件,包括例如发射器、接收器、端口、控制器、天线或其他合适的组件。
31.相机组件210捕获客户端110所在环境的场景的图像数据。相机组件210可以以不同的捕获速率利用具有不同颜色捕获范围的各种不同的光传感器。相机组件210可以包含广角镜头或远摄镜头。相机组件210可以被配置为捕获单个图像或视频作为图像数据。此外,相机组件210的取向可以平行于地面,相机组件210对准地平线。相机组件210捕获图像数据并且与客户端110上的计算设备共享图像数据。图像数据可以附加有描述图像数据的其他细节的元数据,包括感测数据(例如温度、环境的亮度)或捕获数据(例如曝光、暖度、快门速度、焦距、拍摄时间等)。相机组件210可以包括可以捕获图像数据的一个或多个相机。在一个实例中,相机组件210包括一个相机并且被配置为捕获单目图像数据。在另一实例中,相机组件210包括两个相机并且被配置为捕获立体图像数据。在各种其他实现中,相机组件210包括多个相机,每个相机被配置为捕获图像数据。
32.游戏模块220为玩家提供参与平行现实游戏的接口。游戏服务器120将游戏数据传输给客户端110以供客户端110处的游戏模块220使用,以向远离游戏服务器120的位置处的玩家提供游戏的本地版本。游戏服务器120可以包括用于用于提供图1中描述的各种路径的通信的网络接口。网络接口可以包括用于与一个或多个网络进行接口的任何合适的组件,包括例如发射器、接收器、端口、控制器、天线或其他合适的组件。
33.由客户端110执行的游戏模块220提供玩家和平行现实游戏之间的接口。游戏模块220可以在与客户端110相关联的显示设备上呈现用户接口,该显示设备显示与游戏相关联的虚拟世界(例如渲染虚拟世界的图像)并允许用户在虚拟世界中交互以执行各种游戏目标。在一些其他实施例中,游戏模块220呈现(例如,由相机组件210捕获的)来自现实世界的图像数据,该图像数据被来自平行现实游戏的虚拟元素增强。在这些实施例中,游戏模块220可以根据从客户端的其他组件接收到的其他信息来生成虚拟内容和/或调整虚拟内容。例如,游戏模块220可以根据在图像数据中捕获的场景的深度图(例如,由深度估计模型130确定的)来调整要在用户接口上被显示的虚拟对象。
34.游戏模块220还可以控制各种其他输出以允许玩家与游戏交互而不需要玩家查看显示屏。例如,游戏模块220可以控制允许玩家在不看显示屏的情况下玩游戏的各种音频、振动或其他通知。游戏模块220可以访问从游戏服务器120接收的游戏数据以向用户提供游戏的准确表示。游戏模块220可以接收和处理玩家输入并且通过网络105向游戏服务器120提供更新。游戏模块220还可以生成和/或调整要由客户端110显示的游戏内容。例如,游戏模块220可以基于(例如,由深度估计模型130确定的)深度信息来生成虚拟元素。
35.定位模块230可以是用于监测客户端110的定位的任何设备或电路系统。例如,定位模块230可以通过使用卫星导航定位系统(例如gps系统、伽利略定位系统、全球导航卫星系统(glonass)、北斗卫星导航和定位系统)、惯性导航系统、航位推算系统、基于ip地址、通过使用三角测量和/或到小区塔或wi-fi热点的接近性和/或用于确定定位的其他合适技术来确定实际或相对定位。定位模块230还可以包括可以帮助准确定位客户端110位置的各种其他传感器。在一些实施例中,客户端110在本地存储平行现实游戏中所使用的地图的一部分。定位模块230可以相对于本地存储的地图定位客户端110。定位模块230还可以周期性地
将本地存储(或缓存)的地图与由游戏服务器120维护的地图数据同步。
36.当玩家在现实世界中随着客户端110四处移动时,定位模块230跟踪玩家的定位并将玩家定位信息提供给游戏模块220。游戏模块220基于玩家在现实世界中的实际定位来更新与游戏相关联的虚拟世界中的玩家定位。因此,玩家可以简单地通过在现实世界中携带或运输客户端110来与虚拟世界交互。特别地,玩家在虚拟世界中的位置可以与玩家在现实世界中的位置相对应。游戏模块220可以通过网络105向游戏服务器120提供玩家定位信息。作为响应,游戏服务器120可以制定各种技术来验证客户端110位置,以防止作弊者欺骗客户端110位置。应该理解,与玩家相关联的位置信息只有在玩家已经被通知玩家的位置信息要被访问以及位置信息将如何在游戏的上下文中被利用(例如更新玩家在虚拟世界中的定位)之后许可被授予的情况下才被利用。此外,与玩家相关联的任何位置信息都将以保护玩家隐私的方式被存储和被维护。
37.数据流模块240与其他计算组件通信。数据流模块240可以使用任何类型的有线和/或无线连接、使用各种通信协议(例如tcp/ip、http、smtp、ftp)、编码或格式(例如html、xml、json)和/或保护方案(例如vpn、安全http、ssl)。
38.在一个或多个实施例中,数据流模块240与游戏服务器120通信。数据流模块240提供动作、对游戏状态的更新、针对各种内容项(例如,用于平行现实游戏)的请求或者到游戏服务器120的其他通信。数据流模块240建立与游戏服务器120的连接,例如,经由tcp。tcp提供传输数据的稳健方式。利用tcp,数据流模块240可以在数据的传输期间检测丢失的分组并请求重新发送丢失的分组。此外,tcp允许重建无序接收的顺序分组以生成预期的消息。
39.数据流模块240还管理与一个或多个其他客户端110的通信。数据流模块240标识用于与另一客户端110通信的一个或多个路径。在给定时间对客户端110可用的路径可以包括以下任何项的组合:通过游戏服务器120的路径、通过小区塔130的路径、通过lan 140的路径、通过另一个网络的另一个路径、以及直接连接(例如,经由蓝牙)。数据流模块240实现数据流层次结构协议以选择一个或多个可用路径以用于在客户端110之间传输数据中使用。在具有单个可用路径的情况下,数据流层次结构协议指令经由唯一被标识的路径传输数据。
40.在具有多个可用路径的情况下,数据流层次结构协议选择可用路径中的一个或多个路径以改善通信数据的时延。数据流模块240计算可用路径的一个或多个度量(即,性能度量),该一个或多个度量指示通过可用路径的数据传输性能。度量包括时延(ping)、抖动、数据丢失、连接强度(连接的稳定性)、带宽、另一数据传输度量等。在一个实施例中,数据流层次结构协议选择具有最低时延的路径(或某个数目的路径)以用于传送数据。在其他一些实施例中,数据流层次结构协议考虑一个或多个其他度量作为时延的附加或备选。例如,数据流层次结构协议可以组合针对每个路径的一个或多个度量,以便确定针对每个路径的总体得分(即,路径得分)。路径得分可以用于对可用路径进行排名以及选择路径(例如,最高排名的路径)或多个路径(例如,某个数目的最高排名的路径)。
41.如果基于数据流层次结构协议选择了多个路径,则所选择的多个路径可以各自用于传输相同数据的单独副本以提高数据传输速率。但是,在这种情况下,需要权衡使用较多路径,因为经由不同路径发送相同数据的多个副本会增加带宽使用。在一些实施例中,数据流层次结构协议周期性地采样可用路径以重新评估哪个(哪些)路径对使用是最优的。例
如,数据流层次结构协议以固定间隔(例如,每30秒)评估可用路径,以确定用于在通信中使用的一个或多个路径的最优集合。数据流层次结构协议可以通过将数据传输给可用路径的端点(诸如从客户端110a到客户端110b)来采样可用路径。附加地或备选地,数据流层次结构协议可以通过将数据传输给连接到许多端点的中间节点来采样一个或多个可用路径,诸如从客户端110a到游戏服务器120或小区塔130。在一些实施例中,数据流层次结构协议选择用于在通信中使用的所有可用路径。数据流层次结构协议可以根据带宽可用性调整路径选择。例如,在高带宽可用性情况下,数据流层次结构协议可以指令选择所有可用路径。与之相对照,当带宽可用性有限时,数据流层次结构协议可以选择最优路径(例如,最低时延路径)。
42.在一些实施例中,数据流模块240加密在客户端之间被传输的数据,例如在平行现实游戏中的共享ar体验期间。数据流模块240可以实现各种密码学方法。在特定实现中,ecc被实现以保护客户端110之间的udp传输,例如,经由小区塔130或经由lan 140。
43.游戏服务器
44.图3是示出根据实施例的游戏服务器的框图。游戏服务器120可以是任何计算设备并且可以包括一个或多个处理器和一个或多个计算机可读存储介质。计算机可读存储介质可以存储使处理器执行操作的指令。游戏服务器120可以包括游戏数据库115或者可以与游戏数据库115通信。游戏数据库115存储在平行现实游戏中使用的游戏数据,以被供应或提供给(多个)客户端120。
45.被存储在游戏数据库115中的游戏数据可以包括:(1)与平行现实游戏中的虚拟世界相关联的数据(例如,用于在显示设备上渲染虚拟世界的图像数据、虚拟世界中位置的地理坐标等);(2)与平行现实游戏的玩家相关联的数据(例如玩家简档,包括但不限于玩家信息、玩家经验水平、玩家货币、当前玩家在虚拟世界/现实世界中的定位、玩家能量水平、玩家偏好、团队信息、派系信息等);(3)与游戏目标相关联的数据(例如与当前游戏目标、游戏目标的状态、过去游戏目标、未来游戏目标、期望的游戏目标等相关联的数据);(4)与虚拟世界中的虚拟元素相关联的数据(如虚拟元素的定位、虚拟元素的类型、与虚拟元素相关联的游戏目标;针对虚拟元素的对应的实际世界定位信息;虚拟元素的行为、虚拟元素的相关性等);(5)与现实世界对象、地标、与虚拟世界元素链接的定位相关联的数据(例如,现实世界对象/地标的位置、现实世界对象/地标的描述、链接到现实世界对象的虚拟元素的相关性等);(6)游戏状态(例如当前玩家的数目、游戏目标的当前状态、玩家排行榜等);(7)与玩家动作/输入相关联的数据(例如,当前玩家定位、过去玩家定位、玩家移动、玩家输入、玩家查询、玩家通信等);以及(8)在平行现实游戏的实现期间使用、相关或获取的任何其他数据。被存储在游戏数据库115中的游戏数据可以由系统管理员和/或由从客户端110接收的数据离线或实时填充。
46.游戏服务器120可以被配置为从客户端110接收针对游戏数据的请求(例如经由远程过程调用(rpc))并且响应于那些请求。例如,游戏服务器120可以将游戏数据编码在一个或多个数据文件中并且将数据文件提供给客户端110。此外,游戏服务器120可以被配置为从客户端110接收游戏数据(例如玩家定位、玩家动作、玩家输入等)。例如,客户端110可以被配置为周期性地向游戏服务器120发送玩家输入和其他更新,游戏服务器120使用这些玩家输入和其他更新来更新游戏数据库115中的游戏数据以反映任何和所有针对游戏的改变
的条件。
47.在所示实施例中,服务器120包括通用游戏模块310、数据收集模块320和事件模块330。如上所述,游戏服务器120与游戏数据库115交互,游戏数据库115可以是游戏服务器120的一部分或被远程访问(例如,游戏数据库115可以是通过网络访问的分布式数据库)。在其他一些实施例中,游戏服务器120包含不同的和/或附加的元素。此外,功能可以以不同于所描述的方式分布在元件之间。例如,游戏数据库115可以被集成到游戏服务器120中。
48.通用游戏模块310托管针对所有玩家的平行现实游戏,并且充当针对所有玩家的平行现实游戏的当前状态的权威来源。作为主机,通用游戏模块310生成游戏内容以呈现给玩家,例如,经由他们各自的客户端110。通用游戏模块310可以在托管平行现实游戏时访问游戏数据库115以获取和/或存储游戏数据。通用游戏模块310还从客户端110接收游戏数据(例如深度信息、玩家输入、玩家定位、玩家动作、地标信息等),并且将接收到的游戏数据合并到针对平行现实游戏的所有玩家的整体平行现实游戏中。通用游戏模块310还可以管理通过网络105向客户端110传递游戏数据。通用游戏模块310还可以管理客户端110的安全性方面,包括但不限于保护客户端110和游戏服务器120之间的连接、在各个客户端110之间建立连接以及验证各个客户端110的位置。
49.游戏服务器120还可以包括数据收集模块320。在包括一个数据收集模块320的实施例中,数据收集模块320可以与通用游戏模块310分开或者是通用游戏模块310的一部分。数据收集模块320可以管理在平行现实游戏内包含与现实世界中的数据收集活动链接的各种游戏功能。例如,数据收集模块320可以修改被存储在游戏数据库115中的游戏数据以包括与平行现实游戏中的数据收集活动链接的游戏特征。数据收集模块320还可以分析由玩家根据数据收集活动收集的数据,并且提供数据供各种平台访问。
50.事件模块330管理玩家对平行现实游戏中的事件的访问。尽管为方便起见使用了术语“事件”,但应当理解,该术语不必指代在特定位置或时间的特定事件。而是,它可以指访问受控制的游戏内容的任何规定,其中使用一个或多个访问标准来确定玩家是否可以访问该内容。这样的内容可以是较大的平行现实游戏的一部分,该游戏包括具有较少访问控制或没有访问控制的游戏内容,或者可以是独立的、访问受控制的平行现实游戏。
51.小区塔
52.图4是示出根据实施例的小区塔的框图。在所示实施例中,小区塔130包括路由模块410、数据摄取模块420、ar环境模块430、地图处理模块440、权限检查模块450和本地数据存储库460。小区塔130还包括用于建立与游戏服务器120和客户端110的连接以交换数据的硬件和固件或软件(未示出)。例如,小区塔130可以经由光纤或其他有线互联网连接来连接到游戏服务器120以及使用无线连接(例如,4g或5g)连接到客户端110。在其他一些实施例中,小区塔130可以包括不同的或附加的组件。此外,功能可以以不同于所描述的方式分布在元件之间。在一个或多个实施例中,lan 140可以包括与针对小区塔130所描述的模块类似的模块,使得lan同样可以帮助托管平行现实游戏。
53.路由模块410接收数据分组并且将那些分组发送给一个或多个接收设备。在一个实施例中,路由模块410从客户端110接收数据报,将接收到的数据报发送到适当的目的地。路由模块410还可以从服务器接收数据分组,该数据分组被定址到特定客户端110或连接到小区塔130的所有客户端。路由模块410将数据分组转发给它们被定址到的客户端110。在一
些实施例中,路由模块410接收指示由发送客户端110选择的用于路由数据分组的路径的信息(例如,数据分组内的信息),诸如直接到另一个客户端110或通过游戏服务器120。在这种情况下,路由模块410使用所选择的路径的数据分组。
54.数据摄取模块420从一个或多个源接收数据,小区塔130使用该数据经由连接的客户端110向玩家提供共享的ar体验。在一个实施例中,数据摄取模块420接收关于真实世界条件的实时或基本实时信息(例如,来自第三方服务)。例如,数据摄取模块420可以周期性地(例如,每小时)从天气服务接收天气数据,该天气数据指示小区塔周围的地理区域中的天气条件。作为另一个示例,数据摄取模块420可以取回针对公园、博物馆或其他公共空间的开放时间。作为又一示例,数据摄取模块420可以接收指示有多少交通工具正在小区塔130周围的地理区域中的道路上行驶的交通数据。关于现实世界条件的这种信息可以用于改善虚拟世界和现实世界之间的协同作用。
55.ar环境模块430管理ar环境,其中在小区塔130周围的地理区域中的玩家可以参与共享的ar体验。在一个实施例中,客户端110在执行平行现实游戏的同时连接到小区塔130,并且ar环境模块430将客户端连接到用于游戏的ar环境。连接到小区塔130的游戏的所有玩家可以共享单个ar环境,或者玩家可以被划分在多个ar环境中。例如,在特定的ar环境中可以有最大数目的玩家(例如,十、二十、一百等)。在存在多个ar环境的情况下,新连接的客户端110可以随机放置在会话中,或者客户端可以提供用户接口(ui)以使玩家能够选择加入哪个会话。因此,玩家可以选择与朋友一起参与ar环境。在一些实施例中,玩家可以建立访问受保护的私人ar环境(例如,需要密码或代码才能加入)。
56.在各种实施例中,为了使ar对象(例如,生物、交通工具等)看起来与现实世界的特征交互(例如,跳过障碍物而不是穿过它们),ar环境模块430向连接的客户端110提供表示客户端的附近的真实世界的地图数据(例如,被存储在本地数据存储库460中的)。ar环境模块430可以接收针对客户端110的位置数据(例如,gps位置)并且提供针对客户端周围的地理区域的地图数据(例如,在客户端当前定位的阈值距离内)。
57.接收到的地图数据可以包括现实世界的一个或多个表示。例如,地图数据可以包括点云模型、平面匹配模型、线匹配模型、地理信息系统(gis)模型、建筑物识别模型、景观识别模型等。地图数据还可以包括给定类型在不同细节水平上的多于一个的表示。例如,地图数据可以包括两个或更多个点云模型,每个包括不同数目的点。
58.客户端110可以将地图数据与由一个或多个传感器收集的数据相比较以精化客户端的位置。例如,通过将由客户端110上的相机捕获的图像映射到点云模型,客户端的位置和取向可以被准确地确定(例如,在一厘米和0.1度内)。客户端110将确定的位置和取向连同由玩家采取的任何动作(例如,射击、选择要与之交互的虚拟物品、放下虚拟物品等)一起提供回ar环境模块430。因此,ar环境模块430可以针对参与ar环境的所有玩家更新游戏的状态。
59.地图处理模块440基于当前条件(例如,来自数据摄取模块420的数据)更新地图数据。因为现实世界不是静态的,所以本地数据存储库460中的地图数据可能不表示当前的现实世界条件。例如,佛蒙特州的相同的公园小径在不同季节可能看起来非常不同。在夏天,小径可能会很干净,并且周围的树木会被树叶覆盖。与之对照,在冬天,小径可能会被积雪阻挡,并且树木可能光秃秃的。地图处理模块440可以变换地图数据以近似这种变化。
60.在一个实施例中,地图处理模块440取回当前条件数据以标识变换并且将该变换应用于地图数据。用于不同条件的转换可以由启发式规则定义,采取经训练的机器学习模型的形式,或者使用这两种方法的组合。例如,地图处理模块440可以接收当前天气条件数据,选择针对当前天气条件的变换,并且将该变换应用于地图数据。备选地,地图处理模块440可以预计算变换的地图并存储它们(例如,在本地数据存储库460中)。在这种情况下,当客户端110连接到小区塔时,地图处理模块确定当前条件,选择适当的预计算的地图数据的版本,并将该版本提供给客户端。
61.权限检查模块450维护不同客户端110的游戏状态之间的同步。在一个实施例中,权限检查模块450确认从客户端110接收的游戏动作与由ar环境模块430维护的游戏状态一致。例如,如果两个玩家都试图拿起相同的游戏内物品,则权限检查模块450确定哪个玩家接收到该物品(例如,基于与请求相关联的时间戳)。如上所述,在小区塔处使用p2p协议和本地处理可以显著降低在其他玩家的客户端110上看到的玩家的动作的时延。因此,这样的冲突的实例发生和由权限检查模块450解决的可能性(和数目)被降低。因此,ar体验可以被改善。
62.权限检查模块450还可以维护其ar环境的状态的副本(中间节点状态)与由游戏服务器120维护的主状态之间的同步。在一个实施例中,权限检查模块450周期性地(例如,每1到10秒)从游戏服务器120接收关于ar环境的状态的全局更新。权限检查模块450将这些更新与中间节点状态相比较并解决任何差异。例如,如果用以拿起物品的玩家的请求最初由权限检查模块450批准,但来自游戏服务器120的游戏更新指示该物品在玩家试图拿起它之前被另一玩家拿起(或以其他方式变得不可用),权限检查模块450可以向玩家的客户端110发送更新,该更新指示该物品应该从玩家的库存中被移除。
63.该过程可以为位于接近于由两个或更多个不同小区塔130提供的覆盖之间的边界的客户端110提供价值。在这种情况下,其客户端设备110连接到不同小区塔130的玩家可能都能够与相同的虚拟元素交互。因此,每个单独的小区塔130最初可能会批准来自不同客户端110的与元素的冲突交互。在这种情况下,服务器120可以在与不同的小区塔130同步之后检测到冲突,并发送更新以解决该冲突(例如,指令小区塔中的一个小区撤销其对该动作的初始批准并相应地更新其本地状态)。
64.本地数据存储库460是一种或多种非暂态计算机可读介质,其被配置为存储由小区塔使用的数据。在一个实施例中,所存储的数据可以包括地图数据、当前条件数据、当前(或最近)连接的客户端110的列表、针对该地理区域的游戏状态的本地副本等。尽管本地数据存储库460被显示作为单个的实体,但是数据可以跨多个存储介质被拆分。此外,数据中的一些数据可以被存储在通信网络中的其他地方并被远程访问。例如,小区塔130可以根据需要远程地(例如,从第三方服务器)访问当前条件数据。
65.示例方法
66.图5示出了根据实施例的用于使用数据流层次结构协议的过程500。图5的步骤是从执行方法500的客户端110a的角度示出的。然而,步骤中的一些或所有步骤可以由其他实体或组件来执行。此外,一些实施例可以并行地执行这些步骤、以不同的顺序执行这些步骤、或者执行不同的步骤。
67.客户端110a标识510用于数据传输的一个或多个可用网络路径。客户端110a通过
确定到目标客户端110b的一组预定路径中的哪个路径当前对客户端110a可用来标识这样的网络路径。如果客户端110a可以与游戏服务器120建立连接并且目标客户端110b也连接到游戏服务器120),则客户端110a标识经由游戏服务器120到另一客户端110的网络路径。如果客户端110a连接到小区塔130,则客户端110可以确定另一客户端110b是否同样连接到小区塔130。如果是这样,则客户端110a标识通过小区塔130的另一网络路径。此外,如果客户端110a和其他客户端110b连接到相同的lan 140,则客户端110a可以标识通过lan 140的网络路径。客户端110a可以将连接两个客户端110的其他网络或路径标识为其他可用网络路径(例如,客户端110之间的直接连接,诸如蓝牙连接)。网络路径中的一个或多个网络路径可以实现udp用于数据传输。对于udp路径,客户端110可以利用公钥密码学用于数据的加密。特别地,客户端110可以实现ecc。
68.客户端110a检测520针对可用网络路径中的每个可用网络路径的一个或多个性能度量。客户端110a通过经由可用网络路径发送测试数据分组来检测性能度量。数据分组可以请求从另一个客户端110b发送回另一测试数据分组。基于这些测试分组的成功传输,客户端110a可以计算(或检测)网络路径的度量。度量包括时延(ping)、抖动、数据丢失、连接强度、带宽可用性等。
69.客户端110a根据所检测的度量选择530一个或多个可用网络路径用于在数据传输中使用。客户端110a在选择网络路径时可以考虑一个或多个特定度量。在一个实施例中,客户端110a仅考虑时延(ping)。在另一实施例中,客户端110a考虑时延和连接强度。如前所述,客户端110a可以选择(如由一个或多个度量所指示的)一个或多个“最佳”路径或者还选择所有可用的网络路径以用于在数据传输中使用。
70.客户端110a经由所选择的一个或多个网络路径传输540数据。在平行现实游戏的上下文中,客户端110a将游戏数据传输给其他客户端110和游戏服务器120。当在平行现实游戏中保持共享的ar体验时,客户端到客户端的通信特别高效,其中在其客户端110上的多个玩家可能正在彼此交互并且与游戏服务器120交互。这些交互中的一些交互可以由客户端110或其他网络(例如,小区塔130或lan140)本地托管,使得游戏状态不需要由游戏服务器120同步。本地托管ar体验提供具有低时延的更流线型的ar体验。
71.客户端110a可以迭代过程500以周期性地对可用路径采样并且迭代地优化在维护设备之间的数据传输中使用哪些路径。
72.图6示出了根据实施例的用于在小区塔周围的地理区域内的客户端110之间传输数据的方法600。从执行方法600以在地理区域中的客户端设备110之间提供p2p通信的小区塔130的角度来描述图6的步骤。然而,这些步骤中的一些或所有步骤可以由其他实体或组件执行。此外,一些实施例可以并行地执行这些步骤,以不同的顺序执行这些步骤,或者执行不同的步骤。
73.在图6所示的实施例中,小区塔130经由网络路径为小区塔周围的地理区域内的客户端110s提供610p2p通信。例如,小区塔130可以为客户端s=110提供p2p通信,从而提供平行现实游戏(例如,由游戏服务器120托管)。小区塔130经由网络路径从第一客户端110a接收620数据。特别地,网络路径由第一客户端110a基于针对可用网络路径中的每个可用网络路径的一个或多个度量从可用网络路径中选择。例如,第一客户端设备可以选择使用数据流层次结构协议提供p2p通信的网络路径,如上所述。从第一客户端110a接收的数据可以与
ar环境的虚拟内容相关联,诸如对应于地理区域内的地理定位的ar数据。
74.使用网络路径,小区塔130将数据传输630给地理区域内的第二客户端110b。例如,如果数据描述了对与平行现实游戏相关联的ar环境的虚拟内容的更新,则小区塔130可以向连接到小区塔130的平行现实游戏的客户段110中的一些或所有客户端110提供该更新。作为另一示例,数据可以被具体定址到第二客户端110b,诸如消息或与使用第二客户端的玩家相关联的虚拟内容的交互。
75.示例计算机
76.图7是示出根据实施例的适合在图1所示的计算机网络内使用的示例计算机600的高级框图。示例计算机700包括耦合到芯片组704的至少一个处理器702。芯片组704包括存储器控制器集线器720和输入/输出(i/o)控制器集线器722。存储器706和图形适配器712耦合到存储器控制器集线器720,并且显示器718耦合到图形适配器712。存储设备708、键盘710、指点设备714和网络适配器716耦合到i/o控制器集线器722。计算机的其他实施例700具有不同的架构。
77.在图7所示的实施例中,存储设备708是非暂态计算机可读存储介质,诸如硬盘驱动器、光盘只读存储器(cd-rom)、dvd、或者固态存储设备。存储器706保存由处理器702使用的指令和数据。指点设备714是鼠标、跟踪球、触摸屏或其他类型的指点设备,并与键盘710(其可以是屏幕上的键盘)结合使用,以将数据输入到计算机系统700中。图形适配器712在显示器718上显示图像和其他信息。网络适配器716将计算机系统700耦合到一个或多个计算机网络。
78.由图1的实体使用的计算机的类型可以取决于实施例和由实体所需的处理能力而变化。例如,游戏服务器120可以包括分布式数据库系统,该分布式数据库系统包括一起工作以提供所描述的功能性的多个刀片服务器。此外,计算机可能缺少上述组件中的一些组件,诸如键盘710、图形适配器712和显示器718。
79.本领域技术人员可以在不背离所描述的概念的情况下对本文公开的装置和技术进行多种使用和修改以及背离。例如,本公开中示出或描述的组件或特征不限于图示或描述的位置、设置或上下文。根据本公开的装置的示例可以包括与参考一个或多个前述附图所描述的那些组件相比的全部、更少或不同的组件。因此,本公开不限于本文中描述的特定实现,而是要被赋予与所附权利要求及其等价物一致的可能的最宽范围。
80.附加考虑
81.上述实施例的描述是为了说明的目的而给出的;它并非旨在详尽无遗或将专利权限制为所公开的精确形式。相关领域的技术人员可以理解,鉴于上述公开,许多修改和变化是可能的。
82.本说明书的某些部分根据对信息的操作的算法和符号表示来描述实施例。这些算法描述和表示通常被数据处理领域的技术人员用来将他们工作的实质有效地传达给本领域的其他技术人员。这些操作虽然在功能上、计算上或逻辑上进行了描述,但被理解为通过计算机程序或等效电路、微代码等来实现。此外,在不失一般性的情况下,有时将这些操作的安排称为模块也被证明是方便的。所描述的操作及其相关模块可以体现在软件、固件、硬件或其任何组合中。
83.本文中描述的任何步骤、操作或过程可以单独或与其他设备结合利用一个或多个
硬件或软件模块来执行或实现。在一个实施例中,利用计算机程序产品实现软件模块,该计算机程序产品包括包含计算机程序代码的计算机可读介质,该计算机程序代码可以由计算机处理器执行以执行所描述的任何或所有步骤、操作或过程。
84.实施例还可以涉及用于执行本文中的操作的装置。该装置可以为所需目的专门构造,和/或它可以包括由被存储在计算机中的计算机程序选择性地激活或重新配置的通用计算设备。这样的计算机程序可以被存储在非暂态的、有形的计算机可读存储介质中,或者适合存储电子指令的任何类型的介质中,它们可以耦合到计算机系统总线。此外,本说明书中提及的任何计算系统可以包括单个处理器或者可以是采用多个处理器设计以增加计算能力的架构。
85.实施例还可以涉及由本文描述的计算过程产生的产品。这样的产品可以包括由计算过程产生的信息,其中该信息被存储在非暂态的、有形的计算机可读存储介质上并且可以包括计算机程序产品的任何实施例或本文中描述的其他数据组合。
86.如本文所用,对“一个(one)实施例”或“一个(an)实施例”的任何引用意味着结合该实施例描述的特定元素、特征、结构或特性被包括在至少一个实施例中。在说明书的各个地方出现的短语“在一个实施例中”不一定都指相同的实施例。类似地,在元素或组件之前使用“一个(a)”或“一个(an)”只是为了方便。该描述应被理解为表示存在一个或多个元素或组件,除非很明显它另有含义。
87.在值被描述为“近似”或“基本上”(或其派生词)的情况下,除非从上下文中明显看出另一种含义,否则这样的值应被解释为准确的+/-10%。例如,“大约十”应该被理解为“在从九到十一的范围内”。
88.如本文所用,术语“包括(comprise)”、“包括(comprising)”、“包括(include)”、“包括(including)”、“具有(have)”、“具有(having)”或其任何其他变体旨在涵盖非排他性的包含。例如,包括一列元素的过程、方法、物品或装置不一定仅限于那些元素,而是可以包括未明确列出的或这样的过程、方法、物品或装置所固有的其他元素。此外,除非有明确的相反说明,否则“或”是指包含性的或,而不是排他性的或。例如,条件a或b由以下中的任何一项满足:a为真(或存在)且b为假(或不存在)、a为假(或不存在)且b为真(或存在)、并且a和b两者都为真(或存在)。
89.在阅读本公开后,本领域技术人员将理解可用于采用所描述的技术和方法的另外的备选结构和功能设计。因此,虽然已经说明和描述了特定实施例和应用,但是应当理解,所描述的主题不限于所公开的精确构造和组件。保护的范围应仅受所附权利要求限制。
90.最后,在说明书中使用的语言主要是为了可读性和指导目的而选择的,并且它可能没有被选择来划定或限制专利权。因此,旨在专利权的范围不受此具体实施方式的限制,而是受在基于此的申请上发布的任何权利要求限制。因此,实施例的公开旨在说明而非限制在所附权利要求中阐述的专利权的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1