IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソニー・インタラクティブエンタテインメント エルエルシーの特許一覧

特開2022-66238分散型ゲームエンジンを使用するシステム及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022066238
(43)【公開日】2022-04-28
(54)【発明の名称】分散型ゲームエンジンを使用するシステム及び方法
(51)【国際特許分類】
   A63F 13/355 20140101AFI20220421BHJP
   A63F 13/35 20140101ALI20220421BHJP
【FI】
A63F13/355
A63F13/35
【審査請求】有
【請求項の数】25
【出願形態】OL
(21)【出願番号】P 2022024664
(22)【出願日】2022-02-21
(62)【分割の表示】P 2019554652の分割
【原出願日】2018-03-20
(31)【優先権主張番号】15/477,341
(32)【優先日】2017-04-03
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】518187455
【氏名又は名称】ソニー・インタラクティブエンタテインメント エルエルシー
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】コーレンブランデル、ロエロフ、ロデリック
(57)【要約】
【解決手段】分散型ゲームエンジンを使用する方法は、コンピュータネットワークを介してゲームをプレイする要求をユーザアカウントから受信することと、ユーザアカウントの処理能力割り当てを特定することと、処理能力割り当てに基づいてゲームをプレイするためにユーザアカウントが2つ以上の処理ノードを利用するノードアセンブリを決定することとを含む。方法は、ユーザアカウントがゲームを実行するための2つ以上の処理ノードを開始することをさらに含む。開始の動作は、1つの処理ノードから別の処理ノードへのゲームの処理コードの転送を設定するように行われる。方法は、ゲームの状態情報のやり取りのために、2つ以上の処理ノード間に内部通信チャネルを規定することを含む。状態情報のやり取りを行って、2つ以上のノードによるゲームの共有処理を可能にする。
【選択図】図1
【特許請求の範囲】
【請求項1】
ゲームのプレイのために複数のハードウェアサーバノードを用いる方法であって、
コンピュータネットワークを介してクライアントデバイスからゲームをプレイする要求を受信することと、
前記要求を受信する時、前記ゲームに対するゲームエンジンの実行のための処理能力の量を決定することと、
前記ゲームエンジンの前記実行のための前記処理能力を達成するために前記複数のハードウェアサーバノードを割り当てることであって、前記複数のハードウェアサーバノードは第1のハードウェアサーバノードと第2のハードウェアサーバノードを含む、前記割り当てることと、
前記複数のハードウェアサーバノード間の前記ゲームエンジンの転送を促進するために前記複数のハードウェアサーバノードに内部通信プロトコルを提供することであって、前記複数のハードウェアサーバノードが前記ゲームエンジンを実行して前記ゲームの前記プレイを促進するために前記複数のハードウェアサーバノード間で前記ゲームエンジンが転送される、前記提供することと、
前記第1のハードウェアサーバノードによって、前記ゲームエンジンを実行して前記ゲームのゲーム状態を生成することと、
前記ゲームの第1のフレームを生成するために前記第1のハードウェアサーバノードから前記第2のハードウェアサーバノードへ前記ゲーム状態を、前記内部通信プロトコルを用いて転送することと、
を含む、方法。
【請求項2】
前記第1のハードウェアサーバノードによって、前記ゲーム状態を含むビデオフレーム情報を生成することと、
前記第2のハードウェアサーバノードによって、前記ビデオフレーム情報に基づいて前記第1のフレームを含む1以上のビデオフレームを生成することと、
前記第2のハードウェアサーバノードによって、前記1以上のビデオフレームを符号化して1以上の符号化されたビデオフレームを出力することと、
前記コンピュータネットワークを介して前記クライアントデバイスに前記1以上の符号化されたビデオフレームを送信することとをさらに含む、請求項1に記載の方法。
【請求項3】
前記処理能力の量は、前記ゲームの前記プレイを促進するための前記複数のハードウェアサーバノードの数を決定するために用いられる、請求項1に記載の方法。
【請求項4】
前記複数のハードウェアサーバノードの各々は、中央処理装置(CPU)及びグラフィック処理装置(GPU)を含み、前記処理能力の量は、前記ゲームの前記プレイを促進するためのCPUの数及びGPUの数を決定するために用いられる、請求項3に記載の方法。
【請求項5】
前記複数のハードウェアサーバノードを割り当てることは、前記ゲームの前記プレイを促進するためにCPU及びGPUを割り当てることを含む、請求項4に記載の方法。
【請求項6】
前記処理能力の量は、ユーザアカウントのサブスクリプションレベルに基づいて決定され、前記ゲームをプレイする前記要求は、前記ユーザアカウントを介して受信される、請求項1に記載の方法。
【請求項7】
前記内部通信プロトコルを提供することは、前記複数のハードウェアサーバノードにソフトウェア開発キットを送信し、前記ゲームの前記プレイ中の前記複数のハードウェアサーバノード間の通信を可能にすることを含む、請求項1に記載の方法。
【請求項8】
前記複数のハードウェアサーバノードの各々はゲームコンソールである、請求項1に記載の方法。
【請求項9】
前記第1のハードウェアサーバノードによって、前記ゲームエンジンを実行して、前記ゲーム状態に基づいて第2のフレームを生成することと、
前記第1のハードウェアサーバノードによって、前記第2のフレームを第3のフレームを用いて符号化して第1の符号化されたフレームを生成することと、
前記第2のハードウェアサーバノードによって、前記第1のフレームを第4のフレームを用いて符号化して第2の符号化されたフレームを生成することと、
前記第1、第2、第3、及び第4のフレームを連続した順番に表示するために前記コンピュータネットワークを介して前記クライアントデバイスに前記第1の符号化されたフレーム及び前記第2の符号化されたフレームを送信することとをさらに含む、請求項1に記載の方法。
【請求項10】
前記ゲーム状態は、前記ゲームの前記第1のフレームの仮想シーンを生成するための複数の位置と複数の方向を含む、請求項1に記載の方法。
【請求項11】
前記第1のハードウェアサーバノードは、前記第2のハードウェアサーバノードのメモリデバイスに直接アクセスするためにPCIe(peripheral component interconnect-express)通信バスを介して前記第2のハードウェアサーバノードに結合される、請求項1に記載の方法。
【請求項12】
前記第1のハードウェアサーバノード及び前記第2のハードウェアサーバノードは、データセンタの同じラックに置かれる、請求項1に記載の方法。
【請求項13】
前記第1のハードウェアサーバノードはデータセンタの第1のラックに置かれ、前記第2のハードウェアサーバノードは前記データセンタの第2のラックに置かれる、請求項1に記載の方法。
【請求項14】
システムであって、
コンピュータネットワークを介してクライアントデバイスからゲームをプレイする要求を受信するように構成されたクラウドゲームサーバであって、前記クラウドゲームサーバは、ユーザアカウントがゲームエンジンにアクセスすることが許されるべきであるという決定に基づいて信号を出力するように構成された、前記クラウドゲームサーバと、
前記クラウドゲームサーバに結合されたノードアセンブリサーバと、
前記ノードアセンブリサーバに結合されるように構成された複数のハードウェアサーバノードと、
前記ノードアセンブリサーバは、前記クラウドゲームサーバから前記信号を受信するように構成され、前記信号を受信した時、前記ノードアセンブリサーバは、
前記ゲームに対する前記ゲームエンジンの実行のための処理能力の量を決定することと、
前記ゲームエンジンの前記実行のための前記処理能力を達成するために前記複数のハードウェアサーバノードを割り当てることであって、前記複数のハードウェアサーバノードは第1のハードウェアサーバノードと第2のハードウェアサーバノードを含む、前記割り当てることと、
前記複数のハードウェアサーバノード間の前記ゲームエンジンの転送を促進するために前記複数のハードウェアサーバノードに内部通信プロトコルを提供することであって、前記複数のハードウェアサーバノードが前記ゲームエンジンを実行して前記ゲームの前記プレイを促進するために前記複数のハードウェアサーバノード間で前記ゲームエンジンが転送される、前記提供することとを実行し、
前記第1のハードウェアサーバノードは、前記ゲームエンジンを実行して前記ゲームのゲーム状態を生成するように構成され、
前記第1のハードウェアサーバノードは、前記ゲームの第1のフレームを生成するために前記第2のハードウェアサーバノードへ前記ゲーム状態を、前記内部通信プロトコルを用いて転送するように構成される、
システム。
【請求項15】
前記第1のハードウェアサーバノードは、前記ゲーム状態を含むビデオフレーム情報を生成するように構成され、
前記第1のハードウェアサーバノードは、前記ビデオフレーム情報を前記第2のハードウェアサーバノードに転送するために前記内部通信プロトコルを適用するように構成され、
前記第2のハードウェアサーバノードは、前記ビデオフレーム情報に基づいて前記第1のフレームを含む1以上のビデオフレームを生成するように構成され、
前記第2のハードウェアサーバノードは、前記1以上のビデオフレームを符号化して1以上の符号化されたビデオフレームを出力するように構成され、
前記第2のハードウェアサーバノードは、前記コンピュータネットワークを介して前記クライアントデバイスに前記1以上の符号化されたビデオフレームを送信するように構成される、請求項14に記載のシステム。
【請求項16】
前記ノードアセンブリサーバは、前記ゲームの前記プレイを促進するための前記複数のハードウェアサーバノードの数を決定するために前記処理能力の量を用いるように構成される、請求項14に記載のシステム。
【請求項17】
前記複数のハードウェアサーバノードの各々は、中央処理装置(CPU)及びグラフィック処理装置(GPU)を含み、前記ノードアセンブリサーバは、前記ゲームの前記プレイを促進するためのCPUの数及びGPUの数を決定するために前記処理能力の量を用いるように構成される、請求項14に記載のシステム。
【請求項18】
前記複数のハードウェアサーバノードを割り当てる際、前記ノードアセンブリサーバは、前記ゲームの前記プレイを促進するためにCPU及びGPUを割り当てるように構成される、請求項17に記載のシステム。
【請求項19】
前記ノードアセンブリサーバは、ユーザアカウントのサブスクリプションレベルに基づいて前記処理能力の量を決定するように構成され、前記ゲームをプレイする前記要求は、前記ユーザアカウントを介して受信される、請求項14に記載のシステム。
【請求項20】
前記内部通信プロトコルを提供する際、前記ノードアセンブリサーバは、前記複数のハードウェアサーバノードにソフトウェア開発キットを送信し、前記ゲームの前記プレイ中の前記複数のハードウェアサーバノード間の通信を可能にするように構成される、請求項14に記載のシステム。
【請求項21】
前記複数のハードウェアサーバノードの各々はゲームコンソールである、請求項14に記載のシステム。
【請求項22】
ゲームのプレイのために複数のハードウェアサーバノードを用いるためのプログラム命令を格納する非一時的コンピュータ読み取り可能な媒体であって、コンピュータシステムの1以上のプロセッサによる前記プログラム命令の実行により、前記1以上のプロセッサに、
コンピュータネットワークを介してクライアントデバイスからゲームをプレイする要求を受信することと、
前記要求を受信する時、前記ゲームに対するゲームエンジンの実行のための処理能力の量を決定することと、
前記ゲームエンジンの前記実行のための前記処理能力を達成するために前記複数のハードウェアサーバノードを割り当てることであって、前記複数のハードウェアサーバノードは第1のハードウェアサーバノードと第2のハードウェアサーバノードを含む、前記割り当てることと、
前記複数のハードウェアサーバノード間の前記ゲームエンジンの転送を促進するために前記複数のハードウェアサーバノードに内部通信プロトコルを提供することであって、前記複数のハードウェアサーバノードが前記ゲームエンジンを実行して前記ゲームの前記プレイを促進するために前記複数のハードウェアサーバノード間で前記ゲームエンジンが転送される、前記提供することと、
前記第1のハードウェアサーバノードによって、前記ゲームエンジンを実行して前記ゲームのゲーム状態を生成することと、
前記ゲームの第1のフレームを生成するために前記第1のハードウェアサーバノードから前記第2のハードウェアサーバノードへ前記ゲーム状態を、前記内部通信プロトコルを用いて転送することと、
を含む動作を実行させる、非一時的コンピュータ読み取り可能な媒体。
【請求項23】
前記動作は、
前記第1のハードウェアサーバノードによって、前記ゲーム状態を含むビデオフレーム情報を生成することと、
前記第2のハードウェアサーバノードによって、前記ビデオフレーム情報に基づいて1以上のビデオフレームを生成することと、
前記第2のハードウェアサーバノードによって、前記1以上のビデオフレームを符号化して1以上の符号化されたビデオフレームを出力することと、
前記コンピュータネットワークを介して前記クライアントデバイスに前記1以上の符号化されたビデオフレームを送信することとをさらに含む、請求項22に記載の非一時的コンピュータ読み取り可能な媒体。
【請求項24】
前記処理能力の量は、前記ゲームの前記プレイを促進するための前記複数のハードウェアサーバノードの数を決定するために用いられる、請求項22に記載の非一時的コンピュータ読み取り可能な媒体。
【請求項25】
前記複数のハードウェアサーバノードの各々はゲームコンソールである、請求項22に記載の非一時的コンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、分散型ゲームエンジンを使用するシステム及び方法に関する。
【背景技術】
【0002】
ゲームプレイ用の様々なデバイスが開発されてきた。例えば、様々なゲーム会社が、ユニークなゲーム体験をユーザに提供するゲームコンソールを製作してきた。例を挙げて説明すると、ユーザは、戦争ゲーム、カンフーゲーム、ダンスゲーム等をプレイできる。
【0003】
一部のゲーム会社は、ユーザの頭部に装着して、ユーザにゲームの表示を提供するディスプレイデバイスを開発した。ユーザは、このようなディスプレイデバイスを使用している間、自分がゲームの中にいてゲームをプレイしているかのように感じる。
【0004】
しかしながら、ゲームに関連付けられたグラフィックス及びゲームに関連付けられた処理の増加に伴うほど、ゲームコンソールの処理能力が向上されてはいない。
【発明の概要】
【0005】
本開示の実施形態は、分散型ゲームエンジンを使用するシステム及び方法を提供する。
【0006】
本開示の他の態様は、本開示で記載された実施形態の原理を、例を挙げて説明した以下の詳細な記載を添付の図面と共に読めば、明らかになろう。
【0007】
ゲーム及び科学技術の計算のために、計算能力量の増加が絶えず求められている。単一のサーバの計算能力は、チップ製造業者からアセンブリ時に入手できるコンピュータ部品によって制限される。所与の計算機の世代に対して、コンピュータチップ製造業者は、トランジスタの数及び能力の技術的制限のために、チップあたりの中央処理装置(CPU)またはグラフィック処理装置(GPU)コアを一定の数に抑制している。これらの技術的障壁は、ムーアの法則によって、数年ごとに上がっている。しかしながら、より多量の計算能力が瞬時に必要な場合がある。より大きい計算能力を得る方法の1つは、単一サーバ内で複数のCPUソケットを使用し、より多くのGPUボートを追加することである。しかしながら、より多くのCPUソケットやより多くのGPUボートを追加すると、単一サーバ内の空間が限られてくる。より大きい計算能力を得る別の方法は、追加のサーバを使用して、複数のサーバを通して作業負荷を分散することである。
【0008】
一実施形態において、任意選択でゲームコンソールの外に構成される複数のサーバを相互に接続する高速で低遅延のシステムを記載する。この技術は、順応性に富む計算アーキテクチャのビルディングブロックであり、例えば、クラウドゲームを含むゲーム目的に利用される。実施形態は、例えば、ゲームコンソール、仮想マシン、サーバ等の計算ノードのクラスタ化を可能にして、クラスタ化しなければ入手できない大量の計算容量を取得する。計算ノードをつなぎ合わせる方法は、ゲームエンジンを書く方法を可能にし、この場合、例えば、シングルプレイヤゲームであってもマルチプレイヤゲームであっても、ゲームは多くの計算ノードを通る。システムは、異なる種類のゲームを可能にするクラスタ化技術を提供する。
【0009】
順応性に富む計算のためのハードウェアアーキテクチャを所与として、計算能力を活用する様々なアプリケーションを記載する。使用事例の1つは、複数の計算ノードの計算能力を一人のユーザに与えることである。例えば、ゲームエンジンは、複数の計算ノードに及ぶ。これは、幾つかの方法で行ってよい。例を挙げて説明すると、各計算ノードは、異なるフレームをレンダリングする、例えば、ノード1は、フレーム1+nをレンダリングし、ノード2は、フレーム2+nをレンダリングする。ここで、nは、ノードの数である。一部のゲームエンジンは、物理バッファ及びGPUバッファからのフレーム情報を共有する。例えば、各ノードは、データ利用可能性等に関してメモリアドレスと共に通知を与えられると、他のノードのメモリからフレーム情報を読み出す。例を挙げて説明すると、ノードは、他のノードに割り込みを送信し、他のノード内の共有レジスタからフレーム情報を読み出す。これは、ネットワークパケットより桁違いに速い。フレーム情報を共有する別の例としては、ユニバーサルデータグラムプロトコル/伝送制御プロトコル(UDP/TCP)ネットワークパケットを使用して、フレーム情報を読み出す。さらに別の例としては、各計算ノードは、フレームの一部、例えば、4分の1の、または、所定の数のラインをレンダリングする。さらに別の例として、マスタ-スレーブアーキテクチャにおいては、1つのノードがマスタで、計算ノード間に計算タスクを委託する。別の例としては、ノードは、他のノードに割り込みを送信し、他のノード内の共有レジスタにフレーム情報を書き込む。これは、ネットワークパケットより桁違いに速くなり得る。フレーム情報を共有する他の例としては、UDP/TCPプロトコルを使用して、フレーム情報を書き込む。一部のタスクは、他のタスクよりも使用時間が多いまたは少ないので、マスタはスケジューラである。一部の物理的計算は、マスタで行われ、ゲームの状態がスレーブにブロードキャストされる。
【0010】
上記のように単一ユーザ構成がクラウドゲームに使用される場合、例えば、ゲームパッド、または、キーボード、または、マウス等の入力装置を介して受信した入力の管理の仕方と、オーディオ及び/またはビデオストリーミングの管理の仕方とに関する課題がある。クラウドゲームにおいては、一人のクライアントが多くのノードに入力を送信し、そのクライアントが様々なノードからオーディオ及び/またはビデオを受信することがある。ノードの1つは、ストリーミングノードとしてマーク付けされ、ストリーミングノードは、クライアントとの接続を扱い、入力を受信し、入力を他のノードに伝える。このノードは、全ての圧縮されたオーディオ及びビデオデータもクライアントに送信する。このノードが、全てのノードに代わってオーディオ及びビデオの符号化も行う、または、各ノードが、それ自体で符号化を行うこともできる。しかしながら、オーディオ及びビデオの符号化のために、以前のフレームデータを使用することが多いので、以前のフレームデータがノード間で共有される。例えば、各ノードが、画像の隅を処理し、各隅がそれ自体のビデオストリームである場合、複数のビデオストリームを使用することもあり得る。クライアントは、隅をつなぎ合わせて、それらを同期してレンダリングする。何らかの形態のブレンディングをビデオフレーム間の継ぎ目に使用して、端が醜くならないようにする。
【0011】
柔軟性に富む計算クラスタの1つの用途は、新しい種類のマルチプレイヤゲーム用である。全てのユーザが、このようなクラスタ内でホストされた同じ仮想シーンに接続されると、より応答性の高い種類のゲームがプレイされる。さらに、柔軟性に富む計算において、余剰な計算が除かれると、節電が行われる。従来のマルチプレイヤゲームにおいては、ユーザが同じ世界でプレイする時、ゲームエンジンの各ユーザの(ローカルな)インスタンスに対して多くの物理的計算を繰り返す必要がある。計算を一度にすることが可能であり、節電につながる。
【0012】
一態様においては、分散型ゲームエンジンを使用する方法を記載する。方法は、コンピュータネットワークを介してゲームをプレイする要求をユーザアカウントから受信することと、ユーザアカウントの処理能力割り当てを特定することと、処理能力割り当てに基づいてゲームをプレイするためにユーザアカウントが2つ以上の処理ノードを利用するノードアセンブリを決定することとを含む。方法は、ユーザアカウントのゲーム実行のための2つ以上の処理ノードを開始することをさらに含む。開始の動作が行われて、2つ以上の処理ノードの1つから2つ以上の処理ノードの別のノードにゲームの処理コードの転送を設定する。方法は、ゲームの状態情報をやり取りするために、2つ以上の処理ノード間に内部通信チャネルを規定することを含む。状態情報のやり取りが行われて、2つ以上のノードによるゲームの共有処理を可能にする。2つ以上のノード間の状態情報のやり取りは、2つ以上のノードが集合ノードとして働くように、連続して生じる。
【0013】
別の態様において、分散型ゲームエンジンを処理する方法を記載する。方法は、ユーザアカウント及びコンピュータネットワークを介してクライアントデバイスからゲームをプレイする要求を受信することと、ゲームをプレイするために複数のサーバノードを割り当てることと、サーバノードに情報を送信して、ノードが通信プロトコルを用いて互いに通信することを可能にし、ゲームのプレイを促進することとを含む。方法は、ゲームをプレイするためのゲームエンジンをサーバノード間に分散させることを含む。
【0014】
さらに別の態様において、分散型ゲームエンジンを処理するシステムを記載する。システムは、ユーザアカウント及びコンピュータネットワークを介してクライアントデバイスからゲームをプレイする要求を受信するように構成されたクラウドゲームサーバと、クラウドゲームサーバに結合されたノードアセンブリサーバとを含む。ノードアセンブリサーバは、複数のサーバノードをゲームのプレイに割り当てる。ノードアセンブリサーバは、サーバノードに情報を送信して、サーバノードが、通信プロトコルを用いて互いに通信するのを可能にし、ゲームのプレイを促進する。サーバノードの1つは、ゲームをプレイするためのゲームエンジンをサーバノード間に分散させる。
【図面の簡単な説明】
【0015】
本開示の様々な実施形態は、添付図面と共に以下に記載を参照することで最もよく理解される。
【0016】
図1】分散型ゲームエンジンを記載するシステムの実施形態の図である。
【0017】
図2】ノードに関する詳細を示すシステムの実施形態の図である。
【0018】
図3A】複数のノード間のゲームエンジンの分散を示すシステムの実施形態の図である。
【0019】
図3B】クラウドゲームサーバの実施形態の図である。
【0020】
図3C】ノードアセンブリサーバの実施形態の図である。
【0021】
図3D】ゲームエンジンの様々な部分を示す図である。
【0022】
図4A】分散型ゲームエンジンの実行を示すシステムの実施形態の図である。
【0023】
図4B】分散型ゲームエンジンの別の実施形態を示すシステムの実施形態の図である。
【0024】
図5A】分散型ゲームエンジンのさらに別の実施形態を示すシステムの実施形態の図である。
【0025】
図5B】あるノードによってゲームの1つまたは複数のフレームが生成され、別のノードによってゲームの1つまたは複数のフレームが生成されることを示す図である。
【0026】
図6A】分散型ゲームエンジンのさらに別の実施形態を示すシステムの実施形態の図である。
【0027】
図6B】仮想シーンを有するビデオフレームにおけるビデオフレームの部分の配置を示す図である。
【0028】
図6C】仮想シーンを有するビデオフレームにおけるビデオフレームの部分の別の配置を示す図である。
【0029】
図7】ビデオフレーム生成のために、ユーザ入力を1つのノードから他のノードにブロードキャストして、ユーザ入力の他のノードへの関連性を決定することを示すシステムの実施形態の図の図である。
【0030】
図8】ビデオフレームの部分を生成するために、ユーザ入力を1つのノードから他のノードにブロードキャストして、ユーザ入力の他のノードへの関連性を決定することを示す図7のシステムの実施形態の図である。
【0031】
図9】分散型ゲームエンジンを実行するために選択される複数のノードの動的変更を示すシステムの実施形態の図である。
【0032】
図10】クラウドビデオゲームをクライアントデバイスにストリーミングするために行われる様々な動作を示すフロー図である。
【0033】
図11】クライアントデバイスのディスプレイデバイスとのインタフェースに対応した、または、ゲームホストシステムとコンピュータネットワークを介して通信できるゲームコンソールの実施形態のブロック図である。
【0034】
図12】ヘッドマウントディスプレイ(HMD)の実施形態の図である。
【0035】
図13】情報サービスプロバイダ(INSP)アーキテクチャの実施形態の図である。
【発明を実施するための形態】
【0036】
分散型ゲームエンジンを使用するシステム及び方法を記載する。本開示の様々な実施形態は、これらの特定の詳細の一部または全てが無くても実践されることに注意されたい。他の例においては、周知のプロセスの動作は、本開示の様々な実施形態を不必要にあいまいにしないために詳細には記載していない。
【0037】
図1は、分散型ゲームエンジン102を記載するシステム100の実施形態の図である。システム100は、複数のクライアントデバイス104A、104B、104Cを含む。システム100は、スイッチシステム106と複数のノード1、2、3とをさらに含む。システム100は、ノードアセンブリサーバ108とクラウドゲームサーバ110とを含む。
【0038】
クライアントデバイスは、本明細書で使用される場合、分散型ゲームエンジン102を用いて実行されるゲームへのアクセスを得るためにユーザが操作するデバイスである。クライアントデバイスの例は、ゲームコンソール、コンピュータ、スマートフォン、スマートテレビ、ヘッドマウントディスプレイ(HMD)、パッド等を含む。
【0039】
HMDは、本明細書で使用される場合、ユーザが装着して仮想現実(VR)シーンまたは拡張現実(AR)シーン等の仮想シーンを見るディスプレイデバイスである。分散型ゲームエンジン102を実行すると、VRシーンまたはARシーンが生成される。
【0040】
ノードは、本明細書で使用される場合、分散型ゲームエンジン102を実行するハードウェアサーバまたはゲームコンソールである。例として、ノードは、他のノードの筐体とは別個の筐体を有する。別の例として、ノードは、データセンタ内で、他のノードが置かれるラックとは異なるラックに置かれる。
【0041】
ある実施形態においては、複数のノードが、1つの筐体内に置かれる。例えば、PlayStation Now(商標)サーバの場合、1つの筐体を複数のノードが共有する。複数のノードが1つの筐体に収容される時、各ノードは、ラックに対して、さらにはコンピュータネットワークに対して、それ自体のネットワーク接続性を有する。しかしながら、その代わりとして、1つの筐体が、スイッチ等のネットワークデバイスを含み、ノードは、コンピュータネットワークに結合するために、スイッチと1本のケーブルを介してラックに結合される。1つの筐体が複数のノードを有することは、スループット及び待ち時間という点でより良い接続性を可能にする。
【0042】
一実施形態においては、ノードは、仮想マシンを用いて実行され、これは、コンピュータシステムのエミュレーションである。仮想マシンにおいては、ハイパーバイザは、分散型ゲームエンジン102を実行するプロセッサ及びメモリデバイス等のハードウェアリソースを共有及び管理するコンピュータのソフトウェアもしくはハードウェアまたはこれらの組み合わせである。例として、仮想マシンは、オペレーティングシステムと、オペレーティングシステム上で実行する1つまたは複数のアプリケーションコンピュータプログラムと、例えば、中央処理装置、グラフィック処理装置、ビデオエンコーダ、オーディオエンコーダ、ネットワーク通信デバイス、メモリデバイス、内部通信デバイス等の、1つまたは複数のハードウェアリソースとを含み、1つまたは複数のハードウェアリソースは、ノードによって実行される本明細書に記載の機能を行うために、オペレーティングシステム及びハイパーバイザを介して、1つまたは複数のアプリケーションコンピュータプログラムによってアクセスされる。
【0043】
スイッチシステムは、本明細書で使用される場合、ノードアセンブリサーバ108とノード1、2、3の1つまたは複数との間のデータ転送を促進する1つまたは複数のスイッチを含む。例えば、スイッチシステムは、スイッチファブリックである。スイッチファブリックは、ノード間に大量の帯域を有し、動的に再構成されることが多く、また、サービス品質(QoS)を可能にする。例を挙げて説明すると、QoSは、ノード間に十分な容量が無い時、リンクの輻輳状態の低減を促進し、QoSは、データ送信を再試行する。一部のノードが、時間内に、容量の足りないノードからのデータの処理を開始する。別の例としては、スイッチシステムは、マルチプレクサを含む。マルチプレクサは、ノード1、2、3の中から、分散型ゲームエンジン102を実行し、ノードアセンブリサーバ108からデータを転送され、且つ、コンピュータネットワーク112を介してデータをクライアントデバイス104A、104B、104Cの1つまたは複数に転送するノードを選択する。別の例として、スイッチシステムは、ノードアセンブリサーバ108とノード1、2、3の1つまたは複数との間のデータ転送を促進する1つまたは複数のトランジスタを含む。さらに別の例として、スイッチシステムは、1つまたは複数のスイッチを含み、各スイッチは、開位置と閉位置の間で変化する。スイッチの開位置は、スイッチに結合されたノードからノードアセンブリサーバ108を切り離す。スイッチの閉位置は、スイッチに結合されたノードにノードアセンブリサーバ108を結合する。
【0044】
コンピュータネットワークは、本明細書で使用される場合、クライアントデバイスとサーバとの間で、または、クライアントデバイスとノードとの間で、または、複数のクライアントデバイス間で等、データを転送して、分散型ゲームエンジン102の動作を促進するのに使用される。コンピュータネットワークの例は、インターネット等の広域ネットワーク(WAN)、または、インターネット等のローカルエリアネットワーク(LAM)、または、これらの組み合わせを含む。
【0045】
分散型ゲームエンジン102は、例えば、ゲームコンピュータプログラム、VRシーンを生成するコンピュータプログラム、ARシーンを生成するコンピュータプログラム等のゲームコードと、例えば、物理コード、レンダリングコード等と他のコードとを含む。これについては、VRシーンまたはARシーンの生成に関連して以下にさらに記載する。例として、分散型ゲームエンジン102の一部分は、ノード1によって記憶、実行され、分散型ゲームエンジン102の他の部分は、ノード2によって記憶、実行され、分散型ゲームエンジン102の残りの部分は、ノード3によって記憶、実行される。
【0046】
クライアントデバイス104Aは、ゲーム要求202を生成し、コンピュータネットワーク112を介してクラウドゲームサーバ110にゲーム要求202を送信する。クラウドゲームサーバ110は、ゲーム要求202を生成するクライアントデバイス104Aのユーザ1によってアクセスされるユーザアカウントが分散型ゲームエンジン102へのアクセス権を有するかどうかを、ゲーム要求202に基づいて判定する。クライアントデバイス104Aのユーザ1は、例えば、クライアントデバイス104Aのハンドヘルドコントローラ、カメラ等の入力装置、または、外部カメラを介して、例えば、ユーザ名、パスワード等のログイン情報を提供して、ユーザアカウントにアクセスする。ログイン情報がクラウドゲームサーバ110によって認証されると、クライアントデバイス104Aのユーザ1にユーザアカウントへのアクセスが提供される。ユーザアカウントが分散型ゲームエンジン102にアクセス権を有すると決定されると、クラウドゲームサーバ110は、分散型ゲームエンジン102の実行を有効にするためにノードアセンブリサーバ108に信号を送信する。
【0047】
一実施形態においては、ログイン情報の認証に加えて、分散型ゲームエンジン102の実行のためにクライアントデバイス104Aのノードアセンブリサーバ108への結合を可能にする前に行われる追加の動作がある。例えば、コンピュータネットワーク112に結合されたネットワークテストサーバが、分散型ゲームエンジン102の実行を有効にするためにクラウドゲームサーバ110からの信号を受信し、複数のデータセンタへの帯域幅pingを実行する。テストの結果は、ネットワークテストサーバによってクラウドリソースマネージャサーバに提供される。クラウドリソースマネージャは、コンピュータネットワーク112に結合される。クラウドリソースマネージャは、クライアントデバイス104Aをどのデータセンタに接続するかを決定する。この決定は、テスト結果と、十分な数のノードの利用可能性、ゲームがどのデータセンタに記憶されているか等の他の情報とに基づく。クラウドアセンブリは、ノード1、2、3を有するデータセンタを選択し、信号をノードアセンブリサーバ108に送信して、ノード1、2、3の1つまたは複数を選択する。
【0048】
ノードアセンブリサーバ108は、クラウドゲームサーバ110またはクラウドアセンブリサーバからの信号を受信すると、スイッチシステム106を介して分散型ゲームエンジン102を実行するノード1、2、3の1つまたは複数を選択して、ノード1、2、3の1つまたは複数を開始する。例えば、ノードアセンブリサーバ108は、スイッチシステム106の制御入力部に信号を送信して、ノード1、2に結合する。制御入力部で信号を受信すると、スイッチシステム106は、スイッチの位置の2つを閉じて、ノードアセンブリサーバ108をノード1、2に接続し、スイッチの位置の1つを開いて、ノードアセンブリサーバ108とノード3との接続を切る。分散型ゲームエンジン102を実行して、ノード1、2、3の1つまたは複数からコンピュータネットワーク112を介してクライアントデバイス104A、104B、104Cの1つまたは複数に、符号化されたフレーム等のデータを転送する。
【0049】
システム100は、図1に示すノード以外の数のノードを含むことに注意されたい。例えば、システム100は、50のノード、25のノード、または、5つのノードを含み、それらのノード間にゲームエンジン102が分散される。
【0050】
図2は、ノードに関する詳細を示すシステム200の実施形態の図である。ノード1は、中央処理装置(CPU)202A、メモリデバイス204A、グラフィック処理装置(GPU)206A、ネットワーク通信デバイス208A、及び、内部通信デバイス210Aを含む。同様に、ノード2は、CPU202B、メモリデバイス204B、GPU206B、ネットワーク通信デバイス208B、及び、内部通信デバイス210Bを含む。
【0051】
ノードのCPUは、本明細書で使用される場合、ノードアセンブリサーバ108から、または、クライアントデバイス104A~104Cの1つまたは複数から受信され、CPUに結合されたメモリシステム内に記憶されたデータを処理、例えば、分析、検査等するために使用される。CPUの例は、プロセッサ、特定用途向け集積回路(ASIC)、及び、プログラム可能論理回路(PLD)を含む。
【0052】
メモリデバイスは、そこからデータを読み出す、または、そこにデータを書き込むためのデバイスである。メモリデバイスの例は、リードオンリメモリ(ROM)デバイス、もしくは、ランダムアクセスメモリ(RAM)デバイス、または、これらの組み合わせを含む。例を挙げて説明すると、メモリデバイスは、フラッシュメモリ、または、レイド(RAID:redundant array of independent disks)を含む。
【0053】
GPUは、本明細書で使用される場合、レンダリングコンピュータプログラムを実行して、ARシーンまたはVRシーンのテクスチャ及びライティング情報を含むビデオフレームを生成する。GPUの例は、プロセッサ、ASIC、及び、PLDを含む。一実施形態においては、「ビデオフレーム」及び「画像フレーム」という語は、本明細書では交換可能に使用される。
【0054】
内部通信デバイスは、1つのノードと他のノードとの間のデータ通信に使用される。内部通信デバイスは、例えば、直接メモリアクセス(DMA)プロトコル、リモートDMA(RDMA)プロトコル、RoCE(RDMA over converged Ethernet(登録商標))、インフィニバンド、イーサネット(登録商標)プロトコル、カスタマイズされたプロトコル、シリアル転送プロトコル、パラレル転送プロトコル、ユニバーサルシリアルバス(USB)プロトコル、無線プロトコル、ブルートゥース(登録商標)プロトコル、有線プロトコル、ユニバーサルデータグラムプロトコル(UDP)、UDP/インターネットプロトコル、伝送制御プロトコル(TCP)/IPプロトコル、イーサネット(登録商標)・オーバーTCP/IP等の内部通信プロトコルを適用して、2つのノード間でデータを通信する。DMAの例として、PCI Express不透明スイッチチップ、RDMAチップ、または、RoCE(RDMA over converged Ethernet(登録商標))チップ、または、インフィニバンド・チップ等の、ノードの内部通信チップが、PCIe(peripheral component interconnect-express)通信バスを介して通信し、1つまたは複数の他のノードのメモリデバイスに直接書き込み、メモリデバイスから読み出す。さらに、PCIe等の通信バスにおいては、GPU及び他のデバイス等の周辺機器は、各周辺機器がバス上に割り当てられたメモリアドレス空間を有するので、メモリベースである。例を挙げて説明すると、1つのノードのGPUは、内部通信プロトコルを適用して、別のノードのGPUのレジスタまたはバッファに書き込みまたは読み出しを行う。このように、ノードは、共有メールボックスレジスタを通して他のノードと通信する。ノードのCPUで実行しているアプリケーションにおいて、他のノードがそのノードから読み出し、または、そのノードに書き込みを行う時、割り込みがある。他のノードは、ノードから読み出し、または、ノードに書き込みを行う前に、割り込み信号を送信する。
【0055】
内部通信デバイスの例は、プロセッサ、ASIC、及び、PLDを含む。例を挙げて説明すると、内部通信デバイスは、PCI Express不透明スイッチチップ、または、RDMAチップ、または、RoCE(RDMA over converged Ethernet(登録商標))チップ、または、インフィニバンド・チップである。他の説明例としては、内部通信デバイスは、ネットワークインタフェースコントローラもしくはネットワークインタフェースカード(NIC)、データのシリアル転送を用いて通信するデバイス、データのパラレル転送を用いて通信するデバイス、または、ユニバーサルシリアルバス(USB)プロトコルを用いて通信するデバイスである。
【0056】
PCI-Express及びRDMA技術は、CPUによって実行されるオペレーティングシステムのオーバーヘッドを生じるプロトコル層を無くすので、イーサネット(登録商標)プロトコルまたはTCPプロトコルまたはUDPプロトコルと比較して、待ち時間を大幅に低減し、より高い性能を提供することに注意されたい。DMAプロトコルを実行するDMAエンジン等、ノード内で実行されるアプリケーションは、他のノード内のデータブロックへのアクセスを許可されている場合、ノード内のオペレーティングシステムを迂回して、他のノードのメモリから直接、読み出し、他のノードのメモリに直接、書き込む。イーサネット(登録商標)プロトコルまたはTCPプロトコルまたはUDPプロトコル等のネットワークプロトコルは無く、ノードのアプリケーションが、メモリ及びメモリの内部構造をどのように組織するかを決定する。ノードの内部通信チップは、DMAエンジンを有し、ノードと他のノードとの間のメモリ転送動作が呼び出される場合、内部通信チップが、DMAエンジンを実行して、ノードのCPUの関与無しに、他のノードからデータを読み出し、他のノードにデータを書き込む。一実施形態においては、内部通信チップは、複数のノードを結合するスイッチファブリック、単一のラック、または、複数のラックと共に使用されることに注意されたい。
【0057】
ネットワーク通信デバイスを用いて、ノードとクライアントデバイスの間を、コンピュータネットワーク112を介してデータパケットを転送する。例えば、ネットワーク通信デバイスは、例えば、TCP/IP、UDP/IP等の外部通信プロトコルを適用して、データパケットを受信及び送信する。ネットワーク通信デバイスの例は、プロセッサ、ASIC、及び、PLDを含む。例を挙げて説明すると、ネットワーク通信デバイスは、ネットワークインタフェースコントローラまたはNICである。
【0058】
CPU202A、メモリデバイス204A、GPU206A、ネットワーク通信デバイス208A、及び、内部通信デバイス210Aは、例えば、バスを介して互いに結合される。同様に、CPU202B、メモリデバイス204B、GPU206B、ネットワーク通信デバイス208B、及び、内部通信デバイス210Bは、互いに結合される。
【0059】
ノードアセンブリサーバ108は、ノードとクライアントの間のサービス品質(QoS)、ノードの利用可能性、クライアントにデータを転送し、クライアントからデータを受信するためのノードの容量、ノードとクライアントの間のコンピュータネットワーク112の帯域幅容量、ユーザアカウントに割り当てられたサブスクリプションレベル、または、これらの組み合わせ等の基準に基づいて、ノード1、2、3の2つ以上を割り当てる。
【0060】
ある実施形態においては、1つのメモリデバイスの代わりに、複数のメモリデバイスがノード内で使用されて、メモリデバイス内に記憶されるデータを記憶する。一実施形態においては、CPUが行う機能を行うために、1つのCPUの代わりに、複数のCPUがノード内で使用される。ある実施形態においては、GPUが行う機能を行うために、1つのGPUの代わりに、複数のGPUがノード内で使用される。
【0061】
図3Aは、ノード1とノード2の間のゲームエンジン102の分散を示すシステム300の実施形態の図である。ノードアセンブリサーバ108は、ゲームエンジンを分散するためにノード1、2の選択を決定する。ノード1、2の選択を決定すると、ノードアセンブリサーバ108は、制御信号をスイッチシステム106に送信して、ノードアセンブリサーバ108をノード1のCPU202Aとノード2のCPU202Bに結合する。一実施形態においては、クラウドリソースマネージャが、ノードアセンブリサーバ108の代わりに、ゲームエンジンを分散するためにノード1、2の選択を決定し、制御信号をスイッチシステム106に送信して、ノード1のCPU202Aとノード2のCPU202Bとにノードアセンブリサーバ108を結合する。一実施形態においては、ノードアセンブリサーバ108によって行われるとして本明細書に記載する機能は、クラウドリソースマネージャによって行われる。ある実施形態においては、クラウドリソースマネージャは、その機能をノードアセンブリサーバ108が行うように委託する。
【0062】
さらに、ノードアセンブリサーバ108は、内部通信デバイス210Aと内部通信デバイス210Bの間でのデータ通信に使用される内部通信プロトコルを識別する情報を送信する。例えば、ノードアセンブリサーバ108は、内部通信デバイス210A及び内部通信デバイス210Bにスイッチシステム106を介してソフトウェア開発キット(SDK)を送信する。SDKは、プログラマであるユーザによって使用されて、内部通信デバイスを、内部通信プロトコルを用いて他の内部通信デバイスと通信するようにプログラムする。別の例としては、ノードアセンブリサーバ108は、内部通信デバイス210A及び内部通信デバイス210Bにスイッチシステム106を介して内部通信プロトコルを送信する。内部通信デバイス210A、210Bは、内部通信プロトコルを適用して、互いに通信する。
【0063】
さらに、ノードアセンブリサーバ108は、ノード1、2のどちらがゲームを実行してVRシーンまたはARシーンを生成するゲームエンジンを有するかを、実行されるゲームを識別する信号から決定する。ゲームを識別する信号は、クラウドゲームサーバ110から受信される。例えば、ノードアセンブリサーバ108は、ゲームエンジンAがノード1内に記憶されることを、ゲームを識別する信号から識別する。一実施形態においては、ノードアセンブリサーバ108は、スイッチシステム106を介して要求信号をノード1、2に送信して、ノード1、2どちらがゲームエンジンAを有しているかを決定する。
【0064】
ノードのいずれもゲームエンジンAを有していないと決定される一実施形態においては、ノードアセンブリサーバ108は、ゲームエンジンAを受信するために、ゲームを識別するコンピュータネットワーク112に結合された記憶サーバに信号を送信する。ゲームエンジンAは、記憶サーバに記憶される。ノードアセンブリサーバ108は、記憶サーバと通信して、ゲームエンジンAをノード1及び/または2に送信する。
【0065】
ノード1がゲームエンジンAを有する時、ノードアセンブリサーバ108は、スイッチシステム106を介してCPU202Aにコマンド信号を送信して、メモリデバイス204AからゲームエンジンAをノード2に分散する。例えば、ノードアセンブリサーバ108は、コマンド信号をCPU202Aに送信して、ゲームエンジンAのコピーをノード2に転送する。
【0066】
コマンド信号を受信すると、CPU202Aは、メモリデバイス204AからゲームエンジンAにアクセスして、ゲームエンジンAを内部通信デバイス210Aに送信する。内部通信デバイス210Aは、内部通信プロトコルをゲームエンジンAに適用して、例えば、フレーム、パケット等の転送単位を生成し、転送単位を内部通信デバイス210Bに送信する。内部通信デバイス210Bは、ゲームエンジンAを抽出するために受信された転送単位に内部通信プロトコルを適用し、ゲームエンジンAを記憶するためにメモリデバイス204Bに送信する。
【0067】
一実施形態においては、CPU202Aは、ノード1からノード2へのゲームエンジンAの転送には、何の役割も果たさない、または、非常に限られた役割しか果たさない。例えば、ノード2の内部通信デバイス210Bは、ノード1の内部通信デバイス210AからゲームエンジンAのメモリ位置を取得した後、ノード1のメモリデバイス204Aからノード2のメモリデバイス204BにゲームエンジンAをコピーする。メモリデバイス204A内のゲームエンジンAの位置は、CPU202Aによって、または、内部通信デバイス210Aによって、ノード2の内部通信デバイス210Bに、前もって報告されている。例えば、メモリデバイス204A内のゲームエンジンAの位置は、CPU202Aによって、または、内部通信デバイス210Aによって、ノードアセンブリサーバ108に前もって報告されている。別の例として、メモリデバイス204A内のゲームエンジンAの位置は、CPU202Aによって、または、内部通信デバイス210Aによって、ノード2の内部通信デバイス210Bに前もって報告されている。
【0068】
図3Bは、クラウドゲームサーバ110の実施形態の図である。クラウドゲームサーバ110は、プロセッサ310、メモリデバイス312、及び、通信サーバ314を含む。プロセッサの例は、CPU、ASIC、及び、PLDを含む。通信サーバ314の例は、ネットワークインタフェースコントローラ、NIC、データのシリアル転送を用いて通信するデバイス、データのパラレル転送を用いて通信するデバイス、及び、USBプロトコルを用いて通信するデバイスを含む。例を挙げて説明すると、通信サーバ314は、TCP/IP等のネットワーク通信プロトコルを適用する。
【0069】
メモリデバイス312は、複数のユーザアカウント1~nの識別子を記憶する。ここで、nは1より大きい整数である。例えば、メモリデバイス310は、ユーザアカウント1のユーザ識別子(ID)1と、ユーザアカウント2のユーザID2とを記憶する。ユーザIDは、1つまたは複数の英数字、もしくは、記号、または、これらの組み合わせを含み、プロセッサ310によってユーザアカウントに割り当てられる。ユーザIDの例は、ユーザ名、パスワード、または、これらの組み合わせを含む。ユーザIDは、あるユーザアカウントにプロセッサ310が割り当てるユーザIDは、プロセッサ310によっていかなる他のユーザアカウントにも割り当てられないという点で、一意である。プロセッサ310は、クライアントデバイス及びコンピュータネットワーク112を介してユーザから受信したユーザIDがいずれかの他のユーザアカウントに割り当てられているかどうかを決定する。ユーザIDが他のユーザアカウントに割り当てられていると決定すると、プロセッサ310は、クライアントデバイスを介してユーザに、他のユーザIDを提供するように指示する。
【0070】
メモリデバイス312は、ゲーム1~Nの複数のゲームタイトルをさらに記憶する。ここで、Nは、1より大きい整数である。各ゲームタイトルは、異なるゲームを識別する。例えば、ゲームタイトルは、あるゲームを記述する記述を含み、その記述は、他のゲームの記述とは異なる。各ゲームは、異なるゲームエンジンを用いて実行される。例えば、ゲーム1は、分散型ゲームエンジン102を実行することによって実行され、ゲーム2は、他の分散型ゲームエンジンを実行することによって実行される。
【0071】
通信サーバ314は、図2に示すように、クライアントデバイス104Aからゲーム要求202を受信し、ゲーム要求をプロセッサ310に送信する。ゲーム要求202は、ゲーム1をプレイする要求を含む。ユーザ1がクライアントデバイス104Aを介してユーザアカウント1にログイン後、ゲーム要求202が、ユーザアカウント1を介して受信される。ユーザ1は、クライアントデバイス104Aを介してユーザID1を提供することによって、ユーザアカウント1にログインする。ユーザID1は、クライアントデバイス104Aからコンピュータネットワーク112及び通信サーバ314を介してプロセッサ310に通信される。プロセッサ310は、ユーザID1が本物であるかどうか、例えば、メモリデバイス312に記憶されたユーザIDと一致するかどうかを判定し、一致すると判定すると、プロセッサ310は、クライアントデバイス104Aがユーザアカウント1にログインすることを許可する。
【0072】
ゲーム要求202を受信すると、プロセッサ310は、ユーザアカウント1がゲーム1にアクセスする権利を有するかどうかを判定する。権利付与は、メモリデバイス312に記憶され、ユーザアカウント1を介して購入されたゲーム、ユーザアカウント1内に記憶されたユーザ1のデモグラフィック、ユーザアカウント1を介してユーザ1が獲得したゲームポイント数等、様々なファクタに基づいて提供される。ユーザアカウントがゲーム1にアクセスする権利を有すると判定すると、プロセッサ310は、図2に示すように、ユーザアカウント1はゲーム1をプレイするためにアクセスを許可されるという命令を、通信サーバ314を介してノードアセンブリサーバ108に送信する。
【0073】
一実施形態においては、プロセッサ310によって行われるとして本明細書に記載される機能は、代わりに、複数のプロセッサによって行われる。ある実施形態においては、メモリデバイス312内に記憶されたデータは、代わりに、複数のメモリデバイス内に記憶される。
【0074】
図3Cは、ノードアセンブリサーバ108の実施形態の図である。ノードアセンブリサーバ108は、プロセッサ350、メモリデバイス352、及び、通信デバイス354を含む。通信デバイス354の例は、ネットワークインタフェースコントローラ、NIC、データのシリアル転送を用いて通信するデバイス、データのパラレル転送を用いて通信するデバイス、及び、USBプロトコルを用いて通信するデバイスを含む。
【0075】
メモリデバイス352は、ユーザアカウント1~n、複数のサブスクリプションレベル1、2、3、及び、複数のノード間の対応、例えば、マッピング、リスト、1対1の関係等を記憶する。例えば、メモリデバイス352は、ユーザアカウント1がサブスクリプションレベル1を割り当てられるというエントリを有し、サブスクリプションレベル1は、ユーザアカウント1を介してアクセスを要求されるゲームをプレイするために2つのノードの使用を有効にするように規定される。別の例として、メモリデバイス352は、ユーザアカウント2がサブスクリプションレベル3を割り当てられるという別のエントリを有し、サブスクリプションレベル3は、ユーザアカウント2を介してアクセスを要求されるゲームをプレイするために4つのノードの使用を有効にすると規定される。
【0076】
ノードの数が多くなると、分散型ゲームエンジン102の実行に使用される処理能力は高くなる、例えばGPU及びCPUの数は多くなる。例えば、サブスクリプションレベル3は、4つのノードを使用して分散型ゲームエンジン102を実行することに対応し、サブスクリプションレベル1は、2つのノードを使用して、分散型ゲームエンジン102を実行することに対応する。各ノードが1つのGPU及び1つのCPUを有すると、サブスクリプションレベル3は、4つのノード、例えば、4つのGPUと4つのCPUに対応し、サブスクリプションレベル1は、2つのノード、例えば、2つのGPUと2つのCPUに対応する。サブスクリプションレベル3は、サブスクリプションレベル1と比較してより大きい処理能力を割り当てる。
【0077】
サブスクリプションレベルは、ユーザアカウントの種類に基づいて、ユーザアカウントに割り当てられる。例えば、ユーザアカウントが、例えば、周期的に、毎週、毎日等、定期的に、1つまたは複数のゲームのプレイに使用される時、ユーザアカウントは、不定期に1つまたは複数のゲームのプレイに使用されるユーザアカウントよりも高いサブスクリプションレベルを割り当てられる。別の例として、第1のユーザアカウントが、1つまたは複数のゲームのプレイに使用され、1つまたは複数のゲームにおいて、第2のユーザアカウントで購入されるよりも多数の視覚アイテムを購入する時、第1のユーザアカウントは、第2のユーザアカウントよりも高いサブスクリプションレベルを割り当てられる。さらに別の例として、1つまたは複数のゲームの定期的なプレイと、より多数の視覚アイテムの購入との両方が、より高いサブスクリプションレベルの割り当て決定のために監視される。
【0078】
メモリデバイス352は、ゲームのグラフィックスレベルと、ゲームのプレイを可能にするために分散型ゲームエンジンを実行するノードの数との対応、例えば、マッピング、リスト、1対1関係等をさらに記憶する。例えば、メモリデバイス352は、ゲームのグラフィックスレベルがAの時、ゲームをプレイするために分散型ゲームエンジンを実行するノードの数は4であることを示すエントリを含む。別の例として、メモリデバイス352は、ゲームのグラフィックスレベルがBの時、ゲームをプレイするために分散型ゲームエンジンを実行するノードの数は3であることを示すエントリを含む。さらに別の例として、メモリデバイス352は、ゲームのグラフィックスレベルがCの時、ゲームをプレイするために分散型ゲームエンジンを実行するノードの数は2であることを示すエントリを含む。
【0079】
グラフィックスレベルは、ゲームの画像の解像度、ゲームフレーム生成に使用される色の数、フレーム生成に使用される強度レベルの数、ゲームをプレイするためのフレームレート、ゲームの中で位置が変化する仮想アイテムの数、ゲーム内で静止したままの背景の量、または、これらの組み合わせ等の基準に基づいて、規定される。例として、ゲームをプレイするためのフレームで使用される、フレームレートの増加、または、解像度の増加、または、強度レベルの数の増加、または、仮想アイテムの数の増加、または、色の数の増加がある時、分散型ゲームエンジンの実行に使用されるノードの数は増加する。例を挙げて説明すると、デバイス間のストリーミングセッションのハンドオーバの場合、ノードの数は増加する。さらに例を挙げて説明すると、ユーザが、自分のスマートフォンまたはタブレットでゲームをしている。ユーザは、家に着くと、自分のPlayStation(商標)ゲームコンソールにゲームを転送したい。スマートフォンまたはタブレットは、ゲームを低解像度及び低フレームレートで表示しているが、PlayStation(商標)ゲームコンソールは、4Kまたは8Kのテレビと組み合わせて、より高い解像度とより高いフレームレートとを適用する。より高い解像度とより高いフレームレートとをサポートするために、ノードの数は増加する。このようなハンドオーバは、2016年4月28日出願の米国特許出願番号第15/141,799号「Cloud Gaming Device Handover」に記載され、その全体を参照により本明細書に組み込む。別の例として、ゲームをプレイするためのフレームに使用される、フレームレートの減少、または、解像度の減少、または、強度レベルの数の減少、または、仮想アイテムの数の減少、または、色の数の減少がある時、分散型ゲームエンジンの実行に使用されるノードの数は減少する。
【0080】
通信デバイス354は、クラウドゲームサーバ110の通信サーバ314からゲーム1へのアクセスを許可される命令を受信し、その命令をプロセッサ350に送信する。命令は、ユーザアカウント1に割り当てられたユーザID1を含む。プロセッサ350は、メモリデバイス352にアクセスし、ユーザID1に基づいて、ユーザアカウント1に割り当てられた対応するサブスクリプションレベルを判定する。例えば、プロセッサ350は、ユーザアカウント1はサブスクリプションレベル1を割り当てられていることと、2つのノードが、分散型ゲームエンジン202を実行するためにユーザアカウント1に割り当てられていることを判定する。
【0081】
プロセッサ350は、通信デバイス354を介して、情報、例えば、SDKを含むライブラリをノード1に送信して、または、スイッチシステム106を介して、ノード1、2が、内部通信プロトコルを用いて互いに通信するのを可能にして、ゲーム1のプレイを促進する。ある実施形態においては、プロセッサ350は、通信デバイス354を介して、情報をノード1、2の両方に送信し、コンピュータネットワーク112を介して、ノード1、2が、内部通信プロトコルを用いて互いに通信するのを可能にして、ゲーム1のプレイを促進する。
【0082】
一実施形態においては、異なるグラフィックスレベルは、異なるゲームをプレイするためである。例えば、グラフィックスレベルCは、ゲーム1をプレイするためであり、グラフィックスレベルBは、ゲーム2をプレイするためである。
【0083】
図3Dは、ゲームエンジンの様々な部分を示す図である。ゲームエンジンAは、ゲーム1をプレイするためのゲームコードA、ゲーム1の状態を復元するための保存データA、ゲーム1を表示するためのレンダリングコードA、ゲーム1を実行する物理動作を行うための物理エンジンA、及び、ゲーム1をプレイするためのオーディオデータを適用するオーディオエンジンAを含む。同様に、ゲームエンジンBは、ゲーム2をプレイするためのゲームコードB、ゲーム2の状態を復元するための保存データB、ゲーム2を表示するためのレンダリングコードB、ゲーム2を実行する物理動作を行うための物理エンジンB、及び、ゲーム2をプレイするためのオーディオデータを適用するオーディオエンジンBを含む。
【0084】
ゲームコードは、本明細書で使用される場合、コンピュータネットワーク112を介してクライアントデバイスから受信したユーザ入力に基づいて、ゲームの次の状態を決定するために実行されるコンピュータプログラムである。ユーザ入力は、ハンドヘルドコントローラでユーザが行った選択、または、クライアントデバイスのマイクロフォンが捕捉したオーディオデータ、または、例えば、部屋、倉庫、階床、ロケ地、公園等のユーザが居る実世界環境に置かれた、例えば、デプスカメラ、赤外線カメラ、デジタルカメラ等のカメラによって撮影された画像データ、または、これらの組み合わせである。カメラは、例えば、1つまたは複数の手の動き、1つまたは複数の頭の動き、1つまたは複数の脚の動き等、ユーザが行ったジェスチャを撮影して、画像データを生成する。ゲームの状態は、例えば、ゲームを実行すると生成される仮想シーンの全ての部分の位置、向き、大きさ、形等の特徴を規定する。仮想シーンの部分は、仮想オブジェクトまたは背景を含む。例として、仮想オブジェクトは、1つのビデオフレームから他のビデオフレームで移動し、背景は、1つのビデオフレームから他のビデオフレームで静止したままである。別の例として、仮想オブジェクトは、1つのビデオシーンから他のビデオシーンで移動し、背景は、1つのビデオシーンから他のビデオシーンで静止したままである。例として、仮想オブジェクトは、1つのビデオフレームから他のビデオフレームで移動し、背景は、1つのビデオフレームから他のビデオフレームで静止したままであるが、所定の数のビデオフレームの後、移動する。仮想オブジェクトの例は、車両、建物、ユーザのアバタ、キャラクタ、超自然的ヒーロー、武器、動物等を含む。背景の例は、砂漠、山、海、木、建物、都市、聴衆等を含む。
【0085】
保存データは、本明細書で使用される場合、ユーザが、自分のユーザアカウントからログアウトした後、そのユーザアカウントにログインする時、アクセスされるゲームの状態データである。例えば、ゲームセッション中に、ユーザは、自分のユーザアカウントから、あるゲーム状態でログアウトする。ユーザが、そのユーザアカウントに再度ログインする時、クライアントデバイスは、例えば、同じ仮想現実シーン等、ユーザがユーザアカウントからログアウトした時に表示されていたゲーム状態を表示する。
【0086】
レンダリングコードは、本明細書で使用される場合、仮想シーンの1つまたは複数の部分の二次元(2D)または三次元(3D)モデルから画像を生成するために使用されるコンピュータプログラムである。例えば、レンダリングコードは、仮想シーンの1つまたは複数の部分に適用されるテクスチャと光の強度を規定する。別の例として、レンダリングコードは、仮想シーンの1つまたは複数の部分に適用する色、テクスチャ、陰影、及び、光の強度を規定する。
【0087】
物理エンジンは、本明細書で使用される場合、例えば、仮想現実シーン、拡張現実シーン等の仮想シーンの異なる部分間、及び、異なる仮想シーン間の物理的関係を決定するように実行されるコンピュータプログラムである。物理的関係は、重力の法則、動きの法則、摩擦の法則等、物理学の法則に基づいて決定される。
【0088】
オーディオエンジンは、本明細書で使用される場合、ゲームの対応する仮想シーンを管理するオーディオデータを決定、提供するコンピュータプログラムである。例えば、仮想シーンのある部分が音を出す時、オーディオエンジンは、音と、音の他の変数、例えば、ピッチ、トーン、振幅等とを出力するためのオーディオデータを決定し、オーディオデータを仮想シーンのその部分とリンクさせる。
【0089】
図4Aは、ビデオフレーム情報をノード2からノード1に送信する図1の分散型ゲームエンジン102の実行を示すシステム400の実施形態の図である。システム400は、ノード1、2、コンピュータネットワーク112、及び、クライアントデバイス104A、104Bを含む。ノード1は、オーディオエンコーダ402A及びビデオエンコーダ404Aを含む。しかしながら、ノード2は、オーディオエンコーダも、ビデオエンコーダも、GPUも含まない。
【0090】
オーディオエンコーダは、本明細書で使用される場合、オーディオファイルフォーマットまたはストリーミングオーディオフォーマットに従って、オーディオデータを圧縮または解凍する、例えば、集積回路、プロセッサ等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュール、または、これらの組み合わせである。
【0091】
ビデオエンコーダは、本明細書で使用される場合、例えば、H.264、H.265/MPEG-H、H.263/MPEG-4、H.262/MPEG-2、カスタマイズされたプロトコル等、ビデオファイルフォーマットまたはストリーミングビデオフォーマットに従って、ビデオデータを圧縮または解凍する、例えば、集積回路、プロセッサ等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュール、または、これらの組み合わせである。
【0092】
クライアントデバイス104Aは、オーディオ/ビデオ(A/V)ソータ418、オーディオデコーダ420、ビデオデコーダ422、ディスプレイデバイス424、通信デバイス426、及び、オーディオ出力デバイス430を含む。A/Vソータは、オーディオデータとビデオデータを区別する、例えば、集積回路、プロセッサ等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュールである。さらに、オーディオデコーダは、オーディオファイルフォーマットまたはストリーミングオーディオフォーマットに従って、符号化されたオーディオフレームを、復号、例えば、解凍して、オーディオフレームを出力する。オーディオデコーダは、オーディオフレームの符号化も行う。同様に、ビデオデコーダは、ビデオファイルフォーマットまたはストリーミングビデオフォーマットに従って、符号化されたビデオフレームを復号、例えば、解凍して、ビデオフレームを出力する。さらに、ビデオデコーダは、ビデオフレームの符号化も行う。ディスプレイデバイスの例は、ヘッドマウントディスプレイ(HMD)、または、液晶ディスプレイ(LCD)デバイス、または、発光ダイオード(LED)ディスプレイデバイス、または、テレビのディスプレイ画面、または、モニタ、または、タブレットのディスプレイ画面、または、スマートフォンのディスプレイ画面を含む。通信デバイスの例は、ネットワークインタフェースコントローラまたはNICを含む。オーディオ出力部の例は、デジタルオーディオデータをアナログオーディオデータに変換するデジタル-アナログコンバータと、増幅器と、1つまたは複数のスピーカとを含む。増幅器の入力部は、デジタル-アナログコンバータに結合され、増幅器の出力部は、1つまたは複数のスピーカに結合される。
【0093】
CPU202Aは、ゲームエンジンAを実行して、ビデオフレーム情報406Aを生成する。例えば、CPU202Aは、ゲームコードAを実行し、CPU202A及び/またはGPU206Aは、物理エンジンAを実行して、ゲーム1の1つまたは複数の仮想シーンの位置、大きさ、形、及び、向きを生成する。ビデオフレーム情報の例は、本明細書で使用される場合、1つまたは複数の仮想シーンの位置、大きさ、形、向き、または、これらの組み合わせを含む。
【0094】
同様に、CPU202Bは、ゲームエンジンAを実行して、ビデオフレーム情報406Bを生成する。例えば、CPU202Bは、ゲームコードA及び物理エンジンAを実行して、ゲーム1の1つまたは複数の仮想シーンの位置、大きさ、形、及び、向きを生成する。さらに、オーディオフレーム412Bが、1つまたは複数のプロセッサ、例えば、ノード2のCPU202Bによって生成される。オーディオフレーム412Bは、オーディオデータを含み、オーディオデータは、ビデオフレーム情報406Bを有する1つまたは複数の仮想シーンの表示と同時に音を出すためのオーディオデータという点で、ビデオフレーム情報406Bに関連付けられている。
【0095】
ノード2の内部通信デバイス210Bは、内部通信プロトコルをビデオフレーム情報406B及びオーディオフレーム412Bに適用して、例えば、パケット、転送単位等のパッケージ化された情報414を生成し、例えば、内部通信プロトコルでパッケージ化されたデータの転送を可能にするケーブル等、通信リンク416を介して、パッケージ化された情報414を内部通信デバイス210Aに送信する。リンク416の説明例は、PCIe通信バスである。
【0096】
内部通信デバイス210Aは、パッケージ化された情報414を受信し、パッケージ化された情報414に内部通信プロトコルを適用して、例えば、転送単位を非パケット化して、パッケージ化された情報414からビデオフレーム情報406B及びオーディオフレーム412Bを抽出する。ビデオフレーム情報406B及びオーディオフレーム412Bは、メモリデバイス204Aに記憶される。
【0097】
GPU206Aは、メモリデバイス204Aからビデオフレーム情報406A及びビデオフレーム情報406Bにアクセスし、ビデオフレーム情報406A及びビデオフレーム情報406BにレンダリングコードAを適用して、複数のビデオフレーム408(A+B)を生成する。複数のビデオフレーム408(A+B)は、ビデオ情報406Aから生成されたビデオフレーム408Aとビデオ情報406Bから生成されたビデオフレーム408Bとを含む。例として、ビデオフレームは、1つまたは複数の仮想シーンのライティング、強度、色、テクスチャ、陰影、または、これらの組み合わせを含む。
【0098】
さらに、複数のオーディオフレーム410Aが、例えば、ノード1のCPU202A等の1つまたは複数のプロセッサによって生成される。オーディオフレーム410Aは、ビデオフレーム408A内のシーンのある部分にオーディオデータを提供するという点で、ビデオフレーム408Aと関連付けられる。例えば、オーディオフレーム410Aは、仮想オブジェクトが発する音のオーディオデータを含む。別の例として、オーディオフレーム410Aは、1つまたは複数の仮想シーン内の背景が発する音を生成するオーディオデータを含む。
【0099】
オーディオエンコーダ402Aは、オーディオフレーム410A及びオーディオフレーム412Bを符号化して、符号化されたオーディオフレームを生成する。同様に、ビデオエンコーダ404Aは、ビデオフレーム408(A+B)を符号化して、符号化されたビデオフレームを生成する。ネットワーク通信デバイス208Aは、符号化されたオーディオフレーム及び符号化されたビデオフレームに外部通信プロトコルを適用して、複数のフレームパケットを生成し、そのフレームパケットを、コンピュータネットワーク112を介してクライアントデバイス104Aに送信する。
【0100】
通信デバイス426は、フレームパケットを受信し、外部通信プロトコルを適用することによってフレームパケットを非パケット化して、符号化されたビデオフレーム及び符号化されたオーディオフレームを出力する。A/Vソータ418は、符号化されたビデオフレームと符号化されたオーディオフレームを区別し、符号化されたビデオフレームをビデオデコーダ422に、符号化されたオーディオフレームをオーディオデコーダ420に送信する。ビデオデコーダ422は、符号化されたビデオフレームを復号して、ビデオフレーム408(A+B)を出力する。さらに、オーディオデコーダ420は、符号化されたオーディオフレームを復号して、オーディオフレーム410A、412Bを出力する。
【0101】
ディスプレイデバイス424は、ビデオフレーム408(A+B)から1つまたは複数の仮想シーンを表示する。例えば、ディスプレイデバイス424は、ディスプレイデバイス424の色成分及び光強度成分を制御して、仮想シーンの全ての部分の、位置、向き、色、テクスチャ、光強度、陰影、または、これらの組み合わせを含む仮想シーンを生成する。さらに、オーディオ出力デバイス430は、オーディオフレーム410A、412Bから音を出力する。例えば、オーディオ出力部430のアナログ-デジタルコンバータは、オーディオフレーム410A、412Bをデジタル形式からアナログ形式に変換して、アナログオーディオデータを生成する。アナログオーディオデータは、オーディオ出力デバイス430の増幅器によって増幅されて、増幅されたオーディオデータを生成する。増幅されたオーディオデータは、オーディオ出力デバイス430の1つまたは複数のスピーカによって電気エネルギーから音エネルギーに変換される。
【0102】
ある実施形態においては、ノード1は、ビデオフレーム情報406B及びオーディオフレーム412Bを生成するタスクをノード2に委託するマスタとして働く。
【0103】
一実施形態においては、マルチプレイヤゲームにおいては、図4Aに記載され、ネットワーク通信デバイス208Aから通信されるフレームパケットは、複数のクライアントデバイス、例えば、クライアントデバイス104A、104B等にブロードキャストされる。例えば、フレームパケットは、ゲームプレイのために、ネットワーク通信デバイス208Aからコンピュータネットワーク112を介してクライアントデバイスデバイス104A、104Bに送信される。このようなブロードキャストは、フレームパケット生成のための計算が、ノード1及びノード2で一度、実行され、フレームパケットが、ノード1から複数のクライアントデバイスにブロードキャストされるので、節電になる。
【0104】
ある実施形態においては、オーディオデータ及びビデオデータを含み、図4Aに記載され、ネットワーク通信デバイス208Aから送信されるフレームパケットは、ゲームの観客に送信される。例えば、フレームパケットは、さらに観客が見るために、ネットワーク通信デバイス208Aからコンピュータネットワーク112を介して、Youtube(登録商標)(商標)もしくはTwitch(商標)等の観客サービス、または、eスポーツサービスをホストするサーバに送信される。
【0105】
一実施形態においては、ノード1は、オーディオデータをレンダリングして、オーディオ波を生成する集積回路等のオーディオレンダラを含む。オーディオ波は、次に、オーディオエンコーダ402Aによって符号化される。オーディオデータのレンダリングは、クライアントデバイス104Aの、ステレオ5.1またはステレオ7.1等のスピーカ設定に基づいて行われる。
【0106】
ノード1がオーディオレンダラを含まないある実施形態においては、オーディオデータは、オーディオエンコーダ402Aによって符号化され、ノード1からコンピュータネットワーク112を介してクライアントデバイス104Aにストリーミングされる。クライアントデバイス104Aは、オーディオデータをレンダリングしてオーディオ波を生成するオーディオレンダラを含む。例えば、クライアントデバイス104Aは、各仮想オブジェクトを空間に配置して、オーディオ波を計算することによって、オーディオ波をレンダリングする。計算は、ステレオ5.1またはステレオ7.1等のクライアントデバイス104Aのスピーカの数によって決まる。
【0107】
一実施形態においては、オーディオ波を生成するオーディオデータのレンダリングは、ノード2内で行われない。ノード2は、オーディオレンダラを含まない。つまり、ビデオフレーム情報406Bに関連付けられたオーディオデータは、ノード2から内部通信デバイス210B、210Aを介してノード1に送信され、オーディオ波のレンダリングは、ノード1のオーディオレンダラによって行われる。オーディオ波は、次に、オーディオエンコーダ402Aによって符号化される。
【0108】
図4Bは、ビデオフレームがノード2Aからノード1に送信される、図1の分散型ゲームエンジン102の別の実施形態を示すシステム450の実施形態の図である。システム450は、ノード1、ノード2A、コンピュータネットワーク112、及び、クライアントデバイス104A、104Bを含む。ノード2Aは、GPU206Bを含む以外は、図4Aのノード2と同じである。ノード2Aは、オーディオエンコーダもビデオエンコーダも含まない。
【0109】
GPU206Bは、レンダリングコードAを適用して、ビデオフレーム情報406Bから複数のビデオフレーム452Bを生成する。例えば、GPU206Bは、1つまたは複数の仮想シーンに適用する光強度、テクスチャ、陰影、及び、色を決定して、ビデオフレーム452Bを生成する。
【0110】
ノード2の内部通信デバイス210Bは、内部通信プロトコルをビデオフレーム452B及びオーディオフレーム412Bに適用して、例えば、パケット、転送単位等のパッケージ化された情報454を生成し、パッケージ化された情報454を、通信リンク416を介して内部通信デバイス210Aに送信する。一実施形態においては、オーディオデータに対する、サンプルレート変換、増幅、及び、オーディオフィルタリング等の他の操作は、オーディオフレーム412Bを生成する前に、ノード2内で行われる。オーディオデータは、ビデオフレーム452Bの表示と同時に出力される音に後に変換される。
【0111】
内部通信デバイス210Aは、パッケージ化された情報454を受信して、内部通信プロトコルをパッケージ化された情報454に適用し、例えば、転送単位等を非パケット化して、パッケージ化された情報452からビデオフレーム452B及びオーディオフレーム412Bを抽出する。ビデオフレーム情報406B及びオーディオフレーム412Bは、メモリデバイス204Aに記憶される。
【0112】
GPU206Aは、メモリデバイス204Aからビデオフレーム情報406Aにアクセスし、レンダリングコードAをビデオフレーム情報406Aに適用して、複数のビデオフレーム452Aを生成する。ビデオエンコーダ404Aは、ビデオフレーム452A及びビデオフレーム452Bを符号化して、符号化されたビデオフレームを生成する。オーディオエンコーダ402Aは、オーディオフレーム410A及びオーディオフレーム412Bを符号化し、符号化されたオーディオフレームを生成する。ネットワーク通信デバイス208Aは、外部通信プロトコルを符号化されたオーディオフレーム及び符号化されたビデオフレームに適用して、複数のフレームパケットを生成し、フレームパケットを、コンピュータネットワーク112を介してクライアントデバイス104Aに送信する。
【0113】
ある実施形態においては、ノード1は、ビデオフレーム452Bを生成するタスクをノード2Aに委託するマスタとして働く。
【0114】
一実施形態においては、マルチプレイヤゲームにおいて、ネットワーク通信デバイス208Aから送信された図4Bに記載のフレームパケットは、例えば、クライアントデバイス104A、104B等、複数のクライアントデバイスにブロードキャストされる。例えば、フレームパケットは、節電のため、ノード1及びノード2Aによって一度、生成され、ゲームプレイのためにコンピュータネットワーク112を介してネットワーク通信デバイス208Aからクライアントデバイス104A、104Bに送信される。フレームパケットは、ゲームエンジンAへのアクセスを許可された異なるクライアントデバイスのそれぞれに対して、再度、生成される必要はない。
【0115】
図5Aは、図1の分散型ゲームエンジン102のさらに別の実施形態を示すシステムの500実施形態の図である。システム500は、ノード1、ノード2B、コンピュータネットワーク112、及び、クライアントデバイス104A1を含む。ノード2Bは、オーディオエンコーダ402B、ビデオエンコーダ404B、及び、ネットワーク通信デバイス208Bを含む以外は、図4Bのノード2Aと同じである。
【0116】
クライアントデバイス104A1は、ビデオデコーダ1、ビデオデコーダ2、オーディオデコーダ1、オーディオデコーダ2、及び、フレームオーガナイザ502を含む以外は、図4Bのクライアントデバイス104Aと同じである。フレームオーガナイザ502は、ディスプレイデバイス424に表示するためにビデオフレーム1~4を連続した順番に整理する、例えば、プロセッサ、集積回路等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュール、または、これらの組み合わせである。さらに、フレームオーガナイザ502は、連続した順番のビデオフレーム1~4に関連付けられた音を出力するために、連続した順番にオーディオフレーム1~4を整理する。
【0117】
ビデオフレーム情報406Aは、ビデオフレーム情報1及びビデオフレーム情報3を含む。同様に、ビデオフレーム情報406Bは、ビデオフレーム情報2及びビデオフレーム情報4を含む。ビデオフレーム情報1は、仮想シーンのビデオフレーム1に関する情報であり、ビデオフレーム情報2は、仮想シーンのビデオフレーム2に関する情報であり、ビデオフレーム情報3は、仮想シーンのビデオフレーム3に関する情報であり、ビデオフレーム情報4は、仮想シーンのビデオフレーム4に関する情報である。例として、各ビデオフレーム情報1~4は、仮想シーンの1つまたは複数の仮想オブジェクト及び/または背景の位置、向き、大きさ、及び、形を含む。
【0118】
ビデオフレーム1~4は、連続した順番で表示される。例えば、ビデオフレーム2は、ビデオフレーム1がクライアントデバイス104A1に表示された後、クライアントデバイス104A1に表示される。ビデオフレーム3は、ビデオフレーム2がクライアントデバイス104A1に表示された後、クライアントデバイス104A1に表示される。ビデオフレーム4は、ビデオフレーム3がクライアントデバイス104A1に表示された後、クライアントデバイス104A1に表示される。一実施形態においては、ビデオフレームは、本明細書で使用される場合、画素列で構成され、画素の数によって制御される解像度を有する。各画素は、仮想オブジェクトまたは背景の形、大きさ、及び、テクスチャを規定する色及び光強度を有する。
【0119】
ビデオフレーム452Aは、ビデオフレーム1、3を含む。さらに、ビデオフレーム452Bは、ビデオフレーム2、4を含む。同様に、オーディオフレーム410Aは、オーディオフレーム1及びオーディオフレーム3を含み、オーディオフレーム410Bは、オーディオフレーム2及びオーディオフレーム4を含む。オーディオフレーム1は、ビデオフレーム1の表示と同時にクライアントデバイス104A1によって音として発せられるオーディオデータを有する。同様に、オーディオフレーム2は、ビデオフレーム2の表示と同時に、クライアントデバイス104A1によって音として発せられるオーディオデータを有し、オーディオフレーム3は、ビデオフレーム3の表示と同時にクライアントデバイス104A1によって音として発せられるオーディオデータを有し、オーディオフレーム4は、ビデオフレーム4の表示と同時にクライアントデバイス104A1によって音として発せられるオーディオデータを有する。
【0120】
ビデオフレーム1、3を生成する前に、CPU202A及びGPU206Aは、ノード2Bからのビデオフレーム2、4の受信を待つ。ある実施形態においては、ビデオフレーム1、3を生成する前に、CPU202Aは、内部通信デバイス206A、通信リンク416、及び、内部通信デバイス206Bを介してCPU202Bに、ビデオフレーム2、4の要求、及び、オーディオフレーム2、4の要求を送信する。ビデオフレーム2、4を受信し、ビデオフレーム2、4をメモリデバイス204Aに記憶すると、CPU202Aは、ビデオフレーム4からビデオフレーム情報4を抽出し、ビデオフレーム2からビデオフレーム情報2を抽出し、ビデオフレーム情報4及びビデオフレーム情報2を適用して、ビデオフレーム情報3を生成し、且つ、ビデオフレーム情報1を生成する。例えば、ビデオフレーム情報2は、仮想のボールが位置2にあることを示し、ビデオフレーム情報4は、仮想のボールが位置4にあることを示す。CPU202Aは、位置2、4から仮想のボールが位置2と位置4の間の位置3にあることを判定する。ビデオフレーム情報3は、仮想のボールの位置3を含む。別の例として、ビデオフレーム情報2は、仮想のボールが位置2にあることを示し、物理エンジンコードAは、重力の法則に従うことを示す。CPU202Aは、位置2及び重力の法則から、仮想のボールは位置3にあり、位置3は位置2より下であることを判定する。ビデオフレーム情報1は、GPU206Aによってレンダリングされて、ビデオフレーム1を生成し、ビデオフレーム情報3は、GPU206Aによってレンダリングされて、ビデオフレーム3を生成する。同様に、オーディオフレーム1及び/または3は、オーディオフレーム2及び/または4のオーディオデータから生成される。
【0121】
さらに、ビデオエンコーダ404Aは、ビデオフレーム1、3を符号化して、符号化されたビデオフレームを生成し、符号化されたビデオフレームをネットワーク通信デバイス208Aに送信する。さらに、オーディオエンコーダ402Aは、オーディオフレーム1、3を符号化して、符号化されたオーディオフレームを生成し、符号化されたオーディオフレームをネットワーク通信デバイス208Aに送信する。ネットワーク通信デバイス208Aは、外部通信プロトコルを符号化されたビデオフレーム及び符号化されたオーディオフレームに適用して、符号化されたビデオフレーム及び符号化されたオーディオフレームを含む複数のパケットを生成する。パケットは、ノード1からコンピュータネットワーク112を介してクライアントデバイス104A1に送信される。
【0122】
同様に、ビデオフレーム2、4を生成する前に、CPU202B及びGPU206Bは、ノード1からのビデオフレーム1、3の受信を待つ。ある実施形態においては、ビデオフレーム2、4を生成する前に、CPU202Bは、内部通信デバイス206B、通信リンク416、及び、内部通信デバイス206Aを介して、ビデオフレーム1、3の要求及びオーディオフレーム1、3の要求をCPU202Aに送信する。要求を受信すると、CPU202Aは、ビデオフレーム1、3とオーディオフレーム1、3とを内部通信デバイス210Aに送信する。内部通信デバイス210Aは、内部通信プロトコルをビデオフレーム1、3とオーディオフレーム1、3とに適用して、パッケージ化された情報を生成し、パッケージ化された情報を、通信リンク416を介して内部通信デバイス210Bに送信する。内部通信デバイス210Bは、内部通信プロトコルを適用して、ビデオフレーム1、3とオーディオフレーム1、3とをパッケージ化された情報から抽出する。ビデオフレーム1、3とオーディオフレーム1、3とはメモリデバイス204Bに記憶される。
【0123】
ビデオフレーム1、3を受信し、フレーム1、3をメモリデバイス204Bに記憶すると、CPU202Bは、ビデオフレーム1からビデオフレーム情報1を抽出し、ビデオフレーム3からビデオフレーム情報3を抽出し、ゲームエンジンAをビデオフレーム情報1及びビデオフレーム情報3に適用して、ビデオフレーム情報2を生成し、且つ、ビデオフレーム情報4を生成する。例えば、ビデオフレーム情報1は、仮想のボールが位置1にあることを示し、ビデオフレーム情報3は、仮想のボールが位置3にあることを示す。CPU202Bは、位置1及び3から、仮想のボールが位置1と位置3の間の位置2にあることを判定する。ビデオフレーム情報2は、仮想のボールの位置2を含む。別の例として、ビデオフレーム情報3は、仮想のボールが位置3にあることを示し、物理エンジンコードAは、重力の法則に従うことを示す。CPU202Bは、位置3と重力の法則とから、仮想のボールが位置4にあること、位置4は位置3の下であることを決定する。ビデオフレーム情報2は、GPU206Bによってレンダリングされて、ビデオフレーム2を生成し、ビデオフレーム情報4は、GPU206Bによってレンダリングされて、ビデオフレーム4を生成する。同様に、オーディオフレーム2及び/または4は、オーディオフレーム1及び/または3のオーディオデータから生成される。
【0124】
さらに、ビデオエンコーダ404Bは、ビデオフレーム2、4を符号化して、符号化されたビデオフレームを生成し、符号化されたビデオフレームをネットワーク通信デバイス208Bに送信する。さらに、オーディオエンコーダ402Bは、オーディオフレーム2、4を符号化して符号化されたオーディオフレームを生成し、符号化されたオーディオフレームをネットワーク通信デバイス208Bに送信する。ネットワーク通信デバイス208Bは、符号化されたビデオフレーム及び符号化されたオーディオフレームに外部通信プロトコルを適用して、符号化されたビデオフレーム及び符号化されたオーディオフレームを含む複数のパケットを生成する。パケットは、ノード2Bからコンピュータネットワーク112を介してクライアントデバイス104A1に送信される。
【0125】
クライアントデバイス104A1の通信デバイス426は、ノード1からコンピュータネットワーク112を介してパケットを受信し、外部通信プロトコルをパケットに適用して、ノード1から送信された符号化されたビデオフレーム及び符号化されたオーディオフレームを取得する。同様に、通信デバイス426は、ノード2Bからコンピュータネットワーク112を介してパケットを受信し、外部通信プロトコルをパケットに適用して、ノード2Bから送信された符号化されたビデオフレーム及び符号化されたオーディオフレームを取得する。
【0126】
A/Vソータ418は、ノード1から受信した符号化されたオーディオフレーム、ノード2Bから受信した符号化されたオーディオフレーム、ノード1から受信した符号化されたビデオフレーム、ノード2Bから受信した符号化されたビデオフレームを区別する。A/Vソータ418は、ノード1から受信した符号化されたオーディオフレームをオーディオデコーダ1に送信し、ノード2Bから受信した符号化されたオーディオフレームをオーディオデコーダ2に送信し、ノード1から受信した符号化されたビデオフレームをビデオデコーダ1に送信し、ノード2Bから受信した符号化されたビデオフレームをビデオデコーダ2に送信する。オーディオデコーダ1は、ノード1から受信した符号化されたオーディオフレームを復号し、ビデオデコーダ1は、ノード1から受信した符号化されたビデオフレームを復号する。同様に、ビデオデコーダ2は、ノード2Bから受信した符号化されたビデオフレームを復号し、オーディオデコーダ2は、ノード2Bから受信した符号化されたオーディオフレームを復号する。
【0127】
フレームオーガナイザ502は、ビデオデコーダ1、2からビデオフレームを受信し、連続した順番にビデオフレーム1~4を整理する。さらに、フレームオーガナイザ502は、オーディオデコーダ1、2からオーディオフレームを受信し、連続した順番にオーディオフレーム1~4を整理する。例えば、ビデオフレーム1、3は、フレーム2、4がクライアントデバイス104A1に到着するまで、クライアントデバイス104A1のバッファに記憶される。フレーム2、4が、ネットワークの待ち時間の変動が原因で遅れて到着する場合もあり、失われる場合もある。フレーム2、4が失われた場合、順方向誤り訂正が適用される。順方向誤り訂正が適用されると、クライアントデバイス104A1は、ビデオエンコーダ404A、404Bとオーディオエンコーダ402A、402Bとに失われたことを通知する。通知を受信後、ビデオエンコーダ404A及び404Bとオーディオエンコーダ402A及び402Bとは、新しいフレームの符号化に、失われたフレームからのデータを使用しない。代わりに、ビデオエンコーダ404A、404Bとオーディオエンコーダ402A、402Bとは、失われたフレームの前に生成された、または、失われたフレームの後に生成された他のフレームを使用して、新しいフレームを符号化する。
【0128】
オーディオフレーム1~4は、フレームオーガナイザ502からオーディオ出力デバイス430に送信されて、ビデオフレーム1~4に関連付けられた音を出力し、ビデオフレーム1~4は、フレームオーガナイザ502からディスプレイデバイス424に送信されて、ビデオフレーム1~4を表示する。例えば、ビデオフレーム1は、オーディオフレーム1からの音の出力と同時に表示され、ビデオフレーム2は、オーディオフレーム2からの音の出力と同時に表示され、ビデオフレーム3は、オーディオフレーム3からの音の出力と同時に表示され、ビデオフレーム4は、オーディオフレーム4からの音の出力と同時に表示される。
【0129】
一実施形態においては、ビデオデコーダ1は、ビデオデコーダ2によって適用されるフォーマット、例えば、カスタマイズされたフォーマットとは異なるビデオファイルフォーマットまたはストリーミングビデオフォーマット、例えば、H.264を適用して、符号化されたビデオフレームを復号する。ある実施形態においては、オーディオデコーダ1は、オーディオデコーダ2によって適用されたフォーマットとは異なるオーディオファイルフォーマットまたはストリーミングオーディオフォーマットを適用して、符号化されたオーディオフレームを復号する。
【0130】
ある実施形態においては、2つの異なるビデオデコーダ1、2を使用する代わりに、1つのビデオデコーダを使用して、ノード1、2Bから受信した符号化されたビデオフレームを復号する。さらに、一実施形態においては、2つの異なるオーディオデコーダ1及び2を使用する代わりに、1つのオーディオデコーダを使用して、ノード1、2Bから受信した符号化されたオーディオフレームを復号する。
【0131】
一実施形態においては、ビデオフレーム1、3は、ビデオフレーム2、4からの情報を使用せずに生成され、オーディオフレーム1、3は、オーディオフレーム2、4からの情報を使用せずに生成される。この場合、ビデオフレーム2、4とオーディオフレーム2、4とをノード2Bからノード1に送信する必要はない。
【0132】
同様に、ある実施形態においては、ビデオフレーム2、4は、ビデオフレーム1、3からの情報を使用せずに生成され、オーディオフレーム2、4は、オーディオフレーム1、3からの情報を使用せずに生成される。この場合、ビデオフレーム1、3とオーディオフレーム1、3とをノード1からノード2Bに送信する必要はない。
【0133】
一実施形態においては、ノード1とノード2Bとの間の、ビデオフレーム1、2、3、4及び/またはオーディオフレーム1、2、3、4のやり取りが、例えば、所定の遅延を超えること無しに、所定の頻度で等、連続して行われて、クライアントデバイス104A1のディスプレイデバイス424のビデオフレーム1、2、3、4の表示のフレームレートを達成する。ノード1、2Bが、例えば、1つの同じノード等、集合ノードであるかのように、クライアントデバイス104Aには見える。
【0134】
ある実施形態においては、ビデオエンコーダ404Aは、クライアントデバイス104A1からコンピュータネットワーク112及びネットワーク通信デバイス208Aを介して受信した符号化されたビデオデータを復号する。例えば、ビデオデータは、クライアントデバイス104A1に結合された、または、クライアントデバイス104A1の一部である、デプスカメラまたはウェブカメラまたは赤外線カメラ等のカメラによって撮影される。さらに、オーディオエンコーダ402Aは、クライアントデバイス104A1からコンピュータネットワーク112及びネットワーク通信デバイス208Aを介して受信した符号化されたオーディオデータを復号する。例えば、オーディオデータは、クライアントデバイス104A1に結合された、または、クライアントデバイス104A1の一部である、マイクロフォンによって捕捉される。同様に、ビデオエンコーダ404Bは、クライアントデバイス104A1からコンピュータネットワーク112及びネットワーク通信デバイス208Aを介して受信した符号化されたビデオデータを復号する。さらに、オーディオエンコーダ402Bは、クライアントデバイス104A1からコンピュータネットワーク112及びネットワーク通信デバイス208Aを介して受信した符号化されたオーディオデータを復号する。
【0135】
ノード1、ノード2Bが、それぞれ、オーディオレンダラを含まないある実施形態においては、ビデオフレーム1、3によって表される仮想オブジェクトのオーディオデータは、オーディオエンコーダ402Aによって符号化され、ノード1からコンピュータネットワーク112を介してクライアントデバイス104A1にストリーミングされる。クライアントデバイス104A1は、オーディオデータをレンダリングしてオーディオ波を生成するオーディオレンダラを含む。例えば、クライアントデバイス104A1は、仮想オブジェクトを空間に配置し、オーディオ波を計算することによって。オーディオ波をレンダリングする。計算は、ステレオ5.1またはステレオ7.1等、クライアントデバイス104A1のスピーカの数によって決まる。同様に、ビデオフレーム2、4によって表される他の仮想オブジェクトまたは背景のオーディオデータは、オーディオエンコーダ402Bによって符号化され、ノード2Bからコンピュータネットワーク112を介してクライアントデバイス104A1にストリーミングされる。クライアントデバイス104A1は、ノード1から受信したオーディオデータのレンダリングに使用されるオーディオレンダラと同じもの、または、他のオーディオレンダラを使用して、ノード2Bから受信したオーディオデータをレンダリングして、他の仮想オブジェクトまたは背景の他のオーディオ波を生成する。
【0136】
一実施形態においては、マルチプレイヤゲームにおいて、ネットワーク通信デバイス208A、208Bから送信された図5Aに記載のフレームパケットは、例えば、クライアントデバイス104A1及び他のクライアントデバイス等、複数のクライアントデバイスにブロードキャストされる。例えば、節電のために、フレームパケットは、ノード1、2Bによって一度、生成され、ゲームプレイのために、コンピュータネットワーク112を介してネットワーク通信デバイス208A、208Bから複数のクライアントデバイスに送信される。ノード1、2Bによって送信されたフレームパケットは、ノード1、2BからゲームエンジンAに同時にアクセスを許可された各異なるクライアントデバイスに対して再度、生成される必要はない。
【0137】
図5Bは、フレーム1、3がノード1によって生成され、フレーム2、4が図5Aのノード2Bまたは図4Bのノード2Aによって生成されることを示す図である。フレーム1に示すように、仮想のボールは、仮想シーン572Aにおいて、仮想のユーザ570が離した時、位置1及び/または向き1にある。さらに、仮想シーン572Bのフレーム2において、仮想のボールは、位置2及び/または向き2にあり、仮想シーン572Cのフレーム3において、仮想のボールは、位置3及び/または向き3にあり、仮想シーン572Dのフレーム4において、仮想のボールは、位置4及び/または向き4にある。仮想のユーザ570は、実際のユーザ、例えば、人であるユーザ1のアバタである。仮想のボールの位置2は、位置1の下である。また、仮想のボールの位置3は、位置2の下で、仮想のボールの位置4は、位置2の下である。
【0138】
一実施形態においては、仮想のボールは、フレーム1~4の全てで同じ向きである。ある実施形態においては、仮想のボールは、フレーム1~4の全てで同じ位置にあるが、フレームにおいて向きが異なる。
【0139】
一実施形態においては、マルチプレイヤゲームにおいて、ネットワーク通信デバイス208A、208Bから送信された図5Bに記載のフレームパケットは、例えば、クライアントデバイス104A1、他のクライアントデバイス等、複数のクライアントデバイスにブロードキャストされる。ノード1、2Bによって送信されるフレームパケットは、ノード1、2Bから同時にゲームエンジンAへのアクセスを許可された異なるクライアントデバイスのそれぞれに対して、再び、生成される必要はない。
【0140】
図6Aは、図1の分散型ゲームエンジン102のさらに別の実施形態を示すシステム600の実施形態の図で、あるノードからのビデオフレームの一部を使用して、他のノードのビデオフレームの一部を生成する。システム600は、ノード1、2B、コンピュータネットワーク112、及び、クライアントデバイス104A1を含む。
【0141】
CPU202Aは、ゲームエンジンAを実行して、ビデオフレーム1のビデオフレーム部分情報1と、ビデオフレーム1のビデオフレーム部分情報3とを生成する。例えば、CPU202Aは、ゲームコードAを実行し、CPU202A及び/またはGPU206Aは、物理エンジンAを実行して、ゲーム1の仮想シーンの一部分の位置、大きさ、形、及び、向きを生成する。ビデオフレーム部分情報の例は、本明細書で使用される場合、仮想シーンの一部分の位置、大きさ、形、向き、または、これらの組み合わせを含む。仮想シーンの一部分の例は、ビデオフレーム内の仮想オブジェクト、または、ビデオフレームの背景である。ビデオシーンの一部分の別の例は、ビデオフレーム内の所定の数の隣り合う画素である。ビデオシーンの一部分のさらに別の例は、ビデオフレームのクワドラント内の所定の数の隣り合う画素である。ビデオシーンの一部分のさらに別の例は、ビデオフレーム内の所定の数の隣り合う列である。仮想シーンの一部分の別の例は、ビデオフレーム内の1つまたは複数の仮想オブジェクトである。仮想シーンの一部分のさらに別の例は、ビデオフレーム内の仮想オブジェクトの一部分、または、ビデオフレーム内の背景の一部分である。
【0142】
GPU206Aは、メモリデバイス204Aからビデオフレーム部分情報1にアクセスし、レンダリングコードAをビデオフレーム部分情報1に適用して、ビデオフレーム1のビデオフレーム部分1を生成する。同様に、GPU206Aは、メモリデバイス204Aからビデオフレーム部分情報3にアクセスし、レンダリングコードAをビデオフレーム部分情報3に適用して、ビデオフレーム1のビデオフレーム部分3を生成する。例えば、GPU206Aは、色、陰影、強度、及び/または、テクスチャをビデオフレーム1の第1の仮想オブジェクトに適用し、色、陰影、強度、及び/または、テクスチャをビデオフレーム3内の背景に適用することを決定する。
【0143】
さらに、オーディオフレーム部分1及びオーディオフレーム部分3は、ノード1の、例えば、CPU202A等の1つまたは複数のプロセッサによって生成される。オーディオフレーム部分1は、オーディオフレーム部分1がビデオフレーム1内のビデオフレーム部分1によって発せられる音のオーディオデータを提供するという点で、ビデオフレーム部分1に関連付けられる。例えば、オーディオフレーム部分1は、ビデオフレーム1内の仮想オブジェクトまたは背景または一部分が発する音のオーディオデータを含む。オーディオフレーム部分3は、オーディオフレーム部分3が、ビデオフレーム1内のビデオフレーム部分3が発する音のオーディオデータを提供するという点で、ビデオフレーム部分3に関連付けられる。例えば、オーディオフレーム部分3は、ビデオフレーム1内の仮想オブジェクトまたは背景または一部分によって発せられる音のオーディオデータを含む。
【0144】
同様に、CPU202Bは、ゲームエンジンAを実行して、ビデオフレーム部分情報2及びビデオフレーム部分情報4を生成する。例えば、CPU202Bは、ゲームコードAを実行し、CPU202B及び/またはGPU206Bは、物理エンジンAを実行して、ゲーム1のビデオフレーム1内の仮想シーンの一部分の位置、大きさ、形、及び、向きを生成し、ビデオフレーム1のビデオフレーム部分1及びビデオフレーム部分3がノード1によって生成される。
【0145】
GPU206Bは、メモリデバイス204Bからビデオフレーム部分情報2にアクセスし、レンダリングコードAをビデオフレーム部分情報2に適用して、ビデオフレーム1のビデオフレーム部分2を生成する。同様に、GPU206Bは、メモリデバイス204Bからビデオフレーム部分情報4にアクセスし、レンダリングコードAをビデオフレーム部分情報4に適用して、ビデオフレーム1のビデオフレーム部分4を生成する。例えば、GPU206Bは、色、強度、及び/または、テクスチャをビデオフレーム1の第2の仮想オブジェクトに適用することと、色、強度、及び/または、テクスチャをビデオフレーム1内の第3の仮想オブジェクトに適用することとを決定する。第2の仮想オブジェクトは、第1の仮想オブジェクトとは異なり、第3の仮想オブジェクトは、第1及び第2の仮想オブジェクトとは異なる。例を挙げて説明すると、第1の仮想オブジェクトは、ユーザ1のアバタであり、第2の仮想オブジェクトは、仮想のボールであり、第3の仮想オブジェクトは、アバタのペットの犬である。
【0146】
さらに、オーディオフレーム部分2、4は、ノード2Bの1つまたは複数のプロセッサ、例えば、CPU202Bによって生成される。オーディオフレーム部分2は、オーディオデータがビデオフレーム部分2による音として発せられるという点でビデオフレーム部分2に関連付けられたオーディオデータを含む。さらに、オーディオフレーム部分4は、オーディオデータがビデオフレーム部分4による音として発せられるという点で、ビデオフレーム部分4に関連付けられたオーディオデータを含む。
【0147】
さらに、ビデオエンコーダ404Aは、ビデオフレーム部分1、3を符号化して、符号化されたビデオフレーム部分を生成し、符号化されたビデオフレーム部分をネットワーク通信デバイス208Aに送信する。さらに、オーディオエンコーダ402Aは、オーディオフレーム部分1、3を符号化して、符号化されたオーディオフレームを生成し、符号化されたオーディオフレーム部分1、3をネットワーク通信デバイス208Aに送信する。ネットワーク通信デバイス208Aは、外部通信プロトコルを符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分に適用して、符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分を含む複数のパケットを生成する。パケットは、ノード1からコンピュータネットワーク112を介してクライアントデバイス104A1に送信される。
【0148】
また、ビデオエンコーダ404Bは、ビデオフレーム部分2、4を符号化して、符号化されたビデオフレーム部分を生成し、符号化されたビデオフレーム部分をネットワーク通信デバイス208Bに送信する。さらに、オーディオエンコーダ402Bは、オーディオフレーム部分2、4を符号化して、符号化されたオーディオフレーム部分を生成し、符号化されたオーディオフレーム部分をネットワーク通信デバイス208Bに送信する。ネットワーク通信デバイス208Bは、外部通信プロトコルを符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分に適用して、符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分を含む複数のパケットを生成する。パケットは、ノード2Bからコンピュータネットワーク112を介してクライアントデバイス104A1に送信される。
【0149】
クライアントデバイス104A1の通信デバイス426は、ノード1からコンピュータネットワーク112を介してパケットを受信し、外部通信プロトコルをパケットに適用して、ノード1から送信された符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分を取得する。同様に、通信デバイス426は、ノード2Bからコンピュータネットワーク112を介してパケットを受信し、外部通信プロトコルをパケットに適用して、ノード2Bから送信された符号化されたビデオフレーム部分及び符号化されたオーディオフレーム部分を取得する。
【0150】
A/Vソータ418は、ノード1から受信した符号化されたオーディオフレーム部分、ノード2Bから受信した符号化されたオーディオフレーム部分、ノード1から受信した符号化されたビデオフレーム部分、及び、ノード2Bから受信した符号化されたビデオフレーム部分を区別する。A/Vソータ418は、ノード1から受信した符号化されたオーディオフレーム部分をオーディオデコーダ1に送信し、ノード2Bから受信した符号化されたオーディオフレーム部分をオーディオデコーダ2に送信し、ノード1から受信した符号化されたビデオフレーム部分をビデオデコーダ1に送信し、ノード2Bから受信した符号化されたビデオフレーム部分をビデオデコーダ2に送信する。オーディオデコーダ1は、ノード1から受信した符号化されたオーディオフレーム部分を復号し、ビデオデコーダ1は、ノード1から受信した符号化されたビデオフレーム部分を復号する。同様に、ビデオデコーダ2は、ノード2Bから受信した符号化されたビデオフレーム部分を復号し、オーディオデコーダ2は、ノード2Bから受信した符号化されたオーディオフレーム部分を復号する。ビデオフレーム部分1~4は、ディスプレイデバイス424に表示され、オーディオフレーム部分1~4は、オーディオ出力デバイス430による音として出力される。例えば、ビデオフレーム部分1は、オーディオ部分1からの音の出力と同時に表示され、ビデオフレーム部分2は、オーディオフレーム部分2からの音の出力と同時に表示され、ビデオフレーム部分3は、オーディオフレーム部分3からの音の出力と同時に表示され、ビデオフレーム部分4は、オーディオフレーム部分4からの音の出力と同時に表示される。
【0151】
一実施形態においては、ビデオフレーム部分1、3を生成する前に、CPU202A及びGPU206Aは、ノード2Bからのビデオフレーム部分2、4の受信を待つ。例えば、ビデオフレーム部分1、3を生成する前に、CPU202Aは、内部通信デバイス206A、通信リンク416、及び、内部通信デバイス206Bを介してCPU202Bにビデオフレーム部分2、4の要求とオーディオフレーム部分2、4の要求とを送信する。ビデオフレーム部分2、4を受信し、ビデオフレーム部分2、4をメモリデバイス204Aに記憶すると、CPU202Bは、ビデオフレーム部分4からビデオフレーム部分情報4を抽出し、ビデオフレーム部分2からビデオフレーム部分情報2を抽出し、ビデオフレーム部分情報4及び/またはビデオフレーム部分情報2を適用して、ビデオフレーム部分情報3を生成、及び/または、ビデオフレーム部分情報1を生成する。例えば、ビデオフレーム部分情報2は、仮想の木の幹の第2の部分が位置2にあることを示し、ビデオフレーム情報4は、仮想の木の幹の第4の部分が位置4にあることを示す。CPU202Aは、仮想の木の幹の位置2及び4から、仮想の木の幹の第3の部分が仮想の木の幹の位置2と位置4の間の位置3にあると判定する。ビデオフレーム部分情報3は、仮想の木の幹の第3の部分の位置3を含む。別の例として、ビデオフレーム部分情報2は、仮想の木の幹の第2の部分が位置2にあることを示し、物理エンジンコードAは、ビデオフレーム1において仮想の木の幹が仮想の地面に接していることを示す。CPU202Aは、位置2及び物理エンジンコードAから、仮想の木の幹の第3の部分が位置3にあり、位置3は仮想の木の幹の位置2の下にあることを判定する。ビデオフレーム部分情報1は、GPU206Aによってレンダリングされて、ビデオフレーム部分1を生成し、ビデオフレーム部分情報3は、GPU206Aによってレンダリングされて、ビデオフレーム部分3を生成する。
【0152】
同様に、この実施形態においては、ビデオフレーム部分2、4を生成する前に、CPU202B及びGPU206Bは、ノード1からのビデオフレーム部分1、3の受信を待つ。例えば、ビデオフレーム部分2、4を生成する前に、CPU202Bは、内部通信デバイス206B、通信リンク416、及び、内部通信デバイス206Aを介してCPU202Aにビデオフレーム部分1、3とオーディオフレーム部分1、3との要求を送信する。要求を受信すると、CPU202Aは、ビデオフレーム部分1、3とオーディオフレーム部分1、3とを内部通信デバイス210Aに送信する。内部通信デバイス210Aは、ビデオフレーム部分1、3とオーディオフレーム部分1、3とに内部通信プロトコルを適用して、パッケージ化された情報を生成し、パッケージ化された情報を、通信リンク416を介して内部通信デバイス210Bに送信する。内部通信デバイス210Bは、内部通信プロトコルを適用して、パッケージ化された情報から、ビデオフレーム部分1、3とオーディオフレーム部分1、3とを抽出する。ビデオフレーム部分1、3とオーディオフレーム部分1、3とは、メモリデバイス204Bに記憶される。
【0153】
ビデオフレーム部分1、3を受信し、ビデオフレーム部分1、3をメモリデバイス204Bに記憶すると、CPU202Bは、ビデオフレーム部分1からビデオフレーム部分情報1を抽出し、ビデオフレーム部分3からビデオフレーム部分情報3を抽出し、ビデオフレーム部分情報1及び/またはビデオフレーム部分情報3を適用して、ビデオフレーム部分情報2を生成、及び/または、ビデオフレーム部分情報4を生成する。例えば、ビデオフレーム部分情報1は、仮想の木の幹の第1の部分が位置1にあることを示し、ビデオフレーム部分情報3は、仮想の木の幹の第3の部分が位置3にあることを示す。CPU202Bは、仮想の木の幹の位置1及び3から、仮想の木の幹の第2の部分が、仮想の木の幹の第1の部分の位置1と仮想の木の幹の第3の部分の位置3との間の位置2にあることを判定する。ビデオフレーム部分情報2は、仮想の木の幹の第2の部分の位置2を含む。別の例として、ビデオフレーム部分情報3は、仮想の木の幹の第3の部分が位置3にあることを示し、物理エンジンコードAは、ビデオフレーム1において、仮想の木の幹が仮想の地面に接していることを示す。CPU202Bは、仮想の木の幹の第3の部分の位置3と物理エンジンコードAとから、仮想の木の幹の第4の部分が位置4にあり、位置4は仮想の木の幹の第3の部分の位置3の下にあることを判定する。ビデオフレーム部分情報2は、GPU206Bによってレンダリングされて、ビデオフレーム部分2を生成し、ビデオフレーム部分情報4は、GPU206Bによってレンダリングされて、ビデオフレーム部分4を生成する。
【0154】
一実施形態においては、ビデオデコーダ1は、ビデオデコーダ2によって適用される、例えば、カスタマイズされたフォーマット等とは異なるビデオファイルフォーマットまたはストリーミングビデオフォーマット、例えば、H.264を適用して、符号化されたビデオフレーム部分を復号する。ある実施形態においては、オーディオデコーダ1は、オーディオデコーダ2によって適用されるのとは異なるオーディオファイルフォーマットまたはストリーミングオーディオフォーマットを適用して、符号化されたオーディオフレーム部分を復号する。
【0155】
ある実施形態においては、2つの異なるビデオデコーダ1、2を使用する代わりに、1つのビデオデコーダを使用して、ノード1、2Bから受信した符号化されたビデオフレーム部分を復号する。さらに、一実施形態においては、2つの異なるオーディオデコーダ1、2を使用する代わりに、1つのオーディオデコーダを使用して、ノード1、2Bから受信した符号化されたオーディオフレーム部分を復号する。
【0156】
一実施形態においては、ビデオフレーム部分1、3は、ビデオフレーム部分2、4からの情報を使用せずに生成され、オーディオフレーム部分1、3は、オーディオフレーム部分2、4からの情報を使用せずに生成される。この場合、ビデオフレーム部分2、4とオーディオフレーム部分2、4とをノード2Bからノード1に送信する必要はない。
【0157】
同様に、ある実施形態においては、ビデオフレーム部分2、4は、ビデオフレーム部分1、3からの情報を使用せずに生成され、オーディオフレーム部分2、4は、オーディオフレーム部分1、3からの情報を使用せずに生成される。この場合、ビデオフレーム部分1、3とオーディオフレーム部分1、3とをノード1からノード2Bに送信する必要はない。
【0158】
図6Bは、仮想シーンを表示するビデオフレーム1のビデオフレーム部分1~4の配置を示す図である。ビデオフレーム1のビデオフレーム部分1は、ビデオフレーム1の1つまたは複数の上部の画素列からなる第1のセットを含む。さらに、ビデオフレーム1のビデオフレーム部分2は、ビデオフレーム1の1つまたは複数の画素列からなる第2のセットを含み、第2のセットは、第1のセットの隣で下にある。また、ビデオフレーム1のビデオフレーム部分3は、ビデオフレーム1の1つまたは複数の画素列からなる第3のセットを含み、第3のセットは、第2のセットの隣で下にある。ビデオフレーム1のビデオフレーム部分4は、ビデオフレーム1の1つまたは複数の画素列からなる第4のセットを含み、第4のセットは、第3のセットの隣で下にある。
【0159】
図6Cは、仮想シーンを表示するビデオフレーム1のビデオフレーム部分1~4の別の配置を示す図である。ビデオフレーム1のビデオフレーム部分1は、ビデオフレーム1の左上のクワドラントの1つまたは複数の隣り合う画素のセットを含む。さらに、ビデオフレーム1のビデオフレーム部分2は、ビデオフレーム1の右上のクワドラントの1つまたは複数の隣り合う画素のセットを含む。また、ビデオフレーム1のビデオフレーム部分3は、ビデオフレーム1の左下のクワドラントの1つまたは複数の隣り合う画素のセットを含む。ビデオフレーム1のビデオフレーム部分4は、ビデオフレーム1の右下のクワドラントの1つまたは複数の隣り合う画素のセットを含む。
【0160】
ノード1が、例えば、ビデオフレーム1、2等、複数のビデオフレームで、左上のクワドラントまたは左下のクワドラント等の同じクワドラント(複数可)に位置するビデオフレーム部分を生成することに、注意されたい。同様に、ノード2は、複数のビデオフレームで、右上のクワドラントまたは右下のクワドラント等の同じクワドラント(複数可)に位置するビデオフレーム部分を生成する。
【0161】
ある実施形態においては、ノード1は、例えば、ビデオフレーム1、2等の複数のビデオフレームで、左上のクワドラント及び左下のクワドラント等の異なるクワドラント(複数可)に位置するビデオフレーム部分を生成する。同様に、ノード2は、複数のビデオフレームで、右上のクワドラント及び右下のクワドラント等の異なるクワドラント(複数可)に位置するビデオフレーム部分を生成する。
【0162】
図7は、ビデオフレーム生成のために、1つのノードから他のノードにユーザ入力をブロードキャストして、ユーザ入力の他のノードとの関連性を決定することを示すシステム700の実施形態の図である。システム700は、ノード1A及びノード2Cを含む。ノード1Aは、関連性決定部702Aを含む以外は、図6Aのノード1と同じである。さらに、ノード2Cは、関連性決定部702Bを含む以外は、図6Aのノード2Bと同じである。
【0163】
関連性決定部の例は、ノード内のビデオフレームまたはビデオフレーム部分の生成のためにユーザ入力の関連性を決定する、例えば、プロセッサ、集積回路等のハードウェアデバイス、または、例えば、コンピュータプログラム等のソフトウェアモジュール、または、これらの組み合わせを含む。一実施形態においては、ノードの関連性決定部は、ノードのCPU及びGPUと一体化される。例えば、ノードの関連性決定部の一部分は、ノードのCPU内に組み込まれ、関連性決定部の残りの部分は、ノードのGPU内に組み込まれる。
【0164】
ユーザ1は、クライアントデバイス104Aを介して複数のユーザ入力1、2を提供する。例えば、カメラまたはハンドヘルドコントローラを用いて、入力1、2をキャプチャする様々な方法は、上述した。入力1、2は、パケット化され、クライアントデバイス104Aからコンピュータネットワーク112を介してノード1Aのネットワーク通信デバイス208Aに送信される。ネットワーク通信デバイス208Aは、入力1、2を非パケット化し、入力1、2を内部通信デバイス210Aに提供する。
【0165】
内部通信デバイス210Aは、CPU202Aの制御の下、内部通信プロトコルを適用して、ユーザ入力1、2のビデオデータ及びオーディオデータを、通信リンク416を介してノード2Cの内部通信デバイス210Bにブロードキャストする。内部通信デバイス210Bは、内部通信プロトコルを適用して、内部通信デバイス210Aから受信したパッケージ化された情報からユーザ入力1、2を抽出し、ユーザ入力1、2を関連性決定部702Bに提供する。
【0166】
関連性決定部702Bは、ユーザ入力1、2のどちらがビデオフレーム2、4の生成に関連するかを決定する。例えば、関連性決定部702Bは、ユーザ入力1が、仮想シーンの位置、向き、大きさ、形、強度、色、テクスチャ、陰影、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム2またはビデオフレーム4に表示される。この例においては、ユーザ入力1が、ビデオフレーム2またはビデオフレーム4に関連する。例を挙げて説明すると、関連性決定部702Bは、ユーザ入力1がビデオフレーム2内の仮想のボールの位置2、または、フレーム4内の仮想のボールの位置4の達成を促進すると、決定する。別の例として、関連性決定部702Bは、ユーザ入力1、2の両方が、仮想シーンの位置、向き、大きさ、形、強度、色、テクスチャ、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム2またはビデオフレーム4に表示される。この例においては、ユーザ入力1、2が、ビデオフレーム2またはビデオフレーム4に関連する。例を挙げて説明すると、関連性決定部702Bは、ユーザ入力1、2がビデオフレーム2内の仮想のボールの位置2、または、フレーム4内の仮想のボールの位置4の達成を促進すると、決定する。
【0167】
関連性決定部702Bは、ビデオフレーム2及び/または4に関連すると決定されたユーザ入力1、2の一方または両方をCPU202B及びGPU206Bに提供する。関連性決定部702Bは、ビデオフレーム2、4に関連しないと決定されたユーザ入力1、2の一方または両方を無視する。例えば、関連性決定部702Bは、関連しないユーザ入力を、ビデオフレーム2及び/または4の生成に適用しない。
【0168】
CPU202Bは、関連すると決定されたユーザ入力1及び/または2をビデオフレーム情報2及び/または4の生成に適用する。同様に、GPU206Bは、関連すると決定されたユーザ入力1及び/または2を適用して、ビデオフレーム2及び/または4を生成する。
【0169】
一実施形態においては、ビデオフレーム1、ビデオフレーム2、ビデオフレーム3、ビデオフレーム4、オーディオフレーム1、オーディオフレーム2、オーディオフレーム3、オーディオフレーム4、ビデオフレーム部分1、ビデオフレーム部分2、ビデオフレーム部分3、ビデオフレーム部分4、オーディオフレーム部分1、オーディオフレーム部分2、オーディオフレーム部分3、オーディオフレーム部分4、または、これらの組み合わせは、本明細書では、状態情報と呼ばれる。
【0170】
一実施形態においては、ユーザ入力1、2が、図6Aに示すように、クライアントデバイス104A1のビデオデコーダ1またはビデオデコーダ2によって符号化される時、ノード1のビデオエンコーダ404Aは、図6Aに示すように、ユーザ入力1、2のビデオデータを復号する。ユーザ入力1、2のビデオデータは、ユーザ入力1、2を他のノードにブロードキャストする前に、ビデオエンコーダ404Aによって復号される。ある実施形態においては、ノード1のオーディオエンコーダ402Aは、ユーザ入力1、2が、クライアントデバイス104A1のオーディオデコーダ1またはオーディオデコーダ2によって符号化される時、図6Aに示すように、ユーザ入力1、2のオーディオデータを復号する。ユーザ入力1、2のオーディオデータは、ユーザ入力1、2を他のノードにブロードキャストする前に、オーディオエンコーダ402Aによって復号される。
【0171】
ある実施形態においては、関連性決定部702Aは、ユーザ入力1、2の一方または両方がビデオフレーム1、3の生成に関連するかどうかを決定する。例えば、関連性決定部702Aは、ユーザ入力1が、仮想シーンの位置、向き、大きさ、形、強度、色、テクスチャ、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム1またはビデオフレーム3に表示される。この例においては、ユーザ入力1は関連性がある。ユーザ入力1は関連性があると決定すると、CPU202Aは、ユーザ入力1を適用して、ビデオフレーム情報1及び/または3を生成する、及び/または、GPU206Aは、ユーザ入力1を適用して、ビデオフレーム1及び/または3を生成する。ユーザ入力1、2がビデオフレーム1、3の生成に関連すると決定すると、ノード1Aは、ユーザ入力1、2をノード2Cにブロードキャストしない。他方、ユーザ入力1、2の一方または両方がビデオフレーム1、3の生成に関連しないと決定すると、ノード1Aは、ユーザ入力1及び/または2をノード2Cにブロードキャストする。
【0172】
この実施形態において、ユーザ入力1が、図6Aに示すように、クライアントデバイス104A1のビデオデコーダ1またはビデオデコーダ2によって符号化される時、ノード1のビデオエンコーダ404Aは、図6Aに示すように、ユーザ入力1のビデオデータを復号する。ユーザ入力2がクライアントデバイス104A1のビデオデコーダ1またはビデオデコーダ2によって符号化される時、ノード1Aからノード2Cに送信されるユーザ入力2のビデオデータは、ビデオエンコーダ404Bによって復号される。また、ユーザ入力1が、クライアントデバイス104A1のオーディオデコーダ1またはオーディオデコーダ2によって符号化される時、ノード1のオーディオエンコーダ402Aは、図6Aに示すように、ユーザ入力1のオーディオデータを復号する。ユーザ入力2が、クライアントデバイス104A1のオーディオデコーダ1またはオーディオデコーダ2によって符号化される時、ノード1Aからノード2Cに送信されるユーザ入力2のオーディオデータは、オーディオエンコーダ402Bによって復号される。
【0173】
ある実施形態においては、クライアントデバイス104Aの代わりに、図4Aに示すクライアントデバイス104A、または、図6Aに示すクライアントデバイス104A1が使用される。
【0174】
図8は、ビデオフレーム部分の生成のために、1つのノードから他のノードにユーザ入力をブロードキャストして、ユーザ入力の他のノードとの関連性を決定することを示すシステム700の実施形態の図である。関連性決定部702Bは、ユーザ入力1、2のどちらがビデオフレーム部分2、4の生成に関連するかを決定する。例えば、関連性決定部702Bは、ユーザ入力1が、ビデオフレーム1の仮想シーンの一部分の位置、向き、大きさ、形、強度、色、テクスチャ、陰影、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム部分2またはビデオフレーム部分4に表示される。ユーザ入力1は、ビデオフレーム部分2またはビデオフレーム部分4に関連する。例を挙げて説明すると、関連性決定部702Bは、ユーザ入力1が、ビデオフレーム1内の仮想の木の幹の第2の部分の位置2、または、ビデオフレーム1内の仮想の木の幹の第4の部分の位置4の表示を促進することを決定する。別の例として、関連性決定部702Bは、ユーザ入力1、2の両方が、仮想シーンの一部分の位置、向き、大きさ、形、強度、色、テクスチャ、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム部分2またはビデオフレーム部分4に表示される。ユーザ入力1、2は、ビデオフレーム部分2またはビデオフレーム部分4に関連する。例を挙げて説明すると、関連性決定部702Bは、ユーザ入力1、2が、ビデオフレーム部分2内の仮想の木の幹の第2の部分の位置2、または、フレーム部分4内の仮想の木の幹の第4の部分の位置4の達成を促進すると決定する。
【0175】
関連性決定部702Bは、ビデオフレーム部分2及び/または4に関連すると決定されたユーザ入力1、2の一方または両方をCPU202B及びGPU206Bに提供する。CPU202Bは、関連すると決定されたユーザ入力1及び/または2を適用して、ビデオフレーム部分情報2及び/または4を生成する。同様に、GPU206Bは、関連すると決定されたユーザ入力1及び/または2を適用して、ビデオフレーム部分2及び/または4を生成する。
【0176】
ある実施形態においては、関連性決定部702Aは、ユーザ入力1、2の一方または両方がビデオフレーム部分1、3の生成に関連するかどうかを決定する。例えば、関連性決定部702Aは、ユーザ入力1が、仮想オブジェクトの位置、向き、大きさ、形、強度、色、テクスチャ、または、これらの組み合わせを変更すると決定し、変更された位置、変更された向き、変更された大きさ、変更された形、変更された強度、変更された色、変更されたテクスチャ、もしくは、変更された陰影、または、これらの組み合わせが、ビデオフレーム1の一部分に表示される。ユーザ入力1は関連性がある。ユーザ入力1は関連性があると決定すると、CPU202Aは、ユーザ入力1を適用して、ビデオフレーム部分情報1及び/または3を生成する、及び/または、GPU206Aは、ユーザ入力1を適用して、ビデオフレーム部分1及び/または3を生成する。ユーザ入力1、2がビデオフレーム部分1、3の生成に関連すると決定すると、ノード1Aは、ユーザ入力1、2をノード2Cにブロードキャストしない。他方、ユーザ入力1、2の一方または両方がビデオフレーム部分1、3の生成に関連しないと決定すると、ノード1Aは、ユーザ入力1及び/または2をノード2Cにブロードキャストする。
【0177】
図9は、図1の分散型ゲームエンジン102の実行に選択されるノードの数の変更を示すシステム900の実施形態の図である。システム900は、複数のノードA、B、C、Dを含む。ノードB、Dは、それぞれ、特殊である。例えば、ノードBは、ノードA、Cより処理能力量が多い、例えば、より多数のCPU及びGPUを含む。別の例として、ノードBは、ノードA、Cよりメモリ量が多い、例えば、より多数のメモリデバイスを含む。さらに別の例として、ノードBは、ノードAまたはノードCより処理能力量が多く、且つ、メモリ量が多いという点以外は、ノードAまたはノードCと同じである。別の例として、ノードDが、処理能力量が多く、且つ、メモリ量が多いという点以外は、ノードDは、ノードAまたはノードCと同じである。ノードAの例は、ノード1及びノード1Aを含む。ノードBの例は、ノード2、ノード2A、ノード2B、及び、ノード2Cを含む。
【0178】
ノードアセンブリサーバ108の図3Cに示すプロセッサ350は、ノードA、Cの1つまたは複数が正常に機能していないかどうか、または、機能していないかどうかを判定する。例えば、プロセッサ350は、ノードアセンブリサーバ108の通信デバイス354とコンピュータネットワーク112とを介してノード1のネットワーク通信デバイス208Aにメッセージに応答するようにメッセージを送信する。ネットワーク通信デバイス208Aが所定の時間内にメッセージに応答しないと判定すると、プロセッサ350は、ノード1は正常に機能していない、または、機能していないと判定する。ノードA及び/またはCが正常に機能していないと判定すると、プロセッサ350は、スイッチシステム106を介して特殊ノードBを選択して、ノードA及び/またはCによって行われる機能を行わせる。例えば、ノードAが機能していない時、または、正常に機能していない時、プロセッサ350は、内部通信プロトコルに関する情報を特殊ノードBに送信して、特殊ノードBが、機能しているノードCと通信するのを可能にする。
【0179】
一実施形態においては、ユーザ1が、ゲーム1より低いグラフィックスレベルを有するゲーム2を選択する時、または、デバイスハンドオーバの場合、プロセッサ350は、ゲーム2の分散型ゲームエンジンを実行するために、ゲーム1の分散型ゲームエンジン102を実行するノードの数をより少ない数にリアルタイムで減らす。例えば、プロセッサ350は、内部通信プロトコルを介して互いに内部で通信するための、また、ゲーム2の分散型ゲームエンジンを実行するためのノードの数をより少なく、スイッチシステム106を介して選択する。同様に、ユーザ1が、ゲーム2より高いグラフィックスレベルを有するゲーム1を選択する時、プロセッサ350は、ゲーム1の分散型ゲームエンジンを実行するために、ゲーム2の分散型ゲームエンジン102の実行に使用されるノードの数をより多くの数にリアルタイムで増加させる。例えば、プロセッサ350は、内部通信プロトコルを介して互いに内部で通信するための、また、ゲーム1の分散型ゲームエンジンを実行するためのノードの数をより多くスイッチシステム106を介して選択する。別の例として、ユーザは、自分のPlayStation(商標)ゲームコンソールでゲームをプレイしている。ユーザは、自分の家から出る時、ゲームを自分のスマートフォンまたはタブレットに転送したい。スマートフォンまたはタブレットは、低い解像度と低いフレームレートでゲームを表示するが、PlayStation(商標)ゲームコンソールは、4Kまたは8Kのテレビと組み合わせて、より高い解像度とより高いフレームレートを適用する。より低い解像度とより低いフレームレートにするために、ノードの数を減少させる。
【0180】
ある実施形態においては、異なるユーザアカウントを介して、ゲーム1のプレイを促進するクライアントデバイスの数が減少すると、プロセッサ350は、ゲーム1の分散型ゲームエンジン102を実行するために、ゲーム1の分散型ゲームエンジン102を実行するノードの数を、より少ない数にリアルタイムで減らす。他方、異なるユーザアカウントを介してゲーム1のプレイを促進するクライアントデバイスの数が増加する時、プロセッサ350は、ゲーム1の分散型ゲームエンジン102を実行するために、ゲーム1の分散型ゲームエンジン102の実行に使用されるノードの数をより多い数にリアルタイムで増加させる。
【0181】
図10は、開示の実施態様による、クラウドビデオゲームをクライアントデバイスにストリーミングするために行われる様々な動作を概念的に示すフロー図である。ゲームサーバ1002は、ビデオゲームを実行し、未加工の(圧縮されていない)ビデオ1004及びオーディオ1006を生成する。説明図の参照番号1008で示されるように、ビデオ1004及びオーディオ1006は、ストリーミングの目的でキャプチャされ、符号化される。符号化は、ビデオストリーム及びオーディオストリームを圧縮して、帯域幅の使用量を低減し、ゲーム体験を最適化する。符号化形式の例は、H.265/MPEG-H、H.264/MPEG-4、H.263/MPEG-4、H.262/MPEG-2、WMV、VP6/7/8/9等を含む。
【0182】
符号化されたオーディオ1010と符号化されたビデオ1012とは、インターネット等のコンピュータネットワークを介した送信のために、参照番号1014で示すように、ネットワークパケットにさらにパケット化される。一部の実施形態においては、ネットワークパケット符号化プロセスは、データ暗号化プロセスも採用し、それによって、データのセキュリティを強化する。例示の実施態様においては、オーディオパケット1016及びビデオパケット1018が、コンピュータネットワーク1020を介してトランスポートするために生成される。
【0183】
ゲームサーバ1002は、触覚フィードバックデータ1022をさらに生成し、触覚フィードバックデータ1022も、ネットワーク送信のために、ネットワークパケットにパケット化される。例示の実施態様においては、触覚フィードバックパケット1024が、コンピュータネットワーク1020を介してトランスポートするために生成される。
【0184】
未加工のビデオ及びオーディオと触覚フィードバックデータとを生成する上記動作は、データセンタのゲームサーバ1002で行われ、ビデオ及びオーディオの符号化と、トランスポートのための符号化されたオーディオ/ビデオ及び触覚フィードバックデータのパケット化の動作は、データセンタのストリーミングエンジンによって行われる。参照番号1020で示すように、オーディオ、ビデオ、及び、触覚フィードバックパケットは、コンピュータネットワークを介してトランスポートされる。参照番号1026で示すように、オーディオパケット1016、ビデオパケット1018、及び、触覚フィードバックパケット1024は、クライアントデバイスによって、分解、例えば、パース等されて、クライアントデバイスでネットワークパケットから符号化されたオーディオ1028、符号化されたビデオ1030、及び、触覚フィードバックデータ1032を抽出する。データが暗号化されている場合、データは解読もされる。符号化されたオーディオ1028及び符号化されたビデオ1030は、次に、参照番号1034で示すように、クライアントデバイスによって復号されて、クライアントデバイスのディスプレイデバイス1040上でレンダリングするためにクライアント側の未加工のオーディオ及びビデオデータを生成する。触覚フィードバックデータ1032は、クライアントデバイスのプロセッサによって処理されて、触覚効果をレンダリングできるコントローラデバイス1042、または、例えば、HMD等の他のインタフェースデバイスで、触覚フィードバック効果を生み出す。触覚効果の一例は、コントローラデバイス1042の振動またはランブル音である。
【0185】
ビデオゲームは、ユーザ入力に応答し、従って、ユーザ入力の送信及び処理に関する上記の手続きフローと類似しているが、クライアントデバイスからサーバへと反対方向である手続きフローが行われることを理解されよう。図に示すように、コントローラデバイス1042、または、例えば、ユーザ1の身体の一部等の入力装置、または、これらの組み合わせが、入力データ1044を生成する。この入力データ1044は、コンピュータネットワークを介してデータセンタにトランスポートするために、クライアントデバイスでパケット化される。入力データパケット1046は、ゲームサーバ1002によって解凍され、再アセンブルされて、データセンタ側の入力データ1048を規定する。入力データ1048は、ゲームサーバ1002に供給され、ゲームサーバ1002は、入力データ1048を処理して、ゲームのゲーム状態の保存データを更新する。
【0186】
オーディオパケット1016、ビデオパケット1018、及び、触覚フィードバックパケット1024のコンピュータネットワーク1020を介したトランスポート中、一部の実施形態においては、コンピュータネットワーク1020を介したデータの送信は、サービス品質を保証するために監視される。参照番号1050に示すように、例えば、上流及び下流のネットワーク帯域幅を含む、コンピュータネットワーク1020のネットワーク状態が、監視され、ゲームストリーミングは、利用可能な帯域幅の変化に応じて調節される。すなわち、ネットワークパケットの符号化及び復号は、参照番号1052に示すように、現在のネットワーク状態に基づいて制御される。
【0187】
図11は、クライアントデバイスのディスプレイデバイスとのインタフェースに対応した、また、コンピュータネットワーク1020を介してゲームホストシステムと通信できるゲームコンソール1100の実施形態のブロック図である。ゲームコンソール1100は、データセンタA内にある、または、ユーザ1がいる場所にある。一部の実施形態においては、ゲームコンソール1100を使用して、HMDに表示されるゲームを実行する。ゲームコンソール1100は、ゲームコンソール1100に接続可能な様々な周辺装置を備える。ゲームコンソール1100は、セルプロセッサ1128、ダイナミックランダムアクセスメモリ(XDRAM)ユニット1126、専用のビデオランダムアクセスメモリ(VRAM)ユニット1132を有するReality Synthesizerグラフィックスプロセッサユニット1130、及び、入力/出力(I/O)ブリッジ1134を有する。ゲームコンソール1100は、I/Oブリッジ1134を通してアクセス可能な、ディスク1140aからの読み出しのためのBlu Ray(登録商標)ディスクリードオンリメモリ(BD-ROM)光学ディスクリーダ1140と、取り外し可能なスロットインハードディスクドライブ(HDD)1136も有する。任意選択で、ゲームコンソール1100は、コンパクトフラッシュ(登録商標)メモリカード、メモリStick(登録商標)メモリカード等を読み出すためのメモリカードリーダ1138も含み、メモリカードリーダ1138も同様にI/Oブリッジ1134を通してアクセス可能である。I/Oブリッジ1134は、ユニバーサルシリアルバス(USB)2.0ポート1124、ギガビットイーサネット(登録商標)ポート1122、IEEE802.11b/gワイヤレスネットワーク(Wi-Fi)ポート1120、及び、ブルートゥース(登録商標)接続をサポートできるBluetooth(登録商標)ワイヤレスリンクポート1118にも接続する。
【0188】
動作中、I/Oブリッジ1134は、ゲームコントローラ842及び/または1103からのデータ、及び、HMD1105からのデータを含む、全てのワイヤレスのUSB及びイーサネット(登録商標)データを扱う。例えば、ユーザAがゲームコードの一部分の実行によって生成されたゲームをプレイしている時、I/Oブリッジ1134は、ゲームコントローラ842及び/または1103から、及び/または、HMD1105から、ブルートゥース(登録商標)リンクを介して入力データを受信し、その入力データをセルプロセッサ1128に向け、セルプロセッサ1128は、それに従ってゲームの現在の状態を更新する。例として、HMD1105内のカメラは、ユーザ1のジェスチャを撮影して、ジェスチャを表す画像を生成する。画像は、入力データの例である。ゲームコントローラ842、1103はそれぞれ、ハンドヘルドコントローラ(HHC)の例である。
【0189】
ワイヤレスのUSB及びイーサネット(登録商標)ポートは、ゲームコントローラ842及び1103とHMD1105に加えて、例えば、リモートコントロール1104、キーボード1106、マウス1108、例えば、Sony Playstation Portable(登録商標)エンターテイメントデバイス等のポータブルエンターテイメントデバイス1110、例えば、EyeToy(登録商標)ビデオカメラ1112等のビデオカメラ、マイクロフォンヘッドセット1114、及び、マイクロフォン1115など、他の周辺装置への接続性も提供する。一部の実施形態においては、このような周辺装置は、ゲームコンソール1100にワイヤレスで接続される。例えば、ポータブルエンターテイメントデバイス1110は、Wi-Fiアドホック接続を介して通信し、マイクロフォンヘッドセット1114は、ブルートゥース(登録商標)リンクを介して通信する。
【0190】
これらのインタフェースの提供は、ゲームコンソール1100が、デジタルビデオレコーダ(DVR)、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤ、ボイスオーバインターネットプロトコル(IP)電話、携帯電話、プリンタ、及び、スキャナ等の他の周辺装置にも対応する可能性があることを意味する。
【0191】
さらに、レガシーメモリカードリーダ1116は、USBポート1124を介してゲームコンソール1100に接続され、ゲームコンソール1100によって使用される種類のメモリカード1148の読み出しを可能にする。ゲームコントローラ842、1103とHMD1105は、ブルートゥース(登録商標)リンク1118を介してゲームコンソール1100とワイヤレスで通信するように、または、USBポート1124に接続されるように動作可能で、それによって、ゲームコントローラ842、1103とHMD1105との電池を充電する電力も受け取る。一部の実施形態においては、ゲームコントローラ842、1103のそれぞれとHMD1105は、メモリ、プロセッサ、メモリカードリーダ、例えば、フラッシュメモリ等の永続的メモリ、例えば、照射された球形部分、発光ダイオード(LED)または赤外光等の発光体、超音波通信のためのマイクロフォン及びスピーカ、音響室、デジタルカメラ、内部クロック、例えば、ゲームコンソール1100に面する球形部分等の認識できる形状、並びに、例えば、ブルートゥース(登録商標)、Wi-Fi等、プロトコルを用いたワイヤレスデバイスを含む。
【0192】
ゲームコントローラ842は、ユーザ1の両手を用いて使用されるように設計されたコントローラであり、ゲームコントローラ1103は、アタッチメントが付いた片手コントローラである。HMD1105は、ユーザ1の頭頂部及び/または両目の前に適合するように設計される。1つまたは複数のアナログジョイスティック及び従来の制御ボタンに加えて、ゲームコントローラ842、1103は、それぞれ、三次元位置決定に感受性がある。同様に、HMD1105は、三次元位置決定に感受性がある。結果として、一部の実施形態においては、ゲームコントローラ842、1103の、また、HMD1105のユーザ1によるジェスチャ及び動きが、従来のボタンまたはジョイスティックのコマンドに追加して、または、その代わりに、ゲームへの入力として変換される。任意選択で、例えば、Playstation(商標)ポータブルデバイス等の他のワイヤレス対応の周辺装置は、コントローラとして使用される。Playstation(商標)ポータブルデバイスの場合、追加のゲームまたは制御情報、例えば、制御命令またはライフの数等が、デバイスのディスプレイ画面に提供される。一部の実施形態においては、例えば、ダンスマット(図示せず)、ライトガン(図示せず)、ハンドル及びペダル(図示せず)、特注コントローラ等の他の代替または補助制御装置が使用される。特注コントローラの例は、迅速な応答のクイズゲーム(これも図示せず)用の1つまたは幾つかの大きいボタンを含む。
【0193】
リモートコントロール1104は、また、ブルートゥース(登録商標)リンク1118を介してゲームコンソール1100とワイヤレスに通信するように動作可能である。リモートコントロール1104は、Blu Ray(商標)ディスクBD-ROMリーダ1140の動作に適した、また、ディスクコンテンツのナビゲーションに適したコントロールを含む。
【0194】
Blu Ray(商標)ディスクBD-ROMリーダ1140は、従来の記録済み及び記録可能なCDと、いわゆるスーパーオーディオCDとに加えて、ゲームコンソール1100に対応しているCD-ROMを読み出すように動作可能である。Blu Ray(商標)ディスクBD-ROMリーダ1140も、従来の記録済み及び記録可能なDVDに加えて、ゲームコンソール1100対応のデジタルビデオディスクROM(DVD-ROM)を読み出すように動作可能である。Blu Ray(商標)ディスクBD-ROMリーダ1140は、さらに、ゲームコンソール1100対応のBD-ROMと、従来の記録済み及び記録可能なBlu Rayディスクとを読み出すように動作可能である。
【0195】
ゲームコンソール1100は、リアリティシンセサイザグラフィックスユニット1130を介して生成または復号されたオーディオ及びビデオをオーディオコネクタ1150及びビデオコネクタ1152を通して、例えば、ディスプレイ画面1144と1つまたは複数のラウドスピーカ1146を有するモニタまたはテレビセット等の、ディスプレイ及び音声出力装置1142に供給するように、または、オーディオ及びビデオをBluetooth(登録商標)ワイヤレスリンクポート1118を介してHMD1105のディスプレイデバイスに供給するように動作可能である。オーディオコネクタ1150は、様々な実施形態において、従来のアナログ及びデジタル出力を含み、ビデオコネクタ1152は、コンポーネントビデオ、S-ビデオ、コンポジットビデオ、及び、1つまたは複数の高精細マルチメディアインタフェース(HDMI(登録商標))出力を様々に含む。結果として、ビデオ出力は、PAL(phase alternating line)またはNTSC(National Television System Committee)等の形式で、または、2220p、1080i、もしくは、1080pの高精細であってよい。例えば、生成、復号等のオーディオ処理は、セルプロセッサ1108によって行われる。ゲームコンソール1100のオペレーティングシステムは、Dolby(登録商標)5.1サラウンドサウンド、Dolby(登録商標)シアターサラウンド(DTS)、及び、Blu Ray(登録商標)ディスクからの7.1サラウンドサウンドの復号をサポートする。
【0196】
一部の実施形態においては、例えば、ビデオカメラ1112等のビデオカメラは、1つの電荷結合素子(CCD)、LEDインジケータ、並びに、ハードウェアベースのリアルタイムデータ圧縮及び符号化装置を備えることによって、圧縮されたビデオデータは、ゲームコンソール1100による復号のために、イントラ画像ベースのMPEG(motion picture expert group)規格等の適切な形式で送信される。ビデオカメラ1112のLEDインジケータは、ゲームコンソール1100からの適切な制御データに応答して、例えば、有害なライティング状態等を知らせるために光るように配置される。ビデオカメラ1112の一部の実施形態は、様々に、USB、ブルートゥース(登録商標)、または、Wi-Fi通信ポートを介してゲームコンソール1100に接続する。ビデオカメラの様々な実施形態は、1つまたは複数の関連付けられたマイクロフォンを含み、オーディオデータの送信もできる。ビデオカメラの幾つかの実施形態においては、CCDは、高精細ビデオ撮影に適した解像度を有する。使用中、ビデオカメラによって撮影された画像は、ゲーム内に組み込まれる、または、ゲーム制御入力として解釈される。他の実施形態においては、ビデオカメラは、赤外光の検出に適した赤外線カメラである。
【0197】
様々な実施形態において、ゲームコンソール1100の通信ポートの1つを介した、例えば、ビデオカメラまたはリモートコントロール等の周辺装置と生じるデータ通信を成功させるために、デバイスドライバ等の適切なソフトウェアが備えられる。
【0198】
一部の実施形態においては、ゲームコンソール1100、HHC、及び、HMD1105を含む上記システムデバイスは、HMD1105が、ゲームの対話型セッションのビデオを表示及びキャプチャするのを可能にする。システムデバイスは、ユーザ1とゲームの間の対話性を規定するゲームの対話型セッションを開始する。システムデバイスは、さらに、ユーザ1によって操作されるHHC及び/またはHMD1105の開始位置と向きを判定する。ゲームコンソール1100は、ユーザ1とゲームとの対話性に基づいて、ゲームの現在の状態を判定する。システムデバイスは、ユーザ1のゲームとの対話型セッション中、HHC及び/またはHMD1105の位置及び向きを追跡する。システムデバイスは、ゲームの現在の状態と、HHC及び/またはHMD1105の追跡された位置及び向きとに基づいて、対話型セッションの観客ビデオストリームを生成する。一部の実施形態においては、HHCは、観客ビデオストリームをHHCのディスプレイ画面にレンダリングする。様々な実施形態において、HMD1105は、観客ビデオストリームをHMD1105のディスプレイ画面にレンダリングする。
【0199】
図12を参照すると、HMD1202のコンポーネントの図が示されている。HMD1202は、HMD1105(図11)の例である。HMD1202は、プログラム命令を実行するためのプロセッサ1200を含む。メモリデバイス1202が、記憶のために備えられる。メモリデバイス1202の例は、揮発性メモリ、不揮発性メモリ、または、これらの組み合わせを含む。例えば、保存データから生成された画像フレームの表示等、ユーザ1(図1)が見る視覚インタフェースを提供するディスプレイデバイス1204が含まれる。電池1206は、HMD1202の電源として備えられる。動作検出モジュール1208は、磁力計1210、加速度計1212、及び、ジャイロスコープ1214等、様々な種類の動作検知ハードウェアのいずれかを含む。
【0200】
加速度計は、加速度及び重力により誘発される反力を測定する装置である。単軸及び多軸のモデルが、異なる方向の加速度の大きさ及び方向を検出するために利用できる。加速度計は、傾斜、振動、及び衝撃を感知するために使用される。一実施形態においては、3つの加速度計1212を使用して重力の方向を提供し、重力の方向は、例えば、世界空間ピッチ及び世界空間ロール等、2つの角度の絶対基準を与える。
【0201】
磁力計は、HMD1202の近傍の磁場の強さと方向とを測定する。一部の実施形態においては、3つの磁力計1210が、HMD1202内で使用されて、世界空間ヨー角度の絶対基準を保証する。様々な実施形態において、磁力計は、±80マイクロテスラである地球磁場にわたるように設計される。磁力計は、金属の影響を受け、実際のヨーと単調であるヨー測定値を提供する。一部の実施形態においては、磁場は、実世界環境の金属のために歪められ、このことがヨー測定に歪みを生じさせる。様々な実施形態において、この歪みは、ジャイロスコープ1214、カメラ1216等の他のセンサからの情報を使用して、較正される。一実施形態においては、加速度計1212は、磁力計1210と共に使用されて、HMD1202の傾斜とアジマスとを取得する。
【0202】
ジャイロスコープは、角運動量の原理に基づいて向きを測定または維持する装置である。一実施形態においては、ジャイロスコープ1214の代わりに、3つのジャイロスコープが慣性感知に基づいて各軸(x、y、z)に対する移動に関する情報を提供する。ジャイロスコープは高速回転を検出するのに役立つ。しかしながら、一部の実施形態においては、ジャイロスコープは、絶対基準が存在しなければ、経時的にドリフトする。これは、周期的なジャイロスコープのリセットをトリガし、リセットは、物体の視覚的追跡、加速度計、磁力計等に基づいた位置/向きの決定等、他の利用できる情報を使用して行われてよい。
【0203】
カメラ1216は、例えば、部屋、小屋、自然環境等、ユーザ1を取り巻く実世界環境の画像及び画像ストリームを撮影するために備えられる。様々な実施形態において、例えば、ユーザ1がHMD1202のディスプレイを見ている時等に、ユーザから離れる方に向けられた、後ろ向きのカメラと、例えば、ユーザ1がHMD1202のディスプレイを見ている時等に、ユーザの方に向けられた、前向きのカメラとを含む複数のカメラがHMD1202に含まれる。さらに、幾つかの実施形態においては、デプスカメラ1218が、実世界環境の物体の奥行情報を感知するためにHMD1202に含まれる。
【0204】
HMD1202は、オーディオ出力を提供するためのスピーカ1220を含む。また、一部の実施形態においては、マイクロフォン1222が、周囲環境からの音、ユーザが行う発話等を含む、実世界環境からの音を捕捉するために含まれる。HMD1202は、例えば、振動デバイス等、ユーザ1に触覚フィードバックを提供するための触覚フィードバックモジュール1224を含む。一実施形態においては、触覚フィードバックモジュール1224は、ユーザ1に触覚フィードバックを提供するようにHMD1202の動き及び/または振動を起こすことができる。
【0205】
LED1226は、HMD1202のステータスの視覚インジケータとして備えられる。例えば、LEDは、電池レベル、電源オン等を示してよい。カードリーダ1228は、HMD1202が、メモリカードから情報を読み出し、メモリカードに情報を書き込むのを可能にするために備えられる。USBインタフェース1230は、周辺装置の接続、または、他のポータブルデバイス、コンピュータ等、他の装置への接続を可能にするためのインタフェースの一例として含まれる。HMD1202の様々な実施形態において、様々な種類のインタフェースのいずれかが、HMD1202の接続性の向上を可能にするために含まれてよい。
【0206】
WiFi(登録商標)モジュール1232は、ワイヤレスネットワーク技術を介してインターネットへの接続を可能にするために含まれる。また、HMD1202は、他のデバイスへのワイヤレス接続を可能にするブルートゥース(登録商標)モジュール1234を含む。一部の実施形態においては、通信リンク1236も、他のデバイスへの接続のために含まれる。一実施形態においては、通信リンク1236は、無線通信のために赤外線送信を利用する。他の実施形態においては、通信リンク1236は、他のデバイスとの通信のために、様々な無線または有線の送信プロトコルのいずれかを利用する。
【0207】
入力ボタン/センサ1238は、入力インタフェースをユーザ1(図1)に提供するために含まれる。ボタン、タッチパッド、ジョイスティック、トラックボール等の様々な種類の入力インタフェースのいずれかが含まれる。超音波技術を介した他のデバイスとの通信を促進するために、超音波通信モジュール1240が、HMD1202に含まれる。
【0208】
バイオセンサ1242が、ユーザから生理学的データの検出を可能にするために含まれる。一実施形態においては、バイオセンサ1242は、ユーザの皮膚を通してユーザの生体電気信号を検出するために1つまたは複数のドライ電極を含む。
【0209】
HMD1202の上記コンポーネントは、HMD1202に含まれ得る単に例示のコンポーネントとして記載した。様々な実施形態において、HMD1202は、様々な上記コンポーネントの一部を含む場合も含まない場合もある。
【0210】
図13は、情報サービスプロバイダ(INSP)アーキテクチャの実施形態を示す。INSP1302は、地理的に分散し、例えば、LAN、WAN、または、これらの組み合わせ等、コンピュータネットワーク1306を介して接続されたユーザA、B、C、Dに多数の情報サービスを配信する。WANの例は、インターネットを含み、LANの例は、イントラネットを含む。ユーザ1は、クライアントデバイス1302-1を操作し、ユーザBは、別のクライアントデバイス1302-2を操作し、ユーザCは、さらに別のクライアントデバイス1302-3を操作し、ユーザDは、別のクライアントデバイス1320-4を操作する。
【0211】
一部の実施形態においては、クライアントデバイス1302-1、1320-2、1320-3、1320-4は、それぞれ、中央処理装置(CPU)、ディスプレイ、及び、入力/出力(I/O)インタフェースを含む。各クライアントデバイス1302-1、1320-2、1320-3、1320-4の例は、パーソナルコンピュータ(PC)、携帯電話、ネットブック、タブレット、ゲームシステム、パーソナルデジタルアシスタント(PDA)、ゲームコンソール1100及びディスプレイデバイス、HMD1202(図11)、ゲームコンソール1100及びHMD1202、デスクトップコンピュータ、ラップトップコンピュータ、スマートテレビ等を含む。一部の実施形態においては、INSP1302は、クライアントデバイスの種類を認識し、採用する通信方法を調整する。
【0212】
一部の実施形態においては、INSPは、株価の更新等の一種類のサービス、または、放送メディア、ニュース、スポーツ、ゲーム等の様々なサービスを配信する。さらに、各INSPが提供するサービスは動的である、すなわち、サービスは任意の時点で追加または減らすことができる。従って、特定の種類のサービスを特定の個人に提供するINSPは、経時的に変化し得る。例えば、クライアントデバイス1302-1がユーザ1の居住地にある間、クライアントデバイス1302-1は、クライアントデバイス1302-1の近くのINSPからサービスを提供され、ユーザ1が異なる市に旅行すると、クライアントデバイス1302-1は、異なるINSPからサービスを提供される。居住地のINSPは、要求された情報とデータとを新しいINSPに転送し、それによって、情報は、新しい都市までクライアントデバイス1302-1を「追いかけて」、データをクライアントデバイス1302-1に近付け、アクセスを容易にする。様々な実施形態において、マスタ-サーバ関係が、クライアントデバイス1302-1の情報を管理するマスタINSPと、マスタINSPからの制御の下、クライアントデバイス1302-1と直接、インタフェースするサーバINSPとの間に確立される。一部の実施形態においては、クライアントデバイス1302-1が世界を動きまわると、データが1つのISPから他のISPに転送されて、クライアントデバイス1302-1にサービスを提供するのにより良い位置にあるINSPが、これらのサービスを届けるINSPになる。
【0213】
INSP1302は、コンピュータネットワーク1306を介してコンピュータベースのサービスを顧客に提供するアプリケーションサービスプロバイダ(ASP)1308を含む。ASPモデルを用いて提供されるソフトウェアは、いわゆる、オンデマンドソフトウェアまたはサービスとしてのソフトウェア(SaaS)の場合もある。例えば、顧客関係管理等のコンピュータベースのサービスにアクセスを提供する簡単な形態は、例えば、ハイパーテキスト転送プロトコル(HTTP)等の標準的なプロトコルを用いることによる。アプリケーションソフトウェアは、ベンダのサーバに常駐し、ベンダによって提供される特殊目的のクライアントソフトウェア、及び/または、例えば、シンクライアント等の他のリモートインタフェースによって、ハイパーテキストマークアップ言語(HTML)等を用いてウェブブラウザを通して、各クライアントデバイス1302-1、1320-2、1320-3、1320-4によってアクセスされる。
【0214】
広い地理的エリアにわたって配信されるサービスは、クラウドコンピューティングを使用することが多い。クラウドコンピューティングは、動的にスケーラブルで、多くの場合、仮想化されたリソースがコンピュータネットワーク1306を介してサービスとして提供されるコンピューティングの形式である。ユーザA、B、C、Dは、ユーザをサポートする「クラウド」の技術インフラの専門家である必要はない。一部の実施形態においては、クラウドコンピューティングは、サービスとしてのインフラ(IaaS)、サービスとしてのプラットフォーム(PaaS)、及び、サービスとしてのソフトウェア(SaaS)等の異なるサービスに分けられる。クラウドコンピューティングサービスは、ウェブブラウザからアクセスされる共通ビジネスアプリケーションをオンラインで提供することが多く、ソフトウェア及びデータはサーバに記憶される。クラウドという用語は、コンピュータネットワーク1306がコンピュータネットワーク図でどのように描かれているのかに基づいた、例えば、サーバ、ストレージ、及び、論理回路等を使用するコンピュータネットワーク1306の例えとして使用され、コンピュータネットワーク1306が隠している複雑なインフラの抽象化である。
【0215】
さらに、INSP1302は、本明細書ではゲーム処理サーバとも呼ばれる場合があるゲーム処理プロバイダ(GPP)1310を含み、ゲーム処理プロバイダ(GPP)1310は、シングルプレイヤ及びマルチプレイヤビデオゲームをプレイするために、クライアントデバイス1320-1、1320-2、1320-3、1320-4によって使用される。コンピュータネットワーク1306でプレイされる大抵のビデオゲームは、ゲームサーバへの接続を介して動作する。典型的には、ゲームは、専用のサーバアプリケーションを使用する。専用のサーバアプリケーションは、クライアントデバイス1320-1、1320-2、1320-3、1320-4からデータを収集し、そのデータを他のユーザによって操作される他のクライアントに配信する。これは、ピアツーピア構成より効率がよく、有効であるが、別個のサーバを使用して、サーバアプリケーションをホストする。一部の実施形態においては、GPP1310は、クライアントデバイス1320-1、1320-2、1320-3、1320-4間の通信を確立して、クライアントデバイスは、集中型のGPP1310にさらに依存することなく、情報をやりとりする。
【0216】
専用GPPは、クライアントとは独立して実行するサーバである。このようなサーバは、通常、データセンタにある専用ハードウェア上で実行されて、より多くの帯域幅と専用の処理能力を提供する。専用サーバは、大抵のPCベースのマルチプレイヤゲームのゲームサーバをホストする方法である。多人数同時参加型オンラインゲームは、ゲームタイトルを所有するソフトウェア会社によって通常、ホストされる専用サーバで実行し、専用サーバがコンテンツを制御、更新するのを可能にする。
【0217】
本明細書ではブロードキャスト処理プロバイダとも呼ばれるブロードキャスト処理サーバ(BPS)1312は、オーディオ信号またはビデオ信号を聴衆に配信する。非常に狭い範囲の聴衆へのブロードキャストは、ナローキャストとも呼ばれる。ブロードキャスト配信の最後の行程は、信号が、どのようにクライアントデバイス1320-1、1320-2、1320-3、1320-4に到着するかであり、信号は、一部の実施形態においては、ラジオ局またはテレビ局と同様に無線でアンテナ及び受信器に、または、ケーブルテレビもしくはケーブルラジオもしくは局を介した「ワイヤレスケーブル」を通して、配信される。コンピュータネットワーク1306は、また、様々な実施形態において、特に、信号及び帯域幅の共有を可能にするマルチキャストを用いてラジオ信号またはテレビ信号のいずれかをクライアントデバイス1320-1、1320-2、1320-3、1320-4に届ける。歴史的に、ブロードキャストは、幾つかの実施形態において、例えば、全国放送、地方放送等、地理的領域によって範囲が定められてきた。しかしながら、高速インターネットの広がりによって、コンテンツが世界中のほとんど全ての国に届き得るので、ブロードキャストは、地理によって規定されない。
【0218】
ストレージサービスプロバイダ(SSP)1314は、コンピュータストレージスペースと、関連する管理サービスを提供する。SSP1314は、周期的なバックアップとアーカイブも提供する。ストレージをサービスとして提供することによって、クライアントデバイス1320-1、1320-2、1320-3、1320-4は、ストレージがサービスとして使用されない時と比べて、より多くのストレージを使用する。他の大きな利点は、SSP1314は、バックアップサービスを含むことで、クライアントデバイス1320-1、1320-2、1320-3、1320-4は、ハードドライブが故障しても、データを失わない。さらに、複数のSSPは、一部の実施形態においては、クライアントデバイス1320-1、1320-2、1320-3、1320-4から受信したデータの全てのコピーまたは一部のコピーを有し、クライアントデバイス1320-1、1320-2、1320-3、1320-4が、クライアントデバイス1320-1、1320-2、1320-3、1320-4の所在と、クライアントの種類に関係なく、効率的にデータにアクセスするのを可能にする。例えば、ユーザ1は、家庭のコンピュータを介して、また、ユーザ1が移動中は、携帯電話を介して個人ファイルにアクセスする。
【0219】
通信プロバイダ1316は、クライアントデバイス1320-1、1320-2、1320-3、1320-4への接続性を提供する。通信プロバイダ1316の1つの種類は、コンピュータネットワーク1306へのアクセスを提供するインターネットサービスプロバイダ(ISP)である。ISPは、ダイアルアップ、デジタル加入者回線(DSL)、ケーブルモデム、ファイバ、ワイヤレスまたは専用高速インターコネクト等、インターネットプロトコルデータグラムの配信に適したデータ送信技術を用いて、クライアントデバイス1320-1、1320-2、1320-3、1320-4を接続する。通信プロバイダ1316は、一部の実施形態においては、電子メール、インスタントメッセージ、及び、ショートメッセージサービス(SMS)等の、メッセージサービスも提供する。他の種類の通信プロバイダは、ネットワークサービスプロバイダ(NSP)で、ネットワークサービスプロバイダは、コンピュータネットワーク1306への直接バックボーンアクセスを提供することによって、帯域幅またはネットワークアクセスを販売する。ネットワークサービスプロバイダの例は、電気通信会社、データキャリア、ワイヤレス通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ運営業者等を含む。
【0220】
データ交換部1318は、INSP1302内の幾つかのモジュールを相互に接続し、これらのモジュールを、コンピュータネットワーク1306を介してクライアントデバイス1320-1、1320-2、1320-3、1320-4に接続する。データ交換部1318は、様々な実施形態において、INSP1302の全てのモジュールが近くにある小さいエリアをカバーする、または、異なるモジュールが地理的に分散している時、大きい地理的エリアをカバーする。例えば、データ交換部1302は、データセンタのキャビネット内の高速のギガビットイーサネット(登録商標)、または、大陸間仮想LANを含む。
【0221】
様々な実施形態において、本明細書に記載の一部の実施形態の1つまたは複数の特徴は、本明細書に記載の1つまたは複数の残りの実施形態の1つまたは複数の特徴と組み合わされることに注意されたい。
【0222】
本開示に記載の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能消費者家電、ミニコンピュータ、メインフレームコンピュータ等を含む、様々なコンピュータシステム構成と共に実践されてよい。一実施態様においては、本開示に記載の実施形態は、タスクが、有線ベースまたは無線ネットワークを通してリンクされたリモート処理装置によって行われる分散コンピュータ環境で実践される。
【0223】
上記実施形態を念頭に置いて、一実施態様においては、本開示に記載の実施形態は、コンピュータシステムに記憶されたデータを用いる様々なコンピュータ実施動作を採用することを理解されたい。これらの動作は、物理量の物理的操作を必要とする動作である。本開示に記載の実施形態の一部をなす本明細書に記載の動作はいずれも、有用な機械動作である。本開示に記載の一部の実施形態は、これらの動作を行うデバイスまたは装置にも関する。装置は、必要な目的のために特に構築される、または、装置は、コンピュータに記憶されたコンピュータプログラムによって、選択的にアクティブにされる、もしくは、構成される汎用コンピュータである。特に、一実施形態においては、様々な汎用機械が、本明細書の教示に従って書かれたコンピュータプログラムと共に使用される、または、より専門的な装置を必要な動作を行うように構築すると、より便利な場合がある。
【0224】
ある実施態様において、本開示に記載の一部の実施形態は、コンピュータ可読媒体上のコンピュータ可読コードとして実現される。コンピュータ可読媒体は、データを記憶する任意のデータ記憶装置であり、データは、後に、コンピュータシステムによって読み出される。コンピュータ可読媒体の例は、ハードドライブ、ネットワーク接続ストレージ(NAS)、ROM、RAM、コンパクトディスクROM(CD-ROM)、記録可能CD(CD-R)、書き換え可能CD(CD-RW)、磁気テープ、光学データ記憶装置、非光学データ記憶装置等を含む。例として、コンピュータ可読媒体は、ネットワークに結合されたコンピュータシステムに分散されたコンピュータ可読有形媒体を含み、それによって、コンピュータ可読コードは、分散されて記憶及び実行される。
【0225】
さらに、上記実施形態の一部は、ゲーム環境に関して記載されるが、一部の実施形態においては、ゲームの代わりに、例えば、ビデオ会議環境等の他の環境が使用される。
【0226】
方法の動作は、特定の順で記載されるが、他のハウスキーピング動作が、動作と動作の間で行われてよい、または、動作は、わずかに異なる時間に生じるように調整されてよい、もしくは、オーバーレイ動作の処理が所望のように行われる限り、処理動作が、処理に関連付けられた様々な間隔で生じるのを可能にするシステムに分散されてよいことは理解されたい。
【0227】
本開示に記載の前述の実施形態を、理解が明瞭になるように詳細に記載したが、添付の特許請求の範囲内で一定の変更及び修正が行われてよいことは明らかである。従って、本実施形態は、例示的なもので制限とみなしてはならず、実施形態は、本明細書に記載の詳細に制限されずに、添付の特許請求の範囲及び均等物の範囲内で修正されてよい。
図1
図2
図3A
図3B
図3C
図3D
図4A
図4B
図5A
図5B
図6A
図6B
図6C
図7
図8
図9
図10
図11
図12
図13