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