以下、この技術的思想の実施の形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。本開示において示される1以上の実施形態において、各実施形態が含む要素を互いに組み合わせることができ、かつ、当該組み合わせられた結果物も本開示が示す実施形態の一部をなすものとする。
[HMDシステムの構成]
図1を参照して、HMD(Head-Mounted Device)システム100の構成について説明する。図1は、本実施の形態に従うHMDシステム100の構成の概略を表す図である。HMDシステム100は、家庭用のシステムとしてあるいは業務用のシステムとして提供される。
HMDシステム100は、サーバ600と、HMDセット110と、外部機器700と、ネットワーク2と、複数のユーザ端末800とを含む。HMDセット110は、ネットワーク2を介してサーバ600や外部機器700やユーザ端末800と通信可能に構成される。HMDセット110は、HMD120と、コンピュータ200と、HMDセンサ410と、ディスプレイ430と、コントローラ300とを備える。HMD120は、モニタ130と、注視センサ140と、第1カメラ150と、第2カメラ160と、マイク170と、スピーカ180とを含む。コントローラ300は、モーションセンサ420を含み得る。
ある局面において、コンピュータ200は、インターネットその他のネットワーク2に接続可能であり、ネットワーク2に接続されているサーバ600その他のコンピュータと通信可能である。その他のコンピュータとしては、例えば、ユーザ端末800、外部機器700、他のHMDセット110のコンピュータなどが挙げられる。別の局面において、HMD120は、HMDセンサ410の代わりに、センサ190を含み得る。
HMD120は、プレイヤ5の頭部に装着され、動作中に仮想空間をプレイヤ5に提供し得る。より具体的には、HMD120は、右目用の画像および左目用の画像をモニタ130にそれぞれ表示する。プレイヤ5の各目がそれぞれの画像を視認すると、プレイヤ5は、両目の視差に基づき当該画像を3次元画像として認識し得る。HMD120は、モニタを備える所謂ヘッドマウントディスプレイと、スマートフォンその他のモニタを有する端末を装着可能なヘッドマウント機器のいずれをも含み得る。HMD120は、例えば、所定の達成条件を成立させることによりクリアとなるゲームをプレイヤ5にプレイさせるための仮想空間を提供する。プレイヤ5は、ゲームのプレイ画面をユーザ端末800において表示可能とするためのデータを配信するため、配信者ともいう。
なお、ゲームのジャンルは、特定のジャンルに限られず、HMDシステム100は、あらゆるジャンルのゲームを実行し得る。例えば、テニス、卓球、ドッジボール、野球、サッカーおよびホッケーなどのスポーツを題材としたゲーム、パズルゲーム、クイズゲーム、RPG(Role-Playing Game)、アドベンチャーゲーム、シューティングゲーム、シミュレーションゲーム、育成ゲーム、ならびに、アクションゲームなどであってもよい。
また、本ゲームのプレイ形態は、特定のプレイ形態に限られない。HMDシステム100は、あらゆるプレイ形態のゲームをプレイさせる仮想空間を提供し得る。例えば、単一のプレイヤ5によるシングルプレイゲーム、および、複数のプレイヤ5によるマルチプレイゲーム、また、マルチプレイゲームの中でも、複数のプレイヤ5が対戦する対戦ゲーム、および、複数のプレイヤ5が協力する協力プレイゲームなどであってもよい。
モニタ130は、例えば、非透過型の表示装置として実現される。ある局面において、モニタ130は、プレイヤ5の両目の前方に位置するようにHMD120の本体に配置されている。したがって、プレイヤ5は、モニタ130に表示される3次元画像を視認すると、仮想空間に没入することができる。ある局面において、仮想空間には、例えば、プレイヤ5が操作可能なアバターオブジェクトや、他のオブジェクトが配置される。ある局面において、モニタ130は、所謂スマートフォンその他の情報表示端末が備える液晶モニタまたは有機EL(Electro Luminescence)モニタとして実現され得る。
別の局面において、モニタ130は、透過型の表示装置として実現され得る。この場合、HMD120は、図1に示されるようにプレイヤ5の目を覆う密閉型ではなく、メガネ型のような開放型であり得る。透過型のモニタ130は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。モニタ130は、仮想空間を構成する画像の一部と、現実空間とを同時に表示する構成を含んでいてもよい。例えば、モニタ130は、HMD120に搭載されたカメラで撮影した現実空間の画像を表示してもよいし、一部の透過率を高く設定することにより現実空間を視認可能にしてもよい。
ある局面において、モニタ130は、右目用の画像を表示するためのサブモニタと、左目用の画像を表示するためのサブモニタとを含み得る。別の局面において、モニタ130は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、モニタ130は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
ある局面において、HMD120は、図示せぬ複数の光源を含む。各光源は例えば、赤外線を発するLED(Light Emitting Diode)により実現される。HMDセンサ410は、HMD120の動きを検出するためのポジショントラッキング機能を有する。より具体的には、HMDセンサ410は、HMD120が発する複数の赤外線を読み取り、現実空間内におけるHMD120の位置および傾きを検出する。
別の局面において、HMDセンサ410は、カメラにより実現されてもよい。この場合、HMDセンサ410は、カメラから出力されるHMD120の画像情報を用いて、画像解析処理を実行することにより、HMD120の位置および傾きを検出することができる。
別の局面において、HMD120は、位置検出器として、HMDセンサ410の代わりに、あるいはHMDセンサ410に加えてセンサ190を備えてもよい。HMD120は、センサ190を用いて、HMD120自身の位置および傾きを検出し得る。例えば、センサ190が角速度センサ、地磁気センサ、あるいは加速度センサである場合、HMD120は、HMDセンサ410の代わりに、これらの各センサのいずれかを用いて、自身の位置および傾きを検出し得る。一例として、センサ190が角速度センサである場合、角速度センサは、現実空間におけるHMD120の3軸周りの角速度を経時的に検出する。HMD120は、各角速度に基づいて、HMD120の3軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、HMD120の傾きを算出する。
注視センサ140は、プレイヤ5の右目および左目の視線が向けられる方向を検出する。つまり、注視センサ140は、プレイヤ5の視線を検出する。視線の方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ140は、当該アイトラッキング機能を有するセンサにより実現される。ある局面において、注視センサ140は、右目用のセンサおよび左目用のセンサを含むことが好ましい。注視センサ140は、例えば、プレイヤ5の右目および左目に赤外線を照射するとともに、照射光に対する角膜および虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ140は、検出した各回転角に基づいて、プレイヤ5の視線を検知することができる。
第1カメラ150は、プレイヤ5の顔の下部を撮影する。より具体的には、第1カメラ150は、プレイヤ5の鼻および口などを撮影する。第2カメラ160は、プレイヤ5の目および眉などを撮影する。HMD120のプレイヤ5側の筐体をHMD120の内側、HMD120のプレイヤ5とは逆側の筐体をHMD120の外側と定義する。ある局面において、第1カメラ150は、HMD120の外側に配置され、第2カメラ160は、HMD120の内側に配置され得る。第1カメラ150および第2カメラ160が生成した画像は、コンピュータ200に入力される。別の局面において、第1カメラ150と第2カメラ160とを1台のカメラとして実現し、この1台のカメラでプレイヤ5の顔を撮影するようにしてもよい。
マイク170は、プレイヤ5の発話を音声信号(電気信号)に変換してコンピュータ200に出力する。スピーカ180は、音声信号を音声に変換してプレイヤ5に出力する。別の局面において、HMD120は、スピーカ180に替えてイヤホンを含み得る。
コントローラ300は、有線または無線によりコンピュータ200に接続されている。コントローラ300は、プレイヤ5からコンピュータ200への命令の入力を受け付ける。ある局面において、コントローラ300は、プレイヤ5によって把持可能に構成される。別の局面において、コントローラ300は、プレイヤ5の身体あるいは衣類の一部に装着可能に構成される。さらに別の局面において、コントローラ300は、コンピュータ200から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。さらに別の局面において、コントローラ300は、プレイヤ5から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
ある局面において、コントローラ300は、複数の光源を含む。各光源は例えば、赤外線を発するLEDにより実現される。HMDセンサ410は、ポジショントラッキング機能を有する。この場合、HMDセンサ410は、コントローラ300が発する複数の赤外線を読み取り、現実空間内におけるコントローラ300の位置および傾き、即ちプレイヤの身体の動きを検出する。別の局面において、HMDセンサ410は、カメラにより実現されてもよい。この場合、HMDセンサ410は、カメラから出力されるコントローラ300の画像情報を用いて、画像解析処理を実行することにより、コントローラ300の位置および傾きを検出することができる。
モーションセンサ420は、ある局面において、プレイヤ5の手に取り付けられて、プレイヤ5の手の動きを検出する。例えば、モーションセンサ420は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ200に送られる。モーションセンサ420は、例えば、コントローラ300に設けられている。ある局面において、モーションセンサ420は、例えば、プレイヤ5に把持可能に構成されたコントローラ300に設けられている。別の局面において、現実空間における安全のため、コントローラ300は、手袋型のようにプレイヤ5の手に装着されることにより容易に飛んで行かないものに装着される。さらに別の局面において、プレイヤ5に装着されないセンサがプレイヤ5の手の動きを検出してもよい。例えば、プレイヤ5を撮影するカメラの信号が、プレイヤ5の動作を表わす信号として、コンピュータ200に入力されてもよい。モーションセンサ420とコンピュータ200とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Bluetooth(登録商標)その他の公知の通信手法が用いられる。
ディスプレイ430は、モニタ130に表示されている画像と同様の画像を表示する。これにより、HMD120を装着しているプレイヤ5以外のデータ配信にかかわる者(プレイヤ5と同様に配信者ともいう)にも当該プレイヤ5と同様の画像を視聴させることができる。ディスプレイ430に表示される画像は、3次元画像である必要はなく、右目用の画像や左目用の画像であってもよい。ディスプレイ430としては、例えば、液晶ディスプレイや有機ELモニタなどが挙げられる。
サーバ600は、コンピュータ200にプログラムを送信し得る。別の局面において、サーバ600は、コンピュータ200から提供された仮想空間を表示可能にするためのデータを、サーバ600と接続可能な複数のユーザ端末(例えばユーザ端末800A、800C、800D)に配信し得る。なお、コンピュータ200は、サーバ600を介することなく、当該データを配信するようにしてもよい。
サーバ600は、他のプレイヤによって使用されるHMD120に仮想現実を提供するための他のコンピュータ200と通信し得る。例えば、アミューズメント施設において、複数のプレイヤが参加型のゲームを行なう場合、各コンピュータ200は、各プレイヤの動作に基づく信号をサーバ600を介して他のコンピュータ200と通信して、同じ仮想空間において複数のプレイヤが共通のゲームを楽しむことを可能にする。各コンピュータ200は、各プレイヤの動作に基づく信号をサーバ600を介さずに他のコンピュータ200と通信するようにしてもよい。
外部機器700は、コンピュータ200と通信可能な機器であればどのような機器であってもよい。外部機器700は、例えば、ネットワーク2を介してコンピュータ200と通信可能な機器であってもよいし、近距離無線通信や有線接続によりコンピュータ200と直接通信可能な機器であってもよい。外部機器700としては、例えば、スマートデバイス、PC(Personal Computer)、及びコンピュータ200の周辺機器などが挙げられるが、これらに限定されるものではない。
[コンピュータのハードウェア構成]
図2を参照して、本実施の形態に係るコンピュータ200について説明する。図2は、本実施の形態に従うコンピュータ200のハードウェア構成の一例を表すブロック図である。コンピュータ200は、主たる構成要素として、プロセッサ210と、メモリ220と、ストレージ230と、入出力インターフェース(以下、IF)240と、通信IF250とを備える。各構成要素は、それぞれ、バス260に接続されている。
プロセッサ210は、コンピュータ200に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ220またはストレージ230に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ210は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field-Programmable Gate Array)その他のデバイスとして実現される。
メモリ220は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ230からロードされる。データは、コンピュータ200に入力されたデータと、プロセッサ210によって生成されたデータとを含む。ある局面において、メモリ220は、RAM(Random Access Memory)その他の揮発メモリとして実現される。
ストレージ230は、プログラムおよびデータを永続的に保持する。ストレージ230は、例えば、ROM(Read-Only Memory)、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ230に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ200との通信を実現するためのプログラムを含む。ストレージ230に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含む。
別の局面において、ストレージ230は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、コンピュータ200に内蔵されたストレージ230の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
入出力IF240は、HMD120、HMDセンサ410、モーションセンサ420およびディスプレイ430との間で信号を通信する。HMD120に含まれるモニタ130,注視センサ140,第1カメラ150,第2カメラ160,マイク170およびスピーカ180は、HMD120の入出力IF240を介してコンピュータ200との通信を行ない得る。ある局面において、入出力IF240は、USB(Universal Serial Bus)、DVI(Digital Visual Interface)、HDMI(登録商標)(High-Definition Multimedia Interface)その他の端子を用いて実現される。入出力IF240は上述のものに限られない。
ある局面において、入出力IF240は、さらに、コントローラ300と通信し得る。例えば、入出力IF240は、コントローラ300およびモーションセンサ420から出力された信号の入力を受ける。別の局面において、入出力IF240は、プロセッサ210から出力された命令を、コントローラ300に送る。当該命令は、振動、音声出力、発光等をコントローラ300に指示する。コントローラ300は、当該命令を受信すると、その命令に応じて、振動、音声出力または発光のいずれかを実行する。
通信IF250は、ネットワーク2に接続されて、ネットワーク2に接続されている他のコンピュータ(例えば、サーバ600)と通信する。ある局面において、通信IF250は、例えば、LAN(Local Area Network)その他の有線通信IF、あるいは、WiFi(Wireless Fidelity)、Bluetooth(登録商標)、NFC(Near Field Communication)その他の無線通信IFとして実現される。通信IF250は上述のものに限られない。
ある局面において、プロセッサ210は、ストレージ230にアクセスし、ストレージ230に格納されている1つ以上のプログラムをメモリ220にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、コンピュータ200のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ210は、入出力IF240を介して、仮想空間を提供するための信号をHMD120に送る。HMD120は、その信号に基づいてモニタ130に映像を表示する。
図2に示される例では、コンピュータ200は、HMD120の外部に設けられる構成が示されているが、別の局面において、コンピュータ200は、HMD120に内蔵されてもよい。一例として、モニタ130を含む携帯型の情報通信端末(例えば、スマートフォン)がコンピュータ200として機能してもよい。
コンピュータ200は、複数のHMD120に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のプレイヤに同一の仮想空間を提供することもできるので、各プレイヤは同一の仮想空間で他のプレイヤと同一のアプリケーションを楽しむことができる。
ある実施の形態において、HMDシステム100では、現実空間における座標系である実座標系が予め設定されている。実座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、並びに、鉛直方向および水平方向の双方に直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。実座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれ、x軸、y軸、z軸と規定される。より具体的には、実座標系において、x軸は現実空間の水平方向に平行である。y軸は、現実空間の鉛直方向に平行である。z軸は現実空間の前後方向に平行である。
ある局面において、HMDセンサ410は、赤外線センサを含む。赤外線センサが、HMD120の各光源から発せられた赤外線をそれぞれ検出すると、HMD120の存在を検出する。HMDセンサ410は、さらに、各点の値(実座標系における各座標値)に基づいて、HMD120を装着したプレイヤ5の動きに応じた、現実空間内におけるHMD120の位置および傾き(向き)を検出する。より詳しくは、HMDセンサ410は、経時的に検出された各値を用いて、HMD120の位置および傾きの時間的変化を検出できる。
HMDセンサ410によって検出されたHMD120の各傾きは、実座標系におけるHMD120の3軸周りの各傾きに相当する。HMDセンサ410は、実座標系におけるHMD120の傾きに基づき、uvw視野座標系をHMD120に設定する。HMD120に設定されるuvw視野座標系は、HMD120を装着したプレイヤ5が仮想空間において物体を見る際の視点座標系に対応する。
[uvw視野座標系]
図3を参照して、uvw視野座標系について説明する。図3は、ある実施の形態に従うHMD120に設定されるuvw視野座標系を概念的に表す図である。HMDセンサ410は、HMD120の起動時に、実座標系におけるHMD120の位置および傾きを検出する。プロセッサ210は、検出された値に基づいて、uvw視野座標系をHMD120に設定する。
図3に示されるように、HMD120は、HMD120を装着したプレイヤ5の頭部を中心(原点)とした3次元のuvw視野座標系を設定する。より具体的には、HMD120は、実座標系を規定する水平方向、鉛直方向、および前後方向(x軸、y軸、z軸)を、実座標系内においてHMD120の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる3つの方向を、HMD120におけるuvw視野座標系のピッチ軸(u軸)、ヨー軸(v軸)、およびロール軸(w軸)として設定する。
ある局面において、HMD120を装着したプレイヤ5が直立し、かつ、正面を視認している場合、プロセッサ210は、実座標系に平行なuvw視野座標系をHMD120に設定する。この場合、実座標系における水平方向(x軸)、鉛直方向(y軸)、および前後方向(z軸)は、HMD120におけるuvw視野座標系のピッチ軸(u軸)、ヨー軸(v軸)、およびロール軸(w軸)に一致する。
uvw視野座標系がHMD120に設定された後、HMDセンサ410は、HMD120の動きに基づいて、設定されたuvw視野座標系におけるHMD120の傾きを検出できる。この場合、HMDセンサ410は、HMD120の傾きとして、uvw視野座標系におけるHMD120のピッチ角(θu)、ヨー角(θv)、およびロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ軸周りのHMD120の傾き角度を表す。ヨー角(θv)は、uvw視野座標系におけるヨー軸周りのHMD120の傾き角度を表す。ロール角(θw)は、uvw視野座標系におけるロール軸周りのHMD120の傾き角度を表す。
HMDセンサ410は、検出されたHMD120の傾きに基づいて、HMD120が動いた後のHMD120におけるuvw視野座標系を、HMD120に設定する。HMD120と、HMD120のuvw視野座標系との関係は、HMD120の位置および傾きに関わらず、常に一定である。HMD120の位置および傾きが変わると、当該位置および傾きの変化に連動して、実座標系におけるHMD120のuvw視野座標系の位置および傾きが変化する。
ある局面において、HMDセンサ410は、赤外線センサからの出力に基づいて取得される赤外線の光強度および複数の点間の相対的な位置関係(例えば、各点間の距離など)に基づいて、HMD120の現実空間内における位置を、HMDセンサ410に対する相対位置として特定してもよい。プロセッサ210は、特定された相対位置に基づいて、現実空間内(実座標系)におけるHMD120のuvw視野座標系の原点を決定してもよい。
[仮想空間]
図4を参照して、仮想空間についてさらに説明する。図4は、ある実施の形態に従う仮想空間11を表現する一態様を概念的に表す図である。仮想空間11は、中心12の360度方向の全体を覆う全天球状の構造を有する。図4では、説明を複雑にしないために、仮想空間11のうちの上半分の天球が例示されている。仮想空間11では各メッシュが規定される。各メッシュの位置は、仮想空間11に規定されるグローバル座標系であるXYZ座標系における座標値として予め規定されている。コンピュータ200は、仮想空間11に展開可能なパノラマ画像13(静止画、動画等)を構成する各部分画像を、仮想空間11において対応する各メッシュにそれぞれ対応付ける。
ある局面において、仮想空間11では、中心12を原点とするXYZ座標系が規定される。XYZ座標系は、例えば、実座標系に平行である。XYZ座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれX軸、Y軸、Z軸として規定される。したがって、XYZ座標系のX軸(水平方向)が実座標系のx軸と平行であり、XYZ座標系のY軸(鉛直方向)が実座標系のy軸と平行であり、XYZ座標系のZ軸(前後方向)が実座標系のz軸と平行である。
HMD120の起動時、すなわちHMD120の初期状態において、仮想カメラ14が、仮想空間11の中心12に配置される。ある局面において、プロセッサ210は、仮想カメラ14が撮影する画像をHMD120のモニタ130に表示する。仮想カメラ14は、現実空間におけるHMD120の動きに連動して、仮想空間11を同様に移動する。これにより、現実空間におけるHMD120の位置および傾きの変化が、仮想空間11において同様に再現され得る。
仮想カメラ14には、HMD120の場合と同様に、uvw視野座標系が規定される。仮想空間11における仮想カメラ14のuvw視野座標系は、現実空間(実座標系)におけるHMD120のuvw視野座標系に連動するように規定されている。したがって、HMD120の傾きが変化すると、それに応じて、仮想カメラ14の傾きも変化する。仮想カメラ14は、HMD120を装着したプレイヤ5の現実空間における移動に連動して、仮想空間11において移動することもできる。
コンピュータ200のプロセッサ210は、仮想カメラ14の位置と傾き(基準視線16)とに基づいて、仮想空間11における視界領域15を規定する。視界領域15は、仮想空間11のうち、HMD120を装着したプレイヤ5が視認する領域に対応する。つまり、仮想カメラ14の位置は、仮想空間11におけるプレイヤ5の視点と言える。
注視センサ140によって検出されるプレイヤ5の視線は、プレイヤ5が物体を視認する際の視点座標系における方向である。HMD120のuvw視野座標系は、プレイヤ5がモニタ130を視認する際の視点座標系に等しい。仮想カメラ14のuvw視野座標系は、HMD120のuvw視野座標系に連動している。したがって、ある局面に従うHMDシステム100は、注視センサ140によって検出されたプレイヤ5の視線を、仮想カメラ14のuvw視野座標系におけるプレイヤ5の視線とみなすことができる。
[プレイヤの視線]
図5を参照して、プレイヤ5の視線の決定について説明する。図5は、ある実施の形態に従うHMD120を装着するプレイヤ5の頭部を上から表した図である。
ある局面において、注視センサ140は、プレイヤ5の右目および左目の各視線を検出する。ある局面において、プレイヤ5が近くを見ている場合、注視センサ140は、視線R1およびL1を検出する。別の局面において、プレイヤ5が遠くを見ている場合、注視センサ140は、視線R2およびL2を検出する。この場合、ロール軸wに対して視線R2およびL2が成す角度は、ロール軸wに対して視線R1およびL1が成す角度よりも小さい。注視センサ140は、検出結果をコンピュータ200に送信する。
コンピュータ200が、視線の検出結果として、視線R1およびL1の検出値を注視センサ140から受信した場合には、その検出値に基づいて、視線R1およびL1の交点である注視点N1を特定する。一方、コンピュータ200は、視線R2およびL2の検出値を注視センサ140から受信した場合には、視線R2およびL2の交点を注視点として特定する。コンピュータ200は、特定した注視点N1の位置に基づき、プレイヤ5の視線N0を特定する。コンピュータ200は、例えば、プレイヤ5の右目Rと左目Lとを結ぶ直線の中点と、注視点N1とを通る直線の延びる方向を、視線N0として検出する。視線N0は、プレイヤ5が両目により実際に視線を向けている方向である。視線N0は、視界領域15に対してプレイヤ5が実際に視線を向けている方向に相当する。
別の局面において、HMDシステム100は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、HMDシステム100は、仮想空間11においてテレビ番組を表示することができる。
さらに別の局面において、HMDシステム100は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
[視界領域]
図6および図7を参照して、視界領域15について説明する。図6は、仮想空間11において視界領域15をX方向から見たYZ断面を表す図である。図7は、仮想空間11において視界領域15をY方向から見たXZ断面を表す図である。
図6に示されるように、YZ断面における視界領域15は、領域18を含む。領域18は、仮想カメラ14の位置と基準視線16と仮想空間11のYZ断面とによって定義される。プロセッサ210は、仮想空間における基準視線16を中心として極角αを含む範囲を、領域18として規定する。
図7に示されるように、XZ断面における視界領域15は、領域19を含む。領域19は、仮想カメラ14の位置と基準視線16と仮想空間11のXZ断面とによって定義される。プロセッサ210は、仮想空間11における基準視線16を中心とした方位角βを含む範囲を、領域19として規定する。極角αおよびβは、仮想カメラ14の位置と仮想カメラ14の傾き(向き)とに応じて定まる。
ある局面において、HMDシステム100は、コンピュータ200からの信号に基づいて、視界画像17をモニタ130に表示させることにより、プレイヤ5に仮想空間11における視界を提供する。視界画像17は、パノラマ画像13のうち視界領域15に対応する部分に相当する画像である。プレイヤ5が、頭部に装着したHMD120を動かすと、その動きに連動して仮想カメラ14も動く。その結果、仮想空間11における視界領域15の位置が変化する。これにより、モニタ130に表示される視界画像17は、パノラマ画像13のうち、仮想空間11においてプレイヤ5が向いた方向の視界領域15に重畳する画像に更新される。プレイヤ5は、仮想空間11における所望の方向を視認することができる。
このように、仮想カメラ14の傾きは仮想空間11におけるプレイヤ5の視線(基準視線16)に相当し、仮想カメラ14が配置される位置は、仮想空間11におけるプレイヤ5の視点に相当する。したがって、仮想カメラ14の位置または傾きを変更することにより、モニタ130に表示される画像が更新され、プレイヤ5の視界が移動される。
プレイヤ5は、HMD120を装着している間、現実世界を視認することなく、仮想空間11に展開されるパノラマ画像13のみを視認できる。そのため、HMDシステム100は、仮想空間11への高い没入感覚をプレイヤ5に与えることができる。
ある局面において、プロセッサ210は、HMD120を装着したプレイヤ5の現実空間における移動に連動して、仮想空間11において仮想カメラ14を移動し得る。この場合、プロセッサ210は、仮想空間11における仮想カメラ14の位置および傾きに基づいて、HMD120のモニタ130に投影される画像領域(視界領域15)を特定する。
ある局面において、仮想カメラ14は、2つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含み得る。プレイヤ5が3次元の仮想空間11を認識できるように、適切な視差が、2つの仮想カメラに設定される。別の局面において、仮想カメラ14を1つの仮想カメラにより実現してもよい。この場合、1つの仮想カメラにより得られた画像から、右目用の画像と左目用の画像とを生成するようにしてもよい。本実施の形態においては、仮想カメラ14が2つの仮想カメラを含み、2つの仮想カメラのロール軸が合成されることによって生成されるロール軸(w)がHMD120のロール軸(w)に適合されるように構成されているものとして、本開示に係る技術思想を例示する。
[仮想空間に配置されるオブジェクト]
図8を参照して、仮想空間11の一例について説明する。仮想空間11には、複数種類のオブジェクトが配置される。複数種類のオブジェクトには、プレイヤ5の分身であるアバターオブジェクト6、コントローラ300によって操作される仮想手などの操作オブジェクト、キャラクタオブジェクト、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、街並み、動物等の背景オブジェクトなどが含まれる。図8には、アバターオブジェクト6、およびオブジェクトA~Dが配置されている例が示されている。オブジェクトA~Dとしては、例えば、キャラクタオブジェクトや背景オブジェクトなどが挙げられるが、これらに限定されるものではない。アバターオブジェクト6は、プレイヤ5の動きに応じた位置において動作・配置される。また、オブジェクトA~Dなど(以下、他のオブジェクトともいう)は、ゲームプログラムに基づき、ゲームの進行に応じた位置において動作・配置される。
例えば、アバターオブジェクト6を敵キャラクタと対戦させる対戦ゲームでは、敵キャラクタのオブジェクト、当該敵キャラクタの攻撃を妨害する障害物のオブジェクト等が、他のオブジェクトに相当する。また、アバターオブジェクトにブロックの配置を並び替えさせるパズルゲームでは、色や形状が異なる複数のブロックのオブジェクト等が、他のオブジェクトに相当する。
さらに、アバターオブジェクトを密室から脱出させる脱出ゲームでは、室内に配置される家具(テーブル、椅子、タンス、ベッド等)のオブジェクト、脱出のためのアイテム(鍵や日記)のオブジェクト等が、他のオブジェクトに相当する。また、アバターオブジェクトに楽器を弾かせる音楽ゲームでは、楽器(ピアノ、バイオリン等)のオブジェクト、当該アバターオブジェクトとともに共演する他のキャラクタのオブジェクト等が、他のオブジェクトに相当する。
[コントローラ]
図9を参照して、コントローラ300の一例について説明する。図9は、ある実施の形態に従うコントローラ300の概略構成を表す図である。
図9に示されるように、ある局面において、コントローラ300は、右コントローラ300Rと図示せぬ左コントローラとを含み得る。右コントローラ300Rは、プレイヤ5の右手で操作される。左コントローラは、プレイヤ5の左手で操作される。ある局面において、右コントローラ300Rと左コントローラとは、別個の装置として対称に構成される。したがって、プレイヤ5は、右コントローラ300Rを把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の局面において、コントローラ300は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ300Rについて説明する。
右コントローラ300Rは、グリップ310と、フレーム320と、天面330とを備える。グリップ310は、プレイヤ5の右手によって把持されるように構成されている。たとえば、グリップ310は、プレイヤ5の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
グリップ310は、ボタン340,350と、モーションセンサ420とを含む。ボタン340は、グリップ310の側面に配置され、右手の中指による操作を受け付ける。ボタン350は、グリップ310の前面に配置され、右手の人差し指による操作を受け付ける。ある局面において、ボタン340,350は、トリガー式のボタンとして構成される。モーションセンサ420は、グリップ310の筐体に内蔵されている。プレイヤ5の動作がカメラその他の装置によってプレイヤ5の周りから検出可能である場合には、グリップ310は、モーションセンサ420を備えなくてもよい。
フレーム320は、その円周方向に沿って配置された複数の赤外線LED360を含む。赤外線LED360は、コントローラ300を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED360から発せられた赤外線は、右コントローラ300Rと左コントローラとの各位置や姿勢(傾き、向き)を検出するために使用され得る。図9に示される例では、二列に配置された赤外線LED360が示されているが、配列の数は図9に示されるものに限られない。一列あるいは3列以上の配列が使用されてもよい。
天面330は、ボタン370,380と、アナログスティック390とを備える。ボタン370,380は、プッシュ式ボタンとして構成される。ボタン370,380は、プレイヤ5の右手の親指による操作を受け付ける。アナログスティック390は、ある局面において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、たとえば、仮想空間11に配置されるオブジェクトを移動するための操作を含む。
ある局面において、右コントローラ300Rおよび左コントローラは、赤外線LED360その他の部材を駆動するための電池を含む。電池は、充電式、ボタン型、乾電池型などを含むが、これらに限定されない。別の局面において、右コントローラ300Rと左コントローラは、たとえば、コンピュータ200のUSBIFに接続され得る。この場合、右コントローラ300Rおよび左コントローラは、電池を必要としない。
図9の状態(A)および状態(B)に示されるように、例えば、プレイヤ5の右手に対して、ヨー、ロール、ピッチの各方向が規定される。プレイヤ5が親指と人差し指とを伸ばした場合に、親指の伸びる方向がヨー方向、人差し指の伸びる方向がロール方向、ヨー方向の軸およびロール方向の軸によって規定される平面に垂直な方向がピッチ方向として規定される。
[サーバのハードウェア構成]
図10を参照して、本実施の形態に係るサーバ600について説明する。図10は、ある実施の形態に従うサーバ600のハードウェア構成の一例を表すブロック図である。サーバ600は、主たる構成要素として、プロセッサ610と、メモリ620と、ストレージ630と、入出力IF640と、通信IF650とを備える。各構成要素は、それぞれ、バス660に接続されている。
プロセッサ610は、サーバ600に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ620またはストレージ630に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ610は、CPU、GPU、MPU、FPGAその他のデバイスとして実現される。
メモリ620は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ630からロードされる。データは、サーバ600に入力されたデータと、プロセッサ610によって生成されたデータとを含む。ある局面において、メモリ620は、RAMその他の揮発メモリとして実現される。
ストレージ630は、プログラムおよびデータを永続的に保持する。ストレージ630は、例えば、ROM、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ630に格納されるプログラムは、HMDシステム100およびユーザ端末800の各々において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、コンピュータ200およびユーザ端末800との通信を実現するためのプログラムを含んでもよい。ストレージ630に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含んでもよい。
別の局面において、ストレージ630は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、サーバ600に内蔵されたストレージ630の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
入出力IF640は、入出力機器との間で信号を通信する。ある局面において、入出力IF640は、USB、DVI、HDMI(登録商標)その他の端子を用いて実現される。入出力IF640は上述のものに限られない。
通信IF650は、ネットワーク2に接続されて、ネットワーク2に接続されているコンピュータ200およびユーザ端末800の各々と通信する。ある局面において、通信IF650は、例えば、LANその他の有線通信IF、あるいは、WiFi、Bluetooth(登録商標)、NFCその他の無線通信IFとして実現される。通信IF650は上述のものに限られない。
ある局面において、プロセッサ610は、ストレージ630にアクセスし、ストレージ630に格納されている1つ以上のプログラムをメモリ620にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、サーバ600のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ610は、入出力IF640を介して、仮想空間を提供するための信号をコンピュータ200およびユーザ端末800の各々に送ってもよい。
[HMDの制御装置]
図11を参照して、HMD120の制御装置について説明する。ある実施の形態において、制御装置は周知の構成を有するコンピュータ200によって実現される。図11は、ある実施の形態に従うコンピュータ200をモジュール構成として表わすブロック図である。
図11に示されるように、コンピュータ200は、コントロールモジュール510と、レンダリングモジュール520と、メモリモジュール530と、通信制御モジュール540とを備える。ある局面において、コントロールモジュール510とレンダリングモジュール520とは、プロセッサ210によって実現される。別の局面において、複数のプロセッサ210がコントロールモジュール510とレンダリングモジュール520として作動してもよい。メモリモジュール530は、メモリ220またはストレージ230によって実現される。通信制御モジュール540は、通信IF250によって実現される。
コントロールモジュール510は、プレイヤ5に提供される仮想空間11を制御する。コントロールモジュール510は、仮想空間11を表す仮想空間データを用いて、HMDシステム100における仮想空間11を規定する。仮想空間データは、例えば、メモリモジュール530に記憶されている。コントロールモジュール510が、仮想空間データを生成したり、サーバ600などから仮想空間データを取得するようにしたりしてもよい。
コントロールモジュール510は、オブジェクトを表すオブジェクトデータ(オブジェクトを配置(表示)するための配置用データ(表示用データ))を用いて、仮想空間11にオブジェクトを配置する。オブジェクトデータは、例えば、メモリモジュール530に記憶されている。コントロールモジュール510が、オブジェクトデータを生成したり、サーバ600などからオブジェクトデータを取得するようにしたりしてもよい。
コントロールモジュール510は、プレイヤ5を含む画像に基づいて、プレイヤ5を模したアバターオブジェクトを仮想空間11に配置する。ある局面において、コントロールモジュール510は、複数種類のアバターオブジェクト(例えば、動物を模したオブジェクトや、デフォルメされた人のオブジェクト)の中からプレイヤ5による選択を受け付けたアバターオブジェクトを仮想空間11に配置する。ある局面において、コントロールモジュール510は、ネットワーク2を介して接続される他のコンピュータ200のプレイヤ5のアバターオブジェクトを仮想空間11に配置する。別の局面において、コントロールモジュール510は、プレイヤ5のアバターオブジェクトを仮想空間11に配置してもよい。
コントロールモジュール510は、HMDセンサ410の出力に基づいてHMD120の傾きを特定する。別の局面において、コントロールモジュール510は、モーションセンサとして機能するセンサ190の出力に基づいてHMD120の傾きを特定する。コントロールモジュール510は、第1カメラ150および第2カメラ160が生成するプレイヤ5の顔の画像から、プレイヤ5の顔を構成する器官(例えば、口,目,眉)を検出する。コントロールモジュール510は、検出した各器官の動き(形状)を検出する。
コントロールモジュール510は、注視センサ140からの信号に基づいて、プレイヤ5の仮想空間11における視線を検出する。コントロールモジュール510は、検出したプレイヤ5の視線と仮想空間11の天球とが交わる視点位置(XYZ座標系における座標値)を検出する。より具体的には、コントロールモジュール510は、uvw座標系で規定されるプレイヤ5の視線と、仮想カメラ14の位置および傾きとに基づいて、視点位置を検出する。コントロールモジュール510は、検出した視点位置をサーバ600に送信する。別の局面において、コントロールモジュール510は、プレイヤ5の視線を表す視線情報をサーバ600に送信するように構成されてもよい。係る場合、サーバ600が受信した視線情報に基づいて視点位置を算出し得る。
コントロールモジュール510は、HMDセンサ410が検出するプレイヤ5の身体の動きをアバターオブジェクトに反映する。例えば、コントロールモジュール510は、プレイヤ5がしゃがみこんだことを検知して、アバターオブジェクトをしゃがみこませる。コントロールモジュール510は、検出した顔器官の動作を、仮想空間11に配置されるアバターオブジェクトの顔に反映させる。ある局面において、コントロールモジュール510は、コントローラ300の動きをアバターオブジェクトや操作オブジェクトに反映する。この場合、コントローラ300は、コントローラ300の動きを検知するためのモーションセンサ、加速度センサ、または複数の発光素子(例えば、赤外線LED)などを備える。別の局面において、コントロールモジュール510は、サーバ600から他のプレイヤ5の視線情報を受信し、当該他のプレイヤ5のアバターオブジェクトの視線に反映させてもよい。
コントロールモジュール510は、仮想空間11においてプレイヤ5の操作を受け付けるための操作オブジェクトを含むオブジェクトを仮想空間11に配置する。プレイヤ5は、操作オブジェクトを操作することにより、例えば、仮想空間11に配置されるオブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、プレイヤ5の手に相当する仮想手である手オブジェクト等を含み得る。ある局面において、コントロールモジュール510は、モーションセンサ420の出力に基づいて現実空間におけるプレイヤ5の手の動きに連動するように仮想空間11において手オブジェクトを動かす。ある局面において、操作オブジェクトは、アバターオブジェクトの手の部分に相当し得る。
コントロールモジュール510は、仮想空間11に配置されるオブジェクトのそれぞれが、他のオブジェクトと衝突した場合に、当該衝突を検出する。コントロールモジュール510は、例えば、あるオブジェクトのコリジョンエリアと、別のオブジェクトのコリジョンエリアとが触れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行なう。コントロールモジュール510は、オブジェクトとオブジェクトとが触れている状態から離れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行なう。コントロールモジュール510は、オブジェクトとオブジェクトとが触れている状態であることを検出することができる。例えば、コントロールモジュール510は、操作オブジェクトと、他のオブジェクトとが触れたときに、これら操作オブジェクトと他のオブジェクトとが触れたことを検出して、予め定められた処理を行なう。
ある局面において、コントロールモジュール510は、HMD120のモニタ130における画像表示を制御する。例えば、コントロールモジュール510は、仮想空間11に仮想カメラ14を配置する。コントロールモジュール510は、仮想空間11における仮想カメラ14の位置と、仮想カメラ14の傾き(向き)を制御する。コントロールモジュール510は、HMD120を装着したプレイヤ5の頭部の傾きと、仮想カメラ14の位置に応じて、視界領域15を規定する。レンダリングモジュール520は、決定された視界領域15に基づいて、モニタ130に表示される視界画像17を生成する。レンダリングモジュール520により生成された視界画像17は、通信制御モジュール540によってHMD120に出力される。
コントロールモジュール510は、HMD120から、プレイヤ5のマイク170を用いた発話を検出すると、当該発話に対応する音声データの送信対象のコンピュータ200を特定する。音声データは、コントロールモジュール510によって特定されたコンピュータ200に送信される。コントロールモジュール510は、ネットワーク2を介して他のユーザのコンピュータ200から音声データを受信すると、当該音声データに対応する音声(発話)をスピーカ180から出力する。
メモリモジュール530は、コンピュータ200が仮想空間11をプレイヤ5に提供するために使用されるデータを保持している。ある局面において、メモリモジュール530は、空間情報と、オブジェクト情報と、プレイヤ情報とを保持している。
空間情報は、仮想空間11を提供するために規定された1つ以上のテンプレートを保持している。
オブジェクト情報は、仮想空間11を構成する複数のパノラマ画像13、仮想空間11にオブジェクトを配置するためのオブジェクトデータを含む。パノラマ画像13は、静止画像および動画像を含み得る。パノラマ画像13は、非現実空間の画像と現実空間の画像とを含み得る。非現実空間の画像としては、例えば、コンピュータグラフィックスで生成された画像が挙げられる。
プレイヤ情報は、プレイヤ5を識別するプレイヤIDを保持する。プレイヤIDは、例えば、プレイヤが使用するコンピュータ200に設定されるIP(Internet Protocol)アドレスまたはMAC(Media Access Control)アドレスであり得る。別の局面において、プレイヤIDはプレイヤによって設定され得る。プレイヤ情報は、HMDシステム100の制御装置としてコンピュータ200を機能させるためのプログラム等を含む。
メモリモジュール530に格納されているデータおよびプログラムは、HMD120のプレイヤ5によって入力される。あるいは、プロセッサ210が、当該コンテンツを提供する事業者が運営するコンピュータ(例えば、サーバ600)からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール530に格納する。
通信制御モジュール540は、ネットワーク2を介して、サーバ600その他の情報通信装置と通信し得る。
ある局面において、コントロールモジュール510及びレンダリングモジュール520は、例えば、ユニティテクノロジーズ社によって提供されるUnity(登録商標)を用いて実現され得る。別の局面において、コントロールモジュール510及びレンダリングモジュール520は、各処理を実現する回路素子の組み合わせとしても実現され得る。
コンピュータ200における処理は、ハードウェアと、プロセッサ210により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール530に予め格納されている場合がある。ソフトウェアは、CD-ROMその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール540を介してサーバ600その他のコンピュータからダウンロードされた後、記憶モジュールに一旦格納される。そのソフトウェアは、プロセッサ210によって記憶モジュールから読み出され、実行可能なプログラムの形式でRAMに格納される。プロセッサ210は、そのプログラムを実行する。
[モジュールの詳細構成]
図12を参照して、コンピュータ200のモジュール構成の詳細について説明する。図12は、ある実施の形態に従うコンピュータ200のモジュールの詳細構成を表わすブロック図である。図12に示されるように、コントロールモジュール510は、仮想オブジェクト生成モジュール1421、仮想カメラ制御モジュール1422、操作オブジェクト制御モジュール1423、アバターオブジェクト制御モジュール1424、動き検出モジュール1425、衝突検出モジュール1426、および仮想オブジェクト制御モジュール1427を備えている。
仮想オブジェクト生成モジュール1421は、各種の仮想オブジェクトを仮想空間11に配置するためのデータを生成する。ある局面において、仮想オブジェクトは、例えば、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、街並み、動物等を含み得る。ある局面において、仮想オブジェクトは、アバターオブジェクト、操作オブジェクト、およびステージオブジェクトを含み得る。
仮想カメラ制御モジュール1422は、仮想空間11における仮想カメラ14の挙動を制御する。仮想カメラ制御モジュール1422は、例えば、仮想空間11における仮想カメラ14の配置位置と、仮想カメラ14の向き(傾き)とを制御する。
操作オブジェクト制御モジュール1423は、仮想空間11においてプレイヤ5の操作を受け付けるための操作オブジェクトを制御する。プレイヤ5は、操作オブジェクトを操作することによって、例えば、仮想空間11に配置される仮想オブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、HMD120を装着したプレイヤ5の手に相当する手オブジェクト(仮想手)等を含み得る。ある局面において、操作オブジェクトは、後述するアバターオブジェクトの手の部分に相当し得る。
アバターオブジェクト制御モジュール1424は、HMDセンサ410が検出するプレイヤ5の動きをアバターオブジェクトに反映する。例えば、アバターオブジェクト制御モジュール1424は、プレイヤ5がしゃがみこんだことを検知して、アバターオブジェクトをしゃがみこませるためのデータを生成する。ある局面において、アバターオブジェクト制御モジュール1424は、コントローラ300の動きをアバターオブジェクトに反映する。この場合、コントローラ300は、コントローラ300の動きを検知するためのモーションセンサ、加速度センサ、または複数の発光素子(例えば、赤外線LED)などを備える。アバターオブジェクト制御モジュール1424は、動き検出モジュール1425が検出した顔器官の動作を、仮想空間11に配置されるアバターオブジェクトの顔に反映させる。つまり、アバターオブジェクト制御モジュール1424は、プレイヤ5の顔の動作をアバターオブジェクトに反映する。
動き検出モジュール1425は、プレイヤ5の動きを検出する。動き検出モジュール1425は、例えば、コントローラ300の出力に応じて、プレイヤ5の手の動きを検出する。動き検出モジュール1425は、例えば、HMDセンサ410の出力に応じて、プレイヤ5の身体の動きを検出する。動き検出モジュール1425は、プレイヤ5の顔器官の動作を検出することもできる。
衝突検出モジュール1426は、仮想空間11に配置される仮想オブジェクトのそれぞれが、他の仮想オブジェクトと衝突した場合に、当該衝突を検出する。衝突検出モジュール1426は、例えば、ある仮想オブジェクトと、別の仮想オブジェクトとが触れたタイミングを検出することができる。衝突検出モジュール1426は、ある仮想オブジェクトと他の仮想オブジェクトとが触れている状態から離れたタイミングを検出することができる。衝突検出モジュール1426は、ある仮想オブジェクトと他の仮想オブジェクトとが触れている状態であることを検出することもできる。衝突検出モジュール1426は、例えば、操作オブジェクトと、他の仮想オブジェクトとが触れたときに、これら操作オブジェクトと他のオブジェクトとが触れたことを検出する。衝突検出モジュール1426は、これらの検出結果に基づいて、予め定められた処理を実行する。
仮想オブジェクト制御モジュール1427は、仮想空間11において、アバターオブジェクトを除く仮想オブジェクトの挙動を制御する。一例として、仮想オブジェクト制御モジュール1427は、仮想オブジェクトを変形させる。別の例として、仮想オブジェクト制御モジュール1427は、仮想オブジェクトの配置位置を変更する。別の例として、仮想オブジェクト制御モジュール1427は、仮想オブジェクトを移動させる。
[ユーザ端末のハードウェア構成]
図13を参照して、本実施の形態に係るユーザ端末(視聴者端末)800について説明する。図13は、ある実施の形態に従うユーザ端末800のハードウェア構成の一例を表すブロック図である。ユーザ端末800(コンピュータ、情報処理装置)は、スマートフォン、フィーチャーフォン、PDA(Personal Digital Assistant)、またはタブレット型コンピュータ等の携帯端末であってよい。ユーザ端末800は、ゲームプレイに適したゲーム装置であってもよい。ユーザ端末800は図示の通り、プロセッサ810と、メモリ820と、ストレージ830と、通信IF13と、入出力IF840と、タッチスクリーン870(表示部)と、カメラ860と、測距センサ880とを備える。ユーザ端末800が備えるこれらの構成は、通信バスによって互いに電気的に接続される。なお、ユーザ端末800は、タッチスクリーン870に代えて、または、加えて、ユーザ端末800本体とは別に構成されたディスプレイ(表示部)を接続可能な入出力IF840を備えていてもよい。
また、図13に示すように、ユーザ端末800は、1つ以上のコントローラ1020と通信可能に構成されることとしてもよい。コントローラ1020は、例えば、Bluetooth(登録商標)等の通信規格に従って、ユーザ端末800と通信を確立する。コントローラ1020は、1つ以上のボタン等を有していてもよく、該ボタン等に対するユーザ8の入力操作に基づく出力値をユーザ端末800へ送信する。なお、ユーザ8は、配信されるコンテンツを視聴する者でもあるため、視聴者ともいう。また、コントローラ1020は、加速度センサ、および、角速度センサ等の各種センサを有していてもよく、該各種センサの出力値をユーザ端末800へ送信する。
なお、ユーザ端末800がカメラ860および測距センサ880を備えることに代えて、または、加えて、コントローラ1020がカメラ860および測距センサ880を有していてもよい。
ユーザ端末800は、例えばゲーム(あるいは視聴)開始時に、コントローラ1020を使用するユーザ8に、該ユーザ8の名前またはログインID等のユーザ識別情報を、該コントローラ1020を介して入力させることが望ましい。これにより、ユーザ端末800は、コントローラ1020とユーザ8とを紐付けることが可能となり、受信した出力値の送信元(コントローラ1020)に基づいて、該出力値がどのユーザ8のものであるかを特定することができる。
ユーザ端末800が複数のコントローラ1020と通信する場合、各コントローラ1020を各ユーザ8が把持することで、ネットワーク2を介してサーバ600などの他の装置と通信せずに、該1台のユーザ端末800でマルチプレイを実現することができる。また、各ユーザ端末800が無線LAN規格等の無線規格により互いに通信接続する(サーバ600を介さずに通信接続する)ことで、複数台のユーザ端末800によりローカルでマルチプレイを実現することもできる。1台のユーザ端末800によりローカルで上述のマルチプレイを実現する場合、ユーザ端末800は、さらに、サーバ600が備える後述する種々の機能の少なくとも一部を備えていてもよい。また、複数のユーザ端末800によりローカルで上述のマルチプレイを実現する場合、複数のユーザ端末800は、サーバ600が備える後述する種々の機能を分散して備えていてもよい。
なお、ローカルで上述のマルチプレイを実現する場合であっても、ユーザ端末800はサーバ600と通信を行ってもよい。例えば、あるゲームにおける成績または勝敗等のプレイ結果を示す情報と、ユーザ識別情報とを対応付けてサーバ600に送信してもよい。
また、コントローラ1020は、ユーザ端末800に着脱可能な構成であるとしてもよい。この場合、ユーザ端末800の筐体における少なくともいずれかの面に、コントローラ1020との結合部が設けられていてもよい。該結合部を介して有線によりユーザ端末800とコントローラ1020とが結合している場合は、ユーザ端末800とコントローラ1020とは、有線を介して信号を送受信する。
図13に示すように、ユーザ端末800は、外部のメモリカード等の記憶媒体1030の装着を、入出力IF840を介して受け付けてもよい。これにより、ユーザ端末800は、記憶媒体1030に記録されるプログラム及びデータを読み込むことができる。記憶媒体1030に記録されるプログラムは、例えばゲームプログラムである。
ユーザ端末800は、サーバ600等の外部の装置と通信することにより取得したゲームプログラムをユーザ端末800のメモリ820に記憶してもよいし、記憶媒体1030から読み込むことにより取得したゲームプログラムをメモリ820に記憶してもよい。
以上で説明したとおり、ユーザ端末800は、該ユーザ端末800に対して情報を入力する機構の一例として、通信IF850、入出力IF840、タッチスクリーン870、カメラ860、測距センサ880、およびスピーカ890を備える。入力する機構としての上述の各部は、ユーザ8の入力操作を受け付けるように構成された操作部と捉えることができる。
例えば、操作部が、カメラ860および測距センサ880の少なくともいずれか一方で構成される場合、該操作部が、ユーザ端末800の近傍の物体1010を検出し、当該物体の検出結果から入力操作を特定する。一例として、物体1010としてのユーザ8の手、予め定められた形状のマーカーなどが検出され、検出結果として得られた物体1010の色、形状、動き、または、種類などに基づいて入力操作が特定される。より具体的には、ユーザ端末800は、カメラ860の撮影画像からユーザ8の手が検出された場合、該撮影画像に基づき検出されるジェスチャ(ユーザ8の手の一連の動き)を、ユーザ8の入力操作として特定し、受け付ける。なお、撮影画像は静止画であっても動画であってもよい。
あるいは、操作部がタッチスクリーン870で構成される場合、ユーザ端末800は、タッチスクリーン870の入力部8701に対して実施されたユーザ8の操作をユーザ8の入力操作として特定し、受け付ける。あるいは、操作部が通信IF850で構成される場合、ユーザ端末800は、コントローラ1020から送信される信号(例えば、出力値)をユーザ8の入力操作として特定し、受け付ける。あるいは、操作部が入出力IF840で構成される場合、該入出力IF840と接続されるコントローラ1020とは異なる入力装置(図示せず)から出力される信号をユーザ8の入力操作として特定し、受け付ける。
プロセッサ810は、ユーザ端末800全体の動作を制御する。プロセッサ810は、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、およびGPU(Graphics Processing Unit)を含む。
プロセッサ810はストレージ830からプログラムを読み出し、メモリ820に展開する。プロセッサ810は展開したプログラムを実行する。
メモリ820は主記憶装置である。メモリ820は、ROM(Read Only Memory)およびRAM(Random Access Memory)等の記憶装置で構成される。メモリ820は、プロセッサ810が後述するストレージ830から読み出したプログラムや仮想空間データ、オブジェクトデータ等を一時的に記憶することにより、プロセッサ810に作業領域を提供する。メモリ820は、プロセッサ810がプログラムに従って動作している間に生成した各種データも一時的に記憶する。
本実施形態においてプログラムとは、ゲームをユーザ端末800により実現するためのゲームプログラムであってもよい。あるいは、該プログラムは、該ゲームをユーザ端末800とサーバ600との協働により実現するためのゲームプログラムであってもよい。あるいは、該プログラムは、該ゲームをユーザ端末800とサーバ600とHMDセット110との協働により実現するためのゲームプログラムであってもよい。なお、ユーザ端末800とサーバ600との協働により実現されるゲームおよびユーザ端末800とサーバ600とHMDセット110との協働により実現されるゲームは、一例として、ユーザ端末800において起動されたブラウザ上で実行されるゲームであってもよい。あるいは、該プログラムは、該ゲームを複数のユーザ端末800の協働により実現するためのゲームプログラムであってもよい。また、各種データとは、ユーザ情報およびゲーム情報などのゲームに関するデータ、ならびに、HMDシステム100の各装置間で送受信する指示または通知を含んでいる。
ストレージ830は補助記憶装置である。ストレージ830は、フラッシュメモリまたはHDD(Hard Disk Drive)等の記憶装置で構成される。ストレージ830には、仮想空間データおよびオブジェクトデータ等が格納される。当該仮想空間データおよびオブジェクトデータ等は、ユーザ端末800が本ゲームに係るアプリケーション(視聴用のアプリケーションを含む)を初めてダウンロードするときや、本ゲームに係るアプリケーション(視聴用のアプリケーションを含む)を更新するときなどに、サーバ600から当該ユーザ端末800に提供される。
通信IF850は、ユーザ端末800における各種データの送受信を制御する。通信IF850は、例えば、無線LANを介する通信、有線LAN、無線LAN、または携帯電話回線網を介したインターネット通信、ならびに近距離無線通信等を用いた通信を制御する。
入出力IF840は、ユーザ端末800がデータの入力を受け付けるためのインターフェースであり、またユーザ端末800がデータを出力するためのインターフェースである。入出力IF840は、USB等を介してデータの入出力を行ってもよい。入出力IF840は、例えば、ユーザ端末800の物理ボタン、カメラ、マイク、または、スピーカ等を含み得る。
ユーザ端末800のタッチスクリーン870は、入力部8701と表示部8702とを組み合わせた電子部品である。入力部8701は、例えばタッチセンシティブなデバイスであり、例えばタッチパッドによって構成される。表示部8702は、例えば液晶ディスプレイ、または有機ELディスプレイ等によって構成される。入力部8701は、入力面に対しユーザ8の操作(主にタッチ操作、スライド操作、スワイプ操作、およびタップ操作等の物理的接触操作)が入力された位置を検知して、位置を示す情報を入力信号として送信する機能を備える。入力部8701は、図示しないタッチセンシング部を備えていればよい。タッチセンシング部は、静電容量方式または抵抗膜方式等のどのような方式を採用したものであってもよい。
HMDセット110のディスプレイ430は、ユーザ端末800のタッチスクリーン870と同様に、入力部と表示部とを組み合わせたタッチスクリーンによって構成されていてもよい。
図示していないが、ユーザ端末800は、該ユーザ端末800の保持姿勢を特定するための1以上のセンサを備えていてもよい。このセンサは、例えば、加速度センサ、または、角速度センサ等であってもよい。ユーザ端末800がセンサを備えている場合、プロセッサ810は、センサの出力からユーザ端末800の保持姿勢を特定して、保持姿勢に応じた処理を行うことも可能になる。例えば、プロセッサ810は、ユーザ端末800が縦向きに保持されているときには、縦長の画像を表示部8702に表示させる縦画面表示としてもよい。一方、ユーザ端末800が横向きに保持されているときには、横長の画像を表示部に表示させる横画面表示としてもよい。このように、プロセッサ810は、ユーザ端末800の保持姿勢に応じて縦画面表示と横画面表示とを切り替え可能であってもよい。
スピーカ890は、音声データに基づき音声を出力する。カメラ860は、イメージセンサ等を含み、レンズから入射する入射光を電気信号に変換することで撮影画像を生成する。
測距センサ880は、測定対象物までの距離を測定するセンサである。測距センサ880は、例えば、パルス変換した光を発する光源と、光を受ける受光素子とを含む。測距センサ880は、光源からの発光タイミングと、該光源から発せられた光が測定対象物にあたって反射されて生じる反射光の受光タイミングとにより、測定対象物までの距離を測定する。測距センサ880は、指向性を有する光を発する光源を有することとしてもよい。
ここで、ユーザ端末800が、カメラ860と測距センサ880とを用いて、ユーザ端末800の近傍の物体1010を検出した検出結果を、ユーザ8の入力操作として受け付ける例をさらに説明する。カメラ860および測距センサ880は、例えば、ユーザ端末800の筐体の側面に設けられてもよい。カメラ860の近傍に測距センサ880が設けられてもよい。カメラ860としては、例えば赤外線カメラを用いることができる。この場合、赤外線を照射する照明装置および可視光を遮断するフィルタ等が、カメラ860に設けられてもよい。これにより、屋外か屋内かにかかわらず、カメラ860の撮影画像に基づく物体の検出精度をいっそう向上させることができる。
プロセッサ810は、カメラ860の撮影画像に対して、例えば以下の(1)~(5)に示す処理のうち1つ以上の処理を行ってもよい。(1)プロセッサ810は、カメラ860の撮影画像に対し画像認識処理を行うことで、該撮影画像にユーザ8の手が含まれているか否かを特定する。プロセッサ810は、上述の画像認識処理において採用する解析技術として、例えばパターンマッチング等の技術を用いてよい。(2)また、プロセッサ810は、ユーザ8の手の形状から、ユーザ8のジェスチャを検出する。プロセッサ810は、例えば、撮影画像から検出されるユーザ8の手の形状から、ユーザ8の指の本数(伸びている指の本数)を特定する。プロセッサ810はさらに、特定した指の本数から、ユーザ8が行ったジェスチャを特定する。例えば、プロセッサ810は、指の本数が5本である場合、ユーザ8が「パー」のジェスチャを行ったと判定する。また、プロセッサ810は、指の本数が0本である(指が検出されなかった)場合、ユーザ8が「グー」のジェスチャを行ったと判定する。また、プロセッサ810は、指の本数が2本である場合、ユーザ8が「チョキ」のジェスチャを行ったと判定する。(3)プロセッサ810は、カメラ860の撮影画像に対し、画像認識処理を行うことにより、ユーザ8の指が人差し指のみ立てた状態であるか、ユーザ8の指がはじくような動きをしたかを検出する。(4)プロセッサ810は、カメラ860の撮影画像の画像認識結果、および、測距センサ880の出力値等の少なくともいずれか1つに基づいて、ユーザ端末800の近傍の物体1010(ユーザ8の手など)とユーザ端末800との距離を検出する。例えば、プロセッサ810は、カメラ860の撮影画像から特定されるユーザ8の手の形状の大小により、ユーザ8の手がユーザ端末800の近傍(例えば所定値未満の距離)にあるのか、遠く(例えば所定値以上の距離)にあるのかを検出する。なお、撮影画像が動画の場合、プロセッサ810は、ユーザ8の手がユーザ端末800に接近しているのか遠ざかっているのかを検出してもよい。(5)カメラ860の撮影画像の画像認識結果等に基づいて、ユーザ8の手が検出されている状態で、ユーザ端末800とユーザ8の手との距離が変化していることが判明した場合、プロセッサ810は、ユーザ8が手をカメラ860の撮影方向において振っていると認識する。カメラ860の撮影範囲よりも指向性が強い測距センサ880において、物体が検出されたりされなかったりする場合に、プロセッサ810は、ユーザ8が手をカメラの撮影方向に直交する方向に振っていると認識する。
このように、プロセッサ810は、カメラ860の撮影画像に対する画像認識により、ユーザ8が手を握りこんでいるか否か(「グー」のジェスチャであるか、それ以外のジェスチャ(例えば「パー」)であるか)を検出する。また、プロセッサ810は、ユーザ8の手の形状とともに、ユーザ8がこの手をどのように移動させているかを検出する。また、プロセッサ810は、ユーザ8がこの手をユーザ端末800に対して接近させているのか遠ざけているのかを検出する。このような操作は、例えば、マウスまたはタッチパネルなどのポインティングデバイスを用いた操作に対応させることができる。ユーザ端末800は、例えば、ユーザ8の手の移動に応じて、タッチスクリーン870においてポインタを移動させ、ユーザ8のジェスチャ「グー」を検出する。この場合、ユーザ端末800は、ユーザ8が選択操作を継続中であると認識する。選択操作の継続とは、例えば、マウスがクリックされて押し込まれた状態が維持されること、または、タッチパネルに対してタッチダウン操作がなされた後タッチされた状態が維持されることに対応する。また、ユーザ端末800は、ユーザ8のジェスチャ「グー」が検出されている状態で、さらにユーザ8が手を移動させると、このような一連のジェスチャを、スワイプ操作(またはドラッグ操作)に対応する操作として認識することもできる。また、ユーザ端末800は、カメラ860の撮影画像によるユーザ8の手の検出結果に基づいて、ユーザ8が指をはじくようなジェスチャを検出した場合に、当該ジェスチャを、マウスのクリックまたはタッチパネルへのタップ操作に対応する操作として認識してもよい。
<ユーザ端末800における仮想空間>
図14は、ユーザ端末800において規定される仮想空間11及び視界画像1400の一例を模式的に示す図である。図14(A)では、仮想空間11に、アバターオブジェクト6と他のオブジェクトA~Dとが配置される。コンピュータ200は、図8に示す仮想空間11におけるアバターオブジェクト6および他のオブジェクトA~Dの配置・動作等を特定するための動作指図データ(後述)を、ユーザ端末800に配信する。このため、図14に示す仮想空間11におけるアバターオブジェクト6および他のオブジェクトA~Dの配置や動きは、図8に示す仮想空間11におけるアバターオブジェクト6および他のオブジェクトA~Dの配置や動きと一致する。ユーザ8Aは、左手にユーザ端末800Aを把持している。図14の例では、ユーザ8Aは、アバターオブジェクト6が実演する番組であるライブゲーム進行パートを、ユーザ端末800Aの画面を視認しながら視聴する。
ユーザ端末800において規定される仮想空間11において、アバターオブジェクト6は、動作指図データに基づいて、図8に示す仮想空間11におけるアバターオブジェクト6の動きと同じ動きをする。ユーザ8Aは、ユーザ端末800Aの画面を通じて、ライブゲーム進行パートの参加者としてアバターオブジェクト6のパフォーマンスを視聴する。また、他のユーザ8C、8Dは、他のユーザ端末800C、800Dの画面を通じて、ライブゲーム進行パートの参加者としてアバターオブジェクト6のパフォーマンスを視聴する。このように、アバターオブジェクト6によって進行するライブゲーム進行パートは、複数のユーザ8に対して同時に配信される。
図14(A)の例では、ユーザ端末800Aにより規定された仮想空間11において、アバターオブジェクト6の前方に、仮想カメラ20Aが配置される。仮想カメラ20Aは、当該仮想カメラ20Aの位置および向きに応じた視界領域21を規定する。プロセッサ810は、視界領域21に対応する視界画像1400を生成して、図14(B)に示すように、タッチスクリーン870の表示部8702に表示する。即ち、視界領域21は、仮想カメラ20Aの視点で規定され、視界画像1400も仮想カメラ20Aの視点で表示される。視界画像1400には、パフォーマンスを実行するアバターオブジェクト6が少なくとも含まれる。ユーザ8Aは、視界画像1400を視認することによって、アバターオブジェクト6と、アバターオブジェクト6が登場する仮想空間11の一部とを、視認する。これにより、ユーザ8Aは、あたかもアバターオブジェクト6が実際の配信者であるかのような仮想体験を、得ることができる。
<HMDシステム100の機能的構成>
図15は、HMDシステム100に含まれるHMDセット110、ユーザ端末800、およびサーバ600の機能的構成を示すブロック図である。HMDセット110、ユーザ端末800、サーバ600のそれぞれは、図示しない、一般的なコンピュータとして機能する場合に必要な機能的構成、および、ゲームにおける公知の機能を実現するために必要な機能的構成を含み得る。
HMDセット110は、図8に示す仮想空間11にオブジェクトを配置・動作等させるとともに、当該オブジェクトを図14に示す仮想空間11に配置・動作等させるための動作指図データを生成し、ユーザ端末800に供給する機能を有する。当該動作指図データは、アバターオブジェクト6によって進行するライブゲーム進行パートにおけるゲームプレイ映像をユーザ端末800において表示可能とするためのデータであればよく、例えば、プレイヤ5(モデルなど)の動きをモーションセンサ420を介して入力したモーションキャプチャデータ(モーションデータともいう)を含んでいてもよいし、プレイヤ5(声優など)の音声を録音した音声データを含んでいてもよいし、プレイヤ5によって他のオブジェクトを動作させるための入力操作の履歴を示す操作履歴データを含んでいてもよいし、一連の入力操作に対応付けられたコマンドや、ゲームプログラムに基づいてオブジェクトを仮想空間11に配置したり移動させるコマンドを時系列に並べたモーションコマンド群を含んでいてもよい。HMDセット110は、プロセッサ210、メモリ220、ストレージ230、通信IF250、および入出力IF240等の協働によって、制御部2100(コントロールモジュール510、レンダリングモジュール520)および記憶部2200(メモリモジュール530)として機能する。
ユーザ端末800は、ユーザ8の入力操作を受け付ける入力装置としての機能と、ゲームの画像や音声を出力する出力装置としての機能を有する。ユーザ端末800は、プロセッサ810、メモリ820、ストレージ830、通信IF850、および入出力IF840等の協働によって、制御部8100および記憶部8200として機能する。
サーバ600は、各ユーザ端末800と通信して、ユーザ端末800におけるゲーム画像の視聴を支援する機能を有する。例えば、ユーザ端末800が本ゲームに係るアプリケーションを初めてダウンロードするときや更新するときには、ゲームプレイ映像を表示するためにユーザ端末800において記憶させておくべきデータであって、ゲームプレイ映像に含まれ得るオブジェクトのデータ(オブジェクト表示用データ、オブジェクトデータともいう)をユーザ端末800に提供する。
サーバ600は、ユーザ端末800とHMDセット110とを仲介する機能を備えている。これにより、HMDセット110は、適時に、宛先を誤ることなく、ユーザ端末800または複数のユーザ端末800のグループに対して動作指図データを供給することが可能となる。サーバ600は、プロセッサ610、メモリ620、ストレージ630、通信IF650、および入出力IF640等の協働によって、制御部6100および記憶部6200として機能する。
なお、本ゲームがマルチプレイゲームである場合には、サーバ600は、ゲームに参加する各HMDセット110と通信して、HMDセット110同士のやりとりを仲介する機能および同期制御機能を有していてもよい。
記憶部2200は、ゲームプログラム231を格納する。記憶部8200は、ゲームプログラム831を格納する。記憶部6200は、ゲームプログラム631を格納する。ゲームプログラム231は、HMDセット110が実行するゲームプログラムである。ゲームプログラム831は、ユーザ端末800が実行するゲームプログラムである。ゲームプログラム631は、サーバ600が実行するゲームプログラムである。ゲームプログラム231、631、831に基づいて各装置が協働して動作することにより、HMDシステム100に係るゲームが実現される。なお、ゲームプログラム231、831は、記憶部6200に格納され、記憶部2200、8200にそれぞれダウンロードされる構成でもよい。
また、記憶部2200、8200および6200は、それぞれ、ゲーム情報132およびユーザ情報133を格納する。ゲーム情報132は、制御部2100、8100および6100が、ゲームプログラム231、831、631をそれぞれ実行する際に参照するデータである。ユーザ情報133は、ユーザ8のアカウントに関するデータである。記憶部2200および6200において、ゲーム情報132およびユーザ情報133は、ユーザ端末800ごとに格納されている。なお、ユーザ情報133には、仮想通貨(課金アイテム)の購入履歴、特定のアイテムの購入または取得履歴が含まれていてもよい。
(HMDセット110の機能的構成)
制御部2100は、記憶部2200に格納されたゲームプログラム231を実行することにより、HMDセット110を統括的に制御する。例えば、制御部2100は、ゲームプログラム231およびプレイヤ5の操作に従って図8に示す仮想空間11にオブジェクトを配置・動作等させるとともに、当該配置・動作に伴う動作指図データを生成し、ユーザ端末800に供給する。制御部2100は、必要に応じて、さらにゲームプログラム231を実行してもよい。また、制御部2100は、サーバ600および本ゲームを実行中のユーザ端末800と通信して、情報の送受信を行う。
制御部2100は、ゲームプログラム231の記述に応じて、操作受付部2101、表示制御部2102、UI制御部2103、アニメーション生成部2104、ゲーム進行部2105、仮想空間制御部2106、および反応処理部2107として機能する。制御部2100は、HMDシステム100において実行されるゲームの性質に応じて、該ゲームに登場するオブジェクトを制御するために、図示しないその他の機能ブロックとしても機能することができる。
操作受付部2101は、プレイヤ5の入力操作を検知し受け付ける。入力操作は、例えば、HMD120、モーションセンサ420、ディスプレイ430がタッチスクリーンである場合に表示部と一体に形成された入力部、マウス(図示せず)、キーボード(図示せず)等の各種の入力装置から、入出力IF34を介して入力される。操作受付部2101は、プレイヤ5が及ぼした作用から、いかなる入力操作がなされたかを判別し、その結果を制御部2100の各要素に出力する。
ユーザインターフェース(以下、UI)制御部2103は、HMD120又はディスプレイ430に表示させるUI画像を制御する。
アニメーション生成部2104は、各種オブジェクトの制御態様に基づいて、各種オブジェクトのモーションを示すアニメーションを生成する。例えば、アニメーション生成部2104は、通信相手となるユーザ端末800上実際に表示されているゲーム画面を再現したアニメーション等を生成してもよい。
表示制御部2102は、HMD120又はディスプレイ430に対して、上述の各要素によって実行された処理結果が反映された画像を出力する。
ゲーム進行部2105は、プレイヤ5による入力操作に応じたアバターオブジェクト6と、ユーザ端末800のユーザ8の操作とに基づいて、ゲームを進行する。例えば、ゲーム進行部2105は、アバターオブジェクト6が所定の動作を行った場合に、所定のゲーム処理を行う。また、例えば、ゲーム進行部2105は、ユーザ端末800におけるユーザ8の操作を表す情報を受信し、当該ユーザ8の操作に基づいてゲーム処理を行う。ゲーム進行部2105は、当該ゲーム処理に基づいて各種のゲームパラメータを更新する。当該ゲームパラメータを含むゲーム情報は、サーバ600を介してユーザ端末800に供給される。
仮想空間制御部2106は、図12を参照して説明したコントロールモジュール510のモジュール1421~1427を含む。これらの詳細については、既に説明した通りである。
仮想空間制御部2106は、ユーザ端末800との間で仮想空間11を共有するための各種の制御を行う。図16は、仮想空間制御部2106の詳細な構成を示す図である。図16に示すように、仮想空間制御部2106は、図12を参照して説明したモジュール1421~1427を含む。仮想空間制御部2106は、これらのモジュール1421~1427の動作により、当該HMDセット110において、アバターオブジェクト6を動作させるとともに仮想オブジェクトの挙動を制御する。また、仮想空間制御部2106は、モジュール1421~1427の動作に基づいて、ユーザ端末800においてアバターオブジェクト6を動作させるための動作指図データ、各仮想オブジェクトの挙動を制御するための動作指図データを生成する。これらの動作指図データは、サーバ600を介してユーザ端末800に供給される。例えば、仮想空間制御部2106は、プレイヤ5(声優など)が、マイク170を介して入力した音声データに基づいて、制御対象のオブジェクトに発言させることを指示する動作指図データを生成する。このようにして生成された動作指図データには、上述の音声データが少なくとも含まれる。また、例えば、プレイヤ5(モデルなど)が、モーションセンサ420を介して入力したモーションキャプチャデータに基づく動きを、制御対象のオブジェクトに行わせることを指示する動作指図データを生成する。このようにして生成された動作指図データには、上述のモーションキャプチャデータが少なくとも含まれる。また、例えば、プレイヤ5が、コントローラ300などの入力機構またはタッチスクリーン、マウス、キーボード等の操作部を介して入力した入力操作の履歴、すなわち、操作履歴データに基づいて、制御対象のオブジェクトを動作させることを指示する動作指図データを生成する。このようにして生成された動作指図データには、上述の操作履歴データが少なくとも含まれる。操作履歴データは、例えば、HMD120にどの画面が表示されているときに、プレイヤ5が、コントローラ300のどのボタンをどのタイミングで押したのかを示す操作ログが時系列で整理されている情報である。あるいは、仮想空間制御部2106は、プレイヤ5が上述の入力機構または操作部を介して入力した入力操作に対応付けられた、オブジェクトの動作を指示するコマンドを特定する。そして、仮想空間制御部2106は、該コマンドを入力された順に並べてオブジェクトの一連の動作を示すモーションコマンド群を生成し、該モーションコマンド群にしたがってオブジェクトを動作させることを指示する動作指図データを生成してもよい。このようにして生成された動作指図データには、上述のモーションコマンド群が少なくとも含まれる。
反応処理部2107は、ユーザ端末800からユーザ8の反応についてフィードバックを受け付けて、これをHMDセット110のプレイヤ5に対して出力する。本実施形態では、例えば、ユーザ端末800は、上述の動作指図データに従ってオブジェクトを動作させている間、該オブジェクトに宛てて、ユーザ8がコメントを作成することができる。反応処理部2107は、該コメントのコメントデータを受け付けて、これを、出力する。反応処理部2107は、ユーザ8のコメントに対応するテキストデータを、表示部352に表示してもよいし、ユーザ8のコメントに対応する音声データを、図示しないスピーカから出力してもよい。
(サーバ600の機能的構成)
制御部6100は、記憶部6200に格納されたゲームプログラム631を実行することにより、サーバ600を統括的に制御する。例えば、制御部6100は、ユーザ端末800に各種データおよびプログラム等を送信する。制御部6100は、ゲーム情報もしくはユーザ情報の一部または全部をユーザ端末800から受信する。ゲームがマルチプレイゲームである場合には、制御部6100は、HMDセット110からマルチプレイの同期の要求を受信して、同期のためのデータをHMDセット110に送信してもよい。また、制御部6100は、必要に応じて、ユーザ端末800およびHMDセット110と通信して、情報の送受信を行う。
制御部6100は、ゲームプログラム631の記述に応じて、進行支援部6101および共有支援部6102として機能する。制御部6100は、実行するゲームの性質に応じて、ユーザ端末800におけるゲームの進行を支援するために、図示しないその他の機能ブロックとしても機能することができる。
進行支援部6101は、ユーザ端末800と通信し、ユーザ端末800が、本ゲームに含まれる各種パートを進行するための支援を行う。例えば、進行支援部6101は、ユーザ端末800が、ゲームを進行させるとき、該ゲームを進行させるために必要な情報をユーザ端末800に提供する。
共有支援部6102は、複数のユーザ端末800及びHMDセット110と通信し、これらの装置間でゲームの進行及び仮想空間11を共有するための支援を行う。また、共有支援部6102は、オンラインのユーザ端末800とHMDセット110とをマッチングする機能を有していてもよい。これにより、ユーザ端末800とHMDセット110との間の情報の送受信が円滑に実施される。
(ユーザ端末800の機能的構成)
制御部8100は、記憶部8200に格納されたゲームプログラム831を実行することにより、ユーザ端末800を統括的に制御する。例えば、制御部8100は、ゲームプログラム831およびユーザ8の操作に従って、プレイヤ5によるゲームの進行を支援する。また、制御部8100は、プレイヤ5によるゲームの進行中、必要に応じて、サーバ600を介してHMDセット110と通信して、情報の送受信を行う。
制御部8100は、ゲームプログラム831の記述に応じて、操作受付部8101、表示制御部8102、UI制御部113、アニメーション生成部8104、ゲーム進行部8105、仮想空間制御部8106、および進捗情報生成部8107として機能する。制御部8100は、実行するゲームの性質に応じて、ゲームを進行させるために、図示しないその他の機能ブロックとしても機能することができる。
操作受付部8101は、入力部8701に対するユーザ8の入力操作を検知し受け付ける。操作受付部8101は、タッチスクリーン870およびその他の入出力IF14を介したコンソールに対してユーザ8が及ぼした作用から、いかなる入力操作がなされたかを判別し、その結果を制御部8100の各要素に出力する。操作受付部8101の機能の詳細は、HMDセット110における操作受付部2101のそれとほぼ同様である。
例えば、操作受付部8101は、入力部8701に対する入力操作を受け付け、該入力操作の入力位置の座標を検出し、該入力操作の種類を特定する。操作受付部8101は、入力操作の種類として、例えばタッチ操作、スライド操作、スワイプ操作、およびタップ操作等を特定する。また、操作受付部8101は、連続して検知されていた入力が途切れると、タッチスクリーン870から接触入力が解除されたことを検知する。
UI制御部8103は、UIを構築するために表示部8702に表示させるUI画像を制御する。UI画像は、ユーザ8が、ゲームの進行上必要な入力をユーザ端末800に対して行うためのツール、または、ゲームの進行中に出力される情報をユーザ端末800から得るためのツールである。UI画像は、これには限定されないが、例えば、アイコン、ボタン、リスト、メニュー画面などである。
アニメーション生成部8104は、各種オブジェクトの制御態様に基づいて、各種オブジェクトのモーションを示すアニメーションを生成する。例えば、アニメーション生成部8104は、オブジェクトがまるでそこにいるかのように動いたり、口を動かしたり、表情を変えたりする様子を表現したアニメーション等を生成してもよい。
表示制御部8102は、タッチスクリーン870の表示部8702に対して、上述の各要素によって実行された処理結果が反映されたゲーム画面を出力する。表示制御部8102は、アニメーション生成部8104によって生成されたアニメーションを含むゲーム画面を表示部8702に表示してもよい。また、表示制御部8102は、UI制御部8103によって制御される上述のUI画像を、該ゲーム画面に重畳して描画してもよい。さらに、表示制御部8102は、HMDセット110から供給されたゲーム情報に基づいて、各種ゲームパラメータを該ゲーム画面に重畳して描画してもよい。
仮想空間制御部8106は、HMDセット110との間で仮想空間11を共有するための各種の制御を行う。図17は、仮想空間制御部8106の詳細な構成を示す図である。図17に示すように、仮想空間制御部8106は、仮想オブジェクト生成モジュール8121と、仮想カメラ制御モジュール8122と、アバターオブジェクト制御モジュール8124と、仮想オブジェクト制御モジュール8127とを含む。
仮想オブジェクト生成モジュール8121は、図12を参照して説明した仮想オブジェクト生成モジュール1421と同様に構成される。ここで、ユーザ端末800において生成される仮想オブジェクトは、HMDセット110において生成される仮想オブジェクトに同期する。ただし、各仮想オブジェクトを同期するか否かは、仮想オブジェクト毎に定められていてもよい。例えば、HMDセット110で生成された仮想オブジェクトのうち、ユーザ端末800では生成されないものがあってもよい。また、HMDセット110で生成された仮想オブジェクトのうち、ユーザ端末800において異なる表示形態で生成されるものがあってもよい。表示形態とは、例えば、色、透明度等であってもよいが、これらに限られない。さらに、ユーザ端末800において生成される仮想空間11においては、HMDセット110で生成された仮想オブジェクト以外の仮想オブジェクトが含まれるものであってもよい。
仮想カメラ制御モジュール8122は、図12を参照して説明した仮想カメラ制御モジュール1422と同様に構成される。ここで、ユーザ端末800A、800C、800Dにおいて実現される仮想空間11A、11C、11Dに配置される仮想カメラ20A、20C、20Dは、HMDセット110において実現される仮想空間11に配置される仮想カメラ14とは異なるものである。つまり、HMDセット110及びユーザ端末800間で共有される仮想空間11の視界画像は、HMDセット110及びユーザ端末800間で異なり得る。
ユーザ端末800A、800C、800Dにおいて、仮想カメラ20A、20C、20Dの位置及び方向は、ユーザ8A、8C、8Dによって操作可能であってもよいし、操作不能であってもよい。また、操作不能である場合、仮想カメラ20A、20C、20Dの位置及び方向は、同一であってもよい。この場合、複数のユーザ8は、各ユーザ端末800を通して、共通の視界画像を視聴することになる。つまり、この場合、複数のユーザ8は、共通の仮想カメラで撮影された視界画像(ライブ映像)を視聴することができる。
本実施形態では、仮想カメラ20A、20C、20Dの位置及び方向がユーザ8A、8C、8Dによって操作可能であり、複数のユーザ8が互いに異なる視界画像を視聴する例を中心に説明する。ある局面では、仮想カメラ20Aの位置および方向は、ユーザ端末800Aのタッチスクリーンに対するスライド操作(あるいはスワイプ操作)等に応じて変化する。例えば、仮想カメラ20Aの位置は、左方向へのスライド操作に応じて左方向に移動し、右方向へのスライド操作に応じて右方向に移動し、上方向へのスライド操作に応じて上方向に移動し、下方向へのスライド操作に応じて下方向に移動する。このとき、仮想カメラ20Aの向きは、例えば、アバターオブジェクト6が視界領域21に収まるように(具体的にはアバターオブジェクト6が視界領域21の中心となるように)調整される。
アバターオブジェクト制御モジュール8124は、図12を参照して説明したアバターオブジェクト制御モジュール1424に対して、HMD120の動き又はコントローラ300の動きに応じて動作することに替えて、動作指図データに応じて動作する点が異なる他は、同様に構成される。動作指図データは、HMD120動き又はコントローラ300の動きに応じてHMDセット110において生成され、ユーザ端末800に配信される。
仮想オブジェクト制御モジュール8127は、図12を参照して説明した仮想オブジェクト制御モジュール1427に対して、動作指図データに応じて動作する点が異なる他は、同様に構成される。動作指図データは、HMDセット110におけるアバターオブジェクト6以外の仮想オブジェクトの挙動を表すようHMDセット110において生成され、ユーザ端末800に配信される。
このように、仮想空間制御部8106は、動作指図データを解析して(レンダリングして)、解析結果に基づいてアバターオブジェクト6および仮想オブジェクトなどを動作させる。本実施形態では、仮想空間制御部8106は、HMDセット110によって供給された動作指図データが通信IF33を介して受信されたことをトリガにして、該データに基づいてアバターオブジェクト6又は他の仮想オブジェクトを動作させる。これにより、リアルタイムで動作するアバターオブジェクト6及び他の仮想オブジェクトを、ユーザ8に見せることが可能となる。
ゲーム進行部8105は、操作受付部8101を介して入力されるユーザ8の入力操作に応じて、HMDセット110のプレイヤ5によるゲームの進行を支援する。例えば、ゲーム進行部8105は、ゲームの進行中に、アイテムオブジェクトを仮想空間11に配置することにより、プレイヤ5によるゲームの進行を支援する。
進捗情報生成部8107は、ゲーム進行部8105が実行しているゲーム支援の進捗を示す進捗情報を生成し、適時、サーバ600またはHMDセット110に送信する。進捗情報は、例えば、現在表示されているゲーム画面を指定する情報を含んでいてもよいし、ゲームの進捗を、時系列で文字および記号等によって示した進行ログを含んでいてもよい。HMDシステム100において、サーバ600およびHMDセット110が進捗情報を必要としない実施形態では、進捗情報生成部8017は省略されてもよい。
なお、図15に示すHMDセット110、サーバ600およびユーザ端末800の機能は一例にすぎない。HMDセット110、サーバ600およびユーザ端末800の各装置は、他の装置が備える機能の少なくとも一部を備えていてもよい。さらに、HMDセット110、サーバ600およびユーザ端末800以外のさらに別の装置をHMDシステム100の構成要素とし、該別の装置にHMDシステム100における処理の一部を実行させてもよい。すなわち、本実施形態においてゲームプログラムを実行するコンピュータは、HMDセット110、サーバ600およびユーザ端末800およびそれ以外の別の装置の何れであってもよいし、これらの複数の装置の組み合わせにより実現されてもよい。
なお、図15に示すサーバ600およびユーザ端末800の機能は一例にすぎない。サーバ600は、ユーザ端末800が備える機能の少なくとも一部を備えていてもよい。また、ユーザ端末800は、サーバ600が備える機能の少なくとも一部を備えていてもよい。さらに、ユーザ端末800およびサーバ600以外の他の装置をHMDシステム100の構成要素とし、該他の装置にHMDシステム100における処理の一部を実行させてもよい。すなわち、本実施形態においてゲームプログラムを実行するコンピュータは、ユーザ端末800、サーバ600、および他の装置の何れであってもよいし、これらの複数の装置の組み合わせにより実現されてもよい。
<ゲーム概要>
図18(A)~図18(D)を参照して、本実施形態に係るHMDシステム100が実行するゲーム(以下、本ゲーム)は、一例として、銃、ナイフ等の武器を操作するアバターオブジェクト6と、複数の敵オブジェクト23とを仮想空間11に登場させ、アバターオブジェクト6に敵オブジェクト23との対戦を行わせるゲームである。アバターオブジェクト6の体力、使用可能なマガジンの数、銃の残弾数、敵オブジェクト23の残数等の各種ゲームパラメータは、ゲームの進行に応じて更新される。
本ゲームには、複数のステージが用意されており、プレイヤ5は、各ステージに関連付けられている所定の達成条件を成立させることにより、当該ステージをクリアすることができる。所定の達成条件としては、例えば、出現する敵オブジェクト23をすべて倒すことや、出現する敵オブジェクト23のうちボスオブジェクトを倒すこと、所定のアイテムを獲得すること、所定位置に到達することなどにより成立する条件を含むものであってもよい。
本ゲームでは、HMDセット110及び複数のユーザ端末800の間で仮想空間11を共有するために、上記各種ゲームパラメータを含むゲーム情報と、オブジェクトを配置・動作等させるための動作指図データとが、所定時間毎に複数のユーザ端末800にライブ配信される。
この結果、ゲームを視聴中のユーザ端末800のタッチスクリーン870には、仮想空間11のうち、ユーザ端末800に対応する仮想カメラ20によって規定される視界領域21の視界画像1400が表示される。また、視界画像1400の右上段および左上段には、アバターオブジェクト6の体力、使用可能なマガジンの数、銃の残弾数、敵オブジェクト23の残数等を表すパラメータ画像が重畳的に表示される。
動作指図データの詳細は次のとおりである。即ち、ライブ配信中、HMDセット110のコンピュータ200は、プレイヤ5の操作に応じてアバターオブジェクト6の動作を制御するための動作指図データ、ゲームプログラムに従って敵オブジェクト23等の他のオブジェクトの配置・動作等を制御するための動作指図データなどを生成し、当該動作指図データをサーバ600を介して複数のユーザ端末800に配信する。複数のユーザ端末800の各々は、当該動作指図データを受信したことをトリガにして、当該動作指図データを解析する(レンダリングする)。
即ち、当該動作指図データは、配置するオブジェクトの種別、オブジェクトの位置、姿勢、向き等を特定するための情報を含んでおり、ユーザ端末800は、当該動作指図データを解析することにより、どのオブジェクトを仮想空間11内のどの位置にどのような姿勢・向きで配置するか等を特定する。
ユーザ端末800のメモリ820には、アバターオブジェクト6、敵オブジェクト23等のオブジェクトデータが予め記憶されている。ユーザ端末800は、当該オブジェクトデータを用いて、当該動作指図データの解析結果に応じた種別のオブジェクトを、当該解析結果に応じた仮想空間11内の位置に、当該解析結果に応じた姿勢・向き等で配置する。ユーザ端末800により規定された仮想空間11におけるアバターオブジェクト6、敵オブジェクト23等の配置や動きは、コンピュータ200により規定された仮想空間11におけるアバターオブジェクト6、敵オブジェクト23等の配置や動きと一致する。
HMDセット110のコンピュータ200は、本ゲームを視聴中のユーザ端末800の数(視聴者数)に応じて、本ゲームの難易度に相当するレベルデザインを変動させる。即ち、コンピュータ200は、複数のステージの各々が開始される際の視聴者数に応じて、当該ステージに関連付けられた達成条件を成立させる難易度を調整する。ある局面では、コンピュータ200は、視聴者数が多くなると後述するように視聴者から多くの支援を期待できる結果、プレイヤ5がゲームを簡単にクリアしてしまうことを防止するために、ゲームの難易度を高くする。
当該難易度は、例えば、敵オブジェクト23の戦闘能力および出現量と、アバターオブジェクト6の戦闘能力とに基づいて規定される。ある局面では、コンピュータ200は、視聴者数が0人であるとき、敵オブジェクト23の戦闘能力および出現量、アバターオブジェクト6の戦闘能力の各々を初期値に設定し、視聴者数が多くなるほど、敵オブジェクト23の戦闘能力や出現量の各々を当該初期値から増大させたりしてもよいし、アバターオブジェクト6の戦闘能力を当該初期値から減少させたりしてもよい。初期値が設定される視聴者の人数は、視聴者数が0人である場合でなく、0人以外の任意の人数である場合としてもよい。
ある局面では、敵オブジェクト23の戦闘能力は、当該敵オブジェクト23の移動速度(俊敏さ)および体力により規定され、敵オブジェクト23の出現量は、現ステージに出現する敵オブジェクト23の総数および出現頻度により規定される。また、アバターオブジェクト6の戦闘能力は、当該アバターオブジェクト6の移動速度(俊敏さ)、体力、および装備する武器・防具の種類による補正値などにより規定される。
ユーザ端末800のタッチスクリーン870においては、アバターオブジェクト6を支援するためのアイテム投入操作をユーザ8から受け付けるためのUI画像22が、仮想空間11を表す画像に重畳して表示される。UI画像22には、例えば、マガジン、救急箱、障害物(三角コーン、バリケード等)のアイコンが描かれており、アイテム投入操作は、いずれかのアイコンをタップする操作に相当する。
ユーザ8が当該アイテム投入操作を行うと、ユーザ端末800は、ユーザ8が購入して所有している仮想通貨(価値アイテム)を消費し、プレゼント箱のような予め定められた演出オブジェクト24(図18(C)参照)を仮想空間11に配置する。演出オブジェクト24による演出(以下、投入時演出ともいう)は、所定時間(例えば2秒)に亘り実行される。当該投入時演出は、例えば、プレゼント箱を配置すると同時にカウントダウンを表示し、カウント値が0になったタイミングで当該プレゼント箱の蓋を開くというものである。なお、当該プレゼント箱の大きさ、形、色等は、投入されたアイテムの種別にかかわらず同じであってもよく、アイテムの種別や消費した仮想通貨の量に応じて異なるものであってもよい。仮想通貨は、例えば課金やゲーム内のクエストクリア等によりユーザ8に関連付けられる。仮想通貨は、有償であってもよいし、無償であってもよい。
また、図19を参照して、ユーザ端末800は、当該アイテム投入操作に応じて、アイテム投入情報をサーバ600を介してコンピュータ200に送信する。当該アイテム投入情報には、アイテム投入操作により指定されたアイテムの種別を特定するための情報や、コンピュータ200が当該アイテムを仮想空間11に配置し、または仮想空間11内で使用可能とするという支援効果(支援作用)を発動させるタイミングを特定するための情報が含まれる。ここで、当該支援効果の発動タイミングは、演出オブジェクト24による演出が終了するタイミング(即ち、演出オブジェクト24が仮想空間11に配置されてから当該所定時間が経過したタイミング)と一致するように定められている。なお、演出を行わず、アイテム投入が行われてから、即時あるいは一定時間経過後に当該アイテムの支援効果を発動するようにしてもよい。
投入するアイテムが障害物であれば、ユーザ端末800は、仮想カメラ20の視野内の一部の範囲をアイテム投入範囲として特定する。このとき、当該アイテム投入情報には、当該アイテム投入範囲を特定するための情報が含まれる。なお、アイテム投入範囲は、例えばアバターオブジェクト6の周辺の範囲である。
アイテム投入情報を受信したとき、コンピュータ200は、アバターオブジェクト6を支援するべく、当該アイテム投入情報から特定されるアイテム種別に対応するアイテムを、当該アイテム投入情報から特定される発動タイミング(より具体的には、当該アイテム投入情報を受信してから当該所定時間が経過したタイミング)で、仮想空間11に配置し、または仮想空間11内で使用可能とする。
この結果、当該アイテム種別がマガジンであれば、コンピュータ200は、アバターオブジェクト6が使用する銃の残弾数を、当該発動タイミングで回復させる。また、当該アイテム種別が救急箱であれば、コンピュータ200は、アバターオブジェクト6の体力を、当該発動タイミングで回復させる。さらに、当該アイテム種別が障害物であれば、コンピュータ200は、当該アイテム投入情報から特定されるアイテム投入範囲内のいずれかの位置をアイテム投入位置として特定し、当該障害物を表すオブジェクトを当該発動タイミングで当該アイテム投入位置に配置する。障害物は、例えば、敵オブジェクト23の進行や攻撃を阻害する機能を有するアイテムである。このため、障害物は、障害物を配置することにより、アバターオブジェクト6を支援するアイテムであるといえる。
コンピュータ200は、現ステージが開始される際の視聴者数に応じて、当該支援効果の程度(大きさ)を調整する。ある局面では、コンピュータ200は、視聴者数が0人であるとき、当該支援効果の程度を初期値に設定し、視聴者数が多くなるほど、当該支援効果の程度を減少させる。当該支援効果の程度は、アバターオブジェクト6が使用する銃の残弾数およびアバターオブジェクト6の体力については回復量により規定され、障害物については大きさ、強度、重さ等により規定される。
このため、当該支援効果の程度が増大されると、銃の残弾数の回復量またはアバターオブジェクト6の体力の回復量が増大し、障害物の大きさ、強度、重さ等が増大する。銃の残弾数の回復量またはアバターオブジェクト6の体力の回復量の増大は、アバターオブジェクト6の戦闘時間の延長をもたらし、障害物の大きさ、強度、重さ等の増大は、敵オブジェクト23がアバターオブジェクト6に到達するまでの時間の長期化をもたらす。
投入されたアイテムが障害物であるとき、コンピュータ200は、当該障害物のオブジェクトの種別、当該オブジェクトの位置および姿勢を特定するための情報を含む動作指図データを生成し、当該動作指図データをサーバ600を介して複数のユーザ端末800に配信する(図19参照)。
各ユーザ端末800は、当該動作指図データを解析することにより、配置するアイテムオブジェクトの種別、アイテムオブジェクトの位置および姿勢を特定する。また、各ユーザ端末800は、当該解析結果に基づき、メモリ820に予め記憶されているオブジェクトデータを用いて、アイテムオブジェクトを仮想空間11に配置する。
このように、オブジェクトデータを予めユーザ端末800側において格納し、オブジェクトを配置させる際には、動画データよりも格段にデータ量が少ない動作指図データを複数のユーザ端末800に送信する。その結果、アイテムが投入されてからアイテムオブジェクトをユーザ端末800において表示させるまでの期間を短縮しつつ、アイテムオブジェクトの配置タイミングを複数のユーザ端末800各々において同期させることができる。また、アイテム投入操作を行ったユーザ端末800においては、演出オブジェクト24による演出が終了すると同時に、当該アイテムオブジェクトが仮想空間11に配置される。
(動作について)
図20および図21は、本ゲームの基本的なゲーム進行についてその一例を示すフローチャートである。ここで、図20に示すフローチャートに従う処理は、ユーザ端末800の制御部8100に設けられた操作受付部8101、表示制御部8102、UI制御部8103、アニメーション生成部8104、ゲーム進行部8105、仮想空間制御部8106、進捗情報生成部8107が協働することにより実行される。また、図21に示すフローチャートに従う処理は、コンピュータ200の制御部2100に設けられた操作受付部2101、表示制御部2102、UI制御部2103、アニメーション生成部2104、ゲーム進行部2105、仮想空間制御部2106、反応処理部2107が協働することにより、所定時間(例えば1/60秒)毎に実行される。
なお、図20および図21に示すフローチャートの処理の一部はサーバ600において実行し、処理結果をユーザ端末800またはコンピュータ200に送信するようにしてもよい。また、ユーザ端末800とコンピュータ200との間での情報の送受信は、サーバ600を介して実行されるものであるが、これに限らず、サーバ600を介することなく実行されるものであってもよい。
図20を参照して、ステップS01では、ユーザ8によって視聴開始操作が行われたか否かを、タッチスクリーン870からの操作入力に基づいて判定する。視聴開始操作が行われたと判定されると、ステップS02に進み、コンピュータ200に対して視聴開始情報を送信する。ステップS03では、ストレージ830に記憶されている仮想空間データに基づいて仮想空間11を規定する。ステップS04では、仮想カメラ20を当該仮想空間11の予め定められた初期位置に配置する。仮想カメラ20の初期位置は、例えば、図4に示す仮想空間11の中心12を斜め上から捉える位置である。
ステップS05では、コンピュータ200から配信された動作指図データおよびゲーム情報を受信する。ステップS06では、当該動作指図データを解析することにより、アバターオブジェクト6、敵オブジェクト23等の仮想オブジェクトをどの位置にどのような姿勢で配置するかを特定する。ステップS06では、当該解析結果とメモリ820に記憶されているオブジェクトデータとに基づいて、アバターオブジェクト6、敵オブジェクト23等の仮想オブジェクトを仮想空間11に配置し、または既に配置されている仮想オブジェクトを動作させる。ステップS06では、アバターオブジェクト6の体力、使用可能なマガジンの数、銃の残弾数、敵オブジェクト23の残数等の各種ゲームパラメータ値を、当該ゲーム情報に基づいて特定する。
後述するように、動作指図データおよびゲーム情報は、コンピュータ200から所定時間(1/60秒)毎に送信される。このため、ステップS06においては、受信した動作指図データに基づき仮想空間11内のオブジェクトを当該所定時間毎に更新し、受信したゲーム情報に基づき各種ゲームパラメータ値を当該所定時間毎に更新する。なお、仮想空間11に配置されるオブジェクトには、ユーザ8により投入されたアイテムのオブジェクトも含まれる。
ステップS07では、現在の仮想カメラ20の位置および向きに応じた視界領域21を規定し、当該視界領域21に対応する視界画像1400を生成する。ステップS08では、アイテム投入操作をユーザ8から受け付けるためのUI画像22と、上記の各種ゲームパラメータ値を表すパラメータ画像とを、当該視界画像1400に重畳し、タッチスクリーン870に表示する(図18参照)。この結果、タッチスクリーン870には、本ゲームのゲームプレイ映像が表示される。
UI画像22には、ユーザ8からアイテム投入操作を受け付けるためのアイコン等が描かれる。ある局面では、アイテムは、アバターオブジェクト6が使用する銃のマガジン、アバターオブジェクト6の体力を回復させるための救急箱、敵オブジェクト23の攻撃を妨害するための三角コーンやバリケード等の障害物を含む。
なお、各々のアイテムには、当該アイテムの投入するために必要な仮想通貨の消費量と、アバターオブジェクト6を応援するためのポイントとが関連付けられている。アイテムに関連付けられているポイントは、当該アイテムの投入するために必要な仮想通貨の消費量に応じた値が定められており、例えば、仮想通貨の消費量が大きい程、大きなポイントが定められている。
また、アバターオブジェクト6の体力、使用可能なマガジンの数、銃の残弾数を表すパラメータ画像は、視界画像1400の右上段に重畳して表示され、敵オブジェクト23の残数を表すパラメータ画像は、視界画像1400の左上段に重畳して表示される。
ステップS09では、UI画像22上でアイテム投入操作が行われたか否かを、タッチスクリーン870からの操作入力に基づいて判定する。当該アイテム投入操作が行われたと判定されたときは、ステップS10に進む。
ステップS10では、ユーザ8所有の仮想通貨のうちから、投入したアイテムに対応する仮想通貨を消費する。即ち、仮想通貨は、アイテム投入操作が行われると当該アイテムに応じた量だけ消費される。
アイテム投入操作により指定されたアイテムが障害物であれば、ステップS11において、仮想カメラ20の位置および向き(視点)に基づいて、視界画像1400内の一部の範囲をアイテム投入範囲として特定する。例えば、図18(B)に示すように、仮想カメラ20がアバターオブジェクト6の右側から仮想空間11を広角で捉えている状況では、アバターオブジェクト6の前方の床面をアイテム投入範囲として特定する。ステップS11の処理が完了すると、ステップS12に進む。また、アイテム投入操作により指定されたアイテムがマガジンまたは救急箱であれば、ステップS11の処理を実行することなくステップS12に進む。
ステップS12では、アイテム投入情報をコンピュータ200に対して送信する。アイテム投入情報には、アイテム投入操作により指定されたアイテムの種別、当該アイテムによる支援効果を発動させるタイミング、当該アイテムに関連付けられたポイントの量、当該アイテム投入操作を行ったユーザ8のIDを特定するための情報が含まれる。また、ステップS11の処理が実行された場合、当該アイテム投入情報には、当該アイテム投入範囲(仮想カメラ20の視点)を特定するための情報も含まれる。なお、当該アイテムに関連付けられたポイントの量をコンピュータ200で管理する場合、当該ポイントの量はアイテム投入情報に含まれていなくてもよい。
ステップS13では、投入されたアイテムとは異なる(投入アイテムにかかわらない)所定の演出オブジェクト24を仮想空間11に配置する。演出オブジェクト24は、例えば、仮想空間11における仮想カメラ20の位置とアバターオブジェクト6の位置との間に配置される。ここで、演出オブジェクト24は、例えば、プレセント箱である。当該演出オブジェクト24による演出では、プレゼント箱が配置されると同時にカウントダウンが開始され、カウント値が0になると蓋が開かれる。また、当該演出は、演出オブジェクト24が仮想空間11に配置されてから所定時間(2秒)が経過したタイミングで終了する。
図19を参照して、アイテム投入操作により指定されたアイテムのオブジェクトは、当該オブジェクトに対応する動作指図データをコンピュータ200から受信することにより、複数のユーザ端末800の各々において規定された仮想空間11に配置される。
即ち、アイテム投入操作を行ったユーザ端末800においては、当該ユーザ端末800により規定される仮想空間11において、当該アイテム投入操作に応じて演出オブジェクト24が配置され、当該配置から所定時間が経過したときに送信される動作指図データに基づいてアイテムオブジェクトが配置される。一方、他のユーザ端末800においては、演出オブジェクト24が仮想空間11に配置されることはなく、アイテム投入操作を行ったユーザ端末800においてアイテムオブジェクトが配置されるタイミングと同じタイミングで、当該アイテムオブジェクトが当該仮想空間11に配置される。ステップS13の処理が完了したとき、またはステップS09でアイテム投入操作が行われたと判定されなかったときは、ステップS14に進む。
なお、ユーザ8は、ユーザ端末800を操作することによりアバターオブジェクト6に対するコメントを入力して送信することも可能である。当該コメントは、視聴している期間(例えばステップS05~S14の処理が実行される期間)にコンピュータ200に送信される。コンピュータ200は、ユーザ端末800から当該コメントを受信したとき、ユーザ名をディスプレイ430に表示可能である。プレイヤ5は、当該コメントに対するコメントを入力できる。ユーザおよびプレイヤ5が入力したコメントは、コンピュータ200から複数のユーザ端末800に配信される。各ユーザ端末800において、当該コメントは、視界画像1400に重畳してタッチスクリーン870に表示される。
ステップS14では、ユーザ8によって視聴終了操作が行われたか否かを、タッチスクリーン870からの操作入力に基づいて判定する。視聴終了操作が行われたと判定されなかったときは、ステップS05に戻る。これにより、コンピュータ200から動作指図データを受信する毎に、オブジェクトの動きや配置などを制御する処理が繰返し実行される。
一方、視聴終了操作が行われたと判定されたときは、ステップS15でコンピュータ200に対して視聴終了情報を送信し、その後に処理を終了する。
図21を参照して、ステップS21では、本ゲームのステージが開始されるタイミングであるか否かを、ゲームの進行状況を示すゲームパラメータに基づいて判定する。ステージが開始されるタイミングであると判定されたときは、ステップS22に進む。ステップS22では、ユーザ端末800から視聴開始時に送信(図20のステップS02)される視聴開始情報と、ユーザ端末800から視聴終了時に送信(図20のステップS15)される視聴終了情報とに基づいて、現在の視聴者数、即ち現時点でゲームを視聴しているユーザ端末800の数を特定する。
ステップS23では、ユーザ8により投入されたアイテムに関連付けられているポイントをプラス(増大)方向に調整するためのポイント調整量を、当該視聴者数に応じて特定する。具体的には、視聴者数が増大するほど、ポイント調整量を増大させる。例えば、視聴者数が0人のときは、ポイント調整量を0%増に設定し、視聴者数が1人以上100人未満のときは、ポイント調整量を5%増に設定し、視聴者数が101人以上200人未満のときは、ポイント調整量は10%増に設定し、視聴者数が201人以上のときは、ポイント調整量を20%増に設定する。
後述するように、当該ポイントは、アバターオブジェクト6に付与される。アバターオブジェクト6は、付与されたポイントが所定値に到達したときにガチャ操作を行うことによって、アイテムを取得できる。当該アバターオブジェクト6は、取得したアイテムを用いることにより、達成条件を成立させる可能性を高めることが可能となり、ゲームの進行をプレイヤにとって有利にすることができる。
ステップS24では、今から開始するステージの難易度と、アバターオブジェクト6を支援するための支援効果の程度とを、当該ステージを視聴する視聴者数に応じて調整する。具体的に、ステージの難易度については、視聴者数が多くなるほど、敵オブジェクト23の戦闘能力や出現量を増大させ、アバターオブジェクト6の戦闘能力を減少させることにより、達成条件が成立し難くなるように調整する。また、支援効果の程度については、視聴者数が多くなるほど、銃の残弾数の回復量またはアバターオブジェクト6の体力の回復量を減少させ、障害物の大きさ、強度、重さ等を減少させることにより、当該支援効果を減少させる。
例えば、視聴者数が0人のときは、敵オブジェクト23の戦闘能力および出現量、アバターオブジェクト6の戦闘能力、銃の残弾数の回復量、アバターオブジェクト6の体力の回復量、障害物の大きさ、強度、重さを初期値に設定する。視聴者数が1人以上100人未満のときは、敵オブジェクト23の戦闘能力および出現量を初期値に対して5%増に設定し、アバターオブジェクト6の戦闘能力を初期値に対して5%減に設定し、銃の残弾数の回復量、アバターオブジェクト6の体力の回復量、障害物の大きさ、強度、重さを初期値に対して5%減に設定する。
視聴者数が101人以上200人未満のときは、敵オブジェクト23の戦闘能力および出現量を初期値に対して10%増に設定し、アバターオブジェクト6の戦闘能力を初期値に対して10%減に設定し、銃の残弾数の回復量、アバターオブジェクト6の体力の回復量、障害物の大きさ、強度、重さを初期値に対して10%減に設定する。視聴者数が201人以上のときは、敵オブジェクト23の戦闘能力および出現量を初期値に対して20%増に設定し、アバターオブジェクト6の戦闘能力を初期値に対して20%減に設定し、銃の残弾数の回復量、アバターオブジェクト6の体力の回復量、障害物の大きさ、強度、重さを初期値に対して20%減に設定する。
なお、敵オブジェクト23の戦闘能力は、例えば、敵オブジェクト23の移動速度(俊敏さ)や現ステージの戦闘開始時の体力により規定される。また、敵オブジェクト23の出現量は、例えば、現ステージに出現する敵オブジェクト23の総数や、現ステージにおける敵オブジェクト23の出現頻度により規定される。アバターオブジェクト6の戦闘能力は、例えば、アバターオブジェクト6の移動速度(俊敏さ)、現ステージの戦闘開始時の体力、装備する武器・防具の種類による補正値などにより規定される。
ステップS24の処理が完了すると、ステップS25に進む。また、ステップS21でステージが開始されたと判定されなかったときは、ステップS22~S24の処理を実行することなくステップS25に進む。
ステップS25では、ユーザ端末800からアイテム投入情報を受信したか否かを、通信IF250からの入力に基づいて判定する。当該アイテム投入情報を受信したと判定されたときは、ステップS26に進み、アバターオブジェクト6に応援ポイントを付与する。具体的には、アイテム投入情報に含まれているポイントの量をステップS23で特定されたポイント調整量に基づいて補正し、補正されたポイントの量をアバターオブジェクト6に付与する。例えば、アイテム投入情報に含まれているポイントの量が50ポイントで、ステップS23で特定されたポイント調整量が10%増であれば、55ポイント(=50×1.1)が応援ポイントとしてアバターオブジェクト6に付与される。
ステップS27では、アイテム投入範囲を特定するための情報が当該アイテム投入情報に含まれている場合に、当該アイテム投入範囲内の任意の位置をアイテム投入位置として特定する。ただし、アイテム投入範囲の中央位置を当該アイテム投入位置として特定するようにしてもよく、アイテム投入範囲内の位置のうちアバターオブジェクト6と敵オブジェクト23との位置関係に応じた位置(例えば、アバターオブジェクト6と、アバターオブジェクト6に最も近い敵オブジェクト23との間の位置)を当該アイテム投入位置として特定するようにしてもよい。
ステップS27の処理が完了すると、ステップS28に進む。また、アイテム投入範囲を特定するための情報が当該アイテム投入情報に含まれていなければ、ステップS27の処理を実行することなく、ステップS28に進む。ステップS28では、当該アイテム投入情報に基づいて、アイテム投入操作により指定されたアイテムの種別と、アイテムオブジェクトを仮想空間11に配置させて支援効果を発動させるタイミングとを特定する。具体的には、図示しない発動管理テーブルに、当該アイテムの種別と、当該支援効果の発動タイミング(即ち、当該アイテム投入情報を受信してから当該所定時間が経過したタイミング)とを設定する。
ステップS28の処理が完了すると、ステップS29に進む。また、ステップS25でアイテム投入情報を受信したと判定されなかったときも、ステップS29に進む。ステップS29では、当該発動管理テーブルに設定されている発動タイミング(アイテムオブジェクトの配置タイミング)が到来したか否かを、コンピュータ200に設けられているタイマ(図示せず)に基づいて判定する。
アイテム投入情報を未だ受信していないときや、アイテム投入情報を受信したものの当該発動タイミングが到来していないときは、ステップS29において発動タイミングが到来したとは判定されない。このときは、ステップS30の処理を実行することなくステップS31に進む。
一方、当該発動タイミングが到来したと判定されたときは、ステップS30に進み、発動管理テーブルに設定されているアイテムの種別に応じた支援効果を発動させる。このとき、アイテムを投入したユーザのユーザIDを複数のユーザ端末800に配信するようにしてもよい。各ユーザ端末800において、当該ユーザIDを表す画像は、視界画像1400に重畳してタッチスクリーン870に表示される。
ステップS30では、具体的には、当該アイテムがマガジンであれば、アバターオブジェクト6が使用する銃の残弾数を回復させてゲーム進行をプレイヤ5に有利にし、当該アイテムが救急箱であれば、アバターオブジェクト6の体力を回復させてゲーム進行をプレイヤ5に有利にする。また、当該アイテムが障害物であれば、仮想空間11内の位置のうちステップS27で特定したアイテム投入位置に、当該障害物のオブジェクトを配置してゲーム進行をプレイヤ5に有利にする。なお、弾数や体力の回復量、障害物の大きさ、強度、重さ等は、ステップS24で調整された支援効果の程度に応じて規定される。ステップS30の処理が完了すると、ステップS31に進む。
ステップS31では、アバターオブジェクト6によりガチャ操作が行われたか否かを、コントローラ300またはモーションセンサ420からの入力に基づいて判定する。ガチャ操作は、アバターオブジェクト6に付与された応援ポイントが所定値に到達することにより可能となる。当該ガチャ操作が行われたと判定されたときは、ステップS32に進み、アバターオブジェクト6に付与された応援ポイントを消費してアイテムを取得する。
ガチャ操作により取得するアイテムは、例えば、ユーザ8により投入可能なアイテムと異なるユニークなアイテムを含む。また、ガチャ操作により取得するアイテムは、ユーザの支援の有無にかかわらず使用できるアイテムを含む。なお、取得するアイテムは、ユーザ8により投入可能なアイテムと同じアイテムであったり、ユーザ8による支援により使用可能となるアイテムであってもよい。
ステップS33では、取得したアイテムに応じた成立可能性向上効果(達成条件が成立する可能性を向上させる向上作用)を発動させる。具体的には、当該アイテム(例えばナイフ)のオブジェクトをアバターオブジェクト6の前方の床面に配置する(例えば、ナイフを落下)。アバターオブジェクト6は、当該オブジェクトを使用して敵オブジェクト23と対戦できる。これにより、ゲームをクリアする可能性を高めることができる。なお、当該オブジェクトの威力(例えば、大きさ)は、ステップS24で調整された支援効果の程度に応じて規定するようにしてもよい。
ステップS33の処理が完了すると、ステップS34に進む。また、ステップS31でガチャ操作が行われたと判定されなかったときは、ステップS32およびS33の処理を実行することなく、ステップS34に進む。ステップS34では、ゲームプログラムに基づいてゲームを進行させる。具体的には、ステップS24で調整された難易度に応じた態様で、アバターオブジェクト6、敵オブジェクト23、その他オブジェクト(ステップS30で投入されたアイテムオブジェクトを含む)について、仮想空間11内における配置・移動・変更等の更新を行う。また、当該難易度に応じた態様で、アバターオブジェクト6の体力、使用可能なマガジンの数、銃の残弾数、敵オブジェクト23の残数等の各種ゲームパラメータを初期設定または更新等する。
ステップS35では、ステップS34において更新された仮想空間11内のオブジェクトに基づいて、アバターオブジェクト6の配置・動作等や、敵オブジェクト23等の他のオブジェクトの配置・動作等を特定可能にするための動作指図データを生成し、当該動作指図データを複数のユーザ端末800に配信する。ステップS30の処理によって障害物のオブジェクトが仮想空間11に配置された場合、当該オブジェクトが配置されたことを特定するための動作指図データは、このステップで配信する。ステップS35では、ステップS34において初期設定または更新等された各種ゲームパラメータを含むゲーム情報を生成し、当該ゲーム情報を複数のユーザ端末800に配信する。
上述のように、図21に示すフローチャートに従う処理は、所定時間(1/60秒)毎に実行される。このため、動作指図データおよびゲーム情報は、当該所定時間毎に、サーバ600を介して複数のユーザ端末800に配信される。各ユーザ端末800においては、当該動作指図データおよびゲーム情報に基づいて、ゲームプレイ映像がタッチスクリーン870に表示される。ステップS35の処理が完了すると、リターンする。
<本実施形態の効果>
本実施形態によれば、仮想空間11に登場するアバターオブジェクト6が所定の達成条件を成立させることによりクリアとなるゲームのゲームプレイ映像は、コンピュータ200から配信される動作指図データに基づいて、複数のユーザ端末800の各々に表示される。コンピュータ200は、ゲームプレイ映像を表示しているユーザ端末800の数、即ち視聴者数を特定し、当該視聴者数に応じて達成条件を成立させる難易度を調整する。
これによって、アイテムの投入などの応援を視聴者に対して喚起することができる。即ち、視聴者数が多い程、難易度が高くなるため、多くの視聴者がアイテムを投入することによる仮想通貨の消費量の増大が期待できる。
また、本実施形態によれば、ユーザ8によるアイテム投入操作に応じてユーザ端末800からアイテム投入情報を受信すると、コンピュータ200は、達成条件の成立を支援する支援効果を発動させる。これによって、ユーザ8はプレイヤ5によるゲームプレイに積極的に関与することができ、ひいてはゲームの好趣および視聴意欲を向上させることができる。
さらに、本実施形態によれば、当該アイテム投入操作は、ユーザ8所有の仮想通貨の消費を伴う操作である。この結果、ユーザ8は、アバターオブジェクト6によるゲームの進行状況や他のユーザ8による支援状況を見極めながら、慎重にアイテム投入操作を行うこととなり、無制限にアイテム投入を可能とする場合よりもゲーム展開を面白くすることができる。
また、本実施形態によれば、達成条件の成立を支援する支援効果の程度が、視聴者数に応じて調整される。具体的には、視聴者数が多い程、支援効果の程度が小さくなる。これによって、視聴者数が多い場合には、視聴者からの支援機会が多くなることを期待できるものの、難易度が高くなるとともに支援効果の程度が小さくなる。一方、視聴者数が少ない場合には、視聴者からの支援機会が少なくなることが予想されるものの、難易度が低くなるとともに支援効果の程度が大きくなる。その結果、視聴者数にかかわらず、プレイヤ5がゲームをクリアできる可能性を一定範囲内に収束させることを期待でき、プレイヤ5によりゲームクリアの可能性を視聴者数に応じて極端に変化させてしまう(簡単あるいは難しくなる)ことなどを防止できる。
さらに、本実施形態によれば、投入されるアイテムにはポイントが関連付けられており、当該ポイントは、アイテム投入操作によってアバターオブジェクト6に付与される。付与されたポイントが所定値に到達すると、アバターオブジェクト6はガチャ操作によりアイテムを仮想空間11に投入可能となる。プレイヤ5がゲームをクリアできる可能性は、当該ガチャ操作によりアイテムを投入することにより向上する。また、アバターオブジェクト6に付与されるポイントのプラス方向の調整量は、視聴者数に応じて変化する。具体的には、視聴者数が増大するほど、当該プラス方向の調整量を増大させる。このため、視聴者を増やしてアイテム投入によりポイントをより多く獲得できるようにすべく、よりレベルの高いゲームプレイ映像や視聴者にとって面白いゲームプレイ映像を配信しようとする動機をプレイヤ5に働かせることができる。
さらに、本実施形態によれば、アイテムに関連付けられるポイントの量は、当該アイテムを投入するときに消費される仮想通貨の量に応じた量に設定される。これによって、ユーザ8の思い(支援する気持ちの大きさ)をアバターオブジェクト6に付与されるポイントの量に反映させることができる。
また、本実施形態によれば、ゲームは、各々に達成条件が関連付けられた複数のステージを含み、各ステージの難易度は、当該ステージが開始される際の視聴者数に応じて調整される。これによって、例えば最初のステージの開始時の視聴者数に応じて難易度を調整するようなものと比較して、きめ細かく難易度を調整することができる。また、ステージ途中であっても視聴者数を随時特定して難易度を調整するようなものと比較して、難易度を調整するための処理負担を軽減できる。
さらに、本実施形態によれば、ゲームは、アバターオブジェクト6が敵オブジェクト23と対戦する対戦ゲームであり、アバターオブジェクト6の戦闘能力、敵オブジェクト23の戦闘能力および出現量は、視聴者数に応じて調整される。具体的には、視聴者数が少ない程、アバターオブジェクト6の戦闘能力が高くなり、視聴者数が多い程、敵オブジェクト23の戦闘能力が高くなるとともに、敵オブジェクト23の出現量が多くなる。これによって、視聴者数が少ないために、プレイヤ5がゲームをなかなかクリアできないといった状況を生じさせ難くすることができる。また、視聴者に対してプレイヤ5を支援する動機を適正に働かせることができる。
また、本実施形態によれば、難易度に応じた態様でゲームが進行し、当該ゲームの進行状況を表すゲームパラメータを含むゲーム情報がユーザ端末800に配信される。これによって、アバターオブジェクト6の体力、使用可能なマガジンの数、銃の残弾数、敵オブジェクト23の残数等をユーザ端末800において表示することが可能となる。
また、本実施形態によれば、視聴者数に応じて難易度を調整するため、アバターオブジェクト6を操作するプレイヤ5においては、ゲーム操作を上達させてよりレベルの高いゲームプレイ映像や視聴者にとって面白いゲームプレイ映像を配信することにより、視聴者数をさらに増やし、さらに難易度の高くレベルの高いゲームプレイ映像等を配信するという動機付けが働く。この結果、ゲーム操作の上達→視聴者数の増大→ゲーム操作の上達→…といった好循環が促される。さらに、難易度を調整することにより、ゲームの展開を視聴者によって予測されてしまうことが困難になるため、ゲームプレイ映像の好趣および視聴者側の視聴意欲を向上させることができる。
本実施形態によれば、ユーザ端末800は、本ゲームの仮想空間11を表すゲームプレイ映像をタッチスクリーン870に表示する。また、当該仮想空間11に配置するアイテムオブジェクトを指定するためのアイテム投入操作をユーザ8から受け付けると、当該ユーザ8のユーザ端末800は、アイテム投入情報をサーバ600を介してコンピュータ200に送信するとともに、演出オブジェクト24による演出画像をタッチスクリーン870に表示する。
コンピュータ200は、アイテム投入情報に応じたタイミングでアイテムを仮想空間に配置するとともに、当該アイテムに関する動作指図データを生成し、当該動作指図データをサーバ600を介して複数のユーザ端末800に配信する。ゲームを視聴中のユーザ端末800は、当該動作指図データに基づいて、ユーザが指定したアイテムオブジェクトを仮想空間11に配置する。また、動作指図データのデータ量は、例えばオブジェクトデータなどに比べて格段に少なく、当該動作指図データの生成および送信に要する時間を短縮できる。これにより、複数のユーザ端末800の間でアイテムオブジェクトの配置に関して同期させることができるとともに、アイテム投入操作からアイテムオブジェクトが配置されるまでの期間を極力短縮できる。
また、アイテム投入操作が行われたユーザ端末800において規定された仮想空間11においては、アイテムオブジェクトが配置されるまでの間において、演出オブジェクト24による演出画像が表示される。これによって、ユーザがアイテム投入操作を行ってからアイテムオブジェクトが仮想空間11に配置されるまでの間を持たせることができるとともに、ユーザに違和感を抱かせてしまうことを防止できる。
また、本実施形態によれば、演出画像は、演出オブジェクト24を仮想空間11に配置することにより表示される。このため、仮想オブジェクト以外の画像(例えばアイテムを投入したユーザ8のユーザIDや、ユーザやプレイヤが入力したコメントなどを表す画像)を視界画像1400に重畳して表示される場合であっても、当該重畳された仮想オブジェクト以外の画像が当該演出オブジェクト24によって隠れて確認できなくなってしまうことを防止でき、ゲームプレイ映像の好趣が低下してしまうことを防止することができる。
さらに、本実施形態によれば、アイテムオブジェクトが複数種類設けられている一方、演出オブジェクト24は、投入されたアイテムオブジェクトの種類にかかわらないオブジェクトに定められている。これによって、ユーザ端末800の処理負担を極力軽くすることができる。
また、本実施形態によれば、仮想空間11にオブジェクトを表示するための表示用データは、仮想空間11に配置するタイミングにおいて受信するものではなく、ストレージ830に予め記憶されている。ゲームを視聴中の複数のユーザ端末800の各々は、動作指図データに基づいて、当該表示用データを用いてアイテムオブジェクトを仮想空間11に配置する。また、アイテム投入操作が行われたユーザ端末800は、所定時間に亘り演出オブジェクト24による演出を実行する。
ここで、アイテム投入情報には、演出オブジェクト24による演出が終了するタイミング(支援効果の発動タイミング)が含まれ、ユーザ端末800は、アイテム投入操作を受け付けたときに当該アイテム投入情報をサーバ600を介してコンピュータ200に送信する。これによって、コンピュータ200は、アイテム投入情報から特定されるタイミングでアイテムオブジェクトを仮想空間11に配置するとともに動作指図データを生成して複数のユーザ端末800各々に送信する。この結果、アイテム投入操作を行ったユーザ端末800においては、演出オブジェクト24による演出が終了すると同時に、アイテムオブジェクトを仮想空間11に配置することができる。即ち、演出オブジェクト24による演出とアイテムオブジェクトの配置とをシームレスでつなげることができる。
また、本実施形態によれば、ユーザ端末800は、仮想空間11に仮想カメラ20を配置し、当該仮想カメラ20の視界を表す視界画像1400をタッチスクリーン870に表示する。このとき、ユーザ端末800は、当該視界画像1400の範囲に応じてアイテム投入範囲を特定し、当該アイテム投入範囲を含むアイテム投入情報をサーバ600を介してコンピュータ200に送信する。これによって、仮想カメラ20の視界にアイテムオブジェクトを配置することができる。また、アイテム投入範囲は、ユーザの操作により仮想カメラ20の位置および向きに伴って変更される。これによって、アバターオブジェクト6と敵オブジェクト23との間の位置に障害物オブジェクトを投入するなどの戦略的な支援が可能となる。
さらに、本実施形態によれば、投入されたアイテムオブジェクトを配置する位置は、アイテム投入範囲のうちからコンピュータ200により決定される。この際、コンピュータ200は、既に配置されている他のオブジェクトとの位置関係を考慮して位置を決定することができ、当該決定された位置を特定するための動作指図データを配信できる。その結果、ユーザ8の操作により投入されたアイテムオブジェクトと既に配置されている他のオブジェクトとの間で予期しない衝突ないし干渉が発生することを未然に防止することができる。
<変形例>
以上説明した実施形態の変形例などを以下に列挙する。
(1)上記実施形態においては、アバターオブジェクト6に付与されるポイントの量を、視聴者数に応じて変化させるようにしている。しかし、当該ポイントを変化させることに替えてあるいは加えて、アバターオブジェクト6がガチャ操作を行うために到達する必要がある所定値を視聴者数に応じて変化させるようにしてもよい。
(2)上記実施形態においては、演出オブジェクト24による演出が終了するタイミングがアイテム投入情報に含まれ、ユーザ端末800は、アイテム投入操作を受付けたときに、当該アイテム投入情報をサーバ600を介してコンピュータ200に送信する。しかし、当該演出の終了タイミングをアイテム投入情報に含めることなく、当該演出が終了するとき(所定時間が経過したとき)に、当該アイテム投入情報をサーバ600を介してコンピュータ200に送信するようにしてもよい。この場合、コンピュータ200は、アイテム投入情報を受信したときに対応するアイテムを配置等させ、動作指図データを生成・配信するようにしてもよい。動作指図データのデータ量は、オブジェクトデータに比べて格段に少ない。このため、演出が終了するときにアイテム投入情報を送信することによっても、演出オブジェクト24による演出の終了とほぼ同時にアイテムオブジェクトを仮想空間11に配置するとともに動作指図データを複数のユーザ端末800各々に送信することができる。また、演出オブジェクト24による演出時間が固定的であり、当該演出時間がコンピュータ200側で既知であれば、演出の終了タイミングをアイテム投入情報に含めなくても、演出オブジェクト24による演出の終了と同時にアイテムオブジェクトを仮想空間11に配置するとともに動作指図データを複数のユーザ端末800各々に送信することが可能となる。
(3)上記実施形態においては、アイテム投入操作が行われると、ユーザ8所有の仮想通貨が消費される。ここで、仮想通貨の消費額は、視聴者数に応じて変動させるようにしてもよい。同じアイテムを投入する場合であっても、例えば、視聴者数が多い程、多くの仮想通貨が必要となる(消費量が多くなる)ようにしてもよい。この場合、アイテムに関連付けられているポイントの量は、仮想通貨の消費量にかかわらず、固定的に設定するようにしてもよい。
(4)上記実施形態においては、難易度を低くする際に、敵キャラクタの戦闘能力および出現量のいずれも減少させるようにしている。しかし、当該戦闘能力および当該出現量に基づいて難易度を総合的に評価し、当該難易度が低くなる限り、戦闘能力を上げる一方で出現量を減らしたり、戦闘能力を下げる一方で出現量を増やすようにしてもよい。また、難易度を調整する際に、当該戦闘能力および出現量のいずれか一方のみを変化させるようにしてもよい。
(5)上記実施形態においては、現ステージの視聴者数がゲームプレイ映像上に表示されることはない。しかし、当該視聴者数を当該ゲームプレイ映像上に表示するようにしてもよい。また、これに替えてあるいは加えて、視聴者数に応じた難易度を特定可能な情報を当該ゲームプレイ映像上に表示するようにしてもよい。
(6)上記実施形態においては、プレイヤ5は、HMDセット110を装着してアバターオブジェクト6の動作を制御する。しかし、プレイヤ5は、デスクトップPC用のモニタのような据え置き型モニタにアバターオブジェクト6を表示させ、ハンドコントローラやキーボードによって当該アバターオブジェクト6の動作を制御するようにしてもよい。また、携帯情報端末の画面にアバターオブジェクト6を表示させ、当該画面に対するタッチ操作によってアバターオブジェクト6の動作を制御するようにしてもよい。
(7)上記実施形態においては、UI画像22上のアイコンに対するタップ操作に応じて、アイテムオブジェクトが仮想空間11に投入される。しかし、フリック操作やスワイプ操作に応じてアイテムオブジェクトを仮想空間11に投入するようにしてもよい。この場合、アイテム投入範囲は、フリック操作の態様(操作方向)やスワイプ操作の態様(速度、タッチ操作された時間あるいは距離)に基づいて特定するようにしてもよい。さらに、画面に対するタッチ操作ではなく、声入力に応じてアイテムオブジェクトを仮想空間11に投入するようにしてもよい。
(8)上記実施形態においては、ユーザ端末800においてアイテム投入範囲が特定され、コンピュータ200において当該アイテム投入範囲内のいずれかの位置がアイテム投入位置として特定される。しかし、ユーザ端末800において投入されるアイテムオブジェクトを配置する位置(アイテム投入位置)そのものを直接的に特定するようにしてもよい。この場合、フリック操作またはスワイプ操作に応じてアイテムオブジェクトを仮想空間11に投入するのであれば、当該フリック操作またはスワイプ操作の態様(速度、タッチ操作された時間あるいは距離)に基づいてアイテム投入位置を特定するようにしてもよい。また、アイテム投入位置は、投入したいアイテムをタッチ操作により選択した後、続けて当該アイテムを配置したい位置をタッチ操作することや、投入したいアイテムを選択したタッチ操作の位置を配置したい位置まで移動させて解除することなどにより特定するようにしてもよい。
(9)上記実施形態においては、視点変更操作が行われると、仮想カメラ20の視点が変更されるが、このとき、特定の視点変更操作(所定の視点変更アイコンへのタッチ操作など)に応じて、仮想カメラ20の視点をアバターオブジェクト6の視点または敵オブジェクト23の視点に設定するようにしてもよい。また、当該視点が敵オブジェクト23の視点である場合において、当該敵オブジェクト23が倒されたときには、仮想カメラ20の視点は、初期位置に配置するか、または他の敵オブジェクト23の視点に設定するようにしてもよい。
(10)上記実施形態においては、視聴者数が多いほど、敵オブジェクト23の戦闘能力や出現量を増大させ、アバターオブジェクト6の戦闘能力を減少させ、アバターオブジェクト6を支援するための支援効果を減少させる例について説明した。しかし、これに代えて、視聴者数が多いほど、敵オブジェクト23の戦闘能力や出現量を減少させ、アバターオブジェクト6の戦闘能力を増大させ、アバターオブジェクト6を支援するための支援効果を増大させるようにしてもよい。即ち、プレイヤ5がゲームの達成条件を成立させる難易度は、視聴者数が多いほど低くなり、視聴者数が少ないほど高くなるようにしてもよい。
(11)上記実施形態においては、アバターオブジェクト6または敵オブジェクト23の戦闘能力を現ステージの戦闘開始時の体力に基づいて規定し、当該体力を視聴者数に応じて増減させるようにしている。しかし、当該体力を増減させることに替えてあるいは加えて、ダメージを受けたことによる当該体力の減少量を視聴者数に応じて増減させるようにしてもよい。
(12)上記実施形態においては、敵オブジェクト23は、ゲームプログラムに従って動作し、プレイヤ5が直接操作できないノンプレイヤオブジェクトである。しかし、敵オブジェクト23は、他のプレイヤ5が直接操作可能なプレイヤオブジェクトであってもよい。この場合、ある敵オブジェクト23が、あるステージではプレイヤオブジェクトとなり、別のステージではノンプレイヤオブジェクトとなるといったように、ステージごとに敵オブジェクト23の性質を異ならせるようにしてもよい。また、敵オブジェクト23は、あるユーザがユーザ端末を用いて操作可能なプレイヤオブジェクトであってもよい。
(13)上記実施形態においては、アバターオブジェクト6に付与されるポイントのプラス方向の調整量は、視聴者数が多いほど増大される。しかし、視聴者数が減少するほど、当該プラス方向の調整量を増大させるようにしてもよい。この場合、ユーザ8には、人気のないアバターオブジェクト6を積極的に応援して、当該ユーザ8のことをプレイヤ5に覚えて貰おうという動機付けが働く。
(14)上記実施形態においては、ユーザ端末800においてアイテム投入操作が行われると、投入されるアイテムにかかわらない所定のプレゼント箱のような演出オブジェクト24を当該ユーザ端末800における仮想空間11に配置するようにしている。しかし、アイテム投入操作が行われたときには、演出オブジェクト24の代わりに、投入されたアイテムのオブジェクトを所定位置に表示するようにしてもよい。この場合、アイテム投入操作から所定時間が経過すると、当該演出オブジェクト24による演出が終了し、コンピュータ200から配信された動作指図データに基づくオブジェクトが当該仮想空間11に配置される。
(15)上記実施形態においては、アバターオブジェクト6を敵オブジェクト23と対戦させるゲームのゲームプレイ映像をユーザ端末800において表示することを想定している。しかし、単にお喋りをするアバターオブジェクトをユーザ端末800において表示するようにしてもよい。
(16)上記実施形態においては、ユーザ8により投入されたアイテムのオブジェクトを仮想空間11に配置するタイミングは、アイテム投入操作を行ったユーザ端末800と他のユーザ端末800とのいずれにおいても、コンピュータ200から配信された動作指図データに基づいて特定される。しかし、アイテム投入操作を行ったユーザ端末800については、当該動作指図データに基づかなくても、当該配置タイミングを特定することができる。このため、アイテム投入操作を行ったユーザ端末800と他のユーザ端末800とで異なる処理を実行することにより、アイテムオブジェクトを仮想空間11に配置するようにしてもよい。具体的には、アイテム投入操作を行ったユーザ端末800については、アイテム投入操作から所定時間後に当該アイテムオブジェクトを配置する処理を行う一方、その他のユーザ端末800については、コンピュータ200から配信された動作指図データに基づいて当該アイテムオブジェクトを配置する処理を行うようにしてもよい。
(17)上記実施形態においては、複数のステージを用意し、各ステージが開始される際の視聴者数に応じてゲームの難易度を調整するようにしている。しかし、当該視聴者数をリアルタイムで(あるいは一定時間(1分)毎に)把握し、ステージの途中でも難易度を調整するようにしてもよい。
(18)上記実施形態においては、ユーザ8の操作(アイテム投入操作等)により、アバターオブジェクト6により進行するゲームにおける達成条件の成立を支援することを想定している。しかし、ユーザ8の操作により、アバターオブジェクト6により進行するゲームにおける達成条件の成立を阻害する(プレイヤ5にとって不利にする)阻害作用を及ぼすものであってもよい。具体的には、ユーザ8の操作により、上記実施形態における敵オブジェクト23に救急箱を提供して当該敵オブジェクト23の体力に関するゲームパラメータを回復させたり、当該敵オブジェクト23が使用可能な斧や鍬を仮想空間11に投入して当該敵オブジェクト23の攻撃力に関するゲームパラメータを高めたりして、アバターオブジェクト6によるゲーム進行を阻害する(即ち、ゲーム進行をプレイヤ5に不利にする)ものであってもよい。
(19)上記実施形態においては、視聴者数を100人単位で分類し、200人以下の範囲において視聴者数が多くなるほど、難易度の増大量を大きくするようにしている。しかし、難易度の増大量は、必ずしも視聴者数の増大に対応させる必要はない。即ち、視聴者数が1人以上100人未満のときの難易度の増大量を、視聴者数が101人以上200人未満のときの難易度の増大量よりも大きくするようにしてもよい。また、難易度は、視聴者数100人単位で調整するものに限らず、視聴者数1人単位で調整するものであってもよく、また、視聴者数が多くなるほど大きな単位(0人~10人、11人~50人、51人~150人、151人~300人等)で調整するものであってもよい。
(20)上記実施形態においては、アバターオブジェクト6が敵オブジェクト23と対戦する対戦ゲームを想定し、敵オブジェクト23の戦闘能力および出現量と、アバターオブジェクト6の戦闘能力とに基づいて難易度を規定するとともに、アバターオブジェクト6を支援するために、ユーザ8が投入可能なアイテムとして、マガジン、救急箱、障害物等のアイテムを設けている。
しかし、アバターオブジェクト6にブロックの配置を並び替えさせるパズルゲームを本ゲームとして想定した場合、難易度は、達成条件を成立させるために必要なブロック数、ブロックの大きさ、ブロックの種類等に基づいて規定し、ユーザ8が投入可能なアイテムとして、邪魔なオブジェクト(不要なブロック、壁、置物)を破壊するためのハンマーや爆弾を設けるようにしてもよい。
また、アバターオブジェクト6を密室から脱出させる脱出ゲームを本ゲームとして想定した場合、難易度は、室内の配置物の多様性、脱出するための鍵の位置、鍵の在り処を示唆する脱出支援アイテムの数等に基づいて規定し、ユーザ8が投入可能なアイテムとして、当該脱出支援アイテムのいずれかを設けるようにしてもよい。なお、この場合、支援効果の程度は、投入可能な脱出支援アイテムの数に基づいて規定される。
(21)上記実施形態においては、演出オブジェクト24は、アバターオブジェクト6と重複しない位置であってアバターオブジェクト6の視認性を阻害しない位置に演出画像が表示されるように配置される例について説明した。しかし、演出オブジェクト24は、アバターオブジェクト6と一部が重複する位置に表示されるように配置してもよく、また、透過性を有するオブジェクト(例えば半透明のオブジェクト)としてもよ。
(22)上記実施形態においては、演出画像は、演出オブジェクト24を仮想空間11に配置することにより表示するようにしている。しかし、演出オブジェクト24を仮想空間11に配置することに替えて、演出画像を視界画像1400に重畳することにより、当該演出画像をタッチスクリーン870に表示するようにしてもよい。
(23)上記実施形態においては、当該アイテム投入情報には、当該アイテム投入範囲を特定するための情報が含まれる。しかし、アイテム投入範囲を特定するための情報に替えて、仮想カメラ20の視点を特定するための情報をアイテム投入情報に含めるようにしてもよい。
(24)上記実施形態においては、コンピュータ200は、図8に示す仮想空間11においてアイテムオブジェクトを配置する際には、当該アイテムオブジェクトを配置する前の段階において、当該配置および配置タイミングを特定可能にするための動作指図データを生成し、ユーザ端末800に配信するようにしてもよい。この場合、当該動作指図データには、当該アイテムオブジェクトの配置・動作等を特定するための情報に加えて、当愛アイテムオブジェクトを配置するタイミングを特定するための情報も含まれる。また、ユーザ端末800は、当該タイミングで図14に示す仮想空間11にオブジェクトを配置する。
(25)上記実施形態においては、コンピュータ200は、動作指図データを所定時間毎に複数のユーザ端末800に配信する。しかし、動作指図データは、図8に示す仮想空間11においてオブジェクトに変化が生じたときに配信するようにしてもよい。
(26)上記実施形態においては、アバターオブジェクト6に応援ポイントを付与する際、アイテム投入情報に含まれているポイントの量をステップS23で特定されたポイント調整量に基づいて補正するようにしている。しかし、ステップS23で特定されたポイント調整量は、ゲーム情報に含めてユーザ端末800に配信し、アイテムに応じてポイント調整量(あるいは調整後のポイント)を視界画像1400に重畳して表示するようにしてもよい。この場合、ユーザは、アバターオブジェクト6に付与されるポイントがどの程度調整されるのか(あるいは調整後のポイント)をアイテム投入操作の前に把握することができる。
(27)上記実施形態においては、ゲームの難易度がコンピュータ200において調整されるところ、当該難易度はゲーム情報に含めてユーザ端末800に配信し、視界画像1400に重畳して表示したり、ユーザ8が投入できるアイテムの種類・数などを当該難易度に応じて異ならせるようにしてもよい。
(28)上記実施形態においては、複数のステージがゲームに用意されており、各ステージの開始時の視聴者数に応じて難易度が調整される。しかし、ゲームに用意するステージを1つとして、当該ステージの開始時の視聴者数に応じて当該難易度を調整するようにしてもよい。また、ステージ数にかかわらず、ゲームの進行における所定のタイミングの視聴者数に応じて、当該難易度を調整するようにしてもよい。
<付記>
以上の各実施形態で説明した事項を、以下に付記する。
(付記1):
本開示に示す一実施形態のある局面によれば、プロセッサおよびメモリを備え、所定条件を成立させることによりクリアとなるゲームのゲームプレイ映像を視聴端末(800)において表示可能とするためのデータを配信するコンピュータ(200)により実行される配信プログラムであって、前記配信プログラムは、前記プロセッサに、前記ゲームプレイ映像を表示している視聴端末の視聴数を特定するステップ(S22)と、当該視聴数に応じて、前記所定条件を成立させる難易度を調整するステップ(S24)とを実行させる。
(付記2):
(付記1)において、前記配信プログラムは、前記プロセッサに、視聴者による所定操作に基づき前記視聴端末から送信される操作情報を受信したことに応じて、前記所定条件の成立を支援する支援作用を及ぼすステップ(S30)を実行させる。
(付記3):
(付記2)において、前記所定操作は、前記視聴者に関連付けられている仮想通貨の消費を伴う操作である。
(付記4):
(付記2)または(付記3)において、前記配信プログラムは、前記プロセッサに、前記視聴数に応じて前記支援作用の大きさを変化させるステップ(S24)を実行させる。
(付記5):
(付記4)において、前記変化させるステップは、前記視聴数が第1数であるときには当該第1数よりも小さい第2数であるときよりも前記支援作用が小さくなるように変化させる。
(付記6):
(付記2)から(付記5)のいずれかにおいて、前記ゲームは、前記操作情報を受信することにより、ポイントが関連付けられたアイテムを出現させるゲームであり、前記及ぼすステップは、当該アイテムに応じた支援作用を及ぼし、前記配信プログラムは、前記プロセッサに、前記アイテムに関連付けられたポイントを配信者に付与するステップ(S26)と、配信者に付与されたポイントが所定値に到達することにより、前記所定条件が成立する可能性を向上させる向上作用を及ぼすステップ(S33)とを実行させる。
(付記7):
(付記6)において、前記配信プログラムは、前記プロセッサに、前記視聴数に応じて、前記所定値を変化させるステップを実行させる。
(付記8):
(付記6)から(付記7)において、前記配信プログラムは、前記プロセッサに、前記視聴数に応じて、前記配信者に付与するポイントの量を変化させるステップ(S23)を実行させる。
(付記9):
(付記6)から(付記8)のいずれかにおいて、前記所定操作は、前記視聴者に関連付けられている仮想通貨の消費を伴う操作であり、前記アイテムに関連付けられるポイントの量は、当該アイテムの出現に要する仮想通貨の消費量に応じて設定されている。
(付記10):
(付記1)から(付記9)のいずれかにおいて、前記調整するステップは、ゲームが開始されるときの前記視聴数に応じて、前記難易度を調整する。
(付記11):
(付記10)において、前記ゲームは、各々に所定条件が関連付けられた複数のステージを含み、前記調整するステップは、前記複数のステージの各々が開始されるときの前記視聴数に応じて、当該ステージに関連付けられた所定条件を成立させる難易度を調整する。
(付記12):
(付記1)から(付記11)のいずれかにおいて、前記データは、配信者の動きを示すモーションデータを少なくとも含み、前記ゲームは、前記モーションデータに基づいて動作するプレイヤオブジェクトが他のオブジェクトと戦うゲームであり、前記調整するステップは、前記視聴数に応じて、前記プレイヤオブジェクトの能力、前記他のオブジェクトの能力、および前記他のオブジェクトの出現量の少なくともいずれかを変化させることにより、前記難易度を調整する。
(付記13)
(付記1)から(付記12)のいずれかにおいて、前記配信プログラムは、前記プロセッサに、前記調整するステップにより調整される難易度に応じた態様で、ゲームの進行を制御するステップ(S34)と、前記ゲームの進行に応じて配置されるゲームオブジェクトの種類および位置を特定するためのオブジェクト情報を生成するステップ(S35)と、前記ゲームの進行に応じて更新されるゲームパラメータを特定するためのパラメータ情報を生成するステップ(S35)と、を更に実行させ、前記データは、前記オブジェクト情報と前記パラメータ情報とを少なくとも含む。
(付記14):
(付記1)において、前記配信プログラムは、前記プロセッサに、視聴者による所定操作に応じて前記視聴端末から送信される操作情報を受信したときに、前記所定条件の成立を阻害する阻害作用を及ぼすステップと、前記視聴数に応じて前記阻害作用の大きさを変化させるステップとを実行させる。
(付記15):
(付記14)において、前記データは、配信者の動きを示すモーションデータを少なくとも含み、前記ゲームは、前記モーションデータに基づいて動作するプレイヤオブジェクトが他のオブジェクトと戦うゲームであり、前記及ぼすステップは、前記プレイヤオブジェクトが不利になるようにゲームパラメータを更新する。
(付記16):
本開示に示す一実施形態のある局面によれば、プロセッサおよびメモリを備え、所定条件を成立させることによりクリアとなるゲームのゲームプレイ映像を視聴端末(800)において表示可能とするためのデータを配信するコンピュータ(200)により実行される配信方法であって、前記配信方法は、前記コンピュータが、前記ゲームプレイ映像を表示している視聴端末の視聴数を特定するステップ(S22)と、当該視聴数に応じて、前記所定条件を成立させる難易度を調整するステップ(S24)とを備える。
(付記17):
本開示に示す一実施形態のある局面によれば、所定条件を成立させることによりクリアとなるゲームのゲームプレイ映像を視聴端末(800)において表示可能とするためのデータを配信するコンピュータ(200)であって、配信プログラムを記憶する記憶部(2200)と、前記配信プログラムを実行することにより、前記コンピュータの動作を制御する制御部(2100)とを備え、前記制御部は、前記ゲームプレイ映像を表示している視聴端末の視聴数を特定するステップ(S22)と、当該視聴数に応じて、前記所定条件を成立させる難易度を調整するステップ(S24)とを実行する。
(付記18):
本開示に示す一実施形態のある局面によれば、プロセッサ、メモリ、および表示部を備える視聴端末(800)により実行される視聴プログラムであって、前記視聴プログラムは、前記プロセッサに、ゲームをクリアさせるための所定条件を成立させる難易度を前記ゲームのゲームプレイ映像を表示する視聴端末の視聴数に応じて調整するコンピュータに対して、前記視聴数を特定可能とするための情報を送信するステップ(S02、S15)と、前記コンピュータから、前記難易度が調整された前記ゲームのゲームプレイ映像を前記視聴端末において表示可能とするためのデータを受信するステップ(S05)と、前記データに基づいて、前記難易度が調整された前記ゲームのゲームプレイ映像を表示するステップ(S06~S08)とを実行させる。
〔ソフトウェアによる実現例〕
制御部2100、6100、および8100の各制御ブロックは、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、制御部2100、6100、および8100の少なくとも1つ備えた情報処理装置は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。