説明

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

【課題】ジャイロセンサから得られる角速度に基づいたゲーム処理を行うゲームにおいて、ジャイロセンサに生じている誤差を認識しやすくするゲーム装置およびゲームプログラムを提供する。
【解決手段】複数軸周りの角速度をそれぞれ検出するジャイロセンサを備える入力装置から、当該角速度をそれぞれ示す角速度データを少なくとも含む操作データを取得してゲーム処理を行うゲーム装置である。ゲーム装置は、角速度データ取得手段、回転パラメータ算出手段、およびオブジェクト表示制御手段を備える。角速度データ取得手段は、角速度データを取得する。回転パラメータ算出手段は、角速度データが示す複数軸周りそれぞれの角速度の大きさを加算した値を用いて、1つの回転量を表す回転パラメータを算出する。オブジェクト表示制御手段は、回転パラメータに応じた回転量に応じて所定のオブジェクトを回転させて表示装置に表示させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、角速度に基づいてゲーム処理を行うゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
従来、ジャイロセンサを備えた入力装置を用いて、当該ジャイロセンサから出力される角速度データを用いてゲーム処理を行うゲーム装置が考えられている。例えば、ジャイロセンサを備えた棒状の入力制御装置を使用するゲーム装置が開示されている(例えば、特許文献1参照)。上記特許文献1で開示されたゲーム装置は、ゲームキャラクタが持つ刀を入力制御装置の動きに応じて制御するものである。具体的には、入力制御装置に備えられたジャイロセンサからの角速度データに基づいて、ゲームキャラクタが持つ刀の姿勢が算出される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2000−308756号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ジャイロセンサは、回転角速度を示すデータを出力する。したがって、いわゆるドリフト現象等によって出力が変動し、当該変動による誤差によってジャイロセンサから得られる角速度データが不正確なものとなってしまう場合がある。しかしながら、入力装置に備えられたジャイロセンサから得られる角速度データを用いてゲーム処理を行っている場合、当該ゲーム処理中においては上述した誤差の確認が難しい。また、入力装置を操作するプレイヤは、ジャイロセンサにどの程度の誤差が生じている状態であるのか確認することも難しい。
【0005】
それ故に、本発明の目的は、ジャイロセンサから得られる角速度に基づいたゲーム処理を行うゲームにおいて、ジャイロセンサに生じている誤差を認識しやすくするゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【0006】
上記の目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号やステップ番号等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【0007】
第1の発明は、複数軸(X、Y、Z軸)周りの角速度をそれぞれ検出するジャイロセンサ(95、96)を備える入力装置(6)から、当該角速度をそれぞれ示す角速度データ(Da)を少なくとも含む操作データを取得してゲーム処理を行うゲーム装置(5)である。ゲーム装置は、角速度データ取得手段(ステップ102およびステップ132を実行するCPU10;以下、単にステップ番号のみ記載する)、回転パラメータ算出手段(S123、S153)、およびオブジェクト表示制御手段(S48、S69、S84)を備える。角速度データ取得手段は、角速度データを取得する。回転パラメータ算出手段は、角速度データが示す複数軸周りそれぞれの角速度(v1、v1、v3)の大きさを加算した値を用いて、1つの回転量を表す回転パラメータ(V)を算出する。オブジェクト表示制御手段は、回転パラメータに応じた回転量に応じて所定のオブジェクト(Dobj)を回転させて表示装置(2)に表示させる。
【0008】
第2の発明は、上記第1の発明において、ゲーム処理手段(S60)および一時停止手段(S80)を、さらに備える。ゲーム処理手段は、角速度データに基づいてゲーム処理を行う。一時停止手段は、操作データが所定の操作が行われたことを示す場合にゲーム処理手段が処理しているゲーム処理を一時停止する。オブジェクト表示制御手段は、一時停止中に算出された回転パラメータに応じて当該一時停止中にオブジェクトを回転させて表示装置に表示させる(S84)。
【0009】
第3の発明は、上記第1の発明において、判定手段(S104〜S108、S112、S134〜S138、S142)を、さらに備える。判定手段は、角速度データに基づいて、入力装置の姿勢が安定しているか判定する。オブジェクト表示制御手段は、入力装置の姿勢が安定していると判定手段が判定するまでの期間中に、回転パラメータに応じてオブジェクトを回転させて表示装置に表示させる(S48、S69、S84)。
【0010】
第4の発明は、上記第3の発明において、ゲーム処理手段を、さらに備える。ゲーム処理手段は、角速度データに基づいてゲーム処理を行う。判定手段は、ゲーム処理手段がゲーム処理を開始する前に、判定を開始し(S43)、入力装置の姿勢が安定していると判定された後にゲーム処理手段によるゲーム処理を開始させる。
【0011】
第5の発明は、上記第3の発明において、オブジェクト表示制御手段は、入力装置の姿勢が安定していると判定手段が判定した場合に、オブジェクトを所定の方向に向けて静止させて表示装置に表示させる(Dobjb)。
【0012】
第6の発明は、上記第5の発明において、オブジェクト表示制御手段は、オブジェクトを所定の方向に向けて静止させた後、所定の条件を満たさない限り回転パラメータとは無関係に当該静止状態を継続して当該オブジェクトを表示装置に表示させる。
【0013】
第7の発明は、上記第1の発明において、回転パラメータ算出手段は、加算した値が所定の閾値より大きい場合、当該値を当該閾値にして回転パラメータを算出する。
【0014】
第8の発明は、上記第1の発明において、オブジェクト表示制御手段は、入力装置を模したオブジェクトを回転させて表示装置に表示させる。
【0015】
第9の発明は、上記第1の発明において、回転パラメータ算出手段は、加算した値を、過去に算出された回転パラメータ(Vlast)の値に所定割合で近づけることによって、新たな回転パラメータを算出する。
【0016】
第10の発明は、上記第1の発明において、オフセット値算出手段およびオフセット補正手段を、さらに備える。オフセット値算出手段は、角速度データが示す角速度に収束するゼロ点オフセット(ofs)値を、複数軸周りそれぞれに対して算出する。オフセット補正手段は、角速度データが示す複数軸周りそれぞれの角速度を、当該軸周りに対応して算出されたそれぞれのゼロ点オフセット値で補正する。回転パラメータ算出手段は、オフセット補正手段によって補正された複数軸周りそれぞれの角速度の大きさを用いて、回転パラメータを算出する。
【0017】
第11の発明は、上記第10の発明において、連続個数算出手段を、さらに備える。連続個数算出手段は、最新の角速度データが示す角速度から遡って連続して所定の安定範囲内となった角速度の連続個数(ct)を算出する。オフセット値算出手段は、連続個数が多いほど、最新の角速度データが示す角速度に収束する度合いの強いゼロ点オフセット値を算出する。
【0018】
第12の発明は、複数軸周りの角速度をそれぞれ検出するジャイロセンサを備える入力装置から、当該角速度をそれぞれ示す角速度データを少なくとも含む操作データを取得してゲーム処理を行うゲーム装置のコンピュータ(10)で実行されるゲームプログラムである。ゲームプログラムは、角速度データ取得手段、回転パラメータ算出手段、およびオブジェクト表示制御手段として、コンピュータを機能させる。角速度データ取得手段は、角速度データを取得する。回転パラメータ算出手段は、角速度データが示す複数軸周りそれぞれの角速度の大きさを加算した値を用いて、1つの回転量を表す回転パラメータを算出する。オブジェクト表示制御手段は、回転パラメータに応じた回転量に応じて所定のオブジェクトを回転させて表示装置に表示させる。
【0019】
第13の発明は、上記第12の発明において、ゲーム処理手段および一時停止手段として、コンピュータをさらに機能させる。ゲーム処理手段は、角速度データに基づいてゲーム処理を行う。一時停止手段は、操作データが所定の操作が行われたことを示す場合にゲーム処理手段が処理しているゲーム処理を一時停止する。オブジェクト表示制御手段は、一時停止中に算出された回転パラメータに応じて当該一時停止中にオブジェクトを回転させて表示装置に表示させる。
【0020】
第14の発明は、上記第12の発明において、判定手段として、さらにコンピュータを機能させる。判定手段は、角速度データに基づいて、入力装置の姿勢が安定しているか判定する。オブジェクト表示制御手段は、入力装置の姿勢が安定していると判定手段が判定するまでの期間中に、回転パラメータに応じてオブジェクトを回転させて表示装置に表示させる。
【0021】
第15の発明は、上記第14の発明において、ゲーム処理手段として、さらにコンピュータを機能させる。ゲーム処理手段は、角速度データに基づいてゲーム処理を行う。判定手段は、ゲーム処理手段がゲーム処理を開始する前に、判定を開始し、入力装置の姿勢が安定していると判定された後にゲーム処理手段によるゲーム処理を開始させる。
【0022】
第16の発明は、上記第14の発明において、オブジェクト表示制御手段は、入力装置の姿勢が安定していると判定手段が判定した場合に、オブジェクトを所定の方向に向けて静止させて表示装置に表示させる。
【0023】
第17の発明は、上記第16の発明において、オブジェクト表示制御手段は、オブジェクトを所定の方向に向けて静止させた後、所定の条件を満たさない限り回転パラメータとは無関係に当該静止状態を継続して当該オブジェクトを表示装置に表示させる。
【0024】
第18の発明は、上記第12の発明において、回転パラメータ算出手段は、加算した値が所定の閾値より大きい場合、当該値を当該閾値にして回転パラメータを算出する。
【0025】
第19の発明は、上記第12の発明において、オブジェクト表示制御手段は、入力装置を模したオブジェクトを回転させて表示装置に表示させる。
【0026】
第20の発明は、上記第12の発明において、回転パラメータ算出手段は、加算した値を、過去に算出された回転パラメータの値に所定割合で近づけることによって、新たな回転パラメータを算出する。
【0027】
第21の発明は、上記第12の発明において、オフセット値算出手段およびオフセット補正手段として、さらにコンピュータを機能させる。オフセット値算出手段は、角速度データが示す角速度に収束するゼロ点オフセット値を、複数軸周りそれぞれに対して算出する。オフセット補正手段は、角速度データが示す複数軸周りそれぞれの角速度を、当該軸周りに対応して算出されたそれぞれのゼロ点オフセット値で補正する。回転パラメータ算出手段は、オフセット補正手段によって補正された複数軸周りそれぞれの角速度の大きさを用いて、回転パラメータを算出する。
【0028】
第22の発明は、上記第21の発明において、連続個数算出手段として、さらにコンピュータを機能させる。連続個数算出手段は、最新の角速度データが示す角速度から遡って連続して所定の安定範囲内となった角速度の連続個数を算出する。オフセット値算出手段は、連続個数が多いほど、最新の角速度データが示す角速度に収束する度合いの強いゼロ点オフセット値を算出する。
【発明の効果】
【0029】
上記第1の発明によれば、プレイヤは、回転して表示されているオブジェクトやその回転速度を視認することによって、ジャイロセンサの出力状況を認識することができる。例えば、ジャイロセンサを静止させることが必要な状況において、ジャイロセンサが安定していない場合、ジャイロセンサから得られる角速度データに応じてオブジェクトが回転して表示されるため、ジャイロセンサが動いていたり、出力に誤差が含まれていたりすることを認識することができる。また、オブジェクトの回転速度は、複数軸周りの角速度の大きさを全て加算した値に基づいて決定されるため、例えばわずかな角速度を生じているためにジャイロセンサが安定していない場合であっても、その角速度が強調されて画面に現れるため、プレイヤにとってジャイロセンサが安定していないことがよりわかりやすい表現となる。
【0030】
上記第2の発明によれば、ゲーム処理中にプレイヤが当該ゲーム処理を一時停止する操作を行った場合、当該一時停止後にジャイロセンサから得られる角速度データに応じてオブジェクトが回転して表示されるため、ゲーム処理中であっても一時停止してジャイロセンサの出力状況を確認することができる。
【0031】
上記第3の発明によれば、ジャイロセンサを静止させることが必要な状況等において、ジャイロセンサが安定するまでの間、ジャイロセンサから得られる角速度データに応じてオブジェクトが回転して表示されるため、ジャイロセンサが安定していないことを認識することができる。
【0032】
上記第4の発明によれば、ゲーム処理を行うために、当該ゲーム処理前にジャイロセンサを静止させることが必要な状況等において、ジャイロセンサが安定するまでの間、ジャイロセンサから得られる角速度データに応じてオブジェクトが回転して表示されると共に、ジャイロセンサが一旦安定した後に当該ゲーム処理が開始されるため、ジャイロセンサからの精確なデータに基づいたゲーム処理が可能となる。
【0033】
上記第5の発明によれば、ジャイロセンサが安定した場合にオブジェクトが所定の方向に向かって静止して表示されるため、ジャイロセンサが安定したことを容易に認識することができる。
【0034】
上記第6の発明によれば、ジャイロセンサが一旦安定した場合、その後に入力装置を動かしてもオブジェクトの静止表示が継続されるため、プレイヤはジャイロセンサが一旦安定したことを常に認識することができる。
【0035】
上記第7の発明によれば、オブジェクトの回転速度が一定値以下に抑えられるため、オブジェクトの回転速度が速すぎることによって表示が見にくい状況を避けることができる。
【0036】
上記第8の発明によれば、オブジェクトが入力装置の出力状況を表していることを直感的に示すことができる。
【0037】
上記第9の発明によれば、オブジェクトの回転速度の変化を滑らかにすることができる。
【0038】
上記第10の発明によれば、ジャイロセンサの静止時出力によってオフセット補正された値を用いた処理が可能となる。
【0039】
上記第11の発明によれば、入力装置が静止状態にあれば、得られる角速度にゼロ点オフセット値が収束する割合が大きくなるため、ゼロ点オフセット値の収束に関連付けてオブジェクトの回転表示を行うことができる。
【0040】
本発明のゲームプログラムによれば、上述したゲーム装置と同様の効果を得ることができる。
【図面の簡単な説明】
【0041】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図
【図2】図1のゲーム装置本体5の機能ブロック図
【図3】図1の入力装置6の上面後方から見た斜視図
【図4】図3のコントローラ7を下面前方から見た斜視図
【図5】図3のコントローラ7の上筐体を外した状態を示す斜視図
【図6】図4のコントローラ7の下筐体を外した状態を示す斜視図
【図7】図3の入力装置6の構成を示すブロック図
【図8】モニタ2に表示されるジャイロセンサ安定確認画面の一例を示す図
【図9】図8のジャイロセンサ安定確認画面に含まれる入力装置安定情報画面IdaおよびIdbの一例を拡大した図
【図10】図1のゲーム装置本体5のメインメモリに記憶される主なデータおよびプログラムの一例を示す図
【図11】図1のゲーム装置本体5において実行されるゲーム処理の一例を示すフローチャート
【図12】図1のゲーム装置本体5において実行されるゲーム処理の一例を示すフローチャート
【図13】図1のゲーム装置本体5において実行されるゲーム処理の一例を示すフローチャート
【図14】図11〜図13における安定確認処理の一例を示すサブルーチン
【図15】図11および図12における安定確認画面表示処理の一例を示すサブルーチン
【図16】図13におけるステップ83の安定再確認処理の一例を示すサブルーチン
【図17】図13におけるステップ84の安定再確認画面表示処理の一例を示すサブルーチン
【図18】モニタ2に表示される安定確認未完了画面の一例を示す図
【図19】モニタ2に表示される情報画面In1の一例を示す図
【図20】モニタ2に表示される情報画面In2の一例を示す図
【図21】モニタ2に表示される安定確認画面の一例を示す図
【発明を実施するための形態】
【0042】
図1を参照して、本発明の一実施形態に係るゲームプログラムを実行するゲーム装置について説明する。以下、説明を具体的にするために、当該装置の一例の据置型のゲーム装置本体5を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
【0043】
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置3から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明のゲームプログラムの一例となるプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるための入力装置6とを備えている。
【0044】
また、ゲーム装置本体5は、無線コントローラモジュール19(図2参照)を内蔵する。無線コントローラモジュール19は、入力装置6から無線送信されるデータを受信し、ゲーム装置本体5から入力装置6へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。
【0045】
また、ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ17(図2参照)が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。また、ゲームプログラム等は、光ディスク4に限らず、フラッシュメモリ17に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体5は、フラッシュメモリ17に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、入力装置6を操作することによって、ゲーム進行を楽しむことができる。
【0046】
入力装置6は、自機に対して行われた操作の内容を示す操作データをゲーム装置本体5に与えるものである。本実施形態では、入力装置6は、コントローラ7と角速度検出ユニット9とを含む。詳細は後述するが、入力装置6は、コントローラ7に対して角速度検出ユニット9が着脱可能に接続されている構成である。
【0047】
コントローラ7は、無線コントローラモジュール19を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)とが設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。そして、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の無線コントローラモジュール19から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0048】
次に、図2を参照して、ゲーム装置本体5の内部構成について説明する。図2は、ゲーム装置本体5の構成を示すブロック図である。ゲーム装置本体5は、CPU(Central Processing Unit)10、システムLSI(Large Scale Integration)11、外部メインメモリ12、ROM/RTC(Read Only Memory/Real Time Clock)13、ディスクドライブ14、およびAV−IC(Audio Video−Integrated Circuit)15等を有する。
【0049】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については、後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置本体5の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ35または外部メインメモリ12に読み出したデータを書き込む。
【0050】
また、システムLSI11には、入出力プロセッサ31、GPU(Graphics Processor Unit)32、DSP(Digital Signal Processor)33、VRAM(Video RAM)34、および内部メインメモリ35が設けられる。図示は省略するが、これらの構成要素31〜35は、内部バスによって互いに接続される。
【0051】
GPU32は、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM34は、GPU32がグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU32は、VRAM34に記憶されたデータを用いて画像データを作成する。
【0052】
DSP33は、オーディオプロセッサとして機能し、内部メインメモリ35や外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0053】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、AVコネクタ16を介して、読み出した画像データをモニタ2に出力するとともに、読み出した音声データをモニタ2に内蔵されるスピーカ2aに出力する。これによって、画像がモニタ2に表示されるとともに音がスピーカ2aから出力される。
【0054】
入出力プロセッサ(I/Oプロセッサ)31は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ31は、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、および外部メモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0055】
入出力プロセッサ31は、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ31は、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介して当該データをネットワークに送信する。また、入出力プロセッサ31は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22、および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、ゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置本体5と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体5を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0056】
また、入出力プロセッサ31は、アンテナ23および無線コントローラモジュール19を介して、コントローラ7から送信される操作データ等を受信し、内部メインメモリ35または外部メインメモリ12のバッファ領域に記憶(一時記憶)する。なお、内部メインメモリ35には、外部メインメモリ12と同様に、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、CPU10のワーク領域やバッファ領域として用いられてもかまわない。
【0057】
さらに、入出力プロセッサ31には、拡張コネクタ20および外部メモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ31は、拡張コネクタ20や外部メモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0058】
また、ゲーム装置本体5(例えば、前部主面)には、当該ゲーム装置本体5の電源ボタン24、ゲーム処理のリセットボタン25、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトボタン26等が設けられている。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置本体5の各構成要素に対して、図示しないACアダプタを介して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体5の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0059】
図3および図4を参照して、入力装置6について説明する。なお、図3は、入力装置6の上側後方から見た一例を示す斜視図である。図4は、コントローラ7を下側前方から見た一例を示す斜視図である。
【0060】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0061】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0062】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、十字キー72aの代わりに設けてもかまわない。
【0063】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体5が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0064】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0065】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール19からコントローラ7へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
【0066】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5に示すスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0067】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0068】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。図1および図3に示した入力装置6の一例では、コネクタ73を介して、コントローラ7の後面に角速度検出ユニット9が着脱自在に装着される。
【0069】
ここで、以下の説明を具体的にするために、入力装置6(コントローラ7)に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸を入力装置6(コントローラ7)に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の上面(操作ボタン72aが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の右側面(図3で表されている側面)方向をX軸正方向とする。
【0070】
角速度検出ユニット9は、3軸周りの角速度を検知するジャイロセンサ(図7に示す2軸ジャイロセンサ95および1軸ジャイロセンサ96)を有する。角速度検出ユニット9の前端(図3に示すZ軸正方向側の端部)には、コネクタ73に接続可能なプラグ(図7に示すプラグ93)が設けられる。さらに、プラグ93の両側にはフック(図示せず)が設けられる。角速度検出ユニット9がコントローラ7に対して装着される状態では、プラグ93がコネクタ73に接続されるとともに、上記フックがコントローラ7の係止穴73aに係止する。これによって、コントローラ7と角速度検出ユニット9とがしっかりと固定される。また、角速度検出ユニット9は、側面(図3に示すX軸方向の面)にボタン91を有している。ボタン91は、それを押下すれば上記フックの係止穴73aに対する係止状態を解除することができるように構成されている。したがって、ボタン91を押下しながらプラグ93をコネクタ73から抜くことによって、角速度検出ユニット9をコントローラ7から離脱することができる。
【0071】
また、角速度検出ユニット9の後端には、上記コネクタ73と同形状のコネクタが設けられる。したがって、コントローラ7(のコネクタ73)に対して装着可能な他の機器は、角速度検出ユニット9の後端コネクタに対しても装着可能である。なお、図3においては、当該後端コネクタに対してカバー92が着脱可能に装着されている。
【0072】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
【0073】
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。また、無線モジュール753(図7参照)およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の動きを良好な感度でゲーム装置本体5等が判定することができる。
【0074】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0075】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0076】
次に、図7を参照して、入力装置6(コントローラ7および角速度検出ユニット9)の内部構成について説明する。なお、図7は、入力装置6の構成の一例を示すブロック図である。
【0077】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0078】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
【0079】
コントローラ7は、3軸(X、Y、Z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。また、少なくとも1軸方向に沿った直線加速度をそれぞれ検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて、加速度センサ701が提供されてもよい。
【0080】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、それら3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【0081】
しかしながら、加速度センサ701から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ(例えばCPU10)またはコントローラのプロセッサ(例えばマイコン751)等のコンピュータが処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
【0082】
例えば、加速度センサ701を搭載するコントローラ7が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ701によって検出される加速度が重力加速度のみであるとして処理する場合)、コントローラ7が現実に静的な状態であれば、検出された加速度に基づいてコントローラ7の姿勢が重力方向に対して傾いているか否か、またはどの程度傾いているかを知ることができる。具体的には、加速度センサ701の検出軸が鉛直下方向を向いている状態を基準としたとき、当該検出軸方向に1G(重力加速度)が作用しているか否かだけでコントローラ7が鉛直下方向に対して傾いているか否かを知ることができる。また、上記検出軸方向に作用している加速度の大きさによって、コントローラ7が鉛直下方向に対してどの程度傾いているかも知ることができる。また、多軸方向の加速度を検出可能な加速度センサ701の場合には、さらに各軸に対して検出された加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ7がどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ701からの出力に基づいて、プロセッサがコントローラ7の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ701からの出力に基づいて、おおよそのコントローラ7の傾き具合を推定するような処理としてもよい。このように、加速度センサ701をプロセッサと組み合わせて用いることによって、コントローラ7の傾き、姿勢、または位置を判定することができる。
【0083】
一方、加速度センサ701が動的な状態であることを前提とする場合には、当該加速度センサ701が重力加速度成分に加えて加速度センサ701の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、コントローラ7の動き方向等を知ることができる。具体的には、加速度センサ701を備えるコントローラ7がプレイヤの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7の様々な動きおよび/または位置を算出することができる。なお、加速度センサ701が動的な状態であることを前提とする場合であっても、加速度センサ701の動きに応じた加速度を所定の処理により除去すれば、重力方向に対するコントローラ7の傾きを知ることが可能である。
【0084】
他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ701が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。加速度センサ701でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
【0085】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体5から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。また、マイコン751はコネクタ73に接続されている。角速度検出ユニット9から送信されてくるデータは、コネクタ73を介してマイコン751に入力される。以下、角速度検出ユニット9の構成について説明する。
【0086】
角速度検出ユニット9は、プラグ93、マイコン94、2軸ジャイロセンサ95、および1軸ジャイロセンサ96を備えている。上述のように、角速度検出ユニット9は、3軸(本実施形態では、XYZ軸)周りの角速度を検出し、検出した角速度を示すデータ(角速度データ)をコントローラ7へ出力する。
【0087】
2軸ジャイロセンサ95は、X軸周りの角速度およびY軸周りの(単位時間あたりの)角速度を検出する。また、1軸ジャイロセンサ96は、Z軸周りの(単位時間あたりの)角速度を検出する。なお、本明細書では、コントローラ7の撮像方向(Z軸正方向)を基準として、XYZ軸周りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、2軸ジャイロセンサ95は、ロール方向(X軸周りの回転方向)およびピッチ方向(Y軸周りの回転方向)の角速度を検出し、1軸ジャイロセンサ96は、ヨー方向(Z軸周りの回転方向)の角速度を検出する。
【0088】
なお、本実施形態では、3軸周りの角速度を検出するために、2軸ジャイロセンサ95と1軸ジャイロセンサ96とを用いる構成としたが、他の実施形態においては、3軸周りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。なお、2軸ジャイロセンサ95および1軸ジャイロセンサ96を総称して説明する場合は、ジャイロセンサ95および96と記載する。
【0089】
各ジャイロセンサ95および96で検出された角速度を示すデータは、マイコン94に出力される。したがって、マイコン94には、XYZ軸の3軸周りの角速度を示すデータが入力されることになる。マイコン94は、上記3軸周りの角速度を示すデータを角速度データとしてプラグ93を介してコントローラ7へ出力する。なお、マイコン94からコントローラ7への出力は、所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で出力を行うことが好ましい。
【0090】
コントローラ7の説明に戻り、コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、撮像情報演算部74からの処理結果データ、および角速度検出ユニット9からの3軸周りの角速度を示すデータ(X、Y、Z軸周り角速度データ)は、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ、X、Y、およびZ軸周り角速度データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、撮像情報演算部74からの処理結果データ、角速度検出ユニット9からのX、Y、およびZ軸周り角速度データがコントローラ7から送信される。そして、ゲーム装置本体5の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体5で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ、X、Y、およびZ軸周り角速度データ)を取得する。そして、ゲーム装置本体5のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0091】
入力装置6を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ7を任意の傾斜角度に傾ける操作を行うことができる。その他、入力装置6によれば、プレイヤは、入力装置6によって画面上の任意の位置を指示する操作、および、入力装置6自体を動かす操作を行うこともできる。
【0092】
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、図8および図9を用いてゲーム装置本体5で行う処理の概要について説明する。なお、図8は、モニタ2に表示されるジャイロセンサ安定確認画面の一例を示す図である。図9は、図8のジャイロセンサ安定確認画面に含まれる入力装置安定情報画面IdaおよびIdbの一例を拡大した図である。
【0093】
本実施形態においては、ゲームシステム1を起動してからゲームを実行して終了するまでの特定場面において、所定の条件を満たす場合にジャイロセンサ安定確認画面がモニタ2に表示される。例えば、ゲームシステム1を起動してからゲームを開始する前に、当該ゲームにおいて使用する入力装置6の数(典型的には、プレイヤの人数)を決定した後に、使用される入力装置6毎のジャイロセンサ95および96の安定を確認する画面(ジャイロセンサ安定確認画面)が表示される。例えば、図8に示すように、ジャイロセンサ安定確認画面では、ジャイロセンサ95および96を安定した状態にするためにプレイヤに要求する動作を示す要求情報画面Iiと共に、使用される入力装置6のジャイロセンサ95および96の安定確認状態をそれぞれ示す入力装置安定情報画面Idが表示される。
【0094】
ここで、「ジャイロセンサ95および96の安定」とは、ジャイロセンサ95および96を静止している状態にして当該状態におけるジャイロセンサ95および96からの出力(静止時出力)を得るための処理である。例えば、ジャイロセンサ95および96は、上記静止時出力を基準として、X、Y、およびZ軸周り角速度データを出力する。一例として、ジャイロセンサ95および96は、検出した角速度に比例した電圧を出力し、上記静止時出力を中心に回転角速度が正方向のときに出力電圧が高くなり、負方向のときに出力電圧が低くなる。つまり、設定する静止時出力に誤差が含まれていると、ジャイロセンサ95および96から出力される角速度データが示す角速度にも誤差が含まれることになる。したがって、ジャイロセンサ95および96を安定した状態にして、ジャイロセンサ95および96における正確な静止時出力を得ることによって、結果的に正確な角速度を得ることができる。このように、ジャイロセンサ安定確認画面をモニタ2に表示することによって、プレイヤにジャイロセンサ95および96(入力装置6)を静止させることを促すと共に、現在のジャイロセンサ95および96(入力装置6)の静止状況を表示することによって、プレイヤにジャイロセンサ95および96に対して現時点に生じている誤差を報知している。
【0095】
ここで、ジャイロセンサ95および96は、X、Y、およびZ軸周り角速度データを出力ための基準値(ゼロ点)を固定値として予め有していることがあるが、現実の静止時出力と当該固定値とがずれていることがあり得る。また、一旦、静止時出力が決定された後であっても、ジャイロセンサ95および96の出力が時間経過と共に変動することがあり、この場合、静止時出力も時間経過と共に変動する(ドリフト現象)。このような静止時出力の誤差を低減するために、ジャイロセンサ安定確認画面をモニタ2に表示することによって、ジャイロセンサ95および96の静止を促し、その時点での静止時出力を得ている。
【0096】
具体的には、要求情報画面Iiとして、入力装置6を静止させて載置することをプレイヤに促す情報が表示される。例えば、要求情報画面Iiとして、「コントローラを机の上などにおいて静止させてください」とプレイヤに報知する文字情報が表示される。
【0097】
また、図8および図9においては、2つの入力装置6aおよび10bが安定状態にあるか否かをそれぞれ示す入力装置安定情報画面IdaおよびIdbが一例として表示されている。図9において、入力装置安定情報画面Idには、入力装置オブジェクトDobjおよび入力装置識別オブジェクトMobjと共に、ジャイロセンサ95および96の安定確認中か否かを示す文字情報が表示される。例えば、入力装置識別オブジェクトMobjは、内部に対象となる入力装置6を識別する複数の標識を有しており、当該標識の何れかを点灯させることによって、何れのプレイヤが所持する入力装置6の情報であるかを示している。例えば、入力装置安定情報画面Idaに表示されている入力装置識別オブジェクトMobjaは、左端の標識を点灯させることによって、入力装置安定情報画面Idaに表示されている情報が第1プレイヤによって所持されている入力装置6(入力装置6a)に関するものであることを示している。また、入力装置安定情報画面Idbに表示されている入力装置識別オブジェクトMobjbは、左端から2番目の標識を点灯させることによって、入力装置安定情報画面Idbに表示されている情報が第2プレイヤによって所持されている入力装置6(入力装置6b)に関するものであることを示している。
【0098】
図9に示した一例では、入力装置6aのジャイロセンサ95および96が安定状態とはなっていない場合の画面例として、入力装置安定情報画面Idaが例示されている。入力装置6aのジャイロセンサ95および96が安定状態になっていない場合、入力装置安定情報画面Idaに表示される入力装置オブジェクトDobjaは、図示j方向に回転している状態で表示される。入力装置オブジェクトDobjaが回転する速度は、ジャイロセンサ95および96に加えられる角速度の大きさに基づいて設定される。一方、入力装置6bのジャイロセンサ95および96が安定状態となっている場合の画面例として、入力装置安定情報画面Idbが例示されている。入力装置6bのジャイロセンサ95および96が安定状態となった場合、入力装置安定情報画面Idbに表示される入力装置オブジェクトDobjbは、縦方向に静止した状態で表示される。なお、ジャイロセンサ95および96が安定していない状態から安定状態になる直前には、回転中の入力装置オブジェクトDobjaの回転速度は遅くなっており、また、そのときの入力装置オブジェクトDobjaの姿勢が上記縦方向とは限らないので、その時点での姿勢から上記縦方向になるように所定の回転をさせてから入力装置オブジェクトDobjaを静止させる。なお、ジャイロセンサ95および96の安定状態が一旦確認された後に、プレイヤが入力装置6bを動かしたとしても、入力装置オブジェクトDobjbは、縦方向の静止状態を維持した状態で表示される。
【0099】
このように、入力装置オブジェクトDobjを視認することによって、プレイヤは自分が所持する入力装置6のジャイロセンサ95および96の状態を容易に認識することができる。例えば、ジャイロセンサ95および96の出力に誤差が含まれる場合には、実際に入力装置6を静止させていても入力装置オブジェクトDobjが回転するので、プレイヤが当該誤差を認識することができる。また、入力装置安定情報画面Idは、ゲームシステム1を起動してからゲームを実行して終了するまでの特定場面において、所定の条件を満たす場合にモニタ2に表示される。後述により明らかとなるが、入力装置安定情報画面Idは、例えばゲームで使用する入力装置6の数を決定(典型的には、プレイヤの人数を決定)した後に安定フラグSfrgがオフとなっている入力装置6がある場合、ゲーム中において安定フラグSfrgがオフとなり当該オフとなった入力装置6を現時点で当該ゲームに用いる状況にある場合、ゲーム中においてプレイヤが入力装置安定情報画面Idを表示させる操作を行った場合等において、モニタ2に表示される。したがって、入力装置安定情報画面Idは、以降のゲーム処理のためにジャイロセンサ95および96の静止が必要な状況の場合や、プレイヤがジャイロセンサ95および96に生じている誤差を確認したい場合等に表示されることになり、ゲーム処理を進めていく上で必要な状況で適宜表示されることになる。
【0100】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図10を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図10は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータおよびプログラムの一例を示す図である。
【0101】
図10に示すように、メインメモリのデータ記憶領域には、角速度データDa、角度データDb、過去角度データDc、安定フラグデータDd、安定カウンタデータDe、安定確認時間データDf、回転速度データDg、再確認フラグデータDh、および画像データDi等が記憶される。なお、メインメモリには、図10に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。また、メインメモリのプログラム記憶領域には、ゲームプログラムを構成する各種プログラム群Paが記憶される。各種プログラム群Paは、ゲーム装置本体5に電源が投入された後の適宜のタイミングで光ディスク4やその他の記録媒体からその一部または全部が読み込まれてメインメモリに記憶される。
【0102】
角速度データDaは、角速度検出ユニット9のジャイロセンサ95および96によって検出された角速度を示すデータであり、使用される入力装置6毎に対応させて格納される。例えば、角速度データDaは、入力装置6(ジャイロセンサ95および96)に生じた角速度を示すデータであり、入力装置6から送信データとして送信されてくる一連の操作情報に含まれる角速度データが格納される。角速度データDaには、ジャイロセンサ95および96が検出したX軸周りの角速度v1を示すX軸周り角速度データDa1、Y軸周りの角速度v2を示すY軸周り角速度データDa2、Z軸周りの角速度v3を示すZ軸周り角速度データDa3が含まれる。なお、ゲーム装置本体5に備える無線コントローラモジュール19は、コントローラ7から所定周期(例えば、1/200秒毎)に送信される操作情報に含まれる角速度データを受信し、無線コントローラモジュール19に備える図示しないバッファに蓄えられる。その後、例えば、上記バッファに蓄えられた角速度データがゲーム処理周期である1フレーム毎(例えば、1/60秒毎)に当該期間中に蓄えられたデータが読み出されて、メインメモリの角速度データDaが更新される。
【0103】
なお、角速度データDaに適宜格納される角速度データは、当該格納される前に所定の補正が行われている。以下、角速度データの補正例について説明する。
【0104】
例えば、ジャイロセンサ95および96から出力された角速度データが示す角速度vを、
v←v+(sum/ct−v)×a
によって一次補正する。ここで、ctは、角速度vが格納されたデータバッファ(図示せず)から遡って、角速度が連続して安定範囲(下限)s1および安定範囲(上限)s2で設定された安定範囲内に収まると判断されたデータの数(連続個数ct)である。sumは、上記安定範囲内に収まると判断されたデータバッファ内の値の合計値(合計値sum)である。つまり、角速度vを書き込んだデータバッファの位置から遡って、新しいデータバッファから古いデータバッファへ順に、連続して上記安定範囲内に含まれるデータバッファを繰り返し取得して、その個数(連続個数ct)および合計値(合計値sum)である(ただし、検索上限数が設定される)。また、aは、静止具合値を示す。静止具合値aは、0〜1の範囲内の数値であり、ジャイロセンサ95および96の動きの変化が少ない(安定している)期間が長ければ長いほど1に近づく値である。そして、静止具合値aは、連続個数ctが上記検索上限数と等しいとき、すなわち角速度vが格納されたデータバッファから遡って連続して検索上限数分のデータバッファの値が全て上記安定範囲内に入っていたとき、最大値1になるようにして正規化される。
【0105】
そして、上記一次補正後の角速度vからゼロ点オフセット値(静止時出力値)ofsを減算することでオフセット補正する。ここで、ゼロ点オフセット値ofsは、ジャイロセンサ95および96が静止時に示すと想定されるデータの値であって、予め定められたデバイス固有値に設定されているが、上記一次補正後の角速度vに応じて、順次補正されて再設定される。具体的には、ゼロ点オフセット値ofsは、
ofs←ofs+(v−ofs)×a×C
によって順次補正されて再設定される。ここで、Cは、定数であり、例えばC=0.01に設定される。定数Cを小さい値にすることによって、短期間で角速度vが、入力装置6の静止状態における角速度(ゼロ点)であるように補正されることを防止している。また、静止値出力値のずれの原因となるドリフト現象は、変化が激しい現象ではないために反応良く行う必要がないため、定数Cを小さな値にすることによって高精度なゼロ点オフセット値ofsを得ることができる。なお、入力装置6を用いるゲームの種類等に応じて、定数Cの値を変化させてもかまわない。例えば、静止具合値aに定数Cを乗算した値が大きいほど、すなわち入力装置6の動きの変化が少ない安定した状態となった期間が長いほど、ゼロ点オフセット値ofsが上記一次補正された角速度vに近い値に補正される。したがって、入力装置6が静止状態にあれば、ゼロ点オフセット値ofsが上記一次補正された角速度vに収束する割合が大きくなる。つまり、ジャイロセンサ95および96の静止時のように角速度に変化が少ない場合は、ゼロ点がその平均値に近づいていくようにゼロ点の補正が行われる。すなわち、入力装置6が一旦静止すれば、補正によって以降の角速度の誤差が除かれることになる。したがって、本実施形態では、安定確認を行うことによって、ジャイロセンサ95および96の誤差が補正済みの状態でゲームを行うことができることになる。
【0106】
そして、上記一次補正後の角速度vは、ゼロ点オフセット値ofsを用いてオフセット補正される。例えば、上記一次補正後の角速度vは、
v←v―ofs
によって、オフセット補正される。これによって、ジャイロセンサ95および96から出力された角速度データが示す角速度vは、ゼロ点(静止時出力値)を考慮した上で再度補正される。そして、上記オフセット補正後の角速度vを用いて、角速度データDaが適宜更新されることになる。なお、角速度データDaに適宜格納される角速度データは、上記一次補正をすることなく上記オフセット補正だけを行った角速度データであってもかまわない。また、ゼロ点オフセット値ofsを固定値にして、上記オフセット補正のみを行ってもかまわない。この場合、仮にゼロ点に誤差が含まれる場合、静止させるだけで自動的に誤差が補正されることはないが、以降の処理によって少なくとも誤差の存在を確認することは可能である。
【0107】
角度データDbは、角速度検出ユニット9のジャイロセンサ95および96によって検出された角速度を累積して得られた角度のデータであり、使用される入力装置6毎に対応させて格納される。ここで、角度データDbは、入力装置6(ジャイロセンサ95および96)の姿勢(角度)を示すデータであり、入力装置6から送信データとして送信されてくる一連の操作情報に含まれる角速度データを用いて、予め算出される。上述した補正後の角速度vを用いる場合、角速度vに基づいて入力装置6の姿勢(角度)を算出することも可能である。角速度vから入力装置6の姿勢を算出する方法はどのような方法であってもよいが、例えば、初期姿勢に(単位時間あたりの)角速度vを逐次加算する方法がある。すなわち、ジャイロセンサ95および96から逐次出力されて補正された角速度vを積分し、初期状態からの姿勢の変化量(角度の変化量)を積分結果から算出することによって、現在の姿勢を算出することができる。なお、角度データDbには、X軸周りの角速度v1を用いて算出されたX軸周りの角度r1を示すX軸周り角度データDb1、Y軸周りの角速度v2を用いて算出されたY軸周りの角度r2を示すY軸周り角度データDb2、Z軸周りの角速度v3を用いて算出されたZ軸周りの角度r3を示すZ軸周り角度データDb3が含まれる。
【0108】
過去角度データDcは、角度の変化量を算出するために用いられ、過去に算出された姿勢(角度)を示すデータであり、使用される入力装置6毎に対応させて格納される。過去角度データDcには、過去のX軸周りの角度r1oldを示すX軸周り角度データDc1、過去のY軸周りの角度r2oldを示すY軸周り角度データDc2、過去のZ軸周りの角度r3oldを示すZ軸周り角度データDc3が含まれる。
【0109】
安定フラグデータDdは、ジャイロセンサ95および96が一旦安定状態となって静止時出力が確定したか否かを示す安定フラグSfrgを示すデータであり、使用される入力装置6毎に対応させて格納される。安定カウンタデータDeは、ジャイロセンサ95および96が安定状態であるか否かを判定するための安定カウンタCを示すデータであり、使用される入力装置6毎に対応させて格納される。安定確認時間データDfは、ジャイロセンサ95および96の安定状態を確認している時間を示すデータであり、使用される入力装置6毎に対応させて格納される。
【0110】
回転速度データDgは、入力装置安定情報画面Idにおいて入力装置オブジェクトDobj(図9参照)を回転させる回転速度Vを示すデータであり、使用される入力装置6毎に対応させて格納される。
【0111】
再確認フラグデータDhは、プレイヤの操作に応じて、ジャイロセンサ95および96が安定状態となって静止時出力が再確認されたか否かを示す再確認フラグRfrgを示すデータであり、使用される入力装置6毎に対応させて格納される。
【0112】
画像データDiは、オブジェクト画像データDi1、情報画像データDi2、ボタン画像データDi3、および背景画像データDi4等を含んでいる。オブジェクト画像データDi1は、入力装置オブジェクトDobjを入力装置安定情報画面Idに配置して画像を生成するためのデータである。情報画像データDi2は、要求情報画面Iiに表示される情報等、プレイヤに報知する情報を示す文字画像を生成するためのデータである。ボタン画像データDi3は、ジャイロセンサ安定確認画面において、プレイヤの指示を受け付ける操作ボタン画像を生成するためのデータである。そして、背景画像データDi4は、ジャイロセンサ安定確認画面に背景を配置して画像を生成するためのデータである。
【0113】
次に、図11〜図17を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、図11〜図13は、ゲーム装置本体5において実行されるゲーム処理の一例を示すフローチャートである。図14は、図11および図12における安定確認処理の一例を示すサブルーチンである。図15は、図11および図12における安定確認画面表示処理の一例を示すサブルーチンである。図16は、図13におけるステップ83の安定再確認処理の一例を示すサブルーチンである。図17は、図13におけるステップ84の安定再確認画面表示処理の一例を示すサブルーチンである。ここで、図11〜図17に示すフローチャートにおいては、ゲーム処理のうち、ゲーム装置本体5を起動してからゲームを実行して終了するまでの特定場面において、ジャイロセンサ95および96の静止時出力を得る処理が行われる動作について主に説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図11〜図17では、CPU10が実行する各ステップを「S」と略称する。
【0114】
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU10は、ROM/RTC13に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図11〜図17に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【0115】
図11において、CPU10は、安定確認処理の初期設定を行い(ステップ40)、次のステップに処理を進める。例えば、上記ステップ40における初期設定では、CPU10は、ジャイロセンサ95および96の安定確認処理を行うための各パラメータの初期設定を行う。具体的には、CPU10は、角速度データDa、角度データDb、過去角度データDc、安定確認時間データDf、および回転速度データDgに格納されているデータが示す値をそれぞれ初期値(例えば、0)に設定する。また、CPU10は、安定フラグデータDdに格納されている安定フラグSfrgおよび再確認フラグデータDhに格納されている再確認フラグRfrgを全てオフに設定する。
【0116】
次に、CPU10は、ゲーム初期設定を行い(ステップ41)、次のステップに処理を進める。例えば、上記ステップ41におけるゲーム初期設定では、プレイヤが選択したゲーム種別に応じて、当該ゲームの仮想ゲーム世界の各種設定や以降のゲーム処理で用いる各パラメータの初期化を行う。
【0117】
次に、CPU10は、ゲームを行う人数(プレイ人数)が決定されるのを待つ(ステップ42)。例えば、CPU10は、モニタ2にプレイ人数の選択を促す画面を表示して、プレイ人数を選択した操作入力を待つ。そして、プレイ人数が決定された場合(ステップ42でYes)、CPU10は、処理を次のステップ43に処理を進める。
【0118】
ステップ43において、CPU10は、安定確認処理を行い、次のステップに処理を進める。以下、図14を参照して、安定確認処理の詳細な動作について説明する。
【0119】
図14において、CPU10は、安定確認処理の対象とする入力装置6を選択し(ステップ101)、次のステップに処理を進める。例えば、複数の入力装置6を用いてゲームが行われている場合、CPU10は、当該複数の入力装置6のうち、安定確認処理が終了していない何れか1つの入力装置6を選択する。なお、以下の説明においては、上記ステップ101で選択された入力装置6を対象の入力装置6として記載する。
【0120】
次に、CPU10は、対象の入力装置6からの角速度データおよび当該角速度データを用いて算出された角度データを取得して(ステップ102)、その際、当該対象の入力装置6から角速度データが取得可能か否かを判断する(ステップ103)。そして、CPU10は、対象の入力装置6から角速度データが取得可能である場合、取得した角速度データおよび角度データを用いて当該対象の入力装置6の角速度データDaおよび角度データDbを更新して、次のステップ104に処理を進める。一方、CPU10は、対象の入力装置6から角速度データが取得できない場合、次のステップ110に処理を進める。
【0121】
ステップ104において、CPU10は、角度データDbを参照して、上記ステップ102で取得した角度データが示す角度を用いて軸毎の角度変化量をそれぞれ算出し、次のステップに処理を進める。
【0122】
上記ステップ104において、例えば、CPU10は、対象の入力装置6のX軸周り角度データDb1が示す現時点のX軸周りの角度r1と、対象の入力装置6のX軸周り角度データDc1が示す過去のX軸周りの角度r1oldとを用いて、X軸周りの角度変化量rc1を
rc1=|r1−r1old|
で算出する。また、CPU10は、対象の入力装置6のY軸周り角度データDb2が示す現時点のY軸周りの角度r2と、対象の入力装置6のY軸周り角度データDc2が示す過去のY軸周りの角度r2oldとを用いて、Y軸周りの角度変化量rc2を
rc2=|r2−r2old|
で算出する。さらに、CPU10は、対象の入力装置6のZ軸周り角度データDb3が示す現時点のZ軸周りの角度r3と、対象の入力装置6のZ軸周り角度データDc3が示す過去のZ軸周りの角度r3oldとを用いて、Z軸周りの角度変化量rc3を
rc3=|r3−r3old|
で算出する。
【0123】
次に、CPU10は、軸毎の角度変化量rc1、rc2、およびrc3が全て所定値以内であるか否かを判断する(ステップ105)。そして、CPU10は、軸毎の角度変化量rc1、rc2、およびrc3が全て所定値以内である場合、次のステップ106に処理を進める。一方、CPU10は、軸毎の角度変化量rc1、rc2、およびrc3の少なくとも1つが所定値より大きい場合、次のステップ112に処理を進める。
【0124】
ステップ106において、CPU10は、対象の入力装置6の安定カウンタデータDeに格納されている安定カウンタCに1を加算する。そして、CPU10は、1を加算した安定カウンタCを用いて対象の入力装置6の安定カウンタデータDeを更新し、次のステップ107に処理を進める。
【0125】
一方、ステップ112において、CPU10は、上記ステップ104で用いた角度r1を角度r1oldに設定し、角度r2を角度r2oldに設定し、角度r3を角度r3oldに設定する。そして、CPU10は、新たに設定された角度r1old、r2old、およびr3oldをそれぞれ用いて、対象の入力装置6の過去角度データDcを更新し、次のステップに処理を進める。
【0126】
次に、CPU10は、対象の入力装置6の安定カウンタデータDeに格納されている安定カウンタCを0に設定して、当該設定後の安定カウンタCを用いて対象の入力装置6の安定カウンタデータDeを更新し(ステップ113)、次のステップ107に処理を進める。
【0127】
ステップ107において、CPU10は、対象の入力装置6の安定カウンタデータDeを参照して、対象の入力装置6の安定カウンタCが安定判定閾値Ct以上であるか否かを判断する。そして、CPU10は、安定カウンタCが安定判定閾値Ct以上である場合、次のステップ108に処理を進める。一方、CPU10は、安定カウンタCが安定判定回数閾値Ct未満である場合、次のステップ109に処理を進める。
【0128】
ステップ108において、CPU10は、対象の入力装置6の安定フラグデータDdが示す安定フラグSfrgをオンに設定し、次のステップ109に処理を進める。このように、安定フラグSfrgは、ある瞬間の角度だけを用いるのではなく、所定の期間中に連続して得られた角度が安定していることによってオンされる。したがって、入力装置6に生じている微小な振動程度の角度の変動は許容されて安定フラグSfrgがオンとなるが、静止時出力自体が一定方向へ変動するドリフト現象は許容されずに当該変動後の静止時出力の安定が確認された後に安定フラグSfrgがオンに設定される。
【0129】
なお、上述した処理では、複数軸周りそれぞれの角度の変化量が連続して所定の範囲内となる期間が所定期間以上であることによって、入力装置6の姿勢が安定しているか否かを判定している。つまり、上述した処理では、所定の期間中に得られた角度(姿勢)の安定を確認することによって、安定フラグSfrgをオンに設定しているが、他の方法によって入力装置6の安定を確認して安定フラグSfrgをオンに設定してもかまわない。例えば、複数軸周りそれぞれの角速度の変化量が連続して所定の範囲内となる期間が所定期間以上である、すなわち、所定の期間中に得られた角速度の安定を確認することによって、安定フラグSfrgをオンに設定してもよい。この場合、上記ステップ104において、対象の入力装置6の角速度データDaが示す現時点の各軸周りの角速度v1、v2、およびv3と、対象の入力装置6における過去の各軸周りの角速度とを用いて、各軸周りの角速度変化量を求めることによって、同様の安定確認が可能となる。この場合も、入力装置6に生じている微小な振動程度の角速度の変動は許容されて安定フラグSfrgがオンとなるが、静止時出力自体が一定方向へ変動するドリフト現象は許容されずに当該変動後の静止時出力の安定が確認された後に安定フラグSfrgがオンに設定される。
【0130】
一方、上記ステップ103において対象の入力装置6から角速度データが取得できないと判定された場合、CPU10は、対象の入力装置6の安定フラグデータDdが示す安定フラグSfrgをオフに設定し(ステップ110)、次のステップに処理を進める。ここで、入力装置6から角速度データが取得できない状態は、例えば、角速度検出ユニット9がコントローラ7から外れた状態や、入力装置6から一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ、X、Y、およびZ軸周り角速度データ)が得られない状態であることが考えられる。このような場合、再度ジャイロセンサ95および96を安定させて静止時出力を設定することが必要となるため、安定フラグSfrgをオフすることによって対象の入力装置6における静止時出力の設定が未完であることを示している。
【0131】
次に、CPU10は、対象の入力装置6の安定カウンタデータDeに格納されている安定カウンタCを0に設定して、当該設定後の安定カウンタCを用いて対象の入力装置6の安定カウンタデータDeを更新し(ステップ111)、次のステップ109に処理を進める。
【0132】
ステップ109において、CPU10は、ゲームに使用される全ての入力装置6に対する安定確認処理が終了したか否かを判断する。そして、CPU10は、ゲームに使用される全ての入力装置6に対する安定確認処理が終了した場合、当該サブルーチンによる処理を終了する。一方、CPU10は、ゲームに使用される何れかの入力装置6に対する安定確認処理が終了していない場合、上記ステップ101に戻って処理を繰り返す。
【0133】
図11に戻り、上記ステップ43の安定確認処理の後、CPU10は、ゲームに使用される全ての入力装置6の安定フラグデータDdを参照して、安定フラグSfrgがオフに設定されている入力装置6があるか否かを判断する(ステップ44)。そして、CPU10は、安定フラグSfrgがオフに設定されている入力装置6がある場合、次のステップ45に処理を進める。一方、CPU10は、安定フラグSfrgがオフに設定されている入力装置6がない場合、次のステップ60(図12)に処理を進める。
【0134】
ステップ45において、CPU10は、ゲームに使用される入力装置6のうち、安定フラグSfrgがオフに設定されている入力装置6の安定確認時間をそれぞれ初期化して、次のステップに処理を進める。例えば、CPU10は、安定フラグSfrgがオフに設定されている入力装置6の安定確認時間データDfが示す安定確認時間を、全て0に初期化して安定確認時間データDfを更新する。
【0135】
次に、CPU10は、安定フラグSfrgがオフに設定されている入力装置6の安定確認時間データDfを参照して、安定確認時間が所定時間に到達したか否かを判断する(ステップ46)。ここで、上記ステップ46で用いる所定時間は、ジャイロセンサ95および96の安定を待つための最長時間であり、プレイヤがジャイロセンサ95および96の安定を待つために許容できる時間に設定すればよい。そして、CPU10は、安定確認時間が所定時間に到達していない場合、次のステップ47に処理を進める。一方、CPU10は、安定確認時間が所定時間に到達した場合、次のステップ50に処理を進める。
【0136】
ステップ47において、CPU10は、安定確認処理を行い、次のステップに処理を進める。なお、上記ステップ47で行う安定確認処理は、上述したステップ43における安定確認処理と同様であるため、詳細な説明を省略する。
【0137】
次に、CPU10は、安定確認画面をモニタ2に表示して(ステップ48)、次のステップに処理を進める。以下、図15を参照して、安定確認画面表示処理の詳細な動作について説明する。
【0138】
図15において、CPU10は、安定確認画面表示処理の対象とする入力装置6を選択し(ステップ121)、次のステップに処理を進める。例えば、複数の入力装置6を用いてゲームが行われている場合、CPU10は、当該複数の入力装置6のうち、安定確認画面表示処理が終了していない何れか1つの入力装置6を選択する。なお、以下の説明においては、上記ステップ121で選択された入力装置6を表示対象の入力装置6として記載する。
【0139】
次に、CPU10は、表示対象の入力装置6に対応する安定フラグデータDdを参照して、安定フラグSfrgがオフに設定されているか否かを判断する(ステップ122)。そして、CPU10は、安定フラグSfrgがオフに設定されている場合、次のステップ123に処理を進める。一方、CPU10は、安定フラグSfrgがオンに設定されている場合、次のステップ126に処理を進める。
【0140】
ステップ123において、CPU10は、表示対象の入力装置6に対応する角速度データDaを参照して、最新の角速度データが示す角速度を用いて回転速度Vを算出し、次のステップに処理を進める。
【0141】
上記ステップ123において、例えば、CPU10は、回転速度Vを
V=(|v1|+|v2|+|v3|)×M …(1)
によって算出する。ここで、v1は、X軸周り角速度データDa1に格納されている最新のデータが示す表示対象の入力装置6のジャイロセンサ95および96が検出したX軸周りの角速度v1である。v2は、Y軸周り角速度データDa2に格納されている最新データが示す表示対象の入力装置6のジャイロセンサ95および96が検出したY軸周りの角速度v2である。v3は、Z軸周り角速度データDa3に格納されている最新のデータが示す表示対象の入力装置6のジャイロセンサ95および96が検出したZ軸周りの角速度v3である。そして、Mは、わずかな角速度であっても回転速度Vを視認できる程度に大きくするための1以上の定数であり、例えばM=10/6に設定される。なお、CPU10は、(|v1|+|v2|+|v3|)の値が予め定められた閾値(例えば、1080°/秒、すなわち3回転/秒)より大きい場合、当該値を当該閾値と等しい値にする。つまり、上記式(1)によって算出される回転速度Vは、上記閾値に定数Mを乗じた値以下(1800°/秒以下、すなわち5回転/秒以下)で算出される。
【0142】
そして、CPU10は、表示対象の入力装置6に対応する回転速度データDgに現時点で格納されている回転速度Vを前回回転速度Vlastとして、上記式(1)を用いて算出された回転速度Vを前回回転速度Vlastに所定の割合で近づけることによって、当該回転速度Vを調整する。例えば、上記式(1)を用いて算出された回転速度Vと前回回転速度Vlastとを用いて、調整後の回転速度Vを
V←0.5V+0.5Vlast
によって算出して、回転速度Vを決定する。そして、CPU10は、決定された回転速度Vを用いて表示対象の入力装置6に対応する回転速度データDgを更新する。なお、上記式(1)を用いて算出された回転速度Vを前回回転速度Vlastに近づける割合は、他の割合であってもかまわない。そして、算出された回転速度Vは、次回の処理における前回回転速度Vlastとなる。
【0143】
次に、CPU10は、表示対象の入力装置6に対応する入力装置オブジェクトDobjを、回転速度Vに応じて回転させて確認中であることを示す入力装置安定情報画面Idを、モニタ2に表示して(ステップ124)、次のステップ125に処理を進める。
【0144】
例えば、上記ステップ124において、CPU10は、図8を用いて説明したようなジャイロセンサ安定確認画面をモニタ2に表示する。具体的には、上記ステップ124で表示する入力装置安定情報画面Id(図9に示す入力装置安定情報画面Ida)は、安定フラグSfrgがオフに設定されている入力装置6に対するものであるため、入力装置オブジェクトDobjが当該オブジェクトの略中央位置を軸として回転している状態で表示される(図9に示す入力装置オブジェクトDobja)。ここで、入力装置オブジェクトDobjが回転する速度は、回転速度データDgに格納されている回転速度Vによって決定される。例えば、安定フラグSfrgがオフに設定されている入力装置6aに対応する入力装置安定情報画面Idaを表示する場合、入力装置6aの回転速度データDgに格納されている回転速度Vの数値が示す角度だけ入力装置オブジェクトDobjaを回転させて表示する。
【0145】
一方、上記ステップ122において安定フラグSfrgがオンに設定されていると判断された場合、CPU10は、表示対象の入力装置6に対応する入力装置オブジェクトDobjを、縦方向に静止させて確認済であることを示す入力装置安定情報画面Idを、モニタ2に表示して(ステップ126)、次のステップ125に処理を進める。
【0146】
例えば、上記ステップ126において、CPU10は、図8を用いて説明したようなジャイロセンサ安定確認画面をモニタ2に表示する。具体的には、上記ステップ126で表示する入力装置安定情報画面Id(図9に示す入力装置安定情報画面Ida)は、安定フラグSfrgがオンに設定されている入力装置6に対するものであるため、入力装置オブジェクトDobjが縦方向に静止した状態で表示される(図9に示す入力装置オブジェクトDobjb)。なお、入力装置安定情報画面Idを表示中において、安定フラグSfrgがオンに設定されている入力装置6のジャイロセンサ95および96から出力される角速度が変動することもあるが、当該角速度が変動したとしても入力装置オブジェクトDobjは縦方向に静止した状態で表示される。つまり、安定フラグSfrgがオンに設定された後であれば、プレイヤが入力装置6を動かしたとしても、当該入力装置6に対応する入力装置オブジェクトDobjが回転することはない。
【0147】
ステップ125において、CPU10は、ゲームに使用される全ての入力装置6に対する安定確認画面表示処理が終了したか否かを判断する。そして、CPU10は、ゲームに使用される全ての入力装置6に対する安定確認画面表示処理が終了した場合、当該サブルーチンによる処理を終了する。一方、CPU10は、ゲームに使用される何れかの入力装置6に対する安定確認画面表示処理が終了していない場合、上記ステップ121に戻って処理を繰り返す。
【0148】
図11に戻り、上記ステップ48の安定確認画面表示処理の後、CPU10は、ゲームに使用される全ての入力装置6の安定フラグデータDdを参照して、安定フラグSfrgがオフに設定されている入力装置6があるか否かを判断する(ステップ49)。そして、CPU10は、安定フラグSfrgがオフに設定されている入力装置6がある場合、上記ステップ46に戻って処理を繰り返す。一方、CPU10は、安定フラグSfrgがオフに設定されている入力装置6がない場合、次のステップ60(図12)に処理を進める。
【0149】
一方、上記ステップ46において、安定確認時間が所定時間に到達した場合、CPU10は、安定確認未完了画面をモニタ2に表示して(ステップ50)、次のステップに処理を進める。ここで、上記ステップ50は、ゲームに使用される入力装置6の何れかの安定が確認できない状態で安定確認時間がタイムアップした場合に実行される処理である。そこで、CPU10は、その経過を示す画面として、図18に示すような安定確認未完了画面をモニタ2に表示する。
【0150】
図18において、安定確認未完了画面には、角速度検出ユニット9(ジャイロセンサ95および96)の安定が確認できなかったことを示す情報画面Iuと、再度安定確認処理を行うか否かの選択肢を示す操作ボタンBaおよびBbとが表示される。例えば、情報画面Iuとして、「角速度検出ユニットの動作チェックが完了できませんでした。正常に動作しない可能性がありますが、終了してよろしいですか?」とプレイヤに報知する文字情報が表示される。操作ボタンBaは、再度安定確認処理を行うことを選択する場合の選択肢であり、例えば「もう一度試す」と表示された選択肢を安定確認未完了画面に表示する。操作ボタンBbは、再度安定確認処理を行わないことを選択する場合の選択肢であり、例えば「おわる」と表示された選択肢を安定確認未完了画面に表示する。
【0151】
図11に戻り、CPU10は、安定確認未完了画面をモニタ2に表示した状態でプレイヤが上記選択肢を選択するのを待ち、当該選択された選択肢に応じてもう一度確認するか否かを判断する(ステップ51)。そして、CPU10は、再度安定確認処理を行う場合、上記ステップ45に戻って、処理を繰り返す。一方、CPU10は、再度安定確認処理を行わない場合、ゲームに使用される全ての入力装置6の安定フラグデータDdをオンに設定して(ステップ52)、次のステップ60(図12)に処理を進める。
【0152】
図12に進み、CPU10は、現時点で選択されているゲームを進行させる処理を行い(ステップ60)、次のステップに処理を進める。例えば、CPU10は、入力装置6から得られる一連の操作情報や算出された入力装置6の角度(入力装置6の姿勢)を用いて、仮想ゲーム世界に登場する各種オブジェクトを動作させることによって、ゲームを進行させる。一例として、上記ステップ60において、算出された入力装置6の姿勢に基づいて、仮想ゲーム世界に登場する各種オブジェクトの姿勢を変化させることも可能である。
【0153】
次に、CPU10は、安定確認処理を行い(ステップ61)、次のステップに処理を進める。なお、上記ステップ61で行う安定確認処理は、上述したステップ43における安定確認処理と同様であるため、詳細な説明を省略する。
【0154】
次に、CPU10は、ゲームに使用される全ての入力装置6から角速度データの取得が可能であるか否かを判断する(ステップ62)。そして、CPU10は、全ての入力装置6から角速度データが取得可能である場合、次のステップ66に処理を進める。一方、CPU10は、何れかの入力装置6から角速度データが取得できない場合、次のステップ63に処理を進める。
【0155】
ステップ63において、CPU10は、角速度データが取得できない入力装置6からの操作情報を用いて、上記ステップ60のゲーム処理を行っているか否かを判断する。例えば、全ての入力装置6を同時に用いてゲームが進行する処理であれば、上記ステップ63で肯定の判定が行われる。一方、複数の入力装置6を交互に用いてゲームが進行する処理であれば、角速度データが取得できない入力装置6からの操作情報を用いる期間中である場合に上記ステップ63で肯定の判定が行われ、角速度データの取得が可能な入力装置6からの操作情報を用いる期間中である場合に上記ステップ63で否定の判定が行われる。そして、CPU10は、上記ステップ63が肯定の判定の場合、次のステップ64に処理を進める。一方、CPU10は、上記ステップ63が否定の判定の場合、次のステップ66に処理を進める。
【0156】
ステップ64において、CPU10は入力装置6に生じた異常の内容(入力装置6との通信が途絶えた、角速度検出ユニット9がコントローラ7から外れている等)を示す画面をモニタ2に表示して、次のステップに処理を進める。ここで、上記ステップ64は、ゲーム処理中において、入力装置6から角速度データが取得できなくなった場合で、かつ、角速度データが取得できなくなった入力装置6からの操作情報を用いてゲームが進行する状態の場合である。本実施形態では、角速度データが取得できなくなる原因として、ゲーム処理中に、入力装置6から一連の操作情報が得られない状態となったり、角速度検出ユニット9がコントローラ7から外れたりしたことが考えられる。そこで、CPU10は、入力装置6から一連の操作情報が得られない状態の場合、図19に示すような画面をモニタ2に表示する。また、CPU10は、入力装置6から一連の操作情報のうち、角速度データだけが得られない状態の場合、図20に示すような画面をモニタ2に表示する。
【0157】
図19において、入力装置6に生じた異常の内容を示す画面には、入力装置6とゲーム装置本体5との間の通信が切断されたことを示す情報画面In1が表示される。例えば、情報画面In1として、角速度データが取得できなくなった入力装置6を操作するプレイヤの名称を用いて、「Aさん、コントローラの通信が切れました。」とプレイヤに異常の内容を報知する文字情報が表示される。
【0158】
図20において、入力装置6に生じた異常の内容を示す画面には、角速度検出ユニット9がコントローラ7から外れたことを示す情報画面In2が表示される。例えば、情報画面In2として、角速度データが取得できなくなった入力装置6を操作するプレイヤの名称を用いて、「Aさん、角速度検出ユニットが抜けています。装着しなおしてください。」とプレイヤに異常の内容を報知する文字情報が表示される。
【0159】
図12に戻り、CPU10は、上記情報画面In1またはIn2をモニタ2に表示した状態で角速度データが取得できなくなった原因が解消されるのを待つ(ステップ65)。例えば、角速度データが取得できなくなった入力装置6から角速度データの取得が可能となった場合、CPU10は、角速度データが取得できなくなった原因が解消されたと判断して(ステップ65でYes)、次のステップ67に処理を進める。
【0160】
一方、ステップ66において、CPU10は、ゲームに使用される全ての入力装置6の安定フラグデータDdを参照して、安定フラグSfrgがオフに設定されている入力装置6があるか否かを判断する。そして、CPU10は、安定フラグSfrgがオフに設定されている入力装置6がある場合、次のステップ67に処理を進める。一方、CPU10は、安定フラグSfrgがオフに設定されている入力装置6がない場合、次のステップ80(図13)に処理を進める。ゲーム開始後に安定フラグSfrgがオフに設定されている入力装置6がある場合は、例えば、ゲーム開始後に入力装置6からの通信が途絶えたり、角速度検出ユニット9がコントローラ7から外れたりするなどして、入力装置6から角速度データが取得できない場合に安定フラグSfrgがオフされた場合が考えられる。
【0161】
ステップ67において、CPU10は、安定フラグSfrgがオフに設定されている入力装置6からの操作情報を用いて、上記ステップ60のゲーム処理を行っているか否かを判断する。例えば、全ての入力装置6を同時に用いてゲームが進行する処理であれば、上記ステップ67で肯定の判定が行われる。一方、複数の入力装置6を交互に用いてゲームが進行する処理であれば、安定フラグSfrgがオフに設定されている入力装置6からの操作情報を用いる期間中である場合に上記ステップ67で肯定の判定が行われ、安定フラグSfrgがオンに設定されている入力装置6からの操作情報を用いる期間中である場合に上記ステップ67で否定の判定が行われる。そして、CPU10は、上記ステップ67が肯定の判定の場合、次のステップ68に処理を進める。一方、CPU10は、上記ステップ67が否定の判定の場合、次のステップ80(図13)に処理を進める。
【0162】
ステップ68において、CPU10は、安定確認処理を行い、次のステップに処理を進める。なお、上記ステップ68で行う安定確認処理は、上述したステップ43における安定確認処理と同様であるため、詳細な説明を省略する。
【0163】
次に、CPU10は、安定確認画面をモニタ2に表示して(ステップ69)、次のステップに処理を進める。なお、上記ステップ69で行う安定確認画面表示処理は、上述したステップ48における安定確認画面表示処理と同様であるため、詳細な説明を省略する。ここで、上記ステップ69における安定確認画面表示処理は、ゲーム処理中において、安定フラグSfrgがオン状態からオフ状態に変化した場合で、かつ、安定フラグSfrgがオン状態からオフ状態に変化した入力装置6からの操作情報を用いてゲームが進行する状態の場合において行われる。このように、ゲーム中において安定フラグSfrgがオフとなり当該オフとなった入力装置6を現時点で当該ゲームに用いる状況にある場合、安定確認画面がモニタ2に表示される。
【0164】
次に、CPU10は、ゲームに使用される全ての入力装置6の安定フラグデータDdを参照して、安定フラグSfrgがオフに設定されている入力装置6があるか否かを判断する(ステップ70)。そして、CPU10は、安定フラグSfrgがオフに設定されている入力装置6がある場合、上記ステップ68に戻って処理を繰り返す。一方、CPU10は、安定フラグSfrgがオフに設定されている入力装置6がない場合、次のステップ80(図13)に処理を進める。
【0165】
図13に進み、CPU10は、プレイヤがジャイロセンサ95および96の安定を再確認する操作を行ったか否かを判断する(ステップ80)。例えば、プレイヤがゲーム途中においてジャイロセンサ95および96の安定を確認するための操作部72(例えば、プラスボタン72g)を押下した場合、CPU10は、ジャイロセンサ95および96の安定を再確認する操作が行われたと判断する。そして、CPU10は、安定を再確認する操作が行われた場合、次のステップ81に処理を進める。一方、CPU10は、安定を再確認する操作が行われていない場合、次のステップ86に処理を進める。この場合、当該再確認の操作自体は、安定の確認のための指示と明示されていなくともよく、単なる一時停止を示す操作であってもよい。
【0166】
ステップ81において、CPU10は、再確認フラグデータDhに格納されている再確認フラグRfrgを全てオフに設定する。そして、CPU10は、安定カウンタデータDeに格納されている安定カウンタCを全て0に設定して(ステップ82)、次のステップに処理を進める。
【0167】
次に、CPU10は、安定再確認処理を行い(ステップ83)、次のステップに処理を進める。以下、図16を参照して、安定再確認処理の詳細な動作について説明する。
【0168】
図16において、CPU10は、安定再確認処理の対象とする入力装置6を選択し(ステップ131)、次のステップに処理を進める。例えば、複数の入力装置6を用いてゲームが行われている場合、CPU10は、当該複数の入力装置6のうち、安定再確認処理が終了していない何れか1つの入力装置6を選択する。なお、以下の説明においては、上記ステップ131で選択された入力装置6を再確認対象の入力装置6として記載する。
【0169】
次に、CPU10は、再確認対象の入力装置6からの角速度データおよび当該角速度データを用いて算出された角度データを取得して(ステップ132)、その際、当該再確認対象の入力装置6から角速度データが取得可能か否かを判断する(ステップ133)。そして、CPU10は、再確認対象の入力装置6から角速度データが取得可能である場合、取得した角速度データおよび角度データを用いて当該再確認対象の入力装置6の角速度データDaおよび角度データDbを更新して、次のステップ134に処理を進める。一方、CPU10は、再確認対象の入力装置6から角速度データが取得できない場合、次のステップ140に処理を進める。
【0170】
ステップ134において、CPU10は、角度データDbを参照して、上記ステップ132で取得した角度データが示す角度を用いて軸毎の角度変化量をそれぞれ算出し、次のステップに処理を進める。なお、上記ステップ134における角度変化量の算出方法については、上述したステップ104で説明した算出方法と同様であるため、詳細な説明を省略する。
【0171】
次に、CPU10は、軸毎の角度変化量rc1、rc2、およびrc3が全て所定値以内であるか否かを判断する(ステップ135)。そして、CPU10は、軸毎の角度変化量rc1、rc2、およびrc3が全て所定値以内である場合、次のステップ136に処理を進める。一方、CPU10は、軸毎の角度変化量rc1、rc2、およびrc3の少なくとも1つが所定値より大きい場合、次のステップ142に処理を進める。
【0172】
ステップ136において、CPU10は、再確認対象の入力装置6の安定カウンタデータDeに格納されている安定カウンタCに1を加算する。そして、CPU10は、1を加算した安定カウンタCを用いて再確認対象の入力装置6の安定カウンタデータDeを更新し、次のステップ137に処理を進める。
【0173】
一方、ステップ142において、CPU10は、上記ステップ134で用いた角度r1を角度r1oldに設定し、角度r2を角度r2oldに設定し、角度r3を角度r3oldに設定する。そして、CPU10は、新たに設定された角度r1old、r2old、およびr3oldをそれぞれ用いて、再確認対象の入力装置6の過去角度データDcを更新し、次のステップに処理を進める。
【0174】
次に、CPU10は、再確認対象の入力装置6の安定カウンタデータDeに格納されている安定カウンタCを0に設定して、当該設定後の安定カウンタCを用いて再確認対象の入力装置6の安定カウンタデータDeを更新し(ステップ143)、次のステップ137に処理を進める。
【0175】
ステップ137において、CPU10は、再確認対象の入力装置6の安定カウンタデータDeを参照して、再確認対象の入力装置6の安定カウンタCが安定判定閾値Ct以上であるか否かを判断する。そして、CPU10は、安定カウンタCが安定判定閾値Ct以上である場合、次のステップ138に処理を進める。一方、CPU10は、安定カウンタCが安定判定回数閾値Ct未満である場合、次のステップ139に処理を進める。
【0176】
ステップ138において、CPU10は、再確認対象の入力装置6の安定フラグデータDdが示す安定フラグSfrgおよび再確認フラグデータDhに格納されている再確認フラグRfrgをそれぞれオンに設定し、次のステップ139に処理を進める。このように、再確認フラグRfrgは、安定フラグSfrgと同様に、ある瞬間の角度だけを用いるのではなく、所定の期間中に連続して得られた角度が安定していることによってオンされる。
【0177】
なお、上述した処理では、複数軸周りそれぞれの角度の変化量が連続して所定の範囲内となる期間が所定期間以上であることによって、入力装置6の姿勢が安定しているか否かを判定している。つまり、上述した処理では、所定の期間中に得られた角度(姿勢)の安定を確認することによって、再確認フラグRfrgをオンに設定しているが、他の方法によって入力装置6の安定を再確認して再確認フラグRfrgをオンに設定してもかまわない。例えば、複数軸周りそれぞれの角速度の変化量が連続して所定の範囲内となる期間が所定期間以上である、すなわち、所定の期間中に得られた角速度の安定を確認することによって、再確認フラグRfrgをオンに設定してもよい。この場合、上記ステップ134において、再確認対象の入力装置6の角速度データDaが示す現時点の各軸周りの角速度v1、v2、およびv3と、再確認対象の入力装置6における過去の各軸周りの角速度とを用いて、各軸周りの角速度変化量を求めることによって、同様の安定再確認が可能となる。この場合も、入力装置6に生じている微小な振動程度の角速度の変動は許容されて再確認フラグRfrgがオンとなるが、静止時出力自体が一定方向へ変動するドリフト現象は許容されずに当該変動後の静止時出力の安定が再確認された後に再確認フラグRfrgがオンに設定される。
【0178】
一方、上記ステップ133において再確認対象の入力装置6から角速度データが取得できないと判定された場合、CPU10は、再確認対象の入力装置6の安定フラグデータDdが示す安定フラグSfrgおよび再確認フラグデータDhに格納されている再確認フラグRfrgをそれぞれオフに設定し(ステップ140)、次のステップに処理を進める。ここで、入力装置6から角速度データが取得できない状態であると、再度ジャイロセンサ95および96を安定させて静止時出力を設定することが必要となるため、再確認フラグRfrgだけでなく安定フラグSfrgもオフすることによって再確認対象の入力装置6における静止時出力の設定が未完であることを示している。
【0179】
次に、CPU10は、再確認対象の入力装置6の安定カウンタデータDeに格納されている安定カウンタCを0に設定して、当該設定後の安定カウンタCを用いて再確認対象の入力装置6の安定カウンタデータDeを更新し(ステップ141)、次のステップ139に処理を進める。
【0180】
ステップ139において、CPU10は、ゲームに使用される全ての入力装置6に対する安定再確認処理が終了したか否かを判断する。そして、CPU10は、ゲームに使用される全ての入力装置6に対する安定再確認処理が終了した場合、当該サブルーチンによる処理を終了する。一方、CPU10は、ゲームに使用される何れかの入力装置6に対する安定再確認処理が終了していない場合、上記ステップ131に戻って処理を繰り返す。
【0181】
図13に戻り、CPU10は、安定再確認画面をモニタ2に表示して(ステップ84)、次のステップに処理を進める。以下、図17を参照して、安定再確認画面表示処理の詳細な動作について説明する。
【0182】
図17において、CPU10は、安定再確認画面表示処理の対象とする入力装置6を選択し(ステップ151)、次のステップに処理を進める。例えば、複数の入力装置6を用いてゲームが行われている場合、CPU10は、当該複数の入力装置6のうち、安定再確認画面表示処理が終了していない何れか1つの入力装置6を選択する。なお、以下の説明においては、上記ステップ151で選択された入力装置6を再確認表示対象の入力装置6として記載する。
【0183】
次に、CPU10は、再確認表示対象の入力装置6に対応する再確認フラグデータDhを参照して、再確認フラグRfrgがオフに設定されているか否かを判断する(ステップ152)。そして、CPU10は、再確認フラグRfrgがオフに設定されている場合、次のステップ153に処理を進める。一方、CPU10は、再確認フラグRfrgがオンに設定されている場合、次のステップ156に処理を進める。
【0184】
ステップ153において、CPU10は、再確認表示対象の入力装置6に対応する角速度データDaを参照して、最新の角速度データが示す角速度を用いて回転速度Vを算出し、次のステップに処理を進める。なお、上記ステップ153における回転速度Vの算出方法については、上述したステップ123における回転速度Vの算出方法と同様であるため、詳細な説明を省略する。
【0185】
次に、CPU10は、再確認表示対象の入力装置6に対応する入力装置オブジェクトDobjを、回転速度Vに応じて回転させて確認中であることを示すジャイロセンサ安定再確認画面を、モニタ2に表示して(ステップ154)、次のステップ155に処理を進める。
【0186】
例えば、上記ステップ154において、CPU10は、図8を用いて説明したようなジャイロセンサ安定再確認画面をモニタ2に表示する。具体的には、上記ステップ154で表示するジャイロセンサ安定再確認画面は、図9に示す入力装置安定情報画面Idaと同様であり、再確認フラグRfrgがオフに設定されている入力装置6に対して、入力装置オブジェクトDobjが当該オブジェクトの略中央位置を軸として回転している状態で表示される(図9に示す入力装置オブジェクトDobja)。
【0187】
一方、上記ステップ152において再確認フラグRfrgがオンに設定されていると判断された場合、CPU10は、再確認表示対象の入力装置6に対応する入力装置オブジェクトDobjを、縦方向に静止させて確認済であることを示す入力装置安定情報画面Idを、モニタ2に表示して(ステップ156)、次のステップ155に処理を進める。
【0188】
例えば、上記ステップ156において、CPU10は、図8を用いて説明したようなジャイロセンサ安定再確認画面をモニタ2に表示する。具体的には、上記ステップ156で表示するジャイロセンサ安定再確認画面は、図9に示す入力装置安定情報画面Idbと同様であり、再確認フラグRfrgがオンに設定されている入力装置6に対して、入力装置オブジェクトDobjが縦方向に静止した状態で表示される(図9に示す入力装置オブジェクトDobjb)。なお、ジャイロセンサ安定再確認画面を表示中において、再確認フラグRfrgがオンに設定されている入力装置6のジャイロセンサ95および96から出力される角速度が変動することもあるが、当該角速度が変動したとしても入力装置オブジェクトDobjは縦方向に静止した状態で表示される。つまり、再確認フラグRfrgがオンに設定された後であれば、プレイヤが入力装置6を動かしたとしても、当該入力装置6に対応する入力装置オブジェクトDobjが回転することはない。
【0189】
なお、上記ステップ80〜ステップ83の処理から明らかなように、ゲーム処理中にジャイロセンサ95および96の安定を再確認する操作が行われた場合であっても、当該操作に応じて安定フラグSfrgをオンからオフに変更することをしていない。つまり、上記ジャイロセンサ安定再確認画面が表示されるためには、ゲームに使用されている入力装置6の安定フラグSfrgがオンに設定されている場合でもよく、プレイヤの意向に応じたジャイロセンサ95および96の安定再確認となる。また、プレイヤが安定再確認を積極的に指示した場合でなく、単にゲームを一時停止したという場合であっても一時停止中にジャイロセンサ95および96が安定しているかどうかを視認することができ、異常があった場合に発見することができる。したがって、上記ステップ154またはステップ156で表示される安定再確認画面は、補助的な表示でかまわない。
【0190】
例えば、図21に示すように、上記ステップ154またはステップ156で表示される安定再確認画面では、プレイヤに入力装置6を安定させるように促す表示(図8に示す要求情報画面Ii)が表示されない。上記ステップ154またはステップ156で表示される安定再確認画面では、使用される入力装置6毎にジャイロセンサ95および96の安定再確認状態をそれぞれ示す入力装置安定情報画面Idと、プレイヤのその後の操作を受け付ける複数の選択肢を示す操作ボタンBoとが表示される。
【0191】
ステップ155において、CPU10は、ゲームに使用される全ての入力装置6に対する安定再確認画面表示処理が終了したか否かを判断する。そして、CPU10は、ゲームに使用される全ての入力装置6に対する安定再確認画面表示処理が終了した場合、当該サブルーチンによる処理を終了する。一方、CPU10は、ゲームに使用される何れかの入力装置6に対する安定再確認画面表示処理が終了していない場合、上記ステップ151に戻って処理を繰り返す。
【0192】
図13に戻り、上記ステップ84の処理の後、CPU10は、ゲーム処理に復帰するか否かを判断する(ステップ85)。例えば、CPU10は、上記ステップ84で表示される安定再確認画面に表示された操作ボタンBoの何れかが選択された場合、当該操作ボタンBoが示す選択肢に応じて、ゲーム処理に復帰するか否かを判断する。また、プラスボタン72gが再度押された場合にもゲームに復帰する。そして、CPU10は、ゲーム処理に復帰する場合、次のステップ86に処理を進める。一方、CPU10は、ゲーム処理に復帰しない場合、現在の安定確認処理を継続するために上記ステップ83に戻って処理を繰り返す。
【0193】
ステップ86において、CPU10は、ゲームを終了するか否かを判断する。ゲームを終了する条件としては、例えば、上記ステップ60でゲーム処理されているゲームがゲームオーバーとなる条件が満たされたことや、プレイヤが当該ゲームを終了する操作を行ったこと等がある。CPU10は、ゲームを終了しない場合に上記ステップ60(図12)に戻って処理を繰り返し、ゲームを終了する場合に次のステップ87に処理を進める。
【0194】
ステップ87において、CPU10は、上記ステップ86で終了したゲームとは異なるゲームに変更して、当該異なるゲームをプレイするか否かを判断する。そして、CPU10は、異なるゲームに変更してプレイする場合、次のステップ88に処理を進める。一方、CPU10は、プレイするゲームを変更せずにそのまま処理を終了する場合、当該フローチャートによる処理を終了する。例えば、ゲーム装置本体5のメインメモリに読み込まれているゲームプログラムによっては、複数のゲームが可能となっていることがある。具体的には、各種スポーツゲームが可能となったゲームプログラムの場合、スポーツ種目別に異なるゲームが可能となっていることがある。上記ステップ87においては、このようなメインメモリに読み込まれているゲームプログラムによってプレイが可能となっている複数のゲーム間で、異なるゲームに変更して継続プレイするか否かを判断している。
【0195】
ステップ88において、CPU10は、上記ステップ87で変更されたゲームがそれまでプレイされていたゲームより、より高い精度の角速度の入力が必要なゲームであるか否かを判断する。そして、CPU10は、より精度が高い角速度が必要なゲームへの変更である場合、次のステップ89に処理を進める。一方、CPU10は、より精度が高い角速度が不要なゲームへの変更である場合、上記ステップ41(図11)に戻って処理を繰り返す。
【0196】
ステップ89において、CPU10は、安定フラグデータDdに格納されている安定フラグSfrgを全てオフに設定する。そして、CPU10は、安定カウンタデータDeに格納されている安定カウンタCを全て0に設定して(ステップ90)、上記ステップ41(図11)に戻って処理を繰り返す。
【0197】
例えば、入力装置6を静止した状態に維持して進行するようなゲームがある。具体的には、入力装置6の姿勢や方向に応じて、仮想ゲーム世界における狙いが決定されるようなゲーム(たとえばアーチェリー、弓道等のゲーム)においては、入力装置6を静止した状態に保った姿勢を精確に算出することが必要となる。このようなゲームにおいては、ジャイロセンサ95および96の静止時出力に生じている誤差がわずかであっても、ゲーム操作に影響を与えてしまう。例えば、ジャイロセンサ95および96の静止時出力にわずかな誤差が生じている場合、プレイヤが入力装置6を静止させていたとしてもわずかな角速度で入力装置6が動いていると判定するため、ゲーム処理においても当該判定に応じた操作が行われてしまう。
【0198】
このような場合、実行するゲームが要求する角速度入力の精度レベルに応じて、当該静止時出力(ゼロ点オフセット値ofs)を設定することが必要であるため、上記ステップ89において、一旦全ての安定フラグSfrgをオフに設定することによって、ゲームに用いられる入力装置6全てに対して安定確認処理が再度行われるようにしている。ここで、必要な角速度入力の精度レベルは、ゲームごとに予め設定されている。そして、必要な角速度入力の精度が相対的に高いゲームにおいては、上述の角速度vの一次補正とゼロ点オフセットの補正とにおいて、上限s1から下限s2までの安定範囲を狭くする、連続個数ctの上限を大きくする、定数Cを小さくする、等の設定をすることによって、静止していないときの値が反映されにくいような補正が行われる。このように、より精度が高い角速度の入力が必要なゲームを実行する場合、上述したゼロ点オフセット値ofsをより精確に設定するためにゼロ点オフセット値ofsがジャイロセンサ95および96から出力された角速度データが示す角速度vに収束する割合を相対的に小さく設定される。したがって、入力装置6を静止状態に維持したとしても、上記ステップ104で算出される角度変化量の値が所定値以内となるまでの時間が長くなるため、結果的に安定確認処理において安定フラグSfrgがオフからオンに変更されるまでの時間も長くなることになる。
【0199】
このように、上述したゲーム処理によれば、ジャイロセンサ95および96を静止させることが必要な状況において、ジャイロセンサ95および96(入力装置6)が安定していない場合、ジャイロセンサ95および96から得られる角速度データに応じて入力装置オブジェクトDobjが回転して表示される。したがって、プレイヤは、回転して表示されている入力装置オブジェクトDobjやその回転速度を視認することによって、ジャイロセンサ95および96が動いていたり、出力に誤差が含まれていたりすることを認識することができる。また、回転速度Vは、X、Y、およびZ軸周りの角速度の大きさを全て加算した値に基づいて決定されるため、わずかな角速度を生じているためにジャイロセンサ95および96(入力装置6)が安定していない場合であっても、その角速度が強調されて画面に現れるため、プレイヤにとってジャイロセンサ95および96(入力装置6)が安定していないことがよりわかりやすい表現となる。
【0200】
ここで、ジャイロセンサ95および96のゼロ点オフセット値(静止時出力値)がデバイス固有値に固定されている場合、当該デバイス固有値と現実のジャイロセンサ95および96のゼロ点オフセット値(静止時出力値)とに差があるとジャイロセンサ95および96(入力装置6)が常に不安定な状態となって、入力装置オブジェクトDobjが常に回転して表示されることになり得る。しかしながら、上述した実施形態では、ジャイロセンサ95および96から出力された角速度データが示す角速度を、ゼロ点オフセット値(静止時出力値)に基づいてオフセット補正した角速度を取得して処理を行っており、当該ゼロ点オフセット値もジャイロセンサ95および96から出力された角速度データが示す角速度に収束するように補正されている。したがって、ゼロ点オフセット値は、電源投入時において上記デバイス固定値に初期設定されていても、ジャイロセンサ95および96を静止状態に保つことによって、徐々に現実のゼロ点オフセット値に収束していく。そして、ゼロ点オフセット値の収束に伴ってオフセット補正した角速度も当該ゼロ点オフセット値に収束していくため、結果的に回転速度Vや各軸周りの角度変化量が0に近づいていくことになる。そのため、安定フラグSfrgがオンになっている場合は、既に静止時の出力がゼロ点となる補正が行われたということであり、誤差が補正された状態でゲームを行うことができる。
【0201】
なお、上述の実施形態における安定確認処理は、図11〜図17に示したフローチャートから明らかなように、ゲーム処理前やゲーム処理中において処理周期毎に繰り返されている。このような処理によって、安定確認画面を表示する前に既に安定フラグSfrgがオンになっている場合もあり、ゲームをより早く開始することができる。しかしながら、上述の実施形態における安定確認処理は、特定の段階だけでなく、上記フローとは独立して所定の周期で常に行うようにしてもよい。
【0202】
なお、上述した実施形態では、一次補正後にオフセット補正された角速度またはオフセット補正のみされた角速度を用いて算出された角度に基づいて安定確認処理や安定再確認処理を行う例を用いたが、これらの補正処理を行う前の角速度データが示す角速度または当該角速度から算出された角度を用いて安定確認処理や安定再確認処理を行ってもかまわない。この場合、ジャイロセンサ95および96から出力された角速度データが示す角速度を直接用いて安定確認処理や安定再確認処理をする、または当該角速度から算出された角度を直接用いて安定確認処理や安定再確認処理をすることになるが、ジャイロセンサ95および96が静止状態に保たれることによって当該角速度や当該角度がある値に収束するために、やがて安定フラグSfrgや再確認フラグSfrgがオンに設定される条件を満たすことになる。そして、安定フラグSfrgや再確認フラグSfrgがオンに設定されることに応じて、入力装置オブジェクトDobjも縦方向に静止した状態で表示されることになるため、同様の安定確認処理や安定再確認処理が可能となる。そして、上述した補正処理をゲーム処理直前に行えば(すなわち、上記ステップ60において補正処理を行い、補正処理を行った後の角速度を用いてゲーム処理を行う)、同様のゲーム処理が可能となる。また、上記安定確認処理や安定再確認処理において上述した補正処理を行って、回転速度Vや各軸周りの角度変化量を算出してもいいことは言うまでもない。
【0203】
また、上述した実施形態では、補正後の角速度vを用いて角度rが算出され、当該算出された角度rを示す角度データを取得する例を用いたが、上述したゲーム処理の途中で角度rを算出するステップを追加してもかまわない。例えば、取得した角速度vを逐次加算(積分)することによって、入力装置6の初期姿勢からの姿勢の変化量(角度の変化量)を積分結果から算出して、現在の入力装置6の姿勢(角度)を算出するステップを、上記ゲーム処理に追加する。これによって、角度rが算出されていなくても、同様の処理が可能となる。
【0204】
また、上述した実施形態では、入力装置オブジェクトDobjを回転させる速度(回転速度V)を、X、Y、およびZ軸周りの角速度の大きさを全て加算した値に基づいて決定しているが、何れかの軸周りの角速度の大きさを加算対象から外してもかまわない。例えば、入力装置6を用いて行うゲーム処理において、X、Y、およびZ軸周りの角速度のうち、当該ゲーム処理に用いない軸周りの角速度がある場合、当該軸周りの角速度を用いずに回転速度Vを算出してもかまわない。
【0205】
また、上述した実施形態においては、コントローラ7に搭載されている加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)や撮像情報演算部74からの処理結果データを用いていない。したがって、本発明を実現する場合には、加速度センサ701や撮像情報演算部74がコントローラ7に搭載されていなくてもかまわない。また、上述した実施形態においては、コントローラ7に対してジャイロセンサ95および96が設けられている角速度検出ユニット9が着脱可能に接続される構成を用いたが、ジャイロセンサ95および96は、コントローラ7の内部に設けられてもかまわない。
【0206】
また、上述した説明では、据置型のゲーム装置に本願発明を適用した例を説明したが、ジャイロセンサを備えた入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置にも適用することができる。例えば、入力装置のジャイロセンサから出力される角速度データに応じて、情報処理装置が入力装置の姿勢等を算出する等、入力装置に生じる角速度に基づいて様々なゲーム処理をする際のジャイロセンサの安定確認処理に用いることができる。
【0207】
また、上述した説明では、コントローラ7(入力装置6)とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
【0208】
また、上述したコントローラ7および角速度検出ユニット9の形状や、操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した処理で用いられる係数、判定値、数式、処理順序等は、単なる一例に過ぎず他の値や数式や処理順序であっても、本発明を実現できることは言うまでもない。
【0209】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
【0210】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【0211】
本発明に係るゲーム装置およびゲームプログラムは、ジャイロセンサから得られる角速度に基づいたゲーム処理を行うゲームにおいて、ジャイロセンサに生じている誤差を認識しやすくすることができ、入力装置の姿勢や方向等を用いて処理するゲーム等を実行するゲーム装置やゲームプログラムとして有用である。
【符号の説明】
【0212】
1…ゲームシステム
2…モニタ
2a、706…スピーカ
3…ゲーム装置
4…光ディスク
5…ゲーム装置本体
6…入力装置
10…CPU
11…システムLSI
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
15…AV−IC
16…AVコネクタ
17…フラッシュメモリ
18…無線通信モジュール
19…無線コントローラモジュール
20…拡張コネクタ
21…外部メモリカード用コネクタ
22、23…アンテナ
24…電源ボタン
25…リセットボタン
26…イジェクトボタン
31…入出力プロセッサ
32…GPU
33…DSP
34…VRAM
35…内部メインメモリ
7…コントローラ
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751、94…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
704…バイブレータ
707…サウンドIC
708…アンプ
8…マーカ
9…角速度検出ユニット
91…ボタン
92…カバー
93…プラグ
95…2軸ジャイロセンサ
96…1軸ジャイロセンサ

