ゲームシステムおよびゲームコントローラ
【課題】動きセンサを搭載したゲームコントローラを利用した新しいゲーム操作入力を実現する。
【解決手段】コントローラ20は、振動子80と、所定の操作ボタンへの操作入力を振動制御信号に変換して振動子80に供給する振動制御部70を備える。センサユニット58における動きセンサは、振動子80の駆動に起因する振動を検出する。検出されたセンサ情報は、無線通信モジュール72からゲーム装置に送信され、ゲーム装置は、そのセンサ情報をもとに、ゲームの連射機能を実現する。
【解決手段】コントローラ20は、振動子80と、所定の操作ボタンへの操作入力を振動制御信号に変換して振動子80に供給する振動制御部70を備える。センサユニット58における動きセンサは、振動子80の駆動に起因する振動を検出する。検出されたセンサ情報は、無線通信モジュール72からゲーム装置に送信され、ゲーム装置は、そのセンサ情報をもとに、ゲームの連射機能を実現する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、振動子を備えたゲームコントローラ、およびそのゲームコントローラを備えたゲームシステムに関する。
【背景技術】
【0002】
シューティングゲームは、ゲームコントローラによりゲーム空間内のオブジェクトから仮想の弾丸を発射させて、敵オブジェクトにあてるゲームである。シューティングゲームでは、ゲームコントローラの任意のボタンが、仮想弾丸の発射スイッチに割り当てられ、ユーザがそのボタンを押下するたびに、弾丸が発射されるようになっている。
【0003】
弾丸を単位時間あたりに沢山発射させるために、最近ではゲームコントローラの所定のボタンに連射専用のスイッチが割り当てられたり、ゲームコントローラの所定のボタンに対して、ゲーム装置側で連射専用のスイッチをソフト的に割り当てることが行われている。このようなスイッチを利用することで、ユーザは、ボタンを連打することなく、単にボタンの押下状態を維持するだけで、簡単に連射を行える。従来、ゲームコントローラに設けられた感圧手段により、発射操作の圧力を感知して、発射弾丸数を決定するシューティングゲームを提案するものがある(たとえば特許文献1参照)。
【特許文献1】特表2003−519548号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
近年、ゲームコントローラに動きセンサを搭載して、ゲームコントローラの姿勢や動きそのものをゲーム装置への操作入力として利用することが現実化されている。ユーザがゲームコントローラを動かすと、動きセンサはゲームコントローラの傾きや回転量などを検出し、その検出値をゲーム装置に送信することで、従来からあるボタン操作とは異なるゲーム操作入力が実現される。たとえばレーシングゲームでは、ゲームコントローラが自動車のハンドルのように扱われて、ユーザは、ボタン操作よりもリアルな感覚をもってゲームを行うことができる。
【0005】
本発明者は、ゲームコントローラに搭載されている動きセンサを有効に利用することで、ゲーム装置に対して従来にない操作入力を実現することの可能性を見いだした。
【0006】
そこで本発明は、ゲームコントローラに搭載された動きセンサの出力をゲーム装置に対する操作入力として利用する技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明のある態様のゲームシステムは、ゲームコントローラと、ゲームアプリケーションを実行するゲーム装置とを備える。ゲームコントローラは、振動制御信号により駆動を制御される少なくとも1つの振動子と、振動子の駆動に起因する振動を検出する動きセンサと、動きセンサの出力をアナログデジタル変換するアナログデジタル変換器と、アナログデジタル変換されたセンサ出力をゲーム装置に供給する第1通信モジュールとを有する。ゲーム装置は、ゲームコントローラからセンサ出力を受け取る第2通信モジュールと、ゲームアプリケーションを処理するアプリケーション処理部と、受け取ったセンサ出力を、アプリケーション処理部にゲーム操作データとして供給する供給部とを有する。アプリケーション処理部は、供給部から受け取ったゲーム操作データをゲームアプリケーションの処理に反映させる。
【0008】
本発明の別の態様は、ユーザによるゲーム操作データをゲーム装置に伝送するゲームコントローラに関する。このゲームコントローラは、少なくとも1つの振動子と、振動子の駆動に起因する当該ゲームコントローラの動きを検出する動きセンサと、ユーザにより操作されて、振動子を駆動するための操作ボタンと、操作ボタンへの操作入力を振動制御信号に変換して振動子に供給する振動制御部と、動きセンサの出力をアナログデジタル変換するアナログデジタル変換器と、アナログデジタル変換されたセンサ出力をゲーム装置に供給する通信モジュールとを備える。
【0009】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0010】
本発明によると、ゲームコントローラに搭載された動きセンサの出力をゲーム装置に対する操作入力として利用する技術を提供することができる。
【発明を実施するための最良の形態】
【0011】
図1は、本発明の実施例にかかるゲームシステムの使用環境を示す。ゲームシステム1は、画像表示装置3、音声出力装置4、ゲーム装置10およびコントローラ20を備える。画像表示装置3、音声出力装置4およびコントローラ20は、ゲーム装置10に接続される。
【0012】
画像表示装置3は画像信号を出力するディスプレイであって、ゲーム装置10において生成された画像信号を受けて、ゲーム画面を表示する。音声出力装置4は音声を出力するスピーカであって、ゲーム装置10において生成された音声信号を受けて、ゲーム音声を出力する。画像表示装置3および音声出力装置4は、ゲームシステム1における出力装置を構成する。ゲーム装置10と出力装置は、AVケーブルなどの有線により接続されてもよく、また無線により接続されてもよい。またゲーム装置10と出力装置との間には、ネットワーク(LAN)ケーブルやワイヤレスLANなどで構築したホームネットワークが構築されてもよい。
【0013】
コントローラ20は、ユーザがゲーム中のキャラクタを動作させるゲーム操作データを入力するための入力装置であり、またゲーム装置10は、コントローラ20から供給されるゲーム操作データをもとにゲームアプリケーションを処理して、ゲームアプリケーションの処理結果を示す画像信号および音声信号を生成する処理装置である。なおゲーム装置10は、コントローラ20から供給される動きセンサの出力をゲーム操作データとして利用し、ゲームアプリケーションを処理する機能ももつ。なお、本実施例に示す技術は、ゲームアプリケーションに限らず、他の種類のアプリケーションを実行する処理装置を備えたエンタテインメントシステムにおいても実現できる。以下では、エンタテインメントシステムを代表して、ゲームアプリケーションを実行するゲームシステム1について説明する。
【0014】
コントローラ20は、ゲーム操作データをゲーム装置10に伝送する機能をもち、本実施例ではゲーム装置10との間で無線通信可能な無線コントローラとして構成される。コントローラ20とゲーム装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルを用いて無線接続を確立してもよい。ゲーム操作データの送受信において、ゲーム装置10は親機すなわちマスタとして機能し、コントローラ20は子機すなわちスレーブとして機能する。なおコントローラ20は、無線コントローラに限らず、ゲーム装置10とケーブルを介して接続される有線コントローラであってもよい。
【0015】
コントローラ20は、図示しないバッテリにより駆動され、ゲームを進行させるゲーム入力を行うための複数のボタンやキーを有して構成される。ユーザがコントローラ20のボタンやキーを操作すると、そのゲーム操作データが無線により周期的にゲーム装置10に送信される。またコントローラ20は、コントローラ20の3軸方向の加速度を検出する3軸加速度センサと、所定の軸回りの角速度を検出する角速度センサを有して構成される。3軸加速度センサおよび角速度センサは、コントローラ20の動きを検出する動きセンサを構成する。各センサの検出値は無線により周期的にゲーム装置10に送信され、ゲームの進捗状況に応じて、ゲーム操作データとして扱われる。たとえば、コントローラ20を自動車のハンドルに見立て、ユーザがコントローラ20をハンドルのように動かすことで、ゲーム中の自動車を動かすレーシングゲームにおいては、3軸加速度センサおよび角速度センサの出力値がゲーム操作データとして利用される。
【0016】
ゲーム装置10は、コントローラ20からゲームアプリケーションに関するゲーム操作データを受信し、ゲーム操作データに応じてゲーム進行を制御して、ゲーム画像信号およびゲーム音声信号を生成する。生成されたゲーム画像信号およびゲーム音声信号は、それぞれ画像表示装置3および音声出力装置4により出力される。
【0017】
近年のゲームシステムにおいて、モータなどの振動子を備えたゲームコントローラが普及している。ゲームキャラクタの状況にあわせて振動子が駆動されることで、仮想的な現実感をユーザに与えて、ゲームの魅力を高める効果がある。本実施例のゲームシステム1においては、コントローラ20が振動子を備え、この振動子の駆動に起因するコントローラ20の振動を動きセンサが検出して、その検出値をゲーム操作データとして利用することで、従来にないゲーム装置10に対する操作入力を実現する。
【0018】
コントローラ20は、自身を振動させる振動制御信号を、ユーザのボタン操作に応じて生成する機能をもつ。コントローラ20は、ボタンへの操作入力を振動制御信号に変換して、振動子に供給する。ユーザが所定のボタンを押下している間、振動制御信号が生成され続けて、振動子に供給されてもよい。またコントローラ20は、所定のボタンが押下されたときに振動開始信号を振動子に供給して、振動子を駆動し、所定のボタンの押下が終了したとき、すなわち所定のボタンが解放されたときに振動停止信号を振動子に供給して、振動子の駆動を停止してもよい。
【0019】
またゲーム装置10は、ゲームアプリケーションの進行状況や、ユーザのボタン操作に応じて、コントローラ20を振動させる振動制御信号をコントローラ20に送信する機能を有してもよい。コントローラ20は、振動開始信号を受信すると振動子を駆動し、振動停止信号を受信すると振動子の駆動を停止する。なおゲーム装置10は、振動子を駆動させるか否かを特定する振動制御信号を、送信フレームごとに送信してもよく、この場合、コントローラ20は、この振動制御信号にしたがって動作する。なお、コントローラ20において振動子に供給される振動制御信号は、PWM(パルス幅変調)信号であってよく、ゲーム装置10から供給される振動制御信号とは異なる信号形態をとってもよい。
【0020】
図2は、コントローラの外観構成を示す。コントローラ20には、方向キー21、アナログスティック27と、4種の操作ボタン26が設けられている。4種のボタン22〜25には、それぞれを区別するために、異なる色で異なる図形が記されている。すなわち、○ボタン22には赤色の丸、×ボタン23には青色のバツ、□ボタン24には紫色の四角形、△ボタン25には緑色の三角形が記されている。
【0021】
ユーザは左手で左側把持部28aを把持し、右手で右側把持部28bを把持して、コントローラ20を操作する。方向キー21、アナログスティック27、操作ボタン26は、ユーザが左側把持部28a、右側把持部28bを把持した状態で操作可能なように、筐体上面30に設けられる。
【0022】
左側把持部28aおよび右側把持部28bの筐体内部には、モータなどで構成される振動子が配置される。左右の振動子は、駆動を指示する振動制御信号を供給されると駆動され、その振動がコントローラ20の筐体に伝達されて、コントローラ20が振動する。またコントローラ20の筐体内部の中央付近には、コントローラ20の動作を制御するための基板が配置される。この基板には、既述した3軸加速度センサや角速度センサなども設けられている。なおコントローラ20の外郭を構成する筐体は、下側筐体と上側筐体とを嵌め合わせることで構成され、振動子および基板は、下側筐体に固定されている。
【0023】
基板上の3軸加速度センサおよび角速度センサなどの動きセンサは、コントローラ20の動きを検出するが、振動子が駆動されたときには、その駆動により生じるコントローラ20の振動成分も検出する。本実施例のゲームシステム1においては、振動子の駆動に起因して動きセンサにより検出されるコントローラ20の振動成分を、ゲームの操作データとして処理する。これにより、ユーザに対してコントローラ20の振動を感じさせながら、その振動そのものが、ゲームに対する操作入力として利用できる。コントローラ20の所定のボタンに、振動子を駆動させる振動制御信号を生成させるスイッチとしての機能を割り当て、同時に、振動子の駆動に起因するコントローラ20の振動を検出した動きセンサの検出値を、たとえばゲームの連射モードにおける操作入力として利用することで、ユーザは、ゲーム中で連射を行いながら、振動を感じることができ、現実感の高いゲームを体感できる。
【0024】
図3は、コントローラの背面側の外観構成を示す。筐体背面側からみて、筐体上面右方には方向キー21が設けられ、上面左方には操作ボタン26が設けられる。また、方向キー21および操作ボタン26の内側には、2つのアナログスティック27が設けられる。筐体背面29の中央部には、USBコネクタ46が設けられる。USBコネクタ46には、ゲーム装置10から延びるUSBケーブルが接続されて、コントローラ20の充電処理を行うことができる。なおUSBケーブルが接続されると、コントローラ20を有線コントローラとして利用することも可能である。
【0025】
筐体背面29側には、上側操作ボタン32a、上側操作ボタン32b、下側操作ボタン34a、下側操作ボタン34bが筐体背面長手方向の左右対称な位置にそれぞれ設けられる。上側操作ボタン32aおよび上側操作ボタン32bは、ユーザが左側把持部28a、右側把持部28bを把持した状態で、それぞれ左手および右手の人差指の先端で操作される位置に形成され、下側操作ボタン34aおよび下側操作ボタン34bは、それぞれ左手および右手の中指の先端で操作される位置に形成される。
【0026】
上側操作ボタン32aおよび上側操作ボタン32bは、プッシュ式のボタンとして構成される。上側操作ボタン32からの入力は、押下されることで実行され、オンオフのデジタル入力を可能とする。一方、下側操作ボタン34aおよび下側操作ボタン34bは、回動支持されたトリガー式のボタンとして構成される。下側操作ボタン34は、回動可能な入力インタフェースであって、回動量に応じたアナログ入力を可能とする。なお、上側操作ボタン32についても同様にアナログ入力を可能とする入力インタフェースとして構成されてもよい。下側操作ボタン34は、回動軸により回動可能に支持された状態で、ばねなどにより筐体外向きに付勢されている。これにより、ユーザから押下されない状態では、下側操作ボタン34が筐体から離れる方向に付勢され、その位置を維持する。
【0027】
コントローラ20において、下側操作ボタン34は、筐体背面29の長手方向に実質的に平行に設けられた回転軸により回動可能に支持されて構成される。下側操作ボタン34は、その上側部分を回動支持され、ユーザは下側操作ボタン34の表面の下側を押下することで、下側操作ボタン34を筐体内に収容する方向に回動させることができる。下側操作ボタン34の表面の下端部には、回動軸から離れる向き、具体的には下向きないしは斜め下向きに張り出した突起部が形成される。したがって突起部は、回転軸よりも筐体裏面側に配置される。
【0028】
下側操作ボタン34の回動量検出手段として、静電容量式のセンサが採用されてもよい。静電容量式センサは、2つの電極間における静電容量の変化を検出して、下側操作ボタン34の回動量を検知することができる。コントローラ20において、電極間の静電容量をアナログ値として取得する検出手段が設けられ、検出手段により取得されたアナログ値が、回動量に応じたデジタル値に変換される。これにより、コントローラ20は、回動量に応じた入力値を取得することが可能となる。
【0029】
他の例として、下側操作ボタン34の回動量検出手段に、抵抗変化を検出するセンサを採用してもよい。たとえば、筐体内部に所定の抵抗値で2端子間を導通している回路パターンを用意し、下側操作ボタン34の回動方向端部に導電ゴムを設ける。下側操作ボタン34が回動されると、回動方向端部に設けられた導電ゴムが筐体内部の回路パターンに接触する。導電ゴムは、回動量に応じて回路パターンとの接触面積が変化するように変形可能に形成され、これにより回動量に応じて2端子間の抵抗値が変化する。この抵抗値を検出することで、回動量を検出することができ、これによりコントローラ20は、回動量に応じた入力値を取得することが可能となる。
【0030】
図4(a)および図4(b)は、コントローラの側面側の外観構成を示す。なお図4は、コントローラ20の右側面から見える下側操作ボタン34bを示しているが、左側面から見える下側操作ボタン34aについても同様の構造を有している。図4(a)は、下側操作ボタン34bを回動しない状態を示し、図4(b)は、下側操作ボタン34bを回動軸36bを中心に最大に回動した状態を示す。突起部は、回動されると、筐体の外表面、具体的には開口部の縁部に接触して回動動作を制限するストッパとして機能する。なお図示するように、開口部を形成する筐体外郭部分を下方に向けて傾斜させることで、下側操作ボタン34の回動量すなわちストローク量を大きくすることができる。ストローク量を大きくすることで、入力可能なアナログ値の範囲を増やすことができる。
【0031】
本実施例のゲームシステム1では、下側操作ボタン34に、筐体内部に設けられた振動子を駆動するスイッチの機能が割り当てられる。下側操作ボタン34a、34bは、それぞれ左側、右側に配置される振動子を駆動するスイッチ機能を割り当てられてもよいが、いずれか一方の下側操作ボタン34に、両方の振動子を駆動するスイッチ機能を割り当てられてもよい。
【0032】
ゲームシステム1では、下側操作ボタン34の回動量に応じて、振動子の振動数を制御してもよく、また振動の振幅を制御してもよい。振動子の駆動に起因して筐体が振動すると、動きセンサが、その振動を検出する。ゲームシステム1では、この検出した振動をもとに、ゲームの連射機能を実現する。
【0033】
図5は、コントローラの上側筐体を外して、下側筐体に固定される基板および振動子を露出させた状態を示す。基板88は横長の形状を有し、下側筐体の前方中央位置に固定される。振動子80aは、モータ82aと、モータシャフトの先端に取り付けられた偏心部材86aを有し、一対の締結爪84aにより挟持されて、下側筐体の左側把持部28aの位置に固定される。同様に振動子80bは、モータ82bと偏心部材86bを有し、一対の締結爪84bにより挟持されて、下側筐体の右側把持部28bの位置に固定される。偏心部材86は半円形状を有して、モータシャフトに対して偏心して固定され、モータシャフトが回転すると、筐体を振動させる。
【0034】
図6は、コントローラの内部構成を示す。コントローラ20は、処理部90を有し、さらに、モータと偏心部材から構成される振動子80a、80bと、無線通信モジュール72と、USBコネクタ46を備える。無線通信モジュール72は、ゲーム装置10の無線通信モジュールとの間でデータを無線で送受信する機能をもつ。またUSBコネクタ46に、一端がゲーム装置10のUSBコネクタに接続されているUSBケーブルの他端が挿入されると、コントローラ20は、ゲーム装置10との間でデータを有線で送受信することができる。処理部90は、コントローラ20における所期の処理を実行する。処理部90および無線通信モジュール72の機能は、筐体内部に設けられる基板88に作り込まれた回路として実現されてもよい。
【0035】
処理部90は、メイン制御部50、入力受付部52、センサユニット58、アナログデジタル変換装置62、メモリ64、読出部66、通信制御部68および振動制御部70を備える。通信制御部68は、無線通信モジュール72との間で必要なデータの送受を行う。以下では、コントローラ20とゲーム装置10の間で無線通信が行われる場合について説明するが、コントローラ20とゲーム装置10の間でUSBケーブルを介した通信が行われてもよい。
【0036】
入力受付部52は、方向キー21、操作ボタン26、アナログスティック27、上側操作ボタン32などの入力部から操作入力を受け付け、メイン制御部50に送る。メイン制御部50は、受け取った操作情報をメモリ64に供給し、記憶させる。各入力部からの操作情報は、メモリ64においてそれぞれに割り当てられる領域に上書きして記憶される。
【0037】
通信制御部68は、所定の周期で無線通信モジュール72の送信処理を制御する。ゲーム装置10のゲーム画像のフレーム周期は1/60秒に設定されているため、無線通信モジュール72の送信周期は、1/60秒以下の時間、たとえば11.25m秒に設定される。読出部66は、無線通信モジュール72の送信周期にあわせてメモリ64からデータを読み出し、通信制御部68に供給する。各入力部からの情報は、それぞれの記憶領域において上書き保存されているため、読出部66は、最新のゲーム操作データを通信制御部68に供給できる。
【0038】
センサユニット58は、加速度センサ54と角速度センサ56を有する。センサユニット58が3軸加速度センサを含む場合、センサユニット58は、3つの加速度センサ54を有して構成される。加速度センサ54は、所定の軸方向におけるコントローラ20の動きを検出し、角速度センサ56は、所定の軸回りのコントローラ20の動きを検出する。本実施例において、加速度センサ54および/または角速度センサ56が、振動子80の駆動に起因するコントローラ20の振動を検出すると、その検出値は、ゲームアプリケーションのゲーム操作データとして利用され、具体的には連射機能の実行に利用される。
【0039】
アナログデジタル変換装置62は、複数のアナログデジタル変換器(ADC)60を有する。ADC60は、センサユニット58から出力されるアナログ信号をデジタル信号に変換する。サンプリング周期は、無線通信モジュール72による送信周期と比較して短く設定されることが好ましく、たとえば2m秒程度であってよい。アナログデジタル変換装置62は、固定のサンプリング周期を保持してもよく、またメイン制御部50によりサンプリング周期を所望に制御されてもよい。各ADC60は、サンプリング値を、メモリ64において割り当てられた領域に上書きする。
【0040】
既述したように、読出部66は、無線通信モジュール72の送信周期で特定される送信タイミングにあわせてメモリ64からデータを読み出し、通信制御部68に供給する。各ADC60から供給されるセンサ出力値は、それぞれの記憶領域において上書き保存されているため、読出部66は、最新のセンサ情報を通信制御部68に供給できる。通信制御部68は、無線通信モジュール72から、入力受付部52で受け付けた操作ボタン26などの操作情報とともに、動きセンサ、すなわち加速度センサ54および角速度センサ56により取得されたセンサ情報をゲーム操作データとして、ゲーム装置10に送信させる。
【0041】
本実施例のコントローラ20において、入力受付部52は、下側操作ボタン34からの操作入力を受け付けると、振動制御部70に送る。本実施例において下側操作ボタン34は、ユーザにより操作されて、操作量すなわち回動量に応じたアナログ入力を可能とし、振動子80を駆動するためのボタンである。振動制御部70は、受け取った操作情報を振動制御信号に変換して、振動子80に供給する。
【0042】
振動制御部70は、下側操作ボタン34の操作量に応じて、振動子80の振動数を定める機能をもつ。振動制御部70は、操作量が大きければ、振動子80の振動数を高くする振動制御信号を生成し、また操作量が小さければ、振動子80の振動数を低くする振動制御信号を生成する。
【0043】
図7(a)は、操作ボタンの操作量と、振動子に供給する駆動電圧の関係を示す。下側操作ボタン34の操作量が大きいほど、振動子80に供給する駆動電圧を大きくすることで、振動子80の振動数を高くできる。これにより、ユーザが下側操作ボタン34を押し込むほど、振動子80が高い振動数で駆動されて、コントローラ20の振動を多くできる。
【0044】
また振動制御部70は、下側操作ボタン34の操作量に応じて、振動子80の振動振幅を定める機能を有してもよい。たとえば振動制御部70は、振動子80に供給する振動制御信号のデューティ比を調整することで、振動子80の振動振幅を定めてもよい。振動制御部70は、操作量が大きければ、振動子80の振動振幅を大きくする振動制御信号を生成し、また操作量が小さければ、振動子80の振動振幅を小さくする振動制御信号を生成してもよい。
【0045】
図7(b)は、操作ボタンの操作量と、振動子に供給するPWM信号のデューティ比の関係を示す。下側操作ボタン34の操作量が大きいほど、振動子80に供給する振動制御信号のデューティ比を高くすることで、振動子80の振動振幅を大きくできる。これにより、ユーザが下側操作ボタン34を押し込むほど、振動子80が大きい振動振幅で駆動されて、コントローラ20の振動を大きくできる。
【0046】
以上のように、振動制御部70は、下側操作ボタン34の操作量に応じて振動子80の振動数および/または振動振幅を調整する振動制御信号を生成し、振動子80に供給する。これにより、コントローラ20は、下側操作ボタン34の操作量に応じた振動数および/または振動振幅で振動され、ユーザは、その振動を体感できる。このとき、加速度センサ54および角速度センサ56で構成される動きセンサは、振動子80の駆動に起因するコントローラ20の振動を検出する。このセンサ出力は、無線通信モジュール72からゲーム装置10に送信されて、連射機能を実行させるゲーム操作データとして利用される。
【0047】
図8は、ゲーム装置の構成を示す。ゲーム装置10は、無線通信モジュール100、USBコネクタ101、通信制御部102、メイン制御部104、ゲーム操作データ供給部106、アプリケーション処理部110および出力部112を備える。本実施例におけるゲーム装置10の処理機能は、CPU、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、ゲーム装置10に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。図示の例では、ゲーム装置10のCPUが、通信制御部102、メイン制御部104、ゲーム操作データ供給部106、アプリケーション処理部110としての機能を実現する。なお、ハードウェアの構成上、ゲーム装置10は複数のCPUを有してもよい。このような場合、1つのCPUが無線通信モジュール100の動作を制御する通信制御部102として機能し、別のCPUがゲーム装置10全体の動作を制御するメイン制御部104として機能し、別のCPUがゲームアプリケーションを実行するアプリケーション処理部110として機能し、また別のCPUがゲーム操作データをアプリケーション処理部110に供給するゲーム操作データ供給部106として機能してもよい。
【0048】
通信制御部102は、無線通信モジュール100との間で必要なデータを送受して、無線通信モジュール100の通信処理を制御し、無線通信モジュール100は、コントローラ20の無線通信モジュール72との間で無線通信を確立する。無線通信モジュール100および無線通信モジュール72は、たとえばBluetooth(登録商標)プロトコルによる接続を確立する。コントローラ20の無線通信モジュール72からは、所定の周期でゲーム操作データなどのデータが送信され、通信制御部102は、無線通信モジュール100で受信したデータをメイン制御部104に供給する。なおUSBコネクタ101に、一端がコントローラ20のUSBコネクタ46に接続されているUSBケーブルの他端が挿入されている場合には、通信制御部102が、USBケーブルを介してコントローラ20との間の通信処理を制御してもよい。
【0049】
メイン制御部104は、コントローラ20から供給された操作情報およびセンサ情報をゲーム操作データ供給部106に供給する。ゲーム操作データ供給部106は、受け取った操作情報およびセンサ情報を、ゲーム操作データに変換して、アプリケーション処理部110に供給する。ゲーム操作データ供給部106は、ユーザから所定の入力があったときに、連射モードにおけるゲーム操作データの生成処理を実行してもよい。たとえばユーザは2つの下側操作ボタン34a、34bを同時押しすることで連射モードへの移行、終了を指示することができ、ゲーム操作データ供給部106は、下側操作ボタン34a、34bの同時押しを検出して、連射モード用のゲーム操作データの生成タイミングを判断してもよい。アプリケーション処理部110は、ゲーム操作データ供給部106から受け取ったゲーム操作データをゲームアプリケーションの処理に反映する。具体的に、アプリケーション処理部110は、センサ情報に対応するゲーム操作データを利用して、ゲーム中の連射モードを実行する。
【0050】
図9は、振動子の駆動に起因するコントローラの動きを検出したセンサ出力を示す。このセンサ出力はZ軸成分(垂直成分)の加速度センサ出力であってもよく、また他の軸成分の加速度センサ出力であってもよく、さらには角速度センサ出力であってもよい。図9(a)は、低い振動数で振動子が駆動されたときのセンサ出力を示し、図9(b)は、相対的に高い振動数で振動子が駆動されたときのセンサ出力を示す。ゲーム操作データ供給部106は、このセンサ情報をゲーム操作データに変換してアプリケーション処理部110に供給する。
【0051】
ゲーム操作データ供給部106は、たとえばセンサ出力の周期を測定して、連射モードにおける単位時間あたりの仮想弾丸の発射数を決定し、ゲーム操作データとしてアプリケーション処理部110に供給してもよい。センサ出力の周期が短いことは、振動子80が高い振動数で駆動されていることを意味するが、コントローラ20を激しく振動させ、同時にゲーム中では、連射の単位時間あたりの弾丸の発射数を増やすことで、コントローラ20の振動と、弾丸の発射数との関係を、ユーザに体感させることができる。すなわち、この場合は、コントローラ20の振動数が高いほど、ゲームキャラクタが発射する弾丸数が多くなるため、ユーザに対して、激しく弾丸を発射している仮想体験を与えることが可能となる。
【0052】
またゲーム操作データ供給部106は、センサ出力の振幅を測定して、連射モードにおける単位時間あたりの仮想弾丸の発射数を決定し、ゲーム操作データとしてアプリケーション処理部110に供給してもよい。センサ出力の振幅が大きいことは、コントローラ20の動きが大きいことを意味するが、コントローラ20を大きく振動させ、同時にゲーム中では、連射の単位時間あたりの弾丸の発射数を増やすことで、コントローラ20の振動と、弾丸の発射数との関係を、ユーザに体感させることができる。すなわち、この場合は、ゲームキャラクタが発射する弾丸数が多いほど、コントローラ20の振動振幅が大きくなるため、ユーザに対して、激しく弾丸を発射している仮想体験を与えることが可能となる。
【0053】
なお、ゲーム操作データ供給部106は、センサ出力の振幅を測定して、弾丸の飛距離を決定してもよい。すなわち、センサ出力の振幅が大きければ、弾丸の飛距離を長くし、センサ出力の振幅が小さければ、弾丸の飛距離を短くしてもよい。これにより、コントローラ20の振動と、弾丸の飛距離との関係を、ユーザに体感させることができる。なお、ゲーム操作データ供給部106は、センサ出力の周期により単位時間あたりの仮想弾丸の発射数を決定し、同時にセンサ出力の振幅により弾丸の飛距離を決定することも可能である。
【0054】
図10は、振動子の振動に起因するコントローラの動きを検出したセンサ出力の具体例を示す。このセンサ出力は、10m秒ごとに送信されるX軸成分の加速度センサ出力を示す。図11は、図10に示すセンサ出力を時間軸上にプロットして結んだラインを示す。
【0055】
ゲーム操作データ供給部106は、センサ出力に対して基準値を設定し、センサ出力が基準値以下の値から基準値を超えたこと、またはセンサ出力が基準値より高い値から基準値以下となったことを検出すると、仮想弾丸を発射させるゲーム操作データをアプリケーション処理部110に供給してもよい。基準値は所定の固定値であってもよいが、後述するように環境にあわせて設定されてもよい。図10、図11の例では、ゲーム操作データ供給部106は、基準値をたとえば512に設定し、基準値である512を超えたときに、一発の仮想弾丸の発射をさせるゲーム操作データを生成して、アプリケーション処理部110に供給する。0〜200m秒までの間でみれば、30m秒、50m秒、80m秒、110m秒、140m秒、170m秒、200m秒のタイミングで、センサ出力値が512以下の値から512を超えている。ゲーム操作データ供給部106は、基準値を超えたことを判定すると、仮想弾丸を発射させるゲーム操作データを生成する。したがって、この例では、200m秒の間に、計7発の仮想弾丸が連射されることになる。
【0056】
なおアプリケーション処理部110は、ユーザによる所定の操作ボタン26の押下操作についてのゲーム操作データを受けると、仮想弾丸を発射するように処理できる。具体的には、所定の操作ボタン26のオン状態(押下状態)、オフ状態(解放状態)を「0」、「1」の2値信号として扱い、操作ボタン26の状態がオン状態からオフ状態に遷移するときに仮想弾丸の発射処理を実行する。すなわちアプリケーション処理部110は、所定の操作ボタン26の状態値(操作データ)が「0」から「1」に遷移するときに、仮想弾丸を発射するように処理する。これを利用して、ゲーム操作データ供給部106は、基準値以下のセンサ出力を「0」に変換し、基準値よりも高いセンサ出力を「1」に変換して、その変換値をアプリケーション処理部110にゲーム操作データとして供給してもよい。アプリケーション処理部110は、操作ボタン26の状態値と同様にセンサ出力の変換値を処理すると、変換値が「0」から「1」に遷移するときに、仮想弾丸を発射するように処理することができる。これにより、センサ出力が基準値以下の値から基準値を超えたときに仮想弾丸が発射されるようになり、短時間で複数発の仮想弾丸を連射することが可能となる。
【0057】
ゲーム操作データ供給部106は、センサ出力が基準値を超えた回数が所定回数になったときに、仮想弾丸を発射させるゲーム操作データを生成してもよい。ゲーム操作データ供給部106は、センサ出力が基準値を超えた回数をカウントし、所定回数に1回の割合でゲーム操作データを生成する。これによりゲーム操作データ供給部106は、連射速度を調整することが可能となる。
【0058】
ゲーム操作データ供給部106は、送信されてくる操作情報を監視し、下側操作ボタン34の操作入力が含まれていなかった状態から、下側操作ボタン34の操作入力がなされたことを判定すると、その直前のセンサ出力を基準値として設定してもよい。すなわちゲーム操作データ供給部106は、操作情報の内容を監視して、下側操作ボタン34の操作により振動が開始されたことを判定すると、振動開始直前のセンサ出力値を基準値として採用する。振動開始前のセンサ出力値を基準として利用することで、その基準値を中心として上下するセンサ出力を取得できることが期待できる。
【0059】
またゲーム操作データ供給部106は、下側操作ボタン34の操作入力がなかった状態から操作入力がなされたことを検出すると、その後の所定数のセンサ出力の平均値を算出して、その平均値を基準値として採用してもよい。図10、図11を参照して、ゲーム操作データ供給部106は、振動開始から50m秒までのたとえば5回分のセンサ出力値を平均し((502+512+515+502+514)/5)、平均値509を基準値として設定する。振動中のセンサ出力値をもとに基準値を求めることで、コントローラ20の姿勢などの実際の使用環境に即した基準値を設定することが可能となる。
【0060】
なお、設定した基準値に対して、センサ出力が所定回数連続して高い場合、または低い場合には、ゲーム操作データ供給部106は基準値を変更してもよい。たとえば10回連続してセンサ出力が基準値よりも高いような場合には、設定した基準値が低すぎることが分かる。したがってゲーム操作データ供給部106は、センサ出力が基準値に対して連続して高くなるまたは低くなる回数をカウントし、そのカウント数が所定回数に到達したときに、基準値を変更する。ゲーム操作データ供給部106は、所定数のセンサ出力値を平均して基準値を再設定してもよく、また設定されている基準値に所定値を加算または減算することで、基準値を再設定してもよい。
【0061】
なお図10、図11にはX軸の加速度成分を示したが、ゲーム操作データ供給部106は、別軸の加速度成分を利用してゲーム操作データを生成してもよい。またゲーム操作データ供給部106は複数軸の加速度成分を利用してゲーム操作データを生成してもよい。たとえばゲーム操作データ供給部106は、X軸とY軸の加速度成分から基準値を超えたタイミングを判定し、両軸において判定されたタイミングが一致した場合に、ゲーム操作データを生成してもよい。
【0062】
ゲーム操作データ供給部106は、基準値からのふれ具合によって、仮想弾丸の威力を変化させてもよい。たとえば、ゲーム操作データを生成するタイミングで、(センサ出力値−基準値)の絶対値が所定値以上である場合には、仮想弾丸の威力が通常よりも高くなるゲーム操作データを生成してもよい。
【0063】
アプリケーション処理部110は、ゲーム操作データをゲームキャラクタの動作に反映した画像信号、音声信号を生成し、出力部112から画像表示装置3および音声出力装置4のそれぞれに供給する。具体的にアプリケーション処理部110は、ゲーム操作データからゲーム中の仮想弾を連射させる画像信号、音声信号を生成し、画像表示装置3、音声出力装置4のそれぞれに供給する。このようにアプリケーション処理部110は、コントローラ20の振動の振動数や振幅に対応して、ゲーム中の連射速度や弾丸の到達距離を調整したゲーム画像信号およびゲーム音声信号を生成し、コントローラ20の現実の振動と、ゲーム中の連射速度とを融合した新しいゲームの世界観を実現する。これにより、連射時にはコントローラ20が振動し、また連射を終了するとコントローラ20の振動が停止するゲームを実現できる。
【0064】
なお、以上はシューティングゲームにおける処理について説明したが、センサ出力は、たとえば格闘ゲームにおいて、キャラクタのパンチやキックの繰り出し数や、パンチの威力などに反映されてもよい。具体的には、センサ出力の周期が短ければ、パンチやキックの繰り出し数を多くし、センサ出力の周期が長ければ、パンチやキックの繰り出し数を少なくする。このとき同時に、センサ出力の振幅が大きければ、パンチやキックの威力を大きくし、振幅が小さければ、威力を小さくしてもよい。
【0065】
本実施例では下側操作ボタン34に対して、振動子80を駆動させるスイッチとしての機能を割り当てているが、この割り当ては、ゲーム装置10により制御されてもよい。たとえば、ゲーム中で連射が可能になったとき、ゲーム装置10は、下側操作ボタン34への操作入力が振動制御部70に直接供給されるようにコントローラ20内部の入出力パスを設定してもよい。ゲーム中で連射が実行できないときは、下側操作ボタン34への操作入力は、他の操作ボタンへの操作入力と同様に扱われる。
【0066】
たとえばアプリケーション処理部110は、アプリケーションの進行状況により、連射機能が実現可能か否かを判断し、可能である場合に、コントローラ20における下側操作ボタン34から振動制御部70へのパスを繋げるように制御する。また同様に、連射機能を実行しないときには、下側操作ボタン34から振動制御部70へのパスを遮断する。コントローラ20は、各操作ボタンの接続パスを規定するレジスタマップを複数種類有し、アプリケーション処理部110が、このレジスタマップの切替をコントローラ20のメイン制御部50に指示することにより、コントローラ20におけるパス制御が実行される。
【0067】
このようにしてゲーム装置10は、連射可能か否かの状況を認識することで、ゲーム操作データ供給部106は、連射可能な期間に送信されるセンサ情報を、連射用の入力として利用することができる。一方、ゲーム操作データ供給部106は、連射モードにない期間に送信されるセンサ情報を破棄してもよい。
【0068】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。たとえば、実施例では2つの振動子80が存在する場合について示したが、振動子80の数は1つであっても、3つ以上であってもよい。
【0069】
コントローラ20の振動は、下側操作ボタン34による操作量に応じて実行されるが、下側操作ボタン34の押し込み量が最大とはならない位置で、コントローラ20の振動が最大となるように構成されてもよい。たとえばコントローラ20の固有振動数と一致する振動数を、下側操作ボタン34の押し込み位置の中間地点に設定することで、ユーザが下側操作ボタン34を中間地点まで押し下げたときに最大の振動が得られるように構成することが可能である。
【0070】
図12は、ゲーム装置の構成の変形例を示す。上記した実施例においては、駆動制御信号がコントローラ20内で生成されることとしたが、図12に示すゲーム装置10は、コントローラ20から供給される操作情報から、駆動制御信号を生成する機能をもつ。図8に示すゲーム装置10の構成と比較すると、図12に示すゲーム装置10は、振動制御信号を生成する振動制御信号生成部108を備える点で相違する。
【0071】
アプリケーション処理部110は、ゲーム操作データ供給部106より所定の操作ボタンの操作情報を受け付けると、振動制御信号生成部108に、振動制御信号を生成するよう指示する。この所定の操作ボタンは、アプリケーション処理部110により振動子80を駆動させるためのスイッチとして割り当てられたボタンであり、たとえばアナログ入力を可能とする下側操作ボタン34であってよい。この変形例では、コントローラ20において、下側操作ボタン34への操作入力が、他の操作ボタンの操作情報とともに、無線通信モジュール72からゲーム装置10に送信される。下側操作ボタン34の操作情報は、無線通信モジュール100、通信制御部102、メイン制御部104およびゲーム操作データ供給部106を経由して、アプリケーション処理部110に供給される。
【0072】
振動制御信号生成部108は、アプリケーション処理部110からの指示により振動制御信号を生成し、メイン制御部104に供給する。通信制御部102は、メイン制御部104から振動制御信号を受け取ると、無線通信モジュール100からコントローラ20に振動制御信号を送信させる。
【0073】
コントローラ20において、メイン制御部50が振動制御信号を受け取ると、振動制御部70に供給する。この変形例においては、振動制御部70は、自ら振動制御信号を生成することなく、ゲーム装置10から送られる振動制御信号を利用して、振動子80を駆動する。実施例で説明したように、動きセンサで検出されたセンサ情報は、周期的に無線通信モジュール72よりゲーム装置10に送信される。振動制御信号生成部108が振動子80を駆動する振動制御信号を生成する間、送信されるセンサ情報は、連射用の入力としてアプリケーション処理部110により処理される。
【0074】
図13は、動きセンサの出力をフィルタ処理するフィルタ回路を示す。フィルタ回路92は、加速度センサ54および角速度センサ56と、ADC60の間に配置される。フィルタ回路92は、所定のカットオフ周波数をもつLPF96aと、所定の通過帯域をもつBPF96bを、スイッチ94により選択的に利用可能に構成される。たとえばLPF96aは15Hzのカットオフ周波数をもち、BPF96bは、15Hz以上の所定の範囲内の通過帯域を有して構成されてよい。また、スイッチ94は、LPF96aおよびBPF96bを経由しないバイパス経路96cを選択することも可能である。
【0075】
ユーザがコントローラ20を動かしたときの動きセンサの出力をゲーム操作データとして利用する場合、メイン制御部50は、スイッチ94によりセンサ出力をLPF96aに接続する。たとえば、コントローラ20を自動車のハンドルに見立てて、コントローラ20を動かすような場合である。このとき、ユーザによりコントローラ20に与えられる振動数は、大体15Hz程度が上限と考えられるため、センサ出力をLPF96aでフィルタ処理することで、ユーザの動作に起因するコントローラ20の動きを適切に抽出することが可能となる。なお、振動子80を駆動していない場合には、メイン制御部50が、スイッチ94によりセンサ出力をバイパス経路96cに接続してもよい。
【0076】
一方、振動子80の駆動に起因するコントローラ20の動きを抽出する場合、メイン制御部50は、スイッチ94によりセンサ出力をBPF96bに接続する。振動子80の駆動に起因してコントローラ20が振動する場合、コントローラ20の振動数は15Hzよりも高くなる。そこで、センサ出力をBPF96bでフィルタ処理することで、ユーザの動作に起因するコントローラ20の動き成分を除去して、振動子80の駆動に起因するコントローラ20の動きを適切に抽出することが可能となる。
【図面の簡単な説明】
【0077】
【図1】本発明の実施例にかかるゲームシステムの使用環境を示す図である。
【図2】コントローラの外観構成を示す図である。
【図3】コントローラの背面側の外観構成を示す図である。
【図4】コントローラの側面側の外観構成を示す図である。
【図5】コントローラの上側筐体を外して、下側筐体に固定される基板および振動子を露出させた状態を示す図である。
【図6】コントローラの内部構成を示す図である。
【図7】(a)は、操作ボタンの操作量と振動子に供給する駆動電圧の関係を示し、(b)は、操作ボタンの操作量と、振動子に供給するPWM信号のデューティ比の関係を示す図である。
【図8】ゲーム装置の構成を示す図である。
【図9】振動子の駆動に起因するコントローラの動きを検出したセンサ出力を示す図である。
【図10】振動子の振動に起因するコントローラの動きを検出したセンサ出力の具体例を示す図である。
【図11】図10に示すセンサ出力を時間軸上にプロットして結んだラインを示す図である。
【図12】ゲーム装置の構成の変形例を示す図である。
【図13】動きセンサの出力をフィルタ処理するフィルタ回路を示す図である。
【符号の説明】
【0078】
1・・・ゲームシステム、3・・・画像表示装置、4・・・音声出力装置、10・・・ゲーム装置、20・・・コントローラ、32・・・上側操作ボタン、34・・・下側操作ボタン、50・・・メイン制御部、52・・・入力受付部、54・・・加速度センサ、56・・・角速度センサ、58・・・センサユニット、60・・・ADC、62・・・アナログデジタル変換装置、64・・・メモリ、66・・・読出部、68・・・通信制御部、70・・・振動制御部、72・・・無線通信モジュール、80・・・振動子、82・・・モータ、84・・・締結爪、86・・・偏心部材、88・・・基板、90・・・処理部、100・・・無線通信モジュール、102・・・通信制御部、104・・・メイン制御部、106・・・ゲーム操作データ供給部、108・・・振動制御信号生成部、110・・・アプリケーション処理部、112・・・出力部。
【技術分野】
【0001】
本発明は、振動子を備えたゲームコントローラ、およびそのゲームコントローラを備えたゲームシステムに関する。
【背景技術】
【0002】
シューティングゲームは、ゲームコントローラによりゲーム空間内のオブジェクトから仮想の弾丸を発射させて、敵オブジェクトにあてるゲームである。シューティングゲームでは、ゲームコントローラの任意のボタンが、仮想弾丸の発射スイッチに割り当てられ、ユーザがそのボタンを押下するたびに、弾丸が発射されるようになっている。
【0003】
弾丸を単位時間あたりに沢山発射させるために、最近ではゲームコントローラの所定のボタンに連射専用のスイッチが割り当てられたり、ゲームコントローラの所定のボタンに対して、ゲーム装置側で連射専用のスイッチをソフト的に割り当てることが行われている。このようなスイッチを利用することで、ユーザは、ボタンを連打することなく、単にボタンの押下状態を維持するだけで、簡単に連射を行える。従来、ゲームコントローラに設けられた感圧手段により、発射操作の圧力を感知して、発射弾丸数を決定するシューティングゲームを提案するものがある(たとえば特許文献1参照)。
【特許文献1】特表2003−519548号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
近年、ゲームコントローラに動きセンサを搭載して、ゲームコントローラの姿勢や動きそのものをゲーム装置への操作入力として利用することが現実化されている。ユーザがゲームコントローラを動かすと、動きセンサはゲームコントローラの傾きや回転量などを検出し、その検出値をゲーム装置に送信することで、従来からあるボタン操作とは異なるゲーム操作入力が実現される。たとえばレーシングゲームでは、ゲームコントローラが自動車のハンドルのように扱われて、ユーザは、ボタン操作よりもリアルな感覚をもってゲームを行うことができる。
【0005】
本発明者は、ゲームコントローラに搭載されている動きセンサを有効に利用することで、ゲーム装置に対して従来にない操作入力を実現することの可能性を見いだした。
【0006】
そこで本発明は、ゲームコントローラに搭載された動きセンサの出力をゲーム装置に対する操作入力として利用する技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明のある態様のゲームシステムは、ゲームコントローラと、ゲームアプリケーションを実行するゲーム装置とを備える。ゲームコントローラは、振動制御信号により駆動を制御される少なくとも1つの振動子と、振動子の駆動に起因する振動を検出する動きセンサと、動きセンサの出力をアナログデジタル変換するアナログデジタル変換器と、アナログデジタル変換されたセンサ出力をゲーム装置に供給する第1通信モジュールとを有する。ゲーム装置は、ゲームコントローラからセンサ出力を受け取る第2通信モジュールと、ゲームアプリケーションを処理するアプリケーション処理部と、受け取ったセンサ出力を、アプリケーション処理部にゲーム操作データとして供給する供給部とを有する。アプリケーション処理部は、供給部から受け取ったゲーム操作データをゲームアプリケーションの処理に反映させる。
【0008】
本発明の別の態様は、ユーザによるゲーム操作データをゲーム装置に伝送するゲームコントローラに関する。このゲームコントローラは、少なくとも1つの振動子と、振動子の駆動に起因する当該ゲームコントローラの動きを検出する動きセンサと、ユーザにより操作されて、振動子を駆動するための操作ボタンと、操作ボタンへの操作入力を振動制御信号に変換して振動子に供給する振動制御部と、動きセンサの出力をアナログデジタル変換するアナログデジタル変換器と、アナログデジタル変換されたセンサ出力をゲーム装置に供給する通信モジュールとを備える。
【0009】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0010】
本発明によると、ゲームコントローラに搭載された動きセンサの出力をゲーム装置に対する操作入力として利用する技術を提供することができる。
【発明を実施するための最良の形態】
【0011】
図1は、本発明の実施例にかかるゲームシステムの使用環境を示す。ゲームシステム1は、画像表示装置3、音声出力装置4、ゲーム装置10およびコントローラ20を備える。画像表示装置3、音声出力装置4およびコントローラ20は、ゲーム装置10に接続される。
【0012】
画像表示装置3は画像信号を出力するディスプレイであって、ゲーム装置10において生成された画像信号を受けて、ゲーム画面を表示する。音声出力装置4は音声を出力するスピーカであって、ゲーム装置10において生成された音声信号を受けて、ゲーム音声を出力する。画像表示装置3および音声出力装置4は、ゲームシステム1における出力装置を構成する。ゲーム装置10と出力装置は、AVケーブルなどの有線により接続されてもよく、また無線により接続されてもよい。またゲーム装置10と出力装置との間には、ネットワーク(LAN)ケーブルやワイヤレスLANなどで構築したホームネットワークが構築されてもよい。
【0013】
コントローラ20は、ユーザがゲーム中のキャラクタを動作させるゲーム操作データを入力するための入力装置であり、またゲーム装置10は、コントローラ20から供給されるゲーム操作データをもとにゲームアプリケーションを処理して、ゲームアプリケーションの処理結果を示す画像信号および音声信号を生成する処理装置である。なおゲーム装置10は、コントローラ20から供給される動きセンサの出力をゲーム操作データとして利用し、ゲームアプリケーションを処理する機能ももつ。なお、本実施例に示す技術は、ゲームアプリケーションに限らず、他の種類のアプリケーションを実行する処理装置を備えたエンタテインメントシステムにおいても実現できる。以下では、エンタテインメントシステムを代表して、ゲームアプリケーションを実行するゲームシステム1について説明する。
【0014】
コントローラ20は、ゲーム操作データをゲーム装置10に伝送する機能をもち、本実施例ではゲーム装置10との間で無線通信可能な無線コントローラとして構成される。コントローラ20とゲーム装置10は、Bluetooth(ブルートゥース)(登録商標)プロトコルを用いて無線接続を確立してもよい。ゲーム操作データの送受信において、ゲーム装置10は親機すなわちマスタとして機能し、コントローラ20は子機すなわちスレーブとして機能する。なおコントローラ20は、無線コントローラに限らず、ゲーム装置10とケーブルを介して接続される有線コントローラであってもよい。
【0015】
コントローラ20は、図示しないバッテリにより駆動され、ゲームを進行させるゲーム入力を行うための複数のボタンやキーを有して構成される。ユーザがコントローラ20のボタンやキーを操作すると、そのゲーム操作データが無線により周期的にゲーム装置10に送信される。またコントローラ20は、コントローラ20の3軸方向の加速度を検出する3軸加速度センサと、所定の軸回りの角速度を検出する角速度センサを有して構成される。3軸加速度センサおよび角速度センサは、コントローラ20の動きを検出する動きセンサを構成する。各センサの検出値は無線により周期的にゲーム装置10に送信され、ゲームの進捗状況に応じて、ゲーム操作データとして扱われる。たとえば、コントローラ20を自動車のハンドルに見立て、ユーザがコントローラ20をハンドルのように動かすことで、ゲーム中の自動車を動かすレーシングゲームにおいては、3軸加速度センサおよび角速度センサの出力値がゲーム操作データとして利用される。
【0016】
ゲーム装置10は、コントローラ20からゲームアプリケーションに関するゲーム操作データを受信し、ゲーム操作データに応じてゲーム進行を制御して、ゲーム画像信号およびゲーム音声信号を生成する。生成されたゲーム画像信号およびゲーム音声信号は、それぞれ画像表示装置3および音声出力装置4により出力される。
【0017】
近年のゲームシステムにおいて、モータなどの振動子を備えたゲームコントローラが普及している。ゲームキャラクタの状況にあわせて振動子が駆動されることで、仮想的な現実感をユーザに与えて、ゲームの魅力を高める効果がある。本実施例のゲームシステム1においては、コントローラ20が振動子を備え、この振動子の駆動に起因するコントローラ20の振動を動きセンサが検出して、その検出値をゲーム操作データとして利用することで、従来にないゲーム装置10に対する操作入力を実現する。
【0018】
コントローラ20は、自身を振動させる振動制御信号を、ユーザのボタン操作に応じて生成する機能をもつ。コントローラ20は、ボタンへの操作入力を振動制御信号に変換して、振動子に供給する。ユーザが所定のボタンを押下している間、振動制御信号が生成され続けて、振動子に供給されてもよい。またコントローラ20は、所定のボタンが押下されたときに振動開始信号を振動子に供給して、振動子を駆動し、所定のボタンの押下が終了したとき、すなわち所定のボタンが解放されたときに振動停止信号を振動子に供給して、振動子の駆動を停止してもよい。
【0019】
またゲーム装置10は、ゲームアプリケーションの進行状況や、ユーザのボタン操作に応じて、コントローラ20を振動させる振動制御信号をコントローラ20に送信する機能を有してもよい。コントローラ20は、振動開始信号を受信すると振動子を駆動し、振動停止信号を受信すると振動子の駆動を停止する。なおゲーム装置10は、振動子を駆動させるか否かを特定する振動制御信号を、送信フレームごとに送信してもよく、この場合、コントローラ20は、この振動制御信号にしたがって動作する。なお、コントローラ20において振動子に供給される振動制御信号は、PWM(パルス幅変調)信号であってよく、ゲーム装置10から供給される振動制御信号とは異なる信号形態をとってもよい。
【0020】
図2は、コントローラの外観構成を示す。コントローラ20には、方向キー21、アナログスティック27と、4種の操作ボタン26が設けられている。4種のボタン22〜25には、それぞれを区別するために、異なる色で異なる図形が記されている。すなわち、○ボタン22には赤色の丸、×ボタン23には青色のバツ、□ボタン24には紫色の四角形、△ボタン25には緑色の三角形が記されている。
【0021】
ユーザは左手で左側把持部28aを把持し、右手で右側把持部28bを把持して、コントローラ20を操作する。方向キー21、アナログスティック27、操作ボタン26は、ユーザが左側把持部28a、右側把持部28bを把持した状態で操作可能なように、筐体上面30に設けられる。
【0022】
左側把持部28aおよび右側把持部28bの筐体内部には、モータなどで構成される振動子が配置される。左右の振動子は、駆動を指示する振動制御信号を供給されると駆動され、その振動がコントローラ20の筐体に伝達されて、コントローラ20が振動する。またコントローラ20の筐体内部の中央付近には、コントローラ20の動作を制御するための基板が配置される。この基板には、既述した3軸加速度センサや角速度センサなども設けられている。なおコントローラ20の外郭を構成する筐体は、下側筐体と上側筐体とを嵌め合わせることで構成され、振動子および基板は、下側筐体に固定されている。
【0023】
基板上の3軸加速度センサおよび角速度センサなどの動きセンサは、コントローラ20の動きを検出するが、振動子が駆動されたときには、その駆動により生じるコントローラ20の振動成分も検出する。本実施例のゲームシステム1においては、振動子の駆動に起因して動きセンサにより検出されるコントローラ20の振動成分を、ゲームの操作データとして処理する。これにより、ユーザに対してコントローラ20の振動を感じさせながら、その振動そのものが、ゲームに対する操作入力として利用できる。コントローラ20の所定のボタンに、振動子を駆動させる振動制御信号を生成させるスイッチとしての機能を割り当て、同時に、振動子の駆動に起因するコントローラ20の振動を検出した動きセンサの検出値を、たとえばゲームの連射モードにおける操作入力として利用することで、ユーザは、ゲーム中で連射を行いながら、振動を感じることができ、現実感の高いゲームを体感できる。
【0024】
図3は、コントローラの背面側の外観構成を示す。筐体背面側からみて、筐体上面右方には方向キー21が設けられ、上面左方には操作ボタン26が設けられる。また、方向キー21および操作ボタン26の内側には、2つのアナログスティック27が設けられる。筐体背面29の中央部には、USBコネクタ46が設けられる。USBコネクタ46には、ゲーム装置10から延びるUSBケーブルが接続されて、コントローラ20の充電処理を行うことができる。なおUSBケーブルが接続されると、コントローラ20を有線コントローラとして利用することも可能である。
【0025】
筐体背面29側には、上側操作ボタン32a、上側操作ボタン32b、下側操作ボタン34a、下側操作ボタン34bが筐体背面長手方向の左右対称な位置にそれぞれ設けられる。上側操作ボタン32aおよび上側操作ボタン32bは、ユーザが左側把持部28a、右側把持部28bを把持した状態で、それぞれ左手および右手の人差指の先端で操作される位置に形成され、下側操作ボタン34aおよび下側操作ボタン34bは、それぞれ左手および右手の中指の先端で操作される位置に形成される。
【0026】
上側操作ボタン32aおよび上側操作ボタン32bは、プッシュ式のボタンとして構成される。上側操作ボタン32からの入力は、押下されることで実行され、オンオフのデジタル入力を可能とする。一方、下側操作ボタン34aおよび下側操作ボタン34bは、回動支持されたトリガー式のボタンとして構成される。下側操作ボタン34は、回動可能な入力インタフェースであって、回動量に応じたアナログ入力を可能とする。なお、上側操作ボタン32についても同様にアナログ入力を可能とする入力インタフェースとして構成されてもよい。下側操作ボタン34は、回動軸により回動可能に支持された状態で、ばねなどにより筐体外向きに付勢されている。これにより、ユーザから押下されない状態では、下側操作ボタン34が筐体から離れる方向に付勢され、その位置を維持する。
【0027】
コントローラ20において、下側操作ボタン34は、筐体背面29の長手方向に実質的に平行に設けられた回転軸により回動可能に支持されて構成される。下側操作ボタン34は、その上側部分を回動支持され、ユーザは下側操作ボタン34の表面の下側を押下することで、下側操作ボタン34を筐体内に収容する方向に回動させることができる。下側操作ボタン34の表面の下端部には、回動軸から離れる向き、具体的には下向きないしは斜め下向きに張り出した突起部が形成される。したがって突起部は、回転軸よりも筐体裏面側に配置される。
【0028】
下側操作ボタン34の回動量検出手段として、静電容量式のセンサが採用されてもよい。静電容量式センサは、2つの電極間における静電容量の変化を検出して、下側操作ボタン34の回動量を検知することができる。コントローラ20において、電極間の静電容量をアナログ値として取得する検出手段が設けられ、検出手段により取得されたアナログ値が、回動量に応じたデジタル値に変換される。これにより、コントローラ20は、回動量に応じた入力値を取得することが可能となる。
【0029】
他の例として、下側操作ボタン34の回動量検出手段に、抵抗変化を検出するセンサを採用してもよい。たとえば、筐体内部に所定の抵抗値で2端子間を導通している回路パターンを用意し、下側操作ボタン34の回動方向端部に導電ゴムを設ける。下側操作ボタン34が回動されると、回動方向端部に設けられた導電ゴムが筐体内部の回路パターンに接触する。導電ゴムは、回動量に応じて回路パターンとの接触面積が変化するように変形可能に形成され、これにより回動量に応じて2端子間の抵抗値が変化する。この抵抗値を検出することで、回動量を検出することができ、これによりコントローラ20は、回動量に応じた入力値を取得することが可能となる。
【0030】
図4(a)および図4(b)は、コントローラの側面側の外観構成を示す。なお図4は、コントローラ20の右側面から見える下側操作ボタン34bを示しているが、左側面から見える下側操作ボタン34aについても同様の構造を有している。図4(a)は、下側操作ボタン34bを回動しない状態を示し、図4(b)は、下側操作ボタン34bを回動軸36bを中心に最大に回動した状態を示す。突起部は、回動されると、筐体の外表面、具体的には開口部の縁部に接触して回動動作を制限するストッパとして機能する。なお図示するように、開口部を形成する筐体外郭部分を下方に向けて傾斜させることで、下側操作ボタン34の回動量すなわちストローク量を大きくすることができる。ストローク量を大きくすることで、入力可能なアナログ値の範囲を増やすことができる。
【0031】
本実施例のゲームシステム1では、下側操作ボタン34に、筐体内部に設けられた振動子を駆動するスイッチの機能が割り当てられる。下側操作ボタン34a、34bは、それぞれ左側、右側に配置される振動子を駆動するスイッチ機能を割り当てられてもよいが、いずれか一方の下側操作ボタン34に、両方の振動子を駆動するスイッチ機能を割り当てられてもよい。
【0032】
ゲームシステム1では、下側操作ボタン34の回動量に応じて、振動子の振動数を制御してもよく、また振動の振幅を制御してもよい。振動子の駆動に起因して筐体が振動すると、動きセンサが、その振動を検出する。ゲームシステム1では、この検出した振動をもとに、ゲームの連射機能を実現する。
【0033】
図5は、コントローラの上側筐体を外して、下側筐体に固定される基板および振動子を露出させた状態を示す。基板88は横長の形状を有し、下側筐体の前方中央位置に固定される。振動子80aは、モータ82aと、モータシャフトの先端に取り付けられた偏心部材86aを有し、一対の締結爪84aにより挟持されて、下側筐体の左側把持部28aの位置に固定される。同様に振動子80bは、モータ82bと偏心部材86bを有し、一対の締結爪84bにより挟持されて、下側筐体の右側把持部28bの位置に固定される。偏心部材86は半円形状を有して、モータシャフトに対して偏心して固定され、モータシャフトが回転すると、筐体を振動させる。
【0034】
図6は、コントローラの内部構成を示す。コントローラ20は、処理部90を有し、さらに、モータと偏心部材から構成される振動子80a、80bと、無線通信モジュール72と、USBコネクタ46を備える。無線通信モジュール72は、ゲーム装置10の無線通信モジュールとの間でデータを無線で送受信する機能をもつ。またUSBコネクタ46に、一端がゲーム装置10のUSBコネクタに接続されているUSBケーブルの他端が挿入されると、コントローラ20は、ゲーム装置10との間でデータを有線で送受信することができる。処理部90は、コントローラ20における所期の処理を実行する。処理部90および無線通信モジュール72の機能は、筐体内部に設けられる基板88に作り込まれた回路として実現されてもよい。
【0035】
処理部90は、メイン制御部50、入力受付部52、センサユニット58、アナログデジタル変換装置62、メモリ64、読出部66、通信制御部68および振動制御部70を備える。通信制御部68は、無線通信モジュール72との間で必要なデータの送受を行う。以下では、コントローラ20とゲーム装置10の間で無線通信が行われる場合について説明するが、コントローラ20とゲーム装置10の間でUSBケーブルを介した通信が行われてもよい。
【0036】
入力受付部52は、方向キー21、操作ボタン26、アナログスティック27、上側操作ボタン32などの入力部から操作入力を受け付け、メイン制御部50に送る。メイン制御部50は、受け取った操作情報をメモリ64に供給し、記憶させる。各入力部からの操作情報は、メモリ64においてそれぞれに割り当てられる領域に上書きして記憶される。
【0037】
通信制御部68は、所定の周期で無線通信モジュール72の送信処理を制御する。ゲーム装置10のゲーム画像のフレーム周期は1/60秒に設定されているため、無線通信モジュール72の送信周期は、1/60秒以下の時間、たとえば11.25m秒に設定される。読出部66は、無線通信モジュール72の送信周期にあわせてメモリ64からデータを読み出し、通信制御部68に供給する。各入力部からの情報は、それぞれの記憶領域において上書き保存されているため、読出部66は、最新のゲーム操作データを通信制御部68に供給できる。
【0038】
センサユニット58は、加速度センサ54と角速度センサ56を有する。センサユニット58が3軸加速度センサを含む場合、センサユニット58は、3つの加速度センサ54を有して構成される。加速度センサ54は、所定の軸方向におけるコントローラ20の動きを検出し、角速度センサ56は、所定の軸回りのコントローラ20の動きを検出する。本実施例において、加速度センサ54および/または角速度センサ56が、振動子80の駆動に起因するコントローラ20の振動を検出すると、その検出値は、ゲームアプリケーションのゲーム操作データとして利用され、具体的には連射機能の実行に利用される。
【0039】
アナログデジタル変換装置62は、複数のアナログデジタル変換器(ADC)60を有する。ADC60は、センサユニット58から出力されるアナログ信号をデジタル信号に変換する。サンプリング周期は、無線通信モジュール72による送信周期と比較して短く設定されることが好ましく、たとえば2m秒程度であってよい。アナログデジタル変換装置62は、固定のサンプリング周期を保持してもよく、またメイン制御部50によりサンプリング周期を所望に制御されてもよい。各ADC60は、サンプリング値を、メモリ64において割り当てられた領域に上書きする。
【0040】
既述したように、読出部66は、無線通信モジュール72の送信周期で特定される送信タイミングにあわせてメモリ64からデータを読み出し、通信制御部68に供給する。各ADC60から供給されるセンサ出力値は、それぞれの記憶領域において上書き保存されているため、読出部66は、最新のセンサ情報を通信制御部68に供給できる。通信制御部68は、無線通信モジュール72から、入力受付部52で受け付けた操作ボタン26などの操作情報とともに、動きセンサ、すなわち加速度センサ54および角速度センサ56により取得されたセンサ情報をゲーム操作データとして、ゲーム装置10に送信させる。
【0041】
本実施例のコントローラ20において、入力受付部52は、下側操作ボタン34からの操作入力を受け付けると、振動制御部70に送る。本実施例において下側操作ボタン34は、ユーザにより操作されて、操作量すなわち回動量に応じたアナログ入力を可能とし、振動子80を駆動するためのボタンである。振動制御部70は、受け取った操作情報を振動制御信号に変換して、振動子80に供給する。
【0042】
振動制御部70は、下側操作ボタン34の操作量に応じて、振動子80の振動数を定める機能をもつ。振動制御部70は、操作量が大きければ、振動子80の振動数を高くする振動制御信号を生成し、また操作量が小さければ、振動子80の振動数を低くする振動制御信号を生成する。
【0043】
図7(a)は、操作ボタンの操作量と、振動子に供給する駆動電圧の関係を示す。下側操作ボタン34の操作量が大きいほど、振動子80に供給する駆動電圧を大きくすることで、振動子80の振動数を高くできる。これにより、ユーザが下側操作ボタン34を押し込むほど、振動子80が高い振動数で駆動されて、コントローラ20の振動を多くできる。
【0044】
また振動制御部70は、下側操作ボタン34の操作量に応じて、振動子80の振動振幅を定める機能を有してもよい。たとえば振動制御部70は、振動子80に供給する振動制御信号のデューティ比を調整することで、振動子80の振動振幅を定めてもよい。振動制御部70は、操作量が大きければ、振動子80の振動振幅を大きくする振動制御信号を生成し、また操作量が小さければ、振動子80の振動振幅を小さくする振動制御信号を生成してもよい。
【0045】
図7(b)は、操作ボタンの操作量と、振動子に供給するPWM信号のデューティ比の関係を示す。下側操作ボタン34の操作量が大きいほど、振動子80に供給する振動制御信号のデューティ比を高くすることで、振動子80の振動振幅を大きくできる。これにより、ユーザが下側操作ボタン34を押し込むほど、振動子80が大きい振動振幅で駆動されて、コントローラ20の振動を大きくできる。
【0046】
以上のように、振動制御部70は、下側操作ボタン34の操作量に応じて振動子80の振動数および/または振動振幅を調整する振動制御信号を生成し、振動子80に供給する。これにより、コントローラ20は、下側操作ボタン34の操作量に応じた振動数および/または振動振幅で振動され、ユーザは、その振動を体感できる。このとき、加速度センサ54および角速度センサ56で構成される動きセンサは、振動子80の駆動に起因するコントローラ20の振動を検出する。このセンサ出力は、無線通信モジュール72からゲーム装置10に送信されて、連射機能を実行させるゲーム操作データとして利用される。
【0047】
図8は、ゲーム装置の構成を示す。ゲーム装置10は、無線通信モジュール100、USBコネクタ101、通信制御部102、メイン制御部104、ゲーム操作データ供給部106、アプリケーション処理部110および出力部112を備える。本実施例におけるゲーム装置10の処理機能は、CPU、メモリ、メモリにロードされたプログラムなどによって実現され、ここではそれらの連携によって実現される構成を描いている。プログラムは、ゲーム装置10に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。図示の例では、ゲーム装置10のCPUが、通信制御部102、メイン制御部104、ゲーム操作データ供給部106、アプリケーション処理部110としての機能を実現する。なお、ハードウェアの構成上、ゲーム装置10は複数のCPUを有してもよい。このような場合、1つのCPUが無線通信モジュール100の動作を制御する通信制御部102として機能し、別のCPUがゲーム装置10全体の動作を制御するメイン制御部104として機能し、別のCPUがゲームアプリケーションを実行するアプリケーション処理部110として機能し、また別のCPUがゲーム操作データをアプリケーション処理部110に供給するゲーム操作データ供給部106として機能してもよい。
【0048】
通信制御部102は、無線通信モジュール100との間で必要なデータを送受して、無線通信モジュール100の通信処理を制御し、無線通信モジュール100は、コントローラ20の無線通信モジュール72との間で無線通信を確立する。無線通信モジュール100および無線通信モジュール72は、たとえばBluetooth(登録商標)プロトコルによる接続を確立する。コントローラ20の無線通信モジュール72からは、所定の周期でゲーム操作データなどのデータが送信され、通信制御部102は、無線通信モジュール100で受信したデータをメイン制御部104に供給する。なおUSBコネクタ101に、一端がコントローラ20のUSBコネクタ46に接続されているUSBケーブルの他端が挿入されている場合には、通信制御部102が、USBケーブルを介してコントローラ20との間の通信処理を制御してもよい。
【0049】
メイン制御部104は、コントローラ20から供給された操作情報およびセンサ情報をゲーム操作データ供給部106に供給する。ゲーム操作データ供給部106は、受け取った操作情報およびセンサ情報を、ゲーム操作データに変換して、アプリケーション処理部110に供給する。ゲーム操作データ供給部106は、ユーザから所定の入力があったときに、連射モードにおけるゲーム操作データの生成処理を実行してもよい。たとえばユーザは2つの下側操作ボタン34a、34bを同時押しすることで連射モードへの移行、終了を指示することができ、ゲーム操作データ供給部106は、下側操作ボタン34a、34bの同時押しを検出して、連射モード用のゲーム操作データの生成タイミングを判断してもよい。アプリケーション処理部110は、ゲーム操作データ供給部106から受け取ったゲーム操作データをゲームアプリケーションの処理に反映する。具体的に、アプリケーション処理部110は、センサ情報に対応するゲーム操作データを利用して、ゲーム中の連射モードを実行する。
【0050】
図9は、振動子の駆動に起因するコントローラの動きを検出したセンサ出力を示す。このセンサ出力はZ軸成分(垂直成分)の加速度センサ出力であってもよく、また他の軸成分の加速度センサ出力であってもよく、さらには角速度センサ出力であってもよい。図9(a)は、低い振動数で振動子が駆動されたときのセンサ出力を示し、図9(b)は、相対的に高い振動数で振動子が駆動されたときのセンサ出力を示す。ゲーム操作データ供給部106は、このセンサ情報をゲーム操作データに変換してアプリケーション処理部110に供給する。
【0051】
ゲーム操作データ供給部106は、たとえばセンサ出力の周期を測定して、連射モードにおける単位時間あたりの仮想弾丸の発射数を決定し、ゲーム操作データとしてアプリケーション処理部110に供給してもよい。センサ出力の周期が短いことは、振動子80が高い振動数で駆動されていることを意味するが、コントローラ20を激しく振動させ、同時にゲーム中では、連射の単位時間あたりの弾丸の発射数を増やすことで、コントローラ20の振動と、弾丸の発射数との関係を、ユーザに体感させることができる。すなわち、この場合は、コントローラ20の振動数が高いほど、ゲームキャラクタが発射する弾丸数が多くなるため、ユーザに対して、激しく弾丸を発射している仮想体験を与えることが可能となる。
【0052】
またゲーム操作データ供給部106は、センサ出力の振幅を測定して、連射モードにおける単位時間あたりの仮想弾丸の発射数を決定し、ゲーム操作データとしてアプリケーション処理部110に供給してもよい。センサ出力の振幅が大きいことは、コントローラ20の動きが大きいことを意味するが、コントローラ20を大きく振動させ、同時にゲーム中では、連射の単位時間あたりの弾丸の発射数を増やすことで、コントローラ20の振動と、弾丸の発射数との関係を、ユーザに体感させることができる。すなわち、この場合は、ゲームキャラクタが発射する弾丸数が多いほど、コントローラ20の振動振幅が大きくなるため、ユーザに対して、激しく弾丸を発射している仮想体験を与えることが可能となる。
【0053】
なお、ゲーム操作データ供給部106は、センサ出力の振幅を測定して、弾丸の飛距離を決定してもよい。すなわち、センサ出力の振幅が大きければ、弾丸の飛距離を長くし、センサ出力の振幅が小さければ、弾丸の飛距離を短くしてもよい。これにより、コントローラ20の振動と、弾丸の飛距離との関係を、ユーザに体感させることができる。なお、ゲーム操作データ供給部106は、センサ出力の周期により単位時間あたりの仮想弾丸の発射数を決定し、同時にセンサ出力の振幅により弾丸の飛距離を決定することも可能である。
【0054】
図10は、振動子の振動に起因するコントローラの動きを検出したセンサ出力の具体例を示す。このセンサ出力は、10m秒ごとに送信されるX軸成分の加速度センサ出力を示す。図11は、図10に示すセンサ出力を時間軸上にプロットして結んだラインを示す。
【0055】
ゲーム操作データ供給部106は、センサ出力に対して基準値を設定し、センサ出力が基準値以下の値から基準値を超えたこと、またはセンサ出力が基準値より高い値から基準値以下となったことを検出すると、仮想弾丸を発射させるゲーム操作データをアプリケーション処理部110に供給してもよい。基準値は所定の固定値であってもよいが、後述するように環境にあわせて設定されてもよい。図10、図11の例では、ゲーム操作データ供給部106は、基準値をたとえば512に設定し、基準値である512を超えたときに、一発の仮想弾丸の発射をさせるゲーム操作データを生成して、アプリケーション処理部110に供給する。0〜200m秒までの間でみれば、30m秒、50m秒、80m秒、110m秒、140m秒、170m秒、200m秒のタイミングで、センサ出力値が512以下の値から512を超えている。ゲーム操作データ供給部106は、基準値を超えたことを判定すると、仮想弾丸を発射させるゲーム操作データを生成する。したがって、この例では、200m秒の間に、計7発の仮想弾丸が連射されることになる。
【0056】
なおアプリケーション処理部110は、ユーザによる所定の操作ボタン26の押下操作についてのゲーム操作データを受けると、仮想弾丸を発射するように処理できる。具体的には、所定の操作ボタン26のオン状態(押下状態)、オフ状態(解放状態)を「0」、「1」の2値信号として扱い、操作ボタン26の状態がオン状態からオフ状態に遷移するときに仮想弾丸の発射処理を実行する。すなわちアプリケーション処理部110は、所定の操作ボタン26の状態値(操作データ)が「0」から「1」に遷移するときに、仮想弾丸を発射するように処理する。これを利用して、ゲーム操作データ供給部106は、基準値以下のセンサ出力を「0」に変換し、基準値よりも高いセンサ出力を「1」に変換して、その変換値をアプリケーション処理部110にゲーム操作データとして供給してもよい。アプリケーション処理部110は、操作ボタン26の状態値と同様にセンサ出力の変換値を処理すると、変換値が「0」から「1」に遷移するときに、仮想弾丸を発射するように処理することができる。これにより、センサ出力が基準値以下の値から基準値を超えたときに仮想弾丸が発射されるようになり、短時間で複数発の仮想弾丸を連射することが可能となる。
【0057】
ゲーム操作データ供給部106は、センサ出力が基準値を超えた回数が所定回数になったときに、仮想弾丸を発射させるゲーム操作データを生成してもよい。ゲーム操作データ供給部106は、センサ出力が基準値を超えた回数をカウントし、所定回数に1回の割合でゲーム操作データを生成する。これによりゲーム操作データ供給部106は、連射速度を調整することが可能となる。
【0058】
ゲーム操作データ供給部106は、送信されてくる操作情報を監視し、下側操作ボタン34の操作入力が含まれていなかった状態から、下側操作ボタン34の操作入力がなされたことを判定すると、その直前のセンサ出力を基準値として設定してもよい。すなわちゲーム操作データ供給部106は、操作情報の内容を監視して、下側操作ボタン34の操作により振動が開始されたことを判定すると、振動開始直前のセンサ出力値を基準値として採用する。振動開始前のセンサ出力値を基準として利用することで、その基準値を中心として上下するセンサ出力を取得できることが期待できる。
【0059】
またゲーム操作データ供給部106は、下側操作ボタン34の操作入力がなかった状態から操作入力がなされたことを検出すると、その後の所定数のセンサ出力の平均値を算出して、その平均値を基準値として採用してもよい。図10、図11を参照して、ゲーム操作データ供給部106は、振動開始から50m秒までのたとえば5回分のセンサ出力値を平均し((502+512+515+502+514)/5)、平均値509を基準値として設定する。振動中のセンサ出力値をもとに基準値を求めることで、コントローラ20の姿勢などの実際の使用環境に即した基準値を設定することが可能となる。
【0060】
なお、設定した基準値に対して、センサ出力が所定回数連続して高い場合、または低い場合には、ゲーム操作データ供給部106は基準値を変更してもよい。たとえば10回連続してセンサ出力が基準値よりも高いような場合には、設定した基準値が低すぎることが分かる。したがってゲーム操作データ供給部106は、センサ出力が基準値に対して連続して高くなるまたは低くなる回数をカウントし、そのカウント数が所定回数に到達したときに、基準値を変更する。ゲーム操作データ供給部106は、所定数のセンサ出力値を平均して基準値を再設定してもよく、また設定されている基準値に所定値を加算または減算することで、基準値を再設定してもよい。
【0061】
なお図10、図11にはX軸の加速度成分を示したが、ゲーム操作データ供給部106は、別軸の加速度成分を利用してゲーム操作データを生成してもよい。またゲーム操作データ供給部106は複数軸の加速度成分を利用してゲーム操作データを生成してもよい。たとえばゲーム操作データ供給部106は、X軸とY軸の加速度成分から基準値を超えたタイミングを判定し、両軸において判定されたタイミングが一致した場合に、ゲーム操作データを生成してもよい。
【0062】
ゲーム操作データ供給部106は、基準値からのふれ具合によって、仮想弾丸の威力を変化させてもよい。たとえば、ゲーム操作データを生成するタイミングで、(センサ出力値−基準値)の絶対値が所定値以上である場合には、仮想弾丸の威力が通常よりも高くなるゲーム操作データを生成してもよい。
【0063】
アプリケーション処理部110は、ゲーム操作データをゲームキャラクタの動作に反映した画像信号、音声信号を生成し、出力部112から画像表示装置3および音声出力装置4のそれぞれに供給する。具体的にアプリケーション処理部110は、ゲーム操作データからゲーム中の仮想弾を連射させる画像信号、音声信号を生成し、画像表示装置3、音声出力装置4のそれぞれに供給する。このようにアプリケーション処理部110は、コントローラ20の振動の振動数や振幅に対応して、ゲーム中の連射速度や弾丸の到達距離を調整したゲーム画像信号およびゲーム音声信号を生成し、コントローラ20の現実の振動と、ゲーム中の連射速度とを融合した新しいゲームの世界観を実現する。これにより、連射時にはコントローラ20が振動し、また連射を終了するとコントローラ20の振動が停止するゲームを実現できる。
【0064】
なお、以上はシューティングゲームにおける処理について説明したが、センサ出力は、たとえば格闘ゲームにおいて、キャラクタのパンチやキックの繰り出し数や、パンチの威力などに反映されてもよい。具体的には、センサ出力の周期が短ければ、パンチやキックの繰り出し数を多くし、センサ出力の周期が長ければ、パンチやキックの繰り出し数を少なくする。このとき同時に、センサ出力の振幅が大きければ、パンチやキックの威力を大きくし、振幅が小さければ、威力を小さくしてもよい。
【0065】
本実施例では下側操作ボタン34に対して、振動子80を駆動させるスイッチとしての機能を割り当てているが、この割り当ては、ゲーム装置10により制御されてもよい。たとえば、ゲーム中で連射が可能になったとき、ゲーム装置10は、下側操作ボタン34への操作入力が振動制御部70に直接供給されるようにコントローラ20内部の入出力パスを設定してもよい。ゲーム中で連射が実行できないときは、下側操作ボタン34への操作入力は、他の操作ボタンへの操作入力と同様に扱われる。
【0066】
たとえばアプリケーション処理部110は、アプリケーションの進行状況により、連射機能が実現可能か否かを判断し、可能である場合に、コントローラ20における下側操作ボタン34から振動制御部70へのパスを繋げるように制御する。また同様に、連射機能を実行しないときには、下側操作ボタン34から振動制御部70へのパスを遮断する。コントローラ20は、各操作ボタンの接続パスを規定するレジスタマップを複数種類有し、アプリケーション処理部110が、このレジスタマップの切替をコントローラ20のメイン制御部50に指示することにより、コントローラ20におけるパス制御が実行される。
【0067】
このようにしてゲーム装置10は、連射可能か否かの状況を認識することで、ゲーム操作データ供給部106は、連射可能な期間に送信されるセンサ情報を、連射用の入力として利用することができる。一方、ゲーム操作データ供給部106は、連射モードにない期間に送信されるセンサ情報を破棄してもよい。
【0068】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。たとえば、実施例では2つの振動子80が存在する場合について示したが、振動子80の数は1つであっても、3つ以上であってもよい。
【0069】
コントローラ20の振動は、下側操作ボタン34による操作量に応じて実行されるが、下側操作ボタン34の押し込み量が最大とはならない位置で、コントローラ20の振動が最大となるように構成されてもよい。たとえばコントローラ20の固有振動数と一致する振動数を、下側操作ボタン34の押し込み位置の中間地点に設定することで、ユーザが下側操作ボタン34を中間地点まで押し下げたときに最大の振動が得られるように構成することが可能である。
【0070】
図12は、ゲーム装置の構成の変形例を示す。上記した実施例においては、駆動制御信号がコントローラ20内で生成されることとしたが、図12に示すゲーム装置10は、コントローラ20から供給される操作情報から、駆動制御信号を生成する機能をもつ。図8に示すゲーム装置10の構成と比較すると、図12に示すゲーム装置10は、振動制御信号を生成する振動制御信号生成部108を備える点で相違する。
【0071】
アプリケーション処理部110は、ゲーム操作データ供給部106より所定の操作ボタンの操作情報を受け付けると、振動制御信号生成部108に、振動制御信号を生成するよう指示する。この所定の操作ボタンは、アプリケーション処理部110により振動子80を駆動させるためのスイッチとして割り当てられたボタンであり、たとえばアナログ入力を可能とする下側操作ボタン34であってよい。この変形例では、コントローラ20において、下側操作ボタン34への操作入力が、他の操作ボタンの操作情報とともに、無線通信モジュール72からゲーム装置10に送信される。下側操作ボタン34の操作情報は、無線通信モジュール100、通信制御部102、メイン制御部104およびゲーム操作データ供給部106を経由して、アプリケーション処理部110に供給される。
【0072】
振動制御信号生成部108は、アプリケーション処理部110からの指示により振動制御信号を生成し、メイン制御部104に供給する。通信制御部102は、メイン制御部104から振動制御信号を受け取ると、無線通信モジュール100からコントローラ20に振動制御信号を送信させる。
【0073】
コントローラ20において、メイン制御部50が振動制御信号を受け取ると、振動制御部70に供給する。この変形例においては、振動制御部70は、自ら振動制御信号を生成することなく、ゲーム装置10から送られる振動制御信号を利用して、振動子80を駆動する。実施例で説明したように、動きセンサで検出されたセンサ情報は、周期的に無線通信モジュール72よりゲーム装置10に送信される。振動制御信号生成部108が振動子80を駆動する振動制御信号を生成する間、送信されるセンサ情報は、連射用の入力としてアプリケーション処理部110により処理される。
【0074】
図13は、動きセンサの出力をフィルタ処理するフィルタ回路を示す。フィルタ回路92は、加速度センサ54および角速度センサ56と、ADC60の間に配置される。フィルタ回路92は、所定のカットオフ周波数をもつLPF96aと、所定の通過帯域をもつBPF96bを、スイッチ94により選択的に利用可能に構成される。たとえばLPF96aは15Hzのカットオフ周波数をもち、BPF96bは、15Hz以上の所定の範囲内の通過帯域を有して構成されてよい。また、スイッチ94は、LPF96aおよびBPF96bを経由しないバイパス経路96cを選択することも可能である。
【0075】
ユーザがコントローラ20を動かしたときの動きセンサの出力をゲーム操作データとして利用する場合、メイン制御部50は、スイッチ94によりセンサ出力をLPF96aに接続する。たとえば、コントローラ20を自動車のハンドルに見立てて、コントローラ20を動かすような場合である。このとき、ユーザによりコントローラ20に与えられる振動数は、大体15Hz程度が上限と考えられるため、センサ出力をLPF96aでフィルタ処理することで、ユーザの動作に起因するコントローラ20の動きを適切に抽出することが可能となる。なお、振動子80を駆動していない場合には、メイン制御部50が、スイッチ94によりセンサ出力をバイパス経路96cに接続してもよい。
【0076】
一方、振動子80の駆動に起因するコントローラ20の動きを抽出する場合、メイン制御部50は、スイッチ94によりセンサ出力をBPF96bに接続する。振動子80の駆動に起因してコントローラ20が振動する場合、コントローラ20の振動数は15Hzよりも高くなる。そこで、センサ出力をBPF96bでフィルタ処理することで、ユーザの動作に起因するコントローラ20の動き成分を除去して、振動子80の駆動に起因するコントローラ20の動きを適切に抽出することが可能となる。
【図面の簡単な説明】
【0077】
【図1】本発明の実施例にかかるゲームシステムの使用環境を示す図である。
【図2】コントローラの外観構成を示す図である。
【図3】コントローラの背面側の外観構成を示す図である。
【図4】コントローラの側面側の外観構成を示す図である。
【図5】コントローラの上側筐体を外して、下側筐体に固定される基板および振動子を露出させた状態を示す図である。
【図6】コントローラの内部構成を示す図である。
【図7】(a)は、操作ボタンの操作量と振動子に供給する駆動電圧の関係を示し、(b)は、操作ボタンの操作量と、振動子に供給するPWM信号のデューティ比の関係を示す図である。
【図8】ゲーム装置の構成を示す図である。
【図9】振動子の駆動に起因するコントローラの動きを検出したセンサ出力を示す図である。
【図10】振動子の振動に起因するコントローラの動きを検出したセンサ出力の具体例を示す図である。
【図11】図10に示すセンサ出力を時間軸上にプロットして結んだラインを示す図である。
【図12】ゲーム装置の構成の変形例を示す図である。
【図13】動きセンサの出力をフィルタ処理するフィルタ回路を示す図である。
【符号の説明】
【0078】
1・・・ゲームシステム、3・・・画像表示装置、4・・・音声出力装置、10・・・ゲーム装置、20・・・コントローラ、32・・・上側操作ボタン、34・・・下側操作ボタン、50・・・メイン制御部、52・・・入力受付部、54・・・加速度センサ、56・・・角速度センサ、58・・・センサユニット、60・・・ADC、62・・・アナログデジタル変換装置、64・・・メモリ、66・・・読出部、68・・・通信制御部、70・・・振動制御部、72・・・無線通信モジュール、80・・・振動子、82・・・モータ、84・・・締結爪、86・・・偏心部材、88・・・基板、90・・・処理部、100・・・無線通信モジュール、102・・・通信制御部、104・・・メイン制御部、106・・・ゲーム操作データ供給部、108・・・振動制御信号生成部、110・・・アプリケーション処理部、112・・・出力部。
【特許請求の範囲】
【請求項1】
ゲームコントローラと、ゲームアプリケーションを実行するゲーム装置とを備えたゲームシステムであって、
前記ゲームコントローラは、
振動制御信号により駆動を制御される少なくとも1つの振動子と、
前記振動子の駆動に起因する振動を検出する動きセンサと、
前記動きセンサの出力をアナログデジタル変換するアナログデジタル変換器と、
アナログデジタル変換されたセンサ出力を前記ゲーム装置に供給する第1通信モジュールとを有し、
前記ゲーム装置は、
前記ゲームコントローラからセンサ出力を受け取る第2通信モジュールと、
ゲームアプリケーションを処理するアプリケーション処理部と、
受け取ったセンサ出力を、前記アプリケーション処理部にゲーム操作データとして供給する供給部とを有し、
前記アプリケーション処理部は、前記供給部から受け取ったゲーム操作データをゲームアプリケーションの処理に反映させることを特徴とするゲームシステム。
【請求項2】
前記ゲームコントローラは、
ユーザにより操作されて、前記振動子を駆動するための操作ボタンと、
操作ボタンへの操作入力を振動制御信号に変換して前記振動子に供給する振動制御部と、
をさらに有することを特徴とする請求項1に記載のゲームシステム。
【請求項3】
前記振動制御部は、前記操作ボタンの操作量に応じて、前記振動子の振動数または振動振幅を定めることを特徴とする請求項2に記載のゲームシステム。
【請求項4】
前記ゲームコントローラは、
ユーザにより操作される操作ボタンをさらに有し、
前記第1通信モジュールは、操作ボタンへの操作入力を前記ゲーム装置に供給し、
前記ゲーム装置は、
前記第2通信モジュールにおいて受け取った操作入力をもとに振動制御信号を生成する振動制御信号生成部をさらに備え、
前記第2通信モジュールは、前記ゲームコントローラに、生成した前記振動制御信号を供給することを特徴とする請求項1に記載のゲームシステム。
【請求項5】
前記供給部は、センサ出力が基準値以下の値から基準値を超えたこと、またはセンサ出力が基準値より高い値から基準値以下となったことを検出すると、ゲーム操作データを生成して前記アプリケーション処理部に供給することを特徴とする請求項1から4のいずれかに記載のゲームシステム。
【請求項6】
前記アプリケーション処理部は、
前記供給部から受け取ったゲーム操作データにより仮想弾丸を連射させることを特徴とする請求項1から5のいずれかに記載のゲームシステム。
【請求項7】
ユーザによるゲーム操作データをゲーム装置に伝送するゲームコントローラであって、
少なくとも1つの振動子と、
前記振動子の駆動に起因する当該ゲームコントローラの動きを検出する動きセンサと、
ユーザにより操作されて、前記振動子を駆動するための操作ボタンと、
前記操作ボタンへの操作入力を振動制御信号に変換して前記振動子に供給する振動制御部と、
前記動きセンサの出力をアナログデジタル変換するアナログデジタル変換器と、
アナログデジタル変換されたセンサ出力を前記ゲーム装置に供給する通信モジュールとを備えることを特徴とするゲームコントローラ。
【請求項1】
ゲームコントローラと、ゲームアプリケーションを実行するゲーム装置とを備えたゲームシステムであって、
前記ゲームコントローラは、
振動制御信号により駆動を制御される少なくとも1つの振動子と、
前記振動子の駆動に起因する振動を検出する動きセンサと、
前記動きセンサの出力をアナログデジタル変換するアナログデジタル変換器と、
アナログデジタル変換されたセンサ出力を前記ゲーム装置に供給する第1通信モジュールとを有し、
前記ゲーム装置は、
前記ゲームコントローラからセンサ出力を受け取る第2通信モジュールと、
ゲームアプリケーションを処理するアプリケーション処理部と、
受け取ったセンサ出力を、前記アプリケーション処理部にゲーム操作データとして供給する供給部とを有し、
前記アプリケーション処理部は、前記供給部から受け取ったゲーム操作データをゲームアプリケーションの処理に反映させることを特徴とするゲームシステム。
【請求項2】
前記ゲームコントローラは、
ユーザにより操作されて、前記振動子を駆動するための操作ボタンと、
操作ボタンへの操作入力を振動制御信号に変換して前記振動子に供給する振動制御部と、
をさらに有することを特徴とする請求項1に記載のゲームシステム。
【請求項3】
前記振動制御部は、前記操作ボタンの操作量に応じて、前記振動子の振動数または振動振幅を定めることを特徴とする請求項2に記載のゲームシステム。
【請求項4】
前記ゲームコントローラは、
ユーザにより操作される操作ボタンをさらに有し、
前記第1通信モジュールは、操作ボタンへの操作入力を前記ゲーム装置に供給し、
前記ゲーム装置は、
前記第2通信モジュールにおいて受け取った操作入力をもとに振動制御信号を生成する振動制御信号生成部をさらに備え、
前記第2通信モジュールは、前記ゲームコントローラに、生成した前記振動制御信号を供給することを特徴とする請求項1に記載のゲームシステム。
【請求項5】
前記供給部は、センサ出力が基準値以下の値から基準値を超えたこと、またはセンサ出力が基準値より高い値から基準値以下となったことを検出すると、ゲーム操作データを生成して前記アプリケーション処理部に供給することを特徴とする請求項1から4のいずれかに記載のゲームシステム。
【請求項6】
前記アプリケーション処理部は、
前記供給部から受け取ったゲーム操作データにより仮想弾丸を連射させることを特徴とする請求項1から5のいずれかに記載のゲームシステム。
【請求項7】
ユーザによるゲーム操作データをゲーム装置に伝送するゲームコントローラであって、
少なくとも1つの振動子と、
前記振動子の駆動に起因する当該ゲームコントローラの動きを検出する動きセンサと、
ユーザにより操作されて、前記振動子を駆動するための操作ボタンと、
前記操作ボタンへの操作入力を振動制御信号に変換して前記振動子に供給する振動制御部と、
前記動きセンサの出力をアナログデジタル変換するアナログデジタル変換器と、
アナログデジタル変換されたセンサ出力を前記ゲーム装置に供給する通信モジュールとを備えることを特徴とするゲームコントローラ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図12】
【図13】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図12】
【図13】
【図11】
【公開番号】特開2009−119125(P2009−119125A)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願番号】特願2007−298122(P2007−298122)
【出願日】平成19年11月16日(2007.11.16)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願日】平成19年11月16日(2007.11.16)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】
[ Back to top ]