以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.構成
図1は、本実施形態のゲームシステム(ゲーム装置、画像生成システム)の外観図の一例であり、図2は、本実施形態におけるゲームシステムの機能ブロック図の一例である。なお、本実施形態のゲームシステムは、図2の構成要素(各部)の一部を省略した構成としてもよいし、他の構成要素を加えた構成としてもよい。
操作部160は、プレーヤが操作情報(入力情報の一例)を入力するためのものであり、その機能は、操作子などのボタンをはじめ、レバー、ステアリング、マイク、タッチパネル型ディスプレイ、トラックボール、或いは筺体などにより実現できる。
特に本実施形態では、図1に示す第2のディスプレイ12が、液晶ディスプレイと、プレーヤの接触位置を検出するためのタッチパネルとが積層されたタッチパネル型ディスプレイとなっている。従って本実施形態では、第2のディスプレイ12が操作部160として機能するとともに表示部としても機能する。なお第2のディスプレイ12への接触操作は、図1に示すタッチペンなどの入力機器を用いて行っても良いし、指先を用いて行ってもよい。
音入力装置162は、プレーヤが音声や手拍子などの音を入力するためのものであり、その機能はマイクなどにより実現できる。音入力装置162から入力された音や声は、入力情報とすることができる。
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。そして、本実施形態の記憶部170は、ワーク領域として使用される主記憶部171と、最終的な表示画像等が記憶されるフレームバッファ172と、オブジェクト(駒、障害物、キャラクタ等)のモデルデータが記憶されるオブジェクトデータ記憶部173と、各オブジェクトデータ用のテクスチャが記憶されるテクスチャ記憶部174と、オブジェクトの画像の生成処理時にZ値が記憶されるZバッファ176と、を含む。なお、これらの一部を省略する構成としてもよい。
特に本実施形態の記憶部170では、取得部118によって取得した入力情報を記憶することができる。
また、本実施形態の記憶部170は、ゲーム演算に用いられるゲーム演算用のデータを記憶する。具体的には、駒のパラメータ、駒の各ヒット領域に対応付けて設定されるゲーム演算用のデータが記憶部170に記憶される。
ここで、「駒」とは、オブジェクトの一例であり、おはじき、ボール、バッジ、めんこ、移動体を含む概念である。
ここで、パラメータとは、ゲーム演算に用いられる駒毎に割り振られるヒットポイントパラメータHP(耐久パラメータ)、攻撃力パラメータATK、防御力パラメータDEF、素早さパラメータ、突進力パラメータを含む。また、蓄積パラメータとは、対戦結果に応じて加算して蓄積されるパラメータである。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)、メモリカードなどにより実現できる。
この情報記憶媒体180には、処理部100において本実施形態の種々の処理を行うためのプログラム(データ)が記憶されている。即ち、この情報記録媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶されている。また、情報記憶媒体180は、プレーヤの個人データやゲームのセーブデータなどを記憶してもよい。
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。
特に本実施形態では表示部190は、図1に示す、第1のディスプレイ11と第2のディスプレイ12とを含む。第2のディスプレイ12は、タッチパネルディスプレイを用いることによりプレーヤが操作を行う操作部160としても機能する。ここでタッチパネルとして、例えば抵抗膜方式(4線式、5線式)、静電容量結合方式、超音波表面弾性波方式、赤外線走査方式などのタッチパネルを用いることができる。要するに、第2のディスプレイ12は、表示パネルに入力手段であるタブレットを重ねて、タブレットへのタッチ位置を検出するように構成した、タッチパネルディスプレイである。
また、本実施形態の表示部190は、第1のディスプレイ11を、第1の表示領域S1とし、第2のディスプレイ12を、第2の表示領域S2としているが、1つのディスプレイに第1の表示領域S1と第2の表示領域S2とを設けてもよい。
音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
通信部196は、外部(例えば、他のゲームシステム、サーバ)との間で通信(有線通信、無線通信)を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
なお、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバに記憶されている当該プログラムを、サーバからネットワーク及び通信部196を介して情報記憶媒体180(記憶部170)に受信するようにしてもよい。このようなサーバから本実施形態の各部としてコンピュータを機能させるためのプログラムを受信する手法も本発明の範囲内に含めることができる。
処理部100(プロセッサ)は、プレーヤからの入力情報(操作部160からの操作情報等)やプログラムなどに基づいて、ゲーム演算処理、画像生成処理、或いは音生成処理などの処理を行う。
この処理部100は記憶部170をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
特に、本実施形態の処理部100は、オブジェクト空間設定部110と、仮想カメラ制御部111と、データ設定部113、ヒット領域設定部114、移動・動作処理部115、ヒット判定部116、ゲーム演算部117、取得部118、回転処理部119、表示制御部130、描画部140、音生成部150とを含む。なお、これらの一部を省略する構成としてもよい。
オブジェクト空間設定部110は、オブジェクト、例えば、駒、ユニット、ボール、キャラクタ、移動体、建物、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(スプライト、ビルボード、ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間(ゲーム空間、仮想空間)に配置設定する処理を行う。
具体的にはオブジェクト空間設定部110は、オブジェクトの位置や向き(方向と同義)を決定し、その位置(X、Y、Z)にその向き(X、Y、Z軸回りでの角度)でオブジェクトを配置する。特に、本実施形態のオブジェクト空間設定部110は、オブジェクト空間の、マップ上(戦闘フィールド)に駒を設定する。
ここでオブジェクト空間とは、いわゆる仮想2次元空間、仮想3次元空間の両方を含む。2次元空間とは、例えば2次元座標(X,Y)においてオブジェクトが配置される空間であり、3次元空間とは、例えば3次元座標(X,Y,Z)においてオブジェクトが配置される空間である。
そして、オブジェクト空間を2次元空間とした場合には、複数のオブジェクトそれぞれについて設定された優先順位に基づいてオブジェクトを配置するようにしてもよい。例えば、マップ上を真上からみたときには、駒が最前に表示されるように優先順位を設定する。またオブジェクト空間を3次元空間とした場合には、ワールド座標系にオブジェクトを配置し、所与の視点から見える画像を生成する。
仮想カメラ制御部111は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は向き(X、Y、Z軸回りでの角度)を制御する処理(視点位置や視線方向を制御する処理)を行う。
例えば仮想カメラによりオブジェクト(例えば、駒、ユニット、キャラクタ、ボール、車)を後方から撮影する場合には、オブジェクトの位置、向きの変化に仮想カメラが追従するように、仮想カメラの位置、仮想カメラの向きを制御する。この場合には、移動・動作処理部115で得られたオブジェクトの位置、向き又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた向きに設定したり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は向きを特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
データ設定部113は、複数のヒット領域それぞれに対応付けてゲーム演算用のデータを設定する。ゲーム演算用のデータとは、ヒット領域に対応するパラメータやフラグ、属性、アイテム等、ゲーム演算に用いられるデータである。例えば、図7に示すデータ(特性、威力パラメータPOW、防御力パラメータDEF、能力、有効性フラグ)である。
ヒット領域設定部114は、駒に複数のヒット領域を設定する。ヒット領域は、面積や体積、容積だけでなく、点、弧、線分、円周、辺も含む。また、3次元空間におけるヒット領域は、駒を内包するバウンディングボリュームとしてもよい。なお、ヒット領域は、移動中の駒か否か、視点と駒との距離関係に基づいて、大きさ、形状、精密度を変化させてもよい。
ヒット領域設定部114は、対戦結果によって加算して蓄積される駒の蓄積パラメータに応じて、駒のヒット領域の数を変化させるようにしてもよい。
ヒット領域設定部114は、対戦結果によって加算して蓄積される駒の蓄積パラメータに応じて、駒のヒット領域の大きさ、形状の少なくとも1つを変化させるようにしてもよい。
ヒット領域設定部114は、駒の全周を放射状に分割して複数の領域を生成し、生成された領域それぞれに対して、該領域を含むヒット領域を設定するようにしてもよい。
移動・動作処理部115は、オブジェクトの移動・動作演算(移動・動作シミュレーション)を行う。即ち、この移動・動作処理部115は、操作部160によりプレーヤが入力した入力情報、物理法則(エネルギー保存の法則、運動量保存の法則、フックの法則など)予め設定されているパラメータやプログラム、予め用意した移動・動作アルゴリズム、各種データ(モーションデータ)などに基づいて、オブジェクトをオブジェクト空間内で移動させ、又は、オブジェクトの動作(モーション、アニメーション)を制御するための処理を行う。
本実施形態の移動・動作処理部115は、駒の移動情報(移動方向、移動量、移動速度加速度等、カーブする方向)、駒自体の回転情報(回転方向、回転量、回転速度、回転加速度)、駒の位置情報(位置座標)、動作情報(各オブジェクトの位置、或いは向き)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。ここでフレームとは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。そして、本実施形態では、フレームレートは毎フレーム固定としてもよいし、処理負荷に応じて可変としてもよい。
特に、本実施形態の移動・動作処理部115は、プレーヤからの入力情報に基づいて、プレーヤの駒を移動させる。例えば、プレーヤからの入力情報に基づいて、プレーヤの駒の移動方向、移動量、移動速度の少なくとも1つを求め、移動させる処理を行う。
また、本実施形態の移動・動作処理部115は、物理法則に基づくアルゴリズムに基づいて、ヒットを受けた駒の移動・動作制御を行ってもよい。例えば、プレーヤの駒が、敵プレーヤからのヒットを受けると、敵プレーヤの駒の衝撃によって、プレーヤの駒を跳ね返す移動・動作制御を物理法則に基づいて行う。また、駒が、障害物や壁にヒットした場合にも、同様に跳ね返す移動・動作制御を物理法則に基づいて行う。なお、駒が障害物にヒットした場合には、障害物を破壊してそのまま移動する処理を行ってもよい。
また、本実施形態の移動・動作処理部115は、プレーヤの接触操作を検出する接触検出領域におけるタッチペンとタッチパネルが接触した際の接触検出領域における位置情報、つまり、表示画面上に設けられた接触検出領域において、接触が検出されていない状態から接触が検出された時点における第1の位置座標を終点とし、当該第1の位置情報に続いて連続的に接触が検出された位置情報のうち接触が検出されなくなる直前の第2の位置情報を始点とする、移動ベクトル(第1の移動ベクトル)に基づいて、プレーヤの駒を移動させることができる。このようにすれば、プレーヤがバネを引っ張るような感覚で、入力することができる。
なお、第1の位置情報を始点とし、第2の位置情報とを終点とする移動ベクトルに基づいて、プレーヤの駒を移動させてもよい。
なお、本実施形態の駒は、予め定められたパラメータ(例えば、突進力パラメータ)に基づいて移動速度を求めてもよい。また、駒の移動速度は、駒の移動量を、第1の位置情報を取得してから第2の位置情報を取得するまでの時間で割ることによって求めてもよい。
また、移動・動作処理部115は、プレーヤからの入力情報に基づいて、駒にカーブをかけて移動させてもよい。例えば、プレーヤの接触操作を検出する接触検出領域におけるタッチペンとタッチパネルが接触した際の接触検出領域における位置情報、つまり、表示画面上に設けられた接触検出領域において、接触が検出されていない状態から接触が検出された時点における第3の位置座標を始点(又は終点)とし、当該第3の位置情報に続いて連続的に接触が検出された位置情報のうち接触が検出されなくなる直前の第4の位置情報を終点(又は始点)とする、第2の移動ベクトルを求める。そして、第2の移動ベクトルに基づいて、駒をカーブしながら、第1の移動ベクトル方向へ移動させるようにしてもよい。このようにすれば、プレーヤの駒の目の前に存在する障害物を、簡易に迂回してプレーヤの駒を移動させることができる。
また、移動・動作処理部115は、図4に示すように、駒毎に割り当てられる「突進力パラメータ」に基づいて、各駒の移動距離を異ならせるようにしてもよい。例えば、突進力パラメータの値に比例して長い距離を移動することができるようにしてもよい。
ヒット判定部116は、プレーヤの駒が、オブジェクト空間に存在するオブジェクト(例えば、他の駒、障害物)にヒットしたか否かを判定する処理を行う。
特に、本実施形態のヒット判定部116は、ヒット領域を用いて、プレーヤの駒が他の駒にヒットしたか否かを判定することができる。つまり、プレーヤの駒の複数のヒット領域のうち、どのヒット領域が、他の駒の複数のヒット領域のうちどのヒット領域にヒットしたか否かを判定することができる。
ここでオブジェクト空間がいわゆる2次元空間である場合には、駒の各ヒット領域に対応するスプライトと、他の駒の各ヒット領域、障害物に対応するスプライトとがヒットしたか否かで判定することができる。また、オブジェクト空間がいわゆる3次元空間である場合には、駒のヒット領域、障害物それぞれに対応するポリゴンまたはバウンディングボリュームがヒットしたか否かで判定することができる。
ゲーム演算部117は、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、駒、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などを行う。
本実施形態のゲーム演算部117は、プレーヤの駒が他の駒にヒットしたと判定された際には、ヒットしたプレーヤの駒のヒット領域に対応するゲーム演算用のデータに基づいてゲーム演算を行い、演算結果に基づき対戦結果を判定する処理を行う。かかる場合に、プレーヤの駒のヒット領域上のヒット位置に応じて当該ヒット領域に対応するゲーム演算用のデータを変化させ、変化させたデータに基づいてゲーム演算を行うようにしてもよい。
また、ゲーム演算部117は、プレーヤの駒が他の駒にヒットしたと判定された際には、ヒットされた他の駒のヒット領域に対応するゲーム演算用のデータに基づいてゲーム演算を行い、演算結果に基づき対戦結果を判定する処理を行う。かかる場合に、ヒットされた他の駒のヒット領域上のヒット位置に応じて当該ヒット領域に対応するゲーム演算用のデータを変化させ、変化させたデータに基づいてゲーム演算を行うようにしてもよい。
また、ゲーム演算部117は、特殊領域以外に位置している駒が、移動することによって特殊領域に位置した場合には、特殊領域に応じてゲーム演算を行うようにしてもよい。
特に、本実施形態のゲーム演算部117は、プレーヤの駒が他の駒にヒットしたと判定された際には、ヒットしたプレーヤの駒のステータスパラメータ(例えばヒットポイントパラメータHP)、ヒットされた他の駒のステータスパラメータを変動させ、駒のステータスパラメータに基づいて対戦結果を判定する処理を行ってもよい。
ここで、対戦結果を判定する処理とは、例えば、駒のヒットポイントパラメータHPに基づいて、ゲームの勝敗を判定したり、順位を判定する処理である。また、各プレーヤに複数の持駒が与えられるゲームにおいて、プレーヤの持駒から、ヒットポイントパラメータHPの値が零以下になった駒を削除する処理、プレーヤの持駒数が零以下になったか否かを判定し勝敗、順位を判定する処理も含む。
取得部118は、プレーヤからの入力情報を取得する処理を行う。例えば、プレーヤからの操作部160からの操作情報、例えば、プレーヤの接触操作を検出する接触検出領域における位置情報や、操作子による入力信号を取得する処理を行う。
本実施形態の取得部118は、表示画面上に設けられた接触検出領域において、接触が検出されていない状態から接触が検出された時点における第1の位置座標と、当該第1の位置情報に続いて連続的に接触が検出された位置情報のうち接触が検出されなくなる直前の第2の位置情報とを、前記入力情報として取得する。
ここで、接触検出領域とは、例えば、図1に示すタッチパネルを備えた第2のディスプレイ12であり、プレーヤの接触操作(例えばタッチペンや指等を用いて行う操作)の位置を検出する領域である。
なお、第1の位置情報は、接触検出領域における所与の領域、表示画面に表示されるプレーヤの駒に対応する駒領域において検出された位置情報に限って取得するようにしてもよい。なお、駒領域は、表示画面上において表示される駒の表示領域と同一の領域としてもよいし、図3に示すように、駒P1の表示領域を内包する領域Qとしてもよい。
回転処理部119は、取得部118において取得した、表示画面上に設けられた接触検出領域において、接触が検出されていない状態から接触が検出された時点における第1の位置座標と、当該第1の位置情報に続いて連続的に接触が検出された位置情報のうち接触が検出されなくなる直前の第2の位置情報とによって求められる回転速度ベクトル(第1の位置情報、第2の位置情報のうち一方の位置情報を始点とし、他方の位置情報を終点とする回転速度ベクトル)に基づいて、前記プレーヤの駒自体を回転させる処理を行う。つまり、回転速度ベクトルに基づいて、駒自体を時計回り、又は反時計回りに回転させるように制御する。
表示制御部130は、駒に設定された複数のヒット領域それぞれに対して、ヒット領域に対応付けられたゲーム演算用のデータに応じた画像を、当該ヒット領域に対応する表示領域(エリア)に表示させる。
また、表示制御部130は、表示画面、第1、第2のディスプレイ(第1、第2の表示領域)に、画像、動画像、アニメーション、ムービーを表示させる処理を行う。
特に、本実施形態の表示制御部130は、第1の画像を第1の表示領域S1に表示させ、第2の画像を第2の表示領域S2に表示させる処理を行う。なお、第1の画像を第2の表示領域S2に表示し、第2の画像を第1の表示領域S1に表示させる処理を行ってもよい。
例えば、第1の画像は、描画部140において生成された、オブジェクト空間の全体図を示すマップ画像、マップ上で駒が移動する画像、駒に対応するキャラクタの画像を含む。
また、第2の画像は、プレーヤが接触操作を行うことができる駒の画像を表示させる。また、プレーヤからの入力情報に基づいて、プレーヤの駒が移動する画像(駒の移動に追従する画像)、プレーヤの駒が他の駒、障害物、壁等にヒットする画像を含む。
特に、本実施形態での第2の表示領域S2がプレーヤが指示入力可能な接触検出領域でもあるので、図3に示すように、第2の表示領域S2にはプレーヤのタッチペン等による操作が簡易に行えるように、マップ全体を表示させるのではなく、プレーヤの操作対象の駒P1を第2の表示領域S2の中心に位置するような画像を表示させるようにしてもよい。
なお、マップ全体は、図3に示す第1の表示領域S1に表示させ、さらに、操作対象の駒P1の移動方向(移動ベクトル)を矢印で示す画像等、移動方向を示すガイドラインを表示させてもよい。
なお、表示制御部は、図3の表示領域S1に示すように、右欄に攻撃が巡る駒の順序を表示させるようにしてもよい。図3の例では、最上位に表示される駒のみが攻撃を行うことができる。なお、本実施形態では、攻撃が巡ってくる順序を駒毎に対応付けられた素早さパラメータによって決定している。
描画部140は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、ディスプレイ190(第1のディスプレイ11、第2のディスプレイ12)に出力する。描画部140が生成する画像は、いわゆる2次元画像であってもよいし、いわゆる3次元画像であってもよい。
特に、本実施形態の描画部140は、上述した第1の画像、第2の画像を生成する処理を行う。
本実施形態の描画部140は、2次元画像を生成する場合には、真上から見たときのマップの全体又は一部の画像を生成する。例えば、オブジェクト(スプライト)毎に優先度を設定し、設定された優先度が低いオブジェクトから順に描画する。オブジェクト同士が重なる場合には、優先度の高いオブジェクトを上書きして描画するようにする。
また、3次元画像を生成する場合には、本実施形態の描画部140は、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理が行われる。なお、頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
また、頂点処理では、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、あるいは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(フラグメント処理)が行われる。
ピクセル処理では、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色をフレームバッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。
これにより、オブジェクト空間内に設定された仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
なお、描画部140が行う頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現されてもよい。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、ハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
そして、描画部140は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理を行う。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)を記憶部170に記憶する。
テクスチャマッピングでは、記憶部170のテクスチャ記憶部174に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングする処理を行う。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部174からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出し、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
なお、本実施形態では、オブジェクトを描画する際に、所与のテクスチャをマッピングする処理を行うようにしてもよい。この場合には、マッピングされるテクスチャの色分布(テクセルパターン)を動的に変化させることができる。
また、この場合において、色分布(ピクセルパターン)が異なるテクスチャを動的に生成してもよいし、複数の色分布が異なるテクスチャを予め用意しておき、使用するテクスチャを動的に切り替えるようにしてもよい。またオブジェクト単位でテクスチャの色分布を変化させてもよい。
隠面消去処理では、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行う。すなわち、オブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに格納されるZ値を参照するとともに、当該参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
αブレンディング(α合成)では、描画部140は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)を行う。なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
音生成部150は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
なお、本実施形態のゲームシステムは、他のゲームシステムと、ネットワークを介して接続して、それぞれのプレーヤが対戦できるようにしてもよい。また、本実施形態のゲームシステムな、複数のプレーヤがタッチペンを持ち替えて、複数のプレーヤそれぞれが対戦できるようにしてもよい。
2.本実施形態の手法
(1)本実施形態のゲームシステムの概要
本実施形態のゲームシステムは、オブジェクト空間内のステージ(戦闘フィールド)で、プレーヤの操作対象のプレーヤの駒と、敵プレーヤの操作対象の敵プレーヤの駒とを用いて、1対1で対戦するゲームシステムである。なお、プレーヤは、実プレーヤだけでなく、コンピュータの所定のアルゴリズムに基づき制御されるコンピュータプレーヤも含む。
例えば、図3に示すように、第1の表示領域S1には、攻撃順序、またステージ全体を示すマップ上に配置されているプレーヤの駒(例えば白色の駒)と敵プレーヤの駒(例えば黒色の駒)が表示される。
そして、本実施形態は、各プレーヤに1又は複数の駒が割り振られ、プレーヤの駒、敵プレーヤの駒を含む全ての駒のうち、1つの駒が攻撃を行うことができる。
ここで、攻撃ができる駒とは、プレーヤからの入力情報に基づいて移動することができる駒のことをいい、つまり、プレーヤが、操作対象としてコマンド入力(タッチペンで駒を操作する接触操作)を行うことができる駒のことをいう。以下、攻撃ができる駒を攻撃側(攻撃フェーズ)の駒として以下説明する。また、攻撃順は、図4に示す駒の素早さパラメータに基づいて決定している。つまり、素早さパラメータとは、プレーヤからの操作入力が終了してから次の操作入力を行うまでの待機時間に対応する値である。例えば、素早さパラメータの値が大きい値ほど攻撃の順が早く廻ってくることになる。
一方、攻撃側の駒以外の駒は、防御側(防御フェーズ)の駒として以下説明する。なお、本実施形態では防御側の駒について、攻撃側の駒からヒットを受けた場合や、他の駒、あるいは、壁、障害物等によって物理法則に基づき跳ね返る移動処理を行っている。
まず、ゲーム開始時に、予め各駒に初期値のヒットポイントパラメータ(以下、「HP」という。)を設定する。なお、各駒は、例えば、図4に示すように、駒の識別情報に対応づけて、各パラメータの値が設定されている。
そして、プレーヤは、攻撃の順が廻ってきたら、その攻撃側の駒を、他の駒である防御側の駒にヒットするように移動させる操作を行う。本実施形態では、プレーヤの操作によって、攻撃側の駒が、防御側の駒にヒットしたと判定されると、ヒットされた防御側の駒のHPの値から、攻撃力パラメータATKを減算する処理を行う。ここで、攻撃力パラメータATKは、駒の攻撃力を示すパラメータであり、本実施形態ではヒット対象の駒のHPの値から減算する減算分の値としている。
図5は、攻撃側の駒P1が、防御側の駒P2にヒットした一例を示す図である。本実施形態では、駒P1が駒P2にヒットした場合に、駒P2のHPの値から駒P1の攻撃力パラメータKの値を減算する処理を行っている。
本実施形態では、攻撃力パラメータATKの値を、図4に示す予め設定された駒の威力パラメータPOWの値としている。したがって、例えば、駒P1の威力パラメータPOWが300であるとすると、攻撃力パラメータATKの値は300となり、駒P2のHPの値が2000である場合には、駒P2のHPの値から攻撃力パラメータATKの値300が減算され、結果的に駒P2のHPの値は1700になる。
そして、駒のHPが零以下(所定値以下)になった場合に、その駒は削除(消去)される。つまり、プレーヤの持駒のうち、HPが零(又は零以下)になった駒を削除し、持駒数を減算する処理を行う。そして、本実施形態では全ての持駒が先になくなったプレーヤ(持駒数が先に零になったプレーヤ)が敗者となり、他方のプレーヤを勝者として判定する処理を行っている。
なお、本実施形態では、味方プレーヤ、敵プレーヤに関係なく、防御側の駒にヒットすると、ヒットされた防御側の駒のHPの値は減算される。したがって、プレーヤは自身の駒にヒットしないように駒を移動しなければならない。また、本実施形態では1対1の2人のプレーヤでゲームを行っているが、3人以上の複数のプレーヤでゲームを行ってもよい。例えば、所定時間内にゲームプレイを行い、プレーヤの持駒数が多いプレーヤから順に順位を決定するようにしてもよい。
(2)パーツの説明
しかしながら、駒が他の駒に単にヒットしてHPの値を減算したり、HPの値が零になった駒が消滅するというゲームは単調であり、ゲームの戦略性に欠けるという問題がある。そこで、本実施形態は、より戦略性のあるゲームを実現するためにパーツ(ゲーム演算用のデータ)が設定された駒を用いてゲームを実現している。
図6(A)(B)は、本実施形態の駒の一例を示す。本実施形態では、駒P1を分割することによってできるエリアA1、A2それぞれに対応づけて、パーツを設定している。
まず、パーツについて説明する。「パーツ」とは、攻撃力、防御力を高めたり、HPの値を向上することができる等の機能拡張を行うためのゲーム演算用のデータである。例えて言えば、駒に対する装備の役割を果たすものである。
また、「エリア」とは、パーツを設定できる駒の表示領域、パーツを設定するためのスロット(駒に設けられたパーツの挿入溝)である。例えば、本実施形態では、図6(A)に示すように、駒の全周(外周、環状形状、リング形状)を放射状に分割した表示領域をエリアとして設定している。本実施形態では、複数のエリアそれぞれに設定されたヒット領域を用いてヒット判定を行い、ヒット判定結果に応じて駒のパラメータを演算する処理を行っている。
図7は、駒の各エリア(各ヒット領域)の識別情報に対応づけて設定される、パーツの各種パラメータの一例を示す。つまり、本実施形態では、特性、威力パラメータPOW、防御力パラメータDEF、能力の少なくとも1つを異ならせて、複数種類のパーツを用意している。なお、「特性」は、駒同士のヒット判定後の処理内容を識別する指標を示すものである。例えば、駒の攻撃力を増大させる機能を有する「攻撃」、駒の防御力を強くする機能を有する「防御」、例外的な処理を行う「魔法」等がある。例えば、「魔法」は、破壊されたパーツを回復したり、必殺技パラメータ(必殺技ゲージ)を増加させる等の処理を行っている。なお、必殺技パラメータは、攻撃力を更に増加させるために用いられるパラメータとすることができる。また、「有効性パラメータ(有効性フラグ)」は、パーツの有効・無効を示すフラグであり、有効なパーツは1(真)が設定され、無効なパーツは0(偽)に設定される。例えば、本実施形態では、所与の条件に基づきパーツを無効に設定する。
具体的に、パーツの設定例を説明すると、例えば、図6(A)に示す駒P1の例では、エリアA1、A2共にパーツが有効に設定されており、エリアA1には、攻撃特性のパーツ(特性が攻撃であるパーツ)が設定されており、例えば攻撃特性に応じた「剣」の模様の画像が表示される。また、エリアA2には、防御特性のパーツ(特性が防御であるパーツ)が設定されており、例えば防御特性に応じた「盾」の模様の画像が表示される。
例えば、図6(B)に示す駒P1の例では、エリアA1はパーツが有効に設定されているが、エリアA2はパーツが無効に設定されている。このように、本実施形態では、プレーヤがパーツの有効・無効を判断できるようにするために、有効なパーツが設定されているエリアと、無効なパーツが設定されているエリアとを、異なる色で表示させている。
図8(A)(B)は、エリアの設定手法の他の例を示すものである。例えば、図8(A)は、4つのエリアA1〜A4が設定されている。このように、駒のエリアの数は駒毎に異ならせるようにしてもよい。例えば、駒が他の駒にヒットした回数に応じて加算して蓄積される蓄積パラメータや、ゲームプレイ時間に基づいて、エリアの数を変化させるようにしてもよい。また、ステージの難易度に応じて、エリアの数を変化させるようにしてもよい。なお、魔法特性のパーツ(特性が魔法であるパーツ)をエリアに設定する場合には、図8(A)のA4に示すように、魔法特性に応じた「杖」の模様の画像を表示するようにしてもよい。
また、図8(B)に示すように、駒の各エリアの大きさ、形状の少なくとも1つは、同一でなくてもよく、駒の各エリアの大きさ、形状の少なくとも1つをそれぞれ異ならせるようにしてもよい。エリア、形状の少なくとも1つの大きさを変えることによって、ヒット領域の大きさも変化するのでヒットする確率、ヒットされる確率を変化させることができる。例えば、駒の複数のエリアのうち最も広いエリアに攻撃特性のパーツを設定すれば、攻撃に強い駒となるし、駒の複数のエリアのうち最も広いエリアに防御特性のパーツを設定すれば、防御に強い駒となる。駒の各エリアの大きさは、駒が他の駒にヒットした回数に応じて加算して蓄積される蓄積パラメータや、ゲームプレイ時間に基づいて、駒の各エリアの大きさ、形状の少なくとも1つを変化させるようにしてもよい。また、ステージの難易度に応じて、駒の各エリアの大きさ、形状の少なくとも1つを変化させるようにしてもよい。また、駒自体の大きさ、形状の少なくとも1つを変化させるようにして、駒の各エリアの大きさ、形状の少なくとも1つを変化させるようにしてもよい。
また、本実施形態では、図9に示すように、プレーヤが第2のディスプレイにおいてタッチペンを用いて、駒を接触指示することによって、第1の表示領域S1に、当該駒のHP等、駒の各エリアに対応するパラメータの値を表示させるようにしてもよい。これらの表示されるパラメータの値は、図4や図7に示すパラメータの値に基づいて表示される。このようにすれば、プレーヤはじっくり戦略を立てて、駒の攻撃を行うことができる。
なお、本実施形態の駒は、円形状に限らず、三角形状、四角形状等の多角形の形状であってもいいし、星型の形状、車両、飛行機を模した形状であってもよい。
また、本実施形態では、駒に複数のエリアを設定しているが、1つエリアを設定してもよい。なお、ゲームの戦略性、多様性を考慮すると、ステージに存在する少なくとも1つの駒は複数のエリアを有していることが望ましい。
また、パーツの設定は、ゲーム開始前に、プレーヤの入力情報に基づいて、エリアに対応するパーツを設定できるようにしてもよいし、予め駒毎にパーツを設定してもよい。例えば、プレーヤが所持しているパーツを表示させて、プレーヤがタッチペンを用いて、駒の各エリアに対応するパーツを選択できるようにしてもよい。
また、本実施形態では、駒の各エリア全てにそれぞれ対応するパーツを設定する例を説明したが、駒の一部のエリアのみにそれぞれ対応するパーツを設定してもよいし、駒の各エリア全てにパーツを設定しないようにしてもよい。
また、他のプレーヤとパーツを交換することができるようにしてもよい。つまり、プレーヤのゲーム機が、他のプレーヤのゲーム機とネットワークを介して、パーツに関するデータ(パラメータ等)を送受信できるようにしてもよい。
(3)パーツが設定された駒を用いたゲームの説明
本実施形態では、パーツが設定された駒を用いて処理を行っている。つまり、攻撃側のプレーヤの駒P1が、防御側の駒P2にヒットしたと判定された場合に、ヒットした駒P1のエリアに設定されているパーツと、ヒットされた駒P2のエリアに設定されているパーツとに基づいて、ゲーム演算を行っている。
本実施形態では、駒P1が駒P2にヒットすると、駒P1の威力パラメータPOWと、ヒットした駒P1のエリア(ヒット領域)に対応する威力パラメータPOWとを加算した値を、攻撃力パラメータATKに代入する。つまり、駒P1の攻撃機能を拡張する処理を行っている。
例えば、本実施形態は、駒P1の威力パラメータPOWと、ヒットした駒P1のエリア(ヒット領域)に対応する威力パラメータPOWとを加算した値である攻撃力パラメータATKを、駒P2のHP値から減算する処理を行っている。
また、本実施形態では、ヒットされた駒P2のエリア(ヒット領域)に対応する防御力パラメータDEFに基づいて、駒P1の攻撃に対する防御を行う。つまり、駒P2の防御機能を拡張する処理を行っている。
例えば、駒P2のHP値からATK値を減算する処理だけでなく、駒P2のHP値に防御力パラメータDEFの値を加算する処理を行い、駒P2のダメージを軽減させるようにしている。
また本実施形態では、有効なパーツが設定されている場合に限って、攻撃拡張処理、防御拡張処理を行い、無効なパーツが設定されている場合には、攻撃拡張処理、防御拡張処理を行わないようにしている。
例えば、駒P1のパーツが無効である場合には、駒P1のエリア(ヒット領域)に対応する威力パラメータPOW値を加算せずに、駒P1自体のPOW値を攻撃力パラメータATKとして設定する。
また、駒P2のパーツが無効である場合には、駒P2のエリア(ヒット領域)に対応する防御力パラメータDEF値を駒P2のHP値に加算する処理を行わないようにする。
したがって、プレーヤは、攻撃側のプレーヤの駒のエリアに設定されたパーツの有効性や、標的の駒のエリアに設定されたパーツの有効性を考慮して、ヒットの操作を行うことになる。つまり、本実施形態では、単に駒を狙うのではなく、パーツの有効性を考慮した駒のエリアを狙うので、従来にはない戦略性を高めたゲームを実現することができる。
なお、駒P1、P2のエリアに設定されたパーツの特性、能力に応じて、攻撃拡張処理、防御拡張処理を行わないようにしてもよい。例えば、魔法特性の場合には、攻撃拡張処理、防御拡張処理を行わないようにしてもよい。
具体的に、図10(A)〜(C)を用いて、パーツの特性、能力に応じて攻撃側の駒P1が、防御側の駒P2にヒットしたときのゲーム演算の処理について説明する。
例えば、図10(A)に示すように、駒P1の有効なパーツが設定されているエリアA1が、駒P2の有効なパーツが設定されているエリアA2´にヒットした場合について説明する。
本実施形態では、図10(A)に示すように駒P1のヒットしたパーツの特性が攻撃である場合には、ヒットした駒P1のパーツの能力の効果発動処理を行う。具体的には、駒P1の能力に応じて、(第1の)駒P1、駒P2の少なくとも1つの変化処理値を求め、求めた変化処理値に基づいて駒P1、P2のHP値を変化させる処理を行う。
例えば、駒P1のヒットしたパーツの能力が「貫通」である場合には、ヒットした駒P2パーツの有効、無効に関わらず常に駒P2の防御拡張処理が行われないようにする(例えば、ヒットした駒P2パーツの有効、無効に関わらず常に駒P2のDEF値を零に設定する)処理を行い、駒P2のHP値を求めるようにする。
また、図10(A)に示すように、駒P2のヒットしたパーツが防御特性である場合には、駒P2の能力の効果発動処理を行う。具体的には、駒P2のヒットしたパーツの能力に応じて、(第2の)駒P1、P2の少なくとも1つの変化処理値を求め、求めた変化処理値に基づいて、駒P1、P2のHP値を変化させる処理を行う。
例えば、駒P2のヒットされたパーツの能力が「防御」である場合には、ヒットした駒P1の攻撃力パラメータATKの値を所定率(例えば30%)軽減する処理を行う。そして、軽減されたATK値を、駒P2のHP値から減算する処理を行うことによって、駒P2のダメージを軽減してHP値を求めるようにする。
また、図10(B)に示すように、駒P1が、有効な攻撃特性のパーツが設定されているエリアA1が、駒P2においてパーツが無効であるエリアA2´にヒットした場合には、駒P2のエリアA2´のパーツは無効であるので、駒P2の能力の効果発動処理は行われない。
また、図10(C)に示すように、駒P1が、パーツが無効であるエリアA1で、駒P2のエリアのうちパーツが設定されているエリアA2´にヒットした場合には、駒P1のエリアA1のパーツは無効であるので、駒P1の能力効果発動処理は行われない。
なお、攻撃側の駒P1のヒットしたエリアに魔法特性のパーツが設定されている場合には、その魔法特性に基づいて、例外処理を行ってもよい。例えば、駒P1のヒットしたエリアのパーツに予め設定されている回復パラメータの値を、ヒット対象の駒P2のHPの値に加算するようにしてもよい。このようにすれば、プレーヤは、魔法特性のパーツが設定されているエリアが、自分の駒である他の駒にヒットするように操作すれば、自分の駒のHPの値をアップさせることができ、さらに戦略的なゲームを実現することができる。なお、例外的な処理としては、回復処理だけでなく、駒P1、或いは駒P2の必殺技パラメータを増大させる処理等を行ってもよい。
以上のように、本実施形態によれば、プレーヤが自分の駒を用いて攻撃を行う場合には、有効なパーツが設定されたエリアで敵プレーヤの駒を狙うように操作を行ったり、敵プレーヤの無効なパーツが設定されたエリアを狙って操作を行う等、プレーヤは戦略を立ててゲームをプレイできる。
また、逆に、プレーヤは、攻撃側の敵プレーヤの駒からのヒットによるダメージを抑えるために、攻撃順が廻ってきたときに、有効なパーツを備えたエリアが、敵プレーヤの駒に向くように、プレーヤの駒を回転制御する操作を行い、防御性を重視した操作を行う。このように、本実施形態では、プレーヤは従来にはない戦略を立てたゲームを行うことができる。
(4)パーツの無効・有効の制御
さて、本実施形態は、所与の条件に基づきパーツを無効にする処理を行っている。このようにすれば、バリエーションに富んだゲームが実現できるからである。
例えば、図11に示すように、駒P1に有効な防御特性が設定されているパーツのエリアA1で、駒P2にヒットした場合には、駒P1のエリアA1に設定されているパーツを無効にする処理を行っている。また、駒P2が有効な攻撃特性が設定されているパーツのエリアA2´に、駒P1からヒットを受けた場合には、駒P2のエリアA2´に設定されているパーツを無効にする処理を行う。
このように、攻撃側の駒が、本来「防御」で使う機能を用いて攻撃した場合や、防御側の駒が本来「攻撃」で使用する機能を用いて防御した場合には、例えば、剣で防御を行うことや、盾で攻撃を行うように矛盾が生じているので、本実施形態では、矛盾した使い方をしたパーツを無効にするようにしている。このようにすれば、さらにプレーヤは戦略を練ってゲームを行うことができ、よりゲームを楽しむことができる。
本実施形態では、具体的には次のように処理を行っている。まず、駒を、攻撃側か、防御側かを識別し、攻撃側の駒が他の駒にヒットしたときのエリアに設定された有効なパーツが特定のパーツか否かを判定している。例えば、攻撃側の駒にとっての特定のパーツとは、防御特性のパーツである。そして、特定のパーツであると判定した場合には、有効なパーツを無効にする処理を行っている。例えば、攻撃側の駒のエリアに設定されたパーツが防御特性である場合には、特定のパーツであると判定し、当該パーツを無効にする処理を行っている。
また、防御側の駒が他の駒からヒットを受けた場合には、ヒットを受けた有効なパーツが特定のパーツであるか否かを判定している。例えば、防御側の駒にとっての特定のパーツとは、攻撃特性のパーツである。そして、特定のパーツであると判定した場合には、有効なパーツを無効にする処理を行っている。例えば、防御側の駒のエリアに設定されたパーツの特性が攻撃である場合には、特定のパーツであると判定し、当該パーツを無効にする処理を行っている。
さらに、本実施形態では、無効に設定されているパーツを有効にする処理を行ってもよい。例えば、ヒットされた防御側の駒のエリアのパーツが無効である場合に、攻撃側のヒットした駒のエリアに設定されたパーツが特性が魔法である場合には、魔法による回復の効果として、ヒットされた防御側の駒のエリアに設定されているパーツを、有効にする処理を行ってもよい。さらに、攻撃側のヒットした駒のエリアに設定されたパーツの特性が魔法である場合には、魔法による回復の効果の適用があったものとみなし、この魔法特性のパーツを無効にすることが望ましい。
(5)連続ヒット
また、本実施形態では、攻撃側の駒が、他の駒にヒットし、さらに、異なる駒にヒットした場合には、攻撃力パラメータATKの値を、連続するヒット回数に応じて減少させるようにしてもよい。
ここで連続するヒット回数とは、攻撃が行える期間、つまり1つの攻撃において、他の駒にヒットするヒット回数のことをいう。
図12(A)(B)は、連続的に攻撃側の駒が、他の駒にヒットする例を示す図である。例えば、図12(A)に示すように、最初に、攻撃側の駒P1が、防御側の駒P2にヒットする攻撃力は100%であり、図12(B)に示すように、駒P1が駒P2にヒットした次に、続けて駒P1が駒P3にヒットした場合には、駒P1が駒P3にヒットする攻撃力は、80%である。このようにすれば、現実世界の物理力に近いイメージで、攻撃を行うことができ、より自然なゲームを実現できるからである。
例えば、駒P1が、駒P2、駒P3に対する攻撃力パラメータATKの値が1000である場合には、駒P2には、100%の攻撃力パラメータATKの値1000を、駒P2のHPの値から減算する処理を行い、駒P3には、80%の攻撃力である攻撃力パラメータATKの値800を駒P3のHPの値から減算する処理を行う。
なお、本実施形態では、攻撃力パラメータATKの値を減少させる減少率は、最初のヒットは100%、2番目のヒットは80%、3番目のヒットは60%のように、ヒット回数に応じて、20%減少するように決定している。
なお、本実施形態では、攻撃側の駒から、同一の防御側の駒に対して重複してヒットした場合には、防御側の駒は最初のヒットのみに関して演算を行うようにし、2回以上のヒットを無視して演算を行うようにしてもよい。或いは、2回以上のヒットを無視せずに演算を行うようにしてもよい。
(6)移動制御
次に、本実施形態のオブジェクト空間内における駒の移動制御(滑走制御)について説明する。
本実施形態では、プレーヤからのタッチペンを用いた接触検出領域である第2のディスプレイを接触する接触操作によって、接触検出領域において検出された位置情報に基づいて、駒の移動方向、移動量を決定している。
まず、図13(A)〜(C)を用いて具体的に説明する。図13(A)に示すように、プレーヤは、駒を移動させたい方向と逆方向をタッチペンで接触する操作を行う。すると、本実施形態では、駒の表示領域に対応する接触検出領域上の駒領域Qにおいて接触が検出されていない状態から、最初に接触された第1の位置情報aを取得し、さらに、第1の位置情報aに続いて連続的に接触が検出された位置情報のうち、接触が検出されなくなる直前の第2の位置情報bとを取得している。
そして、本実施形態では、図13(B)に示すように、第2の位置情報bを始点とし、第1の位置情報aを終点とする移動ベクトルV1を求め、移動ベクトルV1の方向に駒を移動させると共に、移動ベクトルV1の大きさに基づいて、駒の移動量を決定している。
このようにすれば、プレーヤが意図する方向に、簡易にプレーヤの駒を移動させることができ、プレーヤが意図する移動量で、簡易にプレーヤの駒を移動させることができる。例えばゴムのように引っ張るイメージで、プレーヤは駒の移動方向や移動量を定めて操作を行うことができる。
また、図3に示すように、第1の表示領域S1に表示されるマップにおいて駒P1の移動方向を矢印で表示してもよい。例えば、第1の位置情報aを駒領域Q内において検出してから連続して検出される位置情報のうち最新の位置情報を始点とし、検出した第1の位置情報aを終点とする移動ベクトルを示した画像をリアルタイムに生成して、第1の表示領域S1、第2の表示領域S2に表示させるようにしてもよい。
なお、本実施形態は、プレーヤからの接触操作によって、移動したプレーヤの駒が、他の駒にヒットした際には、物理法則に基づき、他の駒がプレーヤの駒からの衝撃によって、跳ね返るように移動する処理を行う。なお、障害物や壁に衝突する場合も同様に物理法則に基づき、跳ね返るように移動する処理を行っている。
(7)回転制御
さらに、図13(C)に示すように、本実施形態では、駒の中心点Oに基づいて駒を回転させる回転方向をプレーヤの操作によって決定することができる。例えば、位置情報aを始点とし位置情報bを終点とするベクトルに基づいて、回転ベクトルFを算出し、回転ベクトルに基づいて駒を回転させる処理を行う。図13(C)の例では、駒は、時計回りに回転することになる。なお、回転ベクトルFは、位置情報aを始点とし位置情報bを終点とするベクトルのうち、駒の中心点O、半径rの円周上の接線方向成分のベクトルを算出することによって求めることができる。
このようにすれば、例えば、プレーヤの駒の攻撃特性のパーツが設定されているエリアが敵プレーヤの駒に対面していなくても、プレーヤが回転させる操作を行うことで、攻撃特性のパーツが設定されているエリアで、敵プレーヤの駒にヒットさせることができる。
(8)駒がカーブしながら移動する例
さらに、本実施形態では、プレーヤの操作情報に基づいて、駒の移動方向を直線方向ではなく、カーブなどの変化をつけて移動させるようにしてもよい。
例えば、図14(A)に示すように、プレーヤは、攻撃側の自分の駒P1の近くに自分の駒P4(防御側の駒P4)が存在する場合には、駒P4にヒットさせないようにして、敵プレーヤの駒P3を狙いたい場合がある。本実施形態では、プレーヤの駒P1が駒P4にヒットすると、たとえ自分自身の駒であっても、駒P4のHPの値が減算されてしまうからである。
したがって、本実施形態では、プレーヤからの接触操作によって、入力される位置情報に基づきカーブ用の移動ベクトルV2を求めている。
例えば、図14(B)に示すように、プレーヤはタッチペンを用いて、駒をカーブさせたい方向と逆方向を指示するように接触操作を行う。すると、本実施形態では、駒の画像の表示領域に対応する接触検出領域上の駒領域Qにおいて接触が検出されていない状態から最初に接触された第3の位置情報cを取得し、さらに、第3の位置情報cに続いて連続的に接触が検出された位置情報のうち、接触が検出されなくなる直前の第2の位置情報dとを取得している。
そして、位置情報dを終点とし、位置情報cを始点とする移動ベクトルV2が求められ、駒は、移動ベクトルV2の方向にカーブ(回転移動)しながら駒を移動させ、最終的に駒の移動前の位置から移動ベクトルV1方向に、駒が位置するように駒を移動させるように制御する。
(9)ヒット判定
本実施形態では、駒の各エリアにヒット領域を設定し、設定されたヒット領域を用いてヒット判定を行っている。例えば、本実施形態では、駒の全周(外周)を放射状に分割してできる複数の領域それぞれに対して、該領域を含むヒット領域を設定する。
図15(A)は、駒P1の各エリアにヒット領域を設定する一例を図示したものである。本実施形態では、駒P1の中心点O(原点)からの距離rと、基準方向Xからの角度θとの組(r,θ)による極座標形において、駒P1の各エリアのヒット領域を設定している。なお、本実施形態では、攻撃側の駒のどのエリアが、防御側の駒のどのエリアにヒットしたか、つまり、ヒットしたときの各駒のヒットエリアを特定しなければならないので、駒の各エリアに設定されるヒット領域はそれぞれ異ならせることが望ましい。
例えば、図15(A)に示すように、エリアA1のヒット領域H1は、r1を半径とする円の0<r≦r1であって、0度≦θ<90度かつ270度≦θ<360度の範囲に設定し、ヒット領域H2は、0<r≦r1であって、90度≦θ<270度の範囲に設定している。特に、本実施形態では、駒を円形状にしているので、図15(A)に示す円の半径r1は、駒の半径と同じ長さにしている。
次に、本実施形態のヒット判定処理について説明する。まず、本実施形態では、駒P1が、駒P2にヒットしたか否かを判定し、さらに、駒P1のどのエリアが、駒P2のどのエリアにヒットしたか否かを判定している。
具体的には、図15(B)に示すように、まず、駒P1の中心点Oと、駒P2の中心点Oとを結ぶ線分Iを求める。そして、駒P1の円の半径r1(駒P1ヒット領域によって形成される円の半径)と、駒P2の円の半径r2(駒P2のヒット領域によって形成される円の半径)とを加算した値が、線分Iよりも小さい場合、つまり、(r1+r2)<Iである場合には、駒P1と駒P2はヒットしていないと判定している。
一方、図15(C)に示すように、駒P1の円の半径r1と、駒P2の円の半径r2とを加算した値が、線分I以上である場合、つまり、(r1+r2)≧Iである場合には、駒P1と駒P2はヒットしていると判定している。
さらに、本実施形態では、駒P1の複数のエリアのうち、どのエリアが、駒P2にヒットしたかは、ヒット領域を用いて次のように判定している。まず、駒P1の円の円周と、線分Iとの交点pを求める。そして、駒P1の中心点Oを原点とする極座標系における交点p(r1,θ)に基づき、交点pが駒P1のどのヒット領域に属しているかを判定している。例えば、交点pのθの値が30度である場合には、図15(A)のヒット領域H1に属しているので、エリアA1にヒットしたと判定される。また、駒P2も同様に、駒P2の円の円周と、線分Iとの交点を求め、駒P2の中心点Oを原点とする極座標系における当該交点が、駒P2の、どのヒット領域に属しているかを判定している。
なお、本実施形態では、駒自体が回転する場合には、駒の回転に伴ってエリアも回転することになるので、駒の各エリアに対応するヒット領域も、駒の回転に応じて変更する処理を行う。例えば、図15(A)に示す駒P1が、反時計方向に90度回転する場合には、ヒット領域H1の角度範囲を、0度≦θ<180度の範囲に変更し、ヒット領域H2の角度範囲を、180度≦θ<360度の範囲に変更している。
次に、矩形状のヒット領域を用いてヒット判定を行う処理を、図16(A)(B)(C)を用いて説明する。図16(A)(B)(C)は、2次元のオブジェクト空間において、駒のエリア毎に矩形のヒット領域を設定する例を図示したものである。
例えば、駒P1のエリアA1に対応するヒット領域H1は、点p1、点p2、点p3、点p4で構成される矩形の領域である。
そして、本実施形態では、ヒット領域H1の頂点(例えばp1〜p4)が、他の駒のエリア毎のヒット領域に属するか否かを、座標値(X、Y)を比較することによって判定している。例えば、ヒット領域H1の頂点(例えばp1〜p4)が、他の駒のいずれかのエリアのヒット領域内の座標値内である場合には、ヒットしたと判定している。
なお、図16(B)に示すように、エリアに対応するヒット領域を複数設けてヒットの精細度を高めるようにしてもよい。例えば、エリアA1に複数のヒット領域H1a〜H1dを設定し、エリアA2に複数のヒット領域H2a〜H2dを設定してもよい。
また、本実施形態は、図16(C)に示すように、エリアA1、A2をそれぞれ内包するヒット領域H1、H2を設定してもよい。
(10)障害物
本実施形態では、図17(A)に示すように、オブジェクト空間に障害物OBを配置して、バリエーションのあるゲームを実現している。
例えば、本実施形態では、障害物OBにヒット領域を設けている。ヒット領域は、上述した駒のエリアにヒット領域を設けた場合と同様に、障害物の形状に応じて、円形状、あるいは、矩形状のヒット領域を設ける。そして、駒が障害物OBにヒットしたか否かを判定し、ヒットしたと判定した場合には、所与の条件下、駒を障害物から跳ね返す処理、または、障害物の存在に関わらず駒を続けて移動させる処理を行っている。
例えば、本実施形態では、駒に設定された複数のエリアのうち、ヒットしたエリアのパーツが有効であり、パーツの「能力」が「破壊」である場合には、障害物OBの存在に関わらず、そのまま駒を移動させる処理を行っている。その際に、障害物OBを破壊する画像を表示させる処理を行ってもよい。一方、駒に設定された複数のエリアのうち、ヒットしたエリアのパーツが無効である場合や、パーツが有効であってもパーツの「能力」が「破壊」でない場合には、物理法則に基づき駒を障害物から跳ね返す処理を行っている。
なお、本実施形態において、算出された駒の攻撃力パラメータATKの値がしきい値以上であると判定される場合に、障害物OBの存在に関わらず、障害物OBを破壊する画像を表示させて、そのまま駒を移動させる処理を行ってもよい。
このように、本実施形態では、障害物OBを利用して、敵プレーヤの駒を攻撃したり、敵プレーヤからの攻撃を防御する戦略を考えることができるので、よりプレーヤは戦略を練ってゲームを楽しむことができる。
なお、図17(B)に示すように、障害物OBのヒット領域は、線分のヒット領域とすることができる。例えば、障害物OBのヒット領域(線分)H3上の駒P1の中心点Oに対して垂直な点pを求め、交点pと中心点Oとを結ぶ線分Iを求める。そして、線分Iと、駒の円の半径r1(駒P1のヒット領域によって形成される円の半径)との距離関係に基づいて、駒P1と障害物OBとのヒット判定を行う。例えば、I≦r1である場合には、ヒットしていると判定し、I>r1である場合にはヒットしていないと判定する。また、駒P1の中心点Oを原点とする極座標系における基準方向Xからの角度θに基づいて、駒P1の複数のヒット領域(エリア)のうち、どのヒット領域(エリア)が障害物OBにヒットしたかを判定する。
(11)特殊領域
本実施形態では、オブジェクト空間のステージ上に特殊領域を設けて、駒のパラメータを制御させるようにしてもよい。例えば、図17(A)に示すように、回復領域AR(特殊領域の一例)を設け、回復領域AR以外にいた駒が、移動することによって、回復領域ARに位置した場合に、その駒のHPの値に回復領域ARに応じた所定値(例えば100)を加算する処理を行うようにしてもよい。なお、駒が、回復領域ARに位置するか否かの判定は、例えば回復領域AR内に駒の中心点Oが位置するか否かによって判定している。
また、オブジェクト空間のステージ上にダメージ領域(特殊領域の一例)が設けられている場合には、ダメージ領域以外にいた駒が、移動することによって、ダメージ領域に位置することになった場合に、その駒のHPの値からダメージ領域に応じた所定値(例えば200)を減算するように処理を行うようにしてもよい。
このようにすれば、駒のヒット判定だけでなく、特殊領域を利用して駒のHPの値を変動させることができるので、プレーヤは、特殊領域を考慮した、より戦略性を取り込んだゲームを行うことができる。
また、ステージ上に特殊領域を設ける場合には、第2の表示領域において、プレーヤが駒の移動方向上をタッチペンで擦るような操作を行うことによって、擦った領域上に位置する駒をさらに移動させることができるように制御してもよい。このようにすれば、例えば、プレーヤが回復領域ARに向けてプレーヤの駒を移動させている場合に、あと僅かで回復領域ARに達するという状況において、プレーヤがタッチペンを用いて擦る操作を行うことによって、回復領域ARにプレーヤの駒を位置させることができる。具体的には、駒が移動している場合に、接触検出領域において当該駒の移動方向上の位置情報を検出した場合には、当該駒の移動距離を長くするように制御する。
なお、特殊領域ARのヒット領域は線分としてもよい。例えば、駒P1と特殊領域ARとのヒット判定処理は、上述した駒P1と障害物OBとのヒット判定と同様の処理を行うようにしてもよい。
(12)演出
本実施形態では、攻撃側の駒P1が駒P2にヒットしたと判定されると、駒P2は物理法則に基づいて駒P1から跳ね返る(弾かれる)画像を第2の表示領域S2に表示している。
そこで、本実施形態では、プレーヤが感情移入しやすいように、駒が跳ね返る画像を表示するだけでなく、駒に対応するキャラクタが対戦している画像を第1の表示領域S1に表示している。
例えば、図18に示すように、攻撃側の駒P1が、防御側の駒P2にヒットした場合には、駒P1に対応するプレーヤキャラクタC1が、駒P2に対応するキャラクタC2に攻撃をしている動画像を表示させるようにする。なお、その際に、攻撃力(攻撃力パラメータATKの値)を表示させるようにしてもよい。
(13)その他
なお、本実施形態では、味方プレーヤ、敵プレーヤに関係なく、防御側の駒にヒットすると、ヒットされた防御側の駒のHPの値は減算されるが、敵プレーヤの駒にヒットした場合に限って敵プレーヤの駒のHPを減算するようにし、自分の駒にヒットした場合には、HPを減算しないようにしてもよい。
なお、本実施形態では、複雑性を回避するために防御側の駒が他の防御側の駒にヒットした場合には、双方の駒について駒のHPの値の演算処理や、パーツの有効・無効の変更処理等のステータスパラメータの値を変動させないようにしているが、双方の駒について駒のHPの値の演算処理や、パーツの有効・無効の変更処理等のステータスパラメータの値を変動させるようにしてもよい。
3.本実施形態の処理
図19(A)〜(C)は、本実施形態のゲームシステムの処理の一例を示す。まず、駒P1が、他の駒P2にヒットしたか否かを判定する(ステップS10)。そして、ヒットしたと判定されると(ステップS10のYes)次の処理に進み、ヒットしていないと判定されると(ステップS10のNo)、処理が終了する。
次に、駒P1のヒットしたエリアのパーツは有効か否かを判定する(ステップS20)。駒P1の、ヒットしたエリアのパーツが有効であると判定されると(ステップS20のYes)、次の処理に進む。一方、駒P1の、ヒットしたエリアのパーツが有効でない(無効である)と判定されると(ステップS20のNo)、攻撃力パラメータATK値に駒P1の威力パラメータPOW値が代入される。
そして、駒P1のヒットしたエリアのパーツは攻撃又は防御特性か否かを判定する(ステップS30)。
駒P1のヒットしたエリアのパーツは攻撃又は防御特性であると判定されると(ステップS30のYes)、ATK値に、駒P1のヒットしたパーツのPOW値と、駒P1のPOW値を加算した値が代入される(ステップS50)。
そして、駒P1のヒットしたパーツが攻撃特性か否かを判定し(ステップS80)、駒P1のヒットしたパーツが攻撃特性であると判定される場合には(ステップS80のYes)、駒P1のヒットしたパーツの能力の効果発動処理を行う(ステップS90)。
例えば、駒P1のヒットしたパーツの能力に基づいて、駒P1、P2の少なくとも1つのパラメータや特性を変化させる処理を行う。具体的には、駒P1の能力に基づいて、駒P1について変化処理を行った値を、パラメータ(P1変値)に代入し、駒P1の能力に基づいて、駒P2について変化処理を行った値を、パラメータ(P2変値)に代入する。
一方、駒P1のヒットしたパーツが攻撃特性でないと判定される場合には(ステップS80のNo)、駒P1のヒットしたエリアのパーツを無効にする処理を行う(ステップS100)。
一方、駒P1のヒットしたエリアのパーツは攻撃又は防御特性でないと判定されると、(ステップS30のNo)、ATK値に0が代入され(ステップS60)、例外処理を行う(ステップS70)。
次に、駒P2のヒットしたエリアのパーツは有効か否かを判定する(ステップS110)。駒P2の駒P2のヒットしたエリアのパーツは有効であると判定されると(ステップS120のYes)、次の処理に進む。一方、駒P2の、ヒットしたエリアのパーツが有効でない(無効である)と判定されると(ステップS110のNo)、駒P2の防御力パラメータDEF値に0が代入される。
そして、駒P2のヒットしたエリアのパーツは攻撃又は防御特性か否かを判定する(ステップS120)。
駒P2のヒットしたエリアのパーツは攻撃又は防御特性であると判定されると(ステップS120のYes)、駒P2のDEF値に、駒P2のヒットしたパーツのDEF値が代入される(ステップS140)。
そして、駒P2のヒットしたパーツが防御特性か否かを判定し(ステップS170)、駒P2のヒットしたパーツが防御特性であると判定されると(ステップS170のYes)、駒P2のヒットしたパーツの能力の効果発動処理を行う(ステップS180)。
例えば、駒P2のヒットしたパーツの能力に基づき、駒P1、P2の少なくとも1つのパラメータや特性の変化処理を行う。具体的には、パラメータ(P1変値)と、駒P2の能力に基づきP1の変化処理を行った値とを加算した値を、パラメータ(P1変値)に代入し、パラメータ(P2変値)と、駒P2の能力に基づき駒P2について変化処理を行った値とを加算した値を、パラメータ(P2変値)に代入する処理を行う。
一方、駒P2のヒットしたパーツが防御特性でないと判定される場合には(ステップS170のNo)、駒P2のヒットしたエリアのパーツを無効にする処理を行う(ステップS190)。
一方、駒P2のヒットしたエリアのパーツは攻撃又は防御特性でないと判定されると(ステップS120のNo)、駒P2のDEF値に0が代入され(ステップS150)、例外処理を行う(ステップS160)。
そして、P2のHP値とDEF値を加算した値から、ATK値を減算し、そして、P1、P2の能力に基づく変化処理を行った場合にはパラメータ(P2変値)を加算した値を、P2のHP値に代入する。
また、P1のHP値と、変化処理を行った場合にはパラメータ(P1変値)を加算した値を、P1のHP値に代入する(ステップS200)。
次に、駒P1のHP値が0より大きい値であるか否かを判断し(ステップS210)、駒P1のHP値が0より大きい値でないと判定されると、駒P1を削除する処理を行う(ステップS220)。
そして、駒P2のHP値が0より大きい値であるか否かを判断し(ステップS230)、駒P2のHP値が0より大きい値でないと判定されると、駒P2を削除する処理を行う(ステップS240)。以上で処理が終了する。
4.その他
(1)パーツの無効について
本実施形態は、エリアに設定されたパーツそれぞれに、パーツ用のヒットポイントパラメータ(以下、「パーツHP」という。)を設定し、パーツHPの値が所定値(例えば零)になった場合に、当該パーツを無効にするように制御してもよい。
つまり、攻撃側の駒P1からヒットを駒P2のエリアA1で受けた場合には、駒P2のエリアA1に設定されているパーツHPの値を優先的に減算する。そしてパーツHPの値が減算されて零になると、そのパーツを無効にするように制御する。
例えば、防御側の駒P2のHPが1000、駒P2のエリアA1に設定されているパーツHPの値が500に設定されている場合について説明すると、攻撃側の駒P1から攻撃力パラメータATKの値が600の攻撃(ヒット)を駒P2のエリアA1で受けた場合には、駒P2のパーツHPの値が零になり無効となると共に、駒P2のHPの値を100減算する処理を行っている。
(2)ヒット位置に基づくパラメータの変化
本実施形態では、駒に設定されているパラメータの値をヒット位置に基づいて変化させるようにしてもよい。例えば図7に示す、威力パラメータPOWの値や、防御力パラメータDEFの値を、ヒット位置に基づいて変化させるようにしてもよい。
より具体的に説明すると、図20に示すように、駒P1の中心点Oを原点とする極座標系における基準方向Xからのヒット位置の角度θに基づいて、駒に設定されているパラメータの値を変化させる。例えば、攻撃側の駒がエリアの中心近くでヒットした方が、他のエリアとの境界近くでヒットするよりも威力が強くなるように威力パラメータPOWの値を変化させる。つまり、p1(r1、θ1)でヒットした方が、p2(r1,θ2)でヒットするよりも威力が強くなるように、威力パラメータPOWの値を変化させる。
例えば、ヒット位置の基準方向Xからの角度θが0度≦θ<30度、かつ、330度<θ<360度の範囲はヒット領域H1に対応するエリアA1の威力パラメータPOW値の初期値(例えばATK=1400)に基づき、ゲーム演算を行い、ヒット位置の基準方向Xからの角度が30度≦θ<60度、かつ、300度<θ≦330度の範囲は、威力パラメータPOW値は初期値より所定量減算した値(例えば、ATK=1000)の値に基づき、ゲーム演算を行い、ヒット位置の基準方向Xからの角度が60度≦θ<90度の範囲、かつ、270度≦θ<300度の範囲は、威力パラメータPOW値をさらに所定量減算した値(例えば、ATK=500)の値に基づき、ゲーム演算を行う。
このようにすれば、エリアの中の真ん中の位置を狙ってヒットしようとする戦略が加わり、さらに戦略性のあるゲームを実現できる。
(3)ゲームシステムの適用例
本実施形態では、図1に示すゲームシステム(以下、「第1のゲームシステム」という。)に限らず種々のゲームシステム、パーソナルコンピュータ、携帯電話においても適用できる。
例えば、図21に示すようなリモコン型の入力機器を備えたゲームシステム(以下、「第2のゲームシステム」という。)においても適用してもよい。
第2のゲームシステムでは、コントローラ(リモコン型の入力機器の一例)を用いてプレーヤが入力情報を入力することができる。具体的に、本実施形態の移動制御や回転制御における処理において取得する第1、第2位置情報は次のように特定できる。
まず、第2のゲームシステムのコントローラは、撮像部を備えており、本体装置においてコントローラが指示する表示画面上の指示位置を求めている。そして、本実施形態では、表示画面上の第1の位置情報、第2の位置情報を次のように特定している。
例えば、表示画面上の第1の位置情報(第1の指示位置)は、プレーヤがコントローラの操作ボタンを押下する操作によって特定される。本実施形態では、プレーヤが操作ボタンを押下することによって発行される信号を本体装置において受信したときに、第1の位置情報を特定している。そして、プレーヤが当該操作ボタンを押下し続けた後、プレーヤが操作ボタンを放したときの位置情報(指示位置)を、第2の位置情報(第2の指示位置)として特定する。本実施形態では、第1の位置情報を特定した後に、連続して受信していた信号を受信しなくなる直前の位置情報を第2の位置情報として特定している。
そして、上述したように、第1、第2の位置情報に基づいて、駒の移動ベクトルや、駒の回転ベクトルを求め、駒の移動制御や回転制御を行うことができる。
なお、本実施形態のゲームシステムのコントローラは、加速度センサを備えているので、第1の位置情報を特定した後に、プレーヤはコントローラを用いて駒を突くような操作を行ってもよい。例えば、X、Y、Zの3軸方向のうち何れかの方向への加速度の値が所定値を超えた段階で、加速度の値、加速度の方向に基づいて、駒がオブジェクト空間内を移動するように制御してもよい。
なお、第2のゲームシステムの表示画面において、表示領域を複数設けるようにし、第1のゲームシステムと同様に、各表示領域に対応する画像を生成して表示するようにしてもよい。
図22は、第2のゲームシステムの機能ブロック図の一例である。なお、本実施形態のゲームシステムは、図2の構成要素(各部)の一部を省略した構成としてもよいし、他の構成要素を加えた構成としてもよい。
なお、上述した図2に示すゲームシステムの機能ブロック図の各部と異なる点について以下説明を加える。
本実施形態の第2のゲームシステムは、本体装置10と、入力装置20と、情報記憶媒体180、表示部(表示装置)190、スピーカー192、光源198、とからなる。
入力装置20は、加速度センサ210、撮像部220、スピーカー230、振動部240、マイコン250、通信部260によって構成されている。
加速度センサ210は、3軸(X軸、Y軸、Z軸)の加速度を検出する。すなわち、加速度センサ210は、上下方向、左右方向、及び、前後方向の加速度を検出することができる。なお、加速度センサ210は、5msec毎に加速度を検出している。また、加速度センサは、1軸、2軸、6軸の加速度を検出するものであってもよい。なお、加速度センサから検出された加速度は、通信部260によって本体装置に送信される。
撮像部220は、赤外線フィルタ222、レンズ224、撮像素子(イメージセンサ)226、画像処理回路228を含む。赤外線フィルタ222は、入力装置の前方に配置され、表示部190に関連付けられて配置されている光源198から入射する光から赤外線のみを通過させる。レンズ224は、赤外線フィルタ222を透過した赤外線を集光して撮像素子226へ出射する。撮像素子226は、例えば、CMOSセンサやCCDのような固体撮像素子であり、レンズ224が集光した赤外線を撮像して撮像画像を生成する。撮像素子226で生成された撮像画像は、画像処理回路228で処理される。例えば、撮像素子226から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報(特定位置)を検出する。なお、光源が複数存在する場合には、撮像画像上の位置情報を検出する。また、検出した撮像画像上の位置情報は、通信部260によって、本体装置に送信される。
スピーカー230は、本体装置から通信部260を介して取得した音を出力する。本実施形態では、本体装置から送信された確認音やモーションに応じた効果音を出力する。
振動部(バイブレータ)240は、本体装置から送信された振動信号を受信して、振動信号に基づいて作動する。
マイコン(マイクロコンピュータ)250は、受信した本体装置からのデータに応じて、音を出力する制御や、バイブレータを作動させる制御を行う。また、加速度センサ210が検出した加速度を通信部260を介して本体装置に送信させる処理を行ったり、撮像部220によって検出された撮像画像上の位置情報を、通信部260を介して本体装置に送信させる処理を行う。
通信部260は、アンテナ、無線モジュールを含み、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、本体装置とデータを無線で送信受信する。なお、本実施形態の通信部は、加速度センサ210によって検出された加速度や撮像部220において検出した撮像画像上の位置情報等を、4msec、6msecの交互の間隔で本体装置に送信している。なお、通信部260は、本体装置と通信ケーブルで接続し、当該通信ケーブルを介して情報の送受信を行うようにしてもよい。
なお、入力装置20は、ボタン、レバー(アナログパッド)、マウス、十字キー、タッチパネル型ディスプレイなどの操作子を更に設けてもよい。また、入力装置20はプレーヤの入力動作によって変化する角速度を検出するジャイロセンサを備えていてもよい。
また入力装置20は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力装置20には、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける(プレーヤが手に装着する)グローブ型コントローラなど実際の道具を模して作られたコントローラも含まれる。また入力装置20には、入力装置20と一体化されている本体装置10(ゲーム装置、携帯型ゲーム装置)、携帯電話なども含まれる。
次に、本実施形態の本体装置10について説明する。本実施形態の本体装置10は、記憶部170、処理部100、通信部196によって構成される。
なお、本体装置10における記憶部170、処理部100の一部については、上述した図2に示す構成と同じ構成は説明を省略し、異なる構成について以下説明を行う。
取得部118は、プレーヤからの入力情報を取得する処理を行う。
特に、本実施形態の取得部118は、撮像部において220において、検出した撮像画像上の撮像画像上の位置情報に基づいて、表示画面上における位置情報(プレーヤの指示位置)を取得する処理を行う。また、取得部118は、操作ボタンなどの操作子による入力信号を取得する処理を行う。
コントローラの指示位置を算出手法について、図23を用いて説明する。
図23に示す矩形の領域は、図21の撮像素子(イメージセンサ)が取得した撮像画像が格納される撮像領域PAである。撮像領域PAには、所定周期毎にコントローラの位置、向きに応じた撮像画像が格納される。
入力装置の撮像部は、撮像領域PAに格納された撮像画像のうち、光源Rを撮像した領域RA、光源Lを撮像した光源領域LAそれぞれの特定位置RP、LPを求める。なお、特定位置RP、LPは、撮像領域PAにおける2次元座標系(XY軸の座標系)によって特定できる位置座標である。そして、本体装置は、求められた特定位置RP、LPを取得して、表示画面におけるプレーヤの指示位置を求める。
すなわち、本実施形態では、撮像領域PAの原点Oをコントローラが指示する点とし、原点Oと、撮像領域PAにおける特定位置RP、LPと、撮像領域PAにおける表示画面に対応する領域である表示画面領域DAとの相対的な位置関係から、表示画面上におけるコントローラの指示位置を求める。
図23の例では、特定位置RP、LPが、撮像領域PAの中央よりもやや上方において、撮像領域PAの基準線LX(X軸)に対して時計回りにφ度回転された状態で形成されている。従って、原点Oは表示画面領域DAの右下部の所定位置に対応させることができ、表示画面上におけるコントローラの指示位置の座標を求めることができる。なお、光源位置RP、LPを結ぶ直線Jの基準線LXに対する回転角度φから、表示画面に対するコントローラの指示方向軸回りの回転角度(傾き)を求めることができる。
本実施形態の取得部118は、このように、表示画面上の位置情報(プレーヤの指示位置)を求めている。
なお、本実施形態は、本体装置において取得した特定位置RP、LPに基づいて、コントローラと光源R、Lとの所定距離(実空間における所定距離)にあるときの特定位置RP、LPとの長さを、基準距離Hとして予め設定しておくことにより、基準距離Hと、特定位置RP、LPとの距離hとの比に基づき、実空間における光源R、Lに対するコントローラの距離を求めることができる。例えば、実空間における光源Rと光源Lの中心位置からのコントローラの距離を求めることができる。
特に、本実施形態の取得部118は、表示画面上の第1の位置情報(第1の指示位置)を、プレーヤがコントローラの操作ボタンを押下することで特定し、プレーヤが当該操作ボタンを押下し続けた後、プレーヤが操作ボタンを放した直前の位置情報(指示位置)を、第2の位置情報(第2の指示位置)とし、第1、第2の位置情報を取得している。
なお、第1の位置情報は、表示画面上の所与の領域、例えば表示画面に表示される駒に対応する駒領域において検出された位置情報に限って取得するようにしてもよい。例えば、駒領域は、表示画面上において表示される駒の表示領域と同一の領域としてもよいし、駒の表示領域を内包する領域としてもよい。
通信部196は、ネットワーク(インターネット)を介して他の本体装置(ゲーム装置)と通信することができる。その機能は、各種プロセッサ又は通信用ASIC、ネットワーク・インタフェース・カードなどのハードウェアや、プログラムなどにより実現できる。また、通信部196は、有線、無線いずれの通信も行うことができる。
また、通信部196は、アンテナ、無線モジュールを含み、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、入力装置20の通信部260を介して、入力装置20とデータを送受信する。例えば、通信部196は、確認音、効果音等の音データ、及び、振動信号を、入力装置に送信し、入力装置20において、加速度センサや撮像画像センサによって検出された情報を、4msec、6msecの交互の間隔で受信する。
なお、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバが有する、記憶部、情報記憶媒体からネットワークを介して情報記憶媒体180(または、記憶部170)に配信するようにしてもよい。このようなサーバの情報記憶媒体の使用も本発明の範囲に含まれる。
表示部190は、処理部100により生成された画像を出力するものであり、その機能は、CRTディスプレイ、LCD(液晶ディスプレイ)、OELD(有機ELディスプレイ)、PDP(プラズマディスプレイパネル)、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などのハードウェアにより実現できる。
スピーカー192は、音制御部130により再生する音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどのハードウェアにより実現できる。なお、スピーカー192は、表示部に備えられたスピーカーとしてもよい。例えば、テレビ(家庭用テレビジョン受像機)を表示部としている場合には、テレビのスピーカーとすることができる。
光源198は、例えばLEDであり、表示部190に関連付けられて配置される。なお、本実施形態は、複数の光源(光源Rと光源L)とを備え、光源Rと光源Lとの距離は所定間隔を有するように設置されている。
なお、本実施形態のゲームシステムは、他のゲームシステム(第1、第2のゲームシステム)と、ネットワークを介して接続して、それぞれのプレーヤが対戦できるようにしてもよい。また、本実施形態のゲームシステムは、複数のプレーヤが、プレーヤそれぞれのコントローラを用いてゲームを行ってもよいし、複数のプレーヤが、1つのコントローラを持ち替えて、ゲームを行ってもよい。