【文献】
「メタルギア ソリッド4 ガンズ・オブ・ザ・パトリオット 公式ガイド ザ・コンプリート」,日本,株式会社コナミデジタルエンタテインメント,2009年 2月25日,第3刷,p.052-053
【文献】
DongSoo"Luie"Han,"「Nintendo Media Briefing」レポート ハードウェア編 新インターフェイス「Wii Vitality Sensor」が登場。「Wii Fit」新作と「Wii Sports Resort」の最新情報も公開",GAME Watch,日本,株式会社Impress Watch,2009年 6月 3日,[2014年2月25日検索],URL,http://game.watch.impress.co.jp/docs/news/20090603_212288.html
(58)【調査した分野】(Int.Cl.,DB名)
前記照準表示手段は、前記指示位置変化手段が前記指示位置を変化させることに応じて、前記表示装置の表示画面に対して前記照準を表示する位置を変化させ、当該照準が設定された仮想ゲーム世界を当該照準とともに表示装置に表示する、請求項3に記載のゲームプログラム。
前記照準表示手段は、前記指示位置変化手段が前記指示位置を変化させることに応じて、前記表示装置の表示画面に表示される仮想ゲーム世界の範囲を変化させ、当該照準が設定された仮想ゲーム世界を当該照準とともに表示装置に表示する、請求項3に記載のゲームプログラム。
前記指示位置変化手段は、前記生体信号が有する周期毎に前記指示位置を揺らす動作を開始し、時間経過に応じて前記指示位置が揺れる幅が減衰するように前記指示位置を変化させる、請求項2に記載のゲームプログラム。
前記生体信号取得手段が取得した周期性を有する生体信号に基づいて、プレイヤの脈拍または心拍における拍タイミングを検出する拍タイミング検出手段として、さらに前記コンピュータを機能させ、
前記指示位置変化手段は、前記拍タイミング検出手段が検出した拍タイミングから前記指示位置を変化させる、請求項2に記載のゲームプログラム。
前記指示位置変化手段は、一時的に前記指示位置を変化させる動作を終了する場合、当該終了後の指示位置が前記指示位置設定手段によって設定されている指示位置となるように前記指示位置を変化させる、請求項1に記載のゲームプログラム。
前記指示位置設定手段は、前記指示位置変化手段が一時的に前記指示位置を変化させる動作を終了した場合、前記指示位置変化手段が当該終了した時点の指示位置を用いて当該指示位置設定手段の指示位置を設定する、請求項1に記載のゲームプログラム。
前記生体信号取得手段が取得した生体信号に基づいて、プレイヤの脈拍または心拍における拍タイミングを検出する拍タイミング検出手段として、さらに前記コンピュータを機能させ、
前記指示位置変化手段は、前記拍タイミング検出手段が検出した拍タイミングから所定時間が経過するまで一時的に前記指示位置を変化させる、請求項11または12に記載のゲームプログラム。
前記指示位置変化手段は、前記生体信号取得手段が取得した生体信号に応じて、前記指示位置を変化させる変化量および前記指示位置を変化させる期間の少なくとも一方を設定し、当該変化量および当該期間の少なくとも一方に基づいて前記指示位置を変化させる、請求項1から5のいずれか1項に記載のゲームプログラム。
前記生体信号取得手段は、プレイヤの脈波、心拍数、交感神経活動度、副交感神経活動度、心拍変動係数、心拍間隔、呼吸周期、脈波振幅から成る群から選ばれる少なくとも1つを前記生体信号として取得し、
前記指示位置変化手段は、前記生体信号取得手段が取得した前記群から選ばれた少なくとも1つに応じて、前記指示位置を変化させる変化量および前記指示位置を変化させる期間の少なくとも一方を設定する、請求項14に記載のゲームプログラム。
前記指示位置変化手段は、前記群から選ばれた少なくとも1つに基づいて算出されたプレイヤの脈拍または心拍の波形の振幅が大きいほど、前記指示位置を変化させる変化量を大きく設定する、請求項15に記載のゲームプログラム。
少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されるゲーム処理方法であって、
入力装置に対して行われたプレイヤの操作入力を取得する操作入力取得ステップと、
前記操作入力に応じて、仮想ゲーム世界に対する指示位置を設定する指示位置設定ステップと、
プレイヤから生体信号を取得する生体信号取得ステップと、
前記生体信号取得ステップが取得した生体信号に応じて、前記指示位置を変化させる指示位置変化ステップと、
前記指示位置に基づいて、所定のゲーム処理を行うゲーム処理ステップとを含み、
前記指示位置変化ステップにおいては、前記生体信号取得ステップで取得された生体信号に応じて、前記指示位置を一時的に変化させる、ゲーム処理方法。
【発明を実施するための形態】
【0039】
図1を参照して、本発明の一実施形態に係るゲームプログラムを実行する装置について説明する。以下、説明を具体的にするために、当該装置の一例である据置型のゲーム装置本体5を含むゲームシステムを用いて説明する。なお、
図1は据置型のゲーム装置3を含むゲームシステム1の一例を示す外観図であり、
図2はゲーム装置本体5の一例を示すブロック図である。以下、当該ゲームシステム1について説明する。
【0040】
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置3から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、上記ゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体5に与えるためのコントローラ7とを備えている。
【0041】
ゲーム装置本体5は、無線コントローラモジュール19(
図2参照)を内蔵する。無線コントローラモジュール19は、コントローラ7から無線送信されるデータを受信し、ゲーム装置本体5からコントローラ7へデータを送信して、コントローラ7とゲーム装置本体5とを無線通信によって接続する。さらに、ゲーム装置本体5には、当該ゲーム装置本体5に対して交換可能に用いられる情報記憶媒体の一例の光ディスク4が脱着される。
【0042】
ゲーム装置本体5には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ17(
図2参照)が搭載される。ゲーム装置本体5は、光ディスク4に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ2に表示する。また、上記ゲームプログラムは、光ディスク4に限らず、フラッシュメモリ17に予め記録されたものを実行するようにしてもよい。さらに、ゲーム装置本体5は、フラッシュメモリ17に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ2に表示することもできる。そして、ゲーム装置3のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
【0043】
コントローラ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で受信して、当該送信データに応じた音や振動を発生させることもできる。
【0044】
なお、本実施例では、コアユニット70とバイタルセンサ76とを屈曲自在な接続ケーブル79で接続したが、バイタルセンサ76に無線ユニットを搭載することで、接続ケーブル79をなくすこともできる。例えば、無線ユニットとしてBluetoothユニットをバイタルセンサ76に搭載することで、バイタルセンサ76からコアユニット70やゲーム装置本体5へ生体情報を送信することが可能になる。また、コアユニット70にバイタルセンサ76を固定して設けることによって、コアユニット70とバイタルセンサ76とを一体構成してもかまわない。この場合、プレイヤは、コアユニット70一体でバイタルセンサ76を扱うことができる。
【0045】
次に、
図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等を有する。
【0046】
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に読み出したデータを書き込む。
【0047】
また、システムLSI11には、入出力プロセッサ31、GPU(Graphics Processor Unit)32、DSP(Digital Signal Processor)33、VRAM(Video RAM)34、および内部メインメモリ35が設けられる。図示は省略するが、これらの構成要素31〜35は、内部バスによって互いに接続される。
【0048】
GPU32は、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM34は、GPU32がグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU32は、VRAM34に記憶されたデータを用いて画像データを作成する。
【0049】
DSP33は、オーディオプロセッサとして機能し、内部メインメモリ35や外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0050】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、AVコネクタ16を介して、読み出した画像データをモニタ2に出力するとともに、読み出した音声データをモニタ2に内蔵されるスピーカ2aに出力する。これによって、画像がモニタ2に表示されるとともに音がスピーカ2aから出力される。
【0051】
入出力プロセッサ(I/Oプロセッサ)31は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ31は、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、および外部メモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0052】
入出力プロセッサ31は、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ31は、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、無線通信モジュール18およびアンテナ22を介して当該データをネットワークに送信する。また、入出力プロセッサ31は、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22、および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10は、ゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置本体5と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置本体5を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0053】
また、入出力プロセッサ31は、アンテナ23および無線コントローラモジュール19を介して、コントローラ7から送信される操作データ等を受信し、内部メインメモリ35または外部メインメモリ12のバッファ領域に記憶(一時記憶)する。なお、内部メインメモリ35には、外部メインメモリ12と同様に、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりしてもよく、CPU10のワーク領域やバッファ領域として用いられてもかまわない。
【0054】
さらに、入出力プロセッサ31には、拡張コネクタ20および外部メモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。外部メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ31は、拡張コネクタ20や外部メモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0055】
また、ゲーム装置本体5(例えば、前部主面)には、当該ゲーム装置本体5の電源ボタン24、ゲーム処理のリセットボタン25、光ディスク4を脱着する投入口、およびゲーム装置本体5の投入口から光ディスク4を取り出すイジェクトボタン26等が設けられている。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置本体5の各構成要素に対して、図示しないACアダプタを介して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置本体5の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0056】
図3および
図4を参照して、コアユニット70について説明する。なお、
図3は、コアユニット70の上面後方から見た一例を示す斜視図である。
図4は、コアユニット70を下面前方から見た一例を示す斜視図である。
【0057】
図3および
図4において、コアユニット70は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0058】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0059】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、十字キー72aの代わりに設けてもかまわない。
【0060】
ハウジング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の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0061】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体5の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0062】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コアユニット70は、他のコントローラと区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コアユニット70に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール19からコアユニット70へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
【0063】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(
図5に示すスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0064】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコアユニット70の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0065】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コアユニット70が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコアユニット70の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0066】
次に、
図5および
図6を参照して、コアユニット70の内部構造について説明する。なお、
図5は、コアユニット70の上筐体(ハウジング71の一部)を外した状態を後面側から見た一例を示す斜視図である。
図6は、コアユニット70の下筐体(ハウジング71の一部)を外した状態を前面側から見た一例を示す斜視図である。ここで、
図6に示す基板700は、
図5に示す基板700の裏面から見た斜視図となっている。
【0067】
図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等が判定することができる。
【0068】
一方、
図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コアユニット70の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体5から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0069】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体5から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコアユニット70に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0070】
次に、
図7を参照して、コントローラ7の内部構成について説明する。なお、
図7は、コントローラ7の構成の一例を示すブロック図である。
【0071】
図7において、コアユニット70は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。また、バイタルセンサ76は、接続ケーブル79とコネクタ791および73とを介して、マイコン751と接続される。
【0072】
撮像情報演算部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自体の方向を変えることによってその撮像方向を変更することができる。
【0073】
撮像情報演算部74から出力される処理結果データは、コアユニット70で指し示す位置等を示す操作データとして用いることもできる。例えば、プレイヤは、コアユニット70の前面(撮像情報演算部74が撮像する光の入射口側)がモニタ2に向くようにコアユニット70を把持する。一方、モニタ2の表示画面近傍には、2つのマーカ8Lおよび8Rが設置されている。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって赤外光を出力し、撮像情報演算部74の撮像対象になる。そして、ゲーム装置本体5は、2つのマーカ8Lおよび8Rによる高輝度点に関する位置データを用いてコアユニット70が指し示している位置を算出する。
【0074】
例えば、その前面がモニタ2に向くようにコアユニット70をプレイヤが把持することによって、撮像情報演算部74には2つのマーカ8Lおよび8Rが出力した赤外光が入射する。そして、赤外線フィルタ741およびレンズ742を介して、入射した赤外光を撮像素子743が撮像し、当該撮像画像を画像処理回路744が処理する。ここで、撮像情報演算部74では、マーカ8Lおよび8Rから出力される赤外線成分を検出することで、上記撮像画像における当該マーカ8Lおよび8Rの位置情報(対象画像の位置)等を取得する。具体的には、画像処理回路744は、撮像素子743が撮像した画像データを解析して、まず面積情報からマーカ8Lおよび8Rからの赤外光ではあり得ない画像を除外し、さらに輝度が高い点をマーカ8Lおよび8Rそれぞれの位置として判別する。そして、撮像情報演算部74は、判別されたそれらの輝度の高い輝点群の重心位置等の位置情報を取得し、上記処理結果データとして出力する。ここで、上記処理結果データである位置情報は、撮像画像における所定の基準点(例えば、撮像画像の中央や左上隅)を原点とした座標値として出力するものでもよく、所定のタイミングにおける上記重心位置等を基準点として、当該基準点からの現在の上記重心位置の差をベクトルとして出力するものでもよい。つまり、上記対象画像の位置情報は、撮像素子743が撮像した撮像画像に対して所定の基準点を設定した場合に、当該基準点に対する差として用いられるパラメータである。このような位置情報をゲーム装置本体5へ送信することによって、ゲーム装置本体5では、基準からの上記位置情報の差に基づいて、マーカ8Lおよび8Rに対する撮像情報演算部74、すなわちコアユニット70の動き、姿勢、位置等に応じた信号の変化量を得ることができる。具体的には、コアユニット70が動かされることによって、通信部75から送信される画像内の高輝度点の重心位置が変化するため、高輝度点の重心位置の変化に対応させた方向入力や座標入力を行うことで、コアユニット70が指し示している位置を操作入力としたり、コアユニット70の移動方向に沿った方向入力や座標入力を行ったりすることができる。
【0075】
このように、コアユニット70の撮像情報演算部74によって、固定的に設置されたマーカ(実施例では、2つのマーカ8Lおよび8Rからの赤外光)を撮像することによって、ゲーム装置本体5における処理において、コントローラ7から出力されるデータを処理してコアユニット70の動き、姿勢、位置等に対応した操作が可能となり、ボタンを押下するような操作ボタンや操作キーとは異なった直感的な操作入力となる。また、上述したように上記マーカは、モニタ2の表示画面近傍に設置されているため、マーカに対する位置をモニタ2の表示画面に対するコアユニット70の動き、姿勢、位置等に換算することも容易に行うことができる。つまり、コアユニット70の動き、姿勢、位置等による処理結果データは、モニタ2の表示画面に直接作用する操作入力(例えば、コアユニット70が指し示す位置を入力)として用いることができ、コアユニット70を表示画面に対するポインティングデバイスとして機能させることも可能となる。
【0076】
コアユニット70は、3軸の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、少なくとも1軸方向に沿った直線加速度を検知する加速度検出手段を使用してもよい。例えば、これらの加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であることが好ましい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて、加速度センサ701が提供されてもよい。
【0077】
加速度センサ701に用いられるような加速度検出手段は、加速度センサ701の持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、それら3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。しかしながら、加速度センサ701から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ(例えばCPU10)またはコントローラのプロセッサ(例えばマイコン751)等のコンピュータが処理を行うことによって、コアユニット70に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば容易に理解できるであろう。
【0078】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707およびバイブレータ(図示せず)の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体5から送信された振動データ(例えば、バイブレータをONまたはOFFする信号)等に応じて、バイブレータを作動させる。
【0079】
コアユニット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は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0080】
次に、
図8および
図9を参照して、バイタルセンサ76について説明する。なお、
図8は、バイタルセンサ76の構成の一例を示すブロック図である。
図9は、バイタルセンサ76から出力される生体情報の一例である脈波情報の例を示す図である。
【0081】
図8において、バイタルセンサ76は、制御部761、発光部762、および受光部763を備えている。
【0082】
発光部762および受光部763は、プレイヤの生体信号を得るセンサの一例であり、透過型指尖容積脈波センサを構成する。発光部762は、例えば赤外線LEDで構成され、所定波長(例えば、940nm)の赤外線を受光部763に向けて照射する。一方、受光部763は、発光部762が照射する波長に応じて照射される光を受光し、例えば赤外線フォトレジスタで構成される。そして、発光部762と受光部763とは、所定の間隙(空洞)を介して配置されている。
【0083】
ここで、人体の血液中に存在するヘモグロビンは、赤外線を吸光する性質をもっている。例えば、上述した発光部762および受光部763間の間隙にプレイヤの身体の一部(例えば、指先)を挿入する。これによって、発光部762から照射された赤外線は、挿入した指先内に存在するヘモグロビンで吸光された後、受光部763で受光される。一方、人体の動脈は、脈拍動しているため、当該脈拍動に応じて動脈の太さ(血流量)が変化する。したがって、挿入した指先内の動脈も同様の脈拍動が生じており、当該脈拍動に応じて血流量が変化するため、当該血流量に応じて吸光される赤外線の量も変化する。具体的には、挿入した指先内の血流量が多い場合、ヘモグロビンで吸光される量も増加するために受光部763で受光する赤外線の光量が相対的に少なくなる。一方、挿入した指先内の血流量が少ない場合、ヘモグロビンで吸光される量も減少するために受光部763で受光する赤外線の光量が相対的に多くなる。発光部762および受光部763は、このような動作原理を利用し、受光部763で受光する赤外線の光量を光電信号に変換することによって、人体の脈拍動(以下、脈波と記載する)を検出している。例えば、
図9に示すように、挿入した指先内の血流量が増加した場合に受光部763の検出値が上昇し、挿入した指先内の血流量が減少した場合に受光部763の検出値が下降する。このように、受光部763の検出値が脈動する脈波部分が、脈波信号として生成される。なお、受光部763の回路構成によって、挿入した指先内の血流量が増加した場合に受光部763の検出値が下降し、挿入した指先内の血流量が減少した場合に受光部763の検出値が上昇するような脈波信号を生成してもかまわない。
【0084】
制御部761は、例えばMCU(Micro Controller Unit)で構成される。制御部761は、発光部762から照射される赤外線の光量を制御する。また、制御部761は、受光部763から出力された光電信号(脈波信号)をA/D変換して脈波データ(生体情報データ)を生成する。そして、制御部761は、接続ケーブル79を介して、脈波データ(生体情報データ)をコアユニット70へ出力する。
【0085】
ゲーム装置本体5では、バイタルセンサ76から得られた脈波データを分析することによって、バイタルセンサ76を使用しているプレイヤの様々な生体情報を検出/算出することができる。第1の例として、ゲーム装置本体5では、バイタルセンサ76から得られた脈波データが示す脈波の起伏によって、プレイヤの拍タイミング(例えば、心収縮するタイミングであり、厳密にはバイタルセンサ76を着用している部位の血管が収縮または膨張するタイミング)を検出することができる。具体的には、ゲーム装置本体5は、バイタルセンサ76から得られた脈波データが示す脈波が極小値を示すタイミング、極大値を示すタイミング、血管が収縮する速度が最大となるタイミング、血管が膨張する速度が最大となるタイミング、血管膨張速度の加速率が最大となるタイミング、または血管膨張速度の減速率が最大となるタイミング等を、プレイヤの拍タイミングとして検出することができる。なお、血管膨張速度の加速率が最大となるタイミングまたは血管膨張速度の減速率が最大となるタイミングを用いてプレイヤの拍タイミングとして検出する場合、血管が膨張または収縮する速度を微分したパラメータ、すなわち血管が膨張する加速度が最大または血管が収縮する加速度が最大となるタイミングをプレイヤの拍タイミングとして検出してもかまわない。
【0086】
第2の例として、脈波データが示す脈波から検出されたプレイヤの拍タイミングを用いて、心拍数HRを算出することができる。例えば、60秒を拍タイミングの間隔の周期で除算した値を、バイタルセンサ76を使用しているプレイヤの心拍数HRとして算出することができる。具体的には、脈波が極小値を示すタイミングを拍タイミングとする場合、当該極小値間の心拍間隔(
図9に示すR−R間隔)で、60秒を除算することによって心拍数HRを算出することができる。
【0087】
第3の例として、心拍数HRが上昇/下降する周期を用いてプレイヤの呼吸周期を算出することができる。具体的には、本実施形態が算出している心拍数HRは、上昇中であればプレイヤが吸う呼吸をしており、下降中であればプレイヤが吐く呼吸をしていると判断することができる。すなわち、心拍数HRが上昇/下降する周期(ゆらぎ周期)を算出することによって、プレイヤが呼吸している周期(呼吸周期)を算出することができる。
【0088】
第4の例として、バイタルセンサ76から得られた脈波データが示す脈波の振幅PA(例えば、脈波の極大値から次の極小値まで高さの差;
図9参照)を用いて、プレイヤの苦楽度を判断することができる。具体的には、脈波振幅PAが縮小した場合、プレイヤが苦しい状態にあると判断することができる。
【0089】
第5の例として、脈波信号から得られる脈波面積PWA(
図9参照)を心拍数HRで除算することによって、プレイヤの血流量を得ることができる。
【0090】
第6の例として、脈波データが示す脈波から検出されたプレイヤの拍タイミングの間隔(心拍間隔;例えば、
図9に示すR−R間隔)を用いて、プレイヤの心拍変動係数(CVRR:coefficient of variance of R−R interval)を算出することができる。例えば、心拍変動係数は、バイタルセンサ76から得られる脈波が示す過去100拍における心拍間隔を用いて算出される。具体的には、
心拍変動係数=(100拍分の心拍間隔の標準偏差/100拍分の心拍間隔の平均値)×100
で算出される。そして、心拍変動係数を用いて、プレイヤの自律神経量(例えば、副交感神経の活動度)を算出することができる。
【0091】
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、
図10〜
図13を用いて本ゲーム装置本体5で行うゲーム処理の概要について説明する。なお、
図10〜
図12は、それぞれモニタ2に表示されるゲーム画像の一例を示す図である。
図13A〜
図13Dは、それぞれモニタ2に表示される照準Sの動きの一例を示す図である。
【0092】
図10において、モニタ2には、プレイヤキャラクタPCおよび標的オブジェクトTが配置された仮想ゲーム世界が表現される。
図10に示した例では、プレイヤキャラクタPCが矢(矢オブジェクトA)を射る競技(例えば、アーチェリーや弓道)を仮想ゲーム世界で行うゲームを用いており、当該仮想ゲーム世界にアーチェリーの的が標的オブジェクトTとして配置されている。そして、プレイヤキャラクタPCは、矢オブジェクトAがセットされて引かれた状態で弓を持っており、プレイヤの操作に応じて矢オブジェクトAが弓からリリースされる。
【0093】
プレイヤキャラクタPCが矢オブジェクトAをリリースする前の状態では、矢オブジェクトAがリリースされた際に矢オブジェクトAが射られる位置や方向の目安として、照準Sが表示される。例えば、プレイヤは、コアユニット70に設けられている操作部72(例えば、十字キー72a)を操作することによって、モニタ2の表示画面における上下左右方向に照準Sの位置を移動させることができる。したがって、プレイヤは、操作部72を操作することによって、プレイヤキャラクタPCが矢オブジェクトAを射る位置(方向)を、所望の位置(方向)へ移動させることができる。なお、照準Sと仮想ゲーム世界との位置関係は相対的なものであるため、照準Sを表示画面に対して固定的に表示し、操作部72の操作に応じて表示画面に表示される仮想ゲーム世界を移動させて表示してもかまわない。また、操作部72の操作に応じて、表示画面に対する照準Sの表示位置を移動させるとともに、表示画面に表示される仮想ゲーム世界も移動させて表示してもかまわない。以下の説明においては、操作部72を操作することによって、モニタ2の表示画面における上下左右方向に照準Sの表示位置が移動する例を用いる。
【0094】
図11に示すように、プレイヤが矢オブジェクトAをリリースする操作(例えば、Aボタン72dやBボタン72iを押下する操作;以下、発射操作と記載する場合もある)に応じて矢オブジェクトAがリリースされ、照準Sによって仮想ゲーム世界内に設定される目標位置を目標としてリリースされた矢オブジェクトAが仮想ゲーム世界を移動(飛行)する。そして、
図12に示すように、矢オブジェクトAが最終的に到達して射られた位置に応じた得点が、プレイヤキャラクタPCに与えられる。
【0095】
ここで、照準Sの位置は、プレイヤによる操作部72の操作だけでなく、プレイヤから得られる生体情報(生体信号)によっても変化する。例えば、
図13A〜
図13Dに示すように、照準Sの位置は、プレイヤから得られる生体信号に応じて、操作部72の操作によって決定される位置を基点として揺れるように変化する。具体的には、プレイヤの拍タイミングが到来することに応じて、照準Sが揺れ方向、揺れ幅、および揺れ時間等が設定され、設定条件に基づいて照準Sの揺動が開始される(
図13Bの状態)。これによって、照準Sは、設定された揺れ方向(例えば、図示D方向)に設定された揺れ幅(例えば、照準位置Saと照準位置Sbとを往復する振幅)で揺れるようにモニタ2に表示される。
【0096】
やがて、照準Sの揺れ幅は、設定された揺れ時間に応じて徐々に減衰していき(
図13Cの状態)、当該揺れ時間が経過した際に照準Sの揺れが停止する(
図13Dの状態)。そして、再びプレイヤの拍タイミングが到来すると、照準Sは、上記同様に再揺動を開始する。このように、照準Sは、プレイヤの拍タイミングに応じて、間欠的に揺れるように表示される。
【0097】
このように照準Sが揺れて表示された場合、プレイヤは、矢オブジェクトAを射る狙い位置を定めることが難しくなる。上述したように、矢オブジェクトAがリリースされた場合、照準Sによって仮想ゲーム世界内に設定される目標位置を目標として矢オブジェクトAが仮想ゲーム世界を移動(飛行)するため、高得点を得るためには射られた場合に高得点となる位置に照準Sを合わせて発射操作する必要がある。したがって、照準Sが揺れて表示された場合、高得点となる位置に照準Sを合わせることが難しくなり、プレイヤが容易に結果を予測できない趣向性の高い操作が可能となる。なお、上述したように、照準Sと仮想ゲーム世界との位置関係は相対的なものであるため、照準Sを表示画面に対して固定的に表示し、表示画面に表示される仮想ゲーム世界を揺らして表示してもかまわない。また、表示画面に対して照準Sを揺らして表示するとともに、表示画面に表示される仮想ゲーム世界も揺らして表示してもかまわない。以下の説明においては、照準Sの表示位置が、プレイヤから得られる生体信号に応じて揺れるように変化する例を用いる。
【0098】
なお、後述により明らかとなるが、照準Sが揺れる揺れ幅および揺れ時間は、プレイヤの生体信号から算出された心拍数HRに基づいて算出され、照準Sが揺れる揺れ方向はランダムに設定される。したがって、照準Sが揺れる揺れ方向、揺れ幅、および揺れ時間についても、プレイヤが容易に結果を予測できないため、さらに趣向性の高い操作が可能となる。
【0099】
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、
図14を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、
図14は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータおよびプログラムの一例を示す図である。
【0100】
図14に示すように、メインメモリのデータ記憶領域には、操作情報データDa、心拍数データDb、平均心拍数データDc、心拍数上限値データDd、心拍数下限値データDe、揺れフラグデータDf、揺れ幅データDg、揺れ時間データDh、揺れ方向データDi、経過時間データDj、指示位置データDk、現在の第1揺れ幅データDl、現在の第2揺れ幅データDm、第1オフセット値データDn、第2オフセット値データDo、照準位置データDp、矢オブジェクト位置データDq、および画像データDr等が記憶される。なお、メインメモリには、
図14に示すデータの他、ゲームに登場する他のオブジェクト等に関するデータ(位置データ等)や仮想ゲーム世界に関するデータ(背景のデータ等)等、ゲーム処理に必要なデータが記憶される。また、メインメモリのプログラム記憶領域には、ゲームプログラムを構成する各種プログラムPaが記憶される。
【0101】
操作情報データDaは、キーデータDa1および脈波データDa2等を含む。キーデータDa1は、コアユニット70の複数の操作部72がそれぞれ操作されたことを示すデータであり、コアユニット70から送信データとして送信されてくる一連の操作情報に含まれたデータである。なお、ゲーム装置本体5に備える無線コントローラモジュール19は、コアユニット70から所定周期(例えば、1/200秒毎)に送信される操作情報に含まれるキーデータを受信し、無線コントローラモジュール19に備える図示しないバッファに受信したデータを蓄える。その後、上記バッファに蓄えられたキーデータがゲーム処理周期である1フレーム毎(例えば、1/60秒毎)に読み出されて、メインメモリのキーデータDa1が更新される。
【0102】
このとき、操作情報を受信する周期と処理周期とが異なるために、上記バッファには複数の時点に受信した操作情報が記述されていることになる。後述する処理の説明においては、後述する各ステップにおいて、複数の時点に受信した操作情報のうち最新の操作情報のみを常に用いて処理して、次のステップに進める態様を用いる。
【0103】
また、後述する処理フローでは、キーデータDa1がゲーム処理周期である1フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コアユニット70からの送信周期毎にキーデータDa1を更新し、当該更新されたキーデータDa1をゲーム処理周期毎に利用する態様でもかまわない。この場合、キーデータDa1を更新する周期と、ゲーム処理周期とが異なることになる。
【0104】
脈波データDa2は、バイタルセンサ76から得られる必要な時間長さ分の脈波信号を示すデータであり、コアユニット70から送信データとして送信されてくる一連の操作情報に含まれるデータである。なお、脈波データDa2に格納される脈波データは、後述する処理において必要な時間長さ分だけ脈波信号の履歴が格納され、操作情報の受信に応じて適宜更新される。
【0105】
心拍数データDbは、プレイヤの心拍数HR(例えば、60秒を心拍間隔(例えば、R−R間隔)の周期で除算した値)の所定時間分の履歴を示すデータである。
【0106】
平均心拍数データDcは、プレイヤの心拍数HRの平均値を示すデータである。心拍数上限値データDdおよび心拍数下限値データDeは、心拍数HRの平均値に基づいて設定される心拍数HRの上限値および下限値をそれぞれ示すデータである。
【0107】
揺れフラグデータDfは、照準Sが揺動中か否かを示し、揺動中の場合にオンに設定される揺動フラグを示すデータである。一例として、揺動フラグは、プレイヤの拍タイミングが到来したことに応じてオンに設定される。そして、揺動フラグは、照準Sが揺れた状態で表示される揺れ時間が経過する、または照準Sが揺れた状態にあるときにプレイヤが発射操作を行ったことに応じてオフに設定される。揺れ幅データDgは、プレイヤの拍タイミングが到来することに応じて設定される照準Sの揺れ幅Xmaxを示すデータである。揺れ時間データDhは、プレイヤの拍タイミングが到来することに応じて設定される照準Sの揺れ時間Tmaxを示すデータである。揺れ方向データDiは、プレイヤの拍タイミングが到来することに応じて設定される照準Sの揺れ方向Dを示すデータである。経過時間データDjは、照準Sが揺れた状態となった後に経過した経過時間Tを示すデータである。なお、後述により明らかとなるが、本実施例では2つの揺れ動作を合成して照準Sが揺れるように動作させており、揺れ幅データDg、揺れ時間データDh、揺れ方向データDi、および経過時間データDjは、それぞれの揺れ動作毎の設定値を示すデータとなる。
【0108】
指示位置データDkは、表示画面に表示されている仮想ゲーム世界において、プレイヤの操作部72の操作に応じて設定されるプレイヤの指示位置を示すデータである。現在の第1揺れ幅データDlは、現時点の第1の揺れ動作における揺れ幅X1を示すデータである。現在の第2揺れ幅データDmは、現時点の第2の揺れ動作における揺れ幅X2を示すデータである。第1オフセット値データDnは、現時点の第1の揺れ動作において照準Sの位置をオフセットする第1オフセット値of1を示すデータである。第2オフセット値データDoは、現時点の第1の揺れ動作のオフセット値(第1オフセット値of1)に、現時点の第2の揺れ動作において照準Sの位置をオフセットする値を加算した第2オフセット値of2を示すデータである。
【0109】
照準位置データDpは、仮想ゲーム世界における照準Sの位置を示すデータである。矢オブジェクト位置データDqは、仮想ゲーム世界における矢オブジェクトAの位置を示すデータである。
【0110】
画像データDrは、プレイヤキャラクタ画像データDr1、矢オブジェクト画像データDr2、標的オブジェクト画像データDr3、および照準画像データDr4等を含んでいる。プレイヤキャラクタ画像データDr1は、仮想ゲーム世界にプレイヤキャラクタPCを配置してゲーム画像を生成するためのデータである。矢オブジェクト画像データDr2は、仮想ゲーム世界に矢オブジェクトAを配置してゲーム画像を生成するためのデータである。標的オブジェクト画像データDr3は、仮想ゲーム世界に標的オブジェクトTを配置してゲーム画像を生成するためのデータである。照準画像データDr4は、仮想ゲーム世界に照準Sを配置してゲーム画像を生成するためのデータである。
【0111】
次に、
図15〜
図18を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、
図15は、ゲーム装置本体5において実行されるゲーム処理の一例を示すフローチャートである。
図16は、
図15のステップ42に示す初期設定の詳細な処理の一例を示すサブルーチンである。
図17は、
図15のステップ49に示す揺れ処理初期設定の詳細な処理の一例を示すサブルーチンである。
図18は、
図15のステップ50に示す揺れ処理の詳細な処理の一例を示すサブルーチンである。なお、
図15〜
図18に示すフローチャートにおいては、ゲーム処理のうち、バイタルセンサ76からの生体情報およびコアユニット70からのキーデータを用いる処理について主に説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、
図15〜
図18では、CPU10が実行する各ステップを「S」と略称する。
【0112】
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU10は、ROM/RTC13に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。
図15に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【0113】
図15において、CPU10は、初期設定を行い(ステップ42)、次のステップに処理を進める。以下、
図16を参照して、上記ステップ42で行う初期設定について説明する。
【0114】
図16において、CPU10は、プレイヤから生体情報を取得する設定を行い(ステップ61)、次のステップに処理を進める。例えば、CPU10は、以降の処理で用いる各パラメータを初期化する。そして、CPU10は、プレイヤから生体情報を取得するための入力装置であるバイタルセンサ76の装着を、プレイヤにモニタ2を介して指示する。なお、バイタルセンサ76をプレイヤに装着させるための指示は、モニタ2へ表示でなく、
プレイヤが知覚できる音声等の他の手段またはその組み合わせによって行ってもよい。そして、バイタルセンサ76が備える光学系により、プレイヤによるバイタルセンサ76の装着が確認されると、バイタルセンサ76は、プレイヤの身体から生体信号の取得を開始して、当該生体信号を示すデータをゲーム装置本体5へ送出する。
【0115】
次に、CPU10は、コアユニット70から操作情報を示すデータを取得して(ステップ62)、次のステップに処理を進める。例えば、CPU10は、コアユニット70から受信した操作情報を取得し、当該操作情報に含まれる最新のキーデータが示す操作部72に対する操作内容を用いてキーデータDa1を更新する。また、CPU10は、コアユニット70から受信した操作情報に含まれる最新の生体情報データが示す脈波信号を用いて脈波データDa2を更新する。
【0116】
次に、CPU10は、現時点が拍タイミングか否かを判断する(ステップ63)。そして、CPU10は、現時点が拍タイミングである場合、次のステップ64に処理を進める。一方、CPU10は、現時点が拍タイミングでない場合、次のステップ66に処理を進める。例えば、上記ステップ63において、CPU10は、脈波データDa2が示す脈波信号を参照して脈波の所定の形状特徴点を検出し、現時点が当該形状特徴点に該当する場合に拍タイミングであると判断する。上記形状特徴点の例としては、脈波が極小値となるポイント、脈波が極大値となるポイント、血管が収縮する速度が最大となるポイント、血管が膨張する速度が最大となるポイント、血管膨張速度の加速率が最大となるポイント、および血管膨張速度の減速率が最大となるポイント等の何れか1つを選択することが考えられるが、何れのポイントを拍タイミングであると判断する形状特徴点として用いてもかまわない。
【0117】
ステップ64において、CPU10は、プレイヤの心拍数HRを算出して心拍数データDbを更新し、次のステップに処理を進める。例えば、CPU10は、脈波データDa2の脈波信号を参照して、前回検出された拍タイミングから上記ステップ63において今回検出された拍タイミングまでの時間間隔(例えば、R−R間隔;
図9参照)を、現時点の心拍間隔として算出する。そして、CPU10は、60秒を心拍間隔で除算することによって心拍数HRを算出し、新たに算出された心拍数HRを用いて心拍数データDbを更新する。なお、CPU10は、今回の処理によって初めて拍タイミングが検出された場合は、例えば心拍数HRを所定の定数(例えば、0)として心拍数データDbを更新する。具体的には、CPU10は、心拍数データDbに格納されている所定時間分の心拍数HRの履歴をそれぞれ時系列順に順送りして更新し、新たに算出された心拍数HRを最新の心拍数HRとして心拍数データDbに追加する。これによって、心拍数データDbには、所定時間分の最新の心拍数HRの履歴が格納されることになる。
【0118】
次に、CPU10は、プレイヤの心拍数HRの平均値を算出して平均心拍数データDcを更新し(ステップ65)、次のステップ66に処理を進める。例えば、CPU10は、心拍数データDbに格納されている所定時間分の心拍数HRの履歴を用いて、心拍数HRの平均値を算出する。そして、CPU10は、算出された平均値を用いて平均心拍数データDcを更新する。
【0119】
ステップ66において、CPU10は、ゲームを開始するか否かを判断する。ゲームを開始する条件としては、例えば、プレイヤがゲームを開始する操作を行ったこと等がある。そして、CPU10は、ゲームを開始する場合、次のステップ67に処理を進める。一方、CPU10は、ゲームを開始しない場合、上記ステップ62に戻って処理を繰り返す。
【0120】
ステップ67において、CPU10は、ゲーム処理の初期設定を行い、次のステップに処理を進める。例えば、上記ステップ67におけるゲーム処理の初期設定では、CPU10は、仮想ゲーム世界の設定やプレイヤキャラクタPC等の初期設定を行う。また、上記ステップ67におけるゲーム処理の初期設定では、CPU10は、以降のゲーム処理で用いる各パラメータ(操作情報データDa、心拍数データDb、および平均心拍数データDcを除く)を初期化する。
【0121】
次に、CPU10は、プレイヤの心拍数HRの平均値を用いて、心拍数HRの上限値および下限値を算出し(ステップ68)、当該サブルーチンによる処理を終了する。例えば、CPU10は、平均心拍数データDcが示す心拍数HRの平均値に基づいて、心拍数HRの上限値および下限値を算出し、算出された上限値および下限値を用いて心拍数上限値データDdおよび心拍数下限値データDeをそれぞれ更新する。一例として、CPU10は、心拍数HRの平均値に所定の値(例えば、20)を加算することによって、心拍数HRの上限値を算出する。また、CPU10は、心拍数HRの平均値から所定の値(例えば、20)を減算することによって、心拍数HRの下限値を算出する。なお、算出される上限値または下限値に制限を設けてもかまわない。例えば、心拍数HRの上限値に対する最大制限値を予め設け、算出された上限値が当該最大制限値を越える場合、当該最大制限値を用いて心拍数上限値データDdを更新する。また、心拍数HRの下限値に対する最小制限値を予め設け、算出された下限値が当該最小制限値未満となる場合、当該最小制限値を用いて心拍数下限値データDeを更新する。
【0122】
図15に戻り、上記ステップ42の初期設定の後、CPU10は、コアユニット70から操作情報を示すデータを取得して(ステップ43)、次のステップに処理を進める。例えば、CPU10は、コアユニット70から受信した操作情報を取得し、当該操作情報に含まれる最新のキーデータが示す操作部72に対する操作内容を用いてキーデータDa1を更新する。また、CPU10は、コアユニット70から受信した操作情報に含まれる最新の生体情報データが示す脈波信号を用いて脈波データDa2を更新する。
【0123】
次に、CPU10は、現時点が拍タイミングか否かを判断する(ステップ44)。そして、CPU10は、現時点が拍タイミングでない場合、次のステップ45に処理を進める。一方、CPU10は、現時点が拍タイミングである場合、次のステップ49に処理を進める。なお、拍タイミングを判断する処理については、上述したステップ63の処理と同様であるため、詳細な説明を省略する。
【0124】
ステップ45において、CPU10は、揺れフラグデータDfを参照して、揺れフラグがオンに設定されているか否かを判断する。そして、CPU10は、揺れフラグがオフの場合、次のステップ46に処理を進める。一方、CPU10は、揺れフラグがオンの場合、次のステップ50に処理を進める。
【0125】
ステップ46において、CPU10は、発射操作中であるか否かを判断する。例えば、上記ステップ43で取得した操作情報が、発射操作(例えば、Aボタン72dやBボタン72iを押下する操作)を示す場合や、矢オブジェクトAが弓からリリースされた後であって、次の矢オブジェクトAが当該弓に再セットされるまでの期間である場合、CPU10は、現時点が発射操作中であると判断する。そして、CPU10は、現時点が発射操作中でない場合、次のステップ47に処理を進める。一方、CPU10は、現時点が発射操作中である場合、次のステップ51に処理を進める。
【0126】
ステップ47において、CPU10は、プレイヤの操作に応じた指示位置を算出し、次のステップに処理を進める。ここで、上記指示位置は、モニタ2の表示画面や当該表示画面に表示される仮想ゲーム世界に対してプレイヤが指示する位置であり、例えば、当該表示画面に設定された座標系、または仮想ゲーム世界に設定された座標系を基準とした座標データで示される。上記ステップ47では、CPU10は、一例として上記ステップ43で取得した操作情報が示す操作部72(例えば、十字キー72a)の操作状況に応じて、指示位置データDkが示す指示位置を変化させる。例えば、CPU10は、十字キー72aが押下されている方向に所定距離だけ移動するように指示位置データDkが示す指示位置を変化させ、変化後の指示位置を用いて指示位置データDkを更新する。なお、CPU10は、プレイヤが指示位置を移動させるための操作を行っていない場合、指示位置データDkが示す指示位置をそのまま保持して、次のステップに処理を進める。
【0127】
次に、CPU10は、指示位置に応じた照準位置を算出し、指示位置に対応する位置(例えば、指示位置や照準位置)に照準Sを表示して(ステップ48)、次のステップ52に処理を進める。例えば、CPU10は、指示位置データDkが示す指示位置に対応する照準位置を算出し、算出された照準位置を用いて照準位置データDpを更新する。一例として、指示位置が表示画面に設定された座標系に基づいた位置で示されている場合、CPU10は、指示位置を仮想ゲーム世界内に射影変換(透視変換)した位置を照準位置として算出して、照準位置データDpを更新する。他の例として、指示位置が仮想ゲーム世界に設定された座標系に基づいた位置で示されている場合、CPU10は、指示位置データDkが示す指示位置をそのまま照準位置に代入して、代入された照準位置を用いて照準位置データDpを更新する。そして、CPU10は、表示画面に設定された座標系に基づいた指示位置や仮想ゲーム世界に設定された座標系に基づいた照準位置に照準Sを配置して、仮想ゲーム世界とともにモニタ2に表示する。
【0128】
一方、上記ステップ44において現時点が拍タイミングであると判断された場合、CPU10は、揺れ処理初期設定を行い(ステップ49)、次のステップに処理を進める。以下、
図17を参照して、上記ステップ49で行う揺れ処理初期設定について説明する。
【0129】
図17において、CPU10は、揺れフラグをオンに設定して揺れフラグデータDfを更新し(ステップ81)、次のステップに処理を進める。
【0130】
次に、CPU10は、プレイヤの心拍数HRを算出して心拍数データDbを更新し(ステップ82)、次のステップに処理を進める。なお、心拍数の算出方法および心拍数データDbの更新方法については、上記ステップ64と同様であるため、詳細な説明を省略する。
【0131】
次に、CPU10は、揺れ幅Xmax、揺れ時間Tmax、および揺れ方向Dを算出し(ステップ83)、次のステップに処理を進める。なお、本実施例では、2つの揺れ動作(第1の揺れ動作および第2の揺れ動作)を合成して照準Sが揺れるように動作させており、上記ステップ83では、それぞれの揺れ動作毎の揺れ幅Xmax1およびXmax2と、揺れ時間Tmax1およびTmax2と、揺れ方向D1およびD2とを算出する。そして、CPU10は、算出された揺れ幅Xmax1およびXmax2と、揺れ時間Tmax1およびTmax2と、揺れ方向D1およびD2とを用いて、それぞれ揺れ幅データDg、揺れ時間データDh、および揺れ方向データDiを更新する。以下、それぞれの揺れ動作における揺れ幅、揺れ時間、および揺れ方向の算出例について説明する。
【0132】
第1の揺れ動作は、照準Sの揺れが停止した際、当該揺れが始まる前の位置に照準Sが戻るような揺れ動作である。第1の揺れ動作における揺れ幅Xmax1および揺れ時間Tmax1は、現時点におけるプレイヤの心拍数HRに応じて算出される。例えば、第1の揺れ動作における揺れ幅Xmax1は、プレイヤの心拍数HRが上限値を示した場合の値(例えば、4.0)と、プレイヤの心拍数HRが下限値を示した場合の値(例えば、1.0)とが予め設定されており、現時点の心拍数HRを直線補間することによって算出される。また、第1の揺れ動作における揺れ時間Tmax1も、プレイヤの心拍数HRが上限値を示した場合の値(例えば、1.0)と、プレイヤの心拍数HRが下限値を示した場合の値(例えば、0.7)とが予め設定されており、現時点の心拍数HRを直線補間することによって算出される。ここで、上記上限値および下限値は、上記ステップ68で設定された値(すなわち、心拍数上限値データDdおよび心拍数下限値データDeがそれぞれ示す上限値および下限値)が用いられ、現時点の心拍数HRは、心拍数データDbに格納されている最新の心拍数HRが用いられる。そして、何れの場合も、現時点の心拍数HRが上記上限値を超える場合に当該上限値に対応する値が設定され、現時点の心拍数HRが上記下限値未満の場合に当該下限値に対応する値が設定される。また、第1の揺れ動作における揺れ方向D1は、0〜2π(πは、円周率。以下も同様。)の間の値がランダムで選択される。
【0133】
第2の揺れ動作は、照準Sの揺れが停止した際、当該揺れが始まる前の位置とは異なる位置に照準Sが戻り得るような揺れ動作である。第2の揺れ動作における揺れ時間Tmax2は、現時点におけるプレイヤの心拍数HRに応じて算出される。例えば、第2の揺れ動作における揺れ時間Tmax2も、プレイヤの心拍数HRが上限値を示した場合の値(例えば、1.0)と、プレイヤの心拍数HRが下限値を示した場合の値(例えば、0.7)とが予め設定されており、現時点の心拍数HRを直線補間することによって算出される。そして、上記上限値および下限値は、上記ステップ68で設定された値(すなわち、心拍数上限値データDdおよび心拍数下限値データDeがそれぞれ示す上限値および下限値)が用いられ、現時点の心拍数HRは、心拍数データDbに格納されている最新の心拍数HRが用いられる。そして、何れの場合も、現時点の心拍数HRが上記上限値を超える場合に当該上限値に対応する値が設定され、現時点の心拍数HRが上記下限値未満の場合に当該下限値に対応する値が設定される。したがって、典型的には、第2の揺れ動作における揺れ時間Tmax2と第1の揺れ動作における揺れ時間Tmax1とが同じ値となるが、異なる値に設定されてもかまわない。第2の揺れ動作における揺れ幅Xmax2は、0〜所定値(例えば、3.0)の間の値がランダムで選択される。また、第2の揺れ動作における揺れ方向D2は、0〜2πの間の値がランダムで選択される。
【0134】
次に、CPU10は、経過時間Tを初期化して経過時間データDjを更新し(ステップ84)、当該サブルーチンによる処理を終了する。上述したように、本実施例では、第1の揺れ動作および第2の揺れ動作を合成して照準Sが揺れるように動作させており、上記ステップ84では、それぞれの揺れ動作に対応する経過時間T1およびT2が初期化(例えば、何れも0に初期化)される。ここで、第1の揺れ動作における揺れ時間Tmax1と第2の揺れ動作における揺れ時間Tmax2とが必ず同じ値に設定される場合、上記ステップ84および以下に述べる処理で取り扱う経過時間Tは、1つだけでもかまわない。
【0135】
図15に戻り、上記ステップ49の揺れ処理初期設定の後、CPU10は、揺れ処理を行って(ステップ50)、次のステップ52に処理を進める。以下、
図18を参照して、上記ステップ50で行う揺れ処理について説明する。
【0136】
図18において、CPU10は、経過時間Tが揺れ時間Tmax未満であるか否かを判断する(ステップ92)。例えば、CPU10は、経過時間データDjが示す経過時間T1およびT2と、揺れ時間データDhが示す揺れ時間Tmax1およびTmax2とを参照し、Tmax1>T1、またはTmax2>T2であるか否かを判断する。そして、CPU10は、Tmax1>T1、またはTmax2>T2である場合(すなわち、経過時間T1のみが揺れ時間Tmax1に未到達の場合、経過時間T2のみが揺れ時間Tmax2に未到達の場合、経過時間T1が揺れ時間Tmax1に未到達で経過時間T2も揺れ時間Tmax2に未到達の場合)、次のステップ93に処理を進める。一方、CPU10は、Tmax1≦T1、かつTmax2≦T2である場合(すなわち、経過時間T1が揺れ時間Tmax1に到達して、経過時間T2も揺れ時間Tmax2に到達している場合)、次のステップ103に処理を進める。
【0137】
ステップ93において、CPU10は、プレイヤが発射操作を行ったか否かを判断する。例えば、上記ステップ43で取得した操作情報が、発射操作(例えば、Aボタン72dやBボタン72iを押下する操作)を示す場合、CPU10は、プレイヤが発射操作を行ったと判断する。そして、CPU10は、発射操作が行われていない場合、次のステップ94に処理を進める。一方、CPU10は、発射操作が行われた場合、次のステップ102に処理を進める。
【0138】
ステップ94において、CPU10は、プレイヤの操作に応じた指示位置を算出し、次のステップに処理を進める。なお、上記ステップ94で行う指示位置の算出方法については、上記ステップ47と同様であるため、詳細な説明を省略する。
【0139】
次に、CPU10は、経過時間Tを更新して(ステップ95)、次のステップに処理を進める。例えば、CPU10は、経過時間データDjが示す経過時間T1およびT2に、所定の値(例えば、前回の処理からの経過時間に相当する値)をそれぞれ加算し、加算後の経過時間T1およびT2を用いて経過時間データDjを更新する。
【0140】
次に、CPU10は、現在の第1揺れ幅X1を算出し(ステップ96)、次のステップに処理を進める。例えば、CPU10は、揺れ幅データDg、揺れ時間データDh、および経過時間データDjを参照して、現在の第1揺れ幅X1を
X1=Xmax1*cos(T1/Tmax1*π*4)*(Tmax1−T1)
2/Tmax1
2
で算出する。そして、CPU10は、算出された第1揺れ幅X1を用いて、現在の第1揺れ幅データDlを更新する。
【0141】
次に、CPU10は、第1オフセット値of1を算出し(ステップ97)、次のステップに処理を進める。例えば、CPU10は、揺れ方向データDiおよび現在の第1揺れ幅データDlを参照して、第1オフセット値of1を
of1x=X1*cos(D1)
of1y=X1*sin(D1)
で算出する。ここで、of1xは、第1オフセット値of1のx軸方向(横方向)成分である。of1yは、第1オフセット値of1のy軸方向(縦方向)成分である。そして、CPU10は、算出された第1オフセット値of1を用いて、第1オフセット値データDnを更新する。後述の説明により明らかとなるが、第1オフセット値of1は、指示位置によって配置されている照準Sの位置を変化させる量として加算される値となる。そして、第1オフセット値of1によって、照準Sは、指示位置に応じて配置されている照準Sの位置を中心として揺れ幅Xmax1分だけコサイン波で減衰していくように表示位置が揺れることになる。
【0142】
次に、CPU10は、現在の第2揺れ幅X2を算出し(ステップ98)、次のステップに処理を進める。例えば、CPU10は、揺れ幅データDg、揺れ時間データDh、および経過時間データDjを参照して、現在の第2揺れ幅X2を
X2=Xmax2*(1−cos(π*T2/Tmax2))/2
で算出する。そして、CPU10は、算出された第2揺れ幅X2を用いて、現在の第2揺れ幅データDmを更新する。
【0143】
次に、CPU10は、第2オフセット値of2を算出し(ステップ99)、次のステップに処理を進める。例えば、CPU10は、揺れ方向データDi、現在の第2揺れ幅データDm、および第1オフセット値データDnを参照して、第2オフセット値of2を
of2x=of1x+X2*cos(D2)
of2y=of1y+X2*sin(D2)
で算出する。ここで、of2xは、第2オフセット値of2のx軸方向(横方向)成分である。of2yは、第2オフセット値of2のy軸方向(縦方向)成分である。そして、CPU10は、算出された第2オフセット値of2を用いて、第2オフセット値データDoを更新する。このステップ99の処理によって、第1オフセット値of1に、経過時間T2の増加に応じて0からXmax2まで漸増的に増加する第2揺れ幅X2がランダムな方向(揺れ方向D2)に加算されて、第2オフセット値of2が得られることになる。つまり、第2オフセット値of2によって、照準Sは、指示位置に応じて配置されている照準Sの位置を中心として揺れ幅Xmax1分だけコサイン波で減衰していくように表示位置が揺れるとともに、その揺れ中心位置もランダムな方向にずれていくことになる。
【0144】
次に、CPU10は、プレイヤの指示位置および第2オフセット値of2に基づいて、照準位置を算出し(ステップ100)、次のステップに処理を進める。例えば、CPU10は、指示位置データDkが示す指示位置に、第2オフセット値データDoが示す第2オフセット値of2を加算する。そして、第2オフセット値of2が加算された指示位置に対応する照準位置を算出し、算出された照準位置を用いて照準位置データDpを更新する。一例として、指示位置が表示画面に設定された座標系に基づいた位置で示されている場合、CPU10は、第2オフセット値of2が加算された指示位置を仮想ゲーム世界内に射影変換(透視変換)した位置を照準位置として算出して、照準位置データDpを更新する。他の例として、指示位置が仮想ゲーム世界に設定された座標系に基づいた位置で示されている場合、CPU10は、第2オフセット値of2が加算された指示位置をそのまま照準位置に代入して、代入された照準位置を用いて照準位置データDpを更新する。なお、仮想ゲーム世界に3次元座標系が設定されており、指示位置が当該3次元座標系に基づいた座標データで示されている場合、第2オフセット値of2xを指示位置の当該3次元座標系における横方向成分(例えば、X軸方向成分)に加算し、第2オフセット値of2yを指示位置の当該3次元座標系における縦方向成分(例えば、Y軸方向成分)に加算してもよい。
【0145】
次に、CPU10は、指示位置に対応する位置(例えば、指示位置や照準位置)に照準Sを配置して、仮想ゲーム世界とともにモニタ2に表示し(ステップ101)、当該サブルーチンによる処理を終了する。例えば、CPU10は、表示画面に設定された座標系に基づいた指示位置や仮想ゲーム世界に設定された座標系に基づいた照準位置に照準Sを配置して、仮想ゲーム世界とともにモニタ2に表示する。
【0146】
一方、上記ステップ92においてTmax1≦T1、かつTmax2≦T2であると判断された場合(すなわち、経過時間T1が揺れ時間Tmax1に到達して、経過時間T2も揺れ時間Tmax2に到達していると判断された場合)、CPU10は、揺れフラグをオフに設定して揺れフラグデータDfを更新し(ステップ103)、上記ステップ46(
図15)に処理を進める。
【0147】
また、上記ステップ93においてプレイヤが発射操作を行ったと判断された場合、CPU10は、揺れフラグをオフに設定して揺れフラグデータDfを更新し(ステップ102)、次のステップ51(
図15)に処理を進める。
【0148】
図15に戻り、上記ステップ46において現時点が発射操作中であると判断された場合、または上記ステップ93でプレイヤが発射操作を行ったと判断された場合、CPU10は、照準位置に応じて矢オブジェクトAを飛行させ(ステップ51)、次のステップ52に処理を進める。例えば、上記ステップ51において、CPU10は、プレイヤキャラクタPCが弓に矢オブジェクトAをセットしている位置から、照準位置データDpが示す照準位置に向かって仮想ゲーム世界内を矢オブジェクトAが所定の速度で他のオブジェクトと衝突するまで飛行するように、矢オブジェクト位置データDqが示す位置を更新する。そして、CPU10は、更新された位置に応じて、矢オブジェクトAを仮想ゲーム世界に配置してモニタ2に表示する。なお、上記ステップ51の処理(すなわち、発射操作中の処理)では、照準Sをモニタ2に表示したままでもいいし、プレイヤの発射操作に応じて照準Sを未表示にしてもよい。
【0149】
ステップ52において、CPU10は、他のゲーム処理を行って、次のステップに処理を進める。例えば、上記ステップ52において、CPU10は、プレイヤキャラクタPCにプレイヤの操作に応じた動作を行わせて、モニタ2に表示する。また、CPU10は、矢オブジェクトAが標的オブジェクトTに当たった場合、射られた位置に応じた得点を抽出して、モニタ2に表示する。また、CPU10は、仮想ゲーム世界に配置されている他のオブジェクトに関する処理を行う。
【0150】
次に、CPU10は、ゲームを終了するか否かを判断する(ステップ53)。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。CPU10は、ゲームを終了しない場合に上記ステップ43に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。
【0151】
このように、上述したゲーム処理によれば、矢オブジェクトAが飛行する際の目標となる照準Sは、プレイヤが指示位置を指示する操作だけでなく、プレイヤ自身の生体信号に応じて、その位置が決定されるため、プレイヤが容易に結果を予測できない趣向性の高い操作が可能となる。また、照準Sが生体信号に応じて揺れる揺れ幅や揺れ時間等がプレイヤの心拍数HRに基づいて設定され、照準Sが揺れる揺れ方向もランダムに設定されるため、さらにプレイヤが容易に結果を予測できない趣向性の高い操作が可能となる。
【0152】
なお、上述したゲーム例では、仮想ゲーム世界においてプレイヤキャラクタPCが標的オブジェクトTを狙って矢オブジェクトAを発射(リリース)するアーチェリーゲームを用いたが、本発明は他のゲームにも適用できることは言うまでもない。例えば、本発明は、仮想ゲーム世界において設定される照準を目標として発射オブジェクト(発射物)を発射する、いわゆるシューティングゲーム等に適用することができる。ここで、上述した例では、上記発射オブジェクトの一例として矢オブジェクトAを用いているが、「発射オブジェクト」は、矢を表すものでなくてもよく、仮想ゲーム世界における銃弾、砲弾、爆弾、手榴弾、ロケット弾、ミサイル弾、ボール、矢、ビーム、レーザ光線等であってもよい。また、ゲームの設定上、モニタ2には表現されない不可視のオブジェクトを照準に向かって発射するゲームでもよい。
【0153】
また、上述したゲームでは、発射オブジェクト(矢オブジェクトA)を発射する際の目標となる標的(標的オブジェクトT)が、仮想ゲーム世界において固定されている例を用いたが、標的が移動するようなゲームに本発明を適用することもできる。例えば、仮想ゲーム世界内を移動可能なオブジェクト(例えば、敵オブジェクト)が発射オブジェクトの標的として配置され、照準を用いて当該オブジェクトを狙い撃つようなゲーム等にも適用することができる。この場合、標的となるオブジェクトが仮想ゲーム世界においてプレイヤキャラクタに近づくように移動し、当該オブジェクトがプレイヤキャラクタに対して所定の距離以内に接近した場合にゲームオーバーとなるようなゲーム等にも適用することができる。
【0154】
また、上述したゲーム処理では、発射操作中(プレイヤが発射操作している状態や、矢オブジェクトAが弓からリリースされた後であって、次の矢オブジェクトAが当該弓に再セットされるまでの期間)においては、照準Sの位置が発射操作直前の位置に固定される例を用いたが、発射操作中であっても照準Sの位置を移動可能にしてもかまわない。この場合、プレイヤは、仮想ゲーム世界において発射オブジェクトが飛行中であっても、当該発射オブジェクトの飛行目標を操作部72(例えば、十字キー72a)の操作によって変更できるとともに、プレイヤ自身の生体信号によっても当該飛行目標が変化するため、さらに趣向性の高い操作が可能となる。
【0155】
また、上述した説明では、設定される照準を目標として仮想ゲーム世界において発射オブジェクトを発射するゲームに、本発明を適用した例を用いたが、本発明は、他のゲームにも適用することができる。例えば、本発明は、プレイヤの操作に応じて仮想ゲーム世界に対する指示位置が設定され、当該指示位置を用いて何らかの処理が行われるゲームであれば、適用することが可能である。一例として、プレイヤの操作に応じて設定された指示位置に対応する仮想ゲーム世界の位置または指示位置の近傍に対応する仮想ゲーム世界の位置に配置されているオブジェクトを、プレイヤ操作可能なオブジェクト(例えば、プレイヤオブジェクト、アイコン、カーソル等)を用いてつかんだり移動させたりするような、指示位置に対応するゲームオブジェクトに対して何らかの動作をさせるゲームにも本発明を適用することができる。他の例として、プレイヤの操作に応じて設定された指示位置に対応する仮想ゲーム世界の位置にプレイヤキャラクタを移動させるゲームにも本発明を適用することができる。これらのようなゲームであっても、プレイヤによって設定された指示位置に対応する仮想ゲーム世界の位置が、プレイヤの生体信号に応じて変化するため、プレイヤにとって上記動作や移動をさせるための操作の結果が容易に予測できず、趣向性の高い操作が可能となる。
【0156】
また、上述したゲーム処理では、プレイヤによって設定される指示位置(照準Sの位置)が、十字キー72aを押下することに応じて指定される方向に応じて変更可能な例を用いたが、当該指示位置は他の入力デバイスを用いて設定されてもかまわない。例えば、コアユニット70に固設されたセンサから出力されるデータを用いて、指示位置を移動させてもかまわない。具体的には、重力方向に対してコアユニット70の傾き(以下、単に「傾き」と言う)に応じたデータを出力するセンサ(加速度センサ701や傾きセンサ)、コアユニット70の方位に応じたデータを出力するセンサ(磁気センサ)、コアユニット70の回転運動に応じたデータを出力するセンサ(ジャイロセンサ)等をコアユニット70に設け、当該センサから出力されるデータを用いることができる。この場合、上記データを用いて判定可能なコアユニット70の動きや傾きに応じて、指示位置(照準Sの位置)を移動させればよい。
【0157】
また、プレイヤによって設定される指示位置が、ポインティングデバイスに応じて指定されるポインティング位置に応じて変更可能であってもよい。ここで、ポインティングデバイスは、画面上での入力位置や座標を指定する入力装置であり、例えば、タッチパネル、マウス、トラックパッド、トラックボール等を入力デバイスとして使用し、入力デバイスから出力される出力値から計算された画面座標系の位置情報を用いて上記指示位置を設定してもよい。
【0158】
なお、上述したように、コアユニット70に固設された撮像情報演算部74を、上記ポインティングデバイスとして利用することも可能である。この場合、コアユニット70のハウジング71で指し示した位置の変化に応じて撮像情報演算部74が撮像する撮像画像が変化する。したがって、この撮像画像を解析することにより、表示画面に対して上記ハウジング71で指し示した座標を上記指示位置として算出することができる。ここで、撮像情報演算部74をポインティングデバイスとして利用する態様は、表示画面に対して遠隔から座標指定するために、コアユニット70に設けられた撮像素子743で撮像対象を撮像した画像データを解析することによって、モニタ2の表示画面に対する指示位置を指定している。この態様は、表示画面近傍に撮像対象となる2つのマーカを設置し、撮像手段およびその撮像方向を自在に変更可能なハウジングを備えたデバイスが撮像画像中の2つのマーカを検出し、当該撮像画像におけるマーカの位置に基づいて当該デバイスが指定する座標位置を導出するものである。しかしながら、他の態様で上記座標位置の指定を行ってもかまわない。
【0159】
例えば、表示画面近傍に設置する撮像対象は、上述した電気的なマーカ(LEDモジュール)の他に、光を反射する部材や特定色や特定形状を有する物理的なマーカでもかまわない。また、モニタ2の表示画面に撮像対象を表示してもかまわない。また、コアユニット70が備える撮像手段でラスタスキャン型モニタの走査線を読み取ることによって、当該モニタ自体を撮像対象にしてもかまわない。また、磁気発生装置を設け、当該磁気発生装置から生じる磁気を利用して遠隔から座標位置を指定してもかまわない。この場合、コアユニット70には、上記磁気を検出するための磁気センサを設けることになる。
【0160】
また、上述した説明では、2つのマーカ8Lおよび8Rからの赤外光を、コアユニット70の撮像情報演算部74の撮像対象としたが、他のものを撮像対象にしてもかまわない。例えば、1つまたは3つ以上のマーカをモニタ2の近傍に設置し、それらのマーカからの赤外光を撮像情報演算部74の撮像対象としてもかまわない。例えば、所定の長さを有する1つのマーカをモニタ2の近傍に設置しても、本発明を同様に実現することができる。また、モニタ2の表示画面自体や他の発光体(室内灯等)を撮像情報演算部74の撮像対象としてもかまわない。撮像対象とモニタ2の表示画面との配置関係に基づいて、当該表示画面に対するコアユニット70の位置を演算すれば、様々な発光体を撮像情報演算部74の撮像対象として用いることができる。
【0161】
また、コアユニット70側にマーカ等の撮像対象を設けて、撮像手段をモニタ2側に設けてもかまわない。さらに他の例では、コアユニット70の前面から光を放射する機構を設けてもかまわない。この場合、コアユニット70およびモニタ2とは別の場所にモニタ2の表示画面を撮像する撮像装置を設置し、モニタ2の表示画面にコアユニット70から放射された光が反射した位置を当該撮像装置が撮像した画像から解析することによって、同様に表示画面に対して遠隔から座標指定するためのデータを出力可能なポインティングデバイスを構成することができる。
【0162】
また、上記指示位置を指示するためのセンサがコアユニット70の外部に別設可能である場合、コアユニット70を用いなくてもかまわない。一例として、センサとしてのカメラで単にプレイヤを撮影し、撮像画像内に撮像されたプレイヤの画像を解析することによりプレイヤの動きや姿勢を判断して、当該判断結果に応じて照準Sを移動させることができる。また、プレイヤが乗って操作する入力装置(例えば、ボード型コントローラ)に設けられ、当該入力装置上に作用している重量や物体の有無等を検知するセンサを用いて、当該入力装置を操作するプレイヤの動きや姿勢を判断して、当該判断結果に応じて照準Sを移動させることができる。これらの態様のセンサを用いて、照準Sを移動させる場合、コアユニット70を用いなくてもかまわない。
【0163】
また、上述したゲーム処理例では、2つの揺れ動作(第1の揺れ動作および第2の揺れ動作)を合成して照準Sが揺れるように動作させているが、照準Sを揺らす態様はこれに限られない。例えば、上述した第1の揺れ動作および第2の揺れ動作の何れか一方のみを用いて、照準Sを揺れるように動作させてもかまわない。
【0164】
例えば、照準Sの揺れが停止した際、当該揺れが始まる前の位置とは異なる位置に照準Sが戻った場合、ポインティングした位置によって直接的に画面の指示位置を指定するような操作(例えば、タッチパネルや撮像情報演算部74を用いたポインティング操作)では、揺れ動作が停止したときに指示位置がずれるようなことがあり得る。したがって、このような操作で照準Sを移動させる場合、第1の揺れ動作(すなわち、照準Sの揺れが停止した際、当該揺れが始まる前の位置に照準Sが戻る揺れ動作)のみを用いて照準Sを揺らす方が操作の違和感が少なくなることが考えられる。
【0165】
また、上記第2の揺れ動作のみを用いて照準Sを揺らす場合、照準Sの位置が時間経過に応じて0から揺れ
幅Xmax2まで漸増的に増加する第2揺れ幅X2がランダムな方向にオフセットされるように変化することになる。したがって、上記第2の揺れ動作のみを用いて照準Sの位置を変化させる場合、厳密には、照準Sが揺れるように表示されるのではなく、その表示位置がランダムな方向にずれていくように動いていくことになる。しかしながら、本発明は、プレイヤの操作に応じて仮想ゲーム世界に対する照準Sの表示位置が設定され、当該表示位置がプレイヤの生体信号に応じて変化すればよく、揺れるような変化でなく単に照準Sの表示位置がずれるように変化してもよい。
【0166】
また、上述した第1の揺れ動作および第2の揺れ動作の少なくとも一方を用いて、照準Sの位置を変化させてもかまわない。具体的には、上記ステップ83における第2の揺れ動作の振れ幅Xmax2が0に設定された場合、照準Sは、結果的に第1の揺れ動作だけを用いて揺れることになる。このように、上記ステップ83における揺れの設定値の設定基準を調整することによって、第1の揺れ動作および第2の揺れ動作の少なくとも一方が用いられるように照準Sの位置を変化させることも可能となる。
【0167】
また、上述した説明では、プレイヤの心拍数HRに基づいて、照準Sの揺れ動作における揺れ幅Xmax、揺れ時間Tmax等を設定したが、プレイヤから得られる他のパラメータに基づいて揺れ動作を設定する各パラメータを設定してもかまわない。例えば、プレイヤから得られる脈波、交感神経活動度、副交感神経活動度、心拍変動係数、心拍間隔、呼吸周期、脈波振幅等から選ばれた少なくとも1つのパラメータに基づいて、揺れ動作を設定する各パラメータを設定してもかまわない。また、上述した説明では、プレイヤの拍タイミング毎に照準Sの位置を揺らす動作を一時的に行っているが、プレイヤから得られる周期性を有する他のパラメータ(例えば、呼吸周期)の周期毎に照準Sの位置を揺らす動作を一時的に行ってもかまわない。
【0168】
また、上述した説明では、プレイヤの身体の一部(例えば、指先)に赤外線を照射し、当該身体の一部を透過して受光された赤外線の光量に基づいてプレイヤの生体信号(脈波信号)を得る、いわゆる光学方式によって血管の容積変化を検出して容積脈波を得る例を用いている。しかしながら、本発明では、プレイヤが身体活動する際に起こる生理的な情報が得られる他の形式のセンサを用いて、プレイヤの生体信号を取得してもかまわない。例えば、動脈の脈動による血管内の圧力変位を検出(例えば、圧電方式)して圧脈波を得ることによって、プレイヤの生体信号を取得してもかまわない。また、プレイヤの筋電位や心電位を、プレイヤの生体信号として取得してもかまわない。筋電位や心電位は、電極を用いた一般的な検出方法により検出することができ、例えば、プレイヤの身体における微細な電流の変化等に基づいて、プレイヤの生体信号を取得することができる。また、プレイヤの血流を、プレイヤの生体信号として取得してもかまわない。血流は、電磁法や超音波法等を用いて1心拍ごとの脈動血流として測定され、当該脈動血流をプレイヤの生体信号として取得することができる。当然ながら、上述した各種生体信号を得るために、プレイヤの指部以外の箇所(例えば、胸部、腕、耳たぶ等)にバイタルセンサを装着してもかまわない。取得する生体信号によっては、厳密には脈拍と心拍との差が生じることになるが、心拍数と脈拍数という見方をした場合ほぼ同じ値と考えられるので、取得される生体信号を上述した処理と同様に取り扱うことができる。
【0169】
また、上述した説明では、バイタルセンサ76から脈波信号を示すデータをゲーム装置本体5に送信し、ゲーム装置本体5において当該脈波信号から様々なパラメータを算出したが、他の処理段階のデータをゲーム装置本体5に送信してもかまわない。例えば、バイタルセンサ76において、拍タイミングの検出、拍タイミング間の時間間隔(心拍間隔)、心拍数HR、脈波振幅PA、および脈波面積PWAを示すパラメータを算出して、当該パラメータを示すデータをゲーム装置本体5に送信してもかまわない。また、上記脈波信号から上記パラメータを算出する途中段階のデータをバイタルセンサ76からゲーム装置本体5に送信してもかまわない。
【0170】
また、上述した説明ではゲーム処理をコントローラ7(バイタルセンサ76、コアユニット70)およびゲーム装置本体5(すなわち、ゲーム装置3)で行う例を用いたが、上記ゲーム処理における処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲーム装置3が他の装置(例えば、サーバや他のゲーム装置)と通信可能に構成されている場合、上記ゲーム処理における処理ステップは、ゲーム装置3および当該他の装置が協働することによって実行してもよい。一例として、他の装置において仮想ゲーム世界が設定されている場合、バイタルセンサ76から出力される脈波信号およびコアユニット70から出力されるキーデータを他の装置へ送信し、他の装置において以降のゲーム処理を行った後、ゲーム装置3で表示処理を行うことが考えられる。また、他の例として、他の装置において仮想ゲーム世界が設定されている場合、上述したゲーム処理における途中段階のデータ(例えば、拍タイミングと拍タイミングの間隔(例えば、心拍数HR)とを示すデータや、照準位置を示すデータと発射操作を示すデータ)を、ゲーム装置3から他の装置へ送信し、送信したデータを用いた処理を当該他の装置で行った後、ゲーム装置3で表示処理を行うことが考えられる。このように、上記ゲーム処理における処理ステップの少なくとも一部を他の装置で行うことによって、上述したゲーム処理と同様の処理が可能となるとともに、他の装置において実現されている仮想ゲーム世界に複数のゲーム装置のプレイヤが参加するゲーム処理(例えば、他の装置で動作しているゲームに複数のゲーム装置のプレイヤが参加してゲーム進行を共有するオンラインゲーム)にも本発明を適用することも可能となる。上述したゲーム処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。
【0171】
また、上記実施例では、据置型のゲーム装置3に本願発明を適用した例を説明したが、バイタルセンサと、プレイヤの操作を入力する入力装置と、これらの装置から得られる情報に応じた処理を実行する情報処理装置とがあればよく、例えば一般的なパーソナルコンピュータ、携帯電話機、PDA(Personal Digital Assistant)、携帯ゲーム装置等のデバイスにも適用することができる。
【0172】
また、上述した説明では、コアユニット70とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コアユニット70とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コアユニット70に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
【0173】
また、コントローラ7を構成するコアユニット70およびバイタルセンサ76のうち、コアユニット70のみに通信部75を設けたが、バイタルセンサ76にゲーム装置本体5へ生体情報データを無線送信する通信部を設けてもかまわない。また、コアユニット70およびバイタルセンサ76それぞれに上記通信部を設けてもかまわない。例えば、コアユニット70およびバイタルセンサ76に設けられた通信部がそれぞれゲーム装置本体5へ生体情報データや操作データを無線送信してもいいし、バイタルセンサ76の通信部からコアユニット70へ生体情報データを無線送信してコアユニット70の通信部75で受信した後、コアユニット70の通信部75がバイタルセンサ76の生体情報データと共にコアユニット70の操作データをゲーム装置本体5へ無線送信してもいい。これらの場合、コアユニット70とバイタルセンサ76とを電気的に接続する接続ケーブル79が不要となる。
【0174】
また、上述したコアユニット70の形状や、それに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述したバイタルセンサ76の形状や、それに設けられている構成要素の種類、数、および設置位置等は、単なる一例に過ぎず他の種類、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した処理で用いられる係数、判定値、数式、処理順序等は、単なる一例に過ぎず他の値や数式や処理順序であっても、本発明を実現できることは言うまでもない。
【0175】
また、上記ゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、ゲームプログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記ゲームプログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、不揮発性メモリなどでもよい。また、上記ゲームプログラムを記憶する情報記憶媒体としては、上記ゲームプログラムを一時的に記憶する情報記憶媒体として揮発性メモリでもよい。
【0176】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。