以下、本発明の実施の形態(本実施形態)について説明する。なお、以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また、本実施形態で説明される構成の全てが本発明の必須構成要件であるとは限らない。
1.ゲームシステムの構成
図1は、本実施形態のゲームシステム1の概略構成図の一例である。
ゲームシステム1は、プレーヤ20が把持して位置、姿勢、向きを任意に変更可能なコントローラ16と、ゲーム処理を行うゲーム装置本体10と、ゲーム画像を表示させるディスプレイ19とを含む。なお本実施形態では、コントローラ16とゲーム装置本体10とは無線通信により情報の送受信を行っているが、例えば、コントローラ16とゲーム装置本体10とを通信ケーブルで接続し、当該通信ケーブルを介して情報の送受信を行うようにしてもよい。
コントローラ16には、加速度センサ30が内蔵されており、この加速度センサ30は、コントローラ16の動きを加速度ベクトル(動きに応じて値が変化する物理量の一例)として検出する。なお本実施形態では、加速度センサ30として、3軸それぞれの加速度ベクトルを検出することができる3軸加速度センサを用いているが、1軸、あるいは2軸の加速度ベクトルを検出する加速度センサを用いてもよい。
ゲーム装置本体10は、加速度センサ30が出力する出力値(加速度ベクトル)に基づいてゲーム処理を行い、その処理結果に基づいて、ディスプレイ19に種々のゲーム画像を表示させるとともに、スピーカ(図示省略)にゲーム中のBGMなどの各種の音声を出力させる。
このように本実施形態では、コントローラ16の動きを加速度センサ30が検出するため、コントローラ16の動きを操作情報として入力することできる。従って、プレーヤ20はゲーム上の動作に近い動作を行ってコントローラ16を動かすような仮想現実感が高められたゲームを楽しむことができる。
2.ゲームシステムの機能ブロック
図2は、本実施形態のゲームシステム1の機能ブロック図の一例である。なお本実施形態のゲームシステム1では、図2の構成要素(各部)を全て含む必要はなく、その一部を省略した構成としてもよい。
コントローラ16は、プレーヤが行った操作を操作情報として入力するためのものである。特に本実施形態のコントローラ16は、コントローラ16の動き、姿勢、向き等の少なくともいずれか1つに応じて値が変化する物理量を検出するセンサ162を内蔵しており、センサ162によって検出された物理量を操作情報として入力する。
センサ162は、コントローラ16の動き、姿勢、向き等の少なくともいずれか1つに応じて値が変化する物理量として加速度、角速度、速度などの単位時間当たりの変化量を検出し、検出した加速度等の値を出力するものである。本実施形態では、センサ162の機能を加速度センサ30(圧電型や動電式、歪みケージ式等)により実現しているが、姿勢方位センサやジャイロなどにより実現してもよい。また本実施形態では、センサ162は5mec毎に出力値を出力する。
なおコントローラ16は、表示部190などの指示面に対するコントローラ16の指示位置を操作情報として入力するようにしてもよい。この場合には、例えば、コントローラ16にCMOSセンサやCCDなどの撮像素子(受光素子)を設け、この撮像素子によって指示面(指示面付近)に設けられたLED等の光源を撮像し、撮像された光源の位置情報と予め設定されている撮像側の基準位置情報とから、指示面に対するコントローラ16の指示位置を求めるようにすればよい。
またコントローラ16に、ボタン、レバー、マイク、トラックボール、タッチパネルなどを更に設けるようにしてもよい。またコントローラ16は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータ(具体的には、本実施形態の各部としてコンピュータを機能させるためのプログラムやデータ)などを格納するものであり、その機能は、光ディスク(CD、DVD等)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などのハードウェアにより実現できる。
記憶部170は、処理部100や通信部194などのワーク領域や、情報記憶媒体180から展開されたプログラムやデータの格納領域となるもので、その機能はRAM(VRAM)などのハードウェアにより実現できる。そして記憶部170は、主記憶部172、基準データ記憶部174、描画バッファ176を含んで構成されており、基準データ記憶部174には、コントローラ16の所定の移動態様に関連付けられた複数の基準データが記憶されている。
表示部190(ディスプレイ19)は、処理部100により生成された画像を出力するものであり、その機能は、CRTディスプレイ、LCD(液晶ディスプレイ)、OELD(有機ELディスプレイ)、PDP(プラズマディスプレイパネル)、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。
音出力部192は、処理部100により生成された音を出力するものであり、その機能は、スピーカ、あるいはヘッドフォンなどにより実現できる。
通信部194は、外部(サーバ、他のゲームシステム1など)との間でネットワークを介した通信を行うためのものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアやプログラムなどにより実現できる。
なお、本実施形態の各部としてコンピュータを機能させるためのプログラムやデータは、サーバが有する情報記憶媒体からネットワーク及び通信部194を介して情報記憶媒体180(記憶部170)に配信するようにしてもよい。このようなサーバの情報記憶媒体の使用も本発明の範囲に含まれる。
処理部100(プロセッサ)は、コントローラ16からの操作情報、あるいは情報記憶媒体180から記憶部170に展開されたプログラムやデータなどに基づいて、ゲーム処理、画像生成処理、あるいは音生成処理などの各種処理を記憶部170の主記憶部172をワーク領域として行う。ゲーム処理としては、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、あるいはゲーム終了条件が満たされた場合にゲームを終了する処理などを行う。なお処理部100の機能は、各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
そして処理部100は、音制御部110、ゲーム処理部112、判定部114、決定部116、描画部140を含んで構成される。なお、これらの一部を省略する構成としてもよい。
音制御部110は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて音処理を行い、ゲーム音(楽曲、BGM、効果音など)を生成し、音出力部192に出力させる。具体的には、情報記憶媒体180から主記憶部172に読み込まれた音データのゲーム音(楽曲、BGM、効果音など)の再生制御を行う。例えば音楽演奏ゲームであれば、ゲームの開始に合わせて、ゲームステージに応じた楽曲の再生を行う。
ゲーム処理部112は、表示部190に表示される画像(オブジェクト画像)の表示制御を行う。具体的には、指示標識(所定の移動態様でコントローラ16を移動させることをプレーヤ20に指示する指示標識)、キャラクタ、移動体(車、飛行機など)、建物、樹木、柱、壁、マップ(地形)などの表示すべきオブジェクトを発生させたり、オブジェクトの表示や表示位置を指示したり、オブジェクトを消滅させたりするなどの表示制御を行う。即ち、発生したオブジェクトをオブジェクトリストに登録したり、オブジェクトリストを描画部140等に転送したり、消滅したオブジェクトをオブジェクトリストから削除したりするなどの表示制御を行う。例えば音楽演奏ゲームであれば、楽曲の再生に合わせて所定の移動態様(移動軌跡)でコントローラ16を移動させることをプレーヤ20に指示する指示標識を表示部190に表示させるとともに、コントローラ16の所定の移動態様に関連づけられたダンスを行うキャラクタを表示部190に表示させる表示制御を行う。
またゲーム処理部112は、オブジェクト(2次元データ又は3次元データで定義される表示物)の動作や移動が発生した場合に、発生した移動や動作の様子を示す画像を表示部190に表示するための制御を行う。具体的には、コントローラ16からの操作情報、プログラム(移動アルゴリズム)や、各種データ(モーションデータ)などに基づいて、表示物を移動させる処理や動作させる処理を行う。より詳細に説明すると、表示物の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(各パーツの位置、回転角度、或いは形状)を、1フレーム(1/60秒)毎に順次求める処理を行う。なおフレームは、表示物の移動や動作を制御する処理や画像を生成する描画処理を行う時間の単位である。
またゲーム処理部112は、後述する判定部114に出力されたと判定された場合に、コントローラ16の所定の移動態様による入力を受け付けてゲーム処理を行う。例えば、音楽演奏ゲームであれば、得点パラメータを更新する処理やゲームの進行を制御するパラメータ(ゲームの続行の可否、あるいはクリアの可否を判別するパラメータ)を更新する処理などを行う。また例えば、キャラクタにコントローラ16の所定の移動態様に関連づけられたダンスを行わせる。また例えば、キャラクタの体力パラメータ(ゲームの進行を制御するパラメータの一例)に応じて勝敗を決定する格闘ゲームであれば、通常攻撃よりも相手キャラクタの体力パラメータを大幅に減少させることができる特殊攻撃を自キャラクタに発動させる処理などを行う。また例えば、車などの移動体をコース上で移動させ順位やタイムを競い合うレースゲームであれば、移動体の速度パラメータを加算して移動体を急加速させる処理などを行う。なお、これらのゲーム処理は一例を挙げたに過ぎず、他の態様のゲーム処理についても適宜採用することができる。なお各種ゲームで使用されるパラメータは、記憶部170に記憶される。
判定部114は、コントローラ16の所定の移動態様による入力を受け付ける入力受付期間内に、基準データ記憶部174に記憶されている複数の基準データの中の各基準データの値との間で所与の関係が成立する出力値が予め定められた複数の順序の中のいずれかの順序でセンサ162から出力されたか否かを判定する。「基準データの値との間で所与の関係が成立する出力値」には、基準データの値を超える出力値、基準データの値以上の出力値、基準データの値以下の出力値、あるいは基準データの値を下回る出力値などが該当する。例えば音楽演奏ゲームであれば、所定の移動態様でコントローラ16を移動させることをプレーヤ20に指示する指示標識が表示されている期間(入力受付期間の一例)内に、基準データ記憶部174に記憶されている複数の基準データの中の各基準データの値との間で所与の関係が成立する出力値(詳細には、基準データの値が正の整数である場合には基準データの値以上の出力値、基準データの値が負の整数である場合には基準データの値以下の出力値)が複数の順序の中のいずれかの順序でセンサ162から出力されたか否かを判定する。なお本実施形態では、判定部114は判定処理を1フレーム毎に行うため、判定処理は複数の出力値を用いて行うことになる。また「予め定められた複数の順序」は、プログラム内で設定してもよいし、記憶部170に順序判定用のデータを用意してもよい。
決定部116は、所定の移動態様でのコントローラ16の移動時におけるセンサ162の出力値に基づいて、基準データ記憶部174に記憶される複数の基準データを決定する。例えば、ゲーム開始前に、プレーヤにゲームで使用する移動態様でコントローラ16を移動させ、コントローラ16の移動時におけるセンサ162からの出力値に基づいて複数の基準データを決定し、決定された複数の基準データを基準データ記憶部174に記憶する。
描画部140は、処理部100で行われるゲーム処理などの結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。なお、描画部140が生成する画像は、いわゆる2次元画像であってもよいし、3次元画像であってもよい。
2次元画像を生成する場合には、優先度の高いオブジェクトが優先度の低いオブジェクトの前面に表示されるようにオブジェクトを合成して描画データを作成する。そして、この描画データに基づいて、合成後のオブジェクトを描画バッファ176(フレームバッファあるいは中間バッファなどのピクセル単位で画像情報を記憶できるバッファ。VRAM)に描画して、2次元画像を生成する。
3次元画像を生成する場合には、まず、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、或いは透視変換等のジオメトリ処理を行い、その処理結果に基づいて、描画データ(プリミティブの頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を作成する。そして、この描画データ(プリミティブデータ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ)を描画バッファ176に描画する。これにより、ゲーム空間内において仮想カメラ(所与の視点)から見える画像を生成する。
なお、本実施形態のゲームシステム1は、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、サーバあるいは1つのゲームシステム1を用いて生成してもよいし、ネットワークを介して接続されたサーバや複数のゲームシステム1を用いて分散処理により生成してもよい。
3.本実施形態の手法
次に、図3〜図15を参照しながら本実施形態のゲームシステム1で行われる音楽演奏ゲームの制御手法について説明する。
3−1.音楽演奏ゲームの概要
まず、図3〜図4を参照しながら本実施形態の音楽演奏ゲームの概要について説明する。図3は、本実施形態の音楽演奏ゲームのゲーム画像の一例を示す図であり、図4は、コントローラ座標系の一例を示す図である。
本実施形態の音楽演奏ゲームでは、楽曲の再生に合わせて所定の移動態様でコントローラ16を移動させることをプレーヤ20に指示する指示標識がディスプレイ19に表示されるので、プレーヤ20はこの指示標識で指示された移動態様でコントローラ16を動かすことでダンスの振り付けを行う。
例えば図3に示す例では、プレーヤキャラクタ300とともに、コントローラ16の−y軸方向に重力Gが働く状態でz軸方向を軸として反時計回りに円の移動軌跡でコントローラ16を移動させることを指示する指示標識310がディスプレイ19に表示されている。なお本実施形態では図4に示すように、コントローラ16(加速度センサ30)の座標系は、コントローラ16の左右方向をx軸、コントローラ16の上下方向をy軸、コントローラ16の前後方向(長手方向)をz軸と定義しており、コントローラ16の−y軸方向に重力Gが働く状態を基準としてコントローラ16を移動させることを想定している。
そしてプレーヤ20が、この指示標識310で指示された移動態様でコントローラ16を動かすと、プレーヤキャラクタ300がコントローラ16の動きに合わせて、左腕305を指示標識310で指示された方向に回転させて、プレーヤ20の操作に対応したダンスを再現する。
また、指示標識310がディスプレイ19に表示されている間に、指示標識310で指示された移動態様によるコントローラ16の移動が行われた場合には、「GREAT!」などとプレーヤ20の操作を高評価する表示が行われ、得点が加算される。一方、指示標識310がディスプレイ19に表示されている間に、指示標識310で指示された移動態様によるコントローラ16の移動が行われなかった場合には、「BAD!」などとプレーヤ20の操作を酷評する表示が行われ、得点は加算されない。
このように本実施形態では、プレーヤ20が指示標識で指示された移動態様でコントローラ16を動かすことで、あたかもプレーヤ20自身がダンサーとなってダンスの振り付けを行っているかのような仮想現実感が高められたゲームを楽しむことができる。
3−2.入力判定手法
次に、図5〜図14を参照しながら本実施形態の入力判定手法について説明する。
本実施形態の音楽演奏ゲームでは、コントローラ16の幅広い移動態様を許容するために、指示標識において移動開始位置や移動終了位置を指定していない(図3参照)。ところで、コントローラ16を移動させる際の移動開始位置や移動終了位置が異なることになると、コントローラ16の移動時に加速度センサ30から出力される出力値(加速度ベクトル)も全く異なるものになる。この点、図5を参照しながら説明する。図5は、コントローラ16の移動開始位置の相違による加速度センサ30の出力値の相違を説明するための図である。
−y軸方向に重力Gが働く状態でz軸方向を軸として反時計回りにコントローラ16を移動させる場合、ポイント312の位置では−x軸方向にコントローラ16を移動させることになる。この際加速度センサ30(コントローラ16)には+x軸方向の慣性力が働くため、加速度センサ30はx成分において+の出力値を出力する。また加速度センサ30には−y軸方向の重力Gも働くため、y成分において−の出力値も出力する。
また、ポイント314の位置では−y軸方向にコントローラ16を移動させることになる。この際加速度センサ30には、+y軸方向の慣性力とともに−y軸方向の重力Gが働くため、加速度センサ30はy成分において+の出力値、あるいはコントローラ16の静止時におけるy成分の出力値よりも絶対値の小さい−の出力値を出力する。
また、ポイント316の位置では+x軸方向にコントローラ16を移動させることになる。この際加速度センサ30には−x軸方向の慣性力が働くため、加速度センサ30はx成分において−の出力値を出力する。また加速度センサ30には−y軸方向の重力Gも働くため、y成分において−の出力値も出力する。
また、ポイント318の位置では+y軸方向にコントローラ16を移動させることになる。この際加速度センサ30には、−y軸方向の慣性力とともに−y軸方向の重力Gが働くため、加速度センサ30はy成分においてコントローラ16の静止時におけるy成分の出力値よりも絶対値の大きい−の出力値を出力する。
このように、コントローラ16の移動位置(移動方向)に応じて加速度センサ30の出力値は異なる値となるため、コントローラ16を移動させる際の移動開始位置や移動終了位置が異なることになると、コントローラ16の移動を開始してから移動を終了するまでの間に加速度センサ30から出力される出力値も全く異なるものとなる。そして、どの位置からコントローラ16の移動が開始されても対応できるように、コントローラ16の移動開始位置および移動終了位置に応じた判別データを用意するとなると、データ量が膨大になってしまうとともに判別処理も煩雑になってしまう。
そこで本実施形態では、コントローラ16の所定の移動態様に関連付けられた複数の基準データを基準データ記憶部174に記憶し、この複数の基準データの中の各基準データの値との間で所与の関係が成立する出力値(詳細には、基準データの値が正の整数である場合には基準データの値以上の出力値、基準データの値が負の整数である場合には基準データの値以下の出力値)が予め定められた複数の順序の中のいずれかの順序で加速度センサ30から出力された場合に、コントローラ16の所定の移動態様による入力が行われたものと判別する手法を採用している。以下、図6〜図8を参照しながら具体的に説明する。図6は、指示標識310で指示された移動態様の入力判定を行う際に使用される基準データの一例を示す図であり、図7は、図6の基準データによって特定されるコントローラ16の移動方向を説明するための図であり、図8は、図6の基準データを満足する順序を示す図である。
本実施形態では、図6に示す基準データA〜基準データHを用いて、指示標識310で指示された移動態様によるコントローラ16の移動が行われたか否かを判別する。なお、x軸方向には重力Gが働かないため、基準データA〜基準データHのx成分の値はy軸を基準に対称となっているが、y軸方向には重力Gが働くため、基準データA〜基準データHのy成分の値はx軸を基準に対称となっていない。
基準データAでは、x成分の値が1.0に設定され、y成分およびz成分の値が0.0に設定されている。つまり基準データAは、図7に示す矢印321の方向にコントローラ16が移動されたか否かを判別するデータであり(矢印321の方向(−x軸方向)にコントローラ16を移動させると、矢印321の逆方向である+x軸方向に慣性力が働く。この結果、加速度センサ30はx成分において+の出力値を出力するため)、加速度センサ30からx成分において1.0以上の出力値が出力された場合に基準データAを満足したと判定される。
基準データBでは、x成分およびy成分の値が0.5に設定され、z成分の値が0.0に設定されている。つまり基準データBは、図7に示す矢印322の方向にコントローラ16が移動されたか否かを判別するデータであり、加速度センサ30からx成分およびy成分において0.5以上の出力値が同時に出力された場合に基準データBを満足したと判定される。
基準データCでは、y成分の値が1.0に設定され、x成分およびz成分の値が0.0に設定されている。つまり基準データCは、図7に示す矢印323の方向にコントローラ16が移動されたか否かを判別するデータであり、加速度センサ30からy成分において1.0以上の出力値が出力された場合に基準データCを満足したと判定される。
基準データDでは、x成分の値が−0.5に設定され、y成分の値が0.5に設定され、z成分の値が0.0に設定されている。つまり基準データDは、図7に示す矢印324の方向にコントローラ16が移動されたか否かを判別するデータであり、加速度センサ30からx成分において−0.5以下の出力値が出力されるのと同時にy成分において0.5以上の出力値が出力された場合に基準データDを満足したと判定される。
基準データEでは、x成分の値が−1.0に設定され、y成分およびz成分の値が0.0に設定されている。つまり基準データEは、図7に示す矢印325の方向にコントローラ16が移動されたか否かを判別するデータであり、加速度センサ30からx成分において−1.0以下の出力値が出力された場合に基準データEを満足したと判定される。
基準データFでは、x成分の値が−0.5に設定され、y成分の値が−0.3に設定され、z成分の値が0.0に設定されている。つまり基準データFは、図7に示す矢印326の方向にコントローラ16が移動されたか否かを判別するデータであり、加速度センサ30からx成分において−0.5以下の出力値が出力されるのと同時にy成分において−0.3以下の出力値が出力された場合に基準データFを満足したと判定される。
基準データGでは、加速度ベクトルのy成分の値が−0.5に設定され、x成分およびz成分の値が0.0に設定されている。つまり基準データGは、図7に示す矢印327の方向にコントローラ16が移動されたか否かを判別するデータであり、加速度センサ30からy成分において−0.5以下の出力値が出力された場合に基準データGを満足したと判定される。
基準データHでは、加速度ベクトルのx成分の値が0.5に設定され、y成分の値が−0.3に設定され、z成分の値が0.0に設定されている。つまり基準データHは、図7に示す矢印328の方向にコントローラ16が移動されたか否かを判別するデータであり、加速度センサ30からx成分において0.5以上の出力値が出力されるのと同時にy成分において−0.3以下の出力値が出力された場合に基準データHを満足したと判定される。
そして、図8に示すいずれかの順序で基準データA〜基準データHを満足した場合には、図7から明らかなようにコントローラ16は−y軸方向に重力Gが働く状態でz軸方向を軸として反時計回りに円の移動軌跡で移動されたことになるため、指示標識310で指示された移動態様によるコントローラ16の移動が行われたものと判定される。
このように本実施形態では、指示標識310で指示された移動態様によるコントローラ16の移動が行われた否かを、基準データ記憶部174に記憶された基準データA〜基準データHの各基準データの値を図8に示す複数の順序の中のいずれかの順序で満足したか否かで判定するため、コントローラ16の移動開始位置に関係なく、指示標識310で指示された移動態様によるコントローラ16の移動が行われたことを認識できる。
なお、−y軸方向に重力Gが働く状態でz軸方向を軸として反時計回りにコントローラ16を移動させた際の加速度センサ30の出力値に基づいて、基準データ記憶部174に記憶される基準データA〜基準データHを決定するようにしてもよい。この場合には、ゲーム開始前に、プレーヤ20に−y軸方向に重力Gが働く状態でz軸方向を軸として反時計回りにコントローラ16を移動させ、コントローラ16の移動時における加速度センサ30の出力値から、基準データ記憶部174に記憶される基準データA〜基準データHを決定すればよい。例えば、基準データAであれば、コントローラ16の移動時における加速度センサ30の出力値の中から最も値の大きいx成分を採用すればよい。なお、基準データの値を満足し易くするために、採用された速度センサ30の出力値を調整した値(採用された速度センサ30の出力値を大きくした値や小さくした値)を基準データとしてもよい。このようにすると、プレーヤ20によるコントローラ16の移動に適した基準データA〜基準データHを設定することができるようになる。
さて、これまでは図4に示すように、−y軸方向に重力Gが働く状態を基準としてコントローラ16を移動させることを想定して説明してきたが、続いて図9に示すように、コントローラ16の−z軸方向に重力Gが働く状態を基準としてコントローラ16を移動させる場合について図9〜図14を参照しながら説明する。図9は、コントローラ座標系の一例を示す図であり、図10は、本実施形態の音楽演奏ゲームのゲーム画像の一例を示す図であり、図11は、指示標識340で指示された移動態様の入力判定を行う際に使用される基準データの一例を示す図であり、図12は、図11の基準データを満足する順序を示す図であり、図13は、図11の基準データによって特定されるコントローラ16の移動方向を説明するための図であり、図14は、指示標識340で指示された移動態様でコントローラ16を動かす際に許容されるコントローラ16の向きの一例を示す図である。
例えば図10に示す例では、プレーヤキャラクタ300とともに、コントローラ16の−z軸方向に重力Gが働く状態でz軸方向を軸として反時計回りに円の移動軌跡でコントローラ16を移動させることを指示する指示標識340がディスプレイ19に表示されている。
そして、図11に示す基準データA’〜基準データH’を用いて、指示標識340で指示された移動態様によるコントローラ16の移動が行われたか否かを判別しており、図12に示すいずれかの順序で基準データA’〜基準データH’を満足した場合には、図13から明らかなようにコントローラ16は−z軸方向に重力Gが働く状態でz軸方向を軸として反時計回りに円の移動軌跡で移動されたことになるため、指示標識340で指示された移動態様によるコントローラ16の移動が行われたものと判定される。
なお詳細な説明は省略するが、基準データA’は、図13に示す矢印351の方向にコントローラ16が移動されたか否かを判別するデータであり、基準データB’は、図13に示す矢印352の方向にコントローラ16が移動されたか否かを判別するデータであり、基準データC’は、図13に示す矢印353の方向にコントローラ16が移動されたか否かを判別するデータであり、基準データD’は、図13に示す矢印354の方向にコントローラ16が移動されたか否かを判別するデータであり、基準データE’は、図13に示す矢印355の方向にコントローラ16が移動されたか否かを判別するデータであり、基準データF’は、図13に示す矢印356の方向にコントローラ16が移動されたか否かを判別するデータであり、基準データG’は、図13に示す矢印357の方向にコントローラ16が移動されたか否かを判別するデータであり、基準データH’は、図13に示す矢印358の方向にコントローラ16が移動されたか否かを判別するデータである。
そして、図14(A)に示すコントローラ16の向きでコントローラ16を矢印に沿って(−z軸方向に重力Gが働く状態でz軸方向を軸として反時計回りに円の移動軌跡で)移動させる場合には、A’→B’→C’→D’→E’→F’→G’→H’の順序で基準データを満足することになる。
ところで、−z軸方向に重力Gが働く状態とした場合、x軸方向およびy軸方向には重力Gが働かないため、基準データA’〜基準データH’の座標は、z軸を中心に回転すると90度、180度、270度、360度で回転対称となる。即ち、基準データA’〜基準データH’の座標は、4回回転対称となる。なお「回転対称」とは、軸を中心に移動軌跡(座標)を回転させる場合に、回転前と回転後とで移動軌跡(座標)が一致することをいい、「4回回転対称」とは、軸を中心に移動軌跡(座標)を0度〜360度の範囲で回転させた場合に、4回移動軌跡(座標)が一致することをいう。
また円の移動軌跡は、軸を中心に0度〜360度のいずれの角度で回転させた場合であっても回転前と回転後とで移動軌跡(座標)が一致する。
従って、指示標識340で指示された移動態様でコントローラ16を移動させる場合には、−z軸方向に重力Gが働く状態としていれば、コントローラ16の移動開始位置だけでなく、コントローラ16の傾き(向き)も関係なくコントローラ16の移動態様を適切に認識できるようになる。
例えば、図14(A)に示すコントローラ16の向きからz軸方向を軸として反時計回りに0度〜45度回転させた状態(図14(B)に45度回転させた状態を示す)でコントローラ16を矢印に沿って移動させる場合には、H’→A’→B’→C’→D’→E’→F’→G’の順序で基準データを満足することになる。
また、図14(A)に示すコントローラ16の向きからz軸方向を軸として反時計回りに45度〜90度回転させた状態(図14(C)に90度回転させた状態を示す)でコントローラ16を矢印に沿って移動させる場合には、G’→H’→A’→B’→C’→D’→E’→F’の順序で基準データを満足することになる。
また、図14(A)に示すコントローラ16の向きからz軸方向を軸として反時計回りに90度〜135度回転させた状態(図14(D)に135度回転させた状態を示す)でコントローラ16を矢印に沿って移動させる場合には、F’→G’→H’→A’→B’→C’→D’→E’の順序で基準データを満足することになる。
また、図14(A)に示すコントローラ16の向きからz軸方向を軸として反時計回りに135度〜180度回転させた状態(図14(E)に180度回転させた状態を示す)でコントローラ16を矢印に沿って移動させる場合には、E’→F’→G’→H’→A’→B’→C’→D’の順序で基準データを満足することになる。
また、図14(A)に示すコントローラ16の向きからz軸方向を軸として反時計回りに180度〜225度回転させた状態(図14(F)に225度回転させた状態を示す)でコントローラ16を矢印に沿って移動させる場合には、D’→E’→F’→G’→H’→A’→B’→C’の順序で基準データを満足することになる。
また、図14(A)に示すコントローラ16の向きからz軸方向を軸として反時計回りに225度〜270度回転させた状態(図14(G)に270度回転させた状態を示す)でコントローラ16を矢印に沿って移動させる場合には、C’→D’→E’→F’→G’→H’→A’→B’の順序で基準データを満足することになる。
また、図14(A)に示すコントローラ16の向きからz軸方向を軸として反時計回りに270度〜315度回転させた状態(図14(H)に315度回転させた状態を示す)でコントローラ16を矢印に沿って移動させる場合には、B’→C’→D’→E’→F’→G’→H’→A’の順序で基準データを満足することになる。
また、図14(A)に示すコントローラ16の向きからz軸方向を軸として反時計回りに315度〜360度回転させた状態でコントローラ16を矢印に沿って移動させる場合には、A’→B’→C’→D’→E’→F’→G’→H’の順序で基準データを満足することになる。
なお本実施形態では、軸を中心に0度〜360度のいずれの角度で回転させた場合であっても回転前と回転後とで移動軌跡が一致する円を採用したが、例えば、4回回転対称の移動軌跡である正方形を移動軌跡として採用してもよい。この場合には、正方形の移動軌跡に関連づけられた複数の基準データの座標を4回回転対称とすれば、コントローラ16の向きを90度、180度、270度、360度回転させた状態で、コントローラ16を正方形の移動軌跡で移動させても、コントローラ16の移動態様を適切に認識できるようになる。
3−3.本実施形態の処理
次に、図15を参照しながら本実施形態の処理の一例について説明する。図15は、本実施形態の処理の一例を説明するためのフローチャート図である。
ゲームシステム1は、複数のゲームステージの中からプレーヤがプレイするゲームステージが選択されると、選択されたゲームステージに応じた楽曲の再生などを行い、音楽演奏ゲームを開始する(ステップS10)。
続いて、所定の移動態様でコントローラ16を移動させることをプレーヤ20に指示する指示標識をディスプレイ19に表示し(ステップS12でY)、指示標識が表示されている間に、複数の基準データの中の各基準データとの間で所与の関係が成立する出力値が予め定められた複数の順序の中のいずれかの順序で加速度センサ30から出力されたか否かを判定し(ステップS14)、出力されたと判定された場合には(ステップS14でY)、得点を加算する(ステップS16)。
そして、楽曲の再生が終了するまで、ステップS12〜ステップS16の処理を繰り返し行い(ステップS18でN)、楽曲の再生が終了すると音楽演奏ゲームを終了する(ステップS18でY)。
4.変形例
本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。また上記実施形態で説明した構成は、一例を示したに過ぎず、上記実施形態の構成と同様の効果を奏する均等な手法を採用した場合においても本発明の範囲に含めることができる。
例えば上記実施形態では、2軸(x軸およびy軸)にまたがる移動態様である円の移動軌跡を例にとり入力判定手法を説明したが、3軸にまたがる移動態様や、1軸(x軸、y軸、あるいはZ軸)での移動についてもこの入力判定手法を適用することができる。例えば、−y軸方向に重力Gが働く状態でコントローラ16を左右(x軸方向)に振る場合には、図6の基準データAと基準データEを複数の基準データとし、A→Eの順序、あるいはE→Aの順序で基準データを満足すれば、コントローラ16の左右への振りが行われことを判別できる。
また上記実施形態では、z軸方向を軸として反時計回りでコントローラ16を移動させることを例にとり説明したが、z軸方向を軸として時計回りでコントローラ16を移動させるようにしてもよい。この場合には、図8や図12に示す順序を逆にすることで対応できる。例えば図8に示す、A→B→C→D→E→F→G→Hの順序であれば、H→G→F→E→D→C→B→Aとすればよい。また、コントローラ16を移動させる方向を指定せずに、時計回り、反時計回りの両方に対応するようにしてもよい。
また上記実施形態では、指示標識をディスプレイ19に表示することで所定の移動態様でコントローラ16を移動させることをプレーヤ20に報知していたが、スピーカから指示音を出力したり、ディスプレイ19の輝度を高くして画面を明るくすることで所定の移動態様でコントローラ16を移動させることをプレーヤ20に報知してもよい。またコントローラ16にバイブレータを内蔵し、このバイブレータを振動させることで報知してもよいし、コントローラ16にスピーカを設け、このスピーカから指示音を出力することで報知してもよい。また、例えば格闘ゲームにおいて、所定の移動態様でコントローラ16を移動させると特殊攻撃を自キャラクタに発動させる場合や、レースゲームにおいて、所定の移動態様でコントローラ16を移動させると移動体を急加速させる場合には、所定の移動態様でコントローラ16を移動させることをプレーヤ20に報知しなくてもよい。
また上記実施形態では、指示標識がディスプレイ19に表示されている期間を入力受付期間として説明したが、例えば、指示標識表示後に更に指示標識を光らせることで、この指示標識を光らせる期間を入力受付期間としてもよい。
また、上記実施形態の各部(各手段)の処理は、その全てをハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。そして、本実施形態の各部の処理をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。
また上記実施形態では、音楽演奏ゲームを例にとり説明したが、格闘ゲーム、アクションゲーム、レースゲーム、スポーツゲーム、ロールプレイングゲーム、シューティングゲーム、パズルゲーム等の種々のゲームに本手法を採用することができる。
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、携帯型ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、携帯電話等の種々のゲームシステムに適用できる。