【文献】
"『Splatoon(スプラトゥーン)2』に"プライベートマッチ観戦機能"が実装されることが明らかに[闘会議2017]",ファミ通.com,日本,株式会社Gzブレイン,2017年 2月11日,全文,全図(p.1-7),[2019年7月11日検索],URL,https://www.famitsu.com/news/201702/11126721.html
(58)【調査した分野】(Int.Cl.,DB名)
前記他の情報処理装置において、前記他のプレイヤによる操作に基づいて、当該プレイヤに対応するプレイヤキャラクタと、当該プレイヤキャラクタに対応する仮想カメラの位置および向きとが制御されるとともに、当該仮想カメラに基づくゲーム画像が生成され、
前記コンピュータに、前記第2カメラ制御ステップにおいて、
前記プレイデータに基づいて、前記指定されたプレイヤキャラクタが操作される前記他の情報処理装置において制御される仮想カメラと同じ位置および向きとなるように、前記仮想カメラを制御させる、請求項2に記載の情報処理プログラム。
前記プレイデータ取得ステップで取得されるプレイデータには、前記プレイヤキャラクタの位置と、前記プレイヤキャラクタに対応する前記仮想カメラの向きとが少なくとも含まれる、請求項1から8の何れかに記載の情報処理プログラム。
前記多人数ゲームは、前記プレイヤの指示に基づいて前記プレイヤキャラクタに対応する仮想カメラの向きに応じた方向に射撃を行うゲームである、請求項1から9の何れかに記載の情報処理プログラム。
前記プレイデータには、前記第1の情報処理装置のプレイヤによって操作される前記プレイヤキャラクタの位置と、前記第1の仮想カメラの向きとが少なくとも含まれる、請求項11から18の何れかに記載の情報処理システム。
前記多人数ゲームは、前記プレイヤの指示に基づいて前記第1の仮想カメラの向きに応じた方向に射撃を行うゲームである、請求項11から19の何れかに記載の情報処理システム。
【発明を実施するための形態】
【0031】
以下、本実施形態の一例に係る情報処理システムについて説明する。本実施形態における情報処理システム1の一例は、複数のゲーム装置(情報処理装置の一例)を含むゲームシステムである。
図1は、本実施形態のゲームシステムの概要を示す図である。
【0032】
図1に示されるように、複数のゲーム装置10(10a〜10f)はネットワークに接続されている。複数のゲーム装置10は、例えばインターネットに接続され、複数のプレイヤが参加するネットワークゲームを実行可能である。例えば、複数のゲーム装置10は、インターネット上のサーバと通信することで、対戦型のゲームを実行する。サーバは、1又は複数のサーバ装置により構成されてもよい。
【0033】
図2は、ゲーム装置10の構成の一例を示す図である。
図2に示されるように、ゲーム装置10は、本体部とコントローラとを含む。本体部は、プロセッサ11と、メモリ12と、記憶部13と、通信部14と、表示装置15とを含む。プロセッサ11は、メモリ12、記憶部13、通信部14、表示装置15に接続される。プロセッサ11は、メモリ12に一時的に記憶された情報処理プログラムや各種データを用いて、後述するフローチャートに示す情報処理を行う。記憶部13は、情報処理プログラムや各種データを記憶する非一時的な記憶媒体であり、例えば不揮発性メモリや光記憶媒体、ハードディスク等である。記憶部13は、本体部に着脱自在に接続可能なものであってもよいし、本体部の内部に固定されたものであってもよい。通信部14は、ネットワーク(例えば、インターネットやLAN)に接続して他の装置と通信を行う。通信部14は、例えば無線LANの規格にしたがった通信を行うものであってもよい。表示装置15は、例えば本体部と一体となった表示装置であり、後述するゲーム画像を表示する。表示装置15としては、液晶表示装置や有機EL表示装置等が用いられてもよい。また、表示装置15の画面上にタッチパネルが設けられてもよい。なお、ゲーム装置10は、表示装置15とは異なる他の表示装置(例えば、テレビ)と接続可能であり、ゲーム画像を、当該他の表示装置及び/又は表示装置15に出力可能であってもよい。
【0034】
コントローラは、複数の押下可能な操作ボタン16と、方向指示を行うことが可能なアナログスティック17と、コントローラの姿勢を検出するための慣性センサ18とを含む。アナログスティック17は、ユーザの左手で操作される左アナログスティックと、ユーザの右手で操作される右アナログスティックとを含む。慣性センサ18は、加速度センサと角速度センサとを含む。本体部のプロセッサ11は、コントローラの慣性センサ18からの検出データに基づいてコントローラの加速度および角速度を算出することにより、コントローラの実空間における姿勢を算出することができる。なお、コントローラの姿勢は、慣性センサに限らず、例えば実カメラによって撮像された画像に基づいて算出されてもよい。
【0035】
なお、ゲーム装置10の本体部とコントローラとは一体として構成されてもよいし、分離していてもよい。また、コントローラは本体部に着脱自在に接続されてもよい。本体部とコントローラとが分離している場合、本体部とコントローラとは無線または有線で接続されて通信を行ってもよい。
【0036】
また、ゲーム装置10は、本体部とコントローラと表示装置15とが一体となった携帯型のゲーム装置であってもよいし、これらのうちの少なくとも一部が分離した据置型のゲーム装置であってもよい。また、ゲーム装置10は、携帯型のゲーム装置としても機能するとともに、据置型のゲーム装置としても機能するものであってもよい。
【0037】
図1に戻り、本実施形態のゲームは、各プレイヤがAチームまたはBチームに所属し、AチームとBチームとが対戦する対戦型のゲームである。例えば、
図1に示されるように、ゲーム装置10aのプレイヤおよびゲーム装置10bのプレイヤはAチームに所属し、ゲーム装置10cのプレイヤおよびゲーム装置10dのプレイヤはBチームに所属する。また、ゲーム装置10eのユーザおよびゲーム装置10fのユーザは、AチームおよびBチームの何れにも所属せず、AチームおよびBチームで行われる対戦ゲームを観戦する。
【0038】
なお、以下では、AチームまたはBチームに所属してゲームをプレイするゲーム装置10のユーザを「プレイヤ」と呼び、AチームおよびBチームの何れにも所属せずにゲームの観戦のみを行うゲーム装置10のユーザを「観戦者」と呼ぶことにする。また、「プレイヤ」が有するゲーム装置10を「プレイヤ端末」といい、「観戦者」が有するゲーム装置10を「観戦者端末」という。
【0039】
本実施形態では、Aチームには4名のプレイヤ(4台のゲーム装置10)が所属し、Bチームにも4名のプレイヤ(4台のゲーム装置10)が所属することができる。また、観戦者は最大で2名までである。なお、各チームに所属することができるプレイヤの数は4名未満であってもよいし、4名以上であってもよい。また、観戦者は1名のみであってもよいし、3名以上であってもよい。
【0040】
以下では、ゲーム装置10aのプレイヤおよびゲーム装置10bのプレイヤが所属するAチームと、ゲーム装置10cのプレイヤおよびゲーム装置10dのプレイヤが所属するBチームとで対戦ゲームが行われ、この対戦ゲームを1人の観戦者が観戦する場合について説明する。
【0041】
図3は、本実施形態の対戦ゲームが行われる仮想空間の一例を示す図である。仮想空間は、互いに直交するx軸、y軸、およびz軸からなるxyz座標系(グローバル座標系)により定義される。x軸は仮想空間に固定の軸であり、仮想空間の横方向の軸である。y軸は、仮想空間に固定の軸であり、仮想空間の高さ方向の軸である。z軸は、仮想空間に固定の軸であり、仮想空間の縦方向(
図3の奥方向)の軸である。
【0042】
図3に示されるように、仮想空間には、地形を示す複数の地形オブジェクトGOと、各プレイヤの操作に応じて動作するプレイヤキャラクタP(Pa〜Pd)と、移動オブジェクトTOとが含まれる。
【0043】
プレイヤキャラクタPaは、ゲーム装置10aのプレイヤによって操作されるプレイヤキャラクタであり、プレイヤキャラクタPbは、ゲーム装置10bのプレイヤによって操作されるプレイヤキャラクタであり、プレイヤキャラクタPcは、ゲーム装置10cのプレイヤによって操作されるプレイヤキャラクタであり、プレイヤキャラクタPdは、ゲーム装置10dのプレイヤによって操作されるプレイヤキャラクタである。
【0044】
各地形オブジェクトGOは、xz平面に平行またはxz平面と所定の角度を有する面(平面又は曲面)である。地形オブジェクトGOは、仮想空間に固定のオブジェクトであり、仮想空間における高さが異なる。複数のプレイヤキャラクタPおよび移動オブジェクトTOは、地形オブジェクトGO上を移動可能である。このため、本実施形態のゲームでは、複数のプレイヤキャラクタPおよび移動オブジェクトTOは、仮想空間の高さ方向に広がった空間を移動可能である。
【0045】
初期的には、AチームのプレイヤキャラクタPaおよびPbは、Aチームの陣地に位置し、BチームのプレイヤキャラクタPcおよびPdは、Bチームの陣地に位置する。また、移動オブジェクトTOは、初期的にはAチームの陣地およびBチームの陣地の中間に位置する。
【0046】
各プレイヤキャラクタPは、対応するゲーム装置10のコントローラに対する操作に応じて、仮想空間内を移動したり、ジャンプしたり、液体(弾)を発射したりする。例えば、各プレイヤキャラクタPは、コントローラの左アナログスティックに対する操作に応じて、仮想空間を移動する。また、各プレイヤキャラクタPは、様々な装備を有しており、装備の一種として武器Wを有している。各プレイヤキャラクタPは、武器Wを用いて液体(弾)を発射することで、仮想空間の地形オブジェクトGOを塗りつぶす。あるチームのプレイヤキャラクタPが塗りつぶした領域では、相手チームのプレイヤキャラクタの動きが鈍くなる。また、各プレイヤキャラクタPは、武器Wを用いて液体(弾)を発射することで、相手チームのプレイヤキャラクタPに対して攻撃を行うことが可能である。
【0047】
移動オブジェクトTOは、仮想空間内を移動可能なオブジェクトである。プレイヤキャラクタPが移動オブジェクトTOの上に乗ると、移動オブジェクトTOは、仮想空間内を予め定められた経路にしたがって自動的に移動する。例えば、Aチームに所属するプレイヤキャラクタPaが移動オブジェクトTOの上に乗ると、移動オブジェクトTOは、Bチームの陣地に向かって移動する。本実施形態では、移動オブジェクトTOを相手チームの陣地に移動させたチームが勝利となる。このため、移動オブジェクトTOは、本実施形態のゲームの結果を左右する重要なオブジェクトである。
【0048】
図4は、仮想空間に配置される仮想カメラの一例を示す図である。
図4に示されるように、仮想空間には、各プレイヤキャラクタPに固定のプレイヤカメラCP(CPa〜CPd)が配置される。
【0049】
プレイヤカメラCPaは、プレイヤキャラクタPaに固定の仮想カメラであり、プレイヤキャラクタPaに追従して移動する。プレイヤカメラCPbは、プレイヤキャラクタPbに固定の仮想カメラであり、プレイヤキャラクタPbに追従して移動する。プレイヤカメラCPcは、プレイヤキャラクタPcに固定の仮想カメラであり、プレイヤキャラクタPcに追従して移動する。プレイヤカメラCPdは、プレイヤキャラクタPdに固定の仮想カメラであり、プレイヤキャラクタPdに追従して移動する。
【0050】
各プレイヤカメラCPは、初期的には各プレイヤキャラクタPの背後の所定位置に配置される。各プレイヤカメラCPの注視点は、各プレイヤキャラクタPの頭上の所定位置に設定される。なお、各プレイヤが例えばゲーム装置10のコントローラの右アナログスティックを操作することにより、各プレイヤカメラCPは各プレイヤキャラクタPの周りを回転可能である。
【0051】
各プレイヤは、各プレイヤキャラクタPに固定のプレイヤカメラCPから仮想空間を見た画像を見ながらゲームを行い、プレイヤカメラCPの向きに応じた方向に射撃を行う。例えば、ゲーム装置10aのプレイヤは、プレイヤカメラCPaから仮想空間を見た画像を見ながらプレイヤキャラクタPaを移動させたり、プレイヤカメラCPaの向きに応じた方向に液体(弾)を発射させたりする。他のゲーム装置10のプレイヤも同様に、各プレイヤカメラCPから仮想空間を見た画像を見ながら自身に対応するプレイヤキャラクタPを移動させたり、弾を発射させたりする。
【0052】
また、仮想空間には、オブジェクトカメラCOが配置される。オブジェクトカメラCOは、移動オブジェクトTOに追従する仮想カメラである。オブジェクトカメラCOは、移動オブジェクトTOの位置から所定距離離れた位置にあり、オブジェクトカメラCOの注視点は、移動オブジェクトTOの位置に設定される。また、詳細は後述するが、オブジェクトカメラCOは、観戦者端末のコントローラに対する操作に応じて、移動オブジェクトTOの周りに回転する。
【0053】
また、仮想空間には、鳥瞰カメラCBが配置される。鳥瞰カメラCBは、仮想空間を鳥瞰する(俯瞰する)仮想カメラである。鳥瞰カメラCBは、仮想空間全体を見渡す「全体モード」と、仮想空間の一部を拡大する「ズームモード」とのうちの何れかのモードで動作する。鳥瞰カメラCBが全体モードのときには、鳥瞰カメラCBの位置および姿勢は固定である。一方、鳥瞰カメラCBがズームモードのときには、鳥瞰カメラCBは、観戦者端末のコントローラに対する操作に応じて、仮想空間内を移動したり、回転したりする。
【0054】
鳥瞰カメラCBおよびオブジェクトカメラCOは、観戦者端末においてのみ定義される。観戦者端末が2台ある場合は、各観戦者端末に、鳥瞰カメラCBおよびオブジェクトカメラCOがそれぞれ定義される。
【0055】
観戦者は、鳥瞰カメラCB、各プレイヤカメラCP、オブジェクトカメラCOのうちの何れかを用いて、仮想空間において行われるゲームを観戦することができ、これら複数の仮想カメラを操作に応じて切り替えることができる。すなわち、観戦者は、観戦者用の仮想カメラについての第1のモード(ズームモードの鳥瞰カメラCB)と、第2のモード(各プレイヤカメラCP)と、第3のモード(オブジェクトカメラCO)と、第4のモード(全体モードの鳥瞰カメラCB)とを切り替えることができる。
【0056】
一方、各プレイヤ端末においては鳥瞰カメラCBおよびオブジェクトカメラCOは定義されない。このため、各プレイヤ端末の表示装置には、オブジェクトカメラCOまたは鳥瞰カメラCBから仮想空間を見た画像は表示されない。
【0057】
(カメラパラメータ)
本実施形態では、各仮想カメラの位置および姿勢(向き)は、カメラパラメータによって定められる。カメラパラメータは、以下の3種類のパラメータを含む。
・注視点F
・注視点Fから仮想カメラの位置に向かうベクトルV(以下、「アームベクトルV」という)
・仮想カメラの姿勢情報(後述するxyz座標系におけるピッチ角Gαおよびヨー角Gβ)
【0058】
なお、詳細は後述するが、仮想カメラの姿勢が変化されていないとき(後述するカメラ座標系におけるピッチ角αおよびヨー角βがゼロのとき)は、仮想カメラのカメラパラメータとしての注視点Fは、表示装置の画面の中心と一致する。一方、仮想カメラの姿勢が変化されているときは、仮想カメラのカメラパラメータとしての注視点Fは、表示装置の画面の中心と必ずしも一致しない。
【0059】
以下では、仮想カメラの姿勢が変化されていないときの仮想カメラの姿勢を「基準姿勢」と呼ぶ。また、仮想カメラのカメラパラメータとしての注視点を「注視点F」と表記し、実際の画面の中心を意味する注視点と区別して表記する。具体的には、鳥瞰カメラCBのカメラパラメータとしての注視点を「注視点FB」と表記し、オブジェクトカメラCOのカメラパラメータとしての注視点を「注視点FO」と表記し、プレイヤカメラCPのカメラパラメータとしての注視点を「注視点FP」と表記する。
【0060】
以下、ズームモードにおける鳥瞰カメラCBの移動および回転について説明する。
【0061】
(鳥瞰カメラの移動および回転)
図5は、ズームモードにおける鳥瞰カメラCBの移動を説明するための図である。
図5に示されるように、仮想空間には、鳥瞰カメラCBの移動を制御するための高さマップMが設定される。高さマップMは、鳥瞰カメラCBの仮想空間における高さを設定するためのマップであり、複数の制御面M1〜M5によって構成される。制御面M1〜M5は、仮想空間に予め設定された仮想的な面であり、例えば、平面である。なお、制御面M1〜M5は曲面であってもよい。なお、制御面M1〜M5は、ゲーム中にゲーム装置10の表示装置には表示されない。
【0062】
高さマップMは、地形オブジェクトGOと接触しないようにその形状および位置が設定される。例えば、制御面M1〜M5は、各地形オブジェクトGOと平行に配置され、各地形オブジェクトGOよりも仮想空間における上方(y軸正方向の位置)に設定される。鳥瞰カメラCBの注視点FBは、制御面M1〜M5上を移動する。具体的には、観戦者がゲーム装置10のコントローラの左アナログスティックを操作すると、その操作方向に応じて、鳥瞰カメラCBの注視点FBが制御面M1〜M5上を移動する。
【0063】
鳥瞰カメラCBは、注視点FBよりも仮想空間における上方の位置に配置される。具体的には、鳥瞰カメラCBは、注視点FBを通る直線であって、xyz座標系におけるxz平面と所定の角度を有する直線上に位置する。また、鳥瞰カメラCBは、注視点FBから所定の距離だけ離れた位置に配置される。具体的には、xyz座標系において、xz平面と所定の角度を有し、所定の長さを有するアームベクトルVBが定義される。そして、注視点FBの位置ベクトルにアームベクトルVBを加えた位置が、xyz座標系における鳥瞰カメラCBの位置として定義される。
【0064】
なお、本実施形態では、アームベクトルVBの長さは固定であるものとするが、アームベクトルVBの長さは、観戦者の操作に応じて可変であってもよい。すなわち、ズームモードにおける鳥瞰カメラCBは、ズームインまたはズームアウト可能であってもよい。
【0065】
図6は、
図5に示される矢印方向に注視点FBが移動したときの鳥瞰カメラCBの位置を示す図である。
図7は、
図6に示される矢印方向に注視点FBがさらに移動したときの鳥瞰カメラCBの位置を示す図である。なお、
図6および
図7では、制御面M4および制御面M5の表示が省略されているが、実際には仮想空間には制御面M4および制御面M5も設定されている。
【0066】
図6および
図7に示されるように、鳥瞰カメラCBの注視点FBが移動した場合、鳥瞰カメラCBの位置(視点ともいう)も移動する。鳥瞰カメラCBの注視点FBは、制御面上を移動し、鳥瞰カメラCBの位置は、制御面よりも仮想空間における上方に位置するため、鳥瞰カメラCBが移動する過程で、鳥瞰カメラCBが地形オブジェクトGOに接触することはない。
【0067】
また、プレイヤキャラクタPは、基本的に地形オブジェクトGO上を移動する。また、プレイヤキャラクタPはジャンプする場合があり、ジャンプによってプレイヤキャラクタPが地形オブジェクトGO上に位置しないことはあっても、鳥瞰カメラCBの位置までプレイヤキャラクタPがジャンプすることはない。また、移動オブジェクトTOは地形オブジェクトGO上を移動する。このため、鳥瞰カメラCBは、移動する過程でプレイヤキャラクタPや移動オブジェクトTOに接触することはない。
【0068】
次に、鳥瞰カメラCBの回転について説明する。
図8は、ズームモードにおける鳥瞰カメラCBの回転を説明するための図である。
【0069】
図8に示されるように、鳥瞰カメラCBは、観戦者によるゲーム装置10のコントローラの右アナログスティックに対する操作に応じて、制御面上の注視点FB周りに回転可能である。鳥瞰カメラCBの位置は、鳥瞰カメラCBの位置と注視点FBとを結ぶ線分が円錐面を描くように、変化する。例えば、仮想空間におけるアームベクトルVBを、注視点FBを通ってy軸に平行な直線の周りに回転させることにより、鳥瞰カメラCBが回転される。
【0070】
このように、本実施形態では、観戦者の操作に応じて鳥瞰カメラCBを仮想空間内で移動させることができる。具体的には、観戦者の移動操作に基づいて、仮想空間における仮想カメラの高さが当該移動操作に基づいて指定される(変化する)位置に応じて予め設定された高さとなるように、当該仮想カメラが移動する。より具体的には、鳥瞰カメラCBの高さは、複数の制御面からなる高さマップによって設定される。観戦者の移動操作に応じて鳥瞰カメラCBの注視点FBが制御面上を移動し、当該注視点FBから仮想空間における所定方向(y軸正方向の成分を有する方向)に所定距離だけ離れた位置に、鳥瞰カメラCBの位置(視点)が設定される。
【0071】
なお、本実施形態では、鳥瞰カメラCBの注視点FBを制御面上で移動させ、当該注視点FBから所定方向に所定距離だけ離れた位置に、鳥瞰カメラCBの視点を設定した。他の実施形態では、制御面が仮想空間に設定され、鳥瞰カメラCBの視点を当該制御面上で移動させてもよい。この場合において、制御面は、仮想空間において、地形オブジェクトGOよりも高い位置に設定される。例えば、制御面は、仮想空間内の任意のオブジェクトと接触しないように、地形オブジェクトGOおよび地形オブジェクトGO上にあるオブジェクト(プレイヤキャラクタPや移動オブジェクトTO等)よりも高い位置に設定される。例えば、制御面は、プレイヤキャラクタPがジャンプしても届かない位置に設定される。鳥瞰カメラCBの視点をこのような制御面上で移動させる場合、鳥瞰カメラCBの移動中に鳥瞰カメラCBが仮想空間内のオブジェクトと接触することを防止することができる。
【0072】
本実施形態では、観戦者(操作者)が鳥瞰カメラCBを移動させることができるため、ゲームを高い自由度で観戦することができる。観戦者の移動操作に基づいて、鳥瞰カメラCBの高さが当該移動操作に基づいて指定される位置(鳥瞰カメラの注視点でもよいし視点でもよい)に応じて予め定められるため、観戦者は、鳥瞰カメラCBの高さを調整する必要がない。このため、観戦者は、アナログスティックを所定方向に傾ける(又はスライドさせる)という比較的単純な操作を行うだけで、鳥瞰カメラCBを仮想空間における左右方向や奥行き方向に移動させるとともに、適切な高さに鳥瞰カメラCBを移動させることができ、適切な角度からゲームを観戦することができる。鳥瞰カメラCBの高さを設定するための高さマップMは地形オブジェクトGOよりも仮想空間の上方に配置されるため、鳥瞰カメラCBの移動中に、鳥瞰カメラCBが地形オブジェクトGOに接触したり、地形オブジェクトGOに近づき過ぎたりすることを防止することができる。
【0073】
また、鳥瞰カメラCBが地形オブジェクトGOに接触しないようにするために、例えば、鳥瞰カメラCBの移動中に鳥瞰カメラCBと地形オブジェクトGOとの接触を回避するための例外的な処理を行うことが考えられる。例えば、鳥瞰カメラCBが地形オブジェクトGOに接触する場合に鳥瞰カメラCBの移動経路を変更する処理を行うことが考えられる。このような接触を回避する処理を行うためには、鳥瞰カメラCBと地形オブジェクトGOとの接触判定を行う必要があり、処理が複雑になることがある。しかしながら、本実施形態では、予め高さマップが設定されているため、鳥瞰カメラCBの移動中にこのような複雑な処理を行う必要はない。
【0074】
(オブジェクトカメラの移動および回転)
次に、オブジェクトカメラCOの移動および回転について説明する。
図9は、オブジェクトカメラCOの移動を示す図である。上述のように、移動オブジェクトTOは、仮想空間を予め定められた経路に沿って自動的に移動する。具体的には、移動オブジェクトTO上にプレイヤキャラクタPが乗っている場合、移動オブジェクトTOは、当該プレイヤキャラクタPの相手チームの陣地に向かって予め定められた経路に沿って移動する。例えば、
図9に示す右側がBチームの陣地であり、
図9に示す左側がAチームの陣地である場合、BチームのプレイヤキャラクタPdが移動オブジェクトTO上に乗っている間、移動オブジェクトTOは、
図9に示す左側に向かって移動する。また、AチームのプレイヤキャラクタPbが移動オブジェクトTO上に乗っている場合は、移動オブジェクトTOは、
図9に示す右側(Bチームの陣地側)に向かって移動する。
【0075】
移動オブジェクトTOは、仮想空間を予め定められた経路に沿って自動的に移動するため、プレイヤの操作によってその移動経路を変更したり、移動速度を変更したりすることはできない。なお、プレイヤの操作によって移動オブジェクトTOの移動経路を変更したり、移動速度を変更したりすることが可能であってもよい。
【0076】
この移動オブジェクトTOに追従してオブジェクトカメラCOも移動する。具体的には、オブジェクトカメラCOの注視点FOは移動オブジェクトTOの位置に固定される。オブジェクトカメラCOの位置(視点)は、注視点FOから仮想空間における所定方向(y軸正方向の成分を有する方向)に所定距離だけ離れた位置に設定される。具体的には、オブジェクトカメラCOの位置は、注視点FOの位置ベクトルにアームベクトルVOを加えることにより、算出される。ここで、アームベクトルVOは、仮想空間のxz平面と所定の角度を有し、所定の長さを有するベクトルである。
【0077】
なお、本実施形態では、アームベクトルVOの長さは固定であるものとするが、アームベクトルVOの長さは、観戦者の操作に応じて可変であってもよい。
【0078】
図10は、オブジェクトカメラCOの回転を示す図である。
図10に示されるように、オブジェクトカメラCOは観戦者の操作に応じて回転する。具体的には、観戦者によってゲーム装置10のコントローラの右アナログスティックに対する操作が行われると、オブジェクトカメラCOは、注視点FOを通り仮想空間のy軸に平行な直線周りに回転する。より具体的には、オブジェクトカメラCOのアームベクトルVOが、注視点FOを通りy軸と平行な直線周りに回転することにより、オブジェクトカメラCOが移動オブジェクトTOの周りに回転する。
【0079】
このように、観戦者は、移動オブジェクトTOに追従するオブジェクトカメラCOから仮想空間を見た画像を見ることができ、当該オブジェクトカメラCOを移動オブジェクトTOの周りに回転させることができる。このため、観戦者は、オブジェクトカメラCOを用いて、本実施形態のゲームにおいて重要な移動オブジェクトTOの周囲を常に見ることができる。
【0080】
(鳥瞰カメラCBおよびオブジェクトカメラCOの姿勢の変化)
ここで、観戦者は、ゲーム装置10のコントローラを操作することにより、鳥瞰カメラCBおよびオブジェクトカメラCOの姿勢(向き)を変化させることができる。例えば、観戦者は、観戦者端末のコントローラの実空間における姿勢を変化させることで、鳥瞰カメラCBの姿勢を変化させることができる。同様に、観戦者は、観戦者端末のコントローラの姿勢を変化させることで、オブジェクトカメラCOの姿勢を変化させることができる。
【0081】
図11は、鳥瞰カメラCBの姿勢が変化されていない場合における鳥瞰カメラCBのカメラ座標系を示す図である。
図11に示されるように、鳥瞰カメラCBに固定のカメラ座標系(XcYcZc座標系)のZc軸は、鳥瞰カメラCBの撮像方向(視線方向ともいう)に平行な軸である。鳥瞰カメラCBのカメラ座標系のXc軸は、Zc軸に垂直な軸であって、鳥瞰カメラCBの右方向(
図11の紙面奥方向)に平行な軸である。また、鳥瞰カメラCBのカメラ座標系のYc軸は、Zc軸およびXc軸に垂直な軸であって、鳥瞰カメラCBの上方向に平行な軸である。鳥瞰カメラCBの姿勢が変化されていない場合(すなわち、基準姿勢の場合)、鳥瞰カメラCBのZc軸上に、注視点FBが存在することになる。
【0082】
また、図示は省略するが、オブジェクトカメラCOについてもオブジェクトカメラCOに固定のカメラ座標系が設定される。例えば、オブジェクトカメラCOの撮像方向にZc軸が設定され、オブジェクトカメラCOの右方向にXc軸が設定され、オブジェクトカメラCOの上方向にYc軸が設定されるものとする。オブジェクトカメラCOの姿勢が変化されていない場合(すなわち、基準姿勢の場合)、オブジェクトカメラCOのカメラ座標系のZc軸上に、注視点FOが存在することになる。
【0083】
図12Aは、鳥瞰カメラCBまたはオブジェクトカメラCOの基準姿勢からの変化を示す図であり、ピッチ方向の回転を示す図である。
図12Bは、鳥瞰カメラCBまたはオブジェクトカメラCOの基準姿勢からの変化を示す図であり、ヨー方向の回転を示す図である。
図12Aは、鳥瞰カメラCBまたはオブジェクトカメラCOをXc軸負方向の位置から見た図である。
図12Bは、鳥瞰カメラCBまたはオブジェクトカメラCOをYc軸正方向の位置から見た図である。
【0084】
図12Aに示されるように、鳥瞰カメラCBまたはオブジェクトカメラCOは、基準姿勢からピッチ方向(Xc軸周り)に所定の角度だけ回転可能である。
図12AのXc軸、Yc軸、Zc軸は、それぞれ基準姿勢におけるカメラ座標系の軸である。Zc’軸は、鳥瞰カメラCBまたはオブジェクトカメラCOをピッチ方向に回転させた後のZc軸である。また、Yc’軸は、鳥瞰カメラCBまたはオブジェクトカメラCOをピッチ方向に回転させた後のYc軸である。
【0085】
図12Aに示されるように、例えば、観戦者がゲーム装置10のコントローラを上方向に傾けると(コントローラの背面が上を向くように傾けると)、鳥瞰カメラCBまたはオブジェクトカメラCOはXc軸周りに回転し、Zc軸が上方向を向く。また、例えば、観戦者がゲーム装置10のコントローラを下方向に傾けると(コントローラの背面が下を向くように傾けると)、鳥瞰カメラCBまたはオブジェクトカメラCOはXc軸周りに回転し、Zc軸が下方向を向く。このXc軸周りの回転角を「ピッチ角α」という。
【0086】
また、
図12Bに示されるように、鳥瞰カメラCBまたはオブジェクトカメラCOは、基準姿勢からヨー方向(Yc軸周り)に所定の角度だけ回転可能である。
図12BのXc軸、Yc軸、Zc軸は、それぞれ基準姿勢におけるカメラ座標系の軸である。Zc’軸は、鳥瞰カメラCBまたはオブジェクトカメラCOをヨー方向に回転させた後のZc軸である。また、Xc’軸は、鳥瞰カメラCBまたはオブジェクトカメラCOをヨー方向に回転させた後のXc軸である。
【0087】
図12Bに示されるように、例えば、観戦者がゲーム装置10のコントローラを右方向に向けると(コントローラの背面を右側に向けると)、鳥瞰カメラCBまたはオブジェクトカメラCOはYc軸周りに回転し、Zc軸が右方向を向く。また、例えば、観戦者がゲーム装置10のコントローラを左方向に向けると(コントローラの背面を左側に向けると)、鳥瞰カメラCBまたはオブジェクトカメラCOはYc軸周りに回転し、Zc軸が左方向を向く。このYc軸周りの回転角を「ヨー角β」という。
【0088】
図12Aおよび
図12Bに示すピッチ角αおよびヨー角βは、カメラ座標系を基準とした姿勢を示す情報である。上述したカメラパラメータの一種である「仮想カメラの姿勢情報」は、xyz座標系(グローバル座標系)を基準とした姿勢を示す情報である。
【0089】
以下では、xyz座標系を基準としたピッチ角を「ピッチ角Gα」と表記し、xyz座標系を基準としたヨー角を「ヨー角Gβ」と表記するものとする。例えば、xyz座標系におけるピッチ角Gαは、仮想カメラのZc軸と仮想空間のxz平面とがなす角度であってもよい。また、例えば、xyz座標系におけるヨー角Gβは、仮想カメラのZc軸と仮想空間のyz平面とがなす角度であってもよい。仮想カメラのxyz座標系におけるピッチ角Gαおよびヨー角Gβは、仮想カメラのアームベクトルVと、仮想カメラのカメラ座標系におけるピッチ角αおよびヨー角βとに基づいて算出可能である。
【0090】
このように、観戦者は、ゲーム装置10のコントローラを上下方向に傾けたり、左右方向に向けたりすることにより、鳥瞰カメラCBまたはオブジェクトカメラCOの姿勢を変化させることができる。
【0091】
なお、
図5〜
図7で示した鳥瞰カメラCBの注視点FBは、基準姿勢における注視点である。上述した鳥瞰カメラCBの移動は、この基準姿勢における注視点FBを移動させることによって行われる。鳥瞰カメラCBをカメラ座標系におけるピッチ方向に回転させたりヨー方向に回転させたりしても、
図5〜
図7で示した鳥瞰カメラCBの移動に用いられる注視点FB(カメラパラメータとしての注視点FB)の制御面上の位置は変化しない。
【0092】
鳥瞰カメラCBのxyz座標系における位置および姿勢は、次のようにして決定される。まず、
図5〜
図7で説明したように、観戦者によるコントローラの左アナログスティックを用いた移動操作が行われると、基準姿勢における注視点FBが制御面上を移動する。次に、
図8に示されるように、観戦者によるコントローラの右アナログスティックを用いた回転操作に応じて、アームベクトルVBが仮想空間において回転される。これにより、移動後の注視点FBにアームベクトルVBを加えた位置が、鳥瞰カメラCBの位置(視点)として決定される。そして、コントローラの姿勢に応じて鳥瞰カメラCBのカメラ座標系におけるピッチ角αおよびヨー角βが算出され、鳥瞰カメラCBのxyz座標系における姿勢(ピッチ角Gαおよびヨー角Gβ)が算出される。
【0093】
オブジェクトカメラCOのxyz座標系における位置および姿勢も同様である。すなわち、
図9で説明したように、移動オブジェクトTOの移動に応じてオブジェクトカメラCOの基準姿勢における注視点FOが移動する。次に、
図10で説明したように、観戦者によるコントローラの右アナログスティックを用いた回転操作に応じて、アームベクトルVOが仮想空間において回転される。これにより、移動後の注視点FO(移動オブジェクトの位置)にアームベクトルVOを加えた位置が、オブジェクトカメラCOの位置(視点)として決定される。そして、コントローラの姿勢に応じてオブジェクトカメラCOのカメラ座標系におけるピッチ角αおよびヨー角βが算出され、オブジェクトカメラCOのxyz座標系における姿勢(ピッチ角Gαおよびヨー角Gβ)が算出される。
【0094】
(仮想カメラの切り替え)
次に、上述した3種類の仮想カメラ(プレイヤカメラCP、鳥瞰カメラCBおよびオブジェクトカメラCO)の切り替えについて説明する。観戦者は、ゲーム装置10のコントローラの操作ボタンを用いて、仮想カメラを切り替えることができる。
図13は、鳥瞰カメラCBからプレイヤカメラCPへの切り替えを示す図である。
【0095】
図13に示されるように、例えば、観戦者は、鳥瞰カメラCBを用いてゲームを観戦しているときに、コントローラの操作ボタンに対する操作に応じて、観戦に用いる仮想カメラを、鳥瞰カメラCBから例えばプレイヤカメラCPcに切り替えることができる。仮想カメラは、切替前の位置から切替後の位置まで所定時間かけて自動的に移動し、観戦者は、仮想カメラの切替中の画像を見ることができる。なお、仮想カメラが切り替わる所定時間は、固定の時間であってもよいし、固定ではない時間(例えば、切替前の仮想カメラと切替後の仮想カメラとの距離に応じて異なる時間)であってもよい。
【0096】
例えば、鳥瞰カメラCB、オブジェクトカメラCO、プレイヤカメラCPa、プレイヤカメラCPb、プレイヤカメラCPc、プレイヤカメラCPdのそれぞれに対して切り替え操作が割り当てられている。コントローラに対して行われた切り替え操作に応じて、当該切り替え操作に対応する仮想カメラに切り替わる。
【0097】
具体的には、観戦者によって仮想カメラの切り替え操作が行われると、仮想カメラのカメラパラメータは、現在の仮想カメラ(例えば鳥瞰カメラCB)のカメラパラメータから、切替後の仮想カメラ(例えばプレイヤカメラCPc)のカメラパラメータに所定時間かけて変化する。より具体的には、切替中の各カメラパラメータ(注視点F、アームベクトルV、ピッチ角Gα、ヨー角Gβ)は、切替前のカメラパラメータと切替後のカメラパラメータとをエルミート補間法により補間することで算出される。
【0098】
例えば、
図13に示されるように、観戦者によって仮想カメラの切り替え操作が行われてから1フレーム時間(例えば、1/60秒)が経過した時点t1における仮想カメラの注視点Fは、切替前の鳥瞰カメラCBの注視点FBと切替後のプレイヤカメラCPcの注視点FOとをエルミート補間法により補間することで算出される。同様に、時刻t1における仮想カメラのアームベクトルVは、切替前の鳥瞰カメラCBのアームベクトルVBと切替後のプレイヤカメラCPcのアームベクトルVOとをエルミート補間法により補間することで算出される。また、時刻t1における仮想カメラのピッチ角Gαは、切替前の鳥瞰カメラCBのピッチ角Gαと切替後のプレイヤカメラCPcのピッチ角Gαとをエルミート補間法により補間することで算出される。また、時刻t1における仮想カメラのヨー角Gβは、切替前の鳥瞰カメラCBのヨー角Gβと切替後のプレイヤカメラCPcのヨー角Gβとをエルミート補間法により補間することで算出される。
【0099】
このように切替中の仮想カメラの各カメラパラメータがエルミート補間法により算出されるため、各カメラパラメータは、切替前の値から切替後の値に徐々に変化する。例えば、各カメラパラメータは、切り替え操作が行われてからの第1期間では比較的ゆっくりと速度を増しながら変化し、その後の第2期間では比較的高速に変化し、さらに切替後の値に近づくにつれて速度を減少させながら最終的に切替後の値となる。
【0100】
例えば、
図13に示されるように、切り替え操作が行われた時点から1フレーム時間が経過した時刻t1では、仮想カメラは、切替前の位置から距離d1の位置に存在する。時刻t1からさらに1フレーム時間が経過した時刻t2では、仮想カメラは、切替前の仮想カメラの位置から距離d2の位置に存在する。このとき、距離d2は、距離d1の2倍よりも大きい。さらに時刻t2から1フレーム時間が経過した時刻t3では、仮想カメラはさらに切替後の仮想カメラの位置に近づく。時刻t2における仮想カメラと時刻t3における仮想カメラとの間の距離は、時刻t1における仮想カメラと時刻t2における仮想カメラとの間の距離よりも大きい。
【0101】
また、仮想カメラのxyz座標系における姿勢も切替前の姿勢から切替後の姿勢に徐々に変化する。例えば、時刻t1における仮想カメラのピッチ角Gαは、切替前の仮想カメラのピッチ角Gαと切替後の仮想カメラのピッチ角Gαとの間の値である。時刻t1におけるピッチ角Gαの変化量よりも時刻t2におけるピッチ角Gαの変化量の方が大きい。
【0102】
このように、鳥瞰カメラCBからプレイヤカメラCPに切り替えられる場合、複数のフレームにわたって切り替えられ、フレーム毎に、仮想カメラの位置及び姿勢が算出される。このため、切り替え途中の仮想カメラから見た画像が、観戦者端末の表示装置に表示される。
【0103】
例えば、仮想カメラの切り替え操作に応じて、一瞬で鳥瞰カメラCBからプレイヤカメラCPに切り替わる場合(すなわち、あるフレームにおいては鳥瞰カメラCBから見た画像が表示され、次のフレームにおいてはプレイヤカメラCPから見た画像が表示される場合)、観戦者は、仮想空間におけるどの位置からどの位置に移動したのかを認識し難い場合がある。しかしながら、本実施形態では、複数のフレーム時間をかけて仮想カメラが切り替えられ、切り替え途中の画像が表示される。このため、観戦者は、仮想空間におけるどの位置からどの位置に仮想カメラが移動するのかを容易に認識することができる。
【0104】
また、本実施形態では、切替中の仮想カメラの各カメラパラメータが、エルミート補間により算出される。このため、各カメラパラメータは、最初はゆっくりと加速しながら切替後の値に近づき、最後はゆっくりと減速しながら切替後の値に近づくように変化する。これにより、いわゆる映像酔い(3D酔い)を防止することができる。
【0105】
なお、仮想カメラの切替中における各カメラパラメータは、エルミート補間法に限らず他の補間方法(例えば、線形補間、スプライン補間、ラグランジュ補間等)により算出されてもよい。
【0106】
(画面に表示される画像の一例)
図14は、観戦者端末の表示装置の画面に表示される画像であって、プレイヤキャラクタPcに対応するプレイヤカメラCPcに基づいて生成されるゲーム画像の一例を示す図である。
図14に示されるように、プレイヤカメラCPcは、プレイヤキャラクタPcの背後における所定位置に配置される。プレイヤカメラCPcの注視点FPは、プレイヤキャラクタPcに固定され、例えば、プレイヤキャラクタPcの頭上に設定される。なお、プレイヤカメラCPcは、ゲーム装置10cのプレイヤの操作に応じて、プレイヤキャラクタPcの周りに回転可能である。また、プレイヤカメラCPcの姿勢は、ゲーム装置10cのコントローラの姿勢に応じて変化可能である。
【0107】
図14に示されるように、例えば画面の上部領域には、仮想カメラの切り替え操作のための切り替え操作画像20が表示される。切り替え操作画像20は、各プレイヤカメラCPへの切り替え操作を示す画像である。例えば、プレイヤキャラクタPaに対応するプレイヤカメラCPaへの切り替えはAボタンの操作により行われることを意味し、プレイヤキャラクタPaに対応するプレイヤカメラCPbへの切り替えはBボタンの操作により行われることを意味する。
図14に示す画像は、ゲーム装置10cのプレイヤが見る画像(ゲーム装置10cの表示装置の画面に表示される画像)と基本的に同じ画像である。すなわち、プレイヤ端末にはプレイヤカメラCPに基づくゲーム画像が表示され、このプレイヤ端末に対応するプレイヤカメラCPと同じ位置および姿勢(向き)のプレイヤカメラに基づくゲーム画像が、観戦者端末に表示される。しかしながら、切り替え操作画像20は、観戦者端末においてのみ表示され、プレイヤ端末には表示されない。
【0108】
図15は、観戦者端末の表示装置の画面に表示される画像であって、全体モードにおける鳥瞰カメラCBに基づいて生成されるゲーム画像の一例を示す図である。
図15に示されるように、鳥瞰カメラCBが全体モードのときには、観戦者端末の表示装置には仮想空間をほぼ真上から見た画像が表示され、仮想空間の全体が表示される。画面には、プレイヤキャラクタPa〜Pd、移動オブジェクトTO、複数の地形オブジェクトGOが表示される。
【0109】
図16は、観戦者端末の表示装置の画面に表示される画像であって、ズームモードにおける鳥瞰カメラCBに基づいて生成されるゲーム画像の一例を示す図である。
図17は、
図16の状態から鳥瞰カメラCBをプレイヤキャラクタPbの位置まで移動させたときのゲーム画像の一例を示す図である。
図18は、
図16の状態から鳥瞰カメラCBを180度回転させたときのゲーム画像の一例を示す図である。
【0110】
図16に示されるように、観戦者は、鳥瞰カメラCBがズームモードのときには、仮想空間における一部の領域を拡大した画像を見ることができる。上述のように、観戦者は、ズームモードにおける鳥瞰カメラCBを移動させることができ、仮想空間における所望の領域を拡大してゲームを観戦することができる。例えば、観戦者は、プレイヤキャラクタPaの周囲に鳥瞰カメラCBを移動させ、プレイヤキャラクタPaの周囲を見ることができる。なお、
図16では、鳥瞰カメラCBは基準姿勢であり、鳥瞰カメラCBの注視点FBは、画面の中央に位置する。
【0111】
この
図16に示す画像が表示されているときに、観戦者が、ゲーム装置10のコントローラの左アナログスティックを操作すると、その操作に応じて鳥瞰カメラCBが移動し、鳥瞰カメラCBの高さ方向の位置も変化する。鳥瞰カメラCBは、左アナログスティックの操作方向に応じた方向に、所定の速度で移動する。観戦者端末の画面には、鳥瞰カメラCBの移動中の画像が表示される。そして、
図17に示されるような画像が観戦者端末の表示装置に表示される。
図17に示す画像が表示されるときの鳥瞰カメラCBの高さは、
図16に示す画像が表示されるときの鳥瞰カメラCBの高さよりも低い。
【0112】
また、
図16に示す画像が表示されているときに、観戦者が、ゲーム装置10のコントローラの右アナログスティックを操作すると、その操作に応じて鳥瞰カメラCBが回転する。鳥瞰カメラCBは、右アナログスティックの操作方向に応じた方向に所定の速度で回転する。観戦者端末の画面には、鳥瞰カメラCBの回転中の画像が表示される。そして、
図18に示されるような画像が観戦者端末の表示装置に表示される。
【0113】
図19は、
図16の状態からコントローラの姿勢を変化させたときのゲーム画像の一例を示す図である。
【0114】
図19に示されるように、例えば、観戦者がゲーム装置10のコントローラを右方向に向けると、鳥瞰カメラCBはヨー方向に回転し、
図16よりも仮想空間の右側の画像が表示される。ここで、
図19に示されるように、鳥瞰カメラCBの姿勢を変化させても、鳥瞰カメラCBの注視点FB(カメラパラメータとしての注視点FB)の位置は変化しない。すなわち、実際の画像の中心は鳥瞰カメラCBの姿勢を変化させることにより移動するものの、鳥瞰カメラCBのカメラパラメータとしての注視点FBは、仮想空間において移動しない。
【0115】
図20は、観戦者端末の表示装置の画面に表示される画像であって、オブジェクトカメラCOに基づいて生成されるゲーム画像の一例を示す図である。
図21は、
図20の状態からオブジェクトカメラCOを180度回転させたときの画像の一例を示す図である。
【0116】
図20に示されるように、観戦者は、オブジェクトカメラCOを用いて、仮想空間における移動オブジェクトTOの周辺を見ることができる。なお、
図20では、オブジェクトカメラCOは基準姿勢であり、オブジェクトカメラCOの注視点FOは、画面の中心に位置する。この状態で観戦者がゲーム装置10のコントローラの姿勢を変化させた場合、オブジェクトカメラCOはピッチ方向またはヨー方向に回転し、
図19と同様に画面の中心が上下方向または左右方向に移動する。この場合、オブジェクトカメラCOの注視点FOは画面の中心と一致しなくなる。
【0117】
この
図20に示す画像が表示されているときに、観戦者が、ゲーム装置10のコントローラの右アナログスティックを操作すると、その操作に応じてオブジェクトカメラCOが回転する。オブジェクトカメラCOは、右アナログスティックの操作方向に応じた方向に、所定の速度で回転する。観戦者端末の画面には、オブジェクトカメラCOの回転中の画像が表示される。そして、
図21に示されるような画像が観戦者端末の表示装置に表示される。
【0118】
(各ゲーム装置において行われる処理の詳細)
次に、各ゲーム装置において行われる処理について説明する。まず、観戦者端末に記憶されるデータについて説明した後、観戦者端末において行われる情報処理について説明する。
【0119】
(観戦者端末に記憶されるデータ)
図22は、観戦者のゲーム装置10のメモリ12に記憶されるデータの一例を示す図である。
【0120】
図22に示されるように、ゲームプログラムを実行中、観戦者端末のメモリには、受信データと、操作データと、使用中カメラ情報と、プレイヤカメラパラメータと、鳥瞰カメラパラメータと、オブジェクトカメラパラメータとが記憶される。なお、観戦者端末のメモリには、
図22に示す他にも様々なデータやプログラムが記憶される。
【0121】
受信データは、ネットワークを介して受信したデータであり、他のゲーム装置10において行われた操作に応じて生成されたプレイデータである。具体的には、受信データは、「プレイヤキャラクタ情報」と、「プレイヤカメラ情報」と、「移動オブジェクト情報」と、「イベント情報」とを含む。「プレイヤキャラクタ情報」は、各プレイヤキャラクタPに関する情報であり、各プレイヤキャラクタPの仮想空間における位置、姿勢、移動速度、ジャンプ速度等を含む。また、「プレイヤカメラ情報」は、各プレイヤキャラクタPに対応するプレイヤカメラCPのカメラパラメータに関する情報であり、xyz座標系におけるピッチ角Gαおよびヨー角Gβと、xyz座標系におけるアームベクトルVPとを含む。「移動オブジェクト情報」は、移動オブジェクトTOの位置、移動方向、移動速度等を含む。「イベント情報」は、ゲームにおいて発生したイベント(例えば、各プレイヤキャラクタPが弾を発射したこと、発射した弾によって地形オブジェクトGOが塗られたこと、発射した弾がプレイヤキャラクタPに当たったことなど)に関する情報である。
【0122】
「操作データ」は、観戦者端末のコントローラに対する操作に応じたデータであり、操作ボタン16の操作情報、アナログスティック17の操作情報、慣性センサ18の検出情報を含む。「使用中カメラ情報」は、現在、観戦者が使用(指定)している仮想カメラを示す情報であり、プレイヤカメラCPa〜CPd、鳥瞰カメラCB、オブジェクトカメラCOの何れかを示す情報である。また、使用中カメラ情報は、仮想カメラの切り替え中か否かを示す情報と、仮想カメラの切り替え中におけるカメラパラメータとを含む。
【0123】
プレイヤカメラパラメータは、受信データから算出される各プレイヤカメラCPのカメラパラメータである。プレイヤカメラパラメータは、プレイヤカメラCP毎に、注視点FPと、アームベクトルVPと、姿勢情報とを含む。姿勢情報は、プレイヤカメラCPのxyz座標系におけるピッチ角Gαおよびヨー角Gβである。
【0124】
鳥瞰カメラパラメータは、注視点FBと、アームベクトルVBと、姿勢情報(xyz座標系におけるピッチ角Gαおよびヨー角Gβ)とを含む。
【0125】
また、オブジェクトカメラパラメータは、注視点FOと、アームベクトルVOと、姿勢情報(xyz座標系におけるピッチ角Gαおよびヨー角Gβ)とを含む。
【0126】
(観戦者端末において行われる処理の詳細)
次に、観戦者のゲーム装置10において行われる処理の詳細について説明する。
図23は、観戦者端末において行われる情報処理の詳細を示すフローチャートである。
図23に示す処理は、ゲーム装置10のプロセッサ11が所定のゲームプログラム(情報処理プログラム)を実行することにより行われる。ゲーム装置10のプロセッサ11は、
図23に示す処理を、例えば1/60秒(1フレーム時間という)間隔で繰り返し実行する。
【0127】
図23に示されるように、観戦者端末のプロセッサ11(以下、フローチャートにおいて単に「観戦者端末」と表記する)は、まず、通信部14がネットワークを介して受信した受信データを取得する(ステップS10)。通信部14によって受信データが受信されると、当該受信データはメモリに一時的に記憶される。観戦者端末は、ステップS10において当該受信データを取得する。次に、観戦者端末は、観戦者端末のコントローラからの操作データを取得する(ステップS11)。
【0128】
次に、観戦者端末は、ステップS10で取得した受信データとステップS11で取得した操作データとを用いて、ゲーム処理を実行する(ステップS12)。以下、ステップS12のゲーム処理の詳細について
図24を参照して説明する。
【0129】
(観戦者端末におけるゲーム処理)
図24は、
図23のステップS12のゲーム処理の詳細を示すフローチャートである。
【0130】
図24に示されるように、観戦者端末は、キャラクタ移動処理を行う(ステップS21)。具体的には、観戦者端末は、受信データに基づいて、各プレイヤキャラクタPの仮想空間における位置を更新する。上述のように、受信データには、各プレイヤキャラクタPの仮想空間における位置や向き、移動速度、ジャンプ速度等が含まれる。観戦者端末は、受信データに含まれる各プレイヤキャラクタPの位置に基づいて、各プレイヤキャラクタPを仮想空間内で移動させる。また、観戦者端末は、キャラクタ移動処理において、受信データに基づいて、各プレイヤキャラクタPの向きを変更したり、各プレイヤキャラクタPをジャンプさせたりする。
【0131】
次に、観戦者端末は、弾発射処理を行う(ステップS22)。弾発射処理では、観戦者端末は、受信データに基づいて、各プレイヤキャラクタPが弾(液体)を発射したか否かを判定し、各プレイヤキャラクタPが弾を発射した場合には、弾を仮想空間に発射させる。受信データのイベント情報には、弾の発射位置および発射方向が含まれる。観戦者端末は、受信データに含まれる弾の発射位置および発射方向に基づいて、弾を仮想空間において移動させる。
【0132】
次に、観戦者端末は、オブジェクト移動処理を行う(ステップS23)。受信データには、移動オブジェクトTOの位置、移動速度、移動方向等の情報が含まれる。オブジェクト移動処理では、観戦者端末は、受信データに含まれる移動オブジェクトTOの位置、移動速度、移動方向に基づいて、移動オブジェクトTOを仮想空間内で移動させる。
【0133】
次に、観戦者端末は、カメラパラメータ更新処理を行い(ステップS24)、
図24に示す処理を終了する。以下、ステップS24のカメラパラメータ更新処理の詳細について
図25を参照して説明する。
【0134】
(観戦者端末におけるカメラパラメータ更新処理)
図25は、
図24のステップS24のカメラパラメータ更新処理の詳細を示すフローチャートである。
【0135】
図25に示されるように、観戦者端末は、メモリ12に記憶された使用カメラ情報に基づいて、現在使用している仮想カメラが鳥瞰カメラCBか否かを判定する(ステップS31)。現在鳥瞰カメラCBを使用している場合(ステップS31:YES)、次に、ステップS32〜S35、S40、S41の処理が行われる。なお、以下に示すステップS32〜S35、S40、S41の処理は、鳥瞰カメラCBがズームモードの場合にのみ行われる。鳥瞰カメラCBが全体モードの場合には、鳥瞰カメラCBが固定の位置および姿勢に設定される。鳥瞰カメラCBのズームモードと全体モードとの切り替えは、観戦者端末のコントローラの所定の操作ボタンを操作することによって行われる。
【0136】
現在鳥瞰カメラCBを使用している場合(ステップS31:YES)、観戦者端末は、操作データに基づいて、鳥瞰カメラCBの移動操作が行われたか否かを判定する(ステップS32)。具体的には、観戦者端末は、コントローラの左アナログスティックが操作されたか否かを判定する。
【0137】
鳥瞰カメラCBの移動操作が行われた場合(ステップS32:YES)、観戦者端末は、鳥瞰カメラCBの移動処理を行う(ステップS33)。ここでは、観戦者端末は、上述したように、鳥瞰カメラCBの注視点FBを制御面M1〜M5上で移動させる。具体的には、観戦者端末は、コントローラの左アナログスティックの操作方向および操作量に基づいて、仮想空間における注視点FBの移動方向および移動量を算出する。注視点FBの移動方向は、制御面に平行な方向である。そして、観戦者端末は、メモリに記憶された鳥瞰カメラパラメータの注視点FBを、算出した移動方向および移動量を用いて更新する。
【0138】
ステップS33の処理を行った場合、又は、ステップS32でNOと判定した場合、観戦者端末は、操作データに基づいて、鳥瞰カメラCBの回転操作が行われたか否かを判定する(ステップS34)。具体的には、観戦者端末は、コントローラの右アナログスティックが操作されたか否かを判定する。
【0139】
鳥瞰カメラCBの回転操作が行われた場合(ステップS34:YES)、観戦者端末は、鳥瞰カメラCBの回転処理を行う(ステップS35)。具体的には、観戦者端末は、コントローラの右アナログスティックの操作方向および操作量に基づいて、仮想空間における鳥瞰カメラCBの回転方向および回転量を算出する。そして、観戦者端末は、メモリに記憶された鳥瞰カメラパラメータのアームベクトルVBを、算出した回転方向および回転量を用いて更新する。これにより、アームベクトルVBは、y軸に平行な直線周りに回転する(
図8)。
【0140】
一方、現在鳥瞰カメラCBを使用していない場合(ステップS31:NO)、観戦者端末は、使用カメラ情報に基づいて、現在オブジェクトカメラCOを使用しているか否かを判定する(ステップS36)。
【0141】
現在オブジェクトカメラCOを使用している場合(ステップS36:YES)、観戦者端末は、オブジェクトカメラCOの移動処理を行う(ステップS37)。ここでは、観戦者端末は、ステップS23で算出した移動オブジェクトTOの位置にオブジェクトカメラCOの位置を設定し、オブジェクトカメラパラメータを更新する。
【0142】
ステップS37の処理を行った場合、観戦者端末は、操作データに基づいて、オブジェクトカメラCOの回転操作が行われたか否かを判定する(ステップS38)。具体的には、観戦者端末は、コントローラの右アナログスティックが操作されたか否かを判定する。
【0143】
オブジェクトカメラCOの回転操作が行われた場合(ステップS38:YES)、観戦者端末は、オブジェクトカメラCOの回転処理を行う(ステップS39)。具体的には、観戦者端末は、コントローラの右アナログスティックの操作方向および操作量に基づいて、仮想空間におけるオブジェクトカメラCOの回転方向および回転量を算出する。そして、観戦者端末は、メモリに記憶されたオブジェクトカメラパラメータのアームベクトルVOを、算出した回転方向および回転量を用いて更新する。これにより、アームベクトルVOは、y軸に平行な直線周りに回転する(
図10)。
【0144】
ステップS35の処理を行った場合、ステップS34でNOと判定した場合、ステップS39の処理を行った場合、又はステップS38でNOと判定した場合、観戦者端末は、観戦者端末のコントローラの姿勢が変化したか否かを判定する(ステップS40)。具体的には、観戦者端末は、操作データに含まれるコントローラの慣性センサ18が検出した加速度及び/又は角速度に基づいて、コントローラの実空間における姿勢が変化したか否かを判定する。
【0145】
コントローラの姿勢が変化したと判定した場合(ステップS40:YES)、観戦者端末は、仮想カメラの姿勢変化処理を行う(ステップS41)。具体的には、観戦者端末は、ステップS31でYESと判定した場合、コントローラの姿勢の変化に基づいて、鳥瞰カメラCBのカメラ座標系におけるピッチ角αおよびヨー角βを算出する。次に、観戦者端末は、アームベクトルVBと、鳥瞰カメラCBのカメラ座標系におけるピッチ角αおよびヨー角βとに基づいて、xyz座標系におけるピッチ角Gαおよびヨー角Gβを算出する。そして、観戦者端末は、算出したxyz座標系におけるピッチ角Gαおよびヨー角Gβを、鳥瞰カメラパラメータの姿勢情報としてメモリに記憶する。また、観戦者端末は、ステップS36でYESと判定した場合、コントローラの姿勢の変化に基づいて、オブジェクトカメラCOのカメラ座標系におけるピッチ角αおよびヨー角βを算出する。そして、観戦者端末は、アームベクトルVOとオブジェクトカメラCOのカメラ座標系におけるピッチ角αおよびヨー角βとに基づいて、xyz座標系におけるピッチ角Gαおよびヨー角Gβを算出し、算出したxyz座標系におけるピッチ角Gαおよびヨー角Gβを、オブジェクトカメラパラメータの姿勢情報としてメモリに記憶する。
【0146】
ステップS41の処理を行った場合、ステップS40でNOと判定した場合、又はステップS36でNOと判定した場合、観戦者端末は、受信データに基づいて、各プレイヤカメラCPのカメラパラメータを設定する(ステップS42)。具体的には、観戦者端末は、受信データに基づいて、各プレイヤキャラクタPの位置から、各プレイヤカメラCPの注視点FPを算出する。また、観戦者端末は、受信データから各プレイヤカメラCPのアームベクトルVPと、xyz座標系におけるピッチ角Gαおよびヨー角Gβとを取得する。そして、観戦者端末は、これらの情報を、各プレイヤカメラCPのプレイヤカメラパラメータとしてメモリに記憶する。
【0147】
ステップS42の処理を行った場合、観戦者端末は、
図25に示す処理を終了する。
【0148】
図23に戻り、観戦者端末は、ステップS12のゲーム処理の後、仮想カメラの切り替え操作が行われたか否かを判定する(ステップS13)。カメラの切り替え操作が行われた場合(ステップS13:YES)、観戦者端末は、切り替え操作に応じて、仮想カメラを切り替える(ステップS14)。具体的には、観戦者端末は、「使用中カメラ情報」に、仮想カメラの切り替え中であることを示す情報を記憶する。ここで、仮想カメラの切り替えは、複数のフレーム時間にわたって行われる。
【0149】
ステップS13でNOと判定した場合、又は、ステップS14の処理を実行した場合、観戦者端末は、仮想カメラの切り替え中か否かを判定する(ステップS15)。具体的には、観戦者端末は、使用中カメラ情報を参照して、現在仮想カメラを切り替え中か否かを判定する。
【0150】
仮想カメラの切り替え中と判定した場合(ステップS15:YES)、観戦者端末は、切替前の仮想カメラのカメラパラメータと、切替後の仮想カメラのカメラパラメータとに基づいて、カメラパラメータを算出する(ステップS16)。具体的には、観戦者端末は、切替前の仮想カメラの各カメラパラメータと切替後の仮想カメラの各カメラパラメータとをエルミート補間法により補間することで、切り替え中の仮想カメラの各カメラパラメータを算出する。例えば、切替前の仮想カメラがプレイヤカメラCPaであり、切替後の仮想カメラが鳥瞰カメラCBである場合、観戦者端末は、プレイヤカメラCPaの注視点FPaと鳥瞰カメラCBの注視点FBとをエルミート補間法により補間することで、切り替え中の仮想カメラの注視点Fを算出する。同様に、観戦者端末は、プレイヤカメラCPaのアームベクトルVPaと鳥瞰カメラCBのアームベクトルVBとをエルミート補間法により補間することで、切り替え中の仮想カメラのアームベクトルVを算出する。また、観戦者端末は、プレイヤカメラCPaのxyz座標系におけるピッチ角Gαと鳥瞰カメラCBのxyz座標系におけるピッチ角Gαとをエルミート補間法により補間することで、切り替え中の仮想カメラのxyz座標系におけるピッチ角Gαを算出する。また、観戦者端末は、プレイヤカメラCPaのxyz座標系におけるヨー角Gβと鳥瞰カメラCBのxyz座標系におけるヨー角Gβとをエルミート補間法により補間することで、切り替え中の仮想カメラのxyz座標系におけるヨー角Gβを算出する。そして、観戦者端末は、算出した各カメラパラメータを、使用中カメラ情報としてメモリ12に記憶する。
【0151】
ステップS15でNOと判定した場合、又は、ステップS16の処理を実行した場合、観戦者端末は、仮想カメラに基づいてゲーム画像を生成する(ステップS17)。具体的には、使用中カメラ情報により指定された仮想カメラのカメラパラメータに基づいて、ゲーム画像が生成される。また、仮想カメラが切り替え中の場合には、使用中カメラ情報に含まれるカメラパラメータに基づいて、ゲーム画像が生成される。観戦者端末は、生成したゲーム画像を表示装置に表示する(ステップS18)。これにより、仮想カメラが切り替え中でない場合には、指定された仮想カメラ(使用中の仮想カメラ)から仮想空間を見た画像が表示される。また、仮想カメラの切り替え中の場合には、切り替え中の画像が表示される。以上で、観戦者端末は、
図23に示す処理を終了する。
【0152】
次に、プレイヤのゲーム装置10(プレイヤ端末)において行われる処理について説明する。
【0153】
(プレイヤ端末に記憶されるデータ)
図26は、プレイヤ端末のメモリ12に記憶されるデータの一例を示す図である。
【0154】
図26に示されるように、ゲームプログラムを実行中、プレイヤ端末には、受信データと、操作データと、自プレイヤキャラクタ情報と、プレイヤカメラパラメータとが記憶される。なお、プレイヤ端末には、
図26に示す他にも様々なデータやプログラムが記憶される。
【0155】
受信データは、ネットワークを介して受信したデータであり、他のゲーム装置10において行われた操作に応じて生成されたプレイデータである。具体的には、受信データは、「他プレイヤキャラクタ情報」と、「移動オブジェクト情報」と、「イベント情報」とを含む。「他プレイヤキャラクタ情報」は、他のゲーム装置10に対応する各プレイヤキャラクタPに関する情報(位置、向き、移動方向、移動速度、ジャンプ速度等)である。これらの情報は、
図22で説明した観戦者端末に記憶されるプレイヤキャラクタ情報と同じ情報であるため詳細な説明を省略する。
【0156】
「操作データ」は、プレイヤ端末のコントローラに対する操作に応じたデータである。「自プレイヤキャラクタ情報」は、自機に対応するプレイヤキャラクタPに関する情報であり、プレイヤキャラクタPの位置、向き、移動方向、移動速度、ジャンプ速度等を含む。
【0157】
プレイヤカメラパラメータは、プレイヤ端末に対応するプレイヤキャラクタPに追従するプレイヤカメラCPのカメラパラメータである。プレイヤカメラパラメータは、注視点FPと、アームベクトルVPと、姿勢情報とを含む。これらの情報は、
図22で説明した観戦者端末に記憶される情報と同じ情報であるため詳細な説明を省略する。
【0158】
(プレイヤ端末において行われる処理の詳細)
次に、プレイヤのゲーム装置10において行われる処理の詳細について説明する。
図27は、プレイヤ端末において行われる情報処理の詳細を示すフローチャートである。
図27では、
図23と同様の処理については説明を省略する。なお、
図27に示す処理は、プレイヤ端末のプロセッサ11が所定のゲームプログラム(情報処理プログラム)を実行することにより行われる。プレイヤ端末のプロセッサ11は、
図27に示す処理を、例えば1/60秒(1フレーム時間という)間隔で繰り返し実行する。
【0159】
図27に示されるように、プレイヤ端末のプロセッサ11(以下、フローチャートでは単に「プレイヤ端末」と表記する)は、通信部14がネットワークを介して受信した受信データを取得し(ステップS50)、自機のコントローラからの操作データを取得する(ステップS51)。
【0160】
次に、プレイヤ端末は、ステップS50で取得した受信データとステップS51で取得した操作データとを用いて、ゲーム処理を実行する(ステップS52)。以下、ステップS52のゲーム処理の詳細について
図28を参照して説明する。
【0161】
(プレイヤ端末におけるゲーム処理)
図28は、
図27のステップS52のゲーム処理の詳細を示すフローチャートである。
【0162】
図28に示されるように、プレイヤ端末は、キャラクタ移動処理を行う(ステップS61)。具体的には、プレイヤ端末は、キャラクタ移動処理において、ステップS51で取得した操作データに基づいて、自機のプレイヤキャラクタPの位置、向き、移動方向、移動速度、ジャンプ速度等を算出し、自機のプレイヤキャラクタPを仮想空間内で移動させたり、ジャンプさせたり、向きを変更したりする。操作データに基づいて算出されたプレイヤキャラクタPの位置等の情報は、自プレイヤキャラクタ情報としてメモリ12に記憶される。ここで記憶された自プレイヤキャラクタ情報は、プレイデータとして、後述するステップS65のプレイデータ送信処理において他のゲーム装置10に送信される。
【0163】
また、プレイヤ端末は、ステップS61のキャラクタ移動処理において、ステップS50で取得した受信データに基づいて、他のゲーム装置10に対応する他のプレイヤキャラクタを仮想空間内で移動させたり、ジャンプさせたり、向きを変更したりする。
【0164】
次に、プレイヤ端末は、弾発射処理を行う(ステップS62)。プレイヤ端末は、弾発射処理において、ステップS51で取得した操作データに基づいて、自機のプレイヤキャラクタPが弾を発射したか否かを判定し、弾を発射した場合には、弾の発射方向を算出し、自機のプレイヤキャラクタPに弾を発射させる。具体的には、プレイヤ端末は、自機のプレイヤキャラクタPに対応するプレイヤカメラCPの撮像方向に弾を発射させる。これにより、例えばプレイヤ端末の表示装置の画面の中心に向かって弾が発射される。操作データに基づいて弾が発射された場合、弾が発射されたことを示す情報および弾の発射方向を示す情報が、プレイデータとしてメモリ12に記憶される。ここで記憶されたプレイデータは、後述するステップS65のプレイデータ送信処理において他のゲーム装置10に送信される。
【0165】
また、プレイヤ端末は、ステップS62の弾発射処理において、ステップS50で取得した受信データに基づいて、他のゲーム装置10に対応する他のプレイヤキャラクタが発射した弾を仮想空間内で移動させる。受信データには、他のプレイヤキャラクタが弾を発射したことを示すイベント情報が含まれ、プレイヤ端末は、当該イベント情報に基づいて、他のプレイヤキャラクタが発射した弾を仮想空間において移動させる。
【0166】
次に、プレイヤ端末は、オブジェクト移動処理を行う(ステップS63)。例えば、プレイヤ端末は、自機のプレイヤキャラクタPが移動オブジェクトTO上にいる場合、移動オブジェクトTOを所定の経路にしたがって移動させる。この場合、プレイヤ端末は、移動オブジェクトTOの移動後の位置や移動方向に関する情報をプレイデータとしてメモリに記憶する。ここで記憶されたプレイデータは、後述するステップS65のプレイデータ送信処理において他のゲーム装置10に送信される。また、プレイヤ端末は、例えば、受信データの移動オブジェクト情報に基づいて、移動オブジェクトTOを移動させる。
【0167】
次に、プレイヤ端末は、プレイヤカメラ制御処理を行う(ステップS64)。以下、ステップS64のプレイヤカメラ制御処理の詳細について
図29を参照して説明する。
【0168】
(プレイヤ端末におけるプレイヤカメラ制御処理)
図29は、
図28のステップS64のプレイヤカメラ制御処理の詳細を示すフローチャートである。
【0169】
図29に示されるように、プレイヤ端末は、プレイヤキャラクタPの位置からプレイヤカメラCPの注視点FPを算出しメモリ12に記憶する(ステップS71)。注視点FPは、例えば、プレイヤキャラクタPの位置からy軸方向に所定の距離だけ離れた位置に設定される。次に、プレイヤ端末は、操作データに基づいて、プレイヤカメラCPの回転操作が行われたか否かを判定する(ステップS72)。具体的には、プレイヤ端末は、コントローラの右アナログスティックが操作されたか否かを判定する。
【0170】
プレイヤカメラCPの回転操作が行われた場合(ステップS72:YES)、プレイヤ端末は、プレイヤカメラCPの回転処理を行う(ステップS73)。具体的には、プレイヤ端末は、コントローラの右アナログスティックの操作方向および操作量に基づいて、プレイヤカメラCPの回転方向および回転量を算出する。そして、プレイヤ端末は、メモリ12に記憶されたプレイヤカメラパラメータのアームベクトルVPを、算出した回転方向および回転量を用いて回転させる。
【0171】
ステップS73の処理を行った場合、又はステップS72でNOと判定した場合、プレイヤ端末は、プレイヤ端末のコントローラの姿勢が変化したか否かを判定する(ステップS74)。具体的には、プレイヤ端末は、コントローラの慣性センサ18が検出した加速度及び/又は角速度に基づいて、コントローラの実空間における姿勢が変化したか否かを判定する。
【0172】
コントローラの姿勢が変化したと判定した場合(ステップS74:YES)、プレイヤ端末は、プレイヤカメラCPの姿勢変化処理を行う(ステップS75)。具体的には、プレイヤ端末は、コントローラの姿勢の変化に基づいて、プレイヤカメラCPのカメラ座標系におけるピッチ角αおよびヨー角βを算出する。そして、プレイヤ端末は、アームベクトルVPと、プレイヤカメラCPのカメラ座標系におけるピッチ角αおよびヨー角βとに基づいて、xyz座標系におけるピッチ角Gαおよびヨー角Gβを算出し、算出したxyz座標系におけるピッチ角Gαおよびヨー角Gβを、プレイヤカメラパラメータの姿勢情報としてメモリ12に記憶する。
【0173】
ステップS75の処理を行った場合、又はステップS74でNOと判定した場合、プレイヤ端末は、
図29に示す処理を終了する。
【0174】
図28に戻り、プレイヤ端末は、ステップS64の処理の後、プレイデータ送信処理を行う(ステップS65)。ここで、プレイデータは、プレイヤ端末において行われた操作に基づいて生成されるデータである。具体的には、プレイヤ端末は、プレイデータとして、ステップS61のキャラクタ移動処理を行った後のプレイヤキャラクタPの位置、向き、移動方向、移動速度、ジャンプ速度等に関するデータを、通信部14を介してネットワークに送信する。また、ステップS62の弾発射処理において自機のプレイヤキャラクタPが弾を発射した場合、プレイヤ端末は、プレイデータとして、弾の発射方向に関する情報を含むイベント情報を、通信部14を介してネットワークに送信する。また、ステップS63のオブジェクト移動処理において自機のプレイヤキャラクタPが移動オブジェクトTOを移動させた場合、プレイヤ端末は、プレイデータとして、移動オブジェクトTOの位置および移動方向に関する情報を、通信部14を介してネットワークに送信する。また、プレイヤ端末は、プレイデータとして、ステップS64のプレイヤカメラ制御処理において算出したプレイヤカメラCPの姿勢情報(xyz座標系におけるピッチ角Gαおよびヨー角Gβ)を、通信部14を介してネットワークに送信する。ステップS65において送信されたプレイデータは、上記
図23のステップS10において観戦者端末によって受信されるとともに、上記ステップS50において他のプレイヤ端末によって受信される。
【0175】
ステップS65の処理を行った後、プレイヤ端末は、
図28の処理を終了する。
【0176】
図27に戻り、プレイヤ端末は、プレイヤカメラCPに基づいてゲーム画像を生成する(ステップS53)。そして、プレイヤ端末は、生成したゲーム画像を表示装置に表示する(ステップS54)。
【0177】
なお、上記処理は単なる例示であり、例えば各ステップの順番を入れ替えたり、他のステップが加えられたり、上記ステップの一部が省略されたりしてもよい。
【0178】
以上のように、本実施形態では、複数のプレイヤ端末と観戦者端末がネットワークに接続され、複数のプレイヤによってゲームが行われる。観戦者は、この複数のプレイヤによって行われるゲームを観戦することができる。観戦者は、仮想カメラについて、第1のモード(ズームモードの鳥瞰カメラCBを用いるモード)と、第2のモード(各プレイヤのプレイヤカメラCPを用いるモード)と、第3のモード(オブジェクトカメラCOを用いるモード)と、第4のモード(全体モードの鳥瞰カメラCBを用いるモード)とのうちの何れかのモードを指定し、指定したモードの仮想カメラを用いてゲームを観戦することができる。
【0179】
観戦者は、第1のモードにおいて、ズームモードの鳥瞰カメラCBを仮想空間内で移動させることができる。観戦者端末のコントローラに対する移動操作に基づいて、鳥瞰カメラCBの高さが当該移動操作に基づいて指定される位置(鳥瞰カメラCBの注視点FB。鳥瞰カメラCBの視点でもよい)に応じて予め設定された高さとなるように、鳥瞰カメラCBが移動される。具体的には、仮想空間には高さマップが設定される。高さマップは、仮想空間に存在する全てのオブジェクトよりも高い位置に設定される。観戦者の移動操作に基づいて、鳥瞰カメラCBの注視点FBが高さマップ上を移動する。鳥瞰カメラCBの視点は、当該注視点FBから所定方向に所定距離(固定であってもよいし、観戦者の操作に応じて可変であってもよい)だけ離れた位置に設定される。
【0180】
このように鳥瞰カメラCBの移動が制御されることにより、観戦者は、鳥瞰カメラCBを仮想空間内で移動させることができ、仮想空間における所望の場所を見ることができる。このとき、鳥瞰カメラCBの高さは予め設定された適切な値になるため、観戦者は、仮想カメラの移動操作を容易に行うことができる。例えば、観戦者が、高低差の大きな仮想空間において仮想カメラを左右方向に加えて高さ方向も手動で調整しなければならない場合、見やすい位置に仮想カメラを移動させることが困難である。本実施形態では、高さ方向の位置は自動的に決定されるため、観戦者は見やすい位置に素早く仮想カメラを移動させることができる。また、高さ方向の位置が自動的に決定されるため、高さマップが地形オブジェクトよりも高い位置に設定されている場合には、仮想カメラが地形オブジェクトに接触したり、近づき過ぎたりすることを防止することができる。
【0181】
また、鳥瞰カメラの高さが予め定められているため、仮想カメラを鳥瞰カメラに切り替える際に適切でない視点(例えば、地形に近すぎる位置や地形の内部等)に切り替わることを防止することができる。このため、観戦者は、第1の視点から第2の視点、さらに第3の視点へと臨機応変に仮想カメラを切り替えつつ臨場感のある観戦を行うことができる。
【0182】
また、本実施形態では、仮想カメラを切り替える場合に、切替中の仮想カメラの位置および向きが算出され、仮想カメラの切替中のゲーム画像が表示装置に表示される。このため、観戦者は、切替前の仮想カメラの位置から切替後の仮想カメラの位置に仮想カメラが移動する様子を見ることができ、切替前と切替後の位置関係を容易に把握することができる。
【0183】
(変形例)
以上、本実施形態について説明したが、他の実施形態では、以下のように構成されてもよい。
【0184】
例えば、上記実施形態では、観戦者の移動操作に基づいて鳥瞰カメラCBの注視点を制御面上で移動させることにより、鳥瞰カメラの視点を移動させた。他の実施形態では、観戦者の移動操作に基づいて鳥瞰カメラCBの視点を制御面上で移動させてもよい。この場合において、制御面は、仮想空間の地形オブジェクトやプレイヤオブジェクト、他の任意のオブジェクトよりも高い位置に設定されてもよい。
【0185】
また、上記実施形態では、移動オブジェクトTOは、仮想空間を所定の経路にしたがって移動し、オブジェクトカメラCOは、移動オブジェクトTOに追従して移動するものとした。他の実施形態では、移動オブジェクトTOは、プレイヤの操作に応じて移動するものであってもよい。例えば、移動オブジェクトTOは、プレイヤキャラクタPが把持する特定のオブジェクトであってもよい。例えば、プレイヤキャラクタPが当該特定のオブジェクトを把持して仮想空間における特定の場所に運んだ場合に勝利となるゲームが行われてもよい。この場合、特定のオブジェクトは、ゲームの結果を左右する重要なオブジェクトであり、オブジェクトカメラCOは、当該特定のオブジェクトに追従して移動する。オブジェクトカメラCOがこの特定のオブジェクトに追従して移動するため、観戦者は、オブジェクトカメラCOを用いて、特定のオブジェクトの周辺を常に観戦することができる。この場合においても、オブジェクトカメラCOは、特定のオブジェクト周りに回転可能であってもよいし、オブジェクトカメラCOの姿勢が変化可能であってもよい。
【0186】
また、オブジェクトカメラCOは、仮想空間を移動しない特定のオブジェクトに固定されてもよい。例えば、仮想空間における特定の領域が液体で塗りつぶされた場合に勝利となるゲームが行われる場合、当該特定の領域は、ゲームの結果を左右する重要なオブジェクトである。このため、オブジェクトカメラCOを当該特定の領域に固定することにより、観戦者は、特定の領域の周辺を常に観戦することができる。なお、オブジェクトカメラCOが特定のオブジェクトに固定される場合においても、オブジェクトカメラCOは当該特定のオブジェクト周りに回転可能であってもよいし、オブジェクトカメラCOの姿勢が変化可能であってもよい。
【0187】
また、上記実施形態では、各ゲーム装置10に対する操作に基づいて、各ゲーム装置10においてプレイヤキャラクタの位置や向き、仮想カメラの注視点や向き等が算出され、当該算出結果がプレイデータとして送信された。他の実施形態では、各ゲーム装置10に対する操作に応じた生の操作データ(例えば、コントローラの操作ボタンが押下されたことを示すデータ、コントローラのアナログスティックの操作方向や操作量を示すデータ、慣性センサからのデータ等)がプレイデータとして送信されてもよい。この場合、ゲーム装置10は、他のゲーム装置10に対する操作に応じた生の操作データを受信し、当該受信した生の操作データに基づいて、当該他のゲーム装置10に対応するプレイヤキャラクタの位置や向き、仮想カメラの位置や向き等を算出してもよい。
【0188】
また、上記実施形態では、複数のゲーム装置10はインターネットに接続され、インターネットを介して上記ゲームを行うものとした。他の実施形態では、複数のゲーム装置10は同一のLANに接続され、同一の場所において上記ゲームが行われてもよい。この場合、複数のゲーム装置10は、サーバを介さずに上記ゲームを行う。また、この場合において、複数のゲーム装置10は、無線または有線で互いに接続されて直接通信を行ってもよいし、例えば、無線LANアクセスポイントを介して通信を行ってもよい。
【0189】
また、上記実施形態では、複数のゲーム装置10は、インターネット上のサーバを介して通信を行うものとしたが、他の実施形態では、複数のゲーム装置10は、サーバを介さずにインターネットを経由して直接通信を行ってもよい。
【0190】
また、上記実施形態では、上記フローチャートで示した処理は、各ゲーム装置10において行われるものとした。他の実施形態では、上述した処理はゲームシステムに含まれるプレイヤ端末、観戦者端末、およびサーバのうちの何れにおいて実行されてもよく、上記処理のうちの少なくとも一部はインターネット上のサーバによって実行されてもよい。
【0191】
例えば、ゲーム装置10は、プレイヤや観戦者による操作を受け付ける処理およびゲーム画像を表示する処理のみを行い、その他の処理についてはサーバが実行するように構成されてもよい。例えば、各プレイヤ端末は、プレイヤの操作に応じた操作データをプレイデータとしてサーバに送信してもよい。サーバは、各ゲーム装置10から操作データを受信し、上述したキャラクタ移動処理、弾発射処理、オブジェクト移動処理、カメラパラメータ更新処理、プレイヤカメラ制御処理を行い、これらの処理結果に基づいてゲーム画像を生成する。そして、サーバは、生成したゲーム画像を各ゲーム装置10(プレイヤ端末、観戦者端末)に送信することにより、各ゲーム装置10の表示装置にゲーム画像を表示させてもよい。
【0192】
また、例えば、各プレイヤ端末は、プレイヤの操作に基づいて上述したキャラクタ移動処理を行い、当該処理の結果をプレイデータとしてサーバに送信してもよい。この場合、サーバは、各プレイヤ端末から受信したプレイデータに基づいて、他の処理(弾発射処理、オブジェクト移動処理、カメラパラメータ更新処理、プレイヤカメラ制御処理等)を行う。サーバは、これらの処理結果を各ゲーム装置10に送信する。各ゲーム装置10(プレイヤ端末、観戦者端末)は、受信した処理結果に基づいてゲーム画像を生成する。そして、各ゲーム装置10は、生成したゲーム画像を表示装置に表示させてもよい。
【0193】
また、上記実施形態では、多人数ゲームとして、複数のプレイヤが対戦する対戦ゲームが行われ、対戦ゲームにおいて射撃を行うゲームが行われた。他の実施形態では、対戦ゲームや射撃を行うゲームに限らず、任意のゲーム(例えば、ロールプレイングゲーム、レースゲーム等)が行われてもよい。
【0194】
また、上記実施形態では、ゲーム装置10において上述したゲームを行うものとしたが、ゲーム装置以外の他の情報処理装置(例えば、パーソナルコンピュータ、スマートフォン、タブレット端末等)において上述したゲームが行われてもよい。
【0195】
以上、本発明について説明したが、上記説明は本発明の例示に過ぎず、種々の改良や変形が加えられてもよい。