以下の説明では、本開示の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。しかしながら、本開示はこれらの特定の詳細事項の一部または全てを伴うことなく実施され得ることが当業者には明らかであるだろう。他の例では、本開示を不明瞭にしないために、周知のプロセスステップは詳細には記載されない。
ゲームタイトルに対するユーザ要求が受信されると、クラウドゲーミングサイトに関連するデータセンタ内のサーバ(複数可)によって、いくつかの動作が行われる。クラウドゲーミングサイトがユーザ要求を受信すると、選択されたゲームタイトルに関連するゲームをホストするデータセンタが識別され、選択されたゲームタイトルのためにゲームをインスタンス化する要求が識別されたデータセンタに送信される。この要求に応答して、データセンタのサーバは、ゲームコードを識別し、識別されたゲームコードをロードし、ゲームコンテンツをユーザに提示するための準備としてゲームコードに関するファイルを初期化する。ゲームに関連するゲームデータは、汎用ゲームデータ及びユーザ専用ゲームデータを含む。したがって、ファイルを初期化することは、汎用ゲームデータ及びユーザ専用ゲームデータの識別、ロード及び初期化を含む。汎用ゲームデータの初期化には、グラフィックスエンジンの初期化、グラフィックスデータのインストール、サウンドファイルの初期化、アートワークのインストールなどが含まれてよい。ユーザ専用データの初期化は、ユーザデータ、ユーザ履歴、ゲーム履歴などの配置、送信及びインストールが含まれてよい。汎用ゲームデータ及び/またはユーザ専用データのロードは、ゲーム/ゲームのグラフィックスの複雑さに応じて、数秒から数分かかり得る。
汎用ゲームデータがロードされて初期化されている間に、クライアントデバイスでレンダリングするために「スプラッシュ」画面が提供され得る。スプラッシュ画面は、ロードされているゲームの代表的な画像を提供するように設計でき、これによって、ユーザはロードされているゲームの種類をプレビューすることができる。汎用ゲームデータがロードされると、音声コンテンツがレンダリングされ、ユーザ選択/カスタマイズのための選択/ナビゲーション画面が提示される。選択/ナビゲーション画面で提供されるユーザ選択入力は、ゲームレベル選択、ゲームアイコン(複数可)選択、ゲームモード選択、ゲームウィニング、追加のゲームコンテンツのアップロードを必要とし得る他のユーザ関連データを含み得る。ユーザ選択入力のアップロードは、ゲームコンテンツがゲームプレイのためにユーザに利用可能になる前に、追加の遅延を発生させる可能性がある。いくつかの実施形態では、ゲームコンテンツは、視聴及び対話のために、ゲームクラウドシステムからユーザのコンピューティングデバイスにゲームコンテンツをストリーミングすることによって利用可能になる。ユーザ専用データをロードした後に、ゲームコンテンツはゲームプレイに対して利用可能になる。
図1Aは、クラウドゲーミングサイトを通じて利用可能なゲームのゲームファイルをロードするために使用されるシステム例を例示する。このシステムは、インターネットなどのネットワーク102を介してクラウドゲーミングサイト104に通信可能に接続されている複数のクライアントデバイス100を含む。クラウドゲーミングサイト104へのアクセス要求がクライアントデバイス100から受信されると、クラウドゲーミングサイト104は、ユーザデータストア108に記憶されたユーザアカウント情報106にアクセスして、クライアントデバイスに関連するユーザを識別し、そのクライアントデバイスを通じて要求が開始される。いくつかの実施形態では、クラウドゲーミングサイトは、表示/プレイの権限がユーザに与えられている全てのゲームを決定するために、識別されたユーザを確認してもよい。ユーザアカウントの識別/確認の後、クラウドゲーミングサイトは、ゲームタイトルデータストア110にアクセスして、要求を開始しているユーザアカウントがゲームクラウドサイトにおいて利用可能なゲームタイトルを特定する。ゲームタイトルデータストア110は、次に、ゲームデータベース112と対話して、クラウドゲーミングサイトで利用可能な全てのゲームのゲームタイトルを取得する。新しいゲームが導入されると、ゲームデータベース112はゲームコードで更新され、ゲームタイトルデータストア110には新しく導入されたゲームのゲームタイトル情報が提供される。要求が開始されたクライアントデバイスは、要求が開始されたときに、クラウドゲーミングサイトに登録されていても、登録されていなくてもよい。要求を開始しているクライアントデバイスのユーザが登録ユーザではない場合、クラウドゲーミングサイトはそのユーザを新規ユーザとして識別し、新規ユーザに適したゲームタイトル(例えば、ゲームタイトルのデフォルトセット)を選択してよい。識別されたゲームタイトルは、図1Aに示す通り、ディスプレイ画面100−a上に提示するためにクライアントデバイスに返送される。
クライアントデバイス上にレンダリングされたゲームタイトルのうちの1つにおけるユーザ対話が検出され、クラウドゲーミングサイトに信号が送信される。この信号は、ユーザ対話が検出されたゲームタイトル情報及びゲームタイトルに登録されたユーザ対話を含む。クライアントデバイスから受信した信号に応答して、クラウドゲーミングサイトは、ゲームがホストされているデータセンタを先行して判断し、識別されたデータセンタに信号を送信して、ユーザ対話が検出されるゲームタイトルに関連するゲームをロードする。いくつかの実施形態では、2つ以上のデータセンタがゲームをホストしてよい。このような実施形態では、クラウドゲーミングサイトは、要求を開始しているクライアントデバイスの地理的位置を決定し、クライアントデバイスに地理的に近接しているデータセンタを識別し、そのデータセンタに信号を送信してゲームをプリロードしてよい。ユーザの地理的位置は、いくつか例を挙げると、クライアントデバイス内の全地球測位システム(GPS)機構、クライアントのIPアドレス、クライアントのピング情報を使用して決定されてよい。当然のことながら、ユーザの地理的位置を検出する上述の方法は例に過ぎず、他の種類の機構またはツールを使用してユーザの地理的位置を決定してよい。クライアントデバイスに近いデータセンタの識別により、ゲームとのユーザ対話中に生じる遅延を最小化することができる。いくつかの実施形態では、識別されたデータセンタは、ゲームをホストするために必要な帯域幅/容量を有していない場合があるか、あるいは過剰に使用されている場合がある。これらの実施形態では、クラウドゲーミングサイトは、クライアントデバイスと地理的に近い第2のデータセンタを識別してよい。ゲームをロードすることは、ゲームコードをロードすること及びゲームのインスタンスを実行することが含まれる。
クラウドゲーミングサイトから信号を受信したことに応答して、識別されたデータセンタは、データセンタのサーバを選択して、そのサーバ上でゲームをインスタンス化してよい。サーバは、利用可能なハードウェア/ソフトウェア機能及びゲーム要件に基づいて選択される。サーバは、複数のゲームコンソールを含んでよく、サーバは、複数のゲームコンソールのうちのどのゲームコンソールを使用してゲームをロードすべきかを決定してよい。ゲームコンソールは、独立型のゲームコンソールに類似してよく、またはラック搭載サーバもしくはブレードサーバであってもよい。ブレードサーバは、複数のサーバブレードを有し得るものであり、各ブレードは、ゲームなどの単一の専用アプリケーションをインスタンス化するために必要な回路を有する。当然のことながら、上記のゲームコンソールは一例であり、限定的であるとみなされるべきではない。ゲームステーションなどを含む他の種類のゲームコンソール及び他の形態のブレードサーバを連動させて、識別されたゲームをホストしてもよい。
ゲームコンソールが識別されると、ゲームの汎用ゲーム関連コードがゲームコンソール上にロードされ、ゲームがインスタンス化されるゲームコンソールを識別する信号はネットワーク上でクラウドゲーミングサイトを経由してクライアントデバイスに返送される。ゆえに、ロードされたゲームはユーザに利用可能となる。
図1Bは、本開示の形態による、クラウドビデオゲームをクライアントデバイスにストリーミングするために行われる様々な動作を概念的に例示するフロー図である。ゲーミングシステム118は、ビデオゲームを実行し、未加工の(非圧縮の)ビデオ120及び音声122を生成する。例示された図の参照番号124に示すように、ビデオ120及び音声122は、ストリーミング目的のためにキャプチャされて符号化される。符号化は、ビデオ及び音声ストリームの圧縮を提供し、帯域幅利用を削減し、ゲーミング体験を最適化することができる。符号化形式の例として、H.265/MPEG−H、H.264/MPEG−4、H.263/MPEG−4、H.262/MPEG−2、WMV、VP6/7/8/9などが挙げられる。
符号化された音声126及び符号化されたビデオ128は、インターネットなどのネットワークを介した伝送のために、参照番号132で示されるように、さらにネットワークパケットにパケット化される。ネットワークパケット符号化プロセスはさらに、データ暗号化プロセスを用いることができ、これによって、データセキュリティが向上する。例示された形態では、音声パケット134及びビデオパケット136は、参照番号140で示されるように、ネットワークを介した送信のために生成される。
ゲーミングシステム118は、触覚フィードバックデータ130を追加的に生成し、触覚フィードバックデータ130もネットワーク伝送のためにネットワークパケットにパケット化される。例示された形態では、触覚フィードバックパケット138は、参照番号140でさらに示されるように、ネットワークを介した送信のために生成される。
未加工のビデオ及び音声ならびに触覚フィードバックデータを生成し、ビデオ及び音声を符号化し、符号化された音声/ビデオ及び触覚フィードバックデータを送信のためにパケット化する前述の動作は、クラウドゲーミングサービス/システムを総称的に定義する1つ以上のサーバ上で行われる。参照番号140で示されるように、音声パケット、ビデオパケット及び触覚フィードバックパケットは、インターネットなどのネットワーク及び/またはインターネットを含むネットワークを介して送信される。参照番号142で示されるように、音声パケット134、ビデオパケット136及び触覚フィードバックパケット138は、符号化された音声146、符号化されたビデオ148及び触覚フィードバックデータ150をクライアントデバイスで定義するために、クライアントデバイスによって復号/再構築される。データが暗号化されている場合、ネットワークパケットも解読される。符号化された音声146及び符号化されたビデオ148は、次いで、参照番号144で示されるように、クライアントデバイスによって復号され、ディスプレイデバイス152上でレンダリングするために、クライアント側の未加工の音声及びビデオデータを生成する。触覚フィードバックデータ150は、コントローラデバイス156または触覚効果をレンダリング可能な他のインターフェースデバイスにおける触覚フィードバック効果を生成するために処理/伝達することができる。触覚効果の一例として、コントローラデバイス156の振動またはランブルが挙げられる。
ビデオゲームはユーザ入力に応答し、そのためユーザ入力の伝送及び処理について上記と同様の手順フローをクライアントデバイスからサーバへの逆方向に行うことができることが理解されるだろう。図示のように、コントローラデバイス156を操作するユーザは、入力データ158を生成してよい。この入力データ158は、ネットワークを介してクラウドゲーミングシステムに送信するために、クライアントデバイスでパケット化される。入力データパケット160は、サーバ側で入力データ162を定義するために、クラウドゲーミングサーバによって解凍され、再構築される。入力データ162はゲーミングシステム118に供給され、ゲームシステム118は入力データ162を処理してビデオゲームのゲーム状態を更新する。
音声パケット134、ビデオパケット136及び触覚フィードバックパケット138の送信中(参照番号140)、ネットワークを介したデータの伝送を監視して、クラウドゲームストリームのサービス品質を保証することができる。例えば、参照番号164によって示されるように、ネットワーク状態はアップストリーム及びダウンストリームの両方のネットワーク帯域幅を含めて監視することができ、利用可能な帯域幅の変化に応じてゲームストリーミングを調整することができる。すなわち、ネットワークパケットの符号化及び復号は、参照番号166によって示されるように、現在のネットワーク状態を基に制御することができる。
図2は、本開示の形態による、ローカルアプリケーションクイックスタート機能を備えるクラウドゲーミングのためのシステムを概念的に例示する。ユーザ226は、クラウドゲーミングサービスにアクセスするように構成されたクライアントデバイス100と対話する。ユーザ226は、コントローラデバイス156を操作して、クライアントデバイス100への入力を生成して提供してよい。さらに、クライアントデバイス100は、コンテンツをディスプレイデバイス152にレンダリングするように構成することができる。いくつかの形態では、ディスプレイデバイス152は頭部装着型ディスプレイとすることができることが理解されるだろう。
クライアントデバイスは、ネットワーク102を介してクラウドゲーミングサーバ104と通信し、クラウドゲーミングサーバ104は、ユーザのクラウドゲーミングアカウントへのアクセスを提供する。クラウドゲーミングサーバ104は、ユーザアカウントストレージ106からユーザデータ204を読み出し、ユーザデータ204は、例示された実施形態では、ユーザ226の専用データである。例として、ユーザデータ204は、ユーザのゲームプレイに利用可能なゲームタイトルであるタイトル206など、様々なクラウドゲーミング関連データを含むことができる。これらは、ユーザが購入した、有料で借りた、無料で借りた、付与された、または別様にはユーザがゲームプレイのためにアクセスを取得したゲームタイトルであってもよい。ユーザデータはさらに、ゲーム保存データ208、トロフィー210、統計212、ソーシャルデータ214(例えば、ソーシャルグラフデータを含む)及び履歴データ216(例えば、ユーザアクセス履歴、ゲームプレイ履歴など)を含んでよい。
ユーザ226がアクセス許可を有する所与のクラウドビデオゲームをユーザがプレイしたいとき、ユーザは、ディスプレイ152上にクライアントデバイス100によって提示されるグラフィカルユーザインターフェース(GUI)上でビデオゲームの選択を指示してよい。ゲームプレイのためのビデオゲームが選択されると、ゲーム要求がクライアントデバイス100からクラウドゲーミングサーバ104に伝送される。ゲーム要求は、ユーザがプレイしたいゲームタイトルを特定し得る。ゲーム要求を受信したことに応答して、クラウドゲーミングサーバ104は、クラウドゲーム機118を起動して、要求されたビデオゲームのタイトルをインスタンス化する。すなわち、クラウドゲーミング機118は、要求側のクライアントデバイス100に割り当てられ、要求されたビデオゲームタイトルの実行を開始する。
クライアントデバイス100によるクラウドゲーミングサーバ104へのゲーム要求の伝達と同時に、クライアントデバイス100は、ローカルストレージ232からの初期コンテンツ234のレンダリングも開始する。初期コンテンツ提示部236は、読み出し、レンダリング及び初期コンテンツ234との対話性を管理する。初期コンテンツ234は要求されたビデオゲーム専用とすることができ、ビデオゲームの対話型ゲームプレイの開始前にユーザに提示され得る任意のゲーム関連コンテンツを含んでよい。
本開示の目的のために、対話型ゲームプレイは、ビデオゲームの競争/物語のコンテキスト内でユーザの実質的な進捗を直接的に進めることができる、ユーザと実行中のビデオゲームとの間の対話性を指すものとする。ゆえに、ビデオゲームの対話型ゲームプレイは、スタートアップ画像/ビデオ、スプラッシュ/ロード画面またはビデオ、法的情報画面、ゲーム設定のアクセスまたは構成(例えば、コントローラ設定、ゲームの難易度、ビデオ設定、音声設定など)、ゲーム選択メニュー(例えば、保存されたゲーム選択、ゲームのレベル選択、ゲームの種類選択(例えば、アーケード、キャンペーン)など)及び/またはビデオゲームの競争的または物語的なコンテキストの中でユーザの進捗を直接的に進めることができない、任意の他の種類のゲーム関連コンテキストまたは対話型機能などの、他の種類のコンテンツレンダリングまたはゲーム関連対話を含まない。
上記の通り、ビデオゲームの初期コンテンツ234は、対話型ゲームプレイの開始前に提示されるコンテンツを含む。初期コンテンツ234は、ロゴ画面、スタートアップ/スプラッシュ画面(画像またはアニメーション/ビデオ)、法的情報/免責条項画面、周辺機器構成メニュー、機能設定メニューなどのコンテンツを含むことができる。初期コンテンツ234は、ローカルストレージ232からローカルにアクセス可能であるため、初期コンテンツ234のレンダリングは毎回高速に行うことができ、非常に高速なシステムでは実質的に即座にまたは瞬時に行われ得る。ユーザは、ビデオゲームのコンテンツがディスプレイデバイス152にレンダリングされる前にクラウドゲーミングシステムによって行われる、クライアント100のためのゲーム機118のプロビジョニング/割り当て、割り当てられたゲーム機118への適切なビデオゲームコードのロード、ビデオゲームコードの実行の開始及び/またはクライアント100へのストリーミングの開始を待つ必要はない。これによって、ビデオゲームへのローカルクイックスタートが提供され、一方でクラウドゲーミングシステムは、ゲームストリーミングのためにゲーム機118を準備する。ゆえに、参加型及び享受型の初期コンテンツがユーザに提供され、クラウドゲーミングシステムの動作により待たされることは質の悪いクラウドゲーミング体験として認識される可能性があるが、ユーザはそのように待たされることはない。
ゲーム機118は、ゲームタイトルデータストア110から要求されたゲームタイトルコードを取得し、実行するビデオゲームを定義するためにゲームタイトルコードを実行する。ゲーム機118からの未加工のビデオ/音声出力はストリーミングサーバ220に提供され、ストリーミングサーバ220は、ストリーミングの目的で未加工のビデオ/音声を圧縮形式に符号化する。上記の通り、符号化された音声及びビデオは、ネットワーク通信プロトコルに従ってネットワーク102を介して伝送することができる。クライアントデバイス224のストリーミング論理238は、ディスプレイ152にレンダリングするために、受信したストリーミング音声/ビデオを処理する。
ローカルストレージ232からの初期コンテンツ234の提示から、ストリーミングサーバ220を経由したクラウドベースのゲーム機118からのストリーミングビデオゲームの提示への移行が起こることが理解されるだろう。いくつかの形態では、ゲーム機118でのビデオゲームの実行は、クライアントデバイス100へのビデオゲームのストリーミングを開始するトリガをビデオゲームが待つ時点に達するまで進行する。いくつかの形態では、ストリーミングを開始するトリガは、クライアントデバイス100で受信されたユーザ入力から定義してよい。例えば、ユーザは、ストリーミングを開始するために、ボタンを押すか、またはコントローラ156を経由する何らかの他の入力を提供してよい。
コンテンツのローカル実行/提示からコンテンツのクラウドストリーミングへの移行は、スムーズなユーザ体験を提供するように構成することができる。ゲーム機118によるビデオゲームの実行は、クライアントデバイスにおける初期コンテンツの提示に同期することができる。ゲーム機118は、初期コンテンツの提示に関してクライアントデバイス224から状態の更新を受信してよく、クラウドゲーム機118によるビデオゲームの実行は、初期コンテンツ234の提示と同期するように調整することができ、これによって、クラウドストリーミングへのスムーズな移行が可能になる。いくつかの形態では、ローカルコンテンツからストリーミングコンテンツへの移行は、ユーザ入力を必要とすることなく自動的に生じるが、他の形態では、ユーザ入力に応じて移行が生じることが理解されるだろう。
初期コンテンツのレンダリングから、ビデオゲームのクラウドからのストリーミングへの移行は、ゲーム全体の提示における様々な時点で行われてよい。例えば、スプラッシュ画面(画像/アニメーション/ビデオ)のレンダリングの後、あるいはメニューまたはユーザによるアクティブな選択または入力を必要とする他のコンテンツのレンダリングの後で、移行が生じることがある。後者の概念では、(例えば、メニュー項目もしくはオプションの)ユーザ選択または入力は、ゲーム機118で実行中のビデオゲームに伝達することができ、ゲーム機118は、レンダリングされる次のコンテンツを決定するために選択/入力を処理し得る。いくつかの形態では、レンダリングされる次のコンテンツは、別のスプラッシュ画面またはメニューであり、ゆえに、初期コンテンツのローカルな実行からクラウドビデオゲームのストリーミングへの移行は、対話型ゲームプレイの開始前に提示される画面/メニュー間で生じる。いくつかの形態では、クラウドゲーム機118は、いくつかの画面のうちクライアントデバイス224で提示されている画面に関する状態の更新を受信することができ、クライアントデバイス224にストリーミングされる次の画面を実行してレンダリングするよう、ゲーム機118に指示することができる。
いくつかの形態では、移行は、単一のコンテンツ画面の提示中に生じる。例えば、初期コンテンツ234は、連続して提示される複数の画面を含むことがある。画面のローカルでの提示中に、クラウドゲーム機118は、どの画面が提示されているかを示す状態の更新を受信することができ、クライアントデバイス224によって現在提示されている画面と同じ画面を実行してレンダリングするよう、クラウドゲーム機118に指示することができる。ゆえに、ストリーミングへの移行は、現在の画面の提示中に生じることがあり、ユーザにはシームレスに見えることがある。いくつかの形態では、画面コンテンツの画像/ビデオ部分は最初にストリーミングに移行されるが、一方、音声は次の画面の提示まで移行されない。いくつかの形態では、音声が音声クリップのループ再生によって定義される場合、音声再生がクリップの終わりに到達すると(ビデオと音声の両方または音声のみの)移行が生じることがある。このような構成では、音声の提示における音声の中断を回避することができる。
いくつかの形態では、ビデオゲームのストリーミングを開始するトリガは、ビデオゲームの対話型ゲームプレイの開始もトリガする。例えば、初期コンテンツは、実際の対話型ゲームプレイを開始する前に、ユーザに提示されるビデオゲームの全てのコンテンツを含むことができる。次いで、対話型ゲームプレイを開始する時点で、クライアントデバイス100は、ローカルに記憶されたコンテンツを提示することから、クラウドベースのストリーミングコンテンツを提示することに移行する。さらに、ユーザ選択または他のユーザ入力などの初期コンテンツとのユーザ対話は、実行中のビデオゲームに伝達可能であることが理解されるだろう。このようにして、ローカルに記憶されたコンテンツとの対話を使用して、クラウドベースのビデオゲームの実行を駆動することができる。例えば、ユーザはメニュー選択を指示してよく、これは、ゲーム機118上で実行中のビデオゲームに伝達される。メニューの提示は、ローカルストレージ232から行われるが、メニューからのユーザ選択の後で、ユーザ選択はゲーム機118に(例えば、クラウドゲーミングサーバ104を経由して)伝達されてよく、ゲーム機118はユーザ選択を処理してよい。クライアントデバイス100はさらに、ストリーミングサーバ220を経由してゲーム機118から(例えば、ビデオゲームの対話型ゲームプレイを開始するために)ユーザ選択の結果をストリーミングすることに移行してよい。
当業者に理解されるように、実行中のビデオゲームはゲームエンジンを定義してよく、ゲームエンジンは入力を受信し、入力を処理してビデオゲームのゲーム状態を更新する。いくつかの形態では、ビデオゲームのゲームエンジンはゲーム機118で初期化され、初期コンテンツ234はクライアントデバイスで提示される。ゲーム機はゲームエンジンの実行を継続するトリガを待つため、ゲームエンジンは初期化された後に一時停止状態になってよい。ユーザ入力から定義することができるトリガを受信すると、一時停止状態が終了し、その結果、ゲームエンジンの実行によりビデオゲームの対話型ゲームプレイが開始する。
いくつかの形態では、クライアントデバイス224は、初期コンテンツ234の提示に関する状態の更新をクラウドゲーミングシステムに伝達するように構成することができる。このような状態の更新には、初期コンテンツの現在の提示状態を識別する情報ならびにユーザ入力/選択/ナビゲーションが含まれることがある。このような状態の更新に応答して、ゲーム機118によるビデオゲームの実行は、ビデオゲームのコンテキスト内で様々なオプションのうちのいずれかを行うように指示を受けることができる。ゆえに、クライアントデバイス224による初期コンテンツ234のレンダリングと、ストリーミングサーバ220からのビデオゲームのストリーミングとの間の移行を管理して同期させ、スムーズなユーザ体験を提供することができる。
いくつかの形態では、多くの場合、ユーザは通常、最後に保存された位置からゲームプレイを継続することを望むため、ゲーム機におけるゲームエンジンの初期化は、ユーザの最後に保存されたゲームデータを自動的にロードするように構成することができる。ユーザの最後に保存されたゲームのゲームプレイの継続をユーザが(例えば、ゲームメニュー/オプションのナビゲーション/選択を通じて)指示する前であっても、ユーザの最後に保存されたゲームデータのこの自動的なロードが先行して生じる可能性があることが理解されるだろう。これは、処理の分割によって可能になり、処理の分割とは、クラウドベースのゲーム機が最終的な対話型ゲームプレイのゲームエンジンを初期化する間に、クライアントデバイスが初期コンテンツを処理してレンダリングすることである。ユーザのローカルデバイスが初期コンテンツを順次ロードしてから保存したゲームをロードすることは、ローカルクライアントデバイス100及びクラウドベースのゲーム機118の各々によってそれぞれ並列的に処理されるため、ユーザはそのために待つ必要がなく、ゆえに、ここで説明される構成は、従来のコンソールゲームのゲーミング体験よりも利点を提供する。
いくつかの形態では、クラウドゲーミングサーバ104は、ユーザのゲームプレイ履歴に基づいて、所定のビデオゲームの最後に保存されたゲームを先行してロードするかどうかを決定するように構成することができる。例えば、いくつかの形態では、ユーザのビデオゲームの最後のゲームプレイセッション中にユーザがこれまでに保存した最後のゲームをロードした場合、システムは、ユーザの最後に保存されたゲームを自動的にロードするように構成されてよい。関連する形態では、最後のゲームプレイセッションから経過した時間が閾値時間より短い場合、システムはユーザの最後に保存されたゲームを自動的にロードするように構成されてよく、ユーザの最後のビデオゲームのゲームプレイセッション中である場合、ユーザはこれまでに保存した最後のゲームをロードする。他の形態では、システムは、ソーシャルネットワークアクティビティ、時間、最後のゲームプレイからの経過時間、ビデオゲームの保存されていないゲーム(例えば、アーケード、マルチプレイヤ)に対する保存されたゲームのゲームプレイの相対量などの様々な要因に基づいて、ユーザの最後に保存されたゲームを自動的にロードするかどうかを決定するように構成されてよい。
例示された形態では、対話型ゲームプレイの間、ゲーム機118はゲームエンジンを実行して、ビデオ及び音声データの完全な非圧縮ストリームを生成する。ストリーミングサーバ220は、完全なビデオ及び音声データストリームを受信し、ネットワーク102を介してクライアントデバイス100に伝送するためにそれらを処理する。処理は、ビデオ及び音声データを圧縮形式に符号化し、圧縮データを暗号化し、伝送ネットワークプロトコルに従ってデータをパケット化することを伴い得る。クライアントデバイス100は伝送されたデータを受信し、ネットワークパケットを再構築し、ディスプレイ/HMD152及び音声デバイス(ディスプレイ152の一部であってよい)にレンダリングするために、圧縮されたビデオ/音声データを解読して復号する。
上述の形態では、ストリーミングサーバは、完全なビデオストリーム及び音声ストリームの圧縮バージョンをクライアントデバイス100にストリーミングする。いくつかの形態では、以下でさらに詳細に説明するように、ストリーミングサーバ220は、他の方法でも最適化される完全なビデオストリーム及び音声ストリームのバージョンをストリーミングするように構成されてよい。説明するように、ストリーミングされたビデオ及び音声は、クライアント100で後に供給される特定のコンテンツ部分/アセットを除外するように構成されてよく、これによって、ゲームストリーミングに必要な帯域幅が減少するか、またはストリーミングされたビデオ及び音声の残りの部分がより高い忠実度(例えば、高いフレームレートまたはサンプルレート、高い解像度など)でストリーミングされ得る。
図3は、本開示の形態による、キャッシュ最適化クラウドゲーミングを提供するシステムを例示する。概して、例示されたシステムは、ビデオゲームの画像部分または音声部分をクライアントデバイスに記憶し、ディスプレイ上でレンダリングする直前に、ストリーミングされたビデオまたは音声とクライアントデバイスで組み合わせ、これによって、ビデオゲームをストリーミングするのに必要な帯域幅を削減するように構成される。クライアントデバイスに記憶される部分は、ゲームストリーミング及び/またはネットワーク状態の帯域幅利用を監視することから決定されるため、利用可能な帯域幅がある時間帯にデバイスに送信することができる。
例示された形態では、ゲーミング機118は、ゲームタイトルストレージ110に記憶されるビデオゲーム(タイトルA)のキャッシュ最適化ゲームビルド300を実行する。キャッシュ最適化ゲームビルド300は、本明細書に説明するキャッシュ最適化ゲームストリーミング機能を提供するように構成されるビデオゲームタイトルの特殊バージョンである。特に、キャッシュ最適化ゲームビルド300は、ビデオゲームの特定の視覚構成要素または音声構成要素を排除するビデオ及び音声データストリームを出力するように構成可能であり、これによって、ビデオ及び音声データストリームのデータサイズを削減する。
ゲーム機118によるゲームビルド300の実行はゲームエンジン302を定義し、ゲームエンジン302は、ゲーム状態を更新するために入力を受信して処理し、画像フレームデータ350及び音声データ352を出力する。ゲームエンジン302は、画像フレームデータ350またはそれが出力する音声データ352から、特定の視覚または音声コンテンツ/アセットを任意に除外するように構成することができる。除外される視覚アセットの場合、ゲームエンジン302は、除外される視覚アセットを識別する視覚アセット識別子を生成してよく、画像フレームデータ内における配置(その時間的位置及び空間的位置を定義する)、サイズ、向き、色(複数可)、輝度/コントラスト、他の視覚プロパティなど、視覚アセットの提示を制御するパラメータをさらに定義してよい。除外される音声アセットの場合、ゲームエンジン302は、除外される音声アセットを識別する音声アセット識別子を生成してよく、音量、バランス/フェーダパラメータ、配置、等化パラメータなど、その音声アセットの提示を制御するパラメータをさらに定義してよい。視覚/音声アセット識別子は、画像フレームデータ350または音声データ352の一部として付随するか、またはそれらの一部として含まれてよく、クライアントデバイス100で処理されたときに、どの視覚または音声アセットが画像/音声ストリームと構築されるかを示すように機能する。
ストリーミングサーバ220は、ゲーム機118によって生成される未加工の画像フレームデータ350及び音声データ352を受信する。符号器314は、画像フレームデータ350及び音声データ352を圧縮されたビデオ/音声形式に符号化する。暗号化モジュール316は、圧縮されたビデオ/音声を、ネットワーク102を介して伝送するために暗号化する。ストリーミングサーバ220はさらに、ビデオゲームのためのキャッシュデータ306をゲームキャッシュデータストレージ304からクライアントデバイス100に伝送するように構成される。キャッシュデータ306は視覚コンテンツ/アセット308及び/または音声コンテンツ/アセット310を含むことができ、これらは、後にビデオ/音声ストリームとの構築のためにクライアントデバイスに記憶可能なビデオゲーム用に定義されたキャッシュ可能なコンテンツ/アセットである。ゆえに、ストリーミングサーバ220は、圧縮されたビデオ/音声ならびにクライアントがキャッシュ可能な視覚及び/または音声コンテンツ/アセットを含むことができる混合データストリーム354を送信する。暗号化モジュール316は、ネットワーク102を介して伝送するために、混合データストリーム354に包含する視覚/音声アセットも暗号化することができることが理解されるだろう。
混合データストリーム354に視覚/音声アセットを包含する特定のタイミングは、現在の帯域幅利用及びネットワーク状態に基づいて決定することができる。いくつかの形態では、ストリーミングサーバ220は、混合データストリーム354のストリーミングによる現在の帯域幅利用を監視し、圧縮されたビデオ/音声ストリームに加えて、視覚/音声アセットをストリーミングするために利用可能な帯域幅がいつ存在するかを判断するように構成される。ストリーミングサーバ220は、ゲームストリーミング中に継続的に初期ネットワーク状態を判断してネットワーク状態を監視してよく、任意の時点で利用可能な帯域幅を判断するために、現在の帯域幅利用と共にネットワーク状態を参照してよい。
キャッシュされる視覚/音声コンテンツ/アセットは、クライアントデバイスによる適用及びレンダリングの前に、クライアントデバイスにストリーミングされることが理解されるだろう。帯域幅利用が比較的低い時間帯に、未使用の帯域幅を利用して視覚/音声アセットをクライアントデバイスにストリーミングすることができる。クライアントデバイスに記憶された特定の視覚/音声アセットは追跡することができ、したがって、ゲームエンジンは、ゲームエンジンによって生成された未加工の画像フレームデータまたは音声データから(クライアントに既にキャッシュされている)これらの視覚/音声アセットを除外するように構成することができる。
混合データストリーム354はクライアントデバイス100で受信され、データストリームハンドラ328によって処理される。いくつかの形態では、データストリームハンドラ328は、混合データストリーム354に逆多重化機能を行い、圧縮されたビデオ、圧縮された音声及び混合データストリームからの視覚/音声アセットストリームを解析する。視覚/音声アセットが混合データストリーム354に伝送されるとき、キャッシュマネージャ326は、視覚/音声アセットをクライアントキャッシュストレージ318に記憶し、より具体的には、ビデオゲーム用のキャッシュデータ320の一部を定義する視覚コンテンツデータ322及び/または音声コンテンツデータ324として記憶する。
データストリームハンドラ328はさらに、混合データストリーム354からビデオ及び音声ストリームを生成する(例えば、逆多重化する及び/または展開する)。ビデオ及び音声ストリームは、画像ストリームアセンブラ326または音声ストリームアセンブラ334にそれぞれ渡される。画像ストリームアセンブラ326は、ビデオストリーム内で画像フレームデータのどの部分が除外されたかを判断し、これらの部分をクライアントキャッシュデータ320から読み出された視覚コンテンツ/アセットで補完するように構成される。いくつかの形態では、上述の視覚アセット識別子は、混合データストリームと一緒にまたはその一部として伝送され、ビデオストリームに挿入/結合される視覚アセット、及びそれらの配置に関するパラメータ、及び場合によっては他の視覚プロパティを特定するために処理される。いくつかの形態では、マーカはビデオストリーム自体で符号化され、このマーカは、追加される視覚アセット及びビデオストリーム内における視覚アセットの位置を空間及び時間の両方で識別する。
画像ストリームアセンブラ326は、完全に構築されたビデオストリームをビデオ信号生成器332に出力する。ビデオ信号生成器332は、完全に構築されたビデオストリームを処理して、ディスプレイデバイス152によるレンダリングのために、適切なビデオ信号を正しい形式で生成する。ディスプレイデバイス152は、例示されたシステムにおいて別個の構成要素として示されているが、いくつかの形態では、ディスプレイデバイス152は、クライアントデバイス100の一部として組み込まれる。
画像ストリームアセンブラ326と同じ方法で、音声ストリームアセンブラ334は、音声ストリーム内で音声データのどの部分が除外されたかを判断し、これらの部分をクライアントキャッシュデータ320から読み出された音声コンテンツ/アセットで補完するように構成される。いくつかの形態では、上述の音声アセット識別子は、混合データストリームと一緒にまたはその一部として伝送され、音声ストリームに挿入/結合されるべき音声アセット、及びそれらの配置に関するパラメータ、及び場合によっては他の音声プロパティを特定するために処理される。いくつかの形態では、このマーカは音声ストリーム自体で符号化され、マーカは、追加される音声アセット及び音声ストリーム内における音声アセットの位置を識別する。
音声ストリームアセンブラ334は、完全に構築された音声ストリームを音声信号生成器336に出力する。音声信号生成器336は、完全に構築された音声ストリームを処理して、音声デバイス340によるレンダリングのために、適切な音声信号を正しい形式で生成する。音声デバイス340は、例示されたシステムにおいて別個の構成要素として示されているが、いくつかの形態では、音声デバイス340は、クライアントデバイス100の一部として組み込まれる。さらに、いくつかの形態では、音声デバイス340はディスプレイデバイス152の一部として含まれる。
図4は、本開示の形態による、ローカルキャッシュ最適化クラウドビデオゲームのストリーミングをクラウドゲーミングサービス400から提供するためのデータフローを概念的に例示する。実行中のビデオゲーム302が示され、これは、ビデオゲームの変数の経時的な状態を定義するゲーム状態402を定義する。実行中のビデオゲーム302は、現在の状態に基づいて及びクライアントデバイス100から受信した入力データ418に基づいて、ゲーム状態402を継続的に更新することが理解されるだろう。
ビデオゲーム302は、クラウドゲーミングサービス400を通じて処理されると、混合データストリーム354を生成する。混合データストリーム354は、画像データ404、音声データ406及びキャッシュデータ408を含む。例示された形態では、画像データ404は、画像フレーム410の例を定義する。画像フレーム410の一部分412は完全には定義されていない、すなわち、部分412は画像フレーム410に完全に定義/包含されるのではなく、クライアントデバイス100によって供給されるものであり、これによって、画像フレームをストリーミングするために必要な帯域幅の量を削減することができる。
キャッシュデータ408は、画像フレーム410など、画像データ404の画像フレームに挿入されるアセットを定義するデータを含む。キャッシュデータ408は、クライアントデバイス100によって受信され、混合データストリーム354から解析され、画像キャッシュデータ322の一部としてクライアントキャッシュストレージ318に記憶される。例示された形態では、クライアントデバイス100にこれまでに伝送された視覚アセット414が画像キャッシュデータ322から読み出され、これまでに完全には定義されていなかった部分412を定義するために、画像フレーム410に挿入される。結果として生じる完全な画像フレームは、ディスプレイデバイス上に提示するための完全な画像ストリーム132の一部を形成する。
クライアントデバイスに伝送されクライアントデバイスにキャッシュされる視覚アセットは、任意の種類の画像、アイテム、オブジェクトまたはクラウドビデオゲームによって生成されるビデオストリームとは別に個別に提供され得る他の視覚プロパティとすることができ、これらは後にクライアントデバイスでビデオストリームの画像フレームに挿入され、ディスプレイをレンダリングするために完全な画像フレームを提供することが理解されるだろう。視覚アセットは、ビデオストリームに提示されたときの外観が現在のゲーム状態に基づいて変更されないという点で静的な静的アイテムを含むことができる。これらは、例えば、インジケータ、エンブレム、トロフィー、バッジ及び外観が現在のゲーム状態に基づいて動的に決定されない他の種類の視覚アイテムなどのアイテムを含み得る。例えば、パワー、所有アイテム、他のユーザのキャラクタなど、キャラクタの現在の状態またはゲームプレイの現在の状態をユーザに示す様々な視覚インジケータが存在してよい。別の例として、ユーザが車両を操縦する役割を担うビデオゲームでは、車両の操縦席の視界を含み得る。操縦席内の一部の視覚アイテムは静的であってよく、ビデオゲームの対話型ゲームプレイが進行していても、操縦席がユーザのゲームビューで表示されている間は変化しないことがある。静的な視覚アセットは、変更することなくクライアントデバイスのビデオストリームに挿入することができる。
しかしながら、いくつかの形態では、視覚アセットは動的視覚アセットを含むことができることが理解され、動的視覚アセットの外観はゲーム状態条件に少なくとも部分的に基づいて決定されることが理解されるだろう。例えば、動的視覚アセットは、ディスプレイにレンダリングする前に、現在のゲーム状態に基づき、クライアントデバイスによって色、サイズ、向き、透明度または任意の他の視覚プロパティが変更され、クライアントデバイスによってビデオストリームに挿入されてよい。これを達成するために、ビデオストリームに挿入する前に視覚アセット上で実行すべき特定の変更を示す変更データをビデオストリームと共に伝送することができる。
上記の議論と同様に、混合データストリーム354で配信される音声データ406を音声キャッシュデータ324からの音声アセットで補完し、完成した音声ストリーム130を、音声デバイスを通じた提示のために定義することができる。音声アセットは、音響効果、背景音楽、録音済み音声クリップなどを含むがこれらに限定されない、ビデオゲームによって利用される様々な種類の音声またはサウンドのいずれかを含むことができる。クライアントデバイスで生成/挿入される特定の音声は、クラウドゲーミング機によって生成される音声と比べると、異なる形態によって変化し得ることが理解されるだろう。例えば、いくつかの形態では、背景音楽/音声はクライアントデバイスで生成されて音声ストリームに追加されるが、ユーザのリアルタイム対話型ゲームプレイによってトリガされるか、または起動される他の音響効果はクラウドゲーミング機によって生成される。特定の一形態では、クラウドゲーミング機によって生成されて、混合データストリームの形式でクライアントデバイスによって受信されたデータであって、生成すべきサウンド、このようなサウンドのタイミング及び任意の追加の音声関連パラメータ、例えば、音量、等化、方向性/発信源などを特定するデータを基に、全てのサウンドがクライアントデバイスで生成される。
視覚及び音声アセットは、将来予想されるゲーム状態を示し得る現在のゲーム状態に基づいて、予測的にまたは先行してクライアントデバイスに伝送することができる。これは、例えば、ビデオゲームシーンの全体視野が変更し得る場合など、シーンの変更時に生じ得る帯域幅利用の急激な増加を軽減するのに有用な場合がある。例えば、プレイヤが制御するキャラクタが、シーン変更が生じ得る物理的または時間的位置の近くにいるか、その位置に向かって移動している場合、視覚/音声アセットをクライアントデバイスに伝送してシーン変更時に利用してよい。例えば、プレイヤが自分のキャラクタをドアに向かって誘導し、そのドアを開くか通過するとシーンが変更する場合、シーン変更中に視覚/音声アセットが利用されることを想定して、ドアを開く前に、それらをクライアントに伝送してよい。別の例では、ユーザがビデオゲームのレベルまたはシーンの完了に近づいているとき、視覚/音声アセットは、次のレベル/シーンのストリーミング中に使用するために、レベル/シーンの完了前に、クライアントデバイスに伝送されてよい。いくつかの形態では、ユーザのシーン/レベルのゲームプレイ完了が所定の閾値を超えると、利用可能な帯域幅が許可する範囲において、視覚/音声アセットがクライアントデバイスに伝送される。
クライアントデバイス100の入力処理モジュール416は、コントローラデバイスまたは他の入力デバイスからの入力を処理し、入力データ418を実行中のビデオゲーム302に伝送するように構成される。ビデオゲーム302は、入力データ418を適用し、そのゲーム状態402を更新する。このゲーム状態に基づいて、将来予期されるゲーム状態を決定することができ、将来予期されるゲーム状態に基づいて、クライアントデバイスへの視覚/音声アセットの伝送を決定することができることが理解されるだろう。
図5は、本開示の実施形態による、ローカルアプリケーションクイックスタート機能を提供する方法を例示する。動作方法500では、ビデオゲームを開始する要求が、クラウドゲーミングサービスと通信しているクライアントデバイスで受信される。動作方法502では、これが、ゲームの最初の購入など、ゲームを要求する最初のインスタンスであるか、または更新が必要であるかどうかを判定する。該当する場合、動作方法504で、ビデオゲームの初期コンテンツがダウンロードされ、インストール及び/または更新される。更新または追加のダウンロードが必要ない場合、またはそのようなダウンロード及びインストール/更新の後、動作方法506で、ビデオゲームの初期コンテンツがクライアントデバイスのローカルストレージからレンダリングされる。動作方法508では、レンダリングされた初期コンテンツに応答するユーザ入力及び/または選択がクライアントデバイスで処理され、動作方法510では、初期コンテンツのレンダリング状態が更新されるため、動作方法506に戻る。
一方、ビデオゲームにアクセスする要求は、ユーザのゲーム所有権及び/または要求されたビデオゲームの購入を認証するクラウドゲーミングサービスに伝達される。動作方法518では、クラウドゲーミング機は、要求されたビデオゲームを実行するように初期化され、ユーザのクラウドゲーミングセッションに割り当てられる。動作方法520では、クラウドゲーミング機はビデオゲームを実行する。動作方法522では、ユーザ入力/選択は、実行中のビデオゲームによって処理され、実行中のビデオゲームの状態を更新する。入力/選択は、初期コンテンツとのユーザ対話から定義することができる。
動作方法512では、クライアントデバイスは、ビデオゲームのストリーミングの開始を要求する及び/またはそのために待機する。動作方法524では、クラウドゲーミングサービスは、ビデオゲームのストリーミングビデオ/音声を生成して伝送し、動作方法514では、ストリーミングビデオ/音声は、クライアントデバイスによって受信され、ユーザ対話性のためにレンダリングされる。
図6は、本開示の実施形態による、ローカルアプリケーションクイックスタート機能を提供する方法を例示する。動作方法600では、ユーザは、クライアントデバイスを経由してクラウドゲーミングサービスにログインし、これによって、動作方法612でのクラウドゲーミングサーバによるユーザ認証が生じる。動作方法602では、ユーザはクライアントデバイスでビデオゲームを開始し、これに応答して、動作方法604では、ビデオゲームの初期コンテンツがクライアントデバイスのローカルストレージからロードされ、ディスプレイにレンダリングされる。
一方、動作方法614では、ビデオゲームを開始するユーザ要求に応答して、ゲーム機がユーザのクライアントデバイスにプロビジョニング/割り当てられる。動作方法616では、ゲーム機は要求されたビデオゲームタイトルをロードする。動作方法618では、ユーザ要求を予期しながら、またはユーザの要求に応答してのいずれかで、ユーザアカウントから保存されたゲームデータにアクセスし、ロードする。
動作方法606では、対話型ゲームプレイを開始する要求をクライアントデバイスのユーザから受信する。動作方法620では、クラウドゲーム機によって対話型ゲームプレイを実行する。動作方法622では、クラウドゲーミングサービスは、クライアントデバイスに伝送されるビデオストリームを生成する。動作方法608では、クライアントデバイスによってビデオストリームをレンダリングする。動作方法610では、対話型入力をクライアントデバイスによって受信し、クラウドゲーム機で実行中のビデオゲームに伝送する。実行中のビデオゲームは対話型入力を処理してそのゲーム状態を更新し、更新されたゲーム状態に基づいて、参照番号622で示されるように、ビデオストリームを生成する。
図7は、本開示の形態による、既存の従来のゲームストリーミング設定の帯域幅利用を、クライアントキャッシュを用いる帯域幅利用と比較するデータ帯域幅対時間を図示するグラフである。曲線700は、ゲームストリーミングの利用可能な最大データ帯域幅を例示する。曲線702は、既存の従来のゲームストリーミング設定の帯域幅利用を例示する。曲線704は、本明細書の他の箇所に記載されている通り、クライアントがキャッシュ可能なコンテンツを組み込んだゲームストリーミング設定の帯域幅利用を例示する。時間T0において、曲線702について示された帯域幅利用レベル706は利用可能な帯域幅内にあり、したがって、ユーザはストリーミング品質の低下を体験しない。しかしながら、時間T2では、シーン移行または他のイベントが発生し、これによって、帯域幅利用が劇的に増加する。帯域幅利用は、利用可能な最大帯域幅700を超えるピークレベル708に上昇し、これによって、ビデオ/音声ストリーミング品質が低下する可能性がある。時間T3では、帯域幅利用は、利用可能な最大帯域幅内のレベル710に戻る。
曲線704は、本開示の形態による、クライアントキャッシングを用いるクラウドゲーミング設定の帯域幅利用を例示する。時間T0から時間T1では、帯域幅利用はレベル712であり、これは、クライアントでキャッシュ可能なコンテンツを使用してビデオ/音声ストリームの一部分を提供するため、従来の設定の対応レベル706よりも若干低くなり得る。時間T1では、ユーザのゲームプレイが、より広い帯域幅利用を必要とするシーン移行または他のイベントに近づいていると判断される。したがって、シーン移行に使用されるキャッシュ可能なコンテンツは、シーン移行の発生より前にクライアントデバイスにストリーミングされ、その結果、帯域幅利用がレベル714に増加する。レベル714は、従来のシステムの帯域幅利用のレベル716を上回るが、依然として利用可能な帯域幅700内にあることが理解されるだろう。
時間T2では、シーン移行が発生し、帯域幅利用はレベル718まで上昇することがあるが、従来のシステムとは異なり、クライアントキャッシングを用いるシステムのレベル718は依然として利用可能な帯域幅700内にあり、ストリーミングの品質は低下しない。時間T3ではシーン移行は完了し、帯域幅利用はレベル720まで低下し、これは、クライアントにキャッシュされたコンテンツを継続的に適用してビデオ/音声ストリームの一部分を提供するため、レベル710を下回る可能性がある。
ユーザが所与のビデオゲームをプレイすると、ビデオゲームに関連する保存データが生成される。ビデオゲームのためのユーザの保存データは、ユーザのゲームプレイ中の様々な時点でビデオゲームのゲーム状態を記述し、再構築するために使用できるデータ、またはビデオゲームに関連するユーザ専用の他の任意のデータを含むことができる。例えば、ユーザのゲーム保存データは、オブジェクト(例えば、キャラクタ、アイテム、車両、武器または任意の他のオブジェクト)、オブジェクトの状態または特徴、位置(位置及び方向を含む)及び/またはオブジェクトの動き、リソース、機能、量/完了レベルなどを定義するデータを含んでよい。ユーザの保存データはさらに、ゲーム専用のユーザプロファイル情報、成績、トロフィー、賞、ゲームの嗜好、アクティビティ履歴、チャット履歴など、プレイヤごとに異なり得る他の種類のゲーム関連データを含むことができる。所与のビデオゲームのためのユーザの保存データの詳細は、例えば、ゲームが保存される頻度、利用可能なゲーム状態情報の保存される量の観点で変わり得ることが理解されるだろう。ビデオゲームは、進捗、ゲームタスクの完了/レベル/セクション、経過時間、ユーザ設定などの要素を基に、定期的にゲームを自動的に保存する(ユーザ設定に従って調整可能であり得る)自動保存機能を有してよい。さらに、ユーザは、ゲームプレイ中に、様々な時点、様々な地理的/空間的な位置、様々な完了量などでゲームを保存するように選択してよく、これによって、所望する場合には、ユーザはゲームプレイの同じ(またはほぼ同じ)位置に戻ることができる。
ビデオゲームが本開示の形態によってクラウド内でホストされる場合、ユーザ保存データは、ビデオゲームが最後にストリーミングされたデータセンタに記憶されることが理解されるだろう。ビデオゲームがデータセンタのゲーム機によって最後に実行されたため、ゲーム機によってビデオゲームの実行から生成されたユーザ保存データは、ゲームプレイセッションの完了後にデータセンタに記憶することができる。しかしながら、クラウドビデオゲームの後続のセッションは、異なるデータセンタからストリーミングされる可能性があるため、クラウドビデオゲームのユーザ保存データは、特定のプレイヤに対して特定のクラウドビデオゲームに関する全てのオプションを完全に有効にするために、新規データセンタに移動させる必要があるだろう。ユーザ保存データは非常に広範囲に及ぶ可能性があり、あるデータセンタから別のデータセンタへのユーザ保存データの移行は、ユーザのゲームプレイ開始に望ましくない遅延を引き起こす。ゆえに、本開示の形態によって、クラウドビデオゲームのためのユーザの保存データの一部または全てを移動させる必要なく、ユーザがゲームプレイを開始することができる方法及びシステムが提供される。さらに、ユーザ保存データは、ゲームプレイ中のその後の時間において進行中のクラウドビデオゲーム実行に統合することができる。
図8Aは、本開示の形態による、クラウドビデオゲームのゲームプレイを開始する前に、所与のユーザのビデオゲーム保存データをロードすることなく、クラウドビデオゲームのゲームプレイを提供する方法を概念的に例示する。動作方法800では、ゲーム機はクラウドビデオゲームをロードする。ゲーム機は、クラウドビデオゲームを実行して、ユーザのクライアントデバイスにストリーミングされるビデオコンテンツを生成するように構成され、さらにクラウドビデオゲームの実行を駆動するためにクライアントデバイスから受信した入力を処理するように構成される。ゲームプレイを開始するのに必要な時間を最小化するために、ビデオゲームのユーザの保存データはゲーム機にロードされない。むしろ、クラウドビデオゲームは、クラウドビデオゲームのゲームプレイを開始するのに十分なパラメータを定義する汎用保存データをゲーム機にロードする。汎用保存データは、クラウドゲーミングシステムの特定のユーザに関連していないが、一般的なユーザまたはデフォルトユーザのためのパラメータを効果的に定義し得ることを理解すべきである。汎用保存データは、クラウドビデオゲームのためにユーザの保存データの配置決め及び移行を行う必要なく、ゲームプレイがより迅速に開始され得るよう利用される。
従って、汎用保存データを使用したクラウドビデオゲームのゲームプレイは、ビデオゲームのためのユーザの保存データのロード及び/または移行が必要とされた場合に生じていただろう時間遅延を伴うことなく開始される。ゆえに、ユーザが対話型ゲームプレイの開始を最初に要求してから、対話型ゲームプレイを開始し得るまでに必要な時間は、既存のクラウドゲーミング設定に比べて短縮される。さらに、いくつかの形態では、ゲーム機は、汎用保存データで構成されたビデオゲームをプリロードしてよい。これは、ゲームプレイの開始の要求とゲームプレイの開始との間のユーザの待ち時間を最小化し、クラウドビデオゲームのゲームプレイを実質的に即座に開始することができる。
いくつかの形態では、ビデオゲームにおけるユーザの最後の既知の位置(例えば、時間的、空間的、または進捗位置)からのゲームプレイの再開を容易にするために、ビデオゲームにおけるユーザの最後の既知の位置を識別するデータが読み出される。いくつかの形態では、そのようなデータは、クラウドビデオゲームのロード時に即座に利用可能になるように、クラウドゲーミングシステムによってユーザのアカウントの一部として記憶されるか、またはクライアントデバイスに記憶/キャッシュされる。上記の概念の組み合わせは、汎用ユーザデータがゲーム機にロードされている状態で、ユーザがユーザの最後の既知の位置からクラウドビデオゲームのゲームプレイを迅速に開始/再開し得る設定をもたらすことができることが理解されるだろう。すなわち、ユーザはビデオゲームにおけるユーザの最後の既知の位置からゲームプレイを開始してよいが、ゲーム実行は、ビデオゲームを容易にするために、ビデオゲームのためのユーザの保存データではなく汎用保存データに適用される。
いくつかの形態では、上記の概念は、ユーザの最後のゲームプレイ進捗位置に加えて、特定の基本的なゲーム保存データのプロビジョンを含むように拡張することができる。これは、上述のゲームプレイパラメータのいずれかを含み得るが、完全なユーザ保存データと比較すると限定的な形態である。例えば、所与のリソースパラメータのユーザの最後の既知の量(例えば、エネルギー/健康、弾薬など)を提供してよい。このようなデータはさらに、ユーザのアカウントに記憶されてよいか、またはクライアントデバイスに記憶されてよい。いくつかの形態では、ユーザの最後のゲームプレイの進捗位置及び/または基本的なゲーム保存データは、ビデオゲームが最後に実行されたデータセンタから、ユーザ保存データの全量を読み出すことなく読み出され、これによって、ユーザは、ユーザ保存データの全量が送信されるのを待つことなく、自分の最後の位置からゲームプレイを開始することができる。
いくつかの形態では、ユーザは、ビデオゲームにおける最後の既知の位置からゲームプレイを再開してよい。他の形態では、ユーザは、ユーザの最後の既知の位置より前の位置からゲームプレイを再開してよく、これによって、ビデオゲームのストーリーライン/アクティビティの途中でゲームプレイを開始するときにユーザの移行が容易になる。いくつかの形態では、ゲームプレイは、ユーザの最後の位置より前に発生したビデオゲーム内のブレークポイントから再開される。いくつかの形態では、以前のブレークポイントは最後に保存された位置であってよいが、他の形態では、以前のブレークポイントはユーザの最後の位置に基づいて選択されることが理解されるだろう。以前のブレークポイントはブレークポイントに関連する汎用保存データを有してよく、汎用保存データは、上記の通り、ユーザの保存データを送信することなく、ゲームプレイの迅速な開始を可能にするためにロードすることができる。
通常のビデオゲームがユーザによって初めて最初からプレイされるとき、ユーザがビデオゲームの開始段階において特定の定義済みパラメータでゲームプレイを開始するよう、ユーザのために新規ユーザ設定が構成されるか、または提供されることが理解されるだろう。これらの定義済みパラメータは、システムによって提供または選択されるデフォルトパラメータであってよいか、または初期設定インターフェースを通じてユーザによって選択されてよい。しかしながら、ビデオゲームの途中にある進捗位置から初期ゲームプレイを開始するには、通常、既存ユーザのゲーム保存データの識別が必要であり、これは、ユーザは、通常、ビデオゲームの前のステージをまず完了してからでないと、ビデオゲームの途中にある進捗位置にアクセスしてその進捗位置に到着することができないためである。進捗位置は時間的な位置、空間的な位置、ストーリーライン位置、またはビデオゲームによって定義される他の種類の位置の場合があり、ここからプレイヤはビデオゲームのゲームプレイを進めることができることが理解されるだろう。
ゆえに、本開示の形態は、ビデオゲームの実行のためにユーザのゲーム保存データをロードする必要なく、ユーザがビデオゲームの途中にある進捗位置からゲームプレイを開始し得る点で、既存のビデオゲームシステムとは異なる。これにより、ビデオゲームの途中にある進捗位置からゲームプレイの開始を要求するときに必要となるであろう、ゲームプレイの開始前のユーザの待ち時間が短縮される。以下でさらに説明するように、ゲームプレイは、ユーザの保存データをロードすることなく開始され、ユーザの保存データは、後続の時間にゲームプレイと統合される。
汎用保存データ及び/またはクラウドビデオゲームのその後の実行及びゲームプレイを伴うクラウドビデオゲームのロードと実質的に同時に、動作方法802では、ユーザが識別され、クラウドビデオゲームのユーザの保存データが識別される。クラウドビデオゲームのためのユーザの保存データは遠隔データセンタ内に配置されてよく、(汎用保存データで開始された)ユーザのゲームプレイセッションのために、クラウドビデオゲームを現在実行しているゲーム機のデータセンタに送信されてよい。クラウドビデオゲームのためのユーザの保存データの一部または全てをゲーム機にロードして、ユーザの進行中のゲームプレイセッションと統合してよい。
動作方法804では、ユーザ保存データは、クラウドビデオゲームのユーザのゲームプレイセッションにリンクされるか、または統合される。すなわち、いくつかの形態では、ユーザの保存データが進行中のゲームプレイセッションに適用され、汎用保存データを更新する。これにより、(別のデータセンタからストリーミングされた可能性がある)以前のセッションから、クラウドビデオゲームのためのパラメータがユーザに提供される。統合はさらに、汎用保存データで最初にインスタンス化された現在のセッションが行った進捗と組み合わせることもできる。一例として、現在のゲームプレイセッションに基づいて完全に更新されたパラメータを生成するために、特定の追加パラメータを合算してよい。
いくつかの形態では、ユーザ保存データの統合は、ユーザ保存データの送信を完了した後に行うことができることが理解されるだろう。一方、他の形態では、ユーザ保存データの統合は、ユーザ保存データの送信中にも行うことができる。例えば、所与の部分(またはパラメータ)が送信されると、ユーザ保存データの部分(または特定のパラメータ)は、送信され現在のゲームプレイセッションに即座に統合することができる。
ユーザ保存データをクラウドビデオゲームの現在のセッションにリンクまたは統合することは、一部のユーザにとっては独特または奇妙なこととして認識される可能性がある。したがって、いくつかの形態では、ユーザ保存データのリンクまたは統合への注目を低減することは、ビデオゲームの進捗における自然なブレークポイント(例えば、ゲームプレイの一時停止時、ビデオゲームの1つのステージまたはレベルから別のステージまたはレベルへの移行、タスクの完了後、ゲームプレイマイルストーンの達成後など)で発生するように構成される。ゲーム機がユーザ保存データをロードして汎用保存データを更新した後に、ゲームプレイは継続し、ゲームプレイのためのパラメータ及びユーザの保存データが更新される。
クラウドビデオゲームのゲームプレイの完了後、動作806で、ユーザはゲーム機から切り離される。すなわち、ユーザはもはやクラウドビデオゲームのセッションを実行したゲーム機には関連していない。クラウドビデオゲームのためのユーザの保存データはデータセンタに保存され、ユーザのプロファイル/アカウント情報及び/またはユーザのクライアントデバイスは更新されて、データセンタにおけるクラウドビデオゲームのためのユーザの保存データの位置を識別してよい。ゲーム機は、ビデオゲームの実行が別のユーザまたは同じユーザへの別のストリーミングビデオゲームセッションを可能にするよう利用可能である。いくつかの形態では、ユーザを切り離すことによって、ビデオゲームは汎用保存データがロードされた状態に戻り、これによって、別のユーザがクラウドビデオゲームのゲームプレイの開始を要求してゲーム機に割り当てられるときに、利用可能かつ即座のゲームプレイに対して準備可能となる。
図8Bは、本開示の形態による、ゲーム開始及びユーザ保存データの送信を管理する方法を例示する。動作方法810では、ビデオゲームをプレイする要求が受信される。動作方法812では、要求に応答して、ビデオゲームをストリーミングするデータセンタにユーザが割り当てられる。動作方法814では、汎用ゲームデータにアクセスする/ビデオゲームをロードする。動作方法816では、ビデオゲームのゲームプレイは、汎用ゲームデータで開始する。さらに、ビデオゲームをプレイする要求に応答して、動作方法818では、ビデオゲームのためのユーザ保存データが第2のデータセンタに配置される。動作方法820では、ユーザ保存データは、割り当てられたデータセンタであって、ここからユーザがビデオゲームをストリーミングするデータセンタに第2のデータセンタから送信される。動作方法822では、ユーザ保存データは、割り当てられたデータセンタにおいてビデオゲームを実行するゲーム機にロードされる。動作方法824では、ビデオゲームのゲームプレイのブレークポイントが決定される。ブレークポイントに到達すると、動作方法826で、ビデオゲームの実行がユーザ保存データで更新される。動作方法828では、ビデオゲームの対話型ゲームプレイが継続する。
図9は、本開示の形態による、クラウドビデオゲームの一連のゲームプレイセッションを概念的に例示する。例示された形態では、ゲームプレイ進捗バー900は、クラウドビデオゲームのコンテキスト内でのユーザのゲームプレイの進捗を視覚的に例示する。ゲームプレイ進捗バー900に沿った水平の位置は、ビデオゲームのコンテキスト内の進捗位置(例えば、時間的コンテキストもしくは空間的コンテキスト、または他の種類のコンテキストであって、これに沿ってビデオゲームにおけるユーザのゲームプレイ進捗を測定/定量化し得るコンテキスト)を示す。2つの位置間のゲームプレイ進捗バー900の網掛け部分は、ゲームプレイ進捗の量を示し、さらに、ビデオゲーム内の1つの進捗位置から別の進捗位置への進捗を定義する。
クラウドビデオゲームがデータセンタ番号1において実行されるゲームプレイセッション番号1の間、ユーザは、進捗位置Aで開始して進捗位置Bでセッションが終了するクラウドビデオゲームのゲームプレイを冒頭から開始する。進捗位置Aでは、シーン902がユーザに示される(例えば、ビデオゲームの実行によって生成され、データセンタ番号1からユーザのクライアントデバイスにストリーミングされる)。ユーザのゲームプレイが位置Bに到達すると、シーン904がユーザに示される。ゲームプレイセッション番号1の間、ユーザのゲームプレイは進捗位置Aから進捗位置Bに進み、ゲームプレイが停止した後、ユーザの保存データは、参照番号906によって示されるように、データセンタ番号1に記憶される。
後続時間に、クラウドビデオゲームのゲームプレイセッション番号2がユーザによって開始される。ユーザのゲームプレイセッション番号2は、ゲームプレイセッション番号1がそこからインスタンス化されたデータセンタと同じデータセンタ番号1に割り当てられている。ゆえに、ビデオゲームのためのユーザの保存データは既にデータセンタ番号1に配置されているため、参照番号907で示されるように、ゲームプレイセッション番号2に即座にロードされ、これには、進捗位置Bからビデオゲームのビデオゲームを再開するために利用される全ての利用可能パラメータが含まれる。ゆえに、セッション番号2の間、ユーザは、ユーザが以前のセッション番号1を過去に終了した進捗位置Bからゲームプレイを再開することができ、セッション番号2のゲームプレイの冒頭に示されるシーン908はセッション番号1の終わりに示されるシーン904と一致する。本開示の形態において、クラウドゲーミングシステムは、ビデオゲームのためのユーザの保存データが、ビデオゲームの現在のセッションがそこでインスタンス化されるか、これからインスタンス化されるデータセンタと同じデータセンタに記憶されているかどうか(または、ビデオゲームのためのユーザの過去の直近のゲームプレイセッションが同じデータセンタからストリーミングされたかどうか)を決定するように構成されてよく、該当する場合、対話型ゲームプレイを開始する前に、ビデオゲームのためのユーザの保存データがロードされることが理解されるだろう。一方、該当しない場合、上記の通り、遅延を低減するために、ビデオゲームのためのユーザの保存データは対話型ゲームプレイを開始する前にはロードされない。
ビデオゲームのセッション番号2の間、ユーザのゲームプレイは、進捗位置Bから進捗位置Cに進み、進捗位置Cの時点でゲームプレイセッション番号2が終了する。セッション番号2のゲームプレイの終了後、ユーザの保存データは、参照番号912によって示されるように、データセンタ番号1に記憶される。
続いて、別のデータセンタ番号2において、クラウドビデオゲームのゲームプレイセッション番号3がインスタンス化される。ユーザの保存データはデータセンタ番号2に記憶されていないため、ユーザがゲームプレイを開始することにより(例えば、ネットワークを介したユーザ保存データの読み出し及び移行によって生じる)過度の遅延が生じることを回避するために、クラウドビデオゲームは、参照番号914によって示されるように、汎用保存データをロードする。ビデオゲームのセッション番号3にはユーザの保存データがロードされていないため、ゲームプレイの特定の態様はユーザの以前の構成と一致しない可能性がある。例えば、セッション番号3の進捗位置Cに提示されたシーン916は、セッション番号2の進捗位置Cに提示されたシーン910とは完全に一致しないことがある。限定ではなく単なる例として、例示された形態では、シーン910において損傷を受けた建物は、シーン916において損傷のない状態で示されている。これは、生成された保存データでインスタンス化されたとき、建物は損傷を受けていない状態にあるが、ユーザ保存データがロードされると、建物は損傷した状態で示されるためである。同様の概念は、ビデオゲームのゲームプレイ中に提示される仮想シーン内のオブジェクトの任意のプロパティまたは属性に拡張され得ることを理解すべきである。ビデオゲームのためのユーザ保存データがない場合、オブジェクトは、ユーザ保存データのデフォルト値に一致しないデフォルト値を有する可能性があり、したがって、ユーザ保存データが適用されたときに生じる方法とは異なる方法で提示され得る。しかしながら、ユーザは、クラウドビデオゲームのためのユーザの保存データの移行及びロードを待たずに、即座にゲームプレイを開始することができる。
セッション番号3中のビデオゲームのインスタンス化及びゲームプレイと実質的に同時に、データセンタ番号1からデータセンタ番号2への移行を含む、クラウドビデオゲームのためのユーザの保存データが配置され、読み出される。進捗位置Dにおいて、ユーザ保存データは、参照番号918によって示されるように、ゲームプレイセッション番号3と統合される。これは、セッション番号3の間にそのポイント(進捗位置D)までに発生したゲームプレイと、ユーザ保存データとを照合するプロセスを伴う場合がある。例えば、ゲームプレイセッション番号3のオブジェクトのプロパティ及び属性は、ユーザの保存データによって更新されてよい。ユーザの保存データはさらに、発生したゲームプレイによって更新されてよい。ユーザの保存データは、参照番号922によって示されるように、進捗位置Eでのゲームプレイの終了時に記憶/更新されてよい。ゲームプレイが進捗位置Eに到達すると、シーン920が提示される。
図10Aは、本開示の形態による、クラウドゲーミングサービスを提供するシステムを例示する。クラウドゲーミングシステム1080は、ネットワーク1006を介して互いに通信し、ユーザ1000によって操作されるクライアントデバイス1002にクラウドゲーミングサービスを提供するいくつかの構成要素を含む。クラウドゲーミングシステム1080は、クラウドゲーミングシステムのユーザによるクラウドゲーミングアクティビティに関するデータ及びサービスを管理するように構成されるクラウドホスティングシステム1008を含む。クラウドホスティングシステムは、クライアントデバイス1002からの要求を(ネットワーク1006を介して)受信及び応答するクラウドゲーミングサーバ1012を含む。クラウドゲーミングサーバ1012は、例えば、クラウドビデオゲームのゲームプレイを開始する要求を受信し、これに応答して、クライアントデバイス1002をデータセンタ1048またはデータセンタ1062などのデータセンタに割り当て、クラウドビデオゲームの実行及びストリーミングを実行することができる。
クラウドホスティングシステム1008はさらに、ユーザ1000のユーザアカウントデータ1034を管理するように構成されるユーザアカウントマネージャ1010を含み、ユーザアカウントデータ1034は、ユーザアカウントデータストレージ1032に記憶される。ユーザアカウントデータ1034は、ユーザのアカウント及びそのクラウドゲーミングサービスに関する様々な種類のデータを含む。一例として、ユーザアカウントデータ1034は、認証情報データ1036、アプリケーションデータ1038、アクセスロケーションデータ1040、ユーザプロファイルデータ1042、アプリケーションプレイ履歴1044、ソーシャルデータ1046などを含んでよい。
認証情報データは、例えば、サブスクリプション、サービス、クレジットなどを識別するデータなど、クラウドゲーミングサービスに関するユーザアカウントの許可及びアクセス権を識別するデータを含むことができる。アプリケーションデータ1038は、例えば、購入済みのアプリケーション/ゲームを識別するデータ、ユーザアカウントに関する所与のアプリケーション/ゲームの構成またはバージョン、所与のアプリケーション/ゲームに関するユーザ専用データなど、特定のアプリケーション/ゲームに関するデータを含むことができる。
アクセスロケーションデータ1040は、ユーザ1000がクラウドゲーミングシステム1080にアクセスした位置、例えば、地理的位置または領域(例えば、座標、市、州、国)、ip/ネットワークアドレス情報などを識別するデータを含むことができる。アクセスロケーションデータ1040はさらに、ユーザのクライアントデバイス1002がクラウドゲーミングシステムからビデオゲームをストリーミングした特定のデータセンタを識別するデータを含んでよい。
ユーザプロファイルデータ1042は、人口統計情報(例えば、年齢、性別、居住地、所得、民族性、言語、教育など)、連絡先情報(例えば、電子メール、電話番号など)、ユーザの嗜好、ユーザの関心、通知/通信設定など、ユーザの特徴を識別するデータを含む。いくつかの形態では、ユーザの関心及び嗜好は、クラウドゲーミングシステム上のユーザのアクティビティに基づいて、システムによって決定することができ、例えば、興味は、購入済みのゲーム、ゲームプレイ履歴、視聴ビデオ、閲覧履歴、ソーシャルネットワークアクティビティなどを基に推定される可能性があることが理解されるだろう。
アプリケーションプレイ履歴データ1044は、例えば、プレイまたはアクセスしたゲーム/アプリケーション、所与のゲームのゲームプレイ時間、所与のゲームのゲームプレイの継続時間、所与のゲームのゲームプレイの合計時間など、ユーザ1000の過去のゲームプレイアクティビティを識別するデータを含む。アプリケーションプレイ履歴データ1044は、アクセスロケーションデータ1040と相関しており、ユーザ1000がどの位置からどのゲームをプレイしたかを識別することができる。
ソーシャルデータ1046は、ユーザ1000のソーシャルネットワークを識別するデータならびにユーザに関するソーシャルネットワーク上のアクティビティを含むことができる。ソーシャルネットワークは、クラウドゲーミングシステム1080の一部であるゲーミング専用のソーシャルネットワークとすることができる、あるいはクラウドゲーミングシステム1080からアクセス可能なサードパーティのソーシャルネットワークであってもよい。ソーシャルデータ1046はさらに、ユーザのソーシャルグラフを識別するデータを含み、これには、ユーザ1000のソーシャルグラフのメンバである他のユーザを識別するデータが含まれる。
上記の通り、ユーザアカウントマネージャ1010は、ユーザアカウントデータ1034を管理し、これには、ユーザのゲームプレイアクティビティに基づいて、ユーザアカウントデータ1034を更新することが含まれ得る。例えば、ユーザアカウント管理1010は、ユーザ1000による所与のクラウドビデオゲームのゲームプレイに基づき、アプリケーションデータ1038及び/またはアプリケーションプレイ履歴1044を更新し得る。
クラウドホスティングシステムはさらに、クライアントデバイス1002などのクライアントデバイスを、ビデオゲームストリーミングサービスを供給するデータセンタ1048及び1062などのデータセンタに割り当てすることを管理するように構成されたデータセンタマネージャ1020を含む。データセンタマネージャ1020は、データセンタロケーションデータ1022を含み、データセンタロケーションデータ1022は、様々なデータセンタ(例示された形態では、データセンタ1048及び1062を含む)の位置を識別するデータを含む。
データセンタアプリケーション及びサービスモジュール1024は、所与のデータセンタから利用可能な特定のアプリケーション/ゲーム及びサービスを識別するデータを提供する。データは、ゆえに、データセンタからのストリーミングに利用可能な特定のゲームタイトルならびに所与のデータセンタによって供給されるサービスを識別することができる。いくつかの形態では、データセンタ内のゲーム機に特定のクラウドビデオゲームをプリロードしてよく、データセンタアプリケーション及びサービスモジュール1024は、既にプリロードされてストリーミングに利用可能なゲーム機を含む、所与のデータセンタにおけるゲーム機の現在の状態を識別するデータを提供してよい。このようなデータに基づいて、データセンタマネージャは、ユーザがゲームプレイを要求するビデオゲームがプリロードされている利用可能なゲーム機を有する所与のデータセンタに、所与のユーザのクライアントデバイスを割り当ててよい。
データセンタマネージャはさらに、データセンタの現在及び過去の性能(例えば、ストリーミングデータ速度(ダウンストリーム/アップストリーム)、ゲーム機利用、様々な位置からの往復ネットワーク時間など)を識別するデータを提供することができるデータセンタ性能指標モジュール1026を含んでよい。データセンタ性能指標モジュール1026は、所与のデータセンタの性能及び利用に関するリアルタイム指標を提供することができ、したがって、所与のデータセンタへのユーザクライアントデバイスの割り当てに影響を及ぼすデータを提供し得る。例えば、そのようなデータは、データセンタ間での負荷分散を提供するために利用されてよく、複数のデータセンタによって現在行われている相対負荷に少なくとも部分的に基づいて、クライアントデバイスがデータセンタに割り当てられる。
例示された形態では、データセンタサーバ1050、ゲーム機(複数可)1052及びビデオサーバ1054を含む、第1のデータセンタ1048が示されている。一例として、第1のデータセンタ1048は、図9を参照して上に記載したデータセンタ番号1の場合がある。図10Aを続けて参照すると、ゲーム機1052は、その上でクラウドビデオゲームの実行が可能になる任意のハードウェア/ソフトウェア構成を有することができることが理解されるだろう。例えば、ゲーム機は、ゲームコンソールまたは同等のハードウェア、パーソナルコンピュータ、サーバコンピュータ、クラウドビデオゲームに適切な実行環境を提供するように構成された仮想マシンなどであってもよい。ゲーム機1052には、クラウドビデオゲームがロードされており、クラウドビデオゲームの実行可能なコードはゲームタイトルストレージ1056から読み出される。
データセンタサーバ1050は、クラウドホスティングシステムからの要求を受信して応答する。例えば、クラウドゲーミングサーバ1012は、クライアントデバイス1002のクラウドビデオゲームのゲームプレイを開始する要求をデータセンタサーバ1050に送信してよい。データセンタサーバ1050は、これに応答してクライアントデバイス1002をゲーム機1052に割り当ててよく、ゲーム機1052にはクラウドビデオゲームがロードされるか、またはプリロードされてよい。データセンタ1048は、クラウドビデオゲームのためのユーザ保存データ1060を含む、保存データストレージ1058を含む。ここで説明するシナリオでは、クラウドビデオゲームのためのユーザ保存データ1060が、ゲームプレイがストリーミングされるデータセンタ1048に記憶されることが判断されてよく、したがって、ゲーム機1052にもクラウドビデオゲームのためのユーザ保存データ1060がロードされる。
クラウドビデオゲームのためのユーザ保存データがデータセンタ1048に記憶されるかどうかの判断は、いくつかの形態では、ゲーム機またはデータセンタサーバによって行うことができることが理解されるだろう。いくつかの形態では、クラウドビデオゲームのためのユーザの保存データの位置は、例えば、アプリケーションデータ1038の一部として、ユーザアカウントデータ1034の一部として記憶することができ、ユーザアカウントマネージャ1010によって読み出されて、データセンタサーバ1050に渡されてよく、これによって、ゲームプレイの迅速な開始を容易にするために、ゲーム機1052にユーザ保存データをロードするか、または汎用保存データをロードするかどうかを判断してよい。
ゲーム機1052は、クラウドビデオゲームを実行し、ビデオサーバ1054に伝送されるビデオコンテンツを生成する。ビデオサーバ1054は、ネットワーク1006を介してクライアントデバイス1002にストリーミングされるビデオデータにビデオコンテンツを符号化及び/または暗号化する。クライアントデバイス1002は、ビデオデータを復号及び/または解読し、結果として生じるビデオコンテンツをテレビまたはHMDなどのディスプレイデバイス1004上にレンダリングする。クライアントデバイス1002は、ユーザ1000からの対話型入力(例えば、コントローラデバイスまたはHMDを経由して、または画像キャプチャ及び処理を通じて)を受信し、入力データを生成してネットワーク1006を介してゲーム機1052に送信する。入力データはゲーム機1052によって処理され、クラウドビデオゲームの実行を駆動して、クラウドビデオゲームの後続のゲーム状態を定義する。
データセンタ1048を経由するクラウドビデオゲームのゲームプレイの終了時に、クラウドビデオゲームのためのユーザの保存データがユーザ保存データ1060として保存/更新される。アプリケーションデータ1038及びアプリケーションプレイ履歴1044はさらに、クラウドビデオゲームの直近のゲームプレイセッションに基づいて、ユーザアカウントマネージャ1010によって適宜更新されてよい。例えば、アプリケーションデータ1038は、クラウドビデオゲームのコンテキスト内のユーザの最後の進捗位置を識別するデータ、ならびにユーザの保存データの位置(データセンタ1048において)を含むように更新されてよい。
クラウドビデオゲーム後続のゲームプレイセッションは、別のデータセンタ1062でインスタンス化されてよい。いくつかの形態では、データセンタ1062は、図9を参照して記載したデータセンタ番号2であってもよい。図10Aを続けて参照すると、データセンタ1062は、データセンタ1048と同様の構成要素を含み、データセンタサーバ1064、ゲーム機1066(複数可)、ビデオサーバ1068、ゲームタイトルストレージ1070及び保存データストレージ1072を含む。データセンタマネージャ1020は、データセンタ1062の現在のロードレベル及びデータセンタ1048などの他の利用可能なデータセンタ、要求されたクラウドビデオゲームをロードまたは場合によってはプリロードし得る利用可能なゲーム機、利用可能なデータセンタへのクライアントデバイスの近接性、クラウドビデオゲームのためのユーザ保存データの位置などを含む様々な要素に基づいて、クライアントデバイス1002をデータセンタ1062に割り当ててよい。
この場合、クラウドビデオゲームのセッションをインスタンス化するために、データセンタマネージャによって、クライアントデバイス1002がデータセンタ1062に割り当てられることが判断される。ユーザアカウントマネージャ1010は、アプリケーションデータ1038から、クラウドビデオゲームのためのユーザの保存データがデータセンタ1048に記憶されていると判断し得る。したがって、データセンタマネージャは、ゲーム機1066に汎用保存データをロードするようデータセンタサーバ1064に指示してよい。これは、クラウドビデオゲームのためのユーザの保存データを最初にデータセンタ1062に移行する必要があり、ユーザがゲームプレイを開始するのを遅延させる可能性がある。
ゲーム機1066に汎用保存データ及び/またはクラウドビデオゲームのゲームプレイをロードするのと同時に、クラウドビデオゲームのためのユーザ保存データを管理する保存データサービス1028は、保存データ移行マネージャ1030を起動して、ユーザ保存データ1060のデータセンタ1062への送信を管理し、データセンタ1062では、ユーザ保存データ1074として保存データストレージ1072に記憶される。ユーザ保存データの送信後、ユーザ保存データは、これまでに発生したクラウドビデオゲームのゲームプレイに適用及び統合するか、または照合することができる。
いくつかの形態では、ゲーム機にユーザ保存データをロードするか、汎用保存データをロードするかの判断は、ユーザ保存データのロードの推定完了時間に部分的に基づいて行われ、これは、クラウドビデオゲームのためのユーザ保存データの量、ユーザ保存データの位置及び送信先のデータセンタの位置、ネットワーク状態、ゲーム機のプレロードまたは非プレロード状態などの要素を基に判断することができる。いくつかの形態では、推定完了時間が所定の閾値時間を超える場合、ゲーム機はユーザ保存データを最初にロードするわけではなく、汎用保存データをロードする。
本開示の形態によるクラウドゲーミングシステムでは、クラウドビデオゲームのゲームプレイのためにビデオのストリーミングを開始する前に、ストリームテストを行うことができる。通常、対話型ゲームプレイのクラウドビデオゲームを要求すると、ユーザのクライアントデバイスはデータセンタでゲーム機に割り当てられる。ゲーム機を起動して、実行可能なクラウドビデオゲームをロードする、及び/またはクラウドビデオゲームの実行のための汎用保存データまたはユーザ保存データをロードする必要があり得る。これらのアクティビティの後、ストリームテストを行い、クライアントデバイスに対して、サービスのゲームストリーミング品質がテストされる。しかしながら、ストリームテストの性能は、ゲームプレイの開始前にさらなる遅延を引き起こす。したがって、本開示の形態により、ストリームテストは、ゲーム機の起動及び初期化と並行的に行うことができる。
図10Bは、本開示の形態による、クラウドビデオゲームのユーザ保存データの移行及びユーザ保存データへのポインタの更新を例示する。一例として、クラウドビデオゲームのためのユーザ保存データの位置は、ユーザのアカウントに関連して記憶することができる。例示された形態では、上述のアプリケーションデータ1038は所与のユーザのユーザアカウントデータ1034の一部であって、ユーザアカウントデータストレージ1032に記憶される。ユーザのアプリケーションデータ1038は、第1のアプリケーション(またはゲーム)AのためのアプリケーションAデータ1080ならびに第2のアプリケーション(またはゲーム)BのためのアプリケーションBデータ1084を含む。アプリケーションAのためのユーザ保存データ位置1081は、ユーザ保存データ位置を定義するポインタ1082(例えば、ネットワークアドレスまたは他の位置の識別子)を定義することができる。
より具体的には、例示された形態では、ポインタ1082は、アプリケーションAのユーザ保存データ1089の現在の位置を、データセンタA1088に記憶されているものとして識別する。同様に、アプリケーションBのユーザ保存データ位置1085は、アプリケーションBのためのユーザ保存データ1091の現在位置を、データセンタB1090に記憶されているものとして識別するポインタ1086を定義することができる。異なるゲームのユーザ保存データの位置は、ユーザのプレイ履歴及びそれぞれのクラウドビデオゲームが最後にストリーミングされた特定のデータセンタ位置に応じて、異なるデータセンタに配置されてよいことが理解されるだろう。
ユーザが異なる位置からクラウドゲーミングシステムにアクセスし、そのゲームプレイセッションが異なるデータセンタからストリーミングされるため、特定のビデオゲームのユーザ保存データは、1つのデータセンタから次のデータセンタに移行される。ゆえに、所与のビデオゲームに対してユーザ保存データの現在の位置を追跡することが重要である。例えば、図10Bを続けて参照すると、ユーザはアプリケーションAのセッションをデータセンタC1092からストリーミングしてよく、ゆえに、ユーザ保存データ1089はデータセンタC1092に移行され、アプリケーションAのユーザ保存データ1093を定義する。アプリケーションAのユーザ保存データ位置1081は、ゆえに、データセンタC1092でのアプリケーションAのユーザ保存データ1093の新しい位置を識別する新しいポインタ1083を定義するように更新される。アプリケーションBも同様に、ユーザはアプリケーションBのセッションをデータセンタA1088からストリーミングしてよく、ゆえに、アプリケーションBのユーザ保存データ1091はデータセンタA1088に移行され、アプリケーションBのユーザ保存データ1094を定義する。アプリケーションBのためのユーザ保存データ位置1085は、ゆえに、データセンタA1088でのアプリケーションBのユーザ保存データ1094の位置を識別する新しいポインタ1087を定義するように更新される。
図11は、本開示の形態による、クラウドビデオゲームをストリーミングするためにゲーム機を起動するのと同時にストリームテストを行う方法を例示する。タイムライン1100は、クライアントデバイスのイベントを示し、一方、タイムライン1102は、クライアントデバイスと通信し得る1つ以上のサーバを含むクラウドゲーミングシステムのイベントを示す。動作方法1104では、クライアントデバイスはクラウドゲーミングシステムに接続し、クラウドビデオゲームのゲームプレイを開始するように要求する。この要求に応答して、動作方法1106では、ゲーム機は、要求されたクラウドビデオゲームの実行のために初期化される。すなわち、ゲーム機は、起動されてクラウドビデオゲーム用の実行可能なコードをロードし、ユーザとの対話型ゲームプレイセッションのために構成されてよく、これには、ゲームプレイセッションのためのユーザ保存データまたは汎用保存データのロードが含まれ得る。いくつかの形態では、ゲーム機は、クラウドビデオゲームのゲームプレイを開始する要求に応答して起動されるコンソールである。
ゲーム機の初期化と実質的に同時に、動作方法1108では、クライアントデバイスとクラウドゲーミングシステムのサーバとの間でストリームテストが開始される。ストリームテストは、ユーザのクライアントデバイスにストリーミングされるビデオのサービス品質と、クライアントデバイスからクラウドゲーミングシステムに伝送されるデータをテストするように構成される。ストリームテストには、最大ダウンストリーム/アップストリームデータ速度(またはダウンストリーム/アップストリーム帯域幅)、往復時間、遅延、ドロップされたパケット率、エラー率など、ゲームストリーミングのサービス品質を示し得るネットワーク性能指標のテストを含むことがある。ストリームテストはさらに、クライアントデバイスのハードウェア及び/またはソフトウェア構成の識別及び/またはテストを含み得る。例えば、クライアントデバイスのハードウェア構成は、ストリームテストの一部として識別され、レンダリングのためのビデオコンテンツを生成するために、ビデオデータを復号及び/または解読する目的でクライアントデバイスの処理能力を決定し得る。さらに、クライアントデバイスのソフトウェア構成は、ストリームテストの一部として識別されてよく、更新がゲームストリーミングの目的で利用可能かつ推奨される、または必要であるかどうかを判断し得る。例えば、ゲームストリーミングを最適化するために、復号器または解読ソフトウェア更新をクライアントデバイスに適用する必要があり得る。
動作方法1110では、ストリームテストが完了する。ストリームテストの結果に基づいて、クラウドビデオゲームのストリーミングのためのパラメータには、ゲーム機によるクラウドビデオゲームの実行用パラメータ、クラウドビデオゲームの実行によって生成されるビデオコンテンツの符号化/暗号化用パラメータ、クライアントデバイスによって受信されるビデオデータの復号/解読用パラメータ、及び/またはクライアントデバイスからクラウドゲーミング機への入力データの送信用パラメータを含むが、これらに限定されないパラメータが設定され得る。
ストリームテストが完了し、ゲーム機が初期化された後、クラウドビデオゲームの対話型ゲームプレイが開始され、クラウドビデオゲームからの第1のビデオコンテンツがストリーミングされる。クラウドビデオゲームからのビデオコンテンツのストリーミングは、ゲーム機によるクラウドビデオゲームの実行によるビデオコンテンツの生成、生成されたビデオコンテンツのビデオデータへの符号化/暗号化、クライアントデバイスへのビデオデータの伝送、及びクライアントデバイスによるディスプレイへのレンダリングのために、伝送されたビデオデータをビデオコンテンツに復号/解読することを伴う場合があることが理解されるだろう。
図12は、本開示の形態による、クライアントデバイスにストリームテストを行うように構成されるクラウドゲーミングサービスを提供するシステムを例示する。例示された形態では、クラウドゲーミングシステムは、クラウドホスティングシステム1208ならびにデータセンタ1220及び1230を含むように定義される。クラウドホスティングシステム1208は、クライアントデバイス1202からネットワーク1206を介して要求を受信するサーバ1210を含み、ここからユーザ1200はクラウドゲーミングシステムとインターフェースをとる。サーバ1210は、クラウドゲーミングシステム上のユーザのアカウントに関連するユーザアカウントデータ1216にアクセスし、クライアントデバイス1202からの要求に応答するためにデータを読み出し得る。
サーバ1210は、クラウドビデオゲームのゲームプレイのストリーミングを開始する要求をクライアントデバイス1202から受信してよく、それに応答して、サーバ1210は、データセンタ割り当て論理1214を有するデータセンタマネージャ1212を起動し、データセンタ割り当て論理1214は、クラウドビデオゲームのセッションをインスタンス化するためにクライアントデバイス1202をデータセンタに割り当てるように構成され、そのデータセンタからクラウドビデオゲームはストリーミングされる。データセンタ割り当て論理1214は、上記の通り、クライアントデバイス1202の位置及びデータセンタへの近接性、ネットワーク状態、データセンタにおけるゲーム機の利用可能性、データセンタにおけるゲーム機のプレロード/アンロード状態、データセンタ利用率、負荷分散、ユーザ1200によって(最も)直近で使用されたデータセンタなどを含む、様々な要因に基づいて、クライアントデバイス1202を所与のデータセンタに割り当て得ることが理解されるだろう。
例示された形態では、クライアントデバイス1202はデータセンタ1220に割り当てられている。ゆえに、データセンタマネージャは要求されたビデオゲームをデータセンタサーバ1222に伝達し、データセンタサーバは、要求されたビデオゲームのために、ゲーム機1224の初期化を開始する。上記の通り、初期化は、ゲーム機の起動、クラウドビデオゲームの実行可能なコードのロードならびにクラウドビデオゲームのためのユーザ保存データのロードを含むことができる。ゲーム機1224の初期化と同時に、データセンタサーバ1222はさらに、ビデオサーバ1226のストリームテスト論理1228を起動して、データセンタ1220とクライアントデバイス1202との間のストリームテストを実行する。
いくつかの形態では、ストリームテスト論理1228は、ネットワーク1206を介して、符号化/暗号化されたテストビデオデータを復号/解読のためにビデオサーバ1226からクライアントデバイス1202に送信するように構成される。このようにして、ネットワークを介したビデオデータの伝送は、クライアントデバイス1202の復号/解読機能と共にテストすることができる。ストリームテストは、ゲーム機の初期化と並行的に実行されることが理解されるだろう。これは、ゲーム機及びビデオサーバの別個の機能によって部分的に容易になり、前者はクラウドビデオゲームを実行するように構成され、後者はビデオストリーミングの作業を処理するように構成される。ゆえに、ビデオストリーミングは、ゲーム機上でのクラウドビデオゲームの初期化と同時にテストすることができる。ダウンストリームのビデオ伝送について説明したが、クライアントデバイス1202からゲーム機1224への入力データの伝送などのアップストリームデータ伝送も、ゲーム機のロードと並行的にテストされてよいことが理解されるだろう。
いくつかの形態では、ストリームテストの結果が特定の要件を満たさない場合、または異なるデータセンタからより良い結果を得ることができると判断される場合、クライアントデバイス1202をデータセンタ1230などの別のデータセンタに再度割り当ててよく、データセンタ1230は、同様の構成要素をデータセンタサーバ1232、ゲーム機1234及びビデオサーバ1236の形態で含む。同様のストリームテストは、ゲーム機1234の初期化と並行的に行ってよい。
図13は、本開示の形態による、あるデータセンタから別のデータセンタへのゲームプレイセッションの移行を概念的に例示する。時間T1において、ユーザ1300は東京(第1の位置)に位置し、ネットワーク1304を介してクラウドゲーミングシステム1305にアクセスするためにクライアントデバイス1302を操作する。クライアントデバイス1302は、ユーザ1300に近接している東京データセンタ1306に割り当てられる。動作1312によって示されるように、クラウドビデオゲームは東京データセンタ1306で実行され、ユーザ1300のためにクラウドビデオゲームのセッションAを定義する。セッションAはクラウドビデオゲームの対話型ゲームプレイを提供し、実行中のビデオゲームのビデオは、ネットワーク1304を介して東京データセンタからクライアントデバイス1302にストリーミングされ、クライアントデバイス1302からの入力データは、ネットワーク1304を介して東京データセンタ1306に伝送され、ビデオゲームの実行を駆動する。クラウドビデオゲームのセッションAの終了時に、動作1314によって示されるように、ユーザ保存データが東京データセンタに記憶される。
後続時間T2では、ユーザ1300はサンフランシスコ(第2の位置)に移動した。ユーザ1300はクライアントデバイス1308(クライアントデバイス1302と同じか、または異なるデバイスであってよい)を使用して、クラウドゲーミングシステム1305にアクセスする。ユーザ1300及びユーザのクライアントデバイス1308はもはや東京には配置されていないが、クラウドビデオゲームのためのユーザの保存データはいまだに東京データセンタ1306に配置されている。したがって、クラウドビデオゲームのゲームプレイを開始及び/または再開する要求を受信すると、クラウドゲーミングシステム1305は東京データセンタでのゲームプレイを開始し、これによって、ユーザのゲーム保存データが即座にゲーム機にロードされ、ユーザに対して遅延を最小化することができる。動作1316によって示されるように、ユーザの保存データはロードされ、クラウドビデオゲームはセッションCを定義するために実行され、これには、東京データセンタ1306からサンフランシスコのクライアントデバイス1308にビデオをストリーミングすること、ならびにクライアントデバイス1308から東京データセンタ1306に入力データを返送することが含まれる。
セッションBのロード及び/または実行と実質的に同時に、動作1318で示されるように、ストリームテストまたはサービス品質を評価することができる。現在の構成におけるクラウドビデオゲームをストリーミングするクラウドゲーミングシステムは最適ではなく、さらに、動作1320で示されるように、サンフランシスコデータセンタ1310のために、ストリームテストまたはサービス品質評価を行ってよい。結果は、ゲームプレイセッションをサンフランシスコデータセンタ1310に移行すべきであることを示してよく、したがって、動作1320では、クラウドビデオゲームのためのユーザ保存データはサンフランシスコデータセンタ1310に移行される。動作1322では、ゲームプレイセッションは、サンフランシスコデータセンタ1310に移行され、サンフランシスコデータセンタ1310においてクラウドビデオゲームの実行によって定義されるセッションCを定義し、これには、ネットワーク1304を介して、ビデオをサンフランシスコデータセンタ1310からクライアントデバイス1308にストリーミングし、そこから入力データを受信してクラウドビデオゲームの実行を駆動することとを含む。
いくつかの実施形態では、クライアントは、汎用コンピュータ、専用コンピュータ、携帯ゲーミングコンソール、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、モバイルコンピューティングデバイス、ポータブルゲーミングデバイス、携帯電話、セットトップボックス、ストリーミング媒体インターフェース/デバイス、スマートテレビもしくはネットワークディスプレイ、または本明細書で定義されるクライアントの機能性を満たすように構成することができる任意の他のコンピューティングデバイスとすることができる。一実施形態では、クラウドゲーミングサーバは、ユーザによって利用されているクライアントデバイスの種類を検出し、ユーザのクライアントデバイスに適切なクラウドゲーミング体験を提供するように構成される。例えば、画像設定、音声設定及び他の種類の設定をユーザのクライアントデバイスに対して最適化してよい。
図14は、情報サービスプロバイダアーキテクチャの実施形態を例示する。情報サービスプロバイダ(ISP)1470は、地理的に分散され、ネットワーク1486を経由して接続されたユーザ1482に多数の情報サービスを配信する。ISPは、株価の最新版、または放送メディア、ニュース、スポーツ、ゲーミングなどの様々なサービスのうちの1種類のみのサービスを配信することができる。追加的には、各ISPによって供給されるサービスは動的である、すなわち、サービスは任意の時点で追加または削除することができる。ゆえに、特定の種類のサービスを特定の個人に提供しているISPは、経時的に変化する可能性がある。例えば、ユーザは、自分の地元にいる間はユーザに近接しているISPによってサービスを受けてよく、ユーザは、異なる都市に旅行するときには異なるISPによってサービスを受けてよい。地元のISPは、必要な情報及びデータを新しいISPに送信し、これによって、ユーザ情報が、新しい都市のユーザに「追従」して、データがユーザにより近くなり、アクセスがより容易になる。別の実施形態では、マスタ−サーバ関係を、ユーザのための情報を管理するマスタISPと、マスタISPからの制御を受けてユーザと直接的にインターフェースをとるサーバISPとの間に確立してよい。別の実施形態では、クライアントが世界中を移動するときに、あるISPから別のISPにデータを送信することにより、ユーザにサービスを提供するために良好な位置にあるISPを、これらのサービスを配信するISPにする。
ISP1470は、アプリケーションサービスプロバイダ(ASP)1472を含み、このプロバイダは、コンピュータベースのサービスを、ネットワークを介して顧客に提供する。ASPモデルを使用して供給されるソフトウェアは、オンデマンドソフトウェアまたはサービスとしてのソフトウェア(SaaS)と呼ばれる場合もある。(顧客関係管理などの)特定のアプリケーションプログラムへのアクセスを提供する単純な形態は、HTTPなどの標準プロトコルを使用することによるものである。アプリケーションソフトウェアはベンダーのシステム上に常駐し、ベンダーによって提供された専用のクライアントソフトウェア、またはシンクライアントなどの他のリモートインターフェースによって、HTMLを使用してウェブブラウザを通じてユーザによってアクセスされる。
広範な地理的領域にわたって配信されるサービスは、クラウドコンピューティングを使用することが多い。クラウドコンピューティングは、動的にスケーラブルであり、多くの場合にはインターネットを介したサービスとして仮想化リソースが提供されるコンピューティングの方式である。ユーザは、ユーザをサポートする「クラウド」の技術基盤の専門家である必要はない。クラウドコンピューティングは、サービスとしてのインフラストラクチャ(IaaS)、サービスとしてのプラットフォーム(PaaS)及びサービスとしてのソフトウェア(SaaS)などの様々なサービスに分類することができる。クラウドコンピューティングサービスは、ウェブブラウザからアクセスされる共通のビジネスアプリケーションオンラインを提供することが多く、一方ソフトウェア及びデータはサーバ上に記憶されている。クラウドという用語は、インターネットが、コンピュータネットワーク図においてどのように表され、それが隠蔽している複雑な基盤のどのような抽象概念であるかに基づき、(例えば、サーバ、ストレージ及び論理を使用した)インターネットの例えとして使用される。
さらに、ISP1470は、シングルまたはマルチプレイヤのビデオゲームをプレイするためにゲームクライアントによって使用されるゲーム処理サーバ(GPS)1474を含む。インターネットを介してプレイされる大部分のビデオゲームは、ゲームサーバへの接続を経由して動作する。通常、ゲームは、プレイヤからデータを収集し、それを他のプレイヤに配信する専用のサーバアプリケーションを使用する。これは、ピアツーピア構成より効率的かつ効果的であるが、個別のサーバがサーバアプリケーションをホストすることが必要になる。別の実施形態では、GPSがプレイヤ間の通信を確立し、プレイヤのそれぞれのゲームプレイデバイスが、集中型GPSに依存することなく情報を交換する。
専用GPSは、クライアントから独立して動作するサーバである。このようなサーバは、通常、データセンタに配置された専用ハードウェア上で動作し、より多くの帯域幅及び専用の処理能力を提供する。専用サーバは、大部分のPCベースのマルチプレイヤゲームのためにゲームサーバをホストするのに好ましい方法である。大規模なマルチプレイヤオンラインゲームは、一般的にはゲームタイトルを所有するソフトウェア会社によってホストされた専用サーバ上で動作し、これらのサーバによるコンテンツの制御及び更新を可能にする。
放送処理サーバ(BPS)1476は、音声信号またはビデオ信号を視聴者に配信する。非常に狭い範囲の視聴者に対する放送は、ナローキャスティングと呼ばれる場合がある。放送配信の最終行程は、どのようにリスナーまたは視聴者に信号が到達するかということであり、信号は、ラジオ局またはテレビ局と同様に無線を介してアンテナ及び受信機に到達する場合があり、または、局を経由して、もしくは直接ネットワークから、有線テレビもしくは有線ラジオ(もしくは「ワイヤレスケーブル」)を通じて到達する場合がある。インターネットはさらに、特に信号及び帯域幅の共有が可能なマルチキャスティングにより、受信者にラジオまたはテレビのいずれかを提供してよい。過去には、放送は、国営放送または地方放送などの地理的領域によって範囲が定められてきた。しかしながら、高速なインターネットの普及により、世界のほとんどあらゆる国にコンテンツが到着することが可能になったため、放送は地理によって制限されない。
ストレージサービスプロバイダ(SSP)1478は、コンピュータストレージ空間及び関連する管理サービスを提供する。SSPは、定期的なバックアップ及びアーカイブ処理も提供する。サービスとしてストレージを供給することにより、ユーザは、必要に応じてより多くのストレージを注文することができる。別の大きな利点は、SSPがバックアップサービスを含むことであり、ユーザは、自分のコンピュータのハードディスクが故障した場合でもその全データを失うことはない。さらに、複数のSSPが、ユーザデータの全体的または部分的なコピーを有することができ、それによって、ユーザは、自分が位置する場所またはデータにアクセスするために使用されているデバイスとは別に効率的な方法でデータにアクセスすることが可能となる。例えば、ユーザは、自宅のコンピュータの個人ファイルに加えて、移動中に携帯電話の個人ファイルにアクセスすることができる。
通信プロバイダ1480は、ユーザに接続性を提供する。ある種類の通信プロバイダは、インターネットへのアクセスを供給するインターネットサービスプロバイダ(ISP)である。ISPは、ダイヤルアップ、DSL、ケーブルモデム、ファイバ、無線または専用の高速相互接続など、インターネットプロトコルデータグラムを配信するために適切なデータ伝送技術を使用して、その顧客を接続する。通信プロバイダは、電子メール、インスタントメッセージ及びSMSメールなどのメッセージングサービスを提供することもできる。別の種類の通信プロバイダは、インターネットへの直接のバックボーンアクセスを提供することによって帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダは、電気通信会社、データキャリア、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを供給するケーブルテレビ事業者などから構成されてよい。
データ交換部1488は、ISP1470内部のいくつかのモジュールを相互接続し、これらのモジュールを、ネットワーク1486を経由してユーザ1482に接続する。データ交換部1488は、ISP1470の全てのモジュールが極めて近接している狭い領域をカバーすることができ、または、様々なモジュールが地理的に分散されているときには広い地理的領域をカバーすることができる。例えば、データ交換部1488は、データセンタの筐体内の高速ギガビットイーサネット(登録商標)(もしくはそれより高速なもの)、または大陸間の仮想エリアネットワーク(VLAN)を含むことができる。
ユーザ1482は、クライアントデバイス1484を使用してリモートサービスにアクセスし、このデバイスは、少なくともCPU、メモリ、ディスプレイ及び入出力を含む。クライアントデバイスは、PC、携帯電話、ネットブック、タブレット、ゲーミングシステム、PDAなどとすることができる。一実施形態では、ISP1470は、クライアントによって使用されるデバイスの種類を認識し、用いられる通信方法を調整する。他の場合では、クライアントデバイスは、ISP1470にアクセスするためにhtmlなどの標準的な通信方法を使用する。
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ及びその他を含む、様々なコンピュータシステム構成を使用して実施されてよい。本開示は、有線ベースのネットワークまたは無線ネットワークを通じてリンクされているリモート処理デバイスによってタスクが行われる分散型コンピューティング環境において実施することもできる。
上記の実施形態を念頭におくと、本開示は、コンピュータシステムにデータを記憶することを伴う様々なコンピュータ実施動作を用いることができることを理解するべきである。これらの動作は、物理量の物理的操作を必要とするものである。本開示の一部を形成する本明細書に記載した動作はいずれも有用な機械的動作である。本開示は、これらの動作を行うデバイスまたは装置にも関する。装置は、必要とされる目的のために特別に構成することができ、あるいは装置は、コンピュータに記憶されたコンピュータプログラムによって選択的に起動または構成される汎用コンピュータとすることができる。特に、本明細書の教示に従って記述されたコンピュータプログラムによって様々な汎用機を使用することができ、あるいは、より特化した装置を構成して必要とされる動作を行うことがより好都合となる場合がある。
本開示は、コンピュータ可読媒体上のコンピュータ可読コードとして具現化することもできる。代替的には、コンピュータ可読コードは、上記のデータ交換相互接続を使用してサーバからダウンロードされてよい。コンピュータ可読媒体は、データを記憶することができる任意のデータストレージデバイスであり、その後、このデータをコンピュータシステムによって読み出すことができる。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープならびに他の光学データストレージデバイス及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体は、ネットワークに結合したコンピュータシステム上に分散されたコンピュータ可読有形媒体を含むことができ、これによって、コンピュータ可読コードは、分散方式で記憶されて実行される。
動作方法を特定の順序で記載したが、オーバレイ動作の処理が所望の方法で行われる限り、動作の間に他のハウスキーピング動作が実行されてよく、あるいは、動作を調整してそれらがわずかに異なる時間に行われるようにしてよく、または、処理と関連した様々な間隔で処理動作が行われることを可能にするシステムに動作を分散させてよいことを理解すべきである。
前述の開示について、理解しやすくするために幾分詳細に説明してきたが、添付された特許請求の範囲内で一定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、例示であって限定的なものではないとみなされ、本開示は、本明細書に述べた詳細に限定されることはなく、記載された実施形態の範囲及び均等物の範囲内で修正され得る。
図15は、Sony(登録商標)Playstation 3(登録商標)エンターテイメントデバイスなどのゲーミングコンソールの全体システムアーキテクチャを模式的に例示し、このゲーミングコンソールは、本開示の一実施形態によるアバター制御システムを形態するためのコントローラと互換性を持ち得る。システムユニット1500には、システムユニット1500に接続可能な様々な周辺デバイスが設けられている。システムユニット1500は、いくつかの形態では、コンピューティングサーバとすることができる。システムユニット1500は、Cellプロセッサ1528、Rambus(登録商標)ダイナミックランダムアクセスメモリ(XDRAM)ユニット1526、専用のビデオランダムアクセスメモリ(VRAM)ユニット1532を有するリアリティシンセサイザグラフィックユニット1530、及び入出力ブリッジ1534を備える。システムユニット1500は、入出力ブリッジ1534を通じてアクセス可能な、ディスク1540aから読み出すためのBlu ray(登録商標)ディスクBD−ROM(登録商標)光ディスクリーダ1540及び取り外し可能なスロットインハードディスクドライブ(HDD)1536をさらに備える。任意には、システムユニット1500は、コンパクトフラッシュ(登録商標)メモリカード、Memory Stick(登録商標)メモリカード及びその他を読み込むためのメモリカードリーダ1538をさらに備え、このリーダは、入出力ブリッジ1534を通じて同様にアクセス可能である。
入出力ブリッジ1534はさらに、6つのユニバーサルシリアルバス(USB)2.0ポート1524、ギガビットイーサネット(登録商標)ポート1522、IEEE802.11b/g無線ネットワーク(Wi−Fi)ポート1520、及び最大7つのBLUETOOTH(登録商標)接続に対応可能なBluetooth(登録商標)無線リンクポート1518に接続されている。
動作中、入出力ブリッジ1534は、1つ以上のゲームコントローラ1502からのデータを含む、全ての無線、USB及びイーサネット(登録商標)データを処理する。例えば、ユーザがゲームをプレイするとき、入出力ブリッジ1534は、BLUETOOTH(登録商標)リンクを経由してゲームコントローラ1502からデータを受信し、それをCellプロセッサ1528に送り、このプロセッサは、それに応じてゲームの現在の状態を更新する。
無線、USB及びイーサネット(登録商標)ポートはさらに、ゲームコントローラ1502に加えて、リモコン1504、キーボード1506、マウス1508、Sony Playstation Portable(登録商標)エンターテイメントデバイスなどのポータブルエンターテイメントデバイス1510、EyeToy(登録商標)ビデオカメラ1512などのビデオカメラならびにマイクロホンヘッドセット1514などの他の周辺デバイスに接続性を提供する。したがって、このような周辺デバイスは、原則として、無線でシステムユニット1500に接続されてよく、例えば、ポータブルエンターテイメントデバイス1510は、Wi−Fiアドホック接続を経由して通信してよく、他方、マイクロホンヘッドセット1514は、BLUETOOTH(登録商標)リンクを経由して通信してよい。
これらのインターフェースのプロビジョンは、Playstation 3デバイスがさらに、デジタルビデオレコーダ(DVR)、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤ、ボイスオーバーIP電話、携帯電話、プリンタ及びスキャナなどの他の周辺デバイスとも潜在的に互換性を持つことを意味する。
加えて、レガシーメモリカードリーダ1516を、システムユニットにUSBポート1524を経由して接続することにより、Playstation(登録商標)デバイスまたはPlaystation 2(登録商標)デバイスによって使用される種類のメモリカード1548の読み込みを可能にしてよい。
本実施形態では、ゲームコントローラ1502は、BLUETOOTH(登録商標)リンクを経由してシステムユニット1500と無線通信するように動作可能である。しかしながら、ゲームコントローラ1502は、代わりにUSBポートに接続することができ、これによって、ゲームコントローラ1502の電池を充電するための電源も供給する。1つ以上のアナログジョイスティック及び従来の制御ボタンに加えて、ゲームコントローラは、各軸の平行移動及び回転に対応する、6つの自由度の動作に反応する。その結果、ゲームコントローラのユーザによるジェスチャ及び動きは、従来のボタンまたはジョイスティックコマンドに加えて、またはその代わりに、ゲームへの入力として変換されてよい。任意には、Playstation(商標)ポータブルデバイスなどの他の無線で使用可能な周辺デバイスをコントローラとして使用してよい。Playstation(商標)ポータブルデバイスの場合、付加的なゲームまたは制御情報(例えば、制御命令またはライブの数)をデバイスの画面に提供してよい。ダンスマット(図示せず)、光線銃(図示せず)、ステアリングホイール及びペダル(図示せず)、または即答クイズゲーム用の単一もしくはいくつかの大型ボタン(同様に図示せず)などの特注のコントローラなどの、他の代替的または補助的な制御デバイスをさらに使用してよい。
リモコン1504はさらに、BLUETOOTH(登録商標)リンクを経由してシステムユニット1500と無線通信するように動作可能である。リモコン1504は、Blu ray(商標)ディスクBD−ROMリーダ1540の動作及びディスク内容のナビゲーションに適した制御部を備える。
Blu ray(商標)ディスクBD−ROMリーダ1540は、従来の記録済みCD及び再記録可能なCD、ならびにいわゆるスーパーオーディオCDに加えて、Playstationデバイス及びPlaystation 2デバイスと互換性を持つCD−ROMを読み出すように動作可能である。リーダ1540は、従来の記録済みDVD及び再記録可能なDVDに加えて、Playstation 2デバイス及びPlaystation 3デバイスと互換性を持つDVD−ROMを読み出すようにも動作可能である。リーダ1540は、従来の記録済みBlu−Rayディスク及び再記録可能なBlu−RayディスクならびにPlaystation 3デバイスと互換性を持つBD−ROMを読み出すようにさらに動作可能である。
システムユニット1500は、リアリティシンセサイザグラフィックユニット1530を経由してPlaystation 3デバイスによって生成または復号された音声及びビデオを、音声及びビデオコネクタを通じて、ディスプレイ1544及び1つ以上のラウドスピーカ1546を有するモニタまたはテレビセットなどのディスプレイ及び音声出力デバイス1542に供給するように動作可能である。音声コネクタ1550は、従来のアナログ出力及びデジタル出力を含んでよく、一方、ビデオコネクタ1552は、コンポーネントビデオ出力、S−ビデオ出力、コンポジットビデオ出力及び1つ以上の高品位マルチメディアインターフェース(HDMI(登録商標))出力を様々に含んでよい。その結果、ビデオ出力は、PALもしくはNTSCなどの形式でよく、または720p、1080iもしくは1080pの高解像度であってもよい。
音声処理(生成、復号など)は、Cellプロセッサ1528によって行われる。Playstation 3デバイスのオペレーティングシステムは、Dolby(登録商標)5.1サラウンドサウンド、Dolby(登録商標)シアターサラウンド(DTS)及びBlu−ray(登録商標)ディスクからの7.1サラウンドサウンドの復号に対応する。
本実施形態において、ビデオカメラ1512は、単一の電荷結合素子(CCD)、LEDインジケータならびにハードウェアベースのリアルタイムデータ圧縮及び符号化装置を備え、これによって、圧縮ビデオデータは、システムユニット1500による復号のためのイントラ画像ベースのMPEG(モーションピクチャエキスパートグループ)標準などの適切な形式で伝送され得る。カメラLEDインジケータは、例えば、不利な照明条件を示すために、システムユニット1500からの適切な制御データに応答して照明するように構成されている。ビデオカメラ1512の実施形態は、USB、BLUETOOTH(登録商標)またはWi−Fi通信ポートを経由してシステムユニット1500に様々に接続されてよい。ビデオカメラの実施形態は、1つ以上の付属マイクロホンを含んでよく、さらに音声データを伝送可能であってもよい。ビデオカメラの実施形態では、CCDは高解像ビデオキャプチャに適した解像度を有してよい。使用中、例えば、ビデオカメラによってキャプチャされた画像は、ゲーム内に組み込まれてよいか、またはゲーム制御入力としてみなされてよい。
ここから
一般的に、システムユニット1500の通信ポートの1つを経由してビデオカメラまたはリモコンなどの周辺デバイスによって正常なデータ通信を行うために、デバイスドライバなどの適切なソフトウェアを提供すべきである。デバイスドライバ技術は周知であり、本明細書では詳細に説明しない。ただし、当業者は、デバイスドライバまたは類似のソフトウェアインターフェースが、記載された本実施形態において必要とされ得ることを認識していると言える。
図16は、本開示の形態による、ゲームシステム1600のブロック図である。ゲームシステム1600は、ネットワーク1615を経由して、1つ以上のクライアント1610にビデオストリームを提供するように構成される。ゲームシステム1600は、通常、ビデオサーバシステム1620及び任意にはゲームサーバ1625を含む。ビデオサーバシステム1620は、1つ以上のクライアント1610にサービスの最小品質でビデオストリームを提供するように構成される。例えば、ビデオサーバシステム1620は、ビデオゲーム内の視点の状態を変更するゲームコマンドを受信してよく、この状態の変化を反映する更新されたビデオストリームを、最短の遅延時間でクライアント1610に提供してよい。ビデオサーバシステムまた1620は、未定義の形式を含む多種多様な代替ビデオ形式でビデオストリームを提供するように構成されてよい。さらに、ビデオストリームはユーザに対して多種多様なフレームレートで提示するように構成されるビデオフレームを含んでよい。通常のフレームレートは、毎秒30フレーム、毎秒60フレーム、及び毎秒1620フレームである。しかしながら、本開示の代替的な実施形態には、より高いまたは低いフレームレートが含まれる。
本明細書にてそれぞれ1610A、1610Bなどと称されるクライアント1610は、頭部装着ディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、ハンドヘルドゲームプレイデバイス及び/またはその他を含んでよい。通常、クライアント1610は符号化されたビデオストリームを受信し、ビデオストリームを復号し、結果として生じるビデオを、例えば、ゲームのプレイヤなどのユーザに提示するように構成される。符号化されたビデオストリームの受信及び/またはビデオストリームの復号の処理には、通常、個別のビデオフレームをクライアントの受信バッファ内に記憶することが含まれる。ビデオストリームはクライアント1610と一体となったディスプレイ上、またはモニタもしくはテレビなどの別個デバイス上でユーザに提示されてよい。クライアント1610は、任意には、2人以上のゲームプレイヤをサポートするように構成される。例えば、ゲームコンソールは2人、3人、4人またはそれ以上の同時プレイヤをサポートするように構成されてよい。これらのプレイヤのそれぞれが別個のビデオストリームを受信してよいか、または単一のビデオストリームは、例えば、各プレイヤの視点に基づいて生成され、各プレイヤ専用に生成されたフレームの領域を含んでよい。クライアント1610は、任意には、地理的に分散される。ゲームシステム1600に含まれるクライアント数は1つまたは2つから数千、数万またはそれ以上まで大幅に異なってよい。本明細書内では、「ゲームプレイヤ」の用語はゲームをプレイする人物を指すために使用され、「ゲームプレイデバイス」の用語は、ゲームをプレイするために使用されるデバイスを指すために使用される。いくつかの実施形態では、ゲームプレイデバイスはゲーム体験をユーザに配信するために連携する複数のコンピューティングデバイスを指してよい。例えば、ゲームコンソール及びHMDは、HMDを通じて視認されるゲームを配信するためにビデオサーバシステム1620と連携してよい。一実施形態では、ゲームコンソールがビデオサーバシステム1620からビデオストリームを受信し、ゲームコンソールはレンダリングのためにHMDにビデオストリームを送信するか、またはビデオストリームを更新する。
クライアント1610はネットワーク1615を経由してビデオストリームを受信するように構成される。ネットワーク1615は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、プライベートネットワーク及び/またはその他を含む任意の種類の通信ネットワークであってもよい。典型的な実施形態では、ビデオストリームがTCP/IPまたはUDP/IPなどの標準プロトコルを経由して通信される。代替的には、ビデオストリームが専有標準を経由して通信される。
クライアント1610の1つの典型的な例は、プロセッサ、不揮発性メモリ、ディスプレイ、復号論理、ネットワーク通信機能、及び入力デバイスを備えるパーソナルコンピュータである。復号論理にはハードウェア、ファームウェア及び/またはコンピュータ可読媒体上に記憶されるソフトウェアが含まれてよい。ビデオストリームを復号(及び符号化)するシステムは当分野で周知であり、使用する特定の符号化スキームに応じて異なる。
クライアント1610は受信されたビデオの修正のために構成されるシステムをさらに含んでもよいが、それは必須ではない。例えば、クライアントはさらなるレンダリングを行い、あるビデオ画像を別のビデオ画像にオーバレイし、ビデオ画像をクロップする及び/またはその他を行うように構成されてよい。例えば、クライアント1610は、Iフレーム、Pフレーム及びBフレームなどの様々な種類のビデオフレームを受信し、これらのフレームをユーザに表示するために画像に処理するように構成されてよい。いくつかの実施形態では、クライアント1610のメンバはさらなるレンダリング、シェーディング、3−Dへの変換、または同様の操作をビデオストリーム上で行うように構成される。クライアント1610のメンバは、任意には、2つ以上の音声またはビデオストリームを受信するように構成される。クライアント1610の入力デバイスには、例えば、片手用ゲームコントローラ、両手用ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、フォースフィードバック装置、動作及び/または位置検出器、マウス、タッチスクリーン、ニューラルインターフェース、カメラ、未開発の入力デバイス及び/またはその他が含まれてよい。
クライアント1610によって受信されたビデオストリーム(及び任意には音声ストリーム)は、ビデオサーバシステム1620によって生成され、提供される。本明細書の他の箇所にさらに記載されている通り、このビデオストリームにはビデオフレームが含まれる(音声ストリームには音声フレームが含まれる)。ビデオフレーム(例えば、適切なデータ構造における画素情報を含む)は、ユーザに表示される画像に有意義に寄与するように構成される。本明細書内では、「ビデオフレーム」の用語は、例えば、ユーザに示す画像への影響に寄与するように構成される情報を主に含むフレームを指すために使用される。本明細書内の「ビデオフレーム」に関する教示の大部分については、「オーディオフレーム」にも適用可能である。
クライアント1610は通常、ユーザからの入力を受信するように構成される。これらの入力には、ビデオゲームの状態を変更するため、または別様にはゲームプレイに影響を与えるように構成されるゲームコマンドが含まれてよい。ゲームコマンドは入力デバイスを使用して受信可能であってよく、及び/またはクライアント1610上での演算命令の実行によって自動的に生成されてよい。受信されたゲームコマンドは、クライアント1610からネットワーク1615を経由してビデオサーバシステム1620及び/またはゲームサーバ1625に通信される。例えば、いくつかの実施形態では、ゲームコマンドはビデオサーバシステム1620を経由してゲームサーバ1625に通信される。いくつかの実施形態では、ゲームコマンドの別個のコピーがクライアント1610からゲームサーバ1625及びビデオサーバシステム1620に通信される。ゲームコマンドの通信は、任意には、コマンドの識別に依存する。ゲームコマンドはクライアント1610Aに音声ストリームまたはビデオストリームを提供するために使用される異なるルートまたは通信チャネルを通じて、任意には、クライアント1610Aから通信される。
ゲームサーバ1625は、任意には、ビデオサーバシステム1620とは異なるエンティティによって操作される。例えば、ゲームサーバ1625は複数のゲームの発行元によって操作されてよい。本例では、ビデオサーバシステム1620は、任意には、ゲームサーバ1625によってクライアントとしてみなされ、任意には、ゲームサーバ1625の視点からは、従来技術のゲームエンジンを実行する従来技術のクライアントとしてみなされるように構成される。ビデオサーバシステム1620とゲームサーバ1625との間の通信は、任意には、ネットワーク1615を経由して発生する。したがって、ゲームサーバ1625はゲーム状態情報をそのうちの1つがゲームサーバシステム1620である複数のクライアントに送信する従来技術のマルチプレイヤゲームサーバとすることができる。ビデオサーバシステム1620はゲームサーバ1625の複数のインスタンスとの通信を同時に行うように構成されてよい。例えば、ビデオサーバシステム1620は、複数の異なるビデオゲームを異なるユーザに提供するように構成することができる。これらの異なるビデオゲームのそれぞれは異なるゲームサーバ1625によりサポートされてよい、及び/または異なるエンティティにより発行されてよい。いくつかの実施形態では、いくつかの地理的に分布したビデオサーバシステム1620のインスタンスは、複数の異なるユーザにゲームビデオを提供するように構成される。ビデオサーバシステム1620のこれらインスタンスのそれぞれが、ゲームサーバ1625の同じインスタンスとの通信を行ってよい。ビデオサーバシステム1620と1つ以上のゲームサーバ1625との間の通信は、任意には、専用通信チャネルを経由して発生する。例えば、ビデオサーバシステム1620は、これらの2つのシステム間の通信専用の高帯域チャネル幅を経由してゲームサーバ1625に接続されてよい。
ビデオサーバシステム1620は、少なくともビデオソース1630、入出力デバイス1645、プロセッサ1650及び非一時的なストレージ1655を備える。ビデオサーバシステム1620は1つのコンピューティングデバイスを含むか、または複数のコンピューティングデバイス間に分散されてよい。これらコンピューティングデバイスは、任意には、ローカルエリアネットワークなどの通信システムを経由して接続される。
ビデオソース1630は、例えば、動画を形成するストリーミングビデオまたは一連のビデオフレームなどのビデオストリームを提供するように構成される。いくつかの実施形態では、ビデオソース1630はビデオゲームエンジン及びレンダリング論理を含む。ビデオゲームエンジンはプレイヤからゲームコマンドを受信し、受信されたコマンドに基づいて、ビデオゲームの状態のコピーを維持するように構成される。このゲーム状態には、ゲーム環境におけるオブジェクトの位置、及び通常では視点が含まれる。ゲーム状態はさらに、オブジェクトのプロパティ、画像、色、及び/またはテクスチャを含んでよい。ゲーム状態は、通常、ゲームルールならびに動き、回転、攻撃、フォーカスの設定、相互作用、使用、及び/またはその他などのゲームコマンドに基づいて維持される。ゲームエンジンの一部は、任意には、ゲームサーバ1625内に配置される。ゲームサーバ1625は複数のプレイヤから受信されたゲームコマンドに基づき、クライアントの地理的分散を使用してゲームの状態のコピーを維持してよい。これらの場合には、ゲーム状態がゲームサーバ1625によってビデオソース1630に提供され、ゲーム状態のコピーは記憶されてレンダリングが行われる。ゲームサーバ1625はネットワーク1615を経由してゲームコマンドをクライアント1610から直接受信してよく、及び/またはビデオサーバシステム1620を経由してゲームコマンドを受信してよい。
ビデオソース1630は、通常、例えば、ハードウェア、ファームウェア、及び/またはストレージ1655などのコンピュータ可読媒体上に記憶されたソフトウェアなどのレンダリング論理を含む。このレンダリング論理は、ゲーム状態に基づいてビデオストリームのビデオフレームを作成するように構成される。レンダリング論理の全てまたは一部は、任意には、グラフィックスプロセッシングユニット(GPU)内に配置される。レンダリング論理には、通常、オブジェクト間の三次元空間関係の決定及び/または適切なテクスチャの適用などを行うように構成される、ゲーム状態及び視点に基づいたステージの処理が含まれる。レンダリング論理は、その後、通常は、クライアント1610との通信の前に符号化される未加工のビデオを生成する。例えば、未加工のビデオは、Adobe Flash(登録商標)規格、.wav、H.265、H.264、H.263、On2、VP6、VC−1、WMA、Huffyuv、Lagarith、MPG−x.Xvid.FFmpeg、x264、VP6−8、realvideo、mp3またはその他に従って符号化されてよい。符号化処理によってビデオストリームが生成され、ビデオストリームは、任意には、リモートデバイス上の復号器への送達のためにパッケージ化される。ビデオストリームは、フレームサイズ及びフレームレートによって特徴づけられる。典型的なフレームサイズには、800×600、1280×720(例えば、720p)1024×768が含まれるが、他の任意のフレームサイズが使用されてよい。フレームレートは、毎秒のビデオフレーム数である。ビデオストリームには、異なる種類のビデオフレームが含まれてよい。例えば、H.264規格には、「P」フレーム及び「I」フレームが含まれる。Iフレームはディスプレイデバイス上の全てのマクロブロック/ピクセルをリフレッシュするための情報を含み、Pフレームがそのサブセットをリフレッシュするための情報を含む。Pフレームのデータサイズは、通常、Iフレームよりも小さい。本明細書内では、「フレームサイズ」の用語はフレーム内の画素数を指すように意味する。「フレームデータサイズ」の用語は、フレームを記憶するために必要なバイト数を指すために使用される。
代替的な実施形態では、ビデオソース1630にはカメラなどの記録デバイスが含まれる。このカメラは、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオを生成するために使用されてよい。結果として生じるビデオストリームには、任意には、レンダリングされた画像及びスチールカメラまたはビデオカメラを使用して記録された画像の両方が含まれる。ビデオソース1630はさらに、ビデオストリームに含まれるように予め記録されたビデオを記憶するように構成されるストレージデバイスを含んでよい。ビデオソース1630はさらに、人物などのオブジェクトの動作または位置を検出するように構成される動作または位置検出デバイス、ならびに検出された動作及び/または位置に基づいてゲーム状態を決定するため、またはビデオを生成するように構成される論理を含んでよい。
ビデオソース1630は、任意には、他のビデオ上に重ねるように構成されるオーバレイを提供するように構成される。例えば、これらのオーバレイには、コマンドインターフェース、ログイン命令、ゲームプレイヤへのメッセージ、他のゲームプレイヤの画像、他のゲームプレイヤのビデオ配信(例えば、ウェブカメラビデオ)が含まれてよい。タッチスクリーンインターフェースまたは視線検出インターフェースを含むクライアント1610Aの実施形態では、オーバレイが仮想キーボード、ジョイスティック、タッチパッド及び/またはその他を含んでよい。オーバレイの一例では、プレイヤの声が音声ストリームにオーバレイされる。ビデオソース1630はさらに、任意には、1つ以上の音源を含む。
2人以上のプレイヤからの入力に基づいてビデオサーバシステム1620がゲーム状態を維持するように構成される実施形態では、各プレイヤは、視野の位置及び方向を備える異なる視点を有してよい。ビデオソース1630は、任意には、各プレイヤに自身の視点に基づいた別個のビデオストリームを提供するように構成される。さらに、ビデオソース1630は、異なるフレームサイズ、フレームデータサイズ、及び/または符号化をクライアント1610のそれぞれに提供するように構成されてよい。ビデオソース1630は、任意には、3−Dビデオを提供するように構成される。
ビデオサーバシステム1620が、ビデオ、コマンド、情報要求、ゲーム状態、視線情報、デバイスの動作、デバイスの位置、ユーザの動作、クライアント識別、プレイヤ識別、ゲームコマンド、セキュリティ情報、音声、及び/またはその他などの情報を送信及び/または受信するように、入出力デバイス1645が構成される。入出力デバイス1645には、通常、ネットワークカードまたはモデムなどの通信ハードウェアが含まれる。入出力デバイス1645は、ゲームサーバ1625、ネットワーク1615、及び/またはクライアント1610と通信するように構成される。
プロセッサ1650は、例えば、本明細書に論じるビデオサーバシステム1620の様々な構成要素内に含まれるソフトウェアなどの論理を実行するように構成される。例えば、プロセッサ1650は、ビデオソース1630、ゲームサーバ1625、及び/またはクライアント限定子1660の機能を行うためにソフトウェア命令でプログラムされてよい。ビデオサーバシステム1620は、任意には、2つ以上のプロセッサ1650のインスタンスを含む。プロセッサ1650はさらに、ビデオサーバシステム1620によって受信されたコマンドを実行するための、または本明細書に論じるゲームシステム1600の様々な要素の操作を調整するためのソフトウェア命令でプログラムされてよい。プロセッサ1650には1つ以上のハードウェアデバイスが含まれてよい。プロセッサ1650は電子プロセッサである。
ストレージ1655には、非一時的なアナログ及び/またはデジタルストレージデバイスが含まれる。例えば、ストレージ1655は、ビデオフレームを記憶するように構成されるアナログストレージデバイスを含んでよい。ストレージ1655は、ハードドライブ、光学ドライブ、またはソリッドステートストレージなどのコンピュータ可読デジタルストレージを含んでよい。ストレージ1615は(例えば、適切なデータ構造またはファイルシステムによって)、ビデオフレーム、人工フレーム、ビデオフレーム及び人工フレームの両方を含むビデオストリーム、音声フレーム、音声ストリーム、及び/またはその他を記憶するように構成される。ストレージ1655は、任意には、複数のデバイスの間に分散される。いくつかの実施形態では、ストレージ1655が本明細書の他の箇所に論じられるビデオソース1630のソフトウェア構成要素を記憶するように構成される。これら構成要素は、必要な場合にプロビジョニングできる形式で記憶されてよい。
ビデオサーバシステム1620は、任意には、クライアント限定子1660をさらに備える。クライアント限定子1660は、クライアント1610Aまたは1610Bなどのクライアントの機能を遠隔的に決定するように構成される。これらの機能は、クライアント1610Aとビデオサーバシステム1620との間の1つ以上の通信チャネルの機能ならびにクライアント1610A自体の機能の両方を含むことができる。例えば、クライアント限定子1660は、ネットワーク1615を通じて通信チャネルをテストするように構成されてよい。
クライアント限定子1660は、クライアント1610Aの機能を手動または自動で決定する(例えば、発見する)ことができる。手動決定には、クライアント1610Aのユーザと通信すること及び機能提供についてユーザに問い合わせることが含まれる。例えば、いくつかの実施形態では、クライアント限定子1660は、画像、テキスト、及び/またはその他をクライアント1610Aのブラウザ内で表示するように構成される。一実施形態では、クライアント1610Aは、ブラウザを含むHMDである。別の実施形態では、クライアント1610Aは、HMD上に表示されてよいブラウザを有するゲームコンソールである。表示されたオブジェクトは、クライアント1610Aのオペレーティングシステム、プロセッサ、ビデオ復号器の種類、ネットワーク接続の種類、ディスプレイ解像度などの情報を入力するようユーザに要求する。ユーザにより入力された情報はクライアント限定子1660に通信される。
例えば、クライアント1610A上のエージェントの実行によって、及び/またはテストビデオのクライアント1610Aへの送信によって、自動決定が行われてよい。エージェントは、javaスクリプトなどの、ウェブページ上に埋め込まれた、またはアドオンとしてインストールされた演算命令を備えてよい。エージェントは、任意には、クライアント限定子1660によって提供される。様々な実施形態では、クライアント1610Aの処理能力、クライアント1610Aの復号及び表示能力、クライアント1610Aとビデオサーバシステム1620との間の遅延時間の信頼性及び通信チャネルの帯域幅、クライアント1610Aの表示種類、クライアント1610A上に存在するファイアウォール、クライアント1610Aのハードウェア、クライアント1610A上で実行するソフトウェア、クライアント1610A内のレジストリエントリ、及び/またはその他をエージェントが発見することができる。
クライアント限定子1660には、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体上に記憶されるソフトウェアが含まれる。クライアント限定子1660は、任意には、ビデオサーバシステム1620の1つ以上の他の要素とは別個のコンピューティングデバイス上に配置される。例えば、いくつかの実施形態では、クライアント限定子1660は、クライアント1610とビデオサーバシステム1620の2つ以上のインスタンスとの間の通信チャネルの特徴を決定するように構成される。これらの実施形態では、ビデオサーバシステム1620のどのインスタンスがクライアント1610の1つのストリーミングビデオの送達に最も適しているかを決定するために、クライアント限定子により発見された情報を使用することができる。
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ及びその他を含む、様々なコンピュータシステム構成を使用して実施されてよい。本開示は、有線ベースのネットワークまたは無線ネットワークを通じてリンクされているリモート処理デバイスによってタスクが行われる分散型コンピューティング環境において実施することもできる。
上記の実施形態を念頭におくと、本開示は、コンピュータシステムにデータを記憶することを伴う様々なコンピュータ実施動作を用いることができることを理解するべきである。これらの動作は、物理量の物理的操作を必要とするものである。本開示の一部を形成する本明細書に記載した動作はいずれも有用な機械的動作である。本開示は、これらの動作を行うデバイスまたは装置にも関する。装置は、必要とされる目的のために特別に構成することができ、あるいは装置は、コンピュータに記憶されたコンピュータプログラムによって選択的に起動または構成される汎用コンピュータとすることができる。特に、本明細書の教示に従って記述されたコンピュータプログラムによって様々な汎用機を使用することができ、あるいは、より特化した装置を構成して必要とされる動作を行うことがより好都合となる場合がある。
本開示は、コンピュータ可読媒体上のコンピュータ可読コードとして具現化することもできる。コンピュータ可読媒体は、データを記憶することができる任意のデータストレージデバイスであり、その後、このデータをコンピュータシステムによって読み出すことができる。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープならびに他の光学データストレージデバイス及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体は、ネットワークに結合したコンピュータシステム上に分散されたコンピュータ可読有形媒体を含むことができ、これによって、コンピュータ可読コードは、分散方式で記憶されて実行される。
動作方法を特定の順序で記載したが、オーバレイ動作の処理が所望の方法で行われる限り、動作の間に他のハウスキーピング動作が実行されてよく、あるいは、動作を調整してそれらがわずかに異なる時間に行われるようにしてよく、または、処理と関連した様々な間隔で処理動作が行われることを可能にするシステムに動作を分散させてよいことを理解すべきである。
前述の開示について、理解を助けるために詳細に説明してきたが、添付された特許請求の範囲内で一定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、例示であって限定的なものではないとみなされ、本開示は、本明細書に述べた詳細に限定されることはなく、本開示の範囲及び均等物の範囲内で修正され得る。