(57)【要約】      （修正有）【課題】遠隔的に供与されるコンピュータアプリケーションを拡張する。【解決手段】第１のアプリケーションが１つ以上のコンピューティングシステム上で実行されて、第１のアプリケーションの実行と関連付けられるグラフィック画像のレンダリングのための一連のオリジナルフレーム画素データセットを生成する。第２のアプリケーションが１つ以上のコンピューティングシステム上で実行されて、一連のオリジナルフレーム画素データセット内に存在する１つ以上のキーグラフィック画像を検出する。１つ以上のキーグラフィック画像が検出されると、第２のアプリケーションが、一連のオリジナルフレーム画素データセット内の画素データの一部と代替画素データとの置き換えを指示し、一連のオリジナルフレーム画素データセットの代わりに、一連の変更されたフレーム画素データセットを生成して符号化する。【選択図】図６
2018023767.tif 000002
【特許請求の範囲】
【請求項１】
遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステムであって、
第１のコンピューティングシステムで実行される、遠隔的に供与されるコンピュータアプリケーションによって生成され、ネットワークを介して送信されて第２のコンピューティングシステムによって表示される表示フレーム画像の画素データセットを傍受するように構成され、
表示フレーム画像内の変更されるべき視覚的コンテンツに対応する画素データセットの目標部分を対象として前記画素データセットを検索することにより、傍受された前記表示フレーム画像の前記画素データセットの目標部分を特定するように構成され、
前記画素データセットの目標部分が変更された前記表示フレーム画像の修正された画素データセットを生成するように構成され、
修正された画素データセットを、ネットワークを介して送信されて前記第２のコンピューティングシステムによって表示されるように、傍受された表示フレーム画像の画素データセットの代わりに提供するように構成されたフレーム拡張モジュールを備え、
前記遠隔的に供与されるコンピュータアプリケーションが、前記表示フレーム画像の画素データセットの傍受、前記画素データセットの前記目標部分の特定、修正された画素データセットの生成、及びネットワークを介して傍受された画素データセットの代わりに送信される修正された画素データセットの提供を含む前記フレーム拡張モジュールの動作に関与しないように、前記フレーム拡張モジュールは、前記第１のコンピューティングシステムで実行される前記遠隔的に供与されるコンピュータアプリケーションとは独立して構成されることを特徴とする遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項２】
前記目標部分を対象とする前記画素データセットの検索は、指定された目標検索パターンにしたがって実行される請求項１に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項３】
前記指定された目標検索パターンは、前記表示フレーム画像にわたるラスタ化検索パターンである請求項２に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項４】
前記指定された目標検索パターンは、前記表示フレーム画像の異なる領域にわたる複数のラスタ化検索パターンを含み、前記フレーム拡張モジュールは、前記複数のラスタ化検索パターンにしたがって、前記表示フレーム画像の異なる領域にわたって同時に検索するよう構成される請求項２に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項５】
前記表示フレーム画像の異なる領域は重畳せず、共に前記表示フレーム画像の全体を覆う請求項４に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項６】
目標部分を対象とした前記画素データセットの検索は、画素データのインジケータ部分を検出するために前記画素データセットの第１の検索を実行し、前記画素データのインジケータ部分を検出すると、検出された画素データのインジケータ部分の周辺で前記画素データセットの目標部分を対象とした第２の検索を実行することによりなされる請求項１に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項７】
前記画素データのインジケータ部分は、鮮明なコントラスト、特徴的な色、又は鮮明なコントラスト及び特徴的な色の組合せを含む請求項６に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項８】
前記表示フレーム画像の画素データセットは、前記第１のコンピューティングシステムで実行される前記遠隔的に供与されるコンピュータアプリケーションにより生成されるビデオストリームのビデオフレームを定義する請求項１に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項９】
前記第１のコンピューティングシステムは、クラウドコンピューティングシステム上で動作する１以上の仮想コンピューティングマシンを含む請求項１に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項１０】
前記フレーム拡張モジュールは、クラウドコンピューティングシステム上で動作する１以上の仮想コンピューティングマシンに実装される請求項９に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するためのシステム。
【請求項１１】
遠隔的に供与されるコンピュータアプリケーションを拡張するための方法であって、
第１のコンピューティングシステムで実行される、遠隔的に供与されるコンピュータアプリケーションによって生成され、ネットワークを介して送信されて第２のコンピューティングシステムによって表示される表示フレーム画像の画素データセットを傍受するようにプロセッサを動作させるステップと、
表示フレーム画像内の変更されるべき視覚的コンテンツに対応する画素データセットの目標部分を対象として前記画素データセットを検索することにより、傍受された前記表示フレーム画像の前記画素データセットの目標部分を特定するように前記プロセッサを動作させるステップと、
前記画素データセットの目標部分が変更された前記表示フレーム画像の修正された画素データセットを生成するように前記プロセッサを動作させるステップと、
修正された画素データセットを、ネットワークを介して送信されて前記第２のコンピューティングシステムによって表示されるように、前記プロセッサにより傍受された表示フレーム画像の画素データセットの代わりに提供するように前記プロセッサを動作させるステップと、を備え、
前記遠隔的に供与されるコンピュータアプリケーションは、前記表示フレーム画像の画素データセットの傍受、前記画素データセットの前記目標部分の特定、修正された画素データセットの生成、及びネットワークを介して傍受された画素データセットの代わりに送信される修正された画素データセットの提供に関与しないことを特徴とする遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【請求項１２】
前記目標部分を対象とする前記画素データセットの検索は、指定された目標検索パターンにしたがって実行される請求項１１に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【請求項１３】
前記指定された目標検索パターンは、前記表示フレーム画像にわたるラスタ化検索パターンである請求項１２に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【請求項１４】
前記指定された目標検索パターンは、前記表示フレーム画像の異なる領域にわたる複数のラスタ化検索パターンを含み、前記表示フレーム画像の異なる領域が、前記複数のラスタ化検索パターンにしたがって同時に検索される請求項１２に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【請求項１５】
前記表示フレーム画像の異なる領域は重畳せず、共に前記表示フレーム画像の全体を覆う請求項１４に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【請求項１６】
目標部分を対象として前記画素データセットを検索するステップは、画素データのインジケータ部分を検出するために前記画素データセットの第１の検索を実行するステップと、前記画素データのインジケータ部分を検出すると、検出された画素データのインジケータ部分の周辺で前記画素データセットの目標部分を対象とした第２の検索を実行するステップとを含む請求項１１に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【請求項１７】
前記画素データのインジケータ部分は、鮮明なコントラスト、特徴的な色、又は鮮明なコントラスト及び特徴的な色の組合せを含む請求項１６に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【請求項１８】
前記表示フレーム画像の画素データセットは、前記第１のコンピューティングシステムで実行される前記遠隔的に供与されるコンピュータアプリケーションにより生成されるビデオストリームのビデオフレームを定義する請求項１１に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【請求項１９】
前記第１のコンピューティングシステムは、クラウドコンピューティングシステム上で動作する１以上の仮想コンピューティングマシンを含む請求項１１に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【請求項２０】
前記プロセッサは、クラウドコンピューティングシステム上で動作する１以上の仮想コンピューティングマシンに実装されるフレーム拡張モジュールに含まれる請求項１１に記載の遠隔的に供与されるコンピュータアプリケーションを拡張するための方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ビデオゲームの実行およびレンダリングのためのいくつかのモデルが存在する。最も単純なモデルでは、ゲームは、ゲームのプレーヤーに局在するコンピューティングデバイス上で実行され、レンダリングされる。別のモデルでは、ゲーム状態が、中央サーバーに維持され、コンピューティングネットワークを介してビデオのレンダリングが行われるクライアントに通信される。このモデルは、一般的に、ゲームの状態がゲームの複数のプレーヤーからコンピューティングネットワークを介して受け取られる入力に依存するマルチプレーヤーゲームによって、使用される。第３のモデルでは、ゲーム状態が、ビデオをレンダリングしてビデオストリームとしてコンピューティングネットワークを介してクライアントに配信する中央サーバーに維持される。
【発明の概要】
【０００２】
本明細書で開示される実施形態は、アプリケーションのクラウド処理と、遠隔のクライアントへのクラウド処理のビデオフレームのストリーミングと、のためのシステムおよび方法に関する。クラウド処理は、第１のアプリケーション（例えば、ビデオゲーム）のビデオフレームを処理し、出力して画像コンテンツを検査するアプリケーションを含むことができ、検査に基づいて、オーバーレイコンテンツを遠隔のクライアントに転送されるビデオフレームに組み込むことができる。一実施形態では、オーバーレイコンテンツは、第１のアプリケーションによって出力される既存の画像コンテンツに組み合わせることができる。組み合わせは、様々な方法で処理することができ、限定しないが、組み合わせは、特定のフレームまたはフレームセット内の画素を置き換えることと、検出された画像対象を追跡することと、それらがフレームからフレームへまたは経時的に移動するときに検出された画像対象の画素を置き換えることと、を含むことができる。
【０００３】
いくつかの実施例では、オーバーレイプロセスが最適化され、その結果、クライアントデバイスのユーザーによって受け取られるビデオフレームは、オーバーレイ処理が行われた（例えば、クライアントの表示器上で）ことを検出することなく、出力は、あたかもネイティブアプリケーション（例えば、第１のアプリケーション）がフレームを生成したように見える。様々な実施例では、第１のアプリケーションはビデオゲームアプリケーションであり得る。オンラインのウェブプレーを可能にするシステムでは、アカウントを有するユーザーは、第１のアプリケーションと考えることができる選択するビデオゲームの大きなライブラリが提供されることがある。この状況において、多くのユーザーにアカウントを提供することができ、多くのユーザーは、ゲームを選択し、単独またはソーシャルネットワークの仲間とのマルチプレーヤーモードのいずれかで、同時にプレーすることができる。第１のアプリケーションを遠隔的に実行している間に、１つ以上の遠隔的に実行されるアプリケーションは、第１のアプリケーションの出力であるビデオフレームを検査し、処理する。これらの遠隔的に実行されるアプリケーションは、オーバーレイプロセスを行い、元々ネイティブアプリケーションの一部ではない新規の体験をゲームプレーに同期して提供することができる。
【０００４】
後述するように、アプリケーションを遠隔的に処理するサーバーは、クラウド処理システムと呼ぶことができる。クラウド処理システムは、仮想ハードウェアおよびソフトウェアを使用することができる多くのサーバーを利用することができ、クラウド処理システムは、複数のデータセンタ間に分散することができる。良好に配置されたデータセンタは、それらの地理的な分散によって、ストリーミングの遅延を縮小することを可能にする。いくつかの実施形態では、負荷平衡化を使用して遅延を縮小し、遠隔のゲームプレーの性能を改善することができる。
【０００５】
一実施形態では、遠隔的に供与されるアプリケーションを拡張するためのシステムが開示される。このシステムは、１つ以上のコンピューティングシステム上で実行される第１のアプリケーションを含み、第１のアプリケーションの実行と関連付けられたグラフィック画像のレンダリングのための一連のオリジナルフレーム画素データセットを生成する。このシステムはまた、１つ以上のコンピューティングシステム上で実行される第２のアプリケーションを含み、一連のオリジナルフレーム画素データセットに存在する１つ以上のキーグラフィック画像を検出する。１つ以上のキーグラフィック画像を検出すると、第２のアプリケーションは、一連のオリジナルフレーム画素データセット内の画素データの一部と代替画素データとの置き換えを指示し、一連のオリジナルフレーム画素データセットの代わりに、一連の変更されたフレーム画素データセットを生成して符号化する。
【０００６】
一実施形態では、遠隔的に供与されるアプリケーションを拡張するための方法が開示される。この方法は、アプリケーションによって生成されたビデオフレームを検索してキーグラフィック画像を検出することを含む。この方法は、ビデオフレーム内のキーグラフィック画像を検出することを含む。この方法は、ユーザーのユニバーサル達成状態を表すオーバーレイ画像を取得することを含む。この方法は、ユーザーの決定されたユニバーサル達成状態をデータ記憶デバイスに記憶されたいくつかの所定のオーバーレイ画像のうちの１つ以上と関連付けることを含む。この方法は、ユーザーの決定されたユニバーサル達成状態と関連付けられたいくつかの所定のオーバーレイ画像のうちの少なくとも１つに対するオーバーレイ構成データを、データ記憶デバイスから入手することを含む。この方法はまた、入手したオーバーレイ構成データをオーバーレイ論理に供給して、ビデオフレーム内に所定のオーバーレイ画像のうちの少なくとも１つを挿入することを含む。
【０００７】
一実施例では、遠隔的に供与されるアプリケーションを拡張するためのプログラム命令を記憶したデータ記憶デバイスが開示される。データ記憶デバイスは、アプリケーションによって生成されたビデオフレームを検索してキーグラフィック画像を検出するプログラム命令を含む。データ記憶デバイスは、ビデオフレーム内のキーグラフィック画像を検出するためのプログラム命令を含む。データ記憶デバイスは、ユーザーのユニバーサル達成状態を表すオーバーレイ画像を取得するためのプログラム命令を含む。データ記憶デバイスは、ユーザーの決定されたユニバーサル達成状態を、データ記憶デバイスに記憶されたいくつかの所定のオーバーレイ画像のうちの１つ以上と関連付けるためのプログラム命令を含む。データ記憶デバイスは、ユーザーの決定されたユニバーサル達成状態と関連付けられたいくつかの所定のオーバーレイ画像のうちの少なくとも１つに対するオーバーレイ構成データをデータ記憶デバイスから入手するためのプログラム命令を含む。データ記憶デバイスはまた、入手したオーバーレイ構成データをオーバーレイ論理に供給して、ビデオフレーム内の所定のオーバーレイ画像のうちの少なくとも１つを挿入するプログラム命令を含む。
【０００８】
本発明の他の態様は、本発明の実施例として示される添付の図面と併せて、以下の詳細な説明からより明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】本発明の様々な実施形態による、ゲームシステムのブロック図である。
【図２】複数のビデオゲームを供与するように構成されたビデオソースの実施形態のブロック図である。
【図３】本発明の様々な実施形態による、ゲームビデオ（ビデオフレーム）上のオーバーレイを示す。
【図４】本発明の様々な実施形態による、ユーザーの入力をゲームコマンドに対応付けるために構成された入力マップの一部を示す。
【図５】本発明の様々な実施形態による、オーバーレイを使用する方法を示す。
【図６】本発明の例示的実施形態による、ビデオ拡張論理を含むためのビデオソースの拡張を示す。
【図７】拡張論理によって処理されるビデオフレームデータに対応するビデオフレーム画像の実施例を示す。
【図８】図７の例示的ビデオフレーム画像と関連付けられた例示的目標画素パターンを示す。
【図９】オーバーレイ生成論理からオーバーレイ論理にオーバーレイ構成データの形式で通信されるオーバーレイ画像を示す。
【図１０】図８に示されるキーグラフィック画像に対応する目標画素パターンの存在を検出するキー検出論理に応答するオーバーレイ画像の挿入後の図７のビデオフレームを示す。
【図１１】本発明の一実施形態による、遠隔的に供与されるアプリケーションを拡張するためのシステムを示す。
【図１２】本発明の一実施形態による、遠隔的に供与されるアプリケーションを拡張するための方法を示す。
【図１３】本発明の一実施形態による、遠隔的に供与されるコンピュータアプリケーションの生成および実行のためのクラウドコンピューティングシステムの図を示す。
【発明を実施するための形態】
【００１０】
以下の説明において、多数の特定の詳細が本発明の完全な理解を提供するために記載されている。しかしながら、それらの特定の詳細の一部または全てがなくても本発明が実施できることは、当業者には明らかであろう。他の例では、周知のプロセス操作は、本発明を不必要に曖昧にしないために詳細に説明されていない。
【００１１】
第１のコンピューティングシステム、すなわち、サーバーシステム／クラウドシステム、で実行されるコンピュータアプリケーションによって生成され、ネットワークを介して送信されて第２のコンピューティングシステムによって表示される表示フレーム画像の画素データセットは、コンピュータアプリケーションからネットワークへのルート内で傍受される。表示フレーム画像内で変更される視覚的コンテンツに対応する傍受された画素データセットの目標部分が特定される。傍受された画素データの目標部分が表示フレーム画像内の対応する視覚的コンテンツを改変するように変更される表示フレーム画像のために、修正された画素データセットが生成される。修正された画素データセットは、ネットワークを介して送信されて第２のコンピューティングシステムによって表示されるように、傍受された画素データセットの代わりに提供される。コンピュータアプリケーションは、画素データセットの傍受および修正を認識しない。
【００１２】
本発明の一実施形態による、遠隔的に供与されるアプリケーションを拡張するためのシステムを、本明細書で開示する。このシステムは、第１のコンピューティングシステムで実行されるコンピュータアプリケーションによって生成されてネットワークを介して送信され、第２のコンピューティングシステム、すなわち、ユーザーのコンピューティングシステムによって表示される表示フレーム画像の画素データを傍受するように定義されたフレーム拡張モジュールを備える。フレーム拡張モジュールは、表示フレーム画像内の変更される視覚的コンテンツに対応する、すなわち、キーグラフィック画像に対応する、傍受された画素データセットの目標部分を特定するように定義される。フレーム拡張モジュールは、傍受された画素データの目標部分が表示フレーム画像内の対応する視覚的コンテンツを改変するように変更される表示フレーム画像のための修正された画素データセットを生成するように定義される。フレーム拡張モジュールは、傍受された画素データセットの代わりに、ネットワークを介して送信されて第２のコンピューティングシステムによって表示される修正された画素データセットを提供するように定義される。フレーム拡張モジュールは、コンピュータアプリケーションと別に定義され、かつコンピュータアプリケーションから独立して操作される。
【００１３】
様々な実施形態では、コンピュータアプリケーションが実行される上述の第１のコンピューティングシステムは、コンピュータアプリケーションが実行される仮想マシンを提供するクラウドコンピューティングプラットフォームであり、ネットワークはインターネットである。さらに、様々な実施形態において、コンピュータアプリケーションは、コンピュータゲームアプリケーションである。
【００１４】
一例示的実施形態では、傍受された画素データセットの目標部分は、コンピュータアプリケーションのユーザーを表す表示フレーム画像内の視覚的コンテンツに対応する。修正された画素データセットは、傍受された画素データセットの目標部分のレンダリングによって描写される対象の外観を変更するように生成することができる。さらに、修正された画素データセットは、傍受された画素データセットの目標部分のレンダリングによって描写される対象を異なる対象の描写と置き換えるように生成することができる。さらに、修正された画素データセットは、傍受された画素データセットの目標部分のレンダリングによって描写される画像をオーバーレイする対象を描写するように生成される。
【００１５】
様々な実施形態では、表示フレーム画像の画素データセットは、第１のフレームレートに従ってネットワークを介して送信され、フレーム拡張モジュールは、第１のフレームレートよりも大きな第２のフレームレートに従って表示フレーム画像のための修正された画素データセットを生成するように定義される。例えば、一実施形態では、第２のフレームレートは、第１のフレームレートの２倍である。
【００１６】
遠隔的に供与されるアプリケーションを拡張するためのシステムはまた、第２のコンピューティングシステムによって表示される際の傍受された画素データの変更された目標部分に関するユーザー入力信号を処理するためのコンピュータ実行可能命令を提供するように定義されたアプリケーション拡張モジュールを備える。コンピュータアプリケーションは、アプリケーション拡張モジュールによって提供されるコンピュータ実行可能命令を認識することなく、実行される。いくつかの例では、フレーム拡張モジュールは、傍受された画素データの以前に変更されて第２のコンピューティングシステムによって表示された目標部分に関するユーザー入力信号の処理の結果としてアプリケーション拡張モジュールから受け取る指示に基づいて、修正された画素データセットを生成するように定義することができる。
【００１７】
遠隔的に供与されるアプリケーションを拡張するための方法は、第１のコンピューティングシステム、すなわち、サーバーシステム／クラウドシステム上でコンピュータアプリケーションを実行して表示フレーム画像の画素データセットを生成し、ネットワークを介して送信し、第２のコンピューティングシステム、すなわち、ユーザーのコンピューティングシステムによって表示することを含む。この方法は、コンピュータアプリケーションによって生成された表示フレーム画像の画素データセットを傍受するための動作を含む。コンピュータアプリケーションは、画素データセットの傍受を認識することなく、実行されることを理解されたい。方法はまた、表示フレーム画像内で変更される視覚的コンテンツに対応する傍受された画素データセットの目標部分を特定するための動作を含む。方法はまた、傍受された画素データの目標部分が表示フレーム画像内の対応する視覚的コンテンツを改変するように変更された表示フレーム画像のための修正された画素データセットを生成するための動作を含む。方法は、修正された画素データセットを、傍受された画素データセットの代わりに、ネットワークを介して送信して第２のコンピューティングシステムによって表示するための動作をさらに含む。
【００１８】
上述の方法の様々な実施形態では、第１のコンピューティングシステムは、コンピュータアプリケーションが実行される仮想マシンを提供するクラウドコンピューティングプラットフォームであり、ネットワークは、インターネットである。さらに、コンピュータアプリケーションは、コンピュータゲームアプリケーションであることができる。いくつかの場合では、傍受された画素データセットの目標部分は、コンピュータアプリケーションのユーザーを表す表示フレーム画像内の視覚的コンテンツに対応する。
【００１９】
いくつかの実施例では、表示フレーム画像の画素データセットは、第１のフレームレートに従ってコンピュータアプリケーションによって生成され、表示フレーム画像のための修正された画素データセットは、第１のフレームレートよりも大きな第２のフレームレートに従って生成される。次に、修正された画素データセットは、傍受された画素データセットの代わりに第１のフレームレートに従ってネットワークを介して送信される。いくつかの実施形態では、第２のフレームレートは、第１のフレームレートの２倍である。
【００２０】
方法はまた、第２のコンピューティングシステムによって表示される際の傍受された画素データの変更された目標部分に関するユーザー入力信号を処理することを含むことができる。コンピュータアプリケーションは、傍受された画素データの変更された目標部分に関するユーザー入力信号の処理を認識することなく、実行されることを理解されたい。いくつかの実施例では、修正された画素データセットは、傍受された画素データの以前に変更されて第２のコンピューティングシステムによって表示された目標部分に関するユーザー入力信号の処理の結果に基づいて、生成される。
【００２１】
図１は、本発明の様々な実施形態による、ゲームシステム１００のブロック図である。ゲームシステム１００は、実施例として、ビデオストリームを１１０Ａ、１１０Ｂなど別々に番号が付された１つ以上のクライアント１１０にネットワーク１１５を介して提供するように構成される。ゲームシステム１００は、典型的にはビデオサーバーシステム１２０および随意のゲームサーバー１２５を備える。ビデオサーバーシステム１２０は、未定義のフォーマットを含めて、広範な代替のビデオフォーマットでビデオストリームを提供するように構成することができる。さらに、ビデオストリームは、広範のフレームレートでユーザーに提示されるよう構成されたビデオフレームを含むことができる。典型的なフレームレートは、毎秒３０フレーム、毎秒６０フレーム、および毎秒１２０フレームであるが、本発明の代替の実施形態には、より高いまたはより低いフレームレートが含まれる。
【００２２】
クライアント１１０、すなわち、１１０Ａ、１１０Ｂなどは、端末、パーソナルコンピュータ、ゲーム機、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、ハンドヘルドゲームプレーデバイス、および／または同様のものを含むことができる。典型的には、クライアント１１０は、符号化されたビデオストリームを受け取り、ビデオストリームを復号化し、得られたビデオを例えば、ゲームのプレーヤーなどのユーザーに提示するように構成される。符号化されたビデオストリームを受け取ること、および／またはビデオストリームを復号化することのプロセスは、典型的には個別のビデオフレームをクライアント１１０の受信バッファに記憶することを含む。ビデオストリームは、クライアント１１０に一体化された表示器上で、またはモニターもしくはテレビなどの別のデバイス上で、ユーザーに提示することができる。
【００２３】
クライアント１１０は、ネットワーク１１５を介してビデオストリームを受け取るように構成される。ネットワーク１１５は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、広域ネットワーク、プライベートネットワーク、および／または同様のものを含む任意のタイプの通信ネットワークであってよい。いくつかの実施形態では、ビデオストリームは、ＴＣＰ／ＩＰまたはＵＤＰ／ＩＰのような標準的なプロトコルを介して通信される。あるいは、ビデオストリームは、独自の規格を介して通信することができる。
【００２４】
クライアント１１０の典型的な実施例は、プロセッサ、不揮発性メモリ、表示器、復号化論理、ネットワーク通信機能、および入力デバイスを備えるパーソナルコンピュータである。復号化論理は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体上に、例えば非一時的データ記憶デバイス上に記憶されたソフトウェアを含むことができる。ビデオストリームを復号化（および符号化）するためのシステムは、当技術分野で周知であり、使用される特定の符号化方式に依存して変化する。
【００２５】
クライアント１１０が受け取るビデオストリーム（および随意でオーディオストリーム）は、ビデオサーバーシステム１２０によって生成され、提供される。ビデオストリームは、ビデオフレームを含む（およびオーディオフレームは、オーディオフレームを含む）。ビデオフレームは、ユーザーに表示される画像に有意に寄与するように構成される（例えば、それらは適当なデータ構造の画素情報を含む）。本明細書において、「ビデオフレーム」という用語は、視覚的表示のフレーム情報のレンダリングを介してユーザーに示される画像に寄与するように、例えばそれをもたらすように、構成された情報を主に含むフレームを指すために使用される。本明細書で「ビデオフレーム」に関して提供される開示の大部分はまた、「オーディオフレーム」に適用することができる。
【００２６】
クライアント１１０は、典型的にはユーザーから入力を受け取るように構成される。これらの入力は、ビデオゲームの状態を改変する、そうでなければゲームプレーに影響を与えるように構成されたゲームコマンドを含むことができる。ゲームコマンドは、入力デバイスを使用して受け取ることができる、かつ／またはクライアント１１０上で実行されるコンピューティング命令によって自動的に生成することができる。クライアント１１０の入力デバイスは、例えば、キーボード、ジョイスティック、ポインティングデバイス、力フィードバックデバイス、モーションおよび／または場所検出デバイス、マウス、タッチスクリーン、神経インターフェース、カメラ、未開発の入力デバイス、および／または同様のものを含むことができる。受け取ったゲームコマンドは、クライアント１１０からネットワーク１１５を介してビデオサーバーシステム１２０および／またはゲームサーバー１２５に通信される。
【００２７】
ゲームサーバー１２５は、ビデオサーバーシステム１２０と異なるエンティティによって随意で操作することができる。例えば、ゲームサーバー１２５は、マルチプレーヤーゲームのパブリッシャーによって操作することができる。この実施例では、ビデオサーバーシステム１２０は、随意でゲームサーバー１２５によってクライアントとして見られ、ゲームサーバー１２５の視点からゲームエンジンを実行するクライアントであるように見えるように随意で構成される。ビデオサーバーシステム１２０とゲームサーバー１２５との間の通信は、随意でネットワーク１１５を介して起こる。このように、ゲームサーバー１２５は、ゲーム状態情報を複数のクライアントに送信するマルチプレーヤーゲームサーバーであることができ、そのうちの１つがビデオサーバーシステム１２０である。
【００２８】
ビデオサーバーシステム１２０は、ビデオソース１３０、Ｉ／Ｏ（入力／出力）デバイス１４５、プロセッサ１５０、および非一時的データ記憶１５５を含む。ビデオサーバーシステム１２０は、１つのコンピューティングデバイスを含むことができる、または複数のコンピューティングデバイス間に分散することができる。これらのコンピューティングデバイスは、随意でローカルエリアネットワークのような通信システムを介して接続される。
【００２９】
ビデオソース１３０は、ビデオストリーム、例えばストリーミングビデオ、または動画を形成する一連のビデオフレームを提供するように構成される。いくつかの実施形態では、ビデオソース１３０は、ビデオゲームエンジンおよびレンダリング論理を備える。ビデオゲームエンジンは、プレーヤーからゲームコマンドを受け取り、受け取ったコマンドに基づいてビデオゲームの状態のコピーを維持するように構成される。このゲーム状態は、ゲーム環境内の対象の位置を含み、さらにユーザーの視点を含むことができる。ゲーム状態はまた、対象の特性、画像、色および／またはテクスチャを含むことができる。ゲーム状態は、典型的にはゲームルール、ならびに移動、回転、攻撃、フォーカスの設定、対話、使用、および／または同様なものなどのゲームコマンドに基づいて維持される。ゲームエンジンの一部は、随意でゲームサーバー１２５内に配置される。ゲームサーバー１２５は、地理的に分散したクライアントを使用して複数のプレーヤーから受け取るゲームコマンドに基づいて、ゲーム状態のコピーを維持することができる。これらの場合では、ゲーム状態は、ゲームサーバー１２５によってビデオソース１３０に提供され、そこではゲーム状態のコピーが記憶されてレンダリングが行われる。ゲームサーバー１２５は、ゲームコマンドをネットワーク１１５を介してクライアント１１０から直接に受け取ることができる、かつ／またはゲームコマンドをビデオサーバーシステム１２０を介して受け取ることができる。
【００３０】
ビデオソース１３０は、例えばハードウェア、ファームウェア、および／または非一時的データ記憶１５５などのコンピュータ可読媒体上に記憶されたソフトウェアなどのレンダリング論理を含むことができる。このレンダリング論理は、ゲーム状態に基づいてビデオストリームのビデオフレームを作成するように構成される。レンダリング論理の全部または一部は、随意でグラフィック処理ユニット（ＧＰＵ）内に配置される。レンダリング論理は、典型的にはゲーム状態および視点に基づいて、対象間の三次元空間的関係を決定するように、かつ／または適切なテクスチャなどを適用するように、構成された処理ステージを含む。レンダリング論理は、次にクライアント１１０への通信の前に通常符号化される生のビデオを生成する。生のビデオは、遠隔デバイスが互換性のある復号化能力を有する任意の利用可能な符号化方法を使用して符号化することができる。符号化プロセスは、随意で遠隔デバイス上のデコーダへの配信のためにパッケージ化されたビデオストリームを生成する。
【００３１】
ビデオストリームは、フレームサイズおよびフレームレートによって特徴づけられる。典型的なフレームサイズは、８００×６００、１２８０×７２０（例えば、７２０ｐ）、１０２４×７６８を含むが、任意の他のフレームサイズを使用することができる。フレームレートは、毎秒のビデオフレーム数である。ビデオストリームは、異なるタイプのビデオフレームを含むことができる。例えば、限定しないが、Ｈ．２６４規格は「Ｐ」フレームおよび「Ｉ」フレームを含む。Ｉフレームは、表示デバイス上の全てのマクロブロック／画素をリフレッシュするための情報を含み、一方Ｐフレームは、そのサブセットをリフレッシュするための情報を含む。Ｐフレームは、典型的にはＩフレームよりもデータサイズが小さい。本明細書において、「フレームサイズ」という用語は、フレーム内の画素の数を意味する。「フレームデータサイズ」という用語は、フレームを記憶するために必要なバイト数を指すために使用される。
【００３２】
ビデオソース１３０は、他のビデオに配置されるように構成されたオーバーレイを提供するように随意で構成される。例えば、これらのオーバーレイは、コマンドインターフェース、ログイン命令、ゲームプレーヤーへのメッセージ、他のゲームプレーヤーの画像、他のゲームプレーヤーのビデオフィード（例えば、ウェブカムビデオ）を含むことができる。クライアント１１０のうちの少なくとも１つは、タッチスクリーンインターフェースを含む例示的実施形態では、オーバーレイは、仮想のキーボード、ジョイスティック、タッチパッド、および／または同様のものを含むことができる。さらに、一例示的実施形態では、プレーヤーの音声のオーバーレイがオーディオストリームに重ねられる。ビデオソース１３０はまた、１つ以上のオーディオソースを含むことができる。
【００３３】
様々な実施形態では、Ｉ／Ｏデバイス１４５は、ビデオサーバーシステム１２０がビデオ、コマンド、情報の要求、ゲーム状態、クライアント識別、プレーヤー識別、ゲームコマンド、セキュリティ情報、オーディオ、および／または同様のものなどの情報を送る、かつ／または受け取るように構成することができる。Ｉ／Ｏデバイス１４５は、ネットワークカードまたはモデムなどの通信ハードウェアを含むことができる。Ｉ／Ｏデバイス１４５は、ゲームサーバー１２５、ネットワーク１１５、および／またはクライアント１１０と通信するように構成される。
【００３４】
プロセッサ１５０は、本明細書に記載のビデオサーバーシステム１２０の様々な構成要素内に含まれる論理、例えばソフトウェアを実行するように構成される。例えば、プロセッサ１５０は、ビデオソース１３０、ゲームサーバー１２５、および／またはクライアントクオリファイア１６０の機能を行うようにソフトウェア命令でプログラムすることができる。ビデオサーバーシステム１２０は、随意でプロセッサ１５０の複数のインスタンスを含むことができる。プロセッサ１５０はまた、ビデオサーバー１２０が受け取るコマンドを実行するように、または本明細書に記載のゲームシステム１００の様々な要素の動作を調整するように、ソフトウェア命令でプログラムすることができる。プロセッサ１５０は、１つ以上のハードウェアデバイスを含むことができる。プロセッサ１５０は、例えばコンピュータプロセッサなどの電子プロセッサであることを理解されたい。
【００３５】
ビデオサーバーシステム１２０は、クライアント１１０の機能を遠隔的に決定するように構成されたクライアントクオリファイア１６０を随意で含む。これらの機能は、所与のクライアント１１０自体の機能、および所与のクライアント１１０とビデオサーバーシステム１２０との間の１つ以上の通信チャネルの機能の両方を含むことができる。例えば、クライアントクオリファイア１６０は、ネットワーク１１５を介して通信チャネルをテストするように構成することができる。
【００３６】
図２は、複数のビデオゲームを供与するように構成されたビデオソース１３０の実施形態のブロック図である。複数のビデオゲームは、同じビデオゲームの複数のインスタンスおよび／または異なるビデオゲームのインスタンスを含むことができる。ビデオゲームは、随意でマルチプレーヤーゲームである。例えば、ビデオゲームの１つ以上のゲーム状態は、各々が複数のクライアント１１０から受け取る入力に基づいて、ゲームサーバー１２５の１つ以上のインスタンスによって、維持することができる。
【００３７】
ビデオゲームは、個別に表記された２１０Ａ、２１０Ｂ、２１０Ｃなどのゲーム論理２１０の異なるインスタンスを使用して実行される。ゲーム論理２１０は、ゲーム状態を使用して、ゲームプレーヤーに提示されるように構成されるビデオストリームにレンダリングすることができるゲーム環境を決定するように構成される。いくつかの実施形態では、ゲーム環境は、ゲームのオブジェクト、アバター、オブジェクトの場所、それらの形状、テクスチャ、およびそれらの間の空間的関係、および同様のものを含む三次元仮想環境である。ゲーム環境は、頂点データ、変換データ、およびテクスチャデータ、および／または同様のものを含むことができる。
【００３８】
レンダリングは、典型的には特定のゲームプレーヤーに関連付けられた１つ以上の視点に基づく。ビデオソース１３０は、ゲーム論理２１０の複数のインスタンスを含むことができる。ゲーム論理２１０は、随意でゲームサーバー１２５のクライアントであることができ、ネットワーク１１５を介してゲームサーバー１２５と通信するように構成することができる。
【００３９】
ゲーム論理２１０は、ゲームコマンドを１つ以上のクライアント１１０から受け取り、受け取ったコマンドをゲームルールセットに従って処理するように構成される。これらのルールは、例えば、アバターが他のアバターとどのように関わるか、またはゲームオブジェクトでは、アバター移動、ゲームインスタンス管理、および／または同様のものに適用される。ゲーム論理２１０は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体に記憶されたソフトウェアを含む。
【００４０】
ゲーム論理２１０の各インスタンスは、別のコンピューティングデバイス上に配置することができる、またはゲーム論理２１０のいくつかのインスタンスは、同じコンピューティングデバイス上に配置することができる、またはゲーム論理２１０の単一のインスタンスは、複数のコンピューティングデバイス全てにわたって配置することができる。ゲームのインスタンスは、ユーザーが現在体験しているゲーム環境の要件に依存して、使用されるコンピューティングデバイスの数および／または識別を動的に改変することができる。同じコンピューティングデバイス上に配置されたゲーム論理２１０のインスタンスは、随意で別の仮想マシンまたは仮想Ｉ／Ｏシェル内で実行される。いくつかの実施形態では、ゲーム論理２１０の異なるインスタンスは、ゲームコマンドおよび／またはゲーム状態情報を、例えば必ずしもゲームサーバー１２５を介して通信することなく、互いに直接に通信するように構成される。
【００４１】
ゲーム論理２１０は、オペレーティングシステム（ＯＳ）２１５の上部で実行することができる。オペレーティングシステム２１５は、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｕｎｉｘ（登録商標）、ＭａｃＯＳ（登録商標）、Ｓｏｌａｒｉｓ（登録商標）、および／または同様のものを含むことができる。いくつかの実施形態では、オペレーティングシステム２１５およびゲーム論理２１０は、ＥＳＸ、Ｈｙｐｅｒ−Ｖ、および／または同様のものなどの１つ以上の仮想マシンプラットフォーム上で動作することができる。これらの実施形態では、ゲーム論理２１０の１つ以上のインスタンスは、仮想マシン内で実行することができる。さらに、ゲーム論理２１０の複数のインスタンスは、オペレーティングシステム２１０の同じインスタンス上で実行することができる。例えば、図２は、ゲーム論理２１０Ａおよびゲーム論理２１０Ｂを示し、両方が同じオペレーティングシステム２１５上で実行される。同じオペレーティングシステム２１５上で実行されるゲーム論理２１０の複数のインスタンスは、同じビデオゲームをプレーするように構成されてもされなくてもよい。
【００４２】
いくつかの実施形態では、ゲーム論理２１０によって決定されるゲーム環境は、随意の仮想３Ｄビデオドライバ２２０に送られる。仮想３Ｄビデオドライバ２２０は、ゲーム論理２１０の視点から、グラフィック処理ユニットを制御する非仮想３Ｄビデオドライバとして見えるように構成される。ゲーム論理２１０の各インスタンスは、仮想３Ｄビデオドライバ２２０のそれ自体のインスタンスに関連付けることができる、または仮想３Ｄビデオドライバ２２０は、ゲーム論理２１０の２つ以上のインスタンスによって共有することができる。
【００４３】
仮想３Ｄビデオドライバ２２０は、受け取ったゲーム環境を（非仮想）３Ｄドライバ２３０に送るようにさらに構成される。随意で、３Ｄドライバ２３０へのゲーム環境の配信は、仮想３Ｄビデオドライバ２２０の様々なインスタンスによって調整される。例えば、配信は、３Ｄドライバ２３０がゲーム環境を１つの（または最小数の）仮想３Ｄビデオドライバ２２０から一度に受け取るように調整することができる。いくつかの実施形態では、仮想３Ｄビデオドライバ２２０のそれぞれは、それらが３Ｄドライバ２３０に対して別のプロセスおよびビデオデータの別のソースであると見えるように構成される。このように、３Ｄドライバ２３０は、レンダリング後、どのビデオデータがどのビデオフレームにもたらされたかを追跡するように構成される。
【００４４】
３Ｄドライバ２３０によって受け取られたビデオデータは、グラフィック処理ユニット（ＧＰＵ）２３５に送られ、生のビデオフレームにレンダリングされる。グラフィック処理ユニット２３５は、複数のビデオストリームを並列でレンダリングするために随意で使用される。ビデオストリームの並列制作は、それらのストリームを同時に生成することを含む。しかしながら、ビデオストリームの並列制作は、必ずしもではないが、個別のフレームをグラフィック処理ユニット内で同時に処理することを含むことができる。例えば、いくつかの実施形態では、３Ｄドライバ２３０は、ゲーム論理２１０の様々な編成要素によって生成されたビデオデータをグラフィック処理ユニット２３５に二者択一的に送る。ゲーム論理２１０Ａによって生成されたデータは、ビデオフレームを作成するために使用され、次にゲーム論理２１０Ｂによって生成されたデータは、ビデオフレームなどを作成するために使用される。この場合、ビデオストリームは並列で生成されて、個別のフレームは直列で生成される。
【００４５】
仮想３Ｄビデオドライバ２２０は、３Ｄドライバ２３０からの生のレンダリングされたビデオフレームの転送を管理するように構成することができる。例えば、仮想３Ｄドライバ２２０は、３Ｄドライバの制御から共有メモリ２４０へのビデオフレームの転送を調整するように使用することができる。レンダリング後、ビデオフレームは、グラフィック処理ユニット２３５のメモリ内に、または３Ｄドライバ２３０によって管理されるメモリ内に、存在する。いずれの場合においても、それらは３Ｄドライバ２３０の制御下にある。いくつかの実施形態では、仮想３Ｄビデオドライバ２２０が３Ｄドライバ２３０とのビデオデータおよびフレームの通信を管理するので、それらは、ビデオフレームを特定ビデオ動的符号化パイプライン（ＤＥＰ）２４５に関連付けられた共有メモリ２４０の一部内に配置することができる。ビデオＤＥＰ２４５は、個別にビデオＤＥＰ２４５Ａ、ＤＥＰ２４５Ｂ、ＤＥＰ２４５Ｃなどとして特定される。いくつかの実施形態では、各ビデオＤＥＰ２４５は、共有メモリ２４０内の特定のメモリ場所に割り当てられ、それらのメモリ場所からビデオデータを取り出すように構成される。
【００４６】
共有メモリ２４０は、ビデオデータを効率的に読み書きするように構成されたランダムアクセスメモリ（ＲＡＭ）または同様のメモリを含む。共有メモリ２４０は、複数の異なるビデオＤＥＰ２４５のためのビデオデータを記憶するように構成される。異なるビデオＤＥＰ２４５のためのビデオデータは、随意で共有メモリ２４０に同時に記憶される。共有メモリ２４０は、単一のハードウェアデバイスから構成することができる、または複数のデバイスを含むことができる。
【００４７】
ビデオＤＥＰ２４５は、グラフィック処理ユニット２３５を使用してレンダリングされたビデオデータを符号化するようにそれぞれが構成されて動的に割り当てられた符号化パイプラインである。ビデオＤＥＰ２４５の各編成要素は、ビデオＤＥＰ２４５がプロビジョニングされた時点で指定されたビデオフォーマットに符号化するように構成される。このフォーマット指定は、典型的にはクライアント１１０のうちの１つの必要性、および／またはビデオサーバーシステム１２０とクライアント１１０との間の通信経路の能力に基づく。ビデオＤＥＰ２４５は、クライアント１１０のうちの１つからの要求に応答して、随意で動的にプロビジョニングされる。ビデオＤＥＰ２４５の編成要素は、複数の符号化方式を使用するように、随意で構成することができる。
【００４８】
各ビデオＤＥＰ２４５は、共有メモリ２４０からビデオデータを取り込み、このビデオデータをビデオＤＥＰ２４５のメモリに転送するように構成されたグラバー２４７を含む。各ビデオＤＥＰ２４５は、ＲＧＢからＹＵＶへなどの色空間変換および／またはビデオフレームの解像度を増減するスケーリング操作を行うように構成されたプリプロセッサ（ＰＲＥ）２５０を随意で含む。プリプロセッサ２５０は、グラフィック処理ユニット２３５の出力がＹＵＶ色空間または或る他の所望の色空間内にある実施形態において随意である。複数のプリプロセッサ２５０は、異なるサイズのビデオフレームを有する複数のビデオストリームを生成するように構成されたビデオＤＥＰ２４５内に含めることができる。
【００４９】
各ビデオＤＥＰ２４５は、少なくとも１つのエンコーダ（ＥＮＣ）２５５を含む。図２の実施例では、エンコーダ２５５は、個別にエンコーダ２５５Ａ、エンコーダ２５５Ｂなどとして特定される。各エンコーダ２５５は、特定のコーデック、および随意で特定の色深度および／またはフレームサイズに従って、ビデオデータを符号化するように構成される。
【００５０】
いくつかの実施形態では、ビデオＤＥＰ２４５は、２つ以上の異なるエンコーダを使用して２つ以上の異なるビデオストリームを同時に生成するように構成される。これらのビデオストリームは、グラフィック処理ユニット２５５によってレンダリングされた同じゲーム環境に基づき、したがって、本質的に同じ材料（可能なオーバーレイを除いて）を含み、異なる場所に送ることができる。例えば、ビデオストリームのうちの１つはクライアント１１０Ａに送ることができ、一方その他はクライアント１１０Ｂに送ることができる。あるいは、ビデオストリームのうちの１つはクライアント１１０Ａに送ることができ、その他は第三者がビデオを見ることができるウェブサイトに送ることができる。このウェブサイトは、随意でソーシャルネットワーキングサイトまたはゲームのプレーヤーのサイトの一部である。２つの異なるビデオストリームは、フレームレート、符号化タイプ、フレームサイズ、色深度などで異なることができる。例えば、ソーシャルネットワーキングウェブサイトに配信されるビデオストリームは、クライアント１１０Ａを使用してゲームをプレーするゲームプレーヤーに配信されるビデオストリームよりもはるかに低い品質であることができる。第２のビデオストリームは、ゲームをプレーするゲームプレーヤーに、またはゲームプレーを単に観察している人に、向けることができる。ビデオストリームは、随意で複数の場所に向けられる。
【００５１】
ビデオＤＥＰ２４５Ａは、１つ以上のポストプロセッサ（Ｐｏｓｔ）２６０を随意で含むことができる。ポストプロセッサ２６０の個別の実施例は、２６０Ａおよび２６０Ｂと表記されている。ポストプロセッサ２６０は、公共または専用のネットワークプロトコルに従って、ネットワークを介する通信に適切なフォーマットでコンテナ内に符号化されたビデオフレームをパッケージ化するように構成される。例えば、ＡｄｏｂｅＲＴＭＰなどの或るプロトコルは後処理を必要とするが、Ｈ．２６４ＡｎｎｅｘＢなどの他のビデオ規格は後処理を必要としない。ポストプロセッサ２６０のそれぞれは、エンコーダ２５５の特定の編成要素に関連付けることができる、またはいくつかのポストプロセッサ２６０は、エンコーダ２５５のうちの１つの編成要素から符号化されたビデオフレームを受け取るように構成することができる。
【００５２】
ポストプロセッサ２６０の出力は、Ｉ／Ｏデバイス１４５に向けられて１つ以上のクライアント１１０に配信される。本明細書に記載のビデオＤＥＰ２４５の要素は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体に記憶されたソフトウェアを含む。例えば、ビデオＤＥＰ２４５のそれぞれは、メモリにロードされて電子プロセッサを使用して実行されるソフトウェアセットを表すことができる。
【００５３】
ビデオソース１３０の動作は、典型的には制御装置２６５によって管理される。制御装置２６５は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体に記憶されたソフトウェアを含む。例えば、制御装置２６５は、メモリに記憶されてマイクロプロセッサを使用して実行されるソフトウェアを含むことができる。
【００５４】
図３は、本発明の様々な実施形態による、ゲームビデオ（ビデオフレーム）上のオーバーレイを示す。３つのオーバーレイ８１０Ａ、８１０Ｂ、および８１０Ｃ（一括してオーバーレイ８１０として特定される）が、ビデオゲームによって生成されたビデオに適用されている。これらのオーバーレイ８１０は、単一のオーバーレイとして、またはいくつかの別々のオーバーレイとして、適用することができる。
【００５５】
一実施例、実施形態では、オーバーレイ８１０のそれぞれは、その中のテキストによって示された異なるゲーム制御入力を表す。オーバーレイ８１０Ａはキャリッジリターンを表し、オーバーレイ８１０Ｂはエスケープキーを表し、およびオーバーレイ８１０Ｃはタブキーを表す。他の実施形態では、オーバーレイ８１０は制御装置コマンドを特定することができることを理解されたい。例えば、オーバーレイ８１０Ａ、８１０Ｂ、および８１０Ｃは、対応する記述的行動用語とともに異なるゲーム制御装置行動（例えば、ボタン押下、スティック移動、傾斜方向、振動など）のためのアイコンを示すことができる。いくつかの実施形態では、これらのオーバーレイ８１０は、ビデオフレームの特定の領域に関連付けられ、それらの特定の領域は、表示されたゲーム制御入力に対応付けられる。例えば、オーバーレイ８１０Ｃによって占められた画像の領域は、タブキーに対応付けられ、この領域をクリックすること、そうでなければ選択することが、タブキーストロークとして解釈される。選択は、ジョイスティックまたはマウスなどのポインティングデバイスによって、またはタッチ感知スクリーン上のこの領域にタッチすることによって、達成することができる。
【００５６】
図３は、ゲームルームまたはゲーム実行の他の態様を管理するために使用することができるようなゲームメニューを表すオーバーレイ８２０を示す。オーバーレイ８２０は、異なるゲームコマンド（入力）に対応付けられた複数のアクティブ領域を含む。例えば、オーバーレイ８２０内の「検索」という言葉で占められた領域は、検索コマンドに対応付けられ、一方「参加」という言葉で占められた領域は、ゲームルームに参加するためのコマンドに対応付けられる。
【００５７】
図３は、ゲームプレーヤーの画像を含むオーバーレイ８３０をさらに含む。オーバーレイ８３０は、別のゲームプレーヤーの静止画または実時間画像であってもよい。例えば、図３に示されたビデオフレームがクライアント１１０Ａに送られる場合には、オーバーレイ８３０は、クライアント１１０Ｂのプレーヤーの実時間ビデオフレームを含むことができる。オーバーレイ８３０は、あるいは、別のプレーヤーの視点からのビデオゲームのビュー、同じプレーヤーの第２の視点からのビュー、または或る現実の事象のビューを含むことができる。一実施例では、オーバーレイ８３０は、第１の視点が下側の画像を生成するために使用されている同じプレーヤーの第２の視点に基づくビデオフレームを含む。第２の視点は、第２のビデオＤＥＰ２４５を使用して生成することができる。ビデオデータの上に配置することができるオーバーレイの数、形状、大きさ、および特性は、広範で変わることができる。オーバーレイは、ゲームコマンドに対応付けられる場合もそうでない場合もある。オーバーレイは、サーバー側および／またはクライアント側のいずれかで適用することができる。いくつかの実施形態は、サーバー側およびクライアント側の両方で適用されるオーバーレイを含む。
【００５８】
ゲームコマンドに対するユーザー入力の対応付けは、クライアント１１０がタッチスクリーンまたはポインティングデバイスを含むアプリケーションに限定されない。特定のゲームコマンドに対するユーザー入力の対応付けは、クライアント１１０で、またはビデオサーバーシステム１２０で、起こることができる。例えば、アップルコンピュータ社からのｉＰａｄ（登録商標）は、そのスクリーンへのタッチ、移動、およびタッチの組合せを特定のコマンドに変換するように構成される。ｉＰａｄ（登録商標）およびｉＰｈｏｎｅ（登録商標）はまた、デバイス自体の移動を特定のコマンドに変換するように構成される。しかしながら、他のタイプのクライアント１１０は、これらの機能を有していなくともよく、この場合は、対応付けがビデオサーバーシステム１２０で起こることができる。
【００５９】
ゲームコマンドに対するユーザー入力の対応付けは、ルックアップテーブルまたは他のタイプの入力対応付けを使用して、随意で行なわれる。図４は、本発明の様々な実施形態による、ゲームコマンドに対してユーザー入力を対応付けるように構成された入力マップ１０１０の一部を示す。コマンド対応付けのための入力マップ１０１０は、図４に示されるものよりも多いまたは少ない記載項目を含むことができる。
【００６０】
入力マップ１０１０に示される第１の対応付けは、「Ｄ」から「Ｋ」の文字マップに対する直接文字である。このタイプの対応付けは、実施例として、数人のプレーヤーがキーボードを共有し、それぞれが独自のキーのサブセットを使用するように構成されたゲームで有用であり得る。このようなゲームを地理的に分散したゲームプレーヤーがプレーするとき、各プレーヤーは、同じキーを使用することができるが、プレーヤーの入力の１つがキーボードの異なる部分に対応付けられる。
【００６１】
入力マップ１０１０に示される第２の対応付けは、キーに対するスクリーン領域の対応付けを含む。具体的には、（１００，２００）および（４００，５００）に角を有する矩形がＦ１のファンクションキーに対応付けられる。この座標は、画像、窓、またはスクリーン画素内にあることができる。このタイプの対応付けは、タッチスクリーンまたはポインティングデバイスが入力として使用されるときに、有用である。このタイプの対応付けは、オーバーレイ内の画像を特定のゲームコマンドに対応付けるために使用することができる。このタイプの対応付けはまた、スクリーン上の指もしくはカーソルの移動、またはタッチスクリーンがタッチされた箇所の数に依存することもできる。
【００６２】
入力マップ１０１０に示される第３のタイプの対応付けは、キーに対する制御装置ボタンの対応付けを含む。具体的には、「赤ボタン」は「スペースバー」に対応付けられる。このタイプの対応付けは、特定のゲームコマンドにゲーム制御装置の入力を対応付けるために使用することができる。本発明のいくつかの実施形態では、ゲーム制御装置、およびその任意の機能（例えば、ボタン、スティック、傾斜、振動など）は、対応するゲームコマンドに対応付けることができることを理解されたい。
【００６３】
入力マップ１０１０に示される第４のタイプの対応付けは、キーに対する入力デバイスの運動（「右傾斜」）を対応付けることを含む。このタイプの対応付けは、ジョイスティック、ｉＰｈｏｎｅ（商標登録）、ｉＰａｄ（登録商標）、任天堂のＷｉｉ（登録商標）、または運動もしくは位置感知機能を備えた他のタイプのクライアント１１０で使用することができる。
【００６４】
入力マップ１０１０に示される第５のタイプの対応付けは、キー「Ａ」に対するカメラなどの外部デバイスによって検出される対象の移動の対応付けを含む。このタイプの対応付けは、無線またはビデオ運動検出システムを含むクライアント１１０で随意で使用される。このタイプの対応付けを使用することにより、マイクロソフトからのＫｉｎｅｃｔ（登録商標）などの新規のタイプの入力デバイスを使用してプレーされるキーボードを使用してプレーされるようにゲームを設計することを可能にする。
【００６５】
第６のタイプの対応付けは動的であり得る。例えば、タッチスクリーン上の指の運動がジョイスティックの移動に対応付けられる実施形態では、指が最初にスクリーンにタッチする場所をジョイスティックの「中心」位置に動的に対応付けることができる。最初のタッチ位置の上、下、右、左などのスクリーン位置は、それぞれジョイスティックの位置の上方、下方、左、右などに対応付けられる。このように、ジョイスティックの移動は、最初にスクリーン上に指を置き、次に或る方向に指をスライドさせることにより、入力することができる。動的な対応付けはまた、スクリーンに対する多指タッチを含むことができる。例えば、スクリーンの第１の箇所上のタッチは、第２のタッチをゲームコマンドに変換するために使用される対応付けの位置と向きを決定することができる。
【００６６】
図５は、本発明の様々な実施形態による、オーバーレイを使用する方法を示す。オーバーレイは、オーディオまたはビデオであり得る。図５の方法では、ビデオフレームは、グラフィック処理ユニット２３５を使用して生成され、オーバーレイは、符号化の前に、このビデオフレームに追加される。図５に示される方法の操作は、随意でいくつかのゲーム論理２１０、いくつかのビデオＤＥＰ２４５、および／またはいくつかのオーディオＤＥＰ２７０を使用して並列で行うことができる。
【００６７】
具体的には、生成ステップ１１１０で、ゲーム環境が１人以上のゲームプレーヤーからネットワーク１１５およびクライアント１１０を介して受け取ったゲームルールおよびゲームコマンドに基づいて生成される。例えば、クライアント１１０Ａのゲームプレーヤーおよびクライアント１１０Ｂのゲームプレーヤーは、それぞれゲーム環境が生成されるゲーム状態を更新するために使用されるゲームコマンドを提供する。生成ステップ１１１０は、図４に関して説明されるように、状態受取ステップ５１５および３Ｄデータ決定ステップ５２０を含むことができる。いくつかの実施形態では、生成ステップ１１１０は、ゲーム内の事象、ゲームルール、および／または受け取ったゲームコマンドに基づいてオーディオデータを生成することを含む。
【００６８】
随意のレンダリングステップ１１２０では、生成ステップ１１１０で生成されたゲーム環境がグラフィック処理ユニット２３５を使用してレンダリングされる。レンダリングステップ１１２０は、図４に関して説明されるレンダリングステップ５２５の実施形態である。レンダリングステップ１１２０の所産は、ビデオフレームである。レンダリングステップ１１２０は、生成ステップ１１２０の所産がオーディオデータだけを含む、かつ／または３Ｄゲーム環境を含まない場合の実施形態では随意である。
【００６９】
提供ステップ１１３０では、レンダリングステップ１１２０で生成されたビデオフレームおよび／または生成ステップ１１１０で生成されたオーディオデータが、ビデオＤＥＰ２４５Ａおよび／またはオーディオＤＥＰ２７０Ａなどの１つ以上の符号化パイプラインに提供される。例えば、ビデオフレームは、ビデオＤＥＰ２４５Ａに提供することができ、オーディオフレームは、オーディオＤＥＰ２７０Ａに提供される。提供ステップ１１３０は、図４に関して説明されるように、転送ステップ５２７の実施形態である。
【００７０】
オーバーレイ追加ステップ１１４０では、ビデオオーバーレイが、提供ステップ１１３０で提供されたビデオフレームに追加される、かつ／またはオーディオオーバーレイが、提供ステップ１１３０で提供されたオーディオデータに追加される。オーバーレイ追加ステップ１１４０は、典型的には図２に関して説明されたようにオーバーレイ論理２９０および／またはオーバーレイ論理２９５を使用して行われる。複数のビデオオーバーレイおよび複数のオーディオオーバーレイが、随意でオーバーレイ追加ステップ１１４０に追加される。オーディオオーバーレイは、ネットワーク１１５を介してパケットとして１つ以上のクライアント１１０から受け取るオーディオデータを随意で含む。例えば、オーディオオーバーレイは、複数のクライアント１１０から受け取るゲームプレーヤーの音声データを含むことができる。
【００７１】
いくつかの実施形態では、ビデオソース１３０は、多くのクライアント１１０からオーディオデータを受け取り、オーバーレイ追加ステップ１１４０は、どのオーディオデータを特定のオーディオオーバーレイで使用するべきかを決定することを含む。例えば、１０人のゲームプレーヤーがオーディオソース１３０を使用することができるときに、これらのプレーヤーのうちの２人または３人の音声データだけをオーディオオーバーレイに含めることができる。どのオーディオデータをオーバーレイに含めるかの決定は、ゲームプレーヤー間の社会的関係に随意で基づく。例えば、１人のゲームプレーヤーは、どの、すなわち、誰の音声データを受け取ることを望むかを選択することができる。社会的関係は、とりわけ、ギルドの、パーティの、同じ戦場またはゲームインスタンスに存在する、かつ／または同じゲーム環境内で互いに近くに位置するアバターを有する、会員を含むことができる。いくつかの実施形態では、オーディオデータの音量は、２つのアバター間のゲーム内距離に応じて調整される。
【００７２】
符号化ステップ１１５０では、ビデオフレームおよび／またはオーディオフレーム、ならびに任意のオーバーレイが符号化される。これは、エンコーダ２５５および／またはオーディオエンコーダ２８０を使用して達成することができる。符号化ステップ１１５０は、符号化ステップ５３５の実施形態である。符号化ステップ１１５０は、オーバーレイ追加ステップ１１５０の前後に行うことができる。
【００７３】
配信ステップ１１６０では、符号化ステップ１１５０で符号化されたビデオフレームおよび／またはオーディオデータが、ネットワーク１１５を介してクライアント１１０のうちの１つに提供される。ビデオフレームおよび／またはオーディオデータは、複数の場所に随意で提供される。例えば、同じデータを複数のゲームプレーヤーに提供することができる。配信ステップ１１６０は、図４に関して説明される提供ステップ５４５の実施形態である。
【００７４】
随意の対応付けステップ１１７０では、オーバーレイ追加ステップ１１４０で適用されたビデオオーバーレイの一部がゲームコマンドに対応付けられる。例えば、ビデオオーバーレイが追加されたビデオフレームの領域が、特定のゲームコマンドへの対応付けとして、入力マップ１０１０に設定することができる。オーバーレイは、表示器またはビデオフレームの複数の領域に適用することができる。各領域は、異なるゲームコマンドに随意で対応付けられる。入力マップ１０１０は、ビデオサーバーシステム１２０またはクライアント１１０のうちの１つに配置することができる。
【００７５】
随意の受取ステップ１１８０では、対応付けられたゲームコマンドをビデオソース１３０で受け取る。対応付けられたゲームコマンドは、随意で、オーバーレイが適用されたビデオフレームの領域から対応付けられたコマンドである。受け取ったゲームコマンドは、クライアント１１０のうちの１つ、またはビデオサーバーシステム１２０のいずれかで対応付けられてよい。受け取ったゲームコマンドは、ビデオフレームの状態を更新するために随意で使用される。
【００７６】
図６は、本発明の例示的実施形態による、ビデオ拡張論理２０００を含むためのビデオソース１３０の拡張を示す。拡張論理２０００は、いずれかの３Ｄドライバ２３０によって提供されるビデオフレームデータを分析して、その中にキーグラフィック画像の存在を検出し、キーグラフィック画像の存在の検出に応じて画像オーバーレイデータをオーバーレイ論理２９０に提供するように定義される。様々な実施形態において、拡張論理２０００は、仮想３Ｄビデオドライバ２２０、３Ｄドライバ２３０、共有メモリ２４０、および／またはビデオＤＥＰ２４５のうちの１つ以上からグラバー２４７を介して、ビデオフレーム日付にアクセスして取得するように定義することができる。ビデオフレームデータは、ビデオフレームデータが符号化されてビデオＤＥＰ２４５からクライアント１１０のうちの１つ以上に送信される前に、拡張論理２０００によって受け取られて処理される。
【００７７】
拡張論理２０００は、キーグラフィック画像に対応するターゲット画素パターンの存在を受け取ったビデオフレームデータから検索するように定義されたキー検出論理２００１を含む。実装に依存して、キー検出論理２００１は、目標画素パターンの存在をビデオフレーム全体の一部またはビデオフレーム全体から検索するように指示することができる。所与の時間にキー検出論理２００１によって利用される特定の検索技術は、目標検索パターンと呼ばれる。拡張論理２０００は、どんな目標画素パターンを検索すべきか、かつどの目標検索パターンを使用すべきか、について指示することができる。
【００７８】
図７は、拡張論理２０００の処理対象となるビデオフレームデータに対応するビデオフレーム画像の実施例を示す。図７のビデオフレーム画像は、実施例として提供され、本明細書に記載の本発明の一切の特徴または態様を限定しないことを理解されたい。図７の例示的ビデオフレーム画像では、目標画素パターンに対応するキーグラフィック画像２１０１が示されている。キー検出論理２００１は、指定された目標検索パターンに従ってビデオフレームデータを検索し、キーグラフィック画像２１０１に対応する目標画素パターンの存在を検出するように、機能する。一実施形態では、目標検索パターンは、横方向および上下方向にわたるラスタ化検索パターンである。別の実施形態では、目標検索パターンは、同時方式でビデオフレームの異なる領域にわたる複数のラスタ化検索パターンを含む。この実施形態の一実施例では、ビデオフレームの異なる領域が重畳しないように、かつ異なる領域がビデオフレーム全体を一緒に覆うように、ビデオフレームの異なる領域が画定される。
【００７９】
さらに、一実施形態では、キー検出論理２００１は、マルチステップのサブターゲット方式で、キーグラフィック画像の検索を実装するように定義することができる。具体的には、キー検出論理２００１は、最初に、キーグラフィック画像の一部に対応する目標画素パターンのインジケータ部分をビデオフレームから検索するように指示することができる。一実施形態では、目標画素パターンの一部は、鮮明なコントラストおよび／または特徴的な色を含む画素セットに対応することができる。次に、目標画素パターンのインジケータ部分の存在を検出すると、キー検出論理２００１は、目標画素パターンの検出されたインジケータ部分の近傍で目標画素パターンの集中した検索を行うように指示することができる。目標画素パターンのインジケータ部分の検索および検出は、目標画素パターン残体の検索および検出よりも迅速の方式で行うことができ、したがって、目標画素パターンの検索および検出全体の効率が向上することを理解されたい。
【００８０】
一実施形態では、拡張論理２０００は、ゲーム論理２１０のゲーム状態を監視し、かつ監視されたゲーム状態に応答するように定義される。より具体的には、拡張論理２０００は、監視されたゲーム状態に依存する特定の目標画素パターンを利用する、かつ／または監視されたゲーム状態に依存する特定の目標検索パターンを利用する、ように指示することができる。拡張論理２０００は、どの目標画素パターンおよび目標検索パターンを監視されたゲーム状態の関数として用いるべきかについての指令を提供するゲーム特有拡張プログラム命令に従って、受け取り、動作するように定義することができる。
【００８１】
例えば、図７を参照すると、拡張論理２０００は、矢の画像２１０３が的の画像２１０５を突いているようなゲーム状態と通知することができる。このゲーム状態の通知に基づいて、拡張論理２０００は、図８に示されるように特定の目標画素パターンを使用し、かつ的の画像２１０５が配置されたビデオフレームの領域だけを含む目標検索パターンを使用し、それにより、キー検出論理２００１の労力を集中させるように、命令することができる。
【００８２】
さらに、ゲーム特有拡張プログラム命令は、ビデオフレーム内のターゲット画素パターンが検出されると、どのようにオーバーレイ画像を生成してビデオフレーム内に配置するかについての命令を含むことができる。拡張論理２０００は、拡張論理２０００によって受け取られる命令に従ってオーバーレイ画像を生成するように定義されたオーバーレイ生成論理２００３を含む。オーバーレイ生成論理２００３は、オーバーレイ構成データをオーバーレイ論理２９０に通信するように定義される。オーバーレイ構成データは、ビデオフレーム内のオーバーレイ画像の直接の配置に関連するオーバーレイ画素データおよびデータを含むことができる。本明細書に記載のように、オーバーレイ論理２９０は、ビデオフレームの適切な画素データを変更することにより、ビデオフレーム内にオーバーレイ画像を挿入するように機能する。実際に拡張論理２０００を使用して、オーバーレイ論理２９０は、拡張論理２０００から受け取るオーバーレイ構成データに従ってオーバーレイ画像を挿入するように定義される。
【００８３】
例えば、図９は、オーバーレイ生成論理２００３からオーバーレイ論理２９０にオーバーレイ構成データの形式で通信されるオーバーレイ画像２１０７を示す。一実施形態では、各ゲーム状態のためのオーバーレイ生成論理２００３は、共有メモリ２４０に記憶され、かつ対応するゲーム状態および目標画素データに指標付けされ、オーバーレイ生成ロジック２００３は、拡張論理２０００に送信されるゲーム状態情報に依存して共有メモリ２４０から必要なオーバーレイ構成データを取り出し、必要なオーバーレイ構成データを共有メモリ２４０に送信することができる。一実施形態では、様々なオーバーレイ画像のためのオーバーレイ構成データは、拡張論理２０００がアクセスするデータベースから取得することができる。さらに、一実施形態では、使用されるオーバーレイ構成データは、ゲームをプレーするユーザーの識別またはゲームをプレーするユーザーの専門知識レベルなどのゲームをプレーするユーザーに関連する他のデータなどの、ゲーム状態の外部のパラメータに依存することができる。
【００８４】
オーバーレイ構成論理がオーバーレイ生成論理２００３からオーバーレイ論理２９０に提供されると、オーバーレイ論理２９０は、対応するオーバーレイ画像をビデオフレーム内に適用／挿入するように機能する。例えば、図１０は、図８に示されるキーグラフィック画像２１０１に対応する目標画素パターンの存在を検出するキー検出論理２００１に応答して、オーバーレイ画像２１０７の挿入後の図７のビデオフレームを示す。オーバーレイ画像２１０７の挿入は、ビデオフレーム内の画素データをオーバーレイ画像２１０７の画素データに重畳する（または交換する）ことによって達成できることを理解されたい。拡張論理２０００によって提供される、特定のゲーム状態に関連するビデオフレーム内のキーグラフィック画像の検出と、オーバーレイ画像の対応する生成および挿入とは、ゲームの基になるプログラム命令を実際に変更することなく、ゲームのルックアンドフィールを変更する実質的な能力を提供することを理解されたい。さらに、いくつかの実施形態では、オーバーレイ画像の挿入は、ゲームのユーザー／プレーヤーに広告画像を伝えるために使用することができる。
【００８５】
さらに、オーバーレイ画像、またはその一部は、図４に関して説明されたような入力マップを介するユーザー供給コマンドに応答することができる。このように、拡張論理２０００によって提供される、特定のゲーム状態に関連付けられたビデオフレーム内のキーグラフィック画像の検出と、オーバーレイ画像の対応する生成および挿入とは、ゲームの基になるプログラム命令を実際に変更することなく、ゲームの機能を実際に変更するために使用することができる。
【００８６】
キー検出論理２００１は、所与のビデオフレーム内で、１つ以上の目標検索パターンに従って、１つ以上の目標画素パターンを検索して検出するように指示することができることを理解されたい。さらに、オーバーレイ生成論理２００３は、所与のビデオフレームのための１つ以上のオーバーレイ画像のためのオーバーレイ構成データを生成するように指示することができることを理解されたい。したがって、いくつかの例では、オーバーレイ論理２９０は、単一のビデオフレームに適用される複数のオーバーレイ画像のためのオーバーレイ構成データを受け取る。この場合、複数のオーバーレイ画像は、関係がある、または無関係であることができ、それぞれビデオフレーム内の異なる位置に配置することができる。
【００８７】
図１１は、本発明の実施形態による、遠隔的に供与されるアプリケーションを拡張するためのシステムを示す。このシステムは、１つ以上のコンピューティングシステム上で実行される第１のアプリケーション２１２１を含む。一実施形態では、第１のアプリケーション２１２１が実行される１つ以上のコンピューティングシステムは、クラウドコンピューティングシステム上で動作する１つ以上の仮想コンピューティングマシンを含む。一実施形態では、第１のアプリケーション２１２１は、ゲームアプリケーションである。第１のアプリケーション２１２１は、第１のアプリケーションの実行に関連付けられたグラフィック画像のレンダリングのための一連のオリジナルフレーム画素データセット２１２３を生成するように実行される。一連のオリジナルフレーム画素データセット２１２３は、ビデオストリームに対応し、各オリジナルフレーム画素データセットは、それぞれのビデオフレームに対応する。
【００８８】
図１１のシステムはまた、１つ以上のコンピューティングシステム上で実行されて一連のオリジナルフレーム画素データセット内に存在する１つ以上のキーグラフィック画像を検出する第２のアプリケーション２１２５を含む。一実施形態では、第２のアプリケーション２１２５が実行される１つ以上のコンピューティングシステムは、クラウドコンピューティングシステム上で動作する１つ以上の仮想コンピューティングマシンを含む。一実施形態では、第２のアプリケーション２１２５は、図６に関して説明された拡張論理２０００に対応する。さらに、キーグラフィック画像は、第１のアプリケーション２１２１の実行の状態を表すことができる。
【００８９】
第２のアプリケーション２１２５によって、１つ以上のキーグラフィック画像が検出されると、第２のアプリケーションは、一連のオリジナルフレーム画素データセット２１２３の一部と代替画素データとの置き換えを指示して、一連の変更されたフレーム画素データセット２１２７を生成するように動作する。一連の変更されたフレーム画素データセット２１２７は、符号化されて、一連のオリジナルフレーム画素データセット２１２３の代わりにクライアントコンピュータシステム２１２９に送信され、クライアントコンピュータシステム２１２９の視覚的表示器でレンダリングされるように提供される。一実施形態では、第２のアプリケーション２１２５は、オーバーレイ論理２９０などのオーバーレイモジュールに命令を提供し、一連のオリジナルフレーム画素データセット２１２３内の画素データの一部と代替画素データとの置き換えを指示するように動作する。
【００９０】
図１２は、本発明の一実施形態による、遠隔的に供与されるアプリケーションを拡張するための方法を示す。図１２の方法は、図６に関して説明された拡張論理２０００を使用して実装できることを理解されたい。この方法は、アプリケーションによって生成されたビデオフレームを検索してキーグラフィック画像を検出する動作１６０１を含み、キーグラフィック画像は、アプリケーションの実行時のユーザーの達成レベルを表す。方法はまた、アプリケーションによって生成されたビデオフレーム内のキーグラフィック画像を検出するための動作１６０２を含む。一実施形態では、アプリケーションは、クラウドコンピューティングプラットフォームの仮想マシン上で実行される遠隔的に供与されるゲームアプリケーションである。ユーザーの達成レベルは、本質的に無限の様々な方法でレンダリングすることができる。しかしながら、実行されるアプリケーションに依存して、ビデオフレーム内の予測される位置およびユーザーの達成レベルを表すキーグラフィック画像の予測される画素パターンは、ビデオフレームを検索する前に知ることができ、したがって、動作１６０１で集中した検索が可能となる。
【００９１】
ユーザーの達成レベルに対応するキーグラフィック画像が、アプリケーションによって生成されたビデオフレーム内に検出されると、方法は、動作１６０３に進み、ユーザーのユニバーサル達成状態を表すオーバーレイ画像を取得する。ユーザーのユニバーサル達成状態は、或る期間にわたって１つ以上のタイプの１つ以上のアプリケーション、例えばゲーム、の実行時のユーザーの達成レベルを表すことができる。一実施形態では、動作１６０３は、ユーザー情報のデータベースに問い合わせをしてユーザーのユニバーサル達成状態を決定することを含む。
【００９２】
方法はまた、ユーザーの決定されたユニバーサル達成状態をデータ記憶デバイスに記憶された複数の所定のオーバーレイ画像のうちの１つ以上に関連付ける動作１６０５を含む。次に、動作１６０７を行い、ユーザーの決定されたユニバーサル達成状態に関連付けられた複数の所定のオーバーレイ画像のうちの少なくとも１つのためのオーバーレイ構成データをデータ記憶デバイスから入手する。次に、動作１６０９を行い、入手したオーバーレイ構成データを例えばオーバーレイ論理２９０などのオーバーレイ論理に供給し、所定のオーバーレイ画像のうちの少なくとも１つをビデオ画像内に挿入するために符号化し、ユーザーのコンピューティングシステムに送信する。ゲーム世界の状況では、図１２の方法は、複数の同様のおよび／または異なるゲームをプレーしているときのユーザーのユニバーサル達成状態を、ユーザーがプレーしている任意のゲームのビデオストリーム内に独自の方法で視覚的にレンダリングすることを可能にすることを理解されたい。さらに、キーグラフィック画像検出およびオーバーレイプロセスを介して、ユーザーのユニバーサル達成状態をゲームによって通常生成される画像の代わりにレンダリングし、ゲームにおけるユーザーの達成レベルを示すことができる。
【００９３】
図１３は、本発明の一実施形態により、例えばコンピュータゲームなどの遠隔的に供与されるコンピュータアプリケーションの生成および実行のためのクラウドコンピューティングシステムの図を示す。クラウドコンピューティングシステム１３００は、コンピューティング活動に必要な動作を行うように定義された様々な物理的構成要素、すなわち、コンピューティングハードウェア構成要素を含む。物理的構成要素１３０１は、複数のコンピュータプロセッサ１３０１Ａ、ある量のコンピュータメモリ１３０１Ａ、ある量の永続的データ記憶１３０１Ｃ、および複数のネットワークインターフェースカード／チップ（ＮＩＣ）を含むことができる。上述の様々な物理的構成要素１３０１は、当技術分野で公知の任意のこのような物理的構成要素１３０１に対応することができる。さらに、上述の様々な物理的構成要素１３０１は、実施例を介して提供されることを理解されたい。クラウドコンピューティングシステム１３００の様々な実施形態は、上述の実施例よりも多かれ少なかれ物理的構成要素１３０１を含むことができ、物理的構成要素１３０１の統合コンピューティング機能がクラウドコンピューティングシステム１３００の適切な性能を確保するのに十分である限り、上述以外の例えば電源、冷却システムなどの物理的構成要素１３０１を含むことができる。
【００９４】
クラウドコンピューティングシステム１３００はまた、様々な物理的構成要素１３０１を使用して複数の仮想マシンを生成して実行するように定義されたハイパーバイザ１３０３、または同様の制御層も含む。ハイパーバイザ１３０３によって生成されて実行される各仮想マシンは、本質的に特定のコンピューティングアーキテクチャのソフトウェアエミュレーションである。様々な物理的構成要素１３０１を使用して、ハイパーバイザ１３０３は、複数の異なる仮想マシンを同時に生成して実行することができる。所与の仮想マシンは、所与の仮想マシンによってエミュレートされる特定のコンピューティングアーキテクチャに対応する複数のオペレーティングシステム１３０５のうちの１つ以上に従って動作するように指示することができる。様々なタイプのオペレーティングシステムの実施例は、とりわけ、Ｗｉｎｄｏｗｓ、ＭａｃＯＳＸ、Ｌｉｎｕｘ、ＰｌａｙＳｔａｔｉｏｎ（ＰＳ１）、ＰｌａｙＳｔａｔｉｏｎ２（ＰＳ２）、ＰｌａｙＳｔａｔｉｏｎ３（ＰＳ３）を含む。例えば、図１３に関して、オペレーティングシステムＯＳ１がＰＳ３オペレーティングシステムの場合、ＯＳ１は、ハイパーバイザ１３０３によって生成される仮想マシン上で実行され、ＰＳ３コンピューティングアーキテクチャをエミュレートすることができる。同様に、オペレーティングシステムＯＳ５がＭａｃＯＳＸオペレーティングシステムの場合、ＯＳ５は、ハイパーバイザ１３０３によって生成される仮想マシン上で実行され、Ｍａｃコンピューティングアーキテクチャをエミュレートすることができる。
【００９５】
上述の方式において、ハイパーバイザ１３０３は、物理的構成要素１３０１を利用して本質的に任意の数の様々なタイプの仮想マシンを生成して実行し、様々な対応するオペレーティングシステムを実行することができる本質的に任意の数の様々なタイプのコンピューティングアーキテクチャをエミュレートすることができる。したがって、クラウドコンピューティングシステム１３００は、必要なコンピューティングアーキテクチャ上で実行される特定のオペレーティングシステムによって定義される本質的に任意のコンピューティングシステムのインスタンスを提供することができる。図１３の実施例では、実施例として６つのオペレーティングシステムＯＳ１〜ＯＳ６を示しているが、クラウドコンピューティングシステム１３００は、オペレーティングシステムの設定数に何ら限定されないことを理解されたい。ハイパーバイザ１３０３は、本質的に想像可能な任意のコンピューティングアーキテクチャのための仮想マシンを生成し、本質的に想像可能な任意の対応するオペレーティングシステムを実行するように定義することができる。したがって、クラウドコンピューティングシステム１３００は、物理的構成要素１３０１、ハイパーバイザ１３０３の能力（すなわち、仮想マシンエミュレーションの数およびタイプ）、およびオペレーティングシステムのプロビジョンの数およびタイプに関してスケーラブルである。
【００９６】
クラウドコンピューティングシステム１３００はまた、複数のオペレーティングシステム１３０５のうちの１つ以上による実行のために定義された複数の様々なコンピュータアプリケーション１３０７を含むことができる。様々なコンピュータアプリケーション１３０７は、クラウドコンピューティングシステム１３００の記憶１３０１Ｃに記憶することができ、メモリ１３０１Ｂにロードされ、ハイパーバイザ１３０３による特定の仮想マシンの所与のインスタンスおよび対応するオペレーティングシステムのプロビジョンに関連して必要に応じて実行することができる。任意のオペレーティングシステム１３０５のために存在する任意のコンピュータアプリケーション１３０７は、クラウドコンピューティングシステム１３００によって実行できることを理解されたい。
【００９７】
図１３はまた、複数のホスト１３０９（Ｈｏｓｔ１〜ＨｏｓｔＮ）を示す。ホスト１３０９は、特定の仮想マシンのインスタンスおよび対応するオペレーティングシステムへのアクセスを取得して選択されたアプリケーション１３０７を実行するために、クラウドコンピューティングシステム１３００にアクセスしたユーザーのインスタンスを表す。クラウドコンピューティングシステム１３００は、多くの様々な方法で仮想マシンおよびオペレーティングシステムをプロビジョニングするように定義され、管理することができることを理解されたい。例えば、いくつかの場合では、クラウドコンピューティングシステム１３００にアクセスする各ユーザーに、ユーザーが所望のアプリケーション１３０７を実行することができる専用の仮想マシンおよび対応するオペレーティングシステムを提供することができる。さらに、いくつかの場合では、クラウドコンピューティングシステム１３００にアクセスする複数のユーザーは、各ユーザーが所望のアプリケーション１３０７を実行することができる仮想マシンおよび対応するオペレーティングシステムを共有することができる。クラウドコンピューティングシステム１３００の動作および管理は、最適化され、利用可能な物理的構成要素１３０１によって可能な最良のサービス品質をクラウドコンピューティングシステム１３００にアクセスする各ユーザーに提供することができる。
【００９８】
様々な実施形態では、クラウドコンピューティングシステム１３００は、クラウドゲームシステムである。一実施形態では、クラウドゲームシステムは、ユーザーに関連付けられたクライアントデバイスのタイプと、他にクラウドベースのビデオゲームに入力を提供するためにユーザーが利用可能である制御装置のタイプと、を検出するように構成される。例えば、一実施形態では、ユーザーがクラウドゲームシステムにログインすると、ユーザーがクラウドゲームデバイスにアクセスするためのクライアントデバイスのタイプを指定するオプションをユーザーに提示することができる。一実施形態では、一連のクライアントデバイスのオプションが提示され、そのオプションからユーザーはユーザーのクライアントデバイスに対応するものを選択することができる。ユーザーにはまた、ユーザーがビデオゲームをプレーするために使用する制御装置デバイスのタイプを指定するためのオプションを提示することができる。一実施形態では、一連の制御装置のオプションをユーザーに提示することができ、そのオプションからユーザーが選択して、ユーザーの制御装置のハードウェアに対応する制御装置のタイプを指定することができる。他の実施形態では、クラウドゲームシステムは、クライアントデバイスのタイプおよび／または制御装置デバイスのタイプを自動的に検出するように構成することができる。
【００９９】
例えば、ログイン時、クライアントデバイスは、それ自体ならびに接続された制御装置デバイスを特定する情報をクラウドゲームサーバーに送ることができる（例えば、クラウドゲームサーバーからの要求に応答して）。この情報に基づいて、クラウドゲームサーバーは、適切なビデオゲーム出力構成および入力パラメータ構成を決定し、ユーザーのクライアントデバイスおよび制御装置デバイスに最適化されたゲーム体験を提供することができる。一実施形態では、ルックアップテーブルを用い、検出されたクライアントデバイスおよび検出された制御装置デバイスに基づいて、ビデオゲーム構成および入力パラメータ構成を決定する。
【０１００】
所与のビデオゲームが、特定のプラットフォームおよび特定の関連する制御装置デバイスのために開発される場合があることを理解されたい。しかしながら、そのようなゲームは、本明細書で提示されたクラウドゲームシステムを介して利用可能となるとき、ユーザーは異なる制御デバイスを使用してビデオゲームにアクセスすることができる。例えば、ゲームがゲームコンソールおよびその関連の制御装置のために開発された場合があるのに、ユーザーがキーボードおよびマウスを利用してパーソナルコンピュータからゲームのクラウドベースのバージョンにアクセスする場合がある。このような状況において、入力パラメータ構成は、ユーザーの利用可能な制御装置デバイス（この場合、キーボードおよびマウス）によって生成することができる入力からビデオゲームの実行のために許容可能な入力への対応付けを定義することができる。
【０１０１】
別の実施例では、ユーザーは、タブレットコンピューティングデバイス、タッチスクリーンスマートフォン、または他のタッチスクリーン駆動デバイスを介してクラウドゲームシステムにアクセスすることができる。この場合、クライアントデバイスおよび制御装置デバイスは、同じデバイス内に一緒に組み込まれ、入力は検出されるタッチスクリーンの入力／ジェスチャを介して提供される。このようなデバイスでは、入力パラメータ構成は、ビデオゲームのためのゲーム入力に対応する特定のタッチスクリーン入力を定義することができる。例えば、ボタン、方向パッド、または他のタイプの入力要素は、ビデオゲームの実行中に表示され、またはオーバーレイされ、ゲーム入力を生成するためにユーザーがタッチできるタッチスクリーン上の位置を示すことができる。特定の方向のスワイプなどのジェスチャまたは特定のタッチ運動もまた、ゲーム入力として検出される。一実施形態では、例えばビデオゲームのゲームプレーを開始する前に、タッチスクリーンを介してゲームプレーのための入力を提供する方法を示すチュートリアルをユーザーに提供し、ユーザーをタッチスクリーン上の制御の動作に順応させることができる。
【０１０２】
いくつかの実施形態では、クライアントデバイスは、制御装置デバイスのための接続ポイントとして機能する。すなわち、制御装置デバイスは、無線または有線接続を介してクライアントデバイスと通信し、制御装置デバイスからの入力をクライアントデバイスに送信する。クライアントデバイスは、これらの入力を順番に処理後、入力データをクラウドゲームサーバーにネットワーク（例えば、ルーターなどのローカルネットワーキングデバイスを介してアクセスされる）を介して送信することができる。しかしながら、他の実施形態では、制御装置自体がネットワーク化デバイスであることができ、最初にクライアントデバイスを介してそのような入力を通信する必要がなく、入力をクラウドゲームサーバーにネットワークを介して直接に通信する能力を備える。例えば、制御装置は、ローカルネットワーキングデバイス（上述のルーターなど）に接続し、データをクラウドゲームサーバーとの間で送受信することができる。したがって、クライアントデバイスは、クラウドベースのビデオゲームからビデオ出力を受け取ってローカル表示器上でレンダリングすることをまだ要求されることがあるが、入力をクラウドゲームサーバーにネットワークを介して直接に送信することを可能にし、クライアントデバイスをバイパスすることにより、入力レイテンシを縮小することができる。
【０１０３】
一実施形態では、ネットワーク化制御装置およびクライアントデバイスは、或るタイプの入力を制御装置からクラウドゲームサーバーに直接に送り、クライアントデバイスを介して他のタイプの入力を送るように構成することができる。例えば、検出が制御装置自体と別の追加のハードウェアまたは処理に一切依存しない入力は、制御装置からクラウドゲームサーバーにネットワークを介して直接に送ることができ、クライアントデバイスをバイパスする。そのような入力は、ボタン入力、ジョイスティック入力、埋め込まれた運動検出入力（例えば、加速度計、磁力計、ジャイロスコープ）などを含むことができる。しかしながら、追加のハードウェアを利用する、またはクライアントデバイスによる処理を必要とする入力は、クライアントデバイスによって、クラウドゲームサーバーに送ることができる。これらは、クラウドゲームサーバーに送る前にクライアントデバイスによって処理することができるゲーム環境からキャプチャされたビデオまたはオーディオを含む。さらに、制御装置の運動検出ハードウェアからの入力は、キャプチャされたビデオに関連してクライアントデバイスによって処理され、その後クライアントデバイスによってクラウドゲームサーバーに通信される制御装置の位置および運動を検出することができる。様々な実施形態による制御装置デバイスはまた、データ（例えば、フィードバックデータ）をクライアントデバイスから、またはクラウドゲームサーバーから直接に、受け取ることができることを理解されたい。
【０１０４】
実施例としてのクラウドコンピューティングシステム１３００、または同様のコンピューティングシステムは、ユーザーのコンピューティング端末が、ネットワークを介して、すなわち有線ネットワーク、無線ネットワーク、またはそれらの組合せのいずれかを介して、コンピューティングシステム１３００にアクセスすることができる限り、ユーザーのコンピューティング端末を介して実行される遠隔的に供与されるコンピュータアプリケーションへのアクセスをユーザーに提供することができることを理解されたい。言い換えると、クラウドコンピューティングシステム１３００は、ユーザーが、クラウドコンピューティングシステム１３００によってプロビジョニングされる基となるハードウェア、オペレーティングシステム、およびコンピュータアプリケーションを使用し、ユーザーの選択したコンピュータアプリケーションをユーザーの端末を介してクラウドコンピューティングシステム１３００上で実行することを可能にする。
【０１０５】
いくつかの実施形態が、本明細書で具体的に示され、かつ／または記載されている。しかしながら、変更および変形は、上述の教示によってカバーされ、その精神および意図する範囲から逸脱することなく、添付の特許請求の範囲の範囲内であることが理解されるであろう。例えば、本明細書に提供された実施例は、ビデオゲームを対象としているが、検討されたシステムおよび方法は、他のインタラクティブビデオシステムに適用することができる。本明細書に提供された実施例は、主にビデオの配信を対象としているが、本明細書に記載されたシステムおよび方法は、オーディオフレームの生成およびオーディオストリームの配信に適用することができる。いくつかの実施形態では、オーディオおよびビデオストリームが、オーディオ‐ビデオシステムの一部として一緒に生成され、配信される。
【０１０６】
本明細書に記載の実施形態は、本発明の例証である。本発明のこれらの実施形態は、図を参照して記載されているので、本明細書に記載の方法およびまたは特定の構造の様々な変更または改造は、当業者に明らかになるであろう。本発明の教示に依存し、これらの教示が当技術分野を進歩させた全てのそのような変更、改造、または変形は、本発明の精神および範囲内であると考えられる。したがって、本明細書に提供された記述および図面は、限定的な意味で考えられるべきではなく、本発明は、本明細書に示された実施形態のみに何ら限定されないことが理解される。
【０１０７】
本明細書で言及するコンピューティングシステムは、集積回路、マイクロプロセッサ、パーソナルコンピュータ、サーバー、分散型コンピューティングシステム、通信デバイス、ネットワークデバイス、または同様のもの、およびそれらの様々な組合せを含むことができる。コンピューティングシステムはまた、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセス・メモリ（ＳＲＡＭ）、磁気媒体、光媒体、ナノメディア、ハードドライブ、コンパクトディスク、デジタル多用途ディスク（ＤＶＤ）、および／またはアナログもしくはデジタル情報をデータベースなどに記憶するために構成された他のデバイスのような揮発性および／または不揮発性メモリを含む。上述の論理の様々な実施例は、ハードウェア、ファームウェア、またはコンピュータ可読媒体に保存されたソフトウェア、またはそれらの組合せを含むことができる。コンピュータ可読媒体は、本明細書で使用する場合、紙を明確に除外する。本明細書に記載の方法のコンピュータ実装のステップは、コンピュータ可読媒体に記憶されて実行されるとコンピューティングシステムにステップを実行させる命令セットを含むことができる。
【０１０８】
プログラムソフトウェアからの命令に従って特定の機能を行うようにプログラムされたコンピューティングシステムは、それらの特定の機能を行う特別目的コンピューティングシステムである。それらの特定の機能を行う間に特別目的コンピューティングシステムによって操作されるデータは、コンピューティングシステムのバッファ内に少なくとも電気的に保存され、記憶されたデータへのそれぞれの改変によって、特別目的コンピューティングシステムを１つ状態から次の状態へ物理的に改変させる。本明細書に記載の論理は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体に記憶されたソフトウェアを含むことができる。この論理は、電子デバイス内に実装して特別目的コンピューティングシステムを生成することができる。
【０１０９】
本発明の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家電、ミニコンピュータ、メインフレームコンピュータおよび同様のものを含む様々なコンピュータシステム構成で実施することができる。本発明はまた、ネットワークを介してリンクされた遠隔処理デバイスによってタスクが行われる分散型コンピューティング環境で実施することもできる。
【０１１０】
上述の実施形態を念頭に置き、本発明がコンピュータシステムに記憶されたデータを伴う様々なコンピュータ実装動作を利用することができることを理解されたい。これらの動作は、物理的量の物理的操作を必要とするものである。本発明の一部を形成する本明細書に記載の動作のいずれも、有用なマシン動作である。本発明はまた、これらの動作を行うデバイスまたは装置に関連する。装置は、特別目的コンピュータのように、必要な目的のために特別に構成することができる。特別目的コンピュータとして定義されると、コンピュータはまた、特別目的の一部ではない他の処理、プログラム実行またはルーチンを行うことができ、同時に特別目的のために動作することもできる。あるいは、動作は、コンピュータメモリ、キャッシュに記憶された、またはネットワークを介して取得された１つ以上のコンピュータプログラムによって選択的に起動される、または構成された汎用コンピュータによって処理することができる。データがネットワークを介して取得されるとき、データは、例えばコンピューティングリソースのクラウドなどのネットワーク上の他のコンピュータによって処理することができる。
【０１１１】
本発明の実施形態はまた、データを１つの状態から別の状態に変換するマシンとして定義することができる。変換されたデータは、記憶装置に記憶され、プロセッサによって操作することができる。プロセッサは、このようにデータを１つのものから別のものに変換する。さらに、方法は、ネットワークを介して接続できる１つ以上のマシンまたはプロセッサによって処理することができる。各マシンは、データを１つの状態またはものから別の状態またはものに変換することができ、さらにデータを処理し、データを記憶装置に保存し、データをネットワークを介して送信し、結果を表示し、または結果を別のマシンに通信することができる。
【０１１２】
本発明はまた、非一時的コンピュータ可読媒体上のコンピュータ可読コードとして具現化することができる。非一時的コンピュータ可読媒体は、コンピュータシステムによって後に読み取ることができるデータを記憶できる任意のデータ記憶装置である。非一時的コンピュータ可読媒体の実施例は、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、リードオンリーメモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、および他の光学的および非光学的データ記憶デバイスを含む。非一時的コンピュータ可読媒体は、ネットワーク連結されたコンピュータシステムにわたって分散されたコンピュータ可読有形媒体を含むことができ、コンピュータ可読コードは、分散方式で記憶して実行することができる。
【０１１３】
方法の動作は特定の順番で説明したが、他のハウスキーピング動作を動作の間で行うことができる、または、動作は、若干異なる時間で起こるように調整することができる、もしくは方法動作の処理が所望の方法で行われる限り、処理に関連する様々な間隔で処理動作の発生を可能にするシステムに分散することができることを理解されたい。
【０１１４】
前述の本発明は、理解を明確にする目的のためにある程度詳細に説明してきたが、或る改変および変更を添付の特許請求の範囲内で実施できることは明らかであろう。したがって、本実施形態は、例証であって限定的なものではないと考えられるべきであり、本発明は、本明細書に与えられた詳細に限定されるものではなく、添付の特許請求の範囲および均等物内で変更することができる。
【図１】
2018023767.tif 000003
【図２】
2018023767.tif 000004
【図３】
2018023767.tif 000005
【図４】
2018023767.tif 000006
【図５】
2018023767.tif 000007
【図６】
2018023767.tif 000008
【図７】
2018023767.tif 000009
【図８】
2018023767.tif 000010
【図９】
2018023767.tif 000011
【図１０】
2018023767.tif 000012
【図１１】
2018023767.tif 000013
【図１２】
2018023767.tif 000014
【図１３】
2018023767.tif 000015