(57)【特許請求の範囲】
【請求項１】
４方向スイッチに対する入力に基づいて、オブジェクトを制御するための第１制御方向を設定する方向制御システムであって、
前記４方向スイッチからの情報に基づいて、当該４方向スイッチに対して行われた入力の方向を示す第１入力方向を取得する第１入力方向取得手段と、
前記第１入力方向に基づいて、当該第１入力方向に追従して変化するように、前記第１制御方向を設定する方向設定手段とを備え、
前記方向設定手段は、
前記第１入力方向が前記４方向のうちの隣り合う２方向の間の方向である場合、前記第１入力方向が前記４方向のうちの何れかの方向である場合よりも、前記第１制御方向を前記第１入力方向に近づける度合いを低くして、前記第１制御方向を前記第１入力方向に近づけ、
前記第１入力方向と、前記第１制御方向との違いに基づいて、前記第１制御方向を前記第１入力方向に近づける度合いを変化させる、方向制御システム。
【請求項２】
前記方向設定手段は、前記第１入力方向と直前の第１制御方向との違いが大きいほど、前記近づける度合いを高くする、請求項１に記載の方向制御システム。
【請求項３】
前記第１制御方向に基づいて、仮想空間内の所定のオブジェクトの方向を制御するオブジェクト制御手段をさらに備える、請求項１又は２に記載の方向制御システム。
【請求項４】
アナログ方向入力部からの情報に基づいて、２次元の第２入力方向を取得する第２入力方向取得手段をさらに備え、
前記方向設定手段は、前記第２入力方向を、オブジェクトを制御するための第２制御方向として設定する、請求項１から３の何れかに記載の方向制御システム。
【請求項５】
前記４方向スイッチと、前記アナログ方向入力部とを有する操作装置と、
前記４方向スイッチからの情報に応じて、前記第１制御方向に基づいて仮想空間内の所定のオブジェクトの方向を制御し、前記アナログ方向入力部からの情報に応じて、前記第２制御方向に基づいて前記所定のオブジェクトの方向を制御するオブジェクト制御手段とをさらに備える、請求項４に記載の方向制御システム。
【請求項６】
前記４方向スイッチを有する第１操作装置と、
前記アナログ方向入力部を有する第２操作装置とを備え、
前記４方向スイッチからの情報に応じて、前記第１制御方向に基づいて仮想空間内の第１オブジェクトの方向を制御し、前記アナログ方向入力部からの情報に応じて、前記第２制御方向に基づいて第２オブジェクトの方向を制御するオブジェクト制御手段をさらに備える、請求項４に記載の方向制御システム。
【請求項７】
４方向スイッチに対する入力に基づいて、オブジェクトを制御するための第１制御方向を設定する方向制御装置であって、
前記４方向スイッチからの情報に基づいて、当該４方向スイッチに対して行われた入力の方向を示す第１入力方向を取得する第１入力方向取得手段と、
前記第１入力方向に基づいて、当該第１入力方向に追従して変化するように、前記第１制御方向を設定する方向設定手段とを備え、
前記方向設定手段は、
前記第１入力方向が前記４方向のうちの隣り合う２方向の間の方向である場合、前記第１入力方向が前記４方向のうちの何れかの方向である場合よりも、前記第１制御方向を前記第１入力方向に近づける度合いを低くして、前記第１制御方向を前記第１入力方向に近づけ、
前記第１入力方向と、前記第１制御方向との違いに基づいて、前記第１制御方向を前記第１入力方向に近づける度合いを変化させる、方向制御装置。
【請求項８】
４方向スイッチに対する入力に基づいて、オブジェクトを制御するための第１制御方向を設定する方向制御装置のコンピュータにおいて実行される方向制御プログラムであって、前記コンピュータを、
前記４方向スイッチからの情報に基づいて、当該４方向スイッチに対して行われた入力の方向を示す第１入力方向を取得する第１入力方向取得手段と、
前記第１入力方向に基づいて、当該第１入力方向に追従して変化するように、前記第１制御方向を設定する方向設定手段として機能させ、
前記方向設定手段は、
前記第１入力方向が前記４方向のうちの隣り合う２方向の間の方向である場合、前記第１入力方向が前記４方向のうちの何れかの方向である場合よりも、前記第１制御方向を前記第１入力方向に近づける度合いを低くして、前記第１制御方向を前記第１入力方向に近づけ、
前記第１入力方向と、前記第１制御方向との違いに基づいて、前記第１制御方向を前記第１入力方向に近づける度合いを変化させる、方向制御プログラム。
【請求項９】
４方向スイッチに対する入力に基づいて、オブジェクトを制御するための第１制御方向を設定する方向制御システムにおいて実行される方向制御方法であって、
前記４方向スイッチからの情報に基づいて、当該４方向スイッチに対して行われた入力の方向を示す第１入力方向を取得する第１入力方向取得ステップと、
前記第１入力方向に基づいて、当該第１入力方向に追従して変化するように、前記第１制御方向を設定する方向設定ステップとを含み、
前記方向設定ステップでは、
前記第１入力方向が前記４方向のうちの隣り合う２方向の間の方向である場合、前記第１入力方向が前記４方向のうちの何れかの方向である場合よりも、前記第１制御方向を前記第１入力方向に近づける度合いを低くして、前記第１制御方向を前記第１入力方向に近づけ、
前記第１入力方向と、前記第１制御方向との違いに基づいて、前記第１制御方向を前記第１入力方向に近づける度合いを変化させる、方向制御方法。
【請求項１０】
前記方向設定ステップでは、前記第１入力方向と、直前の第１制御方向との違いが大きいほど、前記近づける度合いを高くする、請求項９に記載の方向制御方法。
【請求項１１】
前記第１制御方向に基づいて、仮想空間内の所定のオブジェクトの方向を制御するオブジェクト制御ステップをさらに含む、請求項９又は１０に記載の方向制御方法。
【請求項１２】
アナログ方向入力部からの情報に基づいて、２次元の第２入力方向を取得する第２入力方向取得ステップをさらに含み、
前記方向設定ステップでは、前記第２入力方向を、オブジェクトを制御するための第２制御方向として設定する、請求項９から１１の何れかに記載の方向制御方法。
【請求項１３】
前記方向制御システムは、前記４方向スイッチと、前記アナログ方向入力部とを有する操作装置を含み、
前記４方向スイッチからの情報に応じて、前記第１制御方向に基づいて仮想空間内の所定のオブジェクトの方向を制御し、前記アナログ方向入力部からの情報に応じて、前記第２制御方向に基づいて前記所定のオブジェクトの方向を制御するオブジェクト制御ステップをさらに含む、請求項１２に記載の方向制御方法。
【請求項１４】
前記方向制御システムは、
前記４方向スイッチを有する第１操作装置と、
前記アナログ方向入力部を有する第２操作装置とを含み、
前記４方向スイッチからの情報に応じて、前記第１制御方向に基づいて仮想空間内の第１オブジェクトの方向を制御し、前記アナログ方向入力部からの情報に応じて、前記第２制御方向に基づいて第２オブジェクトの方向を制御するオブジェクト制御ステップをさらに含む、請求項１２に記載の方向制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、４方向スイッチを用いた方向制御システム、方向制御装置、方向制御プログラム、および方向制御方法に関する。
【背景技術】
【０００２】
従来、４方向スイッチを有する入力装置を備え、当該４方向スイッチに対する入力に応じて所定のオブジェクトを移動させるゲーム装置が存在する。例えば、特許文献１に記載のゲーム装置は、アナログスティックと４方向スイッチとを有する入力装置を備え、アナログスティックまたは４方向スイッチに対する入力に応じて、プレイヤキャラクタを３次元の仮想空間内で移動させる。特許文献１に記載のゲーム装置において、４方向スイッチに対する入力に応じてプレイヤキャラクタを移動させる場合、入力装置は、当該４方向スイッチの上下左右の４方向および斜めの方向の８つの方向の何れかの方向を検知する。ゲーム装置は、入力装置が検知した当該８つの方向のうちの何れかの方向に基づいて、プレイヤキャラクタを移動させる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
４方向スイッチでは入力が可能な方向は８つであり、プレイヤが４方向スイッチを用いてプレイヤキャラクタの移動方向を制御する場合、プレイヤキャラクタを任意の方向に移動させることが難しい。この場合、仮想的なアナログスティックをゲーム装置において定義し、４方向スイッチに対する入力に応じて、仮想的なアナログスティックの方向を変化させ、当該仮想的なアナログスティックの方向を用いてプレイヤキャラクタを制御する方法が考えられる。具体的には、当該方法では、４方向スイッチに対する入力があった場合、仮想的なアナログスティックの方向を４方向スイッチの入力方向に所定時間かけて徐々に近づける。しかしながら、当該方法では、必ずしもプレイヤは意図した通りにプレイヤキャラクタを移動させることができず、４方向スイッチを用いた方向の入力には改善の余地があった。
【０００５】
それ故、本発明の目的は、４方向スイッチを用いて方向を入力する場合においてユーザの操作性を向上することが可能な方向制御システム、方向制御装置、方向制御プログラム、および方向制御方法を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【０００７】
本発明の一形態は、４方向スイッチに対する入力に基づく第１制御方向を設定する方向制御システムである。当該方向制御システムは、第１入力方向取得手段と、判定手段と、方向設定手段とを備える。第１入力方向取得手段は、上記４方向スイッチに対する入力に基づいて、当該４方向または当該４方向のうちの２方向の間の方向を示す第１入力方向を取得する。判定手段は、上記第１入力方向が、上記４方向の何れかの方向を示す第１方向であるか、または、上記４方向のうちの２方向の間の方向を示す第２方向であるかを判定する。方向設定手段は、上記第１入力方向に基づいて上記第１制御方向を更新し、上記第１入力方向が上記第２方向である場合、上記第１入力方向が上記第１方向である場合よりも上記第１制御方向を上記第１入力方向に近づける度合いを低くして、上記第１制御方向を上記第１入力方向に近づける。
【０００８】
なお、「４方向スイッチ」は、例えば、十字ボタンであったり、十字ボタンの上下左右の方向が斜めを向くように設定されたスイッチ等であってもよい。「上記４方向のうちの２方向の間の方向を示す第２方向」とは、例えば、十字ボタンであれば、十字ボタンの斜め方向であったり、十字ボタンの上下左右の方向が斜めを向くように設定されたスイッチであれば、上下左右の方向である。
【０００９】
上記形態によれば、４方向スイッチに対して行われた第１入力方向が上記第２方向である場合は、第１制御方向を第１入力方向に近づける度合いを比較的低くし、第１入力方向が上記第２方向である場合は、近づける度合いを比較的高くすることができる。これにより、ユーザは、例えば、４方向スイッチを用いて所定のオブジェクトを移動させる場合でも、意図した方向に当該所定のオブジェクトを移動させることができる。
【００１０】
また、他の形態では、上記方向設定手段は、上記第１入力方向と、上記第１制御方向との違いに基づいて、上記第１制御方向を上記第１入力方向に近づける度合いを変化させてもよい。
【００１１】
上記形態によれば、第１入力方向と第１制御方向との違いに基づいて、第１制御方向を第１入力方向に近づける度合いを変化させることができる。
【００１２】
また、他の形態では、上記方向設定手段は、上記第１入力方向と、直前の第１制御方向との違いが大きいほど、上記近づける度合いを高くしてもよい。
【００１３】
上記形態によれば、第１入力方向と第１制御方向との違いが大きいほど、上記近づける度合いを高くすることができる。これにより、ユーザの意図をより反映して第１制御方向を設定することができる。
【００１４】
また、他の形態では、上記方向制御システムは、上記第１制御方向に基づいて、仮想空間内の所定のオブジェクトの方向を制御するオブジェクト制御手段をさらに備えてもよい。
【００１５】
上記形態によれば、仮想空間内の所定のオブジェクトの方向（移動方向や視線方向等であってもよい）を第１制御方向に基づいて制御することができる。
【００１６】
また、他の形態では、上記方向制御システムは、アナログ方向入力部への入力に基づいて、２次元の第２入力方向を取得する第２入力方向取得手段をさらに備えてもよい。上記方向設定手段は、上記第２入力方向を第２制御方向として設定する。
【００１７】
ここで、上記第２制御方向は、上記第１制御方向と同じものであってもよいし、異なるものであってもよい。
【００１８】
上記形態によれば、第２入力方向を第２制御方向として設定することができる。例えば、第２制御方向と第１制御方向とが同じである場合には、上記第２入力方向を上記第１制御方向として設定することができる。
【００１９】
また、他の形態では、上記方向制御システムは、上記４方向スイッチと、上記アナログ方向入力部とを有する操作装置を備えてもよい。また、上記方向制御システムは、オブジェクト制御手段をさらに備えてもよい。オブジェクト制御手段は、上記４方向スイッチへの入力に応じて、上記第１制御方向に基づいて仮想空間内の所定のオブジェクトの方向を制御し、上記アナログ方向入力部への入力に応じて、上記第２制御方向に基づいて上記所定のオブジェクトの方向を制御する。
【００２０】
上記形態によれば、例えば、４方向スイッチおよび／またはアナログ方向入力部に対する入力に応じて所定のオブジェクトの方向を制御することができる。
【００２１】
また、他の形態では、上記方向制御システムは、上記４方向スイッチを有する第１操作装置と、上記アナログ方向入力部を有する第２操作装置とを備えてもよい。また、上記方向制御システムは、オブジェクト制御手段をさらに備える。オブジェクト制御手段は、上記４方向スイッチへの入力に応じて、上記第１制御方向に基づいて仮想空間内の第１オブジェクトの方向を制御し、上記アナログ方向入力部への入力に応じて、上記第２制御方向に基づいて第２オブジェクトの方向を制御する。
【００２２】
上記形態によれば、第１操作装置の４方向スイッチに対する入力に応じて第１オブジェクトの方向を制御し、第２操作装置のアナログ方向入力部に対する入力に応じて第２オブジェクトの方向を制御することができる。これにより、例えば、アナログ方向入力部に対する入力に応じて移動方向が制御される第２オブジェクトを、４方向スイッチに対する入力に応じて移動方向が制御される第１オブジェクトが追いかけるようなゲームを行うことができる。
【００２３】
なお、上記方向制御システムは、単体の装置によって構成されてもよいし、複数の装置によって構成されてもよい。また、他の形態では、方向制御装置であってもよい。また、方向制御装置のコンピュータを上記各手段として機能させる方向制御プログラムの形態であってもよい。さらに、他の形態では、方向制御方法であってもよい。
【発明の効果】
【００２４】
本発明によれば、４方向スイッチを用いて方向を入力する場合においてユーザの操作性を向上させることができる。
【図面の簡単な説明】
【００２５】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の内部構成を示すブロック図
【図３】メインコントローラ８の外観構成を示す斜視図
【図４】メインコントローラ８の外観構成を示す斜視図
【図５】メインコントローラ８の内部構造を示す図
【図６】メインコントローラ８の内部構造を示す図
【図７】サブコントローラ９の外観構成を示す斜視図
【図８】コントローラ５の構成を示すブロック図
【図９】端末装置７の外観構成を示す図
【図１０】ユーザが端末装置７を把持した様子を示す図
【図１１】端末装置７の内部構成を示すブロック図
【図１２】本実施形態のゲームが実行された場合にテレビ２の画面に表示されるゲーム画像の一例を示す図
【図１３】十字ボタン３２ａが押された場合の入力方向を示す入力ベクトルＳ１を示す図
【図１４Ａ】十字ボタン３２ａにおいて行われた入力方向が上方向から右上方向に変化した場合に、仮想スティックベクトルＶが変化する様子を示す図
【図１４Ｂ】十字ボタン３２ａにおいて行われた入力方向が右上方向から上方向に変化した場合に、仮想スティックベクトルＶが変化する様子を示す図
【図１５】ゲーム処理において用いられる各種データを示す図
【図１６】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図１７】図１６に示す方向設定処理（ステップＳ１３）の詳細な流れを示すフローチャート
【発明を実施するための形態】
【００２６】
［１．ゲームシステムの全体構成］
以下、図面を参照して、本発明の一実施形態に係るゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。図１において、ゲームシステム１は、テレビジョン受像器等に代表される据置型のディスプレイ装置（以下、「テレビ」と記載する）２、据置型のゲーム装置３、光ディスク４、コントローラ５、マーカ装置６、および、端末装置７を含む。ゲームシステム１は、コントローラ５を用いたゲーム操作に基づいてゲーム装置３においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ２および／または端末装置７に表示するものである。
【００２７】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるための情報処理プログラム（典型的にはゲームプログラム）が記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【００２８】
ゲーム装置３には、テレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ２はスピーカ２ａ（図２）を有しており、スピーカ２ａは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置３と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置３とテレビ２との通信は無線通信であってもよい。
【００２９】
テレビ２の画面の周辺（図１では画面の上側）には、マーカ装置６が設置される。詳細は後述するが、ユーザ（プレイヤ）はコントローラ５を動かすゲーム操作を行うことができ、マーカ装置６は、コントローラ５の動きや位置や姿勢等をゲーム装置３が算出するために用いられる。マーカ装置６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）であり、テレビ２の前方に向かって赤外光を出力する。マーカ装置６は有線で（無線であってもよい）ゲーム装置３に接続されており、ゲーム装置３はマーカ装置６が備える各赤外ＬＥＤの点灯を制御することが可能である。なお、マーカ装置６は可搬型であり、ユーザはマーカ装置６を自由な位置に設置することができる。図１ではマーカ装置６がテレビ２の上に設置された態様を表しているが、マーカ装置６を設置する位置および向きは任意である。
【００３０】
コントローラ５は、自機に対する操作に基づく操作データをゲーム装置３に与えるものである。本実施形態では、コントローラ５は、メインコントローラ８とサブコントローラ９とを有し、サブコントローラ９がメインコントローラ８に着脱可能に装着される構成である。コントローラ５とゲーム装置３とは無線通信によって通信可能である。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。また、図１では、ゲームシステム１に含まれるコントローラ５は１つとするが、ゲームシステム１は複数のコントローラ５を含んでいてもよい。つまり、ゲーム装置３は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ５の詳細な構成については後述する。
【００３１】
端末装置７は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置７を手に持って動かしたり、あるいは、端末装置７を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置７は、表示手段であるＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）５１、および、入力手段（後述するタッチパネル５２やジャイロセンサ６４等）を備える。端末装置７とゲーム装置３とは無線（有線であってもよい）によって通信可能である。端末装置７は、ゲーム装置３で生成された画像（例えばゲーム画像）のデータをゲーム装置３から受信し、画像をＬＣＤ５１に表示する。なお、本実施形態では表示装置としてＬＣＤを用いているが、端末装置７は、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置７は、自機に対する操作に基づく操作データをゲーム装置３に送信する。
【００３２】
［２．ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の内部構成を示すブロック図である。ゲーム装置３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００３３】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００３４】
システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００３５】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。なお、本実施形態においては、ゲーム装置３は、テレビ２に表示するゲーム画像と、端末装置７に表示するゲーム画像との両方を生成する。以下では、テレビ２に表示されるゲーム画像を「テレビ用ゲーム画像」と呼び、端末装置７に表示されるゲーム画像を「端末用ゲーム画像」と呼ぶことがある。
【００３６】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、テレビ２のスピーカから出力するゲーム音声と、端末装置７のスピーカから出力するゲーム音声との両方が生成される。以下では、テレビ２から出力されるゲーム音声を「テレビ用ゲーム音声」と呼び、端末装置７から出力されるゲーム音声を「端末用ゲーム音声」と呼ぶことがある。
【００３７】
上記のようにゲーム装置３において生成される画像および音声のうちで、テレビ２において出力される画像および音声のデータは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、テレビ２に画像が表示されるとともにスピーカ２ａから音が出力される。
【００３８】
また、ゲーム装置３において生成される画像および音声のうちで、端末装置７において出力される画像および音声のデータは、入出力プロセッサ１１ａ等によって端末装置７へ送信される。入出力プロセッサ１１ａ等による端末装置７へのデータの送信については後述する。
【００３９】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、ネットワーク通信モジュール１８、コントローラ通信モジュール１９、拡張コネクタ２０、メモリカード用コネクタ２１、コーデックＬＳＩ２７に接続される。また、ネットワーク通信モジュール１８にはアンテナ２２が接続される。コントローラ通信モジュール１９にはアンテナ２３が接続される。コーデックＬＳＩ２７は端末通信モジュール２８に接続され、端末通信モジュール２８にはアンテナ２９が接続される。
【００４０】
ゲーム装置３は、インターネット等のネットワークに接続して外部情報処理装置（例えば他のゲーム装置や、各種サーバや、各種情報処理装置等）と通信を行うことが可能である。すなわち、入出力プロセッサ１１ａは、ネットワーク通信モジュール１８およびアンテナ２２を介してインターネット等のネットワークに接続し、ネットワークに接続される外部情報処理装置と通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２およびネットワーク通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と外部情報処理装置との間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。また、フラッシュメモリ１７にはゲームプログラムが記憶されてもよい。
【００４１】
また、ゲーム装置３は、コントローラ５からの操作データを受信することが可能である。すなわち、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３およびコントローラ通信モジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４２】
また、ゲーム装置３は、端末装置７との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ１１ａは、端末装置７へゲーム画像（端末用ゲーム画像）を送信する場合、ＧＰＵ１１ｂが生成したゲーム画像のデータをコーデックＬＳＩ２７へ出力する。コーデックＬＳＩ２７は、入出力プロセッサ１１ａからの画像データに対して所定の圧縮処理を行う。端末通信モジュール２８は、端末装置７との間で無線通信を行う。したがって、コーデックＬＳＩ２７によって圧縮された画像データは、端末通信モジュール２８によってアンテナ２９を介して端末装置７へ送信される。なお、本実施形態では、ゲーム装置３から端末装置７へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置３から端末装置７への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックＬＳＩ２７は、例えばＨ．２６４規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール２８は、例えばＷｉ−Ｆｉの認証を受けた通信モジュールであり、例えばＩＥＥＥ８０２．１１ｎ規格で採用されるＭＩＭＯ（Ｍｕｌｔｉｐｌｅ  Ｉｎｐｕｔ  Ｍｕｌｔｉｐｌｅ  Ｏｕｔｐｕｔ）の技術を用いて端末装置７との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【００４３】
また、ゲーム装置３は、画像データの他、音声データを端末装置７へ送信する。すなわち、入出力プロセッサ１１ａは、ＤＳＰ１１ｃが生成した音声データを、コーデックＬＳＩ２７を介して端末通信モジュール２８へ出力する。コーデックＬＳＩ２７は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール２８は、圧縮された画像データおよび音声データを、アンテナ２９を介して端末装置７へ送信する。
【００４４】
さらに、ゲーム装置３は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置７へ送信する。制御データは、端末装置７が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部（図１０に示すマーカ部５５）の点灯を制御する指示や、カメラ（図１０に示すカメラ５６）の撮像を制御する指示等を表す。入出力プロセッサ１１ａは、ＣＰＵ１０の指示に応じて制御データを端末装置７へ送信する。なお、この制御データに関して、本実施形態ではコーデックＬＳＩ２７はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置３から端末装置７へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくともよい。
【００４５】
また、ゲーム装置３は、端末装置７から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置７は、操作データ、画像データ、および音声データを送信する。端末装置７から送信される各データはアンテナ２９を介して端末通信モジュール２８によって受信される。ここで、端末装置７からの画像データおよび音声データは、ゲーム装置３から端末装置７への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール２８からコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって伸張処理が施されて入出力プロセッサ１１ａに出力される。一方、端末装置７からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール２８で受信された後、コーデックＬＳＩ２７を介して入出力プロセッサ１１ａに出力される。入出力プロセッサ１１ａは、端末装置７から受信したデータを、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４６】
また、ゲーム装置３は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタである。拡張コネクタ２０に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００４７】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、図示しないＡＣアダプタによって外部の電源からゲーム装置３の各構成要素に対して電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４８】
なお、他の実施形態においては、ゲーム装置３が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置３とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ２０を介してゲーム装置３と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックＬＳＩ２７、端末通信モジュール２８およびアンテナ２９の各構成要素を備えており、拡張コネクタ２０に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置７と通信可能な構成とすることができる。
【００４９】
［３．コントローラ５の構成］
次に、図３〜図７を参照して、コントローラ５について説明する。上述のように、コントローラ５は、メインコントローラ８とサブコントローラ９とによって構成される。図３は、メインコントローラ８の外観構成を示す斜視図である。図４は、メインコントローラ８の外観構成を示す斜視図である。図３は、メインコントローラ８の上側後方から見た斜視図であり、図４は、メインコントローラ８を下側前方から見た斜視図である。
【００５０】
図３および図４において、メインコントローラ８は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ１軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、メインコントローラ８に設けられたボタンを押下すること、および、メインコントローラ８自体を動かしてその位置や姿勢（傾き）を変えることによってゲーム操作を行うことができる。
【００５１】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。本明細書では、これらのボタン３２ａ〜３２ｈが設けられるハウジング３１の上面を「ボタン面」と呼ぶことがある。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、ユーザがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００５２】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、メインコントローラ８に他の機器（例えば、サブコントローラ９や他のセンサユニット等）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００５３】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５（メインコントローラ８）には、他のコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ５の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００５４】
また、メインコントローラ８は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００５５】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、メインコントローラ８に内蔵されるスピーカ４７（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００５６】
次に、図５および図６を参照して、メインコントローラ８の内部構造について説明する。図５および図６は、メインコントローラ８の内部構造を示す図である。なお、図５は、メインコントローラ８の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、メインコントローラ８の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００５７】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４７等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ１軸方向に関してメインコントローラ８の中心からずれた位置に配置されている。これによって、メインコントローラ８をＺ１軸回りに回転させたときのメインコントローラ８の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ１軸方向）に関してメインコントローラ８の中心よりも前方に配置されている。また、無線モジュール４４（図６）およびアンテナ４５によって、コントローラ５（メインコントローラ８）がワイヤレスコントローラとして機能する。
【００５８】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、メインコントローラ８の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００５９】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４６が設けられている。バイブレータ４６は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４６が作動することによってメインコントローラ８に振動が発生する。これによって、メインコントローラ８を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４６は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４６がメインコントローラ８の中心よりも端側に配置することによって、バイブレータ４６の振動によりメインコントローラ８全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、メインコントローラ８は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４７に音声信号を出力するアンプ等を備えている。
【００６０】
図７は、サブコントローラ９の外観構成を示す斜視図である。サブコントローラ９は、例えばプラスチック成型によって形成されたハウジング８０を有している。ハウジング８０は、メインコントローラ８と同様に、全体として大人や子供の片手で把持可能な大きさである。このサブコントローラ９を用いることによっても、プレイヤは、ボタンやスティックを操作することと、コントローラ自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【００６１】
図７に示すように、ハウジング８０の上面（Ｙ２軸負方向側の面）の先端側（Ｚ２軸正側）には、アナログジョイスティック８１が設けられる。また、図示されないが、ハウジング８０の先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向（図７に示すＹ２軸方向）に並べて、ＣボタンおよびＺボタンが設けられる。アナログジョイスティック８１および各ボタン（ＣボタンおよびＺボタン）には、ゲーム装置３が実行するゲームプログラムに応じてそれぞれ適宜の機能が割り当てられる。なお、アナログジョイスティック８１および各ボタンを包括的に「操作部８２（図８参照）」と呼ぶことがある。
【００６２】
また、図７では示されないが、サブコントローラ９は、ハウジング８０の内部に加速度センサ（図８に示す加速度センサ８３）を有している。本実施形態においては、加速度センサ８３は、メインコントローラ８の加速度センサ３７と同様のものが用いられる。ただし、加速度センサ８３は、加速度センサ３７とは異なるものであってもよく、例えば所定の１軸または２軸の加速度を検出するものであってもよい。
【００６３】
また、図７に示すように、ハウジング８０の後端にはケーブルの一端が接続されている。図７では示されないが、ケーブルの他端にはコネクタ（図８に示すコネクタ８４）が接続される。このコネクタはメインコントローラ８のコネクタ３３と接続可能である。つまり、コネクタ３３とコネクタ８４とを接続することによって、メインコントローラ８とサブコントローラ９とが接続される。
【００６４】
なお、図３〜図７に示したメインコントローラ８およびサブコントローラ９の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、メインコントローラ８の撮像手段による撮像方向はＺ１軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００６５】
図８は、コントローラ５の構成を示すブロック図である。図８に示すように、メインコントローラ８は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、撮像情報演算部３５、通信部３６、加速度センサ３７、およびジャイロセンサ４８を備えている。また、サブコントローラ９は、操作部８２および加速度センサ８３を備えている。コントローラ５は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置３へ送信するものである。なお、以下では、コントローラ５が送信する操作データを「コントローラ操作データ」と呼び、端末装置７が送信する操作データを「端末操作データ」と呼ぶことがある。
【００６６】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を表す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００６７】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００６８】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置７のマーカ部５５およびマーカ装置６は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、撮像対象（マーカ部５５および／またはマーカ装置６）の画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００６９】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００７０】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ３７は、例えば静電容量式のＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍ）型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００７１】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ１軸方向）、左右方向（図３に示すＸ１軸方向）および前後方向（図３に示すＺ１軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ５を基準に設定されるＸ１Ｙ１Ｚ１座標系（コントローラ座標系）における３次元のベクトルとして表される。
【００７２】
加速度センサ３７が検出した加速度を表すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は取得された加速度データを用いてコントローラ５の向きや動きを算出することができる。本実施形態では、ゲーム装置３は、取得された加速度データに基づいてコントローラ５の姿勢や傾斜角度等を算出する。
【００７３】
なお、加速度センサ３７（後述する加速度センサ６３についても同様）から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）またはコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かによって、コントローラ５が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ５がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ５の傾斜方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾斜角度または姿勢を判定することができる。
【００７４】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００７５】
ジャイロセンサ４８は、３軸（本実施形態では、Ｘ１Ｙ１Ｚ１軸）回りの角速度を検出する。本明細書では、コントローラ５の撮像方向（Ｚ１軸正方向）を基準として、Ｘ１軸回りの回転方向をピッチ方向、Ｙ１軸回りの回転方向をヨー方向、Ｚ１軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ４８は、３軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ４８は、３軸ジャイロセンサであってもよいし、２軸ジャイロセンサと１軸ジャイロセンサとを組み合わせて３軸周りの角速度を検出するものであってもよい。ジャイロセンサ４８で検出された角速度を表すデータは、通信部３６へ出力される。また、ジャイロセンサ４８は１軸または２軸回りの角速度を検出するものであってもよい。
【００７６】
また、サブコントローラ９の操作部８２は、上述したアナログジョイスティック８１、ＣボタンおよびＺボタンを含む。操作部８２は、アナログジョイスティック８１に対する傾倒方向および傾倒量を表すスティックデータ（サブスティックデータと呼ぶ）と、各ボタンに対する入力状態（各ボタンが押下されたか否か）を表す操作ボタンデータ（サブ操作ボタンデータと呼ぶ）とを、コネクタ８４を介してメインコントローラ８へ出力する。
【００７７】
また、サブコントローラ９の加速度センサ８３は、メインコントローラ８の加速度センサ３７と同様のセンサであり、サブコントローラ９の加速度（重力加速度を含む）を検出する、すなわち、サブコントローラ９に加わる力（重力を含む）を検出する。加速度センサ８３は、当該加速度センサ８３の検出部に加わっている加速度のうち、所定の３軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。検出された加速度を表すデータ（サブ加速度データと呼ぶ）は、コネクタ８４を介してメインコントローラ８へ出力される。
【００７８】
以上のように、サブコントローラ９は、上記サブスティックデータ、サブ操作ボタンデータ、およびサブ加速度データを含むサブコントローラデータをメインコントローラ８へ出力する。
【００７９】
メインコントローラ８の通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。
【００８０】
サブコントローラ９からのサブコントローラデータは、マイコン４２に入力され、一時的にメモリ４３に格納される。また、操作部３２、撮像情報演算部３５、加速度センサ３７、およびジャイロセンサ４８からマイコン４２へ出力されたデータ（メインコントローラデータと呼ぶ）は、一時的にメモリ４３に格納される。これらのメインコントローラおよびサブコントローラデータは、操作データ（コントローラ操作データ）としてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３のコントローラ通信モジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側のコントローラ通信モジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、コントローラ５から取得した操作データを用いてゲーム処理を行う。なお、通信部３６からコントローラ通信モジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で操作データをゲーム装置３のコントローラ通信モジュール１９へ出力する。
【００８１】
以上のように、メインコントローラ８は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。サブコントローラ９は、自機に対する操作を表す操作データとして、加速度データ、サブスティックデータ、および操作ボタンデータを送信可能である。また、ゲーム装置３は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ５を用いることによって、ユーザは、各操作ボタンを押下するという従来の一般的なゲーム操作に加えて、コントローラ５自体を動かすゲーム操作を行うことができる。例えば、メインコントローラ８および／またはサブコントローラ９を任意の姿勢に傾ける操作、メインコントローラ８によって画面上の任意の位置を指示する操作、および、メインコントローラ８および／またはサブコントローラ９自体を動かす操作等を行うことが可能となる。
【００８２】
また、本実施形態において、コントローラ５は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【００８３】
［４．端末装置７の構成］
次に、図９〜図１１を参照して、端末装置７の構成について説明する。図９は、端末装置７の外観構成を示す図である。図９における（ａ）図は端末装置７の正面図であり、（ｂ）図は上面図であり、（ｃ）図は右側面図であり、（ｄ）図は下面図である。また、図１０は、ユーザが端末装置７を把持した様子を示す図である。
【００８４】
図９に示されるように、端末装置７は、大略的には横長の長方形の板状形状であるハウジング５０を備える。ハウジング５０は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置７を持って動かしたり、端末装置７の配置位置を変更したりすることができる。
【００８５】
端末装置７は、ハウジング５０の表面にＬＣＤ５１を有する。ＬＣＤ５１は、ハウジング５０の表面の中央付近に設けられる。したがって、ユーザは、図１０に示すようにＬＣＤ５１の両側部分のハウジング５０を持つことによって、ＬＣＤ５１の画面を見ながら端末装置を持って動かすことができる。なお、図１０ではユーザがＬＣＤ５１の左右両側の部分のハウジング５０を持つことで端末装置７を横持ちで（横に長い向きにして）持つ例を示しているが、端末装置７を縦持ちで（縦に長い向きにして）持つことも可能である。
【００８６】
図９の（ａ）図に示すように、端末装置７は、操作手段として、ＬＣＤ５１の画面上にタッチパネル５２を有する。本実施形態では、タッチパネル５２は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル５２はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル５２として、ＬＣＤ５１の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル５２の解像度とＬＣＤ５１の解像度が一致している必要はない。タッチパネル５２に対する入力は通常タッチペンを用いて行われるが、タッチペンに限らずユーザの指でタッチパネル５２に対する入力をすることも可能である。なお、ハウジング５０には、タッチパネル５２に対する操作を行うために用いられるタッチペンを収納するための収納穴が設けられていてもよい。このように、端末装置７はタッチパネル５２を備えるので、ユーザは、端末装置７を動かしながらタッチパネル５２を操作することができる。つまりユーザは、ＬＣＤ５１の画面を動かしつつ、その画面に対して直接（タッチパネル５２によって）入力を行うことができる。
【００８７】
図９に示すように、端末装置７は、操作手段として、２つのアナログスティック５３Ａおよび５３Ｂと、複数のボタン５４Ａ〜５４Ｌとを備えている。各アナログスティック５３Ａおよび５３Ｂは、方向を指示するデバイスである。各アナログスティック５３Ａおよび５３Ｂは、ユーザの指で操作されるスティック部がハウジング５０の表面に対して任意の方向（上下左右および斜め方向の任意の角度）にスライド（または傾倒）することができるように構成されている。また、左アナログスティック５３ＡはＬＣＤ５１の画面の左側に、右アナログスティック５３ＢはＬＣＤ５１の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、図１０に示すように、各アナログスティック５３Ａおよび５３Ｂは、ユーザが端末装置７の左右部分を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置７を持って動かす場合においても各アナログスティック５３Ａおよび５３Ｂを容易に操作することができる。
【００８８】
各ボタン５４Ａ〜５４Ｌは、所定の入力を行うための操作手段である。以下に示すように、各ボタン５４Ａ〜５４Ｌは、ユーザが端末装置７の左右部分を把持した状態で操作可能な位置に設けられる（図１０参照）。したがって、ユーザは、端末装置７を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【００８９】
図９の（ａ）図に示すように、ハウジング５０の表面には、各操作ボタン５４Ａ〜５４Ｌのうち、十字ボタン（方向入力ボタン）５４Ａと、ボタン５４Ｂ〜５４Ｈとが設けられる。つまり、これらのボタン５４Ａ〜５４Ｈは、ユーザの親指で操作可能な位置に配置されている（図１０参照）。
【００９０】
十字ボタン５４Ａは、ＬＣＤ５１の左側であって、左アナログスティック５３Ａの下側に設けられる。つまり、十字ボタン５４Ａはユーザの左手で操作可能な位置に配置されている。十字ボタン５４Ａは、十字の形状を有しており、上下左右の方向を指示することが可能なボタンである。また、ボタン５４Ｂ〜５４Ｄは、ＬＣＤ５１の下側に設けられる。これら３つのボタン５４Ｂ〜５４Ｄは、左右両方の手で操作可能な位置に配置されている。また、４つのボタン５４Ｅ〜５４Ｈは、ＬＣＤ５１の右側であって、右アナログスティック５３Ｂの下側に設けられる。つまり、４つのボタン５４Ｅ〜５４Ｈはユーザの右手で操作可能な位置に配置されている。さらに、４つのボタン５４Ｅ〜５４Ｈは、（４つのボタン５４Ｅ〜５４Ｈの中心位置に対して）上下左右の位置関係となるように配置されている。したがって、端末装置７は、ユーザに上下左右の方向を指示させるためのボタンとして４つのボタン５４Ｅ〜５４Ｈを機能させることも可能である。
【００９１】
また、図９の（ａ）図、（ｂ）図、および（ｃ）図に示すように、第１Ｌボタン５４Ｉおよび第１Ｒボタン５４Ｊは、ハウジング５０の斜め上部分（左上部分および右上部分）に設けられる。具体的には、第１Ｌボタン５４Ｉは、板状のハウジング５０における上側の側面の左端に設けられ、上側および左側の側面から露出している。また、第１Ｒボタン５４Ｊは、ハウジング５０における上側の側面の右端に設けられ、上側および右側の側面から露出している。このように、第１Ｌボタン５４Ｉは、ユーザの左手人差し指で操作可能な位置に配置され、第１Ｒボタン５４Ｊは、ユーザの右手人差し指で操作可能な位置に配置される（図１０参照）。
【００９２】
また、図９の（ｂ）図および（ｃ）図に示すように、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌは、板状のハウジング５０の裏面（すなわちＬＣＤ５１が設けられる表面の反対側の面）に突起して設けられる足部５９Ａおよび５９Ｂに配置される。具体的には、第２Ｌボタン５４Ｋは、ハウジング５０の裏面の左側（表面側から見たときの左側）のやや上方に設けられ、第２Ｒボタン５４Ｌは、ハウジング５０の裏面の右側（表面側から見たときの右側）のやや上方に設けられる。換言すれば、第２Ｌボタン５４Ｋは、表面に設けられる左アナログスティック５３Ａの概ね反対側の位置に設けられ、第２Ｒボタン５４Ｌは、表面に設けられる右アナログスティック５３Ｂの概ね反対側の位置に設けられる。このように、第２Ｌボタン５４Ｋは、ユーザの左手中指で操作可能な位置に配置され、第２Ｒボタン５４Ｌは、ユーザの右手中指で操作可能な位置に配置される（図１０参照）。また、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌは、図９の（ｃ）図に示すように、上記足部５９Ａおよび５９Ｂの斜め上方を向く面に設けられ、斜め上方を向くボタン面を有する。ユーザが端末装置７を把持した場合には中指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌを押下しやすくなる。また、ハウジング５０の裏面に足部が設けられることにより、ユーザはハウジング５０を把持しやすくなり、かつ、足部にボタンが設けられることで、ハウジング５０を把持したまま操作しやすくなる。
【００９３】
なお、図９に示す端末装置７に関しては、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌが裏面に設けられるので、ＬＣＤ５１の画面（ハウジング５０の表面）が上を向いた状態で端末装置７を載置させる場合、画面が完全に水平にはならない場合がある。そのため、他の実施形態においては、ハウジング５０の裏面に３つ以上の足部が形成されてもよい。これによれば、ＬＣＤ５１の画面が上を向いた状態では足部が床面（または他の水平な面）に接することで床面に載置できるので、画面が水平になるように端末装置７を載置することができる。また、着脱可能な足部を追加することで端末装置７を水平に載置するようにしてもよい。
【００９４】
各ボタン５４Ａ〜５４Ｌには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン５４Ａおよびボタン５４Ｅ〜５４Ｈは方向指示操作や選択操作等に用いられてもよいし、各ボタン５４Ｂ〜５４Ｅは決定操作やキャンセル操作等に用いられてもよい。
【００９５】
なお、図示しないが、端末装置７は、端末装置７の電源をオン／オフするための電源ボタンを有している。また、端末装置７は、ＬＣＤ５１の画面表示をオン／オフするためのボタンや、ゲーム装置３との接続設定（ペアリング）を行うためのボタンや、スピーカ（図１１に示すスピーカ６７）の音量を調節するためのボタンを有していてもよい。
【００９６】
図９の（ａ）図に示すように、端末装置７は、マーカ５５Ａおよびマーカ５５Ｂからなるマーカ部（図１１に示すマーカ部５５）をハウジング５０の表面に備えている。マーカ部５５は、どの位置に設けられてもよいが、ここではＬＣＤ５１の上側に設けられる。各マーカ５５Ａおよびマーカ５５Ｂは、マーカ装置６の各マーカ６Ｒおよび６Ｌと同様、１以上の赤外ＬＥＤで構成される。マーカ部５５は、上述のマーカ装置６と同様、コントローラ５（メインコントローラ８）の動き等をゲーム装置３が算出するために用いられる。また、ゲーム装置３はマーカ部５５が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００９７】
端末装置７は、撮像手段であるカメラ５６を備えている。カメラ５６は、所定の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。図９に示すように、本実施形態では、カメラ５６はハウジング５０の表面に設けられる。したがって、カメラ５６は、端末装置７を持っているユーザの顔を撮像することができ、例えばＬＣＤ５１を見ながらゲームを行っている時のユーザを撮像することができる。なお、他の実施形態では、１以上のカメラが端末装置７に設けられてもよい。
【００９８】
なお、端末装置７は、音声入力手段であるマイク（図１１に示すマイク６９）を備えている。ハウジング５０の表面には、マイクロフォン用孔６０が設けられる。マイク６９はこのマイクロフォン用孔６０の奥のハウジング５０内部に設けられる。マイクは、ユーザの音声等、端末装置７の周囲の音を検出する。なお、他の実施形態では、１以上のマイクが端末装置７に設けられてもよい。
【００９９】
端末装置７は、音声出力手段であるスピーカ（図１１に示すスピーカ６７）を備えている。図９の（ｄ）図に示すように、ハウジング５０の下側側面にはスピーカ孔５７が設けられる。スピーカ６７の出力音はこのスピーカ孔５７から出力される。本実施形態では、端末装置７は２つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔５７が設けられる。なお、端末装置７が備えるスピーカの数はいくつであってもよく、上記２つのスピーカに加えて追加のスピーカが端末装置７に設けられてもよい。
【０１００】
また、端末装置７は、他の装置を端末装置７に接続するための拡張コネクタ５８を備えている。本実施形態においては、図９の（ｄ）図に示すように、拡張コネクタ５８は、ハウジング５０の下側側面に設けられる。なお、拡張コネクタ５８に接続される他の装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ（銃型のコントローラ等）やキーボード等の入力装置であってもよい。他の装置を接続する必要がなければ、拡張コネクタ５８は設けられていなくともよい。
【０１０１】
なお、図９に示した端末装置７に関して、各操作ボタンやハウジング５０の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【０１０２】
次に、図１１を参照して、端末装置７の内部構成について説明する。図１１は、端末装置７の内部構成を示すブロック図である。図１１に示すように、端末装置７は、図９に示した構成の他、タッチパネルコントローラ６１、磁気センサ６２、加速度センサ６３、ジャイロセンサ６４、ユーザインタフェースコントローラ（ＵＩコントローラ）６５、コーデックＬＳＩ６６、スピーカ６７、サウンドＩＣ６８、マイク６９、無線モジュール７０、アンテナ７１、赤外線通信モジュール７２、フラッシュメモリ７３、電源ＩＣ７４、電池７５、および、バイブレータ７９を備える。これらの電子部品は、電子回路基板上に実装されてハウジング５０内に収納される。
【０１０３】
ＵＩコントローラ６５は、各種の入出力部に対するデータの入出力を制御するための回路である。ＵＩコントローラ６５は、タッチパネルコントローラ６１、アナログスティック５３（アナログスティック５３Ａおよび５３Ｂ）、操作ボタン５４（各操作ボタン５４Ａ〜５４Ｌ）、マーカ部５５、磁気センサ６２、加速度センサ６３、ジャイロセンサ６４、およびバイブレータ７９に接続される。また、ＵＩコントローラ６５は、コーデックＬＳＩ６６と拡張コネクタ５８に接続される。また、ＵＩコントローラ６５には電源ＩＣ７４が接続され、ＵＩコントローラ６５を介して各部に電力が供給される。電源ＩＣ７４には内蔵の電池７５が接続され、電力が供給される。また、電源ＩＣ７４には、コネクタ等を介して外部電源から電力を取得可能な充電器７６またはケーブルを接続することが可能であり、端末装置７は、当該充電器７６またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置７は、図示しない充電機能を有するクレイドルに端末装置７を装着することで充電を行うようにしてもよい。
【０１０４】
タッチパネルコントローラ６１は、タッチパネル５２に接続され、タッチパネル５２の制御を行う回路である。タッチパネルコントローラ６１は、タッチパネル５２からの信号に基づいて所定の形式のタッチ位置データを生成してＵＩコントローラ６５へ出力する。タッチ位置データは、タッチパネル５２の入力面において入力が行われた位置（タッチパネル５２がマルチタッチ方式である場合は複数の位置であってもよい）の座標を表す。なお、タッチパネルコントローラ６１は、タッチパネル５２からの信号の読み込み、および、タッチ位置データの生成を所定時間に１回の割合で行う。また、ＵＩコントローラ６５からタッチパネルコントローラ６１へは、タッチパネル５２に対する各種の制御指示が出力される。
【０１０５】
アナログスティック５３は、ユーザの指で操作されるスティック部がスライドした（または傾倒した）方向および量を表すスティックデータをＵＩコントローラ６５へ出力する。また、操作ボタン５４は、各操作ボタン５４Ａ〜５４Ｌに対する入力状況（押下されたか否か）を表す操作ボタンデータをＵＩコントローラ６５へ出力する。
【０１０６】
磁気センサ６２は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、ＵＩコントローラ６５へ出力される。また、ＵＩコントローラ６５から磁気センサ６２へは、磁気センサ６２に対する制御指示が出力される。磁気センサ６２に関しては、ＭＩ（磁気インピーダンス）素子、フラックスゲートセンサ、ホール素子、ＧＭＲ（巨大磁気抵抗）素子、ＴＭＲ（トンネル磁気抵抗）素子、あるいはＡＭＲ（異方性磁気抵抗）素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置７が動いた場合には方位データが変化するため、端末装置７の姿勢の変化を算出することができる。
【０１０７】
加速度センサ６３は、ハウジング５０の内部に設けられ、３軸（図９の（ａ）図に示すＸＹＺ軸）方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ６３は、ハウジング５０の長辺方向をＺ軸、ハウジング５０の短辺方向をＸ軸、ハウジング５０の表面に対して垂直な方向をＹ軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはＵＩコントローラ６５へ出力される。また、ＵＩコントローラ６５から加速度センサ６３へは、加速度センサ６３に対する制御指示が出力される。加速度センサ６３は、本実施形態では例えば静電容量式のＭＥＭＳ型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ６３は１軸または２軸方向を検出する加速度センサであってもよい。
【０１０８】
ジャイロセンサ６４は、ハウジング５０の内部に設けられ、上記Ｘ軸、Ｙ軸およびＺ軸の３軸周りの角速度を検出する。検出された角速度を表す角速度データは、ＵＩコントローラ６５へ出力される。また、ＵＩコントローラ６５からジャイロセンサ６４へは、ジャイロセンサ６４に対する制御指示が出力される。なお、３軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ６４はジャイロセンサ４８と同様、２軸ジャイロセンサと１軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ６４は１軸または２軸方向を検出するジャイロセンサであってもよい。
【０１０９】
バイブレータ７９は、例えば振動モータやソレノイドであり、ＵＩコントローラ６５に接続される。ＵＩコントローラ６５の指示によりバイブレータ７９が作動することによって端末装置７に振動が発生する。これによって、端末装置７を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。
【０１１０】
ＵＩコントローラ６５は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データ（端末操作データ）をコーデックＬＳＩ６６に出力する。なお、拡張コネクタ５８を介して端末装置７に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【０１１１】
コーデックＬＳＩ６６は、ゲーム装置３へ送信するデータに対する圧縮処理、および、ゲーム装置３から送信されたデータに対する伸張処理を行う回路である。コーデックＬＳＩ６６には、ＬＣＤ５１、カメラ５６、サウンドＩＣ６８、無線モジュール７０、フラッシュメモリ７３、および赤外線通信モジュール７２が接続される。また、コーデックＬＳＩ６６はＣＰＵ７７と内部メモリ７８を含む。端末装置７はゲーム処理自体を行なわない構成であるが、端末装置７の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ７３に格納されたプログラムを内部メモリ７８に読み出してＣＰＵ７７が実行することで、端末装置７が起動する。また、内部メモリ７８の一部の領域はＬＣＤ５１のためのＶＲＡＭとして使用される。
【０１１２】
カメラ５６は、ゲーム装置３からの指示に従って画像を撮像し、撮像した画像データをコーデックＬＳＩ６６へ出力する。また、コーデックＬＳＩ６６からカメラ５６へは、画像の撮像指示等、カメラ５６に対する制御指示が出力される。なお、カメラ５６は動画の撮影も可能である。すなわち、カメラ５６は、繰り返し撮像を行って画像データをコーデックＬＳＩ６６へ繰り返し出力することも可能である。
【０１１３】
サウンドＩＣ６８は、スピーカ６７およびマイク６９に接続され、スピーカ６７およびマイク６９への音声データの入出力を制御する回路である。すなわち、コーデックＬＳＩ６６から音声データを受け取った場合、サウンドＩＣ６８は当該音声データに対してＤ／Ａ変換を行って得られる音声信号をスピーカ６７へ出力し、スピーカ６７から音を出力させる。また、マイク６９は、端末装置７に伝わる音（ユーザの音声等）を検知して、当該音を示す音声信号をサウンドＩＣ６８へ出力する。サウンドＩＣ６８は、マイク６９からの音声信号に対してＡ／Ｄ変換を行い、所定の形式の音声データをコーデックＬＳＩ６６へ出力する。
【０１１４】
コーデックＬＳＩ６６は、カメラ５６からの画像データ、マイク６９からの音声データ、および、ＵＩコントローラ６５からの操作データを、端末操作データとして無線モジュール７０を介してゲーム装置３へ送信する。本実施形態では、コーデックＬＳＩ６６は、画像データおよび音声データに対して、コーデックＬＳＩ２７と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール７０に出力される。無線モジュール７０にはアンテナ７１が接続されており、無線モジュール７０はアンテナ７１を介してゲーム装置３へ上記送信データを送信する。無線モジュール７０は、ゲーム装置３の端末通信モジュール２８と同様の機能を有している。すなわち、無線モジュール７０は、例えばＩＥＥＥ８０２．１１ｎの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【０１１５】
以上のように、端末装置７からゲーム装置３へ送信される送信データには、操作データ（端末操作データ）、画像データ、および音声データが含まれる。なお、拡張コネクタ５８を介して端末装置７に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。また、赤外線通信モジュール７２は、他の装置との間で例えばＩＲＤＡの規格に従った赤外線通信を行う。コーデックＬＳＩ６６は、赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置３へ送信してもよい。
【０１１６】
また、上述のように、ゲーム装置３から端末装置７へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ７１および無線モジュール７０を介してコーデックＬＳＩ６６に受信される。コーデックＬＳＩ６６は、受信した画像データおよび音声データを伸張する。伸張された画像データはＬＣＤ５１へ出力され、画像がＬＣＤ５１に表示される。また、伸張された音声データはサウンドＩＣ６８へ出力され、サウンドＩＣ６８はスピーカ６７から音を出力させる。
【０１１７】
また、ゲーム装置３から受信されるデータに制御データが含まれる場合、コーデックＬＳＩ６６およびＵＩコントローラ６５は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置７が備える各構成要素（本実施形態では、カメラ５６、タッチパネルコントローラ６１、マーカ部５５、各センサ６２〜６４、赤外線通信モジュール７２、およびバイブレータ７９）に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止（停止）させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置７からゲーム装置３へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部５５は赤外ＬＥＤであるので、制御は単に電力の供給のＯＮ／ＯＦＦでよい。
【０１１８】
以上のように、端末装置７は、タッチパネル５２、アナログスティック５３、および操作ボタン５４といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【０１１９】
また、端末装置７は、端末装置７の動き（位置や姿勢、あるいは、位置や姿勢の変化を含む）を算出するためのセンサとして、磁気センサ６２、加速度センサ６３、およびジャイロセンサ６４を備えるが、他の実施形態においては、これらのセンサのうち１つまたは２つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【０１２０】
また、端末装置７は、カメラ５６およびマイク６９を備える構成であるが、他の実施形態においては、カメラ５６およびマイク６９を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【０１２１】
また、端末装置７は、端末装置７とメインコントローラ８との位置関係（メインコントローラ８から見た端末装置７の位置および／または姿勢等）を算出するための構成としてマーカ部５５を備える構成であるが、他の実施形態ではマーカ部５５を備えていない構成としてもよい。また、他の実施形態では、端末装置７は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、メインコントローラ８がマーカ部を備え、端末装置７が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置６は赤外ＬＥＤに代えて、撮像素子を備える構成としてもよい。
【０１２２】
［５．ゲーム処理の概要］
次に、本実施形態のゲームシステム１において実行されるゲーム処理の概要について説明する。本実施形態におけるゲームは、複数のプレイヤによって行われる鬼ごっこのゲームである。本実施形態では、ゲーム装置３には１台の端末装置７と、複数台のコントローラ５とが無線通信により接続される。例えば、最大で４台のコントローラ５がゲーム装置３に接続可能であり、当該ゲームは最大で５人のプレイヤによって行われてもよい。以下では、端末装置７を操作する第１プレイヤと、コントローラ５ａを操作する第２プレイヤＡと、コントローラ５ｂを操作する第２プレイヤＢの３人でゲームが行われる場合について説明する。なお、本実施形態のゲームでは、サブコントローラ９がメインコントローラ８に接続されてコントローラ５として用いられてもよいし、サブコントローラ９がメインコントローラ８に接続されずにメインコントローラ８単体がコントローラ５として用いられてもよい。
【０１２３】
図１２は、本実施形態のゲームが実行された場合にテレビ２の画面に表示されるゲーム画像の一例を示す図である。図１２に示すように、ゲーム画像９０には、第１キャラクタ９１、第２キャラクタ９２ａ、および第２キャラクタ９２ｂが、仮想のゲーム空間（仮想空間）内に配置される。第１キャラクタ９１は、「鬼」の役割をする仮想キャラクタであり、端末装置７を操作する第１プレイヤによって制御される。第２キャラクタ９２ａは、「鬼」から逃げる仮想キャラクタであり、コントローラ５ａを操作する第２プレイヤＡによって制御される。第２キャラクタ９２ｂは、「鬼」から逃げる仮想キャラクタであり、コントローラ５ｂを操作する第２プレイヤＢによって制御される。以下では、「鬼」から逃げるキャラクタを「第２キャラクタ」と総称することがある。
【０１２４】
なお、テレビ２の画面には、各キャラクタの視点からゲーム空間を見た画像がそれぞれ表示されてもよい。例えば、画面が複数の領域に分割されて、各領域に、それぞれのキャラクタの視点からゲーム空間を見た画像が表示されてもよい。また、テレビ２の画面には、各第２キャラクタの視点からゲーム空間を見た複数の画像のみが表示されてもよい。この場合、端末装置７のＬＣＤ５１には、第１キャラクタの視点からゲーム空間を見た画像、あるいは、ゲーム空間の上方からゲーム空間全体を見た画像が表示されてもよい。
【０１２５】
本実施形態では、第１プレイヤが、端末装置７の十字ボタン５４Ａ、左アナログスティック５３Ａ、あるいは右アナログスティック５３Ｂの何れかを用いて方向を入力することによって、第１キャラクタ９１をゲーム空間内で移動させる。第１プレイヤは、第１キャラクタ９１を移動させることで、第２キャラクタ９２ａおよび第２キャラクタ９２ｂを捕まえる。一方、第２プレイヤＡは、コントローラ５ａ（メインコントローラ８ａ）の十字ボタン３２ａ、あるいはコントローラ５ａ（サブコントローラ９ａ）のアナログジョイスティック８１を用いて方向を入力することで、第２キャラクタ９２ａをゲーム空間内で移動させる。第２プレイヤＡは、第２キャラクタ９２ａが第１キャラクタ９１に捕まらないように、第２キャラクタ９２ａをゲーム空間内で移動させる。第２プレイヤＢも同様に、コントローラ５ｂの十字ボタン３２ａ、あるいはコントローラ５ｂのアナログジョイスティック８１を用いて方向を入力することで、第２キャラクタ９２ａをゲーム空間内で移動させて、第１キャラクタ９１から第２キャラクタ９２ａを逃がす。
【０１２６】
以下では、コントローラ５の十字ボタン３２ａが押された場合の第２キャラクタの制御について説明する。
【０１２７】
図１３は、十字ボタン３２ａが押された場合の入力方向を示す入力ベクトルＳ１を示す図である。図１３に示すように、十字ボタン３２ａに対する入力は、２次元の単位ベクトル（入力ベクトルＳ１）で表される。入力ベクトルＳ１は、右方向をＳｘ軸、上方向Ｓｙ軸としたＳｘＳｙ座標系の座標値（ｓｘ，ｓｙ）で表される。例えば、十字ボタン３２ａの上方向が押された場合、入力ベクトルＳ１は（０，１）となり、十字ボタン３２ａの右方向が押された場合、入力ベクトルＳ１は（１，０）となる。また、十字ボタン３２ａの下方向が押された場合、入力ベクトルＳ１は（０，−１）となり、十字ボタン３２ａの左方向が押された場合、入力ベクトルＳ１は（−１，０）となる。ここでは、これら上下左右の４つの方向を総称して「第１方向」と呼ぶことがある。なお、十字ボタン３２ａが押されていない場合は、入力ベクトルＳ１は（０，０）となる。
【０１２８】
また、十字ボタン３２ａの右上方向が押された場合、入力ベクトルＳ１は（０．７０７，０．７０７）となり、十字ボタン３２ａの右下方向が押された場合、入力ベクトルＳ１は（０．７０７，−０．７０７）となる。また、十字ボタン３２ａの左上方向が押された場合、入力ベクトルＳ１は（−０．７０７，０．７０７）となり、十字ボタン３２ａの左下方向が押された場合、入力ベクトルＳ１は（−０．７０７，−０．７０７）となる。ここでは、これら斜めの４つの方向（右上、右下、左上、左下）を総称して「第２方向」と呼ぶことがある。
【０１２９】
本実施形態では、十字ボタン３２ａのうちのどの方向が押されたかに応じて、コントローラ５が上記入力ベクトルＳ１を算出して当該入力ベクトルＳ１の値がゲーム装置３に出力されるものとする。例えば、十字ボタン３２ａのうちの上方向および右方向のボタンが押されている場合、コントローラ５は、入力ベクトルＳ１の値として（０．７０７，０．７０７）をゲーム装置３に出力する。なお、十字ボタン３２ａのうちの１つの方向（例えば上方向）とその反対方向（例えば下方向）とが同時に押されることはない。また、コントローラ５が十字ボタン３２ａのうちのどの方向が押されているかに関する情報（ＯＮ／ＯＦＦに関する情報）をゲーム装置３に送信し、ゲーム装置３が当該情報に基づいて、入力ベクトルＳ１の値を算出してもよい。
【０１３０】
ゲーム装置３は、コントローラ５から出力された入力ベクトルＳ１（ｓｘ，ｓｙ）に基づいて、仮想スティックベクトルＶを算出する。「仮想スティックベクトル」は、ゲーム装置３において定義される仮想的なアナログスティック（仮想スティック）による入力方向を表す２次元のベクトルである。仮想スティックベクトルＶの長さは、最大で１である。ゲーム装置３は、コントローラ５からの入力ベクトルＳ１をそのまま用いて第２キャラクタの移動を制御せず、入力ベクトルＳ１を仮想スティックベクトルＶに変換してから、当該仮想スティックベクトルＶを用いて第２キャラクタの移動を制御する。仮想スティックベクトルＶは、入力ベクトルＳ１に追従して変化する。例えば、入力ベクトルＳ１が（１，０）から（０．７０７，０．７０７）に変化すると、仮想スティックベクトルＶは、（１，０）から（０．７０７，０．７０７）に所定時間かけて変化する。
【０１３１】
具体的には、入力ベクトルＳ１が第１方向（上下左右の方向）を示す場合、仮想スティックベクトルＶは、現在の仮想スティックベクトルが示す方向から入力ベクトルＳ１が示す方向へ比較的素早く変化する。一方、入力ベクトルＳ１が第２方向（斜め方向；右上、右下、左上、左下の方向）を示す場合、仮想スティックベクトルＶは、現在の仮想スティックベクトルが示す方向から入力ベクトルＳ１が示す方向へ比較的ゆっくりと変化する。
【０１３２】
図１４Ａは、十字ボタン３２ａにおいて行われた入力方向が上方向から右上方向に変化した場合に、仮想スティックベクトルＶが変化する様子を示す図である。図１４Ｂは、十字ボタン３２ａにおいて行われた入力方向が右上方向から上方向に変化した場合に、仮想スティックベクトルＶが変化する様子を示す図である。
【０１３３】
図１４Ａに示すように、入力ベクトルＳ１の値がある時刻ｔ０で（０，１）から（０．７０７，０．７０７）に変化した場合、仮想スティックベクトルＶは、（０，１）から（０．７０７，０．７０７）に即時に変化せず、比較的ゆっくりと変化する。具体的には、入力ベクトルＳ１の値が変化した時刻ｔ０から所定時間（ｔｄ）が経過した時刻ｔ１（ｔ０＋ｔｄ）では、仮想スティックベクトルはＶ１となる。さらに時間が経過して時刻ｔ２（ｔ０＋２ｔｄ）では、仮想スティックベクトルはＶ２となり、時刻ｔ３（ｔ０＋３ｔｄ）では、仮想スティックベクトルはＶ３となる。そして、例えば、時刻ｔ４（ｔ０＋４ｔｄ）で、仮想スティックベクトルの方向は、右上方向を示す入力ベクトルＳ１（０．７０７，０．７０７）の方向と一致する。
【０１３４】
一方、図１４Ｂに示すように、入力ベクトルＳ１の値がある時刻ｔ０で（０．７０７，０．７０７）から（０，１）に変化した場合、仮想スティックベクトルＶは、比較的早く変化する。具体的には、入力ベクトルＳ１の値が変化した時刻ｔ０から所定時間（ｔｄ）が経過した時刻ｔ１（ｔ０＋ｔｄ）では、仮想スティックベクトルはＶ１’となる。そして、例えば、時刻ｔ２（ｔ０＋２ｔｄ）で仮想スティックベクトルの方向は、上方向を示す入力ベクトルＳ１（０，１）の方向と一致する。
【０１３５】
入力ベクトルＳ１に基づいて算出された仮想スティックベクトルＶに応じて、第２キャラクタの移動方向が決定される。具体的には、仮想スティックベクトルＶが示す方向と、第２キャラクタが画面に表示された場合の表示上の移動方向とが一致するように、第２キャラクタのゲーム空間における移動方向が決定される。例えば、仮想スティックベクトルＶが示す方向が上方向（１，０）の場合、第２キャラクタは画面の奥方向（仮想カメラの撮像方向）に移動する。また、例えば、仮想スティックベクトルＶが示す方向が右方向（０，１）の場合、第２キャラクタは画面の右方向に移動する。また、第２キャラクタの移動速度は、仮想スティックベクトルＶの長さに応じて設定される。なお、仮想スティックベクトルＶの算出方法の詳細については、後述する。
【０１３６】
このように本実施形態では、十字ボタン３２ａに対する入力に応じた入力ベクトルＳ１の値に追従して仮想スティックベクトルＶが変化する。具体的には、コントローラ５から出力された入力ベクトルＳ１が上下左右の方向（第１方向）を示す場合、仮想スティックベクトルＶは、現在の方向から当該入力ベクトルＳ１が示す方向へ比較的素早く変化する。一方で、コントローラ５から出力された入力ベクトルＳ１が斜め方向（第２方向）を示す場合、仮想スティックベクトルＶは、現在の方向から当該入力ベクトルＳ１が示す方向へ比較的ゆっくりと変化する。
【０１３７】
これにより、第２プレイヤが十字ボタン３２ａを用いて第２キャラクタを移動させる場合でも、意図した方向に移動させやすい。すなわち、第２プレイヤが、十字ボタン３２ａの上方向を押して第２キャラクタを画面の奥方向に移動させている状態から、第２キャラクタの進行方向を少し右に曲げたい場合、第２プレイヤは十字ボタン３２ａの右上方向を押すことにより、仮想スティックベクトルＶが徐々に右斜め上方向に変化する。これにより、第２キャラクタを右方向に滑らかに旋回させることができる。一方、例えば、第２キャラクタが右方向に旋回している間に、第２キャラクタを画面の奥方向に直進させる場合、第２プレイヤは、十字ボタン３２ａの上方向を押す。この場合において、仮想スティックベクトルＶがゆっくりと上方向に変化してしまうと、第２キャラクタは、旋回している状態から画面の奥方向に直進する状態にゆっくりと変化する。このため、第２プレイヤが意図したよりも大きく第２キャラクタが旋回してしまい、第２プレイヤが意図した方向に第２キャラクタを直進させることができない。しかしながら、本実施形態では、十字ボタン３２ａの上方向が押された場合、仮想スティックベクトルＶが素早く上方向に変化するため、第２プレイヤは、第２キャラクタを意図した通りに直進させることができる。
【０１３８】
なお、アナログジョイスティック８１に対する入力があった場合、コントローラ５は、入力ベクトルＳ２の値（ｓｘ２，ｓｙ２）をゲーム装置３に出力する。入力ベクトルＳ２は、アナログジョイスティック８１の入力方向（上下左右を含む任意の方向）を示す２次元の単位ベクトルである。ｓｘ２およびｓｙ２は、それぞれ任意の値を取り得る。アナログジョイスティック８１に対する入力が無い場合、入力ベクトルＳ２の値は（０，０）となる。ゲーム装置３は、コントローラ５から長さが０でない入力ベクトルＳ２が出力された場合、当該入力ベクトルＳ２を上記仮想スティックベクトルＶとして設定する。
【０１３９】
なお、上記では、コントローラ５の十字ボタン３２ａが操作された場合について説明したが、端末装置７の十字ボタン５４Ａが操作された場合も同様である。すなわち、端末装置７の十字ボタン５４Ａが操作された場合、十字ボタン５４Ａに対応する仮想スティックベクトルが算出されて、当該仮想スティックベクトルに基づいて第１キャラクタ９１の移動が制御される。
【０１４０】
［６．ゲーム処理の詳細］
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図１５は、ゲーム処理において用いられる各種データを示す図である。図１５において、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図１５に示すように、ゲーム装置３のメインメモリには、ゲームプログラム１００、コントローラ操作データ１１０、端末操作データ１２０、および処理用データ１３０が記憶される。なお、メインメモリには、図１５に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
【０１４１】
ゲームプログラム１００は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム１００は、光ディスク４に代えて、フラッシュメモリ１７やゲーム装置３の外部装置から（例えばインターネットを介して）取得されてもよい。また、ゲームプログラム１００に含まれる一部（例えば、上記仮想スティックベクトルを算出するためのプログラム）については、ゲーム装置３内に予め記憶されていてもよい。
【０１４２】
コントローラ操作データ１１０は、コントローラ５に対するユーザ（第２プレイヤ）の操作を表すデータであり、コントローラ５に対する操作に基づいてコントローラ５から出力（送信）される。コントローラ操作データ１１０は、コントローラ５から送信されてゲーム装置３において受信され、メインメモリに記憶される。コントローラ操作データ１１０は、十字ボタンデータ１１１、サブスティックデータ１１２を含む。なお、コントローラ操作データ１１０は、これらのデータの他、その他の操作ボタン（３２ｂ〜３２ｉ等）が押されたか否かを示すデータ、コントローラ５の加速度センサ３７によって検出された加速度を表すメイン加速度データ、コントローラ５の画像処理回路４１によって算出される座標を示すマーカ座標データ等を含む。また、ゲーム装置３は、複数のコントローラ５（具体的には、コントローラ５ａおよび５ｂ）から操作データを取得するため、各コントローラ５からそれぞれ送信されてくる各コントローラ操作データ１１０をメインメモリにそれぞれ記憶する。最新の（最後に受信された）データから所定個数のコントローラ操作データ１１０が、コントローラ５毎に、時系列に記憶されてもよい。
【０１４３】
十字ボタンデータ１１１は、コントローラ５の十字ボタン３２ａの４方向または斜め方向のうちの何れの方向が押されたかを表すデータである。ここでは、十字ボタンデータ１１１は、上記入力ベクトルＳ１（ｓｘ，ｓｙ）を表すデータである。
【０１４４】
サブスティックデータ１１２は、コントローラ５（サブコントローラ９）のアナログジョイスティック８１に対する操作を表すデータである。具体的には、サブスティックデータ１１２は、アナログジョイスティック８１が検出した入力方向（傾倒方向）を示す２次元の入力ベクトルＳ２（ｓｘ２，ｓｙ２）を表すデータである。
【０１４５】
端末操作データ１２０は、端末装置７に対するユーザ（第１プレイヤ）の操作を表すデータであり、端末装置７に対する操作に基づいて端末装置７から出力（送信）される。端末操作データ１２０は、端末装置７から送信されてゲーム装置３において受信され、メインメモリに記憶される。端末操作データ１２０は、十字ボタンデータ１２１、スティックデータ１２２を含む。なお、端末操作データ１２０は、これらのデータの他、各操作ボタンが押されたか否かを示すデータ、タッチパネル５２のタッチ位置を示すタッチデータ、端末装置７の加速度センサ６３によって検出された加速度を表す加速度データ、端末装置７の磁気センサ６２によって検出された方位を示す方位データデータ等を含む。また、ゲーム装置３は、複数の端末装置７から端末操作データを取得する場合、各端末装置７からそれぞれ送信されてくる各端末操作データ１２０をメインメモリにそれぞれ記憶してもよい。
【０１４６】
十字ボタンデータ１２１は、端末装置７の十字ボタン５４Ａの４方向または斜め方向の何れの方向が押されたかを表すデータである。ここでは、十字ボタンデータ１２１は、十字ボタン５４Ａの入力方向を示すベクトルを表すデータである。
【０１４７】
スティックデータ１２２は、端末装置７の左アナログスティック５３Ａあるいは右アナログスティック５３Ｂに対する操作を示すデータである。具体的には、スティックデータ１１２は、アナログスティック５３に対して行われた入力方向（スライド方向または傾倒方向）を示す２次元のベクトルを表すデータである。
【０１４８】
処理用データ１３０は、後述するゲーム処理（図１６）において用いられるデータである。処理用データ１３０は、仮想スティックデータ１３１、キャラクタデータ１３２、追従パラメータ１３３を含む。なお、図１５に示すデータの他、処理用データ１３０は、ゲームに登場する各種オブジェクトに設定される各種パラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【０１４９】
仮想スティックデータ１３１は、上記仮想スティックベクトルＶ（Ｖｘ，Ｖｙ）を表すデータである。メインメモリには、各コントローラ５および端末装置７に対応する仮想スティックデータが記憶される。すなわち、メインメモリには、コントローラ５ａに対応する仮想スティックデータ、コントローラ５ｂに対応する仮想スティックデータ、および端末装置７に対応する仮想スティックデータが記憶される。
【０１５０】
キャラクタデータ１３２は、各キャラクタのゲーム空間における位置および姿勢を表すデータである。
【０１５１】
追従パラメータ１３３は、仮想スティックベクトルＶを算出するための追従パラメータＫである。
【０１５２】
次に、ゲーム装置３において実行されるゲーム処理の詳細を、図１６および図１７を用いて説明する。図１６は、ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１６に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、ゲーム装置３においては、電源投入後にゲームプログラムがすぐに実行される構成であってもよいし、電源投入後にまず所定のメニュー画面を表示する内蔵プログラムが実行され、その後例えばユーザによるメニュー画面に対する選択操作によってゲームの開始が指示されたことに応じてゲームプログラムが実行される構成であってもよい。
【０１５３】
なお、図１６および図１７に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数や定数の値等も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をＣＰＵ１０が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、ＣＰＵ１０以外のプロセッサや専用回路が実行するようにしてもよい。
【０１５４】
まず、ステップＳ１１において、ＣＰＵ１０は初期処理を実行する。初期処理は、仮想のゲーム空間を構築し、ゲーム空間に登場する各オブジェクト（第１、第２キャラクタや仮想カメラ、その他のオブジェクト等）を初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。また、初期処理では、仮想スティックデータ１３１が初期化される。すなわち、仮想スティックベクトルＶが（０，０）に初期化される。
【０１５５】
また、ステップＳ１１の処理以降、ステップＳ１２〜Ｓ１７の一連の処理からなる処理ループが所定時間（１フレーム時間。例えば１／６０秒）に１回の割合で繰り返し実行される。
【０１５６】
ステップＳ１２において、ＣＰＵ１０は、端末装置７および２つのコントローラ５から送信されてメインメモリに記憶されている操作データ（入力ベクトルＳ１、入力ベクトルＳ２等）をそれぞれ取得する。端末装置７および各コントローラ５は操作データ（端末操作データおよびコントローラ操作データ）をゲーム装置３へ繰り返し送信する。ゲーム装置３においては、端末通信モジュール２８が端末操作データを逐次受信し、受信された端末操作データが入出力プロセッサ１１ａによってメインメモリに逐次記憶される。また、コントローラ通信モジュール１９が各コントローラ操作データを逐次受信し、受信された各コントローラ操作データが入出力プロセッサ１１ａによってメインメモリに逐次記憶される。コントローラ５とゲーム装置３との間における送受信の間隔、および、端末装置７とゲーム装置３との間における送受信の間隔はゲームの処理時間よりも短い方が好ましく、例えば２００分の１秒である。ステップＳ２においては、ＣＰＵ１０は、最新のコントローラ操作データ１１０および最新の端末操作データ１２０をメインメモリから読み出す。ステップＳ１２の次にステップＳ１３の処理が実行される。
【０１５７】
ステップＳ１３において、ＣＰＵ１０は方向設定処理を実行する。方向設定処理は、各仮想キャラクタの移動方向を算出するための処理であり、上記仮想スティックベクトルＶを設定する処理である。ステップＳ１３の方向設定処理は、各キャラクタに対応する入力装置、すなわち、端末装置７、コントローラ５ａ、コントローラ５ｂのそれぞれに対して行われる。なお、以下では、コントローラ５に対応する仮想スティックベクトルの設定について説明するが、端末装置７に対しても同様の処理が行われることによって、端末装置７に対応する仮想スティックベクトルが設定される。以下、図１７を参照して、方向設定処理の詳細について説明する。
【０１５８】
図１７は、図１６に示す方向設定処理（ステップＳ１３）の詳細な流れを示すフローチャートである。
【０１５９】
ステップＳ２１において、ＣＰＵ１０は、十字ボタン３２ａおよびアナログジョイスティック８１が無入力状態か否かを判定する。具体的には、ＣＰＵ１０は、十字ボタンデータ１１１およびサブスティックデータ１１２を参照して、コントローラ５の十字ボタン３２ａおよびアナログジョイスティック８１に対する入力がなかったか否かを判定する。より具体的には、ステップＳ１２で取得した十字ボタン３２ａの入力ベクトルＳ１が（０，０）であり、かつ、アナログジョイスティック８１の入力ベクトルＳ２が（０，０）である場合、ＣＰＵ１０は、無入力状態であると判定する。ＣＰＵ１０は、無入力状態であると判定した場合、次にステップＳ２２の処理を実行する。一方、ＣＰＵ１０は、無入力状態でないと判定した場合、次にステップＳ２３の処理を実行する。
【０１６０】
ステップＳ２２において、ＣＰＵ１０は、仮想スティックベクトルＶの長さを徐々に小さくする。ステップＳ２２の処理は、十字ボタン３２ａおよびアナログジョイスティック８１に対する入力がないため、仮想スティックベクトルＶの長さを０に近づけるための処理である。具体的には、ＣＰＵ１０は、仮想スティックデータ１３１で示される仮想スティックベクトルＶ（Ｖｘ、Ｖｙ）の長さＬｅｎが、予め定められた値ｄよりも小さければ、仮想スティックベクトルＶの長さＬｅｎを０に設定する（すなわち、ＶｘおよびＶｙに０を設定する）。一方、仮想スティックベクトルＶ（Ｖｘ、Ｖｙ）の長さＬｅｎが、予め定められた値ｄ以上であれば、ＣＰＵ１０は、以下の式（１）および式（２）に基づいて、仮想スティックベクトルＶ（Ｖｘ、Ｖｙ）を算出する。
Ｖｘ←Ｖｘ−Ｖｘ×ｄ／Ｌｅｎ      （１）
Ｖｙ←Ｖｙ−Ｖｙ×ｄ／Ｌｅｎ      （２）
上記式（１）および式（２）に基づいて更新された仮想スティックベクトルＶは、仮想スティックデータ１３１としてメインメモリに記憶される。ＣＰＵ１０は、ステップＳ２２の処理の後、図１７に示す方向設定処理を終了する。
【０１６１】
一方、ステップＳ２３において、ＣＰＵ１０は、サブスティックデータ１１２を参照して、アナログジョイスティック８１に対する入力があったか否かを判定する。具体的には、ＣＰＵ１０は、ステップＳ１２で取得した入力ベクトルＳ２の長さが０か否かを判定する。アナログジョイスティック８１に対する入力があった場合、ＣＰＵ１０は、次にステップＳ２４の処理を実行する。アナログジョイスティック８１に対する入力が無かった場合、ＣＰＵ１０は、次にステップＳ２５の処理を実行する。
【０１６２】
ステップＳ２４において、ＣＰＵ１０は、ステップＳ１２で取得した入力ベクトルＳ２を仮想スティックベクトルＶとして設定し、メインメモリに記憶する。ＣＰＵ１０は、ステップＳ２４の処理の後、図１７に示す方向設定処理を終了する。
【０１６３】
ステップＳ２５において、ＣＰＵ１０は、十字ボタン３２ａが検出した入力方向が斜め方向か否かを判定する。ステップＳ２５は、ステップＳ２１およびステップＳ２３において判定結果が何れもＮｏである場合、すなわち、十字ボタン３２ａに対する入力が行われている場合に、実行される処理である。具体的には、ＣＰＵ１０は、十字ボタンデータ１１１を参照して、入力ベクトルＳ１が斜め方向（第２方向；右上、右下、左下、左上の何れかの方向）を示すか否かを判定する。判定結果が否定の場合、ＣＰＵ１０は、次にステップＳ２６の処理を実行する。判定結果が肯定の場合、ＣＰＵ１０は、次にステップＳ２７の処理を実行する。
【０１６４】
ステップＳ２６において、ＣＰＵ１０は、追従パラメータＫを算出するのためのパラメータＫ１およびＫ２を設定する。具体的には、ＣＰＵ１０は、Ｋ１に０．５を、Ｋ２に２．０を設定する。ここで、追従パラメータＫは、仮想スティックベクトルＶを入力ベクトルＳ１にどの程度近づけるかを示すパラメータであり、後述するステップＳ２９の処理において用いられるパラメータである。また、Ｋ１は、Ｋの最小値であり、Ｋ２はＫの最大値である。ステップＳ２６の処理は、十字ボタン３２ａへの入力が斜め方向でない、すなわち、十字ボタン３２ａが示す４方向の何れかの方向（第１方向；上下左右の何れかの方向）である場合に実行される。このため、仮想スティックベクトルＶを入力ベクトルＳ１に素早く近づけるために（近づける度合いを高くするために）、Ｋ１およびＫ２が上記の値に設定される。ステップＳ２６の処理の後、ＣＰＵ１０は、次にステップＳ２８の処理を実行する。
【０１６５】
ステップＳ２７において、ＣＰＵ１０は、追従パラメータＫの算出のためのパラメータＫ１およびＫ２を設定する。具体的には、ＣＰＵ１０は、Ｋ１に０．０を、Ｋ２に１．０を設定する。ステップＳ２７の処理は、十字ボタン３２ａへの入力が、斜め方向（第２方向；右上、右下、左上、左下の何れかの方向）である場合に実行される。このため、仮想スティックベクトルＶを入力ベクトルＳ１にゆっくり近づけるために（近づける度合いを低くするために）、Ｋ１およびＫ２が上記の値に設定される。ステップＳ２７の処理の後、ＣＰＵ１０は、次にステップＳ２８の処理を実行する。
【０１６６】
ステップＳ２８において、ＣＰＵ１０は、仮想スティックデータ１３１および十字ボタンデータ１１１を参照して、仮想スティックベクトルＶと入力ベクトルＳ１との内積値ｄｐを算出する。ＣＰＵ１０は、次にステップＳ２９の処理を実行する。
【０１６７】
ステップＳ２９において、ＣＰＵ１０は、追従パラメータＫを算出する。具体的には、ＣＰＵ１０は、以下の式（３）に基づいて、追従パラメータＫを算出する。
Ｋ←Ｋ１＋（Ｋ２−Ｋ１）×（１−ｄｐ）／２      （３）
【０１６８】
ここで、ｄｐは、ステップＳ２８で算出された仮想スティックベクトルＶと入力ベクトルＳ１との内積値である。また、Ｋ１およびＫ２は、ステップＳ２６またはステップＳ２７で設定された値である。例えば、内積値ｄｐが１の場合、すなわち、仮想スティックベクトルＶと入力ベクトルＳ１との間の角度が０度の場合、ＫはＫ１となって最小の値となる。また、内積値ｄｐが−１の場合、すなわち、仮想スティックベクトルＶと入力ベクトルＳ１との間の角度が１８０度の場合、ＫはＫ２となって最大の値となる。上記式（３）により、入力ベクトルＳ１が示すプレイヤの入力方向が、現在の仮想スティックベクトルＶが示す方向と一致するほど追従パラメータＫの値が最小値に近づく。逆に、入力ベクトルＳ１が示す入力方向が、現在の仮想スティックベクトルＶが示す方向と異なるほど（反対方向であるほど）追従パラメータＫの値が最大値に近づく。すなわち、入力ベクトルＳ１が示す入力方向が、現在の仮想スティックベクトルＶが示す方向と異なるほど、仮想スティックベクトルＶの方向が入力ベクトルＳ１の方向により早く近づく。ＣＰＵ１０は、次にステップＳ３０の処理を実行する。
【０１６９】
ステップＳ３０において、ＣＰＵ１０は、現在の仮想スティックベクトルＶと、入力ベクトルＳ１と、追従パラメータＫとに基づいて、仮想スティックベクトルＶを更新する。具体的には、ＣＰＵ１０は、以下の式（４）および式（５）に基づいて、仮想スティックベクトルＶを算出する。
Ｖｘ←Ｖｘ＋ｓｘ×Ｋ      （４）
Ｖｙ←Ｖｙ＋ｓｙ×Ｋ      （５）
【０１７０】
上記式（４）および式（５）によって新たなＶｘ，Ｖｙが算出されることにより、仮想スティックベクトルＶが更新される。式（４）および式（５）から明らかなように、追従パラメータＫの値が大きいほど、仮想スティックベクトルＶは入力ベクトルＳ１により近づく。ＣＰＵ１０は、次にステップＳ３１の処理を実行する。
【０１７１】
ステップＳ３１において、ＣＰＵ１０は、仮想スティックベクトルＶの長さが１より大きければ、仮想スティックベクトルＶを正規化する。具体的には、ＣＰＵ１０は、まず、ステップＳ３０で算出した仮想スティックベクトルＶの長さが１より大きいか否かを判定する。そして、ＣＰＵ１０は、仮想スティックベクトルＶの長さが１より大きければ、仮想スティックベクトルＶの長さが１になるように仮想スティックベクトルＶを正規化する。ＣＰＵ１０は、仮想スティックベクトルＶの長さが１以下であれば、仮想スティックベクトルＶを正規化しない。ステップＳ３１の処理の後、ＣＰＵ１０は、図１７に示す方向設定処理を終了する。
【０１７２】
図１６に戻り、ＣＰＵ１０は、次にステップＳ１４の処理を実行する。ステップＳ１４において、ＣＰＵ１０は、ゲーム処理を実行する。具体的には、ＣＰＵ１０は、ステップＳ１３において設定された仮想スティックベクトルＶに基づいて、各キャラクタをゲーム空間内で移動させる。例えば、ＣＰＵ１０は、コントローラ５ａに対応する仮想スティックベクトルＶに基づいて、第２キャラクタ９２ａをゲーム空間内で移動させる。また、例えば、ＣＰＵ１０は、端末装置７に対応する仮想スティックベクトルに基づいて、第１キャラクタ９１をゲーム空間内で移動させる。さらに、ＣＰＵ１０は、各キャラクタの移動に応じたゲーム処理を実行する。例えば、ＣＰＵ１０は、移動後の第１キャラクタ９１と第２キャラクタ９２との距離に基づいて、第１キャラクタ９１が第２キャラクタ９２を捕まえたか否かを判定し、判定結果に応じた処理を実行する。ＣＰＵ１０は、次にステップＳ１５の処理を実行する。
【０１７３】
ステップＳ１５において、ＣＰＵ１０は、画像の生成処理を実行する。具体的には、ＣＰＵ１０は、ゲーム空間に配置された仮想カメラでゲーム空間を撮像することにより、テレビ２に表示される画像（テレビ用ゲーム画像）を生成する。なお、各キャラクタに対応する複数の仮想カメラが設定される場合、複数の仮想カメラによって生成された複数の画像を含む１つのテレビ用ゲーム画像が生成される。また、ＣＰＵ１０は、端末装置７に表示される画像（端末用ゲーム画像）を生成してもよい。この場合において、端末用ゲーム画像は、テレビ用ゲーム画像と異なっていてもよい。ＣＰＵ１０は、次にステップＳ１６の処理を実行する。
【０１７４】
ステップＳ１６において、ＣＰＵ１０は、ステップＳ１５で生成した画像（テレビ用ゲーム画像）をテレビ２に出力する。また、テレビ用ゲーム画像と共に音声データがテレビ２へ出力され、テレビ２のスピーカ２ａからゲーム音声が出力される。なお、ＣＰＵ１０は、端末用ゲーム画像を生成する場合、当該画像を端末装置７に対して無線で送信してもよい。この場合において、ＣＰＵ１０は、ステップＳ１５で生成した端末用ゲーム画像をコーデックＬＳＩ２７に送り、当該コーデックＬＳＩ２７は、端末用ゲーム画像に対して所定の圧縮処理を行う。圧縮処理が施された画像のデータは、端末通信モジュール２８によってアンテナ２９を介して端末装置７へ送信される。端末装置７は、ゲーム装置３から送信されてくる画像のデータを無線モジュール７０によって受信する。コーデックＬＳＩ６６は、受信された画像データに対して所定の伸張処理を行う。伸張処理が行われた画像データはＬＣＤ５１に出力される。これによって、端末用ゲーム画像がＬＣＤ５１に表示される。また、端末用ゲーム画像と共に音声データが端末装置７へ送信され、端末装置７のスピーカ６７からゲーム音声が出力されてもよい。ＣＰＵ１０は、次にステップＳ１７の処理を実行する。
【０１７５】
ステップＳ１７において、ＣＰＵ１０は、ゲームを終了するか否かを判定する。ステップＳ１７の処理は、例えば、全ての第２キャラクタ９２が第１キャラクタ９１に捕まったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等を判定する処理である。ステップＳ１７の判定結果が否定の場合、ステップＳ１２の処理が再度実行される。一方、ステップＳ１７の判定結果が肯定の場合、ＣＰＵ１０は図１６に示すゲーム処理を終了する。
【０１７６】
以上のように、十字ボタンに対する入力に応じた入力ベクトルＳ１に基づいて、仮想スティックベクトルＶが算出される。仮想スティックベクトルＶは、入力ベクトルＳ１に追従して変化する。具体的には、入力ベクトルＳ１が示す方向が十字ボタンの斜め方向である場合は、仮想スティックベクトルＶは比較的ゆっくりと入力ベクトルＳ１に近づく。入力ベクトルＳ１が示す方向が十字ボタンの上下左右の方向である場合は、仮想スティックベクトルＶは比較的早く入力ベクトルＳ１に近づく。これにより、プレイヤが十字ボタンを用いてキャラクタをゲーム空間内で移動させる場合でも、意図した方向に移動させやすい。
【０１７７】
すなわち、十字ボタンの上下左右の何れかの方向が入力された場合、プレイヤは、意図的にキャラクタを上下左右の何れかに移動させようとしていると考えられる。一方、十字ボタンの斜め方向の入力された場合、プレイヤは、キャラクタの移動方向を調整していると考えられる。したがって、十字ボタンの上下左右の何れかの方向が入力された場合は、仮想スティックベクトルＶを入力ベクトルＳ１に素早く近づけることにより、キャラクタの移動方向をプレイヤが示した方向に素早く変化させる。これにより、プレイヤの意図をゲームに反映させることができる。一方で、十字ボタンの斜め方向の入力された場合は、仮想スティックベクトルＶを入力ベクトルＳ１にゆっくりと近づけることにより、キャラクタの移動方向をプレイヤが示した方向にゆっくりと変化させる。これにより、プレイヤは、キャラクタの移動方向を微調整し易く、プレイヤが意図した方向にキャラクタを移動させることができる。
【０１７８】
また、本実施形態では、現在の仮想スティックベクトルＶが示す方向と、入力ベクトルＳ１が示す方向とが異なるほど、仮想スティックベクトルＶを入力ベクトルＳ１により早く近づけるようにして、仮想スティックベクトルＶの値を更新する。これにより、プレイヤの意図をより反映することができ、プレイヤの操作性（操作感）を向上させることができる。例えば、現在の仮想スティックベクトルＶが示す方向が入力ベクトルＳ１が示す方向の反対方向である場合（２つのベクトルの角度が１８０度の場合）、プレイヤは、キャラクタを反転させようとしていると考えられる。したがって、この場合、現在の仮想スティックベクトルＶを入力ベクトルＳ１により早く近づけることにより、プレイヤの意図をすぐに反映して、キャラクタを反転させることができる。また、例えば、現在の仮想スティックベクトルＶが示す方向と、入力ベクトルＳ１が示す方向とが近い場合（２つのベクトルの角度が比較的小さい場合）、プレイヤは、キャラクタの移動方向を調整していると考えられる。したがって、この場合、現在の仮想スティックベクトルＶを入力ベクトルＳ１にゆっくりと近づけることにより、プレイヤは、キャラクタの移動方向を微調整することができる。
【０１７９】
［７．変形例］
なお、上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【０１８０】
例えば、本実施形態では、複数のプレイヤによって行われる鬼ごっこゲームを想定した。他の実施形態では、単数のプレイヤによって行われる他の任意のゲームであってもよく、十字ボタンに対する入力に基づいて、仮想空間内の所定のオブジェクトを移動させるゲームであればどのようなものでもよい。
【０１８１】
また、本実施形態では、４方向スイッチとして十字ボタンが用いられた。他の実施形態では、４方向スイッチとして、斜め４方向（右上、右下、左上、左下）のスイッチが用いられてもよい。この場合、斜め４方向への入力が行われた場合よりも、上下左右の方向（すなわち、４方向スイッチが示す４方向のうちの２方向の間の方向）への入力が行われた方が、仮想スティックベクトルＶは入力ベクトルＳ１にゆっくりと近づくように更新される。
【０１８２】
また、本実施形態では、入力ベクトルＳ１と仮想スティックベクトルＶとの内積値が大きいほど、仮想スティックベクトルＶを入力ベクトルＳ１に近づける度合いを高くした。すなわち、十字ボタンに対する入力に応じた入力方向と、仮想スティックの方向との違いが大きいほど、仮想スティックの方向を入力方向に近づける度合いを高くした。他の実施形態では、仮想スティックベクトルＶを入力ベクトルＳ１に近づける度合いは、上記違いによらず一定であってもよいし、上記違いに基づいて変化されてもよい。例えば、入力方向と仮想スティックの方向との角度が所定値以上の場合は、より近づける度合いを高くしてもよい。また、例えば、入力方向と仮想スティックの方向との角度が所定値以下の場合は、近づける度合いを一定にしてもよい。
【０１８３】
また、本実施形態では、十字ボタンに対する入力と、アナログスティックに対する入力とがあった場合、アナログスティックからの入力ベクトルＳ２を仮想スティックベクトルＶとして設定した。すなわち、十字ボタンに対する入力と、アナログスティックに対する入力とがあった場合、アナログスティックに対する入力を優先して、当該アナログスティックからの入力ベクトルＳ２を仮想スティックベクトルＶとして設定した。他の実施形態では、十字ボタンに対する入力と、アナログスティックに対する入力とがあった場合、十字ボタンに対する入力を優先してもよい。
【０１８４】
また、他の実施形態では、アナログスティックに対する入力があった場合、現在の仮想スティックベクトルＶにアナログスティックの入力ベクトルＳ２を加えることにより、仮想スティックベクトルＶを更新してもよい。この場合において、更新された仮想スティックベクトルＶの長さが１を超えた場合、長さを１にする正規化を行う。
【０１８５】
また、他の実施形態では、十字ボタンに対する入力に基づいて、上述した方法により第１仮想スティックベクトル（第１制御方向）を算出し、アナログスティックに対する入力に基づいて、第２仮想スティックベクトル（第２制御方向）を設定してもよい。この場合、アナログスティックの入力方向が第２制御方向として設定されてもよいし、現在の第２制御方向にアナログスティックの入力方向を加えることによって、第２制御方向が更新されてもよい。そして、第１制御方向および／または第２仮想制御方向に基づいて、ゲーム空間の所定のオブジェクトが制御されてもよい。なお、第２制御方向は、第１制御方向と同じものであってもよいし、異なるものであってもよい。すなわち、ゲーム装置３において、１つの仮想スティックベクトルＶが定義されて、十字ボタンに対する入力に基づいて第１制御方向としての当該仮想スティックベクトルＶが算出され、アナログスティックに対する入力に基づいて第２制御方向としての当該仮想スティックベクトルＶが設定されてもよい。
【０１８６】
また、本実施形態では、入力方向が、４つの第１方向（十字ボタンの上下左右の４つの方向）か、または、４つの第２方向（斜め方向；右上、右下、左上、左下の４つの方向）かによって、仮想スティックの方向を入力方向に近づける度合いを異ならせた。具体的には、入力方向が第２方向である場合、当該入力方向が第１方向である場合よりも近づける度合いを低くして、仮想スティックの方向を入力方向に近づけた。他の実施形態では、入力方向が４つの第２方向のうちの特定の方向（例えば、右上方向および左上方向）である場合にのみ、近づける度合いを相対的に低くしてもよい。例えば、キャラクタが、特定の方向、具体的には、画面の奥方向あるいは上方向にのみ移動可能なゲームにおいて、上記仮想スティックに基づいてキャラクタの移動方向を制御してもよい。
【０１８７】
また、本実施形態では、コントローラ５が入力ベクトルＳ１を算出し、ゲーム装置３がコントローラ５から送信された入力ベクトルＳ１を取得した。他の実施形態では、ゲーム装置３がコントローラ５から送信された十字ボタンの入力情報に基づいて、入力ベクトルＳ１を算出することにより、上記入力ベクトルＳ１を取得してもよい。
【０１８８】
また、他の実施形態では、互いに通信可能な複数の情報処理装置を有するシステムにおいて、当該複数の情報処理装置が、上述のようなゲーム装置３において実行された処理を分担して実行するようにしてもよい。どの処理をどの装置に実行させるかは適宜調整されてもよい。例えば、インターネットのようなネットワークに接続された十字ボタンを有する入力装置からの入力情報（入力ベクトルＳ１）が、当該ネットワークに接続された情報処理装置に送信されてもよい。この場合、当該情報処理装置は、受信した入力情報に基づいて、上述した処理を行うことにより仮想スティックベクトルＶを算出し、当該仮想スティックベクトルに基づいて例えば所定のオブジェクトの移動を制御してもよい。
【０１８９】
また、他の実施形態では、ゲーム装置３と、コントローラ５および端末装置７とが無線ではなく有線で接続されることによって、情報が送受信されてもよい。
【０１９０】
上記プログラムは、ゲーム装置３以外の様々な情報処理を行う目的で用いられる任意の情報処理装置、例えばパーソナルコンピュータ等において実行されてもよい。例えば、パーソナルコンピュータ等に十字ボタンを含むコントローラが接続され、当該十字ボタンに対する操作に基づいて、アイコンを選択するためのポインタを制御してもよい。
【０１９１】
また、上記プログラムは、光ディスクに限らず、磁気ディスク、不揮発性メモリ等の記憶媒体に記憶されてもよく、ネットワークに接続されたサーバ上のＲＡＭや磁気ディスク等のコンピュータ読み取り可能な記憶媒体に記憶されて、ネットワークを介して当該プログラムが提供されてもよい。また、上記プログラムは、ソースコードとして情報処理装置に読み込まれて、プログラムの実行の際にコンパイルされて実行されてもよい。
【０１９２】
また、上記実施形態においては、ゲーム装置３のＣＰＵ１０が上記ゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置１０が備える専用回路によって行われてもよし、他の汎用プロセッサによって行われてもよい。少なくとも１つのプロセッサが、上記処理を実行するための「プログラムされた論理回路」として動作するものであってもよい。
【符号の説明】
【０１９３】
１  ゲームシステム
２  テレビ
３  ゲーム装置
４  光ディスク
５  コントローラ
６  マーカ装置
７  端末装置
８  メインコントローラ
９  サブコントローラ
１０  ＣＰＵ
１１ｅ  内部メインメモリ
１２  外部メインメモリ
３２ａ  十字ボタン
５４Ａ  十字ボタン
５３  アナログスティック
８１  アナログジョイスティック
９１  第１キャラクタ
９２ａ、９２ｂ  第２キャラクタ
【図１】
0006045777.tif 000002
【図２】
0006045777.tif 000003
【図３】
0006045777.tif 000004
【図４】
0006045777.tif 000005
【図５】
0006045777.tif 000006
【図６】
0006045777.tif 000007
【図７】
0006045777.tif 000008
【図８】
0006045777.tif 000009
【図９】
0006045777.tif 000010
【図１０】
0006045777.tif 000011
【図１１】
0006045777.tif 000012
【図１２】
0006045777.tif 000013
【図１３】
0006045777.tif 000014
【図１４Ａ】
0006045777.tif 000015
【図１４Ｂ】
0006045777.tif 000016
【図１５】
0006045777.tif 000017
【図１６】
0006045777.tif 000018
【図１７】
0006045777.tif 000019