一般に、本開示は、複数のストリーム・コンテンツ提示用の技術を記載する。本開示の技術に従い、複数のコンテンツ・ストリームは、テレビ・ゲームのようなコンテンツ・アイテムの提示に関連して使用されることができる。たとえば、複数のコンテンツ・ストリームは、クライアント・ストリームおよびコンテンツ・プロバイダ・ストリームを含むことができる。いくつかの場合において、クライアント・ストリームは、クライアント・デバイス上に挿入されたクライアント・コンテンツ・アイテム・バージョンに少なくとも部分的に基づきレンダリングされることができる一方、コンテンツ・プロバイダ・ストリームはコンテンツ・プロバイダにより実行されたコンテンツ・プロバイダ・コンテンツ・アイテム・バージョンに少なくとも部分的に基づきレンダリングされることができる。コンテンツ・プロバイダ・ストリームは、たとえば、インターネットのような電子ネットワークを使用してコンテンツ・プロバイダからクライアントへ送信されることができる。
いくつかの場合において、クライアントは、コンテンツ・アイテムの提示を開始する前または直後にコンテンツ・プロバイダとの接続を確立することができる。このような場合において、クライアントは、たとえば、クライアント・ストリームおよびコンテンツ・プロバイダ・ストリームの両方が結合され、提示用に得られるハイブリッド・ストリームを形成するハイブリッド・ストリーム・モードでコンテンツ・アイテムの提示を開始することができる。そのときクライアントは、コンテンツ・アイテムの提示中のある時点で、コンテンツ・プロバイダ・ストリームが利用できなくなっていることを検出することができる。このような判定に応じて、クライアントはクライアント・ストリームがコンテンツ・プロバイダ・ストリームを使用しないでコンテンツ・アイテムの提示へ使用される、クライアント・ストリーム・モードでコンテンツ・アイテムを提示し続けることができる。いくつかの場合において、コンテンツ・プロバイダ・ストリームが再び利用可能になっていることを検出すると、クライアントはハイブリッド・ストリーム・モードに切り替えることができ、もう一度、提示用にクライアント・ストリームおよびコンテンツ・プロバイダ・ストリームの両方を使用することができる。
いくつかの場合において、クライアント・ストリームは、たとえば、より重要度の高い機能を有することができる一方、コンテンツ・プロバイダ・ストリームは、たとえば、より重要度の低い機能を有することができる。また、いくつかの場合において、クライアント・ストリームは、たとえば、基本機能セットを含むことができる一方、コンテンツ・プロバイダ・ストリームは、たとえば、任意の機能セットを含むことができる。クライアント・ストリームは、たとえば、クライアント・ストリームが単独で、コンテンツ・アイテムを一時停止するまたは再始動することなく、少なくとも一時的に提示することを可能にするための少なくとも十分な機能を有することができる。いくつかの場合において、クライアント・ストリームは、1つ以上のオブジェクトのより低複雑バージョンを含むことができる一方、コンテンツ・プロバイダ・ストリームは1つ以上のオブジェクトのより高複雑バージョンを含むことができる。これは、たとえば、コンテンツ・プロバイダ・ストリームが得られた提示ストリームに含まれるときに、さまざまなオブジェクトをより現実的におよび/またはより詳細に表示することを可能にすることができる。
コンテンツ・プロバイダは、いくつかの場合において、インターネットのような電子ネットワーク経由でクライアントへ、コンテンツ・プロバイダ・ストリームを含む、コンテンツをレンダリングし送信することができる。コンテンツは、いくつかの場合において、たとえば、コンテンツ配信技術のストリーミングを使用して、クライアントへ要求に応じて提供されることができる。クライアントへコンテンツのレンダリングおよび送信を可能にする例示的なコンピューティング環境を今から詳細に説明する。特に、図1は、本明細書に記載された実施形態を実装することができる例示的なコンピューティング環境を説明する。図1は、通信ネットワーク230を介してユーザ・コンピュータ202aおよび202b(本明細書で、単数でコンピュータ202または複数でコンピュータ202と言われることができる)を介してユーザ200aおよび200b(本明細書で、単数でユーザ200または複数でユーザ200と言われることができる)へコンピューティング・リソースを提供することが可能であるデータ・センタ210の実施例を概略的に説明する図解である。データ・センタ210は、永続的にまたは必要に応じてアプリケーションを実行するためにコンピューティング・リソースを提供するように構成されることができる。データ・センタ210により提供されたコンピューティング・リソースは、ゲートウェイ・リソース、ロード・バランシング・リソース、ルーティング・リソース、ネットワーク・リソース、コンピューティング・リソース、揮発性および不揮発性メモリ・リソース、コンテンツ配信リソース、データ処理リソース、データ・ストレージ・リソース、データ通信リソース等のような、さまざまな種類のリソースを含むことができる。コンピューティング・リソースの各タイプは、汎用であってもよい、または複数の具体的な構成で利用可能であってもよい。たとえば、データ処理リソースは、さまざまなウェブ・サービスを提供するように構成されることができる仮想マシン・インスタンスとして利用可能であってもよい。加えて、リソースの組み合わせは、ネットワーク経由で利用可能にされてもよく、1つ以上のウェブ・サービスとして構成されてもよい。インスタンスは、アプリケーション・サービス、メディア・サービス、データベース・サービス、処理サービス、ゲートウェイ・サービス、ストレージ・サービス、ルーティング・サービス、セキュリティ・サービス、暗号化サービス、ロード・バランシング・サービス、アプリケーション・サービス等のような、ウェブ・サービスを含む、アプリケーションを実行するように構成されることができる。これらのサービスは、セットまたはカスタム・アプリケーションで構成可能であってもよく、サイズ、実行、コスト、レイテンシ、タイプ、持続時間、アクセシビリティ、および任意の他の様相で構成可能であってもよい。これらのウェブ・サービスは、1人以上のクライアント用の利用可能なインフラストラクチャとして構成されることができ、1人以上のクライアント用のプラットフォームとして、またはソフトウェアとして構成された1つ以上のアプリケーションを含むことが可能である。これらのウェブ・サービスは、1つ以上の通信プロトコルを介して利用可能にされてもよい。これらの通信プロトコルは、たとえば、ハイパーテキスト・トランスファ・プロトコル(HTTP)または非HTTPプロトコルを含むことができる。これらの通信プロトコルは、たとえば、トランスミッション・コントロール・プロトコル(TCP)のような、より信頼性の高いトランスポート層およびユーザ・データグラム・プロトコル(UDP)のような、より信頼性の低いトランスポート層をまた含むことができる。データ・ストレージ・リソースは、ファイル・ストレージ・デバイス、ブロック・ストレージ・デバイス等を含むことができる。
コンピューティング・リソースの各タイプまたは構成は、多数のプロセッサ、大容量のメモリおよび/または大容量のストレージ容量からなる大規模なリソース、および少数のプロセッサ、小容量のメモリおよび/また小容量のストレージ容量からなる小規模なリソースのような、異なるサイズで利用可能であることができる。顧客は、たとえば、ウェブ・サーバとして複数の小規模な処理リソース、および/またはデータベース・サーバとして1つの大規模な処理リソースを割り当てることを選択することができる。
データ・センタ210は、コンピューティング・リソースを提供するサーバ216a〜b(本明細書で、単数でサーバ216または複数でサーバ216と言われることができる)を含むことができる。これらのリソースは、ベア・メタル・リソースとして、または仮想マシン・インスタンス218a〜d(本明細書で、単数で仮想マシン・インスタンス218または複数で仮想マシン・インスタンス218と言われることができる)として利用可能であることができる。仮想マシン・インスタンス218cおよび218dは、複数のストリーム仮想マシン(「MSVM」)・インスタンスである。このMSVM仮想マシン・インスタンス218cおよび218dは、詳細に以下に記載され、本開示と関連する複数のストリーム提示用のコンテンツ・プロバイダ・ストリームを生成するための技術のすべてまたは任意の部分を実行するように構成されることができる。理解されるように、図1で説明された特定の実施例は、各サーバに1つのMSVM仮想マシンを含むが、これは単に実施例である。サーバは2つ以上のMSVM仮想マシンを含んでもよい、または任意のMSVM仮想マシンを含まなくてもよい。
コンピューティング・ハードウェア用の仮想化技術の可用性は、顧客用の大規模なコンピューティング・リソースを供給し、コンピューティング・リソースを複数の顧客間で効率的かつ安全に共有することを可能にする利点を提供している。たとえば、仮想化技術は、物理的なコンピューティング・デバイスがホストする1つ以上の仮想マシン・インスタンスを各ユーザに提供することで、物理的なコンピューティング・デバイスを複数のユーザ間で共有することを可能にすることができる。仮想マシン・インスタンスは、異なる論理的なコンピューティング・システムとして作用する特定の物理的なコンピューティング・システムのソフトウェア・エミュレーションであってもよい。このような、仮想マシン・インスタンスは、所与の物理的なコンピューティング・リソースを共有する複数のオペレーティング・システム間の分離を提供する。さらにまた、いくつかの仮想化技術は、複数の異なる物理的なコンピューティング・システムに及ぶ複数の仮想プロセッサを備える単一の仮想マシン・インスタンスのような、1つ以上の物理的なリソースに及ぶ仮想リソースを供給することができる。
図1を参照して、通信ネットワーク230は、たとえば、インターネットのような、リンクされたネットワークの公的にアクセス可能なネットワークであってもよく、さまざまな異なる関係者によりおそらく操作されることができる。他の実施形態において、通信ネットワーク230は、特権のないユーザに全体的にまたは部分的にアクセスできない企業ネットワークまたは大学ネットワークのような、プライベート・ネットワークであってもよい。さらに他の実施形態において、通信ネットワーク230は、インターネットへおよび/またはインターネットからのアクセスを有する1つ以上のプライベート・ネットワークを含むことができる。
通信ネットワーク230は、コンピュータ202へのアクセスを提供することができる。ユーザ・コンピュータ202は、データ・センタ210のユーザ200または他の顧客により利用されるコンピュータであってもよい。たとえば、ユーザ・コンピュータ202aもしくは202bは、データ・センタ210にアクセス可能な、サーバ、デスクトップもしくはラップトップ・パーソナル・コンピュータ、タブレット・コンピュータ、無線電話、携帯情報端末(PDA)、電子ブック・リーダ、ゲーム・コンソール、セット・トップ・ボックスまたは任意の他のコンピューティング・デバイスであってもよい。ユーザ・コンピュータ202aまたは202bは、インターネット(たとえば、ケーブル・モデムまたはデジタル加入者線(DSL)経由で)へ直接に接続することができる。2つのユーザ・コンピュータ202aおよび202bのみを描写するが、複数のユーザ・コンピュータがあることができることを理解するべきである。
ユーザ・コンピュータ202はまた、データ・センタ210により提供されたコンピューティング・リソースの態様を構成するために利用されることができる。この点について、データ・センタ210は、その動作態様がユーザ・コンピュータ202上で実行するウェブ・ブラウザ・アプリケーション・プログラムの使用を通じて構成されることができる、ゲートウェイまたはウェブ・インタフェースを提供することができる。あるいは、ユーザ・コンピュータ202上で実行するスタンドアロン・アプリケーション・プログラムは、構成動作を実行するためにデータ・センタ210により公開されたアプリケーション・プログラミング・インタフェース(API)にアクセスすることができる。データ・センタ210で利用可能な、さまざまなウェブ・サービスの動作を構成するための他の機構をまた利用することができる。
図1で説明されたサーバ216は、上記のコンピューティング・リソースを提供するために適切に構成された標準サーバであってもよいし、1つ以上のウェブ・サービスおよび/またはアプリケーションを実行するためのコンピューティング・リソースを提供することができる。1つの実施形態において、コンピューティング・リソースは、仮想マシン・インスタンス218であってもよい。仮想マシン・インスタンスの実施例において、各サーバ216は、仮想マシン・インスタンス218を実行可能なインスタンス・マネージャ220aまたは220b(本明細書で、単数でインスタンス・マネージャ220または複数でインスタンス・マネージャ220と言われることができる)を実行するように構成されることができる。インスタンス・マネージャ220は、たとえば、サーバ216上で仮想マシン・インスタンス218の実行を可能にするように構成された1つの仮想マシン・モニタ(VMM)または別の種類のプログラムであってもよい。上記のように、各仮想マシン・インスタンス218は、アプリケーションのすべてまたは一部を実行するように構成されることができる。
上記で開示された実施形態は仮想マシン・インスタンスのコンテキストを検討するが、他の種類の実装は、本明細書に記載されたコンセプトおよび技術を用いて利用されることが可能であることを理解するべきである。たとえば、本明細書に開示された実施形態はまた、仮想マシン・インスタンスを利用しないコンピューティング・システムを用いて利用されることができる。
図1で説明された例示的なデータ・センタ210において、ルータ214は、サーバ216aおよび216bを相互接続するために利用されることができる。ルータ214はまた、通信ネットワーク230に接続される、ゲートウェイ240に接続されることができる。ルータ214は、1つ以上のロード・バランサに接続されることができ、単独でまたは組み合わせて、たとえば、このような通信特性(たとえば、ソースおよび/または宛先アドレス、プロトコル識別子、サイズ、処理要件等を含むヘッダ情報)および/またはプライベート・ネットワーク特性(たとえば、ネットワーク・トポロジ等に基づくルート)に適切に基づくように、パケットまたは他のデータ通信を転送することで、データ・センタ210でネットワーク内の通信を管理することができる。簡潔さのために、この実施例のコンピューティング・システムおよび他のデバイスのさまざまな態様が特定の従来の詳細を説明することなく図示されることを理解されるであろう。追加のコンピューティング・システムおよび他のデバイスは、他の実施形態で相互接続されることができ、異なる方式で相互接続されることができる。
図1で説明された例示的なデータ・センタ210において、サーバ・マネージャ215はまた、サーバ216aおよび216bへの、これらからの、および/またはこれらの間のさまざまな通信に少なくとも部分的に直接に使用される。図1はゲートウェイ240およびサーバ・マネージャ215間に配置されたルータ214を描写するが、これは単に例示的な構成である。いくつかの場合において、たとえば、サーバ・マネージャ215は、ゲートウェイ240およびルータ214間に配置されることができる。サーバ・マネージャ215は、いくつかの場合において、ユーザ・コンピュータ202からの通信を着信する部分を検査することができ、着信する通信を受信する、および/または処理する、1つ以上の適切なサーバ216を決定する。サーバ・マネージャ215は、ユーザ・コンピュータ202に関連付けられた識別情報、位置または他の属性、通信が関連するタスクの特性、通信が関連するタスクの優先順位、通信が関連するタスクの期間、通信が関連するタスクのサイズおよび/または推定されたリソース使用状況、および多くの他の要因のような、要因に基づき着信する通信を受信する、および/または処理する、適切なサーバを決定することができる。サーバ・マネージャ215は、たとえば、通信およびこのようなタスクに関連付けられた他の動作の管理を支援するために、たとえば、さまざまなタスクに関連付けられた状態情報および他の情報へのアクセスを収集する、またはその他の方法でこれを有することができる。
図1で説明されたネットワーク・トポロジが大幅に簡略化されていて、より多くのネットワークおよびネットワーキング・デバイスが本明細書に開示されたさまざまなコンピューティング・システムに相互接続するために利用されることができることを理解するべきである。これらのネットワーク・トポロジおよびデバイスは、当業者に明らかであろう。
図1で説明されたデータ・センタ210が単に例示であり、他の実装を利用することができることをまた理解するべきである。加えて、本明細書に開示された機能がソフトウェア、ハードウェアまたはソフトウェアおよびハードウェアの組み合わせに実装されることができることを理解するべきである。他の実装は、当業者に明らかであろう。サーバ、ゲートウェイまたは他のコンピューティング・デバイスは、制限なく、デスクトップまたは他のコンピュータ、データベース・サーバ、ネットワーク・ストレージ・デバイスおよび他のネットワーク・デバイス、PDA、タブレット、携帯電話、無線電話、ページャ、電子手帳、インターネット・アプライアンス、テレビジョン・ベース・システム(たとえば、セット・トップ・ボックスおよび/またはパーソナル/デジタル・ビデオ・レコーダ)および適切な通信能力を有するさまざまな他の消費生活用製品を含む機能の記載された種類に相互作用して実行することが可能である、ハードウェアまたはソフトウェアの任意の組み合わせを備えることができることを理解するべきである。加えて、図示されたモジュールにより提供された機能は、いくつかの実施形態において、より少ないモジュールに結合されることができる、または追加のモジュールに分散されることができる。同様に、いくつかの実施形態において、図示されたモジュールのいくつかの機能は、提供されなくてもよい、および/または他の追加の機能は利用可能であることができる。
少なくともいくつかの実施形態において、本明細書に記載された技術のうちの1つ以上の一部またはすべてを実装するサーバは、1つ以上のコンピュータ・アクセス可能なメディアを含む、またはこれにアクセスするように構成される、汎用コンピュータ・システムを含むことができる。図2は、1つ以上のコンピュータ・アクセス可能なメディアを含む、またはこれにアクセスするように構成される汎用コンピュータ・システムを描写する。図示された実施形態において、コンピューティング・デバイス100は、入力/出力(I/O)インタフェース30を介してシステム・メモリ20へ結合された1つ以上のプロセッサ10a、10bおよび/または10n(本明細書で、単数でプロセッサ10、または複数でプロセッサ10と言われることができる)を含む。さらにコンピューティング・デバイス100は、I/Oインタフェース30へ結合されたネットワーク・インタフェース40を含む。
さまざまな実施形態において、コンピューティング・デバイス100は、1つのプロセッサ10を含むユニプロセッサ・システム、またはいくつかのプロセッサ10(たとえば、2、4、8または別の適切な数)を含むマルチプロセッサ・システムであってもよい。プロセッサ10は、インストラクションを実行可能な任意の適切なプロセッサであってもよい。たとえば、さまざまな実施形態において、プロセッサ10は、x86,PowerPC、SPARCまたはMIPS ISAまたは任意の他の適切なISAのような、さまざまなインストラクション・セット・アーキテクチャ(ISA)のいずれかを実装する汎用または組み込みプロセッサであってもよい。マルチプロセッサ・システムにおいて、各プロセッサ10は、同じISAを一般に実装するが、必ずしもこれを実装しなくてもよい。
システム・メモリ20は、プロセッサ(複数を含む)10によりアクセス可能なインストラクションおよびデータを格納するように構成されることができる。さまざまな実施形態において、システム・メモリ20は、スタティック・ランダム・アクセス・メモリ(SRAM)、同期ダイナミックRAM(SDRAM)、不揮発性/Flash(登録商標)型メモリまたは任意の他の種類のメモリのような、任意の適切なメモリ技術を使用して実装されることができる。図示された実施形態において、上記のこれらの方法、技術およびデータのような、1つ以上の所望の機能を実装するプログラム・インストラクションおよびデータは、コード25およびデータ26としてシステム・メモリ20内に格納されて示される。
1つの実施形態において、I/Oインタフェース30は、ネットワーク・インタフェース40または他の周辺インタフェースを含む、デバイス中のプロセッサ10、システム・メモリ20および任意の周辺機器間でI/Oトラフィックを調整するように構成されることができる。いくつかの実施形態において、I/Oインタフェース30は、任意の必要なプロトコル、タイミングまたは他のデータ変換を実行でき、データ信号を1つのコンポーネント(たとえば、システム・メモリ20)から別のコンポーネント(たとえば、プロセッサ10)で使用するために適切なフォーマットへ変換する。いくつかの実施形態において、I/Oインタフェース30は、たとえば、ペリフェラル・コンポーネント・インターコネクト(PCI)・バス規格またはユニバーサル・シリアル・バス(USB)規格の変形のような、さまざまな種類のペリフェラル・バスを介して取り付けられたデバイスへの支援を有することができる。いくつかの実施形態において、I/Oインタフェース30の機能は、たとえば、ノース・ブリッジおよびサウス・ブリッジのような、2つ以上の別々のコンポーネントに分割されることができる。また、いくつかの実施形態において、システム・メモリ20へのインタフェースのような、I/Oインタフェース30の機能のいくつかまたはすべては、直接にプロセッサ10に組み込まれることができる。
ネットワーク・インタフェース40は、たとえば、他のコンピュータ・システムまたはデバイスのような、1つのネットワークまたは複数のネットワーク50に接続された、コンピューティング・デバイス100および他の1つのデバイスまたは複数のデバイス60間でデータを交換することを可能にするように構成されることができる。さまざまな実施形態において、ネットワーク・インタフェース40は、たとえば、イーサネット・ネットワーク・タイプのような、任意の適切な有線または無線の一般的なデータ・ネットワーク経由で通信を支援することができる。加えて、ネットワーク・インタフェース40は、ファイバ・チャネルSANのようなストレージ・エリア・ネットワーク(「SAN」)経由で、またはネットワークおよび/またはプロトコルの任意の他の適切なタイプ経由で、アナログ音声ネットワークまたはデジタル・ファイバ通信ネットワークのような電信/電話ネットワークを介して通信を支援することができる。
いくつかの実施形態において、システム・メモリ20は、対応する方法および装置の実施形態を実装するために上記のようなプログラム・インストラクションおよびデータを格納するように構成されたコンピュータ・アクセス可能なメディアの1つの実施形態であってもよい。しかしながら、他の実施形態において、プログラム・インストラクションおよび/またはデータは、異なるタイプのコンピュータ・アクセス可能なメディア上で受信される、送信されるまたは格納されることができる。一般的に言えば、コンピュータ・アクセス可能なメディアは、たとえば、I/Oインタフェース30経由でコンピューティング・デバイス100へ結合されたディスクまたはDVD/CDの、磁気または光メディアのような、非一時的なストレージ・メディアまたはメモリ・メディアを含むことができる。非一時的なコンピュータ・アクセス可能なストレージ・メディアはまた、システム・メモリ20または別の種類のメモリとしてコンピューティング・デバイス100のいくつかの実施形態に含まれることができる、RAM(たとえば、SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM(読み出し専用メモリ)等のような、任意の揮発性または不揮発性メディアを含むことができる。さらに、コンピュータ・アクセス可能なメディアは、ネットワーク・インタフェース40を介して実装されることができるこれらのような、ネットワークおよび/または無線リンクのような通信メディアを介して搬送された電気、電磁またはデジタル信号のような伝送メディアまたは信号を含むことができる。図2で説明されたこれらのような複数のコンピューティング・デバイスの部分またはすべては、さまざまな実施形態において記載された機能を実装するために使用されることができ、たとえば、さまざまな異なるデバイスおよびサーバ上で実行するソフトウェア・コンポーネントは、機能を提供するために連携することができる。いくつかの実施形態において、記載された機能の部分は、汎用コンピュータ・システムを使用して実装されることに加えて、またはこのことの代わりに、ストレージ・デバイス、ネットワーク・デバイスまたは専用コンピュータ・システムを使用して実装されることができる。本明細書で使用される用語「コンピューティング・デバイス」は、少なくともすべてのこれらの種類のデバイスを参照し、これらの種類のデバイスへ限定されない。
コンピューティング・ノードとも言われることができる、コンピュータ・ノードは、コモディティ・ハードウェア・コンピュータ、仮想マシン、ウェブ・サービス、コンピューティング・クラスタおよびコンピューティング・アプライアンスのような、多種多様のコンピューティング環境上に実装されることができる。これらのコンピューティング・デバイスまたは環境のいずれかは、便宜上、計算ノードとして記載されることができる。
企業または公共部門の組織のようなエンティティによりセット・アップされ、インターネットおよび/または他のネットワーク経由でアクセス可能な1つ以上のウェブ・サービス(様々な種類のクラウド・ベースのコンピューティングまたはストレージのような)を分散した一連のクライアントへ提供するネットワークは、プロバイダ・ネットワークと言われることができる。このような、プロバイダ・ネットワークは、プロバイダ・ネットワークにより提供されたインフラストラクチャおよびウェブ・サービスを実装し分散させることが必要な、物理的なおよび/または仮想化コンピュータ・サーバ、ストレージ・デバイス、ネットワーク機器等のような、さまざまなリソース・プールをホストする多数のデータ・センタを含むことができる。このリソースは、いくつかの実施形態において、ストレージ用のストレージ容量、処理用の処理能力、インスタンス、関連サービスのセット等としてのような、ウェブ・サービスに関連付けられたさまざまなユニット中のクライアントへ提供されることができる。仮想コンピューティング・インスタンスは、たとえば、指定された計算能力(CPUのタイプおよび数、メイン・メモリ・サイズ等を示すことで指定されることができる)および指定されたソフトウェア・スタック(たとえば、ハイパーバイザ上で実行することができる、特定のバージョンのオペレーティング・システム)を備える1つ以上のサーバを含むことができる。
複数の異なる種類のコンピューティング・デバイスは、単一でまたは組み合わせて使用されることができ、異なる実施形態において、汎用または専用コンピュータ・サーバ、ストレージ・デバイス、ネットワーク・デバイス等を含む、プロバイダ・ネットワークのリソースを実装する。いくつかの実施形態において、クライアントまたはユーザは、たとえば、ユーザに管理者ログインおよびパスワードを与えることで、リソース・インスタンスへの直接アクセスを提供されることができる。他の実施形態において、プロバイダ・ネットワーク・オペレータは、たとえば、クライアントがインスタンスまたは実行プラットフォームに直接にアクセスする必要なく、アプリケーションに適切な実行プラットフォーム(アプリケーション・サーバ・インスタンス、Java(登録商標)仮想マシン(JVM)、汎用または専用オペレーティング・システム、Ruby、Perl、Python、C、C++等のようなさまざまなインタプリタ型またはコンパイル型プログラミング言語に対応するプラットフォームまたは高性能コンピューティング・プラットフォームのような)上でクライアントに代わり指定されたクライアント・アプリケーション用の実行要件およびアプリケーションのスケジュール実行をクライアントが指定することを可能にすることができる。所与の実行プラットフォームは、いくつかの実装において、1つ以上のリソース・インスタンスを利用することができ、他の実装において、複数の実行プラットフォームは、単一リソース・インスタンスへマッピングされることができる。
多くの環境において、異なる種類の仮想化コンピューティング、ストレージおよび/または他のネットワーク・アクセス可能な機能を実装するプロバイダ・ネットワークのオペレータは、さまざまなリソース獲得モード中のリソースへのアクセスを顧客が確保するまたは取得することを可能にすることができる。コンピューティング・リソース・プロバイダは、所望のコンピューティング・リソースを選択して起動し、アプリケーション・コンポーネントをコンピューティング・リソースへ展開し、この環境で実行するアプリケーションを維持する機能を顧客のために提供することができる。加えて、コンピューティング・リソース・プロバイダは、アプリケーション変更の要求、またはこれの必要容量として、手動でまたは自動スケーリングを通して、アプリケーションに割り当てられたリソースの数および種類を迅速かつ容易に増減させる機能を顧客のためにさらに提供することができる。コンピューティング・リソース・プロバイダにより供給されたコンピューティング・リソースは、インスタンスと言われることができる、個別のユニットで利用可能にすることができる。インスタンスは、物理的なサーバ・ハードウェア・プラットフォーム、サーバ上で実行する仮想マシン・インスタンス、またはこの2つのいくつかの組み合わせを表すことができる。異なるオペレーティング・システム(OS)および/またはハイパーバイザを実行するリソースの異なるサイズを含み、さまざまなインストールされたソフトウェア・アプリケーション、実行時間等を備える、さまざまな種類および構成のインスタンスを利用可能にさせることができる。インスタンスは、たとえば、基礎となるコンピューティング・ハードウェアの、論理領域、耐障害性領域、データ・センタまたは他の地理的位置を表す、特定の可用性ゾーンでさらに利用可能であることができる。インスタンスは、1つの可用性ゾーン内または複数の可用性ゾーン間でコピーされることができ、インスタンスの冗長性を改善し、インスタンスは、特定の可用性ゾーン内または複数の可用性ゾーン間で移行されることができる。1つの実施例として、可用性ゾーン中の特定のサーバと通信するクライアントのレイテンシは、別のサーバと通信するクライアントのレイテンシより短い可能性がある。または、インスタンスは、より長いレイテンシのサーバからより短いレイテンシのサーバへ移行されることができ、全体的なクライアント・エクスペリエンスを改善する。
いくつかの実施形態において、プロバイダ・ネットワークは、複数の地理的領域に編成されることができ、各領域は、1つ以上の可用性ゾーンを含むことができる。可用性ゾーン(また可用性コンテナと言われることができる)は、その結果、所与の可用性ゾーン中のリソースが他の可用性ゾーンでの障害から隔離される、またはこれから保護されることができるような方式で構成された、1つ以上の別個の位置またはデータ・センタを備えることができる。すなわち、1つの可用性ゾーンでの障害が、任意の他の可用性ゾーンでの障害につながることは考えられない。このようにして、リソース・インスタンスの可用性プロファイルは、別の可用性ゾーンでのリソース・インスタンスの可用性プロファイルから独立していることを意図される。クライアントは、それぞれの可用性ゾーンで複数のアプリケーション・インスタンスを起動することで、クライアントのアプリケーションを障害から保護することが可能であることができる。同時に、いくつかの実装において、安価で低レイテンシのネットワーク接続性は、同じ地理的領域内に存在するリソース・インスタンス間で提供されることができる(および同じ可用性ゾーンのリソース間のネットワーク伝送はさらに速くなることができる)。
上記のように、本開示の技術に従い、コンテンツ・アイテムは、複数の提示ストリームに関連して提示されてもよい。図3は、本開示に従い複数の提示ストリームと関連するコンテンツ提示用の例示的なシステムを図示する図解である。図3で説明されるように、コンテンツ・プロバイダ300およびクライアント400は、いくつかの場合において、たとえば、インターネットまたは別の種類のワイド・エリア・ネットワーク(WAN)もしくはローカル・エリア・ネットワーク(LAN)のような、電子ネットワークであってもよい、ネットワーク380経由で通信する。コンテンツ・プロバイダ300は、たとえば、クライアント400のようなクライアントへコンテンツを提供するための1つ以上のコンテンツ提供サービスを提供することができる。このコンテンツ提供サービスは、1つ以上のサーバ上に存在することができる。コンテンツ提供サービスは、1人以上の顧客の要求を満たすために拡張可能であることができ、着信するクライアント要求の数および種類に基づき機能を増減させることができる。コンテンツ提供サービスの部分は、また移行されることができ、要求するクライアントに関してレイテンシが短い位置に配置される。たとえば、コンテンツ・プロバイダ300は、クライアント400に物理的におよび/または論理的に最も近いコンテンツ提供サービスに関連付けられたシステムまたはネットワークの「エッジ」を決定することができる。コンテンツ・プロバイダ300は、そのとき、たとえば、「スピンアップ」する、リソースを移行する、または、クライアント400と相互作用するために決定されたエッジに関連付けられたコンポーネントを使用することができる。このような、エッジ決定プロセスは、いくつかの場合において、特定のクライアント400との相互作用によく適しているコンポーネントを識別して使用するための効率的な技術を提供することができ、いくつかの実施形態において、コンテンツ・プロバイダ300および1人以上のクライアント間の通信のレイテンシを減らすことができる。
クライアント400およびコンテンツ・プロバイダ300は、いくつかの場合において、コンテンツ・プロバイダ300がクライアント400でのコンテンツ・アイテム提示を支援するために通信することができる。本明細書で使用されるコンテンツという用語は、任意の提示可能な情報を指し、本明細書で使用されるコンテンツ・アイテムという用語は、任意のこのような提示可能な情報の任意の集まりを指す。たとえば、コンテンツ・アイテムは、テレビ・ゲームのようなグラフィック・コンテンツを含むことができる。いくつかの場合において、コンテンツ・アイテムは2次元コンテンツを含むことができ、本明細書で使用される場合、2次元シーンに従い表現されることができるコンテンツを指す。また、いくつかの場合において、コンテンツ・アイテムは3次元コンテンツを含むことができ、本明細書で使用される場合、3次元シーンに従い表現されることができるコンテンツを指す。2次元または3次元シーンは、それらが、たとえば、論理的にモデル化する、または表現することを意図される領域を物理的に占有しない可能性があるシーン内の論理的表現とみなされることができる。本明細書で使用されるシーンという用語は、画像生成に関連して使用されることができる表現を指す。シーンは、たとえば、シーンを記述する情報もしくはデータを含む、またはこれと関連することができる。コンテンツ・アイテムを提示するために、コンテンツ・アイテムに関連付けられたシーンは、表示用に得られる画像を生成するために使用されることができる。この画像は、たとえば、投影、反射、ライトニング、シェーディング等のようなコンセプトを組み込むことができる、レンダリングと一般的に言われるプロセス方式により生成されることができる。画像は、たとえば、さまざまな画素値および/または属性を関連付けられた情報のような、表示可能な出力を関連付けられた情報を含むことができる。
図3で説明されるように、クライアント400およびコンテンツ・プロバイダ300は、コンテンツ・アイテムのそれぞれのバージョンを各実行する。特に、クライアント400は、クライアント・コンテンツ・アイテム・バージョン430を実行しながら、コンテンツ・プロバイダ300は、コンテンツ・プロバイダ・コンテンツ・アイテム・バージョン330を実行する。簡略化のために、クライアント・コンテンツ・アイテム・バージョン430およびコンテンツ・プロバイダ・コンテンツ・アイテム・バージョン330は、集合的に単一のコンテンツ・アイテムと言われることができる。このようにして、いくつかの場合において、単一のコンテンツ・アイテムは、クライアント400上およびコンテンツ・プロバイダ300に実行する2つの関連付けられたバージョンを含むことができる。以下でより詳細に記載されるように、クライアント・コンテンツ・アイテム・バージョン430およびコンテンツ・プロバイダ・コンテンツ・アイテム・バージョン430は、いくつかの場合において、それらがクライアント400に提示された1つ以上の画像用の補完機能を生成するように、互いとの組み合わせで実行するように設計されることができる。いくつかの場合において、たとえば、テレビ・ゲームを作成する企業のような、コンテンツ・クリエイタは、コンテンツ・プロバイダおよび個々のクライアントへコンテンツ・アイテムの別個のクライアントおよびコンテンツ・プロバイダ・バージョンを販売し、これを別々に配信することができる。他の場合において、たとえば、コンテンツ・クリエイタは、コンテンツ・プロバイダへクライアントおよびコンテンツ・プロバイダ・バージョンの両方を配信することができ、そのとき個々のクライアントは、コンテンツ・プロバイダからクライアント・バージョンを取得する、または任意の数の他の追加の当事者を形成することができる。クライアントおよびコンテンツ・プロバイダ・バージョンは、たとえば、種々の形態のストレージ・メディア等を配信することで、電子ダウンロードを使用して配信されることができる。
理解されるように、クライアント400およびコンテンツ・プロバイダ300が異なるバージョンのコンテンツ・アイテムを必ずしも実行する必要はない。たとえば、いくつかの場合において、クライアント400およびコンテンツ・プロバイダ300は、同一バージョンのコンテンツ・アイテムを実行することができるが、同一コンテンツ・アイテム・バージョンの異なる部分または機能にアクセスする、またはこれを実行することができる。
クライアント400は、クライアント状態コンポーネント450を含み、一方、コンテンツ・プロバイダ300は、コンテンツ・プロバイダ状態コンポーネント350を含む。一般に、クライアント状態コンポーネント450およびコンテンツ・プロバイダ状態コンポーネント350は、たとえば、コンテンツ・アイテムの提示に関連付けられた状態情報を収集し、維持し、格納し、交換することができる。このような状態情報は、たとえば、コンテンツ・アイテムの提示に関連付けられた、さまざまな機能、イベント、アクションまたは動作に関連付けられた情報を含むことができる。
いくつかの場合において、クライアント状態コンポーネント450は、クライアント400のユーザにより提供された入力に関連付けられた状態情報を収集することができる。たとえば、いくつかの場合において、クライアント400は、提示されたコンテンツ・アイテムに関連付けられた特定のエンティティを制御することができる。このようなエンティティは、たとえば、さまざまなキャラクタ、車両、武器、運動競技用器材等を含むことができる。たとえば、テレビ・ゲームは、多くの場合、様々な参加者が1つ以上の異なるキャラクタまたは他のエンティティを制御することを可能にする。このようにして、いくつかの場合において、クライアント状態コンポーネント450は、クライアント400が制御するキャラクタまたは他のエンティティに関連付けられた状態情報を収集することができる。たとえば、制御されたキャラクタは、新規の位置へ移動する、または武器の発射もしくはゴルフ・クラブのスイングのようなアクションを実行することができる。これらの例示的なアクションに関連付けられた状態情報は、たとえば、クライアント状態コンポーネント450により収集されることができる。加えて、クライアント状態コンポーネント450は、たとえば、ユーザによる制御用の特定のエンティティのユーザ選択、またはあるエンティティから別のエンティティへ制御を切り替えるユーザ選択に関連付けられた情報を収集することができる。
クライアント状態情報コンポーネント450により収集された状態情報は、しかしながら、クライアント400により制御されたユーザ入力および/またはエンティティに関連付けられた情報に限定されない。たとえば、クライアント状態情報コンポーネント450は、クライアント・ストリーム410と、またはコンテンツ・アイテム提示の任意の他の態様に関連付けられた、さまざまな機能、イベント、アクションまたは動作に関連付けられた状態情報をまた収集することができる。
コンテンツ・プロバイダ状態コンポーネント350はまた、コンテンツ・アイテム提示に関連付けられた状態情報を収集することができる。たとえば、コンテンツ・プロバイダ状態情報コンポーネント350は、コンテンツ・プロバイダ・ストリーム310と、またはコンテンツ・アイテム提示の任意の他の態様に関連付けられた、さまざまな機能、イベント、アクションまたは動作に関連付けられた状態情報を収集することができる。
クライアント状態コンポーネント450およびコンテンツ・プロバイダ状態コンポーネント350は、いくつかの場合において、状態情報を別のものと定期的に交換することができる。いくつかの場合において、クライアント状態コンポーネント450およびコンテンツ・プロバイダ状態コンポーネント350は、すべてのまたはほぼすべての収集された状態情報を交換することができる。しかしながら、すべてのまたはほぼすべての収集された状態情報がクライアント状態コンポーネント450およびコンテンツ・プロバイダ状態コンポーネント350間で交換される必要はない。いくつかの場合において、クライアント状態コンポーネント450は、コンテンツ・プロバイダ・ストリーム310の生成のために必要であるとみなされる収集された状態情報の一部のみをコンテンツ・プロバイダ状態コンポーネント350へ送信することができる。同様に、いくつかの場合において、コンテンツ・プロバイダ状態コンポーネント350は、クライアント・ストリーム410の生成のために必要であるとみなされる収集された状態情報の一部のみをクライアント状態コンポーネント450へ送信することができる。
状態情報は、たとえば、任意の所望の時間または間隔で定期的にクライアント状態コンポーネント450およびコンテンツ・プロバイダ状態コンポーネント350間で交換されることができる。クライアント状態コンポーネント450およびコンテンツ・プロバイダ状態コンポーネント350は、たとえば、同時に、または異なる時間に互いに異なる伝送を使用して、状態情報を交換することができる。いくつかの場合において、クライアント状態コンポーネント450およびコンテンツ・プロバイダ状態コンポーネント350は、状態情報の更新を定期的に送信する、または交換することができる。このような更新は、たとえば、前回の更新または伝送で送信されなかった状態情報のみを含むことができるので、以前に送信された情報を再送信しないことで帯域幅を節約する。
いくつかの場合において、提示されたコンテンツ・アイテムは、コンテンツ・プロバイダ300に接続された複数のクライアントに提示されることができる。たとえば、提示されたコンテンツ・アイテムは、このテレビ・ゲームで異なるそれぞれのキャラクタを各々制御する複数の異なるクライアントを備える、マルチプレイヤ・テレビ・ゲームであってもよい。このような場合において、参加するクライアント・デバイスの各々は、たとえば、コンテンツ・プロバイダ状態コンポーネント350と状態情報を定期的に交換することができる。コンテンツ・プロバイダ状態コンポーネント350から参加するクライアントの各々へ送信された状態情報は、そのとき、たとえば、他の参加するクライアントの各々から受信した状態情報を含むことができる。
クライアント400は、クライアント・コンテンツ・アイテム・バージョン430との組み合わせでクライアント状態コンポーネント450を使用でき、クライアント・ストリーム410の生成のために入力をクライアント・レンダリング・コンポーネント425へ提供する。同様に、コンテンツ・プロバイダ300は、コンテンツ・プロバイダ・ストリーム310の生成のためにコンテンツ・プロバイダ・レンダリング・コンポーネント325へコンテンツ・プロバイダ・コンテンツ・アイテム・バージョン330との組み合わせでコンテンツ・プロバイダ状態コンポーネント350を使用することができる。クライアント・レンダリング・コンポーネント425およびコンテンツ・プロバイダ・レンダリング・コンポーネント325は、たとえば、グラフィック処理ユニット等を含むことができる。クライアント・ストリーム410およびコンテンツ・プロバイダ・ストリーム310は、たとえば、対応する画像、画像の一部、または得られる表示画像に関連して使用可能である他の情報を各々含むことができる。たとえば、いくつかの場合において、ストリーム310および/または410は、コンテンツ・アイテム提示に関連付けられたさまざまな機能を記載する、またはその他の方法でこれに対応する情報を含むことができる。表示画像は、クライアント400により表示される画像である。
符号化および圧縮コンポーネント315は、そのクライアント400への送信前にコンテンツ・プロバイダ・ストリーム310を符号化し圧縮することができる。符号化および圧縮コンポーネント315は、たとえば、エンコーダ、コンプレッサ、コーデック等を含むことができる。符号化および圧縮コンポーネント315は、一般に、クライアント400への送信用にコンテンツ・プロバイダ・ストリーム310を符号化および/または圧縮する、任意の適切な技術を使用することができる。いくつかの場合において、必ずしもコンテンツ・プロバイダ・ストリーム310を符号化および/または圧縮しない可能性がある。任意の必然的な符号化および/または圧縮動作の実行後、コンテンツ・プロバイダ・ストリーム310は、クライアント400へネットワーク380経由で送信されることができる。
いくつかの場合において、コンテンツ・プロバイダ・ストリーム310は、ストリーミング・コンテンツ配信技術に従い送信されることができ、このコンテンツは、常にクライアント・デバイス400により受信され提示されることができる。また、いくつかの場合において、コンテンツ・プロバイダ・ストリーム310は、クライアント400に関連付けられた専用のそれぞれのサーバにより送信されることができる。別個のそれぞれのストリーミング・サーバの使用は、たとえば、いくつかの場合において、各クライアントへのネットワーク接続に関連付けられたサービス品質のような要因に基づき個々のクライアントへのさまざまな送信特性を調整する能力が改善されるため、有利であることができる。調整された送信特性は、たとえば、符号化率、送信速度、画質およびその他の関連要因を含むことができる。しかしながら、開示された技術は各クライアントへの送信用に別個のサーバの使用に限定されないことに留意する。むしろ、開示された技術は任意の数の異なるクライアントへの各送信用に任意の数のサーバを使用できる。開示された技術はストリーミング技術で使用することに限定されず、他のコンテンツ配信技術を使用できることにまた留意する。
クライアント400により受信されると、コンテンツ・プロバイダ・ストリーム310は、復号および解凍コンポーネント415により復号され解凍されることができる。復号および解凍コンポーネント415は、たとえば、デコーダ、デコンプレッサ、コーデック等を含むことができる。復号および解凍コンポーネント315は、一般に、コンテンツ・プロバイダ・ストリーム310を復号する、および/または解凍する任意の適切な技術を使用できる。上記のように、いくつかの場合において、コンテンツ・プロバイダ・ストリーム310は、符号化および/または圧縮されない可能性があるので、復号および/または解凍の必要がない可能性がある。
任意の必要な復号または解凍後に、コンテンツ・プロバイダ・ストリーム310は、クライアント・ストリーム410と組み合わせて、ストリーム処理コンポーネント420へ提供されることができる。ストリーム処理コンポーネント420は、たとえば、コンテンツ・プロバイダ・ストリーム310およびクライアント・ストリーム410の1つ以上のさまざまな機能を選択することができ、その結果もたらされる提示ストリームを形成する。この結果としてもたらされる提示ストリームは、たとえば、表示画面、モニタ、スピーカのようなオーディオ・コンポーネント、コントロール・パネル等を含むことができる、提示コンポーネント440により提示されることができる。
本明細書で使用される用語機能は、画像または他の情報集積物のいずれかの部分を指す。1つの機能は、たとえば、特定の画素または画素集積物であってもよい。1つの機能は、1つ以上の色、質感、形状、パターンまたは他の視覚効果のすべてまたはいずれかの部分であってもよい。1つの機能は、たとえば、特定のオブジェクトのすべてまたはいずれかの部分であってもよい。また1つの機能は、たとえば、オブジェクト集積物のすべてまたはいずれかの部分であってもよい。1つの機能は、たとえば、特定のアセットのすべてまたはいずれかの部分であってもよい。また1つの機能は、たとえば、アセット集積物のすべてまたはいずれかの部分であってもよい。また1つの機能は、たとえば、木、火、水、雲、布、衣類、人間、動物等のようなエンティティのすべてまたはいずれかの部分であってもよい。たとえば、1つの機能は木の一部または布の一部であってもよい。また1つの機能は、たとえば、オブジェクト、エンティティおよび/またはアセット集積物のすべてまたはいずれかの部分を含むことができる。また1つの機能は、オーディオ情報である、またはこれを含むことができる。また1つの機能は、この段落で上述したものを少なくとも部分的に記載する、または示す任意の情報である、またはこれを含むことができる。
いくつかの場合において、提示されたコンテンツ・アイテムに関連してクライアント400に表示された1つ以上の画像のために、画像での機能の少なくともいくつかは、クライアント・ストリーム410およびコンテンツ・プロバイダ・ストリーム310間に分散されることができる。クライアント・ストリーム410での機能は、クライアント・ストリーム機能と言われることができ、さらにコンテンツ・プロバイダ・ストリーム310での機能は、コンテンツ・プロバイダ・ストリーム機能と言われることができる。このようにして、たとえば、クライアント・ストリーム410からの特定の画像または情報の他の部分は、コンテンツ・プロバイダ・ストリーム310からの相手方画像または情報の他の部分と組み合わされることができ、クライアント400への表示用に結果としてもたらされる画像を形成する。いくつかの場合において、ビデオ機能に加えて、クライアント・ストリーム410および/またはコンテンツ・プロバイダ・ストリーム310は、また、オーディオ機能を含む、または示すことができる。
いくつかの場合において、クライアント・ストリーム410およびコンテンツ・プロバイダ・ストリーム310は、ストリーム処理コンポーネント420により各ストリームを受信する時間に関して互いに正確に同期されることができない。たとえば、いくつかの場合において、コンテンツ・プロバイダ・ストリーム310中の画像は、クライアント・ストリーム410から相手方画像を受信する前または後のいずれかに、ストリーム処理コンポーネント420により受信されることができる。正確な同期の欠如は、クライアント400および/またはコンテンツ・プロバイダ300でのネットワーク・レイテンシまたは処理レイテンシのような要因による可能性がある。1つ以上の同期技術は、ストリームの組み合わせ420が、コンテンツ・プロバイダ・ストリーム310およびクライアント・ストリーム410中の相手方画像または画像部分を識別するのを支援するために使用されることができる。1つの例示的な同期技術は、クライアント・ストリーム410およびコンテンツ・プロバイダ・ストリーム310中の画像または情報の他の部分へ識別子を割り当てることを伴うことができる。割り当てられた識別子は、たとえば、シーケンス識別子、タイムスタンプ等を含むことができる。ストリーム処理コンポーネント420は、たとえば、各ストリーム310および410中の画像または情報の他の部分へ識別子をマッチングすることで相手方画像を識別することができる。
上記のように、いくつかの場合において、クライアント400およびコンテンツ・プロバイダ300間の接続は、コンテンツ・アイテムの提示中の特定の期間に制限されるようになる、または中断するようになることがありえる。たとえば、クライアント400は、コンテンツ提示セッション中に位置を変更する、モバイル機器または別のトランスポータブル・デバイスであってもよい。このような、位置変更は、サービスの質が悪い、またはコンテンツ・プロバイダへの接続性が欠如する地域をクライアントに通過させる、またはこれにクライアントを移動させる可能性がある。いくつかの場合において、クライアント400が位置を変更しない場合でも、ネットワーク状態を変更することは、また潜在的にサービスの質を低下させる、および/または接続を終了させる可能性がある。
クライアント400がコンテンツ提示セッション中にコンテンツ・プロバイダ300から切断されるようになる場合に、そのときこれは、クライアント400がコンテンツ・プロバイダ・ストリーム310を少なくとも一時的に利用できなくなる状況をもたらす可能性がある。加えて、いくつかの場合において、接続性が維持される場合でも、ネットワーク・サービスの品質は、コンテンツ・プロバイダ・ストリーム310が表示用に必要な品質で、および/または必要な期間内に受信できないほど低くなる可能性がある。
いくつかの場合において、コンテンツ・プロバイダ・ストリーム310がクライアント400に少なくとも一時的に利用できなくなるときに、ストリーム処理コンポーネント420は、コンテンツ・プロバイダ・ストリーム310から任意の追加の機能なしでクライアント・ストリーム410を提示コンポーネント440に伝えることができる。これは、いくつかの場合において、得られる提示ストリームがコンテンツ・プロバイダ・ストリーム310から追加の入力なしでクライアント・ストリーム410に基づくので、クライアント・ストリーム動作モードと言われることができる。
それに対して、いくつかの場合において、コンテンツ・プロバイダ・ストリーム310がクライアント400に利用可能であるときに、ストリーム処理コンポーネント420はクライアント・ストリーム410をコンテンツ・プロバイダ・ストリーム310と組み合わせることができ、上記のような結果として得られる提示ストリームを形成する。これは、いくつかの場合において、得られる提示ストリームがクライアント・ストリーム410およびコンテンツ・プロバイダ・ストリーム310の両方に基づくハイブリッド・ストリームであるので、ハイブリッド・ストリーム動作モードと言われることができる。理解されるように、ハイブリッド・ストリーム動作モードおよびクライアント・ストリーム動作モードという用語は、本明細書で単に簡略化のために使用され、クライアント・ストリーム410およびコンテンツ・プロバイダ・ストリーム310の組み合わせに関連して2つの別個の動作モードを使用することをクライアントが必ず要求されることを意味するものではない。
図4は、本開示に従いハイブリッド・ストリーム・モードで動作する例示的なコンテンツ提示システムを説明する図解である。図4で説明されるように、コンテンツ・プロバイダ300はクライアント400に接続されるので、コンテンツ・プロバイダ・ストリーム310を、クライアント400へ送信すること、およびストリーム処理コンポーネント420に利用可能にさせることを可能にする。ストリーム処理コンポーネント420は、コンテンツ・プロバイダ・ストリーム310の少なくともいくつかの機能をクライアント・ストリーム410の少なくともいくつかの機能と組み合わせ、結果としてハイブリッド・ストリーム460を形成し、ハイブリッド・ストリーム460は提示コンポーネント440へ提供される。
図5は、本開示に従いクライアント・ストリーム・モードで動作する例示的なコンテンツ提示システムを説明する図解である。クライアント400およびコンテンツ・プロバイダ300間に配置された太字X形状で示されるように、コンテンツ・プロバイダ・ストリーム310は、図5でクライアント400に利用不可能である。上記のように、これは、たとえば、コンテンツ・プロバイダ300がクライアント400に接続されないとき、またはクライアント400およびコンテンツ・プロバイダ300間の接続に関連付けられたサービス品質が最小閾値を下回り切断されるときに、発生する可能性がある。図5で説明されるように、ストリーム処理コンポーネント420は、コンテンツ・プロバイダ・ストリーム310から任意の追加の機能なしで提示コンポーネント440にクライアント・ストリーム410を伝えることができる。
適切な技術の任意の組み合わせは、コンテンツ・プロバイダ・ストリーム310が利用できなくなるときを判定するためにクライアント400により使用されることができる。たとえば、いくつかの場合において、クライアント400は、クライアント400およびコンテンツ・プロバイダ300間の接続を監視する1つ以上のコンポーネントを含むことができる。これらの監視コンポーネントは、いくつかの場合において、コンテンツ・プロバイダ300への接続が終了されるとき、またはサービスのネットワーク品質が最小閾値状態を下回るときに、ストリーム処理コンポーネント420に警告することができる。これは、クライアント・ストリーム動作モードでストリーム処理コンポーネント420を少なくとも一時的に動作させる可能性がある。加えて、監視コンポーネントは、いくつかの場合において、コンテンツ・プロバイダ300への接続が再開されるとき、またはサービスのネットワーク品質が最小閾値状態を上回るときに、ストリーム処理コンポーネント420に警告することができる。これは、ハイブリッド・ストリーム動作モードでストリーム処理コンポーネント420を少なくとも一時的に動作させることができる。
また、いくつかの場合において、最大許容遅延期間は、コンテンツ・プロバイダ300から画像を受信するために確立されることができる。たとえば、特定の画像がクライアント・ストリーム410で受信されるときに、タイミング・コンポーネントは、コンテンツ・プロバイダ・ストリーム310中の相手方画像を受信するための遅延期間のカウントを開始するために使用されることができる。コンテンツ・プロバイダ・ストリーム310からの相手方画像が遅延期間の満了前の任意の時点で受信される場合に、そのときコンテンツ・プロバイダ・ストリームからの相手方画像は、クライアント・ストリーム410からの画像とうまく合成されることができ、ハイブリッド画像を形成する。それに対して、コンテンツ・プロバイダ・ストリーム310からの相手方画像が遅延期間満了前に受信されない場合に、そのときコンテンツ・プロバイダ・ストリーム310は、利用できないと判定されることができ、コンテンツ・ストリーム410からの画像は、コンテンツ・プロバイダ300から任意の追加の機能なしで提示されることができる。上記のように、シーケンス識別子およびタイムスタンプのような、複数の技術は、コンテンツ・プロバイダ・ストリーム310およびクライアント・ストリーム410中の相手方画像を識別するために使用されることができる。
いくつかの場合において、コンテンツ・アイテムに関連付けられた機能は、機能の重要度に基づきクライアント・ストリーム410およびコンテンツ・プロバイダ・ストリーム310間に分散されることができる。たとえば、クライアント・ストリーム410は、いくつかの場合において、より重要な機能を含むことができる一方、コンテンツ・プロバイダ・ストリーム310は、いくつかの場合において、あまり重要でない機能を含むことができる。別の実施例として、クライアント・ストリーム410は、いくつかの場合において、基本機能セットを含むことができる一方、コンテンツ・プロバイダ・ストリーム310は、いくつかの場合において、任意の機能セットを含むことができる。クライアント・ストリーム410は、たとえば、クライアント・ストリーム410が単独で、コンテンツ・アイテムを一時停止または再起動する必要なく少なくとも一時的に提示させることを可能にするのに少なくとも十分な機能を含むことができる。いくつかの場合において、コンテンツ・プロバイダ・ストリーム310がコンテンツ・アイテムの提示中に一時的に利用できなくなる場合に、コンテンツ・プロバイダ・ストリーム310が再び利用できるようになる、またはコンテンツ・アイテムの提示が完了するまで、クライアント・ストリーム410が単独でコンテンツ・アイテムを少なくとも一時的に提示することを可能にするのに少なくとも十分な機能をクライアント・ストリーム410に含むことが望ましい場合がある。
実施例として、バスケットボール・テレビ・ゲームであるコンテンツ・アイテムのために、クライアント・ストリーム410は、アクティブ・プレイヤ、ボールおよびバスケットのようなより重要度の高い機能を含むことができる。それに対して、コンテンツ・プロバイダ・ストリーム310は、群衆中の観客、スコアボード、アリーナ全体のさまざまな広告看板および控え選手が座るベンチのような、より重要度の低い機能を含むことができる。この実施例において、コンテンツ・プロバイダ・ストリームが利用できなくなるかもしれない場合に、コンテンツ・プロバイダ・ストリームでの例示的な機能は、バスケットボール・ゲームのプレイを少なくとも一時的に続けるためにおそらく必要とされない。それに対して、アクティブ・プレイヤ、ボールまたはバスケットなしでバスケットボールのプレイを続けることはおそらく困難であろう。
いくつかの場合において、コンテンツ・アイテムに関連付けられた機能は、機能の複雑度に基づきクライアント・ストリーム410およびコンテンツ・プロバイダ・ストリーム310間に分散されることができる。たとえば、いくつかの場合において、クライアント・ストリーム410は、1つ以上のオブジェクトのより低い複雑バージョンを含むことができる一方、コンテンツ・プロバイダ・ストリーム310は1つ以上のオブジェクトのより高い複雑バージョンを含むことができる。これは、たとえば、コンテンツ・プロバイダ・ストリーム310が得られる提示ストリームに含まれるときに、さまざまなオブジェクトがより現実的におよび/またはより詳細に出現することを可能にすることができる。またこれは、たとえば、キャラクタのおよび/または画像の1つ以上の部分の視認度が向上している外観を作成することができる。たとえば、クライアント・ストリーム410は、パターンまたはデザインのない無地として描写される布を含むことができる。それに対して、コンテンツ・プロバイダ・ストリーム310は、複数の異なる形状、質感および色を有する複雑なパターンを備える同じ布を含むことができる。
別の実施例として、いくつかの場合において、クライアント・ストリーム410は、前景オブジェクト用により高い詳細度、および背景オブジェクト用により低い詳細度を提供することができる。それに対して、いくつかの場合において、コンテンツ・プロバイダ・ストリームは、クライアント・ストリーム410に提示されない背景オブジェクト用により高い詳細度を提供することで、コンテンツ・ストリーム310を補足することができる。これらの場合において、コンテンツ・プロバイダ・ストリーム310が得られる提示ストリームに含まれるときに、画像視点からの視認距離が長くなるかのように表示することができる。それに対して、コンテンツ・プロバイダ・ストリーム310が得られる提示ストリームに含まれないときは、画像視点からの視認距離が短くなるかのように表示することができる。
いくつかの場合において、ストリーム処理コンポーネント420または別のコンポーネントは、コンテンツ・プロバイダ・ストリーム310の包含または排除をユーザに、より自然に表示させるために、1つの画像または一連の画像中に特定の視覚効果を挿入することができる。たとえば、いくつかの場合において、コンテンツ・ストリーム310が利用できないときに、霧効果を画像に挿入することができる。別の実施例として、太陽または別の光源は、雲または別のオブジェクトにより暗くなることができる。これらの視覚効果は、いくつかの場合において、自然な印象を与えるのに役立つことができ、表示された出力の一部のコンテンツ・アイテムのコンテキスト内に、あまり詳細でなく、またはみえにくく一時的に表示させる。
いくつかの場合において、クライアント・ストリーム410および/またはコンテンツ・プロバイダ・ストリーム310間での機能の分散は、状態情報または任意の他の適切な情報に基づき調整されることができる。実施例として、特定のテレビ・ゲームは、第一キャラクタおよび第二キャラクタと言われる、2人のキャラクタを含むことができる。テレビ・ゲーム提示の開始において、クライアント400でユーザは、第一キャラクタの制御を有することを選択することができる。この選択の指示は、たとえば、クライアント状態コンポーネント450により収集されることができ、いくつかの場合において、図3で示される、ネットワーク380経由でコンテンツ・プロバイダ状態コンポーネント350に通信されることができる。この選択の結果として、選択された第一キャラクタは、たとえば、クライアント・ストリーム410に含まれることができる一方、選択されなかった第二キャラクタは、たとえば、コンテンツ・プロバイダ・ストリーム310に含まれることができる。しかしながら、テレビ・ゲームの提示中のその後のある時点で、クライアント400でユーザは、キャラクタ選択の変更を決定することができ、ユーザの制御が第一キャラクタから第二キャラクタへ切り換えられる。この選択変更の指示は、たとえば、クライアント状態コンポーネント450により収集されることができ、いくつかの場合において、ネットワーク380経由でコンテンツ・プロバイダ状態コンポーネント350へ通信されることができる。この選択変更の結果として、その後に生成された画像用に、選択された第二キャラクタは、たとえば、クライアント・ストリーム410中に含まれることができる一方、選択されなかった第一キャラクタは、たとえば、コンテンツ・プロバイダ・ストリーム310中に含まれることができる。
いくつかの例示的なハイブリッド・ストリーム機能分散アプローチは、図6および7を参照して詳細に説明される。図6は、いくつかの実施形態で使用されることができる、例示的な第一ハイブリッド・ストリーム機能分散アプローチを説明する図解である。特に、図6は、異なるオブジェクトがコンテンツ・プロバイダ・ストリーム310およびクライアント・ストリーム410に含まれることができる状況を描写する。図6で説明されるように、コンテンツ・プロバイダ・ストリーム画像670は、相手方クライアント・ストリーム画像671と組み合わされ、ハイブリッド・ストリーム画像672を形成する。コンテンツ・プロバイダ・ストリーム画像670は、正方形のコンテンツ・プロバイダ・オブジェクト680A〜Cを含む。クライアント・ストリーム画像671は、円形状のクライアント・オブジェクト681A〜Cを含む。コンテンツ・プロバイダ・ストリーム画像670およびクライアント・ストリーム画像671が組み合わされるときに、得られるハイブリッド・ストリーム画像672は、コンテンツ・プロバイダ・オブジェクト680A〜Cおよびクライアント・オブジェクト681A〜Cの両方を含む。
上記のように、クライアント・オブジェクト681A〜Cは、いくつかの場合において、コンテンツ・アイテムのコンテキスト内により重要度の高いオブジェクトを含むことができる一方、コンテンツ・プロバイダ・オブジェクト680A〜Cは、いくつかの場合において、コンテンツ・アイテムのコンテキスト内により重要度の低いオブジェクトを含むことができる。たとえば、クライアント・オブジェクト681A〜Cは、いくつかの場合において、クライアント400により制御されたキャラクタまたは他のエンティティを含むことができる一方、コンテンツ・プロバイダ・オブジェクト680A〜Cは、いくつかの場合において、クライアント400により制御されないキャラクタまたは他のエンティティを含むことができる。別の実施例として、クライアント・オブジェクト681A〜Cは、いくつかの場合において、特定の前景オブジェクトを含むことができる一方、コンテンツ・プロバイダ・オブジェクト680A〜Cは、いくつかの場合において、特定の背景オブジェクトを含むことができる。
図7は、いくつかの実施形態で使用されることができる例示的な第二ハイブリッド・ストリーム機能分散アプローチを説明する図解である。特に、図7は、異なる複雑度を備える同じオブジェクトのバージョンがコンテンツ・プロバイダ・ストリーム310およびクライアント・ストリーム410中に含まれることができる状況を描写する。図7で説明されるように、コンテンツ・プロバイダ・ストリーム画像770は、クライアント・ストリーム画像771と組み合わされ、ハイブリッド・ストリーム画像772を形成する。クライアント・ストリーム画像771は、より複雑度の低い布機能711を含みながら、コンテンツ・プロバイダ・ストリーム画像770はより複雑度の高い布機能710を含む。コンテンツ・プロバイダ・ストリーム画像770およびクライアント・ストリーム画像771が組み合わされるときに、得られるハイブリッド・ストリーム画像772は、完全なより複雑度の高い布712を含む。
示されるように、より複雑度の低い布機能711は、形状またはパターンのない単色のみを含む。それに対して、より複雑度の高い布機能710は、さまざまな異なるラインおよび形状を有するパターンを含む。図7で説明されないが、より複雑度の高い布機能710は、たとえば、さまざまな異なるテクスチャ、シェーディング、反射性およびいくつかの場合において、より複雑度の低い布711に含まれない可能性がある他の詳細をまた有することができる。
クライアント・ストリーム410およびコンテンツ・プロバイダ・ストリーム310間の上記の機能分散実施例が非限定的であることにもう一度留意する。上記の機能分散実施例および任意の他の追加の、または代わりの所望の機能分散実施例の任意の組み合わせは、本技術に従い使用されることができる。
図8は、本開示に従う例示的な複数のストリーム動作手順を説明するフローチャートである。説明されるように、動作810で、コンテンツ・アイテム提示セッションはクライアント・デバイスで開始される。このコンテンツ提示セッションは、たとえば、フォルダまたはメニューまたはその他のコンテンツ・アイテムの活性化方法からコンテンツ・アイテムを選択することにより開始されることができる。動作810でのコンテンツ・アイテム提示セッションの開始は、たとえば、クライアント・デバイスに格納されるクライアント・コンテンツ・アイテム・バージョンの実行をトリガすることができる。動作810でのコンテンツ・アイテム提示セッションの開始は、たとえば、コンテンツ・プロバイダに接続するクライアントによる試みをまたトリガすることができる。いくつかの場合において、接続がクライアントおよびコンテンツ・プロバイダ間に確立される場合に、クライアントは、コンテンツ・プロバイダがクライアントへコンテンツ・プロバイダ・ストリームを送信することを要求することができる。
動作812で、クライアント・ストリームの生成は、開始される。上記のように、クライアント・ストリームは、たとえば、提示されたコンテンツ・アイテムと関連する画像または画像の部分を含むことができる。上記のように、クライアント・ストリームは、たとえば、コンテンツ・アイテムの提示に関連付けられた状態情報との組み合わせでクライアント・コンテンツ・アイテム・バージョンの情報に基づき生成されることができる。クライアント・ストリームを生成するために使用された状態情報は、たとえば、コンテンツ・アイテムの提示全体にわたりクライアント・デバイスにより収集された状態情報を含むことができる。また、クライアント・ストリームを生成するために使用された状態情報は、たとえば、動作818を参照して以下でより詳細に論じられる、コンテンツ・プロバイダに関する状態情報交換プロセスの結果としてコンテンツ・プロバイダから受信した状態情報を含むことができる。クライアント・ストリームのいくつかの例示的なコンテンツ、ならびにクライアント・ストリームおよびコンテンツ・プロバイダ・ストリームのコンテンツ間のいくつかの例示的な差は、上記で詳細に論じられる。
動作814で、クライアント・デバイスは、コンテンツ・プロバイダ・ストリームが利用可能であるかどうかを判定する。上記のように、いくつかの場合において、コンテンツ・プロバイダ・ストリームの可用性は、クライアントがコンテンツ・プロバイダに接続されているかどうかの判定に少なくとも部分的に基づき、判定されることができる。クライアントおよびコンテンツ・プロバイダは、たとえば、インターネットまたは別のWANもしくはLANネットワークのような電子ネットワークを介して接続されることができる。上記のように、いくつかの場合において、クライアントは、コンテンツ・アイテム提示セッションが動作810で開始されるときに、コンテンツ・プロバイダへの接続を確立しようと試みることができる。いくつかの場合において、コンテンツ・プロバイダ・ストリームは、クライアントおよびコンテンツ・プロバイダが接続されていないときに、利用できないと判定されることができる。それに対して、いくつかの場合において、コンテンツ・プロバイダ・ストリームは、クライアントおよびコンテンツ・プロバイダが接続されているときに、利用できると判定されることができる。
また、いくつかの場合において、コンテンツ・プロバイダ・ストリームの可用性は、クライアントおよびコンテンツ・プロバイダ間の接続に関連付けられた品質に少なくとも部分的に基づき、判定されることができる。接続品質は、たとえば、帯域幅、レイテンシ、スループット等のような特性に基づき判定されることができる。いくつかの場合において、品質の閾値レベルは、コンテンツ・プロバイダ・ストリームに関連して判定されることができる。たとえば、品質の閾値レベルは、特定の期間内に、および/または特定の画像品質レベルでコンテンツ・プロバイダ・ストリームを受信するために十分であるとみなされる品質レベルを時として示すことができる。いくつかの場合において、コンテンツ・プロバイダ・ストリームは、接続品質が品質の閾値レベル未満であるときに、利用できないと判定されることができる。それに対して、いくつかの場合において、コンテンツ・プロバイダ・ストリームは、接続品質が品質の閾値レベル以上であるときに、利用できると判定されることができる。
また、いくつかの場合において、コンテンツ・プロバイダ・ストリームは、たとえば、コンテンツ・プロバイダでのさまざまな問題により、またはコンテンツ・プロバイダ・ストリームを送信しないコンテンツ・プロバイダによる判定により、利用できなくなる可能性がある。時として、これらの状況において、コンテンツ・プロバイダは、たとえば、1つ以上の問題、またはコンテンツ・プロバイダ・ストリームを送信しない判定を示す、クライアントへの通知を送信することができる。また、いくつかの場合において、クライアントは、コンテンツ・プロバイダ・ストリームおよび/またはコンテンツ・プロバイダ・ストリームの特定の部分が特定の期間内に受信されていないと判定することにより、コンテンツ・プロバイダ・ストリームが利用できないと判定することができる。
動作818で、コンテンツ・プロバイダに関する状態情報交換プロセスは、開始される、または再開される。簡略化のために、コンテンツ・プロバイダ・ストリームが利用できると判定されるときに、状態情報がクライアントおよびコンテンツ・プロバイダ間で交換されると、図8の特定の実施例では仮定する。またコンテンツ・プロバイダ・ストリームが利用できないと判定されるときに、状態情報がクライアントおよびコンテンツ・プロバイダ間で交換されないと、図8の特定の実施例では仮定する。しかしながら、状態情報の交換のための基準およびコンテンツ・プロバイダ・ストリームの可用性が必ずしも同じである必要がないことに留意する。たとえば、いくつかの場合において、コンテンツ・プロバイダ・ストリームがクライアントに利用できないときでさえ、状態情報をクライアントおよびコンテンツ・プロバイダ間で交換することは可能であることができる。それに対して、いくつかの場合において、コンテンツ・プロバイダ・ストリームがクライアントに利用できるときでさえ、状態情報をクライアントおよびコンテンツ・プロバイダ間で交換することは、不可能である場合がある。また、クライアントおよびサーバ間の状態情報の交換が複数のストリーム・コンテンツ提示技術または開示された技術のいずれかを実行するために必ずしも必要とされないことに留意する。いくつかの場合において、状態情報は、コンテンツ・プロバイダからクライアントへ送信のみされることができる、またはクライアントからコンテンツ・プロバイダへ送信のみされることができる、またはすべてにおいて交換されることができない。
状態情報交換は、たとえば、コンテンツ・アイテムの提示に関連して動作818の初期性能に基づき、開始されることができる一方、状態情報交換は、たとえば、コンテンツ・アイテムの提示に関連して動作818のその後の性能に基づき、再開されることができる。動作818の部分として、状態情報は、たとえば、任意の所望の時間または間隔で定期的にクライアントおよびコンテンツ・プロバイダ間で交換されることができる。クライアントおよびコンテンツ・プロバイダは、たとえば、同時に、または異なる時間に互いに異なる伝送を使用して、状態情報を交換することができる。いくつかの場合において、クライアントおよびコンテンツ・プロバイダは状態情報更新を交換することができ、この状態情報更新は、たとえば、前回の更新または伝送で送信されなかった状態情報のみを含むため、前回送信された情報を再送しないことで帯域幅を節約することができる。
上記のように、交換された状態情報は、たとえば、コンテンツ・アイテム提示に関連付けられた、さまざまな機能、イベント、アクションまたは動作に関連付けられた情報を含むことができる。いくつかの場合において、コンテンツ・プロバイダへクライアントにより提供された状態情報は、たとえば、クライアントにより制御されたキャラクタまたは他のエンティティにより実行されたアクションに関連付けられた状態情報を含むことができる。コンテンツ・プロバイダへクライアントにより提供された状態情報は、たとえば、ユーザによる制御用の特定のエンティティのユーザ選択、またはあるエンティティから別のエンティティへ制御を切り替えるユーザ選択に関連付けられた状態情報をまた含むことができる。またコンテンツ・プロバイダへクライアントにより提供された状態情報は、たとえば、クライアント・ストリーム410またはコンテンツ・アイテム提示の任意の他の態様に関連付けられた、さまざまな機能、イベント、アクションまたは動作に関連付けられた状態情報をまた含むことができる。それに対して、クライアントへコンテンツ・プロバイダにより提供された状態情報は、たとえば、コンテンツ・プロバイダ・ストリーム310またはコンテンツ・アイテム提示の任意の他の態様に関連付けられたさまざまな機能、イベント、アクションまたは動作に関連付けられた状態情報を含むことができる。
また上記のように、すべてのまたはほぼすべての収集された状態情報がクライアントおよびコンテンツ・プロバイダ間で交換されることは必要とされない。いくつかの場合において、クライアントは、コンテンツ・プロバイダ・ストリームの生成のために必要であるとみなされる状態情報のみをコンテンツ・プロバイダへ送信することができる。同様に、いくつかの場合において、コンテンツ・プロバイダは、クライアント・ストリームの生成のために必要であるとみなされる状態情報のみをクライアントへ送信することができる。
動作819で、クライアントによるコンテンツ・プロバイダ・ストリームの受信は、開始される、または再開される。コンテンツ・プロバイダ・ストリームの受信は、たとえば、コンテンツ・アイテム提示に関連して動作819の初期性能に基づき、開始されることができる一方、コンテンツ・プロバイダ・ストリームの受信は、たとえば、コンテンツ・アイテム提示に関連して動作819のその後の性能に基づき、再開されることができる。上記のように、コンテンツ・プロバイダ・ストリームは、たとえば、提示されたコンテンツ・アイテムと関連する画像または画像の部分を含むことができる。コンテンツ・プロバイダ・ストリームは、たとえば、コンテンツ・アイテム提示に関連付けられた状態情報との組み合わせでのコンテンツ・プロバイダ・コンテンツ・アイテム・バージョン中の情報に基づき生成されることができる。コンテンツ・プロバイダ・ストリームを生成するために使用された状態情報は、たとえば、コンテンツ・アイテム提示を通してコンテンツ・プロバイダにより収集された状態情報を含むことができる。また、コンテンツ・プロバイダ・ストリームを生成するために使用された状態情報は、たとえば、動作818を参照して上述されたクライアントに関する状態情報交換プロセスの結果として、クライアントから受信した状態情報を含むことができる。
動作820で、クライアントは、クライアント・ストリームおよびコンテンツ・プロバイダ・ストリームと関連する画像を表示する。上記のように、動作820での画像表示は、たとえば、各画像またはクライアント・ストリームからの情報の他の部分の1つ以上の機能を相手方画像またはコンテンツ・プロバイダ・ストリームからの情報の他の部分の1つ以上の機能と組み合わせ、クライアントに表示される結果としてもたらされる表示画像を形成することを有すること、または伴うことができる。これは、たとえば、クライアント・ストリーム画像からの1つ以上のオブジェクトを相手方コンテンツ・プロバイダ・ストリーム画像からの1つ以上の他のオブジェクトと組み合わせることを有することができる。またこれは、たとえば、クライアント・ストリーム画像からのオブジェクトのバージョンの1つ以上の機能を相手方コンテンツ・プロバイダ・ストリーム画像からのオブジェクトの別のバージョンの1つ以上の他の機能と組み合わせることを、有することができる。上記で詳細に記載されるように、いくつかの場合において、クライアント・ストリームは、より重要度の高い機能を有することができる一方、コンテンツ・プロバイダ・ストリームは、より重要度の低い機能を含むことができる。また、いくつかの場合において、クライアント・ストリームは、たとえば、基本機能セットを含むことができる一方、コンテンツ・プロバイダ・ストリームは、たとえば、任意の機能セットを含むことができる。クライアント・ストリームは、たとえば、クライアント・ストリームが単独で、コンテンツ・アイテムを一時停止するまたは再始動することなく、少なくとも一時的に提示することを可能にするための十分な機能を少なくとも含むことができる。いくつかの場合において、クライアント・ストリームは、1つ以上のオブジェクトのより複雑度の低いバージョンを含むことができる一方、コンテンツ・プロバイダ・ストリームは、1つ以上のオブジェクトのより複雑度の高いバージョンを含むことができる。これは、たとえば、コンテンツ・プロバイダ・ストリームが得られる提示ストリームに含まれるときに、さまざまなオブジェクトをより現実的におよび/またはより詳細に表示することを可能にすることができる。
動作822で、クライアントは、コンテンツ・プロバイダ・ストリームが利用できなくなったかどうかを判定する。上記のように、いくつかの場合において、コンテンツ・プロバイダ・ストリームは、その可用性を判定するために連続して監視されることができる。また、いくつかの場合において、クライアントおよびコンテンツ・プロバイダ間の既存の接続は、切断および/またはサービス低下および問題を検出するために連続して監視されることができる。このようにして、いくつかの場合において、動作822での判定は、コンテンツ・アイテム提示の終了前にクライアントがコンテンツ・プロバイダに接続されている限り、繰り返し実行されることができる。コンテンツ・プロバイダ・ストリームの可用性および/または非可用性を判定するためのいくつかの例示的な基準は、動作814を参照して上記で詳細に記載されるので、ここで繰り返されない。
コンテンツ・アイテム提示は、コンテンツ・プロバイダ・ストリームが利用不可能になる前に終了する場合に、その後動作824で、コンテンツ・アイテム提示セッションは終了される。それに対して、コンテンツ・プロバイダ・ストリームがコンテンツ・アイテム提示の終了前に利用できなくなる場合に、その後プロセスは動作826へ進み、そこで、クライアントおよびコンテンツ・プロバイダ間の状態情報の交換ならびにクライアントによるコンテンツ・プロバイダ・ストリームの受信は、少なくとも一時的に停止される。上で述べたように、しかしながら、図8の特定の実施例は、コンテンツ・プロバイダ・ストリームがクライアントに利用できなくなるときに、状態情報交換プロセスが停止されると仮定し、これは必ずしもすべての場合で起きる必要がない。たとえば、いくつかの場合において、コンテンツ・プロバイダ・ストリームがクライアントに利用できないときでさえ、クライアントおよびコンテンツ・プロバイダ間で状態情報を交換することは可能であることができる。
コンテンツ・プロバイダ・ストリームが利用できないときに、クライアントは、動作828でクライアント・ストリームと関連する画像を表示する。上記のように、動作828でクライアント・ストリームと関連する画像表示は、たとえば、それらの画像または情報の部分をコンテンツ・プロバイダ・ストリームからの相手方画像または情報と組み合わせないで、クライアント・ストリームからの画像または情報の他の部分を表示することを、有する、または伴うことができる。いくつかの場合において、しかしながら、クライアント・ストリームからの画像または情報の他の部分は、クライアントに表示される前に修正されることができる。上記のように、クライアント・ストリームは、クライアント・ストリームが単独で、コンテンツ・アイテムを一時停止するまたは再始動することなく、少なくとも一時的に提示することを可能にするための十分な機能を少なくとも含むことができる。このようにして、たとえば、コンテンツ・プロバイダ・ストリームが利用できないときに、クライアント・ストリームは、コンテンツ・プロバイダ・ストリームが利用できるようになる、またはコンテンツ・アイテム提示が終了するまで、コンテンツ・アイテム提示を続けることを単独で可能にするのに十分であることができる。
動作830で、クライアントは、コンテンツ・プロバイダ・ストリームが利用できるようになったかどうかを判定する。上記のように、いくつかの場合において、コンテンツ・プロバイダ・ストリームは、その可用性を判定するために継続的に監視されることができる。また、いくつかの場合において、通信リンクは、ネットワーク接続の可用性、およびサービス品質、利用可能な帯域幅等のようなネットワーク特性を検出するために継続的に監視されることができる。このようにして、いくつかの場合において、動作830での判定は、コンテンツ・アイテム提示の終了前に繰り返し実行されることができる。コンテンツ・プロバイダ・ストリームの可用性および/または非可用性を判定するためのいくつかの例示的な基準は、動作814を参照して上記で詳細に記載されるので、ここで繰り返されない。
コンテンツ・プロバイダ・ストリームがコンテンツ・アイテム提示の終了前に利用可能になる場合に、そのときプロセスは、動作818を開始する。それに対して、コンテンツ・プロバイダへの十分な接続が利用可能になる前にコンテンツ・アイテム提示が終了する場合、そのとき動作824で、コンテンツ・アイテム提示セッションは、終了される。
いくつかの状況において、コンテンツ・プロバイダ・ストリームが利用可能であるときに、コンテンツ・プロバイダ・ストリームは、クライアント・ストリームからそれ以上の入力、またはこれとの組み合わせなしで、クライアントに得られる画像を生成するために使用されることができる。簡略化のために、これらの状況は、完了コンテンツ・プロバイダ・ストリーム・モードと言われることができる。このようにして、たとえば、完了コンテンツ・プロバイダ・ストリーム・モードでの動作時に、動作820は、画像がクライアント・ストリームからの任意の入力なしで、コンテンツ・プロバイダ・ストリームにのみ基づき表示されるように変更されることができる。いくつかの場合において、クライアント・ストリームは、クライアントが完了コンテンツ・プロバイダ・ストリーム・モードで動作しているときに、すべての時間の部分中に生成されることができる。しかしながら、いくつかの場合において、完了コンテンツ・プロバイダ・ストリーム・モードの動作時に、クライアントは、コンテンツ・プロバイダから状態情報を受信し続ける、および/または状態情報をコンテンツ・プロバイダと交換し続けることができる。コンテンツ・プロバイダからクライアントで状態情報を受信することは、たとえば、コンテンツ・プロバイダへ十分な接続が利用できなくなるときに、シームレスまたはニアシームレス状態に移行可能にすることができる。
いくつかの場合において、完了コンテンツ・プロバイダ・ストリーム・モードで改良された動作を可能にするために、コンテンツ・プロバイダ・ストリームは、より重要度の低い機能に加えてより重要度の高い機能を含むことができる。いくつかの場合において、コンテンツ・プロバイダは、特定のコンテンツ・アイテムの2つのバージョンへのアクセスを有することができる。たとえば、コンテンツ・プロバイダは、コンテンツ・プロバイダ・ストリームおよびクライアント・ストリームからの機能が組み合わされるハイブリッド・ストリーム・モードで動作するために、制限された機能コンテンツ・アイテム・バージョンへのアクセスを有することができる。また、たとえば、コンテンツ・プロバイダは、コンテンツ・プロバイダ・ストリームがクライアント・ストリームと組み合わされない、完了コンテンツ・プロバイダ・ストリーム・モードで動作するための完全な、または拡張された機能コンテンツ・アイテム・バージョンへのアクセスを有することができる。いくつかの場合において、動作は、たとえば、ネットワーク状態、クライアントからの要求または他の適切な理由に基づき、ハイブリッド・ストリーム・モードおよびコンテンツ・プロバイダ・ストリーム・モード間の任意の時間で望まれるときに、切り換えられることができる。
加えて、いくつかの場合において、特定のコンテンツ・プロバイダ・ストリーム機能は、クライアントにより保存されることができる。これは、たとえば、コンテンツ・プロバイダ・ストリームが利用できなくなった後でさえ、保存されたコンテンツ・プロバイダ・ストリーム機能をその後に表示された画像に挿入することを可能にする。たとえば、コンテンツ・プロバイダ・ストリーム画像は、クライアント・ストリームに含まれない特定の車両の表現を含むことができる。車両の表現は、いくつかの場合において、コンテンツ・プロバイダ・ストリームが利用できなくなった後に、クライアントにより保存されることができ、そのときその後に表示された画像に挿入されることができる。
開示された技術に従う、いくつかの例示的なコンテンツ・プロバイダ手順を詳細に説明する。特に、いくつかの場合において、コンテンツ・プロバイダは、コンテンツ・アイテムに関連付けられたコンテンツ・プロバイダ・ストリームの提供を開始する要求をクライアントから受信することができる。この要求は、時として、コンテンツ・プロバイダ・ストリームがコンテンツ・アイテムに関連付けられた相手方クライアント・ストリームと組み合わされることを示すことができる。しかしながら、この要求がこのような組み合わせを実行することを明示的に示すことは、要求されない。いくつかの場合において、この要求は、コンテンツ・プロバイダ・ストリームの伝送を、少なくとも部分的に、直接または間接的にトリガするために十分な任意の情報を含むことができる。
いくつかの場合において、コンテンツ・プロバイダ・ストリーム用の要求を受信すると、コンテンツ・プロバイダは、コンテンツ・アイテムと関連するクライアントと状態情報を交換し始めることができる。コンテンツ・プロバイダおよびクライアント間の状態情報交換用のいくつかの例示的なプロセスは、上記で詳細に記載されるので、ここで繰り返されない。いくつかの場合において、状態情報は、コンテンツ・プロバイダからクライアントへ送信のみされることができる、またはクライアントからコンテンツ・プロバイダへ送信のみされることができる。いくつかの場合において、状態情報はクライアントおよびコンテンツ・プロバイダ間で交換されない可能性がある。また、いくつかの場合において、コンテンツ・プロバイダ・ストリーム用の要求を受信すると、コンテンツ・プロバイダは、コンテンツ・プロバイダ・ストリームを生成して送信し始めることができる。コンテンツ・プロバイダ・ストリームを生成して送信するための、いくつかの例示的なプロセスは、上記で詳細に記載されるので、ここで繰り返されない。
いくつかの場合において、コンテンツ・プロバイダは、クライアントへの接続を監視することができ、クライアントからの切断および/または接続に関連付けられたサービス品質を検出する。いくつかの場合において、コンテンツ・プロバイダは、クライアントから切断されるようになるときに、コンテンツ・プロバイダは、コンテンツ・プロバイダ・ストリームの生成および/または送信を少なくとも一時的に停止することができる。また、いくつかの場合において、コンテンツ・プロバイダは、その通信リンクを監視することができ、クライアントへの再接続を検出する。いくつかの場合において、コンテンツ・プロバイダがクライアントへ再接続されるようになるときに、コンテンツ・プロバイダは、コンテンツ・プロバイダ・ストリームの生成および/または送信を再開することができる。
さらにまた、いくつかの場合において、クライアントへの接続品質が品質の閾値レベルを下回るときに、コンテンツ・プロバイダは、また、コンテンツ・プロバイダ・ストリームの生成および/または送信を少なくとも一時的に停止することができる。クライアントへの接続品質は、品質の閾値レベルを満たす、または超えるように改善するときに、コンテンツ・プロバイダは、コンテンツ・プロバイダ・ストリームの生成および/または送信を再開することができる。
上記のように、いくつかの場合において、コンテンツ・プロバイダがコンテンツ・プロバイダ・ストリームの送信を停止している(またはコンテンツ・プロバイダ・ストリームがその他の方法でクライアントに利用できなくなる)期間中に、クライアントは、コンテンツ・アイテム提示を少なくとも一時的に続けることを可能にすることができる、相手方クライアント・ストリームを生成し続けることができる。いくつかの場合において、コンテンツ・プロバイダ・ストリームの送信が開始される、または再開されるときに、クライアントにより提供された状態情報は、コンテンツ・プロバイダ・ストリームの生成および/または送信を開始する、または再開する、適切な時点またはコンテキストを示すことができる。
いくつかの場合において、コンテンツ・プロバイダ・ストリームは、複数のクライアントへ生成されて送信されることができる。これは、たとえば、コンテンツ・プロバイダ・ストリームがマルチプレイヤ・テレビ・ゲームに対応するときに、発生する可能性がある。いくつかのこのような場合において、特定のクライアント接続が終了する、または低品質を体験しているときに、コンテンツ・プロバイダは、特定のクライアントへのコンテンツ・プロバイダ・ストリームの送信を停止することができ、他のクライアントへコンテンツ・プロバイダ・ストリームを生成して送信し続けることができる。
いくつかの場合において、コンテンツ・プロバイダは、技術的な故障、エラーまたは他の問題により、コンテンツ・プロバイダ・ストリームをうまく生成して送信することができないと判定する可能性がある。このような場合において、コンテンツ・プロバイダは、時として、コンテンツ・プロバイダ・ストリームが提供されないことを示す通知をクライアントへ送信することができる。
また、いくつかの場合において、コンテンツ・プロバイダは、コンテンツ・プロバイダ・ストリームを生成・送信しない決定を行うことができる。このような決定は、たとえば、コンテンツ・プロバイダ・ストリームの送信を開始する前に、またはコンテンツ・プロバイダ・ストリームの送信中の任意の時点で、行われることができる。このような決定は、異なる要因の任意の組み合わせに基づき行われることができる。たとえば、コンテンツ・プロバイダは、コンテンツ・プロバイダ・ストリームの生成および送信を開始する、またはこれを続けるために必要な利用可能なリソースが欠如していると判定することができる。これは、たとえば、コンテンツ・プロバイダが1つ以上のより優先順位の高いタスクを実行することをコンテンツ・プロバイダ・ストリームの生成および送信が不可能にするときに、発生する可能性がある。たとえば、コンテンツ・プロバイダがより優先順位の高いクライアントからの利用の急増を体験する場合に、そのときコンテンツ・プロバイダは、特定のより優先順位の低いクライアントへの既存の送信をアンロードすると決定することができ、特定のより優先順位の低いクライアントは、コンテンツ・プロバイダ・ストリームとの組み合わせなしで、クライアント・ストリームからの画像を少なくとも一時的に表示する。コンテンツ・プロバイダがコンテンツ・プロバイダ・ストリームを生成および送信しない決定を行うときに、決定通知が時としてクライアントへ送信される場合がある。
コンテンツ・プロバイダは、コンテンツ・プロバイダ・ストリームの生成および送信を開始する、または再開する決定を行うことがまたできる。このような決定は、たとえば、コンテンツ・プロバイダ・ストリームの生成および送信を開始する、もしくは再開するために必要なリソースが他のタスクによる利用から解放されている、またはその他の方法で利用可能になっているとコンテンツ・プロバイダが判定するときに、行われることができる。
前節で説明された各々のプロセス、方法、およびアルゴリズムは、1つ以上のコンピュータまたはコンピュータ・プロセスで実行されたコード・モジュールに組み込まれ、これにより完全にまたは部分的に自動化されることができる。このコード・モジュールは、ハード・ドライブ、ソリッド・ステート・メモリ、光ディスクおよび/または等のような、任意の種類の非一時的なコンピュータ可読媒体またはコンピュータ・ストレージ・デバイス上に格納されることができる。このプロセスおよびアルゴリズムは、アプリケーション固有の回路に部分的に、または全体的に実装されることができる。本開示のプロセスおよびプロセス・ステップの結果は、永続的に、またはその他の、たとえば、揮発性または不揮発性ストレージのような任意の種類の非一時的なコンピュータ・ストレージに格納されることができる。
上記で説明されたさまざまな機能およびプロセスは、互いに独立して使用されることができる、またはさまざまな方式で組み合わされることができる。すべての可能な組み合わせおよび部分的組み合わせは、本開示の範囲内に入ることを意図される。加えて、特定の方法またはプロセス・ブロックは、いくつかの実装において省かれる可能性がある。本明細書に記載された方法およびプロセスは、また、任意の特定の順序に限定されるものではなく、ブロックまたはそれに関連する状態は、適切である他の順序で実行されることが可能である。たとえば、記載されたブロックもしくは状態は、具体的に開示されたもの以外の順序で実行されることができる、または複数のブロックもしくは状態は単一のブロックまたは状態に組み合わされることができる。例示的なブロックもしくは状態は、シリアルで、並行してまたはいくつかの他の方式で実行されることができる。ブロックもしくは状態は、本開示の例示的な実施形態に加えられる、または削除されることができる。本明細書に記載された例示的なシステムおよびコンポーネントは、記載とは異なるように構成されることができる。たとえば、要素は、本開示の例示的な実施形態へ加えられる、これから削除されるまたはこれと比較して並べ替えられることができる。
前述は、次のクローズ1〜24を考慮し、より良く理解されるであろう。
1.クライアント計算ノードにおいて、インストラクションを格納し、その前記クライアント計算ノードによる実行時に、前記クライアント計算ノードに、
テレビ・ゲームの提示に関連付けられたクライアント・ストリーム画像を有するクライアント・ストリームを生成し、
電子ネットワークを使用してコンテンツ・プロバイダに接続し、
前記コンテンツ・プロバイダから前記テレビ・ゲームの前記提示に関連付けられたコンテンツ・プロバイダ・ストリーム画像を有するコンテンツ・プロバイダ・ストリームを受信し、
第一コンテンツ・プロバイダ・ストリーム画像の少なくとも1つの機能と第一クライアント・ストリーム画像の少なくとも1つの機能を結合し、第一表示画像の少なくとも一部を形成し、
前記テレビ・ゲームの前記提示の部分として前記第一表示画像を表示し、
少なくとも1回の一時停止を前記コンテンツ・プロバイダ・ストリームの前記受信へ引き起こす前記コンテンツ・プロバイダからの切断を検出し、
前記コンテンツ・プロバイダからの前記切断を検出後、前記テレビ・ゲームの前記提示の部分として第二表示画像を表示し、前記第二表示画像は第二クライアント・ストリーム画像の少なくとも1つの機能を含む、
ことを備える動作を実行させる、前記クライアント計算ノード。
2.前記テレビ・ゲームに関連付けられた状態情報は前記クライアント計算ノードおよび前記コンテンツ・プロバイダ間で交換され、前記コンテンツ・プロバイダ・ストリームは前記クライアントから受信した状態情報に少なくとも部分的に基づき生成され、前記クライアント・ストリームは前記コンテンツ・プロバイダから受信した状態情報に少なくとも部分的に基づき生成される、クローズ1の前記クライアント計算ノード。
3.前記テレビ・ゲームに関連付けられた機能は、前記テレビ・ゲームに関連付けられた前記機能の重要度に少なくとも部分的に基づき前記クライアント・ストリームおよび前記コンテンツ・プロバイダ・ストリーム間で分散される、クローズ1の前記クライアント計算ノード。
4.前記第一表示画像中のオブジェクト用に、前記第一クライアント・ストリーム画像は前記オブジェクトのより低複雑なバージョンを含み、前記第一コンテンツ・プロバイダ・ストリーム画像は前記オブジェクトのより高複雑なバージョンを含む、クローズ1の前記クライアント計算ノード。
5.コンテンツ・アイテムの提示に関連付けられたクライアント・ストリーム機能に対応する情報を含むクライアント・ストリームを生成し、
前記コンテンツ・アイテムの前記提示に関連付けられたコンテンツ・プロバイダ・ストリーム機能に対応する情報を含むコンテンツ・プロバイダ・ストリームをコンテンツ・プロバイダから受信し、
前記コンテンツ・アイテムの前記提示の部分として第一画像を表示し、前記第一画像は少なくとも1つのコンテンツ・プロバイダ・ストリーム機能を含み、
前記コンテンツ・プロバイダ・ストリームが少なくとも一時的に利用不可能であると判定し、
前記コンテンツ・アイテムの前記提示の部分として第二画像を表示し、前記第二画像は少なくとも1つのクライアント・ストリーム機能を含む、
ことを備える、画像を提示するためにクライアント計算ノードにより実行されたコンピュータ実装方法。
6.前記第一画像は少なくとも1つのクライアント・ストリーム機能を含む、クローズ5の前記コンピュータ実装方法。
7.前記第二画像は少なくとも1つのコンテンツ・プロバイダ・ストリーム機能を含む、8.前記クライアント・ストリームは前記クライアント計算ノードで実行された前記コンテンツ・アイテムのクライアント・バージョンに少なくとも部分的に基づき生成され、前記コンテンツ・プロバイダ・ストリームは前記コンテンツ・プロバイダにより実行された前記コンテンツ・アイテムのコンテンツ・プロバイダ・バージョンに少なくとも部分的に基づき生成される、クローズ5の前記コンピュータ実装方法。
9.前記コンテンツ・アイテムに関連付けられた状態情報は前記クライアント計算ノードおよび前記コンテンツ・プロバイダ間で交換され、前記コンテンツ・プロバイダ・ストリームは前記クライアント計算ノードから受信した状態情報に少なくとも部分的に基づき生成され、前記クライアント・ストリームは前記コンテンツ・プロバイダから受信した状態情報に少なくとも部分的に基づき生成される、クローズ5の前記コンピュータ実装方法。
10.前記コンテンツ・アイテムに関連付けられた機能は、前記コンテンツ・アイテムに関連付けられた前記機能の重要度に少なくとも部分的に基づき前記クライアント・ストリームおよび前記コンテンツ・プロバイダ・ストリーム間で分散される、クローズ5の前記コンピュータ実装方法。
11.前記クライアント・ストリーム機能は前記クライアント計算ノードにより制御された前記コンテンツ・アイテム内のエンティティに関連付けられた機能を含む、クローズ5の前記コンピュータ実装方法。
12.前記コンテンツ・プロバイダ・ストリーム機能は前記第一画像の背景部分に関連付けられた機能を含む、クローズ5の前記コンピュータ実装方法。
13.前記第一画像中のオブジェクト用に、前記クライアント・ストリームは前記オブジェクトのより低複雑バージョンを含み、前記コンテンツ・プロバイダ・ストリームは前記オブジェクトのより高複雑バージョンを含む、クローズ5の前記コンピュータ実装方法。
14.前記コンテンツ・プロバイダ・ストリームが少なくとも一時的に利用不可能であると判定することは、前記コンテンツ・プロバイダおよび前記クライアント間で切断を検出することを備える、クローズ5の前記コンピュータ実装方法。
15.前記コンテンツ・プロバイダ・ストリームが少なくとも一時的に利用不可能であると判定することは前記コンテンツ・プロバイダおよび前記クライアント間の接続が品質閾値レベルを下回っていることを検出することを備える、クローズ5の前記コンピュータ実装方法。
16.1つ以上の非一時的なコンピュータ可読記憶媒体において、その上に格納されたインストラクションを含み、その1つ以上の計算ノードでの実行時に、
コンテンツ・プロバイダ・ストリームの送信の要求をクライアントから受信し、前記コンテンツ・プロバイダ・ストリームはコンテンツ・アイテムの提示に関連付けられたコンテンツ・プロバイダ・ストリーム画像を含み、
前記コンテンツ・アイテムの前記提示に関連して前記クライアントにより生成されたクライアント・ストリームに含まれた1つ以上のクライアント・ストリーム画像の1つ以上の機能に関連付けられた状態を示す状態情報を前記クライアントから受信し、
前記コンテンツ・プロバイダ・ストリームを生成し、前記コンテンツ・プロバイダ・ストリーム画像の1つ以上は前記クライアントから受信した前記状態情報に少なくとも部分的に基づき生成され、
前記コンテンツ・プロバイダ・ストリーム画像の1つ以上の少なくとも一部の表示用に前記コンテンツ・プロバイダ・ストリームを前記クライアントへ送信し、
前記コンテンツ・プロバイダ・ストリーム画像のうちの1つ以上の、1つ以上の機能に関連付けられた状態を示す状態情報を前記クライアントへ送信する、
ことを備える動作を前記1つ以上の計算ノードに実行させる、前記1つ以上の非一時的なコンピュータ可読記憶媒体。
17.前記動作は、
前記コンテンツ・プロバイダ・ストリームの前記生成および前記送信を少なくとも一時的に停止することを前記コンテンツ・プロバイダにより決定する、
ことをさらに備える、クローズ16の前記非一時的なコンピュータ可読記憶媒体。
18.前記コンテンツ・プロバイダ・ストリームの前記生成および前記送信を少なくとも一時的に停止することを前記コンテンツ・プロバイダにより決定することは、前記コンテンツ・プロバイダ・ストリームの前記生成および前記送信より高い優先度を有する1つ以上のタスクを実行するために不十分に利用可能なコンテンツ・プロバイダ・リソースがあると判定することを備える、クローズ17の前記非一時的なコンピュータ可読記憶媒体。
19.前記動作は、
前記クライアントからの切断、または品質閾値レベルを下回る前記クライアントへの接続品質の低下の少なくとも1つを検出し、
前記クライアントへの前記コンテンツ・プロバイダ・ストリームの前記送信を少なくとも一時的に、応答可能に停止する、
ことをさらに備える、クローズ16の前記非一時的なコンピュータ可読記憶媒体。
20.前記動作は、
前記クライアントへの再接続、または前記品質閾値レベルを上回る前記クライアントへの前記接続の前記品質での向上の少なくとも1つを検出し、
前記クライアントへの前記コンテンツ・プロバイダ・ストリームの前記送信を応答可能に再開する、
ことをさらに備える、クローズ19の前記非一時的なコンピュータ可読記憶媒体。
21.第一クライアント・ストリーム画像の少なくとも1つの機能は、第一表示画像の少なくとも一部を形成するために第一コンテンツ・プロバイダ・ストリーム画像の少なくとも1つの機能と結合される、クローズ19の前記非一時的なコンピュータ可読記憶媒体。
22.前記クライアント・ストリームは、前記コンテンツ・プロバイダ・ストリーム画像のうちの1つ以上の、1つ以上の機能に関連付けられた前記状態を示す前記クライアントへ送信された前記状態情報に少なくとも部分的に基づき生成される、クローズ16の前記非一時的なコンピュータ可読記憶媒体。
23.前記コンテンツ・アイテムに関連付けられた機能は、前記コンテンツ・アイテムに関連付けられた前記機能の重要度に少なくとも部分的に基づき前記クライアント・ストリームおよび前記コンテンツ・プロバイダ・ストリーム間で分散される、クローズ16の前記非一時的なコンピュータ可読記憶媒体。
24.第一クライアント・ストリーム画像はオブジェクトのより低複雑バージョンを含み、第一コンテンツ・プロバイダ・ストリーム画像は前記オブジェクトのより高複雑バージョンを含む、クローズ16の前記非一時的なコンピュータ可読記憶媒体。
さまざまなアイテムが使用されながらメモリに、またはストレージ上に格納される場合を説明され、それらのアイテムまたはその部分がメモリ管理およびデータ整合性のためにメモリおよび他のストレージ・デバイス間で転送されることができることを理解するであろう。あるいは、他の実施形態において、ソフトウェア・モジュールおよび/またはシステムの一部またはすべては、別のデバイス上のメモリで実行することができ、コンピュータ間接続を介して説明されたコンピューティング・システムと通信することができる。さらにまた、いくつかの実施形態において、システムおよび/またはモジュールの一部またはすべては、限定されないが、1つ以上の特定用途向け集積回路(ASIC)、標準集積回路、コントローラ(たとえば、適切なインストラクションを実行すること、およびマイクロコントローラおよび/または組み込みコントローラを含むことにより)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)等を含む、少なくとも部分的にファームウェアおよび/またはハードウェアにおいて、他の方式で実装されること、または提供されることができる。モジュール、システムおよびデータ構造の一部またはすべては、適切なドライブにより、または適切な接続を介して読み出される、ハード・ディスク、メモリ、ネットワークまたはポータブル・メディア物品のような、コンピュータ可読媒体上に格納されることがまたできる(たとえば、ソフトウェア・インストラクションまたは構造化データとして)。システム、モジュールおよびデータ構造は、無線ベースおよび有線/ケーブル・ベース・メディアを含む、さまざまなコンピュータ可読伝送媒体上で生成されたデータ信号として(たとえば、搬送波または他のアナログもしくはデジタル伝播信号の部分として)また送信されることができ、種々の形態(たとえば、単一もしくは多重化アナログ信号の部分として、または複数の離散的なデジタル・パケットもしくはフレームとして)を取ることができる。このような、コンピュータ・プログラム製品はまた、他の実施形態において他の形態を取ることができる。したがって、本発明は、他のコンピュータ・システム構成を用いて実施されることができる。
特に、「can」、 「could」、 「might」、 「may」、 「e.g.」等のような、本明細書で使用された条件付き言語は、特に明記しない、またはその他の使用される文脈中で理解されない限り、他の実施形態は含まないが、特定の実施形態は、特定の機能、要素、および/またはステップを含むことを伝えることを一般に意図する。したがって、このような条件付き言語は、機能、要素および/またはステップが1つ以上の実施形態のために任意の方式で要求されること、または著者の入力もしくはプロンプトあり、もしくはなしで、これらの機能、要素および/またはステップが含まれる、もしくは任意の特定の実施形態において実行されるべきであるかどうかを決定するためのロジックを1つ以上の実施形態が必ず含むことを示唆することを一般に意図されない。用語「comprising」、「including」、「having」等は同義語であり、包含的なオープンエンド方式で使用され、追加の要素、機能、行為、動作等を除外しない。また、用語「OR」は、その包括的な意味で使用される(およびその排他的な意味でではなく)ので、使用時に、たとえば、要素のリストを接続するために、用語「or」は、リストの要素の1つ、一部またはすべてを意味する。
特定の例示的な実施形態が説明されているが、これらの実施形態は、実施例としてのみ提示されており、本明細書に開示された本発明の範囲を限定することを意図されない。このようにして、任意の特定の機能、特性、ステップ、モジュールまたはブロックが必要である、または不可欠であることを示唆することは前述の説明にないことを意図される。確かに、本明細書に記載された新規の方法およびシステムは、さまざまな他の形態に具現化されることができ、さらにまた、本明細書に記載された方法およびシステムのさまざまな省略、置換および変更は、本明細書に記載された本発明の趣旨から逸脱しないで行われることができる。添付の特許請求の範囲およびそれらの均等物は、本明細書に開示された本発明の特定の範囲および趣旨内に入る場合に、このような形態または変更を包含することを意図される。
以下は、親出願(特願2016−553273号)の出願当初請求項である。
[請求項1]
インストラクションを格納するクライアント計算ノードにおいて、
前記インストラクションは、前記クライアント計算ノードによる実行時に、前記クライアント計算ノードに、
テレビ・ゲームの提示に関連付けられたクライアント・ストリーム画像を有するクライアント・ストリームを生成し、
電子ネットワークを使用してコンテンツ・プロバイダに接続し、
前記コンテンツ・プロバイダから、前記テレビ・ゲームの前記提示に関連付けられたコンテンツ・プロバイダ・ストリーム画像を有するコンテンツ・プロバイダ・ストリームを受信し、
第一コンテンツ・プロバイダ・ストリーム画像の少なくとも1つの機能と第一クライアント・ストリーム画像の少なくとも1つの機能とを結合し、第一表示画像の少なくとも一部を形成し、
前記第一表示画像を前記テレビ・ゲームの前記提示の部分として表示し、
少なくとも1回の一時停止を前記コンテンツ・プロバイダ・ストリームの前記受信に引き起こす、前記コンテンツ・プロバイダからの切断を検出し、
前記コンテンツ・プロバイダからの前記切断を検出後、第二クライアント・ストリーム画像の少なくとも1つの機能を含む第二表示画像を、前記テレビ・ゲームの前記提示の部分として表示する、
ことを備える動作を実行させる、
クライアント計算ノード。
[請求項2]
前記テレビ・ゲームに関連付けられた状態情報は、前記クライアント計算ノードと前記コンテンツ・プロバイダとの間で交換され、前記コンテンツ・プロバイダ・ストリームは、前記クライアントから受信した状態情報に少なくとも部分的に基づき生成され、前記クライアント・ストリームは、前記コンテンツ・プロバイダから受信した状態情報に少なくとも部分的に基づき生成される、
請求項1記載のクライアント計算ノード。
[請求項3]
前記テレビ・ゲームに関連付けられた機能は、前記テレビ・ゲームに関連付けられた前記機能の重要度に少なくとも部分的に基づき前記クライアント・ストリームと前記コンテンツ・プロバイダ・ストリームとの間で分散される、
請求項1記載のクライアント計算ノード。
[請求項4]
前記第一表示画像中のオブジェクト用に、前記第一クライアント・ストリーム画像は、前記オブジェクトのより低複雑なバージョンを含み、前記第一コンテンツ・プロバイダ・ストリーム画像は、前記オブジェクトのより高複雑なバージョンを含む、
請求項1記載のクライアント計算ノード。
[請求項5]
画像を提示するためにクライアント計算ノードにより実行されたコンピュータ実装方法において、
コンテンツ・アイテムの提示に関連付けられたクライアント・ストリーム機能に対応する情報を含むクライアント・ストリームを生成するステップと、
コンテンツ・プロバイダから、前記コンテンツ・アイテムの前記提示に関連付けられたコンテンツ・プロバイダ・ストリーム機能に対応する情報を含むコンテンツ・プロバイダ・ストリームを受信するステップと、
少なくとも1つのコンテンツ・プロバイダ・ストリーム機能を含む第一画像を、前記コンテンツ・アイテムの前記提示の部分として表示するステップと、
前記コンテンツ・プロバイダ・ストリームが少なくとも一時的に利用不可能であると判定するステップと、
少なくとも1つのクライアント・ストリーム機能を含む第二画像を、前記コンテンツ・アイテムの前記提示の部分として表示するステップと、
を含む、
コンピュータ実装方法。
[請求項6]
前記第一画像は、少なくとも1つのクライアント・ストリーム機能を含む、
請求項5記載のコンピュータ実装方法。
[請求項7]
前記第二画像は、少なくとも1つのコンテンツ・プロバイダ・ストリーム機能を含む、
請求項5記載のコンピュータ実装方法。
[請求項8]
前記クライアント・ストリームは、前記クライアント計算ノードで実行された前記コンテンツ・アイテムのクライアント・バージョンに少なくとも部分的に基づき生成され、前記コンテンツ・プロバイダ・ストリームは、前記コンテンツ・プロバイダにより実行された前記コンテンツ・アイテムのコンテンツ・プロバイダ・バージョンに少なくとも部分的に基づき生成される、
請求項5記載のコンピュータ実装方法。
[請求項9]
前記コンテンツ・アイテムに関連付けられた状態情報は、前記クライアント計算ノードと前記コンテンツ・プロバイダとの間で交換され、前記コンテンツ・プロバイダ・ストリームは、前記クライアント計算ノードから受信した状態情報に少なくとも部分的に基づき生成され、前記クライアント・ストリームは、前記コンテンツ・プロバイダから受信した状態情報に少なくとも部分的に基づき生成される、
請求項5記載のコンピュータ実装方法。
[請求項10]
前記コンテンツ・アイテムに関連付けられた機能は、前記コンテンツ・アイテムに関連付けられた前記機能の重要度に少なくとも部分的に基づき前記クライアント・ストリームと前記コンテンツ・プロバイダ・ストリームとの間で分散される、
請求項5記載のコンピュータ実装方法。
[請求項11]
前記コンテンツ・プロバイダ・ストリーム機能は、前記第一画像の背景部分に関連付けられた機能を含む、
請求項5記載のコンピュータ実装方法。
[請求項12]
前記第一画像のオブジェクト用に、前記クライアント・ストリームは、前記オブジェクトのより低複雑バージョンを含み、前記コンテンツ・プロバイダ・ストリームは、前記オブジェクトのより高複雑バージョンを含む、
請求項5記載のコンピュータ実装方法。
[請求項13]
前記コンテンツ・プロバイダ・ストリームが少なくとも一時的に利用不可能であると判定するステップは、前記コンテンツ・プロバイダと前記クライアントとの間の切断を検出するステップを含む、
請求項5記載のコンピュータ実装方法。
[請求項14]
前記コンテンツ・プロバイダ・ストリームが少なくとも一時的に利用不可能であると判定するステップは、前記コンテンツ・プロバイダと前記クライアントとの間の接続が品質閾値レベルを下回っていることを検出するステップを含む、
請求項5記載のコンピュータ実装方法。
[請求項15]
1つ以上のプロセッサおよび1つ以上のメモリを備えるシステムにおいて、
前記1つ以上のメモリにインストラクションが格納され、前記インストラクションは、前記1つ以上のプロセッサによる実行時に、前記1つ以上の計算ノードに、
コンテンツ・プロバイダ・ストリームの送信の要求をクライアントから受信し、前記コンテンツ・プロバイダ・ストリームは、コンテンツ・アイテムの提示に関連付けられたコンテンツ・プロバイダ・ストリーム画像を含み、
前記コンテンツ・アイテムの前記提示に関連付けられて前記クライアントにより生成されたクライアント・ストリームに含まれた1つ以上のクライアント・ストリーム画像の1つ以上の機能に関連付けられた状態を示す状態情報を前記クライアントから受信し、
前記コンテンツ・プロバイダ・ストリームを生成し、前記コンテンツ・プロバイダ・ストリーム画像の1つ以上は、前記クライアントから受信した前記状態情報に少なくとも部分的に基づき生成され、
前記コンテンツ・プロバイダ・ストリーム画像の1つ以上の少なくとも一部の表示用に前記コンテンツ・プロバイダ・ストリームを前記クライアントに送信し、
前記コンテンツ・プロバイダ・ストリーム画像のうちの1つ以上の、1つ以上の機能に関連付けられた状態を示す状態情報を前記クライアントに送信する、
ことを備える動作を実行させる、
システム。