(58)【調査した分野】(Int.Cl.,DB名)
クラウドゲームシステムのサーバによって実行される方法であって、セカンダリクライアントデバイスの1つへのゲームプレイのデバイスハンドオーバのために使用できる前記セカンダリクライアントデバイスのオプションを識別するために実行され、
プライマリクライアントデバイスを用いて開始されたゲームをプレイするためのプレイ要求に応答して、前記プライマリクライアントデバイスのための前記ゲームのゲームプレイのセッションを確立し、前記クラウドゲームシステムの前記サーバが、前記プライマリクライアントデバイスにビデオフレームをストリーミングするために前記ゲームを実行するように構成され、
前記プライマリクライアントデバイスに対してローカルであると識別された1つまたは複数のセカンダリクライアントデバイスのプロファイルを生成する要求を前記サーバによって受信し、セカンダリクライアントデバイスのために生成された前記プロファイルが、前記セカンダリクライアントデバイスのためのデバイス属性を識別するように構成され、前記プライマリクライアントデバイスに対してローカルである前記セカンダリクライアントデバイスの検出と前記セカンダリクライアントデバイスの前記プロファイルの生成とはバックグラウンドで実行され、前記プロファイルでの前記デバイス属性が評価されて、前記セカンダリクライアントデバイスが前記ゲームのゲームプレイのために適正化されたかを判定し、
前記ゲームプレイ中に前記プライマリクライアントデバイスにハンドオーバオプションを前記サーバによって提供し、前記ハンドオーバオプションが、前記プロファイル内に含まれる前記デバイス属性の評価に基づいて、前記ゲームのゲームプレイのためのデバイス能力を有した前記セカンダリクライアントデバイスの1つまたは複数を選択するように構成され、
前記プライマリクライアントデバイスから、前記ハンドオーバオプションによって識別された前記ゲームをプレイするための特定のセカンダリクライアントデバイスの選択を前記サーバによって受信し、前記選択は、前記プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止し、前記ゲームのためのゲーム状態を保存するように構成され、前記一時停止がさらに、前記特定のセカンダリクライアントデバイス上での前記ゲームのプレイを再開するオプションを提供するように構成され、
前記特定のセカンダリクライアントデバイス上で前記ゲームの前記プレイを継続するために、前記特定のセカンダリクライアントデバイスから前記サーバによって再開要求を受信し、前記再開要求は、前記サーバに、前記ゲームの前記ゲーム状態にアクセスさせ、前記特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続させるように構成されるものである、方法。
プロファイルを生成する前記要求が、前記プライマリクライアントデバイスに対してローカルであると識別された前記1つまたは複数のセカンダリクライアントデバイスから受信される、請求項1に記載の方法。
前記プライマリクライアントデバイスに対してローカルである前記セカンダリクライアントデバイスは、前記プライマリクライアントデバイスの位置情報を使用して判定される、請求項1に記載の方法。
前記セカンダリクライアントデバイスは、前記プライマリクライアントデバイス及び前記セカンダリクライアントデバイス内に実装された1つまたは複数のサービス検出プロトコルを使用して識別される、請求項1に記載の方法。
プロファイルを生成する前記要求は、前記プライマリクライアントデバイスから受信され、前記要求は、前記プロファイルが生成される前記セカンダリクライアントデバイスのデバイス識別子を含む、請求項1に記載の方法。
前記特定のセカンダリクライアントデバイスからの前記再開要求は、前記特定のセカンダリクライアントデバイスでユーザインタラクションを提供するために使用される入力方法を含み、前記入力方法は、前記特定のセカンダリクライアントデバイスの前記入力方法を使用して提供された前記ユーザインタラクションを受け入れるために、前記ゲームのゲームプレイの調整に使用される、請求項1に記載の方法。
前記プライマリクライアントデバイスの1つまたは複数の入力デバイスを前記特定のセカンダリクライアントデバイスに引き渡し、この引き渡しには、前記1つまたは複数の入力デバイスを前記プライマリクライアントデバイスから自動的に切断することと、及び前記1つまたは複数の入力デバイスを前記特定のセカンダリクライアントデバイスに自動的に接続することが含まれる、請求項1に記載の方法。
クラウドゲームシステムのサーバによって実行される方法であって、セカンダリクライアントデバイスの1つへのゲームプレイのデバイスハンドオーバのために使用できる前記セカンダリクライアントデバイスのオプションを識別するために実行され、
プライマリクライアントデバイスからゲームをプレイするためのプレイ要求に応答して、前記プライマリクライアントデバイスのためのゲームのゲームプレイのセッションを確立し、前記クラウドゲームシステムの前記サーバは、前記プライマリクライアントデバイスにビデオフレームをストリーミングするために前記ゲームを実行するように構成され、
前記プライマリクライアントデバイスに対してローカルであると識別された1つまたは複数のセカンダリクライアントデバイスを検出し、
前記プライマリクライアントデバイス及び前記プライマリクライアントデバイスに対してローカルである前記セカンダリクライアントデバイスの前記1つまたは複数のそれぞれのプロファイルを生成し、前記プライマリクライアントデバイスまたはセカンダリクライアントデバイスのために生成された前記プロファイルは、前記それぞれのプライマリクライアントデバイスまたは前記セカンダリクライアントデバイスのデバイス属性を識別するように構成され、
前記セカンダリクライアントデバイスのデバイス属性を評価して前記セカンダリクライアントデバイスが前記ゲームのプレイに適正化されているかを判定し、
前記セカンダリクライアントデバイスが前記ゲームのプレイに適正化されていない場合、前記セカンダリクライアントデバイスにサービスを与え、この与えられるサービスは前記セカンダリクライアントデバイスを前記ゲームのプレイのために適正化するように選択されるものであり、
前記ゲームプレイ中に前記プライマリクライアントデバイスにハンドオーバオプションを前記サーバによって提供し、前記ハンドオーバオプションは、前記プライマリクライアントデバイスに対してローカルであり、前記プライマリクライアントデバイス及び前記セカンダリクライアントデバイスの前記プロファイルに基づいて、前記ゲームのゲームプレイ体験を向上させることができるデバイス属性を有する、1つまたは複数のセカンダリクライアントデバイスを識別するように構成され、
前記プライマリクライアントデバイスから、前記ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択を前記サーバによって受信し、前記選択は、前記プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止し、前記ゲームのためのゲーム状態を保存するように構成され、前記一時停止は、前記特定のセカンダリクライアントデバイス上での前記ゲームのプレイを再開するオプションを提供するように構成され、
前記特定のセカンダリクライアントデバイスから前記サーバによって再開要求を受信して、前記特定のセカンダリクライアントデバイス上で前記ゲームの前記プレイを継続し、前記再開要求は、前記サーバに、前記ゲームの前記ゲーム状態を取得させ、前記特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続させるように構成される、方法。
前記プライマリクライアントデバイス及び前記1つまたは複数のセカンダリクライアントデバイスの前記プロファイルは、トリガイベントに応答して生成される、請求項14に記載の方法。
前記1つまたは複数のセカンダリクライアントデバイスは、前記プライマリクライアントデバイス及び前記セカンダリクライアントデバイス内に実装された1つまたは複数のサービス検出プロトコルのサービスを使用することによって識別される、請求項14に記載の方法。
ゲームのゲームプレイのデバイスハンドオーバに使用されるセカンダリクライアントデバイスのオプションを識別するためのクラウドゲームシステムであって、前記クラウドゲームシステムは、
複数のゲームを実行するように構成されたアプリケーションサーバを有し、前記アプリケーションサーバは、
プレイのために選択された前記ゲームのゲームコードを識別し、前記ゲームコードを実行して前記ゲームのためのビデオフレームを生成するように構成されたゲーム実行エンジンを有し、
情報を交換するために、プライマリクライアントデバイスに対してローカルであると識別された1つまたは複数のセカンダリクライアントデバイスとの通信接続を確立するように構成されたクライアントデバイスプロファイリングモジュールを有し、前記交換された情報は、前記1つまたは複数のセカンダリクライアントデバイスのそれぞれのデバイス属性を識別するために使用され、セカンダリクライアントデバイスの前記デバイス属性は、前記セカンダリクライアントデバイスのプロファイルを生成するために使用されるものであり、前記セカンダリクライアントデバイスのプロファイルは、前記プロファイル内に含まれる前記デバイス属性の評価に基づいて、前記セカンダリクライアントデバイスを前記ゲームをプレイするために適正化するように用いられるものであり、前記クライアントデバイスプロファイリングモジュールは、前記セカンダリクライアントデバイスを識別して前記プロファイルをバックグラウンドで生成し、
ハンドオーバマネージャを有し、このハンドオーバマネージャは、
前記ゲームをプレイするために適正化された前記セカンダリクライアントデバイスの選択されたデバイスを識別し、前記セカンダリクライアントデバイスの選択されたデバイスのリストを、ハンドオーバオプションを使用して前記プライマリクライアントデバイスに提供し、
前記リストから特定のセカンダリクライアントデバイスの選択を受信し、前記選択により、前記ハンドオーバマネージャが、命令を含む信号を前記ゲーム実行エンジンに送信して、前記プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止し、前記ゲームのゲーム状態が保存され、
前記特定のセカンダリクライアントデバイス上でレンダリングするための再開オプションを提供し、
前記特定のセカンダリクライアントデバイスからの再開要求を受信し、前記再開要求により、前記ハンドオーバマネージャが、前記ゲーム実行エンジンに、ゲーム状態を取得して前記特定のセカンダリクライアントデバイスへの前記ゲームのビデオフレームのストリーミングを再開するように指示を行うように構成される、クラウドゲームシステム。
前記ハンドオーバマネージャは、前記特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続するように、前記ゲーム実行エンジンのデバイス識別子を、プライマリクライアントデバイス識別子から特定のセカンダリクライアントデバイス識別子に更新するようにさらに構成される、請求項20に記載のクラウドゲームシステム。
前記アプリケーションサーバは、前記ビデオフレームをストリーミングする前に、通信プロトコルに従って前記ビデオフレームを圧縮するように構成されたエンコーダをさらに含む、請求項20に記載のクラウドゲームシステム。
クラウドゲームシステムのサーバと相互作用して、クライアントデバイスによって開始されたゲームのゲームプレイのデバイスハンドオーバのためのセカンダリクライアントデバイスのオプションを識別するように構成されたクライアントデバイスであって、
前記ゲームのゲームプレイ中に前記サーバによって提供されるストリーミングビデオフレームデータを格納するように構成されたメモリを有し、
前記ストリーミングビデオフレームデータを処理し、前記ストリーミングビデオフレームデータを前記クライアントデバイスの1つまたは複数のデバイス構成要素上に提示するように構成されたプロセッサを有し、
切り替えモジュールを有し、この切り替えモジュールは、
前記クライアントデバイス及び前記1つまたは複数のセカンダリクライアントデバイスに実装された1つまたは複数のデバイス検出プロトコルを使用することによって、前記クライアントデバイスに対してローカルである1つまたは複数のセカンダリクライアントデバイスを検出し、
前記1つまたは複数のセカンダリクライアントデバイスをプロファイリングするために、前記クラウドゲームシステムの前記サーバに要求を転送し、前記プロファイリングは、デバイス能力を評価して前記ゲームのゲームプレイのために前記1つまたは複数のセカンダリクライアントデバイスを適正化するために用いられるものであり、
ユーザ選択のために前記クライアントデバイスのユーザインターフェイス上に提示される、1つまたは複数のセカンダリクライアントデバイスのリストを、ゲームプレイのために適正化された、前記1つまたは複数のセカンダリクライアントデバイスのリストと共に、ハンドオーバオプションを前記サーバから受信し、
特定のセカンダリクライアントデバイスのユーザ選択を前記サーバに転送し、前記ユーザ選択により、前記クライアントデバイスへのビデオフレームデータのストリーミングが一時停止されるように構成され、前記検出と、前記1つまたは複数のセカンダリクライアントデバイスのプロファイルの生成とはバックグラウンドで実行される、クライアントデバイス。
前記プロセッサは、前記ストリーミングビデオフレームデータを提示する前に、前記ストリーミングビデオフレームデータを解凍するためにデコーダを使用する、請求項25に記載のクライアントデバイス。
クラウドゲームシステムのサーバによって実行されたときにセカンダリクライアントデバイスの1つへのゲームプレイのデバイスハンドオーバに使用することができる前記セカンダリクライアントデバイスのオプションを識別する方法を提供するプログラミングコードを有する非一時的なコンピュータ可読媒体であって、前記コンピュータ可読媒体は、
ゲームをプレイするためにプライマリクライアントデバイスから受信されたプレイ要求に応答して、前記プライマリクライアントデバイスのための前記ゲームのゲームプレイのセッションを確立するためのプログラミングコードを有し、前記セッションの確立には、前記ゲームのためのゲームコードの実行と、前記プライマリクライアントデバイスにビデオフレームのストリーミングとが含まれ、
前記プライマリクライアントデバイスに対してローカルであると識別された1つまたは複数のセカンダリクライアントデバイスのプロファイルを生成する要求を受信するためのプログラミングコードを有し、セカンダリクライアントデバイスのために生成された前記プロファイルは、前記セカンダリクライアントデバイスのためのデバイス属性を識別するように構成され、前記セカンダリクライアントデバイスの検出と前記プロファイルの生成とはバックグラウンドで実行され、前記プロファイル内の前記デバイス属性が評価されて、前記ゲームのゲームプレイのために前記セカンダリクライアントデバイスが適正化されたかを判定し、
前記ゲームプレイ中に前記プライマリクライアントデバイスにハンドオーバオプションを提供するためのプログラミングコードを有し、前記ハンドオーバオプションは、前記プロファイル内に含まれる前記デバイス属性の評価に基づいて、前記ゲームのプレイのためのデバイス能力を有する前記セカンダリクライアントデバイスの1つまたは複数を識別するように構成され、
前記プライマリクライアントデバイスから、前記ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択を受信するためのプログラミングコードを有し、前記選択は、前記プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止して前記ゲームのためのゲーム状態を保存するように構成され、前記一時停止は、さらに、前記特定のセカンダリクライアントデバイス上での前記ゲームのプレイを再開するオプションを提供するように構成され、
前記特定のセカンダリクライアントデバイス上で前記ゲームの前記プレイを継続するために、前記特定のセカンダリクライアントデバイスから再開要求を受信するためのプログラミングコードを有し、前記再開要求は、前記ゲームの前記ゲーム状態にアクセスして、前記特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続することによって、ゲームプレイを再開するように構成される、非一時的なコンピュータ可読媒体。
【発明の概要】
【0004】
本発明の実施形態は、クラウドゲームサイトによってホストされるゲームのゲームプレイを引き渡すための代替クライアントデバイスのオプションを識別するために使用される方法、システム及びコンピュータ可読媒体を開示する。
様々な実施形態は、クラウドゲームサイト上のクラウドゲームシステムによってホストされるゲームをプレイするために現在使用されているプライマリクライアントデバイスが、プライマリクライアントデバイスに対してローカルであると識別されたセカンダリクライアントデバイスのバックグラウンドプロファイリングを行うことを可能にする。セカンダリクライアントデバイスのプロファイリングは、どのセカンダリクライアントデバイスがゲームのゲームプレイセッションを継続するために適しているかを判定するために行われ、デバイスハンドオーバ要求がプライマリクライアントデバイスから受信される前に実行される。
プロファイルにより、各セカンダリクライアントデバイスのデバイス属性が識別される。いくつかの実施形態では、クラウドゲームシステムは、異なるセカンダリクライアントデバイスにサービスをプロビジョニングするためにプロファイルを使用して、これらのセカンダリクライアントデバイスをゲームがプレイできる状態にさせ得る。クラウドゲームシステムによってホストされる各ゲームは、それ自体のサービス及び属性要件を有し得る。
【0005】
プロファイリングにより、クラウドゲームシステムは、各セカンダリクライアントデバイスで利用可能なサービス、デバイス属性を識別し、クラウドゲームサイト上で実行されているゲームとの相互作用に使用するために、それぞれのセカンダリクライアントデバイスが利用可能ではない、または必要なレベルに達していない、サービス、デバイス属性を判定することができる。
いくつかの実施形態では、クラウドゲームシステムは、各セカンダリクライアントデバイスのプロファイルを使用して、セカンダリクライアントデバイスのうちの特定のデバイスのサービスまたはデバイス属性をブーストするように適切なリソースをプロビジョニングし得る。そのようなプロビジョニングは、ゲームプレイセッション中にゲームのゲームプレイのためにプライマリクライアントデバイスによってデバイスハンドオーバのためにセカンダリクライアントデバイスのうちの特定のデバイスが選択され得ることを見越して、プライマリクライアントデバイスによって開始されたゲームプレイセッション中にクラウドゲームシステムによって事前に、またはバックグラウンドで実行され得る。
【0006】
プライマリクライアントデバイスから、デバイスハンドオーバの要求がクラウドゲームシステムで受信されると、プロファイリングにより、クラウドゲームシステムは、プライマリクライアントデバイスから特定のセカンダリクライアントデバイスへ、より高速でフリクションレス(問題を生じない、あるいは摩擦を生じない)デバイスハンドオーバを実行し、セカンダリクライアントデバイスは、ゲームプレイセッションを続けるために必要なリソース(サービス、デバイス属性)を有することができる。
換言すれば、ハンドオーバ要求が受信されると、システムは、ユーザがゲームをプレイするためにクラウドゲームサイトと相互作用するクライアントデバイスを切り替えることができるように、プロファイリングにより、クラウドゲームシステムは、セカンダリクライアントデバイスを適正化することができる。
【0007】
正常に行われたデバイス変更には、ゲームプレイを一時停止し、プライマリクライアントデバイスへのゲームのビデオフレームのストリーミングを停止し、ゲームのゲーム状態を保存し、ハンドオーバオプションによって識別されるセカンダリクライアントデバイスにゲームのゲームプレイを再開するためのオプションを提供する、ゲームを実行しているクラウドゲームシステムのサーバが含まれる。再開要求をセカンダリクライアントデバイスから受信すると、クラウドゲームシステム上のサーバは、ゲーム状態を取得し、ゲームが一時停止した場所からゲームプレイを再開し、セカンダリクライアントデバイスへのゲームのビデオフレームのストリーミングを継続する。
【0008】
セカンダリクライアントデバイスを事前に検出しプロファイリングすると、デバイスハンドオーバ中にかなりの待ち時間が短縮される。ハンドオーバオプションで識別されるセカンダリクライアントデバイスは、プライマリクライアントデバイスを使用しているときと同様のゲームプレイ体験を提供するのに適している。さらに、プロファイリング及びプロビジョニングは、ビデオフレームが最小限の待ち時間でセカンダリクライアントデバイスのユーザに確実に提供されるようにする。デバイスのハンドオーバ中にゲームを一時停止及び/またはゲーム状態を保存することにより、ゲームのゲームプレイをより高速に再開することができる。
【0009】
一実施形態では、方法が提供される。この方法は、クラウドゲームシステムのサーバによって実行され、セカンダリクライアントデバイスの1つへのゲームプレイのデバイスハンドオーバのために使用できるセカンダリクライアントデバイスのオプションを識別するために使用される。
方法は、ゲームをプレイするためにプライマリクライアントデバイスから受信された要求に応答して、プライマリクライアントデバイスのゲームのゲームプレイのセッションをサーバによって確立することを含む。クラウドゲームシステムのサーバは、ゲームを実行し、プライマリクライアントデバイスにビデオフレームをストリーミングするように構成される。
要求は、プライマリクライアントデバイスに対してローカルであると識別された1つまたは複数のセカンダリクライアントデバイスのプロファイルを生成するために、サーバによって受信される。
プロファイルは、セカンダリクライアントデバイスのデバイス属性を識別するように構成される。ゲームプレイ中に、ハンドオーバオプションがサーバによってプライマリクライアントデバイスに提供される。ハンドオーバオプションは、プロファイルに基づいて、デバイスハンドオーバのための1つまたは複数のセカンダリクライアントデバイスを識別するように構成される。
ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択は、プライマリクライアントデバイスから受信される。選択は、プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止し、ゲームのゲーム状態を保存するように構成される。一時停止は、特定のセカンダリクライアントデバイス上でゲームの再生を再開するオプションを提供するように構成される。
再開要求は、セカンダリクライアントデバイス上でゲームのプレイを継続するために、特定のセカンダリクライアントデバイスから受信される。再開要求は、サーバがゲームのゲーム状態にアクセスし、特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続するように構成される。
【0010】
いくつかの実施形態では、プロファイルを生成するための要求はセッション中に受信される。
【0011】
いくつかの実施形態では、特定のセカンダリクライアントデバイスは、セッションのリマインダのために、プライマリクライアントデバイスとして指定される。
【0012】
いくつかの実施形態では、プロファイルを生成する要求は、トリガイベントの発生に応答してトリガされる。
【0013】
いくつかの実施形態では、プロファイルへの要求は、プライマリクライアントデバイスに対してローカルであると識別された、それぞれのセカンダリクライアントデバイスから受信される。
【0014】
いくつかの実施形態では、セカンダリクライアントデバイスを適正化するために使用されるデバイス属性は、ゲームの要件に従って順位付けされる。ハンドオーバオプションで提供されるセカンダリクライアントデバイスは、デバイス属性の順位付けに従って編成される。
【0015】
いくつかの実施形態では、セカンダリクライアントデバイスは、プライマリクライアントデバイス及びセカンダリクライアントデバイス内に実装された1つまたは複数のサービス検出プロトコルを使用して識別される。
【0016】
いくつかの実施形態では、プロファイルを生成するための要求はプライマリクライアントデバイスから受信される。要求は、プロファイルを生成するセカンダリクライアントデバイスのデバイス識別子を含む。
【0017】
別の実施形態では、方法は、クラウドゲームシステムのサーバによって実行される。方法は、セカンダリクライアントデバイスの1つへのゲームプレイのデバイスハンドオーバに使用できるセカンダリクライアントデバイスのオプションを識別するために実行される。方法は、ゲームをプレイするためのプライマリクライアントデバイスからの要求に応答して、プライマリクライアントデバイスのゲームのゲームプレイのセッションを確立することを含む。
クラウドゲームシステムのサーバは、ゲームを実行し、プライマリクライアントデバイスにビデオフレームをストリーミングするように構成される。プライマリクライアントデバイスに対してローカルであると識別された1つまたは複数のセカンダリクライアントデバイスが検出される。
プロファイルは、プライマリクライアントデバイス及び、プライマリクライアントデバイスに対してローカルであると識別された1つまたは複数のセカンダリクライアントデバイスに対して生成される。プロファイルは、各プライマリ及びセカンダリクライアントデバイスのデバイス属性を識別するように構成される。
ハンドオーバオプションは、ゲームプレイ中にサーバによってプライマリクライアントデバイスに提供される。ハンドオーバオプションは、プライマリ及びセカンダリクライアントデバイスのために生成されたプロファイルに基づいて、プライマリクライアントデバイスに対してローカルであり、ユーザのゲームプレイ体験を向上させることができるデバイス属性を有する1つまたは複数のセカンダリクライアントデバイスを識別するように構成される。
ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択は、プライマリクライアントデバイスからサーバによって受信される。選択は、プライマリクライアントデバイスへのビデオフレームのストリーミングを一時停止し、ゲームのゲーム状態を保存するように構成される。一時停止は、ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイス上でゲームのプレイを再開するための再開オプションを提供するように構成される。
再開要求は、セカンダリクライアントデバイス上でゲームプレイのセッションを継続するために、特定のセカンダリクライアントデバイスからサーバによって受信される。再開要求は、サーバがゲームのゲーム状態を取得し、特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続するように構成される。
【0018】
いくつかの実施形態では、プライマリ及び1つまたは複数のセカンダリクライアントデバイスのプロファイルは、トリガイベントに応答して生成される。
【0019】
いくつかの実施形態では、プライマリクライアントデバイスからの要求に応答して、プライマリ及び1つまたは複数のセカンダリクライアントデバイスのプロファイルが生成される。
【0020】
さらに別の実施形態では、クラウドゲームシステムが開示される。クラウドゲームシステムは、複数のゲームを実行するように構成されたアプリケーションサーバを含む。アプリケーションサーバ内のゲーム実行エンジンは、プライマリクライアントデバイスからゲームをプレイする要求を受信する。それに応じて、ゲーム実行エンジンは、ゲームのインスタンスを実行し、ゲームのビデオフレームを生成する。アプリケーションサーバは、生成されたビデオフレームを処理し、ビデオフレームを符号化し、ビデオフレームをプライマリクライアントデバイスにストリーミングするように構成される。
アプリケーションサーバ内のクライアントデバイスプロファイリングモジュールは、プライマリクライアントデバイスに対してローカルであると識別された1つまたは複数のセカンダリクライアントデバイスのプロファイルを生成するための要求を受信するように構成され、1つまたは複数のセカンダリクライアントデバイスは、プライマリクライアントデバイスのプロファイルに基づいて識別される。
クライアントデバイスプロファイリングモジュールは、さらに、セカンダリクライアントデバイスのリストを生成するように構成される。アプリケーションサーバ内のハンドオーバマネージャは、セカンダリクライアントデバイスのリストを取得し、ゲームをプレイするためにセカンダリクライアントデバイスを適正化し、ハンドオーバオプションを使用して適正化されたセカンダリクライアントデバイスの絞り込まれたリストをプライマリクライアントデバイスに転送するように構成される。
ハンドオーバマネージャは、ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択を受信し、それに応じて、信号をゲーム実行エンジンに転送し、プライマリクライアントデバイスへのビデオフレームのストリーミングを一時停止するようにさらに構成される。
いくつかの実施形態では、一時停止信号に応答して、ゲームのゲーム状態も保存される。ハンドオーバマネージャは、特定のセカンダリクライアントデバイスから再開要求を受信すると、それに応じて、ゲーム実行エンジンに、ゲームプレイを再開し、特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続するように信号を送る。ゲームのゲーム状態が保存される実施形態では、ゲーム実行エンジンは、再開要求に応答して、ゲームのゲーム状態を取得し、ゲームのゲーム状態によって示されているように、一時停止された位置からゲームのゲームプレイを再開し得る。
【0021】
いくつかの実施形態では、ハンドオーバマネージャは、ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択を受信することに応答して、ゲームのゲームプレイを一時停止するように一時停止マネージャに信号を送るように構成される。一時停止マネージャは、ゲームのゲームプレイを一時停止するようにゲーム実行エンジンに信号を転送するように構成される。
【0022】
いくつかの実施形態では、ハンドオーバマネージャは、ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択に応答して、ゲームのビデオフレームを特定のプライマリクライアントデバイスに送信することを一時停止するように、アプリケーションサーバのオペレーティングシステムに信号を送るように構成される。
【0023】
いくつかの実施形態では、ハンドオーバマネージャは、特定のセカンダリクライアントデバイスから再開要求を受信したことに応答して、ゲームのゲームプレイを再開するように再開マネージャに信号を送るように構成される。再開マネージャは、ゲーム実行エンジンがゲームのゲーム状態を取得し、特定のセカンダリクライアントデバイスへのゲームのビデオフレームのストリーミングを再開させることを要求するゲーム実行エンジンに信号を転送するように構成される。
【0024】
いくつかの実施形態では、ハンドオーバマネージャは、ゲームプレイを再開するために再開マネージャに信号を送るように構成される。再開マネージャは、信号を受信し、次に、特定のセカンダリクライアントデバイスからの再開要求を受信したことに応答して、ゲームのビデオフレームを特定のセカンダリクライアントデバイスに送信することを再開するように、アプリケーションサーバのオペレーティングシステムに信号を送る。
【0025】
いくつかの実施形態では、ハンドオーバマネージャは、さらに、特定のセカンダリクライアントデバイスをプライマリクライアントデバイスとして指定するように構成される。
【0026】
本発明の他の態様及び利点は、本発明の原理を例示により示す添付の図面と関連した、以下の詳細な説明から明らかになるであろう。
【0027】
本発明は、そのさらなる利点と共に、添付の図面と関連した以下の説明を参照することによって最もよく理解されるであろう。
【発明を実施するための形態】
【0029】
以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細が述べられている。しかしながら、本発明は、これらの具体的な詳細の一部または全部を用いずに実施し得ることは、当業者には明らかであろう。他の例では、本発明を不明瞭にしないために、周知の処理工程については詳細には説明していない。
【0030】
本発明の様々な実施形態によれば、ユーザは、ゲームプレイのためのゲームを選択するために、プライマリクライアントデバイスを使用して、ユーザアカウントを通じてクラウドゲームシステムにアクセスし得る。クラウドゲームシステムは、クラウドゲームシステムに利用可能なリソースを使用してゲームプレイのための複数のオンラインゲームをホストするように構成される。
ユーザがクラウドゲームシステムにアクセスすることに応答して、クラウドゲームシステムは、ユーザアカウントデータベースに格納されたユーザアカウント情報を使用してユーザアカウントを認証し、ゲームプレイのためにユーザアカウントに利用可能なゲームのリストを提供する。
ゲームプレイのためのゲームのユーザ選択は、クラウドゲームシステムをトリガして、プライマリクライアントデバイスの地理的位置の近傍にあるデータセンターを識別し、データセンター内のサーバに要求を送信して、ゲームのインスタンスを実行し、ゲームプレイセッションを確立する。
サーバは、ゲームを実行するために必要なリソース(すなわち、処理及び通信リソース)を提供し、ゲームのビデオフレームを符号化し、レンダリング及びユーザインタラクションのために、符号化されたゲームのビデオフレームのプライマリクライアントデバイスへのストリーミングを開始する。
プライマリクライアントデバイスで提供されるユーザインタラクションは、クラウドゲームシステム上で実行されるゲームのゲーム結果に影響を与えるために使用される。いくつかの実施形態では、プライマリクライアントデバイスとのゲームプレイセッションを開始した直後に、クラウドゲームシステムのサーバは、プライマリクライアントデバイスのプロファイルを生成し得る。
プライマリクライアントデバイスのプロファイリングは、プライマリクライアントデバイスが、データセンターのサーバからストリーミングされたゲームのストリーミングビデオフレームを受信し処理することができるように、プライマリクライアントデバイスの帯域幅、待ち時間、及び他のリソース変数が、データセンターの選択及び適正化の一部として十分であることを保証するために、サービス品質(QOS)検証の一部として開始し得る。本明細書で論じられる様々な実施形態は、オーディオフレームの生成、オーディオフレームの符号化、レンダリングのためのゲームの符号化されたオーディオフレームのプライマリクライアントデバイスへのストリーミングにも拡張し得ることに留意されたい。
【0031】
ゲームのゲームプレイ中に、プライマリクライアントデバイスは、プライマリクライアントデバイスに対してローカルであるセカンダリクライアントデバイスを能動的に探索して検出し、それぞれのセカンダリクライアントデバイスに信号を送信するか、またはクラウドゲームシステムのサーバによってプロファイルを取得する要求を有するセカンダリクライアントデバイスの1つを選択し得る。
プロファイルは、ゲームをプレイするためにセカンダリクライアントデバイスを適正化するために使用され得る。プライマリクライアントデバイスによって生成された要求は、セカンダリクライアントデバイスがプロファイルを取得するために使用する必要があるサーバを識別する。プロファイリングのために選択されたサーバは、ゲームを実行しているデータセンター内のサーバであり得るか、または、そのようなプロファイリングを実行するように構成されたクラウドゲームシステム内の同じデータセンターまたは任意の他のデータセンター内の任意の他のサーバであり得る。
プロファイリングに使用されるクラウドゲームシステムのサーバは、要求されたときに各クライアントデバイスのプロファイルを生成するプロファイル生成ロジックを含む。いくつかの実施形態では、プライマリクライアントデバイスがセカンダリクライアントデバイスを検出したとき、検出されたセカンダリクライアントデバイスがプロファイルされる。
ハンドオーバオプションは、プライマリクライアントデバイスで提供され、ハンドオーバオプションは、セカンダリクライアントデバイスの生成されたプロファイルに基づいて、デバイスハンドオーバに適している1つまたは複数のセカンダリクライアントデバイスを識別する。いくつかの実施形態では、ハンドオーバオプションは、ビデオフレームのみ、オーディオフレームのみ、またはゲームのオーディオ及びビデオフレームの両方のストリーミングを引き渡すために提供され得る。ユーザが特定のセカンダリクライアントデバイスを選択すると、ユーザ選択がサーバに転送され、サーバは一時停止信号を生成する。データセンター内のサーバは、一時停止信号を受信したことに応答して、ゲームのゲームプレイを一時停止し、ゲームプレイを再開するために、特定のセカンダリクライアントデバイスに再開オプションを提供する。
【0032】
一時停止信号の処理の一部として、データセンターでゲームを実行するサーバは、いくつかの実施形態では、イベントトリガが開始された時点でサーバにシステム状態を保存させるイベントトリガを開始し得る。そのような実施形態では、システムは、ゲーム属性またはゲーム変数を直接操作することなく、(ゲームアプリケーションを含む)すべてのアプリケーション及び/またはシステム状態を保持する。システム状態を使用して、ゲームのゲーム状態を再作成することができる。
いくつかの実施形態では、アプリケーションプログラミングインターフェイス(API)を使用してシステム状態を保存し得る。他の実施形態では、サーバは、一時停止信号に応答して、一時停止信号が受信された時点でゲームの保存データを書き出し得る。保存データは、ゲームプレイ中のユーザの進行状況を記録し、ゲームが再開されると、ゲームの最新のゲーム状態を再作成するために使用することができる。ゲームのユーザの進行状況を使用してゲームのゲーム状態を再作成する方法の詳細については、一実施形態では、2010年11月1日に出願された「ビデオストリームを制御するためのユーザインターフェイス、システム及び方法」と題する米国特許出願第12/917,388号を参照することができ、参照によりその全体が本明細書に組み込まれる。
【0033】
いくつかの実施形態では、特定のセカンダリクライアントデバイスのユーザ選択は、ユーザがプライマリクライアントデバイスからゲームのためのゲームプレイインタラクションを提供していないことを示す。いくつかの実施形態では、特定のセカンダリクライアントデバイスのユーザ選択は、プライマリクライアントデバイスでストリーミングゲームコンテンツの少なくとも一部(すなわち、ゲームコンテンツのオーディオフレームまたはビデオフレームのいずれか)を受信することを希望しないことを示し得る。
例えば、ユーザは、プライマリクライアントデバイスでゲームコンテンツのオーディオ部分を受信することは望み得ないが、プライマリクライアントデバイスでゲームコンテンツのビデオ部分を受信することには依然として関心があり得る。これは、例えば、プライマリクライアントデバイスでのオーディオ受信が許容可能なレベルにない場合であり得る。
そのような実施形態では、ゲームコンテンツのオーディオ部分が抽出され、特定のセカンダリクライアントデバイスに転送され得る一方で、(例えば、オーディオ部分がミュートされた状態で)ゲームコンテンツのビデオ部分のプライマリクライアントデバイスへのストリーミングが継続され得る。そのような実施形態では、プライマリクライアントデバイスで提供されるハンドオーバオプションは、ストリーミングゲームコンテンツの選択された部分(オーディオフレームまたはビデオフレームのいずれか)が特定のセカンダリクライアントデバイスにリダイレクトされるように、ストリーミングゲームコンテンツの適切な部分(例えば、ビデオ部分、オーディオ部分など)を選択するオプション及びデバイスハンドオーバの一部としてゲームコンテンツの選択された部分をストリーミングするための特定のセカンダリクライアントデバイスを含み得る。
【0034】
いくつかの実施形態では、一時停止信号を受信したことに応答して、データセンター内のサーバは、ゲームのためのストリーミングビデオフレーム及び/またはストリーミングオーディオフレームのプライマリクライアントデバイスへの送信を一時停止し得る。その結果、ゲームは「中断」状態になっているように見える。この実施形態では、ゲームは引き続きアクティブであり得るが、デバイスハンドオーバが完了するまでユーザインタラクションを受信し得ない。
【0035】
特定のセカンダリクライアントデバイスでの再開オプションの選択がサーバに転送され、サーバはゲームのゲーム状態(存在する場合)にアクセスする及び/または一時停止した位置からゲームのゲームプレイを再開する。再開されたゲームプレイにより、ゲームのビデオフレーム及び/またはオーディオフレームが特定のセカンダリクライアントデバイスにストリーミングされる。
あるいは、ゲームがアクティブに保たれている間に、ビデオフレーム及び/またはオーディオフレームの送信が一時停止された場合、再開要求により、サーバは、ゲームのストリーミングビデオフレーム及び/またはストリーミングオーディオフレームの特定のセカンダリクライアントデバイスへの送信を再開する。
いくつかの実施形態では、ビデオフレーム及び/またはオーディオフレームは、特定のセカンダリクライアントデバイスから受信したユーザインタラクションに基づいて生成され、ストリーミングされる。ゲームコンテンツの一部がプライマリクライアントデバイスにストリーミングされ、残りの部分がセカンダリクライアントデバイスにストリーミングされる実施形態では、ビデオフレーム及び/またはオーディオフレームは、特定のセカンダリクライアントデバイス、プライマリクライアントデバイスから、またはプライマリ及びセカンダリクライアントデバイスの両方から受信されたユーザインタラクションに基づいて、適切なクライアントデバイス(つまり、プライマリ及びセカンダリクライアントデバイス)に生成され、ストリーミングされる。
【0036】
リスト内で識別されるセカンダリクライアントデバイスは、ゲームのゲームプレイに必要なデバイス属性を有し、いくつかの実施形態では、ハンドオーバオプションが受信されている間は、ゲームプレイのために利用可能である。本明細書で論じられる様々な実施形態は、ゲームプレイセッション中にゲームをプレイするために切り替えるセカンダリクライアントデバイスのオプションをユーザに提供し、このような切り替えはシームレスでフリクションレスな方法で行われる。オプションで識別されたセカンダリクライアントデバイスは、セカンダリクライアントデバイスからの信号を受信する他のデバイスなどに基づいて、セカンダリクライアントデバイスによって生成された信号に基づいて、クライアントデバイスに実装された複数のデバイス検出プロトコルのいずれか1つを使用して検出され得る。検出されたクライアントデバイスは、バックグラウンドでプロファイルされ、デバイスハンドオーバが正常に行われるように、ゲームのゲームプレイのために適正化される。
【0037】
セカンダリクライアントデバイスのプロファイルに提供される情報は、ゲームのゲームプレイに必要なデバイス属性だけでなく、1つまたは複数のセカンダリクライアントデバイスで利用できない、またはゲームのゲームプレイに必要なレベルではないデバイス属性も判定するために使用され得る。
このプロファイル情報に基づいて、クラウドゲームシステムは、いくつかの実施形態では、プライマリクライアントデバイスのユーザがハンドオーバオプションを選択したときに、クライアントデバイスの切り替えが高速でフリクションレスな方法で行われるように、1つまたは複数のセカンダリクライアントデバイスのサービス及び/またはデバイス属性をプロビジョニングして、それらをゲームプレイのために準備し得る。いくつかの実施形態では、デバイスプロファイリングは、プライマリクライアントデバイスなどの1つまたは複数のデバイス属性の変更に応じた、ユーザアクション、カレンダーイベント、プライマリクライアントデバイスからの信号(例えば、低電力信号など)、ソーシャルメディアイベントなどのトリガイベントの発生に応答して開始され得る。
【0038】
セカンダリクライアントデバイスは、プライマリクライアントデバイスと同じネットワークの一部であり得て、セカンダリクライアントデバイスが検出されると、プライマリクライアントデバイスは、検出されたそれぞれのセカンダリクライアントデバイスに、クラウドゲームサイト内のアプリケーションサーバなどのサーバとの接続を開始するための信号を送信することによってプロファイルを取得し、サーバと情報を交換することを促し得る。
他の実施形態では、セカンダリクライアントデバイスが検出されると、プライマリクライアントデバイスは、クラウドゲームシステムのサーバに検出されたそれぞれのセカンダリクライアントデバイスとの接続を開始するための信号を送信することによって、1つまたは複数のセカンダリクライアントデバイスをプロファイルし、セカンダリクライアントデバイスと情報を交換することを促し得る。セカンダリクライアントデバイスとサーバとの間で交換され得る情報は、例えば、セッション情報、サービス品質情報、デバイス能力、プレイしているまたはプレイ可能なゲーム、ビデオコーデック情報、オーディオコーデック情報(利用可能な場合)、スピーカー構成、デバイス可用性、ハードウェア属性、ソフトウェア属性などを含む。
【0039】
各ゲームは異なるリソース要件を有し得るため、各ゲームのストリーミングセッションを開始するために必要なデバイス属性は異なり得る。その結果、プロファイルで提供された情報は、検出された各セカンダリクライアントデバイスのデバイス能力を評価して、セカンダリクライアントデバイスのそれぞれ1つが、ゲームのストリーミングセッションを開始するために必要とされる十分なデバイス属性を有するかどうかを判定するために使用され得る。例えば、評価の一部として、各セカンダリクライアントデバイスのネットワーク帯域幅は、連続的に、定期的に、または予め定義された時間に監視され得る。そのような監視の結果は、セカンダリクライアントデバイスの現在のデバイス属性を維持するように、それぞれのセカンダリクライアントデバイスのプロファイルを更新するために使用され得る。さらに、それぞれのプライマリ及びセカンダリクライアントデバイスは、ゲームインタラクションを提供するために異なるタイプの入力を有し得る。
例えば、クライアントデバイスAはゲームパッドを使用でき、クライアントBはタッチスクリーンを使用でき、一方、クライアントCは、そのような入力からのユーザインタラクションを受信するように設定されたゲームのゲームインタラクションを提供するためにキーボードを使用し得る。その結果、いくつかの実施形態では、検出されたセカンダリクライアントデバイスのプロファイルに提供された情報は、デバイスのハンドオーバが発生したときに、入力方法に対する調整が行われるように、ゲームの入力を提供するために各クライアントデバイスによって使用される入力のタイプを識別するために使用され得る。
例えば、プライマリクライアントデバイスはタッチスクリーン入力を使用でき、選択されたセカンダリクライアントデバイスはゲームパッドを使用でき、両方の入力方法はゲームのインタラクションを受信するために許容可能である。デバイスハンドオーバが発生すると、プライマリクライアントデバイスから選択されたセカンダリクライアントデバイスへのクライアントデバイスの切り替えにより、ゲームは、例えば、2つのクライアントデバイス(すなわち、プライマリクライアントデバイスと選択されたセカンダリクライアントデバイス)間の入力方法の違いを認識し、ゲームのゲームインタラクションを受信するための入力方法をタッチスクリーン入力からゲームパッド入力に切り替える。いくつかの実施形態では、ゲームは、選択されたセカンダリクライアントデバイスによって使用される入力方法を認識し得ない。そのような実施形態では、クラウドゲームシステムまたは選択されたセカンダリクライアントデバイスのいずれかが、セカンダリクライアントデバイスの表示部に入力エミュレーション(例えば、仮想ゲームパッドまたは仮想キーボード、仮想番号パッド、仮想ゲーム制御などのオンスクリーン仮想入力方法)を提供でき、表示のために選択される入力エミュレーションのタイプはクライアントデバイスのタイプに基づき得る。同様に、各クライアントデバイスは、それ自体のリソース能力及び制限(例えば、画面/表示解像度、アスペクト比、オーディオ能力など)を有し、これらはそれぞれのクライアントデバイスのプロファイル情報に反映される。デバイスプロファイルに提供される情報は、クライアントデバイスを適正化し、ゲームの入力方法を定義し、及び/またはストリーミングビデオフレームを調整するために使用され得る。
【0040】
セカンダリクライアントデバイスのデバイスプロファイルに基づいて、プライマリクライアントデバイスのユーザは、検出されたセカンダリクライアントデバイスの特定のデバイスへのデバイスハンドオーバを開始することを決定し得る。デバイスハンドオーバを開始する判定は、セカンダリクライアントデバイスが、ユーザにより良いゲームプレイ体験を提供し得る、より高い解像度、より高いフレームレート、より短い待ち時間などのデバイス属性を有するという判定に基づき得る。あるいは、デバイスハンドオーバを開始する判定は、プライマリクライアントデバイスの電力不足、または1つまたは複数のデバイス属性の利用不可などにより、プライマリクライアントデバイスがゲームのゲームプレイをサポートすることができないということに基づき得る。
【0041】
デバイスハンドオーバの一部として、デバイスハンドオーバオプションは、プライマリクライアントデバイスでのユーザ選択のために、代替、同等、またはより良いゲームプレイ体験を提供するために事前適正化された1つまたは複数のセカンダリクライアントデバイスのリストと共に提供される。ハンドオーバオプションまたはリストからの特定のセカンダリクライアントデバイスのいずれかでのユーザ選択は、デバイスハンドオーバをトリガする。サーバには、リストに含まれている事前適正化されたセカンダリクライアントデバイスが既にあるため、ユーザ選択により、より高速で効率的でフリクションレスでシームレスなデバイスの切り替えができ、その結果、サーバは、選択されたセカンダリクライアントデバイスへのゲームのビデオフレームのストリーミングを継続し得る。いくつかの実施形態では、ビデオフレーム及び/またはオーディオフレームのストリーミングをプライマリクライアントデバイスから選択されたセカンダリクライアントデバイスに切り替えることに加えて、切り替えには、ゲームへの入力を提供するために使用される1つまたは複数のコントローラの切り替えも含まれ得る。多くの場合、ユーザは、ゲームと相互作用するためにプライマリクライアントデバイスに関連付けられた無線コントローラ(例えば、Bluetooth(登録商標)ベース、または他の無線技術ベース)を使用し得る。そのような実施形態では、デバイスハンドオーバがトリガされると、切り替えは、プライマリクライアントデバイスから選択されたセカンダリクライアントデバイスへの無線コントローラのBluetooth(登録商標)接続のハンドオーバも含み得る。デバイスハンドオーバの一部として、プライマリクライアントデバイスは、ゲームへの入力を提供するために使用される無線コントローラの属性をセカンダリクライアントデバイスに通知し得る。プライマリクライアントデバイスは、セカンダリクライアントデバイスに通知することに加えて、無線コントローラを切断し得る。選択されたセカンダリクライアントデバイスは、通知を受信し、次に無線コントローラのデバイス属性を使用して無線コントローラを自動的に検出し、無線コントローラと関連付けをして、その結果、選択されたセカンダリクライアントデバイスは、新たに関連付けられた無線コントローラを使用して入力を提供し得る。代替の実施形態では、同様のデバイス属性を有する無線コントローラは、選択されたセカンダリクライアントデバイスに既に関連付けられ得る。そのような実施形態では、セカンダリクライアントデバイスは、無線コントローラを検出するための検出プロセスを経由し得ないか、または無線コントローラをプライマリクライアントデバイスに関連付ける関連付けプロセスを経由し得ない。代わりに、無線コントローラが、ゲームに入力を提供するのに必要なデバイス属性を有すると判定され、ゲームが、無線コントローラから受信した入力を受信してマッピングし、ゲームのゲーム状態を更新すると、選択されたセカンダリクライアントデバイスに既に関連付けられている無線コントローラは、ゲームへの入力を提供するために使用され得る。
【0042】
デバイス検出は、いくつかの実施形態では、プライマリクライアントデバイスがアイドル状態にあるときにプライマリクライアントデバイスによって開始され得るか、またはゲームプレイセッション中に、または定期的に、または異なるアプリケーションを実行しているときに開始され得る。セカンダリクライアントデバイスのプロファイリングは、ユーザがゲームプレイのためにデバイスを変更することを決定したとき、デバイス切り替えがデバイス属性として容易に発生し、デバイス設定がクイックストリーム切り替えのために予め確立されるように、バックグラウンドで実行され、セカンダリクライアントデバイスのサービス品質及び他の状態を取得する。本発明の一般的な理解により、特定の実施形態を様々な図面を参照してここで説明する。
【0043】
図1は、本発明の一実施形態での、ゲームプレイのデバイスハンドオーバのために使用できるセカンダリクライアントデバイスのオプションを識別するために使用されるシステムの簡略ブロック図を示す。システムは、クラウドゲームシステム300のユーザアカウントを介してデータセンター310のアプリケーションサーバなどのサーバ(320)に通信可能に接続された複数のクライアントデバイス100−1〜100−nを含む。サーバ320は、インターネットなどのネットワーク200を介してクライアントデバイス100によってアクセスされる。
【0044】
クライアントデバイス100(すなわち、100−1〜100−nのうちのいずれか1つ)は、プロセッサ、メモリ、ネットワーク200に接続するためのネットワーク接続、サーバ側アプリケーションと通信するための適切なAPI、ゲームアプリケーションなどのサーバ側アプリケーションによって提供されるコンテンツを復号化するための1つまたは複数のデコーダを含む。プロセッサは、ネットワーク接続を通じてネットワークに接続し、アプリケーションプログラミングインターフェイス(API)を使用してサーバ側アプリケーションと通信するか、またはサーバ側アプリケーションにアクセスすることによって、サーバ側アプリケーションと相互作用し得るクライアント側アプリケーションを実行することができる。ネットワーク接続は、有線または無線接続にすることができる。クライアントデバイス100は、シンクライアント、汎用コンピュータ、専用コンピュータ、ゲームコンソール、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、モバイルコンピューティングデバイス、ポータブルゲームデバイス、携帯電話、スマートフォン、ヘッドマウントディスプレイ、スマートウェアラブルデバイス、セットトップボックス、ストリーミングメディアインターフェイス/デバイス、スマートテレビまたはネットワーク化されたディスプレイ、またはリモートサーバ上で利用可能なアプリケーションにアクセスするために使用できるその他のコンピューティングデバイスであり得る。クライアントデバイス100で利用可能なネットワーク接続及び通信プロトコルは、クライアントデバイス100がリモートサーバと通信して、マルチメディアコンテンツのストリーミングビデオフレームを含むコンテンツを、クラウドゲームシステム300の一部であるサーバなどのリモートサーバから受信することを可能にする。リモートサーバによってストリーミングされたゲームプレイコンテンツを表すビデオフレームは、ビデオフレームがクライアントデバイスにストリーミングされる前に、リモートサーバでエンコーダを使用して圧縮されている。クライアントデバイス100は、ストリーミングビデオフレームを解凍し、クライアントデバイス100のそれぞれの構成要素を使用してコンテンツをレンダリングするためのデコーダを含み得る。
【0045】
いくつかの実施形態では、クライアントデバイス100によって実行される処理の量は、入力及び出力処理に関して変化し得る。大まかに言って、ゲームまたはアプリケーションは、データセンター310内で利用可能なゲームサーバまたは他のアプリケーションサーバ320上で実質的に維持、実行及び圧縮/符号化され、クライアントデバイス100は、主として、クライアントデバイス100のディスプレイ上でオーディオ/ビデオデータを受信し、復号化し、処理し、レンダリングを行う。クライアントデバイス100はさらに、ユーザ入力をゲームサーバまたは他のアプリケーションサーバに返信するように構成される。クライアントデバイス100は、ビデオデータをレンダリングするためのディスプレイに接続されるスタンドアロンコンピューティングデバイスであり得る。他の実施形態では、ディスプレイをクライアントデバイス100に統合することができる。一実施形態では、ディスプレイは、ディスプレイデバイスのネットワーク接続を利用するアプリケーションまたは「アプリ」のためのプラットフォームのオペレーティングシステムを提供するネットワークディスプレイデバイスである。そのような実施形態では、クライアントデバイス100は、ディスプレイデバイスのオペレーティングシステムによって提供されるプラットフォーム上で実行されるアプリケーションによって定義することができる。
【0046】
ゲームプレイセッション中、クライアントデバイス100−1〜100−nは、ローカルにある1つまたは複数の他のクライアントデバイスを能動的に探索し得る。ゲームプレイ要求を開始するために使用されるクライアントデバイス100は、本明細書では「プライマリ」クライアントデバイスと呼ばれ、プライマリクライアントデバイスに対してローカルであり、デバイスハンドオーバのために検出されたクライアントデバイスは、「セカンダリ」クライアントデバイスと呼ばれる。プライマリクライアントデバイス100の場所に応じて、プライマリクライアントデバイスに対してローカルであると検出されたセカンダリクライアントデバイスは異なり得る。例えば、ユーザのホームネットワーク内のプライマリクライアントデバイス100に対してローカルであると識別されたセカンダリクライアントデバイスは、オフィス環境などで識別されるセカンダリクライアントデバイスと異なり得る、ユーザフレンドのホームネットワーク内で識別されるセカンダリクライアントデバイスと異なり得る。
【0047】
このアプリケーションで使用されるサーバは、リモートサーバ、仮想コンピュータ、クラウドゲームサーバ、クラウドアプリケーションサーバ、リモートアプリケーションサーバ、デジタルメディアサーバ、ゲーム開発者/ゲームスポンサーの店舗を提供するために使用されるサーバ、ウェブサーバ、端末サーバ、コンソールサーバ、またはクラウドゲーム中にユーザがアクセスし相互作用することができる1つまたは複数のゲームまたはアプリケーションをホストすること(ゲームまたはアプリケーションを実行するための処理リソースの提供または割り当てを含むこと)ができるデータセンターで利用可能なサーバコンピューティングデバイスの他のタイプまたはフォームであり得る。サーバは、ビデオフレーム内のデータを圧縮し、特定のタイプのプロトコルに従うアプリケーションプログラミングインターフェイス(API)呼び出しを使用して、データストリーム内の圧縮されたビデオフレームをクライアントデバイス100に転送するエンコーダを含み得る。
【0048】
例えば、データセンター310内のクラウドゲームサーバなどのサーバ320は、ユーザによるゲームプレイのために選択されたビデオゲームを実行し、ビデオゲームの状態を刻々と定義し、ストリーミングビデオフレーム(画像、ビデオ及びオーディオデータを含む)をゲームのゲームプレイ要求が開始された場所からプライマリクライアントデバイス100に送信する。プライマリクライアントデバイス100のユーザ入力モジュール107は、次に、ビデオゲームをプレイするユーザからのユーザ入力を処理し、入力データをサーバ320に送信するように構成される。サーバ320は、入力データを処理してビデオゲームのゲーム状態に影響を与えるように構成される。
【0049】
クラウドゲームシステムは、複数のデータセンター310−1〜310−mを含む。データセンター310は、一実施形態では、複数のサーバ320(例えば、ゲームサーバ)と、ゲームコード、アプリケーションコード、ユーザ関連データ及びアプリケーション関連データストアを格納し、それらを複数のユーザからの様々な要求の処理を可能にするために容易に利用可能にすることができるストレージシステムとを含み得る。データセンターはまた、クライアントデバイス100と複数のサーバ320との間の通信接続を確立するために、ルータ、スイッチなどの電気通信機器を含み得る。それぞれの複数のサーバ320は、クライアントデバイス100で対応するクライアント側APIと通信するためのサーバ側API(個別または類似のいずれか)またはサードパーティのソーシャルメディアプロバイダに関連するサーバ側APIを備え得る。いくつかの実施形態では、データセンター310内のサーバ320は、ゲームアプリケーションを含む様々なタイプのアプリケーションを実行し、レンダリングのためにアプリケーションコンテンツ(すなわち、ゲームアプリケーションによって生成されたビデオフレーム)を対応するクライアントデバイス100にストリーミングするように構成され得る。サーバ320は、任意の数の圧縮技術を使用してサーバ320によって生成または提供される任意のデータに対する圧縮の動作を実行し、通信及び/または送信プロトコルのいずれか1つを使用して圧縮データをクライアントデバイス100に送信するように構成され得る。サーバは、特定の機能、ゲームまたはアプリケーションを実施または実行するために通常使用される、端末サーバ、コンソールサーバ、仮想サーバなどを含み得る。サーバによって実行される機能、ゲームまたはアプリケーションの例は、いくつか例を挙げると、データベース管理、ファイル管理、メールサービス、プリントサービス、ウェブサービス、ゲーム管理、アプリケーション管理、メディア管理、カタログサービス、通信管理、コンピューティングサービス、及びプロキシ管理などがあり得る。いくつかの実施形態では、コンソールサーバなどのサーバ320は、ゲームを実行し、レンダリングのためにストリーミングビデオフレームを1つまたは複数のクライアントデバイス100に提供することによって、ゲームコンソールをエミュレートし得る。いくつかの実施形態では、複数のサーバ及び/またはストレージデバイスがラックマウントサーバまたはストレージデバイスとして提供され得て、各データセンターはサーバ及び/またはストレージラックの列を含む。各サーバは、複数のアプリケーションの実行を可能にし得る、及び/または広範囲のサービスの提供を可能にし得る。
【0050】
サーバ320はまた、クライアントデバイスをプロファイルするために使用され得るデバイスプロファイラを含み得る。デバイスプロファイラは、1つまたは複数のクライアントデバイスとの通信接続を確立して、クライアントデバイスと情報を交換するように構成され得る。交換される情報は、デバイス属性を識別し、各クライアントデバイスのプロファイルを生成するために使用される。
【0051】
クラウドゲームシステム300は、1つまたは複数のビデオゲームのインスタンスが、ネットワーク200を介してプレイヤーによってアクセスすることができる、1つまたは複数のデータセンター内の1つまたは複数のサーバ320(例えば、アプリケーションサーバまたはゲームサーバ)によって実行できるようにすることによって、異なる地理的位置にあるプレイヤーからのシングルプレイヤーまたはマルチプレイヤーのクラウドベースのゲームを容易にすることを理解されたい。このようにして、ビデオゲームの実行は、単一のプレイヤーのハードウェアまたはネットワークの伝導度に依存しないが、その所与のプレイヤーのユーザ体験に影響を与える。
【0052】
本明細書に記載されたクラウドゲームアーキテクチャを使用して実行される動作は、複数のサーバ及び/または実行プラットフォームを必要とする技術的動作を形成し、データベースへの迅速なアクセス及び遠隔に位置するユーザのクライアントデバイス100へのゲームプレイコンテンツなどのコンテンツの提示を可能にする。クラウドゲームはまた、任意の数の圧縮技術を利用してクラウドゲームサーバによって実行される圧縮の動作を含むことができる。圧縮技術は、標準的なエンコーダを使用でき、クライアントデバイス100上の標準デコーダがデータにアクセスして復号化できるようにすることができる。いくつかの実施形態では、専用のエンコーダ及びデコーダはまた、専用の符号化及び復号化を可能にするために、それぞれサーバ及びクライアントデバイスに実装され得る。復号化されたデータは、ビデオゲームのゲームプレイを可能にするために、画像、ビデオ、及びオーディオデータを識別するためにクライアントデバイスでさらに処理され得て、次にクライアントデバイス100上の適切なデバイス構成要素を使用して提示される。
【0053】
ビデオゲーム及び配信の管理は、いくつかのデータセンター、方向サーバ、サービス品質テスタまたはエンジン、低遅延データセンターへの指示及びリダイレクトを含むことができる。これらの動作及びタスクは、ゲームの遠隔実行及びストリーミングゲームまたはアプリケーションデータのクライアントデバイス100への配信のために、ストリーミング及び低遅延用に設計された専用サーバコンピュータを利用することも理解されたい。
【0054】
クラウドゲームシステム300にアクセスするための要求がプライマリクライアントデバイス100から受信されると、クラウドゲームシステム300などのアプリケーションホスティングシステム上のサーバは、ユーザ関連情報を取得するためにユーザアカウントデータ処理モジュール302と相互作用する。ユーザアカウントデータ処理モジュール302は、ユーザプロファイル及び他のユーザアカウント情報が格納されている、ユーザアカウントデータベース312からユーザアカウント情報を照会及び受信する。ユーザプロファイル及びユーザアカウント情報は、要求が開始されたプライマリクライアントデバイス100に関連付けられたユーザを識別し、ユーザの要求を認証するために使用される。ユーザ認証時に、クライアント要求は、クラウドゲームシステム300に関連付けられたサーバによって処理される。一実施形態では、クラウドゲームシステム300のサーバは、購入されたゲーム/アプリケーション、ユーザアカウントのユーザが閲覧、プレイすることが許可されたゲーム/アプリケーション、無料で利用可能なすべてのゲーム及び/またはアプリケーションを含む、ユーザアカウントに対して利用可能なすべてのゲーム及び/またはアプリケーションを判定し得る。ゲームタイトルセレクタモジュール304は、ユーザアカウント用のゲームタイトルを取得し、プライマリクライアントデバイス100のディスプレイのユーザインターフェイス上に提示するためのリストにゲームタイトルを戻す。一実施形態では、クライアントデバイスにレンダリングされたゲームタイトルのうちのいずれか1つのユーザ選択が検出され、プライマリクライアントデバイス100からクラウドゲームシステム300のサーバに信号が送信され、ゲームタイトルのユーザ選択がサーバに通知される。
【0055】
クラウドゲームシステム300は、ゲームアプリケーションを含む複数のアプリケーションをホストする。ゲームタイトルのユーザ選択を受信したことに応答して、クラウドゲームシステム300のサーバは、データセンター310を識別し、選択されたゲームタイトルのゲームプレイの要求を処理し、要求を処理するためにデータセンター310に要求を転送し得る。データセンター310は、例えば、プライマリクライアントデバイス100の地理的位置に基づいて選択され得る。地理的位置に基づいて要求を処理するデータセンター310を選択することは、それ自体の欠点を有し得る。例えば、地理的位置のデータセンター310では、そのリソースに対する高い需要のためにネットワーク輻輳が起こり得る。あるいは、地理的位置のデータセンター310は、プライマリクライアントデバイスを提供するネットワークプロバイダと、データセンターの動作に関連するネットワークプロバイダとの間にピアツーピア契約がないために、特定のプライマリクライアントデバイスからのゲームプレイ要求を処理することができなくなり得る。前述の欠点は単なる例であり、他の欠点も存在し得る。そのような欠点を克服するために、別の実施例では、データセンター310は、帯域幅/遅延テストなどのネットワークパフォーマンステストの結果に基づいて選択し得る。例えば、プライマリクライアントデバイスがゲームプレイのためのゲームタイトル選択を開始するために使用される場合、クラウドゲームシステム300のサーバは、プライマリクライアントデバイスに関連する地理的位置を判定し、要求を処理するために1つまたは複数のデータセンター310を識別し得る。データセンターを割り当てる場合、クラウドゲームシステム300は、プライマリクライアントデバイスの地理的位置にあるデータセンター310内のサーバが、要求を処理するのに十分なリソースを有し得ないことを認識し得る。その結果、クラウドゲームシステム300は、要求を処理するために、プライマリクライアントデバイスが基づいている地理的位置の外にあるデータセンター310を識別し得る。地理的位置外のデータセンターは、例えば、帯域幅テストに基づいて、プライマリクライアントデバイスに関連する地理的位置内の他のデータセンター上で識別し得る。
【0056】
前述のように、データセンター310は、複数のサーバ320を含み、各サーバ320は、データセンター310で利用可能な1つまたは複数のゲームタイトルを実行し得るか、または実行するために設定し得る。各データセンター310内のゲームタイトルデータストア314は、データセンター310で利用可能なゲームタイトルのリスト及びデータセンター310内の1つまたは複数のサーバ320で、ゲームタイトルによって識別されるゲームを実行するために必要なゲームコードを提供する。
【0057】
ゲームのゲームプレイ要求を処理するために識別されるデータセンター310内のサーバ320は、ゲームのインスタンスを実行し、ゲームのビデオフレームを生成し、レンダリングのためにビデオフレームをプライマリクライアントデバイス100にストリーミングすることによってゲームプレイセッションを確立する。サーバは、プライマリクライアントデバイス100で提供されるユーザインタラクションを受信し、それを使用してゲームの結果に影響を与え、ゲーム状態を更新する。クライアントデバイスは、ローカルにある他のクライアントデバイスを識別するために使用され得る。識別された他のクライアントデバイスは、デバイスハンドオーバのためのオプションとして提供される。
【0058】
図2は、一実施形態では、ゲームプレイ中のデバイスハンドオーバのためのセカンダリクライアントデバイスのオプションを識別するために使用されるクラウドゲームシステム300のデータセンター310内のサーバ320上で実行するサーバ側アプリケーション321の様々なモジュールを示す。サーバ側アプリケーション321は、
図2に示す一実施形態では、ハンドオーバアプリケーションモジュール355のモジュールと統合されたゲームアプリケーション321−aのモジュールを含み得る。ゲームアプリケーション321−aのモジュールは、いくつかの実施形態では、ゲームを実行し、ゲームプレイ中のゲームのストリーミングビデオフレームを、プライマリクライアントデバイス100などのクライアントデバイスに提供するために使用される。そのような実施形態では、ビデオフレームは、プライマリクライアントデバイスに同じビデオフレームを送信する前に符号化される。いくつかの実施形態では、ゲームアプリケーションの一部であるアプリケーションプログラミングインターフェイス(API)は、ビデオフレームを送信するために使用され得る。APIは、ゲームアプリケーションによって生成されたビデオフレームをキャプチャし、ビデオフレームを符号化するために利用可能な符号化技術を使用し、符号化されたビデオフレームをプライマリクライアントデバイス100などのクライアントデバイスに送信するためのロジックを含み得る。ビデオフレームを処理するために本明細書で論じられる様々な実施形態は、オーディオフレームの処理にも拡張し得ることに留意されたい。
【0059】
いくつかの実施形態では、ビデオフレームの符号化は、ゲームによって提供される「関心領域」に基づき得る。通常、ゲームデータのフレームが符号化される場合、エンコーダは「ビット予算」に従う必要がある。ビット予算は、最適なデータコンテンツを提供するために、フレームを符号化するためのビットの使用方法を定義する。ビット予算に依存して、エンコーダはフレームの特定の領域(例えば、高密度コンテンツを有するフレームの領域)に多くのビットを割り当てようとし、フレームの他の領域(例えば、低密度コンテンツを有する領域)には少ないビットを割り当てる。エンコーダがビデオフレームを最適に符号化するのを支援するために、ゲームは関心領域に関連する情報を提供し、その結果、エンコーダはより詳細な内容が必要な領域(すなわち、テキストを含む領域、芝生、葉、森林などの作り込まれたゲームシーンを含む領域、激しい行動を含む領域など)及びあまり詳細な内容が必要ではない領域(すなわち、あまりフレームが目立たない領域)を識別できる。ゲーム及びビット予算からのこの詳細レベルを備えるエンコーダは、視聴のための最適なフレームコンテンツを提供するように、ビデオフレームのビットを割り当てる。
【0060】
代替の実施形態では、ゲームプレイ中に生成されたゲームのストリーミングビデオフレームは、サーバ320のオペレーティングシステムまたはゲームアプリケーション321−a及び/またはオペレーティングシステムとインターフェイスするグラフィック処理ユニット(GPU)ドライバに転送される。GPUは、ビデオフレームを処理し、サーバ320のオペレーティングシステムに提供し得る。サーバ320のオペレーティングシステムは、処理されたビデオフレームを受信し、バックグラウンドで、プライマリクライアントデバイス100に送信する前に何らかの形式の符号化を実行し得る。いくつかの実施形態では、クラウドゲームシステム300内のサーバ320のオペレーティングシステムは、クラウドゲームシステム300内で利用可能なエンコーダを使用して、レンダリングのためにプライマリクライアントデバイス100に同じビデオフレームを送信する前にビデオフレームの符号化を実行し得る。前述の実施形態と同様に、エンコーダは、ゲームから関心領域に関連する詳細情報を受信し、詳細情報に従ってビデオフレームを構成するデータのビットを割り当てることによってビデオフレームを符号化し得る。ビデオフレームの処理に関して本明細書で論じられる実施形態は、オーディオフレームにも拡張し得る。オペレーティングシステムは、ネットワーク状態を監視し、それに応じてビデオフレーム及び/またはオーディオフレームをクライアントデバイスに転送する前に、ビデオフレーム及び/またはオーディオフレームのフレームレート、ビットレートなどを調整し得る。
【0061】
代替の実施形態では、クラウドゲームシステム300の外にある外部アプリケーションは、クラウドゲームシステム300のオペレーティングシステムによって送信されているストリーミングビデオフレームを表す高精細度マルチメディアインターフェイス(HDMI(登録商標))ビデオ信号をキャプチャでき、ビデオ信号を符号化するために外部エンコーダを使用し得る。次に、外部アプリケーションは、符号化されたビデオ信号のクライアントデバイスへの送信を処理する。送信の一部として、外部アプリケーションは、ネットワーク状態を監視し、プライマリクライアントデバイス100にストリーミングされるビデオフレームの品質(すなわち、フレームレート、ビットレートなど)を調整し得る。
【0062】
いくつかの実施形態では、ネットワーク状態に基づいて、オペレーティングシステムまたは外部アプリケーションが自動的にデバイスハンドオーバをトリガし得る。トリガの一部として、オペレーティングシステムまたは外部アプリケーションは、プライマリクライアントデバイスの近傍にある他のセカンダリクライアントデバイスを検出し、サーバによってプロファイルを取得するように検出されたセカンダリクライアントデバイスに信号を送り、デバイスハンドオーバ中に使用するために、セカンダリクライアントデバイス情報をハンドオーバアプリケーションモジュール355に転送し得る。
【0063】
ハンドオーバアプリケーションモジュール355のモジュールは、プライマリクライアントデバイスに対してローカルであるセカンダリクライアントデバイスを識別するために使用されるか、またはオペレーティングシステムまたは外部アプリケーションによって提供されたセカンダリクライアントデバイス情報を使用し、セカンダリクライアントデバイスをプロファイルし、それらをデバイスハンドオーバのためのオプションとして提供する。他の実施形態では、サーバ側アプリケーション321は、ハンドオーバアプリケーションモジュール355とは別のゲームアプリケーション321−aを含み得る。そのような実施形態では、ゲームアプリケーション321−a及びハンドオーバアプリケーションモジュール355が、同一のサーバ上で別々に実行され得るか、またはゲームアプリケーション321−aが、第1のサーバ上で実行され得て、ハンドオーバアプリケーションモジュール355が、データセンター内の第2のサーバ上で実行され得て、第1のサーバ及び第2のサーバが、ユーザ選択、ゲーム状態、一時停止/再開要求などのデータを交換するために互いに通信接続している。いくつかの実施形態では、ストリーミングビデオフレーム及び/またはオーディオフレームを生成しているゲームアプリケーション321−aは、プライマリクライアントデバイスへのネットワーク接続を監視し、この情報をハンドオーバアプリケーションモジュール355と共有する機能を有し得る。あるいは、ネットワーク接続品質情報は、サーバのオペレーティングシステムまたは外部アプリケーションによってハンドオーバアプリケーションモジュール355に提供され得る。
【0064】
ハンドオーバアプリケーションモジュール355は、プライマリクライアントデバイスのネットワーク接続情報及びセカンダリクライアントデバイスのために生成されたプロファイルを使用して、プライマリクライアントデバイスに対してローカルである1つまたは複数のセカンダリクライアントデバイスが、プライマリクライアントデバイスで利用可能なデバイスよりも良好なネットワーク接続品質を有するかどうかを判定し得る。ハンドオーバアプリケーションモジュール355が、1つまたは複数のセカンダリクライアントデバイスを識別すると、ハンドオーバアプリケーションモジュール355は、ゲームプレイ体験を改善するために代替のセカンダリクライアントデバイスに切り替えるためのオプションで情報メッセージを生成し得る。代替セカンダリクライアントデバイスのリストと共に情報メッセージを、デバイスハンドオーバ中に、ユーザ選択のためにクライアント側でレンダリングするために、プライマリクライアントデバイスに転送し得る。いくつかの実施形態では、情報メッセージは、プライマリクライアントデバイスの表示部にレンダリングされているゲームシーンの上にレンダリングするためのオーバーレイとして提供され得る。あるいは、情報メッセージは、ゲームアプリケーション321−aによって、またはサーバ側プロセスによって、またはサーバ側ゲームコンソールのユーザインターフェイスなどによって、サーバ側にレンダリングされ得る。いくつかの実施形態では、サーバ側ゲームコンソールのユーザインターフェイスは非表示であるが、新しい電子メールを受信する、新しいメッセージを受信する、オンラインになっているユーザまたはユーザの友人を検出するなどのトリガアクションに応答して通知をレンダリングし、トリガアクションは、情報メッセージを受信することを含むようにも拡張され得る。
【0065】
様々なモジュールの機能または役割は、
図2に示された統合サーバ側アプリケーションモデルを参照して説明しているが、上述した他のサーバ側アプリケーションモデルに拡張することができる。前述のように、サーバ側アプリケーション321は、ハンドオーバアプリケーションモジュール355のモジュールと統合されたゲームアプリケーション321−aのモジュールを含む。ゲームアプリケーション321−aの複数のモジュールは、サーバ320がプライマリクライアントデバイス100のデバイス識別子を識別し、プライマリクライアントデバイス100によって要求されたゲームのインスタンスを識別して実行し、レンダリングのためにプライマリクライアントデバイスに転送するためのストリーミングビデオフレームを提供することを可能にする。ハンドオーバアプリケーションモジュール355の複数のモジュールは、サーバが1つまたは複数のセカンダリクライアントデバイスを検出し、適正化し、デバイスハンドオーバのためのオプションとして適正化されたセカンダリクライアントデバイスのリストを提供することを可能にする。
【0066】
ゲーム関連データをクライアントデバイス100に提供するために使用されるサーバ側アプリケーション321の一部であるゲームアプリケーション321内のモジュールとしては、いくつか例を挙げると、プライマリクライアントデバイス識別子322、ゲーム実行エンジン324、及びエンコーダ328などがある。ハンドオーバアプリケーションモジュール355内のモジュールは、デバイスハンドオーバを実現するためのモジュール及び1つまたは複数のセカンダリクライアントデバイスをプロファイリングするためのモジュールを含む。デバイスハンドオーバを実行するためのモジュールには、いくつか例を挙げると、ハンドオーバマネージャ330、再開マネージャ332、及び一時停止マネージャ334などがある。1つまたは複数のセカンダリクライアントデバイスをプロファイリングするためのモジュールは、クライアントデバイスプロファイラ340を含む。
【0067】
ゲームプレイのための特定のゲームタイトルのユーザ選択に応答して、クラウドゲームシステム300は、プライマリクライアントデバイスの地理的位置またはその近傍にあるデータセンター310を識別し、ゲームプレイ要求を処理するように構成される。クラウドゲームシステム300は、識別されたデータセンターのサーバにゲームプレイ要求を転送し、サーバは識別されたデータセンター内のゲームタイトルデータストア314からゲームタイトルを識別する。
【0068】
要求の処理の一部として、サーバ320は、プライマリクライアントデバイス識別子322を使用してゲームプレイ要求を開始したクライアントデバイス100を識別し、クライアントデバイス100をプライマリクライアントデバイス100として指定する。プライマリクライアントデバイス100の識別情報は、ストリーミングコンテンツを転送するために使用される。次に、サーバ320は、ゲーム実行(例えば、ストレージ、プロセッサなど)に必要なリソースを提供すること、及びゲームアプリケーション321−aのゲーム実行エンジン324にゲームのゲームコードを取得させ、サーバ320上のゲームのためのゲームコードを実行することによってゲームをインスタンス化するように指示することによってゲームプレイセッションを確立する。ゲームのインスタンス化の一部として、ゲーム実行エンジン324は、ゲームのためのビデオフレーム326を生成する。ビデオフレーム326は、エンコーダ328を使用して、プライマリクライアントデバイス100のために定義された通信プロトコルに従って圧縮される。符号化されたゲームデータは、レンダリングのためにプライマリクライアントデバイス100にストリーミングされる。いくつかの実施形態では、エンコーダ328は、ゲームアプリケーション321−aの一部であり得る。ゲームアプリケーション321−aのアプリケーションプログラミングインターフェイス(API)は、符号化されたビデオフレームをプライマリクライアントデバイス100にストリーミングするために使用される。いくつかの実施形態では、ゲームアプリケーション321−aの一部であるAPIは、ビデオフレームを符号化し、符号化されたビデオフレームをプライマリクライアントデバイスに転送するための符号化ロジックを含み得る。別の実施形態では、ゲーム実行エンジン324で生成されたビデオフレームは、サーバ320のオペレーティングシステムによってキャプチャされ処理される。前述のように、いくつかの例では、オペレーティングシステムは、符号化されたビデオフレームがプライマリクライアントデバイス100にストリーミングされる前に、ビデオフレームを符号化し、ネットワーク状態を監視し、ビデオフレームの品質を調整し得る。あるいは、オペレーティングシステムは、ビデオフレームを処理し、HDMI(登録商標)ビデオ信号と同じ信号を転送し得る。クラウドゲームシステムの外にある外部アプリケーションは、ビデオフレームを、外部アプリケーション内で利用可能な1つまたは複数のAPIを介してプライマリクライアントデバイス100に送信する前に、HDMI(登録商標)ビデオ信号をキャプチャし、外部エンコーダを使用してHDMI(登録商標)ビデオ信号でキャプチャされたビデオフレームを符号化し、ネットワーク状態を監視し、ビデオフレーム内の画像の解像度及び/または送信レートを調整し得る。ネットワーク状態をキャプチャし、監視し、ビデオフレームを符号化し、送信するために使用されるプロセスは、オーディオデータにも同様に拡張され得ることに留意されたい。プライマリクライアントデバイス100のユーザインタラクションは、サーバによって受信され、ゲーム実行エンジン324でゲーム結果を調整するために使用される。
【0069】
ゲームプレイセッション中、プライマリクライアントデバイス100は、プライマリクライアントデバイス100に対してローカルであると識別された他のクライアントデバイス(本明細書ではセカンダリクライアントデバイスとも呼ぶ)を能動的に探索し得る。一実施形態では、セカンダリクライアントデバイスを検出すると、プライマリクライアントデバイス100は、セカンダリクライアントデバイスとのネットワーク接続を確立し、セカンダリクライアントデバイスに信号を送信してサーバ320と通信し、プロファイルを取得し得る。サーバ320では、ファイアウォールなどのセキュリティデバイスが存在するため、サーバ320ではなく、セカンダリクライアントデバイスがネットワーク接続を確立することの方が有利であり得る。セカンダリクライアントデバイスを通じてネットワーク接続を確立することは、セカンダリクライアントデバイス上で利用可能な1つまたは複数のバックグラウンドエージェントを通じて可能になり得る。例えば、通常、セカンダリクライアントデバイスは、常にソーシャルメディアサーバ、電子メールサーバなどに接続され、ソーシャルメディア通知または電子メール通知などを受信する。プライマリクライアントデバイスは、このネットワーク接続を介してセカンダリクライアントデバイスにアクセスし、セカンダリクライアントデバイスに信号を送信し、それ自体をプロファイルし得る。信号は、プロファイル要求105を開始するために、セカンダリクライアントデバイスが適切なサーバとの通信リンクを識別し確立することを可能にするために、サーバへのリンク、サーバのIPアドレスなどを含み得る。代替の実施形態では、セカンダリクライアントデバイスを検出すると、プライマリクライアントデバイス100は、セカンダリクライアントデバイスとの通信リンクを確立し、プライマリクライアントデバイスによって検出されたセカンダリクライアントデバイスのプロファイルを生成するようにサーバに要求する、プロファイル要求105を有する信号をサーバ320に送信し得る。この実施形態では、プライマリクライアントデバイス100からの信号は、セカンダリクライアントデバイスのデバイス識別子を含み得る。
【0070】
サーバ320は、プライマリまたはセカンダリクライアントデバイスからの信号に応答して、セカンダリクライアントデバイスとの通信接続を確立し得る。通信接続は、サーバ側アプリケーション321のクライアントデバイスプロファイラ340が、セカンダリクライアントデバイスからのネットワーク帯域幅情報、サービス品質情報、メモリ、プロセッサ速度などを含むデバイス能力、デバイス可用性、ゲーム/アプリケーション可用性などの情報を要求及び受信することを可能にする。交換される情報は、セカンダリクライアントデバイスのプロファイルを生成するために使用される。プロファイルは、サーバと交換した情報からセカンダリクライアントデバイスのデバイス属性を識別する。追加のセカンダリクライアントデバイスが、プライマリクライアントデバイスによって検出されると、追加のセカンダリクライアントデバイスも、プロファイル要求に応答して、クライアントデバイスプロファイラ340によってプロファイルされる。異なるセカンダリクライアントデバイスのプロファイル情報は、クライアントデバイスプロファイラ340によって使用され、デバイスハンドオーバのために使用できるセカンダリクライアントデバイス342のリストを生成する。
【0071】
代替の実施形態では、プライマリクライアントデバイスがセカンダリクライアントデバイスを能動的に探索する代わりに、サーバの異なる構成要素が、クラウドゲームシステム上で利用可能なゲームのゲームプレイセッションに能動的に関与するプライマリクライアントデバイスに対してローカルであるセカンダリクライアントデバイスを能動的に探索し得る。例えば、ゲームアプリケーション321−aまたはゲームアプリケーション321−a内のAPI、ビデオフレームを処理するゲームサーバ内のAPI、またはビデオフレームを処理するクラウドゲームシステム内の外部アプリケーションは、デバイスハンドオーバのためにセカンダリクライアントデバイスを検出することに能動的に関与し得る。そのような実施形態では、サーバは、プライマリクライアントデバイスによって生成された信号を使用して、またはユーザがプライマリクライアントデバイスを使用して(ゲームプレイセッションの前または最中に)相互作用するソーシャルメディアポストから、またはプライマリクライアントデバイスに組み込まれたツールから、またはプライマリクライアントデバイスに実装されたアプリケーションなどから取得された情報に基づいて、プライマリクライアントデバイスの地理的位置を判定し得る。プライマリクライアントデバイスの地理的位置を使用して、サーバは、例えば、様々なクライアントデバイスに実装された1つまたは複数のデバイス検出プロトコルを使用してプライマリクライアントデバイスに対してローカルであると識別された1つまたは複数のセカンダリクライアントデバイスを検出しようとし得る。いくつかの実施形態では、セカンダリクライアントデバイスは、クラウドゲームシステムに登録され、クラウドゲームシステムと能動的に相互作用しているか、または休止状態になっている。他の実施形態では、セカンダリクライアントデバイスは、他のコンテンツプロバイダシステムと能動的に相互作用してもよいが、クラウドゲームシステム上でクラウドゲーム用に設定してもよい。
【0072】
セカンダリクライアントデバイスが識別されると、クライアントデバイスプロファイラ340は、プライマリクライアントデバイス及びセカンダリクライアントデバイスのプロファイルを生成でき、そのようなプロファイリングは、セカンダリクライアントデバイスがサーバによって検出されたときに、またはトリガイベント(例えば、低バッテリ電力信号、遅延増加、カレンダーイベントなど)に応答して自動的に行われ得る。プライマリ及びセカンダリクライアントデバイスのプロファイルは、クライアントデバイスプロファイラ340によって使用され、セカンダリクライアントデバイスのいずれか1つまたは複数が、ユーザに対して現在プレイされているゲームのゲームプレイ体験を向上させることができるデバイス属性を有するかどうかを判定し得る。生成されたデバイスプロファイルから、1つまたは複数のセカンダリクライアントデバイスが、プライマリクライアントデバイスによって提供されているゲームプレイ体験よりも良いゲームプレイ体験(解像度の向上、フレームレートの改善、より短い待ち時間など)を提供することができるデバイス属性を含むと判定された場合、クライアントデバイスプロファイラ340は、セカンダリクライアントデバイスの選択されたデバイスを識別し、セカンダリクライアントデバイスのリストを生成する。
【0073】
セカンダリクライアントデバイス342のリストは、ハンドオーバマネージャ330に転送される。ハンドオーバマネージャ330は、ゲーム実行エンジン324に照会して、ゲームのデバイス属性要求を判定するように構成される。各ゲームは、それ自体のデバイス属性要件を有し得る。例えば、グラフィック重視ゲームは、より広いネットワーク帯域幅を必要とする場合があり、計算重視ゲームは、より高速のプロセッサを必要とし得る。その結果、デバイス属性の要件はゲームに固有であり得て、セカンダリクライアントデバイスは、ゲームのデバイス属性要件に基づいて識別される。ハンドオーバマネージャ330は、ゲームのデバイス属性要件を使用して、リスト342に提供されたセカンダリクライアントデバイスを適正化する。さらに、いくつかの実施形態では、ハンドオーバマネージャ330は、セカンダリクライアントデバイスをゲームのゲームプレイのために適正化するために、セカンダリクライアントデバイスにプロビジョニングする必要がある1つまたは複数のデバイス属性またはサービスを識別し得る。次に、ハンドオーバマネージャ330は、セカンダリクライアントデバイスをゲームプレイに適正化させるために、必要なデバイス属性またはサービスをプロビジョニングし得る。リスト342は、ゲームのゲームプレイのために適正化されているセカンダリクライアントデバイスのみを含むように、ハンドオーバマネージャ330によって絞り込まれる。絞り込まれたリストで識別されたセカンダリクライアントデバイスは、クライアントデバイスプロファイラ340によって提供されるセカンダリクライアントデバイスのサブセットであり得る。
【0074】
適正化されたセカンダリクライアントデバイスのサブセットは、クライアントデバイスプロファイラ340によって提供されるリスト342からの1つのセカンダリクライアントデバイス、リストからのいくつかのセカンダリクライアントデバイス、またはリスト内のすべてのセカンダリクライアントデバイスを含み得ることに留意されたい。ハンドオーバマネージャ330は、丸「a」によって表される方向矢印によって示されるように、ユーザ選択のためのハンドオーバオプションを使用してプライマリクライアントデバイス100に、適正化されたセカンダリクライアントデバイスのこの絞り込まれたリストを転送する。
【0075】
適正化されたセカンダリクライアントデバイスのリストを有するハンドオーバオプションは、プライマリクライアントデバイスのディスプレイ上に表示される。一実施形態では、適正化されたセカンダリクライアントデバイスのリストは、ゲームのゲームシーン上のクライアント側のオーバーレイスタイルメニューとしてレンダリングされ得て、オプションは、適正化されたセカンダリクライアントデバイスのいずれか1つを選択するために、プライマリクライアントデバイスに提供され得る。別の実施形態では、適正化されたセカンダリクライアントデバイスのリストをサーバ側でレンダリングし得る。そのような実施形態では、適正化されたセカンダリクライアントデバイスのリストは、レンダリングのためにクライアントデバイスに転送されるビデオストリームの一部であり得る。ハンドオーバオプション及び/または適正化されたセカンダリクライアントデバイスのユーザ選択は、丸「b」によって表される方向矢印によって示されるように、ネットワーク200を介してハンドオーバマネージャ330に渡される。一実施形態では、プライマリクライアントデバイスからユーザ選択を受信することに応答して、次に、ハンドオーバマネージャ330は、丸「c」によって表される方向矢印によって示されるように、ゲームのゲームプレイを一時停止するために、一時停止マネージャ334にコマンドまたは信号を指示または送信し得る。一時停止コマンドまたは命令は、プライマリクライアントデバイスの識別子及びユーザ選択で識別されたセカンダリクライアントデバイスの識別子を含む。一時停止コマンドに応答して、一時停止マネージャ334は、ゲーム実行エンジン324にゲームプレイを一時停止するように信号を送る。代替の実施形態では、ハンドオーバマネージャ330は、ゲームプレイを一時停止するために、ゲーム実行エンジン324に直接信号を送信し得る。どのモジュールが一時停止信号を提供しているかに関係なく、一実施形態では、ゲーム実行エンジン324は、一時停止信号に応答して、状態データマネージャ338と相互作用し、一時停止要求が受信された時点のゲームのゲーム状態を判定する。状態データマネージャ338は、ゲームのゲームプレイを分析して、一時停止信号が受信された時点でのゲームのゲーム状態を判定し、ゲームプレイが再開され得る場所から再開位置を特定するように構成される。ゲームのゲーム状態及び再開位置は、ゲームプレイセッションの間、状態データマネージャ338によって維持され得る。代替の実施形態では、状態データマネージャ338は、一時停止要求が受信された時点までのゲームプレイ中のゲーム内の行動の進捗を含むゲームの保存データを書き込み得る。この保存データは、ゲームプレイが再開されたときにゲームのゲームプレイを再作成するために使用され得る。さらに、ゲームプレイを一時停止する一部として、ゲーム実行エンジン324は、一時停止信号で特定されたプライマリクライアントデバイスへのストリーミングビデオフレームを一時停止する。
【0076】
一時停止信号を提供することに加えて、ハンドオーバマネージャ330は、セカンダリクライアントデバイスがゲームのゲームプレイを再開できるように、一時停止信号で識別されたセカンダリクライアントデバイスに再開オプションを提供し得る。セカンダリクライアントデバイスからの再開オプションのユーザ選択により、再開要求信号がプライマリクライアントデバイス100からサーバ上のハンドオーバマネージャ330に転送される。
【0077】
ハンドオーバマネージャ330は、再開要求が選択されたセカンダリクライアントデバイスからであることを確認し得る。確認時に、ハンドオーバマネージャ330は、処理のために再開マネージャ332に再開要求を転送し得る。再開マネージャ332は、ゲーム実行エンジン324と相互作用して、ゲームのゲーム状態を判定し得る。ゲーム実行エンジン324は、再開マネージャ332から要求を受信し、状態データマネージャ338に照会して、ゲームのゲーム状態及びゲームのゲーム再開位置を取得する。次に、再開マネージャ332は、ゲーム実行エンジン324に、ゲームのゲームプレイを再開させ、ゲームのために識別された再開位置からビデオフレームを選択されたセカンダリクライアントデバイスにストリーミングするように指示し得る。ゲームの再開の一部として、再開要求は、画面表示解像度、利用可能な入力制御、オーディオ能力など、選択されたセカンダリクライアントデバイスの能力を含み得る。再開要求が提供された、選択されたセカンダリクライアントデバイスの能力は、ビデオフレームが選択されたセカンダリクライアントデバイス上でレンダリングされるように、ビデオフレームのストリームを調整するために使用され得る。さらに、セカンダリクライアントデバイスによって使用される入力方法は、ゲームが、セカンダリクライアントデバイスで利用可能な入力方法を使用して提供された相互作用を認識することができるように、ゲームプレイを調整するために使用される。ビデオフレーム326は、セカンダリクライアントデバイスにストリーミングされる前にセカンダリクライアントデバイスのために定義された通信プロトコルに従って圧縮される。プライマリクライアントデバイス及びセカンダリクライアントデバイスに送信されるビデオフレームのストリームを圧縮するために使用される圧縮技術は、ゲームプレイのために選択されるプライマリ及びセカンダリクライアントデバイスのタイプに応じて、同じであっても異なっていてもよい。
【0078】
一方、ハンドオーバマネージャ330は、再開要求で提供されたセカンダリクライアントデバイス識別子を使用して、ゲーム実行エンジン324と相互作用するプライマリクライアントデバイスを更新する。ハンドオーバマネージャ330は、丸「d」によって示されるように、ゲーム実行エンジンが、符号化されたビデオフレームのストリーミングを開始するために、クライアントデバイスを識別することができるように、更新プライマリクライアントデバイスモジュール336に指示し、次に、プライマリクライアントデバイス識別子モジュール322に信号を送り、クライアントデバイス識別子をセカンダリクライアントデバイス識別子で更新する。更新の一部として、プライマリクライアントデバイス識別子モジュール322は、プライマリクライアントデバイス識別子をセカンダリクライアントデバイス識別子に置き換え、プライマリクライアントデバイス100としてセカンダリクライアントデバイスを指定する。
【0079】
いくつかの実施形態では、ハンドオーバオプションは、デバイスハンドオーバのために、適正化されたセカンダリクライアントデバイスのリストから2つ以上のセカンダリクライアントデバイスの選択を可能にし得る。そのような実施形態では、特定のセカンダリクライアントデバイスからの再開要求オプションのユーザ選択は、再開されたゲームプレイからビデオフレームをストリーミングするセカンダリクライアントデバイスのいずれかを判定する。2つ以上のセカンダリクライアントデバイスの選択は、ユーザがデバイス可用性、ネットワーク帯域幅、通信信号強度、利用可能なフレームレート、サービス品質などに基づいてデバイスを選択できるように、異なる適正化されたデバイスの追加オプションをユーザに提供することであり得る。例えば、2つのセカンダリクライアントデバイスは、同様のデバイス属性を有すると識別され得るが、1つのセカンダリクライアントデバイスが、ハンドオーバ要求が受信された時点からゲームセッションの全期間にわたって利用できない場合や、通信信号強度が弱いまたは電力が低い場合などがあり得る。そのような場合、セカンダリクライアントデバイスの両方に再開要求オプションを提供することは、ユーザが、デバイスハンドオーバ中に、ゲームをプレイするために適切なセカンダリクライアントデバイスに切り替えるのに役立ち得る。
【0080】
図3は、本発明の一実施形態での、セカンダリクライアントデバイスのオプションを識別し、デバイスハンドオーバのためのセカンダリクライアントデバイスを選択するために使用され得るプライマリクライアントデバイス内の様々なモジュールを示す。プライマリクライアントデバイスは、クラウドゲームサーバ320などのサーバから受信した要求及びデータを処理するためのプロセッサ104、インターネットに接続し、サーバ、コンソール、他のクライアントデバイス、コントローラ、ネットワークデバイスなどの他のデバイスと相互作用するための、データ、ネットワーク構成要素、及び通信プロトコルを格納するための1つまたは複数のメモリユニットなどの構成要素を含むコンピューティングデバイスである。プライマリクライアントデバイス100は、ラップトップコンピュータ、デスクトップコンピュータ、携帯電話、タブレットコンピュータデバイス、ヘッドマウントディスプレイなどであり得る。ユーザログインモジュール102は、プライマリクライアントデバイス100のディスプレイ上にレンダリングするためのユーザインターフェイスを提供するために使用され、例えば、クラウドゲームサービスにアクセスするためのユーザ認証情報を提供するために使用される。ユーザインターフェイスはまた、ゲームプレイ中にユーザ選択及びユーザインタラクションを提供するために使用され得る。プロセッサ104は、ネットワーク200を介してクラウドゲームサーバ320または他のコンテンツプロバイダなどのサーバから受信されたストリーミングコンテンツを受信及び処理するために使用されるストリームプロセッサ106を含む。ストリームプロセッサ106は、サーバから受信したストリーミングコンテンツがプライマリクライアントデバイス100のために定義された通信プロトコルに準拠していることを確認するため、及びコンテンツを処理するために必要なロジックを含む。プロセッサ104は、サーバ320によって提供される符号化されたストリーミングデータを解凍するために、プロセッサに利用可能なデコーダ108を使用し得る。解凍されたデータは、プロセッサ104内のデータハンドラ110に転送され、様々なデータ構成要素を識別し、コンテンツの様々なデータ構成要素を分離するために、データを分析する。サーバ320からのストリーミングコンテンツ(すなわち、ストリーミングビデオフレームデータ)は、ビデオフレームデータ、オーディオデータ、触覚データ、画像などを含み得る。データハンドラ110は、ストリーミングコンテンツに提供された様々なデータ構成要素を分離し、レンダリングのために異なるデータ構成要素をプライマリクライアントデバイス100上の適切なデバイス構成要素に別々に転送する。例えば、オーディオデータ構成要素110−aは、レンダリングのためにスピーカーに転送され得て、ビデオ110−b及び画像データ構成要素は、レンダリングなどのためにディスプレイに転送され得る。クライアントデバイスで提供され、ユーザ入力モジュール107によってキャプチャされたユーザ選択、ゲームインタラクションなどのユーザ入力は、例えば、ゲームの結果を導き出すために、プロセッサ104によって処理され、ストリーミングコンテンツに応じてサーバ320に転送される。
【0081】
プライマリクライアントデバイス100はまた、ゲームをプレイするためのデバイスハンドオーバのためのハンドオーバオプションを提示するために、プライマリクライアントデバイス100の近傍にあるセカンダリクライアントデバイスを能動的に探索して検出するために使用される切り替えモジュール120を含む。切り替えモジュール120には、いくつか例を挙げると、検出エージェント130、デバイスプロファイルインストラクタ140、及びハンドオーバロジック150などの複数のサブモジュールなどがある。検出エージェント130は、プライマリクライアントデバイスに対してローカルであると識別された他のクライアントデバイスを検出するために使用される。検出エージェント130は、クライアントデバイス及び/またはプロトコルによって送信された様々な信号を使用して、他のクライアントデバイスを探索する。検出エージェント130は、
図4を参照してより詳細に説明される。
【0082】
デバイスプロファイルインストラクタ140は、いくつかの実施形態では、クラウドゲームシステムのサーバとの通信接続を確立し、プロファイルを取得するために検出エージェント130によって検出されたセカンダリクライアントデバイスに信号を送るために使用される。他の実施形態では、デバイスプロファイルインストラクタ140は、検出されたセカンダリクライアントデバイスとの通信接続を確立し、セカンダリクライアントデバイスのそれぞれをプロファイルするために、クラウドゲームシステムのサーバに信号を送り得る。デバイスプロファイルインストラクタ140の役割の詳細については、
図5を参照して説明する。
【0083】
ハンドオーバロジック150は、デバイスハンドオーバを正常に実行するために、ゲームのゲームプレイに適正化されたセカンダリクライアントデバイスのハンドオーバオプション及びリストをレンダリングするための適切なユーザインターフェイスを提供するために使用される。ハンドオーバロジック150の機能の詳細については、
図6A、
図6B、
図6C−1及び
図6C−2を参照して説明する。
【0084】
図4は、他のクライアントデバイスを探索して検出するためにクライアントデバイス100上で利用可能な検出エージェント130の様々なサブモジュールを示す。検出エージェント130のサブモジュールは、デバイス位置検出器132とサービス検出モジュール134の2つの主要なサブモジュールに大別され得る。デバイス位置検出器132は、プライマリクライアントデバイスによって送信された信号を使用することによって、またはプライマリクライアントデバイス内の構成要素またはプライマリクライアントデバイスの外部のデバイスからデータを取得することによって、プライマリクライアントデバイスの地理的位置を識別するように構成される。ホームネットワークなどのローカルネットワークでは、タブレット、スマートテレビ、スマートウォッチ、携帯電話、ケーブルテレビボックス、ゲームコンソールなどの様々なクライアントデバイスはすべて、イーサネット(登録商標)接続(すなわち、有線接続)、Wi−Fi(すなわち、無線)接続、またはその両方の組み合わせを通じてホームネットワークに接続される。その結果、一実施形態では、プライマリクライアントデバイスの地理的位置は、ネットワーク内の1つまたは複数のネットワークアクセスポイントに対して、プライマリクライアントデバイスによって示されるWi−Fi信号強度を評価することによって判定でき、そのような評価は、Wi−Fi信号検出器132−aを使用して実行され得る。代替の実施形態では、ローカルルータデバイス検出器132−bは、ルータデバイスを通じてネットワークに接続されているクライアントデバイスのリストを取得するためにローカルルータデバイスに照会し得る。さらに別の実施形態では、プライマリクライアントデバイス100に実装されたグローバル測位サービス(GPS)ツール132−cは、プライマリクライアントデバイスの地理的位置を特定するために使用され得る。さらなる実施形態では、プライマリクライアントデバイスの地理的位置は、セルタワー信号検出器132−dを使用して、プライマリクライアントデバイスと1つまたは複数のセルタワーとの間の信号を問い合わせることによって判定し得る。プライマリクライアントデバイスの地理的位置を検出するこのモードは、プライマリクライアントデバイスが携帯電話などのセルタワーと相互作用するように設定されている場合に役立ち得る。いくつかの実施形態では、様々なデバイス位置検出器132の組み合わせは、ユーザのプライマリクライアントデバイス100の地理的位置を判定するために使用され得る。
【0085】
プライマリクライアントデバイスの地理的位置が判定されると、1つまたは複数のサービス検出モジュール134は、プライマリクライアントデバイス100と同じネットワーク環境にある他のクライアントデバイスを能動的に探索して検出するために使用され得る。例えば、タブレットコンピュータ、ラップトップコンピュータ、プリンタなどの様々なデバイスにわたって実装される、マルチキャストDNSサービス検出プロトコル134−aなどのドメインネームシステム(DNS)に基づくプロトコルは、プライマリクライアントデバイスが動作するネットワーク内で利用可能なセカンダリクライアントデバイスを検出するために使用され得る。あるいは、サービスロケーションプロトコル134−bは、プライマリクライアントデバイスが動作するローカルエリアネットワーク内のセカンダリクライアントデバイスを検出するために使用され得る。他のサービス検出プロトコルは、無線技術を使用して、プライマリクライアントデバイスのローカルエリアネットワーク内のBluetooth(登録商標)対応セカンダリクライアントデバイスを検出するためのBluetooth(登録商標)サービス検出プロトコル134−cを含み得る。本明細書で提供されるサービス検出プロトコルのリストは単なる実施例であり、プライマリクライアントデバイスが動作するローカルネットワーク内のセカンダリクライアントデバイスを自動的に探索し検出するために、他のサービス検出プロトコルが使用され得る。異なるプロトコルを使用して検出された様々なセカンダリクライアントデバイスは、例えば、無線接続138を使用してネットワーク200を介してサーバ320に転送される。サーバは、検出されたセカンダリクライアントデバイスのデバイス識別子を受信し、通信接続を確立して、デバイス属性を識別し、それぞれのセカンダリクライアントデバイスをプロファイルするために使用される情報を交換し得る。あるいは、信号は、サーバ320との通信接続を確立し、サーバと情報を交換するための要求と共に、様々なセカンダリクライアントデバイスに送信され得る。サーバと交換される情報は、セカンダリクライアントデバイスのプロファイルを生成するために使用される。セカンダリクライアントデバイスのために生成されたプロファイルは、適切なセカンダリクライアントデバイスがデバイスハンドオーバのオプションとして識別され提供され得るように、セカンダリクライアントデバイスを適正化するために使用される。
【0086】
図5は、一実施形態では、デバイスハンドオーバのために適正化されたセカンダリクライアントデバイスのオプションを提供するために、プライマリクライアントデバイスに対してローカルであることが検出されたセカンダリクライアントデバイスを適正化するために使用される例示的なクライアントデバイスプロファイラ340を示す。サーバ320内の(
図2の)クライアントデバイスプロファイラ340は、様々なデバイス検出プロトコルを使用して、プライマリクライアントデバイス100によって検出された、1つまたは複数のセカンダリクライアントデバイスをプロファイリングするための信号(複数可)を受信し、そのような信号は、クライアントデバイスのデバイスプロファイルインストラクタ140または1つまたは複数のセカンダリクライアントデバイスから受信され得る。信号(複数可)に応答して、クライアントデバイスプロファイラ340は、通信接続を確立し、それぞれのセカンダリクライアントデバイスと情報の交換を開始する。クライアントデバイスプロファイラ340内の様々なサブモジュールは、セカンダリクライアントデバイスから情報を取得するために使用され得る。例えば、サービス品質(QOS)評価器341は、セカンダリクライアントデバイスからQOS情報を取得するために使用され得る。QOS情報は、ユーザのゲームプレイ体験に影響を与える、ネットワーク帯域幅情報、フレームレート、ストリーミング能力、及びping時間、パケット損失、リンクタイプ(すなわち、Wi−Fi、イーサネット(登録商標)、ロングタームエボリューション(LTE)技術などを使用するネットワーク接続)などの他のネットワーク関連情報を含み得る。いくつかの実施形態では、QOS情報は、プライマリクライアントデバイスによって検出されたセカンダリクライアントデバイスを編成するために使用され得る。他の実施形態では、セカンダリクライアントデバイスとクライアントデバイスプロファイラ340との間で交換される情報は、セカンダリクライアントデバイスを編成するために使用され得る。例えば、デバイス属性は、ゲームのデバイス属性要件に従って順位付けされ得る。プロセスを重視するゲームは、プロセッサの速度を他のデバイス属性よりも高く順位付けでき、グラフィックを重視するゲームは、ネットワーク帯域幅を他のデバイス属性よりも高く順位付けし得る。QOS評価器341は、ゲームの要件に従ってデバイス属性を順位付けし、デバイスハンドオーバのために、デバイス属性のこの順位付けを使用して、プライマリクライアントデバイスによって検出されたセカンダリクライアントデバイスを識別し適正化し得る。いくつかの実施形態では、セカンダリクライアントデバイスの適正化リストは、セカンダリクライアントデバイスのデバイス属性と順位付けされたデバイス属性の一致のレベルに従ってリストに編成される。
【0087】
デバイス仕様検出349は、限定されないが、オペレーティングシステムのタイプ及びバージョン、プロセッサのタイプ、プロセッサの速度、メモリのタイプ及び容量などを含む、セカンダリクライアントデバイスのハードウェア及びソフトウェア仕様を判定するために使用され得る。デバイス仕様は、セカンダリクライアントデバイスを分類し、セカンダリクライアントデバイスに転送するためにストリーミングビデオフレームをパッケージ化するために使用され得る。
【0088】
デバイス可用性モジュール343は、プライマリクライアントデバイスによって検出されたそれぞれのセカンダリクライアントデバイスの可用性を判定するために使用され得る。デバイス可用性は、デバイスのハンドオーバのためのオプションとして提供するための適正化されたセカンダリクライアントデバイスの選択を促し得る。セカンダリクライアントデバイスの一部またはすべては、検出時にローカルネットワークに接続され得る。1つまたは複数のセカンダリクライアントデバイスは、カレンダーイベント、ユーザアクションイベントなどのイベントのためのサービスを提供するためにコミットされ得る。イベントが発生すると、イベントのためのサービスを提供するためにコミットされた1つまたは複数のセカンダリクライアントデバイスのリソースがイベント中に使用され得て、それらのセカンダリクライアントデバイスは「ビジー」状態にあることが示される。特定のセカンダリクライアントデバイスがデバイスハンドオーバ中に利用可能であるかどうかを判定するために、デバイス可用性モジュール343は、セカンダリクライアントデバイスのリソースが使用またはコミットされ得る様々なイベントを判定するためにイベント機構(図示せず)に照会するように構成される。一実施形態では、イベント機構は、ゲームセッション中のデバイスハンドオーバのためのセカンダリクライアントデバイスを識別するために、様々なスケジューリングソースからのイベントに関連する情報を照会して取得するように構成され得る。
【0089】
デバイス可用性情報は、ハンドオーバオプションがプライマリクライアントデバイスから受信されたときに、デバイスハンドオーバ中にセカンダリクライアントデバイスのうちのどれが利用可能であるかを判定するために使用することができることに留意されたい。あるいは、デバイス可用性情報は、セカンダリクライアントデバイスのうちのどのデバイスが、今後スケジュールされているゲームプレイセッションでビジーになるようにスケジュールされているかどうかを判定するために使用され得る。ネットワークインターフェイス347などのインターフェイスは、イベントが現在の時間または、特定のセカンダリクライアントデバイスのリソースがコミットまたは必要とされるゲームプレイセッションが予定されている時間にスケジュールされているかどうかを判定するために、カレンダーアプリケーション345、ソーシャルメディアアプリケーション346、電子メールアプリケーションなどの異なるスケジューリングアプリケーションに照会させるためのインターフェイスロジック及び/またはAPIを提供するために使用され得る。例えば、ユーザが現在の時間のソーシャルメディアポストを通じてオンラインマルチプレイヤーゲームをプレイすることをコミットした場合、イベント機構は、ソーシャルコンタクトを識別するために、1つまたは複数のソーシャルグラフ346−aに依存する、ソーシャルメディアアプリケーション346に照会することによって、そのような情報を抽出することができ得る。ソーシャルコンタクトの識別情報は、ゲームをプレイするユーザのソーシャルコミットメントを得るために、監視または照会するソーシャルポスト/フィードを判定するために使用され得る。同様に、ユーザが毎週金曜日の午後8時にオンラインマルチプレイヤーゲームをプレイするためのカレンダーエントリを有する場合、イベント機構は、カレンダーアプリケーション345から、またはソーシャルメディアもしくは他のスケジューリングソースの電子メールアプリケーションもしくはカレンダーオプションからそのような情報を抽出することができ得る。デバイス可用性モジュール343は、識別されたセカンダリクライアントデバイスのうちのどのデバイスが、デバイスハンドオーバオプションに含めるために利用可能であるかを判定するために、特定のセカンダリクライアントデバイスがコミットされた様々なイベントを分析する。デバイス可用性モジュール343から取得されたスケジューリング情報は、ハンドオーバオプションを有するオプションとして提供されたセカンダリクライアントデバイスを識別し、適正化するために使用される。もちろん、識別されるセカンダリクライアントデバイスは、ユーザにとって最適なゲームプレイ体験を提供するためのデバイス属性を有する。
【0090】
ゲーム/アプリ検出モジュール344は、ゲームのゲームプレイセッションのために割り当てられたデータセンターで利用可能な様々なアプリケーション及び/またはゲームを判定するために使用される。
図1に示すように、各データセンターは、プレイするために利用可能である、または設定されている複数のゲームを含む。複数のサーバは、各データセンターで利用可能なゲームをプレイするために必要なリソースを提供する。ゲーム/アプリ検出モジュール344は、利用可能なゲームのリストを判定し、ゲームプレイを可能にするためにデータセンターでゲームをプロビジョニングする必要があるかどうかを判定するように構成される。特定のゲームがデータセンターで利用できない場合、クラウドゲームシステム300は、ゲームがゲームプレイのために選択されたとき、ゲームのインスタンスがゲームタイトルデータストア314から取得され、データセンターのサーバ上で実行され、ゲームコンテンツが、プライマリ及びセカンダリクライアントデバイスにストリーミングされ得るように、データセンターでゲームをプロビジョニングし得る。同様に、セカンダリクライアントデバイスが1つまたは複数のデバイス属性を持たない場合、またはデバイス属性がゲームのゲームプレイに必要なレベルにない場合、ゲーム/アプリ検出モジュール344は、そのような属性を識別でき、クラウドゲームシステム300は、ゲームをプレイするためにセカンダリクライアントデバイスを適正化する、それらの属性をプロビジョニングするために使用され得る。クライアントデバイスプロファイラ340は、様々なサブモジュールによって収集された情報を使用して、プライマリクライアントデバイスに対してローカルであることが検出された様々なセカンダリクライアントデバイスのデバイスプロファイルを生成する。
【0091】
図6Aは、プライマリクライアントデバイスに対してローカルであると識別されたすべてのセカンダリクライアントデバイスについて、クライアントデバイスプロファイラ340によって生成される例示的なデバイスプロファイルを示す。デバイスプロファイルは、デバイス識別子を使用してセカンダリクライアントデバイスを識別し、セカンダリクライアントデバイスの様々なデバイス属性をリスト表示する。簡潔にするために、セカンダリクライアントデバイスのデバイス識別子は、番号順にリスト表示されているが、実際には、デバイス識別子は、各クライアントデバイスを明確に識別するために使用できる一意の識別子である。セカンダリクライアントデバイス及び特定のデバイス属性の数は、実施例として提供されたものであり、限定するものと解釈されるべきではない。デバイス属性の数がより少ないかより多いかは、クライアントデバイスプロファイラ340によって生成されたデバイスプロファイルで識別され得る。
【0092】
クライアントデバイスプロファイラ340によって生成されたプロファイルは、セカンダリクライアントデバイスを適正化するため、及びゲームのゲームプレイ中に、デバイスハンドオーバのためのハンドオーバオプションを提供するために適正化されたセカンダリクライアントデバイスの特定のデバイスを識別するために、サーバ320のハンドオーバマネージャ330によって使用され得る。適正化されたセカンダリクライアントデバイスは、レンダリング及びユーザ選択のために、プライマリクライアントデバイス100にハンドオーバオプションと共に返される。
【0093】
図6B、
図6C−1及び
図6C−2は、プライマリクライアントデバイスのディスプレイ上にレンダリングされるユーザインターフェイスの異なる実施例を示す。プライマリクライアントデバイス100のハンドオーバロジック150は、ハンドオーバオプション及び適正化されたセカンダリクライアントデバイスのリストをサーバ320のハンドオーバマネージャ330から受信し、ユーザ選択のために、ユーザインターフェイス153の適正化されたセカンダリクライアントデバイスのリストをハンドオーバオプションに提示する。ユーザインターフェイスは、ユーザが利用可能な様々なオプション(すなわち、「一時停止」または「再開」)を識別する。さらに、ユーザインターフェイスは、ボックス155に示すように、プライマリクライアントデバイス(D1)のデバイス識別子及び「他のデバイスの選択」オプション157の下に適正化されたセカンダリクライアントデバイスのリストを提供する。
図6Bは、一実施形態では、プライマリクライアントデバイスのディスプレイ上にレンダリングされたユーザインターフェイス153を示す。ユーザ選択のためにオプション157の下に提供されるセカンダリクライアントデバイスのリストは、クライアントデバイスプロファイラ340によって提供されたセカンダリクライアントデバイスのサブセット(
図6Aに図示)であり、一実施形態では、ゲームのデバイス属性要件と比較して、それぞれのセカンダリクライアントデバイスのデバイス属性に従って編成される。
【0094】
黒いカーソルによって示されるように、「一時停止」オプションのユーザ選択により、ゲームのゲームプレイを一時停止するためにサーバ320のハンドオーバマネージャ330に信号を送信する。ハンドオーバマネージャ330は、それに応答して、ゲーム実行エンジン324に命令を送信して、プライマリクライアントデバイスへのストリーミングビデオフレームを中断する。ハンドオーバマネージャ330はさらに、ゲームプレイのゲーム状態を保存するための信号を一時停止マネージャ334に送信して、一時停止された位置からゲームのゲームプレイの再開を可能にする。ゲームプレイのゲーム状態は、状態データマネージャ338によって保存される。灰色の点線のカーソルで示されるように、セカンダリクライアントデバイスのユーザ選択により、選択されたセカンダリクライアントデバイスでゲームプレイを再開することをユーザが決定したときに、セカンダリクライアントデバイスが、ゲームプレイをストリーミングする必要があるハンドオーバデバイスとして識別される。一時停止オプションのユーザ選択により、選択したセカンダリクライアントデバイスに「再開」オプションが転送される。セカンダリクライアントデバイスでの再開オプションのユーザ選択は、サーバ320のハンドオーバマネージャ330に転送される。ハンドオーバマネージャ330は、次に、再開マネージャ332にゲームのゲームプレイを再開するように指示する。再開マネージャ332は、ゲーム実行エンジンに、状態データマネージャ338からゲーム状態を取得し、状態データマネージャ338に保存された再開位置からゲームを再開するように指示する。ハンドオーバマネージャ330は、選択されたセカンダリクライアントデバイス識別子を反映するために、プライマリクライアントデバイス識別子を更新するための信号を送信する。その結果、ゲーム実行エンジン324は、再開されたゲームのビデオフレームをストリーミングするために、選択されたセカンダリクライアントデバイスのデバイス識別子を使用することができる。
【0095】
図6C−1及び
図6C−2は、本発明の一実施形態では、ハンドオーバデバイスとしてのセカンダリクライアントデバイスを選択する別の方法を提供する。
図6C−1に示すように、ユーザは、「一時停止」オプションを選択する代わりに、黒いカーソルによって示されるように、デバイスのハンドオーバのために、セカンダリクライアントデバイスの1つを選択デバイスオプション157から選択し得る。セカンダリクライアントデバイスのユーザ選択により、選択されたデバイスは、自動的に選択デバイスオプション157で強調表示され、
図6C−2の強調表示されている「一時停止」オプションで示されるように、一時停止オプションが有効になる。セカンダリクライアントデバイスのユーザ選択に応答して、ゲーム状態を保存し、「再開」オプションを提供する、ゲームのゲームプレイを一時停止するプロセスは、
図6Bを参照して論じたものと同様である。ゲームプレイは、ユーザがセカンダリクライアントデバイスから再開オプションを選択した場合に再開され得る。
【0096】
本明細書で論じられる様々な実施形態は、プライマリクライアントデバイスが、プライマリクライアントデバイスに対してローカルであるセカンダリクライアントデバイスを能動的に探索して検出するために、各クライアントデバイスに実装された様々なプロトコル及び信号検出器を使用することを可能にする。いくつかの実施形態では、各クライアントデバイス内で利用可能なプロトコル及び技術は、コンテンツプロバイダ(例えば、ゲームサーバ)からのストリーミングコンテンツを受信している能動的に使用されるクライアント(すなわち、プライマリクライアントデバイス)が、ストリーミングコンテンツを受信するのに適している他の休止状態のクライアントデバイス、ストリーミングコンテンツを受信することができるクライアントになるために起動させることができる他のアイドリングクライアントデバイス(例えば、メッセージ待機中のアイドル状態のクライアントデバイス)、またはストリーミングコンテンツの受信に適しているが、現在、番組を録画している、またはいくつかのコンテンツをダウンロードしている、などの限られた作業を実行しているスタンバイクライアントを検出することを可能にする。いくつかの実施形態では、能動的に使用されるクライアントは、他のクライアントデバイスに、情報(例えば、セッション情報、QOS情報、デバイス能力、プレイ中のゲーム、ビデオコーデック情報など)の交換、及びストリーミングセッションの準備作業の開始を促し得る。これにネットワーク帯域幅の監視を含めることも可能である。能動的に使用されるクライアントが、バッテリ電力が少なくなっているテーブルコンピュータの場合、ユーザにゲームプレイを別のクライアントデバイスに切り替えまたは移動させることを提案するユーザインターフェイスをタブレットコンピュータに表示するように促すトリガイベント(すなわち、低バッテリトリガイベント)が発生し得る。提案には、ゲームプレイに使用できるタブレットコンピュータに対してローカルである他のクライアントデバイスが含まれ得て、これらのクライアントデバイスは、そのプロファイルに基づく提案に含まれる。
【0097】
プライマリクライアントデバイスの場所を判定するための様々な方法が使用され得る。例えば、一実施形態では、無線プライマリクライアントデバイスについて、ホームネットワーク内の1つまたは複数のマルチアクセスポイント、または近隣の同等なアクセスポイントに対するWi−Fi信号強度が、ユーザの家屋内の場所を判定するために使用され得る。他の実施形態では、GPSデータが、プライマリクライアントデバイスの位置を判定するために使用され得る。そのような位置情報は、例えば、ユーザが別のクライアントデバイスが存在する部屋に入室しているかどうかを判定するために使用することができる。部屋に入室しているユーザは、コンテンツをストリーミングするために他のクライアントデバイスのネットワーク接続をテストするためのトリガとしての役目を果たすことができる。テストによって、他のクライアントデバイスのQOSが本当に良好であると識別された場合、他のクライアントデバイスが、ユーザに切り替えを推奨できる、より良いゲームプレイ体験、例えば、より高い解像度、より高いフレームレート、より短い待ち時間などを提供することができ得ることをユーザに通知するデバイスハンドオーバオプションが、プライマリクライアントデバイス上に提示され得る。提示されたオプションでの他のクライアントデバイスのユーザ選択により、切り替えが実行される。
【0098】
多くの場合、様々なパーソナルクライアントデバイスは、ゲームネットワーク、ソーシャルメディアネットワーク、コンテンツプロバイダネットワークなどのネットワークサービスに連続的に接続される。そのようなネットワークサービスは、ユーザの様々なパーソナルクライアントデバイス、クライアントデバイスの地理的位置、及びネットワーク接続を追跡し続け得る。例えば、ユーザが、ゲームネットワークなどのオンラインサービスを使用して携帯電話上でゲームをプレイしている場合、オンラインサービスは、GPS信号、セルタワー信号、Wi−Fiホットスポットなど、携帯電話によって生成された信号を使用してクライアントデバイスの位置を判定し、ユーザのホームネットワークなどのプライベートネットワークまたはローカルネットワーク内の他のクライアントデバイスと通信することができ得る。ローカルまたはプライベートネットワーク(例えば、ホームネットワーク)内の他のクライアントデバイスは、定期的にゲームネットワークまたは他のオンラインサービスに接続し、ゲームをプレイするために使用されているユーザの携帯電話の地理的位置を認識し得る。ゲームネットワークが、携帯電話のユーザが家に近づいたことを検出した場合、これにより、携帯電話のネットワーク帯域幅及び他のQOS属性、ならびにホームネットワーク内の他のクライアントデバイスのネットワーク帯域幅を検証するためのトリガイベントを開始し得る。ネットワーク内の携帯電話及び他のクライアントデバイスのデバイス属性のこの事前設定は、切り替え要求を受信する前にデバイスを適正化するための予備作業が既に行われているため、ユーザがデバイスハンドオーバを要求したときには、より高速でフリクションレスなデバイス切り替えを支援し得る。
【0099】
いくつかの実施形態では、カレンダーイベントは、例えば、ユーザがゲームネットワークを通じてオンラインマルチプレイヤーセッションのために行った予約を識別するために、イベント機構によって照会し得る。カレンダーイベントの識別により、ストリーミングセッションのための様々なクライアントデバイス(プライマリ及び1つまたは複数のセカンダリクライアントデバイス)の準備をトリガし得る。クライアントデバイスが、まだコンテンツをストリーミングするために使用されていないと仮定すると、計画されたイベントを検出しただけで、ローカルネットワーク内のクライアントデバイス(プライマリ及びセカンダリクライアントデバイス)のプロファイリング及び適正化をトリガすることができる。これには、事前にストリーミングセッションの準備が整っているプライマリ及び/または1つまたは複数のセカンダリクライアントデバイスを取得するためのプロビジョニングサービス及び属性が含まれ、そのようなプロビジョニングは、カレンダーイベントが発生したときに、少なくとも1つのクライアントデバイスが、ゲームをプレイするために選択されることを見越して行われる。
【0100】
様々な実施形態は、現在のプライマリクライアントデバイスが、ユーザがゲームプレイのストリーミングセッションを転送し得る、すべての潜在的なセカンダリクライアントデバイスにアクセスする機会を探すことを可能にする方法を説明する。具体的には、プライマリクライアントデバイスは、バックグラウンドQOS及びセカンダリクライアントデバイスのプロファイリングに使用して、様々なデバイス属性の状態を取得でき、そのようなバックグラウンドQOS及びプロファイリングは、プライマリクライアントデバイスがアイドル状態であることが検出されたとき、または固定されたデューティサイクルで、または定期的もしくはトリガイベントなどに応答して、特定の時期に行われ得る。プロファイリングはユーザが変更を開始する前に行われ、その結果、ユーザがデバイスハンドオーバオプションを選択することを決定したとき、セカンダリクライアントデバイスが既にプロファイルされているので、より高速でフリクションレスな変更が発生する可能性があり、いくつかの実施形態では、コーデック設定及び/または他のデバイス属性は、迅速なストリーム切り替えのために予め確立されているか、または予め確立することができる。
【0101】
特定のセカンダリクライアントデバイスが使用パターンを有する場合、そのような使用はQOSのパターンに影響を与え得る。セカンダリクライアントデバイスをプロファイリングすることにより、プライマリクライアントデバイスは、そのような使用パターンを認識し、セカンダリクライアントデバイスの切り替えの適正化を確認するために役立てることができる。例えば、プロファイルは、有望な既知のQOSが高い信頼区間を有するセカンダリクライアントデバイスを識別し得る。この情報は、セカンダリクライアントデバイスがデバイスハンドオーバのために選択されたときに、事前テストされたコーデック及び他のストリーム設定(すなわち、ビデオフレームまたはコンテンツのストリーミングを可能にするデバイス属性)を呼び出すために使用することができる。別の例では、セカンダリクライアントデバイスが作業時間中に予測不可能なプロセス負荷(CPU負荷)を有する場合、切り替えイベントが開始されるたびに、新しいQOSテストを実行することが必要になり得る。
【0102】
いくつかの実施形態では、様々なセカンダリクライアントデバイスに対して生成されたプロファイリング情報は、プライマリクライアントデバイスに現在送信されているゲームのストリーミングビデオフレームを受信するように既に設定されている、ローカルまたはプライベートまたはホームネットワーク内に他のセカンダリクライアントデバイスが存在するかどうかを判定するために使用され得る。ユーザは、ゲームのストリーミングビデオフレームを受信するために既に設定されているセカンダリクライアントデバイスのデバイス識別子を有するハンドオーバオプションを提供され得る。いくつかの実施形態では、ハンドオーバが実行される前に、新しいQOSテストが実行され得る。別の実施形態では、セカンダリクライアントデバイス及びプライマリクライアントデバイスが同じネットワーク内にいる限り、セカンダリクライアントデバイスを適正化するために使用された既存のQOSテストが信頼され、デバイスハンドオーバは追加のQOSテストを実行することなく実施され得る。いくつかの実施形態では、プライマリクライアントデバイスは、パーソナルコンピュータ、タブレットコンピュータ、携帯電話、デスクトップコンピュータ、テレビなどのいずれかであり得る。セカンダリクライアントデバイスは、ヘッドマウントディスプレイであり得る。あるいは、プライマリクライアントデバイスはヘッドマウントディスプレイであり、デバイスハンドオーバのために選択されたセカンダリクライアントデバイスは、パーソナルコンピュータ、タブレットコンピュータ、携帯電話、デスクトップコンピュータ、テレビなどのいずれかであり得る。他の実施形態では、プライマリクライアントデバイス及びセカンダリクライアントデバイスは両方ともヘッドマウントディスプレイであり得る。
【0103】
ゲームのユーザの進行状況を使用してゲームのゲーム状態を再作成する方法の詳細については、一実施形態では、2010年11月1日に出願された「ビデオストリームを制御するためのユーザインターフェイス、システム及び方法」と題する米国特許出願第12/917,388号を参照することができ、参照によりその全体が本明細書に組み込まれる。上記で定義されたゲーム状態を再作成するプロセスは1つの可能な方法であり、ゲームのゲーム状態を再作成する他の方法も使用し得る。ビデオ生成及び配信の詳細については、2010年5月31日に出願された「ゲーム実行環境」と題する米国特許出願第12/790,955号(その後、特許第8,506,402号として発行されている)を参照することができ、参照によりその全体が本明細書に組み込まれる。サーバ側でのゲームビデオの生成及び/またはレンダリングに関する詳細については、2010年6月1日に出願された「ビデオ配信の適正化」と題する米国特許出願第12/791,819号を参照することができ、参照によりその全体が本明細書に組み込まれる。コンピュータプログラムのサーバ側実行に関する詳細については、2011年9月13日に出願された「アドオン管理システム」と題する米国特許出願第13/231,751号を参照することができ、参照によりその全体が本明細書に組み込まれる。
【0104】
図7は、本発明の一実施形態での、ゲームプレイのデバイスハンドオーバのために使用できるセカンダリクライアントデバイスのオプションを識別するために使用される様々な方法動作を示す。方法は、プライマリクライアントデバイスから受信したゲームをプレイするための要求に応答して、プライマリクライアントデバイスに対してゲームのゲームプレイのセッションが確立される、動作710で始まる。プライマリクライアントデバイスは、ゲームプレイのためのゲームを識別するために、ユーザアカウントを介してクラウドゲームシステムにアクセスするために使用され得る。クラウドゲームシステム内のサーバは、ユーザ及びゲームプレイ要求を認証し、プライマリクライアントデバイスにゲームのビデオフレームをストリーミングするためにゲームのインスタンスを実行することによってゲームプレイセッションを確立する。ビデオフレームは、プライマリクライアントデバイスにストリーミングされる前に、サーバ上で利用可能なエンコーダを使用して暗号化され得る。
【0105】
動作720に示すように、1つまたは複数のセカンダリクライアントデバイスのプロファイルを生成するための要求が受信される。セカンダリクライアントデバイスは、セカンダリクライアントデバイスによって生成された信号を使用して、及び/またはセカンダリクライアントデバイス内に実装された1つまたは複数のデバイス検出プロトコルを通じて、プライマリクライアントデバイスによって検出され得る。プロファイルの生成要求は、セカンダリクライアントデバイスに信号を送信して、サーバとの通信接続を確立し、プロファイルを取得することによって、プライマリクライアントデバイスによって開始し得る。あるいは、プライマリクライアントデバイスは、プライマリクライアントデバイスに対してローカルに検出されたセカンダリクライアントデバイスのデバイス識別子を使用してサーバに信号を送信し、サーバにセカンダリクライアントデバイスとの通信接続を確立するように要求し、情報を交換して、それぞれのセカンダリクライアントデバイスのプロファイルを生成し得る。サーバは、信号に応答して、確立された通信接続を使用してセカンダリクライアントデバイスと情報を交換し、1つまたは複数のデバイス属性を識別し、それぞれのデバイス属性を使用して各セカンダリクライアントデバイスのプロファイルを生成する。プロファイルで提供される情報は、ゲームのゲームプレイのためにセカンダリクライアントデバイスを適正化するために使用される。
【0106】
動作730に示すように、ゲームプレイ中にハンドオーバオプションがプライマリクライアントに提供される。ハンドオーバオプションは、生成されたプロファイルに基づいて、ゲームをプレイするために適正化された1つまたは複数のセカンダリクライアントデバイスを識別するように構成される。ハンドオーバオプションは、ユーザ選択のためにプライマリクライアントデバイスのユーザインターフェイス上に提示される。
【0107】
動作740に示すように、セカンダリクライアントデバイスのユーザ選択は、プライマリクライアントデバイスから受信される。セカンダリクライアントデバイスのユーザ選択の受信に応答して、ゲームプレイは一時停止され、ゲームプレイのゲーム状態はサーバによって保存される。ゲームプレイの一時停止は、プライマリクライアントデバイスへのビデオフレームのストリーミングを一時停止することにつながる。ゲームの一時停止に応答して、再開オプションが、セカンダリクライアントデバイス上でゲームのプレイを再開するために、セカンダリクライアントデバイスに提供される。
【0108】
動作750に示すように、セカンダリクライアントデバイスからの再開要求のユーザ選択は、サーバによって受信される。再開要求に応答して、サーバは、ゲームの保存されたゲーム状態にアクセスし、セカンダリクライアントデバイス上でゲームのプレイを継続するように構成される。再開要求により、サーバは再開したゲームのビデオフレームをセカンダリクライアントデバイスにストリーミングする。セカンダリクライアントデバイスは、プライマリクライアントデバイスとして指定され、その結果、ストリーミングビデオフレームは、プライマリクライアントデバイスの代わりにセカンダリクライアントデバイスに送信され得る。デバイスハンドオーバは、最小限の待ち時間で迅速かつシームレスに実行され、プライマリ及びセカンダリクライアントデバイスのユーザは、遜色ないまたはさらに良くなったゲームプレイ体験を楽しむことができる。
【0109】
いくつかの実施形態では、デバイス切り替えは、選択されたセカンダリクライアントデバイスのデバイス属性に応じて、ユーザが、より高い解像度、より高いフレームレート、より短い待ち時間など、プライマリクライアントデバイスによって提供されたゲームプレイ体験よりも良いゲームプレイ体験を体験することを可能にする。あるいは、デバイス切り替えは、ゲームプレイ体験を著しく変えてしまうことなく、ゲームプレイを継続する方法を提供し得る。これは、例えば、プライマリクライアントデバイスで検出されたバッテリ電力不足などのトリガイベントに応答して、デバイス切り替えが実施される場合などがあり得る。
【0110】
方法動作は特定の順序で説明されているが、他のハウスキーピング操作が動作の間に実行され得る、または、動作が、わずかに異なる時間に生じるように調整され得る、もしくはオーバーレイ動作の処理が所望の方法で実行される限り、処理に関連する様々な間隔で処理動作の発生を可能にするシステムに分散され得ることを理解されたい。
【0111】
図8は、異なるゲームへのアクセスの提供に使用され得る、情報サービスプロバイダアーキテクチャの実施形態を示す。情報サービスプロバイダ(ISP)1070は、ネットワーク1086を介して地理的に分散され接続されたユーザ1082に多数の情報サービスを配信する。ゲームへの高速アクセスを提供することに関して様々な実施形態が論じられてきたが、実施形態は、1つまたは複数のタイプの他のサービスを提供するように拡張することができる。例えば、ISPは、ゲームなどの1種類のみのサービス、またはゲーム、株価の更新、ブロードキャストメディア、ニュース、スポーツ、ゲームなどの様々なサービスを提供することができる。さらに、各ISPによって提供されるサービスは動的であり得て、つまり、任意の時点でサービスを追加または取り除き得る。したがって、特定の個人に特定の種類のサービスを提供するISPは、時間の経過と共に変化する可能性がある。例えば、ユーザが故郷にいる間は、ユーザの近くのISPによってサービスを受け得て、ユーザが異なる都市に移動しているときは、異なるISPによってサービスを受け得る。故郷のISPは、接続モジュールを通じて、必要な情報及びデータをユーザのゲームまたはアクセスプロファイルから新しいISPに転送し、その結果、ユーザ情報が新しい都市までユーザに「追随」し、データをユーザにより近づけて、よりアクセスしやすくする。別の実施形態では、ユーザの情報を管理するマスタISPと、マスタISPからの制御下のユーザと直接的にインターフェイスをとるサーバISPとの間に、マスタとサーバの関係が確立され得る。別の実施形態では、クライアントが世界中を移動するにつれて(すなわち、ユーザに割り当てられたデータセンターの切り替え中に)、あるISPから別のISPにデータが転送され、そのような転送は、ユーザにサービスするためにより良い位置にあるISPを、これらのサービスを配信するISPとするため、それぞれのISPによって提供されるサービスの互換性に基づき得る。
【0112】
ISP1070は、ネットワークを介して顧客にコンピュータベースのサービスを提供する、アプリケーションサービスプロバイダ(ASP)1072を含む。ASPモデルを使用して提供されるソフトウェアは、オンデマンドソフトウェアまたはソフトウエアアズアサービス(SaaS)と呼ばれることもある。特定のアプリケーションプログラム(顧客関係管理など)へのアクセスを提供する簡単な形式は、HTTPなどの標準プロトコルを使用することである。アプリケーションソフトウェアは、例えば、ベンダのシステムに常駐し、HTMLを使用するウェブブラウザを通じて、ベンダによって提供された専用クライアントソフトウェアによって、またはシンクライアントなどの他のリモートインターフェイスを介してユーザによってアクセスされる。
【0113】
広い地理的地域で配信されるサービスは、クラウドコンピューティングをしばしば使用する。クラウドコンピューティングは、動的スケーラブルで、仮想化されたリソースがインターネット上のサービスとしてしばしば提供されるコンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」のテクノロジインフラストラクチャの専門家である必要はない。クラウドコンピューティングは、インフラストラクチャアズアサービス(IaaS)、プラットフォームアズアサービス(PaaS)、及びソフトウエアアズアサービス(SaaS)などの異なるサービスに分けることができる。クラウドコンピューティングサービスは、ウェブブラウザからアクセスされる共通のビジネスアプリケーションをオンラインでしばしば提供し、ソフトウェア及びデータはサーバに格納される。クラウドという用語は、インターネットがコンピュータネットワーク図にどのように描かれているかに基づいて(例えば、サーバ、ストレージ、及びロジックを使用する)インターネットのメタファとして使用され、メタファが隠す複雑なインフラストラクチャの抽象的概念である。
【0114】
さらに、ISP1070は、ゲームクライアントによってシングル及びマルチプレイヤービデオゲームをプレイするために使用されるゲーム処理サーバ(GaPS)1074を含む。インターネット上でプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームはプレイヤーからのデータを収集し、それを他のプレイヤーに配布する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホストするには別のサーバが必要となる。別の実施形態では、GaPSは、プレイヤーとそれぞれのゲームプレイデバイスとの間の通信を確立し、集中GaPSに頼ることなく情報を交換する。
【0115】
専用GaPSは、クライアントとは独立して実行されるサーバである。このようなサーバは、通常、データセンターに配置された専用ハードウェアで実行され、より多くの帯域幅と専用の処理能力を提供する。専用サーバは、ほとんどのPCベースのマルチプレイヤーゲームのためのゲームサーバをホストするのに適した方法である。多人数参加型オンラインゲームは、通常ゲームタイトルを所有するソフトウェア会社がホストする専用サーバで実行され、コンテンツを制御及び更新することができる。
【0116】
放送処理サーバ(BPS)1076は、視聴者にオーディオまたはビデオ信号を配信する。非常に狭い範囲の視聴者への放送はナローキャスティングと呼ばれることもある。放送配信の最終工程は、信号が聴取者または視聴者にどのように到達するかであり、ラジオ局またはテレビ局と同様にアンテナ及び受信機に放送され得るか、局を介してケーブルテレビまたはケーブルラジオ(または「無線ケーブル」)を経由してまたはネットワークから直接放送され得る。インターネットはまた、特に、信号及び帯域幅を共有できるマルチキャストを使用して、ラジオまたはテレビのいずれかを受信者に届け得る。歴史的に、放送は、全国放送または地域放送などの地理的領域によって区切られている。しかし、高速インターネットの普及に伴い、コンテンツは世界のほぼすべての国に到達可能なため、放送は地域によって定義されない。
【0117】
ストレージサービスプロバイダ(SSP)1078は、コンピュータストレージ空間及び関連する管理サービスを提供する。SSPは定期的なバックアップとアーカイブも提供する。ストレージをサービスとして提供することにより、ユーザは必要に応じてより多くのストレージを注文できる。その他の大きな利点は、SSPにバックアップサービスが含まれており、コンピュータのハードドライブに障害が発生してもユーザがすべてのデータを失うことがないことである。さらに、複数のSSPは、ユーザデータの全部または一部のコピーを有することができ、ユーザがどこにいるか、またはデータにアクセスするために使用されているデバイスとは無関係に、ユーザは効率的な方法でデータにアクセスすることができるようになる。例えば、ユーザは、移動中に自宅のコンピュータ及び携帯電話内の個人ファイルにアクセスすることができる。
【0118】
通信プロバイダ1080は、ユーザに接続性を提供する。通信プロバイダの1つの種類は、インターネットへのアクセスを提供するインターネットサービスプロバイダ(ISP)である。ISPはダイヤルアップ、DSL、ケーブルモデム、光ファイバ、無線、または専用の高速インターコネクトなどのインターネットプロトコルデータグラムの配信に適したデータ伝送技術を使用して顧客を接続する。通信プロバイダは、電子メール、インスタントメッセージング、及びSMSテキストメッセージなどのメッセージングサービスも提供することができる。通信プロバイダの別の種類は、インターネットへの直接のバックボーンアクセスを提供することによって、帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダは、電気通信会社、データ通信業者、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などで構成され得る。
【0119】
データ交換1088は、ISP1070内のいくつかのモジュールを相互接続し、ネットワーク1086を介してこれらのモジュールをユーザ1082に接続する。データ交換1088は、ISP1070のすべてのモジュールが近接している小さな領域をカバーすることができ、または異なるモジュールが地理的に分散している場合に大きな地理的領域をカバーすることができる。例えば、データ交換1088は、データセンターのキャビネット内に高速ギガビットイーサネット(登録商標)(またはより高速のもの)、または大陸間仮想エリアネットワーク(VLAN)を含むことができる。
【0120】
ユーザ1082は、少なくともCPU、メモリ、ディスプレイ及びI/Oを含む、クライアントデバイス1084を使用してリモートサービスにアクセスする。クライアントデバイスは、PC、携帯電話、ネットブック、タブレット、ゲームシステム、PDAなどとすることができる。一実施形態では、ISP1070は、クライアントによって使用されるデバイスの種類を認識し、採用する通信方法を調整する。他の場合には、クライアントデバイスは、HTMLなどの標準的な通信方法を使用して、ISP1070にアクセスする。
【0121】
図9は、本発明の様々な実施形態による、ゲームシステム1400のブロック図である。ゲームシステム1400は、ネットワーク1415を介して1つまたは複数のクライアント1410にビデオストリームを提供するように構成される。ネットワークは、
図1に示すネットワーク200と同様である。ゲームシステム1400は、通常、ビデオサーバシステム1420及びオプションのゲームサーバ1425を含む。ビデオサーバシステム1420は、最小限のサービス品質で1つまたは複数のクライアント1410にビデオストリームを提供するように構成される。例えば、ビデオサーバシステム1420は、ビデオゲーム内の状態または視点を変更するゲームコマンドを受信し、クライアント1410に、この変更を直ちに反映する更新されたビデオストリームを、最小遅延時間で提供し得る。ビデオサーバシステム1420は、まだ定義されていないフォーマットを含む、多種多様な代替ビデオフォーマットでビデオストリームを提供するように構成し得る。さらに、ビデオストリームは、多種多様なフレームレートでユーザに提示するように構成されたビデオフレームを含み得る。典型的なフレームレートは、毎秒30フレーム、毎秒60フレーム、及び毎秒1420フレームである。ただし、本発明の代替の実施形態には、より高いまたはより低いフレームレートが含まれる。
【0122】
本明細書で、1410A、1410Bなどと個々に呼ばれるクライアント1410は、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話機、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、ハンドヘルドゲームプレイデバイス、及び/または同様のものを含み得る。説明されるクライアントは、
図1のクライアント100−1〜100−nと同様である。典型的には、クライアント1410は、符号化されたビデオストリームを受信し、ビデオストリームを復号化し、得られたビデオをユーザ、例えば、ゲームのプレイヤーに提示するように構成される。符号化されたビデオストリームを受信し、及び/またはビデオストリームを復号化する処理は、通常、個々のビデオフレームをクライアントの受信バッファに格納することを含む。ビデオストリームは、クライアント1410に統合されたディスプレイ上またはモニタもしくはテレビなどの別個のデバイス上でユーザに提示され得る。クライアント1410は、任意選択で、複数のゲームプレイヤーをサポートするように構成される。例えば、ゲームコンソールは、2人、3人、4人またはそれ以上の同時プレイヤーをサポートするように構成され得る。これらのプレイヤーの各人は、別個のビデオストリームを受信し得るか、または単一のビデオストリームは、各プレイヤーに対して特別に生成された、例えば、各プレイヤーの視点に基づいて生成されたフレームの領域を含み得る。クライアント1410は、任意選択で地理的に分散される。ゲームシステム1400に含まれるクライアントの数は、1つもしくは2つから数千、数万、またはそれ以上に大きく変動し得る。本明細書で使用する「ゲームプレイヤー」という用語は、ゲームをプレイする人を指すために使用され、「ゲームプレイデバイス」という用語は、ゲームをプレイするために使用されるデバイスを指すために使用される。いくつかの実施形態では、ゲームプレイデバイスは、協働してゲーム体験をユーザに提供する複数のコンピューティングデバイスを指し得る。例えば、ゲームコンソール及びHMDは、ビデオサーバシステム1420と協働して、HMDを介して表示されるゲームを提供し得る。一実施形態では、ゲームコンソールは、ビデオサーバシステム1420からビデオストリームを受信し、ゲームコンソールは、ビデオストリームまたはビデオストリームを更新して、レンダリングのためにHMDに転送する。
【0123】
クライアント1410は、ネットワーク1415(
図1のネットワーク200と同様)を介してビデオストリームを受信するように構成される。ネットワーク1415は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、プライベートネットワークなどを含む任意のタイプの通信ネットワークとし得る。典型的な実施形態では、ビデオストリームは、TCP/IPまたはUDP/IPなどの標準プロトコルを介して通信される。あるいは、ビデオストリームは、独自の規格を介して通信される。
【0124】
クライアント1410の典型的な例は、プロセッサ、不揮発性メモリ、ディスプレイ、復号化ロジック、ネットワーク通信能力、及び入力デバイスを含むパーソナルコンピュータである。復号化ロジックは、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体に格納されたソフトウェアを含み得る。ビデオストリームを復号化(及び符号化)するためのシステムは、当該技術分野において周知であり、使用される特定の符号化方式に応じて異なる。
【0125】
クライアント1410は、必須ではないが、受信ビデオを修正するように構成されたシステムをさらに含み得る。例えば、クライアントは、さらなるレンダリングを実行する、1つのビデオ画像をもう1つのビデオ画像に重ねる、ビデオ画像をトリミングする、及び/または同様のことができるように構成し得る。例えば、クライアント1410は、Iフレーム、Pフレーム、及びBフレームなどの様々なタイプのビデオフレームを受信し、これらのフレームをユーザに表示するための画像に処理するように構成し得る。いくつかの実施形態では、クライアント1410のメンバーは、ビデオストリームに対するさらなるレンダリング、シェーディング、三次元への変換、または同様の動作を実行するように構成される。クライアント1410のメンバーは、任意選択で、複数のオーディオまたはビデオストリームを受信するように構成される。クライアント1410の入力デバイスは、例えば、片手ゲームコントローラ、両手ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、フォースフィードバックデバイス、動き及び/または位置検知デバイス、マウス、タッチスクリーン、神経インターフェイス、カメラ、まだ開発されていない入力デバイス、及び/または同様のものを含み得る。
【0126】
クライアント1410によって受信されたビデオストリーム(及び任意選択でオーディオストリーム)は、ビデオサーバシステム1420によって生成され、提供される。本明細書の他の箇所でさらに説明するように、このビデオストリームはビデオフレームを含む(及びオーディオストリームはオーディオフレームを含む)。ビデオフレームは、ユーザに表示される画像に有意義に貢献する(例えば、それらは適切なデータ構造内にピクセル情報を含む)ように構成される。本明細書で使用する「ビデオフレーム」という用語は、ユーザに表示される画像に貢献する、例えば、効果を与えるように構成された情報を主に含むフレームを指すために使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、「オーディオフレーム」にも適用することができる。
【0127】
クライアント1410は、典型的には、ユーザからの入力を受信するように構成される。これらの入力は、ビデオゲームの状態を変化させるように、またはそれ以外の場合はゲームプレイに影響を与えるように構成されたゲームコマンドを含み得る。ゲームコマンドは、入力デバイスを使用して受信することができる、及び/またはクライアント1410上で実行する命令を計算することによって自動的に生成し得る。受信したゲームコマンドは、クライアント1410からネットワーク1415を介してビデオサーバシステム1420及び/またはゲームサーバ1425に通信される。例えば、いくつかの実施形態では、ゲームコマンドは、ビデオサーバシステム1420を介してゲームサーバ1425に通信される。いくつかの実施形態では、ゲームコマンドの別個のコピーが、クライアント1410からゲームサーバ1425及びビデオサーバシステム1420に通信される。ゲームコマンドの通信は、任意選択でコマンドのIDに依存する。ゲームコマンドは、オーディオまたはビデオストリームをクライアント1410Aに提供するために使用されたものとは異なる経路または通信チャネルを介して、クライアント1410Aから任意選択で通信される。
【0128】
ゲームサーバ1425は、任意選択で、ビデオサーバシステム1420とは異なるエンティティによって運営される。例えば、ゲームサーバ1425は、マルチプレイヤーゲームのパブリッシャーによって運営され得る。この例では、ビデオサーバシステム1420は、任意選択で、ゲームサーバ1425によってクライアントとして見なされ、任意選択で、ゲームサーバ1425の観点から、従来技術のゲームエンジンを実行する従来技術のクライアントに見えるように構成される。ビデオサーバシステム1420とゲームサーバ1425との間の通信は、任意選択で、ネットワーク1415を介して行われる。このように、ゲームサーバ1425は、ゲーム状態情報を複数のクライアントに送信する従来技術のマルチプレイヤーゲームサーバとすることができ、そのうちの1つがビデオサーバシステム1420である。ビデオサーバシステム1420は、同時にゲームサーバ1425の複数のインスタンスと通信するように構成し得る。例えば、ビデオサーバシステム1420は、異なるユーザに複数の異なるビデオゲームを提供するように構成することができる。これらの異なるビデオゲームの各々は、異なるゲームサーバ1425によってサポートされ得て、及び/または異なるエンティティによってパブリッシュされ得る。いくつかの実施形態では、ビデオサーバシステム1420の地理的に分散された複数のインスタンスは、複数の異なるユーザにゲームビデオを提供するように構成される。ビデオサーバシステム1420のこれらのインスタンスの各々は、ゲームサーバ1425の同じインスタンスと通信し得る。ビデオサーバシステム1420と1つまたは複数のゲームサーバ1425との間の通信は、任意選択で、専用の通信チャネルを介して行われる。例えば、ビデオサーバシステム1420は、これらの2つのシステム間の通信に専用の高帯域幅チャネルを介してゲームサーバ1425に接続され得る。
【0129】
ビデオサーバシステム1420は、少なくともビデオソース1430、I/Oデバイス1445、プロセッサ1450、及びストレージ1455(非一時的なアナログ及び/またはデジタルストレージデバイスを含む)を備える。ビデオサーバシステム1420は、1つのコンピューティングデバイスを含み得るか、または複数のコンピューティングデバイスに分散され得る。これらのコンピューティングデバイスは、任意選択で、ローカルエリアネットワークなどの通信システムを介して接続される。
【0130】
ビデオソース1430は、例えば、ストリーミングビデオまたは動画を形成する一連のビデオフレームなどのビデオストリームを提供するように構成される。いくつかの実施形態では、ビデオソース1430は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤーからゲームコマンドを受信し、受信したコマンドに基づいてビデオゲームの状態のコピーを維持するように構成される。このゲーム状態には、ゲーム環境内のオブジェクトの位置と、典型的には視点を含む。ゲーム状態はまた、オブジェクトの特性、画像、色及び/またはテクスチャを含み得る。
【0131】
ゲーム状態は、典型的には、ゲームルールと、移動、回転、攻撃、フォーカス設定、相互作用、使用及び/または同様のものなどのゲームコマンドに基づいて維持される。ゲームエンジンの一部は、任意選択で、ゲームサーバ1425内に配置される。ゲームサーバ1425は、地理的に分散したクライアントを使用する複数のプレイヤーから受信したゲームコマンドに基づいて、ゲームの状態のコピーを維持し得る。これらの場合、ゲーム状態は、ゲームサーバ1425によってビデオソース1430に提供され、ゲーム状態のコピーが格納され、レンダリングが実行される。ゲームサーバ1425は、ネットワーク1415を介してクライアント1410から直接ゲームコマンドを受信でき、及び/またはビデオサーバシステム1420を介してゲームコマンドを受信し得る。
【0132】
ビデオソース1430は、典型的には、レンダリングロジック、例えば、ハードウェア、ファームウェア、及び/またはストレージ1455などのコンピュータ可読媒体に格納されたソフトウェアなどを含む。このレンダリングロジックは、ゲーム状態に基づいてビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全部または一部は、任意選択で、グラフィックス処理ユニット(GPU)内に配置される。
レンダリングロジックは、典型的には、ゲーム状態及び視点に基づいて、オブジェクト間の三次元空間関係を判定するように、及び/または適切なテクスチャなどを適用するように構成された処理ステージを含む。レンダリングロジックは生のビデオを生成し、通常、クライアント1410と通信する前に符号化される。例えば、生のビデオは、Adobe Flash(登録商標)規格、.wav、H.264、H.263、On2、VP6、VC−1、WMA、Huffyuv、Lagarith、MPG−x.Xvid.FFmpeg、x264、VP6−8、リアルビデオ、mp3などに従って符号化し得る。
符号化処理は、リモートデバイス上のデコーダに提供するために、任意選択でパッケージ化されたビデオストリームを生成する。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。任意の他のフレームサイズを使用し得るが、典型的なフレームサイズには、800×600、1280×720(例えば、720p)、1024×768がある。フレームレートは、1秒あたりのビデオフレームの数である。ビデオストリームは、異なるタイプのビデオフレームを含み得る。
例えば、H.264規格は、「P」フレーム及び「I」フレームを含む。Iフレームは、ディスプレイデバイス上のすべてのマクロブロック/画素をリフレッシュするための情報を含み、Pフレームは、そのサブセットをリフレッシュするための情報を含む。Pフレームは、典型的には、Iフレームよりもデータサイズが小さい。本明細書で使用する「フレームサイズ」という用語は、フレーム内の画素数を指すことを意味する。「フレームデータサイズ」という用語は、フレームを格納するために必要なバイト数を指すために使用される。
【0133】
他の実施形態は、ビデオソース1430は、カメラなどのビデオ記録デバイスを含む。このカメラは、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオを生成するために使用され得る。得られたビデオストリームは、任意選択で、レンダリングされた画像と、スチルカメラまたはビデオカメラを使用して記録された画像の両方を含む。ビデオソース1430はまた、ビデオストリームに含めるために以前に記録されたビデオを格納するように構成されたストレージデバイスを含み得る。ビデオソース1430はまた、オブジェクト、例えば、人物の動きまたは位置を検出するように構成された動きまたは位置検知デバイス、ならびに検出された動き及び/または位置に基づいてゲーム状態を判定、またはビデオを生成するように構成されたロジックを含み得る。
【0134】
ビデオソース1430は、任意選択で、他のビデオに配置されるように構成されたオーバーレイを提供するように構成される。例えば、これらのオーバーレイは、コマンドインターフェイス、ログイン指示、ゲームプレイヤーへのメッセージ、他のゲームプレイヤーの画像、他のゲームプレイヤーのビデオフィード(例えば、ウェブカメラビデオ)を含み得る。タッチスクリーンインターフェイスまたは視線検出インターフェイスを含むクライアント1410Aの実施形態では、オーバーレイは、仮想キーボード、ジョイスティック、タッチパッド、及び/または同様のものを含み得る。オーバーレイの一例では、プレイヤーの音声がオーディオストリーム上に重ねられる。ビデオソース1430は、任意選択で、1つまたは複数のオーディオソースをさらに含む。
【0135】
ビデオサーバシステム1420が、複数のプレイヤーからの入力に基づいてゲーム状態を維持するように構成されている実施形態では、各プレイヤーは、視界の位置及び方向を含む異なる視点を有し得る。ビデオソース1430は、任意選択で、各プレイヤーに対して、彼らの視点に基づいて別個のビデオストリームを提供するように構成される。さらに、ビデオソース1430は、異なるフレームサイズ、フレームデータサイズ、及び/または符号化をクライアント1410のそれぞれに提供するように構成し得る。ビデオソース1430は、任意選択で、三次元ビデオを提供するように構成される。
【0136】
I/Oデバイス1445は、ビデオサーバシステム1420が、ビデオ、コマンド、情報要求、ゲーム状態、視線情報、デバイス動作、デバイス位置、ユーザ動作、クライアントID、プレイヤーID、ゲームコマンド、セキュリティ情報、オーディオ、及び/または同様のものなどの情報を送信及び/または受信するように構成される。I/Oデバイス1445は、典型的には、ネットワークカードまたはモデムなどの通信ハードウェアを含む。I/Oデバイス1445は、ゲームサーバ1425、ネットワーク1415、及び/またはクライアント1410と通信するように構成される。
【0137】
プロセッサ1450は、本明細書で論じられるビデオサーバシステム1420の様々な構成要素内に含まれるロジック、例えば、ソフトウェアを実行するように構成される。例えば、プロセッサ1450は、ビデオソース1430、ゲームサーバ1425、及び/またはクライアントクォリファイア1460の機能を実行するためにソフトウェア命令でプログラムされ得る。ビデオサーバシステム1420は、任意選択で、プロセッサ1450の複数のインスタンスを含む。プロセッサ1450はまた、ビデオサーバシステム1420によって受信されたコマンドを実行するため、または本明細書で論じられるゲームシステム1400の様々な要素の動作を調整するために、ソフトウェア命令でプログラムされ得る。プロセッサ1450は、1つまたは複数のハードウェアデバイスを含み得る。プロセッサ1450は、電子プロセッサである。
【0138】
ストレージ1455は、非一時的なアナログ及び/またはデジタルストレージデバイスを含む。例えば、ストレージ1455は、ビデオフレームを格納するように構成されたアナログストレージデバイスを含み得る。ストレージ1455は、コンピュータ可読デジタルストレージ、例えば、ハードドライブ、光学ドライブ、またはソリッドステートストレージを含み得る。ストレージ1455は、ビデオフレーム、人工フレーム、ビデオフレームと人工フレームの両方を含むビデオストリーム、オーディオフレーム、オーディオストリーム、及び/または同様のものを格納するように(例えば、適切なデータ構造またはファイルシステムによって)構成される。ストレージ1455は、任意選択で、複数のデバイス間に分散される。いくつかの実施形態では、ストレージ1455は、本明細書の他の箇所で論じられるビデオソース1430のソフトウェア構成要素を格納するように構成される。これらの構成要素は、必要なときに供給する準備ができる形式で格納し得る。
【0139】
ビデオサーバシステム1420は、任意選択で、クライアントクォリファイア1460をさらに含む。クライアントクォリファイア1460は、クライアント1410Aまたは1410Bなどのクライアントの能力を遠隔で判定するように構成される。これらの能力は、クライアント1410A自体の能力と、クライアント1410Aとビデオサーバシステム1420との間の1つまたは複数の通信チャネルの能力の両方を含むことができる。例えば、クライアントクォリファイア1460は、ネットワーク1415を介して通信チャネルをテストするように構成し得る。
【0140】
クライアントクォリファイア1460は、クライアント1410Aの能力を手動または自動で判定(例えば、発見)することができる。手動判定は、クライアント1410Aのユーザと通信し、ユーザに能力を提供するように依頼することを含む。例えば、いくつかの実施形態では、クライアントクォリファイア1460は、クライアント1410Aのブラウザ内に画像、テキスト、及び/または同様のものを表示するように構成される。
一実施形態では、クライアント1410Aは、ブラウザを含むHMDである。別の実施形態では、クライアント1410Aは、ブラウザを有するゲームコンソールであり、HMD上に表示され得る。表示されたオブジェクトは、ユーザが、クライアント1410Aのオペレーティングシステム、プロセッサ、ビデオデコーダタイプ、ネットワーク接続のタイプ、ディスプレイ解像度などの情報を入力することを要求する。ユーザによって入力された情報は、クライアントクォリファイア1460に返信される。
【0141】
自動判定は、例えば、クライアント1410A上のエージェントの実行によって、及び/またはクライアント1410Aへのテストビデオの送信によって行い得る。エージェントは、ウェブページに埋め込まれるか、またはアドオンとしてインストールされるJava(登録商標)スクリプトなどのコンピューティング命令を含み得る。エージェントは、任意選択で、クライアントクォリファイア1460によって提供される。
様々な実施形態では、エージェントは、クライアント1410Aの処理能力、クライアント1410Aの符号化及び表示能力、クライアント1410Aとビデオサーバシステム1420との間の通信チャネルの遅延時間の信頼性及び帯域幅、クライアント1410Aのディスプレイタイプ、クライアント1410A上に存在するファイアウォール、クライアント1410Aのハードウェア、クライアント1410A上で実行するソフトウェア、クライアント1410A内のレジストリエントリ、及び/または同様のものを検出することができる。
【0142】
クライアントクォリファイア1460は、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体に格納されたソフトウェアを含む。クライアントクォリファイア1460は、任意選択で、ビデオサーバシステム1420の1つまたは複数の他の要素とは別個のコンピューティングデバイス上に配置される。例えば、いくつかの実施形態では、クライアントクォリファイア1460は、クライアント1410とビデオサーバシステム1420の複数のインスタンスとの間の通信チャネルの特性を判定するように構成される。これらの実施形態では、クライアントクォリファイアによって検出された情報を使用して、ビデオサーバシステム1420のどのインスタンスが、クライアント1410の1つにストリーミングビデオを配信するのに、最適なのかを判定することができる。
【0143】
上記の実施形態を念頭に置いて、本発明は、コンピュータシステムに格納されたデータを含む様々なコンピュータ実装の動作を使用し得ることを理解されたい。これらの動作は、物理量の物理的操作を必要とする動作を含む。本発明の一部を形成する本明細書に記載されているいずれの動作も有用な機械動作である。本発明はまた、これらの動作を実行するためのデバイスまたはデバイスに関する。装置は、必要とされる目的のために特別に構成することができ、または装置は、コンピュータに格納されたコンピュータプログラムによって選択的に起動または構成された汎用コンピュータとすることができる。具体的には、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用機械を使用することができ、または必要とされる動作を実行するより特殊化した装置を構築する方がより便利であり得る。
【0144】
上述の発明は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施し得る。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境でも実施し得る。
【0145】
本発明は、コンピュータ可読媒体上のコンピュータ可読プログラミングコードとして具体化することもできる。あるいは、コンピュータ可読プログラミングコードは、上述のデータ交換相互接続を使用してサーバからダウンロードされ得る。コンピュータ−可読媒体は、データを格納することができる任意のデータストレージデバイスであり、このデータは、その後、電磁搬送波を含むコンピュータシステムによって読み取ることができる。コンピュータ−可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、リードオンリメモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープ、ならびに他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体は、コンピュータ可読コードは分散方式で格納され、実行されるように、ネットワーク結合コンピュータシステム上に分散することもできる。
【0146】
前述の発明は、理解を明確にするために幾分詳細に説明してきたが、添付の特許請求の範囲内である種の変更及び修正を実施し得ることは明らかであろう。したがって、本実施形態は例示的であって限定的ではないと見なされるべきであり、本発明は本明細書に記載された詳細に限定されるものではなく、添付の特許請求の範囲及び均等物の範囲内で修正され得る。