(57)【特許請求の範囲】
【請求項１】
中央サーバに接続された複数の描画サーバのうちの１つにクライアント機器から送信された画面提供要求に対応する画面のための描画処理を実行させる前記中央サーバと、前記描画処理のために必要なリソースデータを記憶すると共に前記複数の描画サーバがアクセスすることができるリポジトリ機器とを有する描画システムであって、
前記中央サーバは、
クライアント機器からの前記画面提供要求を受信する要求受信手段と、
前記要求受信手段によって受信された前記画面提供要求に基づいて、前記画面提供要求に対応する描画処理に必要なリソースデータを、前記リポジトリ機器へ送信するリソース送信手段と、
前記リポジトリ機器に記憶されている前記必要なリソースデータを識別する識別情報を含んだ描画命令を生成し、前記複数の描画サーバのうちの１つへ前記命令を送信する命令送信手段と、
を有し、
前記リポジトリ機器は、前記リソース送信手段によって送信された前記必要なリソースデータを、前記識別情報と関連付けて記憶する記憶手段を有し、
前記描画サーバは、
前記中央サーバから描画命令を受信する命令受信手段と、
受信した前記描画命令に含まれている前記識別情報によって識別される前記必要なリソースデータを、前記リポジトリ機器から受信して、メモリ内に当該データをロードするロード手段と、
受信した前記描画命令に基づいて、前記メモリにロードされた前記必要なリソースデータを用いて描画処理を実行し、前記画面提供要求に対応する画面を描画する描画手段と、
前記画面提供要求を送信したクライアント機器へ、描画した前記画面を送信する画面送信手段と、
を有し、
前記複数の描画サーバのうちの第１の描画サーバは、当該第１の描画サーバにおいて得られると共に前記画面の前記描画処理または送信に用いられるデータであって、前記必要なリソースデータと異なるデータを、前記リポジトリ機器へ送信するデータ送信手段を有し、
前記複数の描画サーバのうちの第２の描画サーバは、前記第１の描画サーバによって前記リポジトリ機器へ送信された、前記必要なリソースデータと異なる前記データを取得するデータ取得手段を有する、
描画システム。
【請求項２】
前記描画命令に含まれた前記識別情報によって識別される前記必要なデータの全体の前記メモリへのロードが完了していない場合は、前記ロード手段は、前記リポジトリ機器から前記必要なリソースデータの残りの部分を受信する、
請求項１に記載の描画システム。
【請求項３】
前記画面提供要求はゲームコンテンツの画面の提供の要求であり、
前記命令送信手段は、そのゲームの進行または状況が同様のクライアント機器から受信された前記画面提供要求に対応する前記描画命令を、前記複数の描画サーバの中で同一の描画サーバへ送信する、
請求項１又は２に記載の描画システム。
【請求項４】
前記命令送信手段は、前記描画処理において共通の必要なリソースデータを用いる前記描画命令を、前記複数の描画サーバの中で同一の描画サーバへ送信する、
請求項１から３のいずれか１項に記載の描画システム。
【請求項５】
前記必要なリソースデータと異なる前記データは、前記第１の描画サーバによって生成されたデータを含む、
請求項１から４のいずれか１項に記載の描画システム。
【請求項６】
前記必要なリソースデータは静的データであり、前記必要なリソースデータと異なる前記データは動的に変動するデータを含む、
請求項１から５のいずれか１項に記載の描画システム。
【請求項７】
前記第２の描画サーバは、前記第１の描画サーバが過負荷状態である場合に、前記必要なリソースデータと異なる前記データを取得する、
請求項１から６のいずれか１項に記載の描画システム。
【請求項８】
前記第２の描画サーバは、中央処理装置の使用率、グラフィックス処理装置の使用率、中央処理装置におけるメモリの使用率、グラフィックス処理装置におけるメモリの使用率、ハードディスクドライブの使用率、ネットワークの帯域使用率、電力使用率、又は前記描画サーバにおける発熱レベルの少なくとも１つの値を監視し、前記値が所定値より大きい場合に前記第１の描画サーバが過負荷状態にあると判定する判定手段をさらに有する、
請求項７に記載の描画システム。
【請求項９】
前記第１の描画サーバは、
中央処理装置の使用率、グラフィックス処理装置の使用率、中央処理装置におけるメモリの使用率、グラフィックス処理装置におけるメモリの使用率、ハードディスクドライブの使用率、ネットワークの帯域使用率、電力使用率、又は前記描画サーバにおける発熱レベルの少なくとも１つの値が所定値より大きい場合に、前記第１の描画サーバが過負荷状態にあると判定する判定手段と、
前記第１の描画サーバが過負荷状態にあると判定された場合に、前記第１の描画サーバが過負荷状態にあることを前記第２の描画サーバへと通知する通知手段と、
をさらに有する請求項７に記載の描画システム。
【請求項１０】
前記第２の描画サーバは、前記第１の描画サーバの少なくとも一部が機能しなくなっている場合に、前記必要なリソースデータと異なる前記データを取得する、
請求項１から６のいずれか１項に記載の描画システム。
【請求項１１】
前記第２の描画サーバは、前記第１の描画サーバが正常に動作しているか否かを監視する監視手段をさらに有する、
請求項１０に記載の描画システム。
【請求項１２】
前記第１の描画サーバは、前記第１の描画サーバの動作状態を示す通知信号を前記第２の描画サーバへ周期的に送信する通知手段をさらに有し、
前記第２の描画サーバは、前記通知信号が所定期間の間に受信されなかった場合又は前記通知信号が前記第１の描画サーバが正常に動作していないことを示す場合に、前記第１の描画サーバの少なくとも一部が機能しなくなっていると判定する判定手段を有する、
請求項１０に記載の描画システム。
【請求項１３】
前記第２の描画サーバは、前記必要なリソースデータと異なる前記データを周期的に取得する、
請求項１から６のいずれか１項に記載の描画システム。
【請求項１４】
前記第２の描画サーバが前記中央サーバまたは前記第１の描画サーバから前記識別情報を取得し、前記リポジトリ機器から当該識別情報によって識別される前記必要なリソースデータを受信して、前記必要なリソースデータをメモリにロードした後に、前記第２の描画サーバは、前記必要なリソースデータと異なる前記データを取得する、
請求項１から１３のいずれか１項に記載の描画システム。
【請求項１５】
中央サーバに接続された複数の描画サーバのうちの１つにクライアント機器から送信された画面提供要求に対応する画面のための描画処理を実行させる前記中央サーバと、前記描画処理のために必要なリソースデータを記憶すると共に前記複数の描画サーバがアクセスすることができるリポジトリ機器とを有する描画システムの制御方法であって、
前記中央サーバが、クライアント機器からの前記画面提供要求を受信し、
前記中央サーバが、受信された前記画面提供要求に基づいて、前記画面提供要求に対応する描画処理に必要なリソースデータを、前記リポジトリ機器へ送信し、
前記リポジトリ機器が、前記中央サーバによって送信された前記必要なリソースデータを、前記必要なリソースデータを識別する識別情報と関連付けて記憶し、
前記中央サーバが、前記識別情報を含んだ描画命令を生成し、前記複数の描画サーバのうちの１つへ当該命令を送信し、
前記描画サーバが、前記中央サーバから描画命令を受信し、
前記描画サーバが、受信した前記描画命令に含まれている前記識別情報によって識別される前記必要なリソースデータを、前記リポジトリ機器から受信して、メモリ内に当該データをロードし、
前記描画サーバが、受信した前記描画命令に基づいて、前記メモリにロードされた前記必要なリソースデータを用いて描画処理を実行して、前記画面提供要求に対応する画面を描画し、
前記描画サーバが、前記画面提供要求を送信したクライアント機器へ、描画した前記画面を送信する、
ステップを含んだ制御方法であって、
前記複数の描画サーバのうちの第１の描画サーバが、当該第１の描画サーバにおいて得られると共に前記画面の前記描画処理または送信に用いられるデータであって、前記必要なリソースデータと異なるデータを、前記リポジトリ機器へ送信し、
前記複数の描画サーバのうちの第２の描画サーバが、前記第１の描画サーバによって前記リポジトリ機器へ送信された、前記必要なリソースデータと異なる前記データを取得する、
制御方法。
【請求項１６】
１つ以上のコンピュータを、請求項１から１４のいずれか１項に記載の描画システムの少なくとも１つの手段として機能させるためのプログラムを記憶したコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、描画システム、その描画システムの制御方法、及び記憶媒体に関する。
【背景技術】
【０００２】
近年、クラウドゲーミングシステムが提案されてきている。クラウドゲーミングシステムによれば、電子機器（クライアント）が十分な描画能力を有していなくても、ユーザはその機器を用いることにより、任意のゲームを体験することができる。クラウドゲーミングシステムでは、ゲームのための処理がサーバで実行され、電子機器などのクライアント機器は、ネットワークを介してそのゲームに対する操作入力をサーバへ送信することにより、そのサーバから、ストリーミング形式での映像データとして、操作入力が反映されたゲーム画面を受信することができる。クラウドゲーミングシステムに関して、複数のクライアント機器に対応するゲーム画面の生成は並行して行われ、したがって同時計算能力が要求され、そのため、負荷分散を行うために、物理的に分離されている、ゲームのための基礎的な計算を実行するサーバ（ＣＰＵサーバ）とＧＰＵを用いた描画処理によってゲーム画面を生成するサーバ（ＧＰＵサーバ）との間で役割が切り離される構成を検討することができる。複数のＧＰＵサーバがＣＰＵサーバに接続するように構成されてもよく、そのような場合、ＣＰＵサーバは、ＧＰＵサーバのうちの１つに対して、接続状態にあるクライアント機器へ提供すべきゲーム画面の生成を割り当て、そのＧＰＵサーバに対して描画命令を送信しうる。
【０００３】
なお、複数のＧＰＵサーバが存在する場合、ＧＰＵサーバのすべてにおける描画処理のために用いられる描画オブジェクトデータ（リソースデータ）を記憶しておくことは、データを変更する必要性が生じた場合にデータを更新するのに必要な労力、各ＧＰＵサーバにリソースデータのすべてを保存しておくことができるストレージを用意するために生じるコスト等を考えると、現実的ではない。したがって、ＣＰＵサーバは、描画命令と描画処理に用いられるリソースデータとを送信しなければならない。この点では、リソースデータを受信したクライアントが描画処理を行う点を除いて、Ｗｅｂゲームと同様である。また、家庭用ビデオゲームコンソール、ＰＣ、モバイル機器等のための、過去に公開されたゲームを実行可能なクラウドゲーミングシステムを実装する場合、そのゲームのためのソースコードとリソースデータのすべてを受信してサーバ上で動作するアプリケーションへコンパイルするのではなく、そのゲームのディスクイメージデータ又はバイナリデータを家庭用ビデオゲームコンソールのエミュレーション環境において実行する形式が用いられる。このような場合、エミュレーション環境においてゲームを実行することにより、ゲーム機器でのロード処理のエミュレーションの結果として、ディスクイメージデータ又はバイナリデータから必要なリソースデータを取得することができる。
【０００４】
換言すれば、過去に公開されたＰＣ、家庭用ビデオゲームコンソール等をクラウドゲーミングシステムに適合させる場合、ＣＰＵサーバ上でのゲームの実行のための処理の中間でのみリソースデータを取得することができるため、外部のＧＰＵサーバに描画させる場合、そのリソースデータを送信する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特に１つのＣＰＵサーバに複数のＧＰＵサーバが接続されるように構成されるシステムの場合、リソースデータが複数のＧＰＵサーバのそれぞれに並列して送信される状況が生じうるため、そのようなタイミングにおいて通信帯域幅の資料量が物理的な限界量を超える可能性がある。このような場合、リソースデータのＧＰＵサーバへの送信に遅延が生じ、結果として、クライアント機器におけるゲーム画面の提供に遅延が生じ、そのゲームにおけるユーザの興が削がれ、又は、ゲームそのものが機能しなくなる可能性がある。一方、クラウドゲーミングシステムの実施形態においては、システムは、所定の種類のゲームを提供することができるように構成されるだろうことが予想される。換言すれば、クライアント機器を用いるユーザは、彼又は彼女の機器をサーバへ接続し、事前に用意されたゲームから彼又は彼女がプレイすることを望むゲームを選択することにより、ＣＰＵサーバ上でゲームの実行を開始することができる。これにより、そのシステムにおいては、複数のクライアント機器に同一のゲームのためのゲーム画面が提供される可能性があるため、同じリソースデータが異なるクライアント機器に提供されるゲーム画面の描画処理に用いられる可能性がある。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、中央サーバに接続された複数の描画サーバのうちの１つにクライアント機器から送信された画面提供要求に対応する画面のための描画処理を実行させる前記中央サーバと、前記描画処理のために必要なリソースデータを記憶すると共に前記複数の描画サーバがアクセスすることができるリポジトリ機器とを有する描画システムであって、前記中央サーバは、クライアント機器からの前記画面提供要求を受信する要求受信手段と、前記要求受信手段によって受信された前記画面提供要求に基づいて、前記画面提供要求に対応する描画処理に必要なリソースデータを、前記リポジトリ機器へ送信するリソース送信手段と、前記リポジトリ機器に記憶されている前記必要なリソースデータを識別する識別情報を含んだ描画命令を生成し、前記複数の描画サーバのうちの１つへ前記命令を送信する命令送信手段と、を有し、前記リポジトリ機器は、前記リソース送信手段によって送信された前記必要なリソースデータを、前記識別情報と関連付けて記憶する記憶手段を有し、前記描画サーバは、前記中央サーバから描画命令を受信する命令受信手段と、受信した前記描画命令に含まれる前記識別情報によって識別される前記必要なリソースデータを、前記リポジトリ機器から受信して、メモリ内に当該データをロードするロード手段と、受信した前記描画命令に基づいて、前記メモリにロードされた前記必要なリソースデータを用いて描画処理を実行し、前記画面提供要求に対応する画面を描画する描画手段と、前記画面提供要求を送信したクライアント機器へ、描画した前記画面を送信する画面送信手段と、を有し、前記複数の描画サーバのうちの第１の描画サーバは、当該第１の描画サーバにおいて得られると共に前記画面の前記描画処理または送信に用いられるデータであって、前記必要なリソースデータと異なるデータを、前記リポジトリ機器へ送信するデータ送信手段を有し、前記複数の描画サーバのうちの第２の描画サーバは、前記第１の描画サーバによって前記リポジトリ機器へ送信された、前記必要なリソースデータと異なる前記データを取得するデータ取得手段を有する、描画システムが提供される。
【０００７】
本発明の別の態様によれば、中央サーバに接続された複数の描画サーバのうちの１つにクライアント機器から送信された画面提供要求に対応する画面のための描画処理を実行させる前記中央サーバと、前記描画処理のために必要なリソースデータを記憶すると共に前記複数の描画サーバがアクセスすることができるリポジトリ機器とを有する描画システムの制御方法であって、前記中央サーバが、クライアント機器からの前記画面提供要求を受信し、前記中央サーバが、受信された前記画面提供要求に基づいて、前記画面提供要求に対応する描画処理に必要なリソースデータを、前記リポジトリ機器へ送信し、前記リポジトリ機器が、前記中央サーバによって送信された前記必要なリソースデータを、前記必要なリソースデータを識別する識別情報と関連付けて記憶し、前記中央サーバが、前記識別情報を含んだ描画命令を生成し、前記複数の描画サーバのうちの１つへ当該命令を送信し、前記描画サーバが、前記中央サーバから描画命令を受信し、前記描画サーバが、受信した前記描画命令に含まれている前記識別情報によって識別される前記必要なリソースデータを、前記リポジトリ機器から受信して、メモリ内に当該データをロードし、前記描画サーバが、受信した前記描画命令に基づいて、前記メモリにロードされた前記必要なリソースデータを用いて描画処理を実行して、前記画面提供要求に対応する画面を描画し、前記描画サーバが、前記画面提供要求を送信したクライアント機器へ、描画した前記画面を送信する、ステップを含んだ制御方法であって、前記複数の描画サーバのうちの第１の描画サーバが、当該第１の描画サーバにおいて得られると共に前記画面の前記描画処理または送信に用いられるデータであって、前記必要なリソースデータと異なるデータを、前記リポジトリ機器へ送信し、前記複数の描画サーバのうちの第２の描画サーバが、前記第１の描画サーバによって前記リポジトリ機器へ送信された、前記必要なリソースデータと異なる前記データを取得する、制御方法が提供される。
【０００８】
ここで、本発明の、これらの、そして他の態様、特徴は、添付の図面と合わせて本発明の以下の説明を検討することにより、当業者に明らかになるだろう。
【図面の簡単な説明】
【０００９】
【図１Ａ】本発明の非限定的な実施形態に係る、サーバシステムを含むクラウド型ビデオゲームシステムアーキテクチャのブロック図。
【図１Ｂ】本発明の非限定的な実施形態に係る、ゲームプレイの間のデータネットワークを介した一連のクライアント機器とのインタラクションを示した、図１Ａのクラウド型ビデオゲームシステムアーキテクチャのブロック図。
【図２Ａ】本発明の非限定的な実施形態に係る、図１Ａ及び図１Ｂのアーキテクチャの様々な物理的構成要素を示したブロック図。
【図２Ｂ】図２Ａの変形例を示す図。
【図２Ｃ】図２Ａ及び図２Ｂの物理的構成要素により実現され得ると共にゲームプレイの間に動作可能でありうる、図１Ａ及び図１Ｂのアーキテクチャにおけるサーバシステムの様々なモジュールを示したブロック図。
【図３Ａ】、
【図３Ｂ】、
【図３Ｃ】本発明の非限定的な実施形態に係る、描画命令生成部によって実行される一連のビデオゲーム処理の実行を示したフローチャート。
【図４Ａ】、
【図４Ｂ】本発明の非限定的な実施形態に係る、受信した映像及び音声の各々を処理するためのクライアント機器の動作を示したフローチャート。
【図５】本発明の一態様による、例示の描画システムを示す図。
【図６】本発明の一態様による、描画システムにおいて実行される例示の処理のシーケンス図。
【図７】本発明の別の態様による、例示の描画システムを示す図。
【図８】本発明の非限定的な実施形態に係る、クライアント機器を示す図。
【発明を実施するための形態】
【００１０】
説明及び図面は本発明のある実施形態の説明のためだけのものであり理解を助けるためのものであることが明確に理解されるべきである。それらは、本発明の限界を定めることが意図されたものではない。
【００１１】
Ｉ．クラウド型システムのアーキテクチャ
図１Ａは、本発明の非限定的な実施形態に係るクラウド型システムのアーキテクチャを概略的に示している。本アーキテクチャは、インターネット１３０等のデータネットワークを介してサーバシステム１００等の情報処理装置に接続された、クライアント機器１２０n（１≦ｎ≦Ｎであり、Ｎはビデオゲームに参加しているユーザの数を表す。）を含みうる。Ｎ（クラウド型システムアーキテクチャにおけるクライアント機器の数）は特に限定されないことが理解されるべきである。
【００１２】
サーバシステム１００は、クライアント機器の複数のユーザが同時に参加することが可能な仮想空間を提供する。いくつかの場合、この仮想空間は、ビデオゲームを表現してもよく、他の場合には、通信を補助し、又は通信に対するユーザ体験を改善するためのツールとして用いられる仮想的なエフェクトを提供しうる。各ユーザは、その空間内で、その空間内に位置する対応するアバターを操作し、動かすことができる。ユーザが仮想空間内でアバターを操作すると、そのユーザのクライアント機器に、その空間において設定された視点に対する画面が提供される。その視点は、予め設定された固定視点のなかから選択されてもよいし、ユーザによって選択的に変更可能であってもよいし、ユーザによるアバターでの動作（回転）の操作に従って変更されるものであってもよい。
【００１３】
クライアント機器１２０n（１≦ｎ≦Ｎ）の構成は具体的には限定されない。いくつかの実施形態では、１つ以上のクライアント機器１２０n（１≦ｎ≦Ｎ）は、パーソナルコンピュータ（ＰＣ）、ホームゲーム機（コンソール）、ポータブルゲーム機、スマートテレビ、セットトップボックス（ＳＴＢ）などによって具現化されうる。他の実施形態では、１つ以上のクライアント機器１２０n（１≦ｎ≦Ｎ）は、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）又はタブレットなどの、通信又は計算機器でありうる。
【００１４】
図８に、本発明の非限定的な実施形態による、クライアント機器１２０n（１≦ｎ≦Ｎ）の一般的構成を示す。クライアントＣＰＵ８０１は、クライアント機器１２０n（１≦ｎ≦Ｎ）に備えられるブロック／モジュールの動作を制御しうる。クライアントＣＰＵ８０１は、クライアント記憶媒体８０２に記憶されたブロックのための動作プログラムを読み出して、クライアントＲＡＭ８０３に展開し、それらを実行することにより、ブロックの動作を制御しうる。クライアント記憶媒体８０２は、ＨＤＤ、不揮発性ＲＯＭなどでありうる。また、動作プログラムは、専用のアプリケーション、ブラウジングアプリケーションなどでありうる。クライアントＲＡＭ８０３は、プログラムの展開領域であることに加えて、ブロックのいずれかの動作における中間データ出力などのようなものを一時的に記憶する記憶領域としても使用されうる。
【００１５】
クライアント通信部８０４は、クライアント機器１２０nに備えられた通信インタフェースでありうる。ある実施形態では、クライアント通信部８０４は、インターネット１３０を介して、情報処理装置（サーバシステム１００）から提供されるサービスの符号化された画面データを受信しうる。また、反対方向の通信において、クライアント通信部８０４は、クライアント機器１２０nのユーザによってなされた動作入力に関する情報を、インターネット１３０を介して、情報処理装置（サーバシステム１００）へ送信しうる。クライアント復号部８０５は、クライアント通信部８０４によって受信された、符号化された画像データを復号し、画面データを生成しうる。生成された画面データは、クライアントディスプレイ８０６に出力されて表示されることにより、クライアント機器１２０nのユーザに提示される。なお、クライアント機器はクライアントディスプレイ８０６を有している必要はなく、クライアントディスプレイ８０６はクライアント機器に接続される外部表示装置であってもよい。
【００１６】
クライアント入力部８０７は、クライアント機器１２０nに備えられたユーザインタフェースでありうる。クライアント入力部８０７は、（タッチスクリーン、キーボード、ゲームコントローラ、ジョイスティックなどのような）入力機器を含み、ユーザによる動作入力を検出しうる。検出された動作入力に対して、集約されたデータが、クライアント通信部８０４を介して、サーバシステム１００へ送信されてもよく、特定の動作入力が動作内容を解析した後に実行されたことを示す情報として送信されてもよい。また、クライアント入力部８０７は、カメラなどを含みうる、特定のオブジェクトの動き又はユーザによってなされた体の動きを動作入力として検出する他のセンサ（例えばKinect（商標））を含んでもよい。さらに、クライアント機器１２０nは、音声を出力するためのスピーカを含んでもよい。
【００１７】
ここで図１Ａに戻り、クライアント機器１２０n（１≦ｎ≦Ｎ）の各々は、各々のローカルアクセスネットワーク（不図示）を介することを含む、あらゆる好適な方式でインターネット１３０に接続しうる。また、サーバシステム１００は、ローカルアクセスネットワーク（不図示）を介してインターネット１３０に接続してもよいが、サーバシステム１００はローカルアクセスネットワークの媒介なく、インターネット１３０と直接接続してもよい。クラウドゲーミングサーバシステム１００と１以上のクライアント機器１２０n（１≦ｎ≦Ｎ）との間の接続は、１つ以上のチャネルを含んでいてもよい。これらのチャネルは、物理的及び／または論理的リンクによって構成されていてもよく、無線周波数、光ファイバ、光空間（free-space optical）、同軸ケーブル、及びツイストペアを含む様々な物理的媒体を伝搬してもよい。チャネルは、ＵＤＰやＴＣＰ／ＩＰのようなプロトコルに従ってもよい。また、１つ以上のチャネルが、仮想プライベートネットワーク（ＶＰＮ）でサポートされていてもよい。いくつかの実施形態では、１つ以上の接続はセッションベースでなされてもよい。
【００１８】
サーバシステム１００は、クライアント機器１２０n（１≦ｎ≦Ｎ）のユーザが、ビデオゲームを個々に（即ち、シングルプレイヤ用ビデオゲーム）または集団で（即ち、マルチプレイヤ用ビデオゲーム）プレイすることが可能としうる。また、サーバシステム１００は、クライアント機器１２０n（１≦ｎ≦Ｎ）のユーザが、他のユーザによってプレイされているゲームを観戦する（ゲームに観戦者として参加する）ことを可能とし得る。ビデオゲームの非限定的な例は、レジャー、教育及び／またはスポーツについてプレイされるゲームを含みうる。しかし、ビデオゲームは貨幣損益の可能性をユーザに提示する必要はない。
【００１９】
また、サーバシステム１００は、クライアント機器１２０n（１≦ｎ≦Ｎ）のユーザが、ビデオゲームのテストと、サーバシステム１００の管理との少なくともいずれかを行うことを可能とし得る。
【００２０】
サーバシステム１００は、場合によっては１つ以上のゲームサーバを含む１つ以上の計算リソースを含んでもよく、場合によってはユーザ（参加者）データベース１０を含む１つ以上のデータベースを含み、又はデータベースにアクセスしてもよい。ユーザデータベース１０は、識別データ、財務データ、位置データ、人口動態データ、接続データなどのような、様々なユーザ及びクライアント機器１２０n（１≦ｎ≦Ｎ）についていのアカウント情報を記憶しうる。ゲームサーバは、共通のハードウェアによって具現化されてもよいし、通信リンクを介して、場合によってはインターネット１３０を介することを含んで、接続される異なるサーバであってもよい。同様に、データベースは、サーバシステム１００内に統合されてもよいし、通信リンクを介して、場合によってはインターネット１３０を介して、そこに接続されてもよい。
【００２１】
サーバシステム１００は、ゲームプレイの前などのゲーム環境外でのクライアント機器１２０n（１≦ｎ≦Ｎ）とのインタラクションを処理するための管理アプリケーションを実行しうる。例えば、管理アプリケーションは、クライアント機器１２０n（１≦ｎ≦Ｎ）の１つのユーザを、（「プレイヤ」「観戦者」、「管理者」又は「試験者」などの）ユーザクラスに登録し、インターネットを介してユーザの接続性を追跡し、いくつかの非限定的な機能のうち、ゲームのインスタンスの開始、参加、退出、又は終了を行うためのユーザの命令に応答するように構成されうる。この目的を達成するために、管理アプリケーションは、ユーザデータベース１０にアクセスする必要がありうる。
【００２２】
いくつかの非限定的な可能性を挙げると、管理アプリケーションは、「プレイヤ」「観戦者」、「管理者」又は「試験者」を含みうる異なるユーザクラスのユーザと別に相互作用しうる。したがって、例えば、管理アプリケーションは、プレイヤ（すなわち、「プレイヤ」ユーザクラスにおけるユーザ）がユーザデータベース１０においてアカウントを設定し、プレイするビデオゲームを選択することを可能とするように、そのプレイヤとインタフェースを取りうる。この選択に従って、管理アプリケーションは、サーバ側のビデオゲームアプリケーションを起動しうる。サーバ側のビデオゲームアプリケーションは、プレイヤがビデオゲームの仮想世界の中でキャラクタ、アバター、レーシングカー、コクピットなどを制御することを可能とする、プレイヤのためのモジュールのセットを実行するコンピュータ可読命令によって定義されうる。マルチプレイヤ用ビデオゲームの場合、仮想世界は、２人以上のプレイヤによって共有されてもよく、１人のプレイヤのゲームプレイは、他のゲームプレイに影響を与えうる。別の例では、管理アプリケーションは、観戦者（すなわち、「観戦者」ユーザクラスのユーザ）がユーザデータベース１０においてアカウントを設定し、ユーザが観戦することを望みうる実行中のビデオゲームのリストからビデオゲームを選択することを可能とするように、その観戦者とインタフェースを取りうる。この選択に従って、管理アプリケーションは、その観戦者が他のユーザのゲームプレイを観戦することはできるが、ゲーム内のアクティブキャラクタを制御することはできないようにする、その観戦者のためのモジュールのセットを起動しうる。（特段の表示がない限り、用語「ユーザ」が用いられる場合は、「プレイヤ」ユーザクラスと「観戦者」ユーザクラスとの両方に等しく適用することが意図されている）。
【００２３】
さらなる例では、管理アプリケーションは、管理者（すなわち、「管理者」ユーザクラスのユーザ）が、ゲームサーバアプリケーションの様々な特徴を変更し、更新を実行し、プレイヤ／観戦者アカウントを管理することを可能とするように、その管理者とインタフェースを取りうる。
【００２４】
またさらなる例では、ゲームサーバアプリケーションは、試験者（すなわち、「試験者」ユーザクラスのユーザ）が、テスト対象のビデオゲームを選択することを可能とするために、その試験者とインタフェースを取りうる。この選択に従って、ゲームサーバアプリケーションは、試験者がビデオゲームをテストすることを可能とする、試験者のためのモジュールのセットを起動しうる。
【００２５】
図１Ｂは、「プレイヤ」又は「観戦者」ユーザクラスのユーザのために、ゲームプレイの間にクライアント機器１２０n（１≦ｎ≦Ｎ）とサーバシステム１００との間で行われるインタラクションを示している。
【００２６】
いくつかの非限定的な実施形態では、サーバ側のビデオゲームアプリケーションは、クライアント機器１２０n（１≦ｎ≦Ｎ）などのクライアント機器で実行するコンピュータ可読命令のセットによって定義されうる、クライアント側のビデオゲームアプリケーションと協働しうる。クライアント側のビデオゲームアプリケーションの使用は、ユーザがゲームをプレイし又は観戦し、ゲームの特徴にアクセスするための、カスタム化されたインタフェースを与えうる。他の非限定的な実施形態では、クライアント機器は、クライアント機器によって直接実行可能なクライアント側のビデオゲームアプリケーションを特徴とはしない。むしろ、クライアント機器の観点からは、インタフェースとしてウェブブラウザを用いうる。ウェブブラウザは、サーバ側のビデオゲームアプリケーションとのインタラクションを最適化するために、それ自身、それ自身のソフトウェア環境内でクライアント側のビデオゲームアプリケーションのインスタンスを作成しうる
所与のクライアント機器において（独立して、又はブラウザ内で）作動しているクライアント側のビデオゲームアプリケーションは、受け取ったユーザ入力と、検出したユーザ動作とを、インターネット１３０を介してクラウドゲーミングサーバシステム１００へ送信されうる「クライアント機器入力」に変換しうる。
【００２７】
図１Ｂの図示されている実施形態では、クライアント機器１２０n（１≦ｎ≦Ｎ）は、それぞれ、クライアント機器入力１４０n（１≦ｎ≦Ｎ）を生成しうる。サーバシステム１００は、様々なクライアント機器１２０n（１≦ｎ≦Ｎ）から受信したクライアント機器入力１４０n（１≦ｎ≦Ｎ）を処理し、その様々なクライアント機器１２０n（１≦ｎ≦Ｎ）のための「メディア出力」１５０n（１≦ｎ≦Ｎ）を生成しうる。メディア出力１５０n（１≦ｎ≦Ｎ）は、符号化された（画面に表示されるときの画像を表す）映像データ及び（スピーカを介して再生されるときの音を表す）音声を含みうる。メディア出力１５０n（１≦ｎ≦Ｎ）は、パケットの形でインターネット１３０を介して送信されうる。クライアント機器１２０n（１≦ｎ≦Ｎ）の特定の１つに向けられたパケットは、インターネット１３０を介してその装置にルーティングされるような方法でアドレスされうる。クライアント機器１２０n（１≦ｎ≦Ｎ）の各々は、クラウドゲーミングサーバシステム１００から受信したパケット内のメディア出力をバッファして処理するための回路、画像を表示するためのディスプレイ、及び音声を出力するための振動子（例えばスピーカ）を含みうる。また、動作を誘導するための電気機械システム等の追加の出力装置が提供されてもよい。
【００２８】
映像データのストリームは「フレーム」に分割されうることが理解されるべきである。ここで使用される用語「フレーム」は、映像データのフレーム間及びその映像データによって表される画像間の１対１の対応関係の存在を必要としない。すなわち、映像データのフレームが、個別の表示画像を表すデータを全部含むことができる一方で、映像データのフレームは、ある画像の一部のみを表すデータを含むことができ、その画像を適切に再生して表示するために２つ以上のフレームを必要とすることも可能である。同様に、映像データのフレームは、Ｍ＜Ｎであるときに、Ｍ個のフレームを用いてＮ個の画像を表し得るように、１つより多くの完全な画像を表すデータを含んでもよい。
【００２９】
ＩＩ．クラウドゲーミングサーバシステム１００（分散型アーキテクチャ）
図２Ａは、クラウドゲーミングサーバシステム１００の構成要素の、１つのとり得る非限定的な物理的構成を示している。本実施形態では、クラウドゲーミングサーバシステム１００の個々のサーバが、専用の機能を実行するよう構成されうる。例えば、計算サーバ２００Ｃは、ユーザ入力に基づいてビデオゲーム内の状態変化の追跡についての役割を担いうる一方で、描画サーバ２００Ｒは、グラフィック（映像データ）の描画についての役割を担いうる。
【００３０】
クライアント機器１２０n（１≦ｎ≦Ｎ）のユーザは、プレイヤまたは観戦者でありうる。いくつかのケースでは１人のプレイヤと観戦者なしであってもよく、一方で別のケースでは複数のプレイヤと１人の観戦者が存在してもよく、さらに別のケースでは１人のプレイヤと複数の観戦者があってもよく、さらなる他のケースでは複数のプレイヤと複数の観戦者が存在してもよいことが理解されるべきである。
【００３１】
簡単のため、以下の説明では単一の描画サーバ２００Ｒに単一の計算サーバ２００Ｃが接続されているものとする。しかしながら、同一の計算サーバ２００Ｃに接続された１つより多くの描画サーバ２００Ｒ、または、同一の描画サーバ２００Ｒに接続された１つより多くの計算サーバ２００Ｃがあってもよいことが理解されるべきである。複数の描画サーバ２００Ｒが存在する場合、これらは、あらゆる適切な地理的領域に分散されうる。
【００３２】
図２Ａの構成要素の非限定的な物理的構成に示されるように、計算サーバ２００Ｃは、１つ以上の中央演算装置（ＣＰＵ）２２０Ｃ、２２２Ｃ及びランダムアクセスメモリ（ＲＡＭ）２３０Ｃを有しうる。ＣＰＵ２２０Ｃ、２２２Ｃは、例えば通信バスアーキテクチャを介してＲＡＭ２３０Ｃにアクセス可能である。２つのＣＰＵ２２０Ｃ、２２２Ｃのみが示されているが、計算サーバ２００Ｃのいくつかの実装例では、より多数のＣＰＵまたは単一のＣＰＵのみが提供されてもよいことが理解されるべきである。また、計算サーバ２００Ｃは、ビデオゲームに参加しているクライアント機器の各々から、インターネット１３０を介してクライアント機器入力を受信するための受信器を有する。ここで説明される例示の実施形態では、クライアント機器１２０n（１≦ｎ≦Ｎ）は、ビデオゲームに参加しているものとし、従って、受信されるクライアント機器入力には、クライアント機器入力１４０n（１≦ｎ≦Ｎ）が含まれうる。非限定的な実施形態において、受信器は、ネットワークインタフェース要素（ＮＩＣ）２１０Ｃ２でありうる。
【００３３】
計算サーバ２００Ｃは、さらに、描画命令２０４mのセットを出力する送信器を有しうる。ここで、１≦ｍ≦Ｍである。計算サーバ２００Ｃから出力される描画命令２０４m（１≦ｍ≦Ｍ）のセットは、描画サーバ２００Ｒへ送信されうる。非限定的な実施形態において、送信器は、ネットワークインタフェース要素（ＮＩＣ）２１０Ｃ１によって具現化されうる。ある実施形態では、計算サーバ２００Ｃは、描画サーバ２００Ｒに、直接、接続されうる。他の実施形態では、計算サーバ２００Ｃは、インターネット１３０又は他のネットワークでありうるネットワーク２６０を介して、描画サーバ２００Ｒに接続されうる。仮想プライベートネットワーク（ＶＰＮ）が、ネットワーク２６０を介して計算サーバ２００Ｃと描画サーバ２００Ｒとの間に確立されてもよい。
【００３４】
描画サーバ２００Ｒにおいて、計算サーバ２００Ｃにより送信された描画命令２０４m（１≦ｍ≦Ｍ）のセットは、（ネットワークインタフェース要素（ＮＩＣ）２１０Ｒ１によって実装されうる）受信器において受信されてもよく、１つ以上のＣＰＵ２２０Ｒ、２２２Ｒに導かれうる。ＣＰＵ２２０Ｒ、２２２Ｒは、グラフィック処理装置（ＧＰＵ）２４０Ｒ、２５０Ｒに接続されうる。非限定的な例として、ＧＰＵ２４０Ｒは、ＧＰＵコア２４２Ｒのセット及びビデオランダムアクセスメモリ（ＶＲＡＭ）２４６Ｒを含んでもよい。同様に、ＧＰＵ２５０ＲはＧＰＵコア２５２Ｒのセット及びビデオランダムアクセスメモリ（ＶＲＡＭ）２５６Ｒを含んでもよい。ＣＰＵ２２０Ｒ、２２２Ｒの各々は、ＧＰＵ２４０Ｒ、２５０Ｒの各々に接続されていてもよいし、ＧＰＵ２４０Ｒ、２５０Ｒのサブセットに接続されていてもよい。ＣＰＵ２２０Ｒ、２２２ＲとＧＰＵ２４０Ｒ、２５０Ｒとの間の通信は、例えば通信バスアーキテクチャを用いて確立されうる。２つのＣＰＵ及び２つのＧＰＵのみが示されるが、描画サーバ２００Ｒの実装の特定の例においては、描画サーバ２００Ｒの特定の実装例では、２つより多くのＣＰＵ及びＧＰＵがあってもよいし、単一のＣＰＵまたはＧＰＵだけがあってもよい。
【００３５】
ＣＰＵ２２０Ｒ、２２２Ｒは、描画命令２０４m（１≦ｍ≦Ｍ）のセットを、、グラフィック出力ストリーム２０６n（１≦ｎ≦Ｎ）に変換するために、ＧＰＵ２４０Ｒ、２５０Ｒと協働しうる。。ここで、１≦ｎ≦Ｎであり、Ｎはビデオゲームに参加しているユーザ（又はクライアント機器）の数を表す。具体的には、クライアント機器１２０n（１≦ｎ≦Ｎ）のそれぞれについての、Ｎ個のグラフィック出力ストリーム２０６n（１≦ｎ≦Ｎ）がありうる。このことのさらなる詳細については後述する。描画サーバ２００Ｒは、さらに、（ネットワークインタフェース要素（ＮＩＣ）２１０Ｒ２によって実装されうる）送信器を有してもよく、この送信器を介してグラフィック出力ストリーム２０６n（１≦ｎ≦Ｎ）がそれぞれクライアント機器１２０n（１≦ｎ≦Ｎ）に送信されうる。
【００３６】
ＩＩＩ．クラウドゲーミングサーバシステム１００（ハイブリッドアーキテクチャ）
図２Ｂは、クラウドゲーミングサーバシステム１００の構成要素の、第２のとり得る非限定的な物理的構成を示している。本実施形態では、ハイブリッドサーバ２００Ｈが、ユーザ入力に基づくビデオゲーム内の状態変化の追跡と、グラフィック（映像データ）の描画と、の両方の役割を担いうる。
【００３７】
図２Ｂの構成要素の非限定的な物理的構成に示されるように、ハイブリッドサーバ２００Ｈは、１つ以上の中央演算装置（ＣＰＵ）２２０Ｈ、２２２Ｈ及びランダムアクセスメモリ（ＲＡＭ）２３０Ｈを有しうる。ＣＰＵ２２０Ｈ、２２２Ｈは、例えば通信バスアーキテクチャを介してＲＡＭ２３０Ｈにアクセスしうる。２つのＣＰＵ２２０Ｈ、２２２Ｈのみが示されているが、ハイブリッドサーバ２００Ｈのいくつかの実装例において、より多数のＣＰＵまたは単一のＣＰＵのみが提供されてもよいことが理解されるべきである。またハイブリッドサーバ２００Ｈは、ビデオゲームに参加するクライアント機器の各々からインターネット１３０を介して受け取られるクライアント機器入力を受信するための受信器を有しうる。ここで説明される例示の実施形態では、クライアント機器１２０n（１≦ｎ≦Ｎ）は、ビデオゲームに参加しているものとし、したがって、受信されるクライアント機器入力は、クライアント機器入力１４０n（１≦ｎ≦Ｎ）を含んでもよい。非限定的な実施形態において、受信器は、ネットワークインタフェース要素（ＮＩＣ）２１０Ｈによって実装されうる。
【００３８】
また、ＣＰＵ２２０Ｈ、２２２Ｈは、描画処理装置（ＧＰＵ）２４０Ｈ、２５０Ｈに接続されうる。非限定的な例では、ＧＰＵ２４０Ｈは、ＧＰＵコア２４２のセット及びビデオランダムアクセスメモリ（ＶＲＡＭ）２４６Ｈを含んでいてもよい。同様に、ＧＰＵ２５０Ｈは、ＧＰＵコア２５２Ｈのセット及びビデオランダムアクセスメモリ（ＶＲＡＭ）２５６Ｈを含んでいてもよい。ＣＰＵ２２０Ｈ、２２２Ｈの各々は、ＧＰＵ２４０Ｈ、２５０Ｈの各々またはＧＰＵ２４０Ｈ、２５０Ｈのサブセットに接続されうる。ＣＰＵ２２０Ｈ、２２２ＨとＧＰＵ２４０Ｈ、２５０Ｈとの通信は、例えば通信バスアーキテクチャを用いて確立されうる。２つのＣＰＵと２つのＧＰＵのみが示されているが、ハイブリッドサーバ２００Ｈの特定の実装例では、２つより多くのＣＰＵがあってもよいし、単一のＣＰＵまたはＧＰＵのみがあってもよい。
【００３９】
描画命令２０４m（１≦ｍ≦Ｍ）のセットを、グラフィック出力ストリーム２０６n（１≦ｎ≦Ｎ）に変換するために、ＣＰＵ２２０Ｈ、２２２ＨはＧＰＵ２４０Ｈ、２５０Ｈと協働しうる。具体的には、それぞれ、参加しているクライアント機器１２０n（１≦ｎ≦Ｎ）のための、Ｎ個のグラフィック出力ストリーム２０６n（１≦ｎ≦Ｎ）が存在しうる。グラフィック出力ストリーム２０６n（１≦ｎ≦Ｎ）は、非限定的な実施形態においてＮＩＣ２１０Ｈによって少なくとも部分的に実装されうる送信器を介して、クライアント機器１２０n（１≦ｎ≦Ｎ）に送信されうる。
【００４０】
ＩＶ．クラウドゲーミングサーバシステム１００（機能概要）
ゲームプレイの間、サーバシステム１００は、一連のモジュールから成り得る、サーバ側のビデオゲームアプリケーションを実行する。図２Ｃを参照すると、これらのモジュールには、描画命令生成部２７０、描画部２８０、及び、映像符号化器２８５が含まれうる。これらのモジュールは、上述した計算サーバ２００Ｃと描画サーバ２００Ｒ（図２Ａ）及び／またはハイブリッドサーバ２００Ｈ（図２Ｂ）の物理的構成要素によって実装されうる。例えば、図２Ａの非限定的な実施形態によれば、描画命令生成部２７０は計算サーバ２００Ｃにより実現されてもよく、描画部２８０及び映像符号化器２８５は描画サーバ２００Ｒにより実現されうる。図２Ｂの非限定的な実施形態によれば、ハイブリッドサーバ２００Ｈは描画命令生成部２７０、描画部２８０、及び映像符号化器２８５を実現しうる。
【００４１】
本例示の実施形態は、図を簡略化するために単一の描画命令生成部２７０について議論する。しかしながら、クラウドゲーミングサーバシステム１００の実際の実装において、描画命令生成部２７０と同様の多くの描画命令生成部が平行して実行されうることが留意されるべきである。したがって、クラウドゲーミングサーバシステム１００は、同一のビデオゲームの複数の独立したインスタンス化または複数の異なるビデオゲームの同時のインスタンス化をサポートしうる。また、ビデオゲームは、あらゆる種類の１人プレイヤ用ビデオゲームまたはマルチプレイヤ用ゲームであってもよいことが理解されるべきである。
【００４２】
描画命令生成部２７０は、（図２Ａの）計算サーバ２００Ｃまたは（図２Ｂの）ハイブリッドサーバ２００Ｈの、所定の物理的構成要素により実現されてもよい。具体的には、描画命令生成部２７０は、（計算サーバ２００ＣのＣＰＵ２２０Ｃ、２２２Ｃやハイブリッドサーバ２００ＨのＣＰＵ２２０Ｈ、２２２Ｈのような）ＣＰＵにより実行可能なコンピュータ読み取り可能な命令として符号化されうる。本命令は、（計算サーバ２００Ｃの）ＲＡＭ２３０Ｃ若しくは（ハイブリッドサーバ２００Ｈの）ＲＡＭ２３０Ｈ、又は他の記憶領域に、描画命令生成部２７０により使用される定数、変数及び／または他のデータとともに、明白に（tangibly）格納されうる。いくつかの実施形態において、描画命令生成部２７０は、（計算サーバ２００ＣのＣＰＵ２２０Ｃ、２２２Ｃやハイブリッドサーバ２００ＨのＣＰＵ２２０Ｈ、２２２Ｈのような）ＣＰＵにより実行されているオペレーティングシステムがサポートしうる、バーチャルマシンの環境内で実行されてもよい。
【００４３】
描画部２８０は、（図２Ａの）描画サーバ２００Ｒまたは（図２Ｂの）ハイブリッドサーバ２００Ｈの、所定の物理的構成要素により実現されてもよい。ある実施形態では、描画部２８０は、１つ以上のＧＰＵ（図２Ａの２４０Ｒ、２５０Ｒ、図２Ｂの２４０Ｈ、２５０Ｈ）を擁してもよいし、ＣＰＵリソースを利用してもよいし利用しなくてもよい。
【００４４】
映像符号化器２８５は、（図２Ａの）描画サーバ２００Ｒまたは（図２Ｂの）ハイブリッドサーバ２００Ｈの所定の物理的構成要素により実現されうる。本技術分野に属する当業者は、映像符号化器２８５を実現する種々の手法があることを容易に理解するだろう。図２Ａの実施形態において、映像符号化器２８５は、ＣＰＵ２２０Ｒ、２２２Ｒ及び／またはＧＰＵ２４０Ｒ、２５０Ｒにより実現されうる。図２Ｂの実施形態では、映像符号化器２８５は、ＣＰＵ２２０Ｈ、２２２Ｈ及び／またはＧＰＵ２４０Ｈ、２５０Ｈにより実現されうる。その他の実施形態では、映像符号化器２８５は、分離された符号化チップ（不図示）により実現されてもよい。
【００４５】
動作において、描画命令生成部２７０は、受信したクライアント機器入力１４０n（１≦ｎ≦Ｎ）に基づいて描画命令２０４m（１≦ｍ≦Ｍ）のセットを生成しうる。受信されるクライアント機器入力は、その行き先となる描画命令生成部２７０を識別するデータ（例えばアドレス）と、その送信元であるユーザ及び／またはクライアント機器を識別するデータとの少なくともいずれかを運びうる。
【００４６】
描画命令は、映像データの１つのフレームまたは一連の映像データのフレーム群を生成するように、専用の描画処理装置（ＧＰＵ）に指示をするために用いられうる命令を示す。図２Ｃを参照すると、描画命令２０４m（１≦ｍ≦Ｍ）のセットは、描画部２８０による映像データのフレームの生成をもたらしている。これらのフレームによって表される画像は、描画命令生成部２７０にプログラムされた、クライアント機器入力１４０n（１≦ｎ≦Ｎ）に応じた機能として変化しうる。例えば、描画命令生成部２７０は、所定の特定の要因に応答して、ユーザに（将来のインタラクションが異なる、より挑戦的とさせる、またはより刺激的とさせる）進行体験を提供するような方法でプログラムされてもよく、一方で、他の特定の要因への応答は、回帰や終了の体験をユーザに与えるだろう。描画命令生成部２７０への指示はバイナリ実行可能なファイルの形式で固定されてもよいが、クライアント機器入力１４０n（１≦ｎ≦Ｎ）は、対応するクライアント機器１２０n（１≦ｎ≦Ｎ）を使用するプレイヤのインタラクション動作があるまで不明である。結果として、提供される特定のクライアント機器入力に応じて、様々な種類の生じ得る結果が存在してもよい。プレイヤ／観戦者と描画命令生成部２７０との間のクライアント機器１２０n（１≦ｎ≦Ｎ）を介したこのインタラクションは、「ゲームプレイ」や「ビデオゲームをプレイしている」等として言及されうる。
【００４７】
描画部２８０は、複数の映像データストリーム２０５n（１≦ｎ≦Ｎ、ここでＮはビデオゲームに参加しているユーザ／クライアント機器の数を参照する。）を生成するために複数の描画命令２０４m（１≦ｍ≦Ｍ）のセットを処理しうる。したがって、一般的に、ユーザごとに（または、同等には、クライアント機器ごとに）生成された、１つの映像データストリームが存在しうる。描画が実行されている際に、３次元空間（例えば物理オブジェクト）または２次元空間（例えばテキスト）において表される１つ以上のオブジェクトについてのデータは、特定のＧＰＵ２４０Ｒ、２５０Ｒ、２４０Ｈ、２５０Ｈのキャッシュメモリ（不図示）に展開されうる。このデータは、ＧＰＵ２４０Ｒ、２５０Ｒ、２４０Ｈ、２５０Ｈにより、適切なＶＲＡＭ２４６Ｒ、２５６Ｒ、２４６Ｈ、２５６Ｈに格納されうる２次元画像に変換されうる。このようにして、ＶＲＡＭ２４６Ｒ、２５６Ｒ、２４６Ｈ、２５６Ｈは、ゲーム画面についての画素（ピクセル）値の一時的な格納領域を提供しうる。
【００４８】
映像符号化器２８５は、映像データストリーム２０５n（１≦ｎ≦Ｎ）の各々に含まれる映像データを、対応する圧縮された／符号化された映像データのストリームに圧縮及び符号化しうる。グラフィック出力ストリームとして言及される、圧縮された／符号化された映像データの結果であるストリームは、クライアント機器基準で生成されうる。本例示の実施形態では、映像符号化器２８５は、クライアント機器１２０n（１≦ｎ≦Ｎ）のそれぞれについてのグラフィック出力ストリーム２０６n（１≦ｎ≦Ｎ）を生成しうる。追加のモジュールが、インターネット１３０を介して送信可能となるように、映像データをパケット形式にするために提供されてもよい。映像データストリーム２０５n（１≦ｎ≦Ｎ）内の映像データ及び所与のグラフィック出力ストリーム内の圧縮された／符号化された映像データが、フレームに分割されうる。
【００４９】
Ｖ．描画命令の生成
以下、描画命令生成部２７０による描画命令の生成について、図２Ｃ、３Ａ及び３Ｂを参照してより詳細に説明する。具体的には、描画命令生成部２７０の実行は、以下に詳細が説明されるメインゲームプロセス３００Ａとグラフィック制御プロセス３００Ｂとを含むいくつかのプロセスを伴う。
【００５０】
メインゲームプロセス
メインゲームプロセス３００Ａについて、図３Ａを参照して説明する。メインゲームプロセス３００Ａは、連続するループとして、繰り返し実行されうる。メインゲームプロセス３００Ａの一部として、その実行中にクライアント機器入力が受信されうる、動作３１０Ａが提供されうる。ビデオゲームが観戦の可能性がない１人プレイヤ用ビデオゲームである場合、単一のクライアント機器（例えばクライアント機器１２０1）からのクライアント機器入力（例えばクライアント機器入力１４０1）が動作３１０Ａの一部として受信される。ビデオゲームがマルチプレイヤ用ビデオゲームまたは観戦の可能性がある１人プレイヤ用ゲームである場合、１つ以上のクライアント機器からのクライアント機器入力が、動作３１０Ａの一部として受信されうる。
【００５１】
非限定的な例示の目的で、所与のクライアント機器からの入力は、その所与のクライアント機器のユーザが、制御下にあるキャラクタに対して移動、ジャンプ、キック、旋回、揺動、引く、つかむ等をさせることを所望していることを伝送しうる。代替的あるいは追加的に、その所与のクライアント機器からの入力は、１つ以上の音声、映像またはゲームプレイ設定を変更する、ゲームをロード／セーブする、またはネットワークセッションの作成やセッションへの参加を行うために、その所与のクライアント装置のユーザによりなされたメニュー選択を伝送しうる。代替的あるいは追加的に、その所与のクライアント機器からの入力は、その所与のクライアント機器のユーザが特定のカメラ視野（例えば１人称または３人称）の選択、または仮想世界内の視野の再配置を所望していることを伝送しうる。
【００５２】
動作３２０Ａで、ゲームステートは、動作３１０Ａにおいて受信したクライアント機器入力の少なくとも一部及び他のパラメータに基づいて更新されうる。ゲームステートの更新は、次の動作を伴いうる：
第１に、ゲームステートの更新は、そこからクライアント機器入力が受信されうるクライアント機器に関連付けられたユーザ（プレイヤまたは観戦者）の所定の特性（property）を更新することを伴いうる。これらの特性は、ユーザデータベース１０に格納されうる。ユーザデータベース１０に保持されて動作３２０において更新されうるユーザ特性は、例として、カメラ視野の選択（例えば１人称、３人称）、プレイモード、選択された音声または映像の設定、スキルレベル、顧客グレード（例えばゲスト、プレミアム等）を含みうる。
【００５３】
第２に、ゲームステートの更新は、クライアント機器入力の解釈に基づいて、仮想世界内の所定のオブジェクトの属性を更新することを伴いうる。属性が更新されるオブジェクトは、いくつかのケースでは２次元または３次元モデルにより表されてもよいし、プレイキャラクタ、非プレイキャラクタ及び他のオブジェクトを含みうる。プレイヤキャラクタである場合、更新されうる属性はオブジェクトの位置、強さ、武器／防具、経過した寿命、特殊能力、速さ／方向（速度）、アニメーション、視覚的効果、エネルギ、弾薬等を含みうる。他のオブジェクト（背景、植物、建物、乗り物、スコアボード等）である場合、更新されうる属性は、そのオブジェクトの位置、速度、アニメーション、ダメージ／体力、視覚的効果、テキスト内容等を含みうる。
【００５４】
クライアント機器入力とは別のパラメータは、上述した（ユーザの）特性及び（仮想世界オブジェクトの）属性に影響を与えうることが理解されるべきである。例えば、様々なタイマ（経過時間、特定のイベントからの時間、一日の仮想時刻、プレイヤ総数、ユーザの地理的位置等）が、ゲームステートの様々な態様に影響を及ぼしてもよい。
【００５５】
動作３２０Ａの実行に加えてゲームステートが更新されると、メインゲームプロセス３００Ａは動作３１０Ａに戻ってもよく、それに応じて、前回のメインゲームプロセスを終了してから受信した新たなクライアント機器入力が収集され、処理される。
【００５６】
グラフィック制御プロセス
以下、グラフィック制御プロセスとして言及される第２のプロセスについて、図３Ｂを参照して説明する。グラフィック制御プロセス３００Ｂは、メインゲームプロセス３００Ａと分離して示されているが、メインゲームプロセス３００Ａの延長として実行されうる。グラフィック制御プロセス３００Ｂは繰り返し実行されてもよく、結果として、描画命令２０４m（１≦ｍ≦Ｍ）のセットが生成される。観戦の可能性がない１人プレイヤ用ビデオゲームの場合、１人のユーザのみが存在し（すなわち、Ｎ＝１）、したがって、生成されるべき結果の描画命令２０４1のセットは１つのみ（すなわち、Ｍ＝１）である。他の場合では、Ｎ（ユーザの数）は１より大きい。例えば、マルチプレイヤ用ビデオゲームの場合、複数のプレイヤについて複数の（Ｍ＞１）独立した描画命令のセットが生成されることが必要であり、従って、複数のサブプロセスが、それぞれが各プレイヤのために、並行して実行されうる。一方で、観戦の可能性がある１人プレイヤ用ゲームの場合（この場合も、複数ユーザであり、従ってＮ＞１である）、描画命令２０４の単一のセット２０４1（Ｍ＝１）のみが存在しうると共に、結果の映像データストリームは、描画部２８０により観戦者のために複製されうる。もちろん、これらは単なる実装の例であり、限定として取られるべきものではない。
【００５７】
映像データストリーム２０５n（１≦ｎ≦Ｎ）のうちの１つを要求する所与のユーザのためのグラフィック制御プロセス３００Ｂの動作について検討する。動作３１０Ｂにおいて、描画命令生成部２７０は、その所与のユーザについて描画されるオブジェクトを決定しうる。この動作は、以下の種類のオブジェクトを識別することを含みうる。第１に、この動作は、仮想世界から所与のユーザについての「ゲーム画面描画範囲」（「シーン」としても知られる）内にある、これらのオブジェクトを識別することを含みうる。ゲーム画面描画範囲は、所与のユーザのカメラの視点から「観ることが可能」な、仮想世界の部分を含みうる。これは、仮想世界内のオブジェクトに関連するカメラの位置及び方向に依存しうる。動作３１０Ｂの非限定的な実装例において、錐台が仮想世界に適用され得、その錐台内のオブジェクトが保持またはマークされる。錐台は、所与のユーザのカメラの位置に置かれた頂点を有し、そのカメラの方向性により規定される方向を有しうる。
【００５８】
第２に、この動作は、仮想世界内に現れないが、それにも関わらず所与のユーザについて描画される必要がありうる追加のオブジェクトを識別することを含みうる。例えば、これらの追加のオブジェクトは、非限定的な２〜３の可能性を挙げると、テキストメッセージ、グラフィック警告及びダッシュボードインジケータを含んでもよい。
【００５９】
動作３２０Ｂで、描画命令生成部２７０は、動作３１０Ｂにおいて識別されたオブジェクトを、画像（映像データ）に描画するための命令２０４m（１≦ｍ≦Ｍ）のセットを生成する。描画は、視野及び適用される照明状態に従って、１つのオブジェクトまたはオブジェクト群の３次元または２次元座標の、表示可能な画像への変換を参照してもよい。これは、例えばここに参照により組み込まれる「"Computer Graphics and Geometric Modelling: Implementation & Algorithms", Max K. Agoston, Springer-Verlag London Limited, 2005」に記載されるような、任意の数の様々なアルゴリズム及び技術を用いて達成されうる。描画命令は、限定なく、Microsoft Corporation, Redmond, WAからの「Direct3D」及びKhronos Group, Beaverton, ORによって管理されている「OpenGL」などの、３Ｄのアプリケーションプログラミングインタフェース（ＡＰＩ）に適合する形式を有しうる。
【００６０】
動作３３０Ｂで、動作３２０Ｂにおいて生成された描画命令は、描画部２８０に出力されうる。これは、描画部２８０に送信する描画命令２０４m（１≦ｍ≦Ｍ）のセットへの、生成された描画命令のパケット化を伴いうる。
【００６１】
ＶＩ．グラフィック出力の生成
描画部２８０は、描画命令２０４m（１≦ｍ≦Ｍ）のセットを解釈し、それぞれがＮ個の参加しているクライアント機器１２０n（１≦ｎ≦Ｎ）のそれぞれのための、複数の映像データストリーム２０５を生成しうる。描画は、（図２Ａの）ＣＰＵ２２０Ｒ、２２２Ｒまたは（図２Ｂの）ＣＰＵ２２０Ｈ、２２２Ｈの制御の下、ＧＰＵ２４０Ｒ、２５０Ｒ、２４０Ｈ、２５０Ｈにより実現されうる。１つの参加しているクライアント機器のための映像データのフレームが生成されるレートは、フレームレートとして参照されうる。
【００６２】
Ｎ名のユーザが存在する実施形態において、Ｎ個の映像データストリーム２０５n（１≦ｎ≦Ｎ）が、描画命令２０４m（１≦ｍ≦Ｍ、ここでＭ＝Ｎ）のセットのそれぞれから生成されうる。この場合、描画機能はユーザ間で共有されない。しかしながら、より少ない数の描画命令のセットが描画部２８０により処理される必要があることとなるように、Ｍ個の描画命令２０４m（１≦ｍ≦Ｍ、ここでＭはＮより小さい）のセットからＮ個の映像データストリーム２０５n（１≦ｎ≦Ｎ）が生成されてもよい。その場合、より少ない数の描画命令２０４m（１≦ｍ≦Ｍ、ここでＭ＜Ｎ）のセットから、より多い数の映像データストリーム２０５n（１≦ｎ≦Ｎ）を生成するために、描画部２８０は共有または複製を行ってもよい。このような共有または複製は、複数のユーザ（例えば観戦者）が同一のカメラ画角を観ることを所望した場合に普及するものであってもよい。このように、描画部２８０は、生成された映像データストリームを１つ以上の観戦者に複製するなどの機能を実行してもよい。
【００６３】
次に、映像データストリーム２０５n（１≦ｎ≦Ｎ）の各々における映像データは、映像符号化器２８５により符号化され、グラフィック出力ストリームとして参照され、各クライアント機器に関連付けられた一連の符号化映像データが得られる。図２Ａ〜２Ｃの実施形態の例において、クライアント機器１２０n（１≦ｎ≦Ｎ）のそれぞれに宛てられた一連の符号化映像データは「グラフィック出力ストリーム」２０６n（１≦ｎ≦Ｎ）として参照される。
【００６４】
映像符号化器２８５は、デジタル映像についての映像圧縮または展開アルゴリズムを起動する、実行する、または定義する装置（またはコンピュータ読み取り可能な命令のセット）であり得る。映像圧縮は、（画素位置、色値等で表現される）デジタル画像データのオリジナルストリームを、より少ないビットを用いるが実質的に同一の情報を伝送するデジタル画像データの出力ストリームに変換しうる。あらゆる適切な圧縮アルゴリズムが用いられうる。データ圧縮に加え、映像データの特定のフレームの符号化に用いられる符号化処理は、暗号法の暗号化を含んでもよいし、しなくともよい。
【００６５】
上述の手法で生成されたグラフィック出力ストリーム２０６n（１≦ｎ≦Ｎ）は、インターネット１３０を介して各クライアント機器に送信されうる。非限定的な例として、グラフィック出力ストリームは、各々がヘッダ及びペイロードを有する複数のパケットに、分割され、またはフォーマットされてもよい。所与のユーザについての映像データを含むパケットのヘッダは、その所与のユーザに関連付けられたクライアント機器のネットワークアドレスを含んでもよく、ペイロードは全部または一部として映像データを含んでもよい。非限定的な実施形態において、所定の映像データを符号化するために用いられる圧縮アルゴリズムのアイデンティティ及び／またはバージョンが、その映像データを伝送する１つ以上のパケットのコンテンツ内に符号化されてもよい。符号化映像データの他の送信手法は、本技術分野に属する当業者には思い当たるだろう。
【００６６】
本開示は個々の２Ｄ画像を表す映像データの描画に着目するものであるが、本発明は３Ｄ効果を生成するために、フレームごとに複数の２Ｄ画像を表す映像データを描画することの可能性を除外するものではない。
【００６７】
ＶＩＩ．クライアント機器におけるゲーム画面再生
以下、非限定的な例示の目的で、クライアント機器１２０n（１≦ｎ≦Ｎ）のいずれかであり得る、所与のユーザに関連付けられたクライアント機器によって実行されうるクライアント側のビデオゲームアプリケーションの動作を示す図４Ａを参照する。動作において、いくつかの非限定的な可能性を挙げると、クライアント側ビデオゲームアプリケーションは、クライアント機器によって直接実行可能であってもよいし、ウェブブラウザ内で動作してもよい。
【００６８】
動作４１０Ａで、（グラフィック出力ストリーム２６０n（１≦ｎ≦Ｎ）のうちの）グラフィック出力ストリームは、実施形態に応じて、描画サーバ２００Ｒ（図２Ａ）から、またはハイブリッドサーバ２００Ｈ（図２Ｂ）から、インターネット１３０を介して受信されうる。受信されたグラフィック出力ストリームは、複数のフレームに分割されうる、映像データの圧縮／符号化されたフレームを含みうる。
【００６９】
動作４２０Ａで、圧縮／符号化された映像データのフレームは、符号化／圧縮処理に用いられた符号化／圧縮アルゴリズムを補間する復号化／展開アルゴリズムに従って、復号／展開される。非限定的な実施形態において、映像データの符号化／圧縮に用いられた符号化／圧縮アルゴリズムのアイデンティティまたはバージョンは、予め知らされていてもよい。他の実施形態では、映像データの符号化に用いられた符号化／圧縮アルゴリズムのアイデンティティまたはバージョンは、その映像データそのものを伴ってもよい。
【００７０】
動作４３０Ａで、（復号／展開された）映像データのフレームが処理されうる。これは、バッファへの復号／展開された映像データのフレームの配置、誤り訂正の実行、複数の連続するフレームの順序付け及び／または合成、アルファブレンディング、欠損したデータ部分の補間等を含みうる。その結果は、フレームごとにユーザに提示されるべき最終画像を表す映像データとなり得る。
【００７１】
動作４４０Ａで、最終画像がクライアント機器の出力機構を介して出力されうる。例えば、コンポジット映像フレームが、クライアント機器のディスプレイに表示されうる。
【００７２】
ＶＩＩＩ．音声生成
以下、音声生成処理として言及される３番目の処理について、図３Ｃを参照して説明する。音声生成処理は、知覚可能な音声ストリームを要求する各ユーザについて、断続的に実行しうる。一実施形態において、音声生成処理はグラフィック制御プロセス３００Ｂと無関係に実行されうる。他の実施形態において、音声生成処理及びグラフィック制御処理の実行が協調されうる。
【００７３】
動作３１０Ｃで、描画命令生成部２７０は、生成すべき音声を決定しうる。具体的には、本動作は、音量（音の強さ）及び／または仮想世界内においてユーザへの近さに応じて、地形音響特性に影響を及ぼす仮想世界内のオブジェクトに関連付けられた音声を特定することを含みうる。
【００７４】
動作３２０Ｃで、描画命令生成部２７０は音声セグメントを生成しうる。音声セグメントの継続期間は映像フレームの継続期間に及んでもよいし、いくつかの実施形態では音声セグメントは映像フレームよりも少ない頻度で生成されてもよいし、他の実施形態では音声セグメントは映像フレームよりも高い頻度で生成されてもよい。
【００７５】
動作３３０Ｃで、音声セグメントは例えば音声符号化器により符号化されてもよく、その結果、符号化音声セグメントが得られる。音声符号化器は、音声圧縮または展開アルゴリズムを起動し、実行し、または定義する装置（または指示のセット）でありうる。音声圧縮は、（時間の経過によって振幅及び位相が変化する音波として表現される）デジタル音声のオリジナルストリームを、より少ないビットを使用するが実質的に同一の情報を伝送するデジタル音声データの出力ストリームに変換しうる。あらゆる適切な圧縮アルゴリズムが用いられうる。音声圧縮に加え、特定の音声セグメントの符号化に用いられる符号化処理は暗号法の暗号化を適用してもよいし、しなくてもよい。
【００７６】
いくつかの実施形態において、音声セグメントは計算サーバ２００Ｃ（図２Ａ）またはハイブリッドサーバ２００Ｈ（図２Ｂ）のいずれかの専用ハードウェア（例えばサウンドカード）により生成されてもよいことが理解されるべきである。図２Ａの分散型構成に適用可能でありうる代替的実施形態では、音声セグメントは描画命令生成部２７０によりスピーチパラメータ（例えばＬＰＣパラメータ）にパラメータ化されてもよく、スピーチパラメータは描画サーバ２００Ｒにより、配信先のクライアント機器に再配信されうる。
【００７７】
上述した方式で生成された符号化された音声は、インターネット１３０を介して送信される。非限定的な例において、符号化された音声入力は、各々がヘッダ及びペイロードを有するパケットに分解及びフォーマットされうる。ヘッダは、ユーザのために音声生成処理が実行されているときのその参加者に関連付けられたクライアント機器のアドレスを伝送してもよく、ペイロードは符号化された音声を含んでいてもよい。非限定的な実施形態において、所与の音声セグメントの符号化に用いられる圧縮アルゴリズムのアイデンティティ及び／またはバージョンは、その所与のセグメントを伝送する１つ以上のパケットのコンテンツ内に符号化されてもよい。符号化された音声を送信する他の手法は、本技術分野に属する当業者には思い当たるだろう。
【００７８】
以下、非限定的な例示を目的として、クライアント機器１２０n（１≦ｎ≦Ｎ）のいずれかでありうる、所与のユーザに関連付けられたクライアント機器の動作を示す図４Ｂを参照する。
【００７９】
動作４１０Ｂで、符号化された音声セグメントが（実施形態に応じて）計算サーバ２００Ｃ、描画サーバ２００Ｒ、またはハイブリッドサーバ２００Ｈから受信されうる。動作４２０Ｂで、符号化処理に用いられた圧縮アルゴリズムを補間する展開アルゴリズムに従って、符号化された音声が復号されうる。非限定的な実施形態において、音声セグメントの符号化に用いられた圧縮アルゴリズムのアイデンティティまたはバージョンは、音声セグメントを伝送する１つ以上のパケットのコンテンツ内で特定されてもよい。
【００８０】
動作４３０Ｂで、（復号された）音声セグメントが処理されうる。これは、バッファ内への復号された音声セグメントの配置、誤り訂正の実行、複数の連続する波形の合成等を含みうる。その結果は、フレームごとにユーザに提示される最終音声となり得る。
【００８１】
動作４４０Ｂで、最終的に生成された音声は、クライアント機器の出力機構を介して出力されうる。例えば、音声はクライアント機器のサウンドカードまたはスピーカを介して再生される。
【００８２】
ＩＸ．非限定的な実施形態の具体的開示
以下、本発明の所定の非限定的な実施形態について、より詳細な説明を提供する。
【００８３】
図５は、非限定的な実施形態の画像描画システムの例示の構成を示している。非限定的な本実施形態では、図５に示すように、ＧＰＵサーバ５４０（例えば、描画サーバ２００Ｒ）における描画処理のために用いられるリソースデータを記憶するためのリソースリポジトリ５００が、ＣＰＵサーバ５２０（例えば、計算サーバ２００Ｃ、又はシステムの中央サーバ）及びＧＰＵサーバ５４０と異なる別個のエンティティとして用意されている。ここで、システムは複数のＧＰＵサーバを含みうるが、システム内には１つのＧＰＵサーバしかなくてもよい。リソースリポジトリ５００は、ＣＰＵ（例えばＣＰＵ２２０Ｈ及び２２２Ｈ）及びＧＰＵ（例えばＧＰＵ２４０Ｒ及び２５０Ｒ）を含んだサーバ内に用意されてもよい。以下では、複数のＧＰＵサーバ５４０が存在し、ＣＰＵサーバ５２０がＧＰＵサーバ５４０とは別個のエンティティである場合について説明する。
【００８４】
非限定的な本実施形態では、ＣＰＵサーバ５２０内のリクエスト受信器５２１が画像の提供の要求５５０を受信したことに応じて、ＣＰＵサーバ５２０内のデータ送信器５２３が、リソースリポジトリ５００のみへリソースデータ５６０を送信する。すなわち、ＣＰＵサーバ５２０は、リソースデータ５６０をＧＰＵサーバ５４０へは送信しない。命令生成器５２２は、リソースリポジトリ５００内のリソースデータ５６０を識別する識別情報を含んだ描画命令５７０を生成し、ＧＰＵサーバ５４０へその描画命令５７０を送信する。ＧＰＵサーバ５４０では、命令受信器５４１が描画命令５７０を受信した場合、データ取得器５４２は、例えば、描画命令５７０に含まれていたリソースデータ５６５の識別情報（リソースＩＤ）をリソースリポジトリ５００へ送信することにより、リソースリポジトリ５００からリソースデータ５６５を取り込む。その後、ＧＰＵサーバ５４０内の描画器／送信器５４３が、描画処理を実行して、クライアント機器１２０によって送信された画像の提供の要求に対応する画像を描画し、その描画された画像をクライアント機器１２０へ送信する。それらのサーバの詳細については後述する。
【００８５】
ＣＰＵサーバ５２０は、クライアント機器１２０からの画像提供の要求を受信し、その要求に従ってリソースデータを抽出し、その後、リソースリポジトリ５００へ抽出したリソースデータを送信しうる。画像提供の要求は、ゲームコンテンツの画面の提供の要求に関しうる。クライアント機器１２０は、定期的に、又は、例えばゲーム内のキャラクタをコントロールするためのユーザ操作を受信したことに応じて、その要求を送信しうる。リソースデータの抽出は、ＣＰＵサーバ５２０内のゲームの実行のための処理の途中でリソースデータを取得することを含みうる。ＣＰＵサーバ５２０は、同一のリソースデータがリソースリポジトリ５００へ送信された場合でそのデータがリソースリポジトリ５００から削除されていない場合、リソースデータを送信しなくてもよい。この場合、リソースリポジトリ５００に現在記憶されているリソースデータの情報が、ＣＰＵサーバ５２０とリソースリポジトリ５００とによって共有されうる。ある場合において、その情報は、ＣＰＵサーバ５２０、ＧＰＵサーバ５４０、及びリソースリポジトリ５００によって共有されてもよい。いくつかの実施形態において、その情報は、ＣＰＵサーバ５２０から送信されたリソースデータのうちのいずれがリソースリポジトリ５００に記憶されているかを示すテーブルの形式で生成されてもよい。例えば、リソースリポジトリ５００がそのテーブルを生成して、それをＣＰＵサーバ５２０へ、そしていくつかの場合においてはＧＰＵサーバ５４０へ、送信する。別の場合では、ＣＰＵサーバ５２０が、ＣＰＵサーバ５２０からリソースリポジトリ５００へ送信され、その後リソースリポジトリ５００から削除されたリソースデータを管理してもよい。この場合、ＣＰＵサーバ５２０は、リソースデータのリストを管理し、ＣＰＵサーバ５２０がリソースリポジトリ５００へ所定のリソースデータを送信する場合に、その所定のリソースデータをリストに加える。他方で、リソースリポジトリ５００は、ＣＰＵサーバ５２０へ、リソースリポジトリ５００から削除されたリソースデータを報告する。そして、ＣＰＵサーバ５２０は、管理しているリストから、報告されたリソースデータを削除する。ＣＰＵサーバ５２０は、管理しているリストを、ＧＰＵサーバ５４０とリソースリポジトリ５００との少なくともいずれかへ送信してもよい。ＣＰＵサーバ５２０は、その後、ＧＰＵサーバ５４０のうちの少なくとも１つへ、リソースデータの情報を含んだ描画命令５７０を送信する。ＣＰＵサーバ５２０は、リソースデータ５６０に対して識別子情報（ＩＤ）を割り当てることによりリソースリポジトリ５００へ送信されるリソースデータ５６０を識別することができ、したがって、簡単な識別子情報を用いて、ＧＰＵサーバ５４０へ送信されるべき描画命令５７０を構成することができる。なお、識別子情報は、送信される前にＣＰＵサーバ５２０によって割り当てられてもよいし、リソースリポジトリ５００のプロセッサにより割り当てられて、ＣＰＵサーバ５２０へ報告されてもよい。さらに、識別子情報は、例えばリソースリポジトリ５００のメモリ上での、エータ位置を直接指定する情報とは異なりうる。すなわち、その位置が変動しうるため、識別子情報は、その位置によらず、１つのコンテンツ（リソースデータ）のみを指し示す。代わりに、例えば、リソースデータのデータ位置が恒久的に又は準恒久的に定められている（例えばデータ位置がリソースリポジトリ５００からそのリソースデータが削除されるまで変更されない）場合においては、識別子情報は、リソースデータがリソースリポジトリ５００のメモリ上で記憶されている位置を指示してもよい。
【００８６】
リソースリポジトリ５００は、複数のＧＰＵサーバ５４０からアクセス可能に構成され、ＧＰＵサーバ５４０がＣＰＵサーバ５２０から識別子情報を含んだ描画命令５７０を受信し、その識別子情報に対応するリソースデータがそのＧＰＵサーバ５４０のローカルキャッシュメモリに記憶されて（又はロードされて）いない場合、ＧＰＵサーバ５４０は、描画命令に含まれていた識別子情報５７５に基づいて、リソースリポジトリ５００から必要なリソースデータを取得して、描画処理を実行する。すなわち、ＧＰＵサーバ５４０のそれぞれは、識別子情報を含んだ描画命令５７０（又は描画命令のセット）を受信し、その識別子情報に対応するリソースデータがＧＰＵサーバ５４０内のメモリにロードされているか否かをチェックし、その識別子情報に対応するリソースデータがＧＰＵサーバ５４０によって保持されていない場合には、識別子情報５７５をリソースリポジトリ５００へ送信することによってその識別子情報に対応するリソースデータ５６５を取得してメモリにロードし、取得されてロードされたリソースデータ５６５を用いて画像を描画する。そして、ＧＰＵサーバ５４０は、描画された画像（クライアント機器１２０のための画面イメージ）を出力し、その画像は、符号化されてクライアント機器１２０へ送信される。描画された画像の符号化及び送信は、ＧＰＵサーバ５４０内において又は他のエンティティにおいて行われうる。
【００８７】
システムをこのように構成することにより、リソースデータがＣＰＵサーバ５２０から送信されることによって、ＣＰＵサーバ５２０からリソースリポジトリ５００への同一のリソースデータの複数回の送信が必要ではなく、同一の又は別個のＧＰＵサーバ５４０への同一のリソースデータの送信を削減できるため、通信帯域の使用が削減される。さらに、描画命令のためのデータ量の削減と複数のＧＰＵサーバ５４０間のリソースデータの再利用とが実現されうる。さらに、ＧＰＵサーバ５４０が、リソースデータがＧＰＵサーバ５４０自身において保持されていない場合にのみ、リソースデータを取得するため、ＧＰＵサーバ５４０によるリソースデータの取得による通信帯域幅の使用を減らすことができる。
【００８８】
いくつかの実施形態において、ＣＰＵサーバ５２０は、ゲームの進行及び状況に基づいて、クライアント機器１２０へのゲーム画面の提供のために、ＧＰＵサーバ５４０のうちの１つを選択することができる。代わりに、ＧＰＵサーバ５４０を管理する他のサーバが、ＣＰＵサーバ５２０からの要求を受信して、ＧＰＵサーバ５４０の選択を行ってもよい。例えば、ＣＰＵサーバ５２０（または、ＣＰＵサーバ５２０から要求を受信した他のサーバ）ゲームの進行が同レベルである場合やユーザが操作しているキャラクタが存在しているゲーム内でのフィールドが同じであるなどの、ゲームの進行又は状況が同様のクライアント機器１２０に対しては共通のＧＰＵサーバがゲーム画面を生成するように、ＧＰＵサーバ５４０の割り当てを実行する。これは、ゲームの進行又は状況が同様のクライアント機器１２０へ供給されるゲーム画面の生成に共通のリソースデータが使用される確率が高いからである。換言すれば、このような割り当てが行われるＧＰＵサーバ５４０にとっては、高速でアクセス可能なローカルキャッシュメモリに再利用可能なリソースデータがすでに記憶されている可能性が高い。代わりに、ＣＰＵサーバ５２０（または、ＣＰＵサーバ５２０から要求を受信した他のサーバ）は、複数のクライアント機器１２０のための複数の画面イメージの描画処理において共通のリソースデータが使用される場合に、共通のＧＰＵサーバ５４０が共通のリソースデータに基づいて複数の画面イメージを描画するように、ＧＰＵサーバ５４０の割り当てを行うことができる。
【００８９】
図６は、上述の描画システムにおいて実行される例示の処理のシーケンス図である。本処理では、クライアント機器１２０が、ＣＰＵサーバ５２０へ、画像提供の要求を送信する（ステップＳ６０１）。そして、ＣＰＵサーバ５２０は、その要求に基づいて、受信した要求に対応する描画処理に必要なリソースデータを送信し（ステップＳ６０２）、リソースリポジトリ５００は、そのリソースデータを識別する識別情報と関連付けて、その送信されたリソースデータを記憶する（ステップＳ６０３）。識別情報は、ＣＰＵサーバ５２０によって生成されてもよいし、リソースリポジトリ５００によって生成されてＣＰＵサーバ５２０へ報告されてもよい。その後、ＣＰＵサーバ５２０は、識別情報を含んだ描画命令（又は描画命令のセット）を生成し（ステップＳ６０４）、ＧＰＵサーバ５４０へ、その描画命令を送信する（ステップＳ６０５）。ＧＰＵサーバ５４０は、描画命令を受信し（ステップＳ６０５）、その後、受信した描画命令に含まれている識別情報によって識別されるリソースデータを、リソースリポジトリ５００から取得する。例えば、ＧＰＵサーバは、識別情報を含んだ、リソースデータの要求を送信し（ステップＳ６０６）、その識別情報に対応するリソースデータを取得する（ステップＳ６０７）。そして、ＧＰＵサーバ５４０は、ＧＰＵサーバ５４０のメモリに、そのリソースデータをロードする（ステップＳ６０８）。そして、ＧＰＵサーバ５４０は、受信した描画命令に基づいて、取得されメモリにロードされたリソースデータを用いて描画処理を実行し、クライアント機器からの画像提供の要求に対応する画像を描画する（ステップＳ６０９）。最後に、ＧＰＵサーバは、クライアント機器へ、描画された画像を送信する（ステップＳ６１０）。
【００９０】
この結果、ＧＰＵサーバ５４０がリソースリポジトリ５００へアクセスするアクセス頻度を減らすことができ、ゲーム画面の生成に要求される処理時間を減らすことができる。また、仮に、要求されるリソースデータがキャッシュメモリに存在しない場合であっても、ＧＰＵサーバ５４０がリソースリポジトリ５００からリソースデータを取得することができるため、クライアント機器１２０がゲームの進行に従って別個のＧＰＵサーバ５４０に割り当てられる場合であっても、障害なくクライアント機器１２０へのゲーム画面の提供を実行することができる。
【００９１】
他の実施形態において、図７に示すように、第１のＧＰＵサーバ７４０ａにおける非リソースデータ送信器７４１は、第１のＧＰＵサーバ７４０ａにおいて取得されると共に描画処理又は画面の送信の少なくとも１つに用いられるデータ７８０を、リソースリポジトリ５００へ送信することができる。なお、（以下では「非リソースデータ」とも呼ばれる）送信されるデータ７８０は、ＣＰＵサーバ５２０からリソースリポジトリ５００へ送信されるリソースデータ５６５と異なる。すなわち、非リソースデータ７８０は、リソースデータ５６５と異なるが、画像の描画とその画像のＣＰＵサーバ５２０へ画像提供の要求を送信したクライアント機器１２０への送信との少なくともいずれかを行うのに必要なデータでありうる。したがって、非リソースデータ７８０は、第１のＧＰＵサーバ７４０ａによって生成されたデータを含んでもよい。さらに、又は代わりに、リソースデータが静的データでありうる一方で、非リソースデータは、動的に変動するデータであってもよい。動的に変動するデータは、例えば物理学、粒子又はアニメーション分野における、フレームごとに最初から計算されるのではなく、前のフレームからの結果を用いて計算される「シミュレーション」でありうる。また、結果を得ることを可能とするために複数フレームのデータを必要とすることを意味する「テンポラル」と呼ばれる多数のアルゴリズムがある。アルゴリズムが使用するデータは、動的に変動するデータとして見なされてもよい。ＧＰＵサーバ７４０ａが１つ以上の前に描画された画像を用いて画像を描画する場合、非リソースデータは、前に描画された画像を含みうる。この構成により、第１のＧＰＵサーバ７４０ａと異なる第２のＧＰＵサーバ７４０ｂ内の非リソースデータ取得器７４２は、その後、リソースリポジトリ５００にアクセスすることにより非リソースデータ７８５を取得し、第１のＧＰＵサーバ７４０ａの代わりに、画像を描画し、ＣＰＵサーバ５２０へ画像提供の要求を送信したクライアント機器１２０に対して送信することができる。
【００９２】
クライアント機器１２０のために画像を描画するＧＰＵサーバの切り替えが、現在そのクライアント機器１２０のために画像を描画している第１のＧＰＵサーバ７４０ａが過負荷状態にある場合に行われうる。例えば、中央処理装置（ＣＰＵ）の使用率、グラフィックス処理装置（ＧＰＵ）の使用率、ＣＰＵ内のメモリの使用率、ＧＰＵ内のメモリの使用率、ハードディスクドライブの使用率、ネットワークの帯域使用率電力使用率、又は第１のＧＰＵサーバ７４０ａの発熱レベルのうちの少なくとも１つの値が所定値より大きい場合に、第１のＧＰＵサーバ７４０ａが過負荷状態でありうると判定される。第１のＧＰＵサーバ７４０ａが過負荷状態にあるか否かの判定は、ＣＰＵサーバ５２０、第１のＧＰＵサーバ７４０ａ、第２のＧＰＵサーバ７４０ｂ又は別のエンティティによって実行されうる。
【００９３】
ＣＰＵサーバ５２０が本判定を実行する場合、ＣＰＵサーバ５２０は、第１のＧＰＵサーバ７４０ａが過負荷状態であるとＣＰＵサーバ５２０が判定した場合に、第１のＧＰＵサーバ７４０ａから第２のＧＰＵサーバ７４０ｂへの描画命令の宛先を切り替え、描画命令７７０ｂの第２のＧＰＵサーバ７４０ｂへの送信を開始しうる。この場合、ＣＰＵサーバ５２０は、ＧＰＵサーバの切り替えが行われることを示す追加の情報を、描画命令７７０ｂに含めてもよい。代わりに、ＣＰＵサーバ５２０は、第１のＧＰＵサーバ７４０ａが過負荷状態にあることを報告するための別の信号を、第２のＧＰＵサーバ７４０ｂへ送信してもよい。
【００９４】
第２のＧＰＵサーバ７４０ｂは、ＣＰＵサーバ５２０から描画命令７７０ｂ又は上述の信号を受信することにより、第１のＧＰＵサーバ７４０ａが過負荷状態にあることを認識しうる。この場合、第２のＧＰＵサーバ７４０ｂは、ＣＰＵサーバ５２０から送信された、又は、第１のＧＰＵサーバ７４０ａから転送された描画命令７７０ｂを受信すると、リソースリポジトリ５００からリソースデータ５６５ｂ及び非リソースデータ７８５を取得し、取得したリソースデータ及び非リソースデータに基づいて、画像を描画して、その画像をＣＰＵサーバ５２０へ画像提供の要求を送信したクライアント機器１２０へ送信しうる。代わりに、第２のＧＰＵサーバ７４０ｂは、周期的に、すなわち、ホットスタンバイの方法で、非リソースデータ７８５を取得し、描画命令７７０ｂを受信したことに応じてリソースデータ５６５ｂを取得してもよい。第２のＧＰＵサーバ７４０ｂは、リソースデータ７７０ｂ及び非リソースデータ７８５を周期的に取得し、描画命令７７０ｂに従って画像の描画と送信とを開始してもよい。第２のＧＰＵサーバ７４０ｂは、描画命令７７０ｂに基づいたリソースリポジトリ５００からのリソースデータ５６５ｂの取得とそのリソースデータ５６５ｂのメモリへのロードの後に、非リソースデータ７８５を取得してもよい。
【００９５】
第１のＧＰＵサーバ７４０ａが判定を実行する場合、第１のＧＰＵサーバ７４０ａは、第１のＧＰＵサーバ７４０ａが過負荷状態にあることを第１のＧＰＵサーバ７４０ａ自身が判定した場合に、第２のＧＰＵサーバ７４０ｂに、第１のＧＰＵサーバ７４０ａが過負荷状態にあることを通知しうる。第２のＧＰＵサーバ７４０ｂは、第１のＧＰＵサーバ７４０ａからの通知を受信することによって、第１のＧＰＵサーバ７４０ａが過負荷状態にあることを認識しうる。この場合、第２のＧＰＵサーバ７４０ｂは、ＣＰＵサーバ５２０から送信された、又は、第１のＧＰＵサーバ７４０ａから転送された描画命令７７０ｂを受信すると、リソースリポジトリ５００からリソースデータ５６５ｂ及び非リソースデータ７８５を取得し、取得したリソースデータ及び非リソースデータに基づいて、画像を描画して、その画像をＣＰＵサーバ５２０へ画像提供の要求を送信したクライアント機器１２０へ送信しうる。代わりに、第２のＧＰＵサーバ７４０ｂは、周期的に非リソースデータ７８５を取得して、描画命令７７０ｂを受信したことに応じてリソースデータ５６５ｂを取得してもよい。第２のＧＰＵサーバ７４０ｂは、リソースデータ７７０ｂ及び非リソースデータ７８５を周期的に取得して、描画命令７７０ｂに従って、画像の描画及び送信を開始してもよい。第２のＧＰＵサーバ７４０ｂは、描画命令７７０ｂに基づくリソースリポジトリ５００からのリソースデータ５６５ｂの取得と、リソースデータ５６５ｂのメモリへのロードとの後に、非リソースデータ７８５を取得してもよい。
【００９６】
第２のＧＰＵサーバ７４０ｂが判定を行う場合、第２のＧＰＵサーバ７４０ｂは、その判定によって、第１のＧＰＵサーバ７４０ａが過負荷状態にあることを認識することができる。したがって、第２のＧＰＵサーバ７４０ｂは、リソースリポジトリ５００から、リソースデータ５６５ｂ及び非リソースデータ７８５を取得しうる。そして、第２のＧＰＵサーバ７４０ｂは、ＣＰＵサーバ５２０から送信された、又は、第１のＧＰＵサーバ７４０ａから転送された描画命令７７０ｂに従って、取得したリソースデータ及び非リソースデータに基づいて、画像を描画し、ＣＰＵサーバ５２０へ画像提供の要求を送信したクライアント機器１２０へその画像を送信することができる。第２のＧＰＵサーバ７４０ｂは、第１のＧＰＵサーバ７４０ａが過負荷状態にあることをＣＰＵサーバ５２０に報告し、描画命令７７０ｂの第２のＧＰＵサーバ７４０ｂへの送信を開始させうる。なお、第２のＧＰＵサーバ７４０ｂは、周期的に非リソースデータ７８５を取得し、描画命令７７０ｂの受信に応じてリソースデータ５６５ｂを取得して描画命令７７０ｂに従っての画像の描画と送信とを開始してもよい。第２のＧＰＵサーバ７４０ｂは、周期的にリソースデータ７７０ｂ及び非リソースデータ７８５を取得し、描画命令７７０ｂに従って、画像の描画と送信とを開始してもよい。非リソースデータを周期的に取得することにより、第２のＧＰＵサーバ７４０ｂは、第１のＧＰＵサーバ７４０ａと同期することができ、したがって、第１のＧＰＵサーバ７４０ａから第２のＧＰＵサーバ７４０ｂへの描画サーバの透過的な切り替えを達成することができる。例えば、画面上におけるある程度のポッピング又はちらつきを需要可能な場合は、第２のＧＰＵサーバ７４０ｂは、描画命令に基づいてリソースリポジトリ５００からリソースデータ５６５ｂを取得してリソースデータ５６５ｂをメモリにロードした後に、非リソースデータ７８５を取得しうる。
【００９７】
他のエンティティが検出を実行する場合は、そのエンティティは、ＣＰＵサーバ５２０と、第１のＧＰＵサーバ７４０ａと、第２のＧＰＵサーバ７４０ｂとの少なくともいずれかに、第１のＧＰＵサーバが過負荷状態であることを通知し、いずれのサーバにその通知がなされたかに応じて、上述の処理のいずれかが実行される。
【００９８】
クライアント機器１２０のために画像を描画するＧＰＵサーバの切り替えは、第１の描画サーバの少なくとも一部が機能しなくなった場合に行われてもよい。障害の検出は、第１のＧＰＵサーバ７４０ａから周期的に送信される信号を受信することによって行われうる。例えば、第１のＧＰＵサーバ７４０ａは、第１のＧＰＵサーバ７４０ａの動作状態を示す通知信号を周期的に送信し、ＣＰＵサーバ５２０又は第２のＧＰＵサーバ７４０ｂは、第１のＧＰＵサーバ７４０ａの動作状態（例えば、第１のＧＰＵサーバ７４０ａにおいて障害が発生しているか否か）を認識する。ＣＰＵサーバ５２０又は第２のＧＰＵサーバ７４０ｂは、通知信号が所定の期間の間受信されない場合又は第１のＧＰＵサーバ７４０ａが正常に動作していないことを通知信号が示す場合に、第１のＧＰＵサーバ７４０ａにおいて障害が発生していることを認識しうる。所定の期間は、通知信号の伝送時間周期より長く設定されうる。代わりに、ＣＰＵサーバ５２０、第２のＧＰＵサーバ７４０ｂ、又は他のエンティティが、第１のＧＰＵサーバ７４０ａが正常に動作しているか否かを監視することにより、その検出を実行してもよい。他のエンティティが検出を実行する場合、そのエンティティは、ＣＰＵサーバ５２０と第１のＧＰＵサーバ７４０ａと第２のＧＰＵサーバ７４０ｂとの少なくともいずれかに検出結果を通知する。
【００９９】
障害を検出した後に、第１のＧＰＵサーバ７４０が過負荷状態にあるかに関して上述したのと同様の処理が実行されうる。例えば、ＣＰＵサーバ５２０がその検出を実行する場合、ＣＰＵサーバ５２０は、第１のＧＰＵサーバ７４０ａにおいて障害が発生したことをＣＰＵサーバ５２０が検出した場合に、第１のＧＰＵサーバ７４０ａから第２のＧＰＵサーバ７４０ｂへ描画命令の宛先を切り替え、描画命令７７０ｂの第２のＧＰＵサーバ７４０ｂへの送信を開始しうる。この場合、ＣＰＵサーバ５２０は、ＧＰＵサーバの切り替えが行われることを示す追加情報を、描画命令７７０ｂの中に含めうる。代わりに、ＣＰＵサーバ５２０は、第１のＧＰＵサーバ７４０ａにおいて障害が発生したことを報告するための別の信号を、第２のＧＰＵサーバ７４０ｂへ送信してもよい。
【０１００】
上述の構成によれば、複数のＧＰＵサーバのうちの１つが過負荷状態にある場合、又は、複数のＧＰＵサーバのうちの１つにおいて障害が発生した場合に、ＣＰＵサーバ５２０は、容易に、そのＧＰＵサーバからゲーム画面を受信していたユーザを、その複数のＧＰＵサーバのうちの別のＧＰＵサーバへ、と移すことができる。すなわち、ユーザが移されたＧＰＵサーバがリソースリポジトリ５００からリソースデータ及び非リソースデータを取得することができるため、ＣＰＵサーバ５２０は、その宛先を除いて、描画命令を変更する必要がない。
【０１０１】
なお、上述の各実施形態の要素の全部または一部は、１つ以上のソフトウェアプログラムによって実装されてもよい。すなわち、上述の特徴の全部または一部は、１つ以上のソフトウェアプログラムがＣＰＵサーバ、ＧＰＵサーバ、又はリソースリポジトリに含まれる１つ以上のコンピュータにおいて実行される場合に実行されうる。当然ながら、上述の各実施形態の要素の全部または一部は、１つ以上のハードウェア要素によって実装されてもよい。
【０１０２】
例示的な実施形態を参照して本発明を説明してきたが、記載した例示的な実施形態に発明が限られるものでないことが理解されるべきである。以下の特許請求の範囲は、このような変形、等価な構成及び機能の全てを包含するような、最も広範な解釈が認められるべきものである。また、本発明に係る描画システム、及び制御方法は、コンピュータにおいてその手法を実行するプログラムにより実現可能である。プログラムは、コンピュータ読み取り可能な記録媒体に格納されることにより、または電気的な通信回線を介して、提供／配信可能である。
【０１０３】
本出願は、その全体がここに参照により援用される、２０１３年１２月２６日に出願された米国仮出願第６１／９２０８３５号の利益を主張するものである。
【図１Ａ】
0006310073.tif 000002
【図１Ｂ】
0006310073.tif 000003
【図２Ａ】
0006310073.tif 000004
【図２Ｂ】
0006310073.tif 000005
【図２Ｃ】
0006310073.tif 000006
【図３Ａ】
0006310073.tif 000007
【図３Ｂ】
0006310073.tif 000008
【図３Ｃ】
0006310073.tif 000009
【図４Ａ】
0006310073.tif 000010
【図４Ｂ】
0006310073.tif 000011
【図５】
0006310073.tif 000012
【図６】
0006310073.tif 000013
【図７】
0006310073.tif 000014
【図８】
0006310073.tif 000015