(57)【要約】【課題】ビデオゲームを実行およびレンダリングするためのモデルを提供する。【解決手段】第１のアプリケーションは、第１の期間、クラウドコンピューティングシステム上で実行される。第１の期間中の前記第１のアプリケーションの実行に関連付けられるユーザ入力信号が記録される。第２のアプリケーションは、第１の期間内の第２の期間中に実行される第１のアプリケーションの一部に対応するように生成される。第２のアプリケーションは、第２の期間中に実行される第１のアプリケーションのプログラム命令によって定義される。ミニアプリケーションは、第２の期間中の第１のアプリケーションの実行中に記録される第２のアプリケーションおよびユーザ入力信号を含むように生成される。【選択図】図２
2014130589.tif 000002
【特許請求の範囲】
【請求項１】
ミニアプリケーションを生成するための方法であって、
第１のアプリケーションをクラウドコンピューティングシステム上で一定期間実行することと、
前記一定期間中に前記第１のアプリケーションの実行と関連付けられるユーザ入力信号を記録することと、
前記一定期間中に実行された前記第１のアプリケーションの実行可能な命令および状態データを記録することと、
前記第２のアプリケーションが、前記一定期間の一部の期間中に記録された前記第１のアプリケーションの実行可能な命令および状態データにより定義される、前記一定期間の前記一部の期間中に実行された前記第１のアプリケーションの１つ以上の部分に対応するように第２のアプリケーションを生成することと、
前記一定の期間の前記一部の期間中に、前記第１のアプリケーションの実行中に記録された前記第２のアプリケーションおよび前記ユーザ入力信号を含むようにミニアプリケーションを生成することと、
を含む、方法。
【請求項２】
前記第１のアプリケーションのビデオストリームをクライアントコンピュータシステムに伝送することと、
ミニアプリケーション生成コントロールを前記第１のアプリケーションの前記ビデオストリーム内のオーバーレイ画像としてレンダリングすることと、
前記ミニアプリケーション生成コントロールの起動時に、一組のミニアプリケーション生成コントロールを前記ビデオストリーム内の１つ以上のオーバーレイ画像として伝送することと、
をさらに含む、請求項１に記載のミニアプリケーションを生成するための方法。
【請求項３】
前記一組のミニアプリケーション生成コントロールが、前記一定期間の前記一部を選択するためのミニアプリケーション生成バーを含む、請求項２に記載のミニアプリケーションを生成するための方法。
【請求項４】
前記一組のミニアプリケーション生成コントロールが、前記一定期間の前記一部の期間中に、前記第１のアプリケーションの実行中に記録された前記ユーザ入力信号に基づいて、前記第２のアプリケーションの自動実行を開始するためのレビューコントロールを含み、前記第２のアプリケーションの前記自動実行が、前記第２のアプリケーション自動実行のビデオストリームを前記クライアントコンピュータシステムに伝送することを含む、請求項２に記載のミニアプリケーションを生成するための方法。
【請求項５】
前記一組のミニアプリケーション生成コントロールが、前記生成されたミニアプリケーションの記憶を指定されたデータ記憶位置に導くための保存コントロールを含む、請求項２に記載のミニアプリケーションを生成するための方法。
【請求項６】
前記指定されたデータ記憶位置が、前記クラウドコンピューティングシステム内にある、請求項５に記載のミニアプリケーションを生成するための方法。
【請求項７】
前記指定されたデータ記憶位置が、前記クライアントコンピュータシステムを介して受信されたユニバーサルリソースロケータにより特定される、請求項６に記載のミニアプリケーションを生成するための方法。
【請求項８】
前記一組の生成コントロールが、ウェブサイト上の前記生成されたミニアプリケーションへのリンクの公開を指示するための公開コントロールを含む、請求項２に記載のミニアプリケーションを生成するための方法。
【請求項９】
前記ウェブサイトが、ソーシャルメディアウェブサイトである、請求項８に記載のミニアプリケーションを生成するための方法。
【請求項１０】
前記ウェブサイト内の前記リンクの起動が、前記一定期間の前記一部の期間中に、前記第１のアプリケーションの実行中に記録された前記ユーザ入力信号に基づいて、前記第２のアプリケーションの自動実行を開始し、前記第２のアプリケーションの前記自動実行が、第２のクライアントコンピュータシステムへの前記第２のアプリケーション自動実行のビデオストリームの伝送を含み、その伝送時に、前記ウェブサイトがレンダリングされる、請求項８に記載のミニアプリケーションを生成するための方法。
【請求項１１】
プレイコントロールを前記第２のクライアントコンピュータシステムに伝送された前記第２のアプリケーション自動実行の前記ビデオストリーム内のオーバーレイ画像として提供することをさらに含み、その伝送時に、前記ウェブサイトがレンダリングされ、前記プレイコントロールの起動が、前記第２のクライアントコンピュータシステムを介して受信された新たなユーザ入力信号に基づいて、前記第２のアプリケーションの実行を指示し、その受信時に、前記ウェブサイトがレンダリングされる、請求項１０に記載のミニアプリケーションを生成するための方法。
【請求項１２】
保存コントロールを前記第２のクライアントコンピュータシステムに伝送される前記ビデオストリーム内のオーバーレイ画像として提供して、前記第２のアプリケーションの実行中に記録された前記新たなユーザ入力信号の記憶を指示することをさらに含む、請求項１１に記載のミニアプリケーションを生成するための方法。
【請求項１３】
公開コントロールを前記第２のクライアントコンピュータシステムに伝送される前記ビデオストリーム内のオーバーレイ画像として提供して、前記新たなユーザ入力信号に基づいて、前記ミニアプリケーションへのリンクの公開を指示することをさらに含む、請求項１１に記載のミニアプリケーションを生成するための方法。
【請求項１４】
購入コントロールを前記第２のクライアントコンピュータシステムに伝送される前記ビデオストリーム内のオーバーレイ画像として提供して、前記クラウドコンピューティングシステムからの前記第１のアプリケーションの購入およびダウンロードを可能にすることをさらに含む、請求項１１に記載のミニアプリケーションを生成するための方法。
【請求項１５】
前記購入コントロールが、前記クラウドコンピューティングシステムからの前記第１のアプリケーションの特定の一部分の購入およびダウンロードを提供する、請求項１４に記載のミニアプリケーションを生成するための方法。
【請求項１６】
第１のアプリケーションのプログラム命令のサブセット、ならびに前記第１のアプリケーションの前記プログラム命令のサブセットの実行中に受信された一組のユーザ入力信号およびアプリケーション状態データとして、ミニアプリケーションを生成するように定義される、ミニアプリケーション生成モジュールと、
前記ミニアプリケーション内の前記一組のユーザ入力信号およびアプリケーション状態データに基づいて、起動時に前記第１のアプリケーションの前記プログラム命令のサブセットの自動実行を開始する前記ミニアプリケーションへのリンクの公開を提供するように定義される、ミニアプリケーション公開モジュールと、
新たな一組のユーザ入力信号に基づいて、前記第１のアプリケーションの前記プログラム命令のサブセットの実行を提供するように定義される、ミニアプリケーション実行モジュールと、
を備える、ミニアプリケーションシステム。
【請求項１７】
前記第１のアプリケーションが、クラウドコンピューティングシステムによってクライアントコンピューティングシステムにサービス提供される、請求項１６に記載のミニアプリケーションシステム。
【請求項１８】
前記ミニアプリケーション生成モジュール、前記ミニアプリケーション公開モジュール、および前記ミニアプリケーション実行モジュールが、前記クラウドコンピューティングシステムによって前記クライアントコンピューティングシステムにサービス提供される、請求項１７に記載のミニアプリケーションシステム。
【請求項１９】
前記ミニアプリケーション実行モジュールが、前記クラウドコンピューティングシステムによってサービス提供されるときに、前記第１のアプリケーションへの完全なアクセスの購入を提供するように定義される、請求項１８に記載のミニアプリケーションシステム。
【請求項２０】
前記ミニアプリケーション実行モジュールが、前記第１のアプリケーションの前記プログラム命令のサブセットの実行中に記録される前記新たな一組のユーザ入力信号の記憶を指示するように定義される、請求項１６に記載のミニアプリケーションシステム。
【請求項２１】
ミニアプリケーションを生成するためにプログラム命令をデータ記憶デバイスに記憶させるデータ記憶デバイスであって、
第１のアプリケーションをクラウドコンピューティングシステム上で一定期間実行するためのプログラム命令と、
前記一定期間中に前記第１のアプリケーションの実行に関連付けられるユーザ入力信号を記録するためのプログラム命令と、
前記一定期間中に実行される前記第１のアプリケーションの実行可能な命令および状態データを記録するためのプログラム命令と、
前記一定期間の一部の期間中に実行された前記第１のアプリケーションの１つ以上の部分に対応するように、前記一定期間の前記一部の期間中に記録される前記第１のアプリケーションの実行可能な命令および状態データにより定義される第２のアプリケーションを生成するためのプログラム命令と、
前記一定期間の前記一部の期間中の前記第１のアプリケーションの実行中に記録される前記第２のアプリケーションおよび前記ユーザ入力信号を含むように、ミニアプリケーションを生成するためのプログラム命令と、
を含む、データ記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
ビデオゲームを実行およびレンダリングするためのいくつかのモデルが存在している。
【背景技術】
【０００２】
最も単純なモデルにおいて、ゲームは、ゲームのプレイヤに対してローカルなコンピューティングデバイス上で実行およびレンダリングされる。別のモデルにおいて、ゲーム状態は、セントラルサーバで維持され、ビデオのレンダリングが行われるクライアントにコンピューティングネットワークを介して伝達される。このモデルは、複数プレイヤゲームによって一般に使用され、そこで、ゲーム状態は、コンピューティングネットワーク上でゲームの複数のプレイヤから受信される入力に依存する。第３のモデルにおいて、ゲーム状態は、ビデオストリームとしてコンピューティングネットワーク上でクライアントに送達するためのビデオもレンダリングするセントラルサーバにおいて維持される。
【発明の概要】
【課題を解決するための手段】
【０００３】
一実施形態において、ミニアプリケーション（ｍｉｎｉａｐｐ）を生成するための方法が開示される。本方法は、第１のアプリケーションをクラウドコンピューティングシステム上で一定期間実行することを含む。本方法は、一定期間中に第１のアプリケーションの実行と関連付けられるユーザ入力信号を記録することも含む。本方法は、一定期間中に実行された第１のアプリケーションの実行可能な命令および状態データを記録することも含む。本方法は、一定期間の一部の期間中に実行された第１のアプリケーションの１つ以上の部分に対応するように第２のアプリケーションを生成することも含む。第２のアプリケーションは、一定期間の一部の期間中に記録された第１のアプリケーションの実行可能な命令および状態データにより定義される。本方法は、一定期間の一部の期間中の第１のアプリケーションの実行中に記録された第２のアプリケーションおよびユーザ入力信号を含むようにミニアプリケーションを生成することをさらに含む。
一実施形態において、ミニアプリケーションシステムが開示される。ミニアプリケーションシステムは、第１のアプリケーションのプログラム命令のサブセット、ならびに第１のアプリケーションのプログラム命令のサブセットの実行中に受信された一組のユーザ入力信号およびアプリケーション状態データとして、ミニアプリケーションを生成するように定義される、ミニアプリケーション生成モジュールを含む。ミニアプリケーションシステムは、起動時に、ミニアプリケーション内の一組のユーザ入力信号およびアプリケーション状態データに基づいて、第１のアプリケーションのプログラム命令のサブセットの自動実行を開始するミニアプリケーションへのリンクの公開を提供するように定義される、ミニアプリケーション公開モジュールも含む。ミニアプリケーションシステムは、新たな一組のユーザ入力信号に基づいて、第１のアプリケーションのプログラム命令のサブセットの実行を提供するように定義される、ミニアプリケーション実行モジュールをさらに備える。
【０００４】
一実施形態において、ミニアプリケーションを生成するために、プログラム命令をその上に記憶するデータ記憶デバイスが開示される。データ記憶デバイスは、第１のアプリケーションをクラウドコンピューティングシステム上で一定期間実行するためのプログラム命令を含む。データ記憶デバイスは、一定期間中に第１のアプリケーションの実行と関連付けられるユーザ入力信号を記録するためのプログラム命令も含む。データ記憶デバイスは、一定期間中に実行された第１のアプリケーションの実行可能な命令および状態データを記録するためのプログラム命令も含む。データ記憶デバイスは、一定期間の一部の期間中に実行された第１のアプリケーションの１つ以上の部分に対応する第２のアプリケーションを生成するためのプログラム命令も含む。第２のアプリケーションは、一定期間の一部の期間中に記録された第１のアプリケーションの実行可能な命令および状態データにより定義される。データ記憶デバイスは、一定期間の一部の期間中の第１のアプリケーションの実行中に記録された第２のアプリケーションおよびユーザ入力信号を含むようにミニアプリケーションを生成するためのプログラム命令をさらに含む。
【０００５】
発明の他の態様は、一例として本発明を図示する添付の図面と併せて、以下の発明を実施するための形態からより明らかとなるであろう。
【図面の簡単な説明】
【０００６】
【図１】本発明の様々な実施形態による、ゲームシステムのブロック図である。
【図２】複数のビデオゲームにサービス提供するように構成されるビデオソースの実施形態のブロック図である。
【図３】本発明の様々な実施形態による、ゲームビデオ（ビデオフレーム）上のオーバーレイを示す。
【図４】本発明の様々な実施形態による、ユーザ入力をゲームコマンドにマッピングするために構成された入力マップの一部を示す。
【図５】本発明の様々な実施形態による、オーバーレイを使用する方法を示す。
【図６】本発明の一実施形態による、遠隔的にサービス提供されるコンピュータアプリケーションおよび遠隔的にサービス提供されるコンピュータアプリケーションのミニアプリケーションを生成および実行するためのクラウドコンピューティングシステムの図を示す。
【図７】本発明の一実施形態による、図２のビデオＤＥＰ２４５Ａと連動されるミニアプリケーションモジュールを示す。
【図８】ビデオゲームのビデオシーケンスを表示するユーザ端末表示を示す。
【図９】本発明の一実施形態による、ユーザのディスプレイ上に示され得る一組のミニアプリケーション生成ＧＵＩコントロールを含むミニアプリケーション生成モードの一例を示す。
【図１０】本発明の一実施形態による、レビューボタンのユーザ起動時に開始されるミニアプリケーションレビューモードを示す。
【図１１】本発明の一実施形態による、ユーザのディスプレイ上に示され得る一組のミニアプリケーション保存ＧＵＩコントロールの一例を示す。
【図１２】本発明の一実施形態による、ユーザのディスプレイ上に示され得る一組のミニアプリケーション公開ＧＵＩコントロールの一例を示す。
【図１３】本発明の一実施形態による、ユーザが選択されたウェブサイトのログイン認証情報を入力することができるデータフィールドを含む表示画像を示す。
【図１４】本発明の一実施形態による、ユーザが選択されたウェブサイトに無事にログインしたときに、ユーザのディスプレイ上でレンダリングされるミニアプリケーション公開表示画像を示す。
【図１５】本発明の一実施形態による、ユーザのミニアプリケーションをアイコンとしてその上に公開するユーザのソーシャルメディアウェブページの表示画像を示す。
【図１６】本発明の一実施形態による、第１のユーザの公開されたミニアプリケーションがアイコンとしてアクセス可能である第２のユーザのソーシャルメディアウェブページの表示画像を示す。
【図１７】本発明の一実施形態による、第１のユーザの記録されたユーザ入力信号に基づいて、第２のユーザのディスプレイ上で実行する第１のユーザの公開されたミニアプリケーションを示す。
【図１８】本発明の一実施形態による、第１のユーザにより生成されたミニアプリケーションをプレイする第２のユーザを示す。
【図１９】本発明の一実施形態による、ミニアプリケーションを生成するための方法のフローチャートを示す。
【図２０】本発明の一実施形態による、ミニアプリケーションシステムのブロック図を示す。
【発明を実施するための形態】
【０００７】
以下の説明において、本発明の完全な理解を提供するために多数の特定の詳細が記載される。しかしながら、本発明がこれらの特定の詳細の一部またはすべてを伴わずに実践され得ることは、当業者に明らかであろう。他の例において、周知のプロセス動作は、本発明を不必要に曖昧にしないように詳細に説明されていない。
【０００８】
コンピュータアプリケーションは、クラウドコンピューティングシステム上で実行する仮想マシン等の遠隔コンピューティングプラットフォームからサービス提供される。遠隔コンピューティングプラットフォーム上で実行するミニアプリケーションモジュールは、ネットワーク上でユーザに伝送されるコンピュータアプリケーションの表示フレーム内で、ミニアプリケーション関連のグラフィックユーザインターフェース要素および対応する機能を提供するように定義される。ミニアプリケーションモジュールは、コンピュータアプリケーションの実行履歴の一部がミニアプリケーションクリップとして保存され得るユーザ起動可能な要素を提供する。ミニアプリケーションモジュールは、ソーシャルメディアウェブサイト等のウェブサイトへのミニアプリケーションクリップのポスティングがさらに提供される。ミニアプリケーションクリップは、制限なしに、１）コンピュータアプリケーション実行履歴の一部の記録、および２）コンピュータアプリケーション実行履歴の記録された部分と関連付けられるコンピュータアプリケーション機能の一部のインデックス付けを含む。それが掲示されるウェブサイトを介したミニアプリケーションクリップの起動は、制限なしに、１）コンピュータアプリケーション実行履歴の記録された部分のビュー、２）コンピュータアプリケーションのインデックスの付いた部分の新たな実行、３）インデックスの付いたコンピュータアプリケーションの追加のミニアプリケーションクリップとしての新たな実行の記録、４）完全なコンピュータアプリケーションの購入を提供する表示コントロール、および５）ミニアプリケーションクリップ内で示されるものを超えるコンピュータアプリケーション機能の拡大部分の選択および購入を提供する表示コントロールを提供する。
【０００９】
図１は、本発明の様々な実施形態による、ゲームシステム１００のブロック図である。ゲームシステム１００は、１１０Ａ、１１０Ｂ等と別個に付番された１人以上のクライアント１１０に、例えば、ネットワーク１１５を介してビデオストリームを提供するように構成される。ゲームシステム１００は、典型的に、ビデオサーバシステム１２０および任意のゲームサーバ１２５を含む。ビデオサーバシステム１２０は、まだ定義されていないフォーマットを含む、多様な代替ビデオフォーマットでビデオストリームを提供するように構成され得る。さらに、ビデオストリームは、多様なフレームレートでユーザに提示するために構成されたビデオフレームを含み得る。典型的なフレームレートは、１秒当たり３０フレーム、１秒当たり６０フレーム、および１秒当たり１２０フレームであるが、本発明の代替実施形態において、より高いフレームレートまたはより低いフレームレートが含まれる。
【００１０】
クライアント１１０、すなわち、１１０Ａ、１１０Ｂ等は、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、携帯型ゲームデバイス等を含み得る。典型的には、クライアント１１０は、コードされたビデオストリームを受信し、ビデオストリームを復号化し、得られたビデオをユーザ、例えば、ゲームのプレイヤに提示するように構成される。コードされたビデオストリームを受信するプロセス、および／またはビデオストリームを復号化するプロセスは、典型的に、クライアント１１０の受信バッファ内に個別のビデオフレームを記憶することを含む。ビデオストリームは、クライアント１１０に不可欠なディスプレイ上、またはモニターもしくはテレビ等の別個のデバイス上のユーザに提示され得る。
【００１１】
クライアント１１０は、ネットワーク１１５を介してビデオストリームを受信するように構成される。ネットワーク１１５は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、広域ネットワーク、プライベートネットワーク等を含む、任意の種類の通信ネットワークであり得る。いくつかの実施形態において、ビデオストリームは、ＴＣＰ／ＩＰまたはＵＤＰ／ＩＰ等の標準プロトコルを介して通信される。あるいは、ビデオストリームは、企業専有標準を介して通信され得る。
【００１２】
クライアント１１０の典型的な例は、プロセッサ、非揮発性メモリ、ディスプレイ、復号論理、ネットワーク通信能力、および入力デバイスを含む、パーソナルコンピュータである。復号論理は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体上、すなわち、非一時的データ記憶デバイス上に記憶されたソフトウェアを含み得る。ビデオストリームを復号化（および符号化）するためのシステムは、当該技術分野で周知であり、使用される特定の符号化スキームによって異なる。
【００１３】
クライアント１１０により受信されるビデオストリーム（および任意にオーディオストリーム）は、ビデオサーバシステム１２０により生成および提供される。ビデオストリームは、ビデオフレームを含む（かつオーディオストリームは、オーディオフレームを含む）。ビデオフレームは、ユーザに表示される画像に有意義に貢献するように構成される（例えば、それらは、適切なデータ構造にピクセル情報を含む）。本明細書で使用される、用語「ビデオフレーム」は、視覚表示内のフレーム情報のレンダリングを介してユーザに示される画像に貢献するように、例えば、それをもたらすように構成される情報を主に含むフレームを指すために使用される。「ビデオフレーム」に関して本明細書に提供される本開示の大部分も「オーディオフレーム」に適用され得る。
【００１４】
クライアント１１０は、典型的には、ユーザから入力を受信するように構成される。これらの入力は、ビデオゲームの状態を変更するか、または他の方法でゲームプレイに作用するように構成されたゲームコマンドを含んでもよい。ゲームコマンドは、入力デバイスを使用して受信され得、かつ／またはクライアント１１０上で実行する命令をコンピューティングすることにより自動的に生成されてもよい。クライアント１１０の入力デバイスは、例えば、キーボード、ジョイスティック、ポインティングデバイス、力フィードバックデバイス、動作および／または位置感知デバイス、マウス、タッチ画面、神経インターフェース、カメラ、まだ開発されていない入力デバイス等を含んでもよい。受信されたゲームコマンドは、クライアント１１０からネットワーク１１５を介してビデオサーバシステム１２０および／またはゲームサーバ１２５に通信する。
【００１５】
ゲームサーバ１２５は、ビデオサーバシステム１２０とは異なるエンティティにより任意に操作され得る。例えば、ゲームサーバ１２５は、マルチプレイヤゲームのパブリッシャーにより操作されてもよい。この例において、ビデオサーバシステム１２０は、クライアントとしてゲームサーバ１２５により任意にビューされ、ゲームサーバ１２５の視点から、ゲームエンジンを実行するクライアントであるように見られるように任意に構成される。ビデオサーバシステム１２０とゲームサーバ１２５との間の通信は、ネットワーク１１５を介して任意に起こる。したがって、ゲームサーバ１２５は、ゲーム状態情報を複数のクライアントに送信するマルチプレイヤゲームサーバであり得、それらのうちの１つは、ビデオサーバシステム１２０である。
【００１６】
ビデオサーバシステム１２０は、ビデオソース１３０、Ｉ／Ｏ（入力／出力）デバイス１４５、プロセッサ１５０、および非一時的データストレージ１５５を含む。ビデオサーバシステム１２０は、１つのコンピューティングデバイスを含み得るか、または複数のコンピューティングデバイスの間に分散され得る。これらのコンピューティングデバイスは、ローカルエリアネットワーク等の通信システムを介して任意に接続される。
【００１７】
ビデオソース１３０は、ビデオストリーム、例えば、ストリーミングビデオまたは動画を形成する一連のビデオフレームを提供するように構成される。いくつかの実施形態において、ビデオソース１３０は、ビデオゲームエンジンおよびレンダリング論理を含む。ビデオゲームエンジンは、プレイヤからゲームコマンドを受信し、受信されたコマンドに基づいてビデオゲームの状態のコピーを維持するように構成される。このゲーム状態は、ゲーム環境内のオブジェクトの位置を含み、ユーザの視点を含んでもよい。ゲーム状態は、オブジェクトの特性、画像、色、および／またはテクスチャも含み得る。ゲーム状態は、典型的には、ゲームのルール、ならびに移動、回転、攻撃、焦点合わせ、対話、使用等のゲームコマンドに基づいて維持される。ゲームエンジンの一部は、任意にゲームサーバ１２５内に配置される。ゲームサーバ１２５は、地理的に分散するクライアントを使用して、複数のプレイヤから受信されたゲームコマンドに基づいて、ゲームの状態のコピーを維持し得る。これらの場合において、ゲーム状態は、ゲームサーバ１２５によりビデオソース１３０に提供され、ゲーム状態のコピーが記憶され、レンダリングが行われる。ゲームサーバ１２５は、クライアント１１０からネットワーク１１５を介して直接ゲームコマンドを受信し得、かつ／またはビデオサーバシステム１２０を介してゲームコマンドを受信し得る。
【００１８】
ビデオソース１３０は、レンダリング論理、例えば、ハードウェア、ファームウェア、および／または非一時的データストレージ１５５等のコンピュータ可読媒体上に記憶されるソフトウェアを含む。このレンダリング論理は、ゲーム状態に基づいてビデオストリームのビデオフレームを形成するように構成される。レンダリング論理のすべてまたは一部は、グラフィックス処理ユニット（ＧＰＵ）内に任意に配置される。レンダリング論理は、典型的に、オブジェクト間の三次元空間関係を決定するため、かつ／またはゲーム状態および視点に基づいて、適切なテクスチャを適用するために構成された処理段階を含む。レンダリング論理は、次に通常、クライアント１１０への通信前に符号化される元ビデオを生成する。符号化プロセスは、遠隔デバイス上のデコーダに送達するために任意にパッケージ化されたビデオストリームを生成する。符号化プロセスは、本質的に任意の符号化方法を使用して実践され得ることを理解すべきである。
【００１９】
ビデオストリームは、フレームサイズおよびフレームレートにより特徴付けられる。典型的なフレームサイズは、８００ｘ６００、１２８０ｘ７２０（例えば、７２０ｐ）、１０２４ｘ７６８を含むが、任意の他のフレームサイズが使用されてもよい。フレームレートは、１秒当たりのビデオフレームの数である。ビデオストリームは、異なる種類のビデオフレームを含んでもよい。本明細書で使用される、用語「フレームサイズ」は、フレーム内のピクセル数を指すことを意味する。用語「フレームデータサイズ」は、フレームを記憶するために必要なバイト数を指すために使用される。
【００２０】
ビデオソース１３０は、他のビデオ上に配置されるように構成されたオーバーレイを提供するために任意に構成される。例えば、これらのオーバーレイは、コマンドインターフェース、ログイン命令、ゲームプレイヤへのメッセージ、他のゲームプレイヤの画像、他のゲームプレイヤのビデオフィード（例えば、ウェブカムビデオ）を含んでもよい。クライアント１１０の少なくとも１つがタッチ画面インターフェースを含む例示の一実施形態において、オーバーレイは、仮想キーボード、ジョイスティック、タッチパッド等を含んでもよい。また、例示の一実施形態において、プレイヤの声のオーバーレイは、オーディオストリーム上にオーバーレイされる。ビデオソース１３０は、１つ以上のオーディオソースを含んでもよい。
【００２１】
様々な実施形態において、Ｉ／Ｏデバイス１４５は、ビデオサーバシステム１２０が、ビデオ、コマンド、情報の要求、ゲーム状態、クライアント識別、プレイヤ識別、ゲームコマンド、セキュリティ情報、オーディオ等の情報を送信および／または受信するように構成され得る。Ｉ／Ｏデバイス１４５は、ネットワークカードまたはモデム等の通信ハードウェアを含み得る。Ｉ／Ｏデバイス１４５は、ゲームサーバ１２５、ネットワーク１１５、および／またはクライアント１１０と通信するように構成される。
【００２２】
プロセッサ１５０は、本明細書で論じられるビデオサーバシステム１２０の様々な構成要素内に含まれる論理、例えば、ソフトウェアを実行するように構成される。例えば、プロセッサ１５０は、ビデオソース１３０、ゲームサーバ１２５、および／またはクライアント限定子１６０の機能を実行するために、ソフトウェア命令によりプログラム化され得る。ビデオサーバシステム１２０は、プロセッサ１５０の複数の例を任意に含む。プロセッサ１５０は、ビデオサーバシステム１２０により受信されるコマンドを実行するため、または本明細書で論じられるゲームシステム１００の様々な要素の操作を調整するために、ソフトウェア命令によりプログラム化されてもよい。プロセッサ１５０は、１つ以上のハードウェアデバイスを含んでもよい。プロセッサ１５０は、電子プロセッサ、すなわち、コンピュータプロセッサであることを理解されたい。
【００２３】
ビデオサーバシステム１２０は、クライアント１１０の能力を遠隔で決定するように構成される、クライアント限定子１６０を任意に含む。これらの能力は、指定のクライアント１１０自体の能力、および指定のクライアント１１０とビデオサーバシステム１２０との間の１つ以上の通信チャネルの能力の両方を含み得る。例えば、クライアント限定子１６０は、ネットワーク１１５を介して通信チャネルをテストするように構成され得る。
【００２４】
図２は、複数のビデオゲームにサービス提供するように構成されるビデオソース１３０の実施形態のブロック図である。複数のビデオゲームは、同一のビデオゲームの複数の例、および／または異なるビデオゲームの例を含み得る。ビデオゲームは、任意に多人数参加型のゲームである。例えば、ビデオゲームの１つ以上のゲーム状態は、それぞれ複数のクライアント１１０から受信された入力に基づいて、ゲームサーバ１２５の１つ以上の例により維持され得る。
【００２５】
ビデオゲームは、個別に２１０Ａ、２１０Ｂ、２１０Ｃ等とラベル付けされる、ゲーム論理２１０の異なる例を使用して実行される。ゲーム論理２１０は、ゲーム状態を使用して、ゲームプレイヤに提示されるように構成されたビデオストリームにレンダリングされ得るゲーム環境を決定するように構成される。いくつかの実施形態において、ゲーム環境は、ゲームオブジェクト、アバター、オブジェクトの位置、それらの形状、テクスチャ、およびそれらの間の空間関係等を含む、三次元仮想環境である。ゲーム環境は、頂点データ、変換データ、およびテクスチャデータ等を含む。
【００２６】
レンダリングは、典型的に、特定のゲームプレイヤと関連付けられた１つ以上の視点に基づく。ビデオソース１３０は、ゲーム論理２１０の複数の例を含み得る。ゲーム論理２１０は、任意にゲームサーバ１２５のクライアントであり得、ネットワーク１１５を介してゲームサーバ１２５と通信するように構成されてもよい。
【００２７】
ゲーム論理２１０は、１つ以上のクライアント１１０からゲームコマンドを受信し、一組のゲームルールにより受信されたコマンドを処理するように構成される。これらのルールは、例えば、アバターがどのように他のアバターと対話するか、またはゲームオブジェクトにおいて、アバターの動作、ゲームインスタンスの管理等に及ぶ。ゲーム論理２１０は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体上に記憶されるソフトウェアを含む。
【００２８】
ゲーム論理２１０の各インスタンスは、別個のコンピューティングデバイス上に配置され得るか、またはゲーム論理２１０のいくつかのインスタンスは、同一のコンピューティングデバイス上に配置され得るか、またはゲーム論理２１０の単一のインスタンスは、複数のコンピューティングデバイスにわたって配置され得る。ゲームインスタンスは、ユーザが現在経験しているゲーム環境の要件に応じて使用される、コンピューティングデバイスの数および／または識別を動的に変更することができる。同一のコンピューティングデバイス上に配置されたゲーム論理２１０のインスタンスは、別個の仮想マシンまたは仮想Ｉ／Ｏシェル内で任意に実行される。いくつかの実施形態において、ゲーム論理２１０の異なるインスタンスは、ゲームコマンドおよび／またはゲーム状態情報を直接互いに通信するように構成され、例えば、必ずしもゲームサーバ１２５を介して通信するとは限らない。
【００２９】
ゲーム論理２１０は、オペレーティングシステム（ＯＳ）２１５の上で実行し得る。オペレーティングシステム２１５は、Ｗｉｎｄｏｗｓ（商標）、Ｌｉｎｕｘ、Ｕｎｉｘ、Ｍａｃ  ＯＳ（商標）、Ｓｏｌａｒｉｓ（商標）等を含んでもよい。いくつかの実施形態において、オペレーティングシステム２１５およびゲーム論理２１０は、ＥＳＸ、Ｈｙｐｅｒ−Ｖ等の１つ以上の仮想マシンプラットフォーム上で実行し得る。これらの実施形態において、ゲーム論理２１０の１つ以上のインスタンスは、仮想マシン内で実行され得る。また、ゲーム論理２１０の複数のインスタンスは、オペレーティングシステム２１０の同一インスタンス上で実行し得る。例えば、図２は、いずれも同一のオペレーティングシステム２１５上で実行する、ゲーム論理２１０Ａおよびゲーム論理２１０Ｂを示す。同一のオペレーティングシステム２１５上で実行するゲーム論理２１０の複数のインスタンスは、同一のビデオゲームをプレイするために構成されてもされなくてもよい。
【００３０】
いくつかの実施形態において、ゲーム論理２１０により決定されるゲーム環境は、任意の仮想３Ｄビデオドライバ２２０に移動する。仮想３Ｄビデオドライバ２２０は、ゲーム論理２１０の視点から、グラフィックス処理ユニットを制御する非仮想３Ｄビデオドライバとして出現するように構成される。ゲーム論理２１０の各インスタンスは、仮想３Ｄビデオドライバ２２０のそれ自体のインスタンスと関連付けられ得るか、または仮想３Ｄビデオドライバ２２０は、ゲーム論理２１０の２つ以上のインスタンスにより共有され得る。
【００３１】
仮想３Ｄビデオドライバ２２０は、受信したゲーム環境を（非仮想）３Ｄドライバ２３０に移動するようにさらに構成される。任意に、３Ｄドライバ２３０へのゲーム環境の送達は、仮想３Ｄビデオドライバ２２０の様々なインスタンスにより調整される。例えば、送達は、３Ｄドライバ２３０が、１つ（または最小数の）仮想３Ｄビデオドライバ２２０からゲーム環境を一度に受信するように調整され得る。いくつかの実施形態において、仮想３Ｄビデオドライバ２２０のそれぞれは、３Ｄドライバ２３０に対して別個のプロセスおよび別個のビデオデータのソースであるように見えるように構成される。このように、３Ｄドライバ２３０は、どのビデオデータがレンダリング後にどのビデオフレームをもたらすかを追跡するように構成される。
【００３２】
３Ｄドライバ２３０により受信されるビデオデータは、元ビデオフレームにレンダリングするために、グラフィックス処理ユニット（ＧＰＵ）２３５に移動する。グラフィックス処理ユニット２３５を任意に使用して、複数のビデオストリームを並列にレンダリングする。ビデオストリームの並列生成は、これらのストリームの生成を同時に含む。しかしながら、ビデオストリームの並列生成は、必ずしもグラフィックス処理ユニット２３５内で同時に個別のフレームの処理を含むとは限らない。例えば、いくつかの実施形態において、３Ｄドライバ２３０は、代替として様々なメンバーのゲーム論理２１０により生成されたビデオデータをグラフィックス処理ユニット２３５に移動させる。ゲーム論理２１０Ａにより生成されたデータを使用して、ビデオフレームを作製し、後次にゲーム論理２１０Ｂにより生成されたデータを使用して、ビデオフレーム等を作製する。この場合、ビデオストリームが並列に生成される一方で、個別のフレームが連続して生成される。
【００３３】
仮想３Ｄビデオドライバ２２０は、３Ｄドライバ２３０からレンダリングされた元ビデオフレームの移動を管理するように構成され得る。例えば、仮想３Ｄビデオドライバ２２０を使用して、３Ｄドライバ２３０のコントロールから共有メモリ２４０へのビデオフレームの移動を調整し得る。レンダリングに続いて、ビデオフレームは、グラフィックス処理ユニット２３５のメモリ内、または３Ｄドライバ２３０により管理されるメモリ内にある。いずれかの場合において、それらは３Ｄドライバ２３０のコントロール下にある。仮想３Ｄビデオドライバ２２０は、３Ｄドライバ２３０を往復するビデオデータおよびフレームの通信を管理するため、いくつかの実施形態において、それらは特定のビデオ動的符号化パイプライン（ＤＥＰ）２４５と関連付けられた共有メモリ２４０の一部内にビデオフレームを置くことができる。ビデオＤＥＰ２４５は、ビデオＤＥＰ２４５Ａ、ＤＥＰ２４５Ｂ、ＤＥＰ２４５Ｃ等として個別に識別される。いくつかの実施形態において、各ビデオＤＥＰ２４５は、共有メモリ２４０内の特定のメモリ位置に割り当てられ、それらのメモリ位置からビデオデータを検索するように構成される。
【００３４】
共有メモリ２４０は、ランダムアクセスメモリ（ＲＡＭ）またはビデオデータの効率的な読み出しおよび書き込みのために構成された類似のメモリを含む。共有メモリ２４０は、複数の異なるビデオＤＥＰ２４５のビデオデータを記憶するように構成される。異なるビデオＤＥＰ２４５のビデオデータは任意に、共有メモリ２４０内で同時に記憶される。共有メモリ２４０は、単一のハードウェアデバイスで構成され得るか、または複数のデバイスを含んでもよい。
【００３５】
ビデオＤＥＰ２４５は、それぞれがグラフィックス処理ユニット２３５を使用してレンダリングされたビデオデータを符号化するように構成される、動的に割り当てられた符号化パイプラインである。ビデオＤＥＰ２４５の各メンバーは、ビデオＤＥＰ２４５がセットアップされるときに特定されるビデオフォーマットに符号化するように構成される。このフォーマット仕様は、典型的に、クライアント１１０の１つの必要性、および／またはビデオサーバシステム１２０とクライアント１１０との間の通信パスの能力に基づく。ビデオＤＥＰ２４５は任意に、クライアント１１０の１つからの要求に応答して動的にセットアップされる。ビデオＤＥＰ２４５のメンバーは任意に、複数の符号化スキームを使用するように構成され得る。
【００３６】
各ビデオＤＥＰ２４５は、共有メモリ２４０からビデオデータを取り込み、このビデオデータをビデオＤＥＰ２４５のメモリに伝送するように構成された取り込み装置２４７を含む。各ビデオＤＥＰ２４５は任意に、例えば、ＲＧＢからＹＵＶへの色空間変換、および／またはビデオフレームの解像度を増減させるスケーリング操作を行うように構成されたプリプロセッサ（ＰＲＥ）２５０を含む。プリプロセッサ２５０は、グラフィックス処理ユニット２３５の出力が、ＹＵＶ色空間またはいくつかの他の所望の色空間内にある実施形態においてオプションである。複数のプリプロセッサ２５０は、異なるサイズのビデオフレームを有する複数のビデオストリームを生成するように構成される、ビデオＤＥＰ２４５内に含まれてもよい。各ビデオＤＥＰ２４５は、少なくとも１つのエンコーダ（ＥＮＣ）２５５を含む。図２の例により、エンコーダ２５５は、エンコーダ２５５Ａ、エンコーダ２５５Ｂ等として個別に識別される。各エンコーダ２５５は、特定のコーデック、ならびに任意に特定の色深度および／またはフレームサイズによりビデオデータを符号化するように構成される。
【００３７】
いくつかの実施形態において、ビデオＤＥＰ２４５は、２つ以上の異なるビデオストリームを同時に生成するために、２つ以上の異なるエンコーダを使用するように構成される。これらのビデオストリームは、グラフィックス処理ユニット２５５によりレンダリングされる同一のゲーム環境に基づき、したがって、本質的に（オーバーレイの可能性を除いて）同一の材料を含み、異なる場所に送信され得る。例えば、ビデオストリームの１つは、クライアント１１０Ａに送信され得るが、その他はクライアント１１０Ｂに送信される。あるいは、ビデオストリームの１つは、クライアント１１０Ａに送信され得、その他は第３者がビデオを観ることができるウェブサイトに送信される。このウェブサイトは任意に、ソーシャルネットワーキングサイトまたはゲームプレイヤのサイトの一部である。２つの異なるビデオストリームは、フレームレート、符号化タイプ、フレームサイズ、色深度等が異なり得る。例えば、ソーシャルネットワーキングウェブサイトに送達されるビデオストリームは、クライアント１１０Ａを使用してゲームをプレイしているゲームプレイヤに送達されるビデオストリームよりはるかに低質であり得る。第２のビデオストリームは、ゲームをプレイしているゲームプレイヤ、または単にゲームプレイを観察している人々に送られてもよい。ビデオストリームは、複数の場所に任意に送られる。
【００３８】
ビデオＤＥＰ２４５Ａは、１つ以上のポストプロセッサ（ポスト）２６０を任意に含み得る。ポストプロセッサ２６０の個別の例は、２６０Ａおよび２６０Ｂとラベル付けされる。ポストプロセッサ２６０は、公有または私有ネットワークプロトコルによるネットワーク上の通信に適切なフォーマットで、符号化されたビデオフレームを容器内にパッケージ化するように構成される。例えば、Ａｄｏｂｅ  ＲＴＭＰ等の一部のプロトコルは、後処理を必要とするが、Ｈ．２６４  Ａｎｎｅｘ  Ｂ等の他のビデオ標準は、後処理を必要としない。ポストプロセッサ２６０のそれぞれは、エンコーダ２５５の特定メンバーと関連付けられ得るか、またはいくつかのポストプロセッサ２６０は、エンコーダ２５５の１つのメンバーから符号化されたビデオフレームを受信するように構成され得る。
【００３９】
ポストプロセッサ２６０の出力は、クライアント１１０の１つ以上に送達するためのＩ／Ｏデバイス１４５に送られる。本明細書で論じられるビデオＤＥＰ２４５の要素は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体上に記憶されるソフトウェアを含む。例えば、ビデオＤＥＰ２４５のそれぞれは、メモリにロードされ、電子プロセッサを使用して実行する一組のソフトウェアを表し得る。
【００４０】
ビデオソース１３０の操作は、典型的に、コントローラ２６５により管理される。コントローラ２６５は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体上に記憶されるソフトウェアを含む。例えば、コントローラ２６５は、メモリ内に記憶され、マイクロプロセッサを使用して実行されるソフトウェアを含んでもよい。
【００４１】
図３は、本発明の様々な実施形態による、ゲームビデオ（ビデオフレーム）上のオーバーレイを示す。３つのオーバーレイ３１０Ａ、３１０Ｂ、および３１０Ｃ（集約的にオーバーレイ３１０として識別される）は、ビデオゲームにより生成されるビデオに適用されている。これらのオーバーレイ３１０は、単一のオーバーレイとして、またはいくつかの別個のオーバーレイとして適用され得る。
【００４２】
例示の一実施形態において、オーバーレイ３１０のそれぞれは、その中のテキストにより示されるように、異なるゲームコントロール入力を表す。オーバーレイ３１０Ａは、キャリッジリターンを表し、オーバーレイ３１０Ｂは、エスケープキーを表し、オーバーレイ３１０Ｃは、タブキーを表す。当然のことながら、他の実施形態において、オーバーレイ８１０は、コントローラコマンドを識別し得る。例えば、オーバーレイ８１０Ａ、８１０Ｂ、および８１０Ｃは、対応する記述的アクション用語とともに、異なるゲームコントローラアクション（例えば、ボタンのプレス、スティックの移動、傾斜方向、シェイク等）のアイコンを示し得る。いくつかの実施形態において、これらのオーバーレイ３１０は、ビデオフレームの特定領域と関連付けられ、これらの特定領域は、表されるゲームコントロール入力にマッピングされる。例えば、オーバーレイ３１０Ｃにより占領される画像の領域は、この領域をクリックするか、または他の方法で選択を行うことが、タブキーストロークとして解釈されるように、タブキーにマッピングされる。選択は、ジョイスティックまたはマウス等のポインティングデバイスを使用することによるか、またはタッチセンサー式スクリーン上のこの領域をタッチすることにより達成され得る。
【００４３】
図３は、ゲームメニューを表すオーバーレイ３２０をさらに含み、ゲームルームまたはゲーム実行の他の態様を管理するために使用され得る。オーバーレイ３２０は、異なるゲームコマンド（入力）にマップされる複数の活動領域を含む。例えば、オーバーレイ３２０内で「検索（ｓｅａｒｃｈ）」という語により占領されるエリアは検索コマンドにマッピングされ、「参加（ｊｏｉｎ）」という語により占領されるエリアはゲームルームに参加するコマンドにマッピングされる。
【００４４】
図３は、ゲームプレイヤの画像を含むオーバーレイ３３０をさらに含む。オーバーレイ３３０は、別のゲームプレイヤの静的または実時間画像であり得る。例えば、図３に示されるビデオフレームがクライアント１１０Ａに送信される場合、次にオーバーレイ３３０は、クライアント１１０Ｂのプレイヤの実時間ビデオフレームを含み得る。オーバーレイ３３０は、あるいは、別のプレイヤの視点からのビデオゲームのビュー、同一プレイヤの第２の視点からのビュー、またはいくつかの実生活イベントのビューを含んでもよい。一例において、オーバーレイ３３０は、第１の視点を使用して基礎となる画像を生成した、同一プレイヤの第２の視点に基づくビデオフレームを含む。この第２の視点は、第２のビデオＤＥＰ２４５を使用して生成され得る。ビデオデータ上に配置され得るオーバーレイの数、形状、サイズ、および特徴は、広く異なり得る。オーバーレイは、ゲームコマンドにマッピングされてもされなくてもよい。オーバーレイは、サーバサイドおよび／またはクライアントサイドのいずれかに適用され得る。いくつかの実施形態は、サーバサイドおよびクライアントサイドの両方に適用されたオーバーレイを含む。
【００４５】
ゲームコマンドへのユーザ入力のマッピングは、クライアント１１０がタッチ画面またはポインティングデバイスを含むアプリケーションに限定されない。特定のゲームコマンドへのユーザ入力のマッピングは、クライアント１１０またはビデオサーバシステム１２０において起こり得る。例えば、Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，Ｉｎｃ．からのｉＰａｄ（登録商標）は、そのスクリーンのタッチ、移動、およびタッチの組み合わせを特定のコマンドに変換するように構成される。ｉＰａｄ（登録商標）およびｉＰｈｏｎｅ（登録商標）は、デバイス自体の移動を特定のコマンドに変換するようにも構成される。しかしながら、他のタイプのクライアント１１０は、マッピングがビデオサーバシステム１２０において起こり得る、これらの能力を有しなくてもよい。
【００４６】
ユーザ入力のゲームコマンドへのマッピングは、任意に、ルックアップテーブルまたは他のタイプの入力マッピングを使用して行われる。図４は、本発明の様々な実施形態による、ユーザ入力をゲームコマンドにマッピングするために構成された入力マップ１０１０の一部を示す。コマンドマッピングのための入力マップ１０１０は、図４に示されるより多いか、または少ないエントリを含み得ることを理解されたい。
【００４７】
入力マップ１０１０に示される第１のマッピングは、「Ｄ」〜「Ｋ」の文字マップに対する指向文字である。このタイプのマッピングは、例として、それぞれがそれら独自のキーのサブセットを使用する、数人のプレイヤがキーボードを共有するように構成されたゲームにおいて有用であり得る。かかるゲームが地理的に分散したゲームプレイヤによりプレイされるとき、各プレイヤは、同一のキーを使用し得るが、プレイヤの入力の１つは、キーボードの異なる部分にマッピングされる。
【００４８】
入力マップ１０１０に示される第２のマッピングは、スクリーンエリアをキーにマッピングすることを含む。具体的に、（１００、２００）および（４００、５００）において角を持つ長方形は、Ｆ１機能キーにマッピングされる。座標は、画像、ウィンドウ、またはスクリーン画素であり得る。このタイプのマッピングは、タッチスクリーンまたはポインティングデバイスが入力として使用されるときに有用である。このタイプのマッピングは、オーバーレイ内の画像を特定のゲームコマンドにマップするために使用され得る。このタイプのマッピングは、スクリーン上の指もしくはカーソルの移動、またはタッチスクリーンがタッチされたポイントの数にも依存し得る。
【００４９】
入力マップ１０１０に示される第３のタイプのマッピングは、コントローラボタンをキーにマッピングすることを含む。具体的には、「赤色ボタン」は「スペースバー」にマッピングされる。このタイプのマッピングは、ゲームコントローラ入力を特定のゲームコマンドにマップするために使用され得る。本発明のいくつかの実施形態において、ゲームコントローラ、およびその任意の機能（例えば、ボタン、スティック、傾斜、シェイク等）は、対応するゲームコマンドにマッピングされ得ることを理解されたい。
【００５０】
入力マップ１０１０に示される第４のタイプのマッピングは、入力デバイスの動作（「右傾斜」）をキーにマッピングすることを含む。このタイプのマッピングは、ジョイスティック、ｉＰｈｏｎｅ（登録商標）、ｉＰａｄ（登録商標）、Ｎｉｎｔｅｎｄｏ  Ｗｉｉ（登録商標）、または動作もしくは位置検知能力を持つ他のタイプのクライアントとともに使用され得る。
【００５１】
入力マップ１０１０に示される第５のタイプのマッピングは、カメラ等の外部デバイスにより検出されるオブジェクトの動作をキー「Ａ」にマッピングすることを含む。このタイプのマッピングは、ラジオまたはビデオ動作検出システムを含むクライアント１１０内で任意に使用される。このタイプのマッピングを使用することにより、キーボードを使用してプレイされるように設計されたゲームを、Ｍｉｃｒｏｓｏｆｔ社のＫｉｎｅｃｔ（登録商標）等の新たなタイプの入力デバイスを使用してプレイすることを可能にする。
【００５２】
第６のタイプのマッピングは、動的であってもよい。例えば、タッチスクリーン上の指の動作がジョイスティックの動作にマッピングされる実施形態において、指が最初にスクリーンに触れた場所は、ジョイスティックの「中心」位置に動的にマッピングされ得る。第１のタッチ位置の真上、下、右、左等のスクリーン位置は、それぞれジョイスティック位置の上、下、左、右等にマッピングされる。このように、ジョイスティックの動作は、最初に指をスクリーン上に置き、次にその指をいくつかの方向に摺動することにより入力され得る。動的マッピングは、スクリーンへのマルチフィンガータッチをも含み得る。例えば、スクリーンの第１のポイント上のタッチは、第２のタッチをゲームコマンドに変換するために使用されるマッピングの位置および方向を決定することができる。
【００５３】
図５は、本発明の様々な実施形態による、オーバーレイを使用する方法を示す。オーバーレイは、オーディオまたはビデオであり得る。図５の方法において、ビデオフレームは、グラフィックス処理ユニット２３５を使用して生成され、オーバーレイは、符号化する前にこのビデオフレームに追加される。図５に示される方法操作は、任意に、いくつかのゲーム論理２１０、いくつかのビデオＤＥＰ２４５、および／またはいくつかのオーディオＤＥＰ２７０を用いて、並列に行われ得る。
【００５４】
具体的に、生成ステップ１１１０において、ゲーム環境は、ネットワーク１１５およびクライアント１１０を介して１人以上のゲームプレイヤから受信されるゲームルールおよびゲームコマンドに基づいて生成される。例えば、クライアント１１０Ａでのゲームプレイヤおよびクライアント１１０Ｂでのゲームプレイヤはそれぞれ、ゲーム環境が生成されるゲーム状態を更新するために使用されるゲームコマンドを提供し得る。生成ステップ１１１０は、図４に関して論じられるように、状態を受信するステップ５１５および３Ｄデータを決定するステップ５２０を含んでもよい。いくつかの実施形態において、生成ステップ１１１０は、ゲーム内のイベント、ゲームルール、および／または受信されたゲームコマンドに基づいてオーディオデータを生成することを含む。
【００５５】
任意のレンダリングステップ１１２０において、生成ステップ１１１０において生成されたゲーム環境は、グラフィカル処理ユニット２３５を使用してレンダリングされる。レンダリングステップ１１２０は、図４に関して論じられるレンダリングステップ５２５の一実施形態である。レンダリングステップ１１２０の結果がビデオフレームである。レンダリングステップ１１２０は、生成ステップ１１１０の結果が、オーディオデータのみを含み、かつ／または３Ｄゲーム環境を含まない実施形態においてオプションである。
【００５６】
提供ステップ１１３０において、レンダリングステップ１１２０で生成されたビデオフレームおよび／または生成ステップ１１１０で生成されたオーディオデータは、ビデオＤＥＰ２４５Ａおよび／またはオーディオＤＥＰ２７０Ａ等の１つ以上の符号化パイプラインに提供される。例えば、ビデオフレームは、ビデオＤＥＰ２４５Ａに提供され得るが、オーディオフレームは、オーディオＤＥＰ２７０Ａに提供される。提供ステップ１１３０は、図４に関して論じられるように伝送ステップ５２７の一実施形態である。
【００５７】
オーバーレイを追加するステップ１１４０において、ビデオオーバーレイは、提供ステップ１１３０で提供されるビデオフレームに追加され、かつ／またはオーディオオーバーレイは、提供ステップ１１３０で提供されるオーディオデータに追加される。オーバーレイを追加するステップ１１４０は、典型的に、図２に関して論じられるように、オーバーレイ論理２９０および／またはオーバーレイ論理２９５を使用して行われる。複数のビデオオーバーレイおよび複数のオーディオオーバーレイは、オーバーレイを追加するステップ１１４０において任意に追加される。オーディオオーバーレイは、クライアント１１０の１つ以上からパケットとしてネットワーク１１５を介して受信されたオーディオデータを任意に含む。例えば、オーディオオーバーレイは、複数のクライアント１１０から受信されるゲームプレイヤの音声データを含み得る。
【００５８】
いくつかの実施形態において、ビデオソース１３０は、多くのクライアント１１０からオーディオデータを受信し、オーバーレイを追加するステップ１１４０は、どのオーディオデータが特定のオーディオオーバーレイにおいて使用されるべきかを決定することを含む。例えば、１０人のゲームプレイヤがビデオソース１３０を使用してもよいが、これらのプレイヤのうち２人または３人の音声データのみがオーディオオーバーレイに含まれ得る。どのオーディオデータをオーバーレイに含めるかの決定は、ゲームプレイヤ間の社会的関係に任意に基づく。例えば、１人のゲームプレイヤは、どの音声データ、すなわち誰の音声データを受信したいかを選択してもよい。社会的関係は、同一のバトルグラウンドもしくはゲームインスタンス内に存在し、かつ／または特に同一のゲーム環境内で互いの近くに位置するアバターを有する、組合、団体のメンバーシップを含み得る。いくつかの実施形態において、オーディオデータの音量は、２つのアバター間のゲーム内距離に応答して調整される。
【００５９】
符号化ステップ１１５０において、ビデオフレームおよび／またはオーディオデータ、ならびに任意のオーバーレイが符号化される。これは、エンコーダ２５５および／またはオーディオエンコーダ２８０を使用して達成され得る。符号化ステップ１１５０は、符号化ステップ５３５の一実施形態である。符号化ステップ１１５０は、オーバーレイを追加するステップ１１５０の前後に行われ得る。
【００６０】
送達ステップ１１６０において、符号化ステップ１１５０で符号化されたビデオフレームおよび／またはオーディオデータは、ネットワーク１１５を介してクライアント１１０の１つに提供される。ビデオフレームおよび／またはオーディオデータは、複数の位置に任意に提供される。例えば、同一のデータは、複数のゲームプレイヤに提供され得る。送達ステップ１１６０は、図４に関して論じられる提供ステップ５４５の一実施形態である。
【００６１】
オプションのマップステップ１１７０において、オーバーレイを追加するステップ１１４０で適用されたビデオオーバーレイの一部は、ゲームコマンドにマッピングされる。例えば、ビデオオーバーレイが追加されたビデオフレームの領域は、特定のゲームコマンドへのマッピングとして、入力マップ１０１０内で設定され得る。オーバーレイは、ディスプレイまたはビデオフレームの複数の領域に適用され得る。各領域は、異なるゲームコマンドに任意にマッピングされる。入力マップ１０１０は、ビデオサーバシステム１２０またはクライアント１１０の１つの上に位置し得る。
【００６２】
オプションの受信ステップ１１８０において、マッピングされたゲームコマンドは、ビデオソース１３０において、またはその内部で受信される。マッピングされたゲームコマンドは任意に、オーバーレイが適用されるビデオフレームの領域からマッピングされたコマンドである。受信されたゲームコマンドは、クライアント１１０の１つまたはビデオサーバシステム１２０のいずれかにおいてマッピングされてもよい。受信されたゲームコマンドは、ビデオゲームの状態を更新するために任意に使用される。
【００６３】
図６は、本発明の一実施形態による、遠隔的にサービス提供されるコンピュータアプリケーションおよび遠隔的にサービス提供されるコンピュータアプリケーションのミニアプリケーションの生成および実行のためのクラウドコンピューティングシステム６００の図を示す。クラウドコンピューティングシステム６００は、コンピューティング活動に必須の操作を行うように定義される、様々な物理的構成要素６０１、すなわち、コンピューティングハードウェア構成要素を含む。物理的構成要素６０１は、多数のコンピュータプロセッサ６０１Ａ、大量のコンピュータメモリ６０１Ｂ、大量の持続的データストレージ６０１Ｃ、および多数のネットワークインターフェースカード／チップ（ＮＩＣ）６０１Ｄを含み得る。上述の様々な物理的構成要素６０１は、当該技術分野において既知の任意のそのような物理的構成要素６０１に対応し得る。また上述の様々な物理的構成要素６０１は、例として提供されることを理解されたい。クラウドコンピューティングシステム６００の様々な実施形態は、上述の例より多いまたは少ない物理的構成要素６０１を含むことができ、物理的構成要素６０１の集積コンピューティング能力がクラウドコンピューティングシステム６００の適正な性能を保証するために適切である限り、上述されない物理的構成要素６０１、例えば、電源、冷却システム等を含み得る。
【００６４】
クラウドコンピューティングシステム６００は、様々な物理的構成要素６０１を使用して、多数の仮想マシンを生成および実行するために定義される、ハイパーバイザー６０３または同様のコントロール層も含む。ハイパーバイザー６０３により生成および実行される各仮想マシンは、本質的に、特定のコンピューティングアーキテクチャのソフトウェアエミュレーションである。様々な物理的構成要素６０１を使用して、ハイパーバイザー６０３は、複数の異なる仮想マシンを同時に生成および実行し得る。所与の仮想マシンは、指定の仮想マシンによりエミュレートされた特定のコンピューティングアーキテクチャに対応する多数のオペレーティングシステム６０５の１つ以上に従って動作するように指示され得る。様々なタイプのオペレーティングシステムの例としては、特にＷｉｎｄｏｗｓ、Ｍａｃ  ＯＳ  Ｘ、Ｌｉｎｕｘ、Ｐｌａｙ  Ｓｔａｔｉｏｎ  １（ＰＳ１）、Ｐｌａｙ  Ｓｔａｔｉｏｎ  ２（ＰＳ２）、Ｐｌａｙ  Ｓｔａｔｉｏｎ  ３（ＰＳ３）が挙げられる。例えば、図６に関して、オペレーティングシステムＯＳ１がＰＳ３オペレーティングシステムである場合、次にＯＳ１は、ハイパーバイザー６０３により生成された仮想マシン上で実行され、ＰＳ３コンピューティングアーキテクチャをエミュレートし得る。同様に、オペレーティングシステムＯＳ５がＭａｃ  ＯＳ  Ｘオペレーティングシステムである場合、次にＯＳ５は、ハイパーバイザー６０３により生成された仮想マシン上で実行され、Ｍａｃコンピューティングアーキテクチャをエミュレートし得る。
【００６５】
上記の方法で、ハイパーバイザー６０３は、物理的構成要素６０１を利用して、様々な対応するオペレーティングシステムが実行され得る、本質的に任意の数の異なるタイプのコンピューティングアーキテクチャをエミュレートするために、本質的に任意の数の異なるタイプの仮想マシンを生成および実行することができる。したがって、クラウドコンピューティングシステム６００は、その必要とされるコンピューティングアーキテクチャ上で実行する特定のオペレーティングシステムにより定義される、本質的に任意のコンピューティングシステムの一例を提供し得る。図６の例は、例として６つのオペレーティングシステムＯＳ１〜ＯＳ６を示すが、クラウドコンピューティングシステム６００は、いかなる方法においても設定された数のオペレーティングシステムに限定されないことを理解されたい。ハイパーバイザー６０３は、本質的に任意の対応する想像できるオペレーティングシステムを実行するために、本質的に任意の想像できるコンピューティングアーキテクチャを生成するように定義され得る。したがって、クラウドコンピューティングシステム６００は、物理的構成要素６０１、ハイパーバイザー６０３の能力（すなわち、仮想マシンエミュレーションの数およびタイプ）、ならびにオペレーティングシステム提供の数およびタイプに関して拡張可能であることを理解されたい。
【００６６】
クラウドコンピューティングシステム６００は、多数のオペレーティングシステム６０５の１つ以上を介して実行するために定義される多数の異なるコンピュータアプリケーション６０７も含む。様々なコンピュータアプリケーション６０７は、クラウドコンピューティングシステム６００のストレージ６０１Ｃに記憶され得、ハイパーバイザー６０３による特定の仮想マシンおよび対応するオペレーティングシステムの指定のインスタンスの提供と併せて、必要に応じて実行するために、メモリ６０１Ｂにロードされ得る。任意のオペレーティングシステム６０５に対して存在する任意のコンピュータアプリケーション６０７は、クラウドコンピューティングシステム６００により実行され得ることを理解されたい。
【００６７】
図６は、多数のホスト６０９（ホスト１〜ホストＮ）も示す。ホスト６０９は、選択したアプリケーション６０７を実行するために、クラウドコンピューティングシステム６００にアクセスして特定の仮想マシンおよび対応するオペレーティングシステムのインスタンスへのアクセスを得たユーザのインスタンスを表す。クラウドコンピューティングシステム６００は、多くの異なる方法で仮想マシンおよびオペレーティングシステムを提供するように定義および管理され得ることを理解されたい。例えば、場合によっては、クラウドコンピューティングシステム６００にアクセスする各ユーザには、そのユーザが所望のアプリケーション６０７を実行することができる専用の仮想マシンおよび対応するオペレーティングシステムが提供され得る。また場合によっては、クラウドコンピューティングシステム６００にアクセスする複数のユーザは、各ユーザが所望のアプリケーション６０７を実行することができる仮想マシンおよび対応するオペレーティングシステムを共有するようにされ得る。クラウドコンピューティングシステム６００の操作および管理は、クラウドコンピューティングシステム６００にアクセスする各ユーザに、使用可能な物理的構成要素６０１を考慮して可能な限り最善のサービスを提供するように最適化され得る。
【００６８】
様々な実施形態において、クラウドコンピューティングシステム６００は、クラウドゲーミングシステムである。一実施形態において、クラウドゲーミングシステムは、ユーザと関連付けられたクライアントデバイスのタイプ、およびユーザがクラウドベースのビデオゲームに入力を提供するために使用可能なコントローラのタイプも検出するように構成される。例えば、一実施形態において、ユーザがクラウドゲーミングシステムにログインするとき、ユーザがクラウドゲーミングシステムにアクセスしているクライアントデバイスのタイプを指定するオプションが提示され得る。一実施形態において、ユーザがそれらのクライアントデバイスに対応するものを選択し得る一連のクライアントデバイスオプションが提示される。ユーザは、ビデオゲームをプレイするために使用するコントローラデバイスのタイプを指定するオプションも提示され得る。一実施形態において、ユーザがそれらのコントローラハードウェアに対応するコントローラタイプを指定するために選択し得る一連のコントローラオプションが提示され得る。他の実施形態において、クラウドゲーミングシステムは、クライアントデバイスタイプおよび／またはコントローラデバイスタイプを自動的に検出するように構成され得る。
【００６９】
例えば、ログイン時に、クライアントデバイスは、それ自体を識別するクラウドゲーミングサーバならびに接続されたコントローラデバイスに（例えば、クラウドゲーミングサーバからの要求に応答して）情報を送信し得る。この情報に基づいて、クラウドゲーミングサーバは、適切なビデオゲーム出力構成および入力パラメータ構成を決定して、ユーザのクライアントデバイスおよびコントローラデバイスに対して最適化されたゲーミング経験を提供し得る。一実施形態において、ルックアップテーブルを用いて、検出されたクライアントデバイスおよび検出されたコントローラデバイスに基づいて、ビデオゲーム構成および入力パラメータ構成を決定する。
【００７０】
当然のことながら、特定のプラットフォームおよび特定の関連付けられたコントローラデバイスに対して指定のビデオゲームが開発され得る。しかしながら、そのようなゲームが本明細書に提示されるクラウドゲーミングシステムを介して使用可能となるとき、ユーザは、異なるコントローラデバイスを用いてビデオゲームにアクセスしてもよい。例えば、ゲームは、ゲームコンソールおよびその関連付けられたコントローラに対して開発され得るが、ユーザは、キーボードおよびマウスを利用して、パーソナルコンピュータからクラウドベースバージョンのゲームにアクセスしてもよい。このようなシナリオにおいて、入力パラメータ構成は、ユーザの使用可能なコントローラデバイス（この場合、キーボードおよびマウス）により生成され得る入力からビデオゲームの実行に許容される入力へのマッピングを定義することができる。
【００７１】
別の実施例において、ユーザは、タブレットコンピューティングデバイス、タッチスクリーンスマートフォン、または他のタッチスクリーン駆動型デバイスを介してクラウドゲーミングシステムにアクセスしてもよい。この場合、クライアントデバイスおよびコントローラデバイスは、同一のデバイスに一緒に統合され、入力は検出されたタッチスクリーン入力／ジェスチャーにより提供される。このようなデバイスの場合、入力パラメータ構成は、ビデオゲームのゲーム入力に対応する特定のタッチスクリーン入力を定義し得る。例えば、ボタン、指向性パッド、または他のタイプの入力要素は、ビデオゲームの実行中に表示またはオーバーレイされ、ユーザがタッチしてゲーム入力を生成することができるタッチスクリーン上の位置を示し得る。特定方向のスワイプまたは特定のタッチ動作等のジェスチャーもゲーム入力として検出され得る。一実施形態において、ユーザがタッチスクリーン上のコントロールの操作に慣れるように、例えば、ビデオゲームのゲームプレイを始める前に、ゲームプレイのタッチスクリーンを介して入力を提供する方法を示すチュートリアルがユーザに提供され得る。
【００７２】
いくつかの実施形態において、クライアントデバイスは、コントローラデバイスの接続ポイントとして機能する。つまり、コントローラデバイスは、コントローラデバイスからクライアントデバイスに入力を伝送するために、クライアントデバイスとの無線または有線接続を介して通信する。クライアントデバイスは、これらの入力を順に処理し、次にネットワークを介してクラウドゲーミングサーバに入力データを伝送し得る（例えば、ルーター等のローカルネットワーキングデバイスを介してアクセスされる）。しかしながら、他の実施形態において、コントローラは、それ自体がネットワーク化されたデバイスであり得、ネットワークを介してクラウドゲーミングサーバに直接入力を通信する能力を有し、そのような入力を最初にクライアントデバイスを介して通信する必要がない。例えば、コントローラをローカルネットワーキングデバイス（例えば、前述のルーター）に接続して、クラウドゲーミングサーバとの間でデータを送受信し得る。したがって、クライアントデバイスは依然としてクラウドベースのビデオゲームからビデオ出力を受信し、それをローカルディスプレイ上にレンダリングする必要があり得るが、コントローラが、ネットワーク上で入力を直接クラウドゲーミングサーバに送信することを可能にし、クライアントデバイスを迂回することにより、入力遅延が低減され得る。
【００７３】
一実施形態において、ネットワーク化されたコントローラおよびクライアントデバイスは、あるタイプの入力を、コントローラからクラウドゲーミングサーバに送信し、他のタイプの入力を、クライアントデバイスを介して送信するように構成され得る。例えば、その検出がコントローラ自体から離れた任意の追加のハードウェアまたは処理に依存しない入力は、コントローラからネットワークを介してクラウドゲーミングサーバに直接送信され、クライアントデバイスを迂回することができる。このような入力は、ボタン入力、ジョイスティック入力、埋め込まれた動作検出入力（例えば、加速計、磁力計、ジャイロスコープ）等を含んでもよい。しかしながら、追加のハードウェアを利用するか、またはクライアントデバイスによる処理を必要とする入力は、クライアントデバイスによりクラウドゲーミングサーバに送信され得る。これらは、クラウドゲーミングサーバに送信する前に、クライアントデバイスにより処理され得るゲーム環境から捕捉されたビデオまたはオーディオを含み得る。加えて、コントローラの動作検出ハードウェアからの入力は、コントローラの位置および動作を検出するために捕捉されたビデオと併せてクライアントデバイスにより処理され得、後次にクライアントデバイスによりクラウドゲーミングサーバに通信する。当然のことながら、様々な実施形態によるコントローラデバイスはまた、クライアントデバイスから、またはクラウドゲーミングサーバから直接データ（例えば、フィードバックデータ）を受信し得る。
【００７４】
例として、クラウドコンピューティングシステム６００、または同様のコンピューティングシステムは、ユーザのコンピューティング端末が、ネットワークを介して、すなわち、有線ネットワーク、無線ネットワーク、またはそれらの組み合わせのいずれかを介してコンピューティングシステム６００にアクセスすることができる限り、ユーザのコンピューティング端末を介して実行するために、遠隔的にサービス提供されるアプリケーションへのアクセスをユーザに提供し得ることを理解されたい。言い換えれば、クラウドコンピューティングシステム６００は、ユーザが、クラウドコンピューティングシステム６００により提供される基本的なハードウェア、オペレーティングシステム、およびコンピュータアプリケーションを用いて、ユーザの端末を介してクラウドコンピューティングシステム６００上で選択するコンピュータアプリケーションを実行することを可能にする。
【００７５】
ユーザが選択したコンピュータアプリケーションは、クラウドコンピューティングシステム６００上に常駐し、必要に応じてユーザに提供されるため、それがユーザのコンピューティング端末においてユーザに提示されるとき、ユーザが選択したコンピュータアプリケーションの性能／動作を修正および／または補助するために、ユーザが選択したコンピュータアプリケーションの製造者は、クラウドコンピューティングシステム６００上に補足のコンピュータアプリケーションを提供して、ユーザが選択したコンピュータアプリケーションと併せて実行することができる。例えば、ミニアプリケーションモジュールは、それがユーザのコンピューティング端末においてユーザに提示されるとき、ユーザが選択したコンピュータアプリケーションの性能／動作を修正および／または補助するために、クラウドコンピューティングシステム６００上で実行されるコンピュータアプリケーションとして提供され得る。
【００７６】
ミニアプリケーションモジュールは、ユーザが実行しているコンピュータアプリケーションのミニアプリケーション（miniapp）、すなわち、ミニチュアコンピュータアプリケーションを生成する能力をユーザに提供するように定義される。説明を容易にするために、ミニアプリケーションモジュールおよびその関連付けられた機能は、主にビデオゲームコンピュータアプリケーションの実行の文脈内で以下に説明される。しかしながら、本明細書で説明されるミニアプリケーションモジュールおよびその関連付けられた機能は、任意のコンピュータアプリケーション、ビデオゲーム、に等しく適用され得るか、またはそうでないことを理解されたい。
【００７７】
ビデオゲームプレイの例示の文脈内で、ユーザがクラウドコンピューティングシステム６００上でプレイしているビデオゲームのミニアプリケーションモジュールは、クラウドコンピューティングシステム６００上で実行され得る。本明細書で説明されるビデオオーバーレイ技法を使用して、ミニアプリケーションモジュールは、ユーザによりプレイされるビデオゲームのビデオフレームシーケンス上に、ミニアプリケーション生成ボタン（または他の適切なグラフィカルユーザインターフェース（ＧＵＩ）要素）に、そのミニアプリケーション生成ボタンに対応する入力マップを提供し得る。ユーザによるミニアプリケーション生成ボタンの起動時に、ミニアプリケーションモジュールは、対応する入力マップとともにビデオオーバーレイを介して提供される様々なＧＵＩ要素として表される、一組のミニアプリケーション生成ツールをユーザに提供する。次にユーザは、その一組のミニアプリケーション生成ツールを起動して、ユーザが既に実行したビデオゲームの一部に対応するビデオゲームのミニチュア版を作成することができ、以下ミニアプリケーションと称される。
【００７８】
ミニアプリケーションは、ユーザがそのミニアプリケーションに対応するビデオゲームの一部を実行する間に実行され、かつ実行に使用可能な実際のプログラム命令により定義される。ミニアプリケーションは、そのミニアプリケーションに対応する実行されたビデオゲームの一部の間にユーザから受信された入力シグナルの記録も含む。一実施形態において、ミニアプリケーションは、そのミニアプリケーションに対応するビデオゲームの一部をユーザが実行する間にレンダリングおよび記録されたビデオ画像のシーケンスも含む。この実施形態において、記録されたビデオ画像のシーケンスを表示して、ミニアプリケーションに対応するビデオゲームの一部のユーザの以前の実行を示すことができる。別の実施形態において、ミニアプリケーションのプログラム命令は、ビデオゲームのミニアプリケーション部分に適用可能である、ビデオゲームのユーザの実行のビデオプレイバックを効果的に示すために、ユーザの記録された入力シグナルに基づいて実行され得る。
【００７９】
またミニアプリケーションは、ビデオゲームのミニアプリケーション部分の間に実行され、かつ実行に使用可能な実際のプログラム命令により定義されるため、このミニアプリケーションは、新たなユーザ入力シグナルに基づいて実行に使用可能である。そのため、ミニアプリケーションは、ビデオゲームの対応する部分が、同一のユーザまたは異なるユーザにより任意の時点でリプレイされることを可能にする。またクラウドコンピューティングシステム６００により、生成されたミニアプリケーションは、本質的に任意のユーザにより任意の時点で記憶および実行され得る。加えて、ミニアプリケーションモジュールは、様々なＧＵＩ要素ならびに対応する入力マップおよびビデオオーバーレイを提供することができ、ユーザが生成されたミニアプリケーションを、例えばソーシャルメディアウェブサイトに公開すること、および／または生成されたミニアプリケーションを特定のストレージ位置に保存すること、および／または生成されたミニアプリケーションを実行することを可能にする。
【００８０】
図７は、本発明の一実施形態による、図２のビデオＤＥＰ２４５Ａと連動するミニアプリケーションモジュール２０００を示す。ミニアプリケーションモジュール２０００は、図２に関して提供されるビデオＤＥＰ２４５Ａおよびオーバーレイ論理２９０の説明に従って、ミニアプリケーションモジュール２０００の機能をもたらすために必要なＤＥＰ２４５Ａを介して様々なビデオオーバーレイ画像を生成および提供するように定義される。ミニアプリケーションモジュール２０００はまた、ミニアプリケーションモジュール２０００の機能をもたらすために、図４および５の説明に従って、ＤＥＰ２４５Ａを介して提供される様々なビデオオーバーレイ画像の入力マップを提供するように定義される。
【００８１】
ミニアプリケーションモジュール２０００は、一般にビデオゲームまたはコンピュータアプリケーションのユーザの実行に基づいて、ミニアプリケーションの生成を提供するように定義されたミニアプリケーション生成論理２００１を含む。ミニアプリケーション生成論理２００１は、ユーザにより実行されるビデオゲーム上のビデオオーバーレイとして、ミニアプリケーション生成ＧＵＩボタンまたは他の適切なコントロールを提供するように定義される。例えば、図８は、ビデオゲームのビデオシーケンス８０３が表示されるユーザ端末ディスプレイ８０１を示す。ユーザは、ディスプレイ８０１に示されるビデオシーケンス８０３に応答して、コントローラ８０２を介してユーザ入力シグナルを提供することによりビデオゲームを実行する。ミニアプリケーション生成ＧＵＩボタン８０５は、ディスプレイ８０１上に示される。ミニアプリケーション生成ＧＵＩボタン８０５は、ビデオオーバーレイをビデオシーケンス８０３上に適用することにより示され得る。一実施形態において、ミニアプリケーション生成ＧＵＩボタン８０５は、スクリーン上の一定の位置に留まることが示される。別の実施形態において、ミニアプリケーション生成ＧＵＩボタン８０５は、受信されたユーザ入力シグナル、例えば、メニュー選択シグナル、コントローラ８０２起動シグナル、スクリーン上の既定位置上の仮想コントロール要素のホバリング等に応答して表示され得る。
【００８２】
ミニアプリケーション生成ＧＵＩボタン８０５の起動時に、ミニアプリケーション生成論理２００１は、ミニアプリケーション生成モードを入力して、ユーザのディスプレイ８０１上のビデオオーバーレイとして一組のミニアプリケーション生成ＧＵＩコントロールを提供するように機能する。図９は、本発明の一実施形態による、ユーザのディスプレイ８０１上に示され得る一組のミニアプリケーション生成ＧＵＩコントロールを含む、ミニアプリケーション生成モードの一例を示す。一組のミニアプリケーション生成ＧＵＩコントロールは、経過したビデオゲーム実行の全体のタイムライン８１３、すなわち図９の例では０〜６５：３３を示すミニアプリケーション生成バー８１２を含む。ミニアプリケーション生成バー８１２は、ミニアプリケーション開始マーカー８１５、ミニアプリケーション終了マーカー８１７、およびミニアプリケーション期間マーカー８１９を含み、ミニアプリケーション期間マーカー８１９は、ミニアプリケーション開始マーカー８１５とミニアプリケーション終了マーカー８１７との間に延在するタイムライン８１３の修正されたセグメントである。
【００８３】
一実施形態において、ミニアプリケーション期間マーカー８１９は、一定の長さであるか、またはミニアプリケーション開始マーカー８１５、ミニアプリケーション終了マーカー８１７、もしくはミニアプリケーション期間マーカー８１９のいずれかを、ユーザがタイムライン８１３に沿ってドラッグすることにより、タイムライン８１３に沿ってドラッグされ得る。この実施形態において、ミニアプリケーション開始マーカー８１５のドラッグは、ミニアプリケーション期間マーカー８１９およびミニアプリケーション終了マーカー８１７の対応する動作をもたらす。またこの実施形態において、ミニアプリケーション期間マーカー８１９のドラッグは、ミニアプリケーション開始マーカー８１５およびミニアプリケーション終了マーカー８１７の対応する動作をもたらす。またこの実施形態において、ミニアプリケーション終了マーカー８１７のドラッグは、ミニアプリケーション期間マーカー８１９およびミニアプリケーション開始マーカー８１５の対応する動作をもたらす。ミニアプリケーションの最大許容期間は、特にコンピューティングリソースの経済的な性能および消費等の多くの異なる要因に基づいて、コンピュータアプリケーションプロバイダにより決定されてもよいことを理解されたい。
【００８４】
またいくつかの実施形態において、ミニアプリケーション開始マーカー８１５および／またはミニアプリケーション終了マーカー８１７は、ミニアプリケーション期間マーカー８１９により表されるミニアプリケーションの期間を減少させるために、ユーザにより互いに向かって移動させることができる。いくつかの実施形態において、ミニアプリケーション生成論理２００１は、生成されたミニアプリケーションがいくらかの有意義な内容を含むことを保証するために、最小限必要なミニアプリケーション期間を実施してもよい。またいくつかの実施形態において、ミニアプリケーション開始マーカー８１５および／またはミニアプリケーション終了マーカー８１７は、ミニアプリケーション期間マーカー８１９により表されるミニアプリケーションの期間を増加させるために、ユーザにより互いから離して移動させることができる。いくつかの実施形態において、ミニアプリケーション生成論理２００１は、許容される最大ミニアプリケーション期間を実施してもよい。許容される最大ミニアプリケーション期間は、生成されたミニアプリケーションが過剰なコンピューティングリソースを消費しないことを保証するため、またはミニアプリケーションが生成されるビデオゲームの値が消滅しないことを保証するために特定され得る。
【００８５】
一組のミニアプリケーション生成ＧＵＩコントロールは、ユーザによる起動時に、ユーザがミニアプリケーション生成バー８１２により特定されるミニアプリケーションをレビューすることを可能にする、レビューボタン８０５を含み得る。図１０は、本発明の一実施形態に従って、レビューボタン８０５のユーザ起動時に開始されるミニアプリケーションレビューモードを示す。ミニアプリケーションレビューモードは、ミニアプリケーション期間に対応するビデオゲームの一部の間に記録されたユーザ入力シグナルに基づいて、ミニアプリケーション生成バー８１２により特定されるミニアプリケーションに対応するビデオゲームのユーザ実行のレビューを提供する。
【００８６】
図１０は、本発明の一実施形態による、ユーザのディスプレイ８０１上に示され得る例示の一組のミニアプリケーションレビューＧＵＩコントロールを示す。いくつかの実施形態において、一組のミニアプリケーションレビューＧＵＩコントロールは、ミニアプリケーションの実行内の一時的位置を示すためにその上に示される、現在の実行状態マーカー８２９とともに、ミニアプリケーション生成バー８１２を含み得る。一実施形態において、ミニアプリケーション開始マーカー８１５、ミニアプリケーション終了マーカー８１７、およびミニアプリケーション期間マーカー８１９は、ミニアプリケーションレビュープロセスの間、ミニアプリケーション生成バー８１２内で非アクティブである。別の実施形態において、ミニアプリケーション開始マーカー８１５、ミニアプリケーション終了マーカー８１７、およびミニアプリケーション期間マーカー８１９は、ミニアプリケーションレビュープロセスの間、ミニアプリケーション生成バー８１２内でアクティブであり、それによりレビュープロセス中のミニアプリケーション一時的指定の調整を可能にする。
【００８７】
一組のミニアプリケーションレビューＧＵＩコントロールは、起動時に、現在の実行状態マーカー８２９により示されるように、現在の実行状態からミニアプリケーションを実行するプレイボタン８２１も含む。一組のミニアプリケーションレビューＧＵＩコントロールは、起動時に、現在の実行状態マーカー８２９により示されるように、現在の実行状態でのミニアプリケーションの実行を停止する一時停止ボタン８２３も含む。一組のミニアプリケーションレビューＧＵＩコントロールは、現在の実行状態マーカー８２９により示されるように、ミニアプリケーションの実行を、現在の実行状態に対して前の実行状態に移動させる巻戻しボタン８２５も含み得る。一組のミニアプリケーションレビューＧＵＩコントロールは、現在の実行状態マーカー８２９により示されるように、ミニアプリケーションの実行を、現在の実行状態に対して先の実行状態に移動させる早送りボタン８２７も含み得る。またいくつかの実施形態において、ミニアプリケーションの現在の実行状態は、ユーザが、現在の実行状態マーカー８２９をタイムライン８１３に沿ってドラッグすることにより変更され得る。また一組のミニアプリケーションレビューＧＵＩコントロールは、起動時に、ユーザをミニアプリケーションレビューモードから図９に示されるミニアプリケーション生成モードに戻すリターンボタン８２８を含む。
【００８８】
図９のミニアプリケーション生成モードの一組のミニアプリケーション生成ＧＵＩコントロールは、起動時に、ユーザの選択のストレージ位置においてミニアプリケーション生成バー８１２により指定されるように、ユーザがミニアプリケーションを保存することを可能にする保存ボタン８０７も含む。図１１は、本発明の一実施形態による、ユーザのディスプレイ８０１上に示され得る例示の一組のミニアプリケーション保存ＧＵＩコントロールを示す。ユーザは、ミニアプリケーション生成バー８１２により指定されるように、ミニアプリケーションと関連付けられたデータを記憶するデータストレージ位置の一覧からデータストレージ位置８３３を選択してもよい。データストレージ位置８３３は、ユーザにより特定され得るか、またはユーザのコンピューティングシステムの構成に基づいて特定され得る。いくつかの実施形態において、ユーザがミニアプリケーション生成バー８１２により特定されるミニアプリケーションと関連付けられたデータを記憶するＵＲＬ（ユニバーサルリソースロケーション）を特定することができるデータエントリフィールド８３１がユーザに提供され得る。また、ユーザがミニアプリケーションの名前を特定することができるミニアプリケーション名前フィールド８３５が提供されてもよい。起動時に、ミニアプリケーションデータを特定されたデータストレージ位置に保存させる保存ボタン８３６も提供される。いくつかの実施形態において、保存ボタン８３６は、データストレージ位置が選択／入力されるまで起動可能にならない場合がある。
【００８９】
ミニアプリケーションのストレージは、ビデオゲームのミニアプリケーション部分を実行するために必要とされるビデオゲームのプログラム命令の１つ以上の部分を特定するデータのストレージを含む。ミニアプリケーションに対応するビデオゲームのプログラム命令の１つ以上の特定された部分は、プログラム命令の連続するセグメントであり得るか、またはプログラム命令の別個のセグメントであり得る。またミニアプリケーションのストレージは、ミニアプリケーションに対応するビデオゲームのユーザの実行中に記録される、ユーザの入力シグナルのストレージを含む。またミニアプリケーションのストレージは、ミニアプリケーションの初期実行状態を定義するデータを含み得る。ミニアプリケーションのストレージは、１）ミニアプリケーションに対応するビデオゲームの一部を実行し、２）ミニアプリケーションに対応するビデオゲームの一部のユーザの記録された実行を再形成するために必要な任意のプログラム命令およびアプリケーション状態データの識別を含む。また一組のミニアプリケーションを保存するＧＵＩコントロールは、一実施形態において、起動時にユーザをミニアプリケーション保存モードから図９に示されるミニアプリケーション生成モードに戻すか、または別の実施形態では、ユーザをミニアプリケーション生成モードが最初に入力されたビデオゲーム状態に戻す、リターンボタン８３２を含む。
【００９０】
様々な実施形態において、ミニアプリケーションに対応するプログラム命令は、マシン実行可能なコードとしてバイナリフォーマットで、事前にコンパイルされたソースコードフォーマットで、解釈可能なソースコードフォーマットで、および／もしくはそれらの任意の組み合わせ、ならびに／または他のタイプのコンピュータ実行可能なコードフォーマットで特定され得る。またいくつかの実施形態において、メタデータを使用して、ミニアプリケーションを定義する際に使用するために必要なプログラム命令の一部を識別することができる。メタデータは、コードマーカーであり得るか、またはビデオゲームのプログラム命令内に埋め込まれる任意の他のタイプのフラグであり得る。メタデータは、マシン実行可能なコード内、事前にコンパイルされたソースコード内、解釈可能なソースコード内、および／またはそれらの任意の組み合わせ内に埋め込まれ得る。このような実施形態において、メタデータは、ビデオゲームのミニアプリケーション部分を実行するために必要なビデオゲームのプログラム命令の１つ以上の部分を特定するために使用および記憶され得る。いくつかの実施形態において、メタデータを使用して、ミニアプリケーションに対応するビデオゲームの完全な状態を生成するために必要な（すなわち、使用され、実行され、かつ／または参照される）すべてのコードを識別することができる。
【００９１】
図９のミニアプリケーション生成モードの一組のミニアプリケーション生成ＧＵＩコントロールは、起動時に、ユーザがミニアプリケーション生成バー８１２により特定されるミニアプリケーションを、ユーザが選択するウェブサイト、例えば、ソーシャルメディアウェブサイトに公開することを可能にする公開ボタン８０９も含む。いくつかの実施形態において、公開ボタン８０９は、ミニアプリケーションがデータストレージ位置に保存されるまで起動可能にならない場合がある。図７を参照すると、ミニアプリケーションモジュール２０００は、生成されたミニアプリケーションをウェブサイトへの公開を提供するように定義されるミニアプリケーション公開論理２００３を含む。
【００９２】
図１２は、本発明の一実施形態による、ユーザのディスプレイ８０１上に示され得る例示の一組のミニアプリケーション公開ＧＵＩコントロールを示す。ユーザは、ミニアプリケーションを公開するウェブサイトの一覧からウェブサイト８３７を選択してもよい。ウェブサイト８３７は、ユーザにより特定され得るか、またはユーザのコンピューティングシステムに基づいて特定され得る。いくつかの実施形態において、ユーザがミニアプリケーション生成バー８１２により特定されるミニアプリケーションを公開するウェブサイトに対応するＵＲＬ（ユニバーサルリソースロケーション）を特定することができるデータエントリフィールド８３９がユーザに提供され得る。
【００９３】
ミニアプリケーションが公開され得るウェブサイトは、他のタイプのウェブサイトの中で、例としてＦａｃｅｂｏｏｋ等のソーシャルメディアウェブサイトを含み得る。ユーザは、オンラインで知り合った人とのミニアプリケーションの共有を促進するために、ソーシャルメディアウェブサイト上でそれらのミニアプリケーションを公開するように選択してもよい。ミニアプリケーションを公開するウェブサイトを選択するときに、ユーザは選択したウェブサイトに対するそれらの認証を入力するようにプロンプト表示され得る。例えば、図１３は、本発明の一実施形態による、ユーザが選択されたウェブサイト（サイト１）のログイン認証（ログインＩＤおよびパスワード）を入力することができるデータフィールドを含む、ディスプレイ画像８４１を示す。図１４は、本発明の一実施形態による、ユーザが選択されたウェブサイトに良好にログインするときに、ユーザのディスプレイ上にレンダリングされるミニアプリケーション公開ディスプレイ画像８４３を示す。ミニアプリケーション公開ディスプレイ画像８４３は、ユーザが、それらのミニアプリケーションのキャプション、およびそれらのミニアプリケーションのアイコン付近に置かれるラベルを提供することができるデータフィールドを含む。ディスプレイ画像８４３は、起動時に、選択されたウェブサイトのそれらの個人ページにユーザのミニアプリケーションを公開する共有ＧＵＩボタン８４５も含み、ユーザをミニアプリケーション公開モードからミニアプリケーション生成モードが最初に入力されたビデオゲーム状態に戻す。ディスプレイ画像８４３は、起動時に、ユーザをミニアプリケーション公開モードからミニアプリケーション生成モードが最初に入力されたビデオゲーム状態に戻すリターンＧＵＩボタン８４７も含む。
【００９４】
図１５は、本発明の一実施形態による、アイコン８５０、すなわちリンクとしてその上に公開されるユーザのミニアプリケーションを有するユーザのソーシャルメディアウェブページのディスプレイ画像８４９を示す。アイコン８５０の起動時に、対応するミニアプリケーションは、ユーザの端末上で実行され、記録されたユーザ入力シグナルにより指示されるミニアプリケーションに対応するビデオゲーム部分のユーザの前の実行を示す。図７を参照すると、ミニアプリケーションモジュール２０００は、保存されたミニアプリケーションの実行を提供するように定義されたミニアプリケーション実行論理２００５を含む。ミニアプリケーション実行論理２００５は、ユーザコンピューティング端末上で保存されたミニアプリケーションの実行を提供するために必要なクラウドコンピューティングシステム６００上のコンピューティングリソースの提供を指示する。
【００９５】
図１６は、本発明の一実施形態による、第１のユーザの公開されたミニアプリケーションがアイコン８５４、すなわちリンクとしてアクセス可能な第２のユーザのソーシャルメディアウェブページのディスプレイ画像８５３を示す。一実施形態において、第２のユーザによるアイコン８５４の起動時に、対応するミニアプリケーションは、第２のユーザの端末上で実行され、記録されたユーザ入力シグナルにより指示されるミニアプリケーションに対応するビデオゲーム部分の第１のユーザの前の実行を示す。別の実施形態において、第２のユーザによるアイコン８５４の起動時に、記録されたビデオシーケンスは、第２のユーザの端末上に表示され、ミニアプリケーションに対応するビデオゲーム部分の第１のユーザの前の実行を示す。
【００９６】
図１７は、本発明の一実施形態による、第１のユーザの記録されたユーザ入力シグナルに基づいて、第２のユーザのディスプレイ８５１上で実行する第１のユーザの公開されたミニアプリケーション８０３を示す。第２のユーザのディスプレイ８５１は、起動時に、ユーザが第２のユーザにより提供される新たなユーザ入力シグナルに従って、ビデオゲームのミニアプリケーション部分をプレイすることを可能にするプレイボタン８５９も示す。図１８は、本発明の一実施形態による、第１のユーザにより生成されたミニアプリケーションをプレイする第２のユーザを示す。第２のユーザには、起動時に、第２のユーザが第１のユーザにより生成されたオリジナルのミニアプリケーションに対応する新たなミニアプリケーションを生成することを可能にするミニアプリケーション生成ボタン８７１も提供されるが、第２のユーザの入力信号は、第１のユーザの入力信号の代わりに新たなミニアプリケーションの実行を制御するために使用される。第２のユーザには、図９に関して論じられる、保存ボタン８０７および公開ボタン８０９に関して上述されるもの等のミニアプリケーション保存および／または公開能力も提供され得る。
【００９７】
またいくつかの実施形態において、第２のユーザのディスプレイ８５１は、第２のユーザが、ミニアプリケーションが生成される全体ビデオゲームを購入することを可能にする購入ボタン８６１を含む。またいくつかの実施形態において、第２のユーザのディスプレイ８５１は、第２のユーザがミニアプリケーションの拡張版を購入することができる拡張ボタン８６３を含む。拡張版のミニアプリケーションは、ミニアプリケーション部分の前、ミニアプリケーション部分の後、またはミニアプリケーション部分の前後両方のいずれかに、ミニアプリケーションに対応するビデオゲームのオリジナル部分、および追加量のビデオゲームを含む。いくつかの実施形態において、様々な拡張オプションおよび関連付けられた購入価格は、考慮および選択のために第２のユーザに表示され得る。
【００９８】
加えて、図９を再度参照すると、ミニアプリケーション生成モードの一組のミニアプリケーション生成ＧＵＩは、起動時に、ユーザをミニアプリケーション生成モードからミニアプリケーション生成モードが最初に入力されたビデオゲーム状態に戻すキャンセルボタン８１１も含む。
【００９９】
図１９は、本発明の一実施形態による、ミニアプリケーションを生成するための方法のフローチャートを示す。本方法は、第１のアプリケーションをクラウドコンピューティングシステム上で一定期間実行するためのオペレーション１９０１を含む。本方法は、一定期間中の第１のアプリケーションの実行と関連付けられるユーザ入力シグナルを記録するためのオペレーション１９０３も含む。本方法は、一定期間中に実行される第１のアプリケーションの実行可能な命令および状態データを記録するためのオペレーション１９０４も含む。本方法は、一定期間中の一部の期間中に実行された第１のアプリケーションの１つ以上の部分に対応するように第２のアプリケーションを生成するためのオペレーション１９０５も含む。第２のアプリケーションは、一定期間の一部の期間中に記録される、第１のアプリケーションの実行可能な命令および状態データにより定義される。本方法は、第２のアプリケーションおよび一定期間の一部の期間中の第１のアプリケーションの実行中に記録されたユーザ入力シグナルを含むようにミニアプリケーションを生成するためのオペレーション１９０７も含む。
【０１００】
図１９の方法は、第１のアプリケーションのビデオストリームをクラウドコンピューティングシステムからクライアントコンピュータシステムに伝送することを含むことを理解されたい。一実施形態において、本方法は、ミニアプリケーション生成コントロールをオーバーレイ画像として第１のアプリケーションのビデオストリーム内でレンダリングすることを含む。またこの実施形態において、本方法は、ミニアプリケーション生成コントロールの起動時に、一組のミニアプリケーション生成コントロールを１つ以上のオーバーレイ画像としてビデオストリーム内に伝送することを含む。
【０１０１】
一組のミニアプリケーション生成コントロールは、図９に関して論じられるミニアプリケーション生成バー８１２等の第１の期間内の第２の期間を選択するためのミニアプリケーション生成バーを含む。また一組のミニアプリケーション生成コントロールは、図９に関して論じられるレビューコントロール８０５等の一定期間中の第１のアプリケーションの実行中に記録されたユーザ入力シグナルに基づいて、第２のアプリケーションの自動実行を開始するようにレビューコントロールを含み得る。第２のアプリケーションの自動実行は、クラウドコンピューティングシステムからクライアントコンピュータシステムへの第２のアプリケーション自動実行のビデオストリームの伝送を含むことを理解されたい。また一組のミニアプリケーション生成コントロールは、図９に関して論じられる保存コントロール８０７等の指定されたデータストレージ位置に生成されたミニアプリケーションのストレージを指示する保存コントロールを含み得る。一実施形態において、指定されたデータストレージ位置は、クラウドコンピューティングシステム内にある。また、一実施形態において、指定されたデータストレージ位置は、クライアントコンピュータシステムを介して受信されるユニバーサルリソースロケータにより特定される。
【０１０２】
加えて、一組のミニアプリケーション生成コントロールは、図９に関して論じられる公開コントロール８０９等のウェブサイト上の生成されたミニアプリケーションへのリンクの公開を指示する、公開コントロールを含み得る。一実施形態において、ミニアプリケーションが公開されるウェブサイトは、ソーシャルメディアウェブサイトである。一実施形態において、ウェブサイト内の公開されたリンクの起動は、一定期間中の第１のアプリケーションの実行中に記録されたユーザ入力シグナルに基づいて、第２のアプリケーションの自動実行を開始する。第２のアプリケーションの自動実行は、ウェブサイトがレンダリングされる第２のクライアントコンピュータシステムへの第２のアプリケーション自動実行のビデオストリームの伝送を含む。第２のアプリケーションの自動実行のビデオストリームは、効果的に、ミニアプリケーションの生成器による第２のアプリケーションの実行のビデオプレイバックである。別の実施形態において、ウェブサイト内の公開されたリンクの起動は、一定期間中に第１のアプリケーションのミニアプリケーション生成器の実行の記録されたビデオプレイバックの第２のクライアントコンピュータシステム上のディスプレイを開始する。
【０１０３】
本方法は、ウェブサイトがレンダリングされる第２のクライアントコンピュータシステムに伝送される、第２のアプリケーション自動実行のビデオストリーム内のオーバーレイ画像として、図１７に関して論じられるプレイコントロール８５９等のプレイコントロールの提供も含み得る。プレイコントロールの起動は、例えば図１８に関して論じられる、ウェブサイトがレンダリングされる第２のクライアントコンピュータシステムを介して受信される新たなユーザ入力シグナルに基づいて、第２のアプリケーションの実行を指示する。本方法は、第２のアプリケーションの実行中に記録される新たなユーザ入力シグナルのストレージを指示するように、第２のクライアントコンピュータシステムに伝送されるビデオストリーム内で、保存コントロールをオーバーレイ画像として提供することも含み得る。加えて、本方法は、新たなユーザ入力シグナルに基づいて、ミニアプリケーションへのリンクの公開を指示するように、第２のクライアントコンピュータシステムに伝送されるビデオストリーム内で、公開コントロールをオーバーレイ画像として提供することを含み得る。
【０１０４】
いくつかの実施形態において、本方法は、図１７に関して論じられる購入コントロール８６１等のクラウドコンピューティングシステムからの第１のアプリケーションの購入およびダウンロードを可能にするように、第２のクライアントコンピュータシステムに伝送されるビデオストリーム内で、購入コントロールをオーバーレイ画像として提供することを含み得る。一実施形態において、購入コントロールは、クラウドコンピューティングシステムからの第１のアプリケーション全体の購入およびダウンロードを提供することができる。しかしながら、他の実施形態において、購入コントロールは、クラウドコンピューティングシステムからの第１のアプリケーションの特定された部分の購入およびダウンロードを提供することができる。特定された部分は、公開されたミニアプリケーションを構成する第２のアプリケーションの拡張に基づいてよく、その拡張が、第２のアプリケーションが派生した第１のアプリケーションをより多く含むようにする。また第２のアプリケーションの拡張は、ゲームレベルまたはゲームマイルストーン等の第１のアプリケーションの実行中に、特定された視線誘導標に対してインデックス付けされ得る。いくつかの実施形態において、拡張を購入するユーザには、その拡張が相応の購入価格に沿ってどのように定義されるかに基づいて１つ以上のオプションが付与され得る。
【０１０５】
図２０は、本発明の一実施形態による、ミニアプリケーションシステム３０００のブロック図を示す。ミニアプリケーションシステム３０００は、図７のミニアプリケーションモジュール２０００に関して論じられる機能を実装するように定義される。ミニアプリケーションシステム３０００は、１）第１のアプリケーションのプログラム命令のサブセット、および２）第１のアプリケーションのプログラム命令のサブセットの実行中に受信された一組のユーザ入力シグナルおよびアプリケーション状態データとしてミニアプリケーションを生成するように定義されたミニアプリケーション生成モジュール３０１０を含む。ミニアプリケーション生成モジュール３０１０は、図７に関して論じられるミニアプリケーション生成論理２００１を実装するように定義される。ミニアプリケーションシステム３０００は、そのミニアプリケーションへのリンクの公開を提供するように定義されるミニアプリケーション公開モジュール３０２０を含み、起動時に、ミニアプリケーション内の一組のユーザ入力シグナルに基づいて、第１のアプリケーションのプログラム命令のサブセットの自動実行を開始する。ミニアプリケーション公開モジュール３０２０は、図７に関して論じられるミニアプリケーション公開論理２００３を実装するように定義される。
【０１０６】
またミニアプリケーションシステム３０００は、新たな一組のユーザ入力シグナルに基づいて、第１のアプリケーションのプログラム命令のサブセットの実行を提供するように定義されるミニアプリケーション実行モジュール３０３０を含む。ミニアプリケーション実行モジュール３０３０は、図７に関して論じられるミニアプリケーション実行論理２００５を実装するように定義される。ミニアプリケーション実行モジュールは、第１のアプリケーションのプログラム命令のサブセットの実行中に記録された新たな一組のユーザ入力シグナルのストレージを指示するように定義される。いくつかの実施形態において、ミニアプリケーション実行モジュール３０３０は、クラウドコンピューティングシステムによってサービス提供される第１のアプリケーションへの完全なアクセスの購入を提供するように定義される。
【０１０７】
ミニアプリケーションシステム３０００に関して、第１のアプリケーションは、クラウドコンピューティングシステムによってクライアントコンピューティングシステムにサービス提供されることを理解されたい。また一実施形態において、ミニアプリケーション生成モジュール、ミニアプリケーション公開モジュール、およびミニアプリケーション実行モジュールのそれぞれは、クラウドコンピューティングシステムによってクライアントコンピューティングシステムにサービス提供される。
【０１０８】
本明細書に開示される実施形態は、アプリケーションのクラウド処理、および遠隔クライアントに対するクラウド処理のビデオフレームのストリーミングのためのシステムおよび方法に関する。クラウド処理は、画像コンテンツを審査するために、第１のアプリケーション（例えば、ビデオゲーム）のビデオフレームを処理および出力するアプリケーションを含むことができ、その審査に基づいて、オーバーレイコンテンツは、遠隔クライアントに伝送されるビデオフレームに統合され得る。一実施形態において、オーバーレイコンテンツは、第１のアプリケーションにより出力される既存の画像コンテンツとマージされ得る。このマージングは、様々な方法で処理することができ、無制限に、マージングは、特定のフレームまたは一組のフレーム内の画素を置き換えることと、検出された画像オブジェクトを追跡することと、検出された画像オブジェクトの画素がフレーム間を移動するか、または経時的に移動するにつれてそれらを置き換えることを含み得る。
【０１０９】
いくつかの例において、オーバーレイプロセスは、クライアントデバイスのユーザにより受信されたビデオフレームが、オーバーレイ処理が（例えば、クライアントのディスプレイ上で）行われたことを検出しないように最適化され、その出力は、ネイティブアプリケーション（例えば、第１のアプリケーション）がフレームを生成したように見える。様々な例において、第１のアプリケーションはビデオゲームアプリケーションであり得る。オンラインウェブプレイを可能にするシステムにおいて、アカウントを持つユーザには、第１のアプリケーションとして考えることができる、そこから選択するための大きなビデオゲームのライブラリが提供されてもよい。この文脈において、多くのユーザにはアカウントが提供され得、多くのユーザは、ゲームを選択し、単独またはソーシャルネットワークの友達とともにマルチプレイヤモードのいずれかで同時にプレイすることができる。第１のアプリケーションの遠隔実行の間に、１つ以上の遠隔実行されたアプリケーションは、第１のアプリケーションの出力であるビデオフレームを審査および処理する。これらの遠隔実行されたアプリケーションは、オーバーレイプロセスを行い、ゲームプレイと同期して、本来ネイティブアプリケーションの一部ではない新たな経験を提供することができる。
【０１１０】
本明細書に論じられるように、アプリケーションを遠隔処理するサーバは、クラウド処理システムと称され得る。クラウド処理システムは、可視化ハードウェアおよびソフトウェアを使用し得る多くのサーバを利用することができ、クラウド処理システムは、複数のデータセンターの間に分散され得る。良好に配置されたデータセンターは、それらの地理的分散によりストリーミングにおける遅延の低減を可能にする。いくつかの実施形態において、ロードバランシングは、遅延を低減し、遠隔ゲームプレイの性能を改善するために使用され得る。
【０１１１】
いくつかの実施形態は、本明細書において具体的に図示および／または説明される。しかし当然のことながら、修正および変型は、上記教示により網羅され、その趣旨および意図される範囲から逸脱することなく添付の請求項の範囲内である。例えば、本明細書で提供される例は、ビデオゲームを対象とするが、論じられるシステムおよび方法は、他のインタラクティブビデオシステムに適用され得る。本明細書で提供される例は、主にビデオの送達を対象とするが、本明細書に記載されるシステムおよび方法は、オーディオフレームの生成およびオーディオストリームの送達に適用され得る。いくつかの実施形態において、オーディオおよびビデオストリームは、オーディオ−ビデオストリームの一部として一緒に生成および送達される。
【０１１２】
本明細書で論じられる実施形態は、本発明の例示である。本発明のこれらの実施形態は図を参照して説明されるため、本明細書に記載される方法および特定の構造の様々な修正または適合は、当業者に明らかとなり得る。本発明の教示に依存し、これらの教示が当該技術分野を進展させたこのような修正、適合、または変型のすべては、本発明の趣旨および範囲内であると考慮される。したがって、本発明は、いかなる方法においても本明細書に例示される実施形態のみに限定されないと理解されるため、本明細書で提供される説明および図面は、限定的な意味で考慮されてはならない。
【０１１３】
本明細書において言及されるコンピューティングは、集積回路、マイクロプロセッサ、パーソナルコンピュータ、サーバ、分散コンピューティングシステム、通信デバイス、ネットワークデバイス等、およびそれらの様々な組み合わせを備え得る。コンピューティングシステムは、揮発性および／または非揮発性メモリ、例えば、ランダムアクセスメモリ（ＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、磁気媒体、光学媒体、ナノ媒体、ハードドライブ、コンパクトディスク、デジタル汎用ディスク（ＤＶＤ）、および／またはデータベース内等にアナログもしくはデジタル情報を記憶するために構成された他のデバイスを備えてもよい。上記の論理の様々な例は、ハードウェア、ファームウェア、もしくはコンピュータ可読媒体上に記憶されたソフトウェア、またはそれらの組み合わせを備え得る。コンピュータ可読媒体は、本明細書において使用されるとき、明らかに紙を除外する。本明細書に記載される方法のコンピュータにより実装されるステップは、実行されるとコンピューティングシステムにステップを行わせるコンピュータ可読媒体上に記憶された一組の命令を含み得る。
【０１１４】
プログラムソフトウェアからの命令に準拠して特定の機能を行うようにプログラムされたコンピューティングシステムは、それらの特定機能を行うための特殊用途のコンピューティングシステムである。特殊用途のコンピューティングシステムにより操作される一方でそれらの特定の機能を行うデータは、コンピューティングシステムのバッファ内に少なくとも電子的に保存され、それぞれ記憶されたデータへの変更により、ある状態から次の状態に特別目的のコンピューティングシステムを物理的に変更する。本明細書で論じられる論理は、ハードウェア、ファームウェア、および／またはコンピュータ可読媒体上に記憶されるソフトウェアを含み得る。この論理は、特殊用途のコンピューティングシステムを生成するように、電子デバイス内で実装され得る。
【０１１５】
本発明の実施形態は、携帯型デバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能なコンシューマーエレクトロニクス、ミニコンピュータ、メインフレームコンピュータ等を含む様々なコンピュータシステムを用いて実施され得る。本発明は、ネットワークを介してリンクされる遠隔処理デバイスによりタスクが行われる分散コンピューティング環境において実施することもできる。
【０１１６】
上記の実施形態を念頭に置いて、本発明は、コンピュータシステム内に記憶されたデータを伴う様々なコンピュータ実装されたオペレーションを用いることができることを理解されたい。これらのオペレーションは、物理的量の物理的操作を必要とするものである。本発明の一部を形成する本明細書に記載されるオペレーションのいずれかは、有用なマシンオペレーションである。本発明は、これらのオペレーションを行うためのデバイスまたは装置にも関する。本装置は、特殊用途コンピュータ等の必要な目的で特別に構成され得る。特殊用途のコンピュータとして定義されるとき、コンピュータは、特殊用途の一部ではない他の処理、プログラム実行、またはルーチンも行うことができる一方で、依然として特殊用途のためにオペレーティングすることができる。あるいは、このオペレーションは、コンピュータメモリに記憶され、キャッシュされるか、またはネットワーク上で得られる１つ以上のコンピュータプログラムにより選択的に起動または構成される汎用コンピュータにより処理され得る。データがネットワーク上で得られるとき、ネットワーク、例えば、コンピューティングリソースのクラウドにより処理されてもよい。
【０１１７】
本発明の実施形態は、ある状態から別の状態にデータを伝送するマシンとしても定義され得る。伝送されたデータは、ストレージに保存され、次にプロセッサにより操作され得る。したがってプロセッサは、あるものから別のものへデータを伝送する。なおもさらには、本方法は、ネットワーク上で接続され得る１つ以上のマシンまたはプロセッサにより処理され得る。各マシンは、ある状態またはものから別の状態またはものにデータを変換することができ、データを処理する、データをストレージに保存する、データをネットワーク上で伝送する、結果を表示する、または結果を別のマシンに通信することもできる。
【０１１８】
本発明は、非一時的コンピュータ可読媒体上のコンピュータ可読コードとして実施することもできる。非一時的コンピュータ可読媒体は、データを記憶することができる任意のデータストレージデバイスであり、以降コンピュータシステムにより読み出され得る。非一時的コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読み出し専用メモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、ならびに他の光学および非光学データストレージデバイスが挙げられる。非一時的コンピュータ可読媒体は、コンピュータ可読コードが分散様式で記憶および実行されるように、ネットワーク連結されたコンピュータシステム上に分散したコンピュータ可読有形媒体を含むことができる。
【０１１９】
本方法のオペレーションは、特定の順序で記載されているが、他のハウスキーピングオペレーションが、オペレーション間で行われ得るか、またはオペレーションは、それらがわずかに異なる時点で起こるように調整され得るか、または本方法のオペレーションの操作が所望の方法で行われる限り、その処理と関連付けられた様々な間隔での処理オペレーションの発生を可能にするシステムにおいて分散され得ることを理解されたい。
【０１２０】
前述の発明は、理解を明確にする目的である程度詳細に説明されたが、当然のことながら、ある変更および修正が添付の特許請求の範囲内で実践され得る。したがって、本実施形態は、制限的でなく、例示として見なされるものであり、本発明は、本明細書に付与される詳細に限定されないが、添付の請求項の範囲および均等物内で修正されてもよい。
【図１】
2014130589.tif 000003
【図２】
2014130589.tif 000004
【図４】
2014130589.tif 000005
【図５】
2014130589.tif 000006
【図６】
2014130589.tif 000007
【図７】
2014130589.tif 000008
【図１９】
2014130589.tif 000009
【図２０】
2014130589.tif 000010
【図３】
2014130589.tif 000011
【図８】
2014130589.tif 000012
【図９】
2014130589.tif 000013
【図１０】
2014130589.tif 000014
【図１１】
2014130589.tif 000015
【図１２】
2014130589.tif 000016
【図１３】
2014130589.tif 000017
【図１４】
2014130589.tif 000018
【図１５】
2014130589.tif 000019
【図１６】
2014130589.tif 000020
【図１７】
2014130589.tif 000021
【図１８】
2014130589.tif 000022
【外国語明細書】
2014130589000001.pdf