(57)【特許請求の範囲】
【請求項１】
クラウドゲーミングシステム上で利用可能なビデオゲームのゲームプレイ方法であって、
前記ビデオゲームのゲームプレイのリクエストを検出し、前記リクエストは、第１プレイヤーのクライアントデバイスから出されると共に、ゲームプレイに対するスケジュールされた時間を識別し、かつ、前記第１プレイヤーとの前記ビデオゲームのゲームプレイに加わるように招待される他のプレイヤーを識別するものであり、前記ビデオゲームは、前記第一プレイヤーと前記他のプレイヤーとの間でプレイされて現在のゲーム状態を定義するマルチプレイヤービデオゲームであって、
前記リクエストに応答して、前記スケジュールされた時間またはその前に前記ビデオゲームのゲームプレイに加わるように招待をする通知を前記他のプレイヤーに送信し、
前記スケジュールされた時間に前記第１プレイヤーとの前記ビデオゲームのゲームプレイの前記招待を受け付けた前記他の特定のプレイヤーを識別するように、１人以上の前記他のプレイヤーから受信された前記通知への応答を評価し、
前記第１プレイヤーとゲームプレイのための前記招待を受け付けた前記他の特定のプレイヤーとに対し、前記現在のゲーム状態によって定義された前記ビデオゲームのゲームプレイが始まるポイントまで前記ビデオゲームを事前ロードし、前記事前ロードは、前記現在のゲーム状態によって定義されたポイントから、前記スケジュールされた時間またはその前に前記ビデオゲームのゲームプレイを始めるように、前記第１プレイヤー、及び前記他の特定のプレイヤーの各々が前記クラウドゲーミングシステムに接続する前に実行されるものであり、前記事前ロードでは、
前記ビデオゲームの前記事前ロードを実行するようスケジュールされた時間の前に定義された時間ウインドウを識別し、
前記事前ロードを前記第１プレイヤー及び前記他の特定のプレイヤーのそれぞれについて前記時間ウインドウ内で実行し、前記時間ウインドウは、ゲームデータと前記ビデオゲームの事前ロードを完了するためのバッファ時間とに必要な時間を含んで定義され、かつ、前記ビデオゲームは、マルチプレイヤービデオゲームであり、前記方法の動作は、前記クラウドゲーミングシステムにおけるサーバのプロセッサによって実行される、
方法。
【請求項２】
前記送信、前記評価、及び前記事前ロードは、ユーザインタラクションを必要とすることなく、前記リクエストを検出すると前記クラウドゲーミングシステムにおける前記サーバによって自動で実行される、
請求項１に記載の方法。
【請求項３】
プレイヤーから受信された前記応答は、前記プレイヤーが前記スケジュールされた時間に前記ビデオゲームのゲームプレイを始めることを可能にするように、前記クラウドゲーミングシステムが前記プレイヤーに対するゲームプレイに対して前記ビデオゲームを事前ロードを始めるための承認を含み、前記サーバによって実行される前記プレイヤーに対する前記ビデオゲームの前記事前ロードでは、
前記ビデオゲームのセットアップの間に前記プレイヤーが従うルーチンのセットを前記ビデオゲームのゲームデータから取り出し、
前記ポイントまでの前記ビデオゲームのセットアップの間及び前記ビデオゲームの実行の間、前記ルーチンのセットの各々のルーチンについての前記プレイヤーによって行われる入力を取り出し、
前記サーバにおいて前記ビデオゲームをインスタンス化し、前記インスタンス化では、前記プレイヤーが従う前記ルーチンのセットを実行し、かつ、前記ルーチンのセットの各々のルーチン及び前記ポイントまでの前記ビデオゲームの実行の間の前記入力を自動で行い、前記ビデオゲームの前記事前ロードによって、前記ビデオゲームのゲームデータが、前記ゲームプレイが始まるポイントまで更新されて、前記プレイヤーが、前記ビデオゲームが中断されるポイントからゲームプレイを再開することが可能になるものであり、
前記ルーチンのセット及び入力は、前記プレイヤーに対して特有であり、前記ルーチンのセット及び入力は、前記プレイヤーの信用情報、前記プレイヤーによって提供されるゲームカスタマイズ、前記ルーチンのセットにおける各々のルーチンの間に前記プレイヤーによって行われる入力、及び前記プレイヤーのゲーム状態を識別する情報を提供し、前記プレイヤーは、前記第１プレイヤー、または前記スケジュールされた時間に前記ビデオゲームのゲームプレイに加わるための前記招待を受け付けた前記他の特定のプレイヤーのうちのいずれか１人である、
請求項１に記載の方法。
【請求項４】
プレイヤーに対しての前記ゲームの事前ロードでは、
前記プレイヤーの現在の地理的位置を判定するように、前記プレイヤーと関連付けられたユーザプロファイルにおける地理的位置インジケータをクエリし、
前記プレイヤーの前記識別された地理的位置に近接した前記クラウドゲーミングシステムにおけるデータセンタを識別し、
ゲームプレイのために前記ビデオゲームを事前ロードするための前記識別されたデータセンタ内の１つ以上のサーバを識別し、
前記プレイヤーは、前記第１プレイヤー、または前記スケジュールされた時間に前記ビデオゲームのゲームプレイに加わるための前記招待を受け付けた前記他の特定のプレイヤーのうちのいずれか１人である、
請求項１に記載の方法。
【請求項５】
前記ゲームの事前ロードでは、更に、
前記スケジュールされた時間の前の前記時間ウインドウの間、前記第１プレイヤーを含む前記他の特定のプレイヤーの地理的位置に対応する１つ以上のデータセンタ内のサーバへの前記ビデオゲームの前記事前ロードと、前記識別されたデータセンタ内の前記１つ以上のサーバへの前記ビデオゲームの前記事前ロードを同期し、
前記同期することは、前記第１プレイヤー、及び前記他の特定のプレイヤーの各々が、前記スケジュールされた時間に前記ビデオゲームのゲームプレイを即時に始めることを可能にする、
請求項４に記載の方法。
【請求項６】
更に、前記第１プレイヤー及び前記他の特定のプレイヤーのそれぞれが前記ビデオゲームのゲームプレイのために前記クラウドゲーミングシステムにアクセスすることを可能にするように、前記スケジュールされた時間からの追加の予め定義された閾値期間を提供する、
請求項１に記載の方法。
【請求項７】
更に、応答の評価では、前記第１プレイヤーに、前記他の特定のプレイヤーが前記スケジュールされた時間における前記ビデオゲームのゲームプレイのための前記招待を受け付けたことを知らせる確認通知を送信する、
請求項１に記載の方法。
【請求項８】
前記他のプレイヤーは、前記第１プレイヤーのソーシャルコンタクトであり、前記第１プレイヤーのソーシャルネットワークから識別される、
請求項１に記載の方法。
【請求項９】
前記他のプレイヤーは、前記第１プレイヤーとの前記ビデオゲームのゲームプレイに前に関与したプレイヤー、または現在オンラインであり、別のアプリケーションとインタラクションを行っている前記第１プレイヤーのソーシャルコンタクトである、
請求項１に記載の方法。
【請求項１０】
クラウドゲーミングシステム上で利用可能なビデオゲームのゲームプレイ方法であって、
第１プレイヤーからの前記ビデオゲームのゲームプレイのリクエストを検出し、前記リクエストは、ゲームプレイについてのスケジュールされた時間、及び前記ビデオゲームのゲームプレイに加わるように招待される他のプレイヤーのアイデンティティを識別し、前記他のプレイヤーは、前記クラウドゲーミングシステムによってホストされた１つ以上のアプリケーションと現在オンラインでインタラクションを行い、
前記スケジュールされた時間又はその前に前記ビデオゲームのゲームプレイに加わる招待をする通知を現在オンラインである前記他のプレイヤーに送信し、
前記スケジュールされた時間における前記ビデオゲームのゲームプレイの前記招待を受け付けた前記他の特定のプレイヤーを識別するように、１人以上の前記他のプレイヤーから受信された前記通知への応答を評価し、
前記第１プレイヤー、及びゲームプレイのための前記招待を受け付けた前記他の特定のプレイヤーに対し、前記ビデオゲームのゲームプレイが始まるポイントまで前記ビデオゲームを事前ロードし、
前記ゲームプレイが始まるポイントは前記ビデオゲームの現在のゲーム状態から識別され、前記事前ロードは、前記ビデオゲームが前記スケジュールされた時間の前にゲームプレイが可能となるように、前記スケジュールされた時間の前に定義された時間ウインドウ内で実行されて、前記スケジュールされた時間またはその前に前記クラウドゲーミングシステムで利用可能なそれぞれのインスタンスにアクセスすると、前記第１プレイヤー及び前記他の特定のプレイヤーの各々が前記ビデオゲームのゲームプレイを即時に始めることを可能にするものであり、
前記ビデオゲームは、マルチプレイヤービデオゲームであり、前記方法の動作は、前記クラウドゲーミングシステムにおける１つ以上のプロセッサによって実行される、
方法。
【請求項１１】
前記他のプレイヤーは、前記第１プレイヤーとの前記ビデオゲームのゲームプレイに現在関与している前記他のプレイヤーに基づいて、または前記ビデオゲームのゲームプレイに現在関与している前記他のプレイヤーから、または前記第１プレイヤーとの他のビデオゲームのゲームプレイに関与している前記他のプレイヤーから、または他のビデオゲームのゲームプレイに関与している前記他のプレイヤーから、または他のオンラインアプリケーションとのインタラクションへの現在の関与から、または他のオンラインアプリケーションへの前の関与から識別される、
請求項１０に記載の方法。
【請求項１２】
プレイヤーに対しての前記ビデオゲームの事前ロードでは、
前記プレイヤーの地理的位置を識別するように、前記プレイヤーと関連付けられた地理的位置インジケータをクエリし、
前記識別されたデータセンタ内の１つ以上のサーバ上でのゲームプレイのための前記ビデオゲームをインスタンス化するための前記プレイヤーの前記識別された地理的位置に近接した前記クラウドゲーミングシステムにおけるデータセンタを識別し、
前記識別されたデータセンタにおいて前記ビデオゲームをインスタンス化し、前記インスタンス化することによって、前記ビデオゲームのゲームコードが前記識別されたデータセンタにおける前記１つ以上のサーバ上で実行され、前記プレイヤーのゲームデータが前記ビデオゲームの前記現在のゲーム状態によって判定された前記プレイヤーのゲーム状態によって定義されたポイントまでアップロードされ、前記プレイヤーは、第１プレイヤー、または、前記ビデオゲームのゲームプレイのための前記招待を受け付けた前記他のプレイヤーのうちの１人である、
請求項１０に記載の方法。
【請求項１３】
前記ゲームの事前ロードでは、更に、前記第１プレイヤー及び前記他の特定のプレイヤーが前記現在のゲーム状態によって定義された前記ポイントから前記スケジュールされた時間に前記ビデオゲームのゲームプレイを始めることを可能にするように、前記ビデオゲームのインスタンス化を同期し、及び前記スケジュールされた時間に対して定義された前記時間ウインドウ内に１つ以上のデータセンタにおいて、前記第１プレイヤー及び前記他の特定のプレイヤーの各々に対して前記ビデオゲームのゲームデータをアップロードする、
請求項１２に記載の方法。
【請求項１４】
前記プレイヤーの前記地理的位置は、前記プレイヤーの前記クライアントデバイス内で利用可能なグローバルポジショニングシステムの信号から取得された地理的位置情報に対して、またはウェブブラウジングアプリケーションとの前記プレイヤーのインタラクションから取得された情報から、または前記プレイヤーのソーシャルメディアの投稿から取得された情報から、またはクライアントデバイス内のアプリケーションとの前記プレイヤーのインタラクションから取得された情報から、またはそれらの２つ以上の組み合わせから検証される、
請求項１２に記載の方法。
【請求項１５】
クラウドゲーミングシステム上で利用可能なビデオゲームのゲームプレイのために他のプレイヤーを集める方法であって、
第１プレイヤーからの前記ビデオゲームのゲームプレイのリクエストを検出し、前記リクエストは、前記ビデオゲームのゲームプレイに加わるためのスケジュールされた時間及び前記クラウドゲーミングシステム上のアプリケーションに現在オンラインでのインタラクションを与えている他のプレイヤーのアイデンティティを識別するものであり、
前記スケジュールされた時間またはその前に前記ビデオゲームのゲームプレイに加わる招待をする通知を前記他のプレイヤーに送信し、
前記スケジュールされた時間に前記ビデオゲームのゲームプレイのための前記招待を受け付けた前記他の特定のプレイヤーを識別するように、１人以上の前記他のプレイヤーから受信された前記通知への応答を評価し、
前記ビデオゲームの現在のゲーム状態まで前記ビデオゲームを事前ロードし、前記事前ロードは、前記スケジュールされた時間の前にゲームプレイが可能となるように、前記スケジュールされた時間の前に定義された時間ウインドウ内で実行され、前記スケジュールされた時間またはその前に前記クラウドゲーミングシステムにアクセスすると、前記第１プレイヤー及び前記他の特定のプレイヤーが前記現在のゲーム状態から前記ビデオゲームのゲームプレイを即時に始めることを可能にするものであり、
前記ビデオゲームは、マルチプレイヤービデオゲームであり、前記送信、評価、及び事前ロードの動作は、第１プレイヤーからの追加の入力を必要とすることなく、前記クラウドゲーミングシステムにおける１つ以上のサーバのプロセッサによって実行される、
方法。
【請求項１６】
プレイヤーに対して前記ゲームの事前ロードでは、
前記プレイヤーの現在の地理的位置を判定し、
ゲームプレイのために前記ビデオゲームをインスタンス化するための前記プレイヤーの前記地理的位置に近接した前記クラウドゲーミングシステムにおける１つ以上のデータセンタを識別し、
前記プレイヤーの前記地理的位置に対して識別された前記１つ以上のデータセンタのうちの特定の１つにおける１つ以上のサーバ上で前記ビデオゲームをインスタンス化し、前記インスタンス化することによって、前記ビデオゲームのゲームコードが、前記特定のデータセンタにおける１つ以上のサーバ上で実行され、前記プレイヤーのゲームデータが、前記ビデオゲームの現在のゲーム状態から判定される前記プレイヤーのゲーム状態によって定義されたポイントまでロードされ、前記プレイヤーは、前記第１プレイヤーまたは前記招待を受け付けた前記他の特定のプレイヤーのうちのいずれか１人である、
請求項１５に記載の方法。
【請求項１７】
前記プレイヤー及び前記他の特定のプレイヤーの各々に対する前記ビデオゲームの前記インスタンス化は、前記第１プレイヤー及び前記他の特定のプレイヤーが、前記現在のゲーム状態によって定義された前記ポイントから、前記スケジュールされた時間に前記ビデオゲームのゲームプレイを始めることを可能にするように同期される、
請求項１６に記載の方法。
【請求項１８】
前記プレイヤーについての前記地理的位置の判定では、
前記プレイヤーのユーザプロファイル内の地理的位置インジケータをクエリし、
前記プレイヤーのクライアントデバイス内で利用可能なグローバルポジショニングシステムによって生成された信号から、または前記クライアントデバイス上で実行しているアプリケーションとの前記プレイヤーのインタラクションから、または前記クラウドゲーミングシステム上での前記アプリケーションとの前記プレイヤーの前記オンラインでのインタラクションから情報を取得し、前記情報は、前記スケジュールされた時間に対して定義された前記時間ウインドウにおいて取得され、前記プレイヤーの現在の地理的位置を検証するために使用されるものであり、
前記プレイヤーの前記ユーザプロファイルから取得された前記地理的位置が前記現在の地理的位置に一致することを検証し、
前記現在の地理的位置が前記プレイヤーの前記ユーザプロファイルにおいて定義された前記地理的位置とは異なるとき、前記ビデオゲームを事前ロードするための前記プレイヤーについての前記現在の地理的位置を使用し、前記プレイヤーの前記ユーザプロファイルにおける前記現在の地理的位置を更新する、
請求項１６に記載の方法。
【請求項１９】
前記プレイヤーの前記オンラインでのインタラクションには、ウェブブラウザを通じて提供されるインタラクションまたはソーシャルメディアアプリケーションに提供されるインタラクションが含まれる、
請求項１６に記載の方法。
【請求項２０】
クラウドゲーミングシステム上で利用可能なビデオゲームのゲームプレイ方法であって、
オーガナイザからの前記ビデオゲームのゲームプレイのリクエストを検出し、前記リクエストは、ゲームプレイのためのスケジュールされた時間及び前記ビデオゲームのゲームプレイに加わるように招待されたプレイヤーのアイデンティティを識別するものであり、
前記スケジュールされた時間またはその前に前記ビデオゲームのゲームプレイに加わるための招待をする通知を前記プレイヤーの各々に送信し、
前記スケジュールされた時間における前記ビデオゲームのゲームプレイのための前記招待を受け付けた他の特定のプレイヤーを識別するように、前記プレイヤーのうちの１人以上から受信された前記通知への応答を評価し、
ゲームプレイのための前記招待を受け付けた前記特定のプレイヤーの各々に対し、前記ビデオゲームのゲームプレイが始まるポイントまで前記ビデオゲームを事前ロードし、前記事前ロードは、前記スケジュールされた時間の前に前記ビデオゲームがゲームプレイで可能となるように前記スケジュールされた時間の前に定義された時間ウインドウ内で実行され、前記事前ロードは、前記スケジュールされた時間またはその前に前記クラウドゲーミングシステムにアクセスすると、前記特定のプレイヤーの各々が前記ポイントから前記ビデオゲームのゲームプレイを即時に開始することを可能とするよう同期され、
前記オーガナイザは、前記ビデオゲームのゲームプレイをスケジュールするが、前記スケジュールされた時間に前記ビデオゲームのゲームプレイに参加せず、
前記ビデオゲームは、マルチプレイヤービデオゲームであり、前記クラウドゲーミングシステムの１つ以上のプロセッサによって実行される、
方法。
【請求項２１】
前記プレイヤーの各々は、それぞれの前記プレイヤーと関連付けられたユーザ属性、ゲームプレイ信用情報に基づいて識別され、前記ゲームプレイ信用情報は、前記ビデオゲームのゲームプレイにおける前記それぞれのプレイヤーの関与を識別する、
請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、クラウドシステム上で実行するインタラクティブアプリケーション、特に、クラウドゲーミングシステム上で実行するビデオゲームまたはゲーミングアプリケーションに関連する。より具体的には、本開示は、プレイヤーのグループがグループ内のプレイヤーからのリクエストに基づいて、ビデオゲームをプレイするためのスケジュールされた時間にオンラインで集合することを可能にする方法及びシステムを説明する。
【背景技術】
【０００２】
関連技術の説明
ビデオゲーム技術の発展に伴ってビデオゲーミングがますます人気になっている。また、高性能グラフィックプロセッサなどのクラウドベースの処理における発展に伴って、ユーザは、望ましく且つ最適なインタラクティブな経験あるいはインタラクティブ経験（Interactive Experience:IE）が提示される。例えば、クラウドベースのシステムは、ビデオゲームなどのインタラクティブアプリケーションを実行するための無制限の処理能力及びシステムリソース、並びにユーザに利用可能なレガシービデオゲーム及び新たなビデオゲームの圧倒的な広がりを提供し、ユーザが自分のデバイスをアップグレードする必要なく、ビデオゲームにアクセスし、ビデオゲームをプレイすることを可能にする。それらのクラウドベースのシステムは、リモートクライアントへのコンテンツのストリーミングを可能にし、分散されることがあるほとんどの処理がサーバ上で行われる。したがって、ユーザが複雑なハードウェアの制約なしにより多くのビデオゲームタイトルにアクセスすることがより容易であることに気付き、ゲームサプライヤーが集中ロケーションからゲームコードを管理することがより容易であることに気付いたことにより、クラウドベースのゲーミングがますます人気になっている。
【０００３】
ユーザは、ゲームプレイのためにビデオゲームを選択することがあり、選択されたビデオゲームは、リモートサーバ上で実行され、ゲームプレイと関連付けられた情報は、１つまたは複数のデバイスを通じてユーザに提示される。同様に、ユーザは、ゲームプレイのインタラクションを提供する１つのまたは複数のデバイスを選択することがあり、そのようなインタラクションは、選択されたビデオゲームのゲームプレイを進め、またはゲームプレイの間のユーザ経験を高めるためにリモートサーバによって処理される。
【０００４】
あるビデオゲームは、単一のプレイヤーによってプレイされるように構成され、他のビデオゲームは、複数のプレイヤーによってプレイされるように構成されている。マルチプレイヤーゲームでは、ユーザの友達（例えば、ソーシャルコンタクトまたはゲームプレイコンタクト）は、ビデオゲームのゲームプレイの間に関連する複数のデバイスのうち１つを使用して情報を参照し、インタラクションあるいはインタラクションを提供することによって、ユーザと共にゲームプレイに参加することができる。
【０００５】
本開示の実施形態は、このような状況においてなされたものである。
【発明の概要】
【０００６】
本発明の実施形態は、プレイヤーがいずれかの地理的位置から、ゲームのゲームプレイを始めることを可能にするために、クラウドホスティングシステムによってホストされたゲームへの即時アクセスを提供するために使用される方法及びシステムを開示する。クラウドホスティングシステムは、クラウドホスティングシステムに利用可能なリソースを使用して、ユーザインタラクション（例えば、ビデオゲームアプリケーション及び他のインタラクティブアプリケーション）のための複数のオンライン、インタラクティブ（あるいはインタラクティブ）アプリケーションをホストするように構成されている。クラウドホスティングシステムがゲームアプリケーションをホストする例では、クラウドホスティングシステムは、本明細書で「クラウドゲーミングシステム」とも称される。クラウドゲーミングシステムによってホストされたビデオゲーム（または、単純に「ゲーム」）は、シングルプレイヤーゲーム及びマルチプレイヤーゲームを含んでもよい。
【０００７】
概略的には、ユーザは、クラウドゲーミングシステムにアクセスし、１人以上のプレイヤーとのゲームをプレイするリクエストを開始する。リクエストは、ユーザがゲームをプレイすることを望むスケジュールされた時間を含み、ゲームプレイに加わりたいプレイヤーを識別する。スケジュールされた時間は、将来のある時点の時間であり、リクエストが開始された直後であってもよく、リクエストが開始された後の数分であってもよく、または将来の他の時間もしくは日であってもよい。クラウドゲーミングシステムは、リクエストにおいて識別されたプレイヤーに、ユーザがスケジュールされた時間にビデオゲームをプレイすることを望むことをプレイヤーに知らせる通知を送信することによって、リクエストを処理する。プレイヤーから受信された応答は、どのプレイヤーがスケジュールされた時間にユーザとゲームをプレイすることに関心があるかを判定するように検査される。１人以上のプレイヤーがスケジュールされた時間にゲームを好意的にプレイすることに応答するかに応じて、クラウドゲーミングシステムは、スケジュールされた時間にゲームをゲームプレイのために利用可能とするように、ゲームを予め事前ロードする。リクエストを処理することの一部として、クラウドゲーミングシステムは、ユーザ、及びユーザとゲームをプレイすることに合意した各プレイヤーの現在の地理的位置を判定する。クラウドゲーミングシステムは次いで、プレイヤー及びユーザの各々についての地理的位置（複数可）に近接したデータセンタ（複数可）を識別するように、レイテンシ及び他の品質関連テストを実行する。クラウドゲーミングシステムは、識別されたデータセンタ（複数可）に、スケジュールされた時間にゲームをゲームプレイのために利用可能にする信号を送信する。地理的位置（複数可）内のデータセンタ（複数可）におけるサーバは、予めビデオゲームのゲームコードをロードすることによって信号を処理し、ゲームプレイが開始されるポイントまでゲームプレイを更新し、スケジュールされた時間にユーザ及びプレイヤーがゲームにアクセスし、ゲームプレイを始めることを可能にする。
【０００８】
ゲームプレイの間にユーザ及びプレイヤーによって提供されるインタラクションは、異なるデータセンタにおけるゲームの現在のゲーム状態を更新するために使用される。ゲームに関連するインタラクションも、それぞれのデータセンタ（複数可）においてゲームデータとして維持される。ゲームの現在のゲーム状態は、現在のゲームレベル、ゲームの勝利、トロフィ、ゲームポイント、ゲーム通貨、武器、景品、賞、褒賞、ポイントスコア、ゲームライブなどを含む各々のプレイヤー及びユーザについてのゲームの現在のステータス、ゲームカスタマイズ、利用可能なゲームオプション、ゲームメトリック、ゲームクリップ、ゲームプレイから作成されるミニゲーム、他のプレイヤーとの通信履歴、ゲームレコーディング、及びいずれかの他のゲーム関連またはプレイヤー関連属性を含む。ゲームの現在のゲーム状態は、クラウドゲーミングシステムがいずれかの後続のゲームプレイのためにユーザ及びプレイヤーに対してゲームのためのゲームプレイを再作成することを可能にする。
【０００９】
クラウドゲーミングシステムにおいてゲームを事前ロードし、ユーザによって選択されたスケジュールされた時間の直前にゲームをゲームプレイのために準備させることは、ユーザ及びプレイヤーが、いずれのセットアップルーチンも通る必要なく即時にゲームのゲームプレイにアクセスし、ゲームのゲームプレイを開始することを可能にする。スケジュールされた時間の前のそのような時機を得たゲームの事前ロードは、クラウドゲーミングシステムが、必要とされるときにビデオゲームのためのシステム及びネットワークリソースを提供し、必要とされないときにシステムリソースを不必要にロックすることを回避することを保証する。本明細書で説明される実施形態は、ユーザ及びプレイヤーがゲームプレイのためにゲームにアクセスするとき、ゲームのゲームプレイのストリームに直接「ドロップイン」されるように、ユーザがいずれかのスケジュールされた時間にゲームプレイのためにプレイヤーのグループを呼び集めることを可能にする。ドロップインとは、本出願において使用されるように、ユーザ及びプレイヤーが、ゲームが開始されるポイントからのゲームのゲームプレイへのアクセスを有し、ユーザ及びプレイヤーがゲームから離れなかったように見せることを指す。プレイヤーは、本明細書で言及されるように、友達、またはソーシャルコンタクト、またはゲーム関連コンタクト、またはユーザに関連しもしくは関連しないいずれかの他のユーザを含むことに留意されたい。ゲームプレイのためにプレイヤーを呼び集めることは、「フラッシュモブ」の概念と類似し、ユーザは、イベントについての活動を実行するために人々を呼び集める。
【００１０】
一実施形態では、方法が提供される。方法は、ビデオゲームのゲームプレイのリクエストを受信することを含む。リクエストは、第１プレイヤーのクライアントデバイスから発し、ゲームプレイについてのスケジュールされた時間、及びビデオゲームのゲームプレイに加わるように招待される他のプレイヤーのアイデンティティを識別する。リクエストに応答して、スケジュールされた時間にビデオゲームのゲームプレイに加わるように他のプレイヤーにリクエストする通知が他のプレイヤーに送信される。他のプレイヤーからの通知に対して受信された応答は、スケジュールされた時間にビデオゲームのゲームプレイについて合意した他の特定のプレイヤーを識別するように評価される。評価に基づいて、ビデオゲームは、第１プレイヤー、及びゲームプレイに合意した他の特定のプレイヤーに対し、ビデオゲームのゲームプレイが始まるポイントまで事前ロードされる。ビデオゲームの事前ロードは予め実行され、スケジュールされた時間にビデオゲームにアクセスすることによって、第１プレイヤー、及び他の特定のプレイヤーの各々がビデオゲームのゲームプレイを始めることを可能にする。ビデオゲームは、マルチプレイヤービデオゲームである。
【００１１】
別の実施形態では、クラウドゲーミングシステム上で利用可能なビデオゲームのゲームプレイのための方法が提供される。方法は、第１プレイヤーから受信されたビデオゲームのゲームプレイのリクエストを検出することを含む。リクエストは、ゲームプレイについてのスケジュールされた時間、及びビデオゲームのゲームプレイに加わるように招待される他のプレイヤーのアイデンティティを識別する。他のプレイヤーは、他のアプリケーションと現在オンラインでインタラクションを行っているユーザであり、第１プレイヤーのソーシャルネットワークから識別される。リクエストに応答して、スケジュールされた時間にビデオゲームのゲームプレイに加わるように他のプレイヤーにオンラインでリクエストしている他のプレイヤーに通知が送信される。通知が送信された１人以上の他のプレイヤーから受信された応答は、スケジュールされた時間にビデオゲームのゲームプレイについて合意した他の特定のプレイヤーを識別するように評価される。ビデオゲームは、第１プレイヤー、及びスケジュールされた時間にゲームプレイについて合意した他の特定のプレイヤーに対して事前ロードされ、事前ロードは、ビデオゲームのゲームプレイが始まるポイントまで行われる。ビデオゲームの事前ロードは予め実行され、スケジュールされた時間にビデオゲームにアクセスすることによって、第１プレイヤー、及び他の特定のプレイヤーの各々がビデオゲームのゲームプレイを即時に始めることを可能にする。ビデオゲームは、マルチプレイヤービデオゲームである。
【００１２】
更なる別の実施形態では、クラウドゲーミングシステム上で利用可能なビデオゲームのゲームプレイのための方法が開示される。方法は、第１プレイヤーからのビデオゲームのゲームプレイのリクエストを検出することを含む。リクエストは、他のプレイヤーがゲームプレイに現在関与しているビデオゲームのゲームプレイに加わるためのスケジュールされた時間を識別する。スケジュールされた時間にビデオゲームのゲームプレイに加わるようにリクエストする通知が、ビデオゲームを現在プレイしている他のプレイヤーに送信される。１人以上の他のプレイヤーから受信された通知への応答は、第１プレイヤーがスケジュールされた時間にビデオゲームのゲームプレイに加わることを可能にするように合意した他の特定のプレイヤーを識別するように評価される。ビデオゲームは、他の特定のプレイヤーがビデオゲームのゲームプレイを続けている間、第１プレイヤー対して、現在のゲーム状態まで事前ロードされる。事前ロードは、第１プレイヤーがスケジュールされた時間に、現在のゲーム状態からビデオゲームのゲームプレイに即時に加わることを可能にするように時間内に実行される。
【００１３】
別の実施形態では、クラウドゲーミングシステムが開示される。クラウドゲーミングシステムは、クラウドゲーミングシステムによってホストされた複数のゲームを実行し、スケジュールされた時間にゲームのゲームプレイのリクエストにサービスするように構成されたアプリケーションサーバを含み、リクエストは、第１プレイヤーのクライアントデバイスから発する。アプリケーションサーバは、ゲームプレイスケジューラを含む。ゲームプレイスケジューラは、リクエストを受信し、リクエストを分析して、ゲームプレイがリクエストされるゲームのゲーム識別子、及びゲームプレイのために招待するプレイヤーのアイデンティティを識別するように構成されている。ゲームプレイスケジューラ内のデータセンタマネージャは、各々のプレイヤー（リクエストを開始した第１プレイヤーを含む）についての地理的位置を識別することによってリクエストを処理し、プレイヤーの地理的位置に近接したデータセンタを識別し、識別されたデータセンタ内の１つ以上のサーバ上でゲームをインスタンス化するリクエストを有する、識別されたデータセンタへの信号を生成するように構成されている。ゲームプレイスケジューラ内のゲームデータシンクロナイザは、各々のプレイヤーに対し、識別されたデータセンタ内の１つ以上のサーバへのゲームのゲームデータの事前ロードを同期し、前のゲームプレイが放棄されたポイントからゲームをゲームプレイのために利用可能にするように構成されている。ゲームデータシンクロナイザは、ゲームを事前ロードするための時間ウインドウを識別するようにスケジュールウインドウとインタラクションを行ってもよく、アップロードされる必要がある各々のプレイヤーのゲームデータを識別するようにａｐｐスケジューラとインタラクションを行ってもよい。ゲームプレイスケジューラは、クラウドゲーミングシステムに接続する、スケジュールされた時間におけるゲームプレイの招待を受け付けた各々のプレイヤーを検出し、ゲームが中断されたポイントからゲームプレイのためのゲームへのアクセスを提供するように更に構成されている。ゲームプレイスケジューラは、それぞれのクライアントデバイスとのゲームプレイの間にゲームデータを交換し、サーバ上で、及びそれぞれのクライアントデバイスにおいてゲームのゲーム状態を更新するように構成されている。
【００１４】
本発明の他の態様及び利点は、本発明の原理を例として例示する、添付図面を併用して以下の詳細な説明から当業者に対して明らかになる。
【００１５】
本発明は、その更なる利点と共に、添付図面を併用して以下の説明を参照することによって最良に理解されることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に従った、第２の地理的位置におけるデータセンタにユーザの保存データを移動させるために、ユーザの地理的位置における変化を検出するために使用される実施例のシステムの簡易ブロック図を例示する。
【図２】本発明の一実施形態に従った、スケジュールされた時間における、第１プレイヤー、及び第１プレイヤーとのビデオゲームのゲームプレイについて合意した他の特定のプレイヤーのユーザプロファイルデータを提供する、アプリケーションホスティングシステム内の実施例のユーザアカウントデータ処理エンジンを例示する。
【図３】本発明の実施形態に従った、スケジュールされた時間にビデオゲームのゲーム関連データを移動させるための、第１プレイヤー及び他の特定のプレイヤーの地理的位置に基づいて１つ以上のデータセンタを識別する、アプリケーションホスティングシステム内の実施例のデータセンタマネージャモジュールを例示する。
【図４】本発明の実施形態に従った、事前ロードされる必要がある、第１プレイヤー及び他の特定のプレイヤー各々のゲームデータを識別する、クラウドゲーミングシステム内の実施例のゲームデータマネージャモジュール（例えば、ゲーム実行エンジン）を例示する。
【図５】本発明の実施形態に従った、スケジュールされた時間にビデオゲームのゲームデータを事前ロードするために使用される簡易データフローチャートを例示する。
【図６ａ】本発明の実施形態に従った、スケジュールされた時間にゲームプレイのためにスケジュールされたクラウドゲーミングシステムにビデオゲームのゲームデータを事前ロードするために使用される方法の処理動作を例示する。
【図６ｂ】本発明の他の実施形態に従った、スケジュールされた時間にゲームプレイのためにスケジュールされたクラウドゲーミングシステムにビデオゲームのゲームデータを事前ロードするために使用される方法の処理動作を例示する。
【図７】本発明の一実施形態に従った、ネットワークを介して地理的に分散及び接続されたユーザに情報のコンテンツ及びサービスを配信するための例示的な情報サービスプロバイダアーキテクチャを例示する。
【発明を実施するための形態】
【００１７】
以下の説明では、本発明の完全な理解を提供するために、多くの特定の詳細が示される。しかしながら、本発明は、それらの具体的な詳細のいくつかについて、あるいは具体的な詳細の全てについて、それらを用いることなく実施し得ることが当業者にとって明らかである。他の例では、本発明を不明瞭にしないために、周知の処理工程を詳細には説明していない。
【００１８】
本発明の様々な実施形態に従って、ユーザは、ユーザアカウントを通じてクラウドゲーミングシステムにアクセスし、ゲームを選択する。リクエストは、ユーザがゲームプレイのためにスケジュールする時間、及びユーザがゲームのゲームプレイのために招待することを望むプレイヤーのアイデンティティを含む。クラウドゲーミングシステムは、ユーザのクライアントデバイスから発するリクエストを検出し、それに応答して、ユーザによってスケジュールされた時間にゲームのゲームプレイに加わるように、他のプレイヤーに通知を送信する。通知への他のプレイヤーの応答は、他のプレイヤーのうち、どの１人がスケジュールされた時間の間にゲームのゲームプレイへの関心を表したかを判定するように評価される。評価に基づいて、クラウドゲーミングシステムは、クラウドゲーミングシステムと関連付けられた特定のデータセンタにゲームを事前ロードし、ユーザ及び他のプレイヤーがクラウドゲーミングシステムにおいてゲームにアクセスするとゲームをゲームプレイすることを可能にするように、クラウドゲーミングシステムと関連付けられた特定のデータセンタにゲームを事前ロードする。ゲームのロードは予め行われ、ユーザ及び他のプレイヤーがゲームにアクセスし、ゲームをプレイすることを開始することを可能にする。
【００１９】
スケジュールされた時間にゲームのゲームプレイのためにちょうど良いタイミングでゲームの事前ロードを実行することは、クラウドゲーミングシステムが、ネットワーク及びシステムリソースを必要とされる期間の間に賢明に割り当て、ユーザ及び他のプレイヤーがゲームをプレイするためにクラウドゲーミングシステムにアクセスしようとしていない残りの期間の間にリソースを不必要に拘束しないことを可能にする。更に、スケジュールされた時間にゲームをゲームプレイのために準備させることで、ユーザ及び他のプレイヤーが、セットアップルーチンを行うことを必要とせず、ユーザ及び他のプレイヤーがゲームストリームに直接「ドロップイン」することを可能にする。本明細書で説明される様々な実施形態の他の利点が当業者にとって明らかになる。
【００２０】
クラウドゲーミングシステムは、ユーザ及び他のプレイヤーの現在の地理的位置を判定するように、ユーザのユーザプロファイル及び他のプレイヤーのユーザプロファイルをクエリしてもよく、またはユーザ及び他のプレイヤーのクライアントデバイスから生成された信号を使用してもよい。ユーザ及び他のプレイヤーの現在の地理的位置に近接した１つ以上のデータセンタが識別される。データセンタ内のサーバは、サーバがゲームのゲームプレイのために必要とされる十分な処理及び通信リソースを有するかどうかを判定するように評価される。例えば、データセンタ内のサーバは、利用可能な通信プロトコル、利用可能なシステムリソース、接続速度（すなわち、ストリーミング速度）、などに基づいて評価されてもよく、スケジュールされた時間の直前にゲームコード及びゲームデータをアップロードするためのサーバの特定の１つが識別されてもよい。ゲームデータの時機を得たアップロードは、ユーザ、及びゲームをプレイすることに合意した他のプレイヤーと関連付けられたクライアントデバイスが、クラウドゲーミングシステムに接続し、スケジュールされた時間にゲームのゲームプレイを即時に始めることを可能にする。
【００２１】
ゲームプレイの間、識別されたデータセンタにおけるシステムリソース、及び対応するクライアントデバイスと識別されたデータセンタのうちの特定の１つのサーバとの間の接続の接続属性は、ゲームのゲームプレイのための接続要件を満たすことを保証するように監視される。十分なシステムリソースがゲームのゲームプレイの間に利用可能であることを保証するように、周期的なサービス品質テストが行われる。ユーザ及び他のプレイヤーは、データセンタの単一のサーバからゲームにアクセスしていることがある。代わりに、ユーザ及び他のプレイヤーは、単一のデータセンタまたは複数のデータセンタ内の複数のサーバからゲームにアクセスしていることがある。結果として、識別されたデータセンタ（複数可）内のサーバ（複数可）は、ユーザ及び他のプレイヤーが満足するゲームプレイ経験を有することを可能にするように、サーバ（複数可）がリソースを提供できることを保証するように検証されてもよい。
【００２２】
ゲームについてのゲームデータは、ゲーム関連データ及びユーザ関連データを含んでもよい。ゲーム関連データ及び／またはユーザ関連データは、ゲームコード、及びユーザがゲームのゲームプレイを再開することに関心があるポイント（例えば、ゲームのために記録された現在のゲーム状態）までゲームを再作成するのに十分であるゲーム状態情報を含んでもよい。ゲームの再作成は、ユーザ、及びゲームプレイリクエストに応答した他のプレイヤーが、ポイントから前方にゲームプレイを再開し、ゲームのゲームプレイに全体的に没頭することを可能にする。
【００２３】
システムリソース及び接続属性を監視することは、ユーザまたは他のプレイヤーのそれぞれのクライアントデバイスとプレイヤー（すなわち、ユーザまたは他のプレイヤー）に対してゲームデータを提供するために使用されるデータセンタの対応するサーバとの間で確立された通信接続の接続速度、使用される通信プロトコル、サーバ及びデータセンタにおける通信及びシステムリソースの可用性、スケジュールされた時間における予想される通信及びシステムリソースリクエストなどのうちの１つ以上を監視することを含んでもよい。通信接続の監視は、割り当ての前または後にそれぞれのクライアントデバイスと対応するデータセンタとの間でストリーミングデータパケットを交換し、交換を評価することによって実行されてもよい。スケジュールされた時間及びゲームプレイの間のそのような監視は、サービス品質がゲームプレイの間に悪化しないことを保証することである。リソースまたは接続属性が予期される接続要件に満たない場合、次いで、ユーザに対して最適なゲーム体験を提供するように、割り振られたサーバ内で追加のリソースが割り当てられてもよく、またはデータセンタ内のサーバが別のサーバに切り替えられてもよく、または同じ地理的位置内でデータセンタが別のデータセンタに切り替えられてもよい。
【００２４】
ユーザ及び他のプレイヤーが、最小のレイテンシからレイテンシなしで現在のゲームデータが提示されるように、１つ以上のデータセンタ内の１つ以上のサーバにおけるゲームコードの実行及びゲームデータのロードが同期される。ゲームプレイの間に生成されたデータは、ゲームのゲーム状態に影響を与えるように使用され、ゲームデータデータストアにゲームデータとして記憶される。ゲームデータは、割り振られたデータセンタ（複数可）のプロファイル並びにユーザ及び他のプレイヤーのユーザプロファイル内のユーザメトリックを更新するために使用され、必要とされるときにゲームを再作成する十分な詳細を含む。それぞれのデータセンタ（複数可）におけるリソースの現在の状態を判定するために、データセンタプロファイルが使用されてもよい。例えば、データセンタプロファイルは、利用可能である接続属性、ユーザからのリクエストがサービスされたときに使用された接続属性、利用可能なシステムリソース、及びゲームプレイのためのリクエストのサービスの間に消費されたシステムリソースを識別する。識別されたデータセンタが十分なリソースを有すること、及びデータセンタと対応するクライアントデバイス（複数可）との間の接続の接続属性がスケジュールされた時間の間にゲームのグラフィックをストリーミングするための接続の要件を満たし、ユーザ及び他のプレイヤーのクライアントデバイスへのゲームプレイデータの伝送の間のいずれかのレイテンシを回避することを可能にすることを保証するために、データセンタプロファイルが使用される。
【００２５】
クラウドゲーミングシステムは、多数の人々が同時に同一のコンテンツをプレイするようにオンラインで集める方式を提供する。クラウドゲーミングシステムは、オーガナイザ（すなわち、ユーザまたは第１プレイヤー）がゲームのゲームプレイイベントのための時間をスケジュールすることを可能にする。それに応答して、クラウドゲーミングシステムは、オーガナイザによって識別されたプレイヤーに通知を送信する。オーガナイザ及びプレイヤーが、クラウドゲーミングシステムにアクセスすると即時にゲームに接続することができるように、ゲームを事前ロードするために、１つ以上のサーバが使用される。事前ロードは、リクエストをオプトインするプレイヤーがゲームプレイのストリームに即時にドロップインすることを可能にする。クラウドゲーミングシステムは、ユーザ及びプレイヤーを集めて、スケジュールされた時間にイベントを実行するように手を携えて作用するゲームストリーミングサービス及びプッシュ通知サービスの組み合わせを提供する。
【００２６】
本明細書で説明される様々な実施形態は、ビデオゲームのユーザ及びプレイヤーがゲームに直接「ドロップイン」し、ゲームプレイを始めることが可能にできるように、クラウドゲーミングシステムが、ユーザによってスケジュールされた時間にシステム及び通信リソースをスマートに割り当てることを可能にする。プレイヤー及びユーザが即時に接続することができ、ゲームプレイを始めることができるように、ユーザは、ゲームプレイイベントなどのイベントのための時間をスケジュールまたはプログラムし、サーバは、ゲームを事前ロードするために利用可能なリソースを使用する。ユーザは、周期的にゲームプレイイベントをスケジュールしてもよく（例えば、１日に１回、１週間に１回など）、またはランダムにスケジュールしてもよい。様々な実施形態は、人々のグループがゲームアプリケーションのゲームプレイなどのイベントを実行するためのスケジュールされた時間にオンラインで集合することを可能にし、クラウドゲーミングシステムは、スケジュールされた時間にイベントを実行するために適時にリソースを割り当てる。本発明の全体的な理解により、ここでは、様々な図面を参照して特定の実施形態が説明される。
【００２７】
図１は、スケジュールされた時間に、ゲームアプリケーションのゲームプレイなどのアプリケーションとインタラクション（あるいは対話）を行うためのリクエストを検出するために使用されるシステムの簡易ブロック図を例示する。リクエストは、第１プレイヤーのクライアントデバイス１００から受信される。第１プレイヤーのクライアントデバイス１００は、例えば、地理的位置１と関連付けられてもよい。クライアントデバイス１００は、インターネットなどのネットワーク２００を通じて、クラウドゲーミングシステム３００上でアプリケーションサーバ３０１などのサーバに通信可能に接続される。サーバは、複数のサーバ、ゲームコンソールなどを含むデータセンタの一部であってもよい。
【００２８】
クライアントデバイス１００は、処理モジュール（すなわち、プロセッサ）１１０、メモリ、並びにサーバ側アプリケーションと通信するようにネットワーク及び適切なアプリケーションプログラミングインタフェース（ＡＰＩ）に接続するためのネットワーク接続を含むいずれかのコンピューティングデバイスである。プロセッサは、クライアント側アプリケーションを実行できる。クライアント側アプリケーションは、スタンドアロンで稼働してもよく、またはネットワーク接続を通じてネットワーク２００に接続することによってサーバ側アプリケーションとインタラクションを行ってもよく、サーバ側アプリケーションと通信し、もしくはサーバ側アプリケーションにアクセスするためにＡＰＩを使用してもよい。ネットワーク接続は、有線または無線接続とすることができる。クライアントデバイス１００は、シンクライアント、汎用コンピュータ、専用コンピュータ、ゲームコンソール、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、モバイルコンピューティングデバイス、ポータブルゲーミングデバイス、携帯電話、スマートフォン、セットトップボックス、ストリーミングメディアインタフェース／デバイス、スマートテレビもしくはネットワーク化されたディスプレイ、またはローカルに利用可能でありもしくはクラウドゲーミングシステムのリモートサーバ上で利用可能なアプリケーションにアクセスするために使用することができるいずれかの他のコンピューティングデバイスであってもよい。使用されるネットワーク接続及び通信プロトコルは、クライアントデバイス１００がリモートサーバと通信して、クラウドゲーミングシステム３００の一部であるアプリケーションサーバ３０１などのリモートサーバから、マルチメディアコンテンツのビデオフレームのストリームを受信することを含む、コンテンツを受信することを可能にする。リモートサーバによってストリーミングされるビデオフレームは、エンコーダを使用して圧縮を受けている。クライアントデバイス１００は、リモートサーバによって伝送されたゲームプレイコンテンツを表すビデオフレームのストリームを解凍し、クライアントデバイス１００のディスプレイスクリーン上で画像をレンダリングするデコーダを含んでもよい。レンダリングされた画像は、ゲームの現在のゲーム状態を識別する。
【００２９】
ゲームの現在のゲーム状態は、ゲームサーバまたは他のアプリケーションサーバからの音声／ビデオデータを受信、復号、レンダリングし、ユーザ入力をゲームサーバまたは他のアプリケーションサーバに再度通信するように主に機能するクライアントデバイス１００により、リモートサーバ上で実質的に維持及び実行される。クライアントデバイス１００は、ディスプレイデバイス上でレンダリングするためのビデオデータを提供するように、ディスプレイデバイスに接続されたスタンドアロンコンピューティングデバイスであってもよい。他の実施形態では、ディスプレイデバイスは、クライアントデバイス１００に統合されることができる。一実施形態では、クライアントデバイスは、ディスプレイデバイスのネットワーク接続性を利用したアプリケーションすなわち「ａｐｐ」についてのプラットフォームオペレーティングシステムを提供するネットワーク化されたディスプレイデバイスである、ディスプレイデバイスである。そのような実施形態では、クライアントデバイス１００は、ディスプレイデバイスのオペレーティングシステムによって提供されるプラットフォーム上で実行されるアプリケーションによって定義されることができる。
【００３０】
本出願において使用されるアプリケーションサーバ３０１は、ローカルサーバ、仮想コンピュータ、クラウドゲーミングサーバ、デジタルメディアサーバ、ゲーム開発者／ゲームスポンサのストアフロントを提供するために使用されるサーバ、ウェブサーバ、端末サーバ、コンソールサーバ、リモートサーバ、または使用の間にユーザがアクセス及びインタラクションを行うことができるインタラクティブアプリケーションを実行するための処理リソースを提供することもしくは割り当てることを含む、１つ以上のインタラクティブアプリケーション（例えば、ゲームアプリケーション）をホストできるデータセンタ３０５において利用可能ないずれかの他のタイプもしくは形式のサーバコンピューティングデバイスである。アプリケーションサーバ３０１は、特定のタイプの通信プロトコルに従ったアプリケーションプログラミングインタフェース（ＡＰＩ）呼び出しを使用して、ビデオフレームにあるデータを圧縮し、圧縮されたビデオフレームをデータストリームにおいてクライアントデバイス１００に転送するエンコーダを含んでもよい。
【００３１】
例えば、データセンタ３０５内の、クラウドゲーミングサーバの形式にあるアプリケーションサーバ３０１は、ユーザアカウントに対して利用可能な様々なビデオゲームを実行し、ゲームプレイの間に提供されるユーザインタラクションに基づいてその時々で様々なビデオゲームのゲーム状態を定義し、ビデオデータ（画像データ、音声データ、触覚データなどを含む）を特定の地理的位置内でまたは複数の地理的位置にわたって分散された１つ以上のクライアントデバイス１００に送信する。所与の地理的位置（複数可）におけるクライアントデバイス１００は、ビデオゲーム（複数可）をプレイするユーザ（複数可）からの入力を受信及び処理し、処理された入力データをクラウドゲーミングサーバに伝送し、クラウドゲーミングサーバは、１つ以上のビデオゲームのゲーム状態に影響を与える追加の処理を実行する。クラウドベースのゲーミングは、ネットワーク２００を通じて全てのプレイヤーによってアクセス可能な１つ以上のリモートクラウドゲーミングサーバにおける実行のためのビデオゲームのインスタンスを提供することによって、異なる地理的位置に位置するプレイヤーに対してマルチプレイヤーゲーミングを促進する。この方式では、ビデオゲームの実行は、いずれの単一のプレイヤーのハードウェアまたはネットワーク接続性にも依存しないが、それは、その所与のプレイヤーについてのユーザ経験に影響を与えることがある。
【００３２】
本明細書で説明されるクラウドゲーミングアーキテクチャを使用して実行される動作は、データベースへの即時アクセス及びユーザのリモートに位置するクライアントデバイス１００への、ゲームプレイコンテンツなどのコンテンツの提示を可能にするために、複数のサーバ及び／または実行プラットフォームを必要とする技術的動作を形成する。クラウドゲーミングサーバはまた、様々な圧縮技術を利用することによって、ゲームデータをクライアントデバイス（複数可）に伝送する前にゲームデータに対して圧縮動作を実行する。圧縮技術は、標準的なエンコーダを使用してもよく、標準的なエンコーダは次いで、クライアントデバイス１００上の標準的なデコーダがクライアントデバイス１００上の画像、ビデオ、及び音声データにアクセス、復号、及びレンダリングすることを可能にして、ビデオゲームのゲームプレイを可能にする。ビデオゲームの実行の管理及び複数のクライアントデバイスへのゲームデータの分散は、いくつかのデータセンタ（３５０−１〜３０５−ｎ）、ダイレクションサーバ（direction server: DS）、サービス品質テスタまたはエンジン、より低レイテンシのデータセンタへのダイレクション及びリダイレクションなどを伴うことができる。それらの動作及びタスクは、ゲームをリモートに実行し、広い地形にわたって分散されたクライアントデバイス１００にデータを配信する間の、ストリーミング及び低レイテンシのために設計された専用サーバコンピュータを利用してもよい。
【００３３】
データセンタ３０５は、一実施形態では、複数のサーバ（例えば、ゲーミングサーバ）３０１、ゲームコンソール３０１ａ、ゲームコード（１０９）、アプリケーションコード（１１１）、ユーザ関連データ（３０４）、及びアプリケーション関連ゲームデータ（１０７）を記憶し、それらをすぐに利用可能にして複数のユーザからのリクエストの変化に対応することを可能にできる記憶システムを含む。ユーザ及びプレイヤーは、ユーザの前のゲームプレイ、別のユーザの現在もしくは前のゲームプレイを参照するために、またはゲームアプリケーションの結果に影響を与える入力を行うために、ゲームアプリケーションなどのインタラクティブ（対話型）アプリケーションにアクセスする人を指して本出願で交換可能に使用されることに留意されるべきである。データセンタはまた、様々なクライアントデバイスと複数のサーバとの間で通信接続を確立する、ルータ、スイッチなどの電気通信機器を含んでもよい。複数のサーバの各々は、クライアントデバイス１００における対応するクライアント側と、またはサードパーティソーシャルメディアもしくはコンテンツプロバイダと関連付けられたサーバ側ＡＰＩと通信するためのサーバ側ＡＰＩ（別個のまたは同様のいずれか）を備えてもよい。いくつかの実施形態では、データセンタ内のサーバは、ゲーミングアプリケーションなどを含む様々なタイプのアプリケーションを実行し、アプリケーションコンテンツをレンダリングのための対応するクライアントデバイス１００にストリーミングするように構成されてもよい。サーバは、様々な圧縮技術を使用して、サーバによって生成または提供されるいずれかのデータに対して圧縮の動作を実行し、通信及び／または伝送プロトコルのいずれか１つを使用して、圧縮されたデータをクライアントデバイスに転送するように構成されてもよい。
【００３４】
サーバは、典型的には特定の機能、ゲーム、またはアプリケーションを実行または稼働させるために使用される、端末サーバ、コンソールサーバ、仮想サーバなどを含んでもよい。サーバによって実行される機能、ゲーム、またはアプリケーションのいくつかの例は、データベース管理、ファイル管理、メールサービス、プリントサービス、音声サービス、ビデオサービス、ウェブサービス、ゲーム管理、アプリケーション管理、メディア管理、カタログサービス、通信管理、コンピューティングサービス、及びプロキシ管理などを含んでもよい。いくつかの実施形態では、サーバの列及び／またはストレージラックを含む各々のデータセンタと共に、ラックマウントサーバまたは記憶装置として複数のサーバ及び／または記憶装置が設けられてもよい。各々のサーバは、複数のアプリケーションを実行する能力を有してもよく、及び／または多種多様なサービスを提供してもよい。
【００３５】
スケジュールされた時間におけるビデオゲームのゲームプレイのリクエストは、クラウドゲーミングシステム３００などのホスティングシステムにおいてクライアントデバイス１００から受信される。ゲームプレイのリクエストは、ビデオゲームのゲーム識別子、及びゲームをプレイするために招待される１人以上のプレイヤーのアイデンティティを含む。アプリケーションサーバ３０１などのサーバは、リクエストを受信し、ユーザアカウントデータ処理エンジン３０２に、クライアントデバイス１００においてリクエストを開始したユーザを認証するようにユーザ関連情報を取得することに関与させる。ユーザアカウントデータ処理エンジン３０２は、ユーザアカウントデータベース３０４をクエリし、ユーザプロファイル及びユーザアカウント情報を受信するように構成されている。ユーザアカウントデータベース３０４は、クラウドゲーミングシステム３００の複数のユーザのユーザプロファイル及び他のユーザアカウント情報を記憶する。ユーザプロファイル及びユーザアカウント情報は、ユーザ及びユーザによって開始されたリクエストを認証するために使用される。リクエストの認証が成功すると、リクエストがサービスするためのゲームプレイスケジューラ３１１に転送される。
【００３６】
ユーザを認証することの一部として、アプリケーションサーバ３０１のユーザアカウントデータ処理エンジン３０２は、ユーザが保有する全てのゲーム及び／またはアプリケーション、自由に利用可能な全てのゲーム及び／またはアプリケーションを判定するようにユーザアカウントデータベース３０４をクエリし、リクエストにおいて識別されたゲームが、ユーザとのインタラクションを承認されたゲームのうちの１つであることを検証するためにこの情報を使用する。リクエストにおいて識別されたゲームが、ユーザとのインタラクションを承認されたゲームのうちの１つでない場合、ゲーミングサーバ（すなわち、アプリケーションサーバ３０１）におけるユーザアカウントデータ処理エンジン３０２は、エラーまたは警告メッセージを生成し、警告メッセージをレンダリングのためのクライアントデバイス１００に転送する。リクエストにおいて識別されたゲームが、ユーザがインタラクションを行うことを承認されたゲームのうちの１つである場合、ユーザアカウントデータ処理エンジン３０２は、リクエストをサービスするためにゲームプレイスケジューラ３１１にリクエストを転送する。
【００３７】
リクエスト認証の一部として、ユーザアカウントデータ処理エンジン３０２は、リクエストにおいて識別されたプレイヤーのユーザプロファイル及びユーザアカウント情報を取得するようにユーザアカウントデータベース３０４をクエリし、リクエストにおいて識別されたプレイヤーの各々がゲームにアクセスし、ゲームをプレイすることを承認されることを保証するためにこの情報を使用する。プレイヤーは、ユーザのソーシャルコンタクトであってもよく、ソーシャルネットワークもしくは他のコンタクトリストから識別されてもよく、またはビデオゲームもしくは他のビデオゲームのゲームプレイの間、もしくはクラウドゲーミングシステムによってホストされた他のアプリケーションとのインタラクションの間に開発されたコンタクトであってもよい。ユーザプロファイル及びユーザアカウントにおいて提供される情報は、例えば、コンタクト情報、各々のプレイヤーがアクセスすることができまたはアクセスを有するゲーム及びアプリケーションのリスト、ユーザ信用情報、ユーザスキル、ユーザの好み、ゲームまたはアプリケーションをセットアップするために使用されるログインルーチンなどを含む。ユーザプロファイルにおける情報に基づいて、リクエストにおいて識別されたプレイヤーのうちの１人以上がゲームをプレイするための承認を有していないと判定される場合がある。そのようなケースでは、リクエストに含まれる招待は、１回に１人以上のプレイヤーにゲームプレイのためのゲームへのアクセスを提供して、それらのプレイヤーがゲームを経験することを可能にするクラウドゲーミングシステムへの信号を含んでもよい。検証されると、ユーザアカウントデータ処理エンジン３０２は、プレイヤーの取り出されたユーザプロファイル及びユーザアカウント情報をゲームプレイスケジューラ３１１に転送する。
【００３８】
ゲームプレイスケジューラ３１１は、リクエストにおいて識別されたプレイヤーの各々に通知を送信するために、プレイヤーのコンタクト情報を使用する。ゲームプレイスケジューラ３１１内のａｐｐスケジューラ３５１ａは、リクエストにおいて識別されたプレイヤーの各々に通知を送信するために使用されてもよい。この通知は、一実施形態では、ゲームのゲームプレイのリクエストを開始するユーザの識別子、ゲームプレイのためのユーザによって指定されたスケジュールされた時間、ゲームのゲーム識別子、通知が送信されるプレイヤーの識別子、及びゲームプレイのために選択されたビデオゲームの他の付属情報を含んでもよい。いくつかの実施形態では、各々のプレイヤーへの通知はまた、ゲームのゲームプレイのためにユーザによって招待された他のプレイヤーの識別子を示してもよい。
【００３９】
通知に応答して、プレイヤーのうちの１人以上は、ゲームプレイの招待を受け付ける可能性がある。各々のプレイヤーから受信された応答は、プレイヤーのうちのどの１人がスケジュールされた時間にビデオゲームをプレイする招待を受け付けたか、及びどの１人が招待を拒否したかを判定するように、ａｐｐスケジューラ３５１ａによって評価される。応答は、スケジュールされた時間の間、ゲームプレイセッションに対してゲームをセットアップするためのクラウドゲーミングシステムについての認証を含んでもよく、または認証の役割を果たしてもよい。ａｐｐスケジューラ３５１ａは、一実施形態では、リクエストを開始した第１プレイヤーに招待を受け付けたプレイヤーの詳細を提供してもよい。
【００４０】
ａｐｐスケジューラ３５１ａは、ゲームプレイの招待を受け付けた各々のプレイヤーのユーザプロファイル情報を取得するように、ユーザアカウントデータ処理エンジン３０２とインタラクションを行ってもよい。各々のプレイヤーのユーザプロファイル情報は、プレイヤーの地理的位置を識別する地理的位置インジケータを含む。いくつかの実施形態では、プレイヤーの地理的位置は、例えば、招待に応答するようにプレイヤーによって使用されたクライアントデバイス１００内で利用可能なグローバルポジショニングシステム（ＧＰＳ）からの信号に対して検証されてもよい。代わりに、地理的位置インジケータに含まれるプレイヤーの地理的位置は、ウェブブラウジング活動、ソーシャルメディア活動、またはプレイヤーの現在の地理的位置を識別するために使用することができるプレイヤーのいずれかの他のオンライン活動など、プレイヤーから検出されるオンライン活動に対して検証されてもよい。一実施形態では、ゲームプレイスケジューラ３１１は、スケジュールウインドウ３５１ｂに、ゲームプレイのためにユーザによって指定されたスケジュールされた時間の前の時間ウインドウを識別すること、及びクライアントデバイス１００のＧＰＳからの信号またはプレイヤーのオンライン活動からの信号を使用して時間ウインドウの開始においてプレイヤーの地理的位置を検証することに関与させてもよい。ゲームプレイスケジューラ３１１は、各々のプレイヤーの現在の地理的位置をデータセンタ（ＤＣ）マネージャ４００に提供する。
【００４１】
各々のプレイヤーに対し、ＤＣマネージャ４００は、プレイヤーの地理的位置に近接したデータセンタを識別するために、プレイヤーの現在の地理的位置を使用する。１つよりも多いデータセンタがプレイヤーの地理的位置に近接して識別される場合、ＤＣマネージャ４００は、プレイヤーが満足するゲームプレイ経験を有することができるように、ゲームの要件に従ってどのデータセンタがゲームのゲームプレイのためのリソースを提供するのに最も向いているかを判定するように、異なるデータセンタの性能メトリックを評価する。ＤＣマネージャ４００は、ＤＣ性能メトリックエバリュエータ４０７に、データセンタを評価することに関与させてもよい。１つのデータセンタのみがプレイヤーの地理的位置に近接して識別される場合でさえ、データセンタは、データセンタ内の１つ以上のサーバがゲームのゲームプレイを実施するリソースを提供できるかを確かめるために評価される。ＤＣ性能メトリックエバリュエータ４０７は、データセンタのＤＣ性能メトリックを識別し、データセンタは、スケジュールされた時間におけるゲームのゲームプレイについてのユーザ（すなわち、第１プレイヤー）のリクエストにサービスできるかどうかを判定するための、各々のサーバ上で利用可能なリソースのタイプ、異なる期間においてリソースに関して置かれたリクエスト、各々のサーバの能力、他のリソースの能力などを含む。サービス品質（ＱＯＳ）エバリュエータ４０８は、ゲームのゲームプレイのために利用可能なリソースがプレイヤーに対して満足するゲームプレイ経験を提供できると判定するために使用される。
【００４２】
評価に基づいて、各々のプレイヤーに対してゲームプレイリクエストにサービスする、地理的位置におけるデータセンタが識別される。次いで、ゲームのインスタンスを実行するために、データセンタ内の１つ以上のサーバが使用される。一実施形態では、ゲームのインスタンスは、スケジュールされた時間にユーザとのゲームのゲームプレイを始めるように、プレイヤーがクラウドゲーミングシステムに接続するよりも前に実行される。ゲームプレイセッションが開始されると、ＱｏＳエバリュエータ４０８は、ゲームプレイの品質が悪化しないことを保証するために、リソース（システム及び通信）を絶え間なくまたは周期的に管理する。識別されたデータセンタ内のサーバ（複数可）のリソースが他のアプリケーションによって拘束され、またはゲームによって必要とされるレベルにおいて実行していないと判定される場合、ＱｏＳエバリュエータ４０８は、サーバ（複数可）におけるリソースの発行を示すＤＣ性能メトリックエバリュエータ４０７への信号を生成する。ＤＣ性能メトリックエバリュエータ４０７は、ＱｏＳエバリュエータ４０８からの信号に応答して、ゲームプレイのリクエストにサービスし、サーバまたはデータセンタ識別子をａｐｐスケジューラ３５１ａに提供する、異なるサーバまたは異なるデータセンタを識別するように、データセンタまたは地理的位置に近接した他のデータセンタ内の他のサーバを評価してもよい。
【００４３】
ａｐｐスケジューラ３５１ａは、ビデオゲームのゲーム状態を判定するように、ゲームデータシンクロナイザ５００とインタラクションを行ってもよい。ゲームデータシンクロナイザ５００は、ビデオゲームのゲーム状態を取得するように、ゲームデータデータストア１０７をクエリする。ビデオゲームのゲーム状態は、リクエストにおいて識別された各々のプレイヤー及びリクエストを開始したユーザについてのゲーム状態を識別するように分析される。ゲームデータデータストア１０７は、クラウドゲーミングシステム３００において利用可能な複数のゲームのゲーム状態を維持し、各々のゲームのゲームプレイの複数のインスタンスを含んでもよく、ゲームの各々のインスタンスは、ゲームをプレイしたプレイヤーの特定の１人を識別することができることに留意されるべきである。ゲームがユーザ及びリクエストにおいて識別されたプレイヤーによって前にプレイされた場合、現在のリクエストは、ゲームが前のゲームプレイセッションにおいて中断したポイントからゲームのゲームプレイを再開することであってもよい。結果として、ゲームのゲーム状態は、ゲームをプレイした各々のプレイヤーのゲーム状態を識別し、各々のプレイヤーのゲーム状態は、そのゲームでの前のゲームプレイの間における各プレイヤーの性能に基づいている。更に、各々のプレイヤーのゲーム状態は、プレイヤーのゲームプレイ信用情報、プレイヤーのゲームスキルなど、プレイヤーによってゲームで使用またはカスタマイズされたゲームアイコン、ゲームのセットアップの間に使用されるルーチンのセット、ゲームのゲームプレイの間に行われる入力、プレイヤーによって達成されるゲームの勝利及びゲームレベル、ゲームの好みなどを判定する情報を提供してもよい。各々のプレイヤーのゲーム状態において提供される情報は、ゲームが前のゲームプレイの間に中断したポイントまでのゲームにおけるそれぞれのプレイヤーのゲームプレイを再作成するのに十分である。
【００４４】
代わりに、ゲームは、ユーザによって全くプレイされていなかった場合もあり、またはリクエストにおいて識別されたプレイヤーのいずれともプレイされていなかった場合もある。明らかに、そのようなケースでは、ゲームデータデータストア１０７は、ユーザ、またはリクエストにおいて識別されたプレイヤーを包含するゲームについて、ゲームプレイのいずれの記録も有さない場合がある。結果として、リクエストは、始めからゲームを開始することであってもよい。そのようなケースでは、ゲームデータシンクロナイザ５００は、プレイヤー及びユーザがゲームの始めからゲームプレイを開始することを可能にするように、ゲームデータをアップロードするために使用されてもよい。ユーザが他のプレイヤーと前にゲームをプレイしたが、リクエストにおいて識別されたプレイヤーのいずれともプレイしてないケースでは、ゲームデータシンクロナイザ５００は、ユーザについてのゲームのゲームプレイ履歴についてゲームデータデータストア１０７をクエリしてもよく、他のプレイヤーとのゲームのゲームプレイの間にユーザによって提供されるユーザのゲームプレイ信用情報及びカスタマイズのタイプを識別するために履歴からの情報を使用してもよい。同様に、ゲームデータシンクロナイザ５００は、異なるゲームにプレイヤーによって一般的に提供されるプレイヤーのゲームプレイ信用情報及び／またはカスタマイズのタイプを識別するように、クラウドゲーミングシステムにおける各々のプレイヤーによってプレイされる複数のゲームのゲームプレイ履歴についてゲームデータデータストア１０７をクエリしてもよい。ユーザ及び各々のプレイヤーの識別された信用情報、ゲームの好み、及びゲームカスタマイズは、ゲームプレイのためにゲームをセットアップする際に使用される。いくつかの実施形態では、ゲームデータシンクロナイザ５００は、現在のゲームについて共通する、または関連する、あるいは互換性を有するカスタマイズ及び／またはプレファランス（好み）のうち特定の１つを識別するように、各々のプレイヤーによってプレイされる複数のゲームの好み及びカスタマイズのタイプを分析してもよく、プレイヤーに対してゲームをセットアップするときにそれらを適用してもよい。各々のプレイヤーの履歴ゲームプレイ情報は、ゲームをプレイしていない識別されたプレイヤー及びユーザに対して、スケジュールされた時間にゲームプレイのためにゲームをセットアップする間にゲームプレイカスタマイズを提供するために使用される。
【００４５】
ゲームデータシンクロナイザ５００は、ゲームプレイのためのゲームをセットアップするために、ユーザ及びプレイヤーの各々に対して取得されたゲーム状態情報または履歴ゲームプレイ情報を使用する。ゲームデータシンクロナイザ５００は、ＤＣマネージャ４００によって識別された１つ以上のデータセンタ内の１つ以上のサーバにおいてゲームをインスタンス化する。ゲームのインスタンス化は、前のゲームプレイのセットアップの間にプレイヤーの各々及びユーザが従うセットアップルーチン（例えば、ログインルーチン、カスタマイズルーチンなど）、並びにセットアップの間及びゲームの前のゲームプレイ間にルーチンの各々についてのユーザ及び各々のプレイヤーによって行われる入力（ある場合）を識別することを含む。ゲームデータシンクロナイザ５００は次いで、各々のプレイヤー、ユーザについてのゲームのゲームコードを実行し、初期セットアップの間及びゲームのゲームプレイの間に開始されたルーチンの各々に入力を自動で提供し、入力は、セットアップルーチンの間及びゲームのゲームプレイの間に各々のプレイヤー、ユーザによって行われる入力を模倣する。ゲームの実行は、ユーザ及びリクエストにおいて識別された全てのプレイヤーに対して同期される。
【００４６】
一実施形態では、ゲームデータシンクロナイザ５００は、１つ以上のデータセンタ内における１つ以上のサーバにおいてゲームプレイのためのゲームのセットアップを開始するために、スケジュールウインドウ３５１ｂによって識別された時間ウインドウを使用し、スケジュールされた時間にゲームプレイを始めるように選択されたプレイヤー及びユーザに対してゲームが準備されるようにする。ユーザは、本出願において使用されるように、スケジュールされた時間にゲームについてのゲームプレイリクエストを開始する人（すなわち、第１プレイヤー）であり、プレイヤーは、ユーザがゲームプレイに加わることを招待した人々（ソーシャルコンタクト、ゲームプレイコンタクトなど）であることに留意されるべきである。ゲームプレイにおける各人の役割の明確な区分を単に提供するために、ユーザ及びプレイヤーについて別個に言及され、実際にユーザは、ゲームのプレイヤーでもあり、第１プレイヤーと称されることがある。リクエストにおいて識別されたプレイヤーは、ゲームでの前のゲームプレイの間にユーザに加わったプレイヤーであった場合もあり、または新たなゲームプレイセッションを開始するように識別された場合もあることに留意されるべきである。
【００４７】
スケジュールされた時間にゲームのゲームプレイのためにユーザに加わる通知がプレイヤーに送信されるとき、前のゲームプレイからのプレイヤーの全てがスケジュールされた時間にゲームプレイに加わる招待を受け付けることができるわけではない。ゲームは、ユーザとプレイヤーとの間の前のゲームプレイ（存在する場合）においてゲームが中断されたポイントまで再作成される。一実施形態では、招待を受け付けるプレイヤーの数が、ゲームの前のゲームプレイに関与したプレイヤーの数未満であるとき、ゲームの再作成は、前のゲームプレイが放棄されたが、ユーザ及び招待を受け付けたそれらのプレイヤーのみが中断ポイントからゲームのゲームプレイを前方に続けることを可能にする適切な観点を提供するように、前のゲームプレイに関与した全てのプレイヤーの状態を有するゲームを再作成することを含む。他の実施形態では、ゲームの再作成は、ユーザのみ及び招待を受け付けたそれらのプレイヤーのゲーム状態を有するゲームを再作成することを含む。
【００４８】
時間ウインドウは、特定の長さの時間のブロックである。いくつかの実施形態では、ウインドウにおいて識別された長さの時間は、ゲームの複雑度及びゲームプレイのためにゲームをセットアップするのに必要な時間の量に依存してもよい。例えば、ゲームがゲームプレイの前に完了される必要がある多くのセットアップルーチンを有する場合、ゲームは、最小のセットアップルーチンを有するゲームに対してセットアップのためのより長い長さの時間を必要とすることがある。同様に、非常に進行した段階（例えば、レベル２０の中から１８レベルにおいて）において中断したゲームは、より早い段階において中断したゲームよりもセットアップするためにより長い長さの時間を必要とすることがある。よって、ゲーム及びゲームが中断された場所に応じて、時間ウインドウを定義する長さの時間は、数秒から数分まで及ぶことがある。ゲームデータシンクロナイザ５００は、一実施形態では、ゲームのタイプ及びゲームをセットアップするために必要とされる時間の量を判定して、分析に基づいて時間ウインドウを定義するように、前のゲームプレイを分析し、または利用可能である場合、ゲームのゲーム情報を分析する。識別された時間ウインドウは、ゲームデータシンクロナイザ５００がゲームをセットアップするために十分なバッファ時間を含む。前のゲームプレイがいずれかの段階において中断されることがあるので、時間ウインドウにおいて定義された長さの時間は変化してもよい。例えば、レベル２０を有するゲーム及びレベル２において中断した前のゲームプレイについて、時間ウインドウにおいて定義された長さの時間は、例えば、１分であってもよく（バッファ時間を含む）、例えば、同一のゲームが前のゲームプレイの間にレベル１８において中断した場合の３分の時間ウインドウよりもはるかに短い。本明細書で言及される時間ウインドウは、例として提供され、限定的であるものと考えられるべきではない。他の実施形態では、ウインドウにおいて識別された長さの時間は、予め定義されてもよい。
【００４９】
ゲームデータシンクロナイザ５００は、スケジュールされた時間の前にウインドウにおいて定義された長さの時間を有する、ゲームを再作成することを始める。ゲームデータシンクロナイザ５００は、ユーザ、及び招待を受け付けたプレイヤーが、クラウドゲーミングシステムに接続し、ゲームを選択するとすぐにゲームのゲームプレイを始めることが可能であるように、１つ以上のデータセンタ内の１つ以上のサーバにおいてユーザ及び全てのプレイヤーに対してゲームプレイのためのゲームの再作成を同期してもよい。再作成は、ゲームが開始されるポイントまで、全てのプレイヤーに対してゲームのゲームデータをロードすること、ゲームが現在のゲームプレイの間に中断されたかのように見えるようにすることを含むが、実際には、ゲームは、前のゲームプレイから再構築されており、ユーザ及び選択されたプレイヤーがゲームを再開するために時間通りに準備がされ続けている。ゲームプレイのスケジュールされた時間の直前においてゲームを再作成することで、クラウドゲーミングシステムは、ユーザ及び選択されたプレイヤーがゲームを再開するためにスケジュールされた時間の直前にシステムリソース及び通信リソースを割り当てることでそのようなリソースを最適に使用することを可能にする。また、前のゲームプレイの間に中断された時間からスケジュールされた時間にわたって、ロードされたゲームデータを維持するとシステムリソースを不必要に拘束するが、そのような拘束も生じない。更に、スケジュールされた時間にゲームを準備させ続けることは、ユーザ及びプレイヤーがロードするゲームを不必要に待つことを回避し、それによって、ユーザ及びプレイヤーのゲームプレイ経験を高める。
【００５０】
図２は、クラウドホスティングシステムのアプリケーションサーバ３０１内で利用可能なユーザアカウントデータ処理エンジン３０２内の様々なモジュールを識別する。クラウドホスティングシステムは、ゲームアプリケーションを含む複数のアプリケーションをホストし、本明細書で「クラウドゲーミングシステム」３００とも称される。スケジュールされた時間におけるゲームのゲームプレイのリクエストがユーザ（すなわち、第１プレイヤー）のクライアントデバイスから受信されるとき、ユーザアカウントデータ処理エンジン３０２は、リクエストを開始するユーザを検証することをトリガされる。ユーザアカウントデータ処理エンジン３０２は、ユーザアカウントモジュール３０３に、ユーザアカウントデータベース３０４に記憶されたユーザのユーザアカウント情報を取り出すこと、及びゲームのゲームプレイのリクエストを開始しているユーザを検証するためにユーザアカウント情報を使用することに関与させる。ユーザの検証は、ユーザがクラウドゲーミングシステムの有効なユーザであること、及びゲームプレイのためにゲームへのアクセスを有することを検証することを含む。ユーザアカウント情報は、参照及びインタラクションのためのユーザアカウントに対して利用可能なゲームアプリケーションなどのアプリケーションのリストを識別する。ユーザアカウントモジュール３０３はまた、リクエストにおいて識別された１人以上のプレイヤーのユーザアカウントを取り出すために使用される。各々のプレイヤー（すなわち、リクエストを開始するユーザまたはリクエストに応答するプレイヤー）に対し、ユーザアカウントは、識別子、スクリーン名、アイコンまたはアバター、スキル、ランキング、アプリケーションの好み、信用情報、及びプレイヤーを明確に識別するために使用することができる他のデータ（生体データを含む）を含むプレイヤー関連情報を提供する。ユーザアカウント情報は、ユーザプロファイル３０９に転送される。ユーザプロファイル３０９は、プレイヤーのユーザプロファイルを判定するように、各々のプレイヤーのユーザアカウント情報を分析する。プレイヤーのユーザプロファイルは、プレイヤーと関連付けられた地理的位置を含む。
【００５１】
ユーザプロファイル３０９から識別されたプレイヤーの地理的位置は次いで、ユーザプロファイルにおいて識別された地理的位置が現在のプレイヤーの地理的位置であることを保証するように検証される。検証は、ロケーションプロセッサ３０７を使用して行われてもよい。ロケーションプロセッサ３０７は、ゲームのゲームプレイに加わる招待に応答するために使用される、プレイヤーのクライアントデバイスから生成された信号を取得することによって、地理的位置を検証してもよい。プレイヤーは、ゲームのゲームプレイのリクエストに応答するための１つのクライアントデバイス、及びゲームプレイのための別のデバイスを使用してもよい。その結果として、プレイヤーの現在の地理的位置を判定することは、ゲームがゲームプレイのために準備されるように、スケジュールされた時間の前にゲームをロードするためのデータセンタを識別する際の支援となる。プレイヤーがウェブサーバとインタラクションを行うためにクライアントデバイスにおいてウェブブラウザを使用し、または対応するサーバ側アプリケーションにアクセスする（例えば、ソーシャルメディアがソーシャルメディアプロバイダに投稿するなど）ためにいずれかの他のクライアント側アプリケーションを使用するときに信号が生成されてもよく、この信号は、クライアントのＩＰアドレス、クライアントのｐｉｎｇ情報などを判定するために使用されてもよい。代わりに、信号は、クライアントデバイス内のグローバルポジショニングシステム（ＧＰＳ）機構から発してもよい。ＧＰＳ機構からの信号は、現在の地理的位置を取得するために分析されることができるオフネットワーク信号であってもよい。オフネットワーク信号は、クライアントデバイスがネットワークに接続されることを必要とすることなく、クライアントデバイスから生成された信号である。ロケーションプロセッサ３０７は、方位付けロケーションデータプロセッサ３０７ａに、地理的位置を判定し、プレイヤーの現在の地理的位置を検証するようにクライアントデバイスから生成された信号を解釈することに関与させてもよい。
【００５２】
他の実施形態では、ロケーションプロセッサ３０７は、ソーシャルメディアシステムサーバに投稿されたソーシャルフィードなど、プレイヤーによって提供されるインタラクションから、そのようなインタラクションが更新されている適切なサーバにＡＰＩ呼び出しを行うことによってデータを取り出してもよい。もちろん、そのようなフィードへのアクセスは、プレイヤーによって許可されたパーミッションに基づいて適切なサーバにおいて利用可能である。ロケーションプロセッサ３０７は次いで、コンテキストロケーションデータプロセッサ３０７ｂに、例えば、プレイヤーの地理的位置を判定するようにソーシャルフィードのコンテキストを分析することに関与させてもよい。ロケーションプロセッサ３０７は次いで、プレイヤーの現在の地理的位置を判定するように、信号またはフィードから取得された地理的位置を有するユーザプロファイルにおいて提供されるプレイヤーの地理的位置を検証する。検証されると、現在の地理的位置は、データセンタマネージャ４００に提供され、プレイヤーのユーザプロファイルにおける地理的位置インジケータを更新するためにも使用されてもよい。プレイヤーの地理的位置を検証するための上述した方式は例にすぎず、プレイヤーの地理的位置を検証するために他のタイプの機構、ツール、ロジック、またはインタラクションが使用されてもよい。１人よりも多いプレイヤーまたはプレイヤー及びユーザの全てが同一の地理的位置を有することがあると判定されてもよい。
【００５３】
プレイヤーの使用履歴を識別するためにユーザプロファイル情報も使用され、使用履歴は、プレイヤーがクラウドゲーミングシステム３００とインタラクションしたアプリケーション（複数可）、そのようなインタラクションの時間及び頻度、インタラクションの長さ、アプリケーション（複数可）がアクセスされた場所からの地理的位置などを識別する。プレイヤーの使用履歴は、プレイヤーの好み、プレイヤーのログインルーチン、プレイヤーのスキルなどを判定するために使用されてもよい。使用履歴の分析から取得された情報は、プレイヤーに対して、ゲームプレイのためにゲームをロードする間に使用されることができる。
【００５４】
図３は、一実施形態における、プレイヤーの現在の地理的位置についてのデータセンタを識別するために使用されるクラウドゲーミングシステム３００のデータセンタマネージャ４００内の様々な構成要素を例示する。データセンタ（ＤＣ）マネージャ４００は、地理的位置インジケータ３０６ａ、並びにスケジュールされた時間にゲームをプレイすることに合意した各々のプレイヤーについてのゲーミング及び／またはアプリケーション使用履歴３０８を、ユーザアカウントデータ処理エンジン３０２から受信する。ＤＣマネージャ４００は、ゲームのゲームデータがプレイヤーに対して識別されたデータセンタ内の１つ以上のサーバにロードされることができるように、地理的位置内のまたは地理的位置に近接した適切なデータセンタを識別するために、地理的位置インジケータ３０６ａにおいて提供される地理的位置を使用する。アプリケーション使用履歴３０８において提供される情報は、前のゲームプレイ活動がユーザとリクエストにおいて識別されたプレイヤーとの間のゲームに対して記録されていないケースにおいて、ゲームをセットアップするために使用されることができる、プレイヤーの信用情報、プレイヤーの好み、プレイヤーのカスタマイズなどを取得するようにＤＣマネージャ４００によって処理される。
【００５５】
ＤＣマネージャ４００は、ＤＣ選択エンジン４１０に、最小レイテンシでスケジュールされた時間におけるゲームのゲームプレイの間にゲームデータを伝送するための十分な処理、ネットワーク、及び通信リソースを提供できるデータセンタを識別することに関与させる。ＤＣ選択エンジン４１０は、プレイヤーの現在の地理的位置を識別し、ゲームプレイのためのゲームのゲームデータを事前ロードするためのデータセンタを識別するように、ユーザアカウントデータ処理エンジン３０２によって提供される地理的位置インジケータ３０６ａを受信する、複数のサブエンジン（例えば、位置識別子４２０、ＤＣ識別子４２４）を含む。地理的位置インジケータ３０６ａに加えて、ユーザアカウントデータ処理エンジン３０２はまた、ＤＣ選択エンジン４１０に使用履歴データ情報を提供してもよい。
【００５６】
ＤＣ選択エンジン４１０は、ゲームのゲームプレイのリクエストにおいて識別されたスケジュールされた時間を識別し、どのデータセンタが各々のプレイヤーに対してゲームプレイリクエストにサービスできるかを判定するためにスケジュールされた時間を使用するように、リクエストをクエリする。ＤＣ選択エンジン４１０における位置識別子４２０は、地理的位置インジケータ３０６ａを取得し、プレイヤーのユーザプロファイルにおけるプレイヤーと関連付けられた地理的位置を識別するようにそこで提供される情報を分析する。この地理的位置は、使用履歴データ情報において提供される情報を使用して検証される。使用履歴データ情報は、クラウドゲーミングシステムによってホストされた様々なアプリケーションとインタラクションを行う間にプレイヤーが提供するいずれかのインタラクション及び全てのインタラクションに関連する情報を含んでもよい。いくつかの実施形態では、位置識別子４２０は、プレイヤーのクライアントデバイス内のＧＰＳデバイスから信号を取得してもよく、クライアントデバイスの地理的位置を、したがって、プレイヤーの地理的位置を判定するように信号を分析してもよい。
【００５７】
いくつかの実施形態では、使用履歴データ情報は、プレイヤーのウェブブラウザインタラクション、他のビデオゲームアプリケーションを含むクラウドゲーミングシステムによってホストされた他のアプリケーションに向けられたインタラクション、クライアントデバイス上で実行しているアプリケーションに向けられたインタラクションなどの詳細を提供してもよい。異なるアプリケーションのうちの１つ以上とのプレイヤーのインタラクションから取得された情報は、プレイヤーの地理的位置を判定するように分析される。いくつかの実施形態では、プレイヤーの使用履歴データ情報は、プレイヤーの最新の地理的位置を取得するために、ゲームプレイのスケジュールされた時間に対して定義された時間ウインドウ内に分析される。様々なアプリケーションとのプレイヤーの最近のインタラクションからのプレイヤーに対して識別された地理的位置が、プレイヤーの現在の地理的位置である可能性が非常に高い。位置識別子４２０は、他のアプリケーションとのプレイヤーのインタラクションから識別されたプレイヤーの地理的位置を、ユーザプロファイルにおける地理的位置と比較する。インタラクションまたは信号から取得されたプレイヤーの地理的位置がプレイヤーのユーザプロファイル内の地理的位置とは異なるとき、様々なアプリケーションとのインタラクションから識別された地理的位置は、プレイヤーの現在の地理的位置であり、プレイヤーのユーザプロファイルは、現在の地理的位置により更新される。位置識別子４２０は、現在の地理的位置にあり、またはプレイヤーの地理的位置に近接した、選択された１つ以上のデータセンタを判定するように、プレイヤーの現在の地理的位置をデータセンタ（ＤＣ）識別子４２４に提供する。
【００５８】
ＤＣ識別子４２４は、各々のプレイヤーの地理的位置内で、または各々のプレイヤーの地理的位置に近接して利用可能なデータセンタのデータセンタ識別子を取得するように、ＤＣプロファイラ４０２とインタラクションを行う。ＤＣプロファイラ４０２内のＤＣロケーションサブ構成要素４０４は、各々のプレイヤーに対して現在の地理的位置内にあり、または現在の地理的位置内に近接した１つ以上のデータセンタを識別するように、ＤＣデータストア（図示せず）において維持されたデータセンタのリストをクエリするように構成されている。リストは、地理的位置によって編成されてもよい。クエリに応答して、ＤＣロケーションサブ構成要素４０４は、選択した１つ以上のデータセンタのデータセンタ識別子をＤＣ選択エンジン４１０に返す。ＤＣプロファイラ４０２内のＤＣ  Ａｐｐ及びサービスサブ構成要素４０６は、ＤＣプロファイラ４０２によって返された選択した１つ以上のデータセンタの各々内で利用可能なサーバ及びコンソールのリスト、並びに各々のデータセンタの内の各々のサーバまたはコンソールが実行しており、または実行できるアプリケーション（Ａｐｐ）またはサービスのリストを取得するように構成されている。
【００５９】
ＤＣプロファイラ４０２によって提供される情報に基づいて、ＤＣ識別子４２４は、各々のプレイヤーに対してゲームをセットアップするための地理的位置に対して使用する特定のデータセンタを識別する。各々のプレイヤーに対して選択された特定のデータセンタがスケジュールされた時間に必要とされる通信接続及び処理リソース帯域幅を提供できることを保証するために、ＤＣ選択エンジン４１０は、各々のプレイヤーの地理的位置に対してＤＣプロファイラ４０２によって識別されたデータセンタの各々のデータセンタプロファイルを取り出すように、ＤＣ性能メトリックエバリュエータ４０７とインタラクションを行う。データセンタプロファイルは、各々のデータセンタの処理及び通信属性を識別する。
【００６０】
ＤＣ性能メトリックエバリュエータ４０７は、クラウドゲーミングシステム３００において利用可能な全てのデータセンタについてのデータセンタプロファイルを維持する。ユーザがゲームプレイセッション（または、アプリケーションセッション）から退出するにつれて、及び１つ以上のゲームまたはアプリケーションをスケジューリングするためのリクエストが受信されるにつれて、これらのプロファイルが１つ以上のアプリケーションについてのリクエストとして絶え間なく更新され、またはゲームがそれぞれのデータセンタによってサービスされる。最新のデータセンタメトリックは、それぞれのデータセンタ内の各々のサーバの現在の状態及びリソース能力と共に、異なる時に実行するようにスケジュールされたゲームまたはアプリケーションからのリソース上に置かれたリクエストを定義する。例えば、最新のデータセンタメトリックは、現在実行され、またはいずれかのときに実行するようにスケジュールされたゲームのゲームインスタンス（または、アプリケーションのアプリケーションインスタンス）のタイプ及び数、現在利用可能であり、またはいずれかのときに利用可能になる可能性が高い処理及び／またはシステムリソースのタイプ、データセンタ内の異なるサーバにおける処理リソースの各々の状態、データセンタにおいて利用可能なサービス及びアプリケーションのタイプなどを識別してよい。ＤＣ選択エンジン４１０は、ゲームのゲームプレイの招待を承認した各々のプレイヤーについてのリクエストにサービスするためのデータセンタを選択するために、これらのデータセンタ属性を使用する。
【００６１】
ＤＣ選択エンジン４１０におけるＤＣ識別子４２４は、データセンタメトリックを使用し、ゲームに対して予想される性能要件、システム要件、記憶要件、処理リソース要件、ゲームデータを通信するための通信接続要件などにメトリックを一致させる。例えば、性能要件は、ユーザ及びプレイヤーによって希望されるゲームプレイ強度に基づいてもよい。別の実施例では、処理及び通信要件は、ゲームの開発者によって定義されたゲーム仕様から取得されてもよい。
【００６２】
ＤＣ識別子４２４は、ユーザ属性（ゲームプレイ強度、プレイヤー信用情報など）、ゲームの特性、及びデータセンタメトリック情報を受信し、ゲームのゲームプレイに対して指定された要件に合致または上回ることがある地理的位置内のデータセンタを識別するためにこの情報を使用する。いくつかの実施形態では、プレイヤーの地理的位置に近接したデータセンタのいずれもが、プレイヤーについての比較可能なゲームプレイ経験を提供するように、ゲームのゲームプレイセッションをサービスするために必要なリソースの全てを有するわけではないと判定されてもよい。そのような実施形態では、ＤＣ識別子４２４は、ゲームに対して指定されたリソース要件の各々に対して重みを割り振ってもよく、プレイヤーについてのリクエストにサービスするための重み付けされたリソース要件を使用してもよい。例えば、計算集中的なゲームについて、処理及び記憶リソースは、ネットワーキングリソースよりも大きく重み付けされてもよい。結果として、ＤＣ識別子４２４は、リクエストにサービスするための十分な処理及び記憶リソースを有するプレイヤーの地理的位置内のデータセンタを識別してもよい。別の実施例では、速度集中的なゲームについて、通信接続及びネットワークリソースは、処理及び記憶リソースよりも大きく重み付けされてもよい。その結果として、プレイヤーについてのリクエストを処理するための十分な通信接続及びネットワークリソースを有するデータセンタが識別される。
【００６３】
データセンタが各々のプレイヤーの地理的位置に対して識別されると、データセンタ識別子情報４２６は、ゲームデータシンクロナイザ５００に転送される。ゲームデータシンクロナイザ５００も、ユーザアカウントデータ処理エンジン３０２から各々のプレイヤーについてのアプリケーション使用履歴データ情報３０８を受信する。ゲームデータシンクロナイザ５００は、プレイヤーの各々またはユーザがクラウドゲーミングシステムにログインするとすぐにゲームがゲームプレイのために準備されるように、スケジュールされた時間の前にそれぞれのプレイヤー（複数可）に対してゲームのゲームデータをアップロードするように情報を処理し、識別されたデータセンタへの信号を生成する。
【００６４】
ゲームデータシンクロナイザ５００は、プレイヤーのゲームプレイ属性を識別して、プレイヤーの信用情報、プレイヤーのカスタマイズ、ゲームをセットアップするためにプレイヤーが従うルーチンのセット、ゲームのゲームプレイの間にプレイヤーによって行われる入力などを識別するように、ゲームの各々のプレイヤーについてのアプリケーション使用履歴データ情報３０８を分析する。プレイヤーの信用情報は、プレイヤー識別子、ゲーム識別子、日付、日時、ゲームタイプ、ゲームの性能使用、プレイヤーのスキルまたは専門レベル、プレイヤーの現在の地理的位置、費やされる時間の量、アクセスの頻度、ゲームに対して希望される性能要件などの詳細を提供する。
【００６５】
図４は、各々のプレイヤーのゲームプレイ関連属性を識別し、スケジュールされた時間にゲームをゲームプレイのために準備させるために使用されるゲームデータシンクロナイザ５００の様々な構成要素を例示する。ゲームデータシンクロナイザ５００内のゲーム状態識別子５０２は、スケジュールされた時間に、ユーザとプレイヤーとの間のゲームプレイのリクエストにおいて識別されたゲームのゲーム状態を識別するように、ゲームデータデータストア１０７をクエリする。ゲームデータデータストア１０７は、様々なプレイヤー間で前のゲームプレイセッションの間にプレイされた様々なゲームのゲーム状態を維持する。ゲームのゲーム状態は、各々のプレイヤー（ゲームプレイリクエストを開始したユーザを含む）のゲーム状態、及びゲームプレイがスケジュールされた時間に始まることになるポイントまでゲームを再作成することに関連する他のゲームデータのゲーム状態を識別する。全てのプレイヤーのゲーム状態は、ゲームの全体的なゲーム状態を構成する。ゲームデータデータストア１０７へのクエリは、リクエストを開始するユーザとゲームプレイの招待を受け付けたプレイヤーとの間の前のゲームプレイからゲームのゲーム状態を定義する記録を識別してもよい。ユーザとプレイヤーとの間の前のゲームプレイセッションでは、ゲームプレイが中断されていることがあり、ユーザからの現在のリクエストは、中断されたポイントから中断されたゲームのゲームプレイを再開することであってもよい。ゲームデータデータストア１０７へのクエリがゲームについての記録を返さないとき、ゲームデータデータストア１０７に記録されたユーザとプレイヤーとの間の前のゲームプレイが存在しなかったことを意味する。このケースでは、スケジュールされた時間におけるゲームプレイのリクエストは、始めからゲームのゲームプレイを開始することである。
【００６６】
ゲーム状態及びゲームを再作成するための他の関連する情報は、ゲームデータ送信機５０４に提供される。ゲームデータ送信機５０４は、各々のプレイヤー（すなわち、他のプレイヤーまたはユーザ）のゲーム状態を識別するように、ゲーム状態識別子５０２によって伝送された前のゲームプレイからのゲーム状態情報を処理する。各々のプレイヤーのゲーム状態に関する関連するデータは、ゲーム状態情報から識別され、ゲームデータ更新マネージャ５０６に提供される。
【００６７】
ゲームデータ更新マネージャ５０６は、ゲームのセットアップの間及びゲームプレイの間の異なるときにプレイヤーによって行われる入力を含む、各々のプレイヤーについての関連するデータを受信し、それぞれのプレイヤーのゲーム状態に基づいて、各々のプレイヤーについての対応するゲームデータ５０８を識別する。ゲームデータ更新マネージャ５０６は、ＤＣマネージャ４００によって識別されたそれぞれのデータセンタにおける１つ以上のサーバにゲームデータ５０８をアップロードすることを始める時間を判定するように、スケジュールウインドウ３５１ｂから時間ウインドウを取得する。時間ウインドウは、一実施形態では、スケジュールされた時間の前の静的な予め定義された長さの時間である。別の実施形態では、時間ウインドウは、ゲームのタイプ、ゲームのゲーム状態、アップロードされる必要があるゲームデータの量などに基づいて動的に定義されてもよい。例えば、ゲームがゲームのレベル１８において中断されており、ゲームがレベル２０を有する場合（すなわち、ゲームがより進行したレベルにおいて前に中断していた）、時間ウインドウは次いで、レベル２において中断された同一のゲームに対してよりも長いことがある。これは、レベル２に対してアップロードされる必要があるゲームデータに対して、レベル１８に対してアップロードされる必要があるたくさんのより大きなデータが存在する（すなわち、レベル１からレベル１８までのゲームデータ）事実に起因している。同様に、ゲームがアップロードされる必要があるたくさんのグラフィックを有する場合、時間ウインドウは、アップロードするグラフィックをあまり有しないゲームに対してよりも長く定義されてもよい。定義される時間ウインドウは、ゲームデータをアップロードするために必要とされる時間の量を含み、いくつかの実施形態では、各々のプレイヤーに対してゲームデータ５０８をロードすることを完了するためのビルトインバッファ時間をも含んでもよい。例えば、ゲームプレイのためのスケジュールされた時間が火曜日の午後６時であるように定義され、ゲームデータをアップロードするために約１５秒の長さを要する場合、時間ウインドウは次いで、サーバにゲームデータをアップロードするための１５秒及び約１５分のバッファ時間を含んでもよい。よって、上記実施例では、ゲームデータ更新マネージャ５０６は、プレイヤー及びユーザがゲームプレイを始めるようにクラウドゲーミングシステムに接続するとき、ゲームが完全にロードされ、プレイヤー及びユーザがゲームプレイを始める準備がされるように、火曜日の午後５時４４分頃に開始して、それぞれのデータセンタ内のサーバに各々のプレイヤーについてのゲームデータを事前ロードすることを始めてもよい。上記バッファ時間は、単なる例として提供され、限定することと考えられるべきではない。
【００６８】
時間ウインドウによって定義された時間に到達したとき、ゲームデータ更新マネージャ５０６は、各々のプレイヤーに対する識別されたデータセンタとの通信接続を確立し、ゲームコード（１つがデータセンタにおいてまだ利用可能でない場合）及びプレイヤーについての関連するゲームデータを識別されたデータセンタ内の１つ以上のサーバに自動でアップロードすることをデータセンタにリクエストする識別されたデータセンタに、プレイヤーについての関連するゲームデータを有する信号を送信する。データセンタ内の１つ以上のサーバは、ゲームデータを受信し、ゲームコードを使用してゲームのインスタンスを実行する。プレイヤーについてのゲームデータのロードは、ゲームのセットアップの間及びゲームプレイの間にサーバが様々なルーチンについての入力を自動で行うことを含み、サーバによって行われる入力は、ゲームの前のゲームプレイの間にプレイヤーによって行われる入力を模倣する。各々のプレイヤーは、ゲームをセットアップするために従う自身のルーチンのセットを有してもよく、ゲームプレイの間に入力を行ってもよく、各々のプレイヤーのそのような入力は、ゲームデータデータストア１０７に記憶されたゲームのゲームデータにおいて捕捉され、ゲームデータ更新マネージャ５０６によってサーバに提供され、その結果、サーバは、スケジュールされた時間におけるゲームプレイを可能にするように、時間内にプレイヤーに対してゲームを事前ロードする際に各々のプレイヤーからのそれらの入力を使用してもよい。
【００６９】
いくつかの実施形態では、プレイヤーは、ゲームをプレイしていないことがあり、結果として、ゲームデータデータストア１０７は、プレイヤーの入力のいずれの記録も有していないことがある。そのような実施形態では、ゲームデータ更新マネージャ５０６は、プレイヤーの信用情報を判定するために、他のゲームのゲームプレイからの、プレイヤーのカスタマイズ、好み、ゲームスキル、関心、ゲームのセットアップの間及びゲームプレイの間に様々なルーチンに対して行われる入力などを使用してもよい。プレイヤーの信用情報は、プレイヤー及びユーザがゲームのゲームプレイを始めるポイントまでのゲームの事前ロードの間に使用される、識別されたデータセンタ内のサーバに提供される。例えば、ゲームデータデータストア１０７におけるプレイヤーとユーザとの間のゲームのゲームプレイの記録を有さないゲームについて、ゲームプレイが始まるポイントは、ゲームの始めであってもよい。この例では、事前ロードは、プレイヤー及びユーザがログインルーチンまたはセットアップルーチンを行う必要がないが、ゲームに直接「ドロップ」することができ、ゲームプレイを始めることができるように、ゲームの初めまでゲームについてのゲームデータ（例えば、セットアップルーチン、ログインルーチンなど）をロードすることを含む。
【００７０】
別の例では、ゲームデータデータストアがプレイヤーとユーザとの間のゲームの前のゲームプレイの記録を有するときでさえ、ユーザは、最初から始めるゲームのゲームプレイのリクエストを開始してもよい。そのようなケースでは、ゲームは、ゲームの始めまで事前ロードされ、各々のプレイヤーについてのログインルーチン、セットアップルーチンなどのルーチンのセットは、それぞれのプレイヤーの入力を模倣する入力により実行される。
【００７１】
ゲームデータ更新マネージャ５０６は、ゲームがスケジュールされた時間に全てのプレイヤー及びユーザに対してゲームプレイのために準備されるように、ユーザ、及び１つ以上のデータセンタにおいてゲームプレイの招待を受け付けた全てのプレイヤーに対してゲームの事前ロードを同期する。ゲームの事前ロードは、ユーザがいずれの他の入力も行う必要なく行われ、１人以上のプレイヤーがユーザによってリクエストされたスケジュールされた時間におけるゲームプレイの招待を受け付けたことに応答して行われる。更に、ゲームの事前ロードは、ゲームデータデータストア１０７に記憶されたゲームのゲーム状態によって定義されるようにゲームプレイが始まるポイントまで行われる。プレイヤーがゲームプレイを始めるようにクラウドゲーミングシステムに接続する以外にいずれかの他の入力を行う必要がない。ゲームは、各々のプレイヤーの好みに従ってセットアップされ、プレイヤーのカスタマイズなどを含む。地理的位置におけるデータセンタは、サーバ（複数可）が最小のレイテンシを提供し、十分な処理及び通信リソースを提供して、その結果、ユーザ及びプレイヤーが満足するゲームプレイ経験を有するように選択される。
【００７２】
いくつかの実施形態では、プレイヤー及びユーザは、スケジュールされた時間から予め定義された閾値期間内にゲームプレイを始めるように、クラウドゲーミングシステムに接続することが許可される。例えば、スケジュールされた時間が所与の日の午後６時である場合、プレイヤー及びユーザは、午後６時１５分までゲームプレイを始めるためにクラウドゲーミングシステムに接続することが可能であってもよい。もちろん、予め定義された閾値期間の上記例は、例にすぎない。
【００７３】
プレイヤーが予め定義された閾値期間内にゲームのゲームプレイに接続することが可能でない場合、プレイヤーなしにゲームプレイが続いてもよい。しかしながら、ゲームデータシンクロナイザ５００は、一実施形態では、異なる時間にゲームプレイに加わるオプションをプレイヤーに提供する。例えば、ユーザは、スケジュールされた時間にゲームのゲームプレイのリクエストを開始していることがあり、ゲームプレイに加わるのに約１０人のプレイヤーが招待されていることがあり、１０人のプレイヤーのうち８人が招待を受け付けていることがある。しかしながら、スケジュールされた時間に、または予め定義された閾値期間内に、招待を受け付けたプレイヤー８は、ゲームプレイに加わることが可能でないことがあった。他の７人のプレイヤー及びゲームプレイをスケジュールしたユーザとのゲームプレイが続く。この実施例では、プレイヤー８は、ゲームのゲームプレイに加わるように自身のリクエストを開始してもよく、ゲームに加わるための現在時間の後のある時点である時間を指定してもよい。いくつかの実施形態では、プレイヤー８は、ゲームプレイがいまだスケジュールされた時間内にある間、及び特定の条件の間（例えば、ずっと特定のレベルにある間）、または特定の条件が満たされ続ける間、ゲームのゲームプレイに加わるリクエストを開始することを許可されてもよい。例えば、プレイヤー８は、ゲームが再開されたレベルに他のプレイヤーがいる間、またはゲームが再開された特定の数のレベル内でなど、ゲームプレイに加わるリクエストを開始することを許可されてもよい。プレイヤー８からのリクエストが特定の条件に適合することを検証するにあたり、リクエストは、スケジュールされた時間にゲームのゲームプレイに加わった全てのプレイヤー（すなわち、７人のプレイヤー及びユーザ）に転送されてもよい。プレイヤー８のリクエストに応答して、７人のプレイヤーまたはユーザのうちのいずれか１人は、プレイヤー８のリクエストを受け付けてもよい。プレイヤー８のリクエストが受け付けられることに応答して、ゲームデータシンクロナイザ５００は、プレイヤー８がクラウドゲーミングシステムに接続することができ、ゲームのゲームプレイに加わることができるように、ゲームの現在のゲーム状態を識別してもよく、現在のゲーム状態までのゲームデータをプレイヤー８に対して識別されたデータセンタに転送してもよい。この実施例では、プレイヤー８の地理的位置が既に確立されており、識別されたデータセンタ及びゲームプレイが始まるポイントまでのゲームデータは、プレイヤー８がスケジュールされた時間にまたはおよそスケジュールされた時間にゲームプレイを始めることを予期して、スケジュールされた時間の前に既に提供されている。しかしながら、プレイヤー８がスケジュールされた時間に始めることができず、ゲームプレイが既に再開されているので、ゲームデータシンクロナイザ５００は、プレイヤー８がゲームプレイに加わるオプションを提供する。ゲームデータシンクロナイザ５００は、プレイヤー８がゲームプレイを再開することを可能にするように、プレイヤー８と関連付けられたデータセンタにおいて、スケジュールされた時間に始まった現在のゲームプレイセッションの間にプレイヤー８が失ったゲームプレイの部分を更新する。
【００７４】
スケジュールされた時間におけるゲームのゲームプレイの間のプレイヤーインタラクションは、１つ以上のデータセンタにおいて追跡され、ゲーム（複数可）のゲーム状態は、クラウドゲーミングシステムにおいて維持されたゲームデータデータストア１０７に更新される。
【００７５】
前に言及されたように、ユーザによって開始されたゲームプレイのリクエストにおいて識別されたプレイヤーは、ソーシャルネットワークと関連付けられたソーシャルグラフから取得されたユーザのソーシャルコンタクト、またはユーザのゲームプレイコンタクトであってもよい。一実施形態では、リクエストにおいて識別されたプレイヤーは、このリクエストが開示された時間におけるオンライン活動に基づいて識別される。例えば、リクエストにおいて識別されたプレイヤーは、ユーザがリクエストを開始した時間においてオンラインであったソーシャルコンタクトまたはゲームプレイコンタクトであってもよい。プレイヤーは、他のゲーミングアプリケーションを含む他のアプリケーションとオンラインでインタラクションを行っていることがある。この実施例では、リクエストは、プレイヤーがリクエストへの応答をオンラインで探索している間にプレイヤーに転送される。
【００７６】
プレイヤーがスケジュールされた時間にクラウドゲーミングシステム上のユーザアカウントにアクセスするとき、プレイヤーのクライアントデバイスとゲームがプレイヤーに対して事前ロードされた地理的位置におけるデータセンタ内のサーバ（または、ゲームコンソール）との間で直接通信接続が確立され、識別されたデータセンタのゲームサーバまたはゲームコンソールとプレイヤーのクライアントデバイスとの間でのゲームプレイデータの交換を可能にする。選択されたユーザのゲームプレイの間、クラウドゲーミングシステムにおいて利用可能なサービス品質（ＱｏＳ）エバリュエータ４０８は、サービス品質がゲームについて予測されるサービスの必要とされるレベルを満たすかどうかを判定するように、データセンタによって提供されるサービス品質をテストすることによって、各々のプレイヤーに対する割り振られたデータセンタによって提供されるサービス品質を監視してもよい。いくつかの実施形態では、サービス品質テストは、定義された期間において実行されてもよく、またはゲームプレイの間に一定間隔においてもしくは絶え間なく実行されてもよい。品質テストに基づいて、ＱｏＳエバリュエータ４０８は、ゲームのゲームプレイの間に割り振られたデータセンタを維持するか、または地理的位置内の異なるデータセンタに切り替えるかのいずれかの信号をクラウドゲーミングシステム内のＤＣマネージャに送信してもよい。いくつかの実施形態では、品質テストは、接続速度、リソースの最適な割り当て、リソースの各々によって提供されるサービスのレベルなどをチェックし、そのようなテストは、それぞれのクライアントデバイスとゲームデータがクライアントデバイスにストリーミングされている地理的位置内の割り振られたデータセンタとの間で交換される実際のゲームデータにより実行される。
【００７７】
いくつかの実施形態では、プレイヤーがビデオゲームのゲームプレイをスケジュールするためのリクエストを開始する代わりに、リクエストは、サーバ上で利用可能な、または特定の開発者によってもしくはプレイヤーの特定のグループに対して開発された特定のビデオゲームまたは複数のビデオゲームのゲームプレイスケジュールをまさに管理するオーガナイザまたはマネージャから開始されてもよい。この実施形態では、オーガナイザは、特定のビデオゲームもしくは異なるビデオゲームと関与する様々なプレイヤーに基づいて、またはプレイヤーの各々と関連付けられたユーザ属性もしくはゲームプレイ信用情報（例えば、ゲームの好み、スキルセット、関与のレベル、ビデオゲームのプレイの頻度、費やされた時間の量、各々のレベルにおいてなされもしくは特定の課題を克服するためになされた試みの数など）に基づいて、招待するプレイヤーを識別してもよい。
【００７８】
オーガナイザがビデオゲームのゲームプレイをスケジュールすることを可能にすることは、ビデオゲームのゲームプレイをスケジュールしており、ユーザからの不正を回避している者に対する更に制御する。ユーザがビデオゲームのゲームプレイをスケジュールするオプションを与えられえるとき、そのようなオプションは、大きな量のゲームプレイを意図してスケジュールする悪意のあるユーザによって悪用されることがあり、それによって、システムに過度に負荷をかけ、システムリソースに過度に負担をかける。代わりに、ユーザは、ビデオゲームの事前ロードを生じさせ、それによって、システムのリソースを拘束する複数のプレイヤーとのビデオゲームのゲームプレイをスケジュールしてもよい。これは、ユーザ及び／またはゲームプレイに加わる招待を受け付けたプレイヤーのほとんどが実際にスケジュールされた時間にゲームをプレイするために現れるときに有利である。しかしながら、ユーザ及び／またはプレイヤーがスケジュールされた時間に現れることができないとき、システムリソースは、不必要に拘束され、システムのリソースを浪費させる。そのような誤使用または悪用を防止するために、ビデオゲームのゲームプレイをスケジュールする制御を特定のプレイヤーまたはユーザのみに提供することによって、システムリソースが保護されることができ、適切な負荷分散が行われることができる。いくつかの実施形態では、ゲームプレイをスケジュールするオーガナイザは、スケジュールされた時間にビデオゲームをプレイしてもよく、またはしなくてもよい。よって、様々な制御は、プレイヤーが満足するゲームプレイ経験を有することを保証すると共に、システムリソースを誤使用から保護し、及び均等させることを続けるように設置されてもよい。
【００７９】
図５は、一実施形態における簡易データフローチャートを例示する。スケジュールされた時間にビデオゲームをプレイするリクエストが第１プレイヤーのクライアントデバイスから出されると、データフローが開始される。リクエストは、ネットワークを通じてクラウドゲーミングシステムのサーバに転送される。リクエストが有効であることを検証した後、クラウドゲーミングシステムのサーバは、リクエストにおいて識別された複数の他のプレイヤーと関連付けられたクライアントデバイスに通知を転送する。図５では、通知が送信される他のプレイヤーは、プレイヤーｎ１、プレイヤー２、プレイヤー３、プレイヤー４、プレイヤー５、プレイヤーｎ２を含む。他のプレイヤーのうち何人かは、通知に応答して、スケジュールされた時間にゲームをプレイする招待を受け付けてもよく、その他は、明確なアクションにより、または通知に応答しないことによって招待を拒否してもよい。図５に示されるように、プレイヤー２、４、５、及びｎ２は、ゲームプレイリクエストを受け付けることによって招待に応答している。招待を受け付けたプレイヤーからの応答は、クラウドゲーミングシステムのサーバによって評価される。応答は、サーバがゲームを事前ロードし、スケジュールされた時間に対してゲームを準備させる承認としての役割を果たす。サーバは、ゲームを事前ロードするためのスケジュールされた時間の前の時間ウインドウを判定し、プレイヤー（第１プレイヤー、及び招待を受け付けた他の選択されたプレイヤー）がゲームプレイを始めるために利用可能にするように、スケジュールウインドウ３５１ｂをクエリする。
【００８０】
ゲームを事前ロードすることの一部として、サーバは、スケジュールされた時間にプレイしようとしているプレイヤーの地理的位置を判定してもよく、ゲームが事前ロードされるプレイヤーの地理的位置に近接したデータセンタ（複数可）を判定してもよく、ネットワークを通じてそれぞれのデータセンタにインスタンス化信号を送信する。インスタンス化信号は、データセンタが事前ロードするためのゲームデータを正確に識別することを可能にする、ゲーム識別子、データセンタ識別子、プレイヤー識別子、前のゲームプレイセッション識別子などを含む。プレイヤーの地理的位置に基づいて、事前ロードするための１つよりも多いデータセンタが識別されてもよい。結果として、識別されたデータセンタの各々は、ゲームのゲームプレイの招待を受け付けた特定のプレイヤーに対してゲームを事前ロードするように指示されてもよい。各々のプレイヤーのゲーム状態が異なることがあるので、適切なデータセンタにおいて正確なゲーム状態を事前ロードすることは、プレイヤーが満足するゲームプレイ経験を有することを可能にするために必須である。ゲームは、スケジュールウインドウ３５１ｂによって指定された時間ウインドウにおいて定義された時間に、対応するデータセンタにおいて各々のプレイヤーに対して１つ以上のサーバに事前ロードされ、その結果、システムリソースがゲームプレイのために時間内に、且つあまり早くなく消費される。事前ロードは、前のゲームプレイが放棄されたポイントまでゲームが事前ロードされるように、プレイヤーに対して同期して実行される。
【００８１】
プレイヤー（第１プレイヤー、プレイヤー２、４、５、及びｎ２）がクラウドゲーミングシステムにアクセスするとき、プレイヤーは、ゲームから離れなかったように見せるように、ゲームプレイのゲームストリームに即時にドロップされる。ゲームプレイからのゲームデータは、識別されたデータセンタの通信及びシステムリソースを使用して、ネットワークを通じてプレイヤーのクライアントデバイスとデータセンタのサーバとの間で交換される。本明細書で説明される実施形態は、第１プレイヤーが、ビデオゲームをプレイするようにスケジュールされた時間に他のプレイヤーをオンラインで集める方式を提供し、システムは、特定のプレイヤーについてのゲームデータを事前ロードし、ゲームをゲームプレイのために準備させる。そのような事前ロードは、システムリソースを最適な使用にさせると共に、全てのプレイヤーが良好なゲームプレイ経験を有することを保証する。周期的なＱＯＳテストも、割り振られたデータセンタが、プレイヤーが満足するゲームプレイ経験のための最小のレイテンシによりインタラクションを行うことが可能であることを保証するように、十分なリソースを提供することが可能であることを保証する。
【００８２】
図６ａは、スケジュールされた時間にビデオゲームのゲームプレイを可能にするように、予めビデオゲームを事前ロードするために使用される様々な方法の動作を例示する。方法は、スケジュールされた時間におけるビデオゲームのゲームプレイのリクエストがユーザから検出されるとき、動作６１０において始まる。ユーザは、リクエストを開始したビデオゲームのプレイヤーである。リクエストは、ビデオゲームの識別子、及びスケジュールされた時間におけるビデオゲームのゲームプレイのために招待された複数のプレイヤーのアイデンティティを含む。動作６２０において例示されるように、リクエストに応答して、通知は、ゲームのゲームプレイに加わるようにプレイヤーを招待するリクエストにおいて識別された複数のプレイヤーに送信される。リクエストにおいて識別されたプレイヤーのうちの１人以上は、リクエストに応答してもよい。動作６３０において例示されるように、プレイヤーから受信されたリクエストへの応答は、クラウドゲーミングシステムにおいて評価される。プレイヤーのうちの何人かは、招待を受け付けてもよく、何人かの他のプレイヤーは、招待を拒否してもよい。動作６４０において例示されるように、クラウドゲーミングシステムが、プレイヤーの何人かがゲームプレイの招待を受け付けたことを検出するとき、クラウドゲーミングシステムは、予めビデオゲームを事前ロードすることを始める。事前ロードは、ゲームプレイが始まることになるポイントまで行われてもよい。例えば、前のゲームプレイの間に中断されたビデオゲームについて、ゲームが中断された場所になるポイントが定義されてもよい。ゲームプレイが始まることになるポイントの前にプレイされていなかったビデオゲームについては、そのゲームの最初からである。いくつかの実施形態では、前のゲームプレイの間に、ユーザのリクエストに基づいて中断されたビデオゲームであっても、スケジュールされた時間にゲームプレイを始めるポイントは、そのゲームの最初からとしてもよい。
【００８３】
図６ｂは、他の実施形態における、スケジュールされた時間にビデオゲームのゲームプレイを可能にするように、予めビデオゲームを事前ロードするために使用される様々な方法の動作を例示する。方法は、スケジュールされた時間の間にビデオゲームのゲームプレイのリクエストが第１プレイヤーから検出されるとき、動作６５０において始まる。リクエストは、第１プレイヤーによって開始され、ビデオゲームの識別子、及びビデオゲームが実行しているクラウドゲーミングシステムによってホストされたアプリケーションと現在オンラインでインタラクションを行っている他のプレイヤーのアイデンティティを含む。識別された他のプレイヤーは、第１プレイヤーとのビデオゲームのゲームプレイに現在関与していることがあり、第１プレイヤーは、ビデオゲームを現在プレイしている他のプレイヤーとの次のゲームプレイセッションを編成しようとしていることがある。代わりに、他のプレイヤーは、自分たちの間でビデオゲームをプレイしている他のプレイヤーに基づいて識別されてもよく、第１プレイヤーは、他のプレイヤーとのビデオゲームのゲームプレイに加わることを望む。いくつかの他の実施形態では、他のプレイヤーは、クラウドゲーミングシステム上の別のアプリケーションとの現在の関与に基づいて識別されてもよく、または現在オンラインであるが、別のアプリケーションとの前のインタラクションに基づいてもよい。
【００８４】
動作６６０において例示されるように、リクエストに応答して、通知は、ゲームのゲームプレイに加わる招待により現在オンラインである他のプレイヤーに送信される。リクエストにおいて識別されたプレイヤーのうちの１人以上は、リクエストに応答してもよい。動作６７０において例示されるように、プレイヤーから受信されたリクエストへの応答は、クラウドゲーミングシステムにおいて評価される。現在オンラインであるプレイヤーのうちの何人かは、招待を受け付けてもよく、何人かの他のプレイヤーは、招待を拒否してもよい。動作６８０において例示されるように、クラウドゲーミングシステムが、プレイヤーのうちの何人かがゲームプレイの招待を受け付けたことを検出するとき、クラウドゲーミングシステムは、ビデオゲームについてのゲームデータが事前ロードされる必要があるとき、スケジュールされた時間についての時間ウインドウを判定する。いくつかの実施形態では、時間ウインドウは、第１プレイヤー及び他のプレイヤーがゲームプレイを始めることを可能にするために、ゲームの複雑度に基づいて、及びどの程度ゲームデータが事前ロードされる必要があるかに基づいて、動的に判定されてもよい。他の実施形態では、時間ウインドウは、ビデオゲームに対して予め定義された静的な値であってもよい。
【００８５】
動作６９０において例示されるように、クラウドゲーミングシステムは、１つ以上のデータセンタ内の１つ以上のサーバを識別し、スケジュールされた時間に対して定義された時間ウインドウ内に開始して、ビデオゲームを事前ロードすることを始めるようにデータセンタを指示する信号をデータセンタに送信する。事前ロードは、ゲームプレイが始まるポイントまで行われ、ポイントは、ゲームが前に中断された場所であってもよく、または開始ポイントであってもよく、またはリクエストにおいて第１プレイヤーによって定義されたポイントであってもよい。ビデオゲームの事前ロードは、第１プレイヤー及び他の特定のプレイヤーがクラウドゲーミングシステムにアクセスし、リクエストにおいて定義されたポイントからビデオゲームのゲームプレイを再開するように時間内に完了される。
【００８６】
本明細書で議論される様々な実施形態は、ユーザ及びプレイヤーがゲームプレイのためにゲームにアクセスするときよりも前にゲームを事前ロードする方式を提供する。ビデオゲームの事前ロードは、ゲームが再開することになるポイントまでゲームをロードすることを待つ必要なく、プレイヤー及びユーザがビデオゲームのゲームプレイを即時に始めることを可能にする。更に、各々のプレイヤー（リクエストを開始したユーザを含む）に対するビデオゲームの事前ロードは、それぞれのプレイヤーがゲームプレイのためにゲームをセットアップするときに、システムがそれぞれのプレイヤーによって行われる入力を模倣した様々なルーチンについての入力を識別及び提供するにつれて、プレイヤーに対して特有である。プレイヤーによって行われる入力は、プレイヤーによって望まれるゲームカスタマイズ、ゲームの好みなどを含んでもよく、プレイヤーのスキルレベル、信用情報、ゲームの親密性などに基づいてもよい。通知の送信、プレイヤーからの応答の評価、及びユーザに対するビデオゲームの事前ロードは、ユーザによるゲームのゲームプレイのリクエストを検出したことに応答してクラウドゲーミングシステムによって自動で行われ、それらの動作の間にユーザからの更なる入力を必要としない。同様に、各々のプレイヤーに対するゲームの事前ロードは、プレイヤーが招待を受け付けたことに応答してシステムによって自動で実行され、それぞれのプレイヤーからの追加の入力を必要としない。スケジュールされた時間の直前に事前ロードを実行することは、クラウドゲーミングシステムが、ゲームがプレイされていないときの時間に処理及び通信リソースを保存することを可能にし、ゲームプレイがスケジュールされるときの時間のみシステムリソースを消費し、クラウドゲーミングシステムのリソースを割り当てる方式をより効率的にすると共に、ゲームプレイのためにゲームに即時にアクセスすることを可能にする。他の利点は、様々な実施形態を読んだ後に当業者にとって明らかになる。
【００８７】
図７は、異なるゲームへのアクセスを提供する際に使用されることができる情報サービスプロバイダアーキテクチャの実施形態を例示する。情報サービスプロバイダ（ＩＳＰ）１０７０は、ネットワーク１０８６を介して地理的に分散及び接続されたユーザ１０８２に多数の情報サービスを配信する。ゲームへの高速アクセスを提供することに関して様々な実施形態が議論されてきたが、実施形態は、１つ以上のタイプの他のサービスを提供するように拡張されることができる。例えば、ＩＳＰは、ゲームなどの１つのタイプのみのサービス、またはゲーム、株価の更新、ブロードキャストメディア、ニュース、スポーツ、ゲームなどの様々なサービスを配信することができる。加えて、各々のＩＳＰによって供給されるサービスは動的であってもよく、つまり、任意の時点でサービスが追加または取り除かれることができる。よって、特定の個人に特定のタイプのサービスを提供するＩＳＰは、時間の経過と共に変化することができる。例えば、ユーザは、故郷にいる間にユーザの近くのＩＳＰによってサービスされてもよく、ユーザは、異なる都市に移動しているときに異なるＩＳＰによってサービスされてもよい。故郷のＩＳＰは、接続モジュールを通じて、必要な情報及びデータをユーザのゲームまたはアクセスプロファイルから新しいＩＳＰに転送し、その結果、ユーザ情報が新しい都市までユーザに「追随」し、データをユーザにより近づけて、よりアクセスしやすくする。別の実施形態では、ユーザについての情報を管理するマスタＩＳＰと、マスタＩＳＰからの制御の下でユーザと直接的にインタフェースするサーバＩＳＰとの間で、マスタ−サーバ関係が確立されてもよい。別の実施形態では、クライアントが世界中を移動するにつれて（すなわち、ユーザに割り当てられたデータセンタの切り替えの間）、データが１つＩＳＰから別のＩＳＰに転送され、そのような転送は、ユーザにサービスするためにより良好な位置にあるＩＳＰを、これらのサービスを配信するＩＳＰとするため、それぞれのＩＳＰによって提供されるサービスの互換性に基づいてもよい。
【００８８】
ＩＳＰ１０７０は、ネットワークを通じて顧客にコンピュータベースのサービスを提供する、アプリケーションサービスプロバイダ（ＡＳＰ）１０７２を含む。ＡＳＰモデルを使用して提供されるソフトウェアは、オンデマンドソフトウェアまたはソフトウエアアズアサービス（ＳａａＳ）と呼ばれることもある。特定のアプリケーションプログラム（顧客関係管理など）へのアクセスを提供する簡単な形式は、ＨＴＴＰなどの標準プロトコルを使用することである。アプリケーションソフトウェアは、例えば、ベンダーのシステムに常駐し、ＨＴＭＬを使用するウェブブラウザを通じて、ベンダーによって提供された専用クライアントソフトウェアによって、またはシンクライアントなどの他のリモートインターフェイスを介してユーザによってアクセスされる。
【００８９】
広い地理的地域を通じて配信されるサービスは、クラウドコンピューティングを使用することが多い。クラウドコンピューティングは、動的スケーラブルで、仮想化されたリソースがインターネット上のサービスとしてしばしば提供されるコンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」のテクノロジインフラストラクチャの専門家である必要はない。クラウドコンピューティングは、インフラストラクチャアズアサービス（ＩａａＳ）、プラットフォームアズアサービス（ＰａａＳ）、及びソフトウエアアズアサービス（ＳａａＳ）などの異なるサービスに分けられることができる。クラウドコンピューティングサービスは、ウェブブラウザからアクセスされる共通のビジネスアプリケーションをオンラインでしばしば提供し、ソフトウェア及びデータはサーバに格納される。クラウドという用語は、インターネットがコンピュータネットワーク図にどのように描かれているかに基づいて（例えば、サーバ、ストレージ、及びロジックを使用する）インターネットのメタファとして使用され、メタファが隠す複雑なインフラストラクチャの抽象的概念である。
【００９０】
更に、ＩＳＰ１０７０は、シングル及びマルチプレイヤービデオゲームをプレイするためにゲームクライアントによって使用されるゲーム処理サーバ（ＧａＰＳ）１０７４を含む。インターネット上でプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームはプレイヤーからのデータを収集し、それを他のプレイヤーに配布する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホストするには別のサーバが必要となる。別の実施形態では、ＧａＰＳは、プレイヤーとそれぞれのゲームプレイデバイスとの間の通信を確立し、集中ＧａＰＳに頼ることなく情報を交換する。
【００９１】
専用ＧａＰＳは、クライアントとは独立して実行されるサーバである。そのようなサーバは、通常、データセンタに配置された専用ハードウェアで実行され、より多くの帯域幅と専用の処理能力を提供する。専用サーバは、ほとんどのＰＣベースのマルチプレイヤーゲームのためのゲームサーバをホストするのに適した方法である。多人数参加型オンラインゲームは、通常ゲームタイトルを所有するソフトウェア会社がホストする専用サーバで実行され、コンテンツを制御及び更新することができる。
【００９２】
放送処理サーバ（ＢＰＳ）１０７６は、視聴者にオーディオまたはビデオ信号を分配する。非常に狭い範囲の視聴者への放送はナローキャスティングと呼ばれることもある。放送配信の最終工程は、信号が聴取者または視聴者にどのように到達するかであり、ラジオ局またはテレビ局と同様にアンテナ及び受信機に放送され得るか、局を介してケーブルテレビまたはケーブルラジオ（または「無線ケーブル」）を経由してまたはネットワークから直接放送され得る。インターネットはまた、特に、信号及び帯域幅を共有できるマルチキャストを使用して、ラジオまたはテレビのいずれかを受信者に届け得る。歴史的に、放送は、全国放送または地域放送などの地理的領域によって区切られている。しかしながら、高速インターネットの普及に伴い、コンテンツは世界のほぼ全ての国に到達可能なため、放送は地域によって定義されない。
【００９３】
ストレージサービスプロバイダ（ＳＳＰ）１０７８は、コンピュータストレージ空間及び関連する管理サービスを提供する。ＳＳＰは定期的なバックアップとアーカイブも提供する。ストレージをサービスとして提供することにより、ユーザは必要に応じてより多くのストレージを注文できる。その他の大きな利点は、ＳＳＰにバックアップサービスが含まれており、コンピュータのハードドライブに障害が発生してもユーザが全てのデータを失うことがないことである。更に、複数のＳＳＰは、ユーザデータの全部または一部のコピーを有することができ、ユーザがどこにいるか、またはデータにアクセスするために使用されているデバイスとは無関係に、ユーザは効率的な方法でデータにアクセスすることができるようになる。例えば、ユーザは、移動中に自宅のコンピュータ及び携帯電話内の個人ファイルにアクセスすることができる。
【００９４】
通信プロバイダ１０８０は、ユーザに接続性を提供する。通信プロバイダの１つの種類は、インターネットへのアクセスを提供するインターネットサービスプロバイダ（ＩＳＰ）である。ＩＳＰはダイヤルアップ、ＤＳＬ、ケーブルモデム、光ファイバ、無線、または専用の高速インターコネクトなどのインターネットプロトコルデータグラムの配信に適したデータ伝送技術を使用して顧客を接続する。通信プロバイダは、電子メール、インスタントメッセージング、及びＳＭＳテキストメッセージなどのメッセージングサービスも提供することができる。通信プロバイダの別の種類は、インターネットへの直接のバックボーンアクセスを提供することによって、帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ（ＮＳＰ）である。ネットワークサービスプロバイダは、電気通信会社、データ通信業者、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などで構成され得る。
【００９５】
データ交換１０８８は、ＩＳＰ１０７０内部のいくつかのモジュールを相互接続し、ネットワーク１０８６を介してこれらのモジュールをユーザ１０８２に接続する。データ交換１０８８は、ＩＳＰ１０７０の全てのモジュールが近接している小さな領域をカバーすることができ、または異なるモジュールが地理的に分散している場合に大きな地理的領域をカバーすることができる。例えば、データ交換１０８８は、データセンタのキャビネット内に高速ギガビットイーサネット（登録商標）（またはより高速）、または大陸間仮想エリアネットワーク（ＶＬＡＮ）を含むことができる。
【００９６】
ユーザ１０８２は、少なくともＣＰＵ、メモリ、ディスプレイ、及びＩ／Ｏを含む、クライアントデバイス１０８４によりリモートサービスにアクセスする。クライアントデバイスは、ＰＣ、携帯電話、ネットブック、タブレット、ゲームシステム、ＰＤＡなどとすることができる。一実施形態では、ＩＳＰ１０７０は、クライアントによって使用されるデバイスのタイプを認識し、使用される通信方法を調整する。他のケースでは、クライアントデバイスは、ＨＴＭＬなどの標準的な通信方法を使用して、ＩＳＰ１０７０にアクセスする。
【００９７】
本発明の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む様々なコンピュータシステム構成により実施されてもよい。本発明はまた、有線ベースまたは無線ネットワークを通じてリンクされる、リモート処理デバイスによってタスクが実行される、分散型コンピューティング環境で実践されることができる。
【００９８】
上記の実施形態を念頭に置いて、本発明は、コンピュータシステムに記憶されたデータを含む様々なコンピュータ実施動作を使用することができることを理解されるべきである。これらの動作は、物理量の物理的操作を必要とする動作である。本発明の一部を形成する本明細書に記載されているいずれの動作も有用な機械動作である。本発明はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要とされる目的のために特別に構成することができ、または装置は、コンピュータに格納されたコンピュータプログラムによって選択的に起動または構成された汎用コンピュータとすることができる。具体的には、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用機械を使用することができ、または必要とされる動作を実行するより特殊化した装置を構築する方がより便利であり得る。
【００９９】
本発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして実施されてもよい。代わりに、コンピュータ可読コードは、上記説明されたデータ交換相互接続を使用してサーバからダウンロードされてもよい。コンピュータ可読媒体は、データを記憶することができる任意のデータストレージデバイスであり、データは、その後、コンピュータシステムによって読み取ることができる。コンピュータ可読媒体の例は、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、リードオンリメモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、並びに他の光学及び非光学データストレージデバイスを含む。コンピュータ可読媒体は、コンピュータ可読コードが分散方式で格納され、実行されるように、ネットワーク結合コンピュータシステム上に分散されるコンピュータ可読有形媒体を含むことができる。
【０１００】
方法動作が特定の順序で説明されているが、他のハウスキーピング操作が動作の間に実行されてもよく、または動作が、わずかに異なる時間に生じるように調整されてもよく、もしくはオーバーレイ動作の処理が所望の方法で実行される限り、処理と関連付けられた様々な間隔において処理動作の発生を可能にするシステムに分散されてもよいことを理解されるべきである。
【０１０１】
前述の発明は、理解を明確にするために幾分詳細に説明してきたが、添付の特許請求の範囲内で特定の変更及び修正が実践されることができることが明らかである。したがって、本実施形態は、例示的であり、限定的ではないと見なされるべきであり、本発明は本明細書で与えられた詳細に限定されるものではなく、説明される実施形態の範囲及び均等物内で修正されてもよい。
【０１０２】
ゲーミングコンソールの例示的な全体的なシステムアーキテクチャが本明細書で説明される。実施例のゲーミングコンソールは、本発明の実施形態を実装するためのコントローラと互換性を有することができる、Ｓｏｎｙ（登録商標）Ｐｌａｙｓｔａｔｉｏｎ３（登録商標）（ＰＳ３）またはＰｌａｙｓｔａｔｉｏｎ４（登録商標）（ＰＳ４）エンターテインメントデバイスを含んでもよい。ＰＳ３ゲーミングコンソールシステムアーキテクチャが詳細に説明されるが、本明細書で説明される様々な実施形態が、異なるゲーミングコンソールまたはコンピューティングデバイスのシステムアーキテクチャに拡張されることができることに留意されるべきである。システムユニットに接続可能な様々な周辺機器デバイスを有するシステムユニットが提供される。システムユニットは、図１のクラウドゲーミングシステム３００と同様である。システムユニットは、ＰＳ３にあるような８コアプロセッサ、またはＰＳ４にあるようなマルチコアプロセッサとすることができる、プロセッサ、ＰＳ３にあるようなＲａｍｂｕｓ（登録商標）ダイナミックランダムアクセスメモリ（ＸＤＲＡＭ）ユニット、またはＰＳ４にあるようなＧＤＤＲ５などのグラフィックダイナミックランダムアクセスメモリ、ＰＳ３にあるような専用ビデオランダムアクセスメモリ（ＶＲＡＭ）ユニットを有するＲｅａｌｉｔｙ  Ｓｙｎｔｈｅｓｉｚｅｒグラフィックユニット（例えば、５５０ＭＨｚ  ＧＰＵ）、またはＰＳ４及びＰＳ４  Ｐｒｏにおける共有グラフィックメモリを有する８００もしくは９００ＭＨｚ  ＧＰＵ、並びにＩ／Ｏブリッジを含む。システムユニットはまた、Ｉ／Ｏブリッジを通じてアクセス可能な、ディスク及び着脱可能スロットインハードディスクドライブ（ＨＤＤ）から読み出すためのＢｌｕＲａｙ（登録商標）ディスクリードオンリメモリ（ＢＤ−ＲＯＭ（登録商標））（光学）ディスクリーダを含む。任意選択で、システムユニットはまた、Ｉ／Ｏブリッジを通じて同様にアクセス可能な、コンパクトフラッシュ（登録商標）メモリカード及びメモリスティック（登録商標）メモリカードなどを読み出すためのメモリカードリーダ、並びに、ＰＳ４では、ゲームを記録するためのビルトインＤＶＲを含む。
【０１０３】
Ｉ／Ｏブリッジはまた、６個のユニバーサルシリアルバス（ＵＳＢ）２．０ポート、ギガビットイーサネット（登録商標）ポート、ＩＥＥＥ（登録商標）８０２．１１ｂ／ｇ無線ネットワーク（Ｗｉ−Ｆｉ）ポート、及び最大で７個のＢｌｕｅｔｏｏｔｈ（登録商標）接続をサポートできるＢｌｕｅｔｏｏｔｈ（登録商標）無線リンクポートに接続する。
【０１０４】
動作中、Ｉ／Ｏブリッジは、１つ以上のゲームコントローラ（ＰＳ３にあるようなＤｕａｌＳｈｏｃｋ３コントローラ、またはＰＳ４にあるようなＰＳ４  ＤｕａｌＳｈｏｃｋ４コントローラなど）からのデータを含む、全ての無線、ＵＳＢ、及びイーサネット（登録商標）データを扱う。例えば、ユーザがゲームをプレイしているとき、Ｉ／Ｏブリッジは、Ｂｌｕｅｔｏｏｔｈ（登録商標）リンクを介してゲームコントローラからデータを受信し、それをプロセッサ（ＰＳ３における）またはマルチコアプロセッサ（ＰＳ４における）へと送り、プロセッサまたはマルチコアプロセッサは、それに従ってゲームの現在の状態を更新する。更に、他の画像及び動画センサは、ユーザのゲームプレイの間に捕捉されたデータをＩ／Ｏブリッジに提供し、Ｉ／Ｏブリッジは、それぞれのプロセッサに送る。ゲームコントローラ（例えば、ＰＳ４のゲームコントローラ）は、ゲームを共有するための共有ボタンオプション、クリック可能タッチパッド、再充電可能バッテリ（リチウムイオンまたは他のタイプ）などを含む。
【０１０５】
無線、ＵＳＢ、及びイーサネット（登録商標）ポートはまた、リモコン、キーボード、マウス、Ｓｏｎｙ  Ｐｌａｙｓｔａｔｉｏｎ  Ｐｏｒｔａｂｌｅ（登録商標）エンターテインメントデバイスなどのポータブルエンターテインメントデバイス、ＥｙｅＴｏｙ（登録商標）ビデオカメラなどのビデオカメラ、マイクロフォンヘッドセット、及び着脱可能ハードドライブなど、ゲームコントローラに加えて他の周辺機器デバイスに対して接続性を提供する。したがって、そのような周辺機器デバイスは、原則として、無線でシステムユニットに接続されてもよく、例えば、ポータブルエンターテインメントデバイスは、Ｗｉ−Ｆｉアドホック接続を介して通信してもよく、マイクロフォンヘッドセットは、Ｂｌｕｅｔｏｏｔｈ（登録商標）リンクを介して通信してもよい。
【０１０６】
それらのインタフェースのプロビジョニングは、Ｐｌａｙｓｔａｔｉｏｎ３デバイスも潜在的にはデジタルビデオレコーダ（ＤＶＲ）、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤー、ボイスオーバＩＰ電話、携帯電話、プリンタ、及びスキャナなどの他の周辺機器デバイスとの互換性を有することを意味する。
【０１０７】
加えて、レガシーメモリカードリーダは、ＵＳＢポートを介してシステムユニットに接続されてもよく、Ｐｌａｙｓｔａｔｉｏｎ（登録商標）またはＰｌａｙｓｔａｔｉｏｎ２（登録商標）デバイスによって使用される種類のメモリカードの読み出しを可能にする。
【０１０８】
本実施形態では、ゲームコントローラは、Ｂｌｕｅｔｏｏｔｈ（登録商標）リンクを介してシステムユニットと無線で通信するように動作可能である。しかしながら、ゲームコントローラは代わりに、ＵＳＢポートに接続されることができ、それによって、ゲームコントローラのバッテリを充電する電力も提供する。１つ以上のアナログジョイスティック及び従来の制御ボタンに加えて、ゲームコントローラは、各々の軸における転換及び回転に対応する、６個の自由度における動きに敏感である。その結果として、ゲームコントローラのユーザによるジェスチャ及び移動は、従来のボタンまたはジョイスティックコマンドに加えてまたはそれらの代わりに、ゲームへの入力として転換される。任意選択で、Ｐｌａｙｓｔａｔｉｏｎ（商標）ポータブルデバイスなどの他の無線対応可能な周辺機器デバイスがコントローラとして使用されてもよい。Ｐｌａｙｓｔａｔｉｏｎ（商標）ポータブルデバイスのケースでは、追加のゲームまたは制御情報（例えば、制御命令またはライブの数）は、デバイスのスクリーン上で提示されてもよい。ダンスマット（図示せず）、ライトガン（図示せず）、ハンドル及びペダル（図示せず）、または即答クイズゲームのための１つまたは複数の大型のボタン（これも図示せず）などの特注品のコントローラなど、他の代替的または補助的制御装置も使用されてもよい。
【０１０９】
リモコンも、Ｂｌｕｅｔｏｏｔｈ（登録商標）リンクを介してシステムユニットと無線で通信するように動作可能である。リモコンは、ＢｌｕＲａｙ（商標）ディスクＢＤ−ＲＯＭリーダの操作及びディスクの内容閲覧のために適した制御を備える。
【０１１０】
ＢｌｕＲａｙ（商標）ディスクＢＤ−ＲＯＭリーダは、従来の記録済みコンパクトディスク（ＣＤ）、記録可能なＣＤ、及びいわゆるスーパーオーディオＣＤに加えて、Ｐｌａｙｓｔａｔｉｏｎ及びＰｌａｙＳｔａｔｉｏｎ２デバイスとの互換性を有するコンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）を読み出すように動作可能である。ＢｌｕＲａｙ（商標）ディスクＢＤ−ＲＯＭリーダも、従来の記録済みＤＶＤ及び記録可能なＤＶＤに加えて、Ｐｌａｙｓｔａｔｉｏｎ２（商標）及びＰｌａｙＳｔａｔｉｏｎ３（商標）デバイスとの互換性を有するデジタル多用途ディスクリードオンリメモリ（ＤＶＤ−ＲＯＭ）を読み出すように動作可能である。ＢｌｕＲａｙ（商標）ディスクＢＤ−ＲＯＭリーダは更に、従来の記録済みブルーレイディスク及び記録可能なブルーレイディスクと共に、Ｐｌａｙｓｔａｔｉｏｎ３デバイスとの互換性を有するＢＤ−ＲＯＭを読み出すように動作可能である。
【０１１１】
システムユニットは、Ｒｅａｌｉｔｙ  Ｓｙｎｔｈｅｓｉｚｅｒグラフィックユニットを介して、プレイステーション３デバイスまたはＰｌａｙｓｔａｔｉｏｎ４デバイスによって生成または復号された音声及びビデオを、音声コネクタ及びビデオコネクタ経由で、ディスプレイ及び１つ以上のスピーカを備えた表示及び音声出力装置（モニタまたはテレビ受像機など）に提供するように動作可能である。音声コネクタは、従来のアナログ及びデジタル出力を含んでもよく、ビデオコネクタは、コンポーネントビデオ、Ｓビデオ、コンポジットビデオ、及び１つ以上の高解像度マルチメディアインタフェース（ＨＤＭＩ（登録商標））出力を様々に含んでもよい。その結果として、ビデオ出力は、ＰＡＬもしくはＮＴＳＣなどのフォーマットにあってもよく、または７２０ｐ、１０８０ｉ、もしくは１０８０ｐの高解像度及び４Ｋ、ＨＤＲにあってもよい。
【０１１２】
音声処理（生成及び復号など）は、プロセッサによって実行される。例えば、Ｐｌａｙｓｔａｔｉｏｎ３デバイスのオペレーティングシステムは、Ｄｏｌｂｙ（登録商標）５．１サラウンドサウンド、Ｄｏｌｂｙ（登録商標）シアターサラウンド（ＤＴＳ）、及びＢｌｕ−Ｒａｙ（登録商標）ディスクからの７．１サラウンドサウンドの復号をサポートする。
【０１１３】
本実施形態では、ビデオカメラは、（電荷結合素子（ＣＣＤ）画像センサも使用されてもよいが）ＣＭＯＳ（相補型金属酸化膜半導体）画像センサ、ＬＥＤインジケータ、並びにハードウェアベースのリアルタイムデータ圧縮及び符号化装置を含み、圧縮ビデオデータがシステムユニットによる復号のために、イントラ画像ベースのＭＰＥＧ（ｍｏｔｉｏｎ  ｐｉｃｔｕｒｅ  ｅｘｐｅｒｔ  ｇｒｏｕｐ）標準などの適切なフォーマットにおいて送信され得る。カメラＬＥＤインジケータは、例えば、不利な照明条件を示す適切な制御データをシステムユニットから受け取ると、発光するように配置されている。ビデオカメラの実施形態は、ＵＳＢ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ通信ポートを介してシステムユニットに様々な方法で接続されてもよい。ビデオカメラの実施形態は、１つ以上の関連するマイクロフォンを含んでおり、また、音声データを送信することができる。ビデオカメラの実施形態では、ＣＣＤは、高解像度ビデオの捕捉に対して適切な分解能を有してもよい。使用中、ビデオカメラによって捕捉された画像は、例えば、ゲーム内に組み込まれてもよく、ゲーム制御入力として解釈されてもよい。
【０１１４】
一般に、システムユニットの通信ポートのうちの１つを介して、ビデオカメラまたはリモコンなどの周辺機器デバイスによりデータ通信がうまく行われるように、デバイスドライバなどの適切なソフトウェアが提供されるべきである。デバイスドライバ技術は公知であり、ここで詳細に説明しないが、デバイスドライバまたは同様のソフトウェアインタフェースが、記載する本実施形態で必要とされ得ることを当業者は理解する。
【０１１５】
プロセッサは、メモリコントローラ及びデュアルバスインタフェースコントローラを含む外部入力及び出力構造、電力処理エレメントと称されるメインプロセッサ、シナジスティックプロセッシングエレメント（ＳＰＥ）と称される８基のコプロセッサ、及びエレメント相互接続バスと称される上記構成要素を接続する環状データバス、の４個の基本構成要素、を備えたアーキテクチャを有する。プロセッサの総浮動小数点性能は、Ｐｌａｙｓｔａｔｉｏｎ２デバイスのエモーションエンジンの６．２ＧＦＬＯＰと比較して、２１８ＧＦＬＯＰＳである。
【０１１６】
パワープロセッシングエレメント（ＰＰＥ）は、３．２ＧＨｚの内部クロックにより動作する双方向同時マルチスレッディングＰｏｗｅｒ準拠のＰＣコア（ＰＰＵ）に基づいている。それは、５１２ｋＢレベル２（Ｌ２）キャッシュ及び３２ｋＢレベル１（Ｌ１）キャッシュを含む。ＰＰＥは、３．２ＧＨｚにおいて２５．６ＧＦＬＯＰに転換する、クロックサイクルごとに８つの単一位置操作ができる。ＰＰＥの主要な役割は、演算作業負荷の大部分を処理するシナジスティックプロセッシングエレメントのコントローラとして機能することにある。動作中、ＰＰＥは、ジョブキューを保持し、シナジスティックプロセッシングエレメントのジョブをスケジュールしており、その進捗を監視する。その結果として、各シナジスティックプロセッシングエレメントはカーネルを実行し、その役割は、ジョブを取り出して、これを実行し、ＰＰＥと同期することにある。
【０１１７】
各々のシナジスティックプロセッシングエレメント（ＳＰＥ）は、シナジスティックプロセッシングユニット（ＳＰＵ）及びメモリフローコントローラ（ＭＦＣ）をそれぞれ含み、ＭＦＣは、ダイナミックメモリアクセスコントローラ（ＤＭＡＣ）、メモリ管理ユニット（ＭＭＵ）、及びバスインタフェース（図示せず）をそれぞれ含む。各々のＳＰＵは、３．２ＧＨｚで動作し、原則として４ＧＢに拡張可能な、２５６ｋＢのローカルＲＡＭを含むＲＩＳＣプロセッサである。各々のＳＰＥは、単精度性能の理論的な２５．６ＧＦＬＯＰＳを示す。１つのＳＰＵは、１クロックサイクルに、４つの単精度浮動小数点部、４つの３２ビット数、８つの１６ビット整数または１６の８ビット整数を処理することができる。同一のクロックサイクルにおいて、メモリ操作も実行することができる。ＳＰＵは、システムメモリＸＤＲＡＭ１４２６に直接アクセスせず、ＳＰＵによって形成された６４ビットアドレスはＭＦＣに渡され、ＭＦＣが、自身のＤＭＡコントローラに対して、エレメント相互接続バス及びメモリコントローラを介してメモリにアクセスするように指示する。
【０１１８】
エレメント相互接続バス（ＥＩＢ）は、上記プロセッサ素子、すなわちＰＰＥ、メモリコントローラ、デュアルバスインタフェース、及び８基のＳＰＥ、合計して１２個のパーティシパント（Participant：構成要素）を接続するプロセッサへの内部の論理的には環状の通信バスである。パーティシパントは、クロックサイクルごとに８バイトのレートにおいてバスへの読み出し及び書き込みを同時に行うことができる。前に述べられたように、各々のＳＰＥは、より長い読み出し及び書き込みシーケンスをスケジュールのためのＤＭＡＣを含む。ＥＩＢは、４つのチャネルを備え、そのうち２つは時計回り方向であり、残り２つは反時計回り方向である。その結果として、１２のパーティシパントについて、２つのパーティシパント間のステップ方式の最長のデータフローは、適切なディレクションによって６ステップとなる。したがって、パーティシパント間でアービトレーションが行われて完全な利用度が実現されると、１２のスロットの理論上のピーク瞬間ＥＩＢ帯域幅は、１クロックにつき９６Ｂとなる。これは、３．２ＧＨｚ（ギガヘルツ）のクロックレートにおける３０７．２ＧＢ／ｓ（ギガバイト／秒）の理論上のピーク帯域幅に等しい。
【０１１９】
メモリコントローラは、Ｒａｍｂｕｓ  Ｉｎｃｏｒｐｏｒａｔｅｄによって開発されたＸＤＲＡＭインタフェースを含む。メモリコントローラは、２５．６ＧＢ／ｓの理論上のピーク帯域幅を有するＲａｍｂｕｓ  ＸＤＲＡＭ１４２６とインタフェースする。
【０１２０】
デュアルバスインタフェースは、Ｒａｍｂｕｓ  ＦｌｅｘＩＯ（登録商標）システムインタフェースを含む。インタフェースは、５の経路が受信用、７つの経路が送信用である、各々が８ビット幅である１２個のチャネルに編成される。これにより、プロセッサと、コントローラを介してＩ／Ｏブリッジ間、及びコントローラを介してＲｅａｌｉｔｙ  Ｓｉｍｕｌａｔｏｒグラフィックユニット間で、理論上のピーク帯域幅が６２．４ＧＢ／ｓ（送信３６．４ＧＢ／ｓ、受信２６ＧＢ／ｓ）が得られる。
【０１２１】
Ｒｅａｌｉｔｙ  Ｓｙｎｔｈｅｓｉｚｅｒグラフィックユニットにプロセッサによって送信されるデータは通常、表示リストが含まれ、これは、頂点を描画したり、ポリゴンにテクスチャを貼り付けたり、照明条件を指定するなどための一連のコマンドである。
【０１２２】
実施形態は、現実世界ユーザをより正確に識別し、アバターまたはシーンの活動を案内するための深度データを捕捉することを含んでもよい。オブジェクトは、人が保持している物体であっても、または人の手であってもよい。この説明では、用語「深度カメラ」及び「三次元カメラ」は、距離情報すなわち深度情報を取得することができる任意のカメラを指す。例えば、深度カメラは、距離情報を取得するために制御された赤外線照明を利用することができる。別の例示的な深度カメラは、立体カメラ対があり、これは２台の基準カメラを使用して距離情報を三角測量によって求める。同様に、用語「深度検知装置」は、距離情報と共に二次元画素情報を取得できるいずれかのタイプのデバイスを指す。
【０１２３】
三次元画像における最新の進歩により、リアルタイムのインタラクティブコンピュータのアニメーションの可能性が広がっている。特に、新たな「深度カメラ」は、標準的な二次元ビデオ画像に加えて三次元を捕捉及びマッピングする能力を提供する。新たな深度データにより、本発明の実施形態は、他のオブジェクトの背後を含む、ビデオシーン内の様々な場所にあるコンピュータにより生成されたオブジェクトの配置をリアルタイムで可能にする。
【０１２４】
その上、本発明の実施形態は、ユーザに対してリアルタイムのインタラクティブゲーム体験を提供する。例えば、ユーザは、コンピュータにより生成した様々なオブジェクトとリアルタイムでインタラクションを行うことができる。更に、ビデオシーンは、ユーザの経験を高めるようにリアルタイムで変更することができる。例えば、コンピュータにより生成されたコスチュームを、ユーザの服の上にはめ込んだり、コンピュータが生成した光源を利用して、ビデオシーン内に仮想の影を表示させることができる。よって、本発明の実施形態及び深度カメラを使用して、ユーザは、自分のリビングルーム内でインタラクティブ環境を経験することができる。通常のカメラと同様に、深度カメラは、ビデオ画像を含む複数の画素についての二次元データを捕捉する。これらの値は、画素についての色値、通常は、各々の画素についての赤、緑、及び青（ＲＧＢ）の値である。この方式では、カメラによって捕捉されたオブジェクトは、モニタ上では二次元オブジェクトのように見える。
【０１２５】
本発明の実施形態はまた、分散画像処理構成を考慮する。例えば、本発明は、１つの場所（ＣＰＵなど）や２つの場所（ＣＰＵと他の１つの素子など）で行われる捕捉された画像及び表示画像処理に限定されない。例えば、入力画像処理は、処理を実行することができる関連のＣＰＵ、プロセッサまたは装置において容易に行うことができ、基本的には、画像処理の全てを、相互接続システム全体に分散させることができる。よって、本発明は、いずれかの特定の画像処理ハードウェア回路及び／またはソフトウェアに限定されない。本明細書で説明される実施形態は、汎用ハードウェア回路及び／またはソフトウェアのいずれかの特定の組み合わせにも、処理構成要素によって実行される命令についてのいずれの特定のソースにも限定されない。
【０１２６】
上記実施形態を考慮して、本発明は、コンピュータシステムに記憶されたデータを伴う様々なコンピュータにより実施される動作を使用してもよいことが理解されるべきである。これらの動作は、物理量の物理操作を必要とする動作を含む。通常、必須ではないが、これらの量は、記憶され、移転され、組み合わされ、比較され、そうでない場合、操作が可能な電気または磁気信号の形式をとる。更に、実行される操作は、作成すること、識別すること、判定すること、または比較することを指すことが多い。
【０１２７】
上記説明された発明は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、ミニコンピュータ、及びメインフレームコンピュータなどを含む他のコンピュータシステム構成により実践されてもよい。本発明はまた、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実践されてもよい。
【０１２８】
発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして実施されてもよい。コンピュータ可読媒体は、電磁搬送波を含む、後にコンピュータシステムによって読み取ることができるデータを記憶できる任意のデータ記憶装置である。コンピュータ可読媒体の例は、ソリッドステートドライブ（ＳＳＤ）、ハードディスクドライブ（ＨＤＤ）、デジタルビデオディスク（ＤＶＤ）ドライブ、Ｂｌｕｒａｙ（登録商標）などのハードドライブ、ネットワークアタッチドストレージ（ＮＡＳ）、リードオンリメモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、並びに他の光学及び非光学データ記憶装置を含む。コンピュータ可読媒体はまた、コンピュータ可読コードが分散方式で記憶及び実行されるように、ネットワーク結合コンピュータシステム上に分散されることができる。
【０１２９】
前述の発明は、理解を明確にするためにある程度詳細に説明されてきたが、変更及び修正が添付の請求項の範囲内で実践されてもよいことが明らかである。したがって、本実施形態は例示的であって限定的ではないと見なされるべきであり、本発明は、本明細書において与えられた詳細に限定されるものではなく、添付の請求項の範囲及び均等物の範囲内で修正されてもよい。
【図１】
0006982684.tif 000002
【図２】
0006982684.tif 000003
【図３】
0006982684.tif 000004
【図４】
0006982684.tif 000005
【図５】
0006982684.tif 000006
【図６ａ】
0006982684.tif 000007
【図６ｂ】
0006982684.tif 000008
【図７】
0006982684.tif 000009