【特許請求の範囲】
【請求項1】
複数軸周りの角速度をそれぞれ検出するジャイロセンサを備える入力装置から、当該角速度をそれぞれ示す角速度データを少なくとも含む操作データを取得してゲーム処理を行うゲーム装置であって、
前記角速度データを取得する角速度データ取得手段と、
前記角速度データが示す前記複数軸周りそれぞれの角速度の大きさを加算した値を用いて、1つの回転量を表す回転パラメータを算出する回転パラメータ算出手段と、
前記回転パラメータに応じた回転量に応じて所定のオブジェクトを回転させて表示装置に表示させるオブジェクト表示制御手段とを備える、ゲーム装置。
【請求項2】
前記角速度データに基づいてゲーム処理を行うゲーム処理手段と、
前記操作データが所定の操作が行われたことを示す場合に前記ゲーム処理手段が処理しているゲーム処理を一時停止する一時停止手段とを、さらに備え、
前記オブジェクト表示制御手段は、前記一時停止中に算出された前記回転パラメータに応じて当該一時停止中に前記オブジェクトを回転させて前記表示装置に表示させる、請求項1に記載のゲーム装置。
【請求項3】
前記角速度データに基づいて、前記入力装置の姿勢が安定しているか判定する判定手段を、さらに備え、
前記オブジェクト表示制御手段は、前記入力装置の姿勢が安定していると前記判定手段が判定するまでの期間中に、前記回転パラメータに応じて前記オブジェクトを回転させて前記表示装置に表示させる、請求項1に記載のゲーム装置。
【請求項4】
前記角速度データに基づいてゲーム処理を行うゲーム処理手段を、さらに備え、
前記判定手段は、前記ゲーム処理手段が前記ゲーム処理を開始する前に、前記判定を開始し、前記入力装置の姿勢が安定していると判定された後に前記ゲーム処理手段による前記ゲーム処理を開始させる、請求項3に記載のゲーム装置。
【請求項5】
前記オブジェクト表示制御手段は、前記入力装置の姿勢が安定していると前記判定手段が判定した場合に、前記オブジェクトを所定の方向に向けて静止させて前記表示装置に表示させる、請求項3に記載のゲーム装置。
【請求項6】
前記オブジェクト表示制御手段は、前記オブジェクトを前記所定の方向に向けて静止させた後、所定の条件を満たさない限り前記回転パラメータとは無関係に当該静止状態を継続して当該オブジェクトを前記表示装置に表示させる、請求項5に記載のゲーム装置。
【請求項7】
前記回転パラメータ算出手段は、前記加算した値が所定の閾値より大きい場合、当該値を当該閾値にして前記回転パラメータを算出する、請求項1に記載のゲーム装置。
【請求項8】
前記オブジェクト表示制御手段は、前記入力装置を模した前記オブジェクトを回転させて前記表示装置に表示させる、請求項1に記載のゲーム装置。
【請求項9】
前記回転パラメータ算出手段は、前記加算した値を、過去に算出された前記回転パラメータの値に所定割合で近づけることによって、新たな前記回転パラメータを算出する、請求項1に記載のゲーム装置。
【請求項10】
前記角速度データが示す角速度に収束するゼロ点オフセット値を、前記複数軸周りそれぞれに対して算出するオフセット値算出手段と、
前記角速度データが示す前記複数軸周りそれぞれの角速度を、当該軸周りに対応して算出されたそれぞれの前記ゼロ点オフセット値で補正するオフセット補正手段とを、さらに備え、
前記回転パラメータ算出手段は、前記オフセット補正手段によって補正された前記複数軸周りそれぞれの角速度の大きさを用いて、前記回転パラメータを算出する、請求項1に記載のゲーム装置。
【請求項11】
最新の前記角速度データが示す角速度から遡って連続して所定の安定範囲内となった角速度の連続個数を算出する連続個数算出手段を、さらに備え、
前記オフセット値算出手段は、前記連続個数が多いほど、最新の前記角速度データが示す角速度に収束する度合いの強い前記ゼロ点オフセット値を算出する、請求項10に記載のゲーム装置。
【請求項12】
複数軸周りの角速度をそれぞれ検出するジャイロセンサを備える入力装置から、当該角速度をそれぞれ示す角速度データを少なくとも含む操作データを取得してゲーム処理を行うゲーム装置のコンピュータで実行されるゲームプログラムであって、
前記コンピュータを、
前記角速度データを取得する角速度データ取得手段と、
前記角速度データが示す前記複数軸周りそれぞれの角速度の大きさを加算した値を用いて、1つの回転量を表す回転パラメータを算出する回転パラメータ算出手段と、
前記回転パラメータに応じた回転量に応じて所定のオブジェクトを回転させて表示装置に表示させるオブジェクト表示制御手段として機能させる、ゲームプログラム。
【請求項13】
前記角速度データに基づいてゲーム処理を行うゲーム処理手段と、
前記操作データが所定の操作が行われたことを示す場合に前記ゲーム処理手段が処理しているゲーム処理を一時停止する一時停止手段として、前記コンピュータをさらに機能させ、
前記オブジェクト表示制御手段は、前記一時停止中に算出された前記回転パラメータに応じて当該一時停止中に前記オブジェクトを回転させて前記表示装置に表示させる、請求項12に記載のゲームプログラム。
【請求項14】
前記角速度データに基づいて、前記入力装置の姿勢が安定しているか判定する判定手段として、さらに前記コンピュータを機能させ、
前記オブジェクト表示制御手段は、前記入力装置の姿勢が安定していると前記判定手段が判定するまでの期間中に、前記回転パラメータに応じて前記オブジェクトを回転させて前記表示装置に表示させる、請求項12に記載のゲームプログラム。
【請求項15】
前記角速度データに基づいてゲーム処理を行うゲーム処理手段として、さらに前記コンピュータを機能させ、
前記判定手段は、前記ゲーム処理手段が前記ゲーム処理を開始する前に、前記判定を開始し、前記入力装置の姿勢が安定していると判定された後に前記ゲーム処理手段による前記ゲーム処理を開始させる、請求項14に記載のゲームプログラム。
【請求項16】
前記オブジェクト表示制御手段は、前記入力装置の姿勢が安定していると前記判定手段が判定した場合に、前記オブジェクトを所定の方向に向けて静止させて前記表示装置に表示させる、請求項14に記載のゲームプログラム。
【請求項17】
前記オブジェクト表示制御手段は、前記オブジェクトを前記所定の方向に向けて静止させた後、所定の条件を満たさない限り前記回転パラメータとは無関係に当該静止状態を継続して当該オブジェクトを前記表示装置に表示させる、請求項16に記載のゲームプログラム。
【請求項18】
前記回転パラメータ算出手段は、前記加算した値が所定の閾値より大きい場合、当該値を当該閾値にして前記回転パラメータを算出する、請求項12に記載のゲームプログラム。
【請求項19】
前記オブジェクト表示制御手段は、前記入力装置を模した前記オブジェクトを回転させて前記表示装置に表示させる、請求項12に記載のゲームプログラム。
【請求項20】
前記回転パラメータ算出手段は、前記加算した値を、過去に算出された前記回転パラメータの値に所定割合で近づけることによって、新たな前記回転パラメータを算出する、請求項12に記載のゲームプログラム。
【請求項21】
前記角速度データが示す角速度に収束するゼロ点オフセット値を、前記複数軸周りそれぞれに対して算出するオフセット値算出手段と、
前記角速度データが示す前記複数軸周りそれぞれの角速度を、当該軸周りに対応して算出されたそれぞれの前記ゼロ点オフセット値で補正するオフセット補正手段として、さらに前記コンピュータを機能させ、
前記回転パラメータ算出手段は、前記オフセット補正手段によって補正された前記複数軸周りそれぞれの角速度の大きさを用いて、前記回転パラメータを算出する、請求項12に記載のゲームプログラム。
【請求項22】
最新の前記角速度データが示す角速度から遡って連続して所定の安定範囲内となった角速度の連続個数を算出する連続個数算出手段として、さらに前記コンピュータを機能させ、
前記オフセット値算出手段は、前記連続個数が多いほど、最新の前記角速度データが示す角速度に収束する度合いの強い前記ゼロ点オフセット値を算出する、請求項21に記載のゲームプログラム。

【図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

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2010−220950(P2010−220950A)
【公開日】平成22年10月7日(2010.10.7)
【国際特許分類】
【出願番号】特願2009−74069(P2009−74069)
【出願日】平成21年3月25日(2009.3.25)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】