説明

ゲーム装置、ゲームプログラム、ゲーム制御方法およびゲームシステム

【構成】 ゲーム装置12は、CPU40を含み、CPUは、仮想ゲームを開始すると、タイトル画面(100)をモニタ34に表示する。ここで、所定の操作がされると、本編が開始され、トップメニューで選択された第1ゲームが開始される。ただし、第1ゲームの開始に先立って、ジャイロユニット(24)を備えるコントローラ22の安定状態が確認される。この確認のための処理は、タイトル画面が表示されている場合にも実行されており、確認された後に、コントローラを放置している状態が所定時間以上になると、第1ゲームとは異なる第2ゲームが開始される。
【効果】 安定状態を確認するために待つ必要がある場合に第2ゲームをプレイすることができるので、待つことに意味を与えることができる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ゲーム装置、ゲームプログラム、ゲーム制御方法およびゲームシステムに関し、特にたとえば、ジャイロセンサを備えた操作装置を用いる、ゲーム装置、ゲームプログラム、ゲーム制御方法およびゲームシステムに関する。
【背景技術】
【0002】
背景技術の一例が特許文献1に開示されている。この特許文献1では、ゲームシステムを起動してからゲームを実行して終了するまでの特定の場面において、所定の条件を満たす場合に、使用される入力装置毎のジャイロセンサの安定が確認される。たとえば、入力装置を机の上などに置いて静止させることにより、ジャイロセンサを静止している状態にして当該状態におけるジャイロセンサからの出力(静止時出力)が得られる。ジャイロセンサは、この静止時出力を基準として、X、YおよびZ軸周りの角速度データを出力する。
【特許文献1】特開2010−227366[A63F 13/00, A63F 13/06]
【発明の概要】
【発明が解決しようとする課題】
【0003】
この特許文献1のゲームシステムでは、入力装置を机の上などに置いて待たなければならないので、待つのが面倒に感じられる可能性がある。また、ジャイロセンサの安定が確認されたことの表示を見逃すと、待ち過ぎてしまう場合もある。
【0004】
それゆえに、この発明の主たる目的は、新規な、ゲーム装置、ゲームプログラム、ゲーム制御方法およびゲームシステムを提供することである。
【0005】
また、この発明の他の目的は、ゲーム開始前に待つ必要が有る場合で、待ち過ぎてしまった場合にも楽しむことができる、ゲーム装置、ゲームプログラム、ゲーム制御方法およびゲームシステムを提供することである。
【課題を解決するための手段】
【0006】
第1の発明は、ジャイロセンサを備えた操作装置に対する操作に基づいて、少なくとも角速度に基づいたゲーム処理を行うゲーム装置であって、初期画面提示部と、判定部と、第1ゲーム開始部と、第1ゲーム処理部と、第2ゲーム開始部と、第2ゲーム処理部とを備える。初期画面提示部は、第1ゲーム開始前の初期画面を提示する。判定部は、初期画面を提示しているとき、操作装置の姿勢が安定しているかどうかを判定する。たとえば、操作装置を机の上に置くなどして静止された状態が継続しているかどうかを判定するのである。第1ゲーム開始部は、初期画面を提示しているときに、所定の操作に応じて、第1ゲームを開始する。第1ゲーム処理部は、操作装置から取得される角速度に基づいて第1ゲームを行う。第2ゲーム開始部は、判定部によって操作装置の姿勢が安定していることが判定された後、所定の操作が行われずに所定時間が経過したとき、第1ゲームとは異なる第2ゲームを開始する。たとえば、初期画面が表示されているときに、所定の条件を満たせば、第2ゲームが開始される。第2ゲーム処理部は、操作装置から取得される角速度に基づいて第2ゲームを行う。
【0007】
第1の発明によれば、たとえば、初期画面が表示されているときに、操作装置の姿勢が安定していることが判定され、その後に、所定の操作が行われずに所定時間が経過したときに、第2ゲームをプレイすることができる。したがって、操作装置の姿勢が安定するのを待つことに意味を与えることができる。また、待ち過ぎた場合にも、第2ゲームをプレイできるので、楽しむことができる。さらに、第2ゲームをプレイするために待っている間に、操作装置の姿勢が安定していることが判定されるので、自然に待つことができる。
【0008】
第2の発明は、第1の発明に従属し、操作装置は少なくとも1つのキーを備え、第1ゲーム開始部は、キーが操作されたことに応じて第1ゲームを開始する。つまり、キーが操作されると、第1ゲームが開始され、操作装置の姿勢が安定していることが判定され、キーが操作されないで所定時間を経過したときに、第2ゲームが開始される。
【0009】
第2の発明によれば、キー操作の有無で第1ゲームまたは第2ゲームを選択的にプレイすることができる。
【0010】
第3の発明は、第1または第2の発明に従属し、第2ゲーム処理部は、第2ゲームが開始されてから所定時間経過後に当該第2ゲームを終了し、初期画面提示部は、第2ゲームの終了後さらに初期画面を提示する。
【0011】
第3の発明によれば、第2ゲームは所定時間で終了し、その後、初期画面に戻るので、初期画面において遊びの要素を持たせることができる。
【0012】
第4の発明は、第1ないし第3の発明に従属し、ゲーム装置は、指示提示部をさらに備える。指示提示部は、第1ゲーム開始部によって第1ゲームが開始されるとき、判定部によって操作装置の姿勢が安定していないことが判定されると、当該操作装置の姿勢を安定させるための指示を提示する。これに応じて、プレイヤは操作装置を机の上に置くなどして、その姿勢を安定させる。第1ゲーム開始部は、判定部によって操作装置の姿勢が安定したことが判定された後に、第1ゲームを開始する。つまり、操作装置の姿勢を安定させていない場合には、第1ゲームの開始に先立って、操作装置の姿勢を安定させるための指示を提示して、操作装置の姿勢が安定したかどうかを判定する必要である。これに対して、プレイヤが、第2ゲームをプレイするために、操作装置を机の上などに置いて待っておけば、操作装置の姿勢が安定していることが既に判定されているため、その後に、第1ゲームをプレイする場合には、判定処理が不要である。
【0013】
第4の発明によれば、第2ゲームをプレイするために、操作装置を机の上に置くなどして、その姿勢を安定させておけば、その後に、第1ゲームをプレイするときに判定処理が不要であるため、速やかに第1ゲームをプレイすることができる。
【0014】
第5の発明は、ジャイロセンサを備えた操作装置に対する操作に基づいて、少なくとも角速度に基づいたゲーム処理を行うゲームプログラムであって、コンピュータを、第1ゲーム開始前の初期画面を提示する初期画面提示部と、初期画面を提示しているとき、操作装置の姿勢が安定しているかどうかを判定する判定部と、初期画面を提示しているときに、所定の操作に応じて、第1ゲームを開始する第1ゲーム開始部と、操作装置から取得される角速度に基づいて第1ゲームを行う第1ゲーム処理部と、判定部によって操作装置の姿勢が安定していることが判定された後、所定の操作が行われずに所定時間が経過したとき、第1ゲームとは異なる第2ゲームを開始する第2ゲーム開始部と、操作装置から取得される角速度に基づいて第2ゲームを行う第2ゲーム処理部として機能させる、ゲームプログラムである。
【0015】
第5の発明においても、第1の発明と同様に、待つことに意味を与えることでき、待ち過ぎた場合にも楽しむことができる。しかも、自然に待つことができる。
【0016】
第6の発明は、第5の発明に従属し、操作装置は少なくとも1つのキーを備え、第1ゲーム開始部は、キーが操作されたことに応じて第1ゲームを開始する。
【0017】
第6の発明においても、第2の発明と同様に、キー操作の有無で第1ゲームまたは第2ゲームを選択的にプレイすることができる。
【0018】
第7の発明は、第5または第6の発明に従属し、第2ゲーム処理部は、第2ゲームが開始されてから所定時間経過後に当該第2ゲームを終了し、初期画面提示部は、第2ゲームの終了後さらに初期画面を提示する。
【0019】
第7の発明においても、第3の発明と同様に、初期画面において遊びの要素を持たせることができる。
【0020】
第8の発明は、第5ないし第7の発明のいずれかに従属し、第1ゲーム開始部によって第1ゲームが開始されるとき、判定部によって操作装置の姿勢が安定していないことが判定されると、当該操作装置の姿勢を安定させるための指示を提示する指示提示部としてコンピュータをさらに機能させ、第1ゲーム開始部は、判定部によって操作装置の姿勢が安定したことが判定された後に、第1ゲームを開始する。
【0021】
第8の発明においても、第4の発明と同様に、速やかに第1ゲームをプレイすることができる。
【0022】
第9の発明は、ジャイロセンサを備えた操作装置に対する操作に基づいて、少なくとも角速度に基づいたゲーム処理を行うゲーム装置のゲーム制御方法であって、(a)第1ゲーム開始前の初期画面を提示し、(b)初期画面を提示しているとき、操作装置の姿勢が安定しているかどうかを判定し、(c)初期画面を提示しているときに、所定の操作に応じて、第1ゲームを開始し、(d)操作装置から取得される角速度に基づいて第1ゲームを行い、(e)ステップ(b)によって操作装置の姿勢が安定していることが判定された後、所定の操作が行われずに所定時間が経過したとき、第1ゲームとは異なる第2ゲームを開始し、そして(f)操作装置から取得される角速度に基づいて第2ゲームを行う、ゲーム制御方法である。
【0023】
第9の発明においても、第1の発明と同様に、待つことに意味を与えることでき、待ち過ぎた場合にも楽しむことができる。しかも、自然に待つことができる。
【0024】
第10の発明は、第9の発明に従属し、操作装置は少なくとも1つのキーを備え、ステップ(c)は、キーが操作されたことに応じて第1ゲームを開始する。
【0025】
第10の発明においても、第2の発明と同様に、キー操作の有無で第1ゲームまたは第2ゲームを選択的にプレイすることができる。
【0026】
第11の発明は、第9または第10の発明に従属し、ステップ(e)は、第2ゲームが開始されてから所定時間経過後に当該第2ゲームを終了し、ステップ(a)は、第2ゲームの終了後さらに初期画面を提示する。
【0027】
第11の発明においても、第3の発明と同様に、初期画面において遊びの要素を持たせることができる。
【0028】
第12の発明は、第9ないし第11の発明のいずれかに従属し、(g)ステップ(c)によって第1ゲームが開始されるとき、ステップ(b)によって操作装置の姿勢が安定していないことが判定されると、当該操作装置の姿勢を安定させるための指示を提示し、ステップ(c)は、ステップ(b)によって操作装置の姿勢が安定したことが判定された後に、第1ゲームを開始する。
【0029】
第12の発明においても、第4の発明と同様に、速やかに第1ゲームをプレイすることができる。
【0030】
第13の発明は、ジャイロセンサを備えた操作装置に対する操作に基づいて、少なくとも角速度に基づいたゲーム処理を行うゲームシステムであって、第1ゲーム開始前の初期画面を提示する初期画面提示部と、初期画面を提示しているとき、操作装置の姿勢が安定しているかどうかを判定する判定部と、初期画面を提示しているときに、所定の操作に応じて、第1ゲームを開始する第1ゲーム開始部と、操作装置から取得される角速度に基づいて第1ゲームを行う第1ゲーム処理部と、判定部によって操作装置の姿勢が安定していることが判定された後、所定の操作が行われずに所定時間が経過したとき、第1ゲームとは異なる第2ゲームを開始する第2ゲーム開始部と、操作装置から取得される角速度に基づいて第2ゲームを行う第2ゲーム処理部を備える、ゲームシステムである。
【0031】
第13の発明においても、第1の発明と同様に、待つことに意味を与えることでき、待ち過ぎた場合にも楽しむことができる。しかも、自然に待つことができる。
【0032】
第14の発明は、第13の発明に従属し、操作装置は少なくとも1つのキーを備え、第1ゲーム開始部は、キーが操作されたことに応じて第1ゲームを開始する。
【0033】
第14の発明においても、第2の発明と同様に、キー操作の有無で第1ゲームまたは第2ゲームを選択的にプレイすることができる。
【0034】
第15の発明は、第13または第14の発明に従属し、第2ゲーム処理部は、第2ゲームが開始されてから所定時間経過後に当該第2ゲームを終了し、初期画面提示部は、第2ゲームの終了後さらに初期画面を提示する。
【0035】
第15の発明においても、第3の発明と同様に、初期画面において遊びの要素を持たせることができる。
【0036】
第16の発明は、第13ないし第15の発明のいずれかに従属し、第1ゲーム開始部によって第1ゲームが開始されるとき、判定部によって操作装置の姿勢が安定していないことが判定されると、当該操作装置の姿勢を安定させるための指示を提示する指示提示部をさらに備え、第1ゲーム開始部は、判定部によって操作装置の姿勢が安定したことが判定された後に、第1ゲームを開始する。
【0037】
第16の発明においても、第4の発明と同様に、速やかに第1ゲームをプレイすることができる。
【発明の効果】
【0038】
この発明によれば、初期画面が表示されている場合に、操作装置の姿勢が安定し、所定の操作を行わずに所定時間が経過したときに、第1ゲームとは異なる第2ゲームが開始されるので、ゲーム開始前に待つ必要が有る場合に、待つことに意味を持たせることができ、待ち過ぎてしまった場合にも楽しむことができる。また、第2ゲームをプレイするために待っている間に、操作装置の姿勢が安定していることが判定されるので、自然に待つことができる。
【0039】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0040】
【図1】図1はこの発明のゲームシステムの一実施例を示す図解図である。
【図2】図2は図1に示すゲームシステムの電気的な構成を示すブロック図である。
【図3】図3は図1に示すコントローラの外観を説明するための図解図である。
【図4】図4は図1に示すジャイロユニットを接続したコントローラおよびジャイロユニットの外観を説明するための図解図である。
【図5】図5は図1に示すジャイロユニットが接続されたコントローラの電気的な構成を示すブロック図である。
【図6】図6は図1に示すジャイロユニットが接続されたコントローラを用いてゲームプレイするときの状態を概説するための図解図である。
【図7】図7は図1に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図8】図8は対象画像を含む撮像画像の一例を示す図解図である。
【図9】図9は図1に示すモニタに表示されるタイトル画面の一例を示す図解図である。
【図10】図10は図1に示すモニタに表示される第1ゲーム選択画面の一例を示す図解図である。
【図11】図11は図1に示すモニタに表示される安定確認画面の例を示す図解図である。
【図12】図12は図1に示すモニタに表示される第2ゲーム画面の一例を示す図解図である。
【図13】図13は図1に示すモニタに表示される第2ゲーム画面の他の例を示す図解図である。
【図14】図14は図2に示すメインメモリのメモリマップの一例を示す図解図である。
【図15】図15は図2に示すCPUのゲーム全体処理の一部を示すフロー図である。
【図16】図16は図2に示すCPUのゲーム全体処理の他の一部であって、図15に後続するフロー図である。
【図17】図17は図2に示すCPUの第2ゲーム処理のフロー図である。
【図18】図18は図2に示すCPUの安定確認処理のフロー図である。
【発明を実施するための形態】
【0041】
図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置(以下、単に「ゲーム装置」という。)12およびコントローラ22を含む。なお、図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ22と通信可能に設計されている。また、ゲーム装置12と各コントローラ22とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。また、この実施例では、コントローラ22には、ジャイロユニット24が接続(連結)されている。
【0042】
ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。図示は省略するが、ディスクスロット16の周囲には、LEDと導光板とが配置され、様々な処理に応答させて、ディスクスロット16を点灯または点滅させることが可能である。
【0043】
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という。)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置12では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカードには当該他のアプリケーションのデータを保存することができる。
【0044】
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
【0045】
図1では省略するが、ゲーム装置12のハウジング14の後面には、AVケーブルコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル32aを通してゲーム装置12にモニタ34およびスピーカ34aを接続する。このモニタ34およびスピーカ34aは典型的にはカラーテレビジョン受像機であり、AVケーブル32aによって、ゲーム装置12からの映像信号がカラーテレビのビデオ入力端子に入力され、ゲーム装置12からの音声信号が音声入力端子に入力される。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ34の周辺(この実施例では、モニタ34の上側)には、2つの赤外LED(マーカ)34m,34nを備えるマーカ部34bが設けられる。このマーカ部34bは、電源ケーブル32bを通してゲーム装置12に接続される。したがって、マーカ部34bには、ゲーム装置12から電源が供給される。これによって、マーカ34m,34nは発光し、それぞれモニタ34の前方に向けて赤外光を出力する。
【0046】
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0047】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、コントローラ22自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0048】
ただし、ビデオゲームや他のアプリケーションのプログラムは、ゲーム装置12の内部メモリ(フラッシュメモリ42(図2参照))に記憶(インストール)しておき、当該内部メモリから実行するようにしてもよい。かかる場合には,光ディスク18のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
【0049】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられ、ゲームプロセッサとして機能する。また、CPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
【0050】
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク18からプログラム,画像データや音声データ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
【0051】
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後述する。
【0052】
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
【0053】
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。ただし、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
【0054】
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
【0055】
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ34aから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【0056】
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ34およびスピーカ34aに出力される。したがって、ゲーム画面がモニタ34に表示され、ゲームに必要な音(音楽)がスピーカ34aから出力される。
【0057】
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60およびメモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
【0058】
図示は省略するが、入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(「送信データ」とする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(「受信データ」とする)を、ネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、当該受信データをフラッシュメモリ44に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ42aは、ダウンロードサーバからダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、そのダウンロードデータをフラッシュメモリ44に記憶する。
【0059】
また、入出力プロセッサ42aは、コントローラ22から送信されるコントローラデータをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。コントローラデータは、CPU40の処理(たとえば、ゲーム処理)によって利用された後、バッファ領域から消去される。
【0060】
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格に従ってコントローラ22との間で通信を行う。
【0061】
さらに、入出力プロセッサ42aには、拡張コネクタ60およびメモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、コントローラ22とは異なる他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60やメモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0062】
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング14)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、システムLSI42には、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、通常の通電状態となるモード(「通常モード」と呼ぶこととする)が設定される。一方、電源ボタン20aがオフされると、システムLSI42には、ゲーム装置12の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という)が設定される。
【0063】
この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、CPU40がアプリケーションを実行することはない。
【0064】
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動しないようにして、消費電力を低減するようにしてある。
【0065】
また、図示は省略するが、ゲーム装置12のハウジング14内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【0066】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【0067】
また、通常モードとスタンバイモードとの切り替えは、コントローラ22の電源スイッチ26hのオン/オフの切り替えによって、遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52aへの電源供給を行わない設定にしてもよい。
【0068】
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク18が排出される。
【0069】
図3(A)ないし図3(E)は、コントローラ22の外観の一例を示す。図3(A)はコントローラ22の先端面を示し、図3(B)はコントローラ22の上面を示し、図3(C)はコントローラ22の右側面を示し、図3(D)はコントローラ22の下面を示し、そして、図3(E)はコントローラ22の後端面を示す。
【0070】
図3(A)ないし図3(E)を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング22a(コントローラ22)には、入力手段(複数のキーないしボタン或いはスイッチ)26が設けられる。具体的には、図3(B)に示すように、ハウジング22aの上面には、十字キー26a,1ボタン26b,2ボタン26c,Aボタン26d,−(マイナス)ボタン26e,HOMEボタン26f,+(プラス)ボタン26gおよび電源スイッチ26hが設けられる。また、図3(C)および図3(D)に示すように、ハウジング22aの下面に傾斜面が形成されており、この傾斜面に、Bトリガースイッチ26iが設けられる。
【0071】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したり、単に方向を指示したりすることができる。
【0072】
1ボタン26bおよび2ボタン26cは、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン26bおよび2ボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【0073】
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Aボタンスイッチ26dは、コントローラ22をポインティングデバイスとして用いる場合に、ゲーム画面上でポインタ(指示画像)が指示するアイコンないしボタン画像の決定を指示するために使用される。たとえば、アイコンやボタン画像が決定されると、これらに対応して予め設定されている指示ないし命令(コマンド)を入力することができる。
【0074】
−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hもまた、押しボタンスイッチである。−ボタン26eは、ゲームモードを選択するために使用される。HOMEボタン26fは、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン26gは、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ26hは、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0075】
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0076】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ22で選択した位置を指定したりするために使用される。また、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションやコマンドなどを取り消すなどのために使用される。
【0077】
また、図3(E)に示すように、ハウジング22aの後端面に外部拡張コネクタ22bが設けられ、また、図3(B)に示すように、ハウジング22aの上面であり、後端面側にはインジケータ22cが設けられる。外部拡張コネクタ22bは、コントローラ22とは異なる拡張コントローラ(図示せず)を接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成される。たとえば、インジケータ22cでは、4つのうちのいずれか1つを点灯させることにより、点灯したLEDに応じて、コントローラ22の識別情報(コントローラ番号)を示すことができる。また、インジケータ22cでは、点灯させるLEDの個数によってコントローラ22の電池残量を示すこともできる。
【0078】
さらに、コントローラ22は、撮像情報演算部80(図5参照)を有しており、図3(A)に示すように、ハウジング22aの先端面には撮像情報演算部80の光入射口22dが設けられる。また、コントローラ22は、スピーカ86(図5参照)を有しており、このスピーカ86は、図3(B)に示すように、ハウジング22aの上面であり、1ボタン26bとHOMEボタン26fとの間に設けられる音抜き孔22eに対応して、ハウジング22a内部に設けられる。
【0079】
なお、図3(A)ないし図3(E)に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0080】
図4(A)は、図1に示したように、コントローラ22にジャイロユニット24を接続した状態を示す図解図である。ジャイロユニット24は、コントローラ22の後端面側(インジケータ22c側)に接続される。図4(B)に示すように、ジャイロユニット24は、コントローラ22と同様に、プラスチック成型によって形成されたハウジング24aを有している。ハウジング24aは、略立方体形状であり、コントローラ22に接続される側の面に、コントローラ22の外部拡張コネクタ22bに接合される差し込みプラグ24bが設けられる。また、図4(C)に示すように、この差し込みプラグ24が設けられる面の反対側の面には、外部拡張コネクタ24cが設けられる。詳細な説明は省略するが、ジャイロユニット24が第1コントローラ22に連結させると、ロック機構によって、その連結状態が維持される。この連結状態は、ジャイロユニット24の両側面に設けられた解除ボタン24dが押されると、解除される。したがって、第1コントローラ22にジャイロユニット24を着脱することが可能である。
【0081】
図5はコントローラ22およびジャイロユニット24の電気的な構成を示すブロック図である。この図5を参照して、コントローラ22はプロセッサ70を含み、このプロセッサ70には、内部バス(図示せず)によって、外部拡張コネクタ22b、入力手段26、メモリ72、加速度センサ74、無線モジュール76、撮像情報演算部80、LED82(インジケータ22c)、バイブレータ84、スピーカ86および電源回路88が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0082】
なお、簡単のため、図5では省略するが、上述したように、インジケータ22cは4つのLED82によって構成される。
【0083】
プロセッサ70は、コントローラ22の全体制御を司り、入力手段26、加速度センサ74および撮像情報演算部80によって入力された情報(入力情報)を、コントローラデータとして無線モジュール76およびアンテナ78を介してゲーム装置12に送信(入力)する。このとき、プロセッサ70は、メモリ72を作業領域ないしバッファ領域として用いる。また、上述した入力手段26(26a−26i)からの操作信号(操作データ)は、プロセッサ70に入力され、プロセッサ70は操作データを一旦メモリ72に記憶する。
【0084】
加速度センサ74は、図4に示したように、コントローラ22の縦方向(Y軸方向)、横方向(X軸方向)および前後方向(Z軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【0085】
加速度センサ74は、X軸,Y軸,Z軸の各々についての加速度(ax,ay,az)を検出すると、検出した加速度のデータ(加速度データ)をプロセッサ70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ70は、加速度センサ74から与えられる加速度データを、一旦メモリ72に記憶する。
【0086】
プロセッサ70は、操作データ、加速度データ、後述するマーカ座標データおよび後述する角速度データの少なくとも1つを含むコントローラデータを作成し、作成したコントローラデータを、ゲーム装置12に送信する。
【0087】
なお、図3(A)−図3(E)では省略したが、この実施例では、加速度センサ74は、ハウジング22a内部の基板上の十字キー26aが配置される付近に設けられる。
【0088】
無線モジュール76は、たとえばBluetoothの技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ78から放射する。つまり、コントローラデータは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、コントローラ22からのコントローラデータを取得することができる。そして、CPU40は、取得したコントローラデータとアプリケーションプログラム(ゲームプログラム)とに従ってアプリケーションの処理(ゲーム処理)を行う。
【0089】
さらに、上述したように、コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ80a、レンズ80b、撮像素子80cおよび画像処理回路80dによって構成される。赤外線フィルタ80aは、コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ340mおよび340nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ80aを設けることによってマーカ340mおよび340nの画像をより正確に撮像することができる。レンズ80bは、赤外線フィルタ80aを透過した赤外線を集光して撮像素子80cへ出射する。撮像素子80cは、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ80bによって集光された赤外線を撮像する。したがって、撮像素子80cは、赤外線フィルタ80aを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子80cによって撮像された画像を撮像画像と呼ぶ。撮像素子80cによって生成された画像データは、画像処理回路80dで処理される。画像処理回路80dは、撮像画像内における撮像対象(マーカ340mおよび340n)の位置を算出し、当該位置を示す各座標値を撮像データ(後述するマーカ座標データ)としてプロセッサ70に出力する。なお、画像処理回路80dにおける処理については後述する。
【0090】
また、コントローラ22には、ジャイロユニット24が接続される。図5からも分かるように、差し込みプラグ24bは、外部拡張コネクタ22bに接続される。差し込みプラグ24bは信号線によって、マイコン90に接続される。マイコン90には、ジャイロセンサ92が接続されるとともに、信号線によって外部拡張コネクタ24cが接続される。
【0091】
ジャイロセンサ92は、コントローラ22の縦方向の軸回り(Y軸回り)、横方向の軸回り(X軸回り)および前後方向の軸回り(Z軸回り)の3軸回りについての各々の角速度を検出する。ただし、図4に示したように、Y軸の回転はヨー角で表わされ、X軸の回転はピッチ角で表わされ、そして、Z軸の回転はロール角で表わされる。このジャイロセンサ74は、典型的には、圧電振動型のものを用いることができるが、他の方式のものを用いるようにしてもよい。
【0092】
たとえば、ジャイロセンサ92は、X軸,Y軸,Z軸の各々についての角速度(ωx,ωy,ωz)を検出し、検出した角速度をマイコン90に入力する。ただし、角速度は、マイコン90に入力されるときに、アナログ信号からディジタルのデータに変換される。この実施例で使用するジャイロセンサ92は、各軸についての角速度を0〜1500dps(degree percent second)の範囲で計測可能である。ただし、後述するこの実施例の仮想ゲームにおいては、ヨー角については、900dps〜1500dpsの範囲を計測範囲とし、ピッチ角とロール角とについては、0〜1500dpsの範囲を計測範囲としてある。
【0093】
マイコン90は、ジャイロセンサ92から与えられる角速度を検出し、角速度に対応する角速度データをマイコン90に内蔵されるメモリ(図示せず)に一時記憶する。そして、マイコン90は、メモリに一時記憶された角速度データをコントローラ22(プロセッサ70)に送信する。
【0094】
なお、この実施例では、マイコン90は、角速度データをメモリに一時記憶し、或る程度まとめてプロセッサ70に送信するようにしてあるが、メモリに一時記憶せずに、そのままプロセッサ70に送信するようにしてもよい。
【0095】
図6は、コントローラ22を用いてゲームプレイするときの状態を概説する図解図である。ただし、ゲームプレイのみならず、他のアプリケーションを実行したり、DVDを再生したりする場合も同様である。図6に示すように、ビデオゲームシステム10でコントローラ22を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ22を把持する。厳密に言うと、プレイヤは、コントローラ22の先端面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ340mおよび340nの方を向く状態でコントローラ22を把持する。ただし、図1からも分かるように、マーカ340mおよび340nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ22が指示する画面上の位置を変更したり、コントローラ22と各マーカ340mおよび340nとの距離を変更したりすることによってゲーム操作を行う。
【0096】
なお、図6では分かり難いが、上述したジャイロユニット24がコントローラ22に接続される場合も同様である。
【0097】
図7は、マーカ340mおよび340nと、コントローラ22との視野角を説明するための図である。図7に示すように、マーカ340mおよび340nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子80cは、コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ340mおよび340nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子80cの視野角θ2は41°である。プレイヤは、撮像素子80cが2つのマーカ340mおよび340nからの赤外光を受光することが可能な位置および向きとなるように、コントローラ22を把持する。具体的には、撮像素子80cの視野角θ2の中にマーカ340mおよび340nの少なくとも一方が存在し、かつ、マーカ340mまたは340nの少なくとも一方の視野角θ1の中にコントローラ22が存在する状態となるように、プレイヤはコントローラ22を把持する。この状態にあるとき、コントローラ22は、マーカ340mおよび340nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
【0098】
なお、コントローラ22の位置および向きがこの範囲外となった場合、コントローラ22をポインティングデバイスとして用いてゲーム操作を行うことができなくなる。以下では、上記範囲を「ポインティング操作可能範囲」と呼ぶ。
【0099】
ポインティング操作可能範囲内でコントローラ22が把持される場合、撮像情報演算部80によって各マーカ340mおよび340nの画像が撮像される。すなわち、撮像素子80cによって得られる撮像画像には、撮像対象である各マーカ340mおよび340nの画像(対象画像)が含まれる。図8は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路80dは、各マーカ340mおよび340nの撮像画像における位置を表す座標(マーカ座標)を算出する。
【0100】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路80dは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路80dは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ340mおよび340nに対応する画像340m’および340n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像である画像340m’および340n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【0101】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路80dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子80cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子80cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
【0102】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
【0103】
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路80dは、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、プロセッサ70によってコントローラデータに含まれ、ゲーム装置12に送信される。
【0104】
ゲーム装置12(CPU40)は、受信したコントローラデータからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上におけるコントローラ22の指示位置(指示座標)と、コントローラ22からマーカ340mおよび340nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置から、コントローラ22の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、コントローラ22と、マーカ340mおよび340nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12はコントローラ22と、マーカ340mおよび340nとの間の距離を把握できる。
【0105】
なお、上述したプロセッサ70への各出力は、たとえば1/200秒周期で実行される。したがって、任意の1/200秒間に、入力手段26からの操作データと、撮像情報演算部80のからの位置座標データと、加速度センサ74からの加速度データと、ジャイロセンサ92からの角速度データとが、1回ずつプロセッサ70に出力される。また、コントローラデータは、たとえば、1/200秒毎に、ゲーム装置12に送信される。無線コントローラモジュール52は、コントローラ22から所定周期(たとえば、1/200秒)で送信されるコントローラデータを受信し、当該無線コントローラモジュール52が備える図示しないバッファに蓄積する。その後、ゲーム装置12では、CPU40の指示の下、入力プロセッサ42aによって、1フレーム(画面更新単位時間:1/60秒)毎に、当該期間中に蓄積されたコントローラデータが読み出される。
【0106】
このようなゲームシステム10では、この実施例のゲームアプリケーション(仮想ゲーム)を実行することが選択(指示)されると、初期画面として、図9に示すようなタイトル画面100がモニタ34に表示される。タイトル画面100には、画面全体に表示領域102が設けられ、この表示領域102に、ゲームタイトルの文字列が表示されるとともに、図示は省略するが、たとえば、仮想ゲームの本編に登場するキャラクタないしオブジェクトの画像が表示される。
【0107】
なお、実際のタイトル画面100では、「ゲームタイトル」の文字列に代えて、仮想ゲームのタイトル名についての文字列が表示される。
【0108】
また、タイトル画面100の下端部には、表示領域102の前面に、表示領域104が設けられる。この表示領域104には、トップメニューに移行するための操作方法ないし操作する所定のキーないしボタン或いはスイッチ(以下、「所定のキー等」という)を示すメッセージが表示される。さらに、タイトル画面100の右下端部であり、表示領域104の前面に、トップメニューに移行するための操作方法ないし操作する所定のキー等を示す画像(以下、「操作説明画像」という)106が表示される。
【0109】
タイトル画面100が表示されているときに、所定のキー等(ここでは、Aボタン26dおよびBトリガースイッチ26iの両方)がオンされると、トップメニューに移行する。つまり、図10に示すような第1ゲーム選択画面150がモニタ34に表示される。第1ゲーム選択画面150は、この実施例の仮想ゲームの本編でプレイすることができる第1ゲームを選択するための画面である。たとえば、第1ゲームは、複数のミニゲーム(この実施例では、ゲームA、ゲームB、ゲームC、ゲームD、ゲームEおよびゲームF)である。ただし、これは単なる一例であり、第1ゲームの数や種類は限定されるべきでない。
【0110】
図10を参照して分かるように、第1ゲーム選択画面150の中央上部には、第1ゲームを選択するための画面であることを示す「トップメニュー」の文字列が表示される。また、この「トップメニュー」の文字列の下方に、ボタン画像152、ボタン画像154、ボタン画像156、ボタン画像158、ボタン画像160、ボタン画像162およびボタン画像164が表示される。
【0111】
ボタン画像152−162は、それぞれに対応するゲームA−Fを選択(開始)するために設けられる。したがって、プレイヤがコントローラ22を用いて、ボタン画像152−162のいずれか1つを選択(オン)すると、オンされたボタン画像(152−162)に対応するゲーム(A−F)が開始される。
【0112】
ボタン画像164は、図9に示したタイトル画面100に戻るために設けられる。したがって、ボタン画像164がオンされると、第1ゲーム選択画面150に代えてタイトル画面100がモニタ34に表示される。
【0113】
たとえば、上記の第1ゲームでは、コントローラ22から送信されるコントローラデータのうち、少なくとも角速度データを用いて、ゲーム処理が実行される。ジャイロセンサ92では、静止安定状態における出力(静止時出力)を基準に、回転角速度が正方向のときに出力電圧が高くなり、回転速度が負方向のときに出力電圧が低くなる。したがって、静止時出力に誤差が含まれていると、ジャイロセンサ92から出力される角速度データが示す角速度にも誤差が含まれてしまう。したがって、ジャイロセンサ92を安定状態にして、ジャイロセンサ92の正確な静止時出力を得ることによって、結果的に正確な角速度を得ることができる。
【0114】
ここで、ジャイロセンサ92は、X軸、Y軸およびZ軸周りの角速度データを出力するための基準値(ゼロ点)を固定値として予め有していることがあるが、現実の静止時出力と当該固定値とがずれていることがある。また、一旦、静止時出力が決定された後であっても、ジャイロセンサ92の出力が時間経過とともに変動することがあり、この場合、静止時出力も時間経過とともに変動する(ドリフト現象)。このような静止時出力の誤差を低減するために、ジャイロセンサ92の姿勢が安定しているかどうか(安定状態)を確認するようにしてある。ただし、ジャイロセンサ92の姿勢の安定とは、ジャイロセンサ92の姿勢を静止した状態にし、この状態におけるジャイロセンサ92からの出力すなわち静止時出力を得ていることを意味する。そして、安定状態とは、ジャイロセンサ92の姿勢を静止した状態が継続することにより、静止時出力を継続的に得ている状態を意味する。この実施例では、ジャイロユニット24は、コントローラ22に接続されるため、このジャイロユニット24が接続されたコントローラ22の姿勢が静止されている場合に、ジャイロセンサ92の姿勢も静止される。したがって、ジャイロセンサ92の安定状態を確認すると言うのは、コントローラ22の安定状態を確認するとも言える。
【0115】
したがって、通常、第1ゲーム(ゲームA−Fのうちのいずれかのゲーム)の開始が指示されると、ゲーム処理が開始される前に、安定状態の確認処理が実行される。安定状態の確認処理が開始されると、図11(A)に示すような安定確認画面200がモニタ34に表示される。この安定確認画面200では、上半分に表示領域202が設けられ、この表示領域202の下方に、状態確認画像204が表示される。
【0116】
表示領域202には、コントローラ22を机の上などにおいて静止させた状態(姿勢が安定された状態)にするべきことを指示するためのメッセージが表示される。図示は省略するが、コントローラ22を机に置いている状態を示す画像も表示するようにしてもよい。状態確認画像204は、コントローラ22が安定状態であるかどうかを示す画像および確認中であるか確認済みであるかを示す文字列を含む。
【0117】
たとえば、図11(A)に示すように、安定状態の確認中では、状態確認画像204において、コントローラ22を模した画像が回転するアニメーションが表示され、当該画像の下方に「確認中」の文字列が表示される。安定状態が確認されると、図11(B)に示すように、状態確認画像204において、コントローラ22を模した画像の静止画像が表示され、当該画像の下方に「OK!」の文字列が表示される。図示は省略するが、安定状態が確認されると、上記のトップメニューで選択された第1ゲームが開始される。
【0118】
なお、この実施例では、安定状態の確認処理が一度行われた後では、トップメニューに戻って、他の第1ゲームが選択されると、そのまま当該他の第1ゲームが開始される。ただし、トップメニューにおいて、第1ゲームが選択される度に、安定状態の確認処理を実行してもよいし、所定時間(たとえば、30分)が経過する度に、または、所定回数(たとえば、10回)プレイする度に、安定状態の確認処理を実行してもよい。
【0119】
ここで、実際の安定状態の確認処理について説明する。安定状態の確認処理が開始されると、コントローラ22から送信されたコントローラデータに含まれる角速度データが検出され、検出された角速度データを用いて角度データが算出される。つまり、X軸、Y軸およびZ軸の各軸周りについての角度が算出され、コントローラ22の現在の姿勢が検出される。このような検出等の処理が1フレーム毎に行われる。
【0120】
次に、コントローラ22が静止された状態であるかどうかが判断される。ここでは、現在のフレーム(現フレーム)の角度データと1つ前のフレーム(前フレーム)の角度データとの差が所定値以下であるかどうかが判断される。ただし、X軸、Y軸およびZ軸の各軸周りで判断される。また、コントローラ22が静止された状態であるかどうかを判断するようにしてあるため、所定値は0に近い値に設定される。
【0121】
現フレームの角度データと前フレームの角度データとの差が所定値以下である場合には、コントローラ22が静止された状態であると判断して、その状態のカウント数が1加算される。コントローラ22が静止された状態であるかどうかの判断が繰り返し行われ、カウント数が所定数(閾値P)以上になると、安定状態が確認されたと判定される。ただし、所定数(閾値P)は、静止時出力を得るために十分な値である。
【0122】
ただし、角速度データを取得できない場合や現フレームの角度データと前フレームの角度データとの差が所定値を超える場合すなわちコントローラ22が静止されていない状態であると判断された場合には、カウント数はリセットされる。
【0123】
また、後述するように、コントローラ22から送信されたコントローラデータに含まれる角速度データが補正され、静止時出力の値(ゼロ点オフセット値ofs)が安定するまでには或る程度の時間を要する。また、コントローラ22が静止された状態であることが判定された回数が所定数(閾値P)以上になると、安定状態が確認されるため、この確認処理も或る程度の時間を要する。
【0124】
ただし、上述した安定状態の確認処理は、タイトル画面100がモニタ34に表示されている状態においても実行されている。したがって、タイトル画面100が表示されている場合に、コントローラ22を机の上に置くなどして静止させ、安定状態の確認が行われた場合には、その後に、トップメニューで第1ゲー選択されると、安定状態の確認処理が行われずに、そのまま第1ゲームのゲーム処理が開始される。
【0125】
また、この実施例では、タイトル画面100がモニタ34に表示されている場合に、安定状態の確認が行われた後に、放置状態が所定時間(たとえば、10秒)以上継続すると、本編でプレイする第1ゲームとは異なる第2ゲームが開始される。
【0126】
ただし、この実施例では、「放置状態」とは、コントローラ22の所定のキー等(この実施例では、Aボタン26dおよびBトリガースイッチ26iの両方)が操作されていない状態を意味する。
【0127】
第2ゲームもまた、角速度データを用いてゲーム処理を実行するゲームである。この実施例では、2種類の第2ゲームが用意されている。たとえば、第2ゲームは、第1ゲームをプレイするための操作方法を知得したり、練習したりするようなゲームである。ただし、すべての第1ゲームをクリアすることにより、プレイできるようになる特別なゲームが第2ゲームとして追加されてもよい。
【0128】
図12には、1つ目の第2ゲームについての第2ゲーム画面250が示される。この第2ゲームでは、コントローラ22を万華鏡に見立てて、万華鏡の中を覗いた場合に見える模様が第2ゲーム画面250(モニタ34)に表示される。したがって、図12に示す第2ゲーム画面250では、画面全体に設定される表示領域252に、所定の模様が表示される。また、第2ゲーム画面250の下端部には、表示領域252の前面に、タイトル画面100に戻るための操作方法ないし操作する所定のキー等を示すメッセージが表示される表示領域254が設けられる。後述する表示領域304(図13参照)についても同じ。さらに、この表示領域254の前面であり、ゲーム画面250の右下端部には、タイトル画面100に戻るための操作方法ないし操作する所定のキー等を示す操作説明画像256が表示される。後述する操作説明画像306(図13参照)についても同じ。
【0129】
図示は省略するが、たとえば、万華鏡についての第2ゲームでは、プレイヤがコントローラ22をZ軸周りに回転させると、仮想の万華鏡が回転され、これに応じて、第2ゲーム画面250に表示される模様が変化される。詳細な説明は省略するが、図4(A)に示す状態において、ロール角がマイナス方向に大きくされると、コントローラ22がZ軸を中心に左方向に回転されたことが判断される。また、ロール角がプラス方向に大きくされると、コントローラ22がZ軸を中心に右方向に回転されたことが判断される。
【0130】
また、プレイヤが、コントローラ22の先端面を上方向に向けると、第2ゲーム画面250(表示領域252)の背景が明るく(白く)なり、コントローラ22の先端面を下方向に向けると、第2ゲーム画面250(表示領域252)の背景が暗くなる。詳細な説明は省略するが、図4(A)に示す状態において、ピッチ角がマイナス方向に大きくされると、コントローラ22の先端面が上方向に向けられたことが判断される。一方、ピッチ角がプラス方向に大きくされると、コントローラ22の先端面が下方向に向けられたことが判断される。
【0131】
さらに、プレイヤが、コントローラ22の先端面を左右に向けると、第2ゲーム画面250(表示領域252)の背景の色相が変化される。詳細な説明は省略するが、図4(A)に示す状態において、ヨー角がマイナス方向に大きくされると、コントローラ22の先端面が左方向に向けられたことが判断される。一方、ヨー角がプラス方向に大きくされると、コントローラ22の先端面が右方向にもけられたことが判断される。
【0132】
また、図13には、2つ目の第2ゲームについての第2ゲーム画面300が示される。この第2ゲームでは、コントローラ22をシャボン玉を作るリングに見立てて、コントローラ22を自由に動かすことにより、シャボン玉が作られ、第2ゲーム画面300(モニタ34)に表示される。したがって、図13に示す第2ゲーム画面300では、画面全体についての表示領域302にリングを模したオブジェクト(リングオブジェクト)310が表示されるとともに、作られたシャボン玉を模したオブジェクト(シャボン玉オブジェクト)312が表示される。また、第2ゲーム画面300の下端部には、表示領域302の前面に、表示領域304が設けられる。さらに、この表示領域304の前面であり、ゲーム画面300の右下端部には、操作説明画像306が表示される。
【0133】
たとえば、シャボン玉についての第2ゲームでは、プレイヤがコントローラ22を動かすと、その動きと連動して、ゲーム画面300内のリングオブジェクト310が動かされたり、向きを変えたりする。詳細な説明は省略するが、リングオブジェクト310の移動や回転は、コントローラ22から送信されたコントローラデータに含まれる角速度データに基づいて制御される。
【0134】
ゲーム画面300内のリングオブジェクト310がゆっくり動かされると、リングオブジェクト310からシャボン膜(図示せず)が長く伸びて、大きいシャボン玉が作られる。ただし、所定の大きさ(長さ)になると、シャボン膜はリングオブジェクト310から離れる。一方、ゲーム画面300内のリングオブジェクト310が早く動かされると、シャボン膜がすぐにリングオブジェクト310から離れて、小さいシャボン玉が作られる。
【0135】
シャボン玉が作られると、ゲーム画面300の奥に移動するため、シャボン玉オブジェクト312同士が干渉(衝突)することはない。また、一度作られたシャボン玉オブジェクト312は、所定時間(たとえば、3〜5秒)が経過すると割れたり、上昇して画面外に移動されることにより消去されたりする。
【0136】
万華鏡やシャボン玉についての第2ゲームは、所定時間(たとえば、90秒)だけプレイすることができる。たとえば、所定時間を経過し、第2ゲームのゲーム処理が終了すると、モニタ34の画面がブラックアウトされた後に、タイトル画面100に戻る。
【0137】
ただし、第2ゲームのプレイ中に、所定のキー等(この実施例では、Aボタン26dおよびBトリガースイッチ26iの両方)が操作されると、第2ゲームが途中で終了され、モニタ34の画面がブラックアウトされた後に、タイトル画面100に戻る。
【0138】
図14は、図2に示したメインメモリ(42eまたは46)のメモリマップの一例を示す。図14に示すように、メインメモリ(42eまたは46)は、プログラム記憶領域500およびデータ記憶領域502を含む。プログラム記憶領域500は、ゲームプログラムを記憶し、このゲームプログラムは、ゲームメイン処理プログラム500a、画像生成プログラム500b、画像表示プログラム500c、角速度検出プログラム500d、安定確認プログラム500e、安定指示プログラム500f、第1ゲームプログラム500gおよび第2ゲームプログラム500hなどによって構成される。
【0139】
ゲームメイン処理プログラム500aは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム500bは、後述する画像データ502aを用いて、各種の画面(100、150、200、250、300など)をモニタ34に表示するためのゲーム画像データを生成するためのプログラムである。画像表示プログラム500cは、画像生成プログラム500bによって生成されたゲーム画像データをモニタ34に表示(出力)するためのプログラムである。
【0140】
角速度検出プログラム500dは、コントローラ22から送信されたコントローラデータから角速度データを検出(取得)するためのプログラムである。ただし、角速度検出プログラム500dは、角速度を補正するためのプログラムを含む。また、角速度検出プログラム500dは、検出した角速度データに対応する角速度を累積した角度の算出も行う。安定確認プログラム500eは、コントローラ22の安定状態を確認するためのプログラムである。安定指示プログラム500fは、コントローラ22の安定状態を確認する旨の指示を提示するためのプログラムである。
【0141】
第1ゲームプログラム500gは、第1ゲームのゲームプログラムであって、ゲームA−ゲームFのそれぞれについて記憶される。第2ゲームプログラム500hは、第2ゲームのゲームプログラムであって、2種類の第2ゲームのそれぞれについて記憶される。
【0142】
図示は省略するが、プログラム記憶領域500には、音出力プログラムやバックアッププログラムなども記憶される。音出力プログラムは、サウンドデータや音波形データを用いて、プレイヤオブジェクトやノンプレイヤオブジェクトについての音声(擬制音)、効果音および音楽(BGM)などのゲームに必要な音を生成および出力するためのプログラムである。バックアッププログラムは、プレイヤの指示や所定のゲームイベントに従って、ゲームデータ(途中データ、結果データ)をフラッシュメモリ44やメモリカードに保存(セーブ)するためのプログラムである。
【0143】
データ記憶領域502には、画像データ502a、角速度データ502b、角度データ502cおよび過去角度データ502dが記憶される。また、データ記憶領域502には、タイマ502eおよび安定確認フラグ502fが設けられる。
【0144】
画像データ502aは、ポリゴンデータ、テクスチャデータおよびオブジェクトについてのデータなどである。角速度データ502bは、コントローラ22から送信されるコントローラデータに含まれる角速度のデータである。上述したように、コントローラデータに含まれる角速度データは、無線コントローラモジュール52に設けられるバッファ(図示せず)に蓄積され、このバッファに蓄積された角速度データが1フレーム毎に読み出され、メインメモリ(42e、46)の角速度データ502bが更新される。つまり、角速度データ502bは、現フレームにおける、コントローラ22に対して設定されたX軸、Y軸、Z軸の各軸周りの角速度のデータである。
【0145】
ただし、角速度データ502bは、メインメモリ(42e、46)に記憶される前に、所定の補正が行われる。ここで、角速度データ502bの補正処理ないし補正方法について説明する。
【0146】
なお、この角速度データの補正処理ないし補正方法については、本件出願人が先に出願し既に出願公開されている特開2010−19751号に詳細に開示されるため、ここでは、簡単に説明することにする。
【0147】
まず、ジャイロセンサ92から出力された角速度データが示す角速度vは、数1に従って一次補正される。ただし、角速度vは、3軸のうちのいずれか1軸の角速度である。ここでは、1軸についての角速度vの補正処理(補正方法)について説明するが、他の軸についても同様である。また、数1において(数2、数3も同じ)、“=”は代入を意味する。
【0148】
[数1]
v=v+(sum/ct−v)×a
ここで、ctは、現フレームの角速度vから遡って、角速度が連続して安定範囲(下限)d1および安定範囲(上限)d2で設定された安定範囲内に収まると判断された角速度v(角速度vのデータ)の数(連続個数ct)である。ただし、角速度vのデータは、データ記憶領域502に設けられたデータバッファ(図示せず)に、時系列に従う順序で1フレーム毎に記憶される。また、sumは、上記の安定範囲内に収まると判断された角速度の値の合計値である。ただし、検索する角速度の数の最大数(検索上限数)は予め設定されている。また、aは、静止具合値を示す。静止具合値aは、ジャイロセンサ92がどの程度安定している状態であるかを示す指標であり、0〜1の間で設定される。この静止具合値aは、ジャイロセンサ92の動きの変化が少ない(安定している)期間が長い程、1に近づく。そして、静止具合値aは、現フレームから遡って連続して検索上限数(たとえば、400)分の角速度データの値がすべて上記の安定範囲内に入っていたときに、最大値(1)になるようにして正規化される。ただし、静止具合値aをk乗する(k≧1)(a)ことにより、コントローラ22(ジャイロセンサ92)の変動の少ない状態が長く続いたとき、すなわち連続個数ctが多い(大きい)ときと、少ない(小さい)ときとの差を大きくするようにしてもよい。つまり、静止具合値aをそのまま使用すると連続個数ctに比例するだけであるが、べき乗(たとえば、k乗)することにより、連続個数ctに対して累乗的に静止具合値aが変化するように設定することができる。
【0149】
そして、上記の一次補正後の角速度vからゼロ点オフセット値(静止時出力値)ofsを減算することでオフセット補正(キャリブレーション)する。ここで、ゼロ点オフセット値ofsは、ジャイロセンサ92が静止時に示すと想定される角速度データの値であって、その初期値は予め定められたデバイス固有値に設定されているが、上記の一次補正後の角速度vに応じて、順次補正されて再設定(更新)される。具体的には、数2に従って、ゼロ点オフセット値ofsは順次補正されて再設定される。
【0150】
[数2]
ofs=ofs+(v−ofs)×a×C
ただし、Cは、定数であり、たとえば、0.01に設定される。定数Cを小さい値に設定することにより、短期間で角速度vがコントローラ22の静止された状態におけるゼロ点に補正されることを防止してある。また、静止出力値のずれの原因となるドリフト現象は変化が激しい現象ではなく、すばやく反応する必要がないため、定数Cを小さい値にすることによって、高精度なゼロ点オフセット値ofsを得ることができる。
【0151】
なお、ジャイロユニット24を接続したコントローラ22を用いるゲームの種類等に応じて、定数Cの値を変化させても構わない。たとえば、静止具合値aに定数Cを乗算した値が大きい程、すなわちコントローラ22(ジャイロセンサ92)の動きの変化が少ない安定した状態となった期間が長い程、ゼロ点オフセット値ofsが上記の一次補正された角速度vに近い値に補正される。したがって、コントローラ22(ジャイロセンサ92)が静止された状態であれば、ゼロ点オフセット値ofsが上記の一次補正された角速度vに収束する割合が大きくなる。つまり、ジャイロセンサ92の静止時のように角速度に変化が少ない場合には、ゼロ点が平均値に近づいて行くように、ゼロ点の補正が行われる。すなわち、コントローラ22が少なくとも一度静止すれば、補正によって、それ以降の角速度の誤差が除かれることになる。したがって、この実施例では、安定状態の確認を予め実行することによって、ジャイロセンサ92の誤差が補正済みの状態で第1ゲームや第2ゲームを行うことができるのである。
【0152】
そして、上記の一次補正後の角速度vは、ゼロ点オフセット値ofsを用いてオフセット補正される。具体的には、一次補正後の角速度vは、数3に従ってオフセット補正される。
【0153】
[数3]
v=v−ofs
これによって、ジャイロセンサ92から出力された角速度データが示す角速度vは、ゼロ点(静止時出力の値)を考慮した上で再度補正される。そして、上記のオフセット補正後の角速度vを用いて、角速度データ502bが適宜更新されることになる。
【0154】
角度データ502cは、角速度データ502bに対応する角速度を累積することより得られた各軸周りについての角度(姿勢)についてのデータである。過去角度データ502dは、角度の変化量を算出するために用いられ、過去(1フレーム前)に算出された各軸周りについての角度(姿勢)を示すデータである。
【0155】
タイマ502fは、コントローラ22が放置されている状態の時間(たとえば、10秒)や第2ゲームのプレイ可能な時間(たとえば、90秒)をカウントするためのタイマである。ただし、タイマは、各用途に応じて個別に設けるようにしてもよい。
【0156】
安定確認フラグ502fは、安定状態が確認されたかどうかを判定するためのフラグであり、1ビットのレジスタによって構成される。安定確認フラグ502fがオンされると、レジスタにデータ値「1」が記憶される。一方、安定確認フラグ502fがオフされると、レジスタにデータ値「0」が記憶される。また、対応するコントローラ22の安定状態が確認されたときに、安定確認フラグ502fはオンされ、対応するコントローラ22の安定状態が確認されていないときに、安定確認フラグ502fはオフされる。
【0157】
なお、図示は省略するが、データ記憶領域502には、ゲーム処理に必要な、他のデータが記憶されたり、他のタイマ(カウンタ)や他のフラグが設けられたりする。
【0158】
具体的には、図2に示したCPU40が図15および図16に示すゲーム全体処理を実行する。図15に示すように、CPU40は、ゲーム全体処理を開始すると、ステップS1で、図9に示したようなタイトル画面100をモニタ34に表示する。次のステップS3では、安定確認フラグ502fがオンであるかどうかを判断する。ただし、ゲーム全体処理が開始された当初では、安定確認フラグ502fはオフである。
【0159】
ステップS3で“YES”であれば、つまり安定確認フラグ502fがオンであれば、そのままステップS7に進む。一方、ステップS3で“NO”であれば、つまり安定確認フラグ502fがオフであれば、ステップS5で、安定確認処理(図18参照)を開始して、ステップS7に進む。したがって、安定確認フラグ502fがオフである場合には、タイトル画面100が表示されている場合にも、安定確認処理が実行される。ただし、安定確認処理は、ゲーム全体処理とは別のタスクで並列的に実行される。
【0160】
ステップS7では、Aボタン26dおよびBトリガースイッチ26iの両方がオンされたかどうかを判断する。ここでは、CPU40は、コントローラデータに含まれる操作データを検出して、Aボタン26dおよびBトリガースイッチ26iが同時に操作されたかどうかを判断する。ステップS7で“YES”であれば、つまりAボタン26dおよびBトリガースイッチ26iの両方がオンされれば、図16に示すステップS15に進む。一方、ステップS7で“NO”であれば、つまりAボタン26dおよびBトリガースイッチ26iの少なくとも一方がオンされていなければ、ステップS9で、安定確認フラグ502fがオンであるかどうかを判断する。
【0161】
ステップS9で“NO”であれば、そのままステップS3に戻る。一方、ステップS9で“YES”であれば、ステップS11で、放置状態が10秒以上継続したかどうかを判断する。つまり、CPU40は、Aボタン26dおよびBトリガースイッチ26iの少なくとも一方がオンされない状態が10秒以上継続したかどうかを判断する。
【0162】
図示は省略するが、安定確認フラグ502fがオフからオンに変化したときに、CPU40の指示に従ってタイマ502eのカウントが開始される。
【0163】
ステップS11で“NO”であれば、つまり放置状態でない場合や放置状態が10秒以上継続していない場合には、そのままステップS7に戻る。一方、ステップS11で“YES”であれば、つまり放置状態が10秒以上継続すれば、ステップS13で、後述する第2ゲーム処理(図16参照)を実行し、ステップS15で、画面をブラックアウトして、ステップS1に戻る。図示は省略するが、このとき、タイマ502eは、リセットおよびスタートされる。
【0164】
図16に示すように、ステップS17では、図10に示したような第1ゲーム選択画面150すなわちトップメニューをモニタ34に表示する。続くステップS19では、第1ゲームが選択されたかどうかを判断する。つまり、CPU40は、ボタン画像152−162のいずれかがオンされたかどうかを判断する。ステップS19で“NO”であれば、つまり第1ゲームが選択されていなければ、ステップS21で、タイトルに戻るかどうかを判断する。つまり、CPU40は、ボタン画像164がオンされたかどうかを判断する。ステップS21で“NO”であれば、つまりタイトルに戻らない場合には、そのままステップS19に戻る。一方、ステップS21で“YES”であれば、つまりタイトルに戻る場合には、図15に示したステップS1に戻る。ただし、このとき、安定確認フラグ502fがオンされている場合には、タイマ502eがリセットおよびスタートされる。
【0165】
また、ステップS19で“YES”であれば、つまり第1ゲームが選択されれば、ステップS23で、安定確認フラグ502fがオンであるかどうかを判断する。ステップS23で“YES”であれば、そのままステップS35に進む。一方、ステップS23で“NO”であれば、ステップS25で、図11(A)に示したような安定確認画面200をモニタ34に表示し、ステップS27で、安定確認処理を開始する。さらに、ステップS29では、コントローラ22の画像を回転させる。つまり、図11(A)に示したように、安定確認画面200の状態確認画像204において、コントローラ22を模した画像が回転する様子のアニメーションが表示される。
【0166】
続くステップS31では、安定確認フラグ502fがオンであるかどうかを判断する。ステップS31で“NO”であれば、そのままステップS29に戻る。一方、ステップS31で“YES”であれば、ステップS33で、コントローラ22の画像を停止させるとともに、確認終了を表示して、ステップS35に進む。する。つまり、図11(B)に示したように、安定確認画面200の状態確認画像204において、コントローラ22を模した画像の静止画像が表示され、当該画像の下方に「OK!」の文字列が表示される。
【0167】
ステップS35では、選択された第1ゲームのゲーム処理を開始する。図示等は省略するが、第1ゲームのゲーム処理は、ゲーム全体処理とは別のタスクで並列的に実行される。また、第1ゲームは、コントローラ22から送信されたコントローラデータのうち、少なくとも角速度データを使用して、ゲーム処理を実行するゲームである。
【0168】
そして、ステップS29では、第1ゲームの終了かどうかを判断する。ステップS29で“NO”であれば、つまり第1ゲームの終了でなければ、そのままステップS29に戻る。一方、ステップS29で“YES”であれば、つまり第1ゲームの終了であれば、ステップS15に戻る。
【0169】
図17は、図15に示したステップS13の第2ゲーム処理のフロー図である。ここでは、簡単のため、上述した万華鏡の第2ゲームおよびシャボン玉の第2ゲームの両方が当てはまるように記載してあるが、実際には、各第2ゲームでは別の処理が実行される。
図17に示すように、CPU40は、第2ゲーム処理を開始すると、ステップS51で、タイマ502eをスタートする。つまり、第2ゲームのプレイ時間のカウントが開始される。ただし、この実施例では、2種類の第2ゲームが用意されており、前回プレイしていない第2ゲームについてのゲーム処理が開始される。
【0170】
次のステップS53では、第2ゲームのゲーム画面(250または300)をモニタ34に表示する。続くステップS55では、角速度を取得する。つまり、データ記憶領域502に記憶された角速度データ502bが取得される。次のステップS57では、角速度に基づいた処理が実行される。このステップS57では、万華鏡の第2ゲームおよびシャボン玉の第2ゲームのそれぞれで、上述したように異なる処理が実行される。詳細については、上述のとおりである。
【0171】
続いて、ステップS59で、所定時間を経過したかどうかを判断する。ここでは、CPU40は、タイマ502eのカウント値が90秒になったかどうかを判断する。ステップS59で“YES”であれば、つまり所定時間を経過すれば、そのまま第2ゲーム処理を終了して、ゲーム全体処理にリターンする。一方、ステップS59で“NO”であれば、つまり所定時間を経過していなければ、ステップS61で、Aボタン26dおよびBトリガースイッチ26iの両方がオンされたかどうかを判断する。
【0172】
ステップS61で“NO”であれば、そのままステップS55に戻って、第2ゲームを続行する。一方、ステップS61で“YES”であれば、第2ゲーム処理を終了して、ゲーム全体処理にリターンする。つまり、第2ゲームの途中であっても、Aボタン26dおよびBトリガースイッチ26iの両方がオンされれば、ゲームタイトル(タイトル画面100)に戻る。
【0173】
なお、この実施例では、所定時間が経過した場合や所定のキー等が操作された場合に、第2ゲームを終了するようにしてあるが、これに限定される必要はない。たとえば、第2ゲームにゲームクリアの条件が設定されている場合には、所定時間が経過する前に、当該ゲームクリアの条件が満たされると、第2ゲームを終了するようにしてもよい。
【0174】
図18は、CPU40の安定確認処理を示すフロー図である。図18に示すように、CPU40は、安定確認処理を開始すると、ステップS81で、角速度データおよび角度データを取得する。ただし、CPU40は、角速度データに対応する角速度を累積することにより角度を取得する。続くステップS83では、角速度データの取得が可能かどうかを判断する。つまり、ステップS81において、角速度データを取得できたかどうかを判断する。
【0175】
ステップS83で“NO”であれば、つまり角速度データを取得できなければ、ステップS85で、安定確認フラグ502fをオフし、ステップS87で、変数countに0を設定して(count=0)、ステップS81に戻る。ただし、countは、コントローラ22の角度(姿勢)が変化していない(コントローラ22が静止された状態である)と判断された回数についての変数である。
【0176】
一方、ステップS83で“YES”であれば、つまり角速度データを取得できれば、ステップS89で、各軸周りの角度変化量を算出する。つまり、CPU40は、角度データ502cが示す現フレームのX軸、Y軸、Z軸の各軸周りの角度から、過去角度データ502dが示す前フレームのX軸、Y軸、Z軸の各軸周りの角度を、軸毎に減算することにより、軸毎の角度の変化量を算出する。つまり、コントローラ22の姿勢の変化量が求められる。
【0177】
次のステップS91では、各軸周りの角度変化量がすべて所定値内であるかどうかを判断する。つまり、CPU40は、コントローラ22が静止されている状態であるかどうかを判断するのである。ステップS91で“NO”であれば、つまりいずれか1つの軸周りの角度変化量でも所定値を超えていれば、ステップS93で、安定確認フラグ502fをオフし、ステップS95で、変数countに0を設定して、ステップS81に戻る。
【0178】
一方、ステップS91で“YES”であれば、つまり各軸周りの角度変化量がすべて所定値内であれば、ステップS97で、変数countを1加算して(count=count+1)、ステップS99で、変数countが閾値P以上であるかどうかを判断する。ステップS99で“NO”であれば、つまり変数countが閾値P未満であれば、そのままステップS81に戻る。一方、ステップS99で“YES”であれば、つまり変数countが閾値P以上であれば、ステップS101で、安定確認フラグ502fをオンして、安定確認処理を終了する。
【0179】
この実施例によれば、タイトル画面が表示されている場合に、安定状態が確認され、その後、コントローラを放置している状態が所定時間以上継続したときに、本編でプレイする第1ゲームとは異なる第2ゲームを開始するので、ジャイロセンサを備えるコントローラの安定状態が確認されるのを待つと、第2ゲームをプレイすることができる。したがって、待つことに意味を与えることができる。また、待ち過ぎた場合にも、第2ゲームをプレイすることにより、楽しむことができる。
【0180】
また、この実施例によれば、第2ゲームをプレイするために、コントローラを机の上に置くなどして待っている間に、コントローラの安定状態が確認されるので、第1ゲームをプレイするために必要なコントローラの安定状態の確認処理を自然に行うことができる。このため、速やかに第1ゲームを開始することができる。
【0181】
なお、この実施例では、1つのコントローラを用いる場合についてのみ説明したが、複数のコントローラを用いるようにしてもよい。かかる場合には、安定確認処理は、すべてのコントローラについて実行され、すべてのコントローラについて安定状態が確認された場合に、安定確認フラグがオンされる。また、第1ゲームが選択されたときには、すべてのコントローラについて安定状態が確認されている場合に、そのまま第1ゲームが開始される。したがって、1つでも安定状態が確認されていないコントローラがある場合には、第1ゲームの開始に先立って、少なくとも当該コントローラについての安定確認の処理が実行される。
【0182】
また、この実施例では、コントローラにジャイロユニットを接続するようにしたが、ジャイロユニットは内蔵してもよい。または、ジャイロセンサのみをコントローラに内蔵してもよい。
【0183】
さらに、この実施例では、タイトル画面が表示されている場合に、所定のキー等を操作すると、トップメニューを表示して、第1ゲームを選択するようにしたが、第1ゲームを選択せずに、すぐに第1ゲームを開始するようにしてもよい。
【0184】
さらにまた、この実施例では、角速度データを補正してデータ記憶領域に記憶するようにしたが、この安定状態の確認処理では、安定かどうかを判断するだけなので、角速度データを補正する必要はない。つまり、無線コントローラモジュールに設けられたバッファに記憶された角速度データをそのまま使用することができる。
【0185】
また、この発明は、ゲーム全体処理、第1ゲーム処理、第2ゲーム処理および安定確認処理の各処理が複数のコンピュータ等によって分散処理されるようなゲームシステムにも適用可能である。
【符号の説明】
【0186】
10 …ゲームシステム
12 …ゲーム装置
18 …光ディスク
22 …コントローラ
24 …ジャイロユニット
26,100 …入力手段
34 …モニタ
34a …スピーカ
40 …CPU
42 …システムLSI
42a …入出力プロセッサ
42b …GPU
42c …DSP
42d …VRAM
42e …内部メインメモリ
44 …フラッシュメモリ
46 …外部メインメモリ
48 …ROM/RTC
50 …無線通信モジュール
52 …無線コントローラモジュール
54 …ディスクドライブ
56 …AV IC
58 …AVコネクタ
60 …拡張コネクタ
62 …メモリカード用コネクタ
70 …プロセッサ
74,102 …加速度センサ
80 …画像情報演算部
80c …撮像素子
80d …画像処理回路
90 …マイコン
92 …ジャイロセンサ

【特許請求の範囲】
【請求項1】
ジャイロセンサを備えた操作装置に対する操作に基づいて、少なくとも角速度に基づいたゲーム処理を行うゲーム装置であって、
第1ゲーム開始前の初期画面を提示する初期画面提示部と、
前記初期画面を提示しているとき、前記操作装置の姿勢が安定しているかどうかを判定する判定部と、
前記初期画面を提示しているときに、所定の操作に応じて、第1ゲームを開始する第1ゲーム開始部と、
前記操作装置から取得される角速度に基づいて前記第1ゲームを行う第1ゲーム処理部と、
前記判定部によって前記操作装置の姿勢が安定していることが判定された後、前記所定の操作が行われずに所定時間が経過したとき、前記第1ゲームとは異なる第2ゲームを開始する第2ゲーム開始部と、
前記操作装置から取得される角速度に基づいて前記第2ゲームを行う第2ゲーム処理部を備える、ゲーム装置。
【請求項2】
前記操作装置は少なくとも1つのキーを備え、
前記第1ゲーム開始部は、前記キーが操作されたことに応じて前記第1ゲームを開始する、請求項1記載のゲーム装置。
【請求項3】
前記第2ゲーム処理部は、前記第2ゲームが開始されてから所定時間経過後に当該第2ゲームを終了し、
前記初期画面提示部は、前記第2ゲームの終了後さらに前記初期画面を提示する、請求項1または2記載のゲーム装置。
【請求項4】
前記第1ゲーム開始部によって前記第1ゲームが開始されるとき、前記判定部によって前記操作装置の姿勢が安定していないことが判定されると、当該操作装置の姿勢を安定させるための指示を提示する指示提示部をさらに備え、
前記第1ゲーム開始部は、前記判定部によって前記操作装置の姿勢が安定したことが判定された後に、前記第1ゲームを開始する、請求項1ないし3のいずれかに記載のゲーム装置。
【請求項5】
ジャイロセンサを備えた操作装置に対する操作に基づいて、少なくとも角速度に基づいたゲーム処理を行うゲームプログラムであって、
コンピュータを、
第1ゲーム開始前の初期画面を提示する初期画面提示部と、
前記初期画面を提示しているとき、前記操作装置の姿勢が安定しているかどうかを判定する判定部と、
前記初期画面を提示しているときに、所定の操作に応じて、第1ゲームを開始する第1ゲーム開始部と、
前記操作装置から取得される角速度に基づいて前記第1ゲームを行う第1ゲーム処理部と、
前記判定部によって前記操作装置の姿勢が安定していることが判定された後、前記所定の操作が行われずに所定時間が経過したとき、前記第1ゲームとは異なる第2ゲームを開始する第2ゲーム開始部と、
前記操作装置から取得される角速度に基づいて前記第2ゲームを行う第2ゲーム処理部として機能させる、ゲームプログラム。
【請求項6】
前記操作装置は少なくとも1つのキーを備え、
前記第1ゲーム開始部は、前記キーが操作されたことに応じて前記第1ゲームを開始する、請求項5記載のゲームプログラム。
【請求項7】
前記第2ゲーム処理部は、前記第2ゲームが開始されてから所定時間経過後に当該第2ゲームを終了し、
前記初期画面提示部は、前記第2ゲームの終了後さらに前記初期画面を提示する、請求項5または6記載のゲームプログラム。
【請求項8】
前記第1ゲーム開始部によって前記第1ゲームが開始されるとき、前記判定部によって前記操作装置の姿勢が安定していないことが判定されると、当該操作装置の姿勢を安定させるための指示を提示する指示提示部として前記コンピュータをさらに機能させ、
前記第1ゲーム開始部は、前記判定部によって前記操作装置の姿勢が安定したことが判定された後に、前記第1ゲームを開始する、請求項5ないし7のいずれかに記載のゲーム装置。
【請求項9】
ジャイロセンサを備えた操作装置に対する操作に基づいて、少なくとも角速度に基づいたゲーム処理を行うゲーム装置のゲーム制御方法であって、
(a)第1ゲーム開始前の初期画面を提示し、
(b)前記初期画面を提示しているとき、前記操作装置の姿勢が安定しているかどうかを判定し、
(c)前記初期画面を提示しているときに、所定の操作に応じて、第1ゲームを開始し、
(d)前記操作装置から取得される角速度に基づいて前記第1ゲームを行い、
(e)前記ステップ(b)によって前記操作装置の姿勢が安定していることが判定された後、前記所定の操作が行われずに所定時間が経過したとき、前記第1ゲームとは異なる第2ゲームを開始し、そして
(f)前記操作装置から取得される角速度に基づいて前記第2ゲームを行う、ゲーム制御方法。
【請求項10】
前記操作装置は少なくとも1つのキーを備え、
前記ステップ(c)は、前記キーが操作されたことに応じて前記第1ゲームを開始する、請求項9記載のゲーム制御方法。
【請求項11】
前記ステップ(e)は、前記第2ゲームが開始されてから所定時間経過後に当該第2ゲームを終了し、
前記ステップ(a)は、前記第2ゲームの終了後さらに前記初期画面を提示する、請求項9または10記載のゲーム制御方法。
【請求項12】
(g)前記ステップ(c)によって前記第1ゲームが開始されるとき、前記ステップ(b)によって前記操作装置の姿勢が安定していないことが判定されると、当該操作装置の姿勢を安定させるための指示を提示し、
前記ステップ(c)は、前記ステップ(b)によって前記操作装置の姿勢が安定したことが判定された後に、前記第1ゲームを開始する、請求項9ないし11のいずれかに記載のゲーム制御方法。
【請求項13】
ジャイロセンサを備えた操作装置に対する操作に基づいて、少なくとも角速度に基づいたゲーム処理を行うゲームシステムであって、
第1ゲーム開始前の初期画面を提示する初期画面提示部と、
前記初期画面を提示しているとき、前記操作装置の姿勢が安定しているかどうかを判定する判定部と、
前記初期画面を提示しているときに、所定の操作に応じて、第1ゲームを開始する第1ゲーム開始部と、
前記操作装置から取得される角速度に基づいて前記第1ゲームを行う第1ゲーム処理部と、
前記判定部によって前記操作装置の姿勢が安定していることが判定された後、前記所定の操作が行われずに所定時間が経過したとき、前記第1ゲームとは異なる第2ゲームを開始する第2ゲーム開始部と、
前記操作装置から取得される角速度に基づいて前記第2ゲームを行う第2ゲーム処理部を備える、ゲームシステム。
【請求項14】
前記操作装置は少なくとも1つのキーを備え、
前記第1ゲーム開始部は、前記キーが操作されたことに応じて前記第1ゲームを開始する、請求項13記載のゲームシステム。
【請求項15】
前記第2ゲーム処理部は、前記第2ゲームが開始されてから所定時間経過後に当該第2ゲームを終了し、
前記初期画面提示部は、前記第2ゲームの終了後さらに前記初期画面を提示する、請求項13または14記載のゲームシステム。
【請求項16】
前記第1ゲーム開始部によって前記第1ゲームが開始されるとき、前記判定部によって前記操作装置の姿勢が安定していないことが判定されると、当該操作装置の姿勢を安定させるための指示を提示する指示提示部をさらに備え、
前記第1ゲーム開始部は、前記判定部によって前記操作装置の姿勢が安定したことが判定された後に、前記第1ゲームを開始する、請求項13ないし15のいずれかに記載のゲームシステム。

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