(ゲームシステムの全体構成)
図1を参照して、本発明の実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、コントローラ7、およびマーカ部8を含む。本システムは、コントローラ7を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2の画面には、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像が表示され、これとともに、テレビ2の2つのスピーカ2aからゲームに関連する音声が出力される。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部8が設置される。マーカ部8は、その両端に2つのマーカ8Rおよび8Lを備えている。マーカ8R(マーカ8Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部8はゲーム装置3に接続されており、ゲーム装置3はマーカ部8が備える各赤外LEDの点灯を制御することが可能である。
コントローラ7は、当該コントローラ7自身に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ7とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ7とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ7とゲーム装置3とは有線で接続されてもよい。
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
CPU10は、光ディスク4に記憶されたゲームプログラム(例えば音楽ゲームプログラム)を実行することによってゲーム処理(例えば音楽ゲーム処理)を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。より具体的には、GPU11bは、当該グラフィクスコマンドに従って3Dグラフィックスの表示に必要な計算処理、例えば、レンダリングの前処理にあたる3D座標から2D座標への座標変換などの処理や、テクスチャの張り込みなどの最終的なレンダリング処理を行うことで、ゲーム画像データを生成する。ここで、CPU10は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU11bに与える。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。また、DSP11cは、入力した音声データ(オーディオデータ)をデコード(再生)する処理を行う。内部メインメモリ11eは、外部メインメモリ12と同様に、プログラムや各種データを記憶するものであり、CPU10のワーク領域やバッファ領域として用いられる。
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
また、入出力プロセッサ11aは、コントローラ7から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンにされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。また、一旦電源がオンにされた状態で、再度電源ボタン24を押すと、低電力スタンバイモードへの移行が行われる。この状態でも、ゲーム装置3への通電は行われているため、インターネット等のネットワークに常時接続しておくことができる。なお、一旦電源がオンにされた状態で、電源をオフにしたいときは、電源ボタン24を所定時間以上長押しすることで、電源をオフとすることが可能である。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
次に、図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
図3および図4において、コントローラ7は、ハウジング71と、当該ハウジング71の表面に設けられた複数個の操作ボタンで構成される操作部72(72a〜72i)とを備える。本実施例のハウジング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ボタン等としての機能が割り当てられる。なお、以下、操作ボタン72dを「Aボタン72d」と記載する。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置本体3が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置本体3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置3へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5のスピーカ706)からの音を外部に放出するための音抜き孔71aが形成されている。
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。以下、操作ボタン72iを「Bボタン72i」と記載する。
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するxyz軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をz軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をz軸正方向とする。また、コントローラ7の上下方向をy軸とし、ハウジング71の上面(操作ボタン72a等が設けられた面)方向をy軸正方向とする。さらに、コントローラ7の左右方向をx軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をx軸正方向とする。
次に、図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参照)に接続される。マイコン751は、操作ボタン72a等の種類に応じた操作データを発生させるように機能する。この仕組みは公知技術であるが、例えばキートップ下側に配置されたタクトスイッチなどのスイッチ機構による配線の接触/切断をマイコン751が検出することによって実現されている。より具体的には、操作ボタンが例えば押されると配線が接触して通電するので、この通電がどの操作ボタンにつながっている配線で発生したかをマイコン751が検出し、操作ボタンの種類に応じた信号を発生させている。
また、コントローラ7は、無線モジュール753(図7参照)およびアンテナ754によって、ワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の回転を良好な感度でゲーム装置本体3等が判定することができる。
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置本体3から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置本体3から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。なお、図7では、バイブレータ704、スピーカ706、サウンドIC707およびアンプ708の図示を省略する。
撮像情報演算部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自体の方向を変えることによってその撮像方向を変更することができる。この撮像情報演算部74から出力される処理結果データに基づいて、コントローラ7の位置や動きに応じた信号を得ることができる。
コントローラ7は、3軸(x、y、z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向(または他の対になった方向)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であってもよい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の加速度センサ701が提供されてもよい。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置本体3からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置本体3から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置本体3から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの加速度信号(x、y、およびz軸方向加速度データ;以下、単に加速度データと記載する)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各操作データ(キーデータ、加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(Bluetooth;登録商標)で構成される通信部75の送信間隔は例えば5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その電波信号をアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データが無線モジュール753で電波信号に変調されてコントローラ7から送信される。そして、ゲーム装置本体3の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置本体3で当該電波信号を復調や復号することによって、操作データすなわち一連の操作情報(キーデータ、加速度データ、および処理結果データ)を取得する。そして、ゲーム装置本体3のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
(音楽ゲーム処理)
以下に、本実施形態の特徴となる音楽ゲーム処理を説明する。まず、音楽ゲーム処理では、上述した操作ボタン72のうち何れか1つの特定の操作ボタン72のみを押下する操作(以下「単独操作」と記載する)と、上述した操作ボタン72のうちの何れか2つの特定の操作ボタン72を略同時(数フレーム程度のずれは略同時として許容される)に押下する操作(以下、「同時操作」と記載する)の何れかをユーザに対して要求する。具体的には、音楽ゲーム処理では、楽曲の再生に合わせて単独操作及び同時操作のうち何れかの操作の指示をテレビ2に表示するための処理(操作指示決定処理)が実行される。そして、音楽ゲーム処理では、この指示に応じてユーザが単独操作又は同時操作を正しく行ったか否かを判定し、この判定結果に応じた演出を行うための処理(操作内容判定処理)が実行される。
なお、本実施形態では、Aボタン72dが単独操作用の操作ボタン72であり、Aボタン72dとBボタン72iが両方操作用の操作ボタン72である。もっとも、単独操作用の操作ボタン72及び同時操作用の操作ボタン72として、Aボタン72d以外の何れの操作ボタン72が割り当てられていてもよい。
以下に、図8A、図8Bを用いて、ゲーム装置3が上記操作指示決定処理を実行することでテレビ2の画面に表示されるゲーム画像を説明する。図8A及び図8Bは、操作指示決定処理によって表示されるゲーム画像の一例を示す図である。図8Aを参照して、図8Aのゲーム画像は、例えば侍キャラクタを表す基準オブジェクトO1と黒雲オブジェクトO2が表示されている。基準オブジェクトO1は、ゲーム画像の所定の位置(本例では左寄りの位置)に配置されており、ユーザの操作に応じて刀を用いた演出用の攻撃アクションを行う。この攻撃アクションの内容についての詳細は、図12〜図14を用いて後述する。
そして、図8Bに示すように、ユーザが操作すべきタイミングである操作タイミングが近付くと、黒雲オブジェクトO2の中から出現するように、例えばお化けキャラクタを表す指示オブジェクトO3が楽曲の再生に合わせて順次表示される。指示オブジェクトO3は基準オブジェクトO1の刀によって切ることが可能な位置に表示された後に消去されるが、この位置に指示オブジェクトO3が居るときに(図8Bの様に表示されたときに)操作ボタン72を押下すれば、適切な操作タイミングで操作されたことになる。この様にして、指示オブジェクトO3の表示によってユーザに操作タイミングが指示される。また、指示オブジェクトO3として、例えば色、形状等の表示態様の異なる2種類が用意されている。この種類によって、同時操作及び単独操作の中から何れの操作を行うべきかユーザに指示している。なお、同時操作を指示する指示オブジェクトO3を「同時操作指示オブジェクトO3a」と記載する場合がある。また、単独操作を指示する指示オブジェクトO3を「単独操作指示オブジェクトO3b」と記載する場合がある。
なお、上述したゲーム画像はあくまで一例であり、ユーザに対して単独操作及び同時操作のタイミングを指示することができれば如何なるゲーム画像を表示してもよい。また、ゲーム画像の表示によらず、音声の出力等の別の方法によって操作のタイミングを指示してもよい。
次に、図9〜図11を用いて、操作判定処理におけるユーザの操作が正しいか否かの判定方法を説明する。図9は、同時操作の判定方法を説明するための図である。図10は、単独操作の判定方法を説明するための図である。図11は、「操作なし」が正解となるタイミングで不適切な操作を行ったとの判定を行う方法を説明するための図である。
この音楽ゲーム処理では、楽曲の再生期間において一定期間毎(例えば、一拍毎の期間)にユーザに要求される操作が切り替わる。すなわち、図9〜図11では、各図の上側に要求操作データD1(本発明の「タイミング指示データ」の一例に相当する)を図示しているが、この要求操作データD1は、楽曲の再生開始時から一定期間毎のユーザに要求する操作を示すデータである。そして、ゲーム装置1は、要求操作データD1に基づいて一定期間毎にこの期間で要求される操作内容を指示する(図8Bで示すような指示オブジェクトO3の表示等によって指示する)。これとともに、ゲーム装置1は、要求される操作内容に合致した操作が一定期間内に行われたか否かで適切な操作が行われたか否かを判定する。
以下に、適切な操作が行われたか否かの判定方法をより具体的に説明する。すなわち、楽曲の再生開始時から楽曲の終了までの一定期間毎にシーケンシャルな番号(本図では1〜9)が割り当てられ、要求操作データD1は、各番号(各一定期間)に対応する操作内容を示す。なお、図9〜図11の例では、「A」が単独操作を示し、「AB」が同時操作を示し、「なし」が操作なしを示す。そして、この例では、要求操作データD1は、番号1(例えば一拍目の期間に相当)に対応付けて単独操作を示しており、番号2及び3(例えば二拍目及び三拍目の期間に相当)に対応付けて「操作なし」を示し、番号4(例えば四拍目の期間に相当)に対応付けて同時操作を示している。このため、楽曲の再生開始時から一定期間経過(一拍目の期間が経過)するまでは単独操作が要求される。更に一定期間経過(二拍目の期間が経過)するまでは「操作なし」が要求され、次の一定期間が経過(三拍目の期間が経過)するまでについても「操作なし」が要求される。続く一定期間経過(四拍目の期間が経過)するまでは、同時操作が要求される。以下に、同時操作が要求される期間を「同時操作期間(本発明の「第1特定期間」の一例に対応)」、単独操作が要求される期間を「単独操作期間(本発明の「第2特定期間」の一例に対応)」、「操作なし」が要求される期間を「操作なし期間(本発明の「第3特定期間」の一例に対応)」と記載する。
上述した前提を踏まえて、図9を参照して、同時操作が正しく行われたかを判定する判定方法の一例を説明する。図9では、要求操作データD1の下の矢印は楽曲再生開始からの経過時間を示している。そして、タイミングT1は、Aボタン72dとBボタン72iのうちの何れかの入力検知タイミングを示す。このタイミングT1を中心とした期間t1内に、同時操作期間t2があるかどうかを要求操作データD1に基づいてゲーム装置3が判断する。なお、この期間t1は、本実施形態では同時操作期間t2より長い期間に設定されているが、同じであっても短い期間であってもよく、正解となる操作が確実に判定可能な期間に設定されていればよい。すなわち、期間t1は、同時操作期間t2と単独操作期間t2a(図10を参照)が両方含まれないような期間に設定されていればよい。また、期間t1は、タイミングT1を中心として前後の期間であるが、同時操作期間t2(又は単独操作期間t2a)の到来を判定するための期間であるため、タイミングT1の前にこの様な期間を設定することは必ずしも必要ではなく、後にのみ設定していてもよい。そして、上記判断結果が肯定であれば、現時点は同時操作を正解とするタイミングである。図9では、期間t1内に同時操作期間t2(番号4に対応する期間)があるため、現時点は同時操作を正解とするタイミングであると判定される。
現時点が同時操作を正解とするタイミングであると判定したときには、ゲーム装置3は、同時操作期間t2(番号4に対応する期間)内に同時操作があったか否かを、Aボタン72dとBボタン72iのうち後に入力が検知された方の入力検知タイミングを用いて判定する。言い換えれば、後に入力が検知された方の入力検知タイミングが同時操作期間t2内であれば、先に入力が検知された方の入力検知タイミングが同時操作期間t2内でなくても同時操作期間t2内に同時操作があったと判定する。加えて、ゲーム装置3は、タイミングT1から所定の時間t3(略同時と判定可能な程度の数フレームの時間、以下この時間を「同時操作判定時間t3」と記載する)が経過する前に後の入力が検知されるか否かを判定する。これらの判定結果が肯定であったときには、同時操作期間t2内に略同時にAボタン72dとBボタン72iが押下されたとして、正しいタイミングで同時操作があったと判定され、適切な操作が行われたと判定される。すなわち、図9の例では、同時操作期間t2と同時操作判定時間t3とが重なっている期間t4で後の入力があったときにのみ、適切な同時操作が行われたと判定される。
上述した様に、本実施形態では、Aボタン72dへの入力とBボタン72iへの入力が同時操作判定時間t3内でずれたとしても、略同時に操作があったとして許容され、かつ後の入力だけが同時操作期間t2内であれば、同時操作期間t2内に同時操作があったと判定される。これによって、操作に習熟していないユーザでも同時操作を快適に行うことが可能になる。一方、先の入力(タイミングT1)から同時操作判定時間t3が経過するまでに後の入力がないとき、及び後の入力が同時操作期間t2(番号4に対応する期間)内にないときは、何れも正しいタイミングで同時操作があったと判定されず、適切な入力が行われていないと判断される。
次に、図10を参照して、単独操作が正しく行われたかを判定する判定方法の一例を説明する。図10では、タイミングT2は、Aボタン72dの入力検知タイミングを示す。タイミングT2を中心とした期間t1内に単独操作期間t2aがあるか否かをゲーム装置3が要求操作データD1に基づいて判断する。この判断結果が肯定であれば、現時点は単独操作を正解とするタイミングであると判定される。図10では、上側矢印で示す場合も下側矢印で示す場合も、期間t1内に単独操作期間t2a(番号9に対応する期間)があるため、現時点は単独操作を正解とするタイミングであると判定される。もっとも、単独操作を正解とするタイミングであっても、Aボタン72dの入力検知タイミング(タイミングT2)が単独操作期間t2aになければ正しいタイミングで単独操作があったと判定されず、不適切な入力が行われたと判断される。すなわち、上側矢印で示す例では、タイミングT2が単独操作期間t2aにないため、不適切な入力が行われたと判断される。対して、下側矢印で示す例では、タイミングT2が単独操作期間t2a(番号9に対応する期間)にあるため、適切な入力が行われたと暫定的に判定される。ここで、暫定的に判定されると記載したのは、この適切な入力が行われたとの判定は確定的なものではなく、後にこの判定が覆る可能性があるからである。
なお、本実施形態では、上述のように、期間t1内に単独操作期間t2aがあるか否かを判定しているが、必ずしもこの判定を行う必要はない。すなわち、タイミングT2が単独操作期間t2a(番号9に対応する期間)に行われたか否かを判断するだけで、適切な操作があったと暫定的に判定してもよい。
上述した、適切な操作があったとの暫定的な判定は、その後のBボタン72iの入力検知タイミングがタイミングT2から同時操作判定時間t3が経過する前に有ったか否かを待って確定的な判定となる。具体的には、タイミングT2から同時操作判定時間t3が経過する前にBボタン72iの入力が検知されたときには、適切な操作があったという暫定的な判定はキャンセルされ、不適切な操作があったと判定される。この理由は、ユーザが誤って同時操作を行ったと考えられるからである。対して、タイミングT2から同時操作判定時間t3が経過する前にBボタン72iの入力が検知されなかったときには、適切な操作があったという暫定的な判定は確定的な判定となる。
上述したように、単独操作期間t2aでは、Aボタン72dの入力が検知されたときに適切な入力があったと暫定的に判定して処理を進めるため、Aボタン72dの入力を検知してからBボタン72iの入力を検知するまでのタイムラグを減らすことができる。
次に、図11を参照して、現時点が「操作なし」を正解とするタイミングであるときに、誤って操作ボタン72が押下され不適切な操作を行ったと判定する方法を説明する。操作なし期間とは、タイミングT1(Aボタン72dとBボタン72iのうちの何れかの入力検知タイミング)を中心とした期間t1内に、同時操作期間t2も、単独操作期間t2aも含まれないタイミングである。このタイミングでは、Aボタン72dの入力が検知されても、Bボタン72iの入力が検知されても、原則不適切な入力が行われたと判定される。
次に、同時操作期間t2において上述した適切な操作があったという暫定的な判定がなされたときに表示される演出(以下「一段階目演出」と記載する。本発明の「第1演出」の一例に相当)を、図12を用いて説明する。図12は、一段階目演出を表示した画面図である。図12では、基準オブジェクトO1が刀を振りおろす演出用の攻撃アクションを行う。適切な操作があったという暫定的な判定は、上述したように当該判定がBボタン72iの検出(同時操作判定時間t3の経過前における検出)によって後にキャンセルされる可能性がある。もっとも、適切な操作があったという暫定的な判定は、Bボタン72iの押下が検出(同時操作判定時間t3の経過前における検出)されなければ確定される。従って、適切な操作があったという暫定的な判定が行われた段階では、この判定が確定されるかキャンセルされるか未確定な状態である。このため、一段階目演出のための攻撃アクションは、刀を振り下ろすアクションに限定されないが、適切な操作があったとの暫定的な判定が後に確定的になっても、不適切な操作があったと判定結果が変わっても違和感のないような内容にすることが好ましい。
次に、適切な操作があったとの暫定的な判定が後にキャンセルされたときに一段階演出から切り替えて表示される演出(以下、「失敗二段階目演出」と記載する。本発明の「第2演出」の一例に相当する)を、図13を用いて説明する。図13は、失敗二段階目演出を表示した画面図である。この失敗二段階目演出は、一段階目演出に連続する内容の演出であり、かつユーザが不適切な操作を行ったことを表す演出である。失敗演出では、例えば、図13に示すように、基準オブジェクトO1が1段階演出で刀を振り下ろしたにも関わらず、指示オブジェクトO3を倒すことができずに、指示オブジェクトO3が黒雲オブジェクトO2の中に逃げ出すアクションを表示する。
上述した、失敗二段階目演出のアニメーションの内容は、あくまで一例であり、一段階目演出の内容と連続する内容であり、かつユーザが不適切な操作を行ったことを表すことができれば如何なる内容であってもよい。
次に、適切な操作があったとの暫定的な判定が確定されたときに一段階演出から切り替えて表示される演出(以下「成功二段階目演出」と記載する。本発明の「第3演出」の一例に相当する)を、図14を用いて説明する。図14は、成功二段階目演出を表示した画面図である。この成功二段階目演出は、一段階目演出に連続する内容の演出であり、かつユーザが適切な操作を行ったことを表す演出である。例えば、図14に示すように、成功二段階目演出では、基準キャラクタO1が一段階目演出で刀を振り下ろしたことにより、指示キャラクタO2が切り殺されて退治される様子を表示する。なお、上述した、成功二段階目演出の内容もまた、あくまで一例であり、一段階目演出の内容と連続する内容であり、かつユーザが適切な操作を行ったことを表すことができれば如何なる内容であってもよい。なお、失敗二段階目演出、成功二段階目演出及び一段階目演出は、アニメーションでなくてもよく、静止画であってもよいし音声の出力等であってもよい。
続いて、図15を参照して、内部メインメモリ11e及び/又は外部メインメモリ12に記憶されるプログラム各種プログラムや各種データについて説明する。図15は、内部メインメモリ11e及び/又は外部メインメモリ12が記憶するプログラム及び各種データの一例を示す図である。各種データはプログラムをゲーム装置1が実行することに応じて記憶される。なお、図15で示すプログラム及び各種データは内部メインメモリ11eと外部メインメモリ12のうちの何れに記憶されていてもよい。
内部メインメモリ11e及び/又は外部メインメモリ12は、プログラム記憶領域100とデータ記憶領域101を備える。プログラム記憶領域100は、音楽ゲームプログラムP1を記憶している。この音楽ゲームプログラムP1はCPU10に音楽ゲーム処理を実行させるためのプログラムである。
データ記憶領域101には、要求操作データD1、操作データD2、楽曲データD3、画像生成用データD4(D4a〜D4c)、スコアデータD5、第1判定用フラグD6、第2判定用フラグD7及び第3判定用フラグD8等を記憶している。要求操作データD1は、図9〜図11を用いて上述したように、楽曲の再生開始時から一定期間毎(例えば一拍の期間毎)のユーザに要求する操作を示しているデータである。要求操作データD1に基づいて、図8Bで示すような指示オブジェクトO3(同時操作指示オブジェクトO3a、単独操作指示オブジェクトO3b)が表示される。また、要求操作データD1に基づいて、現時点で正解となる操作内容が判定されるとともに、ユーザの操作が適切に行われたか(例えば同時操作が同時操作期間t2内に行われたか又は単独操作が単独操作期間t2a内に行われたか)判定される。なお、本実施形態では、ユーザが複数の楽曲から音楽ゲームで採用する1の楽曲を選択することができる構成である。従って、ユーザに選択された楽曲データD1に対応する要求操作データD1のみが光ディスク4等から読み出されて記憶される。
操作データD2は、上述したようにコントローラ7から送信間隔毎に送信されるデータであり、入出力プロセッサ11aによって一時的に記憶されるものである。この操作データD2は、CPU10で処理された後に破棄されるが、CPU10が処理する間隔(例えば約1/60秒)よりも送信間隔(例えば5ms)の方が短いため、複数の操作データD2が記憶される場合がある。この操作データD2を参照することで、CPU10は直前の上記例えば約1/60秒の間隔の間にユーザが行った操作種別(例えば、Aボタン72dの押下、Bボタン72iの押下及び操作を行わなかった等)を判定することができる。
楽曲データD3は、例えば所定の時間長のフレーム(セクタ)に分割された1曲分のオーディオデータである。上述したように、本実施形態では、ユーザが複数種類の楽曲から音楽ゲームで採用する1の楽曲を選択することができる構成である。このため、複数種類の楽曲データD3のうちユーザに選択された楽曲データD3のみが光ディスク4等から読み出されて記憶される。この楽曲データD3に基づいて、DSP11cが音声データを再生する。なお、楽曲データD3がmidiデータ等であってもよく、DSP11cが楽曲データD3に基づいて音声データを生成してもよい。画像生成用データD4(D4a〜D4c)は、図8A、図8B及び図12〜図14を用いて説明したようなゲーム画像を生成するためのデータである。画像生成用データD4aは、基準オブジェクトO1を生成するためのデータであり、位置情報、向き情報及びオブジェクトのアクション内容を表す情報等である。画像生成用データD4bは、黒雲オブジェクトO2を生成するためのデータであり、例えば、黒雲オブジェクトO1の位置情報及び向き情報等を表すデータである。また、画像生成用データD4cは、指示オブジェクトO3を生成するためのデータであり、例えば表示する指示オブジェクトO3の種類(同時操作指示オブジェクトO3aか単独操作指示オブジェクトO3bかの別)、位置情報、向き情報及びオブジェクトのアクション内容を表す情報等である。スコアデータD5は、正しい操作(適切な操作)が行われたとの判定が確定したときに所定値ずつ加算されていくユーザの現在の獲得スコアを示すデータである。
第1判定用フラグD6は、同時操作が正解となるタイミング(期間)において、Bボタン72iの押下後にこの押下と略同時と判定可能なタイミングで(同時操作判定時間t3が経過する前に)Aボタン72dが押下されるか否かを判定するためのフラグである。また、第2判定用フラグD7は、同時操作が正解となるタイミングにおいてAボタン72dの押下後にこの押下と略同時と判定可能なタイミングでBボタン72iが押下されるか否かを判定するためのフラグである。第3判定用フラグD8は、単独操作が正解となるタイミングにおいて、Aボタン72dの押下と略同時と判定可能なタイミングでBボタン72iの押下が検知されるか否かを判定するために用いられるフラグである。
なお、上述した音楽ゲームプログラムP1及びデータD1〜D8は、例えば、光ディスク4、フラッシュメモリ27等から読み出されてプログラム記憶領域100及びデータ記憶領域101に記憶されてもよく、無線通信モジュール18を介して他の通信機器から受信して記憶されてもよい。なお、要求操作データD1及び楽曲データD3は光ディスク4、フラッシュメモリ17及び他の通信機器には複数種類の全てのデータが記憶されている。そして、このうちユーザに選択された楽曲データD3と、この楽曲データD3に対応する要求操作データD1のみがデータ記憶領域101に記憶される。
以下に図16〜図20を用いて音楽ゲーム処理の詳細を説明する。図16は、音楽ゲーム処理におけるメイン処理の一例を示すフローチャートである。音楽ゲーム処理は、ユーザによる音楽ゲームプログラムの起動の指示を受けてCPU10によって実行開始される。なお、図16〜図20のフローチャートは単なる一例に過ぎない。従って、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。
まず、CPU10は、ユーザに複数の楽曲から1つの楽曲を選択させるための画像(曲選択用画像)をテレビ2の画面に表示するための表示処理を行う(S1)。なお、曲選択用画像には、音楽ゲームの終了の指示をガイドするための情報も表示されている。この後、CPU10は、音楽ゲームの終了の指示をユーザから受け付けたかどうかを判断する(S2)。そして、音楽ゲームの終了の指示をユーザから受け付けたと判断したときには(S2でYES)、CPUI0は本メイン処理を終了させる。一方、音楽ゲームの終了の指示をユーザから受け付けないときには(S2でNO)、CPU10はユーザから1つの楽曲の選択の指示を受け付けたかどうかを判断する(S3)。
ここで、1つの楽曲の選択の指示を受け付けていないと判断したときには(S3でNO)、CPU10は処理をステップS2に戻す。一方、1つの楽曲の選択の指示を受け付けたと判断したときには(S3でYES)、CPU10は楽曲データD3を光ディスク4等から読み込んでデータ記憶領域101に記憶させる(S4)。続いて、CPU10は、楽曲データD3に対応する要求操作データD1も光ディスク4等から読み込んでデータ記憶領域101に記憶させる(S5)。
続いて、CPU10は、例えば1フレーム毎にステップS6〜ステップS10を実行して、ユーザの選択した楽曲を用いての音楽ゲームをユーザに提供するための処理を実行する。具体的には、CPU10は、ステップS4で読み出した楽曲データD3に基づいて楽曲を再生するようDSP11cに指示する処理(サウンド出力処理)を実行する(S6)。なお、ここでは、楽曲データD3のうち再生すべきセクタデータに応じたサウンドを出力するための処理の実行が指示される。
そして、CPU10は、図8A及び図8Bで示すようなゲーム画像を表示するための操作指示決定処理を実行する(S7)。操作指示決定処理は、要求操作データD1及び楽曲データD3の再生位置に基づいて、ユーザの操作タイミングが到来したときに表示すべき指示オブジェクトO1(同時操作指示オブジェクトO3a及び単独操作指示オブジェクトO3bの何れか)を決定するための処理である。この処理を具体的に説明する。本実施形態では、CPU10は、操作指示決定処理の初回実行時に基準オブジェクトO1と黒雲オブジェクトO2を表示するために画像生成用データD4a、D5aを生成してデータ記憶領域101に記憶させる。そして、楽曲の再生開始時から一定期間毎(例えば一拍毎)にユーザに要求する操作内容が変わるため、CPU10は、一定期間が経過する直前に次の一定期間の操作内容に合致する種類の指示オブジェクトO3を表示するための処理を行う。なお、次の一定期間の操作内容が「操作なし」の場合には、指示オブジェクトO3の表示は行われない。図9の例で説明すると、3拍目の「操作なし」の期間が経過する直前に次の4拍目の操作内容である「同時操作」に合致する種類の指示オブジェクトO3(すなわち、同時操作指示オブジェクトO3a)を表示するための処理を行う。なお、指示オブジェクトO3の表示を決定したときに、CPU10は画像生成用データD4cを生成してデータ記憶領域101に記憶させる。そして、指示オブジェクトO3の表示位置が一定期間内において変化するように、CPU10は画像生成用データD4cの位置及び向き等を順次更新する。そして、CPU10は、指示オブジェクトO3が表示されてから一定期間経過した後に画像生成用データD4cを削除して、指示オブジェクトO3の表示を消去する。
この後、CPU10は操作内容判定処理を実行する(S8)。この操作内容判定処理において、CPU10は、ユーザの操作が適切であるか否かの判定を行うとともに、この判定結果に応じた演出内容を決定する。この操作内容判定処理についての詳細は図17〜図20を用いて後述する。なお、この操作内容判定処理においては、CPU10は判定結果に応じてユーザの獲得スコアを増加させる処理も行う。
次に、CPU10は、GPU10を用いての描画処理を実行する(S9)。この描画処理では、上述のステップS7、S8で決定された内容に従って(画像生成用データD4に基づいて)ゲーム画像をVRAM11dに描画するよう、CPU10がDSP11cに指示する。この後、CPU10は、楽曲データD3における全てのセクタデータのサウンドを出力したかどうかを判断し(S10)、全てのセクタデータのサウンドを出力していないときには(S10でNO)、処理をステップS6に戻す。この様に、全てのセクタデータのサウンドを出力したと判断されるまでは、ステップS6〜S10が繰り返し実行される。また、全てのセクタデータのサウンドを出力したと判断したときには(S10でYES)、CPU10はユーザの獲得スコア(スコアデータD5)に基づくゲーム結果を表示する(S11)。この後、CPU10は本処理をステップS1に戻す。
次に、図17〜図20を用いて、上述したステップS8における操作内容判定処理の一例を説明する。図17は、操作内容判定処理の一例を示すフローチャート(その1)である。図18は、操作内容判定処理の一例を示すフローチャート(その2)である。図19は、ステップS24、S40において実行される同時操作判定処理の一例を示すフローチャートである。図20は、ステップS42において実行される単独操作判定処理の一例を示すフローチャートである。
図17を参照して、まず、初回の処理の際には第1判定用フラグD6、第2判定用フラグD7及び第3判定用フラグD8をオフにした後、CPU10はAボタン72dが押下されたか否かを操作データD2に基づいて判断する(S21)。そして、Aボタン72dが押下されたと判断されたときには(S21でYES)、CPU10は第1判定用フラグD6がオンか否かを判断する(S22)。なお、第1判定用フラグD6がオンのときとは、先にBボタン72iが押下されている場合(Bボタン72iが押下され、かつこの押下から同時操作判定時間t3の経過が後述のステップS34において判定されていない場合)である。そして、第1判定用フラグD6がオンであると判断したときには(S22でYES)、CPU10は、第1判定用フラグD6をオフにするとともに、第1判定用フラグD6のオンから開始した計時を終了して(S23)、同時操作判定処理を実行する(S24)。この同時操作判定処理とは、CPU10が、Aボタン72dの押下が適切なタイミングで(Bボタン72iと略同時であり、かつ同時操作期間t2内に)行われたかを判定し、この判定結果に応じた演出内容を決定する処理である。この同時操作判定処理についての詳細については、図19を用いて後述する。この後、CPU10は操作内容判定処理を終了させてメイン処理に処理を戻す。
次に、第1判定用フラグD6がオンでないと判断したときには(S22でNO)、CPU10は、現時点が同時操作を正解とするタイミングであるか否かを判断する(S25)。この現時点が同時操作を正解とするタイミングであるか否かの判断方法としては、例えば図9を用いて上述した方法を用いることができる。具体的には、例えば、CPU10は、楽曲データD10の現在の再生位置(再生するサンプル数等、以下この再生するサンプル数を「再生サンプル数」と記載する)をタイミングT1(図9を参照)として取得し、このT1を中心とした期間t1内に同時操作期間t2が存在するかを、要求操作データD1を用いて判断する。すなわち、要求操作データD1は、例えば、各一定の期間に対応する再生サンプル数(一拍目に対応する再生サンプル数が0〜n等というように)の情報を含む。そして、CPU10は、この各一定の期間に対応する再生サンプル数を参照して、タイミングT1から前後所定の数(期間t1に対応する数)以内に同時操作期間t2の再生サンプル数が存在するかを判断する。この判断結果が肯定であれば、CPU10は、現時点が同時操作を正解とするタイミングであると判断する。なお、この方法はあくまで一例であり、現時点が同時操作を正解とするタイミングであるか否かを他の方法を使用して判断してもよい。
また、上述した判定方法と同様の方法は、後述のステップS27及びステップS43等における「現時点が同時操作を正解とするタイミングであるか否か」又は「現時点が単独操作を正解とするタイミングであるか否か」の判断にも使用される。なお、現時点が単独操作を正解とするタイミングであるか否かは、現在の再生位置をタイミングT2(図10を参照)とし、このタイミングT2から前後所定の数(期間t1に対応する数)以内に単独操作期間t2aの再生サンプル数が存在するかを判断する。
そして、現時点が同時操作を正解とするタイミングであると判断したときには(S25でYES)、CPU10は第2判定用フラグD7をオンする(S26)。このとき、CPU10は計時を開始(例えばフレーム数のカウントを開始)する。この後、CPU10は後述のステップS37に処理を進める。一方、現時点が同時操作を正解とするタイミングでないと判断したときには(S25でNO)、CPU10は、現時点が単独操作を正解とするタイミングであるか否かを判断する(S27)。この現時点が単独操作を正解とするタイミングであるか否かの判断方法としては、例えば図10を用いて上述した方法を用いることができる。そして、現時点が単独操作を正解とするタイミングであると判断したときには(S27でYES)、CPU10は、Aボタン72dの押下を検知したタイミング(すなわち現時点)が許容期間内であるかどうかを判断する(S28)。なお、許容期間とは、図10を用いて説明したような、単独操作期間t2aのことである。現時点が許容期間内であるかどうかの判断は、例えば次のような方法で行う。CPU10は、現在の再生サンプル数を楽曲データD2の総サンプル数で割り、この算出した値と楽曲データD2の総拍数とを乗算して、現在何拍目を再生しているかを算出する。CPU10は、この算出した値で要求操作データD1を参照し、現在再生している拍に対応する操作内容を取得し、この操作内容が単独操作であれば、現時点が許容期間内であると判定する。
なお、この方法はあくまで一例であるため、他の方法を採用して現時点が許容期間内であるかどうかを判断してもよい。例えば、上述したように、要求操作データD1における各一定期間に対応する再生サンプル数がデータ記憶領域101に記憶されているため、楽曲データD3における現在の再生サンプリング数が単独操作期間t2a(図10では9拍目)に対応するサンプル数に含まれるか否かで現時点が許容期間内であるかどうかを判断してもよい。また、後述のステップS62における「後の操作ボタン72の押下を検知したタイミングが許容期間内であるか否か」の判定についても本ステップと同様に行う。
Aボタン72dの押下を検知したタイミング(すなわち現時点)が許容期間内であると判断したときには(S28でYES)、CPU10はスコアデータD5に所定値を加算する(S29)。そして、CPU10は図12を用いて上述したような一段階目演出に演出内容を決定する(S30)。すなわち、CPU10は一段階目演出に対応するアクションを示すよう画像生成用データD4a,D4cを更新する。なお、演出内容が一段階目演出に決定されたときには、後のステップS9の描画処理において、基準オブジェクトO1と指示オブジェクトO3とに数フレームをかけて当該アクションを行わせるよう処理される。
この様に、Aボタン72dの押下を検知したタイミングで一段階目演出が開始されるため、ユーザの操作と演出開始までのタイムラグを減らすことができる。この後、CPU10は、第3判定用フラグをオンする(S31)。このとき、CPU10は計時を開始(例えばフレーム数のカウントを開始)する。そして、CPU10は後述のステップS37に処理を進める。
なお、現時点が単独操作を正解とするタイミングでないと判断したとき(S27でNO)、及びAボタン72dの押下を検知したタイミング(すなわち現時点)が許容期間内でないと判断したとき(S28でNO)には、CPU10は不適切なタイミングでAボタン72dが押下されたと判定する(S32)。この場合には、例えば、不適切な操作が行われたことを表すような効果音を出力するように設定してもよい。この後、CPU10は、本操作内容判定処理を終了させ、メイン処理に処理を戻す。
次に、ステップS21でAボタン72dが押下されていないと判断されたときの処理を説明する。このときには(S21でNO)、CPU10は第1判定用フラグD6がオンか否かを判断する(S33)。第1判定用フラグD6がオンであると判断したときには(S33でYES)、CPU10は、Bボタン72iの押下から同時操作判定時間t3を経過したかどうかを、第1判定用フラグD6をオンしてからの計時時間に基づいて判断する(S34)。Bボタン72iの押下から同時操作判定時間t3を経過したと判断したときには(S34でYES)、CPU10はユーザが不適切な操作を行ったことを表す演出(失敗演出)を行うように決定する(S35)。すなわち、CPU10は失敗演出に対応するアクションを示すよう画像生成用データD4a,D4cを更新する。なお、失敗演出に演出内容が決定されたときには、後のステップS9の描画処理において、基準オブジェクトO1と指示オブジェクトO3とに数フレームをかけて当該アクションを行わせるよう処理される。ここで、失敗演出は例えば不適切な操作を行ったことを表す音声の出力及び/又はアニメーション等の表示である。本実施形態では、基準オブジェクトO1が刀を振り下ろすアクションをし、このアクションによっても指示オブジェクトO3は倒されずに逃げ延びるというアクションを行うように、アニメーションを表示する。
この様に、Bボタン72iが押下された後(第1判定用フラグD6がオンしているときに)、この押下から同時操作判定時間t3が経過する前にAボタン72dの押下がないときには、ユーザが不適切な操作を行った(同時操作が要求されているのに過って単独操作を行った)として、CPU10はステップS35において失敗演出を決定する。なお、同時操作の失敗演出については、同時操作判定時間t3の経過を待って行われるため、ユーザが先の操作(Bボタン72iの押下)を行ってから演出開始までには若干のタイムラグが発生する。
そして、CPU10は、第1判定用フラグD6をオフするとともに、第1判定用フラグD6のオンから開始した計時を終了する(S36)。この後、CPU10は後述のステップS37に処理を進める。
一方、第1判定用フラグD6がオンでないと判断したとき(S33でNO)、Bボタン72iの押下から同時操作判定時間t3を経過していないと判断したとき(S34でNO)には、CPU10はステップS35、S36を実行することなく後述のステップS37に処理を進める。
図18を参照して、ステップS37においては、CPU10はBボタン72iが押下されたか否かを操作データD2に基づいて判断する(S37)。そして、Bボタン72iが押下されたと判断したときには(S37でYES)、CPU10は第2判定用フラグD7がオンであるか否かを判断する(S38)。なお、第2判定用フラグD7がオンのときとは、先にAボタン72dが押下されている場合(Aボタン72dが押下され、かつこの押下から同時操作判定時間t3の経過が後述のステップS47において判定されていない場合)である。ここで、第2判定用フラグD7がオンであると判断したときには(S38でYES)、CPU10は、第2判定用フラグD7をオフするとともに、第2判定用フラグD7のオンから開始した計時を終了する(S39)。そして、CPU10は同時操作判定処理を行う(S40)。なお、同時操作判定処理とは、CPU10が、Bボタン72iの押下が適切なタイミングで(Aボタン72dの押下と略同時であり、かつ同時操作期間t2内に)行われたかを判定し、この判定結果に応じた演出内容を決定する処理である。この同時操作判定処理についての詳細については、図19を用いて後述する。この後、CPU10は本操作内容判定処理を終了させメイン処理に処理を戻す。
一方、第2判定用フラグがオンでないと判断したときには(S38でNO)、CPU10は第3判定用フラグD8がオンであるかどうかを判断する(S41)。第3判定用フラグがオンであると判断したときに(S41でYES)、CPU10は単独操作判定処理を行う(S42)。この単独操作判定処理とは、Aボタン72dの押下が、単独操作であるか(直後にBボタン72iが押下されないか)、同時操作であるか(直後にBボタン72iが押下されるか)を判定し、この判定結果に応じた演出内容を決定するための処理である。なお、単独操作判定処理についての詳細は図20を用いて後述する。この後、CPU10は本操作内容判定処理を終了させメイン処理に処理を戻す。
次に、CPU10がステップS41でNOと判断したときの処理を説明する。第2判定用フラグがオンでないと判断したときには(S41でNO)、CPU10は、現時点が同時操作を正解とするタイミングであるか否かを判断する(S43)。ここで、同時操作を正解とするタイミングであるときには(S43でYES)、Bボタン72iの押下が同時操作における先の操作であるとして、CPU10は、第1判定用フラグD6をオンする(S44)。このとき、CPU10は計時を開始する。そして、CPU10は本操作内容判定処理を終了させメイン処理に処理を戻す。
同時操作を正解とするタイミングでないときには(S43でNO)、CPU10は不適切なタイミングでBボタン72iが押下されたと判定する(S45)。この場合には、例えば、不適切な操作が行われたことを表すような効果音を出力するように設定してもよい。この後、CPU10は本操作内容判定処理を終了させメイン処理に処理を戻す。
以下に、CPU10がステップS37でNOと判断したときの処理を説明する。Bボタン72iが押下されていないと判断したときには(S37でNO)、CPU10は第2判定用フラグD7がオンか否かを判断する(S46)。第2判定用フラグD7がオンであると判断したとき、すなわち同時操作を正解とするタイミングで先にAボタンが押下されているときには(S46でYES)、CPU10はAボタン72dの押下から同時操作判定時間t3を経過したかどうかを、第2判定用フラグD7をオンしてからの計時時間に基づいて判断する(S47)。Aボタン72dの押下から同時操作判定時間t3を経過したと判断したときには(S47でYES)、CPU10はユーザが不適切な操作を行ったことを表す演出(失敗演出)を行うように決定する(S48)。
上記失敗演出は例えばステップS35で上述したものと同様の演出である。この様に、Aボタン72dが押下されてから同時操作判定時間t3が経過する前にBボタン72iの押下がないときには、ユーザが不適切な操作を行った(同時操作が要求されているのに過って単独操作を行った)として、CPU10はステップS48において失敗演出を決定する。なお、この様に、同時操作の失敗演出については、同時操作判定時間t3の経過を待って行われるため、ユーザが先の操作(Aボタン72dの押下)を行ってから演出開始までには若干のタイムラグが発生することになる。この後、CPU10は、第2判定用フラグD7をオフするとともに、第2判定用フラグD7のオンから開始していた計時を終了する(S49)。この後、CPU10は本操作内容判定処理を終了させメイン処理に処理を戻す。
一方、Aボタン72dの押下から同時操作判定時間t3を経過していないと判断したときには(S47でNO)、CPU10は、上記ステップS48、S49を実行することなく、本操作内容判定処理を終了させメイン処理に処理を戻す。
次に、CPU10がステップS46でNOと判断したときの処理を説明する。第2判定用フラグD7がオンでないと判断したとき(S46でNO)、CPU10は第3判定用フラグD8がオンか否かを判断する(S50)。第3判定用フラグD8がオンであると判断したときには(S50でYES)、CPU10は、Aボタン72dの押下から同時操作判定時間t3が経過したか否かを、第3判定用フラグD8をオンしてからの計時時間に基づいて判断する(S51)。ここで、Aボタン72dの押下から同時操作判定時間t3が経過したと判断したときには(S51でYES)、同時操作が行われず正しく単独操作が行われたときであるため、CPU10は図14を用いて上述したように成功二段階目演出を演出内容として決定する(S52)。すなわち、CPU10は成功二段階目演出に対応するアクションを示すよう画像生成用データD4a,D4cを更新する。なお、成功二段階目演出に演出内容が決定されたときには、後のステップS9の描画処理において、基準オブジェクトO1と指示オブジェクトO3とに数フレームをかけて当該アクションを行わせるよう処理される。
上述した様に、Aボタン72dの押下が検知されたタイミングで一段階目演出が開始され、この一段階目演出は単独操作が行われたと確定したときに操作の成功を表す成功二段階目演出に切り替えられる。これによって、Aボタン72dの押下から演出開始までのタイムラグを減らすことができながら、操作の適否に応じた演出を行うことができる。そして、CPU10は、第3判定用フラグD8をオフするとともに、第3判定用フラグD8のオンから開始した計時を終了して(S53)、本操作内容判定処理を終了させメイン処理に処理を戻す。
一方、Aボタン72dの押下から同時操作判定時間t3が経過していないと判断したときには(S51でNO)、CPU10は、上記ステップS52、S53を実行することなく、本操作内容判定処理を終了させメイン処理に処理を戻す。
次に、S50でNOと判断したとき、すなわち第3判定用フラグD8がオンでないと判断したときの処理について説明する。このときには(S50でNO)、CPU10は何ら処理を行うことなく本操作内容判定処理を終了させメイン処理に処理を戻す。
次に、図19を参照して、同時操作判定処理を説明する。まず、CPU10は、先の操作ボタン72の押下を検出したタイミングから同時操作判定時間t3が経過しているか否かを、第1判定用フラグD7又は第2判定用フラグD7をオンしてからの計時時間に基づいて判断する(S61)。なお、上記ステップS24における同時操作判定処理では、Bボタン72iの押下から同時操作判定時間t3が経過しているか否かを判断し、上記ステップS40における同時操作判定処理では、Aボタン72dの押下から同時操作判定時間t3が経過しているか否かを判断する。そして、先の操作ボタン72の押下を検出したタイミングから同時操作判定時間t3が経過していないと判断したときには(S61でNO)、CPU10は後の操作ボタン72の押下の検出タイミング(すなわち現時点)が許容期間内であるか否かを判断する(S62)。この許容期間とは、同時操作期間t2(図9の例では4拍目の期間)のことである。なお、上記ステップS24における同時操作判定処理では、後の操作ボタン72の押下とはAボタン72dの押下のことであり、上記ステップS40における同時操作判定処理では、後の操作ボタン72の押下とはBボタン72iのことである。
後の操作ボタン72の押下の検出タイミング(すなわち現時点)が許容期間内であると判断したときには(S62でYES)、CPU10は演出内容を成功演出に決定する(S63)。すなわち、CPU10は、成功演出に対応するアクションを示すよう画像生成用データD4a,D4cを更新する。例えば、基準オブジェクトO1が刀を振り回すアクションに画像生成用データD4aが更新され、指示オブジェクトO3が刀によって切断されるアクションに画像生成用データD4cを更新する。なお、成功演出に演出内容が決定されたときには、後のステップS9の描画処理において、基準オブジェクトO1と指示オブジェクトO3とに数フレームをかけて当該アクションを行わせるよう処理される。なお、成功演出は基準オブジェクトO1と指示オブジェクトO2に特定のアクションを実行させることに限定されない。成功演出とは、適切な操作を行ったことを表すことができれば、どのような内容であってもよく音声の出力等であってもよい。
上述したように、本実施形態では、先の操作ボタン72の押下の検出タイミングが許容期間でなくても後の操作ボタン72の押下の検出タイミングが許容期間内であれば、適切な操作が行われたと判定される。これによって、同時操作が要求されるときに、要求される2種類の操作のタイミングが両方とも許容期間内でなくても、片方が許容期間内であればよいため、許容期間内に同時操作を行ったと判定されやすくなり操作性を向上させることができる。
更に、先の操作ボタン72の押下と後の操作ボタン72の押下のうち後の操作ボタン72の押下の検出タイミングを用いて許容期間内であるか否かが判断される。ここで、もし、先の操作ボタン72の押下の検出タイミングを用いて許容期間内であるか否かを判断すると、後の操作ボタン72の押下が検出されるまで先の操作ボタンの押下の検出タイミングを記憶しておき、後の操作ボタン72の押下が検出されたときにこの検出タイミングが許容期間であったかを判断しなければならず処理が煩雑となる。本実施形態では、後の操作ボタン72の押下の検出タイミングを用いて許容期間であるか否かを判断するため、先の操作ボタン72の押下の検出タイミングを記憶しておかずとも、後の操作ボタン72の押下が検出されたときに現時点が許容期間であるか否かを判断するだけで足り簡易な処理で判定を行うことができる。
この後、CPU10は、スコアデータD5に所定値だけ加算して(S64)、本同時操作判定処理及び操作内容判定処理を終了させてメイン処理に処理を戻す。
次に、ステップS61でYESと判断されたときの処理を説明する。先の操作ボタン72の押下を検出したタイミングから同時操作判定時間t3が経過していると判断したときには(S61でYES)、先の操作ボタン72の押下と略同時に後の操作ボタン72が押下されたとされず、CPU10は演出内容を失敗演出と決定する(S65)。この失敗演出の内容及び本ステップにおける処理内容はステップS35において上述した内容と同じであるため説明を省略する。この後、CPU10は本処理を終了させてメイン処理に処理を戻す。
そして、ステップS62でNOと判断されたときの処理を説明する。後の操作ボタン72の押下の検出タイミング(すなわち現時点)が許容期間内でないと判断したときには(S62でNO)、許容期間内に同時操作を行うことができなかったとして、CPU10は、上述したステップS65を実行して演出内容を失敗演出に決定する(S65)。なお、この様に、同時操作が正解となるタイミングでは、Aボタン72dの押下が検出されてから直ぐに演出開始となる単独操作が正解となるタイミングとは異なり、後の操作ボタン72の押下を検出するまで又は先の操作ボタン72の押下から同時操作判定時間t3が経過するまでは演出が開始されない。従って、ユーザが先の操作ボタン72を押下してから演出が開始するまで若干のタイムラグがある。その後、本同時操作判定処理及び操作内容判定処理を終了させてメイン処理に処理を戻す。
次に、図20を参照して、単独操作判定処理を説明する。まず、CPU10は、第3判定用フラグD8をオフするとともに、この第3判定用フラグD8のオンから開始した計時を終了する(S71)。そして、CPU10は、第3判定用フラグD8のオンから開始した計時時間に基づいて、Aボタン72dの押下の検出タイミングから同時操作判定時間t3が経過したかどうかを判断する(S72)。ここで、Aボタン72dの押下の検出タイミングから同時操作判定時間t3が経過していないと判断したときには(S72でNO)、ユーザが誤って同時操作を行ったとして、CPU10は図13を用いて説明したような失敗二段階目演出に演出内容を決定する(S73)。具体的には、CPU10は画像生成用データD4a、D4cを失敗二段階目演出に対応するアクションを示すように更新する。このアクションは、例えば、図13を用いて説明したように画像生成用データD4aについては基準オブジェクトO1が刀を振り下ろした状態を維持するアクションであり、画像生成用データD4cについては指示オブジェクトO3が刀から逃げるアクションである。
なお、失敗二段階目演出に演出内容が決定されたときには、後のステップS9の描画処理において、基準オブジェクトO1と指示オブジェクトO3とに数フレームをかけて当該アクションを行わせるよう処理される。
この後、CPU10は、上記ステップS29でスコアデータD5に加算したスコアをキャンセルするための処理、すなわちステップS29に加算した所定値をスコアデータD5から減算する処理を行う(S74)。この様に、単独操作が正解となるタイミングでは、Aボタン72dの押下が検出された時点で、Aボタン72dの押下から同時操作判定時間t3の経過を待たずして一旦スコアを加算することで、Aボタン72dの押下から同時操作判定時間t3が経過するまでの間にBボタン72iが押下されなかったときに(適切に単独操作を行ったときに)、迅速な処理を行うことができる。そして、Aボタン72dの押下から同時操作判定時間t3の経過前にBボタン72iの押下があったときには(誤操作をしたときには)、一旦加算されたスコアをキャンセルすることで、ユーザが誤操作したにも関わらずスコアが確定的に加算されてしまうことを防止することができる。この後、CPU10は、本単独操作判定処理及び操作内容判定処理を終了させてメイン処理に処理を戻す。
一方、CPU10は、Aボタン72dの押下の検出タイミングから同時操作判定時間t3が経過していると判断したときには(S72でYES)、ユーザが正しく単独操作を行ったとして、CPU10は図14を用いて説明したような成功二段階目演出に演出内容を決定する(S75)。具体的には、CPU10は画像生成用データD4a、D4cを成功二段階目演出に対応するアクションを示すように更新する。このアクションは、例えば、図13を用いて説明したように画像生成用データD4aについては基準オブジェクトO1が刀を振り下ろした状態を維持するアクションであり、画像生成用データD4cについては指示オブジェクトO3が刀に切られるアクションである。
なお、成功二段階目演出に演出内容が決定されたときには、後のステップS9の描画処理において、基準オブジェクトO1と指示オブジェクトO3とに数フレームをかけて当該アクションを行わせるよう処理される。この後、CPU10は、本単独操作判定処理及び操作内容判定処理を終了させてメイン処理に処理を戻す。
図17〜図20を用いて操作内容判定処理の一例を説明したが、図9〜図11で示した例では、どのように操作内容判定処理が実行されるかを説明する。まず、図9の例について説明する。図9のような同時操作が正解となるタイミングで先にAボタン72dが押下されたとき(及びAボタン72dとBボタン72i全く同時に押下されたとき)には、ステップS21(S21でYES)、ステップS22(S22でNO)、ステップS25(S25でYES)、ステップS26が、実行される。
この後に、Aボタン72dの押下から同時操作判定時間t3が経過するまでにBボタン72iが押下されたときには、次のステップが実行される。すなわち、ステップS37(S37でYES)、S38(S38でYES)、ステップS39及びS40が実行される。なお、同時操作判定時間t3が経過した直後のフレームの処理でBボタン72iの押下が検出されたときも同様の処理が実行される。もっとも、このときには、同時操作判定処理(S40)において、ステップ61でNOと判断されて、ステップS65が実行される。
一方、Aボタン72dの押下から同時操作判定時間t3が経過してもBボタン72iの押下がないときには、次のステップが実行される。すなわち、ステップS37(S37でNO)、ステップS46(S46でYES)、ステップS47(S47でYES)、ステップS48及びS49が実行される。
一方、図9の例で先にBボタン72iが押下されたときには、ステップS21(S21でNO)、ステップS33(S33でNO)、ステップS37(S37でYES)、ステップS38(S38でNO)、ステップS41(S41でNO)、ステップS43(S43でYES)、ステップS44が実行される。
この後に、Bボタン72iの押下から同時操作判定時間t3が経過するまでにAボタン72dが押下されたときには、次のステップが実行される。すなわち、ステップS21(S21でYES)、ステップS22(S22でYES)、ステップS23及びステップS24が実行される。なお、同時操作判定時間t3が経過した直後のフレームの処理でAボタン72dの押下が検出されたときも同様の処理が実行される。もっとも、このときには、同時操作判定処理(S24)において、ステップ61でNOと判断されて、ステップS65が実行される。
一方、Bボタン72iの押下から同時操作判定時間t3が経過してもAボタン72dの押下がないときには、ステップS21(S21でNO)、ステップS33(S33でYES)、ステップS34(S34でYES)、ステップS35及びS36が実行される。
次に、図10の例について説明する。この例では、単独操作が正解となるタイミングにAボタン72dが押下されたときであるが、ステップS21(S21でYES)、ステップS22(S22でNO)、ステップS25(S25でNO)、ステップS27(S27でYES)、ステップS28が実行される。なお、図10の上側矢印の例(単独操作期間t2a外での押下)では、ステップS28でNOとなりステップS32が実行される。一方、図10の下側矢印の例(単独操作期間t2a内での押下)では、ステップS28でYESとなり、ステップS29〜S31が実行される。
この後に、Aボタン72dの押下から同時操作判定時間t3が経過するまでにBボタン72iが押下されなかったときには、ステップS37(S37でNO)、ステップS46(S46でNO)、ステップS50(S50でYES)、ステップS51(S51でYES)、ステップS52及びS53が実行される。
これに対して、Aボタン72dの押下から同時操作判定時間t3が経過する前にBボタン72iが押下されたときには、ステップS37(S37でYES)、ステップS38(S38でNO)、ステップS41(S41でYES)及びステップS42が実行される。なお、同時操作判定時間t3が経過した直後のフレームの処理でBボタン72iの押下が検出されたときも同様の処理が実行される。もっとも、このときには、単独操作判定処理(S42)において、ステップ72でYESと判断されて、ステップS75が実行される。
次に図11の例について説明する。図11の例では、Bボタン72iが不適切なタイミングで操作されたときには、ステップS37(S37でYES)、ステップS38(S38でNO)、ステップS41(ステップS41でNO)、ステップS43(S43でNO)、及びステップS45が実行される。また、Aボタン72dが不適切なタイミングで操作されたときには、ステップS21(S21でYES)、ステップS22(S22でNO)、ステップS25(S25でNO)、ステップS27(S27でNO)、ステップS32が実行される。
上述したように、本実施形態では、2つの操作ボタン72(Aボタン72d及びBボタン72i)の操作タイミングが、多少ずれても同時操作を行ったと判定される。すなわち、Aボタン72d及びBボタン72iの操作のうち先の操作から同時操作判定時間t3が経過するまでに、後の操作を行えば同時操作を行ったことになる。この様に、略同時と判定可能な程度のずれが操作タイミングに存在しても、同時操作を行ったと判定されることができ、ユーザは厳密に同時に2つの操作ボタン72の操作を行うことに留意しなくてもよくなる。
更に、同時操作が正解となるタイミングにおいて、2つの操作ボタン72の操作のうちの後で行われた操作(後の操作)のみが許容期間内(同時操作期間t2内)に検出されれば、同時操作期間t2内に同時操作を行ったと判断される。これによって、厳密に同時に2つの操作ボタン72の操作を行うことに留意しなくてもよいばかりか、後の操作を許容期間内に行うことに留意すればよくなり、ユーザの操作の快適性が向上する。ユーザは同時操作が要求されていても片方の操作だけでも許容期間内に行うことができれば自己の操作が適切だったと感じる傾向があるため、この様な構成を採用することで、ユーザが適切な操作を行ったと感じているにもかかわらず、操作が不適切であると判定されるという不都合を解消することができる。
また、本実施形態では、後の操作のみが許容期間内に検出されれば適切な操作を行ったと判断される。ここで、2つの操作ボタン72の操作のうちの先に行われた操作(先の操作)の検出タイミングが許容期間内であるかを判定すると、先の操作の検出タイミングを記憶する必要が生じ、また、後の操作があったときに、記憶している先の操作の検出タイミングが許容期間内であるか否かを判断するという比較的複雑な処理を行う必要がある。これに対して、本実施形態では、後の操作があった時点で、現時点が許容期間内にあるかどうかを判断するだけの比較的簡易な処理で適切なタイミングで操作が行われたか否かを判定することができる。
上記実施形態の変形例を以下に記載する。
(1)本実施形態では、同時操作が許容期間内に行われたか否かを後の操作の検出タイミングを用いて判定しているが、これに代えて先の操作の検出タイミングを用いて判定してもよい。
(2)本実施形態では、単独操作はAボタン72dの押下であるが、Aボタン72d及びBボタン72iの何れかの押下であってもよい。また、同時操作及び単独操作は、何れも操作子(操作ボタン72)の押下であるが、操作は操作子の押下に限定されない。例えば、スティック形状の操作子であれば操作子の傾倒であってもよい。また、操作は、操作子の操作に限定されず、例えば、画面の所定位置をポインティングする操作(例えば、タッチパネルの所定位置をタッチする操作や、テレビ3の画面の所定位置にコントローラ等を向ける操作等を含む)であってもよい。
(3)本実施形態では、同時操作を2種類の操作(Aボタン72dの押下と、Bボタン72iの押下)を略同時に行う操作として説明したが、3種類以上の操作を略同時に行う操作であってもよい。この場合には、何れか1種類の操作が許容期間内に行われること、及び3種類以上の操作のうち最先に行われた操作が検出されてから全ての操作が同時操作判定時間t3内に行われることを、適切なタイミングで同時操作を行ったことの判定要件として採用すればよい。
(4)本実施形態では、単独操作と同時操作の2つの操作を行うことをユーザに要求しているが、同時操作のみをユーザに要求する構成であってもよい。
(5)本実施形態では、音楽ゲームプログラムにおいて本発明を適用したが、必ずしも音楽ゲームプログラムに採用しなくてもよい。すなわち、楽曲に合わせて操作を要求しない他のゲームプログラムに適用してもよい。また、ゲームプログラムの他のプログラムにも採用することができる。
(6)また、本実施形態では、据置型のゲーム装置に本発明を適用した例を説明したが、本発明は、携帯型ゲーム装置や、携帯電話や、一般的なパーソナルコンピュータ等の任意の情報処理装置に適用することができる。
(7)音楽ゲーム処理のうち一部の処理がサーバに分担されてもよい。