(57)【要約】【課題】同一のまたは異なるゲームコンソールにゲームステートデータを適用し、ゲームが中断されたポイントでゲームを再開することを可能とする。【解決手段】クラウドゲーミングシステムにおいてゲームを中断するためのシステム及び方法である。クラウドゲーミングシステムに含まれる第１のゲームコンソール上でゲームをプレイし、ゲームにおける選択されたポイントでゲームを中断し、中断したゲームに関するゲームステートデータをキャプチャする。中断したゲームは、ゲームステートデータを取り出し、このゲームステートデータを選択したゲームコンソールに適用し、選択したゲームコンソール上でゲーム内の選択したポイントにおいてゲームを再開することによって再開することができる。【選択図】図１
2020163226.tif 000002
【特許請求の範囲】
【請求項１】
クラウドコントローラを有し、
前記クラウドコントローラに結合されたストレージデバイスを有し、
ネットワークによって前記クラウドコントローラに結合された複数のゲームコンソールを有し、前記複数のゲームコンソールのそれぞれは、
ハードウェアレイヤ、
前記ハードウェアレイヤとインタラクションを行うように構成され、ステートマネージャクライアントを含むオペレーティングシステムレイヤ、
前記オペレーティングシステムレイヤの少なくとも一部及び前記ハードウェアレイヤの一部とインタラクションを行うように構成され、ゲーミングアプリケーションを含むアプリケーションレイヤ、を備えるものであり、
前記ステートマネージャクライアントは、前記ゲーミングアプリケーションが選択された中断ポイントで中断されたとき、前記ゲームコンソールのゲームステートデータをキャプチャし、前記キャプチャしたゲームステートデータを保管するように構成され、
前記選択された中断ポイントは、事前定義された停止ポイントではなく、
前記ゲームステートデータは、前記選択された中断ポイントで再開することが可能な前記ゲームに関する実行可能な状況を再形成するための一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含む、
クラウドゲーミングシステム。
【請求項２】
前記ステートマネージャクライアントはさらに、前記保管されキャプチャされたゲームステートデータを前記ゲームコンソールに適用し、前記ゲーミングアプリケーションを前記ゲームアプリケーションが中断されたポイントで再開するように構成され、
前記ゲームの再開には、前記ゲームコンソールにゲームステートデータを適用し、実行可能なゲーミングアプリケーションを生成することが含まれる、
請求項１に記載のクラウドゲーミングシステム。
【請求項３】
前記クラウドコントローラは、
複数の記憶されたゲーミングアプリケーションと、
複数のユーザの各々１人に関するアカウントデータを含むユーザアカウントデータベスと、を含む、
請求項１に記載のクラウドゲーミングシステム。
【請求項４】
前記アカウントデータは、複数のユーザのうちの選択されたユーザに関する中断したゲーミングアプリケーション及び前記中断したゲーミングアプリケーションに関する前記ゲームデータの保管場所のリストを含む、
請求項３に記載のクラウドゲーミングシステム。
【請求項５】
前記クラウドコントローラは、前記選択されたユーザに関する認証アクセスを判定するように構成された認証マネージャを含む、
請求項４に記載のクラウドゲーミングシステム。
【請求項６】
前記複数のゲームコンソールの各々１つの前記ハードウェアレイヤは、
プロセッサと、
データバスによって前記プロセッサに結合されたグラフィックプロセッサと、
を含む、
請求項１に記載のクラウドゲーミングシステム。
【請求項７】
前記複数のゲームコンソールの各々１つの前記ハードウェアレイヤは、前記データバスに結合されたコプロセッサをさらに含み、
前記複数のゲームコンソールの各々１つの前記コプロセッサは、ゲームステートデータをキャプチャするように構成される、
請求項６に記載のクラウドゲーミングシステム。
【請求項８】
前記クラウドコントローラ及び前記複数のゲームコンソールの第１の部分は、第１のデータセンタに配置される、
請求項１に記載のクラウドゲーミングシステム。
【請求項９】
前記クラウドコントローラに結合された前記ストレージデバイスは、ストレージサーバ内に含まれ、
前記クラウドコントローラは、前記第１のデータセンター内に配置され、
前記ストレージサーバは、第３のデータセンター内に配置される、
請求項１に記載のクラウドゲーミングシステム。
【請求項１０】
前記ゲームステートデータは、ハードウェアステートデータまたはアプリケーションステートデータの少なくとも一方を含む、
請求項１に記載のクラウドゲーミングシステム。
【請求項１１】
クラウドゲーミングシステムにおいてゲームを中断するための方法であって、
第１のクライアントからゲーミングリクエストを受信し、前記ゲーミングリクエストは、クラウドゲーミングシステム内のクラウドコントローラで受信される前記ゲーミングリクエストを受信し、
前記クラウドゲーミングシステム内の第１のゲームコンソールに前記第１のクライアントデバイスを割り当て、
前記第１のクライアントデバイスからゲーム実行リクエストを受信し、
前記第１のゲームコンソール上で前記ゲームを実行し、
前記第１のクライアントデバイスから、前記ゲームを選択された中断ポイントで中断するためのリクエストを受信し、前記選択された中断ポイントは、事前定義された停止ポイントではないものであり、
前記ゲーム内の前記選択された中断ポイントで前記第１のゲームコンソール上の前記ゲームを中断し、
前記第１のゲームコンソール上の前記中断されたゲームに関するゲームステートデータをキャプチャし、
前記ゲームステートデータは、前記選択された中断ポイントで再開することが可能な前記ゲームに関する実行可能な状況を再形成するための一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含み、
前記選択された中断ポイントでの前記ゲームの再開では、前記第１のゲームコンソールまたは他のゲームコンソールのいずれか一方において行うことが可能である、
方法。
【請求項１２】
前記第１のゲームコンソールは、前記ゲームステートデータをキャプチャし、前記第１のゲームコンソールが前記ゲームの実行を終わらせることを可能にし、その結果、前記第１のゲームコンソールは、別のユーザに割り当てるために利用可能である、
請求項１１に記載の方法。
【請求項１３】
前記クラウドコントローラは、前記第１のゲームコンソールから前記ゲームステートデータをキャプチャする、
請求項１１に記載の方法。
【請求項１４】
更に、前記ゲームステートデータを取り出し、前記ゲームステートデータを前記クラウドゲーミングシステム内に含まれる選択したゲームコンソールに適用し、
前記ゲームにおける前記選択されたポイントで前記ゲームを再開する、
請求項１１に記載の方法。
【請求項１５】
前記ゲームステートデータの前記選択したゲームコンソールへの割り当てに、前記ゲームステートデータのそれぞれの部分を前記選択されたゲームコンソール内のそれぞれの場所に読み込むことが含まれる、
請求項１４に記載の方法。
【請求項１６】
前記選択されたゲームコンソールは、第２のゲームコンソールである、
請求項１４に記載の方法。
【請求項１７】
前記ゲームステートデータのキャプチャでは、アプリケーションステートデータまたはハードウェアステートデータの少なくとも一方をキャプチャされる、
請求項１１に記載の方法。
【請求項１８】
前記ゲームステートデータのキャプチャでは、
前記ゲームステートデータを保管し、
前記保管されたゲームステートデータの保管場所によって対応するユーザアカウント情報を更新する、
請求項１１に記載の方法。
【請求項１９】
第１のユーザから認証リクエストを受信し、前記認証リクエストは、前記クラウドコントローラにおいて受信され、
前記第１のユーザに関する認証アクセスを判定し、
前記第１のユーザのアカウントデータが前記中断したゲーム及び前記ゲームステートデータの場所を含む場合、前記第１のクライアントデバイスの前記第１のゲームコンソールへの割り当てでは、前記第１のユーザを前記第１のゲームコンソールに割り当て、前記第１のゲームコンソールに中断したゲームステートデータをロードする、
請求項１１に記載の方法。
【請求項２０】
前記第１のユーザから認証リクエストを受信し、前記認証リクエストが前記クラウドコントローラにおいて受信され、
前記第１のユーザに関する認証アクセスを判定し、前記第１のクライアントデバイスの前記第１のゲームコンソールへの割り当てでは、前記第１ユーザを前記第１のゲームコンソールに割り当て、
前記第１のユーザアカウントデータが前記中断したゲーム及び前記ゲームステートデータの場所を含む場合、ゲームステートデータを取り出し、
前記クラウドコントローラにおいてゲームステート共有リクエストを受信し、前記ゲームステートデータ共有リクエストは、前記第１のユーザから受信され、かつ前記第１のユーザゲームステートデータを第２のユーザと共有するためのリクエストであり、
前記ゲームステートデータを、前記第２のユーザに割り当てられた第２のゲームコンソールと共有する、
請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１４年１２月３１日に提出され、「Game State Save,Transfer and Resume for Cloud Gaming」というタイトルが付けられた米国仮特許出願第６２／０９９，０２７号の優先権を主張するものであり、あらゆる目的においてその全体が参照により本明細書に組み込まれる。
【０００２】
本発明は、概して、クラウドゲーミング環境に関し、より詳細にはゲームにおけるいずれのポイントあるいはいずれの時点においても進行中のゲームステートをセーブし、その後にゲームの同じポイントでゲームを再開するためのシステム及び方法に関する。
【背景技術】
【０００３】
クラウドゲーミングは、インターネットを介することでユーザにとってアクセス可能にネットワーク接続されたサーバのシステムによって推進される。これらのサーバは、複数のユーザのゲーミングセッションをホストする。典型的には、ユーザは、ユーザのゲームプレイをホストするための仮想サーバまたは物理的サーバに割り当てられる。多くのゲームは複雑であり、不確定な時間にわたって継続する可能性がある。ユーザは、多くの様々な理由のためにユーザが休憩を取ることができるように自分のゲームを中断することがよくある。
【０００４】
ゲームは、典型的には、そのゲームにプログラムされた、定期的に事前定義された停止ポイントを含む。例えば事前定義された停止ポイントは、ゲームにおけるアクションの各シーンまたはレベルの終わりであることが多い。このような事前定義された停止ポイントにおいて、ゲームは、到達したレベル、取得した功績などのゲームプレイからのデータをセーブし、他のハウスキーピング機能を行う。停止ポイントの後、あるいはその後の時点のいずれかで、ユーザがゲームをさらにプレイしたいと思う場合、例えば次のレベルまたはステージにおいてゲームシステムはゲームを再開または再起動することになる。ユーザがゲームを中断したいとき、ゲームを中断することはできるが、ゲーム機は静止したままその後のユーザの入力を待つ必要がある。これは当然のことながら、ユーザが短い休憩を取りたい場合である。しかしながらユーザがしばらくの間中断しプレイを停止したい場合、何時間もまたは何日もの間ゲーム機のディスクをスピンし続けてユーザが再開するのを待つのは非効率的であり実用的でもない。
【０００５】
事前定義された中断ポイントの間にあるゲームのコンテンツには、ユーザ固有のプレイのインスタンスに対して特有である独自の複雑でインタラクティブなグラフィック及びアクションが含まれる。独自の複雑でインタラクティブなグラフィック及びアクションは、多数の様々な独自のゲームステートデータにおいて具現化される。ゲームにおける独自の複雑でインタラクティブなグラフィック及びアクションポイントの１つにおけるゲームプレイをセーブすることは、これに対応して複雑であり、様々なハードウェア及びソフトウェアバージョンに互換性がないにより阻まれることも多い。
【０００６】
上記に指摘したように、ユーザのゲームプレイをホストするクラウドゲーミングサーバの中断作業を行うことができるが、それは不必要にクラウドゲーミングサーバの時間及びエネルギーを消費し、また中断したユーザのゲームプレイが中断されている間、任意の他のユーザがクラウドゲーミングサーバを使用することもできなくなる。さらにユーザが自分のゲームプレイを二度と再開しない場合、サーバは二度と復帰しないユーザに専用のものとなってしまう。その結果、現在の技術は、ゲームプレイの中断を事前定義された停止ポイントに限定している。
【０００７】
加えて、ユーザが、停止ポイント（すなわち戦闘の終わり、そのレベルの終わり、そのシーンの終わりなど）より前のゲームにおける特定のポイントでゲームプレイを停止する場合、ゲームプレイは最後のセーブした停止ポイント（すなわち開始したレベルより前の状態）にリセットされる場合がある。このようなリセットは、最も最近通過した事前定義された停止ポイントの間のユーザのゲームプレイを消去することになる。
【０００８】
本発明の実施形態は、このような背景のもとになされたものである。
【発明の概要】
【課題を解決するための手段】
【０００９】
概して、本発明は、進行中のゲームをゲームにおけるいかなるポイントでもゲームを中断し、かつその後のいずれかの時にゲームの同じポイントでゲームを再開するためのシステム及び方法を提供することによって、このような必要性を満たす。これらの実施形態によって、中断のそのポイントにおけるゲームステートをセーブすることが可能になる。中断されたゲームステートは、ユーザが再開することを選んだときにゲームステートを再構築するのに十分なデータと共にセーブされる。ゲームが中断される間、ゲームステートが収集されストレージにセーブされるので、クラウドゲーミングシステムやサーバは、もはやこの状況をアクティブメモリまたはハードウェアのレジスタに記憶しない。これによりこのシステムを他のゲームプレイまたは処理作業のために開放することが可能になる。さらにゲームプレイの再開はいつでも行うことができ、また任意の離れたクライアントからも行うことができる。再開が望まれるとき、ユーザは単に中断されたゲームを選択するだけでよく、システムがそのゲームステートをロードする。ゲームステートのロード作業には、複数のファイル及びデータ構造からゲームステートを生成する作業が含まれるため、再構築されたゲームステートは、ゲームが中断されたときと全く同じ状況またはほぼ同じ状況に機械を戻すことになる。
【００１０】
一実施形態において、ゲームが中断される際、セーブされたゲームステートはまた、中断が始動されたそのときより前の一定の時間もセーブする。このように追加の時間量をセーブすることによって、中断より前のゲームで起きたことをユーザが取り戻すまたは再導入することが可能になる。以下に記載するように、ゲームステートのセーブ作業は、一般にゲームデザイナーによって事前に指定されてはいない時に生じるので、ハードウェアレジスタ、バッファ、メモリなど、ならびにソフトウェアバッファ、レジスタ及びファイルからステートデータを収集するための処理作業を完了させる必要がある。このようなステートデータの収集によって、別のクラウドゲーミングシステムがゲームプレイを再開することが可能になり、この場合ステートデータが適切なハードウェア及びソフトウェアロケーションにロードされた後、それを終わらせるため、アクティブなインタラクティブゲームプレイを再開することができる。本発明は、プロセス、装置、システム、コンピュータ可読媒体またはデバイスなど含めた多くの方法で実施することができることを理解されたい。本発明のいくつかの進歩的な実施形態が以下に記載される。
【００１１】
一実施形態は、ゲームを中断し、ゲームを再開する機能を含むクラウドゲーミングシステムを開示する。クラウドゲーミングシステムは、クラウドコントローラ、クラウドコントローラに結合されたストレージデバイス、及びネットワークによってクラウドコントローラに結合された複数のゲームコンソールを含む。ゲームコンソールの各々は、ハードウェアレイヤ、オペレーティングシステムレイヤ及びアプリケーションレイヤを含むことができる。オペレーティングシステムレイヤは、ハードウェアレイヤとやり取り、あるいはインタラクションするように構成され、ステートマネージャクライアントを含む。アプリケーションレイヤは、オペレーティングシステムレイヤの少なくとも一部及びハードウェアレイヤの一部とインタラクションするように構成される。アプリケーションレイヤは、特定のゲームを含み、ステートマネージャクライアントは、ゲームが中断されたときゲームコンソールのゲームステートデータをキャプチャし、キャプチャしたゲームステートデータを保管するように構成される。ステートマネージャクライアントはまた、同一のまたは異なるゲームコンソールにゲームステートデータを適用し、ゲームが中断されたポイントでゲームを再開することもできる。
【００１２】
別の実施形態では、クラウドゲーミングシステムにおいてゲームを中断する方法を提供する。本方法は、クラウドゲーミングシステムに含まれる第１のゲームコンソール上でゲームをプレイし、ゲーム内の選択されたポイントでゲームを中断する。中断されたゲームに関してゲームステートデータがキャプチャされる。ゲームステートデータを取り出し、選択したゲームコンソールにゲームステートデータを適用し、選択されたゲームコンソール上で、ゲームにおける選択されたポイントでゲームを再開することによって中断されたゲームを再開することができる。ゲームステートデータはまた、異なるユーザ間で共有され、第１のユーザが自分のゲームステートを１つまたは複数の他のユーザと共有することを可能にすることもできる。
【００１３】
本発明の他の態様及び利点は、本発明の原理を一例として図示する添付の図面と併せて、以下の詳細な記載から明らかになるであろう。
【００１４】
本発明は、添付の図面と併せて、以下の詳細な記載によって容易に理解されるであろう。
【図面の簡単な説明】
【００１５】
【図１】本開示の実施形態を実施するための簡素化されたクラウドゲーミングシステムの図である。
【図２Ａ】本開示の実施形態を実施するための、クラウドゲーミングステートセーブ、再開及び転送機構において行われる方法工程の簡素化された概要を示すフローチャートである。
【図２Ｂ】本開示の実施形態を実施するための、ユーザのクラウドゲーミングシステムダッシュボードの簡素化されたグラフィカルユーザインターフェースを示す図である。
【図２Ｃ】本開示の実施形態を実施するための、再開ポイントを共有及びセーブするための機能がユーザに与えられた一例を示す図である。
【図３】本開示の実施形態を実施するための、クラウドゲーミングステートセーブ、再開及び転送において行われる方法工程を示すフローチャートである。
【図４】本発明の種々の実施形態によるゲームシステムのブロック図である。
【発明を実施するための形態】
【００１６】
ゲームにおけるいかなるポイントでも進行中のゲームステートをセーブし、その後のいずれかの時にゲームの同じポイントでゲームを再開するためのシステム及び方法に関するいくつかの例示の実施形態を次に記載する。本発明は、本明細書に記載される特有の詳細の一部または全てがなくても実施され得ることは当業者に明らかであろう。
【００１７】
クラウドゲーミングは、極めて人気のあるゲーミング環境である。クラウドゲーミングによって単独プレイヤー及び複数プレイヤーのゲームプレイが可能になり、またユーザが、リッチインタラクティブコンテンツを含むゲームならびに実体験のように感じる三次元（３Ｄ）グラフィックなどの複雑でコンテンツリッチなゲームをプレイすることも可能になる。そのようなコンテンツリッチなゲームは、専用プロセッサ、コプロセッサ及びグラフィックプロセッサを有し、複雑で高性能であり、多くの場合極めて特化されたコンピュータを必要とする。クラウドゲーミングはまた、性能の低下を回避するために待ち時間を短縮し、待ち時間を監視するように十分に設計されたサーバプロセスも必要とする。付け足される利点として、クラウドゲーミングによって、ユーザがさらにずっと簡素なクライアントコンピュータにおいてコンテンツリッチなゲームをプレイすることが可能になる。一例として、ユーザは、ローカルネットワーク及び／またはインターネットを介してクラウドゲーミングシステムと通信することが可能なタブレット、スマートフォンまたは他の手持ち式コンピューティングデバイスを利用してクラウドゲーミングシステム上でゲームをプレイすることができる。
【００１８】
クラウドゲーミング環境において、未来の何らかの不明確な時点でゲームに戻るために、特定のゲームセッションをユーザのためにオープンな状態に単に維持し続けることは、実用的なオプションではない。特定のゲームセッションをユーザに対してオープンな状態に無期限に維持することは、クラウドゲーミングプロバイダにとってコストがかさむことになる。このようなコストには、クラウドゲームコンソールによる電力の使用を含み、別のユーザが同じゲームコンソールを利用することを妨げることになる。一実施形態においてクラウドゲーミングシステムは、ゲームセッション毎にユーザに専用のゲームコンソール（例えばクラウドゲーミングサーバによって管理される）を割り当てることができる。これにより、以前のユーザがゲームコンソールを使用するように割り当てられなければ、同一のゲームコンソールを第２のユーザに割り当てることもできる。ある期間にわたって複数のユーザが１つのゲームコンソールを共有するが、彼らは時間内の同一ポイントにおいて同一のゲームコンソールを使用することはない。
【００１９】
開示されるクラウドゲーミングステートセーブ、再開及び転送技術により、ユーザが選択するゲームプレイにおいていつでも自分のゲームプレイセッションを中断することがユーザにとって可能になる。そのシーンの後で、ユーザのゲームステートが記憶され、その後ユーザのクラウドゲームコンソールが別のユーザに対して解放される。クラウドゲーミングステートセーブ、再開及び転送技術は、ユーザの割り当てられたゲームコンソールの使用をゲーミングサーバが別のユーザに転送することができるので、エネルギーを節約する。
【００２０】
ユーザが自分のゲームを再開する準備が整ったとき、ユーザのセーブされたゲームステートが取り出され、同一のまたは異なるクラウドゲームコンソールにロードされる。ユーザはその後、自分のゲームプレイを自分が中断したのと同じポイントで再開することができる。ユーザは、同一または異なるクライアントデバイスを利用して自分のゲームステートを再開することができる。ユーザは、同一または異なるクラウドゲーミングデータセンターを利用して自分のゲームステートを再開することができる。ユーザは、世界の地理的に様々な地域から自分のゲームステートを再開することができる。
【００２１】
開示されるクラウドゲーミングステートセーブ、再開及び転送技術は、他の用途も同様に有する。例えば、ユーザのゲーミングセッションが他のユーザの間で共有されることで、他のユーザが同一のゲーミングセッションを体験することが可能になる、または場合によって他のユーザ（別の離れた場所におり、クラウドゲーミングサービスに接続される人）を助けることも可能になる。一例として、第１のユーザがゲームプレイを中断し、ゲームステートデータを第２のユーザに渡し、（例えば共有する）、第２のユーザが第１のユーザにとって難しい戦闘を完了し、その後ゲームを再び中断し、新たなゲームステートデータを第１のユーザに渡して戻す。１つの実施形態では、ユーザは、コントローラ上の共有ボタンまたはオプションを選択する、あるいは他のユーザが接続してセーブしたゲームステートを共有することができる。開示されるクラウドゲーミングステートセーブ、再開及び転送技術は、多くの他の用途も同様に有する。ユーザがゲームステートを共有する場合、共有物を受け取ったユーザが、クラウドゲーミングシステムによって別のゲームコンソール（すなわち共有するユーザのゲームコンソールとは異なる）に割り当てられる場合ある。各々の共有の前に、その状況がセーブされ、その状況が開始される際、ユーザがその時々でどのゲームコンソールに割り当てられるかに応じて、それが同一のゲームコンソール上で再開される場合、または別のゲームコンソール上で再開される場合がある。
【００２２】
図１は、本開示の実施形態を実施するための簡素化されたクラウドゲーミングシステム１００である。クラウドゲーミングシステム１００は、クラウドコントローラ１３０と、複数のゲームコンソール１１２Ａ−ｎと、１つまたは複数のゲームコンソールマネージャ１１３とストレージサーバ１１０とを含む。クラウドコントローラ１３０、複数のゲームコンソール１１２Ａ−ｎ、１つまたは複数のゲームコンソールマネージャ１１３及びストレージサーバ１１０は、１つまたは複数のデータセンター１１１、１１５、１１７に配置することができる。クラウドコントローラ１３０、複数のゲームコンソール１１２Ａ−ｎ及びストレージサーバ１１０は、ローカルエリアネットワーク１０４Ａ、１０４Ｂ、１０４Ｃ及び／またはインターネット１０２によって一緒に結合されている。複数のゲームコンソール１１２Ａ−ｎ及びゲームコンソールマネージャ１１３は、１つのデータセンター１１５内に共同に配置される、または２つ以上のデータセンターの間で分散される場合もある。
【００２３】
１つまたは複数のゲームコンソールマネージャ１１３が、ゲームコンソール１１２Ａ−ｎの各々のラック内に含まれてよい。ゲームコンソールマネージャ１１３は、１つまたは複数のハードウェア及び／またはソフトウェアアーキテクチャに応じて１つまたは複数のゲームコンソール１１２Ａ−ｎを管理する。ゲームコンソールマネージャ１１３は、ネットワーク接続１１５及び／または任意選択の汎用入出力、ユニバーサルシリアルバスまたはゲームコンソールに対する電力を活性化するための等価な制御接続を利用してゲームコンソール１１２Ａ−ｎに物理的に接続される。ゲームコンソールマネージャ１１３は任意選択で、割り当てられたゲームコンソールとユーザのクライアントデバイスの間にストリーミングセッションを設定し、これを管理するといった追加の役割を含むことができる。
【００２４】
ローカルストレージサーバ１１６が任意選択で１つまたは複数のゲームコンソール１１２Ａ−ｎと共に同一のデータセンター１１５内に共同に配置される場合もある。ローカルストレージサーバ１１６は、複数のゲームコンソール１１２Ａ−ｎ及び／またはクラウドコントローラ１３０によって利用される、またはそこから受信したデータ１１６Ａを保管することができる。データセンター１１１、１１５、１１７は、地理的に隔てられる場合がある。一例として第１のデータセンター１１１と第３のデータセンター１１７をカリフォルニア州、ロスアンジェルスに配置することができ、第２のデータセンター１１５を、スウェーデン、ストックホルムに配置することもできる。
【００２５】
クラウドコントローラ１３０及び／またはゲームコンソールマネージャ１１３は、複数のゲーム及び複数のゲームコンソール１１２Ａ−ｎの１つまたは複数に対してダウンロードされ得る他のアプリケーションを保管するためにゲームデータベース１３２を含む。クラウドコントローラ１３０はまた認証マネージャ１３５も含む。認証マネージャ１３５は、第１のユーザが正当なアカウント、及びクラウドゲーミングシステム１００に対して認証されたアクセス権を有するかを判定する。第１のユーザのアカウント情報はユーザアカウントデータベース１３３に含まれる。１つまたは複数の実施形態では、クラウドコントローラ１３０はまたステートマネージャ１３４を含むこともできる。ステートマネージャ１３４はまた、ゲームコンソール１１２Ａ−ｎの各々に含まれるステートマネージャクライアント１４４と共に機能して、開始される際、各々のゲームコンソールに関するゲームステートデータをキャプチャする。
【００２６】
ストレージサーバ１１０は、クラウドゲーミングシステム１００に関するストレージ施設を提供する。ストレージサーバ１１０は、クラウドゲーミングシステム１００によって必要とされ得るように、ユーザのステートデータ１１４’などのデータを保管するための１つまたは複数のストレージデバイス１１０Ａ、１１０Ｂを含む。１つまたは複数のストレージデバイス１１０Ａ、１１０Ｂは、任意の好適な記憶媒体であってよく、例えばハードディスクドライブ、ソリッドステートドライブまたは光学ドライブなどであって良い。
【００２７】
ゲームコンソール１１２Ａ−ｎの各々は、ハードウェアレイヤ１４３と、ハードウェアレイヤの上に重なるオペレーティングシステムレイヤ１４２とを含む。アプリケーションレイヤ１４１がオペレーティングシステムレイヤ１４２の上に重なる。アプリケーションレイヤ１４１は、ゲームコンソール１１２Ａ上で稼働するゲーム及び他のアプリケーションを含む。ハードウェアレイヤは、メインプロセッサ１４５、コプロセッサ１４６、グラフィックプロセッサ（ＧＰＵ）１４７、メモリシステム１４８、入出力システム１４９、ネットワークインターフェースカード１５０、ならびにゲームコンソール１１２Ａの作動に必要とされ得る多くの他の物理的周辺機器及び仮想周辺機器を含む。メインプロセッサ１４５、コプロセッサ１４６、グラフィックプロセッサ（ＧＰＵ）１４７、メモリシステム１４８、入出力システム１４９、ネットワークインターフェースカード１５０、他の周辺機器は１つまたは複数のデータバス１５１によって一緒に結合される。
【００２８】
少なくとも１つの実施形態では、オペレーションシステムレイヤ１４２は、ステートマネージャクライアント１４４を含む。他の実施形態では、ステートマネージャクライアント１４４は、アプリケーションレイヤ１４１内の１つまたは複数のアプリケーションの中に含まれる場合もある。ステートマネージャクライアント１４４はまた、オペレーションシステムレイヤ１４２及びアプリケーションレイヤ１４１の両方に常駐する部分を有するように実装される場合もある。ステートマネージャクライアント１４４は、開始される際、ゲームコンソール１１２Ａのゲームステートデータ１１４をキャプチャすることができる。キャプチャされたゲームステートデータ１１４は、ローカルストレージサーバ１１６及び／またはストレージサーバ１１０内にゲームステートデータ１１４’として保管することができる。保管されたゲームステートデータ１１４’の保管場所は、ユーザアカウントデータベース１３３内の第１のユーザアカウント情報に加えるためにクラウドコントローラに提供される。
【００２９】
クライアントデバイス１２２Ａ、１２２Ｂは、インターネット１０２またはローカルネットワーク１０４Ａ−Ｃを介してクラウドゲーミングシステム１００に対するアクセス権を与える。クライアントデバイス１２２Ａ、１２２Ｂは、インターネット１０２またはローカルネットワーク１０４Ａ−Ｃにアクセスすることが可能な任意の好適なプラットフォームであって良い。一例として、クライアントデバイス１２２Ａ、１２２Ｂは、パーソナルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、手持ち式ゲーミングデバイス、手持ち式コンピューティングデバイス、例えばタブレットコンピュータまたはスマートフォンなど、あるいは任意の他のコンピューティングプラットフォームであって良い。第１のクライアントコンピューティングデバイス１２２Ａ及び第２のクライアントコンピューティングデバイス１２２Ｂは、複数の異なる地理的に離れた場所で使用することができる。一例として、第１のクライアントコンピューティングデバイス１２２Ａは、自分の家で、オフィスで、及び旅行中でも第１のユーザによってインターネット１０２及びクラウドゲーミングシステム１００にアクセスするのに使用されるタブレットコンピュータであって良い。同様に第２のクライアントコンピューティングデバイス１２２Ｂは、自分の家で、オフィスでまたはインターネットアクセス権を有する他の場所でインターネット１０２及びクラウドゲーミングシステム１００にアクセスすることが可能なノートブックコンピュータであって良い。
【００３０】
一実施形態では、第１のユーザは、第１のクライアントコンピューティングデバイス１２２Ａを使用してインターネット１０２を介してクラウドコントローラ１３０にアクセスすることができる。認証マネージャ１３５が、第１のユーザを認証し、第１のユーザに許されたアクセスレベルを判定する。クラウドコントローラ１３０及び／またはゲームコンソールマネージャ１１３が、第１のユーザを現在のクラウドゲーミングセッションに関してゲームコンソールＡ  １１２Ａに割り当て、ゲーム及びアプリケーションデータベース１３２からの認証されたアプリケーション及びゲームを含む認証されたアクセスレベルを提供する。クラウドコントローラ１３０及び／またはゲームコンソールマネージャ１１３はまた、ゲーム及びアプリケーションデータベース１３２から割り当てられたゲームコンソールＡ  １１２Ａに認証済みのゲーム及び他のアプリケーションを転送することもできる。一実施形態では、割り当てられたゲームコンソールＡ  １１２Ａは、ゲーム及びアプリケーションデータベース１３２にアクセスして認証済みのゲーム及び他のアプリケーションを割り当てられたゲームコンソールＡに転送することができる。
【００３１】
開示されるクラウドステートセーブ、再開及び転送技術はとりわけ、クラウドゲーミング目的に有益であるが、その理由は、ゲームステートを中断し復元することに伴う大量のデータが存在するためである。クラウドゲーミングシステム１００は、開示されるクラウドゲーミングステートセーブ、再開及び転送技術に十分に適するが、その理由は、クラウドゲーミングシステムが、高速ネットワーク１０４Ａ−Ｃを利用して世界中に接続された何千ものゲーミングコンソール１１２Ａ−ｎを含むためである。
【００３２】
クラウドゲーミングステートセーブ、再開及び転送技術及び方法の多数の実施形態が本明細書に開示される。１つの手法は、フルハードウェアステートデータまたはフルアプリケーションステートデータの少なくとも一方をゲームコンソール間で転送することである。以下は、クラウドゲーミングステートセーブ、再開及び転送機構がどのように機能することができるかの記述である。ハードウェアステートデータ及びアプリケーションステートデータのコピーをどのように作成するかの詳細な記述も提供される。
【００３３】
クラウドゲーミングステートセーブ、再開及び転送機構は、１つのゲームコンソールから別のゲームコンソールへのゲームステートデータの転送を可能にする。図２Ａは、本開示の実施形態を実施するために、クラウドゲーミングステートセーブ、再開及び転送機構において実行される方法工程２００の簡素化された概要を示すフローチャートである。工程２０５において、第１のユーザが、クラウドゲーミングシステム１００におけるゲームコンソール１１２Ａ上でゲームをプレイしている。工程２１０において、第１のユーザがゲームにおける選択された中断ポイントでゲームを中断することを選択する。選択された中断ポイントは、事前定義されたゲームの中断ポイント以外のゲームにおけるいかなるポイントでもよい。クラウドゲーミングシステム１００はまた、１つまたは複数のクラウドゲーミングシステム管理の理由によりユーザのゲームを自動的に中断する場合もある。一例として、クラウドコントローラ１３０が、所定の活動しない時間制限を超える時間にわたって第１のユーザからの活動を検出しない場合、またはクラウドコントローラが、第１のユーザのクライアントデバイス１１２Ａからのネットワークの切り離しを検出した場合などである。
【００３４】
一実施形態において、クラウドコントローラは、利用可能なゲーム及び利用可能なゲームサーバを認知しているが、容量の理由により、クライアントデバイス１１２Ａ−Ｂとの継続的なインタラクションの管理は、典型的には、割り当てられたゲームコンソールおよび／またはゲームコンソールマネージャにおけるストリーミングソフトウェアに依存している。ゲームコンソールマネージャ、割り当てられたゲームコンソールまたはクライアントデバイスは、アクティブではないことを判定することができる。ユーザがアクティブでないことは、例えば所定の時間にわたってボタンが押されないことなどによってクライアントデバイスによって判定することができる。ゲームコンソールマネージャ及び／または割り当てられたゲームコンソールも同様にユーザがアクティブではないことを識別することができる。一例として、クライアントデバイスが所定の時間にわたるユーザがアクティブではないことを検出した場合、クライアントデバイスは、割り当てられたゲームコンソール及び／またはゲームコンソールマネージャに切断メッセージを送信する。この切断メッセージはまた、例えばユーザが全く活動していないなどの切断メッセージに関する理由を含む場合もある。割り当てられたゲームコンソール及び／またはゲームコンソールマネージャがこの切断メッセージを受信すると、ゲームを停止する、ユーザデータを保管する、ゲームステートデータをキャプチャするなどのストリーミングセッションの残りの部分を停止するようなプロセスが開始される。一実施形態では、切断メッセージは割り当てられたゲームコンソール及び／またはゲームコンソールマネージャにおけるストリーミングソフトウェアによって受信され、このストリーミングソフトウェアが、ゲームコンソールマネージャに対して停止メッセージを発行し、ゲームコンソールマネージャが停止プロセスを管理する。
【００３５】
ユーザの切断は最終的に、そのアーキテクチャに応じてクラウドコントローラに通知される場合もある。一実施形態において、クラウドコントローラは、ユーザが現在ストリーミング中であるかどうかを監視または追跡することができる（例えば課金目的で）、あるいはユーザが２つ以上の場所から自分のセーブしたデータにアクセスする場合、データの破損が生じる可能性があるため、ユーザが何度もストリーミングするのを阻止することもできる。
【００３６】
第１のユーザのゲームステートデータが工程２１５においてキャプチャされ保管される。第１のユーザのゲームステートデータがキャプチャされ保管された後、ゲームコンソール１１２Ａを第２のユーザのために解放することができる。ゲームステートデータは、ハードウェアステートデータ及び／またはアプリケーションステートデータを含む。ゲームステートデータはまた、ゲームの選択した中断ポイントでゲームを再構築するのに必要であり得る履歴依存データ及びプロセスデータも含んでいる。履歴依存データ及びプロセスデータは、選択された中断ポイントで再開することが可能な実行可能なゲーミングアプリケーションを形成するのに必要な一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造の形態であって良い。一時的メタデータ及びユーザインタラクティブヒストリカルメタデータの例には、カラーデータ、テクスチャデータ、頂点データ、フラグメンテーションデータ、アートアセット、ドローイングデータ、シェーディングデータ、ライティングデータ及びその他などのグラフィックデータが含まれる。一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータはまた、種々のバッファ及びキャッシュのコンテンツ及びステートならびにゲームのオペレーションを連携させるのに必要な種々のカウンター及びタイマーの状況も含むことができる。ゲームステートデータをキャプチャすることはまた、第１のユーザの選択した中断ポイントでゲームにおけるそのシーンの現在の画像を取り込むことを含むこともできる。
【００３７】
しばらくしてから、工程２２０において、第１のユーザが中断したゲームを再開することを選び、保管した第１のユーザのゲームステートデータがキャプチャされ、割り当てられたゲームコンソールにロードされ、行程２２５において、ゲームの中断ポイントでゲームが再開される。ユーザは、最初にユーザがそのゲームと共に元々使用していたものと同一のゲームコンソール１１２Ａにおいてゲームを再開することができる。あるいは第１のユーザは、別のゲームコンソール１１２Ｂにおいてゲームを再開することもできる。第１のユーザはまた、第２のユーザが第１のユーザのゲームステートデータにアクセスすることを認証することで、第２のユーザが第１のユーザの中断したゲームを再開することを可能にすることもできる。ゲームの再開には、選択したゲームコンソール上にゲームステートデータを適用することが含まれる。ゲームステートデータは、選択された中断ポイントで再開することが可能な実行可能なゲーミングアプリケーションを形成するのに必要な一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含むことができる。
【００３８】
図２Ｂは、本開示の実施形態を実施するための、ユーザのクラウドゲーミングシステムダッシュボード２５０の簡素化された図式のユーザインターフェースである。クラウドゲーミングシステムダッシュボード２５０は、新たなゲームを選択するためのオプション２５２と、ゲーミングトーナメントにおけるユーザの現在の順位を調査するためのオプション２５４と、ユーザのゲーミング履歴を見直すためのオプション２５６と、ユーザの友達を更新するためのオプション２５８と、他のオプション２６０及びユーザアカウントを更新するためのオプション２６２とを含む。オプションの各々は、選択したオプションを実行するためにユーザを対応するスクリーンに移動する。
【００３９】
クラウドゲーミングシステムダッシュボード２５０はまた、中断したゲームメニュー２７０も含むことができる。中断したゲームメニュー２７０は、中断したゲーム及び中断したゲームを再開または削除するためのオプションのリストを含む。ユーザは、２つ以上の中断したゲームを有することができ、いつでも及び自分が選んだ何らかの理由のためにゲームを中断することができることに留意されたい。表示されるメニューオプションを選択するためのポインター２８０もクラウドゲーミングシステムダッシュボード２５０スクリーンに示される。
【００４０】
クラウドゲーミングステートセーブ、再開及び転送は、キャプチャを提供し、一つのゲームコンソールから別のゲームコンソールへのユーザのゲームステートの転送を可能にする。ユーザのゲームステートは、ユーザがゲームを中断したときのユーザのゲームコンソールのハードウェアステートデータ及び／またはアプリケーションステートデータの一方または両方を含むことができる。
【００４１】
図２Ｃは、ゲームＡのセーブしたステートを共有するための機能２９０がユーザに与えられた一例を示す。システムはまた、ユーザがボブ２９２と共にセーブしたゲームステートのデータをセーブし、その後、ボブによって行われた何らかのセーブされた中断ポイントまたは状況から２９２を再開するための能力が備わっている。また、ボブが特定のレベルを完了しセーブする、またはそのレベルが完了したことをユーザに知らせ、これにより次のレベルの再開を可能にすることも可能である。さらに図２Ｃには、ゲームＢにおける中断ポイントの履歴情報２９４をセーブするためのオプションが示される。ユーザが複数回中断した場合、ユーザは、最後にセーブした中断ポイントのみではなく、このようなそれより前の中断ポイントで再開することも可能である。いくつかの実施形態において、ストレージスペースにセーブする履歴の目的で特定の数の中断ポイントがセーブされる、またはユーザにセーブした中断ポイントをダウンロードする能力が備わっている場合もある。さらにユーザは、２人以上のユーザと中断ポイントを共有することが可能な場合もある。例えばユーザは、複数のユーザ（例えば友達）とゲームＡにおける中断ポイントを共有することで、特定のレベルにおいて最高点を得点し、最高のトロフィーを獲得するなどした人を知ることもできる。その後ユーザは、どの友達の中断ポイントから引き継ぎたいか、またはどの友達の中断ポイントから再開したいかを選択することができる。
【００４２】
図３は、本開示の実施形態を実施するためのクラウドゲーミングステートセーブ、再開及び転送において行われる方法工程３００を示すフローチャートである。工程３０５において、第１のユーザがクラウドゲーミングシステムクラウドコントローラ１３０にアクセスする。認証マネージャ１３５が、ユーザアカウントデータベース１３３に問い合わせ、第１のユーザのログインアクセス情報をユーザアカウントデータベース１３３内の第１のユーザのアカウント情報と比べることによって、このユーザが有効なアカウント及び第１のユーザの認証済みのアクセス権を有することを確認する。第１のユーザは、クライアントデバイス１２２Ａを介してクラウドコントローラにアクセスすることができる。
【００４３】
クラウドコントローラ１３０が、工程３１０において第１のユーザをゲームコンソール１１２Ａに割り当てる。一実施形態では、第１のユーザのゲームコンソール１１２Ａへの割り当ては、第１のユーザの予め中断したゲームのいずれかを割り当てられたゲームコンソール１１２Ａに自動的にロードすることを含むことができる。第１のユーザのゲームコンソール１１２Ａへの割り当てはまた、第１のユーザのクラウドゲーミングシステムダッシュボード２５０スクリーンの表示を含むことができる。一実施形態では、ゲームコンソールマネージャが、第１のユーザをゲームコンソール１１２Ａに割り当てる場合もある。クラウドコントローラが認証を行い、ゲームコンソールマネージャがゲームコンソールを始動し（例えば電力を印加する）、ゲームデータ、ユーザデータ、ゲームステートデータなどの任意の必要とされるデータを転送し、割り当てられたゲームコンソールに対してログインシーケンスを作動させる。あるいは割り当てられたゲームコンソールは、ゲームデータ、ユーザデータ、ゲームステートデータなどの任意の必要とされるデータを、ユーザデータ及び／またはゲームコンソールマネージャ及び／またはクラウドコントローラ１３０によって指示される対応する保管場所から取り出すこともできる。
【００４４】
工程３１５において、第１のユーザがゲームまたはアプリケーションを選択し、割り当てられたゲームコンソール１１２Ａ上で実行する。割り当てられたゲームコンソール１１２Ａは、１つまたは複数のクラウドゲーミングサーバにおける多くのゲームコンソールのうちの１つであってよい。一実施形態では、第１のユーザの割り当てられたゲームコンソール１１２Ａは、ゲームコンソールの特定のタイムシェアに限定される場合もあり、この場合第１のユーザは、割り当てられたゲームコンソール１１２Ａの稼働時間の一部のみに配分される。ゲームコンソール１１２Ａは、１つまたは複数のタイムシェアを提供することができ、タイムシェアの各々は、それぞれのユーザに割り当てることができるため、複数のユーザが同時に１つのゲームコンソールを利用することが可能になる。
【００４５】
工程３２０において、そのアプリケーションにおける所定の中断ポイント以外の特定のポイントでゲームにおいて中断が開始される。例えば第１のユーザは、中断リクエストを開始して自分のストリーミングゲームセッションを中断することができる。あるいはクラウドコントローラ１３０が、事前選択された不活動時間制限を超える第１のユーザによる不活動のために中断を開始することもできる。コストの理由のために、クラウドコントローラ１３０が自動的に第１のユーザのゲームコンソール１１２Ａを中断することで、第１のユーザのゲームコンソールを解放し、第２のユーザが利用できるようにすることができる。第１のユーザは、クラウドコントローラ１３０及び第１のユーザの割り当てられたゲームコンソール１１２Ａの一方またはその両方に対して中断リクエストを通知することによって中断を開始することができる。上記に指摘したように、中断工程は、割り当てられたゲームコンソール、ゲームコンソールマネージャ、クラウドコントローラ１３０及びストリーミングソフトウェアの中で分配されて良い。
【００４６】
工程３２５において、割り当てられたゲームコンソール１１２Ａの第１のユーザの現在のゲームステートデータ１１４がキャプチャされる。キャプチャされた第１のユーザのゲームステートデータ１１４は、ハードウェアステートデータまたはアプリケーションステートデータ、あるいはハードウェアステートデータとアプリケーションステートデータの両方であって良い。ハードウェアステートデータ及びアプリケーションステートデータならびにハードウェアステートデータ及びアプリケーションステートデータのための方法及びシステムを以下でより詳細に記載する。
【００４７】
工程３３０において、キャプチャされた第１のユーザのゲームステートデータ１１４が後に取り出すために保管される。上記に記載したように、キャプチャされた第１のユーザのゲームステートデータ１１４は、保管されるゲームステートデータ１１４’としてローカルストレージサーバ１１６及び／またはストレージサーバ１１０に保管することができる。ストレージサーバ１１０及びローカルストレージサーバ１１６は、複数のゲームコンソール及び／または複数のユーザに関してゲームステートデータを効率的に保管することができる。工程３３５において、第１のユーザの保管されたステートデータ１１４’の場所が、ユーザアカウントデータベース１３３における第１のユーザのアカウントデータに対応付けられる。これにより第１のユーザのアカウント情報が、第１のユーザの中断したゲームステートデータの保管場所を含むことが可能になる。
【００４８】
しばらくしてから、工程３４０において、上記の工程３２０においてそれが中断されたポイントで第１のユーザの中断したゲームを再開するためのリクエストが開始される。再開リクエストは、第１のユーザまたは認証済みの第２のユーザから発生する場合がある。第１のユーザまたは認証済みの第２のユーザは、ゲームコンソール１１２Ｂなどの割り当てられたゲームコンソールを介して再開リクエストを発行することができる。
【００４９】
第１のユーザが自分の最初のゲーミングセッションをログオフさせる場合、あるいはクラウドコントローラが最初のゲーミングセッションを終わらせる、あるいは第１のユーザがクラウドコントローラ１３０またはゲームコンソールマネージャ１１３または割り当てられたゲームコンソールへのネットワーク接続における遮断を感じた場合など、それ以外の方法で自分の最初のゲーミングセッションが中断された場合、このとき第１のユーザは、上記の工程３０５において記載したようにクラウドゲーミングサービスにアクセスし直すことが要求され、特定のゲームコンソールが割り当てられて良い。第１のユーザにゲームコンソール１１２Ｂを割り当てられると、１つまたは複数の第１のユーザの中断したゲームが自動的に割り当てられたゲームコンソールにロードされて良い。第１のユーザがゲームコンソール１１２Ｂに割り当てられ、第１のユーザの中断したゲームの１つが割り当てられたゲームコンソールにロードされる際、割り当てられたゲームコンソールは、中断したゲームを再開する準備が整ったことの指示を第１のユーザに対して提供し、上記の工程３２０においてゲームが中断されたポイントで中断したゲームを再開するためのアクセス権を第１のユーザに与えることができる。
【００５０】
第１のユーザはまた、保管したゲームステートデータ１１４’を共有または送信することができる、あるいはそうでなければ上記に記載したように第２のユーザに対して保管したステートゲームデータ１１４’に対するアクセス権を認証することもできる。ゲームを再開するためのリクエストは、例えばゲームコンソール１１２Ｂなどの割り当てられたゲームコンソールからクラウドコントローラ１３０において受信される。
【００５１】
再開リクエストを受信すると、クラウドコントローラ１３０は、第１のユーザのアカウント情報をユーザアカウントデータベース１３３に問い合わせ、工程３４５において、ユーザの中断したゲームに関して保管した第１のユーザのステートデータ１１４’の保管場所を特定する。クラウドコントローラ１３０及び／またはゲームコンソールマネージャ１１３は、保管した第１のユーザのゲームステートデータ１１４’を取り出し、工程２５０において保管した第１のユーザのゲームステートデータ１１４’をリクエストするゲームコンソール１１２Ｂに送信する。工程３５５において、リクエストするゲームコンソール１１２Ｂは、保管した第１のユーザのゲームステートデータ１１４’を受信する。
【００５２】
工程３６０において、リクエストするゲームコンソール１１２Ｂは、保管した第１のユーザのゲームステートデータ１１４’を適用して、再開後のゲームステートデータ１１４”を生成し、中断ポイントでゲームを再構築する。中断ポイントにおけるゲームの再構築は、リクエストするゲームコンソール１１２Ｂをゲームコンソール１１２Ａと同等な構成にし、そのゲームを上記の工程３２０においてゲームが中断されたときと同等な構成にする。中断ポイントにおけるゲームの再構築は、リクエストするゲームコンソール１１２Ｂにおける複数のそれぞれの態様及び場所に再開後のゲームステートデータのそれぞれの部分を読み込むことを含むことができる。一例として、中断ポイントにおけるゲームの再構築は、ゲームが中断されたポイントでゲームを再構築するのに必須であり得る全ての履歴依存データ及びプロセスデータを読み込むことを含むことができる。ゲームを再構築するのに必須であり得る依存データ及びプロセスデータの例には、カラーデータ、テクスチャデータ、頂点データ、フラグメンテーションデータ、アートアセット、ドローイングデータ、シェーディングデータ、ライティングデータ及びその他などのグラフィックデータが含まれる。依存データ及びプロセスデータはまた、種々のバッファ及びキャッシュのコンテンツ及びステート、ならびにゲームのオペレーションを連携させるのに必要な種々のカウンター及びタイマーの状況も含むことができる。中断されたポイントにおけるゲームの再構築はまた、第１のユーザの選択した中断ポイントでそのゲームにおけるそのシーンのキャプチャされた画像を表示することも含むことができる。
【００５３】
工程３７０において、上記の工程３２０においてゲームが中断されたのと同じポイントで、第１のユーザのゲームがゲームコンソール１１２Ｂにおいて再開され、方法工程を終えることができる。
【００５４】
ゲームのステートデータは、アプリケーションステートデータ及び／またはハードウェアステートデータの形態で表すことができる。アプリケーションステートデータ及びハードウェアステートデータの各々のキャプチャ及び再開は、以下で考察するようにクラウドゲーミングステートセーブ、再開及び転送に関してその独自の問題を抱える。
【００５５】
アプリケーションステートデータ
コンピュータは、１つまたは複数のプロセッサ、メモリ、ならびにグラフィックプロセッサユニット（ＧＰＵ）、サウンドカード、キーボード及び他の周辺機器などの入出力周辺機器で構成された１つのハードウェアである。コンピュータが稼働するタスクはコンピュータプログラムまたはアプリケーションである。コンピュータプロセッサは、これらのアプリケーションコードを実行し、Ｉ／Ｏに基づいて決定を行う、例えばキーボードボタンを押すことで、ディスプレイ上にビデオフレームを出力することができる。
【００５６】
アプリケーションステートデータは、ハードウェアステートデータに属する場合がある。このアプリケーションの使用をバッファするメモリは、ＲＡＭチップまたはスワップファイル内の最終的な領域、例えばハードディスクドライブまたはソリッドステートドライブである。プロセッサは、アプリケーションに関する命令を命令キャッシュに記憶し、データをプロセッサレジスタ、データキャッシュまたはＲＡＭに取り込む／記憶する。実行する際、各々のコンピュータアプリケーションは、対応するアプリケーションステートデータを有する。アプリケーションステートデータは、
オープンファイルハンドル
オープンソケット形態のネットワーク接続
パイプ
アプリケーションによって利用されるメモリバッファのステート
命令カウンター
タイマー、
の形態である。
【００５７】
一例として、アプリケーションステートデータは、信号、スレッド、ファイル記述子、仮想メモリマッピング、スレッドローカルストレージ、スレッド、プロセスＩＤ、ユーザＩＤ、グループＩＤ、パイプ、ソケット及びその他を含むことができる。アプリケーションステートデータはまた、ゲームによって占拠されるＧＰＵリソースなどのオペレーティングシステムレベルコンセプトを含むこともできる。ゲームは、テクスチャー、ジオメトリバッファ、実行するためのＧＰＵに対するシェーダ命令及びその他などのリソースを認識している。テクスチャーはＧＰＵメモリに記憶され、シェーダ命令はＧＰＵメモリにロードされ、実行中は命令キャッシュにロードされ、最終的にはマッチング命令ポインタが存在する。
【００５８】
上記の図３を再び参照すると、ゲームまたはアプリケーションは、上記の図３の工程３２０において中断が開始される際、一時停止される。工程３２５において、アプリケーションステートデータをキャプチャすることによってゲームステートデータが取り込まれる。アプリケーションステートデータは、仮想メモリマッピング、取り出しファイル記述子などを含む。一実施形態では、アプリケーションの中からデバッガに似た機能を利用して仮想メモリマッピング、回収ファイル記述子などをキャプチャすることもできる。
【００５９】
アプリケーションステートデータの一部はまた、例えば／ｐｒｏｃ／＜ｐｒｏｃｃｅｓｓ  ｉｄ＞アプリケーションからのＬｉｎｕｘ(登録商標)オペレーティングシステムにおいて外部から獲得することもできる。アプリケーションステートデータの一例はオープンファイルであってよく、これに関してアプリケーションは数値であるファイル記述子を有する。数値であるファイル記述子は、ファイルに関する識別子としてファイル読み取り／書き込みコールにおいて使用される。このような状況を復元するために、アプリケーションに正確な数値ファイル記述子が与えられる必要がある。一例として、Ｌｉｎｕｘ(登録商標)オペレーティングシステムにおいて数値ファイル記述子は、
‐original_file_descriptor=42
‐file_descriptor=open("/path/to/file",..)
‐dup2(file_descriptor,original_file_descriptor)、
などの擬似コードによってキャプチャすることができる。
【００６０】
またＬｉｎｕｘ(登録商標)オペレーティングシステム上でネーム空間を利用して他のタイプのアプリケーションステートデータ、例えばプロセスＩＤ（ＰＩＤ）、ユーザＩＤ、グループＩＤ、ネットワークレイアウト及びその他が仮想化される場合もある。仮想化されたプロセスＩＤ（ＰＩＤ）、ユーザＩＤ、グループＩＤ、ネットワークレイアウトなどによって、サンドボックス／コンテナ環境を形成することが可能になり、この中にシステムの一部を隠すことができ、そこでＰＩＤ、ユーザＩＤ及びその他のオペレーティングシステムレベルリソースを再形成することができる。
【００６１】
キャプチャされたアプリケーションステートデータはその後、図３の工程３６０において、同一または異なるコンピュータシステム上で、例えばゲームコンソール１１２Ｂ上で、同一のアプリケーションステートデータを再形成するのに利用することができる。アプリケーションまたはゲームを再開するのに使用されるゲームコンソール１１２Ｂ内のそれぞれの場所に種々のアプリケーションステートデータを配置することができる。ネットワークバッファのコンテンツをオペレーティングシステムにおいて再形成することができる。あるいは、以下に記載するハードウェア割り込みと同様にネットワークバッファを安全な回復ポイントまでドレインすることもできる。この方法において、ユーザは、上記の工程３２０においてアプリケーションまたはゲームが中断されたポイントでアプリケーションを再開することが可能である。
【００６２】
ハードウェアステートデータ
ハードウェアステートデータは、ユーザがアプリケーションの中断を選択した場合など、アプリケーションの実行中に中断されたコンピュータの動作状況を含む。コンピュータの現在の動作状況は所定の時間において静止され、その結果コンピュータのハードウェア、例えばプロセッサ、ＲＡＭ、全ての周辺機器、ＧＰＵ、サウンドカード、ネットワークカードなども静止される。このようなハードウェアステートデータのキャプチャ、及びその後キャプチャされたハードウェアステートデータを別のコンピュータに適用することによって、ユーザが、第１のコンピュータにおいてアプリケーションを中断した場所でアプリケーションを再開することが可能になる。
【００６３】
エミュレータは、コンピュータのハードウェアをソフトウェアにおいて完璧に模倣するアプリケーションである。エミュレータは、例えば廃れてしまったコンピュータまたはゲームコンソールなどの極めて古いコンピュータまたはゲームコンソールからのレガシーアプリケーションをより最近生産されたコンピュータシステム上で稼働するのに利用されることが多い。より最近生産さたコンピュータシステムは、ハードウェアの不適合性により、エミュレータアプリケーションなしではレガシーアプリケーションと適合することができないため、より最近作られたコンピュータシステムは、レガシーアプリケーションを稼働することができない。
【００６４】
ハードウェアステートデータを動作中の任意の選択されたポイントでセーブするために、エミュレータは、エミュレートされたコンピュータ用のエミュレートされたハードウェアステートデータを、例えば特定のファイルにセーブすることができる。エミュレートされたハードウェアステートデータは、エミュレートされたデバイスに関する全てのメモリ、周辺機器の状況をキャプチャすること、及びエミュレートされたコンピュータに関するその他において現在実行される命令のアドレスを記憶する。エミュレートされたコンピュータは、上記に記載するようにエミュレータアプリケーションにおいて完璧に実現され、これによりエミュレータアプリケーションのアプリケーションステートデータをキャプチャする。
【００６５】
仮想マシンステートは、エミュレートされたハードウェアステートデータと同様である。クラウドゲーミング、ハードウェアステートデータのキャプチャ、転送及び再開の文脈において、エミュレータに関する１つの問題は、複数の仮想ゲームマシンの間でエミュレートされたハードウェアステートデータを共有することである。
【００６６】
典型的には、例えばウェブサーバ、データベースサーバ、Ｅメールサーバなどのサーバアプリケーションは、例えばサーバマシンなどの物理的サーバハードウェア上で稼働する。サーバマシンは、高性能の中央処理装置（ＣＰＵ）及び大量のメモリを含み、これらによって複数のサーバアプリケーションを並行して稼働することが可能になる。プロセッサ、メモリ、データバスなどのコンピュータハードウェアはより高性能になっており、サーバ稼働時間及びセキュリティがよりいっそう重大かつ重要になってきている。
【００６７】
サーバアプリケーションは典型的には、仮想化されたサーバハードウェア上で稼働する。そのような例では、高性能のサーバプロセッサが存在し、これが仮想アプリケーションを稼働する。仮想アプリケーションによって複数の仮想マシンを生み出すことが可能になる。各々の仮想マシンは別々に動作するエミュレートされたコンピュータハードウェアである。各々の仮想マシンは、例えばネットワークカード、記憶デバイスなどのその独自の仮想または物理的周辺機器のセットを含む。各々の仮想マシンはその独自のオペレーティングシステムを稼働することができる。仮想マシンの各々におけるオペレーティングシステムは、他の仮想マシンと異なる場合があり、例えば複数の仮想マシンを稼働するＬｉｎｕｘ(登録商標)物理マシン、異なるＷｉｎｄｏｗｓのバージョンを稼働する仮想マシンの各々または他の好適なコンピュータオペレーティングシステムなど物理的マシンのオペレーティングシステムと異なる場合もある。
【００６８】
例えばウェブサーバ、データベースサーバ、Ｅメールサーバなどの各々のサーバアプリケーションは典型的には、安全性の隔離の理由でその独自の仮想マシンに割り当てられる。一般にエミュレータなどの仮想マシンは、ソフトウェアコンセプトであり、エミュレータと同様の方法で中断させることができ、また仮想マシンステートは、仮想アプリケーションのアプリケーションステートデータとしてキャプチャすることができる。
【００６９】
仮想マシンステートはその後、第２の仮想マシンに転送することができる。第２の仮想マシンは、場合によって異なる物理的コンポーネントを利用して異なる物理的サーバ上で稼働することができるが、但しこのような物理的コンポーネントは、仮想周辺機器デバイス及び仮想マシンの仮想プロセッサが理由で問題にはならない。
【００７０】
仮想マシンステートは、一種のアプリケーションステートデータとみなすことができる。コンピュータシステム間での仮想マシンステートの転送は、仮想マシンのマイグレーションと呼ばれ、サーバの世界では共通の特徴である。
【００７１】
仮想マシンのマイグレーションに対する最近の拡張は、ライブマイグレーションと呼ばれ、サーバの信頼性を高める。例えば仮想データベースサーバは、物理的ハードウェアが機能していないこと、例えばメモリエラー、ハードディスク読み取りエラーなどを検知し、異なるサーバハードウェア上にホストされる別の同一の仮想データベースサーバへの仮想データベースサーバのマイグレーションを起動する。ライブマイグレーションは、いかなるクライアントも切り離さずに、数秒以下のダウンタイムのみを利用して行うことができる。
【００７２】
残念なことに仮想マシンの全ての周辺機器は、仮想マシンのマイグレーションが正確に機能するために仮想周辺機器でなければならない。仮想マシンのマイグレーションが、物理的周辺機器のマイグレーションをサポートすることはない。第１のゲームコンソールのハードウェアステートデータを第２のゲームコンソールにマイグレーションするには、物理的周辺機器のマイグレーションを必要とするため仮想マシンマイグレーションは、この目的には適さない。
【００７３】
コンテンツリッチでインタラクティブなゲーミング環境を生み出すためにゲームコンソールハードウェアに必要とされる複雑さのために、ゲームコンソールは容易にまたは効率的にエミュレートまたは仮想化することができない。ユーザは特有のゲームコンソールに割り当てられ、ユーザの選択したゲームが割り当てられたゲームコンソールのハードウェアによって実行される。よってエミュレーション及び仮想化が、ハードウェアステートデータを一種のアプリケーションステートデータとしてキャプチャするために必要とされる機能を与えることはない。
【００７４】
上記に記載したように、ハードウェアマイグレーションは、コンピュータ及びそのコンピュータに関する周辺機器の関連するハードウェアステートデータのキャプチャを必要とする。それぞれの周辺機器に関するデバイスドライバは、システムが休止状態に入る際、周辺機器に関する関連するハードウェアステートデータをキャプチャするように尋ねられ、システムメモリにそのような状況を記憶する。システムに再度電源が入れられると、全てのメモリステートがディスクから復元され、周辺機器ドライバもまた、例えばＧＰＵに関する３Ｄテクスチャーを含むバッファなどの何らかのハードウェアステートデータを復元するように指示される。
【００７５】
一実施形態では、ゲームコンソール１１２Ａは、上記の図１に示されるようにメインプロセッサ１４５と、コプロセッサ１４６とを含む。ユーザが上記の工程３２０においてゲームコンソール１１２Ａを中断することを選択したとき、メインプロセッサ１４５は現在の動作（複数可）を静止させることができる。工程３２５において、コプロセッサ１４６は、メインプロセッサ１４５、バッファ、グラフィックプロセッサ１４７、メモリシステム１４８、入出力システム１４９、ネットワークインターフェースカード１５０及び他の周辺機器に対して、それぞれの現在の状況を判断し、ハードウェアステートデータをキャプチャするように問い合わせを行うことができる。あるいはオペレーティングシステムと共にまたはその一部として作動するアプリケーションが中断し、バッファ、グラフィックプロセッサ１４７、メモリシステム１４８、入出力システム１４９、ネットワークインターフェースカード１５０及び他の周辺機器に問い合わせを行う場合もある。
【００７６】
第１のゲームコンソール１１２Ａから第２のゲームコンソール１１２Ｂへのゲームコンソールハードウェアステートデータのマイグレーションをサポートするには、たとえ第２のゲームコンソール１１２Ｂが第１のゲームコンソール１１２Ａと同じコンポーネント及び周辺機器を含んでいたとしても特別の措置を必要とする。例えばゲームコンソール１１２Ａ、１１２Ｂの各々における周辺機器は、異なる内部シリアル番号を有するため、何らかの再構成を必要とする場合がある。別の例は、さらなる再構成を必要とするネットワークデバイスのＭＡＣアドレスである。
【００７７】
さらに第２のゲームコンソール１１２Ｂが、第１のゲームコンソール１１２Ａと異なるネットワーク環境にある場合がある。異なるネットワーク環境は、異なるネットワーク設定を利用する可能性があり、よってゲームコンソールのハードウェアステートデータのマイグレーションもまたネットワークを十分に再構成することを必要とする。ゲームコンソールのハードウェアステートデータのマイグレーションはまた、第１のゲームコンソール１１２Ａと第２のゲームコンソール１１２Ｂの間の地理的な格差に関して再構成する必要がある場合もある。一例として、第１のゲームコンソール１１２Ａと異なる地理的地域にある第２のゲームコンソール１１２Ｂへの転送は、時間帯の変更、言語の変更、及び場合によって稼働中のゲームで使用される言語への変更さえも必要となる場合がある。
【００７８】
第２のゲームコンソール１１２Ｂはまた、第１のゲームコンソール１１２Ａと異なるハードウェア改訂版を有する場合があり、これは様々な再初期化を必要とする場合がある。例えば第２のゲームコンソール１１２Ｂが、例えばより小さな半導体プロセスにおけるより新しいハードウェア改訂版であり、より電力効率がよい場合があり、第１のゲームコンソール１１２Ａとは異なる電力及び冷却環境を必要とすることになる。
【００７９】
単一のアプリケーションのライブマイグレーションはかなり新しい分野である。１つの手法により、アプリケーションを中断することが可能になり、その後にアプリケーションステートデータ、例えばファイルハンドル、ソケット、メモリステート及び上記に記載したような他の種類のアプリケーションステートデータのキャプチャが続く。再開する際、同一のファイル記述子が、アプリケーションが中断されたときと同一条件に復元される。ネットワーク接続、タイマー、相互排除及び他の種類の状況も復元される。３Ｄゲームアプリケーションは、ＧＰＵに常駐するバッファの形態のハードウェアステートデータに依拠している。これ以前の手法は、それぞれのハードウェアステートデータをキャプチャは行わず、３Ｄゲームのアプリケーションステートデータ転送に関して必要とされる。この文脈において、ハードウェアステートデータは、アプリケーションの代わりにハードウェアに保管された任意のデータまたは状況を指す。例えばＧＰＵメモリにおけるバッファは地理的またはテクスチャーデータを含み、メモリバッファはハードディスク上にゲームデータファイルを含む。アプリケーションは典型的には、オペレーティングシステムカーネルまたはデバイスドライバによって提供されるソフトウェア抽象化レイヤを介してそのようなハードウェアステートデータにアクセスする。そのような抽象化の例は、最終的に記憶装置の頂部にあるレイヤであるディスク上のファイルに対するファイル記述子、ＧＰＵ側のバッファ及びグラフィックコンテクストを表すファイル記述子であって良い。時には性能の理由で、アプリケーションが直接ハードウェアバッファにアクセスする場合もある。ハードウェアバッファへの直接のアクセスは、デバイスドライバによって誘導されて良い。
【００８０】
ハードウェアステートデータをキャプチャするための１つの手法では、アプリケーションを中断し、中断されたハードウェアステートデータにリンクされたソフトウェア抽象化機構がキャプチャされる。ソフトウェア抽象化機構がファイル記述子である場合、このファイル記述子を使用して対応するハードウェアステートデータを捜すことができる。ファイル記述子はデバイスドライバ／ＯＳカーネルコンセプトであることが多いため、対応するデバイスドライバは、その対応付けられたハードウェアステートデータを取り出すための方法を公開する必要がある。アプリケーションのないところで全てのハードウェアステートデータを識別するプロセスは相当困難であり得る。
【００８１】
ハードウェアステートデータの例には、種々のレジスタ、フィフォバッファ、命令キャッシュ（ＣＰＵ及びＧＰＵの両方における）、データキャッシュ（ＣＰＵ／ＧＰＵ）、ＲＡＭ、ＣＰＵ及びＧＰＵ上のプログラムカウンター（複数可）／命令ポインター（複数可）が含まれる。ＧＰＵ命令は、シェーダアプリケーション用である。
【００８２】
ハードウェアステートデータはまた、移行状況関連情報も含んでいる。例えばハードウェアは、割り込み信号を発する場合がある。この割り込み信号は再生させることができる、またはバッファがバッファの現在のコンテンツをドレインし、その後既知の安全な回復状況においてこのバッファをリロードする場合もある。一実施形態では、ハードウェアが、何らかの要求待ちまたはスケジュール設定された処理を終わらせることが許可される場合がある。その後割り込みを利用して、新たな処理を起動する、または特定の処理の完了を報告することができる。ハードウェアが処理で忙しい場合、そのような割り込み信号はハードウェア以外で再生することもでき、ハードウェアが何らかの継続中の処理に関して割り込み信号を待っている場合に備えて、ハードウェアはリジューム中の処理を完了することはできない。一部の処理は、キャプチャするための移行状態がより少ない場合もある。一実施形態では、ゲーム操作は、継続中の移行状態が最小になる、または選択した閾値を下回り、その後割り込みなどのより少ない移行ハードウェア状況となるまで継続することができ、ゲームを再開する際の再構築のために命令カウンタが必要とされてよい。
【００８３】
別の手法は、アプリケーションからの支援を得ることである。アプリケーションを中断する代わりに、アプリケーションはサスペンド信号を送信することができ、この信号がアプリケーションが全ての内部状況をディスクに記憶するようにさせ、これによりそれが何らかの必要なハードウェアステートデータを回復させることを可能にする。アプリケーションを再開する際、回復を行うのはアプリケーションの仕事である。この利点は、アプリケーションがハードウェアステートデータが実際に何をキャプチャする必要があるのかを知っていることである。ハードウェアステートデータのかなりの部分は、そのゲームファイルからデータをリロードすることによって大抵回復することができる。ゲームはまた、回復を管理することもでき、例えばオンラインクラウドコントローラへのネットワーク接続を低下させることもできる。
【００８４】
アプリケーションステートデータまたはハードウェアステートデータの転送を介する回復とは無関係に、オンラインゲーム切断、ユーザとゲームコンソールのタイムゾーンの調節、ユーザに対する適切な言語の選択及びゲームタイマーの再開を含めた付加的な再開態様がある。ゲームは、内部のゲームタイミングに関して高精度の常に向上するタイマーを利用することが多い。再開後、このようなタイマーは、それらがそれ以前に一時停止されたのと全く同時刻で再始動させる必要があり、そうでなければゲームが誤った決定を行う可能性があり、例えばゲームのキャラクタが、壁の中で動けなくなったり、死んだりする可能性がある。オペレーティングシステムがこのようなことを管理することができるか、またはまだ管理できないかによって、ソフトウェアの変更が必要とされる。上記に記載したように、工程３５０以下参照において、再開を成功させるために適切なアプリケーションまたはゲーム及び全てのサポートするデータファイルが必要とされる。
【００８５】
図４は、本発明の種々の実施形態によるゲームシステム４００のブロック図である。ゲームシステム４００は、ネットワーク４１５を介して１つまたは複数のクライアント４１０にビデオストリームを提供するように構成される。ゲームシステム４００は典型的には、ビデオサーバシステム４２０と、任意選択のゲームサーバ４２５とを含む。ビデオサーバシステム４２０は、１つまたは複数のクライアント４１０に最小限のサービスの質でビデオストリームを提供するように構成される。例えばビデオサーバシステム４２０は、ビデオゲームにおける視野の状況を変えるゲームコマンドを受信し、更新されたビデオストリームをクライアント４１０に提供することで最低限の時間のずれでこのような変更を反映することができる。ビデオサーバシステム４２０は、多様な種類の代替のビデオフォーマットでビデオストリームを提供するように構成されて良く、これにはまだ規定されないフォーマットも含まれる。さらにビデオストリームは、多様な種類のフレーム率でユーザに提示するように構成されたビデオフレームを含むことができる。典型的なフレーム率は、毎秒３０フレーム、毎秒６０フレーム、及び毎秒４２０フレームである。これより大きなまたは小さなフレーム率も、本発明の代替の実施形態に含まれる。
【００８６】
クライアント４１０は、ここでは個別に４１０Ａ、４１０Ｂなどと呼ばれ、頭部装着型ディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアローンデバイス、手持ち式ゲームプレイデバイスなどを含んでよい。典型的にはクライアント４１０は、エンコードされたビデオストリームを受信し、このビデオストリームをデコードし、結果のビデオをユーザ、例えばゲームのプレイヤに提示するように構成される。エンコードされたビデオストリームを受信する及び／またはビデオストリームをデコードするプロセスは典型的には、クライアントの受信バッファに個々のビデオフレームを格納することを含む。ビデオストリームは、クライアント４１０に一体式のディスプレイ上で、あるいはモニターまたはテレビジョンなどの別個のデバイス上でユーザに提示される。クライアント４１０は任意選択で、２人以上のゲームプレイヤをサポートするように構成される。例えば、ゲームコンソールは、２人、３人、４人またはそれ以上の同時に存在するプレイヤをサポートするように構成される場合もある。これらのプレイヤの各々は、別々のビデオストリームを受信することができる、あるいは１つのビデオストリームが、各々のプレイヤのために特別に生成された、例えば各々のプレイヤの視点に基づいて生成されたフレームの領域を含む場合もある。クライアント４１０は任意選択で地理的に分散される。ゲームシステム４００に含まれるクライアントの数は、１または２から数千、数万またはそれ以上まで広く変動する可能性がある。本明細書で使用される際、「ゲームプレイヤ」という用語は、ゲームをプレイする人を指すのに使用され、「ゲームプレイイングデバイス」という用語は、ゲームをプレイするのに使用されるデバイスを指すのに使用される。一部の実施形態では、ゲームプレイイングデバイスは、ユーザにゲーム体験を配信するために共同する複数のコンピューティングデバイスを指す場合もある。例えばゲームコンソール及びＨＭＤは、ビデオサーバシステム４２０と共同してＨＭＤを通して見られるゲームを配信することができる。一実施形態では、ゲームコンソールがビデオサーバシステム４２０からビデオストリームを受信し、ゲームコンソールが、レンダリングのためにＨＭＤにビデオストリームを転送する、またはビデオストリームを更新する。
【００８７】
クライアント４１０は、ネットワーク４１５を介してビデオストリームを受信するように構成される。ネットワーク４１５は、いずれのタイプの通信ネットワークでもよく、これには電話網、インターネット、無線ネットワーク、パワーラインネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、プライベートネットワークなどが含まれる。典型的な実施形態では、ビデオストリームは、ＴＣＰ／ＩＰまたはＵＤＰ／ＩＰなどの標準プロトコルを介して通信される。あるいはビデオストリームは独自の標準を介して通信される。
【００８８】
クライアント４１０の典型的な一例は、プロセッサ、不揮発性メモリ、ディスプレイ、デコーディングロジック、ネットワーク通信性能及び入力デバイスを備えるパーソナルコンピュータである。デコーディングロジックには、コンピュータ可読媒体に記憶されるハードウェア、ファームウェア及び／またはソフトウェアが含まれて良い。ビデオストリームをデコードする（及びエンコードする）ためのシステムは、当分野でよく知られており、使用される特定のエンコーディングスキームに応じて変化する。
【００８９】
クライアント４１０は場合によって、但し不可欠ではなく、受信したビデオを修正するように構成されたシステムを含む。例えばクライアントは、さらなるレンダリング、１つのビデオ画像を別のビデオ画像に重ね合わせる、ビデオ画像をトリミングするなどを行うように構成されて良い。例えばクライアント４１０は、種々のタイプのビデオフレーム、例えばＩ−フレーム、Ｐ−フレーム及びＢ−フレームなどを受信し、これらのフレームをユーザに対して表示するための画像に処理するように構成されて良い。いくつかの実施形態において、クライアント４１０の構成要素は、さらなるレンダリング、シェーディング、３−Ｄへの変換などの作業をビデオストリームに対して行うように構成される。クライアント４１０の構成要素は任意選択で２つ以上の音声またはビデオストリームを受信するように構成される。クライアント４１０の入力装置には、例えば片手のゲームコントローラ、両手のゲームコントローラ、ジェスチャ認識システム、注視認識システム、音声認識システム、キーボード、ジョイスティック、指示デバイス、力フィードバックデバイス、モーション及び／またはロケーション感知デバイス、マウス、タッチスクリーン、神経インターフェース、カメラ、まだ開発されない入力デバイスなどが含まれて良い。
【００９０】
クライアント４１０によって受信されるビデオストリーム（及び任意選択で音声ストリーム）は、ビデオサーバシステム４２０によって生成され提供される。本明細書の別の場所でさらに記載するように、このようなビデオストリームは、ビデオフレームを含む。（及び音声ストリームは音声フレームを含む）。ビデオフレームは、ユーザに表示される画像に意味を成すように貢献するように構成される（例えばそれらが適切なデータ構造内にピクセル情報を含む）。本明細書で使用される際、「ビデオフレーム」という用語は、ユーザに示される画像に貢献する、例えば作用するように構成された影響力のある情報を含むフレームを指すのに使用される。「ビデオフレーム」に関する本明細書の教示の大半は「音声フレーム」にも適用することができる。
【００９１】
クライアント４１０は典型的には、ユーザからの入力を受信するように構成される。このような入力には、ビデオゲームステートを変更する、またはそうでなければゲームプレイに影響を与えるように構成されたゲームコマンドが含まれる。ゲームコマンドは、入力デバイスを利用して受信することができる、及び／またはクライアント４１０上で実行中の演算命令によって自動的に生成される場合もある。受信されたゲームコマンドは、クライアント４１０からネットワーク４１５を介してビデオサーバシステム４２０及び／またはビデオサーバ４２５に伝達される。例えばいくつかの実施形態において、ゲームコマンドは、ビデオサーバシステム４２０を介してゲームサーバ４２５に伝達される。いくつかの実施形態において、ゲームコマンドの別々のコピーがクライアント４１０からゲームサーバ４２５及びビデオサーバシステム４２０に伝達される。ゲームコマンドの伝達は任意選択で、コマンドの同一性に左右される。ゲームコマンドは任意選択で、クライアント４１０Ａに音声またはビデオストリームを提供するのに使用される様々なルートまたは通信チャネルを介しててクライアント４１０Ａから伝達される。ゲームサーバ４２５は、上記に記載したようにクラウドコントローラ１３０及び／またはゲームマネージャ１１３の一部を含む場合もあることを理解されたい。
【００９２】
ゲームサーバ４２５は任意選択でビデオサーバシステム４２０と異なるエンティティによって操作される。例えばゲームサーバ４２５は、マルチプレイヤゲームの発行元によって操作される場合がある。この例ではビデオサーバシステム４２０は任意選択でゲームサーバ４２５によってクライアントとして捉えられ、任意選択でゲームサーバ４２５の視点から従来技術のゲームエンジンを実行中の従来技術のクライアントであるように見えるように構成される。ビデオサーバシステム４２０とゲームサーバ４２５の間の通信は、任意選択でネットワーク４１５を介して行われる。したがってゲームサーバ４２５は、複数のクライアントにゲームステート情報を送信する従来技術のマルチプレイヤゲームサーバであって良く、これらのクライアントの１つがゲームサーバシステム４２０である。ビデオサーバシステム４２０は、ゲームサーバ４２５の複数のインスタンスと同時に通信するように構成されて良い。例えばビデオサーバシステム４２０は、異なるユーザに複数の異なるビデオゲームを提供するように構成することができる。このような異なるビデオゲームの各々は、異なるゲームサーバ４２５によってサポートされる及び／または異なるエンティティによって公開される場合がある。いくつかの実施形態において、ビデオサーバシステム４２０の複数の地理的に分散したインスタンスが、複数の異なるユーザにゲームビデオを提供するように構成される。ビデオサーバシステム４２０のこれらのインスタンスの各々は、ゲームサーバ４２５の同一のインスタンスと通信することができる。ビデオサーバシステム４２０と１つまたは複数のゲームサーバ４２５の間の通信は、任意選択で専用の通信チャネルを介して行われる。例えばビデオサーバシステム４２０は、これら２つのシステム間の通信に専用の高帯域チャネルを介してゲームサーバ４２５に接続されて良い。
【００９３】
ビデオサーバシステム４２０は少なくとも１つのビデオソース４３０、Ｉ／Ｏ装置４４５、プロセッサ４５０及び非一時的ストレージ４５５を備える。ビデオサーバシステム４２０は、１つのコンピューティングデバイスを含む、または複数のコンピューティングデバイスの間に分配される場合がある。このようなコンピューティングデバイスは任意選択で、ローカルエリアネットワークなどの通信システムを介して接続される。
【００９４】
ビデオソース４３０は、例えば、ストリーミングビデオまたは動画を形成する一連のビデオフレームなどのビデオストリームを提供するように構成される。いくつかの実施形態において、ビデオソース４３０は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤからゲームコマンドを受信し、受信したコマンドに基づいてビデオゲームのその状況のコピーを維持するように構成される。このようなゲームステートは、ゲーム環境における対象の位置ならびに典型的には視点を含む。ゲームステートはまた、対象の特性、画像、色及び／またはテクスチャーも含む場合もある。ゲームステートは典型的には、ゲームルール、ならびに例えば移動する、回転する、攻撃する、集中する、対話する、利用するなどのゲームコマンドに基づいて維持される。ゲームエンジンの一部は任意選択でゲームサーバ４２５内に配置される。ゲームサーバ４２５は、地理的に分散したクライアントを利用する複数のプレイヤから受信したゲームコマンドに基づいてゲームのステートのコピーを維持することができる。このようなケースでは、ゲームステートは、ゲームサーバ４２５によってビデオソース４３０に提供され、ここにゲームステートのコピーが保管され、レンダリングが行われる。ゲームサーバ４２５は、ネットワーク４１５を介してクライアント４１０から直接ゲームコマンドを受信する、及び／またはビデオサーバシステム４２０を介してゲームコマンドを受信する場合もある。
【００９５】
ビデオソース４３０は典型的には、ストレージ４５５などのコンピュータ可読媒体に記憶された、例えばハードウェア、ファームウェア及び／またはソフトウェアなどのレンダリングロジックを含む。このようなレンダリングロジックは、ゲームステートに基づいてビデオストリームのビデオフレームを形成するように構成される。レンダリングロジックの全てまたは一部は任意選択で、グラフィック処理装置（ＧＰＵ）内に配置される。レンダリングロジックは典型的には、対象間の三次元の空間関係を決定する、及び／またはゲームステート及び視点に基づいて適切なテクスチャーなどを適用するように構成された処理ステージを含む。レンダリングロジックは、クライアント４１０に伝達する前に通常エンコードされる生ビデオを生成する。例えば生ビデオは、Ａｄｏｂｅ  Ｆｌａｓｈ（登録商標）標準、．ｗａｖ、Ｈ．２６４、Ｈ．２６３、Ｏｎ２、ＶＰ６、ＶＣ−１、ＷＭＡ、Ｈｕｆｆｙｕｖ、Ｌａｇａｒｉｔｈ、ＭＰＧ−ｘ．Ｘｖｉｄ．ＦＦｍｐｅｇ、ｘ２６４、ＶＰ６−８、ｒｅａｌｖｉｄｅｏ、ｍｐ３などに従ってエンコードされて良い。エンコーディングプロセスは、リモートデバイス上のデコーダに送達するために任意選択でひとまとめにされたビデオストリームを生成する。このビデオストリームは、フレームサイズ及びフレーム率によって特徴付けられる。典型的なフレームサイズには、８００ｘ６００、１２８０ｘ７２０（例えば７２０ｐ）、１０２４ｘ７６８が含まれるが、任意の他のフレームサイズも使用されて良い。フレーム率は、１秒当たりのビデオフレームの数である。ビデオストリームは、異なるタイプのビデオフレームを含むことができる。例えば、Ｈ．２６４標準は、「Ｐ」フレームと「Ｉ」フレームを含む。Ｉ−フレームは、ディスプレイデバイス上の全てのマクロブロック／ピクセルを更新するための情報を含むのに対して、Ｐ−フレームはそのサブセットを更新するための情報を含む。Ｐ−フレームは典型的にはＩ−フレームよりデータサイズが小さい。本明細書で使用される際、「フレームサイズ」という用語は、フレーム内のピクセルの数を指すことを意味する。「フレームデータサイズ」という用語は、フレームを記憶するのに必要とされるバイトの数を指すのに使用される。
【００９６】
他の実施形態において、ビデオソース４３０は、カメラなどのビデオ記録デバイスを含む。このカメラは、コンピュータゲームのビデオストリームに含まれて良い時間遅れのビデオまたはライブビデオを生成するのに使用されて良い。結果として生じるビデオストリームは任意選択で、レンダリングした画像とスチールカメラまたはビデオカメラを利用して記録された画像の両方を含む。ビデオソース４３０はまた、ビデオストリームに含まれるように予め記憶されたビデオを記憶するように構成されたストレージデバイスを含んでよい。ビデオソース４３０はまた、対象、例えば人間の動作または位置を検出するように構成されたモーションまたは位置感知デバイスと、検出された動作及び／または位置に基づいてゲームステートを特定するまたはビデオを生成するように構成されたロジックとを含む場合もある。
【００９７】
ビデオソース４３０は任意選択で、他のビデオに置かれるように構成されたオーバレイを提供するように構成される。例えばこのようなオーバレイは、コマンドインターフェース、ログイン命令、ゲームプレイヤに対するメッセージ、他のゲームプレイヤの画像、他のゲームプレイヤの配信ビデオ（例えばウェブカメラビデオ）を含んでよい。クライアント４１０Ａがタッチスクリーンインターフェースまたは注視検出インターフェースを含む実施形態では、オーバーレイは、仮想キーボード、ジョイスティック、タッチパッドなどを含む場合がある。オーバレイの一例では、プレイヤの音声が音声ストリームに重ねられる。ビデオソース４３０は任意選択で１つまたは複数の音源をさらに含む。
【００９８】
ビデオサーバシステム４２０が２人以上のプレイヤからの入力に基づいてゲームステートを維持するように構成される実施形態では、各々のプレイヤは、位置及び見る方向を含む異なる視点を有する場合がある。ビデオソース４３０は任意選択で、それぞれの視点に基づいて各々のプレイヤに対して別々のビデオストリームを提供するように構成される。さらにビデオソース４３０は、クライアント４１０の各々に対して異なるフレームサイズ、フレームデータサイズ及び／またはエンコーディングを提供するように構成される。ビデオソース４３０は任意選択で３−Ｄビデオを提供するように構成される。
【００９９】
Ｉ／Ｏ装置４４５はビデオサーバシステム４２０のために、ビデオ、コマンド、情報に関するリクエスト、ゲームステート、注視情報、デバイスモーション、デバイスの位置、ユーザモーション、クライアントの同一性、プレイヤの同一性、ゲームコマンド、セキュリティ情報、音声などを送受信するように構成される。Ｉ／Ｏ装置４４５は典型的には、ネットワークカードまたはモデムなどの通信ハードウェアを含む。Ｉ／Ｏ装置４４５は、ゲームサーバ４２５、ネットワーク４１５及び／またはクライアント４１０と通信するように構成される
【０１００】
プロセッサ４５０は、本明細書で考察されるビデオサーバシステム４２０の種々のコンポーネントの中に含まれる例えばソフトウェアなどのロジックを実行するように構成される。例えばプロセッサ４５０は、ビデオソース４３０、ゲームサーバ４２５及び／またはクライアントクォリファイア（Ｃｌｉｅｎｔ  Ｑｕａｌｉｆｉｅｒ）４６０の機能を果たすために、ソフトウェア命令によってプログラムされて良い。ビデオサーバシステム４２０は任意選択で、プロセッサ４５０の２つ以上のインスタンスを含む。プロセッサ４５０はまた、ビデオサーバシステム４２０によって受信されたコマンドを実行するため、または本明細書で考察されるゲームシステム４００の種々の要素の動作を連携して働かせるために、ソフトウェア命令によってプログラムされて良い。プロセッサ４５０は１つまたは複数のハードウェアデバイスを含んで良い。プロセッサ４５０は電子プロセッサである。
【０１０１】
ストレージ４５５は、非一時的なアナログ及び／またはデジタルデバイスを含む。例えばストレージ４５５は、ビデオフレームを格納するように構成されたアナログストレージデバイスを含むことができる。ストレージ４５５は、例えばハードディスク、光学ディスクまたはソリッドステートストレージなどのコンピュータ可読デジタルストレージを含む場合もある。ストレージ４１５は、ビデオフレーム、疑似フレーム、ビデオフレームと疑似フレームの両方を含むビデオストリーム、音声ストリームなどを記憶するように構成される（例えば適切なデータ構造またはフィルシステムを介して）。ストレージ４５５は任意選択で複数のデバイスの間で分散される。いくつかの実施形態において、ストレージ４５５は、本明細書の別の場所で考察されるビデオソース４３０のソフトウェアコンポーネントを保管するように構成される。このようなコンポーネントは、必要に応じて使えるように設定されるように準備されたフォーマットで保管されて良い。
【０１０２】
ビデオサーバシステム４２０は任意選択で、クライアントクォリファイア４６０をさらに備える。クライアントクォリファイア４６０は、例えばクライアント４１０Ａまたは４１０Ｂなどのクライアントの能力をリモートで判定するように構成される。このような能力は、クライアント４１０Ａ自体の能力だけでなく、クライアント４１０Ａとビデオサーバシステム４２０の間の１つまたは複数の通信チャネルの能力の両方を含むことができる。例えばクライアントクォリファイア４６０は、ネットワーク４１５を介して通信チャネルをテストするように構成されて良い。
【０１０３】
クライアントクォリファイア４６０は、クライアント４１０Ａの能力を手動でまたは自動的に判定する（例えば知る）ことができる。手動の判定には、クライアント４１０Ａのユーザとの通信、及びユーザに能力を提供するように頼むことが含まれる。例えばいくつかの実施形態において、クライアントクォリファイア４６０は、クライアント４１０Ａのブラウザ内の画像、テキストなどを表示するように構成される。一実施形態において、クライアント４１０Ａは、ブラウザを含むＨＭＤである。別の実施形態において、クライアント４１０Ａは、ブラウザを有するゲームコンソールであり、ブラウザはＨＭＤ上に表示することができる。表示される対象は、ユーザが、クライアント４１０Ａのオペレーティングシステム、プロセッサ、ビデオデコーダタイプ、ネットワーク接続のタイプ、ディスプレイ解像度などの情報を入力することをリクエストする。ユーザによって入力されたこの情報は、クライアントクォリファイア４６０に戻るように伝達される。
【０１０４】
自動判定は、例えばクライアント４１０Ａ上での特定のエージェントの実行及び／またはクライアント４１０Ａへのテストビデオの送信によって行われて良い。エージェントは、演算命令、例えばウェブページに埋め込まれた、またはアドオンとしてインストールされたジャバスクリプトを有することができる。エージェントは任意選択でクライアントクォリファイア４６０によって提供される。種々の実施形態において、エージェントは、クライアント４１０Ａの処理力、クライアント４１０Ａのデコーディング及び表示力、遅延時間の確実性及びクライアント４１０Ａとビデオサーバシステム４２０間の通信チャネルの帯域幅、クライアント４１０Ａの表示タイプ、クライアント４１０Ａ上に提示されるファイヤウォール、クライアント４１０Ａのハードウェア、クライアント４１０Ａ上で実行中のソフトウェア、クライアント４１０Ａ内のレジストリエントリなどを突き止めることができる。
【０１０５】
クライアントクォリファイア４６０は、コンピュータ可読媒体に記憶されたハードウェア、ファームウェア及び／またはソフトウェアを含む。クライアントクォリファイア４６０は任意選択でビデオサーバシステム４２０の１つまたは複数の他の要素から隔たった特定のコンピューティングデバイス上に配置される。例えばいくつかの実施形態において、クライアントクォリファイア４６０は、クライアント４１０とビデオサーバシステム４２０の２つ以上のインスタンスの間の通信チャネルの特徴を判定するように構成される。このような実施形態では、クライアントクォリファイアが見いだした情報を使用して、ビデオサーバシステム４２０のどのインスタンスがクライアント４１０の１つに対してストリームビデオを送達するのに最適であるかを判定することができる。
【０１０６】
本発明の実施形態は、手持ち式デバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブルな家庭用電子機器、ミニコンピュータ、メインフレームコンピュータなどを含めた種々のコンピュータシステム構成によって実施することができる。本発明はまた、有線式または無線ネットワークを介して結合されたリモート処理デバイスによってタスクが行われる分散コンピューティング環境において実施することもできる。
【０１０７】
上記の実施形態を念頭において、本発明は、コンピュータシステムに記憶されたデータに関連して様々なコンピュータ実装演算を用いることができることを理解されたい。このような演算は、物理量の物理的な操作を必要とする。本発明の一部を形成する本明細書に記載される演算のいずれもマシン操作に有益である。本発明は、このような演算を実行するためのデバイスまたは装置に関する。このような装置は、必要とされる目的のために特別に構築することができる、または装置は、コンピュータ内に記憶されたコンピュータプログラムによって選択的に始動されるまたは構成された汎用コンピュータである場合もある。詳細には、様々な汎用マシンを、本明細書における教示に従って書かれたコンピュータプログラムと共に使用することができる、または必要とされる演算を実行するためにより特化された装置を構築することがより簡便である場合もる。
【０１０８】
本発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして具現化される場合もある。コンピュータ可読媒体は、データを記憶することができる何らかのデータストレージデバイスであり、このデータはコンピュータシステムによってその後読み取ることができる。コンピュータ可読媒体の例には、ハードディスク、ネットワーク接続ストレージ（ＮＡＳ）、リードオンリーメモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープならびに他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体は、ネットワーク接続されたコンピュータシステム上に分散されたコンピュータ可読有形媒体を含むことができることにより、コンピュータ可読コードは、分散式に記憶され実行される。
【０１０９】
これらの方法工程は特有の順序で記載されるが、他のハウスキーピング工程がこれらの工程の間に行われる場合がある、あるいは工程がわずかに異なる時間に行われるように調整される場合、またはオーバーレイ演算の処理が所望される方法で行われる限り、この処理に関連する様々なインターバルで工程の処理作業が行われることを可能にする特定のシステム内に分散される場合もあることを理解されたい。
【０１１０】
理解を明確にする目的で上述の発明を一部の詳細において記載してきたが、添付の特許請求の範囲の範囲内で特定の変更及び修正を実施することができることは明らかであろう。したがって本実施形態は、限定ではなく、例示とみなすべきであり、また本発明は、本明細書に提示される詳細に限定されるものではなく、記載される実施形態の範囲及び均等物の範囲内で修正される場合がある。
【図１】
2020163226.tif 000003
【図２Ａ】
2020163226.tif 000004
【図２Ｂ】
2020163226.tif 000005
【図２Ｃ】
2020163226.tif 000006
【図３】
2020163226.tif 000007
【図４】
2020163226.tif 000008
【手続補正書】
【提出日】令和2年7月30日(2020.7.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クラウドコントローラを有し、
前記クラウドコントローラに結合されたストレージデバイスを有し、
ネットワークによって前記クラウドコントローラに結合された複数のゲームコンソールを有し、前記複数のゲームコンソールのそれぞれは、
ハードウェアレイヤ、
前記ハードウェアレイヤとインタラクションを行うように構成され、ステートマネージャクライアントを含むオペレーティングシステムレイヤ、
前記オペレーティングシステムレイヤの少なくとも一部及び前記ハードウェアレイヤの一部とインタラクションを行うように構成され、ゲーミングアプリケーションを含むアプリケーションレイヤ、を備えるものであり、
前記ステートマネージャクライアントは、前記ゲーミングアプリケーションが選択された中断ポイントで中断されたとき、前記ゲームコンソールのゲームステートデータをキャプチャし、前記キャプチャしたゲームステートデータを保管するように構成され、
前記選択された中断ポイントは、事前定義された停止ポイントではなく、
前記ゲームステートデータは、前記選択された中断ポイントで再開することが可能な前記ゲームに関する実行可能な状況を再形成するための一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含み、
前記ゲームステートデータは、前記ゲームコンソールに関連するとともにハードウェアマイグレーションのためにキャプチャが必要とされるハードウェアステートデータを少なくとも有する、
クラウドゲーミングシステム。
【請求項２】
前記ハードウェアマイグレーションのためのハードウェアステートデータは、一方のゲームコンソールと他方のゲームコンソールとの間の地理的な差に関して再構成するために用いられる、請求項１に記載のクラウドゲーミングシステム。
【請求項３】
前記ハードウェアマイグレーションのためのハードウェアステートデータは、ハードウェアに保管された任意のデータまたは状況を含む、請求項１又は２に記載のクラウドゲーミングシステム。
【請求項４】
前記ステートマネージャクライアントはさらに、前記保管されキャプチャされたゲームステートデータを前記ゲームコンソールに適用し、前記ゲーミングアプリケーションを前記ゲーミングアプリケーションが中断されたポイントで再開するように構成され、
前記ゲームの再開には、前記ゲームコンソールにゲームステートデータを適用し、実行可能なゲーミングアプリケーションを生成することが含まれる、
請求項１に記載のクラウドゲーミングシステム。
【請求項５】
前記クラウドコントローラは、
複数の記憶されたゲーミングアプリケーションと、
複数のユーザの各々１人に関するアカウントデータを含むユーザアカウントデータベースと、を含む、
請求項１に記載のクラウドゲーミングシステム。
【請求項６】
前記アカウントデータは、複数のユーザのうちの選択されたユーザに関する中断したゲーミングアプリケーション及び前記中断したゲーミングアプリケーションに関する前記ゲームステートデータの保管場所のリストを含む、
請求項５に記載のクラウドゲーミングシステム。
【請求項７】
前記クラウドコントローラは、前記選択されたユーザに関する認証アクセスを判定するように構成された認証マネージャを含む、
請求項６に記載のクラウドゲーミングシステム。
【請求項８】
前記複数のゲームコンソールの各々１つの前記ハードウェアレイヤは、
プロセッサと、
データバスによって前記プロセッサに結合されたグラフィックプロセッサと、
を含む、
請求項１に記載のクラウドゲーミングシステム。
【請求項９】
前記複数のゲームコンソールの各々１つの前記ハードウェアレイヤは、前記データバスに結合されたコプロセッサをさらに含み、
前記複数のゲームコンソールの各々１つの前記コプロセッサは、ゲームステートデータをキャプチャするように構成される、
請求項８に記載のクラウドゲーミングシステム。
【請求項１０】
前記クラウドコントローラ及び前記複数のゲームコンソールの第１の部分は、第１のデータセンタに配置される、
請求項１に記載のクラウドゲーミングシステム。
【請求項１１】
前記クラウドコントローラに結合された前記ストレージデバイスは、ストレージサーバ内に含まれ、
前記クラウドコントローラは、第１のデータセンター内に配置され、
前記ストレージサーバは、第３のデータセンター内に配置される、
請求項１に記載のクラウドゲーミングシステム。
【請求項１２】
前記ゲームステートデータは、アプリケーションステートデータを含む、
請求項１に記載のクラウドゲーミングシステム。
【請求項１３】
クラウドゲーミングシステムにおいてゲームを中断するための方法であって、
第１のクライアントからゲーミングリクエストを受信し、前記ゲーミングリクエストは、クラウドゲーミングシステム内のクラウドコントローラで受信される前記ゲーミングリクエストを受信し、
前記クラウドゲーミングシステム内の第１のゲームコンソールに前記第１のクライアントデバイスを割り当て、
前記第１のクライアントデバイスからゲーム実行リクエストを受信し、
前記第１のゲームコンソール上で前記ゲームを実行し、
前記第１のクライアントデバイスから、前記ゲームを選択された中断ポイントで中断するためのリクエストを受信し、前記選択された中断ポイントは、事前定義された停止ポイントではないものであり、
前記ゲーム内の前記選択された中断ポイントで前記第１のゲームコンソール上の前記ゲームを中断し、
前記第１のゲームコンソール上の前記中断されたゲームに関するゲームステートデータをキャプチャし、
前記ゲームステートデータは、前記選択された中断ポイントで再開することが可能な前記ゲームに関する実行可能な状況を再形成するための一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含み、
前記選択された中断ポイントでの前記ゲームの再開では、前記第１のゲームコンソールまたは他のゲームコンソールのいずれか一方において行うことが可能であり、
前記ゲームステートデータは、前記ゲームコンソールに関連するとともにハードウェアマイグレーションのためにキャプチャが必要とされるハードウェアステートデータを少なくとも有する、
方法。
【請求項１４】
前記ハードウェアマイグレーションのためのハードウェアステートデータは、一方のゲームコンソールと他方のゲームコンソールとの間の地理的な差に関して再構成するために用いられる、請求項１３に記載の方法。
【請求項１５】
前記ハードウェアマイグレーションのためのハードウェアステートデータは、ハードウェア内にハードウェアに保管された任意のデータまたは状況を含む、請求項１３又は１４に記載の方法。
【請求項１６】
前記第１のゲームコンソールは、前記ゲームステートデータをキャプチャし、前記第１のゲームコンソールが前記ゲームの実行を終わらせることを可能にし、その結果、前記第１のゲームコンソールは、別のユーザに割り当てるために利用可能である、
請求項１３に記載の方法。
【請求項１７】
前記クラウドコントローラは、前記第１のゲームコンソールから前記ゲームステートデータをキャプチャする、
請求項１３に記載の方法。
【請求項１８】
更に、前記ゲームステートデータを取り出し、前記ゲームステートデータを前記クラウドゲーミングシステム内に含まれる選択したゲームコンソールに適用し、
前記ゲームにおける前記選択されたポイントで前記ゲームを再開する、
請求項１３に記載の方法。
【請求項１９】
前記ゲームステートデータの前記選択したゲームコンソールへの割り当てに、前記ゲームステートデータのそれぞれの部分を前記選択されたゲームコンソール内のそれぞれの場所に読み込むことが含まれる、
請求項１８に記載の方法。
【請求項２０】
前記選択されたゲームコンソールは、第２のゲームコンソールである、
請求項１８に記載の方法。
【請求項２１】
前記ゲームステートデータのキャプチャでは、アプリケーションステートデータがキャプチャされる、
請求項１３に記載の方法。
【請求項２２】
前記ゲームステートデータのキャプチャでは、
前記ゲームステートデータを保管し、
前記保管されたゲームステートデータの保管場所によって対応するユーザアカウント情報を更新する、
請求項１３に記載の方法。
【請求項２３】
第１のユーザから認証リクエストを受信し、前記認証リクエストは、前記クラウドコントローラにおいて受信され、
前記第１のユーザに関する認証アクセスを判定し、
前記第１のユーザのアカウントデータが前記中断したゲーム及び前記ゲームステートデータの場所を含む場合、前記第１のクライアントデバイスの前記第１のゲームコンソールへの割り当てでは、前記第１のユーザを前記第１のゲームコンソールに割り当て、前記第１のゲームコンソールに中断したゲームステートデータをロードする、
請求項１３に記載の方法。
【請求項２４】
前記第１のユーザから認証リクエストを受信し、前記認証リクエストが前記クラウドコントローラにおいて受信され、
前記第１のユーザに関する認証アクセスを判定し、前記第１のクライアントデバイスの前記第１のゲームコンソールへの割り当てでは、前記第１のユーザを前記第１のゲームコンソールに割り当て、
前記第１のユーザアカウントデータが前記中断したゲーム及び前記ゲームステートデータの場所を含む場合、ゲームステートデータを取り出し、
前記クラウドコントローラにおいてゲームステートデータ共有リクエストを受信し、前記ゲームステートデータ共有リクエストは、前記第１のユーザから受信され、かつ前記第１のユーザのゲームステートデータを第２のユーザと共有するためのリクエストであり、
前記ゲームステートデータを、前記第２のユーザに割り当てられた第２のゲームコンソールと共有する、
請求項１３に記載の方法。