(58)【調査した分野】(Int.Cl.,DB名)
プレイヤーから受信された前記応答は、前記プレイヤーが前記スケジュールされた時間に前記ビデオゲームのゲームプレイを始めることを可能にするように、前記クラウドゲーミングシステムが前記プレイヤーに対するゲームプレイに対して前記ビデオゲームを事前ロードを始めるための承認を含み、前記サーバによって実行される前記プレイヤーに対する前記ビデオゲームの前記事前ロードでは、
前記ビデオゲームのセットアップの間に前記プレイヤーが従うルーチンのセットを前記ビデオゲームのゲームデータから取り出し、
前記ポイントまでの前記ビデオゲームのセットアップの間及び前記ビデオゲームの実行の間、前記ルーチンのセットの各々のルーチンについての前記プレイヤーによって行われる入力を取り出し、
前記サーバにおいて前記ビデオゲームをインスタンス化し、前記インスタンス化では、前記プレイヤーが従う前記ルーチンのセットを実行し、かつ、前記ルーチンのセットの各々のルーチン及び前記ポイントまでの前記ビデオゲームの実行の間の前記入力を自動で行い、前記ビデオゲームの前記事前ロードによって、前記ビデオゲームのゲームデータが、前記ゲームプレイが始まるポイントまで更新されて、前記プレイヤーが、前記ビデオゲームが中断されるポイントからゲームプレイを再開することが可能になるものであり、
前記ルーチンのセット及び入力は、前記プレイヤーに対して特有であり、前記ルーチンのセット及び入力は、前記プレイヤーの信用情報、前記プレイヤーによって提供されるゲームカスタマイズ、前記ルーチンのセットにおける各々のルーチンの間に前記プレイヤーによって行われる入力、及び前記プレイヤーのゲーム状態を識別する情報を提供し、前記プレイヤーは、前記第1プレイヤー、または前記スケジュールされた時間に前記ビデオゲームのゲームプレイに加わるための前記招待を受け付けた前記他の特定のプレイヤーのうちのいずれか1人である、
請求項1に記載の方法。
更に、前記第1プレイヤー及び前記他の特定のプレイヤーのそれぞれが前記ビデオゲームのゲームプレイのために前記クラウドゲーミングシステムにアクセスすることを可能にするように、前記スケジュールされた時間からの追加の予め定義された閾値期間を提供する、
請求項1に記載の方法。
更に、応答の評価では、前記第1プレイヤーに、前記他の特定のプレイヤーが前記スケジュールされた時間における前記ビデオゲームのゲームプレイのための前記招待を受け付けたことを知らせる確認通知を送信する、
請求項1に記載の方法。
前記他のプレイヤーは、前記第1プレイヤーとの前記ビデオゲームのゲームプレイに前に関与したプレイヤー、または現在オンラインであり、別のアプリケーションとインタラクションを行っている前記第1プレイヤーのソーシャルコンタクトである、
請求項1に記載の方法。
前記他のプレイヤーは、前記第1プレイヤーとの前記ビデオゲームのゲームプレイに現在関与している前記他のプレイヤーに基づいて、または前記ビデオゲームのゲームプレイに現在関与している前記他のプレイヤーから、または前記第1プレイヤーとの他のビデオゲームのゲームプレイに関与している前記他のプレイヤーから、または他のビデオゲームのゲームプレイに関与している前記他のプレイヤーから、または他のオンラインアプリケーションとのインタラクションへの現在の関与から、または他のオンラインアプリケーションへの前の関与から識別される、
請求項10に記載の方法。
前記ゲームの事前ロードでは、更に、前記第1プレイヤー及び前記他の特定のプレイヤーが前記現在のゲーム状態によって定義された前記ポイントから前記スケジュールされた時間に前記ビデオゲームのゲームプレイを始めることを可能にするように、前記ビデオゲームのインスタンス化を同期し、及び前記スケジュールされた時間に対して定義された前記時間ウインドウ内に1つ以上のデータセンタにおいて、前記第1プレイヤー及び前記他の特定のプレイヤーの各々に対して前記ビデオゲームのゲームデータをアップロードする、
請求項12に記載の方法。
前記プレイヤーの前記地理的位置は、前記プレイヤーの前記クライアントデバイス内で利用可能なグローバルポジショニングシステムの信号から取得された地理的位置情報に対して、またはウェブブラウジングアプリケーションとの前記プレイヤーのインタラクションから取得された情報から、または前記プレイヤーのソーシャルメディアの投稿から取得された情報から、またはクライアントデバイス内のアプリケーションとの前記プレイヤーのインタラクションから取得された情報から、またはそれらの2つ以上の組み合わせから検証される、
請求項12に記載の方法。
前記プレイヤー及び前記他の特定のプレイヤーの各々に対する前記ビデオゲームの前記インスタンス化は、前記第1プレイヤー及び前記他の特定のプレイヤーが、前記現在のゲーム状態によって定義された前記ポイントから、前記スケジュールされた時間に前記ビデオゲームのゲームプレイを始めることを可能にするように同期される、
請求項16に記載の方法。
前記プレイヤーの各々は、それぞれの前記プレイヤーと関連付けられたユーザ属性、ゲームプレイ信用情報に基づいて識別され、前記ゲームプレイ信用情報は、前記ビデオゲームのゲームプレイにおける前記それぞれのプレイヤーの関与を識別する、
請求項20に記載の方法。
【発明を実施するための形態】
【0017】
以下の説明では、本発明の完全な理解を提供するために、多くの特定の詳細が示される。しかしながら、本発明は、それらの具体的な詳細のいくつかについて、あるいは具体的な詳細の全てについて、それらを用いることなく実施し得ることが当業者にとって明らかである。他の例では、本発明を不明瞭にしないために、周知の処理工程を詳細には説明していない。
【0018】
本発明の様々な実施形態に従って、ユーザは、ユーザアカウントを通じてクラウドゲーミングシステムにアクセスし、ゲームを選択する。リクエストは、ユーザがゲームプレイのためにスケジュールする時間、及びユーザがゲームのゲームプレイのために招待することを望むプレイヤーのアイデンティティを含む。クラウドゲーミングシステムは、ユーザのクライアントデバイスから発するリクエストを検出し、それに応答して、ユーザによってスケジュールされた時間にゲームのゲームプレイに加わるように、他のプレイヤーに通知を送信する。通知への他のプレイヤーの応答は、他のプレイヤーのうち、どの1人がスケジュールされた時間の間にゲームのゲームプレイへの関心を表したかを判定するように評価される。評価に基づいて、クラウドゲーミングシステムは、クラウドゲーミングシステムと関連付けられた特定のデータセンタにゲームを事前ロードし、ユーザ及び他のプレイヤーがクラウドゲーミングシステムにおいてゲームにアクセスするとゲームをゲームプレイすることを可能にするように、クラウドゲーミングシステムと関連付けられた特定のデータセンタにゲームを事前ロードする。ゲームのロードは予め行われ、ユーザ及び他のプレイヤーがゲームにアクセスし、ゲームをプレイすることを開始することを可能にする。
【0019】
スケジュールされた時間にゲームのゲームプレイのためにちょうど良いタイミングでゲームの事前ロードを実行することは、クラウドゲーミングシステムが、ネットワーク及びシステムリソースを必要とされる期間の間に賢明に割り当て、ユーザ及び他のプレイヤーがゲームをプレイするためにクラウドゲーミングシステムにアクセスしようとしていない残りの期間の間にリソースを不必要に拘束しないことを可能にする。更に、スケジュールされた時間にゲームをゲームプレイのために準備させることで、ユーザ及び他のプレイヤーが、セットアップルーチンを行うことを必要とせず、ユーザ及び他のプレイヤーがゲームストリームに直接「ドロップイン」することを可能にする。本明細書で説明される様々な実施形態の他の利点が当業者にとって明らかになる。
【0020】
クラウドゲーミングシステムは、ユーザ及び他のプレイヤーの現在の地理的位置を判定するように、ユーザのユーザプロファイル及び他のプレイヤーのユーザプロファイルをクエリしてもよく、またはユーザ及び他のプレイヤーのクライアントデバイスから生成された信号を使用してもよい。ユーザ及び他のプレイヤーの現在の地理的位置に近接した1つ以上のデータセンタが識別される。データセンタ内のサーバは、サーバがゲームのゲームプレイのために必要とされる十分な処理及び通信リソースを有するかどうかを判定するように評価される。例えば、データセンタ内のサーバは、利用可能な通信プロトコル、利用可能なシステムリソース、接続速度(すなわち、ストリーミング速度)、などに基づいて評価されてもよく、スケジュールされた時間の直前にゲームコード及びゲームデータをアップロードするためのサーバの特定の1つが識別されてもよい。ゲームデータの時機を得たアップロードは、ユーザ、及びゲームをプレイすることに合意した他のプレイヤーと関連付けられたクライアントデバイスが、クラウドゲーミングシステムに接続し、スケジュールされた時間にゲームのゲームプレイを即時に始めることを可能にする。
【0021】
ゲームプレイの間、識別されたデータセンタにおけるシステムリソース、及び対応するクライアントデバイスと識別されたデータセンタのうちの特定の1つのサーバとの間の接続の接続属性は、ゲームのゲームプレイのための接続要件を満たすことを保証するように監視される。十分なシステムリソースがゲームのゲームプレイの間に利用可能であることを保証するように、周期的なサービス品質テストが行われる。ユーザ及び他のプレイヤーは、データセンタの単一のサーバからゲームにアクセスしていることがある。代わりに、ユーザ及び他のプレイヤーは、単一のデータセンタまたは複数のデータセンタ内の複数のサーバからゲームにアクセスしていることがある。結果として、識別されたデータセンタ(複数可)内のサーバ(複数可)は、ユーザ及び他のプレイヤーが満足するゲームプレイ経験を有することを可能にするように、サーバ(複数可)がリソースを提供できることを保証するように検証されてもよい。
【0022】
ゲームについてのゲームデータは、ゲーム関連データ及びユーザ関連データを含んでもよい。ゲーム関連データ及び/またはユーザ関連データは、ゲームコード、及びユーザがゲームのゲームプレイを再開することに関心があるポイント(例えば、ゲームのために記録された現在のゲーム状態)までゲームを再作成するのに十分であるゲーム状態情報を含んでもよい。ゲームの再作成は、ユーザ、及びゲームプレイリクエストに応答した他のプレイヤーが、ポイントから前方にゲームプレイを再開し、ゲームのゲームプレイに全体的に没頭することを可能にする。
【0023】
システムリソース及び接続属性を監視することは、ユーザまたは他のプレイヤーのそれぞれのクライアントデバイスとプレイヤー(すなわち、ユーザまたは他のプレイヤー)に対してゲームデータを提供するために使用されるデータセンタの対応するサーバとの間で確立された通信接続の接続速度、使用される通信プロトコル、サーバ及びデータセンタにおける通信及びシステムリソースの可用性、スケジュールされた時間における予想される通信及びシステムリソースリクエストなどのうちの1つ以上を監視することを含んでもよい。通信接続の監視は、割り当ての前または後にそれぞれのクライアントデバイスと対応するデータセンタとの間でストリーミングデータパケットを交換し、交換を評価することによって実行されてもよい。スケジュールされた時間及びゲームプレイの間のそのような監視は、サービス品質がゲームプレイの間に悪化しないことを保証することである。リソースまたは接続属性が予期される接続要件に満たない場合、次いで、ユーザに対して最適なゲーム体験を提供するように、割り振られたサーバ内で追加のリソースが割り当てられてもよく、またはデータセンタ内のサーバが別のサーバに切り替えられてもよく、または同じ地理的位置内でデータセンタが別のデータセンタに切り替えられてもよい。
【0024】
ユーザ及び他のプレイヤーが、最小のレイテンシからレイテンシなしで現在のゲームデータが提示されるように、1つ以上のデータセンタ内の1つ以上のサーバにおけるゲームコードの実行及びゲームデータのロードが同期される。ゲームプレイの間に生成されたデータは、ゲームのゲーム状態に影響を与えるように使用され、ゲームデータデータストアにゲームデータとして記憶される。ゲームデータは、割り振られたデータセンタ(複数可)のプロファイル並びにユーザ及び他のプレイヤーのユーザプロファイル内のユーザメトリックを更新するために使用され、必要とされるときにゲームを再作成する十分な詳細を含む。それぞれのデータセンタ(複数可)におけるリソースの現在の状態を判定するために、データセンタプロファイルが使用されてもよい。例えば、データセンタプロファイルは、利用可能である接続属性、ユーザからのリクエストがサービスされたときに使用された接続属性、利用可能なシステムリソース、及びゲームプレイのためのリクエストのサービスの間に消費されたシステムリソースを識別する。識別されたデータセンタが十分なリソースを有すること、及びデータセンタと対応するクライアントデバイス(複数可)との間の接続の接続属性がスケジュールされた時間の間にゲームのグラフィックをストリーミングするための接続の要件を満たし、ユーザ及び他のプレイヤーのクライアントデバイスへのゲームプレイデータの伝送の間のいずれかのレイテンシを回避することを可能にすることを保証するために、データセンタプロファイルが使用される。
【0025】
クラウドゲーミングシステムは、多数の人々が同時に同一のコンテンツをプレイするようにオンラインで集める方式を提供する。クラウドゲーミングシステムは、オーガナイザ(すなわち、ユーザまたは第1プレイヤー)がゲームのゲームプレイイベントのための時間をスケジュールすることを可能にする。それに応答して、クラウドゲーミングシステムは、オーガナイザによって識別されたプレイヤーに通知を送信する。オーガナイザ及びプレイヤーが、クラウドゲーミングシステムにアクセスすると即時にゲームに接続することができるように、ゲームを事前ロードするために、1つ以上のサーバが使用される。事前ロードは、リクエストをオプトインするプレイヤーがゲームプレイのストリームに即時にドロップインすることを可能にする。クラウドゲーミングシステムは、ユーザ及びプレイヤーを集めて、スケジュールされた時間にイベントを実行するように手を携えて作用するゲームストリーミングサービス及びプッシュ通知サービスの組み合わせを提供する。
【0026】
本明細書で説明される様々な実施形態は、ビデオゲームのユーザ及びプレイヤーがゲームに直接「ドロップイン」し、ゲームプレイを始めることが可能にできるように、クラウドゲーミングシステムが、ユーザによってスケジュールされた時間にシステム及び通信リソースをスマートに割り当てることを可能にする。プレイヤー及びユーザが即時に接続することができ、ゲームプレイを始めることができるように、ユーザは、ゲームプレイイベントなどのイベントのための時間をスケジュールまたはプログラムし、サーバは、ゲームを事前ロードするために利用可能なリソースを使用する。ユーザは、周期的にゲームプレイイベントをスケジュールしてもよく(例えば、1日に1回、1週間に1回など)、またはランダムにスケジュールしてもよい。様々な実施形態は、人々のグループがゲームアプリケーションのゲームプレイなどのイベントを実行するためのスケジュールされた時間にオンラインで集合することを可能にし、クラウドゲーミングシステムは、スケジュールされた時間にイベントを実行するために適時にリソースを割り当てる。本発明の全体的な理解により、ここでは、様々な図面を参照して特定の実施形態が説明される。
【0027】
図1は、スケジュールされた時間に、ゲームアプリケーションのゲームプレイなどのアプリケーションとインタラクション(あるいは対話)を行うためのリクエストを検出するために使用されるシステムの簡易ブロック図を例示する。リクエストは、第1プレイヤーのクライアントデバイス100から受信される。第1プレイヤーのクライアントデバイス100は、例えば、地理的位置1と関連付けられてもよい。クライアントデバイス100は、インターネットなどのネットワーク200を通じて、クラウドゲーミングシステム300上でアプリケーションサーバ301などのサーバに通信可能に接続される。サーバは、複数のサーバ、ゲームコンソールなどを含むデータセンタの一部であってもよい。
【0028】
クライアントデバイス100は、処理モジュール(すなわち、プロセッサ)110、メモリ、並びにサーバ側アプリケーションと通信するようにネットワーク及び適切なアプリケーションプログラミングインタフェース(API)に接続するためのネットワーク接続を含むいずれかのコンピューティングデバイスである。プロセッサは、クライアント側アプリケーションを実行できる。クライアント側アプリケーションは、スタンドアロンで稼働してもよく、またはネットワーク接続を通じてネットワーク200に接続することによってサーバ側アプリケーションとインタラクションを行ってもよく、サーバ側アプリケーションと通信し、もしくはサーバ側アプリケーションにアクセスするためにAPIを使用してもよい。ネットワーク接続は、有線または無線接続とすることができる。クライアントデバイス100は、シンクライアント、汎用コンピュータ、専用コンピュータ、ゲームコンソール、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、モバイルコンピューティングデバイス、ポータブルゲーミングデバイス、携帯電話、スマートフォン、セットトップボックス、ストリーミングメディアインタフェース/デバイス、スマートテレビもしくはネットワーク化されたディスプレイ、またはローカルに利用可能でありもしくはクラウドゲーミングシステムのリモートサーバ上で利用可能なアプリケーションにアクセスするために使用することができるいずれかの他のコンピューティングデバイスであってもよい。使用されるネットワーク接続及び通信プロトコルは、クライアントデバイス100がリモートサーバと通信して、クラウドゲーミングシステム300の一部であるアプリケーションサーバ301などのリモートサーバから、マルチメディアコンテンツのビデオフレームのストリームを受信することを含む、コンテンツを受信することを可能にする。リモートサーバによってストリーミングされるビデオフレームは、エンコーダを使用して圧縮を受けている。クライアントデバイス100は、リモートサーバによって伝送されたゲームプレイコンテンツを表すビデオフレームのストリームを解凍し、クライアントデバイス100のディスプレイスクリーン上で画像をレンダリングするデコーダを含んでもよい。レンダリングされた画像は、ゲームの現在のゲーム状態を識別する。
【0029】
ゲームの現在のゲーム状態は、ゲームサーバまたは他のアプリケーションサーバからの音声/ビデオデータを受信、復号、レンダリングし、ユーザ入力をゲームサーバまたは他のアプリケーションサーバに再度通信するように主に機能するクライアントデバイス100により、リモートサーバ上で実質的に維持及び実行される。クライアントデバイス100は、ディスプレイデバイス上でレンダリングするためのビデオデータを提供するように、ディスプレイデバイスに接続されたスタンドアロンコンピューティングデバイスであってもよい。他の実施形態では、ディスプレイデバイスは、クライアントデバイス100に統合されることができる。一実施形態では、クライアントデバイスは、ディスプレイデバイスのネットワーク接続性を利用したアプリケーションすなわち「app」についてのプラットフォームオペレーティングシステムを提供するネットワーク化されたディスプレイデバイスである、ディスプレイデバイスである。そのような実施形態では、クライアントデバイス100は、ディスプレイデバイスのオペレーティングシステムによって提供されるプラットフォーム上で実行されるアプリケーションによって定義されることができる。
【0030】
本出願において使用されるアプリケーションサーバ301は、ローカルサーバ、仮想コンピュータ、クラウドゲーミングサーバ、デジタルメディアサーバ、ゲーム開発者/ゲームスポンサのストアフロントを提供するために使用されるサーバ、ウェブサーバ、端末サーバ、コンソールサーバ、リモートサーバ、または使用の間にユーザがアクセス及びインタラクションを行うことができるインタラクティブアプリケーションを実行するための処理リソースを提供することもしくは割り当てることを含む、1つ以上のインタラクティブアプリケーション(例えば、ゲームアプリケーション)をホストできるデータセンタ305において利用可能ないずれかの他のタイプもしくは形式のサーバコンピューティングデバイスである。アプリケーションサーバ301は、特定のタイプの通信プロトコルに従ったアプリケーションプログラミングインタフェース(API)呼び出しを使用して、ビデオフレームにあるデータを圧縮し、圧縮されたビデオフレームをデータストリームにおいてクライアントデバイス100に転送するエンコーダを含んでもよい。
【0031】
例えば、データセンタ305内の、クラウドゲーミングサーバの形式にあるアプリケーションサーバ301は、ユーザアカウントに対して利用可能な様々なビデオゲームを実行し、ゲームプレイの間に提供されるユーザインタラクションに基づいてその時々で様々なビデオゲームのゲーム状態を定義し、ビデオデータ(画像データ、音声データ、触覚データなどを含む)を特定の地理的位置内でまたは複数の地理的位置にわたって分散された1つ以上のクライアントデバイス100に送信する。所与の地理的位置(複数可)におけるクライアントデバイス100は、ビデオゲーム(複数可)をプレイするユーザ(複数可)からの入力を受信及び処理し、処理された入力データをクラウドゲーミングサーバに伝送し、クラウドゲーミングサーバは、1つ以上のビデオゲームのゲーム状態に影響を与える追加の処理を実行する。クラウドベースのゲーミングは、ネットワーク200を通じて全てのプレイヤーによってアクセス可能な1つ以上のリモートクラウドゲーミングサーバにおける実行のためのビデオゲームのインスタンスを提供することによって、異なる地理的位置に位置するプレイヤーに対してマルチプレイヤーゲーミングを促進する。この方式では、ビデオゲームの実行は、いずれの単一のプレイヤーのハードウェアまたはネットワーク接続性にも依存しないが、それは、その所与のプレイヤーについてのユーザ経験に影響を与えることがある。
【0032】
本明細書で説明されるクラウドゲーミングアーキテクチャを使用して実行される動作は、データベースへの即時アクセス及びユーザのリモートに位置するクライアントデバイス100への、ゲームプレイコンテンツなどのコンテンツの提示を可能にするために、複数のサーバ及び/または実行プラットフォームを必要とする技術的動作を形成する。クラウドゲーミングサーバはまた、様々な圧縮技術を利用することによって、ゲームデータをクライアントデバイス(複数可)に伝送する前にゲームデータに対して圧縮動作を実行する。圧縮技術は、標準的なエンコーダを使用してもよく、標準的なエンコーダは次いで、クライアントデバイス100上の標準的なデコーダがクライアントデバイス100上の画像、ビデオ、及び音声データにアクセス、復号、及びレンダリングすることを可能にして、ビデオゲームのゲームプレイを可能にする。ビデオゲームの実行の管理及び複数のクライアントデバイスへのゲームデータの分散は、いくつかのデータセンタ(350−1〜305−n)、ダイレクションサーバ(direction server: DS)、サービス品質テスタまたはエンジン、より低レイテンシのデータセンタへのダイレクション及びリダイレクションなどを伴うことができる。それらの動作及びタスクは、ゲームをリモートに実行し、広い地形にわたって分散されたクライアントデバイス100にデータを配信する間の、ストリーミング及び低レイテンシのために設計された専用サーバコンピュータを利用してもよい。
【0033】
データセンタ305は、一実施形態では、複数のサーバ(例えば、ゲーミングサーバ)301、ゲームコンソール301a、ゲームコード(109)、アプリケーションコード(111)、ユーザ関連データ(304)、及びアプリケーション関連ゲームデータ(107)を記憶し、それらをすぐに利用可能にして複数のユーザからのリクエストの変化に対応することを可能にできる記憶システムを含む。ユーザ及びプレイヤーは、ユーザの前のゲームプレイ、別のユーザの現在もしくは前のゲームプレイを参照するために、またはゲームアプリケーションの結果に影響を与える入力を行うために、ゲームアプリケーションなどのインタラクティブ(対話型)アプリケーションにアクセスする人を指して本出願で交換可能に使用されることに留意されるべきである。データセンタはまた、様々なクライアントデバイスと複数のサーバとの間で通信接続を確立する、ルータ、スイッチなどの電気通信機器を含んでもよい。複数のサーバの各々は、クライアントデバイス100における対応するクライアント側と、またはサードパーティソーシャルメディアもしくはコンテンツプロバイダと関連付けられたサーバ側APIと通信するためのサーバ側API(別個のまたは同様のいずれか)を備えてもよい。いくつかの実施形態では、データセンタ内のサーバは、ゲーミングアプリケーションなどを含む様々なタイプのアプリケーションを実行し、アプリケーションコンテンツをレンダリングのための対応するクライアントデバイス100にストリーミングするように構成されてもよい。サーバは、様々な圧縮技術を使用して、サーバによって生成または提供されるいずれかのデータに対して圧縮の動作を実行し、通信及び/または伝送プロトコルのいずれか1つを使用して、圧縮されたデータをクライアントデバイスに転送するように構成されてもよい。
【0034】
サーバは、典型的には特定の機能、ゲーム、またはアプリケーションを実行または稼働させるために使用される、端末サーバ、コンソールサーバ、仮想サーバなどを含んでもよい。サーバによって実行される機能、ゲーム、またはアプリケーションのいくつかの例は、データベース管理、ファイル管理、メールサービス、プリントサービス、音声サービス、ビデオサービス、ウェブサービス、ゲーム管理、アプリケーション管理、メディア管理、カタログサービス、通信管理、コンピューティングサービス、及びプロキシ管理などを含んでもよい。いくつかの実施形態では、サーバの列及び/またはストレージラックを含む各々のデータセンタと共に、ラックマウントサーバまたは記憶装置として複数のサーバ及び/または記憶装置が設けられてもよい。各々のサーバは、複数のアプリケーションを実行する能力を有してもよく、及び/または多種多様なサービスを提供してもよい。
【0035】
スケジュールされた時間におけるビデオゲームのゲームプレイのリクエストは、クラウドゲーミングシステム300などのホスティングシステムにおいてクライアントデバイス100から受信される。ゲームプレイのリクエストは、ビデオゲームのゲーム識別子、及びゲームをプレイするために招待される1人以上のプレイヤーのアイデンティティを含む。アプリケーションサーバ301などのサーバは、リクエストを受信し、ユーザアカウントデータ処理エンジン302に、クライアントデバイス100においてリクエストを開始したユーザを認証するようにユーザ関連情報を取得することに関与させる。ユーザアカウントデータ処理エンジン302は、ユーザアカウントデータベース304をクエリし、ユーザプロファイル及びユーザアカウント情報を受信するように構成されている。ユーザアカウントデータベース304は、クラウドゲーミングシステム300の複数のユーザのユーザプロファイル及び他のユーザアカウント情報を記憶する。ユーザプロファイル及びユーザアカウント情報は、ユーザ及びユーザによって開始されたリクエストを認証するために使用される。リクエストの認証が成功すると、リクエストがサービスするためのゲームプレイスケジューラ311に転送される。
【0036】
ユーザを認証することの一部として、アプリケーションサーバ301のユーザアカウントデータ処理エンジン302は、ユーザが保有する全てのゲーム及び/またはアプリケーション、自由に利用可能な全てのゲーム及び/またはアプリケーションを判定するようにユーザアカウントデータベース304をクエリし、リクエストにおいて識別されたゲームが、ユーザとのインタラクションを承認されたゲームのうちの1つであることを検証するためにこの情報を使用する。リクエストにおいて識別されたゲームが、ユーザとのインタラクションを承認されたゲームのうちの1つでない場合、ゲーミングサーバ(すなわち、アプリケーションサーバ301)におけるユーザアカウントデータ処理エンジン302は、エラーまたは警告メッセージを生成し、警告メッセージをレンダリングのためのクライアントデバイス100に転送する。リクエストにおいて識別されたゲームが、ユーザがインタラクションを行うことを承認されたゲームのうちの1つである場合、ユーザアカウントデータ処理エンジン302は、リクエストをサービスするためにゲームプレイスケジューラ311にリクエストを転送する。
【0037】
リクエスト認証の一部として、ユーザアカウントデータ処理エンジン302は、リクエストにおいて識別されたプレイヤーのユーザプロファイル及びユーザアカウント情報を取得するようにユーザアカウントデータベース304をクエリし、リクエストにおいて識別されたプレイヤーの各々がゲームにアクセスし、ゲームをプレイすることを承認されることを保証するためにこの情報を使用する。プレイヤーは、ユーザのソーシャルコンタクトであってもよく、ソーシャルネットワークもしくは他のコンタクトリストから識別されてもよく、またはビデオゲームもしくは他のビデオゲームのゲームプレイの間、もしくはクラウドゲーミングシステムによってホストされた他のアプリケーションとのインタラクションの間に開発されたコンタクトであってもよい。ユーザプロファイル及びユーザアカウントにおいて提供される情報は、例えば、コンタクト情報、各々のプレイヤーがアクセスすることができまたはアクセスを有するゲーム及びアプリケーションのリスト、ユーザ信用情報、ユーザスキル、ユーザの好み、ゲームまたはアプリケーションをセットアップするために使用されるログインルーチンなどを含む。ユーザプロファイルにおける情報に基づいて、リクエストにおいて識別されたプレイヤーのうちの1人以上がゲームをプレイするための承認を有していないと判定される場合がある。そのようなケースでは、リクエストに含まれる招待は、1回に1人以上のプレイヤーにゲームプレイのためのゲームへのアクセスを提供して、それらのプレイヤーがゲームを経験することを可能にするクラウドゲーミングシステムへの信号を含んでもよい。検証されると、ユーザアカウントデータ処理エンジン302は、プレイヤーの取り出されたユーザプロファイル及びユーザアカウント情報をゲームプレイスケジューラ311に転送する。
【0038】
ゲームプレイスケジューラ311は、リクエストにおいて識別されたプレイヤーの各々に通知を送信するために、プレイヤーのコンタクト情報を使用する。ゲームプレイスケジューラ311内のappスケジューラ351aは、リクエストにおいて識別されたプレイヤーの各々に通知を送信するために使用されてもよい。この通知は、一実施形態では、ゲームのゲームプレイのリクエストを開始するユーザの識別子、ゲームプレイのためのユーザによって指定されたスケジュールされた時間、ゲームのゲーム識別子、通知が送信されるプレイヤーの識別子、及びゲームプレイのために選択されたビデオゲームの他の付属情報を含んでもよい。いくつかの実施形態では、各々のプレイヤーへの通知はまた、ゲームのゲームプレイのためにユーザによって招待された他のプレイヤーの識別子を示してもよい。
【0039】
通知に応答して、プレイヤーのうちの1人以上は、ゲームプレイの招待を受け付ける可能性がある。各々のプレイヤーから受信された応答は、プレイヤーのうちのどの1人がスケジュールされた時間にビデオゲームをプレイする招待を受け付けたか、及びどの1人が招待を拒否したかを判定するように、appスケジューラ351aによって評価される。応答は、スケジュールされた時間の間、ゲームプレイセッションに対してゲームをセットアップするためのクラウドゲーミングシステムについての認証を含んでもよく、または認証の役割を果たしてもよい。appスケジューラ351aは、一実施形態では、リクエストを開始した第1プレイヤーに招待を受け付けたプレイヤーの詳細を提供してもよい。
【0040】
appスケジューラ351aは、ゲームプレイの招待を受け付けた各々のプレイヤーのユーザプロファイル情報を取得するように、ユーザアカウントデータ処理エンジン302とインタラクションを行ってもよい。各々のプレイヤーのユーザプロファイル情報は、プレイヤーの地理的位置を識別する地理的位置インジケータを含む。いくつかの実施形態では、プレイヤーの地理的位置は、例えば、招待に応答するようにプレイヤーによって使用されたクライアントデバイス100内で利用可能なグローバルポジショニングシステム(GPS)からの信号に対して検証されてもよい。代わりに、地理的位置インジケータに含まれるプレイヤーの地理的位置は、ウェブブラウジング活動、ソーシャルメディア活動、またはプレイヤーの現在の地理的位置を識別するために使用することができるプレイヤーのいずれかの他のオンライン活動など、プレイヤーから検出されるオンライン活動に対して検証されてもよい。一実施形態では、ゲームプレイスケジューラ311は、スケジュールウインドウ351bに、ゲームプレイのためにユーザによって指定されたスケジュールされた時間の前の時間ウインドウを識別すること、及びクライアントデバイス100のGPSからの信号またはプレイヤーのオンライン活動からの信号を使用して時間ウインドウの開始においてプレイヤーの地理的位置を検証することに関与させてもよい。ゲームプレイスケジューラ311は、各々のプレイヤーの現在の地理的位置をデータセンタ(DC)マネージャ400に提供する。
【0041】
各々のプレイヤーに対し、DCマネージャ400は、プレイヤーの地理的位置に近接したデータセンタを識別するために、プレイヤーの現在の地理的位置を使用する。1つよりも多いデータセンタがプレイヤーの地理的位置に近接して識別される場合、DCマネージャ400は、プレイヤーが満足するゲームプレイ経験を有することができるように、ゲームの要件に従ってどのデータセンタがゲームのゲームプレイのためのリソースを提供するのに最も向いているかを判定するように、異なるデータセンタの性能メトリックを評価する。DCマネージャ400は、DC性能メトリックエバリュエータ407に、データセンタを評価することに関与させてもよい。1つのデータセンタのみがプレイヤーの地理的位置に近接して識別される場合でさえ、データセンタは、データセンタ内の1つ以上のサーバがゲームのゲームプレイを実施するリソースを提供できるかを確かめるために評価される。DC性能メトリックエバリュエータ407は、データセンタのDC性能メトリックを識別し、データセンタは、スケジュールされた時間におけるゲームのゲームプレイについてのユーザ(すなわち、第1プレイヤー)のリクエストにサービスできるかどうかを判定するための、各々のサーバ上で利用可能なリソースのタイプ、異なる期間においてリソースに関して置かれたリクエスト、各々のサーバの能力、他のリソースの能力などを含む。サービス品質(QOS)エバリュエータ408は、ゲームのゲームプレイのために利用可能なリソースがプレイヤーに対して満足するゲームプレイ経験を提供できると判定するために使用される。
【0042】
評価に基づいて、各々のプレイヤーに対してゲームプレイリクエストにサービスする、地理的位置におけるデータセンタが識別される。次いで、ゲームのインスタンスを実行するために、データセンタ内の1つ以上のサーバが使用される。一実施形態では、ゲームのインスタンスは、スケジュールされた時間にユーザとのゲームのゲームプレイを始めるように、プレイヤーがクラウドゲーミングシステムに接続するよりも前に実行される。ゲームプレイセッションが開始されると、QoSエバリュエータ408は、ゲームプレイの品質が悪化しないことを保証するために、リソース(システム及び通信)を絶え間なくまたは周期的に管理する。識別されたデータセンタ内のサーバ(複数可)のリソースが他のアプリケーションによって拘束され、またはゲームによって必要とされるレベルにおいて実行していないと判定される場合、QoSエバリュエータ408は、サーバ(複数可)におけるリソースの発行を示すDC性能メトリックエバリュエータ407への信号を生成する。DC性能メトリックエバリュエータ407は、QoSエバリュエータ408からの信号に応答して、ゲームプレイのリクエストにサービスし、サーバまたはデータセンタ識別子をappスケジューラ351aに提供する、異なるサーバまたは異なるデータセンタを識別するように、データセンタまたは地理的位置に近接した他のデータセンタ内の他のサーバを評価してもよい。
【0043】
appスケジューラ351aは、ビデオゲームのゲーム状態を判定するように、ゲームデータシンクロナイザ500とインタラクションを行ってもよい。ゲームデータシンクロナイザ500は、ビデオゲームのゲーム状態を取得するように、ゲームデータデータストア107をクエリする。ビデオゲームのゲーム状態は、リクエストにおいて識別された各々のプレイヤー及びリクエストを開始したユーザについてのゲーム状態を識別するように分析される。ゲームデータデータストア107は、クラウドゲーミングシステム300において利用可能な複数のゲームのゲーム状態を維持し、各々のゲームのゲームプレイの複数のインスタンスを含んでもよく、ゲームの各々のインスタンスは、ゲームをプレイしたプレイヤーの特定の1人を識別することができることに留意されるべきである。ゲームがユーザ及びリクエストにおいて識別されたプレイヤーによって前にプレイされた場合、現在のリクエストは、ゲームが前のゲームプレイセッションにおいて中断したポイントからゲームのゲームプレイを再開することであってもよい。結果として、ゲームのゲーム状態は、ゲームをプレイした各々のプレイヤーのゲーム状態を識別し、各々のプレイヤーのゲーム状態は、そのゲームでの前のゲームプレイの間における各プレイヤーの性能に基づいている。更に、各々のプレイヤーのゲーム状態は、プレイヤーのゲームプレイ信用情報、プレイヤーのゲームスキルなど、プレイヤーによってゲームで使用またはカスタマイズされたゲームアイコン、ゲームのセットアップの間に使用されるルーチンのセット、ゲームのゲームプレイの間に行われる入力、プレイヤーによって達成されるゲームの勝利及びゲームレベル、ゲームの好みなどを判定する情報を提供してもよい。各々のプレイヤーのゲーム状態において提供される情報は、ゲームが前のゲームプレイの間に中断したポイントまでのゲームにおけるそれぞれのプレイヤーのゲームプレイを再作成するのに十分である。
【0044】
代わりに、ゲームは、ユーザによって全くプレイされていなかった場合もあり、またはリクエストにおいて識別されたプレイヤーのいずれともプレイされていなかった場合もある。明らかに、そのようなケースでは、ゲームデータデータストア107は、ユーザ、またはリクエストにおいて識別されたプレイヤーを包含するゲームについて、ゲームプレイのいずれの記録も有さない場合がある。結果として、リクエストは、始めからゲームを開始することであってもよい。そのようなケースでは、ゲームデータシンクロナイザ500は、プレイヤー及びユーザがゲームの始めからゲームプレイを開始することを可能にするように、ゲームデータをアップロードするために使用されてもよい。ユーザが他のプレイヤーと前にゲームをプレイしたが、リクエストにおいて識別されたプレイヤーのいずれともプレイしてないケースでは、ゲームデータシンクロナイザ500は、ユーザについてのゲームのゲームプレイ履歴についてゲームデータデータストア107をクエリしてもよく、他のプレイヤーとのゲームのゲームプレイの間にユーザによって提供されるユーザのゲームプレイ信用情報及びカスタマイズのタイプを識別するために履歴からの情報を使用してもよい。同様に、ゲームデータシンクロナイザ500は、異なるゲームにプレイヤーによって一般的に提供されるプレイヤーのゲームプレイ信用情報及び/またはカスタマイズのタイプを識別するように、クラウドゲーミングシステムにおける各々のプレイヤーによってプレイされる複数のゲームのゲームプレイ履歴についてゲームデータデータストア107をクエリしてもよい。ユーザ及び各々のプレイヤーの識別された信用情報、ゲームの好み、及びゲームカスタマイズは、ゲームプレイのためにゲームをセットアップする際に使用される。いくつかの実施形態では、ゲームデータシンクロナイザ500は、現在のゲームについて共通する、または関連する、あるいは互換性を有するカスタマイズ及び/またはプレファランス(好み)のうち特定の1つを識別するように、各々のプレイヤーによってプレイされる複数のゲームの好み及びカスタマイズのタイプを分析してもよく、プレイヤーに対してゲームをセットアップするときにそれらを適用してもよい。各々のプレイヤーの履歴ゲームプレイ情報は、ゲームをプレイしていない識別されたプレイヤー及びユーザに対して、スケジュールされた時間にゲームプレイのためにゲームをセットアップする間にゲームプレイカスタマイズを提供するために使用される。
【0045】
ゲームデータシンクロナイザ500は、ゲームプレイのためのゲームをセットアップするために、ユーザ及びプレイヤーの各々に対して取得されたゲーム状態情報または履歴ゲームプレイ情報を使用する。ゲームデータシンクロナイザ500は、DCマネージャ400によって識別された1つ以上のデータセンタ内の1つ以上のサーバにおいてゲームをインスタンス化する。ゲームのインスタンス化は、前のゲームプレイのセットアップの間にプレイヤーの各々及びユーザが従うセットアップルーチン(例えば、ログインルーチン、カスタマイズルーチンなど)、並びにセットアップの間及びゲームの前のゲームプレイ間にルーチンの各々についてのユーザ及び各々のプレイヤーによって行われる入力(ある場合)を識別することを含む。ゲームデータシンクロナイザ500は次いで、各々のプレイヤー、ユーザについてのゲームのゲームコードを実行し、初期セットアップの間及びゲームのゲームプレイの間に開始されたルーチンの各々に入力を自動で提供し、入力は、セットアップルーチンの間及びゲームのゲームプレイの間に各々のプレイヤー、ユーザによって行われる入力を模倣する。ゲームの実行は、ユーザ及びリクエストにおいて識別された全てのプレイヤーに対して同期される。
【0046】
一実施形態では、ゲームデータシンクロナイザ500は、1つ以上のデータセンタ内における1つ以上のサーバにおいてゲームプレイのためのゲームのセットアップを開始するために、スケジュールウインドウ351bによって識別された時間ウインドウを使用し、スケジュールされた時間にゲームプレイを始めるように選択されたプレイヤー及びユーザに対してゲームが準備されるようにする。ユーザは、本出願において使用されるように、スケジュールされた時間にゲームについてのゲームプレイリクエストを開始する人(すなわち、第1プレイヤー)であり、プレイヤーは、ユーザがゲームプレイに加わることを招待した人々(ソーシャルコンタクト、ゲームプレイコンタクトなど)であることに留意されるべきである。ゲームプレイにおける各人の役割の明確な区分を単に提供するために、ユーザ及びプレイヤーについて別個に言及され、実際にユーザは、ゲームのプレイヤーでもあり、第1プレイヤーと称されることがある。リクエストにおいて識別されたプレイヤーは、ゲームでの前のゲームプレイの間にユーザに加わったプレイヤーであった場合もあり、または新たなゲームプレイセッションを開始するように識別された場合もあることに留意されるべきである。
【0047】
スケジュールされた時間にゲームのゲームプレイのためにユーザに加わる通知がプレイヤーに送信されるとき、前のゲームプレイからのプレイヤーの全てがスケジュールされた時間にゲームプレイに加わる招待を受け付けることができるわけではない。ゲームは、ユーザとプレイヤーとの間の前のゲームプレイ(存在する場合)においてゲームが中断されたポイントまで再作成される。一実施形態では、招待を受け付けるプレイヤーの数が、ゲームの前のゲームプレイに関与したプレイヤーの数未満であるとき、ゲームの再作成は、前のゲームプレイが放棄されたが、ユーザ及び招待を受け付けたそれらのプレイヤーのみが中断ポイントからゲームのゲームプレイを前方に続けることを可能にする適切な観点を提供するように、前のゲームプレイに関与した全てのプレイヤーの状態を有するゲームを再作成することを含む。他の実施形態では、ゲームの再作成は、ユーザのみ及び招待を受け付けたそれらのプレイヤーのゲーム状態を有するゲームを再作成することを含む。
【0048】
時間ウインドウは、特定の長さの時間のブロックである。いくつかの実施形態では、ウインドウにおいて識別された長さの時間は、ゲームの複雑度及びゲームプレイのためにゲームをセットアップするのに必要な時間の量に依存してもよい。例えば、ゲームがゲームプレイの前に完了される必要がある多くのセットアップルーチンを有する場合、ゲームは、最小のセットアップルーチンを有するゲームに対してセットアップのためのより長い長さの時間を必要とすることがある。同様に、非常に進行した段階(例えば、レベル20の中から18レベルにおいて)において中断したゲームは、より早い段階において中断したゲームよりもセットアップするためにより長い長さの時間を必要とすることがある。よって、ゲーム及びゲームが中断された場所に応じて、時間ウインドウを定義する長さの時間は、数秒から数分まで及ぶことがある。ゲームデータシンクロナイザ500は、一実施形態では、ゲームのタイプ及びゲームをセットアップするために必要とされる時間の量を判定して、分析に基づいて時間ウインドウを定義するように、前のゲームプレイを分析し、または利用可能である場合、ゲームのゲーム情報を分析する。識別された時間ウインドウは、ゲームデータシンクロナイザ500がゲームをセットアップするために十分なバッファ時間を含む。前のゲームプレイがいずれかの段階において中断されることがあるので、時間ウインドウにおいて定義された長さの時間は変化してもよい。例えば、レベル20を有するゲーム及びレベル2において中断した前のゲームプレイについて、時間ウインドウにおいて定義された長さの時間は、例えば、1分であってもよく(バッファ時間を含む)、例えば、同一のゲームが前のゲームプレイの間にレベル18において中断した場合の3分の時間ウインドウよりもはるかに短い。本明細書で言及される時間ウインドウは、例として提供され、限定的であるものと考えられるべきではない。他の実施形態では、ウインドウにおいて識別された長さの時間は、予め定義されてもよい。
【0049】
ゲームデータシンクロナイザ500は、スケジュールされた時間の前にウインドウにおいて定義された長さの時間を有する、ゲームを再作成することを始める。ゲームデータシンクロナイザ500は、ユーザ、及び招待を受け付けたプレイヤーが、クラウドゲーミングシステムに接続し、ゲームを選択するとすぐにゲームのゲームプレイを始めることが可能であるように、1つ以上のデータセンタ内の1つ以上のサーバにおいてユーザ及び全てのプレイヤーに対してゲームプレイのためのゲームの再作成を同期してもよい。再作成は、ゲームが開始されるポイントまで、全てのプレイヤーに対してゲームのゲームデータをロードすること、ゲームが現在のゲームプレイの間に中断されたかのように見えるようにすることを含むが、実際には、ゲームは、前のゲームプレイから再構築されており、ユーザ及び選択されたプレイヤーがゲームを再開するために時間通りに準備がされ続けている。ゲームプレイのスケジュールされた時間の直前においてゲームを再作成することで、クラウドゲーミングシステムは、ユーザ及び選択されたプレイヤーがゲームを再開するためにスケジュールされた時間の直前にシステムリソース及び通信リソースを割り当てることでそのようなリソースを最適に使用することを可能にする。また、前のゲームプレイの間に中断された時間からスケジュールされた時間にわたって、ロードされたゲームデータを維持するとシステムリソースを不必要に拘束するが、そのような拘束も生じない。更に、スケジュールされた時間にゲームを準備させ続けることは、ユーザ及びプレイヤーがロードするゲームを不必要に待つことを回避し、それによって、ユーザ及びプレイヤーのゲームプレイ経験を高める。
【0050】
図2は、クラウドホスティングシステムのアプリケーションサーバ301内で利用可能なユーザアカウントデータ処理エンジン302内の様々なモジュールを識別する。クラウドホスティングシステムは、ゲームアプリケーションを含む複数のアプリケーションをホストし、本明細書で「クラウドゲーミングシステム」300とも称される。スケジュールされた時間におけるゲームのゲームプレイのリクエストがユーザ(すなわち、第1プレイヤー)のクライアントデバイスから受信されるとき、ユーザアカウントデータ処理エンジン302は、リクエストを開始するユーザを検証することをトリガされる。ユーザアカウントデータ処理エンジン302は、ユーザアカウントモジュール303に、ユーザアカウントデータベース304に記憶されたユーザのユーザアカウント情報を取り出すこと、及びゲームのゲームプレイのリクエストを開始しているユーザを検証するためにユーザアカウント情報を使用することに関与させる。ユーザの検証は、ユーザがクラウドゲーミングシステムの有効なユーザであること、及びゲームプレイのためにゲームへのアクセスを有することを検証することを含む。ユーザアカウント情報は、参照及びインタラクションのためのユーザアカウントに対して利用可能なゲームアプリケーションなどのアプリケーションのリストを識別する。ユーザアカウントモジュール303はまた、リクエストにおいて識別された1人以上のプレイヤーのユーザアカウントを取り出すために使用される。各々のプレイヤー(すなわち、リクエストを開始するユーザまたはリクエストに応答するプレイヤー)に対し、ユーザアカウントは、識別子、スクリーン名、アイコンまたはアバター、スキル、ランキング、アプリケーションの好み、信用情報、及びプレイヤーを明確に識別するために使用することができる他のデータ(生体データを含む)を含むプレイヤー関連情報を提供する。ユーザアカウント情報は、ユーザプロファイル309に転送される。ユーザプロファイル309は、プレイヤーのユーザプロファイルを判定するように、各々のプレイヤーのユーザアカウント情報を分析する。プレイヤーのユーザプロファイルは、プレイヤーと関連付けられた地理的位置を含む。
【0051】
ユーザプロファイル309から識別されたプレイヤーの地理的位置は次いで、ユーザプロファイルにおいて識別された地理的位置が現在のプレイヤーの地理的位置であることを保証するように検証される。検証は、ロケーションプロセッサ307を使用して行われてもよい。ロケーションプロセッサ307は、ゲームのゲームプレイに加わる招待に応答するために使用される、プレイヤーのクライアントデバイスから生成された信号を取得することによって、地理的位置を検証してもよい。プレイヤーは、ゲームのゲームプレイのリクエストに応答するための1つのクライアントデバイス、及びゲームプレイのための別のデバイスを使用してもよい。その結果として、プレイヤーの現在の地理的位置を判定することは、ゲームがゲームプレイのために準備されるように、スケジュールされた時間の前にゲームをロードするためのデータセンタを識別する際の支援となる。プレイヤーがウェブサーバとインタラクションを行うためにクライアントデバイスにおいてウェブブラウザを使用し、または対応するサーバ側アプリケーションにアクセスする(例えば、ソーシャルメディアがソーシャルメディアプロバイダに投稿するなど)ためにいずれかの他のクライアント側アプリケーションを使用するときに信号が生成されてもよく、この信号は、クライアントのIPアドレス、クライアントのping情報などを判定するために使用されてもよい。代わりに、信号は、クライアントデバイス内のグローバルポジショニングシステム(GPS)機構から発してもよい。GPS機構からの信号は、現在の地理的位置を取得するために分析されることができるオフネットワーク信号であってもよい。オフネットワーク信号は、クライアントデバイスがネットワークに接続されることを必要とすることなく、クライアントデバイスから生成された信号である。ロケーションプロセッサ307は、方位付けロケーションデータプロセッサ307aに、地理的位置を判定し、プレイヤーの現在の地理的位置を検証するようにクライアントデバイスから生成された信号を解釈することに関与させてもよい。
【0052】
他の実施形態では、ロケーションプロセッサ307は、ソーシャルメディアシステムサーバに投稿されたソーシャルフィードなど、プレイヤーによって提供されるインタラクションから、そのようなインタラクションが更新されている適切なサーバにAPI呼び出しを行うことによってデータを取り出してもよい。もちろん、そのようなフィードへのアクセスは、プレイヤーによって許可されたパーミッションに基づいて適切なサーバにおいて利用可能である。ロケーションプロセッサ307は次いで、コンテキストロケーションデータプロセッサ307bに、例えば、プレイヤーの地理的位置を判定するようにソーシャルフィードのコンテキストを分析することに関与させてもよい。ロケーションプロセッサ307は次いで、プレイヤーの現在の地理的位置を判定するように、信号またはフィードから取得された地理的位置を有するユーザプロファイルにおいて提供されるプレイヤーの地理的位置を検証する。検証されると、現在の地理的位置は、データセンタマネージャ400に提供され、プレイヤーのユーザプロファイルにおける地理的位置インジケータを更新するためにも使用されてもよい。プレイヤーの地理的位置を検証するための上述した方式は例にすぎず、プレイヤーの地理的位置を検証するために他のタイプの機構、ツール、ロジック、またはインタラクションが使用されてもよい。1人よりも多いプレイヤーまたはプレイヤー及びユーザの全てが同一の地理的位置を有することがあると判定されてもよい。
【0053】
プレイヤーの使用履歴を識別するためにユーザプロファイル情報も使用され、使用履歴は、プレイヤーがクラウドゲーミングシステム300とインタラクションしたアプリケーション(複数可)、そのようなインタラクションの時間及び頻度、インタラクションの長さ、アプリケーション(複数可)がアクセスされた場所からの地理的位置などを識別する。プレイヤーの使用履歴は、プレイヤーの好み、プレイヤーのログインルーチン、プレイヤーのスキルなどを判定するために使用されてもよい。使用履歴の分析から取得された情報は、プレイヤーに対して、ゲームプレイのためにゲームをロードする間に使用されることができる。
【0054】
図3は、一実施形態における、プレイヤーの現在の地理的位置についてのデータセンタを識別するために使用されるクラウドゲーミングシステム300のデータセンタマネージャ400内の様々な構成要素を例示する。データセンタ(DC)マネージャ400は、地理的位置インジケータ306a、並びにスケジュールされた時間にゲームをプレイすることに合意した各々のプレイヤーについてのゲーミング及び/またはアプリケーション使用履歴308を、ユーザアカウントデータ処理エンジン302から受信する。DCマネージャ400は、ゲームのゲームデータがプレイヤーに対して識別されたデータセンタ内の1つ以上のサーバにロードされることができるように、地理的位置内のまたは地理的位置に近接した適切なデータセンタを識別するために、地理的位置インジケータ306aにおいて提供される地理的位置を使用する。アプリケーション使用履歴308において提供される情報は、前のゲームプレイ活動がユーザとリクエストにおいて識別されたプレイヤーとの間のゲームに対して記録されていないケースにおいて、ゲームをセットアップするために使用されることができる、プレイヤーの信用情報、プレイヤーの好み、プレイヤーのカスタマイズなどを取得するようにDCマネージャ400によって処理される。
【0055】
DCマネージャ400は、DC選択エンジン410に、最小レイテンシでスケジュールされた時間におけるゲームのゲームプレイの間にゲームデータを伝送するための十分な処理、ネットワーク、及び通信リソースを提供できるデータセンタを識別することに関与させる。DC選択エンジン410は、プレイヤーの現在の地理的位置を識別し、ゲームプレイのためのゲームのゲームデータを事前ロードするためのデータセンタを識別するように、ユーザアカウントデータ処理エンジン302によって提供される地理的位置インジケータ306aを受信する、複数のサブエンジン(例えば、位置識別子420、DC識別子424)を含む。地理的位置インジケータ306aに加えて、ユーザアカウントデータ処理エンジン302はまた、DC選択エンジン410に使用履歴データ情報を提供してもよい。
【0056】
DC選択エンジン410は、ゲームのゲームプレイのリクエストにおいて識別されたスケジュールされた時間を識別し、どのデータセンタが各々のプレイヤーに対してゲームプレイリクエストにサービスできるかを判定するためにスケジュールされた時間を使用するように、リクエストをクエリする。DC選択エンジン410における位置識別子420は、地理的位置インジケータ306aを取得し、プレイヤーのユーザプロファイルにおけるプレイヤーと関連付けられた地理的位置を識別するようにそこで提供される情報を分析する。この地理的位置は、使用履歴データ情報において提供される情報を使用して検証される。使用履歴データ情報は、クラウドゲーミングシステムによってホストされた様々なアプリケーションとインタラクションを行う間にプレイヤーが提供するいずれかのインタラクション及び全てのインタラクションに関連する情報を含んでもよい。いくつかの実施形態では、位置識別子420は、プレイヤーのクライアントデバイス内のGPSデバイスから信号を取得してもよく、クライアントデバイスの地理的位置を、したがって、プレイヤーの地理的位置を判定するように信号を分析してもよい。
【0057】
いくつかの実施形態では、使用履歴データ情報は、プレイヤーのウェブブラウザインタラクション、他のビデオゲームアプリケーションを含むクラウドゲーミングシステムによってホストされた他のアプリケーションに向けられたインタラクション、クライアントデバイス上で実行しているアプリケーションに向けられたインタラクションなどの詳細を提供してもよい。異なるアプリケーションのうちの1つ以上とのプレイヤーのインタラクションから取得された情報は、プレイヤーの地理的位置を判定するように分析される。いくつかの実施形態では、プレイヤーの使用履歴データ情報は、プレイヤーの最新の地理的位置を取得するために、ゲームプレイのスケジュールされた時間に対して定義された時間ウインドウ内に分析される。様々なアプリケーションとのプレイヤーの最近のインタラクションからのプレイヤーに対して識別された地理的位置が、プレイヤーの現在の地理的位置である可能性が非常に高い。位置識別子420は、他のアプリケーションとのプレイヤーのインタラクションから識別されたプレイヤーの地理的位置を、ユーザプロファイルにおける地理的位置と比較する。インタラクションまたは信号から取得されたプレイヤーの地理的位置がプレイヤーのユーザプロファイル内の地理的位置とは異なるとき、様々なアプリケーションとのインタラクションから識別された地理的位置は、プレイヤーの現在の地理的位置であり、プレイヤーのユーザプロファイルは、現在の地理的位置により更新される。位置識別子420は、現在の地理的位置にあり、またはプレイヤーの地理的位置に近接した、選択された1つ以上のデータセンタを判定するように、プレイヤーの現在の地理的位置をデータセンタ(DC)識別子424に提供する。
【0058】
DC識別子424は、各々のプレイヤーの地理的位置内で、または各々のプレイヤーの地理的位置に近接して利用可能なデータセンタのデータセンタ識別子を取得するように、DCプロファイラ402とインタラクションを行う。DCプロファイラ402内のDCロケーションサブ構成要素404は、各々のプレイヤーに対して現在の地理的位置内にあり、または現在の地理的位置内に近接した1つ以上のデータセンタを識別するように、DCデータストア(図示せず)において維持されたデータセンタのリストをクエリするように構成されている。リストは、地理的位置によって編成されてもよい。クエリに応答して、DCロケーションサブ構成要素404は、選択した1つ以上のデータセンタのデータセンタ識別子をDC選択エンジン410に返す。DCプロファイラ402内のDC App及びサービスサブ構成要素406は、DCプロファイラ402によって返された選択した1つ以上のデータセンタの各々内で利用可能なサーバ及びコンソールのリスト、並びに各々のデータセンタの内の各々のサーバまたはコンソールが実行しており、または実行できるアプリケーション(App)またはサービスのリストを取得するように構成されている。
【0059】
DCプロファイラ402によって提供される情報に基づいて、DC識別子424は、各々のプレイヤーに対してゲームをセットアップするための地理的位置に対して使用する特定のデータセンタを識別する。各々のプレイヤーに対して選択された特定のデータセンタがスケジュールされた時間に必要とされる通信接続及び処理リソース帯域幅を提供できることを保証するために、DC選択エンジン410は、各々のプレイヤーの地理的位置に対してDCプロファイラ402によって識別されたデータセンタの各々のデータセンタプロファイルを取り出すように、DC性能メトリックエバリュエータ407とインタラクションを行う。データセンタプロファイルは、各々のデータセンタの処理及び通信属性を識別する。
【0060】
DC性能メトリックエバリュエータ407は、クラウドゲーミングシステム300において利用可能な全てのデータセンタについてのデータセンタプロファイルを維持する。ユーザがゲームプレイセッション(または、アプリケーションセッション)から退出するにつれて、及び1つ以上のゲームまたはアプリケーションをスケジューリングするためのリクエストが受信されるにつれて、これらのプロファイルが1つ以上のアプリケーションについてのリクエストとして絶え間なく更新され、またはゲームがそれぞれのデータセンタによってサービスされる。最新のデータセンタメトリックは、それぞれのデータセンタ内の各々のサーバの現在の状態及びリソース能力と共に、異なる時に実行するようにスケジュールされたゲームまたはアプリケーションからのリソース上に置かれたリクエストを定義する。例えば、最新のデータセンタメトリックは、現在実行され、またはいずれかのときに実行するようにスケジュールされたゲームのゲームインスタンス(または、アプリケーションのアプリケーションインスタンス)のタイプ及び数、現在利用可能であり、またはいずれかのときに利用可能になる可能性が高い処理及び/またはシステムリソースのタイプ、データセンタ内の異なるサーバにおける処理リソースの各々の状態、データセンタにおいて利用可能なサービス及びアプリケーションのタイプなどを識別してよい。DC選択エンジン410は、ゲームのゲームプレイの招待を承認した各々のプレイヤーについてのリクエストにサービスするためのデータセンタを選択するために、これらのデータセンタ属性を使用する。
【0061】
DC選択エンジン410におけるDC識別子424は、データセンタメトリックを使用し、ゲームに対して予想される性能要件、システム要件、記憶要件、処理リソース要件、ゲームデータを通信するための通信接続要件などにメトリックを一致させる。例えば、性能要件は、ユーザ及びプレイヤーによって希望されるゲームプレイ強度に基づいてもよい。別の実施例では、処理及び通信要件は、ゲームの開発者によって定義されたゲーム仕様から取得されてもよい。
【0062】
DC識別子424は、ユーザ属性(ゲームプレイ強度、プレイヤー信用情報など)、ゲームの特性、及びデータセンタメトリック情報を受信し、ゲームのゲームプレイに対して指定された要件に合致または上回ることがある地理的位置内のデータセンタを識別するためにこの情報を使用する。いくつかの実施形態では、プレイヤーの地理的位置に近接したデータセンタのいずれもが、プレイヤーについての比較可能なゲームプレイ経験を提供するように、ゲームのゲームプレイセッションをサービスするために必要なリソースの全てを有するわけではないと判定されてもよい。そのような実施形態では、DC識別子424は、ゲームに対して指定されたリソース要件の各々に対して重みを割り振ってもよく、プレイヤーについてのリクエストにサービスするための重み付けされたリソース要件を使用してもよい。例えば、計算集中的なゲームについて、処理及び記憶リソースは、ネットワーキングリソースよりも大きく重み付けされてもよい。結果として、DC識別子424は、リクエストにサービスするための十分な処理及び記憶リソースを有するプレイヤーの地理的位置内のデータセンタを識別してもよい。別の実施例では、速度集中的なゲームについて、通信接続及びネットワークリソースは、処理及び記憶リソースよりも大きく重み付けされてもよい。その結果として、プレイヤーについてのリクエストを処理するための十分な通信接続及びネットワークリソースを有するデータセンタが識別される。
【0063】
データセンタが各々のプレイヤーの地理的位置に対して識別されると、データセンタ識別子情報426は、ゲームデータシンクロナイザ500に転送される。ゲームデータシンクロナイザ500も、ユーザアカウントデータ処理エンジン302から各々のプレイヤーについてのアプリケーション使用履歴データ情報308を受信する。ゲームデータシンクロナイザ500は、プレイヤーの各々またはユーザがクラウドゲーミングシステムにログインするとすぐにゲームがゲームプレイのために準備されるように、スケジュールされた時間の前にそれぞれのプレイヤー(複数可)に対してゲームのゲームデータをアップロードするように情報を処理し、識別されたデータセンタへの信号を生成する。
【0064】
ゲームデータシンクロナイザ500は、プレイヤーのゲームプレイ属性を識別して、プレイヤーの信用情報、プレイヤーのカスタマイズ、ゲームをセットアップするためにプレイヤーが従うルーチンのセット、ゲームのゲームプレイの間にプレイヤーによって行われる入力などを識別するように、ゲームの各々のプレイヤーについてのアプリケーション使用履歴データ情報308を分析する。プレイヤーの信用情報は、プレイヤー識別子、ゲーム識別子、日付、日時、ゲームタイプ、ゲームの性能使用、プレイヤーのスキルまたは専門レベル、プレイヤーの現在の地理的位置、費やされる時間の量、アクセスの頻度、ゲームに対して希望される性能要件などの詳細を提供する。
【0065】
図4は、各々のプレイヤーのゲームプレイ関連属性を識別し、スケジュールされた時間にゲームをゲームプレイのために準備させるために使用されるゲームデータシンクロナイザ500の様々な構成要素を例示する。ゲームデータシンクロナイザ500内のゲーム状態識別子502は、スケジュールされた時間に、ユーザとプレイヤーとの間のゲームプレイのリクエストにおいて識別されたゲームのゲーム状態を識別するように、ゲームデータデータストア107をクエリする。ゲームデータデータストア107は、様々なプレイヤー間で前のゲームプレイセッションの間にプレイされた様々なゲームのゲーム状態を維持する。ゲームのゲーム状態は、各々のプレイヤー(ゲームプレイリクエストを開始したユーザを含む)のゲーム状態、及びゲームプレイがスケジュールされた時間に始まることになるポイントまでゲームを再作成することに関連する他のゲームデータのゲーム状態を識別する。全てのプレイヤーのゲーム状態は、ゲームの全体的なゲーム状態を構成する。ゲームデータデータストア107へのクエリは、リクエストを開始するユーザとゲームプレイの招待を受け付けたプレイヤーとの間の前のゲームプレイからゲームのゲーム状態を定義する記録を識別してもよい。ユーザとプレイヤーとの間の前のゲームプレイセッションでは、ゲームプレイが中断されていることがあり、ユーザからの現在のリクエストは、中断されたポイントから中断されたゲームのゲームプレイを再開することであってもよい。ゲームデータデータストア107へのクエリがゲームについての記録を返さないとき、ゲームデータデータストア107に記録されたユーザとプレイヤーとの間の前のゲームプレイが存在しなかったことを意味する。このケースでは、スケジュールされた時間におけるゲームプレイのリクエストは、始めからゲームのゲームプレイを開始することである。
【0066】
ゲーム状態及びゲームを再作成するための他の関連する情報は、ゲームデータ送信機504に提供される。ゲームデータ送信機504は、各々のプレイヤー(すなわち、他のプレイヤーまたはユーザ)のゲーム状態を識別するように、ゲーム状態識別子502によって伝送された前のゲームプレイからのゲーム状態情報を処理する。各々のプレイヤーのゲーム状態に関する関連するデータは、ゲーム状態情報から識別され、ゲームデータ更新マネージャ506に提供される。
【0067】
ゲームデータ更新マネージャ506は、ゲームのセットアップの間及びゲームプレイの間の異なるときにプレイヤーによって行われる入力を含む、各々のプレイヤーについての関連するデータを受信し、それぞれのプレイヤーのゲーム状態に基づいて、各々のプレイヤーについての対応するゲームデータ508を識別する。ゲームデータ更新マネージャ506は、DCマネージャ400によって識別されたそれぞれのデータセンタにおける1つ以上のサーバにゲームデータ508をアップロードすることを始める時間を判定するように、スケジュールウインドウ351bから時間ウインドウを取得する。時間ウインドウは、一実施形態では、スケジュールされた時間の前の静的な予め定義された長さの時間である。別の実施形態では、時間ウインドウは、ゲームのタイプ、ゲームのゲーム状態、アップロードされる必要があるゲームデータの量などに基づいて動的に定義されてもよい。例えば、ゲームがゲームのレベル18において中断されており、ゲームがレベル20を有する場合(すなわち、ゲームがより進行したレベルにおいて前に中断していた)、時間ウインドウは次いで、レベル2において中断された同一のゲームに対してよりも長いことがある。これは、レベル2に対してアップロードされる必要があるゲームデータに対して、レベル18に対してアップロードされる必要があるたくさんのより大きなデータが存在する(すなわち、レベル1からレベル18までのゲームデータ)事実に起因している。同様に、ゲームがアップロードされる必要があるたくさんのグラフィックを有する場合、時間ウインドウは、アップロードするグラフィックをあまり有しないゲームに対してよりも長く定義されてもよい。定義される時間ウインドウは、ゲームデータをアップロードするために必要とされる時間の量を含み、いくつかの実施形態では、各々のプレイヤーに対してゲームデータ508をロードすることを完了するためのビルトインバッファ時間をも含んでもよい。例えば、ゲームプレイのためのスケジュールされた時間が火曜日の午後6時であるように定義され、ゲームデータをアップロードするために約15秒の長さを要する場合、時間ウインドウは次いで、サーバにゲームデータをアップロードするための15秒及び約15分のバッファ時間を含んでもよい。よって、上記実施例では、ゲームデータ更新マネージャ506は、プレイヤー及びユーザがゲームプレイを始めるようにクラウドゲーミングシステムに接続するとき、ゲームが完全にロードされ、プレイヤー及びユーザがゲームプレイを始める準備がされるように、火曜日の午後5時44分頃に開始して、それぞれのデータセンタ内のサーバに各々のプレイヤーについてのゲームデータを事前ロードすることを始めてもよい。上記バッファ時間は、単なる例として提供され、限定することと考えられるべきではない。
【0068】
時間ウインドウによって定義された時間に到達したとき、ゲームデータ更新マネージャ506は、各々のプレイヤーに対する識別されたデータセンタとの通信接続を確立し、ゲームコード(1つがデータセンタにおいてまだ利用可能でない場合)及びプレイヤーについての関連するゲームデータを識別されたデータセンタ内の1つ以上のサーバに自動でアップロードすることをデータセンタにリクエストする識別されたデータセンタに、プレイヤーについての関連するゲームデータを有する信号を送信する。データセンタ内の1つ以上のサーバは、ゲームデータを受信し、ゲームコードを使用してゲームのインスタンスを実行する。プレイヤーについてのゲームデータのロードは、ゲームのセットアップの間及びゲームプレイの間にサーバが様々なルーチンについての入力を自動で行うことを含み、サーバによって行われる入力は、ゲームの前のゲームプレイの間にプレイヤーによって行われる入力を模倣する。各々のプレイヤーは、ゲームをセットアップするために従う自身のルーチンのセットを有してもよく、ゲームプレイの間に入力を行ってもよく、各々のプレイヤーのそのような入力は、ゲームデータデータストア107に記憶されたゲームのゲームデータにおいて捕捉され、ゲームデータ更新マネージャ506によってサーバに提供され、その結果、サーバは、スケジュールされた時間におけるゲームプレイを可能にするように、時間内にプレイヤーに対してゲームを事前ロードする際に各々のプレイヤーからのそれらの入力を使用してもよい。
【0069】
いくつかの実施形態では、プレイヤーは、ゲームをプレイしていないことがあり、結果として、ゲームデータデータストア107は、プレイヤーの入力のいずれの記録も有していないことがある。そのような実施形態では、ゲームデータ更新マネージャ506は、プレイヤーの信用情報を判定するために、他のゲームのゲームプレイからの、プレイヤーのカスタマイズ、好み、ゲームスキル、関心、ゲームのセットアップの間及びゲームプレイの間に様々なルーチンに対して行われる入力などを使用してもよい。プレイヤーの信用情報は、プレイヤー及びユーザがゲームのゲームプレイを始めるポイントまでのゲームの事前ロードの間に使用される、識別されたデータセンタ内のサーバに提供される。例えば、ゲームデータデータストア107におけるプレイヤーとユーザとの間のゲームのゲームプレイの記録を有さないゲームについて、ゲームプレイが始まるポイントは、ゲームの始めであってもよい。この例では、事前ロードは、プレイヤー及びユーザがログインルーチンまたはセットアップルーチンを行う必要がないが、ゲームに直接「ドロップ」することができ、ゲームプレイを始めることができるように、ゲームの初めまでゲームについてのゲームデータ(例えば、セットアップルーチン、ログインルーチンなど)をロードすることを含む。
【0070】
別の例では、ゲームデータデータストアがプレイヤーとユーザとの間のゲームの前のゲームプレイの記録を有するときでさえ、ユーザは、最初から始めるゲームのゲームプレイのリクエストを開始してもよい。そのようなケースでは、ゲームは、ゲームの始めまで事前ロードされ、各々のプレイヤーについてのログインルーチン、セットアップルーチンなどのルーチンのセットは、それぞれのプレイヤーの入力を模倣する入力により実行される。
【0071】
ゲームデータ更新マネージャ506は、ゲームがスケジュールされた時間に全てのプレイヤー及びユーザに対してゲームプレイのために準備されるように、ユーザ、及び1つ以上のデータセンタにおいてゲームプレイの招待を受け付けた全てのプレイヤーに対してゲームの事前ロードを同期する。ゲームの事前ロードは、ユーザがいずれの他の入力も行う必要なく行われ、1人以上のプレイヤーがユーザによってリクエストされたスケジュールされた時間におけるゲームプレイの招待を受け付けたことに応答して行われる。更に、ゲームの事前ロードは、ゲームデータデータストア107に記憶されたゲームのゲーム状態によって定義されるようにゲームプレイが始まるポイントまで行われる。プレイヤーがゲームプレイを始めるようにクラウドゲーミングシステムに接続する以外にいずれかの他の入力を行う必要がない。ゲームは、各々のプレイヤーの好みに従ってセットアップされ、プレイヤーのカスタマイズなどを含む。地理的位置におけるデータセンタは、サーバ(複数可)が最小のレイテンシを提供し、十分な処理及び通信リソースを提供して、その結果、ユーザ及びプレイヤーが満足するゲームプレイ経験を有するように選択される。
【0072】
いくつかの実施形態では、プレイヤー及びユーザは、スケジュールされた時間から予め定義された閾値期間内にゲームプレイを始めるように、クラウドゲーミングシステムに接続することが許可される。例えば、スケジュールされた時間が所与の日の午後6時である場合、プレイヤー及びユーザは、午後6時15分までゲームプレイを始めるためにクラウドゲーミングシステムに接続することが可能であってもよい。もちろん、予め定義された閾値期間の上記例は、例にすぎない。
【0073】
プレイヤーが予め定義された閾値期間内にゲームのゲームプレイに接続することが可能でない場合、プレイヤーなしにゲームプレイが続いてもよい。しかしながら、ゲームデータシンクロナイザ500は、一実施形態では、異なる時間にゲームプレイに加わるオプションをプレイヤーに提供する。例えば、ユーザは、スケジュールされた時間にゲームのゲームプレイのリクエストを開始していることがあり、ゲームプレイに加わるのに約10人のプレイヤーが招待されていることがあり、10人のプレイヤーのうち8人が招待を受け付けていることがある。しかしながら、スケジュールされた時間に、または予め定義された閾値期間内に、招待を受け付けたプレイヤー8は、ゲームプレイに加わることが可能でないことがあった。他の7人のプレイヤー及びゲームプレイをスケジュールしたユーザとのゲームプレイが続く。この実施例では、プレイヤー8は、ゲームのゲームプレイに加わるように自身のリクエストを開始してもよく、ゲームに加わるための現在時間の後のある時点である時間を指定してもよい。いくつかの実施形態では、プレイヤー8は、ゲームプレイがいまだスケジュールされた時間内にある間、及び特定の条件の間(例えば、ずっと特定のレベルにある間)、または特定の条件が満たされ続ける間、ゲームのゲームプレイに加わるリクエストを開始することを許可されてもよい。例えば、プレイヤー8は、ゲームが再開されたレベルに他のプレイヤーがいる間、またはゲームが再開された特定の数のレベル内でなど、ゲームプレイに加わるリクエストを開始することを許可されてもよい。プレイヤー8からのリクエストが特定の条件に適合することを検証するにあたり、リクエストは、スケジュールされた時間にゲームのゲームプレイに加わった全てのプレイヤー(すなわち、7人のプレイヤー及びユーザ)に転送されてもよい。プレイヤー8のリクエストに応答して、7人のプレイヤーまたはユーザのうちのいずれか1人は、プレイヤー8のリクエストを受け付けてもよい。プレイヤー8のリクエストが受け付けられることに応答して、ゲームデータシンクロナイザ500は、プレイヤー8がクラウドゲーミングシステムに接続することができ、ゲームのゲームプレイに加わることができるように、ゲームの現在のゲーム状態を識別してもよく、現在のゲーム状態までのゲームデータをプレイヤー8に対して識別されたデータセンタに転送してもよい。この実施例では、プレイヤー8の地理的位置が既に確立されており、識別されたデータセンタ及びゲームプレイが始まるポイントまでのゲームデータは、プレイヤー8がスケジュールされた時間にまたはおよそスケジュールされた時間にゲームプレイを始めることを予期して、スケジュールされた時間の前に既に提供されている。しかしながら、プレイヤー8がスケジュールされた時間に始めることができず、ゲームプレイが既に再開されているので、ゲームデータシンクロナイザ500は、プレイヤー8がゲームプレイに加わるオプションを提供する。ゲームデータシンクロナイザ500は、プレイヤー8がゲームプレイを再開することを可能にするように、プレイヤー8と関連付けられたデータセンタにおいて、スケジュールされた時間に始まった現在のゲームプレイセッションの間にプレイヤー8が失ったゲームプレイの部分を更新する。
【0074】
スケジュールされた時間におけるゲームのゲームプレイの間のプレイヤーインタラクションは、1つ以上のデータセンタにおいて追跡され、ゲーム(複数可)のゲーム状態は、クラウドゲーミングシステムにおいて維持されたゲームデータデータストア107に更新される。
【0075】
前に言及されたように、ユーザによって開始されたゲームプレイのリクエストにおいて識別されたプレイヤーは、ソーシャルネットワークと関連付けられたソーシャルグラフから取得されたユーザのソーシャルコンタクト、またはユーザのゲームプレイコンタクトであってもよい。一実施形態では、リクエストにおいて識別されたプレイヤーは、このリクエストが開示された時間におけるオンライン活動に基づいて識別される。例えば、リクエストにおいて識別されたプレイヤーは、ユーザがリクエストを開始した時間においてオンラインであったソーシャルコンタクトまたはゲームプレイコンタクトであってもよい。プレイヤーは、他のゲーミングアプリケーションを含む他のアプリケーションとオンラインでインタラクションを行っていることがある。この実施例では、リクエストは、プレイヤーがリクエストへの応答をオンラインで探索している間にプレイヤーに転送される。
【0076】
プレイヤーがスケジュールされた時間にクラウドゲーミングシステム上のユーザアカウントにアクセスするとき、プレイヤーのクライアントデバイスとゲームがプレイヤーに対して事前ロードされた地理的位置におけるデータセンタ内のサーバ(または、ゲームコンソール)との間で直接通信接続が確立され、識別されたデータセンタのゲームサーバまたはゲームコンソールとプレイヤーのクライアントデバイスとの間でのゲームプレイデータの交換を可能にする。選択されたユーザのゲームプレイの間、クラウドゲーミングシステムにおいて利用可能なサービス品質(QoS)エバリュエータ408は、サービス品質がゲームについて予測されるサービスの必要とされるレベルを満たすかどうかを判定するように、データセンタによって提供されるサービス品質をテストすることによって、各々のプレイヤーに対する割り振られたデータセンタによって提供されるサービス品質を監視してもよい。いくつかの実施形態では、サービス品質テストは、定義された期間において実行されてもよく、またはゲームプレイの間に一定間隔においてもしくは絶え間なく実行されてもよい。品質テストに基づいて、QoSエバリュエータ408は、ゲームのゲームプレイの間に割り振られたデータセンタを維持するか、または地理的位置内の異なるデータセンタに切り替えるかのいずれかの信号をクラウドゲーミングシステム内のDCマネージャに送信してもよい。いくつかの実施形態では、品質テストは、接続速度、リソースの最適な割り当て、リソースの各々によって提供されるサービスのレベルなどをチェックし、そのようなテストは、それぞれのクライアントデバイスとゲームデータがクライアントデバイスにストリーミングされている地理的位置内の割り振られたデータセンタとの間で交換される実際のゲームデータにより実行される。
【0077】
いくつかの実施形態では、プレイヤーがビデオゲームのゲームプレイをスケジュールするためのリクエストを開始する代わりに、リクエストは、サーバ上で利用可能な、または特定の開発者によってもしくはプレイヤーの特定のグループに対して開発された特定のビデオゲームまたは複数のビデオゲームのゲームプレイスケジュールをまさに管理するオーガナイザまたはマネージャから開始されてもよい。この実施形態では、オーガナイザは、特定のビデオゲームもしくは異なるビデオゲームと関与する様々なプレイヤーに基づいて、またはプレイヤーの各々と関連付けられたユーザ属性もしくはゲームプレイ信用情報(例えば、ゲームの好み、スキルセット、関与のレベル、ビデオゲームのプレイの頻度、費やされた時間の量、各々のレベルにおいてなされもしくは特定の課題を克服するためになされた試みの数など)に基づいて、招待するプレイヤーを識別してもよい。
【0078】
オーガナイザがビデオゲームのゲームプレイをスケジュールすることを可能にすることは、ビデオゲームのゲームプレイをスケジュールしており、ユーザからの不正を回避している者に対する更に制御する。ユーザがビデオゲームのゲームプレイをスケジュールするオプションを与えられえるとき、そのようなオプションは、大きな量のゲームプレイを意図してスケジュールする悪意のあるユーザによって悪用されることがあり、それによって、システムに過度に負荷をかけ、システムリソースに過度に負担をかける。代わりに、ユーザは、ビデオゲームの事前ロードを生じさせ、それによって、システムのリソースを拘束する複数のプレイヤーとのビデオゲームのゲームプレイをスケジュールしてもよい。これは、ユーザ及び/またはゲームプレイに加わる招待を受け付けたプレイヤーのほとんどが実際にスケジュールされた時間にゲームをプレイするために現れるときに有利である。しかしながら、ユーザ及び/またはプレイヤーがスケジュールされた時間に現れることができないとき、システムリソースは、不必要に拘束され、システムのリソースを浪費させる。そのような誤使用または悪用を防止するために、ビデオゲームのゲームプレイをスケジュールする制御を特定のプレイヤーまたはユーザのみに提供することによって、システムリソースが保護されることができ、適切な負荷分散が行われることができる。いくつかの実施形態では、ゲームプレイをスケジュールするオーガナイザは、スケジュールされた時間にビデオゲームをプレイしてもよく、またはしなくてもよい。よって、様々な制御は、プレイヤーが満足するゲームプレイ経験を有することを保証すると共に、システムリソースを誤使用から保護し、及び均等させることを続けるように設置されてもよい。
【0079】
図5は、一実施形態における簡易データフローチャートを例示する。スケジュールされた時間にビデオゲームをプレイするリクエストが第1プレイヤーのクライアントデバイスから出されると、データフローが開始される。リクエストは、ネットワークを通じてクラウドゲーミングシステムのサーバに転送される。リクエストが有効であることを検証した後、クラウドゲーミングシステムのサーバは、リクエストにおいて識別された複数の他のプレイヤーと関連付けられたクライアントデバイスに通知を転送する。
図5では、通知が送信される他のプレイヤーは、プレイヤーn1、プレイヤー2、プレイヤー3、プレイヤー4、プレイヤー5、プレイヤーn2を含む。他のプレイヤーのうち何人かは、通知に応答して、スケジュールされた時間にゲームをプレイする招待を受け付けてもよく、その他は、明確なアクションにより、または通知に応答しないことによって招待を拒否してもよい。
図5に示されるように、プレイヤー2、4、5、及びn2は、ゲームプレイリクエストを受け付けることによって招待に応答している。招待を受け付けたプレイヤーからの応答は、クラウドゲーミングシステムのサーバによって評価される。応答は、サーバがゲームを事前ロードし、スケジュールされた時間に対してゲームを準備させる承認としての役割を果たす。サーバは、ゲームを事前ロードするためのスケジュールされた時間の前の時間ウインドウを判定し、プレイヤー(第1プレイヤー、及び招待を受け付けた他の選択されたプレイヤー)がゲームプレイを始めるために利用可能にするように、スケジュールウインドウ351bをクエリする。
【0080】
ゲームを事前ロードすることの一部として、サーバは、スケジュールされた時間にプレイしようとしているプレイヤーの地理的位置を判定してもよく、ゲームが事前ロードされるプレイヤーの地理的位置に近接したデータセンタ(複数可)を判定してもよく、ネットワークを通じてそれぞれのデータセンタにインスタンス化信号を送信する。インスタンス化信号は、データセンタが事前ロードするためのゲームデータを正確に識別することを可能にする、ゲーム識別子、データセンタ識別子、プレイヤー識別子、前のゲームプレイセッション識別子などを含む。プレイヤーの地理的位置に基づいて、事前ロードするための1つよりも多いデータセンタが識別されてもよい。結果として、識別されたデータセンタの各々は、ゲームのゲームプレイの招待を受け付けた特定のプレイヤーに対してゲームを事前ロードするように指示されてもよい。各々のプレイヤーのゲーム状態が異なることがあるので、適切なデータセンタにおいて正確なゲーム状態を事前ロードすることは、プレイヤーが満足するゲームプレイ経験を有することを可能にするために必須である。ゲームは、スケジュールウインドウ351bによって指定された時間ウインドウにおいて定義された時間に、対応するデータセンタにおいて各々のプレイヤーに対して1つ以上のサーバに事前ロードされ、その結果、システムリソースがゲームプレイのために時間内に、且つあまり早くなく消費される。事前ロードは、前のゲームプレイが放棄されたポイントまでゲームが事前ロードされるように、プレイヤーに対して同期して実行される。
【0081】
プレイヤー(第1プレイヤー、プレイヤー2、4、5、及びn2)がクラウドゲーミングシステムにアクセスするとき、プレイヤーは、ゲームから離れなかったように見せるように、ゲームプレイのゲームストリームに即時にドロップされる。ゲームプレイからのゲームデータは、識別されたデータセンタの通信及びシステムリソースを使用して、ネットワークを通じてプレイヤーのクライアントデバイスとデータセンタのサーバとの間で交換される。本明細書で説明される実施形態は、第1プレイヤーが、ビデオゲームをプレイするようにスケジュールされた時間に他のプレイヤーをオンラインで集める方式を提供し、システムは、特定のプレイヤーについてのゲームデータを事前ロードし、ゲームをゲームプレイのために準備させる。そのような事前ロードは、システムリソースを最適な使用にさせると共に、全てのプレイヤーが良好なゲームプレイ経験を有することを保証する。周期的なQOSテストも、割り振られたデータセンタが、プレイヤーが満足するゲームプレイ経験のための最小のレイテンシによりインタラクションを行うことが可能であることを保証するように、十分なリソースを提供することが可能であることを保証する。
【0082】
図6aは、スケジュールされた時間にビデオゲームのゲームプレイを可能にするように、予めビデオゲームを事前ロードするために使用される様々な方法の動作を例示する。方法は、スケジュールされた時間におけるビデオゲームのゲームプレイのリクエストがユーザから検出されるとき、動作610において始まる。ユーザは、リクエストを開始したビデオゲームのプレイヤーである。リクエストは、ビデオゲームの識別子、及びスケジュールされた時間におけるビデオゲームのゲームプレイのために招待された複数のプレイヤーのアイデンティティを含む。動作620において例示されるように、リクエストに応答して、通知は、ゲームのゲームプレイに加わるようにプレイヤーを招待するリクエストにおいて識別された複数のプレイヤーに送信される。リクエストにおいて識別されたプレイヤーのうちの1人以上は、リクエストに応答してもよい。動作630において例示されるように、プレイヤーから受信されたリクエストへの応答は、クラウドゲーミングシステムにおいて評価される。プレイヤーのうちの何人かは、招待を受け付けてもよく、何人かの他のプレイヤーは、招待を拒否してもよい。動作640において例示されるように、クラウドゲーミングシステムが、プレイヤーの何人かがゲームプレイの招待を受け付けたことを検出するとき、クラウドゲーミングシステムは、予めビデオゲームを事前ロードすることを始める。事前ロードは、ゲームプレイが始まることになるポイントまで行われてもよい。例えば、前のゲームプレイの間に中断されたビデオゲームについて、ゲームが中断された場所になるポイントが定義されてもよい。ゲームプレイが始まることになるポイントの前にプレイされていなかったビデオゲームについては、そのゲームの最初からである。いくつかの実施形態では、前のゲームプレイの間に、ユーザのリクエストに基づいて中断されたビデオゲームであっても、スケジュールされた時間にゲームプレイを始めるポイントは、そのゲームの最初からとしてもよい。
【0083】
図6bは、他の実施形態における、スケジュールされた時間にビデオゲームのゲームプレイを可能にするように、予めビデオゲームを事前ロードするために使用される様々な方法の動作を例示する。方法は、スケジュールされた時間の間にビデオゲームのゲームプレイのリクエストが第1プレイヤーから検出されるとき、動作650において始まる。リクエストは、第1プレイヤーによって開始され、ビデオゲームの識別子、及びビデオゲームが実行しているクラウドゲーミングシステムによってホストされたアプリケーションと現在オンラインでインタラクションを行っている他のプレイヤーのアイデンティティを含む。識別された他のプレイヤーは、第1プレイヤーとのビデオゲームのゲームプレイに現在関与していることがあり、第1プレイヤーは、ビデオゲームを現在プレイしている他のプレイヤーとの次のゲームプレイセッションを編成しようとしていることがある。代わりに、他のプレイヤーは、自分たちの間でビデオゲームをプレイしている他のプレイヤーに基づいて識別されてもよく、第1プレイヤーは、他のプレイヤーとのビデオゲームのゲームプレイに加わることを望む。いくつかの他の実施形態では、他のプレイヤーは、クラウドゲーミングシステム上の別のアプリケーションとの現在の関与に基づいて識別されてもよく、または現在オンラインであるが、別のアプリケーションとの前のインタラクションに基づいてもよい。
【0084】
動作660において例示されるように、リクエストに応答して、通知は、ゲームのゲームプレイに加わる招待により現在オンラインである他のプレイヤーに送信される。リクエストにおいて識別されたプレイヤーのうちの1人以上は、リクエストに応答してもよい。動作670において例示されるように、プレイヤーから受信されたリクエストへの応答は、クラウドゲーミングシステムにおいて評価される。現在オンラインであるプレイヤーのうちの何人かは、招待を受け付けてもよく、何人かの他のプレイヤーは、招待を拒否してもよい。動作680において例示されるように、クラウドゲーミングシステムが、プレイヤーのうちの何人かがゲームプレイの招待を受け付けたことを検出するとき、クラウドゲーミングシステムは、ビデオゲームについてのゲームデータが事前ロードされる必要があるとき、スケジュールされた時間についての時間ウインドウを判定する。いくつかの実施形態では、時間ウインドウは、第1プレイヤー及び他のプレイヤーがゲームプレイを始めることを可能にするために、ゲームの複雑度に基づいて、及びどの程度ゲームデータが事前ロードされる必要があるかに基づいて、動的に判定されてもよい。他の実施形態では、時間ウインドウは、ビデオゲームに対して予め定義された静的な値であってもよい。
【0085】
動作690において例示されるように、クラウドゲーミングシステムは、1つ以上のデータセンタ内の1つ以上のサーバを識別し、スケジュールされた時間に対して定義された時間ウインドウ内に開始して、ビデオゲームを事前ロードすることを始めるようにデータセンタを指示する信号をデータセンタに送信する。事前ロードは、ゲームプレイが始まるポイントまで行われ、ポイントは、ゲームが前に中断された場所であってもよく、または開始ポイントであってもよく、またはリクエストにおいて第1プレイヤーによって定義されたポイントであってもよい。ビデオゲームの事前ロードは、第1プレイヤー及び他の特定のプレイヤーがクラウドゲーミングシステムにアクセスし、リクエストにおいて定義されたポイントからビデオゲームのゲームプレイを再開するように時間内に完了される。
【0086】
本明細書で議論される様々な実施形態は、ユーザ及びプレイヤーがゲームプレイのためにゲームにアクセスするときよりも前にゲームを事前ロードする方式を提供する。ビデオゲームの事前ロードは、ゲームが再開することになるポイントまでゲームをロードすることを待つ必要なく、プレイヤー及びユーザがビデオゲームのゲームプレイを即時に始めることを可能にする。更に、各々のプレイヤー(リクエストを開始したユーザを含む)に対するビデオゲームの事前ロードは、それぞれのプレイヤーがゲームプレイのためにゲームをセットアップするときに、システムがそれぞれのプレイヤーによって行われる入力を模倣した様々なルーチンについての入力を識別及び提供するにつれて、プレイヤーに対して特有である。プレイヤーによって行われる入力は、プレイヤーによって望まれるゲームカスタマイズ、ゲームの好みなどを含んでもよく、プレイヤーのスキルレベル、信用情報、ゲームの親密性などに基づいてもよい。通知の送信、プレイヤーからの応答の評価、及びユーザに対するビデオゲームの事前ロードは、ユーザによるゲームのゲームプレイのリクエストを検出したことに応答してクラウドゲーミングシステムによって自動で行われ、それらの動作の間にユーザからの更なる入力を必要としない。同様に、各々のプレイヤーに対するゲームの事前ロードは、プレイヤーが招待を受け付けたことに応答してシステムによって自動で実行され、それぞれのプレイヤーからの追加の入力を必要としない。スケジュールされた時間の直前に事前ロードを実行することは、クラウドゲーミングシステムが、ゲームがプレイされていないときの時間に処理及び通信リソースを保存することを可能にし、ゲームプレイがスケジュールされるときの時間のみシステムリソースを消費し、クラウドゲーミングシステムのリソースを割り当てる方式をより効率的にすると共に、ゲームプレイのためにゲームに即時にアクセスすることを可能にする。他の利点は、様々な実施形態を読んだ後に当業者にとって明らかになる。
【0087】
図7は、異なるゲームへのアクセスを提供する際に使用されることができる情報サービスプロバイダアーキテクチャの実施形態を例示する。情報サービスプロバイダ(ISP)1070は、ネットワーク1086を介して地理的に分散及び接続されたユーザ1082に多数の情報サービスを配信する。ゲームへの高速アクセスを提供することに関して様々な実施形態が議論されてきたが、実施形態は、1つ以上のタイプの他のサービスを提供するように拡張されることができる。例えば、ISPは、ゲームなどの1つのタイプのみのサービス、またはゲーム、株価の更新、ブロードキャストメディア、ニュース、スポーツ、ゲームなどの様々なサービスを配信することができる。加えて、各々のISPによって供給されるサービスは動的であってもよく、つまり、任意の時点でサービスが追加または取り除かれることができる。よって、特定の個人に特定のタイプのサービスを提供するISPは、時間の経過と共に変化することができる。例えば、ユーザは、故郷にいる間にユーザの近くのISPによってサービスされてもよく、ユーザは、異なる都市に移動しているときに異なるISPによってサービスされてもよい。故郷のISPは、接続モジュールを通じて、必要な情報及びデータをユーザのゲームまたはアクセスプロファイルから新しいISPに転送し、その結果、ユーザ情報が新しい都市までユーザに「追随」し、データをユーザにより近づけて、よりアクセスしやすくする。別の実施形態では、ユーザについての情報を管理するマスタISPと、マスタISPからの制御の下でユーザと直接的にインタフェースするサーバISPとの間で、マスタ−サーバ関係が確立されてもよい。別の実施形態では、クライアントが世界中を移動するにつれて(すなわち、ユーザに割り当てられたデータセンタの切り替えの間)、データが1つISPから別のISPに転送され、そのような転送は、ユーザにサービスするためにより良好な位置にあるISPを、これらのサービスを配信するISPとするため、それぞれのISPによって提供されるサービスの互換性に基づいてもよい。
【0088】
ISP1070は、ネットワークを通じて顧客にコンピュータベースのサービスを提供する、アプリケーションサービスプロバイダ(ASP)1072を含む。ASPモデルを使用して提供されるソフトウェアは、オンデマンドソフトウェアまたはソフトウエアアズアサービス(SaaS)と呼ばれることもある。特定のアプリケーションプログラム(顧客関係管理など)へのアクセスを提供する簡単な形式は、HTTPなどの標準プロトコルを使用することである。アプリケーションソフトウェアは、例えば、ベンダーのシステムに常駐し、HTMLを使用するウェブブラウザを通じて、ベンダーによって提供された専用クライアントソフトウェアによって、またはシンクライアントなどの他のリモートインターフェイスを介してユーザによってアクセスされる。
【0089】
広い地理的地域を通じて配信されるサービスは、クラウドコンピューティングを使用することが多い。クラウドコンピューティングは、動的スケーラブルで、仮想化されたリソースがインターネット上のサービスとしてしばしば提供されるコンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」のテクノロジインフラストラクチャの専門家である必要はない。クラウドコンピューティングは、インフラストラクチャアズアサービス(IaaS)、プラットフォームアズアサービス(PaaS)、及びソフトウエアアズアサービス(SaaS)などの異なるサービスに分けられることができる。クラウドコンピューティングサービスは、ウェブブラウザからアクセスされる共通のビジネスアプリケーションをオンラインでしばしば提供し、ソフトウェア及びデータはサーバに格納される。クラウドという用語は、インターネットがコンピュータネットワーク図にどのように描かれているかに基づいて(例えば、サーバ、ストレージ、及びロジックを使用する)インターネットのメタファとして使用され、メタファが隠す複雑なインフラストラクチャの抽象的概念である。
【0090】
更に、ISP1070は、シングル及びマルチプレイヤービデオゲームをプレイするためにゲームクライアントによって使用されるゲーム処理サーバ(GaPS)1074を含む。インターネット上でプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームはプレイヤーからのデータを収集し、それを他のプレイヤーに配布する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホストするには別のサーバが必要となる。別の実施形態では、GaPSは、プレイヤーとそれぞれのゲームプレイデバイスとの間の通信を確立し、集中GaPSに頼ることなく情報を交換する。
【0091】
専用GaPSは、クライアントとは独立して実行されるサーバである。そのようなサーバは、通常、データセンタに配置された専用ハードウェアで実行され、より多くの帯域幅と専用の処理能力を提供する。専用サーバは、ほとんどのPCベースのマルチプレイヤーゲームのためのゲームサーバをホストするのに適した方法である。多人数参加型オンラインゲームは、通常ゲームタイトルを所有するソフトウェア会社がホストする専用サーバで実行され、コンテンツを制御及び更新することができる。
【0092】
放送処理サーバ(BPS)1076は、視聴者にオーディオまたはビデオ信号を分配する。非常に狭い範囲の視聴者への放送はナローキャスティングと呼ばれることもある。放送配信の最終工程は、信号が聴取者または視聴者にどのように到達するかであり、ラジオ局またはテレビ局と同様にアンテナ及び受信機に放送され得るか、局を介してケーブルテレビまたはケーブルラジオ(または「無線ケーブル」)を経由してまたはネットワークから直接放送され得る。インターネットはまた、特に、信号及び帯域幅を共有できるマルチキャストを使用して、ラジオまたはテレビのいずれかを受信者に届け得る。歴史的に、放送は、全国放送または地域放送などの地理的領域によって区切られている。しかしながら、高速インターネットの普及に伴い、コンテンツは世界のほぼ全ての国に到達可能なため、放送は地域によって定義されない。
【0093】
ストレージサービスプロバイダ(SSP)1078は、コンピュータストレージ空間及び関連する管理サービスを提供する。SSPは定期的なバックアップとアーカイブも提供する。ストレージをサービスとして提供することにより、ユーザは必要に応じてより多くのストレージを注文できる。その他の大きな利点は、SSPにバックアップサービスが含まれており、コンピュータのハードドライブに障害が発生してもユーザが全てのデータを失うことがないことである。更に、複数のSSPは、ユーザデータの全部または一部のコピーを有することができ、ユーザがどこにいるか、またはデータにアクセスするために使用されているデバイスとは無関係に、ユーザは効率的な方法でデータにアクセスすることができるようになる。例えば、ユーザは、移動中に自宅のコンピュータ及び携帯電話内の個人ファイルにアクセスすることができる。
【0094】
通信プロバイダ1080は、ユーザに接続性を提供する。通信プロバイダの1つの種類は、インターネットへのアクセスを提供するインターネットサービスプロバイダ(ISP)である。ISPはダイヤルアップ、DSL、ケーブルモデム、光ファイバ、無線、または専用の高速インターコネクトなどのインターネットプロトコルデータグラムの配信に適したデータ伝送技術を使用して顧客を接続する。通信プロバイダは、電子メール、インスタントメッセージング、及びSMSテキストメッセージなどのメッセージングサービスも提供することができる。通信プロバイダの別の種類は、インターネットへの直接のバックボーンアクセスを提供することによって、帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダは、電気通信会社、データ通信業者、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などで構成され得る。
【0095】
データ交換1088は、ISP1070内部のいくつかのモジュールを相互接続し、ネットワーク1086を介してこれらのモジュールをユーザ1082に接続する。データ交換1088は、ISP1070の全てのモジュールが近接している小さな領域をカバーすることができ、または異なるモジュールが地理的に分散している場合に大きな地理的領域をカバーすることができる。例えば、データ交換1088は、データセンタのキャビネット内に高速ギガビットイーサネット(登録商標)(またはより高速)、または大陸間仮想エリアネットワーク(VLAN)を含むことができる。
【0096】
ユーザ1082は、少なくともCPU、メモリ、ディスプレイ、及びI/Oを含む、クライアントデバイス1084によりリモートサービスにアクセスする。クライアントデバイスは、PC、携帯電話、ネットブック、タブレット、ゲームシステム、PDAなどとすることができる。一実施形態では、ISP1070は、クライアントによって使用されるデバイスのタイプを認識し、使用される通信方法を調整する。他のケースでは、クライアントデバイスは、HTMLなどの標準的な通信方法を使用して、ISP1070にアクセスする。
【0097】
本発明の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む様々なコンピュータシステム構成により実施されてもよい。本発明はまた、有線ベースまたは無線ネットワークを通じてリンクされる、リモート処理デバイスによってタスクが実行される、分散型コンピューティング環境で実践されることができる。
【0098】
上記の実施形態を念頭に置いて、本発明は、コンピュータシステムに記憶されたデータを含む様々なコンピュータ実施動作を使用することができることを理解されるべきである。これらの動作は、物理量の物理的操作を必要とする動作である。本発明の一部を形成する本明細書に記載されているいずれの動作も有用な機械動作である。本発明はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要とされる目的のために特別に構成することができ、または装置は、コンピュータに格納されたコンピュータプログラムによって選択的に起動または構成された汎用コンピュータとすることができる。具体的には、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用機械を使用することができ、または必要とされる動作を実行するより特殊化した装置を構築する方がより便利であり得る。
【0099】
本発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして実施されてもよい。代わりに、コンピュータ可読コードは、上記説明されたデータ交換相互接続を使用してサーバからダウンロードされてもよい。コンピュータ可読媒体は、データを記憶することができる任意のデータストレージデバイスであり、データは、その後、コンピュータシステムによって読み取ることができる。コンピュータ可読媒体の例は、ハードドライブ、ネットワーク接続ストレージ(NAS)、リードオンリメモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープ、並びに他の光学及び非光学データストレージデバイスを含む。コンピュータ可読媒体は、コンピュータ可読コードが分散方式で格納され、実行されるように、ネットワーク結合コンピュータシステム上に分散されるコンピュータ可読有形媒体を含むことができる。
【0100】
方法動作が特定の順序で説明されているが、他のハウスキーピング操作が動作の間に実行されてもよく、または動作が、わずかに異なる時間に生じるように調整されてもよく、もしくはオーバーレイ動作の処理が所望の方法で実行される限り、処理と関連付けられた様々な間隔において処理動作の発生を可能にするシステムに分散されてもよいことを理解されるべきである。
【0101】
前述の発明は、理解を明確にするために幾分詳細に説明してきたが、添付の特許請求の範囲内で特定の変更及び修正が実践されることができることが明らかである。したがって、本実施形態は、例示的であり、限定的ではないと見なされるべきであり、本発明は本明細書で与えられた詳細に限定されるものではなく、説明される実施形態の範囲及び均等物内で修正されてもよい。
【0102】
ゲーミングコンソールの例示的な全体的なシステムアーキテクチャが本明細書で説明される。実施例のゲーミングコンソールは、本発明の実施形態を実装するためのコントローラと互換性を有することができる、Sony(登録商標)Playstation3(登録商標)(PS3)またはPlaystation4(登録商標)(PS4)エンターテインメントデバイスを含んでもよい。PS3ゲーミングコンソールシステムアーキテクチャが詳細に説明されるが、本明細書で説明される様々な実施形態が、異なるゲーミングコンソールまたはコンピューティングデバイスのシステムアーキテクチャに拡張されることができることに留意されるべきである。システムユニットに接続可能な様々な周辺機器デバイスを有するシステムユニットが提供される。システムユニットは、
図1のクラウドゲーミングシステム300と同様である。システムユニットは、PS3にあるような8コアプロセッサ、またはPS4にあるようなマルチコアプロセッサとすることができる、プロセッサ、PS3にあるようなRambus(登録商標)ダイナミックランダムアクセスメモリ(XDRAM)ユニット、またはPS4にあるようなGDDR5などのグラフィックダイナミックランダムアクセスメモリ、PS3にあるような専用ビデオランダムアクセスメモリ(VRAM)ユニットを有するReality Synthesizerグラフィックユニット(例えば、550MHz GPU)、またはPS4及びPS4 Proにおける共有グラフィックメモリを有する800もしくは900MHz GPU、並びにI/Oブリッジを含む。システムユニットはまた、I/Oブリッジを通じてアクセス可能な、ディスク及び着脱可能スロットインハードディスクドライブ(HDD)から読み出すためのBluRay(登録商標)ディスクリードオンリメモリ(BD−ROM(登録商標))(光学)ディスクリーダを含む。任意選択で、システムユニットはまた、I/Oブリッジを通じて同様にアクセス可能な、コンパクトフラッシュ(登録商標)メモリカード及びメモリスティック(登録商標)メモリカードなどを読み出すためのメモリカードリーダ、並びに、PS4では、ゲームを記録するためのビルトインDVRを含む。
【0103】
I/Oブリッジはまた、6個のユニバーサルシリアルバス(USB)2.0ポート、ギガビットイーサネット(登録商標)ポート、IEEE(登録商標)802.11b/g無線ネットワーク(Wi−Fi)ポート、及び最大で7個のBluetooth(登録商標)接続をサポートできるBluetooth(登録商標)無線リンクポートに接続する。
【0104】
動作中、I/Oブリッジは、1つ以上のゲームコントローラ(PS3にあるようなDualShock3コントローラ、またはPS4にあるようなPS4 DualShock4コントローラなど)からのデータを含む、全ての無線、USB、及びイーサネット(登録商標)データを扱う。例えば、ユーザがゲームをプレイしているとき、I/Oブリッジは、Bluetooth(登録商標)リンクを介してゲームコントローラからデータを受信し、それをプロセッサ(PS3における)またはマルチコアプロセッサ(PS4における)へと送り、プロセッサまたはマルチコアプロセッサは、それに従ってゲームの現在の状態を更新する。更に、他の画像及び動画センサは、ユーザのゲームプレイの間に捕捉されたデータをI/Oブリッジに提供し、I/Oブリッジは、それぞれのプロセッサに送る。ゲームコントローラ(例えば、PS4のゲームコントローラ)は、ゲームを共有するための共有ボタンオプション、クリック可能タッチパッド、再充電可能バッテリ(リチウムイオンまたは他のタイプ)などを含む。
【0105】
無線、USB、及びイーサネット(登録商標)ポートはまた、リモコン、キーボード、マウス、Sony Playstation Portable(登録商標)エンターテインメントデバイスなどのポータブルエンターテインメントデバイス、EyeToy(登録商標)ビデオカメラなどのビデオカメラ、マイクロフォンヘッドセット、及び着脱可能ハードドライブなど、ゲームコントローラに加えて他の周辺機器デバイスに対して接続性を提供する。したがって、そのような周辺機器デバイスは、原則として、無線でシステムユニットに接続されてもよく、例えば、ポータブルエンターテインメントデバイスは、Wi−Fiアドホック接続を介して通信してもよく、マイクロフォンヘッドセットは、Bluetooth(登録商標)リンクを介して通信してもよい。
【0106】
それらのインタフェースのプロビジョニングは、Playstation3デバイスも潜在的にはデジタルビデオレコーダ(DVR)、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤー、ボイスオーバIP電話、携帯電話、プリンタ、及びスキャナなどの他の周辺機器デバイスとの互換性を有することを意味する。
【0107】
加えて、レガシーメモリカードリーダは、USBポートを介してシステムユニットに接続されてもよく、Playstation(登録商標)またはPlaystation2(登録商標)デバイスによって使用される種類のメモリカードの読み出しを可能にする。
【0108】
本実施形態では、ゲームコントローラは、Bluetooth(登録商標)リンクを介してシステムユニットと無線で通信するように動作可能である。しかしながら、ゲームコントローラは代わりに、USBポートに接続されることができ、それによって、ゲームコントローラのバッテリを充電する電力も提供する。1つ以上のアナログジョイスティック及び従来の制御ボタンに加えて、ゲームコントローラは、各々の軸における転換及び回転に対応する、6個の自由度における動きに敏感である。その結果として、ゲームコントローラのユーザによるジェスチャ及び移動は、従来のボタンまたはジョイスティックコマンドに加えてまたはそれらの代わりに、ゲームへの入力として転換される。任意選択で、Playstation(商標)ポータブルデバイスなどの他の無線対応可能な周辺機器デバイスがコントローラとして使用されてもよい。Playstation(商標)ポータブルデバイスのケースでは、追加のゲームまたは制御情報(例えば、制御命令またはライブの数)は、デバイスのスクリーン上で提示されてもよい。ダンスマット(図示せず)、ライトガン(図示せず)、ハンドル及びペダル(図示せず)、または即答クイズゲームのための1つまたは複数の大型のボタン(これも図示せず)などの特注品のコントローラなど、他の代替的または補助的制御装置も使用されてもよい。
【0109】
リモコンも、Bluetooth(登録商標)リンクを介してシステムユニットと無線で通信するように動作可能である。リモコンは、BluRay(商標)ディスクBD−ROMリーダの操作及びディスクの内容閲覧のために適した制御を備える。
【0110】
BluRay(商標)ディスクBD−ROMリーダは、従来の記録済みコンパクトディスク(CD)、記録可能なCD、及びいわゆるスーパーオーディオCDに加えて、Playstation及びPlayStation2デバイスとの互換性を有するコンパクトディスクリードオンリメモリ(CD−ROM)を読み出すように動作可能である。BluRay(商標)ディスクBD−ROMリーダも、従来の記録済みDVD及び記録可能なDVDに加えて、Playstation2(商標)及びPlayStation3(商標)デバイスとの互換性を有するデジタル多用途ディスクリードオンリメモリ(DVD−ROM)を読み出すように動作可能である。BluRay(商標)ディスクBD−ROMリーダは更に、従来の記録済みブルーレイディスク及び記録可能なブルーレイディスクと共に、Playstation3デバイスとの互換性を有するBD−ROMを読み出すように動作可能である。
【0111】
システムユニットは、Reality Synthesizerグラフィックユニットを介して、プレイステーション3デバイスまたはPlaystation4デバイスによって生成または復号された音声及びビデオを、音声コネクタ及びビデオコネクタ経由で、ディスプレイ及び1つ以上のスピーカを備えた表示及び音声出力装置(モニタまたはテレビ受像機など)に提供するように動作可能である。音声コネクタは、従来のアナログ及びデジタル出力を含んでもよく、ビデオコネクタは、コンポーネントビデオ、Sビデオ、コンポジットビデオ、及び1つ以上の高解像度マルチメディアインタフェース(HDMI(登録商標))出力を様々に含んでもよい。その結果として、ビデオ出力は、PALもしくはNTSCなどのフォーマットにあってもよく、または720p、1080i、もしくは1080pの高解像度及び4K、HDRにあってもよい。
【0112】
音声処理(生成及び復号など)は、プロセッサによって実行される。例えば、Playstation3デバイスのオペレーティングシステムは、Dolby(登録商標)5.1サラウンドサウンド、Dolby(登録商標)シアターサラウンド(DTS)、及びBlu−Ray(登録商標)ディスクからの7.1サラウンドサウンドの復号をサポートする。
【0113】
本実施形態では、ビデオカメラは、(電荷結合素子(CCD)画像センサも使用されてもよいが)CMOS(相補型金属酸化膜半導体)画像センサ、LEDインジケータ、並びにハードウェアベースのリアルタイムデータ圧縮及び符号化装置を含み、圧縮ビデオデータがシステムユニットによる復号のために、イントラ画像ベースのMPEG(motion picture expert group)標準などの適切なフォーマットにおいて送信され得る。カメラLEDインジケータは、例えば、不利な照明条件を示す適切な制御データをシステムユニットから受け取ると、発光するように配置されている。ビデオカメラの実施形態は、USB、Bluetooth(登録商標)、Wi−Fi通信ポートを介してシステムユニットに様々な方法で接続されてもよい。ビデオカメラの実施形態は、1つ以上の関連するマイクロフォンを含んでおり、また、音声データを送信することができる。ビデオカメラの実施形態では、CCDは、高解像度ビデオの捕捉に対して適切な分解能を有してもよい。使用中、ビデオカメラによって捕捉された画像は、例えば、ゲーム内に組み込まれてもよく、ゲーム制御入力として解釈されてもよい。
【0114】
一般に、システムユニットの通信ポートのうちの1つを介して、ビデオカメラまたはリモコンなどの周辺機器デバイスによりデータ通信がうまく行われるように、デバイスドライバなどの適切なソフトウェアが提供されるべきである。デバイスドライバ技術は公知であり、ここで詳細に説明しないが、デバイスドライバまたは同様のソフトウェアインタフェースが、記載する本実施形態で必要とされ得ることを当業者は理解する。
【0115】
プロセッサは、メモリコントローラ及びデュアルバスインタフェースコントローラを含む外部入力及び出力構造、電力処理エレメントと称されるメインプロセッサ、シナジスティックプロセッシングエレメント(SPE)と称される8基のコプロセッサ、及びエレメント相互接続バスと称される上記構成要素を接続する環状データバス、の4個の基本構成要素、を備えたアーキテクチャを有する。プロセッサの総浮動小数点性能は、Playstation2デバイスのエモーションエンジンの6.2GFLOPと比較して、218GFLOPSである。
【0116】
パワープロセッシングエレメント(PPE)は、3.2GHzの内部クロックにより動作する双方向同時マルチスレッディングPower準拠のPCコア(PPU)に基づいている。それは、512kBレベル2(L2)キャッシュ及び32kBレベル1(L1)キャッシュを含む。PPEは、3.2GHzにおいて25.6GFLOPに転換する、クロックサイクルごとに8つの単一位置操作ができる。PPEの主要な役割は、演算作業負荷の大部分を処理するシナジスティックプロセッシングエレメントのコントローラとして機能することにある。動作中、PPEは、ジョブキューを保持し、シナジスティックプロセッシングエレメントのジョブをスケジュールしており、その進捗を監視する。その結果として、各シナジスティックプロセッシングエレメントはカーネルを実行し、その役割は、ジョブを取り出して、これを実行し、PPEと同期することにある。
【0117】
各々のシナジスティックプロセッシングエレメント(SPE)は、シナジスティックプロセッシングユニット(SPU)及びメモリフローコントローラ(MFC)をそれぞれ含み、MFCは、ダイナミックメモリアクセスコントローラ(DMAC)、メモリ管理ユニット(MMU)、及びバスインタフェース(図示せず)をそれぞれ含む。各々のSPUは、3.2GHzで動作し、原則として4GBに拡張可能な、256kBのローカルRAMを含むRISCプロセッサである。各々のSPEは、単精度性能の理論的な25.6GFLOPSを示す。1つのSPUは、1クロックサイクルに、4つの単精度浮動小数点部、4つの32ビット数、8つの16ビット整数または16の8ビット整数を処理することができる。同一のクロックサイクルにおいて、メモリ操作も実行することができる。SPUは、システムメモリXDRAM1426に直接アクセスせず、SPUによって形成された64ビットアドレスはMFCに渡され、MFCが、自身のDMAコントローラに対して、エレメント相互接続バス及びメモリコントローラを介してメモリにアクセスするように指示する。
【0118】
エレメント相互接続バス(EIB)は、上記プロセッサ素子、すなわちPPE、メモリコントローラ、デュアルバスインタフェース、及び8基のSPE、合計して12個のパーティシパント(Participant:構成要素)を接続するプロセッサへの内部の論理的には環状の通信バスである。パーティシパントは、クロックサイクルごとに8バイトのレートにおいてバスへの読み出し及び書き込みを同時に行うことができる。前に述べられたように、各々のSPEは、より長い読み出し及び書き込みシーケンスをスケジュールのためのDMACを含む。EIBは、4つのチャネルを備え、そのうち2つは時計回り方向であり、残り2つは反時計回り方向である。その結果として、12のパーティシパントについて、2つのパーティシパント間のステップ方式の最長のデータフローは、適切なディレクションによって6ステップとなる。したがって、パーティシパント間でアービトレーションが行われて完全な利用度が実現されると、12のスロットの理論上のピーク瞬間EIB帯域幅は、1クロックにつき96Bとなる。これは、3.2GHz(ギガヘルツ)のクロックレートにおける307.2GB/s(ギガバイト/秒)の理論上のピーク帯域幅に等しい。
【0119】
メモリコントローラは、Rambus Incorporatedによって開発されたXDRAMインタフェースを含む。メモリコントローラは、25.6GB/sの理論上のピーク帯域幅を有するRambus XDRAM1426とインタフェースする。
【0120】
デュアルバスインタフェースは、Rambus FlexIO(登録商標)システムインタフェースを含む。インタフェースは、5の経路が受信用、7つの経路が送信用である、各々が8ビット幅である12個のチャネルに編成される。これにより、プロセッサと、コントローラを介してI/Oブリッジ間、及びコントローラを介してReality Simulatorグラフィックユニット間で、理論上のピーク帯域幅が62.4GB/s(送信36.4GB/s、受信26GB/s)が得られる。
【0121】
Reality Synthesizerグラフィックユニットにプロセッサによって送信されるデータは通常、表示リストが含まれ、これは、頂点を描画したり、ポリゴンにテクスチャを貼り付けたり、照明条件を指定するなどための一連のコマンドである。
【0122】
実施形態は、現実世界ユーザをより正確に識別し、アバターまたはシーンの活動を案内するための深度データを捕捉することを含んでもよい。オブジェクトは、人が保持している物体であっても、または人の手であってもよい。この説明では、用語「深度カメラ」及び「三次元カメラ」は、距離情報すなわち深度情報を取得することができる任意のカメラを指す。例えば、深度カメラは、距離情報を取得するために制御された赤外線照明を利用することができる。別の例示的な深度カメラは、立体カメラ対があり、これは2台の基準カメラを使用して距離情報を三角測量によって求める。同様に、用語「深度検知装置」は、距離情報と共に二次元画素情報を取得できるいずれかのタイプのデバイスを指す。
【0123】
三次元画像における最新の進歩により、リアルタイムのインタラクティブコンピュータのアニメーションの可能性が広がっている。特に、新たな「深度カメラ」は、標準的な二次元ビデオ画像に加えて三次元を捕捉及びマッピングする能力を提供する。新たな深度データにより、本発明の実施形態は、他のオブジェクトの背後を含む、ビデオシーン内の様々な場所にあるコンピュータにより生成されたオブジェクトの配置をリアルタイムで可能にする。
【0124】
その上、本発明の実施形態は、ユーザに対してリアルタイムのインタラクティブゲーム体験を提供する。例えば、ユーザは、コンピュータにより生成した様々なオブジェクトとリアルタイムでインタラクションを行うことができる。更に、ビデオシーンは、ユーザの経験を高めるようにリアルタイムで変更することができる。例えば、コンピュータにより生成されたコスチュームを、ユーザの服の上にはめ込んだり、コンピュータが生成した光源を利用して、ビデオシーン内に仮想の影を表示させることができる。よって、本発明の実施形態及び深度カメラを使用して、ユーザは、自分のリビングルーム内でインタラクティブ環境を経験することができる。通常のカメラと同様に、深度カメラは、ビデオ画像を含む複数の画素についての二次元データを捕捉する。これらの値は、画素についての色値、通常は、各々の画素についての赤、緑、及び青(RGB)の値である。この方式では、カメラによって捕捉されたオブジェクトは、モニタ上では二次元オブジェクトのように見える。
【0125】
本発明の実施形態はまた、分散画像処理構成を考慮する。例えば、本発明は、1つの場所(CPUなど)や2つの場所(CPUと他の1つの素子など)で行われる捕捉された画像及び表示画像処理に限定されない。例えば、入力画像処理は、処理を実行することができる関連のCPU、プロセッサまたは装置において容易に行うことができ、基本的には、画像処理の全てを、相互接続システム全体に分散させることができる。よって、本発明は、いずれかの特定の画像処理ハードウェア回路及び/またはソフトウェアに限定されない。本明細書で説明される実施形態は、汎用ハードウェア回路及び/またはソフトウェアのいずれかの特定の組み合わせにも、処理構成要素によって実行される命令についてのいずれの特定のソースにも限定されない。
【0126】
上記実施形態を考慮して、本発明は、コンピュータシステムに記憶されたデータを伴う様々なコンピュータにより実施される動作を使用してもよいことが理解されるべきである。これらの動作は、物理量の物理操作を必要とする動作を含む。通常、必須ではないが、これらの量は、記憶され、移転され、組み合わされ、比較され、そうでない場合、操作が可能な電気または磁気信号の形式をとる。更に、実行される操作は、作成すること、識別すること、判定すること、または比較することを指すことが多い。
【0127】
上記説明された発明は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、ミニコンピュータ、及びメインフレームコンピュータなどを含む他のコンピュータシステム構成により実践されてもよい。本発明はまた、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実践されてもよい。
【0128】
発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして実施されてもよい。コンピュータ可読媒体は、電磁搬送波を含む、後にコンピュータシステムによって読み取ることができるデータを記憶できる任意のデータ記憶装置である。コンピュータ可読媒体の例は、ソリッドステートドライブ(SSD)、ハードディスクドライブ(HDD)、デジタルビデオディスク(DVD)ドライブ、Bluray(登録商標)などのハードドライブ、ネットワークアタッチドストレージ(NAS)、リードオンリメモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープ、並びに他の光学及び非光学データ記憶装置を含む。コンピュータ可読媒体はまた、コンピュータ可読コードが分散方式で記憶及び実行されるように、ネットワーク結合コンピュータシステム上に分散されることができる。
【0129】
前述の発明は、理解を明確にするためにある程度詳細に説明されてきたが、変更及び修正が添付の請求項の範囲内で実践されてもよいことが明らかである。したがって、本実施形態は例示的であって限定的ではないと見なされるべきであり、本発明は、本明細書において与えられた詳細に限定されるものではなく、添付の請求項の範囲及び均等物の範囲内で修正されてもよい。