应用程序的安全并发流式传输的系统和方法与流程

未命名 09-28 阅读:90 评论:0

应用程序的安全并发流式传输的系统和方法
1.相关申请的交叉引用
2.本技术要求于2020年10月25日提交的美国临时申请63/105,320的权益,以及于2021年5月28日提交的美国临时申请63/194,821的权益,它们中的每一个的公开内容通过引用整体并入本文。于2021年10月20日提交的、共同未决的美国申请17/506,640通过引用整体并入本文。
附图说明
3.附图示出了多个示例性实施例,且附图是说明书的一部分。这些附图连同以下描述一起说明和解释了本公开的各种原理。
4.图1为用于流式传输应用程序的示例系统的图示。
5.图2为用于流式传输应用程序的系统的各个方面的更详细的图示。
6.图3为用于流式传输应用程序的系统的各个方面的附加图示。
7.图4为用于流式传输应用程序的系统的各个方面的进一步图示。
8.图5为用于应用程序的安全并发流式传输的示例方法的流程图。
9.图6为用于应用程序的安全并发流式传输的示例系统的图示。
10.图7为应用程序的安全并发流式传输所使用的示例虚拟化层的图示。
11.图8为用于应用程序的安全并发流式传输的示例过程的图示。
12.图9为用于应用程序的安全并发流式传输的示例环境的图示。
13.图10为用于应用程序的安全并发流式传输的示例环境的图示。
14.图11为可以结合本公开的实施例使用的示例性增强现实眼镜的图示。
15.图12为可以结合本公开的实施例使用的示例性虚拟现实头戴式设备(headset)的图示。
16.在所有附图中,相同的附图标记和描述指示相似但不一定相同的要素。虽然本文所描述的示例性实施例易有各种修改和替代形式,但是具体实施例已经通过示例的方式在附图中示出并将在本文中进行详细描述。然而,本文所描述的示例性实施例不旨在限于所公开的特定形式。相反,本公开涵盖落入所附权利要求的范围内的所有修改、等同物和替代物。
具体实施方式
17.在云游戏主机平台上托管游戏实例可能是资源密集型的。同时,在共享平台上运行的多个游戏实例可能会引发用户的安全性问题和隐私性问题。本公开总体上针对虚拟化每个游戏实例的运行时环境(runtime environment),以使系统资源共享(允许其使用最大化),同时多个游戏会话彼此隔离。因此,每个游戏实例的沙盒可以降低每个游戏的有效系统权限,并可以向每个游戏呈现系统资源的受约束视图。在一些情况下,游戏可能原本不支持沙盒化或不支持并行地运行多个实例。因此,本文所描述的系统可以对沙盒进行配置,以解决兼容性问题(例如,不需要修改游戏本身)。此外,本文所描述的系统可以检测和/或解
决各种兼容性问题和安全性问题。本文所描述的系统的部件可以对操作系统进行配置,以创建低权限环境。运行时部件(runtime component)可以拦截特定系统调用,并虚拟化它们,以使得能够在容器化环境(containerized environment)内运行。以此方式,可以提供每用户隔离(per-user isolation)(例如,在微软视窗(microsoft windows)上下文中),以便每仿真器运行具有多个用户的多个游戏。
18.通过使用单个共享虚拟机(例如,用单个共享操作系统)执行多个游戏实例,本文所描述的系统可以改进计算资源的高效使用(例如,通过充分使用由单个操作系统提供的资源,而不是要求为每个视频游戏实例执行单独的操作系统)。通过将共享虚拟机内的每个游戏实例容器化,并经由沙盒来处理系统调用,这些系统可以有效地将多个用户彼此隔离,以防止隐私性问题和安全性问题,同时还将游戏无缝地适配到云环境,并防止否则可能由多个游戏实例尝试使用唯一资源而导致的冲突。
19.因此,本文所描述的系统可以通过更高效地分配计算机的计算资源,来改进计算机和/或计算环境的功能。另外,本文所描述的系统可以通过改进由计算机提供的隐私性、安全性和/或兼容性,来改进计算机的功能。此外,本文所描述的系统可以通过改进流式传输(streaming)视频游戏的安全性、隐私性、兼容性和功能性,来改进应用程序流式传输领域(例如,包括来自云的流式传输视频游戏)。
20.来自本文所描述的任何实施例的特征可以根据本文所描述的一般原理彼此组合使用。通过结合附图和权利要求书阅读以下具体实施方式,将更全面地理解这些和其他实施例、特征和优点。
21.下面将参照图1至图4提供用于流式传输应用程序的系统的具体描述;参照图5提供用于应用程序的安全并发流式传输的示例方法;参照图6提供用于应用程序的安全并发流式传输的示例系统;参照图7提供应用程序的安全并发流式传输所使用的示例虚拟化层;参照图8提供用于应用程序的安全并发流式传输的示例过程;以及参照图9至图10提供用于应用程序的安全并发流式传输的示例环境。此外,下面将参照图11至图12提供人工现实系统的具体描述,该人工现实系统包括增强现实眼镜和虚拟现实头戴式设备(headset),在一些示例中,该增强现实眼镜和虚拟现实头戴式设备可以用作根据本主题的远程设备。
22.图1为用于流式传输应用程序的低时延加载的示例性系统100的示意图。如图1所示,系统100可以包括通过网络104与远程设备106通信的云应用程序平台102。云应用程序平台102可以包括用于托管、运行和/或执行应用程序以向远程设备106提供内容(例如但不限于图形内容和音频内容)的服务器和其他软件及硬件。在某些示例中,云应用程序平台102是云托管基础设施的至少一部分和/或被实施为云托管基础设施,以提供通过互联网(internet)递送给远程设备106的内容。此外,尽管描绘了单个云应用程序平台102,但是在某些示例中,云托管基础设施可以包括云应用程序平台102的多个实例。
23.关于网络104,可以使用任何合适的网络104。在某些示例中,网络104是互联网、局域网(lan)、或广域网(wan)等。此外,可以使用任何合适的远程设备106,且该任何合适的远程设备106可以包括但不限于诸如智能电话或平板计算机的移动设备、个人计算机(personal computer,“pc”)、人工现实系统等。远程设备106可以是客户端设备,该客户端设备经由远程设备106上的网页(web)浏览器或其他应用程序来与云应用程序平台102所提供的内容交互和/或呈现云应用程序平台102所提供的内容。此外,远程设备106可以与输入
设备108通信,以向远程设备106提供输入。远程设备106进而可以向云应用程序平台102发送信号,以部分地基于从输入设备108接收到的输入来控制应用程序。输入设备108可以是用于提供输入的任何合适的设备,且可以包括但不限于与远程设备106分开实施的设备(例如外部鼠标、键盘、游戏控制器等)、或者与远程设备106集成和/或与远程设备106包括在一起的设备(例如集成鼠标、触摸屏、板载传声器等)。
24.云应用程序平台102可以提供执行用于跨互联网递送的应用程序(例如,视频游戏)的环境。具体地,在某些示例中,云应用程序平台102可以提供执行应用程序的服务器端托管环境。在某些示例中,术语“服务器端”可以指在服务器或其他合适的平台上运行以生成内容和/或通过网络向远程设备106递送内容的资源的分类。在一些示例中,云应用程序平台102可以提供各种优化,以允许应用程序(诸如未被设计为在例如服务器端托管环境等中运行的应用程序)在云托管基础设施等中的增强执行。
25.在一些示例中,云应用程序平台102可以优化在服务器端托管环境中执行的应用程序的图形处理,以使对于托管环境而言非本地的应用程序可以在这种环境中执行而性能不退化。
26.在某些示例中,且如下面更详细地描述的,应用程序可以是视频游戏。此外,视频游戏可以是被设计为本地(在本地设备上、在特定操作系统上、或在特定环境中等)执行的现有视频游戏。因此,系统100可以托管针对不同平台而设计的现有游戏,并提供该现有游戏的云递送,以允许终端用户在终端用户的设备上玩该游戏,而不发生性能退化并且不需要对该游戏进行实质性修改。
27.图2为包括用于在服务器端环境中对应用程序进行托管的示例性系统200的细节的图示。例如,参照图1,系统200可以包括输入设备208,输入设备208可以包括输入设备108。系统200可以包括计算设备206,计算设备206可以包括远程设备106。系统200可以包括网络104。系统200可以包括云应用程序平台。在一些实施方式中,云应用程序平台202可以表示云应用程序平台102的实施方式。在一些实施方式中,系统200可以是在服务器端环境中对游戏应用程序进行托管的云游戏系统。
28.输入设备可以包括用于向计算设备提供输入的任何合适的设备。例如,输入设备208可以包括但不限于鼠标210、键盘212、传声器214或游戏控制器232。计算设备206可以与输入设备208通信(连接到输入设备208)。计算设备206可以通过无线或有线连接的方式连接到输入设备。计算设备可以与输入设备208有线或无线通信。输入设备208可以通过输入设备与计算设备之间的连接来向计算设备206提供输入数据流。
29.计算设备可以从输入设备接收输入。在一些实施方式中,计算设备可以包括输入设备。例如,计算设备206可以包括但不限于:移动计算设备216(例如,智能电话、平板计算机、笔记本计算机等)、个人计算设备218(例如,pc)、膝上型计算机220、增强现实系统1100和虚拟现实(virtual reality,“vr”)系统1200。在一些实施方式中,被包括在移动计算设备216、个人计算设备218和/或膝上型计算机220中的触摸屏和/或触摸板可以是计算设备通过网络104向云应用程序平台202提供的例如信息和数据的输入的源。
30.一个或多个计算设备可以通过网络与云应用程序平台通信。例如,计算设备206可以通过网络104与云应用程序平台202通信。计算设备206可以向云应用程序平台202发送、传输或以其他方式提供输入数据流。输入数据流可以包括用于控制在云应用程序平台202
的服务器端托管环境中托管的、非本地应用程序的执行的信息和数据。作为响应,云应用程序平台202可以向计算设备206发送、传输或以其他方式提供视频和/或音频数据流。该视频和/或音频数据流可以在计算设备的显示设备(例如,显示设备222、显示设备224、显示设备226、左显示设备1115(a)和右显示设备1115(b)(参照图11)、和/或被包括在虚拟现实系统1200中的一个或多个电子显示器,该虚拟现实系统1200将参照图12更详细地进行描述)上显示。
31.云应用程序平台可以包括多个服务器。在图2所示的示例中,云应用程序平台202包括三个服务器228a至228c。在一些实施方式中,云应用程序平台可以包括三个以下的服务器(例如,两个服务器,一个服务器)。在一些实施方式中,云应用程序平台可以包括三个以上的服务器。
32.云应用程序平台可以利用边缘计算来高效地接收输入数据流,并使用输出视频和/或音频数据流高效地供应(serve)内容。数据流的接收和输出可以是通过网络从云服务器到计算设备的。在一些实施方式中,云应用程序平台202可以利用边缘计算,通过网络104来高效地接收输入数据流,并将视频和/或音频数据流(例如,内容)从云服务器高效地供应到计算设备206。边缘计算可以使云应用程序平台202的计算资源更靠近用户(终端用户的计算设备),从而增加非本地应用程序在服务器端托管环境中执行时的响应能力和吞吐量。例如,边缘节点230可以包括一个或多个边缘节点。边缘节点可以提供服务器(例如,服务器228a至228c中的一者)与计算设备(例如,计算设备206中的一者)之间的连接。边缘节点可以提供服务递送计算卸载(computing offload)、物联网(internet-of-things,iot)连接管理、存储或高速缓存。边缘计算的使用可以创建将低时延内容从服务器(例如,边缘服务器)递送到请求的计算设备的内容递送网络(content delivery network)。
33.系统200可以有利地允许开发者构建应用程序,该应用程序旨在在一个计算平台(例如,操作系统)上执行以到达操作不同计算机平台的其他用户,并且还可以向用户提供对应用程序的立即存取(immediate access),而不管设备能力如何;该应用程序例如游戏、用于vr系统(例如,vr系统1200)的虚拟现实(vr)应用程序、用于ar系统(例如,ar系统1100)的增强现实(augmented reality,ar)应用程序、用于其他类型的人工现实或增强现实的系统和体验的应用程序、以及提供流媒体(streaming media)的应用程序等。可以利用系统200通过使用虚拟化技术来在基础操作系统之上的虚拟托管环境中运行应用程序来实现这些优点。示例虚拟托管环境例如可以包括:android(安卓)虚拟环境、microsoft windows虚拟机(virtual machine,“vm”)和/或其他容器技术。
34.在一些实施方式中,系统200可以是对服务器端环境中的游戏应用程序进行托管的云游戏系统。边缘计算的使用可以允许系统200通过提供实时响应和交互来满足用于云游戏系统中的实时游戏的响应时间约束,从而导致当游戏作为在云托管基础设施环境中执行的云托管应用程序运行时的游戏的适当性能以及合适的用户体验。
35.图1的云应用程序平台102(和/或图2的云应用程序平台202)可以具有允许在服务器端托管环境中执行应用程序的任何合适的架构。图3描绘了具有图1的云应用程序平台102的系统300的一个示例,云应用程序平台102具有示例性架构细节。云应用程序平台102可以包括与一个或多个中央处理单元(central processing unit,“cpu”)304a至204n通信并在该一个或多个中央处理单元上运行的操作系统302。操作系统302还可以与用于图像
(image)和图形(graphics)处理的一个或多个图形处理单元(graphics processing unit,“gpu”)306a至206n通信。云应用程序平台102可以具有任何合适数量的cpu 304和gpu 306。
36.操作系统302可以是任何合适的操作系统。在一个示例中,操作系统302支持云应用程序平台102的基础功能,例如硬件和软件管理、对资源的访问和任务管理等。该操作系统可以包括操作系统(operating system,“os”)虚拟化层308,以提供允许云应用程序平台102支持多个隔离的虚拟环境的操作系统虚拟化能力。可以使用任何合适的os虚拟化层308。在一些示例中,os虚拟化层308是基于内核的虚拟机(kernel-based virtual machine,“kvm”)。
37.操作系统302和os虚拟化层308可以支持一个或多个虚拟容器310。云应用程序平台102可以使用任何合适的虚拟容器310。在某些示例中,虚拟容器310是为软件的执行提供隔离环境的虚拟化软件单元,在下面更详细地描述了虚拟容器310。
38.虚拟容器310可以提供沙盒环境(sandboxed environment),以支持并执行服务器端托管环境312。同样,服务器端托管环境312可以继而执行应用程序314。如下文将更详细地描述的,服务器端托管环境312可以是用于执行应用程序314的任何合适的环境。在某些示例中,服务器端托管环境312可以是操作系统、模拟特定操作系统的仿真器和操作系统虚拟机等。
39.虽然图3描绘了在单个服务器端托管环境312上执行的单个应用程序314,但是在其他示例中,可以在单个服务器端托管环境312上执行多个应用程序314。服务器端托管环境312、虚拟容器310、虚拟化层308、和/或操作系统302可以被配置为在不同应用程序314之间提供安全性和隔离,以使得一个应用程序314a与另一个应用程序314n隔离。此外,如下面更详细地描述的,在某些示例中,云应用程序平台102可以根据需要动态地创建、分配、和/或提供虚拟容器310和/或服务器端托管环境312的实例。具体地,当用户初始化应用程序314时,云应用程序平台102可以分配虚拟容器310和/或服务器端托管环境312的实例,以运行应用程序314,然后,一旦用户完成与应用程序314的交互,云应用程序平台102就释放和/或终止该实例。在一些示例中,云应用程序平台102可以在该用户(或另一用户)初始化应用程序314之前分配虚拟容器310和/或服务器端托管环境312的实例以运行应用程序314。
40.图4为用于在计算设备与包括服务器端环境的应用程序平台之间提供网络(web)实时通信的系统400的示例性架构的图示。例如,计算设备406可以是包括在计算设备206(参照图2)中的计算设备。计算设备406可以通过网络104与云应用程序平台202进行通信和对接(interface)。如参照图2所描述的,计算设备406可以向云应用程序平台202提供输入数据流410。计算设备406可以通过网络104从云应用程序平台202接收视频/音频输出数据流412。
41.计算设备可以包括流式传输技术栈(streaming technology stack)。云应用程序平台可以包括流式传输技术栈。流式传输技术栈可以实现计算设备与云应用程序平台(例如,云应用程序平台中所包括的服务器)之间的数据的流式传输。例如,参照图2,系统200可以包括系统400。系统400可以在计算设备406与云应用程序平台202之间提供基于网络(基于互联网)的实时、直接且不间断的通信,该通信适用于输入数据流410和视频/音频输出数据流412两者。
42.在一些实施方式中,流式传输技术栈可以使用网络实时通信协议栈(例如,webrtc
协议栈)来实现。webrtc协议栈的使用可以实现流式传输数据的发送方与流式传输数据的接收方之间的低时延通信。这种低时延通信可以实现计算系统之间的实时流式传输(live streaming)。
43.例如,当用户与云应用程序平台202中执行的应用程序对接时,该用户可以与计算设备406交互。用户可以查看、收听、和/或以其他方式与云应用程序平台202所提供的内容交互,该内容可以在计算设备406所包括的显示设备422上呈现和/或在计算设备406所包括的一个或多个扬声器424上播放。例如,云应用程序平台202可以使用实现网络实时通信协议栈420的流式传输技术栈418来提供、发送或传输视频/音频输出数据流412。计算设备406可以在网页浏览器中或在计算设备406上本地执行的其他应用程序中接收来自云应用程序平台202的内容。例如,计算设备406可以包括实现网络实时通信协议栈420的流式传输技术栈414,该网络实时通信协议栈实时地从云应用程序平台202接收视频/音频输出数据流412。流式传输技术栈414还可以将来自计算设备406的输入数据流410提供给云应用程序平台202,以供流式传输技术栈418使用或处理。计算设备406与云应用程序平台202之间(特别是流式传输技术栈414与流式传输技术栈418之间)的这种通信可以在云应用程序平台202与计算设备406之间提供直接且不间断的通信。该直接且不间断的通信可以允许计算设备406与在云应用程序平台202上运行的应用程序之间的实时交互。当基于云的应用程序是游戏时,与云托管应用程序的实时交互可能尤其关键。
44.网络实时通信协议栈可以用于在计算系统与计算设备(例如,计算设备406和云应用程序平台202)之间提供数据(例如,数字数据、音频数据、视频数据等)。实时发送和/或接收这种数据的能力可以为在与云托管应用程序交互时的更丰富的用户体验提供支持。例如,用户体验可以包括但不限于:应用内广告(in-app advertising,iaa)、应用内购买(in-app purchases,iap)、和诸如共享和请求(例如,游戏请求)的社交特征。当将系统400并入时,系统200可以允许通用流式传输应用程序存在于云中,并且可以由用户的客户端计算设备访问。系统200可以提供计算设备与云应用程序平台之间的实时通信和交互,而不需要用于流式传输应用程序的任何附加安装或设置。
45.图5为用于应用程序的安全并发流式传输的示例性计算机实现的方法500的流程图。图5所示的步骤可以由任何合适的计算机可执行代码和/或计算系统来执行,该计算系统包括本文所描述和/或所示出的各种系统,例如图1至图4所示出的系统。在一个示例中,图5所示的各个步骤可以表示结构包括多个子步骤的算法和/或结构由多个子步骤表示的算法,以下将更详细地提供该算法的示例。
46.如图5所示,在步骤510处,本文所描述的一个或多个系统可以向云游戏环境提供多个容器,所述多个容器共享单个操作系统实例。
47.在一些实施例中,术语“云游戏环境”可以指架构被设计为包括至少一个远程服务器、执行环境和用于实现和运行云托管系统的硬件的云托管基础设施环境,该云托管系统用于托管对云托管基础设施的执行环境而言非本地的视频游戏。
48.在一些实施例中,术语“容器”可以指一种类型或形式的部分虚拟化的环境(例如,该环境允许容器内的一个或多个应用程序至少部分地访问托管容器的系统的内核)。因此,例如,容器可以不包括整个操作系统(或者,例如操作系统的任何部分),但是在由来自主机计算系统的操作系统的计算资源和/或其他外部资源补充时可以包括足够的计算资源以执
行至少一个进程和/或应用程序。在一些实施方式中,容器内的资源和/或进程可以与应用程序容器外部的资源和/或进程隔离,和/或应用程序容器可以具有默认配置,该默认配置指定从应用程序容器到外部资源和/或进程的通信通过应用程序容器的主机的内核。在一些示例中,容器与虚拟机的不同之处可以在于,容器可能不需要硬件仿真和/或与主机内核隔离地运行的完整且单独的访客内核(guest kernel)。
49.本文所描述的系统可以在各种上下文(context)的任何上下文中向云游戏环境提供多个容器。如下面将进一步详细描述的,在一些示例中,这些系统可以在虚拟机内提供该多个容器。因此,在一些示例中,由该多个容器共享的单个操作系统实例可以是在虚拟机内执行的操作系统。此外,在一些示例中,提供容器的虚拟机本身可以在容器内执行(在一些示例中,容器进而可以在另一容器内运行)。在一个示例中,虚拟机在某一容器内部执行的该容器可以防止虚拟机本身被利用。
50.在一些实施例中,该多个容器内的每个容器可以包括对应的沙盒,该对应的沙盒在容器的视频游戏实例与操作系统实例之间进行中介。在各种示例中,容器的对应的沙盒可以拦截对操作系统的一个或多个应用程序编程接口(application programming interface,“api”)调用和/或系统调用(这两者在本文中可以统称为“系统调用”或“api调用”),以使在容器内执行的视频游戏实例的操作适应云游戏环境(例如,不对底层视频游戏进行修改)。
51.如下面将更详细地解释的,尽管共享底层操作系统,但是用于各个容器的沙盒可以将不同(disparate)容器的活动(并因此是对应的用户的活动)彼此隔离,从而改善用户的隐私性和安全性。在一些示例中,本文所描述的系统例如可以通过将由视频游戏实例发出的资源访问请求重新映射到单独的资源和/或远程客户端处的资源来配置沙盒,以防止(例如,由两个或更多个视频游戏实例尝试访问同一操作系统资源而引起的)资源冲突。另外,本文所描述的系统可以配置沙盒,还可以允许视频游戏实例在云游戏环境中无修改地本地运行,其中,底层视频游戏可能已经被设计为在本地环境中执行。此外,本文所描述的系统可以将沙盒配置为修改一个或多个视频游戏实例的功能,而不修改底层视频游戏。
52.在一些实施例中,本文所描述的系统可以将对应的容器的沙盒配置为拦截和修改由视频游戏实例执行的一个或多个系统调用,以存储持久性数据(persistent data)。在这些实施例中,这些系统可以将存储持久性数据的尝试重定向到被配置用于对应的用户的跨会话的数据持久性的存储位置。例如,在流式传输视频游戏的过程中,视频游戏实例可以产生保存数据、配置数据和/或其他被设计为跨游戏会话持久的数据。然而,容器本身可能不是跨游戏会话持久的。因此,为了保留用户的持久性数据(例如,包括用于游戏的配置数据和/或用于视频游戏的保存数据),本文所描述的系统可以拦截用于存储实现持久性数据存储的预期持久性数据的系统调用,而不管发出系统调用的容器的非持久性如何。在一些示例中,容器内的沙盒可以将存储预期持久性数据的尝试重定向到容器内的指定位置。然后,本文所描述的系统可以在容器被销毁之前,将预期持久性数据从指定位置复制到独立于容器的存储位置,本文所描述的系统可以稍后从该存储位置检索所述预期持久性数据(例如,当同一用户发起伴随云游戏环境(例如,同一视频游戏的云游戏环境,尽管是在新容器中的新实例)的另一流式传输会话(streaming session))时,并将所述预期持久性数据注入到新容器中。
53.如上所述,在一些示例中,本文所描述的系统可以将用于对应的容器的沙盒配置为拦截和修改一个或多个系统调用,以修改视频游戏的面向用户的行为。例如,这些系统可以将沙盒配置为拦截和修改与系统定时相关的一个或多个调用,以便改变视频游戏的速度和/或暂停视频游戏(例如,不修改底层视频游戏实例)。
54.在一些示例中,针对该多个容器内的每个容器,本文所描述的系统可以提供对应的服务器(例如,服务器应用程序),该对应的服务器在对应的用户的对应的客户端系统与该容器之间进行中介,从而采集来自该容器的显示和音频数据以转发给对应的客户端系统,并接收来自对应的客户端系统的输入数据以转发给该容器。在一些示例中,服务器可以经由与容器共享的存储器访问来自容器的显示和/或音频数据。此外,在一些示例中,服务器可以被配置为与容器的对应沙盒通信,例如,使得由视频游戏实例针对输入数据的调用(例如来自视频游戏的控制器)由沙盒处理,并且该调用从由服务器提供的且从客户端系统(而非操作系统)接收的输入数据获取。以这种方式,许多用户可以并发地从云游戏环境流式传输各种视频游戏实例,每个视频游戏实例使用其自己的输入设备,而不引起与底层共享操作系统的任何资源冲突(例如,当许多视频游戏实例可能希望访问键盘、鼠标、视频游戏控制器等,但是底层共享操作系统可能例如只具有所配置的每个设备中的一个设备时)。
55.在一些示例中,本文所描述的系统可以响应于一个或多个用户的请求,而向云游戏环境提供该多个容器中的一个或多个容器。例如,来自远程客户端的用户可以选择要玩的视频游戏。作为响应,远程客户端可以提交从云游戏环境流式传输视频游戏的请求。因此,本文所描述的一个或多个系统可以向云游戏环境提供可以执行视频游戏以流式传输给用户的容器。因此,响应于来自不同客户端系统的独立请求,可以在不同时间、随着时间提供多个容器。在一些示例中,本文所描述的系统可以向云游戏环境提供容器,该容器基于用户的预测的和/或潜在的未来请求来执行特定视频游戏,以流式传输该视频游戏。
56.返回图5,在步骤520处,本文所描述的一个或多个系统可以将该多个容器内的每个容器分配给对应的用户。例如,本文所描述的系统可以在用户(例如,经由用户所使用的远程客户端)与分配给该用户的容器之间创建会话。容器可以执行由用户流式传输的视频游戏。如下面将更详细地论述的,由于多个容器可以被分配给各个不同的用户,因此该多个容器所使用的单个操作系统实例可以被用于支持流式传输视频游戏实例(例如,不同视频游戏的实例和/或同一视频游戏的实例)。
57.例如,如上所述,在一些示例中,本文所描述的系统可以响应于来自用户的请求而向云游戏环境提供容器。因此,在这些示例中,本文所描述的系统可以基于该请求而将容器分配给用户。将容器分配给用户可以包括各个步骤中的任何步骤。例如,将容器分配给用户可以包括在容器与远程客户端之间建立会话。在一些示例中,将容器分配给用户可能需要为用户创建权限以访问(例如,向容器提供输入和/或从容器接收输出)该容器而排除其他用户。
58.此外,如上所述,在一些示例中,本文所描述的系统可以在尚且未知的用户提交流式传输视频游戏的请求的预期中向云游戏环境提供用于执行视频游戏的容器。在这些示例中,本文所描述的系统可以在用户提交了流式传输视频游戏的请求并且被指派了可用容器之后将容器分配给用户。在一些示例中,本文所描述的系统可以向短时用户(ephemeral user)(例如,不对应于任何实际用户的临时用户账户)提供容器,且可以响应于流式传输视
频游戏的请求而将用于短时用户的容器分配给实际用户。
59.返回图5,在步骤530处,本文所描述的一个或多个系统可以在该多个容器内的每个容器内,并发地执行对应的视频游戏实例。如上所述,在一些示例中,在容器内执行的视频游戏实例可以包括同一视频游戏的实例和/或不同视频游戏的实例。
60.因为视频游戏实例在多个容器内并发地执行,所以视频游戏实例可以并发地使用该多个容器所共享的操作系统。如前所述,在一些示例中,主机系统(例如,托管包括该多个容器的虚拟机的主机系统)可以包括一个或多个物理gpu。在一些示例中,本文所描述的多个系统可以将在该多个容器内执行的一个或多个视频游戏实例对gpu的调用传递给主机系统上的物理gpu。通过将调用传递给物理gpu(例如,而不是对gpu进行虚拟和/或仿真),本文所描述的系统可以改善视频游戏实例的性能,同时最大化gpu的使用效率。此外,这些系统可以为容器配置相应的沙盒,以拦截和修改对gpu的调用。这些系统可以修改对gpu的调用,以将来自不同用户的数据彼此隔离(尽管共享gpu),和/或防止歧义和/或可能是由两个视频游戏实例(例如,包括同一视频游戏的两个实例)使用同一资源而引起的资源冲突。
61.在一些示例中,本文所描述的系统可以将相应容器的沙盒配置为拦截对网络资源的调用。例如,沙盒可以将视频游戏实例对网络端口的使用重新映射到对应容器在外部使用的唯一端口号。因此,在单独容器中运行的、各自尝试使用同一网络端口的两个视频游戏实例仍然可以利用在其相应容器外部的不同网络端口来正确地并发地运行。
62.本文所描述的系统还可以拦截和修改由视频游戏实例在其相应的沙盒内针对以下任何资源的系统调用,该资源是唯一的、命名的和/或以其他方式遭受与另一视频游戏实例的系统调用冲突的资源。例如,关于操作系统当前关注的窗口的系统调用可以被拦截和修改,以使得每个容器对关注什么窗口保持单独理解,而不是让底层操作系统识别关注的窗口。
63.在一些示例中,与本地化有关的系统调用可以被沙盒拦截和修改(例如,以匹配对应容器的用户的本地化)。即使在底层共享操作系统一次仅支持单个本地化时,这也可以允许系统支持多个不同的并发本地化。因此,例如,沙盒可以使用户看起来来自特定国家、特定时区等。在一示例中,沙盒可以拦截和修改对套接字(socket)的低级调用,以通过代理(proxy)(例如,socks代理)。
64.返回图5,在步骤540处,本文所描述的一个或多个系统可以将来自该多个容器内的每个容器的视频游戏实例从云游戏环境并发地流式传输到对应的客户端系统。
65.在一些实施例中,术语“流式传输”可以指应用程序(例如视频游戏)在服务器上执行、同时实时地从远程客户端接收输入并向远程客户端呈现输出(例如,图形、声音等)的过程。
66.如上所述,由于本文所描述的系统可以隔离用户数据,并可以防止尝试访问同一操作系统资源的不同视频游戏实例之间的冲突,因此多个用户可以高效地、私人地、安全地从云游戏环境并发流式传输多个视频游戏实例(无论是相同的视频游戏还是不同的视频游戏),而没有否则可能会由冲突引起的错误或中断。
67.图6示出了用于视频游戏的安全并发流式传输的示例系统600。如图6所示,系统600可以包括与服务器604通信的客户端602。服务器604与唯一用户和容器606通信。系统600还包括核心控制器608和操作系统api 610。游戏616在容器606内执行,产生游戏会话
612,且通过服务器604流式传输到客户端602。游戏616对操作系统api 610进行调用。这些调用可以被容器606内的沙盒614拦截和修改。尽管多个容器(每个容器用于不同的用户)共享同一底层操作系统,但是沙盒614可以修改这些调用,以将客户端602的用户与其他用户隔离。沙盒614还可以修改调用,以使得由游戏616所生成的持久性数据被写入云简档(cloud profile)618。即使当容器606被销毁时,也可以保留云简档618中的数据。稍后,来自云简档618的所保留的数据可以被注入到新容器中(例如,新容器针对同一用户且在一些示例中是针对同一视频游戏的不同实例而提供)。
68.示例系统600可以提供本文所描述的系统可以如何向云游戏环境提供用于流式传输给客户端602的新游戏实例的示例。例如,客户端602可以请求游戏会话。数据中心管理器(data center manager,“dcm”)603可以在虚拟机610内保留游戏节点。核心控制器608可以准备用于执行游戏616的虚拟机610。例如,核心控制器608可以执行以下步骤中的一个或多个:(1)挂载(mounting)游戏磁盘,(2)下载用户简档(user profile)(例如,下载到云简档618中),(3)下载游戏设置,(4)配置防火墙,(5)挂载注册表巢(registry hive),(6)创建用于游戏会话的唯一用户(例如,短时用户),(7)向系统资源指派权限,(8)运行游戏安装器,以及创建服务器604。dcm 603可以确认将游戏节点指派给客户端602。
69.在一个示例中,为了启动游戏616,本文所描述的系统可以执行以下步骤中的一个或多个:(1)客户端602可以连接到服务器604(例如,经由网络实时通信协议栈),(2)核心控制器808可以向服务器604发送启动游戏616的请求,(3)服务器604可以创建容器606和游戏会话612,(4)服务器604可以创建用于与沙盒614的远程过程调用的管道,(5)服务器604可以在容器606内创建启动器进程,(6)启动器进程可以创建游戏进程,(7)启动器进程可以在游戏进程内注入沙盒614,(8)沙盒614可以在os api功能上安装挂钩(hook),(9)游戏616可以开始。
70.图7示出了用于应用程序的兼容并发流式传输的示例虚拟化层。应用程序702对操作系统(“os”)720进行调用。在应用程序702与操作系统720之间插入沙盒704,并且沙盒704拦截和修改应用程序702与操作系统720之间的一些调用。例如,操作系统720可以提供os库706、os库708、库712和库716。本文所描述的系统可以对库712进行挂钩,从而得到挂钩库710。同样地,本文所描述的多个系统可以对库716进行挂钩,从而得到挂钩库714。沙盒704、挂钩库710和挂钩库714可以构成虚拟化层730。应用程序702对库712或库716的功能做出的调用可以改为由沙盒704引导成分别由挂钩库710和挂钩库714处理。
71.通过拦截对操作系统api的调用,本文所描述的多个系统可以虚拟化os资源、采集来自应用程序(例如,视频游戏)的音频和/或视频输出、从操作系统之外的源(例如,远程客户端)注入输入到视频游戏中、将视频游戏与系统的其余部分隔离、处理视频游戏的错误和/或崩溃、和/或将新特征添加到视频游戏。
72.在一些示例中,挂钩可以被分组为模块(例如,根据功能)。本文所描述的系统可以为每个沙盒加载一些模块。其他模块可以选择性地加载(例如,取决于视频游戏实例以及该功能是否为特定的视频游戏实例调用)。总是可以被加载的模块的示例可以包括:音频模块(关于采集来自游戏实例的音频输出)、文件模块(涉及将文件系统调用重定向到将在容器的生命周期之外持久性的用户简档)、注册表模块(涉及将写入os注册表的尝试重定向到用户简档)、输入模块(关于将诸如控制器输入的输入注入到容器中,以供游戏实例使用)、显
示模块(例如,关于虚拟化屏幕大小、桌面等)、os模块(例如,关于拦截os消息)、cpu模块、本地化模块、图形设备接口模块等。可以选择性地加载的模块的示例可以包括:视频模块(例如,关于采集视频输出)、手柄(gamepad)模块(例如,关于注入游戏手柄输入)、套接字模块(例如,关于黑名单和/或白名单网络连接)等。
73.本文所描述的系统可以使用任何合适的技术来拦截系统调用,包括但不限于动态链接库(dynamic link library,“dll”)注入和功能挂钩。
74.图8为用于应用程序的兼容并发流式传输的示例过程的图示。如图8所示,游戏802可以对api 806进行调用。沙盒804可以拦截和修改游戏802的一些调用。沙盒804还可以与服务器808通信。例如,游戏802的原始调用810可以导致涉及游戏802和api 806的通信812。相比之下,沙盒化调用820可以导致涉及游戏802和沙盒804的通信。沙盒804可以修改调用,并执行涉及沙盒804和api 806的附加通信824。另外,沙盒804可以执行从调用到服务器808的通信826。在一个示例中,图8中的调用可以示出游戏802对api 806的调用,以渲染音频样本。因此,用于渲染音频样本的沙盒化调用820可以导致沙盒804拦截该调用、执行对api 806的调用的版本、向服务器808传递音频样本、以及将调用的结果返回给游戏802。
75.图9为用于应用程序的安全并发流式传输的示例环境的图示。如图9所示,系统900可以托管服务器端环境中的应用程序。例如,系统900可以包括数据中心910。在一些实施方式中,数据中心可以包括云应用程序平台。例如,数据中心910可以包括云应用程序平台202(参照图2)。多个数据中心(例如,多于一个数据中心)可以托管云中的服务器端环境中的一个或多个应用程序。
76.数据中心可以包括数据中心中的一个或多个空间或区域,其中,一个或多个服务器和其他设备可以直接连接到互联网网络主干。这种空间或区域可以被称为主机代管中心(colocation center)或colo。在一些示例中,数据中心910可以包括一个或多个云托管边缘(例如,云托管边缘912a至912b)。云托管边缘912a至912b中的每个云托管边缘均可以包括虚拟化和/或仿真用于在云中执行非本地应用程序的操作系统环境的服务器和/或设备。例如,服务器350可以是包括在云托管边缘中的服务器的示例。在一个非限制性示例中,云托管边缘912a可以是包括用于支持旨在在第一操作系统(例如,microsoft windows操作系统)中运行的非本地应用程序的服务器和设备的云托管边缘。云托管边缘912b可以是包括用于支持旨在在第二操作系统(例如,android操作系统)中运行的非本地应用程序的服务器和设备的云托管边缘。尽管图9所示的数据中心910包括两个云托管边缘,在一些实施方式中,一个数据中心可以包括一个云托管边缘,并且在一些实施方式中,一个数据中心可以包括多个云托管边缘(例如,两个云托管边缘,多于两个云托管边缘)。在一些实施方式中,数据中心910可以包括用于支持操作系统的虚拟化的至少一个云托管边缘。在一些实施方式中,数据中心910可以包括用于支持操作系统的仿真的至少一个云托管边缘。
77.在一些实施方式中,数据中心910可以包括一个或多个边缘服务器。在这些情况下,数据中心所包括的服务器可以通过边缘节点执行计算、联网、存储、安全和其他基于计算机的功能和交互。例如,参照图2,云应用程序平台202可以利用边缘计算来高效地接收输入数据流,并使用输出视频和/或音频数据流来高效地供应内容。服务器228a至228c中的每个服务器可以是如图9的示例中所示的云边缘os。参照图3,服务器350可以表示如图9所示的云边缘os。
78.每个colo可以包括至少一个边缘操作系统(os)主机。例如,云边缘os可以是数据中心的colo中的边缘服务器。例如,参照图3,服务器350可以是云边缘os。例如,云托管边缘912a可以包括云边缘os 914a至914b。云托管边缘912b可以包括云边缘os 916a至916b。尽管图9所示的colo 912a至912b中的每个colo都包括两个云边缘os,在一些实施方式中,一个colo可以包括一个云边缘os,并且在一些实施方式中,一个colo可以包括多个云边缘os(例如,两个云边缘os、多于两个云边缘os)。在一些实施方式中,每个colo可以包括相同数量的云边缘os。在一些实施方式中,每个colo可以包括不同数量的云边缘os。
79.云边缘os可以包括用于虚拟化操作系统的一个或多个容器。每个容器可以都执行非本地应用程序,该非本地应用程序旨在在由容器提供的虚拟化环境中的操作系统中运行。每个容器可以包括用于对旨在在执行环境中运行非本地应用程序的该执行环境进行虚拟化的硬件和/或软件。例如,云边缘os 914a可以包括容器918a至918b。云边缘os 914b可以包括容器922a至922b。容器918a至918b中的每个容器可以分别包括硬件虚拟化模块920a至920b。容器922a至922b中的每个容器可以分别包括硬件虚拟化模块924a至924b。硬件虚拟化模块920a至920b和924a至924b中的每个硬件虚拟化模块均可以包括用于对要在执行环境中运行非本地应用程序(例如,用于旨在在microsoft windows操作系统环境中运行非本地应用程序)的该执行环境(例如,microsoft windows操作系统环境)进行虚拟化的硬件和/或软件。
80.云边缘os可以包括用于对操作系统进行模拟的一个或多个容器。每个容器可以执行非本地应用程序,该非本地应用程序旨在在由容器提供的仿真环境中的操作系统中运行。每个容器可以包括用于对旨在在执行环境中运行非本地应用程序的该执行环境进行模拟的硬件和/或软件。例如,云边缘os 916a可以包括容器926a至926b。云边缘os 916b可以包括容器930a至930b。容器926a至926b中的每个容器可以分别包括仿真器模块928a至928b。容器930a至930b中的每个容器可以分别包括仿真模块932a至932b。仿真模块928a至928b和932a至932b中的每个仿真模块可以包括用于对旨在在执行环境(例如,android操作系统环境)中运行非本地应用程序(例如,用于旨在在android操作系统环境中运行非本地应用程序)的该执行环境进行仿真的硬件和/或软件。
81.尽管图9所示的云边缘os 914a至914b和916a至916b中的每个云边缘os都包括两个容器,在一些实施方式中,一个云边缘os可以包括一个容器,并且在一些实施方式中,一个云边缘os可以包括多个容器(例如,两个容器、多于两个容器)。在一些实施方式中,每个云边缘os可以包括相同数量的容器。在一些实施方式中,每个云边缘os可以包括不同数量的容器。
82.计算设备可以在计算设备上本地运行浏览器应用程序。用户可以通过连接到源服务器以访问万维网的互联网来与浏览器应用程序交互。源服务器可以处理对在云应用程序平台中执行非本地应用程序的请求。在一些实施方式中,源服务器可以与边缘计算环境中的一个或多个边缘节点对接。通过浏览器应用程序,用户可以与在托管非本地应用程序的云应用程序平台中执行的非本地应用程序交互。在一些实施方式中,产品边缘可以在多个通信实体(例如计算设备和一个或多个服务器)之间提供接口点。产品边缘可以包括以下中的一者或多者:计算机,路由器,交换机,复用器,和/或用于实现和管理通信接口点的其他类型的网络接口设备、硬件和/或软件。
83.计算设备可以在计算设备上本地运行社交媒体应用程序。在一些实施方式中,用户可以通过使用浏览器来运行社交媒体应用程序。用户可以通过连接到源服务器以访问万维网的互联网来与社交媒体应用程序交互。在一些实施方式中,社交媒体应用程序可以向计算设备的用户(终端用户)提供实时游戏玩法(例如,实时访问游戏应用程序并与其交互)。在一些实施方式中,浏览器应用程序可以向计算设备的用户(终端用户)提供实时游戏玩法(例如,实时访问游戏应用程序并与其交互)。
84.计算设备可以执行浏览器应用程序。参照图4和图9,计算设备406可以执行浏览器应用程序934。用户可以与浏览器应用程序934交互。与浏览器应用程序934交互的用户可以输入网页的网页地址,该网页可以服务于该页面的内容。网页地址可以用于可以执行非本地应用程序的云应用程序平台。可以将网页地址提供给使用超文本传输协议(hypertext transfer protocol,http)或超文本传输安全协议(hypertext transfer protocol secure,https)的互联网连接936,以用于经由互联网进行数据通信。例如,浏览器应用程序934可以通过允许用户访问可在云应用程序平台中执行的游戏应用程序(例如,视频游戏)并与其交互,来向计算设备的用户提供游戏玩法。
85.计算设备可以执行社交媒体应用程序。参照图4和图9,计算设备406可以执行社交媒体应用程序948。用户可以与社交媒体应用程序948交互。社交媒体应用程序948可以通过允许用户访问可以在云应用程序平台中执行的游戏应用程序(例如,视频游戏)并与其交互,来向计算设备的用户提供游戏玩法。
86.网络服务可以接收对访问万维网上的网页的请求。例如,数据中心910中的网络服务944可以接收因特网上的云游戏应用程序的网页地址,互联网通过浏览器应用程序934来提供对在云应用程序平台中执行的非本地应用程序的访问。在一些示例中,网络服务944可以包括云服务器管理服务946和/或与云服务器管理服务946通信。
87.产品边缘可以在通信实体之间提供接口点。例如,产品边缘938可以为计算设备406与云托管边缘912a和云托管边缘912b中所包括的每个云边缘os提供通信接口点。例如,产品边缘938可以将从计算设备406接收到的输入引导或路由到网络服务944。参照图4,产品边缘938可以通过如网络104所提供的互联网连接936来接收来自计算设备406的使用输入数据流410的数据。产品边缘938可以将从计算设备906接收到的输入引导或路由到执行非本地应用程序的容器。产品边缘938可以将来自执行非本地应用程序的容器的输出数据(例如,如图4所示的视频/音频输出数据流412)引导或路由到使用由网络104提供的互联网连接940的计算设备406。例如,互联网连接940可以提供通信信道,该通信信道用于使用实现网络实时通信协议栈的流式传输技术栈在计算设备406与云边缘os上的容器之间发送和接收实时流式传输视频和/或音频数据。在一些实施方式中,每个colo可以包括产品边缘。产品边缘938可以包括以下中的一个或多个:服务器,路由器,交换机,复用器,和/或用于实现和管理通信接口点的其他类型的网络接口设备、硬件和/或软件。在一些实施方式中,网络104可以提供互联网连接936和互联网连接940。
88.代理服务器可以通过防火墙向互联网连接940提供信息和数据。例如,代理服务器942可以是转发代理(forward proxy),该转发代理可以通过防火墙经由互联网连接940向计算设备406提供来自云托管边缘912a和/或云托管边缘912b的请求、信息和/或数据。
89.图10为用于应用程序的安全并发流式传输的示例环境的图示。图10为系统1000的
示例性架构的图示,该系统用于托管旨在在服务器端环境中的第一操作系统中执行的应用程序。第一操作系统可以是桌面操作系统。例如,第一操作系统可以是microsoft windows操作系统。系统1000可以托管旨在在microsoft windows操作系统中执行的应用程序。系统1000可以托管服务器端托管环境中的应用程序,该服务器端托管环境例如如图9所示。服务器端托管环境对于应用程序而言可以是非本地的。服务器端托管环境可以包括用于虚拟化旨在运行应用程序的服务器中的环境的虚拟机(例如,硬件虚拟化920a)。
90.与计算设备上的浏览器应用程序交互的用户可以输入云应用程序平台的网页地址。参照图9,计算设备406的用户可以输入网页地址,以访问执行用户想要交互的非本地应用程序的云应用程序平台。产品边缘938可以将通过互联网连接936接收到的网页地址使用产品边缘服务1012和网络负载均衡器1014引导到网络服务946的云服务器管理服务1010。在一些实施方式中,云服务器管理服务1010可以包括云游戏负载均衡器。云服务器管理服务1010可以管理对容器的访问,该容器实现云应用程序平台中的非本地应用程序的执行环境的虚拟化。
91.源服务器可以访问可在边缘主机上执行非本地应用程序的容器。例如,网络服务944可以与容器918a通信,该容器可以在第一操作系统的虚拟化中执行非本地应用程序。云服务器管理服务1010可以与容器918a所包括的数据控制模块(例如,dcm lite模块1016)通信。dcm lite模块1016可以与配置和部署管理平台模块(例如,hal代理1018)对接,该配置和部署管理平台模块可以提供基于内核的虚拟机(kvm),该基于内核的虚拟机提供对执行容器918a中的硬件虚拟化920a的快速仿真器(quick emulator,qemu)托管的虚拟机监视器的访问。dcm lite模块1016还可以与虚拟机(vm)代理1026通信。在一些实施方式中,对于云边缘os 914a而言本地运行的操作系统可以使用软件套件(例如,systemd),以产生硬件虚拟化920a。硬件虚拟化920a可以虚拟化或仿真硬件和操作系统,该硬件和操作系统用于在硬件虚拟化920a的应用程序容器1024所包括的沙盒环境(例如,沙盒1022)中执行非本地应用程序(例如,应用程序1020)。
92.硬件虚拟化920a可以包括日志(log)通知器1028、核心控制器1030、pgserver(部分)1032以及包括pgserver(部分)1036的核心1034。log通知器1028可以记录关于有关在硬件虚拟化920a中执行的应用程序1020的细节的信息和数据,这些信息和数据可以被提供给网络服务944所包括的日志记录服务1038。日志记录服务1038可以存储和提供用户可能访问的信息和数据。核心控制器1030可以控制硬件虚拟化920a的运行。核心控制器1030可以与云服务器管理服务1010和图形应用程序编程接口(api)1040通信或对接。图形api 1040可以提供社交媒体平台上的信息表示。参照图9,图形api 1040可以将与在云应用程序平台中执行非本地应用程序有关的信息和数据上传到在计算设备406上运行的浏览器应用程序934。
93.pgserver(部分)1032和pgserver(部分)1036可以通过核心1034向产品边缘938提供视频/音频输出数据流。沙盒1022的输出可以连接到产品边缘938所包括的域名系统(dns)1044、或与该域名系统对接,以通过互联网连接940向计算设备406提供来自在沙盒1022中运行的应用程序1020的输出。
94.在像云游戏那样的流式传输应用程序托管平台中,系统资源的高效使用(例如,很少有资源未使用)和用户的安全及隐私可能都是重要的。本文所描述的机制可以虚拟化每
reality)、或它们的某种组合和/或衍生物。人工现实内容可以包括完全的计算机生成内容、或与采集的(例如,真实世界的)内容相结合的计算机生成内容。人工现实内容可以包括视频、音频、触觉反馈、或它们的某种组合,以上中的任何一种都可以在单个通道或多个通道(例如,向观看者产生三维(three-dimensional,3d)效果的立体视频)中呈现。另外,在一些实施例中,人工现实还可以与应用、产品、附件、服务、或它们的某种组合相关联,这些应用、产品、附件、服务、或它们的某种组合例如用于在人工现实中创建内容和/或以其他方式用于人工现实(例如,在人工现实中执行活动)。
107.人工现实系统可以以各种不同的形状要素和配置来实现。一些人工现实系统可以被设计为在没有近眼显示器(near-eye display,ned)的情况下工作。其他人工现实系统可以包括ned,该ned还提供对真实世界的可见性(例如,诸如图11中的增强现实系统1100)或使用户在视觉上沉浸于人工现实中(例如,诸如图12中的虚拟现实系统1200)。虽然一些人工现实设备可以是自包含系统(self-contained system),但是其他人工现实设备可以与外部设备进行通信和/或协调,以向用户提供人工现实体验。这种外部设备的示例包括:手持控制器、移动设备、台式计算机、由用户穿戴的设备、由一个或多个其他用户穿戴的设备、和/或任何其他合适的外部系统。
108.转到图11,增强现实系统1100可以包括具有框架1110的眼镜设备1102,该框架被配置为将左显示设备1115(a)和右显示设备1115(b)保持在用户的眼睛前方。显示设备1115(a)和1115(b)可以一起工作或独立地工作,以向用户呈现一幅图像或一系列图像。虽然增强现实系统1100包括两个显示器,但是本公开的实施例可以在具有单个ned或多于两个ned的增强现实系统中实现。
109.在一些实施例中,增强现实系统1100可以包括一个或多个传感器,例如传感器1140。传感器1140可以响应于增强现实系统1100的运动而生成测量信号,且基本上可以位于框架1110的任何部位上。传感器1140可以表示各种不同感测机构中的一者或多者,例如位置传感器、惯性测量单元(inertial measurement unit,imu)、深度摄像头组件、结构光发射器和/或检测器、或它们的任意组合。在一些实施例中,增强现实系统1100可以包括或不包括传感器1140,或者可以包括一个以上的传感器。在传感器1140包括imu的实施例中,imu可以基于来自传感器1140的测量信号生成校准数据。传感器1140的示例可以包括但不限于:加速度计、陀螺仪、磁力计、检测运动的其他合适类型的传感器、用于imu的误差校正的传感器、或它们的某种组合。
110.在一些示例中,增强现实系统1100还可以包括具有多个声学换能器1120(a)至1120(j)(统称为声学换能器1120)的传声器阵列。声学换能器1120可以表示检测由声波引起的气压变化的换能器。每个声学换能器1120可以被配置为检测声音,并将检测到的声音转换为电子格式(例如,模拟或数字格式)。图11中的传声器阵列例如可以包括十个声学换能器:可以被设计为放置在用户的对应耳朵内部的1120(a)和1120(b),可以被定位在框架1110上的各个位置处的声学换能器1120(c)、1120(d)、1120(e)、1120(f)、1120(g)和1120(h),和/或可以被定位在对应的颈带1105上的声学换能器1120(i)和1120(j)。
111.在一些实施例中,声学换能器1120(a)至1120(j)中的一个或多个声学换能器可以用作输出换能器(例如,扬声器)。例如,声学换能器1120(a)和/或1120(b)可以是耳塞或任何其他合适类型的耳机(headphone)或扬声器。
profile)和形状要素,同时仍然保持所期望的功能。例如,由于用户可以在其肩膀上承受比他们在其头部上承受的更重的重量载荷,因此颈带1105可以允许部件被包括在颈带1105中,否则该部件将被包括在眼镜设备上。颈带1105还可以具有更大的表面积,以在该表面积上将热量扩散和散发到周围环境。因此,与在独立眼镜设备上以其他方式可行的电池和计算能力相比,颈带1105可以允许更强的电池和计算能力。由于颈带1105中携带的重量可以比眼镜设备1102中携带的重量对用户的侵害更小,因此与用户会承受佩戴重的独立眼镜设备相比,用户可以承受佩戴更轻的眼镜设备并携带或佩戴配对设备的时间更长,从而使得用户能够更充分地将人工现实环境融入到他们的日常活动中。
118.颈带1105可以与眼镜设备1102通信耦接,和/或通信耦接至其他设备。这些其他设备可以向增强现实系统1100提供某些功能(例如,追踪、定位、深度映射(depth mapping)、处理、存储等)。在图11的实施例中,颈带1105可以包括两个声学换能器(例如,1120(i)和1120(j)),所述两个声学换能器是传声器阵列的一部分(或潜在地形成它们自身的传声器子阵列)。颈带1105还可以包括控制器1125和电源1135。
119.颈带1105中的声学换能器1120(i)和1120(j)可以被配置为检测声音并将检测到的声音转换为电子格式(模拟或数字)。在图11的实施例中,声学换能器1120(i)和1120(j)可以被定位在颈带1105上,从而增加颈带的声学换能器1120(i)和1120(j)与被定位在眼镜设备1102上的其他声学换能器1120之间的距离。在一些情况下,增加传声器阵列的声学换能器1120之间的距离可以提高经由传声器阵列执行的波束成形的准确性。例如,如果声学换能器1120(c)和1120(d)检测到声音,且声学换能器1120(c)与1120(d)之间的距离例如大于声学换能器1120(d)与1120(e)之间的距离,则所确定的检测到的声音的源位置可以比如果该声音是由声学换能器1120(d)和1120(e)检测到的情况更准确。
120.颈带1105中的控制器1125可以处理由颈带1105和/或增强现实系统1100上的传感器生成的信息。例如,控制器1125可以处理来自传声器阵列的信息,该信息描述由传声器阵列检测到的声音。对于每个检测到的声音,控制器1125可以执行波达方向(direction-of-arrival,doa)估计,以估计检测到的声音到达传声器阵列的方向。当传声器阵列检测到声音时,控制器1125可以用该信息填充音频数据集。在增强现实系统1100包括惯性测量单元的实施例中,控制器1125可以根据位于眼镜设备1102上的imu来计算所有惯性计算和空间计算。连接器可以在增强现实系统1100与颈带1105之间、以及在增强现实系统1100与控制器1125之间传达信息。该信息可以是以下形式:光学数据、电气数据、无线数据、或任何其他可传输的数据形式。将对增强现实系统1100所生成的信息的处理转移到颈带1105,可以减少眼镜设备1102中的重量和热量,以使该眼镜设备对用户而言更舒适。
121.颈带1105中的电源1135可以向眼镜设备1102和/或颈带1105提供电力。电源1135可以包括但不限于:锂离子电池、锂聚合物电池、锂原电池(primary lithium batteries)、碱性电池、或任何其他形式的电力存储器。在一些情况下,电源1135可以是有线电源。在颈带1105上而不是在眼镜设备1102上包括电源1135,可以帮助更好地分配由电源1135生成的重量和热量。
122.如所提到的,一些人工现实系统可以使用虚拟体验来基本上替换用户对真实世界的一个或多个感官感知,而不是将人工现实与实际现实混合。这种类型的系统的一个示例是大部分或完全地覆盖用户的视场的头戴式显示系统,例如图12中的虚拟现实系统1200。
虚拟现实系统1200可以包括前部刚性体1202和被成形为适配围绕用户头部的带1204。虚拟现实系统1200还可以包括输出音频换能器1206(a)和1206(b)。此外,虽然未在图12中显示,但是前部刚性体1202可以包括一个或多个电子元件,该一个或多个电子元件包括一个或多个电子显示器、一个或多个惯性测量单元(imu)、一个或多个追踪发射器或检测器、和/或用于创建人工现实体验的任何其他合适的设备或系统。
123.人工现实系统可以包括各种类型的视觉反馈机制。例如,增强现实系统1100中和/或虚拟现实系统1200中的显示设备可以包括:一个或多个液晶显示器(liquid crystal display,lcd)、发光二极管(light emitting diode,led)显示器、微型led显示器、有机led(organic led,oled)显示器、数字光投射(digital light project,dlp)微型显示器、硅基液晶(liquid crystal on silicon,lcos)微型显示器、和/或任何其他合适类型的显示屏。这些人工现实系统可以包括用于两只眼睛的单个显示屏,或者可以为每只眼睛提供一个显示屏,这可以允许用于变焦调整或用于校正用户的屈光不正的附加灵活性。这些人工现实系统中的一些人工现实系统还可以包括具有一个或多个透镜(例如,常规的凹透镜或凸透镜、菲涅耳(fresnel)透镜、可调节液体透镜等)的光学子系统,用户可以通过该一个或多个透镜查看显示屏。这些光学子系统可以用于各种目的,包括对光进行准直(例如,使对象看起来处于比其物理距离更远的距离处)、放大(例如,使对象看起来比其实际尺寸更大)、和/或中继(例如,中继到观看者的眼睛)。这些光学子系统可以用于直视型架构(non-pupil-forming architecture)(例如,直接对光进行准直但会导致所谓的枕形失真(pincushion distortion)的单透镜配置)和/或非直视型架构(pupil-forming architecture)(例如,产生所谓的桶形失真(barrel distortion)以消除枕形失真的多透镜配置)。
124.除了使用显示屏之外、或代替使用显示屏,本文所描述的一些人工现实系统可以包括一个或多个投影系统。例如,增强现实系统1100中和/或虚拟现实系统1200中的显示设备可以包括微型led投影仪,该微型led投影仪将光投射(例如,使用波导投射)到显示设备中,该显示设备例如为允许环境光通过的透明组合透镜。显示设备可以将所投射的光朝向用户的瞳孔折射,且可以使得用户能够同时观看人工现实内容和真实世界两者。显示设备可以使用各种不同光学部件中的任何一种光学部件来实现这一点,这些不同光学部件包括波导部件(例如,全息元件、平面元件、衍射元件、偏振元件、和/或反射波导元件)、光操纵表面和元件(例如,衍射元件和光栅、反射元件和光栅、以及折射元件和光栅)、耦合元件等。人工现实系统还可以配置有任何其他合适类型或形式的图像投影系统,例如用于虚拟视网膜显示器的视网膜投影仪。
125.本文所描述的人工现实系统还可以包括各种类型的计算机视觉部件和子系统。例如,增强现实系统1100和/或虚拟现实系统1200可以包括:一个或多个光学传感器,例如二维(two-dimensional,2d)摄像头或3d摄像头、结构光发射器和检测器、飞行时间深度传感器、单光束测距仪或扫描激光测距仪、3d lidar传感器、和/或任何其他合适类型或形式的光学传感器。人工现实系统可以处理来自这些传感器中的一个或多个传感器的数据,以识别用户的位置、绘制真实世界的地图、向用户提供与真实世界周围环境有关的背景、和/或执行各种其他功能。
126.本文所描述的人工现实系统还可以包括一个或多个输入和/或输出音频换能器。输出音频换能器可以包括音圈扬声器、带式扬声器、静电式扬声器、压电式扬声器、骨传导
换能器、软骨传导换能器、耳屏振动换能器、和/或任何其他合适类型或形式的音频换能器。类似地,输入音频换能器可以包括电容式传声器、动态传声器、带式传声器、和/或任何其他类型或形式的输入换能器。在一些实施例中,可以将单个换能器用于音频输入和音频输出两者。
127.在一些实施例中,本文所描述的人工现实系统还可以包括触觉(tactile)(例如,触觉(haptic))反馈系统,该触觉反馈系统可以结合到头饰、手套、服装、手持控制器、环境设备(例如,椅子、地板垫等)、和/或任何其他类型的设备或系统中。触觉反馈系统可以提供各种类型的皮肤反馈,这些类型的皮肤反馈包括振动、推力、牵拉、质地、和/或温度。触觉反馈系统还可以提供各种类型的动觉反馈,例如运动和顺应性。可以使用电机、压电式致动器、流体系统、和/或各种其他类型的反馈机构实现触觉反馈。触觉反馈系统可以独立于其他人工现实设备而实现,在其他人工现实设备内实现,和/或结合其他人工现实设备实现。
128.通过提供触觉知觉、听觉内容和/或视觉内容,人工现实系统可以在各种背景和环境中创建完整的虚拟体验或增强用户的真实世界体验。例如,人工现实系统可以辅助或扩展用户在特定环境中的感知、记忆或认知。一些系统可以增强用户与真实世界中的其他人的交互,或者可以实现与虚拟世界中的其他人的更沉浸式的交互。人工现实系统也可以用于教育目的(例如,用于学校、医院、政府机构、军事机构、企业等中的教学或训练)、娱乐目的(例如,用于玩视频游戏、听音乐、观看视频内容等)、和/或用于可接入性目的(例如,用作助听器、视觉辅助器等)。本文所公开的实施例可以在这些背景和环境中的一个或多个背景和环境中、和/或在其他背景和环境中实现或增强用户的人工现实体验。
129.如上所详细说明的,本文所描述和/或所示出的计算设备和系统广泛地表示能够执行计算机可读指令的任何类型或形式的计算设备或系统,该计算机可读指令例如为包含在本文所描述的模块内的那些计算机可读指令。在所述计算设备和系统的最基本的配置中,这些计算设备可以各自包括至少一个存储器设备和至少一个物理处理器。
130.在一些示例中,术语“存储器设备”通常是指能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一示例中,存储器设备可以存储、加载和/或维护本文所描述的一个或多个模块。存储器设备的示例包括但不限于:随机存取存储器(random access memory,ram)、只读存储器(read only memory,rom)、闪存、硬盘驱动器(hard disk drive,hdd)、固态驱动器(solid-state drive,ssd)、光盘驱动器、高速缓存、它们中的一个或多个的变型或组合、或任何其他合适的存储器内存。
131.在一些示例中,术语“物理处理器”通常是指能够解释和/或执行计算机可读指令的任何类型或形式的硬件实现的处理单元。在一个示例中,物理处理器可以访问和/或修改存储在上述存储器设备中的一个或多个模块。物理处理器的示例包括但不限于:微处理器、微控制器、中央处理单元(cpu)、实现软核处理器的现场可编程门阵列(field-programmable gate array,fpga)、专用集成电路(application-specific integrated circuit,asic)、它们中的一个或多个的部分、它们中的一个或多个的变型或组合、或任何其他合适的物理处理器。
132.虽然本文所描述和/或所示出的模块被示出为单独的元件,但是这些模块可以表示单个模块或应用程序的部分。另外,在某些实施例中,这些模块中的一个或多个模块可以表示一个或多个软件应用程序或程序,该一个或多个软件应用程序或程序在被计算设备执
行时,可以使该计算设备执行一个或多个任务。例如,本文所描述和/或所示出的一个或多个模块可以表示被存储并配置为在本文所描述和/或所示出的一个或多个计算设备或系统上运行的模块。这些模块中的一个或多个模块还可以表示被配置为执行一个或多个任务的一个或多个专用计算机的全部或部分。
133.另外,本文所描述的一个或多个模块可以将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。例如,本文所陈述的一个或多个模块可以接收待转换的api调用,转换该api调用,输出转换结果以安全地流式传输视频游戏,使用该转换结果来安全地流式传输视频游戏,并存储该转换结果以保存跨游戏会话的用户数据。附加地或可替换地,本文所陈述的一个或多个模块可以通过在计算设备上执行、在计算设备上存储数据、和/或以其他方式与计算设备交互,来将处理器、易失性存储器、非易失性存储器、和/或物理计算设备的任何其他部分从一种形式转换成另一种形式。
134.在一些实施例中,术语“计算机可读介质”通常是指能够存储或承载计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例包括但不限于:传输型介质和非暂态型介质,该传输型介质例如为载波,该非暂态型介质例如为磁存储介质(例如,硬盘驱动器、磁带驱动器和软盘)、光存储介质(例如,光盘(compact disk,cd)、数字视频盘(digital video disk,dvd)和blu-ray盘)、电子存储介质(例如,固态驱动器和闪存介质)、以及其他分发系统。
135.本文所描述和/或所示出的过程参数和步骤顺序仅作为示例给出,并且可以根据需要进行改变。例如,虽然本文所示出和/或所描述的步骤可以以特定顺序示出或论述,但这些步骤不一定需要以所示出或所论述的顺序来执行。本文所描述和/或所示出的各种示例性方法还可以省略本文所描述或所示出的一个或多个步骤,或者可以包括除了所公开的那些步骤之外的附加步骤。
136.已经提供了前面的描述来使本领域其他技术人员能够最优地利用本文所公开的示例性实施例的各个方面。该示例性描述不旨在是详尽的或限于所公开的任何精确形式。在不脱离本公开的精神和范围的情况下,许多修改和变型是可能的。本文所公开的实施例在所有方面都应被认为是说明性的而非限制性的。在确定本公开的范围时,应当参考所附权利要求及其等同物。
137.除非另有说明,否则如说明书和权利要求书中所使用的术语“连接到”和“耦接到”(及其派生词)应被解释为允许直接连接和间接(即,经由其他元件或组件)连接两者。此外,如说明书和权利要求书中所使用的术语“一(a)”或“一(an)”应被解释为表示“中的至少一个”。最后,为了便于使用,如说明书和权利要求书中所使用的术语“包括(including)”和“具有”(及其派生词)可以与词语“包括(comprising)”互换并且具有相同的含义。

