以下、本発明の実施形態の例について図面に基づき詳細に説明する。本発明の実施形態に係るゲーム装置は、例えば家庭用ゲーム機(据置型ゲーム機)、携帯ゲーム機、携帯電話機、携帯情報端末(PDA)又はパーソナルコンピュータ等によって実現される。ここでは、本発明の実施形態に係るゲーム装置を家庭用ゲーム機によって実現する場合について説明する。
図1は、本発明の実施形態に係るゲーム装置の構成を示す。図1に示すゲーム装置10は、家庭用ゲーム機11、モニタ30、スピーカ31、光ディスク32及びメモリカード33を含んで構成される。モニタ30及びスピーカ31は家庭用ゲーム機11に接続される。光ディスク32及びメモリカード33は情報記憶媒体であり、家庭用ゲーム機11に装着される。モニタ30としては例えば家庭用テレビ受像機が用いられる。スピーカ31としては例えば家庭用テレビ受像機に内蔵されたスピーカが用いられる。光ディスク32としては例えばCD−ROMやDVD−ROMなどが用いられる。
家庭用ゲーム機11は公知のコンピュータゲームシステムである。家庭用ゲーム機11は、バス12、マイクロプロセッサ13、主記憶14、画像処理部15、音声処理部16、光ディスクドライブ17、メモリカードスロット18、通信インタフェース(I/F)19、コントローラインタフェース(I/F)20及び操作入力部21を含んで構成される。操作入力部21以外の構成要素は家庭用ゲーム機11の筐体内に収容される。
バス12はアドレス及びデータを家庭用ゲーム機11の各部でやり取りするためのものである。マイクロプロセッサ13、主記憶14、画像処理部15、音声処理部16、光ディスクドライブ17、メモリカードスロット18、通信インタフェース19及びコントローラインタフェース20は、バス12によって相互データ通信可能に接続される。
マイクロプロセッサ13は、図示しないROMに格納されるオペレーティングシステムや、光ディスク32又はメモリカード33から読み出されるプログラム及びデータに基づいて、家庭用ゲーム機11の各部を制御する。主記憶14は例えばRAMを含み、光ディスク32又はメモリカード33から読み出されたプログラム及びデータが必要に応じて書き込まれる。主記憶14はマイクロプロセッサ13の作業用としても用いられる。
画像処理部15はVRAMを含み、マイクロプロセッサ13から送られる画像データに基づいてVRAM上にゲーム画面を描画する。そして画像処理部15は、そのゲーム画面をビデオ信号に変換して所定のタイミングでモニタ30に出力する。音声処理部16はサウンドバッファを含む。音声処理部16は、光ディスク32からサウンドバッファに読み出された各種音声データ(ゲーム音楽、ゲーム効果音、メッセージ等)を再生してスピーカ31から出力する。
光ディスクドライブ17は、光ディスク32に記録されたプログラムやデータをマイクロプロセッサ13からの指示に従って読み取る。ここではプログラムやデータを家庭用ゲーム機11に供給するために光ディスク32を用いることとするが、例えばメモリカード33などの他のあらゆる情報記憶媒体を用いるようにしてもよい。また、インターネットなどのデータ通信網を介して遠隔地からプログラムやデータを家庭用ゲーム機11に供給するようにしてもよい。
メモリカードスロット18はメモリカード33を装着するためのインタフェースである。メモリカード33は不揮発性メモリ(例えばEEPROMなど)を含み、例えばセーブデータなどの各種ゲームデータを記憶する。通信インタフェース19は、インターネットなどのデータ通信網に通信接続するためのインタフェースである。
コントローラインタフェース20は複数のコントローラ22を無線接続するためのインタフェースである。コントローラインタフェース20としては、例えばBluetooth(登録商標)インタフェース規格に則ったインタフェースを利用できる。なお、コントローラインタフェース20はコントローラ22を有線接続するためのインタフェースとしてもよい。
操作入力部21はユーザが操作入力を行うためのものである。操作入力部21は、例えば、モニタ30に表示されるゲーム画面上の位置をユーザが指し示すためのポインティングデバイスとしての機能を備える。操作入力部21としては、例えば特許3262677号公報に開示される技術を利用できる。操作入力部21は、1又は複数のコントローラ22と、発光部25と、を含む。図2は操作入力部21の一例を示し、図3はコントローラ22の一例を示す。
図2に示すように、発光部25は複数の光源を含み、モニタ30の上部に配置される。図2に示す例では、発光部25の両端部に光源34a,34bが設けられている。なお、発光部25はモニタ30の下部に配置されるようにしてもよい。
図3に示すように、コントローラ22は方向ボタン36、ボタン37a,37b,37cを含む。方向ボタン36は十字形状を有し、一般的に方向指示操作に用いられる。ボタン37a,37b,37cは各種ゲーム操作に用いられる。また図1に示すように、コントローラ22は撮像部23と撮影画像解析部24とを含む。撮像部23は例えばCCDなどの撮像素子であり、コントローラ22の前端部22a(一の側面)に設けられる。撮影画像解析部24は例えばマイクロプロセッサなどであり、コントローラ22に内蔵される。
ユーザがコントローラ22の前端部22aをモニタ30の方に向けると、撮像部23の撮影画像には光源34a,34bが写し出される。撮影画像解析部24は、撮像部23の撮影画像に写し出された光源34a,34bの位置を解析し、その解析結果に基づいてコントローラ22の位置及び傾きを取得する。例えば、撮影画像解析部24は、所定の基準位置35に対するコントローラ22の相対位置と、光源34a及び光源34bを結ぶ直線に対するコントローラ22の傾き角度と、を算出する。ゲーム装置10は、基準位置35と、モニタ30に表示されるゲーム画面と、の位置関係に関する情報を記憶しており、この情報と、撮影画像解析部24によって取得されるコントローラ22の位置及び傾きと、に基づいて、コントローラ22の前端部22aが指し示す位置(P)のスクリーン座標値(スクリーン座標系の座標値)を取得する。なお以下では、コントローラ22の前端部22aが指し示す位置(P)のことを「コントローラ22の指示位置」と記載する。また、撮影画像解析部24によって取得されるコントローラ22の位置及び傾きを示す情報、すなわち、コントローラ22の指示位置のスクリーン座標値を特定するための情報のことを「ポインティング情報」と記載する。
コントローラ22からマイクロプロセッサ13に対しては、一定周期ごと(例えば1/60秒ごと)にコントローラ22の操作状態を表す操作信号がコントローラインタフェース20を介して送信される。この操作信号には、例えば、コントローラ22を識別する識別情報と、上記のポインティング情報と、各ボタンの押下状態を示す情報と、が含まれる。マイクロプロセッサ13は、各コントローラ22から供給される操作信号に基づいて、そのコントローラ22の指示位置を特定したり、そのコントローラ22において方向ボタン36、ボタン37a,37b,37cが押下されたか否かを判定する。
上記構成を備えるゲーム装置10では、例えば、ユーザの操作対象チームと、対戦相手チームと、の間のサッカーゲームが実行される。このサッカーゲームは、光ディスク32から読み出されたプログラムが実行されることによって実現される。
主記憶14には仮想3次元空間(ゲーム空間)が構築される。図4は仮想3次元空間の一例を示す。図4に示すように、仮想3次元空間40には、サッカーのフィールドを表すフィールドオブジェクト42が配置される。フィールドオブジェクト42には例えばゴールライン43(エンドライン)やタッチライン45(サイドライン)が表される。サッカーの試合は、ゴールライン43及びタッチライン45によって囲まれた領域であるピッチ41内で行われる。またフィールドオブジェクト42上には、ゴールを表すゴールオブジェクト44と、サッカー選手を表す選手オブジェクト46(選手キャラクタ)と、サッカーボールを表すボールオブジェクト48と、が配置される。
図4では省略されているが、フィールドオブジェクト42上には、ユーザの操作対象チームに所属する複数の選手オブジェクト46(例えば20名の選手オブジェクト46)のうちからユーザによって選択された11名の選手オブジェクト46が配置される。同様に、対戦相手チームに所属する複数の選手キャラクタ46(例えば20名の選手オブジェクト46)のうちからマイクロプロセッサ13又は対戦相手ユーザによって選択された11名の選手オブジェクト46が配置される。実際のサッカーの試合と同様に、仮想3次元空間40に配置される選手オブジェクト46(試合に出場する選手オブジェクト46)は試合開始時に決定され、試合中やハーフタイムに変更される。
選手オブジェクト46とボールオブジェクト48とが近づくと、所定条件の下、その選手オブジェクト46とボールオブジェクト48とが関連づけられる。この場合、ボールオブジェクト48は選手オブジェクト46に従動する。この様子は選手オブジェクト46のドリブル動作として表される。以下では、ボールオブジェクト48が選手オブジェクト46に関連づけられた状態のことを「選手オブジェクト46がボールオブジェクト48を保持している」というように記載する。
ゴールオブジェクト44の一方はユーザチームに関連づけられ、他方は対戦相手チームに関連づけられる。一方のチームに関連づけられたゴールオブジェクト44内にボールオブジェクト48が移動すると、他方のチームの得点イベントが発生する。
また、仮想3次元空間40には仮想カメラ49(視点)が設定される。仮想カメラ49は例えばボールオブジェクト48の移動に基づいて仮想3次元空間40内を移動する。
図5はゲーム画面50の一例を示す。図5に示すように、ゲーム画面50には、仮想3次元空間40を仮想カメラ49から見た様子を表す画像が表示される。また、ゲーム画面50は時間経過を示す時間欄52と得点状況を示す得点欄54とを含む。さらに、ゲーム画面50には、ユーザのコントローラ22の指示位置を示すカーソル56が表示される。図5ではカーソル56の形状が円形状になっているが、円形以外の形状であってもよい。
ユーザは、操作対象チームに所属する選手オブジェクト46に対して移動方向やキック方向などを指示できる。ここで、選手オブジェクト46の移動方向やキック方向の指示方法について説明する。
まずユーザは指示を与えたい選手オブジェクト46を選択する。すなわち、ユーザは指示を与えたい選手オブジェクト46をコントローラ22の前端部22aで指し示し、該選手オブジェクト46までカーソル56を移動させる。この状態でユーザが選択ボタン(例えばボタン37b)を押下すると、該選手オブジェクト46が操作対象(指示対象)として選択される。なお以下では、操作対象として選択中の選手オブジェクト46のことを「操作対象選手オブジェクト」と記載する。
操作対象選手オブジェクトはカーソル56の位置(カーソル56の表示位置に対応する仮想3次元空間40内の位置)に向かって移動するようになる。このため、ユーザは、操作対象選手オブジェクトの移動方向をコントローラ22の前端部22aで指し示すことによって指示できる。
また、ユーザは操作対象選手オブジェクトに対して移動目標位置を設定することができる。操作対象選手オブジェクトに対して移動目標位置を設定する場合、ユーザは移動目標位置設定ボタン(例えばボタン37c)を押しながらカーソル56を操作対象選手オブジェクトから所望の移動目標位置まで移動させる。図6はこの場合のゲーム画面50の一例を示す。図6に示すように、この場合のゲーム画面50には、操作対象選手オブジェクトからカーソル56への矢印画像58が表示される。この状態でユーザが移動目標位置設定ボタンの押下を解除すると、その時点のカーソル56の位置(カーソル56の表示位置に対応する仮想3次元空間40内の位置)が操作対象選手オブジェクトの移動目標位置として設定される。移動目標位置が設定された操作対象選手オブジェクトは、カーソル56の位置に関係になく、移動目標位置に向かって移動し続けるようになる。この場合、ユーザが他の選手オブジェクト46を操作対象として選択した後も、操作対象選手オブジェクトであった選手オブジェクト46は移動目標位置に向けて移動し続ける。
操作対象選手オブジェクトがボールオブジェクト48を保持している場合、ユーザは操作対象選手オブジェクトのキック方向をコントローラ22の前端部22aで指し示すことによって指示できる。すなわち、ユーザがキック指示ボタン(例えばボタン37a)を押下すると、カーソル56の位置(カーソル56の表示位置に対応する仮想3次元空間40内の位置)への方向がキック方向として設定され、操作対象選手オブジェクトは該キック方向にボールオブジェクト48を蹴り出す。例えば、他の選手オブジェクト46にカーソル56が移動した状態でユーザがキック指示ボタンを押下すると、該選手オブジェクト46へのパスを操作対象選手オブジェクトが実行する。
なお、操作対象選手オブジェクトとして選択中の選手オブジェクト46以外の選手オブジェクト46は所定の行動決定アルゴリズムに従って行動する。
以下、上記のゲーム装置10において、操作対象選手オブジェクトに対して移動目標位置が設定された場合の味方選手オブジェクトの移動制御を好適に実行するための技術について説明する。
図7は、ゲーム装置10で実現される機能のうち、本発明に関連するものを主として示す機能ブロック図である。図7に示すように、ゲーム装置10はゲームデータ記憶部60(選手キャラクタ位置記憶手段)と、移動目標位置取得部62と、判定部64と、味方選手制御部66と、を含む。これらの機能ブロックはマイクロプロセッサ13がプログラムを実行することによって実現される。
ゲームデータ記憶部60は例えば主記憶14や光ディスク32によって実現される。ゲームデータ記憶部60はサッカーゲームを実行するためのゲームデータを記憶する。ゲームデータ記憶部60は、例えば、各オブジェクトの形状を示すモデルデータ、選手オブジェクト46の各種動作を示すモーションデータや、各選手オブジェクト46の各種能力(例えばパス能力、シュート能力やドリブル能力等)の高さを示す能力パラメータデータを記憶する。
また、ゲームデータ記憶部60はゲームの現在状況を示すゲーム状況データを記憶する。図8はゲーム状況データの一例を示す。ゲーム状況データは試合時間データと得点状況データとを含む。またゲーム状況データはカーソル56の位置データを含む。カーソル56の位置データは、例えばカーソル56の表示位置や、カーソル56の表示位置に対応する仮想3次元空間40内の位置を示すデータである。またゲーム状況データは、仮想カメラ49の状態データと、ボールオブジェクト48の状態データと、を含む。仮想カメラ49の状態データは位置データ、姿勢(視線方向)データ等を含む。ボールオブジェクト48の状態データは位置データ、移動方向・速度データ等を含む。
またゲーム状況データは、仮想3次元空間40に配置された各選手オブジェクト46の状態データを含む。選手オブジェクト46の状態データは位置データ、姿勢データ、移動方向・速度データ、移動目標位置データ、指示対象フラグ、ボール保持フラグ等を含む。移動目標位置データは、選手オブジェクト46に対して設定された移動目標位置を示すデータである。「操作対象フラグ」は選手オブジェクト46が操作対象選手オブジェクトとして選択中であるか否かを示すデータである。「ボール保持フラグ」は選手オブジェクト46がボールオブジェクト48を保持中であるか否かを示すデータである。なお図8において、「選手オブジェクト(A01)」、「選手オブジェクト(A02)」及び「選手オブジェクト(A11)」はユーザの操作対象チームの選手オブジェクト46を示し、「選手オブジェクト(B01)」及び「選手オブジェクト(B11)」は対戦相手チームの選手オブジェクト46を示している。
移動目標位置取得部62はマイクロプロセッサ13を主として実現される。移動目標位置取得部62はユーザの操作内容に基づいて、操作対象選手オブジェクトの移動目標位置を取得する。すなわち、移動目標位置取得部62は操作対象選手オブジェクトの移動目標位置の指定操作を受け付ける。そして、移動目標位置取得部62は、ユーザによって指定された、操作対象選手オブジェクトの移動目標位置を取得する。
判定部64はマイクロプロセッサ13を主として実現される。判定部64は、ユーザが操作対象選手オブジェクトの移動目標位置を指定した場合、該移動目標位置に基づいて特定される判定領域内に味方選手オブジェクト(ユーザの操作対象チームに所属する他の選手オブジェクト46)が位置しているか否かを判定する。図9は判定領域の一例を示す図である。図9に示す判定領域72は操作対象選手オブジェクトの移動目標位置70からの距離が所定距離(R)以内である領域である。
味方選手制御部66はマイクロプロセッサ13を主として実現される。味方選手制御部66は、味方選手オブジェクトが判定領域72内に位置していると判定された場合、該味方選手オブジェクトを移動目標位置から離れるように移動させる。本実施の形態の場合、味方選手制御部66は、味方選手オブジェクトが判定領域72内に位置していると判定された場合、移動目標位置から該味方選手オブジェクトの現在位置への方向に基づいて、該味方選手オブジェクトの移動方向を決定する。図10は味方選手制御部66の動作の一例について説明するための図である。図10に示す例では、味方選手オブジェクト46a,46bが判定領域72内に位置している。この場合、味方選手制御部66は味方選手オブジェクト46a,46bの移動目標位置を下記に示すように設定し、該移動目標位置に向けての移動を味方選手オブジェクト46a,46bに開始させる。味方選手オブジェクト46aの移動目標位置は、移動目標位置70から味方選手オブジェクト46aの現在位置の方に伸ばした直線の方向74aに、味方選手オブジェクト46aの現在位置から所定距離(L)移動した位置76aに設定される。同様に、味方選手オブジェクト46bの移動目標位置は、移動目標位置70から味方選手オブジェクト46bの現在位置の方に伸ばした直線の方向74bに、味方選手オブジェクト46bの現在位置から所定距離(L)移動した位置76bに設定される。なお、所定距離(L)は、例えば判定領域72の半径(R)以上に設定される。また、この場合、味方選手オブジェクト46a,46bの移動目標位置は、移動目標位置がピッチ41(所定領域)外になってしまわないようにして設定される。詳細については後述する(図12のS206及びS207、図13参照)。
次に、上記の機能ブロックを実現するためにゲーム装置10が実行する処理について説明する。図11はゲーム装置10が所定時間(例えば1/60秒)ごとに実行する処理を示すフロー図である。マイクロプロセッサ13は光ディスク32に記憶されるプログラムに従って、図11に示す処理を実行する。
図11に示すように、マイクロプロセッサ13は、コントローラ22から供給される操作信号(ポインティング情報)に基づいて、カーソル56の位置データを更新する(S101)。また、マイクロプロセッサ13は各選手オブジェクト46の状態データを更新する(S102)。
図12はこのステップ(S102)の処理の一部として実行される処理を示すフロー図である。図12に示す処理では、まずマイクロプロセッサ13(移動目標位置取得部62)は、操作対象選手オブジェクトに対してユーザが移動目標位置を設定したか否かを判定する(S201)。すなわち、移動目標位置の指定操作が行われたか否かがコントローラ22から供給される操作信号に基づいて判定される。操作対象選手オブジェクトに対して移動目標位置が設定された場合、マイクロプロセッサ13(移動目標位置取得部62)は操作対象選手オブジェクトの移動目標位置データを更新し、操作対象選手オブジェクトの移動目標位置として、その時点のカーソル56の表示位置に対応する仮想3次元空間40内の位置を設定する(S202)。
その後、マイクロプロセッサ13(判定部64)は判定領域72内に味方選手オブジェクトが位置しているか否かを判定する(S203)。判定領域72は、操作対象選手オブジェクトの移動目標位置(ユーザが指定した移動目標位置)からの距離が所定距離(R)以下の領域である(図9参照)。判定領域72内に味方選手オブジェクトが位置している場合、マイクロプロセッサ13は、判定領域72内に位置している味方選手オブジェクトのいずれかを着目味方選手オブジェクトとして選出する(S204)。そして、マイクロプロセッサ13(味方選手制御部66)は該着目味方選手オブジェクトを処理の対象として、下記に説明する処理(S205〜S208)を実行する。
すなわち、マイクロプロセッサ13は、操作対象選手オブジェクトの移動目標位置から着目味方選手オブジェクトの現在位置の方に伸ばした直線の方向を、着目味方選手オブジェクトの移動方向候補として取得する(S205)。例えば図10における味方選手オブジェクト46aが着目味方選手オブジェクトである場合には、操作対象選手オブジェクトの移動目標位置70から味方選手オブジェクト46aの現在位置の方に伸ばした直線の方向74aが移動方向候補として取得される。
その後、マイクロプロセッサ13は、その移動方向候補に対応する移動目標位置候補がピッチ41内であるか否かを判定する(S206)。このステップでは、まず、着目味方選手オブジェクトの現在位置から、移動方向候補に、所定距離(L)移動した位置が移動目標位置候補として取得される。例えば図10における味方選手オブジェクト46aが着目味方選手オブジェクトである場合には、味方選手オブジェクト46aの現在位置から、方向74a(移動方向候補)に、所定距離(L)移動した位置76aが移動目標位置候補として取得される。そして、その移動目標位置候補がピッチ41内であるか否かが判定される。言い換えれば、このステップでは、着目味方選手オブジェクトが現在位置から移動方向候補に移動し続けたと仮定した場合において、ピッチ41の境界(ゴールライン43又はタッチライン45)までの移動距離が所定距離(L)以上であるか否かが判定される。ピッチ41の境界(ゴールライン43又はタッチライン45)までの移動距離が所定距離(L)以上である場合、着目味方選手オブジェクトが現在位置から移動方向候補に所定距離(L)移動したとしても、着目味方選手オブジェクトはピッチ41外に出ない。すなわち、この場合、移動目標位置候補がピッチ41内になる。
移動目標位置候補がピッチ41内でない場合、マイクロプロセッサ13は移動方向候補を補正する(S207)。図13はこの処理を説明するための図である。例えば図13に示すように、マイクロプロセッサ13は、移動方向候補を所定方向(例えば時計回りの逆方向)に所定角度(θ)回転することによって得られる方向を新たな移動方向候補として取得する。この場合、味方選手オブジェクトの現在位置が回転の中心に設定される。なお、操作対象選手オブジェクトの移動目標位置70が回転の中心として設定されるようにしてもよい。そして、マイクロプロセッサ13は、補正後の移動方向候補に対応する移動目標位置候補がピッチ41内であるか否かを判定する(S206)。移動方向候補の補正は、移動目標位置候補がピッチ41内になるまで繰り返される。例えば図13に示す味方選手オブジェクト46cの場合、S205では、操作対象選手オブジェクトの移動目標位置70から味方選手オブジェクト46cの現在位置の方に伸ばした直線の方向74c−1が移動方向候補として取得される。しかし、この移動方向候補(方向74c−1)に対応する移動目標位置候補76c−1はピッチ41外である。このため、移動方向候補の補正が行われ、方向74c−2が新たな移動方向候補として取得される。しかし、この移動方向候補(方向74c−2)に対応する移動目標位置候補76c−2もピッチ41外である。このため、移動方向候補の補正が再度行われ、方向74c−3が新たな移動方向候補として取得される。この移動方向候補(方向74c−3)に対応する移動目標位置候補76c−3はピッチ41内であるため、移動方向候補の補正は行われず、下記に説明するS208の処理が実行される。
一方、移動目標位置候補がピッチ41内である場合、マイクロプロセッサ13は着目味方選手オブジェクトの移動目標位置データを更新し、その移動目標位置候補を、着目味方選手オブジェクトの移動目標位置として設定する(S208)。
その後、マイクロプロセッサ13は、判定領域72内に位置している味方選手オブジェクトのうちに、S205〜S208の処理を実行済みでない味方選手オブジェクトが存在するか否かを判定する(S209)。そのような味方選手オブジェクトが存在する場合、マイクロプロセッサ13はそのような味方選手オブジェクトのいずれかを新たな着目味方選手オブジェクトとして選出する(S210)。そして、マイクロプロセッサ13は該着目味方選手オブジェクトを処理の対象として、上記に説明した処理(S205〜S208)を実行する。一方、上記のような味方選手オブジェクトが存在しない場合、すなわち、判定領域72内に位置しているすべての味方選手オブジェクトに対してS205〜S208の処理を実行済みである場合、本処理は終了する。
S102の処理では、上記に説明した処理(図12参照)の他に、例えば下記に説明するような処理も実行される。例えば、移動目標位置が設定されている選手オブジェクト46の状態データが、該選手オブジェクト46が移動目標位置に向かって移動するように更新される。より具体的には、移動目標位置が設定されている選手オブジェクト46の位置データが更新され、該選手オブジェクト46の位置が、現在の位置から移動目標位置への方向に、該選手オブジェクト46の移動速度に応じた距離だけ移動した位置に更新される。また例えば、移動目標位置が設定されている選手オブジェクト46が移動目標位置まで到達した場合、移動目標位置の設定が解除される。また例えば、操作対象選手オブジェクトに対して移動目標位置が設定されていない場合、カーソル56の表示位置に対応する仮想3次元空間40内の位置に向かって操作対象選手オブジェクトが移動するように、操作対象選手オブジェクトの状態データが更新される。また例えば、コントローラ22から供給される操作信号に基づいて、キック指示ボタンが押下されたと判定された場合、操作対象選手オブジェクトがキック動作を行うように、操作対象選手オブジェクトの状態データが更新される。また例えば、操作対象選手オブジェクト以外の選手オブジェクト46の状態データが所定の行動決定アルゴリズムに従って更新される。
図11に示すように、各選手オブジェクト46の状態データが更新された後、マイクロプロセッサ13はボールオブジェクト48の状態データを更新する(S103)。例えば、ボールオブジェクト48の位置データが更新され、ボールオブジェクト48の位置が、現在の位置から、移動方向に、移動速度に応じた距離だけ移動した位置に更新される。また例えば、いずれかの選手オブジェクト46がボールオブジェクト48をキックした場合、キック方向にボールオブジェクト48が移動するように、ボールオブジェクト48の状態データが更新される。
その後、マイクロプロセッサ13は仮想カメラ49の状態データを更新する(S104)。例えば、ボールオブジェクト48の位置等に基づいて、仮想カメラ49の状態データが更新される。また、マイクロプロセッサ13は試合時間データや得点状況データを更新する(S105)。例えば、ボールオブジェクト48が一方のチームのゴールオブジェクト44内に移動した場合、他方のチームの得点イベントが発生し、他方のチームの得点が増加される。
その後、マイクロプロセッサ13及び画像処理部15はゲーム画面50をゲーム状況データに基づいて更新する(S106)。まず、仮想3次元空間40を仮想カメラ49から見た様子を表す画像がVRAM上に描画される。その後、VRAM上に描画された画像の所定位置に時間欄52や得点欄54が上書き描画される。また、VRAM上に描画された画像上にカーソル56も上書き描画される。このようにしてVRAM上に描画された画像はゲーム画面50としてモニタ30に表示出力される。
以上に説明したゲーム装置10では、操作対象選手オブジェクトに対して移動目標位置が設定された場合、味方選手オブジェクトが該移動目標位置から離れるように制御される。このため、ゲーム装置10によれば、味方選手オブジェクトが邪魔になって操作対象選手オブジェクトが見え難くなってしまうことが起こらないように図ることが可能になる。
またゲーム装置10によれば、ゲーム画面50の表示に係る処理負荷の軽減を図ることが可能になる。複数の選手オブジェクト46が密集している領域がゲーム画面50に表示される場合、それらの各選手オブジェクト46について演算処理(座標変換演算等)を行わなければならなくなるため、処理負荷が重くなってしまう。この点、ゲーム装置10によれば、操作対象選手オブジェクトの移動目標位置から離れるように味方選手オブジェクトが制御されるため、操作対象選手オブジェクトの移動目標位置付近に位置する選手オブジェクト46の数を減らすことが可能になる。その結果として、操作対象選手オブジェクトの移動目標位置付近の領域がゲーム画面50に表示される場合の、ゲーム画面50の表示に係る処理負荷が軽減される。ゲーム装置10では、操作対象選手オブジェクトの移動目標位置から離れるように味方選手オブジェクトが制御されるため、操作対象選手オブジェクトと1又は複数の味方選手オブジェクトとが近くに位置する頻度が低下する。すなわち、ゲーム装置10によれば、複数の選手オブジェクト46(操作対象選手オブジェクトと1又は複数の味方選手オブジェクト)が同時にゲーム画面50に表示される頻度が低下する。その結果、ゲーム画面50の表示に係る処理負荷が軽減される。
ところで、味方選手オブジェクトをマークする対戦相手選手オブジェクト(対戦相手チームに所属する選手オブジェクト46)が存在する場合、該対戦相手選手オブジェクトも味方選手オブジェクトに追従して移動目標位置から離れるようになる。その結果、味方選手オブジェクトが操作対象選手オブジェクトの移動目標位置付近にスペースを作る動きを行う様子をユーザは楽しめるようになる。
またゲーム装置10では、操作対象選手オブジェクトの移動目標位置付近に位置する味方選手オブジェクトが、該移動目標位置から味方選手オブジェクトの現在位置の方に伸ばした直線の方向に移動するように制御される(図10参照)。このため、プレイヤは操作対象選手オブジェクトの移動目標位置を設定することによって、味方選手オブジェクトの移動方向を指示することもできるようになる。すなわち、プレイヤは、操作対象選手オブジェクトの移動目標位置を、操作対象選手オブジェクトの移動目標位置から味方選手オブジェクトの現在位置の方に伸ばした直線の方向が所望の方向となるように設定することによって、味方選手オブジェクトを所望の方向に移動させることもできる。
またゲーム装置10では、図12のS206及びS207の処理が実行されることによって、味方選手オブジェクトがピッチ41外に出ないように図られている。操作対象選手オブジェクトの移動目標位置から離れるように味方選手オブジェクトが移動させる場合において該味方選手オブジェクトがピッチ41外に出てしまうと、ユーザに違和感を感じさせてしまう。この点、ゲーム装置10によれば、そのような違和感をユーザに感じさせないように図ることが可能になる。
なお、本発明は以上に説明した実施の形態に限定されるものではない。
例えば、ピッチ41を複数の部分領域に分割し、判定領域72内に位置する味方選手オブジェクトの移動方向に関する移動方向データ(移動方向情報)を各部分領域に対応づけて記憶しておくようにしてもよい。例えば、移動方向データは、判定領域72内に位置する味方選手オブジェクトに対して設定可能な移動方向を示すデータである。なお、移動方向データは、判定領域72内に位置する味方選手オブジェクトに対して設定不可能な移動方向を示すデータであってもよい。図14はピッチ41の分割の一例について説明するための図である。図14に示す例ではピッチ41が9つの部分領域A〜Iに分割されている。例えば、ゴールライン43及びタッチライン45の双方に隣接する部分領域A,C,G,Iに対しては、味方選手オブジェクトがゴールライン43又はタッチライン45を越えてしまわないような移動方向の範囲を示す移動方向データが対応づけられる。また例えば、ゴールライン43に隣接する部分領域D,Fに対しては、味方選手オブジェクトがゴールライン43を越えてしまわないような移動方向の範囲を示す移動方向データが対応づけられる。また例えば、タッチライン45に隣接する部分領域B,Hに対しては、味方選手オブジェクトがタッチライン45を越えてしまわないような移動方向の範囲を示す移動方向データが対応づけられる。
この場合、図11に示す処理において、マイクロプロセッサ13(味方選手制御部66)はS205〜S208の処理に代えて下記に説明するような処理を実行する。すなわち、マイクロプロセッサ13は着目味方選手オブジェクトが位置する部分領域を特定する。次に、マイクロプロセッサ13は着目味方選手オブジェクトが位置する部分領域に対応づけられた移動方向データを読み出し、該移動方向データが示す移動方向の範囲内で、着目味方選手オブジェクトの移動方向を決定する。そして、マイクロプロセッサ13は、着目味方選手オブジェクトの現在位置から、決定された移動方向に、所定距離(L)移動した位置を、着目味方選手オブジェクトの移動目標位置として設定する。
このようにしても、操作対象選手オブジェクトの移動目標位置から離れるように味方選手オブジェクトを移動させる場合において該味方選手オブジェクトがピッチ41外に出てしまわないように図ることが可能になる。
また例えば、ゲームデータ記憶部60は、ユーザの操作対象チームに所属する選手オブジェクト46同士の連係度(連係の熟練度)を示す連係度パラメータを記憶するようにしてもよい。図15は連係度パラメータデータの一例を示す図である。なお図15において、「A01」、「A02」、「A03」、「A18」、「A19」及び「A20」はユーザの操作対象チームに所属する選手オブジェクト46の識別情報(ID)を示す。図15に示す連係度パラメータデータには、ユーザの操作対象チームに所属する選手オブジェクト46の各々について、その選手オブジェクト46と、他の選手オブジェクト46の各々と、の間の連係度を示す連係度パラメータが記憶されている。連係度パラメータは0から100までの値をとり、連係度パラメータの値が高いほど連係度が高いことを示す。
ここで、連係度パラメータが変化する場合について説明する。ここでは、第1の選手オブジェクト46(例えば、IDが「A01」である選手オブジェクト46)と、第2の選手オブジェクト46(例えば、IDが「A02」である選手オブジェクト46)と、の間の連係度パラメータが変化する場合を例に説明する。例えば、第1及び第2の選手オブジェクト46との双方が試合に出場している場合、第1及び第2の選手オブジェクト46の間の連係度パラメータの値が上昇する。また例えば、第1及び第2の選手オブジェクト46のポジション(GK、DF、MF、FW)が近い場合、第1及び第2の選手オブジェクト46の間の連係度パラメータの値が上昇する。
また例えば、第1及び第2の選手オブジェクト46の間でパスが成功した場合、第1及び第2の選手オブジェクト46の間の連係度パラメータの値が上昇する。また例えば、第1の選手オブジェクト46からのパスを受けた第2の選手オブジェクト46が得点を上げた場合、第1及び第2の選手オブジェクト46の間の連係度パラメータの値が上昇する。
また例えば、第1の選手オブジェクト46が試合中に行動した領域と、第2の選手オブジェクト46が試合中に行動した領域と、の重なり具合に基づいて、第1及び第2の選手オブジェクト46の間の連係度パラメータの値が上昇する。この場合、例えば下記に説明するような処理が実行される。すなわち、ピッチ41が縦横にそれぞれn,m分割され、ピッチ41がn*m個の区画に分割される。そして、それらの各区画ごとに、第1の選手オブジェクト46が試合中にその区間内に位置していた時間が計測される。また、それらの各区画ごとに、第2の選手オブジェクト46が試合中にその区画内に位置していた時間も計測される。そして、第1の選手オブジェクト46の計測結果と、第2の選手オブジェクト46の計測結果と、の比較結果に基づいて、第1及び第2の選手オブジェクト46の間の連係度パラメータの値が上昇する。例えば、第1の選手オブジェクト46が最も長い時間位置していた区画と、第2の選手オブジェクト46が最も長い時間位置していた区画と、が一致する場合、第1及び第2の選手オブジェクト46の間の連係度パラメータの値が上昇する。
また、味方選手制御部66は、上記に説明した連係度パラメータに基づいて、味方選手オブジェクトを操作対象選手オブジェクトの移動目標位置から離れるように移動させるようにしてもよい。例えば、図11に示す処理において、S204又はS210の処理が実行された後、S205の処理が実行される前に、マイクロプロセッサ13(味方選手制御部66)は下記に説明するような処理を実行するようにしてもよい。すなわち、マイクロプロセッサ13は操作対象選手オブジェクトと着目味方選手オブジェクトとの間の連係度パラメータを読み出す。次に、マイクロプロセッサ13は該連係度パラメータの値が所定の基準値以上であるか否かを判定する。そして、連係度パラメータの値が基準値以上である場合、マイクロプロセッサ13はS205〜S208の処理を実行する。一方、連係度パラメータの値が基準値以上でない場合、マイクロプロセッサ13はS205〜S208の処理を実行することなく、S209の処理を実行する。
こうすれば、操作対象選手オブジェクトと味方選手オブジェクトとがお互いに理解し合っている場合に、味方選手オブジェクトが操作対象選手オブジェクトの邪魔をしないように(操作対象選手オブジェクトのためにスペースを作るように)行動するようになる。その結果、操作対象選手オブジェクトと味方選手オブジェクトとがお互いに理解し合っているか否かをユーザに感じさせることができるようになる。すなわち、操作対象選手オブジェクトと味方選手オブジェクトとの間の連係度の高さ(低さ)をユーザに感じさせることができるようになる。
なお、操作対象選手オブジェクトと味方選手オブジェクトとの間の連係度パラメータの値に基づいて、該味方選手オブジェクトの移動開始を待機させるようにしてもよい。例えば、操作対象選手オブジェクトと味方選手オブジェクトとの間の連係度パラメータの値が所定の基準値以上である場合、該味方選手オブジェクトが直ちに移動を開始するようにし、操作対象選手オブジェクトと味方選手オブジェクトとの間の連係度パラメータの値が基準値以上でない場合、所定時間が経過した後に該味方選手オブジェクトが移動を開始するようにしてもよい。または、操作対象選手オブジェクトと味方選手オブジェクトとの間の連係度パラメータの値に基づいて決定される待機時間が経過した後、該味方選手オブジェクトが移動を開始するようにしてもよい。この場合、連係度パラメータの値と待機時間とを対応づけてなるデータが記憶され、このデータに基づいて待機時間が決定される。なお、このデータはテーブル形式のデータであってもよいし、演算式形式のデータであってもよい。また、このデータは連係度が高くなると待機時間が短くなるようにして設定される。
こうすれば、操作対象選手オブジェクトと味方選手オブジェクトとがお互いに理解し合っている場合には、操作対象選手オブジェクトの邪魔をしないようにするための行動(操作対象選手オブジェクトのためにスペースを作るための行動)を味方選手オブジェクトが比較的早期に開始するようになる。一方、操作対象選手オブジェクトと味方選手オブジェクトとがお互いに理解し合っていない場合には、操作対象選手オブジェクトの邪魔をしないようにするための行動(操作対象選手オブジェクトのためにスペースを作るための行動)を味方選手オブジェクトが開始するのが遅れるようになる。このようにしても、操作対象選手オブジェクトと味方選手オブジェクトとがお互いに理解し合っているか否かをユーザに感じさせることができるようになる。すなわち、操作対象選手オブジェクトと味方選手オブジェクトとの間の連係度の高さ(低さ)をユーザに感じさせることができるようになる。
また例えば、図11に示す処理では、S203の処理が実行される前に、マイクロプロセッサ13(味方選手制御部66)は、操作対象選手オブジェクトの位置と移動目標位置との間の距離が所定の基準距離以下であるか否かを判定するようにしてもよい。そして、該距離が基準距離以下である場合、マイクロプロセッサ13はS203〜S210の処理を実行し、該距離が基準距離以下でない場合、マイクロプロセッサ13はS203〜S210の処理を実行しないようにしてもよい。
こうすれば、操作対象選手オブジェクトと移動目標位置(移動目標位置付近の味方選手オブジェクト)との間の距離が比較的大きい場合には、操作対象選手オブジェクトと味方選手オブジェクトとの間の意思疎通が円滑に行なわれない様子が好適に演出されるようになる。
また例えば、判定領域72の大きさは、操作対象選手オブジェクトと移動目標位置との間の距離に基づいて変化するようにしてもよい。本実施の形態の場合、基準距離(R)の長さが、操作対象選手オブジェクトと移動目標位置との間の距離に基づいて変化するようにしてもよい。この場合、操作対象選手オブジェクトと移動目標位置との間の距離と、基準距離(R)と、を対応づけてなるデータが記憶される。またこの場合、図11のS203において、マイクロプロセッサ13(判定部64)は、操作対象選手オブジェクトの現在位置と、移動目標位置と、の間の距離に対応する基準距離(R)を上記のデータに基づいて取得する。その後、マイクロプロセッサ13(判定部64)は、操作対象選手オブジェクトの移動目標位置(ユーザが指定した移動目標位置)からの距離が基準距離(R)以下である判定領域72内に味方選手オブジェクトが位置しているか否かを判定する。
この場合、上記のデータは、例えば、操作対象選手オブジェクトと移動目標位置との間の距離が大きくなると、判定領域72が小さくなるようにして設定するとよい。こうすれば、操作対象選手オブジェクトと移動目標位置(移動目標位置付近の味方選手オブジェクト)との間の距離が比較的大きい場合には判定領域72が比較的狭くなるため、その結果として、操作対象選手オブジェクトのために用意されるスペースが比較的狭くなる。一方、操作対象選手オブジェクトと移動目標位置(移動目標位置付近の味方選手オブジェクト)との間の距離が比較的小さい場合には判定領域72が比較的広くなるため、その結果として、操作対象選手オブジェクトのために用意されるスペースが比較的広くなる。このようにしても、操作対象選手オブジェクトと移動目標位置(移動目標位置付近の味方選手オブジェクト)との間の距離に応じて、操作対象選手オブジェクトと味方選手オブジェクトとの間の意思疎通が円滑に行われたり又は行われなかったりする様子が好適に演出されるようになる。
また例えば、ゲーム装置10で実行されるゲームは、3つの座標要素によって構成される3次元ゲーム空間をゲーム画面50に表示するゲームに限られない。ゲーム装置10で実行されるゲームは、2つの座標要素によって構成される2次元ゲーム空間をゲーム画面50に表示するゲームであってもよい。すなわち、ゲーム装置10で実行されるゲームは、ボールキャラクタや選手キャラクタの位置等が2つの座標要素で管理されるゲームであってもよい。
また例えば、ゲーム装置10で実行されるゲームは、2名以上のユーザによって行われるゲームであってもよい。また例えば、ゲーム装置10で実行されるゲームはサッカーゲームに限られない。ゲーム装置10で実行されるゲームはサッカーゲーム以外のスポーツゲーム(バスケットボールゲームやアイスホッケーゲーム等)であってもよい。
また例えば、操作入力部21はタッチパネル又はマウス等であってもよい。
また例えば、カーソル56は方向ボタン36の操作に従って移動するようにしてもよい。また例えば、ユーザが方向ボタン36を操作することによって、指示対象の選手オブジェクト46の移動方向やキック方向を直接指示できるようにしてもよい。この場合、カーソル56の表示を省略することができる。
また例えば、カーソル56を表すオブジェクトを仮想3次元空間40に配置することによって、カーソル56がゲーム画面50に表示されるようにしてもよい。
また例えば、以上の説明では、プログラムを情報記憶媒体たる光ディスク32を介してゲーム装置10に供給するようにしたが、通信ネットワークを介してプログラムをゲーム装置10に配信するようにしてもよい。図16は、通信ネットワークを用いたプログラム配信システムの全体構成を示す図である。図16に基づいて本発明に係るプログラム配信方法を説明する。図16に示すように、このプログラム配信システム100はゲーム装置10、通信ネットワーク106、プログラム配信装置108を含む。通信ネットワーク106は、例えばインターネットやケーブルテレビネットワークを含む。プログラム配信装置108はゲームデータベース102、サーバ104を含む。このシステムでは、ゲームデータベース(情報記憶媒体)102に、光ディスク32に記憶されたプログラムと同様のプログラムが記憶される。そして、ゲーム装置10を用いて需要者がゲーム配信要求をすることにより、それが通信ネットワーク106を介してサーバ104に伝えられる。そして、サーバ104はゲーム配信要求に応じてゲームデータベース102からプログラムを読み出し、それをゲーム装置10に送信する。ここではゲーム配信要求に応じてゲーム配信するようにしたが、サーバ104から一方的に送信するようにしてもよい。また、必ずしも一度にゲームの実現に必要な全てのプログラムを配信(一括配信)する必要はなく、ゲームの局面に応じて必要な部分を配信(分割配信)するようにしてもよい。このように通信ネットワーク106を介してゲーム配信するようにすれば、プログラムを需要者は容易に入手することができるようになる。