(57)【特許請求の範囲】
【請求項１】
クライアント装置によって実行されるブラウザからネットワークを介して、クラウドビデオゲームのゲームプレイを開始する要求を受信すること、
前記要求を受信することに応答して、前記クライアント装置の前記ブラウザによる実行用に構成されたウェブアプリケーションを、前記ネットワーク経由で前記クライアント装置に送信し、クラウドゲーム機による前記クラウドビデオゲームの実行を開始して、圧縮ビデオフォーマットで符号化され、暗号化方式を用いて暗号化された前記クラウドビデオゲームのビデオコンテンツを含む第１のビデオストリームを生成すること、
前記クラウドゲーム機からストリーミングサーバへ前記第１のビデオストリームを送信すること、
前記ストリーミングサーバによって前記第１のビデオストリームを解読して、符号化ビデオコンテンツを生成すること、および
前記ストリーミングサーバによって、前記符号化ビデオコンテンツを、保護プロトコルを使用して前記ネットワーク経由で前記ウェブアプリケーションに送信することを含み、前記符号化ビデオコンテンツの前記送信が第２のビデオストリームを設定し、前記ウェブアプリケーションが、前記第２のビデオストリームを受信して処理して、前記クラウドビデオゲームの前記ビデオコンテンツをディスプレイ装置へのレンダリング用に提供するように構成される方法。
【請求項２】
前記ウェブアプリケーションが、前記クライアント装置の前記ブラウザによって実行される際に、前記ネットワークを通じて前記ストリーミングサーバとピアツーピア接続を確立するように構成され、
前記第２のビデオストリームを前記ウェブアプリケーションに送信することが前記ピアツーピア接続を介して行われる、請求項１に記載の方法。
【請求項３】
前記ウェブアプリケーションによる前記ディスプレイ装置への前記ビデオコンテンツの前記レンダリングの間中に、１つまたは複数のクライアント入力装置から前記クライアント装置において受信される対話型入力に由来した、前記ウェブアプリケーションによって処理された入力データを、前記ストリーミングサーバによって前記ウェブアプリケーションから前記ピアツーピア接続を介して受信すること、および
前記ストリーミングサーバによって前記入力データを処理して、前記クラウドビデオゲーム用のコマンドを生成し、前記クラウドビデオゲームの将来のゲーム状態を決定するために、前記クラウドビデオゲームの現在のゲーム状態に適用されるように前記ストリーミングサーバから前記クラウドゲーム機に前記コマンドを送信することをさらに含む、請求項２に記載の方法。
【請求項４】
前記１つまたは複数のクライアント入力装置が、キーボード、マウス、タッチパッド、タッチセンシティブディスプレイ、ゲームコントローラ、またはモーションコントローラからなる群から選択される、請求項３に記載の方法。
【請求項５】
前記ストリーミングサーバによって、前記クライアント装置の前記ブラウザの種類を識別すること、および
前記ブラウザの種類を識別することに応答して、前記符号化ビデオコンテンツを第２の圧縮ビデオフォーマットにコード変換することをさらに含み、前記第２のビデオストリームを送信することが、前記コード変換されたビデオコンテンツを送信することをさらに含む、請求項１に記載の方法。
【請求項６】
前記第２の圧縮ビデオフォーマットが、前記ブラウザの前記識別された種類に基づいて選択され、前記第２の圧縮ビデオフォーマットが、前記ブラウザによってサポートされるビデオフォーマットである、請求項５に記載の方法。
【請求項７】
前記ウェブアプリケーションがＷｅｂＲＴＣウェブＡＰＩにアクセスする、請求項１に記載の方法。
【請求項８】
前記ストリーミングサーバがＮｏｄｅ．ｊｓサーバである、請求項１に記載の方法。
【請求項９】
前記ゲーム機が、ゲームコンソール、ゲームコンソールブレードもしくはゲームコンソールハードウェアボード、またはバーチャルゲームコンソールを実行するように構成されたサーバコンピュータのうちの１つである、請求項１に記載の方法。
【請求項１０】
前記保護プロトコルがハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）プロトコルである、請求項１に記載の方法。
【請求項１１】
前記第１のビデオストリームを生成すること、前記第１のビデオストリームを送信すること、前記第１のビデオストリームを解読すること、及び前記符号化ビデオコンテンツを送信することの動作が、前記クライアント装置の前記ブラウザを介して、前記クラウドビデオゲームのリアルタイム対話型ゲームプレイを可能にするように、実質的なリアルタイムで実行される、請求項１に記載の方法。
【請求項１２】
前記クラウドビデオゲームの前記ビデオコンテンツが、バーチャル環境のビューを設定する、請求項１に記載の方法。
【請求項１３】
クライアント装置からネットワークを介して、クラウドビデオゲームのゲームプレイを開始する要求を受信すること、
前記要求を受信することに応答して、クラウドゲーム機による前記クラウドビデオゲームの実行を開始して、圧縮ビデオフォーマットで符号化され、暗号化方式を用いて暗号化された前記クラウドビデオゲームのビデオコンテンツを含む第１のビデオストリームを生成すること、
前記クライアント装置によって実行されるブラウザから発せられたものとして前記要求を識別することに応答して、次に、
前記クライアント装置の前記ブラウザによる実行用に構成されたウェブアプリケーションを、前記ネットワーク経由で前記クライアント装置に送信し、
前記クラウドゲーム機からストリーミングサーバへ前記第１のビデオストリームを送信し、
前記ストリーミングサーバによって前記第１のビデオストリームを解読して、符号化ビデオコンテンツを生成し、
前記ストリーミングサーバによって、前記符号化ビデオコンテンツを、保護プロトコルを使用して前記ネットワーク経由で前記ウェブアプリケーションに送信し、前記符号化ビデオコンテンツの前記送信が第２のビデオストリームを設定し、前記ウェブアプリケーションが、前記第２のビデオストリームを受信して処理して、前記クラウドビデオゲームの前記ビデオコンテンツをディスプレイ装置へのレンダリング用に提供するように構成されること、および
前記クライアント装置を設定するゲームコンソールから発せられたものとして前記要求を識別することに応答して、次に、
ディスプレイ装置へのレンダリング用に、前記第１のビデオストリームを前記ネットワーク経由で前記ゲームコンソールに送信することを含む方法。
【請求項１４】
前記ウェブアプリケーションが、前記クライアント装置の前記ブラウザによって実行される際に、前記ネットワークを通じて前記ストリーミングサーバとピアツーピア接続を確立するように構成され、
前記第２のビデオストリームを前記ウェブアプリケーションに送信することが前記ピアツーピア接続を介して行われる、請求項１３に記載の方法。
【請求項１５】
前記ブラウザから発せられたものとして前記要求を前記識別することにさらに応答して、
前記ウェブアプリケーションによる前記ディスプレイ装置への前記ビデオコンテンツの前記レンダリングの間中に、１つまたは複数のクライアント入力装置から前記クライアント装置において受信される対話型入力に由来した、前記ウェブアプリケーションによって処理された入力データを、前記ストリーミングサーバによって前記ウェブアプリケーションから前記ピアツーピア接続を介して受信し、
前記ストリーミングサーバによって前記入力データを処理して、前記クラウドビデオゲーム用のコマンドを生成し、前記クラウドビデオゲームの将来のゲーム状態を決定するために、前記クラウドビデオゲームの現在のゲーム状態に適用されるように前記ストリーミングサーバから前記クラウドゲーム機に前記コマンドを送信することを含む、請求項１４に記載の方法。
【請求項１６】
前記ブラウザから発せられたものとして前記要求を前記識別することにさらに応答して、
前記ストリーミングサーバによって、前記クライアント装置の前記ブラウザの種類を識別し、
前記ブラウザの種類を識別することに応答して、前記符号化ビデオコンテンツを第２の圧縮ビデオフォーマットにコード変換し、前記第２のビデオストリームを送信することが、前記コード変換されたビデオコンテンツを送信することを含む、請求項１３に記載の方法。
【請求項１７】
前記第２の圧縮ビデオフォーマットが、前記ブラウザの前記識別された種類に基づいて選択され、前記第２の圧縮ビデオフォーマットが、前記ブラウザによってサポートされるビデオフォーマットである、請求項１６に記載の方法。
【請求項１８】
前記ウェブアプリケーションがＷｅｂＲＴＣウェブＡＰＩにアクセスする、請求項１３に記載の方法。
【請求項１９】
前記ストリーミングサーバがＮｏｄｅ．ｊｓサーバである、請求項１３に記載の方法。
【請求項２０】
前記ゲーム機が、ゲームコンソール、ゲームコンソールブレードもしくはゲームコンソールハードウェアボード、またはバーチャルゲームコンソールを実行するように構成されたサーバコンピュータのうちの１つである、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ブラウザベースのクラウドゲームのためのシステム及び方法に関し、より具体的には、ウェブクライアントアプリケーションとストリーミングサーバとの間のピアツーピア接続の確立、及びビデオゲームを実行するクラウドゲーム機からの暗号化されたビデオストリームの解読を行うストリーミングサーバの使用法に関する。
【背景技術】
【０００２】
［関連技術の説明］
現在、急成長している技術領域のひとつに、クラウドゲームの分野がある。ユーザは、インターネットなどのネットワークを通じて、クラウドゲームサイト上の多数のゲームにアクセスし、インタラクション／ゲームプレイを開始することができる。ゲームプレイを求めてゲームを選択するには、ユーザは、クラウドゲームサイト上の自分のアカウントにアクセスし、ゲームプレイ用のユーザアカウントを利用できる複数のゲームのうちの１つを起動する。クラウドビデオゲームから生成される映像は、クライアント装置に伝送される。クラウドゲームシステムの一例として、Ｐｌａｙｓｔａｔｉｏｎ（登録商標）Ｎｏｗクラウドゲームサービスが挙げられる。
【０００３】
こうした背景のもと、本開示の実施形態が生じる。
【発明の概要】
【０００４】
本開示の実施態様は、ブラウザベースのクラウドゲームを実現するために使用される方法及びシステムを提供する。
【０００５】
概して、本開示の実施態様は、モダンウェブブラウザ内のゲームクライアントを対象にしている。ブラウザクライアントはＷｅｂＲＴＣ技術を用いて構築することができ、これは、主要ブラウザの全てにわたって同じように機能する、十分にサポートされた技術である（ｈｔｔｐ：／／ｗｗｗ．ｗｅｂｒｔｃ．ｏｒｇ／）。ＷｅｂＲＴＣは、エラーチェックまたはパケット保証が行われないという点でＴＣＰ伝送とは異なる。ＵＤＰ伝送と同様に、ＷｅｂＲＴＣは、オーバーヘッドをほとんどまたは全く伴わずにパケットを送受信することによって高速である。
【０００６】
本開示の実施態様では、ＷｅｂＲＴＣを使用して、２つのクライアント間を直接接続するピアツーピア接続を作成する。ピアツーピア接続によって、マルチホップを回避し、レイテンシに影響を与えることが可能になる。接続開始は、セッション記述プロトコル（ＳＤＰ）を使用して実行される。ＳＤＰは、２つの装置間の通信契約を作成するために使用され、バッファリング、キーフレーム定義、フォールバックポート、プロトコルなどを制御するためのいくつかのオプションをサポートする。
【０００７】
ブラウザクライアントは、Ｎｏｄｅ．ｊｓサーバによってサポートされ得る。Ｎｏｄｅサーバは、オーバーヘッドが非常に小さく、極めて高性能である。Ｎｏｄｅサーバはコンソールと直接通信する。サーバは現在のデータストリームをそのまま受け入れ、ストリームの解読はサーバ側で行われる。サーバの能力及び動作を制御することができるので、性能が大幅に異なり得るユーザマシンへの依存を最小限に抑えることができる。
【０００８】
解読されたストリームは、全てのブラウザがサポートすることができる標準のウェブ技術で圧縮され得る。サーバは、ＷｅｂＲＴＣを使用して、ストリームを消費するブラウザとの安全なセッションを作成する。いくつかの実施態様では、映像接続は、ＶＬＡＮストリーミングサーバなどのビデオストリーミングサーバを経由してもよい。いくつかの実施態様では、Ｎｏｄｅサーバと連携してビデオストリーム及びオーディオストリームを送信する別個のストリーミングサーバを備えていると都合が良い。
【０００９】
ＷｅｂＲＴＣデータチャネルを、サーバとブラウザとの間に起動させることもできる。そのデータチャネルは、実行中のビデオゲームにコマンドを送り返すために使用される。入力装置（例えば、コントローラ、キーボード、マウス、タッチスクリーンなど）を使用することができる。入力装置によって生成されたコマンドは、データチャネルを介してＮｏｄｅサーバに送信される。そしてＮｏｄｅサーバは、適切なコマンドをコンソールに送信する。
【００１０】
したがって、連続したゲーム体験を実現する、レイテンシがごく少ない高速の接続が確立される。特定ブラウザに依存しない迅速なストリーム配信のためのＷｅｂＲＴＣ、大量のデータ操作のためのＮｏｄｅサーバ、及びサーバ経由でコンソールに伝達し返すためのデータチャネルを使用して、満足感を与えるゲーム体験を作り出すことができる。ゲーム機のコンソールとブラウザとの間の通信媒体としてＮｏｄｅ．ｊｓサーバを使用することによって、クライアント用の軽量プロキシが作成され、この軽量プロキシによって、データ送信においてごく少ないレイテンシが生じるが、処理時間が大幅に節約される可能性がある。ＷｅｂＲＴＣを使用して、ピアツーピア接続を作成する。
【００１１】
いくつかの実施態様によれば、以下の方法動作を含む方法が提供される。すなわち、クライアント装置によって実行されるブラウザからネットワークを介して、クラウドビデオゲームのゲームプレイを開始する要求を受信すること、要求を受信することに応答して、クライアント装置のブラウザによる実行用に構成されたウェブアプリケーションを、ネットワーク経由でクライアント装置に送信し、クラウドゲーム機によるクラウドビデオゲームの実行を開始して、圧縮ビデオフォーマットで符号化され、暗号化方式を用いて暗号化されたクラウドビデオゲームのビデオコンテンツを含む第１のビデオストリームを生成すること、クラウドゲーム機からストリーミングサーバへ第１のビデオストリームを送信すること、ストリーミングサーバによって第１のビデオストリームを解読して、符号化ビデオコンテンツを生成すること、ストリーミングサーバによって、符号化ビデオコンテンツを、保護プロトコルを使用してネットワーク経由でウェブアプリケーションに送信することを含み、符号化ビデオコンテンツの送信が第２のビデオストリームを設定し、ウェブアプリケーションが、第２のビデオストリームを受信して処理して、クラウドビデオゲームのビデオコンテンツをディスプレイ装置へのレンダリング用に提供するように構成される方法である。
【００１２】
いくつかの実施態様では、ウェブアプリケーションは、クライアント装置のブラウザによって実行される際に、ネットワークを通じてストリーミングサーバとピアツーピア接続を確立するように構成され、第２のビデオストリームをウェブアプリケーションに送信することがピアツーピア接続を介して行われる。
【００１３】
いくつかの実施態様では、本方法は、ウェブアプリケーションによるディスプレイ装置へのビデオコンテンツのレンダリングの間中に、１つまたは複数のクライアント入力装置からクライアント装置において受信される対話型入力に由来した、ウェブアプリケーションによって処理された入力データを、ストリーミングサーバによってウェブアプリケーションからピアツーピア接続を介して受信すること、ストリーミングサーバによって入力データを処理して、クラウドビデオゲーム用のコマンドを生成し、クラウドビデオゲームの将来のゲーム状態を決定するために、クラウドビデオゲームの現在のゲーム状態に適用されるようにストリーミングサーバからクラウドゲーム機にコマンドを送信することをさらに含む。
【００１４】
いくつかの実施態様では、１つまたは複数のクライアント入力装置は、キーボード、マウス、タッチパッド、タッチセンシティブディスプレイ、ゲームコントローラ、またはモーションコントローラからなる群から選択される。
【００１５】
いくつかの実施態様では、本方法は、ストリーミングサーバによって、クライアント装置のブラウザの種類を識別すること、ブラウザの種類を識別することに応答して、符号化ビデオコンテンツを第２の圧縮ビデオフォーマットにコード変換することをさらに含み、第２のビデオストリームを送信することが、コード変換されたビデオコンテンツを送信することを含む。
【００１６】
いくつかの実施態様では、第２の圧縮ビデオフォーマットは、ブラウザの識別された種類に基づいて選択され、第２の圧縮ビデオフォーマットが、ブラウザによってサポートされるビデオフォーマットである。
【００１７】
いくつかの実施態様では、ウェブアプリケーションはＷｅｂＲＴＣウェブＡＰＩにアクセスする。
【００１８】
いくつかの実施態様では、ストリーミングサーバはＮｏｄｅ．ｊｓサーバである。
【００１９】
いくつかの実施態様では、ゲーム機は、ゲームコンソール、ゲームコンソールブレードもしくはゲームコンソールハードウェアボード、またはバーチャルゲームコンソールを実行するように構成されたサーバコンピュータのうちの１つである。
【００２０】
いくつかの実施態様では、保護プロトコルはハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）プロトコルである。
【００２１】
いくつかの実施態様では、第１のビデオストリームを生成すること、第１のビデオストリームを送信すること、第１のビデオストリームを解読すること、及び符号化ビデオコンテンツを送信することの動作は、クライアント装置のブラウザを介して、クラウドビデオゲームのリアルタイム対話型ゲームプレイを可能にするように、実質的なリアルタイムで実行される。
【００２２】
いくつかの実施態様では、クラウドビデオゲームのビデオコンテンツは、バーチャル環境のビューを設定する。
【００２３】
いくつかの実施態様によれば、以下の方法動作を含む方法が提供される。すなわち、クライアント装置からネットワークを介して、クラウドビデオゲームのゲームプレイを開始する要求を受信すること、要求を受信することに応答して、クラウドゲーム機によるクラウドビデオゲームの実行を開始して、圧縮ビデオフォーマットで符号化され、暗号化方式を用いて暗号化されたクラウドビデオゲームのビデオコンテンツを含む第１のビデオストリームを生成すること、クライアント装置によって実行されるブラウザから発せられたものとして要求を識別することに応答して、次に、クライアント装置のブラウザによる実行用に構成されたウェブアプリケーションを、ネットワーク経由でクライアント装置に送信し、クラウドゲーム機からストリーミングサーバへ第１のビデオストリームを送信し、
【００２４】
ストリーミングサーバによって第１のビデオストリームを解読して、符号化ビデオコンテンツを生成し、ストリーミングサーバによって、符号化ビデオコンテンツを、保護プロトコルを使用してネットワーク経由でウェブアプリケーションに送信し、符号化ビデオコンテンツの送信が第２のビデオストリームを設定し、ウェブアプリケーションが、第２のビデオストリームを受信して処理して、クラウドビデオゲームのビデオコンテンツをディスプレイ装置へのレンダリング用に提供するように構成されること、クライアント装置を設定するゲームコンソールから発せられたものとして要求を識別することに応答して、次に、ディスプレイ装置へのレンダリング用に、第１のビデオストリームをネットワーク経由でゲームコンソールに送信することを含む方法である。
【００２５】
いくつかの実施態様では、ウェブアプリケーションは、クライアント装置のブラウザによって実行される際に、ネットワークを通じてストリーミングサーバとピアツーピア接続を確立するように構成され、第２のビデオストリームをウェブアプリケーションに送信することがピアツーピア接続を介して行われる。
【００２６】
いくつかの実施態様では、ブラウザから発せられたものとして要求を識別することにさらに応答して、ウェブアプリケーションによるディスプレイ装置へのビデオコンテンツのレンダリングの間中に、１つまたは複数のクライアント入力装置からクライアント装置において受信される対話型入力に由来した、ウェブアプリケーションによって処理された入力データを、ストリーミングサーバによってウェブアプリケーションからピアツーピア接続を介して受信し、ストリーミングサーバによって入力データを処理して、クラウドビデオゲーム用のコマンドを生成し、クラウドビデオゲームの将来のゲーム状態を決定するために、クラウドビデオゲームの現在のゲーム状態に適用されるようにストリーミングサーバからクラウドゲーム機にコマンドを送信する。
【００２７】
いくつかの実施態様では、ブラウザから発せられたものとして要求を識別することにさらに応答して、ストリーミングサーバによって、クライアント装置のブラウザの種類を識別し、ブラウザの種類を識別することに応答して、符号化ビデオコンテンツを第２の圧縮ビデオフォーマットにコード変換し、第２のビデオストリームを送信することが、コード変換されたビデオコンテンツを送信することを含む。
【００２８】
いくつかの実施態様では、第２の圧縮ビデオフォーマットは、ブラウザの識別された種類に基づいて選択され、第２の圧縮ビデオフォーマットが、ブラウザによってサポートされるビデオフォーマットである。
【００２９】
いくつかの実施態様では、ウェブアプリケーションはＷｅｂＲＴＣウェブＡＰＩにアクセスする。
【００３０】
いくつかの実施態様では、ストリーミングサーバはＮｏｄｅ．ｊｓサーバである。
【００３１】
いくつかの実施態様では、ゲーム機は、ゲームコンソール、ゲームコンソールブレードもしくはゲームコンソールハードウェアボード、またはバーチャルゲームコンソールを実行するように構成されたサーバコンピュータのうちの１つである。
【００３２】
本開示の他の態様及び利点は、添付の図面と併用され、本開示の原理を例として示す、以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００３３】
本開示は、そのさらなる利点と共に、添付の図面と併用される以下の記述を参照することにより、最もよく理解され得る。
【００３４】
【図１Ａ】本開示の実施形態による、ゲームコンテンツをクラウドゲームサーバに予めロードするために使用される例示的なシステムの簡略化されたブロック図を示す。
【００３５】
【図１Ｂ】本開示の実施態様に従って、クラウドビデオゲームをクライアント装置にストリーム配信するために実行される様々な動作を概念的に示す流れ図である。
【００３６】
【図２】本開示の実施態様に従って、クラウドゲームのためにウェブブラウザ、ストリーミングサーバ、及びクラウドコンソールの間に通信を確立して処理するプロセスを概念的に示す。
【００３７】
【図３】本開示の実施態様による、クラウドゲーム用のシステムを示す。ユーザ３００は、クラウドゲームサービスにアクセスする構成となっているクライアント装置３０４とインタラクトする。
【００３８】
【図４】本開示の実施態様に従って、クラウドゲームサービスを提供するシステムを示し、データセンタでホストされるゲーム機が、専用ゲーム装置クライアントまたはブラウザクライアント装置のいずれかにサービスを提供することができる。
【００３９】
【図５】本開示の実施態様による、クラウドゲーム用のシステムを示し、クライアント装置とストリーミングサーバとの間の通信を確立するために使用されるコンポーネントを示す。
【００４０】
【図６】本開示の実施態様による、クラウドビデオゲームのゲームプレイをストリーム配信する方法を示す。
【００４１】
【図７】本開示の実施態様に従って、地理的に分散し、ネットワークを介して接続されるユーザに、情報コンテンツ及びサービスを配信するための例示的な情報サービスプロバイダアーキテクチャを示す。
【００４２】
【図８】本開示の実施態様に従って、ユーザに提示されるコンテンツを操作するのに使用されるコンピューティング装置の例示的なコンポーネントを示す。
【００４３】
【図９】本開示の実施態様によるゲームシステム９００のブロック図である。
【発明を実施するための形態】
【００４４】
以下の記述では、本明細書に開示された内容の理解の徹底を期すために、多数の細部にわたる詳細な説明が行われる。しかしながら、本開示が、これらの細部にわたる詳細な内容の一部または全部を欠いたとしても実施できることは、当業者には明らかであろう。他の例において、本開示を不明瞭にしないために、良く知られたプロセスステップについては詳細には説明していない。
【００４５】
クラウドゲームシステムの一例として、Ｐｌａｙｓｔａｔｉｏｎ（登録商標）Ｎｏｗクラウドゲームサービスが挙げられる。現在のところ、そのようなシステムにおいて、クライアント装置は、Ｐｌａｙｓｔａｔｉｏｎ（登録商標）４ゲームコンソールなどのゲームコンソールである。ゲームコンソールのリソースは標準化され、知られているので、クラウドで実行されるビデオゲームからゲームコンソールへのゲームプレイビデオのストリーミングを、満足の行く体験を提供するよう最適化することができる。例えば、ゲームコンソールによって実行されるクライアントアプリケーションを、ゲームコンソールのリソースを考慮して、クラウドゲームサービス向けに特別に開発することができる。
【００４６】
しかしながら、ゲームコンソールはプロプライエタリハードウェア装置であり、したがってクラウドゲームサービスへのアクセスを提供するためのより普遍的に利用可能な機構が求められている。１つの解決策は、ウェブブラウザ上にゲームクライアントを実装することである。ただし、ウェブブラウザにはいくつかの異なったものがあり、様々なリソース構成を有したいくつもの異なるクライアント装置が存在する。クライアント装置のリソースを保証することは不可能であり、したがってクライアント装置のリソースに大幅に依存している場合には、満足のゆく品質である安定したゲームストリーミングを提供することが不確実となる。この理由から、既存のクラウドゲームでは、プロプライエタリソフトウェアと組み合わせた専用のクライアント装置の一式が必要とされ得る。
【００４７】
既存のクラウドゲームシステム（例えば、Ｐｌａｙｓｔａｔｉｏｎ（登録商標）Ｎｏｗ）では、データセンタにクラウドゲーム機（例えば、クラウドコンソール装置）が存在し、サーバがクライアント装置（例えば、Ｐｌａｙｓｔａｔｉｏｎ（登録商標）４ゲームコンソール）とクラウドゲーム機との間の接続を構成する。その場合はクラウドゲーム機とクライアントとの間でストリーミングが直接行われ、ストリーミングは、実行可能なサービスとなるように十分に性能が考慮された高速接続を可能にする。しかしながら、ウェブブラウザがサーバからコンテンツを要求するとき、及び従来のシステムを使用してサーバからウェブブラウザへストリーミングを行うとき、クライアント装置とクラウドゲーム機との間に存在するホップが多過ぎ、クライアント装置のリソース不足が起こり得ることが原因で、クラウドゲームにとって性能が不十分になる可能性がある。
【００４８】
次のように、本開示による実施態様は、クライアント装置のウェブブラウザとストリーミングサーバとの間にピアツーピア接続を確立するシステムを提供する。ストリーミングサーバは通常、レイテンシを最小限に抑えるためにクラウドゲーム機のローカルにインストールされ、クラウドゲーム機から受信したビデオストリームの解読を行い、それによってクライアント装置リソースへの依存を減らす。そのようなシステムでは、クラウドゲーム機は、専用のゲームクライアント装置（ゲームコンソールなど）に、またはストリーミングサーバにストリーミングを行うように構成することができ、その場合ストリーミングサーバは、クライアント装置においてウェブブラウザによって実行されるウェブアプリケーションとしてインスタンス化されたウェブクライアントにストリーミングを行うことが理解されよう。したがって、提供されるシステムは、専用のクライアント装置とウェブブラウザベースのクライアントとの両方に対応することにおいて順応性がある。
【００４９】
いくつかの実施態様では、ウェブアプリケーション及びストリーミングサーバとのピアツーピア接続は、ＷｅｂＲＴＣ技術を用いて実装される。いくつかの実施態様では、ストリーミングサーバは、Ｎｏｄｅ．ｊｓサーバとして実装され、最適なストリーミング性能のためにＵＤＰを使ってパブリッシュするように構成することができる。従来、ブラウザではＴＣＰ／ＩＰが用いられ、ＴＣＰ／ＩＰは、パケットが失われると接続が切断されるような連続方式である。また一方、ＵＤＰでは、接続を切断することなくパケットを廃棄することが許容され、このことはストリーミングビデオ向けには有利である。
【００５０】
したがって、本開示による実施態様は、中間の接続を削減または排除するために（例えば、ＷｅｂＲＴＣプロトコルを使用する）ピアツーピア技術を活用し、ストリーミング性能を最適化するためにＵＤＰを使用するウェブクライアントを提供する。ストリーミングサーバは、クラウドゲーム機に対して専用のクライアント装置として機能し、クラウドゲーム機からビデオストリームを受け取ってそれを解読する。いくつかの実施態様では、ストリーミングサーバは、保護プロトコルであるハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）を使用して、ビデオコンテンツをブラウザベースのクライアントに送信する。
【００５１】
次のように、本開示による実施態様は、クライアント装置へのプロプライエタリソフトウェアのインストールを必要とせずに、リソース能力を保証することができないクライアント装置上のウェブブラウザを介して、ビデオゲームの満足のゆくストリーミングゲームプレイを可能にするという問題に対する解決策を提供する。ストリーミングサーバは、重大な影響を性能に与えることなく、ブラウザが受け入れてレンダリングすることができるビデオストリームを出力する。
【００５２】
ゲームタイトルに対するユーザ要求を受信した際に、クラウドゲームサイトと関連しているデータセンタ内のサーバ（複数可）によっていくつかの動作が実行される。クラウドゲームサイトがユーザ要求を受信すると、選択されたゲームタイトルに対応付けられたゲームをホストするデータセンタが割り出され、その要求が、割り出されたデータセンタに送信されて、選択されたゲームタイトルのゲームがインスタンス化される。要求に応答して、データセンタのサーバは、ゲームコンテンツをユーザに提示する前処理として、ゲームコードを特定し、特定したゲームコードをロードし、ゲームコードに結び付いているファイルを初期化する。ゲームに対応付けられたゲームデータには、汎用ゲームデータとユーザ固有のゲームデータとが含まれる。そのため、ファイルを初期化することには、汎用ゲームデータ及びユーザ固有ゲームデータを特定し、ロードし、初期化することが含まれる。汎用ゲームデータを初期化することには、グラフィックスエンジンを初期化すること、グラフィックスデータをインストールすること、サウンドファイルを初期化すること、アートワークをインストールすることなどが含まれ得る。ユーザ固有データを初期化することには、ユーザデータ、ユーザ履歴、ゲーム履歴などを検索し、転送し、インストールすることが含まれ得る。汎用ゲームデータ及び／またはユーザ固有データのロードは、ゲームのゲーム／グラフィックスの複雑さに応じて、数秒から数分ほどがかかり得る。
【００５３】
汎用ゲームデータがロードされて初期化されている間に、「スプラッシュ」画面をクライアント装置でレンダリングする目的で提供してもよい。スプラッシュ画面は、ロードされているゲームの代表的な画像を提供するように設計して、ユーザにロードされているゲームの象徴のプレビューを与えるようにしてもよい。汎用ゲームデータがロードされると、オーディオコンテンツが演奏されてもよく、ユーザ選択／ユーザカスタマイズのために選択画面／ナビゲーション画面が提示される。選択画面／ナビゲーション画面で提供されるユーザ選択入力には、ゲームレベル選択、ゲームアイコン（複数可）選択、ゲームモード選択、ゲーム賞品、追加のゲームコンテンツのアップロードを必要とし得る他のユーザ関連データが含まれ得る。ユーザ選択入力のアップロードは、ゲームコンテンツをユーザがゲームプレイで利用できるようになるまでに、さらなる遅延を引き起こす可能性がある。いくつかの実施形態では、ゲームコンテンツは、ゲームクラウドシステムからユーザのコンピューティング装置にゲームコンテンツをストリーミングすることによって、視聴及びインタラクションに利用される。ユーザ固有データをロード後に、ゲームコンテンツがゲームプレイで利用できるようになる。
【００５４】
図１Ａは、クラウドゲームサイトを介して利用できるゲームのゲームファイルをロードするために使用される例示的なシステムを示す。本システムは、インターネットなどのネットワーク１０２を通じてクラウドゲームサイト１０４に通信可能に接続された複数のクライアント装置１００を含む。クラウドゲームサイト１０４へのアクセス要求をクライアント装置１００から受信すると、クラウドゲームサイト１０４は、ユーザデータストア１０８に格納されているユーザアカウント情報１０６にアクセスして、その要求を起こしたクライアント装置に関連付けされるユーザを識別する。いくつかの実施形態では、クラウドゲームサイトは、ユーザが視聴／プレイを許可された全てのゲームを判断するために、識別されたユーザを検証することもできる。ユーザアカウントの識別／検証に続いて、クラウドゲームサイトは、ゲームタイトルデータストア１１０にアクセスして、要求を起こしたユーザアカウントがゲームクラウドサイトで利用できるゲームタイトルを特定する。次に、ゲームタイトルデータストア１１０は、ゲームデータベース１１２とやり取りして、クラウドゲームサイトで利用可能な全てのゲームのゲームタイトルを取得する。新たなゲームが導入されると、そのゲームコードを用いてゲームデータベース１１２が更新され、新たに導入されたゲームのゲームタイトル情報がゲームタイトルデータストア１１０に提供される。要求を起こした際に、要求を起こしたクライアント装置は、クラウドゲームサイトに登録されてもされなくてもよい。要求を起こしたクライアント装置のユーザが登録ユーザではない場合、クラウドゲームサイトはそのユーザを新規ユーザとして識別し、新規ユーザに適したゲームタイトル（例えば、デフォルトのゲームタイトルセット）を選択することができる。特定されたゲームタイトルは、図１Ａに示すように、表示画面１００−ａ上に提示するためにクライアント装置に送り返される。
【００５５】
クライアント装置上に描画されたゲームタイトルのうちの１つにおけるユーザインタラクションが検出され、信号がクラウドゲームサイトに送信される。この信号には、ユーザインタラクションが検出されたゲームタイトル情報と、そのゲームタイトルに記録されたユーザインタラクションとが含まれる。クラウドゲームサイトは、クライアント装置から受信した信号に応答して、ゲームがホストされているデータセンタを事前に決定し、特定されたデータセンタに信号を送信して、ユーザインタラクションが検出されたゲームタイトルに対応付けされるゲームをロードする。いくつかの実施形態において、２つ以上のデータセンタがゲームをホストしていてもよい。そのような実施形態では、クラウドゲームサイトは、要求を起こしているクライアント装置の地理位置情報を決定して、クライアント装置に地理的に近いデータセンタを特定し、そのデータセンタに信号を送ってゲームを予めロードすることができる。ユーザの地理位置情報は、２〜３例を挙げると、クライアント装置内の全地球測位システム（ＧＰＳ）機構、クライアントのＩＰアドレス、クライアントのｐｉｎｇ情報を使用して決定することができる。もちろん、ユーザの地理位置情報を検出するための前述の方法は例示的なものであり、ユーザの地理位置情報を決定するために他種の機構またはツールを使用してもよい。クライアント装置に近いデータセンタを識別することにより、ゲームとのユーザインタラクションの間中、レイテンシを最小限に抑えることができる。いくつかの実施形態では、識別されたデータセンタが、ゲームをホストするのに必要な帯域幅／容量を備えない場合があり、または使い過ぎの場合がある。これらの実施形態において、クラウドゲームサイトは、クライアント装置に地理的に近い第２のデータセンタを特定することができる。ゲームのロードには、ゲームコードをロードすること、及びゲームのインスタンスを実行することが含まれる。
【００５６】
クラウドゲームサイトから信号を受信することに応答して、特定されたデータセンタは、データセンタにおいてサーバを選択して、そのサーバ上でゲームをインスタンス化することができる。サーバは、利用可能なハードウェア／ソフトウェア機能とゲームの要件とに基づいて選択される。サーバは複数のゲームコンソールを含むことができ、サーバは、その複数のゲームコンソールのうちのどれを使用してゲームをロードするかを、決定することができる。ゲームコンソールは、独立型のゲームコンソールと類似したものであってもよいし、ラックマウント型サーバまたはブレードサーバであってもよい。さらには、ブレードサーバは複数のサーバブレードを含み、各ブレードが、ゲームなどの単一の専用アプリケーションをインスタンス化するために必要な回路を有することができる。当然ながら上述のゲームコンソールは例示的なものであり、限定的なものと見なすべきではない。ゲームステーションなどを含む他種のゲームコンソール、及び他形態のブレードサーバを、特定されたゲームをホストするために関与させることもできる。
【００５７】
ゲームコンソールが特定されると、ゲームの汎用ゲーム関連コードがゲームコンソールにロードされ、ゲームがインスタンス化されるゲームコンソールを特定する信号が、クラウドゲームサイトによって、ネットワーク経由でクライアント装置に返される。このようにして、ロードされたゲームが、ユーザに利用可能にされる。
【００５８】
図１Ｂは、本開示の実施態様に従って、クラウドビデオゲームをクライアント装置にストリーム配信するために実行される様々な動作を概念的に示す流れ図である。ゲームシステム１１８は、ビデオゲームを実行し、未処理の（圧縮されていない）ビデオ１２０及びオーディオ１２２を生成する。図示した略図の参照符号１２４で示すように、ビデオ１２０及びオーディオ１２２はストリーミングの目的で取り込まれて符号化される。符号化により、ビデオストリーム及びオーディオストリームに圧縮を施して、帯域幅利用の量を減らし、ゲーム体験を最適化することができる。符号化フォーマットの例には、Ｈ．２６５／ＭＰＥＧ−Ｈ、Ｈ．２６４／ＭＰＥＧ−４、Ｈ．２６３／ＭＰＥＧ−４、Ｈ．２６２／ＭＰＥＧ−２、ＷＭＶ、ＶＰ６／７／８／９などが挙げられる。
【００５９】
符号化オーディオ１２６及び符号化ビデオ１２８は、インターネットなどのネットワークを介した送信のために、参照符号１３２で示すように、さらにネットワークパケットにパケット化される。ネットワークパケット符号化プロセスには、データ暗号化プロセスを使用することもでき、それによって強化されたデータ保護を提供する。図示の実施態様では、参照符号１４０に示すように、オーディオパケット１３４及びビデオパケット１３６が、ネットワークを介した伝送のために生成される。
【００６０】
ゲームシステム１１８は、触覚フィードバックデータ１３０を付加的に生成し、触覚フィードバックデータ１３０はまた、ネットワーク送信のためにネットワークパケットにパケット化される。図示の実施態様では、参照符号１４０でさらに示すように、触覚フィードバックパケット１３８が、ネットワークを介した伝送のために生成される。
【００６１】
未処理のビデオ及びオーディオならびに触覚フィードバックデータを生成し、ビデオ及びオーディオを符号化し、符号化されたオーディオ／ビデオ及び触覚フィードバックデータを送信のためにパケット化する上記の動作は、クラウドゲームサービス／システムを集合的に設定する１つまたは複数のサーバ上で実行される。参照符号１４０で示すように、オーディオ、ビデオ、及び触覚フィードバックパケットは、インターネットなどのネットワーク及び／またはインターネットを含むネットワークを通じて伝送される。参照符号１４２で示すように、オーディオパケット１３４、ビデオパケット１３６、及び触覚フィードバックパケット１３８は、クライアント装置によって復号／再組立てされて、符号化オーディオ１４６、符号化ビデオ１４８、及び触覚フィードバックデータ１５０を設定する。データが暗号化されている場合は、ネットワークパケットも解読される。続いて符号化オーディオ１４６及び符号化ビデオ１４８は、参照符号１４４で示すように、クライアント装置によって復号化されて、表示装置１５２上にレンダリングするためのクライアント側の未処理オーディオデータ及び未処理ビデオデータが生成される。触覚フィードバックデータ１５０は、触覚効果がそれによって表現され得るコントローラ装置１５６または他のインタフェース機器において触覚フィードバック効果を生成するように処理／通信することができる。触覚効果の一例は、コントローラ装置１５６の振動または鳴動である。
【００６２】
ビデオゲームはユーザ入力に応答し、したがってユーザ入力の送信及び処理のために、上に述べたものと同様の手順のフローを、ただし逆方向にクライアント装置からサーバへ、実行できることが理解されよう。図示するように、ユーザ操作コントローラ装置１５６は入力データ１５８を生成することができる。この入力データ１５８は、ネットワークを通じてクラウドゲームシステムに伝送されるために、クライアント装置でパケット化される。入力データパケット１６０は、サーバ側で入力データ１６２を設定するために、クラウドゲームサーバによって復元されて再組み立てされる。入力データ１６２はゲームシステム１１８に送り込まれ、ゲームシステム１１８は入力データ１６２を処理して、ビデオゲームのゲーム状態を更新する。
【００６３】
オーディオパケット１３４、ビデオパケット１３６、及び触覚フィードバックパケット１３８の伝送中（参照符号１４０）、クラウドゲームストリームのサービス品質を保証するために、ネットワークにわたるデータの送信を監視することができる。例えば、参照符号１６４によって示すように、アップストリーム及びダウンストリームの両方のネットワーク帯域幅を含むネットワーク状態を監視することができ、利用可能な帯域幅の変化に応答してゲームストリーミングを調整することができる。すなわち、ネットワークパケットの符号化及び復号化は、参照符号１６６によって示すように、現在のネットワーク状態に基づいて制御することができる。
【００６４】
図２は、本開示の実施態様に従って、クラウドゲームのためにウェブブラウザ、ストリーミングサーバ、及びクラウドコンソールの間に通信を確立して処理するプロセスを概念的に示す。図示の実施態様では、ウェブブラウザ２００はクラウドゲームサービスにアクセスするために使用されており、現在、ユーザはクラウドビデオゲームのゲームプレイを開始したいと望んでいる。ウェブブラウザは、ウェブブラウザ内で実行されるように構成されたウェブアプリケーションを受け取り、いくつかの実施態様では、ブラウザによってサポートされるＷｅｂＲＴＣ  ＡＰＩにアクセスする。ウェブアプリケーションはウェブブラウザによって実行されるので、本実施態様の説明を容易にするために、「ウェブブラウザ」及び「ウェブアプリケーション」という用語は、クラウドビデオゲームのゲームプレイのためにそれらの使用法を説明する際に、互換性があるようにして用いられる。
【００６５】
ピアツーピア接続は、ウェブブラウザ２００とストリーミングサーバ２０２との間に確立される。いくつかの実施態様では、ピアツーピア接続は、ＲＴＣＰｅｅｒＣｏｎｎｅｃｔｉｏｎ  ＡＰＩを使用し、さらにはセッション記述プロトコル（ＳＤＰ）に従って確立される。大まかに言って、これには、ＳＤＰを使用して、オファーとアンサーとをやり取りすることによって、メディア構成情報を交換するためのシグナリングが必要とされる。図示の実施態様では、ウェブブラウザ２００はストリーミングサーバ２０２へのオファーを開始し、ストリーミングサーバ２０２はセッション管理モジュール２０６を使用して、参照符号２０８で示すように、レスポンスのアンサーを生成する。これにより、ウェブブラウザ２００とストリーミングサーバ２０２との間にピアツーピア接続が確立され、ピアツーピア接続により、小さなレイテンシがもたらされて、最適なストリーミングビデオ性能が可能になる。
【００６６】
要求されたクラウドビデオゲームは、クラウドコンソール２０４によって実行され、クラウドコンソール２０４はビデオゲームを実行し、第１のビデオストリームを設定する、特定のビデオフォーマットでの符号化、及び暗号化方式を用いた暗号化の両方が施されたビデオデータを生成する。クライアント装置がゲームコンソールなどの専用クライアントゲーム装置である場合、この第１のビデオストリームは、専用クライアントゲーム装置に直接送信することができ、この専用クライアントゲーム装置は、第１のビデオストリームを復号及び解読するように構成される。しかしながら、本実施態様では、クライアントは、そのリソースが満足の行くストリーミングサービスを提供することが保証されない可能性があるクライアント装置上で動作するウェブブラウザであるので、その場合、クライアント装置の機能への依存を制限することが望ましい。したがって、ストリーミングサーバ２０２は、第１のビデオストリームを受信し、それを解読する（参照符号２１２）ように構成されたビデオ再混合モジュール２１０を含む。この解読されたビデオは、ディスプレイ装置にレンダリングするために保護プロトコルを介してウェブブラウザ２００に送信され、それによって第２のビデオストリームを設定することができる。保護プロトコルは、ストリーミングサーバ２０２とウェブブラウザ２００との間に確立されたピアツーピア接続（例えば、ＲＴＣＰｅｅｒＣｏｎｎｅｃｔｉｏｎ  ＡＰＩ）に従ったものであることが理解されよう。いくつかの実施態様では、保護プロトコルは、ＳＲＴＰなどのＷｅｂＲＴＣによって実装されたものである。ストリーミングサーバ２０２、より具体的にはビデオ再混合モジュール２１０は、クラウドコンソール２０４によって適用された暗号化を解消し、ピアツーピア接続のためにウェブブラウザ２００によってサポートされる別の暗号化を適用できることが理解されよう。
【００６７】
オプションで他の実施態様において、第１のビデオストリームを解読することに加えて、ビデオ再混合モジュール２１０は、（解読された）第１のビデオストリームを復号し（参照符号２１２）、次に結果として生じるビデオコンテンツを、特定の種類のウェブブラウザ２００に適しているかまたは好ましいビデオフォーマットで再符号化する（参照符号２１４）ように構成することもできる。ウェブブラウザの種類の例としては、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ、Ｃｈｒｏｍｅ、Ｆｉｒｅｆｏｘ、Ｓａｆａｒｉなどが挙げられる。再符号化されたビデオコンテンツは、保護プロトコルを介してウェブブラウザ２００に送信され、したがって現時点で第１のビデオストリームからコード変換されている第２のビデオストリームが設定される。
【００６８】
ストリーミングサーバは、ブラウザ入力機構（キーボード、マウス、タッチパッド、トラックボール、その他のブラウザ入力装置など）を介して受信される入力データを、コンソールコントローラコマンドに変換することが可能なコマンド変換モジュール２１６をさらに含み（参照符号２１８）、コンソールコントローラコマンドはクラウドコンソール２０４に送信される。いくつかの実施態様では、ストリーミングサーバ２０２によってブラウザから受信された入力データは、ＲＴＣＤａｔａＣｈａｎｎｅｌ  ＡＰＩを使用して送信される。ストリーミングサーバ２０２から受信されると、コンソールコントローラコマンドがクラウドコンソール２０４によって適用され、実行中のビデオゲームの状態が更新される。
【００６９】
図３は、本開示の実施態様による、クラウドゲーム用のシステムを示す。ユーザ３００は、クラウドゲームサービスにアクセスする構成となっているクライアント装置３０４とインタラクトする。ユーザ３００は、入力装置３０２（例えば、マウス、キーボード、コントローラ装置、タッチパッド、トラックボール、モーションコントローラ、タッチスクリーンなど）を操作して、入力を生成し、入力をクライアント装置３０４に提供することができる。さらに、クライアント装置３０４は、表示装置３１４にコンテンツを表現するように構成することができる。様々な実施態様において、表示装置３１４は、ヘッドマウントディスプレイ、モニタ、ＬＣＤ／ＬＥＤディスプレイ、タッチスクリーンディスプレイ、テレビ、プロジェクタなどであってもよいことが理解されよう。
【００７０】
クライアント装置は、ネットワーク３１６を通じてクラウドゲームサーバ３１８と通信し、クラウドゲームサーバ３１８はユーザのクラウドゲームアカウントへのアクセスを提供する。クラウドゲームサーバ３１８は、ユーザアカウント記憶装置３２２からユーザデータ３２４を検索する。図示の実施形態では、ユーザデータ３２４は、そのユーザ３００に固有のものである。例として、ユーザデータ３２４には、ユーザによるゲームプレイの利用が可能なゲームタイトルであるタイトル３２６などの様々なクラウドゲーム関連データが含まれ得る。これらは、ユーザが購入したゲームタイトル、ユーザが有料で借りたゲームタイトル、ユーザが無料で借りたゲームタイトル、ユーザが授与されたゲームタイトル、またはユーザが別の方法でゲームプレイ用のアクセス権を得たゲームタイトルであり得る。ユーザデータにはまた、ゲームセーブデータ３２８、トロフィー３３０、統計３３２、ソーシャルデータ３３４（例えばソーシャルグラフデータを含む）、及び履歴データ３３６（例えばユーザアクセス履歴、ゲームプレイ履歴など）が含まれてもよい。
【００７１】
ユーザ３００は、ユーザがアクセス許可を有する所与のクラウドビデオゲームをプレイしたいと望む場合、ユーザは、ウェブブラウザ３０６を使用して、クラウドゲームサーバ３１８からのグラフィカルユーザインタフェース（ＧＵＩ）にアクセスすることができる。ＧＵＩはクライアント装置３０４によってディスプレイ装置３１４上に提示され、ユーザ３００は、ＧＵＩを介して、所与のクラウドビデオゲームの選択を指示することができる。ゲームプレイ用のビデオゲームが選択されると、ゲーム要求がクライアント装置３０４からクラウドゲームサーバ３１８に送信される。ゲーム要求により、ユーザがプレイを望むゲームタイトルが特定され得る。クラウドゲームサーバ３１８は、ゲーム要求の受信に応答して、クラウドゲーム機２０４を起動して、要求されたビデオゲームタイトルをインスタンス化する。すなわち、クラウドゲーム機２０４は、要求中のクライアント装置３０４に割り当てられ、要求されたビデオゲームタイトルの実行を開始する。
【００７２】
ゲーム機２０４は、要求されたゲームタイトルコードをゲームタイトルデータストア３２０から取得し、実行中のビデオゲームを設定するゲームタイトルコードを実行する。ゲーム機２０４は、暗号化及び符号化された第１のビデオストリームを出力する。ゲーム機２０４から出力される第１のビデオストリームはストリーミングサーバ２０２に供給され、ストリーミングサーバ２０２が第１のビデオストリームを解読する。次に、結果として生じる符号化ビデオが、安全なネットワーク通信プロトコルに従ってネットワーク３１６経由でクライアント装置３０４に送信され、第２のビデオストリームを設定することができる。第２のビデオストリームは、ブラウザ３０６によって実行されるウェブアプリケーション３０８によって処理され、対話型ゲームプレイ向けにディスプレイ装置３１４にレンダリングされる。いくつかの実施態様では、クラウドビデオゲームをプレイするという要求に応答して、ウェブアプリケーション３０８がクラウドゲームサーバ３１８からクライアント装置３０４に提供される。他の実施態様において、ウェブアプリケーション３０８は、クラウドビデオゲームをプレイするという要求に先立ってクライアント装置３０４に提供されてもよい。いくつかの実施態様では、ウェブアプリケーションまたはその一部は、ウェブブラウザ３０６に関連付けられたローカル記憶装置３１０において、クライアント装置３０４上でキャッシュに保存することができる。そのような実施態様では、所与のビデオゲームのゲームプレイが要求されたときに、ウェブアプリケーションを、利用可能であれば、実行のためにローカル記憶装置３１０から読み出すことができる。ウェブアプリケーション３０８は、ディスプレイ装置３１４へのレンダリングのためにストリーミングサーバ２０２から受信される第２のビデオストリームの処理を提供するように構成され、クライアント装置３０４によって入力装置３０２から受信される対話型入力を処理することもでき、この対話型入力はストリーミングサーバ２０２に逆送信するために処理されることが理解されよう。
【００７３】
当業者には理解されるように、実行中のビデオゲームは、入力を受け取り、その入力を処理してビデオゲームのゲーム状態を更新するゲームエンジンを設定することができる。いくつかの実施態様では、初期コンテンツがクライアント装置で提示されている間に、ビデオゲームのゲームエンジンがゲーム機で初期化される。このゲームエンジンは、ゲーム機がゲームエンジンの実行を継続するためのトリガを待つとき、初期化され、次いで休止状態に入ることができる。ユーザ入力から設定され得るトリガを受信すると、休止状態から抜け出て、結果として生じるゲームエンジンの実行によって、ビデオゲームの対話型ゲームプレイの開始が提供される。いくつかの実施態様では、多くの場合、ユーザが、最後に保存した記憶位置からゲームプレイを続けることを通常は望むので、ゲーム機におけるゲームエンジンの初期化は、ユーザが最後に保存したゲームデータをロードするように構成してもよい。
【００７４】
記述の便宜上、ゲーム機２０４が、ゲームコンソールや同等のハードウェア（例えば、ブレード状ゲームコンソールハードウェア）などの個々の装置として企図される実施態様について記載している。しかしながら、他の実施態様では、ゲーム機によって実行されるものとして記載した機能は、ゲームコンソール（または同等のハードウェア）とさらなるストリーミングプロセッサ／サーバとの組合せなど、複数の装置によって実行できることが理解されよう。そのような実施態様では、ゲームコンソールはビデオゲームを実行し、符号化されていない及び／または暗号化されていない初期ビデオストリームをレンダリングすることができ、次に、この初期ビデオストリームを別個のストリーミングプロセッサ／サーバによって符号化及び／または暗号化して、図示の実施態様ではストリーミングサーバ２０２によって処理される前述の第１のビデオストリームを生成することができる。初期ビデオストリームは、上記のとおり、初期ビデオストリームを復号して解読することができる専用クライアントゲーム装置に送信され得ることが理解されよう。しかしながら、ウェブブラウザを使うクラウドゲームを、ユーザにとって満足の行く性能で可能にするために、ストリーミングサーバ２０２が図示のように利用される。このように、ゲーム機２０４から出力される第１のビデオストリームは、専用のクライアントゲーム装置かそれともクライアント装置上で実行されているウェブブラウザのいずれかにゲームプレイをストリーム配信するのに使用することができる。
【００７５】
いくつかの実施態様では、所与のビデオゲームについて、ゲームデータ３１２をキャッシュに保存するか、またはローカル記憶装置３１０に格納してもよい。そのようなコンテンツは、ビデオゲームのゲームプレイのために、記憶し、及び／または読み出すことができる。例えば、様々なアートアセット、オーディオアセット、設定、及び他のデータをゲームデータの一部として格納することができる。
【００７６】
様々な実装態様において、クライアント装置は、汎用コンピュータ、特殊用途のコンピュータ、携帯型ゲームコンソール、パソコン、ラップトップコンピュータ、タブレットコンピュータ、モバイルコンピューティング装置、携帯ゲーム装置、携帯電話、セットトップボックス、ストリーミングメディアインタフェース／装置、多機能テレビもしくはネットワークディスプレイ、または本明細書で定義されるクライアント機能を満たすように構成することができる他の任意のコンピューティング装置とすることができる。いくつかの実施態様では、クラウドゲームシステムは、ユーザによって利用されているクライアント装置の種類を検出し、ユーザのクライアント装置に適したクラウドゲーム体験を提供するように構成される。例えば、画像設定、オーディオ設定、及び他の区分の設定が、ユーザのクライアント装置向けに最適化され得る。
【００７７】
図４は、本開示の実施態様に従って、クラウドゲームサービスを提供するシステムを示し、データセンタでホストされるゲーム機が、専用ゲーム装置クライアントまたはブラウザクライアント装置のいずれかにサービスを提供することができる。図示の実施態様では、クラウドホスティングシステム４００は、クラウドゲームサービスを可能にするように、クライアント装置によってネットワーク３１６を通じてアクセスできる。データセンタ割当てロジック４０６は、所与のクライアント装置をデータセンタ４０８などの特定のデータセンタに割り当てるように構成される。データセンタ割当てロジック４０６は、地理的な近接性、ネットワークの近接性、ＩＰアドレス、データセンタ間の負荷バランス、ネットワークのレイテンシ（例えばクライアント装置とデータセンタとの間のレイテンシ）、所与のデータセンタへの事前割当て、所与のデータセンタにおけるユーザのゲームセーブデータの場所などを含む様々な要因に基づいて、所与のクライアント装置を特定のデータセンタに割り当てることができることが理解されよう。データセンタ割当てロジック４０６は、例えばネットワーク条件が変化し、クライアント装置を再割当てすることによって、より良好なゲームストリーミング性能が得られると判断した場合、所与のクライアント装置を、新しいデータセンタに再割当てすることもできる。
【００７８】
いくつかの実施態様では、クラウドホスティングシステム４００は、クラウドゲームプラットフォームインタフェースを管理し、これをクライアント装置に提供する。クラウドゲームプラットフォームインタフェースは、ユーザが購入及び／またはゲームプレイに利用可能なゲームタイトルを閲覧し、特定のビデオゲームのゲームプレイを開始する要求を起こすことを可能にするグラフィカルユーザインタフェースであり得る。クラウドゲームプラットフォームインタフェースは、クラウドゲームシステムにアクセスしている特定のユーザについてのユーザアカウントデータ３２２に応じて、カスタマイズできることが理解されよう。ビデオゲームのゲームプレイを選択または開始することに加えて、ゲームプラットフォームインタフェースは、他の機能、例えば、ソーシャルネットワーク（複数可）、ニュース、メディアライブラリ、ビデオコンテンツ、オーディオコンテンツ、画像コンテンツ、ユーザアカウント設定などへのアクセスを提供することができる。いくつかの実施態様では、ビデオゲームのゲームプレイを開始する要求が所与のクライアント装置から受信されると、次にそのビデオゲームのストリーミングゲームプレイのために、クライアント装置が、データセンタ４０８、より具体的には特定のゲーム機２０４に割り当てられる。
【００７９】
データセンタ４０８は、ゲーム機２０４を含むデータセンタにおける様々なゲーム機の利用を管理するように構成されたゲーム機マネージャ４１０を含むことができる。例えば、データセンタ４０８内の特定のゲーム機への所与のクライアントの割当てが、ゲーム機マネージャ４１０によって決定されてもよい。さらに、ゲーム機には、ビデオゲームに対する需要（または予想される需要）に基づいて特定のビデオゲームを予めロードすることができ、その結果、ビデオゲームのゲームプレイを開始するための待ち時間を減らすことができる。クライアントがゲーム機２０４に割り当てられると、ゲーム機２０４は、ゲームセーブデータ記憶装置４１２から、ユーザの以前に保存したゲームデータをロードすることができる。
【００８０】
図示の実施態様に示すように、ゲーム機２０４がクラウドビデオゲームを実行する際のゲーム機２０４からの出力は、コンソールクライアント装置４１４またはブラウザクライアント装置３０４のいずれかにサービスを提供するために使用することができる。コンソールクライアント装置（上記のとおり、ブラウザベースのクライアントではなく、専用のクライアントゲーム装置であるクライアント装置）について言えば、ゲーム機２０４からの出力は、いくつかの実施態様ではＨＭＤであり得るディスプレイ装置４１６にレンダリングするために、ネットワーク３１６経由でコンソールクライアント装置４１４に送信される暗号化及び符号化されたビデオストリームである。
【００８１】
また一方、クライアント装置が、クラウドゲームシステムにアクセスするために利用されるブラウザ（例えば図３に示すブラウザ３０６）を実行するブラウザクライアント装置３０４である場合、ゲーム機２０４からの出力は、ネットワーク３１６経由でブラウザクライアント装置３０４に送信される前に、暗号解読と可能なコード変換とのために、最初にストリーミングサーバ２０２に供給される。いくつかの実施態様では、クライアント装置３０４のブラウザは、ウェブサーバ４０２と通信してクラウドゲームプラットフォームインタフェースにアクセスし、要求されたビデオゲームのゲームプレイを開始する。本開示の実施態様によれば、ゲーム機２０４によって生成される第１のビデオストリームは、適切な符号化方式で符号化され、ネイティブ暗号化方式で暗号化される。一方、ストリーミングサーバ２０２からクライアント装置３０４に送信される第２のビデオストリームも同様に符号化することができるが、ストリーミングサーバ２０２とクライアント装置３０４との間の伝送に利用される安全な伝送プロトコル（例えばＨＴＴＰＳ）による、別方式の非ネイティブ暗号化方式で暗号化され得る。
【００８２】
前述のコンソールクライアント装置は、専用クライアント装置の一例に過ぎないことが理解されるべきであり、他の実施態様では、他機種の専用クライアント装置で代用できることが理解されよう。本開示の目的のための専用クライアント装置は、ゲーム機２０４から出力される暗号化されたビデオストリームの解読を行うように構成されたものであり、通常、この目的のためのプロプライエタリソフトウェアの能力を有し、このソフトウェアと共にインストールされている。通常は、特化されたゲームプラットフォームソフトウェアを実行している特殊用途のコンピュータであるゲームコンソールに加えて、携帯ゲーム装置、セットトップボックス、多機能テレビ、または本開示に従って専用クライアント装置の機能を遂行するように構成された他の装置など、他種の装置を専用クライアント装置として構成することができる。そのような専用のクライアント装置と対照的に、ブラウザクライアント装置３０４は、ゲーム機２０４からのビデオストリームの解読を行わない。
【００８３】
図５は、本開示の実施態様による、クラウドゲーム用のシステムを示し、クライアント装置とストリーミングサーバとの間の通信を確立するために使用されるコンポーネントを示す。クライアント装置３０４上のブラウザ３０６によって実行されるウェブクライアント３０８とストリーミングサーバ５１６との間の通信を確立するために、シグナリング手順が実行される。シグナリング手順中に、通信を初期化または終了してエラーを報告するためのセッション制御メッセージ、ネットワーク構成情報（例えばＩＰアドレス及びポート）、及びメディア機能（例えばブラウザによって処理されるコーデック及び解像度）を含む様々な情報が交換される。
【００８４】
いくつかの実施態様では、シグナリングは、ＲＴＣＰｅｅｒＣｏｎｎｅｃｔｉｏｎ  ＡＰＩを使用して、セッション記述プロトコル（ＳＤＰ）に従って実行されて、ストリーミング初期設定パラメータを設定する。さらに、Ｉｎｔｅｒａｃｔｉｖｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ  Ｅｓｔａｂｌｉｓｈｍｅｎｔ（ＩＣＥ）フレームワークを利用して、ネットワーク情報の交換を促進し、クライアント装置３０４とストリーミングサーバ５１６との間の最良のネットワーク経路を見つけることができる。大まかに言って、これには、先ず、それぞれの装置のオペレーティングシステム及びネットワークカードから得られたホストアドレスを使用して、接続を試みることが必要とされ得る。これが（例えば、ネットワークアドレス変換（ＮＡＴ）を用いる装置が原因で）失敗した場合、ＳＴＵＮサーバ５０４を使用して外部アドレスが取得され、それが失敗した場合、トラフィックはＴＵＲＮリレーサーバ５０６を介してルーティングされる。いくつかの実施態様では、ＴＵＲＮサーバがＳＴＵＮサーバの機能を含み得るので、ＳＴＵＮサーバ及びＴＵＲＮサーバを同一サーバとすることができる。
【００８５】
ウェブクライアント３０８は、ＷｅｂＲＴＣ  ＡＰＩ５００にアクセスして、ウェブクライアントとストリーミングサーバ５１６との間のデータのストリーミングを処理する種々のＷｅｂＲＴＣサービス５０２を利用する。例えば、いくつかの実施態様では、ウェブクライアントによって受信されたビデオストリームは、ＷｅｂＲＴＣプロトコルを使用して、例えばＲＴＣＰｅｅｒＣｏｎｎｅｃｔｉｏｎコンポーネント及び基礎をなすＷｅｂＲＴＣプロトコル／コーデックを使用して消費される。ストリーミングサーバ５１６は、上述のシグナリング手順に従って、ストリーミングサーバとウェブクライアントとの間のセッションの確立を処理するセッションマネージャ５１８を含むことができる。
【００８６】
クラウドゲーム機２０４はクラウドビデオゲームを実行し、それによってビデオゲームロジック５１０を設定する。ビデオゲームロジック５１０は、クライアントから提供されたときにビデオゲームをプレイするユーザからの入力を使用して、ビデオゲームのゲーム状態を維持し、ゲーム状態を継続的に更新する。クラウドゲーム機２０４は、暗号化及び符号化された第１のビデオストリームを生成するビデオレンダラ５１２を含むことができる。ストリーミングサーバ５１６（例えば、ｎｏｄｅ．ｊｓサーバ）は、クラウドゲーム機２０４から受信した第１のビデオストリームを解読するように構成された暗号解読ロジック５２０を含む。オプションで、トランスコーダ５２２は、特定型式のブラウザ３０６用の好ましい符号化フォーマットに最適化するように、解読されたビデオストリームを、ある符号化フォーマットから別の符号化フォーマットにコード変換してもよい。ビットレート制御及び／または圧縮率、色調整、オーディオ処理などの付加的なビデオ処理を実行することができる。上述のように、結果として生じる符号化ビデオコンテンツは、保護プロトコルを介してウェブクライアント３０８に送信される。
【００８７】
さらに、ウェブクライアント３０８とストリーミングサーバ５１６との間にデータチャネルが確立され、それを通じてクライアント装置３０４で生成された入力データがストリーミングサーバ５１６に送信される。この入力データは、クライアント装置３０４の入力装置（例えば入力装置３０２）から受信した対話型入力に応答して生成することができる。いくつかの実施態様では、データチャネルは、ＲＴＣＤａｔａＣｈａｎｎｅｌ  ＡＰＩを使用して確立される。ストリーミングサーバ５１６は、データチャネルを通じて受信される入力データを、クラウドゲーム機２０４用の１つまたは複数のコマンドに変換するように構成された入力変換器５２４を含む。コマンドはクラウドゲーム機２０４に送信され、クラウドゲーム機２０４は、受信したコマンドを処理してそれらをビデオゲームロジック５１０に適用するための入力処理器５１４を含むことができる。
【００８８】
前述の実施態様に従って説明されたように、ビデオストリームは、ウェブクライアント３０８による処理及びディスプレイへのレンダリングのために、ストリーミングサーバ５１６からクライアント装置３０４に送信される。また一方、いくつかの実施態様では、追加のビデオストリーミングサーバ５０８（例えば、ＶｉｄｅｏＬＡＮストリーミングサーバ）を利用して、ビデオコンテンツをクライアント装置３０４にストリーム配信することができる。追加のビデオストリーミングサーバ５０８は、クライアント装置及び関連するブラウザのストリーミング性能を最適化するために、ビデオコンテンツのコード変換、ビットレート制御、または他の処理を処理するように構成され得る。
【００８９】
図６は、本開示の実施態様による、クラウドビデオゲームのゲームプレイをストリーム配信する方法を示す。方法動作６００において、クラウドビデオゲームのゲームプレイを開始するための要求が、クライアントから、クラウドゲームシステムによって、ネットワーク（例えばインターネットを含む）を通じて受信される。方法動作６０２において、クライアントは、データセンタに割り当てられ、さらに、要求されたビデオゲームを実行するように構成されたデータセンタ内の特定のクラウドゲーム機に割り当てられる。方法動作６０４において、クライアントの種類が決定される。クライアントが、ビデオゲームの実行の結果、クラウドゲーム機によって生成されたビデオストリームを処理する能力を備えたゲーム装置である場合、動作６１０において、クラウドゲーム機からのビデオストリームが、直接クライアントにストリーム配信される。
【００９０】
しかし、クライアントが、クライアント装置（前述のゲーム装置クライアントと同様の能力を備えていないクライアント装置）上で実行されるブラウザである場合、動作６０６において、クラウドゲーム機からのビデオストリームは、クラウドゲーム機に対して「クライアント」の機能を果たすストリーミングサーバに送信される。ストリーミングサーバは、ビデオストリームの解読を行い、さらにビデオストリームをコード変換し、または別の方法で処理することができる。オペレーション６０８において、次にストリーミングサーバは、この場合はクライアントであるブラウザに第２のビデオストリームを送信する。
【００９１】
したがって、前述の方法は、暗号化されたビデオストリームを生成するクラウドゲーム機を提供し、必要条件を備えたゲーム装置及びブラウザベースクライアント装置の両方にサービスを提供するために利用される。
【００９２】
図７は、情報サービスプロバイダアーキテクチャの実施形態を示す。情報サービスプロバイダ（ＩＳＰ）７７０は、地理的に分散してネットワーク７８６を介して接続されたユーザ７８２に、多数の情報サービスを配信する。ＩＳＰは、株価の更新などのただ１種類だけのサービス、または放送メディア、ニュース、スポーツ、ゲームなどの種類豊富なサービスを配信することができる。さらに、各ＩＳＰが提供するサービスは動的であり、つまり、サービスはいつでも追加または削除ができる。すなわち、特定の個人に特定の種類のサービスを提供するＩＳＰは、時間と共に変化し得る。例えば、ユーザが自分の地元にいる間、ユーザは、ユーザの近くのＩＳＰによってサービスを受けることができ、ユーザが別の都市に赴くとき、ユーザは異なるＩＳＰによってサービスを受けることができる。地元のＩＳＰは、必要な情報及びデータを新しいＩＳＰに転送し、その結果、ユーザ情報が新しい都市までユーザを「追いかけ」、そのデータをユーザに近づけてアクセスし易くする。別の実施形態では、ユーザの情報を管理するマスタＩＳＰと、マスタＩＳＰからの制御下でユーザと直接インタフェースをとるサーバＩＳＰとの間に、マスターサーバ関係を確立することができる。別の実施形態では、クライアントが世界中を移動するとき、データがあるＩＳＰから別のＩＳＰに転送されて、ユーザの要求に応えるのに適した位置にあるＩＳＰを、こうしたサービスを提供するＩＳＰにする。
【００９３】
ＩＳＰ７７０は、ネットワークを介して顧客にコンピュータベースのサービスを提供するアプリケーションサービスプロバイダ（ＡＳＰ）７７２を含む。ＡＳＰモデルを使用して提供されるソフトウェアは、オンデマンドソフトウェアまたはサービスとしてのソフトウェア（ＳａａＳ）と呼ばれることもある。特定のアプリケーションプログラム（顧客関係管理など）へのアクセスを提供する簡単な様式は、ＨＴＴＰなどの標準プロトコルを使用することである。アプリケーションソフトウェアは、ベンダのシステム上にあり、ＨＴＭＬを使用するウェブブラウザを介して、ベンダによって提供される特殊目的クライアントソフトウェア、またはシンクライアントなどの他のリモートインタフェースによって、ユーザによってアクセスされる。
【００９４】
地理的に広い範囲にわたって提供されるサービスでは、クラウドコンピューティングが使用されることが多い。クラウドコンピューティングは、動的にスケーラブルで、多くの場合にバーチャル化されたリソースがインターネット上でサービスとして提供されるコンピューティングスタイルである。ユーザは、ユーザをサポートする「クラウド」の技術基盤のエキスパートになる必要はない。クラウドコンピューティングは、サービスとしてのインフラストラクチャ（ＩａａＳ）、サービスとしてのプラットフォーム（ＰａａＳ）、及びサービスとしてのソフトウェア（ＳａａＳ）など、種々のサービスに分類することができる。クラウドコンピューティングサービスでは、多くの場合、ウェブブラウザからアクセスされる一般的なビジネスアプリケーションがオンラインで提供され、ソフトウェア及びデータはサーバに格納される。クラウドという用語は、インターネットがコンピュータネットワーク図でどのように表現されているかに基づいた、インターネット（例えば、サーバ、記憶装置及びロジックを使用する）のメタファとして使用され、インターネットに隠されている複雑な基盤を抽象化したものである。
【００９５】
さらに、ＩＳＰ７７０は、シングルプレイヤビデオゲーム及びマルチプレイヤビデオゲームをプレイするためにゲームクライアントによって使用されるゲーム処理サーバ（ＧＰＳ）７７４を含む。インターネットを通じてプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームでは、プレイヤからデータを収集し、これを他のプレイヤに配布する専用のサーバアプリケーションが使用される。これはピアツーピア構成よりも効率的で効果的であるが、サーバアプリケーションをホストするには別個のサーバが必要になる。別の実施形態では、ＧＰＳはプレイヤ間の通信を確立し、プレイヤらのそれぞれのゲームプレイ装置が、集中型のＧＰＳに頼ることなく情報を交換する。
【００９６】
専用ＧＰＳは、クライアントとは無関係に動作するサーバである。このようなサーバは通常、データセンタにある専用ハードウェア上で稼働し、より広い帯域幅と専用の処理能力とを提供する。専用サーバは、ほとんどのＰＣベースのマルチプレイヤゲームで、ゲームサーバをホストするために推奨される方法である。多人数同時参加型オンラインゲームは、通常、ゲームのタイトルを所有するソフトウェア会社がホストする専用サーバ上で進行され、プレイヤらがコンテンツを制御及び更新することを可能にする。
【００９７】
放送処理サーバ（ＢＰＳ）７７６は、オーディオ信号またはビデオ信号を視聴者に配信する。非常に狭い範囲の視聴者に放送することは、ナローキャスティングと呼ばれることがある。ブロードキャスト配信の最終段階は、信号がどのようにして聴取者または閲覧者に届くかであり、ラジオ局もしくはテレビ局の場合と同様に、信号が電波に乗ってアンテナ及び受信機に到達する場合があり、あるいは、ケーブルテレビもしくはケーブルラジオ（または「ワイヤレスケーブル」）を経由して、局を介してまたはネットワークから直接、到達する場合がある。インターネットでは、特にマルチキャストにより、信号及び帯域幅を共有させることが可能になり、受益者にラジオかそれともテレビをもたらすこともできる。歴史的に、放送は、全国放送または地域放送などの地理的地域によって区切られている。しかし、高速インターネットの普及に伴い、コンテンツを世界のほぼ全ての国に届けることができるため、放送は地域によって限定されない。
【００９８】
ストレージサービスプロバイダ（ＳＳＰ）７７８は、コンピュータストレージスペース及び関連管理サービスを提供する。ＳＳＰはまた、定期的なバックアップ及びアーカイブを提供する。サービスとしてストレージを提供することにより、ユーザは必要に応じてより多くのストレージを申し込むことができる。もう１つの大きな利点は、ＳＳＰにバックアップサービスが含まれ、ユーザらのコンピュータのハードドライブに障害が発生したとしても、ユーザが全てのデータを失うことがないことである。さらに、複数のＳＳＰがユーザデータの全体または一部のコピーを保持することができ、ユーザが位置する場所またはデータにアクセスするのに使用される装置とは無関係に、ユーザが効率的な方法でデータにアクセスできるようにする。例えば、ユーザは、移動中に、ホームコンピュータ内及び携帯電話内の個人ファイルにアクセスすることができる。
【００９９】
通信プロバイダ７８０は、ユーザに接続能力を提供する。通信プロバイダの一種には、インターネットへのアクセスを提供するインターネットサービスプロバイダ（ＩＳＰ）がある。ＩＳＰは、ダイヤルアップ、ＤＳＬ、ケーブルモデム、ファイバ、ワイヤレス、または専用の高速相互接続など、インターネットプロトコルデータグラムを配信するのに適したデータ送信技術を使用して、ＩＳＰの顧客を接続する。通信プロバイダは、電子メール、インスタントメッセージ、及びＳＭＳテキストメッセージなどのメッセージサービスを提供することもできる。別種の通信プロバイダには、インターネットへの直接バックボーンアクセスを提供することによって帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ（ＮＳＰ）がある。ネットワークサービスプロバイダは、電気通信会社、データキャリア、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などで構成され得る。
【０１００】
データ交換７８８は、ＩＳＰ７７０内のいくつかのモジュールを相互接続し、これらのモジュールをネットワーク７８６を介してユーザ７８２に接続する。データ交換７８８は、ＩＳＰ７７０の全てのモジュールが近接している狭い領域を範囲に含むことができ、または異なるモジュールが地理的に分散している場合には、広い地理的領域を範囲に含むことができる。たとえば、Ｄａｔａ Ｅｘｃｈａｎｇｅ７８８には、データセンタのキャビネット内の高速ギガビットイーサネット（登録商標）（またはそれ以上のイーサネット）、または大陸間のバーチャルエリアネットワーク（ＶＬＡＮ）を含めることができる。
【０１０１】
ユーザ７８２は、少なくともＣＰＵ、メモリ、ディスプレイ装置及び入出力を含むクライアント装置７８４を用いてリモートサービスにアクセスする。クライアント装置は、ＰＣ、携帯電話、ネットブック、タブレット、ゲームシステム、ＰＤＡなどとすることができる。一実施形態では、ＩＳＰ７７０は、クライアントによって使用される装置の種類を認識し、使用される通信方法を調整する。他の事例では、クライアント装置は、ｈｔｍｌなどの標準的な通信方法を使用して、ＩＳＰ７７０にアクセスする。
【０１０２】
本開示の実施形態は、ハンドヘルド装置、マイクロプロセッサシステム、マイクロプロセッサを用いる家庭用電化製品またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む様々なコンピュータシステム構成を用いて実施することができる。本開示は、有線または無線のネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境において実施することもできる。
【０１０３】
上記の実施形態を考慮に入れて、本開示は、コンピュータシステムに格納されたデータを必要とする様々なコンピュータ実行動作を使用できることが理解されるべきである。これらの動作は、物理量の物理的処置を必要とする動作である。本開示の一部を形成する本明細書に記載されている動作のいずれも、有用な機械動作である。本開示はまた、これらの動作を実行するための装置または機器に関する。機器は必要な目的のために特別に構成することができ、または装置は、コンピュータに記憶されたコンピュータプログラムによって選択的に起動されまたは構成される汎用コンピュータとすることができる。特に、本明細書の教示に従って書かれたコンピュータプログラムと共に、様々な汎用機械を使用することができ、または必要な動作を実行するために、より特殊化した機器を構築することによって、さらに便利にすることができる。
【０１０４】
本開示は、コンピュータ可読媒体上のコンピュータ可読コードとして具体化することもできる。あるいは、コンピュータ可読コードは、上記のデータ交換相互接続を使用してサーバからダウンロードすることができる。コンピュータ可読媒体は、データを記憶することができ、その後コンピュータシステムによって読み取ることができる任意のデータ記憶装置である。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読み取り専用メモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、ならびに他の光学式及び非光学式データ記憶装置が含まれる。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納及び実行されるように、ネットワーク結合コンピュータシステム上に分散されたコンピュータ可読有形媒体が含まれ得る。
【０１０５】
本方法動作を特定の順序で説明したが、他の維持管理動作が動作間で実行されてもよく、または動作がわずかに異なる時間で行われるように動作が調整されてもよく、またはオーバーレイ動作の処理が所望の方法で実行される限り、処理に関連する様々な間隔で処理操作の発生を可能にするシステムに分散されてもよいことが理解されるべきである。
【０１０６】
前述の開示は、理解を明確にするためにある程度詳細に説明したが、添付の特許請求の範囲内で、特定の変更及び修正を実施することができることは明らかであろう。したがって、本実施形態は、限定的ではなく例示的であると見なされるべきであり、本開示は、本明細書に示された詳細に限定されるべきではなく、記載された実施形態の範囲及び均等物の範囲内で変更することができる。
【０１０７】
図８は、本開示の一実施形態によるアバタ制御システムを実施するためのコントローラに対応可能な、Ｓｏｎｙ（登録商標）  Ｐｌａｙｓｔａｔｉｏｎ  ３（登録商標）エンターテイメント装置などのゲームコンソールの全体システムアーキテクチャを概略的に示す。システムユニット８００には、システムユニット８００に接続可能な様々な周辺装置が設けられている。システムユニット８００は、いくつかの実施態様ではコンピューティングサーバとすることができる。システムユニット８００は、Ｃｅｌｌプロセッサ８２８、Ｒａｍｂｕｓ（登録商標）ダイナミックランダムアクセスメモリ（ＸＤＲＡＭ）ユニット８２６、専用のビデオランダムアクセスメモリ（ＶＲＡＭ）ユニット８３２を備えたＲｅａｌｉｔｙ  Ｓｙｎｔｈｅｓｉｚｅｒグラフィックスユニット８３０、及び入出力ブリッジ８３４を含む。システムユニット８００はまた、入出力ブリッジ８３４を介してアクセス可能な、ディスク８４０ａからの読取り用のＢｌｕ  Ｒａｙ（登録商標）ディスクＢＤ−ＲＯＭ（登録商標）光ディスクリーダ８４０と、取外し可能のスロットインハードディスクドライブ（ＨＤＤ）８３６とを含む。オプションで、システムユニット８００はまた、入出力ブリッジ８３４を介して同様にアクセス可能である、コンパクトフラッシュ（登録商標）メモリカード、Ｍｅｍｏｒｙ  Ｓｔｉｃｋ（登録商標）メモリカードなどを読み取るためのメモリカードリーダ８３８を含む。
【０１０８】
入出力ブリッジ８３４はまた、６つのユニバーサルシリアルバス（ＵＳＢ）２．０ポート８２４、ギガビットイーサネットポート８２２、ＩＥＥＥ  ８０２．１１ｂ／ｇ無線ネットワーク（Ｗｉ−Ｆｉ）ポート８２０、及び最大７つのＢｌｕｅｔｏｏｔｈ接続をサポートできるＢｌｕｅｔｏｏｔｈ（登録商標）ワイヤレスリンクポート８１８に接続する。
【０１０９】
動作中、入出力ブリッジ８３４は、１つまたは複数のゲームコントローラ８０２からのデータを含む全ての無線データ、ＵＳＢデータ及びイーサネットデータを処理する。例えば、ユーザがゲームをプレイしているとき、入出力ブリッジ８３４は、Ｂｌｕｅｔｏｏｔｈリンクを介してゲームコントローラ８０２からデータを受け取って、これをＣｅｌｌプロセッサ８２８に送り、Ｃｅｌｌプロセッサ８２８は、それに応じてゲームの現在の状態を更新する。
【０１１０】
無線ポート、ＵＳＢポート、及びイーサネットポートはまた、ゲームコントローラ８０２に加えて、リモコン８０４、キーボード８０６、マウス８０８、Ｓｏｎｙ  Ｐｌａｙｓｔａｔｉｏｎ  Ｐｏｒｔａｂｌｅ（登録商標）エンターテイメント装置などの携帯型エンターテイメント装置８１０、ＥｙｅＴｏｙ（登録商標）ビデオカメラ８１２などのビデオカメラ、及びマイクヘッドセット８１４など、他の周辺装置への接続性を提供する。したがって、そのような周辺装置は、原則として、システムユニット８００に無線で接続することができる。例えば、携帯型エンターテイメント装置８１０は、Ｗｉ−Ｆｉアドホック接続を介して通信することができ、一方マイクヘッドセット８１４は、Ｂｌｕｅｔｏｏｔｈリンクを介して通信することができる。
【０１１１】
これらのインタフェースを提供することは、Ｐｌａｙｓｔａｔｉｏｎ  ３装置がデジタルビデオレコーダ（ＤＶＲ）、セットトップボックス、デジタルカメラ、ポータブルメディアプレーヤ、ボイスオーバーＩＰ電話、携帯電話、プリンタ及びスキャナなど、他の周辺装置と潜在的に互換性もあることを意味する。
【０１１２】
さらに、レガシメモリカードリーダ８１６は、ＵＳＢポート８２４を介してシステムユニットに接続されてもよく、これにより、Ｐｌａｙｓｔａｔｉｏｎ（登録商標）またはＰｌａｙｓｔａｔｉｏｎ  ２（登録商標）装置によって使用される種類のメモリカード８４８の読取りが可能になる。
【０１１３】
本実施形態では、ゲームコントローラ８０２は、Ｂｌｕｅｔｏｏｔｈリンクを介してシステムユニット８００と無線通信するよう機能する。また一方、ゲームコントローラ８０２は、代わりにＵＳＢポートに接続することができ、それによってゲームコントローラ８０２のバッテリを充電するための電力を供給することもできる。ゲームコントローラは、１つまたは複数のアナログジョイスティック及び従来の制御ボタンに加えて、各軸の並進及び回転に対応する６つの自由度の動きに敏感である。その結果、ゲームコントローラのユーザによるジェスチャ及び動きは、従来のボタンまたはジョイスティックコマンドに加え、またはその代わりに、ゲームへの入力として変換され得る。オプションで、Ｐｌａｙｓｔａｔｉｏｎ（商標）  Ｐｏｒｔａｂｌｅ装置などの他の無線対応周辺装置をコントローラとして使用することができる。Ｐｌａｙｓｔａｔｉｏｎ（商標）  Ｐｏｒｔａｂｌｅ装置の場合、追加のゲームまたは制御情報（例えば、制御命令または寿命数）が装置の画面上に提供され得る。ダンスマット（図示せず）、ライトガン（図示せず）、ハンドル及びペダル（図示せず）、または応答の速さを競うクイズゲーム用の１つまたは複数の大きなボタン（やはり図示せず）などのオーダーメードコントローラなど、他の代替的または補足的な制御装置を使用することもできる。
【０１１４】
リモコン８０４はまた、Ｂｌｕｅｔｏｏｔｈリンクを介してシステムユニット８００と無線通信するよう機能する。リモコン８０４は、Ｂｌｕ  Ｒａｙ（商標）ディスクＢＤ−ＲＯＭリーダ８４０の動作及びディスクコンテンツのナビゲーションに適した操作パネルを含む。
【０１１５】
Ｂｌｕ  Ｒａｙ（商標）ディスクＢＤ−ＲＯＭリーダ８４０は、従来の記録済みＣＤ及び記録可能なＣＤ、ならびにいわゆるスーパーオーディオＣＤに加えて、Ｐｌａｙｓｔａｔｉｏｎ及びＰｌａｙＳｔａｔｉｏｎ  ２装置と互換性のあるＣＤ−ＲＯＭを読み取るよう機能する。リーダ８４０はまた、従来の記録済みＤＶＤ及び記録可能ＤＶＤに加えて、Ｐｌａｙｓｔａｔｉｏｎ  ２及びＰｌａｙｓｔａｔｉｏｎ  ３装置と互換性のあるＤＶＤ−ＲＯＭを読み取るよう機能する。さらにリーダ８４０は、Ｐｌａｙｓｔａｔｉｏｎ  ３装置と互換性のあるＢＤ−ＲＯＭ、ならびに従来の記録済みＢＤ−ＲＯＭ及び記録可能ＢＤ−ＲＯＭを読み取るよう機能する。
【０１１６】
システムユニット８００は、Ｒｅａｌｉｔｙ  Ｓｙｎｔｈｅｓｉｚｅｒグラフィックスユニット８３０を介してＰｌａｙｓｔａｔｉｏｎ  ３装置によって生成されるかそれとも復号化されるオーディオ及びビデオを、オーディオコネクタ及びビデオコネクタを介して、ディスプレイ装置８４４及び１つまたは複数のラウドスピーカ８４６を有するモニタまたはテレビなどの、ディスプレイ装置及びサウンド出力装置８４２に供給するよう機能する。オーディオコネクタ８５０は、従来のアナログ及びデジタル出力を含むことができ、一方ビデオコネクタ８５２は、コンポーネントビデオ、Ｓビデオ、コンポジットビデオ、及び１つまたは複数の高解像度マルチメディアインタフェース（ＨＤＭＩ（登録商標））出力を様々に含むことができる。その結果、ビデオ出力は、ＰＡＬもしくはＮＴＳＣ、または７２０ｐ、１０８０ｉもしくは１０８０ｐといった高精細度などのフォーマットになる。
【０１１７】
オーディオ処理（生成、復号など）は、Ｃｅｌｌプロセッサ８２８によって行われる。Ｐｌａｙｓｔａｔｉｏｎ  ３装置のオペレーティングシステムは、Ｄｏｌｂｙ（登録商標）５．１サラウンドサウンド、Ｄｏｌｂｙ（登録商標）  Ｔｈｅａｔｒｅ  Ｓｕｒｒｏｕｎｄ（ＤＴＳ）、及びＢｌｕ−Ｒａｙ（登録商標）ディスクからの７．１サラウンドサウンドの復号をサポートしている。
【０１１８】
本実施形態では、ビデオカメラ８１２は、圧縮ビデオデータが適切なフォーマット（システムユニット８００による復号化のための、画像内ベースのＭＰＥＧ（ｍｏｔｉｏｎ  ｐｉｃｔｕｒｅ  ｅｘｐｅｒｔ  ｇｒｏｕｐ）規格などのフォーマット）で送信され得るように、単一の電荷結合素子（ＣＣＤ）、ＬＥＤインジケータ、及びハードウェアベースのリアルタイムデータ圧縮及び符号化機器を含む。カメラＬＥＤインジケータは、例えば不都合な照明条件を示すために、システムユニット８００からの適切な制御データに応答して点灯するように構成される。ビデオカメラ８１２の実施形態では、ＵＳＢ、ＢｌｕｅｔｏｏｔｈまたはＷｉ−Ｆｉ通信ポートを介して、システムユニット８００に様々に接続することができる。ビデオカメラの実施形態では、１つまたは複数の関連したマイクロフォンを含むことができ、オーディオデータを送信することもできる。ビデオカメラの実施形態では、ＣＣＤは高精細度ビデオキャプチャに適した解像度を有し得る。使用中、ビデオカメラによって捕捉された画像は、例えば、ゲーム内に組み込まれてもよく、またはゲーム制御入力として解釈されてもよい。
【０１１９】
一般に、システムユニット８００の通信ポートのうちの１つを介してビデオカメラまたはリモコンなどの周辺装置とデータ通信を成功させるためには、デバイスドライバなどの適切なソフトウェアが提供されなければならない。デバイスドライバ技術は周知であり、本明細書では詳細には説明しないが、記載された本実施形態において、デバイスドライバまたは同様のソフトウェアインタフェースが必要とされ得ることを、当業者は認識するはずである。
【０１２０】
図９は、本開示の実施態様によるゲームシステム９００のブロック図である。ゲームシステム９００は、ネットワーク９１５を介して１つまたは複数のクライアント９１０にビデオストリームを提供するように構成される。ゲームシステム９００は、通常は、ビデオサーバシステム９２０とオプションのゲームサーバ９２５とを含む。ビデオサーバシステム９２０は、ビデオストリームを最小限のサービス品質で１つまたは複数のクライアント９１０に提供するように構成される。例えば、ビデオサーバシステム９２０は、ビデオゲーム内の状態または視点を変更するゲームコマンドを受信し、この状態の変更を反映する更新されたビデオストリームを最小の遅延時間でクライアント９１０に提供することができる。ビデオサーバシステム９２０は、まだ定義されていないフォーマットを含む多種多様な代替ビデオフォーマットでビデオストリームを提供するように構成され得る。さらに、ビデオストリームは、多種多様なフレームレートでユーザに提示するように構成されたビデオフレームを含むことができる。一般的なフレームレートは、毎秒３０フレーム、毎秒６０フレーム、及び毎秒９２０フレームである。しかし、本開示の代替の実施形態では、より高いまたはより低いフレームレートが含まれる。
【０１２１】
本明細書で個々に９１０Ａ、９１０Ｂなどと呼ばれるクライアント９１０は、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線装置、デジタルパッド、スタンドアロン装置、ハンドヘルドゲームプレイ装置などを含むことができる。通常、クライアント９１０は、符号化されたビデオストリームを受信し、そのビデオストリームを復号し、結果として生じるビデオをユーザ、例えばゲームのプレイヤに提示するように構成される。通常、符号化されたビデオストリームを受信すること、及び／またはビデオストリームを復号することのプロセスには、個々のビデオフレームをクライアントの受信バッファに格納することが含まれる。ビデオストリームは、クライアント９１０に一体化したディスプレイ装置上で、またはモニタもしくはテレビなどの別個の装置上でユーザに提示され得る。クライアント９１０は、２人以上のゲームプレイヤをサポートするように随意に構成される。例えば、ゲームコンソールは、２人、３人、４人、またはそれ以上の同時プレイヤをサポートするように構成されてもよい。これらのプレイヤの各々は、別々のビデオストリームを受信することができ、あるいは単一のビデオストリームが、各プレイヤのために特別に生成された、例えば各プレイヤの視点に基づいて生成されたフレームの領域を含み得る。クライアント９１０は、随意に地理的に分散している。ゲームシステム９００に含まれるクライアントの数は、１または２から数千、数万、またはそれ以上まで幅広く変わり得る。本明細書で使用される「ゲームプレイヤ」という用語は、ゲームをプレイする人を指すのに使用され、「ゲームプレイ装置」という用語は、ゲームをプレイするのに使用される装置を指すのに使用される。いくつかの実施形態では、ゲームプレイ装置は、ゲーム体験をユーザに提供するために協働する複数のコンピューティング装置を指すことがある。例えば、ゲームコンソール及びＨＭＤは、ＨＭＤを通して見たゲームを配信するために、ビデオサーバシステム９２０と協働してもよい。一実施形態では、ゲームコンソールはビデオサーバシステム９２０からビデオストリームを受信し、ゲームコンソールは、レンダリングのためにビデオストリームをＨＭＤに転送するか、またはビデオストリームを更新して、レンダリングのためにＨＭＤに転送する。
【０１２２】
クライアント９１０は、ネットワーク９１５を介してビデオストリームを受信するように構成されている。ネットワーク９１５は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、広域ネットワーク、プライベートネットワーク、及び／または同種のものを含む任意の種類の通信ネットワークであり得る。典型的な実施形態では、ビデオストリームは、ＴＣＰ／ＩＰまたはＵＤＰ／ＩＰなどの標準プロトコルを介して通信される。あるいは、ビデオストリームは、プロプライエタリな規格を介して通信される。
【０１２３】
クライアント９１０の典型的な例は、プロセッサ、不揮発性メモリ、ディスプレイ装置、復号化ロジック、ネットワーク通信機能、及び入力装置を含むパーソナルコンピュータである。復号化ロジックは、ハードウェア、ファームウェア、及び／またはコンピュータ可読媒体に記憶されたソフトウェアを含み得る。ビデオストリームを復号化（及び符号化）するためのシステムは当技術分野において周知であり、使用される特定の符号化方式に応じて変わる。
【０１２４】
クライアント９１０は、受信したビデオを修正するように構成されたシステムをさらに含むことができるが、必ずしもそうである必要はない。例えば、クライアントは、さらなるレンダリングを実行して、１つのビデオ画像を別のビデオ画像上にオーバーレイするように、ビデオ画像をトリミングするように、及び／または同様のことを行うように、構成され得る。例えば、クライアント９１０は、Ｉフレーム、Ｐフレーム及びＢフレームなどの様々な型式のビデオフレームを受信して、これらのフレームがユーザに表示するための画像に処理されるように構成され得る。いくつかの実施形態では、クライアント９１０のメンバは、ビデオストリームに対してさらなるレンダリング、シェーディング、３Ｄへの変換、または同様の動作を実行するように構成される。クライアント９１０のメンバは、複数のオーディオストリームまたはビデオストリームを受信するように随意に構成される。クライアント９１０の入力装置は、例えば、片手ゲームコントローラ、両手ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバック装置、モーション検知装置及び／または位置検知装置、マウス、タッチスクリーン、ニューラルインターフェース、カメラ、未開発の入力装置、及び／または同種のものを含み得る。
【０１２５】
クライアント９１０によって受信されるビデオストリーム（及びオプションでオーディオストリーム）は、ビデオサーバシステム９２０によって生成されて提供される。本明細書の他の箇所でさらに説明されるように、このビデオストリームはビデオフレームを含む（オーディオストリームはオーディオフレームを含む）。ビデオフレームは、ユーザに表示される画像に有意義に寄与するように構成される（例えば、それらは適切なデータ構造内にピクセル情報を含む）。本明細書で使用される「ビデオフレーム」という用語は、ユーザに示される画像を、例えば効果的にするのに寄与するように構成されている情報を主に含むフレームを指すために使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、「オーディオフレーム」に適用することもできる。
【０１２６】
クライアント９１０は通常、ユーザから入力を受け取るように構成されている。これらの入力は、ビデオゲームの状態を変更するか、または別の方法でゲームプレイに影響を及ぼすように構成されたゲームコマンドを含み得る。ゲームコマンドは、入力装置を使用して受信することができ、及び／またはクライアント９１０上で実行される命令をコンピュータで処理することによって自動的に生成することができる。受信したゲームコマンドは、クライアント９１０からネットワーク９１５を介して、ビデオサーバシステム９２０及び／またはゲームサーバ９２５に伝達される。例えば、いくつかの実施形態では、ゲームコマンドはビデオサーバシステム９２０を介してゲームサーバ９２５に伝達される。いくつかの実施形態では、ゲームコマンドの別個のコピーがクライアント９１０からゲームサーバ９２５及びビデオサーバシステム９２０に伝達される。ゲームコマンドの通信は、コマンドの識別に随意に依存する。ゲームコマンドは、オーディオまたはビデオストリームをクライアント９１０Ａに提供するために使用した異なる経路または通信チャネルを通じて、クライアント９１０Ａから随意に通信される。
【０１２７】
ゲームサーバ９２５は、ビデオサーバシステム９２０とは異なるエンティティによって随意に操作される。例えば、ゲームサーバ９２５は、多人数参加型ゲームのパブリッシャによって運営され得る。この例では、ビデオサーバシステム９２０は、ゲームサーバ９２５によって随意にクライアントとして捉えられ、ゲームサーバ９２５の視点から見ると、先行技術のゲームエンジンを実行する先行技術のクライアントであるように随意に構成される。ビデオサーバシステム９２０とゲームサーバ９２５との間の通信は、ネットワーク９１５を介して随意に行われる。したがって、ゲームサーバ９２５は、ゲーム状態情報を複数のクライアントに送信する従来技術のマルチプレイヤゲームサーバであり得、そのうちの１つがゲームサーバシステム９２０である。ビデオサーバシステム９２０は、同時にゲームサーバ９２５の複数のインスタンスと通信するように構成されてもよい。例えば、ビデオサーバシステム９２０は、複数の異なるビデオゲームを異なるユーザに提供するように構成することができる。これらの異なるビデオゲームのそれぞれは、異なるゲームサーバ９２５によってサポートされてもよく、及び／または異なるエンティティによって発行されてもよい。いくつかの実施形態において、ビデオサーバシステム９２０のいくつかの地理的に分散したインスタンスは、ゲームビデオを複数の異なるユーザに提供するように構成される。ビデオサーバシステム９２０のこれらのインスタンスのそれぞれは、ゲームサーバ９２５の同じインスタンスと通信することができる。ビデオサーバシステム９２０と１つまたは複数のゲームサーバ９２５との間の通信は、専用の通信チャネルを介して随意に行われる。例えば、ビデオサーバシステム９２０は、これら２つのシステム間の通信専用の高帯域幅チャネルを介して、ゲームサーバ９２５に接続されてもよい。
【０１２８】
ビデオサーバシステム９２０は、少なくともビデオソース９３０、入出力装置９４５、プロセッサ９５０、及び非一時的記憶装置９５５を含む。ビデオサーバシステム９２０は、１つのコンピューティング装置を含むか、または複数のコンピューティング装置の間に分散され得る。これらのコンピューティング装置は、ローカルエリアネットワークなどの通信システムを介して、随意に接続される。
【０１２９】
ビデオソース９３０は、ビデオストリーム、例えばストリーミングビデオまたは動画を形成する一連のビデオフレームを提供するように構成される。いくつかの実施形態では、ビデオソース９３０はビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤからゲームコマンドを受け取り、受け取ったコマンドに基づいてビデオゲームの状態のコピーを維持するように構成される。このゲーム状態には、ゲーム環境におけるオブジェクトの位置、及び通常は視点が含まれる。またゲーム状態には、オブジェクトの特性、画像、色及び／またはテクスチャが含まれてもよい。ゲーム状態は、通常、ゲームルール、及び移動、ターン、攻撃、フォーカス設定、対話、使用などのゲームコマンドに基づいて維持される。ゲームエンジンの一部は、ゲームサーバ９２５内に随意に配置される。ゲームサーバ９２５は、地理的に分散したクライアントを使用して、複数のプレイヤから受信したゲームコマンドに基づき、ゲームの状態のコピーを維持することができる。これらの場合、ゲーム状態は、ゲームサーバ９２５によってビデオソース９３０に提供され、そこでゲーム状態のコピーが記憶され、レンダリングが実行される。ゲームサーバ９２５は、ネットワーク９１５を介してクライアント９１０から直接ゲームコマンドを受信してもよく、及び／またはビデオサーバシステム９２０を経由してゲームコマンドを受信してもよい。
【０１３０】
ビデオソース９３０は、通常、レンダリングロジック、例えば、ハードウェア、ファームウェア、及び／または記憶装置９５５などのコンピュータ可読媒体に格納されたソフトウェアを含む。このレンダリングロジックは、ゲーム状態に基づいて、ビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全部または一部は、グラフィック処理ユニット（ＧＰＵ）内に随意に配置される。レンダリングロジックは、通常、ゲーム状態及び視点に基づいて、オブジェクト間の三次元空間的関係を決定するため、及び／または適切なテクスチャなどを適用するために構成された処理段階を含む。レンダリングロジックは未処理のビデオを生成し、次いでこのビデオは、通常クライアント９１０への通信に先立ち、符号化される。例えば、未処理ビデオは、Ａｄｏｂｅ  Ｆｌａｓｈ（登録商標）規格、．ｗａｖ、Ｈ．２６５、Ｈ．２６４、Ｈ．２６３、Ｏｎ２、ＶＰ６、ＶＣ−１、ＷＭＡ、Ｈｕｆｆｙｕｖ、Ｌａｇａｒｉｔｈ、ＭＰＧ−ｘ、Ｘｖｉｄ、ＦＦｍｐｅｇ、ｘ２６４、ＶＰ６−８、ｒｅａｌｖｉｄｅｏ、ｍｐ３に従って符号化されてもよい。符号化プロセスは、リモート装置上のデコーダへの配信のために随意にパッケージ化されるビデオストリームを生成する。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。典型的なフレームサイズは、８００×６００、１２８０×７２０（例えば、７２０ｐ）、１０２４×７６８を含むが、他の任意のフレームサイズを使用することができる。フレームレートは、１秒あたりのビデオフレーム数である。ビデオストリームは、様々なタイプのビデオフレームを含み得る。例えば、Ｈ．２６４規格では、「Ｐ」フレーム及び「Ｉ」フレームを含む。Ｉフレームは、表示装置上の全てのマクロブロック／ピクセルをリフレッシュするための情報を含み、一方Ｐフレームはその部分セットをリフレッシュするための情報を含む。通常Ｐフレームは、Ｉフレームよりもデータサイズが小さい。本明細書で使用される「フレームサイズ」という用語は、フレーム内のピクセル数を指すことを意味する。「フレームデータサイズ」という用語は、フレームを格納するのに必要なバイト数を指すのに使用される。
【０１３１】
代替の実施形態では、ビデオソース９３０は、カメラなどのビデオ記録装置を含む。このカメラは、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオを生成するのに使用することができる。結果として生じるビデオストリームは、レンダリングされた画像と、スチルカメラまたはビデオカメラを使用して記録された画像との両方を随意に含む。ビデオソース９３０はまた、ビデオストリームに含まれる以前に記録されたビデオを記憶するように構成された記憶装置を含んでもよい。ビデオソース９３０はまた、例えば人などのオブジェクトの動きまたは位置を検出するように構成されたモーション検知装置または位置検知装置と、検出された動き及び／または位置に基づいてゲーム状態を決定またはビデオを生成するように構成されるロジックとを含み得る。
【０１３２】
ビデオソース９３０は、他のビデオ上に配置されるように構成されたオーバーレイを提供するように随意に構成される。例えば、このようなオーバーレイには、コマンドインタフェース、ログイン命令、ゲームプレイヤへのメッセージ、他のゲームプレイヤの画像、他のゲームプレイヤのビデオフィード（例えば、ウェブカメラビデオ）が含まれ得る。タッチスクリーンインタフェースまたは凝視検出インタフェースを含むクライアント９１０Ａの実施形態では、オーバーレイはバーチャルキーボード、ジョイスティック、タッチパッドなどを含み得る。オーバーレイの一例では、プレイヤの声がオーディオストリームにオーバーレイされる。ビデオソース９３０はオプションで、１つまたは複数のオーディオソースをさらに含む。
【０１３３】
ビデオサーバシステム９２０が２人以上のプレイヤからの入力に基づいてゲーム状態を維持するように構成されている実施形態では、各プレイヤは位置及び視線方向を含む異なる視点を有することができる。ビデオソース９３０は、プレイヤらの視点に基づいて各プレイヤに別々のビデオストリームを提供するように随意に構成される。さらに、ビデオソース９３０は、異なるフレームサイズ、フレームデータサイズ、及び／または符号化をクライアント９１０のそれぞれに提供するように構成してもよい。ビデオソース９３０は、３Ｄビデオを供給するように随意に構成される。
【０１３４】
入出力装置９４５は、ビデオサーバシステム９２０が、ビデオ、コマンド、情報要求、ゲーム状態、凝視情報、装置モーション、装置位置、ユーザモーション、クライアント識別情報、プレイヤ識別情報、ゲームコマンド、セキュリティ情報、オーディオ、及び／または同種のものなどの情報を送信及び／または受信するように構成されている。通常、入出力装置９４５は、ネットワークカードまたはモデムなどの通信ハードウェアを含む。入出力装置９４５は、ゲームサーバ９２５、ネットワーク９１５、及び／またはクライアント９１０と通信するように構成される。
【０１３５】
プロセッサ９５０は、本明細書で論じられるビデオサーバシステム９２０の様々なコンポーネント内に含まれるロジック、例えばソフトウェアを実行するように構成される。例えば、ビデオソース９３０、ゲームサーバ９２５、及び／またはクライアント修飾子９６０の機能を実行するために、プロセッサ９５０は、ソフトウェア命令でプログラムされてもよい。ビデオサーバシステム９２０は、プロセッサ９５０の複数のインスタンスを随意に含む。プロセッサ９５０はまた、ビデオサーバシステム９２０によって受信されたコマンドを実行するために、または本明細書で論じられるゲームシステム９００の様々な要素の動作を調整するために、ソフトウェア命令でプログラムされてもよい。プロセッサ９５０は、１つまたは複数のハードウェア装置を含むことができる。プロセッサ９５０は電子的なプロセッサである。
【０１３６】
記憶装置９５５は、非一時的なアナログ及び／またはデジタルの記憶装置を含む。例えば、記憶装置９５５は、ビデオフレームを記憶するように構成されたアナログ記憶装置を含むことができる。記憶装置９５５は、例えば、ハードドライブ、オプティカルドライブ、またはソリッドステートストレージといったコンピュータ可読デジタル記憶装置を含むことができる。記憶装置９１５は、ビデオフレーム、アーティフィシャルフレーム、ビデオフレーム及びアーティフィシャルフレームの両方を含むビデオストリーム、オーディオフレーム、オーディオストリーム、及び／または同様のものを記憶するように（例えば、適切なデータ構造またはファイルシステムによって）構成される。記憶装置９５５は、複数の装置の間に随意に分散される。いくつかの実施形態では、記憶装置９５５は、本明細書の他の箇所で説明されているビデオソース９３０のソフトウェアコンポーネントを格納するように構成される。これらのコンポーネントは、必要に応じてプロビジョニングできるように準備された形式で格納することができる。
【０１３７】
ビデオサーバシステム９２０は、オプションで、クライアント修飾子９６０をさらに含む。クライアント修飾子９６０は、クライアント９１０Ａまたは９１０Ｂなどのクライアントの能力をリモートで判断するように構成される。これらの能力には、クライアント９１０Ａ自体の能力と、クライアント９１０Ａとビデオサーバシステム９２０との間の１つまたは複数の通信チャネルの能力との両方を含めることができる。例えば、クライアント修飾子９６０は、ネットワーク９１５を介して通信チャネルをテストするように構成されてもよい。
【０１３８】
クライアント修飾子９６０は、クライアント９１０Ａの能力を手動または自動で判定する（例えば、発見する）ことができる。手動判定には、クライアント９１０Ａのユーザと通信すること、及びユーザに能力を提供するように求めることが含まれる。例えば、いくつかの実施形態では、クライアント修飾子９６０は、クライアント９１０Ａのブラウザ内に画像、テキスト、及び／または同様のものを表示する構成となっている。一実施形態では、クライアント９１０Ａはブラウザを含むＨＭＤである。別の実施形態では、クライアント９１０Ａは、ブラウザを有したゲームコンソールであり、ブラウザはＨＭＤに表示させてもよい。表示されたオブジェクトは、ユーザがクライアント９１０Ａのオペレーティングシステム、プロセッサ、ビデオデコーダの種類、ネットワーク接続の種類、表示解像度などの情報を入力することを要求する。ユーザによって入力された情報は、クライアント修飾子９６０に返信される。
【０１３９】
自動判定は、例えば、クライアント９１０Ａ上でエージェントを実行することによって、及び／またはテストビデオをクライアント９１０Ａに送信することによって、行うことができる。エージェントは、ウェブページに埋め込まれるか、またはアドオンとしてインストールされるＪａｖａ（登録商標）Ｓｃｒｉｐｔなどのコンピューティング関係の命令を含むことができる。エージェントは、クライアント修飾子９６０によって随意に提供される。様々な実施形態において、エージェントは、クライアント９１０Ａの処理能力、クライアント９１０Ａのデコード能力及び表示能力、クライアント９１０Ａとビデオサーバシステム９２０との間の通信チャネルの遅延時間の信頼性及び帯域幅、クライアント９１０Ａのディスプレイ装置タイプ、クライアント９１０Ａ上のファイアウォールの存在、クライアント９１０Ａのハードウェア、クライアント９１０Ａで実行されているソフトウェア、クライアント９１０Ａ内のレジストリエントリ、及び／または同様のものを見出すことができる。
【０１４０】
クライアント修飾子９６０は、ハードウェア、ファームウェア、及び／またはコンピュータ可読媒体に格納されたソフトウェアを含む。クライアント修飾子９６０は、ビデオサーバシステム９２０の１つまたは複数の他の要素とは別のコンピューティング装置上に随意に配置される。例えば、いくつかの実施形態では、クライアント修飾子９６０は、クライアント９１０とビデオサーバシステム９２０の複数のインスタンスとの間の通信チャネルの特性を判定するように構成される。これらの実施形態では、クライアント修飾子によって見い出された情報を使用して、ビデオサーバシステム９２０のどのインスタンスが、クライアント９１０のうちの１つへのストリーミングビデオの配信に最も適しているかを判断することができる。
【０１４１】
本開示の実施形態は、ハンドヘルド装置、マイクロプロセッサシステム、マイクロプロセッサを用いる家庭用電化製品またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む様々なコンピュータシステム構成を用いて実施することができる。本開示は、有線または無線のネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境において実施することもできる。
【０１４２】
上記の実施形態を考慮に入れて、本開示は、コンピュータシステムに格納されたデータを必要とする様々なコンピュータ実行動作を使用できることが理解されるべきである。これらの動作は、物理量の物理的処置を必要とする動作である。本開示の一部を形成する本明細書に記載されている動作のいずれも、有用な機械動作である。本開示はまた、これらの動作を実行するための装置または機器に関する。機器は必要な目的のために特別に構成することができ、または装置は、コンピュータに記憶されたコンピュータプログラムによって選択的に起動されまたは構成される汎用コンピュータとすることができる。特に、本明細書の教示に従って書かれたコンピュータプログラムと共に、様々な汎用機械を使用することができ、または必要な動作を実行するために、より特殊化した機器を構築することによって、さらに便利にすることができる。
【０１４３】
本開示は、コンピュータ可読媒体上のコンピュータ可読コードとして具体化することもできる。コンピュータ可読媒体は、データを記憶することができ、その後コンピュータシステムによって読み取ることができる任意のデータ記憶装置である。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読み取り専用メモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、ならびに他の光学式及び非光学式データ記憶装置が含まれる。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納及び実行されるように、ネットワーク結合コンピュータシステム上に分散されたコンピュータ可読有形媒体が含まれ得る。
【０１４４】
本方法動作を特定の順序で説明したが、他の維持管理動作が動作間で実行されてもよく、または動作がわずかに異なる時間で行われるように動作が調整されてもよく、またはオーバーレイ動作の処理が所望の方法で実行される限り、処理に関連する様々な間隔で処理操作の発生を可能にするシステムに分散されてもよいことが理解されるべきである。
【０１４５】
前述の開示は、理解を明確にするためにある程度詳細に説明したが、添付の特許請求の範囲内で、特定の変更及び修正を実施することができることは明らかであろう。したがって、本実施形態は、限定的ではなく例示的であると見なされるべきであり、本開示は、本明細書に示された詳細に限定されるべきではなく、本開示の範囲及び均等物の範囲内で変更することができる。
【図１Ａ】
0006695449.tif 000002
【図１Ｂ】
0006695449.tif 000003
【図２】
0006695449.tif 000004
【図３】
0006695449.tif 000005
【図４】
0006695449.tif 000006
【図５】
0006695449.tif 000007
【図６】
0006695449.tif 000008
【図７】
0006695449.tif 000009
【図８】
0006695449.tif 000010
【図９】
0006695449.tif 000011