JP7066784B2 - クラウドゲーミングに関するゲームステートセーブ、転送および再開 - Google Patents

クラウドゲーミングに関するゲームステートセーブ、転送および再開 Download PDF

Info

Publication number
JP7066784B2
JP7066784B2 JP2020115573A JP2020115573A JP7066784B2 JP 7066784 B2 JP7066784 B2 JP 7066784B2 JP 2020115573 A JP2020115573 A JP 2020115573A JP 2020115573 A JP2020115573 A JP 2020115573A JP 7066784 B2 JP7066784 B2 JP 7066784B2
Authority
JP
Japan
Prior art keywords
game
state data
user
game console
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020115573A
Other languages
English (en)
Other versions
JP2020163226A (ja
Inventor
ロダリック コーレンブランデル ルーロフ
Original Assignee
ソニー・インタラクティブエンタテインメント エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソニー・インタラクティブエンタテインメント エルエルシー filed Critical ソニー・インタラクティブエンタテインメント エルエルシー
Publication of JP2020163226A publication Critical patent/JP2020163226A/ja
Application granted granted Critical
Publication of JP7066784B2 publication Critical patent/JP7066784B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • A63F13/493Resuming a game, e.g. after pausing, malfunction or power failure
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/79Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/90Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • A63F13/497Partially or entirely replaying previous game actions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5526Game data structure
    • A63F2300/554Game data structure by saving game or status data

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Pinball Game Machines (AREA)
  • Information Transfer Between Computers (AREA)

Description

本出願は、2014年12月31日に提出され、「Game State Save,Transfer and Resume for Cloud Gaming」というタイトルが付けられた米国仮特許出願第62/099,027号の優先権を主張するものであり、あらゆる目的においてその全体が参照により本明細書に組み込まれる。
本発明は、概して、クラウドゲーミング環境に関し、より詳細にはゲームにおけるいずれのポイントあるいはいずれの時点においても進行中のゲームステートをセーブし、その後にゲームの同じポイントでゲームを再開するためのシステム及び方法に関する。
クラウドゲーミングは、インターネットを介することでユーザにとってアクセス可能にネットワーク接続されたサーバのシステムによって推進される。これらのサーバは、複数のユーザのゲーミングセッションをホストする。典型的には、ユーザは、ユーザのゲームプレイをホストするための仮想サーバまたは物理的サーバに割り当てられる。多くのゲームは複雑であり、不確定な時間にわたって継続する可能性がある。ユーザは、多くの様々な理由のためにユーザが休憩を取ることができるように自分のゲームを中断することがよくある。
ゲームは、典型的には、そのゲームにプログラムされた、定期的に事前定義された停止ポイントを含む。例えば事前定義された停止ポイントは、ゲームにおけるアクションの各シーンまたはレベルの終わりであることが多い。このような事前定義された停止ポイントにおいて、ゲームは、到達したレベル、取得した功績などのゲームプレイからのデータをセーブし、他のハウスキーピング機能を行う。停止ポイントの後、あるいはその後の時点のいずれかで、ユーザがゲームをさらにプレイしたいと思う場合、例えば次のレベルまたはステージにおいてゲームシステムはゲームを再開または再起動することになる。ユーザがゲームを中断したいとき、ゲームを中断することはできるが、ゲーム機は静止したままその後のユーザの入力を待つ必要がある。これは当然のことながら、ユーザが短い休憩を取りたい場合である。しかしながらユーザがしばらくの間中断しプレイを停止したい場合、何時間もまたは何日もの間ゲーム機のディスクをスピンし続けてユーザが再開するのを待つのは非効率的であり実用的でもない。
事前定義された中断ポイントの間にあるゲームのコンテンツには、ユーザ固有のプレイのインスタンスに対して特有である独自の複雑でインタラクティブなグラフィック及びアクションが含まれる。独自の複雑でインタラクティブなグラフィック及びアクションは、多数の様々な独自のゲームステートデータにおいて具現化される。ゲームにおける独自の複雑でインタラクティブなグラフィック及びアクションポイントの1つにおけるゲームプレイをセーブすることは、これに対応して複雑であり、様々なハードウェア及びソフトウェアバージョンに互換性がないにより阻まれることも多い。
上記に指摘したように、ユーザのゲームプレイをホストするクラウドゲーミングサーバの中断作業を行うことができるが、それは不必要にクラウドゲーミングサーバの時間及びエネルギーを消費し、また中断したユーザのゲームプレイが中断されている間、任意の他のユーザがクラウドゲーミングサーバを使用することもできなくなる。さらにユーザが自分のゲームプレイを二度と再開しない場合、サーバは二度と復帰しないユーザに専用のものとなってしまう。その結果、現在の技術は、ゲームプレイの中断を事前定義された停止ポイントに限定している。
加えて、ユーザが、停止ポイント(すなわち戦闘の終わり、そのレベルの終わり、そのシーンの終わりなど)より前のゲームにおける特定のポイントでゲームプレイを停止する場合、ゲームプレイは最後のセーブした停止ポイント(すなわち開始したレベルより前の状態)にリセットされる場合がある。このようなリセットは、最も最近通過した事前定義された停止ポイントの間のユーザのゲームプレイを消去することになる。
本発明の実施形態は、このような背景のもとになされたものである。
概して、本発明は、進行中のゲームをゲームにおけるいかなるポイントでもゲームを中断し、かつその後のいずれかの時にゲームの同じポイントでゲームを再開するためのシステム及び方法を提供することによって、このような必要性を満たす。これらの実施形態によって、中断のそのポイントにおけるゲームステートをセーブすることが可能になる。中断されたゲームステートは、ユーザが再開することを選んだときにゲームステートを再構築するのに十分なデータと共にセーブされる。ゲームが中断される間、ゲームステートが収集されストレージにセーブされるので、クラウドゲーミングシステムやサーバは、もはやこの状況をアクティブメモリまたはハードウェアのレジスタに記憶しない。これによりこのシステムを他のゲームプレイまたは処理作業のために開放することが可能になる。さらにゲームプレイの再開はいつでも行うことができ、また任意の離れたクライアントからも行うことができる。再開が望まれるとき、ユーザは単に中断されたゲームを選択するだけでよく、システムがそのゲームステートをロードする。ゲームステートのロード作業には、複数のファイル及びデータ構造からゲームステートを生成する作業が含まれるため、再構築されたゲームステートは、ゲームが中断されたときと全く同じ状況またはほぼ同じ状況に機械を戻すことになる。
一実施形態において、ゲームが中断される際、セーブされたゲームステートはまた、中断が始動されたそのときより前の一定の時間もセーブする。このように追加の時間量をセーブすることによって、中断より前のゲームで起きたことをユーザが取り戻すまたは再導入することが可能になる。以下に記載するように、ゲームステートのセーブ作業は、一般にゲームデザイナーによって事前に指定されてはいない時に生じるので、ハードウェアレジスタ、バッファ、メモリなど、ならびにソフトウェアバッファ、レジスタ及びファイルからステートデータを収集するための処理作業を完了させる必要がある。このようなステートデータの収集によって、別のクラウドゲーミングシステムがゲームプレイを再開することが可能になり、この場合ステートデータが適切なハードウェア及びソフトウェアロケーションにロードされた後、それを終わらせるため、アクティブなインタラクティブゲームプレイを再開することができる。本発明は、プロセス、装置、システム、コンピュータ可読媒体またはデバイスなど含めた多くの方法で実施することができることを理解されたい。本発明のいくつかの進歩的な実施形態が以下に記載される。
一実施形態は、ゲームを中断し、ゲームを再開する機能を含むクラウドゲーミングシステムを開示する。クラウドゲーミングシステムは、クラウドコントローラ、クラウドコントローラに結合されたストレージデバイス、及びネットワークによってクラウドコントローラに結合された複数のゲームコンソールを含む。ゲームコンソールの各々は、ハードウェアレイヤ、オペレーティングシステムレイヤ及びアプリケーションレイヤを含むことができる。オペレーティングシステムレイヤは、ハードウェアレイヤとやり取り、あるいはインタラクションするように構成され、ステートマネージャクライアントを含む。アプリケーションレイヤは、オペレーティングシステムレイヤの少なくとも一部及びハードウェアレイヤの一部とインタラクションするように構成される。アプリケーションレイヤは、特定のゲームを含み、ステートマネージャクライアントは、ゲームが中断されたときゲームコンソールのゲームステートデータをキャプチャし、キャプチャしたゲームステートデータを保管するように構成される。ステートマネージャクライアントはまた、同一のまたは異なるゲームコンソールにゲームステートデータを適用し、ゲームが中断されたポイントでゲームを再開することもできる。
別の実施形態では、クラウドゲーミングシステムにおいてゲームを中断する方法を提供する。本方法は、クラウドゲーミングシステムに含まれる第1のゲームコンソール上でゲームをプレイし、ゲーム内の選択されたポイントでゲームを中断する。中断されたゲームに関してゲームステートデータがキャプチャされる。ゲームステートデータを取り出し、選択したゲームコンソールにゲームステートデータを適用し、選択されたゲームコンソール上で、ゲームにおける選択されたポイントでゲームを再開することによって中断されたゲームを再開することができる。ゲームステートデータはまた、異なるユーザ間で共有され、第1のユーザが自分のゲームステートを1つまたは複数の他のユーザと共有することを可能にすることもできる。
本発明の他の態様及び利点は、本発明の原理を一例として図示する添付の図面と併せて、以下の詳細な記載から明らかになるであろう。
本発明は、添付の図面と併せて、以下の詳細な記載によって容易に理解されるであろう。
本開示の実施形態を実施するための簡素化されたクラウドゲーミングシステムの図である。 本開示の実施形態を実施するための、クラウドゲーミングステートセーブ、再開及び転送機構において行われる方法工程の簡素化された概要を示すフローチャートである。 本開示の実施形態を実施するための、ユーザのクラウドゲーミングシステムダッシュボードの簡素化されたグラフィカルユーザインターフェースを示す図である。 本開示の実施形態を実施するための、再開ポイントを共有及びセーブするための機能がユーザに与えられた一例を示す図である。 本開示の実施形態を実施するための、クラウドゲーミングステートセーブ、再開及び転送において行われる方法工程を示すフローチャートである。 本発明の種々の実施形態によるゲームシステムのブロック図である。
ゲームにおけるいかなるポイントでも進行中のゲームステートをセーブし、その後のいずれかの時にゲームの同じポイントでゲームを再開するためのシステム及び方法に関するいくつかの例示の実施形態を次に記載する。本発明は、本明細書に記載される特有の詳細の一部または全てがなくても実施され得ることは当業者に明らかであろう。
クラウドゲーミングは、極めて人気のあるゲーミング環境である。クラウドゲーミングによって単独プレイヤー及び複数プレイヤーのゲームプレイが可能になり、またユーザが、リッチインタラクティブコンテンツを含むゲームならびに実体験のように感じる三次元(3D)グラフィックなどの複雑でコンテンツリッチなゲームをプレイすることも可能になる。そのようなコンテンツリッチなゲームは、専用プロセッサ、コプロセッサ及びグラフィックプロセッサを有し、複雑で高性能であり、多くの場合極めて特化されたコンピュータを必要とする。クラウドゲーミングはまた、性能の低下を回避するために待ち時間を短縮し、待ち時間を監視するように十分に設計されたサーバプロセスも必要とする。付け足される利点として、クラウドゲーミングによって、ユーザがさらにずっと簡素なクライアントコンピュータにおいてコンテンツリッチなゲームをプレイすることが可能になる。一例として、ユーザは、ローカルネットワーク及び/またはインターネットを介してクラウドゲーミングシステムと通信することが可能なタブレット、スマートフォンまたは他の手持ち式コンピューティングデバイスを利用してクラウドゲーミングシステム上でゲームをプレイすることができる。
クラウドゲーミング環境において、未来の何らかの不明確な時点でゲームに戻るために、特定のゲームセッションをユーザのためにオープンな状態に単に維持し続けることは、実用的なオプションではない。特定のゲームセッションをユーザに対してオープンな状態に無期限に維持することは、クラウドゲーミングプロバイダにとってコストがかさむことになる。このようなコストには、クラウドゲームコンソールによる電力の使用を含み、別のユーザが同じゲームコンソールを利用することを妨げることになる。一実施形態においてクラウドゲーミングシステムは、ゲームセッション毎にユーザに専用のゲームコンソール(例えばクラウドゲーミングサーバによって管理される)を割り当てることができる。これにより、以前のユーザがゲームコンソールを使用するように割り当てられなければ、同一のゲームコンソールを第2のユーザに割り当てることもできる。ある期間にわたって複数のユーザが1つのゲームコンソールを共有するが、彼らは時間内の同一ポイントにおいて同一のゲームコンソールを使用することはない。
開示されるクラウドゲーミングステートセーブ、再開及び転送技術により、ユーザが選択するゲームプレイにおいていつでも自分のゲームプレイセッションを中断することがユーザにとって可能になる。そのシーンの後で、ユーザのゲームステートが記憶され、その後ユーザのクラウドゲームコンソールが別のユーザに対して解放される。クラウドゲーミングステートセーブ、再開及び転送技術は、ユーザの割り当てられたゲームコンソールの使用をゲーミングサーバが別のユーザに転送することができるので、エネルギーを節約する。
ユーザが自分のゲームを再開する準備が整ったとき、ユーザのセーブされたゲームステートが取り出され、同一のまたは異なるクラウドゲームコンソールにロードされる。ユーザはその後、自分のゲームプレイを自分が中断したのと同じポイントで再開することができる。ユーザは、同一または異なるクライアントデバイスを利用して自分のゲームステートを再開することができる。ユーザは、同一または異なるクラウドゲーミングデータセンターを利用して自分のゲームステートを再開することができる。ユーザは、世界の地理的に様々な地域から自分のゲームステートを再開することができる。
開示されるクラウドゲーミングステートセーブ、再開及び転送技術は、他の用途も同様に有する。例えば、ユーザのゲーミングセッションが他のユーザの間で共有されることで、他のユーザが同一のゲーミングセッションを体験することが可能になる、または場合によって他のユーザ(別の離れた場所におり、クラウドゲーミングサービスに接続される人)を助けることも可能になる。一例として、第1のユーザがゲームプレイを中断し、ゲームステートデータを第2のユーザに渡し、(例えば共有する)、第2のユーザが第1のユーザにとって難しい戦闘を完了し、その後ゲームを再び中断し、新たなゲームステートデータを第1のユーザに渡して戻す。1つの実施形態では、ユーザは、コントローラ上の共有ボタンまたはオプションを選択する、あるいは他のユーザが接続してセーブしたゲームステートを共有することができる。開示されるクラウドゲーミングステートセーブ、再開及び転送技術は、多くの他の用途も同様に有する。ユーザがゲームステートを共有する場合、共有物を受け取ったユーザが、クラウドゲーミングシステムによって別のゲームコンソール(すなわち共有するユーザのゲームコンソールとは異なる)に割り当てられる場合ある。各々の共有の前に、その状況がセーブされ、その状況が開始される際、ユーザがその時々でどのゲームコンソールに割り当てられるかに応じて、それが同一のゲームコンソール上で再開される場合、または別のゲームコンソール上で再開される場合がある。
図1は、本開示の実施形態を実施するための簡素化されたクラウドゲーミングシステム100である。クラウドゲーミングシステム100は、クラウドコントローラ130と、複数のゲームコンソール112A-nと、1つまたは複数のゲームコンソールマネージャ113とストレージサーバ110とを含む。クラウドコントローラ130、複数のゲームコンソール112A-n、1つまたは複数のゲームコンソールマネージャ113及びストレージサーバ110は、1つまたは複数のデータセンター111、115、117に配置することができる。クラウドコントローラ130、複数のゲームコンソール112A-n及びストレージサーバ110は、ローカルエリアネットワーク104A、104B、104C及び/またはインターネット102によって一緒に結合されている。複数のゲームコンソール112A-n及びゲームコンソールマネージャ113は、1つのデータセンター115内に共同に配置される、または2つ以上のデータセンターの間で分散される場合もある。
1つまたは複数のゲームコンソールマネージャ113が、ゲームコンソール112A-nの各々のラック内に含まれてよい。ゲームコンソールマネージャ113は、1つまたは複数のハードウェア及び/またはソフトウェアアーキテクチャに応じて1つまたは複数のゲームコンソール112A-nを管理する。ゲームコンソールマネージャ113は、ネットワーク接続115及び/または任意選択の汎用入出力、ユニバーサルシリアルバスまたはゲームコンソールに対する電力を活性化するための等価な制御接続を利用してゲームコンソール112A-nに物理的に接続される。ゲームコンソールマネージャ113は任意選択で、割り当てられたゲームコンソールとユーザのクライアントデバイスの間にストリーミングセッションを設定し、これを管理するといった追加の役割を含むことができる。
ローカルストレージサーバ116が任意選択で1つまたは複数のゲームコンソール112A-nと共に同一のデータセンター115内に共同に配置される場合もある。ローカルストレージサーバ116は、複数のゲームコンソール112A-n及び/またはクラウドコントローラ130によって利用される、またはそこから受信したデータ116Aを保管することができる。データセンター111、115、117は、地理的に隔てられる場合がある。一例として第1のデータセンター111と第3のデータセンター117をカリフォルニア州、ロスアンジェルスに配置することができ、第2のデータセンター115を、スウェーデン、ストックホルムに配置することもできる。
クラウドコントローラ130及び/またはゲームコンソールマネージャ113は、複数のゲーム及び複数のゲームコンソール112A-nの1つまたは複数に対してダウンロードされ得る他のアプリケーションを保管するためにゲームデータベース132を含む。クラウドコントローラ130はまた認証マネージャ135も含む。認証マネージャ135は、第1のユーザが正当なアカウント、及びクラウドゲーミングシステム100に対して認証されたアクセス権を有するかを判定する。第1のユーザのアカウント情報はユーザアカウントデータベース133に含まれる。1つまたは複数の実施形態では、クラウドコントローラ130はまたステートマネージャ134を含むこともできる。ステートマネージャ134はまた、ゲームコンソール112A-nの各々に含まれるステートマネージャクライアント144と共に機能して、開始される際、各々のゲームコンソールに関するゲームステートデータをキャプチャする。
ストレージサーバ110は、クラウドゲーミングシステム100に関するストレージ施設を提供する。ストレージサーバ110は、クラウドゲーミングシステム100によって必要とされ得るように、ユーザのステートデータ114’などのデータを保管するための1つまたは複数のストレージデバイス110A、110Bを含む。1つまたは複数のストレージデバイス110A、110Bは、任意の好適な記憶媒体であってよく、例えばハードディスクドライブ、ソリッドステートドライブまたは光学ドライブなどであって良い。
ゲームコンソール112A-nの各々は、ハードウェアレイヤ143と、ハードウェアレイヤの上に重なるオペレーティングシステムレイヤ142とを含む。アプリケーションレイヤ141がオペレーティングシステムレイヤ142の上に重なる。アプリケーションレイヤ141は、ゲームコンソール112A上で稼働するゲーム及び他のアプリケーションを含む。ハードウェアレイヤは、メインプロセッサ145、コプロセッサ146、グラフィックプロセッサ(GPU)147、メモリシステム148、入出力システム149、ネットワークインターフェースカード150、ならびにゲームコンソール112Aの作動に必要とされ得る多くの他の物理的周辺機器及び仮想周辺機器を含む。メインプロセッサ145、コプロセッサ146、グラフィックプロセッサ(GPU)147、メモリシステム148、入出力システム149、ネットワークインターフェースカード150、他の周辺機器は1つまたは複数のデータバス151によって一緒に結合される。
少なくとも1つの実施形態では、オペレーションシステムレイヤ142は、ステートマネージャクライアント144を含む。他の実施形態では、ステートマネージャクライアント144は、アプリケーションレイヤ141内の1つまたは複数のアプリケーションの中に含まれる場合もある。ステートマネージャクライアント144はまた、オペレーションシステムレイヤ142及びアプリケーションレイヤ141の両方に常駐する部分を有するように実装される場合もある。ステートマネージャクライアント144は、開始される際、ゲームコンソール112Aのゲームステートデータ114をキャプチャすることができる。キャプチャされたゲームステートデータ114は、ローカルストレージサーバ116及び/またはストレージサーバ110内にゲームステートデータ114’として保管することができる。保管されたゲームステートデータ114’の保管場所は、ユーザアカウントデータベース133内の第1のユーザアカウント情報に加えるためにクラウドコントローラに提供される。
クライアントデバイス122A、122Bは、インターネット102またはローカルネットワーク104A-Cを介してクラウドゲーミングシステム100に対するアクセス権を与える。クライアントデバイス122A、122Bは、インターネット102またはローカルネットワーク104A-Cにアクセスすることが可能な任意の好適なプラットフォームであって良い。一例として、クライアントデバイス122A、122Bは、パーソナルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、手持ち式ゲーミングデバイス、手持ち式コンピューティングデバイス、例えばタブレットコンピュータまたはスマートフォンなど、あるいは任意の他のコンピューティングプラットフォームであって良い。第1のクライアントコンピューティングデバイス122A及び第2のクライアントコンピューティングデバイス122Bは、複数の異なる地理的に離れた場所で使用することができる。一例として、第1のクライアントコンピューティングデバイス122Aは、自分の家で、オフィスで、及び旅行中でも第1のユーザによってインターネット102及びクラウドゲーミングシステム100にアクセスするのに使用されるタブレットコンピュータであって良い。同様に第2のクライアントコンピューティングデバイス122Bは、自分の家で、オフィスでまたはインターネットアクセス権を有する他の場所でインターネット102及びクラウドゲーミングシステム100にアクセスすることが可能なノートブックコンピュータであって良い。
一実施形態では、第1のユーザは、第1のクライアントコンピューティングデバイス122Aを使用してインターネット102を介してクラウドコントローラ130にアクセスすることができる。認証マネージャ135が、第1のユーザを認証し、第1のユーザに許されたアクセスレベルを判定する。クラウドコントローラ130及び/またはゲームコンソールマネージャ113が、第1のユーザを現在のクラウドゲーミングセッションに関してゲームコンソールA 112Aに割り当て、ゲーム及びアプリケーションデータベース132からの認証されたアプリケーション及びゲームを含む認証されたアクセスレベルを提供する。クラウドコントローラ130及び/またはゲームコンソールマネージャ113はまた、ゲーム及びアプリケーションデータベース132から割り当てられたゲームコンソールA 112Aに認証済みのゲーム及び他のアプリケーションを転送することもできる。一実施形態では、割り当てられたゲームコンソールA 112Aは、ゲーム及びアプリケーションデータベース132にアクセスして認証済みのゲーム及び他のアプリケーションを割り当てられたゲームコンソールAに転送することができる。
開示されるクラウドステートセーブ、再開及び転送技術はとりわけ、クラウドゲーミング目的に有益であるが、その理由は、ゲームステートを中断し復元することに伴う大量のデータが存在するためである。クラウドゲーミングシステム100は、開示されるクラウドゲーミングステートセーブ、再開及び転送技術に十分に適するが、その理由は、クラウドゲーミングシステムが、高速ネットワーク104A-Cを利用して世界中に接続された何千ものゲーミングコンソール112A-nを含むためである。
クラウドゲーミングステートセーブ、再開及び転送技術及び方法の多数の実施形態が本明細書に開示される。1つの手法は、フルハードウェアステートデータまたはフルアプリケーションステートデータの少なくとも一方をゲームコンソール間で転送することである。以下は、クラウドゲーミングステートセーブ、再開及び転送機構がどのように機能することができるかの記述である。ハードウェアステートデータ及びアプリケーションステートデータのコピーをどのように作成するかの詳細な記述も提供される。
クラウドゲーミングステートセーブ、再開及び転送機構は、1つのゲームコンソールから別のゲームコンソールへのゲームステートデータの転送を可能にする。図2Aは、本開示の実施形態を実施するために、クラウドゲーミングステートセーブ、再開及び転送機構において実行される方法工程200の簡素化された概要を示すフローチャートである。工程205において、第1のユーザが、クラウドゲーミングシステム100におけるゲームコンソール112A上でゲームをプレイしている。工程210において、第1のユーザがゲームにおける選択された中断ポイントでゲームを中断することを選択する。選択された中断ポイントは、事前定義されたゲームの中断ポイント以外のゲームにおけるいかなるポイントでもよい。クラウドゲーミングシステム100はまた、1つまたは複数のクラウドゲーミングシステム管理の理由によりユーザのゲームを自動的に中断する場合もある。一例として、クラウドコントローラ130が、所定の活動しない時間制限を超える時間にわたって第1のユーザからの活動を検出しない場合、またはクラウドコントローラが、第1のユーザのクライアントデバイス112Aからのネットワークの切り離しを検出した場合などである。
一実施形態において、クラウドコントローラは、利用可能なゲーム及び利用可能なゲームサーバを認知しているが、容量の理由により、クライアントデバイス112A-Bとの継続的なインタラクションの管理は、典型的には、割り当てられたゲームコンソールおよび/またはゲームコンソールマネージャにおけるストリーミングソフトウェアに依存している。ゲームコンソールマネージャ、割り当てられたゲームコンソールまたはクライアントデバイスは、アクティブではないことを判定することができる。ユーザがアクティブでないことは、例えば所定の時間にわたってボタンが押されないことなどによってクライアントデバイスによって判定することができる。ゲームコンソールマネージャ及び/または割り当てられたゲームコンソールも同様にユーザがアクティブではないことを識別することができる。一例として、クライアントデバイスが所定の時間にわたるユーザがアクティブではないことを検出した場合、クライアントデバイスは、割り当てられたゲームコンソール及び/またはゲームコンソールマネージャに切断メッセージを送信する。この切断メッセージはまた、例えばユーザが全く活動していないなどの切断メッセージに関する理由を含む場合もある。割り当てられたゲームコンソール及び/またはゲームコンソールマネージャがこの切断メッセージを受信すると、ゲームを停止する、ユーザデータを保管する、ゲームステートデータをキャプチャするなどのストリーミングセッションの残りの部分を停止するようなプロセスが開始される。一実施形態では、切断メッセージは割り当てられたゲームコンソール及び/またはゲームコンソールマネージャにおけるストリーミングソフトウェアによって受信され、このストリーミングソフトウェアが、ゲームコンソールマネージャに対して停止メッセージを発行し、ゲームコンソールマネージャが停止プロセスを管理する。
ユーザの切断は最終的に、そのアーキテクチャに応じてクラウドコントローラに通知される場合もある。一実施形態において、クラウドコントローラは、ユーザが現在ストリーミング中であるかどうかを監視または追跡することができる(例えば課金目的で)、あるいはユーザが2つ以上の場所から自分のセーブしたデータにアクセスする場合、データの破損が生じる可能性があるため、ユーザが何度もストリーミングするのを阻止することもできる。
第1のユーザのゲームステートデータが工程215においてキャプチャされ保管される。第1のユーザのゲームステートデータがキャプチャされ保管された後、ゲームコンソール112Aを第2のユーザのために解放することができる。ゲームステートデータは、ハードウェアステートデータ及び/またはアプリケーションステートデータを含む。ゲームステートデータはまた、ゲームの選択した中断ポイントでゲームを再構築するのに必要であり得る履歴依存データ及びプロセスデータも含んでいる。履歴依存データ及びプロセスデータは、選択された中断ポイントで再開することが可能な実行可能なゲーミングアプリケーションを形成するのに必要な一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造の形態であって良い。一時的メタデータ及びユーザインタラクティブヒストリカルメタデータの例には、カラーデータ、テクスチャデータ、頂点データ、フラグメンテーションデータ、アートアセット、ドローイングデータ、シェーディングデータ、ライティングデータ及びその他などのグラフィックデータが含まれる。一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータはまた、種々のバッファ及びキャッシュのコンテンツ及びステートならびにゲームのオペレーションを連携させるのに必要な種々のカウンター及びタイマーの状況も含むことができる。ゲームステートデータをキャプチャすることはまた、第1のユーザの選択した中断ポイントでゲームにおけるそのシーンの現在の画像を取り込むことを含むこともできる。
しばらくしてから、工程220において、第1のユーザが中断したゲームを再開することを選び、保管した第1のユーザのゲームステートデータがキャプチャされ、割り当てられたゲームコンソールにロードされ、行程225において、ゲームの中断ポイントでゲームが再開される。ユーザは、最初にユーザがそのゲームと共に元々使用していたものと同一のゲームコンソール112Aにおいてゲームを再開することができる。あるいは第1のユーザは、別のゲームコンソール112Bにおいてゲームを再開することもできる。第1のユーザはまた、第2のユーザが第1のユーザのゲームステートデータにアクセスすることを認証することで、第2のユーザが第1のユーザの中断したゲームを再開することを可能にすることもできる。ゲームの再開には、選択したゲームコンソール上にゲームステートデータを適用することが含まれる。ゲームステートデータは、選択された中断ポイントで再開することが可能な実行可能なゲーミングアプリケーションを形成するのに必要な一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含むことができる。
図2Bは、本開示の実施形態を実施するための、ユーザのクラウドゲーミングシステムダッシュボード250の簡素化された図式のユーザインターフェースである。クラウドゲーミングシステムダッシュボード250は、新たなゲームを選択するためのオプション252と、ゲーミングトーナメントにおけるユーザの現在の順位を調査するためのオプション254と、ユーザのゲーミング履歴を見直すためのオプション256と、ユーザの友達を更新するためのオプション258と、他のオプション260及びユーザアカウントを更新するためのオプション262とを含む。オプションの各々は、選択したオプションを実行するためにユーザを対応するスクリーンに移動する。
クラウドゲーミングシステムダッシュボード250はまた、中断したゲームメニュー270も含むことができる。中断したゲームメニュー270は、中断したゲーム及び中断したゲームを再開または削除するためのオプションのリストを含む。ユーザは、2つ以上の中断したゲームを有することができ、いつでも及び自分が選んだ何らかの理由のためにゲームを中断することができることに留意されたい。表示されるメニューオプションを選択するためのポインター280もクラウドゲーミングシステムダッシュボード250スクリーンに示される。
クラウドゲーミングステートセーブ、再開及び転送は、キャプチャを提供し、一つのゲームコンソールから別のゲームコンソールへのユーザのゲームステートの転送を可能にする。ユーザのゲームステートは、ユーザがゲームを中断したときのユーザのゲームコンソールのハードウェアステートデータ及び/またはアプリケーションステートデータの一方または両方を含むことができる。
図2Cは、ゲームAのセーブしたステートを共有するための機能290がユーザに与えられた一例を示す。システムはまた、ユーザがボブ292と共にセーブしたゲームステートのデータをセーブし、その後、ボブによって行われた何らかのセーブされた中断ポイントまたは状況から292を再開するための能力が備わっている。また、ボブが特定のレベルを完了しセーブする、またはそのレベルが完了したことをユーザに知らせ、これにより次のレベルの再開を可能にすることも可能である。さらに図2Cには、ゲームBにおける中断ポイントの履歴情報294をセーブするためのオプションが示される。ユーザが複数回中断した場合、ユーザは、最後にセーブした中断ポイントのみではなく、このようなそれより前の中断ポイントで再開することも可能である。いくつかの実施形態において、ストレージスペースにセーブする履歴の目的で特定の数の中断ポイントがセーブされる、またはユーザにセーブした中断ポイントをダウンロードする能力が備わっている場合もある。さらにユーザは、2人以上のユーザと中断ポイントを共有することが可能な場合もある。例えばユーザは、複数のユーザ(例えば友達)とゲームAにおける中断ポイントを共有することで、特定のレベルにおいて最高点を得点し、最高のトロフィーを獲得するなどした人を知ることもできる。その後ユーザは、どの友達の中断ポイントから引き継ぎたいか、またはどの友達の中断ポイントから再開したいかを選択することができる。
図3は、本開示の実施形態を実施するためのクラウドゲーミングステートセーブ、再開及び転送において行われる方法工程300を示すフローチャートである。工程305において、第1のユーザがクラウドゲーミングシステムクラウドコントローラ130にアクセスする。認証マネージャ135が、ユーザアカウントデータベース133に問い合わせ、第1のユーザのログインアクセス情報をユーザアカウントデータベース133内の第1のユーザのアカウント情報と比べることによって、このユーザが有効なアカウント及び第1のユーザの認証済みのアクセス権を有することを確認する。第1のユーザは、クライアントデバイス122Aを介してクラウドコントローラにアクセスすることができる。
クラウドコントローラ130が、工程310において第1のユーザをゲームコンソール112Aに割り当てる。一実施形態では、第1のユーザのゲームコンソール112Aへの割り当ては、第1のユーザの予め中断したゲームのいずれかを割り当てられたゲームコンソール112Aに自動的にロードすることを含むことができる。第1のユーザのゲームコンソール112Aへの割り当てはまた、第1のユーザのクラウドゲーミングシステムダッシュボード250スクリーンの表示を含むことができる。一実施形態では、ゲームコンソールマネージャが、第1のユーザをゲームコンソール112Aに割り当てる場合もある。クラウドコントローラが認証を行い、ゲームコンソールマネージャがゲームコンソールを始動し(例えば電力を印加する)、ゲームデータ、ユーザデータ、ゲームステートデータなどの任意の必要とされるデータを転送し、割り当てられたゲームコンソールに対してログインシーケンスを作動させる。あるいは割り当てられたゲームコンソールは、ゲームデータ、ユーザデータ、ゲームステートデータなどの任意の必要とされるデータを、ユーザデータ及び/またはゲームコンソールマネージャ及び/またはクラウドコントローラ130によって指示される対応する保管場所から取り出すこともできる。
工程315において、第1のユーザがゲームまたはアプリケーションを選択し、割り当てられたゲームコンソール112A上で実行する。割り当てられたゲームコンソール112Aは、1つまたは複数のクラウドゲーミングサーバにおける多くのゲームコンソールのうちの1つであってよい。一実施形態では、第1のユーザの割り当てられたゲームコンソール112Aは、ゲームコンソールの特定のタイムシェアに限定される場合もあり、この場合第1のユーザは、割り当てられたゲームコンソール112Aの稼働時間の一部のみに配分される。ゲームコンソール112Aは、1つまたは複数のタイムシェアを提供することができ、タイムシェアの各々は、それぞれのユーザに割り当てることができるため、複数のユーザが同時に1つのゲームコンソールを利用することが可能になる。
工程320において、そのアプリケーションにおける所定の中断ポイント以外の特定のポイントでゲームにおいて中断が開始される。例えば第1のユーザは、中断リクエストを開始して自分のストリーミングゲームセッションを中断することができる。あるいはクラウドコントローラ130が、事前選択された不活動時間制限を超える第1のユーザによる不活動のために中断を開始することもできる。コストの理由のために、クラウドコントローラ130が自動的に第1のユーザのゲームコンソール112Aを中断することで、第1のユーザのゲームコンソールを解放し、第2のユーザが利用できるようにすることができる。第1のユーザは、クラウドコントローラ130及び第1のユーザの割り当てられたゲームコンソール112Aの一方またはその両方に対して中断リクエストを通知することによって中断を開始することができる。上記に指摘したように、中断工程は、割り当てられたゲームコンソール、ゲームコンソールマネージャ、クラウドコントローラ130及びストリーミングソフトウェアの中で分配されて良い。
工程325において、割り当てられたゲームコンソール112Aの第1のユーザの現在のゲームステートデータ114がキャプチャされる。キャプチャされた第1のユーザのゲームステートデータ114は、ハードウェアステートデータまたはアプリケーションステートデータ、あるいはハードウェアステートデータとアプリケーションステートデータの両方であって良い。ハードウェアステートデータ及びアプリケーションステートデータならびにハードウェアステートデータ及びアプリケーションステートデータのための方法及びシステムを以下でより詳細に記載する。
工程330において、キャプチャされた第1のユーザのゲームステートデータ114が後に取り出すために保管される。上記に記載したように、キャプチャされた第1のユーザのゲームステートデータ114は、保管されるゲームステートデータ114’としてローカルストレージサーバ116及び/またはストレージサーバ110に保管することができる。ストレージサーバ110及びローカルストレージサーバ116は、複数のゲームコンソール及び/または複数のユーザに関してゲームステートデータを効率的に保管することができる。工程335において、第1のユーザの保管されたステートデータ114’の場所が、ユーザアカウントデータベース133における第1のユーザのアカウントデータに対応付けられる。これにより第1のユーザのアカウント情報が、第1のユーザの中断したゲームステートデータの保管場所を含むことが可能になる。
しばらくしてから、工程340において、上記の工程320においてそれが中断されたポイントで第1のユーザの中断したゲームを再開するためのリクエストが開始される。再開リクエストは、第1のユーザまたは認証済みの第2のユーザから発生する場合がある。第1のユーザまたは認証済みの第2のユーザは、ゲームコンソール112Bなどの割り当てられたゲームコンソールを介して再開リクエストを発行することができる。
第1のユーザが自分の最初のゲーミングセッションをログオフさせる場合、あるいはクラウドコントローラが最初のゲーミングセッションを終わらせる、あるいは第1のユーザがクラウドコントローラ130またはゲームコンソールマネージャ113または割り当てられたゲームコンソールへのネットワーク接続における遮断を感じた場合など、それ以外の方法で自分の最初のゲーミングセッションが中断された場合、このとき第1のユーザは、上記の工程305において記載したようにクラウドゲーミングサービスにアクセスし直すことが要求され、特定のゲームコンソールが割り当てられて良い。第1のユーザにゲームコンソール112Bを割り当てられると、1つまたは複数の第1のユーザの中断したゲームが自動的に割り当てられたゲームコンソールにロードされて良い。第1のユーザがゲームコンソール112Bに割り当てられ、第1のユーザの中断したゲームの1つが割り当てられたゲームコンソールにロードされる際、割り当てられたゲームコンソールは、中断したゲームを再開する準備が整ったことの指示を第1のユーザに対して提供し、上記の工程320においてゲームが中断されたポイントで中断したゲームを再開するためのアクセス権を第1のユーザに与えることができる。
第1のユーザはまた、保管したゲームステートデータ114’を共有または送信することができる、あるいはそうでなければ上記に記載したように第2のユーザに対して保管したステートゲームデータ114’に対するアクセス権を認証することもできる。ゲームを再開するためのリクエストは、例えばゲームコンソール112Bなどの割り当てられたゲームコンソールからクラウドコントローラ130において受信される。
再開リクエストを受信すると、クラウドコントローラ130は、第1のユーザのアカウント情報をユーザアカウントデータベース133に問い合わせ、工程345において、ユーザの中断したゲームに関して保管した第1のユーザのステートデータ114’の保管場所を特定する。クラウドコントローラ130及び/またはゲームコンソールマネージャ113は、保管した第1のユーザのゲームステートデータ114’を取り出し、工程250において保管した第1のユーザのゲームステートデータ114’をリクエストするゲームコンソール112Bに送信する。工程355において、リクエストするゲームコンソール112Bは、保管した第1のユーザのゲームステートデータ114’を受信する。
工程360において、リクエストするゲームコンソール112Bは、保管した第1のユーザのゲームステートデータ114’を適用して、再開後のゲームステートデータ114”を生成し、中断ポイントでゲームを再構築する。中断ポイントにおけるゲームの再構築は、リクエストするゲームコンソール112Bをゲームコンソール112Aと同等な構成にし、そのゲームを上記の工程320においてゲームが中断されたときと同等な構成にする。中断ポイントにおけるゲームの再構築は、リクエストするゲームコンソール112Bにおける複数のそれぞれの態様及び場所に再開後のゲームステートデータのそれぞれの部分を読み込むことを含むことができる。一例として、中断ポイントにおけるゲームの再構築は、ゲームが中断されたポイントでゲームを再構築するのに必須であり得る全ての履歴依存データ及びプロセスデータを読み込むことを含むことができる。ゲームを再構築するのに必須であり得る依存データ及びプロセスデータの例には、カラーデータ、テクスチャデータ、頂点データ、フラグメンテーションデータ、アートアセット、ドローイングデータ、シェーディングデータ、ライティングデータ及びその他などのグラフィックデータが含まれる。依存データ及びプロセスデータはまた、種々のバッファ及びキャッシュのコンテンツ及びステート、ならびにゲームのオペレーションを連携させるのに必要な種々のカウンター及びタイマーの状況も含むことができる。中断されたポイントにおけるゲームの再構築はまた、第1のユーザの選択した中断ポイントでそのゲームにおけるそのシーンのキャプチャされた画像を表示することも含むことができる。
工程370において、上記の工程320においてゲームが中断されたのと同じポイントで、第1のユーザのゲームがゲームコンソール112Bにおいて再開され、方法工程を終えることができる。
ゲームのステートデータは、アプリケーションステートデータ及び/またはハードウェアステートデータの形態で表すことができる。アプリケーションステートデータ及びハードウェアステートデータの各々のキャプチャ及び再開は、以下で考察するようにクラウドゲーミングステートセーブ、再開及び転送に関してその独自の問題を抱える。
アプリケーションステートデータ
コンピュータは、1つまたは複数のプロセッサ、メモリ、ならびにグラフィックプロセッサユニット(GPU)、サウンドカード、キーボード及び他の周辺機器などの入出力周辺機器で構成された1つのハードウェアである。コンピュータが稼働するタスクはコンピュータプログラムまたはアプリケーションである。コンピュータプロセッサは、これらのアプリケーションコードを実行し、I/Oに基づいて決定を行う、例えばキーボードボタンを押すことで、ディスプレイ上にビデオフレームを出力することができる。
アプリケーションステートデータは、ハードウェアステートデータに属する場合がある。このアプリケーションの使用をバッファするメモリは、RAMチップまたはスワップファイル内の最終的な領域、例えばハードディスクドライブまたはソリッドステートドライブである。プロセッサは、アプリケーションに関する命令を命令キャッシュに記憶し、データをプロセッサレジスタ、データキャッシュまたはRAMに取り込む/記憶する。実行する際、各々のコンピュータアプリケーションは、対応するアプリケーションステートデータを有する。アプリケーションステートデータは、
オープンファイルハンドル
オープンソケット形態のネットワーク接続
パイプ
アプリケーションによって利用されるメモリバッファのステート
命令カウンター
タイマー、
の形態である。
一例として、アプリケーションステートデータは、信号、スレッド、ファイル記述子、仮想メモリマッピング、スレッドローカルストレージ、スレッド、プロセスID、ユーザID、グループID、パイプ、ソケット及びその他を含むことができる。アプリケーションステートデータはまた、ゲームによって占拠されるGPUリソースなどのオペレーティングシステムレベルコンセプトを含むこともできる。ゲームは、テクスチャー、ジオメトリバッファ、実行するためのGPUに対するシェーダ命令及びその他などのリソースを認識している。テクスチャーはGPUメモリに記憶され、シェーダ命令はGPUメモリにロードされ、実行中は命令キャッシュにロードされ、最終的にはマッチング命令ポインタが存在する。
上記の図3を再び参照すると、ゲームまたはアプリケーションは、上記の図3の工程320において中断が開始される際、一時停止される。工程325において、アプリケーションステートデータをキャプチャすることによってゲームステートデータが取り込まれる。アプリケーションステートデータは、仮想メモリマッピング、取り出しファイル記述子などを含む。一実施形態では、アプリケーションの中からデバッガに似た機能を利用して仮想メモリマッピング、回収ファイル記述子などをキャプチャすることもできる。
アプリケーションステートデータの一部はまた、例えば/proc/<proccess id>アプリケーションからのLinux(登録商標)オペレーティングシステムにおいて外部から獲得することもできる。アプリケーションステートデータの一例はオープンファイルであってよく、これに関してアプリケーションは数値であるファイル記述子を有する。数値であるファイル記述子は、ファイルに関する識別子としてファイル読み取り/書き込みコールにおいて使用される。このような状況を復元するために、アプリケーションに正確な数値ファイル記述子が与えられる必要がある。一例として、Linux(登録商標)オペレーティングシステムにおいて数値ファイル記述子は、
‐original_file_descriptor=42
‐file_descriptor=open("/path/to/file",..)
‐dup2(file_descriptor,original_file_descriptor)、
などの擬似コードによってキャプチャすることができる。
またLinux(登録商標)オペレーティングシステム上でネーム空間を利用して他のタイプのアプリケーションステートデータ、例えばプロセスID(PID)、ユーザID、グループID、ネットワークレイアウト及びその他が仮想化される場合もある。仮想化されたプロセスID(PID)、ユーザID、グループID、ネットワークレイアウトなどによって、サンドボックス/コンテナ環境を形成することが可能になり、この中にシステムの一部を隠すことができ、そこでPID、ユーザID及びその他のオペレーティングシステムレベルリソースを再形成することができる。
キャプチャされたアプリケーションステートデータはその後、図3の工程360において、同一または異なるコンピュータシステム上で、例えばゲームコンソール112B上で、同一のアプリケーションステートデータを再形成するのに利用することができる。アプリケーションまたはゲームを再開するのに使用されるゲームコンソール112B内のそれぞれの場所に種々のアプリケーションステートデータを配置することができる。ネットワークバッファのコンテンツをオペレーティングシステムにおいて再形成することができる。あるいは、以下に記載するハードウェア割り込みと同様にネットワークバッファを安全な回復ポイントまでドレインすることもできる。この方法において、ユーザは、上記の工程320においてアプリケーションまたはゲームが中断されたポイントでアプリケーションを再開することが可能である。
ハードウェアステートデータ
ハードウェアステートデータは、ユーザがアプリケーションの中断を選択した場合など、アプリケーションの実行中に中断されたコンピュータの動作状況を含む。コンピュータの現在の動作状況は所定の時間において静止され、その結果コンピュータのハードウェア、例えばプロセッサ、RAM、全ての周辺機器、GPU、サウンドカード、ネットワークカードなども静止される。このようなハードウェアステートデータのキャプチャ、及びその後キャプチャされたハードウェアステートデータを別のコンピュータに適用することによって、ユーザが、第1のコンピュータにおいてアプリケーションを中断した場所でアプリケーションを再開することが可能になる。
エミュレータは、コンピュータのハードウェアをソフトウェアにおいて完璧に模倣するアプリケーションである。エミュレータは、例えば廃れてしまったコンピュータまたはゲームコンソールなどの極めて古いコンピュータまたはゲームコンソールからのレガシーアプリケーションをより最近生産されたコンピュータシステム上で稼働するのに利用されることが多い。より最近生産さたコンピュータシステムは、ハードウェアの不適合性により、エミュレータアプリケーションなしではレガシーアプリケーションと適合することができないため、より最近作られたコンピュータシステムは、レガシーアプリケーションを稼働することができない。
ハードウェアステートデータを動作中の任意の選択されたポイントでセーブするために、エミュレータは、エミュレートされたコンピュータ用のエミュレートされたハードウェアステートデータを、例えば特定のファイルにセーブすることができる。エミュレートされたハードウェアステートデータは、エミュレートされたデバイスに関する全てのメモリ、周辺機器の状況をキャプチャすること、及びエミュレートされたコンピュータに関するその他において現在実行される命令のアドレスを記憶する。エミュレートされたコンピュータは、上記に記載するようにエミュレータアプリケーションにおいて完璧に実現され、これによりエミュレータアプリケーションのアプリケーションステートデータをキャプチャする。
仮想マシンステートは、エミュレートされたハードウェアステートデータと同様である。クラウドゲーミング、ハードウェアステートデータのキャプチャ、転送及び再開の文脈において、エミュレータに関する1つの問題は、複数の仮想ゲームマシンの間でエミュレートされたハードウェアステートデータを共有することである。
典型的には、例えばウェブサーバ、データベースサーバ、Eメールサーバなどのサーバアプリケーションは、例えばサーバマシンなどの物理的サーバハードウェア上で稼働する。サーバマシンは、高性能の中央処理装置(CPU)及び大量のメモリを含み、これらによって複数のサーバアプリケーションを並行して稼働することが可能になる。プロセッサ、メモリ、データバスなどのコンピュータハードウェアはより高性能になっており、サーバ稼働時間及びセキュリティがよりいっそう重大かつ重要になってきている。
サーバアプリケーションは典型的には、仮想化されたサーバハードウェア上で稼働する。そのような例では、高性能のサーバプロセッサが存在し、これが仮想アプリケーションを稼働する。仮想アプリケーションによって複数の仮想マシンを生み出すことが可能になる。各々の仮想マシンは別々に動作するエミュレートされたコンピュータハードウェアである。各々の仮想マシンは、例えばネットワークカード、記憶デバイスなどのその独自の仮想または物理的周辺機器のセットを含む。各々の仮想マシンはその独自のオペレーティングシステムを稼働することができる。仮想マシンの各々におけるオペレーティングシステムは、他の仮想マシンと異なる場合があり、例えば複数の仮想マシンを稼働するLinux(登録商標)物理マシン、異なるWindowsのバージョンを稼働する仮想マシンの各々または他の好適なコンピュータオペレーティングシステムなど物理的マシンのオペレーティングシステムと異なる場合もある。
例えばウェブサーバ、データベースサーバ、Eメールサーバなどの各々のサーバアプリケーションは典型的には、安全性の隔離の理由でその独自の仮想マシンに割り当てられる。一般にエミュレータなどの仮想マシンは、ソフトウェアコンセプトであり、エミュレータと同様の方法で中断させることができ、また仮想マシンステートは、仮想アプリケーションのアプリケーションステートデータとしてキャプチャすることができる。
仮想マシンステートはその後、第2の仮想マシンに転送することができる。第2の仮想マシンは、場合によって異なる物理的コンポーネントを利用して異なる物理的サーバ上で稼働することができるが、但しこのような物理的コンポーネントは、仮想周辺機器デバイス及び仮想マシンの仮想プロセッサが理由で問題にはならない。
仮想マシンステートは、一種のアプリケーションステートデータとみなすことができる。コンピュータシステム間での仮想マシンステートの転送は、仮想マシンのマイグレーションと呼ばれ、サーバの世界では共通の特徴である。
仮想マシンのマイグレーションに対する最近の拡張は、ライブマイグレーションと呼ばれ、サーバの信頼性を高める。例えば仮想データベースサーバは、物理的ハードウェアが機能していないこと、例えばメモリエラー、ハードディスク読み取りエラーなどを検知し、異なるサーバハードウェア上にホストされる別の同一の仮想データベースサーバへの仮想データベースサーバのマイグレーションを起動する。ライブマイグレーションは、いかなるクライアントも切り離さずに、数秒以下のダウンタイムのみを利用して行うことができる。
残念なことに仮想マシンの全ての周辺機器は、仮想マシンのマイグレーションが正確に機能するために仮想周辺機器でなければならない。仮想マシンのマイグレーションが、物理的周辺機器のマイグレーションをサポートすることはない。第1のゲームコンソールのハードウェアステートデータを第2のゲームコンソールにマイグレーションするには、物理的周辺機器のマイグレーションを必要とするため仮想マシンマイグレーションは、この目的には適さない。
コンテンツリッチでインタラクティブなゲーミング環境を生み出すためにゲームコンソールハードウェアに必要とされる複雑さのために、ゲームコンソールは容易にまたは効率的にエミュレートまたは仮想化することができない。ユーザは特有のゲームコンソールに割り当てられ、ユーザの選択したゲームが割り当てられたゲームコンソールのハードウェアによって実行される。よってエミュレーション及び仮想化が、ハードウェアステートデータを一種のアプリケーションステートデータとしてキャプチャするために必要とされる機能を与えることはない。
上記に記載したように、ハードウェアマイグレーションは、コンピュータ及びそのコンピュータに関する周辺機器の関連するハードウェアステートデータのキャプチャを必要とする。それぞれの周辺機器に関するデバイスドライバは、システムが休止状態に入る際、周辺機器に関する関連するハードウェアステートデータをキャプチャするように尋ねられ、システムメモリにそのような状況を記憶する。システムに再度電源が入れられると、全てのメモリステートがディスクから復元され、周辺機器ドライバもまた、例えばGPUに関する3Dテクスチャーを含むバッファなどの何らかのハードウェアステートデータを復元するように指示される。
一実施形態では、ゲームコンソール112Aは、上記の図1に示されるようにメインプロセッサ145と、コプロセッサ146とを含む。ユーザが上記の工程320においてゲームコンソール112Aを中断することを選択したとき、メインプロセッサ145は現在の動作(複数可)を静止させることができる。工程325において、コプロセッサ146は、メインプロセッサ145、バッファ、グラフィックプロセッサ147、メモリシステム148、入出力システム149、ネットワークインターフェースカード150及び他の周辺機器に対して、それぞれの現在の状況を判断し、ハードウェアステートデータをキャプチャするように問い合わせを行うことができる。あるいはオペレーティングシステムと共にまたはその一部として作動するアプリケーションが中断し、バッファ、グラフィックプロセッサ147、メモリシステム148、入出力システム149、ネットワークインターフェースカード150及び他の周辺機器に問い合わせを行う場合もある。
第1のゲームコンソール112Aから第2のゲームコンソール112Bへのゲームコンソールハードウェアステートデータのマイグレーションをサポートするには、たとえ第2のゲームコンソール112Bが第1のゲームコンソール112Aと同じコンポーネント及び周辺機器を含んでいたとしても特別の措置を必要とする。例えばゲームコンソール112A、112Bの各々における周辺機器は、異なる内部シリアル番号を有するため、何らかの再構成を必要とする場合がある。別の例は、さらなる再構成を必要とするネットワークデバイスのMACアドレスである。
さらに第2のゲームコンソール112Bが、第1のゲームコンソール112Aと異なるネットワーク環境にある場合がある。異なるネットワーク環境は、異なるネットワーク設定を利用する可能性があり、よってゲームコンソールのハードウェアステートデータのマイグレーションもまたネットワークを十分に再構成することを必要とする。ゲームコンソールのハードウェアステートデータのマイグレーションはまた、第1のゲームコンソール112Aと第2のゲームコンソール112Bの間の地理的な格差に関して再構成する必要がある場合もある。一例として、第1のゲームコンソール112Aと異なる地理的地域にある第2のゲームコンソール112Bへの転送は、時間帯の変更、言語の変更、及び場合によって稼働中のゲームで使用される言語への変更さえも必要となる場合がある。
第2のゲームコンソール112Bはまた、第1のゲームコンソール112Aと異なるハードウェア改訂版を有する場合があり、これは様々な再初期化を必要とする場合がある。例えば第2のゲームコンソール112Bが、例えばより小さな半導体プロセスにおけるより新しいハードウェア改訂版であり、より電力効率がよい場合があり、第1のゲームコンソール112Aとは異なる電力及び冷却環境を必要とすることになる。
単一のアプリケーションのライブマイグレーションはかなり新しい分野である。1つの手法により、アプリケーションを中断することが可能になり、その後にアプリケーションステートデータ、例えばファイルハンドル、ソケット、メモリステート及び上記に記載したような他の種類のアプリケーションステートデータのキャプチャが続く。再開する際、同一のファイル記述子が、アプリケーションが中断されたときと同一条件に復元される。ネットワーク接続、タイマー、相互排除及び他の種類の状況も復元される。3Dゲームアプリケーションは、GPUに常駐するバッファの形態のハードウェアステートデータに依拠している。これ以前の手法は、それぞれのハードウェアステートデータをキャプチャは行わず、3Dゲームのアプリケーションステートデータ転送に関して必要とされる。この文脈において、ハードウェアステートデータは、アプリケーションの代わりにハードウェアに保管された任意のデータまたは状況を指す。例えばGPUメモリにおけるバッファは地理的またはテクスチャーデータを含み、メモリバッファはハードディスク上にゲームデータファイルを含む。アプリケーションは典型的には、オペレーティングシステムカーネルまたはデバイスドライバによって提供されるソフトウェア抽象化レイヤを介してそのようなハードウェアステートデータにアクセスする。そのような抽象化の例は、最終的に記憶装置の頂部にあるレイヤであるディスク上のファイルに対するファイル記述子、GPU側のバッファ及びグラフィックコンテクストを表すファイル記述子であって良い。時には性能の理由で、アプリケーションが直接ハードウェアバッファにアクセスする場合もある。ハードウェアバッファへの直接のアクセスは、デバイスドライバによって誘導されて良い。
ハードウェアステートデータをキャプチャするための1つの手法では、アプリケーションを中断し、中断されたハードウェアステートデータにリンクされたソフトウェア抽象化機構がキャプチャされる。ソフトウェア抽象化機構がファイル記述子である場合、このファイル記述子を使用して対応するハードウェアステートデータを捜すことができる。ファイル記述子はデバイスドライバ/OSカーネルコンセプトであることが多いため、対応するデバイスドライバは、その対応付けられたハードウェアステートデータを取り出すための方法を公開する必要がある。アプリケーションのないところで全てのハードウェアステートデータを識別するプロセスは相当困難であり得る。
ハードウェアステートデータの例には、種々のレジスタ、フィフォバッファ、命令キャッシュ(CPU及びGPUの両方における)、データキャッシュ(CPU/GPU)、RAM、CPU及びGPU上のプログラムカウンター(複数可)/命令ポインター(複数可)が含まれる。GPU命令は、シェーダアプリケーション用である。
ハードウェアステートデータはまた、移行状況関連情報も含んでいる。例えばハードウェアは、割り込み信号を発する場合がある。この割り込み信号は再生させることができる、またはバッファがバッファの現在のコンテンツをドレインし、その後既知の安全な回復状況においてこのバッファをリロードする場合もある。一実施形態では、ハードウェアが、何らかの要求待ちまたはスケジュール設定された処理を終わらせることが許可される場合がある。その後割り込みを利用して、新たな処理を起動する、または特定の処理の完了を報告することができる。ハードウェアが処理で忙しい場合、そのような割り込み信号はハードウェア以外で再生することもでき、ハードウェアが何らかの継続中の処理に関して割り込み信号を待っている場合に備えて、ハードウェアはリジューム中の処理を完了することはできない。一部の処理は、キャプチャするための移行状態がより少ない場合もある。一実施形態では、ゲーム操作は、継続中の移行状態が最小になる、または選択した閾値を下回り、その後割り込みなどのより少ない移行ハードウェア状況となるまで継続することができ、ゲームを再開する際の再構築のために命令カウンタが必要とされてよい。
別の手法は、アプリケーションからの支援を得ることである。アプリケーションを中断する代わりに、アプリケーションはサスペンド信号を送信することができ、この信号がアプリケーションが全ての内部状況をディスクに記憶するようにさせ、これによりそれが何らかの必要なハードウェアステートデータを回復させることを可能にする。アプリケーションを再開する際、回復を行うのはアプリケーションの仕事である。この利点は、アプリケーションがハードウェアステートデータが実際に何をキャプチャする必要があるのかを知っていることである。ハードウェアステートデータのかなりの部分は、そのゲームファイルからデータをリロードすることによって大抵回復することができる。ゲームはまた、回復を管理することもでき、例えばオンラインクラウドコントローラへのネットワーク接続を低下させることもできる。
アプリケーションステートデータまたはハードウェアステートデータの転送を介する回復とは無関係に、オンラインゲーム切断、ユーザとゲームコンソールのタイムゾーンの調節、ユーザに対する適切な言語の選択及びゲームタイマーの再開を含めた付加的な再開態様がある。ゲームは、内部のゲームタイミングに関して高精度の常に向上するタイマーを利用することが多い。再開後、このようなタイマーは、それらがそれ以前に一時停止されたのと全く同時刻で再始動させる必要があり、そうでなければゲームが誤った決定を行う可能性があり、例えばゲームのキャラクタが、壁の中で動けなくなったり、死んだりする可能性がある。オペレーティングシステムがこのようなことを管理することができるか、またはまだ管理できないかによって、ソフトウェアの変更が必要とされる。上記に記載したように、工程350以下参照において、再開を成功させるために適切なアプリケーションまたはゲーム及び全てのサポートするデータファイルが必要とされる。
図4は、本発明の種々の実施形態によるゲームシステム400のブロック図である。ゲームシステム400は、ネットワーク415を介して1つまたは複数のクライアント410にビデオストリームを提供するように構成される。ゲームシステム400は典型的には、ビデオサーバシステム420と、任意選択のゲームサーバ425とを含む。ビデオサーバシステム420は、1つまたは複数のクライアント410に最小限のサービスの質でビデオストリームを提供するように構成される。例えばビデオサーバシステム420は、ビデオゲームにおける視野の状況を変えるゲームコマンドを受信し、更新されたビデオストリームをクライアント410に提供することで最低限の時間のずれでこのような変更を反映することができる。ビデオサーバシステム420は、多様な種類の代替のビデオフォーマットでビデオストリームを提供するように構成されて良く、これにはまだ規定されないフォーマットも含まれる。さらにビデオストリームは、多様な種類のフレーム率でユーザに提示するように構成されたビデオフレームを含むことができる。典型的なフレーム率は、毎秒30フレーム、毎秒60フレーム、及び毎秒420フレームである。これより大きなまたは小さなフレーム率も、本発明の代替の実施形態に含まれる。
クライアント410は、ここでは個別に410A、410Bなどと呼ばれ、頭部装着型ディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアローンデバイス、手持ち式ゲームプレイデバイスなどを含んでよい。典型的にはクライアント410は、エンコードされたビデオストリームを受信し、このビデオストリームをデコードし、結果のビデオをユーザ、例えばゲームのプレイヤに提示するように構成される。エンコードされたビデオストリームを受信する及び/またはビデオストリームをデコードするプロセスは典型的には、クライアントの受信バッファに個々のビデオフレームを格納することを含む。ビデオストリームは、クライアント410に一体式のディスプレイ上で、あるいはモニターまたはテレビジョンなどの別個のデバイス上でユーザに提示される。クライアント410は任意選択で、2人以上のゲームプレイヤをサポートするように構成される。例えば、ゲームコンソールは、2人、3人、4人またはそれ以上の同時に存在するプレイヤをサポートするように構成される場合もある。これらのプレイヤの各々は、別々のビデオストリームを受信することができる、あるいは1つのビデオストリームが、各々のプレイヤのために特別に生成された、例えば各々のプレイヤの視点に基づいて生成されたフレームの領域を含む場合もある。クライアント410は任意選択で地理的に分散される。ゲームシステム400に含まれるクライアントの数は、1または2から数千、数万またはそれ以上まで広く変動する可能性がある。本明細書で使用される際、「ゲームプレイヤ」という用語は、ゲームをプレイする人を指すのに使用され、「ゲームプレイイングデバイス」という用語は、ゲームをプレイするのに使用されるデバイスを指すのに使用される。一部の実施形態では、ゲームプレイイングデバイスは、ユーザにゲーム体験を配信するために共同する複数のコンピューティングデバイスを指す場合もある。例えばゲームコンソール及びHMDは、ビデオサーバシステム420と共同してHMDを通して見られるゲームを配信することができる。一実施形態では、ゲームコンソールがビデオサーバシステム420からビデオストリームを受信し、ゲームコンソールが、レンダリングのためにHMDにビデオストリームを転送する、またはビデオストリームを更新する。
クライアント410は、ネットワーク415を介してビデオストリームを受信するように構成される。ネットワーク415は、いずれのタイプの通信ネットワークでもよく、これには電話網、インターネット、無線ネットワーク、パワーラインネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、プライベートネットワークなどが含まれる。典型的な実施形態では、ビデオストリームは、TCP/IPまたはUDP/IPなどの標準プロトコルを介して通信される。あるいはビデオストリームは独自の標準を介して通信される。
クライアント410の典型的な一例は、プロセッサ、不揮発性メモリ、ディスプレイ、デコーディングロジック、ネットワーク通信性能及び入力デバイスを備えるパーソナルコンピュータである。デコーディングロジックには、コンピュータ可読媒体に記憶されるハードウェア、ファームウェア及び/またはソフトウェアが含まれて良い。ビデオストリームをデコードする(及びエンコードする)ためのシステムは、当分野でよく知られており、使用される特定のエンコーディングスキームに応じて変化する。
クライアント410は場合によって、但し不可欠ではなく、受信したビデオを修正するように構成されたシステムを含む。例えばクライアントは、さらなるレンダリング、1つのビデオ画像を別のビデオ画像に重ね合わせる、ビデオ画像をトリミングするなどを行うように構成されて良い。例えばクライアント410は、種々のタイプのビデオフレーム、例えばI-フレーム、P-フレーム及びB-フレームなどを受信し、これらのフレームをユーザに対して表示するための画像に処理するように構成されて良い。いくつかの実施形態において、クライアント410の構成要素は、さらなるレンダリング、シェーディング、3-Dへの変換などの作業をビデオストリームに対して行うように構成される。クライアント410の構成要素は任意選択で2つ以上の音声またはビデオストリームを受信するように構成される。クライアント410の入力装置には、例えば片手のゲームコントローラ、両手のゲームコントローラ、ジェスチャ認識システム、注視認識システム、音声認識システム、キーボード、ジョイスティック、指示デバイス、力フィードバックデバイス、モーション及び/またはロケーション感知デバイス、マウス、タッチスクリーン、神経インターフェース、カメラ、まだ開発されない入力デバイスなどが含まれて良い。
クライアント410によって受信されるビデオストリーム(及び任意選択で音声ストリーム)は、ビデオサーバシステム420によって生成され提供される。本明細書の別の場所でさらに記載するように、このようなビデオストリームは、ビデオフレームを含む。(及び音声ストリームは音声フレームを含む)。ビデオフレームは、ユーザに表示される画像に意味を成すように貢献するように構成される(例えばそれらが適切なデータ構造内にピクセル情報を含む)。本明細書で使用される際、「ビデオフレーム」という用語は、ユーザに示される画像に貢献する、例えば作用するように構成された影響力のある情報を含むフレームを指すのに使用される。「ビデオフレーム」に関する本明細書の教示の大半は「音声フレーム」にも適用することができる。
クライアント410は典型的には、ユーザからの入力を受信するように構成される。このような入力には、ビデオゲームステートを変更する、またはそうでなければゲームプレイに影響を与えるように構成されたゲームコマンドが含まれる。ゲームコマンドは、入力デバイスを利用して受信することができる、及び/またはクライアント410上で実行中の演算命令によって自動的に生成される場合もある。受信されたゲームコマンドは、クライアント410からネットワーク415を介してビデオサーバシステム420及び/またはビデオサーバ425に伝達される。例えばいくつかの実施形態において、ゲームコマンドは、ビデオサーバシステム420を介してゲームサーバ425に伝達される。いくつかの実施形態において、ゲームコマンドの別々のコピーがクライアント410からゲームサーバ425及びビデオサーバシステム420に伝達される。ゲームコマンドの伝達は任意選択で、コマンドの同一性に左右される。ゲームコマンドは任意選択で、クライアント410Aに音声またはビデオストリームを提供するのに使用される様々なルートまたは通信チャネルを介しててクライアント410Aから伝達される。ゲームサーバ425は、上記に記載したようにクラウドコントローラ130及び/またはゲームマネージャ113の一部を含む場合もあることを理解されたい。
ゲームサーバ425は任意選択でビデオサーバシステム420と異なるエンティティによって操作される。例えばゲームサーバ425は、マルチプレイヤゲームの発行元によって操作される場合がある。この例ではビデオサーバシステム420は任意選択でゲームサーバ425によってクライアントとして捉えられ、任意選択でゲームサーバ425の視点から従来技術のゲームエンジンを実行中の従来技術のクライアントであるように見えるように構成される。ビデオサーバシステム420とゲームサーバ425の間の通信は、任意選択でネットワーク415を介して行われる。したがってゲームサーバ425は、複数のクライアントにゲームステート情報を送信する従来技術のマルチプレイヤゲームサーバであって良く、これらのクライアントの1つがゲームサーバシステム420である。ビデオサーバシステム420は、ゲームサーバ425の複数のインスタンスと同時に通信するように構成されて良い。例えばビデオサーバシステム420は、異なるユーザに複数の異なるビデオゲームを提供するように構成することができる。このような異なるビデオゲームの各々は、異なるゲームサーバ425によってサポートされる及び/または異なるエンティティによって公開される場合がある。いくつかの実施形態において、ビデオサーバシステム420の複数の地理的に分散したインスタンスが、複数の異なるユーザにゲームビデオを提供するように構成される。ビデオサーバシステム420のこれらのインスタンスの各々は、ゲームサーバ425の同一のインスタンスと通信することができる。ビデオサーバシステム420と1つまたは複数のゲームサーバ425の間の通信は、任意選択で専用の通信チャネルを介して行われる。例えばビデオサーバシステム420は、これら2つのシステム間の通信に専用の高帯域チャネルを介してゲームサーバ425に接続されて良い。
ビデオサーバシステム420は少なくとも1つのビデオソース430、I/O装置445、プロセッサ450及び非一時的ストレージ455を備える。ビデオサーバシステム420は、1つのコンピューティングデバイスを含む、または複数のコンピューティングデバイスの間に分配される場合がある。このようなコンピューティングデバイスは任意選択で、ローカルエリアネットワークなどの通信システムを介して接続される。
ビデオソース430は、例えば、ストリーミングビデオまたは動画を形成する一連のビデオフレームなどのビデオストリームを提供するように構成される。いくつかの実施形態において、ビデオソース430は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤからゲームコマンドを受信し、受信したコマンドに基づいてビデオゲームのその状況のコピーを維持するように構成される。このようなゲームステートは、ゲーム環境における対象の位置ならびに典型的には視点を含む。ゲームステートはまた、対象の特性、画像、色及び/またはテクスチャーも含む場合もある。ゲームステートは典型的には、ゲームルール、ならびに例えば移動する、回転する、攻撃する、集中する、対話する、利用するなどのゲームコマンドに基づいて維持される。ゲームエンジンの一部は任意選択でゲームサーバ425内に配置される。ゲームサーバ425は、地理的に分散したクライアントを利用する複数のプレイヤから受信したゲームコマンドに基づいてゲームのステートのコピーを維持することができる。このようなケースでは、ゲームステートは、ゲームサーバ425によってビデオソース430に提供され、ここにゲームステートのコピーが保管され、レンダリングが行われる。ゲームサーバ425は、ネットワーク415を介してクライアント410から直接ゲームコマンドを受信する、及び/またはビデオサーバシステム420を介してゲームコマンドを受信する場合もある。
ビデオソース430は典型的には、ストレージ455などのコンピュータ可読媒体に記憶された、例えばハードウェア、ファームウェア及び/またはソフトウェアなどのレンダリングロジックを含む。このようなレンダリングロジックは、ゲームステートに基づいてビデオストリームのビデオフレームを形成するように構成される。レンダリングロジックの全てまたは一部は任意選択で、グラフィック処理装置(GPU)内に配置される。レンダリングロジックは典型的には、対象間の三次元の空間関係を決定する、及び/またはゲームステート及び視点に基づいて適切なテクスチャーなどを適用するように構成された処理ステージを含む。レンダリングロジックは、クライアント410に伝達する前に通常エンコードされる生ビデオを生成する。例えば生ビデオは、Adobe Flash(登録商標)標準、.wav、H.264、H.263、On2、VP6、VC-1、WMA、Huffyuv、Lagarith、MPG-x.Xvid.FFmpeg、x264、VP6-8、realvideo、mp3などに従ってエンコードされて良い。エンコーディングプロセスは、リモートデバイス上のデコーダに送達するために任意選択でひとまとめにされたビデオストリームを生成する。このビデオストリームは、フレームサイズ及びフレーム率によって特徴付けられる。典型的なフレームサイズには、800x600、1280x720(例えば720p)、1024x768が含まれるが、任意の他のフレームサイズも使用されて良い。フレーム率は、1秒当たりのビデオフレームの数である。ビデオストリームは、異なるタイプのビデオフレームを含むことができる。例えば、H.264標準は、「P」フレームと「I」フレームを含む。I-フレームは、ディスプレイデバイス上の全てのマクロブロック/ピクセルを更新するための情報を含むのに対して、P-フレームはそのサブセットを更新するための情報を含む。P-フレームは典型的にはI-フレームよりデータサイズが小さい。本明細書で使用される際、「フレームサイズ」という用語は、フレーム内のピクセルの数を指すことを意味する。「フレームデータサイズ」という用語は、フレームを記憶するのに必要とされるバイトの数を指すのに使用される。
他の実施形態において、ビデオソース430は、カメラなどのビデオ記録デバイスを含む。このカメラは、コンピュータゲームのビデオストリームに含まれて良い時間遅れのビデオまたはライブビデオを生成するのに使用されて良い。結果として生じるビデオストリームは任意選択で、レンダリングした画像とスチールカメラまたはビデオカメラを利用して記録された画像の両方を含む。ビデオソース430はまた、ビデオストリームに含まれるように予め記憶されたビデオを記憶するように構成されたストレージデバイスを含んでよい。ビデオソース430はまた、対象、例えば人間の動作または位置を検出するように構成されたモーションまたは位置感知デバイスと、検出された動作及び/または位置に基づいてゲームステートを特定するまたはビデオを生成するように構成されたロジックとを含む場合もある。
ビデオソース430は任意選択で、他のビデオに置かれるように構成されたオーバレイを提供するように構成される。例えばこのようなオーバレイは、コマンドインターフェース、ログイン命令、ゲームプレイヤに対するメッセージ、他のゲームプレイヤの画像、他のゲームプレイヤの配信ビデオ(例えばウェブカメラビデオ)を含んでよい。クライアント410Aがタッチスクリーンインターフェースまたは注視検出インターフェースを含む実施形態では、オーバーレイは、仮想キーボード、ジョイスティック、タッチパッドなどを含む場合がある。オーバレイの一例では、プレイヤの音声が音声ストリームに重ねられる。ビデオソース430は任意選択で1つまたは複数の音源をさらに含む。
ビデオサーバシステム420が2人以上のプレイヤからの入力に基づいてゲームステートを維持するように構成される実施形態では、各々のプレイヤは、位置及び見る方向を含む異なる視点を有する場合がある。ビデオソース430は任意選択で、それぞれの視点に基づいて各々のプレイヤに対して別々のビデオストリームを提供するように構成される。さらにビデオソース430は、クライアント410の各々に対して異なるフレームサイズ、フレームデータサイズ及び/またはエンコーディングを提供するように構成される。ビデオソース430は任意選択で3-Dビデオを提供するように構成される。
I/O装置445はビデオサーバシステム420のために、ビデオ、コマンド、情報に関するリクエスト、ゲームステート、注視情報、デバイスモーション、デバイスの位置、ユーザモーション、クライアントの同一性、プレイヤの同一性、ゲームコマンド、セキュリティ情報、音声などを送受信するように構成される。I/O装置445は典型的には、ネットワークカードまたはモデムなどの通信ハードウェアを含む。I/O装置445は、ゲームサーバ425、ネットワーク415及び/またはクライアント410と通信するように構成される
プロセッサ450は、本明細書で考察されるビデオサーバシステム420の種々のコンポーネントの中に含まれる例えばソフトウェアなどのロジックを実行するように構成される。例えばプロセッサ450は、ビデオソース430、ゲームサーバ425及び/またはクライアントクォリファイア(Client Qualifier)460の機能を果たすために、ソフトウェア命令によってプログラムされて良い。ビデオサーバシステム420は任意選択で、プロセッサ450の2つ以上のインスタンスを含む。プロセッサ450はまた、ビデオサーバシステム420によって受信されたコマンドを実行するため、または本明細書で考察されるゲームシステム400の種々の要素の動作を連携して働かせるために、ソフトウェア命令によってプログラムされて良い。プロセッサ450は1つまたは複数のハードウェアデバイスを含んで良い。プロセッサ450は電子プロセッサである。
ストレージ455は、非一時的なアナログ及び/またはデジタルデバイスを含む。例えばストレージ455は、ビデオフレームを格納するように構成されたアナログストレージデバイスを含むことができる。ストレージ455は、例えばハードディスク、光学ディスクまたはソリッドステートストレージなどのコンピュータ可読デジタルストレージを含む場合もある。ストレージ415は、ビデオフレーム、疑似フレーム、ビデオフレームと疑似フレームの両方を含むビデオストリーム、音声ストリームなどを記憶するように構成される(例えば適切なデータ構造またはフィルシステムを介して)。ストレージ455は任意選択で複数のデバイスの間で分散される。いくつかの実施形態において、ストレージ455は、本明細書の別の場所で考察されるビデオソース430のソフトウェアコンポーネントを保管するように構成される。このようなコンポーネントは、必要に応じて使えるように設定されるように準備されたフォーマットで保管されて良い。
ビデオサーバシステム420は任意選択で、クライアントクォリファイア460をさらに備える。クライアントクォリファイア460は、例えばクライアント410Aまたは410Bなどのクライアントの能力をリモートで判定するように構成される。このような能力は、クライアント410A自体の能力だけでなく、クライアント410Aとビデオサーバシステム420の間の1つまたは複数の通信チャネルの能力の両方を含むことができる。例えばクライアントクォリファイア460は、ネットワーク415を介して通信チャネルをテストするように構成されて良い。
クライアントクォリファイア460は、クライアント410Aの能力を手動でまたは自動的に判定する(例えば知る)ことができる。手動の判定には、クライアント410Aのユーザとの通信、及びユーザに能力を提供するように頼むことが含まれる。例えばいくつかの実施形態において、クライアントクォリファイア460は、クライアント410Aのブラウザ内の画像、テキストなどを表示するように構成される。一実施形態において、クライアント410Aは、ブラウザを含むHMDである。別の実施形態において、クライアント410Aは、ブラウザを有するゲームコンソールであり、ブラウザはHMD上に表示することができる。表示される対象は、ユーザが、クライアント410Aのオペレーティングシステム、プロセッサ、ビデオデコーダタイプ、ネットワーク接続のタイプ、ディスプレイ解像度などの情報を入力することをリクエストする。ユーザによって入力されたこの情報は、クライアントクォリファイア460に戻るように伝達される。
自動判定は、例えばクライアント410A上での特定のエージェントの実行及び/またはクライアント410Aへのテストビデオの送信によって行われて良い。エージェントは、演算命令、例えばウェブページに埋め込まれた、またはアドオンとしてインストールされたジャバスクリプトを有することができる。エージェントは任意選択でクライアントクォリファイア460によって提供される。種々の実施形態において、エージェントは、クライアント410Aの処理力、クライアント410Aのデコーディング及び表示力、遅延時間の確実性及びクライアント410Aとビデオサーバシステム420間の通信チャネルの帯域幅、クライアント410Aの表示タイプ、クライアント410A上に提示されるファイヤウォール、クライアント410Aのハードウェア、クライアント410A上で実行中のソフトウェア、クライアント410A内のレジストリエントリなどを突き止めることができる。
クライアントクォリファイア460は、コンピュータ可読媒体に記憶されたハードウェア、ファームウェア及び/またはソフトウェアを含む。クライアントクォリファイア460は任意選択でビデオサーバシステム420の1つまたは複数の他の要素から隔たった特定のコンピューティングデバイス上に配置される。例えばいくつかの実施形態において、クライアントクォリファイア460は、クライアント410とビデオサーバシステム420の2つ以上のインスタンスの間の通信チャネルの特徴を判定するように構成される。このような実施形態では、クライアントクォリファイアが見いだした情報を使用して、ビデオサーバシステム420のどのインスタンスがクライアント410の1つに対してストリームビデオを送達するのに最適であるかを判定することができる。
本発明の実施形態は、手持ち式デバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブルな家庭用電子機器、ミニコンピュータ、メインフレームコンピュータなどを含めた種々のコンピュータシステム構成によって実施することができる。本発明はまた、有線式または無線ネットワークを介して結合されたリモート処理デバイスによってタスクが行われる分散コンピューティング環境において実施することもできる。
上記の実施形態を念頭において、本発明は、コンピュータシステムに記憶されたデータに関連して様々なコンピュータ実装演算を用いることができることを理解されたい。このような演算は、物理量の物理的な操作を必要とする。本発明の一部を形成する本明細書に記載される演算のいずれもマシン操作に有益である。本発明は、このような演算を実行するためのデバイスまたは装置に関する。このような装置は、必要とされる目的のために特別に構築することができる、または装置は、コンピュータ内に記憶されたコンピュータプログラムによって選択的に始動されるまたは構成された汎用コンピュータである場合もある。詳細には、様々な汎用マシンを、本明細書における教示に従って書かれたコンピュータプログラムと共に使用することができる、または必要とされる演算を実行するためにより特化された装置を構築することがより簡便である場合もる。
本発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして具現化される場合もある。コンピュータ可読媒体は、データを記憶することができる何らかのデータストレージデバイスであり、このデータはコンピュータシステムによってその後読み取ることができる。コンピュータ可読媒体の例には、ハードディスク、ネットワーク接続ストレージ(NAS)、リードオンリーメモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープならびに他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体は、ネットワーク接続されたコンピュータシステム上に分散されたコンピュータ可読有形媒体を含むことができることにより、コンピュータ可読コードは、分散式に記憶され実行される。
これらの方法工程は特有の順序で記載されるが、他のハウスキーピング工程がこれらの工程の間に行われる場合がある、あるいは工程がわずかに異なる時間に行われるように調整される場合、またはオーバーレイ演算の処理が所望される方法で行われる限り、この処理に関連する様々なインターバルで工程の処理作業が行われることを可能にする特定のシステム内に分散される場合もあることを理解されたい。
理解を明確にする目的で上述の発明を一部の詳細において記載してきたが、添付の特許請求の範囲の範囲内で特定の変更及び修正を実施することができることは明らかであろう。したがって本実施形態は、限定ではなく、例示とみなすべきであり、また本発明は、本明細書に提示される詳細に限定されるものではなく、記載される実施形態の範囲及び均等物の範囲内で修正される場合がある。

Claims (24)

  1. クラウドコントローラを有し、
    前記クラウドコントローラに結合されたストレージデバイスを有し、
    ネットワークによって前記クラウドコントローラに結合された複数のゲームコンソールを有し、前記複数のゲームコンソールのそれぞれは、
    ハードウェアレイヤ、
    前記ハードウェアレイヤとインタラクションを行うように構成され、ステートマネージャクライアントを含むオペレーティングシステムレイヤ、
    前記オペレーティングシステムレイヤの少なくとも一部及び前記ハードウェアレイヤの一部とインタラクションを行うように構成され、ゲーミングアプリケーションを含むアプリケーションレイヤ、を備えるものであり、
    前記ステートマネージャクライアントは、前記ゲーミングアプリケーションが選択された中断ポイントで中断されたとき、前記ゲームコンソールのゲームステートデータをキャプチャし、前記キャプチャしたゲームステートデータを保管するように構成され、
    前記選択された中断ポイントは、事前定義された停止ポイントではなく、
    前記ゲームステートデータは、前記選択された中断ポイントで再開することが可能な前記ゲーミングアプリケーションに関する実行可能な状況を再形成するための一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含み、
    前記ゲームステートデータは、前記ゲームコンソールに関連するとともにハードウェアマイグレーションのためにキャプチャが必要とされるハードウェアステートデータを少なくとも有する、
    クラウドゲーミングシステム。
  2. 前記ハードウェアマイグレーションのためのハードウェアステートデータは、一方のゲームコンソールと他方のゲームコンソールとの間の地理的な差に関して再構成するために用いられる、請求項1に記載のクラウドゲーミングシステム。
  3. 前記ハードウェアマイグレーションのためのハードウェアステートデータは、ハードウェアに保管された任意のデータまたは状況を含む、請求項1又は2に記載のクラウドゲーミングシステム。
  4. 前記ステートマネージャクライアントはさらに、前記保管されキャプチャされたゲームステートデータを前記ゲームコンソールに適用し、前記ゲーミングアプリケーションを前記ゲーミングアプリケーションが中断されたポイントで再開するように構成され、
    前記ゲーミングアプリケーションの再開には、前記ゲームコンソールにゲームステートデータを適用し、実行可能なゲーミングアプリケーションを生成することが含まれる、
    請求項1に記載のクラウドゲーミングシステム。
  5. 前記クラウドコントローラは、
    複数の記憶されたゲーミングアプリケーションと、
    複数のユーザの各々1人に関するアカウントデータを含むユーザアカウントデータベースと、を含む、
    請求項1に記載のクラウドゲーミングシステム。
  6. 前記アカウントデータは、複数のユーザのうちの選択されたユーザに関する中断したゲーミングアプリケーション及び前記中断したゲーミングアプリケーションに関する前記ゲームステートデータの保管場所のリストを含む、
    請求項5に記載のクラウドゲーミングシステム。
  7. 前記クラウドコントローラは、前記選択されたユーザに関する認証アクセスを判定するように構成された認証マネージャを含む、
    請求項6に記載のクラウドゲーミングシステム。
  8. 前記複数のゲームコンソールの各々1つの前記ハードウェアレイヤは、
    プロセッサと、
    データバスによって前記プロセッサに結合されたグラフィックプロセッサと、
    を含む、
    請求項1に記載のクラウドゲーミングシステム。
  9. 前記複数のゲームコンソールの各々1つの前記ハードウェアレイヤは、前記データバスに結合されたコプロセッサをさらに含み、
    前記複数のゲームコンソールの各々1つの前記コプロセッサは、ゲームステートデータをキャプチャするように構成される、
    請求項8に記載のクラウドゲーミングシステム。
  10. 前記クラウドコントローラ及び前記複数のゲームコンソールの第1の部分は、第1のデータセンタに配置される、
    請求項1に記載のクラウドゲーミングシステム。
  11. 前記クラウドコントローラに結合された前記ストレージデバイスは、ストレージサーバ内に含まれ、
    前記クラウドコントローラは、第1のデータセンター内に配置され、
    前記ストレージサーバは、第3のデータセンター内に配置される、
    請求項1に記載のクラウドゲーミングシステム。
  12. 前記ゲームステートデータは、アプリケーションステートデータを含む、
    請求項1に記載のクラウドゲーミングシステム。
  13. クラウドゲーミングシステムにおいてゲームを中断するための方法であって、
    第1のクライアントデバイスからゲーミングリクエストを受信し、前記ゲーミングリクエストは、クラウドゲーミングシステム内のクラウドコントローラで受信される前記ゲーミングリクエストを受信し、
    前記クラウドゲーミングシステム内の第1のゲームコンソールに前記第1のクライアントデバイスを割り当て、
    前記第1のクライアントデバイスからゲーム実行リクエストを受信し、
    前記第1のゲームコンソール上で前記ゲームを実行し、
    前記第1のクライアントデバイスから、前記ゲームを選択された中断ポイントで中断するためのリクエストを受信し、前記選択された中断ポイントは、事前定義された停止ポイントではないものであり、
    前記ゲーム内の前記選択された中断ポイントで前記第1のゲームコンソール上の前記ゲームを中断し、
    前記第1のゲームコンソール上の前記中断されたゲームに関するゲームステートデータをキャプチャし、
    前記ゲームステートデータは、前記選択された中断ポイントで再開することが可能な前記ゲームに関する実行可能な状況を再形成するための一時的メタデータ及びユーザインタラクティブなヒストリカルメタデータを含むデータ構造を含み、
    前記選択された中断ポイントでの前記ゲームの再開では、前記第1のゲームコンソールまたは他のゲームコンソールのいずれか一方において行うことが可能であり、
    前記ゲームステートデータは、前記ゲームコンソールに関連するとともにハードウェアマイグレーションのためにキャプチャが必要とされるハードウェアステートデータを少なくとも有する、
    方法。
  14. 前記ハードウェアマイグレーションのためのハードウェアステートデータは、一方のゲームコンソールと他方のゲームコンソールとの間の地理的な差に関して再構成するために用いられる、請求項13に記載の方法。
  15. 前記ハードウェアマイグレーションのためのハードウェアステートデータは、ハードウェア内にハードウェアに保管された任意のデータまたは状況を含む、請求項13又は14に記載の方法。
  16. 前記第1のゲームコンソールは、前記ゲームステートデータをキャプチャし、前記第1のゲームコンソールが前記ゲームの実行を終わらせることを可能にし、その結果、前記第1のゲームコンソールは、別のユーザに割り当てるために利用可能である、
    請求項13に記載の方法。
  17. 前記クラウドコントローラは、前記第1のゲームコンソールから前記ゲームステートデータをキャプチャする、
    請求項13に記載の方法。
  18. 更に、前記ゲームステートデータを取り出し、前記ゲームステートデータを前記クラウドゲーミングシステム内に含まれる選択したゲームコンソールに適用し、
    前記ゲームにおける前記選択されたポイントで前記ゲームを再開する、
    請求項13に記載の方法。
  19. 前記ゲームステートデータの前記選択したゲームコンソールへの割り当てに、前記ゲームステートデータのそれぞれの部分を前記選択されたゲームコンソール内のそれぞれの場所に読み込むことが含まれる、
    請求項18に記載の方法。
  20. 前記選択されたゲームコンソールは、第2のゲームコンソールである、
    請求項18に記載の方法。
  21. 前記ゲームステートデータのキャプチャでは、アプリケーションステートデータがキャプチャされる、
    請求項13に記載の方法。
  22. 前記ゲームステートデータのキャプチャでは、
    前記ゲームステートデータを保管し、
    前記保管されたゲームステートデータの保管場所によって対応するユーザアカウント情報を更新する、
    請求項13に記載の方法。
  23. 第1のユーザから認証リクエストを受信し、前記認証リクエストは、前記クラウドコントローラにおいて受信され、
    前記第1のユーザに関する認証アクセスを判定し、
    前記第1のユーザのアカウントデータが前記中断したゲーム及び前記ゲームステートデータの場所を含む場合、前記第1のクライアントデバイスの前記第1のゲームコンソールへの割り当てでは、前記第1のユーザを前記第1のゲームコンソールに割り当て、前記第1のゲームコンソールに中断したゲームステートデータをロードする、
    請求項13に記載の方法。
  24. 前記第1のユーザから認証リクエストを受信し、前記認証リクエストが前記クラウドコントローラにおいて受信され、
    前記第1のユーザに関する認証アクセスを判定し、前記第1のクライアントデバイスの前記第1のゲームコンソールへの割り当てでは、前記第1のユーザを前記第1のゲームコンソールに割り当て、
    前記第1のユーザアカウントデータが前記中断したゲーム及び前記ゲームステートデータの場所を含む場合、ゲームステートデータを取り出し、
    前記クラウドコントローラにおいてゲームステートデータ共有リクエストを受信し、前記ゲームステートデータ共有リクエストは、前記第1のユーザから受信され、かつ前記第1のユーザのゲームステートデータを第2のユーザと共有するためのリクエストであり、
    前記ゲームステートデータを、前記第2のユーザに割り当てられた第2のゲームコンソールと共有する、
    請求項23に記載の方法。
JP2020115573A 2014-12-31 2020-07-03 クラウドゲーミングに関するゲームステートセーブ、転送および再開 Active JP7066784B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462099027P 2014-12-31 2014-12-31
US62/099,027 2014-12-31
US14/603,308 2015-01-22
US14/603,308 US9795879B2 (en) 2014-12-31 2015-01-22 Game state save, transfer and resume for cloud gaming

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017535361A Division JP2018504193A (ja) 2014-12-31 2015-11-25 クラウドゲーミングに関するゲームステートセーブ、転送および再開

Publications (2)

Publication Number Publication Date
JP2020163226A JP2020163226A (ja) 2020-10-08
JP7066784B2 true JP7066784B2 (ja) 2022-05-13

Family

ID=56163099

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2017535361A Pending JP2018504193A (ja) 2014-12-31 2015-11-25 クラウドゲーミングに関するゲームステートセーブ、転送および再開
JP2020040087A Active JP6841952B2 (ja) 2014-12-31 2020-03-09 クラウドゲーミングに関するゲームステートセーブ、転送および再開
JP2020115573A Active JP7066784B2 (ja) 2014-12-31 2020-07-03 クラウドゲーミングに関するゲームステートセーブ、転送および再開

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2017535361A Pending JP2018504193A (ja) 2014-12-31 2015-11-25 クラウドゲーミングに関するゲームステートセーブ、転送および再開
JP2020040087A Active JP6841952B2 (ja) 2014-12-31 2020-03-09 クラウドゲーミングに関するゲームステートセーブ、転送および再開

Country Status (5)

Country Link
US (5) US9795879B2 (ja)
EP (2) EP3682953B1 (ja)
JP (3) JP2018504193A (ja)
CN (2) CN107106909A (ja)
WO (1) WO2016109066A1 (ja)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5749895B2 (ja) * 2010-04-05 2015-07-15 株式会社ソニー・コンピュータエンタテインメント ゲーム装置
US10127082B2 (en) 2012-04-05 2018-11-13 Electronic Arts Inc. Distributed realization of digital content
US20140113705A1 (en) * 2012-10-19 2014-04-24 Nvidia Corporation Quick-resume gaming
CA2872137A1 (en) * 2013-02-06 2014-08-14 Square Enix Holdings Co., Ltd. Game system, game apparatus, a method of controlling the same, a program, and a storage medium
US10394414B1 (en) 2013-07-19 2019-08-27 Kabam, Inc. Facilitating automatic execution of user interactions in a virtual space
JP5521104B1 (ja) * 2013-10-22 2014-06-11 株式会社 ディー・エヌ・エー 電子ゲーム提供装置、電子ゲーム装置、電子ゲーム提供プログラム及び電子ゲームプログラム
JP5878938B2 (ja) * 2014-01-29 2016-03-08 株式会社ソニー・コンピュータエンタテインメント 配信システム、配信方法、配信プログラム
US9795879B2 (en) * 2014-12-31 2017-10-24 Sony Interactive Entertainment America Llc Game state save, transfer and resume for cloud gaming
US9965823B2 (en) * 2015-02-25 2018-05-08 Microsoft Technology Licensing, Llc Migration of graphics processing unit (GPU) states
US10549203B2 (en) * 2015-09-30 2020-02-04 Sony Interactive Entertainment America Llc Systems and methods for providing time-shifted intelligently synchronized game video
US11420114B2 (en) * 2015-09-30 2022-08-23 Sony Interactive Entertainment LLC Systems and methods for enabling time-shifted coaching for cloud gaming systems
US10742767B2 (en) * 2016-02-02 2020-08-11 Sony Interactive Entertainment LLC Systems and methods for downloading and updating save data to a data center
US10631164B2 (en) 2016-03-31 2020-04-21 Electronic Arts Inc. Authentication identity management for mobile device applications
US10430266B2 (en) * 2016-06-13 2019-10-01 Vmware, Inc. Full state session reviving, forking, and snapshoting based on an application data dump
US10888788B2 (en) * 2016-06-30 2021-01-12 Sony Interactive Entertainment Inc. Automated artificial intelligence (AI) control mode for playing specific tasks during gaming applications
US10226708B2 (en) * 2016-06-30 2019-03-12 Electronic Arts Inc. Interactive gameplay playback system
US10179290B2 (en) * 2016-07-21 2019-01-15 Sony Interactive Entertainment America Llc Method and system for accessing previously stored game play via video recording as executed on a game cloud system
JP6905810B2 (ja) * 2016-09-23 2021-07-21 株式会社タイトー ゲームサーバ、電子機器、及びプログラム
US10824594B2 (en) * 2016-11-07 2020-11-03 Qualcomm Incorporated Associating a captured screenshot with application-specific metadata that defines a session state of an application contributing image data to the captured screenshot
US10478732B2 (en) 2016-11-07 2019-11-19 Microsoft Technology Licensing, Llc Arbitrating an outcome of a multiplayer game session
JP6802733B2 (ja) 2017-03-06 2020-12-16 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、サーバシステムおよびステータス管理方法
US11000771B1 (en) 2017-03-30 2021-05-11 Electronic Arts Inc. Gameplay telemetry and video acquisition system
US10449440B2 (en) * 2017-06-30 2019-10-22 Electronic Arts Inc. Interactive voice-controlled companion application for a video game
CN107272907B (zh) * 2017-07-10 2020-08-07 三星电子(中国)研发中心 一种基于虚拟现实技术的场景中断衔接方法和装置
CN107913521B (zh) * 2017-11-09 2019-02-26 腾讯科技(深圳)有限公司 虚拟环境画面的显示方法和装置
US10456673B1 (en) * 2017-11-17 2019-10-29 Amazon Technologies, Inc. Resource selection for hosted game sessions
US11465056B2 (en) * 2018-01-12 2022-10-11 Bunch Live, Inc. Game mediation component for enriching multiplayer gaming sessions
US11103772B2 (en) 2018-01-12 2021-08-31 Bunch Live, Inc. Mediating multiplayer electronic game sessions
WO2019182590A1 (en) * 2018-03-21 2019-09-26 Visa International Service Association Automated machine learning systems and methods
US10537799B1 (en) * 2018-03-23 2020-01-21 Electronic Arts Inc. User interface rendering and post processing during video game streaming
US10589171B1 (en) 2018-03-23 2020-03-17 Electronic Arts Inc. User interface rendering and post processing during video game streaming
US10987579B1 (en) 2018-03-28 2021-04-27 Electronic Arts Inc. 2.5D graphics rendering system
CN108654092B (zh) * 2018-04-17 2021-09-24 网宿科技股份有限公司 一种同步云游戏档案的方法和装置
WO2019231619A1 (en) * 2018-05-30 2019-12-05 Infiniscene, Inc. Systems and methods game streaming
US10987593B2 (en) * 2018-09-19 2021-04-27 Sony Interactive Entertainment LLC Dynamic interfaces for launching direct gameplay
US11247130B2 (en) 2018-12-14 2022-02-15 Sony Interactive Entertainment LLC Interactive objects in streaming media and marketplace ledgers
US11896909B2 (en) 2018-12-14 2024-02-13 Sony Interactive Entertainment LLC Experience-based peer recommendations
US11080748B2 (en) 2018-12-14 2021-08-03 Sony Interactive Entertainment LLC Targeted gaming news and content feeds
US10881962B2 (en) 2018-12-14 2021-01-05 Sony Interactive Entertainment LLC Media-activity binding and content blocking
US11269944B2 (en) 2018-12-14 2022-03-08 Sony Interactive Entertainment LLC Targeted gaming news and content feeds
US11470137B2 (en) 2019-01-08 2022-10-11 Rainway, Inc. Method and system for encoding game video and audio remotely streamed to a remote computer system
US10918938B2 (en) 2019-03-29 2021-02-16 Electronic Arts Inc. Dynamic streaming video game client
CN110489382B (zh) * 2019-07-31 2021-11-16 湖南微算互联信息技术有限公司 一种云手机游戏进度数据的处理方法、系统和存储介质
US11331586B2 (en) * 2019-08-22 2022-05-17 Nvidia Corporation Joining or replaying a game instance from a game broadcast
CN110507989B (zh) * 2019-09-06 2023-08-22 网易(杭州)网络有限公司 一种云游戏的控制方法、装置、电子设备及可读存储介质
US11037394B2 (en) * 2019-10-01 2021-06-15 Igt Tabletop/furniture game screen methods
US11524230B2 (en) * 2019-10-01 2022-12-13 Sony Interactive Entertainment Inc. Encoder tuning to improve tradeoffs between latency and video quality in cloud gaming applications
US11395963B2 (en) * 2019-10-01 2022-07-26 Sony Interactive Entertainment Inc. High speed scan-out of server display buffer for cloud gaming applications
US11213748B2 (en) 2019-11-01 2022-01-04 Sony Interactive Entertainment Inc. Content streaming with gameplay launch
US11103780B2 (en) 2019-11-06 2021-08-31 Microsoft Technology Licensing, Llc Saving and restoring virtual machine states and hardware states for application content
CN110798477B (zh) * 2019-11-06 2022-03-18 江苏视博云信息技术有限公司 数据传输方法、设备、管理平台及云游戏系统架构
US11389720B2 (en) * 2020-02-26 2022-07-19 Microsoft Technology Licensing, Llc Transferring control elements for a gaming session between devices
CN111803929A (zh) * 2020-05-26 2020-10-23 厦门雅基软件有限公司 控制对象的切换方法、装置、电子设备及计算机存储介质
US11420130B2 (en) 2020-05-28 2022-08-23 Sony Interactive Entertainment Inc. Media-object binding for dynamic generation and displaying of play data associated with media
US11442987B2 (en) 2020-05-28 2022-09-13 Sony Interactive Entertainment Inc. Media-object binding for displaying real-time play data for live-streaming media
US11602687B2 (en) 2020-05-28 2023-03-14 Sony Interactive Entertainment Inc. Media-object binding for predicting performance in a media
CN111632373B (zh) * 2020-05-30 2021-05-28 腾讯科技(深圳)有限公司 一种启动游戏的方法、装置及计算机可读存储介质
CN111917768B (zh) * 2020-07-30 2022-05-13 腾讯科技(深圳)有限公司 虚拟场景的处理方法、装置及计算机可读存储介质
CN112130821B (zh) * 2020-09-22 2024-04-09 北京冰封互娱科技有限公司 游戏活动管理方法、设备及存储介质
US20220101749A1 (en) * 2020-09-28 2022-03-31 Sony Interactive Entertainment LLC Methods and systems for frictionless new device feature on-boarding
IL302890A (en) * 2020-11-13 2023-07-01 Gifted Bill Entpr Llc A method and system for game evaluation
CN112650730B (zh) * 2020-12-18 2022-01-04 完美世界(重庆)互动科技有限公司 游戏数据迁移方法及装置、存储介质、计算机设备
CN112691365B (zh) * 2021-01-12 2021-09-24 腾讯科技(深圳)有限公司 云游戏加载方法、系统、装置、存储介质和云游戏系统
US11731048B2 (en) * 2021-05-03 2023-08-22 Sony Interactive Entertainment LLC Method of detecting idle game controller
WO2022269319A1 (en) * 2021-06-23 2022-12-29 Sensetime International Pte. Ltd. Methods, apparatuses, systems, devices and storage media for processing abnormal event
CN114205351A (zh) * 2021-11-01 2022-03-18 北京中合谷投资有限公司 一种面向家庭客户的云游戏业务系统和方法
CN114095533B (zh) * 2021-11-10 2024-07-09 网易(杭州)网络有限公司 云游戏账号登录方法、装置、计算机设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012234564A (ja) 2012-08-03 2012-11-29 Ntt Data Corp 仮想マシンの移行方法、サーバ、及び、プログラム
WO2014123169A1 (en) 2013-02-06 2014-08-14 Square Enix Holdings Co., Ltd. Game system, game apparatus, a method of controlling the same, a program, and a storage medium

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2239810B (en) * 1990-01-10 1994-06-22 Leung Yiu Choi Computer game control apparatus
US20020055381A1 (en) * 1999-04-23 2002-05-09 Tarantino Elia Rocco Multi-player game and gaming system
US6592457B1 (en) * 1999-05-26 2003-07-15 Wms Gaming Inc. Gaming machine with player selected events
US9138644B2 (en) * 2002-12-10 2015-09-22 Sony Computer Entertainment America Llc System and method for accelerated machine switching
US20060068861A1 (en) * 2004-09-30 2006-03-30 Holly Triestram Method for presenting content during pauses in an interactive video game
US20060148571A1 (en) * 2005-01-04 2006-07-06 Electronic Arts Inc. Computer game with game saving including history data to allow for play reacquaintance upon restart of game
US8166131B2 (en) * 2007-09-21 2012-04-24 Sony Computer Entertainment Inc. Network delivery of entertainment software
US8197345B2 (en) * 2009-10-30 2012-06-12 At&T Intellectual Property I, L. P. Methods, systems, and products for centralized control of gaming applications
JP5749895B2 (ja) * 2010-04-05 2015-07-15 株式会社ソニー・コンピュータエンタテインメント ゲーム装置
US9021390B1 (en) * 2010-05-05 2015-04-28 Zynga Inc. Methods and apparatus for optimized pausing of an embedded application to render pop-up window
US8632409B2 (en) * 2010-05-11 2014-01-21 Bungie, Llc Method and apparatus for online rendering of game files
EP2574382B1 (en) * 2011-09-29 2019-05-15 Sony Interactive Entertainment Europe Limited Video game assistance system and method
JP5851048B2 (ja) * 2011-12-19 2016-02-03 エンパイア テクノロジー ディベロップメント エルエルシー ジェスチャーベースのゲームのための休止および再開方式
US9345966B2 (en) * 2012-03-13 2016-05-24 Sony Interactive Entertainment America Llc Sharing recorded gameplay to a social graph
US10127082B2 (en) * 2012-04-05 2018-11-13 Electronic Arts Inc. Distributed realization of digital content
US8961302B2 (en) * 2012-07-20 2015-02-24 Microsoft Technology Licensing, Llc Game browsing
US9266022B1 (en) * 2012-08-21 2016-02-23 David Paul Pasqualone System to pause a game console whenever an object enters an exclusion zone
US9381432B2 (en) * 2012-08-24 2016-07-05 Microsoft Technology Licensing, Llc Game migration
US8764555B2 (en) * 2012-10-02 2014-07-01 Nextbit Systems Inc. Video game application state synchronization across multiple devices
US20140113705A1 (en) * 2012-10-19 2014-04-24 Nvidia Corporation Quick-resume gaming
EP2745893B1 (en) * 2012-12-21 2019-03-20 Sony Computer Entertainment America LLC Automatic generation of suggested mini-games for cloud-gaming based on recorded gameplay
US10258881B2 (en) * 2012-12-26 2019-04-16 Sony Interactive Entertainment America Llc Systems and methods for tagging content of shared cloud executed mini-games and tag sharing controls
US9233309B2 (en) * 2012-12-27 2016-01-12 Sony Computer Entertainment America Llc Systems and methods for enabling shadow play for video games based on prior user plays
US9858052B2 (en) * 2013-03-21 2018-01-02 Razer (Asia-Pacific) Pte. Ltd. Decentralized operating system
US10394414B1 (en) * 2013-07-19 2019-08-27 Kabam, Inc. Facilitating automatic execution of user interactions in a virtual space
US10353633B2 (en) * 2013-12-19 2019-07-16 Sony Interactive Entertainment LLC Mass storage virtualization for cloud computing
US9332216B2 (en) * 2014-03-12 2016-05-03 Sony Computer Entertainment America, LLC Video frame rate compensation through adjustment of vertical blanking
US11083963B2 (en) * 2014-07-22 2021-08-10 Sony Interactive Entertainment LLC Save game load time reduction for cloud gaming
US9795879B2 (en) * 2014-12-31 2017-10-24 Sony Interactive Entertainment America Llc Game state save, transfer and resume for cloud gaming
US20160259453A1 (en) * 2015-03-06 2016-09-08 Sony Computer Entertainment America Llc Dynamic adjustment of cloud game data streams to output device and network quality
JP6526826B2 (ja) * 2015-03-06 2019-06-05 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー クラウド上のアプリケーションのための予測的なインスタントプレイ技術
US10315108B2 (en) * 2015-08-19 2019-06-11 Sony Interactive Entertainment America Llc Local application quick start with cloud transitioning
US9993729B2 (en) * 2015-08-19 2018-06-12 Sony Interactive Entertainment America Llc User save data management in cloud gaming
US10744407B2 (en) * 2015-09-08 2020-08-18 Sony Interactive Entertainment LLC Dynamic network storage for cloud console server
US10549203B2 (en) * 2015-09-30 2020-02-04 Sony Interactive Entertainment America Llc Systems and methods for providing time-shifted intelligently synchronized game video
US10549204B2 (en) * 2015-09-30 2020-02-04 Sony Interactive Entertainment America Llc Systems and methods for providing augmented data-feed for game play re-creation and dynamic replay entry points
US11420114B2 (en) * 2015-09-30 2022-08-23 Sony Interactive Entertainment LLC Systems and methods for enabling time-shifted coaching for cloud gaming systems
US11040281B2 (en) * 2015-09-30 2021-06-22 Sony Interactive Entertainment LLC Multi-user demo streaming service for cloud gaming
US10376781B2 (en) * 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10742767B2 (en) * 2016-02-02 2020-08-11 Sony Interactive Entertainment LLC Systems and methods for downloading and updating save data to a data center
US10238965B2 (en) * 2016-04-28 2019-03-26 Sony Interactive Entertainment America Llc Cloud gaming device handover
US10888788B2 (en) * 2016-06-30 2021-01-12 Sony Interactive Entertainment Inc. Automated artificial intelligence (AI) control mode for playing specific tasks during gaming applications
EP3773953B1 (en) * 2018-04-02 2024-06-19 Google LLC Methods, devices, and systems for interactive cloud gaming
US11074666B2 (en) * 2019-01-30 2021-07-27 Sony Interactive Entertainment LLC Scalable game console CPU/GPU design for home console and cloud gaming
US10918938B2 (en) * 2019-03-29 2021-02-16 Electronic Arts Inc. Dynamic streaming video game client

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012234564A (ja) 2012-08-03 2012-11-29 Ntt Data Corp 仮想マシンの移行方法、サーバ、及び、プログラム
WO2014123169A1 (en) 2013-02-06 2014-08-14 Square Enix Holdings Co., Ltd. Game system, game apparatus, a method of controlling the same, a program, and a storage medium

Also Published As

Publication number Publication date
US20180043256A1 (en) 2018-02-15
JP2020103941A (ja) 2020-07-09
CN107106909A (zh) 2017-08-29
US20200129859A1 (en) 2020-04-30
US11058949B2 (en) 2021-07-13
JP2020163226A (ja) 2020-10-08
JP2018504193A (ja) 2018-02-15
EP3240616A1 (en) 2017-11-08
US20210038983A1 (en) 2021-02-11
EP3682953B1 (en) 2024-01-03
JP6841952B2 (ja) 2021-03-10
EP3240616B1 (en) 2020-10-07
EP3682953A1 (en) 2020-07-22
US9795879B2 (en) 2017-10-24
US10814227B2 (en) 2020-10-27
US11612814B2 (en) 2023-03-28
US10512841B2 (en) 2019-12-24
WO2016109066A1 (en) 2016-07-07
US20160184712A1 (en) 2016-06-30
CN111420397A (zh) 2020-07-17
US20210339136A1 (en) 2021-11-04

Similar Documents

Publication Publication Date Title
JP7066784B2 (ja) クラウドゲーミングに関するゲームステートセーブ、転送および再開
US12011660B2 (en) Augmenting video games with add-ons
US8961302B2 (en) Game browsing
US9350787B2 (en) Methods and systems for generation and execution of miniapp of computer application served by cloud computing system
EP3161636B1 (en) Data center management of multimode servers
EP2750032B1 (en) Methods and systems for generation and execution of miniapp of computer application served by cloud computing system
US20140057722A1 (en) Game migration
US20140256420A1 (en) Univied game preview

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200730

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211217

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220427

R150 Certificate of patent or registration of utility model

Ref document number: 7066784

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150