(58)【調査した分野】(Int.Cl.,DB名)
前記ゲーム処理部は、前記第2操作データに基づいて、前記ハンドヘルドデバイスの動きに応じて前記第2仮想カメラを動かすゲーム制御処理を実行する、請求項2または請求項3に記載のゲームシステム。
前記ゲーム処理部は、第1操作データに基づいて動作が制御される所定のオブジェクトが第1ゲーム画像に含まれるように前記第1仮想カメラを設定する、請求項1から請求項4のいずれか1項に記載のゲームシステム。
前記ゲーム処理部は、前記第1操作データに基づいて前記操作装置を振る操作を検出するとともに、前記第2操作データに基づいて前記ハンドヘルドデバイスを傾ける操作を検出し、当該振る操作および当該傾ける操作に応じたゲーム制御処理を実行する、請求項6または請求項7に記載のゲームシステム。
自身の動きに応じて値が変化するデータを含む第1操作データを送信可能な操作装置と、自身の動きに応じて値が変化するデータを含む第2操作データを送信可能なハンドヘルドデバイスとに対して通信可能なゲーム装置であって、
前記操作装置およびハンドヘルドデバイスから前記第1操作データおよび第2操作データをそれぞれ取得する操作データ取得部と、
仮想のゲーム空間内に配置されるオブジェクトを前記第1操作データに基づいて制御する第1オブジェクト制御部と、
前記ゲーム空間内に第1仮想カメラを設定する第1仮想カメラ設定部と、
前記操作装置を操作する第1プレイヤのための第1ゲーム画像を前記第1仮想カメラに基づいて生成する第1画像生成部と、
前記第2操作データに基づいて、前記ゲーム空間内において第2仮想カメラを前記ハンドヘルドデバイスの動きに応じて移動させるように制御する第2仮想カメラ設定部と、
前記ハンドヘルドデバイスを操作する第2プレイヤのための第2ゲーム画像を前記第2仮想カメラに基づいて生成する第2画像生成部と、
前記ハンドヘルドデバイスとは別体の第1表示装置に前記第1ゲーム画像を出力する第1画像出力部と、
前記ハンドヘルドデバイスに設けられる第2表示装置に表示させるために前記第2ゲーム画像を前記ハンドヘルドデバイスに出力する第2画像出力部とを備え、
前記第1ゲーム画像および前記第2ゲーム画像を生成する前に、各ゲーム画像を生成する際に表示しないオブジェクトをゲーム画像毎に特定し、特定したオブジェクトを表すデータを各表示設定データとして記憶するオブジェクトの表示設定処理を実行し、前記第1ゲーム画像および前記第2ゲーム画像を、前記表示設定データが表すオブジェクトを含まないように生成する、ゲーム装置。
前記ハンドヘルドデバイスの動きに応じて変化するように所定の移動オブジェクトの移動方向を決定し、当該移動オブジェクトを移動させる第2オブジェクト制御部をさらに備え、
前記第1仮想カメラ設定部は、前記移動オブジェクトを含む第1ゲーム画像が生成されるように前記第1仮想カメラを設定し、
前記第1オブジェクト制御部は、前記操作装置の動きに応じて所定の操作オブジェクトを動かし、
前記移動オブジェクトと前記操作オブジェクトとの接触を判定し、判定結果に応じたゲーム画像を生成する第1判定処理部をさらに備える、請求項15に記載のゲーム装置。
前記第1オブジェクト制御部は、前記操作装置の動きに応じて決められる所定の移動オブジェクトの挙動を前記第1操作データに基づいて計算し、当該挙動に基づいて前記移動オブジェクトを移動させ、
前記第2仮想カメラが前記移動オブジェクトを含む所定範囲を向いているか否かを判定し、判定結果に応じたゲーム画像を生成する第2判定処理部をさらに備える、請求項15または請求項16に記載のゲーム装置。
自身の動きに応じて値が変化するデータを含む第1操作データを送信可能な操作装置と、自身の動きに応じて値が変化するデータを含む第2操作データを送信可能なハンドヘルドデバイスとに対して通信可能なゲーム装置のコンピュータにおいて実行されるゲームプログラムであって、
前記操作装置およびハンドヘルドデバイスから前記第1操作データおよび第2操作データをそれぞれ取得する操作データ取得手段と、
仮想のゲーム空間内に配置されるオブジェクトを前記第1操作データに基づいて制御する第1オブジェクト制御手段と、
前記ゲーム空間内に第1仮想カメラを設定する第1仮想カメラ設定手段と、
前記操作装置を操作する第1プレイヤのための第1ゲーム画像を前記第1仮想カメラに基づいて生成する第1画像生成手段と、
前記第2操作データに基づいて、前記ゲーム空間内において第2仮想カメラを前記ハンドヘルドデバイスの動きに応じて移動させるように制御する第2仮想カメラ設定手段と、
前記ハンドヘルドデバイスを操作する第2プレイヤのための第2ゲーム画像を前記第2仮想カメラに基づいて生成する第2画像生成手段と、
前記ハンドヘルドデバイスとは別体の第1表示装置に前記第1ゲーム画像を出力する第1画像出力手段と、
前記ハンドヘルドデバイスに設けられる第2表示装置に表示させるために前記第2ゲーム画像を前記ハンドヘルドデバイスに出力する第2画像出力手段と、
前記第1ゲーム画像および前記第2ゲーム画像を生成する前に、各ゲーム画像を生成する際に表示しないオブジェクトをゲーム画像毎に特定し、特定したオブジェクトを表すデータを各表示設定データとして記憶するオブジェクトの表示設定処理を実行する表示設定処理手段として前記コンピュータを機能させ、
前記第1画像生成手段および前記第2画像生成手段は、前記第1ゲーム画像および前記第2ゲーム画像を、前記表示設定データが表すオブジェクトを含まないように生成する、ゲームプログラム。
前記ゲームプログラムは、前記ハンドヘルドデバイスの動きに応じて変化するように所定の移動オブジェクトの移動方向を決定し、当該移動オブジェクトを移動させる第2オブジェクト制御手段として前記コンピュータをさらに機能させ、
前記第1仮想カメラ設定手段は、前記移動オブジェクトを含む第1ゲーム画像が生成されるように前記第1仮想カメラを設定し、
前記第1オブジェクト制御手段は、前記操作装置の動きに応じて所定の操作オブジェクトを動かし、
前記移動オブジェクトと前記操作オブジェクトとの接触を判定し、判定結果に応じたゲーム画像を生成する第1判定処理手段として前記コンピュータをさらに機能させる、請求項18に記載のゲームプログラム。
前記第1オブジェクト制御手段は、前記操作装置の動きに応じて決められる所定の移動オブジェクトの挙動を前記第1操作データに基づいて計算し、当該挙動に基づいて前記移動オブジェクトを移動させ、
前記第2仮想カメラが前記移動オブジェクトを含む所定範囲を向いているか否かを判定し、判定結果に応じたゲーム画像を生成する第2判定処理手段として前記コンピュータをさらに機能させる、請求項18または請求項19に記載のゲームプログラム。
【発明を実施するための形態】
【0053】
[1.ゲームシステムの全体構成]
以下、図面を参照して、本発明の一実施形態に係るゲームシステム1について説明する。
図1は、ゲームシステム1の外観図である。
図1において、ゲームシステム1は、テレビジョン受像器等に代表されるディスプレイ装置(以下、「テレビ」と記載する)2、ゲーム装置3、光ディスク4、操作装置7、マーカ装置8、および、ハンドヘルドデバイス9を含む。ゲームシステム1は、操作装置7およびハンドヘルドデバイス9を用いたゲーム操作に基づいてゲーム装置3においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ2および/またはハンドヘルドデバイス9の表示装置(
図8に示す下側LCD62)に表示するものである。
【0054】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるための情報処理プログラム(典型的にはゲームプログラム)が記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【0055】
ゲーム装置3には、テレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ2はスピーカ2a(
図2)を有しており、スピーカ2aは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置3と表示装置とは一体となっていてもよい。また、ゲーム装置3とテレビ2との通信は無線通信であってもよい。
【0056】
テレビ2の画面の周辺(
図1では画面の上側)には、マーカ装置8が設置される。詳細は後述するが、ユーザは操作装置7を動かすゲーム操作を行うことができ、マーカ装置8は、操作装置7の動きをゲーム装置3が検出するために用いられる。マーカ装置8は、その両端に2つのマーカ8Rおよび8Lを備えている。マーカ8R(マーカ8Lも同様)は、具体的には1以上の赤外LED(Light Emitting Diode)であり、テレビ2の前方に向かって赤外光を出力する。マーカ装置8はゲーム装置3に接続されており、ゲーム装置3はマーカ装置8が備える各赤外LEDの点灯を制御することが可能である。なお、
図1ではマーカ装置8がテレビ2の上に設置された態様を表しているが、マーカ装置8を設置する位置および向きは任意である。
【0057】
操作装置7は、自機に対して行われた操作の内容を表す操作データをゲーム装置3に与えるものである。以下では、操作装置7がゲーム装置3へ送信する操作データを「第1操作データ」と呼ぶ。本実施形態では、操作装置7はコントローラ5とジャイロセンサユニット6とを含む。詳細は後述するが、操作装置7は、コントローラ5に対してジャイロセンサユニット6が着脱可能に接続されている構成である。なお、コントローラ5にジャイロセンサが内蔵されている構成であってもよい。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
【0058】
ハンドヘルドデバイス9は、本実施形態では携帯型のゲーム装置であり、表示装置(後述する各LCD62および72)および入力装置(後述するタッチパネル63や加速度センサ89等)等を備える。ハンドヘルドデバイス9は、ゲーム装置3と無線(有線であってもよい)により通信可能である。ハンドヘルドデバイス9は、ゲーム処理の結果得られるゲーム画像およびゲーム音声をゲーム装置3から受信し、ゲーム画像を表示装置に表示するとともにゲーム音声をマイクから出力する。また、ハンドヘルドデバイス9は、自機に対して行われた操作の内容を表す操作データをゲーム装置3へ送信する。以下では、ハンドヘルドデバイス9がゲーム装置3へ送信する操作データを「第2操作データ」と呼ぶ。
【0059】
なお、本実施形態においてはハンドヘルドデバイス9は携帯型のゲーム装置であるとするが、他の実施形態においては、ハンドヘルドデバイス9は、表示装置および入力装置を備え、ユーザが把持可能な機器(コントローラ)であればよい。すなわち、ハンドヘルドデバイス9は、ゲーム処理(ゲームプログラム)を実行する機能を有していなくてもよい。また、本実施形態のハンドヘルドデバイス9は
図1で示すように表示装置が2つ備えられている携帯型のゲーム装置であるが、表示装置が1つの携帯型ゲーム装置でもよいし、表示装置を1つ備えるゲームコントローラであってもよい。
【0060】
[2.ゲーム装置3の内部構成]
次に、
図2を参照して、ゲーム装置3の内部構成について説明する。
図2は、ゲーム装置3の内部構成を示すブロック図である。ゲーム装置3は、CPU(Central Processing Unit)10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0061】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSIの内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0062】
システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM(Video RAM)11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0063】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0064】
ここで、本実施形態においては、ゲーム装置3は、テレビ2に表示するゲーム画像と、ハンドヘルドデバイス9の表示装置(下側LCD62および上側LCD72)に表示するゲーム画像との両方を生成する。以下では、テレビ2に表示されるゲーム画像を「第1ゲーム画像」と呼び、ハンドヘルドデバイス9に表示されるゲーム画像を「第2ゲーム画像」と呼ぶ。
【0065】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0066】
上記のように生成された画像データ(第1ゲーム画像のデータ)および音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、テレビ2に画像が表示されるとともにスピーカ2aから音が出力される。
【0067】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、ネットワーク通信モジュール18、コントローラ通信モジュール19、拡張コネクタ20、メモリカード用コネクタ21、画像圧縮部27に接続される。ネットワーク通信モジュール18にはアンテナ22が接続される。コントローラ通信モジュール19にはアンテナ23が接続される。画像圧縮部27は高速無線通信モジュール28に接続され、高速無線通信モジュール28にはアンテナ29が接続される。高速無線通信モジュール28には、コントローラ通信モジュール19が接続される。
【0068】
入出力プロセッサ11aは、ネットワーク通信モジュール18およびアンテナ22を介してインターネット等のネットワークに接続し、ネットワークに接続される他のゲーム装置や、各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22およびネットワーク通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0069】
入出力プロセッサ11aは、操作装置7から送信される第1操作データをアンテナ23およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。また、入出力プロセッサ11aは、ハンドヘルドデバイス9から送信される第2操作データをアンテナ29、高速無線通信モジュール28、およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0070】
入出力プロセッサ11aは、ハンドヘルドデバイス9へゲーム画像(第2ゲーム画像)を送信する場合、GPU11bが生成したゲーム画像のデータを画像圧縮部27へ出力する。画像圧縮部27は、入出力プロセッサ11aからの画像データに対して所定の圧縮処理を行う。高速無線通信モジュール28は、ハンドヘルドデバイス9との間で無線通信を行う。したがって、画像圧縮部27によって圧縮された画像データは、高速無線通信モジュール28によってアンテナ29を介してハンドヘルドデバイス9へ送信される。なお、本実施形態では、ゲーム装置3からハンドヘルドデバイス9へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置3からハンドヘルドデバイス9への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、画像圧縮部27は、例えばH.264規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、高速無線通信モジュール28は、例えばWi−Fiの認証を受けた通信モジュールであり、例えばIEEE802.11n規格で採用されるMIMO(Multiple Input Multiple Output)の技術を用いてハンドヘルドデバイス9との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【0071】
なお、上記においては、ゲーム装置3からハンドヘルドデバイス9へ画像データを送信する点について説明したが、本実施形態においては、画像データとともに音声データも送信される。すなわち、入出力プロセッサ11aは、DSP11cが生成した音声データを画像圧縮部27を介して高速無線通信モジュール28へ出力する。高速無線通信モジュール28は、画像データとともに音声データをアンテナ29を介してハンドヘルドデバイス9へ送信する。なお、音声データに関しては、画像圧縮部27はデータの圧縮処理を行ってもよいし、行わなくてもよい。
【0072】
また、ハンドヘルドデバイス9からゲーム装置3へデータ(具体的には第2操作データ)が送信されてくる場合、高速無線通信モジュール28は、アンテナ29を介して当該データを受信する。受信されたデータは入出力プロセッサ11aによって取得される。なお、本実施形態においては、ハンドヘルドデバイス9からゲーム装置3へのデータは圧縮処理が行われていないので、当該データに対して伸張処理は行われないが、他の実施形態においては、ハンドヘルドデバイス9側で圧縮処理を行い、ゲーム装置3側で伸張処理を行うようにしてもよい。
【0073】
入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタである。拡張コネクタ20に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0074】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、図示しないACアダプタを経てゲーム装置3の各構成要素に対して電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0075】
なお、他の実施形態においては、ゲーム装置3が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置3とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ20を介してゲーム装置3と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記画像圧縮部27、高速無線通信モジュール28およびアンテナ29の各構成要素を備えており、拡張コネクタ20に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置をハンドヘルドデバイス9と通信可能な構成とすることができる。
【0076】
[3.操作装置7の構成]
次に、
図3〜
図7を参照して、操作装置7(コントローラ5およびジャイロセンサユニット6)について説明する。
図3は、操作装置7の外観構成を示す斜視図である。
図4は、コントローラ5の外観構成を示す斜視図である。
図3は、操作装置7の上側後方から見た斜視図であり、
図4は、コントローラ5を下側前方から見た斜視図である。
【0077】
図3および
図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(
図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢(傾き)を変えることによってゲーム操作を行うことができる。
【0078】
ハウジング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を誤って押下することを防止することができる。
【0079】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、ジャイロセンサユニット6や他のコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0080】
ハウジング31上面の後方には複数(
図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0081】
また、コントローラ5は撮像情報演算部35(
図6)を有しており、
図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ8Rおよび8Lからの赤外光を少なくとも透過する材質で構成される。
【0082】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(
図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0083】
次に、
図5および
図6を参照して、コントローラ5の内部構造について説明する。
図5および
図6は、コントローラ5の内部構造を示す図である。なお、
図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。
図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。
図6に示す斜視図は、
図5に示す基板30を裏面から見た斜視図となっている。
【0084】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(
図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(
図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0085】
一方、
図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0086】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、
図5および
図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
【0087】
また、ジャイロセンサユニット6は、3軸回りの角速度を検知するジャイロセンサ(
図7に示すジャイロセンサ55および56)を有する。ジャイロセンサユニット6は、コントローラ5のコネクタ33に着脱可能に装着される。ジャイロセンサユニット6の前端(
図3に示すZ軸正方向側の端部)には、コネクタ33に接続可能なプラグ(
図7に示すプラグ53)が設けられる。さらに、プラグ53の両側にはフック(図示せず)が設けられる。ジャイロセンサユニット6がコントローラ5に対して装着される状態では、プラグ53がコネクタ33に接続されるとともに、上記フックがコントローラ5の係止穴33aに係止する。これによって、コントローラ5とジャイロセンサユニット6とがしっかりと固定される。また、ジャイロセンサユニット6は側面(
図3に示すX軸方向の面)にボタン51を有している。ボタン51は、それを押下すれば上記フックの係止穴33aに対する係止状態を解除することができるように構成されている。したがって、ボタン51を押下しながらプラグ53をコネクタ33から抜くことによって、ジャイロセンサユニット6をコントローラ5から離脱することができる。
【0088】
また、ジャイロセンサユニット6の後端には、上記コネクタ33と同形状のコネクタが設けられる。したがって、コントローラ5(のコネクタ33)に対して装着可能な他の機器は、ジャイロセンサユニット6のコネクタに対しても装着可能である。なお、
図3においては、当該コネクタに対してカバー52が着脱可能に装着されている。
【0089】
なお、
図3〜
図6に示したコントローラ5およびジャイロセンサユニット6の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0090】
図7は、操作装置7(コントローラ5およびジャイロセンサユニット6)の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、および加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を表すデータを第1操作データとしてゲーム装置3へ送信するものである。
【0091】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を表す操作ボタンデータを通信部36のマイコン42へ出力する。
【0092】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0093】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるマーカ装置8のマーカ8Rおよび8Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ8Rおよび8Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ8Rおよび8L)の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって第1操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0094】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0095】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸または2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。なお、加速度センサ37は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0096】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(
図3に示すY軸方向)、左右方向(
図3に示すX軸方向)および前後方向(
図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、操作装置7(コントローラ5)を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトルとして表される。
【0097】
加速度センサ37が検出した加速度を表すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は取得された加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、取得された加速度データに基づいてコントローラ5の姿勢や傾斜角度等を算出する。
【0098】
なお、加速度センサ37(後述する加速度センサ89についても同様)から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0099】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0100】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。また、マイコン42はコネクタ33に接続されている。ジャイロセンサユニット6から送信されてくるデータは、コネクタ33を介してマイコン42に入力される。以下、ジャイロセンサユニット6の構成について説明する。
【0101】
ジャイロセンサユニット6は、プラグ53、マイコン54、2軸ジャイロセンサ55、および1軸ジャイロセンサ56を備えている。上述のように、ジャイロセンサユニット6は、3軸(本実施形態では、XYZ軸)周りの角速度を検出し、検出した角速度を表すデータ(角速度データ)をコントローラ5へ送信する。
【0102】
2軸ジャイロセンサ55は、X軸周りの角速度およびZ軸周りの(単位時間あたりの)角速度を検出する。また、1軸ジャイロセンサ56は、Y軸周りの(単位時間あたりの)角速度を検出する。なお、本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、XYZ軸周りの回転方向を、それぞれ、ピッチ方向、ヨー方向、ロール方向と呼ぶ。すなわち、2軸ジャイロセンサ55は、ピッチ方向(X軸周りの回転方向)およびロール方向(Z軸周りの回転方向)の角速度を検出し、1軸ジャイロセンサ56は、ヨー方向(Y軸周りの回転方向)の角速度を検出する。
【0103】
なお、本実施形態では、3軸回りの角速度を検出するために、2軸ジャイロセンサ55と1軸ジャイロセンサ56とを用いる構成としたが、他の実施形態においては、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。
【0104】
各ジャイロセンサ56および57で検出された角速度を表すデータは、マイコン54に出力される。したがって、マイコン54には、XYZ軸の3軸回りの角度速度を表すデータが入力されることになる。マイコン54は、上記3軸回りの角速度を表すデータを角速度データとしてプラグ53を介してコントローラ5へ送信する。なお、マイコン54からコントローラ5への送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【0105】
コントローラ5の説明に戻り、操作部32、撮像情報演算部35、および加速度センサ37からマイコン42へ出力されたデータ、ならびに、ジャイロセンサユニット6からマイコン42へ送信されてきたデータは、一時的にメモリ43に格納される。これらのデータは、上記第1操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3のコントローラ通信モジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを第1操作データとして無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を第1操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、第1操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側のコントローラ通信モジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は第1操作データを取得することができる。そして、ゲーム装置3のCPU10は、操作装置7から取得した第1操作データと、ハンドヘルドデバイス9から取得した第2操作データと、ゲームプログラムとに基づいてゲーム処理を行う。なお、通信部36からコントローラ通信モジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で第1操作データをゲーム装置3のコントローラ通信モジュール19へ出力する。
【0106】
以上のように、操作装置7は、自機に対する操作を表す第1操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。また、ゲーム装置3が上記第1操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記操作装置7を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、操作装置7自体を動かすゲーム操作を行うことができる。例えば、操作装置7を任意の姿勢に傾ける操作、操作装置7によって画面上の任意の位置を指示する操作、および、操作装置7自体を動かす操作等を行うことが可能となる。
【0107】
また、本実施形態において、操作装置7は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【0108】
[4.ハンドヘルドデバイス9の外観構成]
図8は、ハンドヘルドデバイス9の外観構成を示す図である。
図8に示されるように、ハンドヘルドデバイス9は、下側ハウジング61および上側ハウジング71を有する。下側ハウジング61と上側ハウジング71とは、開閉可能(折り畳み可能)に接続されている。本実施形態では、各ハウジング61および71はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。つまり、下側ハウジング61と上側ハウジング71とは、下側ハウジング61の突起部61Aと上側ハウジング71の突起部71Aとが連結されることにより、折り畳み可能に接続される。
【0109】
(下側ハウジングの説明)
まず、下側ハウジング61の構成について説明する。
図8に示すように、下側ハウジング61には、下側LCD(Liquid Crystal Display:液晶表示装置)62、タッチパネル63、各操作ボタン64A〜64L、アナログスティック65、LED66A〜66B、挿入口67、および、マイクロフォン用孔68が設けられる。以下、これらの詳細について説明する。
【0110】
下側LCD62は下側ハウジング61に収納される。本実施形態においては下側LCD62の画素数は例えば256dot×192dot(横×縦)とするが、任意の解像度の表示装置を利用することができる。また、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。
【0111】
タッチパネル63は、下側LCD62の画面上に装着されている。なお、本実施形態では、タッチパネル63は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル63はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル63として、下側LCD62の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル63の解像度と下側LCD62の解像度が一致している必要はない。また、下側ハウジング61の上側面には挿入口67(
図8に示す点線)が設けられている。挿入口67は、タッチパネル63に対する操作を行うために用いられるタッチペン78を収納することができる。なお、タッチパネル63に対する入力は通常タッチペン78を用いて行われるが、タッチペン78に限らずユーザの指でタッチパネル63に対する入力をすることも可能である。
【0112】
各操作ボタン64A〜64Lは、所定の入力を行うための入力装置である。
図8に示されるように、下側ハウジング61の内側面(主面)には、各操作ボタン64A〜64Lのうち、十字ボタン64A(方向入力ボタン64A)、ボタン64B、ボタン64C、ボタン64D、ボタン64E、電源ボタン64F、セレクトボタン64J、HOMEボタン64K、およびスタートボタン64Lが設けられる。十字ボタン64Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン64A〜64E、セレクトボタン64J、HOMEボタン64K、およびスタートボタン64Lには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン64Aは選択操作等に用いられ、各操作ボタン64B〜64Eは決定操作やキャンセル操作等に用いられる。また、電源ボタン64Fは、ハンドヘルドデバイス9の電源をオン/オフするために用いられる。
【0113】
また、図示しないが、下側ハウジング61の上側面には、LボタンおよびRボタンが設けられている。Lボタンは、下側ハウジング61の上面の左端部に設けられ、Rボタンは、下側ハウジング61の上面の右端部に設けられる。また、図示しないが、下側ハウジング61の左側面には、音量ボタンが設けられる。音量ボタンは、ハンドヘルドデバイス9が備えるスピーカの音量を調整するために用いられる。
【0114】
アナログスティック65は、方向を指示するデバイスであり、下側ハウジング61の内側面に設けられる。
図8に示すように、アナログスティック65は、十字ボタン64Aの上方に設けられる。アナログスティック65は、指で操作されるスティック部が下側ハウジング61の内側面に対して任意の方向(上下左右および斜め方向の任意の角度)に傾倒するように構成されている。
【0115】
また、下側ハウジング61の左側面には開閉可能なカバー部が設けられる。このカバー部の内側には、ハンドヘルドデバイス9とデータ保存用外部メモリ96とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ96は、コネクタに着脱自在に装着される。データ保存用外部メモリ96は、例えば、ハンドヘルドデバイス9によって撮像された画像のデータを記憶(保存)するために用いられる。
【0116】
また、下側ハウジング61の上側面には開閉可能なカバー部が設けられる。このカバー部の内側には、ハンドヘルドデバイス9とゲームプログラムを記録した外部メモリ95とを電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリ95がハンドヘルドデバイス9に接続されることにより、所定のゲームプログラムが実行される。
【0117】
また、
図8に示されるように、下側ハウジング61の下側面にはハンドヘルドデバイス9の電源のON/OFF状況をユーザに通知する第1LED66Aが設けられる。さらに、下側ハウジング61の右側面にはハンドヘルドデバイス9の無線通信の確立状況をユーザに通知する第2LEDが設けられる。ハンドヘルドデバイス9は他の機器との間で無線通信を行うことが可能であり、第2LED66Bは、無線通信が確立している場合に点灯する。ハンドヘルドデバイス9は、例えば、IEEE802.11nの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング61の右側面には、この無線通信の機能を有効/無効にする無線スイッチが設けられる。
【0118】
また、下側ハウジング61の内側面には、マイクロフォン用孔68が設けられる。マイクロフォン用孔68の下部には後述する音声入力装置としてのマイク(
図9参照)が設けられ、当該マイクがハンドヘルドデバイス9の外部の音を検出する。
【0119】
なお、図示は省略するが、下側ハウジング61には、ハンドヘルドデバイス9の電源となる充電式電池が収納され、下側ハウジング61の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
【0120】
(上側ハウジングの説明)
次に、上側ハウジング71の構成について説明する。
図8に示すように、上側ハウジング71には、上側LCD72、外側カメラ73(左目用カメラ73aおよび右目用カメラ73b)、内側カメラ74、3D調整スイッチ75、および、3Dインジケータ76が設けられる。以下、これらの詳細について説明する。
【0121】
図8に示すように、上側LCD72は上側ハウジング71に収納される。本実施形態においては、上側LCD72の画面は下側LCD62の画面よりも横長に設定され、上側LCD72の画素数は、例えば640dot×200dot(横×縦)である。ただし、他の実施形態においては、上側LCD72として任意の解像度の表示装置を利用することができる。また、本実施形態では上側LCD72は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。
【0122】
また、本実施形態においては、上側LCD72は、(裸眼で)立体視可能な画像を表示することが可能な表示装置である。具体的には、本実施形態では、上側LCD72において横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるように、レンチキュラー方式やパララックスバリア方式(視差バリア方式)の表示装置が上側LCD72として用いられる。ただし、他の実施形態においては、上側LCD72は必ずしも立体視可能な画像を表示することが可能な表示装置でなくてもよい。なお、本実施形態においては、上側LCD72は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチ75によって行われる。
【0123】
外側カメラ73は、上側ハウジング71の外側面(上側LCD72が設けられた主面と反対側の背面)に設けられ、当該外側面の法線方向を撮像方向とするステレオカメラである。外側カメラ73は、左目用カメラ73aおよび右目用カメラ73bの2つのカメラで構成される。左目用カメラ73aおよび右目用カメラ73bは、それぞれの撮像方向が平行となるように配置される。左目用カメラ73aおよび右目用カメラ73bは、それぞれ所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。左目用カメラ73aおよび右目用カメラ73bの間隔は、人間の両目の間隔程度に設定され、例えば、30mm〜70mmの範囲で設定されてもよい。なお、左目用カメラ73aおよび右目用カメラ73bの間隔は、この範囲に限らない。また、他の実施形態においては、上記2つのカメラ73aおよび73bの間隔は可変であってもよい。上記外側カメラ73によって、立体視可能な画像を撮像することができる。
【0124】
内側カメラ74は、上側ハウジング71の内側面(主面)71Bに設けられ、当該内側面の法線方向を撮像方向とするカメラである。内側カメラ74は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。内側カメラ74は、外側カメラ73とは反対方向を撮像するので、ユーザが上側LCD72を正視した際、内側カメラ74でユーザの顔を正面から撮像することができる。
【0125】
3D調整スイッチ75は、スライドスイッチであり、上述のように上側LCD72の表示モードを切り替えるために用いられるスイッチである。3D調整スイッチ75は、上側LCD72に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。
図8に示されるように、3D調整スイッチ75は、上側ハウジング71の内側面および右側面の端部に設けられ、ユーザが上側LCD72を正視した場合に、当該3D調整スイッチ75を視認できる位置に設けられる。3D調整スイッチ75には上下方向にスライド可能なスライダが設けられており、スライダの位置に応じて立体画像の立体感が調整される。ここでは、スライダが最下点の位置に存在する場合、上側LCD72は平面表示モードに設定され、スライダが最下点より上側の所定位置から最上点の位置までの間に存在する場合、上側LCD72は立体表示モードに設定される。また、スライダが上記所定位置から最上点の位置までの間に存在する場合、スライダの位置に応じて、立体画像の見え方が調整される。
【0126】
3Dインジケータ76は、上側LCD72が立体表示モードか否かを示す。3Dインジケータ76は、LEDであり、上側LCD72の立体表示モードが有効の場合に点灯する。
【0127】
また、上側ハウジング71の内側面には、スピーカ孔71Eが設けられる。後述するスピーカ93からの音声がこのスピーカ孔71Eから出力される。
【0128】
[5.ハンドヘルドデバイス9の内部構成]
次に、
図9を参照して、ハンドヘルドデバイス9の内部の電気的構成について説明する。
図9は、ハンドヘルドデバイス9の内部構成を示すブロック図である。
図9に示すように、ハンドヘルドデバイス9は、上述した各部に加えて、情報処理部81、メインメモリ82、外部メモリインターフェイス(外部メモリI/F)83、データ保存用外部メモリI/F84、データ保存用内部メモリ85、無線通信モジュール86、ローカル通信モジュール87、リアルタイムクロック(RTC)38、加速度センサ89、ジャイロセンサ90、電源回路94、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング61(または上側ハウジング71でもよい)内に収納される。
【0129】
情報処理部81は、所定のプログラムを実行するためのCPU811、画像処理を行うGPU812等を含む情報処理手段である。本実施形態では、所定の処理を実行するためのプログラムがハンドヘルドデバイス9内のメモリ(例えば外部メモリI/F83に接続された外部メモリ95やデータ保存用内部メモリ85)に記憶されている。情報処理部81のCPU811は、当該プログラムを実行することによって、当該プログラムに応じた処理(例えば、撮影処理や、後述する画像表示処理など)を実行する。なお、情報処理部81のCPU811によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部81は、VRAM813を含む。情報処理部81のGPU812は、情報処理部81のCPU811からの命令に応じて画像を生成し、VRAM813に描画する。そして、情報処理部81のGPU812は、VRAM813に描画された画像を上側LCD72及び/又は下側LCD62に出力し、上側LCD72及び/又は下側LCD62に当該画像が表示される。なお、画像データが外部(ゲーム装置3)から取得される場合には、取得された画像データがVRAM813に記憶され、上側LCD72及び/又は下側LCD62に画像が表示される。
【0130】
情報処理部81には、メインメモリ82、外部メモリI/F83、データ保存用外部メモリI/F84、および、データ保存用内部メモリ85が接続される。外部メモリI/F83は、外部メモリ95を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F84は、データ保存用外部メモリ96を着脱自在に接続するためのインターフェイスである。
【0131】
メインメモリ82は、情報処理部81(のCPU811)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ82は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリ95や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ82として例えばPSRAM(Pseudo−SRAM)を用いる。
【0132】
外部メモリ95は、情報処理部81によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ95は、例えば読み取り専用の半導体メモリで構成される。外部メモリ95が外部メモリI/F83に接続されると、情報処理部81は外部メモリ95に記憶されたプログラムを読み込むことができる。情報処理部81が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ96は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ96には、外側カメラ73で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ96がデータ保存用外部メモリI/F84に接続されると、情報処理部81はデータ保存用外部メモリ96に記憶された画像を読み込み、上側LCD72及び/又は下側LCD62に当該画像を表示することができる。
【0133】
データ保存用内部メモリ85は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ85には、無線通信モジュール86を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0134】
無線通信モジュール86は、例えばIEEE802.11nの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール87は、所定の通信方式(例えば独自プロトコルによる通信や、赤外線通信)により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール86およびローカル通信モジュール87は情報処理部81に接続される。情報処理部81は、無線通信モジュール86を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール87を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
【0135】
本実施形態においては、ゲーム装置3とハンドヘルドデバイス9との通信は、上記無線通信モジュール86によって行われる。また、情報処理部81は、図示しない画像伸張部を有している。画像伸張部は、無線通信モジュール86からの画像データ(および音声データ)に対して所定の伸張処理を行う。したがって、ゲーム装置3から画像データ(および音声データ)が送信されてくる場合、無線通信モジュール86によって当該画像データが受信された後、画像伸張部によって所定の伸張処理が行われる。伸張処理が行われた画像データは、CPU811によってVRAM813に適宜記憶されて上側LCD72及び/又は下側LCD62に出力される。
【0136】
また、情報処理部81には、加速度センサ89が接続される。加速度センサ89は、3軸(
図8に示すxyz軸)方向に沿った直線加速度の大きさを検出する。本実施形態においては、加速度センサ89は下側ハウジング61の内部に設けられる。加速度センサ89は、下側ハウジング61の長辺方向をx軸、下側ハウジング61の短辺方向をy軸、下側ハウジング61の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。例えば、加速度センサ89は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)又はSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。なお、加速度センサ89は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ89は1軸または2軸方向を検出する加速度センサであってもよい。情報処理部81は、加速度センサ89が検出した加速度を表すデータ(加速度データ)を取得して、ハンドヘルドデバイス9の姿勢や動きを検出することができる。
【0137】
また、情報処理部81には、ジャイロセンサ90が接続される。ジャイロセンサ90は、x軸、y軸およびz軸の3軸周りの角速度を検出する。3軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ90はジャイロセンサユニット6と同様、2軸ジャイロセンサと1軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ90は1軸または2軸方向を検出するジャイロセンサであってもよい。情報処理部81は、ジャイロセンサ90が検出した角速度を表すデータ(角速度データ)を取得して、ハンドヘルドデバイス9の姿勢や動きを検出することができる。
【0138】
以上のように、ハンドヘルドデバイス9は、自身に対する操作を表す操作データとして、加速度データおよび角速度データを取得可能である。したがって、ハンドヘルドデバイス9を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、ハンドヘルドデバイス9自体を動かすゲーム操作を行うことができる。
【0139】
また、情報処理部81には、RTC88および電源回路94が接続される。RTC88は、時間をカウントして情報処理部81に出力する。情報処理部81は、RTC88によって計時された時間に基づき現在時刻(日付)を計算する。電源回路94は、ハンドヘルドデバイス9が有する電源(下側ハウジング61に収納される上記充電式電池)からの電力を制御し、ハンドヘルドデバイス9の各部品に電力を供給する。
【0140】
また、情報処理部81には、I/F回路91が接続される。I/F回路91には、マイク92およびスピーカ93が接続される。具体的には、I/F回路91には、図示しないアンプを介してスピーカ93が接続される。マイク92は、ユーザの音声を検知して音声信号をI/F回路91に出力する。アンプは、I/F回路91からの音声信号を増幅し、音声をスピーカ93から出力させる。また、タッチパネル63はI/F回路91に接続される。I/F回路91は、マイク92およびスピーカ93(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル63からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部81に出力する。タッチ位置データは、タッチパネル63の入力面において入力が行われた位置の座標を表す。なお、タッチパネル制御回路は、タッチパネル63からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部81は、タッチ位置データを取得することにより、タッチパネル63に対して入力が行われた位置を知ることができる。
【0141】
操作ボタン64は、上記各操作ボタン64A〜64LならびにLボタンおよびRボタンからなり、情報処理部81に接続される。操作ボタン64から情報処理部81へは、操作ボタン64に対する入力状況(押下されたか否か)を表す操作ボタンデータが出力される。情報処理部81は、操作ボタン64から上記操作ボタンデータを取得することによって、操作ボタン64に対する入力に従った処理を実行する。
【0142】
アナログスティック65は、情報処理部81に接続され、アナログスティック65の傾倒された方向および量を表すスティックデータを情報処理部81へ出力する。情報処理部81は、アナログスティック65から上記スティックデータを取得することによって、アナログスティック65に対する入力に従った処理を実行する。
【0143】
上記のように、ハンドヘルドデバイス9は、入力装置として、加速度センサ89、ジャイロセンサ90、タッチパネル63、操作ボタン64、およびアナログスティック65という5種類の入力手段を備えている。ただし、他の実施形態においては、ハンドヘルドデバイス9が備える入力装置はどのようなものであってもよい。例えば、ハンドヘルドデバイス9は、上記5種類の入力手段のいずれか1つ以上を備えていてもよい。また例えば、ハンドヘルドデバイス9は、タッチパッドを備えていてもよいし、コントローラ5と同様の赤外光検知手段(赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41)を備えていてもよい。
【0144】
ハンドヘルドデバイス9の入力装置に対する操作を表す第2操作データは、ゲーム装置3へ送信される。ここで、第2操作データは、加速度センサ89の加速度データ、ジャイロセンサ90の角速度データ、上記タッチ位置データ、操作ボタンデータ、および、スティックデータを含む。情報処理部81は、第2操作データを無線通信モジュール86を介してハンドヘルドデバイス9へ無線送信する。なお、ハンドヘルドデバイス9からゲーム装置3への第2操作データの送信は所定の周期毎に逐次行われるが、コントローラ5からゲーム装置3への第1操作データの送信と同様、1フレーム時間以下の周期で行われることが好ましい。
【0145】
下側LCD62および上側LCD72は情報処理部81に接続される。下側LCD62および上側LCD72は、情報処理部81(のGPU812)の指示に従って画像を表示する。本実施形態では、情報処理部81は、上側LCD72に右目用画像と左目用画像とを用いた立体画像(立体視可能な画像)を表示させることも可能である。
【0146】
外側カメラ73および内側カメラ74は、情報処理部81に接続される。外側カメラ73および内側カメラ74は、情報処理部81の指示に従って画像を撮像し、撮像した画像データを情報処理部81に出力する。
【0147】
3D調整スイッチ75は、情報処理部81に接続される。3D調整スイッチ75は、スライダ25aの位置に応じた電気信号を情報処理部81に送信する。
【0148】
また、3Dインジケータ76は、情報処理部81に接続される。情報処理部81は、3Dインジケータ76の点灯を制御する。例えば、情報処理部81は、上側LCD72が立体表示モードである場合、3Dインジケータ76を点灯させる。以上がハンドヘルドデバイス9の内部構成の説明である。
【0149】
[6.ゲーム処理の概要]
次に、本実施形態のゲームシステムにおいて実行されるゲーム処理の概要について説明する。本実施形態では、ゲームの一例として2人のプレイヤが対戦する形式の野球ゲームを実行するゲーム処理について説明する。以下では、操作装置7を用いて攻撃側を担当するプレイヤを「第1プレイヤ」と呼び、ハンドヘルドデバイス9を用いて守備側を担当するプレイヤを「第2プレイヤ」と呼ぶ。
【0150】
本野球ゲームでは、主に、投手が投球を行って打者がボールを打つ場面(投球シーン)と、打者が打ったボールを野手が捕球する場面(守備シーン)とがある。以下、投球シーンおよび守備シーンにおけるゲーム処理の概要を説明する。
【0151】
まず、投球シーンにおけるゲーム処理について説明する。
図10は、投球シーンにおいてテレビ2に表示されるゲーム画像(第1ゲーム画像)の一例を示す図である。
図10に示す第1ゲーム画像は、主に第1プレイヤのための画像である。すなわち、この第1ゲーム画像は、第1プレイヤの操作対象である打者(打者オブジェクト)101の側から、第2プレイヤの操作対象である投手(投手オブジェクト)102の方を見たゲーム空間を表す。なお、
図10のゲーム画像では、捕手(捕手オブジェクト)が表示されないが、他の実施形態においては、捕手が打者101の手前側に表示されてもよい。また、本実施形態においては、投球シーンにおける第1ゲーム画像の視点および視線は固定されている。つまり、第1ゲーム画像を生成するための仮想カメラ(第1仮想カメラと呼ぶ)の位置および姿勢は投球シーンでは変化しない。なお、他の実施形態においては、ゲーム装置3は、第1の仮想カメラに演出のための多少の動きを加えてもよい。
【0152】
一方、
図11は、投球シーンにおいてハンドヘルドデバイス9に表示されるゲーム画像(第2ゲーム画像)の一例を示す図である。
図11に示す第2ゲーム画像は、主に第2プレイヤのための画像である。すなわち、この第2ゲーム画像は、第2プレイヤの操作対象である投手102の側から、第1プレイヤの操作対象である打者101の方を見たゲーム空間を表す。なお、
図11のゲーム画像では、投手102が表示されないが、他の実施形態においては、投手102が打者101の手前側に表示されてもよい。また、ここでは、ハンドヘルドデバイス9の下側LCD62に第2ゲーム画像が表示されるものとするが、他の実施形態においては上側LCD62に
図11に示す第2ゲーム画像が表示されてもよいし、上側LCD62には他のゲーム画像が表示されてもよい。
【0153】
ここで、第2ゲーム画像を生成するための仮想カメラ(第2仮想カメラと呼ぶ)の姿勢は、ハンドヘルドデバイス9の姿勢に対応するように制御される。
図12は、ハンドヘルドデバイス9の姿勢と第2ゲーム画像との関係を示す図である。
図12では、ハンドヘルドデバイス9がある基準姿勢となる状態において、第2仮想カメラの姿勢は投手102から打者101への方向を向く姿勢となっている。なお、
図12に示す基準姿勢では、下側LCD62の画面が鉛直方向(重力方向)と平行になっているものとする。この場合において、ハンドヘルドデバイス9を基準姿勢から左方向(下側LCD62の正面から下側LCD62を見たときの左方向)へ回転させると、ゲーム空間内の第2仮想カメラも左方向へ回転する。その結果、
図12に示すように、基準姿勢の場合に表示されるゲーム画像よりも視線が左を向いたゲーム画像が表示される(画面が左へスクロールする)。同様に、ハンドヘルドデバイス9を基準姿勢から右方向へ回転させると、第2仮想カメラも右方向へ回転し、基準姿勢の場合に表示されるゲーム画像よりも視線が右を向いたゲーム画像が表示される(画面が右へスクロールする)。
【0154】
なお、
図12ではハンドヘルドデバイス9を左右方向に回転させる場合を示したが、上下方向に回転させる場合も左右方向と同様に、ハンドヘルドデバイス9の姿勢に対応するように第2仮想カメラの姿勢が変化する。つまり、ハンドヘルドデバイス9を基準姿勢から上(下)へ回転させると、第2仮想カメラも上(下)へ回転し、基準姿勢の場合に表示されるゲーム画像よりも視線が上(下)を向いたゲーム画像が表示される。また、ハンドヘルドデバイス9を下側LCD62の画面に垂直な軸回りに回転させる場合も同様に、ハンドヘルドデバイス9の姿勢に対応するように第2仮想カメラの姿勢が変化する。
【0155】
以上のように、本実施形態では、第2プレイヤは、ハンドヘルドデバイス9の姿勢を変化させる操作によって、第2仮想カメラの姿勢(つまり、ゲーム画像の表示範囲)を変化させることができる。したがって、第2プレイヤは、自身の正面にハンドヘルドデバイス9を把持した状態で自身の向きを変えることによって、第2仮想カメラの姿勢を変化させることができる。これによれば、第2プレイヤは、ハンドヘルドデバイスの画面を見ながら自身が動くことで表示範囲を変化させることができ、今までにない操作感覚のゲーム操作をプレイヤに提供することができる。なお、第2仮想カメラの姿勢を変化させる場合、プレイヤは、自身の正面にハンドヘルドデバイス9を把持した状態で自身の向き(体ごと)を変えてもよいし、自身は回転せずにハンドヘルドデバイス9のみを回転させてもよい。
【0156】
また、本実施形態においては、上記第2仮想カメラの姿勢によって投手102の投球方向(ボールを投げる方向)が決まる。具体的には、
図11に示すように、下側LCD62にはゲーム空間の画像に重ねて、画面中央に目標画像105が表示される。そして、第2プレイヤが所定の投球指示(例えば、ボタン64Bを押下することで行われる指示)を行うと、投手102は、目標画像105が指し示す位置へボール(ボールオブジェクト)104を投げる。以上のように、第2プレイヤは、ハンドヘルドデバイス9の姿勢を変化させる操作によって投球方向を指示して投手102に投球を行わせることができる。
【0157】
以上より、投球シーンにおいては、第2プレイヤはハンドヘルドデバイス9の姿勢を変化させることによって投球方向を決定して上記投球指示を行う。投球開始の指示は、例えばボタンやタッチパネルに対する操作によって行なうことができる。これに応じて、第1プレイヤは、投手102が投げたボール104をバット(バットオブジェクト)103で打つべく打者101を操作する。詳細は後述するが、バット103の動作は操作装置7の姿勢に基づいて制御され、第1プレイヤは操作装置7を振る操作によって打者101にバット103を振らせることができる。
【0158】
投手102がボール104を投げて、かつ、バット103が振られると、ゲーム装置3は、バット103とボール104との接触判定を行う。判定の結果、両者が接触した場合(打者101がバット103でボール104を打った場合)には、バット103に当たった後のボール104の挙動が計算され、挙動に従ってボール104が移動する。この場合、上述の守備シーン(打者が打ったボールを野手が捕球する場面)に切り替わる。一方、両者が接触せずにボール104が捕手の位置に達した場合には、ストライクまたはボールの判定が行われ、投球シーンにおけるゲーム処理が再度実行される。
【0159】
次に、守備シーンにおけるゲーム処理について説明する。打者101がボール104を打った場合、ゲーム装置3は、ボール104の挙動を計算して、当該挙動に従って移動するボール104を各表示装置(テレビ2および下側LCD62)に表示させる。守備シーンにおいては、第2プレイヤは、野手がボール104を捕球するためのゲーム操作を行う。
【0160】
図13は、守備シーンにおいてテレビ2に表示されるゲーム画像の一例を示す図である。守備シーンにおいては、
図13に示すように、ボール104が移動する様子を表す画像が第1ゲーム画像としてテレビ2に表示される。つまり、第1仮想カメラは、ボール104がその視野範囲に含まれるように位置および姿勢が算出される。
図13においては、ボール104に加えて、第2プレイヤの操作対象となる野手(野手オブジェクト)106が含まれるように第1仮想カメラが制御される。なお、第1ゲーム画像は、プレイヤが打球の行方を把握しやすいように、ボール104またはボール104の影を含む画像であることが好ましい。また、守備シーンにおいては、第1プレイヤにはゲーム操作が要求されなくてもよいし、プレイヤが何らかのゲーム操作(例えば、走者オブジェクトの走塁に関する操作)を行うようにしてもよい。
【0161】
図14は、守備シーンにおいてハンドヘルドデバイス9に表示されるゲーム画像の一例を示す図である。守備シーンにおいては、
図14に示すように、第2ゲーム画像としては、ボール104を捕球すべき野手106から見たゲーム空間の画像が表示される。なお、
図14に示すゲーム画像では、ボール104を見やすくするために野手106は表示されないが、他の実施形態においては、野手106が表示されてもよいし、野手106の全部または一部(例えばグローブ)が半透明で表示されてもよい。また、本実施形態では、ゲーム空間に配置される野手のうちで、ボール104を捕球すべき野手106はゲーム装置3によって自動的に決定される。また、当該野手106の移動はゲーム装置3によって自動的に制御される。したがって、上記野手106の位置に基づいて決定される第2仮想カメラの位置もゲーム装置3によって決定される。
【0162】
守備シーンにおいても投球シーンと同様、第2仮想カメラの姿勢は、ハンドヘルドデバイス9の姿勢に対応するように決定される。また、守備シーンにおいては、下側LCD62にはゲーム空間の画像に重ねて、画面中央に枠画像107が表示される。枠画像107は、野手106がボール104の捕球に成功するか否かの判断基準を表す。すなわち、野手106がボール104の捕球に成功するか否かは、第2ゲーム画像においてボール104が枠画像107の内側に入っているか否かによって判断される。したがって、第2プレイヤは、移動中のボール104が枠画像107内に入るようにハンドヘルドデバイス9を動かす操作によって、野手106にボール104を捕球させる。なお、ボール104が野手106に到達した時点でボール104が枠画像107内に入っていれば、捕球成功と判断される。一方、上記時点でボール104が枠画像107内に入っていない場合や、ボール104が野手106を超えていった場合には、捕球失敗と判断される。以上のように、第2プレイヤは、ハンドヘルドデバイス9の姿勢を変化させる操作によって捕球方向を指示して野手106に捕球動作を行わせることができる。
【0163】
なお、ゲーム装置3によって捕球判断(捕球に成功したか否かの判断)が行われた後は、判断結果に応じた処理が実行される。捕球判断後の処理はどのような処理であってもよいが、本実施形態においては、ゲーム装置3は、捕球に成功した場合はアウト、捕球に失敗した場合はヒットと判断してゲームを進行する。なお、他の実施形態においては、捕球判断後においては、第2プレイヤが野手106に対する操作(野手106を移動させたり、ボール104を投げさせたりする操作)を行うことを可能としてもよい。また、捕球判断後においてゲーム装置3が、野手106の動作(捕球成功の場合にボール104を投げたり、捕球失敗の場合にボール104を追いかけたりする動作)を自動的に制御するようにしてもよい。
【0164】
以上のように、本実施形態においては、テレビ2の他にハンドヘルドデバイス9に表示装置を設ける構成において、単一のゲーム空間に2つの仮想カメラが設定され、ゲーム空間を各仮想カメラから見た2種類のゲーム画像がそれぞれ表示される。これによって、投球シーンおよび守備シーンのそれぞれについて、それぞれのプレイヤにとって見やすい(操作しやすい)ゲーム画像を表示することができる。また、2種類のゲーム画像において、ゲーム空間に対するゲーム処理(ゲーム空間内のオブジェクトの制御等)はほとんどが共通であって、共通のゲーム空間に描画処理を2回行なうだけでそれぞれのゲーム画像が生成できるので、当該ゲーム処理をそれぞれ行なうことに比べると処理効率が高いという利点がある。
【0165】
また、投球シーンにおいては、投球方向を表す目標画像105はハンドヘルドデバイス9側にのみ表示されるので、第1プレイヤは目標画像105が指し示す位置を見ることができない。そのため、第1プレイヤに投球方向が知られて第2プレイヤが不利になるといったゲーム上の不都合が生じない。このように、本実施形態においては、一方のプレイヤがそのゲーム画像を見てしまうと他方のプレイヤにとってゲーム上の不都合が生じる場合には、当該ゲーム画像をハンドヘルドデバイス9に表示すればよい。これによって、ゲームの戦略性が低下する等の不都合を防止することができる。なお、他の実施形態において、ゲームの内容によっては(例えば、第2ゲーム画像が第1プレイヤに見られても上記のような不都合が生じない場合には)、ゲーム装置3は、第2ゲーム画像を第1ゲーム画像とともにテレビ2に表示するようにしてもよい。
【0166】
なお、本実施形態においては、ハンドヘルドデバイス9側の第2ゲーム画像が表すゲーム空間の範囲(表示範囲)は、ハンドヘルドデバイス9の姿勢に応じて変化する(
図12)。ここで、テレビ2には第2ゲーム画像とは異なる表示範囲の第1ゲーム画像が表示されるので、第1プレイヤは当該第1ゲーム画像を見てゲームをプレイすることができる。したがって、第2プレイヤは、第1プレイヤへの影響を気にすることなく、ハンドヘルドデバイス9側の第2ゲーム画像の表示範囲を自由に変更することができる。
【0167】
[7.ゲーム処理の詳細]
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。
図15は、ゲーム処理において用いられる各種データを示す図である。
図15において、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータを示す図である。
図15に示すように、ゲーム装置3のメインメモリには、ゲームプログラム110、第1操作データ111、第2操作データ116、および処理用データ121が記憶される。なお、メインメモリには、
図15に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
【0168】
ゲームプログラム110は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム110は、光ディスク4に代えて、ゲーム装置3の外部装置から(例えばインターネットを介して)取得されてもよい。また、ゲームプログラム110に含まれる一部(例えば、操作装置7および/またはハンドヘルドデバイス9の姿勢を算出するためのプログラム)については、ゲーム装置3内に予め記憶されていてもよい。
【0169】
第1操作データ111は、操作装置7に対するユーザの操作を表すデータである。第1操作データ111は、操作装置7から送信されてゲーム装置3において取得される。第1操作データ111は、加速度データ112、角速度データ113、マーカ座標データ114、および操作ボタンデータ115を含む。なお、メインメモリには、最新の(最後に取得された)ものから順に所定個数の第1操作データが記憶されてもよい。
【0170】
加速度データ112は、加速度センサ37によって検出された加速度(加速度ベクトル)を表すデータである。ここでは、加速度データ112は、
図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度を表すものであるが、他の実施形態においては、任意の1以上の方向に関する加速度を表すものであればよい。
【0171】
角速度データ113は、ジャイロセンサユニット6のジャイロセンサ55および56によって検出された角速度を表すデータである。ここでは、角速度データ113は、
図3に示すXYZの3軸回りのそれぞれの角速度を表すものであるが、他の実施形態においては、任意の1軸以上の軸回り角速度を表すものであればよい。
【0172】
マーカ座標データ114、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を表すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための2次元座標系で表現され、マーカ座標データ114は、当該2次元座標系における座標値を表す。
【0173】
操作ボタンデータ115は、操作装置7に設けられる各操作ボタン32a〜32iに対する入力状態を表すデータである。
【0174】
なお、第1操作データ111は、操作装置7を操作するプレイヤの操作を表すものであればよく、上記各データ112〜115の一部のみを含むものであってもよい。また、操作装置7が他の入力手段(例えば、タッチパネルやアナログスティック等)を有する場合には、第1操作データ111は、当該他の入力手段に対する操作を表すデータを含んでいてもよい。なお、本実施形態のように操作装置7自体の動きをゲーム操作として用いる場合には、第1操作データ111は、加速度データ112、角速度データ113、またはマーカ座標データ114のように、操作装置7自体の動きに応じて値が変化するデータを含むことが必要である。
【0175】
第2操作データ116は、ハンドヘルドデバイス9に対するユーザの操作を表すデータである。第2操作データ116は、ハンドヘルドデバイス9から送信されてゲーム装置3において取得される。第2操作データ116は、加速度データ117、角速度データ118、タッチ位置データ119、および操作ボタンデータ120を含む。なお、メインメモリには、最新の(最後に取得された)ものから順に所定個数の第2操作データが記憶されてもよい。
【0176】
加速度データ117は、加速度センサ89によって検出された加速度(加速度ベクトル)を表すデータである。ここでは、加速度データ117は、
図8に示すxyzの3軸の方向に関する加速度を各成分とする3次元の加速度を表すものであるが、他の実施形態においては、任意の1以上の方向に関する加速度を表すものであればよい。
【0177】
角速度データ118は、ジャイロセンサ90によって検出された角速度を表すデータである。ここでは、角速度データ118は、
図8に示すxyzの3軸回りのそれぞれの角速度を表すものであるが、他の実施形態においては、任意の1軸以上の軸回り角速度を表すものであればよい。
【0178】
タッチ位置データ119は、タッチパネル63の入力面において入力が行われた位置を表すデータである。ここでは、タッチ位置データ119は、上記入力面上の位置を示すための2次元座標系の座標値を表す。
【0179】
操作ボタンデータ120は、ハンドヘルドデバイス9に設けられる各操作ボタン64A〜64Lに対する入力状態を表すデータである。
【0180】
なお、第2操作データ116は、ハンドヘルドデバイス9を操作するプレイヤの操作を表すものであればよく、上記各データ117〜120のいずれか1つのみを含むものであってもよい。また、ハンドヘルドデバイス9が他の入力手段(例えば、タッチパッドや、操作装置7の撮像手段等)を有する場合には、第2操作データ116は、当該他の入力手段に対する操作を表すデータを含んでいてもよい。なお、本実施形態のようにハンドヘルドデバイス9自体の動きをゲーム操作として用いる場合には、第2操作データ116は、加速度データ117または角速度データ118のように、ハンドヘルドデバイス9自体の動きに応じて値が変化するデータを含むようにする。
【0181】
処理用データ121は、後述するゲーム処理(
図16)において用いられるデータである。処理用データ121は、第1姿勢データ122、第2姿勢データ123、第1カメラデータ124、第2カメラデータ125、ボールデータ126、バットデータ127、モードデータ128、第1表示設定データ129、第2表示設定データ130、正面方向データ131、および回転角データ132を含む。なお、
図15に示すデータの他、処理用データ121は、各種オブジェクトに設定されるパラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【0182】
第1姿勢データ122は、操作装置7の姿勢を表すデータである。本実施形態では、第1姿勢データ122は、上記第1操作データ111に含まれる加速度データ112および角速度データ113に基づいて算出される。第1姿勢データ122の算出方法については後述する。
【0183】
第2姿勢データ123は、ハンドヘルドデバイス9の姿勢を表すデータである。本実施形態では、第2姿勢データ123は、上記第2操作データ116に含まれる加速度データ117および角速度データ118に基づいて算出される。第2姿勢データ123の算出方法については後述する。
【0184】
第1カメラデータ124は、テレビ2に表示される第1ゲーム画像を生成するための第1仮想カメラの配置を表すデータである。具体的には、第1カメラデータ124は、仮想のゲーム空間内における第1仮想カメラの位置および姿勢を表す。詳細は後述するが、第1カメラデータ124は、第1プレイヤのためのゲーム画像(第1プレイヤにとってゲーム操作が行いやすいゲーム画像)が生成されるように、打者オブジェクト101あるいはボールオブジェクト104の位置等に基づいて算出される。なお、第1カメラデータ124には、第1仮想カメラの画角(視野範囲)を表すデータ等が含まれていてもよい。
【0185】
第2カメラデータ125は、ハンドヘルドデバイス9の下側LCD62に表示される第2ゲーム画像を生成するための第2仮想カメラの配置を表すデータである。具体的には、第2カメラデータ125は、上記ゲーム空間内における第2仮想カメラの位置および姿勢を表す。詳細は後述するが、第2カメラデータ125は、第2プレイヤのためのゲーム画像(第2プレイヤにとってゲーム操作が行いやすいゲーム画像)が生成されるように、投手オブジェクト102あるいは野手オブジェクト106の位置等に基づいて算出される。なお、第2カメラデータ125には、第2仮想カメラの画角(視野範囲)を表すデータ等が含まれていてもよい。
【0186】
ボールデータ126は、仮想のゲーム空間内におけるボールオブジェクト104の位置を表すデータである。ボールデータ126は、第2プレイヤによる投球操作あるいは第1プレイヤによる打撃操作によってボールオブジェクト104の挙動が決定され、当該挙動に従ってボールオブジェクト104が移動するように算出される。
【0187】
バットデータ127は、仮想のゲーム空間内におけるバットオブジェクト103の位置および姿勢を表すデータである。バットデータ127は、第1プレイヤによる打撃操作に基づいて、具体的には、操作装置7の姿勢に対応する姿勢となるように上記第1姿勢データ122に基づいて算出される。
【0188】
モードデータ128は、ゲーム制御処理(ステップS2)の処理モードを表すデータである。この「処理モード」はゲーム制御処理における処理内容を示しており、処理モードが異なるとゲーム制御処理において実行される処理内容が異なる。本実施形態においては、処理モードとしては、投球モードおよび守備モードという2種類のモードがある。投球モードは、上記投球シーンにおいて設定されるモードであり、守備モードは、上記守備シーンにおいて設定されるモードである。モードデータ128は、上記2種類のモードのうちいずれかを表す。
【0189】
第1表示設定データ129は、テレビ2に表示される第1ゲーム画像を生成・表示するための設定を表すデータである。具体的には、第1表示設定データ129は、第1ゲーム画像を生成(描画)する際に描画しないオブジェクトがある場合、そのオブジェクトを表す。例えば、第1ゲーム画像を生成する際に打者オブジェクト101を描画しない場合には、第1表示設定データ129は打者オブジェクト101を表す。
【0190】
第2表示設定データ130は、ハンドヘルドデバイス9の下側LCD62に表示される第2ゲーム画像を生成・表示するための設定を表すデータである。具体的には、第2表示設定データ130は、第2ゲーム画像を生成(描画)する際に描画しないオブジェクトがある場合、そのオブジェクトを表す。
【0191】
なお、本実施形態においては、ゲーム装置3は、2種類のゲーム画像のために2種類の表示設定データ129および130を用意することとしたが、他の実施形態においては、いずれか一方のゲーム画像のために1種類の表示設定データのみを用意するようにしてもよい。例えば、第1ゲーム画像に関しては描画しないオブジェクトが存在しない場合には、ゲーム装置3は、上記第2表示設定データ130のみをメインメモリに記憶し、第1表示設定データ129についてはメインメモリに記憶しないようにしてもよい。また、他の実施形態において、描画しないオブジェクトを2種類のゲーム画像で共通にする場合には、1種類の表示設定データのみを用意するようにしてもよい。
【0192】
正面方向データ131は、守備シーンにおいてハンドヘルドデバイス9の姿勢から第2仮想カメラの姿勢を算出する際に、基準(正面)とする方向(正面方向)を表すデータである。詳細は後述するが、正面方向データ131は、守備シーンにおいて、ボール104を捕球すべき野手106からゲーム空間内のホームベースへの方向を表すように算出される。
【0193】
回転角データ132は、守備シーンにおいてハンドヘルドデバイス9の姿勢から第2仮想カメラの姿勢を算出する際に、第2仮想カメラを回転させる角度を表すデータである。詳細は後述するが、守備モードにおいては、ハンドヘルドデバイス9の姿勢から算出された第2仮想カメラの姿勢に対して、姿勢を回転させる補正が行われる。回転角データ132は、当該補正によって姿勢を回転させる角度を表す。
【0194】
次に、ゲーム装置3において行われるゲーム処理の詳細を、
図16〜
図21を用いて説明する。
図16は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。なお、ゲーム装置3においては、電源投入後に光ディスク4に記憶されたゲームプログラムがすぐに実行される構成であってもよいし、電源投入後にまず所定のメニュー画面を表示する内蔵プログラムを実行して、その後ユーザによってゲームの開始が指示されたときに光ディスク4に記憶されたゲームプログラムが実行されるようにしてもよい。
図16に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0195】
なお、
図16、
図17、および、
図19〜
図20に示すフローチャートの各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU10が実行するものとして説明するが、上記フローチャートの一部のステップの処理を、CPU10以外のプロセッサや専用回路が実行するようにしてもよい。
【0196】
まずステップS1において、CPU10は初期処理を実行する。初期処理は、仮想空間を構築し、仮想空間に登場する各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。なお、本実施形態においては、初期処理において、投球モードを表すデータがモードデータ128としてメインメモリに記憶される。ステップS1の次にステップS2の処理が実行される。以降、ステップS2〜S8の一連の処理からなる処理ループが所定時間(1フレーム時間)に1回の割合で繰り返し実行される。
【0197】
ステップS2において、CPU10はゲーム制御処理を実行する。ゲーム制御処理は、各プレイヤによるゲーム操作に従ってオブジェクトを動作させる処理等を実行し、ゲームを進行させる処理である。本実施形態における野球ゲームでは、上述の処理モード毎にゲーム制御処理の処理内容が異なる。すなわち、ゲーム制御処理の開始時において、CPU10は、モードデータ128をメインメモリから読み出し、現在の処理モードを判別する。そして、現在の処理モードに応じた内容のゲーム制御処理を実行する。以下、ゲーム制御処理の処理モード毎に、ステップS2〜S8の処理ループにおける処理の詳細を説明する。
【0198】
(投球モードにおける処理)
図17は、投球モードにおけるゲーム制御処理の詳細な流れを示すフローチャートである。投球モードにおいてはまずステップS11において、CPU10は、第1仮想カメラの位置および姿勢を設定する。ステップS11で設定される第1仮想カメラの位置および姿勢は、予め定められている。すなわち、CPU10は、予め定められた位置および姿勢を表すデータを第1カメラデータ124としてメインメモリに記憶する。第1仮想カメラの具体的な位置および姿勢はどのように設定されてもよいが、本実施形態では、第1仮想カメラは、打者101のやや後方の位置に、打者101の側から投手102の方を見た視線となるように設定される。これによれば、投手102から投げられたボール104を含む第1ゲーム画像が生成されるので、第1プレイヤは、ボール104を打つ操作を見やすいゲーム画像で行うことができる。また、本実施形態においては、投球モードにおける第1仮想カメラの位置および姿勢は固定である。ただし、他の実施形態においては、CPU10は、第1プレイヤの操作に従って第1仮想カメラの位置および/または姿勢を変化させるようにしてもよい。例えば、第1プレイヤの操作によって打者の位置が変化する場合に、打者の位置に応じて第1仮想カメラの位置を変化させるようにしてもよい。ステップS11の次にステップS12の処理が実行される。
【0199】
ステップS12において、CPU10は、操作装置7およびハンドヘルドデバイス9から各操作データを取得する。操作装置7は、加速度センサ37、ジャイロセンサユニット6、撮像情報演算部35および操作部32から出力される各データを第1操作データとしてゲーム装置3へ繰り返し送信するので、ゲーム装置3は、操作装置7からのデータを逐次受信して第1操作データ111としてメインメモリに逐次記憶する。ステップS12において、CPU10は、最新の第1操作データ111をメインメモリから読み出す。また、ハンドヘルドデバイス9は、加速度センサ89、ジャイロセンサ90、タッチパネル63、および操作ボタン64から出力される各データを第2操作データとしてゲーム装置3へ繰り返し送信するので、ゲーム装置3は、ハンドヘルドデバイス9からのデータを逐次受信して第2操作データ116としてメインメモリに逐次記憶する。ステップS12において、CPU10は、最新の第2操作データ116をメインメモリから読み出す。ステップS12の次にステップS13の処理が実行される。
【0200】
ステップS13において、CPU10は、ハンドヘルドデバイス9の姿勢を算出する。ハンドヘルドデバイス9の姿勢は、第2操作データ116に基づいて算出されればどのような方法で算出されてもよいが、本実施形態においては、次の方法で姿勢を算出する。以下、ハンドヘルドデバイス9の姿勢の算出方法について説明する。
【0201】
まず、CPU10は、メインメモリに記憶されている角速度データ118に基づいてハンドヘルドデバイス9の姿勢を算出する。ハンドヘルドデバイス9の姿勢を角速度から算出する方法はどのような方法であってもよいが、当該姿勢は、前回の姿勢(前回に算出された姿勢)と、今回の角速度(今回の処理ループにおいて取得された角速度)とを用いて算出される。具体的には、CPU10は、前回の姿勢を今回の角速度で単位時間分だけ回転させることによって姿勢を算出する。なお、前回の姿勢は、メインメモリに記憶されている第2姿勢データ123により示され、今回の角速度は、メインメモリに記憶されている角速度データ118により示されている。したがって、CPU10は、メインメモリから第2姿勢データ123および角速度データ118を読み出して、ハンドヘルドデバイス9の姿勢を算出する。以上のようにして算出された「角速度に基づく姿勢」を表すデータはメインメモリに記憶される。
【0202】
なお、角速度から姿勢を算出する場合、初期姿勢を定めておくのがよい。つまり、ハンドヘルドデバイス9の姿勢を角速度から算出する場合には、CPU10は、最初にハンドヘルドデバイス9の初期姿勢を算出しておく。ハンドヘルドデバイス9の初期姿勢は、加速度データに基づいて算出されてもよいし、ハンドヘルドデバイス9を特定の姿勢にした状態でプレイヤに所定の操作を行わせることで、所定の操作が行われた時点の特定の姿勢を初期姿勢として用いるようにしてもよい。
【0203】
次に、CPU10は、角速度に基づいて算出したハンドヘルドデバイス9の姿勢を、加速度データ117を用いて補正する。具体的には、CPU10は、メインメモリから加速度データ117を読み出して、加速度データ117に基づいてハンドヘルドデバイス9の姿勢を算出する。ここで、加速度センサ89は、ハンドヘルドデバイス9がほぼ静止している状態では、ハンドヘルドデバイス9に対して加えられる加速度は重力加速度を意味する。したがって、検出された重力加速度の方向(重力方向)を、加速度センサ89が出力する加速度データ117を用いて算出することができるので、重力方向に対するハンドヘルドデバイス9の向き(姿勢)を当該加速度データ117に基づいて算出することができる。このように、加速度センサ89が重力加速度を検出する状況では、重力方向に対するハンドヘルドデバイス9の向き(姿勢)を加速度データ117に基づいて算出することができる。以上のようにして算出された「加速度に基づく姿勢」を表すデータはメインメモリに記憶される。
【0204】
加速度に基づく姿勢を算出すると、CPU10は次に、加速度に基づく姿勢を用いて、角速度に基づく姿勢を補正する。具体的には、CPU10は、角速度に基づく姿勢を表すデータと加速度に基づく姿勢を表すデータとをメインメモリから読み出し、角速度データに基づく姿勢を、加速度データに基づく姿勢へ所定の割合で近づける補正を行う。この所定の割合は、予め定められた固定値であってもよいし、加速度データ117が示す加速度等に応じて設定されてもよい。また、加速度に基づく姿勢に関しては、重力方向を軸とする回転方向については姿勢を算出することができないので、CPU10は、当該回転方向に関しては補正を行わないようにしてもよい。本実施形態においては、以上のようにして得られた補正後の姿勢を表すデータが、第2姿勢データ123としてメインメモリに記憶される。ステップS13の次にステップS14の処理が実行される。
【0205】
以上のステップS13の処理によって、ハンドヘルドデバイス9の姿勢が算出される。ここで、ハンドヘルドデバイス9の姿勢を算出する方法のうち、角速度を用いる方法では、ハンドヘルドデバイス9がどのように動いているときであっても姿勢を算出することができる。一方、角速度を用いる方法では、逐次検出される角速度を累積加算していくことによって姿勢を算出するので、誤差が累積すること等によって精度が悪くなったり、いわゆる温度ドリフトの問題でジャイロセンサの精度が悪くなったりするおそれがある。また、加速度を用いる方法は、誤差が蓄積しない一方、ハンドヘルドデバイス9が激しく動かされている状態では、(重力方向を正確に検出することができないので)姿勢を精度良く算出することができない。本実施形態によれば、上記のように特長の異なる2種類の方法を用いるので、ハンドヘルドデバイス9の姿勢をより正確に算出することができる。なお、本実施形態では、ゲーム装置3は、上記2つの方法を用いてハンドヘルドデバイス9の姿勢を算出するが、他の実施形態においては、2つの方法のうちいずれか1つを用いて姿勢を算出するようにしてもよい。
【0206】
ステップS14において、CPU10は、ハンドヘルドデバイス9の姿勢に基づいて第2仮想カメラを制御する。すなわち、ステップS14では第2仮想カメラの位置および姿勢が算出される。ここで、投球モードにおける第2仮想カメラの位置は、予め定められた所定位置に固定される。上記所定位置は、例えば、投手102の位置または投手102よりもやや後方(ホームベースから遠ざかる方向)の位置である。これによって、
図10に示されるように、投手102の側から打者101の方を見た視線となる第2ゲーム画像が生成される。
【0207】
また、第2仮想カメラの姿勢は、ハンドヘルドデバイス9の姿勢に対応するように設定される。以下、
図18を参照して、ハンドヘルドデバイス9の姿勢に基づく第2仮想カメラの姿勢の設定方法について説明する。
【0208】
図18は、ハンドヘルドデバイス9の姿勢と第2仮想カメラの姿勢との関係を示す図である。
図18において、3つのベクトルVA,VB,VCは、ハンドヘルドデバイス9の姿勢を表す。すなわち、ベクトルVA,VB,VCは、それぞれ、ハンドヘルドデバイス9の右向き(
図8に示すx軸正方向)、上向き(
図8に示すy軸正方向)、前向き(
図8に示すz軸正方向)を表すベクトルである。また、3つのベクトルVa,Vb,Vcは、第2仮想カメラ140の姿勢を表し、それぞれ、第2仮想カメラ140の右向き、上向き、前向きを表すベクトルである。
【0209】
図18に示す上欄は、ハンドヘルドデバイス9が所定の基準姿勢となる場合を示している。ハンドヘルドデバイス9の基準姿勢はどのような姿勢でもよいが、例えば、ベクトルVBが鉛直上向き(重力方向の逆方向)となり、ベクトルVCが水平方向であってテレビ2の方向となり、ベクトルVAが水平方向となるような姿勢である。ハンドヘルドデバイス9が上記基準姿勢となる場合、第2仮想カメラ140は基準姿勢となる。第2仮想カメラ140の基準姿勢はどのような姿勢でもよいが、本実施形態においては、ベクトルVbが仮想空間における鉛直上向きとなり、ベクトルVcが投手の位置からホームベースへの向きとなり、ベクトルVaが水平方向となるような姿勢である。これによれば、ハンドヘルドデバイス9を基準姿勢とした場合に、投手の位置から捕手への方向を真っ直ぐに見た第2ゲーム画像を生成することができる。以上のように、第2仮想カメラ140の姿勢は、ハンドヘルドデバイス9が基準姿勢となる場合に、所定の基準姿勢となるように設定される。
【0210】
また、第2仮想カメラ140の姿勢は、ハンドヘルドデバイス9が基準姿勢から回転した方向に応じた方向に、回転量に応じた回転量だけ、第2仮想カメラ140を基準姿勢から回転させた姿勢となるように設定される。例えば、
図18の中欄に示すように、ハンドヘルドデバイス9が基準姿勢から右回りに回転した場合、第2仮想カメラは基準姿勢から右回りに回転するように算出される。また、
図18の下欄に示すように、ハンドヘルドデバイス9が基準姿勢から左回りに回転した場合、第2仮想カメラは基準姿勢から左回りに回転するように算出される。なお、上記における「右回り」および「左回り」とは、現実空間あるいは仮想空間において鉛直下向きに見た場合における回転方向である。
【0211】
図18に示すように、本実施形態においては、仮想空間における第2仮想カメラ140の姿勢が現実空間におけるハンドヘルドデバイス9の姿勢に一致するように、第2仮想カメラ140の姿勢が算出される。ただし、他の実施形態においては、ハンドヘルドデバイス9の姿勢と第2仮想カメラ140の姿勢とが一致する必要はなく、ハンドヘルドデバイス9の姿勢に応じて変化するように第2仮想カメラ140の姿勢が算出されればよい。すなわち、ハンドヘルドデバイス9の回転量と第2仮想カメラ140の回転量を同じにする必要はなく、ハンドヘルドデバイス9を少し動かすだけで第2仮想カメラ140を十分制御できるようにしてもよい。また、ハンドヘルドデバイス9の回転量に対して第2仮想カメラ140の回転量を小さくすることによって、プレイヤが第2仮想カメラ140の向きを細かく操作できるようにしてもよい。
【0212】
ステップS14の具体的な処理としては、CPU10は、メインメモリから第2姿勢データ123を読み出し、第2姿勢データ123に基づいて第2仮想カメラの姿勢を算出する。また、第2仮想カメラの位置を上記所定位置に設定する。そして、算出された姿勢と設定された位置を表すデータを第2カメラデータ125としてメインメモリに記憶する。ステップS14の次にステップS15の処理が実行される。
【0213】
上記ステップS14においては、CPU10は第2仮想カメラの位置を固定し、第2仮想カメラの姿勢をハンドヘルドデバイス9の姿勢に応じて変化させた。ここで、他の実施形態においては、第2仮想カメラの姿勢に代えて(または姿勢と共に)位置をハンドヘルドデバイス9の姿勢に応じて変化させてもよい。例えば、CPU10は、第2仮想カメラを左に向けて回転させる場合、第2仮想カメラの向きを左に回転させながら位置を左に移動させてもよい。
【0214】
ステップS15において、CPU10は、投手102およびボール104の動作を制御する。ここで、投手102は、第2仮想カメラの姿勢に応じて向きを変える動作を行い、所定の投球指示が行われたことに応じて投球動作を行う。すなわち、CPU10は、第2カメラデータ125をメインメモリから読み出し、第2仮想カメラの姿勢(より具体的には、鉛直方向の軸回りに関する向き)に合わせて投手102の向きを変更する。また、操作ボタンデータ120をメインメモリから読み出し、投球指示(例えば、ボタン64Bを押下することで行われる指示)が行われたか否かを判定する。そして、投球指示が行われた場合には、投手102に投球動作を行わせる。なお、CPU10は、複数フレームに渡って(つまり、複数回のステップS15の処理において)投手102に一連の投球動作を行わせる。
【0215】
また、ボール104は、上記投球指示が行われたことに応じて、投手102の位置から所定の投球方向へ所定の速さで移動するように制御される。ここで、「所定の投球方向」は、第2仮想カメラの位置および姿勢によって決められる。具体的には、所定の投球方向は、第2仮想カメラの視線方向が指し示す位置であり、換言すれば、(第2仮想カメラの姿勢によって決まる)目標画像105が指し示す位置である。なお、目標画像105の位置は、第2仮想カメラの視線方向に合わせてもよいし、視線方向から所定量ずらした位置に配置するようにしてもよい。また、目標画像105を用いる実施例以外の実施例として、投球の指示をタッチパネル63で行い、投球方向がタッチパネル63に対するタッチ位置に基づいて決定されるようにしてもよい。ボール104が移動する上記所定の速さは、どのように決定されてもよく、予め定められた速さでもよいし、投手102に設定されたパラメータに応じて決定されてもよい。以上より、ステップS25において、CPU10は、投球指示が行われた場合には、第2カメラデータ125をメインメモリから読み出し、第2仮想カメラの位置および姿勢に基づいて上記投球方向を算出する。また、投球指示が行われた後においては、CPU10は、ボールデータ126をメインメモリから読み出し、ボール104の現在の位置を、投球方向へ所定の距離だけ移動させた位置を、ボール104の新たな位置として算出する。算出された新たな位置を表すデータがボールデータ126として新たにメインメモリに記憶される。上記のようなボールデータ126を更新する処理が(ステップS2〜S8の処理ループが繰り返されることによって)繰り返し実行されることによって、ボール104の位置が逐次更新され、ボール104が移動して表示されることになる。なお、投球指示が行われる前においては、ボール104の制御に関する処理は行われない。以上のステップS15の次にステップS16の処理が実行される。
【0216】
上記ステップS15のように、本実施形態においては、ハンドヘルドデバイス9の姿勢と第2仮想カメラの姿勢とを対応させ、第2仮想カメラの視線方向にボール104を移動させた。ここで、他の実施形態においては、ボール104の移動方向は、第2操作データ116に基づいて決定されれば、どのように決定されてもよい。例えば、ボール104は、タッチ位置(タッチ位置データ119が表す位置)に対応するゲーム空間内の位置へ移動するように制御されてもよいし、十字ボタン64Aまたはアナログスティック65によってボール104の移動方向が決定されてもよい。また、CPU10は、ボール104の移動中において移動方向が第2プレイヤの操作によって変化するようにしてもよい。例えば、ハンドヘルドデバイス9の動きの方向に応じた方向へボール104が曲がるようにしてもよいし、十字ボタン64Aまたはアナログスティック65によってボール104の曲がる方向が決定されてもよい。
【0217】
以上のステップS12〜S15のように、投球モードにおいては、ハンドヘルドデバイス9の姿勢に応じて第2仮想カメラの姿勢を変化させる処理が実行される。また、本実施形態においては第2仮想カメラの姿勢が投手102の投球方向に対応しているので、ハンドヘルドデバイス9の姿勢に応じて投球方向が変化することとなる。つまり、第2プレイヤは、ハンドヘルドデバイス9の姿勢を動かすことによって投手102の投球方向を変化させることができる。
【0218】
ステップS16において、CPU10は操作装置7の姿勢を算出する。操作装置7の姿勢は、第1操作データ111に基づいて算出されればどのような方法で算出されてもよい。本実施形態においては、ハンドヘルドデバイス9の姿勢と同様の方法で算出される。すなわち、CPU10は、まず、メインメモリから第1姿勢データ122および角速度データ113を読み出し、前回の姿勢を今回の角速度で単位時間分だけ回転させることによって操作装置7の姿勢を算出する。次に、CPU10は、メインメモリから加速度データ112を読み出して、加速度データ112に基づいて操作装置7の姿勢を算出する。さらに、CPU10は、角速度データ113に基づく姿勢を、加速度データ112に基づく姿勢へ所定の割合で近づける補正を行うことによって、最終的な操作装置7の姿勢を算出する。以上のようにして算出された補正後の姿勢を表すデータが、第1姿勢データ122としてメインメモリに記憶される。ステップS16の次にステップS17の処理が実行される。
【0219】
本実施形態においては、CPU10は、操作装置7の加速度および角速度に基づいて操作装置7の姿勢を算出したが、他の実施形態においては、加速度および角速度のいずれか一方に基づいて姿勢を算出してもよい。また、他の実施形態においては、加速度および角速度に加えて(または代えて)マーカ座標データ114に基づいて姿勢が算出されてもよいし、加速度および/または角速度に基づいて算出された姿勢をマーカ座標データ114を用いて補正してもよい。
【0220】
以下、マーカ座標データ114に基づく姿勢の算出方法および補正方法について説明する。マーカ座標データ114は、撮像画像内におけるマーカ8Rおよび8Lの位置を示すので、これらの位置から、ロール方向(Z軸回りの回転方向)に関する操作装置7の姿勢を算出することができる。つまり、撮像画像内においてマーカ8Rの位置とマーカ8Lの位置とを結ぶ直線の傾きから、ロール方向に関する操作装置7の姿勢を算出することができる。また、マーカ装置8に対する操作装置7の位置が特定できる場合(例えば、マーカ装置8の正面に操作装置7が位置すると想定できる場合)には、撮像画像内におけるマーカ装置8の位置から、ピッチ方向およびヨー方向に関する操作装置7の姿勢を算出することができる。例えば、撮像画像内においてマーカ8Rおよび8Lの位置が左に移動した場合、操作装置7は右に向き(姿勢)を変えたと判断することができる。このように、マーカ8Rの位置とマーカ8Lの位置との中点の位置から、ピッチ方向およびヨー方向に関する操作装置7の姿勢を算出することができる。以上のようにして、マーカ座標データ114に基づいて操作装置7の姿勢を算出することができる。
【0221】
さらに、加速度および/または角速度に基づく姿勢を、マーカ座標データ114を用いて補正する場合には、CPU10は、加速度および/または角速度に基づく姿勢を、マーカ座標データ114に基づく姿勢へ所定の割合で近づける補正を行う。この所定の割合は、予め定められた固定値であってもよい。また、上記補正は、ロール方向、ピッチ方向、およびヨー方向のいずれか1つまたは2つの方向のみについて行われてもよい。例えば、マーカ座標データ114を用いる場合、ロール方向については精度良く姿勢を算出することができるので、CPU10は、ロール方向についてのみ、マーカ座標データ114に基づく姿勢を用いて補正を行ってもよい。また、操作装置7の撮像素子40によってマーカ装置8が撮像されていない場合は、マーカ座標データ114に基づく姿勢を算出することができないので、この場合にはマーカ座標データ114を用いる補正処理は実行されなくてもよい。
【0222】
ステップS17において、CPU10は、操作装置7の姿勢に基づいて打者101およびバット103の動作を制御する。本実施形態においては、バット103の姿勢は操作装置7の姿勢に基づいて算出される。具体的には、上記ステップS14の処理と同様、操作装置7の姿勢に対応するようにバット103の姿勢が算出される。したがって、第1プレイヤは、操作装置7を振る操作を行うことによってバット103を振ることができる。なお、バット103の位置は、打者101がバット103を振る動作が自然に見えるように適宜算出される。また、打者101の動作に関しては、CPU10は、バット103の移動に合わせてバット103を振る動作を打者101に行わせ、打者101がバット103を振る動作が自然に見えるようにする。
【0223】
ステップS17の具体的な処理としては、CPU10は、第1姿勢データ122をメインメモリから読み出して、操作装置7の姿勢に対応するようにバット103の姿勢を算出し、さらに、バット103の姿勢に応じてバット103の位置を算出する。算出されたバット103の位置および姿勢を表すデータは、バットデータ127としてメインメモリに記憶される。ステップS17の次にステップS18の処理が実行される。
【0224】
なお、バット103に対する制御は、第1操作データ111を用いて行われれば、どのような方法で行われてもよい。例えば、CPU10は、操作装置7の姿勢とバット103の姿勢とを正確に一致させなくてもよく、バット103がボール104に当たりやすくなるように、バット103の位置および姿勢を補正したり、あるいは、バット103を振るタイミングを補正したりするようにしてもよい。また、CPU10は、操作装置7を振る操作が行われたことを第1操作データ111によって検出し、当該操作が行われたことに応じてバット103を振るようにしてもよい。操作装置7を振る操作は、例えば、操作装置7の姿勢が所定方向(あるいは任意の方向)に所定角度以上変化したことや、操作装置7に対して所定方向(例えば、
図3に示すZ軸方向)に所定値以上の加速度が加えられたことによって、検出することができる。なお、このとき、バット103の位置および姿勢は、ボール104の軌道に応じて適宜(振る操作のタイミングがよければバット103がボール104に当たるように)算出されてもよい。
【0225】
ステップS18において、CPU10は、バット103にボール104が当たったか否かを判定する。具体的には、ボールデータ126とバットデータ127をメインメモリから読み出し、バット103の位置および姿勢とボール104の位置とに基づいて、バット103とボール104とが接触したか否かを判定する。ステップS18の判定結果が肯定である場合、ステップS19の処理が実行される。一方、ステップS18の判定結果が否定である場合、ステップS20の処理が実行される。
【0226】
ステップS19において、CPU10は、処理モードを守備モードに変更する。具体的には、CPU10は、メインメモリに記憶されているモードデータ128を、守備モードを表すデータへと変更(更新)する。これによって、次の処理ループで実行されるゲーム制御処理においては、守備モードにおける処理が実行されることになる。ステップS19の後、CPU10はゲーム制御処理を終了する。
【0227】
一方、ステップS20において、CPU10は、ボール104を捕手が捕球したか否かを判定する。すなわち、CPU10は、ボールデータ126をメインメモリから読み出し、ボール104の位置が捕手の位置に到達したか否かを判定する。ステップS20の判定結果が肯定である場合、ステップS21の処理が実行される。一方、ステップS20の判定結果が否定である場合、CPU10はゲーム制御処理を終了する。
【0228】
以上のように、上記投球シーンにおけるゲーム制御処理においては、ボール104は、ハンドヘルドデバイス9の動きに応じて変化するように移動方向が決定されて移動する(ステップS15)。第1仮想カメラは、ボール104を含む第1ゲーム画像が生成されるように設定される(ステップS11)。バット103は、操作装置7の動きに応じて動かされる(ステップS17)。そして、ボール104とバット103との接触が判定され(ステップS18)、判定結果に応じた処理が実行される(ステップS19,S21)。これによって、後述するステップS4〜S7によって、判定結果に応じたゲーム画像を生成される。したがって、上記ゲーム制御処理によって、第2プレイヤがハンドヘルドデバイス9を動かすことでボール104の移動方向を操作し、第1プレイヤが操作装置7を動かすことでバット103を操作してボール104に当てる、という野球ゲームを実現することができる。
【0229】
ステップS21において、CPU10は、ストライクまたはボールの判定を行う。すなわち、CPU10は、ボール104の軌道(ボール104の位置の履歴)を記憶しておき、当該軌道に基づいてストライクかボールかを判定する。この判定結果を表すデータはメインメモリに記憶され、後で実行されるゲーム画像の生成処理(ステップS4およびS5)において参照される。ステップS21の後、CPU10はゲーム制御処理を終了する。
【0230】
図16の説明に戻り、ステップS3において、CPU10は、オブジェクトの表示設定処理を実行する。この表示設定処理は、ゲーム画像を生成する際に表示しない(透明であるとして処理する)オブジェクトをゲーム画像毎に設定する処理である。具体的には、CPU10は、モードデータ128をメインメモリから読み出し、現在の処理モードを判別する。そして、第1ゲーム画像と第2ゲーム画像のそれぞれについて、表示しないオブジェクトを現在の処理モードに応じて特定する。本実施形態においては、CPU10は、各処理モードにおいて表示しないオブジェクトを次の対応関係に従って特定する。
(1)投球モード
第1表示設定データ:捕手オブジェクト
第2表示設定データ:投手オブジェクト
(2)守備モード
第1表示設定データ:なし
第2表示設定データ:捕球を行う野手オブジェクト
CPU10は、上記に従って特定したオブジェクトを表すデータを各表示設定データ129および130としてメインメモリに記憶する。すなわち、投球モードにおいては、捕手オブジェクトを表すデータが第1表示設定データとしてメインメモリに記憶されるとともに、投手オブジェクトを表すデータが第2表示設定データとしてメインメモリに記憶される。また、守備モードにおいては、表示しないオブジェクトがないことを表すデータが第1表示設定データとしてメインメモリに記憶されるとともに、野手オブジェクトを表すデータが第2表示設定データとしてメインメモリに記憶される。ステップS3の次にステップS4の処理が実行される。
【0231】
なお、本実施形態においては、ゲーム制御処理の処理モード毎に表示設定データの内容が変更されるものとしたが、表示設定データの変更は、処理モードが変更されるタイミングで行われる必要はなく、他のタイミングで行われてもよい。例えば、他の実施形態においては、単一の処理モード中において表示設定データが変更されてもよい。具体的には、投球モードにおいては、投手102がボール104を投げる前は投手102を表示し、ボール104を投げた後は投手102を非表示としてもよい。また、守備モードにおいては、ボール104を捕球する前は野手を非表示とし、捕球した後は野手を表示するようにしてもよい。
【0232】
ステップS4において、CPU10やGPU11bによって第1ゲーム画像が生成される。すなわち、CPU10やGPU11bは、上記ステップS11で設定された第1仮想カメラから見たゲーム空間の画像(第1仮想カメラの位置から第1仮想カメラの姿勢で見たゲーム空間の画像)を第1ゲーム画像として生成する。投球モードにおいては、打者101の側から投手102の側を見たゲーム空間の画像が第1ゲーム画像として生成される(
図10参照)。生成された第1ゲーム画像はVRAM11dに記憶される。ここで、第1ゲーム画像は、上記ステップS3において特定されたオブジェクトを表示しないように生成される。具体的には、CPU10は、第1カメラデータ124と第1表示設定データ129をメインメモリから読み出し、第1表示設定データ129が表すオブジェクトを描画せずに(あるいは、オブジェクトを透明であるとして)、第1仮想カメラから見たゲーム空間の画像を生成する。投球モードにおいては、捕手オブジェクトが描画されない結果、第1ゲーム画像には捕手オブジェクトの画像が含まれないこととなる。
【0233】
また、上記ステップS21の処理によってストライクまたはボールの判定が行われた場合には、ステップS4においては、判定結果を表す画像(例えば「ストライク」または「ボール」の文字)がゲーム空間の画像に重ねられた第1ゲーム画像が生成される。なお、この場合、判定結果を表す画像は所定時間(数秒程度)の間表示される。なお、当該画像が表示される間は、CPU10はゲームの進行を中断してもよい。ステップS4の次にステップS5の処理が実行される。
【0234】
ステップS5において、CPU10やGPU11bによって第2ゲーム画像が生成される。すなわち、CPU10やGPU11bは、上記ステップS14で設定された第2仮想カメラから見たゲーム空間の画像(第2仮想カメラの位置から第2仮想カメラの姿勢で見たゲーム空間の画像)を第2ゲーム画像として生成する。投球モードにおいては、投手102の側から打者101の側を見たゲーム空間の画像が第2ゲーム画像として生成される(
図11参照)。生成された第2ゲーム画像はVRAM11dに記憶される。ここで、第2ゲーム画像は、上記ステップS3において特定されたオブジェクトを表示しないように生成される。具体的には、CPU10は、第2カメラデータ125と第2表示設定データ130をメインメモリから読み出し、第2表示設定データ130が表すオブジェクトを描画せずに(あるいは、オブジェクトを透明であるとして)、第2仮想カメラから見たゲーム空間の画像を生成する。投球モードにおいては、投手オブジェクト102が描画されない結果、第2ゲーム画像には投手オブジェクト102の画像が含まれないこととなる。
【0235】
なお、上記ステップS21の処理によってストライクまたはボールの判定が行われた場合には、ステップS5においても上記ステップS4と同様に、判定結果を表す画像がゲーム空間の画像に重ねられた第1ゲーム画像が生成される。また、本実施形態においては、CPU10は、ゲーム空間の画像に重ねて画像の中央の位置に目標画像105を生成する(
図10参照)。ステップS5の次にステップS6の処理が実行される。
【0236】
ステップS6において、CPU10は、ステップS4で生成された第1ゲーム画像をテレビ2へ出力する。具体的には、CPU10は、VRAM11dに記憶された第1ゲーム画像の画像データをAV−IC15へ送り、AV−IC15は当該画像データをAVコネクタ16を介してテレビ2へ出力する。これによって、第1ゲーム画像がテレビ2に表示される。ステップS6の次にステップS7の処理が実行される。
【0237】
ステップS7において、CPU10は、ステップS5で生成された第2ゲーム画像をハンドヘルドデバイス9へ出力する。具体的には、VRAM11dに記憶された第2ゲーム画像の画像データは、CPU10によって画像圧縮部27に送られ、画像圧縮部27によって所定の圧縮処理が行われた後、高速無線通信モジュール28によってアンテナ29を介してハンドヘルドデバイス9へ送信される。ハンドヘルドデバイス9は、ゲーム装置3から送信されてくる画像データを無線通信モジュール86によって受信し、画像伸張部を用いて所定の伸張処理を行う。伸張処理が行われた画像データは、CPU811によってVRAM813に適宜記憶されて下側LCD62に出力される。これによって、第2ゲーム画像が下側LCD62に表示される。ステップS7の次にステップS8の処理が実行される。
【0238】
ステップS8において、CPU10は、ゲームを終了するか否かを判定する。ステップS7の判定は、例えば、ゲームセットになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップS8の判定結果が否定の場合、ステップS2の処理が再度実行される。一方、ステップS8の判定結果が肯定の場合、CPU10は
図16に示すゲーム処理を終了する。以降、ステップS2〜S8の一連の処理は、ステップS8でゲームを終了すると判定されるまで繰り返し実行される。
【0239】
以上のように、投球シーン(投球モード)においては、テレビ2には、打者側から見たゲーム空間の画像(第1ゲーム画像)が表示され、ハンドヘルドデバイス9(下側LCD62)には、投手側から見たゲーム空間の画像(第2ゲーム画像)が表示される。したがって、投球シーンにおいては、第2プレイヤは、ハンドヘルドデバイス9の下側LCD62に表示される第2ゲーム画像を見ながら、ハンドヘルドデバイス9を傾ける(姿勢を変化させる)操作を行うことで投球方向を決めて投球を行う。一方、第1プレイヤは、テレビ2に表示される第1ゲーム画像を見ながら、操作装置7を振る操作を行うことでバット103を振る。そして、バット103にボール104が当たった場合には守備シーン(守備モード)に移行する。
【0240】
(守備モードにおける処理)
次に、守備モードにおけるゲーム処理について説明する。
図19は、守備モードにおけるゲーム制御処理の詳細な流れを示すフローチャートである。守備モードにおいては、まずステップS30において、CPU10は、操作装置7およびハンドヘルドデバイス9から各操作データを取得する。ステップS30の処理は上記ステップS12の処理と同じである。ステップS30の次にステップS31の処理が実行される。
【0241】
ステップS31において、CPU10はボール104の動作を制御する。すなわち、CPU10はボール104の挙動(ボール104が移動方向および速さ)を計算し、挙動に基づいてボール104を移動させる。ボール104の挙動は、バット103およびボール104の動作に基づいて計算される。ボール104の挙動の具体的な計算方法はどのような方法であってもよく、例えば、バット103とボール104とが当たった角度や強さ(バット103およびボール104の速さ)に基づいて計算される。また、ボール104が地面やフェンスに当たった場合には、当たった後の挙動が計算される。なお、CPU10は、ステップS31の処理の度に1フレーム分ずつ挙動を計算してもよいし、複数フレーム分の挙動をまとめて計算してもよい。また、CPU10は、計算された挙動に従ってボール104を移動させる。すなわち、計算された挙動から1フレーム時間分の移動量および移動方向を算出し、当該移動量および移動方向だけボール104の位置を変更する。変更後のボール104の位置を表すデータは新たなボールデータ126としてメインメモリに記憶される。ステップS31の次にステップS32の処理が実行される。
【0242】
ステップS32において、CPU10は第1仮想カメラを制御する。守備モードにおいては、本実施形態においては、ボール104がその視野範囲に含まれるように第1仮想カメラの位置および姿勢が算出される。すなわち、CPU10は、ボールデータ126をメインメモリから読み出し、ボール104の位置に基づいて第1仮想カメラの位置および姿勢を算出する。算出された位置および姿勢を表すデータは、新たな第1カメラデータ124としてメインメモリに記憶される。ステップS32の次にステップS33の処理が実行される。
【0243】
ステップS33において、CPU10は野手の動作を制御する。本実施形態においては、野手の動作は、ボール104の挙動(あるいは位置)に基づいて制御される。なお、野手の動作を制御するための詳細なアルゴリズムはどのようなものであってもよく、例えばボール104を追いかける(ボール104の方へ移動する)ように野手の動作が制御されてもよい。また、CPU10は、ゲーム空間内の野手のうちでボールを捕球すべき野手(「捕球野手」と呼ぶ)を特定し、当該捕球野手を表すデータをメインメモリに記憶しておく。例えばボール104に最も近い野手が捕球野手として特定される。詳細は後述するが、守備モードにおいては、捕球野手の位置に基づいて第2仮想カメラの位置が決定される。なお、他の実施形態においては、各野手(あるいは捕球野手)の動作は、第2プレイヤによって(第2操作データ116に基づいて)制御されてもよい。例えば、CPU10は、十字ボタン64Aまたはアナログスティック65に対する操作に従って野手の位置を制御してもよい。ステップS33の次にステップS34の処理が実行される。
【0244】
ステップS34において、CPU10は、ハンドヘルドデバイス9の姿勢を算出する。ステップS34の処理は上記ステップS13の処理と同じである。ステップS34の次にステップS35の処理が実行される。
【0245】
ステップS35において、CPU10は第2カメラ制御処理を実行する。第2カメラ制御処理は、ハンドヘルドデバイス9の姿勢に基づいて守備モードにおける第2カメラの姿勢を算出する処理である。以下、
図20および
図21を参照して、第2カメラ制御処理の詳細を説明する。
【0246】
図20は、
図19のステップS35(第2カメラ制御処理)の処理の詳細な流れを示すフローチャートである。第2カメラ制御処理においては、まずステップS41において、CPU10は第2仮想カメラの位置を算出する。第2仮想カメラの位置は上記捕球野手の位置に基づいて決定される。具体的には、第2仮想カメラの位置は、捕球野手よりもやや後方(ホームベースから遠ざかる方向)の位置に決定される。なお、他の実施形態においては、捕球野手の位置を第2仮想カメラの位置としてもよい。ステップS41の次にステップS42の処理が実行される。
【0247】
ステップS42において、CPU10は、ハンドヘルドデバイス9の基準姿勢と第2仮想カメラの基準姿勢とが対応するように、ハンドヘルドデバイス9に基づいて第2仮想カメラの姿勢を算出する。ステップS42の処理は、上記ステップS14の処理と同じである。したがって、算出された姿勢を表すデータは第2カメラデータ125としてメインメモリに記憶される。ステップS42の次にステップS43の処理が実行される。
【0248】
図21は、仮想のゲーム空間を上から見た図である。
図21においては、位置PPが捕球野手の位置であり、ベクトルV1は、捕球野手からホームベースへの方向を示すベクトルである。また、ベクトルV2は、第2仮想カメラが基準姿勢となる場合における第2仮想カメラの視線方向(基準方向と呼ぶ)を示すベクトルである。すなわち、ベクトルV2は、2塁ベースPBの位置からホームベースの位置PHへの方向を向くベクトルである。なお、ベクトルV1およびV2は、ゲーム空間における水平方向と平行である。
【0249】
上記ステップS42の処理においては、ハンドヘルドデバイス9が基準姿勢である場合には、第2仮想カメラの視線方向は上記基準方向(ベクトルV2)となるように算出される。ここで、上記投球シーンにおいては、第2仮想カメラの位置が投手の位置であったので、ハンドヘルドデバイス9が基準姿勢である場合には第2仮想カメラの視線方向が基準方向(ベクトルV2)となり、ホームベースの方向を向くので、問題はなかった。つまり、上記投球シーンにおいては、上記ステップS42の方法で第2仮想カメラの姿勢を算出することで問題はなかった。
【0250】
一方、守備シーンにおいては、第2仮想カメラの位置は捕球野手の位置PPである。そのため、ハンドヘルドデバイス9が基準姿勢である場合に第2仮想カメラの視線方向がベクトルV2の方向となると、第2仮想カメラはホームベースの方を向かないことになる。ハンドヘルドデバイス9を基準姿勢にしても第2仮想カメラはホームベースの方向を向かないので、単にステップS42の処理のみによって第2仮想カメラの姿勢を算出すると、第2プレイヤは第2カメラの操作に違和感を抱き、操作しにくいと感じるおそれがある。特に投球シーンから守備シーンへとゲーム画像が切り替わる際には、投球シーンにおいてホームベースの方を向いていたゲーム画像が、守備シーンに切り替わった途端にホームベースでない方向を向いたゲーム画像へと切り替わるので、第2プレイヤがボール104を見失ってしまうおそれがある。
【0251】
そこで、本実施形態においては、守備シーンにおいては、上記ステップS42の処理で算出される姿勢に対して以下のステップS43〜S45の処理によって補正を行い、第2仮想カメラの視線方向が適切となるように補正する。以下、ステップS43〜S45の処理の詳細を説明する。
【0252】
ステップS43において、CPU10は、捕球野手にとっての正面方向を算出する。ここで、捕球野手にとっての正面方向とは、捕球野手の位置PPからホームベースPHへの方向(
図21に示すベクトルV1)である。CPU10は、捕球野手の位置とホームベースの位置とに基づいて上記ベクトルV1を算出する。算出されたベクトルV1を表すデータは正面方向データ131としてメインメモリに記憶される。ステップS43の次にステップS44の処理が実行される。
【0253】
ステップS44において、CPU10は、正面方向と基準方向とのなす角(
図21に示す角θ1)を算出する。すなわち、CPU10は、ベクトルV1を表すデータをメインメモリから読み出し、当該ベクトルV1と、予め定められる基準方向(ベクトルV2)とのなす角θ1を算出する。ここで、角θ1は、ベクトルV2から見たベクトルV1の角度、換言すれば、ベクトルV2をベクトルV1の向きへ回転させる時の回転角度である。以上のようにして算出された角θ1を表すデータはメインメモリに記憶される。ステップS44の次にステップS45の処理が実行される。
【0254】
ステップS45において、CPU10は、ステップS42で算出された第2仮想カメラの姿勢を上記角θ1だけ回転する補正を行う。具体的には、CPU10は、角θ1を表すデータと第2カメラデータ125とをメインメモリから読み出し、第2仮想カメラの姿勢を角θ1だけ回転させた姿勢を算出する。そして、算出された姿勢と、ステップS41で算出された位置とを表すデータを新たな第2カメラデータ125としてメインメモリに記憶する。これによって、ステップS42で算出された第2仮想カメラの姿勢が補正されたことになる。ステップS45の後、CPU10は第2カメラ制御処理を終了する。
【0255】
上記第2カメラ制御処理によれば、守備シーンにおいて、ハンドヘルドデバイス9が基準姿勢となる場合には第2仮想カメラは(その位置に関係なく)ホームベースの方を向くように制御される。これによって、第2プレイヤにとってより見やすいゲーム画像を表示することができる。
【0256】
図19の説明に戻り、第2カメラ制御処理(ステップS35)の次にステップS36の処理が実行される。ステップS36において、CPU10は、捕球判定処理を行うか否かを判定する。捕球判定処理とは、捕球野手によるボール104の捕球が成功したか否かを判定する処理(ステップS37)である。ステップS36の判定処理は、捕球野手とボール104との位置関係に基づいて行われる。具体的には、CPU10は、捕球野手とボール104との距離が予め定められた所定距離よりも小さくなったか否かを判定する。そして、当該距離が所定距離よりも小さくなった場合、捕球判定処理を行うと判定し、当該距離が所定距離以上である場合、捕球判定処理を行わないと判定する。ステップS36の判定結果が肯定である場合、ステップS37の処理が実行される。一方、ステップS36の判定結果が否定である場合、CPU10はゲーム制御処理を終了する。
【0257】
ステップS37において、CPU10は、捕球野手による捕球が成功したか否かを判定する。
図14の説明において述べたように、捕球野手がボール104の捕球に成功するか否かは、第2ゲーム画像においてボール104が枠画像107の内側に入っているか否かによって判断される。したがって、ステップS37の判定は、ゲーム画像内においてボール104を含む所定範囲に第2仮想カメラ140の視線方向が含まれるか否かによって行うことができる。
図22は、ゲーム空間における第2仮想カメラとボール104とを示す図である。ステップS37においては、CPU10は、視線方向を表すベクトルV3と、第2仮想カメラ140からボール104を結ぶベクトルV4とのなす角度θ2が所定角度以下か否かを判定すればよい。換言すれば、ベクトルV4が、視線方向を中心とする所定角度内の範囲146の方向を向くか否かを判定すればよい。ステップS37において、CPU10は、第2カメラデータ125およびボールデータ126をメインメモリから読み出し、第2仮想カメラの位置および姿勢とボール104の位置とに基づいて上記の判定を行う。ステップS37の判定結果が肯定である場合、ステップS38の処理が実行される。一方、ステップS37の判定結果が否定である場合、ステップS39の処理が実行される。
【0258】
ステップS38において、CPU10はアウトと判断する。すなわち、CPU10は、判断結果を表すデータをメインメモリに記憶する。なお、後で実行されるゲーム画像の生成処理(ステップS3およびS4)においては、このデータが参照される。ステップS38の後、CPU10はゲーム制御処理を終了する。なお、上記判定はフライの捕球時のものであって、ゴロ等の捕球時には必ずしもアウト判定とはならない。
【0259】
一方、ステップS39において、CPU10はヒットと判断する。ステップS38と同様、CPU10は、判断結果を表すデータをメインメモリに記憶する。ステップS39の後、CPU10はゲーム制御処理を終了する。
【0260】
なお、上記ステップS38またはS39の処理が実行された場合、ゲーム画像の生成処理(ステップS3およびS4)においては、アウトまたはヒットの判断結果を表す画像が所定時間(数秒程度)の間表示される。したがって、上記所定時間の間、ゲーム制御処理においてCPU10はステップS11〜S21の一連の処理を実行しなくてもよい。また、
図19に示すフローチャートには示していないが、上記判断結果を表す画像が消去されると(上記所定時間が経過すると)、CPU10は、ゲーム制御処理における処理モードを投球モードに変更する。具体的には、CPU10は、メインメモリに記憶されているモードデータ128を、投球モードを表すデータへと変更(更新)する。これによって、次の処理ループで実行されるゲーム制御処理においては、投球モードにおける処理が実行されることになる。
【0261】
以上のように、上記守備シーンにおけるゲーム制御処理においては、操作装置7の動きに応じて決められるボール104の挙動が第1操作データに基づいて計算され、当該挙動に基づいてボール104が移動する(ステップS31)。第2仮想カメラは、ハンドヘルドデバイス9の動きに応じて動かされる。そして、第2仮想カメラがボール104を含む所定範囲を向いているか否かが判定され(ステップS37)、判定結果に応じたゲーム処理が行われる(ステップS38,S39)。画像を生成する。これによって、後述するステップS4〜S7によって、判定結果に応じたゲーム画像を生成される。したがって、上記ゲーム制御処理によって、第1プレイヤが操作装置を動かすことで挙動が決められるボール104を、第2プレイヤがハンドヘルドデバイス9を動かすことで第2仮想カメラをボール104の方へ向ける(ボール104をキャッチする)、という野球ゲームを実現することができる。また、ボール104に対して適切な方向にハンドヘルドデバイス9(第2仮想カメラ)を向けることでボール104を捕球するという、新規なゲーム操作を提供することができる。
【0262】
なお、本実施形態においては、守備モードにおいては第1プレイヤはゲーム操作を行わないものとして説明したが、他の実施形態においては第1プレイヤが何らかのゲーム操作を行うことができるようにしてもよい。例えば、守備モードにおいては、第1プレイヤが打者および走者の走塁を操作することができるようにしてもよい。
【0263】
守備モードにおいても投球前モードおよび投球後モードと同様、ゲーム制御処理(ステップS2)の次にステップS3〜S8の処理が実行される。すなわち、ステップS3において、CPU10は、オブジェクトの表示設定処理を実行する。守備モードにおけるステップS3においては、表示しないオブジェクトがないことを表すデータが第1表示設定データ129としてメインメモリに記憶されるとともに、捕球野手を表すデータが第2表示設定データ130としてメインメモリに記憶される。
【0264】
また、ステップS4においては第1ゲーム画像が生成される。上記ステップS32の処理によって、守備モードにおいては、打者101が打ったボール104を含むゲーム空間の画像が第1ゲーム画像として生成される(
図13参照)。なお、守備モードにおいては、第1表示設定データ129は、表示しないオブジェクトがないことを表すので、守備モードにおけるステップS3においては、描画されないオブジェクトは無い。
【0265】
また、守備モードにおいては、上記ステップS38またはS39のいずれかの処理が実行された場合には、CPU10は、当該いずれかの処理における判断結果を表す画像を表示する。すなわち、上記の場合、CPU10は、判断結果を表すデータをメインメモリから読み出し、判断結果を示す画像(例えば「ヒット」または「アウト」の文字)をゲーム空間の画像に重ねた第1ゲーム画像を生成する。この場合、判断結果を表す画像は所定時間(数秒程度)の間表示される。
【0266】
ステップS5においては第2ゲーム画像が生成される。守備モードにおいては、第2ゲーム画像は、捕球野手から見たゲーム空間の画像となる(
図14参照)。なお、ステップS5においては、CPU10は、第2表示設定データ130を参照し、捕球野手オブジェクト106を描画しないように第2ゲーム画像を生成する。また、守備モードにおけるステップS5においては上記ステップS4と同様、上記ステップS38またはS39のいずれかの処理が実行された場合には、CPU10は、当該いずれかの処理における判断結果を表す画像を表示する。
【0267】
ステップS6においては第1ゲーム画像がテレビ2へ出力されて表示される。また、ステップS7においては第2ゲーム画像がハンドヘルドデバイス9へ出力されて下側LCD62に表示される。これによって、ゲーム空間を互いに異なる視点および視線から見た2つのゲーム画像が2つの異なる表示装置に表示される。なお、守備モードにおけるステップS8の処理は投球モードと同じである。以上で、本実施形態におけるゲーム処理の説明を終了する。
【0268】
本実施形態におけるゲーム処理によれば、投球シーンにおいては、打者側からゲーム空間を見た第1ゲーム画像がテレビ2に表示されるとともに、投手側からゲーム空間を見た第2ゲーム画像がハンドヘルドデバイス9(の下側LCD62)に表示される。また、守備シーンにおいては、打者が打ったボールを含む第1ゲーム画像がテレビ2に表示されるとともに、捕球野手からゲーム空間を見た第2ゲーム画像がハンドヘルドデバイス9に表示される。したがって、いずれのシーンにおいても、第1プレイヤにとって見やすい第1ゲーム画像と、第2プレイヤにとって見やすい第2ゲーム画像とを表示することができる。このように、本実施形態によれば、単一のゲーム空間に複数の仮想カメラを設定し、各仮想カメラに基づいて生成されるゲーム画像を別個の表示装置に表示することによって、各プレイヤにとって見やすいゲーム画像を提供することができる。
【0269】
また、上記実施形態においては、CPU10は、第1操作データに基づいて操作装置7を振る操作を検出する(ステップS16)とともに、第2操作データに基づいてハンドヘルドデバイス9を傾ける操作を検出した(ステップS13)。そして、当該振る操作および当該傾ける操作に応じたゲーム制御処理が実行された(ステップS14,S15,S17)。このように、本実施形態においては、第1プレイヤは操作装置を振る操作によってゲームを行い、第2プレイヤはハンドヘルドデバイスを傾ける操作によってゲームを行うことができる。
【0270】
ここで、本実施形態においては、操作装置7にはゲーム画像を表示する表示手段を有していないので、第1プレイヤは操作装置7とは別体のテレビ2を見ながらゲームを行うため、操作装置7自身を振る操作を容易に行うことができる。一方、ハンドヘルドデバイス9の画面には第2ゲーム画像が表示されるので、第2プレイヤはハンドヘルドデバイス9を見ながらゲームを行うため、ハンドヘルドデバイス9を振って操作するような操作は行いづらい。そこで、本実施形態では、操作装置7とハンドヘルドデバイス9とで操作方法を異ならせることによって、装置自体を動かすという直感的な操作で、かつ、各装置の特徴に合った操作しやすいゲーム操作を提供するようにしている。
【0271】
[8.他の実施形態]
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【0272】
(ゲーム操作に関する例)
上記実施形態においては、CPU10は、ハンドヘルドデバイス9の動き(具体的には姿勢)に応じたゲーム制御処理を実行した。すなわち、ハンドヘルドデバイス9は、自身の動きに応じて値が変化するデータを出力するセンサ(加速度センサ89およびジャイロセンサ90)を有し、当該センサの出力データを含む第2操作データを出力した。そして、CPU10は、第2操作データに含まれる上記出力データに基づいて、ハンドヘルドデバイス9の姿勢に応じたゲーム制御処理(S14,S15,S34,S35)を実行した。ここで、他の実施形態においては、ハンドヘルドデバイス9に対する操作は、ハンドヘルドデバイス9自体を動かす操作に限らず、どのような操作であってもよい。例えば、CPU10は、ハンドヘルドデバイス9の動きに代えて、ハンドヘルドデバイス9の各操作ボタン64、タッチパネル63、またはアナログスティック65に対する操作に応じたゲーム制御処理を実行してもよい。
【0273】
また、ハンドヘルドデバイス9の動きに応じたゲーム制御処理を実行する場合には、CPU10は、ハンドヘルドデバイス9の姿勢以外の他の値に応じたゲーム制御処理を実行してもよい。例えば、ハンドヘルドデバイス9の位置の変化に応じたゲーム制御処理が実行されてもよい。具体的には、CPU10は、加速度データ117が表す加速度から重力加速度を除いた加速度に基づいて、ハンドヘルドデバイス9の位置の変化を算出することができる。したがって、例えば上記ステップS14の処理においては、CPU10は、ハンドヘルドデバイス9の位置の変化に応じて第2仮想カメラの姿勢を変化させてもよい。これによれば、ハンドヘルドデバイス9を上下左右に移動させることによって第2仮想カメラの姿勢を変化させることができる。
【0274】
(第2操作データに基づくゲーム制御処理に関する変形例)
上記実施形態においては、ハンドヘルドデバイス9からの第2操作データに基づくゲーム制御処理として、ハンドヘルドデバイス9の動きに応じて第2仮想カメラを動かす処理を実行する場合を例として説明した。ここで、他の実施形態においては、第2操作データに基づくゲーム制御処理は、仮想カメラを制御する処理に限らず、どのような処理であってもよい。例えば、他の実施形態においては、CPU10は、第2操作データに基づいて上記投球方向を制御する(第2仮想カメラは固定しておく)処理を実行してもよい。
【0275】
(ゲーム内容に関する変形例)
上記実施形態においては、複数人でプレイするゲームの例として野球ゲームを実行するためのゲーム処理について説明したが、ゲームの内容はどのようなものであってもよい。例えば、次のようなゲーム(いわゆる、モグラ叩きゲーム)についても本発明を適用することが可能である。
【0276】
図23は、他のゲーム例においてテレビ2に表示される第1ゲーム画像の一例を示す図である。また、
図24は、
図23に示すゲーム例においてハンドヘルドデバイス9に表示される第2ゲーム画像の一例を示す図である。
図23に示すように、テレビ2には、第1ゲーム画像として、地面(地面オブジェクト)151、カーソル152、およびハンマー(ハンマーオブジェクト)153が表示される。
図23に示す第1ゲーム画像は、地面151を表側から見た画像である。つまり、第1仮想カメラは、地面151の表側に配置される。
【0277】
本変形例におけるゲーム(モグラ叩きゲーム)においては、第1プレイヤはカーソル152を操作することでハンマー153を操作し、地面151の穴から出てくるモグラ(第2プレイヤによって操作される)を叩く。なお、詳細は後述するが、画面上におけるカーソル152の位置は、操作装置7が指し示す(より具体的には操作装置7の撮像方向(Z軸)が指し示す)位置となるように、マーカ座標データ114に基づいて算出される。ハンマー153は、所定の叩き操作(例えば、Aボタン32dを押下する操作)が行われたことに応じて、カーソル152が指し示す位置を叩くように動作が制御される。つまり、第1プレイヤは、操作装置7によってカーソル152を動かし、モグラが出てくる穴にカーソル152を合わせて叩き操作を行うことで、モグラを叩いて遊ぶ。
【0278】
また、
図24に示すように、ハンドヘルドデバイス9には、地面オブジェクト151およびモグラオブジェクト154が表示される。
図24に示す第2ゲーム画像は、地面151を裏側から見た画像である。つまり、第2仮想カメラは、地面151の裏側に配置される。第2プレイヤは、モグラ154を操作し、地面151の穴からモグラ154を出す。モグラ154に対する操作方法はどのようなものでもよいが、本変形例では、ハンドヘルドデバイス9の十字ボタン64Aで上下左右に動かし、ボタン64Bで穴から顔を出すようにモグラ154は操作される。
【0279】
図23および
図24に示すモグラ叩きゲームにおいても、上記実施形態と同様、単一のゲーム空間に2つの仮想カメラが設定され、ゲーム空間を各仮想カメラから見た2種類のゲーム画像がそれぞれ表示される。すなわち、テレビ2には、地面151を表側から見た、第1プレイヤのための第1ゲーム画像が表示されるとともに、ハンドヘルドデバイス9には、地面151を裏側から見た、第2プレイヤのための第2ゲーム画像が表示される。したがって、本変形例においても上記実施形態と同様、それぞれのプレイヤにとって見やすい(操作しやすい)ゲーム画像を表示することができる。
【0280】
なお、本変形例において、カーソル152の位置(指示位置)は次のように算出される。まず、CPU10は、第1操作データ111に含まれるマーカ座標データ114から2つのマーカ座標の中点を算出する。次に、CPU10は、上記2つのマーカ座標を結ぶベクトルがマーカ座標系の左右方向を表す軸と平行になるように、撮像画像の中心を軸としてマーカ座標の中点を回転する補正を行う。この補正によって、操作装置7のZ軸回りに関して基準姿勢から傾いている場合においても正確に指示位置を算出することができる。次に、CPU10は、上記補正後の中点の位置を示す座標を、テレビ2の画面上の位置を表す座標に変換する。なお、操作装置7の指示位置と、撮像画像内での上記中点の位置とでは逆方向に移動することになるので、上記の変換においては上下左右が反転するような変換が行われる。上記の変換によって得られる画面上の位置が上記指示位置となる。以上のように、マーカ座標データ114を用いる方法によれば、指示位置を正確に算出することができる。
【0281】
以上に示した野球ゲームやモグラ叩きゲームの他、単一のゲーム空間を異なる視点から見た2種類のゲーム画像を生成して表示するゲームについて、本発明を適用することができる。例えば、サッカーのPK戦のゲームや、テニスゲームについても本発明を適用することができる。サッカーのPK戦のゲームの場合、一方のプレイヤがキッカーを操作し、他方のプレイヤがキーパーを操作するものとし、ゲーム装置3は、キッカーからキーパーの方を見たゲーム画像を一方の表示装置に表示させるとともに、キーパーからキッカーの方を見たゲーム画像を他方の表示装置に表示させる。なお、ゲーム装置3は、上記実施形態における投球方向の操作と同様に、キッカーがボールをキックする方向をハンドヘルドデバイス9の姿勢に応じて制御したり、あるいは、キーパーがボールをキャッチする位置をハンドヘルドデバイス9の姿勢に応じて制御したりしてもよい。また、テニスゲームの場合、ゲーム装置3は、一方のプレイヤのコートから他方のプレイヤのコートを見た画像を一方の表示装置に表示させるとともに、他方のプレイヤのコートから一方のプレイヤのコートを見た画像を他方の表示装置に表示させる。なお、ゲーム装置3は、上記実施形態における投球方向の操作と同様に、ボールを打つ方向をハンドヘルドデバイス9の姿勢に応じて制御してもよい。
【0282】
(ゲーム処理を実行する装置に関する変形例)
上記実施形態においては、ゲーム装置3が
図16に示す一連のゲーム処理を実行したが、ゲーム処理の一部は他の装置によって実行されてもよい。例えば、他の実施形態においては、ゲーム処理の一部(例えば、第2ゲーム画像の生成処理)をハンドヘルドデバイス9が実行するようにしてもよい。また、他の実施形態では、互いに通信可能な複数の情報処理装置を有するゲームシステムにおいて、当該複数の情報処理装置がゲーム処理を分担して実行するようにしてもよい。すなわち、ゲーム装置と、操作装置と、ハンドヘルドデバイスとを含むゲームシステムは、(a)前記操作装置を操作する第1プレイヤの操作を表す第1操作データと、前記ハンドヘルドデバイスを操作する第2プレイヤの操作を表す第2操作データとを取得する操作データ取得部と、(b)前記第1操作データと前記第2操作データとに基づいてゲーム制御処理を実行するゲーム処理部と、(c)前記ゲーム制御処理の結果を表す仮想のゲーム空間の画像であって前記第1プレイヤのための第1ゲーム画像を、当該ゲーム空間に設定される第1仮想カメラに基づいて生成する第1画像生成部と、(d)前記ゲーム空間の画像であって前記第2プレイヤのための第2ゲーム画像を、当該ゲーム空間に設定される第2仮想カメラに基づいて生成する第2画像生成部と、(e)前記ハンドヘルドデバイスとは別体の第1表示装置に前記第1ゲーム画像を表示させる第1画像表示制御部と、(f)前記ハンドヘルドデバイスに設けられる第2表示装置に前記第2ゲーム画像を表示させる第2画像表示制御部とを備えていてもよい。このとき、1つの装置が上記(a)〜(f)の各部を備える構成であってもよいし、複数の装置が上記(a)〜(f)の各部を備える構成であってもよい。
【0283】
(ハンドヘルドデバイスの構成に関する変形例)
上記実施形態におけるハンドヘルドデバイス9は一例であり、ハンドヘルドデバイス9の各操作ボタンやハウジング50の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。例えば、ハンドヘルドデバイスとして以下に示す端末装置が用いられてもよい。以下、
図25〜
図31を参照して、ハンドヘルドデバイスの変形例について説明する。
【0284】
まず、
図25〜
図30を参照して、上記実施形態の変形例における端末装置の外観構成について説明する。
図25は、端末装置200の外観構成を示す平面図である。
図25における(a)図は端末装置200の正面図であり、(b)図は上面図であり、(c)図は右側面図であり、(d)図は下面図である。
図26は端末装置200の背面図である。また、
図27および
図28は、ユーザが端末装置200を横向きで把持した様子を示す図である。
図29および
図30は、ユーザが端末装置200を縦向きで把持した様子を示す図である。
【0285】
図25に示されるように、端末装置200は、大略的には横長の長方形の板状形状であるハウジング210を備える。すなわち、端末装置200は、タブレット型の情報処理装置であるということもできる。なお、ハウジング210は全体として板状形状であれば、曲面を有していてもよいし、一部に突起等を有していてもよい。ハウジング210は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置200を持って動かしたり、端末装置200の配置位置を変更したりすることができる。端末装置200の縦(z軸方向)の長さは、100〜150[mm]が好ましく、本実施形態では、133.5[mm]である。端末装置200の横(x軸方向)の長さは、200〜250[mm]が好ましく、本実施形態では、228.26[mm]である。端末装置200の厚さ(y軸方向の長さ)は、板状の部分で15〜30[mm]程度、最厚部まで含めて30〜50[mm]程度が好ましく、本実施形態では、23.6(最厚部は40.26)[mm]である。また、端末装置200の重量は、400〜600[g]程度であって、本実施形態においては、530[g]である。詳細は後述するが、端末装置200は、上記のような比較的大型の端末装置(操作装置)であっても、ユーザが持ちやすく操作しやすい構成となっている。
【0286】
端末装置200は、ハウジング210の表面(表側)にLCD211を有する。なお、LCD211の画面の大きさは5インチ以上であることが好ましく、ここでは6.2インチである。本実施形態の端末装置7は、持ちやすく操作しやすい構成によって、大きなLCDを設けても操作がしやすいものとなっている。なお、別の実施形態においては、より小さいLCD211を設け、端末装置7の大きさを比較的小さいものとするようにしてもよい。LCD211は、ハウジング210の表面の中央付近に設けられる。したがって、ユーザは、
図27および
図28に示すようにLCD211の両側部分のハウジング210を持つことによって、LCD211の画面を見ながら端末装置200を持って動かすことができる。なお、
図27および
図28ではユーザがLCD211の左右両側の部分のハウジング210を持つことで端末装置200を横持ちで(横に長い向きにして)持つ例を示しているが、
図29および
図30に示すように、端末装置200を縦持ちで(縦に長い向きにして)持つことも可能である。
【0287】
図25の(a)図に示すように、端末装置200は、操作手段として、LCD211の画面上にタッチパネル212を有する。本実施形態では、タッチパネル212は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル212はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル212として、LCD211の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル212の解像度とLCD211の解像度が一致している必要はない。タッチパネル212に対する入力は通常タッチペン220を用いて行われるが、タッチペン220に限らずユーザの指でタッチパネル212に対する入力をすることも可能である。なお、ハウジング210には、タッチパネル212に対する操作を行うために用いられるタッチペン220を収納する収納穴220aが設けられている(
図25(b)参照)。なお、ここでは、タッチペン220が落ちないように、収納穴220aはハウジング210の上面に設けられるが、側面や下面に設けられてもよい。このように、端末装置200はタッチパネル212を備えるので、ユーザは、端末装置200を動かしながらタッチパネル212を操作することができる。つまりユーザは、LCD211の画面を動かしつつ、その画面に対して直接(タッチパネル212によって)入力を行うことができる。
【0288】
図25に示すように、端末装置200は、操作手段(操作部)として、2つのアナログスティック213Aおよび213Bと、複数のボタン(キー)214A〜214Mとを備えている。各アナログスティック213Aおよび213Bは、方向を指示することが可能なデバイスである。各アナログスティック213Aおよび213Bは、ユーザの指で操作される可動部材(スティック部)がハウジング210の表面に対して任意の方向(上下左右および斜め方向の任意の角度)にスライドすることができるように構成されている。すなわち、スライドパッドと呼ばれることもある方向入力デバイスである。なお、各アナログスティック213Aおよび213Bの可動部材は、ハウジング210の表面に対して任意の方向に傾倒する種類のものでもよい。本実施形態では、可動部材がスライドする種類のアナログスティックを用いるので、ユーザは親指を大きく動かさなくても各アナログスティック213Aおよび213Bを操作することができ、ハウジング210をよりしっかりと把持した状態で操作を行うことができる。なお、各アナログスティック213Aおよび213Bとして、可動部材が傾倒する種類のものを用いる場合には、入力の程度(傾きの程度)がユーザにとってわかりやすく、詳細な操作をより容易に行うことができる。
【0289】
また、左アナログスティック213AはLCD211の画面の左側に、右アナログスティック213BはLCD211の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、
図27および
図28に示すように、各アナログスティック213Aおよび213Bは、ユーザが端末装置200の左右部分(LCD211の左右両側の部分)を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置200を持って動かす場合においても各アナログスティック213Aおよび213Bを容易に操作することができる。
【0290】
各ボタン214A〜214Lは、所定の入力を行うための操作手段(操作部)であり、押下可能なキーである。以下に示すように、各ボタン214A〜214Lは、ユーザが端末装置200の左右部分を把持した状態で操作可能な位置に設けられる(
図27および
図28参照)。したがって、ユーザは、端末装置200を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【0291】
図25の(a)図に示すように、ハウジング210の表面には、各操作ボタン214A〜214Lのうち、十字ボタン(方向入力ボタン)214Aと、ボタン214B〜214Hおよび214Mとが設けられる。つまり、これらのボタン214A〜214Hおよび214Mは、ユーザの親指で操作可能な位置に配置されている(
図27および
図28参照)。
【0292】
十字ボタン214Aは、LCD211の左側であって、左アナログスティック213Aの下側に設けられる。つまり、十字ボタン214Aはユーザの左手で操作可能な位置に配置されている。十字ボタン214Aは、十字の形状を有しており、少なくとも上下左右の方向を指示することが可能なボタンである。
【0293】
また、ボタン214B〜214Dは、LCD211の下側に設けられる。これら3つのボタン214B〜214Dは、左右両方の手で操作可能な位置に配置されている。また、端末装置200は、端末装置200の電源をオン/オフするための電源ボタン214Mを有している。電源ボタン214Mの操作により、ゲーム装置3の電源を遠隔でオン/オフすることも可能である。電源ボタン214Mは、ボタン214B〜214Dと同様、LCD211の下側に設けられる。電源ボタン214Mは、ボタン214B〜214Dの右側に設けられる。したがって、電源ボタン214Mは、右手で操作可能な(操作しやすい)位置に配置されている。また、4つのボタン214E〜214Hは、LCD211の右側であって、右アナログスティック213Bの下側に設けられる。つまり、4つのボタン214E〜214Hはユーザの右手で操作可能な位置に配置されている。さらに、4つのボタン214E〜214Hは、(4つのボタン214E〜214Hの中心位置に対して)上下左右の位置関係となるように配置されている。したがって、端末装置200は、ユーザに上下左右の方向を指示させるためのボタンとして4つのボタン214E〜214Hを機能させることも可能である。
【0294】
なお、本実施形態においては、各アナログスティック213Aおよび213Bは、十字ボタン214Aおよび各ボタン214E〜214Hよりも上側に配置される。ここで、各アナログスティック213Aおよび213Bは、十字ボタン214Aおよび各ボタン214E〜214Hよりも厚さ方向(y軸方向)に関して突出している。そのため、仮にアナログスティック213Aと十字ボタン214Aとの配置を逆にした場合には、ユーザが十字ボタン214Aを親指で操作する際にアナログスティック213Aに親指が当たってしまい、操作を誤ってしまうおそれがある。なお、アナログスティック213Bと各ボタン214E〜214Hとの配置を逆にする場合も同様の問題が生じる。これに対して、本実施形態では、各アナログスティック213Aおよび213Bを十字ボタン214Aおよび各ボタン214E〜214Hよりも上側に配置するので、ユーザがアナログスティック213Aおよび213Bを操作する際に十字ボタン214Aおよび各ボタン214E〜214Hに指が当たってしまう可能性は上記の場合に比べて低くなる。このように、本実施形態においては、誤操作の可能性を低減することができ、端末装置200の操作性を向上することができる。ただし、別の実施形態においては、必要に応じてアナログスティック213Aが十字ボタン214Aと逆の配置であってもよいし、アナログスティック213Bが各ボタン214E〜214Hと逆の配置であってもよい。
【0295】
ここで、本実施形態では、いくつかの操作部(各アナログスティック213Aおよび213B、十字ボタン214A、ならびに、3つのボタン214E〜214G)は、表示部(LCD211)の左右両側において、ハウジング210における上下方向(y軸方向)の中心よりも上側に設けられる。これらの操作部を操作する場合、ユーザは、端末装置200における上下方向の中心よりも上側を主に把持する。ここで、ユーザがハウジング210の下側を把持する場合には、(端末装置200が本実施形態のように比較的大きなサイズである場合には特に)把持される端末装置200が不安定になり、ユーザは端末装置200を持ちにくくなる。これに対して、本実施形態では、上記操作部を操作する場合、ユーザは、端末装置200における上下方向の中心よりも上側を主に把持することになり、また、手のひらでハウジング210を横から支えることができる。したがって、ユーザは、安定した状態でハウジング210を把持することができ、端末装置200が持ちやすくなるので、上記操作部も操作しやすくなる。なお、他の実施形態においては、ハウジング210の中央よりも上側において表示部の左右にそれぞれ少なくとも1つずつ操作部が設けられてもよい。例えば、各アナログスティック213Aおよび213Bのみがハウジング210の中央よりも上側に設けられてもよい。また例えば、十字ボタン214Aが左アナログスティック213Aよりも上側に設けられ、4つのボタン214E〜214Hが右アナログスティック213Bよりも上側に設けられる場合には、十字ボタン214Aおよび4つのボタン214E〜214Hがハウジング210の中央よりも上側に設けられても良い。
【0296】
また、本実施形態では、ハウジング210の裏側(LCD211が設けられる表面の反対側)には、突起部(庇部219)が設けられる(
図25(c)および
図26参照)。
図25(c)に示すように、庇部219は、略板状のハウジング210の裏面から突起して設けられる、山状の部材である。突起部は、ハウジング210の裏面を把持するユーザの指に掛止可能な高さ(厚さ)を有する。突起部の高さは、10〜25[mm]であることが好ましく、本実施形態では16.66[mm]である。また、突起部の下面は、突起部がユーザの指に掛かりやすいように、ハウジング210の裏面に対して45°以上(より好ましくは60°以上)の傾斜を有することが好ましい。
図25(c)に示すように、突起部の下面は、上面よりも傾斜角度が大きくなるように形成されてもよい。
図27および
図28に示すように、ユーザは、指を庇部219に掛けて(指の上に庇部219を乗せて)把持することによって、端末装置200が比較的大きなサイズであっても、疲れることなく安定した状態で端末装置200を把持することができる。すなわち、庇部219は、指でハウジング210を支えるための支持部材であるということができ、また、指掛部ということもできる。
【0297】
また、庇部219は、ハウジング210の上下方向に関しては中央よりも上側に設けられる。庇部219は、ハウジング210の表面に設けられる操作部(各アナログスティック213Aおよび213B)の概ね反対側の位置に設けられる。つまり、突起部は、表示部の左右にそれぞれ設けられる操作部の反対側の位置を含む領域に設けられる。したがって、上記操作部を操作する場合、ユーザは、中指あるいは薬指で庇部219を支えるようにして端末装置200を把持することができる(
図27および
図28参照)。これによって、端末装置200がより持ちやすくなり、上記操作部もより操作しやすくなる。また、本実施形態では、突起部は、(突起した部分が)左右に延びる庇状の形状を有するので、ユーザは、中指あるいは薬指を突起部の下面に沿わせて端末装置200を把持することができ、端末装置200がより持ちやすくなる。なお、庇部219は、(突起した部分が)左右方向に延びるように形成されればよく、
図26に示すような水平方向に延びる形状に限られない。他の実施形態においては、庇部219は水平方向から若干傾いた方向に延びていてもよい。例えば、庇部219は、左右両端から中央に向かうにつれて上に(または下に)傾斜するように設けられてもよい。
【0298】
なお、本実施形態においては、後述する係止穴を庇部219に設けることが理由で、ハウジングの裏面に形成される突起部として、庇状の形状をした庇部219を採用するが、突起部はどのような形状であってもよい。例えば、他の実施形態においては、ハウジング210の裏側において、2つの突起部が左右両側に設けられる(左右方向の中央には突起部が設けられない)構成であってもよい(
図29参照)。また、他の実施形態においては、突起部の断面形状(x軸方向に垂直な断面における形状)は、ユーザの指で端末装置200をよりしっかりと支えることができるように(突起部が指によりしっかりと掛かるように)、鈎型(下面が凹んだ形状)であってもよい。
【0299】
なお、突起部(庇部219)の上下方向に関する幅は、いくらであってもよい。例えば、突起部は、ハウジング210の上辺まで形成されてもよい。すなわち、突起部の上面がハウジング210の上側の側面と同じ位置に形成されてもよい。このとき、ハウジング210は、下側が薄く、上側が厚い2段の構成となる。このように、ハウジング210は、裏面における左右両側に、下方を向く面(突起部の下面)が形成されることが好ましい。これによって、ユーザは、当該面に指を当てることで楽に操作装置を把持することができる。なお、上記「下方を向く面」は、ハウジング210の裏面におけるどの位置に形成されてもよいが、ハウジング210の中央よりも上側に位置することが好ましい。
【0300】
また、
図25の(a)図、(b)図、および(c)図に示すように、第1Lボタン214Iおよび第1Rボタン214Jは、ハウジング210の上側の面における左右の両側にそれぞれ設けられる。本実施形態では、第1Lボタン214Iおよび第1Rボタン214Jは、ハウジング210の斜め上部分(左上部分および右上部分)に設けられる。具体的には、第1Lボタン214Iは、板状のハウジング210における上側の側面の左端に設けられ、左上側の側面から露出している(換言すれば上側および左側の両方の側面から露出している)。また、第1Rボタン214Jは、ハウジング210における上側の側面の右端に設けられ、右上側の側面から露出している(換言すれば上側および右側の両方の側面から露出している)。このように、第1Lボタン214Iは、ユーザの左手人差し指で操作可能な位置に配置され、第1Rボタン214Jは、ユーザの右手人差し指で操作可能な位置に配置される(
図27参照)。なお、他の実施形態においては、ハウジング210の上側の面における左右にそれぞれ設けられる操作部は、左右の端部に設けられる必要はなく、端部以外の位置に設けられてもよい。また、ハウジング210の左右の側面に操作部がそれぞれ設けられてもよい。
【0301】
また、
図25の(c)図および
図26に示すように、第2Lボタン214Kおよび第2Rボタン214Lは、上記突起部(庇部219)に配置される。第2Lボタン214Kは、庇部219の左端付近に設けられる。第2Rボタン214Lは、庇部219の右端付近に設けられる。つまり、第2Lボタン214Kは、ハウジング210の裏面の左側(表面側から見たときの左側)のやや上方に設けられ、第2Rボタン214Lは、ハウジング210の裏面の右側(表面側から見たときの右側)のやや上方に設けられる。換言すれば、第2Lボタン214Kは、表面に設けられる左アナログスティック213Aの(概ね)反対側の位置に設けられ、第2Rボタン214Lは、表面に設けられる右アナログスティック213Bの(概ね)反対側の位置に設けられる。このように、第2Lボタン214Kは、ユーザの左手中指または人差し指で操作可能な位置に配置され、第2Rボタン214Lは、ユーザの右手中指または人差し指で操作可能な位置に配置される(
図27および
図28参照)。また、第2Lボタン214Kおよび第2Rボタン214Lは、
図25の(c)図に示すように、上記庇部219の上面に設けられる。そのため、第2Lボタン214Kおよび第2Rボタン214Lは、上方(斜め上方)を向くボタン面を有する。ユーザが端末装置200を把持した場合には中指または人差し指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第2Lボタン214Kおよび第2Rボタン214Lを押下しやすくなる。
【0302】
上記のように、本実施形態においては、ハウジング210の中央よりも上側において表示部(LCD211)の左右に操作部(アナログスティック213Aおよび213B)がそれぞれ設けられ、さらに、ハウジング210の裏側において当該操作部の反対側の位置に別の操作部(第2Lボタン214Kおよび第2Rボタン214L)がそれぞれ設けられる。これによれば、上記操作部と別の操作部とがハウジング210の表側と裏側との互いに対向する位置に配置されるので、ユーザは、これらの操作部を操作する際にハウジング210を表側と裏側から挟むように把持することができる。また、これらの操作部を操作する際にユーザは、ハウジング210における上下方向の中心よりも上側を把持するので、端末装置200を上側で把持できるとともに、手のひらで端末装置200を支えることができる(
図27および
図28参照)。以上によって、ユーザは、少なくとも4つの操作部を操作することができる状態で、ハウジング210を安定的に把持することができ、ユーザが容易に把持することが可能で、かつ操作性の良い操作装置(端末装置200)を提供することができる。
【0303】
以上のように、本実施形態においては、突起部(庇部219)の下面に指を当てた状態で端末装置200を把持することによって、ユーザは楽に端末装置200を把持することができる。また、突起部の上面に第2Lボタン214Kおよび第2Rボタン214Lが設けられるので、ユーザは上記の状態でこれらのボタンを容易に操作することができる。ユーザは、例えば次のような持ち方で端末装置200を容易に把持することができる。
【0304】
すなわち、ユーザは、
図27に示すように、薬指を庇部219の下面(
図27に示す一点鎖線)に当てて(薬指で庇部219を支えるように)端末装置200を把持することも可能である。このとき、ユーザは、4つのボタン(第1Lボタン214I、第1Rボタン214J、第2Lボタン214K、および第2Rボタン214L)を人差し指および中指で操作することができる。例えば、要求されるゲーム操作が、使用するボタンが多く、比較的複雑である場合には、
図27に示すように把持することで、多くのボタンを容易に操作することができる。なお、各アナログスティック213Aおよび213Bは十字ボタン214Aおよびボタン214E〜214Hの上側に設けられるので、比較的複雑な操作が要求される場合にユーザは親指でアナログスティック213Aおよび213Bを操作することができ、好都合である。また、
図27においては、ユーザは、ハウジング210の表面に親指を、ハウジング210の上面に人差し指を、ハウジング210の裏面における庇部219の上面に中指を、庇部219の下面に薬指を、ハウジング210の裏面に小指を当てて端末装置200を把持する。このように、ユーザは、ハウジング210を四方から包み込むようにして端末装置200をしっかりと把持することができる。
【0305】
また、ユーザは、
図28に示すように、中指を庇部219の下面(
図28に示す一点鎖線)に当てて端末装置200を把持することも可能である。このとき、ユーザは、2つのボタン(第2Lボタン214Kおよび第2Rボタン214L)を人差し指で容易に操作することができる。例えば、要求されるゲーム操作が、使用するボタンが少なく、比較的単純である場合には、
図28に示すように把持してもよい。
図28においては、ユーザは、2本の指(薬指および小指)でハウジング210の下側を把持することができるので、しっかりと端末装置200を把持することができる。
【0306】
なお、本実施形態においては、庇部219の下面が、各アナログスティック213Aおよび213Bと、十字ボタン214Aおよび4つのボタン214E〜214Hとの間に位置するように(各アナログスティック213Aおよび213Bよりも下方で、かつ、十字ボタン214Aおよび4つのボタン214E〜214Hよりも上方に位置するように)設けられる。したがって、薬指を庇部219に当てて端末装置200を把持する場合(
図27)には、各アナログスティック213Aおよび213Bを親指で操作しやすくなり、中指を庇部219に当てて端末装置200を把持する場合(
図28)には、十字ボタン214Aおよび4つのボタン214E〜214Hを親指で操作しやすくなっている。つまり、上記2種類の場合のいずれにおいても、ユーザは、端末装置200をしっかりと把持した状態で方向入力操作を行うことができる。
【0307】
また、上述のように、ユーザは端末装置200を縦持ちで把持することも可能である。すなわち、
図29に示すように、ユーザは端末装置200の上辺を左手で把持することで端末装置200を縦向きで把持することが可能である。また、
図30に示すように、ユーザは端末装置200の下辺を左手で把持することで端末装置200を縦向きで把持することが可能である。なお、
図29および
図30では端末装置200を左手で把持する場合を示しているが、右手で把持することも可能である。このように、ユーザは端末装置200を片手で把持することが可能であるので、例えば、一方の手で端末装置200を把持しながら他方の手でタッチパネル212に対する入力を行うといった操作を行うことも可能である。
【0308】
また、
図29に示す持ち方で端末装置200を把持する場合、ユーザは親指以外の指(
図29にでは中指、薬指および小指)を庇部219の下面(
図29に示す一点鎖線)に当てることで、端末装置200をしっかりと把持することができる。特に、本実施形態においては、庇部219が左右に(
図29では上下に)延びて形成されているので、ユーザは端末装置200の上辺におけるどこの位置で把持しても、親指以外の指を庇部219に当てることができ、端末装置200をしっかりと把持することができる。すなわち、端末装置200を縦持ちで使う場合には、庇部219は取っ手として使うことができる。一方、
図30に示す持ち方で端末装置200を把持する場合、ユーザは、左手でボタン214B〜214Dを操作することができる。したがって、例えば片手でタッチパネル212に対する入力を行いつつ、端末装置200を把持する手でボタン214B〜214Dに対する操作を行うことができ、より多くの操作を行うことができる。
【0309】
なお、本実施形態における端末装置200に関しては、突起部(庇部219)が裏面に設けられるので、LCD211の画面(ハウジング210の表面)が上を向いた状態で端末装置200を載置させる場合、画面がやや傾いた状態となる。これによって、端末装置200を載置した状態において画面がより見やすくなる。また、端末装置200を載置した状態においてタッチパネル212に対する入力操作が行いやすくなる。また、他の実施形態においては、上記庇部219と同程度の高さを有する追加の突起部がハウジング210の裏面に形成されてもよい。これによれば、LCD211の画面が上を向いた状態では、各突起部が床面に接することで、画面が水平になるように端末装置200を載置することができる。また、追加の突起部を着脱可能な(または折り畳み可能な)ものとしてもよい。これによれば、画面がやや傾いた状態と、画面が水平になる状態との両方で端末装置を載置することができる。すなわち、端末装置200を置いて使う場合には、庇部219は、脚部として使うことができる。
【0310】
各ボタン214A〜214Lには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン214Aおよびボタン214E〜214Hは方向指示操作や選択操作等に用いられてもよいし、各ボタン214B〜214Eは決定操作やキャンセル操作等に用いられてもよい。また、端末装置200は、LCD211の画面表示をオン/オフするためのボタンや、ゲーム装置3との接続設定(ペアリング)を行うためのボタンを有していてもよい。
【0311】
図25の(a)図に示すように、端末装置200は、マーカ215Aおよびマーカ215Bからなるマーカ部215をハウジング210の表面に備えている。マーカ部215は、LCD211の上側に設けられる。各マーカ215Aおよびマーカ215Bは、マーカ装置6の各マーカ6Rおよび6Lと同様、1以上の赤外LEDで構成される。マーカ215Aおよび215Bを構成する赤外LEDは、赤外光を透過する窓部の内側に配置される。マーカ部215は、上述のマーカ装置6と同様、コントローラ5の動き等をゲーム装置3が算出するために用いられる。また、ゲーム装置3はマーカ部215が備える各赤外LEDの点灯を制御することが可能である。
【0312】
端末装置200は、撮像手段であるカメラ216を備えている。カメラ216は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。
図25に示すように、本実施形態では、カメラ216はハウジング210の表面に設けられる。したがって、カメラ216は、端末装置200を持っているユーザの顔を撮像することができ、例えばLCD211を見ながらゲームを行っている時のユーザを撮像することができる。本実施形態においては、カメラ216は、2つのマーカ215Aおよび215Bの間に配置される。
【0313】
なお、端末装置200は、音声入力手段であるマイク239を備えている。ハウジング210の表面には、マイクロフォン用孔210cが設けられる。マイク239はこのマイクロフォン用孔210cの奥のハウジング210内部に設けられる。マイク239は、ユーザの音声等、端末装置200の周囲の音を検出する。
【0314】
端末装置200は、音声出力手段であるスピーカ237を備えている。
図25の(d)図に示すように、ハウジング210の表面の下側にはスピーカ孔217が設けられる。スピーカ237の出力音はこのスピーカ孔217から出力される。本実施形態では、端末装置200は2つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔217が設けられる。なお、端末装置200は、スピーカ237の音量を調節するためのつまみ224を備える。また、端末装置200は、イヤホン等の音声出力部を接続するための音声出力端子222を備える。ここでは、ハウジングの下側の側面に付加装置が接続されることを考慮して、上記音声出力端子222およびつまみ224はハウジング210の上画の側面に設けられるが、左右の側面や下側の側面に設けられてもよい。
【0315】
また、ハウジング210には、赤外線通信モジュール242からの赤外線信号を端末装置200の外部に出射するための窓223が設けられる。ここでは、LCD211の両側を把持した場合にユーザの前方へ赤外線信号が発射されるように、窓223はハウジング210の上側の側面に設けられる。ただし、他の実施形態においては、窓223は、例えばハウジング210の裏面等、どの位置に設けられてもよい。
【0316】
また、端末装置200は、他の装置を端末装置200に接続するための拡張コネクタ218を備えている。拡張コネクタ218は、端末装置200に接続される他の装置との間でデータ(情報)を送受信するための通信端子である。本実施形態においては、
図25の(d)図に示すように、拡張コネクタ218は、ハウジング210の下側側面に設けられる。なお、拡張コネクタ218に接続される他の付加装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ(銃型のコントローラ等)やキーボード等の入力装置であってもよい。付加装置を接続する必要がなければ、拡張コネクタ218は設けられていなくともよい。拡張コネクタ218には、付加装置に電力を供給する端子や、充電のための端子が含まれていてもよい。
【0317】
また、端末装置200は、拡張コネクタ218とは別に、付加装置から電力を取得するための充電端子226を有する。所定の充電スタンドに充電端子226が接続された場合、充電スタンドから端末装置200へ電力が供給される。本実施形態では、充電端子226はハウジング210の下側側面に設けられる。したがって、端末装置200と付加装置とが接続される際には、拡張コネクタ218を介して情報を送受信することに加えて、一方から他方への電力供給を行うことも可能である。このように、拡張コネクタ218の周囲(左右両側)に充電端子226を設けることによって、端末装置200と付加装置とが接続される際に、情報の送受信とともに、電力供給を行うことも可能である。また、端末装置200は充電コネクタを有し、ハウジング210は充電コネクタを保護するためのカバー部221を有する。充電コネクタは、後述する充電器246に接続可能であり、充電器に充電コネクタが接続された場合、充電器246から端末装置200へ電力が供給される。本実施形態では、ハウジングの下側の側面に付加装置が接続されることを考慮して、充電コネクタ(カバー部221)はハウジング210の上画の側面に設けられるが、左右の側面や下側の側面に設けられてもよい。
【0318】
また、端末装置200は、ハウジング210に対して着脱可能な電池蓋227を有している。電池蓋227の内側には電池(
図31に示す電池245)が配置される。本実施形態においては、電池蓋227はハウジング210の裏側に設けられ、突起部(庇部219)の下側に設けられる。
【0319】
また、端末装置200のハウジング210には、ストラップの紐を結びつけるための孔225aおよび225bが設けられる。
図25(d)に示すように、本実施形態においては、孔225aおよび225bはハウジング210の下面に設けられる。また、本実施形態においては、2つの孔225aおよび225bがハウジング210の左右両側にそれぞれ1つずつ設けられる。すなわち、孔225aがハウジング210の下面の中央より左側に設けられ、孔225bがハウジング210の下面の中央より右側に設けられる。ユーザは、孔225aおよび225bのいずれかにストラップを結びつけ、ストラップを自身の手首に結びつけてもよい。これによって、万一ユーザが端末装置200を落としたり、端末装置200が手から離れたりした場合でも、端末装置200が落下したり他の物に衝突したりすることを防止することができる。なお、本実施形態においては、左右両側にそれぞれ孔が設けられるので、ユーザは、どちらの手にもストラップを結びつけることができ、便利である。
【0320】
なお、
図25〜
図30に示した端末装置200に関して、各操作ボタンやハウジング210の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【0321】
次に、
図31を参照して、端末装置200の内部構成について説明する。
図31は、端末装置200の内部構成を示すブロック図である。
図31に示すように、端末装置200は、
図25に示した構成の他、タッチパネルコントローラ231、磁気センサ232、加速度センサ233、ジャイロセンサ234、ユーザインタフェースコントローラ(UIコントローラ)235、コーデックLSI236、スピーカ237、サウンドIC238、マイク239、無線モジュール240、アンテナ241、赤外線通信モジュール242、フラッシュメモリ243、電源IC244、および電池245を備える。これらの電子部品は、電子回路基板上に実装されてハウジング210内に収納される。
【0322】
UIコントローラ235は、各種の入出力部に対するデータの入出力を制御するための回路である。UIコントローラ235は、タッチパネルコントローラ231、アナログスティック213(アナログスティック213Aおよび213B)、操作ボタン214(各操作ボタン214A〜214L)、マーカ部215、磁気センサ232、加速度センサ233、およびジャイロセンサ234に接続される。また、UIコントローラ235は、コーデックLSI236と拡張コネクタ218に接続される。また、UIコントローラ235には電源IC244が接続され、UIコントローラ235を介して各部に電力が供給される。電源IC244には内蔵の電池245が接続され、電力が供給される。また、電源IC244には、外部電源から電力を取得可能な充電器246またはケーブルを充電コネクタを介して接続することが可能であり、端末装置200は、当該充電器246またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置200は、図示しない充電機能を有するクレイドルに端末装置200を装着することで充電を行うことも可能である。すなわち、図示しないが、電源IC244には、外部電源から電力を取得可能なクレイドルを充電端子226を介して接続することが可能であり、端末装置200は、クレイドルを用いて外部電源からの電力供給と充電を行うことができる。
【0323】
タッチパネルコントローラ231は、タッチパネル212に接続され、タッチパネル212の制御を行う回路である。タッチパネルコントローラ231は、タッチパネル212からの信号に基づいて所定の形式のタッチ位置データを生成してUIコントローラ235へ出力する。タッチ位置データは、タッチパネル212の入力面において入力が行われた位置の座標を表す。なお、タッチパネルコントローラ231は、タッチパネル212からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。また、UIコントローラ235からタッチパネルコントローラ231へは、タッチパネル212に対する各種の制御指示が出力される。
【0324】
アナログスティック213は、ユーザの指で操作されるスティック部がスライドした(または傾倒した)方向および量を表すスティックデータをUIコントローラ235へ出力する。また、操作ボタン214は、各操作ボタン214A〜214Lに対する入力状況(押下されたか否か)を表す操作ボタンデータをUIコントローラ235へ出力する。
【0325】
磁気センサ232は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、UIコントローラ235へ出力される。また、UIコントローラ235から磁気センサ232へは、磁気センサ232に対する制御指示が出力される。磁気センサ232に関しては、MI(磁気インピーダンス)素子、フラックスゲートセンサ、ホール素子、GMR(巨大磁気抵抗)素子、TMR(トンネル磁気抵抗)素子、あるいはAMR(異方性磁気抵抗)素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置200が動いた場合には方位データが変化するため、端末装置200の姿勢の変化を算出することができる。
【0326】
加速度センサ233は、ハウジング210の内部に設けられ、3軸(
図25の(a)図に示すxyz軸)方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ233は、ハウジング210の長辺方向をx軸、ハウジング210の表面に対して垂直な方向をy軸、ハウジング210の短辺方向をz軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはUIコントローラ235へ出力される。また、UIコントローラ235から加速度センサ233へは、加速度センサ233に対する制御指示が出力される。加速度センサ233は、本実施形態では例えば静電容量式のMEMS型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ233は1軸または2軸方向を検出する加速度センサであってもよい。
【0327】
ジャイロセンサ234は、ハウジング210の内部に設けられ、上記x軸、y軸およびz軸の3軸周りの角速度を検出する。検出された角速度を表す角速度データは、UIコントローラ235へ出力される。また、UIコントローラ235からジャイロセンサ234へは、ジャイロセンサ234に対する制御指示が出力される。なお、3軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ234はジャイロセンサユニット6と同様、2軸ジャイロセンサと1軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ234は1軸または2軸方向を検出するジャイロセンサであってもよい。
【0328】
UIコントローラ235は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックLSI236に出力する。なお、拡張コネクタ218を介して端末装置200に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【0329】
コーデックLSI236は、ゲーム装置3へ送信するデータに対する圧縮処理、および、ゲーム装置3から送信されたデータに対する伸張処理を行う回路である。コーデックLSI236には、LCD211、カメラ216、サウンドIC238、無線モジュール240、フラッシュメモリ243、および赤外線通信モジュール242が接続される。また、コーデックLSI236はCPU247と内部メモリ248を含む。端末装置200はゲーム処理自体を行なわない構成であるが、端末装置200の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ243に格納されたプログラムを内部メモリ248に読み出してCPU247が実行することで、端末装置200が起動する。また、内部メモリ248の一部の領域はLCD211のためのVRAMとして使用される。
【0330】
カメラ216は、ゲーム装置3からの指示に従って画像を撮像し、撮像した画像データをコーデックLSI236へ出力する。また、コーデックLSI236からカメラ216へは、画像の撮像指示等、カメラ216に対する制御指示が出力される。なお、カメラ216は動画の撮影も可能である。すなわち、カメラ216は、繰り返し撮像を行って画像データをコーデックLSI236へ繰り返し出力することも可能である。
【0331】
サウンドIC238は、スピーカ237およびマイク239に接続され、スピーカ237およびマイク239への音声データの入出力を制御する回路である。すなわち、コーデックLSI236から音声データを受け取った場合、サウンドIC238は当該音声データに対してD/A変換を行って得られる音声信号をスピーカ237へ出力し、スピーカ237から音を出力させる。また、マイク239は、端末装置200に伝わる音(ユーザの音声等)を検知して、当該音を示す音声信号をサウンドIC238へ出力する。サウンドIC238は、マイク239からの音声信号に対してA/D変換を行い、所定の形式の音声データをコーデックLSI236へ出力する。
【0332】
コーデックLSI236は、カメラ216からの画像データ、マイク239からの音声データ、および、UIコントローラ235からの操作データを、端末操作データとして無線モジュール240を介してゲーム装置3へ送信する。本実施形態では、コーデックLSI236は、画像データおよび音声データに対して、画像圧縮部27と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール240に出力される。無線モジュール240にはアンテナ241が接続されており、無線モジュール240はアンテナ241を介してゲーム装置3へ上記送信データを送信する。無線モジュール240は、ゲーム装置3の高速無線通信モジュール28と同様の機能を有している。すなわち、無線モジュール240は、例えばIEEE802.11nの規格に準拠した方式により、無線LANに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【0333】
以上のように、端末装置200からゲーム装置3へ送信される送信データには、操作データ(端末操作データ)、画像データ、および音声データが含まれる。なお、拡張コネクタ218を介して端末装置200に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。また、赤外線通信モジュール242は、他の装置との間で例えばIRDAの規格に従った赤外線通信を行う。コーデックLSI236は、赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置3へ送信してもよい。
【0334】
また、上述のように、ゲーム装置3から端末装置200へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ241および無線モジュール240を介してコーデックLSI236に受信される。コーデックLSI236は、受信した画像データおよび音声データを伸張する。伸張された画像データはLCD211へ出力され、画像がLCD211に表示される。つまり、コーデックLSI236(CPU247)は、受信された画像データを表示部に表示させる。また、伸張された音声データはサウンドIC238へ出力され、サウンドIC238はスピーカ237から音を出力させる。
【0335】
また、ゲーム装置3から受信されるデータに制御データが含まれる場合、コーデックLSI236およびUIコントローラ235は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置200が備える各構成要素(本実施形態では、カメラ216、タッチパネルコントローラ231、マーカ部215、各センサ222〜224、および赤外線通信モジュール242)に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止(停止)させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置200からゲーム装置3へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部215は赤外LEDであるので、制御は単に電力の供給のON/OFFでよい。
【0336】
以上のように、端末装置200は、タッチパネル212、アナログスティック213、および操作ボタン214といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【0337】
また、端末装置200は、端末装置200の動き(位置や姿勢、あるいは、位置や姿勢の変化を含む)を算出するためのセンサとして、磁気センサ232、加速度センサ233、およびジャイロセンサ234を備えるが、他の実施形態においては、これらのセンサのうち1つまたは2つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【0338】
また、端末装置200は、カメラ216およびマイク239を備える構成であるが、他の実施形態においては、カメラ216およびマイク239を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【0339】
また、端末装置200は、端末装置200とコントローラ5との位置関係(コントローラ5から見た端末装置200の位置および/または姿勢等)を算出するための構成としてマーカ部215を備える構成であるが、他の実施形態ではマーカ部215を備えていない構成としてもよい。また、他の実施形態では、端末装置200は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、コントローラ5がマーカ部を備え、端末装置200が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置6は赤外LEDに代えて、撮像素子を備える構成としてもよい。