(57)【要約】【課題】複数のオブジェクトを表示装置に表示しつつ、プレイヤにとって当該オブジェクトを操作しやすい表示をすることが可能なゲーム装置及びゲームプログラムを提供する。【解決手段】ゲーム装置は、各ボートの速度ベクトルと前方向ベクトルとを所定の割合で合成することにより、各ボートの基準方向を算出する。次に、ゲーム装置は、算出した各ボートの基準方向を、先頭のボートからの距離に応じて重みで加重平均した平均方向を算出する。そして、ゲーム装置は、算出した平均方向に基づいて、仮想カメラの撮像方向を算出する。【選択図】図１５
2010273839.tif 000002
【特許請求の範囲】
【請求項１】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記各オブジェクトの移動方向及び／又は向きに基づいた方向を当該オブジェクトの基準方向としてそれぞれ算出し、算出した前記複数のオブジェクトの各基準方向を、第１の条件で加重平均した平均方向を算出する平均方向算出手段と、
前記平均方向に基づき、前記仮想カメラの撮像方向を設定する撮像方向設定手段と、
前記撮像方向設定手段で設定された撮像方向に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段として機能させる、ゲームプログラム。
【請求項２】
前記第１の条件は、前記ゲームプログラムで実行されるゲームにおいて、前記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの基準方向に対する重み付けを重くするものである、請求項１に記載のゲームプログラム。
【請求項３】
前記有利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つの値が他のオブジェクトよりも大きい状況である、請求項２に記載のゲームプログラム。
【請求項４】
前記第１の条件は、前記ゲームプログラムで実行されるゲームにおいて、前記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの基準方向に対する重み付けを重くするものである、請求項１に記載のゲームプログラム。
【請求項５】
前記不利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つの値が他のオブジェクトよりも小さい状況である、請求項４に記載のゲームプログラム。
【請求項６】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの位置に基づいた各位置を、第２の条件で加重平均した平均位置を算出する平均位置算出手段と、
前記平均位置に基づいて、前記仮想カメラの注視点を設定する注視点設定手段として、更に機能させ、
前記表示制御手段は、前記注視点設定手段で設定された注視点にも基づいて、前記仮想空間を撮像したものを前記表示装置に表示する、請求項１に記載のゲームプログラム。
【請求項７】
前記ゲームプログラムは、前記コンピュータを、
前記各オブジェクトの位置に基づいて、当該各オブジェクトに対する設定位置をそれぞれ算出する設定位置算出手段として、更に機能させ、
前記平均位置算出手段は、前記設定位置算出手段によって算出された各設定位置を、前記第２の条件で加重平均して前記平均位置を算出する、請求項６に記載のゲームプログラム。
【請求項８】
前記設定位置算出手段は、前記各オブジェクトの基準方向と位置とに基づいて、当該各オブジェクトに対する設定位置をそれぞれ算出する、請求項７に記載のゲームプログラム。
【請求項９】
前記第２の条件は、前記ゲームプログラムで実行されるゲームにおいて前記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものである、請求項６に記載のゲームプログラム。
【請求項１０】
前記有利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つの値が他のオブジェクトと比較して大きい状況である、請求項９に記載のゲームプログラム。
【請求項１１】
前記第２の条件は、前記ゲームプログラムで実行されるゲームにおいて前記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものである、請求項６に記載のゲームプログラム。
【請求項１２】
前記不利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つの値が他のオブジェクトと比較して小さい状況である、請求項１１に記載のゲームプログラム。
【請求項１３】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの少なくとも何れか１つが前記仮想カメラによる撮像範囲から外れようとしている度合いを算出する外れ度合い算出手段として更に機能させ、
前記表示制御手段は、前記外れ度合い算出手段で算出された外れ度合いに応じて、前記撮像範囲を拡大もしくは縮小して、前記仮想空間を撮像したものを前記表示装置に表示する、請求項１に記載のゲームプログラム。
【請求項１４】
前記表示制御手段は、前記外れ度合い算出手段で算出された外れ度合いに応じて、前記撮像方向又は当該撮像方向とは逆の方向へ前記仮想カメラを移動させることにより、前記撮像範囲を拡大もしくは縮小する、請求項１３に記載のゲームプログラム。
【請求項１５】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する順方向算出手段と、
前記複数のオブジェクトの順方向に基づいて、当該各オブジェクトの移動する方向を補正するオブジェクト移動方向補正手段として、更に機能させる、請求項１に記載のゲームプログラム。
【請求項１６】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトに対して、前記順方向算出手段で算出された順方向の外力を発生させる外力発生手段として、更に機能させ、
前記オブジェクト移動方向補正手段は、前記外力発生手段で発生させた外力を前記各オブジェクトに加えることによって、前記オブジェクトの移動する方向を補正する、請求項１５に記載のゲームプログラム。
【請求項１７】
前記ゲーム装置には少なくとも１つの入力装置が接続され、
前記オブジェクト移動手段は、前記入力装置からの入力に基づいて、前記複数のオブジェクトのうちの少なくとも１つのオブジェクトを移動させる、請求項１に記載のゲームプログラム。
【請求項１８】
前記入力装置は、前記複数のオブジェクトそれぞれに対応付けされて前記ゲーム装置に接続される、請求項１７に記載のゲームプログラム。
【請求項１９】
前記ゲームプログラムで実行されるゲームは、前記仮想空間内の所定の位置に到達する早さを競うゲームであり、前記仮想空間内の前記所定の位置に近いほど当該ゲームのルールにおいて有利な状況であると判断される、請求項２、４、９又は１１の何れかに記載のゲームプログラム。
【請求項２０】
前記平均方向算出手段は、前記各オブジェクトの移動方向と向きとをそれぞれ所定の割合で合成することにより算出した前記各基準方向を、前記第１の条件で加重平均した平均方向を算出する、請求項１に記載のゲームプログラム。
【請求項２１】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する順方向算出手段として、更に機能させ、
前記平均方向算出手段は、前記順方向算出手段で算出された前記各オブジェクトの順方向と、当該各オブジェクトの基準方向との角度に応じて、当該各オブジェクトの基準方向に対する重み付けをそれぞれ設定する、請求項１に記載のゲームプログラム。
【請求項２２】
前記平均方向算出手段は、前記オブジェクトの順方向と基準方向との角度が小さいほど、当該オブジェクトの前記基準方向に対する重み付けを重く設定する、請求項２１に記載のゲームプログラム。
【請求項２３】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する順方向算出手段として、更に機能させ、
前記平均方向算出手段は、前記複数のオブジェクトの基準方向と、当該複数のオブジェクトの順方向を平均した方向とを、前記第１の条件で加重平均した平均方向を算出する、請求項１に記載のゲームプログラム。
【請求項２４】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記オブジェクトの移動方向及び／又は向きに基づいた方向を当該オブジェクトの基準方向として、当該オブジェクトの基準方向と位置とに基づいて算出される設定位置を、前記複数のオブジェクトに対してそれぞれ算出する設定位置算出手段と、
前記設定位置算出手段によって算出される各設定位置を、所定の条件で加重平均した平均位置を算出する平均位置算出手段と、
前記平均位置に基づいて、前記仮想カメラの注視点を設定する注視点設定手段と、
前記注視点設定手段で設定された注視点に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段として機能させる、ゲームプログラム。
【請求項２５】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置であって、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記各オブジェクトの移動方向及び／又は向きに基づいた方向を当該オブジェクトの基準方向としてそれぞれ算出し、算出した前記複数のオブジェクトの各基準方向を、第１の条件で加重平均した平均方向を算出する平均方向算出手段と、
前記平均方向に基づき、前記仮想カメラの撮像方向を設定する撮像方向設定手段と、
前記撮像方向設定手段で設定された撮像方向に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段とを備える、ゲーム装置。
【請求項２６】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置であって、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記オブジェクトの移動方向及び／又は向きに基づいた方向を当該オブジェクトの基準方向として、当該オブジェクトの基準方向と位置とに基づいて算出される設定位置を、前記複数のオブジェクトに対してそれぞれ算出する設定位置算出手段と、
前記設定位置算出手段によって算出される各設定位置を、所定の条件で加重平均した平均位置を算出する平均位置算出手段と、
前記平均位置に基づいて、前記仮想カメラの注視点を設定する注視点設定手段と、
前記注視点設定手段で設定された注視点に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段とを備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームプログラム及びゲーム装置に関し、より特定的には、仮想空間内の複数のオブジェクトを表示装置に表示させるゲームプログラム及びゲーム装置に関する。
【背景技術】
【０００２】
従来より、複数のオブジェクトを表示装置に表示させるゲーム装置が存在する。例えば、特許文献１に記載のゲーム装置では、２体の敵を表示させるために、仮想カメラの注視点を２体の敵の中間位置に設定している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−１６５６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に記載の技術では、以下の課題があった。すなわち、仮想カメラの注視点を上記のように設定することにより、３次元仮想空間内に存在する複数のオブジェクトが表示装置の表示範囲に含まれるようにすることはできたが、必ずしも表示されたオブジェクトをプレイヤが操作しやすい表示になっているとは限らなかった。
【０００５】
それ故、本発明の目的は、複数のオブジェクトを表示装置に表示しつつ、プレイヤにとって当該オブジェクトを操作しやすい表示をすることが可能なゲームプログラム及びゲーム装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号及び補足説明等は、本発明の理解を助けるために後述する実施例との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００７】
本発明は、複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムである。当該ゲームプログラムは、上記コンピュータを、オブジェクト移動手段（Ｓ３を実行するＣＰＵ１０。以下、単にステップ番号のみを記載する。）と、平均方向算出手段（Ｓ５）と、撮像方向設定手段（Ｓ９）と、表示制御手段（Ｓ１０）として機能させる。オブジェクト移動手段は、上記複数のオブジェクト（ボートＢ１〜Ｂ４）を上記仮想空間内で移動させる。平均方向算出手段は、上記各オブジェクトの移動方向（速度）及び／又は向き（前方向）に基づいた方向を当該オブジェクトの基準方向としてそれぞれ算出し、算出した上記複数のオブジェクトの各基準方向を、第１の条件（式６）で加重平均した平均方向（平均方向ベクトルＷＤ）を算出する。撮像方向設定手段は、上記平均方向に基づき、上記仮想カメラの撮像方向を設定する。表示制御手段は、上記撮像方向設定手段で設定された撮像方向に基づいて、上記仮想空間を撮像したものを上記表示装置に表示する。
【０００８】
なお、上記において加重平均とは、単なる平均を含む。
【０００９】
上記によれば、各オブジェクトの移動方向及び／又は向きに基づいた基準方向をそれぞれ算出し、算出した各オブジェクトの基準方向を、第１の条件で加重平均することによって、平均方向を算出することができる。そして、平均方向に基づいて仮想カメラの撮像方向を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【００１０】
本発明では、上記第１の条件は、上記ゲームプログラムで実行されるゲームにおいて、上記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの上記基準方向に対する重み付けを重くするものであってもよい。
【００１１】
なお、オブジェクトが有利な状況とは、上記ゲームのルールにおいて当該オブジェクトのゲームの進行状況が他のオブジェクトと比較して有利である状況や、上記ゲームにおける当該オブジェクトに与えられた条件が他のオブジェクトに与えられた条件と比較して有利な状況である場合である。
【００１２】
上記によれば、プレイヤが操作するオブジェクトが有利な状況であるほど、当該プレイヤにとって操作しやすい画像を表示することができる。
【００１３】
本発明では、上記有利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つの値が他のオブジェクトよりも大きい状況であってもよい。
【００１４】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つが他のオブジェクトよりも大きい場合、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【００１５】
本発明では、上記第１の条件は、上記ゲームプログラムで実行されるゲームにおいて、上記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの上記基準方向に対する重み付けを重くするものであってもよい。
【００１６】
なお、オブジェクトが不利な状況とは、上記ゲームのルールにおいて当該オブジェクトのゲームの進行状況が他のオブジェクトと比較して不利である状況や、上記ゲームにおける当該オブジェクトに与えられた条件が他のオブジェクトに与えられた条件と比較して不利な状況である場合である。
【００１７】
上記によれば、プレイヤが操作するオブジェクトが不利な状況であるほど、当該プレイヤにとって操作しやすい画像を表示することができる。
【００１８】
本発明では、上記不利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つの値が他のオブジェクトよりも小さい状況であってもよい。
【００１９】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つが他のオブジェクトよりも小さい場合、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【００２０】
本発明では、上記ゲームプログラムは、上記コンピュータを、平均位置算出手段（Ｓ６）と、注視点設定手段（Ｓ６）として、更に機能させてもよい。平均位置算出手段は、上記複数のオブジェクトの位置に基づいた各位置を、第２の条件（式９）で加重平均した平均位置を算出する。注視点設定手段は、上記平均位置に基づいて、上記仮想カメラの注視点（Ａ）を設定する。そして、上記表示制御手段は、上記注視点設定手段で設定された注視点にも基づいて、上記仮想空間を撮像したものを上記表示装置に表示する。
【００２１】
上記によれば、各オブジェクトの位置に基づいた各位置を、第２の条件で加重平均することによって、仮想カメラの注視点を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【００２２】
本発明では、上記ゲームプログラムは、上記コンピュータを、設定位置算出手段（Ｓ６）として、更に機能させてもよい。設定位置算出手段は、上記各オブジェクトの位置に基づいて、当該各オブジェクトに対する設定位置（Ａｉ）をそれぞれ算出する。そして、上記平均位置算出手段は、上記設定位置算出手段によって算出された各設定位置を、上記第２の条件で加重平均して上記平均位置を算出する。
【００２３】
上記によれば、各オブジェクトの位置に基づいて、各オブジェクトに対する設定位置を算出し、各設定位置を第２の条件で加重平均することによって、仮想カメラの注視点を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【００２４】
本発明では、上記設定位置算出手段は、上記各オブジェクトの基準方向と位置とに基づいて、当該各オブジェクトに対する設定位置をそれぞれ算出してもよい。
【００２５】
上記によれば、各オブジェクトの位置に加えて、各オブジェクトの基準方向に基づいて、各オブジェクトの設定位置を算出することができる。
【００２６】
本発明では、上記第２の条件は、上記ゲームプログラムで実行されるゲームにおいて上記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものであってもよい。
【００２７】
上記によれば、プレイヤが操作するオブジェクトが有利な状況であるほど、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、有利な状況であるオブジェクトを操作しているプレイヤにとって、見やすく操作しやすい画像を表示することができる。
【００２８】
本発明では、上記有利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つの値が他のオブジェクトと比較して大きい状況であってもよい。
【００２９】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つが他のオブジェクトよりも大きい場合、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【００３０】
本発明では、上記第２の条件は、上記ゲームプログラムで実行されるゲームにおいて上記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものであってもよい。
【００３１】
上記によれば、プレイヤが操作するオブジェクトが不利な状況であるほど、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、不利な状況であるオブジェクトを操作しているプレイヤにとって、見やすく操作しやすい画像を表示することができる。
【００３２】
本発明では、上記不利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つの値が他のオブジェクトと比較して小さい状況であってもよい。
【００３３】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか１つが他のオブジェクトよりも小さい場合、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【００３４】
本発明では、上記ゲームプログラムは、上記コンピュータを、外れ度合い算出手段（Ｓ２２）として更に機能させてもよい。外れ度合い算出手段は、上記複数のオブジェクトの少なくとも何れか１つが上記仮想カメラによる撮像範囲から外れようとしている度合いを算出する。そして、上記表示制御手段は、上記外れ度合い算出手段で算出された外れ度合いに応じて、上記撮像範囲を拡大（Ｓ２４）もしくは縮小（Ｓ２１）して、上記仮想空間を撮像したものを上記表示装置に表示する。
【００３５】
上記によれば、複数のオブジェクトが撮像範囲に収まらない場合に撮像範囲を拡大したり、複数のオブジェクトが撮像範囲に収まる場合に撮像範囲を縮小したりすることができる。
【００３６】
本発明では、上記表示制御手段は、上記外れ度合い算出手段で算出された外れ度合いに応じて、上記撮像方向又は当該撮像方向とは逆の方向へ上記仮想カメラを移動させることにより、上記撮像範囲を拡大もしくは縮小してもよい。
【００３７】
上記によれば、外れ度合いに応じて注視点距離を設定することができる。これにより、撮像範囲を拡大又は縮小することができる。
【００３８】
本発明では、上記ゲームプログラムは、上記コンピュータを、順方向算出手段（Ｓ３）と、オブジェクト移動方向補正手段（Ｓ８）として、更に機能させてもよい。順方向算出手段は、上記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する。オブジェクト移動方向補正手段は、上記複数のオブジェクトの順方向に基づいて、当該各オブジェクトの移動する方向を補正する。
【００３９】
上記によれば、各オブジェクトの順方向を算出することができ、各オブジェクトの順方向に基づいて各オブジェクトの移動する方向を補正することができる。
【００４０】
本発明では、上記ゲームプログラムは、上記コンピュータを、外力発生手段（Ｓ８）として更に機能させてもよい。外力発生手段は、上記複数のオブジェクトに対して、上記順方向算出手段で算出された順方向の外力を発生させる。そして、上記オブジェクト移動方向補正手段は、上記外力発生手段で発生させた外力を上記各オブジェクトに加えることによって、上記オブジェクトの移動する方向を補正する。
【００４１】
上記によれば、オブジェクトに対して当該オブジェクトの順方向への外力を発生させることができる。これにより、オブジェクトは進むべき方向に容易に進むことができる。
【００４２】
本発明では、上記ゲーム装置には少なくとも１つの入力装置（８）が接続され、上記オブジェクト移動手段は、上記入力装置からの入力に基づいて、上記複数のオブジェクトのうちの少なくとも１つのオブジェクトを移動させてもよい。
【００４３】
上記によれば、入力装置からの入力に基づいて、上記オブジェクトを移動させることができる。
【００４４】
本発明では、上記入力装置は、上記複数のオブジェクトそれぞれに対応付けされて上記ゲーム装置に接続されてもよい。
【００４５】
上記によれば、複数の入力装置を複数のオブジェクトにそれぞれ対応付けさせることができ、複数のプレイヤがゲームを行うことができる。
【００４６】
本発明では、上記ゲームプログラムで実行されるゲームは、上記仮想空間内の所定の位置（ゴール）に到達する早さを競うゲームであり、上記仮想空間内の上記所定の位置に近いほど当該ゲームのルールにおいて有利な状況であると判断されてもよい。
【００４７】
上記によれば、上記所定の位置に近いオブジェクトほど有利な状況であると判断することができる。
【００４８】
本発明では、上記平均方向算出手段は、上記各オブジェクトの移動方向と向きとをそれぞれ所定の割合で合成することにより算出した上記各基準方向を、上記第１の条件で加重平均した平均方向を算出してもよい。
【００４９】
上記によれば、オブジェクトの移動方向と向きとを合成することによって、当該オブジェクトの基準方向を算出することができる。
【００５０】
本発明では、上記ゲームプログラムは、上記コンピュータを、順方向算出手段（Ｓ３）として更に機能させてもよい。順方向算出手段は、上記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する。そして、上記平均方向算出手段は、上記順方向算出手段で算出された上記各オブジェクトの順方向と、当該各オブジェクトの基準方向との角度に応じて、当該各オブジェクトの上記基準方向に対する重み付けをそれぞれ設定する。
【００５１】
上記によれば、上記平均方向を算出する際、オブジェクトの順方向と当該オブジェクトの基準方向との角度に応じて、当該オブジェクトの基準方向に対する重みを設定することができる。
【００５２】
本発明では、上記平均方向算出手段は、上記オブジェクトの順方向と基準方向との角度が小さいほど、当該オブジェクトの上記基準方向に対する重み付けを重く設定してもよい。
【００５３】
上記によれば、上記角度が小さいほど重みを重くすることができる。従って、順方向と基準方向が一致しているオブジェクトを操作しているプレイヤにとって、見やすく操作しやすい画像を表示することができる。
【００５４】
本発明では、上記ゲームプログラムは、上記コンピュータを、順方向算出手段（Ｓ３）として更に機能させてもよい。順方向算出手段は、上記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する。そして、上記平均方向算出手段は、上記複数のオブジェクトの基準方向と、当該複数のオブジェクトの順方向を平均した方向（Ｄｍ）とを、上記第１の条件で加重平均した平均方向を算出する（式２）。
【００５５】
上記によれば、上記平均方向を算出する際、各オブジェクトの基準方向に加えて、各オブジェクトの上記順方向を平均した方向を加味することができる。これにより、上記平均方向を平均的な順方向（複数のオブジェクトの順方向を平均した方向）にある程度近づけることができる。例えば、複数のオブジェクトがあるコースを進行するゲームにおいて、上記平均方向をコース順方向にある程度近づけることができる。
【００５６】
本発明は、複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムである。当該ゲームプログラムは、上記コンピュータを、オブジェクト移動手段（Ｓ３）と、設定位置算出手段（Ｓ６）と、平均位置算出手段（Ｓ６）と、注視点設定手段（Ｓ６）と、表示制御手段（Ｓ１０）として機能させる。オブジェクト移動手段は、上記複数のオブジェクトを上記仮想空間内で移動させる。設定位置算出手段は、上記オブジェクトの移動方向及び／又は向きに基づいた方向を当該オブジェクトの基準方向として、当該オブジェクトの基準方向と位置とに基づいて算出される設定位置を、上記複数のオブジェクトに対してそれぞれ算出する。平均位置算出手段は、上記設定位置算出手段によって算出される各設定位置を、所定の条件で加重平均した平均位置を算出する。注視点設定手段は、上記平均位置に基づいて、上記仮想カメラの注視点を設定する。そして、表示制御手段は、上記注視点設定手段で設定された注視点に基づいて、上記仮想空間を撮像したものを上記表示装置に表示する。
【００５７】
上記によれば、オブジェクトの基準方向と位置とに基づいて算出される各設定位置を、所定の条件で加重平均することによって、仮想カメラの注視点を算出することができる。これにより、仮想カメラの注視点を定めることができ、複数のオブジェクトを見やすく表示することができる。
【００５８】
また、本発明は、上記ゲームプログラムを実行するゲーム装置の形態で実施されてもよい。
【発明の効果】
【００５９】
本発明によれば、各オブジェクトの移動方向及び／又は向きに基づいて算出される各オブジェクトの基準方向を、第１の条件で加重平均することによって、平均方向を算出することができる。そして、平均方向に基づいて仮想カメラの撮像方向を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【図面の簡単な説明】
【００６０】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の構成を示すブロック図
【図３】入力装置８の外観構成を示す斜視図
【図４】コントローラ５を下側前方から見た斜視図
【図５】コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図
【図６】コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図
【図７】入力装置８の構成を示すブロック図
【図８】本実施形態で想定するゲームの画面の一例を示した図
【図９】ボートＢ１の視点からゲーム空間を見た場合の画像を示した図
【図１０】ボートＢの基準方向の算出方法を説明するための図
【図１１】到達距離と順方向を説明するための図
【図１２】あるゲーム状況の一例をゲーム空間の上方から見た図
【図１３】あるゲーム状況の一例における仮想カメラの注視点を示す図
【図１４】ゲーム装置３のメインメモリ（外部メインメモリ１２又は内部メインメモリ１１ｅ）に記憶される主なデータを示す図
【図１５】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図１６】図１５における注視点距離の算出処理（ステップＳ７）の詳細を示すフローチャート
【図１７】最大はみ出し量を説明するための図
【図１８】先頭以外のボートに対する牽引力を説明するための図
【発明を実施するための形態】
【００６１】
［ゲームシステムの全体構成］
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置及びゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、入力装置８、及びマーカ部６を含む。本システムは、入力装置８を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００６２】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００６３】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒ及び６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００６４】
入力装置８は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与えるものである。本実施形態では、入力装置８はコントローラ５とジャイロセンサユニット７とを含む。詳細は後述するが、入力装置８は、コントローラ５に対してジャイロセンサユニット７が着脱可能に接続されている構成である。コントローラ５とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。
【００６５】
［ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、及びＡＶ−ＩＣ１５等を有する。
【００６６】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４及びＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩの内部構成について後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅ又は外部メインメモリ１２に読み出したデータを書き込む。
【００６７】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、及び内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００６８】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００６９】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００７０】
上述のように生成された画像データ及び音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００７１】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、及びメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００７２】
入出力プロセッサ１１ａは、無線通信モジュール１８及びアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８及びアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２及び無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データ又は途中データ）が記憶されてもよい。
【００７３】
また、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３及び無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅ又は外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００７４】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０及びメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００７５】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、及びイジェクトボタン２６が設けられる。電源ボタン２４及びリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００７６】
［入力装置８の構成］
次に、図３〜図６を参照して、入力装置８について説明する。図３は、入力装置８の外観構成を示す斜視図である。図４は、コントローラ５を下側前方から見た斜視図である。
【００７７】
図３及び図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ５に設けられたボタンを押下すること、及び、コントローラ５自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【００７８】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、及び電源ボタン３２ｈが設けられる。本明細書では、これらのボタン３２ａ〜３２ｈが設けられるハウジング３１の上面を「ボタン面」と呼ぶことがある。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆ及び電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、プレイヤがホームボタン３２ｆ又は電源ボタン３２ｈを誤って押下することを防止することができる。
【００７９】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、ジャイロセンサユニット７や他のコントローラ）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００８０】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のメインコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ５の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄの何れか１つが点灯する。
【００８１】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒ及び６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００８２】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４９（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００８３】
次に、図５及び図６を参照して、コントローラ５の内部構造について説明する。図５及び図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００８４】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、及びスピーカ４９等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図６）及びアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００８５】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、及び画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００８６】
さらに、基板３０の下主面上には、上記マイコン４２及びバイブレータ４８が設けられている。バイブレータ４８は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４８が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４８は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４８がコントローラ５の中心よりも端側に配置することによって、バイブレータ４８の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５及び図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４９に音声信号を出力するアンプ等を備えている。
【００８７】
また、ジャイロセンサユニット７は、３軸回りの角速度を検知するジャイロセンサ（図７に示すジャイロセンサ５５及び５６）を有する。ジャイロセンサユニット７は、コントローラ５のコネクタ３３に着脱可能に装着される。ジャイロセンサユニット７の前端（図３に示すＺ軸正方向側の端部）には、コネクタ３３に接続可能なプラグ（図７に示すプラグ５３）が設けられる。さらに、プラグ５３の両側にはフック（図示せず）が設けられる。ジャイロセンサユニット７がコントローラ５に対して装着される状態では、プラグ５３がコネクタ３３に接続されるとともに、上記フックがコントローラ５の係止穴３３ａに係止する。これによって、コントローラ５とジャイロセンサユニット７とがしっかりと固定される。また、ジャイロセンサユニット７は側面（図３に示すＸ軸方向の面）にボタン５１を有している。ボタン５１は、それを押下すれば上記フックの係止穴３３ａに対する係止状態を解除することができるように構成されている。したがって、ボタン５１を押下しながらプラグ５３をコネクタ３３から抜くことによって、ジャイロセンサユニット７をコントローラ５から離脱することができる。
【００８８】
また、ジャイロセンサユニット７の後端には、上記コネクタ３３と同形状のコネクタが設けられる。したがって、コントローラ５（のコネクタ３３）に対して装着可能な他の機器は、ジャイロセンサユニット７のコネクタに対しても装着可能である。なお、図３においては、当該コネクタに対してカバー５２が着脱可能に装着されている。
【００８９】
なお、図３〜図６に示したコントローラ５及びジャイロセンサユニット７の形状や、各操作ボタンの形状、加速度センサやバイブレータの数及び設置位置等は単なる一例に過ぎず、他の形状、数、及び設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向は何れの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００９０】
図７は、入力装置８（コントローラ５及びジャイロセンサユニット７）の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、コネクタ３３、撮像情報演算部３５、通信部３６、及び加速度センサ３７を備えている。コントローラ５は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置３へ送信するものである。
【００９１】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を示す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００９２】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００９３】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、及び画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、テレビ２の表示画面近傍に配置されるマーカ部６のマーカ６Ｒ及び６Ｌは、テレビ２の前方に向かって赤外光を出力する赤外ＬＥＤで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、マーカ６Ｒ及び６Ｌの画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象（マーカ６Ｒ及び６Ｌ）の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００９４】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００９５】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、３軸又は２軸の加速度センサは、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）又はＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能である種類のものでもよい。なお、加速度センサ３７は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００９６】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）及び前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置８（コントローラ５）を基準に設定されるＸＹＺ座標系（コントローラ座標系）における３次元のベクトル（ａｘ，ａｙ，ａｚ）として表される。以下では、加速度センサ３７によって検出される３軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【００９７】
加速度センサ３７が検出した加速度を示すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は加速度データを用いてコントローラ５の向きや動きを算出することができる。本実施形態では、ゲーム装置３は、加速度データ及び後述する角速度データに基づいてコントローラ５の姿勢を判断する。
【００９８】
加速度センサ３７が検出した加速度（加速度ベクトル）を示すデータ（加速度データ）は、通信部３６へ出力される。本実施形態において、加速度センサ３７は、コントローラ５の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【００９９】
なお、加速度センサ３７から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）又はコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測又は算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かによって、コントローラ５が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ５がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ５の傾斜方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾斜角度又は姿勢を判定することができる。
【０１００】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置又は他の種類の専用の処理装置を備えていてもよい。組込み式又は専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【０１０１】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、及びアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。また、マイコン４２はコネクタ３３に接続されている。ジャイロセンサユニット７から送信されてくるデータは、コネクタ３３を介してマイコン４２に入力される。以下、ジャイロセンサユニット７の構成について説明する。
【０１０２】
ジャイロセンサユニット７は、プラグ５３、マイコン５４、２軸ジャイロセンサ５５、及び１軸ジャイロセンサ５６を備えている。上述のように、ジャイロセンサユニット７は、３軸（本実施形態では、ＸＹＺ軸）周りの角速度を検出し、検出した角速度を示すデータ（角速度データ）をコントローラ５へ送信する。
【０１０３】
２軸ジャイロセンサ５５は、Ｘ軸周りの角速度及びＹ軸周りの（単位時間あたりの）角速度を検出する。また、１軸ジャイロセンサ５６は、Ｚ軸周りの（単位時間あたりの）角速度を検出する。なお、本明細書では、コントローラ５の撮像方向（Ｚ軸正方向）を基準として、Ｚ軸周り、Ｘ軸周り、Ｙ軸周りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、２軸ジャイロセンサ５５は、ピッチ方向（Ｘ軸周りの回転方向）及びヨー方向（Ｙ軸周りの回転方向）の角速度を検出し、１軸ジャイロセンサ５６は、ロール方向（Ｚ軸周りの回転方向）の角速度を検出する。
【０１０４】
なお、本実施形態では、３軸回りの角速度を検出するために、２軸ジャイロセンサ５５と１軸ジャイロセンサ５６とを用いる構成としたが、他の実施形態においては、３軸回りの角速度を検出することができればよく、用いるジャイロセンサの数及び組み合わせはどのようなものであってもよい。
【０１０５】
また、本実施形態では、各ジャイロセンサ５５及び５６が角速度を検出する３つの軸は、加速度センサ３７が加速度を検出する３つの軸（ＸＹＺ軸）と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ５５及び５６が角速度を検出する３つの軸と、加速度センサ３７が加速度を検出する３つの軸とは一致しなくてもよい。
【０１０６】
ジャイロセンサ５５及び５６で検出された角速度を示すデータは、マイコン５４に出力される。したがって、マイコン５４には、ＸＹＺ軸の３軸回りの角度速度を示すデータが入力されることになる。マイコン５４は、上記３軸回りの角速度を示すデータを角速度データとしてプラグ５３を介してコントローラ５へ送信する。なお、マイコン５４からコントローラ５への送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【０１０７】
コントローラ５の説明に戻り、操作部３２、撮像情報演算部３５、及び加速度センサ３７からマイコン４２へ出力されたデータ、ならびに、ジャイロセンサユニット７からマイコン４２へ送信されてきたデータは、一時的にメモリ４３に格納される。これらのデータは、上記操作データとしてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３の無線コントローラモジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側の無線コントローラモジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部３６から無線コントローラモジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で各操作データをゲーム装置３の無線コントローラモジュール１９へ出力する。
【０１０８】
上記コントローラ５を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５を任意の傾斜角度に傾ける操作を行うことができる。その他、上記コントローラ５によれば、プレイヤは、コントローラ５によって画面上の任意の位置を指示する操作、及び、コントローラ５自体を動かす操作を行うこともできる。
【０１０９】
［ゲーム処理の概要］
次に、図８〜図１３を参照して、本発明の一実施形態に係るゲーム処理の概要について説明する。本実施形態で想定するゲームは、カヌーを題材にしたゲームである。図８は、本実施形態で想定するゲームの画面の一例を示した図である。図８では、ゲーム画面には、ボート（カヌー）Ｂ（Ｂ１〜Ｂ４）と、ボートを漕ぐためのパドルと、ボートＢが移動するコースとが図示されている。本ゲームは、入力装置８をカヌーのパドル（より正確には、パドルの柄）に見立て、パドルを漕ぐように（パドルで水を掻くように）入力装置８を動かすことで、ゲーム画面内のパドル１０２も移動する（コース上の水を掻く）。これにより、プレイヤは、ボートＢを移動させることができ、擬似的にカヌーを楽しむことができる。また、本ゲームでは、複数人のプレイヤ（例えば、４人）が、それぞれ入力装置８を用いて各プレイヤに割り当てられたボートＢ１〜Ｂ４を移動させることにより、ゲームが進行する。すなわち、第１のプレイヤは、自身が把持する入力装置８を動かすことによりボートＢ１を移動させ、第２のプレイヤは、自身が把持する入力装置８を動かすことによりボートＢ２を移動させる。同様に、第３のプレイヤ及び第４のプレイヤは、それぞれ自身が把持する入力装置８を動かすことにより、ボートＢ３及びボートＢ４を移動させる。そして、各プレイヤは、自身に割り当てられたボートＢがコース上に設定されたゴールに最も早く到達するように、互いに競い合いながらゲームを楽しむ。図８では、第２のプレイヤ（ボートＢ２）が先頭であるため、コースの先に設定されたゴール（図示せず）に最も近く、現時点で最も有利である。
【０１１０】
［仮想カメラの設定の概要］
次に、本実施形態におけるカヌーゲームの仮想カメラの設定について、説明する。図８に示されるように、本実施形態では、複数のボートＢが１画面に同時に表示される。本実施形態では、仮想カメラの撮像方向及び仮想カメラの注視点を調整することにより、各プレイヤにとって見やすく（各プレイヤが各ボートＢを操作しやすく）、複数のボートＢが表示される。
【０１１１】
まず、仮想カメラの撮像方向の設定について説明する。具体的には、本実施形態では、仮想カメラの撮像方向は、各ボートＢに個別に設定される「基準方向」に基づいて、設定される。また、仮想カメラの注視点は、それぞれのボートＢに個別に設定される「設定位置」に基づいて、設定される。以下、各ボートＢの「基準方向」及び「設定位置」について、説明する。
【０１１２】
各ボートＢに設定される「基準方向」とは、各ボートＢに仮想的に設定された視線の方向であり、各ボートＢの視点（各ボートＢに乗ったプレイヤオブジェクトの視点）からゲーム空間を見た方向である。例えば、ボートＢ１の視点からゲーム空間を見た場合、図８とは見え方が異なる。図９は、ボートＢ１の視点からゲーム空間を見た場合の画像を示した図である。図９において、分かりやすくするためにボートＢ１以外のボートの表示を省略している。図９に示されるように、ボートＢ１（のプレイヤオブジェクト）からゲーム空間を見た場合、図８で示されるゲーム空間の領域よりも左側の領域がより広く見える。このように、基準方向は、各ボートＢによって異なる。
【０１１３】
ここで、ボートＢの基準方向は、当該ボートＢの移動方向と当該ボートＢの向き（前方向）とに基づいて、定められる。具体的には、基準方向は、図１０に示されるようにして算出される。図１０は、ボートＢの基準方向の算出方法を説明するための図であり、ボートＢをゲーム空間の上方から見た図である。図１０では、ボートＢの速度を示す速度ベクトルＶと、ボートＢの前方向を示す前方向ベクトルＦｄとが図示されている。ここで、前方向ベクトルＦｄは、ゲーム空間におけるボートＢの中心位置からボートＢの先端（カヌーの先端）位置に向かう単位ベクトルである。図１０に示されるように、速度ベクトルＶに重みＫｖを掛けたベクトルと、前方向ベクトルＦｄに重みＫｆを掛けたベクトルとを足し合わせて、正規化することにより、基準方向を示す基準方向ベクトルＤが求められる。すなわち、各ボートＢｉ（ｉは１〜４の何れか）の基準方向ベクトルＤｉは、以下の式１によって算出される。
Ｄｉ＝（Ｋｖ×Ｖｉ＋Ｋｆ×Ｆｄｉ）／｜Ｋｖ×Ｖｉ＋Ｋｆ×Ｆｄｉ｜      （１）
なお、重みＫｖ及びＫｆは、予め定められた係数であり、例えば、Ｋｖ＝２、Ｋｆ＝３に設定される。また、Ｖｉは、ボートＢｉの速度ベクトルであり、Ｆｄｉは、ボートＢｉの前方向ベクトルである。速度ベクトルＶｉの向きは、ボートＢｉの現在の移動方向を表している。
【０１１４】
次に、算出された各ボートＢ（Ｂ１〜Ｂ４）の基準方向Ｄ（Ｄ１〜Ｄ４）に基づいて、仮想カメラの撮像方向を算出する。具体的には、まず、各基準方向Ｄ（Ｄ１〜Ｄ４）を加重平均することにより、平均方向ベクトルＷＤを算出する。平均方向ベクトルＷＤは以下の式２によって求められる。
ＷＤ＝（Ｗ１×Ｄ１＋Ｗ２×Ｄ２＋Ｗ３×Ｄ３＋Ｗ４×Ｄ４＋Ｗｍ×Ｄｍ）／（Ｗ１＋Ｗ２＋Ｗ３＋Ｗ４＋Ｗｍ）      （２）
なお、Ｗ１〜Ｗ４は、先頭のボートから各ボートＢまでの距離に応じて算出される係数であり、各基準方向ベクトルＤｉに対する重みである。また、Ｗｍは、所定の定数である。また、Ｄｍは、平均方向ベクトルＷＤをコース順方向（ボートＢの現在位置からコース上のゴールに向かう、コースに沿った方向）に向けるためのベクトルであり、各ボートＢのコース順方向から求められる。
【０１１５】
次に、重みＷ１〜Ｗ４の算出方法、コース順方向、及びＤｍについて説明する。まず、図１１を用いて、重みＷ１〜Ｗ４を算出するための到達距離及び順方向（コース順方向）について説明する。図１１は、到達距離と順方向を説明するための図である。図１１では、コースをゲーム空間の上方から見た場合において、ボートＢが、図の右方向に設定されたゴール（図示せず）に向かってコース上を移動している様子が示されている。到達距離は、図の左下方向に設定されたスタート地点（図示せず）からのコースに沿った距離を示す。到達距離は、ゲーム空間における位置に応じて定められる。また、順方向は、コース上の位置からゴールへ向かう、コースに沿った方向であり、例えばコースに沿って一定の間隔毎に定義された単位ベクトルによって表される。ここで、到達距離Ｔａでの順方向ベクトルをＣａ、到達距離Ｔｂ（＞Ｔａ）での順方向ベクトルをＣｂとすると、ボートＢｉの到達距離Ｔｉ及び順方向ベクトルＣｉは、以下の式３及び式４によって算出される。
Ｔｉ＝（Ｎａ×Ｔｂ＋Ｎｂ×Ｔａ）／（Ｎａ＋Ｎｂ）      （３）
Ｃｉ＝（Ｎａ×Ｃｂ＋Ｎｂ×Ｃａ）／（Ｎａ＋Ｎｂ）      （４）
ここで、Ｎａは到達距離Ｔａの地点からボートＢｉの位置Ｐｉまでの距離を表し、Ｎｂは到達距離Ｔｂの地点からボートＢｉの位置Ｐｉまでの距離を表す。なお、式４によって算出された各順方向に基づいて、上記Ｄｍが算出される。具体的には、Ｄｍは、各順方向ベクトルＣｉの平均を示すベクトルであり、以下の式５によって算出される。
Ｄｍ＝（Ｃ１＋Ｃ２＋Ｃ３＋Ｃ４）／４      （５）
【０１１６】
上述のようにして算出されたボートＢｉの到達距離Ｔｉ及び順方向ベクトルＣｉを用いて、上述した重みＷｉ（Ｗ１〜Ｗ４）は、以下の式６によって算出される。
Ｗｉ＝（１＋Ｋｔ×（Ｔ０−Ｔｉ））×Ｓｉ      （６）
なお、Ｔ０は、先頭のボートＢの到達距離を示す。また、Ｋｔは、所定の定数である。式６において、Ｓｉは順方向度合い（基準方向Ｄｉが示す方向と、順方向Ｃｉが示す方向との一致度合い）を示す。順方向度合いＳｉは、基準方向ベクトルＤｉと順方向ベクトルＣｉとの内積に応じて求められる。具体的には、基準方向ベクトルＤｉと順方向ベクトルＣｉとの内積値Ｄｉ・Ｃｉが０以上の場合、順方向度合いＳｉ＝Ｄｉ・Ｃｉ＝ｃｏｓθ（θはベクトルＤｉとＣｉとがなす角度）となる。一方、内積値Ｄｉ・Ｃｉが０未満の場合、順方向度合いＳｉ＝０となる。すなわち、基準方向ベクトルＤｉと順方向ベクトルＣｉとの角度が０の場合、Ｓｉ＝１となり、基準方向ベクトルＤｉと順方向ベクトルＣｉとの角度が９０度以上の場合、Ｓｉ＝０となる。なお、順方向度合いＳｉは、基準方向ベクトルＤｉと順方向ベクトルＣｉとの角度が９０度以上の場合、内積値に応じた負の値に設定されてもよい。
【０１１７】
上記式６で示されるように、重みＷｉは、先頭のボートから離れるほど大きくなり、順方向度合いが大きいほど大きくなる。図１２は、あるゲーム状況の一例をゲーム空間の上方から見た図である。例えば、図１２に示されるように、先頭からボートＢ２（到達距離Ｔ２）、Ｂ３（到達距離Ｔ３）、Ｂ１（到達距離Ｔ１）、Ｂ４（到達距離Ｔ４）の順で各ボートが移動している場合、重みＷ１〜Ｗ４は、以下の値になる。
Ｗ２＝Ｓ２＝Ｄ２・Ｃ２
Ｗ３＝（１＋Ｋｔ×（Ｔ２−Ｔ３））×Ｄ３・Ｃ３
Ｗ１＝（１＋Ｋｔ×（Ｔ２−Ｔ１））×Ｄ１・Ｃ１
Ｗ４＝０
なお、基準方向ベクトルＤ４と順方向ベクトルＣ４との角度が９０度以上であるため、Ｗ４は０となる。
【０１１８】
上述したように、式１によって各基準方向ベクトルＤｉが算出され、式３、４及び６によって、各重みＷｉが算出される。次に、式２及び５によって平均方向ベクトルＷＤが算出される。そして、算出された平均方向ベクトルＷＤに基づいて、仮想カメラの撮像方向が設定される。例えば、平均方向ベクトルＷＤにゲーム空間の下方に向かう所定の大きさのベクトル（ｚ軸負方向のベクトル）を加えることによって、仮想カメラの撮像方向が設定される。上述のようにして算出された平均方向ベクトルＷＤは、ゲーム空間の水平方向（コースの水面と平行な方向）のベクトルであるため、仮想カメラの撮像方向を平均方向ベクトルと一致させると、表示される画像は奥行きの距離を把握し難い画像となる。従って、平均方向ベクトルＷＤにゲーム空間の下方に向かうベクトルを加えることによって、ゲーム空間を斜め上方から見下ろした画像が表示され、図８に示されるような見やすい画像が表示される。
【０１１９】
このようにして、平均方向ベクトルＷＤに基づいて仮想カメラの撮像方向を設定することによって、表示される画像は、複数のプレイヤにとって見やすく、各ボートを操作しやすい画像となる。また、先頭からの距離が遠いほどそのボートの基準方向に対する重みが重くなるため、仮想カメラの撮像方向は、先頭からの距離が遠いボートの基準方向に近くなる。従って、表示される画像は、先頭からの距離が遠いボートの基準方向に近い方向から撮像された画像となるため、先頭から遅れているプレイヤにとって見やすい画像となる。このため、先頭から遅れているプレイヤにとっては有利となり、プレイヤの操作技術に差がある場合でもそれぞれのプレイヤがゲームを楽しむことができる。
【０１２０】
また、各ボートの基準方向に対する重みは、当該基準方向の順方向度合いが大きいほど大きくなる。このため、仮想カメラの撮像方向は、順方向度合いが大きいボートの基準方向に近い方向となる。従って、表示される画像は、基準方向と順方向とが一致しているボートを操作しているプレイヤにとって見やすい画像となる。すなわち、コース順方向に沿って正確にボートを操作しているプレイヤにとって、見やすい画像となる。逆に、コースの順方向とは反対方向を向いているボートや、コースの順方向とは反対方向に進んでいるボートの基準方向に対する重みは０に設定されるため、当該ボートの基準方向は、仮想カメラの撮像方向には影響しない。従って、一部のボートがコースを横切る方向に進んだり、コースを逆走したりしている場合においても、仮想カメラの撮像方向は、コースの順方向から大きくずれることはない。これにより、例えば、３人のプレイヤがコースの順方向にボートを進めており、１人のプレイヤが故意にコースの逆方向にボートを進めようとした場合でも、３人のプレイヤにとって望ましい画像（コースの順方向を撮像した画像）が表示される。
【０１２１】
次に、仮想カメラの注視点の設定について説明する。本実施形態では、前述したように、仮想カメラの注視点は、各ボートＢに個別に設定される「設定位置」に基づいて、設定される。各ボートＢに個別に設定される「設定位置」とは、当該ボートの位置と上述した基準方向とに基づいて定められる位置である。具体的には、ボートＢｉの設定位置Ａｉは、以下の式７によって算出される。
Ａｉ＝Ｐｉ＋Ｋｄ×Ｄｉ      （７）
なお、ＰｉはボートＢｉの位置ベクトルであり、Ｋｄは所定の定数である。このようにして算出される設定位置は、ボートの移動方向と向き（前方向）に基づいて決定される位置であって、現在のボートの移動方向と向き（前方向）に基づいて予測されるボートの移動先であると言い換えることができる。なお、ボートの設定位置を計算する際に、ボートの移動方向だけでなくボートの向き（前方向）も加味している理由は、ボートは基本的にプレイヤの操作に応じて前方向に加速するため、ボートの移動先はボートの向き（前方向）にも左右され得るからである。ボートを操作するプレイヤにとって、ゲームを有利に進めるためには、自分の操作しているボートの移動先の状況を把握することが重要である。したがって、ボートの設定位置は、そのボートを操作するプレイヤにとって、画面上で最も視認したい位置であると言うことができる。
【０１２２】
上記式７によって算出された各ボートの設定位置Ａｉを加重平均することによって、仮想カメラの注視点Ａが算出される。仮想カメラの注視点Ａは、以下の式８によって算出される。
Ａ＝（ＷＡ１×Ａ１＋ＷＡ２×Ａ２＋ＷＡ３×Ａ３＋ＷＡ４×Ａ４）／（ＷＡ１＋ＷＡ１２＋ＷＡ３＋ＷＡ４）      （８）
なお、ＷＡ１〜ＷＡ４は、先頭のボートから各ボートＢまでの距離に応じて算出される係数であり、各設定位置Ａｉに対する重みである。
【０１２３】
各設定位置Ａｉに対する重みＷＡｉは、以下の式９によって算出される。
ＷＡｉ＝１＋Ｋｔ×（Ｔ０−Ｔｉ）      （９）
なお、Ｋｔは所定の定数である。また、Ｔ０は、先頭のボートＢの到達距離を示す。
【０１２４】
上記式９で示されるように、重みＷＡｉは、上記式６で算出される重みＷｉと同様、先頭のボートから離れるほど大きくなる。図１３は、あるゲーム状況の一例における仮想カメラの注視点を示す図である。例えば、図１３に示されるように、先頭からボートＢ２（到達距離Ｔ２）、Ｂ３（到達距離Ｔ３）、Ｂ１（到達距離Ｔ１）、Ｂ４（到達距離Ｔ４）の順で各ボートが移動している場合、重みＷＡ１〜ＷＡ４は、以下の値になる。
ＷＡ２＝１
ＷＡ３＝１＋Ｋｔ×（Ｔ２−Ｔ３）
ＷＡ１＝１＋Ｋｔ×（Ｔ２−Ｔ１）
ＷＡ４＝１＋Ｋｔ×（Ｔ２−Ｔ４）
そして、これら重みＷＡ１〜ＷＡ４を上記式８に代入することにより、仮想カメラの注視点Ａが求められる。図１３に示されるように、先頭のボートＢ２からの距離が最も遠いボートＢ４に対する重みが最も大きくなるため、仮想カメラの注視点Ａは、最も遅れているボートＢ４の設定位置Ａ４に近い位置となる（より正確には、各ボートの設定位置Ａ１〜Ａ４の重心位置よりもボートＢ４の設定位置Ａ４に近い位置となる）。なお、図１３では、注視点Ａに最も近いのはボートＢ１である。このように、注視点Ａは、各ボートの設定位置を加重平均して算出されるため、必ずしも最も遅れているボートの位置に、最も近づくとは限らない。
【０１２５】
このように、仮想カメラの注視点は、遅れているボートの設定位置により近い位置に設定される。仮想カメラの注視点は画面中央に設定されるため、画面に表示される画像は、遅れているボートのプレイヤにとって、見やすい画像（操作しやすい画像）となる。特に、先頭からより遅れているボートのプレイヤにとって、より見やすい画像が表示される。
【０１２６】
以上のようにして、仮想カメラの撮像方向及び仮想カメラの注視点を設定することによって、表示される画像は、複数のプレイヤにとって見やすく、各ボートを操作しやすい画像となる。
【０１２７】
なお、詳細は後述するが、本実施形態においては、上記複数のボートＢ（Ｂ１〜Ｂ４）が１画面に表示されるように、仮想カメラの注視点距離（仮想カメラから注視点までの距離）が設定される。しかしながら、各ボート間の距離が大きく離れた場合において、仮想カメラの注視点距離を長くすることによってすべてのボートを１画面に表示しようとすると、各ボートが小さく表示されてしまう。従って、仮想カメラの注視点距離に最大値を設け、当該最大値を超えないように、注視点距離が設定される。注視点距離が最大値に達した場合、一部のボートは画面には表示されなくなることがある。
【０１２８】
［ゲーム処理の詳細］
次に、図１４〜図１８を参照してゲーム装置３において実行されるゲーム処理の詳細について説明する。まず、ゲーム装置３における処理において用いられる主なデータについて図１４を用いて説明する。図１４は、ゲーム装置３のメインメモリ（外部メインメモリ１２又は内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。
【０１２９】
図１４に示されるように、ゲーム装置３のメインメモリには、ゲームプログラム６０、操作データ６２、及びゲーム処理用データ６７が記憶される。なお、メインメモリには、図１４に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【０１３０】
ゲームプログラム６０は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部又は全部が読み込まれてメインメモリに記憶される。ゲームプログラム６０には、仮想カメラ設定プログラム６１が含まれる。仮想カメラ設定プログラム６１は、仮想カメラの撮像方向や注視点等、仮想カメラを制御するためのプログラムである。
【０１３１】
操作データ６２は、複数のコントローラ５（入力装置８）からゲーム装置３へ送信されてくる操作データである。すなわち、操作データ６２には、第１のプレイヤが把持するコントローラ５の操作データ、第２のプレイヤが把持するコントローラ５の操作データ、第３のプレイヤが把持するコントローラ５の操作データ、及び第４のプレイヤが把持するコントローラ５の操作データが含まれる。上述したように、コントローラ５からゲーム装置３へ１／２００秒に１回の割合で操作データが送信されるので、外部メインメモリ１２に記憶される操作データ６２はこの割合で更新される。
【０１３２】
操作データ６２には、角速度データ６３、加速度データ６４、マーカ座標データ６５、及び操作ボタンデータ６６が含まれる。角速度データ６３は、ジャイロセンサユニット７のジャイロセンサ５５及び５６によって検出された角速度を示すデータである。ここでは、角速度データ６３は、図３に示すＸＹＺの３軸回りのそれぞれの角速度を示す。また、加速度データ６４は、加速度センサ３７によって検出された加速度（加速度ベクトル）を示すデータである。ここでは、加速度データ６４は、図３に示すＸＹＺの３軸の方向に関する加速度を各成分とする３次元の加速度ベクトルを示す。
【０１３３】
マーカ座標データ６５は、撮像情報演算部３５の画像処理回路４１によって算出される座標、すなわち上記マーカ座標を示すデータである。
【０１３４】
操作ボタンデータ６６は、各操作ボタン３２ａ〜３２ｉに対する入力状態を示すデータである。
【０１３５】
ゲーム処理用データ６７は、後述するゲーム処理（図１５に示すフローチャート）において用いられるデータである。ゲーム処理用データ６７は、オブジェクトデータ６８、基準方向データ６９、順方向データ７０、設定位置データ７１、平均方向データ７２、及び、注視点データ７３を含む。なお、図１４に示すデータの他、ゲーム処理用データ６７は、ゲーム処理において用いられる各種データ（ゲームパラメータを示すデータ等）を含む。
【０１３６】
オブジェクトデータ６８は、ボートＢｉ（ｉ＝１〜４）の位置Ｐｉ、速度Ｖｉ、到達距離Ｔｉ、及び、ボートＢｉの前方向ベクトルＦｄｉを示すデータの集合である。メインメモリには、ボート毎に上記情報を示すデータが記憶される。
【０１３７】
また、基準方向データ６９は、各ボートＢｉの基準方向ベクトルＤｉを示すデータである。順方向データ７０は、各ボートＢｉの順方向ベクトルＣｉを示すデータである。設定位置データ７１は、各ボートＢｉの設定位置Ａｉを示すデータである。平均方向データ７２は、上述した平均方向ベクトルＷＤを示すデータである。注視点データ７３は、上述した注視点Ａの位置を示すデータである。
【０１３８】
次に、図１５を参照して、ゲーム装置３によって実行されるゲーム処理について説明する。図１５は、ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動プログラムを実行し、これによって外部メインメモリ１２等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１５に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図１５では、本発明に直接関連しないゲーム処理については記載を省略し、上述した仮想カメラの設定に関する処理についてのみ主に説明する。また、図１５に示すステップＳ１〜ステップＳ１０の処理ループは、１フレーム毎に繰り返し実行される。
【０１３９】
まず、ステップＳ１において、ＣＰＵ１０は、操作データを取得する。具体的には、ＣＰＵ１０は、メインメモリの操作データ６２を参照して、ゲーム空間に配置された各ボートＢに対応付けされた入力装置８の操作データを取得する。次に、ＣＰＵ１０は、ステップＳ２の処理を実行する。
【０１４０】
ステップＳ２において、ＣＰＵ１０は、各ボートＢのゲーム空間における速度及び前方向を算出する。ステップＳ２の処理においては、ＣＰＵ１０は、ボートＢｉの現在の速度ＶｉとステップＳ１で取得したボートＢｉの操作データ等に基づいて、ボートＢｉの新たな速度Ｖｉを算出する（すなわち、ボートＢｉの速度Ｖｉを更新する）。また、ＣＰＵ１０は、ボートＢｉの現在の前方向と、ボートＢｉの操作データとに基づいて、ボートＢｉの前方向を算出する。具体的には、ＣＰＵ１０は、ステップＳ１で取得したボートＢｉの操作データに基づいて、ボートＢｉに加えるべき力（力の大きさ及び方向）を算出する。そして、ＣＰＵ１０は、算出された力をボートＢｉに加え、さらにゲーム空間の風の向き（風の抵抗力）やボートが浮かぶ川の流れ（水の抵抗）等を考慮して、ボートＢｉの速度Ｖｉを算出する。ボートＢｉに加えるべき力は、ボートＢｉの操作データに含まれる角速度データ６３及び加速度データ６４に基づいて、算出される。また、ＣＰＵ１０は、ボートＢｉに加えるべき力（大きさと方向）に応じた回転を現在の前方向ベクトルＦｄｉに加えることにより、新たな前方向ベクトルＦｄｉを算出する。例えば、ボートＢ１に対応付けされた入力装置８の角速度及び加速度に基づいて、当該入力装置８の姿勢及び移動速度を推定することによって、ボートＢ１に加えるべき力が算出される。そして、ＣＰＵ１０は、算出された力、水の抵抗力、風の抵抗力、及びボートＢ１の現在の速度Ｖ１に基づいて、ボートＢ１の新たな速度Ｖ１を算出する。また、ＣＰＵ１０は、算出された力に応じた回転をボートＢ１に加えることにより、ボートＢ１の前方向ベクトルＦｄ１を算出する。そして、ＣＰＵ１０は、ボートＢ１の速度Ｖ１及び前方向ベクトルＦｄ１をオブジェクトデータ６８として、メインメモリに記憶する。各ボートＢの速度及び前方向を算出してメインメモリに記憶した後、ＣＰＵ１０は、次にステップＳ３の処理を実行する。
【０１４１】
ステップＳ３において、ＣＰＵ１０は、各ボートＢのゲーム空間における位置、到達距離、及び順方向を更新する。具体的には、ＣＰＵ１０は、ボートＢｉの現在位置Ｐｉと速度Ｖｉとに基づいて、ボートＢｉの位置Ｐｉを更新する。また、ＣＰＵ１０は、更新した位置Ｐｉに応じて到達距離Ｔｉ及び順方向ベクトルＣｉを算出する。そして、ＣＰＵ１０は、各ボートＢの位置、到達距離、及び順方向をオブジェクトデータ６８として、メインメモリに記憶する。次に、ＣＰＵ１０は、ステップＳ４の処理を実行する。
【０１４２】
ステップＳ４において、ＣＰＵ１０は、各ボートＢの基準方向を算出する。具体的には、ＣＰＵ１０は、メインメモリを参照して、ボートＢｉの速度Ｖｉと前方向ベクトルＦｄｉとを取得し、これらのベクトルに所定の係数を掛けて合成することにより、ボートＢｉの基準方向Ｄｉを算出する（上記式１を参照）。そして、ＣＰＵ１０は、算出した各基準方向Ｄを基準方向データ６９としてメインメモリに記憶する。次に、ＣＰＵ１０は、ステップＳ５の処理を実行する。
【０１４３】
ステップＳ５において、ＣＰＵ１０は、各ボートＢの基準方向を加重平均した平均方向を算出する。具体的には、ＣＰＵ１０は、まずメインメモリを参照して、ボートＢｉの到達距離Ｔｉ、基準方向ベクトルＤｉ、及び順方向ベクトルＣｉを取得する。次に、ＣＰＵ１０は、基準方向ベクトルＤｉと順方向ベクトルＣｉとの内積値を算出することによって、上記順方向度合いＳｉを算出する。そして、ＣＰＵ１０は、上記式６を用いて重みＷｉを算出した後、式２を用いて平均方向ベクトルＷＤを算出し、メインメモリに記憶する。ステップＳ５の後、ＣＰＵ１０は、ステップＳ６の処理を実行する。
【０１４４】
ステップＳ６において、ＣＰＵ１０は、仮想カメラの注視点を算出する。具体的には、まず、ＣＰＵ１０は、ボートＢｉの設定位置Ａｉを上記式７により算出する。次に、ＣＰＵ１０は、式９を用いて、各設定位置Ａｉに対する重みＷＡｉを算出する。そして、ＣＰＵ１０は、算出した各設定位置を加重平均することにより、仮想カメラの注視点Ａを算出する（上記式８を参照）。次に、ＣＰＵ１０は、ステップＳ７の処理を実行する。
【０１４５】
ステップＳ７において、ＣＰＵ１０は、仮想カメラの注視点距離を算出する。ステップＳ７での処理は、仮想カメラの撮像範囲を決定する処理である。ここで、注視点距離とは、仮想カメラの位置（視点）から注視点Ａまでの距離であり、注視点距離が長いほど撮像範囲は広くなる。ステップＳ７における処理の詳細を、図１６を用いて説明する。図１６は、図１５における注視点距離の算出処理（ステップＳ７）の詳細を示すフローチャートである。
【０１４６】
まず、ＣＰＵ１０は、ステップＳ２１の処理を実行する。ステップＳ２１において、ＣＰＵ１０は、現在の注視点距離Ｌを更新する。具体的には、ＣＰＵ１０は、以下に示す式１０を用いて、注視点距離Ｌを設定する。
新たなＬ＝現在のＬ−（現在のＬ−Ｌ０）×Ｌｄ      （１０）
なお、Ｌ０は注視点距離の初期距離であり、例えば、Ｌ０＝２．５（ｍ）に設定される。また、Ｌｄは所定の定数である。式１０に示されるように、注視点距離Ｌは、徐々に初期距離Ｌ０に近づくように設定される。これにより、注視点距離Ｌが急激に変化することを防止することができ、仮想カメラの撮像範囲が急激に広くなったり、狭くなったりすることを防止することができる。ステップＳ２１の処理の後、ＣＰＵ１０は、ステップＳ２２の処理を実行する。
【０１４７】
ステップＳ２２において、ＣＰＵ１０は、最大はみ出し量Ｇを算出する。ここで、最大はみ出し量とは、各ボートＢの表示領域（撮像範囲）からのはみ出し量の最大値である。図１７は、最大はみ出し量を説明するための図である。図１７において、表示領域８１は、画面（テレビ画面）の外枠であり、表示領域８１に表示されるゲーム空間の範囲は、注視点距離Ｌによって定められる仮想カメラの撮像範囲である。図１７に示されるように、ステップＳ２１によって定められた注視点距離Ｌでは、ボートＢ３及びＢ４の全体が表示されるが、仮想カメラの撮像範囲が狭いため、ボートＢ１の一部は表示領域８１からはみ出している。このボートＢ１を表示領域８１に収めるため、最大はみ出し量Ｇが算出される。具体的には、ＣＰＵ１０は、各ボートＢの先端及び後端の位置（画面上の座標位置）を求め、画面に設定された余白枠８０からの距離を求める。そして、ＣＰＵ１０は、余白枠８０からの距離が最大となる最大はみ出し量Ｇを求める。なお、すべてのボートＢが表示領域８１からはみ出していない場合、最大はみ出し量Ｇは０となる。次に、ＣＰＵ１０は、ステップＳ２３の処理を実行する。
【０１４８】
ステップＳ２３において、ＣＰＵ１０は、Ｌ＋Ｇ×Ｌｇが注視点距離の最大値Ｌｍａｘより大きいか否かを判定する。ここで、ＧはステップＳ２２で算出された最大はみ出し量Ｇであり、Ｌｇは所定の定数である。ステップＳ２３の処理は、注視点距離Ｌが最大値Ｌｍａｘを越えないようにするための処理である。注視点距離Ｌが長いほど仮想カメラの撮像範囲は広くなるが、各ボートは小さく表示されるため、プレイヤにとって見難い。このため、注視点距離に最大値が設定される。判定結果が否定の場合、ＣＰＵ１０は、次にステップＳ２４の処理を実行する。一方、判定結果が肯定の場合、ＣＰＵ１０は、図１６に示される注視点距離の算出処理を終了する。
【０１４９】
ステップＳ２４において、ＣＰＵ１０は、注視点距離Ｌを更新する。具体的には、ＣＰＵ１０は、ステップＳ２１で算出した注視点距離ＬにＧ×Ｌｇを加えることにより、新たな注視点距離Ｌを算出し、メインメモリに記憶する。ステップＳ２４で注視点距離Ｌが設定されることによって、表示領域８１からはみ出しているボートが存在している場合、当該はみ出しているボートを表示領域に含むように仮想カメラの撮像範囲（表示領域）が広くなる（すなわち、画面全体が縮小表示される）。また、Ｇ×Ｌｇを加えることによって、徐々に撮像範囲が広くなるため、急激に表示領域が拡大されることを防止することができる。ステップＳ２４の後、ＣＰＵ１０は、図１６に示される注視点距離の算出処理を終了する。
【０１５０】
なお、上記ステップＳ２３において、注視点距離Ｌが最大値Ｌｍａｘを越えないように調整されるが、注視点距離Ｌが最大値Ｌｍａｘになった場合において表示領域８１に全く表示されないボートが存在する場合、画面の端に吹き出しを表示することにより、当該表示されないボートのおおよその位置と姿勢を表示するようにしてもよい。
【０１５１】
図１５に戻り、ＣＰＵ１０は、次にステップＳ８の処理を実行する。ステップＳ８において、ＣＰＵ１０は、先頭以外のボートに牽引力を発生させる。ここでの処理は、先頭以外のボートの先端部分にコース順方向の力を加えることによって、先頭以外のボートの移動を補正する処理である。すなわち、ステップＳ８においては、先頭以外のボートをコース順方向に加速させると同時に、ボートの向き（前方向）をコース順方向に近づけることによって、先頭以外のボートの移動する方向を補正する。この処理によって、先頭以外のボートがレースから遅れ過ぎないようにすることができる。図１８は、先頭以外のボートに対する牽引力を説明するための図である。例えば、ＣＰＵ１０は、図１８に示されるように、各ボートＢ（Ｂ１、Ｂ３、及びＢ４）の先端部分に対して、各ボートＢの順方向に、先頭のボートＢ２までの距離に応じた大きさの牽引力Ｆｉ（Ｆ１、Ｆ３、及びＦ４）を加える。具体的には、ＣＰＵ１０は、ボートＢｉに対する牽引力Ｆｉを以下の式１１により、算出する。
Ｆｉ＝ｆｉ×Ｃｉ      （１１）
ここで、ｆｉは、先頭のボートまでの距離に応じて変化する値（０．０〜１．０の範囲）である。具体的には、ｆｉは、先頭の到達距離Ｔ０からボートＢｉの到達距離Ｔｉを引いた値に基づいて定められる。例えば、Ｔ０−Ｔｉが所定の下限値（例えば、５ｍ）より小さい場合、ｆｉは０に設定され、Ｔ０−Ｔｉが所定の上限値（例えば、１５ｍ）より大きい場合、ｆｉは１に設定される。Ｔ０−Ｔｉが下限値から上限値の間の値である場合、その値（Ｔ０−Ｔｉ）に比例してｆｉが設定される。そして、ＣＰＵ１０は、ステップＳ８で算出された牽引力を各ボートＢの先端部分に加えることによって、各ボートの速度、位置、及び、向き（前方向）を更新する。ステップＳ８の処理の後、ＣＰＵ１０は、次にステップＳ９の処理を実行する。
【０１５２】
ステップＳ９において、ＣＰＵ１０は、仮想カメラの撮像方向を設定する。具体的には、ＣＰＵ１０は、ステップＳ５で算出された平均方向に基づいて、仮想カメラの撮像方向を決定する。例えば、ＣＰＵ１０は、ステップＳ５で算出された平均方向ベクトルＷＤに所定の下方向ベクトル（ゲーム空間の下方向（ｚ軸負方向）のベクトル）を加えることにより、仮想カメラの撮像方向を算出する。なお、下方向ベクトルは、上述した注視点距離Ｌに応じて定められ、例えば、注視点距離Ｌが長いほど（仮想カメラによる撮像範囲が広いほど）、下方向ベクトルが大きく設定される。従って、仮想カメラの撮像範囲（表示領域）が広いほど、より上方から下方にコースを見下ろした画像が表示される。このように、注視点距離が長いほど、仮想カメラの撮像方向を下方向に傾けることにより、プレイヤにとって見やすい画像が表示される。すなわち、撮像範囲が広い場合、当該撮像範囲に含まれるボートのうち、最も遠くに存在するボート（例えば、図８に示される先頭のボートＢ２）は、小さく表示され、当該ボートＢ２の周辺の環境も小さく表示される。この場合において、仮想カメラの撮像方向が水平方向に近い場合（加える下方向ベクトルが小さい場合）、ボートＢ２を操作するプレイヤは、ボートＢ２の位置及び周辺のコースや障害物等の位置関係を把握し難い。逆に、ゲーム空間を上方から見た場合、ボート及び周辺の環境が小さく表示された場合であっても、上記位置関係を容易に把握することができる。ステップＳ９の処理の後、ＣＰＵ１０は、次にステップＳ１０の処理を実行する。
【０１５３】
ステップＳ１０において、ＣＰＵ１０は、その他のゲーム処理を実行する。例えば、ＣＰＵ１０は、ボートと障害物との衝突判定等の処理を実行し、判定結果に応じて、所定の処理を実行する（例えば、ボートが障害物と衝突した場合、ボートを減速させたり、ボートの移動方向や向きを変えたりする）。また、ＣＰＵ１０は、ボートがゴールに達したか否かの判定を行い、判定結果に応じて、所定の処理を実行する。更に、ＣＰＵ１０は、表示処理を実行する。これにより、上述のようにして算出された仮想カメラの撮像方向、注視点、及び注視点距離に基づいて定められる表示領域（撮像範囲）に存在するボートやパドル、障害物、コース周辺の環境オブジェクト等の画像がテレビ２に表示される。
【０１５４】
次に、ステップＳ１１において、ＣＰＵ１０は、ゲーム終了か否かを判定し、肯定の場合、ゲーム処理を終了し、否定の場合、ステップＳ１に戻って、ゲーム処理を繰り返す。以上で、本実施形態に係るゲーム処理は終了する。
【０１５５】
以上のように、本実施形態では、各ボートの基準方向を加重平均することによって平均方向を求め、仮想カメラの撮像方向を設定する。さらに、各ボートの設定位置（ボートの位置と基準方向によって定まる位置）を加重平均することによって仮想カメラの注視点が設定される。このようにして設定された仮想カメラによって撮像された画像は、各プレイヤにとって見やすく、操作しやすい画像となる。
【０１５６】
なお、本実施形態では、各ボートの速度と前方向とによって各ボートの基準方向が算出され、算出された基準方向を加重平均することによって、上記平均方向が算出された。他の実施形態では、各ボートの基準方向は、各ボートの速度（移動方向）又は前方向の何れかに応じて定められ、これを用いて上記平均方向が算出されてもよい。例えば、各ボートの移動方向を加重平均することによって、上記平均方向が算出されてもよい。
【０１５７】
また、本実施形態では、各ボートの基準方向は当該ボートの速度と前方向ベクトルを用いて上記式１により算出された。他の実施形態では、具体的な計算方法はこれに限らず、ボートの基準方向は、ボートの移動方向とボートの向きとに基づいて、どのような計算方法によって求められてもよい。例えば、各ボートの基準方向は、単純にボートの速度と前方向ベクトルを加算することによって求められてもよいし、ボートの速度と前方向ベクトルとに所定の方向（ベクトル）を加えて求められてもよい。また、各ボートの基準方向は、ボートの速度と後方向ベクトル（前方向ベクトルとは逆方向のベクトル）とを用いて算出されてもよいし、ボートの速度と右方向ベクトル（前方向ベクトルとの角度が直角のベクトルであって、ボートを右から見た場合のベクトル）とを用いて算出されてもよい。このようにして算出される各ボートの基準方向は、各ボートを前から見た場合の方向であったり、各ボートを右から見た場合の方向であったりする。すなわち、上記実施形態では、各ボートの基準方向は、各ボートの視点からゲーム空間を見た方向であるとして説明したが、他の実施形態では、各ボートの基準方向は、各ボートの向きと移動方向とに基づいて定められる方向であり、各ボートの視点からゲーム空間を見た方向に限られない。
【０１５８】
また、本実施形態では、先頭のボートから遠いボートほど（不利なボートほど）重みを重くして上記平均方向を算出したが、他の実施形態では、先頭のボートから近いボートほど（有利なボートほど）重みを重くして上記平均方向を算出してもよい。これにより、仮想カメラの撮像方向は、先頭のボートの基準方向に近い方向になり、先頭のボートほど有利になる。
【０１５９】
また、他の実施形態に係るゲームでは、当該ゲームのルールにおいて有利な状況（又は不利な状況）であるオブジェクトほど、重みを重くして上記平均方向が算出されてもよい。例えば、複数のオブジェクトが勝ち点（勝利数）や勝率、ポイント数を競うゲームにおいて、勝ち点や勝率、ポイント数の大きい（又は小さい）オブジェクトほど、有利な状況（又は不利な状況）であるとして、重みを重くしてもよい。
【０１６０】
また、本実施形態では、ボートの設定位置は、当該ボートの位置と基準方向とに基づいて算出された（式７）。他の実施形態では、ボートの設定位置は、当該ボートの位置のみに基づいて、算出されてもよい。
【０１６１】
また、各ボートの基準方向Ｄｉや設定位置Ａｉに対する重みは、上述した方法（式６又は式９）以外の方法によって算出されてもよい。例えば、各ボート（各ボートの基準方向Ｄｉや設定位置Ａｉ）に対する重み付けは、予め定められてもよい。例えば、ゲーム開始前に複数のプレイヤの熟練度に応じて、プレイヤ自身によって重み付けが設定されてもよい。この場合において、熟練度の低いプレイヤに対しては、重みが比較的重く設定され、熟練度の高いプレイヤに対しては、重みが比較的軽く（あるいは、０に）設定されてもよい。プレイヤ自身によって予めカメラ設定をすることにより、熟練度の低いプレイヤにとって比較的有利なカメラ設定（撮像方向と注視点）になるようにすることができる。これにより、熟練度の低いプレイヤが見やすく、操作しやすい画像が表示されるため、他の熟練度の高いプレイヤに対するハンディキャップになる。このように、予め各プレイヤに有利又は不利な条件を設定することによって、プレイヤの熟練度に応じたハンディキャップを設定することができる。
【０１６２】
上述のように、他の実施形態では、各オブジェクトの移動方向及び／又は各オブジェクトの向きに基づいて、上記各オブジェクトの基準方向が算出されてもよい。そして、算出された各基準方向を所定の条件で加重平均することによって、上記平均方向が算出されてもよい。ここで、所定の条件とは、上述したように、有利な状況（又は不利な状況）ほど重みを重くしたり、有利な条件（又は不利な条件）ほど重みを重くしたりする条件である。すなわち、各基準方向に対する重み付けはどのような条件によって行われてもよく、例えば、各プレイヤによる入力装置８の操作に応じて、入力装置８に対応付けされたオブジェクト（の基準方向や設定位置）に対する重み付けが変更されてもよい。
【０１６３】
また、本実施形態では、仮想カメラの撮像方向は、上記平均方向に所定の補正（所定の下方向ベクトルを加える補正）を行うことにより求められたが、他の実施形態では、仮想カメラの撮像方向を上記平均方向に一致させてもよい。
【０１６４】
また、本実施形態では、各ボートの基準方向を加重平均することによって上記平均方向を算出したが、他の実施形態では、各基準方向を単純に平均することによって、上記平均方向が求められてもよい。同様に、他の実施形態では、仮想カメラの注視点は、各ボートの設定位置Ａｉを単純に平均することによって、求められてもよい。また、仮想カメラの注視点は、各ボートの位置（ゲーム空間における位置Ｐｉ）を平均することによって、求められてもよい。
【０１６５】
また、本実施形態では、上述した方法により仮想カメラの撮像方向と注視点とを設定したが、他の実施形態では、上述の方法により仮想カメラの撮像方向のみを設定し、注視点は他の方法により設定されてもよい（例えば、常にコースの中心を注視点に設定する等）。また、仮想カメラの注視点のみを上述した方法により設定し、仮想カメラの撮像方向は、他の方法により設定されてもよい（例えば、当該注視点におけるコース順方向に設定する等）。
【０１６６】
また、本実施形態では、画面に表示される複数のオブジェクトの基準方向を加重平均することによって、仮想カメラの撮像方向を算出した。他の実施形態では、表示される複数のオブジェクトのうち、一部のオブジェクトの基準方向を加重平均することによって、仮想カメラの撮像方向を算出してもよい。例えば、ゲーム空間にプレイヤキャラクタ以外のゲームキャラクタが存在する場合、当該ゲームキャラクタの基準方向は仮想カメラの撮像方向には影響しないようにしてもよい。
【０１６７】
また、本実施形態では、カヌーゲームを例にしたが、他の様々なゲームに上記仮想カメラの設定方法が適用されてもよい。上述した方法は、複数のプレイヤオブジェクトが１画面に表示される種々のゲーム、例えば、短距離走のようなトラック競技（陸上競技）や水泳等のゲーム、サッカーやラグビーゲーム等にも適用されてもよい。また、複数のオブジェクトが平面上を移動するゲームに限らず、３次元ゲーム空間の上下方向にも移動可能な複数のオブジェクト（例えば、飛行機等）を移動させるゲームにも、上述した仮想カメラの設定方法は適用可能である。
【０１６８】
また、本発明のゲームプログラムは、光ディスク４等の外部記憶媒体を通じてゲーム装置３に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置３に供給されてもよい。また、携帯型のゲーム装置によって上記プログラムが実行されてもよい。また、ゲームプログラムは、ゲーム装置３内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体（コンピュータ読み取り可能な記憶媒体）としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状の記憶媒体の他に、不揮発性半導体メモリでもよい。
【０１６９】
また、本実施形態においては、ゲーム装置３のＣＰＵ１０がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置３が備える専用回路によって行われてもよい。
【符号の説明】
【０１７０】
１  ゲームシステム
２  テレビ
３  ゲーム装置
４  光ディスク
５  コントローラ
６  マーカ部
７  ジャイロセンサユニット
８  入力装置
１０  ＣＰＵ
１１ｅ  内部メインメモリ
１２  外部メインメモリ
Ａ  仮想カメラの注視点
Ｂ  ボート
Ｃ  順方向ベクトル
Ｄ  基準方向ベクトル
Ｔ  到達距離
【図１】
2010273839.tif 000003
【図２】
2010273839.tif 000004
【図３】
2010273839.tif 000005
【図４】
2010273839.tif 000006
【図５】
2010273839.tif 000007
【図６】
2010273839.tif 000008
【図７】
2010273839.tif 000009
【図８】
2010273839.tif 000010
【図９】
2010273839.tif 000011
【図１０】
2010273839.tif 000012
【図１１】
2010273839.tif 000013
【図１２】
2010273839.tif 000014
【図１３】
2010273839.tif 000015
【図１４】
2010273839.tif 000016
【図１５】
2010273839.tif 000017
【図１６】
2010273839.tif 000018
【図１７】
2010273839.tif 000019
【図１８】
2010273839.tif 000020
【手続補正書】
【提出日】平成21年8月14日(2009.8.14)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2010273839.tif 000021
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１４
【補正方法】変更
【補正の内容】
【図１４】
2010273839.tif 000022
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2010273839.tif 000023