技术特征:
1.一种计算机实现的方法,包括:向云游戏环境提供多个容器,所述多个容器共享单个操作系统实例;将所述多个容器内的每个容器分配给对应的用户;在所述多个容器内的每个容器内,并发地执行对应的视频游戏实例;以及将来自所述多个容器内的每个容器的视频游戏实例从所述云游戏环境并发地流式传输到对应的客户端系统。2.根据权利要求1所述的计算机实现的方法,其中,所述多个容器内的每个容器包括对应的沙盒,所述对应的沙盒在所述容器的所述视频游戏实例与所述操作系统实例之间进行中介。3.根据权利要求2所述的计算机实现的方法,其中,对于所述多个容器内的每个容器,所述对应的沙盒被配置为:拦截和修改由所述容器的所述视频游戏实例执行的一个或多个系统调用。4.根据权利要求3所述的计算机实现的方法,其中,拦截和修改所述一个或多个系统调用包括:拦截对存储持久性数据的尝试;以及将对存储所述持久性数据的所述尝试重定向到被配置用于所述对应的用户的跨会话的数据持久性的存储位置。5.根据权利要求3所述的计算机实现的方法,其中,拦截和修改所述一个或多个系统调用包括:拦截和修改对物理图形处理单元的调用;以及将经修改的所述调用传递给所述物理图形处理单元。6.根据权利要求3所述的计算机实现的方法,其中,拦截和修改所述一个或多个系统调用包括:拦截对访问对于所述操作系统实例而言是唯一的系统资源的系统调用;以及将对访问对于所述操作系统实例而言是唯一的所述系统资源的所述系统调用修改成访问不同的资源。7.根据权利要求3所述的计算机实现的方法,其中,拦截和修改所述一个或多个系统调用包括:修改所述视频游戏实例的面向用户的行为。8.根据权利要求1所述的计算机实现的方法,其中,所述多个容器内的每个容器将对应的用户彼此隔离,以使一个容器内的用户数据不能够由另一个容器访问。9.根据权利要求1所述的计算机实现的方法,其中,所述多个容器被部署在单个虚拟机内。10.根据权利要求1所述的计算机实现的方法,其中,对于所述多个容器内的每个容器,对应的服务器在对应的用户的对应的客户端系统与该容器之间进行中介,从该容器采集显示数据和音频数据以转发给所述对应的客户端系统,并从所述对应的客户端系统接收输入数据以转发给该容器。11.一种系统,包括:至少一个物理处理器;物理存储器,所述物理存储器包括计算机可执行指令,所述计算机可执行指令在由所
述物理处理器执行时,使所述物理处理器:向云游戏环境提供多个容器,所述多个容器共享单个操作系统实例;将所述多个容器内的每个容器分配给对应的用户;在所述多个容器内的每个容器内,并发地执行对应的视频游戏实例;以及将来自所述多个容器内的每个容器的视频游戏实例从所述云游戏环境并发地流式传输到对应的客户端系统。12.根据权利要求11所述的系统,其中,所述多个容器内的每个容器包括对应的沙盒,所述对应的沙盒在所述容器的所述视频游戏实例与所述操作系统实例之间进行中介。13.根据权利要求12所述的系统,其中,对于所述多个容器内的每个容器,所述对应的沙盒被配置为:拦截和修改由所述容器的所述视频游戏实例执行的一个或多个系统调用。14.根据权利要求13所述的系统,其中,拦截和修改所述一个或多个系统调用包括:拦截对存储持久性数据的尝试;以及将对存储所述持久性数据的所述尝试重定向到被配置用于所述对应的用户的跨会话的数据持久性的存储位置。15.根据权利要求13所述的系统,其中,拦截和修改所述一个或多个系统调用包括:拦截和修改对物理图形处理单元的调用;以及将经修改的所述调用传递给所述物理图形处理单元。16.根据权利要求13所述的系统,其中,拦截和修改所述一个或多个系统调用包括:拦截对访问对于所述操作系统实例而言是唯一的系统资源的系统调用;以及将对访问对于所述操作系统实例而言是唯一的所述系统资源的所述系统调用修改成访问不同的资源。17.根据权利要求13所述的系统,其中,拦截和修改所述一个或多个系统调用包括:修改所述视频游戏实例的面向用户的行为。18.根据权利要求11所述的系统,其中,所述多个容器内的每个容器将对应的用户彼此隔离,以使一个容器内的用户数据不能够由另一个容器访问。19.根据权利要求11所述的系统,其中,所述多个容器被部署在单个虚拟机内。20.一种非暂态计算机可读介质,所述非暂态计算机可读介质包括一个或多个计算机可执行指令,所述一个或多个计算机可执行指令在由计算设备的至少一个处理器执行时,使所述计算设备:向云游戏环境提供多个容器,所述多个容器共享单个操作系统实例;将所述多个容器内的每个容器分配给对应的用户;在所述多个容器内的每个容器内,并发地执行对应的视频游戏实例;以及从所述云游戏环境,向对应的客户端系统并发地流式传输来自所述多个容器内的每个容器的视频游戏实例。

技术总结
所公开的计算机实现的方法可以包括:(1)向云游戏环境提供多个容器,该多个容器共享单个操作系统实例,(2)将多个容器内的每个容器分配给对应的用户,(3)在多个容器内的每个容器内,并发地执行对应的视频游戏实例,以及(4)将来自多个容器内的每个容器的视频游戏实例从所述云游戏环境并发地流式传输到对应的客户端系统。还公开了各种其他方法、系统和计算机可读介质。机可读介质。机可读介质。


技术研发人员:克里斯托弗
受保护的技术使用者:元平台公司
技术研发日:2021.10.23
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