(57)【特許請求の範囲】
【請求項１】
入力装置自体の動きを検出する動きセンサを備えた入力装置をプレイヤの身体に装着し、当該入力装置で検出された動きデータに基づいて、仮想３次元空間内で設定されているコース上の所定の経路に沿ってプレイヤオブジェクトが移動する様子を表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コースは複数の経路へ分岐する分岐ポイントを少なくとも１つ含み、
前記コンピュータを、
前記動きセンサから出力される動きデータを逐次取得する動きデータ取得手段と、
前記動きデータ取得手段が取得した動きデータに応じて前記プレイヤオブジェクトの移動速度を設定する移動速度設定手段と、
前記コースの分岐ポイントにおいて、前記動きデータ取得手段が取得した動きデータに基づいて前記プレイヤオブジェクトの分岐方向を設定する分岐方向設定手段と、
前記分岐方向設定手段で設定された分岐方向に従った前記コース上の所定の経路に沿って、前記移動速度設定手段で設定された移動速度で前記プレイヤオブジェクトを移動する、プレイヤオブジェクト移動手段として機能させる、ゲームプログラム。
【請求項２】
前記ゲームプログラムは、前記コンピュータを、
前記コース上の経路のうちいずれか一つの経路を非プレイヤオブジェクトが移動する非プレイヤ経路として設定する、非プレイヤ経路設定手段と、
前記非プレイヤオブジェクトを前記非プレイヤ経路に沿って移動する非プレイヤオブジェクト移動手段として更に機能させ、
前記分岐方向設定手段は、所定の条件を満たしたときに、前記プレイヤオブジェクトの移動する経路を前記非プレイヤ経路に設定する経路設定手段を更に含む、請求項１に記載のゲームプログラム。
【請求項３】
前記分岐方向設定手段は、
前記仮想３次元空間内において前記プレイヤオブジェクトと前記非プレイヤオブジェクトとの間の距離が所定距離以下である状態が所定時間以上継続したか否かを判定するための変更条件判定手段を更に含み、
前記所定の条件とは、前記変更条件判定手段で肯定と判定することである、請求項２に記載のゲームプログラム。
【請求項４】
前記ゲームプログラムは、前記コンピュータを、
前記コース上の経路のうちいずれか一つの経路を前記プレイヤオブジェクトが移動するプレイヤ経路として設定する、プレイヤ経路設定手段として更に機能させ、
前記経路設定手段は、前記変更条件判定手段が肯定と判定したときに、前記プレイヤ経路を前記非プレイヤ経路に変更する、請求項３に記載のゲームプログラム。
【請求項５】
前記非プレイヤオブジェクト移動手段は、前記非プレイヤオブジェクトを所定のタイミングで前記仮想３次元空間に配置し、前記非プレイヤ経路に沿って移動させる、請求項２〜４のいずれかに記載のゲームプログラム。
【請求項６】
前記ゲームプログラムは、前記コンピュータを、
前記プレイヤオブジェクトが前記コースの分岐している分岐ポイントに到達あるいは通過する前であって、且つ、当該分岐ポイントから所定の距離内に当該プレイヤオブジェクトが存在するか否かを判定する分岐ポイント接近判定手段として更に機能させ、
前記非プレイヤオブジェクト移動手段は、前記プレイヤオブジェクトが前記分岐ポイントから所定の距離内に存在すると判定されたときに、前記非プレイヤオブジェクトを前記プレイヤオブジェクトの近傍に配置する、請求項５に記載のゲームプログラム。
【請求項７】
前記ゲームプログラムは、前記コンピュータを、
前記非プレイヤオブジェクトを配置した後、当該非プレイヤオブジェクトと前記プレイヤオブジェクトとの距離が所定値以上になったときに当該非プレイヤオブジェクトを消去する、非プレイヤオブジェクト消去手段として更に機能させる、請求項５に記載のゲームプログラム。
【請求項８】
前記非プレイヤ経路設定手段は、複数の異なる非プレイヤ経路を設定し、
前記非プレイヤオブジェクト移動手段は、前記非プレイヤ経路設定手段で設定される非プレイヤ経路毎にそれぞれ外観が異なる非プレイヤオブジェクトを移動する、請求項５に記載のゲームプログラム。
【請求項９】
前記移動速度設定手段は、前記動きデータから算出される単位時間当たりの振動周波数が高くなるに連れて移動速度が上がるように移動速度を設定する、請求項１に記載のゲームプログラム。
【請求項１０】
前記動きセンサは加速度センサであり、
前記移動速度設定手段は、前記加速度センサから出力される重力方向の加速度の大きさに基づいて算出される前記単位時間当たりの振動周波数を算出する、請求項９に記載のゲームプログラム。
【請求項１１】
入力装置自体の動きを検出する動きセンサを備えた入力装置をプレイヤの身体に装着し、当該入力装置で検出された動きデータに基づいて、仮想３次元空間内で設定されているコース上の所定の経路に沿ってプレイヤオブジェクトが移動する様子を表示するゲーム装置であって、
前記コースは複数の経路へ分岐する分岐ポイントを少なくとも１つ含み、
前記動きセンサから出力される動きデータを逐次取得する動きデータ取得手段と、
前記動きデータ取得手段が取得した動きデータに応じて前記プレイヤオブジェクトの移動速度を設定する移動速度設定手段と、
前記コースの分岐ポイントにおいて、前記動きデータ取得手段が取得した動きデータに基づいて前記プレイヤオブジェクトの分岐方向を設定する分岐方向設定手段と、
前記分岐方向設定手段で設定された分岐方向に従った前記コース上の所定の経路に沿って、前記移動速度設定手段で設定された移動速度で前記プレイヤオブジェクトを移動する、プレイヤオブジェクト移動手段とを備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動きセンサを備える入力装置を用いたゲームプログラムおよびゲーム装置に関し、より特定的には、動きセンサの出力に基づいたプレイヤオブジェクトの操作に関する。
【背景技術】
【０００２】
従来より知られているビデオゲーム装置では、当該装置で実行されるゲームの操作方法として、多くの場合、プレイヤの手でコントローラを操作する方法が用いられている。例えば、ハウジングの左側に方向操作ボタンが設けられ、右側に複数のボタンが設けられているようなコントローラがある。そして、このようなコントローラを両手で把持し、左手で方向操作キーを押し、右手で複数のボタンを押し分けるという操作が行われていた。
【０００３】
また、ゲームによっては、そのゲーム内容とプレイヤのプレイ状態との一体感を出すために、特殊な形状のコントローラを用いる場合もあった。例えば、ハンドルの形状を模したコントローラを用いたドライビングゲーム装置が開示されている（例えば、特許文献１）。このゲーム装置では、当該ハンドル型のコントローラをプレイヤが両手で把持し、ハンドリング操作を行うことで、車を運転する感覚をプレイヤに提供していた。
【特許文献１】特開平６−１６５８８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した特許文献１などのゲームでは、コントローラの形状はどうあれ、プレイヤが自らの手でコントローラを持って操作する必要があった。しかしながら、ゲームの内容によっては、体感度やリアリティをより一層高めるために、コントローラをプレイヤの手に持たせずにプレイさせたいという要請がある。例えば、ジョギングを題材にしたようなゲームの場合、プレイヤの手にコントローラを持たせて操作を行わせるよりも、プレイヤの手には何も持たないまま、走る動作をプレイヤに行わせてプレイさせるほうが、よりゲームの体感度やリアリティが高まると考えられる。
【０００５】
それ故に、本発明の目的は、コントローラをプレイヤの手で操作することなく楽しめるゲーム装置、ゲームプログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、入力装置自体の動きを検出する動きセンサを備えた入力装置（７）をプレイヤの身体に装着し、当該入力装置で検出された動きデータに基づいて、仮想３次元空間内で設定されているコース上の所定の経路に沿ってプレイヤオブジェクトが移動する様子を表示するゲーム装置（３）のコンピュータに実行させるゲームプログラムであって、
コースは複数の経路へ分岐する分岐ポイントを少なくとも１つ含んでおり、コンピュータを、動きデータ取得手段（Ｓ１１）と、移動速度設定手段（Ｓ１４，Ｓ１８）と、分岐方向設定手段（Ｓ５０）と、プレイヤオブジェクト移動手段（Ｓ１６）として機能させる。動きデータ取得手段は、動きセンサから出力される動きデータを逐次取得する。移動速度設定手段は、動きデータ取得手段が取得した動きデータに基づいてプレイヤオブジェクトの移動速度を設定する。分岐方向設定手段は、コースの分岐ポイントにおいて、動きデータ取得手段が取得した動きデータに基づいてプレイヤオブジェクトの分岐方向を設定する。プレイヤオブジェクト移動手段は、分岐方向設定手段で設定された分岐方向に従ったコース上の所定の経路に沿って、移動速度設定手段で設定された移動速度でプレイヤオブジェクトを移動する。
【０００８】
第１の発明によれば、入力装置をプレイヤの手に持たせて操作を行わせることなく、プレイヤオブジェクトを操作することができる。これにより、ゲーム内容との一体感や臨場感を高めることができ、ゲームの興趣性を高めることができる。
【０００９】
第２の発明は、第１の発明において、ゲームプログラムは、コンピュータを、非プレイヤ経路設定手段（Ｓ４４）と、非プレイヤオブジェクト移動手段（Ｓ４６）として更に機能させる。非プレイヤ経路設定手段は、コース上の経路のうちいずれか一つの経路を非プレイヤオブジェクトが移動する非プレイヤ経路として設定する。非プレイヤオブジェクト移動手段は、非プレイヤオブジェクトを非プレイヤ経路に沿って移動する。また、分岐方向設定手段は、所定の条件を満たしたときに、プレイヤオブジェクトの移動する経路を非プレイヤ経路に設定する経路設定手段を更に含む。
【００１０】
第２の発明によれば、分岐するコース上で、所定の分岐方向へプレイヤオブジェクトを移動させることが可能となる。
【００１１】
第３の発明は、第２の発明において、分岐方向設定手段は、仮想３次元空間内においてプレイヤオブジェクトと非プレイヤオブジェクトとの間の距離が所定距離以下である状態が所定時間以上継続したか否かを判定するための変更条件判定手段を更に含む。また、所定の条件とは、変更条件判定手段で肯定と判定することである。
【００１２】
第３の発明によれば、入力装置をプレイヤの手で操作させることなく、分岐するコース上でプレイヤが所望する分岐方向を選択させることが可能となる。これにより、コース選択を手操作で行う場合に比べ、ゲームの臨場感が損なわれることを防ぐことができる。
【００１３】
第４の発明は、第３の発明において、ゲームプログラムは、コンピュータを、コース上の経路のうちいずれか一つの経路をプレイヤオブジェクトが移動するプレイヤ経路として設定する、プレイヤ経路設定手段として更に機能させる。また、経路設定手段は、変更条件判定手段が肯定と判定したときに、プレイヤ経路を非プレイヤ経路に変更する。
【００１４】
第４の発明によれば、入力装置をプレイヤの手で操作させることなく、プレイヤに移動するコースを変更させることができる。これにより、コース変更を手操作で行う場合に比べ、ゲームの臨場感が損なわれることを防ぐことができる。
【００１５】
第５の発明は、第２乃至第４のいずれかの発明において、非プレイヤオブジェクト移動手段は、非プレイヤオブジェクトを所定のタイミングで仮想３次元空間に配置し、非プレイヤ経路に沿って移動させる。
【００１６】
第５の発明によれば、プレイヤにコース選択が可能なタイミングを知らせることができる。
【００１７】
第６の発明は、第５の発明において、ゲームプログラムは、コンピュータを、プレイヤオブジェクトがコースの分岐している分岐ポイントに到達あるいは通過する前であって、且つ、当該分岐ポイントから所定の距離内に当該プレイヤオブジェクトが存在するか否かを判定する分岐ポイント接近判定手段（Ｓ４２）として更に機能させる。更に、非プレイヤオブジェクト移動手段は、プレイヤオブジェクトが分岐ポイントから所定の距離内に存在すると判定されたときに、非プレイヤオブジェクトをプレイヤオブジェクトの近傍に配置する。
【００１８】
第６の発明によれば、分岐ポイントに近づくまでは非プレイヤオブジェクトを出現させないため、処理負荷を軽減することが可能となる。
【００１９】
第７の発明は、第５の発明において、ゲームプログラムは、コンピュータを、非プレイヤオブジェクトを配置した後、当該非プレイヤオブジェクトとプレイヤオブジェクトとの距離が所定値以上になったときに当該非プレイヤオブジェクトを消去する、非プレイヤオブジェクト消去手段（Ｓ４８）として更に機能させる。
【００２０】
第７の発明によれば、非プレイヤオブジェクトが出現した後、プレイヤオブジェクトとの距離が離れると、非プレイヤオブジェクトを消去するため、処理負荷を軽減することができる。
【００２１】
第８の発明は、第５の発明において、非プレイヤ経路設定手段は、複数の異なる非プレイヤ経路を設定する。また、非プレイヤオブジェクト移動手段は、非プレイヤ経路設定手段で設定される非プレイヤ経路毎にそれぞれ外観が異なる非プレイヤオブジェクトを移動する。
【００２２】
第８の発明によれば、様々な非プレイヤオブジェクトを出現させることができ、ゲームの興趣性を高めることができる。
【００２３】
第９の発明は、第１の発明において、移動速度決定手段は、動きデータから算出される単位時間当たりの振動周波数が高くなるに連れて移動速度が上がるように移動速度を決定する。
【００２４】
第１０の発明は、第１の発明において、振動センサは加速度センサである。そして、移動速度決定手段は、加速度センサから出力される重力方向の加速度の大きさに基づいて単位時間当たりの振動周波数を算出する。
【００２５】
第９乃至第１０の発明によれば、プレイヤの動作の激しさに応じてプレイヤオブジェクトの移動速度を変更することができる。これにより、違和感のないプレイ感覚を提供することが可能となる。
【００２６】
第１１の発明は、入力装置（７）自体の動きを検出する動きセンサを備えた入力装置をプレイヤの身体に装着し、当該入力装置で検出された動きデータに基づいて、仮想３次元空間内で設定されているコース上の所定の経路に沿ってプレイヤオブジェクトが移動する様子を表示するゲーム装置であって、コースは複数の経路へ分岐する分岐ポイントを少なくとも１つ含んでおり、動きデータ取得手段（１０）と、移動速度設定手段（１０）と、分岐方向設定手段（１０）と、プレイヤオブジェクト移動手段（１０）とを備える。動きデータ取得手段は、動きセンサから出力される動きデータを逐次取得する。移動速度設定手段は、動きデータ取得手段が取得した動きデータに応じて前記プレイヤオブジェクトの移動速度を設定する。分岐方向設定手段は、コースの分岐ポイントにおいて、前記動きデータ取得手段が取得した動きデータに基づいて前記プレイヤオブジェクトの分岐方向を設定する。プレイヤオブジェクト移動手段は、分岐方向設定手段で設定された分岐方向に従ったコース上の所定の経路に沿って、移動速度設定手段で設定された移動速度でプレイヤオブジェクトを移動する。
【００２７】
第１１の発明によれば、第１の発明と同様の効果を得ることができる。
【発明の効果】
【００２８】
本発明によれば、入力装置をプレイヤの手に持たせて操作を行わせることなく、プレイヤオブジェクトを操作することができる。
【発明を実施するための最良の形態】
【００２９】
（ゲームシステムの全体構成）
図１を参照して、本発明の実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、コントローラ７、およびマーカ部８を含む。本システムは、コントローラ７を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００３０】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００３１】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２には、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像が表示される。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部８が設置される。マーカ部８は、その両端に２つのマーカ８Ｒおよび８Ｌを備えている。マーカ８Ｒ（マーカ８Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部８はゲーム装置３に接続されており、ゲーム装置３はマーカ部８が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００３２】
コントローラ７は、当該コントローラ７自身に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ７とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ７とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ７とゲーム装置３とは有線で接続されてもよい。
【００３３】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００３４】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩの内部構成について後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００３５】
また、システムＬＳＩ１１には、入出力プロセッサ１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００３６】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。より具体的には、ＧＰＵ１１ｂは、当該グラフィクスコマンドに従って３Ｄグラフィックスの表示に必要な計算処理、例えば、レンダリングの前処理にあたる３Ｄ座標から２Ｄ座標への座標変換などの処理や、テクスチャの張り込みなどの最終的なレンダリング処理を行うことで、ゲーム画像データを生成する。ここで、ＣＰＵ１０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ１１ｂに与える。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００３７】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。また、内部メインメモリ１１ｅは、外部メインメモリ１２と同様に、プログラムや各種データを記憶したり、ＣＰＵ１０のワーク領域やバッファ領域としても用いられる。
【００３８】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００３９】
入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、および外部メモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４０】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００４１】
また、入出力プロセッサ１１ａは、コントローラ７から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４２】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０および外部メモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０や外部メモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００４３】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンにされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。また、一旦電源がオンにされた状態で、再度電源ボタン２４を押すと、低電力スタンバイモードへの移行が行われる。この状態でも、ゲーム装置３への通電は行われているため、インターネット等のネットワークに常時接続しておくことができる。なお、一旦電源がオンにされた状態で、電源をオフにしたいときは、電源ボタン２４を所定時間以上長押しすることで、電源をオフとすることが可能である。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４４】
次に、図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面前方から見た斜視図である。
【００４５】
図３および図４において、コントローラ７は、ハウジング７１と、当該ハウジング７１の表面に設けられた複数個の操作ボタンで構成される操作部７２とを備える。本実施例のハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
【００４６】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００４７】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に４つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。
【００４８】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００４９】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置３本体の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００５０】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７からゲーム装置３へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【００５１】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５のスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００５２】
一方、ハウジング７１下面には、凹部が形成されている。後述で明らかとなるが、ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をマーカ８Ｌおよび８Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００５３】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００５４】
ここで、以下の説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するｘｙｚ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をｚ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をｚ軸正方向とする。また、コントローラ７の上下方向をｙ軸とし、ハウジング７１の上面（操作ボタン７２ａ等が設けられた面）方向をｙ軸正方向とする。さらに、コントローラ７の左右方向をｘ軸とし、ハウジング７１の左側面（図３では表されずに図４で表されている側面）方向をｘ軸正方向とする。
【００５５】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上ハウジング（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図６は、コントローラ７の下ハウジング（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た斜視図となっている。
【００５６】
図５において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。マイコン７５１は本願発明のボタンデータ発生手段の一例として、操作ボタン７２ａ等の種類に応じた操作ボタンデータを発生させるように機能する。この仕組みは公知技術であるが、例えばキートップ下側に配置されたタクトスイッチなどのスイッチ機構による配線の接触／切断をマイコン７５１が検出することによって実現されている。より具体的には、操作ボタンが例えば押されると配線が接触して通電するので、この通電がどの操作ボタンにつながっている配線で発生したかをマイコン７５１が検出し、操作ボタンの種類に応じた信号を発生させている。
【００５７】
また、コントローラ７は、図示しない無線モジュール７５３（図７参照）およびアンテナ７５４によって、ワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ７の回転を良好な感度でゲーム装置３等が判定することができる。
【００５８】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置３から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００５９】
そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、基板７００等に形成された配線によってマイコン７５１と接続され、ゲーム装置３から送信された振動データに応じてその作動をオン／オフする。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００６０】
次に、図７を参照して、コントローラ７の内部構成について説明する。なお、図７は、コントローラ７の構成を示すブロック図である。
【００６１】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。
【００６２】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。後述により明らかとなるが、この撮像情報演算部７４から出力される処理結果データに基づいて、コントローラ７の位置や動きに応じた信号を得ることができる。
【００６３】
コントローラ７は、３軸（ｘ、ｙ、ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向（または他の対になった方向）のそれぞれに沿った直線加速度のみを検知する２軸の加速度検出手段を使用してもよい。例えば、この３軸または２軸の加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であってもよい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて３軸または２軸の加速度センサ７０１が提供されてもよい。
【００６４】
当業者には公知であるように、加速度センサ７０１に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、その２軸または３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００６５】
しかしながら、加速度センサ７０１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ１０）またはコントローラのプロセッサ（例えばマイコン７５１）などのコンピュータが処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサを搭載するコントローラが静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理する場合）、コントローラが現実に静的な状態であれば、検出された加速度に基づいてコントローラの姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかを知ることができる。具体的には、加速度センサの検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸の加速度センサの場合には、さらに各軸の加速度の信号に対して処理を施すことによって、各軸が重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、、加速度センサ７０１からの出力に基づいて、プロセッサがコントローラ７の傾き角度のデータを算出する処理をおこなってもよいが、当該傾き角度のデータを算出する処理をおこなうことなく、加速度センサ７０１からの出力に基づいて、おおよその傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１をプロセッサと組み合わせて用いることによって、コントローラ７の傾き、姿勢または位置を判定することができる。一方、加速度センサが動的な状態であることを前提とする場合には、重力加速度成分に加えて加速度センサの動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動き方向などを知ることができる。具体的には、、加速度センサ７０１を備えるコントローラ７がユーザの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７のさまざまな動きおよび／または位置を算出することができる。なお、加速度センサが動的な状態であることを前提とする場合であっても、加速度センサの動きに応じた加速度を所定の処理により除去すれば、重力方向対する傾きを知ることが可能である。他の実施例では、加速度センサ７０１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００６６】
他の実施形態の例では、コントローラ７の動きを検出する動きセンサとして、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるＭＥＭＳジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ７０１と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転（または角速度）を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【００６７】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、２つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロセンサとの基本的な差異と同様にジャイロセンサの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【００６８】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置３からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置３から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置３から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。
【００６９】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの加速度信号（ｘ、ｙ、およびｚ軸方向加速度データ；以下、単に加速度データと記載する）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、加速度データ、処理結果データ）を無線コントローラモジュール１９へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５からゲーム装置３への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ；登録商標）で構成される通信部７５の送信間隔は例えば５ｍｓである。マイコン７５１は、無線コントローラモジュール１９への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その電波信号をアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からの加速度データ、および撮像情報演算部７４からの処理結果データが無線モジュール７５３で電波信号に変調されてコントローラ７から送信される。そして、ゲーム装置３の無線コントローラモジュール１９でその電波信号を受信し、ゲーム装置３で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、加速度データ、および処理結果データ）を取得する。そして、ゲーム装置３のＣＰＵ１０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００７０】
次に、図８〜図１２を用いて、本実施形態で想定するゲームの概要について説明する。本実施形態で想定するゲームは、ジョギングを題材にしたゲーム（以下、ジョギングゲーム）である。図８は、本実施形態で想定するジョギングゲームの画面の一例である。図８において、テレビ２には、ゲーム画面として３次元仮想ゲーム空間が表示されている。更に、ゲーム画面には、プレイヤキャラクタ１０１、および、プレイヤキャラクタ１０１の前方を走っている先導キャラクタ１０２が表示されている。なお、図８では、プレイヤキャラクタ１０１の前方の様子がわかるように、プレイヤキャラクタ１０１については透けた状態で表している。実際のゲーム画面上では、プレイヤキャラクタ１０１は半透明の状態で表示される。また、プレイヤキャラクタ１０１および先導キャラクタ１０２の前方には、分岐点１０３が表示されている。
【００７１】
本ジョギングゲームでは、上記仮想ゲーム空間内の所定のルートが予めジョギングコースとして設定されている。そして、このコースを先導する先導キャラクタ１０２に付き従って、プレイヤキャラクタ１０１をジョギングさせるゲームである。なお、図８において、先導キャラクタ１０２の上には、カーソル１０４が表示されている。このカーソル１０４は、仮想ゲーム空間内に登場する各種キャラクタのうち、先導キャラクタ１０２がどのキャラクタであるかを示すためのものである。
【００７２】
次に、本実施形態におけるジョギングゲームの操作について説明する。当該ジョギングゲームでは、上述したコントローラ７の加速度センサ７０１からの出力を用いてプレイヤキャラクタ１０１を操作する。具体的には、まず、プレイヤは、コントローラ７を身体のいずれかの部位に装着する。例えば、腰のベルトに挟み込むようにして装着したり、あるいはズボンのポケットに入れるようにしてもよい。次に、プレイヤは、その場で駆け足する（移動しないように駆け足する）ような動作（以下、ジョギング動作）を行う。すると、この動作によって、プレイヤの身体が揺れることになる。これに伴って、プレイヤの身体に装着されたコントローラ７も振動することになる。この振動を加速度センサ７０１で検知して、プレイヤキャラクタ１０１の移動に反映させる。つまり、プレイヤがジョギング動作を行うと、その動作に合わせて、仮想ゲーム空間内でプレイヤキャラクタ１０１もジョギング動作を行いながら前進する様子（前方に走行していく様子）が表示される。
【００７３】
また、ジョギング動作中に、プレイヤが自己の脚の上下運動を速くする、つまり、速く走る動作を行うことで、プレイヤキャラクタ１０１の走行速度を上げることができる。つまり、速く走る動作を行うことで、単位時間当たりのコントローラ７の振動回数（振動周波数）が多くなる。この振動回数の変化をゲ−ム処理に反映させることで、プレイヤキャラクタ１０１を速く走らせることができる。
【００７４】
このように、本ジョギングゲームでは、プレイヤがコントローラ７を身体に装着した状態でジョギング動作を行うことによって、プレイヤキャラクタ１０１を前方へ走らせることができる。また、プレイヤの脚の上下運動の速度を調整することで、プレイヤキャラクタ１０１の走行速度を調整することが可能である。
【００７５】
ところで、上述のようにしてゲームをプレイしていても、毎回同じジョギングコースばかり走っていると、ゲームに飽きがきてしまう。そのため、本ジョギングゲームでは、ジョギングコースを複数用意している。そして、ジョギングコースの途中に分岐点を設けることでコースを途中で分岐させ、ジョギングの途中で走行するコースを変更できるようにしている。
【００７６】
ここで、コースを変更するための操作としては、例えば、上記分岐点にさしかかったときに、身体に装着しているコントローラ７を一旦身体から外し、手に持ち替えてからボタン操作等を行って進みたいコースを指示することで、コース変更を行うという操作方法が考えられる。しかし、上記のようなジョギング動作中に、このようにいちいちコントローラ７を手に持ち替えてコース変更操作を行うことは、プレイヤにとっては非常に煩わしい操作となる。また、上述のようにコントローラ７の振動によってプレイヤキャラクタ１０１を走行させているところ、手に持ち替えて操作を行うと、プレイヤキャラクタ１０１の走行速度の低下や、場合によっては、プレイヤキャラクタ１０１が停止してしまうことも考えられる。更に、プレイヤが実際にジョギング動作を行うことでゲーム内容との一体感、臨場感を感じているところに、このような手操作が入り込むと、ゲーム内容との一体感、臨場感が失われてしまい、ゲームの面白さが一気に損なわれてしまう。そこで、本実施形態では、ジョギング動作を続けながら、手を使うことなく、不自然さをプレイヤに感じさせないようなコース変更を可能にする。これにより、ゲーム内容との一体感や臨場感を損なわないようにしつつ、ゲーム展開に変化をつけ、ゲームが単調になることを防いでいる。
【００７７】
次に、上述したコース変更の処理について説明する。まず、本ジョギングゲームにおけるジョギングコースの構成について説明する。図９は、本ジョギングゲームにおけるコースの構成を説明するための図である。本ジョギングゲームでは、コースは３つ用意されている。図９では、コース番号１、コース番号２、コース番号３の３つのコースが示されている。そして、１つのコースは複数の区間から構成されている。例えば、コース番号１のコース（以下、単にコース番号１と呼ぶ）は、区間番号１の区間（以下、単に区間１と呼ぶ）、および区間番号２の区間（以下、単に区間２と呼ぶ。他の区間についても、以下同様に呼ぶ。）の２つの区間の組み合わせから構成されている。また、コース番号２のコース（以下、単にコース番号２と呼ぶ）は、区間１、区間３、区間４の３つの区間の組み合わせから構成される。また、コース番号３のコース（以下、単にコース番号３と呼ぶ）は、区間１、区間３、区間５の３つの区間の組み合わせから構成されている。
【００７８】
更に、各区間の終わりには、ゴール地点を除いて、分岐点が設定されている。各分岐点には、分岐点番号が割り振られている。図９の例では、区間１の最後に分岐点番号”１”の分岐点が設けられている。この分岐点では、区間２（すなわち、コース番号１を進むルート）と、区間３（コース番号２あるいはコース番号３に進むことができるルート）とのいずれかに進むことが可能となっている。
【００７９】
次に、上記のようなコース構成を例として、上述の図８および図９〜図１２を用いて本実施形態におけるコース変更のための処理の概要を説明する。まず、ジョギングゲーム開始時は、プレイヤが進むジョギングコースの初期値として、コース番号１が設定される。そして、コース番号１を先導するための先導キャラクタが表示された状態でスタートする。つまり、コース変更が行われない限り、プレイヤはコース番号１を走行し、ゴールすることになる。以下、プレイヤが走行するコースをメインコースと呼ぶ。なお、図８における分岐点１０３は、上記図９の分岐点番号”１”の分岐点に対応している。そして、分岐点１０３を右に曲がると区間２に進み、左に曲がると、区間３に進むものとして、以下説明する。
【００８０】
ゲームがスタートした後、プレイヤが上述したようなジョギング動作を行って、先導キャラクタ１０２について走り進めていくと、図８に示したように、分岐点番号”１”の分岐点１０３に近づいてくる。分岐点１０３に近づいてくると、図１０に示すように、犬型の非プレイヤキャラクタ（以下、分岐キャラクタ１０５）が、プレイヤキャラクタ１０１を後方から追い抜いて出現する。この分岐キャラクタ１０５が、コース変更を行うためのキャラクタとなる。当該分岐キャラクタ１０５の移動速度は、先導キャラクタ１０２よりも速い速度である。また、当該分岐キャラクタ１０５は、コース番号２と関連づけられている。以下、分岐キャラクタ１０５に関連づけられているコース（ここではコース番号２）をサブコースと呼ぶ。そして、このように分岐キャラクタ１０５が出現したときに、この分岐キャラクタ１０５について走って行くことで、ジョギングコースの変更ができる。
【００８１】
具体的には、分岐キャラクタ１０５が出現して画面内にいる間に、プレイヤキャラクタ１０１の走行速度を上げ、先導キャラクタ１０２を追い抜いて、この分岐キャラクタ１０５について行くようにする。これにより、分岐点１０３を左に曲がり、区間３へと進むことができる。つまり、ジョギングコースが、初期値として設定されていたコース番号１から、当該分岐キャラクタ１０５に関連づけられているコース番号２に変更されることになる。換言すると、サブコースとして設定されている「コース番号２を進むコース」が、プレイヤが走るメインコースとして設定されることになる。図１１では、分岐点１０３を左に進み、区間３に進んだ状態を示している。また、図１１に示されるように、ジョギングコースが変更されると、分岐キャラクタ１０５の上部にカーソル１０４が表示される。これにより、以降は、この犬型の分岐キャラクタ１０５が先導キャラクタに切り替わり、プレイヤを先導することになる（このとき、プレイヤにとって走りやすいペースになるよう、犬型のキャラクタの走行速度も少し低下する）。
【００８２】
一方、図１０の状態で、プレイヤキャラクタ１０１の走行速度を上げずに、先導キャラクタ１０２に追走している状態を続ければ、図１２に示すように、分岐キャラクタ１０５はそのまま先の方に走り去ってしまう。その結果、プレイヤキャラクタ１０１は、現在のコース（初期値として設定されたコース番号１）を走り続けることになる。つまり、先導キャラクタ１０２に従って分岐点１０３を右に曲がり、区間２へと進んでいくことになる。
【００８３】
このように、本実施形態では、ジョギングコース上に分岐点を設け、各分岐点で分岐キャラクタ１０５を出現させる。そして、当該分岐キャラクタ１０５について走るようにすることで、ジョギングコースの変更ができる。これにより、ジョギング動作を中断することなく違和感のないコース変更を行うことができ、多彩なジョギングコースをプレイヤに楽しませることが可能となる。その結果、ゲーム展開が単調になることを防ぎ、ゲームの興趣を高めることが可能となる。
【００８４】
次に、本実施形態で用いられる各種データについて説明する。図１３は、図２に示した外部メインメモリ１２（ただし、内部メインメモリ１１ｅでもよいし、両方を使用するようにしてもよい）のメモリマップを示す図である。図１３において、外部メインメモリ１２は、プログラム記憶領域１２０、データ記憶領域１２４、作業領域１２９を含む。プログラム記憶領域１２０およびデータ記憶領域１２４のデータは、ディスク４に予め記憶されたものが、ジョギングゲーム処理に際して外部メインメモリ１２にコピーされたものである。また、ここでは説明の便宜上、各データをテーブルデータの形式で説明するが、これらのデータは、実際にテーブルデータの形式で記憶されている必要はなく、ゲームプログラムにおいて、このテーブルに相当する内容の処理が記憶されていればよい。なお、外部メインメモリ１２には、図１３に示す情報に含まれるデータの他、仮想ゲーム空間に関するデータ（地形データ等）や音声データ等、ゲーム処理に必要なデータが記憶される。
【００８５】
ゲームプログラム記憶領域１２０は、ＣＰＵ１０によって実行されるゲームプログラムを記憶し、このゲームプログラムは、メイン処理プログラム１２１と、入力処理プログラム１２２と、分岐処理プログラム１２３などによって構成される。メイン処理プログラム１２１は、後述する図１７のフローチャートの処理に対応するプログラムである。入力処理プログラム１２２は、加速度センサ７０１からの出力に基づいてプレイヤキャラクタ１０１を走行させるための処理をＣＰＵ１０に実行させるためのプログラムであり、分岐処理プログラム１２３は、上述したようなコース変更に関する処理をＣＰＵ１０に実行させるためのプログラムである。
【００８６】
データ記憶領域１２４には、区間テーブル１２５、分岐キャラクタテーブル１２６、分岐点対応テーブル１２７、区間詳細データ１２８などのデータが記憶される。
【００８７】
区間テーブル１２５は、各区間が、各コースの何番目の区間に割り当てられているかを示すテーブルである。図１４は、区間テーブル１２５のデータ構成の一例を示す図である。図１４に示された区間テーブル１２５は、コース番号１２５１と、１から連番が割り振られている並び順１２５２と、この２種のデータから特定される区間番号１２５３とを有する構造になっている。図１４のテーブルは、図９を用いて上述したコースの構成を例としている。図１４では、コース１の１番目の区間の区間番号１２５３として”１”が定義されている。また、コース１の２番目の区間の区間番号１２５３として”２”が定義されている。また、コース１の３番目および４番目の区間番号１２５３としては、”−１”が定義されているが、これは、その区間はないことを示す。つまり、コース１を構成する区間は２つだけであることが示されている。
【００８８】
図１３に戻り、分岐キャラクタテーブル１２６は、分岐キャラクタとコース番号との対応関係等を示すためのテーブルである。図１５は、分岐キャラクタテーブル１２６のデータ構成の一例を示す図である。図１５に示された分岐キャラクタテーブル１２６は、分岐キャラクタ番号１２６１と、コース番号１２６２と、オブジェクトデータ１２６３とを有する構造になっている。図１５の例では、分岐キャラクタ番号１２６１が”１”の分岐キャラクタに、コース番号”１”のコースが対応づけられている。また、分岐キャラクタ番号１２６１が”２”の分岐キャラクタには、コース番号”２”のコースが対応づけられている。また、オブジェクトデータ１２６３には、分岐キャラクタに関するその他の各種データが含まれている。例えば、モデリングデータやテクスチャデータ、仮想ゲーム空間内における初期配置位置や走行速度などのデータが含まれ、このデータを元にポリゴンモデルが生成され、仮想ゲーム空間内に配置されることになる。
【００８９】
図１３に戻り、分岐点対応テーブル１２７は、図９を用いて説明したコース上の分岐点番号と分岐キャラクタとの対応関係を示すためのテーブルである。換言すると、どの分岐点番号ではどの分岐キャラクタを登場させるかを示すテーブルである。図１６は、分岐点対応テーブル１２７のデータ構成の一例を示す図である。図１６に示された分岐点対応テーブル１２７は、分岐点番号１２７１と、分岐キャラクタ番号１２７２とを有する構造になっている。図１６の例では、分岐点番号”１”に分岐キャラクタ番号が”１”の分岐キャラクタが対応づけられている。これはすなわち、分岐点番号が”１”の分岐点においては、分岐キャラクタ番号が”１”の分岐キャラクタを登場させることを示している。
【００９０】
図１３に戻り、区間詳細データ１２８は、上述した各区間についての詳細なデータが含まれる。例えば、仮想ゲーム空間上における各区間の位置や占める範囲や、また、区間走行中に発生するイベントなどに関するデータが、上記区間番号１２５３に対応づけられて記憶される。
【００９１】
作業領域１２９には、加速度データ１３０、平滑化ベクトル１３１、前回平滑化ベクトル１３２が記憶される。この他、ジョギングゲーム処理において用いられる各種フラグや変数データ等が記憶される。
【００９２】
加速度データ１３０は、コントローラ７から送信データとして送信されてくる一連の操作情報に含まれる加速度データであり、得られた加速度データを所定フレーム分（例えば、ゲーム処理間隔である１フレーム（１／６０秒）に対して３０フレーム分）格納する。加速度データ１３０には、加速度センサ７０１がＸ、Ｙ、およびＺ軸の３軸成分に分けてそれぞれ検出したＸ軸方向加速度１３０ａ、Ｙ軸方向加速度１３０ｂ、およびＺ軸方向加速度１３０ｃが含まれる。なお、ゲーム装置３に備える無線コントローラモジュール１９は、コントローラ７から所定間隔例えば５ｍｓごとに送信される操作情報に含まれる加速度データ１３０を受信し、無線コントローラモジュール１９に備える図示しないバッファに蓄えられる。その後、ゲーム処理間隔である１フレーム毎に読み出されて外部メインメモリ１２に記憶される。
【００９３】
平滑化ベクトル１３１、および、前回平滑化ベクトル１３２は、コントローラ７からの加速度データに基づいて算出されるデータである。これらのデータは、所定の時点のコントローラ７の姿勢における重力方向を知るために用いられる。ここで、上述のように、本実施形態におけるゲーム処理の処理間隔は１フレームである。そして、平滑化ベクトル１３１は、現在のフレームにおける処理で算出されるデータであり、前回平滑化ベクトル１３２は、その１つ前のフレームにおける処理で算出された平滑化ベクトルが記憶されているデータである。
【００９４】
次に、図１７〜図１９を参照して、ゲーム装置３によって実行されるジョギングゲーム処理の詳細について説明する。なお、図１７はゲーム装置３によって実行されるジョギングゲーム処理の全体処理を示すフローチャートである。また、図１８は、図１７のコントローラ入力処理の詳細な動作を示すサブルーチンであり、図１９は、図１７の分岐処理の詳細な動作を示すサブルーチンである。
【００９５】
まず、図１７のステップＳ１において、以降の処理において用いられる各種データの初期化処理が実行される。具体的には、ＣＰＵ１０は、プレイヤキャラクタ１０１が走るジョギングコースのコース番号を示す変数である変数Ｃｂに、”１”を設定する。つまり、初期値として、コース１を走るように設定されることになる（上記メインコースが設定される）。更に、ＣＰＵ１０は、プレイヤキャラクタ１０１が走行する区間がジョギングコースの何番目であるかを示すための変数Ｋｎｂに”１”を設定する。そして、ＣＰＵ１０は、区間テーブル１２５にアクセスし、変数Ｃｂ（コース番号１２５１に対応）およびＫｎｂ（並び順１２５２に対応）に基づいて、区間番号１２５３を検索して取得する。図１４の例では、”１”が取得されることになる。そして、ＣＰＵ１０は、区間番号を示すための変数Ｋｂに当該取得した値を設定する。また、ＣＰＵ１０は、後述の入力処理で用いられるフラグであるカウントフラグに”オフ”を設定する。また、平滑化ベクトル１３１、前回平滑化ベクトル１３２に、”０”を設定する。その後、仮想ゲーム空間内におけるジョギングコースのスタート地点に、プレイヤキャラクタ１０１、および、コース１を先導するための先導キャラクタ１０２を配置する。また、その他の必要なオブジェクトも適宜仮想ゲーム空間内に配置する。以上のように構築されたゲーム空間を表すゲーム画像が生成され、生成されたゲーム画像がモニタ２に表示される。
【００９６】
次に、ステップＳ２において、プレイヤキャラクタ１０１のスタート処理が実行される。すなわち、ＣＰＵ１０は、走行開始を促す旨のメッセージ（カウントダウンのメッセージ等）を画面に表示する。また、これに併せて、ＣＰＵ１０は、先導キャラクタ１０２の走行も開始させる。以降、ステップＳ３〜Ｓ６、Ｓ８の処理ループが１フレーム毎に繰り返されることによって、ゲームが進行していく。
【００９７】
次に、ステップＳ３において、コントローラ入力処理が実行される。この処理では、加速度センサ７０１からの入力に基づいて、プレイヤキャラクタ１０１を一歩分移動させるための処理が行われる。
【００９８】
図１８は、ステップＳ３で示したコントローラ入力処理の詳細を示すフローチャートである。図１８において、最初に、現在のコントローラ７の姿勢における重力方向を算出するための処理が実行される。まず、ステップＳ１１において、ＣＰＵ１０は、コントローラ７から送信された加速度データ１３０を加速度ベクトルとして読み出す。続くステップＳ１２において、平滑化ベクトル１３１が算出される。平滑化ベクトルは、上述したように、常にかかっている重力に対して、プレイヤが行う重力加速度以外の動き（ノイズ）を除去することで算出される。そして、このようにしてノイズを除去した平滑化ベクトルの示す方向が、そのときのコントローラ７の姿勢における重力方向を示すことになる。
【００９９】
上記平滑化ベクトルは、上記ステップＳ１１で取得された加速度ベクトルと、前回平滑化ベクトル１３２とを用いて算出される。具体的には、平滑化ベクトル（ｂｘ，ｂｙ，ｂｚ）は次式に従って算出される。
ｂｘ＝ｂｘ’＋（ａｘ−ｂｘ’）×ｋ１
ｂｙ＝ｂｙ’＋（ａｙ−ｂｙ’）×ｋ１
ｂｚ＝ｂｚ’＋（ａｚ−ｂｚ’）×ｋ１
上式において、変数ａｘは加速度ベクトルのｘ成分の値であり、変数ａｙは加速度ベクトルのｙ成分の値であり、変数ａｚは加速度ベクトルのｚ成分の値である。また、変数ｂｘ’は前回平滑化ベクトル１３２のｘ成分の値であり、変数ｂｙ’は前回平滑化ベクトル１３２のｙ成分の値であり、変数ｂｚ’は前回平滑化ベクトル１３２のｚ成分の値である。また、定数ｋ１の値は予め定められているものとする。
【０１００】
次に、ステップＳ１３において、上記ステップＳ１１で読み出した加速度ベクトルから、平滑化ベクトルの方向（つまり、重力方向）の加速度ベクトル（以下、重力方向ベクトルと呼ぶ）の大きさを算出する。これにより、重力方向に対して、プレイヤがコントローラ７をどれくらい振動させたかを把握することができる。また、このとき、ステップＳ１２で算出された平滑化ベクトル１３１を前回平滑化ベクトル１３２として記憶する。なお、上記の処理方法はあくまで一例であり、これらに限らず、重力方向についての加速度の大きさが算出できれば、どのような処理方法を用いても良い。
【０１０１】
次に、ステップＳ１４において、上記ステップＳ１３で算出された重力方向ベクトルの大きさが第１の所定値以上であるか否かが判定される。その結果、第１の所定値以上であれば、続くステップＳ１５において、カウントフラグが”オフ”であるか否かが判定される。カウントフラグが”オン”のときは（ステップＳ１５でＮＯ）、そのままコントローラ入力処理は終了する。
【０１０２】
一方、ステップＳ１５の判定の結果、カウントフラグが”オフ”のときは（ステップＳ１５でＹＥＳ）、ステップＳ１６において、プレイヤキャラクタ１０１を、一歩分の距離だけ前進させる処理が行われる。ここで、本実施形態では、一歩分の距離（すなわち、歩幅）については、予め固定的な値が設定されているものとする。更に、ステップＳ１７において、カウントフラグが”オン”に設定され、コントローラ入力処理が終了する。
【０１０３】
一方、上記ステップＳ１４の判定の結果、重力方向ベクトルの大きさが第１の所定値以上ではないと判定されたときは（ステップＳ１４でＮＯ）、続くステップＳ１８において、重力方向ベクトルの大きさが第２の所定値以下であるか否かが判定される。なお、第１の所定値と第２の所定値の関係は、”第１所定値  ≧  第２所定値”であるものとする。その結果、第２の所定値以下でもないときは（ステップＳ１８でＮＯ）、コントローラ入力処理は終了する。
【０１０４】
一方、上記ステップＳ１８の判定の結果、重力方向ベクトルの大きさが第２の所定値以下と判定されたときは（ステップＳ１８でＹＥＳ）、続くステップＳ１９において、カウントフラグが”オン”に設定されているか否かが判定される。その結果、カウントフラグが”オフ”のときは（ステップＳ１９でＮＯ）、コントローラ入力処理は終了する。一方、カウントフラグが”オン”のときは（ステップＳ１９でＹＥＳ）、ステップＳ２０において、カウントフラグが”オフ”に設定される。そして、コントローラ入力処理が終了する。以上で、コントローラ入力処理の説明は終了する。
【０１０５】
図１７に戻り、コントローラ入力処理が終了すると、続くステップＳ４において、現在走行中の区間を走り終えたか否かが判定される。その結果、まだ走り終えていないと判定されたときは（ステップＳ４でＮＯ）、ステップＳ８の分岐処理（詳細は後述）が行われた後、ステップＳ３の処理に戻って処理が繰り返される。一方、現在の区間を走り終えたときは（ステップＳ４でＹＥＳ）、現在のジョギングコースにおける次の区間へ進むための処理が行われる。具体的には、ＣＰＵ１０は変数Ｋｎｂに１を加算する。更に、ＣＰＵ１０は、区間テーブル１２５にアクセスし、変数Ｃｂおよび変数Ｋｎｂ、つまり、現在のコース番号と区間の順番（並び順）とに基づいて、次に走行すべき区間を示す区間番号１２５３を取得する。そして、ＣＰＵ１０は、取得した区間番号１２５３を変数Ｋｂに設定する。更に、区間番号１２５３に基づいて、区間詳細データ１２８から次に走行する区間の詳細なデータを取得し、適宜仮想ゲーム空間内に反映させる処理を行う。
【０１０６】
次に、ステップＳ６において、ジョギングコースを全て走り終えたか否か、つまり、ゴールしたか否かが判定される。当該判定の結果、ゴールしていれば（ステップＳ６でＹＥＳ）、続くステップＳ７において、プレイヤゴール処理が行われる。具体的には、ゴールしたことを示すメッセージの表示や、ゴールするまでにかかった時間の表示などが実行される。そして、本実施形態にかかるジョギングゲーム処理は終了する。
【０１０７】
一方、ステップＳ６の判定の結果、まだゴールしていないときは（ステップＳ６でＮＯ）、ステップＳ８において分岐処理が実行される。この処理では、上述したような分岐キャラクタの出現等の、ジョギングコースの変更に関する処理が実行される。
【０１０８】
図１９は、上記ステップＳ８で示した分岐処理の詳細を示すフローチャートである。図１９では、まず、ステップＳ４１で、仮想ゲーム空間内におけるプレイヤキャラクタ１０１の現在の位置を基点とした所定範囲内で、いずれかの分岐キャラクタ１０５が既に走行しているか否かが判定される。その結果、分岐キャラクタ１０５が走行していないときは（ステップＳ４１でＮＯ）、ステップＳ４２において、プレイヤキャラクタ１０１が、いずれかの分岐点に近づいてきたか否かが判定される。いずれかの分岐点に近づいてきたと判定されたときは（ステップＳ４２でＹＥＳ）、ステップＳ４３において、プレイヤキャラクタ１０１が近づいている分岐点の分岐点番号が検出される。これは、例えば、仮想ゲーム空間内でのプレイヤキャラクタ１０１の現在位置と分岐点の位置等に基づいて検出される。
【０１０９】
次に、ステップＳ４４において、分岐点対応テーブル１２７から、検出された分岐点の分岐点番号に応じた分岐キャラクタ番号１２７２が取得される。
【０１１０】
次に、ステップＳ４５において、上記取得された分岐キャラクタ番号１２７２に対応するオブジェクトデータ１２６３が読み込まれる。そして、当該オブジェクトデータ１２６３に基づいて分岐キャラクタ１０５が生成される（上述のように、当該分岐キャラクタ１０５には、分岐キャラクタ番号１２７２をキーとして所定のコース（サブコース）が対応づけられている）。更に、当該オブジェクトデータ１２６３に含まれている、分岐キャラクタ１０５の配置位置を示すデータ（図示せず）に基づいて、当該生成された分岐キャラクタ１５が仮想ゲーム空間に配置される。本実施形態では、当該分岐キャラクタ１０５は、プレイヤキャラクタ１０１の後方になるよう配置される。また、この配置位置は、プレイヤキャラクタ１０１とある程度近い距離となるような位置が好ましい。これは、プレイヤに違和感を感じさせない程度の速度で分岐キャラクタ１０５にプレイヤキャラクタ１０１を追い抜かせるためである。つまり、あまりに遠い位置に配置すると、プレイヤキャラクタ１０１に追いつかせるためには、その分速い速度で分岐キャラクタ１０５を移動させることになり、結果的に、プレイヤキャラクタ１０１が追いつけない程の速さで追い抜いて行ってしまうことを防ぐためである。そして、分岐キャラクタ１０５の走行が開始された後、分岐処理が終了する。
【０１１１】
一方、上記ステップＳ４１の判定の結果、分岐キャラクタ１０５が既に走行していると判定されたときは（ステップＳ４１でＹＥＳ）、続くステップＳ４６において、当該分岐キャラクタに設定されている走行速度に従って、当該分岐キャラクタを前進させる。本実施形態では、分岐キャラクタ１０５は先導キャラクタ１０２よりも速い走行速度が設定されている。そのため、走行開始から数フレーム〜数十フレーム後には、プレイヤキャラクタ１０１を追い抜くようにして分岐キャラクタ１０５が画面に登場し、先導キャラクタ１０２も追い抜いて、その先に走っていくことになる。
【０１１２】
次に、ステップＳ４７において、プレイヤキャラクタ１０１から分岐キャラクタ１０５までの距離が所定値を越えたか否かが判定される。つまり、プレイヤが分岐キャラクタ１０５を追いかけずに（つまり、走行速度は上げないまま）、分岐キャラクタ１０５だけが先に走っていってしまった状態になったか否かが判定される。その結果、所定値を越えたと判定されたときは（ステップＳ４７でＹＥＳ）、走行中の分岐キャラクタ１０５を仮想ゲーム空間から消去する処理が実行される。
【０１１３】
一方、ステップＳ４７の判定の結果、所定値を越えていないと判定されたときは（ステップＳ４７でＮＯ）、ステップＳ４９において、コース変更条件が満たされたか否かが判定される。ここで、本実施形態におけるコース変更条件は、プレイヤキャラクタ１０１から一定の距離内に分岐キャラクタ１０５が存在している状態が所定の時間以上継続したか否か、で判定される。つまり、プレイヤキャラクタ１０１が走行速度を上げて先導キャラクタを追い抜き、分岐キャラクタ１０５を追走あるいは伴走している状態が所定時間継続したか否かを判定している。具体的な判定処理としては、例えば、まず、プレイヤキャラクタ１０１と分岐キャラクタ１０５との間の距離が所定値以下になったか否かを判定する。そして、所定値以下であれば、その時点からフレーム数等のカウントを開始し、プレイヤキャラクタ１０１と分岐キャラクタ１０５との間の距離が所定値以下である状態が継続している時間をカウントしていく。そして、当該カウントが所定値以上になれば、上記のコース変更条件が満たされたと判定することが考えられる。上記の判定の結果、コース変更条件が満たされたときは（ステップＳ４９でＹＥＳ）、分岐キャラクタ１０５に応じたコースにジョギングコースが変更される。つまり、上記サブコースがメインコースとして設定されることになる。具体的には、ＣＰＵ１０は、分岐キャラクタテーブル１２６にアクセスし、分岐キャラクタ１０５に対応づけられているコース番号１２６２を取得する。そして、ＣＰＵ１０は、当該取得したコース番号１２６２を変数Ｃｂに設定する。また、このとき、ＣＰＵ１０は、ジョギングコースが変更されて先導キャラクタが切り替わったことを示すために、カーソル１０４が分岐キャラクタ１０５の上部に表示されるような設定を行う。更に、プレイヤにとって走りやすいペースになるように、分岐キャラクタ１０５の走行速度を所定の速度まで低下させる。その後、分岐処理が終了する。
【０１１４】
一方、ステップＳ４９の判定の結果、コース変更条件が満たされていないと判定されたときは（ステップＳ４９でＮＯ）、そのまま、分岐処理が終了する。以上で、本実施形態にかかるジョギングゲーム処理の説明を終了する。
【０１１５】
このように、本実施形態では、プレイヤにコントローラ７を手に持たせて操作を行わせることなく、プレイヤキャラクタ１０１の走行速度を調整させることができる。これにより、ジョギングゲームなどのゲームにおいて、そのゲーム内容との一体感、臨場感をプレイヤに与えることができ、ゲームの興趣を高めることができる。
【０１１６】
更に、本実施形態では、ジョギングコースを複数用意し、上述したような分岐キャラクタ１０５を出現させることで、プレイヤキャラクタ１０１が走行中に、手操作に頼ることなく、ジョギング動作を継続しながらコースの変更が行えるようにしている。これにより、多彩なジョギングコースを走行させることができ、ゲーム展開が単調になることを防ぐことができる。
【０１１７】
なお、上記実施形態のコントローラ入力処理において、プレイヤキャラクタ１０１を移動させる一歩分の距離、すなわちプレイヤキャラクタ１０１の歩幅に関しては、固定値を用いていた。これに限らず、歩幅については、加速度センサから得られるコントローラ７の振動の周波数や振幅の大きさに応じて変化させるようにしても良い。例えば、単位時間当たりの周波数が増えるに連れて、プレイヤキャラクタ１０１の歩幅を大きくする。更に、一歩分の振幅の大きさを検出し、その振幅が大きくなるに連れて更に歩幅を大きくするようにしても良い。振幅の大きさは、例えば、上記ステップＳ１４で、第１の所定値を越えたときの加速度の大きさと、上記ステップＳ１８で第２の所定値以下となったときの加速度の大きさとの差分を振幅の大きさとして算出することが考えられる。これにより、プレイヤが、より激しい動きで速く走る動作を行ったときに、歩幅を固定値にしている場合と比べ、より遠くに進ませることができ、プレイヤの爽快感を高めることができる。例えば、プレイヤキャラクタの歩幅を仮想ゲーム空間内における１ｍという値に固定した場合、５秒で１０歩進んだときは１０ｍ進んだことになり、５秒で２０歩進んだときは、歩数に単純に比例して、２倍となる２０ｍ進んだことになる。しかし、上記のように周波数（歩数）、および振幅に応じて歩幅が大きくなるようにすることで、５秒で１０歩進んだときは１０ｍであっても、５秒で２０歩進んだときは、例えば３０ｍ進ませることが可能となる。
【０１１８】
また、分岐キャラクタに関して、上述した実施形態では、１体だけ出現させた例で説明していたが、これに限らず、分岐点においてコースを３つ以上に分岐させておき、それぞれ異なるコースに関連づけられている複数の分岐キャラクタを同時に出現させるようにしてもよい。これらの分岐キャラクタの外観は、それぞれ異なったものとしてもよい。この場合は、同時に出現する分岐キャラクタの走行速度に差を設けておくことが好ましい。移動速度が同じであると、いずれの分岐キャラクタと伴走しているかの判定ができない場合があるためである。また、移動速度が異なっていても、その速度差が小さい場合は、２体の分岐キャラクタとの間で伴走している状態が同時に成立する場合がある。このような場合は、プレイヤキャラクタ１０１に最も近い分岐キャラクタに関連づけられているコースに変更するようにすればよい。
【０１１９】
また、上記実施形態では、プレイヤキャラクタ１０１の後方から追い抜くようにして分岐キャラクタ１０５を出現させていたが、これに限らず、プレイヤキャラクタ１０１の前方から分岐キャラクタ１０５を出現させるようにしてもよい。この場合は、分岐キャラクタ１０５の走行速度を先導キャラクタ１０２よりも遅い速度に設定する。つまり、分岐キャラクタ１０５が前方を遅い速度で走っている状態で出現させる。その結果、プレイヤキャラクタ１０１が前方に出現した分岐キャラクタ１０５に徐々に追いついていくことになる。そして、ある程度分岐キャラクタ０１５に近づいたところで、プレイヤが走行速度を遅くすることで、プレイヤキャラクタ１０１が分岐キャラクタ１０５に伴走する状態となる。そして、この伴走状態が所定時間継続したか否かを判定して、コース変更条件を満たしたか否かを判定するようにすればよい。
【０１２０】
また、上記ステップＳ４９におけるコース変更条件の例としては、上述した条件に限らず、単位時間内に急激な速度変化が起こったか否かを判定するようにしてもよい。これは、例えば、分岐点に近づいて分岐キャラクタが出現したとき、プレイヤが当該分岐キャラクタ１０５に伴走しようとすると、走行速度が急に上がることになる。そこで、例えば分岐キャラクタ１０５が出現した後、所定時間が経過するまでに急激な速度の上昇が検知できれば、分岐キャラクタについて伴走しているものと判定し、コース変更条件が満たされたと判定すればよい。
【０１２１】
また、先導キャラクタ１０２は、ゲーム中に登場させなくてもよい。そして、分岐キャラクタ１０５も分岐点前のコース変更の処理にかかる間だけ出現させるようにすればよい。つまり、分岐点にプレイヤキャラクタ１０１が近づいたときに分岐キャラクタ１０５を出現させ、その後、コース変更が完了した後に、分岐キャラクタ１０５を仮想ゲーム空間から消去するようにすればよい。
【産業上の利用可能性】
【０１２２】
本発明にかかるゲームプログラムおよびゲーム装置は、プレイヤにコントローラの手操作を行わせることなくプレイヤオブジェクトの操作を行うことができ、据置型ゲーム装置やパーソナルコンピュータ等に有用である。
【図面の簡単な説明】
【０１２３】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置３の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上ハウジングを外した状態を示す斜視図
【図６】図３のコントローラ７の下ハウジングを外した状態を示す斜視図
【図７】図３のコントローラ７の構成を示すブロック図
【図８】本実施形態で想定するジョギングゲームの画面の一例
【図９】本ジョギングゲームにおけるコースの構成を説明するための図
【図１０】本実施形態で想定するジョギングゲームの画面の一例
【図１１】本実施形態で想定するジョギングゲームの画面の一例
【図１２】本実施形態で想定するジョギングゲームの画面の一例
【図１３】外部メインメモリ１２のメモリマップを示す図
【図１４】区間テーブル１２５のデータ構成の一例を示す図
【図１５】分岐キャラクタテーブル１２６のデータ構成の一例を示す図
【図１６】分岐点対応テーブル１２７のデータ構成の一例を示す図
【図１７】本発明の実施形態に係るジョギングゲーム処理を示すフローチャート
【図１８】図１７のステップＳ３で示したコントローラ入力処理の詳細を示したフローチャート
【図１９】図１７のステップＳ８で示した分岐処理の詳細を示したフローチャート
【符号の説明】
【０１２４】
１…ゲームシステム
２…モニタ
２ａ…スピーカ
３…ゲーム装置
４…光ディスク
７…コントローラ
１０…ＣＰＵ
１１…システムＬＳＩ
１１ａ…入出力プロセッサ
１１ｂ…ＧＰＵ
１１ｃ…ＤＳＰ
１１ｄ…ＶＲＡＭ
１１ｅ…内部メインメモリ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２…アンテナ
２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０３…水晶振動子
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
【図１】
0005116424.tif 000002
【図２】
0005116424.tif 000003
【図３】
0005116424.tif 000004
【図４】
0005116424.tif 000005
【図５】
0005116424.tif 000006
【図６】
0005116424.tif 000007
【図７】
0005116424.tif 000008
【図８】
0005116424.tif 000009
【図９】
0005116424.tif 000010
【図１０】
0005116424.tif 000011
【図１１】
0005116424.tif 000012
【図１２】
0005116424.tif 000013
【図１３】
0005116424.tif 000014
【図１４】
0005116424.tif 000015
【図１５】
0005116424.tif 000016
【図１６】
0005116424.tif 000017
【図１７】
0005116424.tif 000018
【図１８】
0005116424.tif 000019
【図１９】
0005116424.tif 000020