(57)【要約】ゲームプレイのデバイスハンドオーバのためのセカンダリクライアントデバイスのオプションを識別する方法及びシステムは、プライマリクライアントデバイスへのビデオフレームをストリーミングするためにサーバ上でゲームを実行することによって、プライマリクライアントデバイスのためのゲームのゲームプレイのセッションを確立することを含む。要求は、プライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスのプロファイルを生成するために受信される。プロファイルは、セカンダリクライアントデバイスのデバイス属性を識別するように構成される。ハンドオーバオプションは、ゲームプレイ中にプライマリクライアントデバイスに提供され、そのプロファイルに基づいて１つまたは複数のセカンダリクライアントデバイスを識別する。プライマリクライアントデバイスから受信したハンドオーバオプションによって識別されたセカンダリクライアントデバイスの選択により、プライマリクライアントデバイスへのビデオフレームのストリーミングを一時停止し、ゲームのゲーム状態を保存し、セカンダリクライアントデバイス上でゲームのプレイを再開するオプションを提供する。セカンダリクライアントデバイスへのビデオフレームのストリーミングを継続するために、セカンダリクライアントデバイスから受信した再開要求により、ゲームのゲーム状態にアクセスし、ゲームプレイを再開させる。【選択図】図７
2019514536.tif 000002
【特許請求の範囲】
【請求項１】
クラウドゲームシステムのサーバによって実行される方法であって、セカンダリクライアントデバイスの１つへのゲームプレイのデバイスハンドオーバのために使用できる前記セカンダリクライアントデバイスのオプションを識別するために実行され、
プライマリクライアントデバイスからゲームをプレイするためのプレイ要求に応答して、前記プライマリクライアントデバイスのための前記ゲームのゲームプレイのセッションを確立することであって、前記クラウドゲームシステムの前記サーバが、前記プライマリクライアントデバイスにビデオフレームをストリーミングするために前記ゲームを実行するように構成される、前記確立し、
前記プライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスのプロファイルを生成する要求を前記サーバによって受信することであって、セカンダリクライアントデバイスのために生成された前記プロファイルが、前記セカンダリクライアントデバイスのためのデバイス属性を識別するように構成される、前記受信し、
前記ゲームプレイ中に前記プライマリクライアントデバイスにハンドオーバオプションを前記サーバによって提供することであって、前記ハンドオーバオプションが、前記プロファイルに基づいて前記セカンダリクライアントデバイスの１つまたは複数を識別するように構成される、前記提供し、
前記プライマリクライアントデバイスから、前記ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択を前記サーバによって受信し、前記選択は、前記プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止し、前記ゲームのためのゲーム状態を保存するように構成され、前記一時停止がさらに、前記特定のセカンダリクライアントデバイス上での前記ゲームのプレイを再開するオプションを提供するように構成され、
前記特定のセカンダリクライアントデバイス上で前記ゲームの前記プレイを継続するために、前記特定のセカンダリクライアントデバイスから前記サーバによって再開要求を受信し、前記再開要求は、前記サーバに、前記ゲームの前記ゲーム状態にアクセスさせ、前記特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続させるように構成されるものである、方法。
【請求項２】
プロファイルを生成する前記要求が、ゲームプレイの前記セッション中に受信される、請求項１に記載の方法。
【請求項３】
前記特定のセカンダリクライアントデバイスを、前記セッションのリマインダのために、前記プライマリクライアントデバイスとして指定する、請求項１に記載の方法。
【請求項４】
プロファイルを生成する前記要求が、トリガイベントの発生に応答してトリガされる、請求項１に記載の方法。
【請求項５】
プロファイルを生成する前記要求が、前記プライマリクライアントデバイスに対してローカルであると識別された前記１つまたは複数のセカンダリクライアントデバイスから受信される、請求項１に記載の方法。
【請求項６】
前記プライマリクライアントデバイスに対してローカルである前記セカンダリクライアントデバイスは、前記プライマリクライアントデバイスの位置情報を使用して判定される、請求項１に記載の方法。
【請求項７】
前記デバイス属性は、前記セカンダリクライアントデバイスを適正化するために使用され、前記ゲームの要件に従って順位付けされた前記デバイス属性及び前記ハンドオーバオプションで提供された前記セカンダリクライアントデバイスは、前記それぞれのセカンダリクライアントデバイスの前記プロファイルで識別された前記デバイス属性の順位付けに従って編成される、請求項１に記載の方法。
【請求項８】
前記セカンダリクライアントデバイスは、前記プライマリクライアントデバイス及び前記セカンダリクライアントデバイス内に実装された１つまたは複数のサービス検出プロトコルを使用して識別される、請求項１に記載の方法。
【請求項９】
プロファイルを生成する前記要求は、前記プライマリクライアントデバイスから受信され、前記要求は、前記プロファイルが生成される前記セカンダリクライアントデバイスのデバイス識別子を含む、請求項１に記載の方法。
【請求項１０】
前記特定のセカンダリクライアントデバイスからの前記再開要求は、前記特定のセカンダリクライアントデバイスでユーザインタラクションを提供するために使用される入力方法を含み、前記入力方法は、前記特定のセカンダリクライアントデバイスの前記入力方法を使用して提供された前記ユーザインタラクションを受け入れるために、前記ゲームのゲームプレイの調整に使用される、請求項１に記載の方法。
【請求項１１】
前記プライマリクライアントデバイスの１つまたは複数の入力デバイスを前記特定のセカンダリクライアントデバイスに引き渡し、この引き渡しには、前記１つまたは複数の入力デバイスを前記プライマリクライアントデバイスから自動的に切断することと、及び前記１つまたは複数の入力デバイスを前記特定のセカンダリクライアントデバイスに自動的に接続することが含まれる、請求項１に記載の方法。
【請求項１２】
前記１つまたは複数の入力デバイスは、無線入力デバイスである、請求項１１に記載の方法。
【請求項１３】
前記１つまたは複数の入力デバイスは、無線コントローラを含む、請求項１１に記載の方法。
【請求項１４】
クラウドゲームシステムのサーバによって実行される方法であって、セカンダリクライアントデバイスの１つへのゲームプレイのデバイスハンドオーバのために使用できる前記セカンダリクライアントデバイスのオプションを識別するために実行され、
プライマリクライアントデバイスからゲームをプレイするためのプレイ要求に応答して、前記プライマリクライアントデバイスのためのゲームのゲームプレイのセッションを確立し、前記クラウドゲームシステムの前記サーバは、前記プライマリクライアントデバイスにビデオフレームをストリーミングするために前記ゲームを実行するように構成され、
前記プライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスを検出し、
前記プライマリクライアントデバイス及び前記プライマリクライアントデバイスに対してローカルである前記セカンダリクライアントデバイスの前記１つまたは複数のそれぞれのプロファイルを生成し、前記プライマリクライアントデバイスまたはセカンダリクライアントデバイスのために生成された前記プロファイルは、前記それぞれのプライマリクライアントデバイスまたは前記セカンダリクライアントデバイスのデバイス属性を識別するように構成され、
前記ゲームプレイ中に前記プライマリクライアントデバイスにハンドオーバオプションを前記サーバによって提供し、前記ハンドオーバオプションは、前記プライマリクライアントデバイスに対してローカルであり、前記プライマリクライアントデバイス及び前記セカンダリクライアントデバイスの前記プロファイルに基づいて、前記ゲームのゲームプレイ体験を向上させることができるデバイス属性を有する、１つまたは複数のセカンダリクライアントデバイスを識別するように構成され、
前記プライマリクライアントデバイスから、前記ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択を前記サーバによって受信し、前記選択は、前記プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止し、前記ゲームのためのゲーム状態を保存するように構成され、前記一時停止は、前記特定のセカンダリクライアントデバイス上での前記ゲームのプレイを再開するオプションを提供するように構成され、
前記特定のセカンダリクライアントデバイス上で前記ゲームの前記プレイを継続するために、前記特定のセカンダリクライアントデバイスから前記サーバによって再開要求を受信し、前記再開要求は、前記サーバに、前記ゲームの前記ゲーム状態を取得させ、前記特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続させるように構成される、方法。
【請求項１５】
前記プライマリクライアントデバイス及び前記１つまたは複数のセカンダリクライアントデバイスの前記プロファイルは、トリガイベントに応答して生成される、請求項１４に記載の方法。
【請求項１６】
プロファイルの生成は、前記プライマリクライアントデバイスから受信した要求に応答して実行される、請求項１４に記載の方法。
【請求項１７】
前記１つまたは複数のセカンダリクライアントデバイスは、前記プライマリクライアントデバイス及び前記セカンダリクライアントデバイス内に実装された１つまたは複数のサービス検出プロトコルのサービスを使用することによって識別される、請求項１４に記載の方法。
【請求項１８】
前記ビデオフレームは、ストリーミングする前にエンコーダを使用して前記サーバによって圧縮される、請求項１４に記載の方法。
【請求項１９】
１つまたは複数のセカンダリクライアントデバイスの識別には、
前記ゲームをプレイするためのデバイス属性要求の識別と、
前記ゲームをプレイするための前記デバイス属性要件を満たすまたは超える前記デバイス属性を有する前記１つまたは複数のセカンダリクライアントデバイスの選択が含まれる、請求項１４に記載の方法。
【請求項２０】
ゲームのゲームプレイのデバイスハンドオーバに使用されるセカンダリクライアントデバイスのオプションを識別するためのクラウドゲームシステムであって、前記クラウドゲームシステムは、
複数のゲームを実行するように構成されたアプリケーションサーバを有し、前記アプリケーションサーバは、
プレイのために選択された前記ゲームのゲームコードを識別し、前記ゲームコードを実行して前記ゲームのためのビデオフレームを生成するように構成されたゲーム実行エンジンを有し、
情報を交換するために、プライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスとの通信接続を確立するように構成されたクライアントデバイスプロファイリングモジュールを有し、前記交換された情報は、前記１つまたは複数のセカンダリクライアントデバイスのそれぞれのデバイス属性を識別するために使用され、セカンダリクライアントデバイスの前記デバイス属性は、前記セカンダリクライアントデバイスのプロファイルを生成するために使用されるものであり、
ハンドオーバマネージャを有し、このハンドオーバマネージャは、
前記ゲームをプレイするために適正化された前記セカンダリクライアントデバイスの選択されたデバイスを識別し、前記セカンダリクライアントデバイスの選択されたデバイスのリストを、ハンドオーバオプションを使用して前記プライマリクライアントデバイスに提供し、
前記リストから特定のセカンダリクライアントデバイスの選択を受信し、前記選択により、前記ハンドオーバマネージャが、命令を含む信号を前記ゲーム実行エンジンに送信して、前記プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止し、前記ゲームのゲーム状態が保存され、
前記特定のセカンダリクライアントデバイス上でレンダリングするための再開オプションを提供し、
前記特定のセカンダリクライアントデバイスからの再開要求を受信し、前記再開要求により、前記ハンドオーバマネージャが、前記ゲーム実行エンジンに、ゲーム状態を取得して前記特定のセカンダリクライアントデバイスへの前記ゲームのビデオフレームのストリーミングを再開するように指示を行うように構成される、クラウドゲームシステム。
【請求項２１】
前記アプリケーションサーバは一時停止マネージャをさらに含み、
前記一時停止マネージャは、前記ハンドオーバマネージャから一時停止信号を受信し、前記ゲームのゲームプレイを一時停止するように前記ゲーム実行エンジンに信号を送るように構成される、請求項２０に記載のクラウドゲームシステム。
【請求項２２】
前記アプリケーションサーバは、再開マネージャをさらに含み、
前記再開マネージャは、前記ハンドオーバマネージャから前記再開要求を受信し、前記ゲームのゲームプレイを再開するように構成される、請求項２０に記載のクラウドゲームシステム。
【請求項２３】
前記ハンドオーバマネージャは、前記特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続するように、前記ゲーム実行エンジンのデバイス識別子を、プライマリクライアントデバイス識別子から特定のセカンダリクライアントデバイス識別子に更新するようにさらに構成される、請求項２０に記載のクラウドゲームシステム。
【請求項２４】
前記アプリケーションサーバは、前記ビデオフレームをストリーミングする前に、通信プロトコルに従って前記ビデオフレームを圧縮するように構成されたエンコーダをさらに含む、請求項２０に記載のクラウドゲームシステム。
【請求項２５】
クラウドゲームシステムのサーバと相互作用して、クライアントデバイスによって開始されたゲームのゲームプレイのデバイスハンドオーバのためのセカンダリクライアントデバイスのオプションを識別するように構成されたクライアントデバイスであって、
前記ゲームのゲームプレイ中に前記サーバによって提供されるストリーミングビデオフレームデータを格納するように構成されたメモリを有し、
前記ストリーミングビデオフレームデータを処理し、前記ストリーミングビデオフレームデータを前記クライアントデバイスの１つまたは複数のデバイス構成要素上に提示するように構成されたプロセッサを有し、
切り替えモジュールを有し、この切り替えモジュールは、
前記クライアントデバイス及び前記１つまたは複数のセカンダリクライアントデバイスに実装された１つまたは複数のデバイス検出プロトコルを使用することによって、前記クライアントデバイスに対してローカルである１つまたは複数のセカンダリクライアントデバイスを検出し、
前記１つまたは複数のセカンダリクライアントデバイスをプロファイリングするために、前記クラウドゲームシステムの前記サーバに要求を転送し、
ユーザ選択のために前記クライアントデバイスのユーザインターフェイス上に提示される、１つまたは複数のセカンダリクライアントデバイスのリストを、ゲームプレイのために適正化された、前記１つまたは複数のセカンダリクライアントデバイスのリストと共に、ハンドオーバオプションを前記サーバから受信し、
特定のセカンダリクライアントデバイスのユーザ選択を前記サーバに転送し、前記ユーザ選択により、前記クライアントデバイスへのビデオフレームデータのストリーミングが一時停止されるように構成される、クライアントデバイス。
【請求項２６】
前記プロセッサは、前記ストリーミングビデオフレームデータを提示する前に、前記ストリーミングビデオフレームデータを解凍するためにデコーダを使用する、請求項２５に記載のクライアントデバイス。
【請求項２７】
クラウドゲームシステムのサーバによって実行されたときにセカンダリクライアントデバイスの１つへのゲームプレイのデバイスハンドオーバに使用することができる前記セカンダリクライアントデバイスのオプションを識別する方法を提供するプログラミングコードを有する非一時的なコンピュータ可読媒体であって、前記コンピュータ可読媒体は、
ゲームをプレイするためにプライマリクライアントデバイスから受信されたプレイ要求に応答して、前記プライマリクライアントデバイスのための前記ゲームのゲームプレイのセッションを確立するためのプログラミングコードを有し、前記セッションの確立には、前記ゲームのためのゲームコードの実行と、前記プライマリクライアントデバイスにビデオフレームのストリーミングとが含まれ、
前記プライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスのプロファイルを生成する要求を受信するためのプログラミングコードを有し、セカンダリクライアントデバイスのために生成された前記プロファイルは、前記セカンダリクライアントデバイスのためのデバイス属性を識別するように構成され、
前記ゲームプレイ中に前記プライマリクライアントデバイスにハンドオーバオプションを提供するためのプログラミングコードを有し、前記ハンドオーバオプションは、前記プロファイルに基づいて前記セカンダリクライアントデバイスの１つまたは複数を識別するように構成され、
前記プライマリクライアントデバイスから、前記ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択を受信するためのプログラミングコードを有し、前記選択は、前記プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止して前記ゲームのためのゲーム状態を保存するように構成され、前記一時停止は、さらに、前記特定のセカンダリクライアントデバイス上での前記ゲームのプレイを再開するオプションを提供するように構成され、
前記特定のセカンダリクライアントデバイス上で前記ゲームの前記プレイを継続するために、前記特定のセカンダリクライアントデバイスから再開要求を受信するためのプログラミングコードを有し、前記再開要求は、前記ゲームの前記ゲーム状態にアクセスして、前記特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続することによって、ゲームプレイを再開するように構成される、非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ユーザインタラクションのためのゲームを提供するためのシステム及び方法に関し、より詳細には、クラウドゲーム中のデバイスハンドオーバのための代替クライアントデバイスを選択するためのオプションを提供することに関する。
【背景技術】
【０００２】
急速に成長する技術分野の１つとして、ユーザが、インターネットなどのネットワークを介してクラウドゲームサイト上で利用できる多数のゲームにアクセスして、ゲームのプレイを開始することができるクラウドゲームの分野がある。ユーザは、クラウドゲームサイト上の自分のアカウントにアクセスし、ゲームプレイのためにユーザアカウントで利用可能なゲームのリストからゲームを選択する。
ユーザがクラウドゲームサイトからゲームプレイのためのゲームを選択すると、クライアントデバイスを使用して、クラウドゲームサイト内のサーバがゲームプレイのセッションを開始し、ユーザがクラウドゲームサイトにアクセスしたクライアントデバイスへのゲームのビデオフレームのストリーミングを開始する。
セッション中に、ユーザがゲームをプレイするためにセカンドクライアントデバイスに切り替えることを望む場合、クラウドゲームサイトのサーバは、ビデオフレームをセカンドクライアントデバイスにストリーミングすることができるように、ゲームを最初から再開する必要がある。サーバは、セカンドクライアントデバイスへのゲームのビデオフレームのストリーミングを開始する前に、帯域幅テスト及び他のサービス品質テストを実施する必要がある。ゲームの再開及びセカンドクライアントデバイスの事前テストは、ユーザの不必要な待機を招き、ユーザの不満を引き起こす。
【０００３】
本発明の実施形態は、上述した背景の下になされたものである。
【発明の概要】
【０００４】
本発明の実施形態は、クラウドゲームサイトによってホストされるゲームのゲームプレイを引き渡すための代替クライアントデバイスのオプションを識別するために使用される方法、システム及びコンピュータ可読媒体を開示する。
様々な実施形態は、クラウドゲームサイト上のクラウドゲームシステムによってホストされるゲームをプレイするために現在使用されているプライマリクライアントデバイスが、プライマリクライアントデバイスに対してローカルであると識別されたセカンダリクライアントデバイスのバックグラウンドプロファイリングを行うことを可能にする。セカンダリクライアントデバイスのプロファイリングは、どのセカンダリクライアントデバイスがゲームのゲームプレイセッションを継続するために適しているかを判定するために行われ、デバイスハンドオーバ要求がプライマリクライアントデバイスから受信される前に実行される。
プロファイルにより、各セカンダリクライアントデバイスのデバイス属性が識別される。いくつかの実施形態では、クラウドゲームシステムは、異なるセカンダリクライアントデバイスにサービスをプロビジョニングするためにプロファイルを使用して、これらのセカンダリクライアントデバイスをゲームがプレイできる状態にさせ得る。クラウドゲームシステムによってホストされる各ゲームは、それ自体のサービス及び属性要件を有し得る。
【０００５】
プロファイリングにより、クラウドゲームシステムは、各セカンダリクライアントデバイスで利用可能なサービス、デバイス属性を識別し、クラウドゲームサイト上で実行されているゲームとの相互作用に使用するために、それぞれのセカンダリクライアントデバイスが利用可能ではない、または必要なレベルに達していない、サービス、デバイス属性を判定することができる。
いくつかの実施形態では、クラウドゲームシステムは、各セカンダリクライアントデバイスのプロファイルを使用して、セカンダリクライアントデバイスのうちの特定のデバイスのサービスまたはデバイス属性をブーストするように適切なリソースをプロビジョニングし得る。そのようなプロビジョニングは、ゲームプレイセッション中にゲームのゲームプレイのためにプライマリクライアントデバイスによってデバイスハンドオーバのためにセカンダリクライアントデバイスのうちの特定のデバイスが選択され得ることを見越して、プライマリクライアントデバイスによって開始されたゲームプレイセッション中にクラウドゲームシステムによって事前に、またはバックグラウンドで実行され得る。
【０００６】
プライマリクライアントデバイスから、デバイスハンドオーバの要求がクラウドゲームシステムで受信されると、プロファイリングにより、クラウドゲームシステムは、プライマリクライアントデバイスから特定のセカンダリクライアントデバイスへ、より高速でフリクションレス（問題を生じない、あるいは摩擦を生じない）デバイスハンドオーバを実行し、セカンダリクライアントデバイスは、ゲームプレイセッションを続けるために必要なリソース（サービス、デバイス属性）を有することができる。
換言すれば、ハンドオーバ要求が受信されると、システムは、ユーザがゲームをプレイするためにクラウドゲームサイトと相互作用するクライアントデバイスを切り替えることができるように、プロファイリングにより、クラウドゲームシステムは、セカンダリクライアントデバイスを適正化することができる。
【０００７】
正常に行われたデバイス変更には、ゲームプレイを一時停止し、プライマリクライアントデバイスへのゲームのビデオフレームのストリーミングを停止し、ゲームのゲーム状態を保存し、ハンドオーバオプションによって識別されるセカンダリクライアントデバイスにゲームのゲームプレイを再開するためのオプションを提供する、ゲームを実行しているクラウドゲームシステムのサーバが含まれる。再開要求をセカンダリクライアントデバイスから受信すると、クラウドゲームシステム上のサーバは、ゲーム状態を取得し、ゲームが一時停止した場所からゲームプレイを再開し、セカンダリクライアントデバイスへのゲームのビデオフレームのストリーミングを継続する。
【０００８】
セカンダリクライアントデバイスを事前に検出しプロファイリングすると、デバイスハンドオーバ中にかなりの待ち時間が短縮される。ハンドオーバオプションで識別されるセカンダリクライアントデバイスは、プライマリクライアントデバイスを使用しているときと同様のゲームプレイ体験を提供するのに適している。さらに、プロファイリング及びプロビジョニングは、ビデオフレームが最小限の待ち時間でセカンダリクライアントデバイスのユーザに確実に提供されるようにする。デバイスのハンドオーバ中にゲームを一時停止及び／またはゲーム状態を保存することにより、ゲームのゲームプレイをより高速に再開することができる。
【０００９】
一実施形態では、方法が提供される。この方法は、クラウドゲームシステムのサーバによって実行され、セカンダリクライアントデバイスの１つへのゲームプレイのデバイスハンドオーバのために使用できるセカンダリクライアントデバイスのオプションを識別するために使用される。
方法は、ゲームをプレイするためにプライマリクライアントデバイスから受信された要求に応答して、プライマリクライアントデバイスのゲームのゲームプレイのセッションをサーバによって確立することを含む。クラウドゲームシステムのサーバは、ゲームを実行し、プライマリクライアントデバイスにビデオフレームをストリーミングするように構成される。
要求は、プライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスのプロファイルを生成するために、サーバによって受信される。
プロファイルは、セカンダリクライアントデバイスのデバイス属性を識別するように構成される。ゲームプレイ中に、ハンドオーバオプションがサーバによってプライマリクライアントデバイスに提供される。ハンドオーバオプションは、プロファイルに基づいて、デバイスハンドオーバのための１つまたは複数のセカンダリクライアントデバイスを識別するように構成される。
ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択は、プライマリクライアントデバイスから受信される。選択は、プライマリクライアントデバイスへのストリーミングビデオフレームを一時停止し、ゲームのゲーム状態を保存するように構成される。一時停止は、特定のセカンダリクライアントデバイス上でゲームの再生を再開するオプションを提供するように構成される。
再開要求は、セカンダリクライアントデバイス上でゲームのプレイを継続するために、特定のセカンダリクライアントデバイスから受信される。再開要求は、サーバがゲームのゲーム状態にアクセスし、特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続するように構成される。
【００１０】
いくつかの実施形態では、プロファイルを生成するための要求はセッション中に受信される。
【００１１】
いくつかの実施形態では、特定のセカンダリクライアントデバイスは、セッションのリマインダのために、プライマリクライアントデバイスとして指定される。
【００１２】
いくつかの実施形態では、プロファイルを生成する要求は、トリガイベントの発生に応答してトリガされる。
【００１３】
いくつかの実施形態では、プロファイルへの要求は、プライマリクライアントデバイスに対してローカルであると識別された、それぞれのセカンダリクライアントデバイスから受信される。
【００１４】
いくつかの実施形態では、セカンダリクライアントデバイスを適正化するために使用されるデバイス属性は、ゲームの要件に従って順位付けされる。ハンドオーバオプションで提供されるセカンダリクライアントデバイスは、デバイス属性の順位付けに従って編成される。
【００１５】
いくつかの実施形態では、セカンダリクライアントデバイスは、プライマリクライアントデバイス及びセカンダリクライアントデバイス内に実装された１つまたは複数のサービス検出プロトコルを使用して識別される。
【００１６】
いくつかの実施形態では、プロファイルを生成するための要求はプライマリクライアントデバイスから受信される。要求は、プロファイルを生成するセカンダリクライアントデバイスのデバイス識別子を含む。
【００１７】
別の実施形態では、方法は、クラウドゲームシステムのサーバによって実行される。方法は、セカンダリクライアントデバイスの１つへのゲームプレイのデバイスハンドオーバに使用できるセカンダリクライアントデバイスのオプションを識別するために実行される。方法は、ゲームをプレイするためのプライマリクライアントデバイスからの要求に応答して、プライマリクライアントデバイスのゲームのゲームプレイのセッションを確立することを含む。
クラウドゲームシステムのサーバは、ゲームを実行し、プライマリクライアントデバイスにビデオフレームをストリーミングするように構成される。プライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスが検出される。
プロファイルは、プライマリクライアントデバイス及び、プライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスに対して生成される。プロファイルは、各プライマリ及びセカンダリクライアントデバイスのデバイス属性を識別するように構成される。
ハンドオーバオプションは、ゲームプレイ中にサーバによってプライマリクライアントデバイスに提供される。ハンドオーバオプションは、プライマリ及びセカンダリクライアントデバイスのために生成されたプロファイルに基づいて、プライマリクライアントデバイスに対してローカルであり、ユーザのゲームプレイ体験を向上させることができるデバイス属性を有する１つまたは複数のセカンダリクライアントデバイスを識別するように構成される。
ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択は、プライマリクライアントデバイスからサーバによって受信される。選択は、プライマリクライアントデバイスへのビデオフレームのストリーミングを一時停止し、ゲームのゲーム状態を保存するように構成される。一時停止は、ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイス上でゲームのプレイを再開するための再開オプションを提供するように構成される。
再開要求は、セカンダリクライアントデバイス上でゲームプレイのセッションを継続するために、特定のセカンダリクライアントデバイスからサーバによって受信される。再開要求は、サーバがゲームのゲーム状態を取得し、特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続するように構成される。
【００１８】
いくつかの実施形態では、プライマリ及び１つまたは複数のセカンダリクライアントデバイスのプロファイルは、トリガイベントに応答して生成される。
【００１９】
いくつかの実施形態では、プライマリクライアントデバイスからの要求に応答して、プライマリ及び１つまたは複数のセカンダリクライアントデバイスのプロファイルが生成される。
【００２０】
さらに別の実施形態では、クラウドゲームシステムが開示される。クラウドゲームシステムは、複数のゲームを実行するように構成されたアプリケーションサーバを含む。アプリケーションサーバ内のゲーム実行エンジンは、プライマリクライアントデバイスからゲームをプレイする要求を受信する。それに応じて、ゲーム実行エンジンは、ゲームのインスタンスを実行し、ゲームのビデオフレームを生成する。アプリケーションサーバは、生成されたビデオフレームを処理し、ビデオフレームを符号化し、ビデオフレームをプライマリクライアントデバイスにストリーミングするように構成される。
アプリケーションサーバ内のクライアントデバイスプロファイリングモジュールは、プライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスのプロファイルを生成するための要求を受信するように構成され、１つまたは複数のセカンダリクライアントデバイスは、プライマリクライアントデバイスのプロファイルに基づいて識別される。
クライアントデバイスプロファイリングモジュールは、さらに、セカンダリクライアントデバイスのリストを生成するように構成される。アプリケーションサーバ内のハンドオーバマネージャは、セカンダリクライアントデバイスのリストを取得し、ゲームをプレイするためにセカンダリクライアントデバイスを適正化し、ハンドオーバオプションを使用して適正化されたセカンダリクライアントデバイスの絞り込まれたリストをプライマリクライアントデバイスに転送するように構成される。
ハンドオーバマネージャは、ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択を受信し、それに応じて、信号をゲーム実行エンジンに転送し、プライマリクライアントデバイスへのビデオフレームのストリーミングを一時停止するようにさらに構成される。
いくつかの実施形態では、一時停止信号に応答して、ゲームのゲーム状態も保存される。ハンドオーバマネージャは、特定のセカンダリクライアントデバイスから再開要求を受信すると、それに応じて、ゲーム実行エンジンに、ゲームプレイを再開し、特定のセカンダリクライアントデバイスへのビデオフレームのストリーミングを継続するように信号を送る。ゲームのゲーム状態が保存される実施形態では、ゲーム実行エンジンは、再開要求に応答して、ゲームのゲーム状態を取得し、ゲームのゲーム状態によって示されているように、一時停止された位置からゲームのゲームプレイを再開し得る。
【００２１】
いくつかの実施形態では、ハンドオーバマネージャは、ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択を受信することに応答して、ゲームのゲームプレイを一時停止するように一時停止マネージャに信号を送るように構成される。一時停止マネージャは、ゲームのゲームプレイを一時停止するようにゲーム実行エンジンに信号を転送するように構成される。
【００２２】
いくつかの実施形態では、ハンドオーバマネージャは、ハンドオーバオプションによって識別された特定のセカンダリクライアントデバイスの選択に応答して、ゲームのビデオフレームを特定のプライマリクライアントデバイスに送信することを一時停止するように、アプリケーションサーバのオペレーティングシステムに信号を送るように構成される。
【００２３】
いくつかの実施形態では、ハンドオーバマネージャは、特定のセカンダリクライアントデバイスから再開要求を受信したことに応答して、ゲームのゲームプレイを再開するように再開マネージャに信号を送るように構成される。再開マネージャは、ゲーム実行エンジンがゲームのゲーム状態を取得し、特定のセカンダリクライアントデバイスへのゲームのビデオフレームのストリーミングを再開させることを要求するゲーム実行エンジンに信号を転送するように構成される。
【００２４】
いくつかの実施形態では、ハンドオーバマネージャは、ゲームプレイを再開するために再開マネージャに信号を送るように構成される。再開マネージャは、信号を受信し、次に、特定のセカンダリクライアントデバイスからの再開要求を受信したことに応答して、ゲームのビデオフレームを特定のセカンダリクライアントデバイスに送信することを再開するように、アプリケーションサーバのオペレーティングシステムに信号を送る。
【００２５】
いくつかの実施形態では、ハンドオーバマネージャは、さらに、特定のセカンダリクライアントデバイスをプライマリクライアントデバイスとして指定するように構成される。
【００２６】
本発明の他の態様及び利点は、本発明の原理を例示により示す添付の図面と関連した、以下の詳細な説明から明らかになるであろう。
【００２７】
本発明は、そのさらなる利点と共に、添付の図面と関連した以下の説明を参照することによって最もよく理解されるであろう。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態による、ゲームのゲームプレイのデバイスハンドオーバのためのセカンダリクライアントデバイスのオプションを識別するために使用される例示的なシステムの簡略ブロック図を示す。
【図２】本発明の一実施形態による、デバイスハンドオーバのための１つまたは複数のセカンダリクライアントデバイスを識別するハンドオーバオプションを生成するために使用される様々なモジュールを有する例示的なアプリケーションサーバを示す。
【図３】本発明の一実施形態による、デバイスハンドオーバを開始するために使用される切り替えモジュールを有するプライマリクライアントデバイスを示す。
【図４】本発明の一実施形態による、プライマリクライアントデバイスのローカルであるセカンダリクライアントデバイスを検出するための、プライマリクライアントデバイス内の切り替えモジュールの例示的な検出エージェントを示す。
【図５】本発明の一実施形態による、セカンダリクライアントデバイスをプロファイリングするために使用されるクラウドゲームシステムでの、アプリケーションサーバなどのサーバの例示的なクライアントデバイスプロファイラを示す。
【図６Ａ】本発明の代替の実施形態による、プライマリクライアントデバイスに対してローカルであるセカンダリクライアントデバイスのために生成された例示的なプロファイルを示す。
【図６Ｂ】本発明の一実施形態による、デバイスハンドオーバのためのセカンダリクライアントデバイスを選択するための入力を提供するプライマリクライアントデバイスでのハンドオーバロジックの実施例を示す。
【図６Ｃ−１】本発明の一実施形態による、デバイスハンドオーバのためのセカンダリクライアントデバイスを選択するための入力を提供するプライマリクライアントデバイスでのハンドオーバロジックの実施例を示す。
【図６Ｃ−２】本発明の一実施形態による、デバイスハンドオーバのためのセカンダリクライアントデバイスを選択するための入力を提供するプライマリクライアントデバイスでのハンドオーバロジックの実施例を示す。
【図７】本発明の一実施形態による、ゲームプレイのデバイスハンドオーバのためのセカンダリクライアントデバイスのオプションを識別するために使用される方法の動作の例示的な流れを示す。
【図８】本発明の一実施形態による、ネットワークを介して地理的に分散され、接続されているユーザに情報コンテンツ及びサービスを配信するための例示的な情報サービスプロバイダアーキテクチャを示す。
【図９】本発明の様々な実施形態による例示的なゲームシステムの簡略ブロック図を示す。
【発明を実施するための形態】
【００２９】
以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細が述べられている。しかしながら、本発明は、これらの具体的な詳細の一部または全部を用いずに実施し得ることは、当業者には明らかであろう。他の例では、本発明を不明瞭にしないために、周知の処理工程については詳細には説明していない。
【００３０】
本発明の様々な実施形態によれば、ユーザは、ゲームプレイのためのゲームを選択するために、プライマリクライアントデバイスを使用して、ユーザアカウントを通じてクラウドゲームシステムにアクセスし得る。クラウドゲームシステムは、クラウドゲームシステムに利用可能なリソースを使用してゲームプレイのための複数のオンラインゲームをホストするように構成される。
ユーザがクラウドゲームシステムにアクセスすることに応答して、クラウドゲームシステムは、ユーザアカウントデータベースに格納されたユーザアカウント情報を使用してユーザアカウントを認証し、ゲームプレイのためにユーザアカウントに利用可能なゲームのリストを提供する。
ゲームプレイのためのゲームのユーザ選択は、クラウドゲームシステムをトリガして、プライマリクライアントデバイスの地理的位置の近傍にあるデータセンターを識別し、データセンター内のサーバに要求を送信して、ゲームのインスタンスを実行し、ゲームプレイセッションを確立する。
サーバは、ゲームを実行するために必要なリソース（すなわち、処理及び通信リソース）を提供し、ゲームのビデオフレームを符号化し、レンダリング及びユーザインタラクションのために、符号化されたゲームのビデオフレームのプライマリクライアントデバイスへのストリーミングを開始する。
プライマリクライアントデバイスで提供されるユーザインタラクションは、クラウドゲームシステム上で実行されるゲームのゲーム結果に影響を与えるために使用される。いくつかの実施形態では、プライマリクライアントデバイスとのゲームプレイセッションを開始した直後に、クラウドゲームシステムのサーバは、プライマリクライアントデバイスのプロファイルを生成し得る。
プライマリクライアントデバイスのプロファイリングは、プライマリクライアントデバイスが、データセンターのサーバからストリーミングされたゲームのストリーミングビデオフレームを受信し処理することができるように、プライマリクライアントデバイスの帯域幅、待ち時間、及び他のリソース変数が、データセンターの選択及び適正化の一部として十分であることを保証するために、サービス品質（ＱＯＳ）検証の一部として開始し得る。本明細書で論じられる様々な実施形態は、オーディオフレームの生成、オーディオフレームの符号化、レンダリングのためのゲームの符号化されたオーディオフレームのプライマリクライアントデバイスへのストリーミングにも拡張し得ることに留意されたい。
【００３１】
ゲームのゲームプレイ中に、プライマリクライアントデバイスは、プライマリクライアントデバイスに対してローカルであるセカンダリクライアントデバイスを能動的に探索して検出し、それぞれのセカンダリクライアントデバイスに信号を送信するか、またはクラウドゲームシステムのサーバによってプロファイルを取得する要求を有するセカンダリクライアントデバイスの１つを選択し得る。
プロファイルは、ゲームをプレイするためにセカンダリクライアントデバイスを適正化するために使用され得る。プライマリクライアントデバイスによって生成された要求は、セカンダリクライアントデバイスがプロファイルを取得するために使用する必要があるサーバを識別する。プロファイリングのために選択されたサーバは、ゲームを実行しているデータセンター内のサーバであり得るか、または、そのようなプロファイリングを実行するように構成されたクラウドゲームシステム内の同じデータセンターまたは任意の他のデータセンター内の任意の他のサーバであり得る。
プロファイリングに使用されるクラウドゲームシステムのサーバは、要求されたときに各クライアントデバイスのプロファイルを生成するプロファイル生成ロジックを含む。いくつかの実施形態では、プライマリクライアントデバイスがセカンダリクライアントデバイスを検出したとき、検出されたセカンダリクライアントデバイスがプロファイルされる。
ハンドオーバオプションは、プライマリクライアントデバイスで提供され、ハンドオーバオプションは、セカンダリクライアントデバイスの生成されたプロファイルに基づいて、デバイスハンドオーバに適している１つまたは複数のセカンダリクライアントデバイスを識別する。いくつかの実施形態では、ハンドオーバオプションは、ビデオフレームのみ、オーディオフレームのみ、またはゲームのオーディオ及びビデオフレームの両方のストリーミングを引き渡すために提供され得る。ユーザが特定のセカンダリクライアントデバイスを選択すると、ユーザ選択がサーバに転送され、サーバは一時停止信号を生成する。データセンター内のサーバは、一時停止信号を受信したことに応答して、ゲームのゲームプレイを一時停止し、ゲームプレイを再開するために、特定のセカンダリクライアントデバイスに再開オプションを提供する。
【００３２】
一時停止信号の処理の一部として、データセンターでゲームを実行するサーバは、いくつかの実施形態では、イベントトリガが開始された時点でサーバにシステム状態を保存させるイベントトリガを開始し得る。そのような実施形態では、システムは、ゲーム属性またはゲーム変数を直接操作することなく、（ゲームアプリケーションを含む）すべてのアプリケーション及び／またはシステム状態を保持する。システム状態を使用して、ゲームのゲーム状態を再作成することができる。
いくつかの実施形態では、アプリケーションプログラミングインターフェイス（ＡＰＩ）を使用してシステム状態を保存し得る。他の実施形態では、サーバは、一時停止信号に応答して、一時停止信号が受信された時点でゲームの保存データを書き出し得る。保存データは、ゲームプレイ中のユーザの進行状況を記録し、ゲームが再開されると、ゲームの最新のゲーム状態を再作成するために使用することができる。ゲームのユーザの進行状況を使用してゲームのゲーム状態を再作成する方法の詳細については、一実施形態では、２０１０年１１月１日に出願された「ビデオストリームを制御するためのユーザインターフェイス、システム及び方法」と題する米国特許出願第１２／９１７，３８８号を参照することができ、参照によりその全体が本明細書に組み込まれる。
【００３３】
いくつかの実施形態では、特定のセカンダリクライアントデバイスのユーザ選択は、ユーザがプライマリクライアントデバイスからゲームのためのゲームプレイインタラクションを提供していないことを示す。いくつかの実施形態では、特定のセカンダリクライアントデバイスのユーザ選択は、プライマリクライアントデバイスでストリーミングゲームコンテンツの少なくとも一部（すなわち、ゲームコンテンツのオーディオフレームまたはビデオフレームのいずれか）を受信することを希望しないことを示し得る。
例えば、ユーザは、プライマリクライアントデバイスでゲームコンテンツのオーディオ部分を受信することは望み得ないが、プライマリクライアントデバイスでゲームコンテンツのビデオ部分を受信することには依然として関心があり得る。これは、例えば、プライマリクライアントデバイスでのオーディオ受信が許容可能なレベルにない場合であり得る。
そのような実施形態では、ゲームコンテンツのオーディオ部分が抽出され、特定のセカンダリクライアントデバイスに転送され得る一方で、（例えば、オーディオ部分がミュートされた状態で）ゲームコンテンツのビデオ部分のプライマリクライアントデバイスへのストリーミングが継続され得る。そのような実施形態では、プライマリクライアントデバイスで提供されるハンドオーバオプションは、ストリーミングゲームコンテンツの選択された部分（オーディオフレームまたはビデオフレームのいずれか）が特定のセカンダリクライアントデバイスにリダイレクトされるように、ストリーミングゲームコンテンツの適切な部分（例えば、ビデオ部分、オーディオ部分など）を選択するオプション及びデバイスハンドオーバの一部としてゲームコンテンツの選択された部分をストリーミングするための特定のセカンダリクライアントデバイスを含み得る。
【００３４】
いくつかの実施形態では、一時停止信号を受信したことに応答して、データセンター内のサーバは、ゲームのためのストリーミングビデオフレーム及び／またはストリーミングオーディオフレームのプライマリクライアントデバイスへの送信を一時停止し得る。その結果、ゲームは「中断」状態になっているように見える。この実施形態では、ゲームは引き続きアクティブであり得るが、デバイスハンドオーバが完了するまでユーザインタラクションを受信し得ない。
【００３５】
特定のセカンダリクライアントデバイスでの再開オプションの選択がサーバに転送され、サーバはゲームのゲーム状態（存在する場合）にアクセスする及び／または一時停止した位置からゲームのゲームプレイを再開する。再開されたゲームプレイにより、ゲームのビデオフレーム及び／またはオーディオフレームが特定のセカンダリクライアントデバイスにストリーミングされる。
あるいは、ゲームがアクティブに保たれている間に、ビデオフレーム及び／またはオーディオフレームの送信が一時停止された場合、再開要求により、サーバは、ゲームのストリーミングビデオフレーム及び／またはストリーミングオーディオフレームの特定のセカンダリクライアントデバイスへの送信を再開する。
いくつかの実施形態では、ビデオフレーム及び／またはオーディオフレームは、特定のセカンダリクライアントデバイスから受信したユーザインタラクションに基づいて生成され、ストリーミングされる。ゲームコンテンツの一部がプライマリクライアントデバイスにストリーミングされ、残りの部分がセカンダリクライアントデバイスにストリーミングされる実施形態では、ビデオフレーム及び／またはオーディオフレームは、特定のセカンダリクライアントデバイス、プライマリクライアントデバイスから、またはプライマリ及びセカンダリクライアントデバイスの両方から受信されたユーザインタラクションに基づいて、適切なクライアントデバイス（つまり、プライマリ及びセカンダリクライアントデバイス）に生成され、ストリーミングされる。
【００３６】
リスト内で識別されるセカンダリクライアントデバイスは、ゲームのゲームプレイに必要なデバイス属性を有し、いくつかの実施形態では、ハンドオーバオプションが受信されている間は、ゲームプレイのために利用可能である。本明細書で論じられる様々な実施形態は、ゲームプレイセッション中にゲームをプレイするために切り替えるセカンダリクライアントデバイスのオプションをユーザに提供し、このような切り替えはシームレスでフリクションレスな方法で行われる。オプションで識別されたセカンダリクライアントデバイスは、セカンダリクライアントデバイスからの信号を受信する他のデバイスなどに基づいて、セカンダリクライアントデバイスによって生成された信号に基づいて、クライアントデバイスに実装された複数のデバイス検出プロトコルのいずれか１つを使用して検出され得る。検出されたクライアントデバイスは、バックグラウンドでプロファイルされ、デバイスハンドオーバが正常に行われるように、ゲームのゲームプレイのために適正化される。
【００３７】
セカンダリクライアントデバイスのプロファイルに提供される情報は、ゲームのゲームプレイに必要なデバイス属性だけでなく、１つまたは複数のセカンダリクライアントデバイスで利用できない、またはゲームのゲームプレイに必要なレベルではないデバイス属性も判定するために使用され得る。
このプロファイル情報に基づいて、クラウドゲームシステムは、いくつかの実施形態では、プライマリクライアントデバイスのユーザがハンドオーバオプションを選択したときに、クライアントデバイスの切り替えが高速でフリクションレスな方法で行われるように、１つまたは複数のセカンダリクライアントデバイスのサービス及び／またはデバイス属性をプロビジョニングして、それらをゲームプレイのために準備し得る。いくつかの実施形態では、デバイスプロファイリングは、プライマリクライアントデバイスなどの１つまたは複数のデバイス属性の変更に応じた、ユーザアクション、カレンダーイベント、プライマリクライアントデバイスからの信号（例えば、低電力信号など）、ソーシャルメディアイベントなどのトリガイベントの発生に応答して開始され得る。
【００３８】
セカンダリクライアントデバイスは、プライマリクライアントデバイスと同じネットワークの一部であり得て、セカンダリクライアントデバイスが検出されると、プライマリクライアントデバイスは、検出されたそれぞれのセカンダリクライアントデバイスに、クラウドゲームサイト内のアプリケーションサーバなどのサーバとの接続を開始するための信号を送信することによってプロファイルを取得し、サーバと情報を交換することを促し得る。
他の実施形態では、セカンダリクライアントデバイスが検出されると、プライマリクライアントデバイスは、クラウドゲームシステムのサーバに検出されたそれぞれのセカンダリクライアントデバイスとの接続を開始するための信号を送信することによって、１つまたは複数のセカンダリクライアントデバイスをプロファイルし、セカンダリクライアントデバイスと情報を交換することを促し得る。セカンダリクライアントデバイスとサーバとの間で交換され得る情報は、例えば、セッション情報、サービス品質情報、デバイス能力、プレイしているまたはプレイ可能なゲーム、ビデオコーデック情報、オーディオコーデック情報（利用可能な場合）、スピーカー構成、デバイス可用性、ハードウェア属性、ソフトウェア属性などを含む。
【００３９】
各ゲームは異なるリソース要件を有し得るため、各ゲームのストリーミングセッションを開始するために必要なデバイス属性は異なり得る。その結果、プロファイルで提供された情報は、検出された各セカンダリクライアントデバイスのデバイス能力を評価して、セカンダリクライアントデバイスのそれぞれ１つが、ゲームのストリーミングセッションを開始するために必要とされる十分なデバイス属性を有するかどうかを判定するために使用され得る。例えば、評価の一部として、各セカンダリクライアントデバイスのネットワーク帯域幅は、連続的に、定期的に、または予め定義された時間に監視され得る。そのような監視の結果は、セカンダリクライアントデバイスの現在のデバイス属性を維持するように、それぞれのセカンダリクライアントデバイスのプロファイルを更新するために使用され得る。さらに、それぞれのプライマリ及びセカンダリクライアントデバイスは、ゲームインタラクションを提供するために異なるタイプの入力を有し得る。
例えば、クライアントデバイスＡはゲームパッドを使用でき、クライアントＢはタッチスクリーンを使用でき、一方、クライアントＣは、そのような入力からのユーザインタラクションを受信するように設定されたゲームのゲームインタラクションを提供するためにキーボードを使用し得る。その結果、いくつかの実施形態では、検出されたセカンダリクライアントデバイスのプロファイルに提供された情報は、デバイスのハンドオーバが発生したときに、入力方法に対する調整が行われるように、ゲームの入力を提供するために各クライアントデバイスによって使用される入力のタイプを識別するために使用され得る。
例えば、プライマリクライアントデバイスはタッチスクリーン入力を使用でき、選択されたセカンダリクライアントデバイスはゲームパッドを使用でき、両方の入力方法はゲームのインタラクションを受信するために許容可能である。デバイスハンドオーバが発生すると、プライマリクライアントデバイスから選択されたセカンダリクライアントデバイスへのクライアントデバイスの切り替えにより、ゲームは、例えば、２つのクライアントデバイス（すなわち、プライマリクライアントデバイスと選択されたセカンダリクライアントデバイス）間の入力方法の違いを認識し、ゲームのゲームインタラクションを受信するための入力方法をタッチスクリーン入力からゲームパッド入力に切り替える。いくつかの実施形態では、ゲームは、選択されたセカンダリクライアントデバイスによって使用される入力方法を認識し得ない。そのような実施形態では、クラウドゲームシステムまたは選択されたセカンダリクライアントデバイスのいずれかが、セカンダリクライアントデバイスの表示部に入力エミュレーション（例えば、仮想ゲームパッドまたは仮想キーボード、仮想番号パッド、仮想ゲーム制御などのオンスクリーン仮想入力方法）を提供でき、表示のために選択される入力エミュレーションのタイプはクライアントデバイスのタイプに基づき得る。同様に、各クライアントデバイスは、それ自体のリソース能力及び制限（例えば、画面／表示解像度、アスペクト比、オーディオ能力など）を有し、これらはそれぞれのクライアントデバイスのプロファイル情報に反映される。デバイスプロファイルに提供される情報は、クライアントデバイスを適正化し、ゲームの入力方法を定義し、及び／またはストリーミングビデオフレームを調整するために使用され得る。
【００４０】
セカンダリクライアントデバイスのデバイスプロファイルに基づいて、プライマリクライアントデバイスのユーザは、検出されたセカンダリクライアントデバイスの特定のデバイスへのデバイスハンドオーバを開始することを決定し得る。デバイスハンドオーバを開始する判定は、セカンダリクライアントデバイスが、ユーザにより良いゲームプレイ体験を提供し得る、より高い解像度、より高いフレームレート、より短い待ち時間などのデバイス属性を有するという判定に基づき得る。あるいは、デバイスハンドオーバを開始する判定は、プライマリクライアントデバイスの電力不足、または１つまたは複数のデバイス属性の利用不可などにより、プライマリクライアントデバイスがゲームのゲームプレイをサポートすることができないということに基づき得る。
【００４１】
デバイスハンドオーバの一部として、デバイスハンドオーバオプションは、プライマリクライアントデバイスでのユーザ選択のために、代替、同等、またはより良いゲームプレイ体験を提供するために事前適正化された１つまたは複数のセカンダリクライアントデバイスのリストと共に提供される。ハンドオーバオプションまたはリストからの特定のセカンダリクライアントデバイスのいずれかでのユーザ選択は、デバイスハンドオーバをトリガする。サーバには、リストに含まれている事前適正化されたセカンダリクライアントデバイスが既にあるため、ユーザ選択により、より高速で効率的でフリクションレスでシームレスなデバイスの切り替えができ、その結果、サーバは、選択されたセカンダリクライアントデバイスへのゲームのビデオフレームのストリーミングを継続し得る。いくつかの実施形態では、ビデオフレーム及び／またはオーディオフレームのストリーミングをプライマリクライアントデバイスから選択されたセカンダリクライアントデバイスに切り替えることに加えて、切り替えには、ゲームへの入力を提供するために使用される１つまたは複数のコントローラの切り替えも含まれ得る。多くの場合、ユーザは、ゲームと相互作用するためにプライマリクライアントデバイスに関連付けられた無線コントローラ（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）ベース、または他の無線技術ベース）を使用し得る。そのような実施形態では、デバイスハンドオーバがトリガされると、切り替えは、プライマリクライアントデバイスから選択されたセカンダリクライアントデバイスへの無線コントローラのＢｌｕｅｔｏｏｔｈ（登録商標）接続のハンドオーバも含み得る。デバイスハンドオーバの一部として、プライマリクライアントデバイスは、ゲームへの入力を提供するために使用される無線コントローラの属性をセカンダリクライアントデバイスに通知し得る。プライマリクライアントデバイスは、セカンダリクライアントデバイスに通知することに加えて、無線コントローラを切断し得る。選択されたセカンダリクライアントデバイスは、通知を受信し、次に無線コントローラのデバイス属性を使用して無線コントローラを自動的に検出し、無線コントローラと関連付けをして、その結果、選択されたセカンダリクライアントデバイスは、新たに関連付けられた無線コントローラを使用して入力を提供し得る。代替の実施形態では、同様のデバイス属性を有する無線コントローラは、選択されたセカンダリクライアントデバイスに既に関連付けられ得る。そのような実施形態では、セカンダリクライアントデバイスは、無線コントローラを検出するための検出プロセスを経由し得ないか、または無線コントローラをプライマリクライアントデバイスに関連付ける関連付けプロセスを経由し得ない。代わりに、無線コントローラが、ゲームに入力を提供するのに必要なデバイス属性を有すると判定され、ゲームが、無線コントローラから受信した入力を受信してマッピングし、ゲームのゲーム状態を更新すると、選択されたセカンダリクライアントデバイスに既に関連付けられている無線コントローラは、ゲームへの入力を提供するために使用され得る。
【００４２】
デバイス検出は、いくつかの実施形態では、プライマリクライアントデバイスがアイドル状態にあるときにプライマリクライアントデバイスによって開始され得るか、またはゲームプレイセッション中に、または定期的に、または異なるアプリケーションを実行しているときに開始され得る。セカンダリクライアントデバイスのプロファイリングは、ユーザがゲームプレイのためにデバイスを変更することを決定したとき、デバイス切り替えがデバイス属性として容易に発生し、デバイス設定がクイックストリーム切り替えのために予め確立されるように、バックグラウンドで実行され、セカンダリクライアントデバイスのサービス品質及び他の状態を取得する。本発明の一般的な理解により、特定の実施形態を様々な図面を参照してここで説明する。
【００４３】
図１は、本発明の一実施形態での、ゲームプレイのデバイスハンドオーバのために使用できるセカンダリクライアントデバイスのオプションを識別するために使用されるシステムの簡略ブロック図を示す。システムは、クラウドゲームシステム３００のユーザアカウントを介してデータセンター３１０のアプリケーションサーバなどのサーバ（３２０）に通信可能に接続された複数のクライアントデバイス１００−１〜１００−ｎを含む。サーバ３２０は、インターネットなどのネットワーク２００を介してクライアントデバイス１００によってアクセスされる。
【００４４】
クライアントデバイス１００（すなわち、１００−１〜１００−ｎのうちのいずれか１つ）は、プロセッサ、メモリ、ネットワーク２００に接続するためのネットワーク接続、サーバ側アプリケーションと通信するための適切なＡＰＩ、ゲームアプリケーションなどのサーバ側アプリケーションによって提供されるコンテンツを復号化するための１つまたは複数のデコーダを含む。プロセッサは、ネットワーク接続を通じてネットワークに接続し、アプリケーションプログラミングインターフェイス（ＡＰＩ）を使用してサーバ側アプリケーションと通信するか、またはサーバ側アプリケーションにアクセスすることによって、サーバ側アプリケーションと相互作用し得るクライアント側アプリケーションを実行することができる。ネットワーク接続は、有線または無線接続にすることができる。クライアントデバイス１００は、シンクライアント、汎用コンピュータ、専用コンピュータ、ゲームコンソール、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、モバイルコンピューティングデバイス、ポータブルゲームデバイス、携帯電話、スマートフォン、ヘッドマウントディスプレイ、スマートウェアラブルデバイス、セットトップボックス、ストリーミングメディアインターフェイス／デバイス、スマートテレビまたはネットワーク化されたディスプレイ、またはリモートサーバ上で利用可能なアプリケーションにアクセスするために使用できるその他のコンピューティングデバイスであり得る。クライアントデバイス１００で利用可能なネットワーク接続及び通信プロトコルは、クライアントデバイス１００がリモートサーバと通信して、マルチメディアコンテンツのストリーミングビデオフレームを含むコンテンツを、クラウドゲームシステム３００の一部であるサーバなどのリモートサーバから受信することを可能にする。リモートサーバによってストリーミングされたゲームプレイコンテンツを表すビデオフレームは、ビデオフレームがクライアントデバイスにストリーミングされる前に、リモートサーバでエンコーダを使用して圧縮されている。クライアントデバイス１００は、ストリーミングビデオフレームを解凍し、クライアントデバイス１００のそれぞれの構成要素を使用してコンテンツをレンダリングするためのデコーダを含み得る。
【００４５】
いくつかの実施形態では、クライアントデバイス１００によって実行される処理の量は、入力及び出力処理に関して変化し得る。大まかに言って、ゲームまたはアプリケーションは、データセンター３１０内で利用可能なゲームサーバまたは他のアプリケーションサーバ３２０上で実質的に維持、実行及び圧縮／符号化され、クライアントデバイス１００は、主として、クライアントデバイス１００のディスプレイ上でオーディオ／ビデオデータを受信し、復号化し、処理し、レンダリングを行う。クライアントデバイス１００はさらに、ユーザ入力をゲームサーバまたは他のアプリケーションサーバに返信するように構成される。クライアントデバイス１００は、ビデオデータをレンダリングするためのディスプレイに接続されるスタンドアロンコンピューティングデバイスであり得る。他の実施形態では、ディスプレイをクライアントデバイス１００に統合することができる。一実施形態では、ディスプレイは、ディスプレイデバイスのネットワーク接続を利用するアプリケーションまたは「アプリ」のためのプラットフォームのオペレーティングシステムを提供するネットワークディスプレイデバイスである。そのような実施形態では、クライアントデバイス１００は、ディスプレイデバイスのオペレーティングシステムによって提供されるプラットフォーム上で実行されるアプリケーションによって定義することができる。
【００４６】
ゲームプレイセッション中、クライアントデバイス１００−１〜１００−ｎは、ローカルにある１つまたは複数の他のクライアントデバイスを能動的に探索し得る。ゲームプレイ要求を開始するために使用されるクライアントデバイス１００は、本明細書では「プライマリ」クライアントデバイスと呼ばれ、プライマリクライアントデバイスに対してローカルであり、デバイスハンドオーバのために検出されたクライアントデバイスは、「セカンダリ」クライアントデバイスと呼ばれる。プライマリクライアントデバイス１００の場所に応じて、プライマリクライアントデバイスに対してローカルであると検出されたセカンダリクライアントデバイスは異なり得る。例えば、ユーザのホームネットワーク内のプライマリクライアントデバイス１００に対してローカルであると識別されたセカンダリクライアントデバイスは、オフィス環境などで識別されるセカンダリクライアントデバイスと異なり得る、ユーザフレンドのホームネットワーク内で識別されるセカンダリクライアントデバイスと異なり得る。
【００４７】
このアプリケーションで使用されるサーバは、リモートサーバ、仮想コンピュータ、クラウドゲームサーバ、クラウドアプリケーションサーバ、リモートアプリケーションサーバ、デジタルメディアサーバ、ゲーム開発者／ゲームスポンサーの店舗を提供するために使用されるサーバ、ウェブサーバ、端末サーバ、コンソールサーバ、またはクラウドゲーム中にユーザがアクセスし相互作用することができる１つまたは複数のゲームまたはアプリケーションをホストすること（ゲームまたはアプリケーションを実行するための処理リソースの提供または割り当てを含むこと）ができるデータセンターで利用可能なサーバコンピューティングデバイスの他のタイプまたはフォームであり得る。サーバは、ビデオフレーム内のデータを圧縮し、特定のタイプのプロトコルに従うアプリケーションプログラミングインターフェイス（ＡＰＩ）呼び出しを使用して、データストリーム内の圧縮されたビデオフレームをクライアントデバイス１００に転送するエンコーダを含み得る。
【００４８】
例えば、データセンター３１０内のクラウドゲームサーバなどのサーバ３２０は、ユーザによるゲームプレイのために選択されたビデオゲームを実行し、ビデオゲームの状態を刻々と定義し、ストリーミングビデオフレーム（画像、ビデオ及びオーディオデータを含む）をゲームのゲームプレイ要求が開始された場所からプライマリクライアントデバイス１００に送信する。プライマリクライアントデバイス１００のユーザ入力モジュール１０７は、次に、ビデオゲームをプレイするユーザからのユーザ入力を処理し、入力データをサーバ３２０に送信するように構成される。サーバ３２０は、入力データを処理してビデオゲームのゲーム状態に影響を与えるように構成される。
【００４９】
クラウドゲームシステムは、複数のデータセンター３１０−１〜３１０−ｍを含む。データセンター３１０は、一実施形態では、複数のサーバ３２０（例えば、ゲームサーバ）と、ゲームコード、アプリケーションコード、ユーザ関連データ及びアプリケーション関連データストアを格納し、それらを複数のユーザからの様々な要求の処理を可能にするために容易に利用可能にすることができるストレージシステムとを含み得る。データセンターはまた、クライアントデバイス１００と複数のサーバ３２０との間の通信接続を確立するために、ルータ、スイッチなどの電気通信機器を含み得る。それぞれの複数のサーバ３２０は、クライアントデバイス１００で対応するクライアント側ＡＰＩと通信するためのサーバ側ＡＰＩ（個別または類似のいずれか）またはサードパーティのソーシャルメディアプロバイダに関連するサーバ側ＡＰＩを備え得る。いくつかの実施形態では、データセンター３１０内のサーバ３２０は、ゲームアプリケーションを含む様々なタイプのアプリケーションを実行し、レンダリングのためにアプリケーションコンテンツ（すなわち、ゲームアプリケーションによって生成されたビデオフレーム）を対応するクライアントデバイス１００にストリーミングするように構成され得る。サーバ３２０は、任意の数の圧縮技術を使用してサーバ３２０によって生成または提供される任意のデータに対する圧縮の動作を実行し、通信及び／または送信プロトコルのいずれか１つを使用して圧縮データをクライアントデバイス１００に送信するように構成され得る。サーバは、特定の機能、ゲームまたはアプリケーションを実施または実行するために通常使用される、端末サーバ、コンソールサーバ、仮想サーバなどを含み得る。サーバによって実行される機能、ゲームまたはアプリケーションの例は、いくつか例を挙げると、データベース管理、ファイル管理、メールサービス、プリントサービス、ウェブサービス、ゲーム管理、アプリケーション管理、メディア管理、カタログサービス、通信管理、コンピューティングサービス、及びプロキシ管理などがあり得る。いくつかの実施形態では、コンソールサーバなどのサーバ３２０は、ゲームを実行し、レンダリングのためにストリーミングビデオフレームを１つまたは複数のクライアントデバイス１００に提供することによって、ゲームコンソールをエミュレートし得る。いくつかの実施形態では、複数のサーバ及び／またはストレージデバイスがラックマウントサーバまたはストレージデバイスとして提供され得て、各データセンターはサーバ及び／またはストレージラックの列を含む。各サーバは、複数のアプリケーションの実行を可能にし得る、及び／または広範囲のサービスの提供を可能にし得る。
【００５０】
サーバ３２０はまた、クライアントデバイスをプロファイルするために使用され得るデバイスプロファイラを含み得る。デバイスプロファイラは、１つまたは複数のクライアントデバイスとの通信接続を確立して、クライアントデバイスと情報を交換するように構成され得る。交換される情報は、デバイス属性を識別し、各クライアントデバイスのプロファイルを生成するために使用される。
【００５１】
クラウドゲームシステム３００は、１つまたは複数のビデオゲームのインスタンスが、ネットワーク２００を介してプレイヤーによってアクセスすることができる、１つまたは複数のデータセンター内の１つまたは複数のサーバ３２０（例えば、アプリケーションサーバまたはゲームサーバ）によって実行できるようにすることによって、異なる地理的位置にあるプレイヤーからのシングルプレイヤーまたはマルチプレイヤーのクラウドベースのゲームを容易にすることを理解されたい。このようにして、ビデオゲームの実行は、単一のプレイヤーのハードウェアまたはネットワークの伝導度に依存しないが、その所与のプレイヤーのユーザ体験に影響を与える。
【００５２】
本明細書に記載されたクラウドゲームアーキテクチャを使用して実行される動作は、複数のサーバ及び／または実行プラットフォームを必要とする技術的動作を形成し、データベースへの迅速なアクセス及び遠隔に位置するユーザのクライアントデバイス１００へのゲームプレイコンテンツなどのコンテンツの提示を可能にする。クラウドゲームはまた、任意の数の圧縮技術を利用してクラウドゲームサーバによって実行される圧縮の動作を含むことができる。圧縮技術は、標準的なエンコーダを使用でき、クライアントデバイス１００上の標準デコーダがデータにアクセスして復号化できるようにすることができる。いくつかの実施形態では、専用のエンコーダ及びデコーダはまた、専用の符号化及び復号化を可能にするために、それぞれサーバ及びクライアントデバイスに実装され得る。復号化されたデータは、ビデオゲームのゲームプレイを可能にするために、画像、ビデオ、及びオーディオデータを識別するためにクライアントデバイスでさらに処理され得て、次にクライアントデバイス１００上の適切なデバイス構成要素を使用して提示される。
【００５３】
ビデオゲーム及び配信の管理は、いくつかのデータセンター、方向サーバ、サービス品質テスタまたはエンジン、低遅延データセンターへの指示及びリダイレクトを含むことができる。これらの動作及びタスクは、ゲームの遠隔実行及びストリーミングゲームまたはアプリケーションデータのクライアントデバイス１００への配信のために、ストリーミング及び低遅延用に設計された専用サーバコンピュータを利用することも理解されたい。
【００５４】
クラウドゲームシステム３００にアクセスするための要求がプライマリクライアントデバイス１００から受信されると、クラウドゲームシステム３００などのアプリケーションホスティングシステム上のサーバは、ユーザ関連情報を取得するためにユーザアカウントデータ処理モジュール３０２と相互作用する。ユーザアカウントデータ処理モジュール３０２は、ユーザプロファイル及び他のユーザアカウント情報が格納されている、ユーザアカウントデータベース３１２からユーザアカウント情報を照会及び受信する。ユーザプロファイル及びユーザアカウント情報は、要求が開始されたプライマリクライアントデバイス１００に関連付けられたユーザを識別し、ユーザの要求を認証するために使用される。ユーザ認証時に、クライアント要求は、クラウドゲームシステム３００に関連付けられたサーバによって処理される。一実施形態では、クラウドゲームシステム３００のサーバは、購入されたゲーム／アプリケーション、ユーザアカウントのユーザが閲覧、プレイすることが許可されたゲーム／アプリケーション、無料で利用可能なすべてのゲーム及び／またはアプリケーションを含む、ユーザアカウントに対して利用可能なすべてのゲーム及び／またはアプリケーションを判定し得る。ゲームタイトルセレクタモジュール３０４は、ユーザアカウント用のゲームタイトルを取得し、プライマリクライアントデバイス１００のディスプレイのユーザインターフェイス上に提示するためのリストにゲームタイトルを戻す。一実施形態では、クライアントデバイスにレンダリングされたゲームタイトルのうちのいずれか１つのユーザ選択が検出され、プライマリクライアントデバイス１００からクラウドゲームシステム３００のサーバに信号が送信され、ゲームタイトルのユーザ選択がサーバに通知される。
【００５５】
クラウドゲームシステム３００は、ゲームアプリケーションを含む複数のアプリケーションをホストする。ゲームタイトルのユーザ選択を受信したことに応答して、クラウドゲームシステム３００のサーバは、データセンター３１０を識別し、選択されたゲームタイトルのゲームプレイの要求を処理し、要求を処理するためにデータセンター３１０に要求を転送し得る。データセンター３１０は、例えば、プライマリクライアントデバイス１００の地理的位置に基づいて選択され得る。地理的位置に基づいて要求を処理するデータセンター３１０を選択することは、それ自体の欠点を有し得る。例えば、地理的位置のデータセンター３１０では、そのリソースに対する高い需要のためにネットワーク輻輳が起こり得る。あるいは、地理的位置のデータセンター３１０は、プライマリクライアントデバイスを提供するネットワークプロバイダと、データセンターの動作に関連するネットワークプロバイダとの間にピアツーピア契約がないために、特定のプライマリクライアントデバイスからのゲームプレイ要求を処理することができなくなり得る。前述の欠点は単なる例であり、他の欠点も存在し得る。そのような欠点を克服するために、別の実施例では、データセンター３１０は、帯域幅／遅延テストなどのネットワークパフォーマンステストの結果に基づいて選択し得る。例えば、プライマリクライアントデバイスがゲームプレイのためのゲームタイトル選択を開始するために使用される場合、クラウドゲームシステム３００のサーバは、プライマリクライアントデバイスに関連する地理的位置を判定し、要求を処理するために１つまたは複数のデータセンター３１０を識別し得る。データセンターを割り当てる場合、クラウドゲームシステム３００は、プライマリクライアントデバイスの地理的位置にあるデータセンター３１０内のサーバが、要求を処理するのに十分なリソースを有し得ないことを認識し得る。その結果、クラウドゲームシステム３００は、要求を処理するために、プライマリクライアントデバイスが基づいている地理的位置の外にあるデータセンター３１０を識別し得る。地理的位置外のデータセンターは、例えば、帯域幅テストに基づいて、プライマリクライアントデバイスに関連する地理的位置内の他のデータセンター上で識別し得る。
【００５６】
前述のように、データセンター３１０は、複数のサーバ３２０を含み、各サーバ３２０は、データセンター３１０で利用可能な１つまたは複数のゲームタイトルを実行し得るか、または実行するために設定し得る。各データセンター３１０内のゲームタイトルデータストア３１４は、データセンター３１０で利用可能なゲームタイトルのリスト及びデータセンター３１０内の１つまたは複数のサーバ３２０で、ゲームタイトルによって識別されるゲームを実行するために必要なゲームコードを提供する。
【００５７】
ゲームのゲームプレイ要求を処理するために識別されるデータセンター３１０内のサーバ３２０は、ゲームのインスタンスを実行し、ゲームのビデオフレームを生成し、レンダリングのためにビデオフレームをプライマリクライアントデバイス１００にストリーミングすることによってゲームプレイセッションを確立する。サーバは、プライマリクライアントデバイス１００で提供されるユーザインタラクションを受信し、それを使用してゲームの結果に影響を与え、ゲーム状態を更新する。クライアントデバイスは、ローカルにある他のクライアントデバイスを識別するために使用され得る。識別された他のクライアントデバイスは、デバイスハンドオーバのためのオプションとして提供される。
【００５８】
図２は、一実施形態では、ゲームプレイ中のデバイスハンドオーバのためのセカンダリクライアントデバイスのオプションを識別するために使用されるクラウドゲームシステム３００のデータセンター３１０内のサーバ３２０上で実行するサーバ側アプリケーション３２１の様々なモジュールを示す。サーバ側アプリケーション３２１は、図２に示す一実施形態では、ハンドオーバアプリケーションモジュール３５５のモジュールと統合されたゲームアプリケーション３２１−ａのモジュールを含み得る。ゲームアプリケーション３２１−ａのモジュールは、いくつかの実施形態では、ゲームを実行し、ゲームプレイ中のゲームのストリーミングビデオフレームを、プライマリクライアントデバイス１００などのクライアントデバイスに提供するために使用される。そのような実施形態では、ビデオフレームは、プライマリクライアントデバイスに同じビデオフレームを送信する前に符号化される。いくつかの実施形態では、ゲームアプリケーションの一部であるアプリケーションプログラミングインターフェイス（ＡＰＩ）は、ビデオフレームを送信するために使用され得る。ＡＰＩは、ゲームアプリケーションによって生成されたビデオフレームをキャプチャし、ビデオフレームを符号化するために利用可能な符号化技術を使用し、符号化されたビデオフレームをプライマリクライアントデバイス１００などのクライアントデバイスに送信するためのロジックを含み得る。ビデオフレームを処理するために本明細書で論じられる様々な実施形態は、オーディオフレームの処理にも拡張し得ることに留意されたい。
【００５９】
いくつかの実施形態では、ビデオフレームの符号化は、ゲームによって提供される「関心領域」に基づき得る。通常、ゲームデータのフレームが符号化される場合、エンコーダは「ビット予算」に従う必要がある。ビット予算は、最適なデータコンテンツを提供するために、フレームを符号化するためのビットの使用方法を定義する。ビット予算に依存して、エンコーダはフレームの特定の領域（例えば、高密度コンテンツを有するフレームの領域）に多くのビットを割り当てようとし、フレームの他の領域（例えば、低密度コンテンツを有する領域）には少ないビットを割り当てる。エンコーダがビデオフレームを最適に符号化するのを支援するために、ゲームは関心領域に関連する情報を提供し、その結果、エンコーダはより詳細な内容が必要な領域（すなわち、テキストを含む領域、芝生、葉、森林などの作り込まれたゲームシーンを含む領域、激しい行動を含む領域など）及びあまり詳細な内容が必要ではない領域（すなわち、あまりフレームが目立たない領域）を識別できる。ゲーム及びビット予算からのこの詳細レベルを備えるエンコーダは、視聴のための最適なフレームコンテンツを提供するように、ビデオフレームのビットを割り当てる。
【００６０】
代替の実施形態では、ゲームプレイ中に生成されたゲームのストリーミングビデオフレームは、サーバ３２０のオペレーティングシステムまたはゲームアプリケーション３２１−ａ及び／またはオペレーティングシステムとインターフェイスするグラフィック処理ユニット（ＧＰＵ）ドライバに転送される。ＧＰＵは、ビデオフレームを処理し、サーバ３２０のオペレーティングシステムに提供し得る。サーバ３２０のオペレーティングシステムは、処理されたビデオフレームを受信し、バックグラウンドで、プライマリクライアントデバイス１００に送信する前に何らかの形式の符号化を実行し得る。いくつかの実施形態では、クラウドゲームシステム３００内のサーバ３２０のオペレーティングシステムは、クラウドゲームシステム３００内で利用可能なエンコーダを使用して、レンダリングのためにプライマリクライアントデバイス１００に同じビデオフレームを送信する前にビデオフレームの符号化を実行し得る。前述の実施形態と同様に、エンコーダは、ゲームから関心領域に関連する詳細情報を受信し、詳細情報に従ってビデオフレームを構成するデータのビットを割り当てることによってビデオフレームを符号化し得る。ビデオフレームの処理に関して本明細書で論じられる実施形態は、オーディオフレームにも拡張し得る。オペレーティングシステムは、ネットワーク状態を監視し、それに応じてビデオフレーム及び／またはオーディオフレームをクライアントデバイスに転送する前に、ビデオフレーム及び／またはオーディオフレームのフレームレート、ビットレートなどを調整し得る。
【００６１】
代替の実施形態では、クラウドゲームシステム３００の外にある外部アプリケーションは、クラウドゲームシステム３００のオペレーティングシステムによって送信されているストリーミングビデオフレームを表す高精細度マルチメディアインターフェイス（ＨＤＭＩ（登録商標））ビデオ信号をキャプチャでき、ビデオ信号を符号化するために外部エンコーダを使用し得る。次に、外部アプリケーションは、符号化されたビデオ信号のクライアントデバイスへの送信を処理する。送信の一部として、外部アプリケーションは、ネットワーク状態を監視し、プライマリクライアントデバイス１００にストリーミングされるビデオフレームの品質（すなわち、フレームレート、ビットレートなど）を調整し得る。
【００６２】
いくつかの実施形態では、ネットワーク状態に基づいて、オペレーティングシステムまたは外部アプリケーションが自動的にデバイスハンドオーバをトリガし得る。トリガの一部として、オペレーティングシステムまたは外部アプリケーションは、プライマリクライアントデバイスの近傍にある他のセカンダリクライアントデバイスを検出し、サーバによってプロファイルを取得するように検出されたセカンダリクライアントデバイスに信号を送り、デバイスハンドオーバ中に使用するために、セカンダリクライアントデバイス情報をハンドオーバアプリケーションモジュール３５５に転送し得る。
【００６３】
ハンドオーバアプリケーションモジュール３５５のモジュールは、プライマリクライアントデバイスに対してローカルであるセカンダリクライアントデバイスを識別するために使用されるか、またはオペレーティングシステムまたは外部アプリケーションによって提供されたセカンダリクライアントデバイス情報を使用し、セカンダリクライアントデバイスをプロファイルし、それらをデバイスハンドオーバのためのオプションとして提供する。他の実施形態では、サーバ側アプリケーション３２１は、ハンドオーバアプリケーションモジュール３５５とは別のゲームアプリケーション３２１−ａを含み得る。そのような実施形態では、ゲームアプリケーション３２１−ａ及びハンドオーバアプリケーションモジュール３５５が、同一のサーバ上で別々に実行され得るか、またはゲームアプリケーション３２１−ａが、第１のサーバ上で実行され得て、ハンドオーバアプリケーションモジュール３５５が、データセンター内の第２のサーバ上で実行され得て、第１のサーバ及び第２のサーバが、ユーザ選択、ゲーム状態、一時停止／再開要求などのデータを交換するために互いに通信接続している。いくつかの実施形態では、ストリーミングビデオフレーム及び／またはオーディオフレームを生成しているゲームアプリケーション３２１−ａは、プライマリクライアントデバイスへのネットワーク接続を監視し、この情報をハンドオーバアプリケーションモジュール３５５と共有する機能を有し得る。あるいは、ネットワーク接続品質情報は、サーバのオペレーティングシステムまたは外部アプリケーションによってハンドオーバアプリケーションモジュール３５５に提供され得る。
【００６４】
ハンドオーバアプリケーションモジュール３５５は、プライマリクライアントデバイスのネットワーク接続情報及びセカンダリクライアントデバイスのために生成されたプロファイルを使用して、プライマリクライアントデバイスに対してローカルである１つまたは複数のセカンダリクライアントデバイスが、プライマリクライアントデバイスで利用可能なデバイスよりも良好なネットワーク接続品質を有するかどうかを判定し得る。ハンドオーバアプリケーションモジュール３５５が、１つまたは複数のセカンダリクライアントデバイスを識別すると、ハンドオーバアプリケーションモジュール３５５は、ゲームプレイ体験を改善するために代替のセカンダリクライアントデバイスに切り替えるためのオプションで情報メッセージを生成し得る。代替セカンダリクライアントデバイスのリストと共に情報メッセージを、デバイスハンドオーバ中に、ユーザ選択のためにクライアント側でレンダリングするために、プライマリクライアントデバイスに転送し得る。いくつかの実施形態では、情報メッセージは、プライマリクライアントデバイスの表示部にレンダリングされているゲームシーンの上にレンダリングするためのオーバーレイとして提供され得る。あるいは、情報メッセージは、ゲームアプリケーション３２１−ａによって、またはサーバ側プロセスによって、またはサーバ側ゲームコンソールのユーザインターフェイスなどによって、サーバ側にレンダリングされ得る。いくつかの実施形態では、サーバ側ゲームコンソールのユーザインターフェイスは非表示であるが、新しい電子メールを受信する、新しいメッセージを受信する、オンラインになっているユーザまたはユーザの友人を検出するなどのトリガアクションに応答して通知をレンダリングし、トリガアクションは、情報メッセージを受信することを含むようにも拡張され得る。
【００６５】
様々なモジュールの機能または役割は、図２に示された統合サーバ側アプリケーションモデルを参照して説明しているが、上述した他のサーバ側アプリケーションモデルに拡張することができる。前述のように、サーバ側アプリケーション３２１は、ハンドオーバアプリケーションモジュール３５５のモジュールと統合されたゲームアプリケーション３２１−ａのモジュールを含む。ゲームアプリケーション３２１−ａの複数のモジュールは、サーバ３２０がプライマリクライアントデバイス１００のデバイス識別子を識別し、プライマリクライアントデバイス１００によって要求されたゲームのインスタンスを識別して実行し、レンダリングのためにプライマリクライアントデバイスに転送するためのストリーミングビデオフレームを提供することを可能にする。ハンドオーバアプリケーションモジュール３５５の複数のモジュールは、サーバが１つまたは複数のセカンダリクライアントデバイスを検出し、適正化し、デバイスハンドオーバのためのオプションとして適正化されたセカンダリクライアントデバイスのリストを提供することを可能にする。
【００６６】
ゲーム関連データをクライアントデバイス１００に提供するために使用されるサーバ側アプリケーション３２１の一部であるゲームアプリケーション３２１内のモジュールとしては、いくつか例を挙げると、プライマリクライアントデバイス識別子３２２、ゲーム実行エンジン３２４、及びエンコーダ３２８などがある。ハンドオーバアプリケーションモジュール３５５内のモジュールは、デバイスハンドオーバを実現するためのモジュール及び１つまたは複数のセカンダリクライアントデバイスをプロファイリングするためのモジュールを含む。デバイスハンドオーバを実行するためのモジュールには、いくつか例を挙げると、ハンドオーバマネージャ３３０、再開マネージャ３３２、及び一時停止マネージャ３３４などがある。１つまたは複数のセカンダリクライアントデバイスをプロファイリングするためのモジュールは、クライアントデバイスプロファイラ３４０を含む。
【００６７】
ゲームプレイのための特定のゲームタイトルのユーザ選択に応答して、クラウドゲームシステム３００は、プライマリクライアントデバイスの地理的位置またはその近傍にあるデータセンター３１０を識別し、ゲームプレイ要求を処理するように構成される。クラウドゲームシステム３００は、識別されたデータセンターのサーバにゲームプレイ要求を転送し、サーバは識別されたデータセンター内のゲームタイトルデータストア３１４からゲームタイトルを識別する。
【００６８】
要求の処理の一部として、サーバ３２０は、プライマリクライアントデバイス識別子３２２を使用してゲームプレイ要求を開始したクライアントデバイス１００を識別し、クライアントデバイス１００をプライマリクライアントデバイス１００として指定する。プライマリクライアントデバイス１００の識別情報は、ストリーミングコンテンツを転送するために使用される。次に、サーバ３２０は、ゲーム実行（例えば、ストレージ、プロセッサなど）に必要なリソースを提供すること、及びゲームアプリケーション３２１−ａのゲーム実行エンジン３２４にゲームのゲームコードを取得させ、サーバ３２０上のゲームのためのゲームコードを実行することによってゲームをインスタンス化するように指示することによってゲームプレイセッションを確立する。ゲームのインスタンス化の一部として、ゲーム実行エンジン３２４は、ゲームのためのビデオフレーム３２６を生成する。ビデオフレーム３２６は、エンコーダ３２８を使用して、プライマリクライアントデバイス１００のために定義された通信プロトコルに従って圧縮される。符号化されたゲームデータは、レンダリングのためにプライマリクライアントデバイス１００にストリーミングされる。いくつかの実施形態では、エンコーダ３２８は、ゲームアプリケーション３２１−ａの一部であり得る。ゲームアプリケーション３２１−ａのアプリケーションプログラミングインターフェイス（ＡＰＩ）は、符号化されたビデオフレームをプライマリクライアントデバイス１００にストリーミングするために使用される。いくつかの実施形態では、ゲームアプリケーション３２１−ａの一部であるＡＰＩは、ビデオフレームを符号化し、符号化されたビデオフレームをプライマリクライアントデバイスに転送するための符号化ロジックを含み得る。別の実施形態では、ゲーム実行エンジン３２４で生成されたビデオフレームは、サーバ３２０のオペレーティングシステムによってキャプチャされ処理される。前述のように、いくつかの例では、オペレーティングシステムは、符号化されたビデオフレームがプライマリクライアントデバイス１００にストリーミングされる前に、ビデオフレームを符号化し、ネットワーク状態を監視し、ビデオフレームの品質を調整し得る。あるいは、オペレーティングシステムは、ビデオフレームを処理し、ＨＤＭＩ（登録商標）ビデオ信号と同じ信号を転送し得る。クラウドゲームシステムの外にある外部アプリケーションは、ビデオフレームを、外部アプリケーション内で利用可能な１つまたは複数のＡＰＩを介してプライマリクライアントデバイス１００に送信する前に、ＨＤＭＩ（登録商標）ビデオ信号をキャプチャし、外部エンコーダを使用してＨＤＭＩ（登録商標）ビデオ信号でキャプチャされたビデオフレームを符号化し、ネットワーク状態を監視し、ビデオフレーム内の画像の解像度及び／または送信レートを調整し得る。ネットワーク状態をキャプチャし、監視し、ビデオフレームを符号化し、送信するために使用されるプロセスは、オーディオデータにも同様に拡張され得ることに留意されたい。プライマリクライアントデバイス１００のユーザインタラクションは、サーバによって受信され、ゲーム実行エンジン３２４でゲーム結果を調整するために使用される。
【００６９】
ゲームプレイセッション中、プライマリクライアントデバイス１００は、プライマリクライアントデバイス１００に対してローカルであると識別された他のクライアントデバイス（本明細書ではセカンダリクライアントデバイスとも呼ぶ）を能動的に探索し得る。一実施形態では、セカンダリクライアントデバイスを検出すると、プライマリクライアントデバイス１００は、セカンダリクライアントデバイスとのネットワーク接続を確立し、セカンダリクライアントデバイスに信号を送信してサーバ３２０と通信し、プロファイルを取得し得る。サーバ３２０では、ファイアウォールなどのセキュリティデバイスが存在するため、サーバ３２０ではなく、セカンダリクライアントデバイスがネットワーク接続を確立することの方が有利であり得る。セカンダリクライアントデバイスを通じてネットワーク接続を確立することは、セカンダリクライアントデバイス上で利用可能な１つまたは複数のバックグラウンドエージェントを通じて可能になり得る。例えば、通常、セカンダリクライアントデバイスは、常にソーシャルメディアサーバ、電子メールサーバなどに接続され、ソーシャルメディア通知または電子メール通知などを受信する。プライマリクライアントデバイスは、このネットワーク接続を介してセカンダリクライアントデバイスにアクセスし、セカンダリクライアントデバイスに信号を送信し、それ自体をプロファイルし得る。信号は、プロファイル要求１０５を開始するために、セカンダリクライアントデバイスが適切なサーバとの通信リンクを識別し確立することを可能にするために、サーバへのリンク、サーバのＩＰアドレスなどを含み得る。代替の実施形態では、セカンダリクライアントデバイスを検出すると、プライマリクライアントデバイス１００は、セカンダリクライアントデバイスとの通信リンクを確立し、プライマリクライアントデバイスによって検出されたセカンダリクライアントデバイスのプロファイルを生成するようにサーバに要求する、プロファイル要求１０５を有する信号をサーバ３２０に送信し得る。この実施形態では、プライマリクライアントデバイス１００からの信号は、セカンダリクライアントデバイスのデバイス識別子を含み得る。
【００７０】
サーバ３２０は、プライマリまたはセカンダリクライアントデバイスからの信号に応答して、セカンダリクライアントデバイスとの通信接続を確立し得る。通信接続は、サーバ側アプリケーション３２１のクライアントデバイスプロファイラ３４０が、セカンダリクライアントデバイスからのネットワーク帯域幅情報、サービス品質情報、メモリ、プロセッサ速度などを含むデバイス能力、デバイス可用性、ゲーム／アプリケーション可用性などの情報を要求及び受信することを可能にする。交換される情報は、セカンダリクライアントデバイスのプロファイルを生成するために使用される。プロファイルは、サーバと交換した情報からセカンダリクライアントデバイスのデバイス属性を識別する。追加のセカンダリクライアントデバイスが、プライマリクライアントデバイスによって検出されると、追加のセカンダリクライアントデバイスも、プロファイル要求に応答して、クライアントデバイスプロファイラ３４０によってプロファイルされる。異なるセカンダリクライアントデバイスのプロファイル情報は、クライアントデバイスプロファイラ３４０によって使用され、デバイスハンドオーバのために使用できるセカンダリクライアントデバイス３４２のリストを生成する。
【００７１】
代替の実施形態では、プライマリクライアントデバイスがセカンダリクライアントデバイスを能動的に探索する代わりに、サーバの異なる構成要素が、クラウドゲームシステム上で利用可能なゲームのゲームプレイセッションに能動的に関与するプライマリクライアントデバイスに対してローカルであるセカンダリクライアントデバイスを能動的に探索し得る。例えば、ゲームアプリケーション３２１−ａまたはゲームアプリケーション３２１−ａ内のＡＰＩ、ビデオフレームを処理するゲームサーバ内のＡＰＩ、またはビデオフレームを処理するクラウドゲームシステム内の外部アプリケーションは、デバイスハンドオーバのためにセカンダリクライアントデバイスを検出することに能動的に関与し得る。そのような実施形態では、サーバは、プライマリクライアントデバイスによって生成された信号を使用して、またはユーザがプライマリクライアントデバイスを使用して（ゲームプレイセッションの前または最中に）相互作用するソーシャルメディアポストから、またはプライマリクライアントデバイスに組み込まれたツールから、またはプライマリクライアントデバイスに実装されたアプリケーションなどから取得された情報に基づいて、プライマリクライアントデバイスの地理的位置を判定し得る。プライマリクライアントデバイスの地理的位置を使用して、サーバは、例えば、様々なクライアントデバイスに実装された１つまたは複数のデバイス検出プロトコルを使用してプライマリクライアントデバイスに対してローカルであると識別された１つまたは複数のセカンダリクライアントデバイスを検出しようとし得る。いくつかの実施形態では、セカンダリクライアントデバイスは、クラウドゲームシステムに登録され、クラウドゲームシステムと能動的に相互作用しているか、または休止状態になっている。他の実施形態では、セカンダリクライアントデバイスは、他のコンテンツプロバイダシステムと能動的に相互作用してもよいが、クラウドゲームシステム上でクラウドゲーム用に設定してもよい。
【００７２】
セカンダリクライアントデバイスが識別されると、クライアントデバイスプロファイラ３４０は、プライマリクライアントデバイス及びセカンダリクライアントデバイスのプロファイルを生成でき、そのようなプロファイリングは、セカンダリクライアントデバイスがサーバによって検出されたときに、またはトリガイベント（例えば、低バッテリ電力信号、遅延増加、カレンダーイベントなど）に応答して自動的に行われ得る。プライマリ及びセカンダリクライアントデバイスのプロファイルは、クライアントデバイスプロファイラ３４０によって使用され、セカンダリクライアントデバイスのいずれか１つまたは複数が、ユーザに対して現在プレイされているゲームのゲームプレイ体験を向上させることができるデバイス属性を有するかどうかを判定し得る。生成されたデバイスプロファイルから、１つまたは複数のセカンダリクライアントデバイスが、プライマリクライアントデバイスによって提供されているゲームプレイ体験よりも良いゲームプレイ体験（解像度の向上、フレームレートの改善、より短い待ち時間など）を提供することができるデバイス属性を含むと判定された場合、クライアントデバイスプロファイラ３４０は、セカンダリクライアントデバイスの選択されたデバイスを識別し、セカンダリクライアントデバイスのリストを生成する。
【００７３】
セカンダリクライアントデバイス３４２のリストは、ハンドオーバマネージャ３３０に転送される。ハンドオーバマネージャ３３０は、ゲーム実行エンジン３２４に照会して、ゲームのデバイス属性要求を判定するように構成される。各ゲームは、それ自体のデバイス属性要件を有し得る。例えば、グラフィック重視ゲームは、より広いネットワーク帯域幅を必要とする場合があり、計算重視ゲームは、より高速のプロセッサを必要とし得る。その結果、デバイス属性の要件はゲームに固有であり得て、セカンダリクライアントデバイスは、ゲームのデバイス属性要件に基づいて識別される。ハンドオーバマネージャ３３０は、ゲームのデバイス属性要件を使用して、リスト３４２に提供されたセカンダリクライアントデバイスを適正化する。さらに、いくつかの実施形態では、ハンドオーバマネージャ３３０は、セカンダリクライアントデバイスをゲームのゲームプレイのために適正化するために、セカンダリクライアントデバイスにプロビジョニングする必要がある１つまたは複数のデバイス属性またはサービスを識別し得る。次に、ハンドオーバマネージャ３３０は、セカンダリクライアントデバイスをゲームプレイに適正化させるために、必要なデバイス属性またはサービスをプロビジョニングし得る。リスト３４２は、ゲームのゲームプレイのために適正化されているセカンダリクライアントデバイスのみを含むように、ハンドオーバマネージャ３３０によって絞り込まれる。絞り込まれたリストで識別されたセカンダリクライアントデバイスは、クライアントデバイスプロファイラ３４０によって提供されるセカンダリクライアントデバイスのサブセットであり得る。
【００７４】
適正化されたセカンダリクライアントデバイスのサブセットは、クライアントデバイスプロファイラ３４０によって提供されるリスト３４２からの１つのセカンダリクライアントデバイス、リストからのいくつかのセカンダリクライアントデバイス、またはリスト内のすべてのセカンダリクライアントデバイスを含み得ることに留意されたい。ハンドオーバマネージャ３３０は、丸「ａ」によって表される方向矢印によって示されるように、ユーザ選択のためのハンドオーバオプションを使用してプライマリクライアントデバイス１００に、適正化されたセカンダリクライアントデバイスのこの絞り込まれたリストを転送する。
【００７５】
適正化されたセカンダリクライアントデバイスのリストを有するハンドオーバオプションは、プライマリクライアントデバイスのディスプレイ上に表示される。一実施形態では、適正化されたセカンダリクライアントデバイスのリストは、ゲームのゲームシーン上のクライアント側のオーバーレイスタイルメニューとしてレンダリングされ得て、オプションは、適正化されたセカンダリクライアントデバイスのいずれか１つを選択するために、プライマリクライアントデバイスに提供され得る。別の実施形態では、適正化されたセカンダリクライアントデバイスのリストをサーバ側でレンダリングし得る。そのような実施形態では、適正化されたセカンダリクライアントデバイスのリストは、レンダリングのためにクライアントデバイスに転送されるビデオストリームの一部であり得る。ハンドオーバオプション及び／または適正化されたセカンダリクライアントデバイスのユーザ選択は、丸「ｂ」によって表される方向矢印によって示されるように、ネットワーク２００を介してハンドオーバマネージャ３３０に渡される。一実施形態では、プライマリクライアントデバイスからユーザ選択を受信することに応答して、次に、ハンドオーバマネージャ３３０は、丸「ｃ」によって表される方向矢印によって示されるように、ゲームのゲームプレイを一時停止するために、一時停止マネージャ３３４にコマンドまたは信号を指示または送信し得る。一時停止コマンドまたは命令は、プライマリクライアントデバイスの識別子及びユーザ選択で識別されたセカンダリクライアントデバイスの識別子を含む。一時停止コマンドに応答して、一時停止マネージャ３３４は、ゲーム実行エンジン３２４にゲームプレイを一時停止するように信号を送る。代替の実施形態では、ハンドオーバマネージャ３３０は、ゲームプレイを一時停止するために、ゲーム実行エンジン３２４に直接信号を送信し得る。どのモジュールが一時停止信号を提供しているかに関係なく、一実施形態では、ゲーム実行エンジン３２４は、一時停止信号に応答して、状態データマネージャ３３８と相互作用し、一時停止要求が受信された時点のゲームのゲーム状態を判定する。状態データマネージャ３３８は、ゲームのゲームプレイを分析して、一時停止信号が受信された時点でのゲームのゲーム状態を判定し、ゲームプレイが再開され得る場所から再開位置を特定するように構成される。ゲームのゲーム状態及び再開位置は、ゲームプレイセッションの間、状態データマネージャ３３８によって維持され得る。代替の実施形態では、状態データマネージャ３３８は、一時停止要求が受信された時点までのゲームプレイ中のゲーム内の行動の進捗を含むゲームの保存データを書き込み得る。この保存データは、ゲームプレイが再開されたときにゲームのゲームプレイを再作成するために使用され得る。さらに、ゲームプレイを一時停止する一部として、ゲーム実行エンジン３２４は、一時停止信号で特定されたプライマリクライアントデバイスへのストリーミングビデオフレームを一時停止する。
【００７６】
一時停止信号を提供することに加えて、ハンドオーバマネージャ３３０は、セカンダリクライアントデバイスがゲームのゲームプレイを再開できるように、一時停止信号で識別されたセカンダリクライアントデバイスに再開オプションを提供し得る。セカンダリクライアントデバイスからの再開オプションのユーザ選択により、再開要求信号がプライマリクライアントデバイス１００からサーバ上のハンドオーバマネージャ３３０に転送される。
【００７７】
ハンドオーバマネージャ３３０は、再開要求が選択されたセカンダリクライアントデバイスからであることを確認し得る。確認時に、ハンドオーバマネージャ３３０は、処理のために再開マネージャ３３２に再開要求を転送し得る。再開マネージャ３３２は、ゲーム実行エンジン３２４と相互作用して、ゲームのゲーム状態を判定し得る。ゲーム実行エンジン３２４は、再開マネージャ３３２から要求を受信し、状態データマネージャ３３８に照会して、ゲームのゲーム状態及びゲームのゲーム再開位置を取得する。次に、再開マネージャ３３２は、ゲーム実行エンジン３２４に、ゲームのゲームプレイを再開させ、ゲームのために識別された再開位置からビデオフレームを選択されたセカンダリクライアントデバイスにストリーミングするように指示し得る。ゲームの再開の一部として、再開要求は、画面表示解像度、利用可能な入力制御、オーディオ能力など、選択されたセカンダリクライアントデバイスの能力を含み得る。再開要求が提供された、選択されたセカンダリクライアントデバイスの能力は、ビデオフレームが選択されたセカンダリクライアントデバイス上でレンダリングされるように、ビデオフレームのストリームを調整するために使用され得る。さらに、セカンダリクライアントデバイスによって使用される入力方法は、ゲームが、セカンダリクライアントデバイスで利用可能な入力方法を使用して提供された相互作用を認識することができるように、ゲームプレイを調整するために使用される。ビデオフレーム３２６は、セカンダリクライアントデバイスにストリーミングされる前にセカンダリクライアントデバイスのために定義された通信プロトコルに従って圧縮される。プライマリクライアントデバイス及びセカンダリクライアントデバイスに送信されるビデオフレームのストリームを圧縮するために使用される圧縮技術は、ゲームプレイのために選択されるプライマリ及びセカンダリクライアントデバイスのタイプに応じて、同じであっても異なっていてもよい。
【００７８】
一方、ハンドオーバマネージャ３３０は、再開要求で提供されたセカンダリクライアントデバイス識別子を使用して、ゲーム実行エンジン３２４と相互作用するプライマリクライアントデバイスを更新する。ハンドオーバマネージャ３３０は、丸「ｄ」によって示されるように、ゲーム実行エンジンが、符号化されたビデオフレームのストリーミングを開始するために、クライアントデバイスを識別することができるように、更新プライマリクライアントデバイスモジュール３３６に指示し、次に、プライマリクライアントデバイス識別子モジュール３２２に信号を送り、クライアントデバイス識別子をセカンダリクライアントデバイス識別子で更新する。更新の一部として、プライマリクライアントデバイス識別子モジュール３２２は、プライマリクライアントデバイス識別子をセカンダリクライアントデバイス識別子に置き換え、プライマリクライアントデバイス１００としてセカンダリクライアントデバイスを指定する。
【００７９】
いくつかの実施形態では、ハンドオーバオプションは、デバイスハンドオーバのために、適正化されたセカンダリクライアントデバイスのリストから２つ以上のセカンダリクライアントデバイスの選択を可能にし得る。そのような実施形態では、特定のセカンダリクライアントデバイスからの再開要求オプションのユーザ選択は、再開されたゲームプレイからビデオフレームをストリーミングするセカンダリクライアントデバイスのいずれかを判定する。２つ以上のセカンダリクライアントデバイスの選択は、ユーザがデバイス可用性、ネットワーク帯域幅、通信信号強度、利用可能なフレームレート、サービス品質などに基づいてデバイスを選択できるように、異なる適正化されたデバイスの追加オプションをユーザに提供することであり得る。例えば、２つのセカンダリクライアントデバイスは、同様のデバイス属性を有すると識別され得るが、１つのセカンダリクライアントデバイスが、ハンドオーバ要求が受信された時点からゲームセッションの全期間にわたって利用できない場合や、通信信号強度が弱いまたは電力が低い場合などがあり得る。そのような場合、セカンダリクライアントデバイスの両方に再開要求オプションを提供することは、ユーザが、デバイスハンドオーバ中に、ゲームをプレイするために適切なセカンダリクライアントデバイスに切り替えるのに役立ち得る。
【００８０】
図３は、本発明の一実施形態での、セカンダリクライアントデバイスのオプションを識別し、デバイスハンドオーバのためのセカンダリクライアントデバイスを選択するために使用され得るプライマリクライアントデバイス内の様々なモジュールを示す。プライマリクライアントデバイスは、クラウドゲームサーバ３２０などのサーバから受信した要求及びデータを処理するためのプロセッサ１０４、インターネットに接続し、サーバ、コンソール、他のクライアントデバイス、コントローラ、ネットワークデバイスなどの他のデバイスと相互作用するための、データ、ネットワーク構成要素、及び通信プロトコルを格納するための１つまたは複数のメモリユニットなどの構成要素を含むコンピューティングデバイスである。プライマリクライアントデバイス１００は、ラップトップコンピュータ、デスクトップコンピュータ、携帯電話、タブレットコンピュータデバイス、ヘッドマウントディスプレイなどであり得る。ユーザログインモジュール１０２は、プライマリクライアントデバイス１００のディスプレイ上にレンダリングするためのユーザインターフェイスを提供するために使用され、例えば、クラウドゲームサービスにアクセスするためのユーザ認証情報を提供するために使用される。ユーザインターフェイスはまた、ゲームプレイ中にユーザ選択及びユーザインタラクションを提供するために使用され得る。プロセッサ１０４は、ネットワーク２００を介してクラウドゲームサーバ３２０または他のコンテンツプロバイダなどのサーバから受信されたストリーミングコンテンツを受信及び処理するために使用されるストリームプロセッサ１０６を含む。ストリームプロセッサ１０６は、サーバから受信したストリーミングコンテンツがプライマリクライアントデバイス１００のために定義された通信プロトコルに準拠していることを確認するため、及びコンテンツを処理するために必要なロジックを含む。プロセッサ１０４は、サーバ３２０によって提供される符号化されたストリーミングデータを解凍するために、プロセッサに利用可能なデコーダ１０８を使用し得る。解凍されたデータは、プロセッサ１０４内のデータハンドラ１１０に転送され、様々なデータ構成要素を識別し、コンテンツの様々なデータ構成要素を分離するために、データを分析する。サーバ３２０からのストリーミングコンテンツ（すなわち、ストリーミングビデオフレームデータ）は、ビデオフレームデータ、オーディオデータ、触覚データ、画像などを含み得る。データハンドラ１１０は、ストリーミングコンテンツに提供された様々なデータ構成要素を分離し、レンダリングのために異なるデータ構成要素をプライマリクライアントデバイス１００上の適切なデバイス構成要素に別々に転送する。例えば、オーディオデータ構成要素１１０−ａは、レンダリングのためにスピーカーに転送され得て、ビデオ１１０−ｂ及び画像データ構成要素は、レンダリングなどのためにディスプレイに転送され得る。クライアントデバイスで提供され、ユーザ入力モジュール１０７によってキャプチャされたユーザ選択、ゲームインタラクションなどのユーザ入力は、例えば、ゲームの結果を導き出すために、プロセッサ１０４によって処理され、ストリーミングコンテンツに応じてサーバ３２０に転送される。
【００８１】
プライマリクライアントデバイス１００はまた、ゲームをプレイするためのデバイスハンドオーバのためのハンドオーバオプションを提示するために、プライマリクライアントデバイス１００の近傍にあるセカンダリクライアントデバイスを能動的に探索して検出するために使用される切り替えモジュール１２０を含む。切り替えモジュール１２０には、いくつか例を挙げると、検出エージェント１３０、デバイスプロファイルインストラクタ１４０、及びハンドオーバロジック１５０などの複数のサブモジュールなどがある。検出エージェント１３０は、プライマリクライアントデバイスに対してローカルであると識別された他のクライアントデバイスを検出するために使用される。検出エージェント１３０は、クライアントデバイス及び／またはプロトコルによって送信された様々な信号を使用して、他のクライアントデバイスを探索する。検出エージェント１３０は、図４を参照してより詳細に説明される。
【００８２】
デバイスプロファイルインストラクタ１４０は、いくつかの実施形態では、クラウドゲームシステムのサーバとの通信接続を確立し、プロファイルを取得するために検出エージェント１３０によって検出されたセカンダリクライアントデバイスに信号を送るために使用される。他の実施形態では、デバイスプロファイルインストラクタ１４０は、検出されたセカンダリクライアントデバイスとの通信接続を確立し、セカンダリクライアントデバイスのそれぞれをプロファイルするために、クラウドゲームシステムのサーバに信号を送り得る。デバイスプロファイルインストラクタ１４０の役割の詳細については、図５を参照して説明する。
【００８３】
ハンドオーバロジック１５０は、デバイスハンドオーバを正常に実行するために、ゲームのゲームプレイに適正化されたセカンダリクライアントデバイスのハンドオーバオプション及びリストをレンダリングするための適切なユーザインターフェイスを提供するために使用される。ハンドオーバロジック１５０の機能の詳細については、図６Ａ、図６Ｂ、図６Ｃ−１及び図６Ｃ−２を参照して説明する。
【００８４】
図４は、他のクライアントデバイスを探索して検出するためにクライアントデバイス１００上で利用可能な検出エージェント１３０の様々なサブモジュールを示す。検出エージェント１３０のサブモジュールは、デバイス位置検出器１３２とサービス検出モジュール１３４の２つの主要なサブモジュールに大別され得る。デバイス位置検出器１３２は、プライマリクライアントデバイスによって送信された信号を使用することによって、またはプライマリクライアントデバイス内の構成要素またはプライマリクライアントデバイスの外部のデバイスからデータを取得することによって、プライマリクライアントデバイスの地理的位置を識別するように構成される。ホームネットワークなどのローカルネットワークでは、タブレット、スマートテレビ、スマートウォッチ、携帯電話、ケーブルテレビボックス、ゲームコンソールなどの様々なクライアントデバイスはすべて、イーサネット（登録商標）接続（すなわち、有線接続）、Ｗｉ−Ｆｉ（すなわち、無線）接続、またはその両方の組み合わせを通じてホームネットワークに接続される。その結果、一実施形態では、プライマリクライアントデバイスの地理的位置は、ネットワーク内の１つまたは複数のネットワークアクセスポイントに対して、プライマリクライアントデバイスによって示されるＷｉ−Ｆｉ信号強度を評価することによって判定でき、そのような評価は、Ｗｉ−Ｆｉ信号検出器１３２−ａを使用して実行され得る。代替の実施形態では、ローカルルータデバイス検出器１３２−ｂは、ルータデバイスを通じてネットワークに接続されているクライアントデバイスのリストを取得するためにローカルルータデバイスに照会し得る。さらに別の実施形態では、プライマリクライアントデバイス１００に実装されたグローバル測位サービス（ＧＰＳ）ツール１３２−ｃは、プライマリクライアントデバイスの地理的位置を特定するために使用され得る。さらなる実施形態では、プライマリクライアントデバイスの地理的位置は、セルタワー信号検出器１３２−ｄを使用して、プライマリクライアントデバイスと１つまたは複数のセルタワーとの間の信号を問い合わせることによって判定し得る。プライマリクライアントデバイスの地理的位置を検出するこのモードは、プライマリクライアントデバイスが携帯電話などのセルタワーと相互作用するように設定されている場合に役立ち得る。いくつかの実施形態では、様々なデバイス位置検出器１３２の組み合わせは、ユーザのプライマリクライアントデバイス１００の地理的位置を判定するために使用され得る。
【００８５】
プライマリクライアントデバイスの地理的位置が判定されると、１つまたは複数のサービス検出モジュール１３４は、プライマリクライアントデバイス１００と同じネットワーク環境にある他のクライアントデバイスを能動的に探索して検出するために使用され得る。例えば、タブレットコンピュータ、ラップトップコンピュータ、プリンタなどの様々なデバイスにわたって実装される、マルチキャストＤＮＳサービス検出プロトコル１３４−ａなどのドメインネームシステム（ＤＮＳ）に基づくプロトコルは、プライマリクライアントデバイスが動作するネットワーク内で利用可能なセカンダリクライアントデバイスを検出するために使用され得る。あるいは、サービスロケーションプロトコル１３４−ｂは、プライマリクライアントデバイスが動作するローカルエリアネットワーク内のセカンダリクライアントデバイスを検出するために使用され得る。他のサービス検出プロトコルは、無線技術を使用して、プライマリクライアントデバイスのローカルエリアネットワーク内のＢｌｕｅｔｏｏｔｈ（登録商標）対応セカンダリクライアントデバイスを検出するためのＢｌｕｅｔｏｏｔｈ（登録商標）サービス検出プロトコル１３４−ｃを含み得る。本明細書で提供されるサービス検出プロトコルのリストは単なる実施例であり、プライマリクライアントデバイスが動作するローカルネットワーク内のセカンダリクライアントデバイスを自動的に探索し検出するために、他のサービス検出プロトコルが使用され得る。異なるプロトコルを使用して検出された様々なセカンダリクライアントデバイスは、例えば、無線接続１３８を使用してネットワーク２００を介してサーバ３２０に転送される。サーバは、検出されたセカンダリクライアントデバイスのデバイス識別子を受信し、通信接続を確立して、デバイス属性を識別し、それぞれのセカンダリクライアントデバイスをプロファイルするために使用される情報を交換し得る。あるいは、信号は、サーバ３２０との通信接続を確立し、サーバと情報を交換するための要求と共に、様々なセカンダリクライアントデバイスに送信され得る。サーバと交換される情報は、セカンダリクライアントデバイスのプロファイルを生成するために使用される。セカンダリクライアントデバイスのために生成されたプロファイルは、適切なセカンダリクライアントデバイスがデバイスハンドオーバのオプションとして識別され提供され得るように、セカンダリクライアントデバイスを適正化するために使用される。
【００８６】
図５は、一実施形態では、デバイスハンドオーバのために適正化されたセカンダリクライアントデバイスのオプションを提供するために、プライマリクライアントデバイスに対してローカルであることが検出されたセカンダリクライアントデバイスを適正化するために使用される例示的なクライアントデバイスプロファイラ３４０を示す。サーバ３２０内の（図２の）クライアントデバイスプロファイラ３４０は、様々なデバイス検出プロトコルを使用して、プライマリクライアントデバイス１００によって検出された、１つまたは複数のセカンダリクライアントデバイスをプロファイリングするための信号（複数可）を受信し、そのような信号は、クライアントデバイスのデバイスプロファイルインストラクタ１４０または１つまたは複数のセカンダリクライアントデバイスから受信され得る。信号（複数可）に応答して、クライアントデバイスプロファイラ３４０は、通信接続を確立し、それぞれのセカンダリクライアントデバイスと情報の交換を開始する。クライアントデバイスプロファイラ３４０内の様々なサブモジュールは、セカンダリクライアントデバイスから情報を取得するために使用され得る。例えば、サービス品質（ＱＯＳ）評価器３４１は、セカンダリクライアントデバイスからＱＯＳ情報を取得するために使用され得る。ＱＯＳ情報は、ユーザのゲームプレイ体験に影響を与える、ネットワーク帯域幅情報、フレームレート、ストリーミング能力、及びｐｉｎｇ時間、パケット損失、リンクタイプ（すなわち、Ｗｉ−Ｆｉ、イーサネット（登録商標）、ロングタームエボリューション（ＬＴＥ）技術などを使用するネットワーク接続）などの他のネットワーク関連情報を含み得る。いくつかの実施形態では、ＱＯＳ情報は、プライマリクライアントデバイスによって検出されたセカンダリクライアントデバイスを編成するために使用され得る。他の実施形態では、セカンダリクライアントデバイスとクライアントデバイスプロファイラ３４０との間で交換される情報は、セカンダリクライアントデバイスを編成するために使用され得る。例えば、デバイス属性は、ゲームのデバイス属性要件に従って順位付けされ得る。プロセスを重視するゲームは、プロセッサの速度を他のデバイス属性よりも高く順位付けでき、グラフィックを重視するゲームは、ネットワーク帯域幅を他のデバイス属性よりも高く順位付けし得る。ＱＯＳ評価器３４１は、ゲームの要件に従ってデバイス属性を順位付けし、デバイスハンドオーバのために、デバイス属性のこの順位付けを使用して、プライマリクライアントデバイスによって検出されたセカンダリクライアントデバイスを識別し適正化し得る。いくつかの実施形態では、セカンダリクライアントデバイスの適正化リストは、セカンダリクライアントデバイスのデバイス属性と順位付けされたデバイス属性の一致のレベルに従ってリストに編成される。
【００８７】
デバイス仕様検出３４９は、限定されないが、オペレーティングシステムのタイプ及びバージョン、プロセッサのタイプ、プロセッサの速度、メモリのタイプ及び容量などを含む、セカンダリクライアントデバイスのハードウェア及びソフトウェア仕様を判定するために使用され得る。デバイス仕様は、セカンダリクライアントデバイスを分類し、セカンダリクライアントデバイスに転送するためにストリーミングビデオフレームをパッケージ化するために使用され得る。
【００８８】
デバイス可用性モジュール３４３は、プライマリクライアントデバイスによって検出されたそれぞれのセカンダリクライアントデバイスの可用性を判定するために使用され得る。デバイス可用性は、デバイスのハンドオーバのためのオプションとして提供するための適正化されたセカンダリクライアントデバイスの選択を促し得る。セカンダリクライアントデバイスの一部またはすべては、検出時にローカルネットワークに接続され得る。１つまたは複数のセカンダリクライアントデバイスは、カレンダーイベント、ユーザアクションイベントなどのイベントのためのサービスを提供するためにコミットされ得る。イベントが発生すると、イベントのためのサービスを提供するためにコミットされた１つまたは複数のセカンダリクライアントデバイスのリソースがイベント中に使用され得て、それらのセカンダリクライアントデバイスは「ビジー」状態にあることが示される。特定のセカンダリクライアントデバイスがデバイスハンドオーバ中に利用可能であるかどうかを判定するために、デバイス可用性モジュール３４３は、セカンダリクライアントデバイスのリソースが使用またはコミットされ得る様々なイベントを判定するためにイベント機構（図示せず）に照会するように構成される。一実施形態では、イベント機構は、ゲームセッション中のデバイスハンドオーバのためのセカンダリクライアントデバイスを識別するために、様々なスケジューリングソースからのイベントに関連する情報を照会して取得するように構成され得る。
【００８９】
デバイス可用性情報は、ハンドオーバオプションがプライマリクライアントデバイスから受信されたときに、デバイスハンドオーバ中にセカンダリクライアントデバイスのうちのどれが利用可能であるかを判定するために使用することができることに留意されたい。あるいは、デバイス可用性情報は、セカンダリクライアントデバイスのうちのどのデバイスが、今後スケジュールされているゲームプレイセッションでビジーになるようにスケジュールされているかどうかを判定するために使用され得る。ネットワークインターフェイス３４７などのインターフェイスは、イベントが現在の時間または、特定のセカンダリクライアントデバイスのリソースがコミットまたは必要とされるゲームプレイセッションが予定されている時間にスケジュールされているかどうかを判定するために、カレンダーアプリケーション３４５、ソーシャルメディアアプリケーション３４６、電子メールアプリケーションなどの異なるスケジューリングアプリケーションに照会させるためのインターフェイスロジック及び／またはＡＰＩを提供するために使用され得る。例えば、ユーザが現在の時間のソーシャルメディアポストを通じてオンラインマルチプレイヤーゲームをプレイすることをコミットした場合、イベント機構は、ソーシャルコンタクトを識別するために、１つまたは複数のソーシャルグラフ３４６−ａに依存する、ソーシャルメディアアプリケーション３４６に照会することによって、そのような情報を抽出することができ得る。ソーシャルコンタクトの識別情報は、ゲームをプレイするユーザのソーシャルコミットメントを得るために、監視または照会するソーシャルポスト／フィードを判定するために使用され得る。同様に、ユーザが毎週金曜日の午後８時にオンラインマルチプレイヤーゲームをプレイするためのカレンダーエントリを有する場合、イベント機構は、カレンダーアプリケーション３４５から、またはソーシャルメディアもしくは他のスケジューリングソースの電子メールアプリケーションもしくはカレンダーオプションからそのような情報を抽出することができ得る。デバイス可用性モジュール３４３は、識別されたセカンダリクライアントデバイスのうちのどのデバイスが、デバイスハンドオーバオプションに含めるために利用可能であるかを判定するために、特定のセカンダリクライアントデバイスがコミットされた様々なイベントを分析する。デバイス可用性モジュール３４３から取得されたスケジューリング情報は、ハンドオーバオプションを有するオプションとして提供されたセカンダリクライアントデバイスを識別し、適正化するために使用される。もちろん、識別されるセカンダリクライアントデバイスは、ユーザにとって最適なゲームプレイ体験を提供するためのデバイス属性を有する。
【００９０】
ゲーム／アプリ検出モジュール３４４は、ゲームのゲームプレイセッションのために割り当てられたデータセンターで利用可能な様々なアプリケーション及び／またはゲームを判定するために使用される。図１に示すように、各データセンターは、プレイするために利用可能である、または設定されている複数のゲームを含む。複数のサーバは、各データセンターで利用可能なゲームをプレイするために必要なリソースを提供する。ゲーム／アプリ検出モジュール３４４は、利用可能なゲームのリストを判定し、ゲームプレイを可能にするためにデータセンターでゲームをプロビジョニングする必要があるかどうかを判定するように構成される。特定のゲームがデータセンターで利用できない場合、クラウドゲームシステム３００は、ゲームがゲームプレイのために選択されたとき、ゲームのインスタンスがゲームタイトルデータストア３１４から取得され、データセンターのサーバ上で実行され、ゲームコンテンツが、プライマリ及びセカンダリクライアントデバイスにストリーミングされ得るように、データセンターでゲームをプロビジョニングし得る。同様に、セカンダリクライアントデバイスが１つまたは複数のデバイス属性を持たない場合、またはデバイス属性がゲームのゲームプレイに必要なレベルにない場合、ゲーム／アプリ検出モジュール３４４は、そのような属性を識別でき、クラウドゲームシステム３００は、ゲームをプレイするためにセカンダリクライアントデバイスを適正化する、それらの属性をプロビジョニングするために使用され得る。クライアントデバイスプロファイラ３４０は、様々なサブモジュールによって収集された情報を使用して、プライマリクライアントデバイスに対してローカルであることが検出された様々なセカンダリクライアントデバイスのデバイスプロファイルを生成する。
【００９１】
図６Ａは、プライマリクライアントデバイスに対してローカルであると識別されたすべてのセカンダリクライアントデバイスについて、クライアントデバイスプロファイラ３４０によって生成される例示的なデバイスプロファイルを示す。デバイスプロファイルは、デバイス識別子を使用してセカンダリクライアントデバイスを識別し、セカンダリクライアントデバイスの様々なデバイス属性をリスト表示する。簡潔にするために、セカンダリクライアントデバイスのデバイス識別子は、番号順にリスト表示されているが、実際には、デバイス識別子は、各クライアントデバイスを明確に識別するために使用できる一意の識別子である。セカンダリクライアントデバイス及び特定のデバイス属性の数は、実施例として提供されたものであり、限定するものと解釈されるべきではない。デバイス属性の数がより少ないかより多いかは、クライアントデバイスプロファイラ３４０によって生成されたデバイスプロファイルで識別され得る。
【００９２】
クライアントデバイスプロファイラ３４０によって生成されたプロファイルは、セカンダリクライアントデバイスを適正化するため、及びゲームのゲームプレイ中に、デバイスハンドオーバのためのハンドオーバオプションを提供するために適正化されたセカンダリクライアントデバイスの特定のデバイスを識別するために、サーバ３２０のハンドオーバマネージャ３３０によって使用され得る。適正化されたセカンダリクライアントデバイスは、レンダリング及びユーザ選択のために、プライマリクライアントデバイス１００にハンドオーバオプションと共に返される。
【００９３】
図６Ｂ、図６Ｃ−１及び図６Ｃ−２は、プライマリクライアントデバイスのディスプレイ上にレンダリングされるユーザインターフェイスの異なる実施例を示す。プライマリクライアントデバイス１００のハンドオーバロジック１５０は、ハンドオーバオプション及び適正化されたセカンダリクライアントデバイスのリストをサーバ３２０のハンドオーバマネージャ３３０から受信し、ユーザ選択のために、ユーザインターフェイス１５３の適正化されたセカンダリクライアントデバイスのリストをハンドオーバオプションに提示する。ユーザインターフェイスは、ユーザが利用可能な様々なオプション（すなわち、「一時停止」または「再開」）を識別する。さらに、ユーザインターフェイスは、ボックス１５５に示すように、プライマリクライアントデバイス（Ｄ１）のデバイス識別子及び「他のデバイスの選択」オプション１５７の下に適正化されたセカンダリクライアントデバイスのリストを提供する。図６Ｂは、一実施形態では、プライマリクライアントデバイスのディスプレイ上にレンダリングされたユーザインターフェイス１５３を示す。ユーザ選択のためにオプション１５７の下に提供されるセカンダリクライアントデバイスのリストは、クライアントデバイスプロファイラ３４０によって提供されたセカンダリクライアントデバイスのサブセット（図６Ａに図示）であり、一実施形態では、ゲームのデバイス属性要件と比較して、それぞれのセカンダリクライアントデバイスのデバイス属性に従って編成される。
【００９４】
黒いカーソルによって示されるように、「一時停止」オプションのユーザ選択により、ゲームのゲームプレイを一時停止するためにサーバ３２０のハンドオーバマネージャ３３０に信号を送信する。ハンドオーバマネージャ３３０は、それに応答して、ゲーム実行エンジン３２４に命令を送信して、プライマリクライアントデバイスへのストリーミングビデオフレームを中断する。ハンドオーバマネージャ３３０はさらに、ゲームプレイのゲーム状態を保存するための信号を一時停止マネージャ３３４に送信して、一時停止された位置からゲームのゲームプレイの再開を可能にする。ゲームプレイのゲーム状態は、状態データマネージャ３３８によって保存される。灰色の点線のカーソルで示されるように、セカンダリクライアントデバイスのユーザ選択により、選択されたセカンダリクライアントデバイスでゲームプレイを再開することをユーザが決定したときに、セカンダリクライアントデバイスが、ゲームプレイをストリーミングする必要があるハンドオーバデバイスとして識別される。一時停止オプションのユーザ選択により、選択したセカンダリクライアントデバイスに「再開」オプションが転送される。セカンダリクライアントデバイスでの再開オプションのユーザ選択は、サーバ３２０のハンドオーバマネージャ３３０に転送される。ハンドオーバマネージャ３３０は、次に、再開マネージャ３３２にゲームのゲームプレイを再開するように指示する。再開マネージャ３３２は、ゲーム実行エンジンに、状態データマネージャ３３８からゲーム状態を取得し、状態データマネージャ３３８に保存された再開位置からゲームを再開するように指示する。ハンドオーバマネージャ３３０は、選択されたセカンダリクライアントデバイス識別子を反映するために、プライマリクライアントデバイス識別子を更新するための信号を送信する。その結果、ゲーム実行エンジン３２４は、再開されたゲームのビデオフレームをストリーミングするために、選択されたセカンダリクライアントデバイスのデバイス識別子を使用することができる。
【００９５】
図６Ｃ−１及び図６Ｃ−２は、本発明の一実施形態では、ハンドオーバデバイスとしてのセカンダリクライアントデバイスを選択する別の方法を提供する。図６Ｃ−１に示すように、ユーザは、「一時停止」オプションを選択する代わりに、黒いカーソルによって示されるように、デバイスのハンドオーバのために、セカンダリクライアントデバイスの１つを選択デバイスオプション１５７から選択し得る。セカンダリクライアントデバイスのユーザ選択により、選択されたデバイスは、自動的に選択デバイスオプション１５７で強調表示され、図６Ｃ−２の強調表示されている「一時停止」オプションで示されるように、一時停止オプションが有効になる。セカンダリクライアントデバイスのユーザ選択に応答して、ゲーム状態を保存し、「再開」オプションを提供する、ゲームのゲームプレイを一時停止するプロセスは、図６Ｂを参照して論じたものと同様である。ゲームプレイは、ユーザがセカンダリクライアントデバイスから再開オプションを選択した場合に再開され得る。
【００９６】
本明細書で論じられる様々な実施形態は、プライマリクライアントデバイスが、プライマリクライアントデバイスに対してローカルであるセカンダリクライアントデバイスを能動的に探索して検出するために、各クライアントデバイスに実装された様々なプロトコル及び信号検出器を使用することを可能にする。いくつかの実施形態では、各クライアントデバイス内で利用可能なプロトコル及び技術は、コンテンツプロバイダ（例えば、ゲームサーバ）からのストリーミングコンテンツを受信している能動的に使用されるクライアント（すなわち、プライマリクライアントデバイス）が、ストリーミングコンテンツを受信するのに適している他の休止状態のクライアントデバイス、ストリーミングコンテンツを受信することができるクライアントになるために起動させることができる他のアイドリングクライアントデバイス（例えば、メッセージ待機中のアイドル状態のクライアントデバイス）、またはストリーミングコンテンツの受信に適しているが、現在、番組を録画している、またはいくつかのコンテンツをダウンロードしている、などの限られた作業を実行しているスタンバイクライアントを検出することを可能にする。いくつかの実施形態では、能動的に使用されるクライアントは、他のクライアントデバイスに、情報（例えば、セッション情報、ＱＯＳ情報、デバイス能力、プレイ中のゲーム、ビデオコーデック情報など）の交換、及びストリーミングセッションの準備作業の開始を促し得る。これにネットワーク帯域幅の監視を含めることも可能である。能動的に使用されるクライアントが、バッテリ電力が少なくなっているテーブルコンピュータの場合、ユーザにゲームプレイを別のクライアントデバイスに切り替えまたは移動させることを提案するユーザインターフェイスをタブレットコンピュータに表示するように促すトリガイベント（すなわち、低バッテリトリガイベント）が発生し得る。提案には、ゲームプレイに使用できるタブレットコンピュータに対してローカルである他のクライアントデバイスが含まれ得て、これらのクライアントデバイスは、そのプロファイルに基づく提案に含まれる。
【００９７】
プライマリクライアントデバイスの場所を判定するための様々な方法が使用され得る。例えば、一実施形態では、無線プライマリクライアントデバイスについて、ホームネットワーク内の１つまたは複数のマルチアクセスポイント、または近隣の同等なアクセスポイントに対するＷｉ−Ｆｉ信号強度が、ユーザの家屋内の場所を判定するために使用され得る。他の実施形態では、ＧＰＳデータが、プライマリクライアントデバイスの位置を判定するために使用され得る。そのような位置情報は、例えば、ユーザが別のクライアントデバイスが存在する部屋に入室しているかどうかを判定するために使用することができる。部屋に入室しているユーザは、コンテンツをストリーミングするために他のクライアントデバイスのネットワーク接続をテストするためのトリガとしての役目を果たすことができる。テストによって、他のクライアントデバイスのＱＯＳが本当に良好であると識別された場合、他のクライアントデバイスが、ユーザに切り替えを推奨できる、より良いゲームプレイ体験、例えば、より高い解像度、より高いフレームレート、より短い待ち時間などを提供することができ得ることをユーザに通知するデバイスハンドオーバオプションが、プライマリクライアントデバイス上に提示され得る。提示されたオプションでの他のクライアントデバイスのユーザ選択により、切り替えが実行される。
【００９８】
多くの場合、様々なパーソナルクライアントデバイスは、ゲームネットワーク、ソーシャルメディアネットワーク、コンテンツプロバイダネットワークなどのネットワークサービスに連続的に接続される。そのようなネットワークサービスは、ユーザの様々なパーソナルクライアントデバイス、クライアントデバイスの地理的位置、及びネットワーク接続を追跡し続け得る。例えば、ユーザが、ゲームネットワークなどのオンラインサービスを使用して携帯電話上でゲームをプレイしている場合、オンラインサービスは、ＧＰＳ信号、セルタワー信号、Ｗｉ−Ｆｉホットスポットなど、携帯電話によって生成された信号を使用してクライアントデバイスの位置を判定し、ユーザのホームネットワークなどのプライベートネットワークまたはローカルネットワーク内の他のクライアントデバイスと通信することができ得る。ローカルまたはプライベートネットワーク（例えば、ホームネットワーク）内の他のクライアントデバイスは、定期的にゲームネットワークまたは他のオンラインサービスに接続し、ゲームをプレイするために使用されているユーザの携帯電話の地理的位置を認識し得る。ゲームネットワークが、携帯電話のユーザが家に近づいたことを検出した場合、これにより、携帯電話のネットワーク帯域幅及び他のＱＯＳ属性、ならびにホームネットワーク内の他のクライアントデバイスのネットワーク帯域幅を検証するためのトリガイベントを開始し得る。ネットワーク内の携帯電話及び他のクライアントデバイスのデバイス属性のこの事前設定は、切り替え要求を受信する前にデバイスを適正化するための予備作業が既に行われているため、ユーザがデバイスハンドオーバを要求したときには、より高速でフリクションレスなデバイス切り替えを支援し得る。
【００９９】
いくつかの実施形態では、カレンダーイベントは、例えば、ユーザがゲームネットワークを通じてオンラインマルチプレイヤーセッションのために行った予約を識別するために、イベント機構によって照会し得る。カレンダーイベントの識別により、ストリーミングセッションのための様々なクライアントデバイス（プライマリ及び１つまたは複数のセカンダリクライアントデバイス）の準備をトリガし得る。クライアントデバイスが、まだコンテンツをストリーミングするために使用されていないと仮定すると、計画されたイベントを検出しただけで、ローカルネットワーク内のクライアントデバイス（プライマリ及びセカンダリクライアントデバイス）のプロファイリング及び適正化をトリガすることができる。これには、事前にストリーミングセッションの準備が整っているプライマリ及び／または１つまたは複数のセカンダリクライアントデバイスを取得するためのプロビジョニングサービス及び属性が含まれ、そのようなプロビジョニングは、カレンダーイベントが発生したときに、少なくとも１つのクライアントデバイスが、ゲームをプレイするために選択されることを見越して行われる。
【０１００】
様々な実施形態は、現在のプライマリクライアントデバイスが、ユーザがゲームプレイのストリーミングセッションを転送し得る、すべての潜在的なセカンダリクライアントデバイスにアクセスする機会を探すことを可能にする方法を説明する。具体的には、プライマリクライアントデバイスは、バックグラウンドＱＯＳ及びセカンダリクライアントデバイスのプロファイリングに使用して、様々なデバイス属性の状態を取得でき、そのようなバックグラウンドＱＯＳ及びプロファイリングは、プライマリクライアントデバイスがアイドル状態であることが検出されたとき、または固定されたデューティサイクルで、または定期的もしくはトリガイベントなどに応答して、特定の時期に行われ得る。プロファイリングはユーザが変更を開始する前に行われ、その結果、ユーザがデバイスハンドオーバオプションを選択することを決定したとき、セカンダリクライアントデバイスが既にプロファイルされているので、より高速でフリクションレスな変更が発生する可能性があり、いくつかの実施形態では、コーデック設定及び／または他のデバイス属性は、迅速なストリーム切り替えのために予め確立されているか、または予め確立することができる。
【０１０１】
特定のセカンダリクライアントデバイスが使用パターンを有する場合、そのような使用はＱＯＳのパターンに影響を与え得る。セカンダリクライアントデバイスをプロファイリングすることにより、プライマリクライアントデバイスは、そのような使用パターンを認識し、セカンダリクライアントデバイスの切り替えの適正化を確認するために役立てることができる。例えば、プロファイルは、有望な既知のＱＯＳが高い信頼区間を有するセカンダリクライアントデバイスを識別し得る。この情報は、セカンダリクライアントデバイスがデバイスハンドオーバのために選択されたときに、事前テストされたコーデック及び他のストリーム設定（すなわち、ビデオフレームまたはコンテンツのストリーミングを可能にするデバイス属性）を呼び出すために使用することができる。別の例では、セカンダリクライアントデバイスが作業時間中に予測不可能なプロセス負荷（ＣＰＵ負荷）を有する場合、切り替えイベントが開始されるたびに、新しいＱＯＳテストを実行することが必要になり得る。
【０１０２】
いくつかの実施形態では、様々なセカンダリクライアントデバイスに対して生成されたプロファイリング情報は、プライマリクライアントデバイスに現在送信されているゲームのストリーミングビデオフレームを受信するように既に設定されている、ローカルまたはプライベートまたはホームネットワーク内に他のセカンダリクライアントデバイスが存在するかどうかを判定するために使用され得る。ユーザは、ゲームのストリーミングビデオフレームを受信するために既に設定されているセカンダリクライアントデバイスのデバイス識別子を有するハンドオーバオプションを提供され得る。いくつかの実施形態では、ハンドオーバが実行される前に、新しいＱＯＳテストが実行され得る。別の実施形態では、セカンダリクライアントデバイス及びプライマリクライアントデバイスが同じネットワーク内にいる限り、セカンダリクライアントデバイスを適正化するために使用された既存のＱＯＳテストが信頼され、デバイスハンドオーバは追加のＱＯＳテストを実行することなく実施され得る。いくつかの実施形態では、プライマリクライアントデバイスは、パーソナルコンピュータ、タブレットコンピュータ、携帯電話、デスクトップコンピュータ、テレビなどのいずれかであり得る。セカンダリクライアントデバイスは、ヘッドマウントディスプレイであり得る。あるいは、プライマリクライアントデバイスはヘッドマウントディスプレイであり、デバイスハンドオーバのために選択されたセカンダリクライアントデバイスは、パーソナルコンピュータ、タブレットコンピュータ、携帯電話、デスクトップコンピュータ、テレビなどのいずれかであり得る。他の実施形態では、プライマリクライアントデバイス及びセカンダリクライアントデバイスは両方ともヘッドマウントディスプレイであり得る。
【０１０３】
ゲームのユーザの進行状況を使用してゲームのゲーム状態を再作成する方法の詳細については、一実施形態では、２０１０年１１月１日に出願された「ビデオストリームを制御するためのユーザインターフェイス、システム及び方法」と題する米国特許出願第１２／９１７，３８８号を参照することができ、参照によりその全体が本明細書に組み込まれる。上記で定義されたゲーム状態を再作成するプロセスは１つの可能な方法であり、ゲームのゲーム状態を再作成する他の方法も使用し得る。ビデオ生成及び配信の詳細については、２０１０年５月３１日に出願された「ゲーム実行環境」と題する米国特許出願第１２／７９０，９５５号（その後、特許第８，５０６，４０２号として発行されている）を参照することができ、参照によりその全体が本明細書に組み込まれる。サーバ側でのゲームビデオの生成及び／またはレンダリングに関する詳細については、２０１０年６月１日に出願された「ビデオ配信の適正化」と題する米国特許出願第１２／７９１，８１９号を参照することができ、参照によりその全体が本明細書に組み込まれる。コンピュータプログラムのサーバ側実行に関する詳細については、２０１１年９月１３日に出願された「アドオン管理システム」と題する米国特許出願第１３／２３１，７５１号を参照することができ、参照によりその全体が本明細書に組み込まれる。
【０１０４】
図７は、本発明の一実施形態での、ゲームプレイのデバイスハンドオーバのために使用できるセカンダリクライアントデバイスのオプションを識別するために使用される様々な方法動作を示す。方法は、プライマリクライアントデバイスから受信したゲームをプレイするための要求に応答して、プライマリクライアントデバイスに対してゲームのゲームプレイのセッションが確立される、動作７１０で始まる。プライマリクライアントデバイスは、ゲームプレイのためのゲームを識別するために、ユーザアカウントを介してクラウドゲームシステムにアクセスするために使用され得る。クラウドゲームシステム内のサーバは、ユーザ及びゲームプレイ要求を認証し、プライマリクライアントデバイスにゲームのビデオフレームをストリーミングするためにゲームのインスタンスを実行することによってゲームプレイセッションを確立する。ビデオフレームは、プライマリクライアントデバイスにストリーミングされる前に、サーバ上で利用可能なエンコーダを使用して暗号化され得る。
【０１０５】
動作７２０に示すように、１つまたは複数のセカンダリクライアントデバイスのプロファイルを生成するための要求が受信される。セカンダリクライアントデバイスは、セカンダリクライアントデバイスによって生成された信号を使用して、及び／またはセカンダリクライアントデバイス内に実装された１つまたは複数のデバイス検出プロトコルを通じて、プライマリクライアントデバイスによって検出され得る。プロファイルの生成要求は、セカンダリクライアントデバイスに信号を送信して、サーバとの通信接続を確立し、プロファイルを取得することによって、プライマリクライアントデバイスによって開始し得る。あるいは、プライマリクライアントデバイスは、プライマリクライアントデバイスに対してローカルに検出されたセカンダリクライアントデバイスのデバイス識別子を使用してサーバに信号を送信し、サーバにセカンダリクライアントデバイスとの通信接続を確立するように要求し、情報を交換して、それぞれのセカンダリクライアントデバイスのプロファイルを生成し得る。サーバは、信号に応答して、確立された通信接続を使用してセカンダリクライアントデバイスと情報を交換し、１つまたは複数のデバイス属性を識別し、それぞれのデバイス属性を使用して各セカンダリクライアントデバイスのプロファイルを生成する。プロファイルで提供される情報は、ゲームのゲームプレイのためにセカンダリクライアントデバイスを適正化するために使用される。
【０１０６】
動作７３０に示すように、ゲームプレイ中にハンドオーバオプションがプライマリクライアントに提供される。ハンドオーバオプションは、生成されたプロファイルに基づいて、ゲームをプレイするために適正化された１つまたは複数のセカンダリクライアントデバイスを識別するように構成される。ハンドオーバオプションは、ユーザ選択のためにプライマリクライアントデバイスのユーザインターフェイス上に提示される。
【０１０７】
動作７４０に示すように、セカンダリクライアントデバイスのユーザ選択は、プライマリクライアントデバイスから受信される。セカンダリクライアントデバイスのユーザ選択の受信に応答して、ゲームプレイは一時停止され、ゲームプレイのゲーム状態はサーバによって保存される。ゲームプレイの一時停止は、プライマリクライアントデバイスへのビデオフレームのストリーミングを一時停止することにつながる。ゲームの一時停止に応答して、再開オプションが、セカンダリクライアントデバイス上でゲームのプレイを再開するために、セカンダリクライアントデバイスに提供される。
【０１０８】
動作７５０に示すように、セカンダリクライアントデバイスからの再開要求のユーザ選択は、サーバによって受信される。再開要求に応答して、サーバは、ゲームの保存されたゲーム状態にアクセスし、セカンダリクライアントデバイス上でゲームのプレイを継続するように構成される。再開要求により、サーバは再開したゲームのビデオフレームをセカンダリクライアントデバイスにストリーミングする。セカンダリクライアントデバイスは、プライマリクライアントデバイスとして指定され、その結果、ストリーミングビデオフレームは、プライマリクライアントデバイスの代わりにセカンダリクライアントデバイスに送信され得る。デバイスハンドオーバは、最小限の待ち時間で迅速かつシームレスに実行され、プライマリ及びセカンダリクライアントデバイスのユーザは、遜色ないまたはさらに良くなったゲームプレイ体験を楽しむことができる。
【０１０９】
いくつかの実施形態では、デバイス切り替えは、選択されたセカンダリクライアントデバイスのデバイス属性に応じて、ユーザが、より高い解像度、より高いフレームレート、より短い待ち時間など、プライマリクライアントデバイスによって提供されたゲームプレイ体験よりも良いゲームプレイ体験を体験することを可能にする。あるいは、デバイス切り替えは、ゲームプレイ体験を著しく変えてしまうことなく、ゲームプレイを継続する方法を提供し得る。これは、例えば、プライマリクライアントデバイスで検出されたバッテリ電力不足などのトリガイベントに応答して、デバイス切り替えが実施される場合などがあり得る。
【０１１０】
方法動作は特定の順序で説明されているが、他のハウスキーピング操作が動作の間に実行され得る、または、動作が、わずかに異なる時間に生じるように調整され得る、もしくはオーバーレイ動作の処理が所望の方法で実行される限り、処理に関連する様々な間隔で処理動作の発生を可能にするシステムに分散され得ることを理解されたい。
【０１１１】
図８は、異なるゲームへのアクセスの提供に使用され得る、情報サービスプロバイダアーキテクチャの実施形態を示す。情報サービスプロバイダ（ＩＳＰ）１０７０は、ネットワーク１０８６を介して地理的に分散され接続されたユーザ１０８２に多数の情報サービスを配信する。ゲームへの高速アクセスを提供することに関して様々な実施形態が論じられてきたが、実施形態は、１つまたは複数のタイプの他のサービスを提供するように拡張することができる。例えば、ＩＳＰは、ゲームなどの１種類のみのサービス、またはゲーム、株価の更新、ブロードキャストメディア、ニュース、スポーツ、ゲームなどの様々なサービスを提供することができる。さらに、各ＩＳＰによって提供されるサービスは動的であり得て、つまり、任意の時点でサービスを追加または取り除き得る。したがって、特定の個人に特定の種類のサービスを提供するＩＳＰは、時間の経過と共に変化する可能性がある。例えば、ユーザが故郷にいる間は、ユーザの近くのＩＳＰによってサービスを受け得て、ユーザが異なる都市に移動しているときは、異なるＩＳＰによってサービスを受け得る。故郷のＩＳＰは、接続モジュールを通じて、必要な情報及びデータをユーザのゲームまたはアクセスプロファイルから新しいＩＳＰに転送し、その結果、ユーザ情報が新しい都市までユーザに「追随」し、データをユーザにより近づけて、よりアクセスしやすくする。別の実施形態では、ユーザの情報を管理するマスタＩＳＰと、マスタＩＳＰからの制御下のユーザと直接的にインターフェイスをとるサーバＩＳＰとの間に、マスタとサーバの関係が確立され得る。別の実施形態では、クライアントが世界中を移動するにつれて（すなわち、ユーザに割り当てられたデータセンターの切り替え中に）、あるＩＳＰから別のＩＳＰにデータが転送され、そのような転送は、ユーザにサービスするためにより良い位置にあるＩＳＰを、これらのサービスを配信するＩＳＰとするため、それぞれのＩＳＰによって提供されるサービスの互換性に基づき得る。
【０１１２】
ＩＳＰ１０７０は、ネットワークを介して顧客にコンピュータベースのサービスを提供する、アプリケーションサービスプロバイダ（ＡＳＰ）１０７２を含む。ＡＳＰモデルを使用して提供されるソフトウェアは、オンデマンドソフトウェアまたはソフトウエアアズアサービス（ＳａａＳ）と呼ばれることもある。特定のアプリケーションプログラム（顧客関係管理など）へのアクセスを提供する簡単な形式は、ＨＴＴＰなどの標準プロトコルを使用することである。アプリケーションソフトウェアは、例えば、ベンダのシステムに常駐し、ＨＴＭＬを使用するウェブブラウザを通じて、ベンダによって提供された専用クライアントソフトウェアによって、またはシンクライアントなどの他のリモートインターフェイスを介してユーザによってアクセスされる。
【０１１３】
広い地理的地域で配信されるサービスは、クラウドコンピューティングをしばしば使用する。クラウドコンピューティングは、動的スケーラブルで、仮想化されたリソースがインターネット上のサービスとしてしばしば提供されるコンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」のテクノロジインフラストラクチャの専門家である必要はない。クラウドコンピューティングは、インフラストラクチャアズアサービス（ＩａａＳ）、プラットフォームアズアサービス（ＰａａＳ）、及びソフトウエアアズアサービス（ＳａａＳ）などの異なるサービスに分けることができる。クラウドコンピューティングサービスは、ウェブブラウザからアクセスされる共通のビジネスアプリケーションをオンラインでしばしば提供し、ソフトウェア及びデータはサーバに格納される。クラウドという用語は、インターネットがコンピュータネットワーク図にどのように描かれているかに基づいて（例えば、サーバ、ストレージ、及びロジックを使用する）インターネットのメタファとして使用され、メタファが隠す複雑なインフラストラクチャの抽象的概念である。
【０１１４】
さらに、ＩＳＰ１０７０は、ゲームクライアントによってシングル及びマルチプレイヤービデオゲームをプレイするために使用されるゲーム処理サーバ（ＧａＰＳ）１０７４を含む。インターネット上でプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームはプレイヤーからのデータを収集し、それを他のプレイヤーに配布する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホストするには別のサーバが必要となる。別の実施形態では、ＧａＰＳは、プレイヤーとそれぞれのゲームプレイデバイスとの間の通信を確立し、集中ＧａＰＳに頼ることなく情報を交換する。
【０１１５】
専用ＧａＰＳは、クライアントとは独立して実行されるサーバである。このようなサーバは、通常、データセンターに配置された専用ハードウェアで実行され、より多くの帯域幅と専用の処理能力を提供する。専用サーバは、ほとんどのＰＣベースのマルチプレイヤーゲームのためのゲームサーバをホストするのに適した方法である。多人数参加型オンラインゲームは、通常ゲームタイトルを所有するソフトウェア会社がホストする専用サーバで実行され、コンテンツを制御及び更新することができる。
【０１１６】
放送処理サーバ（ＢＰＳ）１０７６は、視聴者にオーディオまたはビデオ信号を配信する。非常に狭い範囲の視聴者への放送はナローキャスティングと呼ばれることもある。放送配信の最終工程は、信号が聴取者または視聴者にどのように到達するかであり、ラジオ局またはテレビ局と同様にアンテナ及び受信機に放送され得るか、局を介してケーブルテレビまたはケーブルラジオ（または「無線ケーブル」）を経由してまたはネットワークから直接放送され得る。インターネットはまた、特に、信号及び帯域幅を共有できるマルチキャストを使用して、ラジオまたはテレビのいずれかを受信者に届け得る。歴史的に、放送は、全国放送または地域放送などの地理的領域によって区切られている。しかし、高速インターネットの普及に伴い、コンテンツは世界のほぼすべての国に到達可能なため、放送は地域によって定義されない。
【０１１７】
ストレージサービスプロバイダ（ＳＳＰ）１０７８は、コンピュータストレージ空間及び関連する管理サービスを提供する。ＳＳＰは定期的なバックアップとアーカイブも提供する。ストレージをサービスとして提供することにより、ユーザは必要に応じてより多くのストレージを注文できる。その他の大きな利点は、ＳＳＰにバックアップサービスが含まれており、コンピュータのハードドライブに障害が発生してもユーザがすべてのデータを失うことがないことである。さらに、複数のＳＳＰは、ユーザデータの全部または一部のコピーを有することができ、ユーザがどこにいるか、またはデータにアクセスするために使用されているデバイスとは無関係に、ユーザは効率的な方法でデータにアクセスすることができるようになる。例えば、ユーザは、移動中に自宅のコンピュータ及び携帯電話内の個人ファイルにアクセスすることができる。
【０１１８】
通信プロバイダ１０８０は、ユーザに接続性を提供する。通信プロバイダの１つの種類は、インターネットへのアクセスを提供するインターネットサービスプロバイダ（ＩＳＰ）である。ＩＳＰはダイヤルアップ、ＤＳＬ、ケーブルモデム、光ファイバ、無線、または専用の高速インターコネクトなどのインターネットプロトコルデータグラムの配信に適したデータ伝送技術を使用して顧客を接続する。通信プロバイダは、電子メール、インスタントメッセージング、及びＳＭＳテキストメッセージなどのメッセージングサービスも提供することができる。通信プロバイダの別の種類は、インターネットへの直接のバックボーンアクセスを提供することによって、帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ（ＮＳＰ）である。ネットワークサービスプロバイダは、電気通信会社、データ通信業者、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などで構成され得る。
【０１１９】
データ交換１０８８は、ＩＳＰ１０７０内のいくつかのモジュールを相互接続し、ネットワーク１０８６を介してこれらのモジュールをユーザ１０８２に接続する。データ交換１０８８は、ＩＳＰ１０７０のすべてのモジュールが近接している小さな領域をカバーすることができ、または異なるモジュールが地理的に分散している場合に大きな地理的領域をカバーすることができる。例えば、データ交換１０８８は、データセンターのキャビネット内に高速ギガビットイーサネット（登録商標）（またはより高速のもの）、または大陸間仮想エリアネットワーク（ＶＬＡＮ）を含むことができる。
【０１２０】
ユーザ１０８２は、少なくともＣＰＵ、メモリ、ディスプレイ及びＩ／Ｏを含む、クライアントデバイス１０８４を使用してリモートサービスにアクセスする。クライアントデバイスは、ＰＣ、携帯電話、ネットブック、タブレット、ゲームシステム、ＰＤＡなどとすることができる。一実施形態では、ＩＳＰ１０７０は、クライアントによって使用されるデバイスの種類を認識し、採用する通信方法を調整する。他の場合には、クライアントデバイスは、ＨＴＭＬなどの標準的な通信方法を使用して、ＩＳＰ１０７０にアクセスする。
【０１２１】
図９は、本発明の様々な実施形態による、ゲームシステム１４００のブロック図である。ゲームシステム１４００は、ネットワーク１４１５を介して１つまたは複数のクライアント１４１０にビデオストリームを提供するように構成される。ネットワークは、図１に示すネットワーク２００と同様である。ゲームシステム１４００は、通常、ビデオサーバシステム１４２０及びオプションのゲームサーバ１４２５を含む。ビデオサーバシステム１４２０は、最小限のサービス品質で１つまたは複数のクライアント１４１０にビデオストリームを提供するように構成される。例えば、ビデオサーバシステム１４２０は、ビデオゲーム内の状態または視点を変更するゲームコマンドを受信し、クライアント１４１０に、この変更を直ちに反映する更新されたビデオストリームを、最小遅延時間で提供し得る。ビデオサーバシステム１４２０は、まだ定義されていないフォーマットを含む、多種多様な代替ビデオフォーマットでビデオストリームを提供するように構成し得る。さらに、ビデオストリームは、多種多様なフレームレートでユーザに提示するように構成されたビデオフレームを含み得る。典型的なフレームレートは、毎秒３０フレーム、毎秒６０フレーム、及び毎秒１４２０フレームである。ただし、本発明の代替の実施形態には、より高いまたはより低いフレームレートが含まれる。
【０１２２】
本明細書で、１４１０Ａ、１４１０Ｂなどと個々に呼ばれるクライアント１４１０は、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話機、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、ハンドヘルドゲームプレイデバイス、及び／または同様のものを含み得る。説明されるクライアントは、図１のクライアント１００−１〜１００−ｎと同様である。典型的には、クライアント１４１０は、符号化されたビデオストリームを受信し、ビデオストリームを復号化し、得られたビデオをユーザ、例えば、ゲームのプレイヤーに提示するように構成される。符号化されたビデオストリームを受信し、及び／またはビデオストリームを復号化する処理は、通常、個々のビデオフレームをクライアントの受信バッファに格納することを含む。ビデオストリームは、クライアント１４１０に統合されたディスプレイ上またはモニタもしくはテレビなどの別個のデバイス上でユーザに提示され得る。クライアント１４１０は、任意選択で、複数のゲームプレイヤーをサポートするように構成される。例えば、ゲームコンソールは、２人、３人、４人またはそれ以上の同時プレイヤーをサポートするように構成され得る。これらのプレイヤーの各人は、別個のビデオストリームを受信し得るか、または単一のビデオストリームは、各プレイヤーに対して特別に生成された、例えば、各プレイヤーの視点に基づいて生成されたフレームの領域を含み得る。クライアント１４１０は、任意選択で地理的に分散される。ゲームシステム１４００に含まれるクライアントの数は、１つもしくは２つから数千、数万、またはそれ以上に大きく変動し得る。本明細書で使用する「ゲームプレイヤー」という用語は、ゲームをプレイする人を指すために使用され、「ゲームプレイデバイス」という用語は、ゲームをプレイするために使用されるデバイスを指すために使用される。いくつかの実施形態では、ゲームプレイデバイスは、協働してゲーム体験をユーザに提供する複数のコンピューティングデバイスを指し得る。例えば、ゲームコンソール及びＨＭＤは、ビデオサーバシステム１４２０と協働して、ＨＭＤを介して表示されるゲームを提供し得る。一実施形態では、ゲームコンソールは、ビデオサーバシステム１４２０からビデオストリームを受信し、ゲームコンソールは、ビデオストリームまたはビデオストリームを更新して、レンダリングのためにＨＭＤに転送する。
【０１２３】
クライアント１４１０は、ネットワーク１４１５（図１のネットワーク２００と同様）を介してビデオストリームを受信するように構成される。ネットワーク１４１５は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、プライベートネットワークなどを含む任意のタイプの通信ネットワークとし得る。典型的な実施形態では、ビデオストリームは、ＴＣＰ／ＩＰまたはＵＤＰ／ＩＰなどの標準プロトコルを介して通信される。あるいは、ビデオストリームは、独自の規格を介して通信される。
【０１２４】
クライアント１４１０の典型的な例は、プロセッサ、不揮発性メモリ、ディスプレイ、復号化ロジック、ネットワーク通信能力、及び入力デバイスを含むパーソナルコンピュータである。復号化ロジックは、ハードウェア、ファームウェア、及び／またはコンピュータ可読媒体に格納されたソフトウェアを含み得る。ビデオストリームを復号化（及び符号化）するためのシステムは、当該技術分野において周知であり、使用される特定の符号化方式に応じて異なる。
【０１２５】
クライアント１４１０は、必須ではないが、受信ビデオを修正するように構成されたシステムをさらに含み得る。例えば、クライアントは、さらなるレンダリングを実行する、１つのビデオ画像をもう１つのビデオ画像に重ねる、ビデオ画像をトリミングする、及び／または同様のことができるように構成し得る。例えば、クライアント１４１０は、Ｉフレーム、Ｐフレーム、及びＢフレームなどの様々なタイプのビデオフレームを受信し、これらのフレームをユーザに表示するための画像に処理するように構成し得る。いくつかの実施形態では、クライアント１４１０のメンバーは、ビデオストリームに対するさらなるレンダリング、シェーディング、三次元への変換、または同様の動作を実行するように構成される。クライアント１４１０のメンバーは、任意選択で、複数のオーディオまたはビデオストリームを受信するように構成される。クライアント１４１０の入力デバイスは、例えば、片手ゲームコントローラ、両手ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、フォースフィードバックデバイス、動き及び／または位置検知デバイス、マウス、タッチスクリーン、神経インターフェイス、カメラ、まだ開発されていない入力デバイス、及び／または同様のものを含み得る。
【０１２６】
クライアント１４１０によって受信されたビデオストリーム（及び任意選択でオーディオストリーム）は、ビデオサーバシステム１４２０によって生成され、提供される。本明細書の他の箇所でさらに説明するように、このビデオストリームはビデオフレームを含む（及びオーディオストリームはオーディオフレームを含む）。ビデオフレームは、ユーザに表示される画像に有意義に貢献する（例えば、それらは適切なデータ構造内にピクセル情報を含む）ように構成される。本明細書で使用する「ビデオフレーム」という用語は、ユーザに表示される画像に貢献する、例えば、効果を与えるように構成された情報を主に含むフレームを指すために使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、「オーディオフレーム」にも適用することができる。
【０１２７】
クライアント１４１０は、典型的には、ユーザからの入力を受信するように構成される。これらの入力は、ビデオゲームの状態を変化させるように、またはそれ以外の場合はゲームプレイに影響を与えるように構成されたゲームコマンドを含み得る。ゲームコマンドは、入力デバイスを使用して受信することができる、及び／またはクライアント１４１０上で実行する命令を計算することによって自動的に生成し得る。受信したゲームコマンドは、クライアント１４１０からネットワーク１４１５を介してビデオサーバシステム１４２０及び／またはゲームサーバ１４２５に通信される。例えば、いくつかの実施形態では、ゲームコマンドは、ビデオサーバシステム１４２０を介してゲームサーバ１４２５に通信される。いくつかの実施形態では、ゲームコマンドの別個のコピーが、クライアント１４１０からゲームサーバ１４２５及びビデオサーバシステム１４２０に通信される。ゲームコマンドの通信は、任意選択でコマンドのＩＤに依存する。ゲームコマンドは、オーディオまたはビデオストリームをクライアント１４１０Ａに提供するために使用されたものとは異なる経路または通信チャネルを介して、クライアント１４１０Ａから任意選択で通信される。
【０１２８】
ゲームサーバ１４２５は、任意選択で、ビデオサーバシステム１４２０とは異なるエンティティによって運営される。例えば、ゲームサーバ１４２５は、マルチプレイヤーゲームのパブリッシャーによって運営され得る。この例では、ビデオサーバシステム１４２０は、任意選択で、ゲームサーバ１４２５によってクライアントとして見なされ、任意選択で、ゲームサーバ１４２５の観点から、従来技術のゲームエンジンを実行する従来技術のクライアントに見えるように構成される。ビデオサーバシステム１４２０とゲームサーバ１４２５との間の通信は、任意選択で、ネットワーク１４１５を介して行われる。このように、ゲームサーバ１４２５は、ゲーム状態情報を複数のクライアントに送信する従来技術のマルチプレイヤーゲームサーバとすることができ、そのうちの１つがビデオサーバシステム１４２０である。ビデオサーバシステム１４２０は、同時にゲームサーバ１４２５の複数のインスタンスと通信するように構成し得る。例えば、ビデオサーバシステム１４２０は、異なるユーザに複数の異なるビデオゲームを提供するように構成することができる。これらの異なるビデオゲームの各々は、異なるゲームサーバ１４２５によってサポートされ得て、及び／または異なるエンティティによってパブリッシュされ得る。いくつかの実施形態では、ビデオサーバシステム１４２０の地理的に分散された複数のインスタンスは、複数の異なるユーザにゲームビデオを提供するように構成される。ビデオサーバシステム１４２０のこれらのインスタンスの各々は、ゲームサーバ１４２５の同じインスタンスと通信し得る。ビデオサーバシステム１４２０と１つまたは複数のゲームサーバ１４２５との間の通信は、任意選択で、専用の通信チャネルを介して行われる。例えば、ビデオサーバシステム１４２０は、これらの２つのシステム間の通信に専用の高帯域幅チャネルを介してゲームサーバ１４２５に接続され得る。
【０１２９】
ビデオサーバシステム１４２０は、少なくともビデオソース１４３０、Ｉ／Ｏデバイス１４４５、プロセッサ１４５０、及びストレージ１４５５（非一時的なアナログ及び／またはデジタルストレージデバイスを含む）を備える。ビデオサーバシステム１４２０は、１つのコンピューティングデバイスを含み得るか、または複数のコンピューティングデバイスに分散され得る。これらのコンピューティングデバイスは、任意選択で、ローカルエリアネットワークなどの通信システムを介して接続される。
【０１３０】
ビデオソース１４３０は、例えば、ストリーミングビデオまたは動画を形成する一連のビデオフレームなどのビデオストリームを提供するように構成される。いくつかの実施形態では、ビデオソース１４３０は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤーからゲームコマンドを受信し、受信したコマンドに基づいてビデオゲームの状態のコピーを維持するように構成される。このゲーム状態には、ゲーム環境内のオブジェクトの位置と、典型的には視点を含む。ゲーム状態はまた、オブジェクトの特性、画像、色及び／またはテクスチャを含み得る。
【０１３１】
ゲーム状態は、典型的には、ゲームルールと、移動、回転、攻撃、フォーカス設定、相互作用、使用及び／または同様のものなどのゲームコマンドに基づいて維持される。ゲームエンジンの一部は、任意選択で、ゲームサーバ１４２５内に配置される。ゲームサーバ１４２５は、地理的に分散したクライアントを使用する複数のプレイヤーから受信したゲームコマンドに基づいて、ゲームの状態のコピーを維持し得る。これらの場合、ゲーム状態は、ゲームサーバ１４２５によってビデオソース１４３０に提供され、ゲーム状態のコピーが格納され、レンダリングが実行される。ゲームサーバ１４２５は、ネットワーク１４１５を介してクライアント１４１０から直接ゲームコマンドを受信でき、及び／またはビデオサーバシステム１４２０を介してゲームコマンドを受信し得る。
【０１３２】
ビデオソース１４３０は、典型的には、レンダリングロジック、例えば、ハードウェア、ファームウェア、及び／またはストレージ１４５５などのコンピュータ可読媒体に格納されたソフトウェアなどを含む。このレンダリングロジックは、ゲーム状態に基づいてビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全部または一部は、任意選択で、グラフィックス処理ユニット（ＧＰＵ）内に配置される。
レンダリングロジックは、典型的には、ゲーム状態及び視点に基づいて、オブジェクト間の三次元空間関係を判定するように、及び／または適切なテクスチャなどを適用するように構成された処理ステージを含む。レンダリングロジックは生のビデオを生成し、通常、クライアント１４１０と通信する前に符号化される。例えば、生のビデオは、Ａｄｏｂｅ  Ｆｌａｓｈ（登録商標）規格、．ｗａｖ、Ｈ．２６４、Ｈ．２６３、Ｏｎ２、ＶＰ６、ＶＣ−１、ＷＭＡ、Ｈｕｆｆｙｕｖ、Ｌａｇａｒｉｔｈ、ＭＰＧ−ｘ．Ｘｖｉｄ．ＦＦｍｐｅｇ、ｘ２６４、ＶＰ６−８、リアルビデオ、ｍｐ３などに従って符号化し得る。
符号化処理は、リモートデバイス上のデコーダに提供するために、任意選択でパッケージ化されたビデオストリームを生成する。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。任意の他のフレームサイズを使用し得るが、典型的なフレームサイズには、８００×６００、１２８０×７２０（例えば、７２０ｐ）、１０２４×７６８がある。フレームレートは、１秒あたりのビデオフレームの数である。ビデオストリームは、異なるタイプのビデオフレームを含み得る。
例えば、Ｈ．２６４規格は、「Ｐ」フレーム及び「Ｉ」フレームを含む。Ｉフレームは、ディスプレイデバイス上のすべてのマクロブロック／画素をリフレッシュするための情報を含み、Ｐフレームは、そのサブセットをリフレッシュするための情報を含む。Ｐフレームは、典型的には、Ｉフレームよりもデータサイズが小さい。本明細書で使用する「フレームサイズ」という用語は、フレーム内の画素数を指すことを意味する。「フレームデータサイズ」という用語は、フレームを格納するために必要なバイト数を指すために使用される。
【０１３３】
他の実施形態は、ビデオソース１４３０は、カメラなどのビデオ記録デバイスを含む。このカメラは、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオを生成するために使用され得る。得られたビデオストリームは、任意選択で、レンダリングされた画像と、スチルカメラまたはビデオカメラを使用して記録された画像の両方を含む。ビデオソース１４３０はまた、ビデオストリームに含めるために以前に記録されたビデオを格納するように構成されたストレージデバイスを含み得る。ビデオソース１４３０はまた、オブジェクト、例えば、人物の動きまたは位置を検出するように構成された動きまたは位置検知デバイス、ならびに検出された動き及び／または位置に基づいてゲーム状態を判定、またはビデオを生成するように構成されたロジックを含み得る。
【０１３４】
ビデオソース１４３０は、任意選択で、他のビデオに配置されるように構成されたオーバーレイを提供するように構成される。例えば、これらのオーバーレイは、コマンドインターフェイス、ログイン指示、ゲームプレイヤーへのメッセージ、他のゲームプレイヤーの画像、他のゲームプレイヤーのビデオフィード（例えば、ウェブカメラビデオ）を含み得る。タッチスクリーンインターフェイスまたは視線検出インターフェイスを含むクライアント１４１０Ａの実施形態では、オーバーレイは、仮想キーボード、ジョイスティック、タッチパッド、及び／または同様のものを含み得る。オーバーレイの一例では、プレイヤーの音声がオーディオストリーム上に重ねられる。ビデオソース１４３０は、任意選択で、１つまたは複数のオーディオソースをさらに含む。
【０１３５】
ビデオサーバシステム１４２０が、複数のプレイヤーからの入力に基づいてゲーム状態を維持するように構成されている実施形態では、各プレイヤーは、視界の位置及び方向を含む異なる視点を有し得る。ビデオソース１４３０は、任意選択で、各プレイヤーに対して、彼らの視点に基づいて別個のビデオストリームを提供するように構成される。さらに、ビデオソース１４３０は、異なるフレームサイズ、フレームデータサイズ、及び／または符号化をクライアント１４１０のそれぞれに提供するように構成し得る。ビデオソース１４３０は、任意選択で、三次元ビデオを提供するように構成される。
【０１３６】
Ｉ／Ｏデバイス１４４５は、ビデオサーバシステム１４２０が、ビデオ、コマンド、情報要求、ゲーム状態、視線情報、デバイス動作、デバイス位置、ユーザ動作、クライアントＩＤ、プレイヤーＩＤ、ゲームコマンド、セキュリティ情報、オーディオ、及び／または同様のものなどの情報を送信及び／または受信するように構成される。Ｉ／Ｏデバイス１４４５は、典型的には、ネットワークカードまたはモデムなどの通信ハードウェアを含む。Ｉ／Ｏデバイス１４４５は、ゲームサーバ１４２５、ネットワーク１４１５、及び／またはクライアント１４１０と通信するように構成される。
【０１３７】
プロセッサ１４５０は、本明細書で論じられるビデオサーバシステム１４２０の様々な構成要素内に含まれるロジック、例えば、ソフトウェアを実行するように構成される。例えば、プロセッサ１４５０は、ビデオソース１４３０、ゲームサーバ１４２５、及び／またはクライアントクォリファイア１４６０の機能を実行するためにソフトウェア命令でプログラムされ得る。ビデオサーバシステム１４２０は、任意選択で、プロセッサ１４５０の複数のインスタンスを含む。プロセッサ１４５０はまた、ビデオサーバシステム１４２０によって受信されたコマンドを実行するため、または本明細書で論じられるゲームシステム１４００の様々な要素の動作を調整するために、ソフトウェア命令でプログラムされ得る。プロセッサ１４５０は、１つまたは複数のハードウェアデバイスを含み得る。プロセッサ１４５０は、電子プロセッサである。
【０１３８】
ストレージ１４５５は、非一時的なアナログ及び／またはデジタルストレージデバイスを含む。例えば、ストレージ１４５５は、ビデオフレームを格納するように構成されたアナログストレージデバイスを含み得る。ストレージ１４５５は、コンピュータ可読デジタルストレージ、例えば、ハードドライブ、光学ドライブ、またはソリッドステートストレージを含み得る。ストレージ１４５５は、ビデオフレーム、人工フレーム、ビデオフレームと人工フレームの両方を含むビデオストリーム、オーディオフレーム、オーディオストリーム、及び／または同様のものを格納するように（例えば、適切なデータ構造またはファイルシステムによって）構成される。ストレージ１４５５は、任意選択で、複数のデバイス間に分散される。いくつかの実施形態では、ストレージ１４５５は、本明細書の他の箇所で論じられるビデオソース１４３０のソフトウェア構成要素を格納するように構成される。これらの構成要素は、必要なときに供給する準備ができる形式で格納し得る。
【０１３９】
ビデオサーバシステム１４２０は、任意選択で、クライアントクォリファイア１４６０をさらに含む。クライアントクォリファイア１４６０は、クライアント１４１０Ａまたは１４１０Ｂなどのクライアントの能力を遠隔で判定するように構成される。これらの能力は、クライアント１４１０Ａ自体の能力と、クライアント１４１０Ａとビデオサーバシステム１４２０との間の１つまたは複数の通信チャネルの能力の両方を含むことができる。例えば、クライアントクォリファイア１４６０は、ネットワーク１４１５を介して通信チャネルをテストするように構成し得る。
【０１４０】
クライアントクォリファイア１４６０は、クライアント１４１０Ａの能力を手動または自動で判定（例えば、発見）することができる。手動判定は、クライアント１４１０Ａのユーザと通信し、ユーザに能力を提供するように依頼することを含む。例えば、いくつかの実施形態では、クライアントクォリファイア１４６０は、クライアント１４１０Ａのブラウザ内に画像、テキスト、及び／または同様のものを表示するように構成される。
一実施形態では、クライアント１４１０Ａは、ブラウザを含むＨＭＤである。別の実施形態では、クライアント１４１０Ａは、ブラウザを有するゲームコンソールであり、ＨＭＤ上に表示され得る。表示されたオブジェクトは、ユーザが、クライアント１４１０Ａのオペレーティングシステム、プロセッサ、ビデオデコーダタイプ、ネットワーク接続のタイプ、ディスプレイ解像度などの情報を入力することを要求する。ユーザによって入力された情報は、クライアントクォリファイア１４６０に返信される。
【０１４１】
自動判定は、例えば、クライアント１４１０Ａ上のエージェントの実行によって、及び／またはクライアント１４１０Ａへのテストビデオの送信によって行い得る。エージェントは、ウェブページに埋め込まれるか、またはアドオンとしてインストールされるＪａｖａ（登録商標）スクリプトなどのコンピューティング命令を含み得る。エージェントは、任意選択で、クライアントクォリファイア１４６０によって提供される。
様々な実施形態では、エージェントは、クライアント１４１０Ａの処理能力、クライアント１４１０Ａの符号化及び表示能力、クライアント１４１０Ａとビデオサーバシステム１４２０との間の通信チャネルの遅延時間の信頼性及び帯域幅、クライアント１４１０Ａのディスプレイタイプ、クライアント１４１０Ａ上に存在するファイアウォール、クライアント１４１０Ａのハードウェア、クライアント１４１０Ａ上で実行するソフトウェア、クライアント１４１０Ａ内のレジストリエントリ、及び／または同様のものを検出することができる。
【０１４２】
クライアントクォリファイア１４６０は、ハードウェア、ファームウェア、及び／またはコンピュータ可読媒体に格納されたソフトウェアを含む。クライアントクォリファイア１４６０は、任意選択で、ビデオサーバシステム１４２０の１つまたは複数の他の要素とは別個のコンピューティングデバイス上に配置される。例えば、いくつかの実施形態では、クライアントクォリファイア１４６０は、クライアント１４１０とビデオサーバシステム１４２０の複数のインスタンスとの間の通信チャネルの特性を判定するように構成される。これらの実施形態では、クライアントクォリファイアによって検出された情報を使用して、ビデオサーバシステム１４２０のどのインスタンスが、クライアント１４１０の１つにストリーミングビデオを配信するのに、最適なのかを判定することができる。
【０１４３】
上記の実施形態を念頭に置いて、本発明は、コンピュータシステムに格納されたデータを含む様々なコンピュータ実装の動作を使用し得ることを理解されたい。これらの動作は、物理量の物理的操作を必要とする動作を含む。本発明の一部を形成する本明細書に記載されているいずれの動作も有用な機械動作である。本発明はまた、これらの動作を実行するためのデバイスまたはデバイスに関する。装置は、必要とされる目的のために特別に構成することができ、または装置は、コンピュータに格納されたコンピュータプログラムによって選択的に起動または構成された汎用コンピュータとすることができる。具体的には、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用機械を使用することができ、または必要とされる動作を実行するより特殊化した装置を構築する方がより便利であり得る。
【０１４４】
上述の発明は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施し得る。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境でも実施し得る。
【０１４５】
本発明は、コンピュータ可読媒体上のコンピュータ可読プログラミングコードとして具体化することもできる。あるいは、コンピュータ可読プログラミングコードは、上述のデータ交換相互接続を使用してサーバからダウンロードされ得る。コンピュータ−可読媒体は、データを格納することができる任意のデータストレージデバイスであり、このデータは、その後、電磁搬送波を含むコンピュータシステムによって読み取ることができる。コンピュータ−可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、リードオンリメモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、ならびに他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体は、コンピュータ可読コードは分散方式で格納され、実行されるように、ネットワーク結合コンピュータシステム上に分散することもできる。
【０１４６】
前述の発明は、理解を明確にするために幾分詳細に説明してきたが、添付の特許請求の範囲内である種の変更及び修正を実施し得ることは明らかであろう。したがって、本実施形態は例示的であって限定的ではないと見なされるべきであり、本発明は本明細書に記載された詳細に限定されるものではなく、添付の特許請求の範囲及び均等物の範囲内で修正され得る。
【図１】
2019514536.tif 000003
【図２】
2019514536.tif 000004
【図３】
2019514536.tif 000005
【図４】
2019514536.tif 000006
【図５】
2019514536.tif 000007
【図６Ａ】
2019514536.tif 000008
【図６Ｂ】
2019514536.tif 000009
【図６Ｃ−１】
2019514536.tif 000010
【図６Ｃ−２】
2019514536.tif 000011
【図７】
2019514536.tif 000012
【図８】
2019514536.tif 000013
【図９】
2019514536.tif 000014
【国際調査報告】
2019514536.tif 000015
2019514536.tif 000016
2019514536.tif 000017