図1を参照して、本発明の一実施形態に係る音再生プログラムを実行する装置について説明する。以下、説明を具体的にするために、当該装置の一例の据置型のゲーム装置本体5を含むゲームシステムについて説明する。なお、図1は据置型のゲーム装置3を含むゲームシステム1の外観図であり、図2はゲーム装置本体5のブロック図である。以下、当該ゲームシステム1について説明する。
図1において、ゲームシステム1は、表示手段の一例の家庭用テレビジョン受像機(以下、モニタと記載する)2と、当該モニタ2に接続コードを介して接続する据置型のゲーム装置3とから構成される。モニタ2は、ゲーム装置本体5から出力された音声信号を音声出力するためのスピーカ2aを備える。また、ゲーム装置3は、本願発明の音再生プログラムの一例であるゲームプログラムを記録した光ディスク4と、当該光ディスク4のゲームプログラムを実行してゲーム画面をモニタ2に表示出力させるためのコンピュータを搭載したゲーム装置本体5と、ゲーム画面に表示されたキャラクタ等を操作するゲームに必要な操作情報をゲーム装置本体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に表示することもできる。そして、ゲーム装置本体5のプレイヤは、モニタ2に表示されたゲーム画像を見ながら、コントローラ7を操作することによって、ゲーム進行を楽しむことができる。
コントローラ7は、無線コントローラモジュール19を内蔵するゲーム装置本体5へ、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて操作情報等の送信データを無線送信する。コントローラ7は、主にモニタ2の表示画面に表示されるオブジェクト等を操作するための操作手段である。コントローラ7は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン(十字キーやスティック等を含む)とが設けられている。また、後述により明らかとなるが、コントローラ7は、当該コントローラ7から見た画像を撮像する撮像情報演算部74を備えている。また、撮像情報演算部74の撮像対象の一例として、モニタ2の表示画面近傍に2つのLEDモジュール(以下、マーカと記載する)8Lおよび8Rが設置される。これらマーカ8Lおよび8Rは、それぞれモニタ2の前方に向かって例えば赤外光を出力する。また、コントローラ7は、ゲーム装置本体5の無線コントローラモジュール19から無線送信された送信データを通信部75で受信して、当該送信データに応じた音や振動を発生させることもできる。
次に、図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に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。例えば、DSP33は、ゲームプログラム実行時にCPU10において処理されるサウンドデータ(例えば、MIDI(Musical Instrument Digital Interface)データ)等を処理するものであり、そのサウンドデータ等が内部メインメモリ35や外部メインメモリ12に記憶される。そして、スピーカ2aから音を出力させる場合、DSP33は、上記サウンドデータを読み出し、AV−IC15およびAVコネクタ16を介して、モニタ2に備えるスピーカ2aに出力させる。また、コントローラ7に搭載されたスピーカ706(図7参照)から音を出力させる場合、DSP33は、上記サウンドデータを読み出し、無線コントローラモジュール19およびアンテナ23を介して、音声データをコントローラ7に送信する。このように、MIDIデータに基づいて音楽を演奏する場合、DSP33および内部メインメモリ35や外部メインメモリ12がMIDI音源として機能する。
上述のように生成された画像データおよび音声データは、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を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング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が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、無線コントローラモジュール19からコントローラ7へ、複数のLED702のうち、上記コントローラ種別に対応するLEDを点灯させるための信号が送信される。
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5に示すスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング70の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。また、無線モジュール753(図7参照)およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。
また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分が含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の動きを良好な感度でゲーム装置本体5等が判定することができる。例えば、コントローラ7は、3軸の加速度センサ701を備えている。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。そして、加速度センサ701でそれぞれ検知された加速度を示すデータは、通信部75に出力される。
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ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が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体5からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体5から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体5から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術を用いて、操作情報を示す電波信号を所定周波数の搬送波を用いてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置本体5の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体5で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体5のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
次に、ゲーム装置本体5が行う具体的な処理を説明する前に、図8〜図10を参照してゲーム装置本体5で行う音再生処理の概要について説明する。後述する音再生処理の一例は、2次元または3次元の仮想ゲーム世界に操作対象オブジェクトの一例であるプレイヤキャラクタPCおよび発音オブジェクトの一例であるアイテムI等が登場し、当該プレイヤキャラクタPCとアイテムIとの衝突に応じて音が発生するアクションゲームに適用した例である。この場合、ゲーム画像を生成するための仮想カメラやプレイヤキャラクタPCの移動に関する座標変換処理や、アイテムIや敵キャラクタ等のノンプレイヤキャラクタ(NPC)を配置したり移動させたりするNPC制御処理等、ゲームを進行する上で必要となる周知の処理が行われる。
図8において、仮想ゲーム世界には、プレイヤキャラクタPCおよびn個のアイテムI1〜In(以下、アイテムIと総称することがある)が配置されている。プレイヤキャラクタPCは、プレイヤがコントローラ7を操作することに応じて仮想ゲーム世界を移動する操作対象オブジェクトであり、例えばゴール地点へ到達する等のミッションクリアを目指す。例えば、プレイヤキャラクタPCは、プレイヤが把持するコントローラ7の操作に応じて動作し、敵オブジェクトを倒したり、アイテムIを取得したりしながら仮想ゲーム世界に構築されたゲームフィールド上を移動する。このとき、プレイヤキャラクタPCの移動速度は、例えば、コントローラ7に配設された特定ボタンの押動操作の有無または押動時間、加速度センサ701により検出された加速度データから算出されるコントローラ7自体の動きや傾き等によって、動的に変化する。また、プレイヤキャラクタPCの移動速度は、プレイヤがジョイスティック等を装備した入力装置を操作するときは、当該ジョイスティックの傾き量等によって動的に変化する。
アイテムIは、プレイヤキャラクタPCが衝突することで取得可能であり、アイテムIを取得することでプレイヤキャラクタPCの助けとなったりゲーム得点が加算されたりし、仮想ゲーム世界において静止または移動可能な状態で適宜配置される。例えば、アイテムIは、ゲームフィールド上の所定位置に複数並設して配置される。そして、プレイヤキャラクタPCがアイテムIと衝突すると、アイテムI群に関連付けて予め用意された楽曲の音データに基づいてその楽曲が出力される。すなわち、これらアイテムIは、本発明における発音オブジェクトとして機能する。本実施例では、ゲームフィールド上に所定の間隔を空けて複数のアイテムIを連続的に配置しており、これらのアイテムIと1つずつ衝突していくと、1つの楽曲を表す音データが例えば1小節ずつ順番に部分再生されてスピーカ2aから出力される。
また、仮想ゲーム世界には、プレイヤキャラクタPCおよびアイテムIの他、プレイヤのミッションクリアを邪魔する敵オブジェクト等が静止または移動可能な状態で適宜配置される。これらのプレイヤキャラクタPC、アイテムI、および敵オブジェクトは、例えば複数のポリゴンデータおよびテクスチャデータを組み合わせて、仮想ゲーム世界に配置されている。また、プレイヤキャラクタPCおよびアイテムIは、他のオブジェクトとの衝突判定のために不可視の円柱または球形状等で形成された衝突判定領域をそれぞれ持っている。
図8においては、上述したアクションゲームの3次元仮想ゲーム世界の座標空間を、任意の視点座標系を有する仮想カメラから撮影した状態を示すゲーム画面が示されている。このアクションゲームでは、プレイヤが仮想ゲーム世界に配置されたプレイヤキャラクタPCを操作し、プレイヤキャラクタPCと複数のアイテムIとが順次衝突(接触)することによって衝突したアイテムIを次々と取得する。例えば、図8に示したゲーム例においては、プレイヤキャラクタPCが移動速度vで画面右方向へ進むことによって、アイテムI1〜Inと次々に衝突する。
図9および図10に示すように、プレイヤキャラクタPCとアイテムIとが衝突したとき、スピーカ2a等から当該衝突に応じた音が出力される。具体的には、予め用意された楽曲の音データを分割して複数の部分音データDfa1〜Dfanが生成されている。そして、上記衝突に応じて、複数の部分音データDfa1〜Dfanから選択されたデータが再生対象となる。例えば、図9においては、プレイヤキャラクタPCとアイテムI1とが衝突することに応じて部分音データDfa1が再生対象として選択され、当該部分音データDfa1に基づいた音がスピーカ2aから出力されている。そして、アイテムI1と近接するアイテムI2を2個目、アイテムI3を3個目としてプレイヤキャラクタPCが連続して衝突する場合は、対応する部分音データDfa2およびDfa3が順次再生対象となる。図10においては、プレイヤキャラクタPCと3個目のアイテムI3とが衝突することに応じて部分音データDfa3が再生対象として選択され、当該部分音データDfa3に基づいた音がスピーカ2aから出力されている。
所定の間隔を空けて連続して配置された複数のアイテムIを1つのアイテム群として、1つの楽曲を表す音データを当該アイテム群に属するアイテム数と同数に分割して部分音データを作成してもかまわない。この場合、プレイヤキャラクタPCと上記アイテム群に属するアイテムIの全てとが衝突することによって、1つの楽曲が再生されて出力されることになる。ここで、アイテムIとの衝突に応じて選択される部分音データは、各アイテムIに予め関連付けられた固有のデータでもいいし、衝突毎に上記楽曲の演奏順に選択されてもかまわない。前者の場合、プレイヤキャラクタPCがアイテムIに衝突する順序に応じて再生対象となる部分音データが変化することになる。つまり、プレイヤキャラクタPCがアイテムIに対して正しい衝突順序で衝突しない限り、楽曲が正しい演奏順序で再生されない。一方、後者の場合、プレイヤキャラクタPCがアイテムIに衝突する順序が変わっても再生対象となる部分音データが楽曲の再生順序で選択されることになる。つまり、プレイヤキャラクタPCがアイテムIに対して無作為に衝突しても、楽曲が正しい演奏順序で再生される。
プレイヤキャラクタPCが連続して複数のアイテムIと衝突することによって、1つの楽曲の断片が順次再生対象となり、結果として1つの完成された楽曲として出力される。本実施例のアクションゲームでは、このような仕組みに基づいて、部分音データDfa1〜Dfanを再生する条件(例えば、再生パラメータの1つである再生テンポ)を、プレイヤキャラクタPCの状態(例えば、仮想ゲーム世界中の移動速度)によって変化させる。具体的には、プレイヤキャラクタPCの移動速度が速い状態(例えばダッシュ状態)でアイテムIと衝突した場合、再生テンポを速くする。一方、プレイヤキャラクタPCの移動速度が遅い状態(例えばゆっくり移動する状態)でアイテムIと衝突した場合、再生テンポを遅くする。なお、上述したプレイヤキャラクタPCの移動速度は、仮想ゲーム世界に設定された座標系でのプレイヤキャラクタPCの絶対速度を示すが、衝突するアイテムIとプレイヤキャラクタPCとの間の相対速度を用いて部分音データDfa1〜Dfanを再生する再生テンポを変化させてもかまわない。
このように、プレイヤキャラクタPCの状態に応じて部分音データDfa1〜Dfanを再生する条件が変化するため、インタラクティブ性に富んだ興趣ある音再生が実現できる。また、プレイヤキャラクタPCの移動速度が仮想ゲーム世界中で多様に変化する条件下で、連続してアイテムIと衝突した際にそれぞれ再生対象となる楽曲の各断片の再生が、極端に重複したり、極端な時間的空白が発生したりすることが少なくなる。したがって、設定された楽曲がスムーズに連結されることになる。つまり、プレイヤキャラクタPCがアイテムIと連続衝突することに応じて、1つの楽曲の1部を構成する部分楽曲が順次連続再生される場合、プレイヤキャラクタPCの移動速度が速すぎて、前の部分楽曲の末部と次の部分楽曲の初部とが重畳して再生されることを抑制できる。一方、プレイヤキャラクタPCの移動速度が遅すぎて、前の部分楽曲の最後と次の部分楽曲の最初との間に意図しない休符が生じることも抑制できる。なお、部分楽曲を再生する順序を考慮しない場合、プレイヤキャラクタPCとアイテムIとの衝突毎に、上記部分音データが無作為に選択されてもかまわない。また、アイテムIは、不可視でもかまわない。
次に、ゲームシステム1において行われるゲーム処理の詳細を説明する。まず、図11を参照して、ゲーム処理において用いられる主なデータについて説明する。なお、図11は、ゲーム装置本体5の外部メインメモリ12および/または内部メインメモリ35(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータを示す図である。
図11に示すように、メインメモリには、キーデータDa、プレイヤキャラクタ位置データDb、アイテム位置データDc、プレイヤキャラクタ移動速度データDd、距離データDe、音データDf、対象音データDg、再生テンポデータDh、および画像データDi等が記憶される。なお、メインメモリには、図11に示す情報に含まれるデータの他、ゲームに登場する他のオブジェクト等に関するデータ(位置データや画像データ等)や仮想ゲーム世界に関するデータ(背景のデータ等)等、ゲーム処理に必要なデータが記憶される。
キーデータDaは、コントローラ7に設けられた操作部72に対する押動操作に応じたデータであり、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれるキーデータが格納される。このキーデータDaには、例えばプレイヤが十字キー72aを押動している状況を示すデータが含まれる。なお、ゲーム装置本体5に備える無線コントローラモジュール19は、コントローラ7から所定周期(例えば、1/200秒毎)に送信される操作情報に含まれるキーデータを受信し、無線コントローラモジュール19に備える図示しないバッファに蓄えられる。その後、上記バッファに蓄えられた最新のキーデータがゲーム処理周期である1フレーム毎(例えば、1/60秒毎)に読み出されて、メインメモリのキーデータDaが更新される。
また、後述する処理フローでは、キーデータDaがゲーム処理周期である1フレーム毎に更新される例を用いて説明するが、他の処理周期で更新されてもかまわない。例えば、コントローラ7からの送信周期毎にキーデータDaを更新し、当該更新されたキーデータをゲーム処理周期毎に利用する態様でもかまわない。この場合、キーデータDaを更新する周期と、ゲーム処理周期とが異なることになる。
プレイヤキャラクタ位置データDbは、仮想ゲーム世界におけるプレイヤキャラクタPCの位置を示すデータである。例えば、プレイヤキャラクタ位置データDbは、仮想ゲーム世界に設定された座標系に基づいた位置座標を示すデータが格納される。アイテム位置データDcは、仮想ゲーム世界における複数のアイテムIの位置をそれぞれ示すデータである。例えば、アイテム位置データDcは、仮想ゲーム世界に設定された座標系に基づいた位置座標をアイテムI毎に示すデータが格納される。
プレイヤキャラクタ移動速度データDdは、仮想ゲーム世界におけるプレイヤキャラクタPCの移動速度vを示すデータである。例えば、プレイヤキャラクタ移動速度データDdは、プレイヤキャラクタPCが上記ゲーム処理周期である1フレーム毎に仮想ゲーム世界を移動する距離を移動速度vとし、当該移動速度vを示すデータが格納される。
距離データDeは、プレイヤキャラクタPCと衝突したアイテムIと、次に衝突が予測される別のアイテムIとの間の距離dを示すデータである。例えば、距離データDeは、プレイヤキャラクタPCと衝突したアイテムIと、次に衝突が予測される別のアイテムIとの間の仮想ゲーム世界における直線距離dを示すデータが格納される。
音データDfは、例えばMIDI形式の音源制御データで構成され、複数の楽曲をそれぞれ示す楽曲データDfa、Dfb、…を含んでいる。そして、各楽曲データDfa、Dfb、…は、それぞれ複数の部分音データに分割されている。例えば、楽曲Aを示す楽曲データDfaは、当該楽曲Aを所定の数で分割した部分楽曲をそれぞれ示す部分音データDfa1、Dfa2、…が含まれる。また、楽曲Bを示す楽曲データDfbは、当該楽曲Bを所定の数で分割した部分楽曲をそれぞれ示す部分音データDfb1、Dfb2、…が含まれる。
ここで、音データDfは、複数の楽器をMIDIチャンネルと称する複数のトラック(チャンネル)に割り当てたデータ構成(例えば、シーケンスデータ)でもよい。この場合、音データDfは、DSP33およびメインメモリ(音源)によって複数の楽器による音再生を行うために利用される。上記音源は、楽器それぞれに対応する音色を有しており、トラック毎に異なる音色を割り当てて、指定されたトラック番号に応じた音色の楽音をスピーカ2aから発生する。そして、上記音源は、CPU10から指示される演奏パラメータに基づいて指定された再生テンポで発音する。具体的には、音データDfは、複数のトラックに対して、トラック演奏データがそれぞれ記述されている。トラック演奏データは、各楽器の発音開始(ノートオン)および発音停止(ノートオフ)を示す情報、音の高さを示す情報、発音の強さを示す情報等を含む音符的な情報である。DSP33およびメインメモリは、再生テンポとトラック演奏データ(部分音データ)が指示されることによって、所定の音色の楽音を発生することができる。なお、音データDfが有するトラック数は、1つの楽器を1つのMIDIチャンネルに割り当てたデータ構成であってもかまわない。
対象音データDgは、プレイヤキャラクタPCとアイテムIとの衝突に応じて決定された再生対象となった部分音データを示している。例えば、対象音データDgは、プレイヤキャラクタPCとアイテムIとの衝突に応じて、音データDfに含まれる部分音データから再生対象が選択され、選択された再生対象を一意に示すデータ(例えば、部分音データのデータ番号)が記述される。
再生テンポデータDhは、選択された再生対象(部分音データ)を再生するテンポpを示すデータである。例えば、再生テンポデータDhは、プレイヤキャラクタPCの移動速度v等に応じて算出された再生テンポpを示すデータが格納される。
画像データDiは、プレイヤキャラクタ画像データDi1およびアイテム画像データDi2等を含んでいる。プレイヤキャラクタ画像データDi1およびアイテム画像データDi2は、それぞれ仮想ゲーム世界にプレイヤキャラクタPCおよびアイテムIを配置してゲーム画像を生成するための画像データ(例えば、ポリゴンデータやテクスチャデータ)である。
次に、図12を参照して、ゲーム装置本体5において行われるゲーム処理の詳細を説明する。なお、図12は、ゲーム装置本体5において実行されるゲーム処理の流れを示すフローチャートである。なお、図12に示すフローチャートにおいては、ゲーム処理のうち、プレイヤキャラクタPCとアイテムIとが衝突することに応じて、音を再生する処理について説明し、本願発明と直接関連しない他のゲーム処理については詳細な説明を省略する。また、図12では、CPU10が実行する各ステップを「S」と略称する。
ゲーム装置本体5の電源が投入されると、ゲーム装置本体5のCPU10は、ROM/RTC13に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図12に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
図12において、CPU10は、ゲーム初期設定処理を行い(ステップ41)、次のステップに処理を進める。例えば、上記ステップ41におけるゲーム初期設定処理では、ポリゴンにテクスチャマッピングして形成されるゲームフィールドオブジェクトを3次元空間座標系に配置してゲームフィールドを構築する。そして、複数のアイテムIおよびプレイヤキャラクタPCをゲームフィールドの所定位置に配置してモニタ2に表示し、各配置位置を示すデータをプレイヤキャラクタ位置データDbおよびアイテム位置データDcに格納する。これらアイテムIは、例えばプレイヤキャラクタPCが通過可能な順路等に沿って連続的に配置される。また、連続的に連なるアイテムI群は、衝突の際に再生される1つの楽曲データ(例えば、楽曲データDfa)が音データDfから選択されて関連付けられている。なお、CPU10は、ステップ41を実行することにより、操作対象オブジェクトとは異なる少なくとも1つの発音オブジェクトを仮想世界に配置する発音オブジェクト配置手段として機能する。
なお、連続的に配置された同じアイテムI群内の各アイテムIの配置間隔は、プレイヤキャラクタPCの移動速度と各アイテムIに対応して再生する部分楽曲の再生時間とを考慮した距離に設定するのが好ましい。具体的には、アイテムIが連続的に配置された順路をプレイヤキャラクタPCが普通の速度で移動して次々と衝突した場合に、前の部分楽曲の再生が終了するタイミングで次のアイテムIに衝突するような配置間隔で、同じアイテムI群内の各アイテムIを配置するのが好ましい。
次に、CPU10は、キーデータを取得して(ステップ42)、次のステップに処理を進める。例えば、CPU10は、コントローラ7から受信した最新の操作情報に含まれるキーデータを用いて、メインメモリのキーデータDaを更新する。
次に、CPU10は、上記ステップ42で取得したキーデータを用いて、プレイヤキャラクタPCの移動速度vおよび移動方向を決定し(ステップ43)、次のステップに処理を進める。例えば、CPU10は、特定ボタンの押動操作の有無や押動継続時間に応じて、プレイヤキャラクタPCの移動速度vおよび移動方向を決定し、当該移動速度vをプレイヤキャラクタ移動速度データDdに格納する。
次に、CPU10は、上記ステップ43で決定された移動速度vおよび移動方向に応じて、プレイヤキャラクタPCを仮想ゲーム世界内で移動させ(ステップ44)、次のステップに処理を進める。例えば、CPU10は、現在のプレイヤキャラクタPCの位置を、上記ステップ43で決定された移動方向に移動速度vの距離分だけ移動させた位置を算出して、当該位置を示す座標を用いてプレイヤキャラクタ位置データDbを更新する。そして、CPU10は、算出された位置にプレイヤキャラクタPCを配置して、モニタ2に表示する。
次に、CPU10は、ゲームを終了するか否かを判断する(ステップ45)。ゲームを終了する条件としては、例えば、ゲームオーバーとなる条件が満たされたことや、プレイヤがゲームを終了する操作を行ったこと等がある。CPU10は、ゲームを終了しない場合に次のステップ46に処理を進め、ゲームを終了する場合に当該フローチャートによる処理を終了する。
ステップ46において、CPU10は、プレイヤキャラクタPCと何れか1つのアイテムIとが新たに衝突したか否かを判断する。そして、CPU10は、プレイヤキャラクタPCと何れか1つのアイテムIとが新たに衝突した場合、次のステップ47に処理を進める。一方、CPU10は、プレイヤキャラクタPCが何れのアイテムIとも新たに衝突していない場合、次のステップ56に処理を進める。例えば、上記ステップ46において、CPU10は、プレイヤキャラクタPCに設定されている衝突判定領域とアイテムIに設定されている衝突判定領域とを用いて、プレイヤキャラクタPCと何れか1つのアイテムIとの衝突判定を行う。なお、CPU10は、プレイヤキャラクタPCの位置を示す座標とそれぞれのアイテムIの位置を示す座標とを用いて、プレイヤキャラクタPCと何れか1つのアイテムIとの衝突判定を行ってもかまわない。また、他の衝突判定方式を用いて、プレイヤキャラクタPCと何れか1つのアイテムIとが新たに衝突したか否かを判断してもかまわない。
ステップ47において、CPU10は、次にプレイヤキャラクタPCが衝突するアイテムIを予測し、次のステップに処理を進める。一例として、図13に示すように、CPU10は、上記ステップ46で衝突判定されたアイテムIを除いて、現在のプレイヤキャラクタPCの位置を基準として最も近い位置に配置されているアイテムIを、次にプレイヤキャラクタPCが衝突するアイテムIであると予測する。他の例として、CPU10は、上記ステップ46で衝突判定されたアイテムIと隣接する別のアイテムIを、次にプレイヤキャラクタPCが衝突するアイテムIであると予測する。一方、次にプレイヤキャラクタPCが衝突するアイテムIが予測できないこともあり得る。例えば、上記ステップ46において、連続的に配置されたアイテムI群の中で最後に未衝突状態で残ったアイテムIと衝突判定された場合、CPU10は、プレイヤキャラクタPCが次に衝突すると予測できるアイテムIが存在しないと判断する。
次に、CPU10は、上記ステップ47の処理において、次にプレイヤキャラクタPCが衝突するアイテムIを予測できたか否かを判断する(ステップ48)。そして、CPU10は、次にプレイヤキャラクタPCが衝突するアイテムIを予測できた場合、次のステップ49に処理を進める。一方、CPU10は、次にプレイヤキャラクタPCが衝突するアイテムIを予測できなかった場合、次のステップ50に処理を進める。
ステップ49において、CPU10は、上記ステップ46において衝突判定されたアイテムIと、上記ステップ47において次に衝突することが予測されるアイテムIとの間の距離dを算出し、次のステップ51に処理を進める。例えば、図13に示すように、CPU10は、アイテム位置データDcを参照して、衝突したアイテムIの位置を示す座標から衝突予測されるアイテムIの位置を示す座標までの距離dを算出し、当該距離dを示すデータを距離データDeに格納する。
一方、ステップ50において、CPU10は、所定の距離を距離dに設定して、次のステップ51に処理を進める。一例として、CPU10は、予め決められた固定値を距離dに設定して、当該距離dを示すデータを距離データDeに格納する。他の例として、CPU10は、前回の上記ステップ49の処理で算出された距離dを、そのまま当該ステップ50で設定する距離dとして設定する。この場合、距離データDeに格納されている距離dをそのまま維持する処理となる。
ステップ51において、CPU10は、上記ステップ43で決定されたプレイヤキャラクタPCの移動速度vが所定の範囲内の値であるか否かを判断する。そして、CPU10は、移動速度vが所定の範囲内である場合、次のステップ53に処理を進める。一方、CPU10は、移動速度vが所定の範囲外である場合、次のステップ52に処理を進める。例えば、移動速度vが速度下限Vmin以上で速度上限Vmax以下であれば、CPU10は、移動速度vが所定の範囲内であると判断する。ここで、速度下限Vminは0より大きい正の値(Vmin>0)であり、速度上限Vmaxは速度下限Vminより大きな値(Vmax>Vmin)である。
ステップ52において、CPU10は、上記ステップ43で決定されたプレイヤキャラクタPCの移動速度vを上記所定の範囲内に変更し、プレイヤキャラクタ移動速度データDdを更新して、次のステップ53に処理を進める。例えば、CPU10は、移動速度vが速度下限Vminより小さい場合、移動速度vを速度下限Vminに変更してプレイヤキャラクタ移動速度データDdを更新する。また、CPU10は、移動速度vが速度上限Vmaxより大きい場合、移動速度vを速度上限Vmaxに変更してプレイヤキャラクタ移動速度データDdを更新する。
ステップ53において、CPU10は、上記ステップ46において衝突判定されたアイテムIに対応する再生対象(部分音データ)を決定し、次のステップに処理を進める。一例として、CPU10は、所定の間隔を空けて連続して配置された複数のアイテムIを1つのアイテム群として、当該アイテム群に対して1つの楽曲(例えば、図11に示す楽曲Aの楽曲データDfa)を割り当てる。そして、CPU10は、プレイヤキャラクタPCが当該アイテム群に属するアイテムIと衝突する毎に、割り当てた楽曲の再生順に当該楽曲の部分楽曲(例えば、部分音データDfa1)を順次選択して、衝突判定されたアイテムIの再生対象として決定する。
次に、CPU10は、距離dおよび移動速度vを用いて、上記ステップ53で決定された再生対象に対する再生テンポpを算出し、当該再生テンポpを再生テンポデータDhに格納して(ステップ54)、次のステップに処理を進める。以下、再生テンポpの算出例について説明する。
上記ステップ54においては、プレイヤキャラクタPCが衝突したアイテムIから次の衝突が予測されるアイテムIまでの距離dを移動速度vで移動する場合、前者のアイテムIの衝突時点で部分音データの再生を開始して後者のアイテムIとの衝突時点で当該部分音データの再生が終了するような再生テンポpを算出する。まず、プレイヤキャラクタPCが距離dの移動に必要な予測所要時間t(フレーム数)は、
t=d/v
となる。一方、1フレーム毎に再生する部分音データの再生時間lを、例えば処理上の最小単位であるtick値で示すと、
l=m/t
となる。ここで、mは再生対象となっている部分音データの再生長(tick)である。例えば、再生処理において1拍(四分音符)分に相当するタイムベースが480(tick/四分音符)で、部分音データが2拍分の長さであれば、m=960(tick)となる。また、1フレーム毎に再生する四分音符の数q(個/フレーム)は、
q=l/b
となる。ここで、bは再生処理において1拍(四分音符)分に相当するタイムベースであり、例えばb=480(tick/四分音符)である。また、1秒間に再生する四分音符の数s(個/秒)は、
s=q*f
となる。ここで、fは、ゲーム処理におけるフレームレートであり、1秒間に対するフレーム数(例えば、60フレーム/秒)で示される。そして、1分間に再生する四分音符の数、すなわち再生テンポpは、
p=s*60
となる。これらの式から、再生テンポpは、
p=(m/(d/v))/b*f*60
で算出される。なお、上述した各単位や数値は、説明を具体的にするために用いた一例であり、再生テンポpを算出する際に他の処理単位や数値を用いてもかまわない。
次に、CPU10は、再生テンポデータDhに格納されている再生テンポpを用いて、再生対象の音再生処理を行い(ステップ55)、上記ステップ42に戻って処理を繰り返す。例えば、CPU10は、設定されている再生テンポpに基づいて制御し、現在再生対象として選択されている部分音データ(すなわち、対象音データDgで指定されるデータ)を演奏対象にして演奏する。具体的には、CPU10は、再生テンポデータDhに格納されている再生テンポpによって、拍タイミング等を設定する。また、CPU10は、対象音データDgで指定される部分音データから情報を読み出す。そして、音源(DSP33およびメインメモリ)は、読み出された部分音データに予め設定された音色を割り当て、設定された拍タイミング等の演奏パラメータに基づいてスピーカ2aから音を出力する。これによって、プレイヤキャラクタPCがアイテムIに衝突することに応じた所定の部分楽曲が、再生テンポpで指定されたタイミングで演奏される。
一方、上記ステップ46においてプレイヤキャラクタPCが何れのアイテムIとも新たに衝突していない場合、CPU10は、アイテムIとの衝突に応じた再生対象に対する音再生処理中か否かを判断する(ステップ56)。そして、CPU10は、上記音再生処理中である場合、上記ステップ55に進んで処理を繰り返す。一方、CPU10は、上記音再生処理中でない場合、上記ステップ42に進んで処理を繰り返す。ここで、当該ステップ56で判断する音再生処理は、上記ステップ55の処理で行われている音再生処理を意味している。したがって、ステップ56においては、上記ステップ55の音再生処理において再生している部分音データが再生中である場合、音再生処理中であると判断される。一方、上記ステップ55の音再生処理において再生している部分音データの再生が終了している場合、音再生処理中ではないと判断される。
次に、図14および図15を参照して、上述した処理手順に基づいて再生される部分音データの再生期間の一例について説明する。なお、図14は、8つの部分音データDfa1〜Dfa8に対して、再生テンポ一定でそれぞれ再生する再生期間と、アイテムIとの衝突時に再生テンポを調整してそれぞれ再生する再生期間とを比較した図である。図15は、1つの楽曲を分割して生成された8つの部分音データDfa1〜Dfa8の一例を示す図である。
図14では、8つのアイテムI1〜I8との衝突に対応して、それぞれ8つの部分音データDfa1〜Dfa8が再生される一例を用いている。図14の最上段に記載されたグラフは、縦軸をプレイヤキャラクタPCの移動速度v、横軸を時間tとして、プレイヤキャラクタPCの移動速度vの変化を折れ線グラフで示している。なお、グラフ中の矢印は、プレイヤキャラクタPCとアイテムI1〜I8とがそれぞれ衝突したタイミングを示している。図14の中段に記載されたグラフは、上記アイテムI1〜I8と衝突したタイミングに応じて、8つの部分音データDfa1〜Dfa8をそれぞれ再生テンポ一定で再生する再生期間を示している。また、図14の最下段に記載されたグラフは、アイテムI1〜I8との衝突時に移動速度vに応じて再生テンポpを調整して、8つの部分音データDfa1〜Dfa8をそれぞれ再生する再生期間を示している。
図14に示すように、プレイヤキャラクタPCの移動速度vが多様に変化するとき、部分音データDfa1〜Dfa8を再生テンポ一定で再生すると、部分音データが重複して再生されたり、何れの部分音データも再生されない時間的な空白が生じたりする。具体的には、図14に示すA区間では、部分音データDfa4と部分音データDfa5とが重複して再生される、または部分音データDfa5と部分音データDfa6とが重複して再生される。また、図14に示すB区間では、部分音データDfa7の再生が終了した後から次の部分音データDfa8の再生が開始されるまでの間に、何れの部分音データも再生されない期間が生じている。
一方、上述した処理手順のように、アイテムI1〜I8との衝突時に移動速度vに応じて再生テンポpを調整して、部分音データDfa1〜Dfa8をそれぞれ再生すると、部分音データが極端に重複して再生されたり、何れの部分音データも再生されない時間的な空白が極端に生じたりすることがなくなる。具体的には、上記A区間では、部分音データDfa4および部分音データDfa5の再生期間が再生テンポpの調整により短縮されているため、部分音データDfa4と部分音データDfa5とが重複した再生、および部分音データDfa5と部分音データDfa6とが重複した再生が生じていない。また、上記B区間では、部分音データDfa7の再生期間が再生テンポpの調整により伸長されているため、部分音データDfa7の再生期間と部分音データDfa8の再生期間とが連続して繋がっている。
このように、上記実施形態に係るゲーム装置3は、プレイヤが操作するプレイヤキャラクタPCがアイテムIに衝突する際に、再生テンポpが可変となるためバリエーションに富んだ音を再生することが可能となる。ここで、出力される音は、予め格納された音データの再生条件(再生テンポp)を変化させて生成されるため、予め準備する音データの種類や数を増加させることなく多様な音再生を実現できる。また、上記実施形態に係るゲーム装置3は、プレイヤキャラクタPCが連続してアイテムIと衝突する場合、衝突から次の衝突までの予測所要時間が前者の衝突に応じて再生される部分音データの再生時間となるように再生テンポpが調整される。したがって、衝突に応じて次々再生される部分楽曲が互いに重複したり、不必要な無音区間が生じたりすることなく、複数の部分楽曲をスムーズに繋げた楽曲を再生することが可能となる。
なお、このような部分楽曲毎の再生期間をスムーズに接続する技術は、整列して配置されたアイテムIの途中からプレイヤキャラクタPCが衝突開始しても適用できる。また、この技術で使用する楽曲は、複数パート(複数トラック)を有する楽曲でもいいし、単数パートを有する楽曲でもかまわない。
また、上述した処理手順では、プレイヤキャラクタPCとアイテムIとの衝突時点でのみ再生テンポpの調整を行っているが、当該時点の後において再生テンポpの調整を行ってもかまわない。この場合、図12に示したフローチャートにおいて、上記ステップ56でYesのとき(つまり、音再生処理中)、再生テンポpを調整する。具体的には、CPU10は、その時点のプレイヤキャラクタPCの移動速度v(速度下限Vmin以上かつ速度上限Vmax以下の範囲内に調整されたもの)、その時点のプレイヤキャラクタPCの位置から衝突予測されるアイテムIまでの残距離dre、および再生対象となっている部分音データにおいてその時点での再生残時間mreを用いて、再生テンポpを算出する。そして、上記ステップ55において、算出された再生テンポpを用いて、再生対象の再生残時間mreに対する音再生処理が行われる。なお、衝突時点の後に行う再生テンポpの調整処理は、上記音再生処理中にプレイヤキャラクタPCの移動速度vが変化したときのみに行ってもかまわない。
以下、図16を参照して、プレイヤキャラクタPCとアイテムIとの衝突時点に加えて、さらに当該時点の後においても再生テンポpの調整を行う態様での再生期間の一例について説明する。なお、図16は、8つの部分音データDfa1〜Dfa8に対して、アイテムIとの衝突時点にのみ再生テンポを調整してそれぞれ再生する再生期間と、アイテムIとの衝突時点および当該時点の後に再生テンポを調整してそれぞれ再生する再生期間とを比較した図である。
図16では、図14と同様に8つのアイテムI1〜I8との衝突に対応して、それぞれ8つの部分音データDfa1〜Dfa8が再生される一例を用いている。図16の最上段に記載されたグラフは、図14と同様に縦軸をプレイヤキャラクタPCの移動速度v、横軸を時間tとして、プレイヤキャラクタPCの移動速度vの変化を折れ線グラフで示している。図16の中段に記載されたグラフは、アイテムI1〜I8との衝突時点にのみ移動速度vに応じて再生テンポpを調整して、8つの部分音データDfa1〜Dfa8をそれぞれ再生する再生期間を示している。また、図16の最下段に記載されたグラフは、アイテムI1〜I8との衝突時点および当該時点の後に移動速度vに応じて再生テンポpを調整して、8つの部分音データDfa1〜Dfa8をそれぞれ再生する再生期間を示している。
図16に示すように、プレイヤキャラクタPCの移動速度vが多様に変化するとき、アイテムIとの衝突から次のアイテムIとの衝突までの期間に移動速度vが変化することがある(例えば、アイテムI3との衝突からアイテムI4との衝突までの期間や、アイテムI6との衝突からアイテムI7との衝突までの期間)。このような場合、アイテムIとの衝突時点のみ再生テンポpの調整を行うと、部分音データが重複して再生されたり、何れの部分音データも再生されない時間的な空白が生じたりすることが考えられる。具体的には、図16に示すC区間では、移動速度vが変化したときに再生されている部分音データDfa3の末部と次の部分音データDfa4の初部とが重複して再生される。また、図16に示すD区間では、移動速度vが変化したときに再生されている部分音データDfa6の再生が終了した後から次の部分音データDfa7の再生が開始されるまで、何れの部分音データも再生されない期間が生じている。
一方、アイテムI1〜I8との衝突時点の後にも移動速度vの変化に応じて再生テンポpを調整して、部分音データDfa1〜Dfa8をそれぞれ再生すると、移動速度vの変化期間においても部分音データが重複して再生されたり、何れの部分音データも再生されない時間的な空白が極端に生じたりすることがなくなる。具体的には、上記C区間では、部分音データDfa3の再生期間が移動速度vの変化に応じて調整された再生テンポpによって短縮されているため、部分音データDfa3と部分音データDfa4とが重複した再生が生じていない。また、上記D区間では、部分音データDfa6の再生期間が移動速度vの変化に応じて調整された再生テンポpによって伸長されているため、部分音データDfa6の再生期間と部分音データDfa7の再生期間とが連続して繋がっている。
また、上述した処理手順では、CPU10は、プレイヤキャラクタPCが同じアイテム群に属するアイテムIと衝突する毎に、割り当てた楽曲の再生順に当該楽曲の部分楽曲を順次選択して、衝突判定されたアイテムIの再生対象として決定する例を示したが、他の態様によってアイテムIの再生対象を決定してもかまわない。例えば、配置されるアイテムI毎に予め固定的に部分楽曲を関連付けて管理する。この場合、プレイヤキャラクタPCがアイテムIに衝突する順序に応じて、部分楽曲が再生される順序が変わることになる。
例えば、図17に示すように、アイテムI1〜Inが連続的に配置されたアイテム群に対して、1つの楽曲をn分割した部分音データDfa1〜Dfanが設定されている。そして、アイテムI1〜Inと部分音データDfa1〜Dfanとは、予め固定的に関連付けられている。具体的には、アイテムI1と部分音データDfa1、アイテムI2と部分音データDfa2、アイテムI3と部分音データDfa3、…アイテムInと部分音データDfanとがそれぞれ固定的に予め関連付けられている。そして、プレイヤキャラクタPCが、上記アイテム群の先頭から4番目のアイテムI4に最初に衝突した状態を考える。この場合、CPU10は、アイテムI4に対して固定的に関連付けられた部分音データDfa4を再生対象として決定する。つまり、当該態様では、アイテム群に割り当てられた楽曲の曲頭から再生順に部分楽曲を順次再生するためには、アイテムI1から昇順にアイテムInまで衝突させることが必要となる。
一方、上述した処理手順のように、プレイヤキャラクタPCがアイテムIと衝突する毎に、アイテム群に割り当てた楽曲の再生順に当該楽曲の部分楽曲を順次再生する態様では、最初にアイテムI4と衝突した時点で部分音データDfa1が再生対象として決定される。つまり、アイテム群に割り当てられた楽曲の曲頭から再生順に部分楽曲を順次再生するためには、アイテムI1〜Inに対して任意の順番で衝突させればよい。
また、プレイヤキャラクタPC(操作対象オブジェクト)とアイテムI(発音オブジェクト)とが衝突することに応じて再生する対象は、上述した楽曲データとは異なった他の音データでもかまわない。例えば、人の会話や動物の鳴き声等を予め録音した録音データや、各種ゲームで用いられるような効果音を示す効果音データでもかまわない。衝突判定に応じて再生対象となる音は、音楽、効果音、自然音、会話等の発音に関するあらゆる音でもよく、音全般のことを意味している。そして、衝突判定に応じて再生対象となるこれらの音を示すデータが、本発明の対象音データに相当する。
また、上述した実施例では、プレイヤキャラクタPCの移動速度vに応じて、部分音データを再生する再生テンポpを変化させて決定する例を示したが、当該部分音データを再生する他の再生条件を変化させてもかまわない。例えば、部分音データを再生して出力する際の音量、音程、音調、音色、音の歪み、音の残響、音の揺らぎ、再生方向(順再生、逆再生)、再生速度、スピーカバランス、演奏楽器数、演奏楽器種類、奏法、ビート数、各種エフェクト等の再生条件を変化させてもかまわない。一例として、再生条件として音量が変化する場合、アイテムIに衝突するプレイヤキャラクタPCの移動速度vが漸増的に速くなれば、部分音データを再生して出力する音量を漸増的に大きくする。他の例として、再生条件として音程が変化する場合、アイテムIに衝突するプレイヤキャラクタPCの移動速度vが所定の速度以上速くなれば、部分音データを1オクターブ上げた音程で出力する。
また、上述した実施例では、プレイヤキャラクタPCがアイテムIに衝突する移動速度vに応じて、部分音データを再生する再生条件を変化させて決定する例を示したが、仮想世界におけるプレイヤキャラクタPCの他の状態に応じて当該再生条件を変化させてもかまわない。例えば、仮想世界におけるプレイヤキャラクタPCの種類(キャラクタ名称やキャラクタ能力等)、動作状態(歩いている状態、走っている状態、停止している状態、泳いでいる状態、飛行している状態、回転している状態等)、感情状態(喜怒哀楽状態等、姿勢状態(起立姿勢、倒伏姿勢、着座姿勢、傾倒姿勢等)、形状状態(拡大状態、縮小状態、角形、球形等)、アイテムIと衝突する状態(衝突方向、衝突角度、衝突位置、衝突時の相対速度)、およびアイテムIからプレイヤキャラクタPCに与えられた状態(跳ね返えす、透過させる、衝突した一方が破壊される、めり込ませる等)等のプレイヤキャラクタPCの状態に応じて、上記再生条件を変化させてもかまわない。プレイヤキャラクタPCとアイテムIとが衝突する状態(衝突方向)に応じて再生条件を変化させる場合、第1の例として、プレイヤキャラクタPCが背部からアイテムIに衝突したとき、部分音データを逆再生して出力する。第2の例として、プレイヤキャラクタPCの上部とアイテムIの下部が衝突(例えば、アイテムIを突き上げる)したとき、部分音データの音程を高くして出力する。第3の例として、プレイヤキャラクタPCの下部とアイテムIの上部が衝突(例えば、アイテムIを踏みつぶす)したとき、部分音データの音程を低くして出力する。
また、音データDfに格納される楽曲は、プレイヤが任意に設定可能に構成してもかまわない。例えば、プレイヤがCDやDVD等の記録媒体に格納された楽曲から選曲した好みの楽曲を、上記ゲーム処理で取扱可能なデータ形式で読み込ませ、当該楽曲を音データDfの楽曲データの1つとして格納してもかまわない。この場合、読み込ませた楽曲データを複数の部分音データに分割し、それぞれの部分音データを予め発音オブジェクト(アイテムI)に関連付けて格納する、または発音オブジェクトとの衝突毎に選択可能に部分音データを格納する。
また、複数の部分音データを再生した結果に応じて、その再生結果を評価する処理を追加してもかまわない。例えば、上述した音再生処理では、アイテムIとの衝突に応じて複数の部分音データを連続的に再生することが可能であり、結果的に1つの楽曲を再生した再生テンポ、再生時間、再生順序等が変化する。これら再生テンポ、再生時間、再生順序等の基準値を予め楽曲に応じて設定し、当該基準値と実際に再生された値との比較に基づいて算出される点数をモニタ2に表示することによって、一般的な音楽ゲームとしての機能も兼ね備えることができる。
また、上述したフローチャートによる処理動作では、コントローラ7から送信されるキーデータが示す特定ボタンの押動操作の有無や押動継続時間に応じて、プレイヤキャラクタPCを移動させる一例を用いたが、上述したように他の操作情報を用いてプレイヤキャラクタPCを移動させてもかまわない。例えば、加速度センサ701により検出された加速度データから算出されるコントローラ7自体の動きや傾き等によって、プレイヤキャラクタPCを移動させてもかまわない。この場合、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれる加速度データを用いて、プレイヤキャラクタPCの移動制御を行えばよい。また、プレイヤが操作する入力装置にジョイスティックが創部されている場合は、当該ジョイスティックの傾き方向および傾き量に応じてプレイヤキャラクタPCの移動方向および移動速度を決定してもかまわない。この場合、コントローラ7から送信データとして送信されてくる一連の操作情報に含まれるジョイスティック操作に対応するキーデータを用いて、プレイヤキャラクタPCの移動制御を行えばよい。
また、上述した説明では、コントローラ7に対する操作に応じて処理を行う据置型のゲーム装置本体5に本願発明を適用した例を説明したが、携帯ゲーム装置にも適用することができる。例えば、携帯ゲーム装置の本体に設けられた操作ボタンに対する操作に応じて、上述した音再生処理を実行する。このように本願発明を適用することで、携帯ゲーム装置等においても、本発明の音再生処理を実現することができる。
また、上述した説明では、据置型や携帯型のゲーム装置に本願発明を適用した例を説明したが、入力装置によって操作される一般的なパーソナルコンピュータ等の情報処理装置や携帯型の情報処理装置にも適用することができる。例えば、前者の情報処理装置では、入力装置から出力されるキーデータに応じて、情報処理装置が表示している所定のオブジェクトを操作し、他のオブジェクトとの衝突に応じて音再生処理をする等、入力装置から得られる操作情報に基づいて様々な処理を行うことができる。また、後者の情報処理装置は、本体に操作ボタンを搭載し、当該操作ボタンから出力されるキーデータに応じてオブジェクトの状態を変化させて音再生処理を実行する情報処理装置であればよく、例えば一般的なパーソナルコンピュータ、携帯電話機、PDA(Personal Digital Assistant)等のデバイスにも適用することができる。
例えば、他の電話機との間で無線通信する通信部を備えた携帯電話機の場合には、携帯電話機本体に各種操作ボタンが搭載されている。この場合、携帯電話機の特定のボタン操作に応じて、携帯電話機に搭載された表示装置に表示されたオブジェクトの状態を変化させる。そして、当該オブジェクトと他のオブジェクトとの衝突に応じて、上述した音再生処理を実行する。このように本願発明を適用することで、携帯電話機等でゲームを行うには好適である。
また、上述した説明では、コントローラ7とゲーム装置本体5とが無線通信によって接続された態様を用いたが、コントローラ7とゲーム装置本体5とがケーブルを介して電気的に接続されてもかまわない。この場合、コントローラ7に接続されたケーブルをゲーム装置本体5の接続端子に接続する。
また、上述した説明では、主にモニタ2に備えられたスピーカ2aから音を出力する態様を説明したが、他のスピーカから音を出力してもかまわない。例えば、コントローラ7に備えられたスピーカ706から、上述した音再生処理が行われた音を出力してもかまわない。
また、上述したコントローラ7の形状や、それらに設けられている操作部72の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した処理で用いられる係数および判定値等は、単なる一例に過ぎず他の値であっても、本発明を実現できることは言うまでもない。
また、本発明の音再生プログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置本体5に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体5に供給されてもよい。また、音再生プログラムは、ゲーム装置本体5内部の不揮発性記憶装置に予め記録されていてもよい。なお、音再生プログラムを記憶する情報記憶媒体としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体の他に、不揮発性半導体メモリでもよい。
以上、本発明を詳細に説明してきたが、上述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。