ゲーム制御プログラム、ゲーム制御方法およびゲーム装置
【課題】特殊な入力装置を用いることなく、広く流通している汎用性の高い操作装置を用いて、操作入力に必要なボタンあるいは台の特定の箇所を覚えることなく操作を可能とするゲームプログラムおよびゲーム装置を提供する。
【解決手段】振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段を備えたゲーム装置であって、制御手段が、最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算手段と、最新の検出値を含む連続したn個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算手段と、nサンプル平均演算手段により得られた平均値からmサンプル平均演算手段により得られた平均値を減算して差分値を求める差分演算手段と、該差分演算手段により得られた差分値と予め設定された閾値に基づいて入力手段への振動入力操作の有無を判定する入力判定手段と、を備えている。
【解決手段】振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段を備えたゲーム装置であって、制御手段が、最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算手段と、最新の検出値を含む連続したn個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算手段と、nサンプル平均演算手段により得られた平均値からmサンプル平均演算手段により得られた平均値を減算して差分値を求める差分演算手段と、該差分演算手段により得られた差分値と予め設定された閾値に基づいて入力手段への振動入力操作の有無を判定する入力判定手段と、を備えている。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プレイヤーの振動入力操作を加速度センサ等の振動検出手段を備えた入力検出手段により検出し、この検出された入力信号に基づいたゲーム処理をゲーム装置のコンピュータに実行させるゲーム制御プログラム、ゲーム制御方法およびそのゲーム装置に関するものである。
【背景技術】
【0002】
従来、アーケードゲーム等のゲーム装置において音楽ゲーム等を行うためのプレイヤーの操作の入力手段として、楽器を模したコントローラを使用するものが知られている。例えば、特許文献1には、ギター等の弦楽器、ドラム等の打楽器、あるいはピアノ等鍵盤楽器を模したコントローラを用いて、ゲームを進行させる発明が開示されている。
【0003】
また、家庭用ゲーム機用のコントローラとして、素手で叩くコンガのような打楽器、または、バチで叩く太鼓のような打楽器を模したコントローラを用いて、プレイヤーが入力装置を叩く動作により生ずる振動により、プレイヤーの操作入力を検出するゲーム装置も知られている(特許文献2、特許文献3参照)。
【0004】
また、例えば、特許文献4には、複数の操作ボタンを備え、内部に加速度センサ等の振動検出手段を備えた汎用のゲーム装置用コントローラに関する発明が開示されている。
【0005】
【特許文献1】特開2000−126460号公報
【特許文献2】特開2007−325916号公報
【特許文献3】特開2004−313764号公報
【特許文献4】特開2007−313354号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記特許文献1に開示されているような入力手段を用いたゲームを家庭で行おうとすると、大掛かりな装置を購入して屋内に設置しなければならず、価格的にも、設置スペース的にも、一般的な家庭においては困難な要因が多々あり、現実味に乏しい。
【0007】
また、特許文献2および特許文献3に開示されているような入力手段は、上記特許文献1に開示されているものよりもコンパクトに設計され得るが、特定のゲームに対する専用の入力装置であるので、他のゲームで使用することができず、不使用時の収納場所を確保しなければならない等の課題があった。
【0008】
また、特許文献4に開示されているような入力手段は、複数の操作ボタンを備え、多機能で汎用性に富む一方、各操作ボタンの位置や、各操作ボタンに割り当てられるゲームごとの機能等を熟知していないと、十分に使いこなすことができない。また、コントローラを常に保持している必要があり、何らかの理由によりコントローラを保持することができない者、また、普段長時間ゲームコントラーラを保持したことの無いようなゲームの初心者にとっては少なからぬ負担となり、ゲームに対する興味を減らす一因となっていた。
【0009】
また、一般的な加速度センサ等を備えたコントローラを使用したとき、単純に振動の有無のみを検出する場合であれば問題ないが、加速度センサの加速度検出信号(検出値)のみで入力振動の向き(入力された方向)を検出しようとすると、ある程度以上の強さの振動入力があった場合には、一般の加速度検出手段による振動検知の場合、入力があった方向に対して、「揺り戻し」や「揺り返し」と呼ばれる検出手段が元の位置に戻ろうとする逆方向の信号が一瞬本来の入力タイミングの直後、又は直前に発生することがある為、制御手段側では本来の意図として入力された信号を検出した後に、本来の意図とは逆向きの誤認識入力を検出させてしまう場合がある。
また、ゲーム装置本体とコントローラ装置を無線にて接続(無線通信にて信号の授受を行なっている)ため、関係の無いノイズ電波を受信したりする場合もある。
【0010】
例えば、キャラクターの移動をさせるような一般的なアクションゲーム等においては、プレイヤーの操作するキャラクターの移動入力が主制御装置が画面書き換えに必要とする最小単位である一単位時間(おおよそ1/30秒から1/60秒)の間だけ逆方向に誤認識されても、ほとんどゲームの進行に支障はないが、伴奏に合わせて非常に短い間隔を基準として正確な入力をすることを競ういわゆる音楽ゲームや、より早く正解となる入力を行ういわゆるクイズゲームや反射神経訓練系トレーニングゲーム等においては、正確な入力を連続的に行うことによるゲーム性が重要視されるため、上記したようなプレイヤーの意に反した逆向きの誤認識信号が発生すると、ゲームの性質上当該プレイヤーはその時点で間違い入力をしたという判定となり、結果としてプレイヤーは一気にゲームに対する興趣を損ねてしまうという課題があった。
【0011】
本発明はこのような従来の問題に鑑みてなされたものであって、特殊な入力装置を用いることなく、広く流通している汎用性の高い操作装置を用いて、操作入力に必要な複数のボタンおよびこれらに割り当てられた機能を覚えることなく操作を可能とするゲーム制御プログラム、ゲーム制御方法およびゲーム装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
上記した従来の課題を解決するために請求項1に記載の発明は、所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段としてコンピュータを機能させるためのゲーム制御プログラムであって、前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算処理と、前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算処理と、前記nサンプル平均演算処理により得られたn個の検出値の平均値から前記mサンプル平均演算処理により得られたm個の検出値の平均値を減算して差分値を求める差分演算処理と、該差分演算処理により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定処理と、を前記コンピュータに実行させることを特徴とする。
【0013】
請求項2に記載の発明は、所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御するゲーム制御方法であって、前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算ステップと、前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算ステップと、前記nサンプル平均演算ステップにより得られたn個の検出値の平均値から前記mサンプル平均演算ステップにより得られたm個の検出値の平均値を減算して差分値を求める差分演算ステップと、該差分演算ステップにより得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定ステップと、を備えてなることを特徴とする。
【0014】
請求項3に記載の発明は、所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段を備えたゲーム装置であって、前記制御手段は、前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算手段と、前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算手段と、前記nサンプル平均演算手段により得られたn個の検出値の平均値から前記mサンプル平均演算手段により得られたm個の検出値の平均値を減算して差分値を求める差分演算手段と、該差分演算手段により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定手段と、を備えてなることを特徴とする。
【0015】
請求項4に記載の発明は、請求項1に記載のゲーム制御プログラムを格納した情報記憶媒体である。
【0016】
本願の特許請求の範囲および明細書の記載において、振動検出手段とは、例えば、加速度センサやジャイロセンサ等の、印加された振動入力を検出して、その振動の向きおよび大きさに対応した検出信号を出力し得る手段を意味する。したがって、検出した入力振動をそのままベクトル量として出力するものでも良いし、検出したベクトル量を演算処理して所定の振動値として出力するものでも良い。また、入力検出手段とは、少なくとも、上記振動検出手段を備えた入力検出装置を意味し、制御手段に入力振動の検出値を出力する機能を有し、例えば、家庭用ゲーム機に汎用性の高いリモコンやゲームコントローラなどを広く含む。
【0017】
また、入力手段とは、少なくとも、プレイヤーが振動入力操作可能な操作面を備え、操作面に入力された振動を入力検出手段の振動検出手段に伝播可能なものであれば良い。例えば、机やテーブルの天板自体が振動を検知しでも良いし、その上に検出手段コントローラを載置する形態でも良いし、段ボール箱や金属板製の台等でも良い。
【0018】
振動検出手段は、少なくとも、入力手段に入力検出手段が載置されたとき、振動検出手段の位置を原点として1軸方向の振動の検出が可能なものであれば良い。例えば、振動検出手段の位置を原点として入力手段の左右方向に有効な検出軸を有する場合、入力手段への振動操作入力の入力位置が振動検出手段の右側であるか左側であるか(例えば、右側の入力に対して+の値、左側の入力に対して−の値等)を識別可能な検出値を出力する。また、有効な検出軸を上記した左右方向の1軸とこれに対して入力手段の入力面上で直交する前後方向に有効な1軸との2軸を有する振動検出手段を用いてもよい。さらに、上記した左右方向、前後方向の2軸に加えて、入力面に直交する上下方向の1軸を加えた、有効な検出軸を各々直交する3軸方向に有する振動検出手段を用いることもできる。
【0019】
なお、情報記憶媒体とは、例えば、光ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、RAM、ROMなど、コンピュータ等において読み取り可能なプログラムを格納(記憶)可能な媒体を広く含む。
【発明の効果】
【0020】
本発明によれば、少なくとも振動検出手段を備えた汎用性の高い家庭用ゲーム機の入力検出手段(リモコン、ゲームコントローラ等)とこの入力検出手段が載置可能で振動入力操作が可能な操作面を有する入力手段(机、空き箱等)により構成し得る入力装置から得られる入力検出信号(検出値)を用いてゲームの制御を行うことができるので、大規模な入力装置や特殊なゲーム専用の入力装置を使用することなく、多彩なゲームを楽しむことができる。
【0021】
また、入力操作が、入力手段の操作面に振動を加える、例えば、操作面の一部を指で叩く等の簡単な操作で可能なので、汎用のコントローラ等に備えられた複数の操作ボタンの位置や割り当てられている機能等を逐一覚える必要がなく、初心者や敏速なボタン操作が苦手な者でも、入力操作にかかるハンデが少ないゲーム装置を提供することができる。
【0022】
また、制御手段が、入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の移動平均値を求めるnサンプル平均演算処理と、入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の移動平均値を求めるmサンプル平均演算処理と、nサンプル平均演算処理により得られたn個の検出値の平均値から前記mサンプル平均演算処理により得られたm個の検出値の移動平均値を減算して差分値を求める差分演算処理と、この差分演算処理により得られた差分値と予め設定された閾値に基づいて入力手段への振動入力操作の有無を判定する入力判定処理と、をコンピュータに実行させるので、例えば、nを2〜4程度の時系列的に短期間でサンプリングした短期のサンプル数として設定し、mを16〜32程度の時系列的に長期間についてサンプリングした長期のサンプル数として設定することができ、これらの平均値の差分値を操作入力振動の有効性の判定に用いることにより、入力手段へのプレイヤーの操作入力とプレイヤーが意図しない外乱ノイズによる振動とを精度良く識別することができる。
【0023】
すなわち、nサンプル平均演算処理により、入力検出手段から得られる生の検出値を短期の少ないサンプル数の検出値で平滑化した、生の検出値のトレンド(傾向)に近い演算値(平均値)が得られる。一方、mサンプル平均演算処理により、入力検出手段から得られる生の検出値をn個より十分に多い長期のサンプル数で平滑化した、ほぼ入力振動が0のときに近いレベルの演算値(平均値)が得られる。そして、差分演算処理によりnサンプル平均演算処理により得られたn個の検出値の平均値からmサンプル平均演算処理により得られたm個の検出値の平均値を減算して差分値を求め、入力判定処理において差分演算処理により得られた差分値と予め設定された閾値に基づいて入力手段への振動入力操作の有無を判定するので、信頼性の高い振動入力操作の判定が可能となる。
【0024】
これにより、瞬発的な外乱ノイズ等をプレイヤーの入力操作による有効な入力振動値として誤認識する可能性を低くすることができ、例えば、音楽ゲーム等の入力判定手段として誤認識の極めて少ないゲーム装置を提供することができる。
【発明を実施するための最良の形態】
【0025】
以下、本発明の一実施形態について、図面を参照して説明する。図1は、本実施形態に係るゲーム装置を用いたゲームシステム1を説明するための説明図(外観図)である。
【0026】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下「モニタ」という)2に、接続コードを介して接続される据え置き型ゲーム装置(以下「ゲーム装置」という)3、当該ゲーム装置3に操作情報を与えるコントローラ7、および、コントローラ7を載置する載置台8によって構成される。ゲーム装置3には、接続端子を介して受信ユニット6が接続される。
【0027】
受信ユニット6は、コントローラ7から無線通信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3には、それぞれ図示しない当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、および光ディスク4を脱着可能なディスクトレーを開かせるOPENスイッチ等が設けられている。ここで、プレイヤーがOPENスイッチを押下することによってディスクトレーがゲーム装置3の内部から外部に導出され、光ディスク4の脱着が可能となる。再び、光ディスク4を脱着した後、ディスクトレーをゲーム装置3に格納することで、ゲーム装置3は光ディスク4の読み取りが可能となる。なお、コントローラ7は本実施形態における入力検出手段であり、載置台8は本実施形態における入力手段である。
【0028】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱可能に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムや操作入力手段からの入力信号に基づいてゲームを実行し、その結果をゲーム画像として表示手段であるモニタ2に表示する。
【0029】
さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去にプレイヤーが実行したゲーム状態を再現して、その結果をゲーム画像として表示手段であるモニタ2に表示することができる。そして、ゲームのプレイヤーは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を引き続き実行することができる。
【0030】
コントローラ7は、その内部に備える通信部75(後述する)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて送信データを無線通信する。コントローラ7は、主にモニタ2に表示されるゲーム空間に登場するプレイヤーオブジェクトを操作するための操作手段である。コントローラ7には、複数の操作ボタン、方向キー、および、スティック等の操作部が設けられている。
【0031】
載置台8は、コントローラ7を載置する載置面8bとプレイヤーが操作する操作面8aを備え、プレイヤーがこの載置台8の操作面8aを叩くことにより載置台8に振動が生じ、その載置台8の振動がコントローラ7に伝わり、そのコントローラ7に伝わった振動を後述するコントローラ7に内蔵された加速度センサ73により検知させるためのものである。
【0032】
本実施形態においては、ボール紙等で作られた箱型状の載置台8を用いている。なお、載置台8をプレイヤーが叩いたときにコントローラ7に振動が伝わる材質(例えば、ボール紙などで作られた箱、木材などの板状のもの)であれば特に材質はボール紙等に限定されるものではない。ただし、載置台8にプレイヤーが与えた振動が吸収されてしまうような振動を伝わらせ難い軟らかい素材は、あまり好ましくない。また形状についても箱型に限定されず、例えば、板状(木材等)のものであってもよい。
【0033】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0034】
図2において、ゲーム装置3は、各種プログラムを実行する、例えば、CPU(Central Processing Unit)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、および、ARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、および、ディスクI/F41が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、および、ディスクドライブ40が接続されている。
【0035】
GPU32は、CPU30の命令に基づいて画像処理を行うものであり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。なお、CPU30ならびにGPU32は、本実施形態における制御手段の一例に該当する。
【0036】
メインメモリ33は、CPU30で使用される記憶領域であって、図示しないROM(Read Only Memory)とRAM(Random Access Memory)からなり、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0037】
図3に示すように、ゲームプログラムPには、載置判定プログラムP1、基準振動開始プログラムP2、基準振動検知プログラムP3、固有振動値算出プログラムP4、補正値算出プログラムP5、入力振動値演算プログラムP6、入力判定プログラムP7、補正値操作変換プログラムP8、関連振動設定プログラムP9等のプログラムが含まれている。CPU30は、これらのプログラムを適宜読み込んで各種の処理を実行する。
【0038】
載置判定プログラムP1は、ゲームスタート時にコントローラ7の加速度センサ73(図5(a)参照)が所定時間(例えば、5秒程度)、所定の値(いわゆる暗振動の検出値)より大きな加速度(振動)を検出しなかった場合に、載置台8にコントローラ7が載置されたことを確認するためのプログラムである。なお、コントローラ7が載置されたことが確認できなかった場合、上記に加えてモニタ2にコントローラ7の載置を促すメッセージを適宜表示させることも可能である。
【0039】
基準振動開始プログラムP2は、上記載置判定プログラムP1の起動後に、コントローラ7の振動発生器74(図5(b)参照)を作動させて、一定時間(例えば、1秒程度)、載置台8に基準振動を与えるためのプログラムである。
【0040】
基準振動検知プログラムP3は、上記基準振動開始プログラムP2により載置台8基準振動をコントローラ7の加速度センサ73が検出し、コントローラ7から送信される検出値を受信してメインメモリ33の所定の記憶領域に記憶する処理を行うプログラムである。
【0041】
固有振動値算出プログラムP4は、上記基準振動検知プログラムP3によりメインメモリ33に記憶された検出値に基づいて、載置台8における固有の振動値を算出するプログラムである。この固有振動値算出プログラムP4は、メインメモリ33に記憶された複数(例えば、5サンプル)の検出値の平均値を求めることにより、載置台8における固有の振動値を算出する。
【0042】
補正値算出プログラムP5は、上記固有振動値算出プログラムP4に基づいて算出された載置台8の固有の振動値に基づき補正値を算出するプログラムである。この補正値算出プログラムP5により算出された補正値を用いて、後述する補正値操作変換プログラムP8で補正された振動値に基づく処理を行うことができる。より具体的には、載置台8における振動値に補正値を加えることで、載置台8の素材によって、プレイヤー自身が載置台8に与える振動の強さを加減する必要がなくなる。すなわち、載置台8の材質が軟らかい素材(振動が伝わり難い素材)であっても、硬い素材(振動が伝わり易い素材)であっても、プレイヤーがとりわけ叩く強さを変更する必要がないように構成されている。
【0043】
入力振動値演算プログラムP6は、プレイヤーの入力操作が加速度センサ73により検出されて、コントローラ7からゲーム装置3に送信される連続する複数の検出値に基づいて入力判定のための振動値を演算処理するためのプログラムであり、サブプログラムとして、nサンプル平均演算プログラムP6aと、mサンプル平均演算プログラムP6bと、差分演算プログラムP6cを備えている。本実施形態においてnサンプル平均演算プログラムP6aおよびmサンプル平均演算プログラムP6bは、それぞれ、nサンプル平均演算手段およびmサンプル平均演算手段である。また、差分演算プログラムP6cは、本実施形態における差分演算手段である。
【0044】
nサンプル平均演算プログラムP6aは、コントローラ7(入力検出手段)により得られた最新の検出値とその直前の検出値との平均値を求める演算処理を行うプログラムである。本実施形態においては、サンプリング数をn=2としている。具体的には、プレイヤーにより入力される入力振動に対してコントローラ7から得られた最新の検出値Vnとその直前の検出値Vn−1の平均値を求める演算処理を行う。
【0045】
mサンプル平均演算プログラムP6bは、コントローラ7(入力検出手段)により得られた最新の検出値(Vn)を含む最新の検出値(Vn)以前の連続する複数の検出値の平均値を求める演算処理を行うプログラムである。本実施形態においては、サンプリング数をm=16としている。具体的には、プレイヤーにより入力される入力振動に対する最新の検出値Vnを含むVn以前の15個の検出値(Vn−15〜Vn−1)の平均値を求める演算処理を行う。すなわち、16個の連続する検出値(Vn−15〜Vn)をサンプリングして平均値を求める。
【0046】
差分演算プログラムP6cは、上記nサンプル平均演算プログラムP6aにより得られる平均値と上記mサンプル平均演算プログラムP6bにより得られる平均値との差分値を求めることにより、プレイヤーにより入力される振動が有効な振動入力操作であるか否かを判定するための振動値を算出する処理を行うプログラムである。
【0047】
入力判定プログラムP7は、ゲームの開始後にプレイヤーによって入力される振動が加速度センサにより検知されて、コントローラ7からゲーム装置3に送信された入力振動の検出値に基づいて上記差分演算プログラムP6cにより算出される振動値と、予め設定された閾値とを比較して、当該振動値が有効な入力振動検出値であるか否かを判定する処理を行うプログラムである。すなわち、コントローラ7からゲーム装置3に送信された入力振動の振動値が、閾値よりも大きな値であれば有効な入力操作であると判定し、閾値以下の値であれば無効(ノイズ信号)であると判定する。
【0048】
補正値操作変換プログラムP8は、コントローラ7から送信された有効な入力操作であると判定された振動値と、上記補正値算出プログラムP5から算出された補正値とに基づいて、プレイヤーの操作をゲームに反映させるためのプログラムである。
【0049】
関連振動設定プログラムP9は、コントローラ7から送信された検出値から算出された振動値のうち、有効な入力操作として判定された1回の振動値以外の信号を前記1回の振動に付随した関連振動として設定するためのプログラムである。プレイヤーの操作入力信号として入力したはずの1回の操作信号以外の信号を関連振動として設定することで、プレイヤー操作による有効振動値をより確実な操作入力信号として設定することができる。
【0050】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0051】
メモリコントローラ31は、データ転送を総括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/F36a〜36dで構成され、それらが有するコネクタを介して外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F39に出力する。
【0052】
次に、図4を参照して、本発明に係る入力検出手段の一例であるコントローラ7について説明する。なお、図4(a)は、コントローラ7の上面後方から見た斜視図であり、図4(b)は、コントローラ7を下面後方から見た斜視図である。
【0053】
図4(a)および図4(b)において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状をしており、全体として大人や子供の片手で把持可能な大きさである。
【0054】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤーが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向が選択される。例えば、プレイヤーが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤーキャラクター等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0055】
なお、十字キー72aは、上述したプレイヤーの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもよい。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチや、ハウジング71上面から突出した傾倒可能なスティック等を上記十字キー72aの代わりに設けてもよい。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもよい。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤーによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもよい。
【0056】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられている。操作ボタン72b〜72gは、プレイヤーがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gにボタンごとに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、および、Bボタン等としてゲームの内容に応じて、それぞれモニタ上に新しいウィンドウを表示させる、モニタからの操作指示確認に対して、了解あるいは否定するなど、それぞれのボタンごとに割り振られた機能を実行する。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、および、スタートスイッチ等としての機能が割り当てられる。これらの操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるものである。ただし、本実施形態においては、振動発生手段に該当するバイブレータ74、振動検知手段に該当する加速度センサ73を有していれば、特にこれらの操作ボタンを全て有していなくともよい。したがって、コントローラ7としては汎用のコントローラに限らず、例えば、マウスのような操作手段であっても載置台8に載置可能な操作手段であればよい。
【0057】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。なお、この操作ボタン72hは、その上面をハウジング71の上面に埋没させることにより、プレイヤーが不意に誤って押下することのないボタンとすることができる。
【0058】
なお、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。このLED702は、例えば、コントローラ7に現在設定されている上記コントローラ種別をプレイヤーに通知するために用いることが可能である。たとえば複数のプレイヤーによって複数のゲーム画面に表示されているキャラクターを操作する場合に、複数のLED702の発光方法を変えることで、どのコントローラから送信された操作入力信号に基づいて、ゲーム画面上のキャラクターが操作されているのかをプレイヤーに通知することが可能である。また、複数のLEDを同時に発光させることで、そのコントローラがゲーム装置に認識されたこと、あるいはなんらかの異常をプレイヤーに通知することが可能となる。
【0059】
ここで、コントローラ7に対して設定する座標系について定義する。図4(a)および図4(b)に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の上面(十字キー72aが設けられた面)方向をY軸正方向とする。さらにコントローラ7の左右方向をX軸とし、ハウジング71の左側面(図4(a)では表されずに図4(b)で表されている側面)方向をX軸正方向とする。
【0060】
次に図5を参照して、コントローラ7の内部構造について説明する。なお、図5(a)は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を示す斜視図であり、図5(b)は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図5(b)に示す基板700は、図5(a)に示す基板700の裏面から見た斜視図となっている。
【0061】
図5(a)において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ73、LED702、水晶振動子703、無線モジュール53、および、アンテナ54等が設けられる。そして、これらは、基板700等に形成された配線(図示しない)によってマイコン51(図6参照)に接続される。加速度センサ73は、コントローラ7が配置された3次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。なお、加速度センサ73は、本実施形態における振動検知手段に該当する。
【0062】
本実施形態において、図6に示すように、コントローラ7は3軸の加速度センサ73を備えている。この3軸の加速度センサ73は、3方向、すなわち、上下方向(図4に示すY軸)、左右方向(図4に示すX軸)、および前後方向(図4に示すZ軸)で直線加速度を検知する。
また、加速度センサ73をマイコン51(または他のプロセッサ)と組み合わせて用いることによって、例えば、静的な加速度(重力加速度)が検知されると、加速度センサ73からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ73をマイコン51(または他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を判定することができる。
【0063】
また、無線モジュール53およびアンテナ54を有する通信部75によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン51の基本クロックを生成する。
【0064】
一方、図5(b)において、基板700の下主面上の後端に電池76が収容される。また、基板700の下主面上には、バイブレータ74が取り付けられる。このバイブレータ74は、例えば振動モータやソレノイドであってよい。バイブレータ74が作動することによってコントローラ7に振動が発生する。
【0065】
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、コントローラ7の構成を示すブロック図である。
【0066】
加速度センサ73は、上述したようにコントローラ7の上下方向(Y軸方向)、左右方向(X軸方向)、および前後方向(Z軸方向)の3軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ73が検知した3軸成分の加速度を示すデータは、それぞれ通信部75へ出力される。この加速度センサ73から出力される加速度データに基づいて、コントローラ7の動きを判定することができる。なお、加速度センサ73は、特定のアプリケーションで必要なデータに応じて何れか2軸または1軸に対してそれぞれ加速度を検出する加速度センサが用いられてもかまわない。
【0067】
通信部75は、マイクロコンピュータ(以下「マイコン」で統一する)51、メモリ52、無線モジュール53、およびアンテナ54を含んでいる。マイコン51は、処理の際にメモリ52を記憶領域として用いながら、送信データを無線送信する無線モジュール53を制御する。
【0068】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ73からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)が、マイコン51に出力される。マイコン51は、入力した各データ(キーデータ)、X、Y、およびZ軸方向加速度データを受信ユニット6へ送信する送信データとして一時的にメモリ52に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)で行われ、Bluetooth(ブルートゥース;登録商標)で構成される通信部75の送信間隔は5msで行われる。マイコン51は、受信ユニット6への送信タイミングが到来すると、メモリ52に格納されている送信データを一連の操作情報として出力し、無線モジュール53へ出力する。そして、無線モジュール53は、例えばBluetooth(登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ54から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ73からのX、Y、およびZ軸方向加速度データがコントローラ7から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0069】
次に、図7および図8を用いて、本実施形態で想定するゲームの概要について説明する。なお、図7(a)は本実施形態におけるゲームシステムにて実行されるゲームにおいて、モニタ2の画面2bに表示される画像の一例を示し、図7(b)は、当該ゲームにおける入力装置の外観を示している。また、図8(a)は本実施形態におけるゲームシステムにて実行される他のゲームにおいて、モニタ2の画面2bに表示される画像の一例を示し、図8(b)は、当該ゲームにおける入力装置の外観を示している。
【0070】
図7に示すゲームは、プレイヤーが図7(a)に示すモニタ2の画面2bに表示される指令表示(M1〜M4)に応答して、図7(b)に示す載置台8のコントローラ7に対して右側の操作面8aRまたは左側の操作面8aLをタイミングよく叩く操作により得点を競うゲームである。
【0071】
ゲームが開始されると、図7(a)に示すような指令表示M1、M2等が、規則的または不規則的な時間間隔で画面2bの右端から左端へ向けてスクロール表示される。なお、図7(a)において、丸囲いの指令表示M1等の中に描いてある矢印の向きが、プレイヤーが操作すべき操作面を示している。すなわち、図7(a)において、指令表示M1、M3およびM4には左向きの矢印が表示されているので、プレイヤーは図7(b)に示す左側の操作面8aLを操作する(叩く)ことにより当該指令を達成する。一方、指令表示M2には右向きの矢印が表示されているので、プレイヤーは図7(b)の右側の操作面8aRを操作することにより当該指令を達成する。
【0072】
本実施形態においては、画面2b右端から左端に向けてスクロール表示される指令表示M1等が、画面2bの左側に設定されている仕切り線GLに到達してから仕切り線GLの左側の表示領域へ移動するまでの間にプレイヤーが操作面8aLを操作すると、例えば、「GOOD!」の表示とともに所定の得点が加算される。一方、指令表示M1等が仕切り線GLに到達しないうちに操作が行われたとき、または、指令表示M1等が仕切り線GLより左側の表示領域に移動してもプレイヤーの操作が行われないと、当該指令表示に基づく得点を得ることはできない。また、仕切り線GLに架かる指令表示M1等に表示されている矢印の向きと反対側の操作面を操作してしまうと減点となる。なお、プレイヤーの操作に対する得点の加点、減点の規則は上記した以外にも任意に設定できるものである。
【0073】
上記したゲームの効果演出として、例えば、左右の操作面8aL、8aRをプレイヤーが操作したことに対応して、それぞれ、コンガの左右の太鼓を叩いたときの音響をスピーカ2aから発生させることにより、音楽ゲームとしての興趣を向上させることができる。
【0074】
図8は、本実施形態におけるゲームシステムにて実行される他のゲームの画面表示例(図8(a))および入力装置の外観(図8(b))を示している。図8に示すゲームも、図7に示したゲームと同様に、プレイヤーがモニタ2の画面2bに表示される指令表示(M5、M6)に応答して、図8(b)に示す載置台8のコントローラ7に内蔵されている加速度センサ73に対して右前方の操作面8aRF、右後方の操作面8aRR、左前方の操作面8aLFまたは左後方の操作面8aLRのいずれかの操作面をタイミングよく叩く操作により得点を競うゲームである。
【0075】
本実施形態における加速度センサ73は、少なくとも、左右方向と前後方向の、操作面8a上で略直行する2方向に有効な検出軸を備えたものが用いられる。
【0076】
ゲームが開始されると、モニタ2の画面2bに図8(a)に示すような指令表示M5、M6等が規則的または不規則的に4分割された表示領域のいずれか1つまたは2つの表示領域に所定時間(例えば、1秒程度)表示される。なお、図8(a)において指令表示M5はプレイヤーが左前方の操作面8aLFを操作する(叩く)ことにより当該指令を達成することを示し、同図中指令表示M6はプレイヤーが右後方の操作面8aRRを操作することにより当該指令を達成することを示している。
【0077】
本実施形態においては、画面2bのいずれかの表示領域に表示される指令表示M5、M6等が表示されているときに、プレイヤーが対応する操作面8aRF、8aRR、8aLFまたは8aLRを操作すると、例えば、「GOOD!」の表示とともに所定の得点が加算される。一方、1秒程度の指令表示M5等の表示期間中に対応する操作面8aLF等の操作が行われないと、当該指令表示に基づく得点を得ることはできない。また、指令表示M5等の表示期間中に対応しない操作面8aRF等を操作してしまうと減点となる。なお、プレイヤーの操作に対する得点の加点、減点の規則は上記した以外にも任意に設定できるものである。
【0078】
上記したゲームの効果演出として、例えば、4分割された操作面8aRF、8aRR、8aLFまたは8aLRをプレイヤーが操作したことに対応して、それぞれ、ドラムスの各打楽器を叩いたときの音響をスピーカ2aから発生させることにより、音楽ゲームとしての興趣を向上させることができる。
【0079】
なお、図示はしないが、載置台8上に2つのコントローラ7を、互いの左右方向および前後方向の有効な検出軸が重ならないように載置することにより、操作面8aを9分割した入力装置を構成することもできる。このように構成することにより、より複雑な音楽ゲームまたはその他のゲームの入力装置として使用することができる。
【0080】
次に、図9および図10を参照して、本実施形態におけるゲームシステム1によって実行されるゲームの初期処理について説明する。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図9に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すものである。
【0081】
図9においては、ゲーム開始に際して載置場所(本実施形態では載置台8)の振動値を検出する処理を示している。なお、本実施形態における振動値とは、加速度センサ73により計測されたX、Y、およびZ軸方向加速度データの成分(X、Y、およびZ成分ごとの計測値)それぞれを合計した値、または、各成分の検出値を所定のプログラムにより演算処理した値のことをいう。あるいは、X、Y、およびZ成分ごとの計測値から合成したベクトルの値をもって振動値とすることもでき、それらはゲームの内容に応じて適宜選択が可能である。
【0082】
(ステップS101)(ステップS102)
ゲーム開始時には、コントローラ7は載置台8に載置された状態となっており、CPU30は、予め設定した所定の回数(N回)だけ最大振動値を計測するときに用いる変数であるNをN=1にするとともに、現在の最大振動値をクリアする(メインメモリ33に記憶されている最大値振動値がある場合、これをクリアする)。
【0083】
(ステップS103)
次に、CPU30は、コントローラ7に発振動作を開始させる。具体的には、CPU30が、コントローラ7のマイコン51を介してバイブレータ74を作動する信号を送信し、コントローラ7のマイコン51がバイブレータ74を作動させることによりコントローラ7の発振動作を開始させる。
【0084】
(ステップS104)
そして、コントローラ7において、バイブレータ74の発信動作によるコントローラ7の振動を加速度センサ73によって計測された振動の値が、マイコン51によって検出値として、マイコン51から無線モジュール53を介して、ゲーム装置3に送信され、CPU30は、該送信データとして検出値を取得する。
【0085】
(ステップS105)
次に、CPU30は、取得した現在の振動値が、現在記憶されている最大振動値以上であるか否かを比較し、判定する。なお、最大振動値は、「N」が2以上の場合にのみ比較判定されるものである。したがって、「N」=1の場合には、ステップS105における判定は肯定(ステップS105=YES)されるものとしている。
【0086】
(ステップS106)
上記ステップS105において、取得した現在の振動値が現在の最大振動値以上であると判定された場合、CPU30は、該現在の振動値を現在の最大振動値としてメインメモリ33に記憶する。
【0087】
一方、上記ステップS105において、取得した現在の振動値が現在の最大振動値に満たないと判定された場合、上記ステップS106の処理は行われず、ステップS107に進む。
【0088】
(ステップS107)
次に、CPU30は、コントローラ7の発振動作が作動中であり、かつ、発振動作時間が規定時間(例えば、5ms)以上であるかを判定する。
【0089】
(ステップS108)
上記ステップS107において、コントローラ7の発振動作が作動中であり、かつ、発振動作時間が規定時間以上であると判定された場合、CPU30は、コントローラ7に発振動作(つまり、バイブレータ74の作動)を停止させる信号を送信する。
【0090】
(ステップS109)
上記ステップS108においてコントローラ7の発振動作が停止状態となった場合、および、上記ステップS107においてコントローラ7の発振動作中であり発振動作時間が規定時間未満であると判定された場合、CPU30は、振動値を計測している計測時間が予め設定された所定時間以上であるかを判定する。なお、この計測時間が所定時間に到達していた場合はステップS110に進み、計測時間が所定時間に到達していない場合はステップS104に戻り、以降の処理が繰り返し行われる。
【0091】
(ステップS110)
上記ステップS109において、計測時間が所定時間に到達したと判定された場合、CPU30は、現在の最大振動値(メインメモリ33に記憶されている最大振動値)を「N」回目の最大振動値としてメインメモリ33に記憶する。
【0092】
(ステップS111)(ステップ112)
次に、CPU30は、「N」を「N+1」にインクリメントするとともに、「N」が所定値以上であるかを判定する。なお、「N」が所定値に到達するまで、上記ステップS102以降ステップS112までの処理が繰り返し行われる。
【0093】
(ステップS113)
上記ステップS112において、「N」が所定値以上であると判定された場合、CPU30は、メインメモリ33に記憶された「N」回分の最大振動値、すなわち、「N」個の最大振動値のうち、最大値および最小値となる値を除く「N−2」個の最大振動値の平均を算出し、算出された平均値を単位振動値としてメインメモリ33に記憶する。
【0094】
(ステップS114)
上記ステップS113において、メインメモリ33に記憶された単位振動値に応じて、CPU30はその単位振動値ごとに予め用意された振動変換テーブル(図示しない)を決定する。
【0095】
このようにして、ゲーム開始に際して載置場所(本実施形態では載置台8)の振動値(載置場所における固有の振動値)を検出する処理から振動変換テーブルが決定されることにより、載置場所の環境に応じてプレイヤーの動作を検出することが可能となる。すなわち、絶えず振動やノイズが生じているような載置場所においても、当該振動やノイズが、プレイヤーの動作と混同して検出されてしまうことが極力回避される。
また、上述の記載によれば、ゲーム装置本体のCPU30がコントローラ7から送信される振動の値によって載置場所(本実施形態では載置台8)の振動値を検出する処理を実施しているが、何らかの理由でCPU30とコントローラ7間の無線通信により、エラーが生じる可能性もあるため、これらの処理をコントローラ7のマイコン51が実施することも可能である。
【0096】
図10では、載置場所の固さ(例えば、載置場所としての地面の固さ、載置台の素材の硬さなど)に応じた振動値の推移を示すグラフである。なお、縦軸は振動値、横軸は時間を表している。図10(a)は、載置場所が固い場合(例えば、アスファルト上、鉄板など)の振動値の推移を示しており、図10(b)は、載置場所が柔らかい場合(例えば、ボール紙など)の振動値の推移を示している。このように載置場所の固さ等が振動値の推移によって計測でき、それに応じた補正値をあらかじめ求めた上で、実際のゲーム実行中に振動を操作入力信号として特定するため、本実施形態におけるゲームシステムでは、コントローラ7が安定して載置できる場所であれば、載置場所の環境に応じてゲームを楽しむことができる。
【0097】
続いて、ゲーム全体の制御の流れを、図11に示すステップごとに説明する。
【0098】
(ステップS201)
まず、起動後にゲーム開始の操作が行われた場合、以下のゲームプログラム処理が行われる。
【0099】
(ステップS202)
最初に、当該音楽ゲームの初期設定が行なわれる。
具体的には、プレイヤーの操作入力により、プレイする楽曲の曲目や、操作難易度の選択をおこなう。
【0100】
(ステップS203)
ここでは進行メイン部の処理に移行する。詳しくは図12で説明する。
なお、本件の実施例においてはこの進行メイン処理(下記ステップS301〜S309)はおおよそ1/30秒にて一周し、選択された楽曲が終了するまでの間、1/30秒を1周期としてループを繰り返すこととなる。
【0101】
(ステップS204)
ここでは、選択された現在の楽曲が終了したか否かの判定を行う。
もしも楽曲が終了した場合には、終了演出に移行する。また、まだ楽曲が終了していない場合には前記ステップS203(進行メイン処理)に戻り、以下楽曲が終了するまで進行メイン処理を繰り返す。
【0102】
(ステップS205)
ここでは、プレイヤーの演奏した楽曲が終了した後の演出処理を行う。
一例としては、楽曲終了の時点で、該プレイヤーの得点したスコアや成功した入力回数の情報を元に、例えばそのスコアが所定値よりも高い得点の場合には、優秀な成績を残したとしてご褒美の演出を行なう。また、逆に所定の点数に満たなかった場合には失敗として残念な演出を行っても良い。
【0103】
(ステップS206)
以上でゲーム全体の処理を終了する。
【0104】
続いて、図11に示した進行メイン処理(ステップS203)の処理の内容を、図12に基づいて説明する。なお、本件の実施例においてはこの進行メイン処理(下記ステップS301〜S309)はおおよそ1/30秒にて一周し、選択された楽曲が終了するまでの間、1/30秒を1周期としてループを繰り返すこととなる。
【0105】
(ステップS301)
ゲーム全体の処理ルーチンにおいて、進行メイン処理のタイミングで、当該処理ルーチンに移行する。
【0106】
(ステップS302)
まず、制御装置であるCPU30は前記図11のステップS202で設定された内容に基づいて、ゲーム装置本体の外部記憶手段である光ディスク4より設定された進行データを読み出し、メインメモリ33上に転送する。そして、前記進行データ内からリズム球の進行データを読み出し、それを元に画面に出力をするよう制御を行う。
なお、図7で示したゲームの例(X軸の左右方向にリズム球が進行する場合)では、X軸の+方向側(8aR)、−方向側(8aL)のリズム球の進行データから、それぞれの方向にリズム球の表示を行う。
図8で示したゲームの例(X軸・Z軸の斜め4方向にリズム球が進行する場合)では、X+・Z+(8aRF)、X+・Z−(8aRR)、X−・Z+(8aLF)、X−・Z−(8aLR)の4方向側のリズム球の進行データから、それぞれの方向にリズム球の表示を行う。
【0107】
(ステップS303)
ここでは、主制御装置であるCPU30内の内部タイマ(図示せず)を用いて、一単位時間分(1/30秒)の経過を待ってゲーム進行時間を一単位分進行させる。具体的には前記画面上に表示されたリズム球を一単位時間分各進行方向に移動表示させ、また伴奏となる楽曲データを上記時間分の進行データに基づいて発生させる。また、前記リズム球を移動表示した結果、画面上の各入力タイミングを指示する仕切り線GLを越えて所定距離進んだ場合には「入力が行なわれなかった」と判定してその旨の処理を行う。
【0108】
(ステップS304)
ここでは、前記のnサンプル(短期移動平均による短期トレンド)、mサンプル(長期移動平均による長期トレンド)を用いた移動平均判定処理を行う。詳しくは図13で説明する。
【0109】
(ステップS305)
ここでは、前記移動平均判定処理によって検出された各軸毎の入力操作情報と、前記進行データを用いて入力の正誤判定処理を行い、該判定結果に応じて、成功と判定された場合はステップS306に、失敗と判定された場合はステップS307に進む。
【0110】
図7で示したゲームの例では、まずX軸に対して有効な入力の有無の情報を判定し、更に入力が有ったと判定された場合には、その入力がX軸の+方向側(8aR)か、−方向側(8aL)かを求め、その時点での進行データでの入力指令情報と前期入力の内容が一致していたか否かを判定する。例えば、+方向の入力が有効として検出されたタイミングにおいて、同タイミングで+方向の入力指令情報があった場合(仕切り線GL上に右向きの指令表示が重なっている場合)には、「入力あり・入力成功」として判定する。
また、有効な入力があった場合であっても、そのタイミングで該GL上に対応した指示表示(リズム球)が無かった場合、つまり本来入力すべきでないタイミングでの入力、又は逆方向の入力があった場合はお手つきとして「入力失敗」と判定する。
さらに、有効な入力が無かった場合には、仕切り線GL上の指示表示(リズム球)の有無に関わらず、スルーとして「スルー入力・入力成功」と判定する。ここでは、実際の入力が無いにも関わらず入力成功としているが、いわゆる音楽ゲームにおいては実際の音楽演奏と同様に休符部分においては「入力しない」という状態をキープすることも重要であり、特に本件実施例のような、具体的な操作ボタンのような入力手段を備えないゲームにおいてはこのような場合でも正しい入力として判定している。
【0111】
図8で示したゲームの例では、同様にX軸とZ軸それぞれの入力操作情報からゲーム進行データ(楽曲のリズム入力指示データ)との一致・不一致の判定で成功又は失敗の判定処理を行う。
【0112】
(ステップS306)(ステップS307)
ここでは、前記ステップS305の判定結果に基づいてそれぞれの処理を行う。一例として、ステップS306の成功処理では、例えば入力が正しかったことを示す意味で画面の仕切り線GL付近に成功を示す「GOOD!」の表示を行ったり、仕切り線GLの表示ラインの強調表示を行ったり、入力状況に応じた得点の加点処理を行う。
また、一例としてステップS307の失敗処理では、例えば入力が間違ったことを示す意味で画面の仕切り線GL付近に失敗を示す「MISS」の表示を行ったり、ラインの表示色を暗い色や注意警戒色に変化させ変化を行なったりしても良い。
【0113】
(ステップS308)
ここでは、前記ステップS306・S307での成功・失敗処理の結果に基づき、演出処理を行う。
一例として、例えば成功判定が連続して行われた場合には、連続成功時間に応じて成功継続状態を示す時間やタイマーカウントを表示したり、画面上ににぎやかなキャラクターを表示したり、背景の画像を変化させたり、ゲーム音楽の音量・音色を変化させるなどの処理を行う。
【0114】
(ステップS309)
ここでは、一単位時間の処理を終了し、元の図11のステップS204に進む。
【0115】
続いて、図12のステップS304に示した移動平均判定処理の詳細な処理内容を、図13に基づいて説明する。
【0116】
(ステップS401)
進行メイン処理ルーチンにおいて、移動平均入力判定処理のタイミングで、当該処理ルーチンに移行する。
【0117】
(ステップS402)
まず、操作入力手段のX、Y、Zの各軸方向ごとの加速度検出手段から、各軸ごとの現在の加速度の値を検出する。例えば、静止状態のコントローラが全く水平の場合では、通常鉛直方向(下向き)に重力加速度が常時掛かり、また左右方向及び奥行き方向については一切加速度が掛かっていない状態となる。つまり、図4(b)の配置で説明すると、仮に操作入力を行うコントローラ7を載置する載置台8の上面が完全な水平方向だとすると、鉛直方向であるY軸については、Yは常に1Gであり、また、左右方向であるX、奥行き方向であるZともに0Gとなる。
【0118】
(ステップS403)
ここでは前記各軸毎の過去n(一例として、n=2)個分の各軸毎の加速度の移動平均を算出する。以下、X、Y、Zそれぞれの過去短期平均として、Xn、Yn、Znとして表記する。
本来であれば、直接的に各単位時間ごとの検出値で行ったほうが演算に掛かる制御装置の処理負担は減るのだが、前述の通り、一般的な加速度センサを用いて載置台上のコントローラに加わる振動値を計測した場合には、ある方向からの振動に対して一瞬の経過後に「揺り返し」による逆方向の加速が検出されるが、このような短期移動平均を用いることで本来の入力の一瞬後や一瞬前に検出されることがあるノイズ検出値による誤差を数値的に丸めて、逆方向への振動検出というご認識を防止することが出来る。本実施例では一例としてn=2として記載したが、例えばコントローラが大きく、反動の検出値が来るまでの時間がこの例よりも長い場合は、n=3又はそれ以上のサンプルを用いても良い。但し、後述する長期移動平均サンプル数値よりも小さくすることが必須である。
【0119】
(ステップS404)
ここでは前記各軸毎の過去m(一例として、m=16)個分の各軸毎の加速度の移動平均値を算出する。以下、X、Y、Zそれぞれの過去長期移動平均として、Xm、Ym、Zmとして表記する。
この長期移動平均は、前記短期移動平均による「揺り返し」・「揺り戻し」誤差吸収とは目的が異なり、いわゆる検出の基準となる基準値としての役割を果たす。例えば、出来るだけ水平にコントローラ7を設置した場合でも、例えば載置台8の上面自体がやや右側が下に傾いていた場合には常にX軸方向に弱い加速度が掛かることになるが、このような長期移動平均を用いることでその基準の誤差を吸収することが出来る。それ以外でも、例えばプレイ中にプレイヤーが興じることでつい強い勢いで台の盤面を叩くことで載置台8自体が多少傾いてしまったり、またコントローラ7が若干斜めの角度になってしまった場合でも、そのような誤差を吸収することが出来る。
また、本実施例では図7では左右方向(X軸のみ)、図8では上下方向+左右方向(X軸+Z軸)の例を挙げているが、例えば垂直に設置された柱の内部に入力手段を設置するような場合ではY軸の検出結果を用いてゲーム進行を行っても良い。特に、そのような場合では、通常常時地球の重力によって発生する重力加速度(鉛直方向への1Gの加速度)をゼロとしてゲーム進行制御を行うことも可能である。
【0120】
(ステップS405)
ここでは前記ステップS403、S404で求めた各軸毎の加速度の短期移動平均値と長期移動平均値の差、及びそれぞれの差の絶対値を算出する。以下、X、Y、Zそれぞれの過去短期移動平均と長期移動平均の差として、X(n−m)、Y(n−m)、Z(n−m)として表記する。また、以下、X、Y、Zそれぞれの過去短期移動平均と長期移動平均の差の絶対値として、|X(n−m)|、|Y(n−m)|、|Z(n−m)|として表記する。
先程の説明でいうと、仮に操作入力を行うコントローラ7を載置する載置台8の上面が完全な水平方向だとすると、理論的には鉛直方向であるYについては常に1G、それ以外の地面に対して水平であるX,Z方向については常に0Gとなるわけだが、現実には完全な水平に設置できる場合はあり得ず、またコントローラ7自体の設計の歪みや振動センサである加速度検出装置の精度などから、完全な数値は得られない。しかし、上記のように短期移動平均及び長期移動平均を用いて入力判定を行うことで、そのような精度の限界に由来する誤差信号を排除することが出来る。
【0121】
(ステップS406)
ここでは、前記各軸毎のそれぞれの短期移動平均と長期移動平均の差の絶対値が、所定の入力有無判定の閾値よりも大きいか否かの判定を行う。
なお、図7で示したゲームの例(X軸のみでゲーム進行制御をする場合)では、まず|X(n−m)|が閾値より大きいか否かを演算によって求め、YESの場合はステップS407に進み、そうでない場合はステップS408に進む。
図8で示したゲームの例(X軸・Z軸でゲーム進行制御をする場合)では、|X(n−m)|に加え、|Z(n−m)|についてもそれぞれの短期トレンド・長期トレンドの差の絶対値が閾値よりも大きいか否かを演算によって求め対応する。
【0122】
(ステップS407)(ステップS408)
ここでは、X、Y、Zそれぞれの軸方向について個別に有意の入力があったか否か、各軸について入力ON・またはOFFとしてステップS406で判定された結果をメモリ上に入力操作情報として記録する。
【0123】
(ステップS409)
ここでは、ステップS407において有意な入力があったと判定された場合、その入力が各軸方向において+側か−側かを判定する。
なお、図7で示したゲームの例(X軸のみでゲーム進行制御をする場合)では、まずX(n−m)が正か負かを求め、正の場合はステップS410に進み、そうでない場合(負の数値だった場合)はステップS411に進む。
図8で示したゲームの例(X軸・Z軸でゲーム進行制御をする場合)では、X(n−m)に加え、Z(n−m)についてもそれぞれの短期トレンド・長期トレンドの差の正負を求め、ゼロより大きいか(正か負か)を求めて対応する。
【0124】
(ステップS410)(ステップS411)
ここでは、X、Y、Zそれぞれの軸方向について個別に有意の入力があったか否か、各軸について入力ON・またはOFFとしてステップS409で判定された結果をメモリ上に入力操作情報として記録する。
【0125】
(ステップS412)
ここでは、ステップS407、S408、S410、S411にて記録された入力操作情報を保持した状態で、元の図12のステップS305に進む。
【0126】
次に、図14ないし図17を参照して、本実施形態における振動の検出値の演算処理とその作用について説明する。ここで、図14および図15はプレイヤーによる正規の入力操作以外のノイズに対する処理を説明するための図であり、図16および図17はプレイヤーによる正規の入力操作に対する処理を説明するための図である。
【0127】
図14(a)の上段に示す数値列は、加速度センサ73により検出された検出値がコントローラ7の通信部75を介してゲーム装置3に送信される、いわゆる生の検出値の一例を示している。隣接する数値の検出頻度は、本実施形態においては5ms(5/1000秒)である。この例では、ゲームの一単位時間をテレビ画面の書き換えに要するフレーム単位時間である1/60秒を基準とし、2フレーム分の時間、つまり1/30秒として各操作入力判定を行っている。この時間設定であれば、一単位時間あたりにおおよそ6回前後の入力信号の検出が可能であり、ゲーム進行制御としては十分であり、また入力信号に現在の信号+過去1回分の検出された値の平均値、つまり2回分の検出値の移動平均値を用いても、一単位時間内に収まる点で問題なくゲーム進行制御を行うことができる。また、これらの検出値の単位はG(1.0G=9.80665m/s2)であり、以下、図14ないし図17において全て同様である。図14(a)の下段のグラフは、上記した検出値をプロットして直線で結んだものであり、縦軸の単位は上記したGである。
【0128】
図14(a)において、図の略中央に+のピーク値N1(+0.58G)と−のピーク値N2(−0.36G)が現れているが、このN2は、プレイヤーの意図しないノイズ振動の検出値、つまり、プレイヤーの意図した入力であるN1に対する「揺り返し」であるノイズ信号を示している。それ以外の検出値は、載置台8を含む入力装置の暗振動を示している。また、本実施形態においては、後述する入力された振動操作信号が有効な操作信号であるか否かの判定に用いる閾値を、+側でTH+=+0.3G、−側でTH−=−0.3Gに設定している。したがって、もし、図14(a)に示すような生の検出値を、操作入力信号の有効性の判定に用いると、図中t1で示すタイミングおよびt2で示すタイミングにて、それぞれ、+の操作入力および−の操作入力が有効な操作入力であると誤判定されるという不具合がある。
【0129】
図14(b)は、図14(a)に示す生の検出値を、本実施形態におけるnサンプル平均演算プログラムP6aにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、n=2に設定されているので、nサンプル平均演算プログラムP6aは、図14(a)に示す検出値の最新の検出値とその直前の検出値との2つの検出値(サンプル)の平均値を求める演算処理を行う。このとき、nサンプル平均演算プログラムP6aにより演算処理された演算値(2サンプルの平均値)の+のピーク値(最大値)は+0.23Gであり、−のピーク値(最小値)は−0.13Gであるので、いずれも、上記した+側閾値TH+=+0.3Gおよび−側閾値TH−=−0.3Gを超えないので、有効な操作入力信号とは判定されず、プレイヤーの意図しないノイズを効果的に除去することができる。
【0130】
図15(a)は、図14(a)に示す生の検出値を、本実施形態におけるmサンプル平均演算プログラムP6bにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、m=16に設定されているので、mサンプル平均演算プログラムP6bは、図14(a)に示す検出値の最新の検出値とそれ以前の連続する15個の検出値との16個の検出値(サンプル)の平均値を求める演算処理を行う。この処理により、実質的に、入力振動0レベルに極めて近似した数値を得ることができる。
【0131】
図15(b)は、差分演算プログラムP6cにより、図14(b)に示すnサンプル平均演算プログラムP6aによる演算値から図15(a)に示すmサンプル平均演算プログラムP6bによる演算値を減算した差分値の数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態において入力判定プログラムP7は、図15(b)に示す差分演算プログラムP6cにより得られた演算値と予め設定された閾値TH+およびTH−とを比較することにより、検出された振動値がゲームに有効な振動値であるか否かを判定する。このように有効操作入力の判定処理を行うことにより、図14(a)に示す+側ノイズN1および−側ノイズN2は、図15(b)に示すように有効な操作入力とは判定されず、効果的にノイズ成分を除去して誤認識を回避することができる。
【0132】
図16および図17は、プレイヤーによる正規の操作入力が行われたときの数値列およびグラフを示す図である。図16(a)の上段に示す数値列は、図14(a)に示した数値列と同様に、加速度センサ73により検出された検出値がコントローラ7の通信部75を介してゲーム装置3に送信される、生の検出値の一例を示している。図16(a)の下段のグラフは、上記した検出値をプロットして直線で結んだものであり、縦軸の単位は上記したGである。
【0133】
図16(a)において、上段に示す数値列の左から4番目の+1.36Gがプレイヤーによる正規の入力操作Sに係る検出値である。これは、図7(b)に示す入力装置において右側の操作面8aRが1回操作された(叩かれた)ときの検出値の一例を示している。したがって、図16(a)の検出値がコントローラ7からゲーム装置3に送信されたとき、ゲーム装置3側で図中のt4のタイミングでの+の入力操作Sのみが認識されれば、プレイヤーの操作に対する正しい認識がなされたことになる。
【0134】
しかしながら、図16(a)に示すように、生の検出値と予め設定された閾値TH+およびTH−を用いて有効性の判定を行った場合、まず、t3のタイミングで−方向のノイズN3による振動が−入力として認識され、続いて、t4のタイミングで正規の+の入力操作Sが認識され、その後、t5のタイミングで+のトリガがリセットされた後、t6のタイミングで+方向のノイズN4による振動が認識されてしまう。これは、特に、操作タイミングの正確性を重視する音楽ゲームにおいては致命的な誤認識となり、プレイヤーのゲームに対する興趣を一気に損なってしまう。
【0135】
図16(b)は、図14(b)と同様に、図16(a)に示す生の検出値を、本実施形態におけるnサンプル平均演算プログラムP6aにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、上記したようにn=2に設定されているので、nサンプル平均演算プログラムP6aは、図16(a)に示す検出値の最新の検出値とその直前の検出値との2つの検出値(サンプル)の平均値を求める演算処理を行う。このとき、nサンプル平均演算プログラムP6aにより演算処理された演算値(2サンプルの平均値)の+のピーク値(最大値)は+1.01Gであり、−のピーク値(最小値)は−0.13Gであるので、+側では+側閾値TH+=+0.3Gを超える有効操作入力判定が1回行われ、−側では−側閾値TH−=−0.3Gを超えないので、有効な操作入力信号とは判定されず、プレイヤーの意図しないノイズを効果的に除去することができる。
【0136】
図17(a)は、図15(a)と同様に、図16(a)に示す生の検出値を、本実施形態におけるmサンプル平均演算プログラムP6bにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、上記したようにm=16に設定されているので、mサンプル平均演算プログラムP6bは、図16(a)に示す検出値の最新の検出値とそれ以前の連続する15個の検出値との16個の検出値(サンプル)の平均値を求める演算処理を行う。この演算処理により、図17(a)のグラフに示すように、加速度センサ73により検出された検出値の長周期のトレンド(傾向)を得ることができる。なお、サンプル数mを増やす(例えば、m=32または64等)ことにより、より入力振動0レベルに近似した数値を得ることができる。
【0137】
図17(b)は、図15(b)と同様に、差分演算プログラムP6cにより、図16(b)に示すnサンプル平均演算プログラムP6aによる演算値から図17(a)に示すmサンプル平均演算プログラムP6bによる演算値を減算した差分値の数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態において入力判定プログラムP7は、図17(b)に示す差分演算プログラムP6cにより得られた演算値と予め設定された閾値TH+およびTH−とを比較することにより、検出された振動値がゲームに有効な振動値であるか否かを判定する。このように有効操作入力の判定処理を行うことにより、図16(a)に示す−側ノイズN3および+側ノイズN4は、図17(b)に示すように有効な操作入力とは判定されず、効果的にノイズ成分を除去して誤認識を回避することができるとともに、図中のt7のタイミングでプレイヤーによる正規の操作入力Sのみを正確に認識することができる。
【0138】
また、図17(a)に示したmサンプル平均演算プログラムP6bによる演算値を、予め設定された+側閾値TH+および−側閾値TH−から減算することにより、図17(b)のグラフに一点鎖線で示すように、リアルタイムに補正された+側閾値CTH+および−側閾値CTH−を有効操作入力の判定に用いるようにすることもできる。
【0139】
以上説明したように本発明によれば、少なくとも振動検出手段(加速度センサ73)を備えた汎用性の高い家庭用ゲーム機1の入力検出手段(コントローラ7)とこの入力検出手段が載置可能で振動入力操作が可能な操作面8aを有する入力手段(載置台8)により構成し得る入力装置から得られる入力検出信号(検出値)を用いてゲームの制御を行うことができるので、大規模な入力装置や特殊なゲーム専用の入力装置を使用することなく、多彩なゲームを楽しむことができる。
【0140】
また、入力操作が、入力手段の操作面に振動を加える、例えば、操作面8aの一部を指または掌で叩く等の簡単な操作で可能なので、汎用のコントローラ7等に備えられた複数の操作ボタンの位置や割り当てられている機能等を逐一覚える必要がなく、初心者や敏速なボタン操作が苦手な者でも、入力操作にかかるハンデが少ないゲーム装置を提供することができる。
【図面の簡単な説明】
【0141】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図である。
【図2】本実施形態に係るゲームシステム1のゲーム装置3の機能ブロック図である。
【図3】本実施形態に係るゲームシステム1のゲームプログラムの構成を示すブロック図である。
【図4】本実施形態に係るゲームシステム1のコントローラ7を上面後方および下面後方から見た斜視図である。
【図5】本実施形態に係るゲームシステム1のコントローラ7の上筐体および下筐体を外した状態を示す斜視図である。
【図6】本実施形態に係るゲームシステム1のコントローラ7の構成を示すブロック図である。
【図7】本実施形態に係るゲームシステム1で想定するゲームの画面の一例および入力装置の一例を説明する説明図である。
【図8】本実施形態に係るゲームシステム1で想定する他のゲームの画面の一例および入力装置の一例を説明する説明図である。
【図9】本実施形態に係るゲームシステム1におけるゲームの初期処理を示すフローチャートである。
【図10】本実施形態に係るゲームシステム1のコントローラ7の載置場所ごとの振動値の推移を示すグラフである。
【図11】本実施形態に係るゲームシステム1において、ゲーム全体の処理を示すフローチャートである。
【図12】本実施形態に係るゲームシステム1において、図11に示す進行メイン処理の制御の流れを示すフローチャートである。
【図13】本実施形態に係るゲームシステム1において、図12に示す移動平均判定処理の制御の流れを示すフローチャートである。
【図14】本実施形態に係るゲームシステム1におけるコントローラ7から送信される振動検出値の数値列とグラフの一例およびnサンプル平均演算プログラムP6aによる演算値の数値列とグラフの一例を示す図である。
【図15】本実施形態に係るゲームシステム1におけるmサンプル平均演算プログラムP6bによる演算値の数値列とグラフの一例および差分演算プログラムP6cによる演算値の数値列とグラフの一例を示す図である。
【図16】本実施形態に係るゲームシステム1におけるコントローラ7から送信される振動検出値の数値列とグラフの一例およびnサンプル平均演算プログラムP6aによる演算値の数値列とグラフの一例を示す図である。
【図17】本実施形態に係るゲームシステム1におけるmサンプル平均演算プログラムP6bによる演算値の数値列とグラフの一例および差分演算プログラムP6cによる演算値の数値列とグラフの一例を示す図である。
【符号の説明】
【0142】
1 ゲームシステム
2 モニタ
2a スピーカ
3 ゲーム装置
4 光ディスク
5 外部メモリカード
6 受信ユニット
7 コントローラ
8 載置台
8a 操作面
8b 載置面
30 CPU
31 メモリコントローラ
32 GPU
33 メインメモリ
34 DSP
35 ARAM
36 コントローラI/F
37 ビデオI/F
38 外部メモリI/F
39 オーディオI/F
40 ディスクドライブ
41 ディスクI/F
51 マイコン
52 メモリ
53 無線モジュール
54 アンテナ
71 ハウジング
72 操作部
73 加速度センサ
74 バイブレータ
75 通信部
76 電池
700 基板
702 LED
703 水晶振動子
【技術分野】
【0001】
本発明は、プレイヤーの振動入力操作を加速度センサ等の振動検出手段を備えた入力検出手段により検出し、この検出された入力信号に基づいたゲーム処理をゲーム装置のコンピュータに実行させるゲーム制御プログラム、ゲーム制御方法およびそのゲーム装置に関するものである。
【背景技術】
【0002】
従来、アーケードゲーム等のゲーム装置において音楽ゲーム等を行うためのプレイヤーの操作の入力手段として、楽器を模したコントローラを使用するものが知られている。例えば、特許文献1には、ギター等の弦楽器、ドラム等の打楽器、あるいはピアノ等鍵盤楽器を模したコントローラを用いて、ゲームを進行させる発明が開示されている。
【0003】
また、家庭用ゲーム機用のコントローラとして、素手で叩くコンガのような打楽器、または、バチで叩く太鼓のような打楽器を模したコントローラを用いて、プレイヤーが入力装置を叩く動作により生ずる振動により、プレイヤーの操作入力を検出するゲーム装置も知られている(特許文献2、特許文献3参照)。
【0004】
また、例えば、特許文献4には、複数の操作ボタンを備え、内部に加速度センサ等の振動検出手段を備えた汎用のゲーム装置用コントローラに関する発明が開示されている。
【0005】
【特許文献1】特開2000−126460号公報
【特許文献2】特開2007−325916号公報
【特許文献3】特開2004−313764号公報
【特許文献4】特開2007−313354号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記特許文献1に開示されているような入力手段を用いたゲームを家庭で行おうとすると、大掛かりな装置を購入して屋内に設置しなければならず、価格的にも、設置スペース的にも、一般的な家庭においては困難な要因が多々あり、現実味に乏しい。
【0007】
また、特許文献2および特許文献3に開示されているような入力手段は、上記特許文献1に開示されているものよりもコンパクトに設計され得るが、特定のゲームに対する専用の入力装置であるので、他のゲームで使用することができず、不使用時の収納場所を確保しなければならない等の課題があった。
【0008】
また、特許文献4に開示されているような入力手段は、複数の操作ボタンを備え、多機能で汎用性に富む一方、各操作ボタンの位置や、各操作ボタンに割り当てられるゲームごとの機能等を熟知していないと、十分に使いこなすことができない。また、コントローラを常に保持している必要があり、何らかの理由によりコントローラを保持することができない者、また、普段長時間ゲームコントラーラを保持したことの無いようなゲームの初心者にとっては少なからぬ負担となり、ゲームに対する興味を減らす一因となっていた。
【0009】
また、一般的な加速度センサ等を備えたコントローラを使用したとき、単純に振動の有無のみを検出する場合であれば問題ないが、加速度センサの加速度検出信号(検出値)のみで入力振動の向き(入力された方向)を検出しようとすると、ある程度以上の強さの振動入力があった場合には、一般の加速度検出手段による振動検知の場合、入力があった方向に対して、「揺り戻し」や「揺り返し」と呼ばれる検出手段が元の位置に戻ろうとする逆方向の信号が一瞬本来の入力タイミングの直後、又は直前に発生することがある為、制御手段側では本来の意図として入力された信号を検出した後に、本来の意図とは逆向きの誤認識入力を検出させてしまう場合がある。
また、ゲーム装置本体とコントローラ装置を無線にて接続(無線通信にて信号の授受を行なっている)ため、関係の無いノイズ電波を受信したりする場合もある。
【0010】
例えば、キャラクターの移動をさせるような一般的なアクションゲーム等においては、プレイヤーの操作するキャラクターの移動入力が主制御装置が画面書き換えに必要とする最小単位である一単位時間(おおよそ1/30秒から1/60秒)の間だけ逆方向に誤認識されても、ほとんどゲームの進行に支障はないが、伴奏に合わせて非常に短い間隔を基準として正確な入力をすることを競ういわゆる音楽ゲームや、より早く正解となる入力を行ういわゆるクイズゲームや反射神経訓練系トレーニングゲーム等においては、正確な入力を連続的に行うことによるゲーム性が重要視されるため、上記したようなプレイヤーの意に反した逆向きの誤認識信号が発生すると、ゲームの性質上当該プレイヤーはその時点で間違い入力をしたという判定となり、結果としてプレイヤーは一気にゲームに対する興趣を損ねてしまうという課題があった。
【0011】
本発明はこのような従来の問題に鑑みてなされたものであって、特殊な入力装置を用いることなく、広く流通している汎用性の高い操作装置を用いて、操作入力に必要な複数のボタンおよびこれらに割り当てられた機能を覚えることなく操作を可能とするゲーム制御プログラム、ゲーム制御方法およびゲーム装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
上記した従来の課題を解決するために請求項1に記載の発明は、所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段としてコンピュータを機能させるためのゲーム制御プログラムであって、前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算処理と、前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算処理と、前記nサンプル平均演算処理により得られたn個の検出値の平均値から前記mサンプル平均演算処理により得られたm個の検出値の平均値を減算して差分値を求める差分演算処理と、該差分演算処理により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定処理と、を前記コンピュータに実行させることを特徴とする。
【0013】
請求項2に記載の発明は、所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御するゲーム制御方法であって、前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算ステップと、前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算ステップと、前記nサンプル平均演算ステップにより得られたn個の検出値の平均値から前記mサンプル平均演算ステップにより得られたm個の検出値の平均値を減算して差分値を求める差分演算ステップと、該差分演算ステップにより得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定ステップと、を備えてなることを特徴とする。
【0014】
請求項3に記載の発明は、所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段を備えたゲーム装置であって、前記制御手段は、前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算手段と、前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算手段と、前記nサンプル平均演算手段により得られたn個の検出値の平均値から前記mサンプル平均演算手段により得られたm個の検出値の平均値を減算して差分値を求める差分演算手段と、該差分演算手段により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定手段と、を備えてなることを特徴とする。
【0015】
請求項4に記載の発明は、請求項1に記載のゲーム制御プログラムを格納した情報記憶媒体である。
【0016】
本願の特許請求の範囲および明細書の記載において、振動検出手段とは、例えば、加速度センサやジャイロセンサ等の、印加された振動入力を検出して、その振動の向きおよび大きさに対応した検出信号を出力し得る手段を意味する。したがって、検出した入力振動をそのままベクトル量として出力するものでも良いし、検出したベクトル量を演算処理して所定の振動値として出力するものでも良い。また、入力検出手段とは、少なくとも、上記振動検出手段を備えた入力検出装置を意味し、制御手段に入力振動の検出値を出力する機能を有し、例えば、家庭用ゲーム機に汎用性の高いリモコンやゲームコントローラなどを広く含む。
【0017】
また、入力手段とは、少なくとも、プレイヤーが振動入力操作可能な操作面を備え、操作面に入力された振動を入力検出手段の振動検出手段に伝播可能なものであれば良い。例えば、机やテーブルの天板自体が振動を検知しでも良いし、その上に検出手段コントローラを載置する形態でも良いし、段ボール箱や金属板製の台等でも良い。
【0018】
振動検出手段は、少なくとも、入力手段に入力検出手段が載置されたとき、振動検出手段の位置を原点として1軸方向の振動の検出が可能なものであれば良い。例えば、振動検出手段の位置を原点として入力手段の左右方向に有効な検出軸を有する場合、入力手段への振動操作入力の入力位置が振動検出手段の右側であるか左側であるか(例えば、右側の入力に対して+の値、左側の入力に対して−の値等)を識別可能な検出値を出力する。また、有効な検出軸を上記した左右方向の1軸とこれに対して入力手段の入力面上で直交する前後方向に有効な1軸との2軸を有する振動検出手段を用いてもよい。さらに、上記した左右方向、前後方向の2軸に加えて、入力面に直交する上下方向の1軸を加えた、有効な検出軸を各々直交する3軸方向に有する振動検出手段を用いることもできる。
【0019】
なお、情報記憶媒体とは、例えば、光ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、RAM、ROMなど、コンピュータ等において読み取り可能なプログラムを格納(記憶)可能な媒体を広く含む。
【発明の効果】
【0020】
本発明によれば、少なくとも振動検出手段を備えた汎用性の高い家庭用ゲーム機の入力検出手段(リモコン、ゲームコントローラ等)とこの入力検出手段が載置可能で振動入力操作が可能な操作面を有する入力手段(机、空き箱等)により構成し得る入力装置から得られる入力検出信号(検出値)を用いてゲームの制御を行うことができるので、大規模な入力装置や特殊なゲーム専用の入力装置を使用することなく、多彩なゲームを楽しむことができる。
【0021】
また、入力操作が、入力手段の操作面に振動を加える、例えば、操作面の一部を指で叩く等の簡単な操作で可能なので、汎用のコントローラ等に備えられた複数の操作ボタンの位置や割り当てられている機能等を逐一覚える必要がなく、初心者や敏速なボタン操作が苦手な者でも、入力操作にかかるハンデが少ないゲーム装置を提供することができる。
【0022】
また、制御手段が、入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の移動平均値を求めるnサンプル平均演算処理と、入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の移動平均値を求めるmサンプル平均演算処理と、nサンプル平均演算処理により得られたn個の検出値の平均値から前記mサンプル平均演算処理により得られたm個の検出値の移動平均値を減算して差分値を求める差分演算処理と、この差分演算処理により得られた差分値と予め設定された閾値に基づいて入力手段への振動入力操作の有無を判定する入力判定処理と、をコンピュータに実行させるので、例えば、nを2〜4程度の時系列的に短期間でサンプリングした短期のサンプル数として設定し、mを16〜32程度の時系列的に長期間についてサンプリングした長期のサンプル数として設定することができ、これらの平均値の差分値を操作入力振動の有効性の判定に用いることにより、入力手段へのプレイヤーの操作入力とプレイヤーが意図しない外乱ノイズによる振動とを精度良く識別することができる。
【0023】
すなわち、nサンプル平均演算処理により、入力検出手段から得られる生の検出値を短期の少ないサンプル数の検出値で平滑化した、生の検出値のトレンド(傾向)に近い演算値(平均値)が得られる。一方、mサンプル平均演算処理により、入力検出手段から得られる生の検出値をn個より十分に多い長期のサンプル数で平滑化した、ほぼ入力振動が0のときに近いレベルの演算値(平均値)が得られる。そして、差分演算処理によりnサンプル平均演算処理により得られたn個の検出値の平均値からmサンプル平均演算処理により得られたm個の検出値の平均値を減算して差分値を求め、入力判定処理において差分演算処理により得られた差分値と予め設定された閾値に基づいて入力手段への振動入力操作の有無を判定するので、信頼性の高い振動入力操作の判定が可能となる。
【0024】
これにより、瞬発的な外乱ノイズ等をプレイヤーの入力操作による有効な入力振動値として誤認識する可能性を低くすることができ、例えば、音楽ゲーム等の入力判定手段として誤認識の極めて少ないゲーム装置を提供することができる。
【発明を実施するための最良の形態】
【0025】
以下、本発明の一実施形態について、図面を参照して説明する。図1は、本実施形態に係るゲーム装置を用いたゲームシステム1を説明するための説明図(外観図)である。
【0026】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下「モニタ」という)2に、接続コードを介して接続される据え置き型ゲーム装置(以下「ゲーム装置」という)3、当該ゲーム装置3に操作情報を与えるコントローラ7、および、コントローラ7を載置する載置台8によって構成される。ゲーム装置3には、接続端子を介して受信ユニット6が接続される。
【0027】
受信ユニット6は、コントローラ7から無線通信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3には、それぞれ図示しない当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、および光ディスク4を脱着可能なディスクトレーを開かせるOPENスイッチ等が設けられている。ここで、プレイヤーがOPENスイッチを押下することによってディスクトレーがゲーム装置3の内部から外部に導出され、光ディスク4の脱着が可能となる。再び、光ディスク4を脱着した後、ディスクトレーをゲーム装置3に格納することで、ゲーム装置3は光ディスク4の読み取りが可能となる。なお、コントローラ7は本実施形態における入力検出手段であり、載置台8は本実施形態における入力手段である。
【0028】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱可能に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムや操作入力手段からの入力信号に基づいてゲームを実行し、その結果をゲーム画像として表示手段であるモニタ2に表示する。
【0029】
さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去にプレイヤーが実行したゲーム状態を再現して、その結果をゲーム画像として表示手段であるモニタ2に表示することができる。そして、ゲームのプレイヤーは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を引き続き実行することができる。
【0030】
コントローラ7は、その内部に備える通信部75(後述する)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて送信データを無線通信する。コントローラ7は、主にモニタ2に表示されるゲーム空間に登場するプレイヤーオブジェクトを操作するための操作手段である。コントローラ7には、複数の操作ボタン、方向キー、および、スティック等の操作部が設けられている。
【0031】
載置台8は、コントローラ7を載置する載置面8bとプレイヤーが操作する操作面8aを備え、プレイヤーがこの載置台8の操作面8aを叩くことにより載置台8に振動が生じ、その載置台8の振動がコントローラ7に伝わり、そのコントローラ7に伝わった振動を後述するコントローラ7に内蔵された加速度センサ73により検知させるためのものである。
【0032】
本実施形態においては、ボール紙等で作られた箱型状の載置台8を用いている。なお、載置台8をプレイヤーが叩いたときにコントローラ7に振動が伝わる材質(例えば、ボール紙などで作られた箱、木材などの板状のもの)であれば特に材質はボール紙等に限定されるものではない。ただし、載置台8にプレイヤーが与えた振動が吸収されてしまうような振動を伝わらせ難い軟らかい素材は、あまり好ましくない。また形状についても箱型に限定されず、例えば、板状(木材等)のものであってもよい。
【0033】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0034】
図2において、ゲーム装置3は、各種プログラムを実行する、例えば、CPU(Central Processing Unit)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、および、ARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバスを介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、および、ディスクI/F41が接続され、それぞれ受信ユニット6、モニタ2、外部メモリカード5、スピーカ2a、および、ディスクドライブ40が接続されている。
【0035】
GPU32は、CPU30の命令に基づいて画像処理を行うものであり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。なお、CPU30ならびにGPU32は、本実施形態における制御手段の一例に該当する。
【0036】
メインメモリ33は、CPU30で使用される記憶領域であって、図示しないROM(Read Only Memory)とRAM(Random Access Memory)からなり、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0037】
図3に示すように、ゲームプログラムPには、載置判定プログラムP1、基準振動開始プログラムP2、基準振動検知プログラムP3、固有振動値算出プログラムP4、補正値算出プログラムP5、入力振動値演算プログラムP6、入力判定プログラムP7、補正値操作変換プログラムP8、関連振動設定プログラムP9等のプログラムが含まれている。CPU30は、これらのプログラムを適宜読み込んで各種の処理を実行する。
【0038】
載置判定プログラムP1は、ゲームスタート時にコントローラ7の加速度センサ73(図5(a)参照)が所定時間(例えば、5秒程度)、所定の値(いわゆる暗振動の検出値)より大きな加速度(振動)を検出しなかった場合に、載置台8にコントローラ7が載置されたことを確認するためのプログラムである。なお、コントローラ7が載置されたことが確認できなかった場合、上記に加えてモニタ2にコントローラ7の載置を促すメッセージを適宜表示させることも可能である。
【0039】
基準振動開始プログラムP2は、上記載置判定プログラムP1の起動後に、コントローラ7の振動発生器74(図5(b)参照)を作動させて、一定時間(例えば、1秒程度)、載置台8に基準振動を与えるためのプログラムである。
【0040】
基準振動検知プログラムP3は、上記基準振動開始プログラムP2により載置台8基準振動をコントローラ7の加速度センサ73が検出し、コントローラ7から送信される検出値を受信してメインメモリ33の所定の記憶領域に記憶する処理を行うプログラムである。
【0041】
固有振動値算出プログラムP4は、上記基準振動検知プログラムP3によりメインメモリ33に記憶された検出値に基づいて、載置台8における固有の振動値を算出するプログラムである。この固有振動値算出プログラムP4は、メインメモリ33に記憶された複数(例えば、5サンプル)の検出値の平均値を求めることにより、載置台8における固有の振動値を算出する。
【0042】
補正値算出プログラムP5は、上記固有振動値算出プログラムP4に基づいて算出された載置台8の固有の振動値に基づき補正値を算出するプログラムである。この補正値算出プログラムP5により算出された補正値を用いて、後述する補正値操作変換プログラムP8で補正された振動値に基づく処理を行うことができる。より具体的には、載置台8における振動値に補正値を加えることで、載置台8の素材によって、プレイヤー自身が載置台8に与える振動の強さを加減する必要がなくなる。すなわち、載置台8の材質が軟らかい素材(振動が伝わり難い素材)であっても、硬い素材(振動が伝わり易い素材)であっても、プレイヤーがとりわけ叩く強さを変更する必要がないように構成されている。
【0043】
入力振動値演算プログラムP6は、プレイヤーの入力操作が加速度センサ73により検出されて、コントローラ7からゲーム装置3に送信される連続する複数の検出値に基づいて入力判定のための振動値を演算処理するためのプログラムであり、サブプログラムとして、nサンプル平均演算プログラムP6aと、mサンプル平均演算プログラムP6bと、差分演算プログラムP6cを備えている。本実施形態においてnサンプル平均演算プログラムP6aおよびmサンプル平均演算プログラムP6bは、それぞれ、nサンプル平均演算手段およびmサンプル平均演算手段である。また、差分演算プログラムP6cは、本実施形態における差分演算手段である。
【0044】
nサンプル平均演算プログラムP6aは、コントローラ7(入力検出手段)により得られた最新の検出値とその直前の検出値との平均値を求める演算処理を行うプログラムである。本実施形態においては、サンプリング数をn=2としている。具体的には、プレイヤーにより入力される入力振動に対してコントローラ7から得られた最新の検出値Vnとその直前の検出値Vn−1の平均値を求める演算処理を行う。
【0045】
mサンプル平均演算プログラムP6bは、コントローラ7(入力検出手段)により得られた最新の検出値(Vn)を含む最新の検出値(Vn)以前の連続する複数の検出値の平均値を求める演算処理を行うプログラムである。本実施形態においては、サンプリング数をm=16としている。具体的には、プレイヤーにより入力される入力振動に対する最新の検出値Vnを含むVn以前の15個の検出値(Vn−15〜Vn−1)の平均値を求める演算処理を行う。すなわち、16個の連続する検出値(Vn−15〜Vn)をサンプリングして平均値を求める。
【0046】
差分演算プログラムP6cは、上記nサンプル平均演算プログラムP6aにより得られる平均値と上記mサンプル平均演算プログラムP6bにより得られる平均値との差分値を求めることにより、プレイヤーにより入力される振動が有効な振動入力操作であるか否かを判定するための振動値を算出する処理を行うプログラムである。
【0047】
入力判定プログラムP7は、ゲームの開始後にプレイヤーによって入力される振動が加速度センサにより検知されて、コントローラ7からゲーム装置3に送信された入力振動の検出値に基づいて上記差分演算プログラムP6cにより算出される振動値と、予め設定された閾値とを比較して、当該振動値が有効な入力振動検出値であるか否かを判定する処理を行うプログラムである。すなわち、コントローラ7からゲーム装置3に送信された入力振動の振動値が、閾値よりも大きな値であれば有効な入力操作であると判定し、閾値以下の値であれば無効(ノイズ信号)であると判定する。
【0048】
補正値操作変換プログラムP8は、コントローラ7から送信された有効な入力操作であると判定された振動値と、上記補正値算出プログラムP5から算出された補正値とに基づいて、プレイヤーの操作をゲームに反映させるためのプログラムである。
【0049】
関連振動設定プログラムP9は、コントローラ7から送信された検出値から算出された振動値のうち、有効な入力操作として判定された1回の振動値以外の信号を前記1回の振動に付随した関連振動として設定するためのプログラムである。プレイヤーの操作入力信号として入力したはずの1回の操作信号以外の信号を関連振動として設定することで、プレイヤー操作による有効振動値をより確実な操作入力信号として設定することができる。
【0050】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0051】
メモリコントローラ31は、データ転送を総括的に制御するものであり、上述した各種I/Fが接続される。コントローラI/F36は、例えば4つのコントローラI/F36a〜36dで構成され、それらが有するコネクタを介して外部機器とゲーム装置3とを通信可能に接続する。例えば、受信ユニット6は、上記コネクタと嵌合し、コントローラI/F36を介してゲーム装置3と接続される。上述したように受信ユニット6は、コントローラ7からの送信データを受信し、コントローラI/F36を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ2が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。オーディオI/F39にはモニタ2に内蔵されるスピーカ2aが接続され、DSP34がARAM35から読み出したサウンドデータやディスクドライブ40から直接出力されるサウンドデータをスピーカ2aから出力可能に接続される。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスやオーディオI/F39に出力する。
【0052】
次に、図4を参照して、本発明に係る入力検出手段の一例であるコントローラ7について説明する。なお、図4(a)は、コントローラ7の上面後方から見た斜視図であり、図4(b)は、コントローラ7を下面後方から見た斜視図である。
【0053】
図4(a)および図4(b)において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状をしており、全体として大人や子供の片手で把持可能な大きさである。
【0054】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤーが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向が選択される。例えば、プレイヤーが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤーキャラクター等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0055】
なお、十字キー72aは、上述したプレイヤーの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもよい。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチや、ハウジング71上面から突出した傾倒可能なスティック等を上記十字キー72aの代わりに設けてもよい。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもよい。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤーによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもよい。
【0056】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられている。操作ボタン72b〜72gは、プレイヤーがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gにボタンごとに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、および、Bボタン等としてゲームの内容に応じて、それぞれモニタ上に新しいウィンドウを表示させる、モニタからの操作指示確認に対して、了解あるいは否定するなど、それぞれのボタンごとに割り振られた機能を実行する。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、および、スタートスイッチ等としての機能が割り当てられる。これらの操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるものである。ただし、本実施形態においては、振動発生手段に該当するバイブレータ74、振動検知手段に該当する加速度センサ73を有していれば、特にこれらの操作ボタンを全て有していなくともよい。したがって、コントローラ7としては汎用のコントローラに限らず、例えば、マウスのような操作手段であっても載置台8に載置可能な操作手段であればよい。
【0057】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。なお、この操作ボタン72hは、その上面をハウジング71の上面に埋没させることにより、プレイヤーが不意に誤って押下することのないボタンとすることができる。
【0058】
なお、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。このLED702は、例えば、コントローラ7に現在設定されている上記コントローラ種別をプレイヤーに通知するために用いることが可能である。たとえば複数のプレイヤーによって複数のゲーム画面に表示されているキャラクターを操作する場合に、複数のLED702の発光方法を変えることで、どのコントローラから送信された操作入力信号に基づいて、ゲーム画面上のキャラクターが操作されているのかをプレイヤーに通知することが可能である。また、複数のLEDを同時に発光させることで、そのコントローラがゲーム装置に認識されたこと、あるいはなんらかの異常をプレイヤーに通知することが可能となる。
【0059】
ここで、コントローラ7に対して設定する座標系について定義する。図4(a)および図4(b)に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の上面(十字キー72aが設けられた面)方向をY軸正方向とする。さらにコントローラ7の左右方向をX軸とし、ハウジング71の左側面(図4(a)では表されずに図4(b)で表されている側面)方向をX軸正方向とする。
【0060】
次に図5を参照して、コントローラ7の内部構造について説明する。なお、図5(a)は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を示す斜視図であり、図5(b)は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図5(b)に示す基板700は、図5(a)に示す基板700の裏面から見た斜視図となっている。
【0061】
図5(a)において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ73、LED702、水晶振動子703、無線モジュール53、および、アンテナ54等が設けられる。そして、これらは、基板700等に形成された配線(図示しない)によってマイコン51(図6参照)に接続される。加速度センサ73は、コントローラ7が配置された3次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。なお、加速度センサ73は、本実施形態における振動検知手段に該当する。
【0062】
本実施形態において、図6に示すように、コントローラ7は3軸の加速度センサ73を備えている。この3軸の加速度センサ73は、3方向、すなわち、上下方向(図4に示すY軸)、左右方向(図4に示すX軸)、および前後方向(図4に示すZ軸)で直線加速度を検知する。
また、加速度センサ73をマイコン51(または他のプロセッサ)と組み合わせて用いることによって、例えば、静的な加速度(重力加速度)が検知されると、加速度センサ73からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ73をマイコン51(または他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を判定することができる。
【0063】
また、無線モジュール53およびアンテナ54を有する通信部75によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン51の基本クロックを生成する。
【0064】
一方、図5(b)において、基板700の下主面上の後端に電池76が収容される。また、基板700の下主面上には、バイブレータ74が取り付けられる。このバイブレータ74は、例えば振動モータやソレノイドであってよい。バイブレータ74が作動することによってコントローラ7に振動が発生する。
【0065】
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、コントローラ7の構成を示すブロック図である。
【0066】
加速度センサ73は、上述したようにコントローラ7の上下方向(Y軸方向)、左右方向(X軸方向)、および前後方向(Z軸方向)の3軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ73が検知した3軸成分の加速度を示すデータは、それぞれ通信部75へ出力される。この加速度センサ73から出力される加速度データに基づいて、コントローラ7の動きを判定することができる。なお、加速度センサ73は、特定のアプリケーションで必要なデータに応じて何れか2軸または1軸に対してそれぞれ加速度を検出する加速度センサが用いられてもかまわない。
【0067】
通信部75は、マイクロコンピュータ(以下「マイコン」で統一する)51、メモリ52、無線モジュール53、およびアンテナ54を含んでいる。マイコン51は、処理の際にメモリ52を記憶領域として用いながら、送信データを無線送信する無線モジュール53を制御する。
【0068】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ73からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)が、マイコン51に出力される。マイコン51は、入力した各データ(キーデータ)、X、Y、およびZ軸方向加速度データを受信ユニット6へ送信する送信データとして一時的にメモリ52に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)で行われ、Bluetooth(ブルートゥース;登録商標)で構成される通信部75の送信間隔は5msで行われる。マイコン51は、受信ユニット6への送信タイミングが到来すると、メモリ52に格納されている送信データを一連の操作情報として出力し、無線モジュール53へ出力する。そして、無線モジュール53は、例えばBluetooth(登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ54から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ73からのX、Y、およびZ軸方向加速度データがコントローラ7から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0069】
次に、図7および図8を用いて、本実施形態で想定するゲームの概要について説明する。なお、図7(a)は本実施形態におけるゲームシステムにて実行されるゲームにおいて、モニタ2の画面2bに表示される画像の一例を示し、図7(b)は、当該ゲームにおける入力装置の外観を示している。また、図8(a)は本実施形態におけるゲームシステムにて実行される他のゲームにおいて、モニタ2の画面2bに表示される画像の一例を示し、図8(b)は、当該ゲームにおける入力装置の外観を示している。
【0070】
図7に示すゲームは、プレイヤーが図7(a)に示すモニタ2の画面2bに表示される指令表示(M1〜M4)に応答して、図7(b)に示す載置台8のコントローラ7に対して右側の操作面8aRまたは左側の操作面8aLをタイミングよく叩く操作により得点を競うゲームである。
【0071】
ゲームが開始されると、図7(a)に示すような指令表示M1、M2等が、規則的または不規則的な時間間隔で画面2bの右端から左端へ向けてスクロール表示される。なお、図7(a)において、丸囲いの指令表示M1等の中に描いてある矢印の向きが、プレイヤーが操作すべき操作面を示している。すなわち、図7(a)において、指令表示M1、M3およびM4には左向きの矢印が表示されているので、プレイヤーは図7(b)に示す左側の操作面8aLを操作する(叩く)ことにより当該指令を達成する。一方、指令表示M2には右向きの矢印が表示されているので、プレイヤーは図7(b)の右側の操作面8aRを操作することにより当該指令を達成する。
【0072】
本実施形態においては、画面2b右端から左端に向けてスクロール表示される指令表示M1等が、画面2bの左側に設定されている仕切り線GLに到達してから仕切り線GLの左側の表示領域へ移動するまでの間にプレイヤーが操作面8aLを操作すると、例えば、「GOOD!」の表示とともに所定の得点が加算される。一方、指令表示M1等が仕切り線GLに到達しないうちに操作が行われたとき、または、指令表示M1等が仕切り線GLより左側の表示領域に移動してもプレイヤーの操作が行われないと、当該指令表示に基づく得点を得ることはできない。また、仕切り線GLに架かる指令表示M1等に表示されている矢印の向きと反対側の操作面を操作してしまうと減点となる。なお、プレイヤーの操作に対する得点の加点、減点の規則は上記した以外にも任意に設定できるものである。
【0073】
上記したゲームの効果演出として、例えば、左右の操作面8aL、8aRをプレイヤーが操作したことに対応して、それぞれ、コンガの左右の太鼓を叩いたときの音響をスピーカ2aから発生させることにより、音楽ゲームとしての興趣を向上させることができる。
【0074】
図8は、本実施形態におけるゲームシステムにて実行される他のゲームの画面表示例(図8(a))および入力装置の外観(図8(b))を示している。図8に示すゲームも、図7に示したゲームと同様に、プレイヤーがモニタ2の画面2bに表示される指令表示(M5、M6)に応答して、図8(b)に示す載置台8のコントローラ7に内蔵されている加速度センサ73に対して右前方の操作面8aRF、右後方の操作面8aRR、左前方の操作面8aLFまたは左後方の操作面8aLRのいずれかの操作面をタイミングよく叩く操作により得点を競うゲームである。
【0075】
本実施形態における加速度センサ73は、少なくとも、左右方向と前後方向の、操作面8a上で略直行する2方向に有効な検出軸を備えたものが用いられる。
【0076】
ゲームが開始されると、モニタ2の画面2bに図8(a)に示すような指令表示M5、M6等が規則的または不規則的に4分割された表示領域のいずれか1つまたは2つの表示領域に所定時間(例えば、1秒程度)表示される。なお、図8(a)において指令表示M5はプレイヤーが左前方の操作面8aLFを操作する(叩く)ことにより当該指令を達成することを示し、同図中指令表示M6はプレイヤーが右後方の操作面8aRRを操作することにより当該指令を達成することを示している。
【0077】
本実施形態においては、画面2bのいずれかの表示領域に表示される指令表示M5、M6等が表示されているときに、プレイヤーが対応する操作面8aRF、8aRR、8aLFまたは8aLRを操作すると、例えば、「GOOD!」の表示とともに所定の得点が加算される。一方、1秒程度の指令表示M5等の表示期間中に対応する操作面8aLF等の操作が行われないと、当該指令表示に基づく得点を得ることはできない。また、指令表示M5等の表示期間中に対応しない操作面8aRF等を操作してしまうと減点となる。なお、プレイヤーの操作に対する得点の加点、減点の規則は上記した以外にも任意に設定できるものである。
【0078】
上記したゲームの効果演出として、例えば、4分割された操作面8aRF、8aRR、8aLFまたは8aLRをプレイヤーが操作したことに対応して、それぞれ、ドラムスの各打楽器を叩いたときの音響をスピーカ2aから発生させることにより、音楽ゲームとしての興趣を向上させることができる。
【0079】
なお、図示はしないが、載置台8上に2つのコントローラ7を、互いの左右方向および前後方向の有効な検出軸が重ならないように載置することにより、操作面8aを9分割した入力装置を構成することもできる。このように構成することにより、より複雑な音楽ゲームまたはその他のゲームの入力装置として使用することができる。
【0080】
次に、図9および図10を参照して、本実施形態におけるゲームシステム1によって実行されるゲームの初期処理について説明する。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図9に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すものである。
【0081】
図9においては、ゲーム開始に際して載置場所(本実施形態では載置台8)の振動値を検出する処理を示している。なお、本実施形態における振動値とは、加速度センサ73により計測されたX、Y、およびZ軸方向加速度データの成分(X、Y、およびZ成分ごとの計測値)それぞれを合計した値、または、各成分の検出値を所定のプログラムにより演算処理した値のことをいう。あるいは、X、Y、およびZ成分ごとの計測値から合成したベクトルの値をもって振動値とすることもでき、それらはゲームの内容に応じて適宜選択が可能である。
【0082】
(ステップS101)(ステップS102)
ゲーム開始時には、コントローラ7は載置台8に載置された状態となっており、CPU30は、予め設定した所定の回数(N回)だけ最大振動値を計測するときに用いる変数であるNをN=1にするとともに、現在の最大振動値をクリアする(メインメモリ33に記憶されている最大値振動値がある場合、これをクリアする)。
【0083】
(ステップS103)
次に、CPU30は、コントローラ7に発振動作を開始させる。具体的には、CPU30が、コントローラ7のマイコン51を介してバイブレータ74を作動する信号を送信し、コントローラ7のマイコン51がバイブレータ74を作動させることによりコントローラ7の発振動作を開始させる。
【0084】
(ステップS104)
そして、コントローラ7において、バイブレータ74の発信動作によるコントローラ7の振動を加速度センサ73によって計測された振動の値が、マイコン51によって検出値として、マイコン51から無線モジュール53を介して、ゲーム装置3に送信され、CPU30は、該送信データとして検出値を取得する。
【0085】
(ステップS105)
次に、CPU30は、取得した現在の振動値が、現在記憶されている最大振動値以上であるか否かを比較し、判定する。なお、最大振動値は、「N」が2以上の場合にのみ比較判定されるものである。したがって、「N」=1の場合には、ステップS105における判定は肯定(ステップS105=YES)されるものとしている。
【0086】
(ステップS106)
上記ステップS105において、取得した現在の振動値が現在の最大振動値以上であると判定された場合、CPU30は、該現在の振動値を現在の最大振動値としてメインメモリ33に記憶する。
【0087】
一方、上記ステップS105において、取得した現在の振動値が現在の最大振動値に満たないと判定された場合、上記ステップS106の処理は行われず、ステップS107に進む。
【0088】
(ステップS107)
次に、CPU30は、コントローラ7の発振動作が作動中であり、かつ、発振動作時間が規定時間(例えば、5ms)以上であるかを判定する。
【0089】
(ステップS108)
上記ステップS107において、コントローラ7の発振動作が作動中であり、かつ、発振動作時間が規定時間以上であると判定された場合、CPU30は、コントローラ7に発振動作(つまり、バイブレータ74の作動)を停止させる信号を送信する。
【0090】
(ステップS109)
上記ステップS108においてコントローラ7の発振動作が停止状態となった場合、および、上記ステップS107においてコントローラ7の発振動作中であり発振動作時間が規定時間未満であると判定された場合、CPU30は、振動値を計測している計測時間が予め設定された所定時間以上であるかを判定する。なお、この計測時間が所定時間に到達していた場合はステップS110に進み、計測時間が所定時間に到達していない場合はステップS104に戻り、以降の処理が繰り返し行われる。
【0091】
(ステップS110)
上記ステップS109において、計測時間が所定時間に到達したと判定された場合、CPU30は、現在の最大振動値(メインメモリ33に記憶されている最大振動値)を「N」回目の最大振動値としてメインメモリ33に記憶する。
【0092】
(ステップS111)(ステップ112)
次に、CPU30は、「N」を「N+1」にインクリメントするとともに、「N」が所定値以上であるかを判定する。なお、「N」が所定値に到達するまで、上記ステップS102以降ステップS112までの処理が繰り返し行われる。
【0093】
(ステップS113)
上記ステップS112において、「N」が所定値以上であると判定された場合、CPU30は、メインメモリ33に記憶された「N」回分の最大振動値、すなわち、「N」個の最大振動値のうち、最大値および最小値となる値を除く「N−2」個の最大振動値の平均を算出し、算出された平均値を単位振動値としてメインメモリ33に記憶する。
【0094】
(ステップS114)
上記ステップS113において、メインメモリ33に記憶された単位振動値に応じて、CPU30はその単位振動値ごとに予め用意された振動変換テーブル(図示しない)を決定する。
【0095】
このようにして、ゲーム開始に際して載置場所(本実施形態では載置台8)の振動値(載置場所における固有の振動値)を検出する処理から振動変換テーブルが決定されることにより、載置場所の環境に応じてプレイヤーの動作を検出することが可能となる。すなわち、絶えず振動やノイズが生じているような載置場所においても、当該振動やノイズが、プレイヤーの動作と混同して検出されてしまうことが極力回避される。
また、上述の記載によれば、ゲーム装置本体のCPU30がコントローラ7から送信される振動の値によって載置場所(本実施形態では載置台8)の振動値を検出する処理を実施しているが、何らかの理由でCPU30とコントローラ7間の無線通信により、エラーが生じる可能性もあるため、これらの処理をコントローラ7のマイコン51が実施することも可能である。
【0096】
図10では、載置場所の固さ(例えば、載置場所としての地面の固さ、載置台の素材の硬さなど)に応じた振動値の推移を示すグラフである。なお、縦軸は振動値、横軸は時間を表している。図10(a)は、載置場所が固い場合(例えば、アスファルト上、鉄板など)の振動値の推移を示しており、図10(b)は、載置場所が柔らかい場合(例えば、ボール紙など)の振動値の推移を示している。このように載置場所の固さ等が振動値の推移によって計測でき、それに応じた補正値をあらかじめ求めた上で、実際のゲーム実行中に振動を操作入力信号として特定するため、本実施形態におけるゲームシステムでは、コントローラ7が安定して載置できる場所であれば、載置場所の環境に応じてゲームを楽しむことができる。
【0097】
続いて、ゲーム全体の制御の流れを、図11に示すステップごとに説明する。
【0098】
(ステップS201)
まず、起動後にゲーム開始の操作が行われた場合、以下のゲームプログラム処理が行われる。
【0099】
(ステップS202)
最初に、当該音楽ゲームの初期設定が行なわれる。
具体的には、プレイヤーの操作入力により、プレイする楽曲の曲目や、操作難易度の選択をおこなう。
【0100】
(ステップS203)
ここでは進行メイン部の処理に移行する。詳しくは図12で説明する。
なお、本件の実施例においてはこの進行メイン処理(下記ステップS301〜S309)はおおよそ1/30秒にて一周し、選択された楽曲が終了するまでの間、1/30秒を1周期としてループを繰り返すこととなる。
【0101】
(ステップS204)
ここでは、選択された現在の楽曲が終了したか否かの判定を行う。
もしも楽曲が終了した場合には、終了演出に移行する。また、まだ楽曲が終了していない場合には前記ステップS203(進行メイン処理)に戻り、以下楽曲が終了するまで進行メイン処理を繰り返す。
【0102】
(ステップS205)
ここでは、プレイヤーの演奏した楽曲が終了した後の演出処理を行う。
一例としては、楽曲終了の時点で、該プレイヤーの得点したスコアや成功した入力回数の情報を元に、例えばそのスコアが所定値よりも高い得点の場合には、優秀な成績を残したとしてご褒美の演出を行なう。また、逆に所定の点数に満たなかった場合には失敗として残念な演出を行っても良い。
【0103】
(ステップS206)
以上でゲーム全体の処理を終了する。
【0104】
続いて、図11に示した進行メイン処理(ステップS203)の処理の内容を、図12に基づいて説明する。なお、本件の実施例においてはこの進行メイン処理(下記ステップS301〜S309)はおおよそ1/30秒にて一周し、選択された楽曲が終了するまでの間、1/30秒を1周期としてループを繰り返すこととなる。
【0105】
(ステップS301)
ゲーム全体の処理ルーチンにおいて、進行メイン処理のタイミングで、当該処理ルーチンに移行する。
【0106】
(ステップS302)
まず、制御装置であるCPU30は前記図11のステップS202で設定された内容に基づいて、ゲーム装置本体の外部記憶手段である光ディスク4より設定された進行データを読み出し、メインメモリ33上に転送する。そして、前記進行データ内からリズム球の進行データを読み出し、それを元に画面に出力をするよう制御を行う。
なお、図7で示したゲームの例(X軸の左右方向にリズム球が進行する場合)では、X軸の+方向側(8aR)、−方向側(8aL)のリズム球の進行データから、それぞれの方向にリズム球の表示を行う。
図8で示したゲームの例(X軸・Z軸の斜め4方向にリズム球が進行する場合)では、X+・Z+(8aRF)、X+・Z−(8aRR)、X−・Z+(8aLF)、X−・Z−(8aLR)の4方向側のリズム球の進行データから、それぞれの方向にリズム球の表示を行う。
【0107】
(ステップS303)
ここでは、主制御装置であるCPU30内の内部タイマ(図示せず)を用いて、一単位時間分(1/30秒)の経過を待ってゲーム進行時間を一単位分進行させる。具体的には前記画面上に表示されたリズム球を一単位時間分各進行方向に移動表示させ、また伴奏となる楽曲データを上記時間分の進行データに基づいて発生させる。また、前記リズム球を移動表示した結果、画面上の各入力タイミングを指示する仕切り線GLを越えて所定距離進んだ場合には「入力が行なわれなかった」と判定してその旨の処理を行う。
【0108】
(ステップS304)
ここでは、前記のnサンプル(短期移動平均による短期トレンド)、mサンプル(長期移動平均による長期トレンド)を用いた移動平均判定処理を行う。詳しくは図13で説明する。
【0109】
(ステップS305)
ここでは、前記移動平均判定処理によって検出された各軸毎の入力操作情報と、前記進行データを用いて入力の正誤判定処理を行い、該判定結果に応じて、成功と判定された場合はステップS306に、失敗と判定された場合はステップS307に進む。
【0110】
図7で示したゲームの例では、まずX軸に対して有効な入力の有無の情報を判定し、更に入力が有ったと判定された場合には、その入力がX軸の+方向側(8aR)か、−方向側(8aL)かを求め、その時点での進行データでの入力指令情報と前期入力の内容が一致していたか否かを判定する。例えば、+方向の入力が有効として検出されたタイミングにおいて、同タイミングで+方向の入力指令情報があった場合(仕切り線GL上に右向きの指令表示が重なっている場合)には、「入力あり・入力成功」として判定する。
また、有効な入力があった場合であっても、そのタイミングで該GL上に対応した指示表示(リズム球)が無かった場合、つまり本来入力すべきでないタイミングでの入力、又は逆方向の入力があった場合はお手つきとして「入力失敗」と判定する。
さらに、有効な入力が無かった場合には、仕切り線GL上の指示表示(リズム球)の有無に関わらず、スルーとして「スルー入力・入力成功」と判定する。ここでは、実際の入力が無いにも関わらず入力成功としているが、いわゆる音楽ゲームにおいては実際の音楽演奏と同様に休符部分においては「入力しない」という状態をキープすることも重要であり、特に本件実施例のような、具体的な操作ボタンのような入力手段を備えないゲームにおいてはこのような場合でも正しい入力として判定している。
【0111】
図8で示したゲームの例では、同様にX軸とZ軸それぞれの入力操作情報からゲーム進行データ(楽曲のリズム入力指示データ)との一致・不一致の判定で成功又は失敗の判定処理を行う。
【0112】
(ステップS306)(ステップS307)
ここでは、前記ステップS305の判定結果に基づいてそれぞれの処理を行う。一例として、ステップS306の成功処理では、例えば入力が正しかったことを示す意味で画面の仕切り線GL付近に成功を示す「GOOD!」の表示を行ったり、仕切り線GLの表示ラインの強調表示を行ったり、入力状況に応じた得点の加点処理を行う。
また、一例としてステップS307の失敗処理では、例えば入力が間違ったことを示す意味で画面の仕切り線GL付近に失敗を示す「MISS」の表示を行ったり、ラインの表示色を暗い色や注意警戒色に変化させ変化を行なったりしても良い。
【0113】
(ステップS308)
ここでは、前記ステップS306・S307での成功・失敗処理の結果に基づき、演出処理を行う。
一例として、例えば成功判定が連続して行われた場合には、連続成功時間に応じて成功継続状態を示す時間やタイマーカウントを表示したり、画面上ににぎやかなキャラクターを表示したり、背景の画像を変化させたり、ゲーム音楽の音量・音色を変化させるなどの処理を行う。
【0114】
(ステップS309)
ここでは、一単位時間の処理を終了し、元の図11のステップS204に進む。
【0115】
続いて、図12のステップS304に示した移動平均判定処理の詳細な処理内容を、図13に基づいて説明する。
【0116】
(ステップS401)
進行メイン処理ルーチンにおいて、移動平均入力判定処理のタイミングで、当該処理ルーチンに移行する。
【0117】
(ステップS402)
まず、操作入力手段のX、Y、Zの各軸方向ごとの加速度検出手段から、各軸ごとの現在の加速度の値を検出する。例えば、静止状態のコントローラが全く水平の場合では、通常鉛直方向(下向き)に重力加速度が常時掛かり、また左右方向及び奥行き方向については一切加速度が掛かっていない状態となる。つまり、図4(b)の配置で説明すると、仮に操作入力を行うコントローラ7を載置する載置台8の上面が完全な水平方向だとすると、鉛直方向であるY軸については、Yは常に1Gであり、また、左右方向であるX、奥行き方向であるZともに0Gとなる。
【0118】
(ステップS403)
ここでは前記各軸毎の過去n(一例として、n=2)個分の各軸毎の加速度の移動平均を算出する。以下、X、Y、Zそれぞれの過去短期平均として、Xn、Yn、Znとして表記する。
本来であれば、直接的に各単位時間ごとの検出値で行ったほうが演算に掛かる制御装置の処理負担は減るのだが、前述の通り、一般的な加速度センサを用いて載置台上のコントローラに加わる振動値を計測した場合には、ある方向からの振動に対して一瞬の経過後に「揺り返し」による逆方向の加速が検出されるが、このような短期移動平均を用いることで本来の入力の一瞬後や一瞬前に検出されることがあるノイズ検出値による誤差を数値的に丸めて、逆方向への振動検出というご認識を防止することが出来る。本実施例では一例としてn=2として記載したが、例えばコントローラが大きく、反動の検出値が来るまでの時間がこの例よりも長い場合は、n=3又はそれ以上のサンプルを用いても良い。但し、後述する長期移動平均サンプル数値よりも小さくすることが必須である。
【0119】
(ステップS404)
ここでは前記各軸毎の過去m(一例として、m=16)個分の各軸毎の加速度の移動平均値を算出する。以下、X、Y、Zそれぞれの過去長期移動平均として、Xm、Ym、Zmとして表記する。
この長期移動平均は、前記短期移動平均による「揺り返し」・「揺り戻し」誤差吸収とは目的が異なり、いわゆる検出の基準となる基準値としての役割を果たす。例えば、出来るだけ水平にコントローラ7を設置した場合でも、例えば載置台8の上面自体がやや右側が下に傾いていた場合には常にX軸方向に弱い加速度が掛かることになるが、このような長期移動平均を用いることでその基準の誤差を吸収することが出来る。それ以外でも、例えばプレイ中にプレイヤーが興じることでつい強い勢いで台の盤面を叩くことで載置台8自体が多少傾いてしまったり、またコントローラ7が若干斜めの角度になってしまった場合でも、そのような誤差を吸収することが出来る。
また、本実施例では図7では左右方向(X軸のみ)、図8では上下方向+左右方向(X軸+Z軸)の例を挙げているが、例えば垂直に設置された柱の内部に入力手段を設置するような場合ではY軸の検出結果を用いてゲーム進行を行っても良い。特に、そのような場合では、通常常時地球の重力によって発生する重力加速度(鉛直方向への1Gの加速度)をゼロとしてゲーム進行制御を行うことも可能である。
【0120】
(ステップS405)
ここでは前記ステップS403、S404で求めた各軸毎の加速度の短期移動平均値と長期移動平均値の差、及びそれぞれの差の絶対値を算出する。以下、X、Y、Zそれぞれの過去短期移動平均と長期移動平均の差として、X(n−m)、Y(n−m)、Z(n−m)として表記する。また、以下、X、Y、Zそれぞれの過去短期移動平均と長期移動平均の差の絶対値として、|X(n−m)|、|Y(n−m)|、|Z(n−m)|として表記する。
先程の説明でいうと、仮に操作入力を行うコントローラ7を載置する載置台8の上面が完全な水平方向だとすると、理論的には鉛直方向であるYについては常に1G、それ以外の地面に対して水平であるX,Z方向については常に0Gとなるわけだが、現実には完全な水平に設置できる場合はあり得ず、またコントローラ7自体の設計の歪みや振動センサである加速度検出装置の精度などから、完全な数値は得られない。しかし、上記のように短期移動平均及び長期移動平均を用いて入力判定を行うことで、そのような精度の限界に由来する誤差信号を排除することが出来る。
【0121】
(ステップS406)
ここでは、前記各軸毎のそれぞれの短期移動平均と長期移動平均の差の絶対値が、所定の入力有無判定の閾値よりも大きいか否かの判定を行う。
なお、図7で示したゲームの例(X軸のみでゲーム進行制御をする場合)では、まず|X(n−m)|が閾値より大きいか否かを演算によって求め、YESの場合はステップS407に進み、そうでない場合はステップS408に進む。
図8で示したゲームの例(X軸・Z軸でゲーム進行制御をする場合)では、|X(n−m)|に加え、|Z(n−m)|についてもそれぞれの短期トレンド・長期トレンドの差の絶対値が閾値よりも大きいか否かを演算によって求め対応する。
【0122】
(ステップS407)(ステップS408)
ここでは、X、Y、Zそれぞれの軸方向について個別に有意の入力があったか否か、各軸について入力ON・またはOFFとしてステップS406で判定された結果をメモリ上に入力操作情報として記録する。
【0123】
(ステップS409)
ここでは、ステップS407において有意な入力があったと判定された場合、その入力が各軸方向において+側か−側かを判定する。
なお、図7で示したゲームの例(X軸のみでゲーム進行制御をする場合)では、まずX(n−m)が正か負かを求め、正の場合はステップS410に進み、そうでない場合(負の数値だった場合)はステップS411に進む。
図8で示したゲームの例(X軸・Z軸でゲーム進行制御をする場合)では、X(n−m)に加え、Z(n−m)についてもそれぞれの短期トレンド・長期トレンドの差の正負を求め、ゼロより大きいか(正か負か)を求めて対応する。
【0124】
(ステップS410)(ステップS411)
ここでは、X、Y、Zそれぞれの軸方向について個別に有意の入力があったか否か、各軸について入力ON・またはOFFとしてステップS409で判定された結果をメモリ上に入力操作情報として記録する。
【0125】
(ステップS412)
ここでは、ステップS407、S408、S410、S411にて記録された入力操作情報を保持した状態で、元の図12のステップS305に進む。
【0126】
次に、図14ないし図17を参照して、本実施形態における振動の検出値の演算処理とその作用について説明する。ここで、図14および図15はプレイヤーによる正規の入力操作以外のノイズに対する処理を説明するための図であり、図16および図17はプレイヤーによる正規の入力操作に対する処理を説明するための図である。
【0127】
図14(a)の上段に示す数値列は、加速度センサ73により検出された検出値がコントローラ7の通信部75を介してゲーム装置3に送信される、いわゆる生の検出値の一例を示している。隣接する数値の検出頻度は、本実施形態においては5ms(5/1000秒)である。この例では、ゲームの一単位時間をテレビ画面の書き換えに要するフレーム単位時間である1/60秒を基準とし、2フレーム分の時間、つまり1/30秒として各操作入力判定を行っている。この時間設定であれば、一単位時間あたりにおおよそ6回前後の入力信号の検出が可能であり、ゲーム進行制御としては十分であり、また入力信号に現在の信号+過去1回分の検出された値の平均値、つまり2回分の検出値の移動平均値を用いても、一単位時間内に収まる点で問題なくゲーム進行制御を行うことができる。また、これらの検出値の単位はG(1.0G=9.80665m/s2)であり、以下、図14ないし図17において全て同様である。図14(a)の下段のグラフは、上記した検出値をプロットして直線で結んだものであり、縦軸の単位は上記したGである。
【0128】
図14(a)において、図の略中央に+のピーク値N1(+0.58G)と−のピーク値N2(−0.36G)が現れているが、このN2は、プレイヤーの意図しないノイズ振動の検出値、つまり、プレイヤーの意図した入力であるN1に対する「揺り返し」であるノイズ信号を示している。それ以外の検出値は、載置台8を含む入力装置の暗振動を示している。また、本実施形態においては、後述する入力された振動操作信号が有効な操作信号であるか否かの判定に用いる閾値を、+側でTH+=+0.3G、−側でTH−=−0.3Gに設定している。したがって、もし、図14(a)に示すような生の検出値を、操作入力信号の有効性の判定に用いると、図中t1で示すタイミングおよびt2で示すタイミングにて、それぞれ、+の操作入力および−の操作入力が有効な操作入力であると誤判定されるという不具合がある。
【0129】
図14(b)は、図14(a)に示す生の検出値を、本実施形態におけるnサンプル平均演算プログラムP6aにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、n=2に設定されているので、nサンプル平均演算プログラムP6aは、図14(a)に示す検出値の最新の検出値とその直前の検出値との2つの検出値(サンプル)の平均値を求める演算処理を行う。このとき、nサンプル平均演算プログラムP6aにより演算処理された演算値(2サンプルの平均値)の+のピーク値(最大値)は+0.23Gであり、−のピーク値(最小値)は−0.13Gであるので、いずれも、上記した+側閾値TH+=+0.3Gおよび−側閾値TH−=−0.3Gを超えないので、有効な操作入力信号とは判定されず、プレイヤーの意図しないノイズを効果的に除去することができる。
【0130】
図15(a)は、図14(a)に示す生の検出値を、本実施形態におけるmサンプル平均演算プログラムP6bにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、m=16に設定されているので、mサンプル平均演算プログラムP6bは、図14(a)に示す検出値の最新の検出値とそれ以前の連続する15個の検出値との16個の検出値(サンプル)の平均値を求める演算処理を行う。この処理により、実質的に、入力振動0レベルに極めて近似した数値を得ることができる。
【0131】
図15(b)は、差分演算プログラムP6cにより、図14(b)に示すnサンプル平均演算プログラムP6aによる演算値から図15(a)に示すmサンプル平均演算プログラムP6bによる演算値を減算した差分値の数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態において入力判定プログラムP7は、図15(b)に示す差分演算プログラムP6cにより得られた演算値と予め設定された閾値TH+およびTH−とを比較することにより、検出された振動値がゲームに有効な振動値であるか否かを判定する。このように有効操作入力の判定処理を行うことにより、図14(a)に示す+側ノイズN1および−側ノイズN2は、図15(b)に示すように有効な操作入力とは判定されず、効果的にノイズ成分を除去して誤認識を回避することができる。
【0132】
図16および図17は、プレイヤーによる正規の操作入力が行われたときの数値列およびグラフを示す図である。図16(a)の上段に示す数値列は、図14(a)に示した数値列と同様に、加速度センサ73により検出された検出値がコントローラ7の通信部75を介してゲーム装置3に送信される、生の検出値の一例を示している。図16(a)の下段のグラフは、上記した検出値をプロットして直線で結んだものであり、縦軸の単位は上記したGである。
【0133】
図16(a)において、上段に示す数値列の左から4番目の+1.36Gがプレイヤーによる正規の入力操作Sに係る検出値である。これは、図7(b)に示す入力装置において右側の操作面8aRが1回操作された(叩かれた)ときの検出値の一例を示している。したがって、図16(a)の検出値がコントローラ7からゲーム装置3に送信されたとき、ゲーム装置3側で図中のt4のタイミングでの+の入力操作Sのみが認識されれば、プレイヤーの操作に対する正しい認識がなされたことになる。
【0134】
しかしながら、図16(a)に示すように、生の検出値と予め設定された閾値TH+およびTH−を用いて有効性の判定を行った場合、まず、t3のタイミングで−方向のノイズN3による振動が−入力として認識され、続いて、t4のタイミングで正規の+の入力操作Sが認識され、その後、t5のタイミングで+のトリガがリセットされた後、t6のタイミングで+方向のノイズN4による振動が認識されてしまう。これは、特に、操作タイミングの正確性を重視する音楽ゲームにおいては致命的な誤認識となり、プレイヤーのゲームに対する興趣を一気に損なってしまう。
【0135】
図16(b)は、図14(b)と同様に、図16(a)に示す生の検出値を、本実施形態におけるnサンプル平均演算プログラムP6aにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、上記したようにn=2に設定されているので、nサンプル平均演算プログラムP6aは、図16(a)に示す検出値の最新の検出値とその直前の検出値との2つの検出値(サンプル)の平均値を求める演算処理を行う。このとき、nサンプル平均演算プログラムP6aにより演算処理された演算値(2サンプルの平均値)の+のピーク値(最大値)は+1.01Gであり、−のピーク値(最小値)は−0.13Gであるので、+側では+側閾値TH+=+0.3Gを超える有効操作入力判定が1回行われ、−側では−側閾値TH−=−0.3Gを超えないので、有効な操作入力信号とは判定されず、プレイヤーの意図しないノイズを効果的に除去することができる。
【0136】
図17(a)は、図15(a)と同様に、図16(a)に示す生の検出値を、本実施形態におけるmサンプル平均演算プログラムP6bにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、上記したようにm=16に設定されているので、mサンプル平均演算プログラムP6bは、図16(a)に示す検出値の最新の検出値とそれ以前の連続する15個の検出値との16個の検出値(サンプル)の平均値を求める演算処理を行う。この演算処理により、図17(a)のグラフに示すように、加速度センサ73により検出された検出値の長周期のトレンド(傾向)を得ることができる。なお、サンプル数mを増やす(例えば、m=32または64等)ことにより、より入力振動0レベルに近似した数値を得ることができる。
【0137】
図17(b)は、図15(b)と同様に、差分演算プログラムP6cにより、図16(b)に示すnサンプル平均演算プログラムP6aによる演算値から図17(a)に示すmサンプル平均演算プログラムP6bによる演算値を減算した差分値の数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態において入力判定プログラムP7は、図17(b)に示す差分演算プログラムP6cにより得られた演算値と予め設定された閾値TH+およびTH−とを比較することにより、検出された振動値がゲームに有効な振動値であるか否かを判定する。このように有効操作入力の判定処理を行うことにより、図16(a)に示す−側ノイズN3および+側ノイズN4は、図17(b)に示すように有効な操作入力とは判定されず、効果的にノイズ成分を除去して誤認識を回避することができるとともに、図中のt7のタイミングでプレイヤーによる正規の操作入力Sのみを正確に認識することができる。
【0138】
また、図17(a)に示したmサンプル平均演算プログラムP6bによる演算値を、予め設定された+側閾値TH+および−側閾値TH−から減算することにより、図17(b)のグラフに一点鎖線で示すように、リアルタイムに補正された+側閾値CTH+および−側閾値CTH−を有効操作入力の判定に用いるようにすることもできる。
【0139】
以上説明したように本発明によれば、少なくとも振動検出手段(加速度センサ73)を備えた汎用性の高い家庭用ゲーム機1の入力検出手段(コントローラ7)とこの入力検出手段が載置可能で振動入力操作が可能な操作面8aを有する入力手段(載置台8)により構成し得る入力装置から得られる入力検出信号(検出値)を用いてゲームの制御を行うことができるので、大規模な入力装置や特殊なゲーム専用の入力装置を使用することなく、多彩なゲームを楽しむことができる。
【0140】
また、入力操作が、入力手段の操作面に振動を加える、例えば、操作面8aの一部を指または掌で叩く等の簡単な操作で可能なので、汎用のコントローラ7等に備えられた複数の操作ボタンの位置や割り当てられている機能等を逐一覚える必要がなく、初心者や敏速なボタン操作が苦手な者でも、入力操作にかかるハンデが少ないゲーム装置を提供することができる。
【図面の簡単な説明】
【0141】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図である。
【図2】本実施形態に係るゲームシステム1のゲーム装置3の機能ブロック図である。
【図3】本実施形態に係るゲームシステム1のゲームプログラムの構成を示すブロック図である。
【図4】本実施形態に係るゲームシステム1のコントローラ7を上面後方および下面後方から見た斜視図である。
【図5】本実施形態に係るゲームシステム1のコントローラ7の上筐体および下筐体を外した状態を示す斜視図である。
【図6】本実施形態に係るゲームシステム1のコントローラ7の構成を示すブロック図である。
【図7】本実施形態に係るゲームシステム1で想定するゲームの画面の一例および入力装置の一例を説明する説明図である。
【図8】本実施形態に係るゲームシステム1で想定する他のゲームの画面の一例および入力装置の一例を説明する説明図である。
【図9】本実施形態に係るゲームシステム1におけるゲームの初期処理を示すフローチャートである。
【図10】本実施形態に係るゲームシステム1のコントローラ7の載置場所ごとの振動値の推移を示すグラフである。
【図11】本実施形態に係るゲームシステム1において、ゲーム全体の処理を示すフローチャートである。
【図12】本実施形態に係るゲームシステム1において、図11に示す進行メイン処理の制御の流れを示すフローチャートである。
【図13】本実施形態に係るゲームシステム1において、図12に示す移動平均判定処理の制御の流れを示すフローチャートである。
【図14】本実施形態に係るゲームシステム1におけるコントローラ7から送信される振動検出値の数値列とグラフの一例およびnサンプル平均演算プログラムP6aによる演算値の数値列とグラフの一例を示す図である。
【図15】本実施形態に係るゲームシステム1におけるmサンプル平均演算プログラムP6bによる演算値の数値列とグラフの一例および差分演算プログラムP6cによる演算値の数値列とグラフの一例を示す図である。
【図16】本実施形態に係るゲームシステム1におけるコントローラ7から送信される振動検出値の数値列とグラフの一例およびnサンプル平均演算プログラムP6aによる演算値の数値列とグラフの一例を示す図である。
【図17】本実施形態に係るゲームシステム1におけるmサンプル平均演算プログラムP6bによる演算値の数値列とグラフの一例および差分演算プログラムP6cによる演算値の数値列とグラフの一例を示す図である。
【符号の説明】
【0142】
1 ゲームシステム
2 モニタ
2a スピーカ
3 ゲーム装置
4 光ディスク
5 外部メモリカード
6 受信ユニット
7 コントローラ
8 載置台
8a 操作面
8b 載置面
30 CPU
31 メモリコントローラ
32 GPU
33 メインメモリ
34 DSP
35 ARAM
36 コントローラI/F
37 ビデオI/F
38 外部メモリI/F
39 オーディオI/F
40 ディスクドライブ
41 ディスクI/F
51 マイコン
52 メモリ
53 無線モジュール
54 アンテナ
71 ハウジング
72 操作部
73 加速度センサ
74 バイブレータ
75 通信部
76 電池
700 基板
702 LED
703 水晶振動子
【特許請求の範囲】
【請求項1】
所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段としてコンピュータを機能させるためのゲーム制御プログラムであって、
前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算処理と、
前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算処理と、
前記nサンプル平均演算処理により得られたn個の検出値の平均値から前記mサンプル平均演算処理により得られたm個の検出値の平均値を減算して差分値を求める差分演算処理と、
該差分演算処理により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定処理と、
を前記コンピュータに実行させることを特徴とするゲーム制御プログラム。
【請求項2】
所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御するゲーム制御方法であって、
前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算ステップと、
前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算ステップと、
前記nサンプル平均演算ステップにより得られたn個の検出値の平均値から前記mサンプル平均演算ステップにより得られたm個の検出値の平均値を減算して差分値を求める差分演算ステップと、
該差分演算ステップにより得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定ステップと、
を備えてなることを特徴とするゲーム制御方法。
【請求項3】
所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段を備えたゲーム装置であって、
前記制御手段は、
前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算手段と、
前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算手段と、
前記nサンプル平均演算手段により得られたn個の検出値の平均値から前記mサンプル平均演算手段により得られたm個の検出値の平均値を減算して差分値を求める差分演算手段と、
該差分演算手段により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定手段と、
を備えてなることを特徴とするゲーム装置。
【請求項4】
請求項1に記載のゲーム制御プログラムを格納した情報記憶媒体。
【請求項1】
所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段としてコンピュータを機能させるためのゲーム制御プログラムであって、
前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算処理と、
前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算処理と、
前記nサンプル平均演算処理により得られたn個の検出値の平均値から前記mサンプル平均演算処理により得られたm個の検出値の平均値を減算して差分値を求める差分演算処理と、
該差分演算処理により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定処理と、
を前記コンピュータに実行させることを特徴とするゲーム制御プログラム。
【請求項2】
所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御するゲーム制御方法であって、
前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算ステップと、
前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算ステップと、
前記nサンプル平均演算ステップにより得られたn個の検出値の平均値から前記mサンプル平均演算ステップにより得られたm個の検出値の平均値を減算して差分値を求める差分演算ステップと、
該差分演算ステップにより得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定ステップと、
を備えてなることを特徴とするゲーム制御方法。
【請求項3】
所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段を備えたゲーム装置であって、
前記制御手段は、
前記入力検出手段により得られた最新の検出値を含む連続した過去のn個の検出値の平均値を求めるnサンプル平均演算手段と、
前記入力検出手段により得られた最新の検出値を含む連続した前記n個より多いm個の過去の検出値の平均値を求めるmサンプル平均演算手段と、
前記nサンプル平均演算手段により得られたn個の検出値の平均値から前記mサンプル平均演算手段により得られたm個の検出値の平均値を減算して差分値を求める差分演算手段と、
該差分演算手段により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定手段と、
を備えてなることを特徴とするゲーム装置。
【請求項4】
請求項1に記載のゲーム制御プログラムを格納した情報記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2010−104721(P2010−104721A)
【公開日】平成22年5月13日(2010.5.13)
【国際特許分類】
【出願番号】特願2008−282413(P2008−282413)
【出願日】平成20年10月31日(2008.10.31)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】
【公開日】平成22年5月13日(2010.5.13)
【国際特許分類】
【出願日】平成20年10月31日(2008.10.31)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】
[ Back to top ]