ゲームプログラム及びゲーム装置
【課題】複数のオブジェクトを表示装置に表示しつつ、プレイヤにとって当該オブジェクトを操作しやすい表示をすることが可能なゲーム装置及びゲームプログラムを提供する。
【解決手段】ゲーム装置は、各ボートの速度ベクトルと前方向ベクトルとを所定の割合で合成することにより、各ボートの基準方向を算出する。次に、ゲーム装置は、算出した各ボートの基準方向を、先頭のボートからの距離に応じて重みで加重平均した平均方向を算出する。そして、ゲーム装置は、算出した平均方向に基づいて、仮想カメラの撮像方向を算出する。
【解決手段】ゲーム装置は、各ボートの速度ベクトルと前方向ベクトルとを所定の割合で合成することにより、各ボートの基準方向を算出する。次に、ゲーム装置は、算出した各ボートの基準方向を、先頭のボートからの距離に応じて重みで加重平均した平均方向を算出する。そして、ゲーム装置は、算出した平均方向に基づいて、仮想カメラの撮像方向を算出する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームプログラム及びゲーム装置に関し、より特定的には、仮想空間内の複数のオブジェクトを表示装置に表示させるゲームプログラム及びゲーム装置に関する。
【背景技術】
【0002】
従来より、複数のオブジェクトを表示装置に表示させるゲーム装置が存在する。例えば、特許文献1に記載のゲーム装置では、2体の敵を表示させるために、仮想カメラの注視点を2体の敵の中間位置に設定している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−165647号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載の技術では、以下の課題があった。すなわち、仮想カメラの注視点を上記のように設定することにより、3次元仮想空間内に存在する複数のオブジェクトが表示装置の表示範囲に含まれるようにすることはできたが、必ずしも表示されたオブジェクトをプレイヤが操作しやすい表示になっているとは限らなかった。
【0005】
それ故、本発明の目的は、複数のオブジェクトを表示装置に表示しつつ、プレイヤにとって当該オブジェクトを操作しやすい表示をすることが可能なゲームプログラム及びゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号及び補足説明等は、本発明の理解を助けるために後述する実施例との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0007】
本発明は、複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムである。当該ゲームプログラムは、上記コンピュータを、オブジェクト移動手段(S3を実行するCPU10。以下、単にステップ番号のみを記載する。)と、平均方向算出手段(S5)と、撮像方向設定手段(S9)と、表示制御手段(S10)として機能させる。オブジェクト移動手段は、上記複数のオブジェクト(ボートB1〜B4)を上記仮想空間内で移動させる。平均方向算出手段は、上記各オブジェクトの移動方向(速度)及び/又は向き(前方向)に基づいた方向を当該オブジェクトの基準方向としてそれぞれ算出し、算出した上記複数のオブジェクトの各基準方向を、第1の条件(式6)で加重平均した平均方向(平均方向ベクトルWD)を算出する。撮像方向設定手段は、上記平均方向に基づき、上記仮想カメラの撮像方向を設定する。表示制御手段は、上記撮像方向設定手段で設定された撮像方向に基づいて、上記仮想空間を撮像したものを上記表示装置に表示する。
【0008】
なお、上記において加重平均とは、単なる平均を含む。
【0009】
上記によれば、各オブジェクトの移動方向及び/又は向きに基づいた基準方向をそれぞれ算出し、算出した各オブジェクトの基準方向を、第1の条件で加重平均することによって、平均方向を算出することができる。そして、平均方向に基づいて仮想カメラの撮像方向を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【0010】
本発明では、上記第1の条件は、上記ゲームプログラムで実行されるゲームにおいて、上記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの上記基準方向に対する重み付けを重くするものであってもよい。
【0011】
なお、オブジェクトが有利な状況とは、上記ゲームのルールにおいて当該オブジェクトのゲームの進行状況が他のオブジェクトと比較して有利である状況や、上記ゲームにおける当該オブジェクトに与えられた条件が他のオブジェクトに与えられた条件と比較して有利な状況である場合である。
【0012】
上記によれば、プレイヤが操作するオブジェクトが有利な状況であるほど、当該プレイヤにとって操作しやすい画像を表示することができる。
【0013】
本発明では、上記有利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトよりも大きい状況であってもよい。
【0014】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つが他のオブジェクトよりも大きい場合、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【0015】
本発明では、上記第1の条件は、上記ゲームプログラムで実行されるゲームにおいて、上記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの上記基準方向に対する重み付けを重くするものであってもよい。
【0016】
なお、オブジェクトが不利な状況とは、上記ゲームのルールにおいて当該オブジェクトのゲームの進行状況が他のオブジェクトと比較して不利である状況や、上記ゲームにおける当該オブジェクトに与えられた条件が他のオブジェクトに与えられた条件と比較して不利な状況である場合である。
【0017】
上記によれば、プレイヤが操作するオブジェクトが不利な状況であるほど、当該プレイヤにとって操作しやすい画像を表示することができる。
【0018】
本発明では、上記不利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトよりも小さい状況であってもよい。
【0019】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つが他のオブジェクトよりも小さい場合、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【0020】
本発明では、上記ゲームプログラムは、上記コンピュータを、平均位置算出手段(S6)と、注視点設定手段(S6)として、更に機能させてもよい。平均位置算出手段は、上記複数のオブジェクトの位置に基づいた各位置を、第2の条件(式9)で加重平均した平均位置を算出する。注視点設定手段は、上記平均位置に基づいて、上記仮想カメラの注視点(A)を設定する。そして、上記表示制御手段は、上記注視点設定手段で設定された注視点にも基づいて、上記仮想空間を撮像したものを上記表示装置に表示する。
【0021】
上記によれば、各オブジェクトの位置に基づいた各位置を、第2の条件で加重平均することによって、仮想カメラの注視点を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【0022】
本発明では、上記ゲームプログラムは、上記コンピュータを、設定位置算出手段(S6)として、更に機能させてもよい。設定位置算出手段は、上記各オブジェクトの位置に基づいて、当該各オブジェクトに対する設定位置(Ai)をそれぞれ算出する。そして、上記平均位置算出手段は、上記設定位置算出手段によって算出された各設定位置を、上記第2の条件で加重平均して上記平均位置を算出する。
【0023】
上記によれば、各オブジェクトの位置に基づいて、各オブジェクトに対する設定位置を算出し、各設定位置を第2の条件で加重平均することによって、仮想カメラの注視点を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【0024】
本発明では、上記設定位置算出手段は、上記各オブジェクトの基準方向と位置とに基づいて、当該各オブジェクトに対する設定位置をそれぞれ算出してもよい。
【0025】
上記によれば、各オブジェクトの位置に加えて、各オブジェクトの基準方向に基づいて、各オブジェクトの設定位置を算出することができる。
【0026】
本発明では、上記第2の条件は、上記ゲームプログラムで実行されるゲームにおいて上記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものであってもよい。
【0027】
上記によれば、プレイヤが操作するオブジェクトが有利な状況であるほど、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、有利な状況であるオブジェクトを操作しているプレイヤにとって、見やすく操作しやすい画像を表示することができる。
【0028】
本発明では、上記有利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトと比較して大きい状況であってもよい。
【0029】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つが他のオブジェクトよりも大きい場合、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【0030】
本発明では、上記第2の条件は、上記ゲームプログラムで実行されるゲームにおいて上記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものであってもよい。
【0031】
上記によれば、プレイヤが操作するオブジェクトが不利な状況であるほど、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、不利な状況であるオブジェクトを操作しているプレイヤにとって、見やすく操作しやすい画像を表示することができる。
【0032】
本発明では、上記不利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトと比較して小さい状況であってもよい。
【0033】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つが他のオブジェクトよりも小さい場合、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【0034】
本発明では、上記ゲームプログラムは、上記コンピュータを、外れ度合い算出手段(S22)として更に機能させてもよい。外れ度合い算出手段は、上記複数のオブジェクトの少なくとも何れか1つが上記仮想カメラによる撮像範囲から外れようとしている度合いを算出する。そして、上記表示制御手段は、上記外れ度合い算出手段で算出された外れ度合いに応じて、上記撮像範囲を拡大(S24)もしくは縮小(S21)して、上記仮想空間を撮像したものを上記表示装置に表示する。
【0035】
上記によれば、複数のオブジェクトが撮像範囲に収まらない場合に撮像範囲を拡大したり、複数のオブジェクトが撮像範囲に収まる場合に撮像範囲を縮小したりすることができる。
【0036】
本発明では、上記表示制御手段は、上記外れ度合い算出手段で算出された外れ度合いに応じて、上記撮像方向又は当該撮像方向とは逆の方向へ上記仮想カメラを移動させることにより、上記撮像範囲を拡大もしくは縮小してもよい。
【0037】
上記によれば、外れ度合いに応じて注視点距離を設定することができる。これにより、撮像範囲を拡大又は縮小することができる。
【0038】
本発明では、上記ゲームプログラムは、上記コンピュータを、順方向算出手段(S3)と、オブジェクト移動方向補正手段(S8)として、更に機能させてもよい。順方向算出手段は、上記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する。オブジェクト移動方向補正手段は、上記複数のオブジェクトの順方向に基づいて、当該各オブジェクトの移動する方向を補正する。
【0039】
上記によれば、各オブジェクトの順方向を算出することができ、各オブジェクトの順方向に基づいて各オブジェクトの移動する方向を補正することができる。
【0040】
本発明では、上記ゲームプログラムは、上記コンピュータを、外力発生手段(S8)として更に機能させてもよい。外力発生手段は、上記複数のオブジェクトに対して、上記順方向算出手段で算出された順方向の外力を発生させる。そして、上記オブジェクト移動方向補正手段は、上記外力発生手段で発生させた外力を上記各オブジェクトに加えることによって、上記オブジェクトの移動する方向を補正する。
【0041】
上記によれば、オブジェクトに対して当該オブジェクトの順方向への外力を発生させることができる。これにより、オブジェクトは進むべき方向に容易に進むことができる。
【0042】
本発明では、上記ゲーム装置には少なくとも1つの入力装置(8)が接続され、上記オブジェクト移動手段は、上記入力装置からの入力に基づいて、上記複数のオブジェクトのうちの少なくとも1つのオブジェクトを移動させてもよい。
【0043】
上記によれば、入力装置からの入力に基づいて、上記オブジェクトを移動させることができる。
【0044】
本発明では、上記入力装置は、上記複数のオブジェクトそれぞれに対応付けされて上記ゲーム装置に接続されてもよい。
【0045】
上記によれば、複数の入力装置を複数のオブジェクトにそれぞれ対応付けさせることができ、複数のプレイヤがゲームを行うことができる。
【0046】
本発明では、上記ゲームプログラムで実行されるゲームは、上記仮想空間内の所定の位置(ゴール)に到達する早さを競うゲームであり、上記仮想空間内の上記所定の位置に近いほど当該ゲームのルールにおいて有利な状況であると判断されてもよい。
【0047】
上記によれば、上記所定の位置に近いオブジェクトほど有利な状況であると判断することができる。
【0048】
本発明では、上記平均方向算出手段は、上記各オブジェクトの移動方向と向きとをそれぞれ所定の割合で合成することにより算出した上記各基準方向を、上記第1の条件で加重平均した平均方向を算出してもよい。
【0049】
上記によれば、オブジェクトの移動方向と向きとを合成することによって、当該オブジェクトの基準方向を算出することができる。
【0050】
本発明では、上記ゲームプログラムは、上記コンピュータを、順方向算出手段(S3)として更に機能させてもよい。順方向算出手段は、上記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する。そして、上記平均方向算出手段は、上記順方向算出手段で算出された上記各オブジェクトの順方向と、当該各オブジェクトの基準方向との角度に応じて、当該各オブジェクトの上記基準方向に対する重み付けをそれぞれ設定する。
【0051】
上記によれば、上記平均方向を算出する際、オブジェクトの順方向と当該オブジェクトの基準方向との角度に応じて、当該オブジェクトの基準方向に対する重みを設定することができる。
【0052】
本発明では、上記平均方向算出手段は、上記オブジェクトの順方向と基準方向との角度が小さいほど、当該オブジェクトの上記基準方向に対する重み付けを重く設定してもよい。
【0053】
上記によれば、上記角度が小さいほど重みを重くすることができる。従って、順方向と基準方向が一致しているオブジェクトを操作しているプレイヤにとって、見やすく操作しやすい画像を表示することができる。
【0054】
本発明では、上記ゲームプログラムは、上記コンピュータを、順方向算出手段(S3)として更に機能させてもよい。順方向算出手段は、上記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する。そして、上記平均方向算出手段は、上記複数のオブジェクトの基準方向と、当該複数のオブジェクトの順方向を平均した方向(Dm)とを、上記第1の条件で加重平均した平均方向を算出する(式2)。
【0055】
上記によれば、上記平均方向を算出する際、各オブジェクトの基準方向に加えて、各オブジェクトの上記順方向を平均した方向を加味することができる。これにより、上記平均方向を平均的な順方向(複数のオブジェクトの順方向を平均した方向)にある程度近づけることができる。例えば、複数のオブジェクトがあるコースを進行するゲームにおいて、上記平均方向をコース順方向にある程度近づけることができる。
【0056】
本発明は、複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムである。当該ゲームプログラムは、上記コンピュータを、オブジェクト移動手段(S3)と、設定位置算出手段(S6)と、平均位置算出手段(S6)と、注視点設定手段(S6)と、表示制御手段(S10)として機能させる。オブジェクト移動手段は、上記複数のオブジェクトを上記仮想空間内で移動させる。設定位置算出手段は、上記オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向として、当該オブジェクトの基準方向と位置とに基づいて算出される設定位置を、上記複数のオブジェクトに対してそれぞれ算出する。平均位置算出手段は、上記設定位置算出手段によって算出される各設定位置を、所定の条件で加重平均した平均位置を算出する。注視点設定手段は、上記平均位置に基づいて、上記仮想カメラの注視点を設定する。そして、表示制御手段は、上記注視点設定手段で設定された注視点に基づいて、上記仮想空間を撮像したものを上記表示装置に表示する。
【0057】
上記によれば、オブジェクトの基準方向と位置とに基づいて算出される各設定位置を、所定の条件で加重平均することによって、仮想カメラの注視点を算出することができる。これにより、仮想カメラの注視点を定めることができ、複数のオブジェクトを見やすく表示することができる。
【0058】
また、本発明は、上記ゲームプログラムを実行するゲーム装置の形態で実施されてもよい。
【発明の効果】
【0059】
本発明によれば、各オブジェクトの移動方向及び/又は向きに基づいて算出される各オブジェクトの基準方向を、第1の条件で加重平均することによって、平均方向を算出することができる。そして、平均方向に基づいて仮想カメラの撮像方向を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【図面の簡単な説明】
【0060】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の構成を示すブロック図
【図3】入力装置8の外観構成を示す斜視図
【図4】コントローラ5を下側前方から見た斜視図
【図5】コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図
【図6】コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図
【図7】入力装置8の構成を示すブロック図
【図8】本実施形態で想定するゲームの画面の一例を示した図
【図9】ボートB1の視点からゲーム空間を見た場合の画像を示した図
【図10】ボートBの基準方向の算出方法を説明するための図
【図11】到達距離と順方向を説明するための図
【図12】あるゲーム状況の一例をゲーム空間の上方から見た図
【図13】あるゲーム状況の一例における仮想カメラの注視点を示す図
【図14】ゲーム装置3のメインメモリ(外部メインメモリ12又は内部メインメモリ11e)に記憶される主なデータを示す図
【図15】ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート
【図16】図15における注視点距離の算出処理(ステップS7)の詳細を示すフローチャート
【図17】最大はみ出し量を説明するための図
【図18】先頭以外のボートに対する牽引力を説明するための図
【発明を実施するための形態】
【0061】
[ゲームシステムの全体構成]
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置及びゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、入力装置8、及びマーカ部6を含む。本システムは、入力装置8を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0062】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0063】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6R及び6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0064】
入力装置8は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与えるものである。本実施形態では、入力装置8はコントローラ5とジャイロセンサユニット7とを含む。詳細は後述するが、入力装置8は、コントローラ5に対してジャイロセンサユニット7が着脱可能に接続されている構成である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
【0065】
[ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、及びAV−IC15等を有する。
【0066】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14及びAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSIの内部構成について後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11e又は外部メインメモリ12に読み出したデータを書き込む。
【0067】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、及び内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0068】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0069】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0070】
上述のように生成された画像データ及び音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0071】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、及びメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0072】
入出力プロセッサ11aは、無線通信モジュール18及びアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18及びアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22及び無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データ又は途中データ)が記憶されてもよい。
【0073】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23及び無線コントローラモジュール19を介して受信し、内部メインメモリ11e又は外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0074】
さらに、入出力プロセッサ11aには、拡張コネクタ20及びメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0075】
ゲーム装置3には、電源ボタン24、リセットボタン25、及びイジェクトボタン26が設けられる。電源ボタン24及びリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0076】
[入力装置8の構成]
次に、図3〜図6を参照して、入力装置8について説明する。図3は、入力装置8の外観構成を示す斜視図である。図4は、コントローラ5を下側前方から見た斜視図である。
【0077】
図3及び図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、及び、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0078】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、及び電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32f及び電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32f又は電源ボタン32hを誤って押下することを防止することができる。
【0079】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、ジャイロセンサユニット7や他のコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0080】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dの何れか1つが点灯する。
【0081】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6R及び6Lからの赤外光を少なくとも透過する材質で構成される。
【0082】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0083】
次に、図5及び図6を参照して、コントローラ5の内部構造について説明する。図5及び図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0084】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、及びスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)及びアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0085】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、及び画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0086】
さらに、基板30の下主面上には、上記マイコン42及びバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5及び図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
【0087】
また、ジャイロセンサユニット7は、3軸回りの角速度を検知するジャイロセンサ(図7に示すジャイロセンサ55及び56)を有する。ジャイロセンサユニット7は、コントローラ5のコネクタ33に着脱可能に装着される。ジャイロセンサユニット7の前端(図3に示すZ軸正方向側の端部)には、コネクタ33に接続可能なプラグ(図7に示すプラグ53)が設けられる。さらに、プラグ53の両側にはフック(図示せず)が設けられる。ジャイロセンサユニット7がコントローラ5に対して装着される状態では、プラグ53がコネクタ33に接続されるとともに、上記フックがコントローラ5の係止穴33aに係止する。これによって、コントローラ5とジャイロセンサユニット7とがしっかりと固定される。また、ジャイロセンサユニット7は側面(図3に示すX軸方向の面)にボタン51を有している。ボタン51は、それを押下すれば上記フックの係止穴33aに対する係止状態を解除することができるように構成されている。したがって、ボタン51を押下しながらプラグ53をコネクタ33から抜くことによって、ジャイロセンサユニット7をコントローラ5から離脱することができる。
【0088】
また、ジャイロセンサユニット7の後端には、上記コネクタ33と同形状のコネクタが設けられる。したがって、コントローラ5(のコネクタ33)に対して装着可能な他の機器は、ジャイロセンサユニット7のコネクタに対しても装着可能である。なお、図3においては、当該コネクタに対してカバー52が着脱可能に装着されている。
【0089】
なお、図3〜図6に示したコントローラ5及びジャイロセンサユニット7の形状や、各操作ボタンの形状、加速度センサやバイブレータの数及び設置位置等は単なる一例に過ぎず、他の形状、数、及び設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向は何れの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0090】
図7は、入力装置8(コントローラ5及びジャイロセンサユニット7)の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、及び加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
【0091】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示す操作ボタンデータを通信部36のマイコン42へ出力する。
【0092】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0093】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、及び画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるマーカ部6のマーカ6R及び6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6R及び6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6R及び6L)の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0094】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0095】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸又は2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)又はSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。なお、加速度センサ37は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0096】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)及び前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置8(コントローラ5)を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトル(ax,ay,az)として表される。以下では、加速度センサ37によって検出される3軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【0097】
加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、加速度データ及び後述する角速度データに基づいてコントローラ5の姿勢を判断する。
【0098】
加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。本実施形態において、加速度センサ37は、コントローラ5の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【0099】
なお、加速度センサ37から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)又はコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測又は算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度又は姿勢を判定することができる。
【0100】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置又は他の種類の専用の処理装置を備えていてもよい。組込み式又は専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0101】
通信部36は、マイコン42、メモリ43、無線モジュール44、及びアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。また、マイコン42はコネクタ33に接続されている。ジャイロセンサユニット7から送信されてくるデータは、コネクタ33を介してマイコン42に入力される。以下、ジャイロセンサユニット7の構成について説明する。
【0102】
ジャイロセンサユニット7は、プラグ53、マイコン54、2軸ジャイロセンサ55、及び1軸ジャイロセンサ56を備えている。上述のように、ジャイロセンサユニット7は、3軸(本実施形態では、XYZ軸)周りの角速度を検出し、検出した角速度を示すデータ(角速度データ)をコントローラ5へ送信する。
【0103】
2軸ジャイロセンサ55は、X軸周りの角速度及びY軸周りの(単位時間あたりの)角速度を検出する。また、1軸ジャイロセンサ56は、Z軸周りの(単位時間あたりの)角速度を検出する。なお、本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、Z軸周り、X軸周り、Y軸周りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、2軸ジャイロセンサ55は、ピッチ方向(X軸周りの回転方向)及びヨー方向(Y軸周りの回転方向)の角速度を検出し、1軸ジャイロセンサ56は、ロール方向(Z軸周りの回転方向)の角速度を検出する。
【0104】
なお、本実施形態では、3軸回りの角速度を検出するために、2軸ジャイロセンサ55と1軸ジャイロセンサ56とを用いる構成としたが、他の実施形態においては、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数及び組み合わせはどのようなものであってもよい。
【0105】
また、本実施形態では、各ジャイロセンサ55及び56が角速度を検出する3つの軸は、加速度センサ37が加速度を検出する3つの軸(XYZ軸)と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ55及び56が角速度を検出する3つの軸と、加速度センサ37が加速度を検出する3つの軸とは一致しなくてもよい。
【0106】
ジャイロセンサ55及び56で検出された角速度を示すデータは、マイコン54に出力される。したがって、マイコン54には、XYZ軸の3軸回りの角度速度を示すデータが入力されることになる。マイコン54は、上記3軸回りの角速度を示すデータを角速度データとしてプラグ53を介してコントローラ5へ送信する。なお、マイコン54からコントローラ5への送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【0107】
コントローラ5の説明に戻り、操作部32、撮像情報演算部35、及び加速度センサ37からマイコン42へ出力されたデータ、ならびに、ジャイロセンサユニット7からマイコン42へ送信されてきたデータは、一時的にメモリ43に格納される。これらのデータは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の無線コントローラモジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の無線コントローラモジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部36から無線コントローラモジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の無線コントローラモジュール19へ出力する。
【0108】
上記コントローラ5を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5を任意の傾斜角度に傾ける操作を行うことができる。その他、上記コントローラ5によれば、プレイヤは、コントローラ5によって画面上の任意の位置を指示する操作、及び、コントローラ5自体を動かす操作を行うこともできる。
【0109】
[ゲーム処理の概要]
次に、図8〜図13を参照して、本発明の一実施形態に係るゲーム処理の概要について説明する。本実施形態で想定するゲームは、カヌーを題材にしたゲームである。図8は、本実施形態で想定するゲームの画面の一例を示した図である。図8では、ゲーム画面には、ボート(カヌー)B(B1〜B4)と、ボートを漕ぐためのパドルと、ボートBが移動するコースとが図示されている。本ゲームは、入力装置8をカヌーのパドル(より正確には、パドルの柄)に見立て、パドルを漕ぐように(パドルで水を掻くように)入力装置8を動かすことで、ゲーム画面内のパドル102も移動する(コース上の水を掻く)。これにより、プレイヤは、ボートBを移動させることができ、擬似的にカヌーを楽しむことができる。また、本ゲームでは、複数人のプレイヤ(例えば、4人)が、それぞれ入力装置8を用いて各プレイヤに割り当てられたボートB1〜B4を移動させることにより、ゲームが進行する。すなわち、第1のプレイヤは、自身が把持する入力装置8を動かすことによりボートB1を移動させ、第2のプレイヤは、自身が把持する入力装置8を動かすことによりボートB2を移動させる。同様に、第3のプレイヤ及び第4のプレイヤは、それぞれ自身が把持する入力装置8を動かすことにより、ボートB3及びボートB4を移動させる。そして、各プレイヤは、自身に割り当てられたボートBがコース上に設定されたゴールに最も早く到達するように、互いに競い合いながらゲームを楽しむ。図8では、第2のプレイヤ(ボートB2)が先頭であるため、コースの先に設定されたゴール(図示せず)に最も近く、現時点で最も有利である。
【0110】
[仮想カメラの設定の概要]
次に、本実施形態におけるカヌーゲームの仮想カメラの設定について、説明する。図8に示されるように、本実施形態では、複数のボートBが1画面に同時に表示される。本実施形態では、仮想カメラの撮像方向及び仮想カメラの注視点を調整することにより、各プレイヤにとって見やすく(各プレイヤが各ボートBを操作しやすく)、複数のボートBが表示される。
【0111】
まず、仮想カメラの撮像方向の設定について説明する。具体的には、本実施形態では、仮想カメラの撮像方向は、各ボートBに個別に設定される「基準方向」に基づいて、設定される。また、仮想カメラの注視点は、それぞれのボートBに個別に設定される「設定位置」に基づいて、設定される。以下、各ボートBの「基準方向」及び「設定位置」について、説明する。
【0112】
各ボートBに設定される「基準方向」とは、各ボートBに仮想的に設定された視線の方向であり、各ボートBの視点(各ボートBに乗ったプレイヤオブジェクトの視点)からゲーム空間を見た方向である。例えば、ボートB1の視点からゲーム空間を見た場合、図8とは見え方が異なる。図9は、ボートB1の視点からゲーム空間を見た場合の画像を示した図である。図9において、分かりやすくするためにボートB1以外のボートの表示を省略している。図9に示されるように、ボートB1(のプレイヤオブジェクト)からゲーム空間を見た場合、図8で示されるゲーム空間の領域よりも左側の領域がより広く見える。このように、基準方向は、各ボートBによって異なる。
【0113】
ここで、ボートBの基準方向は、当該ボートBの移動方向と当該ボートBの向き(前方向)とに基づいて、定められる。具体的には、基準方向は、図10に示されるようにして算出される。図10は、ボートBの基準方向の算出方法を説明するための図であり、ボートBをゲーム空間の上方から見た図である。図10では、ボートBの速度を示す速度ベクトルVと、ボートBの前方向を示す前方向ベクトルFdとが図示されている。ここで、前方向ベクトルFdは、ゲーム空間におけるボートBの中心位置からボートBの先端(カヌーの先端)位置に向かう単位ベクトルである。図10に示されるように、速度ベクトルVに重みKvを掛けたベクトルと、前方向ベクトルFdに重みKfを掛けたベクトルとを足し合わせて、正規化することにより、基準方向を示す基準方向ベクトルDが求められる。すなわち、各ボートBi(iは1〜4の何れか)の基準方向ベクトルDiは、以下の式1によって算出される。
Di=(Kv×Vi+Kf×Fdi)/|Kv×Vi+Kf×Fdi| (1)
なお、重みKv及びKfは、予め定められた係数であり、例えば、Kv=2、Kf=3に設定される。また、Viは、ボートBiの速度ベクトルであり、Fdiは、ボートBiの前方向ベクトルである。速度ベクトルViの向きは、ボートBiの現在の移動方向を表している。
【0114】
次に、算出された各ボートB(B1〜B4)の基準方向D(D1〜D4)に基づいて、仮想カメラの撮像方向を算出する。具体的には、まず、各基準方向D(D1〜D4)を加重平均することにより、平均方向ベクトルWDを算出する。平均方向ベクトルWDは以下の式2によって求められる。
WD=(W1×D1+W2×D2+W3×D3+W4×D4+Wm×Dm)/(W1+W2+W3+W4+Wm) (2)
なお、W1〜W4は、先頭のボートから各ボートBまでの距離に応じて算出される係数であり、各基準方向ベクトルDiに対する重みである。また、Wmは、所定の定数である。また、Dmは、平均方向ベクトルWDをコース順方向(ボートBの現在位置からコース上のゴールに向かう、コースに沿った方向)に向けるためのベクトルであり、各ボートBのコース順方向から求められる。
【0115】
次に、重みW1〜W4の算出方法、コース順方向、及びDmについて説明する。まず、図11を用いて、重みW1〜W4を算出するための到達距離及び順方向(コース順方向)について説明する。図11は、到達距離と順方向を説明するための図である。図11では、コースをゲーム空間の上方から見た場合において、ボートBが、図の右方向に設定されたゴール(図示せず)に向かってコース上を移動している様子が示されている。到達距離は、図の左下方向に設定されたスタート地点(図示せず)からのコースに沿った距離を示す。到達距離は、ゲーム空間における位置に応じて定められる。また、順方向は、コース上の位置からゴールへ向かう、コースに沿った方向であり、例えばコースに沿って一定の間隔毎に定義された単位ベクトルによって表される。ここで、到達距離Taでの順方向ベクトルをCa、到達距離Tb(>Ta)での順方向ベクトルをCbとすると、ボートBiの到達距離Ti及び順方向ベクトルCiは、以下の式3及び式4によって算出される。
Ti=(Na×Tb+Nb×Ta)/(Na+Nb) (3)
Ci=(Na×Cb+Nb×Ca)/(Na+Nb) (4)
ここで、Naは到達距離Taの地点からボートBiの位置Piまでの距離を表し、Nbは到達距離Tbの地点からボートBiの位置Piまでの距離を表す。なお、式4によって算出された各順方向に基づいて、上記Dmが算出される。具体的には、Dmは、各順方向ベクトルCiの平均を示すベクトルであり、以下の式5によって算出される。
Dm=(C1+C2+C3+C4)/4 (5)
【0116】
上述のようにして算出されたボートBiの到達距離Ti及び順方向ベクトルCiを用いて、上述した重みWi(W1〜W4)は、以下の式6によって算出される。
Wi=(1+Kt×(T0−Ti))×Si (6)
なお、T0は、先頭のボートBの到達距離を示す。また、Ktは、所定の定数である。式6において、Siは順方向度合い(基準方向Diが示す方向と、順方向Ciが示す方向との一致度合い)を示す。順方向度合いSiは、基準方向ベクトルDiと順方向ベクトルCiとの内積に応じて求められる。具体的には、基準方向ベクトルDiと順方向ベクトルCiとの内積値Di・Ciが0以上の場合、順方向度合いSi=Di・Ci=cosθ(θはベクトルDiとCiとがなす角度)となる。一方、内積値Di・Ciが0未満の場合、順方向度合いSi=0となる。すなわち、基準方向ベクトルDiと順方向ベクトルCiとの角度が0の場合、Si=1となり、基準方向ベクトルDiと順方向ベクトルCiとの角度が90度以上の場合、Si=0となる。なお、順方向度合いSiは、基準方向ベクトルDiと順方向ベクトルCiとの角度が90度以上の場合、内積値に応じた負の値に設定されてもよい。
【0117】
上記式6で示されるように、重みWiは、先頭のボートから離れるほど大きくなり、順方向度合いが大きいほど大きくなる。図12は、あるゲーム状況の一例をゲーム空間の上方から見た図である。例えば、図12に示されるように、先頭からボートB2(到達距離T2)、B3(到達距離T3)、B1(到達距離T1)、B4(到達距離T4)の順で各ボートが移動している場合、重みW1〜W4は、以下の値になる。
W2=S2=D2・C2
W3=(1+Kt×(T2−T3))×D3・C3
W1=(1+Kt×(T2−T1))×D1・C1
W4=0
なお、基準方向ベクトルD4と順方向ベクトルC4との角度が90度以上であるため、W4は0となる。
【0118】
上述したように、式1によって各基準方向ベクトルDiが算出され、式3、4及び6によって、各重みWiが算出される。次に、式2及び5によって平均方向ベクトルWDが算出される。そして、算出された平均方向ベクトルWDに基づいて、仮想カメラの撮像方向が設定される。例えば、平均方向ベクトルWDにゲーム空間の下方に向かう所定の大きさのベクトル(z軸負方向のベクトル)を加えることによって、仮想カメラの撮像方向が設定される。上述のようにして算出された平均方向ベクトルWDは、ゲーム空間の水平方向(コースの水面と平行な方向)のベクトルであるため、仮想カメラの撮像方向を平均方向ベクトルと一致させると、表示される画像は奥行きの距離を把握し難い画像となる。従って、平均方向ベクトルWDにゲーム空間の下方に向かうベクトルを加えることによって、ゲーム空間を斜め上方から見下ろした画像が表示され、図8に示されるような見やすい画像が表示される。
【0119】
このようにして、平均方向ベクトルWDに基づいて仮想カメラの撮像方向を設定することによって、表示される画像は、複数のプレイヤにとって見やすく、各ボートを操作しやすい画像となる。また、先頭からの距離が遠いほどそのボートの基準方向に対する重みが重くなるため、仮想カメラの撮像方向は、先頭からの距離が遠いボートの基準方向に近くなる。従って、表示される画像は、先頭からの距離が遠いボートの基準方向に近い方向から撮像された画像となるため、先頭から遅れているプレイヤにとって見やすい画像となる。このため、先頭から遅れているプレイヤにとっては有利となり、プレイヤの操作技術に差がある場合でもそれぞれのプレイヤがゲームを楽しむことができる。
【0120】
また、各ボートの基準方向に対する重みは、当該基準方向の順方向度合いが大きいほど大きくなる。このため、仮想カメラの撮像方向は、順方向度合いが大きいボートの基準方向に近い方向となる。従って、表示される画像は、基準方向と順方向とが一致しているボートを操作しているプレイヤにとって見やすい画像となる。すなわち、コース順方向に沿って正確にボートを操作しているプレイヤにとって、見やすい画像となる。逆に、コースの順方向とは反対方向を向いているボートや、コースの順方向とは反対方向に進んでいるボートの基準方向に対する重みは0に設定されるため、当該ボートの基準方向は、仮想カメラの撮像方向には影響しない。従って、一部のボートがコースを横切る方向に進んだり、コースを逆走したりしている場合においても、仮想カメラの撮像方向は、コースの順方向から大きくずれることはない。これにより、例えば、3人のプレイヤがコースの順方向にボートを進めており、1人のプレイヤが故意にコースの逆方向にボートを進めようとした場合でも、3人のプレイヤにとって望ましい画像(コースの順方向を撮像した画像)が表示される。
【0121】
次に、仮想カメラの注視点の設定について説明する。本実施形態では、前述したように、仮想カメラの注視点は、各ボートBに個別に設定される「設定位置」に基づいて、設定される。各ボートBに個別に設定される「設定位置」とは、当該ボートの位置と上述した基準方向とに基づいて定められる位置である。具体的には、ボートBiの設定位置Aiは、以下の式7によって算出される。
Ai=Pi+Kd×Di (7)
なお、PiはボートBiの位置ベクトルであり、Kdは所定の定数である。このようにして算出される設定位置は、ボートの移動方向と向き(前方向)に基づいて決定される位置であって、現在のボートの移動方向と向き(前方向)に基づいて予測されるボートの移動先であると言い換えることができる。なお、ボートの設定位置を計算する際に、ボートの移動方向だけでなくボートの向き(前方向)も加味している理由は、ボートは基本的にプレイヤの操作に応じて前方向に加速するため、ボートの移動先はボートの向き(前方向)にも左右され得るからである。ボートを操作するプレイヤにとって、ゲームを有利に進めるためには、自分の操作しているボートの移動先の状況を把握することが重要である。したがって、ボートの設定位置は、そのボートを操作するプレイヤにとって、画面上で最も視認したい位置であると言うことができる。
【0122】
上記式7によって算出された各ボートの設定位置Aiを加重平均することによって、仮想カメラの注視点Aが算出される。仮想カメラの注視点Aは、以下の式8によって算出される。
A=(WA1×A1+WA2×A2+WA3×A3+WA4×A4)/(WA1+WA12+WA3+WA4) (8)
なお、WA1〜WA4は、先頭のボートから各ボートBまでの距離に応じて算出される係数であり、各設定位置Aiに対する重みである。
【0123】
各設定位置Aiに対する重みWAiは、以下の式9によって算出される。
WAi=1+Kt×(T0−Ti) (9)
なお、Ktは所定の定数である。また、T0は、先頭のボートBの到達距離を示す。
【0124】
上記式9で示されるように、重みWAiは、上記式6で算出される重みWiと同様、先頭のボートから離れるほど大きくなる。図13は、あるゲーム状況の一例における仮想カメラの注視点を示す図である。例えば、図13に示されるように、先頭からボートB2(到達距離T2)、B3(到達距離T3)、B1(到達距離T1)、B4(到達距離T4)の順で各ボートが移動している場合、重みWA1〜WA4は、以下の値になる。
WA2=1
WA3=1+Kt×(T2−T3)
WA1=1+Kt×(T2−T1)
WA4=1+Kt×(T2−T4)
そして、これら重みWA1〜WA4を上記式8に代入することにより、仮想カメラの注視点Aが求められる。図13に示されるように、先頭のボートB2からの距離が最も遠いボートB4に対する重みが最も大きくなるため、仮想カメラの注視点Aは、最も遅れているボートB4の設定位置A4に近い位置となる(より正確には、各ボートの設定位置A1〜A4の重心位置よりもボートB4の設定位置A4に近い位置となる)。なお、図13では、注視点Aに最も近いのはボートB1である。このように、注視点Aは、各ボートの設定位置を加重平均して算出されるため、必ずしも最も遅れているボートの位置に、最も近づくとは限らない。
【0125】
このように、仮想カメラの注視点は、遅れているボートの設定位置により近い位置に設定される。仮想カメラの注視点は画面中央に設定されるため、画面に表示される画像は、遅れているボートのプレイヤにとって、見やすい画像(操作しやすい画像)となる。特に、先頭からより遅れているボートのプレイヤにとって、より見やすい画像が表示される。
【0126】
以上のようにして、仮想カメラの撮像方向及び仮想カメラの注視点を設定することによって、表示される画像は、複数のプレイヤにとって見やすく、各ボートを操作しやすい画像となる。
【0127】
なお、詳細は後述するが、本実施形態においては、上記複数のボートB(B1〜B4)が1画面に表示されるように、仮想カメラの注視点距離(仮想カメラから注視点までの距離)が設定される。しかしながら、各ボート間の距離が大きく離れた場合において、仮想カメラの注視点距離を長くすることによってすべてのボートを1画面に表示しようとすると、各ボートが小さく表示されてしまう。従って、仮想カメラの注視点距離に最大値を設け、当該最大値を超えないように、注視点距離が設定される。注視点距離が最大値に達した場合、一部のボートは画面には表示されなくなることがある。
【0128】
[ゲーム処理の詳細]
次に、図14〜図18を参照してゲーム装置3において実行されるゲーム処理の詳細について説明する。まず、ゲーム装置3における処理において用いられる主なデータについて図14を用いて説明する。図14は、ゲーム装置3のメインメモリ(外部メインメモリ12又は内部メインメモリ11e)に記憶される主なデータを示す図である。
【0129】
図14に示されるように、ゲーム装置3のメインメモリには、ゲームプログラム60、操作データ62、及びゲーム処理用データ67が記憶される。なお、メインメモリには、図14に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【0130】
ゲームプログラム60は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部又は全部が読み込まれてメインメモリに記憶される。ゲームプログラム60には、仮想カメラ設定プログラム61が含まれる。仮想カメラ設定プログラム61は、仮想カメラの撮像方向や注視点等、仮想カメラを制御するためのプログラムである。
【0131】
操作データ62は、複数のコントローラ5(入力装置8)からゲーム装置3へ送信されてくる操作データである。すなわち、操作データ62には、第1のプレイヤが把持するコントローラ5の操作データ、第2のプレイヤが把持するコントローラ5の操作データ、第3のプレイヤが把持するコントローラ5の操作データ、及び第4のプレイヤが把持するコントローラ5の操作データが含まれる。上述したように、コントローラ5からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、外部メインメモリ12に記憶される操作データ62はこの割合で更新される。
【0132】
操作データ62には、角速度データ63、加速度データ64、マーカ座標データ65、及び操作ボタンデータ66が含まれる。角速度データ63は、ジャイロセンサユニット7のジャイロセンサ55及び56によって検出された角速度を示すデータである。ここでは、角速度データ63は、図3に示すXYZの3軸回りのそれぞれの角速度を示す。また、加速度データ64は、加速度センサ37によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ64は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルを示す。
【0133】
マーカ座標データ65は、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を示すデータである。
【0134】
操作ボタンデータ66は、各操作ボタン32a〜32iに対する入力状態を示すデータである。
【0135】
ゲーム処理用データ67は、後述するゲーム処理(図15に示すフローチャート)において用いられるデータである。ゲーム処理用データ67は、オブジェクトデータ68、基準方向データ69、順方向データ70、設定位置データ71、平均方向データ72、及び、注視点データ73を含む。なお、図14に示すデータの他、ゲーム処理用データ67は、ゲーム処理において用いられる各種データ(ゲームパラメータを示すデータ等)を含む。
【0136】
オブジェクトデータ68は、ボートBi(i=1〜4)の位置Pi、速度Vi、到達距離Ti、及び、ボートBiの前方向ベクトルFdiを示すデータの集合である。メインメモリには、ボート毎に上記情報を示すデータが記憶される。
【0137】
また、基準方向データ69は、各ボートBiの基準方向ベクトルDiを示すデータである。順方向データ70は、各ボートBiの順方向ベクトルCiを示すデータである。設定位置データ71は、各ボートBiの設定位置Aiを示すデータである。平均方向データ72は、上述した平均方向ベクトルWDを示すデータである。注視点データ73は、上述した注視点Aの位置を示すデータである。
【0138】
次に、図15を参照して、ゲーム装置3によって実行されるゲーム処理について説明する。図15は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、ROM/RTC13に記憶されている起動プログラムを実行し、これによって外部メインメモリ12等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図15に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図15では、本発明に直接関連しないゲーム処理については記載を省略し、上述した仮想カメラの設定に関する処理についてのみ主に説明する。また、図15に示すステップS1〜ステップS10の処理ループは、1フレーム毎に繰り返し実行される。
【0139】
まず、ステップS1において、CPU10は、操作データを取得する。具体的には、CPU10は、メインメモリの操作データ62を参照して、ゲーム空間に配置された各ボートBに対応付けされた入力装置8の操作データを取得する。次に、CPU10は、ステップS2の処理を実行する。
【0140】
ステップS2において、CPU10は、各ボートBのゲーム空間における速度及び前方向を算出する。ステップS2の処理においては、CPU10は、ボートBiの現在の速度ViとステップS1で取得したボートBiの操作データ等に基づいて、ボートBiの新たな速度Viを算出する(すなわち、ボートBiの速度Viを更新する)。また、CPU10は、ボートBiの現在の前方向と、ボートBiの操作データとに基づいて、ボートBiの前方向を算出する。具体的には、CPU10は、ステップS1で取得したボートBiの操作データに基づいて、ボートBiに加えるべき力(力の大きさ及び方向)を算出する。そして、CPU10は、算出された力をボートBiに加え、さらにゲーム空間の風の向き(風の抵抗力)やボートが浮かぶ川の流れ(水の抵抗)等を考慮して、ボートBiの速度Viを算出する。ボートBiに加えるべき力は、ボートBiの操作データに含まれる角速度データ63及び加速度データ64に基づいて、算出される。また、CPU10は、ボートBiに加えるべき力(大きさと方向)に応じた回転を現在の前方向ベクトルFdiに加えることにより、新たな前方向ベクトルFdiを算出する。例えば、ボートB1に対応付けされた入力装置8の角速度及び加速度に基づいて、当該入力装置8の姿勢及び移動速度を推定することによって、ボートB1に加えるべき力が算出される。そして、CPU10は、算出された力、水の抵抗力、風の抵抗力、及びボートB1の現在の速度V1に基づいて、ボートB1の新たな速度V1を算出する。また、CPU10は、算出された力に応じた回転をボートB1に加えることにより、ボートB1の前方向ベクトルFd1を算出する。そして、CPU10は、ボートB1の速度V1及び前方向ベクトルFd1をオブジェクトデータ68として、メインメモリに記憶する。各ボートBの速度及び前方向を算出してメインメモリに記憶した後、CPU10は、次にステップS3の処理を実行する。
【0141】
ステップS3において、CPU10は、各ボートBのゲーム空間における位置、到達距離、及び順方向を更新する。具体的には、CPU10は、ボートBiの現在位置Piと速度Viとに基づいて、ボートBiの位置Piを更新する。また、CPU10は、更新した位置Piに応じて到達距離Ti及び順方向ベクトルCiを算出する。そして、CPU10は、各ボートBの位置、到達距離、及び順方向をオブジェクトデータ68として、メインメモリに記憶する。次に、CPU10は、ステップS4の処理を実行する。
【0142】
ステップS4において、CPU10は、各ボートBの基準方向を算出する。具体的には、CPU10は、メインメモリを参照して、ボートBiの速度Viと前方向ベクトルFdiとを取得し、これらのベクトルに所定の係数を掛けて合成することにより、ボートBiの基準方向Diを算出する(上記式1を参照)。そして、CPU10は、算出した各基準方向Dを基準方向データ69としてメインメモリに記憶する。次に、CPU10は、ステップS5の処理を実行する。
【0143】
ステップS5において、CPU10は、各ボートBの基準方向を加重平均した平均方向を算出する。具体的には、CPU10は、まずメインメモリを参照して、ボートBiの到達距離Ti、基準方向ベクトルDi、及び順方向ベクトルCiを取得する。次に、CPU10は、基準方向ベクトルDiと順方向ベクトルCiとの内積値を算出することによって、上記順方向度合いSiを算出する。そして、CPU10は、上記式6を用いて重みWiを算出した後、式2を用いて平均方向ベクトルWDを算出し、メインメモリに記憶する。ステップS5の後、CPU10は、ステップS6の処理を実行する。
【0144】
ステップS6において、CPU10は、仮想カメラの注視点を算出する。具体的には、まず、CPU10は、ボートBiの設定位置Aiを上記式7により算出する。次に、CPU10は、式9を用いて、各設定位置Aiに対する重みWAiを算出する。そして、CPU10は、算出した各設定位置を加重平均することにより、仮想カメラの注視点Aを算出する(上記式8を参照)。次に、CPU10は、ステップS7の処理を実行する。
【0145】
ステップS7において、CPU10は、仮想カメラの注視点距離を算出する。ステップS7での処理は、仮想カメラの撮像範囲を決定する処理である。ここで、注視点距離とは、仮想カメラの位置(視点)から注視点Aまでの距離であり、注視点距離が長いほど撮像範囲は広くなる。ステップS7における処理の詳細を、図16を用いて説明する。図16は、図15における注視点距離の算出処理(ステップS7)の詳細を示すフローチャートである。
【0146】
まず、CPU10は、ステップS21の処理を実行する。ステップS21において、CPU10は、現在の注視点距離Lを更新する。具体的には、CPU10は、以下に示す式10を用いて、注視点距離Lを設定する。
新たなL=現在のL−(現在のL−L0)×Ld (10)
なお、L0は注視点距離の初期距離であり、例えば、L0=2.5(m)に設定される。また、Ldは所定の定数である。式10に示されるように、注視点距離Lは、徐々に初期距離L0に近づくように設定される。これにより、注視点距離Lが急激に変化することを防止することができ、仮想カメラの撮像範囲が急激に広くなったり、狭くなったりすることを防止することができる。ステップS21の処理の後、CPU10は、ステップS22の処理を実行する。
【0147】
ステップS22において、CPU10は、最大はみ出し量Gを算出する。ここで、最大はみ出し量とは、各ボートBの表示領域(撮像範囲)からのはみ出し量の最大値である。図17は、最大はみ出し量を説明するための図である。図17において、表示領域81は、画面(テレビ画面)の外枠であり、表示領域81に表示されるゲーム空間の範囲は、注視点距離Lによって定められる仮想カメラの撮像範囲である。図17に示されるように、ステップS21によって定められた注視点距離Lでは、ボートB3及びB4の全体が表示されるが、仮想カメラの撮像範囲が狭いため、ボートB1の一部は表示領域81からはみ出している。このボートB1を表示領域81に収めるため、最大はみ出し量Gが算出される。具体的には、CPU10は、各ボートBの先端及び後端の位置(画面上の座標位置)を求め、画面に設定された余白枠80からの距離を求める。そして、CPU10は、余白枠80からの距離が最大となる最大はみ出し量Gを求める。なお、すべてのボートBが表示領域81からはみ出していない場合、最大はみ出し量Gは0となる。次に、CPU10は、ステップS23の処理を実行する。
【0148】
ステップS23において、CPU10は、L+G×Lgが注視点距離の最大値Lmaxより大きいか否かを判定する。ここで、GはステップS22で算出された最大はみ出し量Gであり、Lgは所定の定数である。ステップS23の処理は、注視点距離Lが最大値Lmaxを越えないようにするための処理である。注視点距離Lが長いほど仮想カメラの撮像範囲は広くなるが、各ボートは小さく表示されるため、プレイヤにとって見難い。このため、注視点距離に最大値が設定される。判定結果が否定の場合、CPU10は、次にステップS24の処理を実行する。一方、判定結果が肯定の場合、CPU10は、図16に示される注視点距離の算出処理を終了する。
【0149】
ステップS24において、CPU10は、注視点距離Lを更新する。具体的には、CPU10は、ステップS21で算出した注視点距離LにG×Lgを加えることにより、新たな注視点距離Lを算出し、メインメモリに記憶する。ステップS24で注視点距離Lが設定されることによって、表示領域81からはみ出しているボートが存在している場合、当該はみ出しているボートを表示領域に含むように仮想カメラの撮像範囲(表示領域)が広くなる(すなわち、画面全体が縮小表示される)。また、G×Lgを加えることによって、徐々に撮像範囲が広くなるため、急激に表示領域が拡大されることを防止することができる。ステップS24の後、CPU10は、図16に示される注視点距離の算出処理を終了する。
【0150】
なお、上記ステップS23において、注視点距離Lが最大値Lmaxを越えないように調整されるが、注視点距離Lが最大値Lmaxになった場合において表示領域81に全く表示されないボートが存在する場合、画面の端に吹き出しを表示することにより、当該表示されないボートのおおよその位置と姿勢を表示するようにしてもよい。
【0151】
図15に戻り、CPU10は、次にステップS8の処理を実行する。ステップS8において、CPU10は、先頭以外のボートに牽引力を発生させる。ここでの処理は、先頭以外のボートの先端部分にコース順方向の力を加えることによって、先頭以外のボートの移動を補正する処理である。すなわち、ステップS8においては、先頭以外のボートをコース順方向に加速させると同時に、ボートの向き(前方向)をコース順方向に近づけることによって、先頭以外のボートの移動する方向を補正する。この処理によって、先頭以外のボートがレースから遅れ過ぎないようにすることができる。図18は、先頭以外のボートに対する牽引力を説明するための図である。例えば、CPU10は、図18に示されるように、各ボートB(B1、B3、及びB4)の先端部分に対して、各ボートBの順方向に、先頭のボートB2までの距離に応じた大きさの牽引力Fi(F1、F3、及びF4)を加える。具体的には、CPU10は、ボートBiに対する牽引力Fiを以下の式11により、算出する。
Fi=fi×Ci (11)
ここで、fiは、先頭のボートまでの距離に応じて変化する値(0.0〜1.0の範囲)である。具体的には、fiは、先頭の到達距離T0からボートBiの到達距離Tiを引いた値に基づいて定められる。例えば、T0−Tiが所定の下限値(例えば、5m)より小さい場合、fiは0に設定され、T0−Tiが所定の上限値(例えば、15m)より大きい場合、fiは1に設定される。T0−Tiが下限値から上限値の間の値である場合、その値(T0−Ti)に比例してfiが設定される。そして、CPU10は、ステップS8で算出された牽引力を各ボートBの先端部分に加えることによって、各ボートの速度、位置、及び、向き(前方向)を更新する。ステップS8の処理の後、CPU10は、次にステップS9の処理を実行する。
【0152】
ステップS9において、CPU10は、仮想カメラの撮像方向を設定する。具体的には、CPU10は、ステップS5で算出された平均方向に基づいて、仮想カメラの撮像方向を決定する。例えば、CPU10は、ステップS5で算出された平均方向ベクトルWDに所定の下方向ベクトル(ゲーム空間の下方向(z軸負方向)のベクトル)を加えることにより、仮想カメラの撮像方向を算出する。なお、下方向ベクトルは、上述した注視点距離Lに応じて定められ、例えば、注視点距離Lが長いほど(仮想カメラによる撮像範囲が広いほど)、下方向ベクトルが大きく設定される。従って、仮想カメラの撮像範囲(表示領域)が広いほど、より上方から下方にコースを見下ろした画像が表示される。このように、注視点距離が長いほど、仮想カメラの撮像方向を下方向に傾けることにより、プレイヤにとって見やすい画像が表示される。すなわち、撮像範囲が広い場合、当該撮像範囲に含まれるボートのうち、最も遠くに存在するボート(例えば、図8に示される先頭のボートB2)は、小さく表示され、当該ボートB2の周辺の環境も小さく表示される。この場合において、仮想カメラの撮像方向が水平方向に近い場合(加える下方向ベクトルが小さい場合)、ボートB2を操作するプレイヤは、ボートB2の位置及び周辺のコースや障害物等の位置関係を把握し難い。逆に、ゲーム空間を上方から見た場合、ボート及び周辺の環境が小さく表示された場合であっても、上記位置関係を容易に把握することができる。ステップS9の処理の後、CPU10は、次にステップS10の処理を実行する。
【0153】
ステップS10において、CPU10は、その他のゲーム処理を実行する。例えば、CPU10は、ボートと障害物との衝突判定等の処理を実行し、判定結果に応じて、所定の処理を実行する(例えば、ボートが障害物と衝突した場合、ボートを減速させたり、ボートの移動方向や向きを変えたりする)。また、CPU10は、ボートがゴールに達したか否かの判定を行い、判定結果に応じて、所定の処理を実行する。更に、CPU10は、表示処理を実行する。これにより、上述のようにして算出された仮想カメラの撮像方向、注視点、及び注視点距離に基づいて定められる表示領域(撮像範囲)に存在するボートやパドル、障害物、コース周辺の環境オブジェクト等の画像がテレビ2に表示される。
【0154】
次に、ステップS11において、CPU10は、ゲーム終了か否かを判定し、肯定の場合、ゲーム処理を終了し、否定の場合、ステップS1に戻って、ゲーム処理を繰り返す。以上で、本実施形態に係るゲーム処理は終了する。
【0155】
以上のように、本実施形態では、各ボートの基準方向を加重平均することによって平均方向を求め、仮想カメラの撮像方向を設定する。さらに、各ボートの設定位置(ボートの位置と基準方向によって定まる位置)を加重平均することによって仮想カメラの注視点が設定される。このようにして設定された仮想カメラによって撮像された画像は、各プレイヤにとって見やすく、操作しやすい画像となる。
【0156】
なお、本実施形態では、各ボートの速度と前方向とによって各ボートの基準方向が算出され、算出された基準方向を加重平均することによって、上記平均方向が算出された。他の実施形態では、各ボートの基準方向は、各ボートの速度(移動方向)又は前方向の何れかに応じて定められ、これを用いて上記平均方向が算出されてもよい。例えば、各ボートの移動方向を加重平均することによって、上記平均方向が算出されてもよい。
【0157】
また、本実施形態では、各ボートの基準方向は当該ボートの速度と前方向ベクトルを用いて上記式1により算出された。他の実施形態では、具体的な計算方法はこれに限らず、ボートの基準方向は、ボートの移動方向とボートの向きとに基づいて、どのような計算方法によって求められてもよい。例えば、各ボートの基準方向は、単純にボートの速度と前方向ベクトルを加算することによって求められてもよいし、ボートの速度と前方向ベクトルとに所定の方向(ベクトル)を加えて求められてもよい。また、各ボートの基準方向は、ボートの速度と後方向ベクトル(前方向ベクトルとは逆方向のベクトル)とを用いて算出されてもよいし、ボートの速度と右方向ベクトル(前方向ベクトルとの角度が直角のベクトルであって、ボートを右から見た場合のベクトル)とを用いて算出されてもよい。このようにして算出される各ボートの基準方向は、各ボートを前から見た場合の方向であったり、各ボートを右から見た場合の方向であったりする。すなわち、上記実施形態では、各ボートの基準方向は、各ボートの視点からゲーム空間を見た方向であるとして説明したが、他の実施形態では、各ボートの基準方向は、各ボートの向きと移動方向とに基づいて定められる方向であり、各ボートの視点からゲーム空間を見た方向に限られない。
【0158】
また、本実施形態では、先頭のボートから遠いボートほど(不利なボートほど)重みを重くして上記平均方向を算出したが、他の実施形態では、先頭のボートから近いボートほど(有利なボートほど)重みを重くして上記平均方向を算出してもよい。これにより、仮想カメラの撮像方向は、先頭のボートの基準方向に近い方向になり、先頭のボートほど有利になる。
【0159】
また、他の実施形態に係るゲームでは、当該ゲームのルールにおいて有利な状況(又は不利な状況)であるオブジェクトほど、重みを重くして上記平均方向が算出されてもよい。例えば、複数のオブジェクトが勝ち点(勝利数)や勝率、ポイント数を競うゲームにおいて、勝ち点や勝率、ポイント数の大きい(又は小さい)オブジェクトほど、有利な状況(又は不利な状況)であるとして、重みを重くしてもよい。
【0160】
また、本実施形態では、ボートの設定位置は、当該ボートの位置と基準方向とに基づいて算出された(式7)。他の実施形態では、ボートの設定位置は、当該ボートの位置のみに基づいて、算出されてもよい。
【0161】
また、各ボートの基準方向Diや設定位置Aiに対する重みは、上述した方法(式6又は式9)以外の方法によって算出されてもよい。例えば、各ボート(各ボートの基準方向Diや設定位置Ai)に対する重み付けは、予め定められてもよい。例えば、ゲーム開始前に複数のプレイヤの熟練度に応じて、プレイヤ自身によって重み付けが設定されてもよい。この場合において、熟練度の低いプレイヤに対しては、重みが比較的重く設定され、熟練度の高いプレイヤに対しては、重みが比較的軽く(あるいは、0に)設定されてもよい。プレイヤ自身によって予めカメラ設定をすることにより、熟練度の低いプレイヤにとって比較的有利なカメラ設定(撮像方向と注視点)になるようにすることができる。これにより、熟練度の低いプレイヤが見やすく、操作しやすい画像が表示されるため、他の熟練度の高いプレイヤに対するハンディキャップになる。このように、予め各プレイヤに有利又は不利な条件を設定することによって、プレイヤの熟練度に応じたハンディキャップを設定することができる。
【0162】
上述のように、他の実施形態では、各オブジェクトの移動方向及び/又は各オブジェクトの向きに基づいて、上記各オブジェクトの基準方向が算出されてもよい。そして、算出された各基準方向を所定の条件で加重平均することによって、上記平均方向が算出されてもよい。ここで、所定の条件とは、上述したように、有利な状況(又は不利な状況)ほど重みを重くしたり、有利な条件(又は不利な条件)ほど重みを重くしたりする条件である。すなわち、各基準方向に対する重み付けはどのような条件によって行われてもよく、例えば、各プレイヤによる入力装置8の操作に応じて、入力装置8に対応付けされたオブジェクト(の基準方向や設定位置)に対する重み付けが変更されてもよい。
【0163】
また、本実施形態では、仮想カメラの撮像方向は、上記平均方向に所定の補正(所定の下方向ベクトルを加える補正)を行うことにより求められたが、他の実施形態では、仮想カメラの撮像方向を上記平均方向に一致させてもよい。
【0164】
また、本実施形態では、各ボートの基準方向を加重平均することによって上記平均方向を算出したが、他の実施形態では、各基準方向を単純に平均することによって、上記平均方向が求められてもよい。同様に、他の実施形態では、仮想カメラの注視点は、各ボートの設定位置Aiを単純に平均することによって、求められてもよい。また、仮想カメラの注視点は、各ボートの位置(ゲーム空間における位置Pi)を平均することによって、求められてもよい。
【0165】
また、本実施形態では、上述した方法により仮想カメラの撮像方向と注視点とを設定したが、他の実施形態では、上述の方法により仮想カメラの撮像方向のみを設定し、注視点は他の方法により設定されてもよい(例えば、常にコースの中心を注視点に設定する等)。また、仮想カメラの注視点のみを上述した方法により設定し、仮想カメラの撮像方向は、他の方法により設定されてもよい(例えば、当該注視点におけるコース順方向に設定する等)。
【0166】
また、本実施形態では、画面に表示される複数のオブジェクトの基準方向を加重平均することによって、仮想カメラの撮像方向を算出した。他の実施形態では、表示される複数のオブジェクトのうち、一部のオブジェクトの基準方向を加重平均することによって、仮想カメラの撮像方向を算出してもよい。例えば、ゲーム空間にプレイヤキャラクタ以外のゲームキャラクタが存在する場合、当該ゲームキャラクタの基準方向は仮想カメラの撮像方向には影響しないようにしてもよい。
【0167】
また、本実施形態では、カヌーゲームを例にしたが、他の様々なゲームに上記仮想カメラの設定方法が適用されてもよい。上述した方法は、複数のプレイヤオブジェクトが1画面に表示される種々のゲーム、例えば、短距離走のようなトラック競技(陸上競技)や水泳等のゲーム、サッカーやラグビーゲーム等にも適用されてもよい。また、複数のオブジェクトが平面上を移動するゲームに限らず、3次元ゲーム空間の上下方向にも移動可能な複数のオブジェクト(例えば、飛行機等)を移動させるゲームにも、上述した仮想カメラの設定方法は適用可能である。
【0168】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置3に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置3に供給されてもよい。また、携帯型のゲーム装置によって上記プログラムが実行されてもよい。また、ゲームプログラムは、ゲーム装置3内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体(コンピュータ読み取り可能な記憶媒体)としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状の記憶媒体の他に、不揮発性半導体メモリでもよい。
【0169】
また、本実施形態においては、ゲーム装置3のCPU10がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置3が備える専用回路によって行われてもよい。
【符号の説明】
【0170】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ部
7 ジャイロセンサユニット
8 入力装置
10 CPU
11e 内部メインメモリ
12 外部メインメモリ
A 仮想カメラの注視点
B ボート
C 順方向ベクトル
D 基準方向ベクトル
T 到達距離
【技術分野】
【0001】
本発明は、ゲームプログラム及びゲーム装置に関し、より特定的には、仮想空間内の複数のオブジェクトを表示装置に表示させるゲームプログラム及びゲーム装置に関する。
【背景技術】
【0002】
従来より、複数のオブジェクトを表示装置に表示させるゲーム装置が存在する。例えば、特許文献1に記載のゲーム装置では、2体の敵を表示させるために、仮想カメラの注視点を2体の敵の中間位置に設定している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−165647号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載の技術では、以下の課題があった。すなわち、仮想カメラの注視点を上記のように設定することにより、3次元仮想空間内に存在する複数のオブジェクトが表示装置の表示範囲に含まれるようにすることはできたが、必ずしも表示されたオブジェクトをプレイヤが操作しやすい表示になっているとは限らなかった。
【0005】
それ故、本発明の目的は、複数のオブジェクトを表示装置に表示しつつ、プレイヤにとって当該オブジェクトを操作しやすい表示をすることが可能なゲームプログラム及びゲーム装置を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号及び補足説明等は、本発明の理解を助けるために後述する実施例との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【0007】
本発明は、複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムである。当該ゲームプログラムは、上記コンピュータを、オブジェクト移動手段(S3を実行するCPU10。以下、単にステップ番号のみを記載する。)と、平均方向算出手段(S5)と、撮像方向設定手段(S9)と、表示制御手段(S10)として機能させる。オブジェクト移動手段は、上記複数のオブジェクト(ボートB1〜B4)を上記仮想空間内で移動させる。平均方向算出手段は、上記各オブジェクトの移動方向(速度)及び/又は向き(前方向)に基づいた方向を当該オブジェクトの基準方向としてそれぞれ算出し、算出した上記複数のオブジェクトの各基準方向を、第1の条件(式6)で加重平均した平均方向(平均方向ベクトルWD)を算出する。撮像方向設定手段は、上記平均方向に基づき、上記仮想カメラの撮像方向を設定する。表示制御手段は、上記撮像方向設定手段で設定された撮像方向に基づいて、上記仮想空間を撮像したものを上記表示装置に表示する。
【0008】
なお、上記において加重平均とは、単なる平均を含む。
【0009】
上記によれば、各オブジェクトの移動方向及び/又は向きに基づいた基準方向をそれぞれ算出し、算出した各オブジェクトの基準方向を、第1の条件で加重平均することによって、平均方向を算出することができる。そして、平均方向に基づいて仮想カメラの撮像方向を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【0010】
本発明では、上記第1の条件は、上記ゲームプログラムで実行されるゲームにおいて、上記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの上記基準方向に対する重み付けを重くするものであってもよい。
【0011】
なお、オブジェクトが有利な状況とは、上記ゲームのルールにおいて当該オブジェクトのゲームの進行状況が他のオブジェクトと比較して有利である状況や、上記ゲームにおける当該オブジェクトに与えられた条件が他のオブジェクトに与えられた条件と比較して有利な状況である場合である。
【0012】
上記によれば、プレイヤが操作するオブジェクトが有利な状況であるほど、当該プレイヤにとって操作しやすい画像を表示することができる。
【0013】
本発明では、上記有利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトよりも大きい状況であってもよい。
【0014】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つが他のオブジェクトよりも大きい場合、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【0015】
本発明では、上記第1の条件は、上記ゲームプログラムで実行されるゲームにおいて、上記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの上記基準方向に対する重み付けを重くするものであってもよい。
【0016】
なお、オブジェクトが不利な状況とは、上記ゲームのルールにおいて当該オブジェクトのゲームの進行状況が他のオブジェクトと比較して不利である状況や、上記ゲームにおける当該オブジェクトに与えられた条件が他のオブジェクトに与えられた条件と比較して不利な状況である場合である。
【0017】
上記によれば、プレイヤが操作するオブジェクトが不利な状況であるほど、当該プレイヤにとって操作しやすい画像を表示することができる。
【0018】
本発明では、上記不利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトよりも小さい状況であってもよい。
【0019】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つが他のオブジェクトよりも小さい場合、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【0020】
本発明では、上記ゲームプログラムは、上記コンピュータを、平均位置算出手段(S6)と、注視点設定手段(S6)として、更に機能させてもよい。平均位置算出手段は、上記複数のオブジェクトの位置に基づいた各位置を、第2の条件(式9)で加重平均した平均位置を算出する。注視点設定手段は、上記平均位置に基づいて、上記仮想カメラの注視点(A)を設定する。そして、上記表示制御手段は、上記注視点設定手段で設定された注視点にも基づいて、上記仮想空間を撮像したものを上記表示装置に表示する。
【0021】
上記によれば、各オブジェクトの位置に基づいた各位置を、第2の条件で加重平均することによって、仮想カメラの注視点を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【0022】
本発明では、上記ゲームプログラムは、上記コンピュータを、設定位置算出手段(S6)として、更に機能させてもよい。設定位置算出手段は、上記各オブジェクトの位置に基づいて、当該各オブジェクトに対する設定位置(Ai)をそれぞれ算出する。そして、上記平均位置算出手段は、上記設定位置算出手段によって算出された各設定位置を、上記第2の条件で加重平均して上記平均位置を算出する。
【0023】
上記によれば、各オブジェクトの位置に基づいて、各オブジェクトに対する設定位置を算出し、各設定位置を第2の条件で加重平均することによって、仮想カメラの注視点を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【0024】
本発明では、上記設定位置算出手段は、上記各オブジェクトの基準方向と位置とに基づいて、当該各オブジェクトに対する設定位置をそれぞれ算出してもよい。
【0025】
上記によれば、各オブジェクトの位置に加えて、各オブジェクトの基準方向に基づいて、各オブジェクトの設定位置を算出することができる。
【0026】
本発明では、上記第2の条件は、上記ゲームプログラムで実行されるゲームにおいて上記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものであってもよい。
【0027】
上記によれば、プレイヤが操作するオブジェクトが有利な状況であるほど、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、有利な状況であるオブジェクトを操作しているプレイヤにとって、見やすく操作しやすい画像を表示することができる。
【0028】
本発明では、上記有利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトと比較して大きい状況であってもよい。
【0029】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つが他のオブジェクトよりも大きい場合、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【0030】
本発明では、上記第2の条件は、上記ゲームプログラムで実行されるゲームにおいて上記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものであってもよい。
【0031】
上記によれば、プレイヤが操作するオブジェクトが不利な状況であるほど、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、不利な状況であるオブジェクトを操作しているプレイヤにとって、見やすく操作しやすい画像を表示することができる。
【0032】
本発明では、上記不利な状況とは、上記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトと比較して小さい状況であってもよい。
【0033】
上記によれば、プレイヤが操作するオブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つが他のオブジェクトよりも小さい場合、仮想カメラの注視点が当該オブジェクトに近くなる。これにより、当該オブジェクトを操作するプレイヤにとって操作しやすい画像を表示することができる。
【0034】
本発明では、上記ゲームプログラムは、上記コンピュータを、外れ度合い算出手段(S22)として更に機能させてもよい。外れ度合い算出手段は、上記複数のオブジェクトの少なくとも何れか1つが上記仮想カメラによる撮像範囲から外れようとしている度合いを算出する。そして、上記表示制御手段は、上記外れ度合い算出手段で算出された外れ度合いに応じて、上記撮像範囲を拡大(S24)もしくは縮小(S21)して、上記仮想空間を撮像したものを上記表示装置に表示する。
【0035】
上記によれば、複数のオブジェクトが撮像範囲に収まらない場合に撮像範囲を拡大したり、複数のオブジェクトが撮像範囲に収まる場合に撮像範囲を縮小したりすることができる。
【0036】
本発明では、上記表示制御手段は、上記外れ度合い算出手段で算出された外れ度合いに応じて、上記撮像方向又は当該撮像方向とは逆の方向へ上記仮想カメラを移動させることにより、上記撮像範囲を拡大もしくは縮小してもよい。
【0037】
上記によれば、外れ度合いに応じて注視点距離を設定することができる。これにより、撮像範囲を拡大又は縮小することができる。
【0038】
本発明では、上記ゲームプログラムは、上記コンピュータを、順方向算出手段(S3)と、オブジェクト移動方向補正手段(S8)として、更に機能させてもよい。順方向算出手段は、上記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する。オブジェクト移動方向補正手段は、上記複数のオブジェクトの順方向に基づいて、当該各オブジェクトの移動する方向を補正する。
【0039】
上記によれば、各オブジェクトの順方向を算出することができ、各オブジェクトの順方向に基づいて各オブジェクトの移動する方向を補正することができる。
【0040】
本発明では、上記ゲームプログラムは、上記コンピュータを、外力発生手段(S8)として更に機能させてもよい。外力発生手段は、上記複数のオブジェクトに対して、上記順方向算出手段で算出された順方向の外力を発生させる。そして、上記オブジェクト移動方向補正手段は、上記外力発生手段で発生させた外力を上記各オブジェクトに加えることによって、上記オブジェクトの移動する方向を補正する。
【0041】
上記によれば、オブジェクトに対して当該オブジェクトの順方向への外力を発生させることができる。これにより、オブジェクトは進むべき方向に容易に進むことができる。
【0042】
本発明では、上記ゲーム装置には少なくとも1つの入力装置(8)が接続され、上記オブジェクト移動手段は、上記入力装置からの入力に基づいて、上記複数のオブジェクトのうちの少なくとも1つのオブジェクトを移動させてもよい。
【0043】
上記によれば、入力装置からの入力に基づいて、上記オブジェクトを移動させることができる。
【0044】
本発明では、上記入力装置は、上記複数のオブジェクトそれぞれに対応付けされて上記ゲーム装置に接続されてもよい。
【0045】
上記によれば、複数の入力装置を複数のオブジェクトにそれぞれ対応付けさせることができ、複数のプレイヤがゲームを行うことができる。
【0046】
本発明では、上記ゲームプログラムで実行されるゲームは、上記仮想空間内の所定の位置(ゴール)に到達する早さを競うゲームであり、上記仮想空間内の上記所定の位置に近いほど当該ゲームのルールにおいて有利な状況であると判断されてもよい。
【0047】
上記によれば、上記所定の位置に近いオブジェクトほど有利な状況であると判断することができる。
【0048】
本発明では、上記平均方向算出手段は、上記各オブジェクトの移動方向と向きとをそれぞれ所定の割合で合成することにより算出した上記各基準方向を、上記第1の条件で加重平均した平均方向を算出してもよい。
【0049】
上記によれば、オブジェクトの移動方向と向きとを合成することによって、当該オブジェクトの基準方向を算出することができる。
【0050】
本発明では、上記ゲームプログラムは、上記コンピュータを、順方向算出手段(S3)として更に機能させてもよい。順方向算出手段は、上記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する。そして、上記平均方向算出手段は、上記順方向算出手段で算出された上記各オブジェクトの順方向と、当該各オブジェクトの基準方向との角度に応じて、当該各オブジェクトの上記基準方向に対する重み付けをそれぞれ設定する。
【0051】
上記によれば、上記平均方向を算出する際、オブジェクトの順方向と当該オブジェクトの基準方向との角度に応じて、当該オブジェクトの基準方向に対する重みを設定することができる。
【0052】
本発明では、上記平均方向算出手段は、上記オブジェクトの順方向と基準方向との角度が小さいほど、当該オブジェクトの上記基準方向に対する重み付けを重く設定してもよい。
【0053】
上記によれば、上記角度が小さいほど重みを重くすることができる。従って、順方向と基準方向が一致しているオブジェクトを操作しているプレイヤにとって、見やすく操作しやすい画像を表示することができる。
【0054】
本発明では、上記ゲームプログラムは、上記コンピュータを、順方向算出手段(S3)として更に機能させてもよい。順方向算出手段は、上記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する。そして、上記平均方向算出手段は、上記複数のオブジェクトの基準方向と、当該複数のオブジェクトの順方向を平均した方向(Dm)とを、上記第1の条件で加重平均した平均方向を算出する(式2)。
【0055】
上記によれば、上記平均方向を算出する際、各オブジェクトの基準方向に加えて、各オブジェクトの上記順方向を平均した方向を加味することができる。これにより、上記平均方向を平均的な順方向(複数のオブジェクトの順方向を平均した方向)にある程度近づけることができる。例えば、複数のオブジェクトがあるコースを進行するゲームにおいて、上記平均方向をコース順方向にある程度近づけることができる。
【0056】
本発明は、複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムである。当該ゲームプログラムは、上記コンピュータを、オブジェクト移動手段(S3)と、設定位置算出手段(S6)と、平均位置算出手段(S6)と、注視点設定手段(S6)と、表示制御手段(S10)として機能させる。オブジェクト移動手段は、上記複数のオブジェクトを上記仮想空間内で移動させる。設定位置算出手段は、上記オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向として、当該オブジェクトの基準方向と位置とに基づいて算出される設定位置を、上記複数のオブジェクトに対してそれぞれ算出する。平均位置算出手段は、上記設定位置算出手段によって算出される各設定位置を、所定の条件で加重平均した平均位置を算出する。注視点設定手段は、上記平均位置に基づいて、上記仮想カメラの注視点を設定する。そして、表示制御手段は、上記注視点設定手段で設定された注視点に基づいて、上記仮想空間を撮像したものを上記表示装置に表示する。
【0057】
上記によれば、オブジェクトの基準方向と位置とに基づいて算出される各設定位置を、所定の条件で加重平均することによって、仮想カメラの注視点を算出することができる。これにより、仮想カメラの注視点を定めることができ、複数のオブジェクトを見やすく表示することができる。
【0058】
また、本発明は、上記ゲームプログラムを実行するゲーム装置の形態で実施されてもよい。
【発明の効果】
【0059】
本発明によれば、各オブジェクトの移動方向及び/又は向きに基づいて算出される各オブジェクトの基準方向を、第1の条件で加重平均することによって、平均方向を算出することができる。そして、平均方向に基づいて仮想カメラの撮像方向を算出することができる。これにより、各プレイヤが見やすく操作しやすい画像を、表示装置に表示することができる。
【図面の簡単な説明】
【0060】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の構成を示すブロック図
【図3】入力装置8の外観構成を示す斜視図
【図4】コントローラ5を下側前方から見た斜視図
【図5】コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図
【図6】コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図
【図7】入力装置8の構成を示すブロック図
【図8】本実施形態で想定するゲームの画面の一例を示した図
【図9】ボートB1の視点からゲーム空間を見た場合の画像を示した図
【図10】ボートBの基準方向の算出方法を説明するための図
【図11】到達距離と順方向を説明するための図
【図12】あるゲーム状況の一例をゲーム空間の上方から見た図
【図13】あるゲーム状況の一例における仮想カメラの注視点を示す図
【図14】ゲーム装置3のメインメモリ(外部メインメモリ12又は内部メインメモリ11e)に記憶される主なデータを示す図
【図15】ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート
【図16】図15における注視点距離の算出処理(ステップS7)の詳細を示すフローチャート
【図17】最大はみ出し量を説明するための図
【図18】先頭以外のボートに対する牽引力を説明するための図
【発明を実施するための形態】
【0061】
[ゲームシステムの全体構成]
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置及びゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、入力装置8、及びマーカ部6を含む。本システムは、入力装置8を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0062】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されているゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0063】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6R及び6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0064】
入力装置8は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与えるものである。本実施形態では、入力装置8はコントローラ5とジャイロセンサユニット7とを含む。詳細は後述するが、入力装置8は、コントローラ5に対してジャイロセンサユニット7が着脱可能に接続されている構成である。コントローラ5とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。
【0065】
[ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、及びAV−IC15等を有する。
【0066】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14及びAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSIの内部構成について後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11e又は外部メインメモリ12に読み出したデータを書き込む。
【0067】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、及び内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0068】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0069】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0070】
上述のように生成された画像データ及び音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0071】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、及びメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0072】
入出力プロセッサ11aは、無線通信モジュール18及びアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18及びアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22及び無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データ又は途中データ)が記憶されてもよい。
【0073】
また、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23及び無線コントローラモジュール19を介して受信し、内部メインメモリ11e又は外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0074】
さらに、入出力プロセッサ11aには、拡張コネクタ20及びメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0075】
ゲーム装置3には、電源ボタン24、リセットボタン25、及びイジェクトボタン26が設けられる。電源ボタン24及びリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0076】
[入力装置8の構成]
次に、図3〜図6を参照して、入力装置8について説明する。図3は、入力装置8の外観構成を示す斜視図である。図4は、コントローラ5を下側前方から見た斜視図である。
【0077】
図3及び図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。プレイヤは、コントローラ5に設けられたボタンを押下すること、及び、コントローラ5自体を動かしてその位置や姿勢を変えることによってゲーム操作を行うことができる。
【0078】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、及び電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行するゲームプログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32f及び電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、プレイヤがホームボタン32f又は電源ボタン32hを誤って押下することを防止することができる。
【0079】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、ジャイロセンサユニット7や他のコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0080】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のメインコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をプレイヤに通知したり、コントローラ5の電池残量をプレイヤに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dの何れか1つが点灯する。
【0081】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6R及び6Lからの赤外光を少なくとも透過する材質で構成される。
【0082】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ49(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0083】
次に、図5及び図6を参照して、コントローラ5の内部構造について説明する。図5及び図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0084】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、及びスピーカ49等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)及びアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0085】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、及び画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0086】
さらに、基板30の下主面上には、上記マイコン42及びバイブレータ48が設けられている。バイブレータ48は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ48が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているプレイヤの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ48は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ48がコントローラ5の中心よりも端側に配置することによって、バイブレータ48の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5及び図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ49に音声信号を出力するアンプ等を備えている。
【0087】
また、ジャイロセンサユニット7は、3軸回りの角速度を検知するジャイロセンサ(図7に示すジャイロセンサ55及び56)を有する。ジャイロセンサユニット7は、コントローラ5のコネクタ33に着脱可能に装着される。ジャイロセンサユニット7の前端(図3に示すZ軸正方向側の端部)には、コネクタ33に接続可能なプラグ(図7に示すプラグ53)が設けられる。さらに、プラグ53の両側にはフック(図示せず)が設けられる。ジャイロセンサユニット7がコントローラ5に対して装着される状態では、プラグ53がコネクタ33に接続されるとともに、上記フックがコントローラ5の係止穴33aに係止する。これによって、コントローラ5とジャイロセンサユニット7とがしっかりと固定される。また、ジャイロセンサユニット7は側面(図3に示すX軸方向の面)にボタン51を有している。ボタン51は、それを押下すれば上記フックの係止穴33aに対する係止状態を解除することができるように構成されている。したがって、ボタン51を押下しながらプラグ53をコネクタ33から抜くことによって、ジャイロセンサユニット7をコントローラ5から離脱することができる。
【0088】
また、ジャイロセンサユニット7の後端には、上記コネクタ33と同形状のコネクタが設けられる。したがって、コントローラ5(のコネクタ33)に対して装着可能な他の機器は、ジャイロセンサユニット7のコネクタに対しても装着可能である。なお、図3においては、当該コネクタに対してカバー52が着脱可能に装着されている。
【0089】
なお、図3〜図6に示したコントローラ5及びジャイロセンサユニット7の形状や、各操作ボタンの形状、加速度センサやバイブレータの数及び設置位置等は単なる一例に過ぎず、他の形状、数、及び設置位置であっても、本発明を実現することができる。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向は何れの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0090】
図7は、入力装置8(コントローラ5及びジャイロセンサユニット7)の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、コネクタ33、撮像情報演算部35、通信部36、及び加速度センサ37を備えている。コントローラ5は、自機に対して行われた操作内容を示すデータを操作データとしてゲーム装置3へ送信するものである。
【0091】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を示す操作ボタンデータを通信部36のマイコン42へ出力する。
【0092】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0093】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、及び画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、テレビ2の表示画面近傍に配置されるマーカ部6のマーカ6R及び6Lは、テレビ2の前方に向かって赤外光を出力する赤外LEDで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、マーカ6R及び6Lの画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象(マーカ6R及び6L)の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0094】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0095】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。例えば、3軸又は2軸の加速度センサは、アナログ・デバイセズ株式会社(Analog Devices, Inc.)又はSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能である種類のものでもよい。なお、加速度センサ37は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0096】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)及び前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、入力装置8(コントローラ5)を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトル(ax,ay,az)として表される。以下では、加速度センサ37によって検出される3軸に関する各加速度値を各成分とするベクトルを加速度ベクトルと呼ぶ。
【0097】
加速度センサ37が検出した加速度を示すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、加速度データ及び後述する角速度データに基づいてコントローラ5の姿勢を判断する。
【0098】
加速度センサ37が検出した加速度(加速度ベクトル)を示すデータ(加速度データ)は、通信部36へ出力される。本実施形態において、加速度センサ37は、コントローラ5の傾斜角度を判断するためのデータを出力するセンサとして用いられる。
【0099】
なお、加速度センサ37から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)又はコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測又は算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度又は姿勢を判定することができる。
【0100】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置又は他の種類の専用の処理装置を備えていてもよい。組込み式又は専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0101】
通信部36は、マイコン42、メモリ43、無線モジュール44、及びアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。また、マイコン42はコネクタ33に接続されている。ジャイロセンサユニット7から送信されてくるデータは、コネクタ33を介してマイコン42に入力される。以下、ジャイロセンサユニット7の構成について説明する。
【0102】
ジャイロセンサユニット7は、プラグ53、マイコン54、2軸ジャイロセンサ55、及び1軸ジャイロセンサ56を備えている。上述のように、ジャイロセンサユニット7は、3軸(本実施形態では、XYZ軸)周りの角速度を検出し、検出した角速度を示すデータ(角速度データ)をコントローラ5へ送信する。
【0103】
2軸ジャイロセンサ55は、X軸周りの角速度及びY軸周りの(単位時間あたりの)角速度を検出する。また、1軸ジャイロセンサ56は、Z軸周りの(単位時間あたりの)角速度を検出する。なお、本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、Z軸周り、X軸周り、Y軸周りの回転方向を、それぞれ、ロール方向、ピッチ方向、ヨー方向と呼ぶ。すなわち、2軸ジャイロセンサ55は、ピッチ方向(X軸周りの回転方向)及びヨー方向(Y軸周りの回転方向)の角速度を検出し、1軸ジャイロセンサ56は、ロール方向(Z軸周りの回転方向)の角速度を検出する。
【0104】
なお、本実施形態では、3軸回りの角速度を検出するために、2軸ジャイロセンサ55と1軸ジャイロセンサ56とを用いる構成としたが、他の実施形態においては、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数及び組み合わせはどのようなものであってもよい。
【0105】
また、本実施形態では、各ジャイロセンサ55及び56が角速度を検出する3つの軸は、加速度センサ37が加速度を検出する3つの軸(XYZ軸)と一致するように設定される。ただし、他の実施形態においては、各ジャイロセンサ55及び56が角速度を検出する3つの軸と、加速度センサ37が加速度を検出する3つの軸とは一致しなくてもよい。
【0106】
ジャイロセンサ55及び56で検出された角速度を示すデータは、マイコン54に出力される。したがって、マイコン54には、XYZ軸の3軸回りの角度速度を示すデータが入力されることになる。マイコン54は、上記3軸回りの角速度を示すデータを角速度データとしてプラグ53を介してコントローラ5へ送信する。なお、マイコン54からコントローラ5への送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。
【0107】
コントローラ5の説明に戻り、操作部32、撮像情報演算部35、及び加速度センサ37からマイコン42へ出力されたデータ、ならびに、ジャイロセンサユニット7からマイコン42へ送信されてきたデータは、一時的にメモリ43に格納される。これらのデータは、上記操作データとしてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3の無線コントローラモジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側の無線コントローラモジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、取得した操作データとゲームプログラムとに基づいて、ゲーム処理を行う。なお、通信部36から無線コントローラモジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で各操作データをゲーム装置3の無線コントローラモジュール19へ出力する。
【0108】
上記コントローラ5を用いることによって、プレイヤは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5を任意の傾斜角度に傾ける操作を行うことができる。その他、上記コントローラ5によれば、プレイヤは、コントローラ5によって画面上の任意の位置を指示する操作、及び、コントローラ5自体を動かす操作を行うこともできる。
【0109】
[ゲーム処理の概要]
次に、図8〜図13を参照して、本発明の一実施形態に係るゲーム処理の概要について説明する。本実施形態で想定するゲームは、カヌーを題材にしたゲームである。図8は、本実施形態で想定するゲームの画面の一例を示した図である。図8では、ゲーム画面には、ボート(カヌー)B(B1〜B4)と、ボートを漕ぐためのパドルと、ボートBが移動するコースとが図示されている。本ゲームは、入力装置8をカヌーのパドル(より正確には、パドルの柄)に見立て、パドルを漕ぐように(パドルで水を掻くように)入力装置8を動かすことで、ゲーム画面内のパドル102も移動する(コース上の水を掻く)。これにより、プレイヤは、ボートBを移動させることができ、擬似的にカヌーを楽しむことができる。また、本ゲームでは、複数人のプレイヤ(例えば、4人)が、それぞれ入力装置8を用いて各プレイヤに割り当てられたボートB1〜B4を移動させることにより、ゲームが進行する。すなわち、第1のプレイヤは、自身が把持する入力装置8を動かすことによりボートB1を移動させ、第2のプレイヤは、自身が把持する入力装置8を動かすことによりボートB2を移動させる。同様に、第3のプレイヤ及び第4のプレイヤは、それぞれ自身が把持する入力装置8を動かすことにより、ボートB3及びボートB4を移動させる。そして、各プレイヤは、自身に割り当てられたボートBがコース上に設定されたゴールに最も早く到達するように、互いに競い合いながらゲームを楽しむ。図8では、第2のプレイヤ(ボートB2)が先頭であるため、コースの先に設定されたゴール(図示せず)に最も近く、現時点で最も有利である。
【0110】
[仮想カメラの設定の概要]
次に、本実施形態におけるカヌーゲームの仮想カメラの設定について、説明する。図8に示されるように、本実施形態では、複数のボートBが1画面に同時に表示される。本実施形態では、仮想カメラの撮像方向及び仮想カメラの注視点を調整することにより、各プレイヤにとって見やすく(各プレイヤが各ボートBを操作しやすく)、複数のボートBが表示される。
【0111】
まず、仮想カメラの撮像方向の設定について説明する。具体的には、本実施形態では、仮想カメラの撮像方向は、各ボートBに個別に設定される「基準方向」に基づいて、設定される。また、仮想カメラの注視点は、それぞれのボートBに個別に設定される「設定位置」に基づいて、設定される。以下、各ボートBの「基準方向」及び「設定位置」について、説明する。
【0112】
各ボートBに設定される「基準方向」とは、各ボートBに仮想的に設定された視線の方向であり、各ボートBの視点(各ボートBに乗ったプレイヤオブジェクトの視点)からゲーム空間を見た方向である。例えば、ボートB1の視点からゲーム空間を見た場合、図8とは見え方が異なる。図9は、ボートB1の視点からゲーム空間を見た場合の画像を示した図である。図9において、分かりやすくするためにボートB1以外のボートの表示を省略している。図9に示されるように、ボートB1(のプレイヤオブジェクト)からゲーム空間を見た場合、図8で示されるゲーム空間の領域よりも左側の領域がより広く見える。このように、基準方向は、各ボートBによって異なる。
【0113】
ここで、ボートBの基準方向は、当該ボートBの移動方向と当該ボートBの向き(前方向)とに基づいて、定められる。具体的には、基準方向は、図10に示されるようにして算出される。図10は、ボートBの基準方向の算出方法を説明するための図であり、ボートBをゲーム空間の上方から見た図である。図10では、ボートBの速度を示す速度ベクトルVと、ボートBの前方向を示す前方向ベクトルFdとが図示されている。ここで、前方向ベクトルFdは、ゲーム空間におけるボートBの中心位置からボートBの先端(カヌーの先端)位置に向かう単位ベクトルである。図10に示されるように、速度ベクトルVに重みKvを掛けたベクトルと、前方向ベクトルFdに重みKfを掛けたベクトルとを足し合わせて、正規化することにより、基準方向を示す基準方向ベクトルDが求められる。すなわち、各ボートBi(iは1〜4の何れか)の基準方向ベクトルDiは、以下の式1によって算出される。
Di=(Kv×Vi+Kf×Fdi)/|Kv×Vi+Kf×Fdi| (1)
なお、重みKv及びKfは、予め定められた係数であり、例えば、Kv=2、Kf=3に設定される。また、Viは、ボートBiの速度ベクトルであり、Fdiは、ボートBiの前方向ベクトルである。速度ベクトルViの向きは、ボートBiの現在の移動方向を表している。
【0114】
次に、算出された各ボートB(B1〜B4)の基準方向D(D1〜D4)に基づいて、仮想カメラの撮像方向を算出する。具体的には、まず、各基準方向D(D1〜D4)を加重平均することにより、平均方向ベクトルWDを算出する。平均方向ベクトルWDは以下の式2によって求められる。
WD=(W1×D1+W2×D2+W3×D3+W4×D4+Wm×Dm)/(W1+W2+W3+W4+Wm) (2)
なお、W1〜W4は、先頭のボートから各ボートBまでの距離に応じて算出される係数であり、各基準方向ベクトルDiに対する重みである。また、Wmは、所定の定数である。また、Dmは、平均方向ベクトルWDをコース順方向(ボートBの現在位置からコース上のゴールに向かう、コースに沿った方向)に向けるためのベクトルであり、各ボートBのコース順方向から求められる。
【0115】
次に、重みW1〜W4の算出方法、コース順方向、及びDmについて説明する。まず、図11を用いて、重みW1〜W4を算出するための到達距離及び順方向(コース順方向)について説明する。図11は、到達距離と順方向を説明するための図である。図11では、コースをゲーム空間の上方から見た場合において、ボートBが、図の右方向に設定されたゴール(図示せず)に向かってコース上を移動している様子が示されている。到達距離は、図の左下方向に設定されたスタート地点(図示せず)からのコースに沿った距離を示す。到達距離は、ゲーム空間における位置に応じて定められる。また、順方向は、コース上の位置からゴールへ向かう、コースに沿った方向であり、例えばコースに沿って一定の間隔毎に定義された単位ベクトルによって表される。ここで、到達距離Taでの順方向ベクトルをCa、到達距離Tb(>Ta)での順方向ベクトルをCbとすると、ボートBiの到達距離Ti及び順方向ベクトルCiは、以下の式3及び式4によって算出される。
Ti=(Na×Tb+Nb×Ta)/(Na+Nb) (3)
Ci=(Na×Cb+Nb×Ca)/(Na+Nb) (4)
ここで、Naは到達距離Taの地点からボートBiの位置Piまでの距離を表し、Nbは到達距離Tbの地点からボートBiの位置Piまでの距離を表す。なお、式4によって算出された各順方向に基づいて、上記Dmが算出される。具体的には、Dmは、各順方向ベクトルCiの平均を示すベクトルであり、以下の式5によって算出される。
Dm=(C1+C2+C3+C4)/4 (5)
【0116】
上述のようにして算出されたボートBiの到達距離Ti及び順方向ベクトルCiを用いて、上述した重みWi(W1〜W4)は、以下の式6によって算出される。
Wi=(1+Kt×(T0−Ti))×Si (6)
なお、T0は、先頭のボートBの到達距離を示す。また、Ktは、所定の定数である。式6において、Siは順方向度合い(基準方向Diが示す方向と、順方向Ciが示す方向との一致度合い)を示す。順方向度合いSiは、基準方向ベクトルDiと順方向ベクトルCiとの内積に応じて求められる。具体的には、基準方向ベクトルDiと順方向ベクトルCiとの内積値Di・Ciが0以上の場合、順方向度合いSi=Di・Ci=cosθ(θはベクトルDiとCiとがなす角度)となる。一方、内積値Di・Ciが0未満の場合、順方向度合いSi=0となる。すなわち、基準方向ベクトルDiと順方向ベクトルCiとの角度が0の場合、Si=1となり、基準方向ベクトルDiと順方向ベクトルCiとの角度が90度以上の場合、Si=0となる。なお、順方向度合いSiは、基準方向ベクトルDiと順方向ベクトルCiとの角度が90度以上の場合、内積値に応じた負の値に設定されてもよい。
【0117】
上記式6で示されるように、重みWiは、先頭のボートから離れるほど大きくなり、順方向度合いが大きいほど大きくなる。図12は、あるゲーム状況の一例をゲーム空間の上方から見た図である。例えば、図12に示されるように、先頭からボートB2(到達距離T2)、B3(到達距離T3)、B1(到達距離T1)、B4(到達距離T4)の順で各ボートが移動している場合、重みW1〜W4は、以下の値になる。
W2=S2=D2・C2
W3=(1+Kt×(T2−T3))×D3・C3
W1=(1+Kt×(T2−T1))×D1・C1
W4=0
なお、基準方向ベクトルD4と順方向ベクトルC4との角度が90度以上であるため、W4は0となる。
【0118】
上述したように、式1によって各基準方向ベクトルDiが算出され、式3、4及び6によって、各重みWiが算出される。次に、式2及び5によって平均方向ベクトルWDが算出される。そして、算出された平均方向ベクトルWDに基づいて、仮想カメラの撮像方向が設定される。例えば、平均方向ベクトルWDにゲーム空間の下方に向かう所定の大きさのベクトル(z軸負方向のベクトル)を加えることによって、仮想カメラの撮像方向が設定される。上述のようにして算出された平均方向ベクトルWDは、ゲーム空間の水平方向(コースの水面と平行な方向)のベクトルであるため、仮想カメラの撮像方向を平均方向ベクトルと一致させると、表示される画像は奥行きの距離を把握し難い画像となる。従って、平均方向ベクトルWDにゲーム空間の下方に向かうベクトルを加えることによって、ゲーム空間を斜め上方から見下ろした画像が表示され、図8に示されるような見やすい画像が表示される。
【0119】
このようにして、平均方向ベクトルWDに基づいて仮想カメラの撮像方向を設定することによって、表示される画像は、複数のプレイヤにとって見やすく、各ボートを操作しやすい画像となる。また、先頭からの距離が遠いほどそのボートの基準方向に対する重みが重くなるため、仮想カメラの撮像方向は、先頭からの距離が遠いボートの基準方向に近くなる。従って、表示される画像は、先頭からの距離が遠いボートの基準方向に近い方向から撮像された画像となるため、先頭から遅れているプレイヤにとって見やすい画像となる。このため、先頭から遅れているプレイヤにとっては有利となり、プレイヤの操作技術に差がある場合でもそれぞれのプレイヤがゲームを楽しむことができる。
【0120】
また、各ボートの基準方向に対する重みは、当該基準方向の順方向度合いが大きいほど大きくなる。このため、仮想カメラの撮像方向は、順方向度合いが大きいボートの基準方向に近い方向となる。従って、表示される画像は、基準方向と順方向とが一致しているボートを操作しているプレイヤにとって見やすい画像となる。すなわち、コース順方向に沿って正確にボートを操作しているプレイヤにとって、見やすい画像となる。逆に、コースの順方向とは反対方向を向いているボートや、コースの順方向とは反対方向に進んでいるボートの基準方向に対する重みは0に設定されるため、当該ボートの基準方向は、仮想カメラの撮像方向には影響しない。従って、一部のボートがコースを横切る方向に進んだり、コースを逆走したりしている場合においても、仮想カメラの撮像方向は、コースの順方向から大きくずれることはない。これにより、例えば、3人のプレイヤがコースの順方向にボートを進めており、1人のプレイヤが故意にコースの逆方向にボートを進めようとした場合でも、3人のプレイヤにとって望ましい画像(コースの順方向を撮像した画像)が表示される。
【0121】
次に、仮想カメラの注視点の設定について説明する。本実施形態では、前述したように、仮想カメラの注視点は、各ボートBに個別に設定される「設定位置」に基づいて、設定される。各ボートBに個別に設定される「設定位置」とは、当該ボートの位置と上述した基準方向とに基づいて定められる位置である。具体的には、ボートBiの設定位置Aiは、以下の式7によって算出される。
Ai=Pi+Kd×Di (7)
なお、PiはボートBiの位置ベクトルであり、Kdは所定の定数である。このようにして算出される設定位置は、ボートの移動方向と向き(前方向)に基づいて決定される位置であって、現在のボートの移動方向と向き(前方向)に基づいて予測されるボートの移動先であると言い換えることができる。なお、ボートの設定位置を計算する際に、ボートの移動方向だけでなくボートの向き(前方向)も加味している理由は、ボートは基本的にプレイヤの操作に応じて前方向に加速するため、ボートの移動先はボートの向き(前方向)にも左右され得るからである。ボートを操作するプレイヤにとって、ゲームを有利に進めるためには、自分の操作しているボートの移動先の状況を把握することが重要である。したがって、ボートの設定位置は、そのボートを操作するプレイヤにとって、画面上で最も視認したい位置であると言うことができる。
【0122】
上記式7によって算出された各ボートの設定位置Aiを加重平均することによって、仮想カメラの注視点Aが算出される。仮想カメラの注視点Aは、以下の式8によって算出される。
A=(WA1×A1+WA2×A2+WA3×A3+WA4×A4)/(WA1+WA12+WA3+WA4) (8)
なお、WA1〜WA4は、先頭のボートから各ボートBまでの距離に応じて算出される係数であり、各設定位置Aiに対する重みである。
【0123】
各設定位置Aiに対する重みWAiは、以下の式9によって算出される。
WAi=1+Kt×(T0−Ti) (9)
なお、Ktは所定の定数である。また、T0は、先頭のボートBの到達距離を示す。
【0124】
上記式9で示されるように、重みWAiは、上記式6で算出される重みWiと同様、先頭のボートから離れるほど大きくなる。図13は、あるゲーム状況の一例における仮想カメラの注視点を示す図である。例えば、図13に示されるように、先頭からボートB2(到達距離T2)、B3(到達距離T3)、B1(到達距離T1)、B4(到達距離T4)の順で各ボートが移動している場合、重みWA1〜WA4は、以下の値になる。
WA2=1
WA3=1+Kt×(T2−T3)
WA1=1+Kt×(T2−T1)
WA4=1+Kt×(T2−T4)
そして、これら重みWA1〜WA4を上記式8に代入することにより、仮想カメラの注視点Aが求められる。図13に示されるように、先頭のボートB2からの距離が最も遠いボートB4に対する重みが最も大きくなるため、仮想カメラの注視点Aは、最も遅れているボートB4の設定位置A4に近い位置となる(より正確には、各ボートの設定位置A1〜A4の重心位置よりもボートB4の設定位置A4に近い位置となる)。なお、図13では、注視点Aに最も近いのはボートB1である。このように、注視点Aは、各ボートの設定位置を加重平均して算出されるため、必ずしも最も遅れているボートの位置に、最も近づくとは限らない。
【0125】
このように、仮想カメラの注視点は、遅れているボートの設定位置により近い位置に設定される。仮想カメラの注視点は画面中央に設定されるため、画面に表示される画像は、遅れているボートのプレイヤにとって、見やすい画像(操作しやすい画像)となる。特に、先頭からより遅れているボートのプレイヤにとって、より見やすい画像が表示される。
【0126】
以上のようにして、仮想カメラの撮像方向及び仮想カメラの注視点を設定することによって、表示される画像は、複数のプレイヤにとって見やすく、各ボートを操作しやすい画像となる。
【0127】
なお、詳細は後述するが、本実施形態においては、上記複数のボートB(B1〜B4)が1画面に表示されるように、仮想カメラの注視点距離(仮想カメラから注視点までの距離)が設定される。しかしながら、各ボート間の距離が大きく離れた場合において、仮想カメラの注視点距離を長くすることによってすべてのボートを1画面に表示しようとすると、各ボートが小さく表示されてしまう。従って、仮想カメラの注視点距離に最大値を設け、当該最大値を超えないように、注視点距離が設定される。注視点距離が最大値に達した場合、一部のボートは画面には表示されなくなることがある。
【0128】
[ゲーム処理の詳細]
次に、図14〜図18を参照してゲーム装置3において実行されるゲーム処理の詳細について説明する。まず、ゲーム装置3における処理において用いられる主なデータについて図14を用いて説明する。図14は、ゲーム装置3のメインメモリ(外部メインメモリ12又は内部メインメモリ11e)に記憶される主なデータを示す図である。
【0129】
図14に示されるように、ゲーム装置3のメインメモリには、ゲームプログラム60、操作データ62、及びゲーム処理用データ67が記憶される。なお、メインメモリには、図14に示すデータの他、ゲームに登場する各種オブジェクトの画像データや、オブジェクトの各種パラメータを示すデータ等、ゲーム処理に必要なデータが記憶される。
【0130】
ゲームプログラム60は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部又は全部が読み込まれてメインメモリに記憶される。ゲームプログラム60には、仮想カメラ設定プログラム61が含まれる。仮想カメラ設定プログラム61は、仮想カメラの撮像方向や注視点等、仮想カメラを制御するためのプログラムである。
【0131】
操作データ62は、複数のコントローラ5(入力装置8)からゲーム装置3へ送信されてくる操作データである。すなわち、操作データ62には、第1のプレイヤが把持するコントローラ5の操作データ、第2のプレイヤが把持するコントローラ5の操作データ、第3のプレイヤが把持するコントローラ5の操作データ、及び第4のプレイヤが把持するコントローラ5の操作データが含まれる。上述したように、コントローラ5からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、外部メインメモリ12に記憶される操作データ62はこの割合で更新される。
【0132】
操作データ62には、角速度データ63、加速度データ64、マーカ座標データ65、及び操作ボタンデータ66が含まれる。角速度データ63は、ジャイロセンサユニット7のジャイロセンサ55及び56によって検出された角速度を示すデータである。ここでは、角速度データ63は、図3に示すXYZの3軸回りのそれぞれの角速度を示す。また、加速度データ64は、加速度センサ37によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ64は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルを示す。
【0133】
マーカ座標データ65は、撮像情報演算部35の画像処理回路41によって算出される座標、すなわち上記マーカ座標を示すデータである。
【0134】
操作ボタンデータ66は、各操作ボタン32a〜32iに対する入力状態を示すデータである。
【0135】
ゲーム処理用データ67は、後述するゲーム処理(図15に示すフローチャート)において用いられるデータである。ゲーム処理用データ67は、オブジェクトデータ68、基準方向データ69、順方向データ70、設定位置データ71、平均方向データ72、及び、注視点データ73を含む。なお、図14に示すデータの他、ゲーム処理用データ67は、ゲーム処理において用いられる各種データ(ゲームパラメータを示すデータ等)を含む。
【0136】
オブジェクトデータ68は、ボートBi(i=1〜4)の位置Pi、速度Vi、到達距離Ti、及び、ボートBiの前方向ベクトルFdiを示すデータの集合である。メインメモリには、ボート毎に上記情報を示すデータが記憶される。
【0137】
また、基準方向データ69は、各ボートBiの基準方向ベクトルDiを示すデータである。順方向データ70は、各ボートBiの順方向ベクトルCiを示すデータである。設定位置データ71は、各ボートBiの設定位置Aiを示すデータである。平均方向データ72は、上述した平均方向ベクトルWDを示すデータである。注視点データ73は、上述した注視点Aの位置を示すデータである。
【0138】
次に、図15を参照して、ゲーム装置3によって実行されるゲーム処理について説明する。図15は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、ROM/RTC13に記憶されている起動プログラムを実行し、これによって外部メインメモリ12等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図15に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。なお、図15では、本発明に直接関連しないゲーム処理については記載を省略し、上述した仮想カメラの設定に関する処理についてのみ主に説明する。また、図15に示すステップS1〜ステップS10の処理ループは、1フレーム毎に繰り返し実行される。
【0139】
まず、ステップS1において、CPU10は、操作データを取得する。具体的には、CPU10は、メインメモリの操作データ62を参照して、ゲーム空間に配置された各ボートBに対応付けされた入力装置8の操作データを取得する。次に、CPU10は、ステップS2の処理を実行する。
【0140】
ステップS2において、CPU10は、各ボートBのゲーム空間における速度及び前方向を算出する。ステップS2の処理においては、CPU10は、ボートBiの現在の速度ViとステップS1で取得したボートBiの操作データ等に基づいて、ボートBiの新たな速度Viを算出する(すなわち、ボートBiの速度Viを更新する)。また、CPU10は、ボートBiの現在の前方向と、ボートBiの操作データとに基づいて、ボートBiの前方向を算出する。具体的には、CPU10は、ステップS1で取得したボートBiの操作データに基づいて、ボートBiに加えるべき力(力の大きさ及び方向)を算出する。そして、CPU10は、算出された力をボートBiに加え、さらにゲーム空間の風の向き(風の抵抗力)やボートが浮かぶ川の流れ(水の抵抗)等を考慮して、ボートBiの速度Viを算出する。ボートBiに加えるべき力は、ボートBiの操作データに含まれる角速度データ63及び加速度データ64に基づいて、算出される。また、CPU10は、ボートBiに加えるべき力(大きさと方向)に応じた回転を現在の前方向ベクトルFdiに加えることにより、新たな前方向ベクトルFdiを算出する。例えば、ボートB1に対応付けされた入力装置8の角速度及び加速度に基づいて、当該入力装置8の姿勢及び移動速度を推定することによって、ボートB1に加えるべき力が算出される。そして、CPU10は、算出された力、水の抵抗力、風の抵抗力、及びボートB1の現在の速度V1に基づいて、ボートB1の新たな速度V1を算出する。また、CPU10は、算出された力に応じた回転をボートB1に加えることにより、ボートB1の前方向ベクトルFd1を算出する。そして、CPU10は、ボートB1の速度V1及び前方向ベクトルFd1をオブジェクトデータ68として、メインメモリに記憶する。各ボートBの速度及び前方向を算出してメインメモリに記憶した後、CPU10は、次にステップS3の処理を実行する。
【0141】
ステップS3において、CPU10は、各ボートBのゲーム空間における位置、到達距離、及び順方向を更新する。具体的には、CPU10は、ボートBiの現在位置Piと速度Viとに基づいて、ボートBiの位置Piを更新する。また、CPU10は、更新した位置Piに応じて到達距離Ti及び順方向ベクトルCiを算出する。そして、CPU10は、各ボートBの位置、到達距離、及び順方向をオブジェクトデータ68として、メインメモリに記憶する。次に、CPU10は、ステップS4の処理を実行する。
【0142】
ステップS4において、CPU10は、各ボートBの基準方向を算出する。具体的には、CPU10は、メインメモリを参照して、ボートBiの速度Viと前方向ベクトルFdiとを取得し、これらのベクトルに所定の係数を掛けて合成することにより、ボートBiの基準方向Diを算出する(上記式1を参照)。そして、CPU10は、算出した各基準方向Dを基準方向データ69としてメインメモリに記憶する。次に、CPU10は、ステップS5の処理を実行する。
【0143】
ステップS5において、CPU10は、各ボートBの基準方向を加重平均した平均方向を算出する。具体的には、CPU10は、まずメインメモリを参照して、ボートBiの到達距離Ti、基準方向ベクトルDi、及び順方向ベクトルCiを取得する。次に、CPU10は、基準方向ベクトルDiと順方向ベクトルCiとの内積値を算出することによって、上記順方向度合いSiを算出する。そして、CPU10は、上記式6を用いて重みWiを算出した後、式2を用いて平均方向ベクトルWDを算出し、メインメモリに記憶する。ステップS5の後、CPU10は、ステップS6の処理を実行する。
【0144】
ステップS6において、CPU10は、仮想カメラの注視点を算出する。具体的には、まず、CPU10は、ボートBiの設定位置Aiを上記式7により算出する。次に、CPU10は、式9を用いて、各設定位置Aiに対する重みWAiを算出する。そして、CPU10は、算出した各設定位置を加重平均することにより、仮想カメラの注視点Aを算出する(上記式8を参照)。次に、CPU10は、ステップS7の処理を実行する。
【0145】
ステップS7において、CPU10は、仮想カメラの注視点距離を算出する。ステップS7での処理は、仮想カメラの撮像範囲を決定する処理である。ここで、注視点距離とは、仮想カメラの位置(視点)から注視点Aまでの距離であり、注視点距離が長いほど撮像範囲は広くなる。ステップS7における処理の詳細を、図16を用いて説明する。図16は、図15における注視点距離の算出処理(ステップS7)の詳細を示すフローチャートである。
【0146】
まず、CPU10は、ステップS21の処理を実行する。ステップS21において、CPU10は、現在の注視点距離Lを更新する。具体的には、CPU10は、以下に示す式10を用いて、注視点距離Lを設定する。
新たなL=現在のL−(現在のL−L0)×Ld (10)
なお、L0は注視点距離の初期距離であり、例えば、L0=2.5(m)に設定される。また、Ldは所定の定数である。式10に示されるように、注視点距離Lは、徐々に初期距離L0に近づくように設定される。これにより、注視点距離Lが急激に変化することを防止することができ、仮想カメラの撮像範囲が急激に広くなったり、狭くなったりすることを防止することができる。ステップS21の処理の後、CPU10は、ステップS22の処理を実行する。
【0147】
ステップS22において、CPU10は、最大はみ出し量Gを算出する。ここで、最大はみ出し量とは、各ボートBの表示領域(撮像範囲)からのはみ出し量の最大値である。図17は、最大はみ出し量を説明するための図である。図17において、表示領域81は、画面(テレビ画面)の外枠であり、表示領域81に表示されるゲーム空間の範囲は、注視点距離Lによって定められる仮想カメラの撮像範囲である。図17に示されるように、ステップS21によって定められた注視点距離Lでは、ボートB3及びB4の全体が表示されるが、仮想カメラの撮像範囲が狭いため、ボートB1の一部は表示領域81からはみ出している。このボートB1を表示領域81に収めるため、最大はみ出し量Gが算出される。具体的には、CPU10は、各ボートBの先端及び後端の位置(画面上の座標位置)を求め、画面に設定された余白枠80からの距離を求める。そして、CPU10は、余白枠80からの距離が最大となる最大はみ出し量Gを求める。なお、すべてのボートBが表示領域81からはみ出していない場合、最大はみ出し量Gは0となる。次に、CPU10は、ステップS23の処理を実行する。
【0148】
ステップS23において、CPU10は、L+G×Lgが注視点距離の最大値Lmaxより大きいか否かを判定する。ここで、GはステップS22で算出された最大はみ出し量Gであり、Lgは所定の定数である。ステップS23の処理は、注視点距離Lが最大値Lmaxを越えないようにするための処理である。注視点距離Lが長いほど仮想カメラの撮像範囲は広くなるが、各ボートは小さく表示されるため、プレイヤにとって見難い。このため、注視点距離に最大値が設定される。判定結果が否定の場合、CPU10は、次にステップS24の処理を実行する。一方、判定結果が肯定の場合、CPU10は、図16に示される注視点距離の算出処理を終了する。
【0149】
ステップS24において、CPU10は、注視点距離Lを更新する。具体的には、CPU10は、ステップS21で算出した注視点距離LにG×Lgを加えることにより、新たな注視点距離Lを算出し、メインメモリに記憶する。ステップS24で注視点距離Lが設定されることによって、表示領域81からはみ出しているボートが存在している場合、当該はみ出しているボートを表示領域に含むように仮想カメラの撮像範囲(表示領域)が広くなる(すなわち、画面全体が縮小表示される)。また、G×Lgを加えることによって、徐々に撮像範囲が広くなるため、急激に表示領域が拡大されることを防止することができる。ステップS24の後、CPU10は、図16に示される注視点距離の算出処理を終了する。
【0150】
なお、上記ステップS23において、注視点距離Lが最大値Lmaxを越えないように調整されるが、注視点距離Lが最大値Lmaxになった場合において表示領域81に全く表示されないボートが存在する場合、画面の端に吹き出しを表示することにより、当該表示されないボートのおおよその位置と姿勢を表示するようにしてもよい。
【0151】
図15に戻り、CPU10は、次にステップS8の処理を実行する。ステップS8において、CPU10は、先頭以外のボートに牽引力を発生させる。ここでの処理は、先頭以外のボートの先端部分にコース順方向の力を加えることによって、先頭以外のボートの移動を補正する処理である。すなわち、ステップS8においては、先頭以外のボートをコース順方向に加速させると同時に、ボートの向き(前方向)をコース順方向に近づけることによって、先頭以外のボートの移動する方向を補正する。この処理によって、先頭以外のボートがレースから遅れ過ぎないようにすることができる。図18は、先頭以外のボートに対する牽引力を説明するための図である。例えば、CPU10は、図18に示されるように、各ボートB(B1、B3、及びB4)の先端部分に対して、各ボートBの順方向に、先頭のボートB2までの距離に応じた大きさの牽引力Fi(F1、F3、及びF4)を加える。具体的には、CPU10は、ボートBiに対する牽引力Fiを以下の式11により、算出する。
Fi=fi×Ci (11)
ここで、fiは、先頭のボートまでの距離に応じて変化する値(0.0〜1.0の範囲)である。具体的には、fiは、先頭の到達距離T0からボートBiの到達距離Tiを引いた値に基づいて定められる。例えば、T0−Tiが所定の下限値(例えば、5m)より小さい場合、fiは0に設定され、T0−Tiが所定の上限値(例えば、15m)より大きい場合、fiは1に設定される。T0−Tiが下限値から上限値の間の値である場合、その値(T0−Ti)に比例してfiが設定される。そして、CPU10は、ステップS8で算出された牽引力を各ボートBの先端部分に加えることによって、各ボートの速度、位置、及び、向き(前方向)を更新する。ステップS8の処理の後、CPU10は、次にステップS9の処理を実行する。
【0152】
ステップS9において、CPU10は、仮想カメラの撮像方向を設定する。具体的には、CPU10は、ステップS5で算出された平均方向に基づいて、仮想カメラの撮像方向を決定する。例えば、CPU10は、ステップS5で算出された平均方向ベクトルWDに所定の下方向ベクトル(ゲーム空間の下方向(z軸負方向)のベクトル)を加えることにより、仮想カメラの撮像方向を算出する。なお、下方向ベクトルは、上述した注視点距離Lに応じて定められ、例えば、注視点距離Lが長いほど(仮想カメラによる撮像範囲が広いほど)、下方向ベクトルが大きく設定される。従って、仮想カメラの撮像範囲(表示領域)が広いほど、より上方から下方にコースを見下ろした画像が表示される。このように、注視点距離が長いほど、仮想カメラの撮像方向を下方向に傾けることにより、プレイヤにとって見やすい画像が表示される。すなわち、撮像範囲が広い場合、当該撮像範囲に含まれるボートのうち、最も遠くに存在するボート(例えば、図8に示される先頭のボートB2)は、小さく表示され、当該ボートB2の周辺の環境も小さく表示される。この場合において、仮想カメラの撮像方向が水平方向に近い場合(加える下方向ベクトルが小さい場合)、ボートB2を操作するプレイヤは、ボートB2の位置及び周辺のコースや障害物等の位置関係を把握し難い。逆に、ゲーム空間を上方から見た場合、ボート及び周辺の環境が小さく表示された場合であっても、上記位置関係を容易に把握することができる。ステップS9の処理の後、CPU10は、次にステップS10の処理を実行する。
【0153】
ステップS10において、CPU10は、その他のゲーム処理を実行する。例えば、CPU10は、ボートと障害物との衝突判定等の処理を実行し、判定結果に応じて、所定の処理を実行する(例えば、ボートが障害物と衝突した場合、ボートを減速させたり、ボートの移動方向や向きを変えたりする)。また、CPU10は、ボートがゴールに達したか否かの判定を行い、判定結果に応じて、所定の処理を実行する。更に、CPU10は、表示処理を実行する。これにより、上述のようにして算出された仮想カメラの撮像方向、注視点、及び注視点距離に基づいて定められる表示領域(撮像範囲)に存在するボートやパドル、障害物、コース周辺の環境オブジェクト等の画像がテレビ2に表示される。
【0154】
次に、ステップS11において、CPU10は、ゲーム終了か否かを判定し、肯定の場合、ゲーム処理を終了し、否定の場合、ステップS1に戻って、ゲーム処理を繰り返す。以上で、本実施形態に係るゲーム処理は終了する。
【0155】
以上のように、本実施形態では、各ボートの基準方向を加重平均することによって平均方向を求め、仮想カメラの撮像方向を設定する。さらに、各ボートの設定位置(ボートの位置と基準方向によって定まる位置)を加重平均することによって仮想カメラの注視点が設定される。このようにして設定された仮想カメラによって撮像された画像は、各プレイヤにとって見やすく、操作しやすい画像となる。
【0156】
なお、本実施形態では、各ボートの速度と前方向とによって各ボートの基準方向が算出され、算出された基準方向を加重平均することによって、上記平均方向が算出された。他の実施形態では、各ボートの基準方向は、各ボートの速度(移動方向)又は前方向の何れかに応じて定められ、これを用いて上記平均方向が算出されてもよい。例えば、各ボートの移動方向を加重平均することによって、上記平均方向が算出されてもよい。
【0157】
また、本実施形態では、各ボートの基準方向は当該ボートの速度と前方向ベクトルを用いて上記式1により算出された。他の実施形態では、具体的な計算方法はこれに限らず、ボートの基準方向は、ボートの移動方向とボートの向きとに基づいて、どのような計算方法によって求められてもよい。例えば、各ボートの基準方向は、単純にボートの速度と前方向ベクトルを加算することによって求められてもよいし、ボートの速度と前方向ベクトルとに所定の方向(ベクトル)を加えて求められてもよい。また、各ボートの基準方向は、ボートの速度と後方向ベクトル(前方向ベクトルとは逆方向のベクトル)とを用いて算出されてもよいし、ボートの速度と右方向ベクトル(前方向ベクトルとの角度が直角のベクトルであって、ボートを右から見た場合のベクトル)とを用いて算出されてもよい。このようにして算出される各ボートの基準方向は、各ボートを前から見た場合の方向であったり、各ボートを右から見た場合の方向であったりする。すなわち、上記実施形態では、各ボートの基準方向は、各ボートの視点からゲーム空間を見た方向であるとして説明したが、他の実施形態では、各ボートの基準方向は、各ボートの向きと移動方向とに基づいて定められる方向であり、各ボートの視点からゲーム空間を見た方向に限られない。
【0158】
また、本実施形態では、先頭のボートから遠いボートほど(不利なボートほど)重みを重くして上記平均方向を算出したが、他の実施形態では、先頭のボートから近いボートほど(有利なボートほど)重みを重くして上記平均方向を算出してもよい。これにより、仮想カメラの撮像方向は、先頭のボートの基準方向に近い方向になり、先頭のボートほど有利になる。
【0159】
また、他の実施形態に係るゲームでは、当該ゲームのルールにおいて有利な状況(又は不利な状況)であるオブジェクトほど、重みを重くして上記平均方向が算出されてもよい。例えば、複数のオブジェクトが勝ち点(勝利数)や勝率、ポイント数を競うゲームにおいて、勝ち点や勝率、ポイント数の大きい(又は小さい)オブジェクトほど、有利な状況(又は不利な状況)であるとして、重みを重くしてもよい。
【0160】
また、本実施形態では、ボートの設定位置は、当該ボートの位置と基準方向とに基づいて算出された(式7)。他の実施形態では、ボートの設定位置は、当該ボートの位置のみに基づいて、算出されてもよい。
【0161】
また、各ボートの基準方向Diや設定位置Aiに対する重みは、上述した方法(式6又は式9)以外の方法によって算出されてもよい。例えば、各ボート(各ボートの基準方向Diや設定位置Ai)に対する重み付けは、予め定められてもよい。例えば、ゲーム開始前に複数のプレイヤの熟練度に応じて、プレイヤ自身によって重み付けが設定されてもよい。この場合において、熟練度の低いプレイヤに対しては、重みが比較的重く設定され、熟練度の高いプレイヤに対しては、重みが比較的軽く(あるいは、0に)設定されてもよい。プレイヤ自身によって予めカメラ設定をすることにより、熟練度の低いプレイヤにとって比較的有利なカメラ設定(撮像方向と注視点)になるようにすることができる。これにより、熟練度の低いプレイヤが見やすく、操作しやすい画像が表示されるため、他の熟練度の高いプレイヤに対するハンディキャップになる。このように、予め各プレイヤに有利又は不利な条件を設定することによって、プレイヤの熟練度に応じたハンディキャップを設定することができる。
【0162】
上述のように、他の実施形態では、各オブジェクトの移動方向及び/又は各オブジェクトの向きに基づいて、上記各オブジェクトの基準方向が算出されてもよい。そして、算出された各基準方向を所定の条件で加重平均することによって、上記平均方向が算出されてもよい。ここで、所定の条件とは、上述したように、有利な状況(又は不利な状況)ほど重みを重くしたり、有利な条件(又は不利な条件)ほど重みを重くしたりする条件である。すなわち、各基準方向に対する重み付けはどのような条件によって行われてもよく、例えば、各プレイヤによる入力装置8の操作に応じて、入力装置8に対応付けされたオブジェクト(の基準方向や設定位置)に対する重み付けが変更されてもよい。
【0163】
また、本実施形態では、仮想カメラの撮像方向は、上記平均方向に所定の補正(所定の下方向ベクトルを加える補正)を行うことにより求められたが、他の実施形態では、仮想カメラの撮像方向を上記平均方向に一致させてもよい。
【0164】
また、本実施形態では、各ボートの基準方向を加重平均することによって上記平均方向を算出したが、他の実施形態では、各基準方向を単純に平均することによって、上記平均方向が求められてもよい。同様に、他の実施形態では、仮想カメラの注視点は、各ボートの設定位置Aiを単純に平均することによって、求められてもよい。また、仮想カメラの注視点は、各ボートの位置(ゲーム空間における位置Pi)を平均することによって、求められてもよい。
【0165】
また、本実施形態では、上述した方法により仮想カメラの撮像方向と注視点とを設定したが、他の実施形態では、上述の方法により仮想カメラの撮像方向のみを設定し、注視点は他の方法により設定されてもよい(例えば、常にコースの中心を注視点に設定する等)。また、仮想カメラの注視点のみを上述した方法により設定し、仮想カメラの撮像方向は、他の方法により設定されてもよい(例えば、当該注視点におけるコース順方向に設定する等)。
【0166】
また、本実施形態では、画面に表示される複数のオブジェクトの基準方向を加重平均することによって、仮想カメラの撮像方向を算出した。他の実施形態では、表示される複数のオブジェクトのうち、一部のオブジェクトの基準方向を加重平均することによって、仮想カメラの撮像方向を算出してもよい。例えば、ゲーム空間にプレイヤキャラクタ以外のゲームキャラクタが存在する場合、当該ゲームキャラクタの基準方向は仮想カメラの撮像方向には影響しないようにしてもよい。
【0167】
また、本実施形態では、カヌーゲームを例にしたが、他の様々なゲームに上記仮想カメラの設定方法が適用されてもよい。上述した方法は、複数のプレイヤオブジェクトが1画面に表示される種々のゲーム、例えば、短距離走のようなトラック競技(陸上競技)や水泳等のゲーム、サッカーやラグビーゲーム等にも適用されてもよい。また、複数のオブジェクトが平面上を移動するゲームに限らず、3次元ゲーム空間の上下方向にも移動可能な複数のオブジェクト(例えば、飛行機等)を移動させるゲームにも、上述した仮想カメラの設定方法は適用可能である。
【0168】
また、本発明のゲームプログラムは、光ディスク4等の外部記憶媒体を通じてゲーム装置3に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置3に供給されてもよい。また、携帯型のゲーム装置によって上記プログラムが実行されてもよい。また、ゲームプログラムは、ゲーム装置3内部の不揮発性記憶装置に予め記録されていてもよい。なお、ゲームプログラムを記憶する情報記憶媒体(コンピュータ読み取り可能な記憶媒体)としては、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状の記憶媒体の他に、不揮発性半導体メモリでもよい。
【0169】
また、本実施形態においては、ゲーム装置3のCPU10がゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置3が備える専用回路によって行われてもよい。
【符号の説明】
【0170】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ部
7 ジャイロセンサユニット
8 入力装置
10 CPU
11e 内部メインメモリ
12 外部メインメモリ
A 仮想カメラの注視点
B ボート
C 順方向ベクトル
D 基準方向ベクトル
T 到達距離
【特許請求の範囲】
【請求項1】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記各オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向としてそれぞれ算出し、算出した前記複数のオブジェクトの各基準方向を、第1の条件で加重平均した平均方向を算出する平均方向算出手段と、
前記平均方向に基づき、前記仮想カメラの撮像方向を設定する撮像方向設定手段と、
前記撮像方向設定手段で設定された撮像方向に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段として機能させる、ゲームプログラム。
【請求項2】
前記第1の条件は、前記ゲームプログラムで実行されるゲームにおいて、前記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの基準方向に対する重み付けを重くするものである、請求項1に記載のゲームプログラム。
【請求項3】
前記有利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトよりも大きい状況である、請求項2に記載のゲームプログラム。
【請求項4】
前記第1の条件は、前記ゲームプログラムで実行されるゲームにおいて、前記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの基準方向に対する重み付けを重くするものである、請求項1に記載のゲームプログラム。
【請求項5】
前記不利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトよりも小さい状況である、請求項4に記載のゲームプログラム。
【請求項6】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの位置に基づいた各位置を、第2の条件で加重平均した平均位置を算出する平均位置算出手段と、
前記平均位置に基づいて、前記仮想カメラの注視点を設定する注視点設定手段として、更に機能させ、
前記表示制御手段は、前記注視点設定手段で設定された注視点にも基づいて、前記仮想空間を撮像したものを前記表示装置に表示する、請求項1に記載のゲームプログラム。
【請求項7】
前記ゲームプログラムは、前記コンピュータを、
前記各オブジェクトの位置に基づいて、当該各オブジェクトに対する設定位置をそれぞれ算出する設定位置算出手段として、更に機能させ、
前記平均位置算出手段は、前記設定位置算出手段によって算出された各設定位置を、前記第2の条件で加重平均して前記平均位置を算出する、請求項6に記載のゲームプログラム。
【請求項8】
前記設定位置算出手段は、前記各オブジェクトの基準方向と位置とに基づいて、当該各オブジェクトに対する設定位置をそれぞれ算出する、請求項7に記載のゲームプログラム。
【請求項9】
前記第2の条件は、前記ゲームプログラムで実行されるゲームにおいて前記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものである、請求項6に記載のゲームプログラム。
【請求項10】
前記有利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトと比較して大きい状況である、請求項9に記載のゲームプログラム。
【請求項11】
前記第2の条件は、前記ゲームプログラムで実行されるゲームにおいて前記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものである、請求項6に記載のゲームプログラム。
【請求項12】
前記不利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトと比較して小さい状況である、請求項11に記載のゲームプログラム。
【請求項13】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの少なくとも何れか1つが前記仮想カメラによる撮像範囲から外れようとしている度合いを算出する外れ度合い算出手段として更に機能させ、
前記表示制御手段は、前記外れ度合い算出手段で算出された外れ度合いに応じて、前記撮像範囲を拡大もしくは縮小して、前記仮想空間を撮像したものを前記表示装置に表示する、請求項1に記載のゲームプログラム。
【請求項14】
前記表示制御手段は、前記外れ度合い算出手段で算出された外れ度合いに応じて、前記撮像方向又は当該撮像方向とは逆の方向へ前記仮想カメラを移動させることにより、前記撮像範囲を拡大もしくは縮小する、請求項13に記載のゲームプログラム。
【請求項15】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する順方向算出手段と、
前記複数のオブジェクトの順方向に基づいて、当該各オブジェクトの移動する方向を補正するオブジェクト移動方向補正手段として、更に機能させる、請求項1に記載のゲームプログラム。
【請求項16】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトに対して、前記順方向算出手段で算出された順方向の外力を発生させる外力発生手段として、更に機能させ、
前記オブジェクト移動方向補正手段は、前記外力発生手段で発生させた外力を前記各オブジェクトに加えることによって、前記オブジェクトの移動する方向を補正する、請求項15に記載のゲームプログラム。
【請求項17】
前記ゲーム装置には少なくとも1つの入力装置が接続され、
前記オブジェクト移動手段は、前記入力装置からの入力に基づいて、前記複数のオブジェクトのうちの少なくとも1つのオブジェクトを移動させる、請求項1に記載のゲームプログラム。
【請求項18】
前記入力装置は、前記複数のオブジェクトそれぞれに対応付けされて前記ゲーム装置に接続される、請求項17に記載のゲームプログラム。
【請求項19】
前記ゲームプログラムで実行されるゲームは、前記仮想空間内の所定の位置に到達する早さを競うゲームであり、前記仮想空間内の前記所定の位置に近いほど当該ゲームのルールにおいて有利な状況であると判断される、請求項2、4、9又は11の何れかに記載のゲームプログラム。
【請求項20】
前記平均方向算出手段は、前記各オブジェクトの移動方向と向きとをそれぞれ所定の割合で合成することにより算出した前記各基準方向を、前記第1の条件で加重平均した平均方向を算出する、請求項1に記載のゲームプログラム。
【請求項21】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する順方向算出手段として、更に機能させ、
前記平均方向算出手段は、前記順方向算出手段で算出された前記各オブジェクトの順方向と、当該各オブジェクトの基準方向との角度に応じて、当該各オブジェクトの基準方向に対する重み付けをそれぞれ設定する、請求項1に記載のゲームプログラム。
【請求項22】
前記平均方向算出手段は、前記オブジェクトの順方向と基準方向との角度が小さいほど、当該オブジェクトの前記基準方向に対する重み付けを重く設定する、請求項21に記載のゲームプログラム。
【請求項23】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する順方向算出手段として、更に機能させ、
前記平均方向算出手段は、前記複数のオブジェクトの基準方向と、当該複数のオブジェクトの順方向を平均した方向とを、前記第1の条件で加重平均した平均方向を算出する、請求項1に記載のゲームプログラム。
【請求項24】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向として、当該オブジェクトの基準方向と位置とに基づいて算出される設定位置を、前記複数のオブジェクトに対してそれぞれ算出する設定位置算出手段と、
前記設定位置算出手段によって算出される各設定位置を、所定の条件で加重平均した平均位置を算出する平均位置算出手段と、
前記平均位置に基づいて、前記仮想カメラの注視点を設定する注視点設定手段と、
前記注視点設定手段で設定された注視点に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段として機能させる、ゲームプログラム。
【請求項25】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置であって、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記各オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向としてそれぞれ算出し、算出した前記複数のオブジェクトの各基準方向を、第1の条件で加重平均した平均方向を算出する平均方向算出手段と、
前記平均方向に基づき、前記仮想カメラの撮像方向を設定する撮像方向設定手段と、
前記撮像方向設定手段で設定された撮像方向に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段とを備える、ゲーム装置。
【請求項26】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置であって、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向として、当該オブジェクトの基準方向と位置とに基づいて算出される設定位置を、前記複数のオブジェクトに対してそれぞれ算出する設定位置算出手段と、
前記設定位置算出手段によって算出される各設定位置を、所定の条件で加重平均した平均位置を算出する平均位置算出手段と、
前記平均位置に基づいて、前記仮想カメラの注視点を設定する注視点設定手段と、
前記注視点設定手段で設定された注視点に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段とを備える、ゲーム装置。
【請求項1】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記各オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向としてそれぞれ算出し、算出した前記複数のオブジェクトの各基準方向を、第1の条件で加重平均した平均方向を算出する平均方向算出手段と、
前記平均方向に基づき、前記仮想カメラの撮像方向を設定する撮像方向設定手段と、
前記撮像方向設定手段で設定された撮像方向に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段として機能させる、ゲームプログラム。
【請求項2】
前記第1の条件は、前記ゲームプログラムで実行されるゲームにおいて、前記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの基準方向に対する重み付けを重くするものである、請求項1に記載のゲームプログラム。
【請求項3】
前記有利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトよりも大きい状況である、請求項2に記載のゲームプログラム。
【請求項4】
前記第1の条件は、前記ゲームプログラムで実行されるゲームにおいて、前記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの基準方向に対する重み付けを重くするものである、請求項1に記載のゲームプログラム。
【請求項5】
前記不利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトよりも小さい状況である、請求項4に記載のゲームプログラム。
【請求項6】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの位置に基づいた各位置を、第2の条件で加重平均した平均位置を算出する平均位置算出手段と、
前記平均位置に基づいて、前記仮想カメラの注視点を設定する注視点設定手段として、更に機能させ、
前記表示制御手段は、前記注視点設定手段で設定された注視点にも基づいて、前記仮想空間を撮像したものを前記表示装置に表示する、請求項1に記載のゲームプログラム。
【請求項7】
前記ゲームプログラムは、前記コンピュータを、
前記各オブジェクトの位置に基づいて、当該各オブジェクトに対する設定位置をそれぞれ算出する設定位置算出手段として、更に機能させ、
前記平均位置算出手段は、前記設定位置算出手段によって算出された各設定位置を、前記第2の条件で加重平均して前記平均位置を算出する、請求項6に記載のゲームプログラム。
【請求項8】
前記設定位置算出手段は、前記各オブジェクトの基準方向と位置とに基づいて、当該各オブジェクトに対する設定位置をそれぞれ算出する、請求項7に記載のゲームプログラム。
【請求項9】
前記第2の条件は、前記ゲームプログラムで実行されるゲームにおいて前記オブジェクトが他のオブジェクトと比較して有利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものである、請求項6に記載のゲームプログラム。
【請求項10】
前記有利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトと比較して大きい状況である、請求項9に記載のゲームプログラム。
【請求項11】
前記第2の条件は、前記ゲームプログラムで実行されるゲームにおいて前記オブジェクトが他のオブジェクトと比較して不利な状況であるほど、当該オブジェクトの設定位置に対する重み付けを重くするものである、請求項6に記載のゲームプログラム。
【請求項12】
前記不利な状況とは、前記オブジェクトの移動距離、勝利数、勝率、又はポイント数の少なくとも何れか1つの値が他のオブジェクトと比較して小さい状況である、請求項11に記載のゲームプログラム。
【請求項13】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの少なくとも何れか1つが前記仮想カメラによる撮像範囲から外れようとしている度合いを算出する外れ度合い算出手段として更に機能させ、
前記表示制御手段は、前記外れ度合い算出手段で算出された外れ度合いに応じて、前記撮像範囲を拡大もしくは縮小して、前記仮想空間を撮像したものを前記表示装置に表示する、請求項1に記載のゲームプログラム。
【請求項14】
前記表示制御手段は、前記外れ度合い算出手段で算出された外れ度合いに応じて、前記撮像方向又は当該撮像方向とは逆の方向へ前記仮想カメラを移動させることにより、前記撮像範囲を拡大もしくは縮小する、請求項13に記載のゲームプログラム。
【請求項15】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する順方向算出手段と、
前記複数のオブジェクトの順方向に基づいて、当該各オブジェクトの移動する方向を補正するオブジェクト移動方向補正手段として、更に機能させる、請求項1に記載のゲームプログラム。
【請求項16】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトに対して、前記順方向算出手段で算出された順方向の外力を発生させる外力発生手段として、更に機能させ、
前記オブジェクト移動方向補正手段は、前記外力発生手段で発生させた外力を前記各オブジェクトに加えることによって、前記オブジェクトの移動する方向を補正する、請求項15に記載のゲームプログラム。
【請求項17】
前記ゲーム装置には少なくとも1つの入力装置が接続され、
前記オブジェクト移動手段は、前記入力装置からの入力に基づいて、前記複数のオブジェクトのうちの少なくとも1つのオブジェクトを移動させる、請求項1に記載のゲームプログラム。
【請求項18】
前記入力装置は、前記複数のオブジェクトそれぞれに対応付けされて前記ゲーム装置に接続される、請求項17に記載のゲームプログラム。
【請求項19】
前記ゲームプログラムで実行されるゲームは、前記仮想空間内の所定の位置に到達する早さを競うゲームであり、前記仮想空間内の前記所定の位置に近いほど当該ゲームのルールにおいて有利な状況であると判断される、請求項2、4、9又は11の何れかに記載のゲームプログラム。
【請求項20】
前記平均方向算出手段は、前記各オブジェクトの移動方向と向きとをそれぞれ所定の割合で合成することにより算出した前記各基準方向を、前記第1の条件で加重平均した平均方向を算出する、請求項1に記載のゲームプログラム。
【請求項21】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する順方向算出手段として、更に機能させ、
前記平均方向算出手段は、前記順方向算出手段で算出された前記各オブジェクトの順方向と、当該各オブジェクトの基準方向との角度に応じて、当該各オブジェクトの基準方向に対する重み付けをそれぞれ設定する、請求項1に記載のゲームプログラム。
【請求項22】
前記平均方向算出手段は、前記オブジェクトの順方向と基準方向との角度が小さいほど、当該オブジェクトの前記基準方向に対する重み付けを重く設定する、請求項21に記載のゲームプログラム。
【請求項23】
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトの進むべき方向である順方向をそれぞれ算出する順方向算出手段として、更に機能させ、
前記平均方向算出手段は、前記複数のオブジェクトの基準方向と、当該複数のオブジェクトの順方向を平均した方向とを、前記第1の条件で加重平均した平均方向を算出する、請求項1に記載のゲームプログラム。
【請求項24】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向として、当該オブジェクトの基準方向と位置とに基づいて算出される設定位置を、前記複数のオブジェクトに対してそれぞれ算出する設定位置算出手段と、
前記設定位置算出手段によって算出される各設定位置を、所定の条件で加重平均した平均位置を算出する平均位置算出手段と、
前記平均位置に基づいて、前記仮想カメラの注視点を設定する注視点設定手段と、
前記注視点設定手段で設定された注視点に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段として機能させる、ゲームプログラム。
【請求項25】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置であって、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記各オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向としてそれぞれ算出し、算出した前記複数のオブジェクトの各基準方向を、第1の条件で加重平均した平均方向を算出する平均方向算出手段と、
前記平均方向に基づき、前記仮想カメラの撮像方向を設定する撮像方向設定手段と、
前記撮像方向設定手段で設定された撮像方向に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段とを備える、ゲーム装置。
【請求項26】
複数のオブジェクトが存在する仮想空間を仮想カメラにより撮像したものを表示装置に表示するゲーム装置であって、
前記複数のオブジェクトを前記仮想空間内で移動させるオブジェクト移動手段と、
前記オブジェクトの移動方向及び/又は向きに基づいた方向を当該オブジェクトの基準方向として、当該オブジェクトの基準方向と位置とに基づいて算出される設定位置を、前記複数のオブジェクトに対してそれぞれ算出する設定位置算出手段と、
前記設定位置算出手段によって算出される各設定位置を、所定の条件で加重平均した平均位置を算出する平均位置算出手段と、
前記平均位置に基づいて、前記仮想カメラの注視点を設定する注視点設定手段と、
前記注視点設定手段で設定された注視点に基づいて、前記仮想空間を撮像したものを前記表示装置に表示する表示制御手段とを備える、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2010−273839(P2010−273839A)
【公開日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願番号】特願2009−128805(P2009−128805)
【出願日】平成21年5月28日(2009.5.28)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願日】平成21年5月28日(2009.5.28)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]