(57)【要約】【解決手段】分散型ゲームエンジンを使用する方法は、コンピュータネットワークを介してゲームをプレイする要求をユーザアカウントから受信することと、ユーザアカウントの処理能力割り当てを特定することと、処理能力割り当てに基づいてゲームをプレイするためにユーザアカウントが２つ以上の処理ノードを利用するノードアセンブリを決定することとを含む。方法は、ユーザアカウントがゲームを実行するための２つ以上の処理ノードを開始することをさらに含む。開始の動作は、１つの処理ノードから別の処理ノードへのゲームの処理コードの転送を設定するように行われる。方法は、ゲームの状態情報のやり取りのために、２つ以上の処理ノード間に内部通信チャネルを規定することを含む。状態情報のやり取りを行って、２つ以上のノードによるゲームの共有処理を可能にする。【選択図】図１
2020516346.tif 000002
【特許請求の範囲】
【請求項１】
分散型ゲームエンジンを処理する方法であって、
コンピュータネットワークを介してゲームをプレイする要求をユーザアカウントから受信することと、
前記ユーザアカウントの処理能力割り当てを特定することと、
前記処理能力割り当てに基づいて、前記ゲームの前記プレイのために前記ユーザアカウントが２つ以上の処理ノードを利用するノードアセンブリを決定することと、
前記ユーザアカウントの前記ゲームの実行のために前記２つ以上の処理ノードを開始することであって、前記開始は、前記２つ以上の処理ノードの１つから前記２つ以上の処理ノードの他の１つに、前記ゲームの処理コードの転送を設定するように行われる、前記開始することと、
前記ゲームの状態情報のやり取りのために前記２つ以上の処理ノード間に内部通信チャネルを規定することであって、前記状態情報のやり取りは、前記２つ以上のノードによる前記ゲームの共有処理を可能にするように行われ、前記２つ以上のノード間の前記状態情報のやり取りは、前記２つ以上のノードが集合ノードとして動作するように、連続して生じる、前記規定することと、
を含む、方法。
【請求項２】
前記状態情報のやり取りは、前記２つ以上の処理ノードの前記１つが第２のフレームを構築するのを可能にするために、前記２つ以上の処理ノードの前記他の１つから前記２つ以上の処理ノードの前記１つへの第１のフレームの転送を含む、請求項１に記載の方法。
【請求項３】
前記状態情報のやり取りは、前記２つ以上の処理ノードの前記１つがフレームの第２のフレーム部分を構築するのを可能にするために、前記２つ以上の処理ノードの前記他の１つから前記２つ以上の処理ノードの前記１つへの前記フレームの第１のフレーム部分の転送を含む、請求項１に記載の方法。
【請求項４】
前記処理ノードは、前記ゲームをプレイするためのゲームエンジンであり、前記内部通信チャネルは、前記２つ以上の処理ノードによって使用される通信プロトコルである、請求項１に記載の方法。
【請求項５】
各処理ノードは、仮想マシンまたはゲームコンソールまたはサーバである、請求項１に記載の方法。
【請求項６】
分散型ゲームエンジンを処理する方法であって、
ユーザアカウント及びコンピュータネットワークを介してクライアントデバイスからゲームをプレイする要求を受信することと、
前記ゲームの前記プレイに複数のサーバノードを割り当てることと、
前記サーバノードに情報を送信して、前記ノードが通信プロトコルを用いて互いに通信するのを可能にし、前記ゲームの前記プレイを促進することと、
前記ゲームの前記プレイのゲームエンジンを前記サーバノード間に分散させることと、
を含む、方法。
【請求項７】
前記ゲームエンジンを前記分散することは、前記ゲームエンジンの少なくとも一部分を前記サーバノードの第１のサーバノードから前記サーバノードの第２のサーバノードに送信することを含む、請求項６に記載の方法。
【請求項８】
前記複数のサーバノードを前記割り当てることは、前記ユーザアカウントのサブスクリプションレベルに基づいて行われる、請求項６に記載の方法。
【請求項９】
前記サーバノードの第１のサーバノードが、前記ゲームエンジンを実行して、前記ゲームのフレーム情報を生成することと、
前記サーバノードの第２のサーバノードが、前記ゲームエンジンを実行して、前記ゲームの追加のフレーム情報を生成することと、
前記通信プロトコルを適用して、前記第２のサーバノードから前記第１のサーバノードに前記追加のフレーム情報を通信することと、
前記第１のサーバノードが、前記フレーム情報と前記追加のフレーム情報とをレンダリングして、複数のフレームを生成することと、
前記第１のサーバノードが、前記フレームを符号化して、符号化されたフレームを生成することと、
前記第１のサーバノードが、前記符号化されたフレームのパケットを、前記コンピュータネットワークを介して前記ゲームの前記プレイのために前記クライアントデバイスに通信することと、
をさらに含む、請求項６に記載の方法。
【請求項１０】
前記サーバノードの第１のサーバノードが、前記ゲームエンジンを実行して、前記ゲームのフレーム情報を生成することと、
前記第１のサーバノードが、前記フレーム情報をレンダリングして、複数のフレームを生成することと、
前記サーバノードの第２のサーバノードが、前記ゲームエンジンを実行して、前記ゲームの追加のフレーム情報を生成することと、
前記第２のサーバノードが、前記追加のフレーム情報をレンダリングして、複数の追加のフレームを生成することと、
前記通信プロトコルを適用して、前記第２のサーバノードから前記第１のサーバノードに前記追加のフレームを通信することと、
前記第１のサーバノードが、前記フレーム及び前記追加のフレームを符号化して、符号化されたフレームを生成することと、
前記第１のサーバノードが、前記符号化されたフレームのパケットを、前記コンピュータネットワークを介して、前記ゲームの前記プレイのために前記クライアントデバイスに通信することと、
をさらに含む、請求項６に記載の方法。
【請求項１１】
前記サーバノードの第１のサーバノードが、前記ゲームエンジンを実行して、前記ゲームのフレーム情報を生成することと、
前記通信プロトコルを適用して、前記サーバノードの前記第１のサーバノードから第２のサーバノードに前記フレーム情報を通信することと、
前記第２のサーバノードが、前記ゲームエンジンを実行して、前記第１のサーバノードから受信した前記フレーム情報に基づいて、前記ゲームの追加のフレーム情報を生成することと、
をさらに含む、請求項６に記載の方法。
【請求項１２】
前記サーバノードの第１のサーバノードが、前記ゲームエンジンを実行して、前記ゲームのフレーム情報を生成することと、
前記通信プロトコルを適用して、前記サーバノードの前記第１のサーバノードから第２のサーバノードに前記フレーム情報を通信することと、
前記第２のサーバノードが、前記ゲームエンジンを実行して、前記フレーム情報を適用して前記ゲームの追加のフレーム情報を生成することと、
前記第１のサーバノードが、前記フレーム情報をレンダリングして、複数のフレームを生成することと、
前記第２のサーバノードが、前記追加のフレーム情報をレンダリングして、複数の追加のフレームを生成することと、
前記第１のサーバノードが、前記複数のフレームを符号化して、複数の符号化されたフレームを生成することと、
前記第２のサーバノードが、前記複数の追加のフレームを符号化して、複数の追加の符号化されたフレームを生成することと、
前記第１のサーバノードが、前記符号化されたフレームのパケットを、前記コンピュータネットワークを介して前記クライアントデバイスに通信することと、
前記第２のサーバノードが、前記追加の符号化されたフレームのパケットを、前記コンピュータネットワークを介して前記クライアントデバイスに通信することと、
をさらに含む、請求項６に記載の方法。
【請求項１３】
前記サーバノードの第１のサーバノードが、前記ゲームエンジンを実行して、前記ゲームのフレーム部分情報を生成することと、
前記通信プロトコルを適用して、前記サーバノードの前記第１のサーバノードから第２のサーバノードに前記フレーム部分情報を通信することと、
前記第２のサーバノードが、前記ゲームエンジンを実行して、前記第１のサーバノードから受信した前記フレーム部分情報に基づいて、前記ゲームの追加のフレーム部分情報を生成することと、
をさらに含む、請求項６に記載の方法。
【請求項１４】
前記サーバノードの第１のサーバノードが、前記ゲームエンジンを実行して、前記ゲームのフレーム部分情報を生成することと、
前記通信プロトコルを適用して、前記サーバノードの前記第１のサーバノードから第２のサーバノードに前記フレーム部分情報を通信することと、
前記第２のサーバノードが、前記ゲームエンジンを実行して、前記フレーム部分情報を適用し、前記ゲームの追加のフレーム部分情報を生成することと、
前記第１のサーバノードが、前記フレーム部分情報をレンダリングして、フレームの一部分を生成することと、
前記第２のサーバノードが、前記追加のフレーム部分情報をレンダリングして、前記フレームの他の部分を生成することと、
前記第１のサーバノードが、前記フレーム部分を符号化して、符号化されたフレーム部分を生成することと、
前記第２のサーバノードが、前記追加のフレーム部分を符号化して、追加の符号化されたフレーム部分を生成することと、
前記第１のサーバノードが、前記符号化されたフレーム部分の１つまたは複数のパケットを、前記コンピュータネットワークを介して前記クライアントデバイスに通信することと、
前記第２のサーバノードが、前記追加の符号化されたフレーム部分の１つまたは複数のパケットを、前記コンピュータネットワークを介して前記クライアントデバイスに通信することと、
をさらに含む、請求項６に記載の方法。
【請求項１５】
前記フレーム部分情報は、背景情報を含み、前記追加のフレーム部分情報は、仮想オブジェクトの位置及び向き情報を含む、請求項１４に記載の方法。
【請求項１６】
前記サーバノードの第１のサーバノードが、前記ユーザアカウント及び前記コンピュータネットワークを介して、複数のユーザ入力を受信することと、
前記第１のサーバノードが、前記ユーザ入力の１つがフレーム情報の生成に適用可能かどうかを判定することと、
前記第１のサーバノードが、前記ゲームエンジンを実行し、前記ユーザ入力の前記１つを適用することによって前記フレーム情報を生成することと、
前記ユーザ入力の他の１つが前記フレーム情報の生成に適用可能でないと判定すると、前記第１のサーバノードが、前記通信プロトコルを適用して、前記ユーザ入力の前記他の１つを前記サーバノードの第２のサーバノードに通信することと、
前記第２のサーバノードが、前記ゲームエンジンを実行し、前記ユーザ入力の前記他の１つを適用することによって、追加のフレーム情報を生成することと、
をさらに含む、請求項６に記載の方法。
【請求項１７】
前記サーバノードの第１のサーバノードが、前記ユーザアカウント及び前記コンピュータネットワークを介して複数のユーザ入力を受信することと、
前記第１のサーバノードが、前記通信プロトコルを適用して、前記サーバノードの第２のサーバノードと、前記サーバノードの残りのサーバノードとに前記ユーザ入力をブロードキャストすることと、
前記第２のサーバノードが、前記ユーザ入力の１つが追加のフレーム情報の生成に適用可能かどうかを判定することと、
前記第２のサーバノードが、前記ゲームエンジンを実行し、前記ユーザ入力の前記１つを適用することによって、前記追加のフレーム情報を生成することと、
をさらに含む、請求項６に記載の方法。
【請求項１８】
前記サーバノードの第１のサーバノードが、前記ユーザアカウント及び前記コンピュータネットワークを介して複数のユーザ入力を受信することと、
前記第１のサーバノードが、前記ユーザ入力の１つがフレームのフレーム部分情報の生成に適用可能かどうかを判定することと、
前記第１のサーバノードが、前記ゲームエンジンを実行し、前記ユーザ入力の前記１つを適用することによって、前記フレーム部分情報を生成することと、
前記ユーザ入力の他の１つが前記フレーム部分情報の生成に適用可能でないと判定すると、前記第１のサーバノードが、前記通信プロトコルを適用して、前記ユーザ入力の前記他の１つを前記サーバノードの第２のサーバノードに通信することと、
前記第２のサーバノードが、前記ゲームエンジンを実行し、前記ユーザ入力の前記他の１つを適用することによって、追加のフレーム部分情報を生成することと、
をさらに含む、請求項６に記載の方法。
【請求項１９】
前記サーバノードの第１のサーバノードが、前記ユーザアカウント及び前記コンピュータネットワークを介して、複数のユーザ入力を受信することと、
前記第１のサーバノードが、前記通信プロトコルを適用して、前記ユーザ入力を前記サーバノードの第２のサーバノードにブロードキャストすることと、
前記第２のサーバノードが、前記ユーザ入力の１つが追加のフレーム部分情報の生成に適用可能かどうかを判定することと、
前記第２のサーバノードが、前記ゲームエンジンを実行し、前記ユーザ入力の前記１つを適用することによって、前記追加のフレーム部分情報の１つを生成することと、
をさらに含む、請求項６に記載の方法。
【請求項２０】
分散型ゲームエンジンを処理するシステムであって、
ユーザアカウント及びコンピュータネットワークを介してクライアントデバイスからゲームをプレイする要求を受信するように構成されたクラウドゲームサーバと、
前記クラウドゲームサーバに結合され、複数のサーバノードを前記ゲームの前記プレイに割り当てるように構成されたノードアセンブリサーバと、
を含み、
前記ノードアセンブリサーバは、情報を前記サーバノードに送信して、前記サーバノードが通信プロトコルを用いて互いに通信できるようにして、前記ゲームの前記プレイを促進するように構成され、
前記サーバノードの１つは、前記ゲームの前記プレイのゲームエンジンを前記サーバノード間に分散するように構成される、
システム。
【請求項２１】
前記サーバノードの前記１つは、前記サーバノードの他の１つに前記ゲームエンジンを送信するように構成される、請求項２０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、分散型ゲームエンジンを使用するシステム及び方法に関する。
【背景技術】
【０００２】
ゲームプレイ用の様々なデバイスが開発されてきた。例えば、様々なゲーム会社が、ユニークなゲーム体験をユーザに提供するゲームコンソールを製作してきた。例を挙げて説明すると、ユーザは、戦争ゲーム、カンフーゲーム、ダンスゲーム等をプレイできる。
【０００３】
一部のゲーム会社は、ユーザの頭部に装着して、ユーザにゲームの表示を提供するディスプレイデバイスを開発した。ユーザは、このようなディスプレイデバイスを使用している間、自分がゲームの中にいてゲームをプレイしているかのように感じる。
【０００４】
しかしながら、ゲームに関連付けられたグラフィックス及びゲームに関連付けられた処理の増加に伴うほど、ゲームコンソールの処理能力が向上されてはいない。
【発明の概要】
【０００５】
本開示の実施形態は、分散型ゲームエンジンを使用するシステム及び方法を提供する。
【０００６】
本開示の他の態様は、本開示で記載された実施形態の原理を、例を挙げて説明した以下の詳細な記載を添付の図面と共に読めば、明らかになろう。
【０００７】
ゲーム及び科学技術の計算のために、計算能力量の増加が絶えず求められている。単一のサーバの計算能力は、チップ製造業者からアセンブリ時に入手できるコンピュータ部品によって制限される。所与の計算機の世代に対して、コンピュータチップ製造業者は、トランジスタの数及び能力の技術的制限のために、チップあたりの中央処理装置（ＣＰＵ）またはグラフィック処理装置（ＧＰＵ）コアを一定の数に抑制している。これらの技術的障壁は、ムーアの法則によって、数年ごとに上がっている。しかしながら、より多量の計算能力が瞬時に必要な場合がある。より大きい計算能力を得る方法の１つは、単一サーバ内で複数のＣＰＵソケットを使用し、より多くのＧＰＵボートを追加することである。しかしながら、より多くのＣＰＵソケットやより多くのＧＰＵボートを追加すると、単一サーバ内の空間が限られてくる。より大きい計算能力を得る別の方法は、追加のサーバを使用して、複数のサーバを通して作業負荷を分散することである。
【０００８】
一実施形態において、任意選択でゲームコンソールの外に構成される複数のサーバを相互に接続する高速で低遅延のシステムを記載する。この技術は、順応性に富む計算アーキテクチャのビルディングブロックであり、例えば、クラウドゲームを含むゲーム目的に利用される。実施形態は、例えば、ゲームコンソール、仮想マシン、サーバ等の計算ノードのクラスタ化を可能にして、クラスタ化しなければ入手できない大量の計算容量を取得する。計算ノードをつなぎ合わせる方法は、ゲームエンジンを書く方法を可能にし、この場合、例えば、シングルプレイヤゲームであってもマルチプレイヤゲームであっても、ゲームは多くの計算ノードを通る。システムは、異なる種類のゲームを可能にするクラスタ化技術を提供する。
【０００９】
順応性に富む計算のためのハードウェアアーキテクチャを所与として、計算能力を活用する様々なアプリケーションを記載する。使用事例の１つは、複数の計算ノードの計算能力を一人のユーザに与えることである。例えば、ゲームエンジンは、複数の計算ノードに及ぶ。これは、幾つかの方法で行ってよい。例を挙げて説明すると、各計算ノードは、異なるフレームをレンダリングする、例えば、ノード１は、フレーム１＋ｎをレンダリングし、ノード２は、フレーム２＋ｎをレンダリングする。ここで、ｎは、ノードの数である。一部のゲームエンジンは、物理バッファ及びＧＰＵバッファからのフレーム情報を共有する。例えば、各ノードは、データ利用可能性等に関してメモリアドレスと共に通知を与えられると、他のノードのメモリからフレーム情報を読み出す。例を挙げて説明すると、ノードは、他のノードに割り込みを送信し、他のノード内の共有レジスタからフレーム情報を読み出す。これは、ネットワークパケットより桁違いに速い。フレーム情報を共有する別の例としては、ユニバーサルデータグラムプロトコル／伝送制御プロトコル（ＵＤＰ／ＴＣＰ）ネットワークパケットを使用して、フレーム情報を読み出す。さらに別の例としては、各計算ノードは、フレームの一部、例えば、４分の１の、または、所定の数のラインをレンダリングする。さらに別の例として、マスタ−スレーブアーキテクチャにおいては、１つのノードがマスタで、計算ノード間に計算タスクを委託する。別の例としては、ノードは、他のノードに割り込みを送信し、他のノード内の共有レジスタにフレーム情報を書き込む。これは、ネットワークパケットより桁違いに速くなり得る。フレーム情報を共有する他の例としては、ＵＤＰ／ＴＣＰプロトコルを使用して、フレーム情報を書き込む。一部のタスクは、他のタスクよりも使用時間が多いまたは少ないので、マスタはスケジューラである。一部の物理的計算は、マスタで行われ、ゲームの状態がスレーブにブロードキャストされる。
【００１０】
上記のように単一ユーザ構成がクラウドゲームに使用される場合、例えば、ゲームパッド、または、キーボード、または、マウス等の入力装置を介して受信した入力の管理の仕方と、オーディオ及び／またはビデオストリーミングの管理の仕方とに関する課題がある。クラウドゲームにおいては、一人のクライアントが多くのノードに入力を送信し、そのクライアントが様々なノードからオーディオ及び／またはビデオを受信することがある。ノードの１つは、ストリーミングノードとしてマーク付けされ、ストリーミングノードは、クライアントとの接続を扱い、入力を受信し、入力を他のノードに伝える。このノードは、全ての圧縮されたオーディオ及びビデオデータもクライアントに送信する。このノードが、全てのノードに代わってオーディオ及びビデオの符号化も行う、または、各ノードが、それ自体で符号化を行うこともできる。しかしながら、オーディオ及びビデオの符号化のために、以前のフレームデータを使用することが多いので、以前のフレームデータがノード間で共有される。例えば、各ノードが、画像の隅を処理し、各隅がそれ自体のビデオストリームである場合、複数のビデオストリームを使用することもあり得る。クライアントは、隅をつなぎ合わせて、それらを同期してレンダリングする。何らかの形態のブレンディングをビデオフレーム間の継ぎ目に使用して、端が醜くならないようにする。
【００１１】
柔軟性に富む計算クラスタの１つの用途は、新しい種類のマルチプレイヤゲーム用である。全てのユーザが、このようなクラスタ内でホストされた同じ仮想シーンに接続されると、より応答性の高い種類のゲームがプレイされる。さらに、柔軟性に富む計算において、余剰な計算が除かれると、節電が行われる。従来のマルチプレイヤゲームにおいては、ユーザが同じ世界でプレイする時、ゲームエンジンの各ユーザの（ローカルな）インスタンスに対して多くの物理的計算を繰り返す必要がある。計算を一度にすることが可能であり、節電につながる。
【００１２】
一態様においては、分散型ゲームエンジンを使用する方法を記載する。方法は、コンピュータネットワークを介してゲームをプレイする要求をユーザアカウントから受信することと、ユーザアカウントの処理能力割り当てを特定することと、処理能力割り当てに基づいてゲームをプレイするためにユーザアカウントが２つ以上の処理ノードを利用するノードアセンブリを決定することとを含む。方法は、ユーザアカウントのゲーム実行のための２つ以上の処理ノードを開始することをさらに含む。開始の動作が行われて、２つ以上の処理ノードの１つから２つ以上の処理ノードの別のノードにゲームの処理コードの転送を設定する。方法は、ゲームの状態情報をやり取りするために、２つ以上の処理ノード間に内部通信チャネルを規定することを含む。状態情報のやり取りが行われて、２つ以上のノードによるゲームの共有処理を可能にする。２つ以上のノード間の状態情報のやり取りは、２つ以上のノードが集合ノードとして働くように、連続して生じる。
【００１３】
別の態様において、分散型ゲームエンジンを処理する方法を記載する。方法は、ユーザアカウント及びコンピュータネットワークを介してクライアントデバイスからゲームをプレイする要求を受信することと、ゲームをプレイするために複数のサーバノードを割り当てることと、サーバノードに情報を送信して、ノードが通信プロトコルを用いて互いに通信することを可能にし、ゲームのプレイを促進することとを含む。方法は、ゲームをプレイするためのゲームエンジンをサーバノード間に分散させることを含む。
【００１４】
さらに別の態様において、分散型ゲームエンジンを処理するシステムを記載する。システムは、ユーザアカウント及びコンピュータネットワークを介してクライアントデバイスからゲームをプレイする要求を受信するように構成されたクラウドゲームサーバと、クラウドゲームサーバに結合されたノードアセンブリサーバとを含む。ノードアセンブリサーバは、複数のサーバノードをゲームのプレイに割り当てる。ノードアセンブリサーバは、サーバノードに情報を送信して、サーバノードが、通信プロトコルを用いて互いに通信するのを可能にし、ゲームのプレイを促進する。サーバノードの１つは、ゲームをプレイするためのゲームエンジンをサーバノード間に分散させる。
【図面の簡単な説明】
【００１５】
本開示の様々な実施形態は、添付図面と共に以下に記載を参照することで最もよく理解される。
【００１６】
【図１】分散型ゲームエンジンを記載するシステムの実施形態の図である。
【００１７】
【図２】ノードに関する詳細を示すシステムの実施形態の図である。
【００１８】
【図３Ａ】複数のノード間のゲームエンジンの分散を示すシステムの実施形態の図である。
【００１９】
【図３Ｂ】クラウドゲームサーバの実施形態の図である。
【００２０】
【図３Ｃ】ノードアセンブリサーバの実施形態の図である。
【００２１】
【図３Ｄ】ゲームエンジンの様々な部分を示す図である。
【００２２】
【図４Ａ】分散型ゲームエンジンの実行を示すシステムの実施形態の図である。
【００２３】
【図４Ｂ】分散型ゲームエンジンの別の実施形態を示すシステムの実施形態の図である。
【００２４】
【図５Ａ】分散型ゲームエンジンのさらに別の実施形態を示すシステムの実施形態の図である。
【００２５】
【図５Ｂ】あるノードによってゲームの１つまたは複数のフレームが生成され、別のノードによってゲームの１つまたは複数のフレームが生成されることを示す図である。
【００２６】
【図６Ａ】分散型ゲームエンジンのさらに別の実施形態を示すシステムの実施形態の図である。
【００２７】
【図６Ｂ】仮想シーンを有するビデオフレームにおけるビデオフレームの部分の配置を示す図である。
【００２８】
【図６Ｃ】仮想シーンを有するビデオフレームにおけるビデオフレームの部分の別の配置を示す図である。
【００２９】
【図７】ビデオフレーム生成のために、ユーザ入力を１つのノードから他のノードにブロードキャストして、ユーザ入力の他のノードへの関連性を決定することを示すシステムの実施形態の図の図である。
【００３０】
【図８】ビデオフレームの部分を生成するために、ユーザ入力を１つのノードから他のノードにブロードキャストして、ユーザ入力の他のノードへの関連性を決定することを示す図７のシステムの実施形態の図である。
【００３１】
【図９】分散型ゲームエンジンを実行するために選択される複数のノードの動的変更を示すシステムの実施形態の図である。
【００３２】
【図１０】クラウドビデオゲームをクライアントデバイスにストリーミングするために行われる様々な動作を示すフロー図である。
【００３３】
【図１１】クライアントデバイスのディスプレイデバイスとのインタフェースに対応した、または、ゲームホストシステムとコンピュータネットワークを介して通信できるゲームコンソールの実施形態のブロック図である。
【００３４】
【図１２】ヘッドマウントディスプレイ（ＨＭＤ）の実施形態の図である。
【００３５】
【図１３】情報サービスプロバイダ（ＩＮＳＰ）アーキテクチャの実施形態の図である。
【発明を実施するための形態】
【００３６】
分散型ゲームエンジンを使用するシステム及び方法を記載する。本開示の様々な実施形態は、これらの特定の詳細の一部または全てが無くても実践されることに注意されたい。他の例においては、周知のプロセスの動作は、本開示の様々な実施形態を不必要にあいまいにしないために詳細には記載していない。
【００３７】
図１は、分散型ゲームエンジン１０２を記載するシステム１００の実施形態の図である。システム１００は、複数のクライアントデバイス１０４Ａ、１０４Ｂ、１０４Ｃを含む。システム１００は、スイッチシステム１０６と複数のノード１、２、３とをさらに含む。システム１００は、ノードアセンブリサーバ１０８とクラウドゲームサーバ１１０とを含む。
【００３８】
クライアントデバイスは、本明細書で使用される場合、分散型ゲームエンジン１０２を用いて実行されるゲームへのアクセスを得るためにユーザが操作するデバイスである。クライアントデバイスの例は、ゲームコンソール、コンピュータ、スマートフォン、スマートテレビ、ヘッドマウントディスプレイ（ＨＭＤ）、パッド等を含む。
【００３９】
ＨＭＤは、本明細書で使用される場合、ユーザが装着して仮想現実（ＶＲ）シーンまたは拡張現実（ＡＲ）シーン等の仮想シーンを見るディスプレイデバイスである。分散型ゲームエンジン１０２を実行すると、ＶＲシーンまたはＡＲシーンが生成される。
【００４０】
ノードは、本明細書で使用される場合、分散型ゲームエンジン１０２を実行するハードウェアサーバまたはゲームコンソールである。例として、ノードは、他のノードの筐体とは別個の筐体を有する。別の例として、ノードは、データセンタ内で、他のノードが置かれるラックとは異なるラックに置かれる。
【００４１】
ある実施形態においては、複数のノードが、１つの筐体内に置かれる。例えば、ＰｌａｙＳｔａｔｉｏｎ  Ｎｏｗ（商標）サーバの場合、１つの筐体を複数のノードが共有する。複数のノードが１つの筐体に収容される時、各ノードは、ラックに対して、さらにはコンピュータネットワークに対して、それ自体のネットワーク接続性を有する。しかしながら、その代わりとして、１つの筐体が、スイッチ等のネットワークデバイスを含み、ノードは、コンピュータネットワークに結合するために、スイッチと１本のケーブルを介してラックに結合される。１つの筐体が複数のノードを有することは、スループット及び待ち時間という点でより良い接続性を可能にする。
【００４２】
一実施形態においては、ノードは、仮想マシンを用いて実行され、これは、コンピュータシステムのエミュレーションである。仮想マシンにおいては、ハイパーバイザは、分散型ゲームエンジン１０２を実行するプロセッサ及びメモリデバイス等のハードウェアリソースを共有及び管理するコンピュータのソフトウェアもしくはハードウェアまたはこれらの組み合わせである。例として、仮想マシンは、オペレーティングシステムと、オペレーティングシステム上で実行する１つまたは複数のアプリケーションコンピュータプログラムと、例えば、中央処理装置、グラフィック処理装置、ビデオエンコーダ、オーディオエンコーダ、ネットワーク通信デバイス、メモリデバイス、内部通信デバイス等の、１つまたは複数のハードウェアリソースとを含み、１つまたは複数のハードウェアリソースは、ノードによって実行される本明細書に記載の機能を行うために、オペレーティングシステム及びハイパーバイザを介して、１つまたは複数のアプリケーションコンピュータプログラムによってアクセスされる。
【００４３】
スイッチシステムは、本明細書で使用される場合、ノードアセンブリサーバ１０８とノード１、２、３の１つまたは複数との間のデータ転送を促進する１つまたは複数のスイッチを含む。例えば、スイッチシステムは、スイッチファブリックである。スイッチファブリックは、ノード間に大量の帯域を有し、動的に再構成されることが多く、また、サービス品質（ＱｏＳ）を可能にする。例を挙げて説明すると、ＱｏＳは、ノード間に十分な容量が無い時、リンクの輻輳状態の低減を促進し、ＱｏＳは、データ送信を再試行する。一部のノードが、時間内に、容量の足りないノードからのデータの処理を開始する。別の例としては、スイッチシステムは、マルチプレクサを含む。マルチプレクサは、ノード１、２、３の中から、分散型ゲームエンジン１０２を実行し、ノードアセンブリサーバ１０８からデータを転送され、且つ、コンピュータネットワーク１１２を介してデータをクライアントデバイス１０４Ａ、１０４Ｂ、１０４Ｃの１つまたは複数に転送するノードを選択する。別の例として、スイッチシステムは、ノードアセンブリサーバ１０８とノード１、２、３の１つまたは複数との間のデータ転送を促進する１つまたは複数のトランジスタを含む。さらに別の例として、スイッチシステムは、１つまたは複数のスイッチを含み、各スイッチは、開位置と閉位置の間で変化する。スイッチの開位置は、スイッチに結合されたノードからノードアセンブリサーバ１０８を切り離す。スイッチの閉位置は、スイッチに結合されたノードにノードアセンブリサーバ１０８を結合する。
【００４４】
コンピュータネットワークは、本明細書で使用される場合、クライアントデバイスとサーバとの間で、または、クライアントデバイスとノードとの間で、または、複数のクライアントデバイス間で等、データを転送して、分散型ゲームエンジン１０２の動作を促進するのに使用される。コンピュータネットワークの例は、インターネット等の広域ネットワーク（ＷＡＮ）、または、インターネット等のローカルエリアネットワーク（ＬＡＭ）、または、これらの組み合わせを含む。
【００４５】
分散型ゲームエンジン１０２は、例えば、ゲームコンピュータプログラム、ＶＲシーンを生成するコンピュータプログラム、ＡＲシーンを生成するコンピュータプログラム等のゲームコードと、例えば、物理コード、レンダリングコード等と他のコードとを含む。これについては、ＶＲシーンまたはＡＲシーンの生成に関連して以下にさらに記載する。例として、分散型ゲームエンジン１０２の一部分は、ノード１によって記憶、実行され、分散型ゲームエンジン１０２の他の部分は、ノード２によって記憶、実行され、分散型ゲームエンジン１０２の残りの部分は、ノード３によって記憶、実行される。
【００４６】
クライアントデバイス１０４Ａは、ゲーム要求２０２を生成し、コンピュータネットワーク１１２を介してクラウドゲームサーバ１１０にゲーム要求２０２を送信する。クラウドゲームサーバ１１０は、ゲーム要求２０２を生成するクライアントデバイス１０４Ａのユーザ１によってアクセスされるユーザアカウントが分散型ゲームエンジン１０２へのアクセス権を有するかどうかを、ゲーム要求２０２に基づいて判定する。クライアントデバイス１０４Ａのユーザ１は、例えば、クライアントデバイス１０４Ａのハンドヘルドコントローラ、カメラ等の入力装置、または、外部カメラを介して、例えば、ユーザ名、パスワード等のログイン情報を提供して、ユーザアカウントにアクセスする。ログイン情報がクラウドゲームサーバ１１０によって認証されると、クライアントデバイス１０４Ａのユーザ１にユーザアカウントへのアクセスが提供される。ユーザアカウントが分散型ゲームエンジン１０２にアクセス権を有すると決定されると、クラウドゲームサーバ１１０は、分散型ゲームエンジン１０２の実行を有効にするためにノードアセンブリサーバ１０８に信号を送信する。
【００４７】
一実施形態においては、ログイン情報の認証に加えて、分散型ゲームエンジン１０２の実行のためにクライアントデバイス１０４Ａのノードアセンブリサーバ１０８への結合を可能にする前に行われる追加の動作がある。例えば、コンピュータネットワーク１１２に結合されたネットワークテストサーバが、分散型ゲームエンジン１０２の実行を有効にするためにクラウドゲームサーバ１１０からの信号を受信し、複数のデータセンタへの帯域幅ｐｉｎｇを実行する。テストの結果は、ネットワークテストサーバによってクラウドリソースマネージャサーバに提供される。クラウドリソースマネージャは、コンピュータネットワーク１１２に結合される。クラウドリソースマネージャは、クライアントデバイス１０４Ａをどのデータセンタに接続するかを決定する。この決定は、テスト結果と、十分な数のノードの利用可能性、ゲームがどのデータセンタに記憶されているか等の他の情報とに基づく。クラウドアセンブリは、ノード１、２、３を有するデータセンタを選択し、信号をノードアセンブリサーバ１０８に送信して、ノード１、２、３の１つまたは複数を選択する。
【００４８】
ノードアセンブリサーバ１０８は、クラウドゲームサーバ１１０またはクラウドアセンブリサーバからの信号を受信すると、スイッチシステム１０６を介して分散型ゲームエンジン１０２を実行するノード１、２、３の１つまたは複数を選択して、ノード１、２、３の１つまたは複数を開始する。例えば、ノードアセンブリサーバ１０８は、スイッチシステム１０６の制御入力部に信号を送信して、ノード１、２に結合する。制御入力部で信号を受信すると、スイッチシステム１０６は、スイッチの位置の２つを閉じて、ノードアセンブリサーバ１０８をノード１、２に接続し、スイッチの位置の１つを開いて、ノードアセンブリサーバ１０８とノード３との接続を切る。分散型ゲームエンジン１０２を実行して、ノード１、２、３の１つまたは複数からコンピュータネットワーク１１２を介してクライアントデバイス１０４Ａ、１０４Ｂ、１０４Ｃの１つまたは複数に、符号化されたフレーム等のデータを転送する。
【００４９】
システム１００は、図１に示すノード以外の数のノードを含むことに注意されたい。例えば、システム１００は、５０のノード、２５のノード、または、５つのノードを含み、それらのノード間にゲームエンジン１０２が分散される。
【００５０】
図２は、ノードに関する詳細を示すシステム２００の実施形態の図である。ノード１は、中央処理装置（ＣＰＵ）２０２Ａ、メモリデバイス２０４Ａ、グラフィック処理装置（ＧＰＵ）２０６Ａ、ネットワーク通信デバイス２０８Ａ、及び、内部通信デバイス２１０Ａを含む。同様に、ノード２は、ＣＰＵ２０２Ｂ、メモリデバイス２０４Ｂ、ＧＰＵ２０６Ｂ、ネットワーク通信デバイス２０８Ｂ、及び、内部通信デバイス２１０Ｂを含む。
【００５１】
ノードのＣＰＵは、本明細書で使用される場合、ノードアセンブリサーバ１０８から、または、クライアントデバイス１０４Ａ〜１０４Ｃの１つまたは複数から受信され、ＣＰＵに結合されたメモリシステム内に記憶されたデータを処理、例えば、分析、検査等するために使用される。ＣＰＵの例は、プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、及び、プログラム可能論理回路（ＰＬＤ）を含む。
【００５２】
メモリデバイスは、そこからデータを読み出す、または、そこにデータを書き込むためのデバイスである。メモリデバイスの例は、リードオンリメモリ（ＲＯＭ）デバイス、もしくは、ランダムアクセスメモリ（ＲＡＭ）デバイス、または、これらの組み合わせを含む。例を挙げて説明すると、メモリデバイスは、フラッシュメモリ、または、レイド（ＲＡＩＤ：ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ）を含む。
【００５３】
ＧＰＵは、本明細書で使用される場合、レンダリングコンピュータプログラムを実行して、ＡＲシーンまたはＶＲシーンのテクスチャ及びライティング情報を含むビデオフレームを生成する。ＧＰＵの例は、プロセッサ、ＡＳＩＣ、及び、ＰＬＤを含む。一実施形態においては、「ビデオフレーム」及び「画像フレーム」という語は、本明細書では交換可能に使用される。
【００５４】
内部通信デバイスは、１つのノードと他のノードとの間のデータ通信に使用される。内部通信デバイスは、例えば、直接メモリアクセス（ＤＭＡ）プロトコル、リモートＤＭＡ（ＲＤＭＡ）プロトコル、ＲｏＣＥ（ＲＤＭＡ  ｏｖｅｒ  ｃｏｎｖｅｒｇｅｄ  Ｅｔｈｅｒｎｅｔ（登録商標））、インフィニバンド、イーサネット（登録商標）プロトコル、カスタマイズされたプロトコル、シリアル転送プロトコル、パラレル転送プロトコル、ユニバーサルシリアルバス（ＵＳＢ）プロトコル、無線プロトコル、ブルートゥース（登録商標）プロトコル、有線プロトコル、ユニバーサルデータグラムプロトコル（ＵＤＰ）、ＵＤＰ／インターネットプロトコル、伝送制御プロトコル（ＴＣＰ）／ＩＰプロトコル、イーサネット（登録商標）・オーバーＴＣＰ／ＩＰ等の内部通信プロトコルを適用して、２つのノード間でデータを通信する。ＤＭＡの例として、ＰＣＩ  Ｅｘｐｒｅｓｓ不透明スイッチチップ、ＲＤＭＡチップ、または、ＲｏＣＥ（ＲＤＭＡ  ｏｖｅｒ  ｃｏｎｖｅｒｇｅｄ  Ｅｔｈｅｒｎｅｔ（登録商標））チップ、または、インフィニバンド・チップ等の、ノードの内部通信チップが、ＰＣＩｅ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ−ｅｘｐｒｅｓｓ）通信バスを介して通信し、１つまたは複数の他のノードのメモリデバイスに直接書き込み、メモリデバイスから読み出す。さらに、ＰＣＩｅ等の通信バスにおいては、ＧＰＵ及び他のデバイス等の周辺機器は、各周辺機器がバス上に割り当てられたメモリアドレス空間を有するので、メモリベースである。例を挙げて説明すると、１つのノードのＧＰＵは、内部通信プロトコルを適用して、別のノードのＧＰＵのレジスタまたはバッファに書き込みまたは読み出しを行う。このように、ノードは、共有メールボックスレジスタを通して他のノードと通信する。ノードのＣＰＵで実行しているアプリケーションにおいて、他のノードがそのノードから読み出し、または、そのノードに書き込みを行う時、割り込みがある。他のノードは、ノードから読み出し、または、ノードに書き込みを行う前に、割り込み信号を送信する。
【００５５】
内部通信デバイスの例は、プロセッサ、ＡＳＩＣ、及び、ＰＬＤを含む。例を挙げて説明すると、内部通信デバイスは、ＰＣＩ  Ｅｘｐｒｅｓｓ不透明スイッチチップ、または、ＲＤＭＡチップ、または、ＲｏＣＥ（ＲＤＭＡ  ｏｖｅｒ  ｃｏｎｖｅｒｇｅｄ  Ｅｔｈｅｒｎｅｔ（登録商標））チップ、または、インフィニバンド・チップである。他の説明例としては、内部通信デバイスは、ネットワークインタフェースコントローラもしくはネットワークインタフェースカード（ＮＩＣ）、データのシリアル転送を用いて通信するデバイス、データのパラレル転送を用いて通信するデバイス、または、ユニバーサルシリアルバス（ＵＳＢ）プロトコルを用いて通信するデバイスである。
【００５６】
ＰＣＩ−Ｅｘｐｒｅｓｓ及びＲＤＭＡ技術は、ＣＰＵによって実行されるオペレーティングシステムのオーバーヘッドを生じるプロトコル層を無くすので、イーサネット（登録商標）プロトコルまたはＴＣＰプロトコルまたはＵＤＰプロトコルと比較して、待ち時間を大幅に低減し、より高い性能を提供することに注意されたい。ＤＭＡプロトコルを実行するＤＭＡエンジン等、ノード内で実行されるアプリケーションは、他のノード内のデータブロックへのアクセスを許可されている場合、ノード内のオペレーティングシステムを迂回して、他のノードのメモリから直接、読み出し、他のノードのメモリに直接、書き込む。イーサネット（登録商標）プロトコルまたはＴＣＰプロトコルまたはＵＤＰプロトコル等のネットワークプロトコルは無く、ノードのアプリケーションが、メモリ及びメモリの内部構造をどのように組織するかを決定する。ノードの内部通信チップは、ＤＭＡエンジンを有し、ノードと他のノードとの間のメモリ転送動作が呼び出される場合、内部通信チップが、ＤＭＡエンジンを実行して、ノードのＣＰＵの関与無しに、他のノードからデータを読み出し、他のノードにデータを書き込む。一実施形態においては、内部通信チップは、複数のノードを結合するスイッチファブリック、単一のラック、または、複数のラックと共に使用されることに注意されたい。
【００５７】
ネットワーク通信デバイスを用いて、ノードとクライアントデバイスの間を、コンピュータネットワーク１１２を介してデータパケットを転送する。例えば、ネットワーク通信デバイスは、例えば、ＴＣＰ／ＩＰ、ＵＤＰ／ＩＰ等の外部通信プロトコルを適用して、データパケットを受信及び送信する。ネットワーク通信デバイスの例は、プロセッサ、ＡＳＩＣ、及び、ＰＬＤを含む。例を挙げて説明すると、ネットワーク通信デバイスは、ネットワークインタフェースコントローラまたはＮＩＣである。
【００５８】
ＣＰＵ２０２Ａ、メモリデバイス２０４Ａ、ＧＰＵ２０６Ａ、ネットワーク通信デバイス２０８Ａ、及び、内部通信デバイス２１０Ａは、例えば、バスを介して互いに結合される。同様に、ＣＰＵ２０２Ｂ、メモリデバイス２０４Ｂ、ＧＰＵ２０６Ｂ、ネットワーク通信デバイス２０８Ｂ、及び、内部通信デバイス２１０Ｂは、互いに結合される。
【００５９】
ノードアセンブリサーバ１０８は、ノードとクライアントの間のサービス品質（ＱｏＳ）、ノードの利用可能性、クライアントにデータを転送し、クライアントからデータを受信するためのノードの容量、ノードとクライアントの間のコンピュータネットワーク１１２の帯域幅容量、ユーザアカウントに割り当てられたサブスクリプションレベル、または、これらの組み合わせ等の基準に基づいて、ノード１、２、３の２つ以上を割り当てる。
【００６０】
ある実施形態においては、１つのメモリデバイスの代わりに、複数のメモリデバイスがノード内で使用されて、メモリデバイス内に記憶されるデータを記憶する。一実施形態においては、ＣＰＵが行う機能を行うために、１つのＣＰＵの代わりに、複数のＣＰＵがノード内で使用される。ある実施形態においては、ＧＰＵが行う機能を行うために、１つのＧＰＵの代わりに、複数のＧＰＵがノード内で使用される。
【００６１】
図３Ａは、ノード１とノード２の間のゲームエンジン１０２の分散を示すシステム３００の実施形態の図である。ノードアセンブリサーバ１０８は、ゲームエンジンを分散するためにノード１、２の選択を決定する。ノード１、２の選択を決定すると、ノードアセンブリサーバ１０８は、制御信号をスイッチシステム１０６に送信して、ノードアセンブリサーバ１０８をノード１のＣＰＵ２０２Ａとノード２のＣＰＵ２０２Ｂに結合する。一実施形態においては、クラウドリソースマネージャが、ノードアセンブリサーバ１０８の代わりに、ゲームエンジンを分散するためにノード１、２の選択を決定し、制御信号をスイッチシステム１０６に送信して、ノード１のＣＰＵ２０２Ａとノード２のＣＰＵ２０２Ｂとにノードアセンブリサーバ１０８を結合する。一実施形態においては、ノードアセンブリサーバ１０８によって行われるとして本明細書に記載する機能は、クラウドリソースマネージャによって行われる。ある実施形態においては、クラウドリソースマネージャは、その機能をノードアセンブリサーバ１０８が行うように委託する。
【００６２】
さらに、ノードアセンブリサーバ１０８は、内部通信デバイス２１０Ａと内部通信デバイス２１０Ｂの間でのデータ通信に使用される内部通信プロトコルを識別する情報を送信する。例えば、ノードアセンブリサーバ１０８は、内部通信デバイス２１０Ａ及び内部通信デバイス２１０Ｂにスイッチシステム１０６を介してソフトウェア開発キット（ＳＤＫ）を送信する。ＳＤＫは、プログラマであるユーザによって使用されて、内部通信デバイスを、内部通信プロトコルを用いて他の内部通信デバイスと通信するようにプログラムする。別の例としては、ノードアセンブリサーバ１０８は、内部通信デバイス２１０Ａ及び内部通信デバイス２１０Ｂにスイッチシステム１０６を介して内部通信プロトコルを送信する。内部通信デバイス２１０Ａ、２１０Ｂは、内部通信プロトコルを適用して、互いに通信する。
【００６３】
さらに、ノードアセンブリサーバ１０８は、ノード１、２のどちらがゲームを実行してＶＲシーンまたはＡＲシーンを生成するゲームエンジンを有するかを、実行されるゲームを識別する信号から決定する。ゲームを識別する信号は、クラウドゲームサーバ１１０から受信される。例えば、ノードアセンブリサーバ１０８は、ゲームエンジンＡがノード１内に記憶されることを、ゲームを識別する信号から識別する。一実施形態においては、ノードアセンブリサーバ１０８は、スイッチシステム１０６を介して要求信号をノード１、２に送信して、ノード１、２どちらがゲームエンジンＡを有しているかを決定する。
【００６４】
ノードのいずれもゲームエンジンＡを有していないと決定される一実施形態においては、ノードアセンブリサーバ１０８は、ゲームエンジンＡを受信するために、ゲームを識別するコンピュータネットワーク１１２に結合された記憶サーバに信号を送信する。ゲームエンジンＡは、記憶サーバに記憶される。ノードアセンブリサーバ１０８は、記憶サーバと通信して、ゲームエンジンＡをノード１及び／または２に送信する。
【００６５】
ノード１がゲームエンジンＡを有する時、ノードアセンブリサーバ１０８は、スイッチシステム１０６を介してＣＰＵ２０２Ａにコマンド信号を送信して、メモリデバイス２０４ＡからゲームエンジンＡをノード２に分散する。例えば、ノードアセンブリサーバ１０８は、コマンド信号をＣＰＵ２０２Ａに送信して、ゲームエンジンＡのコピーをノード２に転送する。
【００６６】
コマンド信号を受信すると、ＣＰＵ２０２Ａは、メモリデバイス２０４ＡからゲームエンジンＡにアクセスして、ゲームエンジンＡを内部通信デバイス２１０Ａに送信する。内部通信デバイス２１０Ａは、内部通信プロトコルをゲームエンジンＡに適用して、例えば、フレーム、パケット等の転送単位を生成し、転送単位を内部通信デバイス２１０Ｂに送信する。内部通信デバイス２１０Ｂは、ゲームエンジンＡを抽出するために受信された転送単位に内部通信プロトコルを適用し、ゲームエンジンＡを記憶するためにメモリデバイス２０４Ｂに送信する。
【００６７】
一実施形態においては、ＣＰＵ２０２Ａは、ノード１からノード２へのゲームエンジンＡの転送には、何の役割も果たさない、または、非常に限られた役割しか果たさない。例えば、ノード２の内部通信デバイス２１０Ｂは、ノード１の内部通信デバイス２１０ＡからゲームエンジンＡのメモリ位置を取得した後、ノード１のメモリデバイス２０４Ａからノード２のメモリデバイス２０４ＢにゲームエンジンＡをコピーする。メモリデバイス２０４Ａ内のゲームエンジンＡの位置は、ＣＰＵ２０２Ａによって、または、内部通信デバイス２１０Ａによって、ノード２の内部通信デバイス２１０Ｂに、前もって報告されている。例えば、メモリデバイス２０４Ａ内のゲームエンジンＡの位置は、ＣＰＵ２０２Ａによって、または、内部通信デバイス２１０Ａによって、ノードアセンブリサーバ１０８に前もって報告されている。別の例として、メモリデバイス２０４Ａ内のゲームエンジンＡの位置は、ＣＰＵ２０２Ａによって、または、内部通信デバイス２１０Ａによって、ノード２の内部通信デバイス２１０Ｂに前もって報告されている。
【００６８】
図３Ｂは、クラウドゲームサーバ１１０の実施形態の図である。クラウドゲームサーバ１１０は、プロセッサ３１０、メモリデバイス３１２、及び、通信サーバ３１４を含む。プロセッサの例は、ＣＰＵ、ＡＳＩＣ、及び、ＰＬＤを含む。通信サーバ３１４の例は、ネットワークインタフェースコントローラ、ＮＩＣ、データのシリアル転送を用いて通信するデバイス、データのパラレル転送を用いて通信するデバイス、及び、ＵＳＢプロトコルを用いて通信するデバイスを含む。例を挙げて説明すると、通信サーバ３１４は、ＴＣＰ／ＩＰ等のネットワーク通信プロトコルを適用する。
【００６９】
メモリデバイス３１２は、複数のユーザアカウント１〜ｎの識別子を記憶する。ここで、ｎは１より大きい整数である。例えば、メモリデバイス３１０は、ユーザアカウント１のユーザ識別子（ＩＤ）１と、ユーザアカウント２のユーザＩＤ２とを記憶する。ユーザＩＤは、１つまたは複数の英数字、もしくは、記号、または、これらの組み合わせを含み、プロセッサ３１０によってユーザアカウントに割り当てられる。ユーザＩＤの例は、ユーザ名、パスワード、または、これらの組み合わせを含む。ユーザＩＤは、あるユーザアカウントにプロセッサ３１０が割り当てるユーザＩＤは、プロセッサ３１０によっていかなる他のユーザアカウントにも割り当てられないという点で、一意である。プロセッサ３１０は、クライアントデバイス及びコンピュータネットワーク１１２を介してユーザから受信したユーザＩＤがいずれかの他のユーザアカウントに割り当てられているかどうかを決定する。ユーザＩＤが他のユーザアカウントに割り当てられていると決定すると、プロセッサ３１０は、クライアントデバイスを介してユーザに、他のユーザＩＤを提供するように指示する。
【００７０】
メモリデバイス３１２は、ゲーム１〜Ｎの複数のゲームタイトルをさらに記憶する。ここで、Ｎは、１より大きい整数である。各ゲームタイトルは、異なるゲームを識別する。例えば、ゲームタイトルは、あるゲームを記述する記述を含み、その記述は、他のゲームの記述とは異なる。各ゲームは、異なるゲームエンジンを用いて実行される。例えば、ゲーム１は、分散型ゲームエンジン１０２を実行することによって実行され、ゲーム２は、他の分散型ゲームエンジンを実行することによって実行される。
【００７１】
通信サーバ３１４は、図２に示すように、クライアントデバイス１０４Ａからゲーム要求２０２を受信し、ゲーム要求をプロセッサ３１０に送信する。ゲーム要求２０２は、ゲーム１をプレイする要求を含む。ユーザ１がクライアントデバイス１０４Ａを介してユーザアカウント１にログイン後、ゲーム要求２０２が、ユーザアカウント１を介して受信される。ユーザ１は、クライアントデバイス１０４Ａを介してユーザＩＤ１を提供することによって、ユーザアカウント１にログインする。ユーザＩＤ１は、クライアントデバイス１０４Ａからコンピュータネットワーク１１２及び通信サーバ３１４を介してプロセッサ３１０に通信される。プロセッサ３１０は、ユーザＩＤ１が本物であるかどうか、例えば、メモリデバイス３１２に記憶されたユーザＩＤと一致するかどうかを判定し、一致すると判定すると、プロセッサ３１０は、クライアントデバイス１０４Ａがユーザアカウント１にログインすることを許可する。
【００７２】
ゲーム要求２０２を受信すると、プロセッサ３１０は、ユーザアカウント１がゲーム１にアクセスする権利を有するかどうかを判定する。権利付与は、メモリデバイス３１２に記憶され、ユーザアカウント１を介して購入されたゲーム、ユーザアカウント１内に記憶されたユーザ１のデモグラフィック、ユーザアカウント１を介してユーザ１が獲得したゲームポイント数等、様々なファクタに基づいて提供される。ユーザアカウントがゲーム１にアクセスする権利を有すると判定すると、プロセッサ３１０は、図２に示すように、ユーザアカウント１はゲーム１をプレイするためにアクセスを許可されるという命令を、通信サーバ３１４を介してノードアセンブリサーバ１０８に送信する。
【００７３】
一実施形態においては、プロセッサ３１０によって行われるとして本明細書に記載される機能は、代わりに、複数のプロセッサによって行われる。ある実施形態においては、メモリデバイス３１２内に記憶されたデータは、代わりに、複数のメモリデバイス内に記憶される。
【００７４】
図３Ｃは、ノードアセンブリサーバ１０８の実施形態の図である。ノードアセンブリサーバ１０８は、プロセッサ３５０、メモリデバイス３５２、及び、通信デバイス３５４を含む。通信デバイス３５４の例は、ネットワークインタフェースコントローラ、ＮＩＣ、データのシリアル転送を用いて通信するデバイス、データのパラレル転送を用いて通信するデバイス、及び、ＵＳＢプロトコルを用いて通信するデバイスを含む。
【００７５】
メモリデバイス３５２は、ユーザアカウント１〜ｎ、複数のサブスクリプションレベル１、２、３、及び、複数のノード間の対応、例えば、マッピング、リスト、１対１の関係等を記憶する。例えば、メモリデバイス３５２は、ユーザアカウント１がサブスクリプションレベル１を割り当てられるというエントリを有し、サブスクリプションレベル１は、ユーザアカウント１を介してアクセスを要求されるゲームをプレイするために２つのノードの使用を有効にするように規定される。別の例として、メモリデバイス３５２は、ユーザアカウント２がサブスクリプションレベル３を割り当てられるという別のエントリを有し、サブスクリプションレベル３は、ユーザアカウント２を介してアクセスを要求されるゲームをプレイするために４つのノードの使用を有効にすると規定される。
【００７６】
ノードの数が多くなると、分散型ゲームエンジン１０２の実行に使用される処理能力は高くなる、例えばＧＰＵ及びＣＰＵの数は多くなる。例えば、サブスクリプションレベル３は、４つのノードを使用して分散型ゲームエンジン１０２を実行することに対応し、サブスクリプションレベル１は、２つのノードを使用して、分散型ゲームエンジン１０２を実行することに対応する。各ノードが１つのＧＰＵ及び１つのＣＰＵを有すると、サブスクリプションレベル３は、４つのノード、例えば、４つのＧＰＵと４つのＣＰＵに対応し、サブスクリプションレベル１は、２つのノード、例えば、２つのＧＰＵと２つのＣＰＵに対応する。サブスクリプションレベル３は、サブスクリプションレベル１と比較してより大きい処理能力を割り当てる。
【００７７】
サブスクリプションレベルは、ユーザアカウントの種類に基づいて、ユーザアカウントに割り当てられる。例えば、ユーザアカウントが、例えば、周期的に、毎週、毎日等、定期的に、１つまたは複数のゲームのプレイに使用される時、ユーザアカウントは、不定期に１つまたは複数のゲームのプレイに使用されるユーザアカウントよりも高いサブスクリプションレベルを割り当てられる。別の例として、第１のユーザアカウントが、１つまたは複数のゲームのプレイに使用され、１つまたは複数のゲームにおいて、第２のユーザアカウントで購入されるよりも多数の視覚アイテムを購入する時、第１のユーザアカウントは、第２のユーザアカウントよりも高いサブスクリプションレベルを割り当てられる。さらに別の例として、１つまたは複数のゲームの定期的なプレイと、より多数の視覚アイテムの購入との両方が、より高いサブスクリプションレベルの割り当て決定のために監視される。
【００７８】
メモリデバイス３５２は、ゲームのグラフィックスレベルと、ゲームのプレイを可能にするために分散型ゲームエンジンを実行するノードの数との対応、例えば、マッピング、リスト、１対１関係等をさらに記憶する。例えば、メモリデバイス３５２は、ゲームのグラフィックスレベルがＡの時、ゲームをプレイするために分散型ゲームエンジンを実行するノードの数は４であることを示すエントリを含む。別の例として、メモリデバイス３５２は、ゲームのグラフィックスレベルがＢの時、ゲームをプレイするために分散型ゲームエンジンを実行するノードの数は３であることを示すエントリを含む。さらに別の例として、メモリデバイス３５２は、ゲームのグラフィックスレベルがＣの時、ゲームをプレイするために分散型ゲームエンジンを実行するノードの数は２であることを示すエントリを含む。
【００７９】
グラフィックスレベルは、ゲームの画像の解像度、ゲームフレーム生成に使用される色の数、フレーム生成に使用される強度レベルの数、ゲームをプレイするためのフレームレート、ゲームの中で位置が変化する仮想アイテムの数、ゲーム内で静止したままの背景の量、または、これらの組み合わせ等の基準に基づいて、規定される。例として、ゲームをプレイするためのフレームで使用される、フレームレートの増加、または、解像度の増加、または、強度レベルの数の増加、または、仮想アイテムの数の増加、または、色の数の増加がある時、分散型ゲームエンジンの実行に使用されるノードの数は増加する。例を挙げて説明すると、デバイス間のストリーミングセッションのハンドオーバの場合、ノードの数は増加する。さらに例を挙げて説明すると、ユーザが、自分のスマートフォンまたはタブレットでゲームをしている。ユーザは、家に着くと、自分のＰｌａｙＳｔａｔｉｏｎ（商標）ゲームコンソールにゲームを転送したい。スマートフォンまたはタブレットは、ゲームを低解像度及び低フレームレートで表示しているが、ＰｌａｙＳｔａｔｉｏｎ（商標）ゲームコンソールは、４Ｋまたは８Ｋのテレビと組み合わせて、より高い解像度とより高いフレームレートとを適用する。より高い解像度とより高いフレームレートとをサポートするために、ノードの数は増加する。このようなハンドオーバは、２０１６年４月２８日出願の米国特許出願番号第１５／１４１，７９９号「Ｃｌｏｕｄ  Ｇａｍｉｎｇ  Ｄｅｖｉｃｅ  Ｈａｎｄｏｖｅｒ」に記載され、その全体を参照により本明細書に組み込む。別の例として、ゲームをプレイするためのフレームに使用される、フレームレートの減少、または、解像度の減少、または、強度レベルの数の減少、または、仮想アイテムの数の減少、または、色の数の減少がある時、分散型ゲームエンジンの実行に使用されるノードの数は減少する。
【００８０】
通信デバイス３５４は、クラウドゲームサーバ１１０の通信サーバ３１４からゲーム１へのアクセスを許可される命令を受信し、その命令をプロセッサ３５０に送信する。命令は、ユーザアカウント１に割り当てられたユーザＩＤ１を含む。プロセッサ３５０は、メモリデバイス３５２にアクセスし、ユーザＩＤ１に基づいて、ユーザアカウント１に割り当てられた対応するサブスクリプションレベルを判定する。例えば、プロセッサ３５０は、ユーザアカウント１はサブスクリプションレベル１を割り当てられていることと、２つのノードが、分散型ゲームエンジン２０２を実行するためにユーザアカウント１に割り当てられていることを判定する。
【００８１】
プロセッサ３５０は、通信デバイス３５４を介して、情報、例えば、ＳＤＫを含むライブラリをノード１に送信して、または、スイッチシステム１０６を介して、ノード１、２が、内部通信プロトコルを用いて互いに通信するのを可能にして、ゲーム１のプレイを促進する。ある実施形態においては、プロセッサ３５０は、通信デバイス３５４を介して、情報をノード１、２の両方に送信し、コンピュータネットワーク１１２を介して、ノード１、２が、内部通信プロトコルを用いて互いに通信するのを可能にして、ゲーム１のプレイを促進する。
【００８２】
一実施形態においては、異なるグラフィックスレベルは、異なるゲームをプレイするためである。例えば、グラフィックスレベルＣは、ゲーム１をプレイするためであり、グラフィックスレベルＢは、ゲーム２をプレイするためである。
【００８３】
図３Ｄは、ゲームエンジンの様々な部分を示す図である。ゲームエンジンＡは、ゲーム１をプレイするためのゲームコードＡ、ゲーム１の状態を復元するための保存データＡ、ゲーム１を表示するためのレンダリングコードＡ、ゲーム１を実行する物理動作を行うための物理エンジンＡ、及び、ゲーム１をプレイするためのオーディオデータを適用するオーディオエンジンＡを含む。同様に、ゲームエンジンＢは、ゲーム２をプレイするためのゲームコードＢ、ゲーム２の状態を復元するための保存データＢ、ゲーム２を表示するためのレンダリングコードＢ、ゲーム２を実行する物理動作を行うための物理エンジンＢ、及び、ゲーム２をプレイするためのオーディオデータを適用するオーディオエンジンＢを含む。
【００８４】
ゲームコードは、本明細書で使用される場合、コンピュータネットワーク１１２を介してクライアントデバイスから受信したユーザ入力に基づいて、ゲームの次の状態を決定するために実行されるコンピュータプログラムである。ユーザ入力は、ハンドヘルドコントローラでユーザが行った選択、または、クライアントデバイスのマイクロフォンが捕捉したオーディオデータ、または、例えば、部屋、倉庫、階床、ロケ地、公園等のユーザが居る実世界環境に置かれた、例えば、デプスカメラ、赤外線カメラ、デジタルカメラ等のカメラによって撮影された画像データ、または、これらの組み合わせである。カメラは、例えば、１つまたは複数の手の動き、１つまたは複数の頭の動き、１つまたは複数の脚の動き等、ユーザが行ったジェスチャを撮影して、画像データを生成する。ゲームの状態は、例えば、ゲームを実行すると生成される仮想シーンの全ての部分の位置、向き、大きさ、形等の特徴を規定する。仮想シーンの部分は、仮想オブジェクトまたは背景を含む。例として、仮想オブジェクトは、１つのビデオフレームから他のビデオフレームで移動し、背景は、１つのビデオフレームから他のビデオフレームで静止したままである。別の例として、仮想オブジェクトは、１つのビデオシーンから他のビデオシーンで移動し、背景は、１つのビデオシーンから他のビデオシーンで静止したままである。例として、仮想オブジェクトは、１つのビデオフレームから他のビデオフレームで移動し、背景は、１つのビデオフレームから他のビデオフレームで静止したままであるが、所定の数のビデオフレームの後、移動する。仮想オブジェクトの例は、車両、建物、ユーザのアバタ、キャラクタ、超自然的ヒーロー、武器、動物等を含む。背景の例は、砂漠、山、海、木、建物、都市、聴衆等を含む。
【００８５】
保存データは、本明細書で使用される場合、ユーザが、自分のユーザアカウントからログアウトした後、そのユーザアカウントにログインする時、アクセスされるゲームの状態データである。例えば、ゲームセッション中に、ユーザは、自分のユーザアカウントから、あるゲーム状態でログアウトする。ユーザが、そのユーザアカウントに再度ログインする時、クライアントデバイスは、例えば、同じ仮想現実シーン等、ユーザがユーザアカウントからログアウトした時に表示されていたゲーム状態を表示する。
【００８６】
レンダリングコードは、本明細書で使用される場合、仮想シーンの１つまたは複数の部分の二次元（２Ｄ）または三次元（３Ｄ）モデルから画像を生成するために使用されるコンピュータプログラムである。例えば、レンダリングコードは、仮想シーンの１つまたは複数の部分に適用されるテクスチャと光の強度を規定する。別の例として、レンダリングコードは、仮想シーンの１つまたは複数の部分に適用する色、テクスチャ、陰影、及び、光の強度を規定する。
【００８７】
物理エンジンは、本明細書で使用される場合、例えば、仮想現実シーン、拡張現実シーン等の仮想シーンの異なる部分間、及び、異なる仮想シーン間の物理的関係を決定するように実行されるコンピュータプログラムである。物理的関係は、重力の法則、動きの法則、摩擦の法則等、物理学の法則に基づいて決定される。
【００８８】
オーディオエンジンは、本明細書で使用される場合、ゲームの対応する仮想シーンを管理するオーディオデータを決定、提供するコンピュータプログラムである。例えば、仮想シーンのある部分が音を出す時、オーディオエンジンは、音と、音の他の変数、例えば、ピッチ、トーン、振幅等とを出力するためのオーディオデータを決定し、オーディオデータを仮想シーンのその部分とリンクさせる。
【００８９】
図４Ａは、ビデオフレーム情報をノード２からノード１に送信する図１の分散型ゲームエンジン１０２の実行を示すシステム４００の実施形態の図である。システム４００は、ノード１、２、コンピュータネットワーク１１２、及び、クライアントデバイス1０４Ａ、１０４Ｂを含む。ノード１は、オーディオエンコーダ４０２Ａ及びビデオエンコーダ４０４Ａを含む。しかしながら、ノード２は、オーディオエンコーダも、ビデオエンコーダも、ＧＰＵも含まない。
【００９０】
オーディオエンコーダは、本明細書で使用される場合、オーディオファイルフォーマットまたはストリーミングオーディオフォーマットに従って、オーディオデータを圧縮または解凍する、例えば、集積回路、プロセッサ等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュール、または、これらの組み合わせである。
【００９１】
ビデオエンコーダは、本明細書で使用される場合、例えば、Ｈ．２６４、Ｈ．２６５／ＭＰＥＧ−Ｈ、Ｈ．２６３／ＭＰＥＧ−４、Ｈ．２６２／ＭＰＥＧ−２、カスタマイズされたプロトコル等、ビデオファイルフォーマットまたはストリーミングビデオフォーマットに従って、ビデオデータを圧縮または解凍する、例えば、集積回路、プロセッサ等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュール、または、これらの組み合わせである。
【００９２】
クライアントデバイス１０４Ａは、オーディオ／ビデオ（Ａ／Ｖ）ソータ４１８、オーディオデコーダ４２０、ビデオデコーダ４２２、ディスプレイデバイス４２４、通信デバイス４２６、及び、オーディオ出力デバイス４３０を含む。Ａ／Ｖソータは、オーディオデータとビデオデータを区別する、例えば、集積回路、プロセッサ等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュールである。さらに、オーディオデコーダは、オーディオファイルフォーマットまたはストリーミングオーディオフォーマットに従って、符号化されたオーディオフレームを、復号、例えば、解凍して、オーディオフレームを出力する。オーディオデコーダは、オーディオフレームの符号化も行う。同様に、ビデオデコーダは、ビデオファイルフォーマットまたはストリーミングビデオフォーマットに従って、符号化されたビデオフレームを復号、例えば、解凍して、ビデオフレームを出力する。さらに、ビデオデコーダは、ビデオフレームの符号化も行う。ディスプレイデバイスの例は、ヘッドマウントディスプレイ（ＨＭＤ）、または、液晶ディスプレイ（ＬＣＤ）デバイス、または、発光ダイオード（ＬＥＤ）ディスプレイデバイス、または、テレビのディスプレイ画面、または、モニタ、または、タブレットのディスプレイ画面、または、スマートフォンのディスプレイ画面を含む。通信デバイスの例は、ネットワークインタフェースコントローラまたはＮＩＣを含む。オーディオ出力部の例は、デジタルオーディオデータをアナログオーディオデータに変換するデジタル−アナログコンバータと、増幅器と、１つまたは複数のスピーカとを含む。増幅器の入力部は、デジタル−アナログコンバータに結合され、増幅器の出力部は、１つまたは複数のスピーカに結合される。
【００９３】
ＣＰＵ２０２Ａは、ゲームエンジンＡを実行して、ビデオフレーム情報４０６Ａを生成する。例えば、ＣＰＵ２０２Ａは、ゲームコードＡを実行し、ＣＰＵ２０２Ａ及び／またはＧＰＵ２０６Ａは、物理エンジンＡを実行して、ゲーム１の１つまたは複数の仮想シーンの位置、大きさ、形、及び、向きを生成する。ビデオフレーム情報の例は、本明細書で使用される場合、１つまたは複数の仮想シーンの位置、大きさ、形、向き、または、これらの組み合わせを含む。
【００９４】
同様に、ＣＰＵ２０２Ｂは、ゲームエンジンＡを実行して、ビデオフレーム情報４０６Ｂを生成する。例えば、ＣＰＵ２０２Ｂは、ゲームコードＡ及び物理エンジンＡを実行して、ゲーム１の１つまたは複数の仮想シーンの位置、大きさ、形、及び、向きを生成する。さらに、オーディオフレーム４１２Ｂが、１つまたは複数のプロセッサ、例えば、ノード２のＣＰＵ２０２Ｂによって生成される。オーディオフレーム４１２Ｂは、オーディオデータを含み、オーディオデータは、ビデオフレーム情報４０６Ｂを有する１つまたは複数の仮想シーンの表示と同時に音を出すためのオーディオデータという点で、ビデオフレーム情報４０６Ｂに関連付けられている。
【００９５】
ノード２の内部通信デバイス２１０Ｂは、内部通信プロトコルをビデオフレーム情報４０６Ｂ及びオーディオフレーム４１２Ｂに適用して、例えば、パケット、転送単位等のパッケージ化された情報４１４を生成し、例えば、内部通信プロトコルでパッケージ化されたデータの転送を可能にするケーブル等、通信リンク４１６を介して、パッケージ化された情報４１４を内部通信デバイス２１０Ａに送信する。リンク４１６の説明例は、ＰＣＩｅ通信バスである。
【００９６】
内部通信デバイス２１０Ａは、パッケージ化された情報４１４を受信し、パッケージ化された情報４１４に内部通信プロトコルを適用して、例えば、転送単位を非パケット化して、パッケージ化された情報４１４からビデオフレーム情報４０６Ｂ及びオーディオフレーム４１２Ｂを抽出する。ビデオフレーム情報４０６Ｂ及びオーディオフレーム４１２Ｂは、メモリデバイス２０４Ａに記憶される。
【００９７】
ＧＰＵ２０６Ａは、メモリデバイス２０４Ａからビデオフレーム情報４０６Ａ及びビデオフレーム情報４０６Ｂにアクセスし、ビデオフレーム情報４０６Ａ及びビデオフレーム情報４０６ＢにレンダリングコードＡを適用して、複数のビデオフレーム４０８（Ａ＋Ｂ）を生成する。複数のビデオフレーム４０８（Ａ＋Ｂ）は、ビデオ情報４０６Ａから生成されたビデオフレーム４０８Ａとビデオ情報４０６Ｂから生成されたビデオフレーム４０８Ｂとを含む。例として、ビデオフレームは、１つまたは複数の仮想シーンのライティング、強度、色、テクスチャ、陰影、または、これらの組み合わせを含む。
【００９８】
さらに、複数のオーディオフレーム４１０Ａが、例えば、ノード１のＣＰＵ２０２Ａ等の１つまたは複数のプロセッサによって生成される。オーディオフレーム４１０Ａは、ビデオフレーム４０８Ａ内のシーンのある部分にオーディオデータを提供するという点で、ビデオフレーム４０８Ａと関連付けられる。例えば、オーディオフレーム４１０Ａは、仮想オブジェクトが発する音のオーディオデータを含む。別の例として、オーディオフレーム４１０Ａは、１つまたは複数の仮想シーン内の背景が発する音を生成するオーディオデータを含む。
【００９９】
オーディオエンコーダ４０２Ａは、オーディオフレーム４１０Ａ及びオーディオフレーム４１２Ｂを符号化して、符号化されたオーディオフレームを生成する。同様に、ビデオエンコーダ４０４Ａは、ビデオフレーム４０８（Ａ＋Ｂ）を符号化して、符号化されたビデオフレームを生成する。ネットワーク通信デバイス２０８Ａは、符号化されたオーディオフレーム及び符号化されたビデオフレームに外部通信プロトコルを適用して、複数のフレームパケットを生成し、そのフレームパケットを、コンピュータネットワーク１１２を介してクライアントデバイス１０４Ａに送信する。
【０１００】
通信デバイス４２６は、フレームパケットを受信し、外部通信プロトコルを適用することによってフレームパケットを非パケット化して、符号化されたビデオフレーム及び符号化されたオーディオフレームを出力する。Ａ／Ｖソータ４１８は、符号化されたビデオフレームと符号化されたオーディオフレームを区別し、符号化されたビデオフレームをビデオデコーダ４２２に、符号化されたオーディオフレームをオーディオデコーダ４２０に送信する。ビデオデコーダ４２２は、符号化されたビデオフレームを復号して、ビデオフレーム４０８（Ａ＋Ｂ）を出力する。さらに、オーディオデコーダ４２０は、符号化されたオーディオフレームを復号して、オーディオフレーム４１０Ａ、４１２Ｂを出力する。
【０１０１】
ディスプレイデバイス４２４は、ビデオフレーム４０８（Ａ＋Ｂ）から１つまたは複数の仮想シーンを表示する。例えば、ディスプレイデバイス４２４は、ディスプレイデバイス４２４の色成分及び光強度成分を制御して、仮想シーンの全ての部分の、位置、向き、色、テクスチャ、光強度、陰影、または、これらの組み合わせを含む仮想シーンを生成する。さらに、オーディオ出力デバイス４３０は、オーディオフレーム４１０Ａ、４１２Ｂから音を出力する。例えば、オーディオ出力部４３０のアナログ−デジタルコンバータは、オーディオフレーム４１０Ａ、４１２Ｂをデジタル形式からアナログ形式に変換して、アナログオーディオデータを生成する。アナログオーディオデータは、オーディオ出力デバイス４３０の増幅器によって増幅されて、増幅されたオーディオデータを生成する。増幅されたオーディオデータは、オーディオ出力デバイス４３０の１つまたは複数のスピーカによって電気エネルギーから音エネルギーに変換される。
【０１０２】
ある実施形態においては、ノード１は、ビデオフレーム情報４０６Ｂ及びオーディオフレーム４１２Ｂを生成するタスクをノード２に委託するマスタとして働く。
【０１０３】
一実施形態においては、マルチプレイヤゲームにおいては、図４Ａに記載され、ネットワーク通信デバイス２０８Ａから通信されるフレームパケットは、複数のクライアントデバイス、例えば、クライアントデバイス１０４Ａ、１０４Ｂ等にブロードキャストされる。例えば、フレームパケットは、ゲームプレイのために、ネットワーク通信デバイス２０８Ａからコンピュータネットワーク１１２を介してクライアントデバイスデバイス１０４Ａ、１０４Ｂに送信される。このようなブロードキャストは、フレームパケット生成のための計算が、ノード１及びノード２で一度、実行され、フレームパケットが、ノード１から複数のクライアントデバイスにブロードキャストされるので、節電になる。
【０１０４】
ある実施形態においては、オーディオデータ及びビデオデータを含み、図４Ａに記載され、ネットワーク通信デバイス２０８Ａから送信されるフレームパケットは、ゲームの観客に送信される。例えば、フレームパケットは、さらに観客が見るために、ネットワーク通信デバイス２０８Ａからコンピュータネットワーク１１２を介して、Ｙｏｕｔｕｂｅ（登録商標）（商標）もしくはＴｗｉｔｃｈ（商標）等の観客サービス、または、ｅスポーツサービスをホストするサーバに送信される。
【０１０５】
一実施形態においては、ノード１は、オーディオデータをレンダリングして、オーディオ波を生成する集積回路等のオーディオレンダラを含む。オーディオ波は、次に、オーディオエンコーダ４０２Ａによって符号化される。オーディオデータのレンダリングは、クライアントデバイス１０４Ａの、ステレオ５．１またはステレオ７．１等のスピーカ設定に基づいて行われる。
【０１０６】
ノード１がオーディオレンダラを含まないある実施形態においては、オーディオデータは、オーディオエンコーダ４０２Ａによって符号化され、ノード１からコンピュータネットワーク１１２を介してクライアントデバイス１０４Ａにストリーミングされる。クライアントデバイス１０４Ａは、オーディオデータをレンダリングしてオーディオ波を生成するオーディオレンダラを含む。例えば、クライアントデバイス１０４Ａは、各仮想オブジェクトを空間に配置して、オーディオ波を計算することによって、オーディオ波をレンダリングする。計算は、ステレオ５．１またはステレオ７．１等のクライアントデバイス１０４Ａのスピーカの数によって決まる。
【０１０７】
一実施形態においては、オーディオ波を生成するオーディオデータのレンダリングは、ノード２内で行われない。ノード２は、オーディオレンダラを含まない。つまり、ビデオフレーム情報４０６Ｂに関連付けられたオーディオデータは、ノード２から内部通信デバイス２１０Ｂ、２１０Ａを介してノード１に送信され、オーディオ波のレンダリングは、ノード１のオーディオレンダラによって行われる。オーディオ波は、次に、オーディオエンコーダ４０２Ａによって符号化される。
【０１０８】
図４Ｂは、ビデオフレームがノード２Ａからノード１に送信される、図１の分散型ゲームエンジン１０２の別の実施形態を示すシステム４５０の実施形態の図である。システム４５０は、ノード１、ノード２Ａ、コンピュータネットワーク１１２、及び、クライアントデバイス１０４Ａ、１０４Ｂを含む。ノード２Ａは、ＧＰＵ２０６Ｂを含む以外は、図４Ａのノード２と同じである。ノード２Ａは、オーディオエンコーダもビデオエンコーダも含まない。
【０１０９】
ＧＰＵ２０６Ｂは、レンダリングコードＡを適用して、ビデオフレーム情報４０６Ｂから複数のビデオフレーム４５２Ｂを生成する。例えば、ＧＰＵ２０６Ｂは、１つまたは複数の仮想シーンに適用する光強度、テクスチャ、陰影、及び、色を決定して、ビデオフレーム４５２Ｂを生成する。
【０１１０】
ノード２の内部通信デバイス２１０Ｂは、内部通信プロトコルをビデオフレーム４５２Ｂ及びオーディオフレーム４１２Ｂに適用して、例えば、パケット、転送単位等のパッケージ化された情報４５４を生成し、パッケージ化された情報４５４を、通信リンク４１６を介して内部通信デバイス２１０Ａに送信する。一実施形態においては、オーディオデータに対する、サンプルレート変換、増幅、及び、オーディオフィルタリング等の他の操作は、オーディオフレーム４１２Ｂを生成する前に、ノード２内で行われる。オーディオデータは、ビデオフレーム４５２Ｂの表示と同時に出力される音に後に変換される。
【０１１１】
内部通信デバイス２１０Ａは、パッケージ化された情報４５４を受信して、内部通信プロトコルをパッケージ化された情報４５４に適用し、例えば、転送単位等を非パケット化して、パッケージ化された情報４５２からビデオフレーム４５２Ｂ及びオーディオフレーム４１２Ｂを抽出する。ビデオフレーム情報４０６Ｂ及びオーディオフレーム４１２Ｂは、メモリデバイス２０４Ａに記憶される。
【０１１２】
ＧＰＵ２０６Ａは、メモリデバイス２０４Ａからビデオフレーム情報４０６Ａにアクセスし、レンダリングコードＡをビデオフレーム情報４０６Ａに適用して、複数のビデオフレーム４５２Ａを生成する。ビデオエンコーダ４０４Ａは、ビデオフレーム４５２Ａ及びビデオフレーム４５２Ｂを符号化して、符号化されたビデオフレームを生成する。オーディオエンコーダ４０２Ａは、オーディオフレーム４１０Ａ及びオーディオフレーム４１２Ｂを符号化し、符号化されたオーディオフレームを生成する。ネットワーク通信デバイス２０８Ａは、外部通信プロトコルを符号化されたオーディオフレーム及び符号化されたビデオフレームに適用して、複数のフレームパケットを生成し、フレームパケットを、コンピュータネットワーク１１２を介してクライアントデバイス１０４Ａに送信する。
【０１１３】
ある実施形態においては、ノード１は、ビデオフレーム４５２Ｂを生成するタスクをノード２Ａに委託するマスタとして働く。
【０１１４】
一実施形態においては、マルチプレイヤゲームにおいて、ネットワーク通信デバイス２０８Ａから送信された図４Ｂに記載のフレームパケットは、例えば、クライアントデバイス１０４Ａ、１０４Ｂ等、複数のクライアントデバイスにブロードキャストされる。例えば、フレームパケットは、節電のため、ノード１及びノード２Ａによって一度、生成され、ゲームプレイのためにコンピュータネットワーク１１２を介してネットワーク通信デバイス２０８Ａからクライアントデバイス１０４Ａ、１０４Ｂに送信される。フレームパケットは、ゲームエンジンＡへのアクセスを許可された異なるクライアントデバイスのそれぞれに対して、再度、生成される必要はない。
【０１１５】
図５Ａは、図１の分散型ゲームエンジン１０２のさらに別の実施形態を示すシステムの５００実施形態の図である。システム５００は、ノード１、ノード２Ｂ、コンピュータネットワーク１１２、及び、クライアントデバイス１０４Ａ１を含む。ノード２Ｂは、オーディオエンコーダ４０２Ｂ、ビデオエンコーダ４０４Ｂ、及び、ネットワーク通信デバイス２０８Ｂを含む以外は、図４Ｂのノード２Ａと同じである。
【０１１６】
クライアントデバイス１０４Ａ１は、ビデオデコーダ１、ビデオデコーダ２、オーディオデコーダ１、オーディオデコーダ２、及び、フレームオーガナイザ５０２を含む以外は、図４Ｂのクライアントデバイス１０４Ａと同じである。フレームオーガナイザ５０２は、ディスプレイデバイス４２４に表示するためにビデオフレーム１〜４を連続した順番に整理する、例えば、プロセッサ、集積回路等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュール、または、これらの組み合わせである。さらに、フレームオーガナイザ５０２は、連続した順番のビデオフレーム１〜４に関連付けられた音を出力するために、連続した順番にオーディオフレーム１〜４を整理する。
【０１１７】
ビデオフレーム情報４０６Ａは、ビデオフレーム情報１及びビデオフレーム情報３を含む。同様に、ビデオフレーム情報４０６Ｂは、ビデオフレーム情報２及びビデオフレーム情報４を含む。ビデオフレーム情報１は、仮想シーンのビデオフレーム１に関する情報であり、ビデオフレーム情報２は、仮想シーンのビデオフレーム２に関する情報であり、ビデオフレーム情報３は、仮想シーンのビデオフレーム３に関する情報であり、ビデオフレーム情報４は、仮想シーンのビデオフレーム４に関する情報である。例として、各ビデオフレーム情報１〜４は、仮想シーンの１つまたは複数の仮想オブジェクト及び／または背景の位置、向き、大きさ、及び、形を含む。
【０１１８】
ビデオフレーム１〜４は、連続した順番で表示される。例えば、ビデオフレーム２は、ビデオフレーム１がクライアントデバイス１０４Ａ１に表示された後、クライアントデバイス１０４Ａ１に表示される。ビデオフレーム３は、ビデオフレーム２がクライアントデバイス１０４Ａ１に表示された後、クライアントデバイス１０４Ａ１に表示される。ビデオフレーム４は、ビデオフレーム３がクライアントデバイス１０４Ａ１に表示された後、クライアントデバイス１０４Ａ１に表示される。一実施形態においては、ビデオフレームは、本明細書で使用される場合、画素列で構成され、画素の数によって制御される解像度を有する。各画素は、仮想オブジェクトまたは背景の形、大きさ、及び、テクスチャを規定する色及び光強度を有する。
【０１１９】
ビデオフレーム４５２Ａは、ビデオフレーム１、３を含む。さらに、ビデオフレーム４５２Ｂは、ビデオフレーム２、４を含む。同様に、オーディオフレーム４１０Ａは、オーディオフレーム１及びオーディオフレーム３を含み、オーディオフレーム４１０Ｂは、オーディオフレーム２及びオーディオフレーム４を含む。オーディオフレーム１は、ビデオフレーム１の表示と同時にクライアントデバイス１０４Ａ１によって音として発せられるオーディオデータを有する。同様に、オーディオフレーム２は、ビデオフレーム２の表示と同時に、クライアントデバイス１０４Ａ１によって音として発せられるオーディオデータを有し、オーディオフレーム３は、ビデオフレーム３の表示と同時にクライアントデバイス１０４Ａ１によって音として発せられるオーディオデータを有し、オーディオフレーム４は、ビデオフレーム４の表示と同時にクライアントデバイス１０４Ａ１によって音として発せられるオーディオデータを有する。
【０１２０】
ビデオフレーム１、３を生成する前に、ＣＰＵ２０２Ａ及びＧＰＵ２０６Ａは、ノード２Ｂからのビデオフレーム２、４の受信を待つ。ある実施形態においては、ビデオフレーム１、３を生成する前に、ＣＰＵ２０２Ａは、内部通信デバイス２０６Ａ、通信リンク４１６、及び、内部通信デバイス２０６Ｂを介してＣＰＵ２０２Ｂに、ビデオフレーム２、４の要求、及び、オーディオフレーム２、４の要求を送信する。ビデオフレーム２、４を受信し、ビデオフレーム２、４をメモリデバイス２０４Ａに記憶すると、ＣＰＵ２０２Ａは、ビデオフレーム４からビデオフレーム情報４を抽出し、ビデオフレーム２からビデオフレーム情報２を抽出し、ビデオフレーム情報４及びビデオフレーム情報２を適用して、ビデオフレーム情報３を生成し、且つ、ビデオフレーム情報１を生成する。例えば、ビデオフレーム情報２は、仮想のボールが位置２にあることを示し、ビデオフレーム情報４は、仮想のボールが位置４にあることを示す。ＣＰＵ２０２Ａは、位置２、４から仮想のボールが位置２と位置４の間の位置３にあることを判定する。ビデオフレーム情報３は、仮想のボールの位置３を含む。別の例として、ビデオフレーム情報２は、仮想のボールが位置２にあることを示し、物理エンジンコードＡは、重力の法則に従うことを示す。ＣＰＵ２０２Ａは、位置２及び重力の法則から、仮想のボールは位置３にあり、位置３は位置２より下であることを判定する。ビデオフレーム情報１は、ＧＰＵ２０６Ａによってレンダリングされて、ビデオフレーム１を生成し、ビデオフレーム情報３は、ＧＰＵ２０６Ａによってレンダリングされて、ビデオフレーム３を生成する。同様に、オーディオフレーム１及び／または３は、オーディオフレーム２及び／または４のオーディオデータから生成される。
【０１２１】
さらに、ビデオエンコーダ４０４Ａは、ビデオフレーム１、３を符号化して、符号化されたビデオフレームを生成し、符号化されたビデオフレームをネットワーク通信デバイス２０８Ａに送信する。さらに、オーディオエンコーダ４０２Ａは、オーディオフレーム１、３を符号化して、符号化されたオーディオフレームを生成し、符号化されたオーディオフレームをネットワーク通信デバイス２０８Ａに送信する。ネットワーク通信デバイス２０８Ａは、外部通信プロトコルを符号化されたビデオフレーム及び符号化されたオーディオフレームに適用して、符号化されたビデオフレーム及び符号化されたオーディオフレームを含む複数のパケットを生成する。パケットは、ノード１からコンピュータネットワーク１１２を介してクライアントデバイス１０４Ａ１に送信される。
【０１２２】
同様に、ビデオフレーム２、４を生成する前に、ＣＰＵ２０２Ｂ及びＧＰＵ２０６Ｂは、ノード１からのビデオフレーム１、３の受信を待つ。ある実施形態においては、ビデオフレーム２、４を生成する前に、ＣＰＵ２０２Ｂは、内部通信デバイス２０６Ｂ、通信リンク４１６、及び、内部通信デバイス２０６Ａを介して、ビデオフレーム１、３の要求及びオーディオフレーム１、３の要求をＣＰＵ２０２Ａに送信する。要求を受信すると、ＣＰＵ２０２Ａは、ビデオフレーム１、３とオーディオフレーム１、３とを内部通信デバイス２１０Ａに送信する。内部通信デバイス２１０Ａは、内部通信プロトコルをビデオフレーム１、３とオーディオフレーム１、３とに適用して、パッケージ化された情報を生成し、パッケージ化された情報を、通信リンク４１６を介して内部通信デバイス２１０Ｂに送信する。内部通信デバイス２１０Ｂは、内部通信プロトコルを適用して、ビデオフレーム１、３とオーディオフレーム１、３とをパッケージ化された情報から抽出する。ビデオフレーム１、３とオーディオフレーム１、３とはメモリデバイス２０４Ｂに記憶される。
【０１２３】
ビデオフレーム１、３を受信し、フレーム１、３をメモリデバイス２０４Ｂに記憶すると、ＣＰＵ２０２Ｂは、ビデオフレーム１からビデオフレーム情報１を抽出し、ビデオフレーム３からビデオフレーム情報３を抽出し、ゲームエンジンＡをビデオフレーム情報１及びビデオフレーム情報３に適用して、ビデオフレーム情報２を生成し、且つ、ビデオフレーム情報４を生成する。例えば、ビデオフレーム情報１は、仮想のボールが位置１にあることを示し、ビデオフレーム情報３は、仮想のボールが位置３にあることを示す。ＣＰＵ２０２Ｂは、位置１及び３から、仮想のボールが位置１と位置３の間の位置２にあることを判定する。ビデオフレーム情報２は、仮想のボールの位置２を含む。別の例として、ビデオフレーム情報３は、仮想のボールが位置３にあることを示し、物理エンジンコードＡは、重力の法則に従うことを示す。ＣＰＵ２０２Ｂは、位置３と重力の法則とから、仮想のボールが位置４にあること、位置４は位置３の下であることを決定する。ビデオフレーム情報２は、ＧＰＵ２０６Ｂによってレンダリングされて、ビデオフレーム２を生成し、ビデオフレーム情報４は、ＧＰＵ２０６Ｂによってレンダリングされて、ビデオフレーム４を生成する。同様に、オーディオフレーム２及び／または４は、オーディオフレーム１及び／または３のオーディオデータから生成される。
【０１２４】
さらに、ビデオエンコーダ４０４Ｂは、ビデオフレーム２、４を符号化して、符号化されたビデオフレームを生成し、符号化されたビデオフレームをネットワーク通信デバイス２０８Ｂに送信する。さらに、オーディオエンコーダ４０２Ｂは、オーディオフレーム２、４を符号化して符号化されたオーディオフレームを生成し、符号化されたオーディオフレームをネットワーク通信デバイス２０８Ｂに送信する。ネットワーク通信デバイス２０８Ｂは、符号化されたビデオフレーム及び符号化されたオーディオフレームに外部通信プロトコルを適用して、符号化されたビデオフレーム及び符号化されたオーディオフレームを含む複数のパケットを生成する。パケットは、ノード２Ｂからコンピュータネットワーク１１２を介してクライアントデバイス１０４Ａ１に送信される。
【０１２５】
クライアントデバイス１０４Ａ１の通信デバイス４２６は、ノード１からコンピュータネットワーク１１２を介してパケットを受信し、外部通信プロトコルをパケットに適用して、ノード１から送信された符号化されたビデオフレーム及び符号化されたオーディオフレームを取得する。同様に、通信デバイス４２６は、ノード２Ｂからコンピュータネットワーク１１２を介してパケットを受信し、外部通信プロトコルをパケットに適用して、ノード２Ｂから送信された符号化されたビデオフレーム及び符号化されたオーディオフレームを取得する。
【０１２６】
Ａ／Ｖソータ４１８は、ノード１から受信した符号化されたオーディオフレーム、ノード２Ｂから受信した符号化されたオーディオフレーム、ノード１から受信した符号化されたビデオフレーム、ノード２Ｂから受信した符号化されたビデオフレームを区別する。Ａ／Ｖソータ４１８は、ノード１から受信した符号化されたオーディオフレームをオーディオデコーダ１に送信し、ノード２Ｂから受信した符号化されたオーディオフレームをオーディオデコーダ２に送信し、ノード１から受信した符号化されたビデオフレームをビデオデコーダ１に送信し、ノード２Ｂから受信した符号化されたビデオフレームをビデオデコーダ２に送信する。オーディオデコーダ１は、ノード１から受信した符号化されたオーディオフレームを復号し、ビデオデコーダ１は、ノード１から受信した符号化されたビデオフレームを復号する。同様に、ビデオデコーダ２は、ノード２Ｂから受信した符号化されたビデオフレームを復号し、オーディオデコーダ２は、ノード２Ｂから受信した符号化されたオーディオフレームを復号する。
【０１２７】
フレームオーガナイザ５０２は、ビデオデコーダ１、２からビデオフレームを受信し、連続した順番にビデオフレーム１〜４を整理する。さらに、フレームオーガナイザ５０２は、オーディオデコーダ１、２からオーディオフレームを受信し、連続した順番にオーディオフレーム１〜４を整理する。例えば、ビデオフレーム１、３は、フレーム２、４がクライアントデバイス１０４Ａ１に到着するまで、クライアントデバイス１０４Ａ１のバッファに記憶される。フレーム２、４が、ネットワークの待ち時間の変動が原因で遅れて到着する場合もあり、失われる場合もある。フレーム２、４が失われた場合、順方向誤り訂正が適用される。順方向誤り訂正が適用されると、クライアントデバイス１０４Ａ１は、ビデオエンコーダ４０４Ａ、４０４Ｂとオーディオエンコーダ４０２Ａ、４０２Ｂとに失われたことを通知する。通知を受信後、ビデオエンコーダ４０４Ａ及び４０４Ｂとオーディオエンコーダ４０２Ａ及び４０２Ｂとは、新しいフレームの符号化に、失われたフレームからのデータを使用しない。代わりに、ビデオエンコーダ４０４Ａ、４０４Ｂとオーディオエンコーダ４０２Ａ、４０２Ｂとは、失われたフレームの前に生成された、または、失われたフレームの後に生成された他のフレームを使用して、新しいフレームを符号化する。
【０１２８】
オーディオフレーム１〜４は、フレームオーガナイザ５０２からオーディオ出力デバイス４３０に送信されて、ビデオフレーム１〜４に関連付けられた音を出力し、ビデオフレーム１〜４は、フレームオーガナイザ５０２からディスプレイデバイス４２４に送信されて、ビデオフレーム１〜４を表示する。例えば、ビデオフレーム１は、オーディオフレーム１からの音の出力と同時に表示され、ビデオフレーム２は、オーディオフレーム２からの音の出力と同時に表示され、ビデオフレーム３は、オーディオフレーム３からの音の出力と同時に表示され、ビデオフレーム４は、オーディオフレーム４からの音の出力と同時に表示される。
【０１２９】
一実施形態においては、ビデオデコーダ１は、ビデオデコーダ２によって適用されるフォーマット、例えば、カスタマイズされたフォーマットとは異なるビデオファイルフォーマットまたはストリーミングビデオフォーマット、例えば、Ｈ.２６４を適用して、符号化されたビデオフレームを復号する。ある実施形態においては、オーディオデコーダ１は、オーディオデコーダ２によって適用されたフォーマットとは異なるオーディオファイルフォーマットまたはストリーミングオーディオフォーマットを適用して、符号化されたオーディオフレームを復号する。
【０１３０】
ある実施形態においては、２つの異なるビデオデコーダ１、２を使用する代わりに、１つのビデオデコーダを使用して、ノード１、２Ｂから受信した符号化されたビデオフレームを復号する。さらに、一実施形態においては、２つの異なるオーディオデコーダ１及び２を使用する代わりに、１つのオーディオデコーダを使用して、ノード１、２Ｂから受信した符号化されたオーディオフレームを復号する。
【０１３１】
一実施形態においては、ビデオフレーム１、３は、ビデオフレーム２、４からの情報を使用せずに生成され、オーディオフレーム１、３は、オーディオフレーム２、４からの情報を使用せずに生成される。この場合、ビデオフレーム２、４とオーディオフレーム２、４とをノード２Ｂからノード１に送信する必要はない。
【０１３２】
同様に、ある実施形態においては、ビデオフレーム２、４は、ビデオフレーム１、３からの情報を使用せずに生成され、オーディオフレーム２、４は、オーディオフレーム１、３からの情報を使用せずに生成される。この場合、ビデオフレーム１、３とオーディオフレーム１、３とをノード１からノード２Ｂに送信する必要はない。
【０１３３】
一実施形態においては、ノード１とノード２Ｂとの間の、ビデオフレーム１、２、３、４及び／またはオーディオフレーム１、２、３、４のやり取りが、例えば、所定の遅延を超えること無しに、所定の頻度で等、連続して行われて、クライアントデバイス１０４Ａ１のディスプレイデバイス４２４のビデオフレーム１、２、３、４の表示のフレームレートを達成する。ノード１、２Ｂが、例えば、１つの同じノード等、集合ノードであるかのように、クライアントデバイス１０４Ａには見える。
【０１３４】
ある実施形態においては、ビデオエンコーダ４０４Ａは、クライアントデバイス１０４Ａ１からコンピュータネットワーク１１２及びネットワーク通信デバイス２０８Ａを介して受信した符号化されたビデオデータを復号する。例えば、ビデオデータは、クライアントデバイス１０４Ａ１に結合された、または、クライアントデバイス１０４Ａ１の一部である、デプスカメラまたはウェブカメラまたは赤外線カメラ等のカメラによって撮影される。さらに、オーディオエンコーダ４０２Ａは、クライアントデバイス１０４Ａ１からコンピュータネットワーク１１２及びネットワーク通信デバイス２０８Ａを介して受信した符号化されたオーディオデータを復号する。例えば、オーディオデータは、クライアントデバイス１０４Ａ１に結合された、または、クライアントデバイス１０４Ａ１の一部である、マイクロフォンによって捕捉される。同様に、ビデオエンコーダ４０４Ｂは、クライアントデバイス１０４Ａ１からコンピュータネットワーク１１２及びネットワーク通信デバイス２０８Ａを介して受信した符号化されたビデオデータを復号する。さらに、オーディオエンコーダ４０２Ｂは、クライアントデバイス１０４Ａ１からコンピュータネットワーク１１２及びネットワーク通信デバイス２０８Ａを介して受信した符号化されたオーディオデータを復号する。
【０１３５】
ノード１、ノード２Ｂが、それぞれ、オーディオレンダラを含まないある実施形態においては、ビデオフレーム１、３によって表される仮想オブジェクトのオーディオデータは、オーディオエンコーダ４０２Ａによって符号化され、ノード１からコンピュータネットワーク１１２を介してクライアントデバイス１０４Ａ１にストリーミングされる。クライアントデバイス１０４Ａ１は、オーディオデータをレンダリングしてオーディオ波を生成するオーディオレンダラを含む。例えば、クライアントデバイス１０４Ａ１は、仮想オブジェクトを空間に配置し、オーディオ波を計算することによって。オーディオ波をレンダリングする。計算は、ステレオ５．１またはステレオ７．１等、クライアントデバイス１０４Ａ１のスピーカの数によって決まる。同様に、ビデオフレーム２、４によって表される他の仮想オブジェクトまたは背景のオーディオデータは、オーディオエンコーダ４０２Ｂによって符号化され、ノード２Ｂからコンピュータネットワーク１１２を介してクライアントデバイス１０４Ａ１にストリーミングされる。クライアントデバイス１０４Ａ１は、ノード１から受信したオーディオデータのレンダリングに使用されるオーディオレンダラと同じもの、または、他のオーディオレンダラを使用して、ノード２Ｂから受信したオーディオデータをレンダリングして、他の仮想オブジェクトまたは背景の他のオーディオ波を生成する。
【０１３６】
一実施形態においては、マルチプレイヤゲームにおいて、ネットワーク通信デバイス２０８Ａ、２０８Ｂから送信された図５Ａに記載のフレームパケットは、例えば、クライアントデバイス１０４Ａ１及び他のクライアントデバイス等、複数のクライアントデバイスにブロードキャストされる。例えば、節電のために、フレームパケットは、ノード１、２Ｂによって一度、生成され、ゲームプレイのために、コンピュータネットワーク１１２を介してネットワーク通信デバイス２０８Ａ、２０８Ｂから複数のクライアントデバイスに送信される。ノード１、２Ｂによって送信されたフレームパケットは、ノード１、２ＢからゲームエンジンＡに同時にアクセスを許可された各異なるクライアントデバイスに対して再度、生成される必要はない。
【０１３７】
図５Ｂは、フレーム１、３がノード１によって生成され、フレーム２、４が図５Ａのノード２Ｂまたは図４Ｂのノード２Ａによって生成されることを示す図である。フレーム１に示すように、仮想のボールは、仮想シーン５７２Ａにおいて、仮想のユーザ５７０が離した時、位置１及び／または向き１にある。さらに、仮想シーン５７２Ｂのフレーム２において、仮想のボールは、位置２及び／または向き２にあり、仮想シーン５７２Ｃのフレーム３において、仮想のボールは、位置３及び／または向き３にあり、仮想シーン５７２Ｄのフレーム４において、仮想のボールは、位置４及び／または向き４にある。仮想のユーザ５７０は、実際のユーザ、例えば、人であるユーザ１のアバタである。仮想のボールの位置２は、位置１の下である。また、仮想のボールの位置３は、位置２の下で、仮想のボールの位置４は、位置２の下である。
【０１３８】
一実施形態においては、仮想のボールは、フレーム１〜４の全てで同じ向きである。ある実施形態においては、仮想のボールは、フレーム１〜４の全てで同じ位置にあるが、フレームにおいて向きが異なる。
【０１３９】
一実施形態においては、マルチプレイヤゲームにおいて、ネットワーク通信デバイス２０８Ａ、２０８Ｂから送信された図５Ｂに記載のフレームパケットは、例えば、クライアントデバイス１０４Ａ１、他のクライアントデバイス等、複数のクライアントデバイスにブロードキャストされる。ノード１、２Ｂによって送信されるフレームパケットは、ノード１、２Ｂから同時にゲームエンジンＡへのアクセスを許可された異なるクライアントデバイスのそれぞれに対して、再び、生成される必要はない。
【０１４０】
図６Ａは、図１の分散型ゲームエンジン１０２のさらに別の実施形態を示すシステム６００の実施形態の図で、あるノードからのビデオフレームの一部を使用して、他のノードのビデオフレームの一部を生成する。システム６００は、ノード１、２Ｂ、コンピュータネットワーク１１２、及び、クライアントデバイス１０４Ａ１を含む。
【０１４１】
ＣＰＵ２０２Ａは、ゲームエンジンＡを実行して、ビデオフレーム１のビデオフレーム部分情報１と、ビデオフレーム１のビデオフレーム部分情報３とを生成する。例えば、ＣＰＵ２０２Ａは、ゲームコードＡを実行し、ＣＰＵ２０２Ａ及び／またはＧＰＵ２０６Ａは、物理エンジンＡを実行して、ゲーム１の仮想シーンの一部分の位置、大きさ、形、及び、向きを生成する。ビデオフレーム部分情報の例は、本明細書で使用される場合、仮想シーンの一部分の位置、大きさ、形、向き、または、これらの組み合わせを含む。仮想シーンの一部分の例は、ビデオフレーム内の仮想オブジェクト、または、ビデオフレームの背景である。ビデオシーンの一部分の別の例は、ビデオフレーム内の所定の数の隣り合う画素である。ビデオシーンの一部分のさらに別の例は、ビデオフレームのクワドラント内の所定の数の隣り合う画素である。ビデオシーンの一部分のさらに別の例は、ビデオフレーム内の所定の数の隣り合う列である。仮想シーンの一部分の別の例は、ビデオフレーム内の１つまたは複数の仮想オブジェクトである。仮想シーンの一部分のさらに別の例は、ビデオフレーム内の仮想オブジェクトの一部分、または、ビデオフレーム内の背景の一部分である。
【０１４２】
ＧＰＵ２０６Ａは、メモリデバイス２０４Ａからビデオフレーム部分情報１にアクセスし、レンダリングコードＡをビデオフレーム部分情報１に適用して、ビデオフレーム１のビデオフレーム部分１を生成する。同様に、ＧＰＵ２０６Ａは、メモリデバイス２０４Ａからビデオフレーム部分情報３にアクセスし、レンダリングコードＡをビデオフレーム部分情報３に適用して、ビデオフレーム１のビデオフレーム部分３を生成する。例えば、ＧＰＵ２０６Ａは、色、陰影、強度、及び／または、テクスチャをビデオフレーム１の第１の仮想オブジェクトに適用し、色、陰影、強度、及び／または、テクスチャをビデオフレーム３内の背景に適用することを決定する。
【０１４３】
さらに、オーディオフレーム部分１及びオーディオフレーム部分３は、ノード１の、例えば、ＣＰＵ２０２Ａ等の１つまたは複数のプロセッサによって生成される。オーディオフレーム部分１は、オーディオフレーム部分１がビデオフレーム１内のビデオフレーム部分１によって発せられる音のオーディオデータを提供するという点で、ビデオフレーム部分１に関連付けられる。例えば、オーディオフレーム部分１は、ビデオフレーム１内の仮想オブジェクトまたは背景または一部分が発する音のオーディオデータを含む。オーディオフレーム部分３は、オーディオフレーム部分３が、ビデオフレーム１内のビデオフレーム部分３が発する音のオーディオデータを提供するという点で、ビデオフレーム部分３に関連付けられる。例えば、オーディオフレーム部分３は、ビデオフレーム１内の仮想オブジェクトまたは背景または一部分によって発せられる音のオーディオデータを含む。
【０１４４】
同様に、ＣＰＵ２０２Ｂは、ゲームエンジンＡを実行して、ビデオフレーム部分情報２及びビデオフレーム部分情報４を生成する。例えば、ＣＰＵ２０２Ｂは、ゲームコードＡを実行し、ＣＰＵ２０２Ｂ及び／またはＧＰＵ２０６Ｂは、物理エンジンＡを実行して、ゲーム１のビデオフレーム１内の仮想シーンの一部分の位置、大きさ、形、及び、向きを生成し、ビデオフレーム１のビデオフレーム部分１及びビデオフレーム部分３がノード１によって生成される。
【０１４５】
ＧＰＵ２０６Ｂは、メモリデバイス２０４Ｂからビデオフレーム部分情報２にアクセスし、レンダリングコードＡをビデオフレーム部分情報２に適用して、ビデオフレーム１のビデオフレーム部分２を生成する。同様に、ＧＰＵ２０６Ｂは、メモリデバイス２０４Ｂからビデオフレーム部分情報４にアクセスし、レンダリングコードＡをビデオフレーム部分情報４に適用して、ビデオフレーム１のビデオフレーム部分４を生成する。例えば、ＧＰＵ２０６Ｂは、色、強度、及び／または、テクスチャをビデオフレーム１の第２の仮想オブジェクトに適用することと、色、強度、及び／または、テクスチャをビデオフレーム１内の第３の仮想オブジェクトに適用することとを決定する。第２の仮想オブジェクトは、第１の仮想オブジェクトとは異なり、第３の仮想オブジェクトは、第１及び第２の仮想オブジェクトとは異なる。例を挙げて説明すると、第１の仮想オブジェクトは、ユーザ１のアバタであり、第２の仮想オブジェクトは、仮想のボールであり、第３の仮想オブジェクトは、アバタのペットの犬である。
【０１４６】
さらに、オーディオフレーム部分２、４は、ノード２Ｂの１つまたは複数のプロセッサ、例えば、ＣＰＵ２０２Ｂによって生成される。オーディオフレーム部分２は、オーディオデータがビデオフレーム部分２による音として発せられるという点でビデオフレーム部分２に関連付けられたオーディオデータを含む。さらに、オーディオフレーム部分４は、オーディオデータがビデオフレーム部分４による音として発せられるという点で、ビデオフレーム部分４に関連付けられたオーディオデータを含む。
【０１４７】
さらに、ビデオエンコーダ４０４Ａは、ビデオフレーム部分１、３を符号化して、符号化されたビデオフレーム部分を生成し、符号化されたビデオフレーム部分をネットワーク通信デバイス２０８Ａに送信する。さらに、オーディオエンコーダ４０２Ａは、オーディオフレーム部分１、３を符号化して、符号化されたオーディオフレームを生成し、符号化されたオーディオフレーム部分１、３をネットワーク通信デバイス２０８Ａに送信する。ネットワーク通信デバイス２０８Ａは、外部通信プロトコルを符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分に適用して、符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分を含む複数のパケットを生成する。パケットは、ノード１からコンピュータネットワーク１１２を介してクライアントデバイス１０４Ａ１に送信される。
【０１４８】
また、ビデオエンコーダ４０４Ｂは、ビデオフレーム部分２、４を符号化して、符号化されたビデオフレーム部分を生成し、符号化されたビデオフレーム部分をネットワーク通信デバイス２０８Ｂに送信する。さらに、オーディオエンコーダ４０２Ｂは、オーディオフレーム部分２、４を符号化して、符号化されたオーディオフレーム部分を生成し、符号化されたオーディオフレーム部分をネットワーク通信デバイス２０８Ｂに送信する。ネットワーク通信デバイス２０８Ｂは、外部通信プロトコルを符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分に適用して、符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分を含む複数のパケットを生成する。パケットは、ノード２Ｂからコンピュータネットワーク１１２を介してクライアントデバイス１０４Ａ１に送信される。
【０１４９】
クライアントデバイス１０４Ａ１の通信デバイス４２６は、ノード１からコンピュータネットワーク１１２を介してパケットを受信し、外部通信プロトコルをパケットに適用して、ノード１から送信された符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分を取得する。同様に、通信デバイス４２６は、ノード２Ｂからコンピュータネットワーク１１２を介してパケットを受信し、外部通信プロトコルをパケットに適用して、ノード２Ｂから送信された符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分を取得する。
【０１５０】
Ａ／Ｖソータ４１８は、ノード１から受信した符号化されたオーディオフレーム部分、ノード２Ｂから受信した符号化されたオーディオフレーム部分、ノード１から受信した符号化されたビデオフレーム部分、及び、ノード２Ｂから受信した符号化されたビデオフレーム部分を区別する。Ａ／Ｖソータ４１８は、ノード１から受信した符号化されたオーディオフレーム部分をオーディオデコーダ１に送信し、ノード２Ｂから受信した符号化されたオーディオフレーム部分をオーディオデコーダ２に送信し、ノード１から受信した符号化されたビデオフレーム部分をビデオデコーダ１に送信し、ノード２Ｂから受信した符号化されたビデオフレーム部分をビデオデコーダ２に送信する。オーディオデコーダ１は、ノード１から受信した符号化されたオーディオフレーム部分を復号し、ビデオデコーダ１は、ノード１から受信した符号化されたビデオフレーム部分を復号する。同様に、ビデオデコーダ２は、ノード２Ｂから受信した符号化されたビデオフレーム部分を復号し、オーディオデコーダ２は、ノード２Ｂから受信した符号化されたオーディオフレーム部分を復号する。ビデオフレーム部分１〜４は、ディスプレイデバイス４２４に表示され、オーディオフレーム部分１〜４は、オーディオ出力デバイス４３０による音として出力される。例えば、ビデオフレーム部分１は、オーディオ部分１からの音の出力と同時に表示され、ビデオフレーム部分２は、オーディオフレーム部分２からの音の出力と同時に表示され、ビデオフレーム部分３は、オーディオフレーム部分３からの音の出力と同時に表示され、ビデオフレーム部分４は、オーディオフレーム部分４からの音の出力と同時に表示される。
【０１５１】
一実施形態においては、ビデオフレーム部分１、３を生成する前に、ＣＰＵ２０２Ａ及びＧＰＵ２０６Ａは、ノード２Ｂからのビデオフレーム部分２、４の受信を待つ。例えば、ビデオフレーム部分１、３を生成する前に、ＣＰＵ２０２Ａは、内部通信デバイス２０６Ａ、通信リンク４１６、及び、内部通信デバイス２０６Ｂを介してＣＰＵ２０２Ｂにビデオフレーム部分２、４の要求とオーディオフレーム部分２、４の要求とを送信する。ビデオフレーム部分２、４を受信し、ビデオフレーム部分２、４をメモリデバイス２０４Ａに記憶すると、ＣＰＵ２０２Ｂは、ビデオフレーム部分４からビデオフレーム部分情報４を抽出し、ビデオフレーム部分２からビデオフレーム部分情報２を抽出し、ビデオフレーム部分情報４及び／またはビデオフレーム部分情報２を適用して、ビデオフレーム部分情報３を生成、及び／または、ビデオフレーム部分情報１を生成する。例えば、ビデオフレーム部分情報２は、仮想の木の幹の第２の部分が位置２にあることを示し、ビデオフレーム情報４は、仮想の木の幹の第４の部分が位置４にあることを示す。ＣＰＵ２０２Ａは、仮想の木の幹の位置２及び４から、仮想の木の幹の第３の部分が仮想の木の幹の位置２と位置４の間の位置３にあると判定する。ビデオフレーム部分情報３は、仮想の木の幹の第３の部分の位置３を含む。別の例として、ビデオフレーム部分情報２は、仮想の木の幹の第２の部分が位置２にあることを示し、物理エンジンコードＡは、ビデオフレーム１において仮想の木の幹が仮想の地面に接していることを示す。ＣＰＵ２０２Ａは、位置２及び物理エンジンコードＡから、仮想の木の幹の第３の部分が位置３にあり、位置３は仮想の木の幹の位置２の下にあることを判定する。ビデオフレーム部分情報１は、ＧＰＵ２０６Ａによってレンダリングされて、ビデオフレーム部分１を生成し、ビデオフレーム部分情報３は、ＧＰＵ２０６Ａによってレンダリングされて、ビデオフレーム部分３を生成する。
【０１５２】
同様に、この実施形態においては、ビデオフレーム部分２、４を生成する前に、ＣＰＵ２０２Ｂ及びＧＰＵ２０６Ｂは、ノード１からのビデオフレーム部分１、３の受信を待つ。例えば、ビデオフレーム部分２、４を生成する前に、ＣＰＵ２０２Ｂは、内部通信デバイス２０６Ｂ、通信リンク４１６、及び、内部通信デバイス２０６Ａを介してＣＰＵ２０２Ａにビデオフレーム部分１、３とオーディオフレーム部分１、３との要求を送信する。要求を受信すると、ＣＰＵ２０２Ａは、ビデオフレーム部分１、３とオーディオフレーム部分１、３とを内部通信デバイス２１０Ａに送信する。内部通信デバイス２１０Ａは、ビデオフレーム部分１、３とオーディオフレーム部分１、３とに内部通信プロトコルを適用して、パッケージ化された情報を生成し、パッケージ化された情報を、通信リンク４１６を介して内部通信デバイス２１０Ｂに送信する。内部通信デバイス２１０Ｂは、内部通信プロトコルを適用して、パッケージ化された情報から、ビデオフレーム部分１、３とオーディオフレーム部分１、３とを抽出する。ビデオフレーム部分１、３とオーディオフレーム部分１、３とは、メモリデバイス２０４Ｂに記憶される。
【０１５３】
ビデオフレーム部分１、３を受信し、ビデオフレーム部分１、３をメモリデバイス２０４Ｂに記憶すると、ＣＰＵ２０２Ｂは、ビデオフレーム部分１からビデオフレーム部分情報１を抽出し、ビデオフレーム部分３からビデオフレーム部分情報３を抽出し、ビデオフレーム部分情報１及び／またはビデオフレーム部分情報３を適用して、ビデオフレーム部分情報２を生成、及び／または、ビデオフレーム部分情報４を生成する。例えば、ビデオフレーム部分情報１は、仮想の木の幹の第１の部分が位置１にあることを示し、ビデオフレーム部分情報３は、仮想の木の幹の第３の部分が位置３にあることを示す。ＣＰＵ２０２Ｂは、仮想の木の幹の位置１及び３から、仮想の木の幹の第２の部分が、仮想の木の幹の第１の部分の位置１と仮想の木の幹の第３の部分の位置３との間の位置２にあることを判定する。ビデオフレーム部分情報２は、仮想の木の幹の第２の部分の位置２を含む。別の例として、ビデオフレーム部分情報３は、仮想の木の幹の第３の部分が位置３にあることを示し、物理エンジンコードＡは、ビデオフレーム１において、仮想の木の幹が仮想の地面に接していることを示す。ＣＰＵ２０２Ｂは、仮想の木の幹の第３の部分の位置３と物理エンジンコードＡとから、仮想の木の幹の第４の部分が位置４にあり、位置４は仮想の木の幹の第３の部分の位置３の下にあることを判定する。ビデオフレーム部分情報２は、ＧＰＵ２０６Ｂによってレンダリングされて、ビデオフレーム部分２を生成し、ビデオフレーム部分情報４は、ＧＰＵ２０６Ｂによってレンダリングされて、ビデオフレーム部分４を生成する。
【０１５４】
一実施形態においては、ビデオデコーダ１は、ビデオデコーダ２によって適用される、例えば、カスタマイズされたフォーマット等とは異なるビデオファイルフォーマットまたはストリーミングビデオフォーマット、例えば、Ｈ.２６４を適用して、符号化されたビデオフレーム部分を復号する。ある実施形態においては、オーディオデコーダ１は、オーディオデコーダ２によって適用されるのとは異なるオーディオファイルフォーマットまたはストリーミングオーディオフォーマットを適用して、符号化されたオーディオフレーム部分を復号する。
【０１５５】
ある実施形態においては、２つの異なるビデオデコーダ１、２を使用する代わりに、１つのビデオデコーダを使用して、ノード１、２Ｂから受信した符号化されたビデオフレーム部分を復号する。さらに、一実施形態においては、２つの異なるオーディオデコーダ１、２を使用する代わりに、１つのオーディオデコーダを使用して、ノード１、２Ｂから受信した符号化されたオーディオフレーム部分を復号する。
【０１５６】
一実施形態においては、ビデオフレーム部分１、３は、ビデオフレーム部分２、４からの情報を使用せずに生成され、オーディオフレーム部分１、３は、オーディオフレーム部分２、４からの情報を使用せずに生成される。この場合、ビデオフレーム部分２、４とオーディオフレーム部分２、４とをノード２Ｂからノード１に送信する必要はない。
【０１５７】
同様に、ある実施形態においては、ビデオフレーム部分２、４は、ビデオフレーム部分１、３からの情報を使用せずに生成され、オーディオフレーム部分２、４は、オーディオフレーム部分１、３からの情報を使用せずに生成される。この場合、ビデオフレーム部分１、３とオーディオフレーム部分１、３とをノード１からノード２Ｂに送信する必要はない。
【０１５８】
図６Ｂは、仮想シーンを表示するビデオフレーム１のビデオフレーム部分１〜４の配置を示す図である。ビデオフレーム１のビデオフレーム部分１は、ビデオフレーム１の１つまたは複数の上部の画素列からなる第１のセットを含む。さらに、ビデオフレーム１のビデオフレーム部分２は、ビデオフレーム１の１つまたは複数の画素列からなる第２のセットを含み、第２のセットは、第１のセットの隣で下にある。また、ビデオフレーム１のビデオフレーム部分３は、ビデオフレーム１の１つまたは複数の画素列からなる第３のセットを含み、第３のセットは、第２のセットの隣で下にある。ビデオフレーム１のビデオフレーム部分４は、ビデオフレーム１の１つまたは複数の画素列からなる第４のセットを含み、第４のセットは、第３のセットの隣で下にある。
【０１５９】
図６Ｃは、仮想シーンを表示するビデオフレーム１のビデオフレーム部分１〜４の別の配置を示す図である。ビデオフレーム１のビデオフレーム部分１は、ビデオフレーム１の左上のクワドラントの１つまたは複数の隣り合う画素のセットを含む。さらに、ビデオフレーム１のビデオフレーム部分２は、ビデオフレーム１の右上のクワドラントの１つまたは複数の隣り合う画素のセットを含む。また、ビデオフレーム１のビデオフレーム部分３は、ビデオフレーム１の左下のクワドラントの１つまたは複数の隣り合う画素のセットを含む。ビデオフレーム１のビデオフレーム部分４は、ビデオフレーム１の右下のクワドラントの１つまたは複数の隣り合う画素のセットを含む。
【０１６０】
ノード１が、例えば、ビデオフレーム１、２等、複数のビデオフレームで、左上のクワドラントまたは左下のクワドラント等の同じクワドラント（複数可）に位置するビデオフレーム部分を生成することに、注意されたい。同様に、ノード２は、複数のビデオフレームで、右上のクワドラントまたは右下のクワドラント等の同じクワドラント（複数可）に位置するビデオフレーム部分を生成する。
【０１６１】
ある実施形態においては、ノード１は、例えば、ビデオフレーム１、２等の複数のビデオフレームで、左上のクワドラント及び左下のクワドラント等の異なるクワドラント（複数可）に位置するビデオフレーム部分を生成する。同様に、ノード２は、複数のビデオフレームで、右上のクワドラント及び右下のクワドラント等の異なるクワドラント（複数可）に位置するビデオフレーム部分を生成する。
【０１６２】
図７は、ビデオフレーム生成のために、１つのノードから他のノードにユーザ入力をブロードキャストして、ユーザ入力の他のノードとの関連性を決定することを示すシステム７００の実施形態の図である。システム７００は、ノード１Ａ及びノード２Ｃを含む。ノード１Ａは、関連性決定部７０２Ａを含む以外は、図６Ａのノード１と同じである。さらに、ノード２Ｃは、関連性決定部７０２Ｂを含む以外は、図６Ａのノード２Ｂと同じである。
【０１６３】
関連性決定部の例は、ノード内のビデオフレームまたはビデオフレーム部分の生成のためにユーザ入力の関連性を決定する、例えば、プロセッサ、集積回路等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュール、または、これらの組み合わせを含む。一実施形態においては、ノードの関連性決定部は、ノードのＣＰＵ及びＧＰＵと一体化される。例えば、ノードの関連性決定部の一部分は、ノードのＣＰＵ内に組み込まれ、関連性決定部の残りの部分は、ノードのＧＰＵ内に組み込まれる。
【０１６４】
ユーザ１は、クライアントデバイス１０４Ａを介して複数のユーザ入力１、２を提供する。例えば、カメラまたはハンドヘルドコントローラを用いて、入力１、２をキャプチャする様々な方法は、上述した。入力１、２は、パケット化され、クライアントデバイス１０４Ａからコンピュータネットワーク１１２を介してノード１Ａのネットワーク通信デバイス２０８Ａに送信される。ネットワーク通信デバイス２０８Ａは、入力１、２を非パケット化し、入力１、２を内部通信デバイス２１０Ａに提供する。
【０１６５】
内部通信デバイス２１０Ａは、ＣＰＵ２０２Ａの制御の下、内部通信プロトコルを適用して、ユーザ入力１、２のビデオデータ及びオーディオデータを、通信リンク４１６を介してノード２Ｃの内部通信デバイス２１０Ｂにブロードキャストする。内部通信デバイス２１０Ｂは、内部通信プロトコルを適用して、内部通信デバイス２１０Ａから受信したパッケージ化された情報からユーザ入力１、２を抽出し、ユーザ入力１、２を関連性決定部７０２Ｂに提供する。
【０１６６】
関連性決定部７０２Ｂは、ユーザ入力１、２のどちらがビデオフレーム２、４の生成に関連するかを決定する。例えば、関連性決定部７０２Ｂは、ユーザ入力１が、仮想シーンの位置、向き、大きさ、形、強度、色、テクスチャ、陰影、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム２またはビデオフレーム４に表示される。この例においては、ユーザ入力１が、ビデオフレーム２またはビデオフレーム４に関連する。例を挙げて説明すると、関連性決定部７０２Ｂは、ユーザ入力１がビデオフレーム２内の仮想のボールの位置２、または、フレーム４内の仮想のボールの位置４の達成を促進すると、決定する。別の例として、関連性決定部７０２Ｂは、ユーザ入力１、２の両方が、仮想シーンの位置、向き、大きさ、形、強度、色、テクスチャ、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム２またはビデオフレーム４に表示される。この例においては、ユーザ入力１、２が、ビデオフレーム２またはビデオフレーム４に関連する。例を挙げて説明すると、関連性決定部７０２Ｂは、ユーザ入力１、２がビデオフレーム２内の仮想のボールの位置２、または、フレーム４内の仮想のボールの位置４の達成を促進すると、決定する。
【０１６７】
関連性決定部７０２Ｂは、ビデオフレーム２及び／または４に関連すると決定されたユーザ入力１、２の一方または両方をＣＰＵ２０２Ｂ及びＧＰＵ２０６Ｂに提供する。関連性決定部７０２Ｂは、ビデオフレーム２、４に関連しないと決定されたユーザ入力１、２の一方または両方を無視する。例えば、関連性決定部７０２Ｂは、関連しないユーザ入力を、ビデオフレーム２及び／または４の生成に適用しない。
【０１６８】
ＣＰＵ２０２Ｂは、関連すると決定されたユーザ入力１及び／または２をビデオフレーム情報２及び／または４の生成に適用する。同様に、ＧＰＵ２０６Ｂは、関連すると決定されたユーザ入力１及び／または２を適用して、ビデオフレーム２及び／または４を生成する。
【０１６９】
一実施形態においては、ビデオフレーム１、ビデオフレーム２、ビデオフレーム３、ビデオフレーム４、オーディオフレーム１、オーディオフレーム２、オーディオフレーム３、オーディオフレーム４、ビデオフレーム部分１、ビデオフレーム部分２、ビデオフレーム部分３、ビデオフレーム部分４、オーディオフレーム部分１、オーディオフレーム部分２、オーディオフレーム部分３、オーディオフレーム部分４、または、これらの組み合わせは、本明細書では、状態情報と呼ばれる。
【０１７０】
一実施形態においては、ユーザ入力１、２が、図６Ａに示すように、クライアントデバイス１０４Ａ１のビデオデコーダ１またはビデオデコーダ２によって符号化される時、ノード１のビデオエンコーダ４０４Ａは、図６Ａに示すように、ユーザ入力１、２のビデオデータを復号する。ユーザ入力１、２のビデオデータは、ユーザ入力１、２を他のノードにブロードキャストする前に、ビデオエンコーダ４０４Ａによって復号される。ある実施形態においては、ノード１のオーディオエンコーダ４０２Ａは、ユーザ入力１、２が、クライアントデバイス１０４Ａ１のオーディオデコーダ１またはオーディオデコーダ２によって符号化される時、図６Ａに示すように、ユーザ入力１、２のオーディオデータを復号する。ユーザ入力１、２のオーディオデータは、ユーザ入力１、２を他のノードにブロードキャストする前に、オーディオエンコーダ４０２Ａによって復号される。
【０１７１】
ある実施形態においては、関連性決定部７０２Ａは、ユーザ入力１、２の一方または両方がビデオフレーム１、３の生成に関連するかどうかを決定する。例えば、関連性決定部７０２Ａは、ユーザ入力１が、仮想シーンの位置、向き、大きさ、形、強度、色、テクスチャ、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム１またはビデオフレーム３に表示される。この例においては、ユーザ入力１は関連性がある。ユーザ入力１は関連性があると決定すると、ＣＰＵ２０２Ａは、ユーザ入力１を適用して、ビデオフレーム情報１及び／または３を生成する、及び／または、ＧＰＵ２０６Ａは、ユーザ入力１を適用して、ビデオフレーム１及び／または３を生成する。ユーザ入力１、２がビデオフレーム１、３の生成に関連すると決定すると、ノード１Ａは、ユーザ入力１、２をノード２Ｃにブロードキャストしない。他方、ユーザ入力１、２の一方または両方がビデオフレーム１、３の生成に関連しないと決定すると、ノード１Ａは、ユーザ入力１及び／または２をノード２Ｃにブロードキャストする。
【０１７２】
この実施形態において、ユーザ入力１が、図６Ａに示すように、クライアントデバイス１０４Ａ１のビデオデコーダ１またはビデオデコーダ２によって符号化される時、ノード１のビデオエンコーダ４０４Ａは、図６Ａに示すように、ユーザ入力１のビデオデータを復号する。ユーザ入力２がクライアントデバイス１０４Ａ１のビデオデコーダ１またはビデオデコーダ２によって符号化される時、ノード１Ａからノード２Ｃに送信されるユーザ入力２のビデオデータは、ビデオエンコーダ４０４Ｂによって復号される。また、ユーザ入力１が、クライアントデバイス１０４Ａ１のオーディオデコーダ１またはオーディオデコーダ２によって符号化される時、ノード１のオーディオエンコーダ４０２Ａは、図６Ａに示すように、ユーザ入力１のオーディオデータを復号する。ユーザ入力２が、クライアントデバイス１０４Ａ１のオーディオデコーダ１またはオーディオデコーダ２によって符号化される時、ノード１Ａからノード２Ｃに送信されるユーザ入力２のオーディオデータは、オーディオエンコーダ４０２Ｂによって復号される。
【０１７３】
ある実施形態においては、クライアントデバイス１０４Ａの代わりに、図４Ａに示すクライアントデバイス１０４Ａ、または、図６Ａに示すクライアントデバイス１０４Ａ１が使用される。
【０１７４】
図８は、ビデオフレーム部分の生成のために、１つのノードから他のノードにユーザ入力をブロードキャストして、ユーザ入力の他のノードとの関連性を決定することを示すシステム７００の実施形態の図である。関連性決定部７０２Ｂは、ユーザ入力１、２のどちらがビデオフレーム部分２、４の生成に関連するかを決定する。例えば、関連性決定部７０２Ｂは、ユーザ入力１が、ビデオフレーム１の仮想シーンの一部分の位置、向き、大きさ、形、強度、色、テクスチャ、陰影、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム部分２またはビデオフレーム部分４に表示される。ユーザ入力１は、ビデオフレーム部分２またはビデオフレーム部分４に関連する。例を挙げて説明すると、関連性決定部７０２Ｂは、ユーザ入力１が、ビデオフレーム１内の仮想の木の幹の第２の部分の位置２、または、ビデオフレーム１内の仮想の木の幹の第４の部分の位置４の表示を促進することを決定する。別の例として、関連性決定部７０２Ｂは、ユーザ入力１、２の両方が、仮想シーンの一部分の位置、向き、大きさ、形、強度、色、テクスチャ、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム部分２またはビデオフレーム部分４に表示される。ユーザ入力１、２は、ビデオフレーム部分２またはビデオフレーム部分４に関連する。例を挙げて説明すると、関連性決定部７０２Ｂは、ユーザ入力１、２が、ビデオフレーム部分２内の仮想の木の幹の第２の部分の位置２、または、フレーム部分４内の仮想の木の幹の第４の部分の位置４の達成を促進すると決定する。
【０１７５】
関連性決定部７０２Ｂは、ビデオフレーム部分２及び／または４に関連すると決定されたユーザ入力１、２の一方または両方をＣＰＵ２０２Ｂ及びＧＰＵ２０６Ｂに提供する。ＣＰＵ２０２Ｂは、関連すると決定されたユーザ入力１及び／または２を適用して、ビデオフレーム部分情報２及び／または４を生成する。同様に、ＧＰＵ２０６Ｂは、関連すると決定されたユーザ入力１及び／または２を適用して、ビデオフレーム部分２及び／または４を生成する。
【０１７６】
ある実施形態においては、関連性決定部７０２Ａは、ユーザ入力１、２の一方または両方がビデオフレーム部分１、３の生成に関連するかどうかを決定する。例えば、関連性決定部７０２Ａは、ユーザ入力１が、仮想オブジェクトの位置、向き、大きさ、形、強度、色、テクスチャ、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム１の一部分に表示される。ユーザ入力１は関連性がある。ユーザ入力１は関連性があると決定すると、ＣＰＵ２０２Ａは、ユーザ入力１を適用して、ビデオフレーム部分情報１及び／または３を生成する、及び／または、ＧＰＵ２０６Ａは、ユーザ入力１を適用して、ビデオフレーム部分１及び／または３を生成する。ユーザ入力１、２がビデオフレーム部分１、３の生成に関連すると決定すると、ノード１Ａは、ユーザ入力１、２をノード２Ｃにブロードキャストしない。他方、ユーザ入力１、２の一方または両方がビデオフレーム部分１、３の生成に関連しないと決定すると、ノード１Ａは、ユーザ入力１及び／または２をノード２Ｃにブロードキャストする。
【０１７７】
図９は、図１の分散型ゲームエンジン１０２の実行に選択されるノードの数の変更を示すシステム９００の実施形態の図である。システム９００は、複数のノードＡ、Ｂ、Ｃ、Ｄを含む。ノードＢ、Ｄは、それぞれ、特殊である。例えば、ノードＢは、ノードＡ、Ｃより処理能力量が多い、例えば、より多数のＣＰＵ及びＧＰＵを含む。別の例として、ノードＢは、ノードＡ、Ｃよりメモリ量が多い、例えば、より多数のメモリデバイスを含む。さらに別の例として、ノードＢは、ノードＡまたはノードＣより処理能力量が多く、且つ、メモリ量が多いという点以外は、ノードＡまたはノードＣと同じである。別の例として、ノードＤが、処理能力量が多く、且つ、メモリ量が多いという点以外は、ノードＤは、ノードＡまたはノードＣと同じである。ノードＡの例は、ノード１及びノード１Ａを含む。ノードＢの例は、ノード２、ノード２Ａ、ノード２Ｂ、及び、ノード２Ｃを含む。
【０１７８】
ノードアセンブリサーバ１０８の図３Ｃに示すプロセッサ３５０は、ノードＡ、Ｃの１つまたは複数が正常に機能していないかどうか、または、機能していないかどうかを判定する。例えば、プロセッサ３５０は、ノードアセンブリサーバ１０８の通信デバイス３５４とコンピュータネットワーク１１２とを介してノード１のネットワーク通信デバイス２０８Ａにメッセージに応答するようにメッセージを送信する。ネットワーク通信デバイス２０８Ａが所定の時間内にメッセージに応答しないと判定すると、プロセッサ３５０は、ノード１は正常に機能していない、または、機能していないと判定する。ノードＡ及び／またはＣが正常に機能していないと判定すると、プロセッサ３５０は、スイッチシステム１０６を介して特殊ノードＢを選択して、ノードＡ及び／またはＣによって行われる機能を行わせる。例えば、ノードＡが機能していない時、または、正常に機能していない時、プロセッサ３５０は、内部通信プロトコルに関する情報を特殊ノードＢに送信して、特殊ノードＢが、機能しているノードＣと通信するのを可能にする。
【０１７９】
一実施形態においては、ユーザ１が、ゲーム１より低いグラフィックスレベルを有するゲーム２を選択する時、または、デバイスハンドオーバの場合、プロセッサ３５０は、ゲーム２の分散型ゲームエンジンを実行するために、ゲーム１の分散型ゲームエンジン１０２を実行するノードの数をより少ない数にリアルタイムで減らす。例えば、プロセッサ３５０は、内部通信プロトコルを介して互いに内部で通信するための、また、ゲーム２の分散型ゲームエンジンを実行するためのノードの数をより少なく、スイッチシステム１０６を介して選択する。同様に、ユーザ１が、ゲーム２より高いグラフィックスレベルを有するゲーム１を選択する時、プロセッサ３５０は、ゲーム１の分散型ゲームエンジンを実行するために、ゲーム２の分散型ゲームエンジン１０２の実行に使用されるノードの数をより多くの数にリアルタイムで増加させる。例えば、プロセッサ３５０は、内部通信プロトコルを介して互いに内部で通信するための、また、ゲーム１の分散型ゲームエンジンを実行するためのノードの数をより多くスイッチシステム１０６を介して選択する。別の例として、ユーザは、自分のＰｌａｙＳｔａｔｉｏｎ（商標）ゲームコンソールでゲームをプレイしている。ユーザは、自分の家から出る時、ゲームを自分のスマートフォンまたはタブレットに転送したい。スマートフォンまたはタブレットは、低い解像度と低いフレームレートでゲームを表示するが、ＰｌａｙＳｔａｔｉｏｎ（商標）ゲームコンソールは、４Ｋまたは８Ｋのテレビと組み合わせて、より高い解像度とより高いフレームレートを適用する。より低い解像度とより低いフレームレートにするために、ノードの数を減少させる。
【０１８０】
ある実施形態においては、異なるユーザアカウントを介して、ゲーム１のプレイを促進するクライアントデバイスの数が減少すると、プロセッサ３５０は、ゲーム１の分散型ゲームエンジン１０２を実行するために、ゲーム１の分散型ゲームエンジン１０２を実行するノードの数を、より少ない数にリアルタイムで減らす。他方、異なるユーザアカウントを介してゲーム１のプレイを促進するクライアントデバイスの数が増加する時、プロセッサ３５０は、ゲーム１の分散型ゲームエンジン１０２を実行するために、ゲーム１の分散型ゲームエンジン１０２の実行に使用されるノードの数をより多い数にリアルタイムで増加させる。
【０１８１】
図１０は、開示の実施態様による、クラウドビデオゲームをクライアントデバイスにストリーミングするために行われる様々な動作を概念的に示すフロー図である。ゲームサーバ１００２は、ビデオゲームを実行し、未加工の（圧縮されていない）ビデオ１００４及びオーディオ１００６を生成する。説明図の参照番号１００８で示されるように、ビデオ１００４及びオーディオ１００６は、ストリーミングの目的でキャプチャされ、符号化される。符号化は、ビデオストリーム及びオーディオストリームを圧縮して、帯域幅の使用量を低減し、ゲーム体験を最適化する。符号化形式の例は、Ｈ．２６５／ＭＰＥＧ−Ｈ、Ｈ．２６４／ＭＰＥＧ−４、Ｈ．２６３／ＭＰＥＧ−４、Ｈ．２６２／ＭＰＥＧ−２、ＷＭＶ、ＶＰ６／７／８／９等を含む。
【０１８２】
符号化されたオーディオ１０１０と符号化されたビデオ１０１２とは、インターネット等のコンピュータネットワークを介した送信のために、参照番号１０１４で示すように、ネットワークパケットにさらにパケット化される。一部の実施形態においては、ネットワークパケット符号化プロセスは、データ暗号化プロセスも採用し、それによって、データのセキュリティを強化する。例示の実施態様においては、オーディオパケット１０１６及びビデオパケット１０１８が、コンピュータネットワーク１０２０を介してトランスポートするために生成される。
【０１８３】
ゲームサーバ１００２は、触覚フィードバックデータ１０２２をさらに生成し、触覚フィードバックデータ１０２２も、ネットワーク送信のために、ネットワークパケットにパケット化される。例示の実施態様においては、触覚フィードバックパケット１０２４が、コンピュータネットワーク１０２０を介してトランスポートするために生成される。
【０１８４】
未加工のビデオ及びオーディオと触覚フィードバックデータとを生成する上記動作は、データセンタのゲームサーバ１００２で行われ、ビデオ及びオーディオの符号化と、トランスポートのための符号化されたオーディオ／ビデオ及び触覚フィードバックデータのパケット化の動作は、データセンタのストリーミングエンジンによって行われる。参照番号１０２０で示すように、オーディオ、ビデオ、及び、触覚フィードバックパケットは、コンピュータネットワークを介してトランスポートされる。参照番号１０２６で示すように、オーディオパケット１０１６、ビデオパケット１０１８、及び、触覚フィードバックパケット１０２４は、クライアントデバイスによって、分解、例えば、パース等されて、クライアントデバイスでネットワークパケットから符号化されたオーディオ１０２８、符号化されたビデオ１０３０、及び、触覚フィードバックデータ１０３２を抽出する。データが暗号化されている場合、データは解読もされる。符号化されたオーディオ１０２８及び符号化されたビデオ１０３０は、次に、参照番号１０３４で示すように、クライアントデバイスによって復号されて、クライアントデバイスのディスプレイデバイス１０４０上でレンダリングするためにクライアント側の未加工のオーディオ及びビデオデータを生成する。触覚フィードバックデータ１０３２は、クライアントデバイスのプロセッサによって処理されて、触覚効果をレンダリングできるコントローラデバイス１０４２、または、例えば、ＨＭＤ等の他のインタフェースデバイスで、触覚フィードバック効果を生み出す。触覚効果の一例は、コントローラデバイス１０４２の振動またはランブル音である。
【０１８５】
ビデオゲームは、ユーザ入力に応答し、従って、ユーザ入力の送信及び処理に関する上記の手続きフローと類似しているが、クライアントデバイスからサーバへと反対方向である手続きフローが行われることを理解されよう。図に示すように、コントローラデバイス１０４２、または、例えば、ユーザ１の身体の一部等の入力装置、または、これらの組み合わせが、入力データ１０４４を生成する。この入力データ１０４４は、コンピュータネットワークを介してデータセンタにトランスポートするために、クライアントデバイスでパケット化される。入力データパケット１０４６は、ゲームサーバ１００２によって解凍され、再アセンブルされて、データセンタ側の入力データ１０４８を規定する。入力データ１０４８は、ゲームサーバ１００２に供給され、ゲームサーバ１００２は、入力データ１０４８を処理して、ゲームのゲーム状態の保存データを更新する。
【０１８６】
オーディオパケット１０１６、ビデオパケット１０１８、及び、触覚フィードバックパケット１０２４のコンピュータネットワーク１０２０を介したトランスポート中、一部の実施形態においては、コンピュータネットワーク１０２０を介したデータの送信は、サービス品質を保証するために監視される。参照番号１０５０に示すように、例えば、上流及び下流のネットワーク帯域幅を含む、コンピュータネットワーク１０２０のネットワーク状態が、監視され、ゲームストリーミングは、利用可能な帯域幅の変化に応じて調節される。すなわち、ネットワークパケットの符号化及び復号は、参照番号１０５２に示すように、現在のネットワーク状態に基づいて制御される。
【０１８７】
図１１は、クライアントデバイスのディスプレイデバイスとのインタフェースに対応した、また、コンピュータネットワーク１０２０を介してゲームホストシステムと通信できるゲームコンソール１１００の実施形態のブロック図である。ゲームコンソール１１００は、データセンタＡ内にある、または、ユーザ１がいる場所にある。一部の実施形態においては、ゲームコンソール１１００を使用して、ＨＭＤに表示されるゲームを実行する。ゲームコンソール１１００は、ゲームコンソール１１００に接続可能な様々な周辺装置を備える。ゲームコンソール１１００は、セルプロセッサ１１２８、ダイナミックランダムアクセスメモリ（ＸＤＲＡＭ）ユニット１１２６、専用のビデオランダムアクセスメモリ（ＶＲＡＭ）ユニット１１３２を有するＲｅａｌｉｔｙ  Ｓｙｎｔｈｅｓｉｚｅｒグラフィックスプロセッサユニット１１３０、及び、入力／出力（Ｉ／Ｏ）ブリッジ１１３４を有する。ゲームコンソール１１００は、Ｉ／Ｏブリッジ１１３４を通してアクセス可能な、ディスク１１４０ａからの読み出しのためのＢｌｕ  Ｒａｙ（登録商標）ディスクリードオンリメモリ（ＢＤ−ＲＯＭ）光学ディスクリーダ１１４０と、取り外し可能なスロットインハードディスクドライブ（ＨＤＤ）１１３６も有する。任意選択で、ゲームコンソール１１００は、コンパクトフラッシュ（登録商標）メモリカード、メモリＳｔｉｃｋ（登録商標）メモリカード等を読み出すためのメモリカードリーダ１１３８も含み、メモリカードリーダ１１３８も同様にＩ／Ｏブリッジ１１３４を通してアクセス可能である。Ｉ／Ｏブリッジ１１３４は、ユニバーサルシリアルバス（ＵＳＢ）２．０ポート１１２４、ギガビットイーサネット（登録商標）ポート１１２２、ＩＥＥＥ８０２．１１ｂ／ｇワイヤレスネットワーク（Ｗｉ−Ｆｉ）ポート１１２０、及び、ブルートゥース（登録商標）接続をサポートできるＢｌｕｅｔｏｏｔｈ（登録商標）ワイヤレスリンクポート１１１８にも接続する。
【０１８８】
動作中、Ｉ／Ｏブリッジ１１３４は、ゲームコントローラ８４２及び／または１１０３からのデータ、及び、ＨＭＤ１１０５からのデータを含む、全てのワイヤレスのＵＳＢ及びイーサネット（登録商標）データを扱う。例えば、ユーザＡがゲームコードの一部分の実行によって生成されたゲームをプレイしている時、Ｉ／Ｏブリッジ１１３４は、ゲームコントローラ８４２及び／または１１０３から、及び／または、ＨＭＤ１１０５から、ブルートゥース（登録商標）リンクを介して入力データを受信し、その入力データをセルプロセッサ１１２８に向け、セルプロセッサ１１２８は、それに従ってゲームの現在の状態を更新する。例として、ＨＭＤ１１０５内のカメラは、ユーザ１のジェスチャを撮影して、ジェスチャを表す画像を生成する。画像は、入力データの例である。ゲームコントローラ８４２、１１０３はそれぞれ、ハンドヘルドコントローラ（ＨＨＣ）の例である。
【０１８９】
ワイヤレスのＵＳＢ及びイーサネット（登録商標）ポートは、ゲームコントローラ８４２及び１１０３とＨＭＤ１１０５に加えて、例えば、リモートコントロール１１０４、キーボード１１０６、マウス１１０８、例えば、Ｓｏｎｙ  Ｐｌａｙｓｔａｔｉｏｎ  Ｐｏｒｔａｂｌｅ（登録商標）エンターテイメントデバイス等のポータブルエンターテイメントデバイス１１１０、例えば、ＥｙｅＴｏｙ（登録商標）ビデオカメラ１１１２等のビデオカメラ、マイクロフォンヘッドセット１１１４、及び、マイクロフォン１１１５など、他の周辺装置への接続性も提供する。一部の実施形態においては、このような周辺装置は、ゲームコンソール１１００にワイヤレスで接続される。例えば、ポータブルエンターテイメントデバイス１１１０は、Ｗｉ−Ｆｉアドホック接続を介して通信し、マイクロフォンヘッドセット１１１４は、ブルートゥース（登録商標）リンクを介して通信する。
【０１９０】
これらのインタフェースの提供は、ゲームコンソール１１００が、デジタルビデオレコーダ（ＤＶＲ）、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤ、ボイスオーバインターネットプロトコル（ＩＰ）電話、携帯電話、プリンタ、及び、スキャナ等の他の周辺装置にも対応する可能性があることを意味する。
【０１９１】
さらに、レガシーメモリカードリーダ１１１６は、ＵＳＢポート１１２４を介してゲームコンソール１１００に接続され、ゲームコンソール１１００によって使用される種類のメモリカード１１４８の読み出しを可能にする。ゲームコントローラ８４２、１１０３とＨＭＤ１１０５は、ブルートゥース（登録商標）リンク１１１８を介してゲームコンソール１１００とワイヤレスで通信するように、または、ＵＳＢポート１１２４に接続されるように動作可能で、それによって、ゲームコントローラ８４２、１１０３とＨＭＤ１１０５との電池を充電する電力も受け取る。一部の実施形態においては、ゲームコントローラ８４２、１１０３のそれぞれとＨＭＤ１１０５は、メモリ、プロセッサ、メモリカードリーダ、例えば、フラッシュメモリ等の永続的メモリ、例えば、照射された球形部分、発光ダイオード（ＬＥＤ）または赤外光等の発光体、超音波通信のためのマイクロフォン及びスピーカ、音響室、デジタルカメラ、内部クロック、例えば、ゲームコンソール１１００に面する球形部分等の認識できる形状、並びに、例えば、ブルートゥース（登録商標）、Ｗｉ−Ｆｉ等、プロトコルを用いたワイヤレスデバイスを含む。
【０１９２】
ゲームコントローラ８４２は、ユーザ１の両手を用いて使用されるように設計されたコントローラであり、ゲームコントローラ１１０３は、アタッチメントが付いた片手コントローラである。ＨＭＤ１１０５は、ユーザ１の頭頂部及び／または両目の前に適合するように設計される。１つまたは複数のアナログジョイスティック及び従来の制御ボタンに加えて、ゲームコントローラ８４２、１１０３は、それぞれ、三次元位置決定に感受性がある。同様に、ＨＭＤ１１０５は、三次元位置決定に感受性がある。結果として、一部の実施形態においては、ゲームコントローラ８４２、１１０３の、また、ＨＭＤ１１０５のユーザ１によるジェスチャ及び動きが、従来のボタンまたはジョイスティックのコマンドに追加して、または、その代わりに、ゲームへの入力として変換される。任意選択で、例えば、Ｐｌａｙｓｔａｔｉｏｎ（商標）ポータブルデバイス等の他のワイヤレス対応の周辺装置は、コントローラとして使用される。Ｐｌａｙｓｔａｔｉｏｎ（商標）ポータブルデバイスの場合、追加のゲームまたは制御情報、例えば、制御命令またはライフの数等が、デバイスのディスプレイ画面に提供される。一部の実施形態においては、例えば、ダンスマット（図示せず）、ライトガン（図示せず）、ハンドル及びペダル（図示せず）、特注コントローラ等の他の代替または補助制御装置が使用される。特注コントローラの例は、迅速な応答のクイズゲーム（これも図示せず）用の１つまたは幾つかの大きいボタンを含む。
【０１９３】
リモートコントロール１１０４は、また、ブルートゥース（登録商標）リンク１１１８を介してゲームコンソール１１００とワイヤレスに通信するように動作可能である。リモートコントロール１１０４は、Ｂｌｕ  Ｒａｙ（商標）ディスクＢＤ−ＲＯＭリーダ１１４０の動作に適した、また、ディスクコンテンツのナビゲーションに適したコントロールを含む。
【０１９４】
Ｂｌｕ  Ｒａｙ（商標）ディスクＢＤ−ＲＯＭリーダ１１４０は、従来の記録済み及び記録可能なＣＤと、いわゆるスーパーオーディオＣＤとに加えて、ゲームコンソール１１００に対応しているＣＤ−ＲＯＭを読み出すように動作可能である。Ｂｌｕ  Ｒａｙ（商標）ディスクＢＤ−ＲＯＭリーダ１１４０も、従来の記録済み及び記録可能なＤＶＤに加えて、ゲームコンソール１１００対応のデジタルビデオディスクＲＯＭ（ＤＶＤ−ＲＯＭ）を読み出すように動作可能である。Ｂｌｕ  Ｒａｙ（商標）ディスクＢＤ−ＲＯＭリーダ１１４０は、さらに、ゲームコンソール１１００対応のＢＤ−ＲＯＭと、従来の記録済み及び記録可能なＢｌｕ  Ｒａｙディスクとを読み出すように動作可能である。
【０１９５】
ゲームコンソール１１００は、リアリティシンセサイザグラフィックスユニット１１３０を介して生成または復号されたオーディオ及びビデオをオーディオコネクタ１１５０及びビデオコネクタ１１５２を通して、例えば、ディスプレイ画面１１４４と１つまたは複数のラウドスピーカ１１４６を有するモニタまたはテレビセット等の、ディスプレイ及び音声出力装置１１４２に供給するように、または、オーディオ及びビデオをＢｌｕｅｔｏｏｔｈ（登録商標）ワイヤレスリンクポート１１１８を介してＨＭＤ１１０５のディスプレイデバイスに供給するように動作可能である。オーディオコネクタ１１５０は、様々な実施形態において、従来のアナログ及びデジタル出力を含み、ビデオコネクタ１１５２は、コンポーネントビデオ、Ｓ−ビデオ、コンポジットビデオ、及び、１つまたは複数の高精細マルチメディアインタフェース（ＨＤＭＩ（登録商標））出力を様々に含む。結果として、ビデオ出力は、ＰＡＬ（ｐｈａｓｅ  ａｌｔｅｒｎａｔｉｎｇ  ｌｉｎｅ）またはＮＴＳＣ（Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｃｏｍｍｉｔｔｅｅ）等の形式で、または、２２２０ｐ、１０８０ｉ、もしくは、１０８０ｐの高精細であってよい。例えば、生成、復号等のオーディオ処理は、セルプロセッサ１１０８によって行われる。ゲームコンソール１１００のオペレーティングシステムは、Ｄｏｌｂｙ（登録商標）５．１サラウンドサウンド、Ｄｏｌｂｙ（登録商標）シアターサラウンド（ＤＴＳ）、及び、Ｂｌｕ  Ｒａｙ（登録商標）ディスクからの７．１サラウンドサウンドの復号をサポートする。
【０１９６】
一部の実施形態においては、例えば、ビデオカメラ１１１２等のビデオカメラは、１つの電荷結合素子（ＣＣＤ）、ＬＥＤインジケータ、並びに、ハードウェアベースのリアルタイムデータ圧縮及び符号化装置を備えることによって、圧縮されたビデオデータは、ゲームコンソール１１００による復号のために、イントラ画像ベースのＭＰＥＧ（ｍｏｔｉｏｎ  ｐｉｃｔｕｒｅ  ｅｘｐｅｒｔ  ｇｒｏｕｐ）規格等の適切な形式で送信される。ビデオカメラ１１１２のＬＥＤインジケータは、ゲームコンソール１１００からの適切な制御データに応答して、例えば、有害なライティング状態等を知らせるために光るように配置される。ビデオカメラ１１１２の一部の実施形態は、様々に、ＵＳＢ、ブルートゥース（登録商標）、または、Ｗｉ−Ｆｉ通信ポートを介してゲームコンソール１１００に接続する。ビデオカメラの様々な実施形態は、１つまたは複数の関連付けられたマイクロフォンを含み、オーディオデータの送信もできる。ビデオカメラの幾つかの実施形態においては、ＣＣＤは、高精細ビデオ撮影に適した解像度を有する。使用中、ビデオカメラによって撮影された画像は、ゲーム内に組み込まれる、または、ゲーム制御入力として解釈される。他の実施形態においては、ビデオカメラは、赤外光の検出に適した赤外線カメラである。
【０１９７】
様々な実施形態において、ゲームコンソール１１００の通信ポートの１つを介した、例えば、ビデオカメラまたはリモートコントロール等の周辺装置と生じるデータ通信を成功させるために、デバイスドライバ等の適切なソフトウェアが備えられる。
【０１９８】
一部の実施形態においては、ゲームコンソール１１００、ＨＨＣ、及び、ＨＭＤ１１０５を含む上記システムデバイスは、ＨＭＤ１１０５が、ゲームの対話型セッションのビデオを表示及びキャプチャするのを可能にする。システムデバイスは、ユーザ１とゲームの間の対話性を規定するゲームの対話型セッションを開始する。システムデバイスは、さらに、ユーザ１によって操作されるＨＨＣ及び／またはＨＭＤ１１０５の開始位置と向きを判定する。ゲームコンソール１１００は、ユーザ１とゲームとの対話性に基づいて、ゲームの現在の状態を判定する。システムデバイスは、ユーザ１のゲームとの対話型セッション中、ＨＨＣ及び／またはＨＭＤ１１０５の位置及び向きを追跡する。システムデバイスは、ゲームの現在の状態と、ＨＨＣ及び／またはＨＭＤ１１０５の追跡された位置及び向きとに基づいて、対話型セッションの観客ビデオストリームを生成する。一部の実施形態においては、ＨＨＣは、観客ビデオストリームをＨＨＣのディスプレイ画面にレンダリングする。様々な実施形態において、ＨＭＤ１１０５は、観客ビデオストリームをＨＭＤ１１０５のディスプレイ画面にレンダリングする。
【０１９９】
図１２を参照すると、ＨＭＤ１２０２のコンポーネントの図が示されている。ＨＭＤ１２０２は、ＨＭＤ１１０５（図１１）の例である。ＨＭＤ１２０２は、プログラム命令を実行するためのプロセッサ１２００を含む。メモリデバイス１２０２が、記憶のために備えられる。メモリデバイス１２０２の例は、揮発性メモリ、不揮発性メモリ、または、これらの組み合わせを含む。例えば、保存データから生成された画像フレームの表示等、ユーザ１（図１）が見る視覚インタフェースを提供するディスプレイデバイス１２０４が含まれる。電池１２０６は、ＨＭＤ１２０２の電源として備えられる。動作検出モジュール１２０８は、磁力計１２１０、加速度計１２１２、及び、ジャイロスコープ１２１４等、様々な種類の動作検知ハードウェアのいずれかを含む。
【０２００】
加速度計は、加速度及び重力により誘発される反力を測定する装置である。単軸及び多軸のモデルが、異なる方向の加速度の大きさ及び方向を検出するために利用できる。加速度計は、傾斜、振動、及び衝撃を感知するために使用される。一実施形態においては、３つの加速度計１２１２を使用して重力の方向を提供し、重力の方向は、例えば、世界空間ピッチ及び世界空間ロール等、２つの角度の絶対基準を与える。
【０２０１】
磁力計は、ＨＭＤ１２０２の近傍の磁場の強さと方向とを測定する。一部の実施形態においては、３つの磁力計１２１０が、ＨＭＤ１２０２内で使用されて、世界空間ヨー角度の絶対基準を保証する。様々な実施形態において、磁力計は、±８０マイクロテスラである地球磁場にわたるように設計される。磁力計は、金属の影響を受け、実際のヨーと単調であるヨー測定値を提供する。一部の実施形態においては、磁場は、実世界環境の金属のために歪められ、このことがヨー測定に歪みを生じさせる。様々な実施形態において、この歪みは、ジャイロスコープ１２１４、カメラ１２１６等の他のセンサからの情報を使用して、較正される。一実施形態においては、加速度計１２１２は、磁力計１２１０と共に使用されて、ＨＭＤ１２０２の傾斜とアジマスとを取得する。
【０２０２】
ジャイロスコープは、角運動量の原理に基づいて向きを測定または維持する装置である。一実施形態においては、ジャイロスコープ１２１４の代わりに、３つのジャイロスコープが慣性感知に基づいて各軸（ｘ、ｙ、ｚ）に対する移動に関する情報を提供する。ジャイロスコープは高速回転を検出するのに役立つ。しかしながら、一部の実施形態においては、ジャイロスコープは、絶対基準が存在しなければ、経時的にドリフトする。これは、周期的なジャイロスコープのリセットをトリガし、リセットは、物体の視覚的追跡、加速度計、磁力計等に基づいた位置／向きの決定等、他の利用できる情報を使用して行われてよい。
【０２０３】
カメラ１２１６は、例えば、部屋、小屋、自然環境等、ユーザ１を取り巻く実世界環境の画像及び画像ストリームを撮影するために備えられる。様々な実施形態において、例えば、ユーザ１がＨＭＤ１２０２のディスプレイを見ている時等に、ユーザから離れる方に向けられた、後ろ向きのカメラと、例えば、ユーザ１がＨＭＤ１２０２のディスプレイを見ている時等に、ユーザの方に向けられた、前向きのカメラとを含む複数のカメラがＨＭＤ１２０２に含まれる。さらに、幾つかの実施形態においては、デプスカメラ１２１８が、実世界環境の物体の奥行情報を感知するためにＨＭＤ１２０２に含まれる。
【０２０４】
ＨＭＤ１２０２は、オーディオ出力を提供するためのスピーカ１２２０を含む。また、一部の実施形態においては、マイクロフォン１２２２が、周囲環境からの音、ユーザが行う発話等を含む、実世界環境からの音を捕捉するために含まれる。ＨＭＤ１２０２は、例えば、振動デバイス等、ユーザ１に触覚フィードバックを提供するための触覚フィードバックモジュール１２２４を含む。一実施形態においては、触覚フィードバックモジュール１２２４は、ユーザ１に触覚フィードバックを提供するようにＨＭＤ１２０２の動き及び／または振動を起こすことができる。
【０２０５】
ＬＥＤ１２２６は、ＨＭＤ１２０２のステータスの視覚インジケータとして備えられる。例えば、ＬＥＤは、電池レベル、電源オン等を示してよい。カードリーダ１２２８は、ＨＭＤ１２０２が、メモリカードから情報を読み出し、メモリカードに情報を書き込むのを可能にするために備えられる。ＵＳＢインタフェース１２３０は、周辺装置の接続、または、他のポータブルデバイス、コンピュータ等、他の装置への接続を可能にするためのインタフェースの一例として含まれる。ＨＭＤ１２０２の様々な実施形態において、様々な種類のインタフェースのいずれかが、ＨＭＤ１２０２の接続性の向上を可能にするために含まれてよい。
【０２０６】
ＷｉＦｉ（登録商標）モジュール１２３２は、ワイヤレスネットワーク技術を介してインターネットへの接続を可能にするために含まれる。また、ＨＭＤ１２０２は、他のデバイスへのワイヤレス接続を可能にするブルートゥース（登録商標）モジュール１２３４を含む。一部の実施形態においては、通信リンク１２３６も、他のデバイスへの接続のために含まれる。一実施形態においては、通信リンク１２３６は、無線通信のために赤外線送信を利用する。他の実施形態においては、通信リンク１２３６は、他のデバイスとの通信のために、様々な無線または有線の送信プロトコルのいずれかを利用する。
【０２０７】
入力ボタン／センサ１２３８は、入力インタフェースをユーザ１（図１）に提供するために含まれる。ボタン、タッチパッド、ジョイスティック、トラックボール等の様々な種類の入力インタフェースのいずれかが含まれる。超音波技術を介した他のデバイスとの通信を促進するために、超音波通信モジュール１２４０が、ＨＭＤ１２０２に含まれる。
【０２０８】
バイオセンサ１２４２が、ユーザから生理学的データの検出を可能にするために含まれる。一実施形態においては、バイオセンサ１２４２は、ユーザの皮膚を通してユーザの生体電気信号を検出するために１つまたは複数のドライ電極を含む。
【０２０９】
ＨＭＤ１２０２の上記コンポーネントは、ＨＭＤ１２０２に含まれ得る単に例示のコンポーネントとして記載した。様々な実施形態において、ＨＭＤ１２０２は、様々な上記コンポーネントの一部を含む場合も含まない場合もある。
【０２１０】
図１３は、情報サービスプロバイダ（ＩＮＳＰ）アーキテクチャの実施形態を示す。ＩＮＳＰ１３０２は、地理的に分散し、例えば、ＬＡＮ、ＷＡＮ、または、これらの組み合わせ等、コンピュータネットワーク１３０６を介して接続されたユーザＡ、Ｂ、Ｃ、Ｄに多数の情報サービスを配信する。ＷＡＮの例は、インターネットを含み、ＬＡＮの例は、イントラネットを含む。ユーザ１は、クライアントデバイス１３０２−１を操作し、ユーザＢは、別のクライアントデバイス１３０２−２を操作し、ユーザＣは、さらに別のクライアントデバイス１３０２−３を操作し、ユーザＤは、別のクライアントデバイス１３２０−４を操作する。
【０２１１】
一部の実施形態においては、クライアントデバイス１３０２−１、１３２０−２、１３２０−３、１３２０−４は、それぞれ、中央処理装置（ＣＰＵ）、ディスプレイ、及び、入力／出力（Ｉ／Ｏ）インタフェースを含む。各クライアントデバイス１３０２−１、１３２０−２、１３２０−３、１３２０−４の例は、パーソナルコンピュータ（ＰＣ）、携帯電話、ネットブック、タブレット、ゲームシステム、パーソナルデジタルアシスタント（ＰＤＡ）、ゲームコンソール１１００及びディスプレイデバイス、ＨＭＤ１２０２（図１１）、ゲームコンソール１１００及びＨＭＤ１２０２、デスクトップコンピュータ、ラップトップコンピュータ、スマートテレビ等を含む。一部の実施形態においては、ＩＮＳＰ１３０２は、クライアントデバイスの種類を認識し、採用する通信方法を調整する。
【０２１２】
一部の実施形態においては、ＩＮＳＰは、株価の更新等の一種類のサービス、または、放送メディア、ニュース、スポーツ、ゲーム等の様々なサービスを配信する。さらに、各ＩＮＳＰが提供するサービスは動的である、すなわち、サービスは任意の時点で追加または減らすことができる。従って、特定の種類のサービスを特定の個人に提供するＩＮＳＰは、経時的に変化し得る。例えば、クライアントデバイス１３０２−１がユーザ１の居住地にある間、クライアントデバイス１３０２−１は、クライアントデバイス１３０２−１の近くのＩＮＳＰからサービスを提供され、ユーザ１が異なる市に旅行すると、クライアントデバイス１３０２−１は、異なるＩＮＳＰからサービスを提供される。居住地のＩＮＳＰは、要求された情報とデータとを新しいＩＮＳＰに転送し、それによって、情報は、新しい都市までクライアントデバイス１３０２−１を「追いかけて」、データをクライアントデバイス１３０２−１に近付け、アクセスを容易にする。様々な実施形態において、マスタ−サーバ関係が、クライアントデバイス１３０２−１の情報を管理するマスタＩＮＳＰと、マスタＩＮＳＰからの制御の下、クライアントデバイス１３０２−１と直接、インタフェースするサーバＩＮＳＰとの間に確立される。一部の実施形態においては、クライアントデバイス１３０２−１が世界を動きまわると、データが１つのＩＳＰから他のＩＳＰに転送されて、クライアントデバイス１３０２−１にサービスを提供するのにより良い位置にあるＩＮＳＰが、これらのサービスを届けるＩＮＳＰになる。
【０２１３】
ＩＮＳＰ１３０２は、コンピュータネットワーク１３０６を介してコンピュータベースのサービスを顧客に提供するアプリケーションサービスプロバイダ（ＡＳＰ）１３０８を含む。ＡＳＰモデルを用いて提供されるソフトウェアは、いわゆる、オンデマンドソフトウェアまたはサービスとしてのソフトウェア（ＳａａＳ）の場合もある。例えば、顧客関係管理等のコンピュータベースのサービスにアクセスを提供する簡単な形態は、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）等の標準的なプロトコルを用いることによる。アプリケーションソフトウェアは、ベンダのサーバに常駐し、ベンダによって提供される特殊目的のクライアントソフトウェア、及び／または、例えば、シンクライアント等の他のリモートインタフェースによって、ハイパーテキストマークアップ言語（ＨＴＭＬ）等を用いてウェブブラウザを通して、各クライアントデバイス１３０２−１、１３２０−２、１３２０−３、１３２０−４によってアクセスされる。
【０２１４】
広い地理的エリアにわたって配信されるサービスは、クラウドコンピューティングを使用することが多い。クラウドコンピューティングは、動的にスケーラブルで、多くの場合、仮想化されたリソースがコンピュータネットワーク１３０６を介してサービスとして提供されるコンピューティングの形式である。ユーザＡ、Ｂ、Ｃ、Ｄは、ユーザをサポートする「クラウド」の技術インフラの専門家である必要はない。一部の実施形態においては、クラウドコンピューティングは、サービスとしてのインフラ（ＩaａＳ）、サービスとしてのプラットフォーム（ＰａａＳ）、及び、サービスとしてのソフトウェア（ＳａａＳ）等の異なるサービスに分けられる。クラウドコンピューティングサービスは、ウェブブラウザからアクセスされる共通ビジネスアプリケーションをオンラインで提供することが多く、ソフトウェア及びデータはサーバに記憶される。クラウドという用語は、コンピュータネットワーク１３０６がコンピュータネットワーク図でどのように描かれているのかに基づいた、例えば、サーバ、ストレージ、及び、論理回路等を使用するコンピュータネットワーク１３０６の例えとして使用され、コンピュータネットワーク１３０６が隠している複雑なインフラの抽象化である。
【０２１５】
さらに、ＩＮＳＰ１３０２は、本明細書ではゲーム処理サーバとも呼ばれる場合があるゲーム処理プロバイダ（ＧＰＰ）１３１０を含み、ゲーム処理プロバイダ（ＧＰＰ）１３１０は、シングルプレイヤ及びマルチプレイヤビデオゲームをプレイするために、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４によって使用される。コンピュータネットワーク１３０６でプレイされる大抵のビデオゲームは、ゲームサーバへの接続を介して動作する。典型的には、ゲームは、専用のサーバアプリケーションを使用する。専用のサーバアプリケーションは、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４からデータを収集し、そのデータを他のユーザによって操作される他のクライアントに配信する。これは、ピアツーピア構成より効率がよく、有効であるが、別個のサーバを使用して、サーバアプリケーションをホストする。一部の実施形態においては、ＧＰＰ１３１０は、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４間の通信を確立して、クライアントデバイスは、集中型のＧＰＰ１３１０にさらに依存することなく、情報をやりとりする。
【０２１６】
専用ＧＰＰは、クライアントとは独立して実行するサーバである。このようなサーバは、通常、データセンタにある専用ハードウェア上で実行されて、より多くの帯域幅と専用の処理能力を提供する。専用サーバは、大抵のＰＣベースのマルチプレイヤゲームのゲームサーバをホストする方法である。多人数同時参加型オンラインゲームは、ゲームタイトルを所有するソフトウェア会社によって通常、ホストされる専用サーバで実行し、専用サーバがコンテンツを制御、更新するのを可能にする。
【０２１７】
本明細書ではブロードキャスト処理プロバイダとも呼ばれるブロードキャスト処理サーバ（ＢＰＳ）１３１２は、オーディオ信号またはビデオ信号を聴衆に配信する。非常に狭い範囲の聴衆へのブロードキャストは、ナローキャストとも呼ばれる。ブロードキャスト配信の最後の行程は、信号が、どのようにクライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４に到着するかであり、信号は、一部の実施形態においては、ラジオ局またはテレビ局と同様に無線でアンテナ及び受信器に、または、ケーブルテレビもしくはケーブルラジオもしくは局を介した「ワイヤレスケーブル」を通して、配信される。コンピュータネットワーク１３０６は、また、様々な実施形態において、特に、信号及び帯域幅の共有を可能にするマルチキャストを用いてラジオ信号またはテレビ信号のいずれかをクライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４に届ける。歴史的に、ブロードキャストは、幾つかの実施形態において、例えば、全国放送、地方放送等、地理的領域によって範囲が定められてきた。しかしながら、高速インターネットの広がりによって、コンテンツが世界中のほとんど全ての国に届き得るので、ブロードキャストは、地理によって規定されない。
【０２１８】
ストレージサービスプロバイダ（ＳＳＰ）１３１４は、コンピュータストレージスペースと、関連する管理サービスを提供する。ＳＳＰ１３１４は、周期的なバックアップとアーカイブも提供する。ストレージをサービスとして提供することによって、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４は、ストレージがサービスとして使用されない時と比べて、より多くのストレージを使用する。他の大きな利点は、ＳＳＰ１３１４は、バックアップサービスを含むことで、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４は、ハードドライブが故障しても、データを失わない。さらに、複数のＳＳＰは、一部の実施形態においては、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４から受信したデータの全てのコピーまたは一部のコピーを有し、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４が、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４の所在と、クライアントの種類に関係なく、効率的にデータにアクセスするのを可能にする。例えば、ユーザ１は、家庭のコンピュータを介して、また、ユーザ１が移動中は、携帯電話を介して個人ファイルにアクセスする。
【０２１９】
通信プロバイダ１３１６は、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４への接続性を提供する。通信プロバイダ１３１６の１つの種類は、コンピュータネットワーク１３０６へのアクセスを提供するインターネットサービスプロバイダ（ＩＳＰ）である。ＩＳＰは、ダイアルアップ、デジタル加入者回線（ＤＳＬ）、ケーブルモデム、ファイバ、ワイヤレスまたは専用高速インターコネクト等、インターネットプロトコルデータグラムの配信に適したデータ送信技術を用いて、クライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４を接続する。通信プロバイダ１３１６は、一部の実施形態においては、電子メール、インスタントメッセージ、及び、ショートメッセージサービス（ＳＭＳ）等の、メッセージサービスも提供する。他の種類の通信プロバイダは、ネットワークサービスプロバイダ（ＮＳＰ）で、ネットワークサービスプロバイダは、コンピュータネットワーク１３０６への直接バックボーンアクセスを提供することによって、帯域幅またはネットワークアクセスを販売する。ネットワークサービスプロバイダの例は、電気通信会社、データキャリア、ワイヤレス通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ運営業者等を含む。
【０２２０】
データ交換部１３１８は、ＩＮＳＰ１３０２内の幾つかのモジュールを相互に接続し、これらのモジュールを、コンピュータネットワーク１３０６を介してクライアントデバイス１３２０−１、１３２０−２、１３２０−３、１３２０−４に接続する。データ交換部１３１８は、様々な実施形態において、ＩＮＳＰ１３０２の全てのモジュールが近くにある小さいエリアをカバーする、または、異なるモジュールが地理的に分散している時、大きい地理的エリアをカバーする。例えば、データ交換部１３０２は、データセンタのキャビネット内の高速のギガビットイーサネット（登録商標）、または、大陸間仮想ＬＡＮを含む。
【０２２１】
様々な実施形態において、本明細書に記載の一部の実施形態の１つまたは複数の特徴は、本明細書に記載の１つまたは複数の残りの実施形態の１つまたは複数の特徴と組み合わされることに注意されたい。
【０２２２】
本開示に記載の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能消費者家電、ミニコンピュータ、メインフレームコンピュータ等を含む、様々なコンピュータシステム構成と共に実践されてよい。一実施態様においては、本開示に記載の実施形態は、タスクが、有線ベースまたは無線ネットワークを通してリンクされたリモート処理装置によって行われる分散コンピュータ環境で実践される。
【０２２３】
上記実施形態を念頭に置いて、一実施態様においては、本開示に記載の実施形態は、コンピュータシステムに記憶されたデータを用いる様々なコンピュータ実施動作を採用することを理解されたい。これらの動作は、物理量の物理的操作を必要とする動作である。本開示に記載の実施形態の一部をなす本明細書に記載の動作はいずれも、有用な機械動作である。本開示に記載の一部の実施形態は、これらの動作を行うデバイスまたは装置にも関する。装置は、必要な目的のために特に構築される、または、装置は、コンピュータに記憶されたコンピュータプログラムによって、選択的にアクティブにされる、もしくは、構成される汎用コンピュータである。特に、一実施形態においては、様々な汎用機械が、本明細書の教示に従って書かれたコンピュータプログラムと共に使用される、または、より専門的な装置を必要な動作を行うように構築すると、より便利な場合がある。
【０２２４】
ある実施態様において、本開示に記載の一部の実施形態は、コンピュータ可読媒体上のコンピュータ可読コードとして実現される。コンピュータ可読媒体は、データを記憶する任意のデータ記憶装置であり、データは、後に、コンピュータシステムによって読み出される。コンピュータ可読媒体の例は、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、ＲＯＭ、ＲＡＭ、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、記録可能ＣＤ（ＣＤ-Ｒ）、書き換え可能ＣＤ（ＣＤ-ＲＷ）、磁気テープ、光学データ記憶装置、非光学データ記憶装置等を含む。例として、コンピュータ可読媒体は、ネットワークに結合されたコンピュータシステムに分散されたコンピュータ可読有形媒体を含み、それによって、コンピュータ可読コードは、分散されて記憶及び実行される。
【０２２５】
さらに、上記実施形態の一部は、ゲーム環境に関して記載されるが、一部の実施形態においては、ゲームの代わりに、例えば、ビデオ会議環境等の他の環境が使用される。
【０２２６】
方法の動作は、特定の順で記載されるが、他のハウスキーピング動作が、動作と動作の間で行われてよい、または、動作は、わずかに異なる時間に生じるように調整されてよい、もしくは、オーバーレイ動作の処理が所望のように行われる限り、処理動作が、処理に関連付けられた様々な間隔で生じるのを可能にするシステムに分散されてよいことは理解されたい。
【０２２７】
本開示に記載の前述の実施形態を、理解が明瞭になるように詳細に記載したが、添付の特許請求の範囲内で一定の変更及び修正が行われてよいことは明らかである。従って、本実施形態は、例示的なもので制限とみなしてはならず、実施形態は、本明細書に記載の詳細に制限されずに、添付の特許請求の範囲及び均等物の範囲内で修正されてよい。
【図１】
2020516346.tif 000003
【図２】
2020516346.tif 000004
【図３Ａ】
2020516346.tif 000005
【図３Ｂ】
2020516346.tif 000006
【図３Ｃ】
2020516346.tif 000007
【図３Ｄ】
2020516346.tif 000008
【図４Ａ】
2020516346.tif 000009
【図４Ｂ】
2020516346.tif 000010
【図５Ａ】
2020516346.tif 000011
【図５Ｂ】
2020516346.tif 000012
【図６Ａ】
2020516346.tif 000013
【図６Ｂ】
2020516346.tif 000014
【図６Ｃ】
2020516346.tif 000015
【図７】
2020516346.tif 000016
【図８】
2020516346.tif 000017
【図９】
2020516346.tif 000018
【図１０】
2020516346.tif 000019
【図１１】
2020516346.tif 000020
【図１２】
2020516346.tif 000021
【図１３】
2020516346.tif 000022
【国際調査報告】
2020516346.tif 000023
2020516346.tif 000024
2020516346.tif 000025