図1を参照して、本発明の一実施形態に係る呼吸指示プログラムを実行する装置について説明する。以下、説明を具体的にするために、当該装置の一例である据置型のゲーム装置本体5を含むゲームシステムを用いて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の一例を示す外観図であり、図2はゲーム装置本体5の一例を示すブロック図である。以下、当該ゲームシステム1について説明する。
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置3から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、上記呼吸指示プログラムを記録した光ディスク4と、当該光ディスク4の呼吸指示プログラムを実行して呼吸指示画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、モニタ2に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
ゲーム装置本体5は、無線コントローラモジュール19(図2参照)を内蔵する。無線コントローラモジュール19は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。
ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ17(図2参照)が搭載される。ゲーム装置本体5は、光ディスク4に記憶された呼吸指示プログラムやゲームプログラム等を実行することによって、その結果を呼吸指示画像やゲーム画像としてモニタ2に表示する。また、上記呼吸指示プログラムやゲームプログラムは、光ディスク4に限らず、フラッシュメモリ17に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体5は、フラッシュメモリ17に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のユーザは、モニタ2に表示された呼吸指示画像を見ながらユーザ自身の呼吸動作が促され、モニタ2に表示されたゲーム画像を見ながらコントローラ7を操作することによって、ゲーム進行を楽しむことができる。
コントローラ7は、無線コントローラモジュール19を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報および生体信号等の送信データを無線送信する。コントローラ7は、コアユニット70およびバイタルセンサ76を備えており、コアユニット70およびバイタルセンサ76が屈曲自在な接続ケーブル79を介して互いに接続されて構成されている。コアユニット70は、主にモニタ2の表示画面に表示されるオブジェクト等を操作するための操作手段である。バイタルセンサ76は、ユーザの身体(例えば、指)に装着されてユーザの生体信号を取得し、接続ケーブル79を介してコアユニット70へ生体信号を送る。コアユニット70は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)とが設けられている。また、後述により明らかとなるが、コアユニット70は、当該コアユニット70から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7(例えば、コアユニット70)は、ゲーム装置本体5の無線コントローラモジュール19から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
なお、本実施例では、コアユニット70とバイタルセンサ76とを屈曲自在な接続ケーブル79で接続したが、バイタルセンサ76に無線ユニットを搭載することで、接続ケーブル79をなくすこともできる。例えば、無線ユニットとしてBluetoothユニットをバイタルセンサ76に搭載することで、バイタルセンサ76からコアユニット70やゲーム装置本体5へ生体信号を送信することが可能になる。また、コアユニット70にバイタルセンサ76を固定して設けることによって、コアユニット70とバイタルセンサ76とを一体構成してもかまわない。この場合、ユーザは、コアユニット70一体でバイタルセンサ76を扱うことができる。
次に、図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等を有する。
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に読み出したデータを書き込む。
また、システムLSI11には、入出力プロセッサ31、GPU(Graphics Processor Unit)32、DSP(Digital Signal Processor)33、VRAM(Video RAM)34、および内部メインメモリ35が設けられる。図示は省略するが、これらの構成要素31〜35は、内部バスによって互いに接続される。
GPU32は、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)にしたがってって画像を生成する。VRAM34は、GPU32がグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU32は、VRAM34に記憶されたデータを用いて画像データを作成する。
DSP33は、オーディオプロセッサとして機能し、内部メインメモリ35や外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、AVコネクタ16を介して、読み出した画像データをモニタ2に出力するとともに、読み出した音声データをモニタ2に内蔵されるスピーカ2aに出力する。これによって、画像がモニタ2に表示されるとともに音がスピーカ2aから出力される。
入出力プロセッサ(I/Oプロセッサ)31は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ31は、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、および外部メモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
入出力プロセッサ31は、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ31は、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、無線通信モジュール18およびアンテナ22を介して当該データをネットワークに送信する。また、入出力プロセッサ31は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22、および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、呼吸指示プログラムおよびゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出して呼吸指示プログラムおよびゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置本体5と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体5を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
また、入出力プロセッサ31は、アンテナ23および無線コントローラモジュール19を介して、コントローラ7から送信される操作データ等を受信し、内部メインメモリ35または外部メインメモリ12のバッファ領域に記憶(一時記憶)する。なお、内部メインメモリ35には、外部メインメモリ12と同様に、光ディスク4から読み出された呼吸指示プログラムおよびゲームプログラムや、フラッシュメモリ17から読み出された呼吸指示プログラムおよびゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、CPU10のワーク領域やバッファ領域として用いられてもかまわない。
さらに、入出力プロセッサ31には、拡張コネクタ20および外部メモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ31は、拡張コネクタ20や外部メモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
また、ゲーム装置本体5(例えば、前部主面)には、当該ゲーム装置本体5の電源ボタン24、ゲーム処理のリセットボタン25、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトボタン26等が設けられている。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置本体5の各構成要素に対して、図示しないACアダプタを介して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体5の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
図3および図4を参照して、コアユニット70について説明する。なお、図3は、コアユニット70の上面後方から見た一例を示す斜視図である。図4は、コアユニット70を下面前方から見た一例を示す斜視図である。
図3および図4において、コアユニット70は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。ユーザが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばユーザが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
なお、十字キー72aは、上述したユーザの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、ユーザによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、十字キー72aの代わりに設けてもかまわない。
ハウジング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の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、ユーザが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コアユニット70は、他のコントローラと区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コアユニット70に現在設定されている上記コントローラ種別をユーザに通知するために用いられる。具体的には、無線コントローラモジュール19からコアユニット70へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5に示すスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、ユーザがコアユニット70の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該ユーザの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コアユニット70が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコアユニット70の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
次に、図5および図6を参照して、コアユニット70の内部構造について説明する。なお、図5は、コアユニット70の上筐体(ハウジング71の一部)を外した状態を後面側から見た一例を示す斜視図である。図6は、コアユニット70の下筐体(ハウジング71の一部)を外した状態を前面側から見た一例を示す斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。また、無線モジュール753(図7参照)およびアンテナ754によって、コアユニット70がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コアユニット70の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコアユニット70の動きを良好な感度でゲーム装置本体5等が判定することができる。
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コアユニット70の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコアユニット70に振動が発生するので、それを把持しているユーザの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、ユーザが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成の一例を示すブロック図である。
図7において、コアユニット70は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。また、バイタルセンサ76は、接続ケーブル79とコネクタ791および73とを介して、マイコン751と接続される。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コアユニット70の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コアユニット70のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
撮像情報演算部74から出力される処理結果データは、コアユニット70で指し示す位置等を示す操作データとして用いることもできる。例えば、ユーザは、コアユニット70の前面(撮像情報演算部74が撮像する光の入射口側)がモニタ2に向くようにコアユニット70を把持する。一方、モニタ2の表示画面近傍には、2つのマーカ8Lおよび8Rが設置されている。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力し、撮像情報演算部74の撮像対象になる。そして、ゲーム装置本体5は、2つのマーカ8Lおよび8Rによる高輝度点に関する位置データを用いてコアユニット70が指し示している位置を算出する。
コアユニット70は、3軸の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、少なくとも1軸方向に沿った直線加速度を検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて、加速度センサ701が提供されてもよい。
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、それら3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。しかしながら、加速度センサ701から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ(例えばCPU10)またはコントローラのプロセッサ(例えばマイコン751)等のコンピュータが処理を行うことによって、コアユニット70に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば容易に理解できるであろう。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707およびバイブレータ(図示せず)の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体5から送信された振動データ(例えば、バイブレータをONまたはOFFする信号)等に応じて、バイブレータを作動させる。
コアユニット70に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。また、接続ケーブル79を介して、バイタルセンサ76からの生体信号(生体信号データ)は、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ、生体信号データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥースで構成される通信部75の送信間隔は5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥースの技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ754から放射する。つまり、コアユニット70に設けられた操作部72からのキーデータと、加速度センサ701からのX、Y、およびZ軸方向加速度データと、撮像情報演算部74からの処理結果データと、バイタルセンサ76からの生体信号データとがコアユニット70から送信される。そして、ゲーム装置本体5の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体5で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ、生体信号データ)を取得する。そして、ゲーム装置本体5のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥースの技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
次に、図8および図9を参照して、バイタルセンサ76について説明する。なお、図8は、バイタルセンサ76の構成の一例を示すブロック図である。図9は、バイタルセンサ76から出力される生体信号の一例である脈波信号の例を示す図である。
図8において、バイタルセンサ76は、制御部761、発光部762、および受光部763を備えている。
発光部762および受光部763は、ユーザの生体信号を得るセンサの一例であり、透過型指尖容積脈波センサを構成する。発光部762は、例えば赤外線LEDで構成され、所定波長(例えば、940nm)の赤外線を受光部763に向けて照射する。一方、受光部763は、発光部762が照射する波長に応じて照射される光を受光し、例えば赤外線フォトレジスタで構成される。そして、発光部762と受光部763とは、所定の間隙(空洞)を介して配置されている。
ここで、人体の血液中に存在するヘモグロビンは、赤外線を吸光する性質をもっている。例えば、上述した発光部762および受光部763間の間隙にユーザの身体の一部(例えば、指先)を挿入する。これによって、発光部762から照射された赤外線は、挿入した指先内に存在するヘモグロビンで吸光された後、受光部763で受光される。一方、人体の動脈は、脈拍動しているため、当該脈拍動に応じて動脈の太さ(血流量)が変化する。したがって、挿入した指先内の動脈も同様の脈拍動が生じており、当該脈拍動に応じて血流量が変化するため、当該血流量に応じて吸光される赤外線の量も変化する。具体的には、挿入した指先内の血流量が多い場合、ヘモグロビンで吸光される量も増加するために受光部763で受光する赤外線の光量が相対的に少なくなる。一方、挿入した指先内の血流量が少ない場合、ヘモグロビンで吸光される量も減少するために受光部763で受光する赤外線の光量が相対的に多くなる。発光部762および受光部763は、このような動作原理を利用し、受光部763で受光する赤外線の光量を光電信号に変換することによって、人体の脈拍動(以下、脈波と記載する)を検出している。例えば、図9に示すように、挿入した指先内の血流量が増加した場合に受光部763の検出値(例えば、受光部763が受光した際の光電電圧)が上昇し、挿入した指先内の血流量が減少した場合に受光部763の検出値が下降する。このように、受光部763の検出値が脈動する脈波部分が、脈波信号として生成される。なお、受光部763の回路構成によって、挿入した指先内の血流量が増加した場合に受光部763の検出値が下降し、挿入した指先内の血流量が減少した場合に受光部763の検出値が上昇するような脈波信号を生成してもかまわない。
制御部761は、例えばMCU(Micro Controller Unit)で構成される。制御部761は、発光部762から照射される赤外線の光量を制御する。また、制御部761は、受光部763から出力された光電信号(脈波信号)をA/D変換して脈波データ(生体信号データ)を生成する。そして、制御部761は、接続ケーブル79を介して、脈波データ(生体信号データ)をコアユニット70へ出力する。
ゲーム装置本体5では、バイタルセンサ76から得られた脈波データを分析することによって、バイタルセンサ76を使用しているユーザの生体信号を検出して、様々なユーザの生体指標を検出/算出することができる。第1の生体指標の例として、ゲーム装置本体5では、バイタルセンサ76から得られた脈波データが示す脈波の起伏によって、ユーザの拍タイミング(例えば、心収縮するタイミングであり、厳密にはバイタルセンサ76を着用している部位の血管が収縮または膨張するタイミング)を検出することができる。具体的には、ゲーム装置本体5は、バイタルセンサ76から得られた脈波データが示す脈波が極小値を示すタイミング、極大値を示すタイミング、血管が収縮する速度が最大となるタイミング、血管が膨張する速度が最大となるタイミング、血管膨張速度の加速率が最大となるタイミング、または血管膨張速度の減速率が最大となるタイミング等を、ユーザの拍タイミングとして検出することができる。なお、血管膨張速度の加速率が最大となるタイミングまたは血管膨張速度の減速率が最大となるタイミングを用いてユーザの拍タイミングとして検出する場合、血管が膨張または収縮する速度を微分したパラメータ、すなわち血管が膨張する加速度が最大または血管が収縮する加速度が最大となるタイミングをユーザの拍タイミングとして検出してもかまわない。
第2の生体指標の例として、脈波データが示す脈波から検出されたユーザの拍タイミングを用いて、心拍数HRを算出することができる。例えば、60秒を拍タイミングの間隔の周期で除算した値を、バイタルセンサ76を使用しているユーザの心拍数HRとして算出することができる。具体的には、脈波が極小値を示すタイミングを拍タイミングとする場合、当該極小値間の心拍間隔(図9に示すR−R間隔)で、60秒を除算することによって心拍数HRを算出することができる。
第3の生体指標の例として、心拍数HRが上昇/下降する周期を用いてユーザの呼気動作/吸気動作を検出し、ユーザの呼吸周期を算出することができる。具体的には、本実施形態が算出している心拍数HRは、上昇中であればユーザが吸う呼吸をしており、下降中であればユーザが吐く呼吸をしていると判断することができる。そして、心拍数HRが上昇/下降する周期(ゆらぎ周期)を算出することによって、ユーザが呼吸している周期(呼吸周期)を算出することができる。
第4の生体指標の例として、バイタルセンサ76から得られた脈波データが示す脈波の振幅PA(例えば、脈波の極大値から次の極小値まで高さの差;図9参照)を用いて、ユーザの苦楽度を判断することができる。具体的には、脈波振幅PAが縮小した場合、ユーザが苦しい状態にあると判断することができる。
第5の生体指標の例として、脈波信号から得られる脈波面積PWA(図9参照)を心拍数HRで除算することによって、ユーザの血流量を得ることができる。
第6の生体指標の例として、脈波データが示す脈波から検出されたユーザの拍タイミングの間隔(心拍間隔;例えば、図9に示すR−R間隔)を用いて、ユーザの心拍変動係数(CVRR:coefficient of variance of R−R interval)を算出することができる。例えば、心拍変動係数は、バイタルセンサ76から得られる脈波が示す過去100拍における心拍間隔を用いて算出される。具体的には、
心拍変動係数=(100拍分の心拍間隔の標準偏差/100拍分の心拍間隔の平均値)×100
で算出される。そして、心拍変動係数を用いて、ユーザの自律神経量(例えば、副交感神経の活動度)を算出することができる。
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、図10〜図13を用いてゲーム装置本体5で行う呼吸指示処理およびゲーム処理の概要について説明する。なお、図10および図11は、それぞれモニタ2に表示されるゲーム画像の一例を示す図である。図12および図13は、それぞれモニタ2に表示される呼吸指示画像の一例を示す図である。
図10および図11において、モニタ2には、障害物(天井T、地面B)とプレイヤキャラクタPCが配置された仮想ゲーム世界が表現される。そして、モニタ2には、ユーザに呼吸動作を促すための呼吸指示画像として、第1オブジェクトOBJ1および第2オブジェクトOBJ2が表示されている。
プレイヤキャラクタPCは、ユーザの生体信号(生体指標)に基づいて動作する。プレイヤキャラクタPCは、仮想ゲーム世界内において、例えば左から右へスクロールして移動する天井Tと地面Bとが障害物となった天井Tと地面Bとの間の空間(例えば、洞窟内)を飛行することが求められる。プレイヤキャラクタPCは、天井Tの高さを上限として上昇することができ、地面Bの高さを下限として下降することができる。ここで、プレイヤキャラクタPCは、ユーザの呼吸動作に応じて昇降する。例えば、プレイヤキャラクタPCは、ユーザが吸う呼吸をした場合(吸気動作をした場合)に上昇し、ユーザが吐く呼吸をした場合(呼気動作をした場合)に下降する。本実施形態においては、上記生体信号(脈波信号)を用いてユーザの心拍数HRを算出し、心拍数HRが上昇中であればユーザが吸気動作をしていると判断し、心拍数HRが下降中であればユーザが呼気動作をしていると判断する。心拍数HRは、60秒間の鼓動回数で示されるが、本実施形態においては心拍間隔(R−R間隔;例えば、脈波の極小値から次の極小値までの時間;図9参照)で、60秒を除算することによって算出している。
また、天井Tおよび地面Bの起伏は、ユーザに促す呼吸周期に基づいて算出される。例えば、本実施形態では、ユーザの呼吸周期が徐々に変化(例えば、遅く)するように設定され、設定された呼吸周期に応じて天井Tおよび地面Bの起伏が生成される。そして、天井Tや地面BとプレイヤキャラクタPCとが接触した場合、ゲームの得点が減じられる。つまり、ゲームで高得点を得るためには、天井Tや地面Bの起伏に合わせてプレイヤキャラクタPCを昇降させることによって天井Tおよび地面Bの起伏周期で呼吸するような呼吸動作、すなわちユーザ自身の呼吸周期を徐々に変化させるような呼吸が要求されることになる。
一方、ユーザが促される呼気動作/吸気動作のタイミングは、第1オブジェクトOBJ1および第2オブジェクトOBJ2(呼吸指示画像)によって示される。例えば、第2オブジェクトOBJ2は、輪状に表示されている第1オブジェクトOBJ1に沿って移動し、その表情や色によって現時点が呼気動作をする期間(図10の状態)なのか吸気動作をする期間(図11の状態)なのかを示す。一方、第1オブジェクトOBJ1は、第2オブジェクトOBJ2が移動するための例えば円環経路として表示されており、当該経路の表示態様によってユーザに呼気を促す期間(呼気期間)とユーザに吸気を促す期間(吸気期間)とを示している。
図12A〜図12Cに示すように、呼吸指示画像は、第1オブジェクトOBJ1および第2オブジェクトOBJ2によって示される。ここで、図12A〜図12Cは、ユーザに吸気動作を促すための呼吸指示画像の一例を示しており、第2オブジェクトOBJ2が何れも吸う呼吸をしているような表情の顔画像で示されており、吸気動作を促す第1の色で表示されている。一方、第1オブジェクトOBJ1は、円環形状で表示されており、第2オブジェクトOBJ2が移動する経路となる。そして、第2オブジェクトOBJ2は、円環状に表示されている第1オブジェクトOBJ1に沿って図示A方向へ移動し、当該円環を1周する間は等角速度円運動で移動する。
第1オブジェクトOBJ1の円環(第2オブジェクトOBJ2の経路)は、その表示態様によって少なくとも呼気期間および吸気期間を区別している。例えば、図12Aに示した例では、1周全てが吸気期間であることを示す実線で第1オブジェクトOBJ1が示されており、第2オブジェクトOBJ2が等角速度円運動で上記円環を1周する間は吸気期間であることを示している。
また、図12Bに示した例では、図12Aの状態(円環の最上位置)から第2オブジェクトOBJ2が第1オブジェクトOBJ1の円環における4分の1程度まで図示A方向へ移動した状態を示している。図12Bでは、第2オブジェクトOBJ2が位置している現時点Tnから第1オブジェクトOBJ1の円環における最上位置に第2オブジェクトOBJ2が到達する時点T1までが吸気期間であることを示す実線で第1オブジェクトOBJ1が示されており、第2オブジェクトOBJ2が等角速度円運動で到達する時点T1までは吸気期間であることを示している。また、図12Bで示す第1オブジェクトOBJ1は、時点T1以降が呼気期間であることを示す破線で示されており、第2オブジェクトOBJ2が等角速度円運動で円環の最上位置(時点T1)に到達したタイミングで吸気期間から呼気期間に切り換わることを示している。
また、図12Cに示した例では、図12Aの状態(円環の最上位置)から第2オブジェクトOBJ2が第1オブジェクトOBJ1の円環における8分の7程度まで図示A方向へさらに移動した状態を示している。図12Cでは、第2オブジェクトOBJ2が位置している現時点Tnから第1オブジェクトOBJ1の円環における最上位置に第2オブジェクトOBJ2が到達する時点T1までが吸気期間であることを示す実線で第1オブジェクトOBJ1が示されており、第2オブジェクトOBJ2が等角速度円運動で到達する時点T1までは吸気期間であることを示している。また、図12Cで示す第1オブジェクトOBJ1は、時点T1以降が呼気期間であることを示す破線で示されており、第2オブジェクトOBJ2が等角速度円運動で円環の最上位置(時点T1)に到達したタイミングで吸気期間から呼気期間に切り換わることを示している。
ここで、図12A〜図12Cから明らかなように、ユーザに吸気動作を促す吸気期間における呼吸指示画像では、当該吸気期間が終了するまで第1オブジェクトOBJ1および第2オブジェクトOBJ2がそれぞれ漸増的に拡大されて表示される。例えば、図12Aで示した第1オブジェクトOBJ1の円環直径をD1、図12Bで示した第1オブジェクトOBJ1の円環直径をD2、図12Cで示した第1オブジェクトOBJ1の円環直径をD3とした場合、D1<D2<D3となる。このように第1オブジェクトOBJ1および第2オブジェクトOBJ2を漸増的に拡大することによって、視感覚的にもユーザに吸う呼吸をするように促すことができる。
図13A〜図13Cは、ユーザに呼気動作を促すための呼吸指示画像の一例を示しており、第2オブジェクトOBJ2が何れも吐く呼吸をしているような表情の顔画像で示されており、呼気動作を促す第2の色で表示されている。一方、第1オブジェクトOBJ1は、吸気期間と同様に円環形状で表示されている。そして、第2オブジェクトOBJ2は、円環状に表示されている第1オブジェクトOBJ1に沿って図示A方向へ移動し、当該円環を1周する間は等角速度円運動で移動する。
図13Aに示した例では、1周全てが呼気期間であることを示す破線で第1オブジェクトOBJ1が示されており、第2オブジェクトOBJ2が等角速度円運動で上記円環を1周する間は呼気期間であることを示している。例えば、図13Aに示す呼吸指示画像の例は、図12A〜図12Cで示した呼吸指示画像を表示した吸気期間が終了し、当該吸気期間から呼気期間に切り換わったタイミングで表示される。
また、図13Bに示した例では、図13Aの状態(円環の最上位置)から第2オブジェクトOBJ2が第1オブジェクトOBJ1の円環における4分の1程度まで図示A方向へ移動した状態を示している。図13Bでは、第2オブジェクトOBJ2が位置している現時点Tnから第1オブジェクトOBJ1の円環における最上位置に第2オブジェクトOBJ2が到達する時点T2までが呼気期間であることを示す破線で第1オブジェクトOBJ1が示されており、第2オブジェクトOBJ2が等角速度円運動で到達する時点T2までは呼気期間であることを示している。また、図13Bで示す第1オブジェクトOBJ1は、時点T2以降が吸気期間であることを示す実線で示されており、第2オブジェクトOBJ2が等角速度円運動で円環の最上位置(時点T2)に到達したタイミングで呼気期間から吸気期間に切り換わることを示している。
また、図13Cに示した例では、図13Aの状態(円環の最上位置)から第2オブジェクトOBJ2が第1オブジェクトOBJ1の円環における8分の7程度まで図示A方向へさらに移動した状態を示している。図13Cでは、第2オブジェクトOBJ2が位置している現時点Tnから第1オブジェクトOBJ1の円環における最上位置に第2オブジェクトOBJ2が到達する時点T2までが呼気期間であることを示す破線で第1オブジェクトOBJ1が示されており、第2オブジェクトOBJ2が等角速度円運動で到達する時点T2までは呼気期間であることを示している。また、図13Cで示す第1オブジェクトOBJ1は、時点T2以降が吸気期間であることを示す実線で示されており、第2オブジェクトOBJ2が等角速度円運動で円環の最上位置(時点T2)に到達したタイミングで呼気期間から吸気期間に切り換わることを示している。そして、図12Aに示す呼吸指示画像の例は、図13A〜図13Cで示した呼吸指示画像を表示した呼気期間が終了し、当該呼気期間から吸気期間に切り換わったタイミングで表示される。
ここで、図13A〜図13Cから明らかなように、ユーザに呼気動作を促す呼気期間における呼吸指示画像では、当該呼気期間が終了するまで第1オブジェクトOBJ1および第2オブジェクトOBJ2がそれぞれ漸減的に縮小されて表示される。例えば、図13Aで示した第1オブジェクトOBJ1の円環直径をD4、図13Bで示した第1オブジェクトOBJ1の円環直径をD5、図13Cで示した第1オブジェクトOBJ1の円環直径をD6とした場合、D4>D5>D6となる。このように第1オブジェクトOBJ1および第2オブジェクトOBJ2を漸減的に縮小することによって、視感覚的にもユーザに吐く呼吸をするように促すことができる。
なお、第2オブジェクトOBJ2は、円環状に表示されている第1オブジェクトOBJ1に沿って、当該円環を1周する間は等角速度円運動で移動し、現時点が呼気期間であることを示している間、および現時点が吸気期間であることを示している間は同じ角速度を保って円運動するため、ユーザは、呼気期間および吸気期間が終わるタイミングが把握しやすくなる。しかしながら、ユーザに促す呼吸周期を変化させようとする場合、呼気期間から吸気期間に切り換わりタイミングまたは吸気期間から呼気期間に切り換わるタイミングにおいて、円運動する角速度を変化させればよい。例えば、ユーザに促す呼吸周期を長く変化させようとする場合、上記タイミングにおいて第2オブジェクトOBJ2が円運動する角速度を相対的に遅くすることによって、呼吸周期を長く変化させた呼気期間や吸気期間をユーザに指示することができる。
また、上述した例では、第1オブジェクトOBJ1の円環の線種(例えば、実線、破線)によって、吸気期間および呼気期間を区別して示したが、他の表示態様によって吸気期間および呼気期間を区別してモニタ2に表示してもかまわない。例えば、第1オブジェクトOBJ1の円環の色によって、吸気期間および呼気期間を区別してモニタ2に表示してもかまわない。また、吸気期間および呼気期間によって、第1オブジェクトOBJ1の円環の表示態様を区別することなくモニタ2に表示してもかまわない。例えば、呼吸動作が切り換わる時点(例えば、吸気期間から呼気期間に切り換わる時点、呼気期間から吸気期間に切り換わる時点)で第2オブジェクトOBJ2が位置する上記円環上の場所に、所定のマーク(標識)を付与することによって期間の切り替わりのみをモニタ2に表示してもかまわない。
また、図12B、図12C、図13B、および図13Cから明らかなように、第1オブジェクトOBJ1の円環において第2オブジェクトOBJ2が通過した部位の表示態様が、当該円環における次周の当該部位上を第2オブジェクトOBJ2が再び通過する際にユーザに指示する呼吸動作に応じた表示態様に順次変化させている。これによって、第1オブジェクトOBJ1の円環において次周に予定されている呼吸動作指示がユーザに示されるため、予めユーザが当該呼吸動作指示に応じた準備が可能である。また、第1オブジェクトOBJ1の円環に沿って周回移動する第2オブジェクトOBJ2は、呼気期間において当該呼気期間の開始から終了までの時間で当該円環を1周し、吸気期間において当該吸気期間の開始から終了までの時間で当該円環を1周し、これらの期間が連続して指示される。つまり、第1オブジェクトOBJ1の円環の表示態様によって指示する呼吸動作は、当該円環の1周毎に切り換わる呼気期間または吸気期間を指示することになる。したがって、第1オブジェクトOBJ1の円環において第2オブジェクトOBJ2が通過することによって表示態様が変化した部位は、現時点において指示されている呼気期間または吸気期間が既に経過した時間(経過割合)を示す指標として用いることもできる。
なお、上述した呼吸指示画像の一例では、第1オブジェクトOBJ1の円環最上位置で呼気期間と吸気期間とが切り替えられており、後述においても当該円環最上位置で呼気期間と吸気期間とが切り替えられる例を用いて説明する。
次に、ゲームシステム1において行われる呼吸指示処理およびゲーム処理の詳細を説明する。まず、図14を参照して、呼吸指示処理およびゲーム処理において用いられる主なデータについて説明する。なお、図14は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータおよびプログラムの一例を示す図である。
図14に示すように、メインメモリのデータ記憶領域には、操作情報データDa、呼気期間データDb、吸気期間データDc、心拍数データDd、点数データDe、障害物設定データDf、プレイヤキャラクタデータDg、第1オブジェクトデータDh、第2オブジェクトデータDi、および画像データDj等が記憶される。なお、メインメモリには、図14に示すデータの他、ゲームに登場する他のオブジェクト等に関するデータ(位置データ等)や仮想ゲーム世界に関するデータ(背景のデータ等)等、呼吸指示処理やゲーム処理に必要なデータが記憶される。また、メインメモリのプログラム記憶領域には、ゲームプログラム(呼吸指示プログラム)を構成する各種プログラムPaが記憶される。
操作情報データDaは、脈波データDa1等を含む。脈波データDa1は、バイタルセンサ76から得られる脈波信号(生体信号)を示すデータであり、コアユニット70から送信データとして送信されてくる一連の操作情報に含まれるデータである。脈波データDa1に格納される脈波データは、コアユニット70から送信された操作情報の受信に応じて常に最新のデータに更新される。なお、脈波データDa1に格納される脈波データは、プレイされるゲームによって必要な時間長さ分だけ脈波信号の履歴が格納されることがあるが、この場合も操作情報の受信に応じて適宜更新される。また、ゲーム装置本体5に備える無線コントローラモジュール19は、コアユニット70から所定周期(例えば、1/200秒毎)に送信されて操作情報に含まれる生体信号データを受信し、無線コントローラモジュール19に備える図示しないバッファに受信したデータを蓄える。その後、上記バッファに蓄えられた生体信号データがゲーム処理周期である1フレーム毎(例えば、1/60秒毎)に読み出されて、メインメモリの脈波データDa1が更新される。
このとき、操作情報を受信する周期と処理周期とが異なるために、上記バッファには複数の時点に受信した操作情報が記述されていることになる。後述する処理の説明においては、後述する各ステップにおいて、複数の時点に受信した操作情報のうち最新の操作情報のみを常に用いて処理して、次のステップに進める態様を用いる。
また、後述する処理フローでは、脈波データDa1がゲーム処理周期である1フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コアユニット70からの送信周期毎に脈波データDa1を更新し、当該更新された脈波データDa1をゲーム処理周期毎に利用する態様でもかまわない。この場合、脈波データDa1を更新する周期と、ゲーム処理周期とが異なることになる。
呼気期間データDbは、ユーザに呼吸を促す際の吐く呼吸を行う時間(呼気期間の長さ)を示すデータである。吸気期間データDcは、ユーザに呼吸を促す際の吸う呼吸を行う時間(吸気期間の長さ)を示すデータである。
心拍数データDdは、脈波データDa1に基づいて算出されたユーザの心拍数の所定時間分の履歴を示すデータである。点数データDeは、ゲームにおける得点を示すデータである。障害物設定データDfは、ユーザに促す呼吸周期に応じて算出された起伏周期に応じて設定される仮想ゲーム世界の障害物(天井Tおよび地面B)を示すデータである。プレイヤキャラクタデータDgは、仮想ゲーム世界に配置されるプレイヤキャラクタPCの位置等を示すデータである。
第1オブジェクトデータDhは、第1オブジェクトOBJ1に関するデータであり、呼吸タイミングデータDh1およびサイズデータDh2を含んでいる。呼吸タイミングデータDh1は、第1オブジェクトOBJ1が示す上記円環のうち、呼気期間として表示する範囲と吸気期間として表示する範囲とを示すデータである。サイズデータDh2は、第1オブジェクトOBJ1が示す上記円環の大きさ(例えば、直径D)を示すデータである。
第2オブジェクトデータDiは、第2オブジェクトOBJ2に関するデータであり、呼吸状態データDi1、位置データDi2、移動角速度データDi3、およびサイズデータDi4を含んでいる。呼吸状態データDi1は、現時点においてユーザに促している呼吸動作(すなわち、呼気動作および吸気動作に何れか)に応じて、ユーザに示す第2オブジェクトOBJ2の表示態様(例えば、表情や色)を示すデータである。位置データDi2は、第1オブジェクトOBJ1が示す上記円環における第2オブジェクトOBJ2の位置を示すデータである。移動角速度データDi3は、上記円環に沿って第2オブジェクトOBJ2が円運動する角速度を示すデータである。サイズデータDi4は、第2オブジェクトOBJ2の大きさを示すデータである。
画像データDjは、プレイヤキャラクタ画像データDj1、第1オブジェクト画像データDj2、第2オブジェクト画像データDj3、および障害物画像データDj4等を含んでいる。プレイヤキャラクタ画像データDj1は、仮想ゲーム世界にプレイヤキャラクタPCを配置してゲーム画像を生成するためのデータである。第1オブジェクト画像データDj2は、第1オブジェクトOBJ1を表示して呼吸指示画像を生成するためのデータである。第2オブジェクト画像データDj3は、第2オブジェクトOBJ2を表示して呼吸指示画像を生成するためのデータである。障害物画像データDj4は、仮想ゲーム世界に天井Tや地面B等の障害物を配置してゲーム画像を生成するためのデータである。
次に、図15および図16を参照して、ゲーム装置本体5において行われる呼吸指示処理およびゲーム処理の詳細を説明する。なお、図15は、ゲーム装置本体5において実行されるメイン処理の一例を示すフローチャートである。図16は、図15のステップ52に示すプレイヤキャラクタ処理の詳細な処理の一例を示すサブルーチンである。なお、図15および図16に示すフローチャートにおいては、各種処理のうち、ユーザに呼吸動作を指示する処理およびバイタルセンサ76からの生体信号を用いる処理について主に説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図15および図16では、CPU10が実行する各ステップを「S」と略称する。
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU10は、ROM/RTC13に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラム(呼吸指示プログラム)がメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図15に示すフローチャートは、以上の処理が完了した後に行われるメイン処理を示すフローチャートである。
図15において、CPU10は、ゲーム処理の初期設定を行い(ステップ41)、次のステップに処理を進める。例えば、上記ステップ41におけるゲーム処理の初期設定では、仮想ゲーム世界の設定やプレイヤキャラクタPCや天井Tおよび地面B等の初期設定を行い、障害物設定データDfおよびプレイヤキャラクタデータDg等を更新する。また、上記ステップ41におけるゲーム処理の初期設定では、以降のゲーム処理や呼吸指示処理で用いる各パラメータを初期化する。例えば、CPU10は、点数データDeについて満点を示す点数(例えば、100点)に初期設定する。
次に、CPU10は、ユーザに呼吸を促す呼気期間および吸気期間を設定し(ステップ42)、次のステップに処理を進める。例えば、CPU10は、呼気期間データDbおよび吸気期間データDcに呼気期間および吸気期間が設定されていない初期状態である場合、予め定められた初期値を呼気期間および吸気期間に設定し、設定された呼気期間および吸気期間を用いて呼気期間データDbおよび吸気期間データDcを更新する。また、CPU10は、呼気期間データDbおよび吸気期間データDcに呼気期間および吸気期間が既に設定されている場合、予め定められた変更条件に基づいて、当該呼気期間および吸気期間を変化させる。一例として、CPU10は、呼気期間および吸気期間が更新された後に所定の呼吸回数が経過した場合に、呼気期間データDbおよび吸気期間データDcが示す呼気期間および吸気期間を、所定割合長くした時間(例えば、20%長くした時間)や所定割合短くした時間(例えば、20%短くした時間)に設定し、設定された呼気期間および吸気期間を用いて呼気期間データDbおよび吸気期間データDcを更新する。
次に、CPU10は、設定されている呼気期間および吸気期間に基づいて、第1オブジェクトOBJ1および第2オブジェクトOBJ2を設定し(ステップ43)、次のステップに処理を進める。例えば、CPU10は、これからユーザに呼気するように指示する場合、呼気期間を示す表示態様に第1オブジェクトOBJ1の円環全てを設定し、当該円環のサイズを予め定められた最大のサイズに設定して、第1オブジェクトデータDhを更新する。また、CPU10は、呼気動作であることを示す表示態様(例えば、呼気している表情で第2の色)に第2オブジェクトOBJ2を設定し、第2オブジェクトOBJ2のサイズを予め定められた最大のサイズに設定し、第2オブジェクトOBJ2の表示位置を第1オブジェクトOBJ1の円環最上位置に設定して、第2オブジェクトデータDiを更新する。一方、CPU10は、これからユーザに吸気するように指示する場合、吸気期間を示す表示態様に第1オブジェクトOBJ1の円環全てを設定し、当該円環のサイズを予め定められた最小のサイズに設定して、第1オブジェクトデータDhを更新する。また、CPU10は、吸気動作であることを示す表示態様(例えば、吸気している表情で第1の色)に第2オブジェクトOBJ2を設定し、第2オブジェクトOBJ2のサイズを予め定められた最小のサイズに設定し、第2オブジェクトOBJ2の表示位置を第1オブジェクトOBJ1の円環最上位置に設定して、第2オブジェクトデータDiを更新する。
次に、CPU10は、設定されている呼気期間および吸気期間に基づいて、第2オブジェクトOBJ2が移動する速度を設定し(ステップ44)、次のステップに処理を進める。例えば、CPU10は、これからユーザに呼気するように指示する場合、呼気期間データDbが示す呼気期間の時間長さで第2オブジェクトOBJ2が第1オブジェクトOBJ1の円環を等角速度で1周するように、第2オブジェクトOBJ2の角速度を設定する。そして、CPU10は、設定された角速度を用いて、移動角速度データDi3を更新する。一方、CPU10は、これからユーザに吸気するように指示する場合、吸気期間データDcが示す吸気期間の時間長さで第2オブジェクトOBJ2が第1オブジェクトOBJ1の円環を等角速度で1周するように、第2オブジェクトOBJ2の角速度を設定する。そして、CPU10は、設定された角速度を用いて、移動角速度データDi3を更新する。
次に、CPU10は、現時点が呼気期間内か否かを判断する(ステップ45)。そして、CPU10は、現時点が呼気期間内である場合、次のステップ46に処理を進める。一方、CPU10は、現時点が吸気期間内である場合、次のステップ48に処理を進める。
ステップ46において、CPU10は、第1オブジェクトOBJ1の大きさを縮小して設定し、次のステップに処理を進める。例えば、CPU10は、サイズデータDh2が示す第1オブジェクトOBJ1の円環の大きさを、所定の関数(例えば、呼気期間の開始時点が最大値となり、当該呼気期間中の時間経過とともに正弦曲線で漸減的に変化して当該呼気期間の終了時点で最小値となる関数)に基づいて縮小し、縮小した円環の大きさを用いてサイズデータDh2を更新する。
次に、CPU10は、第2オブジェクトOBJ2の大きさを縮小して設定し(ステップ47)、次のステップ50に処理を進める。例えば、CPU10は、サイズデータDi4が示す第2オブジェクトOBJ2の大きさを、所定の関数(例えば、呼気期間の開始時点が最大値となり、当該呼気期間中の時間経過とともに正弦曲線で漸減的に変化して当該呼気期間の終了時点で最小値となる関数)に基づいて縮小し、縮小した大きさを用いてサイズデータDi4を更新する。
一方、ステップ48において、CPU10は、第1オブジェクトOBJ1の大きさを拡大して設定し、次のステップに処理を進める。例えば、CPU10は、サイズデータDh2が示す第1オブジェクトOBJ1の円環の大きさを、所定の関数(例えば、吸気期間の開始時点が最小値となり、当該吸気期間中の時間経過とともに正弦曲線で漸増的に変化して当該吸気期間の終了時点で最大値となる関数)に基づいて拡大し、拡大した円環の大きさを用いてサイズデータDh2を更新する。
次に、CPU10は、第2オブジェクトOBJ2の大きさを拡大して設定し(ステップ49)、次のステップ50に処理を進める。例えば、CPU10は、サイズデータDi4が示す第2オブジェクトOBJ2の大きさを、所定の関数(例えば、吸気期間の開始時点が最小値となり、当該吸気期間中の時間経過とともに正弦曲線で漸増的に変化して当該吸気期間の終了時点で最大値となる関数)に基づいて拡大し、拡大した大きさを用いてサイズデータDi4を更新する。
ステップ50において、CPU10は、第1オブジェクトOBJ1の円環に沿って第2オブジェクトOBJ2を移動させて第2オブジェクトOBJ2を表示し、次のステップに処理を進める。例えば、CPU10は、位置データDi2を用いて移動前の第2オブジェクトOBJ2の位置を取得する。また、CPU10は、サイズデータDh2および移動角速度データDi3を用いて第1オブジェクトOBJ1の円環の大きさおよび第2オブジェクトOBJ2の移動角速度を取得する。そして、CPU10は、移動前の第2オブジェクトOBJ2の位置、第1オブジェクトOBJ1の円環の大きさ、および第2オブジェクトOBJ2の移動角速度に基づいて、移動後の第2オブジェクトOBJ2の位置を算出し、算出された位置を用いて位置データDi2を更新する。そして、CPU10は、呼吸状態データDi1、位置データDi2、およびサイズデータDi4に応じた表示態様、表示位置、および大きさで、第2オブジェクトOBJ2をモニタ2に表示する。
次に、CPU10は、第1オブジェクトOBJ1の円環において、第2オブジェクトOBJ2が移動した経路に対応する部位の表示態様を変更して第1オブジェクトOBJ1を表示し(ステップ51)、次のステップに処理を進める。例えば、CPU10は、位置データDi2を用いて、現時点における第2オブジェクトOBJ2の位置を取得する。そして、CPU10は、現時点における第2オブジェクトOBJ2の位置から第2オブジェクトOBJ2の移動方向(図12〜図13に示すA方向)へ第1オブジェクトOBJ1の円環の最上位置までの円環(以下、前方経路と記載することがある)の表示態様に対して、第1オブジェクトOBJ1の円環の最上位置から第2オブジェクトOBJ2の移動方向へ現時点における第2オブジェクトOBJ2の位置までの円環(以下、後方経路と記載することがある)を異なる表示態様に設定する。具体的には、現時点が吸気期間である場合、上記前方経路が吸気期間を示す表示態様(例えば、実線)となっており、CPU10は、呼気期間を示す表示態様(例えば、破線)に上記後方経路の全てを設定する(図12B、図12C参照)。一方、現時点が呼気期間である場合、上記前方経路が呼気期間を示す表示態様(例えば、破線)となっており、CPU10は、吸気期間を示す表示態様(例えば、実線)に上記後方経路の全てを設定する(図13B、図13C参照)。そして、CPU10は、設定後の第1オブジェクトOBJ1の表示態様を用いて呼吸タイミングデータDh1を更新し、当該表示態様に応じて第1オブジェクトOBJ1をモニタ2に表示する。
次に、CPU10は、プレイヤキャラクタPCに関する処理を行い(ステップ52)、次のステップに処理を進める。以下、図16を参照して、上記ステップ52で行うプレイヤキャラクタ処理について説明する。
図16において、CPU10は、コアユニット70から操作情報を示すデータを取得して(ステップ81)、次のステップに処理を進める。例えば、CPU10は、コアユニット70から受信した操作情報を取得し、コアユニット70から受信した操作情報に含まれる最新の生体信号データが示す脈波信号(生体信号)を用いて脈波データDa1を更新する。
次に、CPU10は、ユーザの心拍数HRを算出して心拍数データDdの履歴を更新し(ステップ82)、次のステップに処理を進める。例えば、CPU10は、脈波データDa1の脈波信号を参照して、現時点の心拍間隔(R−R間隔;図9参照)を算出する。そして、CPU10は、60秒を心拍間隔で除算することによって心拍数HRを算出し、新たに算出された心拍数HRを示すデータを心拍数データDdに追加して、心拍数HRの履歴を更新する。なお、後述により明らかとなるが、心拍数HRの履歴は、少なくとも前回算出された心拍数HRが確保されていれば処理が可能となるため、新しい心拍数HRを追加する際、前回処理で算出された心拍数HR以外の履歴を削除してもかまわない。また、ユーザに促す呼吸周期を、実際に現時点でユーザが呼吸している周期に基づいて設定する場合、当該呼吸している周期を算出するために心拍数HRの履歴を所定時間分(例えば、ユーザの呼吸周期分以上)確保することが必要となるため、この場合は、新しい心拍数HRを追加する際、当該時間を超える過去の履歴を削除すればよい。
次に、CPU10は、上記ステップ82で算出された心拍数HRが前回算出された心拍数HRbより大きいか否か(ステップ83)、および上記ステップ82で算出された心拍数HRが前回算出された心拍数HRbより小さいか否か(ステップ85)を判断する。そして、CPU10は、上記ステップ82で算出された心拍数HRが前回算出された心拍数HRbより大きい場合(ステップ83でYes)、次のステップ84に処理を進める。また、CPU10は、上記ステップ82で算出された心拍数HRが前回算出された心拍数HRbより小さい場合(ステップ85でYes)、次のステップ86に処理を進める。一方、CPU10は、上記ステップ82で算出された心拍数HRが前回算出された心拍数HRbと同じである場合(ステップ83およびステップ85が何れもNo)、次のステップ87に処理を進める。
ステップ84において、CPU10は、プレイヤキャラクタPCを仮想ゲーム世界において所定量上昇させてモニタ2に表示し、次のステップ87に処理を進める。例えば、CPU10は、仮想ゲーム世界におけるプレイヤキャラクタPCの上昇量を算出し、当該上昇量を用いてプレイヤキャラクタデータDgを更新する。そして、CPU10は、プレイヤキャラクタデータDgが示す位置にプレイヤキャラクタPCを仮想ゲーム世界において上昇させて、モニタ2に表示する。なお、上記ステップ84において上昇させるプレイヤキャラクタPCの位置は、一定量上昇させてもいいし、心拍数HRbと心拍数HRとの差分値に応じて上昇量を変化させてもかまわない。
一方、ステップ86において、CPU10は、プレイヤキャラクタPCを仮想ゲーム世界において所定量下降させてモニタ2に表示し、次のステップ87に処理を進める。例えば、CPU10は、仮想ゲーム世界におけるプレイヤキャラクタPCの下降量を算出し、当該下降量を用いてプレイヤキャラクタデータDgを更新する。そして、CPU10は、プレイヤキャラクタデータDgが示す位置にプレイヤキャラクタPCを仮想ゲーム世界において下降させて、モニタ2に表示する。なお、上記ステップ86において下降させるプレイヤキャラクタPCの位置は、一定量下降させてもいいし、心拍数HRbと心拍数HRとの差分値に応じて下降量を変化させてもかまわない。
ステップ87において、CPU10は、仮想ゲーム世界においてプレイヤキャラクタPCが障害物(天井Tおよび地面B)と接触したか否かを判断する。例えば、プレイヤキャラクタPCが飛行中に地面Bと接触する、またはプレイヤキャラクタPCが天井Tと接触した場合、CPU10は、プレイヤキャラクタPCが障害物と接触したと判断する。そして、CPU10は、プレイヤキャラクタPCが障害物と接触した場合、次のステップ88に処理を進める。一方、CPU10は、プレイヤキャラクタPCが障害物と接触していない場合、次のステップ89に処理を進める。
ステップ88において、CPU10は、ゲームの得点から所定の点数を減点して、次のステップ89に処理を進める。例えば、CPU10は、点数データDeが示す点数から障害物との接触に応じた点数を減点し、減点後の点数を用いて点数データDeを更新する。ここで、減点する点数は、プレイヤキャラクタPCと障害物との接触状況に応じて変化させてもかまわない。第1の例として、プレイヤキャラクタPCが障害物と接触している時間に応じて減点数を増加させる。第2の例として、プレイヤキャラクタPCが障害物と接触して重複している量に応じて減点数を増加させる。第3の例として、プレイヤキャラクタPCが障害物と接触した回数に応じて減点数を増加させる。第4の例として、プレイヤキャラクタPCが接触している障害物の種類(例えば、天井T、地面B)に応じて、減点数を変化させる。第5の例として、上記第1〜第4の例の少なくとも2つを組み合わせて、減点数を変化させる。
なお、上述した処理では、プレイヤキャラクタPCが障害物と接触または重複した場合、ゲームの得点を減点することによってマイナスの評価が与えられ、ゲームの得点が低い程、当該ゲームの評価が悪くなることになるが、他の方式によって得点を変化させてもかまわない。第1の例として、ゲームの開始時の得点を0点とし、プレイヤキャラクタPCが障害物と接触または重複した場合、ゲームの得点を加点することによってマイナスの評価が与えられる。この場合、ゲームの得点が高い程、当該ゲームの評価が悪くなることになる。第2の例として、ゲームの開始時の得点を0点とし、ゲームの時間経過と共に加点されていく。そして、ゲーム中にプレイヤキャラクタPCが障害物と接触または重複した場合、上記加点を行わないことによってマイナスの評価が与えられる。この場合、ゲームの得点が低い程、当該ゲームの評価が悪くなることになる。
ステップ89において、CPU10は、呼気期間データDbが示す呼気期間および吸気期間データDcが示す吸気期間に応じて、仮想ゲーム世界における障害物を設定して表示し、当該サブルーチンによる処理を終了する。例えば、CPU10は、呼気期間データDbが示す呼気期間および吸気期間データDcが示す吸気期間に基づいてユーザに促す呼吸周期を算出し、当該呼吸周期に応じて障害物の起伏周期を設定する。そして、CPU10は、設定された起伏周期に基づいて、天井Tおよび地面B(障害物画像)を生成してモニタ2に表示する。一例として、CPU10は、仮想ゲーム世界においてプレイヤキャラクタPCが飛行する際の天井Tや地面Bが、上記起伏周期で起伏するように天井Tおよび地面Bの形状を調整してスクロールさせてモニタ2に表示する。
図15に戻り、CPU10は、上記ステップ52におけるプレイヤキャラクタ処理の後、ゲームを終了するか否かを判断する(ステップ53)。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、ユーザに指示する呼吸周期が予め定められた目標周期に到達したことや、ユーザがゲームを終了する操作を行ったこと等がある。CPU10は、ゲームを終了しない場合に次のステップ54に処理を進め、ゲームを終了する場合に当該フローチャートによる処理を終了する。
ステップ54において、CPU10は、現在ユーザに促している呼気期間または吸気期間が終了したか否かを判断する。そして、CPU10は、現在ユーザに促している呼気期間または吸気期間が終了した場合、上記ステップ42に戻って処理を繰り返す。一方、CPU10は、現在ユーザに促している呼気期間または吸気期間が終了しておらず当該期間中である場合、上記ステップ45に戻って処理を繰り返す。一例として、CPU10は、現時点がユーザに呼気を促す呼気期間を終了するタイミングである場合、上記ステップ42に処理を戻して、現在までの呼気期間指示に代えてこれから吸気期間であることを指示する呼吸指示画像をモニタ2に表示する(例えば、図12Aに示す呼吸指示画像)。他の例として、CPU10は、現時点がユーザに吸気を促す吸気期間を終了するタイミングである場合、上記ステップ42に処理を戻して、現在までの吸気期間指示に代えてこれから呼気期間であることを指示する呼吸指示画像をモニタ2に表示する(例えば、図13Aに示す呼吸指示画像)。
このように、第1オブジェクトOBJ1の表示態様と第2オブジェクトOBJ2の位置とによって、呼気動作および/または吸気動作を促す期間をユーザが容易に認識することができる。例えば、図12A〜図12Cに示すように、ユーザが吸う呼吸を促される場合、第2オブジェクトOBJ2が第1オブジェクトOBJ1の最上位置まで移動するまで吸う動作をすればいいことが明確となっている。また、図13A〜図13Cに示すように、ユーザが吐く呼吸を促される場合も、第2オブジェクトOBJ2が第1オブジェクトOBJ1の最上位置まで移動するまで吐く動作をすればいいことが明確となっている。したがって、ある時点において、残りどれくらいの時間吸うのか、またはどれくらいの時間吐くのかをユーザが認識できるため、吸気動作から呼気動作に切り替えるタイミングで呼吸が途切れたり、呼気動作から吸気動作に切り替えるタイミングで息が余ったりするなどすることなく、呼吸を繰り返す動作をスムーズに行うことができる。
なお、上述した呼吸指示画像の例では、ユーザに呼気動作および吸気動作をそれぞれ促す2つの期間を指示しているが、さらに他の動作を示す期間を指示してもかまわない。ユーザに呼吸状態を指示する3つ以上の期間を指示することによって、より細かい呼吸動作指示が可能となる。例えば、図17には、ユーザに呼吸を止める動作を促す期間(止息期間)を示す呼吸指示画像の一例が示されている。
図17において、止息期間を示す呼吸指示画像では、第2オブジェクトOBJ2が呼吸を止めているような表情の顔画像で示されており、止息動作を促す第3の色で表示されている。そして、第2オブジェクトOBJ2は、円環形状で表示されている第1オブジェクトOBJ1に沿って図示A方向へ移動し、当該円環を1周する間は等角速度円運動で移動する。
図17に示した例では、第1オブジェクトOBJ1の円環の最上位置から第2オブジェクトOBJ2が当該円環における4分の1程度まで図示A方向へ移動した状態を示している。図17では、第2オブジェクトOBJ2が位置している現時点Tnから第1オブジェクトOBJ1の円環における最上位置に第2オブジェクトOBJ2が到達する時点T3までが止息期間であることを示す一点鎖線で第1オブジェクトOBJ1が示されており、第2オブジェクトOBJ2が等角速度円運動で到達する時点T3までは止息期間であることを示している。また、図17で示す第1オブジェクトOBJ1は、時点T3以降が吸気期間であることを示す実線で示されており、第2オブジェクトOBJ2が等角速度円運動で円環の最上位置(時点T3)に到達したタイミングで止息期間から吸気期間に切り換わることを示している。このように、ユーザは、第1オブジェクトOBJ1の表示態様(線種や色等)と第2オブジェクトOBJ2の位置とによって、止息動作を促す期間を容易に認識することができる。
ここで、ユーザに止息動作を促す止息期間における呼吸指示画像では、当該止息期間が開始されてから終了するまで第1オブジェクトOBJ1および第2オブジェクトOBJ2がそれぞれ同じ大きさを保って表示され、拡大も縮小もしない。すなわち、図17に示す例では、止息期間中は、第1オブジェクトOBJ1の円環直径がD7一定で表示される。このように第1オブジェクトOBJ1および第2オブジェクトOBJ2の大きさを一定にして表示することによって、視感覚的にもユーザに呼吸を止めるように促すことができる。
なお、上述した説明では、呼吸指示画像によってユーザに指示する呼気期間および吸気期間は、予め定められた変更条件に基づいて変化していく一例を用いたが、他のパラメータがユーザに指示する呼気期間および吸気期間の長さに影響するようにしてもかまわない。例えば、ユーザが実際に呼吸している周期に基づいて、ユーザに指示する呼気期間および吸気期間の長さを変化させてもかまわない。
例えば、心拍数HRが上昇中であればユーザが吸う呼吸をしており、下降中であればユーザが吐く呼吸をしていると判断することができ、ユーザの心拍数HRが上昇/下降する周期(ゆらぎ周期)を算出することによってユーザが呼吸している周期を算出することができる。そして、算出されたユーザの呼吸周期を所定割合(例えば20%)遅くしたり速くしたりした呼吸周期をユーザに指示するように、ユーザに指示する呼気期間および吸気期間の長さを変化させる。これによって、現時点のユーザの呼吸状態に基づいた呼吸動作の指示が可能となる。
また、上述した例では、第1オブジェクトOBJ1が円環で示される例を用いたが、第1オブジェクトOBJ1は、他の形状のオブジェクトであってもかまわない。例えば、第1オブジェクトOBJ1は、円とは異なる環状形状のオブジェクト(楕円や多角形)でもかまわない。また、第1オブジェクトOBJ1は、第2オブジェクトOBJ2が1周する経路が形成されていれば環状形状でなくてもよく、様々な形状のオブジェクトでも実現できることは言うまでもない。
また、上述した説明では、ユーザに吸気動作を促す吸気期間において第1オブジェクトOBJ1および第2オブジェクトOBJ2を漸増的に拡大し、ユーザに呼気動作を促す呼気期間において第1オブジェクトOBJ1および第2オブジェクトOBJ2を漸減的に縮小する例を用いたが、第1オブジェクトOBJ1および第2オブジェクトOBJ2は、ユーザに指示する呼吸動作に応じて他の変形態様で変化して表示されてもかまわない。第1の例は、ユーザに吸気動作を促す吸気期間において第1オブジェクトOBJ1のみを漸増的に拡大し、ユーザに呼気動作を促す呼気期間において第1オブジェクトOBJ1のみを漸減的に縮小する。この場合、第2オブジェクトOBJ2は、その大きさが変化することなく第1オブジェクトOBJ1に沿って移動することになる。第2の例は、ユーザに吸気動作を促す吸気期間において第1オブジェクトOBJ1および第2オブジェクトOBJ2を漸減的に縮小し、ユーザに呼気動作を促す呼気期間において第1オブジェクトOBJ1および第2オブジェクトOBJ2を漸増的に拡大する。第3の例は、ユーザに吸気動作を促す吸気期間において第1オブジェクトOBJ1のみを漸減的に縮小し、ユーザに呼気動作を促す呼気期間において第1オブジェクトOBJ1のみを漸増的に拡大する。この場合も、第2オブジェクトOBJ2は、その大きさが変化することなく第1オブジェクトOBJ1に沿って移動することになる。
また、上述した説明では、第1オブジェクトOBJ1に含まれる第2オブジェクトOBJ2の経路(円環)の表示態様(例えば、線種や色)によって吸気期間や呼気期間を区別して示したが、当該経路の表示態様によって吸気期間や呼気期間を区別しなくてもよい。本実施形態においては、少なくとも第1オブジェクトOBJ1に、吸気期間において拡大および縮小の一方の変化が与えられ、呼気期間において拡大および縮小の他方の変化が与えられる。また、吸気期間においては第2オブジェクトOBJ2が吸気している表情の第1の色で表示され、呼気期間においては第2オブジェクトOBJ2が呼気している表情の第2の色で表示される。そして、上記経路に沿って周回移動する第2オブジェクトOBJ2は、呼気期間において当該呼気期間の開始から終了までの時間で当該経路を1周し、吸気期間において当該吸気期間の開始から終了までの時間で当該経路を1周する。したがって、ユーザは、上記経路の表示態様が同じであっても、第1オブジェクトOBJ1の拡大または縮小する変化や第2オブジェクトOBJ2の表示態様の変化等によって呼気期間から吸気期間へ切り換わったタイミングおよび吸気期間から呼気期間に切り換わったタイミングを知ることができ、当該タイミングから上記経路を第2オブジェクトOBJ2が1周するまでの時間を呼気または吸気を続ければいいことを認識することができる。また、呼気期間から吸気期間へ切り換わるタイミングおよび吸気期間から呼気期間に切り換わるタイミングにおける第2オブジェクトOBJ2の位置を固定(例えば、第1オブジェクトOBJ1の経路(円環)の最上位置で必ず期間が切り換わるように固定)すれば、上記経路の表示態様の区別がない場合であっても呼気期間および吸気期間の長さを容易に認識することができる。
また、上述した説明では、ユーザの身体の一部(例えば、指先)に赤外線を照射し、当該身体の一部を透過して受光された赤外線の光量に基づいてユーザの生体信号(脈波信号)を得る、いわゆる光学方式によって血管の容積変化を検出して容積脈波を得る例を用いている。しかしながら、本発明では、ユーザが身体活動する際に起こる生理的な情報が得られる他の形式のセンサを用いて、ユーザの生体信号を取得してもかまわない。例えば、動脈の脈動による血管内の圧力変位を検出(例えば、圧電方式)して圧脈波を得ることによって、ユーザの生体信号を取得してもかまわない。また、ユーザの筋電位や心電位を、ユーザの生体信号として取得してもかまわない。筋電位や心電位は、電極を用いた一般的な検出方法により検出することができ、例えば、ユーザの身体における微細な電流の変化等に基づいて、ユーザの生体信号を取得することができる。また、ユーザの血流を、ユーザの生体信号として取得してもかまわない。血流は、電磁法や超音波法等を用いて1心拍ごとの脈動血流として測定され、当該脈動血流をユーザの生体信号として取得することができる。当然ながら、上述した各種生体信号を得るために、ユーザの指部以外の箇所(例えば、胸部、腕、耳たぶ等)にバイタルセンサを装着してもかまわない。取得する生体信号によっては、厳密には脈拍と心拍との差が生じることになるが、心拍数と脈拍数という見方をした場合ほぼ同じ値と考えられるので、取得される生体信号を上述した処理と同様に取り扱うことができる。
また、上述した説明ではゲーム処理および呼吸指示処理をコントローラ7(バイタルセンサ76、コアユニット70)およびゲーム装置本体5(すなわち、ゲーム装置3)で行う例を用いたが、上記呼吸指示処理における処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲーム装置3が他の装置(例えば、サーバや他のゲーム装置)と通信可能に構成されている場合、上記ゲーム処理および呼吸指示処理における処理ステップは、ゲーム装置3および当該他の装置が協働することによって実行してもよい。一例として、他の装置において呼気期間や吸気期間等が設定され、ゲーム装置3が当該設定情報を示すデータを取得して呼吸指示処理することによって呼吸指示画像をユーザに示すことが考えられる。また、他の装置において仮想ゲーム世界が設定されている場合、バイタルセンサ76から出力される生体信号を他の装置へ送信し、他の装置において以降のゲーム処理を行った後、ゲーム装置3で表示処理を行うことが考えられる。また、他の例として、他の装置において仮想ゲーム世界が設定されている場合、上述したゲーム処理における途中段階のデータ(例えば、プレイヤキャラクタPCの位置を示すデータ)を、ゲーム装置3から他の装置へ送信し、送信したデータを用いた処理を当該他の装置で行った後、ゲーム装置3で表示処理を行うことが考えられる。このように、上記ゲーム処理や呼吸指示処理における処理ステップの少なくとも一部を他の装置で行うことによって、上述したゲーム処理および呼吸指示処理と同様の処理が可能となるとともに、他の装置において実現されている仮想ゲーム世界に複数のゲーム装置のユーザが参加するゲーム処理(例えば、他の装置で動作しているゲームに複数のゲーム装置のユーザが参加してゲーム進行を共有するオンラインゲーム)や、複数のユーザに対して同じ呼吸周期を促す呼吸指示処理にも本発明を適用することも可能となる。上述したゲーム処理や呼吸指示処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。
また、上記実施例では、据置型のゲーム装置3に本願発明を適用した例を説明したが、バイタルセンサと、当該バイタルセンサから得られる生体信号に応じた処理を実行する情報処理装置とがあればよく、例えば一般的なパーソナルコンピュータ、携帯電話機、PDA(Personal Digital Assistant)、携帯ゲーム装置等のデバイスにも適用することができる。
また、上述した説明では、コアユニット70とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コアユニット70とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コアユニット70に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
また、コントローラ7を構成するコアユニット70およびバイタルセンサ76のうち、コアユニット70のみに通信部75を設けたが、バイタルセンサ76にゲーム装置本体5へ生体信号データを無線送信する通信部を設けてもかまわない。また、コアユニット70およびバイタルセンサ76それぞれに上記通信部を設けてもかまわない。例えば、コアユニット70およびバイタルセンサ76に設けられた通信部がそれぞれゲーム装置本体5へ生体信号データや操作データを無線送信してもいいし、バイタルセンサ76の通信部からコアユニット70へ生体信号データを無線送信してコアユニット70の通信部75で受信した後、コアユニット70の通信部75がバイタルセンサ76の生体信号データと共にコアユニット70の操作データをゲーム装置本体5へ無線送信してもいい。これらの場合、コアユニット70とバイタルセンサ76とを電気的に接続する接続ケーブル79が不要となる。
また、上述したコアユニット70の形状や、それに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述したバイタルセンサ76の形状や、それに設けられている構成要素の種類、数、および設置位置等は、単なる一例に過ぎず他の種類、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した処理で用いられる係数、判定値、数式、処理順序等は、単なる一例に過ぎず他の値や数式や処理順序であっても、本発明を実現できることは言うまでもない。
また、上記ゲームプログラム(呼吸指示プログラム)は、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、上記プログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、不揮発性メモリなどでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを一時的に記憶する揮発性メモリでもよい。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。