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