以下、本発明の一実施形態について図面に基づき詳細に説明する。
図1は、本発明の一実施形態に係るコンピュータネットワークの全体構成の一例を示す図である。図1に示すように、インターネットなどのコンピュータネットワーク16には、いずれもコンピュータを中心に構成されたクラウドサービス10、動画像管理システム12、クライアント14(14−1〜14−n)、が接続されている。そして、クラウドサービス10、動画像管理システム12、クライアント14は、互いに通信可能になっている。
クライアント14は、クラウドサービス10や動画像管理システム12のユーザが利用するコンピュータであり、例えば、パーソナルコンピュータ、ゲームコンソール、テレビ受像器、携帯型ゲーム装置、携帯情報端末、などである。そして、クライアント14は、例えば、CPU等の制御装置、ROMやRAM等の記憶素子やハードディスクドライブ等の記憶装置、ディスプレイ、スピーカ等の出力装置、ゲームコントローラ、タッチパッド、マウス、キーボード、マイク等の入力装置、ネットワークボード等の通信装置、DVD−ROMやBlu−ray(登録商標)ディスクなどの光ディスク(コンピュータ読み取り可能な情報記憶媒体)を読み取る光ディスクドライブ、等を備えている。
また、本実施形態に係るクライアント14は、ウェブブラウザ及びクラウドサービス10用のプラグインプログラムが予めインストールされており、これらのアプリケーションプログラムが実行される。クライアント14は、ウェブブラウザを通じてクラウドサービス10や動画像管理システム12が提供する各種サービスを受ける。クラウドサービス用プラグインプログラムの詳細については後述する。
動画像管理システム12は、例えば、クライアント14やクラウドサービス10から受け付ける動画像を登録したり、クライアント14からの要求に応じてクライアント14に動画像の配信を行ったりするコンピュータシステムである。
クラウドサービス10は、例えば、本発明の一実施形態に係る情報処理システムとして機能する分散コンピューティング環境であり、互いに通信可能に接続されている複数台のWebアプリケーションサーバ、複数台のデータベースサーバ、複数台のストレージデバイス、などを含んで構成されている。クラウドサービス10に含まれるサーバは、例えば、CPU等の制御部、ROMやRAM等の記憶素子やハードディスクドライブなどである記憶部、ネットワークボードなどの通信インタフェースである通信部、を含んで構成されている。これらの要素は、バスを介して接続される。
クラウドサービス10を利用するクライアント14は、クラウドサービス10内に存在するサーバやストレージデバイスなどのリソースの所在を特に意識することなく、クラウドサービス10が提供する各種サービスを利用することができる。
本実施形態では、クライアント14が、ウェブブラウザを通じてクラウドサービス10にアクセスし、ユーザID及びパスワードを入力してから、その後に所定のURLにアクセスすると、クライアント14のディスプレイに所定のURLに対応する画面が表示される。なお、ユーザID及びパスワードを入力した後は、クラウドサービス10は、例えば、クッキーを参照することによりクライアント14を利用するユーザのユーザIDを特定することができるようになっている。
本実施形態では、例えば、あるユーザ(ユーザA)がクライアント14からシューティングゲームの開始要求をクラウドサービス10に送信すると、クラウドサービス10はそのゲームの実行を開始する。そして、このゲームが実行されている間、クラウドサービス10は、このゲームのプレイ内容を表すフレーム画像を、順次、ユーザAのクライアント14にストリーミング配信する。そして、ユーザAのクライアント14のディスプレイにはブラウザを介してこのフレーム画像が順次表示される。以下、このようにして順次ストリーミング配信されるフレーム画像群から構成される動画像を実況動画像と呼ぶこととする。ユーザAは、実況動画像を見ながら、ゲームコントローラのボタンを押下するなどしてゲームを楽しむことができる。
図2に、ユーザAのクライアント14のディスプレイに表示されるゲーム画面20の一例を示す。ゲーム画面20には、上述の実況動画像が表示される。本実施形態では、ゲーム画面20に、シューティングゲームにおいてプレイヤが操作する戦闘機等を表すプレイヤオブジェクト22、プレイヤオブジェクト22から発射される弾丸を表す弾丸オブジェクト24、プレイヤオブジェクト22が倒すべき敵を表す敵オブジェクト26が含まれている。ユーザAは、ゲームコントローラのボタンを押下するなどの、キー入力を行うことにより、シューティングゲームにおけるプレイヤオブジェクト22の移動や弾丸オブジェクト24の発射等の操作を行うことができる。ユーザAは、迫り来る敵オブジェクト26をかわしながら、敵オブジェクト26に向けて弾丸オブジェクト24を発射して、敵オブジェクト26を倒していく。
本実施形態では、上述のシューティングゲームは、ゲームの進行段階に対応する複数のゲームステージから構成されている。そして、ユーザAがゲームステージをクリアする、あるいは、ゲームオーバーとなる、などのイベントが発生した際に、クラウドサービス10は、そのゲームステージの開始時点からイベント発生時点までのゲームのプレイ内容を表す動画像(以下、この動画像をリプレイ動画像と呼ぶこととする。)を動画像管理システム12に登録する。このようにして、本実施形態では、既にユーザAによりプレイされたシューティングゲームのプレイ内容を表すリプレイ動画像が動画像管理システム12に登録される。そして、別のユーザ(ユーザB)がクライアント14から動画像管理システム12にこのリプレイ動画像の再生要求を送信すると、動画像管理システム12は、このリプレイ動画像をユーザBのクライアント14にストリーミング配信する。
図3に、ユーザBのクライアント14のディスプレイに表示されるリプレイ動画像表示画面28の一例を示す。リプレイ動画像表示画面28には、上述のリプレイ動画像が表示される。また、リプレイ動画像表示画面28には、リプレイ動画像の再生位置に応じた状況への復帰(リプレイ動画像の再生位置に応じた状況からのゲームの実行)を要求するための復帰リンク30が含まれている。また、リプレイ動画像表示画面28には、動画像の再生を制御するための各種ボタン及び動画像が再生されるに従って左から右へ移動するノブ32が配置されている。リプレイ動画像の再生中にユーザBが復帰リンク30をクリックすると、クライアント14は、この再生位置に応じた状況からのゲームの実行要求をクラウドサービス10に送信する。すると、クラウドサービス10は、この状況からのゲームの実行を開始する。そして、このゲームが実行されている間、クラウドサービス10は、このゲームのプレイ内容を表す実況動画像をユーザBのクライアント14にストリーミング配信する。そして、ユーザBのクライアント14では、図2と同様のゲーム画面20が表示されることとなる。そして、ユーザBは、このゲームを、ユーザBが指定した再生位置に応じた状況から楽しむことができる。
図4は、本実施形態に係るクラウドサービス10とクライアント14との関係の一例を示す概念図である。本実施形態に係るクラウドサービス10では、例えば、管理プロセス34、サービス提供プロセス36、エミュレータ38が実行される。また、クラウドサービス10に含まれるストレージデバイス等の記憶装置には、予め、各種ゲームプログラムのイメージファイルが記憶されている。ゲームプログラムには、ゲームの識別子であるゲームIDが関連付けられている。
サービス提供プロセス36は、例えば、クラウドサービス10に含まれるサーバが、ショッピングサイトやSNS(Social Networking Service)等、クラウドサービス10が提供する種々のサービスを実現するプログラムを起動することで生成されるプロセスである。
管理プロセス34は、例えば、クラウドサービス10に含まれるサーバが、クラウドサービス10に含まれるサーバやストレージデバイスにインストールされている管理プログラムを起動することで生成されるプロセスであり、エミュレータ38の所在管理処理、エミュレータ38の起動処理及び停止処理、クライアント14からの要求に応じたクライアント14とエミュレータ38との接続処理及び切断処理、などを実行する。
エミュレータ38は、例えば、クラウドサービス10に含まれるサーバやストレージデバイスに記憶されているゲームプログラムを実行するための仮想マシンとして機能するプロセスである。エミュレータ38は、管理プロセス34が、クライアント14からの要求に応じて、クラウドサービス10に含まれるサーバやストレージデバイスにインストールされているエミュレータプログラムを起動することにより生成される。そして、管理プロセス34は、クライアント14からの要求に応じて、クライアント14により指定されたゲームプログラムのイメージファイルを読み込み、エミュレータ38にロードする。このことによって、エミュレータ38上でゲームプログラムが実行されることとなる。なお、エミュレータ38が、クライアント14により指定されたゲームプログラムを自プロセスにロードするようにしてもよい。
また、エミュレータ38は、例えば、クライアント14や管理プロセス34からの要求に応じて、エミュレータ38が管理しているエミュレートされたメモリイメージやレジスタ(例えば、プログラムカウンタ等)、エミュレータ38上で動作するゲームプログラムによる入出力アクセスログ、エミュレータ38上で実行されるCPU命令やGPU命令のログなどを出力する。
本実施形態では、図4に示すように、1つのエミュレータ38を1つのクライアント14が専有することができる(ゲームプログラムP1参照)。また、1つのエミュレータ38に対して複数のクライアント14が接続可能となっている(ゲームプログラムP2参照)。また、1つのエミュレータ38上で複数のゲームプログラムが実行可能となっている(ゲームプログラムP3、P4参照)。
また、本実施形態では、図4に示すように、クライアント14にエミュレータプログラムがインストールされている場合は、管理プロセス34は、クライアント14からの要求に応じて、クライアント14にエミュレータ38の起動指示や停止指示を出力する。クライアント14は、管理プロセス34から受け付ける起動指示に応じて、クライアント14にインストールされているエミュレータプログラムを起動する。また、クライアント14は、管理プロセス34から受け付ける停止指示に応じて、実行中のエミュレータ38を停止する。そして、クライアント14に記憶されているゲームプログラムをクライアント14で実行されているエミュレータ38で実行することもできるようになっている(ゲームプログラムP5参照)。また、クライアント14で実行されているエミュレータ38に対して他のクライアント14から接続できるようになっている(ゲームプログラムP6参照)。
図5は、本実施形態に係るクラウドサービス10で実現される機能の一例を示す機能ブロック図である。なお、図5には、以下の説明と特に関係がある機能が示されているにすぎず、本実施形態に係るクラウドサービス10では、図5に示す機能以外の機能も実現されている。図5に示すように、本実施形態に係るクラウドサービス10は、機能的には、例えば、エミュレータ管理部40、ゲーム実行部42、リプレイ動画像管理部44、データ記憶部46、復帰データ生成部48、ゲーム状況監視部50、復帰要求受付部52、再生位置特定部54、ゲーム状況データ取得部56、を含んで構成される。データ記憶部46は、例えば、クラウドサービス10に含まれるサーバに含まれるメモリやハードディスクドライブ、ストレージデバイス、などといった記憶装置を主として実現される。また、ゲーム実行部42は、例えば、エミュレータ38で実現される機能に対応する。その他の要素は、例えば、管理プロセス34で実現される機能に対応する。
クラウドサービス10は、上述のようにコンピュータを中心に構成されており、プログラムを実行することにより、図5に示す各機能要素が実現されるようになっている。また、このプログラムは、例えば、CD−ROM、DVD−ROMなどのコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどの通信ネットワークを介してクラウドサービス10に供給される。
エミュレータ管理部40は、本実施形態では、例えば、クライアント14からの要求に応じてエミュレータ38を起動したり停止したりする。また、エミュレータ管理部40は、クライアント14からの要求に応じた、クライアント14とエミュレータ38との接続処理及び切断処理を実行する。また、エミュレータ管理部40は、起動したエミュレータ38へのゲームプログラムのイメージファイルのロードも行う。また、エミュレータ管理部40は、エミュレータ38の所在管理処理も実行する。
ゲーム実行部42は、本実施形態では、例えば、エミュレータ38にロードされたゲームプログラムを実行する。
本実施形態では、例えば、ユーザAがクライアント14からシューティングゲームの開始要求をクラウドサービス10に送信すると、クラウドサービス10のエミュレータ管理部40が、この開始要求に応じて、エミュレータ38を起動し、起動したエミュレータ38にシューティングゲームのイメージファイルをロードする。そして、ゲーム実行部42が、ロードされたシューティングゲームを開始する。
ゲーム実行部42は、本実施形態では、シューティングゲームの開始以降、所定のゲーム更新時間(例えば、1/60秒)毎に、ゲームの状況を示すゲーム状況データを更新するゲーム状況データ更新処理、更新後のゲーム状況データに基づいてゲームのプレイ内容を表すフレーム画像を生成するフレーム画像生成処理、生成されたフレーム画像をクライアント14に送信するフレーム画像送信処理、の順に、これら3つの処理を実行する。すなわち、ゲーム実行部42は、ゲーム更新時間間隔で、上述の3つの処理を順次実行するという処理を繰り返し実行する。
本実施形態では、ゲーム実行部42は、ゲーム状況更新処理において、例えば、プレイヤオブジェクト22、弾丸オブジェクト24、敵オブジェクト26、それぞれの位置や向きを示すゲーム状況データを更新する処理を実行する。また、本実施形態では、ゲーム実行部42は、ゲーム状況更新処理において、更新後のオブジェクト間の衝突判定処理や、衝突判定結果に基づく、ゲームステージクリア判定処理、ミス判定処理なども併せて実行する。
また、本実施形態では、ゲーム実行部42は、フレーム画像生成処理において、例えば、更新後のオブジェクト群の位置や向きを示すゲーム状況データに基づいてフレーム画像を生成する処理を実行する。また、本実施形態では、ゲーム実行部42は、フレーム画像送信処理において、例えば、生成されたフレーム画像を生成時刻順に順序付けられているフレーム画像の識別子であるフレームIDに関連付けてクライアント14に送信する。
本実施形態では、クライアント14は、クラウドサービス10から順次送信されるフレーム画像を受信する。そして、クライアント14は、受信したフレーム画像が含まれるゲーム画面20をディスプレイに表示出力する。本実施形態では、クライアント14は、関連付けられているフレームID順にフレーム画像を表示出力する。そして、表示出力されるフレーム画像は、順次更新される。このようにして、実況動画像がクラウドサービス10からクライアント14へストリーミング配信される。
また、本実施形態では、ゲームの実行中に、クライアント14が、ユーザによるボタンの押下などのキー入力を受け付けた際に、入力に応じたキー情報(例えば、押下されたボタンの種別を示す信号)を、クラウドサービス10に送信する。そして、クラウドサービス10のゲーム実行部42は、このキー情報に応じたゲーム状況データの更新(例えば、押下されたボタンが示す方向へのプレイヤオブジェクト22の移動、プレイヤオブジェクト22からの弾丸オブジェクト24の発射等)を実行する。
リプレイ動画像管理部44は、本実施形態では、例えば、ゲーム実行部42がフレーム画像を生成した際に、そのフレーム画像を、生成時刻順に順序付けられているフレーム画像の識別子であるフレームIDに関連付けてデータ記憶部46に出力する。
復帰データ生成部48は、本実施形態では、例えば、所定の復帰データ生成間隔(例えば、5秒間隔)で、リプレイ動画像の再生位置に応じた状況への復帰(リプレイ動画像の再生位置に応じた状況からのゲームの実行)に用いられる復帰データ58を生成して、データ記憶部46に出力する(図6参照)。図6は、復帰データ58の一例を示す図である。本実施形態では、復帰データ生成部48は、ゲームステージが開始される際に、そのゲームステージの開始時点の復帰データ58を生成して、データ記憶部46に出力する。そのため、データ記憶部46には、ゲームステージの開始時における復帰データ58が記憶されることとなる。図6に示すように、復帰データ58は、例えば、上述のリプレイ動画像の識別子である動画像IDと、プレイされているゲームの識別子であるゲームIDと、ゲームステージの開始時点からの経過時間を示す経過時間データと、そのときのゲームの状況を示すゲーム状況データ(図6には、本実施形態におけるゲーム状況データの一例として、経過時間データに対応する時点における、シューティングゲームを実行しているエミュレータ38が管理しているメモリイメージの内容やレジスタの値を示すスナップショットデータが示されている。)と、を含んでいる。復帰データ58に含まれる経過時間データによって、復帰データ58とリプレイ動画像に含まれるフレーム画像とは関連付けられていることとなる。
本実施形態では、復帰データ生成部48は、復帰データの生成タイミングが到来した際に、その時点におけるエミュレータ38のメモリイメージの内容やレジスタの値を取得する。そして、復帰データ生成部48は、リプレイ動画像の識別子である動画像IDと、プレイされているゲームの識別子であるゲームIDと、ゲームステージの開始時点から復帰データの生成タイミングまでの時間を示す経過時間データと、取得した内容に対応するスナップショットデータと、を含む復帰データ58を生成する。
このようにして、本実施形態では、ゲーム実行部42が実況動画像をクライアント14にストリーミング配信している際に、同時進行で、リプレイ動画像管理部44によるフレーム画像のデータ記憶部46への出力、及び、復帰データ生成部48による復帰データ58の生成出力が行われることとなる。また、本実施形態では、ゲームの実行中に、その実行中のゲームの現況を示すスナップショットデータが順次生成されることとなる。
ゲーム状況監視部50は、例えば、ゲーム実行部42が実行しているシューティングゲームのゲーム処理の進行状況を監視する。本実施形態では、予め、各ゲームステージの終了時点のフレーム画像、及び、ゲームオーバー時点のフレーム画像がデータ記憶部46に記憶されている。以下、これらのフレーム画像を判定画像と呼ぶこととする。本実施形態では、ゲーム状況監視部50は、例えば、ゲーム実行部42により生成されるフレーム画像を監視する。そして、ゲーム状況監視部50は、公知の画像処理技術を用いて、監視されたフレーム画像と、データ記憶部46に記憶されているいずれかの判定画像とが一致していることを確認した際に、ゲームステージが終了した、又は、ゲームオーバーとなったということを判定する。このようにして、本実施形態では、ゲームステージの終了時点やゲームオーバー時点を検出することができるようになっている。
そして、本実施形態では、ゲーム状況監視部50は、ゲームステージが終了した際、及び、ゲームオーバーとなった際に、リプレイ動画像管理部44にその旨を通知する。すると、リプレイ動画像管理部44は、この通知を受け付けた際に、それまでにデータ記憶部46に出力された、そのゲームステージの開始時点から上述の通知を受け付けた時点までの1又は複数のフレーム画像、及び、上述の動画像IDが含まれるリプレイ動画像を生成する。このリプレイ動画像に含まれるフレーム画像はフレームIDに関連付けられている。
そして、リプレイ動画像管理部44は、リプレイ動画像を動画像管理システム12に送信する。すると、動画像管理システム12はこのリプレイ動画像を受信して、動画像管理システム12に含まれるハードディスクドライブ等の記憶装置に出力する。このようにして、リプレイ動画像が動画像管理システム12に登録される。
本実施形態では、動画像管理システム12は、ユーザBのクライアント14から、検索条件となる文字列を受け付けた際に、その検索条件に合致するリプレイ動画像の概要の一覧画面(図示せず)を生成して、ユーザBのクライアント14に送信する。そして、ユーザBのクライアント14は、この一覧画面を受信して、ディスプレイに表示出力する。そして、ユーザBが一覧画面のうちから上述のリプレイ動画像の概要が示されている部分をクリックすると、ユーザBのクライアント14は、このリプレイ動画像の再生要求を動画像管理システム12に送信する。そして、動画像管理システム12は、この再生要求を受信する。そして、動画像管理システム12は、この再生要求に応じて、対応するリプレイ動画像に対応するリプレイ動画像表示画面28を生成して、ユーザBのクライアント14に送信するとともに、リプレイ動画像のストリーミング配信を開始する。
本実施形態では、ユーザBのクライアント14は、リプレイ動画像表示画面28を動画像管理システム12から受信した際に、ユーザBのクライアント14にインストールされているクラウドサービス10用のプラグインプログラムがクラウドサービス10に対して、受信したリプレイ動画像の動画像IDを送信して、受信したリプレイ動画像に対応する復帰データ58が存在するか否かを問い合わせる。そして、復帰データ58が存在する旨をクラウドサービス10から受信すると、プラグインプログラムが、図3に示すように、リプレイ動画像表示画面28内に、復帰リンク30を埋め込む。
ユーザBが、リプレイ動画像表示画面28に配置されている、再生、スロー再生、早送り、巻き戻し、一時停止、等の、動画像の再生を制御するためのボタンをクリックすると、クライアント14は、対応する信号を動画像管理システム12に送信する。すると、動画像管理システム12は、この信号を受信して、信号に応じた動画像の再生制御を行う。また、ユーザBが、マウス等を用いてノブ32を移動する操作を実行すると、クライアント14は、移動後の位置に対応する再生位置を示す信号を動画像管理システム12に送信する。そして、動画像管理システム12は、この信号が示す再生位置からのリプレイ動画像の再生を行う。
ここで、リプレイ動画像の再生中に、ユーザBが復帰リンク30をクリックすると、クライアント14は、再生されているリプレイ動画像の動画像IDと再生時点のフレーム画像のフレームIDとの組合せに関連付けられた、そのフレーム画像に対応する状況への復帰要求(すなわち、そのフレーム画像に対応する状況からのゲームの実行要求)であるゲーム復帰要求をクラウドサービス10に送信する。すると、クラウドサービス10の復帰要求受付部52が、このゲーム復帰要求を受け付ける。
そして、再生位置特定部54は、受け付けた動画像ID、及び、フレームIDに基づいて、復帰リンク30がクリックされた時点におけるそのリプレイ動画像の再生位置(例えば、ゲームステージの開始時点からの経過時間やフレーム数等)を特定する。そして、再生位置特定部54は、このゲーム復帰要求に関連付けられている動画像IDに基づいて、プレイされているゲームを特定する。また、再生位置特定部54は、ゲームステージの開始時点から、復帰要求受付部52が受け付けたゲーム復帰要求に関連付けられているフレームIDのフレーム画像が再生されたタイミングまでの時間(以下、復帰時経過時間と呼ぶ。)もしくは復帰時経過時間よりも短い時間を示し、かつ、復帰時経過時間に最も近い時間を示す経過時間データに関連付けられているスナップショットデータを特定する。
そして、ゲーム状況データ取得部56が、本実施形態では、例えば、再生位置特定部54により特定されたスナップショットデータを取得する。そして、エミュレータ管理部40が、新規のエミュレータ38を起動するとともに、ユーザBのクライアント14とこのエミュレータ38との接続処理を実行する。そして、エミュレータ管理部40が、再生位置特定部54により特定されたゲームのイメージファイルをこのエミュレータ38にロードする。そして、ゲーム実行部42が、スナップショットデータが示す状況からのシューティングゲームの実行を開始する。ゲーム実行部42は、具体的には、例えば、ゲーム状況データ取得部56が取得したスナップショットデータに応じた、シューティングゲームを実行しているエミュレータ38が管理しているメモリイメージの内容やレジスタの値の設定を行った上で、上述のシューティングゲームの実行を開始する。このようにして、そして、ユーザBは、ユーザBのクライアント14で、復帰リンク30がクリックされたタイミングでのリプレイ動画像の再生位置に応じた状況から開始されるシューティングゲームを楽しむことができる。
なお、本発明は上述の実施形態に限定されるものではない。
例えば、ゲーム状況データ取得部56が、復帰時経過時間から、所定の時間(例えば、1分)だけ遡った時間に最も近い時間を示す経過時間データに関連付けられているスナップショットデータを取得するようにしてもよい。こうすれば、例えば、復帰リンク30をクリックしたタイミングから少し遡ったタイミングにおける状況からゲームを開始するということができることとなる。
また、例えば、復帰要求受付部52がゲーム復帰要求を受け付けた際に、ゲームステージの最初からゲームを開始したいか、ゲーム復帰要求を受け付けた際に再生されていたフレーム画像により表されている場面付近からゲームを開始したいかの選択を促す選択画面(図示せず)を出力してもよい。そして、クライアント14が、後者の選択肢をクラウドサービス10に送信した際には、再生位置特定部54が、復帰時経過時間以下の時間を示し、かつ、復帰時経過時間に最も近い時間を示す経過時間データに関連付けられているスナップショットデータを特定し、前者の選択肢をクラウドサービス10に送信した際には、ゲーム復帰要求に対応するゲームステージの開始時点のスナップショットデータを特定するようにしてもよい。
また、例えば、再生位置特定部54は、受け付けたゲーム復帰要求に関連付けられているフレームIDのフレーム画像が示すタイミング以前、以後に関わらず、復帰時経過時間に最も近い経過時間を示す経過時間データに関連付けられているスナップショットデータを特定するようにしてもよい。
また、例えば、クラウドサービス10が、受け付けたゲーム復帰要求に応じて、プレイされているゲーム、及び、スナップショットデータを特定した後で、このゲームのゲームID及びスナップショットデータに関連付けられたエミュレータ38の起動指示をクライアント14に送信してもよい。そして、クライアント14がこの起動指示を受信して、エミュレータ38を起動してもよい。そして、クライアント14が、クライアント14のハードディスクドライブ等に記憶されている、受信したゲームIDに対応するゲームプログラムのイメージファイルをエミュレータ38にロードしてもよい。そして、クライアント14が、受信したスナップショットデータに応じたエミュレータの設定を行って、エミュレートされたゲームを開始してもよい。なお、クライアント14は、ハードディスクドライブ等に記憶されているイメージファイルの代わりに、光ディスクに記録されたゲームプログラムを光ディスクドライブから読み込んでエミュレータ38にロードしてもよい。
また、例えば、クラウドサービス10が、ユーザBのクライアント14から、ユーザAの実況動画像の配信要求を受け付けた際に、ユーザBのクライアント14とユーザAがプレイしているゲームがロードされているエミュレータ38とを接続するようにしてもよい。そして、クラウドサービス10が、ユーザAのクライアント14にストリーミング配信している実況動画像をユーザBのクライアント14にも配信するようにしてもよい。その後、クラウドサービス10が、ユーザBのクライアント14から、ゲーム復帰要求を受け付けた際に、その時点における実況動画像の再生位置に基づいて復帰データ58を特定してもよい。そして、クラウドサービス10が、新規のエミュレータ38を起動して、起動したエミュレータ38に、特定された復帰データ58に含まれるゲームIDに対応するゲームプログラムをロードしてもよい。そして、クラウドサービス10が、ユーザBのクライアント14とユーザAがプレイしているゲームがロードされているエミュレータ38との接続を切断して、ユーザBのクライアント14とこの新規のエミュレータ38とを接続してもよい。そして、ゲーム実行部42が、特定された復帰データ58に含まれるスナップショットデータに応じたエミュレータ38の設定を行った上で、ゲームの実行を開始してもよい。
また、例えば、クライアント14による、クラウドサービス10から配信されている実況動画像、又は、リプレイ動画像の再生中に、クライアント14が、再生されている動画像の動画像IDと再生時点のフレーム画像のフレームIDとの組合せに関連付けられた、ブックマーク要求をクラウドサービス10に送信してもよい。そして、クラウドサービス10が、このブックマーク要求を受け付けた際に、動画像の配信を中止せず、受け付けたブックマーク要求に関連付けられている、動画像IDとフレームIDとの組合せをブックマークデータとしてデータ記憶部46に出力するようにしてもよい。そして、クラウドサービス10が、クライアント14からの要求に応じて、ブックマークデータの一覧をクライアント14に送信するようにしてもよい。そして、クライアント14がブックマークデータの一覧をディスプレイに表示出力してもよい。ここで、クライアント14が、ユーザにより一覧の中から選択されたブックマークデータをクラウドサービス10に送信したら、クラウドサービス10が、このブックマークデータに対応するゲーム及びスナップショットデータを特定して、特定された状況からのシューティングゲームの実行を開始するようにしてもよい。なお、クラウドサービス10は、ブックマーク要求を受け付けた際には要求元のユーザに対する課金処理を実行せずに、シューティングゲームの実行要求を受け付けた際に要求元のユーザに対する課金処理を実行するようにしてもよい。
また、この場合において、クライアント14が実況動画像を再生している際には、クラウドサービス10が、ブックマーク要求の受付をトリガとして、リプレイ動画像管理部44によるフレーム画像のデータ記憶部46への出力、及び、復帰データ生成部48による復帰データの生成・出力を開始するようにしてもよい。
また、例えば、復帰要求受付部52がゲーム復帰要求を受け付けた際に、ゲームの実行を開始するか否かを確認する画面をクライアント14に送信してもよい。そして、復帰要求受付部52がゲームの実行を開始する旨をクライアント14から受け付けてはじめて、再生位置特定部54が、復帰リンク30がクリックされた時点におけるそのリプレイ動画像の再生位置を特定するようにしてもよい。
また、例えば、クラウドサービス10が、上述の動画像管理システム12が提供するサービスを提供するようにしてもよい。また、クラウドサービス10が、クライアント14から受け付けるキー情報をその受け付けたタイミングを示すデータと関連付けてキーログとしてデータ記憶部46に出力してもよい。そして、リプレイ動画像管理部44が、キーログに基づいてリプレイ動画像に含まれる各フレーム画像を生成して、クライアント14にストリーミング配信するようにしてもよい。
また、例えば、データ記憶部46には、予め、判定画像の代わりに、ゲームステージの終了時点や、ゲームオーバー時点における、エミュレータ38が管理しているエミュレートされたメモリイメージの内容やレジスタの値が記憶されていてもよい。そして、ゲーム状況監視部50が、エミュレータ38が管理しているエミュレートされたメモリイメージの内容やレジスタの値を監視して、その監視結果とデータ記憶部46に記憶されている上述のデータとの比較結果に基づいて、ゲームステージの終了時点やゲームオーバー時点を検出するようにしてもよい。
また、例えば、リプレイ動画像管理部44が、リプレイ動画像を生成する際に、ユーザAのクライアント14から、リプレイ動画像を生成するフレーム画像の範囲を指定する情報を受け付けてもよい。そして、リプレイ動画像管理部44は、指定された範囲のフレーム画像を含んで構成されるリプレイ動画像を生成してもよい。そして、リプレイ動画像管理部44は、指定された範囲外のフレーム画像に対応する復帰データ58をデータ記憶部46から削除するようにしてもよい。
また、例えば、動画像IDが、復帰データ58が存在するか否かを示す情報を含んでいてもよい。そして、ユーザBのクライアント14が、リプレイ動画像表示画面28を動画像管理システム12から受信した際に、ユーザBのクライアント14にインストールされているクラウドサービス10用のプラグインプログラムが、受信したリプレイ動画像の動画像IDに基づいて、このリプレイ動画像に対応する復帰データ58が存在するか否かを判定してもよい。そして、プラグインプログラムは、リプレイ動画像に対応する復帰データ58が存在すると判定した場合に、リプレイ動画像表示画面28内に、復帰リンク30を埋め込むようにしてもよい。
また、リプレイ動画像の再生中に、ユーザBが復帰リンク30をクリックし、クライアント14がゲーム復帰要求をクラウドサービス10に送信した際に、クラウドサービス10が、このリプレイ動画像に対応する復帰データ58が存在するか否かを確認してもよい。そして、復帰データ58が存在する場合に、上述のように、再生位置特定部54が、プレイされているゲームの特定、及び、スナップショットデータの特定を行ってもよい。
また、例えば、ユーザAが、自らがプレイしたプレイ内容を表すリプレイ動画像が再生されているリプレイ動画像表示画面28の閲覧中に、ユーザAが復帰リンク30をクリックしてもよい。この場合、ユーザAのクライアント14は、この再生位置に対応するゲーム復帰要求をクラウドサービス10に送信する。そして、クラウドサービス10は、ゲーム復帰要求に応じた状況からのゲームの実行を開始して、そのゲームのプレイ内容を表す実況動画像をユーザAのクライアント14にストリーミング配信する。こうすれば、例えば、ユーザAが、自らがプレイした内容を表すリプレイ動画像を見ていて、再度そのゲームを楽しみたくなったときなどに、自らが指定した再生位置に応じた状況からそのゲームを楽しむことができる。
また、例えば、ゲーム状況データは、例えば、ゲームにおけるパラメータやステータスを示すデータでもよい。また、動画像IDが、上述のようなリプレイ動画像に含まれるメタ情報ではなく、リプレイ動画像に関連付けられている属性データであってもよい。また、例えば、クラウドサービス10で実現されている機能が単一のサーバにより実現されていてもよい。
また、ゲームプログラムはエミュレータ38上で実行される必要はなく、例えば、クラウドサービス10やクライアント14のシステムソフトウェア(オペレーティングシステム等)上で実行されてもよい。また、例えば、クライアント14がゲーム装置である場合において、リプレイ動画像の再生中に、ユーザBが復帰リンク30をクリックした際に、クライアント14が、再生されているリプレイ動画像の動画像IDと再生時点のフレーム画像のフレームIDとの組合せに対応する、オブジェクト群の位置や向きを示すゲーム状況データを生成するようにしてもよい。そして、ゲーム装置であるクライアント14が、生成されたゲーム状況データが示す状況からリプレイ動画像に対応するゲームを実行するようにしてもよい。
また、動画像管理システム12は、クラウドサービス10を提供する事業者とは異なる事業者によって動画像配信サービスが提供されている一般的なサーバであっても構わない。
また、上記の具体的な数値や文字列や図面中の具体的な数値や文字列は例示であり、これらの数値や文字列には限定されない。