[1.ゲームシステムの全体構成]
以下、図面を参照して、本発明の一実施形態に係るゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。図1において、ゲームシステム1は、テレビジョン受像器等に代表される据置型のディスプレイ装置(以下、「テレビ」と記載する)2、据置型のゲーム装置3、光ディスク4、コントローラ5、マーカ装置6、および、端末装置7を含む。ゲームシステム1は、コントローラ5を用いたゲーム操作に基づいてゲーム装置3においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ2および/または端末装置7に表示するものである。
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるための情報処理プログラム(典型的にはゲームプログラム)が記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
ゲーム装置3には、テレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ2はスピーカ2a(図2)を有しており、スピーカ2aは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置3と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置3とテレビ2との通信は無線通信であってもよい。
テレビ2の画面の周辺(図1では画面の上側)には、マーカ装置6が設置される。詳細は後述するが、ユーザ(プレイヤ)はコントローラ5を動かすゲーム操作を行うことができ、マーカ装置6は、コントローラ5の動きや位置や姿勢等をゲーム装置3が算出するために用いられる。マーカ装置6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LED(Light Emitting Diode)であり、テレビ2の前方に向かって赤外光を出力する。マーカ装置6は有線で(無線であってもよい)ゲーム装置3に接続されており、ゲーム装置3はマーカ装置6が備える各赤外LEDの点灯を制御することが可能である。なお、マーカ装置6は可搬型であり、ユーザはマーカ装置6を自由な位置に設置することができる。図1ではマーカ装置6がテレビ2の上に設置された態様を表しているが、マーカ装置6を設置する位置および向きは任意である。
コントローラ5は、自機に対する操作に基づく操作データをゲーム装置3に与えるものである。本実施形態では、コントローラ5は、メインコントローラ8とサブコントローラ9とを有し、サブコントローラ9がメインコントローラ8に着脱可能に装着される構成である。コントローラ5とゲーム装置3とは無線通信によって通信可能である。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。また、図1では、ゲームシステム1に含まれるコントローラ5は1つとするが、ゲームシステム1は複数のコントローラ5を含んでいてもよい。つまり、ゲーム装置3は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ5の詳細な構成については後述する。
端末装置7は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置7を手に持って動かしたり、あるいは、端末装置7を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置7は、表示手段であるLCD(Liquid Crystal Display:液晶表示装置)51、および、入力手段(後述するタッチパネル52やジャイロセンサ64等)を備える。端末装置7とゲーム装置3とは無線(有線であってもよい)によって通信可能である。端末装置7は、ゲーム装置3で生成された画像(例えばゲーム画像)のデータをゲーム装置3から受信し、画像をLCD51に表示する。なお、本実施形態では表示装置としてLCDを用いているが、端末装置7は、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置7は、自機に対する操作に基づく操作データをゲーム装置3に送信する。
[2.ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の内部構成を示すブロック図である。ゲーム装置3は、CPU(Central Processing Unit)10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM(Video RAM)11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。なお、本実施形態においては、ゲーム装置3は、テレビ2に表示するゲーム画像と、端末装置7に表示するゲーム画像との両方を生成する。以下では、テレビ2に表示されるゲーム画像を「テレビ用ゲーム画像」と呼び、端末装置7に表示されるゲーム画像を「端末用ゲーム画像」と呼ぶことがある。
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、テレビ2のスピーカから出力するゲーム音声と、端末装置7のスピーカから出力するゲーム音声との両方が生成される。以下では、テレビ2から出力されるゲーム音声を「テレビ用ゲーム音声」と呼び、端末装置7から出力されるゲーム音声を「端末用ゲーム音声」と呼ぶことがある。
上記のようにゲーム装置3において生成される画像および音声のうちで、テレビ2において出力される画像および音声のデータは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、テレビ2に画像が表示されるとともにスピーカ2aから音が出力される。
また、ゲーム装置3において生成される画像および音声のうちで、端末装置7において出力される画像および音声のデータは、入出力プロセッサ11a等によって端末装置7へ送信される。入出力プロセッサ11a等による端末装置7へのデータの送信については後述する。
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、ネットワーク通信モジュール18、コントローラ通信モジュール19、拡張コネクタ20、メモリカード用コネクタ21、コーデックLSI27に接続される。また、ネットワーク通信モジュール18にはアンテナ22が接続される。コントローラ通信モジュール19にはアンテナ23が接続される。コーデックLSI27は端末通信モジュール28に接続され、端末通信モジュール28にはアンテナ29が接続される。
ゲーム装置3は、インターネット等のネットワークに接続して外部情報処理装置(例えば他のゲーム装置や、各種サーバや、各種情報処理装置等)と通信を行うことが可能である。すなわち、入出力プロセッサ11aは、ネットワーク通信モジュール18およびアンテナ22を介してインターネット等のネットワークに接続し、ネットワークに接続される外部情報処理装置と通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22およびネットワーク通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と外部情報処理装置との間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。また、フラッシュメモリ17にはゲームプログラムが記憶されてもよい。
また、ゲーム装置3は、コントローラ5からの操作データを受信することが可能である。すなわち、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
また、ゲーム装置3は、端末装置7との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ11aは、端末装置7へゲーム画像(端末用ゲーム画像)を送信する場合、GPU11bが生成したゲーム画像のデータをコーデックLSI27へ出力する。コーデックLSI27は、入出力プロセッサ11aからの画像データに対して所定の圧縮処理を行う。端末通信モジュール28は、端末装置7との間で無線通信を行う。したがって、コーデックLSI27によって圧縮された画像データは、端末通信モジュール28によってアンテナ29を介して端末装置7へ送信される。なお、本実施形態では、ゲーム装置3から端末装置7へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置3から端末装置7への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックLSI27は、例えばH.264規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール28は、例えばWi−Fiの認証を受けた通信モジュールであり、例えばIEEE802.11n規格で採用されるMIMO(Multiple Input Multiple Output)の技術を用いて端末装置7との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
また、ゲーム装置3は、画像データの他、音声データを端末装置7へ送信する。すなわち、入出力プロセッサ11aは、DSP11cが生成した音声データを、コーデックLSI27を介して端末通信モジュール28へ出力する。コーデックLSI27は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール28は、圧縮された画像データおよび音声データを、アンテナ29を介して端末装置7へ送信する。
さらに、ゲーム装置3は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置7へ送信する。制御データは、端末装置7が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部(図10に示すマーカ部55)の点灯を制御する指示や、カメラ(図10に示すカメラ56)の撮像を制御する指示等を表す。入出力プロセッサ11aは、CPU10の指示に応じて制御データを端末装置7へ送信する。なお、この制御データに関して、本実施形態ではコーデックLSI27はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置3から端末装置7へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくともよい。
また、ゲーム装置3は、端末装置7から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置7は、操作データ、画像データ、および音声データを送信する。端末装置7から送信される各データはアンテナ29を介して端末通信モジュール28によって受信される。ここで、端末装置7からの画像データおよび音声データは、ゲーム装置3から端末装置7への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール28からコーデックLSI27に送られ、コーデックLSI27によって伸張処理が施されて入出力プロセッサ11aに出力される。一方、端末装置7からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール28で受信された後、コーデックLSI27を介して入出力プロセッサ11aに出力される。入出力プロセッサ11aは、端末装置7から受信したデータを、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
また、ゲーム装置3は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタである。拡張コネクタ20に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、図示しないACアダプタによって外部の電源からゲーム装置3の各構成要素に対して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
なお、他の実施形態においては、ゲーム装置3が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置3とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ20を介してゲーム装置3と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックLSI27、端末通信モジュール28およびアンテナ29の各構成要素を備えており、拡張コネクタ20に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置7と通信可能な構成とすることができる。
[3.コントローラ5の構成]
次に、図3〜図7を参照して、コントローラ5について説明する。上述のように、コントローラ5は、メインコントローラ8とサブコントローラ9とによって構成される。図3は、メインコントローラ8の外観構成を示す斜視図である。図4は、メインコントローラ8の外観構成を示す斜視図である。図3は、メインコントローラ8の上側後方から見た斜視図であり、図4は、メインコントローラ8を下側前方から見た斜視図である。
図3および図4において、メインコントローラ8は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、メインコントローラ8に設けられたボタンを押下すること、および、メインコントローラ8自体を動かしてその位置や姿勢(傾き)を変えることによってゲーム操作を行うことができる。
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、ユーザがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、メインコントローラ8に他の機器(例えば、サブコントローラ9や他のセンサユニット等)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5(メインコントローラ8)には、他のコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ5の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
また、メインコントローラ8は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、メインコントローラ8に内蔵されるスピーカ47(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
次に、図5および図6を参照して、メインコントローラ8の内部構造について説明する。図5および図6は、メインコントローラ8の内部構造を示す図である。なお、図5は、メインコントローラ8の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、メインコントローラ8の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ47等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してメインコントローラ8の中心からずれた位置に配置されている。これによって、メインコントローラ8をZ軸回りに回転させたときのメインコントローラ8の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してメインコントローラ8の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5(メインコントローラ8)がワイヤレスコントローラとして機能する。
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、メインコントローラ8の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ46が設けられている。バイブレータ46は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ46が作動することによってメインコントローラ8に振動が発生する。これによって、メインコントローラ8を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ46は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ46がメインコントローラ8の中心よりも端側に配置することによって、バイブレータ46の振動によりメインコントローラ8全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、メインコントローラ8は、マイコン42の基本クロックを生成する水晶振動子、スピーカ47に音声信号を出力するアンプ等を備えている。
図7は、サブコントローラ9の外観構成を示す斜視図である。サブコントローラ9は、例えばプラスチック成型によって形成されたハウジング80を有している。ハウジング80は、メインコントローラ8と同様に、全体として大人や子供の片手で把持可能な大きさである。このサブコントローラ9を用いることによっても、プレイヤは、ボタンやスティックを操作することと、コントローラ自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
図7に示すように、ハウジング80の上面(y’軸負方向側の面)の先端側(z’軸正側)には、アナログジョイスティック81が設けられる。また、図示されないが、ハウジング80の先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向(図3に示すy軸方向)に並べて、CボタンおよびZボタンが設けられる。アナログジョイスティック81および各ボタン(CボタンおよびZボタン)には、ゲーム装置3が実行するゲームプログラムに応じてそれぞれ適宜の機能が割り当てられる。なお、アナログジョイスティック81および各ボタンを包括的に「操作部82(図8参照)」と呼ぶことがある。
また、図7では示されないが、サブコントローラ9は、ハウジング80の内部に加速度センサ(図8に示す加速度センサ83)を有している。本実施形態においては、加速度センサ83は、メインコントローラ8の加速度センサ37と同様のものが用いられる。ただし、加速度センサ83は、加速度センサ37とは異なるものであってもよく、例えば所定の1軸または2軸の加速度を検出するものであってもよい。
また、図7に示すように、ハウジング80の後端にはケーブルの一端が接続されている。図7では示されないが、ケーブルの他端にはコネクタ(図8に示すコネクタ84)が接続される。このコネクタはメインコントローラ8のコネクタ33と接続可能である。つまり、コネクタ33とコネクタ84とを接続することによって、メインコントローラ8とサブコントローラ9とが接続される。
なお、図3〜図7に示したメインコントローラ8およびサブコントローラ9の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、メインコントローラ8の撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
図8は、コントローラ5の構成を示すブロック図である。図8に示すように、メインコントローラ8は、操作部32(各操作ボタン32a〜32i)、撮像情報演算部35、通信部36、加速度センサ37、およびジャイロセンサ48を備えている。また、サブコントローラ9は、操作部82および加速度センサ83を備えている。コントローラ5は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置3へ送信するものである。なお、以下では、コントローラ5が送信する操作データを「コントローラ操作データ」と呼び、端末装置7が送信する操作データを「端末操作データ」と呼ぶことがある。
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を表す操作ボタンデータを通信部36のマイコン42へ出力する。
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置7のマーカ部55およびマーカ装置6は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、撮像対象(マーカ部55および/またはマーカ装置6)の画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ37は、例えば静電容量式のMEMS(Micro Electro Mechanical System)型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ5を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトルとして表される。
加速度センサ37が検出した加速度を表すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は取得された加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、取得された加速度データに基づいてコントローラ5の姿勢や傾斜角度等を算出する。
なお、加速度センサ37(後述する加速度センサ63についても同様)から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
ジャイロセンサ48は、3軸(本実施形態では、XYZ軸)回りの角速度を検出する。本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、X軸回りの回転方向をピッチ方向、Y軸回りの回転方向をヨー方向、Z軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ48は、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ48は、3軸ジャイロセンサであってもよいし、2軸ジャイロセンサと1軸ジャイロセンサとを組み合わせて3軸周りの角速度を検出するものであってもよい。ジャイロセンサ48で検出された角速度を表すデータは、通信部36へ出力される。また、ジャイロセンサ48は1軸または2軸回りの角速度を検出するものであってもよい。
また、サブコントローラ9の操作部82は、上述したアナログジョイスティック81、CボタンおよびZボタンを含む。操作部82は、アナログジョイスティック81に対する傾倒方向および傾倒量を表すスティックデータ(サブスティックデータと呼ぶ)と、各ボタンに対する入力状態(各ボタンが押下されたか否か)を表す操作ボタンデータ(サブ操作ボタンデータと呼ぶ)とを、コネクタ84を介してメインコントローラ8へ出力する。
また、サブコントローラ9の加速度センサ83は、メインコントローラ8の加速度センサ37と同様のセンサであり、サブコントローラ9の加速度(重力加速度を含む)を検出する、すなわち、サブコントローラ9に加わる力(重力を含む)を検出する。加速度センサ83は、当該加速度センサ83の検出部に加わっている加速度のうち、所定の3軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。検出された加速度を表すデータ(サブ加速度データと呼ぶ)は、コネクタ84を介してメインコントローラ8へ出力される。
以上のように、サブコントローラ9は、上記サブスティックデータ、サブ操作ボタンデータ、およびサブ加速度データを含むサブコントローラデータをメインコントローラ8へ出力する。
メインコントローラ8の通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
サブコントローラ9からのサブコントローラデータは、マイコン42に入力され、一時的にメモリ43に格納される。また、操作部32、撮像情報演算部35、加速度センサ37、およびジャイロセンサ48からマイコン42へ出力されたデータ(メインコントローラデータと呼ぶ)は、一時的にメモリ43に格納される。これらのメインコントローラおよびサブコントローラデータは、操作データ(コントローラ操作データ)としてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3のコントローラ通信モジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側のコントローラ通信モジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、コントローラ5から取得した操作データを用いてゲーム処理を行う。なお、通信部36からコントローラ通信モジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で操作データをゲーム装置3のコントローラ通信モジュール19へ出力する。
以上のように、メインコントローラ8は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。サブコントローラ9は、自機に対する操作を表す操作データとして、加速度データ、スティックデータ、および操作ボタンデータを送信可能である。また、ゲーム装置3は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ5を用いることによって、ユーザは、各操作ボタンを押下するという従来の一般的なゲーム操作に加えて、コントローラ5自体を動かすゲーム操作を行うことができる。例えば、メインコントローラ8および/またはサブコントローラ9を任意の姿勢に傾ける操作、メインコントローラ8によって画面上の任意の位置を指示する操作、および、メインコントローラ8および/またはサブコントローラ9自体を動かす操作等を行うことが可能となる。
また、本実施形態において、コントローラ5は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
[4.端末装置7の構成]
次に、図9〜図11を参照して、端末装置7の構成について説明する。図9は、端末装置7の外観構成を示す図である。図9における(a)図は端末装置7の正面図であり、(b)図は上面図であり、(c)図は右側面図であり、(d)図は下面図である。また、図10は、ユーザが端末装置7を把持した様子を示す図である。
図9に示されるように、端末装置7は、大略的には横長の長方形の板状形状であるハウジング50を備える。ハウジング50は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置7を持って動かしたり、端末装置7の配置位置を変更したりすることができる。
端末装置7は、ハウジング50の表面にLCD51を有する。LCD51は、ハウジング50の表面の中央付近に設けられる。したがって、ユーザは、図10に示すようにLCD51の両側部分のハウジング50を持つことによって、LCD51の画面を見ながら端末装置を持って動かすことができる。なお、図10ではユーザがLCD51の左右両側の部分のハウジング50を持つことで端末装置7を横持ちで(横に長い向きにして)持つ例を示しているが、端末装置7を縦持ちで(縦に長い向きにして)持つことも可能である。
図9の(a)図に示すように、端末装置7は、操作手段として、LCD51の画面上にタッチパネル52を有する。本実施形態では、タッチパネル52は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル52はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル52として、LCD51の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル52の解像度とLCD51の解像度が一致している必要はない。タッチパネル52に対する入力は通常タッチペンを用いて行われるが、タッチペンに限らずユーザの指でタッチパネル52に対する入力をすることも可能である。なお、ハウジング50には、タッチパネル52に対する操作を行うために用いられるタッチペンを収納するための収納穴が設けられていてもよい。このように、端末装置7はタッチパネル52を備えるので、ユーザは、端末装置7を動かしながらタッチパネル52を操作することができる。つまりユーザは、LCD51の画面を動かしつつ、その画面に対して直接(タッチパネル52によって)入力を行うことができる。
図9に示すように、端末装置7は、操作手段として、2つのアナログスティック53Aおよび53Bと、複数のボタン54A〜54Lとを備えている。各アナログスティック53Aおよび53Bは、方向を指示するデバイスである。各アナログスティック53Aおよび53Bは、ユーザの指で操作されるスティック部がハウジング50の表面に対して任意の方向(上下左右および斜め方向の任意の角度)にスライド(または傾倒)することができるように構成されている。また、左アナログスティック53AはLCD51の画面の左側に、右アナログスティック53BはLCD51の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、図10に示すように、各アナログスティック53Aおよび53Bは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置7を持って動かす場合においても各アナログスティック53Aおよび53Bを容易に操作することができる。
各ボタン54A〜54Lは、所定の入力を行うための操作手段である。以下に示すように、各ボタン54A〜54Lは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられる(図10参照)。したがって、ユーザは、端末装置7を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
図9の(a)図に示すように、ハウジング50の表面には、各操作ボタン54A〜54Lのうち、十字ボタン(方向入力ボタン)54Aと、ボタン54B〜54Hとが設けられる。つまり、これらのボタン54A〜54Hは、ユーザの親指で操作可能な位置に配置されている(図10参照)。
十字ボタン54Aは、LCD51の左側であって、左アナログスティック53Aの下側に設けられる。つまり、十字ボタン54Aはユーザの左手で操作可能な位置に配置されている。十字ボタン54Aは、十字の形状を有しており、上下左右の方向を指示することが可能なボタンである。また、ボタン54B〜54Dは、LCD51の下側に設けられる。これら3つのボタン54B〜54Dは、左右両方の手で操作可能な位置に配置されている。また、4つのボタン54E〜54Hは、LCD51の右側であって、右アナログスティック53Bの下側に設けられる。つまり、4つのボタン54E〜54Hはユーザの右手で操作可能な位置に配置されている。さらに、4つのボタン54E〜54Hは、(4つのボタン54E〜54Hの中心位置に対して)上下左右の位置関係となるように配置されている。したがって、端末装置7は、ユーザに上下左右の方向を指示させるためのボタンとして4つのボタン54E〜54Hを機能させることも可能である。
また、図9の(a)図、(b)図、および(c)図に示すように、第1Lボタン54Iおよび第1Rボタン54Jは、ハウジング50の斜め上部分(左上部分および右上部分)に設けられる。具体的には、第1Lボタン54Iは、板状のハウジング50における上側の側面の左端に設けられ、上側および左側の側面から露出している。また、第1Rボタン54Jは、ハウジング50における上側の側面の右端に設けられ、上側および右側の側面から露出している。このように、第1Lボタン54Iは、ユーザの左手人差し指で操作可能な位置に配置され、第1Rボタン54Jは、ユーザの右手人差し指で操作可能な位置に配置される(図10参照)。
また、図9の(b)図および(c)図に示すように、第2Lボタン54Kおよび第2Rボタン54Lは、板状のハウジング50の裏面(すなわちLCD51が設けられる表面の反対側の面)に突起して設けられる足部59Aおよび59Bに配置される。具体的には、第2Lボタン54Kは、ハウジング50の裏面の左側(表面側から見たときの左側)のやや上方に設けられ、第2Rボタン54Lは、ハウジング50の裏面の右側(表面側から見たときの右側)のやや上方に設けられる。換言すれば、第2Lボタン54Kは、表面に設けられる左アナログスティック53Aの概ね反対側の位置に設けられ、第2Rボタン54Lは、表面に設けられる右アナログスティック53Bの概ね反対側の位置に設けられる。このように、第2Lボタン54Kは、ユーザの左手中指で操作可能な位置に配置され、第2Rボタン54Lは、ユーザの右手中指で操作可能な位置に配置される(図10参照)。また、第2Lボタン54Kおよび第2Rボタン54Lは、図9の(c)図に示すように、上記足部59Aおよび59Bの斜め上方を向く面に設けられ、斜め上方を向くボタン面を有する。ユーザが端末装置7を把持した場合には中指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第2Lボタン54Kおよび第2Rボタン54Lを押下しやすくなる。また、ハウジング50の裏面に足部が設けられることにより、ユーザはハウジング50を把持しやすくなり、かつ、足部にボタンが設けられることで、ハウジング50を把持したまま操作しやすくなる。
なお、図9に示す端末装置7に関しては、第2Lボタン54Kおよび第2Rボタン54Lが裏面に設けられるので、LCD51の画面(ハウジング50の表面)が上を向いた状態で端末装置7を載置させる場合、画面が完全に水平にはならない場合がある。そのため、他の実施形態においては、ハウジング50の裏面に3つ以上の足部が形成されてもよい。これによれば、LCD51の画面が上を向いた状態では足部が床面(または他の水平な面)に接することで床面に載置できるので、画面が水平になるように端末装置7を載置することができる。また、着脱可能な足部を追加することで端末装置7を水平に載置するようにしてもよい。
各ボタン54A〜54Lには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン54Aおよびボタン54E〜54Hは方向指示操作や選択操作等に用いられてもよいし、各ボタン54B〜54Eは決定操作やキャンセル操作等に用いられてもよい。
なお、図示しないが、端末装置7は、端末装置7の電源をオン/オフするための電源ボタンを有している。また、端末装置7は、LCD51の画面表示をオン/オフするためのボタンや、ゲーム装置3との接続設定(ペアリング)を行うためのボタンや、スピーカ(図11に示すスピーカ67)の音量を調節するためのボタンを有していてもよい。
図9の(a)図に示すように、端末装置7は、マーカ55Aおよびマーカ55Bからなるマーカ部(図11に示すマーカ部55)をハウジング50の表面に備えている。マーカ部55は、どの位置に設けられてもよいが、ここではLCD51の上側に設けられる。各マーカ55Aおよびマーカ55Bは、マーカ装置6の各マーカ6Rおよび6Lと同様、1以上の赤外LEDで構成される。マーカ部55は、上述のマーカ装置6と同様、コントローラ5(メインコントローラ8)の動き等をゲーム装置3が算出するために用いられる。また、ゲーム装置3はマーカ部55が備える各赤外LEDの点灯を制御することが可能である。
端末装置7は、撮像手段であるカメラ56を備えている。カメラ56は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。図9に示すように、本実施形態では、カメラ56はハウジング50の表面に設けられる。したがって、カメラ56は、端末装置7を持っているユーザの顔を撮像することができ、例えばLCD51を見ながらゲームを行っている時のユーザを撮像することができる。なお、他の実施形態では、1以上のカメラが端末装置7に設けられてもよい。
なお、端末装置7は、音声入力手段であるマイク(図11に示すマイク69)を備えている。ハウジング50の表面には、マイクロフォン用孔60が設けられる。マイク69はこのマイクロフォン用孔60の奥のハウジング50内部に設けられる。マイクは、ユーザの音声等、端末装置7の周囲の音を検出する。なお、他の実施形態では、1以上のマイクが端末装置7に設けられてもよい。
端末装置7は、音声出力手段であるスピーカ(図11に示すスピーカ67)を備えている。図9の(d)図に示すように、ハウジング50の下側側面にはスピーカ孔57が設けられる。スピーカ67の出力音はこのスピーカ孔57から出力される。本実施形態では、端末装置7は2つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔57が設けられる。なお、端末装置7が備えるスピーカの数はいくつであってもよく、上記2つのスピーカに加えて追加のスピーカが端末装置7に設けられてもよい。
また、端末装置7は、他の装置を端末装置7に接続するための拡張コネクタ58を備えている。本実施形態においては、図9の(d)図に示すように、拡張コネクタ58は、ハウジング50の下側側面に設けられる。なお、拡張コネクタ58に接続される他の装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ(銃型のコントローラ等)やキーボード等の入力装置であってもよい。他の装置を接続する必要がなければ、拡張コネクタ58は設けられていなくともよい。
なお、図9に示した端末装置7に関して、各操作ボタンやハウジング50の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
次に、図11を参照して、端末装置7の内部構成について説明する。図11は、端末装置7の内部構成を示すブロック図である。図11に示すように、端末装置7は、図9に示した構成の他、タッチパネルコントローラ61、磁気センサ62、加速度センサ63、ジャイロセンサ64、ユーザインタフェースコントローラ(UIコントローラ)65、コーデックLSI66、スピーカ67、サウンドIC68、マイク69、無線モジュール70、アンテナ71、赤外線通信モジュール72、フラッシュメモリ73、電源IC74、電池75、および、バイブレータ79を備える。これらの電子部品は、電子回路基板上に実装されてハウジング50内に収納される。
UIコントローラ65は、各種の入出力部に対するデータの入出力を制御するための回路である。UIコントローラ65は、タッチパネルコントローラ61、アナログスティック53(アナログスティック53Aおよび53B)、操作ボタン54(各操作ボタン54A〜54L)、マーカ部55、磁気センサ62、加速度センサ63、ジャイロセンサ64、およびバイブレータ79に接続される。また、UIコントローラ65は、コーデックLSI66と拡張コネクタ58に接続される。また、UIコントローラ65には電源IC74が接続され、UIコントローラ65を介して各部に電力が供給される。電源IC74には内蔵の電池75が接続され、電力が供給される。また、電源IC74には、コネクタ等を介して外部電源から電力を取得可能な充電器76またはケーブルを接続することが可能であり、端末装置7は、当該充電器76またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置7は、図示しない充電機能を有するクレイドルに端末装置7を装着することで充電を行うようにしてもよい。
タッチパネルコントローラ61は、タッチパネル52に接続され、タッチパネル52の制御を行う回路である。タッチパネルコントローラ61は、タッチパネル52からの信号に基づいて所定の形式のタッチ位置データを生成してUIコントローラ65へ出力する。タッチ位置データは、タッチパネル52の入力面において入力が行われた位置(タッチパネル52がマルチタッチ方式である場合は複数の位置であってもよい)の座標を表す。なお、タッチパネルコントローラ61は、タッチパネル52からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。また、UIコントローラ65からタッチパネルコントローラ61へは、タッチパネル52に対する各種の制御指示が出力される。
アナログスティック53は、ユーザの指で操作されるスティック部がスライドした(または傾倒した)方向および量を表すスティックデータをUIコントローラ65へ出力する。また、操作ボタン54は、各操作ボタン54A〜54Lに対する入力状況(押下されたか否か)を表す操作ボタンデータをUIコントローラ65へ出力する。
磁気センサ62は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、UIコントローラ65へ出力される。また、UIコントローラ65から磁気センサ62へは、磁気センサ62に対する制御指示が出力される。磁気センサ62に関しては、MI(磁気インピーダンス)素子、フラックスゲートセンサ、ホール素子、GMR(巨大磁気抵抗)素子、TMR(トンネル磁気抵抗)素子、あるいはAMR(異方性磁気抵抗)素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置7が動いた場合には方位データが変化するため、端末装置7の姿勢の変化を算出することができる。
加速度センサ63は、ハウジング50の内部に設けられ、3軸(図9の(a)図に示すxyz軸)方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ63は、ハウジング50の長辺方向をx軸、ハウジング50の短辺方向をy軸、ハウジング50の表面に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはUIコントローラ65へ出力される。また、UIコントローラ65から加速度センサ63へは、加速度センサ63に対する制御指示が出力される。加速度センサ63は、本実施形態では例えば静電容量式のMEMS型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ63は1軸または2軸方向を検出する加速度センサであってもよい。
ジャイロセンサ64は、ハウジング50の内部に設けられ、上記x軸、y軸およびz軸の3軸周りの角速度を検出する。検出された角速度を表す角速度データは、UIコントローラ65へ出力される。また、UIコントローラ65からジャイロセンサ64へは、ジャイロセンサ64に対する制御指示が出力される。なお、3軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ64はジャイロセンサ48と同様、2軸ジャイロセンサと1軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ64は1軸または2軸方向を検出するジャイロセンサであってもよい。
バイブレータ79は、例えば振動モータやソレノイドであり、UIコントローラ65に接続される。UIコントローラ65の指示によりバイブレータ79が作動することによって端末装置7に振動が発生する。これによって、端末装置7を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。
UIコントローラ65は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックLSI66に出力する。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
コーデックLSI66は、ゲーム装置3へ送信するデータに対する圧縮処理、および、ゲーム装置3から送信されたデータに対する伸張処理を行う回路である。コーデックLSI66には、LCD51、カメラ56、サウンドIC68、無線モジュール70、フラッシュメモリ73、および赤外線通信モジュール72が接続される。また、コーデックLSI66はCPU77と内部メモリ78を含む。端末装置7はゲーム処理自体を行なわない構成であるが、端末装置7の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ73に格納されたプログラムを内部メモリ78に読み出してCPU77が実行することで、端末装置7が起動する。また、内部メモリ78の一部の領域はLCD51のためのVRAMとして使用される。
カメラ56は、ゲーム装置3からの指示に従って画像を撮像し、撮像した画像データをコーデックLSI66へ出力する。また、コーデックLSI66からカメラ56へは、画像の撮像指示等、カメラ56に対する制御指示が出力される。なお、カメラ56は動画の撮影も可能である。すなわち、カメラ56は、繰り返し撮像を行って画像データをコーデックLSI66へ繰り返し出力することも可能である。
サウンドIC68は、スピーカ67およびマイク69に接続され、スピーカ67およびマイク69への音声データの入出力を制御する回路である。すなわち、コーデックLSI66から音声データを受け取った場合、サウンドIC68は当該音声データに対してD/A変換を行って得られる音声信号をスピーカ67へ出力し、スピーカ67から音を出力させる。また、マイク69は、端末装置7に伝わる音(ユーザの音声等)を検知して、当該音を示す音声信号をサウンドIC68へ出力する。サウンドIC68は、マイク69からの音声信号に対してA/D変換を行い、所定の形式の音声データをコーデックLSI66へ出力する。
コーデックLSI66は、カメラ56からの画像データ、マイク69からの音声データ、および、UIコントローラ65からの操作データを、端末操作データとして無線モジュール70を介してゲーム装置3へ送信する。本実施形態では、コーデックLSI66は、画像データおよび音声データに対して、コーデックLSI27と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール70に出力される。無線モジュール70にはアンテナ71が接続されており、無線モジュール70はアンテナ71を介してゲーム装置3へ上記送信データを送信する。無線モジュール70は、ゲーム装置3の端末通信モジュール28と同様の機能を有している。すなわち、無線モジュール70は、例えばIEEE802.11nの規格に準拠した方式により、無線LANに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
以上のように、端末装置7からゲーム装置3へ送信される送信データには、操作データ(端末操作データ)、画像データ、および音声データが含まれる。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。また、赤外線通信モジュール72は、他の装置との間で例えばIRDAの規格に従った赤外線通信を行う。コーデックLSI66は、赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置3へ送信してもよい。
また、上述のように、ゲーム装置3から端末装置7へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ71および無線モジュール70を介してコーデックLSI66に受信される。コーデックLSI66は、受信した画像データおよび音声データを伸張する。伸張された画像データはLCD51へ出力され、画像がLCD51に表示される。また、伸張された音声データはサウンドIC68へ出力され、サウンドIC68はスピーカ67から音を出力させる。
また、ゲーム装置3から受信されるデータに制御データが含まれる場合、コーデックLSI66およびUIコントローラ65は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置7が備える各構成要素(本実施形態では、カメラ56、タッチパネルコントローラ61、マーカ部55、各センサ62〜64、赤外線通信モジュール72、およびバイブレータ79)に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止(停止)させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置7からゲーム装置3へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部55は赤外LEDであるので、制御は単に電力の供給のON/OFFでよい。
以上のように、端末装置7は、タッチパネル52、アナログスティック53、および操作ボタン54といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
また、端末装置7は、端末装置7の動き(位置や姿勢、あるいは、位置や姿勢の変化を含む)を算出するためのセンサとして、磁気センサ62、加速度センサ63、およびジャイロセンサ64を備えるが、他の実施形態においては、これらのセンサのうち1つまたは2つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
また、端末装置7は、カメラ56およびマイク69を備える構成であるが、他の実施形態においては、カメラ56およびマイク69を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
また、端末装置7は、端末装置7とメインコントローラ8との位置関係(メインコントローラ8から見た端末装置7の位置および/または姿勢等)を算出するための構成としてマーカ部55を備える構成であるが、他の実施形態ではマーカ部55を備えていない構成としてもよい。また、他の実施形態では、端末装置7は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、メインコントローラ8がマーカ部を備え、端末装置7が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置6は赤外LEDに代えて、撮像素子を備える構成としてもよい。
[5.ゲーム処理の概要]
次に、本実施形態のゲームシステム1において実行されるゲーム処理の概要について説明する。本実施形態では、プレイヤがコントローラ5を用いて、仮想のゲーム空間に登場するプレイヤキャラクタを操作する。ゲーム空間を表すゲーム画像は、テレビ2および端末装置7の2つの表示装置に表示される。可搬型である端末装置7は、どこに配置されてもよいが、例えばテレビ2の横に配置することによって、プレイヤはテレビ2と端末装置7との間で目線をあまり動かさずにゲームを行うことができる。なお、本実施形態においては、端末装置7は、表示装置として用いられるが、他の実施形態においては、表示装置としてだけでなく操作装置として用いられてもよい。
図12は、テレビ2に表示されるテレビ用ゲーム画像の一例を示す図である。図12に示すように、テレビ2には、いわゆる客観視点のゲーム画像、すなわち、プレイヤキャラクタ91を含むゲーム空間を表すゲーム画像が表示される。なお、本実施形態においては、プレイヤがゲーム空間の状況を把握しやすいように、端末装置7においては、プレイヤキャラクタ91が半透明で(図12では点線で表す)表示される。テレビ用ゲーム画像は、ゲーム空間に設置される仮想カメラ(「テレビ用カメラ」と呼ぶ。)を用いて生成される。本実施形態では、サブコントローラ9のアナログジョイスティック81に対する方向入力によって、プレイヤキャラクタ91の移動(位置および向き)が制御される。詳細は後述するが、テレビ用カメラの位置および姿勢は、プレイヤキャラクタ91の動きに応じて設定される。
また、プレイヤキャラクタ91はボウガン92を持っており、プレイヤによる操作によってプレイヤキャラクタ91はボウガン92から矢93を発射する動作を行う。具体的には、ボウガン92の姿勢は、コントローラ5(メインコントローラ8)の姿勢に応じて変化するように制御される。また、所定の発射操作(メインコントローラ8のBボタン32iを押下する操作)が行われたことに応じて、発射操作が行われた時点のボウガン92(矢93)の方向へ矢93が発射される。
図12に示すゲーム画像においては、ゲーム空間には壁に囲まれた交差点があり、交差点を横切って車輪94が転がっている。車輪94は、一定期間毎に(あるいはランダムな時間間隔で)交差点を横切るように移動する。ここでは、プレイヤキャラクタ91は、車輪94に当たらないように交差点を通り抜けることを目的とする。
一方、図13は、端末装置7に表示される端末用ゲーム画像の一例を示す図である。図13に示すように、端末装置7には、矢93の位置から見たゲーム空間を表すゲーム画像が表示される。矢93が発射される前においては、矢の位置はプレイヤキャラクタ91の近傍の位置(ボウガン92の位置)であり、プレイヤキャラクタ91と共に移動する。したがって、矢93が発射される前においては、端末用ゲーム画像はいわゆる主観視点のゲーム画像となる。
また、端末用ゲーム画像は、ゲーム空間に設置される仮想カメラ(「端末用カメラ」と呼ぶ。)を用いて生成される。つまり、端末用カメラは、矢93の位置に配置される。本実施形態においては、ボウガン92(矢93)の姿勢の変化に応じて端末用カメラの向きが変化する。したがって、コントローラ5の姿勢を変化することに応じて、ボウガン92の姿勢が変化されるとともに、端末用カメラの向きが変化する。また、端末用カメラの向きは矢93に合わせて変化するので、端末用カメラが矢93の先端方向を向いている場合には、端末用カメラが矢93の先端方向を向き続けた状態でコントローラ5の姿勢の変化に応じて端末用カメラの向きが変化する。
また、本実施形態では、端末用カメラの向きは、矢93(ボウガン92)の姿勢とは独立して、コントローラ5に対する方向入力(例えば、サブコントローラ9のCボタンを押下した状態でのアナログジョイスティック81に対する方向入力)に応じて変化する。つまり、本実施形態においては、プレイヤは、コントローラ5の姿勢を変化させる操作だけでなく、(当該操作とは独立して)上記方向入力の操作によって端末用カメラの向きを変化させることができる。したがって、プレイヤは、端末用カメラを例えば矢93の後ろ方向に向けることも可能であり、端末用カメラが後ろに向いた状態で発射操作を行うことも可能である。
図14は、矢を発射した後の端末用ゲーム画像の一例を示す図である。図14に示す端末用ゲーム画像は、図13に示す状態からプレイヤキャラクタ91が矢93を発射し、矢93が柱95に刺さった場合において端末装置7に表示されるゲーム画像である。矢93が発射された後においても発射前と同様、端末用カメラは矢93の位置に設置される。したがって、発射された矢93が柱95に刺さった場合、図14に示すように、矢93が刺さった位置から見たゲーム空間を表すゲーム画像が端末装置7に表示される。このように、プレイヤは、ボウガン92で矢93を発射する操作によって、端末用カメラを設置する位置を指定することができる。図14に示すゲーム画像によって、プレイヤは、プレイヤキャラクタ91の位置とは異なる位置からゲーム空間を見ることができる。図14に示すゲーム画像によれば、プレイヤは、図12に示すゲーム画像では見ることができない、交差点に進入してくる前の車輪94の様子を確認することができる。つまり、図14に示すゲーム画像によって、プレイヤは、プレイヤキャラクタ91が交差点を通過するタイミングを計ることができ、ゲームを有利に進めることができる。その他にも、本実施形態によれば、プレイヤキャラクタ91が侵入できない位置に矢93を命中させることによって、当該位置から見たゲーム空間を表すゲーム画像を表示させたり、ゲーム空間を移動するオブジェクトに矢93を命中させることによって、当該オブジェクトから見たゲーム空間を表すゲーム画像を表示させたりすることも可能である。これによって、プレイヤは、プレイヤキャラクタ91が侵入できない場所を視認したり、プレイヤキャラクタ91自体を移動させなくてもゲーム空間の様々な場所を視認したりすることができる。
なお、矢93が発射された後においても発射前と同様、コントローラ5に対する方向入力に応じて端末用カメラの向きは変化する。図14の状態は、図13の状態で矢93が発射された後、端末用カメラの向きを後ろ向きに変化させた状態の例である。プレイヤは、上記方向入力の操作を行うことによって、端末用ゲーム画像の視線方向を変更することができる。
以上のように、本実施形態においては、テレビ2には、プレイヤキャラクタ91の動きに応じた視点および視線でゲーム空間を見たゲーム画像が表示され(図12)、端末装置7には、プレイヤが指定した位置からゲーム空間を見たゲーム画像が表示される(図14)。これによれば、異なる2つの視点からゲーム空間を見た2つのゲーム画像を2つの表示装置に表示することができる。また、端末用ゲーム画像における視点の位置はプレイヤが設定することができるので、例えばプレイヤキャラクタ91の位置からは死角となる場所を端末用ゲーム画像によって見えるようにすることも可能である。したがって、本実施形態によれば、より見やすいゲーム画像をプレイヤに提供することができる。また、本実施形態によれば、2つのゲーム画像を2つの表示装置によって同時に表示することができるので、プレイヤは、ゲーム画面を切り替える必要なくスムーズにゲームを行うことができる。
また、本実施形態によれば、2つのゲーム画像を2つの表示装置に表示するので、1つの表示装置の画面を分割して2つのゲーム画像を表示する場合に比べて、より見やすいゲーム画像を提供することができる。例えば、1つの表示装置(テレビ2)の画面を分割してテレビ用ゲーム画像と端末用ゲーム画像とをテレビ2に表示する場合において、端末用ゲーム画像の表示と非表示とを切り替えるとすれば、切り替えによってテレビ用ゲーム画像の表示領域が変化するので、テレビ用ゲーム画像が見づらくなる。これに対して、本実施形態によれば、端末用ゲーム画像の表示または非表示にかかわらずテレビ用ゲーム画像の表示領域が変化しないので、より見やすいゲーム画像を提供することができる。
[6.ゲーム処理の詳細]
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図15は、ゲーム処理において用いられる各種データを示す図である。図15において、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータを示す図である。図15に示すように、ゲーム装置3のメインメモリには、ゲームプログラム100、コントローラ操作データ101、および処理用データ110が記憶される。なお、メインメモリには、図15に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
ゲームプログラム100は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム100は、光ディスク4に代えて、フラッシュメモリ17やゲーム装置3の外部装置から(例えばインターネットを介して)取得されてもよい。また、ゲームプログラム100に含まれる一部(例えば、コントローラ5および/または端末装置7の姿勢を算出するためのプログラム)については、ゲーム装置3内に予め記憶されていてもよい。
コントローラ操作データ101は、コントローラ5に対するユーザ(プレイヤ)の操作を表すデータであり、コントローラ5に対する操作に基づいてコントローラ5から出力(送信)される。コントローラ操作データ101は、コントローラ5から送信されてゲーム装置3において取得され、メインメモリに記憶される。コントローラ操作データ101は、メイン操作ボタンデータ102、メイン加速度データ103、角速度データ104、マーカ座標データ105、サブスティックデータ106、サブ操作ボタンデータ107、および、サブ加速度データ108を含む。なお、ゲーム装置3は、複数のコントローラ5から操作データを取得する場合、各コントローラ5からそれぞれ送信されてくる各コントローラ操作データ101をメインメモリにそれぞれ記憶する。メインメモリには、コントローラ5毎に最新の(最後に取得された)ものから順に所定個数のコントローラ操作データ101が記憶されてもよい。
メイン操作ボタンデータ102は、メインコントローラ8に設けられる各操作ボタン32a〜32iに対する入力状態を表すデータである。具体的には、メイン操作ボタンデータ102は、各操作ボタン32a〜32iが押下されているか否かを表す。
メイン加速度データ103は、メインコントローラ8の加速度センサ37によって検出された加速度(加速度ベクトル)を表すデータである。ここでは、メイン加速度データ103は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度を表すものであるが、他の実施形態においては、任意の1以上の方向に関する加速度を表すものであってもよい。
角速度データ104は、メインコントローラ8におけるジャイロセンサ48によって検出された角速度を表すデータである。ここでは、角速度データ104は、図3に示すXYZの3軸回りのそれぞれの角速度を表すものであるが、他の実施形態においては、任意の1軸以上の軸回り角速度を表すものであればよい。このように、本実施形態においては、コントローラ5がジャイロセンサ48を備え、コントローラ操作データ101には、コントローラ5の姿勢を算出するための物理量として上記角速度データ104が含まれる。したがって、ゲーム装置3は、コントローラ5の姿勢を角速度に基づいて正確に算出することができる。
マーカ座標データ105、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を表すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための2次元座標系で表現され、マーカ座標データ105は、当該2次元座標系における座標値を表す。
サブスティックデータ106は、サブコントローラ9のアナログジョイスティック81に対する操作を表すデータである。具体的には、サブスティックデータ106は、アナログジョイスティック81に対する傾倒方向および傾倒量を表す。
サブ操作ボタンデータ107は、上記サブコントローラ9に設けられる各操作ボタンに対する入力状態を表すデータである。具体的には、サブ操作ボタンデータ107は、各操作ボタンが押下されているか否かを表す。
サブ加速度データ108は、サブコントローラ9の加速度センサ83によって検出された加速度(加速度ベクトル)を表すデータである。ここでは、サブ加速度データ108は、図7に示すx’y’z’の3軸の方向に関する加速度を各成分とする3次元の加速度を表すものであるが、他の実施形態においては、任意の1以上の方向に関する加速度を表すものであってもよい。
なお、コントローラ操作データ101は、コントローラ5に対するプレイヤの操作を表すものであればよく、上記各データ102〜108の一部のみを含むものであってもよい。また、コントローラ5が他の入力手段(例えば、タッチパネルやアナログスティック等)を有する場合には、コントローラ操作データ101は、当該他の入力手段に対する操作を表すデータを含んでいてもよい。なお、本実施形態のようにコントローラ5自体の姿勢をゲーム操作として用いる場合には、コントローラ操作データ101は、メイン加速度データ103、角速度データ104、マーカ座標データ105、またはサブ加速度データ108のように、コントローラ5自体の姿勢に応じて値が変化するデータを含むようにする。
また、本実施形態では端末装置7が操作装置として用いられないので図示しないが、メインメモリには、端末装置7に対するプレイヤの操作を表す端末操作データが端末装置7から取得されて記憶されてもよい。
処理用データ110は、後述するゲーム処理(図16)において用いられるデータである。処理用データ110は、姿勢データ111、キャラクタデータ112、ボウガンデータ113、矢データ114、テレビ用カメラデータ115、および、端末用カメラデータ116を含む。なお、図15に示すデータの他、処理用データ110は、ゲームに登場する各種オブジェクトに設定される各種パラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
姿勢データ111は、コントローラ5(より具体的にはメインコントローラ8)の姿勢を表すデータである。コントローラ5の姿勢は、例えば、所定の基準姿勢から現在の姿勢への回転を表す回転行列によって表現されてもよいし、3次のベクトルまたは3つの角度によって表現されてもよい。また、本実施形態においては、コントローラ5の姿勢として3次元空間における姿勢が用いられるが、他の実施形態においては、2次元平面における姿勢が用いられてもよい。姿勢データ111は、コントローラ5からのコントローラ操作データ101に含まれるメイン加速度データ103、角速度データ104、およびマーカ座標データ105に基づいて算出される。コントローラ5の姿勢の算出方法についてはステップS11で後述する。
キャラクタデータ112は、プレイヤキャラクタ91の位置および向きを表すデータである。プレイヤキャラクタ91に設定される各種情報(ここでは、ゲーム空間における位置および向き)を表す。本実施形態においては、プレイヤキャラクタ91の位置および向きは、コントローラ5からのサブスティックデータ106に基づいて算出される。
ボウガンデータ113は、プレイヤキャラクタ91が持つボウガン92の位置および姿勢(射撃方向)を表すデータである。詳細は後述するが、本実施形態においては、ボウガン92の位置はプレイヤキャラクタ91の位置に基づいて算出され、ボウガン92の姿勢は上記姿勢データ111に基づいて算出される。
矢データ114は、矢93の位置および姿勢、ならびに、移動状態を表すデータである。矢93は、発射される前においてはボウガン92と共に移動し、発射された後においてはボウガン92の位置から上記射撃方向へ移動する。そして、矢93はゲーム空間内における他のオブジェクトに接触するとその接触した位置で停止する。なお、上記移動状態とは、矢93が発射前である状態、移動中である状態、あるいは移動を停止した状態のうちのいずれかの状態である。矢データ114は、これらの状態のいずれかを表す。
テレビ用カメラデータ115は、ゲーム空間に設定されるテレビ用カメラの位置および姿勢を表す。本実施形態においては、テレビ用カメラはプレイヤキャラクタ91の位置および向きに基づいて設定される。
端末用カメラデータ116は、ゲーム空間に設定される端末用カメラの位置および姿勢を表す。本実施形態においては、端末用カメラは矢93の位置に基づいて設定される。
次に、ゲーム装置3において実行されるゲーム処理の詳細を、図16〜図19を用いて説明する。図16は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図16に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、ゲーム装置3においては、電源投入後にゲームプログラムがすぐに実行される構成であってもよいし、電源投入後にまず所定のメニュー画面を表示する内蔵プログラムが実行され、その後例えばユーザによるメニュー画面に対する選択操作によってゲームの開始が指示されたことに応じてゲームプログラムが実行される構成であってもよい。
なお、図16〜図19に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU10が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU10以外のプロセッサや専用回路が実行するようにしてもよい。
まずステップS1において、CPU10は初期処理を実行する。初期処理は、仮想のゲーム空間を構築し、ゲーム空間に登場する各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。なお、本実施形態においては、プレイヤキャラクタ91が所定の位置および所定の向きに配置される。すなわち、当該所定の位置および向きを表すデータがキャラクタデータ112としてメインメモリに記憶される。また、プレイヤキャラクタ91の位置および向きに応じた初期位置および初期姿勢でテレビ用カメラが設定される。さらに、プレイヤキャラクタ91の位置および向きに応じてボウガン92(矢93)の位置および姿勢が決定され、矢93の位置および姿勢に応じて端末用カメラが設定される。テレビ用カメラの初期位置および初期姿勢を表すデータは、テレビ用カメラデータ115としてメインメモリに記憶され、端末用カメラの初期位置および初期姿勢を表すデータは、端末用カメラデータ116としてメインメモリに記憶される。また、ボウガン92の向きを表すデータがボウガンデータ113としてメインメモリに記憶される。ステップS1の次にステップS2の処理が実行される。以降、ステップS2〜S8の一連の処理からなる処理ループが所定時間(1フレーム時間。例えば1/60秒)に1回の割合で繰り返し実行される。
ステップS2において、CPU10は、2つのコントローラ5から送信されてくるコントローラ操作データをそれぞれ取得する。各コントローラ5はコントローラ操作データをゲーム装置3へ繰り返し送信するので、ゲーム装置3においては、コントローラ通信モジュール19が各コントローラ操作データを逐次受信し、受信された各コントローラ操作データが入出力プロセッサ11aによってメインメモリに逐次記憶される。コントローラ5とゲーム装置3との間における送受信の間隔はゲームの処理時間よりも短い方が好ましく、例えば200分の1秒である。ステップS2においては、CPU10は、最新のコントローラ操作データ101をメインメモリから読み出す。ステップS2の次にステップS3の処理が実行される。
ステップS3において、CPU10はゲーム制御処理を実行する。ゲーム制御処理は、プレイヤによるゲーム操作に従ってゲーム空間内の各オブジェクト(プレイヤキャラクタ91を含む)を動作させる処理等を実行し、ゲームを進行させる処理である。具体的には、本実施形態におけるゲーム制御処理においては、プレイヤキャラクタ91の動作を制御する処理、および、各仮想カメラを制御する処理等が実行される。以下、図17を参照して、ゲーム制御処理の詳細について説明する。
図17は、図16に示すゲーム制御処理(ステップS3)の詳細な流れを示すフローチャートである。ゲーム制御処理においてはまずステップS11において、CPU10は姿勢算出処理を実行する。ステップS11における姿勢算出処理は、コントローラ5の操作データに含まれる、姿勢を算出するための物理量に基づいてコントローラ5(メインコントローラ8)の姿勢を算出する処理である。なお、本実施形態においては、姿勢を算出するための物理量として、ジャイロセンサ48が検出する角速度、加速度センサ37が検出する加速度、および、撮像情報演算部35が算出するマーカ座標が用いられる。以下、図18を参照して、姿勢算出処理の詳細について説明する。
図18は、図17に示す姿勢算出処理(ステップS11)の詳細な流れを示すフローチャートである。姿勢算出処理においては、まずステップS21において、CPU10は、角速度データ104に基づいてコントローラ5の姿勢を算出する。角速度に基づく姿勢を算出する方法はどのような方法であってもよいが、当該姿勢は、前回の姿勢(前回の処理ループにおけるステップS11で算出された姿勢)と、今回の角速度(今回の処理ループにおけるステップS2で取得された角速度)とを用いて算出される。具体的には、CPU10は、前回の姿勢を今回の角速度で単位時間分だけ回転させることによって姿勢を算出する。なお、前回の姿勢は、メインメモリに記憶されている姿勢データ111により表され、今回の角速度は、メインメモリに記憶されている角速度データ104により表される。したがって、CPU10は、姿勢データ111および角速度データ104をメインメモリから読み出して、コントローラ5の姿勢を算出する。以上のようにして算出された姿勢を表すデータはメインメモリに記憶される。ステップS21の次にステップS22の処理が実行される。
なお、上記ステップS21において角速度から姿勢を算出する場合、初期姿勢を定めておくのがよい。つまり、コントローラ5の姿勢を角速度から算出する場合には、CPU10は、最初にコントローラ5の初期姿勢を設定しておく。コントローラ5の初期姿勢は、メイン加速度データ103に基づいて算出されてもよいし、コントローラ5を特定の姿勢にした状態でプレイヤに所定の操作を行わせることで、所定の操作が行われた時点における特定の姿勢を初期姿勢として設定するようにしてもよい。なお、空間における所定方向を基準とした絶対的な姿勢としてコントローラ5の姿勢を算出する場合には上記初期姿勢を算出することが良いが、例えばゲーム開始時点におけるコントローラ5の姿勢を基準とした相対的な姿勢としてコントローラ5の姿勢を算出する場合には、上記初期姿勢は算出されなくても良い。
ステップS22において、CPU10は、ステップS21で算出された姿勢を、コントローラ5の加速度に基づいて補正する。ここで、コントローラ5がほぼ静止している状態では、コントローラ5に対して加えられる加速度は重力加速度に相当する。つまり、この状態では、コントローラ5に関するメイン加速度データ103が表す加速度ベクトルは、コントローラ5における重力方向を表す。したがって、CPU10は、ステップS21で算出された姿勢の下方向(重力方向)を、加速度ベクトルの表す重力方向へ近づける補正を行う。すなわち、上記下方向が加速度ベクトルの表す重力方向へ所定の割合で近づくように、上記姿勢を回転させる。これによって、角速度に基づく姿勢を、加速度に基づく重力方向を考慮した姿勢となるように補正することができる。なお、上記所定の割合は、予め定められた固定値であってもよいし、検出される加速度等に応じて設定されてもよい。例えば、CPU10は、検出される加速度の大きさが重力加速度の大きさに近い場合には、上記姿勢の下方向を加速度ベクトルの表す重力方向へ近づける割合を大きくし、検出される加速度の大きさが重力加速度の大きさから離れている場合には、当該割合を小さくするようにしてもよい。
ステップS22の具体的な処理としては、CPU10は、ステップS21で算出された姿勢を表すデータと、メイン加速度データ103とをメインメモリから読み出し、上記の補正を行う。そして、補正が行われた後の姿勢を表すデータをメインメモリに記憶する。上記ステップS22の次にステップS23の処理が実行される。
ステップS23において、CPU10は、マーカ(端末装置7が有するマーカ部55のマーカ55aおよび55b、あるいは、マーカ装置6のマーカ6Rおよび6L)がコントローラ5の撮像手段(撮像素子40)によって撮像されているか否かを判定する。ステップS23の判定は、メインメモリに記憶されているコントローラ5に関するマーカ座標データ105を参照することによって行うことができる。ここでは、マーカ座標データ105が2つのマーカ座標を表す場合、マーカが撮像されていると判定し、マーカ座標データ105が1つのマーカ座標のみを表す場合、または、マーカ座標がないことを表す場合、マーカが撮像されていないと判定する。ステップS23の判定結果が肯定である場合、以降のステップS24およびS25の処理が実行される。一方、ステップS23の判定結果が否定である場合、ステップ24およびS25の処理がスキップされ、CPU10は姿勢算出処理を終了する。このように、撮像素子40によってマーカが撮像されていない場合には、撮像素子40から得られるデータを用いてコントローラ5の姿勢(マーカ座標に基づく姿勢)を算出することができないので、この場合には当該姿勢を用いた補正は行われない。
なお、本実施形態においては、マーカ装置6をコントローラ5の撮像対象とする。すなわち、ゲーム装置3は、マーカ装置6を発光させ、マーカ部55を発光させないように制御する。なお、他の実施形態においては、マーカ部55のみが発光し、マーカ部55がコントローラ5の撮像対象として用いられてもよいし、状況に応じてマーカ装置6とマーカ部55とを時分割で発光させることで、両方のマーカがコントローラ5の撮像対象として用いられてもよい。
ステップS24において、CPU10は、マーカ座標に基づいてコントローラ5の姿勢を算出する。マーカ座標は、撮像画像内における2つのマーカ(マーカ6Lおよび6R、または、マーカ55Aおよび55B)の位置を示すので、これらの位置からコントローラ5の姿勢を算出することができる。以下、マーカ座標に基づくコントローラ5の姿勢の算出方法について説明する。なお、以下におけるロール方向、ヨー方向、およびピッチ方向とは、コントローラ5の撮像方向(Z軸正方向)がマーカを指し示す状態(基準状態)にあるコントローラ5のZ軸回りの回転方向、Y軸回りの回転方向、およびX軸回りの回転方向を指す。
まず、ロール方向(Z軸回りの回転方向)に関する姿勢は、撮像画像内において2つのマーカ座標を結ぶ直線の傾きから算出することができる。すなわち、ロール方向に関する姿勢を算出する際、CPU10はまず、2つのマーカ座標を結ぶベクトルを算出する。このベクトルは、コントローラ5のロール方向の回転に応じて向きが変化するので、CPU10は、ロール方向に関する姿勢をこのベクトルに基づいて算出することができる。例えば、ロール方向に関する姿勢は、所定の姿勢の時のベクトルを現在のベクトルへと回転させる回転行列として算出されてもよいし、所定の姿勢の時のベクトルと現在のベクトルとのなす角度として計算されてもよい。
また、コントローラ5の位置が概ね一定であると想定できる場合には、撮像画像内におけるマーカ座標の位置から、ピッチ方向(X軸回りの回転方向)およびヨー方向(Y軸回りの回転方向)に関するコントローラ5の姿勢を算出することができる。具体的には、CPU10はまず、2つのマーカ座標の中点の位置を算出する。つまり、本実施形態では撮像画像内におけるマーカの位置として当該中点の位置が用いられる。次に、CPU10は、撮像画像の中央の位置を中心として、コントローラ5のロール方向に関する回転角度だけ(コントローラ5の回転方向とは逆方向に)上記中点を回転させる補正を行う。換言すれば、中点は、撮像画像の中央の位置を中心として、上記ベクトルが水平方向を向くように回転される。
上記のようにして得られた補正後の中点位置から、コントローラ5のヨー方向およびピッチ方向に関する姿勢を算出することができる。すなわち、上記基準状態において、補正後の中点位置は撮像画像の中央の位置となる。また、補正後の中点位置は、基準状態からコントローラ5の姿勢が変化した方向とは逆方向に、変化した量に応じた量だけ、撮像画像の中央の位置から移動する。したがって、基準状態におけるコントローラ5の姿勢から当該姿勢が変化した方向および量(角度)は、撮像画像の中央の位置を基準とした補正後の中点位置の変化方向および変化量に基づいて算出される。また、コントローラ5のヨー方向は撮像画像の横方向に対応し、コントローラ5のピッチ方向は撮像画像の縦方向に対応するので、ヨー方向およびピッチ方向の姿勢を個別に算出することも可能である。
なお、ゲームシステム1においては、プレイヤがゲームを行う態勢(立っているか座っているか等)や、マーカの位置(マーカ装置6がテレビ2の上に配置されるか下に配置されるか等)は様々であることから、鉛直方向に関しては、コントローラ5の位置が概ね一定であるとの上記想定が成り立たないおそれがある。つまり、本実施形態においては、ピッチ方向については姿勢を正確に算出することができないおそれがあるので、CPU10は、ピッチ方向についてはマーカ座標に基づく姿勢を算出せず、ピッチ方向についてはステップS22で補正された姿勢を用いるものとする。
以上より、上記ステップS24においては、CPU10は、マーカ座標データ105をメインメモリから読み出し、ロール方向に関する姿勢とヨー方向に関する姿勢とを2つのマーカ座標に基づいて算出する。また、ステップS22で補正された姿勢を表すデータを読み出し、ピッチ方向に関する姿勢を抽出する。なお、各方向に関する姿勢を例えば回転行列として算出する場合、コントローラ5の姿勢は、各方向に対応する回転行列を積算することで得ることができる。算出された姿勢を表すデータはメインメモリに記憶される。上記ステップS24の次にステップS25の処理が実行される。
ステップS25において、CPU10は、マーカ座標に基づく姿勢を用いて、角速度に基づく姿勢を補正する。具体的には、CPU10は、ステップS22で補正された姿勢(角速度に基づく姿勢)を表すデータと、ステップS24で算出された姿勢(マーカ座標に基づく姿勢)を表すデータとをメインメモリから読み出し、角速度に基づく姿勢をマーカ座標に基づく姿勢へ所定の割合で近づける補正を行う。この所定の割合は、例えば予め定められた固定値であってもよい。以上のようにして得られた補正後の姿勢を表すデータが、新たな姿勢データ111としてメインメモリに記憶される。つまり、ステップS25の補正処理後における姿勢データ111が、コントローラ5の最終的な姿勢として後の処理に用いられる。上記ステップS25の終了後、CPU10は姿勢算出処理を終了する。
なお、本実施形態においては、CPU10は、ロール方向およびヨー方向に関する姿勢をマーカ座標に基づいて算出し、ピッチ方向についてはマーカ座標を用いた姿勢の補正処理を行わないこととした。ただし、他の実施形態においては、CPU10は、ピッチ方向についてもヨー方向と同様の方法でマーカ座標に基づいて(ピッチ方向に関する)姿勢を算出するようにし、ピッチ方向についてもマーカ座標を用いた姿勢の補正処理を行うようにしてもよい。
上記姿勢算出処理によれば、CPU10は、角速度データ104に基づいて算出されたコントローラ5の姿勢を、メイン加速度データ103およびマーカ座標データ105を用いて補正した。ここで、コントローラ5の姿勢を算出する方法のうち、角速度を用いる方法では、コントローラ5がどのように動いているときであっても姿勢を算出することができる。一方、角速度を用いる方法では、逐次検出される角速度を累積加算していくことによって姿勢を算出するので、誤差が累積すること等によって精度が悪くなったり、いわゆる温度ドリフトの問題でジャイロセンサ48の精度が悪くなったりするおそれがある。また、加速度を用いる方法は、誤差が蓄積しない一方、コントローラ5が激しく動かされている状態では、(重力方向を正確に検出することができないので)姿勢を精度良く算出することができない。また、マーカ座標を用いる方法は、(特にロール方向に関して)姿勢を精度良く算出することができる一方、マーカを撮像できない状態では姿勢を算出することができない。これに対して、本実施形態によれば、上記のように特長の異なる3種類の方法を用いるので、コントローラ5の姿勢をより正確に算出することができる。なお、他の実施形態においては、上記3つの方法のうちいずれか1つまたは2つを用いて姿勢を算出するようにしてもよい。
また、本実施形態においては、コントローラ5の姿勢は、コントローラ5が有する慣性センサ(加速度センサ37およびジャイロセンサ48)の検出結果を用いて算出された。ここで、他の実施形態においては、コントローラ5の姿勢の算出方法はどのような方法であってもよい。例えば、他の実施形態においては、コントローラ5が他のセンサ部(例えば磁気センサ62やカメラ56)を有している場合には、当該他のセンサ部の検出結果を用いてコントローラ5の姿勢が算出されてもよい。また、例えば、ゲームシステム1がコントローラ5を撮像するカメラを備えている場合には、ゲーム装置3は当該カメラでコントローラ5を撮像した撮像結果を取得し、撮像結果を用いてコントローラ5の姿勢を算出するようにしてもよい。
図17の説明に戻り、ステップS11の次のステップS12において、CPU10は、コントローラ操作データ101に基づいてプレイヤキャラクタ91の動作を制御する。本実施形態では、プレイヤキャラクタ91は、アナログジョイスティック81に対する方向入力に応じて位置および向きを変化させて移動する。具体的には、プレイヤキャラクタ91は、テレビ用カメラの視線方向とアナログジョイスティック81に対する方向入力とに基づく方向を向いて、当該方向に向かって移動する。例えば、アナログジョイスティック81における真上方向の入力に対しては、プレイヤキャラクタ91はテレビ用カメラの視線方向(つまり、テレビ用ゲーム画像に表示されるゲーム空間の正面方向)を向いて移動し、アナログジョイスティック81における右方向の入力に対しては、テレビ用カメラの視線方向から右方向を向いて移動する。なお、プレイヤキャラクタ91の具体的な移動方法はどのような方法であってもよく、他の実施形態においては、アナログジョイスティック81に対する方向入力に応じた方向へ平行移動する(すなわち、向きを変えずに移動する)ようにプレイヤキャラクタ91の移動が制御されてもよい。
ステップS12の具体的な処理としては、CPU10は、キャラクタデータ112をメインメモリから読み出し、ステップS2で取得したコントローラ操作データ101と、当該キャラクタデータ112とに基づいて、プレイヤキャラクタ91の移動後の位置および向きを算出する。そして、算出された移動後の位置および向きを表すデータを新たなキャラクタデータ112としてメインメモリに記憶する。ステップS12の次にステップS13の処理が実行される。
ステップS13において、CPU10は、ゲーム空間内においてテレビ用カメラをプレイヤキャラクタ91の動きに応じて制御する。本実施形態においては、プレイヤキャラクタ91を視野範囲に含むようにテレビ用カメラが設定される。具体的には、テレビ用カメラは、プレイヤキャラクタ91から所定距離だけ後方の位置に、プレイヤキャラクタ91の方を向くように設定される。なお、他の実施形態では、テレビ用カメラの視線方向が急激に変化することを防止するために、テレビ用カメラは、プレイヤキャラクタ91の移動に追従して引っ張られるように制御されてもよい。すなわち、テレビ用カメラは、プレイヤキャラクタ91から所定距離の位置に、プレイヤキャラクタ91の向きに遅れて追従するような向きとなるように設定されてもよい。ステップS13の具体的な処理としては、CPU10は、キャラクタデータ112をメインメモリから読み出し、テレビ用カメラの位置および向きを算出する。そして、算出された位置および向きを表すデータをテレビ用カメラデータ115としてメインメモリに記憶する。ステップS13の次にステップS14の処理が実行される。
ステップS14において、CPU10は射撃処理を実行する。射撃処理は、プレイヤキャラクタ91が持つボウガン92の射撃方向を制御したり、射撃方向に矢93を発射させたりする処理である。以下、図19を参照して、射撃処理の詳細について説明する。
図19は、図17に示す射撃処理(ステップS14)の詳細な流れを示すフローチャートである。射撃処理においてはまずステップS31において、CPU10は、ボウガン92の射撃方向(すなわち、ボウガン92の姿勢)をコントローラ5の姿勢に基づいて制御する。具体的には、CPU10は、ボウガン92の位置および姿勢を算出する。ボウガン92の位置は、ステップS12で算出されたプレイヤキャラクタ91の位置から決まる所定位置に設定される。また、ボウガン92の姿勢は、現実空間におけるコントローラ5の姿勢と対応するように算出される。具体的には、コントローラ5のZ軸正方向が水平でかつマーカ装置6の方を向くときの姿勢を基準姿勢とし、コントローラ5が当該基準姿勢となる場合にボウガン92はプレイヤキャラクタ91の正面方向を向く。そして、コントローラ5が上記基準姿勢から回転した場合、ボウガン92は、当該基準姿勢時におけるボウガン92の姿勢から、コントローラ5の姿勢の変化方向に応じた方向に、変化量に応じた量だけ回転される。なお、ボウガン92の姿勢は、コントローラ5の姿勢の変化に応じて変化するように制御されればどのように制御されてもよい。ステップS31の具体的な処理としては、CPU10は、姿勢データ111およびキャラクタデータ112をメインメモリから読み出し、プレイヤキャラクタ91の位置に基づいてボウガン92の位置を算出する。また、コントローラ5の姿勢とプレイヤキャラクタ91の向きとに基づいてボウガン92の姿勢を算出する。算出されたボウガン92の位置および姿勢を表すデータは、ボウガンデータ113としてメインメモリに記憶される。ステップS31の次にステップS32の処理が実行される。
ステップS32において、CPU10は、矢93がボウガン92から発射される前であるか否かを判定する。CPU10は、矢データ114をメインメモリから読み出し、矢93が発射前であることを矢データ114が表すか否かを判定する。ステップS32の判定結果が肯定である場合、ステップS33の処理が実行される。一方、ステップS32の判定結果が否定である場合、後述するステップS36の処理が実行される。
ステップS33において、CPU10は、プレイヤキャラクタ91およびボウガン92の移動に応じて矢93を移動させる。すなわち、矢93は、ボウガン92の位置に、射撃方向を向く姿勢に設定される。したがって、設定後の矢93の位置および姿勢と、発射前であることとを表すデータが矢データ114としてメインメモリに記憶される。ステップS33の次にステップS34の処理が実行される。
ステップS34において、CPU10は、発射操作が行われたか否かを判定する。発射操作は、プレイヤキャラクタ91に射撃動作を行わせるための操作であり、例えば所定のボタン(ここではメインコントローラ8のBボタン32i)を押下する操作である。具体的には、CPU10は、ステップS2で取得したメイン操作ボタンデータ102を参照することによって、上記所定のボタンが押下されたか否かを判定する。ステップS34の判定結果が肯定である場合、ステップS35の処理が実行される。一方、ステップS34の判定結果が否定である場合、ステップS35の処理がスキップされてCPU10は射撃処理を終了する。
ステップS35において、CPU10は、射撃方向への矢93の移動を開始する。まず、CPU10は、ボウガンデータ113をメインメモリから読み出し、ボウガン92の位置から、ステップS31で決定された射撃方向へ、所定の移動規則に従って矢93を移動させた場合の移動軌跡を算出する。算出された移動軌跡を表すデータはメインメモリに記憶される。なお、所定の移動規則は、ゲームプログラム100において予め定められており、具体的な移動方法はどのようなものであってもよい。例えば、矢93は射撃方向に一直線に移動するように制御されてもよいし、ゲーム空間において設定される重力の影響を考慮して放物線を描いて移動するように制御されてもよい。また、他の実施形態においては、端末用カメラと共に移動するオブジェクト(本実施形態では矢93)の移動がプレイヤによる操作に従って制御されてもよい。なお、移動開始時における矢93の移動方向は、射撃方向によって決められればよく、射撃方向と一致していなくてもよい。例えば、矢93が放物線を描いて移動する場合には、移動開始時における矢93の移動方向と射撃方向とを一致させると、射撃方向よりも下に向かって矢93が発射されたようにプレイヤが感じる場合がある。このような場合には、CPU10は、射撃方向よりもやや上向きに向かって矢93を発射(移動)させるようにしてもよい。
上記移動軌跡を算出した次に、CPU10は、上記移動軌跡に沿って所定距離だけ矢93を移動させる。この所定距離は、1フレーム時間における矢93の移動距離である。移動後の矢93の位置および姿勢と移動中であることとを表すデータは、矢データ114としてメインメモリに記憶される。以上のステップS35の後、CPU10は射撃処理を終了する。
以上のように、本実施形態においては、コントローラ5の姿勢を変化させる操作によって射撃方向が決定される(ステップS31)とともに、発射操作が行われたことに応じてゲーム空間内における矢93の着弾位置が指定される(ステップS35)。また、詳細はステップS15において後述するが、本実施形態においては、この着弾位置に端末カメラが設置される。つまり、本実施形態においては、プレイヤの操作(操作データ)に基づいてゲーム空間内における位置が指定され、指定された位置に端末用カメラが設定されることになる。
また、CPU10は、プレイヤの操作(操作データ)に基づいてゲーム空間内における方向(射撃方向)を指定し(ステップS31)、指定された方向によって決められる位置(矢93の着弾位置)を指定する(ステップS35)。このように、本実施形態によれば、プレイヤは、ゲーム空間内の方向を指定することで仮想カメラの位置を指定することができる。これによれば、仮想カメラの設置位置を直接指定する場合に比べて、設置位置を指定する操作の難易度を上げることができるので、ゲームの興趣性を向上することができる。すなわち、本実施形態におけるゲームにおいては、ゲーム空間内のどの位置に仮想カメラを設定するとゲームを有利に進めることができるかを判断する面白さに加え、狙った位置に仮想カメラを設定する操作スキルが要求される面白さがあるので、ゲームの興趣性をより向上することができる。また、本実施形態のような射撃操作に応用する等、仮想カメラを設定する操作を種々のゲームに応用することができる。
また、CPU10は、指定された位置(矢93の着弾位置)がコントローラ5の姿勢の変化に応じて変化するように当該位置を算出する(ステップS31およびS35)。したがって、プレイヤは、コントローラ5を用いた直感的かつ容易な操作によって仮想カメラの設置位置を指定することができる。
一方、ステップS36において、CPU10は、矢93が移動中であるか否かを判定する。すなわち、矢データ114をメインメモリから読み出し、矢93が移動中であることを矢データ114が表すか否かを判定する。ステップS36の判定結果が肯定である場合、ステップS37の処理が実行される。一方、ステップS36の判定結果が否定である場合、CPU10は射撃処理を終了する。
ステップS37において、CPU10は、上記ステップS35で算出された移動軌跡に沿って矢93を移動させる。CPU10は、上記移動軌跡を表すデータと矢データ114とをメインメモリから読み出し、現在の矢93の位置から移動軌跡に沿って移動させた矢93の位置および姿勢を算出する。なお、1回のステップS37の処理では矢93は1フレーム時間分の移動量だけ移動される。CPU10は、移動後の位置および姿勢と移動中であることとを表すデータを新たな矢データ114としてメインメモリに記憶する。このように、本実施形態においては、CPU10は、所定の操作(発射操作)が行われたことに応じて、ゲーム空間内におけるオブジェクト(矢93)を、指定された位置へ移動させる処理を実行する。ステップS37の次にステップS38の処理が実行される。
ステップS38において、CPU10は、矢93がゲーム空間内の他のオブジェクトに当たった(接触した)か否かを判定する。すなわち、CPU10は、矢データ114をメインメモリから読み出し、矢93と他のオブジェクトとが接触したか否かを判定する。ステップS38の判定結果が肯定である場合、ステップS39の処理が実行される。一方、ステップS38の判定結果が否定である場合、ステップS39の処理がスキップされてCPU10は射撃処理を終了する。
ステップS39において、CPU10は、矢93の移動を停止させる。すなわち、CPU10は、上記ステップS37で算出された矢93の位置および姿勢と、矢93が停止したこととを表すデータを矢データ114としてメインメモリ記憶する。これによって、以降の射撃処理では矢93の移動が停止される。ステップS39の処理の後、CPU10は射撃処理を終了する。
以上のように、CPU10は、所定の発射操作が行われたことに応じて、ゲーム空間内におけるオブジェクト(矢93)を指定された位置(矢93の着弾位置)へ移動させる(ステップS37〜S39)。また、端末用カメラはこのオブジェクトと共に移動する(後述するステップS16)。したがって、本実施形態においては、プレイヤは、矢93を発射する操作によって端末用カメラを移動させて、所望の位置に端末用カメラを設置することができる。
なお、本実施形態においては、発射操作が行われた場合、CPU10は、移動軌跡(すなわち、端末用カメラの設置位置)を先に算出し(ステップS35)、その後、移動軌跡に沿って矢93(および端末用カメラ)を移動させる処理(ステップS37)を繰り返し実行した。ここで、他の実施形態においては、CPU10は移動軌跡を先に算出しなくてもよい。すなわち、CPU10は、ステップS35においては矢93を所定方向へ移動させ、その後に実行されるステップS37においては、矢93を移動させるべき方向を当該所定方向に基づいて逐次算出することで、矢93を逐次移動させてもよい。また、他の実施形態においては、仮想カメラと共に移動するオブジェクト(ここでは矢93)の移動中において、当該オブジェクト(および仮想カメラ)の移動がプレイヤによって操作可能であるようにしてもよい。すなわち、上記ステップS37において、CPU10は、プレイヤによる操作(操作データ)に基づいて矢93の移動方向および/または移動量を算出するようにしてもよい。
図17の説明に戻り、ステップS14の次のステップS15において、CPU10は、矢93の移動に応じて端末用カメラを移動させる。具体的には、端末用カメラの位置は、矢93の位置に設定される。また、端末用カメラの姿勢(視線方向)は、矢93の姿勢の変化に応じて変更される。すなわち、矢93の姿勢が変化した方向に応じた方向へ、矢93の姿勢が変化した量だけ端末用カメラの姿勢が変更される。ステップS15の具体的な処理としては、CPU10は、矢データ114および第2カメラデータ116をメインメモリから読み出し、端末用カメラの位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを新たな第2カメラデータ116としてメインメモリに記憶する。ステップS15の次にステップS16の処理が実行される。
上記ステップS15のように、本実施形態においては、矢93の位置に端末用カメラが設定される。つまり、発射操作が行われることによって矢93の着弾位置が指定された場合(ステップS35)には、指定された位置に端末用カメラが設定される。
また、本実施形態においては、仮想カメラの設定位置が指定されていない場合(すなわち、発射操作が行われていない場合)には、矢93はプレイヤキャラクタ91の動きに応じた位置に設定される(ステップS33)ので、端末用カメラはプレイヤキャラクタ91の動きに応じて移動する。これによれば、発射操作を行う前の状態においてはプレイヤは、プレイヤキャラクタ91を移動させる操作とは別に端末用カメラを移動させる操作を行う必要がないので、ゲーム操作が容易になる。また、端末用カメラを設定する位置を指定する際において、プレイヤは、指定する位置を端末用ゲーム画像を見ながら確認することができる。これによれば、プレイヤは、ゲーム空間における位置を指定し、指定した位置から見たゲーム空間の画像を確認する一連の操作を、端末装置7に表示されるゲーム画像だけを見て行うことも可能である(もちろん、テレビ2に表示されるゲーム画像と見比べながら操作を行ってもよい)。したがって、プレイヤは、上記一連の操作をより容易に行うことができる。
また、本実施形態においては、矢93が発射される前の状態(すなわち、端末用カメラの設定位置が指定されない場合)においては、矢93はボウガン92の位置に設定され(ステップS33)、端末用カメラもボウガン92の位置に設定されることになる。つまり、上記の状態においては、プレイヤキャラクタ91から見た視点となる位置に端末用カメラが設定される。一方、テレビ用カメラは、プレイヤキャラクタ91を視野範囲に含むように設定される(ステップS13)。したがって、上記の状態においては、いわゆる主観視点のゲーム画像が端末装置7に表示されるとともに、客観視点のゲーム画像がテレビ2に表示される(図12および図13)。これによれば、プレイヤは、異なる視点でゲーム空間を視認することができるので、ゲーム空間内の状況を容易に把握することができる。例えば、端末用カメラを所望の位置に設置する場合には、プレイヤは、客観視点のテレビ用ゲーム画像を見ることで(プレイヤキャラクタ91と周囲のオブジェクトとの位置関係を確認して)端末用カメラを設置するべき大まかな位置を決めた後、主観視点の端末用ゲーム画像を見ることで詳細な位置を決めることができる。このように、異なる視点の2つのゲーム画像を表示することによって、端末用カメラを設置する操作が行いやすくなる。
また、矢93の姿勢は、上記ステップS31で指定された方向(射撃方向)の変化に応じて変化する(ステップS33)ので、端末用カメラも当該方向の変化に応じて変化する。これによれば、プレイヤは、端末用ゲーム画像の表示範囲を変更する操作と、指定すべき方向(仮想カメラを設定すべき位置)を変更する操作とを同時に行うことができ、ゲーム空間の広範囲に亘って端末用カメラを容易に設定することができる。
ステップS16において、CPU10は、所定の向き変更操作に応じて端末用カメラの向きを変更する。ここで、向き変更操作は、方向を入力可能な操作であればどのような操作であってもよいが、本実施形態においては、サブコントローラ9のCボタンを押下した状態でのアナログジョイスティック81に対する方向入力の操作である。CPU10は、上記状態でのアナログジョイスティック81に対する上下左右の方向入力に応じた方向へ、端末用カメラを回転させる。なお、端末用カメラの回転量は、予め定められた固定量であってもよいし、アナログジョイスティック81の傾倒量に応じた量であってもよい。また、本実施形態においては、端末用カメラは、上下方向の入力に応じてピッチ方向に回転し、左右方向の入力に応じてヨー方向に回転し、ロール方向(視線方向を軸とした回転方向)に関しては回転しない。ただし、他の実施形態においては、端末用カメラはロール方向に回転可能に制御されてもよい。ステップS16の具体的な処理としては、CPU10は、第2カメラデータ116をメインメモリから読み出し、ステップS2で取得したコントローラ操作データ101と当該第2カメラデータ116とに基づいて、端末用カメラの変更後の姿勢を算出する。そして、変更後の姿勢を表すように第2カメラデータ116を更新する。ステップS16の後、CPU10はゲーム制御処理を終了する。
上記ステップS16の処理によれば、プレイヤキャラクタ91に対する操作とは異なる向き変更操作に応じて端末用カメラの向きが変更される。つまり、CPU10は、プレイヤキャラクタ91の移動とは独立して、プレイヤによる操作(操作データ)に基づいて端末用カメラの向きを制御する。したがって、プレイヤは、端末用カメラの位置を指定できることに加えて視線方向を変更することができ、端末用ゲーム画像の視線をより自由に変更することができる。
なお、本実施形態においては、ステップS16の処理は、端末用カメラを設置する位置を指定する(発射操作を行う)前においても後においても実行される。つまり、プレイヤは、発射操作の前においても後においても上記の向き変更操作を行うことが可能であった。ここで、他の実施形態においては、CPU10は、発射操作の後(あるいは前)にのみ向き変更操作を行うことをプレイヤに許可するようにしてもよい。
図16の説明に戻り、ステップS3のゲーム制御処理の次にステップS4の処理が実行される。ステップS4においては、客観視点のゲーム画像であるテレビ用ゲーム画像が上記ゲーム制御処理に基づいて生成される。すなわち、CPU10およびGPU11bは、ステップS3のゲーム制御処理の結果を表すデータ(ゲーム空間における各オブジェクトのデータ112〜114や、第1カメラデータ115等)をメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをVRAM11dから読み出し、テレビ用ゲーム画像を生成する。本実施形態では、上記テレビ用カメラに基づいてテレビ用ゲーム画像が生成される。その結果、プレイヤキャラクタ91を含むゲーム空間を表すゲーム画像がテレビ用ゲーム画像として生成される。なお、このとき、プレイヤキャラクタ91は半透明にしてテレビ用ゲーム画像は生成される。生成されたテレビ用ゲーム画像はVRAM11dに記憶される。上記ステップS4の次にステップS5の処理が実行される。
ステップS5においては、矢93の位置から見たゲーム画像である端末用ゲーム画像が上記ゲーム制御処理に基づいて生成される。すなわち、CPU10およびGPU11bは、ステップS3のゲーム制御処理の結果を表すデータをメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをVRAM11dから読み出し、端末用ゲーム画像を生成する。本実施形態では、上記端末用カメラに基づいて端末用ゲーム画像が生成される。その結果、矢93の位置からゲーム空間を見たゲーム画像が端末用ゲーム画像として生成される。生成されたテレビ用ゲーム画像はVRAM11dに記憶される。上記ステップS5の次にステップS6の処理が実行される。
ステップS6において、CPU10は、テレビ2へゲーム画像を出力する。具体的には、CPU10は、VRAM11dに記憶されたテレビ用ゲーム画像のデータをAV−IC15へ送る。これに応じて、AV−IC15はテレビ用ゲーム画像のデータを、AVコネクタ16を介してテレビ2へ出力する。これによって、テレビ用ゲーム画像がテレビ2に表示される。また、ステップS6においては、ゲーム画像のデータと共にゲーム音声のデータがテレビ2へ出力され、テレビ2のスピーカ2aからゲーム音声が出力されてもよい。ステップS6の次にステップS7の処理が実行される。
ステップS7において、CPU10は、端末装置7へゲーム画像を出力する。具体的には、VRAM11dに記憶された端末用ゲーム画像の画像データは、CPU10によってコーデックLSI27に送られ、コーデックLSI27によって所定の圧縮処理が行われる。圧縮処理が施された画像のデータは、端末通信モジュール28によってアンテナ29を介して端末装置7へ送信される。端末装置7は、ゲーム装置3から送信されてくる画像のデータを無線モジュール70によって受信し、受信された画像データに対してコーデックLSI66によって所定の伸張処理が行われる。伸張処理が行われた画像データはLCD51に出力される。これによって、端末用ゲーム画像がLCD51に表示される。また、ステップS7においては、ゲーム画像のデータと共にゲーム音声のデータが端末装置7へ送信され、端末装置7のスピーカ67からゲーム音声が出力されてもよい。ステップS7の次にステップS8の処理が実行される。
ステップS8において、CPU10は、ゲームを終了するか否かを判定する。ステップS8の判定は、例えば、ゲームオーバーになったか否か、あるいは、ユーザがゲームを中止する指示を行ったか否か等によって行われる。ステップS8の判定結果が否定の場合、ステップS2の処理が再度実行される。一方、ステップS8の判定結果が肯定の場合、CPU10は図16に示すゲーム処理を終了する。なお、ゲーム処理を終了する際には、ゲームデータをメモリカード等にセーブする等の処理が実行されてもよい。以降、ステップS2〜S8の一連の処理は、ステップS8でゲームを終了すると判定されるまで繰り返し実行される。
上記ゲーム処理によれば、テレビ2には、プレイヤキャラクタ91の動きに応じた視点および視線でゲーム空間を見たゲーム画像が表示され(図12)、端末装置7には、プレイヤが指定した位置からゲーム空間を見たゲーム画像が表示される(図14)。したがって、ゲーム装置3は、複数の視点からゲーム空間を見た各ゲーム画像を2つの表示装置に表示させることができる。また、端末用ゲーム画像における視点の位置はプレイヤが設定することができるので、例えばテレビ用ゲーム画像では死角となって見えない場所を、端末用ゲーム画像によって見えるようにすることも可能である。したがって、本実施形態によれば、ゲーム空間をより把握しやすく、見やすいゲーム画像をプレイヤに提供することができる。また、本実施形態によれば、複数の視点からゲーム空間を見たそれぞれのゲーム画像を2つの表示装置によって同時に表示することができるので、プレイヤは、ゲーム画面を切り替える必要なくスムーズにゲームを行うことができる。
[7.変形例]
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
(位置の指定方法に関する変形例)
上記実施形態においては、仮想カメラ(端末用カメラ)を設定する位置は、コントローラ5の姿勢に応じて指定された。ここで、他の実施形態においては、上記位置は、操作データに基づいて指定(決定)されればよい。以下、位置の指定方法に関する変形例を説明する。
他の実施形態においては、CPU10は、操作データに基づいてテレビ用ゲーム画像上における位置座標を算出し、当該位置座標に対応するゲーム空間内の位置を指定してもよい。図20は、上記実施形態の変形例におけるテレビ用ゲーム画像の一例を示す図である。図20に示すゲーム画像は、図12に示すゲーム画像と比べて、カーソル97が表示される点で異なっている。本変形例では、カーソル97の位置がプレイヤの操作に従って制御される。そして、発射操作が行われたことに応じて、カーソル97が指し示すゲーム空間内の位置へ矢93が発射される。このように、端末用カメラの設定位置は、プレイヤによって操作されるカーソル97を用いて指定されてもよい。
図21は、図20に示す変形例における射撃処理の流れを示すフローチャートである。なお、図21において、図19に示す射撃処理と同じ処理ステップについては図19と同じステップ番号を付し、詳細な説明を省略する。
本変形例における射撃処理においては、ステップS41において、CPU10は、コントローラ操作データ101に基づいてテレビ2の画面上におけるカーソル位置を算出する。ステップS41の処理は、操作データに基づいてテレビ用ゲーム画像上における位置座標(カーソル位置の座標)を算出する処理である。カーソル位置は、どのような方法で算出されてもよいが、例えばコントローラ5の姿勢に応じて算出される。具体的には、CPU10は、コントローラ5が所定の姿勢(上述の基準姿勢でもよい)となる場合にテレビ2の画面中央の位置をカーソル位置とする。また、コントローラ5の姿勢が上記所定の姿勢から変化した場合には、変化した方向に応じた方向へ、変化した量に応じた移動量だけ画面中央から移動させた位置をカーソル位置とする。なお、他の実施形態においては、カーソル位置は、コントローラ5に対する方向入力(例えば、メインコントローラ8の32aあるいはサブコントローラ9のアナログジョイスティック81に対する方向入力)に基づいて制御されてもよい。ステップS41の具体的な処理としては、CPU10は、姿勢データ111をメインメモリから読み出し、コントローラ5の姿勢に基づいてカーソル位置を算出する。算出したカーソル位置を表すデータはメインメモリに記憶される。以上のステップS41の次にステップS32の処理が実行される。
ステップS32〜S34の処理は、本変形例においても上記実施形態と同様に実行される。また、ステップS34の判定結果が肯定である場合(すなわち、発射操作が行われた場合)、ステップS42の処理が実行される。ステップS42において、CPU10は、カーソル位置に対応するゲーム空間内の位置へ矢93の移動を開始させる。「カーソル位置に対応するゲーム空間内の位置」とは、カーソル97が指し示すゲーム空間内の位置である。より具体的には、ゲーム空間内において、カメラ位置からカーソル方向へ伸ばした直線が当たる位置である。矢93の移動については、CPU10は、まず、所定の移動規則に従って上記位置へ矢93を移動させた場合の移動軌跡を算出し、次に、移動軌跡に沿って所定距離だけ矢93を移動させる。ステップS42の具体的な処理としては、CPU10は、カーソル位置を表すデータと、矢データ114とをメインメモリから読み出し、上記移動軌跡を算出する。そして、移動軌跡に基づいて移動後の矢93の位置および姿勢を算出する。本変形例においても上記実施形態と同様、移動後の矢93の位置および姿勢と移動中であることとを表すデータは、矢データ114としてメインメモリに記憶される。以上のステップS42の後、CPU10は、射撃処理を終了する。
ステップS42の処理によって、ステップS41で算出された位置座標に対応するゲーム空間内の位置が指定されたことになる。そして、本変形例においても上記実施形態と同様に実行されるステップS36〜S39およびS15の処理によって、指定された位置にテレビ用カメラが設定される。これによって、カーソル97が指し示す位置に端末用カメラが設定される。また、ステップS4においては、テレビ用カメラからゲーム空間を見た画像の上にカーソル97の画像が描画されたゲーム画像が生成される。
なお、上記変形例においては、カーソル97の位置に応じてテレビ用カメラの位置および姿勢が変更されてもよい。例えば、カーソル97が画面の端部付近に移動した場合、CPU10は、カーソル97が移動した当該端部の方を向く方向へテレビ用カメラを回転させてもよい。これによれば、プレイヤは、カーソルを移動させる操作によってテレビ用カメラの視線方向を変更することができるので、ゲーム空間のより広範囲をカーソル97によって容易に指定することができる。また、この場合、CPU10は、カーソル97によって指定される位置に応じて端末用カメラの姿勢(視線方向)を変化させてもよい。すなわち、端末用カメラは、カーソル97によって指定される位置を向くように制御されてもよい。また、CPU10は、カーソル97が指し示す位置をボウガン92が向くように、プレイヤキャラクタ91の体勢(ボウガン92の姿勢)をカーソル97の位置に応じて変化させてもよい。
上記変形例によれば、テレビ2にカーソル97が表示され、プレイヤはカーソル97を用いて位置を指定することができる。したがって、プレイヤは、プレイヤキャラクタ91に対する操作と、端末用カメラを設置する位置を指定する操作との両方を、テレビ2の画面を見ながら行うことができる。
なお、上記変形例においてはゲーム装置はテレビ2にカーソル97を表示するようにしたが、他の実施形態においては、端末装置7にカーソルを表示するようにしてもよい。すなわち、CPU10は、操作データに基づいて端末用ゲーム画像上における位置座標を算出し、位置座標に対応するゲーム空間内の位置を指定するようにしてもよい。なお、このとき、コントローラ5(メインコントローラ8)を端末装置7の方へ向けて使用する方が操作が行いやすいので、テレビ2周辺に設置されるマーカ装置6に代えて端末装置7のマーカ部55がマーカとして用いられてもよい。すなわち、CPU10は、マーカ装置6に代えてマーカ部55を発光させるようにしてもよい。また、上記変形例と同様、CPU10は、端末用カメラの位置および姿勢をカーソル97の位置に応じて変化させてもよいし、プレイヤキャラクタ91の体勢(ボウガン92の姿勢)をカーソル97の位置に応じて変化させてもよい。
上記のようにカーソルを端末装置7に表示する場合には、上記実施形態と同様、プレイヤは、ゲーム空間における位置を指定し、指定した位置から見たゲーム空間の画像を確認する一連の操作を、端末装置7だけを見て容易に行うことができる。
また、他の実施形態においては、端末カメラを設定する位置は、端末装置7のタッチパネル52を用いて指定されてもよい。すなわち、CPU10は、タッチパネル52に対する入力が行われた位置座標を算出し、位置座標に対応するゲーム空間内の位置を指定するようにしてもよい。なお、タッチパネル52によって位置が指定される場合には、タッチパネル52に対する入力が行われるまで射撃方向が定まらないので、射撃方向に応じてボウガン92および矢93の姿勢を変化させることができない。そのため、CPU10は、タッチパネル52に対する入力があった場合には、まずボウガン92および矢93の姿勢を変化させてから、矢93を発射するようにしてもよい。
(ゲーム画像に関する変形例)
上記実施形態においては、プレイヤにとってゲーム空間をより把握しやすくし、ゲーム操作をより行いやすくするべく、ゲーム装置3は、主観視点のゲーム画像と客観視点のゲームとを2つの表示装置(テレビ2および端末装置7)に表示した。ここで、他の実施形態においては、ゲーム装置3は、視点の位置が同じである2つのゲーム画像を各表示装置に表示するようにしてもよい。この場合でも、各ゲーム画像における視線方向を異ならせることによって、ゲーム空間を把握しやすいゲーム画像を提供することができる。例えば、各ゲーム画像における視線方向をプレイヤがそれぞれ変更できるようにしたり、一方のゲーム画像における視線方向をプレイヤキャラクタ91の向きに制御し、他方のゲーム画像における視線方向を射撃方向となるように制御したりすることで、ゲーム空間を把握しやすく、操作しやすいゲーム画像を提供することができる。なお、上記のように2つのゲーム画像はそれぞれ、主観視点であっても客観視点であってもよいが、射撃操作(位置を指定する操作)を行う際には主観視点のゲーム画像の方が操作しやすいと考えられるので、プレイヤに射撃操作を行わせる場合(射撃操作が可能である場合)には、少なくともいずれかの表示装置に主観視点のゲーム画像が表示されることが好ましい。
また、上記実施形態においては、プレイヤによって指定された位置に端末用カメラが設置される前の状況においては、プレイヤキャラクタ91の位置(矢93の位置)に端末用カメラが設置され、端末用カメラを用いて端末用ゲーム画像が生成された。ここで、他の実施形態においては、上記の状況における端末用ゲーム画像はどのようなものであってもよい。上記の状況における端末用ゲーム画像は、アイテムを選択するためのメニュー画像や、マップ画像や、所定の視点から見たゲーム空間を表すゲーム画像であってもよい。例えば、他の実施形態においては、プレイヤキャラクタ91は上記ボウガン92を含む複数種類のアイテムを使用可能であり、アイテムを選択するためのメニュー画像が端末装置7に表示されてもよい。さらにこのとき、メニュー画像においてボウガン92が選択された場合、CPU10は、プレイヤキャラクタ91にボウガン92を持たせるとともに、矢93から見たゲーム空間を表すゲーム画像(図13)を端末装置7に表示するようにしてもよい。また、他の実施形態においては、上記の状況における端末用ゲーム画像はゲームのタイトル画像であってもよいし、上記の状況においては端末装置7にはゲーム画像が表示されなかったりしてもよい。
また、上記実施形態においては、プレイヤによって指定された位置に端末用カメラを設置することで、端末装置7に表示されるゲーム画像の視点をプレイヤが自由に設定できるようにした。ここで、他の実施形態においては、CPU10は、プレイヤによって指定された位置にテレビ用カメラを設置するようにしてもよい。このとき、端末用カメラは、上記実施形態におけるテレビ用カメラと同様、プレイヤキャラクタ91の動きに応じて制御される。また、他の実施形態においては、テレビ2および端末装置7に表示される2つのゲーム画像を、プレイヤによる操作に応じて、または、所定のゲーム条件が満たされたことに応じて入れ替えるようにしてもよい。この所定のゲーム条件は、ゲームに関する条件であればどのようなものであってもよく、例えば、プレイヤキャラクタが所定のステージに進んだことや、仮想カメラを設定する位置として所定のオブジェクトの位置が指定されたこと等が考えられる。例えば、客観視点のゲーム画像がテレビ2に表示され、主観視点のゲーム画像が端末装置7に表示される状態において、CPU10は、ゲーム空間内の所定位置がプレイヤによって指定されたことに応じて、指定された位置から見たゲーム画像をテレビ2に表示し、(テレビ2に表示されていた)客観視点のゲーム画像を端末装置7に表示してもよい。
また、上記実施形態においては、仮想カメラの設置位置として指定できるのは1箇所のみであったが、他の実施形態においては、ゲーム空間における複数箇所を指定可能とし、CPU10は指定された各位置に仮想カメラを設定するようにしてもよい。このとき、表示装置(テレビ2または端末装置7)には、設定された各仮想カメラから見たゲーム空間を表す複数のゲーム画像が表示される。つまり、表示装置の表示領域が複数に分割され、分割された領域毎に、仮想カメラからゲーム空間を見たゲーム画像が表示される。例えば、上記実施形態においては、プレイヤキャラクタ91は、矢を複数本発射することが可能であり、端末装置7(テレビ2でもよい)には、各矢の位置から見たゲーム空間の画像がそれぞれ表示されてもよい。
(操作装置に関する変形例)
上記実施形態においては、プレイヤが用いる操作手段はコントローラ5であった。ここで、他の実施形態においては、端末装置7が操作手段として用いられてもよい。すなわち、上記実施形態においては、操作手段は、2つの表示装置とは別の筐体(ハウジング31および80)に設けられるが、他の実施形態においては、操作手段は一方の表示装置に設けられてもよい。なお、プレイヤが端末装置7を用いてゲーム操作を行う場合には、テレビ2がプレイヤの前方に配置されるのに対して端末装置7がプレイヤの手元に配置されることになる。このとき、プレイヤはテレビ2を見る場合と端末装置7を見る場合とで視線方向を大きく変化させなければならない。したがって、テレビ2と端末装置7とを頻繁に見比べてゲーム操作を行うような操作態様が想定されるゲームにおいては特に、操作手段が2つの表示装置とは別の筐体に設けられる方が好ましい。
(端末用カメラの設定に関する変形例)
上記実施形態においては、プレイヤによって設置位置が指定される前の状況における端末用カメラは、プレイヤキャラクタ91の位置(より具体的には矢93の位置)に設置された。ここで、他の実施形態においては、上記状況における端末用カメラは、プレイヤキャラクタ91の位置以外に、プレイヤキャラクタ91を客観視点で見た位置に設定されてもよい。また、上記状況における端末用カメラは、プレイヤキャラクタ91の移動に応じて移動するように制御されてよいし、ゲーム空間における所定位置に固定的に設定されてもよい。
また、上記実施形態においては、端末用カメラは矢93と共に移動するように制御されたが、端末用カメラは他のオブジェクトと共に移動するように制御されなくてもよい。例えば、他の実施形態においては、矢93の移動中においては端末用カメラがボウガン92の位置に設定され、矢93が他のオブジェクトに刺さったことに応じて端末用カメラが矢93の位置に設定されてもよい。
また、他の実施形態においては、プレイヤによって指定された位置に仮想カメラが設定された場合、CPU10は、所定のオブジェクト(例えばプレイヤキャラクタ91)が視野範囲に含まれる姿勢となるように(プレイヤの操作が無くても自動的に)仮想カメラを制御してもよい。例えば、上記実施形態において、ステップS39の処理によって矢93の移動が停止された場合、ステップS15において、CPU10は、矢93の位置に端末用カメラの位置を設定するとともに、プレイヤキャラクタ91を向く視線方向となるように端末用カメラの姿勢を設定する。そして、設定された位置および姿勢を表すデータを第2カメラデータ116としてメインメモリに記憶する。これによれば、プレイヤは、端末用カメラの向きを変更する操作(上述の向き変更操作)を行わなくても、指定した位置からプレイヤキャラクタ91の方を見たゲーム空間の様子を視認することができる。
(ゲーム内容に関する変形例)
上記実施形態においては、プレイヤキャラクタ91が矢93を発射する射撃ゲームを例として説明したが、他の実施形態においては、ゲームの内容は射撃ゲームに限らずどのようなものであってもよい。上記ゲームシステム1は、仮想のゲーム空間においてプレイヤキャラクタ91を操作する任意のゲームに適用することが可能である。
(ゲームシステムの構成に関する変形例)
上記実施形態においては、ゲームシステム1は、表示装置として、可搬型の端末装置7と、テレビ2とを含む構成であった。ここで、ゲームシステムは、2つの表示装置にそれぞれゲーム画像を出力して表示させることができればどのような構成であってもよい。例えば、他の実施形態においては、ゲームシステムは、端末装置7を含まず、2つのテレビを表示装置として用いる構成であってもよいし、テレビを含まず、2つの端末装置7を表示装置として用いる構成であってもよい。
(ゲーム処理を実行する情報処理装置に関する変形例)
上記実施形態においては、ゲームシステム1において実行される一連のゲーム処理をゲーム装置3が実行したが、ゲーム処理の一部は他の装置によって実行されてもよい。例えば、他の実施形態においては、ゲーム処理の一部(例えば、端末用ゲーム画像の生成処理)を端末装置7が実行するようにしてもよい。また、他の実施形態では、互いに通信可能な複数の情報処理装置を有するゲームシステムにおいて、当該複数の情報処理装置がゲーム処理を分担して実行するようにしてもよい。なお、複数の情報処理装置においてゲーム処理が実行される場合には、各情報処理装置で実行されるゲーム処理を同期させる必要があり、ゲーム処理が複雑になってしまう。これに対して、上記実施形態のように、ゲーム処理が1つのゲーム装置3によって実行され、端末装置7がゲーム画像を受信して表示する処理を行う場合(つまり、端末装置7がシンクライアント端末である場合)には、複数の情報処理装置間でゲーム処理の同期をとる必要がなく、ゲーム処理を簡易化することができる。
上記のように、本明細書で説明した種々のシステム、方法、および技術は、デジタル電子回路、コンピュータハードウェア、ファームウェア、ソフトウェア、またはこれら要素の組み合わせによって提供されてもよい。上記の技術を実現するための装置は、プログラム可能なプロセッサによる実行のためのコンピュータ読み取り可能な非一時的な記憶装置において実体的に具体化されるコンピュータプログラムプロダクト、入出力装置、およびコンピュータプロセッサを含んでもよい。上記技術を実現するための処理は、入力データを処理して所望の出力を生成することによって、要求される機能を実行するためのプログラムを実行する、プログラム可能なプロセッサによって実行されてもよい。上記の技術は、入力装置、出力装置、および情報記憶装置といったハードウェア資源との間でデータや指示のやり取りを行うプログラム可能なプロセッサを含むコンピュータシステム上で実行可能な1以上のコンピュータプログラムによって実現されてもよい。また、各コンピュータプログラムは、手続型やオブジェクト指向型の高水準プログラミング言語、アセンブリ言語、または、機械語によって実現されてもよく、必要に応じてコンパイルまたはインタプリタされて実行されてもよい。また、上記のプロセッサは、汎用または専用のマイクロプロセッサであってもよい。プロセッサは、一般的に、ROMまたはRAMからデータおよび指示を受け取る。また、上記の記憶装置は、(a)EPROM、EEPROM、フラッシュメモリのような半導体メモリ装置を含む不揮発性のメモリ、(b)内部ハードディスクあるいは着脱可能な外部ディスクのような磁気ディスク、(c)光磁気ディスク、(d)CDROM、に限定されず、あらゆる種類のコンピュータメモリを含む。上記のプロセッサや記憶装置は、ASIC(Application Specific Integrated Circuit)によって補充される、あるいは、ASICに組み込まれる形で実現されてもよい。
また、本明細書に記載の処理システム(回路)は、本明細書において記載された内容に応じたゲーム処理のような制御処理のためにプログラムされる。上記の内容に応じた指示を実行する少なくとも1つのCPUを含む処理システムが、上記の内容によって定義される処理動作を実行するための「プログラムされた論理回路」として作用するものであってもよい。