説明

ゲームプログラムおよびゲーム装置

【課題】プレイヤが入力装置等に衝撃を加える動作を正確に検出してゲームに反映させることができるゲームプログラムおよびゲーム装置を提供すること。
【解決手段】加速度取得ステップ(S2)で、入力装置の状態に応じて増減する加速度値を入力値として逐次取得する。増減方向反転検出ステップ(S3、S17)で、加速度値の増減方向が反転したことを検出する。加速度差算出ステップ(S41〜S44)で、増減方向が反転したとき、当該反転の直前に取得された少なくとも2つの加速度値の差を算出する。そして、ゲーム処理ステップ(S12〜S15)で、算出された差が所定値以上であれば第1のゲーム処理を実行し、所定値未満であるときは第1のゲーム処理とは異なる第2のゲーム処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力装置自体の動きに応じて変化する入力値に基づいたゲーム処理をゲーム装置のコンピュータに実行させるゲームプログラムおよびゲーム装置に関し、より特定的には、入力装置自体の動作の検出に関する。
【背景技術】
【0002】
従来から、加速度センサ等を用いて、入力装置(コントローラ)自体を動かして楽しむゲームシステムが提案されている。例えば、加速度センサを内蔵したガン型コントローラを使った射撃ゲームがある(例えば特許文献1)。この射撃ゲームでは、ガン型コントローラの移動方向を加速度センサによって検出している。そして、プレイヤがガンのリボルバーを開く動作を真似て上記ガン型コントローラを右方向に移動させると、モニタに弾丸の表示がされ、残弾数を確認できる。また、この状態でガン型コントローラを上下方向に移動させると、弾丸の補充ができる。そして、リボルバーを閉じる動作を真似てガン型コントローラを左方向に移動させると、上記弾丸表示が消える。このように、加速度センサを用いて、ガン型コントローラの移動方向を判別し、各移動方向に応じたゲーム処理を行っている。
【0003】
また、同じく加速度センサを用いて、携帯型ゲーム装置自体への衝撃入力を判別するゲームも提案されている(例えば、特許文献2)。このようなゲームでは、ゲーム装置(ハウジング)に加えられた加速度の変化量や変化方向を検出し、どの軸方向にどの程度の出力があったかを判別する。例えば、ゲーム装置をX軸方向にスライド移動させると加速度が生じる。そのため、加速度センサのX軸出力に基づいて、X軸方向の移動(スライド移動)が判別される。また、このとき、当該X軸出力が一定値以上の場合は、衝撃入力があったと判定する。例えば、X軸方向の+方向に一定値以上の加速度が検出されたときは、左からの衝撃入力があったと判定し、−方向に一定値以上の加速度が検出されたときは、右からの衝撃入力があったと判定する。
【特許文献1】特開2000−300843号公報
【特許文献2】特開2001−170358号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上述したような上記特許文献に開示されたゲーム装置においては、従来から以下に示す問題点があった。まず、上記特許文献1に開示されたゲームでは、ガン型コントローラ本体をどの方向にどの程度の強さで動かしたかを判断している。しかし、実際にプレイヤが行っている動作、例えばガン型コントローラ本体を振っている動作なのか、ガン型コントローラ本体に衝撃を加えている動作なのかを正確に判別することはできなかった。
【0005】
また、上記特許文献2に開示されたゲーム装置では、加速度の大きさが一定値以上かどうかを判別することで、衝撃入力があったかどうかを判別している。しかし、ゲーム装置を移動させる動作であっても、ゲーム装置を強く振るような動作をプレイヤが行った場合は、上記一定値以上の加速度が検出される。その結果、衝撃動作と誤認識されることもあり、一定値以上の加速度が検出された際に、これが移動させる動作(強く振っている)であるのか、衝撃を与えている動作であるのかを厳密に判別することが困難であるという問題があった。
【0006】
それ故に、本発明の目的は、プレイヤが入力装置等に衝撃を加える動作を正確に検出してゲームに反映させることができるゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0008】
第1の発明は、入力装置自体の動きに応じて変化する入力値に基づいたゲーム処理をゲーム装置のコンピュータに実行させるゲームプログラムであって、加速度取得ステップ(S2)と、増減方向反転検出ステップ(S3、S17)と、加速度差算出ステップ(S41〜S44)と、ゲーム処理ステップ(S12〜S15)とをコンピュータに実行させる。加速度取得ステップでは、入力装置に設けられた加速度センサ(701)の出力に基づいて、入力装置の状態に応じて増減する加速度値を入力値として逐次取得して記憶部(33)に格納する。増減方向反転検出ステップでは、記憶部に格納されている加速度値に基づいて、加速度値の増減方向が反転したことを検出する。加速度差算出ステップでは、増減方向が反転したとき、当該反転の直前に取得された少なくとも2つの加速度値の差を算出する。ゲーム処理ステップでは、算出された差が所定値以上であれば第1のゲーム処理を実行し、所定値未満であるときは第1のゲーム処理とは異なる第2のゲーム処理を実行する。
【0009】
第2の発明は、第1の発明において、増減方向反転検出ステップは、第1の反転検出ステップ(S17)と、第2の反転検出ステップ(S3)とを含む。第1の反転検出ステップでは、加速度値の増減方向が第1の方向から第2の方向に反転したことを検出する。第2の反転検出ステップでは、第1の反転検出ステップにおける検出の後に、加速度値の増減方向が第2の方向から第1の方向に反転したことを検出する。また、加速度差算出ステップでは、第2の反転検出ステップにおいて増減方向の反転が検出されたときに、当該反転の直前に取得された少なくとも2つの加速度値の差を算出する。
【0010】
第3の発明は、第2の発明において、前記加速度差算出ステップは、第1差算出ステップ(S41,S42)と、第2差算出ステップ(S43、S44)とを含む。第1差算出ステップでは、第2の反転検出ステップにおいて検出された反転の直前に第1の時間間隔で取得された2つの加速度値の差である第1の差を算出する。第2差算出ステップでは、第2の反転検出ステップにおいて検出された反転の直前に第1の時間間隔とは異なった時間間隔である第2の時間間隔で取得された2つの加速度値の差である第2の差を算出する。また、ゲーム処理ステップでは、第1差および第2差の少なくとも一方が所定値以上であれば第1のゲーム処理を実行し、第1の差および第2の差のいずれもが所定値未満であれば、第2のゲーム処理を行う、請求項2に記載のゲームプログラム。
【0011】
第4の発明は、第2の発明において、ゲームプログラムは、第1の取得数計測ステップ(S46)と、第2の取得数計測ステップ(S31)とを更に備える。第1の取得数計測ステップでは、第1の反転検出から第2の反転検出までの間に加速度取得ステップによって取得された加速度の取得数を計測する。第2の取得数計測ステップでは、第2の反転検出の後、第1の反転検出までの間に取得された加速度の取得数を計測する。ゲーム処理ステップでは、第1の取得数と第2の取得数との合計値が所定値以上であり、かつ、当該第1の取得数が第2の取得数未満のときにのみ、第1のゲーム処理を行う、請求項2に記載のゲームプログラム。
【0012】
第5の発明は、第2の発明において、加速度差算出ステップは、第1の反転検出ステップにおいて反転が検出された際の加速度値が所定値以上のときにのみ、加速度値の差を算出する。
【0013】
第6の発明は、第2の発明において、ゲームプログラムは、第2の反転検出ステップにおいて反転が検出されたとき、当該反転の直前に取得された加速度値が所定値以上か否かを判定する加速力判定ステップを更に備える。また、ゲーム処理ステップでは、加速力判定ステップにおいて所定値以上と判定されたときは第1のゲーム処理を行い、所定値より小さいと判定されたときは第2のゲーム処理を行う。
【0014】
第7の発明は、入力装置自体の動きに応じて変化する入力値に基づいたゲーム処理を行うゲーム装置(3)であって、加速度取得部(30)と、増減方向反転検出部(30)と、加速度差算出部(30)と、ゲーム処理部(30)とを備える。加速度取得部は、入力装置に設けられた加速度センサ(701)の出力に基づいて、入力装置の状態に応じて増減する加速度値を入力値として逐次取得する。増減方向反転検出部は、加速度値の増減方向が反転したことを検出する。加速度差算出部は、増減方向が反転したとき、当該反転の直前に取得された少なくとも2つの加速度値の差を算出する。ゲーム処理部は、算出された差が所定値以上であれば第1のゲーム処理を実行し、所定値未満であるときは第1のゲーム処理とは異なる第2のゲーム処理を実行する。
【0015】
第8の発明は、第7の発明において、増減方向反転検出部は、加速度値の増減方向が第1の方向から第2の方向に反転したことを検出する第1の反転検出部(30)と、第1の反転検出部が増減方向の反転を検出した後に、加速度値の増減方向が第2の方向から第1の方向に反転したことを検出する第2の反転検出部(30)とを含む。また、加速度差算出部は、第2の反転検出部が増減方向の反転を検出したときに、当該反転の直前に取得された少なくとも2つの加速度値の差を算出する。
【発明の効果】
【0016】
上記第1の発明によれば、加速度値の増減方向が反転したタイミングにおける加速度値の差に基づいて、入力装置に衝撃を加える操作であるか否かを判定している。そのため、入力装置に衝撃を加える操作を正確に検出することができる。
【0017】
上記第2の発明によれば、上記第1の発明と同様に、入力装置に衝撃を加える操作を正確に検出することができる。
【0018】
上記第3の発明によれば、増減方向が反転したときの加速度値の差の算出について、異なる時間間隔を用いて差を算出している。これにより、入力装置に衝撃を加える操作であるか否かをより正確に検出することが可能となる。
【0019】
上記第4乃至第5の発明によれば、入力装置を動かす動作が、ある程度大きな動きであるときのみ、衝撃を加える操作として検出できる。
【0020】
上記第6の発明によれば、衝撃を加えた際の衝撃の強さを、加速度の大きさに基づいて判別している。これにより、衝撃を加えるという操作であっても、その衝撃の強さに応じて異なったゲーム処理を行わせることができる。
【0021】
また、本発明のゲーム装置によれば、上述した本発明のゲームプログラムと同様の効果を得ることができる。
【発明を実施するための最良の形態】
【0022】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【0023】
まず、図1を参照して、本発明の一実施形態に係るゲーム装置について説明する。以下、説明を具体的にするために、当該ゲーム装置を用いたゲームシステム1を一例として説明する。なお、図1は、当該ゲームシステム1を説明するための外観図である。以下、据置型ゲーム装置を一例にして、当該ゲームシステム1について説明する。
【0024】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたディスプレイ(以下、モニタと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3および当該ゲーム装置3に操作情報を与えるコントローラ7によって構成される。ゲーム装置3は、接続端子を介して受信ユニット6が接続される。受信ユニット6は、コントローラ7から無線送信される送信データを受信し、コントローラ7とゲーム装置3とは無線通信によって接続される。また、ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。ゲーム装置3の上部主面には、当該ゲーム装置3の電源ON/OFFスイッチ、ゲーム処理のリセットスイッチ、およびゲーム装置3上部の蓋を開くOPENスイッチが設けられている。ここで、プレイヤがOPENスイッチを押下することによって上記蓋が開き、光ディスク4の脱着が可能となる。
【0025】
また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載する外部メモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムなどを実行することによって、その結果をゲーム画像としてモニタ2に表示する。さらに、ゲーム装置3は、外部メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0026】
コントローラ7は、その内部に備える通信部75(後述)から受信ユニット6が接続されたゲーム装置3へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて送信データを無線送信する。コントローラ7は、主にモニタ2に表示されるゲーム空間に登場するプレイヤオブジェクトを操作するための操作手段である。コントローラ7は、複数の操作ボタン、キー、およびスティック等の操作部が設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。マーカ8Lおよび8Rは、コントローラ7の位置を示すためのものである。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力する。
【0027】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0028】
図2において、ゲーム装置3は、各種プログラムを実行する例えばリスク(RISC)CPU(セントラルプロセッシングユニット)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が接続されている。
【0029】
GPU32は、CPU30の命令に基づいて画像処理を行うものあり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて画像処理を行う。GPU32は、これらを用いてモニタ2に表示すべきゲーム画像データやムービ映像を生成し、適宜メモリコントローラ31およびビデオI/F37を介してモニタ2に出力する。
【0030】
メインメモリ33は、CPU30で使用される記憶領域であって、CPU30の処理に必要なゲームプログラム等を適宜記憶する。例えば、メインメモリ33は、CPU30によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。このメインメモリ33に記憶されたゲームプログラムや各種データ等がCPU30によって実行される。
【0031】
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ2に備えるスピーカ2aに出力させる。
【0032】
メモリコントローラ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に出力する。
【0033】
図3および図4を参照して、本発明の入力装置の一例であるコントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面後方から見た斜視図である。
【0034】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0035】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
【0036】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、リング状に4方向の操作部分を備えたプッシュスイッチとその中央に設けられたセンタスイッチとを複合した複合スイッチを上記十字キー72aの代わりに設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティックを倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。また、少なくとも4つの方向(前後左右)をそれぞれ示すスイッチに対して、プレイヤによって押下されたスイッチに応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。
【0037】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、Xボタン、Yボタン、およびBボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、セレクトスイッチ、メニュースイッチ、およびスタートスイッチ等としての機能が割り当てられる。これら操作ボタン72b〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの機能が割り当てられるが、本発明の説明とは直接関連しないため詳細な説明を省略する。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0038】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0039】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から受信ユニット6へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0040】
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコントローラ7を把持したときに当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばAボタンとして機能する操作部であり、シューティングゲームにおけるトリガスイッチや、プレイヤオブジェクトを所定オブジェクトに対して注目させる操作等に用いられる。
【0041】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えば32ピンのエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0042】
ここで、説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の上面(十字キー72a等が設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をX軸正方向とする。
【0043】
次に、図5を参照して、コントローラ7の内部構造について説明する。なお、図5(a)は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を示す斜視図である。図5(b)は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を示す斜視図である。ここで、図5(b)に示す基板700は、図5(a)に示す基板700の裏面から見た斜視図となっている。
【0044】
図5(a)において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、水晶振動子703、無線モジュール753、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751(図6参照)に接続される。加速度センサ701は、コントローラ7が配置された3次元空間における傾きや振動等の算出に用いることができる加速度を検出して出力する。
【0045】
より詳細には、図6に示すように、コントローラ7は3軸の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、X軸とY軸(または他の対になった軸)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の加速度センサ701が提供されてもよい。
【0046】
当業者には公知であるように、加速度センサ701に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その2軸または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0047】
しかしながら、加速度センサ701から出力される加速度の信号に対して追加の処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、静的な加速度(重力加速度)が検知されると、加速度センサ701からの出力を用いて、傾斜角度と検知された加速度とを用いた演算によって重力ベクトルに対する対象(コントローラ7)の傾きを判定することができる。このように、加速度センサ701をマイコン751(または他のプロセッサ)と組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を判定することができる。同様に、加速度センサ701を備えるコントローラ7が例えば後述するようにユーザの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7のさまざまな動きおよび/または位置を算出することができる。他の実施例では、加速度センサ701は、信号をマイコン42に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0048】
また、無線モジュール753およびアンテナ754を有する通信部75によって、コントローラ7がワイヤレスコントローラとして機能する。なお、水晶振動子703は、後述するマイコン751の基本クロックを生成する。
【0049】
一方、図5(b)において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。そして、操作ボタン72iが撮像情報演算部74の後方の基板700の下主面上に取り付けられていて、それよりさらに後方に、電池705が収容される。電池705とコネクタ73との間の基板700の下主面上には、バイブレータ704が取り付けられる。このバイブレータ704は、例えば振動モータやソレノイドであってよい。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
【0050】
次に、図6を参照して、コントローラ7の内部構成について説明する。なお、図6は、コントローラ7の構成を示すブロック図である。
【0051】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。ここで、モニタ2の表示画面近傍に配置されるマーカ8Lおよび8Rは、モニタ2の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ741を設けることによってマーカ8Lおよび8Rの画像をより正確に撮像することができる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データ(マーカ8Lおよび8Rの撮像画像)を処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。この撮像情報演算部74から出力される処理結果データに基づいて、コントローラ7の位置や動きに応じた信号を得ることができ、当該信号に基づいてモニタ2の画面座標系に基づいた入力座標を得ることができる。つまり、コントローラ7は、撮像情報演算部74から出力される処理結果データによってポインティングデバイスとして機能する。
【0052】
加速度センサ701は、上述したようにコントローラ7の上下方向(Y軸方向)、左右方向(X軸方向)、および前後方向(Z軸方向)の3軸成分に分けてそれぞれ加速度を検知して出力するセンサである。加速度センサ701が検知した3軸成分の加速度を示すデータは、それぞれ通信部75へ出力される。この加速度センサ701から出力される加速度データに基づいて、コントローラ7の動きを判定することができる。なお、加速度センサ701は、特定のアプリケーションで必要なデータに応じて何れか2軸に対してそれぞれ加速度を検出する加速度センサが用いられてもかまわない。
【0053】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。
【0054】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を受信ユニット6へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から受信ユニット6への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、受信ユニット6への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置3の受信ユニット6でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置3のCPU30は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0055】
次に、図7〜図14を用いて、本実施形態で想定するゲームの概要について説明する。図7〜図9は、本実施形態で想定するゲームの画面の一例である。図7において、モニタ2には、数枚の原稿用紙101と机オブジェクト102が表示されている。本実施形態で想定するゲームは、この原稿用紙101を制限時間内に揃えるゲームである。そして、プレイヤは、揃えるための操作として、図10〜図12に示すように、コントローラ7を縦に握り、当該コントローラ7の先で手のひら(または机など)の上を軽くトントンと叩くという操作(コントローラ7に衝撃を与える操作)を行う(図10〜図12の一連の動きを繰り返す)。すると、この動きに連動して、原稿用紙101が机オブジェクト102にトントンと叩かれる様子が画面に表示され、徐々に用紙が揃っていき、最終的に、図8に示すように用紙が揃う。このように、本実施形態で想定するゲームは、コントローラ7で手のひらで数回トントンと叩くことで、制限時間内に用紙を揃えていくゲームである。
【0056】
次に、本実施形態で行われる処理について、特に、上記コントローラ7を手のひらの上でトントンと叩く操作(以下、トントン操作と呼ぶ)を検出する処理の原理を説明する。上記のように、コントローラ7には加速度センサ701が設けられている。本発明は、上記トントン操作の際の加速度値の変化の特性に着目して、当該トントン操作を検出する。なお、本実施形態では加速度センサ701のZ軸方向の加速度値を利用してゲーム処理が行われる。したがって、以下の説明における「加速度値」は「Z軸方向の加速度値」を意味する。図13は、上記トントン操作における加速度値の変化の一例を示すグラフである。また、図14は、コントローラ7を手のひらに当てるのではなく、単に空中で上下に振ったときの加速度値の変化の一例を示すグラフである。図13および図14では、横軸で時間(フレーム数)を表し、縦軸は加速度値を表す。
【0057】
ここで、コントローラ7の加速方向と加速度値の変化方向との関係については、次のような関係であるとする。まず、コントローラ7が自由落下している状態では、加速度センサ701によって検出される加速度値は0になる。コントローラ7が図10の状態(すなわち撮像素子743が設けられた面が上を向いた状態)で静止している状態では、加速度センサ701によって検出される加速度値は−1となる。コントローラ7が鉛直上方(すなわちZ軸の正方向)に向かって加速している状態(鉛直下方に向かって移動しているコントローラ7が減速している状態も含む)では、加速度値は−1よりも小さな値となる(鉛直上方への加速度が大きいほど、より小さい値となる)。逆に、コントローラ7が鉛直下方(すなわちZ軸の負方向)に向かって加速している状態(鉛直上方に向かって移動しているコントローラ7が減速している状態も含む)では、加速度値は−1よりも大きな値となる(鉛直下方への加速度が大きいほど、より大きい値となる)。例えば、図13では、まず、トントン操作の前の、コントローラ7を持った状態(初期状態)では、重力加速度がかかるため、加速度値は−1前後の値で落ち着いている。この状態から、プレイヤがコントローラ7を手の平に向けて振り降ろすと、コントローラ7は鉛直下方に向かって加速するため、加速度値は−1よりも大きな値となる。そして、コントローラ7が手の平に当たると、鉛直下方に向かって移動していたコントローラ7が手のひらに衝突して停止ないし跳ね返る(すなわち鉛直上方に向かって急激に加速する)ため、加速度値は−1よりも小さな値となる。
【0058】
本発明は、上記の加速度値の一連の変化について、加速度値が変化(増減)する方向が反転するときにかかる加速度値に着目したものである。上記グラフにおいて、加速度値の変化方向が負方向(すなわち加速度値が小さくなる方向)から正方向(すなわち加速度値が大きくなる方向)へと反転したとき(図13の円135や図14の円141)、トントン操作(円135)のほうは衝撃の影響を受けて鋭角なグラフを描いているのに対し、空中で振っている場合(円141)は、比較的緩やかなカーブを描くように変化している。そこで、この増減方向反転のタイミングにかかる加速度値の変化の仕方の違いに着目し、加速度値の増減方向が反転したときの加速度値(図13の点131)と、その直前の加速度値(図13の点132)との差を算出し、当該差が所定値以上であれば、トントン操作(より正確には、トントン操作1回分)であると判定する。
【0059】
次に、本実施形態で用いられる各種データについて説明する。図15は、図2に示したメインメモリ33のメモリマップを示す図解図である。図15において、メインメモリ33は、ゲームプログラム記憶領域330およびデータ記憶領域334を含む。
【0060】
ゲームプログラム記憶領域330は、CPU30によって実行されるゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム331と、正加速フレーム計算プログラム332と、負加速フレーム計算プログラム333などによって構成される。
【0061】
ゲームメイン処理プログラム331は、本実施形態に係る処理全体を制御するためのプログラムである。正加速フレーム計算プログラム332は、上記ゲームメイン処理プログラム331から呼び出されるサブルーチンであり、正方向へ向いた加速値の一連の変化にかかったフレーム数(以下、正加速フレーム数と呼ぶ)を計算するためのプログラムである。負加速フレーム計算プログラム333は、上記ゲームメイン処理プログラム331から呼び出されるサブルーチンであり、負方向へ向いた加速値の一連の変化にかかったフレーム数(以下、負加速フレーム数)を計算するためのプログラムである。
【0062】
データ記憶領域334には、加速度データ335、正加速フレーム数336、負加速フレーム数337、加速状態338、揃え開始フラグ339、成功フラグ340、および画像データ341等が記憶される。なお、メインメモリ33には、図15に示す情報に含まれるデータの他、ゲームに登場する各種オブジェクトに関するデータ(位置データ等)や仮想ゲーム空間に関するデータ(地形データ等)等、ゲーム処理に必要なデータが記憶される。
【0063】
加速度データ335は、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データである。加速度データ335には、加速度センサ701がX、Y、およびZ軸の3軸成分に分けてそれぞれ検出したX軸方向加速度3351、Y軸方向加速度3352、およびZ軸方向加速度3353が含まれる。また、加速度データ335としては、直近(最新)の20フレーム分の加速度データが格納される(図15の3351a〜3351t、3352a〜3352t、3353a〜3353t)。また、加速度データの格納順は、例えば、加速度データ3353aが古いデータで、加速度データ3353tに近づくほど新しいデータが格納されるものとする。なお、ゲーム装置3に備える受信ユニット6は、コントローラ7から所定間隔、例えば5msごとに送信される操作情報に含まれる加速度データ335を受信し、受信ユニット6に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である1フレーム毎に読み出されて上記のようにメインメモリ33に記憶される。また、加速度データ335は、−2G〜+2Gの範囲の値をとる。
【0064】
正加速フレーム数336は、上記正加速フレーム計算プログラム332によって算出される。正加速フレーム数336は、加速度値が正の方向に向かって変化していく一連の変化にかかったフレーム数を示す。すなわちこれは、プレイヤがコントローラ7を手の平に向けて下げていく動作にかかったフレーム数を示すものである(厳密には、加速度値が正の方向に向かって変化していく期間と、プレイヤがコントローラ7を手の平に向けて下げていく動作を行っている期間とは一致せず、それらの期間の長さも一致しないが、説明を分かり易くするため、以下ではそれらの期間が一致するものと仮定して説明する。)。
【0065】
負加速フレーム数337は、上記負加速フレーム計算プログラム333によって算出される。負加速フレーム数337は、加速度値が減少していく(すなわち負の方向に向かって変化していく)一連の変化にかかったフレーム数を示す。これはすなわち、プレイヤがコントローラ7を上げる(手の平から遠ざけていく)動作にかかったフレーム数を示すものである(厳密には、加速度値が減少していく期間と、プレイヤがコントローラ7を手の平から遠ざけていく動作を行っている期間とは一致せず、それらの期間の長さも一致しないが、説明を分かり易くするため、以下ではそれらの期間が一致するものと仮定して説明する。)。
【0066】
加速状態338は、コントローラ7の加速状態に関する状態を示すデータである。本実施形態では、以下の3つの状態が加速状態338によって示される。すなわち、加速状態338は、初期状態である「加速無し状態」と、プレイヤがコントローラ7を下に振り終えたことを示す「正加速終了」と、コントローラ7を上に振り上げ終えたことを示す「負加速終了」との3つの状態を示す。
【0067】
揃え開始フラグ339は、上記トントン操作が開始されたかどうかを示すためのフラグである。これは、手ぶれ等によるコントローラ7の微少な動きを検出しても、ゲームには反映させないようにする、いわば誤検出防止のために用いられるフラグである。
【0068】
成功フラグ340は、上記トントン操作が成功したかどうかを示すためのフラグである。つまり、適切な力でコントローラ7が手の平に当てられたか(原稿用紙101を揃えるために適切な衝撃が加わったか)どうかを示すフラグである。
【0069】
画像データ345は、原稿用紙101や机オブジェクト102等の、仮想ゲーム空間内に登場する各種オブジェクトの画像データである。
【0070】
次に、図16〜図19を参照して、ゲーム装置3によって実行されるゲーム処理について説明する。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU30は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ33等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリ33に読み込まれ、CPU30によって当該ゲームプログラムの実行が開始される。図16〜図17に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。また、図16〜図17に示すステップ1〜ステップ19の処理ループは、1フレーム毎に繰り返し実行される。
【0071】
図16において、まず、CPU30は、各種変数の初期化処理を行う(ステップS1)。具体的には、CPU30は、加速状態338を「加速無し」にする。また、揃え開始フラグ339、成功フラグ340をOFFに設定する。更に、CPU30は、加速度データ335と、正加速フレーム数336と、負加速フレーム数337とをクリアする。
【0072】
次に、CPU30は、コントローラ7から送信データとして送信されてくる一連の操作情報から、Z軸方向の加速度値(以下、Z軸加速度と呼ぶ)を取得する(ステップS2)。
【0073】
次に、CPU30は、取得した加速度に基づいて、負方向への加速(加速度の負方向への一連の変化)が終了したかどうかを判定する(ステップS3)。換言すれば、加速度値の変化の方向が、負方向から正方向へ変化(反転)したか否か(コントローラ7を振る方向が正方向から負方向へ変化したか否か)を判定する。上述の図13のグラフでいうと、例えば、点134が本条件を満たすことになる。つまり、点134(今回フレームの加速度値)のほうが、点131(前回フレームの加速度値)よりも大きい値であるため、加速度値の変化方向が反転したことを判定できる。本ステップでは、具体的には、以下の条件が満たされるか否かを判定する。
(加速状態338≠負加速終了) AND (今回フレームの加速度値>前回フレームの加速度値) AND (前回フレームの加速度値<所定の定数)
ここで、当該所定の定数としては、−1を用いる。この値はゲームの難易度と関係する。つまり、この値を−2に近づけるほど、トントン操作が検出されにくくなり、ゲームの難度が上がることになる。ここでは、ゲームの難易度を適度なものとするため、−1という値を用いている。
【0074】
上記判定の結果、上記条件が満たされていないときは(ステップS3でNO)、CPU30は、正方向への加速(加速度値の正方向への変化)が終了したかどうかを判定する(ステップS17)。換言すれば、加速度値の変化の方向が、正方向から負方向へ反転したか否かを判定する。上述の図13のグラフでいうと、例えば、点136が本条件を満たすことになる。つまり、点136(今回フレームの加速度値)のほうが、その前のフレームの加速度値よりも小さい値であるため、加速度値の変化方向が正方向から負方向へと反転したことを判定できる。本ステップでは、具体的には、以下の条件が満たされるか否かを判定する。
(加速状態338≠正加速終了) AND (今回フレームの加速度値<前回フレームの加速度値) AND (前回フレームの加速度値>所定の定数)
ここで、当該所定の定数としては、−0.4を用いるものとする。ここで、この定数は、例えば図13のグラフの円137で示される部分のような、正方向への加速の途中の微少な変化(コントローラ7がまだ下降しきってないにもかかわらず、何らかの原因で検出された微少な変化)について、手の平に当たったとして誤検出しないようにするために設けられている。換言すれば、実際には加速度値の変化方向が一瞬、反転してはいるが、これをまだ反転しておらず、正方向へ向けて加速中であるとみなして扱おうとするものである。そのため、例えば図13のグラフにおいて、仮に円137のところで加速度が−0.6になったときに反転し、そのまま−2近くまで下がったとしても、そのときの操作はトントン操作としては判定されないことになる。つまり、コントローラ7で手の平を叩いていても、手の動きが小さいような操作は、トントン操作としては検出されないことになる。
【0075】
上記判定の結果、正方向への加速が終了していないときは(ステップS17でNO)、処理を後述するステップS11へと進める。一方、正方向への加速が終了したときは(ステップS17でYES)、CPU30は、加速状態338に「正加速終了」を設定する(ステップS18)。次に、CPU30は、上記終了した一連の正方向への加速にかかったフレーム数を計算するため、正加速フレーム数計算処理を行う(ステップS19)。
【0076】
図18は、上記ステップS19で示した正加速フレーム数計算処理の詳細を示すフローチャートである。図18において、まず、CPU30は、正加速フレーム数336に、上記20個のZ軸加速度データ(図15のZ軸の加速度データ3353a〜3353t)のうち、現在、加速度値が格納されているデータの数(有効要素数)を設定する(ステップS31)。例えば、Z軸の加速度データ3353a〜3353pまで加速度値が入っていて、3353q〜3353tまでは空であれば、16という値が正加速フレーム数336設定される。この値が、正方向への加速にかかったフレーム数(時間)を示すことになる。続いて、CPU30は、加速度データ335をクリアする(ステップS32)。以上で、正加速フレーム数計算処理は終了する。その後、CPU30は、処理を後述するステップS11へと進める。
【0077】
図16に戻り、ステップS3の判定の結果、負方向への加速が終了したときは(ステップS3でYES)、CPU30は、加速状態338に「負加速終了」を設定する(ステップS4)。次に、CPU30は、上記終了した一連の負方向への加速にかかったフレーム数を計算するため、負加速フレーム数計算処理を行う(ステップS5)。
【0078】
図19は、上記ステップS5で示した負加速フレーム数計算処理の詳細を示すフローチャートである。図19において、CPU30は、まず、各種変数を設定する(ステップS41)。具体的には、変数Cntに、上記20個のZ軸加速度データのうち、現在加速度値が入っている数(有効要素数)を設定する。例えば、Z軸の加速度データ3353a〜3353gまで加速度値が入っていて、3353h〜3353tまでは空であれば、7という値が変数Cntに設定される。更に、CPU30は、変数Nextに、(Cnt−1)番目の加速度データを設定する。上記図13のグラフでいうと、点131の加速度データが設定される。更に、変数Backに、(Cnt−2)番目の加速度データを設定する。上記図13のグラフでいうと、点132の加速度データが設定される。
【0079】
次に、CPU30は、変数Back−変数Nextの式で算出される値が所定の定数より小さいか否かを判定する(ステップS42)。つまり、図13のグラフでいうと、点131と点132との加速度値の差が定数より小さいか否かを判定することになる。この差が、ある程度大きければ、上記トントン操作と判定でき、小さければ、トントン操作ではないと判定できるからである。つまり、図13および図14を用いて上述したように、トントン操作の場合は、鉛直下方への移動が終わったときにかかる加速度値の変化(図13の点131と点132)が、空中で振ったときの動作(図14の点142と点143)に比べると、急な変化となって上記差が大きくなるため、この差を見ることでトントン操作か否かを判別できる。上記判定の結果、上記差が所定の定数より小さくないときは(ステップS42でNO)、ある程度の差がある、つまりトントン操作であると考えられるため、処理を後述のステップS46へと進める。
【0080】
一方、上記判定の結果、上記差が所定の定数より小さいときは(ステップS42でYES)、CPU30は、変数Backに(Cnt−3)番目のZ軸の加速度データを設定する(ステップS43)。上記図13のグラフでいうと、点133の加速度値を設定することになる。そして、CPU30は、ステップS42と同様に、BackとNextの差が所定の定数より小さいか否かを判定する(ステップS44)。このように、加速度値の差の判定を2度行うのは、トントン操作をより正確に検知するためである。つまり、仮に上記図13の点131と点132との差が小さかった場合であっても、更にその前のフレームにおける加速度値との差(点131と点133との差)が大きいものであれば、この場合もトントン操作であると考えられるため、このように、2度判定を行って、トントン操作の検出漏れを防ごうとするものである。
【0081】
当該2度目の判定の結果、差が所定の定数より小さいときは(ステップS44でYES)、トントン操作ではないとして、CPU30は、変数Cntに、上記Z軸の加速度データ3353に格納できるデータの最大数である20を設定する(ステップS45)。一方、差が所定の定数より大きければ(ステップS44でNO)、トントン操作と考えられるため、ステップS46の処理に進む。
【0082】
次に、CPU30は、加速度データ335をクリアする。更に、負加速フレーム数337に変数Cntの値を設定する(ステップS46)。例えば、上記の判定でトントン操作と判定されていれば、負加速フレーム数には7という値が設定され(つまり、負方向の加速に7フレーム分の時間がかかったことを示す)、トントン操作でないと判定されていれば、20という値が設定されることになる(つまり、負方向の加速に20フレーム分の時間がかかったことを示す)。以上で、負加速フレーム数計算処理が終了する。
【0083】
図16に戻り、負加速フレーム数計算処理の次に、CPU30は、原稿用紙101を揃えることができるか否かを判定する(ステップS6)。具体的には、CPU30は、次の条件が満たされているか否かを判定する。
(正加速フレーム数+負加速フレーム数>定数) AND (負加速フレーム数≦正加速フレーム数)
ここで、定数としては例えば10を用いる。この定数は、コントローラ7を細かく(小さく)振るような動作をトントン操作として誤検出しないようにするために用いられる。つまり、トントン操作における下降〜上昇にかかった総フレーム数がこの定数より小さいということは、コントローラ7を細かく振るような動作であると考えられるためである。また、(負加速フレーム数≦正加速フレーム数)としているのは、トントン操作の場合は、正加速フレーム数より負方向への加速にかかるフレーム数のほうが小さくなるからである。空中でコントローラ7を振った場合は、上昇時にかかるフレーム数と下降時にかかるフレーム数とがほぼ等しくなる。そのため、前述のステップS5においてトントン操作でないと判断された場合(ステップS44でYES)は、負加速フレーム数を最大値(20)に設定することにより、 (負加速フレーム数≦正加速フレーム数)と検出されないようにして、トントン操作として誤検出されないようにしている。なお、本実施形態では、ゲームの難度を下げるため、フレーム数が同じ場合でもトントン操作として扱っているが、これを、(負加速フレーム数<正加速フレーム数)とすれば、トントン操作検出の正確性を高めることが可能である。
【0084】
上記判定の結果、条件を満たしていれば(ステップS6でYES)、成功フラグ340をオンに設定する(ステップS7)。一方、満たされてなければ(ステップS6でNO)、成功フラグ340をオフに設定する(ステップS8)。
【0085】
次に、CPU30は、正加速フレーム数が0より大きいか否かを判定する(ステップS9)。これは、トントン操作が開始されているかどうかを判定するためである。つまり、正方向への変化が開始してない状態で検出された負方向への変化(例えば、図13の円138で示される部分)については、上述したようなトントン操作の判定対象から外すためのものである。当該判定の結果、正加速フレーム数が0より大きければ、揃え開始フラグ339をオンに設定し(ステップS10)、処理を次のステップS11に進める。一方、0より大きくないときは(ステップS9でNO)、CPU30は、そのままステップS11に処理を進める。
【0086】
次に、CPU30は、加速度データ335を更新する(ステップS11)。つまり、今回フレームにおける加速度値を加速度データ335に格納する。
【0087】
次に、CPU30は、揃え開始フラグ339がオンか否かを判定する(ステップS12)。その結果、オンであれば(ステップS12でYES)、続いてCPU30は、成功フラグ340がオンか否かを判定する(ステップS13)。当該判定の結果、成功フラグ340がオンであれば(ステップS13でYES)、原稿用紙101が揃うアニメを表示する(ステップS14)。例えば、原稿用紙101が徐々に揃うアニメーションを4コマで表現している場合は、1コマ分表示する(つまり、トントン操作1回分のアニメーションを表示)。一方、成功フラグ340がオフであれば、原稿用紙101がばらけるアニメを表示する(ステップS15)。この場合も、1コマ分表示する。
【0088】
次に、CPU30は、ゲーム終了条件を満たしたか否かを判定する(ステップS16)。具体的には、クリア条件を満たしたか、あるいは、制限時間を経過したかどうかを判定する。クリア条件の判定は、例えば、上記のように用紙が徐々に揃うアニメーションを4コマで表現している場合は、成功フラグ340がオンになったループが4回続いたか(つまり、コントローラ7を手の平に4回叩いたか)を判定する。その結果、ゲーム終了条件が満たされていないときは(ステップS16でNO)、CPU30は、上記ステップS2に戻って処理を繰り返す。一方、ゲーム終了条件が満たされた場合(ステップS16でYES)は、CPU30は、当該ゲーム処理を終了する。以上で、本実施形態にかかるゲーム処理は終了する。
【0089】
このように、本実施形態では、加速度値の増減方向が反転したタイミングにおける加速度値の差に基づいて、入力装置に衝撃を加える操作(トントン操作)を正確に検出することができる。つまり、コントローラ7を単に空中で振る操作と、コントローラ7で手の平を叩く操作とを区別して識別することが可能となる。また、反転したときの加速度値の差について、2種類の時間間隔で差を算出して判定しているため、トントン操作の検出漏れを防ぎ、より正確に検出することができる。また、トントン操作1回分に対応する加速度の増減にかかったフレーム数(時間)をみて、トントン操作であるか否かを判定するため、入力装置を動かした操作がトントン操作かどうかを、より正確に検出することができる。
【0090】
また、図13の円137で示されるような、実際は正方向から負方向に反転していても、そのときの加速度値がある程度大きくないときは、反転していないものとして扱うため、コントローラ7で手の平を叩く操作について、加速度値の増減の幅が小さい、いわば手の動きが小さいような場合は、トントン操作として検出しない。そのため、より正確にトントン操作を判別することが可能となる。
【0091】
なお、上記実施形態では、加速度値の増減方向が反転したタイミングで衝撃を与えている操作か否かを検出していたが、このとき更に、衝撃の強さを判定するようにしてもよい。例えば、上述のように、増減方向が負方向から正方向へ反転したと判定されたときの直前の加速度値(図13の点131)が所定値以上か否かを判定する。そして、当該加速度値が所定値以上であるときとないときとで、異なるゲーム処理(例えば成功フラグ340のオン/オフの設定等)を実行させるようにしてもよい。つまり、この加速度値が所定値より大きいときは、衝撃が弱いと判定し、所定値より小さいときは衝撃が強いと判定して、衝撃の強さに応じたゲーム処理を行うようにしてもよい。更には、所定値以上か否かという二者択一な判定ではなく、加速度値(衝撃の強さ)に応じて、実行するゲーム処理をより細かく分けるようにしても良い。つまり、加速度値が−2Gのとき、−1.9Gのとき、−1.8Gのとき・・・のように、−0.1G単位でそれぞれ異なるゲーム処理を実行するようにしてもよい。これにより、ゲームの内容やゲーム展開をより広げることができ、ゲームの興趣をより高めることができる。
【産業上の利用可能性】
【0092】
本発明にかかるゲームプログラムおよびゲーム装置は、入力装置に衝撃を与える操作を正確に検出することができ、ゲームコントローラの動きに応じてゲームオブジェクトが操作されるゲームや入力装置の動きに応じて表示情報等が移動する情報処理等の用途に有用である。
【図面の簡単な説明】
【0093】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置3の機能ブロック図
【図3】図3のコントローラ7の上面後方から見た斜視図
【図4】図3のコントローラ7を下面後方から見た斜視図
【図5】図3のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図3のコントローラ7の構成を示すブロック図
【図7】本実施形態で想定するゲームの画面の一例
【図8】本実施形態で想定するゲームの画面の一例
【図9】本実施形態で想定するゲームの画面の一例
【図10】本実施形態で想定するゲームの操作方法を説明するための図
【図11】本実施形態で想定するゲームの操作方法を説明するための図
【図12】本実施形態で想定するゲームの操作方法を説明するための図
【図13】トントン操作における加速度値の変化の一例を示すグラフ
【図14】コントローラ7を単に空中で上下に振ったときの加速度値の変化の一例を示すグラフ
【図15】メインメモリ33のメモリマップを示す図解図
【図16】本発明の実施形態に係るゲーム処理を示すフローチャート
【図17】本発明の実施形態に係るゲーム処理を示すフローチャート
【図18】図16のステップS19で示した正加速フレーム数計算処理の詳細を示したフローチャート
【図19】図16のステップS5で示した負加速フレーム数計算処理の詳細を示したフローチャート
【符号の説明】
【0094】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
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
4…光ディスク
5…外部メモリカード
6…受信ユニット
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
705…電池

【特許請求の範囲】
【請求項1】
入力装置自体の動きに応じて変化する入力値に基づいたゲーム処理をゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記入力装置に設けられた加速度センサの出力に基づいて、前記入力装置の状態に応じて増減する加速度値を前記入力値として逐次取得して記憶部に格納する加速度取得ステップと、
前記記憶部に格納されている加速度値に基づいて、前記加速度値の増減方向が反転したことを検出する増減方向反転検出ステップと、
前記増減方向が反転したとき、当該反転の直前に取得された少なくとも2つの加速度値の差を算出する加速度差算出ステップと、
前記算出された差が所定値以上であれば第1のゲーム処理を実行し、所定値未満であるときは第1のゲーム処理とは異なる第2のゲーム処理を実行するゲーム処理ステップとを前記コンピュータに実行させる、ゲームプログラム。
【請求項2】
前記増減方向反転検出ステップは、
前記加速度値の増減方向が第1の方向から第2の方向に反転したことを検出する第1の反転検出ステップと、
前記第1の反転検出ステップにおける検出の後に、前記加速度値の増減方向が第2の方向から第1の方向に反転したことを検出する第2の反転検出ステップとを含み、
前記加速度差算出ステップにおいては、前記コンピュータは、前記第2の反転検出ステップにおいて増減方向の反転が検出されたときに、当該反転の直前に取得された少なくとも2つの加速度値の差を算出する、請求項1に記載のゲームプログラム。
【請求項3】
前記加速度差算出ステップは、
前記第2の反転検知ステップにおいて検出された反転の直前に第1の時間間隔で取得された2つの加速度値の差である第1の差を算出する第1差算出ステップと、
前記第2の反転検出ステップにおいて検出された反転の直前に前記第1の時間間隔とは異なった時間間隔である第2の時間間隔で取得された2つの加速度値の差である第2の差を算出する第2差算出ステップとを含み、
前記ゲーム処理ステップにおいては、前記コンピュータは、前記第1差および第2差の少なくとも一方が所定値以上であれば前記第1のゲーム処理を実行し、前記第1の差および第2の差のいずれもが所定値未満であれば、前記第2のゲーム処理を行う、請求項2に記載のゲームプログラム。
【請求項4】
前記ゲームプログラムは、
前記第1の反転検出ステップによる検出から第2の反転検出ステップによる検出までの間に前記加速度取得ステップによって取得された加速度の取得数を計測する第1の取得数計測ステップと、
前記第2の反転検出ステップにおける検出の後、第1の反転検出ステップにおいて反転が検出されるまでの間に取得された加速度の取得数を計測する第2の取得数計測ステップとを更に前記コンピュータに実行させ、
前記ゲーム処理ステップにおいては、前記コンピュータは、前記第1の取得数と第2の取得数との合計値が所定値以上であり、かつ、当該第1の取得数が第2の取得数未満のときにのみ、前記第1のゲーム処理を行う、請求項2に記載のゲームプログラム。
【請求項5】
前記加速度差算出ステップにおいては、前記コンピュータは、前記第1の反転検出ステップにおいて反転が検出された際の加速度値が所定値以上のときにのみ、前記加速度値の差を算出する、請求項2に記載のゲームプログラム。
【請求項6】
前記ゲームプログラムは、前記第2の反転検出ステップにおいて反転が検出されたとき、当該反転の直前に取得された加速度値が所定値以上か否かを判定する加速力判定ステップを更に前記コンピュータに実行させ、
前記ゲーム処理ステップにおいては、前記コンピュータは、前記加速力判定ステップにおいて所定値以上と判定されたときは前記第1のゲーム処理を行い、所定値より小さいと判定されたときは前記第2のゲーム処理を行う、請求項2に記載のゲームプログラム。
【請求項7】
入力装置自体の動きに応じて変化する入力値に基づいたゲーム処理を行うゲーム装置であって、
前記入力装置に設けられた加速度センサの出力に基づいて、前記入力装置の状態に応じて増減する加速度値を前記入力値として逐次取得して記憶部に格納する加速度取得部と、
前記記憶部に格納されている加速度値に基づいて、前記加速度値の増減方向が反転したことを検出する増減方向反転検出部と、
前記増減方向が反転したとき、当該反転の直前に取得された少なくとも2つの加速度値の差を算出する加速度差算出部と、
前記算出された差が所定値以上であれば第1のゲーム処理を実行し、所定値未満であるときは第1のゲーム処理とは異なる第2のゲーム処理を実行するゲーム処理部とを備える、ゲーム装置。
【請求項8】
前記増減方向反転検出部は、
前記加速度値の増減方向が第1の方向から第2の方向に反転したことを検出する第1の反転検出部と、
前記第1の反転検出部が前記増減方向の反転を検出した後に、前記加速度値の増減方向が第2の方向から第1の方向に反転したことを検出する第2の反転検出部とを含み、
前記加速度差算出部は、前記第2の反転検出部が増減方向の反転を検出したときに、当該反転の直前に取得された少なくとも2つの加速度値の差を算出する、請求項7に記載のゲーム装置。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2008−36167(P2008−36167A)
【公開日】平成20年2月21日(2008.2.21)
【国際特許分類】
【出願番号】特願2006−214929(P2006−214929)
【出願日】平成18年8月7日(2006.8.7)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】