(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-18
(45)【発行日】2024-11-26
(54)【発明の名称】分散型ゲームエンジンを使用して状態を予測するシステム及び方法
(51)【国際特許分類】
A63F 13/577 20140101AFI20241119BHJP
A63F 13/42 20140101ALI20241119BHJP
A63F 13/52 20140101ALI20241119BHJP
A63F 13/57 20140101ALI20241119BHJP
【FI】
A63F13/577
A63F13/42
A63F13/52
A63F13/57
(21)【出願番号】P 2023109581
(22)【出願日】2023-07-03
(62)【分割の表示】P 2021555797の分割
【原出願日】2020-02-19
【審査請求日】2023-08-02
(32)【優先日】2019-03-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】オスマン、スティーヴン
【審査官】岸 智史
(56)【参考文献】
【文献】米国特許第09498715(US,B2)
【文献】欧州特許出願公開第02937789(EP,A1)
【文献】米国特許出願公開第2018/0115743(US,A1)
【文献】米国特許出願公開第2015/0119139(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24、13/00-13/98
(57)【特許請求の範囲】
【請求項1】
ゲームの実行中の待ち時間を低減するための方法であって、
第1のノードが、ユーザ入力から前記ゲームの現在の状態を生成することと、
前記第1のノードが、前記ユーザ入力及び1つまたは複数の予測ユーザ入力に基づいて前記ゲームの次の状態を予測することと、
前記第1のノードが、複雑な物理的状態を
決定するタスクを
第2のノードに提供することと、
前記第1のノードが、前記ゲームの前記次の状態を前記予測する際に、簡単な物理的状態を作成するタスクを保持することと、
を含
み、
前記第1のノードは第1の中央処理装置を含み、前記第2のノードは第2の中央処理装置を含み、前記第2の中央処理装置は前記複雑な物理的状態を決定するために前記第1の中央処理装置のプロセッサ性能よりも高いプロセッサ性能を有する、前記方法。
【請求項2】
前記複雑な物理的状態は、前記ゲームの2つの仮想オブジェクトの衝突の接触点を含み、前記簡単な物理的状態は、前記衝突
が発生する可能性を含む、請求項1に記載の方法。
【請求項3】
前記次の状態から1つまたは複数の予測フレームを生成することと、
前記1つまたは複数の予測ユーザ入力がコンピュータネットワークを介して受信されたかどうかを判断することと、
前記1つまたは複数の予測ユーザ入力を受信することに応答して、前記1つまたは複数の予測フレームを送信して、前記ゲームの実行中の前記待ち時間を短縮することと、
をさらに含む、請求項1に記載の方法。
【請求項4】
前記ゲームの前記次の状態を前記予測することと前記1つまたは複数の予測フレームを前記生成することとは、前記1つまたは複数の予測ユーザ入力が受信される前に行われて、前記ゲームの前記実行における前記待ち時間を短縮する、請求項1に記載の方法。
【請求項5】
前記1つまたは複数の予測ユーザ入力が受信されたかどうかを前記判断することは、前記1つまたは複数の予測ユーザ入力とは異なるユーザ入力がコンピュータネットワークを介して受信されたと判断することを含み、前記方法は、
前記1つまたは複数の予測ユーザ入力とは異なる前記ユーザ入力からゲーム状態を生成することと、
前記ゲーム状態から1つまたは複数のフレームを生成することと、
前記1つまたは複数の予測フレームを送信する代わりに、前記ゲーム状態の前記1つまたは複数のフレームを送信することと、
をさらに含む、請求項
3に記載の方法。
【請求項6】
前記1つまたは複数の予測ユーザ入力とは異なる前記ユーザ入力は、前記ゲームの前記次の状態を前記予測する間に受信され、前記ユーザ入力から前記ゲーム状態を前記生成することと前記ゲーム状態から前記1つまたは複数のフレームを生成することとは、前記ゲームの前記次の状態を前記予測することより高い優先度を与えられる、請求項5に記載の方法。
【請求項7】
前記1つまたは複数の予測ユーザ入力とは異なる前記ユーザ入力は、前記1つまたは複数の予測フレームを前記生成する間に受信され、前記ユーザ入力から前記ゲーム状態を前記生成することと前記ゲーム状態から前記1つまたは複数のフレームを生成することとは、前記1つまたは複数の予測フレームを前記生成することより高い優先度を与えられる、請求項5に記載の方法。
【請求項8】
前記ゲームの前記次の状態を前記予測することは、前記ゲームの前記現在の状態の出力に基づく、請求項1に記載の方法。
【請求項9】
前記次の状態から1つまたは複数の予測フレームを生成することと、
前記1つまたは複数の予測ユーザ入力とは異なるユーザ入力がコンピュータネットワークを介して受信されたと判断することと、
前記次の状態内に含まれない前記ゲームのゲーム状態の1つまたは複数の要素を識別することと、
前記1つまたは複数の予測ユーザ入力とは異なる前記ユーザ入力から前記ゲーム状態の前記1つまたは複数の要素を生成することと、
前記ゲーム状態の前記1つまたは複数の要素から1つまたは複数のフレームを生成することと、
1つまたは複数の合成画像の表示を可能にするために、前記ゲーム状態の前記1つまたは複数の要素の前記1つまたは複数のフレームを送信することと、をさらに含み、前記1つまたは複数の合成画像は、前記1つまたは複数の予測フレーム上に重ね合わせられた前記ゲーム状態の前記1つまたは複数の要素を有する、請求項1に記載の方法。
【請求項10】
前記次の状態から1つまたは複数の予測フレームを生成することであって、前記1つまたは複数の予測フレームは、簡単なグラフィックス状態を有する、生成することと、
複雑なグラフィックス状態を
決定するタスクを前記
第2のノードに提供することと、
前記複雑なグラフィックス状態の1つまたは複数の画像フレームを前記
第2のノードから受信することと、
前記複雑なグラフィックス状態の前記1つまたは複数のフレームを前記1つまたは複数の予測フレームと組み合わせることと、
をさらに含む、請求項1に記載の方法。
【請求項11】
ゲームの実行において待ち時間を短縮するシステムであって、前記システムは、
第1の中央処理装置を含む第1のノードと、
前記第1のノードに結合された第2のノード
であって、第2の中央処理装置を含む前記第2のノードと、を含み、
前記第1のノードは、
ユーザ入力から前記ゲームの現在の状態を生成し、
前記ユーザ入力及び1つまたは複数の予測ユーザ入力に基づいて前記ゲームの次の状態を予測し、
複雑な物理的状態を
決定するタスクを前記第2のノードに提供し、
前記ゲームの前記次の状態を前記予測する際に、簡単な物理的状態を作成するタスクを保持する
ように構成され
、
前記第2のノードの前記第2の中央処理装置は、前記複雑な物理的状態を決定するために前記第1の中央処理装置のプロセッサ性能よりも高いプロセッサ性能を有する、前記システム。
【請求項12】
前記複雑な物理的状態は、前記ゲームの2つの仮想オブジェクトの衝突の接触点を含み、前記簡単な物理的状態は、前記衝突
が発生する可能性を含む、請求項
11に記載のシステム。
【請求項13】
前記第2のノードは、
前記次の状態から1つまたは複数の予測フレームを生成し、
前記1つまたは複数の予測ユーザ入力がコンピュータネットワークを介して受信されたかどうかを判断し、
前記1つまたは複数の予測ユーザ入力を受信することに応答して、前記1つまたは複数の予測フレームを送信して、前記ゲームの実行中の前記待ち時間を短縮する
ように構成される、請求項
11に記載のシステム。
【請求項14】
前記第2のノードは、前記1つまたは複数の予測ユーザ入力が受信される前に、前記ゲームの前記次の状態を予測し、且つ、前記1つまたは複数の予測フレームを生成して、前記ゲームの前記実行における前記待ち時間を短縮するように構成される、請求項
11に記載のシステム。
【請求項15】
前記第2のノードは、前記次の状態から1つまたは複数の予測フレームを生成するように構成され、
前記第1のノード及び前記第2のノードのうちの一方は、前記1つまたは複数の予測ユーザ入力とは異なるユーザ入力がコンピュータネットワークを介して受信されたことを判断
し、
前記1つまたは複数の予測ユーザ入力とは異なる前記ユーザ入力からゲーム状態を生成し、
前記ゲーム状態から1つまたは複数のフレームを生成し、且つ、
前記ゲーム状態の前記1つまたは複数のフレームを送信する
ように構成される、請求項
11に記載のシステム。
【請求項16】
前記第1のノード及び前記第2のノードのうちの前記一方は、前記ユーザ入力から前記ゲーム状態を生成し、且つ、前記第2のノードによる前記次の状態の前記予測より高い優先度で、前記ゲーム状態から前記1つまたは複数のフレームを生成するように構成される、請求項
15に記載のシステム。
【請求項17】
前記第1のノード及び前記第2のノードのうちの前記一方は、前記ユーザ入力から前記ゲーム状態を生成し、且つ、前記第2のノードによる前記1つまたは複数の予測フレームの前記生成より高い優先度で、前記ゲーム状態から前記1つまたは複数のフレームを生成するように構成される、請求項
15に記載のシステム。
【請求項18】
前記第2のノードは、前記ゲームの前記現在の状態の出力に基づいて、前記ゲームの前記次の状態を予測するように構成される、請求項
11に記載のシステム。
【請求項19】
前記第2のノードは、
前記次の状態から1つまたは複数の予測フレームを生成し、
前記1つまたは複数の予測ユーザ入力とは異なるユーザ入力がコンピュータネットワークを介して受信されたと判断する
ように構成され、
前記第1のノード及び前記第2のノードのうちの一方は、前記1つまたは複数の予測ユーザ入力とは異なるユーザ入力が前記コンピュータネットワークを介して受信されたことを判断
し、
前記次の状態内に含まれない前記ゲームのゲーム状態の1つまたは複数の要素を識別し、
前記1つまたは複数の予測ユーザ入力とは異なる前記ユーザ入力から前記ゲーム状態の前記1つまたは複数の要素を生成し、
前記ゲーム状態の前記1つまたは複数の要素から1つまたは複数のフレームを生成し、
1つまたは複数の合成画像の表示を可能にするために、前記ゲーム状態の前記1つまたは複数の要素の前記1つまたは複数のフレームを送信する
ように構成され、前記1つまたは複数の合成画像は、前記1つまたは複数の予測フレーム上に重ね合わせられた前記ゲーム状態の前記1つまたは複数の要素を有する、請求項
11に記載のシステム。
【請求項20】
前記第1のノードは、前記次の状態から1つまたは複数の予測フレームを生成するように構成され、前記1つまたは複数の予測フレームは、簡単なグラフィックス状態を有し、
前記第1のノードは、
複雑なグラフィックス状態を
決定するタスクを前記
第2のノードに提供し、
前記複雑なグラフィックス状態の1つまたは複数の画像フレームを前記
第2のノードから受信し、
前記複雑なグラフィックス状態の前記1つまたは複数のフレームを前記1つまたは複数の予測フレームと組み合わせる
ように構成される、請求項
11に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、分散型ゲームエンジンを使用して状態を予測するシステム及び方法に関する。
【背景技術】
【0002】
最近のビデオゲームは、コンピュータネットワークを介してアクセスされる。例えば、Fortnite(商標)ゲームは、世界の様々な地域の多くのプレイヤによってプレイされている。あるプレイヤが第1のアバタを制御し、別のプレイヤが第2のアバタを制御する。各アバタは、ゲーム中に武器を集め、木を切る。その後、アバタは仮想サークル内に強制的に閉じ込められる。アバタが仮想サークル外に置き去りにされた場合、アバタはゲーム内で仮想的に死ぬ。両方のアバタがサークル内にいるとき、彼らは互いを見つけて、武器で互いに戦う。2つのアバタのうち1つだけが生き残る。
【0003】
ビデオゲームはコンピュータネットワークを介してアクセスされるため、ビデオゲームに関連する多くの情報が生成される。情報量が増えると、ビデオゲームの実行の待ち時間が長くなる。
【発明の概要】
【0004】
本開示の実施形態は、分散型ゲームエンジンを使用して状態を予測して、ゲームクラウド上でのアプリケーションの実行における待ち時間を短縮するシステム及び方法を提供する。
【0005】
本開示の他の態様は、本開示に記載の実施形態の原理を例を挙げて示す下記の詳細な記載を、添付図面と併せて読むと明らかになろう。
【0006】
本明細書に記載のシステム及び方法は、ゲームの処理のための待ち時間の短縮を支援し、及び/または深層学習の使用を通して分散型ゲームエンジンの作業の分散を支援する。深層学習は、深層学習を使用しなければアルゴリズムを使用して計算するのが難しい関数を近似するために使用される技術である。アルゴリズムが不明であるか、アルゴリズムを使用した計算が複雑であるため、関数は、計算が困難である。
【0007】
通常、多くのゲームは正常に実行され、これらのゲームのアルゴリズムは一般的に知られており、自動化されている。しかしながら、本明細書に記載するゲームでは、ゲームのシーンのフレームを処理する際の多くの状態間の関係のために、ゲーム内の仮想オブジェクトまたは仮想キャラクタなどの構成要素を互いに分離することが難しい場合がある。例えば、ユーザ入力を使用して、ゲーム内の仮想キャラクタを操作する。その仮想キャラクタのアクションは、ゲーム内の人工知能のノンプレイアブルキャラクタ(AI NPC)を特定の振る舞いをさせ、物理法則に従って効果をトリガし得る。説明すると、ユーザ入力を受信すると、爆発物が発射されるか、AI NPCが移動するか、仮想オブジェクトが移動する。AI NPC、物理法則、及びユーザの視点の変更は、ゲームのシーンのレンダリングの変更に寄与する。これは、ゲームエンジン内の様々な機能の相互依存関係を示す。
【0008】
ニューラルネットワークを使用して様々な関数の出力を予測できるため、後続の関数を状況に応じて早期に処理できる。ニューラルネットワークの予測が正しくない場合、予測に基づく早期処理を中止し、実際の関数出力に基づく正しい処理を再開することができる。
【0009】
ある実施形態では、システム及び方法は、予測におけるエラーを「コース修正」することができる。例として、仮想オブジェクトまたは仮想キャラクタをレンダリングする必要がなく、シーンは仮想オブジェクトなしで適時的にレンダリングされると予測子が誤って決める場合がある。後にフレームの処理中に、物理法則の影響により、仮想オブジェクトがビューにプッシュされることが決定される。本明細書に記載のシステム及び方法は、この時点で2つの選択肢を提供する。選択肢の1つでは、システムと方法が前処理の一部または全てを破棄することができ、仮想オブジェクトが存在するシーンを再レンダリングすることができる。もう1つの選択肢では、システム及び方法が仮想オブジェクトを独立してレンダリングし、その仮想オブジェクトをシーンに合成することができる。
【0010】
ある実施形態では、本明細書に記載のシステム及び方法は、コンピューティングリソース全体にわたる作業の分散を支援する。例えば、物理エンジンは通常、いくつかの構成要素に分割される。これらの構成要素の例には、衝突検出システム、衝突解決システムもしくはソルバ、及び更新システムが含まれる。衝突検出は、高コストのプロセスであり、例えば、仮想オブジェクトが衝突しているかどうかの粗推定を行う広い位相検出演算、及び、計算コストがはるかに高く、仮想オブジェクト間の正確な接触点を計算する狭い位相検出演算等、サブコンポーネントにさらに分割することができる。広い位相検出演算の実行中、広い位相検出演算の以前の結果で訓練されたニューラルネットワークは、どの仮想オブジェクトが、衝突の可能性が高いこと、ある程度衝突の可能性があること、衝突の可能性が全くないことを予測できる。可能性が高いと予測される仮想オブジェクトの場合、狭い位相検出演算を他の計算リソースにディスパッチすることができる。広い位相検出演算が完了すると、ある程度衝突する可能性のある仮想オブジェクトは、解決され、ディスパッチされるかディスパッチされないかのどちらかである。
【0011】
一実施形態では、システム及び方法は、シーンの複雑な背景などの複雑なバックドロップを更新する。例えば、適度に静的であるが計算集約的な高解像度のバックドロップを再レンダリングする必要が高いときを、ユーザ入力、AI状態、物理的状態、及びその他のゲーム状態等、いくつかの要因に基づいて決定するように、ニューラルネットワークを訓練することができる。高解像度のバックドロップをレンダリングするための強度値、色値、シェーディング値、テクスチャ値などの状態値は、高解像度のバックドロップを期待してリモートレンダリングジョブがディスパッチできるように、ニューラルネットワークを介して予測することができる。
【0012】
ゲームがこれらのもの全てをタイムリーに更新できることは重要であるが、ニューラルネットワークは、タスクを移動させる自由をシステムに提供する。クラウドベースの分散型ゲームエンジンである分散型ゲームエンジンで実行されているゲームについて考えてみる。分散型ゲームエンジンの個々のノードは、1人のユーザに対して妥当な品質の出力を処理できるが、高品質の出力は処理できない。これは、例えば、ノードのリソースが不十分なことが原因の場合がある。分散型ゲームエンジンの一部のノードは、計算集約的な構成要素の高品質グラフィックスレンダリングが可能な非常に高速なグラフィックプロセッシングユニット(GPU)を有し、分散型ゲームエンジンの他のノードは、非常に高い解像度テクスチャでアイテムをレンダリングできる大量のメモリを備えるが、比較的計算能力の低いGPUを有し、分散型ゲームエンジンの他のノードは、特殊な物理またはAI構成要素を有する。ゲームは、分散型ゲームエンジンの1つの汎用ノードで妥当な品質で実行できる、または、十分に早い段階で予想される場合は、高品質のジョブを分散型ゲームエンジンのあまり忙しくない、またはより専門的なノードに委託して、高品質の出力を返すことができる。深層学習の予測子は、これらの高品質のジョブをいつディスパッチするかを決定できる。予測が遅い場合、妥当な品質は汎用ノードでローカルに計算される。早期に予測した場合、高品質の出力は、適用されるまでに古くなり、破棄される。ただし、正しく予測された場合、例えば、遅くも早くもなく、時間どおりに予測した場合、高品質の出力が時間内に返され、他の中間結果と組み合わされて、より高品質の体験を提供する。分散型ゲームエンジンの全てのノードが同様に構成されている場合でも、一実施形態では、場合によっては、ノード間で負荷分散が適用される。負荷分散では、全てのリソースが全てのノードで同じ量で使用されるわけではない。
【0013】
一実施形態では、ゲームの実行における待ち時間を短縮する方法が説明される。方法は、コンピュータネットワークを介して、ゲームに関連するユーザ入力を受信することと、ユーザ入力からゲームの現在の状態を決定することとを含む。ゲームの現在の状態が決定されている間、方法は、ユーザ入力と1つまたは複数の予測されるユーザ入力とに基づいてゲームの次の状態を予測することを含む。方法はさらに、次の状態から1つまたは複数の予測画像フレームを生成することと、1つまたは複数の予測ユーザ入力がコンピュータネットワークを介して受信されたかどうかを判断することと、1つまたは複数の予測ユーザ入力を受信することに応答して1つまたは複数の予測画像フレームを送信して、ゲームの実行の待ち時間を短縮することとを含む。
【0014】
ある実施形態では、ゲームの実行における待ち時間を短縮するシステムが説明される。システムは、第1のノード及び第2のノードを含む。第1のノードは、コンピュータネットワークを介して、ゲームに関連するユーザ入力を受信し、ユーザ入力からゲームの現在の状態を決定する。第2のノードは第1のノードに結合される。第2のノードは、第1のノードからゲームに関連するユーザ入力を受信し、ゲームの現在の状態が決定されている間に、ユーザ入力と1つまたは複数の予測されるユーザ入力とに基づいてゲームの次の状態を予測する。第2のノードはさらに、次の状態から1つまたは複数の予測画像フレームを生成し、1つまたは複数の予測ユーザ入力がコンピュータネットワークを介して受信されたかどうかを判断し、1つまたは複数の予測ユーザ入力を受信することに応答して1つまたは複数の予測画像フレームを送信して、ゲームの実行中の待ち時間を短縮する。
【0015】
ある実施形態では、ゲームの実行において待ち時間を短縮するためのプログラム命令を含むコンピュータ可読媒体が説明される。コンピュータシステムの1つまたは複数のプロセッサによるプログラム命令の実行により、1つまたは複数のプロセッサは、上記のように、ゲームの実行における待ち時間を短縮する方法の複数の動作を実行する。
【0016】
分散型ゲームエンジンを使用して状態を予測するための本明細書に記載のシステム及び方法のいくつかの利点を説明する。状態が予測され、予測された状態に対するユーザ入力が分散型ゲームエンジンによって受信される前に、予測された状態の1つまたは複数のフレームが生成される。ユーザ入力が受信されると、フレームに従った画像を表示し、音声を生成するために、フレームが、コンピュータネットワークを介してクライアントデバイスに送信される。ユーザ入力が受信された後のフレーム生成の待ち時間が短縮または排除される。クライアントデバイスに画像が提供される速度と、ゲームアプリケーションなどのアプリケーションの実行速度が向上する。
【0017】
本開示の様々な実施形態は、添付図面と併せて、以下の記載を参照することによって、最も良く理解される。
【図面の簡単な説明】
【0018】
【
図1】ビデオゲームまたはビデオ会議アプリケーションなどのアプリケーションを説明するためのシステムの実施形態の図である。
【
図2A-1】状態1がノードAによって生成されているとき、予測状態2が別のノード1によって生成されていることを示すシステムの実施形態の図である。
【
図2A-2】状態1がノードAによって生成されているとき、予測状態2が別のノード1によって生成されていることを示すシステムの実施形態の図である。
【
図3A】分散型ゲームエンジン及び分散型予測子エンジンを示すシステムの実施形態の図である。
【
図3B】予測状態2の画像フレーム及びオーディオフレームが、クライアントデバイスを介してユーザAによって制御される仮想オブジェクトが位置cにある期間中に生成されることを示すシステムの実施形態の図である。
【
図3C】予測状態2が生成されている間、クライアントデバイスからコンピュータネットワークを介して分散型ゲームエンジンシステムによって受信されたユーザ入力1’が、状態1’の生成のトリガとして機能することを示す分散型ゲームエンジンシステムの実施形態である。
【
図3D】予測状態2のユーザ入力2を受信する代わりに、ユーザ入力1’を受信したときに、仮想オブジェクトまたは人工知能(AI)エンティティまたはAI仮想オブジェクトがレンダリングされ、仮想背景に追加されることを示す図である。
【
図4A】ノード1を使用して、仮想オブジェクトが仮想シーンで衝突する可能性が高い広い位相検出を実行し、別のノード2を使用して、仮想オブジェクトの衝突の接触点を決定するための狭い位相検出を実行することを示すシステムの実施形態の図である。
【
図4B】高品質のグラフィックスジョブがノード1からノード2にディスパッチされることを示すシステムの実施形態の図である。
【
図4C】物理予測エンジンに関連する1つまたは複数のタスクのノード1からノード2への割り当てを示すシステムの実施形態の図である。
【
図4D】AI予測エンジンに関連する1つまたは複数のタスクのノード1からノード2への割り当てを示すシステムの実施形態の図である。
【
図5】クライアントデバイスの実施形態の図である。
【
図6】本開示の実施態様による、クラウドビデオゲームを
図5のクライアントデバイスにストリーミングするために実行される様々な動作を概念的に示すフロー図である。
【
図7】
図5のクライアントデバイスのディスプレイデバイスとインタフェースするために互換性があり、コンピュータネットワークを介して分散型ゲームエンジンシステムと通信することができるゲームコンソールの実施形態のブロック図である。
【
図8】クライアントデバイスの例であるヘッドマウントディスプレイ(HMD)の構成要素を示す図である。
【
図9】情報サービスプロバイダ(INSP)アーキテクチャの実施形態を示す。
【発明を実施するための形態】
【0019】
分散型ゲームエンジンを使用して状態を予測するシステム及び方法を記載する。本開示の様々な実施形態は、これらの特定の詳細の一部または全てが無くても実施されることに留意されたい。他の例では、本開示の様々な実施形態を不必要に分かりにくくしないように、周知のプロセス動作については詳述していない。
【0020】
図1は、ビデオゲームまたはビデオ会議アプリケーションなどのアプリケーションを説明するためのシステム100の実施形態の図である。アプリケーションの例には、マルチプレイヤゲーム及びシングルプレイヤゲームが含まれる。マルチプレイヤゲームでは、複数のプレイヤがサーバシステム104からビデオゲームにアクセスする。例えば、第1のアバタは、マルチプレイヤゲームをプレイするユーザAによって制御され、第2の車は、マルチプレイヤゲームをプレイする別のユーザBによって制御される。さらに、マルチプレイヤゲームでは、人工知能(AI)によって制御されるノンプレイアブルキャラクタ(NPC)が存在する場合がある。AIは、ユーザではなくサーバシステム104によって実行及び制御される。AI NPCは、ユーザがクライアントデバイスを介して制御していないタイプの仮想オブジェクトである。シングルプレイヤゲームでは、1人または複数のプレイヤがサーバシステム104からビデオゲームにアクセスする。例として、アバタは、シングルプレイヤゲームをプレイするユーザAによって制御され、同じアバタが、シングルプレイヤゲームをプレイするユーザBによって制御される。
【0021】
システム100は、サーバシステム104と、コンピュータネットワーク102と、複数のクライアントデバイス1、2、及び3とを含む。サーバシステム104は、1つまたは複数のサーバを含み、これらは、サーバブレードまたはゲームコンソールであってよい。各サーバは、1つまたは複数のプロセッサと1つまたは複数のメモリデバイスとを含む。サーバの1つまたは複数のプロセッサは、1つまたは複数のメモリデバイスに結合される。本明細書で使用されるプロセッサの例には、中央処理装置(CPU)、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、及びプログラマブルロジックデバイス(PLD)が含まれる。一実施形態では、メモリデバイスは、データが読み出される、またはデータが書き込まれるデバイスである。メモリデバイスの例には、読み取り専用メモリ(ROM)デバイス、またはランダムアクセスメモリ(RAM)デバイス、またはそれらの組み合わせが含まれる。説明すると、メモリデバイスは、フラッシュメモリ、キャッシュ、または独立ディスクの冗長アレイ(RAID)を含む。
【0022】
コンピュータネットワーク102は、ビデオデータ及びオーディオデータなどのデータを、クライアントデバイスとサーバ間、またはクライアントデバイスとノード間、または複数のノード間、または複数のサーバ間、または複数のクライアントデバイス間で転送するために使用されて、分散型ゲームエンジン及び分散型予測子エンジンを含む分散型ゲームエンジンシステム(DGES)106の動作を促進する。コンピュータネットワーク102の例には、インターネットなどの広域ネットワーク(WAN)またはインターネットなどのローカルエリアネットワーク(LAN)、またはこれらの組み合わせが含まれる。
【0023】
本明細書で使用されるクライアントデバイスは、ユーザによって操作されて、分散型ゲームエンジンシステム106によって実行されるアプリケーションにアクセスするデバイスである。クライアントデバイスの例には、コンピュータ、タブレット、ゲームコンソール、スマートフォン、ハンドヘルドコントローラ、ヘッドマウントディスプレイ(HMD)、テレビとゲームコンソールとハンドヘルドコントローラの組み合わせ、並びに、HMDとハンドヘルドコントローラとゲームコンソールの組み合わせが含まれる。ハンドヘルドコントローラの例には、DualShock(登録商標)コントローラ及びMove(登録商標)モーションコントローラが含まれ、両方ともSony(登録商標)社から入手できる。ゲームコンソールとハンドヘルドコントローラとを含む組み合わせでは、ゲームコンソールは有線または無線接続を介してハンドヘルドコントローラに結合される。さらに、HMD、ハンドヘルドコントローラ、及びゲームコンソールの組み合わせにおいては、HMDは、有線接続または無線接続を介してゲームコンソールに結合される。有線接続の例には、シリアル転送ケーブルまたはパラレル転送ケーブルまたはユニバーサルシリアルバス(USB)ケーブルが含まれる。無線接続の例には、Bluetooth(登録商標)接続及びWi-Fi(登録商標)接続が含まれる。
【0024】
ゲームコンソール、またはHMD、またはハンドヘルドコントローラ、またはそれらの組み合わせは、例えば、クライアントデバイスの入力デバイス、例えば、ハンドヘルドコントローラ、HMD、マウス、キーパッド、ジョイスティック、タッチパッド、タッチスクリーンなどの位置の変更もしくは向きの変更もしくはそれらの組み合わせなど、または、ユーザAの身体の部分の動きなどのジェスチャをキャプチャするための1つまたは複数のカメラを含む。身体の部分の例には、腕、手、脚、手首、1本または複数の指、脚、膝、目、頭などが含まれる。本明細書で使用されるHMDは、仮想現実(VR)シーンや拡張現実(AR)シーンなどの仮想シーンを見るためにユーザが着用するディスプレイデバイスである。また、テレビは、ディスプレイデバイスの例であり、表示画面を備えている。本明細書で使用されるディスプレイデバイスの例には、液晶ディスプレイ(LDC)デバイス、発光ダイオードディスプレイ(LED)デバイス、及びプラズマディスプレイデバイスが含まれる。VRシーンまたはARシーンは、分散型ゲームエンジンシステム106によるアプリケーションの実行時に生成される。
【0025】
サーバシステム104は、分散型ゲームエンジンシステム106として集合的に動作する複数のノードを含む。例えば、分散型ゲームエンジンシステム106は、複数のAIエンジンAI1~AInを含み、ここで、nは、1より大きい整数である。さらに、分散型ゲームエンジンシステム106は、複数のオーディオエンジン(AE)AE1~AEn、複数の物理エンジンPE1~PEn、及び複数のグラフィックスエンジン(GE)GE1~GEnを含み、ここで、nは1より大きい整数である。一実施形態では、分散型ゲームエンジンシステム106は、複数の動画エンジン、複数のネットワークエンジン、複数のメモリ管理エンジン、複数のスクリーミングエンジン、及び/または複数のスクリプトエンジンをさらに含む。各AIエンジンAI1~AIn、オーディオエンジンAE1~AEn、物理エンジンPE1~PEn、及びグラフィックスエンジンGE1~GEnは、分散型ゲームエンジンシステム106の一部である。ある実施形態では、本明細書で使用されるエンジンは、ソフトウェアエンジンである。ソフトウェアエンジンは、ライブラリ、ソフトウェア開発キット(SDK)、または機能ブロックを示すオブジェクトである。ソフトウェアエンジンは、グラフィックスプロセッシングユニット(GPU)や中央処理装置(CPU)などの1つまたは複数のプロセッサによって実行される。一実施形態では、本明細書で使用される各エンジンは、仮想マシン(VM)である。ある実施形態では、各エンジンは、プロセッサまたはハードウェアデバイスである。一実施形態では、各エンジンは、ニューラルネットワークまたはニューラルネットワークの一部である。
【0026】
分散型ゲームエンジンシステム106は、アプリケーション、例えば、ゲームコンピュータプログラム、VRシーンを生成するためのコンピュータプログラム、拡張現実ARシーンを生成するためのコンピュータプログラム、VRシーンもしくはARシーンを生成するための物理法則を適用するための物理ソフトウェアプログラム、VRシーンもしくはARシーンを生成するためのレンダリング操作を適用するためのレンダリングコンピュータプログラムを記憶する。例として、アプリケーションの一部は、分散型ゲームエンジンシステム106のノードAによって記憶及び実行され、アプリケーションの別の部分は、分散型ゲームエンジンシステム106の別のノード1によって記憶及び実行され、アプリケーションの残りの部分は、分散型ゲームエンジンシステム106のさらに別のノード2によって記憶及び実行される。本明細書で使用されるノードは、ハードウェアサーバまたはゲームコンソール、またはアプリケーションの少なくとも一部を実行するための分散型ゲームエンジンシステム106のハードウェアサーバである。例として、ノードは、別のノードのハウジングとは別個のハウジングを有する。別の例として、ノードは、データセンタ内で別のノードが配置されているラックとは異なる、データセンタ内のラックに配置される。さらに別の例として、分散型ゲームエンジンシステム106のノードは、分散型ゲームエンジンシステム106の別のノードとは異なるデータセンタ内に配置される。
【0027】
ある実施形態では、複数のノードが単一のハウジング内に配置される。例えば、PlayStation Now(登録商標)サーバの場合、1つのハウジングが複数のノードによって共有される。複数のノードが1つのハウジングに収容されているとき、各ノードは、ネットワーク通信デバイスを介してコンピュータネットワーク102への独自のネットワーク接続性を有する。しかしながら、代替案として、単一のハウジングはネットワーク通信デバイスを含み、ノードは同じネットワーク通信デバイスを介してコンピュータネットワーク102に結合される。単一のハウジングが複数のノードを有することにより、スループットと待ち時間という点で接続性の向上が可能になる。
【0028】
一実施形態では、ノードは、コンピュータシステムのエミュレーションである仮想マシンである。仮想マシンでは、ハイパーバイザは、プロセッサやメモリデバイスなどのハードウェアリソースを共有及び管理して、1つまたは複数のオペレーティングシステム上でアプリケーションを実行するコンピュータソフトウェアもしくはハードウェア、または、それらの組み合わせである。例として、仮想マシンは、オペレーティングシステムと、オペレーティングシステム上で実行する1つまたは複数のアプリケーションコンピュータプログラムと、ノードによって実行されるとして本明細書に記載されている機能を実行するためにオペレーティングシステム及びハイパーバイザを介して1つまたは複数のアプリケーションコンピュータプログラムによってアクセスされる1つまたは複数のハードウェアリソース、例えば、中央処理装置、グラフィックプロセッシングユニット、ビデオエンコーダ、オーディオエンコーダ、ビデオコーデック、オーディオコーデック、ビデオデコーダ、オーディオデコーダ、ネットワーク通信デバイス、メモリデバイス、内部通信デバイス等と、を含む。上記のアプリケーションは、アプリケーションコンピュータプログラムの例である。
【0029】
さらに、ある実施形態では、物理エンジンは、物理法則を適用して、VRシーンまたはARシーンであり得る仮想シーンの仮想オブジェクトまたは仮想背景の位置及び向きを決定する。本明細書で使用される仮想オブジェクトの例には、仮想の銃、仮想の槍、仮想のボルダ、仮想の武器、アバタ、仮想キャラクタ等が含まれる。本明細書で使用される仮想背景の例には、仮想の部屋、仮想の自然環境、仮想の木、仮想の海、及び仮想オブジェクトが配置されている仮想環境が含まれる。一実施形態では、仮想バックドロップ及び仮想背景という用語は、本明細書では交換可能に使用される。仮想オブジェクトまたは仮想背景は、クライアントデバイス1を介してユーザAによって制御される。一実施形態では、仮想オブジェクトまたは仮想背景は、ユーザAの代わりにAIによって制御される。複数の位置及び複数の向きは、仮想オブジェクトまたは仮想背景の動きを規定する。物理エンジンは、仮想シーン内の様々な部分間及び様々な仮想シーン間の物理的関係を決定するように実行されるコンピュータプログラムである。物理的関係は、重力法則、運動法則、摩擦法則などの物理法則に基づいて決定される。
【0030】
一実施形態では、AIエンジンは、ビデオゲーム内の仮想オブジェクトまたは仮想キャラクタの動き及び機能を決定し、その仮想オブジェクトまたは仮想キャラクタは、クライアントデバイスを介してユーザによって制御することはできない。
【0031】
ある実施形態では、オーディオエンジンは、ゲームの対応する仮想シーンのオーディオデータを決定し、提供する。例えば、仮想シーンのある部分が音声を出すとき、オーディオエンジンは、音声と、例えば、ピッチ、トーン、振幅などの音声の他の変数とを出力するためのオーディオデータを決定し、オーディオデータを仮想シーンのその部分とリンクさせる。
【0032】
ある実施形態では、グラフィックスエンジンは、レンダリングエンジンまたはレンダラまたはレンダリング操作である。レンダリングエンジンまたはレンダラまたはレンダリング操作は、色、テクスチャ、陰影、強度、照明、またはそれらの組み合わせなどのグラフィックスを仮想オブジェクトの2次元(2D)モデルまたは三次元(3D)モデルに適用して、仮想オブジェクトの2Dまたは3D表現を作成し、グラフィックスを仮想背景の2Dまたは3Dモデルに適用して、仮想背景の表現を作成し、1つまたは複数の画像フレームを出力する。本明細書で使用される仮想オブジェクトのモデルは、仮想オブジェクトの位置及び向きを有し、仮想背景のモデルは、仮想背景の位置及び向きを有する。例えば、モデルは頂点を有するグリッドであり、仮想オブジェクトまたは仮想背景の形状を規定する。形状は、仮想オブジェクトまたは仮想背景に対して計算された位置及び向きに従って規定される。レンダリングエンジンは、仮想シーンの仮想オブジェクトや仮想背景など、1つまたは複数の部分の2Dまたは3Dモデルから画像を生成する。例えば、レンダリングエンジンは、仮想シーンの1つまたは複数の部分に適用される色、テクスチャリング、シェーディング、及び光の強度を規定する。
【0033】
サーバシステム104は、1つまたは複数の画像フレームを符号化して1つまたは複数の符号化された画像フレームを出力し、1つまたは複数の符号化された画像フレームを復号して1つまたは複数の復号された画像フレームを出力するビデオコーデック108を含む。例えば、ビデオコーデック108は、1つまたは複数のプロセッサまたはコンピュータソフトウェアとして実装されて、H.264などのビデオ符号化プロトコルを使用して1つまたは複数の画像フレームを圧縮または解凍する。ビデオ符号化プロトコルは、ビデオ復号プロトコルでもある。別の例として、ビデオコーデック108は、ハードウェアデバイス、例えば、集積回路、プロセッサ等、または、ソフトウェアモジュール、例えば、コンピュータプログラム等、または、これらの組み合わせであり、ビデオファイルフォーマットまたはストリーミングビデオフォーマットまたはビデオ符号化フォーマット、例えば、H.264、H.265/MPEG-H、H.263/MPEG-4、H.262/MPEG-2a、カスタマイズされたプロトコル等に従って、画像フレームを圧縮または解凍する。ある実施形態では、圧縮及び符号化という用語は、本明細書では交換可能に使用され、解凍及び復号という用語は、本明細書では交換可能に使用される。
【0034】
一実施形態では、ビデオコーデック108に加えて、オーディオコーデックがシステム100で使用されて、オーディオ符号化プロトコルを適用してオーディオデータを符号化して1つまたは複数の符号化されたオーディオフレームを出力し、オーディオ復号プロトコルを適用してオーディオフレームを復号して1つまたは複数の復号されたオーディオデータを出力する。オーディオ符号化プロトコルは、オーディオ復号プロトコルでもある。オーディオコーデックは、ハードウェアデバイス、例えば、集積回路、プロセッサなど、またはソフトウェアモジュール、例えば、コンピュータプログラムなど、またはそれらの組み合わせであり、オーディオファイルフォーマットまたはストリーミングオーディオフォーマットに従ってオーディオデータを圧縮または解凍する。
【0035】
ユーザAは、クライアントデバイス1を操作して、サーバシステム104に記憶されたアプリケーションにアクセスする。例えば、ユーザAは、ウェブサイトまたはユーザアプリケーションを介してサーバシステム104に記憶された自分のユーザアカウントにログインして、サーバシステム104に記憶されたアプリケーションにアクセスする。アプリケーションにアクセスすると、ユーザAはクライアントデバイス1を使用してユーザ入力1を提供する。ユーザ入力1の例は、クライアントデバイス1のボタンの選択、クライアントデバイス1のタッチ、ユーザAが自分の身体もしくはクライアントデバイス1を用いて行うジェスチャである。ある実施形態では。ユーザ入力は、クライアントデバイス1の1つまたは複数のジョイスティックの1つまたは複数の動き、またはユーザAが行った1つまたは複数のジェスチャ、またはクライアントデバイス1の1つまたは複数のボタンの1つまたは複数の選択を含む。
【0036】
ユーザ入力1は、クライアントデバイス1からコンピュータネットワーク102を介してサーバシステム104に送信されて、アプリケーションの状態を変更する。例えば、物理エンジンPE1~PEnの1つまたは複数は、仮想シーン内の仮想オブジェクトの1つまたは複数の位置、仮想オブジェクトの1つまたは複数の向き、仮想シーン内の仮想背景の1つまたは複数の位置、及び仮想背景の1つまたは複数の向きを出力する。また、オーディオエンジンAE1~AEnの1つまたは複数は、仮想オブジェクトが発するオーディオデータを出力し、仮想シーンにおいてAIが出力するオーディオデータを出力し、仮想背景と共に出力されるオーディオデータを出力する。さらに、AIエンジンAI1~AInの1つまたは複数は、仮想シーンにおけるAIの1つまたは複数の位置及び1つまたは複数の向きを出力する。グラフィックスエンジンGE1~GEnの1つまたは複数は、色、テクスチャ、強度、シェーディング、照明などのグラフィックスを、仮想シーン内の仮想オブジェクトのモデル、AIのモデル、及び仮想背景のモデルに提供して、1つまたは複数の画像フレームを出力する。仮想シーン内の仮想オブジェクトは、ユーザ入力1によって制御され、ユーザAのアバタまたは表現であってよい。
【0037】
ビデオコーデック108は、ユーザ入力1に基づいて生成された1つまたは複数の画像フレームを、グラフィックスエンジンGE1~GEnの1つまたは複数から受信し、1つまたは複数の画像フレームを符号化して、符号化されたビデオフレーム1のビデオストリームを出力する。さらに、オーディオコーデックは、オーディオエンジンAE1~AEnの1つまたは複数から出力されたユーザ入力1に基づいて生成されたオーディオデータを受信し、オーディオデータを符号化して、1つまたは複数の符号化されたオーディオフレームを出力する。符号化されたビデオフレーム1及び符号化されたオーディオフレームは、インターネットプロトコル(IP)を介した伝送制御プロトコル(TCP)などの外部通信プロトコルを適用してパケットを生成することにより、サーバシステム104によってパケット化される。パケットは、サーバシステム104からコンピュータネットワーク102を介してクライアントデバイス1に送信される。
【0038】
クライアントデバイス1は、サーバシステム104からパケットを受信し、外部通信プロトコルを適用してパケットをデパケット化し、符号化されたビデオフレーム1及び符号化されたオーディオフレームをパケットから抽出する。さらに、クライアントデバイス1は、ビデオ復号プロトコルを適用して、符号化されたビデオフレーム1を解凍または復号して画像フレームを取得し、オーディオ復号プロトコルを適用して、符号化されたオーディオフレームを解凍または復号してオーディオフレームを取得する。オーディオフレームのオーディオデータは、クライアントデバイス1によって音声として出力される。さらに、画像フレームは、クライアントデバイス1のディスプレイデバイス上に画像として表示される。本明細書で使用されるディスプレイデバイスの例には、液晶ディスプレイ(LCD)デバイス、発光ダイオード(LED)ディスプレイデバイス、及びプラズマディスプレイデバイスが含まれる。
【0039】
同様に、ユーザ入力は、コンピュータネットワーク102を介してサーバシステム104によってクライアントデバイス2から受信されて、符号化されたビデオフレーム及び符号化されたオーディオフレームを含む符号化されたフレーム2を出力する。符号化されたフレーム2は、サーバシステム104からコンピュータネットワーク102を介してクライアントデバイス2に送信され、クライアントデバイス2のディスプレイデバイス上に1つまたは複数の画像を表示し、クライアントデバイス2上に音声を出力する。クライアントデバイス2は、ユーザ2によって操作され、クライアントデバイス1を介してユーザAによって制御されるアバタとは異なるアバタを制御するために使用することができる。また、同様に、ユーザ入力は、クライアントデバイス3から、コンピュータネットワーク102を介してサーバシステム104によって受信されて、符号化されたビデオフレーム及び符号化されたオーディオフレームを含む符号化されたフレーム3を出力する。符号化されたフレーム3は、サーバシステム104からコンピュータネットワーク102を介してクライアントデバイス3に送信されて、クライアントデバイス3のディスプレイデバイス上に1つまたは複数の画像を表示し、クライアントデバイス3上で音声を出力する。クライアントデバイス3は、ユーザ3によって操作され、クライアントデバイス1を介してユーザAによって制御されるアバタとは異なるアバタを制御するために使用することができる。また、クライアントデバイス3は、クライアントデバイス2を介してユーザBによって制御されるアバタとは異なるアバタを制御するために使用することができる。
【0040】
図2Aは、状態1がノードAによって生成されているとき、予測状態2がノード1によって生成されていることを示すシステム200の実施形態の図である。状態1は、本明細書では現在の状態と呼ばれることもあり、予測状態2は、本明細書では次の状態と呼ばれることもある。
図2Bは、システム200の残りの部分の図である。システム200は、ノードA及びノード1を含む。さらに、システム200は、コンピュータネットワーク102、ノードアセンブリサーバ202、クラウドゲームサーバ204、及びクライアントデバイス1を含む。さらに、システム200は、スイッチシステム206を含む。
【0041】
スイッチシステム206は、ノードアセンブリサーバ202と、本明細書に記載するノードA、B(図示せず)、及びC(図示せず)のうちの2つ以上との間のデータの転送を容易にする1つまたは複数のスイッチを含む。例えば、スイッチシステム206は、スイッチファブリックである。スイッチファブリックは、2つ以上のノードA、B、及びCの間に大量の帯域幅を提供し、動的に頻繁に再構成され、サービス品質(QoS)を可能にする。説明すると、QoSは、2つ以上のノード間に十分な容量がなく、QoSがデータの送信を再試行するとき、リンクの輻輳を軽減しやすくする。2つ以上のノードA、B、及びCの一部は、やがて、容量が不足している2つ以上のノードA、B、及びCの残りのデータの処理を開始する。別の例として、スイッチシステム206は、マルチプレクサを含み、マルチプレクサは、分散型ゲームエンジンシステム106を形成し、ノードアセンブリサーバ206からデータを転送し、且つ、コンピュータネットワーク102を介してクライアントデバイス1、2、及び3の1つまたは複数にデータを転送するノードを2つ以上のノードA、B、及びC(
図1)の中から選択する。別の例として、スイッチシステム206は、ノードアセンブリサーバ202と2つ以上のノードA、B、及びCとの間のデータの転送を容易にする1つまたは複数のトランジスタを含む。さらに別の例として、スイッチシステム206は、1つまたは複数のスイッチを含み、各スイッチは、開位置と閉位置の間で位置を変える。スイッチの開位置は、ノードアセンブリサーバ202を、スイッチに結合されているノードから切り離す。スイッチの閉位置は、ノードアセンブリサーバ202を、スイッチに結合されたノードに結合する。一実施形態では、ノードA、B、及びCは、分散型ゲームエンジンのノードであり、本明細書で説明されるノード1、及び2は、分散型予測子エンジンのノードである。
【0042】
クラウドゲームサーバ204とクライアントデバイス1、2、及び3とは、コンピュータネットワーク102に結合される。さらに、ノードアセンブリサーバ202は、クラウドゲームサーバ204に結合される。
【0043】
ノードAは、中央処理装置A(CPU A)、メモリデバイスA、別の中央処理装置A1(CPU A1)、メモリデバイスA1、グラフィックスプロセッシングユニットA(GPU A)、GPUメモリデバイスA、内部通信デバイスA、ネットワーク通信デバイスA、オーディオエンコーダA、及びビデオエンコーダAを含む。ノードAのCPU A、メモリデバイスA、CPU A1、メモリデバイスA1、GPU A、GPUメモリデバイスA、内部通信デバイスA、ネットワーク通信デバイスA、オーディオエンコーダA、及びビデオエンコーダA等の構成要素は、バスAを介して互いに結合される。
【0044】
本明細書で使用されるGPUは、レンダリングコンピュータプログラムを実行して、ARシーンまたはVRシーンの色、テクスチャ、強度、シェーディング、及び照明などの状態情報を含むビデオフレームを生成する。GPUの例には、プロセッサ、ASIC、及びPLDが含まれる。一実施形態では、「ビデオフレーム」及び「画像フレーム」という用語は、本明細書では交換可能に使用される。
【0045】
本明細書で使用される内部通信デバイスは、あるノードと別のノードとの間でデータを通信するために使用される。内部通信デバイスは、内部通信プロトコル、例えば、ダイレクトメモリアクセス(DMA)プロトコル、リモートDMA(RDMA)プロトコル、RDMA over converged Ethernet(登録商標)、インフィニバンド、イーサネット(登録商標)プロトコル、カスタマイズされたプロトコル、シリアル転送プロトコル、パラレル転送プロトコル、USBプロトコル、無線プロトコル、Bluetooth(登録商標)プロトコル、有線プロトコル、ユニバーサルデータグラムプロトコル(UDP)、UDP over Internetプロトコル、伝送制御プロトコル(TCP) over IPプロトコル、Ethernet(登録商標) over TCP/IPプロトコルなどを適用して、2つのノード間でデータを通信する。DMAの例として、PCI Express不透明スイッチチップ、RDMAチップ、RDMA over converged Ethernet(登録商標)チップ、またはインフィニバンドチップなど、ノードの内部通信チップは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)通信バスを介して通信して、1つまたは複数の他のノードのメモリデバイスに直接書き込むか、メモリデバイスから直接読み出す。さらに、PCIeのような通信バスでは、GPUやその他のデバイスなどの周辺機器は、各周辺機器がバス上に割り当てられたメモリアドレス空間を持っているため、メモリベースである。説明すると、あるノードのGPUは、内部通信プロトコルを適用して、別のノードのGPUのレジスタまたはバッファに書き込む、または読み出す。このようにして、ノードは共有メールボックスレジスタを介して別のノードと通信する。他のノードがそのノードに対して読み出しまたは書き込みを行うとき、ノードのCPUで実行されているアプリケーションの一部またはアプリケーションに割り込みがある。他のノードは、ノードへの読み出しまたはノードからの書き込みの前に割り込み信号を送信する。
【0046】
本明細書で使用される内部通信デバイスの例には、プロセッサ、ASIC、及びPLDが含まれる。説明すると、内部通信デバイスは、PCI Express不透明スイッチチップまたはRDMAチップ、またはRDMA over converged Ethernet(登録商標)チップ、またはインフィニバンドチップである。別の例として、内部通信デバイスは、ネットワークインタフェースコントローラまたはネットワークインタフェースカード(NIC)、データのシリアル転送を使用して通信するデバイス、データのパラレル転送を使用して通信するデバイス、またはUSBプロトコルを使用して通信するデバイスである。
【0047】
PCI-Express及びRDMA技術は、CPUによって実行されるオペレーティングシステムでオーバーヘッドを生成するプロトコルレイヤを排除するため、イーサネット(登録商標)プロトコルまたはTCPプロトコルまたはUDPプロトコルと比較して、待ち時間が大幅に短く、パフォーマンスが高いことに留意されたい。DMAプロトコルを実行するノード内のDMAエンジンは、ノードが他のノード内のデータブロックへのアクセスを許可されているとき、ノード内のオペレーティングシステムをバイパスして、他のノードのメモリから直接読み出しまたは書き込みを行う。イーサネット(登録商標)プロトコル、またはTCPプロトコル、またはUDPプロトコルなどのネットワークプロトコルはなく、ノードのDMAエンジンが、メモリとその内部構造をどのように編成するかを決定する。ノードと他のノードとの間のメモリ転送操作が必要な場合、ノードの内部通信チップはDMAエンジンを実行して、ノードのCPUを使用せずに他のノードからデータを読み書きする。
【0048】
一実施形態では、本明細書に記載されるあるノードは、ケーブルまたはコンピュータネットワーク102を介して、本明細書に記載の別のノードに結合される。例えば、ノードAは、同軸ケーブル、USBケーブル、またはインターネットを介してノード1に結合される。別の例として、ノード1は、ケーブルまたはコンピュータネットワーク102を介して別のノード2に結合される。
【0049】
ネットワーク通信デバイスは、コンピュータネットワーク102を介してノードとクライアントデバイスとの間でデータパケットを転送するために使用される。例えば、ネットワーク通信デバイスは、TCP/IP、UDP/IPなどの外部通信プロトコルを適用して、データパケットを送受信する。ネットワーク通信デバイスの例には、プロセッサ、ASIC、及びPLDが含まれる。説明すると、ネットワーク通信デバイスは、ネットワークインタフェースコントローラまたはNICである。
【0050】
同様に、ノード1は、中央処理装置1(CPU1)、メモリデバイス1、別の中央処理装置1a(CPU1a)、メモリデバイス1a、グラフィックスプロセッシングユニット1(GPU1)、GPUメモリデバイス1、内部通信デバイス1、ネットワーク通信デバイス1、オーディオエンコーダ1、及びビデオエンコーダ1を含む。ノード1のCPU1、メモリデバイス1、CPU1a、メモリデバイス1a、GPU1、GPUメモリデバイス1、内部通信デバイス1、ネットワーク通信デバイス1、オーディオエンコーダ1、及びビデオエンコーダ1等の構成要素は、バス1を介して互いに結合される。
【0051】
クライアントデバイス1は、ゲーム要求210を生成し、コンピュータネットワーク102を介してクラウドゲームサーバ204に送信する。例えば、ユーザAは、クライアントデバイス1の入力デバイスを使用して、入力デバイス上の1つまたは複数のボタンを選択して、ゲーム要求210を生成する。クラウドゲームサーバ204は、ゲーム要求210に基づいて、クライアントデバイス1のユーザAがゲーム要求210を生成するためにアクセスするユーザアカウントが、分散型ゲームエンジンシステム106へのアクセスを許可されているかどうかを判断する。クライアントデバイス1のユーザAは、クライアントデバイス1の入力デバイスを介して、ユーザアカウントにアクセスするためのログイン情報、例えば、ユーザ名、パスワードなどを提供する。ログイン情報がクラウドゲームサーバ204によって認証されると、クライアントデバイス1のユーザAは、ユーザアカウントへのアクセスを提供される。ユーザAのユーザアカウントが分散型ゲームエンジンシステム106へのアクセスを許可されていると判断すると、クラウドゲームサーバ204は、クライアントデバイス1及びコンピュータネットワーク102を介したアプリケーションの実行へのアクセスを可能にするための信号をノードアセンブリサーバ202に送信する。アプリケーションは、分散型ゲームエンジンシステム106(
図1)のノードA、B、C、1、及び2のうちの1つまたは複数によって実行される。
【0052】
一実施形態では、ログイン情報の認証に加えて、クライアントデバイス1が分散型ゲームエンジンシステム106によって実行されているアプリケーションにアクセスするためにノードアセンブリサーバ202に結合することを可能にする前に実行される追加の操作がある。例えば、コンピュータネットワーク102に結合されたネットワークテストサーバ(図示せず)は、分散型ゲームエンジンシステム106によって実行されるアプリケーションにアクセスするためにクラウドゲームサーバ204から信号を受信し、分散型ゲームエンジンシステム106を有する複数のデータセンタへの帯域幅pingを実行する。テストの結果は、ネットワークテストサーバによってクラウドリソースマネージャ(図示せず)に提供される。クラウドリソースマネージャは、コンピュータネットワーク102に結合されたサーバである。クラウドリソースマネージャは、アプリケーションにアクセスするために、どのデータセンタをクライアントデバイス1に接続するかを決定する。この決定は、テスト結果と、十分な数のノードの可用性やアプリケーションが記憶されているデータセンタなどの他の情報に基づく。クラウドリソースマネージャは、ノードA、B、C、1、及び2の1つまたは複数を有するデータセンタの1つまたは複数を選択し、信号をノードアセンブリサーバ202に送信して、ノードA、B、C、1、及び2の1つまたは複数を選択する。
【0053】
クラウドリソースマネージャから信号を受信すると、ノードアセンブリサーバ202は、スイッチシステム206を介して、アプリケーションを実行する分散型ゲームエンジンシステム106のノードA、B、C、1、及び2のうちの1つまたは複数を選択して、ノードA、B、C、1、及び2のうちの1つまたは複数を初期化する。例えば、ノードアセンブリサーバ202は、スイッチシステム206の制御入力部に信号を送信して、ノードA及び1、またはノードA及びB、またはノード1及び2、またはノードA、1及び2に結合する。制御入力部で信号を受信すると、スイッチシステム206は、スイッチの1つまたは複数の位置を閉じて、ノードアセンブリサーバ202を、スイッチの1つまたは複数に結合された分散型ゲームエンジンシステム106のノードの対応する1つまたは複数のノードに接続し、スイッチの残りの位置を開いて、分散型ゲームエンジンシステム106の残りのノードをノードアセンブリサーバ202から切断する。スイッチシステム206を介してノードアセンブリサーバ202に接続されると、分散型ゲームエンジンシステム106のノードA、B、C、1、及び2のうちの1つまたは複数は、アプリケーションを実行して、ノードA、B、C、1、及び2の1つまたは複数から符号化されたフレームをコンピュータネットワーク102を介してクライアントデバイス1に転送する。
【0054】
ノードA、B、C、1、及び2のうちの1つまたは複数がスイッチシステム206によって選択された後、ユーザAは、クライアントデバイス1の入力デバイスを使用して、コンピュータネットワーク102を介してユーザ入力1をノードAに提供する。例えば、ユーザAがクライアントデバイス1の入力デバイス上の1つまたは複数のボタンを選択するか、入力デバイス1を移動するか、またはそれらの組み合わせを行うとき、ユーザ入力1が生成される。別の例として、ユーザ入力1は、入力デバイスまたはユーザAの身体部分またはそれらの組み合わせの動きの1つまたは複数の画像フレームを含む。画像フレームは、クライアントデバイス1の1つまたは複数のカメラによってキャプチャされる。ユーザ入力1は、クライアントデバイス1によって外部通信プロトコルを使用してパケット化されて、1つまたは複数のパケットを生成し、パケットは、クライアントデバイス1からコンピュータネットワーク102を介してノードAのネットワーク通信デバイスAに送信される。ネットワーク通信デバイスAは、外部通信プロトコルを適用して、ユーザ入力1を有する1つまたは複数のパケットをデパケット化して、ユーザ入力1を抽出し、ユーザ入力1をCPU Aに提供する。
【0055】
CPU Aは、ユーザ入力1を分析して、クライアントデバイス1の入力デバイスの位置及び向きの変化を判断するか、入力デバイス上でボタンの選択があるかどうかを判断するか、またはユーザAの身体部分の位置及び向きの変化があるかどうかを判断するか、またはそれらの組み合わせを行う。CPU Aは、物理エンジンを実行して、クライアントデバイス1の入力デバイスを使用してユーザAによって制御される仮想シーン内の仮想オブジェクトの1つまたは複数の位置と1つまたは複数の向きとを決定する。仮想オブジェクトの1つまたは複数の位置と1つまたは複数の向きとは、クライアントデバイス1の入力デバイスの位置及び向きの変化、またはユーザAの身体部分の位置及び向きの変化、または入力デバイス上のボタンの選択、またはそれらの組み合わせに対応する。CPU Aはさらに、オーディオエンジンを適用して、状態1の仮想オブジェクトの1つまたは複数の位置及び1つまたは複数の向きに対応するオーディオデータを決定する。状態1の仮想オブジェクトの1つまたは複数の位置、状態1の仮想オブジェクトによって出力されるオーディオデータ、及び状態1の仮想オブジェクトの1つまたは複数の向きは、CPU AによってメモリデバイスAに記憶される。ある実施形態では、仮想背景は、仮想オブジェクトの例である。例えば、仮想背景は仮想シーン内の仮想オブジェクトであり、別の仮想オブジェクトも仮想シーン内に存在する。これらの仮想オブジェクトの一方または両方は、クライアントデバイス1を介してユーザAによって制御される。
【0056】
さらに、CPU A1は、状態1の仮想オブジェクトの1つまたは複数の位置、状態1の仮想オブジェクトによって出力されるオーディオデータ、並びに状態1の仮想オブジェクトの1つまたは複数の向きにメモリデバイスAからアクセスする。CPU A1は、状態1の仮想オブジェクトの1つまたは複数の位置、状態1の仮想オブジェクトによって出力されるオーディオデータ、並びに状態1の仮想オブジェクトの1つまたは複数の向きにAIエンジンを適用する。AIエンジンは、CPU A1によって適用されて、ユーザAによって制御される仮想オブジェクトを有する仮想シーン内の1つまたは複数のAIの1つまたは複数の位置、1つまたは複数のAIの1つまたは複数の向き、並びに1つまたは複数の位置と1つまたは複数の向きとに対応するオーディオデータを決定する。ユーザAによって制御される仮想オブジェクトを有する仮想シーン内の1つまたは複数のAIの1つまたは複数の位置、1つまたは複数のAIの1つまたは複数の向き、並びに1つまたは複数の位置と1つまたは複数の向きとに対応するオーディオデータは、状態1に関する。また、1つまたは複数のAIの1つまたは複数の位置と1つまたは複数の向きとに対応するオーディオデータは、1つまたは複数のAIによって出力される。状態1の1つまたは複数のAIの1つまたは複数の位置、状態1の1つまたは複数のAIの1つまたは複数の向き、並びに状態1の1つまたは複数のAIによって出力されるオーディオデータは、CPU A1によってメモリデバイスA1に記憶される。
【0057】
GPU Aは、仮想オブジェクトの1つまたは複数の位置及び仮想オブジェクトの1つまたは複数の向きにメモリデバイスAからアクセスし、1つまたは複数のAIの1つまたは複数の位置及び1つまたは複数のAIの1つまたは複数の向きにメモリデバイスA1からアクセスし、仮想オブジェクト及び1つまたは複数のAIの位置及び向きにレンダリングエンジンを適用して、状態1の1つまたは複数の画像フレームを生成する。状態1の画像フレームは、GPU AによってGPUメモリデバイスAに記憶される。
【0058】
オーディオエンコーダAは、メモリデバイスAからの仮想オブジェクトのオーディオデータに、メモリデバイスA1から1つまたは複数のAIのオーディオデータにアクセスして、1つまたは複数のオーディオフレームを生成し、状態1のオーディオフレームを符号化して、状態1の1つまたは複数の符号化されたオーディオフレームを出力する。同様に、ビデオエンコーダAは、GPUメモリデバイスAから状態1の画像フレームにアクセスし、画像フレームを符号化して、状態1の1つまたは複数の符号化された画像フレームを出力する。
【0059】
ネットワーク通信デバイスAは、状態1の符号化された画像フレームをビデオエンコーダAから受信し、状態1の符号化されたオーディオフレームをオーディオエンコーダAから受信し、外部通信プロトコルを状態1の符号化されたフレームに適用して、状態1の1つまたは複数のパケットを生成する。状態1の符号化されたフレームは、状態1の符号化された画像フレーム及び状態1の符号化されたオーディオフレームを含む。ネットワーク通信デバイスAは、コンピュータネットワーク102を介して状態1のパケットを、クライアントデバイス1のディスプレイデバイス上に状態1の1つまたは複数の画像を表示し、クライアントデバイス1を介して音声を出力するために、クライアントデバイス1に送信する。画像は、状態1の符号化された画像フレームに基づいて生成され、音声は、状態1の符号化されたオーディオフレームに基づいて出力される。
【0060】
CPU Aは、ユーザ入力1をメモリデバイスAに記憶する。物理エンジンがCPU Aによって適用され、オーディオエンジンがCPU Aによって適用され、AIエンジンがCPU A1によって適用され、及び/またはグラフィックスエンジンがGPU Aによって適用されている間に、ノード1はその物理予測エンジン、オーディオ予測エンジン、AI予測エンジン、及び/またはグラフィックス予測エンジンを適用して、予測状態2を決定する。予測状態2は、状態1の次の状態、または次の状態の例である。例えば、物理エンジンがCPU Aによって適用され、オーディオエンジンがCPU Aによって適用され、AIエンジンがCPU A1によって適用され、及び/またはグラフィックスエンジンがGPU Aによって適用されている期間に、CPU Aは、予測状態2が生成されるべきであると判断する。予測状態2が生成されるべきであると判断すると、CPU Aは、ノードAの内部通信デバイスAに、メモリデバイスAからユーザ入力1にアクセスし、ノード1のCPU1によるアクセスのためにユーザ入力1をノード1に提供するように命令する。ノードAの内部通信デバイスAは、内部通信プロトコルをユーザ入力1に適用して、ユーザ入力1を有する1つまたは複数の転送ユニットを生成し、転送ユニットをノード1に送信する。ノード1の内部通信デバイス1は、ノードAの内部通信デバイスAからユーザ入力1を有する1つまたは複数の転送ユニットを受信し、内部通信プロトコルを適用して1つまたは複数の転送ユニットを解析し、1つまたは複数の転送ユニットからユーザ入力1を取得する。ユーザ入力1は、内部通信デバイス1により、ノード1のメモリデバイス1に記憶される。例えば、内部通信デバイス1は、ノードAのCPU Aから、内部通信デバイスAを介して、CPU1によるアクセスのためにメモリデバイス1にユーザ入力1を記憶する命令を受信する。
【0061】
ノード1のCPU1は、メモリデバイス1からユーザ入力1にアクセスし、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの1つまたは複数の位置、1つまたは複数の向き、またはそれらの組み合わせなどの動きを決定する。予測されたユーザ入力2と、同じく予測されたユーザ入力3から予測状態2の動きが決定される。例えば、CPU1は、物理法則を適用して、ユーザ入力2がコンピュータネットワーク102を介してクライアントデバイス1から受信された場合の仮想オブジェクトの追加の動きを予測し、ユーザ入力3がコンピュータネットワーク102を介してクライアントデバイス1から受信された場合の仮想オブジェクトのさらなる動きを予測する。ユーザ入力2及び3は、予測されたユーザ入力の例であり、予測状態2の仮想オブジェクトの動きが決定された時点ではまだ実際には受信されていない。ユーザ入力1が受信された後、ユーザ入力2及び3が受信されること、またはユーザ入力2及び3が受信される可能性が高いこと、またはユーザ入力2及び3が受信される可能性があることが、CPU1により予測される。ユーザ入力2は、ユーザ入力1を受信した後、クライアントデバイス1から順次受信されるとCPU1によって予測され、ユーザ入力3は、ユーザ入力2を受信した後に順次受信されるとCPU1によって予測される。例として、予測状態2は、ユーザ入力2に基づく、またはそれに対応する仮想オブジェクトの位置及び向きを含み、ユーザ入力3に基づく、またはそれに対応する仮想オブジェクトの位置及び向きをさらに含む。仮想オブジェクトは、クライアントデバイス1を介してユーザAによって制御される。CPU1によって適用される物理法則は、物理予測エンジンの一部である。CPU1は、予測状態2の仮想オブジェクトの位置と向きに対応するオーディオデータも決定する。CPU1は、予測状態2の仮想オブジェクトの位置及び向きと、予測状態2の仮想オブジェクトによって出力されるオーディオデータとをノード1のメモリデバイス1に記憶する。一実施形態では、予測状態2についての動きは、ユーザ入力2から、または3つ、4つもしくは5つのユーザ入力など、他の任意の数のユーザ入力から決定される。
【0062】
さらに、CPU1aは、予測状態2について、仮想オブジェクトの位置及び向きと、仮想オブジェクトによって出力されるオーディオデータとにメモリデバイス1からアクセスし、AI予測エンジンを適用して、予測状態2の仮想オブジェクトの位置及び向きが決定される1つまたは複数の仮想シーンにおける1つまたは複数のAIの1つまたは複数の位置及び1つまたは複数の向きを決定する。例えば、CPU1aは、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトが、ユーザ入力2に基づいてまたはユーザ入力2及び3に基づいて決定される位置及び向きを有する仮想シーンにおける、AIの位置及び向きを決定する。別の例として、CPU1aは、クライアントデバイス1を介してユーザAによって制御される別の仮想オブジェクトが仮想シーンで左に走る、または座っているとき、AIまたはCPU1aによって制御される仮想オブジェクトが仮想シーンで右に移動するまたは立っていると判断する。
【0063】
さらに、CPU1aは、オーディオ予測エンジンを適用して、予測状態2の仮想オブジェクトによって出力されるオーディオデータに基づいて、予測状態2の1つまたは複数のAIによって出力されるオーディオデータを生成する。CPU1aは、予測状態2について、1つまたは複数のAIの1つまたは複数の位置及び1つまたは複数の向きと、1つまたは複数のAIによって出力されるオーディオデータとをメモリデバイス1aに記憶する。
【0064】
ノード1のGPU1は、予測状態2の仮想オブジェクトの位置及び仮想オブジェクトの向きにメモリデバイス1からアクセスし、予測状態2の1つまたは複数のAIの1つまたは複数の位置及び1つまたは複数の向きにメモリデバイス1aからアクセスし、レンダリングエンジンであるグラフィックス予測エンジンを位置及び向きに適用して、予測状態2の1つまたは複数の画像フレームを生成する。予測状態2の画像フレームは、GPU1によってGPUメモリデバイス1に記憶される。例えば、予測状態2の画像フレームは、GPUメモリデバイス1の1つまたは複数のキャッシュに記憶される。
【0065】
オーディオエンコーダ1は、仮想オブジェクトのオーディオデータにメモリデバイス1からアクセスし、1つまたは複数のAIのオーディオデータにメモリデバイス1aからアクセスして、1つまたは複数のオーディオフレームを生成し、予測状態2のオーディオフレームを符号化して、予測状態2の1つまたは複数の符号化されたオーディオフレームを出力する。同様に、ビデオエンコーダ1は、予測状態2の画像フレームにGPUメモリデバイス1からアクセスし、画像フレームを符号化して、1つまたは複数の符号化された画像フレームを出力する。オーディオエンコーダ1は、予測状態2の符号化されたオーディオフレームをオーディオエンコーダ1のメモリデバイスに記憶し、ビデオエンコーダ1は、予測状態2の符号化された画像フレームをビデオエンコーダ1のメモリデバイスに記憶する。
【0066】
ユーザ入力2及び3が、クライアントデバイス1からコンピュータネットワーク102を介してノードAによって実際に受信されると、ノードAのCPU Aは、ユーザ入力2及び3を内部通信デバイスAに送信する。例えば、ノードAのネットワーク通信デバイスAは、コンピュータネットワーク102を介してクライアントデバイス1からユーザ入力2及び3を受信する。内部通信デバイスAは、内部通信プロトコルをユーザ入力2及び3に適用して、ユーザ入力2及び3を有する1つまたは複数の転送ユニットを生成し、転送ユニットをノード1の内部通信デバイス1に送信する。内部通信デバイス1は、転送ユニットを受信し、転送ユニットに内部通信プロトコルを適用して、転送ユニットからユーザ入力2及び3を取得し、ユーザ入力2及び3をCPU1に提供する。
【0067】
CPU1は、実際に受信されたユーザ入力2及び3が、予測状態2に対して符号化された画像フレーム及び符号化されたオーディオフレームがノード1によって生成されたユーザ入力2及び3に一致すると判断する。そう判断すると、CPU1は、ノード1のネットワーク通信デバイス1に信号を送信する。ネットワーク通信デバイス1は、予測状態2の符号化された画像フレームにビデオエンコーダ1のメモリデバイスからアクセスし、予測状態2の符号化されたオーディオフレームにオーディオエンコーダ1のメモリデバイスからアクセスし、予測状態2の符号化された画像フレームと符号化されたオーディオフレームとに外部通信プロトコルを適用して、1つまたは複数のパケットを生成する。ネットワーク通信デバイス1は、クライアントデバイス1上に予測状態2の符号化された画像フレームに従って1つまたは複数の画像を表示し、予測状態2の符号化されたオーディオフレームに従ってクライアントデバイス1による音声を出力するために、コンピュータネットワーク102を介してクライアントデバイス1にパケットを送信する。
【0068】
ユーザ入力2及び3が実際にノード1またはノードAによって受信される前に、予測状態2の符号化された画像フレーム及び符号化されたオーディオフレームを生成することにより、分散型ゲームエンジンシステム106によるアプリケーションの実行における待ち時間が短縮される。例えば、ユーザ入力2及び3がノード1またはノードAによって受信されると、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの1つまたは複数の位置と1つまたは複数の向きとを決定するために、仮想オブジェクトによって出力されるオーディオデータを決定するために、仮想オブジェクトを有する仮想シーンにおいて1つまたは複数のAIの1つまたは複数の位置と1つまたは複数の向きとを決定するために、1つまたは複数のAIによって出力されるオーディオデータを決定するために、仮想オブジェクト及びAIの位置及び向きから画像フレームを生成するために、予測状態2の符号化された画像フレームを画像フレームから生成するために、且つ、予測状態2の符号化されたオーディオフレームをAI及び仮想オブジェクトのオーディオデータから生成するために、ユーザ入力2及び3の分析に遅れがない。仮想シーン内の仮想オブジェクトの1つまたは複数の位置と1つまたは複数の向きとを決定する操作、仮想オブジェクトによって出力されるオーディオデータを決定する操作、仮想シーン内の1つまたは複数のAIの1つまたは複数の位置と1つまたは複数の向きとを決定する操作、1つまたは複数のAIによって出力されるオーディオデータを決定する操作、仮想オブジェクト及びAIの位置及び向きから画像フレームを生成する操作、予測状態2の符号化された画像フレームを画像フレームから生成する操作、及び、予測状態2の符号化されたオーディオフレームをAI及び仮想オブジェクトのオーディオデータから生成する操作のうちの1つまたは複数は、ユーザ入力2及び3がノード1によって受信される前に、ノード1によって事前に既に行われている。ユーザ入力2及び3がノード1によって受信されると、1つまたは複数のパケットが、予測状態2の符号化された画像フレームと予測状態2の符号化されたオーディオデータとから生成され、ノード1からクライアントデバイス1にコンピュータネットワーク102を介して送信されて、アプリケーションの実行の待ち時間を短縮する。
【0069】
予測状態2を生成するためのノード1の、CPU1による物理予測エンジンの適用、CPU1によるオーディオ予測エンジンの適用、CPU1aによるAI予測エンジンの適用、及びGPU1によるグラフィックス予測エンジンの適用のうちの1つまたは複数が、状態1を生成するためにノードAの、CPU Aによる物理エンジンの適用、CPU Aによるオーディオエンジンの適用、CPU A1によるAIエンジンの適用、GPU Aによるグラフィックスエンジンの適用のうちの1つまたは複数と同時に行われることに留意すべきである。例えば、状態1を生成するためにノードAの物理エンジンが、CPU Aによって適用される、オーディオエンジンがCPU Aによって適用される、AIエンジンが、CPU A1によって適用される、及び/またはグラフィックスエンジンが、GPU Aによって適用される期間中、予測状態2を生成するために物理予測エンジン、オーディオ予測エンジン、AI予測エンジン、及びグラフィックス予測エンジンのうちの1つまたは複数が、ノード1によって適用される。
【0070】
さらに、ノード1が、予測状態2の画像フレーム及びオーディオフレームを生成するために、物理予測エンジン、AI予測エンジン、オーディオ予測エンジン、もしくはグラフィックス予測エンジン、または、これらの組み合わせを適用している間に、ユーザ入力1’がユーザ入力2の代わりに受信されると、ノードA及び1のうちの1つまたは複数は、ユーザ入力1’に基づいて、高優先度の処理を適用して、状態1’を決定する。例えば、ノードAのCPU Aは、コンピュータネットワーク102を介してクライアントデバイス1からユーザ入力1’を受信する。CPU Aは、予測状態2のユーザ入力2を受信する代わりに、ユーザ入力1の受信に続いてユーザ入力1’を受信したと判断する。CPU Aは、さらに、ユーザ入力1’は、予測状態2が決定されるユーザ入力2と一致しないと判断する。
【0071】
予測状態2に対するユーザ入力2及び3は、予測状態2に対するユーザ入力2とユーザ入力1’の間、そして、予測状態2に対するユーザ入力3とユーザ入力1’の間が一致するかどうかを判断するために、メモリデバイスAに事前に記憶される。例えば、CPU1は、ノード1のメモリデバイス1から予測状態2のユーザ入力2及び3にアクセスし、ノード1の内部通信デバイス1に予測状態2のユーザ入力2及び3を提供する。内部通信デバイス1は、予測状態2のユーザ入力2及び3に内部通信プロトコルを適用して、1つまたは複数の転送ユニットを生成し、転送ユニットをノードAの内部通信デバイスAに送信する。内部通信デバイスAは、内部通信プロトコルを転送ユニットに適用して、予測状態2のユーザ入力2及び3を取得し、予測状態2のユーザ入力2及び3を記憶するためにメモリデバイスAに送信する。
【0072】
CPU Aは、ユーザ入力1’を内部通信デバイスAに提供する。内部通信デバイスAは、内部通信プロトコルをユーザ入力1’に適用して、ユーザ入力1’を有する1つまたは複数の転送ユニットを生成し、転送ユニットをノード1の内部通信デバイス1に送信する。ユーザ入力1’を有する転送ユニットを受信すると、内部通信デバイスAは、内部通信プロトコルを転送ユニットに適用して、転送ユニットからユーザ入力1’を抽出し、ノード1のCPU1にユーザ入力1’を提供する。
【0073】
ユーザ入力2を受信する代わりに、ユーザ入力1’が、ノード1によって受信されるとき、ノード1は、予測状態2のユーザ入力2及び3から予測状態2を生成するのに使用される物理予測エンジン、AI予測エンジン、オーディオ予測エンジン、及びグラフィックス予測エンジンのうちの1つまたは複数を適用することを中止して、予測状態2を生成することに比べて、状態1’を生成することに高い優先度を与える。例えば、ノード1が、予測状態2を生成するために、その物理予測エンジン、そのAI予測エンジン、そのオーディオ予測エンジン、または、そのグラフィックス予測エンジンのうちの1つまたは複数を適用するプロセスにある間またはその期間に、ユーザ入力1’が、ノード1またはノードAによって受信される。CPU1は、物理予測エンジンを適用して、予測状態2についてユーザAによって制御される仮想オブジェクトの動きを決定することを中止する、または、CPU1は、オーディオ予測エンジンを適用して、予測状態2について仮想オブジェクトによって出力されるオーディオデータを決定することを中止する、または、CPU1aは、AI予測エンジンを適用して、予測状態2について1つまたは複数のAIの動きを決定することを中止する、または、CPU1aは、AI予測エンジンまたはオーディオ予測エンジンを適用して、予測状態2についてAIによって出力されるオーディオデータを決定することを中止する、または、GPU1は、グラフィックス予測エンジンを適用して、予測状態2の仮想オブジェクトの動きと、AIの動きとから1つまたは複数の画像フレームを生成することを中止する、または、ビデオエンコーダ1は、予測状態2の画像フレームを符号化することを中止する、または、オーディオエンコーダ1は、予測状態2のオーディオデータを符号化することを中止する、または、これらの組み合わせである。
【0074】
また、ユーザ入力2及び3の代わりにユーザ入力1’が受信されると、予測状態2を生成する代わりに、ノードA及び1のうちの1つまたは複数が、ユーザ入力1’から状態1’の生成を直ちに開始して、予測状態2を生成するよりも、状態1’の生成の優先度を高くする。例えば、ノード1が、予測状態2に対して画像フレームまたは符号化された画像フレームまたは符号化されたオーディオフレームまたはそれらの組み合わせを生成するプロセスの間に、または期間中に、ユーザ入力1’が、ノード1またはノードAによって受信される。ノード1は、予測状態2の画像フレームまたは符号化された画像フレームまたは符号化されたオーディオフレームを生成することを中止する。代わりに、ノード1のCPU1、またはノードAのCPU Aは、状態1’に対して、その物理エンジンを適用して、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの動きを決定する。さらに、ノード1のCPU1またはノードAのCPU Aは、そのオーディオエンジンを適用して、状態1’の仮想オブジェクトによって出力されるオーディオデータを決定する。また、ノードAのCPU A1またはノード1のCPU1aは、そのAIエンジンを適用して、状態1’の仮想オブジェクトの動きに基づいて、状態1’の1つまたは複数のAIの動きを決定し、状態1’の仮想オブジェクトによって出力されるオーディオデータに基づいて、状態1’の1つまたは複数のAIによって出力されるオーディオデータを決定する。さらに、ノードAのGPU Aまたはノード1のGPU1は、そのグラフィックスエンジンを適用して、仮想オブジェクトの1つまたは複数の画像フレーム、仮想オブジェクトが表示される仮想シーンの仮想背景、及び状態1’の1つまたは複数のAIのグラフィックスを生成する。さらに、オーディオエンコーダAまたはオーディオエンコーダ1は、状態1’の仮想オブジェクトによって出力されるオーディオデータと、状態1’の1つまたは複数のAIによって出力されるオーディオデータとを符号化して、1つまたは複数の符号化されたオーディオフレームを生成する。また、ビデオエンコーダAまたはビデオエンコーダ1は、状態1’の画像フレームを符号化して、1つまたは複数の符号化された画像フレームを出力する。ネットワーク通信デバイスAまたはネットワーク通信デバイス1のいずれかは、外部通信プロトコルを状態1’の符号化されたオーディオフレーム及び符号化された画像フレームに適用して、状態1’の1つまたは複数のパケットを生成し、パケットをコンピュータネットワーク102を介してクライアントデバイス1に送信する。クライアントデバイス1は、状態1’の符号化された画像フレームを処理して、状態1’の1つまたは複数の画像をクライアントデバイス1のディスプレイデバイスに表示し、状態1’の符号化されたオーディオフレームを処理して、1つまたは複数の画像に関連付けられた音声を出力する。
【0075】
ある実施形態では、CPU1が、実際に受信されるユーザ入力2及び3が、ノード1によって生成される予測状態2の画像フレーム及びオーディオフレームのユーザ入力2及び3と一致すると判断した場合、CPU1は、ノード1のビデオエンコーダ1及びノード1のオーディオエンコーダ1に符号化信号を送信する。予測状態2の画像フレーム及び予測状態2のオーディオデータは、ユーザ入力2及び3が実際に受信されるまでは符号化されない。符号化信号を受信すると、ビデオエンコーダ1は、上記のように、予測状態2の画像フレームの符号化を行い、オーディオエンコーダ1は、予測状態2のオーディオデータの符号化を行う。ノード1のネットワーク通信デバイス1は、外部通信プロトコルを、符号化されたオーディオフレーム及び符号化された画像フレームを含む符号化されたフレームに適用して、上記の方法でパケットを生成し、パケットをクライアントデバイス1に送信する。
【0076】
ある実施形態では、状態1’のある部分はノードAによって生成され、状態1’の別の部分は、ユーザ入力1’に基づいてノード1によって生成される。例えば、ノードAはその物理エンジンを適用して状態1’の仮想シーン内の仮想オブジェクトの動きを決定し、ノード1はそのオーディオエンジンを適用して状態1’の仮想オブジェクトによって出力されるオーディオデータを決定する。別の例として、ノードAは、その物理エンジンを適用して、状態1’の仮想シーン内の仮想オブジェクトの動きを決定し、ノード1は、そのAIエンジンを適用して、仮想シーン内の1つまたは複数のAIの動きを状態1’の仮想オブジェクトの動きに基づいて決定する。
【0077】
この実施形態では、ノードAによって生成される状態1’の部分は、ノードAからノード1に転送される、またはノード1によって生成される状態1’の部分は、コンピュータネットワーク102を介してクライアントデバイス1に送信するためにノード1からノードAに転送される。例えば、状態1’の仮想シーンにおける仮想オブジェクトの動きを規定する位置及び向きを含むデータは、メモリデバイスAからCPU Aによってアクセスされ、内部通信デバイスAに送信される。内部通信デバイスAは、状態1’の仮想オブジェクトの動きを規定するデータに内部通信プロトコルを適用することによって1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス1に送信する。内部通信デバイス1は、内部通信プロトコルを転送ユニットに適用して、状態1’の仮想オブジェクトの動きを規定するデータを取得し、仮想シーン内の1つまたは複数のAIの動きを規定する位置及び向きを決定するためにデータをCPU1aに送信する。別の例として、状態1’の1つまたは複数のAIの1つまたは複数の画像フレームは、ノード1のGPUメモリデバイス1からGPU1によってアクセスされ、内部通信プロトコルに従って1つまたは複数の転送ユニットを生成するために内部通信デバイス1に送信される。転送ユニットは、内部通信デバイス1から内部通信デバイスAに送信され、内部通信デバイスAは、内部通信プロトコルを適用して、状態1’の1つまたは複数のAIの画像フレームを取得し、画像フレームをビデオエンコーダAに送信する。ノードAのビデオエンコーダAは、ノード1から受信した状態1’の1つまたは複数のAIの画像フレームと、状態1’の仮想オブジェクトの画像フレームとを符号化する。状態1の仮想オブジェクトの画像フレームはノードAのGPUメモリデバイスAに記憶される。さらに、ビデオエンコーダAは、状態1’の仮想シーンの残りの任意の画像フレームを符号化して、状態1’の符号化された画像フレームを出力する。さらに、状態1’のオーディオデータは、オーディオエンコーダAによって符号化されて、状態1’の1つまたは複数の符号化されたオーディオフレームを出力する。ネットワーク通信デバイスAは、外部通信プロトコルを状態1’の符号化されたオーディオフレーム及び符号化された画像フレームに適用して、1つまたは複数のパケットを生成し、コンピュータネットワーク102を介してクライアントデバイス1にパケットを送信する。
【0078】
ある実施形態では、高優先度処理は、他のノードと比較してより速い処理速度及び/またはより大きなメモリを有するノード1及びAの一方によって実行される。例えば、処理速度が速いCPU1が、ノード1及びAによって選択されて、その物理エンジンを適用して、状態1’のユーザAによって制御される仮想オブジェクトの1つまたは複数の位置や1つまたは複数の向きなどの動きに関するデータを生成する。CPU Aは、CPU1の処理速度が速いと判断し、状態1’のユーザ入力1’を内部通信デバイスA及び1を介してユーザ入力1’を処理するためにCPU1に送信する。別の例として、GPUメモリデバイスAは、GPUメモリデバイス1内のメモリ空間と比較して、より多くの量のメモリ空間を有する。この例では、CPU1によって決定された状態1’の仮想オブジェクトの動きに関するデータは、メモリデバイス1からCPU1によってアクセスされ、内部通信デバイス1に送信される。内部通信デバイス1は、状態1’の仮想オブジェクトの動きに関するデータに内部通信プロトコルを適用して、1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイスAに送信する。内部通信デバイスAは、内部通信プロトコルを転送ユニットに適用して、仮想オブジェクトの動きに関するデータを取得し、データを記憶するためにメモリデバイスAに送信する。GPU Aは、状態1’の仮想オブジェクトの動きに関するデータにメモリデバイスAからアクセスして、データから1つまたは複数の画像フレームを生成し、画像フレームをGPUメモリデバイスAに記憶する。
【0079】
ある実施形態では、ノード1及びAの1つまたは複数は、ユーザ入力1’を受信することに応答して、予測状態2の1つまたは複数の要素と状態1’の1つまたは複数の要素との間の相違を決定または識別し、コンピュータネットワーク102を介してクライアントデバイス1に提供するために、相違に基づいてオーディオデータまたは画像フレームを生成する。例えば、GPU1は、仮想シーンの予測状態2の仮想背景の1つまたは複数の画像フレームを生成する。予測状態2の仮想背景の画像フレームが生成された後、ユーザ入力1’は、ノードAによって受信される。ユーザ入力1’は、GPUメモリデバイス1に記憶するためにノードAからノード1に提供される。GPU1は、ユーザ入力1’がノードAから受信され、ユーザ入力1’の受信の際、予測状態2の仮想背景の画像フレームがノード1のGPU1によってGPUメモリデバイス1から内部通信デバイス1に提供されることを判断する。内部通信デバイス1は、内部通信プロトコルを予測状態2の仮想背景の画像フレームに適用して、1つまたは複数の転送ユニットを生成し、転送ユニットをノードAの内部通信デバイスAに送信する。ノードAの内部通信デバイスAは、内部通信プロトコルを転送ユニットに適用して、予測状態2の仮想背景の画像フレームを取得し、ノードAのCPU A及びCPU A1に画像フレームを提供する。CPU Aは、予測状態2の仮想背景の画像フレームを解析して、状態1’の仮想シーンに対して生成される画像フレームと予測状態2の仮想シーンの仮想背景の画像フレームとの間の相違を決定または識別する。CPU Aは、その相違を仮想オブジェクトの相違と判断して、予測状態2の仮想背景に重ね合わせる。相違は、ユーザ入力1’に基づいて決定される。重ねられる仮想オブジェクト、または仮想オブジェクトの位置及び向きは、状態1’の1つまたは複数の要素の例であり、予測2の仮想背景は、予測状態2の1つまたは複数の要素の例である。CPU Aは、状態1’の仮想オブジェクトの位置及び向きと、仮想オブジェクトによって出力されるオーディオデータとを決定し、位置、向き、及びオーディオデータをノードAのメモリデバイスAに記憶する。状態1’の仮想オブジェクトの位置及び向きは、ユーザ入力1’から決定される。
【0080】
さらに、その実施形態において、ノードAのCPU A1は、予測状態2の仮想背景の画像フレームを解析して、状態1’の仮想シーンに対して生成される画像フレームと予測状態2の仮想シーンの仮想背景の画像フレームとの間の相違は、予測状態2の仮想背景上に重ねられるAIの相違であると判断または識別する。相違は、状態1’の仮想オブジェクトの位置及び向きに基づいて決定される。重ね合わせるAI、またはAIの位置及び向きは、状態1’の1つまたは複数の要素の例である。CPU A1は、状態1’についてAIの位置及び向きとAIによって出力されるオーディオデータとを決定し、位置、向き、及びオーディオデータをメモリデバイスA1に記憶する。状態1’のAIの位置及び向きは、状態1’の仮想オブジェクトの位置及び向きから決定される。説明すると、状態1’の仮想オブジェクトがジャンプする場合、状態1 ’のAIは、仮想オブジェクトよりも高くジャンプし、または状態1’の仮想オブジェクトが仮想シーンで射撃する場合、AIも仮想シーンで射撃する。
【0081】
その実施形態では、GPU Aは、仮想オブジェクトの位置及び向きに基づいて状態1’の仮想オブジェクトを有し、AIの位置及び向きに基づいて状態1’のAIを有する画像フレームを生成し、状態1’の仮想オブジェクトの画像フレームを予測状態2の仮想背景の画像フレームに重ね合わせて、状態1’の仮想シーンの重ね合わせた画像フレームを生成する。GPU Aは、重ね合わせた画像フレームをビデオエンコーダAに送信する。ビデオエンコーダAは、重ね合わせた画像フレームを符号化して、状態1’の仮想シーンの符号化された画像フレームを生成する。
【0082】
また、この実施形態では、オーディオエンコーダAは、状態1’のAI及び仮想オブジェクトのオーディオデータを符号化して、符号化されたオーディオフレームを生成する。状態1’の仮想シーンの符号化された画像フレームと状態1’の仮想シーンの符号化されたオーディオフレームは、ネットワーク通信デバイスAによって1つまたは複数のパケットに変換され、クライアントデバイス1のディスプレイデバイス上に予測状態2の仮想背景を有する状態1’の仮想シーンと状態1’の仮想オブジェクト及びAIとの1つまたは複数の合成画像を表示するために、コンピュータネットワーク102によってクライアントデバイス1に送信される。
【0083】
ある実施形態では、仮想オブジェクトの画像フレーム及びAIの画像フレームが、前述の実施形態で説明したように仮想背景の画像フレームに重ね合わせられる代わりに、仮想オブジェクトもしくはAI、またはその両方を有する画像フレームと、状態1’の仮想シーンの仮想背景とが、ユーザ入力1’に基づいてノードAまたはノード1によって生成され、符号化され、表示のためにコンピュータネットワーク102を介してクライアントデバイス1に送信される。この実施形態では、GPU1は、GPUメモリデバイス1から、予測状態2の仮想背景を有する画像フレームを削除または消去などして破棄する。予測状態2の仮想背景を有する画像フレームは、状態1’の仮想背景を有する画像フレームと一致する。例えば、予測状態2の仮想背景は、状態1’の仮想背景と同じである。
【0084】
一実施形態では、システム200は、
図2Aに示されている数以外の数のノードを含むことに留意されたい。例えば、システム200は、50ノード、または25ノード、または5ノードを含む。
【0085】
上記の実施形態のいくつかは、2つのユーザ入力2及び3に関して説明されることにさらに留意されたい。しかしながら、一実施形態では、実施形態は、ユーザ入力2及び3の両方ではなく、ユーザ入力2またはユーザ入力3などの1つのユーザ入力に等しく適用される。例えば、予測状態2は、ユーザ入力2及び3の両方ではなく、ユーザ入力2に基づいて生成される。
【0086】
ある実施形態では、状態1または予測状態2を生成するためにユーザ入力1を使用する代わりに、任意の数のユーザ入力を使用して、状態1または予測状態2を生成する。例えば、ノードAのCPU Aは、1つまたは複数の以前のユーザ入力をメモリデバイスAに記憶する。1つまたは複数の以前のユーザ入力は、ユーザ入力1がノードAによってクライアントデバイス1から受信される前に、ノードAがコンピュータネットワーク102を介してクライアントデバイス1から受信したユーザ入力である。1つまたは複数の以前のユーザ入力は、ユーザ入力1が生成されるのと同様の方法で生成される。例えば、1つまたは複数の以前のユーザ入力は、ユーザAがクライアントデバイス1の入力デバイス上の1つまたは複数のボタンを選択するか、クライアントデバイス1上で1つまたは複数のジョイスティックを動かすか、クライアントデバイス1のカメラによってキャプチャされる1つまたは複数のジェスチャを行うときに生成される。例として、1つまたは複数の以前のユーザ入力は、ユーザAがクライアントデバイス1の入力デバイスを制御してアバタまたは仮想オブジェクトを仮想シーンで動かすときに、クライアントデバイス1によって生成される。内部通信デバイスAは、ユーザ入力1と、ノードAのGPUメモリデバイスAに記憶されている状態1の1つまたは複数の以前のユーザ入力とにアクセスし、内部アプリケーションプロトコルをユーザ入力1と1つまたは複数の以前のユーザ入力とに適用して、ユーザ入力1と以前のユーザ入力とを有する1つまたは複数の転送ユニットを生成し、転送ユニットをノード1の内部通信デバイス1に送信する。予測状態2は、1つまたは複数の以前のユーザ入力とユーザ入力1とに基づいて、状態1がユーザ入力1に基づいてノード1によって生成されるのと同様の方法でノード1によって生成される。
【0087】
ある実施形態では、状態1の出力を使用して、予測状態2を生成する。例えば、CPU1は、状態1の仮想オブジェクトの位置に基づいて、予測状態2について、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの位置を決定する。説明すると、予測状態2の場合、仮想オブジェクトは状態1の位置から右または左または上または下に移動する。別の例として、CPU1は、状態1の仮想オブジェクトの向きに基づいて、予測状態2について、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの向きを決定する。説明すると、予測状態2の場合、仮想オブジェクトは、状態1の仮想オブジェクトの向きから時計回りまたは時計回りに回転する。さらに別の例として、CPU1aは、状態1の仮想オブジェクトの位置に基づいて予測状態2のAIの位置を決定し、状態1のAIの向きに基づいて、予測状態2のAIの向きを決定する。
【0088】
一実施形態では、状態を変更するための、本明細書で説明されるユーザによる入力デバイスの制御はいずれも、サーバシステム104によってユーザに割り当てられるユーザアカウントを介して行われる。例えば、ユーザAは、ユーザアカウントにログインした後、自分のユーザアカウントを介してクライアントデバイス1を使用して仮想オブジェクトを制御する。
【0089】
一実施形態では、ノードAのCPU Aによって実行されると本明細書で説明される機能は、代わりにノードAのCPU A1によって実行される、またはCPU A1によって実行されると説明される機能は、代わりにCPU Aによって実行されることに留意されたい。同様に、ある実施形態では、ノード1のCPU1によって実行されると本明細書で説明される機能は、代わりにノード1のCPU1aによって実行される、またはCPU1aによって実行されると説明される機能は、代わりにCPU1によって実行される。
【0090】
図3Aは、分散型ゲームエンジン302及び分散型予測子エンジン304を示すシステム300の実施形態の図である。分散型ゲームエンジン302及び分散型予測子エンジン304は、分散型ゲームエンジンシステム106(
図1)の一部である。例えば、分散型ゲームエンジンシステム106の1つまたは複数のノードA、B、及びCは、分散型ゲームエンジン302のノードであり、分散型ゲームエンジンシステム106のノード1及び2の1つまたは複数は、分散型予測子エンジン304のノードである。分散型ゲームエンジン302及び分散型予測子エンジン304のそれぞれの例には、機械学習エンジン及びニューラルネットワークが含まれる。
【0091】
グラフ306に示すように、クライアントデバイス1を介してユーザAによって制御されるアバタまたはユーザAの表現などの仮想オブジェクトは、仮想シーン内の位置aから位置bに移動する。グラフ306は、仮想シーンにおける仮想オブジェクトの位置を示す。ユーザ入力1は、分散型ゲームエンジン302によって受信及び処理されて、状態1を生成し、状態1は、クライアントデバイス1(
図1)を介してユーザAによって制御される仮想オブジェクトの位置cを含む。位置cは、状態1の出力の例である。ユーザ入力1が受信されて、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトを位置bから位置cに移動する。
【0092】
位置cを決定するために、または位置bから位置cに移動する仮想オブジェクトを表示する画像フレームを生成するためにユーザ入力1が処理されている期間中に、分散型予測子エンジン304はユーザ入力1を受信し、ユーザ入力2がコンピュータネットワーク102(
図1)を介してクライアントデバイス1から受信されることを予測し、ユーザ入力2を処理して、予測状態2を出力する。予測状態2は、ユーザAによって制御される仮想オブジェクトの位置d1と、位置cから位置d1への動きとを含む。さらに、ユーザ入力1が処理されている期間中に、分散型予測子エンジン304は、ユーザ入力2を受信した後、ユーザ入力3が受信されることをさらに予測して、予測状態2を出力する。予測状態2は、ユーザAによって制御される仮想オブジェクトの位置fと、位置d1から位置fへの動きとを含む。
【0093】
さらに、ユーザ入力2及び3が処理されて予測状態2を出力する期間中に、分散型予測子エンジン304または分散型ゲームエンジン302が、ユーザ入力1’が受信されたと判断した場合、分散型ゲームエンジン302及び分散型予測子エンジン304の1つまたは複数は、ユーザ入力1’に基づいて状態1’を決定する。例えば、分散型ゲームエンジン302及び分散型予測子エンジン304のうちの1つまたは複数は、引き続き予測状態2を決定するのではなく、状態1’を決定する。状態1’は、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの位置dと、位置cから位置dへの仮想オブジェクトの動きとを含む。位置c、d1、及びfはパスIに沿って配置され、位置c、d、及びfは予測パスIIに沿って配置される。
【0094】
一実施形態では、分散型予測子エンジン304は、仮想シーンのユーザAの履歴、または仮想シーンの他のユーザB及びC(
図1)の履歴、または仮想シーン内の1つまたは複数の仮想オブジェクトの1つまたは複数の位置及び1つまたは複数の向き、または仮想シーンの状態1、またはそれらの組み合わせに基づいて、仮想シーンの予測状態2を決定する。例えば、CPU1(
図2A)は、どちらかといえば、ユーザAは、クライアントデバイス1の入力デバイスを制御して、仮想オブジェクトを位置cから、位置dの代わりに、位置d1に移動させるユーザ入力2を生成する可能性が高いと判断する。この例では、CPU1は、メモリデバイス1(
図2A)内またはメモリデバイスA(
図2A)内のデータベースにアクセスして、ユーザAは以前に、自身のユーザアカウントを介して、仮想オブジェクトを位置cから位置dに移動させる代わりに、位置cから位置d1に所定の回数より多く移動させるように制御したと判断する。CPU1は、内部通信デバイスA及び1(
図2A)を介してメモリデバイスA内のデータベースにアクセスする。別の例として、CPU1は、どちらかといえば、ユーザAは、仮想オブジェクトを位置cから位置d1に移動するユーザ入力2を生成するようにクライアントデバイス1の入力デバイスを制御する可能性が高いと判断する。この例では、CPU1は、メモリデバイス1(
図2A)またはメモリデバイスA内のデータベースにアクセスして、所定の数より多いユーザB及びCが以前、自身の対応するユーザアカウント及び自身の対応するクライアントデバイス2及び3(
図1)を介して、仮想オブジェクトを位置cから位置dに移動させるのではなく、位置cから位置d1に移動するように制御し、且つ、ユーザB及びCはそれぞれ、仮想オブジェクトを、所定の回数より多く、制御したと判断する。
【0095】
さらに別の例として、CPU1は、ユーザAは、クライアントデバイス1の入力デバイスを制御して、どちらかといえば、仮想オブジェクトを位置cから、位置dではなく、位置d1に移動させるユーザ入力2を生成する可能性が高いと判断する。この例では、CPU1は、メモリデバイス1(
図2A)内またはメモリデバイスA内のデータベースにアクセスして、ユーザAは以前に、自身のユーザアカウントを介して、仮想オブジェクトを位置cから位置dに移動させるのではなく、位置cから位置d1に所定の回数より多く移動させるように制御したと判断する。また、この例では、CPU1は、メモリデバイス1(
図2A)またはメモリデバイスA内のデータベースにアクセスして、所定の数より多いユーザB及びCが以前、自身の対応するユーザアカウント及び自身の対応するクライアントデバイス2及び3を介して、仮想オブジェクトを位置cから位置dに移動させるのではなく、位置cから位置d1に移動するように制御し、且つ、ユーザB及びCはそれぞれ、仮想オブジェクトを、所定の回数より多く、制御したと判断する。
【0096】
別の例として、CPU1は、ユーザAは、クライアントデバイス1の入力デバイスを制御して、どちらかといえば、仮想オブジェクトを位置cから、位置dではなく、位置d1に移動させるユーザ入力2を生成する可能性が高いと判断する。この例では、CPU1は、クライアントデバイスAを介してユーザAによって制御される仮想オブジェクトを有する仮想シーン内のAIの位置にアクセスする。AIの位置は、メモリデバイス1a(
図2A)またはメモリデバイスA1(
図2A)からアクセスされる。仮想オブジェクトは、仮想シーンの位置cにある。CPU1は、内部通信デバイスA及び1(
図2A)を介してメモリデバイスA1にアクセスする。CPU1は、仮想シーン内のAIの位置から、どちらかといえば、仮想オブジェクトが位置cから位置dではなく位置d1に移動する可能性が高いと判断する。説明すると、CPU1は、位置cにある仮想オブジェクトの仮想の敵が仮想オブジェクトに近く、従って、仮想オブジェクトは、位置dではなく位置d1に走って移動すると判断する。位置d1は仮想オブジェクトにカバーを提供するため、位置d1は位置dよりも安全である。位置d1は、仮想シーン内の仮想の岩または仮想の木の背後にあってよく、カバーがない位置dと比較してカバーを提供する。
【0097】
さらに別の例として、CPU1は、ユーザAは、アバタをどちらかといえば位置cから位置dではなく位置d1に移動させるユーザ入力2を生成するようにクライアントデバイス1の入力デバイスを制御する可能性が高いと判断する。この例では、CPU1は、メモリデバイス1またはメモリデバイスA(
図2A)から、ヘルスレベルバーのスライダなどの別の仮想オブジェクトの位置にアクセスして、アバタのヘルスが所定のレベル未満であると判断する。CPU1はさらに、アバタのヘルス状態が所定のレベル未満である場合、ユーザ入力1’を受信する代わりに、ユーザ入力2がコンピュータネットワーク102を介してクライアントデバイス1から受信される可能性が高いと判断する。
【0098】
グラフ306において、位置a、b、c、d、d1、及びfの代わりに、向きa、b、c、d、d1、及びfを使用することができる、またはa、b、c、d、d1、及びfはそれぞれ、位置と向きの組み合わせであることに留意されたい。
【0099】
図3Bは、クライアントデバイス1(
図1)を介してユーザAによって制御される仮想オブジェクトが位置cにある期間に、予測状態2の画像フレーム及びオーディオフレームが生成されることを示すシステム310の実施形態の図である。システム310は、分散型予測子エンジン304を含み、分散型予測子エンジン304は、分散型物理予測エンジン312をさらに含む。分散型物理予測エンジン312は、ノードAのCPU A、またはノードBのCPU、またはノード1のCPU1、またはノード2のCPU2、またはそれらの組み合わせによって実行される。
【0100】
クライアントデバイス1によってユーザAによって制御される仮想オブジェクトが位置cにある期間に、分散型物理予測エンジン312は、仮想オブジェクトが、位置cとd1の間にある別の仮想オブジェクト314と衝突する可能性が非常に高い、またはある程度可能性があると予測または判断する。分散型物理予測エンジン312は、仮想オブジェクトが位置cから予測状態2の位置d1に移動するとき、仮想オブジェクトは別の仮想オブジェクト314と衝突する可能性が高い、またはある程度可能性があると予測または判断する。そう予測すると、分散型物理予測エンジン312は、衝突中の、ユーザAによって制御される仮想オブジェクトの1つまたは複数の位置及び1つまたは複数の向きと、仮想オブジェクト314の1つまたは複数の位置及び1つまたは複数の向きとを決定し、その位置及び向きをノード1(
図2A)及び2の1つまたは複数のメモリデバイスに記憶する。さらに、分散型予測子エンジン304の分散型オーディオ予測エンジンは、衝突のオーディオデータを生成する。また、分散型予測子エンジン304の分散型グラフィックスエンジンは、ユーザAによって制御される仮想オブジェクトと仮想オブジェクト314との位置及び向きに、ノード1(
図2A)及び2の1つまたは複数のメモリデバイスからアクセスし、衝突中の位置及び向きから1つまたは複数の画像フレームを生成する。さらに、ノード1及び2の1つまたは複数のビデオエンコーダは、画像フレームを取得し、画像フレームを符号化して、衝突の1つまたは複数の符号化された画像フレームを出力する。また、ノード1及び2の1つまたは複数のオーディオエンコーダは、衝突のオーディオデータを取得して、1つまたは複数のオーディオフレームを出力し、オーディオフレームを符号化して、衝突の1つまたは複数の符号化されたオーディオフレームを出力する。
【0101】
コンピュータネットワーク102を介してクライアントデバイス1からユーザ入力2を実際に受信すると、ノード1及び2の1つまたは複数のネットワーク通信デバイスは、外部通信プロトコルを符号化されたオーディオフレームと符号化されたビデオフレームとに適用して、1つまたは複数のパケットを生成し、クライアントデバイス1で衝突の1つまたは複数の画像を表示するために、また、クライアントデバイス1で衝突の音声を出力するために、パケットをコンピュータネットワーク102を介してクライアントデバイス1に送信する。
【0102】
図3Cは、予測状態2が生成されている間に、コンピュータネットワーク102(
図1)を介してクライアントデバイス1から分散型ゲームエンジンシステム106によって受信されたユーザ入力1’が、状態1’の生成のトリガとして働くことを示す分散型ゲームエンジンシステム106の実施形態である。ユーザ入力1を受信した後すぐに、ユーザ入力1’がクライアントデバイス1からコンピュータネットワーク102を介して分散型ゲームエンジンシステム106によって受信されると、分散型ゲームエンジンシステム106は、物理予測エンジン、AI予測エンジン、グラフィックス予測エンジン、及びオーディオ予測エンジンを適用して予測状態2の画像フレーム及びオーディオフレームを生成することを中止し、グラフィックスエンジン、AIエンジン、グラフィックスエンジン、及びオーディオエンジンを適用して、状態1’の画像フレーム及びオーディオフレームの生成を開始する。例として、ノード1のCPU1(
図2A)は、予測状態2について、ユーザAによって制御される仮想オブジェクトの位置、向き、及びオーディオデータを決定することを中止する。代わりに、ノード1のCPU1(
図1)またはノードAのCPU A(
図2A)は、ユーザ入力1’に基づいて、状態1’の仮想オブジェクトの位置、向き、及びオーディオデータの決定を開始する。別の例として、ノード1のCPU1a(
図2A)は、予測状態2のAIの位置、向き、及びオーディオデータを生成することを中止する。代わりに、ノード1のCPU1a(
図2A)またはノードAのCPU A1(
図2A)は、ユーザ入力1’に基づいて、状態1’のAIの位置、向き、及びオーディオデータの決定を開始する。さらに別の例として、ノード1のGPU1(
図2A)は、予測状態2の仮想オブジェクトの1つまたは複数の位置及び向きと、予測状態2のAIの1つまたは複数の位置及び向きとから1つまたは複数の画像フレームを生成することを中止する。仮想オブジェクトは、クライアントデバイス1(
図1)を介してユーザAによって制御される。代わりに、ノード1のGPU1またはノードAのGPU A(
図2A)は、状態1’の仮想オブジェクトの1つまたは複数の位置及び向きと、状態1’のAIの1つまたは複数の位置及び向きとから1つまたは複数の画像フレームを生成することを開始する。また、ノード1のオーディオエンコーダ1(
図2A)は、予測状態2の仮想オブジェクトが出力するオーディオデータの符号化を停止し、ノード1のビデオエンコーダ1(
図2A)は、予測状態2の画像フレームの符号化を中止する。代わりに、オーディオエンコーダ1またはオーディオエンコーダAは、状態1’のオーディオデータの符号化を開始して、状態1’の符号化されたオーディオフレームを出力する。また、ビデオエンコーダ1またはビデオエンコーダAは、状態1’の画像フレームの符号化を開始して、状態1’の符号化された画像フレームを出力する。状態1’の符号化されたオーディオフレーム及び符号化された画像フレームは、ノードAのネットワーク通信デバイスAまたはノード1のネットワーク通信デバイス1(
図2A)によってパケット化され、符号化された画像フレームに基づいてクライアントデバイス1で仮想シーンの1つまたは複数の画像を表示するために、また、符号化されたオーディオフレームに基づいて仮想シーンの音声を出力するために、コンピュータネットワーク102(
図2B)を介してクライアントデバイス1に送信される。
【0103】
図3Dは、予測状態2のユーザ入力2を受信する代わりに、状態1’のユーザ入力1’を受信したときに、仮想オブジェクトまたはAIがレンダリングされ、仮想背景に追加されることを示す図である。ノード1のGPU1(
図2A)は、予測状態2の仮想背景の画像フレームを生成し、画像フレームは、予測状態2のクライアントデバイス1を介してユーザAが制御する仮想オブジェクトを含まず、及び/または予測状態2のAIを含まない。ユーザ入力1’を受信した後、ノードAのCPU A(
図2A)は、状態1’に対してユーザAによって制御される仮想オブジェクトの位置と向きを決定し、ユーザ入力1’に基づいて仮想オブジェクトによって出力されるオーディオデータをさらに決定する。ノードAのCPU Aは、状態1’の仮想オブジェクトが、その位置及び向きで、予測状態2の仮想背景の位置及び向きに追加されることを決定する。
【0104】
CPU Aは、ノード1のメモリデバイス1から、予測状態2の仮想背景の位置及び向きにアクセスすることに留意されたい。例えば、CPU Aは、予測状態2の仮想背景の位置及び向きに対する要求を、内部通信デバイスA及び1(
図2A)を介してノード1に送信する。要求を受信すると、ノード1のCPU1は、ノード1のメモリデバイス1から予測状態2の仮想背景の位置及び向きにアクセスし、内部通信デバイス1に位置及び向きを提供する。内部通信デバイス1は、予測状態2の仮想背景の位置及び向きに内部通信プロトコルを適用して1つまたは複数の転送ユニットを生成し、転送ユニットをノードAの内部通信デバイスAに送信する。内部通信デバイスAは、内部通信プロトコルを転送ユニットに適用して、予測状態2の仮想背景の位置及び向きを取得し、仮想背景の位置及び向きをノードAのCPU Aに提供する。
【0105】
さらに、ノードAのCPU A1(
図2A)は、状態1’のAIの位置及び向きを決定し、ユーザ入力1’に基づいてAIによって出力されるオーディオデータをさらに決定する。CPU A1は、状態1’のAIを、その位置及び向きで、予測状態2の仮想背景の位置及び向きに追加すると決定する。CPU A1は、CPU Aが予測状態2の仮想背景の位置及び向きにノード1からアクセスした上記と同様に、予測状態2の仮想背景の位置及び向きにノード1からアクセスする。ノードAのGPU A(
図2A)は、状態1’に関してノードAのメモリデバイスAに記憶された仮想オブジェクトの位置及び向きにアクセスし、仮想オブジェクトをその位置及び向きで、予測状態2の仮想背景の1つまたは複数の画像フレーム上に重ね合わせて、状態1’の仮想シーンの1つまたは複数の重ね合わせた画像フレームを出力する。さらに、ノードAのGPU Aは、状態1’に関してノードAのメモリデバイスA1に記憶されているAIの位置及び向きにアクセスし、その位置及び向きで予測状態2の仮想背景の画像フレーム上にAIを重ね合わせて、状態1’の仮想シーンの重ね合わせた画像フレームを出力する。
【0106】
ノードAのビデオエンコーダAは、重ね合わせた画像フレームを取得し、重ね合わせた画像フレームを符号化して、1つまたは複数の符号化された重ね合わせた画像フレームを出力する。さらに、ノードAのオーディオエンコーダAは、状態1’の仮想オブジェクトによって出力されるオーディオデータを符号化して、1つまたは複数の符号化されたオーディオフレームを生成し、状態1’のAIによって出力されるオーディオデータを符号化して、1つまたは複数の符号化されたオーディオフレームを生成する。ノードAのネットワーク通信デバイスAは、状態1’の符号化された重ね合わせた画像フレームと符号化されたオーディオフレームとから1つまたは複数のパケットを生成し、仮想シーン内に仮想背景、仮想オブジェクト、及びAIを有する1つまたは複数の合成画像をクライアントデバイス1に表示するために、パケットをコンピュータネットワーク102を介してクライアントデバイス1に送信する。
【0107】
一実施形態では、予測状態2の仮想背景に基づいて状態1’の重ね合わせた画像フレームを生成する代わりに、状態1’の同じ仮想背景を有する1つまたは複数の画像フレームが、ノードAのGPU Aによって再レンダリングされて、状態1’の1つまたは複数の画像フレームを生成する(
図2A)。
【0108】
また、ある実施形態では、状態1’のAI及び仮想オブジェクトの両方を予測状態2の仮想背景に追加する代わりに、状態1’のAIまたは仮想オブジェクトのいずれかが、予測状態2の仮想背景に追加される。
【0109】
図4Aは、ノード1を使用して、仮想オブジェクトが仮想シーンで衝突する可能性が高い広い位相検出を実行し、ノード2を使用して、仮想オブジェクトの衝突の接触点を決定するための狭い位相検出を実行することを示すシステム400の実施形態の図である。ノード2は、衝突の解決の実行にも使用される。システム400は、ノード1、ノード2、ノードA、ノードB、コンピュータネットワーク102、ノードアセンブリサーバ202、クラウドゲームサーバ204、及びクライアントデバイス1を含む。ノードBはスイッチシステム206に結合される。
【0110】
ノード2は、中央処理装置2(CPU2)、メモリデバイス2、別の中央処理装置2a(CPU2a)、メモリデバイス2a、グラフィックスプロセッシングユニット2(GPU2)、GPUメモリデバイス2、内部通信デバイス2、ネットワーク通信デバイス2、オーディオエンコーダ(AE)2、及びビデオエンコーダ(VE)2を含む。ノード2の、CPU2、メモリデバイス2、CPU2a、メモリデバイス2a、GPU2、GPUメモリデバイス2、内部通信デバイス2、ネットワーク通信デバイス2、オーディオエンコーダ2、及びビデオエンコーダ2等の構成要素は、バス2を介して互いに結合される。
【0111】
ユーザ入力1を受信すると、ノード1のCPU1は、物理予測エンジンを実行して、広範な検出を行い、狭い位相検出を実行する及び/または衝突の解決を実行する計算集約的なジョブをCPU2に送信する。例えば、CPU1は、物理予測エンジンを実行して、予測ユーザ入力2が受信された場合、予測ユーザ入力2に基づいて、仮想シーンの第1の仮想オブジェクトが仮想シーンの第2の仮想オブジェクトに衝突するか、衝突する可能性が高いか、または、ある程度衝突する可能性があるかを判断する。そのように判断すると、CPU1は、衝突中の第1の仮想オブジェクトの位置及び向きも第2の仮想オブジェクトの位置及び向きも決定しない。また、そのように判断すると、CPU1は、衝突後の第1の仮想オブジェクトの位置及び向きも第2の仮想オブジェクトの位置及び向きも判断しない。むしろ、CPU1は、第1の仮想オブジェクトが第2の仮想オブジェクトと衝突するか、衝突する可能性が高いか、またはある程度衝突する可能性があるかという判断を、狭い位相検出及び/または衝突の解決を実行する命令と共に内部通信デバイス1に提供する。衝突中及び衝突後の第1及び第2の仮想オブジェクトの位置及び向きの決定は、第1及び第2の仮想オブジェクトが互いに衝突するか、または衝突する可能性が高いか、またはある程度衝突する可能性があるかという判断と比較して、より計算集約的である。衝突中の第1及び第2の仮想オブジェクトの位置及び向きは、第1及び第2の仮想オブジェクトが衝突する衝突点を提供し、複雑な物理的状態の例である。同様に、衝突後の第1及び第2の仮想オブジェクトの位置及び向きは、複雑な物理的状態の追加の例である。さらに、第1及び第2の仮想オブジェクトが衝突するか、または衝突する可能性が高いか、またはある程度衝突する可能性があるかという判断は、単純な物理的状態の判断の例である。第1及び第2の仮想オブジェクトが70%または65%などの所定のパーセンテージより大きい衝突の可能性を有するという判断は、第1及び第2のオブジェクトが衝突する可能性が高いという判断の例である。また、第1及び第2の仮想オブジェクトが40%または50%など別の所定のパーセンテージより大きく、70%または65%などの所定のパーセンテージより小さい衝突の可能性を有するという判断は、第1及び第2の仮想オブジェクトが衝突する可能性がある程度あるという判断の例である。
【0112】
内部通信デバイス1は、狭い位相検出及び/または衝突の解決を実行するための命令と、第1及び第2の仮想オブジェクトの衝突に関する判断とを受信し、内部通信プロトコルを命令及び判断に適用して、命令及び判断を有する1つまたは複数の転送ユニットを生成する。第1及び第2の仮想オブジェクトの衝突に関する判断は、第1及び第2の仮想オブジェクトが衝突するという判断、または第1及び第2の仮想オブジェクトが衝突する可能性が高いという判断、または第1及び第2の仮想オブジェクトがある程度衝突する可能性があるという判断を含む。内部通信デバイス1は、転送ユニットをノード2の内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを実行して、狭い位相検出及び/または衝突の解決を実行する命令と、第1及び第2の仮想オブジェクトの衝突に関する判断とを転送ユニットから取得し、命令及び判断をノード2のCPU2に送信する。
【0113】
CPU2は、第1及び第2の仮想オブジェクトの衝突に関する判断に基づいて、狭い位相検出及び/または衝突の解決のための命令を実行する。例えば、CPU2は、物理予測エンジンを適用して、衝突中の第1の仮想オブジェクトの1つまたは複数の位置及び1つまたは複数の向きと、第2の仮想オブジェクトの1つまたは複数の位置及び1つまたは複数の向きと、衝突中のオーディオデータとを決定し、第1及び第2の仮想オブジェクトの位置及び向きとオーディオデータとをメモリデバイス2に記憶する。別の例として、衝突を解決するために、CPU2は、物理予測エンジンを適用して、衝突後、第1の仮想オブジェクトを第2の仮想オブジェクトからどのくらい離すかを決定し、物理法則を適用して、第1及び第2の仮想オブジェクトを互いに離すための力を生成する。CPU2はまた、衝突後の第1及び第2の仮想オブジェクトに対応するオーディオデータを決定し、オーディオデータをメモリデバイス2に記憶する。衝突後の第1及び第2の仮想オブジェクト間の分離は、第1の仮想オブジェクトの1つまたは複数の位置及び1つまたは複数の向きと、第2の仮想オブジェクトの1つまたは複数の位置及び1つまたは複数の向きとによって規定される。
【0114】
GPU2は、衝突中及び衝突後の第1の仮想オブジェクトの位置及び向きと、衝突中及び衝突後の第2の仮想オブジェクトの位置及び向きとにメモリデバイス2からアクセスし、グラフィックス予測エンジンを適用して、第1及び第2の仮想オブジェクトの位置及び向きに基づく1つまたは複数の画像フレームをレンダリングし、画像フレームをGPUメモリデバイス2内に記憶する。ビデオエンコーダVE2は、メモリデバイス2内に記憶された画像フレームにアクセスし、画像フレームを符号化して、1つまたは複数の符号化された画像フレームを出力し、出力された画像フレームは、ビデオエンコーダVE2に記憶される。さらに、オーディオエンコーダAE2は、メモリデバイス2内に記憶されたオーディオデータにアクセスし、オーディオデータを符号化して、1つまたは複数の符号化されたオーディオフレームを出力し、出力されたオーディオフレームは、オーディオエンコーダAE2に記憶される。
【0115】
予測状態2に対するユーザ入力2は、ノードAによってコンピュータネットワーク102によってクライアントデバイス1から受信される。ノードAは、内部通信デバイスA及び1を介してノード1のCPU1にユーザ入力2を提供する。ユーザ入力2は、CPU1によって内部通信デバイス1に提供される。内部通信デバイス1は、内部通信プロトコルをユーザ入力2に適用して1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。
【0116】
内部通信デバイス2は、転送ユニットに内部通信プロトコルを適用してユーザ入力2を取得し、ユーザ入力2をネットワーク通信デバイス2に送信する。ネットワーク通信デバイス2は、ユーザ入力2を受信することに応答して、オーディオエンコーダAE2から衝突の符号化されたオーディオフレームを、ビデオエンコーダVE2から衝突の符号化されたビデオフレームを取得し、外部通信プロトコルを符号化されたオーディオフレーム及び符号化されたビデオフレームに適用して、1つまたは複数のパケットを生成し、クライアントデバイス1のディスプレイデバイス上に第1及び第2の仮想オブジェクトの衝突の1つまたは複数の画像を表示するために、クライアントデバイス1を介して衝突の音声を出力するために、パケットをコンピュータネットワーク102を介してクライアントデバイス1に送信する。
【0117】
ある実施形態では、衝突中及び衝突後の第1及び第2の仮想オブジェクトの位置及び向きと、衝突中及び衝突後のオーディオデータとは、予測状態2のものである。
【0118】
一実施形態では、CPU2は、CPU1よりも高いプロセッサ性能を有する。例えば、CPU2は、CPU1と比較して、応答時間が短い、またはスループットが高い、またはノード2の構成要素の利用率が低い、または処理能力が大きい、または負荷が少ない、または実行するジョブの量が少ない、実行するタスクの数が少ない、またはそれらの組み合わせである。
【0119】
一実施形態では、ノード2のCPU2によって実行されると本明細書で説明される機能は、代わりにノード2のCPU2aによって実行されるか、またはCPU2aによって実行されると説明される機能は、代わりにCPU2によって実行されることに留意されたい。
【0120】
ある実施形態では、ユーザ入力1は、ノードAによってノード1に提供される。例えば、ユーザ入力1は、クライアントデバイス1からコンピュータネットワーク102を介してノード1によって受信される。CPU1は、メモリデバイス1に記憶されたユーザ入力にアクセスし、ユーザ入力1を内部通信デバイス1に提供する。内部通信デバイス1は、内部通信プロトコルをユーザ入力1に適用して、1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイスAに送信する。内部通信デバイスAは、内部通信プロトコルを転送ユニットに適用して、ユーザ入力1を抽出し、メモリデバイス1からアクセスするためにCPU1のノード1のメモリデバイス1に記憶するためにユーザ入力1を提供する。
【0121】
一実施形態では、ユーザ入力1、またはユーザ入力2、ユーザ入力3、及びユーザ入力1’などの本明細書で説明される任意の他のユーザ入力は、クライアントデバイス1から、アプリケーションの実行のためにスイッチシステム206によって選択されるノードの1つまたは複数に送信される。
【0122】
ある実施形態では、CPU2は、第1及び第2の仮想オブジェクトが衝突する接触面と、接触点からの侵入距離とを決定する。一実施形態では、CPU2は、CPU1からの命令を詳細に分析して、第1の仮想オブジェクトと第2の仮想オブジェクトとの間に衝突がなく、衝突中及び衝突後の第1及び第2の仮想オブジェクトの位置及び向きを決定する必要は無いと判断する。
【0123】
図4Bは、高品質のグラフィックスジョブがノード1からノード2にディスパッチされることを示すシステム410の実施形態の図である。GPU1は、予測状態2の1つまたは複数の画像フレームまたは画像フレームの一部を生成し、画像フレームまたは画像フレームの一部をGPUメモリデバイス1に記憶する。予測状態2の1つまたは複数の画像フレームまたは画像フレームの一部は、仮想シーンの仮想背景等、単純なグラフィックス状態の例である。GPU1は、予測状態2の残りの画像フレームまたは画像フレームの残りの部分を生成する命令を生成する。残りの画像フレームまたは画像フレームの残りの部分は、仮想シーンに表示される仮想オブジェクトなどの複雑なグラフィックス状態の例である。仮想シーンは、表示されるとき、単純なグラフィックス状態の仮想背景を含む。GPU1は、命令を内部通信デバイス1に送信して、複雑なグラフィックス状態を決定するタスクをノード2に提供する。内部通信デバイス1は、命令を受信することに応答して、仮想オブジェクトの1つまたは複数の位置及び1つまたは複数の向きにメモリデバイス1から、または、AIの1つまたは複数の位置及び1つまたは複数の向きに、メモリデバイス1aから、またはその組み合わせでアクセスして、予測状態2の残りの画像フレームまたは画像フレームの残りの部分の生成を促進する。メモリデバイス1内に記憶された予測状態2の仮想オブジェクトの位置及び向きと、メモリデバイス1a内に記憶された予測状態2のAIの位置及び向きとが、ノード1のGPU1によって使用されて、予測状態2の画像フレームまたは画像フレームの一部を生成する。
【0124】
内部通信デバイス1は、GPU1から受信した命令と、予測状態2の仮想オブジェクト及びAIの位置と向きとに内部通信プロトコルを適用して、1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。内部通信デバイス2は、転送ユニットを受信し、転送ユニットに内部通信プロトコルを適用して、命令と、予測状態2の仮想オブジェクト及びAIの位置及び向きとを取得する。内部通信デバイス2は、仮想オブジェクト及びAIの位置と向きと共に命令をGPU2に送信する。
【0125】
GPU2は、予測状態2の仮想オブジェクト及びAIの位置及び向きから、残りの画像フレーム、または画像フレームの残りの部分を生成し、残りの画像フレーム、または画像フレームの残りの部分をGPUメモリデバイス2内に記憶する。内部通信デバイス2は、GPUメモリデバイス2から予測状態2の残りの画像フレームまたは画像フレームの残りの部分にアクセスし、内部通信プロトコルを残りの画像フレームまたは画像フレームの残りの部分に適用して、1つまたは複数の転送ユニットを生成する。
【0126】
予測状態2の転送ユニットは、内部通信デバイス2からノード1の内部通信デバイス1に送信される。内部通信デバイス1は、転送ユニットに内部通信プロトコルを適用して、予測状態2の残りの画像フレームまたは画像フレームの残りの部分を取得し、残りの画像フレームまたは残りの部分を記憶するためにGPUメモリデバイス1に提供する。
【0127】
GPU1は、予測状態2の画像フレームの部分を予測状態2の画像フレームの残りの部分と組み合わせるか、または予測状態2の画像フレームを予測状態2の残りの画像フレームと組み合わせる。例えば、GPU1は、予測状態2の画像フレームの部分と、予測状態2の画像フレームの残りの部分とから、その部分とその残りの部分とが同じ画像フレームを特定することと、残りの部分の位置に対するその部分の位置とを特定する。部分と残りの部分とを組み合わせて予測状態2の画像フレームになることと、部分と残りの部分との画像フレーム内の位置とを特定することによって、GPU1は、部分が、予測状態2の画像フレームのその位置にあり、残りの部分がその位置にある画像フレームを出力する。別の例として、GPU1は、予測状態2に対してGPU1によって生成された画像フレームと、予測状態2に対してGPU2によって生成された残りの画像フレームとから、画像フレームがクライアントデバイス1に表示されるシーケンスを識別する。GPU1は、予測状態2に対してGPU1によって生成された画像フレームと、予測状態2に対してGPU2によって生成された残りの画像フレームとを、そのシーケンスで配置し、GPU1によって生成された画像フレームと、GPU2によって生成された残りの画像フレームとの提示または表示の順番を出力する。GPU1によって生成された画像フレームと、GPU2によって生成された残りの画像フレームは、GPU1によってその順になるように配置されるなど、組み合わされる。
【0128】
ビデオエンコーダVE1は、予測状態2に対してGPU1によって生成された画像フレームと、予測状態2に対してGPU2によって生成された残りの画像フレームとの組み合わせを符号化して、1つまたは複数の符号化された画像フレームを出力する。ビデオエンコーダVE1は、GPU1によって生成された画像フレームとGPU2によって生成された残りの画像フレームとを画像フレームと残りの画像フレームが組み合わされる順番に従って符号化する。ビデオエンコーダVE1は、一実施形態では、予測状態2に対してGPU1によって生成された部分と、予測状態2に対してGPU2によって生成された残りの部分とを有する予測状態2の画像フレームを符号化して、符号化された画像フレームを出力する。
【0129】
予測状態2のユーザ入力2がノード1によってノードAから受信されると、ノード1のネットワーク通信デバイス1は、予測状態2の符号化されたオーディオフレームにノード1のオーディオエンコーダ1からアクセスすることに加えて、予測状態2の符号化された画像フレームにビデオエンコーダVE1からアクセスし、符号化された画像フレームと符号化されたオーディオフレームとに外部通信プロトコルを適用して、1つまたは複数のパケットを生成し、コンピュータネットワーク102によってクライアントデバイス1にパケットを送信する。パケットを受信すると、クライアントデバイス1は、予測状態2の符号化された画像フレームに基づいて1つまたは複数の画像を表示し、予測状態2の符号化されたオーディオフレームに基づいて音声を出力する。
【0130】
予測状態2に対してGPU1によって生成された画像フレームは、予測状態2に対してGPU2によって生成された残りの画像フレームと比較して品質が低い。例えば、GPU1によって生成された画像フレームは、GPU2によって生成された残りの画像フレームより低い解像度を有する。別の例として、GPU1によって生成された画像フレームは、GPU2によって生成された残りの画像フレームの表示と比較して低いフレームレートで表示される。
【0131】
同様に、予測状態2に対してGPU1によって生成された画像フレームの部分は、予測状態2に対してGPU2によって生成された画像フレームの残りの部分と比較して低品質である。例えば、GPU1によって生成された画像フレームの部分は、GPU2によって生成された画像フレームの残りの部分の解像度よりも低い解像度を有する。
【0132】
一実施形態では、GPU2は、GPU1より高品質である。例えば、GPU2は、GPU1より高いコンピュータ性能を有する。説明すると、GPU2は、GPU1と比較して、応答時間が短い、またはスループットが高い、またはノード2の構成要素の利用率が低い、または処理能力が高い、または負荷が低い、または実行するジョブの量が少ない、または実行するタスクの数が少ない、または、これらの組み合わせである。
【0133】
一実施形態では、予測状態2のユーザ入力2が、ノードAからノード1によって受信されると、ビデオエンコーダVE1は、予測状態2に対してGPU1によって生成された画像フレームと予測状態2に対してGPU2によって生成された残りの画像フレームとの組み合わせを符号化して、1つまたは複数の符号化された画像フレームを出力する、または、予測状態2に対してGPU1によって生成された部分と、予測状態2に対してGPU2に対して生成された残りの部分とを有する予測状態2の画像フレームを符号化して、符号化された画像フレームを出力する。GPU1によって生成された画像フレームとGPU2によって生成された残りの画像フレームとの組み合わせの符号化、または予測状態2に対してGPU1によって生成された画像フレームの部分と予測状態2に対してGPU2によって生成された画像フレームの残りの部分とを組み合わせることによって生成された画像フレームの符号化は、ユーザ入力2が受信される前ではなく、後に行われる。ノード1のネットワーク通信デバイス1は、ノード1のオーディオエンコーダ1からの予測状態2の符号化されたオーディオフレームに加えて、ビデオエンコーダVE1からの予測状態2の符号化された画像フレームにアクセスし、符号化された画像フレームと符号化されたオーディオフレームとに外部通信プロトコルを適用して、1つまたは複数のパケットを生成し、コンピュータネットワーク102によってクライアントデバイス1にパケットを送信する。
【0134】
図4Cは、物理予測エンジンに関連する1つまたは複数のタスクのノード1からノード2への割り当てを示すシステム420の実施形態の図である。システム420は、ノード1及び2を含む。ノード1のCPU1、CPU1a、及びGPU1などの1つまたは複数のプロセッサは、ノード2の1つまたは複数のプロセッサと比較して、プロセッサ性能が低い。ノード2の1つまたは複数のプロセッサは、CPU2、CPU A1、及びGPU2を含む。また、ノード1のメモリデバイス1、メモリデバイス1a、及びGPUメモリデバイス1などの1つまたは複数のメモリデバイスは、ノード2の1つまたは複数のメモリデバイスのものと比較して、記憶空間の量が少ない。ノード2の1つまたは複数のメモリデバイスは、メモリデバイス2、メモリデバイス2a、及びGPUメモリデバイス2を含む。
【0135】
CPU1は、ユーザ入力1を受信すると、ユーザ入力1とユーザ入力2及び3(
図3A)とに基づいて、その処理性能が予測状態2の一部を判断するには不十分であると判断する。例えば、CPU1は、クライアントデバイス1(
図1)を介してユーザAによって制御される仮想オブジェクトの予測状態2の1つまたは複数の位置と1つまたは複数の向きを決定するために、閾値量を超える処理能力が使用されると判断する。別の例として、CPU1は、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの予測状態2の1つまたは複数の位置及び1つまたは複数の向きを決定するためにノード1の所定の数を超える構成要素が使用されると判断する。
【0136】
そのように判断すると、CPU1は、内部通信デバイス1及び2を介してユーザ入力1、2、及び3をCPU2に送信する。例えば、内部通信デバイス1は、内部通信プロトコルをユーザ入力1、2、及び3に適用して、ユーザ入力1、2、及び3を有する1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを転送ユニットに適用して、ユーザ入力1、2、及び3を取得し、ユーザ入力1、2、及び3をCPU2に送信する。
【0137】
CPU2は、物理予測エンジンを適用して、ユーザ入力1、2、及び3に基づいて、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの1つまたは複数の位置及び1つまたは複数の向きを決定する。仮想オブジェクトの位置及び向きは、予測状態2のものである。さらに、CPU2は、オーディオ予測エンジンを適用して、ユーザ入力1、2、及び3に基づいて、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトによって出力される予測状態2のオーディオデータを決定する。CPU2は、仮想オブジェクトの予測状態2の位置及び向きをノード2のメモリデバイス2に記憶する。
【0138】
さらに、ノード2のCPU2aは、仮想オブジェクトの予測状態2の位置及び向きにメモリデバイス2からアクセスし、物理予測エンジンを仮想オブジェクトの位置及び向きに適用して、仮想オブジェクトを有する仮想シーン内の1つまたは複数のAIの1つまたは複数の位置及び向きを決定する。仮想シーンは、予測状態2のものである。CPU2aは、AIの位置及び向きをメモリデバイス2aに記憶する。さらに、CPU2aは、オーディオ予測エンジンを適用して、AIの位置及び向きに基づいて、仮想シーン内のAIによって出力されるオーディオデータ決定する。AIが出力するオーディオデータは、予測状態2のものである。
【0139】
ノード2のGPU2は、仮想オブジェクトの位置及び向きにメモリデバイス2からアクセスし、AIの位置及び向きにメモリデバイス2aからアクセスし、レンダリングコード等のグラフィックス予測エンジンを位置及び向きに適用して、予測状態2の仮想シーンの1つまたは複数の画像フレームを生成する。ノード2のビデオエンコーダVE2は、仮想シーンの画像フレームを符号化して、予測状態2の仮想シーンの1つまたは複数の符号化された画像フレームを出力する。さらに、ノード2のオーディオエンコーダ2は、仮想オブジェクトによって出力されるオーディオデータにメモリデバイス2からアクセスし、AIによって出力されるオーディオデータにメモリデバイス2aからアクセスし、オーディオデータを符号化して、予測状態2の符号化されたオーディオフレームを出力する。
【0140】
ユーザ入力2及び3は、コンピュータネットワーク102(
図1)、ノードA、及びノード1を介して、クライアントデバイス1の入力デバイスからノード2によって受信される。例えば、ノードAのCPU A(
図2A)は、コンピュータネットワーク102によってクライアントデバイス1からユーザ入力2及び3を受信し、CPU Aは、ユーザ入力2及び3を内部通信デバイスAに提供する。ノードAの内部通信デバイスAは、ユーザ入力2及び3に内部通信プロトコルを適用して、1つまたは複数の転送ユニットを生成し、転送ユニットをノード1の内部通信デバイス1に送信する。内部通信デバイス1は、内部通信プロトコルを転送ユニットに適用して、転送ユニットからユーザ入力2及び3を抽出し、ユーザ入力2及び3をノード1のCPU1に送信する。ノード1のCPU1は、内部通信デバイス1に、ユーザ入力2及び3をノード2に送信するように命令する。ノード1の内部通信デバイス1は、内部通信プロトコルをユーザ入力2及び3に適用して、1つまたは複数の転送ユニットを生成し、転送ユニットをノード2の内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルをノード1から受信した転送ユニットに適用して、ユーザ入力2及び3を抽出し、ユーザ入力2及び3をノード2のCPU2aに送信する。
【0141】
コンピュータネットワーク102(
図1)、ノードA、及びノード1を介してクライアントデバイス1の入力デバイスからユーザ入力2及び3を受信すると、ノード2のネットワーク通信デバイス2は、外部通信プロトコルを予測状態2の仮想シーンの符号化された画像フレーム及び符号化されたオーディオフレームに適用して、1つまたは複数のパケットを生成し、コンピュータネットワーク102を介してクライアントデバイス1にパケットを送信する。クライアントデバイス1は、パケットを受信すると、符号化されたビデオフレームに基づく予測状態2の仮想シーンの1つまたは複数の画像を表示し、予測状態2の符号化されたオーディオフレームに基づく音声を出力する。
【0142】
一実施形態では、ユーザ入力1を受信すると、CPU1は、物理予測エンジンを適用して、ユーザ入力1とユーザ入力2及び3(
図3A)とに基づいて、低い処理性能で十分な予測状態2の部分を決定する。例えば、CPU1は、クライアントデバイス1(
図1)を介してユーザAによって制御される仮想オブジェクトの位置及び向きを決定する。さらに、CPU1は、オーディオ予測エンジンを適用して、ユーザ入力1、2、及び3に基づいて、クライアントデバイス1(
図1)を介してユーザAによって制御される仮想オブジェクトによって出力されるオーディオデータを決定する。
【0143】
その実施形態では、CPU1は、ユーザ入力1、2、及び3と、仮想オブジェクトの位置、向き、及びオーディオデータとを、内部通信デバイス1及び2を介してCPU2に送信する。例えば、内部通信デバイス1は、内部通信プロトコルをユーザ入力1、2、及び3と、仮想オブジェクトの位置、向き、及びオーディオデータとに適用して、ユーザ入力1、2、及び3を有する1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを転送ユニットに適用して、ユーザ入力1、2、及び3と、仮想オブジェクトの位置、向き、及びオーディオデータとを取得し、ユーザ入力1、2、及び3と、仮想オブジェクトの位置、向き、及びオーディオデータとをCPU2及びCPU2aに送信する。CPU2は、予測状態2の仮想オブジェクトの位置及び向きと、仮想オブジェクトによって出力されるオーディオデータとをメモリデバイス2に記憶する。
【0144】
同じ実施形態では、CPU2aは、物理予測エンジンをユーザ入力1、2、及び3と、仮想オブジェクトの位置及び向きとに適用して、CPU1によって位置及び向きを決定される仮想オブジェクトを有する仮想シーン内の1つまたは複数のAIの1つまたは複数の位置及び向きを決定する。仮想シーンは予測状態2のものである。さらに、CPU2aは、オーディオ予測エンジンを適用して、ユーザ入力1、2、及び3に基づいて、予測状態2の仮想シーン内のAIによって出力されるオーディオデータ決定する。予測状態2のAIの位置及び向きと、予測状態2のAIによって出力されるオーディオデータとは、メモリデバイス2aに記憶される。予測状態2のAIの位置及び向きを決定するタスクは、仮想シーンにおける予測状態2の仮想オブジェクトの位置及び向きを決定するタスクと比較して、より計算集約的である。さらに、仮想シーンの予測状態2のAIによって出力されるオーディオデータを決定するタスクも、仮想シーンの予測状態2の仮想オブジェクトによって出力されるオーディオデータを決定するタスクよりも計算集約的である。
【0145】
その実施形態では、ノード2のGPU2は、仮想オブジェクトの位置及び向きにメモリデバイス2からアクセスし、AIの位置及び向きにメモリデバイス2aからアクセスし、レンダリングコード等のグラフィックス予測エンジンを位置及び向きに適用して、予測状態2の仮想シーンの1つまたは複数の画像フレームを生成する。ノード2のビデオエンコーダVE2は、仮想シーンの画像フレームを符号化して、予測状態2の仮想シーンの1つまたは複数の符号化された画像フレームを出力する。さらに、ノード2のオーディオエンコーダ2は、仮想オブジェクトによって出力されるオーディオデータにメモリデバイス2からアクセスし、AIによって出力されるオーディオデータにメモリデバイス2aからアクセスし、オーディオデータを符号化して、予測状態2の符号化されたオーディオフレームを出力する。
【0146】
その実施形態では、コンピュータネットワーク102(
図1)、ノードA、及びノード1を介してクライアントデバイス1の入力デバイスからユーザ入力2及び3を受信すると、ノード2のネットワーク通信デバイス2は、外部通信プロトコルを予測状態2の仮想シーンの符号化された画像フレーム及び符号化されたオーディオフレームに適用して、1つまたは複数のパケットを生成し、コンピュータネットワーク102を介してクライアントデバイス1にパケットを送信する。クライアントデバイス1は、パケットを受信すると、符号化されたビデオフレームに基づく予測状態2の仮想シーンの1つまたは複数の画像を表示し、予測状態2の符号化されたオーディオフレームに基づく音声を出力する。
【0147】
一実施形態では、本明細書で説明される符号化はいずれも、予測状態2に対するユーザ入力2及び3のうちの1つまたは複数が受信された後に行われる。例えば、コンピュータネットワーク102(
図1)、ノードA、及びノード1を介してクライアントデバイス1の入力デバイスからユーザ入力2及び3を受信すると、ノード2のビデオエンコーダVE2は仮想シーンの画像フレームを符号化して、予測状態2の仮想シーンの1つまたは複数の符号化された画像フレームを出力する。さらに、ユーザ入力2及び3を受信すると、ノード2のオーディオエンコーダ2は、仮想オブジェクトによって出力されるオーディオデータにメモリデバイス2から、AIによって出力されるオーディオデータにメモリデバイス2aからアクセスし、オーディオデータを符号化して、予測状態2の符号化されたオーディオフレームを出力する。ノード2のネットワーク通信デバイス2は、外部通信プロトコルを予測状態2の仮想シーンの符号化された画像フレーム及び符号化されたオーディオフレームに適用して、1つまたは複数のパケットを生成し、コンピュータネットワーク102を介してクライアントデバイス1にパケットを送信する。クライアントデバイス1は、パケットを受信すると、符号化されたビデオフレームに基づいて予測状態2の仮想シーンの1つまたは複数の画像を表示し、予測状態2の符号化されたオーディオフレームに基づいて音声を出力する。
【0148】
一実施形態では、CPU1aは、CPU2aと比較してより高いプロセッサ性能を有する。この実施形態では、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの位置及び向きは、予測状態2の仮想オブジェクトを有する仮想シーン内の1つまたは複数のAIの1つまたは複数の位置及び1つまたは複数の向きを決定するために、ノード2からノード1に送信される。また、仮想オブジェクトが出力するオーディオデータは、予測状態2のAIが出力するオーディオデータを決定するために、ノード2からノード1に送信される。例えば、内部通信デバイス2は、予測状態2の仮想オブジェクトの位置、向き、及びオーディオデータにメモリデバイス2からアクセスし、内部通信プロトコルを適用して1つまたは複数の転送ユニットを生成し、転送ユニットをノード1の内部通信デバイス1に転送する。内部通信デバイス1は、内部通信プロトコルを適用して転送ユニットを解析し、予測状態2の仮想オブジェクトの位置、向き、及びオーディオデータを取得し、位置及び向きをノード1のCPU1aに提供する。ノード1のCPU1aは、予測状態2の仮想シーンの仮想オブジェクトの位置及び向きに基づいて、1つまたは複数のAIの1つまたは複数の位置及び向きを決定する。さらに、CPU1aは、予測状態の仮想シーンの仮想オブジェクトが出力するオーディオデータに基づいて、AIが出力するオーディオデータを決定する。
【0149】
ある実施形態では、GPU1は、ノード2のGPU2よりも高いプロセッサ性能を有する。この実施形態では、GPU2がクライアントデバイス1を介してユーザAによって制御される仮想オブジェクトの位置及び向きとAIの位置及び向きとから1つまたは複数の画像フレームを生成する代わりに、GPU1が、予測状態2の画像フレームを生成する。GPU1は、位置及び向きがCPU1によって決定される場合は、メモリデバイス1から、または、位置及び向きがCPU2によって決定される場合は、メモリデバイス2からのいずれかから、予測状態2の仮想オブジェクトの位置及び向きにアクセスする。
【0150】
その実施形態では、GPU1は、内部通信デバイス1及び2を介して、メモリデバイス2から予測状態2の仮想オブジェクトの位置及び向きにアクセスする。例えば、GPU1は、仮想オブジェクトの位置及び向きをメモリデバイス2から取得するための命令を生成し、命令を内部通信デバイス1に送信する。内部通信デバイス1は、内部通信プロトコルを命令に適用して、1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。内部通信デバイス2は、転送ユニットに内部通信プロトコルを適用して命令を取得し、命令をCPU2に送信する。CPU2は、メモリデバイス2から仮想オブジェクトの位置及び向きにアクセスし、位置及び向きを内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを仮想オブジェクトの位置及び向きに適用して、1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス1に送信する。内部通信デバイス1は、内部通信プロトコルを転送ユニットに適用して、仮想オブジェクトの位置及び向きを抽出し、位置及び向きをGPU1に送信する。
【0151】
実施形態を続けると、GPU1は、AIの位置及び向きに、位置及び向きがCPU1aによって決定される場合は、メモリデバイス1aから、または位置及び向きがCPU2aによって決定される場合は、メモリデバイス2aからのいずれかから、アクセスする。GPU1は、内部通信デバイス1及び2を介して、メモリデバイス2aから予測状態2のAIの位置及び向きにアクセスする。例えば、GPU1は、予測状態2のAIの位置及び向きをメモリデバイス2aから取得するための命令を生成し、命令を内部通信デバイス1に送信する。内部通信デバイス1は、内部通信プロトコルを命令に適用して1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。内部通信デバイス2は、転送ユニットに内部通信プロトコルを適用して命令を抽出し、CPU2aに命令を送信する。CPU2aは、メモリデバイス2aから予測状態2のAIの位置及び向きにアクセスし、位置及び向きを内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを予測状態2のAIの位置及び向きに適用して、1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス1に送信する。内部通信デバイス1は、内部通信プロトコルを転送ユニットに適用して、予測状態2のAIの位置及び向きを取得し、位置及び向きをGPU1に送信する。
【0152】
一実施形態では、オーディオエンコーダ1は、ノード2のオーディオエンコーダ2よりも高いプロセッサ性能を有する。この実施形態では、予測状態2の仮想オブジェクトによって出力されるオーディオデータがCPU2によって生成される場合、オーディオエンコーダ1は、ノード2からオーディオデータを取得する命令を生成し、命令を内部通信デバイス1に提供する。内部通信デバイス1は、内部通信プロトコルを命令に適用して、命令を有する1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを転送ユニットに適用して命令を取得し、命令をCPU2に送信する。CPU2は、命令に応答して、メモリデバイス2からオーディオデータにアクセスし、オーディオデータを内部通信デバイス2に送信する。内部通信デバイス2は、予測状態2の仮想オブジェクトによって出力されるオーディオデータに内部通信プロトコルを適用して、1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス1に送信する。内部通信デバイス1は、内部通信プロトコルを転送ユニットに適用して、予測状態2の仮想オブジェクトによって出力されるオーディオデータを取得し、オーディオデータをオーディオエンコーダ1に送信する。オーディオデータを受信すると、オーディオエンコーダ1は、オーディオデータを符号化して、符号化されたオーディオフレームを出力する。同様に、予測状態2に対して1つまたは複数のAIによって出力されるオーディオデータがCPU2aによって生成される場合、オーディオエンコーダ1は、ノード2のメモリデバイス2aからオーディオデータを取得する命令を生成する。内部通信デバイス1及び2を介してメモリデバイス2aからオーディオデータを受信すると、オーディオエンコーダ1は、AIによって出力されるオーディオデータを符号化して、予測状態2の1つまたは複数の符号化されたオーディオフレームを生成する。
【0153】
ある実施形態では、オーディオエンコーダ1は、クライアントデバイス1を介してユーザAによって制御される仮想オブジェクトによって出力されるオーディオデータにメモリデバイス1からアクセスし、1つまたは複数のAIによって出力されるオーディオデータにノード2のメモリデバイス2からアクセスする。仮想オブジェクトによって出力されるオーディオデータとAIによって出力されるオーディオデータとは、予測状態2の仮想シーンのものである。
【0154】
一実施形態では、オーディオエンコーダ1は、1つまたは複数のAIによって出力されるオーディオデータにメモリデバイス1からアクセスし、クライアントデバイス1を使用してユーザAによって制御される仮想オブジェクトによって出力されるオーディオデータにノード2のメモリデバイス2からアクセスする。仮想オブジェクトによって出力されるオーディオデータとAIによって出力されるオーディオデータとは、予測状態2の仮想シーンのものである。
【0155】
ある実施形態では、ビデオエンコーダ1は、ノード2のビデオエンコーダ2より高いプロセッサ性能を有する。この実施形態では、予測状態2の仮想オブジェクトを有する1つまたは複数の画像フレームがCPU2によって生成される場合、ビデオエンコーダ1は、ノード2から画像フレームを取得する命令を生成し、命令を内部通信デバイス1に提供する。内部通信デバイス1は、内部通信プロトコルを命令に適用して、命令を有する1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを転送ユニットに適用して命令を抽出し、命令をGPU2に送信する。GPU2は、命令に応答して、GPUメモリデバイス2から画像フレームにアクセスし、画像フレームを内部通信デバイス2に送信する。内部通信デバイス2は、予測状態2の仮想オブジェクトによって出力される画像フレームに内部通信プロトコルを適用して、1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス1に送信する。内部通信デバイス1は、内部通信プロトコルを転送ユニットに適用して、予測状態2の仮想オブジェクトの画像フレームを抽出し、画像フレームをビデオエンコーダ1に送信する。画像フレームを受信すると、ビデオエンコーダ1は、画像フレームを符号化して、符号化された画像フレームを出力する。同様に、予測状態2の1つまたは複数のAIを有する画像フレームが、GPU2によって生成される場合、ビデオエンコーダ1は、ノード2のGPUメモリデバイス2から画像フレームを取得する命令を生成する。内部通信デバイス1及び2を介してGPUメモリデバイス2から画像フレームを受信すると、ビデオエンコーダ1は、AIの画像フレームを符号化して、1つまたは複数の符号化された画像フレームを生成する。
【0156】
ある実施形態では、ビデオエンコーダ1は、クライアントデバイス1を使用して、ユーザAによって制御される仮想オブジェクトを有する画像フレームにGPUメモリデバイス1からアクセスし、1つまたは複数のAIを有する画像フレームにノード2のGPUメモリデバイス2からアクセスする。仮想オブジェクト及びAIを有する画像フレームは、予測状態2の仮想シーンのものである。
【0157】
一実施形態では、ビデオエンコーダ1は、1つまたは複数のAIを有する画像フレームにGPUメモリデバイス1からアクセスし、クライアントデバイス1を使用してユーザAによって制御される仮想オブジェクトを有する画像フレームにノード2のGPUメモリデバイス2からアクセスする。仮想オブジェクト及びAIを有する画像フレームは、予測状態2の仮想シーンのものである。
【0158】
ある実施形態では、ネットワーク通信デバイス1は、ノード2のネットワーク通信デバイス2より高いプロセッサ性能を有する。この実施形態では、予測状態2の1つまたは複数の符号化された画像フレームが、ビデオエンコーダVE2から出力される場合、ネットワーク通信デバイス1は、符号化された画像フレームをノード2から取得する命令を生成し、内部通信デバイス1に命令を提供する。内部通信デバイス1は、内部通信プロトコルを命令に適用して、命令を有する1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを転送ユニットに適用して、命令を抽出し、命令をビデオエンコーダVE2に送信する。ビデオエンコーダVE2は、命令に応答して、符号化された画像フレームにビデオエンコーダVE2のメモリデバイスからアクセスし、符号化された画像フレームを内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを予測状態2の符号化された画像フレームに適用して、1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス1に送信する。内部通信デバイス1は、内部通信プロトコルを転送ユニットに適用して、予測状態2の符号化された画像フレームを抽出し、符号化された画像フレームをネットワーク通信デバイス1に送信する。符号化された画像フレームを受信すると、且つ、ユーザ入力2及び3を受信した後またはそれに応答して、ネットワーク通信デバイス1は、外部通信プロトコルを符号化された画像フレームに適用して、1つまたは複数のパケットを生成し、クライアントデバイス1のディスプレイデバイスに、符号化された画像フレームに基づいた1つまたは複数の画像を表示するために、コンピュータネットワーク102を介してパケットをクライアントデバイス1に送信する。
【0159】
同様に、一実施形態では、予測状態2の1つまたは複数の符号化されたオーディオフレームがオーディオエンコーダVE2から出力される場合、ノード1のネットワーク通信デバイス1は、予測状態2の符号化されたオーディオフレームをノード2のオーディオエンコーダAE2から内部通信デバイス1及び2を介して取得するための命令を生成する。命令は、ノード1からノード2に送信される。符号化されたオーディオフレームを受信すると、且つ、ユーザ入力2及び3を受信した後またはそれに応答して、ネットワーク通信デバイス1は、外部通信プロトコルを符号化されたオーディオフレームに適用して1つまたは複数のパケットを生成し、符号化されたオーディオフレームに基づいて音声を出力するためにコンピュータネットワーク102を介してクライアントデバイス1にパケットを送信する。
【0160】
図4Dは、AI予測エンジンに関連する1つまたは複数のタスクのノード1からノード2への割り当てを示すシステム420の実施形態の図である。ユーザ入力1を受信すると、CPU1aは、ユーザ入力1に基づいて、予測状態2に対して複雑なAI状態を決定すると判断する。例として、CPU1aは、ノード1ではまだ受信されていないユーザ入力2及び3に基づいて、予測状態2に対して、複数のAIの複数の衝突点を決定すると判断する。CPU1aは、予測状態2に対してユーザ入力2及び3に基づいて、複数のAIが互いに衝突することを判断するタスクを行う。複数のAIの衝突は、単純なAI状態の例である。別の例として、ユーザ入力1を受信すると、CPU1aは、ユーザ入力1に基づいて、予測状態2に対してユーザ入力2及び3を決定する。CPU1aは、ユーザ入力2及び3(
図3A)に基づいて、CPU1aの処理性能は、予測状態2の一部を決定するのに不十分であるとさらに判断する。説明すると、CPU1aは、予測状態2の仮想シーンにおける1つまたは複数のAIの1つまたは複数の位置及び1つまたは複数の向きを決定するために閾値量を超える処理能力が使用されると判断する。別の例として、CPU1aは、予測状態2の仮想シーンにおけるAIの1つまたは複数の位置及び1つまたは複数の向きを決定するために所定の数を超えるノード1の構成要素が使用されると判断する。
【0161】
複雑なAI状態が決定されるべきであると判断すると、CPU1aは、予測状態2の複雑なAI状態を決定するために、内部通信デバイス1及び2を介してユーザ入力2及び3をCPU2aに送信する。例えば、内部通信デバイス1は、内部通信プロトコルをユーザ入力1、2、及び3に適用して、ユーザ入力2及び3を有する1つまたは複数の転送ユニットを生成し、転送ユニットを内部通信デバイス2に送信する。内部通信デバイス2は、内部通信プロトコルを転送ユニットに適用して、ユーザ入力2及び3を抽出し、ユーザ入力2及び3をCPU2aに送信する。
【0162】
CPU2aは、AI予測エンジンを適用して、ユーザ入力2及び3に基づいてAIの位置及び向きを決定する。AIの位置及び向きは、予測状態2のものである。さらに、CPU2aは、オーディオ予測エンジンを適用して、ユーザ入力2及び3に基づいて、予測状態2の仮想シーンでAIによって出力されるオーディオデータを決定する。CPU2aは、予測状態2のAIの位置及び向きと、AIによって出力されるオーディオデータとをノード2のメモリデバイス2aに記憶する。
【0163】
残りの動作は、
図4Cを参照して上記で説明した動作と同様である。例えば、ノード2のGPU2は、予測状態2の仮想シーン内の仮想オブジェクトの位置及び向きと、仮想シーン内のAIの位置及び向きとに基づいて画像フレームを生成する。さらに、ビデオエンコーダ2は、GPU2によって生成された画像フレームを符号化することにより、符号化された画像フレームを出力する。また、オーディオエンコーダAE2は、予測状態2の仮想シーンにおいてAIによって出力されるオーディオデータと仮想オブジェクトによって出力されるオーディオデータとを符号化して、符号化されたオーディオフレームを生成する。ユーザ入力2及び3を受信すると、ネットワーク通信デバイス2は、ノード2によって生成された符号化されたオーディオフレームと符号化された画像フレームとを有するパケットを生成し、コンピュータネットワーク102(
図4C)を介してパケットをクライアントデバイス1に送信する。
【0164】
一実施形態では、ノードA(
図2A)は、本明細書では第1のノードと呼ばれ、ノード1は、本明細書では第2のノードと呼ばれ、ノード2は、本明細書では第3のノードと呼ばれることがある。
【0165】
図5は、クライアントデバイス1、2、または3(
図1)の例であるクライアントデバイス500の実施形態の図である。クライアントデバイス500の例には、携帯電話及びHMDが含まれる。クライアントデバイス500は、ビデオオーディオセパレータ502、ネットワーク通信デバイス(NCD)504、ストリームバッファ506、1つまたは複数のスピーカ508、入力デバイス510、ディスプレイデバイス512、オーディオバッファ514、外部デジタルカメラ516、内部デジタルカメラ518、ビデオバッファ520、ビデオオーディオシンクロナイザ522、マイクロフォン524、慣性センサ526、フレームエンコーダ528、フレームデコーダ530、オーディオデジタル-アナログ変換器(DAC)532、ビデオDAC534、オーディオアナログ-デジタル変換器(ADC)536、ビデオADC538、及び触覚フィードバックデバイス540などの複数の構成要素を含む。触覚フィードバックデバイス540は、触覚フィードバックプロセッサ542、ドライバ544、及び機械素子546を含む。クライアントデバイス500の構成要素は、バス536を介して互いに結合される。本明細書で使用されるバッファは、ビデオデータまたはオーディオデータなどのデータを短期間または一時的に記憶するために使用される。別の例として、バッファは、データの移動中にデータを一時的に記憶するためのメモリデバイス内の領域である。
【0166】
外部デジタルカメラ516は、ユーザA、B、またはC(
図1)などのユーザの実世界環境の方を向き、内部デジタルカメラ518は、ユーザの目の方を向く。実世界の環境の例には、部屋、倉庫、小個室、及び密閉空間などが含まれる。本明細書で使用されるカメラの例には、広角カメラ、赤外線センサカメラ、パノラマカメラなどが含まれる。カメラは、デジタルメモリデバイスに記憶するために、静止画像を記録したり、動画であるビデオを記録したりするための光学機器である。カメラは、実世界環境またはユーザの目から反射された光を集束するレンズを含み、実世界環境またはユーザの目の画像をキャプチャするための画像キャプチャ機構を取り囲むカメラ本体を含む。外部デジタルカメラ516の例には、Sony Computer Entertainment(登録商標)社によって製造されたPlaystation Eye(登録商標)カメラが含まれる。ディスプレイデバイス512の例には、発光ダイオード(LED)ディスプレイデバイス、液晶ディスプレイ(LDC)ディスプレイデバイス、液晶オンシリコンディスプレイデバイス、有機LED(OLED)ディスプレイデバイス、プラズマスクリーンなどが含まれる。
【0167】
ディスプレイデバイス512は、ディスプレイデバイス512の表示画面上にゲームを表示するために、マイクロプロセッサ、ドライバ、及びメモリデバイスを含むマイクロコントローラを含む。例として、ディスプレイデバイス512のマイクロプロセッサは、復号された画像フレームをフレームデコーダ530から取得し、信号をドライバに送信して、ディスプレイデバイス512の表示画面のLED等の要素を駆動して、ゲームまたは他のアプリケーションの1つまたは複数の画像を表示画面に表示する。本明細書で使用されるドライバは、互いに結合されている1つまたは複数のトランジスタを含む。
【0168】
慣性センサ526の例には、ジャイロスコープ、磁力計、及び加速度計が含まれる。NCD504の例には、ネットワークインタフェースカード(NIC)及びネットワークインタフェースコントローラが含まれる。入力デバイス510の例には、キーパッド、キーボード、タッチスクリーン、タッチパッド、慣性センサ、1つまたは複数のボタン、1つまたは複数のスイッチ、1つまたは複数のジョイスティックなどが含まれる。一実施形態では、慣性センサ526は、入力デバイス510の一部である。
【0169】
フレームエンコーダ528は、画像フレーム内の複数の画像フレームまたはデータを圧縮または符号化して1つまたは複数の符号化された画像フレームを出力するビデオエンコーダを含む。例えば、フレームエンコーダ528のビデオエンコーダは、H.264及びモーションジェイペグ(MJPEG:Motion Joint Photographic Experts Group)などのビデオフレーム間圧縮プロトコルを適用して、複数の画像フレームを圧縮するか、またはフレーム内圧縮プロトコルを適用して、画像フレーム内のデータを圧縮して、1つまたは複数の符号化された画像フレームを出力する。例として、フレームエンコーダ528のビデオエンコーダは、プロセッサと、プロセッサによって、圧縮されるかまたはすでに圧縮されている画像フレームを記憶するためのバッファとを含む。別の例として、フレームエンコーダ528のビデオエンコーダは、バッファを含まずに、プロセッサを含む。
【0170】
さらに、フレームエンコーダ528は、オーディオデータを符号化して符号化されたオーディオフレームを出力するオーディオエンコーダを含む。例えば、フレームエンコーダ528のオーディオエンコーダは、アドバンストオーディオコーディング(AAC)などのオーディオフレーム間圧縮プロトコルをオーディオデータに適用して、符号化されたオーディオフレームを出力する。
【0171】
同様に、フレームデコーダ530は、符号化された画像フレームまたは符号化された画像フレーム内の符号化されたデータを復号して、1つまたは複数の復号された画像フレームまたは1つまたは複数の画像フレームを出力するビデオデコーダを含む。例として、フレームデコーダ530のビデオデコーダは、H.264及びモーションジェイペグ(MJPEG)などのフレーム間解凍プロトコルを適用して、複数の画像フレームを解凍するか、またはフレーム内解凍プロトコルを適用して、画像フレーム内のデータを解凍して、1つまたは複数の復号された画像フレームを出力する。例として、フレームデコーダ530のビデオデコーダは、プロセッサと、プロセッサによって解凍されるか、または既に解凍されている画像フレームを記憶するためのバッファとを含む。別の例として、フレームデコーダ530は、バッファを含まずにプロセッサを含む。
【0172】
また、フレームデコーダ530は、1つまたは複数の符号化されたオーディオフレームを復号して、オーディオフレームまたは復号されたオーディオフレームを出力するオーディオデコーダを含む。例えば、フレームデコーダ530のオーディオデコーダは、AACなどのオーディオフレーム間解凍プロトコルを、符号化されたオーディオフレームに適用して、復号されたオーディオデータまたはオーディオデータを出力する。
【0173】
一実施形態では、ビデオオーディオセパレータ502は、オーディオデータを画像フレームから分離するコンピュータプログラムである。ある実施形態では、ビデオオーディオセパレータ502は、オーディオデータと画像フレームとを区別するように設計及び製造されたASICまたはPLDなどのハードウェア回路である。
【0174】
ある実施形態では、ビデオオーディオシンクロナイザ522は、ビデオフレームの任意のフレームが、対応するオーディオデータに基づく音声出力と共に表示されるように、ビデオフレームをオーディオデータと同期させるコンピュータプログラムである。ある実施形態では、ビデオオーディオシンクロナイザ522は、対応するオーディオデータに従って、ビデオフレームの任意のフレームの表示を音声出力と同期させるように設計及び製造されたASICまたはPLDなどのハードウェア回路である。
【0175】
一実施形態では、本明細書で使用されるDACは、ビデオフレームまたは画像フレームまたはデジタルオーディオデータなどのデジタルデータを、電圧、電流、または電荷などのアナログ信号に変換する電子デバイスである。例えば、ビデオDACは、ディスプレイデバイス512にゲームを表示するために、画像フレームをアナログ信号に変換するハードウェア回路であり、オーディオDAC532は、音声をスピーカ508を介して出力するために、オーディオデータをアナログオーディオ信号に変換する電子回路である。
【0176】
ある実施形態では、本明細書で使用されるADCは、ビデオフレームまたは画像フレームまたはオーディオデータなどのデジタルデータにアナログ信号を変換する電子デバイスである。例えば、ビデオADC538は、アナログ信号を画像フレームに変換するハードウェア回路であり、オーディオADC536は、アナログオーディオ信号をオーディオデータに変換する電子回路である。
【0177】
ドライバ544の例は、互いに結合された1つまたは複数のトランジスタである。さらに、機械部品546の例は、振動する金属板、またはモータ及び金属板である。モータは、1つまたは複数のロッド、またはギアを介して互いに結合されたロッドなどの接続機構を介して金属プレートに結合される。
【0178】
データパケットのストリームは、コンピュータネットワーク102(
図1)を介して、またはコンピュータネットワーク102とコンピュータネットワーク102及びクライアントデバイス500に結合されたルータ(図示せず)とを介して、ストリームバッファ506に受信される。例として、ルータは、コンピュータネットワーク102とクライアントデバイス500との間に結合される。NCD504は、データパケットのストリームにストリームバッファ506からアクセスし、ストリームをデパケット化する。例えば、NCD504は、外部通信プロトコルを適用して、パケットから、符号化された画像フレームまたは符号化されたオーディオフレームなどの符号化されたフレームを抽出または取得する。さらに説明すると、NCD504は、パケットのヘッダからパケットのペイロードを決定し、ペイロードから符号化されたフレームにアクセスする。NCD504は、符号化されたフレームをフレームデコーダ530に送信する、またはフレームデコーダ530は、符号化されたフレームにNCD504からアクセスする。フレームデコーダ530は、H.264、H.265/MPEG-H、H.263/MPEG-4、H.262/MPEG-2a、またはカスタマイズされたプロトコルなどの復号プロトコルを適用して、符号化されたフレームを復号し、復号された画像フレームとオーディオデータとを出力する。
【0179】
復号された画像フレームは、デコーダ530からビデオオーディオセパレータ502によってアクセスされる、またはデコーダ530からビデオオーディオセパレータ502に送信される。ビデオオーディオセパレータ502は、復号された画像フレームからオーディオデータを分離する。例えば、ビデオオーディオセパレータ502は、オーディオデータに提供される識別子及び復号された画像フレームに提供される識別子に従って、復号された画像フレームからオーディオデータを分離する。ビデオオーディオセパレータ502は、オーディオデータをオーディオバッファ514に送信し、復号された画像フレームをビデオバッファ520に送信する。ビデオオーディオシンクロナイザ522は、ビデオバッファ520に記憶された復号された画像フレームを、オーディオバッファ514に記憶されたオーディオデータと同期させる。例えば、ビデオオーディオシンクロナイザ522は、復号された画像フレームのうちの1つが生成された時間と、対応するオーディオデータが生成された時間とを使用して、復号された画像フレームを対応するオーディオデータに従って出力される音声と共に表示することを決定する。
【0180】
オーディオDAC532は、同期されたオーディオデータをデジタル形式からアナログ形式に変換してオーディオ信号を生成し、オーディオ信号は、スピーカ508によって音声に変換される。ビデオDAC534は、同期された画像フレームをデジタル形式からアナログ形式に変更して、アナログビデオ信号を生成する。ディスプレイデバイス512は、アナログビデオ信号に基づいて、ゲームの画像をディスプレイデバイスの表示画面に表示する。画像は、スピーカ508によって出力される音声と同期して表示される。
【0181】
さらに、ユーザA、B、またはC(
図1)は、マイクロフォン524に向かって話し、マイクロフォン524は、例えば、ユーザの声などの音声を、例えば、電圧、電流、電気信号などのオーディオ信号に変換する。オーディオADC538は、オーディオ信号をアナログ形式からデジタル形式に変換して、オーディオデータを生成し、オーディオデータは、オーディオバッファ514に記憶される。オーディオデータは、オーディオバッファ514からNCD504によってアクセスされ、コンピュータネットワーク102(
図1)を介して分散型ゲームエンジンシステム106(
図1)に送信される。例えば、NCD504は、外部通信プロトコルを適用して、オーディオデータを埋め込む1つまたは複数のパケットを生成し、コンピュータネットワーク102を介して分散型ゲームエンジンシステム106にパケットを送信する。
【0182】
一実施形態では、フレームエンコーダ528は、オーディオADC538によって生成されたオーディオデータにオーディオフレーム間圧縮プロトコルを適用して、符号化されたオーディオフレームを出力し、符号化されたオーディオフレームをNCD504に提供する。NCD504は、外部通信プロトコルを符号化されたオーディオフレームに適用して、1つまたは複数のパケットを生成し、コンピュータネットワーク102を介して分散型ゲームエンジンシステム106にパケットを送信する。
【0183】
内部デジタルカメラ518は、ユーザA、B、またはC(
図1)の目または顔または頭または身体の1つまたは複数の画像をキャプチャする。内部デジタルカメラ518は、ユーザA、B、またはCの方を向く。例えば、クライアントデバイス500がユーザAによって着用されるHMDである場合、内部デジタルカメラ518は、ユーザAの目の方を向く。別の例として、クライアントデバイス500がスマートフォンの場合、内部デジタルカメラ518は、ディスプレイデバイス512の表示画面が配置されているクライアントデバイス500の同じ側または同じ表面にあるフロントカメラである。さらに別の例として、内部デジタルカメラ518は、ユーザAの手またはユーザAの腕の方を向いて、ユーザAが行ったジェスチャをキャプチャするフロントカメラである。同様に、外部デジタルカメラ516は、ユーザを取り巻く実世界環境の1つまたは複数の画像をキャプチャする。例として、クライアントデバイス500がスマートフォンであるとき、外部デジタルカメラ516は、ディスプレイデバイス512の表示画面が配置されている側と比べて、クライアントデバイス500の反対側または反対表面にあるリアカメラである。デジタルカメラ516及び518によってキャプチャされた画像は、ビデオバッファ520に記憶される。一実施形態では、画像及び画像フレームという用語は、本明細書では交換可能に使用される。ある実施形態では、デジタルカメラ516及び518によってキャプチャされた画像は、ビデオDAC534によってデジタル形式からアナログ形式に変換され、ディスプレイデバイス512上に画像を表示するために送信される。
【0184】
デジタルカメラ516及び518によってキャプチャされた画像は、NCD504によってビデオバッファ520からアクセスされて、画像を有する1つまたは複数のデータパケットを生成する。NCD504は、コンピュータネットワーク102を介してデータパケットを分散型ゲームエンジンシステム106(
図1)に送信する。一実施形態では、デジタルカメラ516及び518によってキャプチャされた画像は、フレームエンコーダ530によってアクセスされる。フレームエンコーダ530は、フレーム間圧縮プロトコルまたはフレーム内圧縮プロトコルを画像に適用して、1つまたは複数の符号化された画像フレームを生成し、符号化された画像フレームをバス536を介してNCD504に提供する。NCD504は、外部通信プロトコルを符号化された画像フレームに適用して、符号化された画像フレームから1つまたは複数のデータパケットを生成し、コンピュータネットワーク102を介して分散型ゲームエンジンシステム106にデータパケットを送信する。
【0185】
慣性センサ526は、ユーザAの身体部分の加速度、ユーザAの身体部分の回転速度、ユーザAの身体部分の向き、またはそれらの組み合わせなどの慣性センサデータを生成する。クライアントデバイス500がハンドヘルドコントローラを含む場合、慣性センサ526は、ハンドヘルドコントローラの動きに関する慣性センサデータを生成する。慣性センサデータは、慣性センサ526によってバス536を介してNCD504に提供される。NCD504は、慣性センサデータを埋め込んだ1つまたは複数のパケットを生成し、コンピュータネットワーク102を介して分散型ゲームエンジンシステム106(
図1)にパケットを送信する。
【0186】
さらに、NCD504は、1つまたは複数のボタンを選択することによって、または1つまたは複数のジェスチャを行うことによって、または入力デバイス510の1つまたは複数のジョイスティックを動かすことによって、ユーザA、B、またはCが行った1つまたは複数の選択を受信して、入力データを生成し、バス536を介して入力データをNCD504に提供する。NCD504は、外部通信プロトコルを入力データに適用して、入力データを有する1つまたは複数のデータパケットを生成し、データパケットをコンピュータネットワーク102を介して分散型ゲームエンジンシステム106に送信する。
【0187】
一実施形態では、NCD504によって生成されるデータパケットは、Wi-F(登録商標)接続またはBluetooth(登録商標)接続などの無線接続を介してNCD504に結合されたルータ(図示せず)を介して送信される。ルータはデータパケットを受信し、データパケットから宛先アドレスを決定する。ルータは、コンピュータネットワーク102(
図1)を介して、宛先アドレスが割り当てられている分散型ゲームエンジンシステム106の1つまたは複数のノードにデータパケットをルーティングする。
【0188】
同様に、ある実施形態では、分散型ゲームエンジンシステム106によって生成されるデータパケットは、コンピュータネットワーク102とクライアントデバイス500との間に結合されたルータ(図示せず)を介して送信される。ルータは、無線接続を介してクライアントデバイス500のNCD504に結合される。ルータは、分散型ゲームエンジンシステム106からデータパケットを受信し、データパケットから宛先アドレスを決定する。ルータは、無線接続を介して、宛先アドレスが割り当てられているクライアントデバイス500のNCD514にデータパケットをルーティングする。
【0189】
一実施形態では、入力デバイス510は、クライアントデバイス500とは別個のデバイスの一部である。例えば、入力デバイス510は、Sony(登録商標)Move(登録商標)コントローラまたはSony(登録商標)DualShock(登録商標)コントローラまたはゲームコントローラまたはジョイスティックコントローラなどのハンドヘルドコントローラの一部である。ハンドヘルドコントローラは、パラレルデータ転送ケーブルまたはシリアルデータ転送ケーブルまたはUSBケーブルなど、無線接続または有線接続を介して、クライアントデバイス500の内部通信デバイス(図示せず)に結合される。内部通信デバイスの例は、Bluetooth(登録商標)またはWi-Fi(登録商標)などの無線プロトコルを適用して、入力デバイス510とデータを通信するデータ転送デバイスである。例として、クライアントデバイス500の内部通信デバイスは、バス536を介してNCD504に結合される。NCD504は、ハンドヘルドコントローラから内部通信デバイスによって受信される入力データにアクセスし、外部通信プロトコルを適用して1つまたは複数のパケットを生成し、コンピュータネットワーク102を介して分散型ゲームエンジンシステム106にパケットを送信する。
【0190】
ある実施形態では、クライアントデバイス500は、内部デジタルカメラ518を除外している。
【0191】
一実施形態では、外部デジタルカメラ516は、クライアントデバイス500の外側に配置されて、ユーザA、B、またはCの腕、手、頭、もしくはそれらの組み合わせなどの身体部分の動き、またはユーザが着用するHMDの動き、またはユーザが保持するハンドヘルドコントローラの動きの画像をキャプチャする。
【0192】
ある実施形態では、パケットとデータパケットという用語は、本明細書では交換可能に使用される。
【0193】
一実施形態では、触覚フィードバックデバイス540、マイクロフォン524、入力デバイス510、及び慣性センサ526は、ハンドヘルドコントローラの構成要素である。また、この実施形態では、ディスプレイデバイス512及びスピーカ508は、テレビの構成要素である。さらに、外部デジタルカメラ516は、ハンドヘルドコントローラ、ゲームコンソール、及びテレビとは別個のデバイスである。この実施形態は、内部デジタルカメラ518を除外している。さらに、この実施形態では、フレームエンコーダ528、ビデオオーディオセパレータ502、NCD504、フレームデコーダ530、オーディオDAC532、ストリームバッファ506、ビデオDAC534、オーディオバッファ514、ビデオADC538、オーディオADC536、ビデオオーディオシンクロナイザ522、及びビデオバッファ520などのクライアントデバイス500の残りの構成要素は、ゲームコンソールの構成要素である。ゲームコンソールは、有線接続または無線接続を介してハンドヘルドコントローラに結合される。また、ゲームコンソールは、無線接続または高解像度マルチメディアインタフェース(HDMI(登録商標))接続を介してディスプレイデバイスに結合される。
【0194】
ある実施形態では、触覚フィードバックデバイス540、マイクロフォン524、入力デバイス510、慣性センサ526、ディスプレイデバイス512、スピーカ508、外部デジタルカメラ516、及び内部デジタルカメラ518は、ユーザA、B、またはCの頭部に着用されるHMDの構成要素である。さらに、この実施形態では、フレームエンコーダ528、ビデオオーディオセパレータ502、NCD504、フレームデコーダ530、オーディオDAC532、ストリームバッファ506、ビデオDAC534、オーディオバッファ514、ビデオADC538、オーディオADC536、ビデオオーディオシンクロナイザ522、及びビデオバッファ520などのクライアントデバイス500の残りの構成要素は、ゲームコンソールの構成要素である。ゲームコンソールは、有線接続または無線接続を介してHMDに結合される。
【0195】
図6は、本開示の実施態様による、クラウドビデオゲームをクライアントデバイス500(
図5)にストリーミングするために実行される様々な動作を概念的に示すフロー図である。分散型ゲームエンジンシステム106の1つまたは複数のゲームサーバ602は、ビデオゲームを実行し、生の(非圧縮の)ビデオ604及びオーディオ606を生成する。サーバは、本明細書ではノードと呼ばれることもある。サーバの例は、ゲームコンソールまたはサーバブレードである。ビデオ604及びオーディオ606は、図の参照番号608に示されるように、ストリーミングのために1つまたは複数のゲームサーバ602によって符号化される。符号化により、ビデオ及びオーディオのストリームが圧縮され、帯域幅の使用量は軽減され、ゲーム体験は最適化される。符号化形式の例には、H.265/MPEG-H、H.264/MPEG-4、H.263/MPEG-4、H.262/MPEG-2、WMV、VP6/7/8/9などが含まれる。
【0196】
符号化されたオーディオ610及び符号化されたビデオ612は、インターネット等のコンピュータネットワーク102を通して送信するために、参照番号614に示すように、NCD504(
図5)等のストリーミングエンジンによって、データパケットまたはネットワークパケットにさらにパケット化される。いくつかの実施形態では、ネットワークパケット符号化プロセスは、データ暗号化プロセスも採用することによって、データセキュリティを強化する。図示の実施態様では、オーディオパケット616及びビデオパケット618は、コンピュータネットワーク102を介したトランスポートのために外部通信プロトコルを適用することによって生成される。
【0197】
1つまたは複数のゲームサーバ602はさらに、触覚フィードバックデータ622を生成し、触覚フィードバックデータ622もネットワーク送信のためにデータパケットにパケット化される。図示の実施態様では、触覚フィードバックパケット624が、コンピュータネットワーク102を介してトランスポートのために生成される。
【0198】
生のビデオ及びオーディオと触覚フィードバックデータとを生成する前述の動作が、分散型ゲームエンジンシステム106の1つまたは複数のデータセンタの1つまたは複数のゲームサーバ602で実行され、ビデオ及びオーディオを符号化する動作、及び符号化されたオーディオ/ビデオ及び触覚フィードバックデータのトランスポートのためのパケット化は、1つまたは複数のデータセンタのストリーミングエンジンによって行われる。参照番号620に示されるように、オーディオ、ビデオ、及び触覚フィードバックのパケットは、コンピュータネットワーク102を介してトランスポートされる。参照番号626に示されるように、オーディオパケット616、ビデオパケット618、及び触覚フィードバックパケット624は、クライアントデバイス500によって分解され、例えば、解析されて、符号化されたオーディオ628、符号化されたビデオ630、及び触覚フィードバックデータ632をクライアントデバイス500でデータパケットから抽出する。データが暗号化されている場合、データの解読も行われる。次に、符号化されたオーディオ628及び符号化されたビデオ630は、参照番号634に示されるように、クライアントデバイス500によって復号されて、クライアントデバイス500のディスプレイデバイス512に表示するために、クライアント側の生のオーディオ及びビデオデータを生成する。触覚フィードバックデータ632は、クライアントデバイス500の触覚フィードバックプロセッサ542(
図5)によって処理されて、ハンドヘルドコントローラデバイス642で、または、触覚効果をレンダリングすることができる、例えば、HMD等のインタフェースデバイスで、触覚フィードバック効果を生成する。触覚効果の一例は、HMDのコントローラデバイス642の振動またはランブルである。
【0199】
ビデオゲームはユーザ入力に応答するので、ユーザ入力の送信及び処理に関しても、前述と同様の手順の流れを、クライアントデバイス500から1つまたは複数のサーバ502に逆方向で実行されることが、理解されよう。図示のように、コントローラデバイス642または別の入力デバイスまたはそれらの組み合わせは、入力データ644を生成する。この入力データ644は、クライアントデバイス500でパケット化されて、コンピュータネットワーク102を介して1つまたは複数のサーバ602にトランスポートするための入力データパケット646を生成する。入力データパケット646は、1つまたは複数のサーバ602により解凍及び再構築されて、データセンタ側で入力データ648を規定する。入力データ648は、1つまたは複数のサーバ602に供給され、サーバ602は、上記のように、入力データ648を処理して、1つまたは複数の状態を生成する。
【0200】
オーディオパケット616、ビデオパケット618、及び触覚フィードバックパケット624のコンピュータネットワーク102を介したトランスポート中に、いくつかの実施形態では、コンピュータネットワーク102を介したデータの送信が監視されて、サービス品質が保証される。例えば、参照番号650により示されるように、アップストリーム及びダウンストリームの両方のネットワーク帯域幅を含むコンピュータネットワーク102のネットワーク条件が監視され、ゲームストリーミングは、利用可能な帯域幅の変化に応じて調整される。すなわち、参考番号652により示されるように、ネットワークパケットの符号化及び復号は、現在のネットワーク条件に基づいて制御される。
【0201】
図7は、クライアントデバイス500のディスプレイデバイス512とインタフェースするために互換性があり、且つ、分散型エンジンシステム106(
図1)とコンピュータネットワーク102を介して通信できるゲームコンソール700の実施形態のブロック図である。ゲームコンソール700は、データセンタA内に配置されているか、またはユーザAが居る場所に配置されている。いくつかの実施形態では、ゲームコンソール700を使用して、HMD上に表示されるゲームを実行する。ゲームコンソール700は、ゲームコンソール700に接続可能な様々な周辺機器を備えている。ゲームコンソール700は、セルプロセッサ728、ダイナミックランダムアクセスメモリ(XDRAM)ユニット726、専用ビデオランダムアクセスメモリ(VRAM)ユニット732を備えるReality Synthesizer(登録商標)グラフィックスプロセッサユニット730、及び入力/出力(I/O)ブリッジ734を有する。ゲームコンソール700はまた、I/Oブリッジ734を通してアクセス可能な、ディスク740aから読み出すためのBlu Ray(登録商標)ディスクリードオンリメモリ(BD-ROM)光ディスクリーダ740と、取り外し可能スロットインハードディスクドライブ(HDD)736とを有する。オプションで、ゲームコンソール700はまた、コンパクトフラッシュ(登録商標)メモリカード、及びメモリスティック(登録商標)メモリカードなどを読み出すためのメモリカードリーダ738を含み、メモリカードリーダ738は、I/Oブリッジ734を介して同様にアクセス可能である。I/Oブリッジ734はまた、ユニバーサルシリアルバス(USB)2.0ポート724と、ギガビットイーサネット(登録商標)ポート722と、IEEE802.11b/g無線ネットワーク(Wi-Fi(登録商標))ポート720と、Bluetooth(登録商標)接続を支援することが可能なBluetooth(登録商標)無線リンクポート718とに接続する。
【0202】
動作中、I/Oブリッジ734は、ゲームコントローラ642及び/または703から、並びにHMD705からのデータを含む、無線、USB、及びイーサネット(登録商標)のデータ全てを扱う。例えば、ユーザAが、ゲームコードの一部の実行によって生成されたゲームをプレイしているとき、I/Oブリッジ734は、ゲームコントローラ642及び/または703から、及び/または、HMD705から、Bluetoothリンクを介して入力データを受信し、入力データをセルプロセッサ728に向け、セルプロセッサ728は、それに応じて、ゲームの現在の状態を更新する。例として、HMD705内のカメラは、ユーザAのジェスチャをキャプチャして、ジェスチャを表す画像を生成する。画像は入力データの一例である。各ゲームコントローラ642及び703は、ハンドヘルドコントローラ(HHC)の一例である。
【0203】
無線ポート、USBポート、及びイーサネット(登録商標)ポートは、ゲームコントローラ642及び703とHMD705とに加えて、例えば、リモートコントロール704、キーボード706、マウス708、例えば、Sony Playstation Portable(登録商標)エンターテインメントデバイスなどのポータブルエンターテインメントデバイス710、例えば、EyeToy(登録商標)ビデオカメラ712などのビデオカメラ、マイクロフォンヘッドセット714,及びマイクロフォン715などの他の周辺デバイスへの接続性も提供する。いくつかの実施形態では、このような周辺装置は、ゲームコンソール700に無線で接続される、例えば、ポータブルエンターテイメントデバイス710は、Wi-Fi(登録商標)アドホック接続を介して通信し、マイクロフォンヘッドセット714は、Bluetooth(登録商標)リンクを介して通信する。
【0204】
これらのインタフェースの提供は、ゲームコンソール700がまた、デジタルビデオレコーダ(DVR)、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤ、ボイスオーバインターネットプロトコル(IP)電話、携帯電話、プリンタ、及びスキャナなどの他の周辺デバイスに対応する可能性があることを意味する。
【0205】
さらに、レガシーメモリカードリーダ716は、USBポート724を介してゲームコンソール700に接続され、ゲームコンソール700によって使用される種類のメモリカード748の読み取りを可能にする。ゲームコントローラ642及び703とHMD705とは、Bluetooth(登録商標)リンク718を介してゲームコンソール700と無線で通信するように、またはUSBポート724に接続され、それによってゲームコントローラ642及び703とHMD705とのバッテリを充電するための電力も受け取るように動作可能である。いくつかの実施形態では、ゲームコントローラ642及び703とHMD705とはそれぞれ、メモリ、プロセッサ、メモリカードリーダ、例えば、フラッシュメモリなどの永久メモリ、例えば、照らされた球形部分、発光ダイオード(LED)、もしくは赤外線ライトなどの発光体、超音波通信用のマイクロフォン及びスピーカ、音響チャンバ、デジタルカメラ、内部時計、例えば、ゲームコンソール700に面する球形部分などの認識可能な形状、並びに、例えば、Bluetooth(登録商標)、Wi-Fi(登録商標)などのプロトコルを使用する無線デバイス等を含む。
【0206】
ゲームコントローラ642は、ユーザAの両手で使用するように設計されたコントローラであり、ゲームコントローラ703は、アタッチメントを備えた片手コントローラである。HMD705は、ユーザAの頭の上及び/または目の前に収まるように設計されている。1つまたは複数のアナログジョイスティックと従来のコントロールボタンとに加えて、各ゲームコントローラ642及び703は、三次元位置決定の影響を受ける。同様に、HMD705は、3次元位置決定の影響を受ける。その結果、いくつかの実施形態では、ゲームコントローラ642及び703とHMD705とを使用してユーザAが行うジェスチャ及び動きは、従来のボタンまたはジョイスティックのコマンドに加えて、またはそれらの代わりに、ゲームへの入力として変換される。オプションで、Playstation(登録商標)ポータブルデバイスなどの他の無線対応の周辺デバイスがコントローラとして使用される。Playstation(登録商標)ポータブルデバイスの場合、追加のゲーム情報または制御情報、例えば、制御命令または残機数等がデバイスの表示画面上に提供される。いくつかの実施形態では、ダンスマット(図示せず)、ライトガン(図示せず)、ハンドル及びペダル(図示せず)、または特注コントローラなど、他の代替的または補助的な制御デバイスが使用されてよい。特注コントローラの例には、即答クイズゲーム用の1つまたはいくつかの大型ボタン(同様に図示せず)が含まれる。
【0207】
リモートコントロール704も、Bluetooth(登録商標)リンク718を介してゲームコンソール700と無線で通信するように動作可能である。リモートコントロール704は、Blu Ray(登録商標)ディスクBD-ROMリーダ740の動作に適した制御、及びディスクコンテンツのナビゲーションに適した制御を含む。
【0208】
Blu Ray(登録商標)ディスクBD-ROMリーダ740は、従来の記録済みCD及び記録可能なCDと、いわゆるスーパーオーディオCDとに加えて、ゲームコンソール700と互換性を有するCD-ROMを読み出すように動作可能である。Blu Ray(登録商標)ディスクBD-ROMリーダ740はまた、従来の記録済みのDVD及び記録可能なDVDに加えて、ゲームコンソール700と互換性を有するデジタルビデオディスクROM(DVD-ROM)を読み出すように動作可能である。Blu Ray(登録商標)ディスクBD-ROMリーダ740は、ゲームコンソール700と互換性を有するBD-ROMと、従来の記録済みのBlu-Ray(登録商標)ディスク及び記録可能なBlu-Ray(登録商標)ディスクとを読み出すようにさらに動作可能である。
【0209】
ゲームコンソール700は、リアリティシンセサイザグラフィックスユニット730を介して生成または復号されたオーディオ及びビデオを、表示画面744及び1つまたは複数のラウドスピーカ746を有する、例えば、モニタまたはテレビセット等のディスプレイ及び音声出力デバイス742にオーディオコネクタ750及びビデオコネクタ752を通して供給するように、または、Bluetooth(登録商標)無線リンクポート718を介してHMD705のディスプレイデバイスにオーディオ及びビデオを供給するように動作可能である。オーディオコネクタ750は、様々な実施形態において、従来のアナログ及びデジタル出力を含み、他方、ビデオコネクタ752は、コンポーネントビデオ、Sビデオ、コンポジットビデオ、及び1つまたは複数の高解像度マルチメディアインタフェース(HDMI(登録商標))出力を様々に含む。結果として、ビデオ出力は、位相反転線(PAL)または全国テレビジョン方式委員会(NTSC)などの形式、または、2220p、1080i、もしくは1080pの高解像度であってよい。オーディオ処理、例えば、生成、復号などは、セルプロセッサ708によって行われる。ゲームコンソール700のオペレーティングシステムは、Dolby(登録商標)5.1サラウンドサウンド、Dolby(登録商標)シアターサラウンド(DTS)、及びBlu-Ray(登録商標)ディスクの7.1サラウンドサウンドの復号を支援する。
【0210】
いくつかの実施形態では、ビデオカメラ、例えば、ビデオカメラ712等は、単一の電荷結合素子(CCD)、LEDインジケータ、及びハードウェアベースのリアルタイムデータ圧縮及び符号化装置を備え、これにより、圧縮されたビデオデータは、ゲームコンソール700により復号されるために、画像内ベースのMPEG(motion picture expert group)規格などの適切な形式で送信される。ビデオカメラ712のLEDインジケータは、例えば、不利な照明条件などを示すために、ゲームコンソール700からの適切な制御データに応答して点灯するように配置される。ビデオカメラ712のいくつかの実施形態は、USB、Bluetooth(登録商標)またはWi-Fi(登録商標)通信ポートを介してゲームコンソール700に様々に接続する。ビデオカメラの様々な実施形態は、1つまたは複数の関連付けられたマイクロフォンを含み、またオーディオデータを送信できる。ビデオカメラのいくつかの実施形態では、CCDは、高解像度ビデオキャプチャに適した解像度を有する。使用時、ビデオカメラによってキャプチャされた画像は、ゲーム内に組み込まれる、またはゲーム制御入力として解釈される。別の実施形態では、ビデオカメラは、赤外光を検出するのに適した赤外線カメラである。
【0211】
様々な実施形態では、ゲームコンソール700の通信ポートのうちの1つを介して、例えば、ビデオカメラまたはリモートコントロールなどの周辺デバイスとのデータ通信が正常に行われるように、デバイスドライバなどの適切なソフトウェアが提供される。
【0212】
いくつかの実施形態では、ゲームコンソール700、ハンドヘルドコントローラ、及びHMD705を含む前述のシステムデバイスは、HMD705がゲームのインタラクティブセッションのビデオを表示及びキャプチャすることを可能にする。システムデバイスは、ゲームのインタラクティブセッションを開始し、インタラクティブセッションは、ユーザAとゲームの間のインタラクションを規定する。システムデバイスは、さらに、ユーザAによって操作されるハンドヘルドコントローラ及び/またはHMD705の初期位置及び向きを決定する。ゲームコンソール700は、ユーザAとゲームとのインタラクションに基づいて、ゲームの現在の状態を決定する。システムデバイスは、ゲームとのユーザAのインタラクティブセッション中、ハンドヘルドコントローラ及び/またはHMD705の位置及び向きを追跡する。システムデバイスは、ゲームの現在の状態と、ハンドヘルドコントローラ及び/またはHMD705の追跡された位置及び向きとに基づいて、インタラクティブセッションの観客ビデオストリームを生成する。いくつかの実施形態では、ハンドヘルドコントローラは、ハンドヘルドコントローラの表示画面上に観客ビデオストリームをレンダリングする。様々な実施形態において、HMD705は、HMD705の表示画面上に観客ビデオストリームをレンダリングする。
【0213】
図8を参照すると、HMD802の構成要素を示す図が示されている。HMD802は、HMD705(
図7)の一例である。HMD802は、プログラム命令を実行するためのプロセッサ800を含む。メモリデバイス802は、記憶目的のために備えられる。メモリデバイス802の例には、揮発性メモリ、不揮発性メモリ、またはそれらの組み合わせが含まれる。ユーザA(
図1)が見る視覚的インタフェース、例えば、画像フレームの表示などを提供するディスプレイデバイス804が含まれる。HMD802の電源として、バッテリ806が備えられる。動き検出モジュール808は、磁力計810、加速度計88、及びジャイロスコープ814など、様々な種類の動き検知ハードウェアのいずれかを含む。
【0214】
加速度計は、加速度及び重力誘起反力を測定するデバイスである。単軸及び多軸モデルは、異なる方向における加速度の大きさ及び方向を検出するために利用可能である。加速度計は、傾き、振動、及び衝撃を感知するために使用される。一実施形態では、3つの加速度計812は、重力の方向を提供するために使用され、重力の方向は、2つの角度、例えば、世界空間ピッチ及び世界空間ロールなどについての絶対基準を与える。
【0215】
磁力計は、HMD802付近の磁場の強度及び方向を測定する。いくつかの実施形態では、3つの磁力計810は、HMD802内で使用され、世界空間ヨー角度についての絶対基準を保証する。様々な実施形態では、磁力計は、±80マイクロステラの地球の磁場にわたるように設計される。磁力計は金属の影響を受け、実際のヨーに対して単調なヨー測定を提供する。いくつかの実施形態において、磁場は実世界環境内の金属により歪み、これによりヨー測定に歪みが生じる。様々な実施形態において、この歪みは、他のセンサ、例えば、ジャイロスコープ814、カメラ816等からの情報を使用して較正される。一実施形態では、加速度計812は、HMD802の傾き及びアジマスを取得するために磁力計810と共に使用される。
【0216】
ジャイロスコープは、角運動量の原理に基づいて、向きを測定または維持するデバイスである。一実施形態では、ジャイロスコープ814に代わって、3つのジャイロスコープが、慣性感知に基づいて、x、y、及びzの各軸に対する動きに関する情報を提供する。ジャイロスコープは、高速回転の検出を助ける。しかしながら、ジャイロスコープは、いくつかの実施形態では、絶対基準が存在しないと、時間の経過と共にドリフトする。これは、定期的なジャイロスコープのリセットをトリガし、リセットは、物体の視覚追跡、加速度計、磁力計などに基づく位置/向きの決定など、他の入手可能な情報を使用して行うことができる。
【0217】
カメラ816は、ユーザAを取り巻く実世界環境、例えば、部屋、キャビン、自然環境などの画像及び画像ストリームをキャプチャするために提供される。様々な実施形態では、例えば、ユーザAがHMD802のディスプレイ等を見ているとき、ユーザAから離れる方に向いた、背面を向いたカメラ、及び、例えば、ユーザAがHMD802のディスプレイ等を見ているとき、ユーザAの方を向いた、前面を向いたカメラを含む、複数のカメラが、HMD802に含まれる。さらに、いくつかの実施形態では、実世界環境内の物体の深度情報を感知するために、深度カメラ818がHMD802に含まれる。
【0218】
HMD802は、オーディオ出力を提供するためのスピーカ820を含む。また、いくつかの実施形態では、周囲環境からの音声、ユーザAが行った発話などを含む、実世界環境からのオーディオをキャプチャするために、マイクロフォン822が含まれる。HMD802は、ユーザAに触覚フィードバックを提供するための触覚フィードバックモジュール824、例えば、振動デバイスなどを含む。一実施形態では、触覚フィードバックモジュール824は、ユーザAに触覚フィードバックを提供するためのHMD802の動き及び/または振動を発生させ得る。
【0219】
LED826は、HMD802のステータスの視覚インジケータとして備えられる。例えば、LEDは、バッテリレベル、電源オンなどを示してよい。HMD802がメモリカードからの情報を読み出し、メモリカードに情報を書き込むことを可能にするために、カードリーダ828が備えられる。周辺デバイスの接続、または他のデバイス、例えば、他のポータブルデバイス、コンピュータなどへの接続を可能にするためのインタフェースの一例としてUSBインタフェース830が備えられる。HMD802の様々な実施形態では、様々な種類のインタフェースのいずれかが、HMD802のより高い接続性を可能にするために含まれてよい。
【0220】
無線ネットワーク技術を介してインターネットへの接続を可能にするために、Wi-Fi(登録商標)モジュール832が含まれる。また、HMD802は、他のデバイスへの無線接続を可能にするために、Bluetooth(登録商標)モジュール834を含む。いくつかの実施形態では、他のデバイスへの接続のために通信リンク836も含まれる。一実施形態では、通信リンク836は、無線通信のために赤外線伝送を利用する。他の実施形態では、通信リンク836は、他のデバイスとの通信のために、様々な無線または有線の伝送プロトコルのいずれかを利用する。
【0221】
入力ボタン/センサ838は、ユーザA(
図1)に入力インタフェースを提供するために含まれる。ボタン、タッチパッド、ジョイスティック、トラックボールなど、様々な種類の入力インタフェースのいずれかが含まれる。様々な実施形態では、超音波技術を介して他のデバイスとの通信を容易にするために、超音波通信モジュール840がHMD802に含まれる。
【0222】
バイオセンサ842は、ユーザからの生理学的データの検出を可能にするために含まれる。一実施形態では、バイオセンサ842は、ユーザの皮膚を通してユーザの生体電気信号を検出するために、1つまたは複数の乾電極を含む。
【0223】
HMD802の前述の構成要素は、HMD802内に含まれ得る単なる例示的な構成要素として記載した。様々な実施形態では、HMD802は、上記の様々な構成要素の一部を含んでもよく、含まなくてもよい。
【0224】
図9は、情報サービスプロバイダ(INSP)アーキテクチャの実施形態を示す。INSP902は、地理的に分散し、コンピュータネットワーク102、例えば、LAN、WAN、またはそれらの組み合わせ等を介して接続されたユーザA、B、及びCとユーザDとに多くの情報サービスを提供する。WANの例は、インターネットを含み、LANの例は、イントラネットを含む。ユーザAは、クライアントデバイス920-1を操作し、ユーザBは、別のクライアントデバイス920-2を操作し、ユーザCは、さらに別のクライアントデバイス920-3を操作し、ユーザDは、別のクライアントデバイス920-4を操作する。クライアントデバイス920-1は、クライアントデバイス1(
図1)の例であり、クライアントデバイス920-2はクライアントデバイス2(
図1)の例であり、クライアントデバイス920-3はクライアントデバイス3(
図1)の例である。
【0225】
いくつかの実施形態では、各クライアントデバイス920-1、920-2、920-3、及び920-4は、中央処理装置(CPU)、ディスプレイ、及び入力/出力(I/O)インタフェースを含む。各クライアントデバイス920-1、920-2、920-3、及び920-4の例には、パーソナルコンピュータ(PC)、携帯電話、ネットブック、タブレット、ゲームシステム、パーソナルデジタルアシスタント(PDA)、ゲームコンソール700及びディスプレイデバイス、HMD802(
図11)、ゲームコンソール700及びHMD802、デスクトップコンピュータ、ラップトップコンピュータ、スマートテレビなどが含まれる。いくつかの実施形態では、INSP902は、クライアントデバイスのタイプを認識し、使用する通信方法を調整する。
【0226】
いくつかの実施形態では、INSPは、株価更新などの一種類のサービス、またはブロードキャスト媒体、ニュース、スポーツ、ゲームなどの様々なサービスを提供する。さらに、各INSPによって提供されるサービスは動的である、すなわち、任意の時点でサービスを追加することができる、または取り除くことができる。従って、特定の個人に特定の種類のサービスを提供するINSPは、時間の経過と共に変わり得る。例えば、クライアントデバイス920-1がユーザAの居住地にあるときは、クライアントデバイス920-1は、クライアントデバイス920-1の近くのINSPによってサービスを提供され、ユーザAが異なる都市に移動すると、クライアントデバイス920-1は、異なるINSPによってサービスを提供される。居住地のINSPは、要求された情報及びデータを新しいINSPに転送し、その結果、情報は、新しい都市までクライアントデバイス920-1「を追いかけて」、データをよりクライアントデバイス920-1に近くし、アクセスを容易にする。様々な実施形態では、クライアントデバイス920-1の情報を管理するマスタINSPと、マスタINSPからの制御下でクライアントデバイス920-1と直接的にインタフェースをとるサーバINSPとの間に、マスタサーバ関係が確立される。いくつかの実施形態では、クライアントデバイス920-1が世界中を移動すると、あるISPから別のISPにデータが転送され、これにより、クライアントデバイス920-1にサービスを提供するのにより良い位置に存在するINSPが、これらのサービスを届けるINSPとなる。
【0227】
INSP902は、コンピュータネットワーク102を経由して顧客にコンピュータベースのサービスを提供するアプリケーションサービスプロバイダ(ASP)909を含む。ASPモデルを使用して提供されるソフトウェアは、オンデマンドソフトウェアまたはサービスとしてのソフトウエア(SaaS)と呼ばれることもある。顧客関係管理などのコンピュータベースのサービスへのアクセスを提供する簡単な形式は、ハイパーテキスト転送プロトコル(HTTP)などの標準プロトコルを使用することによる。アプリケーションソフトウェアは、ベンダのサーバに常駐し、ベンダによって提供される特殊用途クライアントソフトウェア、及び/または他のリモートインタフェース、例えば、シンクライアント等によって、ハイパーテキストマークアップ言語(HTML)等を使用して、ウェブブラウザを通して各クライアントデバイス920-1、920-2、920-3、及び920-4によってアクセスされる。
【0228】
広い地理的地域にわたって供給されるサービスは、多くの場合、クラウドコンピューティングを使用する。クラウドコンピューティングとは、動的に拡張縮小可能で多くの場合、仮想化されたリソースがコンピュータネットワーク102を介したサービスとして提供されるコンピューティング様式である。ユーザA、B、C、及びDは、ユーザをサポートする「クラウド」の技術インフラストラクチャのエキスパートである必要はない。いくつかの実施形態では、クラウドコンピューティングは、サービスとしてのインフラストラクチャ(IaaS)、サービスとしてのプラットフォーム(PaaS)、及びサービスとしてのソフトウエア(SaaS)などの異なるサービスに分けられる。クラウドコンピューティングサービスは、多くの場合、ウェブブラウザからアクセスされる共通のビジネスアプリケーションをオンラインで提供するが、ソフトウェア及びデータはサーバ上に記憶される。クラウドという用語は、コンピュータネットワーク図におけるコンピュータネットワーク102の描かれ方に基づいて、例えば、サーバ、ストレージ、及びロジックを使用する、コンピュータネットワーク102のメタファーとして使用され、コンピュータネットワーク102が隠し持つ複雑なインフラストラクチャの抽象的概念である。
【0229】
さらに、INSP902は、本明細書ではゲーム処理サーバとも呼ばれるゲーム処理プロバイダ(GPP)910を含み、ゲーム処理プロバイダ(GPP)910は、シングル及びマルチプレイヤのビデオゲームをプレイするためにクライアントデバイス920-1、920-2、920-3、及び920-4によって使用される。コンピュータネットワーク102上でプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームは、クライアントデバイス920-1、920-2、920-3、及び920-4からデータを収集し、他のユーザが操作する他のクライアントにデータを配信する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホストする別個のサーバを使用する。いくつかの実施形態では、GPP910は、集中型GPP910にさらに依存することなく情報を交換するクライアントデバイス920-1、920-2、920-3、及び920-4の間の通信を確立する。
【0230】
専用GPPは、クライアントとは独立して実行するサーバである。このようなサーバは、通常、データセンタに配置された専用ハードウェア上で実行し、より多くの帯域幅及び専用処理能力を提供する。専用サーバは、大部分のPCベースのマルチプレイヤゲームのためのゲームサーバをホストする方法である。大規模なマルチプレイヤオンラインゲームは、ゲームタイトルを所有するソフトウェア会社が通常ホストする専用サーバ上で実行され、専用サーバがコンテンツを制御及び更新することを可能にする。
【0231】
ブロードキャスト処理サーバ(BPS)912は、本明細書ではブロードキャスト処理プロバイダとも呼ばれ、オーディオまたはビデオ信号を視聴者に配信する。非常に狭い範囲の視聴者へのブロードキャスティングは、ナローキャスティングと呼ばれることもある。ブロードキャスト配信の最後の区間は、信号がクライアントデバイス920-1、920-2、920-3、及び920-4にどのように到達するかであり、いくつかの実施形態では、信号は、ラジオ局もしくはテレビ局と同様に無線でアンテナ及び受信機に、またはケーブルテレビもしくはケーブルラジオもしくは局を介した「ワイヤレスケーブル」を通して配信される。コンピュータネットワーク102はまた、様々な実施形態において、信号及び帯域幅を共有するのを可能にするマルチキャスティングを用いて特に、無線信号またはテレビ信号のいずれかをクライアントデバイス920-1、920-2、920-3、及び920-4にもたらす。歴史的に、ブロードキャストは、いくつかの実施形態では、地理的領域、例えば、全国放送、地域放送などによって区切られている。しかし、高速インターネットの普及により、コンテンツは世界のほぼ全ての国に到達できるので、ブロードキャストは地理によって規定されない。
【0232】
ストレージサービスプロバイダ(SSP)914は、コンピュータストレージ空間及び関連する管理サービスを提供する。SSP914は、定期的なバックアップ及びアーカイブも提供する。ストレージをサービスとして提供することにより、クライアントデバイス920-1、920-2、920-3、及び920-4は、サービスとしてストレージが使用されない場合と比較して、より多くのストレージを使用する。別の大きな利点は、SSP914がバックアップサービスを含み、クライアントデバイス920-1、920-2、920-3、及び920-4は、ハードドライブに障害が発生してもデータが失われないことである。さらに、いくつかの実施形態では、複数のSSPは、クライアントデバイス920-1、920-2、920-3、及び920-4から受信したデータの全体的または部分的なコピーを有し、クライアントデバイス920-1、920-2、920-3、及び920-4は、クライアントデバイス920-1、920-2、920-3、及び920-4が配置されている場所やクライアントのタイプに関係なく、効率的な方法でデータにアクセスするのを可能にする。例えば、ユーザAは、家のコンピュータによって個人ファイルにアクセスし、ユーザAが移動している間は携帯電話によって個人ファイルにアクセスする。
【0233】
通信プロバイダ916は、クライアントデバイス920-1、920-2、920-3、及び920-4への接続性を提供する。通信プロバイダ916の一種は、コンピュータネットワーク102へのアクセスを提供するインターネットサービスプロバイダ(ISP)である。ISPは、ダイヤルアップ、デジタル加入者線(DSL)、ケーブルモデム、ファイバ、無線、または専用の高速インターコネクトなどのインターネットプロトコルデータグラムの供給に適したデータ伝送技術を使用してクライアントデバイス920-1、920-2、920-3、及び920-4を接続する。通信プロバイダ916は、いくつかの実施形態では、電子メール、インスタントメッセージング、及びショートメッセージサービス(SMS)テキストなどのメッセージングサービスも提供する。通信プロバイダの別の種類は、コンピュータネットワーク102への直接のバックボーンアクセスを提供することによって帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダの例には、電気通信事業者、データ通信事業者、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などが含まれる。
【0234】
データ交換918は、INSP902内のいくつかのモジュールを相互接続し、コンピュータネットワーク102を介してこれらのモジュールをクライアントデバイス920-1、920-2、920-3、及び920-4に接続する。データ交換918は、様々な実施形態において、INSP902の全てのモジュールが近接している小さい領域をカバーする、または様々なモジュールが地理的に分散しているときには大きな地理的領域をカバーする。例えば、データ交換902は、データセンタのキャビネット内の高速のギガビットイーサネット(登録商標)、または大陸間仮想LANを含む。
【0235】
一実施形態では、本明細書で説明する1つまたは複数のノードは、ユーザ入力2(
図3A)などの予測されるユーザ入力が受信されるという誤予測の量を決定し、第1の閾値を使用して、画像フレームやオーディオフレームなどのフレームの完全なレンダリングまたは生成をトリガする。誤予測の量は、予測レベルの例であり、第1の閾値よりも大きくなる。第1の閾値は、現在の画像フレームまたは現在のオーディオフレームは、予測されたユーザ入力に基づいて誤って予測または生成されたもので、別の画像フレームまたはオーディオフレームが完全に生成またはレンダリングされるべきと判断されるときである。
【0236】
ある実施形態では、第1の閾値より下の第2の閾値があり、第2の閾値は、次にフレームのレンダリングまたは生成をトリガするために使用される。例えば、本明細書で説明されるノードの1つまたは複数は、それらが誤予測の先端にあることを検出し、次の予測されたユーザ入力に基づいて、画像フレームまたはオーディオフレームなどの次のフレームを先制的に生成またはレンダリングしない。次に予測されるユーザ入力は、予測されるユーザ入力と連続している。現在の画像フレームまたは現在のオーディオフレームの生成またはレンダリングは、予測されたユーザ入力の所定のレベルの予測に基づく。例えば、予測のレベルが第1の閾値を下回り、1つまたは複数のノードが、次のフレームの生成またはレンダリングは、次に予測されるユーザ入力の所定の予測レベルに基づかないことを予測する。第1の閾値及び第2の閾値のそれぞれは、所定の予測レベルの例である。
【0237】
また、一実施形態では、本明細書に記載の1つまたは複数のノードが、予測されたユーザ入力の受信の予測が、所定の予測レベルを満たさない、例えば、超えないと判断した場合、1つまたは複数のノードは一時的に中断するか、または予測されたユーザ入力に基づいて画像フレームを生成またはレンダリングする動作を行わない。動作が中断されている間、1つまたは複数のノードは、ユーザ入力1’(
図3A)などの実際のユーザ入力に基づいて画像フレーム及びオーディオフレームの生成またはレンダリングを行う。動作が中断されている間、1つまたは複数のノードは、予測を学習して所定のレベルの予測を達成する。例として、一定期間、ゲームセッションの期間中、またはゲーム内で既知のイベントが発生するまで、または予測エンジンが所定のレベルより高いレベルの予測をするまで、動作が中断される、及び/または学習が生じる。予測エンジンは、ノードの1つまたは複数によって実行されるコンピュータプログラムである。既知のイベントの例は、ゲームシーンの終了であり、これは、所定の予測レベルで予測するのが難しいシーンである。困難なシーンの実例は、仮想オブジェクトまたは仮想キャラクタの所定の量よりも大きい動きもしくは操作、またはそれらの組み合わせを伴うシーンである。一定期間後、またはゲームセッション終了後、または、既知のイベントが生じた後、または、予測エンジンが、所定のレベルより大きいレベルまで予測した後、本明細書に記載のノードの1つまたは複数は、ユーザ入力の予測と、予測されたユーザ入力に基づいて、画像フレーム及びオーディオフレームの生成に戻る。
【0238】
様々な実施形態において、本明細書に記載されるいくつかの実施形態の1つまたは複数の特徴は、本明細書に記載される残りの実施形態の1つまたは複数の1つまたは複数の特徴と組み合わされることに留意されたい。
【0239】
本開示に記載の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能な消費者向け電気製品、小型コンピュータ、メインフレームコンピュータなどを含む様々なコンピュータシステム構成で実施されてよい。一実施態様では、本開示に記載の実施形態は、有線または無線ネットワークを通してリンクされたリモート処理デバイスによってタスクが行われる分散コンピューティング環境で実践される。
【0240】
前述の実施形態を念頭に置いて、一実施態様では、本開示に記載の実施形態は、コンピュータシステムに記憶されたデータを伴う様々なコンピュータ実施動作を採用することを理解されたい。これらの動作は、物理量の物理的操作を要する動作である。本開示に記載の実施形態の一部を形成する本明細書で説明される動作のうちのいずれも、有用な機械動作である。本開示に記載のいくつかの実施形態はまた、これらの動作を行うためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築される、または装置は、コンピュータに記憶されたコンピュータプログラムにより選択的に起動または構成される汎用コンピュータである。具体的には、一実施形態において、様々な汎用マシンは、本明細書の教示に従って書かれたコンピュータプログラムと共に使用される、または、必要な動作を行うためにさらに特化した装置を構築するほうがより好都合な場合がある。
【0241】
ある実施態様では、本開示に記載のいくつかの実施形態は、コンピュータ可読媒体上のコンピュータ可読コードとして具体化される。コンピュータ可読媒体は、後にコンピュータシステムにより読み出されるデータを記憶する任意のデータストレージデバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続型ストレージ(NAS)、ROM、RAM、コンパクトディスクROM(CD-ROM)、記録可能CD(CD-R)、書き換え可能CD(CD-RW)、磁気テープ、光学データストレージデバイス、非光学データストレージデバイスなどが含まれる。例として、コンピュータ可読媒体は、コンピュータ可読コードが分散方式で記憶及び実行されるように、ネットワークで結合されたコンピュータシステム上に分散されたコンピュータ可読有形媒体を含む。
【0242】
さらに、上記の実施形態のいくつかは、ゲーム環境に関して記載されているが、いくつかの実施形態では、ゲームの代わりに、他の環境、例えば、ビデオ会議環境などが使用される。
【0243】
方法の動作を特定の順序で記載したが、オーバーレイ動作の処理が所望の方法で実行される限り、動作間に他のハウスキーピング動作が実行されてよく、または動作がわずかに異なる時間に起こるように調整されてよく、またはシステム内に動作を分散することで、処理に関連する様々な間隔で処理動作が起こることを可能にしてよいことを、理解すべきである。
【0244】
本開示に記載の前述の実施形態は、理解を明確にするためにある程度詳細に説明したが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。従って、本実施形態は、限定ではなく例示としてみなされるべきであり、本実施形態は、本明細書に記載される詳細に限定されるべきではなく、添付の請求項の範囲及び均等物の中で変更されてよい。