(57)【要約】【課題】特殊な入力装置を用いることなく、広く流通している汎用性の高い操作装置を用いて、操作入力に必要なボタンあるいは台の特定の箇所を覚えることなく操作を可能とするゲームプログラムおよびゲーム装置を提供する。【解決手段】振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段を備えたゲーム装置であって、制御手段が、最新の検出値を含む連続した過去のｎ個の検出値の平均値を求めるｎサンプル平均演算手段と、最新の検出値を含む連続したｎ個より多いｍ個の過去の検出値の平均値を求めるｍサンプル平均演算手段と、ｎサンプル平均演算手段により得られた平均値からｍサンプル平均演算手段により得られた平均値を減算して差分値を求める差分演算手段と、該差分演算手段により得られた差分値と予め設定された閾値に基づいて入力手段への振動入力操作の有無を判定する入力判定手段と、を備えている。【選択図】図３
2010104721.tif 000002
【特許請求の範囲】
【請求項１】
所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段としてコンピュータを機能させるためのゲーム制御プログラムであって、
前記入力検出手段により得られた最新の検出値を含む連続した過去のｎ個の検出値の平均値を求めるｎサンプル平均演算処理と、
前記入力検出手段により得られた最新の検出値を含む連続した前記ｎ個より多いｍ個の過去の検出値の平均値を求めるｍサンプル平均演算処理と、
前記ｎサンプル平均演算処理により得られたｎ個の検出値の平均値から前記ｍサンプル平均演算処理により得られたｍ個の検出値の平均値を減算して差分値を求める差分演算処理と、
該差分演算処理により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定処理と、
を前記コンピュータに実行させることを特徴とするゲーム制御プログラム。
【請求項２】
所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御するゲーム制御方法であって、
前記入力検出手段により得られた最新の検出値を含む連続した過去のｎ個の検出値の平均値を求めるｎサンプル平均演算ステップと、
前記入力検出手段により得られた最新の検出値を含む連続した前記ｎ個より多いｍ個の過去の検出値の平均値を求めるｍサンプル平均演算ステップと、
前記ｎサンプル平均演算ステップにより得られたｎ個の検出値の平均値から前記ｍサンプル平均演算ステップにより得られたｍ個の検出値の平均値を減算して差分値を求める差分演算ステップと、
該差分演算ステップにより得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定ステップと、
を備えてなることを特徴とするゲーム制御方法。
【請求項３】
所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段を備えたゲーム装置であって、
前記制御手段は、
前記入力検出手段により得られた最新の検出値を含む連続した過去のｎ個の検出値の平均値を求めるｎサンプル平均演算手段と、
前記入力検出手段により得られた最新の検出値を含む連続した前記ｎ個より多いｍ個の過去の検出値の平均値を求めるｍサンプル平均演算手段と、
前記ｎサンプル平均演算手段により得られたｎ個の検出値の平均値から前記ｍサンプル平均演算手段により得られたｍ個の検出値の平均値を減算して差分値を求める差分演算手段と、
該差分演算手段により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定手段と、
を備えてなることを特徴とするゲーム装置。
【請求項４】
請求項１に記載のゲーム制御プログラムを格納した情報記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プレイヤーの振動入力操作を加速度センサ等の振動検出手段を備えた入力検出手段により検出し、この検出された入力信号に基づいたゲーム処理をゲーム装置のコンピュータに実行させるゲーム制御プログラム、ゲーム制御方法およびそのゲーム装置に関するものである。
【背景技術】
【０００２】
従来、アーケードゲーム等のゲーム装置において音楽ゲーム等を行うためのプレイヤーの操作の入力手段として、楽器を模したコントローラを使用するものが知られている。例えば、特許文献１には、ギター等の弦楽器、ドラム等の打楽器、あるいはピアノ等鍵盤楽器を模したコントローラを用いて、ゲームを進行させる発明が開示されている。
【０００３】
また、家庭用ゲーム機用のコントローラとして、素手で叩くコンガのような打楽器、または、バチで叩く太鼓のような打楽器を模したコントローラを用いて、プレイヤーが入力装置を叩く動作により生ずる振動により、プレイヤーの操作入力を検出するゲーム装置も知られている（特許文献２、特許文献３参照）。
【０００４】
また、例えば、特許文献４には、複数の操作ボタンを備え、内部に加速度センサ等の振動検出手段を備えた汎用のゲーム装置用コントローラに関する発明が開示されている。
【０００５】
【特許文献１】特開２０００−１２６４６０号公報
【特許文献２】特開２００７−３２５９１６号公報
【特許文献３】特開２００４−３１３７６４号公報
【特許文献４】特開２００７−３１３３５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１に開示されているような入力手段を用いたゲームを家庭で行おうとすると、大掛かりな装置を購入して屋内に設置しなければならず、価格的にも、設置スペース的にも、一般的な家庭においては困難な要因が多々あり、現実味に乏しい。
【０００７】
また、特許文献２および特許文献３に開示されているような入力手段は、上記特許文献１に開示されているものよりもコンパクトに設計され得るが、特定のゲームに対する専用の入力装置であるので、他のゲームで使用することができず、不使用時の収納場所を確保しなければならない等の課題があった。
【０００８】
また、特許文献４に開示されているような入力手段は、複数の操作ボタンを備え、多機能で汎用性に富む一方、各操作ボタンの位置や、各操作ボタンに割り当てられるゲームごとの機能等を熟知していないと、十分に使いこなすことができない。また、コントローラを常に保持している必要があり、何らかの理由によりコントローラを保持することができない者、また、普段長時間ゲームコントラーラを保持したことの無いようなゲームの初心者にとっては少なからぬ負担となり、ゲームに対する興味を減らす一因となっていた。
【０００９】
また、一般的な加速度センサ等を備えたコントローラを使用したとき、単純に振動の有無のみを検出する場合であれば問題ないが、加速度センサの加速度検出信号（検出値）のみで入力振動の向き（入力された方向）を検出しようとすると、ある程度以上の強さの振動入力があった場合には、一般の加速度検出手段による振動検知の場合、入力があった方向に対して、「揺り戻し」や「揺り返し」と呼ばれる検出手段が元の位置に戻ろうとする逆方向の信号が一瞬本来の入力タイミングの直後、又は直前に発生することがある為、制御手段側では本来の意図として入力された信号を検出した後に、本来の意図とは逆向きの誤認識入力を検出させてしまう場合がある。
また、ゲーム装置本体とコントローラ装置を無線にて接続（無線通信にて信号の授受を行なっている）ため、関係の無いノイズ電波を受信したりする場合もある。
【００１０】
例えば、キャラクターの移動をさせるような一般的なアクションゲーム等においては、プレイヤーの操作するキャラクターの移動入力が主制御装置が画面書き換えに必要とする最小単位である一単位時間（おおよそ１／３０秒から１／６０秒）の間だけ逆方向に誤認識されても、ほとんどゲームの進行に支障はないが、伴奏に合わせて非常に短い間隔を基準として正確な入力をすることを競ういわゆる音楽ゲームや、より早く正解となる入力を行ういわゆるクイズゲームや反射神経訓練系トレーニングゲーム等においては、正確な入力を連続的に行うことによるゲーム性が重要視されるため、上記したようなプレイヤーの意に反した逆向きの誤認識信号が発生すると、ゲームの性質上当該プレイヤーはその時点で間違い入力をしたという判定となり、結果としてプレイヤーは一気にゲームに対する興趣を損ねてしまうという課題があった。
【００１１】
本発明はこのような従来の問題に鑑みてなされたものであって、特殊な入力装置を用いることなく、広く流通している汎用性の高い操作装置を用いて、操作入力に必要な複数のボタンおよびこれらに割り当てられた機能を覚えることなく操作を可能とするゲーム制御プログラム、ゲーム制御方法およびゲーム装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記した従来の課題を解決するために請求項１に記載の発明は、所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段としてコンピュータを機能させるためのゲーム制御プログラムであって、前記入力検出手段により得られた最新の検出値を含む連続した過去のｎ個の検出値の平均値を求めるｎサンプル平均演算処理と、前記入力検出手段により得られた最新の検出値を含む連続した前記ｎ個より多いｍ個の過去の検出値の平均値を求めるｍサンプル平均演算処理と、前記ｎサンプル平均演算処理により得られたｎ個の検出値の平均値から前記ｍサンプル平均演算処理により得られたｍ個の検出値の平均値を減算して差分値を求める差分演算処理と、該差分演算処理により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定処理と、を前記コンピュータに実行させることを特徴とする。
【００１３】
請求項２に記載の発明は、所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御するゲーム制御方法であって、前記入力検出手段により得られた最新の検出値を含む連続した過去のｎ個の検出値の平均値を求めるｎサンプル平均演算ステップと、前記入力検出手段により得られた最新の検出値を含む連続した前記ｎ個より多いｍ個の過去の検出値の平均値を求めるｍサンプル平均演算ステップと、前記ｎサンプル平均演算ステップにより得られたｎ個の検出値の平均値から前記ｍサンプル平均演算ステップにより得られたｍ個の検出値の平均値を減算して差分値を求める差分演算ステップと、該差分演算ステップにより得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定ステップと、を備えてなることを特徴とする。
【００１４】
請求項３に記載の発明は、所定の間隔で振動を検知する振動検知手段を備えた入力検出手段により検出された入力検出信号に基づいてゲームの進行を制御する制御手段を備えたゲーム装置であって、前記制御手段は、前記入力検出手段により得られた最新の検出値を含む連続した過去のｎ個の検出値の平均値を求めるｎサンプル平均演算手段と、前記入力検出手段により得られた最新の検出値を含む連続した前記ｎ個より多いｍ個の過去の検出値の平均値を求めるｍサンプル平均演算手段と、前記ｎサンプル平均演算手段により得られたｎ個の検出値の平均値から前記ｍサンプル平均演算手段により得られたｍ個の検出値の平均値を減算して差分値を求める差分演算手段と、該差分演算手段により得られた差分値と予め設定された閾値に基づいて前記入力手段への振動入力操作の有無を判定する入力判定手段と、を備えてなることを特徴とする。
【００１５】
請求項４に記載の発明は、請求項１に記載のゲーム制御プログラムを格納した情報記憶媒体である。
【００１６】
本願の特許請求の範囲および明細書の記載において、振動検出手段とは、例えば、加速度センサやジャイロセンサ等の、印加された振動入力を検出して、その振動の向きおよび大きさに対応した検出信号を出力し得る手段を意味する。したがって、検出した入力振動をそのままベクトル量として出力するものでも良いし、検出したベクトル量を演算処理して所定の振動値として出力するものでも良い。また、入力検出手段とは、少なくとも、上記振動検出手段を備えた入力検出装置を意味し、制御手段に入力振動の検出値を出力する機能を有し、例えば、家庭用ゲーム機に汎用性の高いリモコンやゲームコントローラなどを広く含む。
【００１７】
また、入力手段とは、少なくとも、プレイヤーが振動入力操作可能な操作面を備え、操作面に入力された振動を入力検出手段の振動検出手段に伝播可能なものであれば良い。例えば、机やテーブルの天板自体が振動を検知しでも良いし、その上に検出手段コントローラを載置する形態でも良いし、段ボール箱や金属板製の台等でも良い。
【００１８】
振動検出手段は、少なくとも、入力手段に入力検出手段が載置されたとき、振動検出手段の位置を原点として１軸方向の振動の検出が可能なものであれば良い。例えば、振動検出手段の位置を原点として入力手段の左右方向に有効な検出軸を有する場合、入力手段への振動操作入力の入力位置が振動検出手段の右側であるか左側であるか（例えば、右側の入力に対して＋の値、左側の入力に対して−の値等）を識別可能な検出値を出力する。また、有効な検出軸を上記した左右方向の１軸とこれに対して入力手段の入力面上で直交する前後方向に有効な１軸との２軸を有する振動検出手段を用いてもよい。さらに、上記した左右方向、前後方向の２軸に加えて、入力面に直交する上下方向の１軸を加えた、有効な検出軸を各々直交する３軸方向に有する振動検出手段を用いることもできる。
【００１９】
なお、情報記憶媒体とは、例えば、光ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、ＲＡＭ、ＲＯＭなど、コンピュータ等において読み取り可能なプログラムを格納（記憶）可能な媒体を広く含む。
【発明の効果】
【００２０】
本発明によれば、少なくとも振動検出手段を備えた汎用性の高い家庭用ゲーム機の入力検出手段（リモコン、ゲームコントローラ等）とこの入力検出手段が載置可能で振動入力操作が可能な操作面を有する入力手段（机、空き箱等）により構成し得る入力装置から得られる入力検出信号（検出値）を用いてゲームの制御を行うことができるので、大規模な入力装置や特殊なゲーム専用の入力装置を使用することなく、多彩なゲームを楽しむことができる。
【００２１】
また、入力操作が、入力手段の操作面に振動を加える、例えば、操作面の一部を指で叩く等の簡単な操作で可能なので、汎用のコントローラ等に備えられた複数の操作ボタンの位置や割り当てられている機能等を逐一覚える必要がなく、初心者や敏速なボタン操作が苦手な者でも、入力操作にかかるハンデが少ないゲーム装置を提供することができる。
【００２２】
また、制御手段が、入力検出手段により得られた最新の検出値を含む連続した過去のｎ個の検出値の移動平均値を求めるｎサンプル平均演算処理と、入力検出手段により得られた最新の検出値を含む連続した前記ｎ個より多いｍ個の過去の検出値の移動平均値を求めるｍサンプル平均演算処理と、ｎサンプル平均演算処理により得られたｎ個の検出値の平均値から前記ｍサンプル平均演算処理により得られたｍ個の検出値の移動平均値を減算して差分値を求める差分演算処理と、この差分演算処理により得られた差分値と予め設定された閾値に基づいて入力手段への振動入力操作の有無を判定する入力判定処理と、をコンピュータに実行させるので、例えば、ｎを２〜４程度の時系列的に短期間でサンプリングした短期のサンプル数として設定し、ｍを１６〜３２程度の時系列的に長期間についてサンプリングした長期のサンプル数として設定することができ、これらの平均値の差分値を操作入力振動の有効性の判定に用いることにより、入力手段へのプレイヤーの操作入力とプレイヤーが意図しない外乱ノイズによる振動とを精度良く識別することができる。
【００２３】
すなわち、ｎサンプル平均演算処理により、入力検出手段から得られる生の検出値を短期の少ないサンプル数の検出値で平滑化した、生の検出値のトレンド（傾向）に近い演算値（平均値）が得られる。一方、ｍサンプル平均演算処理により、入力検出手段から得られる生の検出値をｎ個より十分に多い長期のサンプル数で平滑化した、ほぼ入力振動が０のときに近いレベルの演算値（平均値）が得られる。そして、差分演算処理によりｎサンプル平均演算処理により得られたｎ個の検出値の平均値からｍサンプル平均演算処理により得られたｍ個の検出値の平均値を減算して差分値を求め、入力判定処理において差分演算処理により得られた差分値と予め設定された閾値に基づいて入力手段への振動入力操作の有無を判定するので、信頼性の高い振動入力操作の判定が可能となる。
【００２４】
これにより、瞬発的な外乱ノイズ等をプレイヤーの入力操作による有効な入力振動値として誤認識する可能性を低くすることができ、例えば、音楽ゲーム等の入力判定手段として誤認識の極めて少ないゲーム装置を提供することができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の一実施形態について、図面を参照して説明する。図１は、本実施形態に係るゲーム装置を用いたゲームシステム１を説明するための説明図（外観図）である。
【００２６】
図１において、当該ゲームシステム１は、家庭用テレビジョン受像機等のスピーカ２ａを備えたディスプレイ（以下「モニタ」という）２に、接続コードを介して接続される据え置き型ゲーム装置（以下「ゲーム装置」という）３、当該ゲーム装置３に操作情報を与えるコントローラ７、および、コントローラ７を載置する載置台８によって構成される。ゲーム装置３には、接続端子を介して受信ユニット６が接続される。
【００２７】
受信ユニット６は、コントローラ７から無線通信される送信データを受信し、コントローラ７とゲーム装置３とは無線通信によって接続される。また、ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例の光ディスク４が脱着される。ゲーム装置３には、それぞれ図示しない当該ゲーム装置３の電源ＯＮ／ＯＦＦスイッチ、ゲーム処理のリセットスイッチ、および光ディスク４を脱着可能なディスクトレーを開かせるＯＰＥＮスイッチ等が設けられている。ここで、プレイヤーがＯＰＥＮスイッチを押下することによってディスクトレーがゲーム装置３の内部から外部に導出され、光ディスク４の脱着が可能となる。再び、光ディスク４を脱着した後、ディスクトレーをゲーム装置３に格納することで、ゲーム装置３は光ディスク４の読み取りが可能となる。なお、コントローラ７は本実施形態における入力検出手段であり、載置台８は本実施形態における入力手段である。
【００２８】
また、ゲーム装置３には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード５が必要に応じて着脱可能に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムや操作入力手段からの入力信号に基づいてゲームを実行し、その結果をゲーム画像として表示手段であるモニタ２に表示する。
【００２９】
さらに、ゲーム装置３は、外部メモリカード５に記憶されたセーブデータを用いて、過去にプレイヤーが実行したゲーム状態を再現して、その結果をゲーム画像として表示手段であるモニタ２に表示することができる。そして、ゲームのプレイヤーは、モニタ２に表示されたゲーム画像を見ながら、コントローラ７を操作することによって、ゲーム進行を引き続き実行することができる。
【００３０】
コントローラ７は、その内部に備える通信部７５（後述する）から受信ユニット６が接続されたゲーム装置３へ、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて送信データを無線通信する。コントローラ７は、主にモニタ２に表示されるゲーム空間に登場するプレイヤーオブジェクトを操作するための操作手段である。コントローラ７には、複数の操作ボタン、方向キー、および、スティック等の操作部が設けられている。
【００３１】
載置台８は、コントローラ７を載置する載置面８ｂとプレイヤーが操作する操作面８ａを備え、プレイヤーがこの載置台８の操作面８ａを叩くことにより載置台８に振動が生じ、その載置台８の振動がコントローラ７に伝わり、そのコントローラ７に伝わった振動を後述するコントローラ７に内蔵された加速度センサ７３により検知させるためのものである。
【００３２】
本実施形態においては、ボール紙等で作られた箱型状の載置台８を用いている。なお、載置台８をプレイヤーが叩いたときにコントローラ７に振動が伝わる材質（例えば、ボール紙などで作られた箱、木材などの板状のもの）であれば特に材質はボール紙等に限定されるものではない。ただし、載置台８にプレイヤーが与えた振動が吸収されてしまうような振動を伝わらせ難い軟らかい素材は、あまり好ましくない。また形状についても箱型に限定されず、例えば、板状（木材等）のものであってもよい。
【００３３】
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００３４】
図２において、ゲーム装置３は、各種プログラムを実行する、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０を備える。ＣＰＵ３０は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、メインメモリ３３等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。ＣＰＵ３０には、メモリコントローラ３１を介して、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３２、メインメモリ３３、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３４、および、ＡＲＡＭ（Ａｕｄｉｏ  ＲＡＭ）３５が接続される。また、メモリコントローラ３１には、所定のバスを介して、コントローラＩ／Ｆ（インターフェース）３６、ビデオＩ／Ｆ３７、外部メモリＩ／Ｆ３８、オーディオＩ／Ｆ３９、および、ディスクＩ／Ｆ４１が接続され、それぞれ受信ユニット６、モニタ２、外部メモリカード５、スピーカ２ａ、および、ディスクドライブ４０が接続されている。
【００３５】
ＧＰＵ３２は、ＣＰＵ３０の命令に基づいて画像処理を行うものであり、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。ＧＰＵ３２は、図示しない画像処理専用のメモリやメインメモリ３３の一部の記憶領域を用いて画像処理映像を生成し、適宜メモリコントローラ３１およびビデオＩ／Ｆ３７を介してモニタ２に出力する。なお、ＣＰＵ３０ならびにＧＰＵ３２は、本実施形態における制御手段の一例に該当する。
【００３６】
メインメモリ３３は、ＣＰＵ３０で使用される記憶領域であって、図示しないＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）とＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）からなり、ＣＰＵ３０の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ３３は、ＣＰＵ３０によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ３３に記憶されたゲームプログラムや各種データ等がＣＰＵ３０によって実行される。
【００３７】
図３に示すように、ゲームプログラムＰには、載置判定プログラムＰ１、基準振動開始プログラムＰ２、基準振動検知プログラムＰ３、固有振動値算出プログラムＰ４、補正値算出プログラムＰ５、入力振動値演算プログラムＰ６、入力判定プログラムＰ７、補正値操作変換プログラムＰ８、関連振動設定プログラムＰ９等のプログラムが含まれている。ＣＰＵ３０は、これらのプログラムを適宜読み込んで各種の処理を実行する。
【００３８】
載置判定プログラムＰ１は、ゲームスタート時にコントローラ７の加速度センサ７３（図５（ａ）参照）が所定時間（例えば、５秒程度）、所定の値（いわゆる暗振動の検出値）より大きな加速度（振動）を検出しなかった場合に、載置台８にコントローラ７が載置されたことを確認するためのプログラムである。なお、コントローラ７が載置されたことが確認できなかった場合、上記に加えてモニタ２にコントローラ７の載置を促すメッセージを適宜表示させることも可能である。
【００３９】
基準振動開始プログラムＰ２は、上記載置判定プログラムＰ１の起動後に、コントローラ７の振動発生器７４（図５（ｂ）参照）を作動させて、一定時間（例えば、１秒程度）、載置台８に基準振動を与えるためのプログラムである。
【００４０】
基準振動検知プログラムＰ３は、上記基準振動開始プログラムＰ２により載置台８基準振動をコントローラ７の加速度センサ７３が検出し、コントローラ７から送信される検出値を受信してメインメモリ３３の所定の記憶領域に記憶する処理を行うプログラムである。
【００４１】
固有振動値算出プログラムＰ４は、上記基準振動検知プログラムＰ３によりメインメモリ３３に記憶された検出値に基づいて、載置台８における固有の振動値を算出するプログラムである。この固有振動値算出プログラムＰ４は、メインメモリ３３に記憶された複数（例えば、５サンプル）の検出値の平均値を求めることにより、載置台８における固有の振動値を算出する。
【００４２】
補正値算出プログラムＰ５は、上記固有振動値算出プログラムＰ４に基づいて算出された載置台8の固有の振動値に基づき補正値を算出するプログラムである。この補正値算出プログラムＰ５により算出された補正値を用いて、後述する補正値操作変換プログラムＰ８で補正された振動値に基づく処理を行うことができる。より具体的には、載置台８における振動値に補正値を加えることで、載置台８の素材によって、プレイヤー自身が載置台８に与える振動の強さを加減する必要がなくなる。すなわち、載置台８の材質が軟らかい素材（振動が伝わり難い素材）であっても、硬い素材（振動が伝わり易い素材)であっても、プレイヤーがとりわけ叩く強さを変更する必要がないように構成されている。
【００４３】
入力振動値演算プログラムＰ６は、プレイヤーの入力操作が加速度センサ７３により検出されて、コントローラ７からゲーム装置３に送信される連続する複数の検出値に基づいて入力判定のための振動値を演算処理するためのプログラムであり、サブプログラムとして、ｎサンプル平均演算プログラムＰ６ａと、ｍサンプル平均演算プログラムＰ６ｂと、差分演算プログラムP６cを備えている。本実施形態においてｎサンプル平均演算プログラムＰ６ａおよびｍサンプル平均演算プログラムＰ６ｂは、それぞれ、ｎサンプル平均演算手段およびｍサンプル平均演算手段である。また、差分演算プログラムP６ｃは、本実施形態における差分演算手段である。
【００４４】
ｎサンプル平均演算プログラムＰ６ａは、コントローラ７（入力検出手段）により得られた最新の検出値とその直前の検出値との平均値を求める演算処理を行うプログラムである。本実施形態においては、サンプリング数をｎ＝２としている。具体的には、プレイヤーにより入力される入力振動に対してコントローラ７から得られた最新の検出値Ｖｎとその直前の検出値Ｖｎ−１の平均値を求める演算処理を行う。
【００４５】
ｍサンプル平均演算プログラムＰ６ｂは、コントローラ７（入力検出手段）により得られた最新の検出値（Ｖｎ）を含む最新の検出値（Ｖｎ）以前の連続する複数の検出値の平均値を求める演算処理を行うプログラムである。本実施形態においては、サンプリング数をｍ＝１６としている。具体的には、プレイヤーにより入力される入力振動に対する最新の検出値Ｖｎを含むＶｎ以前の１５個の検出値（Ｖｎ−１５〜Ｖｎ−１）の平均値を求める演算処理を行う。すなわち、１６個の連続する検出値（Ｖｎ−１５〜Ｖｎ）をサンプリングして平均値を求める。
【００４６】
差分演算プログラムＰ６ｃは、上記ｎサンプル平均演算プログラムＰ６ａにより得られる平均値と上記ｍサンプル平均演算プログラムＰ６ｂにより得られる平均値との差分値を求めることにより、プレイヤーにより入力される振動が有効な振動入力操作であるか否かを判定するための振動値を算出する処理を行うプログラムである。
【００４７】
入力判定プログラムＰ７は、ゲームの開始後にプレイヤーによって入力される振動が加速度センサにより検知されて、コントローラ７からゲーム装置３に送信された入力振動の検出値に基づいて上記差分演算プログラムＰ６ｃにより算出される振動値と、予め設定された閾値とを比較して、当該振動値が有効な入力振動検出値であるか否かを判定する処理を行うプログラムである。すなわち、コントローラ７からゲーム装置３に送信された入力振動の振動値が、閾値よりも大きな値であれば有効な入力操作であると判定し、閾値以下の値であれば無効（ノイズ信号）であると判定する。
【００４８】
補正値操作変換プログラムＰ８は、コントローラ７から送信された有効な入力操作であると判定された振動値と、上記補正値算出プログラムＰ５から算出された補正値とに基づいて、プレイヤーの操作をゲームに反映させるためのプログラムである。
【００４９】
関連振動設定プログラムＰ９は、コントローラ７から送信された検出値から算出された振動値のうち、有効な入力操作として判定された1回の振動値以外の信号を前記1回の振動に付随した関連振動として設定するためのプログラムである。プレイヤーの操作入力信号として入力したはずの1回の操作信号以外の信号を関連振動として設定することで、プレイヤー操作による有効振動値をより確実な操作入力信号として設定することができる。
【００５０】
ＤＳＰ３４は、ゲームプログラム実行時にＣＰＵ３０において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのＡＲＡＭ３５が接続される。ＡＲＡＭ３５は、ＤＳＰ３４が所定の処理（例えば、先読みしておいたゲームプログラムやサウンドデータの記憶）を行う際に用いられる。ＤＳＰ３４は、ＡＲＡＭ３５に記憶されたサウンドデータを読み出し、メモリコントローラ３１およびオーディオＩ／Ｆ３９を介してモニタ２に備えるスピーカ２ａに出力させる。
【００５１】
メモリコントローラ３１は、データ転送を総括的に制御するものであり、上述した各種Ｉ／Ｆが接続される。コントローラＩ／Ｆ３６は、例えば４つのコントローラＩ／Ｆ３６ａ〜３６ｄで構成され、それらが有するコネクタを介して外部機器とゲーム装置３とを通信可能に接続する。例えば、受信ユニット６は、上記コネクタと嵌合し、コントローラＩ／Ｆ３６を介してゲーム装置３と接続される。上述したように受信ユニット６は、コントローラ７からの送信データを受信し、コントローラＩ／Ｆ３６を介して当該送信データをＣＰＵ３０へ出力する。ビデオＩ／Ｆ３７には、モニタ２が接続される。外部メモリＩ／Ｆ３８には、外部メモリカード５が接続され、その外部メモリカード５に設けられたバックアップメモリ等とアクセス可能となる。オーディオＩ／Ｆ３９にはモニタ２に内蔵されるスピーカ２ａが接続され、ＤＳＰ３４がＡＲＡＭ３５から読み出したサウンドデータやディスクドライブ４０から直接出力されるサウンドデータをスピーカ２ａから出力可能に接続される。ディスクＩ／Ｆ４１には、ディスクドライブ４０が接続される。ディスクドライブ４０は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置３のバスやオーディオＩ／Ｆ３９に出力する。
【００５２】
次に、図４を参照して、本発明に係る入力検出手段の一例であるコントローラ７について説明する。なお、図４（ａ）は、コントローラ７の上面後方から見た斜視図であり、図４（ｂ）は、コントローラ７を下面後方から見た斜視図である。
【００５３】
図４（ａ）および図４（ｂ）において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状をしており、全体として大人や子供の片手で把持可能な大きさである。
【００５４】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、矢印で示す４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤーが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向が選択される。例えば、プレイヤーが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤーキャラクター等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【００５５】
なお、十字キー７２ａは、上述したプレイヤーの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもよい。例えば、リング状に４方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチや、ハウジング７１上面から突出した傾倒可能なスティック等を上記十字キー７２ａの代わりに設けてもよい。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもよい。また、少なくとも４つの方向（前後左右）をそれぞれ示すスイッチに対して、プレイヤーによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもよい。
【００５６】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられている。操作ボタン７２ｂ〜７２ｇは、プレイヤーがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇにボタンごとに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、Ｘボタン、Ｙボタン、および、Ｂボタン等としてゲームの内容に応じて、それぞれモニタ上に新しいウィンドウを表示させる、モニタからの操作指示確認に対して、了解あるいは否定するなど、それぞれのボタンごとに割り振られた機能を実行する。また、操作ボタン７２ｅ〜７２ｇには、セレクトスイッチ、メニュースイッチ、および、スタートスイッチ等としての機能が割り当てられる。これらの操作ボタン７２ｂ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるものである。ただし、本実施形態においては、振動発生手段に該当するバイブレータ７４、振動検知手段に該当する加速度センサ７３を有していれば、特にこれらの操作ボタンを全て有していなくともよい。したがって、コントローラ７としては汎用のコントローラに限らず、例えば、マウスのような操作手段であっても載置台８に載置可能な操作手段であればよい。
【００５７】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置３本体の電源をオン／オフする電源スイッチである。なお、この操作ボタン７２ｈは、その上面をハウジング７１の上面に埋没させることにより、プレイヤーが不意に誤って押下することのないボタンとすることができる。
【００５８】
なお、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。このＬＥＤ７０２は、例えば、コントローラ７に現在設定されている上記コントローラ種別をプレイヤーに通知するために用いることが可能である。たとえば複数のプレイヤーによって複数のゲーム画面に表示されているキャラクターを操作する場合に、複数のＬＥＤ７０２の発光方法を変えることで、どのコントローラから送信された操作入力信号に基づいて、ゲーム画面上のキャラクターが操作されているのかをプレイヤーに通知することが可能である。また、複数のＬＥＤを同時に発光させることで、そのコントローラがゲーム装置に認識されたこと、あるいはなんらかの異常をプレイヤーに通知することが可能となる。
【００５９】
ここで、コントローラ７に対して設定する座標系について定義する。図４（ａ）および図４（ｂ）に示すように、互いに直交するＸＹＺ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をＺ軸とし、コントローラ７の前面方向をＺ軸正方向とする。また、コントローラ７の上下方向をＹ軸とし、ハウジング７１の上面（十字キー７２ａが設けられた面）方向をＹ軸正方向とする。さらにコントローラ７の左右方向をＸ軸とし、ハウジング７１の左側面（図４（ａ）では表されずに図４（ｂ）で表されている側面）方向をＸ軸正方向とする。
【００６０】
次に図５を参照して、コントローラ７の内部構造について説明する。なお、図５（ａ）は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を示す斜視図であり、図５（ｂ）は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を示す斜視図である。ここで、図５（ｂ）に示す基板７００は、図５（ａ）に示す基板７００の裏面から見た斜視図となっている。
【００６１】
図５（ａ）において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７３、ＬＥＤ７０２、水晶振動子７０３、無線モジュール５３、および、アンテナ５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示しない）によってマイコン５１（図６参照）に接続される。加速度センサ７３は、コントローラ７が配置された３次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。なお、加速度センサ７３は、本実施形態における振動検知手段に該当する。
【００６２】
本実施形態において、図６に示すように、コントローラ７は３軸の加速度センサ７３を備えている。この３軸の加速度センサ７３は、３方向、すなわち、上下方向（図４に示すＹ軸）、左右方向（図４に示すＸ軸）、および前後方向（図４に示すＺ軸）で直線加速度を検知する。
また、加速度センサ７３をマイコン５１（または他のプロセッサ）と組み合わせて用いることによって、例えば、静的な加速度（重力加速度）が検知されると、加速度センサ７３からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象（コントローラ７）の傾きを判定することができる。このように、加速度センサ７３をマイコン５１（または他のプロセッサ）と組み合わせて用いることによって、コントローラ７の傾き、姿勢または位置を判定することができる。
【００６３】
また、無線モジュール５３およびアンテナ５４を有する通信部７５によって、コントローラ７がワイヤレスコントローラとして機能する。なお、水晶振動子７０３は、後述するマイコン５１の基本クロックを生成する。
【００６４】
一方、図５（ｂ）において、基板７００の下主面上の後端に電池７６が収容される。また、基板７００の下主面上には、バイブレータ７４が取り付けられる。このバイブレータ７４は、例えば振動モータやソレノイドであってよい。バイブレータ７４が作動することによってコントローラ７に振動が発生する。
【００６５】
次に、図６を参照して、コントローラ７の内部構成について説明する。なお、図６は、コントローラ７の構成を示すブロック図である。
【００６６】
加速度センサ７３は、上述したようにコントローラ７の上下方向（Ｙ軸方向）、左右方向（Ｘ軸方向）、および前後方向（Ｚ軸方向）の３軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ７３が検知した３軸成分の加速度を示すデータは、それぞれ通信部７５へ出力される。この加速度センサ７３から出力される加速度データに基づいて、コントローラ７の動きを判定することができる。なお、加速度センサ７３は、特定のアプリケーションで必要なデータに応じて何れか２軸または１軸に対してそれぞれ加速度を検出する加速度センサが用いられてもかまわない。
【００６７】
通信部７５は、マイクロコンピュータ（以下「マイコン」で統一する）５１、メモリ５２、無線モジュール５３、およびアンテナ５４を含んでいる。マイコン５１は、処理の際にメモリ５２を記憶領域として用いながら、送信データを無線送信する無線モジュール５３を制御する。
【００６８】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７３からの３軸方向の加速度信号（Ｘ、Ｙ、およびＺ軸方向加速度データ）が、マイコン５１に出力される。マイコン５１は、入力した各データ（キーデータ）、Ｘ、Ｙ、およびＺ軸方向加速度データを受信ユニット６へ送信する送信データとして一時的にメモリ５２に格納する。ここで、通信部７５から受信ユニット６への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）で行われ、Ｂｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）で構成される通信部７５の送信間隔は５ｍｓで行われる。マイコン５１は、受信ユニット６への送信タイミングが到来すると、メモリ５２に格納されている送信データを一連の操作情報として出力し、無線モジュール５３へ出力する。そして、無線モジュール５３は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７３からのＸ、Ｙ、およびＺ軸方向加速度データがコントローラ７から送信される。そして、ゲーム装置３の受信ユニット６でその電波信号を受信し、ゲーム装置３で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、Ｘ、Ｙ、およびＺ軸方向加速度データ）を取得する。そして、ゲーム装置３のＣＰＵ３０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Ｂｌｕｅｔｏｏｔｈ（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００６９】
次に、図７および図８を用いて、本実施形態で想定するゲームの概要について説明する。なお、図７（ａ）は本実施形態におけるゲームシステムにて実行されるゲームにおいて、モニタ２の画面２ｂに表示される画像の一例を示し、図７（b）は、当該ゲームにおける入力装置の外観を示している。また、図８（ａ）は本実施形態におけるゲームシステムにて実行される他のゲームにおいて、モニタ２の画面２ｂに表示される画像の一例を示し、図８（b）は、当該ゲームにおける入力装置の外観を示している。
【００７０】
図７に示すゲームは、プレイヤーが図７（ａ）に示すモニタ２の画面２ｂに表示される指令表示（M１〜M４）に応答して、図７（ｂ）に示す載置台８のコントローラ７に対して右側の操作面８ａＲまたは左側の操作面８ａＬをタイミングよく叩く操作により得点を競うゲームである。
【００７１】
ゲームが開始されると、図７（ａ）に示すような指令表示Ｍ１、Ｍ２等が、規則的または不規則的な時間間隔で画面２ｂの右端から左端へ向けてスクロール表示される。なお、図７（ａ）において、丸囲いの指令表示Ｍ１等の中に描いてある矢印の向きが、プレイヤーが操作すべき操作面を示している。すなわち、図７（ａ）において、指令表示Ｍ１、Ｍ３およびＭ４には左向きの矢印が表示されているので、プレイヤーは図７（ｂ）に示す左側の操作面８ａＬを操作する（叩く）ことにより当該指令を達成する。一方、指令表示Ｍ２には右向きの矢印が表示されているので、プレイヤーは図７（ｂ）の右側の操作面８ａＲを操作することにより当該指令を達成する。
【００７２】
本実施形態においては、画面２ｂ右端から左端に向けてスクロール表示される指令表示Ｍ１等が、画面２ｂの左側に設定されている仕切り線ＧＬに到達してから仕切り線ＧＬの左側の表示領域へ移動するまでの間にプレイヤーが操作面８ａＬを操作すると、例えば、「ＧＯＯＤ！」の表示とともに所定の得点が加算される。一方、指令表示Ｍ１等が仕切り線ＧＬに到達しないうちに操作が行われたとき、または、指令表示Ｍ１等が仕切り線ＧＬより左側の表示領域に移動してもプレイヤーの操作が行われないと、当該指令表示に基づく得点を得ることはできない。また、仕切り線ＧＬに架かる指令表示Ｍ１等に表示されている矢印の向きと反対側の操作面を操作してしまうと減点となる。なお、プレイヤーの操作に対する得点の加点、減点の規則は上記した以外にも任意に設定できるものである。
【００７３】
上記したゲームの効果演出として、例えば、左右の操作面８ａＬ、８ａＲをプレイヤーが操作したことに対応して、それぞれ、コンガの左右の太鼓を叩いたときの音響をスピーカ２ａから発生させることにより、音楽ゲームとしての興趣を向上させることができる。
【００７４】
図８は、本実施形態におけるゲームシステムにて実行される他のゲームの画面表示例（図８（ａ））および入力装置の外観（図８（ｂ））を示している。図８に示すゲームも、図７に示したゲームと同様に、プレイヤーがモニタ２の画面２ｂに表示される指令表示（Ｍ５、Ｍ６）に応答して、図８（ｂ）に示す載置台８のコントローラ７に内蔵されている加速度センサ７３に対して右前方の操作面８ａＲＦ、右後方の操作面８ａＲＲ、左前方の操作面８ａＬＦまたは左後方の操作面８ａＬＲのいずれかの操作面をタイミングよく叩く操作により得点を競うゲームである。
【００７５】
本実施形態における加速度センサ７３は、少なくとも、左右方向と前後方向の、操作面８ａ上で略直行する２方向に有効な検出軸を備えたものが用いられる。
【００７６】
ゲームが開始されると、モニタ２の画面２ｂに図８（ａ）に示すような指令表示Ｍ５、Ｍ６等が規則的または不規則的に４分割された表示領域のいずれか１つまたは２つの表示領域に所定時間（例えば、１秒程度）表示される。なお、図８（ａ）において指令表示Ｍ５はプレイヤーが左前方の操作面８ａＬＦを操作する（叩く）ことにより当該指令を達成することを示し、同図中指令表示Ｍ６はプレイヤーが右後方の操作面８ａＲＲを操作することにより当該指令を達成することを示している。
【００７７】
本実施形態においては、画面２ｂのいずれかの表示領域に表示される指令表示Ｍ５、Ｍ６等が表示されているときに、プレイヤーが対応する操作面８ａＲＦ、８ａＲＲ、８ａＬＦまたは８ａＬＲを操作すると、例えば、「ＧＯＯＤ！」の表示とともに所定の得点が加算される。一方、１秒程度の指令表示Ｍ５等の表示期間中に対応する操作面８ａＬＦ等の操作が行われないと、当該指令表示に基づく得点を得ることはできない。また、指令表示Ｍ５等の表示期間中に対応しない操作面８ａＲＦ等を操作してしまうと減点となる。なお、プレイヤーの操作に対する得点の加点、減点の規則は上記した以外にも任意に設定できるものである。
【００７８】
上記したゲームの効果演出として、例えば、４分割された操作面８ａＲＦ、８ａＲＲ、８ａＬＦまたは８ａＬＲをプレイヤーが操作したことに対応して、それぞれ、ドラムスの各打楽器を叩いたときの音響をスピーカ２ａから発生させることにより、音楽ゲームとしての興趣を向上させることができる。
【００７９】
なお、図示はしないが、載置台８上に２つのコントローラ７を、互いの左右方向および前後方向の有効な検出軸が重ならないように載置することにより、操作面８ａを９分割した入力装置を構成することもできる。このように構成することにより、より複雑な音楽ゲームまたはその他のゲームの入力装置として使用することができる。
【００８０】
次に、図９および図１０を参照して、本実施形態におけるゲームシステム１によって実行されるゲームの初期処理について説明する。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ３０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ３３等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリ３３に読み込まれ、ＣＰＵ３０によって当該ゲームプログラムの実行が開始される。図９に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すものである。
【００８１】
図９においては、ゲーム開始に際して載置場所（本実施形態では載置台８）の振動値を検出する処理を示している。なお、本実施形態における振動値とは、加速度センサ７３により計測されたＸ、Ｙ、およびＺ軸方向加速度データの成分（Ｘ、Ｙ、およびＺ成分ごとの計測値）それぞれを合計した値、または、各成分の検出値を所定のプログラムにより演算処理した値のことをいう。あるいは、Ｘ、Ｙ、およびＺ成分ごとの計測値から合成したベクトルの値をもって振動値とすることもでき、それらはゲームの内容に応じて適宜選択が可能である。
【００８２】
（ステップＳ１０１）（ステップＳ１０２）
ゲーム開始時には、コントローラ７は載置台８に載置された状態となっており、ＣＰＵ３０は、予め設定した所定の回数（Ｎ回）だけ最大振動値を計測するときに用いる変数であるＮをＮ＝１にするとともに、現在の最大振動値をクリアする（メインメモリ３３に記憶されている最大値振動値がある場合、これをクリアする）。
【００８３】
（ステップＳ１０３）
次に、ＣＰＵ３０は、コントローラ７に発振動作を開始させる。具体的には、ＣＰＵ３０が、コントローラ７のマイコン５１を介してバイブレータ７４を作動する信号を送信し、コントローラ７のマイコン５１がバイブレータ７４を作動させることによりコントローラ７の発振動作を開始させる。
【００８４】
（ステップＳ１０４）
そして、コントローラ７において、バイブレータ７４の発信動作によるコントローラ７の振動を加速度センサ７３によって計測された振動の値が、マイコン５１によって検出値として、マイコン５１から無線モジュール５３を介して、ゲーム装置３に送信され、ＣＰＵ３０は、該送信データとして検出値を取得する。
【００８５】
（ステップＳ１０５）
次に、ＣＰＵ３０は、取得した現在の振動値が、現在記憶されている最大振動値以上であるか否かを比較し、判定する。なお、最大振動値は、「Ｎ」が２以上の場合にのみ比較判定されるものである。したがって、「Ｎ」＝１の場合には、ステップＳ１０５における判定は肯定（ステップＳ１０５＝ＹＥＳ）されるものとしている。
【００８６】
（ステップＳ１０６）
上記ステップＳ１０５において、取得した現在の振動値が現在の最大振動値以上であると判定された場合、ＣＰＵ３０は、該現在の振動値を現在の最大振動値としてメインメモリ３３に記憶する。
【００８７】
一方、上記ステップＳ１０５において、取得した現在の振動値が現在の最大振動値に満たないと判定された場合、上記ステップＳ１０６の処理は行われず、ステップＳ１０７に進む。
【００８８】
（ステップＳ１０７）
次に、ＣＰＵ３０は、コントローラ７の発振動作が作動中であり、かつ、発振動作時間が規定時間（例えば、５ｍｓ）以上であるかを判定する。
【００８９】
（ステップＳ１０８）
上記ステップＳ１０７において、コントローラ７の発振動作が作動中であり、かつ、発振動作時間が規定時間以上であると判定された場合、ＣＰＵ３０は、コントローラ７に発振動作（つまり、バイブレータ７４の作動）を停止させる信号を送信する。
【００９０】
（ステップＳ１０９）
上記ステップＳ１０８においてコントローラ７の発振動作が停止状態となった場合、および、上記ステップＳ１０７においてコントローラ７の発振動作中であり発振動作時間が規定時間未満であると判定された場合、ＣＰＵ３０は、振動値を計測している計測時間が予め設定された所定時間以上であるかを判定する。なお、この計測時間が所定時間に到達していた場合はステップＳ１１０に進み、計測時間が所定時間に到達していない場合はステップＳ１０４に戻り、以降の処理が繰り返し行われる。
【００９１】
（ステップＳ１１０）
上記ステップＳ１０９において、計測時間が所定時間に到達したと判定された場合、ＣＰＵ３０は、現在の最大振動値（メインメモリ３３に記憶されている最大振動値）を「Ｎ」回目の最大振動値としてメインメモリ３３に記憶する。
【００９２】
（ステップＳ１１１）（ステップ１１２）
次に、ＣＰＵ３０は、「Ｎ」を「Ｎ＋１」にインクリメントするとともに、「Ｎ」が所定値以上であるかを判定する。なお、「Ｎ」が所定値に到達するまで、上記ステップＳ１０２以降ステップＳ１１２までの処理が繰り返し行われる。
【００９３】
（ステップＳ１１３）
上記ステップＳ１１２において、「Ｎ」が所定値以上であると判定された場合、ＣＰＵ３０は、メインメモリ３３に記憶された「Ｎ」回分の最大振動値、すなわち、「Ｎ」個の最大振動値のうち、最大値および最小値となる値を除く「Ｎ−２」個の最大振動値の平均を算出し、算出された平均値を単位振動値としてメインメモリ３３に記憶する。
【００９４】
（ステップＳ１１４）
上記ステップＳ１１３において、メインメモリ３３に記憶された単位振動値に応じて、ＣＰＵ３０はその単位振動値ごとに予め用意された振動変換テーブル（図示しない）を決定する。
【００９５】
このようにして、ゲーム開始に際して載置場所（本実施形態では載置台８）の振動値（載置場所における固有の振動値）を検出する処理から振動変換テーブルが決定されることにより、載置場所の環境に応じてプレイヤーの動作を検出することが可能となる。すなわち、絶えず振動やノイズが生じているような載置場所においても、当該振動やノイズが、プレイヤーの動作と混同して検出されてしまうことが極力回避される。
また、上述の記載によれば、ゲーム装置本体のＣＰＵ３０がコントローラ７から送信される振動の値によって載置場所（本実施形態では載置台８）の振動値を検出する処理を実施しているが、何らかの理由でＣＰＵ３０とコントローラ７間の無線通信により、エラーが生じる可能性もあるため、これらの処理をコントローラ７のマイコン５１が実施することも可能である。
【００９６】
図１０では、載置場所の固さ（例えば、載置場所としての地面の固さ、載置台の素材の硬さなど）に応じた振動値の推移を示すグラフである。なお、縦軸は振動値、横軸は時間を表している。図１０（ａ）は、載置場所が固い場合（例えば、アスファルト上、鉄板など）の振動値の推移を示しており、図１０（ｂ）は、載置場所が柔らかい場合（例えば、ボール紙など）の振動値の推移を示している。このように載置場所の固さ等が振動値の推移によって計測でき、それに応じた補正値をあらかじめ求めた上で、実際のゲーム実行中に振動を操作入力信号として特定するため、本実施形態におけるゲームシステムでは、コントローラ７が安定して載置できる場所であれば、載置場所の環境に応じてゲームを楽しむことができる。
【００９７】
続いて、ゲーム全体の制御の流れを、図１１に示すステップごとに説明する。
【００９８】
（ステップＳ２０１）
まず、起動後にゲーム開始の操作が行われた場合、以下のゲームプログラム処理が行われる。
【００９９】
（ステップＳ２０２）
最初に、当該音楽ゲームの初期設定が行なわれる。
具体的には、プレイヤーの操作入力により、プレイする楽曲の曲目や、操作難易度の選択をおこなう。
【０１００】
（ステップＳ２０３）
ここでは進行メイン部の処理に移行する。詳しくは図１２で説明する。
なお、本件の実施例においてはこの進行メイン処理（下記ステップＳ３０１〜Ｓ３０９）はおおよそ１／３０秒にて一周し、選択された楽曲が終了するまでの間、１／３０秒を１周期としてループを繰り返すこととなる。
【０１０１】
（ステップＳ２０４）
ここでは、選択された現在の楽曲が終了したか否かの判定を行う。
もしも楽曲が終了した場合には、終了演出に移行する。また、まだ楽曲が終了していない場合には前記ステップＳ２０３（進行メイン処理）に戻り、以下楽曲が終了するまで進行メイン処理を繰り返す。
【０１０２】
（ステップＳ２０５）
ここでは、プレイヤーの演奏した楽曲が終了した後の演出処理を行う。
一例としては、楽曲終了の時点で、該プレイヤーの得点したスコアや成功した入力回数の情報を元に、例えばそのスコアが所定値よりも高い得点の場合には、優秀な成績を残したとしてご褒美の演出を行なう。また、逆に所定の点数に満たなかった場合には失敗として残念な演出を行っても良い。
【０１０３】
（ステップＳ２０６）
以上でゲーム全体の処理を終了する。
【０１０４】
続いて、図１１に示した進行メイン処理（ステップＳ２０３）の処理の内容を、図１２に基づいて説明する。なお、本件の実施例においてはこの進行メイン処理（下記ステップＳ３０１〜Ｓ３０９）はおおよそ１／３０秒にて一周し、選択された楽曲が終了するまでの間、１／３０秒を１周期としてループを繰り返すこととなる。
【０１０５】
（ステップＳ３０１）
ゲーム全体の処理ルーチンにおいて、進行メイン処理のタイミングで、当該処理ルーチンに移行する。
【０１０６】
（ステップＳ３０２）
まず、制御装置であるＣＰＵ３０は前記図１１のステップＳ２０２で設定された内容に基づいて、ゲーム装置本体の外部記憶手段である光ディスク４より設定された進行データを読み出し、メインメモリ３３上に転送する。そして、前記進行データ内からリズム球の進行データを読み出し、それを元に画面に出力をするよう制御を行う。
なお、図７で示したゲームの例（Ｘ軸の左右方向にリズム球が進行する場合）では、Ｘ軸の＋方向側（８ａＲ）、−方向側（８ａＬ）のリズム球の進行データから、それぞれの方向にリズム球の表示を行う。
図８で示したゲームの例（Ｘ軸・Ｚ軸の斜め４方向にリズム球が進行する場合）では、Ｘ＋・Ｚ＋（８ａＲＦ）、Ｘ＋・Ｚ−（８ａＲＲ）、Ｘ−・Ｚ＋（８ａＬＦ）、Ｘ−・Ｚ−（８ａＬＲ）の４方向側のリズム球の進行データから、それぞれの方向にリズム球の表示を行う。
【０１０７】
（ステップＳ３０３）
ここでは、主制御装置であるＣＰＵ３０内の内部タイマ（図示せず）を用いて、一単位時間分（１／３０秒）の経過を待ってゲーム進行時間を一単位分進行させる。具体的には前記画面上に表示されたリズム球を一単位時間分各進行方向に移動表示させ、また伴奏となる楽曲データを上記時間分の進行データに基づいて発生させる。また、前記リズム球を移動表示した結果、画面上の各入力タイミングを指示する仕切り線ＧＬを越えて所定距離進んだ場合には「入力が行なわれなかった」と判定してその旨の処理を行う。
【０１０８】
（ステップＳ３０４）
ここでは、前記のｎサンプル（短期移動平均による短期トレンド）、ｍサンプル（長期移動平均による長期トレンド）を用いた移動平均判定処理を行う。詳しくは図１３で説明する。
【０１０９】
（ステップＳ３０５）
ここでは、前記移動平均判定処理によって検出された各軸毎の入力操作情報と、前記進行データを用いて入力の正誤判定処理を行い、該判定結果に応じて、成功と判定された場合はステップＳ３０６に、失敗と判定された場合はステップＳ３０７に進む。
【０１１０】
図７で示したゲームの例では、まずＸ軸に対して有効な入力の有無の情報を判定し、更に入力が有ったと判定された場合には、その入力がＸ軸の＋方向側（８ａＲ）か、−方向側（８ａＬ）かを求め、その時点での進行データでの入力指令情報と前期入力の内容が一致していたか否かを判定する。例えば、＋方向の入力が有効として検出されたタイミングにおいて、同タイミングで＋方向の入力指令情報があった場合（仕切り線ＧＬ上に右向きの指令表示が重なっている場合）には、「入力あり・入力成功」として判定する。
また、有効な入力があった場合であっても、そのタイミングで該ＧＬ上に対応した指示表示（リズム球）が無かった場合、つまり本来入力すべきでないタイミングでの入力、又は逆方向の入力があった場合はお手つきとして「入力失敗」と判定する。
さらに、有効な入力が無かった場合には、仕切り線ＧＬ上の指示表示（リズム球）の有無に関わらず、スルーとして「スルー入力・入力成功」と判定する。ここでは、実際の入力が無いにも関わらず入力成功としているが、いわゆる音楽ゲームにおいては実際の音楽演奏と同様に休符部分においては「入力しない」という状態をキープすることも重要であり、特に本件実施例のような、具体的な操作ボタンのような入力手段を備えないゲームにおいてはこのような場合でも正しい入力として判定している。
【０１１１】
図８で示したゲームの例では、同様にＸ軸とＺ軸それぞれの入力操作情報からゲーム進行データ（楽曲のリズム入力指示データ）との一致・不一致の判定で成功又は失敗の判定処理を行う。
【０１１２】
（ステップＳ３０６）（ステップＳ３０７）
ここでは、前記ステップＳ３０５の判定結果に基づいてそれぞれの処理を行う。一例として、ステップＳ３０６の成功処理では、例えば入力が正しかったことを示す意味で画面の仕切り線ＧＬ付近に成功を示す「ＧＯＯＤ！」の表示を行ったり、仕切り線ＧＬの表示ラインの強調表示を行ったり、入力状況に応じた得点の加点処理を行う。
また、一例としてステップＳ３０７の失敗処理では、例えば入力が間違ったことを示す意味で画面の仕切り線ＧＬ付近に失敗を示す「ＭＩＳＳ」の表示を行ったり、ラインの表示色を暗い色や注意警戒色に変化させ変化を行なったりしても良い。
【０１１３】
（ステップＳ３０８）
ここでは、前記ステップＳ３０６・Ｓ３０７での成功・失敗処理の結果に基づき、演出処理を行う。
一例として、例えば成功判定が連続して行われた場合には、連続成功時間に応じて成功継続状態を示す時間やタイマーカウントを表示したり、画面上ににぎやかなキャラクターを表示したり、背景の画像を変化させたり、ゲーム音楽の音量・音色を変化させるなどの処理を行う。
【０１１４】
（ステップＳ３０９）
ここでは、一単位時間の処理を終了し、元の図１１のステップＳ２０４に進む。
【０１１５】
続いて、図１２のステップＳ３０４に示した移動平均判定処理の詳細な処理内容を、図１３に基づいて説明する。
【０１１６】
（ステップＳ４０１）
進行メイン処理ルーチンにおいて、移動平均入力判定処理のタイミングで、当該処理ルーチンに移行する。
【０１１７】
（ステップＳ４０２）
まず、操作入力手段のＸ、Ｙ、Ｚの各軸方向ごとの加速度検出手段から、各軸ごとの現在の加速度の値を検出する。例えば、静止状態のコントローラが全く水平の場合では、通常鉛直方向（下向き）に重力加速度が常時掛かり、また左右方向及び奥行き方向については一切加速度が掛かっていない状態となる。つまり、図４（ｂ）の配置で説明すると、仮に操作入力を行うコントローラ７を載置する載置台８の上面が完全な水平方向だとすると、鉛直方向であるＹ軸については、Ｙは常に１Ｇであり、また、左右方向であるＸ、奥行き方向であるＺともに０Ｇとなる。
【０１１８】
（ステップＳ４０３）
ここでは前記各軸毎の過去ｎ（一例として、ｎ＝２）個分の各軸毎の加速度の移動平均を算出する。以下、Ｘ、Ｙ、Ｚそれぞれの過去短期平均として、Ｘｎ、Ｙｎ、Ｚｎとして表記する。
本来であれば、直接的に各単位時間ごとの検出値で行ったほうが演算に掛かる制御装置の処理負担は減るのだが、前述の通り、一般的な加速度センサを用いて載置台上のコントローラに加わる振動値を計測した場合には、ある方向からの振動に対して一瞬の経過後に「揺り返し」による逆方向の加速が検出されるが、このような短期移動平均を用いることで本来の入力の一瞬後や一瞬前に検出されることがあるノイズ検出値による誤差を数値的に丸めて、逆方向への振動検出というご認識を防止することが出来る。本実施例では一例としてｎ＝２として記載したが、例えばコントローラが大きく、反動の検出値が来るまでの時間がこの例よりも長い場合は、ｎ＝３又はそれ以上のサンプルを用いても良い。但し、後述する長期移動平均サンプル数値よりも小さくすることが必須である。
【０１１９】
（ステップＳ４０４）
ここでは前記各軸毎の過去ｍ（一例として、ｍ＝１６）個分の各軸毎の加速度の移動平均値を算出する。以下、Ｘ、Ｙ、Ｚそれぞれの過去長期移動平均として、Ｘｍ、Ｙｍ、Ｚｍとして表記する。
この長期移動平均は、前記短期移動平均による「揺り返し」・「揺り戻し」誤差吸収とは目的が異なり、いわゆる検出の基準となる基準値としての役割を果たす。例えば、出来るだけ水平にコントローラ７を設置した場合でも、例えば載置台８の上面自体がやや右側が下に傾いていた場合には常にＸ軸方向に弱い加速度が掛かることになるが、このような長期移動平均を用いることでその基準の誤差を吸収することが出来る。それ以外でも、例えばプレイ中にプレイヤーが興じることでつい強い勢いで台の盤面を叩くことで載置台８自体が多少傾いてしまったり、またコントローラ７が若干斜めの角度になってしまった場合でも、そのような誤差を吸収することが出来る。
また、本実施例では図７では左右方向（Ｘ軸のみ）、図８では上下方向＋左右方向（Ｘ軸＋Ｚ軸）の例を挙げているが、例えば垂直に設置された柱の内部に入力手段を設置するような場合ではＹ軸の検出結果を用いてゲーム進行を行っても良い。特に、そのような場合では、通常常時地球の重力によって発生する重力加速度（鉛直方向への１Ｇの加速度）をゼロとしてゲーム進行制御を行うことも可能である。
【０１２０】
（ステップＳ４０５）
ここでは前記ステップＳ４０３、Ｓ４０４で求めた各軸毎の加速度の短期移動平均値と長期移動平均値の差、及びそれぞれの差の絶対値を算出する。以下、Ｘ、Ｙ、Ｚそれぞれの過去短期移動平均と長期移動平均の差として、Ｘ（ｎ−ｍ）、Ｙ（ｎ−ｍ）、Ｚ（ｎ−ｍ）として表記する。また、以下、Ｘ、Ｙ、Ｚそれぞれの過去短期移動平均と長期移動平均の差の絶対値として、｜Ｘ（ｎ−ｍ）｜、｜Ｙ（ｎ−ｍ）｜、｜Ｚ（ｎ−ｍ）｜として表記する。
先程の説明でいうと、仮に操作入力を行うコントローラ７を載置する載置台８の上面が完全な水平方向だとすると、理論的には鉛直方向であるＹについては常に１Ｇ、それ以外の地面に対して水平であるＸ，Ｚ方向については常に０Ｇとなるわけだが、現実には完全な水平に設置できる場合はあり得ず、またコントローラ７自体の設計の歪みや振動センサである加速度検出装置の精度などから、完全な数値は得られない。しかし、上記のように短期移動平均及び長期移動平均を用いて入力判定を行うことで、そのような精度の限界に由来する誤差信号を排除することが出来る。
【０１２１】
（ステップＳ４０６）
ここでは、前記各軸毎のそれぞれの短期移動平均と長期移動平均の差の絶対値が、所定の入力有無判定の閾値よりも大きいか否かの判定を行う。
なお、図７で示したゲームの例（Ｘ軸のみでゲーム進行制御をする場合）では、まず｜Ｘ（ｎ−ｍ）｜が閾値より大きいか否かを演算によって求め、ＹＥＳの場合はステップＳ４０７に進み、そうでない場合はステップＳ４０８に進む。
図８で示したゲームの例（Ｘ軸・Ｚ軸でゲーム進行制御をする場合）では、｜Ｘ（ｎ−ｍ）｜に加え、｜Ｚ（ｎ−ｍ）｜についてもそれぞれの短期トレンド・長期トレンドの差の絶対値が閾値よりも大きいか否かを演算によって求め対応する。
【０１２２】
（ステップＳ４０７）（ステップＳ４０８）
ここでは、Ｘ、Ｙ、Ｚそれぞれの軸方向について個別に有意の入力があったか否か、各軸について入力ＯＮ・またはＯＦＦとしてステップＳ４０６で判定された結果をメモリ上に入力操作情報として記録する。
【０１２３】
（ステップＳ４０９）
ここでは、ステップＳ４０７において有意な入力があったと判定された場合、その入力が各軸方向において＋側か−側かを判定する。
なお、図７で示したゲームの例（Ｘ軸のみでゲーム進行制御をする場合）では、まずＸ（ｎ−ｍ）が正か負かを求め、正の場合はステップＳ４１０に進み、そうでない場合（負の数値だった場合）はステップＳ４１１に進む。
図８で示したゲームの例（Ｘ軸・Ｚ軸でゲーム進行制御をする場合）では、Ｘ（ｎ−ｍ）に加え、Ｚ（ｎ−ｍ）についてもそれぞれの短期トレンド・長期トレンドの差の正負を求め、ゼロより大きいか（正か負か）を求めて対応する。
【０１２４】
（ステップＳ４１０）（ステップＳ４１１）
ここでは、Ｘ、Ｙ、Ｚそれぞれの軸方向について個別に有意の入力があったか否か、各軸について入力ＯＮ・またはＯＦＦとしてステップＳ４０９で判定された結果をメモリ上に入力操作情報として記録する。
【０１２５】
（ステップＳ４１２）
ここでは、ステップＳ４０７、Ｓ４０８、Ｓ４１０、Ｓ４１１にて記録された入力操作情報を保持した状態で、元の図１２のステップＳ３０５に進む。
【０１２６】
次に、図１４ないし図１７を参照して、本実施形態における振動の検出値の演算処理とその作用について説明する。ここで、図１４および図１５はプレイヤーによる正規の入力操作以外のノイズに対する処理を説明するための図であり、図１６および図１７はプレイヤーによる正規の入力操作に対する処理を説明するための図である。
【０１２７】
図１４（ａ）の上段に示す数値列は、加速度センサ７３により検出された検出値がコントローラ７の通信部７５を介してゲーム装置３に送信される、いわゆる生の検出値の一例を示している。隣接する数値の検出頻度は、本実施形態においては５ｍｓ（５／１０００秒）である。この例では、ゲームの一単位時間をテレビ画面の書き換えに要するフレーム単位時間である１／６０秒を基準とし、２フレーム分の時間、つまり１／３０秒として各操作入力判定を行っている。この時間設定であれば、一単位時間あたりにおおよそ６回前後の入力信号の検出が可能であり、ゲーム進行制御としては十分であり、また入力信号に現在の信号＋過去１回分の検出された値の平均値、つまり2回分の検出値の移動平均値を用いても、一単位時間内に収まる点で問題なくゲーム進行制御を行うことができる。また、これらの検出値の単位はＧ（１．０Ｇ＝９．８０６６５ｍ／ｓ２）であり、以下、図１４ないし図１７において全て同様である。図１４（ａ）の下段のグラフは、上記した検出値をプロットして直線で結んだものであり、縦軸の単位は上記したＧである。
【０１２８】
図１４（ａ）において、図の略中央に＋のピーク値Ｎ１（＋０．５８Ｇ）と−のピーク値Ｎ２（−０．３６Ｇ）が現れているが、このＮ２は、プレイヤーの意図しないノイズ振動の検出値、つまり、プレイヤーの意図した入力であるＮ１に対する「揺り返し」であるノイズ信号を示している。それ以外の検出値は、載置台８を含む入力装置の暗振動を示している。また、本実施形態においては、後述する入力された振動操作信号が有効な操作信号であるか否かの判定に用いる閾値を、＋側でＴＨ＋＝＋０．３Ｇ、−側でＴＨ−＝−０．３Ｇに設定している。したがって、もし、図１４（ａ）に示すような生の検出値を、操作入力信号の有効性の判定に用いると、図中ｔ１で示すタイミングおよびｔ２で示すタイミングにて、それぞれ、＋の操作入力および−の操作入力が有効な操作入力であると誤判定されるという不具合がある。
【０１２９】
図１４（ｂ）は、図１４（ａ）に示す生の検出値を、本実施形態におけるｎサンプル平均演算プログラムＰ６ａにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、ｎ＝２に設定されているので、ｎサンプル平均演算プログラムＰ６ａは、図１４（ａ）に示す検出値の最新の検出値とその直前の検出値との２つの検出値（サンプル）の平均値を求める演算処理を行う。このとき、ｎサンプル平均演算プログラムＰ６ａにより演算処理された演算値（２サンプルの平均値）の＋のピーク値（最大値）は＋０．２３Ｇであり、−のピーク値（最小値）は−０．１３Ｇであるので、いずれも、上記した＋側閾値ＴＨ＋＝＋０．３Ｇおよび−側閾値ＴＨ−＝−０．３Ｇを超えないので、有効な操作入力信号とは判定されず、プレイヤーの意図しないノイズを効果的に除去することができる。
【０１３０】
図１５（ａ）は、図１４（ａ）に示す生の検出値を、本実施形態におけるｍサンプル平均演算プログラムＰ６ｂにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、ｍ＝１６に設定されているので、ｍサンプル平均演算プログラムＰ６ｂは、図１４（ａ）に示す検出値の最新の検出値とそれ以前の連続する１５個の検出値との１６個の検出値（サンプル）の平均値を求める演算処理を行う。この処理により、実質的に、入力振動０レベルに極めて近似した数値を得ることができる。
【０１３１】
図１５（ｂ）は、差分演算プログラムＰ６ｃにより、図１４（ｂ）に示すｎサンプル平均演算プログラムＰ６ａによる演算値から図１５（ａ）に示すｍサンプル平均演算プログラムＰ６ｂによる演算値を減算した差分値の数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態において入力判定プログラムＰ７は、図１５（ｂ）に示す差分演算プログラムＰ６ｃにより得られた演算値と予め設定された閾値ＴＨ＋およびＴＨ−とを比較することにより、検出された振動値がゲームに有効な振動値であるか否かを判定する。このように有効操作入力の判定処理を行うことにより、図１４（ａ）に示す＋側ノイズＮ１および−側ノイズＮ２は、図１５（ｂ）に示すように有効な操作入力とは判定されず、効果的にノイズ成分を除去して誤認識を回避することができる。
【０１３２】
図１６および図１７は、プレイヤーによる正規の操作入力が行われたときの数値列およびグラフを示す図である。図１６（ａ）の上段に示す数値列は、図１４（ａ）に示した数値列と同様に、加速度センサ７３により検出された検出値がコントローラ７の通信部７５を介してゲーム装置３に送信される、生の検出値の一例を示している。図１６（ａ）の下段のグラフは、上記した検出値をプロットして直線で結んだものであり、縦軸の単位は上記したＧである。
【０１３３】
図１６（ａ）において、上段に示す数値列の左から４番目の＋１．３６Ｇがプレイヤーによる正規の入力操作Ｓに係る検出値である。これは、図７（ｂ）に示す入力装置において右側の操作面８ａＲが１回操作された（叩かれた）ときの検出値の一例を示している。したがって、図１６（ａ）の検出値がコントローラ７からゲーム装置３に送信されたとき、ゲーム装置３側で図中のｔ４のタイミングでの＋の入力操作Ｓのみが認識されれば、プレイヤーの操作に対する正しい認識がなされたことになる。
【０１３４】
しかしながら、図１６（ａ）に示すように、生の検出値と予め設定された閾値ＴＨ＋およびＴＨ−を用いて有効性の判定を行った場合、まず、ｔ３のタイミングで−方向のノイズＮ３による振動が−入力として認識され、続いて、ｔ４のタイミングで正規の＋の入力操作Ｓが認識され、その後、ｔ５のタイミングで＋のトリガがリセットされた後、ｔ６のタイミングで＋方向のノイズＮ４による振動が認識されてしまう。これは、特に、操作タイミングの正確性を重視する音楽ゲームにおいては致命的な誤認識となり、プレイヤーのゲームに対する興趣を一気に損なってしまう。
【０１３５】
図１６（ｂ）は、図１４（ｂ）と同様に、図１６（ａ）に示す生の検出値を、本実施形態におけるｎサンプル平均演算プログラムＰ６ａにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、上記したようにｎ＝２に設定されているので、ｎサンプル平均演算プログラムＰ６ａは、図１６（ａ）に示す検出値の最新の検出値とその直前の検出値との２つの検出値（サンプル）の平均値を求める演算処理を行う。このとき、ｎサンプル平均演算プログラムＰ６ａにより演算処理された演算値（２サンプルの平均値）の＋のピーク値（最大値）は＋１．０１Ｇであり、−のピーク値（最小値）は−０．１３Ｇであるので、＋側では＋側閾値ＴＨ＋＝＋０．３Ｇを超える有効操作入力判定が１回行われ、−側では−側閾値ＴＨ−＝−０．３Ｇを超えないので、有効な操作入力信号とは判定されず、プレイヤーの意図しないノイズを効果的に除去することができる。
【０１３６】
図１７（ａ）は、図１５（ａ）と同様に、図１６（ａ）に示す生の検出値を、本実施形態におけるｍサンプル平均演算プログラムＰ６ｂにより演算処理した数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態においては、上記したようにｍ＝１６に設定されているので、ｍサンプル平均演算プログラムＰ６ｂは、図１６（ａ）に示す検出値の最新の検出値とそれ以前の連続する１５個の検出値との１６個の検出値（サンプル）の平均値を求める演算処理を行う。この演算処理により、図１７（ａ）のグラフに示すように、加速度センサ７３により検出された検出値の長周期のトレンド（傾向）を得ることができる。なお、サンプル数ｍを増やす（例えば、ｍ＝３２または６４等）ことにより、より入力振動０レベルに近似した数値を得ることができる。
【０１３７】
図１７（ｂ）は、図１５（ｂ）と同様に、差分演算プログラムＰ６ｃにより、図１６（ｂ）に示すｎサンプル平均演算プログラムＰ６ａによる演算値から図１７（ａ）に示すｍサンプル平均演算プログラムＰ６ｂによる演算値を減算した差分値の数値列と、当該数値列をプロットして直線で結んだグラフを示している。本実施形態において入力判定プログラムＰ７は、図１７（ｂ）に示す差分演算プログラムＰ６ｃにより得られた演算値と予め設定された閾値ＴＨ＋およびＴＨ−とを比較することにより、検出された振動値がゲームに有効な振動値であるか否かを判定する。このように有効操作入力の判定処理を行うことにより、図１６（ａ）に示す−側ノイズＮ３および＋側ノイズＮ４は、図１７（ｂ）に示すように有効な操作入力とは判定されず、効果的にノイズ成分を除去して誤認識を回避することができるとともに、図中のｔ７のタイミングでプレイヤーによる正規の操作入力Ｓのみを正確に認識することができる。
【０１３８】
また、図１７（ａ）に示したｍサンプル平均演算プログラムＰ６ｂによる演算値を、予め設定された＋側閾値ＴＨ＋および−側閾値ＴＨ−から減算することにより、図１７（ｂ）のグラフに一点鎖線で示すように、リアルタイムに補正された＋側閾値ＣＴＨ＋および−側閾値ＣＴＨ−を有効操作入力の判定に用いるようにすることもできる。
【０１３９】
以上説明したように本発明によれば、少なくとも振動検出手段（加速度センサ７３）を備えた汎用性の高い家庭用ゲーム機１の入力検出手段（コントローラ７）とこの入力検出手段が載置可能で振動入力操作が可能な操作面８ａを有する入力手段（載置台８）により構成し得る入力装置から得られる入力検出信号（検出値）を用いてゲームの制御を行うことができるので、大規模な入力装置や特殊なゲーム専用の入力装置を使用することなく、多彩なゲームを楽しむことができる。
【０１４０】
また、入力操作が、入力手段の操作面に振動を加える、例えば、操作面８ａの一部を指または掌で叩く等の簡単な操作で可能なので、汎用のコントローラ７等に備えられた複数の操作ボタンの位置や割り当てられている機能等を逐一覚える必要がなく、初心者や敏速なボタン操作が苦手な者でも、入力操作にかかるハンデが少ないゲーム装置を提供することができる。
【図面の簡単な説明】
【０１４１】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図である。
【図２】本実施形態に係るゲームシステム１のゲーム装置３の機能ブロック図である。
【図３】本実施形態に係るゲームシステム１のゲームプログラムの構成を示すブロック図である。
【図４】本実施形態に係るゲームシステム１のコントローラ７を上面後方および下面後方から見た斜視図である。
【図５】本実施形態に係るゲームシステム１のコントローラ７の上筐体および下筐体を外した状態を示す斜視図である。
【図６】本実施形態に係るゲームシステム１のコントローラ７の構成を示すブロック図である。
【図７】本実施形態に係るゲームシステム１で想定するゲームの画面の一例および入力装置の一例を説明する説明図である。
【図８】本実施形態に係るゲームシステム１で想定する他のゲームの画面の一例および入力装置の一例を説明する説明図である。
【図９】本実施形態に係るゲームシステム１におけるゲームの初期処理を示すフローチャートである。
【図１０】本実施形態に係るゲームシステム１のコントローラ７の載置場所ごとの振動値の推移を示すグラフである。
【図１１】本実施形態に係るゲームシステム１において、ゲーム全体の処理を示すフローチャートである。
【図１２】本実施形態に係るゲームシステム１において、図１１に示す進行メイン処理の制御の流れを示すフローチャートである。
【図１３】本実施形態に係るゲームシステム１において、図１２に示す移動平均判定処理の制御の流れを示すフローチャートである。
【図１４】本実施形態に係るゲームシステム１におけるコントローラ７から送信される振動検出値の数値列とグラフの一例およびｎサンプル平均演算プログラムＰ６ａによる演算値の数値列とグラフの一例を示す図である。
【図１５】本実施形態に係るゲームシステム１におけるｍサンプル平均演算プログラムＰ６ｂによる演算値の数値列とグラフの一例および差分演算プログラムＰ６ｃによる演算値の数値列とグラフの一例を示す図である。
【図１６】本実施形態に係るゲームシステム１におけるコントローラ７から送信される振動検出値の数値列とグラフの一例およびｎサンプル平均演算プログラムＰ６ａによる演算値の数値列とグラフの一例を示す図である。
【図１７】本実施形態に係るゲームシステム１におけるｍサンプル平均演算プログラムＰ６ｂによる演算値の数値列とグラフの一例および差分演算プログラムＰ６ｃによる演算値の数値列とグラフの一例を示す図である。
【符号の説明】
【０１４２】
１  ゲームシステム
２  モニタ
２ａ  スピーカ
３  ゲーム装置
４  光ディスク
５  外部メモリカード
６  受信ユニット
７  コントローラ
８  載置台
８ａ  操作面
８ｂ  載置面
３０  ＣＰＵ
３１  メモリコントローラ
３２  ＧＰＵ
３３  メインメモリ
３４  ＤＳＰ
３５  ＡＲＡＭ
３６  コントローラＩ／Ｆ
３７  ビデオＩ／Ｆ
３８  外部メモリＩ／Ｆ
３９  オーディオＩ／Ｆ
４０  ディスクドライブ
４１  ディスクＩ／Ｆ
５１  マイコン
５２  メモリ
５３  無線モジュール
５４  アンテナ
７１  ハウジング
７２  操作部
７３  加速度センサ
７４  バイブレータ
７５  通信部
７６  電池
７００  基板
７０２  ＬＥＤ
７０３  水晶振動子
【図１】
2010104721.tif 000003
【図２】
2010104721.tif 000004
【図３】
2010104721.tif 000005
【図４】
2010104721.tif 000006
【図５】
2010104721.tif 000007
【図６】
2010104721.tif 000008
【図７】
2010104721.tif 000009
【図８】
2010104721.tif 000010
【図９】
2010104721.tif 000011
【図１０】
2010104721.tif 000012
【図１１】
2010104721.tif 000013
【図１２】
2010104721.tif 000014
【図１３】
2010104721.tif 000015
【図１４】
2010104721.tif 000016
【図１５】
2010104721.tif 000017
【図１６】
2010104721.tif 000018
【図１７】
2010104721.tif 000019