以下、本実施形態の一例に係るゲームシステムについて説明する。図1は、ゲームシステムに含まれる各装置の一例を示す図である。図1に示すように、ゲームシステム1は、本体装置2と、左コントローラ3および右コントローラ4と、リング型拡張装置5と、ベルト型拡張装置6とを含む。
本体装置2は、情報処理装置の一例であり、本実施形態ではゲーム機本体として機能する。本体装置2には、左コントローラ3および右コントローラ4がそれぞれ着脱可能である(図1および図3参照)。つまり、ユーザは、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として使用することができる(図2参照)。また、ユーザは、本体装置2と左コントローラ3および右コントローラ4とを別体として使用することもできる(図3参照)。なお、以下においては、本体装置2と各コントローラ3および4とをまとめて、「ゲーム装置」と呼ぶことがある。
リング型拡張装置5は、右コントローラ4に用いられる拡張装置の一例である。リング型拡張装置5は、右コントローラ4をリング型拡張装置5に装着した状態で使用される。また、ベルト型拡張装置6は、左コントローラ3に用いられる拡張装置の一例である。ベルト型拡張装置6は、左コントローラ3をベルト型拡張装置6に装着した状態で使用される。このように、本実施形態においては、ユーザは、各コントローラ3および4を各拡張装置に装着した状態で使用することもできる(図12参照)。なお、リング型拡張装置5は、右コントローラ4に限らず、左コントローラ3を自身に装着することが可能であってもよい。ベルト型拡張装置6は、左コントローラ3に限らず、右コントローラ4を自身に装着することが可能であってもよい。これら拡張装置によって、コントローラの機能や使用態様を、拡張または変更することが可能である。なお、これら拡張装置を単に周辺機器と呼称してもよい。
図2は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。図2に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
図3は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図2および図3に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
図4は、本体装置2の一例を示す六面図である。図4に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
図4に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、図7に示すスピーカ88)を備えている。図4に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
図4に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
図5は、左コントローラ3の一例を示す六面図である。図5に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、図2および図5に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
左コントローラ3は、アナログスティック32を備える。図5に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック32を押下する入力が可能である。
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33〜36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。さらに、左コントローラ3は、録画ボタン37および−(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
図6は、右コントローラ4の一例を示す六面図である。図6に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。本実施形態においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53〜56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
図7は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図4に示す構成の他、図7に示す各構成要素81〜91、97、および98を備える。これらの構成要素81〜91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System−on−a−chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi−Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
図8は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、図7で示しているため図8では省略している。
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。図8に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
左コントローラ3は、各ボタン103(具体的には、ボタン33〜39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(図8では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
左コントローラ3は、慣性センサを備える。具体的には、左コントローラ3は、加速度センサ104を備える。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、図5に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ105は、所定の3軸(例えば、図5に示すxyz軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
図8に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、アナログスティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
右コントローラ4は、処理部121を備える。処理部121は、通信制御部111に接続される。
また、処理部121は、CPUやメモリ等を含み、右コントローラ4に備えられた図示しない記憶装置(例えば、不揮発性メモリ等)に記憶された所定のプログラム(例えば、各種演算を行うためのアプリケーションプログラム)に基づいて、本体装置2からの指令に応じて処理を実行する。なお、処理部121が処理を行う際に用いるメモリは、処理部121内に設けられてもいいし、メモリ112であってもよい。
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
図9は、リング型拡張装置の一例を示す図である。なお、図9は、右コントローラ4が装着された状態のリング型拡張装置5を示している。本実施形態においては、リング型拡張装置5は、右コントローラ4を装着可能な拡張装置である。詳細は後述するが、本実施形態においては、ユーザは、リング型拡張装置5に力を加えて変形させるという新規な操作を行う。ユーザは、例えばエクササイズを行う感覚でリング型拡張装置5を用いたフィットネス動作を行うことによって、リング型拡張装置5に対する操作を行うことができる。
図9に示すように、リング型拡張装置5は、環状部201と、本体部202とを備える。環状部201は、環状の形状を有する。なお、本実施形態においては、環状部201は、後述する弾性部材および台座部によって環状に形成される。本実施形態においては、環状部201は円環状である。なお、他の実施形態においては、環状部201の形状は任意であり、例えば楕円環状であってもよい。
本体部202は、環状部201に設けられる。本体部202は、図示しないレール部を有する。レール部は、右コントローラ4を装着可能な装着部の一例である。本実施形態においては、レール部は、右コントローラ4のスライダ62(図6参照)に対してスライド可能に係合する。スライダ62がレール部材に対して所定の直線方向(すなわち、スライド方向)に挿入されることで、レール部材に対してスライダ62が当該直線方向にスライド移動が可能な状態でレール部材がスライダ62と係合する。なお、レール部は、コントローラのスライダに対してスライド可能に係合することが可能である点で、本体装置2が有するレール部と同様である。そのため、レール部は、本体装置2が有するレール部と同様の構成であってもよい。
本実施形態においては、右コントローラ4は、係止部63を有する(図6参照)。係止部63は、スライダ62から側方(すなわち、図6に示すz軸正方向)に突出して設けられる。係止部63は、スライダ62の内部の方向へ移動可能であるとともに、上記側方へ突出した状態となる向きに(例えばバネによって)付勢されている。また、レール部には、切欠きが設けられる。スライダ62がレール部の奥まで挿入された状態において、係止部63は切欠きに係止する。レール部にスライダ62が係合した状態で係止部63が切欠きに係止することによって、本体部202に右コントローラ4が装着される。
なお、右コントローラ4は、押下可能な解除ボタン69を備える(図6参照)。上記係止部63は、解除ボタン69が押下されることに応じて、スライダ62の内部の方向へ移動し、スライダ62に対して突出しない(あるいは、ほとんど突出しない)状態となる。したがって、リング型拡張装置5の本体部202に右コントローラ4が装着された状態において、解除ボタン69が押下されると、係止部63は切欠きに係止しなくなる(あるいは、ほとんど係止しなくなる)。以上より、リング型拡張装置5の本体部202に右コントローラ4が装着される状態において、ユーザは、解除ボタン69を押下することによって右コントローラ4をリング型拡張装置5から容易に取り外すことができる。
図9に示すように、リング型拡張装置5は、グリップカバー203および204を有する。グリップカバー203および204は、ユーザが把持するための部品である。本実施形態においては、グリップカバー203および204は、環状部201に対して取り外し可能である。本実施形態においては、環状部201の左端付近の左把持部分に左グリップカバー203が設けられ、環状部201の右端付近の右把持部分に右グリップカバー204が設けられる。なお、把持部分の数は任意であり、想定される操作方法に応じて、3箇所以上に把持部分が設けられてもよいし、1箇所のみに把持部分が設けられてもよい。また、ゲームの内容(あるいは、ゲームにおいてユーザが行うフィットネス動作の内容)によっては、複数の把持部のうちの特定の把持部のみが片手または両手で把持されることがあってもよい。
図10は、リング型拡張装置5が備える構成要素の電気的な接続関係を示すブロック図である。図10に示すように、リング型拡張装置5は、歪み検出部211を備える。歪み検出部211は、環状部201が変形したことを検出する検出部の一例である。本実施形態においては、歪み検出部211は、歪みゲージを含む。歪み検出部211は、後述する弾性部材の変形に応じた台座部の歪みを示す信号(換言すれば、弾性部材の変形の大きさおよび変形の向きを示す信号)を出力する。
ここで、本実施形態においては、環状部201は、弾性変形可能な弾性部材と、台座部とを有する。台座部は、当該台座部と弾性部材とによって環が形成されるように当該弾性部材の両端部を保持する。なお、台座部は、本体部202の内部に設けられるので、図9において図示されていない。台座部は、弾性部材よりも剛性が高い材質で構成される。例えば、弾性部材は、樹脂(具体的には、FRP(Fiber Reinforced Plastics))で構成され、台座部は、金属で構成される。上記歪みゲージは、台座部に設けられ、当該台座部の歪みを検出する。環状部201が定常状態から変形した場合、変形によって台座部に歪みが生じるので、歪みゲージによって台座部の歪みが検出される。検出された歪みに基づいて、環状部201が変形する向き(すなわち、2つのグリップカバー203および204が近づく向き、または、離れる向き)と、変形量とを算出することができる。
なお、他の実施形態においては、歪み検出部211は、歪みゲージに代えて、環状部201が定常状態から変形したことを検出可能な任意のセンサを含んでもよい。例えば、検出部211は、環状部201が変形した場合に加わる圧力を検出する感圧センサを含んでもよいし、環状部201が曲げられた量を検出する曲げセンサを含んでもよい。
リング型拡張装置5は、信号変換部212を備える。本実施形態においては、信号変換部212は、アンプと、ADコンバータとを含む。信号変換部212は、歪み検出部211に電気的に接続され、歪み検出部211の出力信号をアンプによって増幅し、ADコンバータによってAD変換を行う。信号変換部212は、歪み検出部211によって検出された歪み値を示すデジタル信号を出力する。なお、他の実施形態においては、信号変換部212はADコンバータを含まず、後述する処理部213がADコンバータを含んでいてもよい。
リング型拡張装置5は、処理部213を備える。処理部213は、プロセッサとメモリとを備える処理回路であり、例えばMCU(Micro Controller Unit)である。処理部213は、信号変換部212に電気的に接続され、信号変換部212の出力信号が処理部213に入力される。また、リング型拡張装置5は、端子214を備える。端子214は、処理部213に電気的に接続される。リング型拡張装置5に右コントローラ4が装着されている場合、処理部213は、信号変換部212の出力信号が示す歪み値を示す情報(換言すれば、後述するリング操作データ)を、端子214を介して右コントローラ4へ送信する。
リング型拡張装置5は、電力変換部215を備える。電力変換部215は、上記各部211〜214に電気的に接続される。電力変換部215は、端子214を介して外部(すなわち、右コントローラ4)から供給される電力を、上記各部211〜214に供給する。電力変換部215は、供給される電力について電圧等の調整を行って上記各部211〜214に供給してもよい。
なお、リング型拡張装置5が他の装置へ送信する「歪み検出部の検出結果に関するデータ」は、当該検出結果(本実施形態においては、台座部の歪みを示す、歪み検出部211の出力信号)そのものを示すデータであってもよいし、当該検出結果に対して何らかの処理(例えば、データ形式の変換、および/または、歪み値に対する計算処理等)が行われることによって得られるデータであってもよい。例えば、処理部213は、上記検出結果である歪み値に基づいて弾性部材の変形量を算出する処理を行ってもよく、このとき、「歪み検出部の検出結果に関するデータ」は、当該変形量を示すデータであってもよい。
なお、他の実施形態においては、リング型拡張装置5は、電池を備え、当該電池の電力によって動作してもよい。また、リング型拡張装置5が備える電池は、右コントローラ4から供給される電力によって充電可能な充電池であってもよい。
図11は、ベルト型拡張装置の一例を示す図である。ベルト型拡張装置6は、自身に左コントローラ3が装着された状態で、ユーザの足に締着して使用する(図12参照)。図11に示すように、ベルト型拡張装置6は、収容部301と、ベルト部302とを備える。収容部301は、平面状の形状であり、左コントローラ3を収容可能である。具体的には、収容部301は、ポケット部303を有する。ポケット部303は、左コントローラ3を収容可能な大きさの袋状に形成される。本実施形態においては、収容部301が左コントローラを収容することで、左コントローラ3がベルト型拡張装置6に装着される。なお、他の実施形態においては、ベルト型拡張装置6に左コントローラ3を装着させるための構成は任意である。
収容部301には、ポケット部303の側方に通し孔304が設けられる。ベルト部302は、収容部301のうち、ポケット部303の側方であって、ポケット部303を基準に通し孔304の反対側に設けられる。ベルト部302は、帯状の形状であり、その一端が収容部301に固定される。本実施形態においては、ベルト部302は、伸縮性を有する材質(例えば、織ゴム)で構成される。
ベルト部302のうち、収容部301においてポケット部303が設けられる側の面と同じ側の面には、第1面ファスナー305および第2面ファスナー306が設けられる。第1面ファスナー305は、収容部301に固定される側と反対側の端部付近に設けられる。また、第2面ファスナー306は、第1面ファスナー305と同じ面において、第1面ファスナー305と比べて収容部301に近い側に設けられる。第1面ファスナー305と第2面ファスナー306とは、互いに着脱可能である。例えば、第1面ファスナー305は、フック面の面ファスナーであり、第2面ファスナー306は、ループ面の面ファスナーである。
ベルト型拡張装置6を締着する際、ユーザは、ベルト部302を足に一周させた状態でベルト部302を通し孔304に通して、第1面ファスナー305と第2面ファスナー306とを接着させる。これによって、ユーザは、左コントローラ3が装着されたベルト型拡張装置6を足に締着することができる(図12参照)。
図12は、リング型拡張装置5およびベルト型拡張装置6をユーザが使用する様子の一例を示す図である。図12に示すように、ユーザは、ゲーム装置(すなわち、本体装置2ならびに各コントローラ3および4)に加えて、2つの拡張装置5および6を用いてゲームを行うことができる。例えば、ユーザは、リング型拡張装置5とベルト型拡張装置6とをセットで使用することができる。
例えば図12に示すように、ユーザは、右コントローラ4が装着されたリング型拡張装置5を両手で把持し、左コントローラ3が装着されたベルト型拡張装置6を足に締着する。このとき、ユーザは、リング型拡張装置5に対する操作(例えば、リング型拡張装置5を変形させる操作、および、リング型拡張装置5を動かす操作)と、ベルト型拡張装置6を締着した足を動かす操作とによって、ゲームを行うことができる。
なお、図12においては、ユーザがグリップカバー203および204を把持してリング型拡張装置5を変形させる動作を行う様子を例示している。この動作によって、ユーザは、両腕を鍛えるフィットネス動作をゲーム操作として行うことができる。なお、ユーザはリング型拡張装置5に対する種々の動作でゲーム操作を行うことができる。例えば、ユーザは、一方のグリップカバーを両手で把持し、他方のグリップカバーを腹部に当てた状態で、リング型拡張装置5を変形させる動作を行うこともできる。この動作によって、ユーザは、腕と腹筋を鍛えるフィットネス動作をゲーム操作として行うことができる。また、ユーザは、両足の内股にグリップカバー203および204を当ててリング型拡張装置5を足で挟んだ状態で、リング型拡張装置5を変形させる動作を行うこともできる。この動作によって、ユーザは、足の筋肉を鍛えるフィットネス動作をゲーム操作として行うことができる。
本体装置2においてゲーム処理が実行される場合、右コントローラ4は、リング型拡張装置5からリング操作データを受信する。リング操作データは、上記歪み値を示す情報を含む。具体的には、リング型拡張装置5の処理部213は、端子214を介してリング操作データを右コントローラ4へ送信する。例えば、処理部213は、所定時間に1回の割合でリング操作データを繰り返し送信する。
上記の場合、右コントローラ4の通信制御部111は、リング型拡張装置5から端子64を介して受信したリング操作データを本体装置2へ送信する。また、通信制御部111は、右コントローラ4に含まれる各入力部(具体的には、各ボタン113、アナログスティック52、各センサ114および115)から取得された情報を含む右コントローラ操作データを本体装置2へ送信する。なお、右コントローラ4がリング型拡張装置5に装着される状態では、右コントローラ4から本体装置2への通信は、無線通信によって行われる。通信制御部111は、右コントローラ操作データとリング操作データとをまとめて本体装置2へ送信してもよいし、別個に本体装置2へ送信してもよい。また、通信制御部111は、受信したリング操作データをそのまま本体装置2へ送信してもよいし、受信したリング操作データに何らかの加工(例えば、データ形式の変換、および/または、歪み値に対する計算処理等)を行って本体装置2へ送信してもよい。
一方、本体装置2においてゲーム処理が実行される場合、左コントローラ3の通信制御部101は、左コントローラ3に含まれる各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から取得された情報を含む左コントローラ操作データを本体装置2へ送信する。左コントローラ3がベルト型拡張装置6に装着される状態では、左コントローラ3から本体装置2への通信は、無線通信によって行われる。
(本実施形態のゲームの概要)
次に、本実施形態のゲームの概要について説明する。本実施形態では、右コントローラ4が装着されたリング型拡張装置5、および、左コントローラ3が装着されたベルト型拡張装置6を用いて、ゲームが行われる。本実施形態のゲームは、ユーザに運動させるためのフィットネスゲームである。図12に示したように、ユーザは、リング型拡張装置5を両手で把持し、ベルト型拡張装置6を脚(例えばもも)に締着した状態で、指示にしたがった運動を行うことでゲームをプレイする。以下では、右コントローラ4が装着されたリング型拡張装置5を「リングコントローラ」と表記し、左コントローラ3が装着されたベルト型拡張装置6を「脚コントローラ」と表記することがある。
本実施形態のゲームにおける所定のゲームシーンでは、リングコントローラに対する操作に応じて音楽が出力される。以下では、まず、ユーザによって行われるリングコントローラに対する操作について説明した後、当該操作に応じた音楽の出力について説明する。
図13は、リングコントローラに対する操作の一例であって押し込み操作を示す図である。図14は、リングコントローラに対する操作の一例であって引っ張り操作を示す図である。
図13に示すように、ユーザは、リングコントローラのグリップカバー203および204を両手で把持して、左右方向からリングの中心に向かってリングコントローラを押し込むように操作する。この押し込み操作が行われると、リングコントローラは、円環状から、グリップカバー203および204を結ぶ線分を短軸とする略楕円形状に変形する。このとき、歪み検出部211(リングコントローラの変形を検出するセンサ。具体的には歪みゲージ)は、弾性部材の変形に応じた台座部の歪みを示す信号を出力する。当該信号に基づいて、歪み検出部の検出結果に関するデータ(リング操作データ)が、リング型拡張装置5から右コントローラ4に送信され、右コントローラ4は当該データを本体装置2に送信する。本体装置2は、当該データに基づいて、リングコントローラの変形情報を取得する。なお、「リングコントローラの変形情報を取得する」ことは、歪み検出部211からの出力信号そのものを取得することであってもよいし、歪み検出部211からの出力信号に基づいて所定の処理(データ形式の変換や演算処理)を行った結果を取得することであってもよい。ここで、「変形情報」は、リングコントローラが変形したこと、及び、その変形の量を示す情報であり、例えば、正又は負の歪み値で表される情報ある。例えば、リングコントローラが押し込まれた場合、本体装置2は、変形情報として、正の歪み値を取得する。なお、以下では、リングコントローラが押し込まれた場合に出力される正の歪み値を、「押し込み量」ということがある。「押し込み量」は、リングコントローラを押し込むときの力の強さに応じて異なる。
また、図14に示すように、ユーザは、リングの中心から左右方向に向かってリングコントローラを引っ張るように操作することも可能である。この引っ張り操作が行われると、リングコントローラは、円環状から、グリップカバー203および204を結ぶ線分を長軸とする略楕円形状に変形する。リングコントローラが引っ張られた場合、本体装置2は、変形情報として、負の歪み値を取得する。なお、以下では、リングコントローラが引っ張られた場合に出力される負の歪み値を、「引っ張り量」ということがある。「引っ張り量」は、リングコントローラを引っ張るときの力の強さに応じて異なる。
図15は、リングコントローラに対する操作の一例であって捻り操作を示す図である。図16は、リングコントローラに対する操作の一例であって傾け操作を示す図である。
図15に示すように、ユーザは、リングコントローラのグリップカバー203および204を両手で把持して、リングの中心軸(右コントローラ4のz軸に平行な軸)周りにリングコントローラを回転させることができる。以下では、リングの中心軸周りにリングコントローラを回転させる操作を「捻り操作」といい、当該中心軸周りの回転角を「捻り量」ということがある。
また、図16に示すように、ユーザは、リングコントローラをユーザから見て奥方向(図16の時計回り)または手前方向(図16の反時計回り)に傾けることができる。具体的には、ユーザは、右コントローラ4のy軸に平行な直線周りにリングコントローラを回転させることができる。このユーザから見て奥方向又は手前方向にリングコントローラを回転させる操作を「傾け操作」といい、当該回転角を「傾き量」ということがある。
なお、右コントローラ4のx軸負方向が重力方向と並行となるリングコントローラの姿勢を「基準姿勢」という。基準姿勢では、捻り量および傾き量は「0」である。
リングコントローラに対して捻り操作及び/又は傾け操作が行われたか否かは、リングコントローラの姿勢に基づいて判断される。リングコントローラ(右コントローラ4)の姿勢は、右コントローラ4の加速度センサ114および角速度センサ115からのデータに基づいて算出される。具体的には、本体装置2は、角速度センサ115によって検出された角速度値を積分することで、基準姿勢からの姿勢の変化を算出し、現在のリングコントローラの姿勢を算出することができる。また、本体装置2は、加速度センサ114によって検出された加速度値にも基づいて、リングコントローラの現在の姿勢を算出する。
また、ユーザは、リングコントローラに対する「振り操作」を行うことができる。「振り操作」は、リングコントローラの姿勢を短時間で急激に変化させたり、リングコントローラを短時間で急激に移動させたりする操作である。この「振り操作」は、右コントローラ4の加速度センサ114によって検出された加速度値に基づいて検出される。なお、振り操作は、リングコントローラの姿勢の変化に基づいて検出されてもよい。
(操作に基づく音楽の出力)
次に、リングコントローラに対する各操作に基づく、音楽の出力について説明する。
図17は、リングコントローラに対する操作に基づく音楽の出力の概要を示す図である。図17に示すように、本体装置2は、リングコントローラ(具体的には右コントローラ4)からセンサデータを取得する。センサデータは、各センサ(加速度センサ114、角速度センサ115、および、歪み検出部211)からの出力に基づくデータである。
本体装置2は、センサデータを受信すると、当該データに基づいて、リングコントローラの変形に関する変形情報(押し込み量又は引っ張り量)を算出する。また、本体装置2は、角速度センサ115及び加速度センサ114からのデータに基づいて、姿勢情報を算出する。「姿勢情報」は、傾き量および捻り量である。また、本体装置2は、加速度センサ114からのデータに基づいて、リングコントローラが振られたか否かの振り判定を行う。
また、本体装置2には、予め音データが記憶されている。音データには、例えば、BGM(Back Ground Music)に関する音データ、所定の楽器を演奏したときに出力される楽器音に関する音データ、所定の効果音(例えば、人の声、電子音等)に関する音データが含まれる。
本体装置2は、変形情報、姿勢情報、及び、振り判定の結果に基づいて、1又は複数の音データを用いて音楽を生成し、スピーカから音楽を出力する。例えば、本体装置2は、BGMを付加したり、フィルタを適用したり、ディレイ処理を行ったり、楽器音や効果音を付加したり、音程を変化させたりして、基本となる音楽に対して音響効果を付与した音楽を出力する。
以下、変形情報、姿勢情報、及び、振り判定の結果に基づく音楽の生成および出力について説明する。
(第1のゲームシーンにおける音楽の生成および出力)
本実施形態の第1のゲームシーン(例えば、ゲームをクリアしたときのエンディングシーン)では、ゲーム画像の出力とともに、リングコントローラに対する操作に応じた音楽が生成および出力される。
図18は、第1のゲームシーンにおけるリングコントローラに対する操作に基づく音楽の出力の概要を示す図である。
図18に示すように、第1のゲームシーンでは、基本BGMが再生されて出力される。基本BGMは、ある程度の長さを有する音楽であり、例えば、ピアノを中心とした音色の音楽である。基本BGMに関する音データは、予め本体装置2(のフラッシュメモリ84または外部記憶媒体)に記憶されている。例えば、基本BGMは、第1のゲームシーンが開始された場合に自動的に再生開始される。
リングコントローラに対して押し込み操作が行われた場合、基本BGMに対して、第1BGMが付加される(ステップS1)。第1BGMは、基本BGMと同様の旋律の音楽であって、基本BGMとは異なる音色の音楽である。例えば、第1BGMは、基本BGMと同様の旋律の音楽であって、管弦楽曲であってもよい。また、リングコントローラに対して引っ張り操作が行われた場合、基本BGMに対して、第2BGMが付加される。第2BGMは、基本BGMと同様の旋律の音楽であって、基本BGM及び第1BGMとは異なる音色の音楽である。例えば、第2BGMは、電子音をベースとした音色の音楽であってもよい。
第1BGMおよび第2BGMに関する音データは、予め本体装置2に記憶されている。押し込み操作又は引っ張り操作が行われると、その変形量(押し込み量又は引っ張り量)に応じて第1BGM又は第2BGMの音量が設定される。押し込み操作又は引っ張り操作に応じた第1BGM又は第2BGMの出力については、図19および図20を参照して後述する。
次に、出力される音に対してフィルタ処理が行われる(ステップS2)。具体的には、リングコントローラの変形量(押し込み量又は引っ張り量)と傾き量とに基づいて、BGM(基本BGM、第1BGM、第2BGM)に対して、フィルタ処理が行われる。
例えば、リングコントローラが奥方向に傾けられた場合は、ローパスフィルタが適用される。ローパスフィルタは、出力される音のうち、比較的周波数の低い音を通過させ、比較的周波数の高い音をカット又は減衰させるフィルタである。また、リングコントローラが手前方向に傾けられた場合は、バンドパスフィルタが適用される。バンドパスフィルタは、出力される音のうち、特定の周波数帯の音を通過させ、特定の周波数帯以外の音(特定の周波数帯より低い音及び高い音)をカット又は減衰させるフィルタである。出力される音にローパスフィルタ又はバンドパスフィルタがかけられることにより、音の聞こえ方が変化する。
リングコントローラの傾きに応じてローパスフィルタ又はバンドパスフィルタが選択される場合、フィルタの度合いを示すフィルタ値が算出される。フィルタ値は、傾き量と変形量とに基づいて算出される。具体的には、フィルタ値は、傾き量と変形量との積に基づいて算出される。傾き量が大きいほどフィルタ値は大きくなる。また、変形量が大きいほど、フィルタ値は大きくなる。
フィルタ値が大きいほど、フィルタがかからないときと比べて聞こえ方が大きく異なる。例えば、減衰される周波数の範囲は同じで、フィルタ値に応じて減衰度合いが異なってもよい。例えば、減衰される周波数の範囲は固定され、フィルタ値が大きいほど、減衰度合いが高くてもよい。また、フィルタ値に応じて、カット又は減衰される周波数の範囲が異なってもよい。例えば、フィルタ値が大きいほど、カット又は減衰される周波数の範囲が広くてもよい。また、フィルタ値によって、カット又は減衰される周波数の範囲の中心が異なってもよい。例えば、フィルタ値が大きいほど、バンドパスフィルタにおける通過される周波数帯の中心周波数が高く(又は低く)設定されてもよい。
次に、フィルタ処理に加えて、さらにディレイ処理が行われる(ステップS3)。ディレイ処理は、リングコントローラの変形量と、捻り量とに基づいて行われる。ディレイ処理は、出力されるある音について、当該ある音を減衰させた音を、所定時間遅らせて当該ある音とともに出力する処理である。ここでは、出力されるある音を「元の音」と呼び、所定時間遅らせて出力される音を「ディレイ音」と呼ぶことがある。ディレイ処理によって、元の音を残響させることができる。ディレイ処理は、出力される元の音毎に行われる。例えば、基本BGMと第1BGMとが元の音として出力される場合、ディレイ処理が行われると、基本BGMを減衰させたディレイ音が基本BGMより所定時間遅れて出力されるとともに、第1BGMを減衰させたディレイ音が第1BGMより所定時間遅れて出力される。なお、BGM(基本BGM、第1BGM、第2BGM)にフィルタ処理が行われている場合には、フィルタ処理が行われたBGMに対して、ディレイ処理が行われる。
具体的には、捻り量と変形量との積に基づいて、ディレイ音の音量が算出される。捻り量が大きいほど、ディレイ音の音量は大きくなる。また、変形量が大きいほど、ディレイ音の音量は大きくなる。ディレイ音の音量は、例えば、元の音の音量の0〜1倍に設定される。捻り量又は変形量がゼロの場合、ディレイ音の音量はゼロに設定される。すなわち、この場合、ディレイ音は出力されない。音量以外のディレイに関するパラメータ(例えば、ディレイ音を元の音に対してどれくらい遅らせるか、ディレイ回数を何回にするかに関するパラメータ)は、予め定められている。なお、音量以外のディレイに関するパラメータについても、リングコントローラに対する操作に応じて設定されてもよい。例えば、当該ディレイに関するパラメータは、姿勢情報及び/又は変形情報に基づいて設定されてもよい。
ディレイ処理に加えて、さらに、楽器音が付加される(ステップS4)。具体的には、リングコントローラに対する押し込み操作又は引っ張り操作を検出した場合、そのときのリングコントローラの姿勢に応じて楽器音が付加される。楽器音の出力については、図22を参照して後述する。
次に、楽器音に加えて、さらに振り操作が行われた場合、効果音が付加される(ステップS5)。効果音は、ステップS4の楽器音とは異なる音であって、例えば、人の声や電子音等であってもよい。本体装置2には、予め複数の効果音が記憶される。具体的には、振り操作が検知された場合、その時点におけるリングコントローラの姿勢に応じて、複数の効果音の中から何れかの効果音が選択される。また、リングコントローラの姿勢に応じて、出力される効果音に変化が加えられる。例えば、振り操作が検知された場合、その時点における捻り量に応じて、効果音の再生速度が異なる。効果音の出力については、図23を参照して後述する。
そして、ステップS1〜ステップS5の処理の結果に応じた音楽がスピーカから出力される(ステップS6)。
次に、上記ステップS1、S4及びS5の各処理について図を参照して具体的に説明する。
図19は、リングコントローラに対して押し込み操作が行われた場合の押し込み量と、第1BGMの音量との関係の一例を示す図である。
図19において、横軸は時間を示し、縦軸は押し込み量又は第1BGMの音量を示す。また、図中の実線は押し込み量を示し、破線は第1BGMの音量を示す。
図19に示すように、時刻t0からt1までは押し込み操作は行われなかったとする。この時刻t0〜t1の間は、第1BGMの音量は「0」に設定される。この間、基本BGMがスピーカから出力され、第1BGMはスピーカから出力されない。時刻t1において押し込み操作が開始され、時刻t2まで押し込み量が増加した場合、押し込み量の増加に応じて第1BGMの音量が増加される。これにより、基本BGMに重畳して、第1BGMがスピーカから出力される。時刻t2からt3まで押し込み量が維持された場合、第1BGMの音量も維持される。そして、時刻t3からt4まで押し込み量が減少すると、第1BGMの音量も減少し、時刻t4において押し込み量が「0」になった場合(すなわち、押し込み操作が行われなくなった場合)、第1BGMの音量も「0」になる。
このように、時刻t1〜t4の間、押し込み量に追従して第1BGMの音量が算出され、算出された音量で第1BGMが出力される。これにより、押し込み操作が行われている間、基本BGMに重畳して、第1BGMがスピーカから継続的に出力される。
図20は、リングコントローラに対して押し込み操作が行われた場合において、押し込み速度が閾値を超えている場合の押し込み量と、第1BGMの音量との関係の一例を示す図である。
図20に示すように、時刻t0からt1までの間、押し込み量が増加したとする。この間、押し込み量に追従して、第1BGMの音量が設定される。時刻t0〜t1まで間の押し込み速度(単位時間当たりの押し込み量の増加量)が所定の閾値を超えている場合、時刻t1から押し込み量が減少しても、押し込み量の減少より遅れて第1BGMの音量が減少する。具体的には、押し込み量が時刻t1から減少に転じ、時刻t2において「0」になった場合でも、時刻t0〜t1の間の押し込み速度が所定の閾値を超えている場合には、時刻t1における第1BGMの音量が、所定時間(例えば、0.5秒間)維持される。時刻t1から所定時間経過後の時刻t3から第1BGMの音量が減少し始める。そして、時刻t4において、第1BGMの音量は「0」に設定される。この時刻t3〜t4の間は、第1BGMの音量は、一定の割合で減少する。
このように、ユーザが短時間でリングコントローラを押し込んだ場合、押し込み速度が閾値を超え、その後、ユーザが押し込みを止めて押し込み量が急激に減少しても、第1BGMの音量は急激に減少せず、第1BGMが余韻のように残る。
次に、時刻t5において押し込み操作が再び開始され、時刻t6まで押し込み量が増加したとする。この時刻t5〜t6の間、押し込み量に追従して第1BGMの音量が増加する。時刻t5〜t6の間の押し込み速度も、所定の閾値を超えているものとする。次に、押し込み量は、時刻t6〜t7の間、減少し、次の時刻t7〜t9の間、一定値を保ったものとする。この場合、時刻t6から所定時間(0.5秒間)は、第1BGMの音量は維持される。そして、第1BGMの音量は、所定時間経過後の時刻t8から、一定速度で減少し始める。
ここで、一定速度で減少する第1BGMの音量と、押し込み量に応じて算出される音量とのうち、大きい方の音量が第1BGMの音量として設定される。例えば、図20に示すように、押し込み量が、時刻t9から増加に転じたとする。この時刻t9においては、押し込み量に応じて算出される音量よりも、一定速度で減少している第1BGMの音量の方が大きい。このため、時刻t9においては、一定速度で減少された音量が、第1BGMの音量として設定される。
一方、時刻t9より後の時刻t10において、押し込み量に応じて算出される音量と、一定速度で減少される音量とが一致する。時刻t10以降は、押し込み量に応じて算出される音量の方が、一定速度で減少される音量よりも大きくなる。このため、時刻t10以降は、第1BGMの音量は、その時点の押し込み量に応じて設定される。具体的には、時刻t10〜t11の間、押し込み量が増加し、この押し込み量の増加に追従して、第1BGMの音量が設定される。
時刻t10〜t11の間の押し込み速度が所定の閾値を超えている場合、時刻t11から押し込み量が減少し始め、時刻12において押し込み量が「0」になっても、時刻t11における音量が所定時間維持される。そして、所定時間経過後の時刻t13において第1BGMの音量が減少し始める。時刻t13以降、第1BGMの音量は、一定速度で減少する。
図19で示したように、押し込み速度が所定の閾値以下の場合は、第1BGMの音量は押し込み量に応じて算出され、押し込み量に追従して変化する。一方、図20で示したように、押し込み速度が所定の閾値を超えている場合には、第1BGMの音量は押し込み量に追従しなくなる。具体的には、押し込み速度が所定の閾値を超えた場合には、その後、押し込み量が減少しても、所定時間、音量が維持され、所定時間経過後、一定速度で減少する。所定時間の経過前および経過後においては、押し込み量に応じて算出される音量と、現在の音量(所定時間維持されている音量又は一定速度で減少されている音量)とが比較され、大きい方の音量が、第1BGMの音量として設定される。
図19及び図20では、リングコントローラに対して押し込み操作が行われる場合について説明したが、リングコントローラに対して引っ張り操作が行われる場合も同様の制御が行われる。リングコントローラに対して引っ張り操作が行われる場合には、第2BGMが出力される。引っ張り速度(単位時間当たりの引っ張り量の増加量)が所定の閾値以下の場合には、引っ張り量に追従して第2BGMの音量が変化する。また、引っ張り速度が所定の閾値を越えている場合には、第2BGMの音量は引っ張り量に追従しなくなる。具体的には、引っ張り速度が所定の閾値を越えている場合には、所定時間、第2BGMの音量が維持され、所定時間経過後、一定速度で減少する。所定時間の経過前および経過後においては、引っ張り量に応じて算出される音量と、現在の音量(所定時間維持されている音量又は一定速度で減少されている音量)とが比較され、大きい方の音量が第2BGMの音量として設定される。
このように、基本BGMに対して、押し込み操作に応じて第1BGMが付加され、引っ張り操作に応じて第2BGMが付加される。押し込み速度又は引っ張り速度が速い場合には、所定時間音量が維持されるため、例えば、短時間で押し込み操作と引っ張り操作とが繰り返し行われると、第1BGM及び第2BGMの両方の音量がゼロより大きく設定される。これにより、基本BGMに重畳して、第1BGM及び第2BGMの両方が出力される。
図21は、押し込み操作を短時間で繰り返し行うときと、押し込み操作および引っ張り操作を短時間で繰り返し行うときの第1BGMおよび第2BGMの音量の変化の一例を示す図である。
図21において、上方向の縦軸は押し込み量又は第1BGMの音量を示し、下方向の縦軸は引っ張り量又は第2BGMの音量を示す。また、図中の破線は第1BGMの音量を示し、一点鎖線は第2BGMの音量を示す。
図21に示すように、ユーザが、時刻t0からt1の間でリングコントローラを強く押し込み、時刻t1で押し込み操作を止めて、時刻t2において押し込み量がゼロとなる操作を行い、以後同様の操作を2回(合計で3回)繰り返したものとする(時刻t0からt6)。各押し込み操作の期間(時刻t0からt1の期間、t2からt3の期間、及びt4からt5の期間)の押し込み速度が所定の閾値を超えており、かつ、押し込み量が最大の場合、第1BGMの音量は、時刻t1からt7(時刻t5より所定時間後の時刻)まで最大音量に維持される。時刻t6以降も同様の押し込み操作が繰り返し行われる場合、第1BGMの音量は、各時点の押し込み量に追従することなく、最大音量に維持される。
次に、時刻t8から、ユーザが短時間で押し込み操作と引っ張り操作とを交互に繰り返したものとする。具体的には、ユーザは、時刻t8からt9の間でリングコントローラを強く押し込み、時刻t9からt11までリングコントローラを強く引っ張る操作を行い、以降同様の操作を、2回繰り返したものとする。各押し込み操作の期間(時刻t8からt9の期間、t12からt13の期間、t16からt17の期間)の押し込み速度が所定の閾値を超えており、かつ、押し込み量が最大の場合、第1BGMの音量は、時刻t9からt21(時刻t17より所定時間後の時刻)まで最大音量に維持される。また、各引っ張り操作の期間(時刻t10からt11の期間、t14からt15の期間、t18からt19の期間)の引っ張り速度が所定の閾値を超えており、かつ、引っ張り量が最大の場合、第2BGMの音量は、時刻t11からt22(時刻t19より所定時間後の時刻)まで最大音量に維持される。時刻t20以降も同様の押し込み操作および引っ張り操作が交互に繰り返し行われる場合、第1BGMおよび第2BGMの音量は、各時点の押し込み量および引っ張り量に追従することなく、最大音量に維持される。
このように、基本的には、第1BGMおよび第2BGMの音量は、それぞれ押し込み量および引っ張り量に応じて設定されるが、押し込み速度および引っ張り速度が所定の閾値を超えている場合は、第1BGMおよび第2BGMの音量が所定時間維持される。このため、図21に示すように、ユーザが強い力で素早く押し込み操作および引っ張り操作を短時間で繰り返した場合、第1BGMおよび第2BGMが最大音量で継続的に出力される。これにより、基本BGMに重畳して、第1BGMおよび第2BGMの両方を継続的に出力することができる。
次に、図18のステップS4の処理について説明する。図22は、リングコントローラの押し込み量の変化と楽器音の出力との関係の一例を示す図である。
図22に示すように、リングコントローラに対する押し込み操作が検出された場合、楽器音が出力される。具体的には、本体装置2は、押し込み量又は引っ張り量の変化量に基づいて、押し込み操作又は引っ張り操作が行われたか否かを判定する。例えば、押し込み量が検出されない状態(例えば、歪み値が所定の値(例えばゼロ)以下の状態)から、押し込み量が検出される状態(例えば、歪み値が所定の値(例えばゼロ)を超えた状態)になった場合、押し込み操作が検出されてもよい。
押し込み操作が検出された場合、その押し込み操作が行われたときのリングコントローラの姿勢に応じて、第1楽器音が再生および出力される。第1楽器音は、押し込み操作が検出される毎に1回だけ出力される。ここで、本体装置2(のフラッシュメモリ84または外部記憶媒体)には、押し込み操作が行われたときに出力される第1楽器音として、第1楽器音Aおよび第1楽器音Bを含む複数の異なる音色の楽器音が記憶されている。例えば、第1楽器音Aは、所定の打楽器(例えば、バスドラム)を叩いたときの音であってもよい。本体装置2は、押し込み操作を検出した場合、そのときのリングコントローラの姿勢(捻り量及び/又は傾き量)に応じて、複数の楽器音の中から少なくとも1つの楽器音を選択する。例えば、捻り量が第1の範囲である場合には、ある楽器音が選択され、捻り量が第2の範囲である場合には、別の楽器音が選択される。
図22の例では、時刻t1において押し込み量としてゼロより大きな値を検出したことにより押し込み操作が検出され、その時点の捻り量が捻り量Aの場合、第1楽器音A(例えば、バスドラムの音)が出力される。また、時刻t2において押し込み操作が検出され、その時点の捻り量が捻り量Bの場合、第1楽器音B(例えば、バスドラムにシンバルを加えた音)が出力される。なお、捻り量に加えて(又は代えて)、傾き量に応じて、出力される楽器音が異なってもよい。
また、押し込み操作が検出されたときの押し込み速度に応じて、楽器音の音量が設定される。図22では、時点t1における押し込み速度よりも時点t2における押し込み速度の方が速いため、第1楽器音Aの音量よりも第1楽器音Bの音量の方が大きく設定される。
なお、引っ張り操作が行われた場合も、押し込み操作が行われた場合と同様の制御により楽器音が出力される。すなわち、引っ張り操作が検出された場合、そのときのリングコントローラの姿勢(捻り量及び/又は傾き量)に応じて、予め記憶された複数の第2楽器音の中から少なくとも1つの楽器音が出力される。本体装置2には、引っ張り操作が行われたときに出力される複数の第2楽器音が記憶されている。第2楽器音は、第1楽器音とは異なる楽器の音である。例えば、引っ張り操作が行われたときには、上記所定の打楽器とは異なる打楽器(例えば、スネアドラム)を叩いたときの音が出力されてもよい。
次に、図18のステップS5の処理について説明する。図23は、リングコントローラの加速度の変化と効果音の出力との関係の一例を示す図である。
リングコントローラ(右コントローラ4)の加速度センサ114は、xyz各軸方向の加速度を検出する。本体装置2は、加速度センサ114からの出力に基づいて加速度ベクトル(xyz各軸を成分とする3次元ベクトル)の大きさを算出し、算出した加速度ベクトルの大きさに基づいて、振り操作が行われたか否かを判定する。
図23に示すように、本体装置2は、時刻t1において振り操作が行われたと判定した場合、効果音の再生および出力を開始する。例えば、時刻t1における加速度の変化量(直前の時刻t0における加速度と時刻t1における加速度との差)が所定の閾値を超えている場合、振り操作が行われたと判定してもよい。また、時刻t1における加速度を時刻t0における加速度で割った値が、所定値(例えば、1.2)以上の場合、振り操作が行われたと判定してもよい。時刻t1で出力開始された効果音は、例えば、時刻t2まで出力される。
その後、時刻t3〜t4において再び加速度が増加し、その増加量が閾値を超えている場合、時刻t4において効果音が出力される。さらにその効果音の出力中の時刻t5における加速度の増加量が閾値を超えている場合、出力中の効果音が停止され、時刻t5において、新たに効果音の再生が開始される。時刻t5〜t6の間、効果音が出力される。
次に、時刻t7〜t8における加速度の増加量が閾値を超えている場合、時刻t8において効果音の再生が開始される。この時刻t8において、リングコントローラに対して例えば捻り操作が行われている場合、捻り量に応じて効果音の再生速度が設定される。例えば、捻り量が大きいほど、再生速度が遅くなるように設定される。効果音の再生中に捻り量が変化した場合、効果音の再生速度も変化する。図23の例では、時刻t8〜t9の間、捻り操作が継続して行われているため、この間の再生速度は、捻り操作が行われていない間の再生速度よりも遅く設定される。
なお、図23の例では、振り操作が検知された場合、捻り量に応じて効果音の再生速度を変化させたが、コントローラの姿勢に応じて出力される効果音に変化が加えられれば、どのような変化でもよい。例えば、捻り量及び/又は傾き量に応じて、再生速度に代えて、効果音の音程が変化されてもよい。また、コントローラの姿勢に応じて、再生される効果音の種類を異ならせてもよい。
また、リングコントローラに対して振り操作が行われたか否かの検出は、他の方法で行われてもよい。例えば、加速度の絶対値が所定の閾値を超えた場合に振り操作が検出されてもよい。また、リングコントローラの姿勢の変化に基づいて振り操作が検出されてもよい。例えば、単位時間における傾き量又は捻り量の変化量が閾値を超えた場合に、振り操作が検出されてもよい。
図18のステップS1〜S5の処理が行われることによって出力される音楽の一例について、図24を参照して説明する。図24は、リングコントローラに対する複数の操作に応じて出力される音の一例を示した図である。
図24に示すように、時刻t0において第1のゲームシーンが開始され、基本BGMの再生および出力が開始される。基本BGMは、時刻t0以降、継続的に再生および出力される。第1BGMおよび第2BGMも、時刻t0において再生が開始される。上述のように、基本BGM、第1BGM、第2BGMは、同じ旋律の楽曲であってそれぞれ異なる音色の音楽である。これら3つのBGMは、同時に再生開始され、以後、同じ速度で再生される。しかしながら、この時点t0においては、リングコントローラを変形させる操作(押し込み操作又は引っ張り操作)は行われていない。このため、第1BGM及び第2BGMは、再生は行われるものの、音量が「0」に設定され、スピーカから出力されない。
次に、時刻t1においてリングコントローラに対して押し込み操作が行われた場合、基本BGMに重畳して、第1BGMの出力が開始される。具体的には、再生中の第1BGMの音量が「0」よりも大きな値に設定される。これにより、第1BGMによる音響効果が付与される。3つのBGMが時刻t0において同時に再生開始されるため、時刻t1において第1BGMが出力されるときに、基本BGMと同じ時点の音が出力される。例えば、時刻t1が時刻t0から5秒後である場合、時刻t1においては、基本BGM及び第1BGMについて、先頭から5秒後の音が出力される。これにより、同じ楽曲の同じ時点の音が異なる音色で出力される。
押し込み操作が継続されている間、第1BGMは継続的に出力される。第1BGMの音量は、上述した通り、押し込み量に応じて設定される。また、押し込み操作が検出された時刻t1において、楽器音の再生および出力が開始される。これにより、楽器音による音響効果がさらに付与される。楽器音は、時刻t1におけるリングコントローラの姿勢に応じて選択される。
時刻t2において、リングコントローラに対して奥方向への傾け操作が行われた場合、出力中の基本BGM及び第1BGMに対してローパスフィルタ(Lフィルタ)が適用される。これにより、基本BGM及び第1BGMに対して、Lフィルタによる音響効果が付与される。上述のように、Lフィルタのフィルタ値は、押し込み量及び傾き量に応じて設定される。時刻t3において、押し込み量が「0」になるとともに傾き量が「0」になると、第1BGMの出力およびLフィルタの適用が終了する。具体的には、第1BGMは、再生は継続されるものの音量が「0」に設定される。
時刻t3から押し込み操作に代えて引っ張り操作が開始されるとともに、ユーザの手前方向への傾け操作が行われる。時刻t3以降、第2BGMの音量が「0」よりも大きな値に設定され、第2BGMが継続的に出力される。また、時刻t3において、引っ張り操作が検出される。これにより、時刻t3において、リングコントローラの姿勢に応じた楽器音が再生および出力される。また、時刻t3以降、手前方向への傾け操作が行われる間、基本BGMおよび第2BGMに対して、バンドパスフィルタ(Bフィルタ)が適用される。これにより、基本BGM及び第2BGMに対して、Bフィルタによる音響効果が付与される。
次に、時刻t4において手前方向への傾け操作が終了する。これに応じて、Bフィルタの適用が終了する。また、時刻t4において振り操作が検出された場合、効果音の再生および出力が開始される。これにより、効果音による音響効果がさらに付与される。
その後、時刻t5〜t6の間、リングコントローラに対して捻り操作が行われた場合、出力中の基本BGMおよび第2BGMに対してディレイ処理が行われる。これにより、基本BGMおよび第2BGMに対して、ディレイによる音響効果が付与される。そして、時刻t7において、引っ張り操作が終了したことに応じて、第2BGMの出力が終了する。具体的には、第2BGMは、再生は継続されるものの音量は「0」に設定される。
なお、第1BGM及び第2BGMは、押し込み操作又は引っ張り操作が行われていない間は再生されず、押し込み操作又は引っ張り操作が行われた時点で再生開始されてもよい。この場合、押し込み操作又は引っ張り操作が行われた時点で、基本BGMの再生時点と同じ時点から第1BGM又は第2BGMが再生開始されてもよい。例えば、時刻t0においては基本BGMのみが再生開始され、時刻t0から5秒後の時刻t1において押し込み操作が行われた場合、第1BGMは、先頭から5秒後の時点から再生開始されてもよい。
また、本実施形態では、ユーザが足踏みを行っている場合に、第3BGM及び/又は第4BGMが出力される。第3BGM及び第4BGMは、基本BGMと同様の旋律の音楽であって、基本BGM、第1BGM、及び、第2BGMとは異なる音色の音楽である。本体装置2は、脚コントローラ(左コントローラ3)の加速度センサ104及び角速度センサ105からの出力に基づいて、脚コントローラの動きを判別し、ユーザが足踏みを行っているか否かを判定することができる。具体的には、第3BGM及び第4BGMが、第1BGM及び第2BGMと同様に基本BGMの再生開始と同時に再生開始される。ユーザが足踏みを行っていない場合は、第3BGM及び第4BGMの音量はゼロに設定されるため、第3BGM及び第4BGMは出力されない。ユーザが足踏みを行っている場合、足踏み速度(足を上げ下げする速さ)に応じて、第3BGMの音量が上昇する。また、足踏み速度が閾値を超えた時点で、第4BGMの音量がゼロから急激に最大になるように制御される。また、足踏み動作が行われる毎に効果音(例えば人の声)が出力され、足踏み速度に応じて、その効果音の音量が上昇する。このように、脚コントローラの動きに応じて、別のBGMや効果音がさらに付加される。
なお、上記では、第1のゲームシーンが開始された場合に基本BGMが自動的に再生され、リングコントローラに対する操作に応じて基本BGMを含む音楽が出力されるものとした。他の実施形態では、音楽の出力は、ユーザが足踏みを行っている場合に行われてもよい。例えば、基本BGMは、第1のゲームシーンが開始され、かつ、ユーザが足踏みを行っている場合に再生されてもよい。この基本BGMが再生されている間にリングコントローラに対する操作が行われた場合、上述のように同じ旋律の第1又は第2BGMが付加されたり、楽器音が付加されたり、フィルタ処理やディレイ処理が行われたりする。このように、ユーザが足踏みを行い、かつ、リングコントローラに対する操作を行う場合に、音楽が出力されてもよい。
すなわち、リングコントローラに対する操作に応じた変形情報および姿勢情報に加えて、脚コントローラの動きに関する情報(姿勢の変化、加速度等)に基づいて、音楽が生成および出力されてもよい。
(第2のゲームシーンにおける音の出力制御)
次に、第2のゲームシーンにおける音の出力制御について説明する。第2のゲームシーンでは、リングコントローラに対する操作に基づいて所定の音の周波数(音程)が変化される。第2のゲームシーンは、第1のゲームシーンとは異なるゲームシーンであってもよく、例えば、ゲームの開始時におけるオープニングシーンであってもよい。
図25は、リングコントローラに対する引っ張り操作が行われている場合の所定の音の周波数の変化の一例を示す図である。図26は、リングコントローラに対する引っ張り操作が行われている場合において、その引っ張り量、捻り量、及び傾き量が図26とは異なるときに出力される所定の音の周波数の変化の一例を示す図である。
第2のゲームシーンでは、所定の音が出力される。所定の音は、例えば、ある周波数を有するSIN波の音であってもよい。また、所定の音は、複数の周波数成分から成る音(例えば、音楽)であってもよい。以下では、所定の音は、ある周波数を有するSIN波の音であるものとして説明する。
所定の音は、リングコントローラに対する引っ張り操作が行われている間に出力され、引っ張り操作が行われていない間は出力されない。あるいは、所定の音は、第2のゲームシーンの間、リングコントローラに対する引っ張り操作が行われていないときでも出力されてもよい。所定の音は、引っ張り量と、捻り量と、傾き量とに基づいて、その周波数(音程)が変化する。
具体的には、図25に示すように、リングコントローラがある引っ張り量(引っ張り強さ)で引っ張られている場合、所定の音の周波数は、中心周波数cf1を中心として、周期的に変化する。例えば、所定の音の波形がSIN波であり、その周波数が100kHzであるとすると、所定の音の周波数は、例えば、100kHzを中心として80kHz〜120kHzの間で周期的に変化する。ここでは、この周波数の変化の幅(振幅;120−80=40kHz)を「音程変化量」ということがある。また、最も周波数が高くなる時点から次に最も周波数が高くなる時点までの時間を「音程変化の周期」ということがある。所定の音の周波数が図25に示すように周期的に変化する場合、所定の音がうねるように変化する。
所定の音の中心周波数は、リングコントローラの引っ張り量に応じて設定される。具体的には、リングコントローラの引っ張り量が大きいほど、所定の音の中心周波数は下がる。図26では、図25のときよりもリングコントローラを強く引っ張ったときの所定の音の変化が示されている。図26に示すように、中心周波数cf2は、図25の中心周波数cf1よりも低い。
音程変化量(振幅)は、引っ張り量と、傾き量と、捻り量とに基づいて算出される。具体的には、音程変化量は、引っ張り量の絶対値に応じた値と、傾き量の絶対値に応じた値と、捻り量の絶対値に応じた値との和に基づいて算出される。このため、引っ張り量が大きいほど、音程変化量が大きくなり、周波数の変化の幅が大きくなる。また、傾き量が大きいほど、音程変化量が大きくなる。また、捻り量が大きいほど、音程変化量が大きくなる。なお、引っ張り量、傾き量、及び、捻り量のそれぞれが音程変化量に与える影響は、相対的に異なる。例えば、引っ張り量が音程変化量に与える影響は、傾き量及び捻り量が音程変化量に与える影響よりも小さくてもよい。
また、音程変化の周期も、引っ張り量と、傾き量と、捻り量とに基づいて算出される。具体的には、傾き量の絶対値に応じた値と、捻り量の絶対値に応じた値との和が算出される。音程変化の周期は、当該和と引っ張り量の絶対値に応じた値との積に基づいて算出される。このため、引っ張り量が大きいほど、周期が早くなる(1周期の時間が短くなる)。また、傾き量が大きいほど、周期が早くなる。また、捻り量が大きいほど、周期が早くなる。例えば、音程変化の周期は、例えば、0.5秒〜10秒の間で変化する。
なお、所定の音の音量は、引っ張り量に応じて変化してもよい。例えば、引っ張り量が大きいほど、所定の音の音量が大きくてもよい。
図27は、第2のゲームシーンにおけるリングコントローラに対する操作に基づく音の出力の概要を示す図である。
第2のゲームシーンにおいては、所定のBGMに対して、上記所定の音が重畳される。所定のBGMは、第2のゲームシーンの間、リングコントローラに対する操作が行われていなくても継続的に出力される。図27に示すように、所定のBGMは、所定の音のように引っ張り量、傾き量、及び捻り量に基づいて変化しない。リングコントローラに対する引っ張り操作が行われている間、所定のBGMに重畳して、上述のようにして音程が変化する所定の音が出力される。
また、リングコントローラに対する引っ張り操作が検出される毎に、所定の効果音が1回だけ出力される。効果音の音量は、引っ張り速度に応じて設定される。また、効果音は複数種類あり、引っ張り操作が検出された時点におけるリングコントローラの姿勢(例えば、捻り量)に応じて、出力される効果音が決定される。
なお、上述した音程変化に関する処理は、BGMに対して行われてもよい。例えば、BGMの音程が周期的に変化するように、引っ張り量、捻り量、傾き量に基づいて、BGMの制御が行われてもよい。
また、効果音に対して上述した音程変化に関する処理が行われてもよい。
また、上記では引っ張り操作が行われた場合に音程変化に関する処理が行われるものとしたが、押し込み操作が行われた場合にも同様の処理が行われてもよい。
また、音程変化に関する処理は、第1のゲームシーンにおいても行われてもよい。この場合、例えば、基本BGMに対して音程変化に関する処理が行われてもよい。また、基本BGMに加えて(又は代えて)、第1BGM又は第2BGMに対して音程変化に関する処理が行われてもよい。また、第1のゲームシーンにおいて出力される楽器音や効果音に対して、音程変化に関する処理が行われてもよい。
以上のように、本実施形態のゲームでは、リングコントローラの変形に応じた変形情報(押し込み量又は引っ張り量)と、リングコントローラの姿勢情報(傾き量、捻り量)とに基づいて、音が出力される。
具体的には、第1のゲームシーンでは、変形情報に基づいて、基本BGMに対して同じ旋律の別のBGMが音響効果として付加された音楽が出力される。また、変形情報と姿勢情報とに基づいて、BGM(基本BGM及び付加されたBGM)に対してフィルタ処理やディレイ処理が行われることにより、音響効果が付与される。また、変形情報と姿勢情報とに基づいて、音響効果としての楽器音が付加される。また、振り操作が行われた場合には、音響効果として、姿勢情報に応じた効果音が付加される。
また、第2のゲームシーンでは、変形情報(引っ張り量)と姿勢情報(傾き量、捻り量)とに基づいて、音響効果として、音程を変化させる処理が行われる。そして、当該音響効果が付与された音(音程を変化させる処理が行われた後の所定の音)が出力される。
このように、本実施形態のゲームでは、基本となる音に対して、リングコントローラの変形情報と姿勢情報とに基づく音響効果(第1BGMの付加、第2BGMの付加、フィルタ処理、ディレイ処理、楽器音・効果音の付加、音程変化等)を付与し、音響効果が付与された音を出力することができる。これにより、リングコントローラを変形させたり、姿勢を変化させたりすることで様々な音を出力することができる。
本実施形態では、リングコントローラの姿勢情報のみならず、変形情報に基づいてフィルタやディレイ等の音響効果が付与されるため、ユーザの意図しない音響効果が付与されてしまうことを防止することができる。すなわち、リングコントローラの姿勢が変化しただけではフィルタやディレイ、楽器音等の音響効果は付与されず、リングコントローラが変形された場合に音響効果が付与されるため、ユーザが意図しない音響効果の付与を防止することができる。例えば、リングコントローラが基本姿勢からズレた状態で、ユーザに把持されることなく載置された状態において、その姿勢情報に基づいてユーザの意図しない音響効果が付与されることを防止できる。なお、振り判定においても、リングコントローラが変形しているときにのみ、音響効果が付与されるようにしてもよい。
また、リングコントローラの変形量(押し込み量又は引っ張り量)と姿勢情報(捻り量や傾き量)とに基づいて音響効果が付加されるため、次に示す効果がある。例えば、単に押し込み操作が検出された場合に、そのときの捻り量や傾き量に応じてフィルタやディレイを付加することも考えられる。リングコントローラの姿勢は容易に変化させることができるため、ユーザは、リングコントローラを捻り過ぎたり傾け過ぎたりしてしまうことがある。例えば、ユーザがリングコントローラを傾けすぎているときに、リングコントローラに対する押し込み操作を行った場合、フィルタ値の大きなフィルタがかかってしまい、違和感のある音響効果を付与してしまうことがある。しかしながら、本実施形態では、単に押し込み操作が検出されたことだけではなく、その量と姿勢情報との積に基づいて、音響効果が付加される。このため、ユーザの意図をより反映して音響効果を付与することができる。例えば、リングコントローラが傾けられた状態で押し込み操作がされた場合、傾き量が過大であったとしても、押し込み量は初めは小さいため、比較的小さなフィルタ値のフィルタ効果からかかり始める。そのため、その後ユーザは傾き量と押し込み量とを調整しながら意図したフィルタ効果を得ることが容易となる。また、ユーザは、比較的大きなフィルタをかける場合には、比較的大きな力で押し込み操作(又は引っ張り操作)を行うとともに、傾け操作を行う。逆に、ユーザは、比較的小さなフィルタをかける場合には、比較的小さな力で押し込み操作(又は引っ張り操作)を行うとともに、傾け操作を行う。このように、リングコントローラの変形量に基づいて音響効果を付与することにより、ユーザの意図した通りに音響効果を付与することができる。なお、ここでいう「積」は、変形情報(変形量)と姿勢情報との純粋な掛け算であってもよいし、純粋な掛け算ではなく、実質的に本効果が得られる積に関する演算処理が含まれていれば、他の変数や演算処理が介在してもよい。
また、変形情報と姿勢情報との積に応じて音響効果が付与されるため、様々な操作によっても同じ音響効果を付与することができ、ユーザの操作の自由度を増すことができる。例えば、変形量を小さくして捻り量や傾き量を大きくしたときと、変形量を大きくして捻り量や傾き量を小さくしたときとで、積は同じになる。このため、例えば、変形量が小さくても、捻り量や傾き量を大きくすることで、積を大きくすることができる。したがって、例えば、比較的力の弱いユーザであっても、捻り量や傾き量を大きくすることで、比較的大きなフィルタやディレイを付加することができる。
また、リングコントローラが変形している間、第1BGM又は第2BGMが付加されるため、ユーザはリングコントローラに対して力を加えながら音楽を楽しむことができる。
また、押し込み操作又は引っ張り操作が検出されたときに楽器音が出力されるため、押し込み操作又は引っ張り操作を繰り返し行った場合には、楽器音がその都度出力される。これにより、ユーザに押し込み操作や引っ張り操作を繰り返し行わせることができ、運動による楽器の演奏を行わせることができる。また、押し込み操作又は引っ張り操作が検出されたときのリングコントローラの姿勢に応じて、異なる楽器音が出力されるため、リングコントローラの姿勢を変化させながら押し込み操作又は引っ張り操作を行わせることができる。これにより、単純に押し込み操作や引っ張り操作を繰り返す場合よりも、興趣性が増し、ユーザにリングコントローラに対する操作(押し込み、引っ張り、捻り、傾け等)を積極的に行わせることができ、ユーザに運動を行わせることができる。
また、基本BGMが出力され、リングコントローラに対する操作に応じて別の音(別のBGMや楽器音等)が付加されるため、ユーザは、基本BGMのリズムに合わせてリングコントローラに対する操作を行うことで、オリジナルの楽曲を作成することができる。このように、音楽と運動を融合させることで、興趣性が向上するとともに、ユーザに積極的に運動を行わせることができる。
また、第1BGM又は第2BGMの音量は、基本的には押し込み量又は引っ張り量に連動するものの、押し込み速度又は引っ張り速度が閾値を超えている場合は、第1BGM又は第2BGMの音量は、一定時間維持される。このため、例えば、瞬間的にリングコントローラを押し込んだ場合であっても、第1BGMの音量がすぐにゼロにならず、ユーザは、第1BGMを聞くことができる。また、押し込み操作又は引っ張り操作を検出した場合には、楽器音が出力されるため、ユーザは、例えば瞬間的な押し込み操作を繰り返すことで、楽器音を繰り返し出力することができるとともに、第1BGMも聞くことができる。すなわち、各押し込み操作における押し込み速度が閾値を超えている場合には、第1BGMの音量は一定時間維持されるため、ユーザは、第1BGMと楽器音の両方を聞くことができる。例えば、図21のように短時間で押し込み操作と引っ張り操作とが繰り返えされた場合、第1BGMおよび第2BGMが継続的に出力されるとともに、押し込み操作および引っ張り操作が検出された時点で、押し込み操作又は引っ張り操作に応じた楽器音(そのときの姿勢に応じて異なる楽器音)が出力される。これにより、ユーザは、第1BGMおよび第2BGMに加えて、さらに押し込み操作又は引っ張り操作に応じた楽器音を聞くことができ、BGMに楽器音を重畳した音楽を作成、出力することができる。
また、リングコントローラに対する操作(押し込み操作、引っ張り操作、傾け操作、捻り操作)に加えて、脚コントローラの動きに基づいて音楽が出力される。このため、ユーザに手および足を使った全身運動を行わせることができる。
(処理の詳細)
次に、本体装置2において行われる処理の一例について具体的に説明する。まず、本体装置2に記憶されるデータについて説明する。
図28は、本体装置2に記憶されるデータの一例を示す図である。図28に示すデータは、主にDRAM85に記憶されるが、これらの一部又は全部は、フラッシュメモリ84に記憶されてもよいし、スロット23に装着された外部記憶媒体に記憶されてもよい。
図28に示すように、本体装置2には、ゲームプログラムと、脚コントローラデータと、リングコントローラデータと、変形情報と、姿勢情報とが記憶される。これらの他にも、音データやゲーム処理に必要な様々なデータが記憶される。
ゲームプログラムは、本実施形態のゲームを実行するためのプログラムであり、後述するフローチャートに示す処理を実行するためのプログラムである。ゲームプログラムは、例えば外部記憶媒体やフラッシュメモリ84に記憶されており、ゲームの開始時に外部記憶媒体やフラッシュメモリ84からDRAM85に読み込まれる。なお、ゲームプログラムは、他の装置からネットワーク(例えば、LAN、WAN、インターネット等)を介して取得されてもよい。
脚コントローラデータは、所定の時間間隔(例えば、1/200秒間隔)で左コントローラ3から送信されたセンサデータである。具体的には、脚コントローラデータは、加速度センサ104からの加速度データ、及び、角速度センサ105からの角速度データを含む。脚コントローラデータは、最新のセンサデータと、過去に受信した複数のセンサデータとを含む。
リングコントローラデータは、所定の時間間隔(例えば、1/200秒間隔)で右コントローラ4から送信されたセンサデータである。具体的には、リングコントローラデータは、加速度センサ114からの加速度データ、角速度センサ115からの角速度データ、及び、歪み検出部211が検出した歪み値に関するリング操作データを含む。リングコントローラデータは、最新のセンサデータと、過去に受信した複数のセンサデータとを含む。
変形情報は、リングコントローラデータに基づいて算出されるリングコントローラの変形に関する情報である。変形情報は、押し込み量(正の歪み値)又は引っ張り量(負の歪み値)を表す情報である。
姿勢情報は、リングコントローラデータに基づいて算出されるリングコントローラの姿勢に関する情報である。姿勢情報は、捻り量(z軸回りの回転角)と傾き量(y軸回りの回転角)とを含む。
(フローチャートの説明)
次に、本体装置2において行われる処理の詳細について説明する。図29は、本体装置2のプロセッサ81において行われる第1のゲームシーンにおけるゲーム処理の一例を示すフローチャートである。図29に示す処理は、ゲームの実行中に第1のゲームシーンが開始されたことに応じて、開始される。
図29に示すように、プロセッサ81は、まず、各BGM(基本BGM、第1BGM、第2BGM、第3BGMおよび第4BGM)の再生を開始する(ステップS100)。ステップS100でBGMの再生を開始した後、プロセッサ81は、第1のゲームシーンが終了するまで、ステップS101〜ステップS112の処理を所定のフレーム時間間隔(例えば、1/60秒間隔)で繰り返し実行する。以下、ステップS101以降の処理について説明する。
プロセッサ81は、リングコントローラからのセンサデータ(加速度データ、角速度データ及びリング操作データ)を取得する(ステップS101)。
次に、プロセッサ81は、取得したセンサデータに基づいて、リングコントローラの変形情報および姿勢情報を取得する(ステップS102)。具体的には、プロセッサ81は、リング操作データに基づいて、押し込み量(正の歪み値)又は引っ張り量(負の歪み値)を取得する。また、プロセッサ81は、リングコントローラの角速度データ及び加速度データに基づいて、姿勢情報として捻り量および傾き量を算出する。
次に、プロセッサ81は、予め記憶された基本BGMに対応する音データに基づいて、基本BGMの再生処理を行う(ステップS103)。これにより、ステップS100で開始された基本BGMの再生位置が更新され、後述するステップS111の音出力処理が行われた場合に、基本BGMがスピーカ(本体装置2のスピーカ88又は他のスピーカ)から出力される。また、基本BGMの再生位置の更新と同様に、第1〜第4BGMについても再生位置が更新される。なお、基本BGMに対して後述するフィルタ処理やディレイ処理が行われた場合には、これらの音響効果が付与された基本BGMが出力される。
続いて、プロセッサ81は、第1BGM付加処理を実行する(ステップS104)。第1BGM付加処理は、リングコントローラに対する押し込み操作が行われた場合に、基本BGMに重畳して第1BGMを付加する処理である。ステップS104の第1BGM付加処理の詳細については後述する。
次に、プロセッサ81は、第2BGM付加処理を実行する(ステップS105)。第2BGM付加処理は、リングコントローラに対する引っ張り操作が行われた場合に、基本BGMに重畳して第2BGMを付加する処理である。第2BGM付加処理は、押し込み操作と引っ張り操作とで異なることを除いて、第1BGM付加処理と同じ処理である。
続いて、プロセッサ81は、変形情報および姿勢情報に基づいて、フィルタ処理を行う(ステップS106)。具体的には、プロセッサ81は、リングコントローラに対して押し込み操作又は引っ張り操作が行われている場合に、リングコントローラの傾き量に応じてフィルタ処理を行う。ステップS106のフィルタ処理の詳細については後述する。
次に、プロセッサ81は、変形情報および姿勢情報に基づいて、ディレイ処理を行う(ステップS107)。具体的には、プロセッサ81は、リングコントローラに対して押し込み操作又は引っ張り操作が行われている場合に、リングコントローラの捻り量に応じてディレイ処理を行う。ステップS107のディレイ処理の詳細については後述する。
次に、プロセッサ81は、変形情報および姿勢情報に基づいて、楽器音付加処理を行う(ステップS108)。具体的には、プロセッサ81は、リングコントローラに対して押し込み操作又は引っ張り操作が行われた場合に、リングコントローラの姿勢情報に応じて楽器音を再生する。ステップS108の楽器音付加処理の詳細については後述する。
さらに、プロセッサ81は、効果音付加処理を行う(ステップS109)。具体的には、プロセッサ81は、リングコントローラに対する振り操作が行われた場合に、リングコントローラの姿勢情報に応じて効果音を再生する。ステップS109の効果音付加処理の詳細については後述する。
ステップS109の処理の後、プロセッサ81は、足踏み判定処理を行う(ステップS110)。具体的には、プロセッサ81は、脚コントローラからのセンサデータ(加速度センサ及び角速度センサからのデータ)に基づいて、ユーザが足踏みを行っているか否かを判定する。そして、プロセッサ81は、ユーザが足踏みを行っていると判定した場合、その足踏み速度に応じて第3BGM及び/又は第4BGMの音量をゼロより大きな値に設定する。プロセッサ81は、ユーザが足踏みを行っていないと判定した場合は、第3BGM及び第4BGMの音量をゼロに設定する。さらに、プロセッサ81は、足踏み判定の結果に基づく効果音を再生する。
ステップS110の処理の後、プロセッサ81は、ステップS103〜ステップS110の処理の結果に基づく音出力処理を行う(ステップS111)。例えば、押し込み操作が行われている場合には、基本BGMに重畳して第1BGMが付加される。また、押し込み操作に加えて傾け操作が行われている場合には、基本BGM及び第1BGMに対してフィルタ処理が行われた後の音が出力される。また、例えば、今回の処理ループにおいて押し込み操作が検出された場合には、BGMに重畳して楽器音がさらに付加される。また、今回の処理ループにおいて振り操作が検出された場合には、さらに効果音が付加される。そして、プロセッサ81は、画像の生成・出力処理を行う(ステップS112)。ステップS111及びステップS112の処理が行われることで、第1のゲームシーンに係るゲーム画像が表示されるとともに、リングコントローラに対する操作に応じた音楽が出力される。プロセッサ81は、ステップS112の処理の後、ステップS101の処理を再び実行する。
(第1BGM付加処理)
次に、ステップS104の第1BGM付加処理の詳細について説明する。図30は、ステップS104の第1BGM付加処理の一例を示すフローチャートである。
まず、プロセッサ81は、リングコントローラに対して押し込み操作が行われているか否かを判定する(ステップS120)。具体的には、プロセッサ81は、歪み値が「0」より大きいか否かを判定する。歪み値が「0」より大きい場合、リングコントローラに対して押し込み操作が行われていると判定することができる。
押し込み操作が行われている場合(ステップS120:YES)、プロセッサ81は、押し込み速度が閾値を超えているか否かを判定する(ステップS121)。例えば、プロセッサ81は、前回の処理ループで取得した押し込み量と今回の処理ループで取得した押し込み量とに基づいて、押し込み量が増加しているか否かを判定する。そして、プロセッサ81は、押し込み量が増加している場合には、その増加量が所定の閾値を超えているか否かを判定する。
押し込み速度が閾値を超えていると判定した場合(ステップS121:YES)、プロセッサ81は、「余韻フラグ」をONに設定する(ステップS122)。ここで、余韻フラグは、押し込み速度が閾値を超えたことを示すフラグであって、第1BGMの音量を押し込み量に連動させずに所定時間維持し、その後、一定速度で減少させることを示すフラグである。
次に、プロセッサ81は、押し込み速度が閾値を超えてからの経過時間の計測を開始する(ステップS123)。そして、プロセッサ81は、現在の押し込み量に応じて、第1BGMの音量を設定する(ステップS124)。押し込み量と音量との関係は予め定められており、第1BGMの音量は押し込み量に連動して設定される。
一方、押し込み速度が閾値を越えていない場合(ステップS121:NO)、プロセッサ81は、余韻フラグがONか否かを判定する(ステップS125)。
余韻フラグがONである場合(ステップS125:YES)、プロセッサ81は、押し込み速度が閾値を超えてからの経過時間に応じた音量を算出する(ステップS126)。具体的には、プロセッサ81は、経過時間が例えば0.5秒以内である場合、ステップS124で設定した音量を算出する。また、プロセッサ81は、経過時間が0.5秒を超えている場合、ステップS124で設定した音量から経過時間に応じて減少させた音量を算出する。例えば、経過時間が0.5秒を超えている場合、音量は、経過時間に比例して減少するように算出される。
ステップS126に続いて、プロセッサ81は、現在の押し込み量に応じた音量を算出する(ステップS127)。そして、プロセッサ81は、ステップS126で算出した音量とステップS127で算出した音量とのうち、大きい方を第1BGMの音量として設定する(ステップS128)。
ステップS126〜ステップS128の処理が行われることにより、押し込み速度が閾値を超えた場合に、第1BGMの音量は、所定時間維持された後、一定速度で減少するように変化する。
一方、余韻フラグがOFFである場合(ステップS125:NO)、プロセッサ81は、現在の押し込み量に応じて第1BGMの音量を設定する(ステップS129)。これにより、第1BGMの音量は、押し込み量に連動するように変化する。
ステップS124、ステップS128、又は、ステップS129の処理を行った場合、プロセッサ81は、図30に示す第1BGM付加処理を終了する。
一方、押し込み操作が行われていない場合(ステップS120:NO)、すなわち、歪み値が「0」以下である場合、プロセッサ81は、余韻フラグがONか否かを判定する(ステップS130)。余韻フラグがONである場合(ステップS130:YES)、プロセッサ81は、押し込み速度が閾値を超えてからの経過時間に応じた音量を算出する(ステップS131)。ステップS131の処理は、ステップS126の処理と同じ処理である。具体的には、プロセッサ81は、経過時間が例えば0.5秒以内である場合、ステップS124で設定した音量を算出する。また、プロセッサ81は、経過時間が0.5秒を超えている場合、ステップS124で設定した音量から経過時間に応じて減少させた音量を算出する。
次に、プロセッサ81は、ステップS131で算出した音量がゼロか否かを判定する(ステップS132)。ステップS131で算出した音量がゼロでない場合(ステップS132:NO)、プロセッサ81は、算出した音量を第1BGMの音量として設定する(ステップS133)。
ステップS131〜ステップS133の処理が行われることにより、以前の処理ループにおいて押し込み速度が閾値を超えた場合は、押し込み量がゼロ以下になった場合でも、第1BGMの音量は、所定時間維持された後、一定速度で減少するように変化する。すなわち、押し込み操作が行われたときの押し込み速度が閾値を超えた場合は、その後、押し込み操作が行われなくなった場合や引っ張り操作に切り替わった場合であっても、第1BGMは、ある程度の時間継続して出力される。これにより、余韻を持たせることができる。
一方、ステップS130でNOと判定した場合、又は、ステップS132でYESと判定した場合、プロセッサ81は、第1BGMの音量をゼロに設定する(ステップ134)。なお、プロセッサ81は、ステップS132でYESと判定した場合には、余韻フラグをOFFに設定する。
ステップS133又はステップS134の処理を行った場合、プロセッサ81は、図30に示す第1BGM付加処理を終了する。
なお、第2BGM付加処理は、図30の「押し込み」を「引っ張り」に置き換えることを除いて第1BGM付加処理と同じである。このため、第2BGM付加処理の詳細については省略する。
(フィルタ処理)
次に、ステップS106のフィルタ処理の詳細について説明する。図31は、ステップS106のフィルタ処理の一例を示すフローチャートである。
プロセッサ81は、リングコントローラに対して押し込み操作又は引っ張り操作が行われているか否かを判定する(ステップS140)。具体的には、プロセッサ81は、歪み値がゼロ以外の値か否かを判定する。
押し込み操作又は引っ張り操作が行われていると判定した場合(ステップ140:YES)、プロセッサ81は、リングコントローラが奥方向に傾いているか否かを判定する(ステップS141)。例えば、傾き量がゼロより大きい場合、プロセッサ81は、リングコントローラが奥方向に傾いていると判定する。
リングコントローラが奥方向に傾いている場合(ステップS141:YES)、プロセッサ81は、ローパスフィルタを設定する(ステップS142)。一方、リングコントローラが奥方向に傾いていない場合(ステップS141:NO)、プロセッサ81は、リングコントローラが手前方向に傾いているか否かを判定する(ステップS143)。例えば、傾き量がゼロより小さい場合、プロセッサ81は、リングコントローラが手前方向に傾いていると判定する。
リングコントローラが手前方向に傾いている場合(ステップS143:YES)、プロセッサ81は、バンドパスフィルタを設定する(ステップS144)。
ステップS142又はステップS144の処理を実行した場合、プロセッサ81は、押し込み量又は引っ張り量と、傾き量とに基づいて、フィルタ値を算出する(ステップS145)。例えば、押し込み操作が行われている場合、プロセッサ81は、押し込み量の絶対値と傾き量の絶対値との積に基づいて、フィルタ値を算出する。
そして、プロセッサ81は、再生中の音にフィルタを適用する(ステップS146)。例えば、プロセッサ81は、ローパスフィルタが設定されている場合、ステップS145で算出したフィルタ値に基づいて、所定の周波数以上の周波数をカット又は減衰させる。また、プロセッサ81は、バンドパスフィルタが設定されている場合、ステップS145で算出したフィルタ値に基づいて、所定の範囲以外の周波数をカット又は減衰させる。これにより、BGM(基本BGM、第1BGM、及び、第2BGM)に対してフィルタが適用され、BGMの聞こえ方が変化する。
ステップS146の処理を行った場合、ステップS140でNOと判定した場合、又は、ステップS143でNOと判定した場合、プロセッサ81は、図31に示すフィルタ処理を終了する。
(ディレイ処理)
次に、ステップS107のディレイ処理の詳細について説明する。図32は、ステップS107のディレイ処理の一例を示すフローチャートである。
プロセッサ81は、リングコントローラに対して押し込み操作又は引っ張り操作が行われているか否かを判定する(ステップS150)。具体的には、プロセッサ81は、歪み値がゼロ以外の値か否かを判定する。
押し込み操作又は引っ張り操作が行われていると判定した場合(ステップ150:YES)、プロセッサ81は、リングコントローラの捻り量がゼロより大きいか否かを判定する(ステップS151)。
捻り量がゼロより大きい場合(ステップS151:YES)、プロセッサ81は、押し込み量又は引っ張り量と、捻り量とに基づいて、ディレイ音の音量を算出する(ステップS152)。例えば、押し込み操作が行われている場合、プロセッサ81は、押し込み量の絶対値と捻り量の絶対値との積に基づいて、ディレイ音の音量を算出する。ステップS152の処理は、出力されるBGM毎に行われる。すなわち、基本BGMに対応するディレイ音の音量が算出される。また、第1BGMの音量がゼロより大きい場合、第1BGMに対応するディレイ音の音量が算出される。また、第2BGMの音量がゼロより大きい場合、第2BGMに対応するディレイ音の音量が算出される。これにより、ステップS111の音出力処理が行われた場合に、各BGMに対して所定時間遅れたディレイ音が出力される。
なお、ステップS150でNOと判定された場合、又は、ステップS151でNOと判定された場合、ディレイ音の音量はゼロに設定される。具体的には、各BGMに対するディレイ音を再生する処理は行われるが、各BGMのディレイ音はゼロに設定される。このため、ディレイ音は出力されない。
ステップS152の処理を行った場合、ステップS150でNOと判定した場合、又は、ステップS151でNOと判定した場合、プロセッサ81は、図32に示すディレイ処理を終了する。
(楽器音付加処理)
次に、ステップS108の楽器音付加処理の詳細について説明する。図33は、ステップS108の楽器音付加処理の一例を示すフローチャートである。
プロセッサ81は、リングコントローラに対して押し込み操作が行われたか否かを判定する(ステップS160)。例えば、プロセッサ81は、リングコントローラに対して力が加えられていない状態又は引っ張り操作が行われている状態から、押し込み操作が行われている状態に移行した場合、リングコントローラに対して押し込み操作が行われたと判定する。具体的には、プロセッサ81は、前回の処理ループにおける歪み値がゼロ以下であり、かつ、今回の処理ループにおける歪み値がゼロ(又は所定値)よりも大きい場合、押し込み操作が行われたと判定する。
押し込み操作が行われたと判定した場合(ステップS160:YES)、プロセッサ81は、姿勢情報に基づいて、第1楽器音を選択する(ステップS161)。本体装置2には、押し込み操作が行われたときに出力される第1楽器音として、複数の音が記憶されている。プロセッサ81は、押し込み操作が行われたときの姿勢情報(捻り量、及び/又は、傾き量)に基づいて、複数の第1楽器音の中から何れか1の楽器音を選択する。
次に、プロセッサ81は、押し込み速度に応じて第1楽器音の音量を設定する(ステップS162)。具体的には、プロセッサ81は、押し込み速度が速いほど第1楽器音の音量を大きく設定する。
一方、押し込み操作が行われていないと判定した場合(ステップS160:NO)、プロセッサ81は、引っ張り操作が行われたか否かを判定する(ステップS163)。例えば、プロセッサ81は、リングコントローラに対して力が加えられていない状態又は押し込み操作が行われている状態から、引っ張り操作が行われている状態に移行した場合、リングコントローラに対して引っ張り操作が行われたと判定する。具体的には、プロセッサ81は、前回の処理ループにおける歪み値がゼロ以上であり、かつ、今回の処理ループにおける歪み値がゼロ(又は所定値)よりも小さい場合、引っ張り操作が行われたと判定する。
引っ張り操作が行われたと判定した場合(ステップS163:YES)、プロセッサ81は、姿勢情報に基づいて、第2楽器音を選択する(ステップS164)。本体装置2には、引っ張り操作が行われたときに出力される第2楽器音として、複数の音が記憶されている。プロセッサ81は、引っ張り操作が行われたときの姿勢情報(捻り量、及び/又は、傾き量)に基づいて、複数の第2楽器音の中から何れか1の楽器音を選択する。
次に、プロセッサ81は、引っ張り速度に応じて第2楽器音の音量を設定する(ステップS165)。具体的には、プロセッサ81は、引っ張り速度が速いほど第2楽器音の音量を大きく設定する。
ステップS162又はステップS165の処理を行った場合、プロセッサ81は、設定した音量で、選択した楽器音の再生を開始する(ステップS166)。
ステップS166の処理を実行した場合、又は、ステップS163でNOと判定した場合、プロセッサ81は、図33に示す楽器音付加処理を終了する。
(効果音付加処理)
次に、ステップS109の効果音付加処理の詳細について説明する。図34は、ステップS109の効果音付加処理の一例を示すフローチャートである。
プロセッサ81は、リングコントローラに対して振り操作が行われたか否かを判定する(ステップS170)。具体的には、プロセッサ81は、加速度センサ114からの出力に基づいて振り操作が行われたか否かを判定する。例えば、プロセッサ81は、今回の処理ループにおける加速度ベクトルの大きさを前回の処理ループにおける加速度ベクトルの大きさで除した値が、閾値を超えている場合、振り操作が行われたと判定する。
振り操作が行われたと判定した場合(ステップS170:YES)、プロセッサ81は、捻り量に応じて効果音の再生速度を設定する(ステップS171)。例えば、プロセッサ81は、捻り量がゼロの場合には、通常の再生速度に設定する。また、プロセッサ81は、捻り量が正の値の場合には、再生速度を通常よりも速くし、捻り量が負の値の場合には、再生速度を通常よりも遅く設定する。
次に、プロセッサ81は、ステップS171で設定した再生速度で、効果音の再生を開始する(ステップS172)。なお、プロセッサ81は、以前の処理ループにおいてステップS172で効果音の再生を開始した場合において、当該効果音を再生中である場合、再生中の効果音を停止し、今回の処理ループにおけるステップS172において、新たに効果音の再生を開始する。
一方、振り操作が行われたと判定しなかった場合(ステップS170:NO)、プロセッサ81は、以前の処理ループにおいて既に効果音の再生を開始し、当該効果音を出力中か否かを判定する(ステップS173)。効果音を出力中と判定した場合(ステップS173:YES)、プロセッサ81は、捻り量に応じて効果音の再生速度を設定する(ステップS174)。これにより、効果音の再生中にリングコントローラの姿勢が変化した場合、効果音の再生速度も変化する。
ステップS172の処理を実行した場合、ステップS174の処理を実行した場合、又は、ステップS173でNOと判定した場合、プロセッサ81は、図34に示す効果音付加処理を終了する。
なお、上記フローチャートで示した処理は単なる例示に過ぎず、処理の順番や内容等は適宜変更されてもよい。
例えば、ステップS106のフィルタ処理およびステップS107のディレイ処理は、ステップS109の処理の後に行われてもよい。この場合、BGM(基本BGM、第1BGM、第2BGM)に加えて、楽器音および効果音に対しても、フィルタ処理およびディレイ処理が行われる。また、ステップS106のフィルタ処理の前に、ステップS110の足踏み判定処理が行われてもよい。この場合、ユーザが足踏みを行っているときに出力される第3BGM及び/又は第4BGMに対しても、フィルタ処理やディレイ処理が行われる。
また、各判定に用いられた閾値は単なる例示であり、適宜変更されてもよい。例えば、誤検知を防止するために、判定に用いられた閾値はある程度の幅を有するものであってもよい。例えば、押し込み操作が行われているか否かの判定において、歪み値がゼロより大きいか否かを判定する代わりに、歪み値が所定値(>0)より大きいか否かを判定してもよい。捻り量や傾き量に関する判定の閾値についても同様に、ある程度の幅を持たせてもよい。
また、一部の処理は省略されてもよいし、他の処理が追加されてもよい。例えば、ステップS104〜ステップS107の処理は行われない場合があってもよい。この場合、押し込み操作又は引っ張り操作が行われている間、第1BGM又は第2BGMは付加されず、基本BGMのみが出力される。基本BGMの出力中に押し込み操作が検出された場合には、1回だけ楽器音が出力される。この楽器音は、例えば、傾き量や捻り量に応じて異なってもよい。
以上のように、第1のゲームシーンにおいては、リングコントローラの変形情報及び姿勢情報に基づいて、フィルタ処理、ディレイ処理、楽器音付加処理等が行われることにより、基本BGMに対して音響効果が付与される。また、リングコントローラの変形情報に基づいて、基本BGMに対して、音響効果の一例としての、第1BGM及び/又は第2BGMが付加される。
(第2のゲームシーンにおけるゲーム処理)
次に、第2のゲームシーンにおけるゲーム処理について説明する。図35は、本体装置2のプロセッサ81において行われる第2のゲームシーンにおけるゲーム処理の一例を示すフローチャートである。図35に示す処理は、ゲームの実行中に第2のゲームシーンが開始されたことに応じて、開始される。
図35に示すように、プロセッサ81は、まず、BGMおよび所定の音の再生を開始する(ステップS200)。ここで再生されるBGMは、第1のゲームシーンにおけるBGMとは異なる音楽である。また、所定の音は、単一又は複数の周波数成分からなる音である。
次に、プロセッサ81は、リングコントローラからのセンサデータを取得し(ステップS201)、リングコントローラの変形情報及び姿勢情報を取得する(ステップS202)。ステップS201及びステップS202の処理は、ステップS101及びステップS102と同様の処理であるため、詳細な説明を省略する。
次に、プロセッサ81は、変形情報に基づいて、所定の音の中心周波数を算出する(ステップS203)。具体的には、プロセッサ81は、変形情報に基づいて、リングコントローラに対する引っ張り操作が行われているか否かを判定し、引っ張り操作が行われている場合には、その引っ張り量に応じて中心周波数を設定する。引っ張り量が大きいほど、中心周波数は小さく設定される。
続いて、プロセッサ81は、変形情報及び姿勢情報に基づいて、音程変化量に関するパラメータを算出する(ステップS204)。音程変化量に関するパラメータは、所定の音の周波数を、中心周波数からどれくらい(何倍)上下させるかを示すパラメータであり、例えば、0〜3の範囲で変化するパラメータである。具体的には、プロセッサ81は、引っ張り量の絶対値、傾き量の絶対値、及び、捻り量の絶対値の和を算出し、当該和に基づいて音程変化量に関するパラメータを算出する。
次に、プロセッサ81は、変形情報及び姿勢情報に基づいて、音程変化の周期を算出する(ステップS205)。音程変化の周期は、所定の音の周波数を変化させる周期を示すパラメータであり、例えば、0.5〜10秒の範囲で変化する。具体的には、プロセッサ81は、傾き量の絶対値と捻り量の絶対値の和を算出し、当該和と引っ張り量の絶対値との積を算出し、当該積に基づいて音程変化の周期を算出する。
次に、プロセッサ81は、中心周波数と、音程変化量と、音程変化の周期とに基づいて、所定の音の周波数を設定する(ステップS206)。ステップS206において各時点の周波数が設定されることにより、所定の音の周波数は、時間経過に応じて周期的に変化する(図25及び図26参照)。
次に、プロセッサ81は、引っ張り操作を検出した場合に、効果音再生処理を実行する(ステップS207)。具体的には、プロセッサ81は、引っ張り操作を検出した場合、そのときの捻り量に応じて複数の効果音の中から何れかを再生する。また、プロセッサ81は、引っ張り速度に応じて効果音の音量を設定する。
そして、プロセッサ81は、BGM、周波数が設定された所定の音、及び、効果音を出力する音出力処理を行い(ステップS208)、ゲーム画像の生成・出力処理を行う(ステップS209)。これにより、第2のゲームシーンに係るゲーム画像が表示されるとともに、リングコントローラに対する操作に応じた音が出力される。プロセッサ81は、ステップS209の処理の後、ステップS201の処理を再び実行する。ステップS201〜ステップS209の処理は、第2のゲームシーンが終了するまで、所定のフレーム時間間隔で繰り返し実行される。
以上のように、第2のゲームシーンにおいては、リングコントローラの変形情報及び姿勢情報に基づいて、音響効果の一例として、音程を周期的に変化させる処理が行われる。
以上のように、本実施形態では、リングコントローラに対して力を加えるとともに、リングコントローラの姿勢を制御することで、様々な音楽を生成・出力することができる。
(変形例)
以上、本実施形態のゲームについて説明したが、上記実施形態は単なる一例であり、例えば以下のような変形が加えられてもよい。
例えば、上記実施形態では、姿勢を検出するセンサを有する右コントローラ4と、変形を検出するセンサを有するリング型拡張装置5とが分離可能に構成され、右コントローラ4をリング型拡張装置5に装着することで、これらセンサを備えるリングコントローラを構成した。他の実施形態では、姿勢を検出するセンサと、変形を検出するセンサとが分離不可能に構成された入力装置が用いられてもよい。
また、上記実施形態では、リングコントローラの姿勢情報を、慣性センサ(角速度センサ、及び、加速度センサ)からの出力に基づいて取得(算出)した。他の実施形態では、リングコントローラの姿勢情報は、他の方法により取得されてもよい。例えば、リングコントローラの姿勢情報は、カメラからの画像に基づいて取得(算出)されてもよい。例えば、リングコントローラの周辺にカメラを設け、当該カメラでリングコントローラを撮像し、撮像した画像からリングコントローラの姿勢を検出してもよい。また、リングコントローラにカメラを設け、当該カメラで撮像された画像に基づいて、リングコントローラの姿勢が検出されてもよい。すなわち、リングコントローラの姿勢情報は、リングコントローラが備える慣性センサからの出力に基づいて取得(算出)されてもよいし、カメラからの画像に基づいて取得(算出)されてもよい。
また、上記実施形態では、基本となる音楽に、変形情報と姿勢情報とに基づく音響効果が付与され、当該音響効果が付与された音楽が出力されるものとした。他の実施形態では、変形情報と姿勢情報とに基づいて音楽が出力されれば、基本となる音はなくてもよい。すなわち、上述した変形情報と姿勢情報とに基づく音響効果のみの音楽(例えば、第1BGMに楽器音が付加された音楽)が出力されてもよい。
また、上記実施形態では、リングコントローラが定常状態から変形された場合に、変形の速さに関するパラメータ(例えば押し込み速度)が閾値を超えた場合には、第1又は第2BGMの音量を所定時間維持して、余韻を持たせた。他の実施形態では、変形の速さに関するパラメータは、変形の加速度であってもよい。また、リングコントローラが定常状態から変形された状態になる場合に限らず、リングコントローラが変形された状態から定常状態に戻るときの速さに基づいて、第1又は第2BGMの音量を所定時間維持してもよい。
また、上記実施形態では、例えば、リングコントローラが定常状態から押し込まれた状態に変化した場合(すなわち、変形していない状態から変形している状態に変化した場合)に、楽器音が出力された。他の実施形態では、リングコントローラが、例えば押し込まれた状態から定常状態に変化した場合(すなわち、変形した状態から変形していない状態に変化した場合)に、楽器音が出力されてもよい。
また、上記実施形態では、リングコントローラが変形されていない間も、第1BGM及び第2BGMの再生を継続する一方で音量をゼロにすることで、音響効果を付与しないようにした。他の実施形態では、リングコントローラが変形されていない間は、第1BGM及び第2BGMを再生せず、リングコントローラが変形している場合にのみ第1BGM又は第2BGMを再生および出力することにより、音響効果を付与してもよい。
また、上記実施形態では、所定のゲームシーンにおいて、リングコントローラを変形させたりリングコントローラの姿勢を変化させたりすることで音楽を出力した。他の実施形態では、リングコントローラを変形させたりリングコントローラの姿勢を変化させたりすることで進行する音楽ゲームが行われてもよい。
例えば、音楽ゲームは、ユーザが所定の音楽に合わせてリングコントローラを変形させたり、リングコントローラの姿勢を変化させたりすることで点数が加算されるゲームであってもよい。例えば、音楽ゲームでは、所定の音楽が出力されている間、ユーザにリングコントローラを用いたアクションを行わせるために、画像や音声によってユーザに対する指示が行われる。当該指示に応じて、ユーザがタイミングよく(音楽のリズムにあった所定のタイミングで)指示通りのアクションを行った場合は、そのタイミングの一致度合いや指示通りのアクションが行われたか否かに応じて、点数が加算される。例えば、リングコントローラを用いたアクションは、リングコントローラを変形させるアクション(例えば、押し込み又は引っ張り)、リングコントローラを変形させながらリングコントローラの姿勢を変化させるアクション(例えば、押し込みながらの傾け操作)であってもよい。また、単にリングコントローラの姿勢を変化させるアクション(例えば捻り操作)等であってもよい。
このような音楽ゲームにおいて、ユーザによるアクションに応じて、上述した音響効果が付与されてもよい。付与される音響効果は、加算される点数に応じて異なってもよい。例えば、音楽ゲームの実行中に、ユーザが、所定の音楽に合わせて押し込み操作を行いながら傾け操作を行った場合には、所定の音楽に対して押し込み量と傾き量とに基づく音響効果が付与されてもよい。例えば、このアクション(押し込み操作及び傾け操作)がタイミングよく行われたか否かによって、加算される点数が異なったり、付加される音響効果が異なったりしてもよい。例えば、アクションのタイミングが所定の音楽のリズムに合ったタイミングである場合には、傾き量に応じた楽器音が出力され、所定の音楽のリズムに合わないタイミングである場合には、傾き量に応じた楽器音が出力されなかったり、異なる音が出力されたりしてもよい。
また、上記実施形態のゲームシステム1の構成は単なる一例であり、他の任意の構成において上述したゲームが行われてもよい。例えば、上記実施形態では、リング型拡張装置5に右コントローラ4を装着し、ベルト型拡張装置6に左コントローラ3を装着することにより、リングコントローラ及び脚コントローラを構成した。他の実施形態では、ユーザの運動を検出することが可能な装置であれば、どのような装置が用いられてもよい。例えば、リング型拡張装置5は、円形状ではなく、棒状、楕円状、L字型等任意の形状であってもよい。
また、ネットワーク(WAN、インターネット等)で接続された複数の装置によって、上述したゲームシステム1が構成されてもよい。また、本体装置2に代えて、任意の情報処理装置(例えば、パーソナルコンピュータ、スマートフォン、タブレット端末、サーバ等)が用いられ、当該情報処理装置を含む情報処理システムが構成されてもよい。
以上、本発明について説明したが、上記説明は本発明の例示に過ぎず、種々の改良や変形が加えられてもよい。