(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための最良の形態】
【0018】
図1は、本発明に係るゲーム装置の実施形態を示すブロック図である。ゲーム装置1の処理部2は、CPU(Central Processing Unit)10、システムメモリ11、記憶媒体12、ブートロム(BOOT ROM)13、バスアービタ14、ジオメトリプロセッサ15、レンダリングプロセッサ16、グラフィックメモリ17、オーディオプロセッサ18、オーディオメモリ19、通信インタフェース(I/F)20、そして、ペリフェラルインターフェース21を備えている。
【0019】
ゲーム装置1は、CPU10やシステムメモリ11等の構成を含んで構成されるコンピュータを備え、コンピュータに所定のプログラムを実行させることによって、
図1のものをサッカーゲーム等のスポーツをテーマとしたゲーム装置として機能させる。
【0020】
ゲーム装置1は、仮想三次元空間(ゲーム空間)内のキャラクタ、オブジェクトや地形などを仮想カメラで撮影し、仮想カメラからの映像を二次元画像(立体的に見える平面画像)に変換してゲーム画像を生成するとともに、これに効果音を付して遊戯者に提供する。
【0021】
CPU10は、所定のプログラムを実行することによりゲーム装置1全体を制御する。システムメモリ11は、CPU10が使用するプログラムやデータを格納する。
【0022】
記憶媒体12には、ゲームプログラムや画像や音声などのデータが記録されている。なお、プログラムデータ用ROMとしての記憶媒体12を、マスクロムやフラッシュロムなどの電気的にデータを読み出せるICメモリや、CD−ROM、DVD−ROMなどの光学的にデータを読み出せる装置と光ディスクまたは磁気ディスク等に代えてもよい。
【0023】
ブートロム13は、ゲーム装置1を起動させた際に各ブロックを初期化するためのプログラムを格納している。バスアービタ14は、各ブロック間でプログラムやデータのやり取りを行うバスを制御する。
【0024】
ジオメトリプロセッサ15は、ディスプレイに表示するオブジェクトの仮想三次元空間(ゲーム空間)での位置座標や向きを計算する。レンダリングプロセッサ16は、ジオメトリプロセッサ15によって算出されたオブジェクトの向きや位置座標等に基づいて、ディスプレイに出力する画像を生成(描画)する
グラフィックメモリ17は、レンダリングプロセッサ16に接続されており、画像を生成するためのデータやコマンドなど格納している。オーディオプロセッサ18は、スピーカから音声出力を行うためのデータを生成する。このオーディオプロセッサ18によって生成された音声データが図示しないデジタル/アナログ変換器によってアナログ信号に変換され、これがスピーカに出力される。
【0025】
オーディオメモリ19は、オーディオプロセッサ18に構成されており、音声を生成するためのデータやコマンドなど格納する。通信インタフェース(I/F)20は、ゲーム装置1が他のゲーム装置やサーバ装置等との間でデータ通信の必要がある場合における通信処理を行う。
【0026】
ペリフェラルインターフェース(I/F)21は、外部からのデータ入出力を行うインターフェースが組み込まれており、ここに周辺装置としてのペリフェラルが接続される。
ペリフェラルには、マウス(ポインティングデバイス)やキーボード、ゲーム用コントローラ等のキー操作のためのスイッチ、及びタッチペンの他、プログラムの途中経過や生成したデータを保存するバックアップメモリ、表示装置、撮影装置等、画像処理装置本体あるいは他のペリフェラルに接続可能なものが含まれる。
【0027】
なお、システムメモリ11、グラフィックメモリ17、サウンドメモリ19を一つのメモリICに集約しても良い。
【0028】
記憶媒体には、例えば、サッカーゲームのアプリケーションプログラムが格納されている。CPU10はこのプログラムと遊戯者からの入力に基づいて、データ処理を行う。
【0029】
サッカーゲームアプリケーションプログラム(以下、「プログラム」と略称する。)は、AI(ArtificialIntelligence)機能を備え、このAI制御に基づいて、3次元仮想空間に配置され、敵味方に区別された複数の選手オブジェクト間のサッカー競技の展開に対する画像処理を高速かつ高精度に実行する。
【0030】
プログラムは、仮想カメラからの視野を決定する上で、“視錐台”を用いる手法を採用する。視錐台は視野空間の境界に相当する、四角錘台などの多角錘である。CPU10はこの視錘台の領域内の選手やボールなどのオブジェクトを2次元画像に変換する演算を実行して生成された2次元画像を表示デバイスに表示する。
【0031】
視錐台を用いることにより、CPU10は、視野外のオブジェクトを演算処理の対象から除くことができる。視錐台は複数の平面の組み合わせからなり、CPUは、オブジェクトに外接する球体(境界球)と平面との接触を判定して、オブジェクトが視野内にあるか否かを判定する。
【0032】
視野領域内にある選手オブジェクトのうち、遊戯者の操作対象であるオブジェクトには、カーソル(頭上の逆三角形の標識)が付されて表示されている。
図2に示すように、CPU10は、AI制御によって、どの選手オブジェクトにボール28を支配する権利、或いはボールを操作する権利があるか否かを、ボールオブジェクト28、選手オブジェクトとの位置関係に基づいて判定する。
【0033】
例えば、CPU10は、
図2(A)に示すように、ボールオブジェクト28に対する距離が一番近い選手オブジェクト22を遊戯者が操作可能なものと判定して当該選手オブジェクトにボールの支配権がある、換言すればボールを所有していることを示すフラグを設定し、かつ、選手オブジェクトの近傍、例えば頭上にカーソル24を表示する。
【0034】
なお、
図2(B)は、遊戯者が操作できない選手オブジェクト26であり、これにはカーソル24が付されていない。カーソルが付されていない選手オブジェクトはAI制御によって制御される。
【0035】
図2(A)に示す選手オブジェクト22が敵側ゴールに対して攻撃中である場合には、遊戯者の操作が選手オブジェクト22に反映され、例えば、敵側ゴールに向けてシュート或いはパスするなどの動作が選手オブジェクト22に与えられる。
【0036】
一方、
図2(A)に示す選手オブジェクト22が防御側のものである場合には、遊戯者の操作が選手オブジェクト22に反映され、例えば、敵側選手オブジェクトのボールをクリアするなどの動作が選手オブジェクト22に与えられる。
【0037】
なお、遊戯者が操作可能な選手オブジェクトはAIによって決定されるが、ゲーム装置は、遊戯者の操作によってこれをAIで定められた以外の他の選手オブジェクトに変更することができる。
【0038】
プログラムは、視錐台の範囲にある、互いに対戦しているチーム毎の選手オブジェクトの少なくとも一つにボールに対する支配権を持たせ、これらの選手オブジェクトに対して既述のカーソルを付加する。
【0039】
遊戯者は自身のチームの選手オブジェクトを操作する上で、ゲーム装置に特殊な入力を行うと、プログラムを実行するCPUがこの入力を検出して、ワンツーパスのような特殊動作を実現する。例えば、遊戯者が入力装置の複数のボタンを決められた順番にて操作することによって特殊動作が開始される。
【0040】
プログラムは、特殊コマンドの発動を判定するとオブジェクトの配置や動作が特殊動作や特殊な技を発生させることが妥当な状況下にあるか否かを判定する。
この判定を肯定すると、プログラムは、特殊コマンドを実行する過程で、AI制御より遊戯者の手動による操作入力を一時的に優先して、オブジェクトのワンツーパスの一連の挙動の少なくとも一部に遊戯者の手動操作を反映させることができる。
【0041】
プログラムがこの判定を否定すると、特殊コマンドを受け付けないか、あるいは無効化して選手オブジェクトの特殊動作を再生しない。特殊コマンドを実行しないことを、プログラムは遊戯者に報知しても良い。
【0042】
遊戯者の入力のタイミングがワンツーパスの一連の挙動のうちの、オブジェクトのある動作の開始に間に合った場合には、プログラムは、この動作に遊戯者の手動操作を反映させる。プログラムは、遊戯者の入力タイミングで、オブジェクトを入力の方向に移動させたり、ボールを蹴る方向を入力の方向に合わせたりする。
【0043】
一方、遊戯者の入力のタイミングがワンツーパスの一連の挙動のうちの、オブジェクトのある動作の開始に間に合わない場合には、プログラムは、この動作に遊戯者の手動操作を反映させことなく、特殊コマンドの実行をAI制御に委ねる。オブジェクトがワンツーパスの挙動を行う際の具体的な制御動作については後述する。
【0044】
図3は、プログラムが“ワンツーパス”を実現するための処理動作を、ゲーム装置のCPU10が果たす諸機能として説明した機能ブロック図である。CPU10は、ワンツーパスなどの特殊動作を含むオブジェクトの通常動作に対する制御を司るAI制御動作実行制御部30を備えている。
【0045】
AI制御動作実行制御部30は、カーソル付加機能30A、視野制御機能30B、動作制御機能30C等を備えており、画像表示指示制御部32を介して、ディスプレイに表示する画像をバスアービタ14(
図1参照)へ出力する機能を有している。
カーソル付加機能30Aは、選手オブジェクトの位置とボールオブジェクトの位置との距離を判定するなどして、特定の選手オブジェクトがボールに対する支配権・操作権を持つ、即ち遊戯者からのキックやパスの操作入力がこの特定の選手オブジェクトに適用されると判定して、この特定の選手オブジェクトに既述のカーソルを付す制御を実現する。
【0046】
視野制御機能30Bは、既述の視錘台の手法を用いて、視野内にオブジェクトが存在するか否かの判断など、オブジェクトに対する視野の制御を実現する。動作制御機能30Cは、オブジェクトの位置や入力データに基づいてオブジェクトの動作を制御する。
【0047】
遊戯者の方向キーや操作ボタンに対する操作信号は、操作コマンド解析部34へ入力され、この操作コマンド解析部34において、操作コマンドの内容が解析される。
操作コマンド解析部34は、操作キーによるコマンドが、ワンツーパスを開始させるためのコマンドか、選手Aから選手Bへのパス動作を指示するコマンド(A→Bパス動作指示)か、選手或いはボールの進行方向を定めるコマンドか、選手Bから選手Aへのリターンパス動作を指示するコマンド(B→Aパス動作指示)などの何れかであるかを判別する。
【0048】
操作コマンド解析部34は、この判別結果に基づいて、条件判定部36、A→Bパス動作指示入力待機部38、方向キー入力待機部40、又は、B→Aパス動作指示入力待機部42に各種制御信号を出力する。
【0049】
操作キーによるコマンドが、ワンツーパスを開始させるためのコマンドであると操作コマンド解析部34が判定すると、その判定結果は条件判定部36に出力される。
【0050】
条件判定部36は、AI制御動作実行制御部30から送られる各種情報に基づき、ワンツーパスを発生可能な条件が成立しているか否かを判定する。
選手オブジェクトAと同じチームの選手オブジェクトBに選手オブジェクトAから送りパスを出し、選手オブジェクトBから選手オブジェクトAにリターンパスを出し、リターンパスを受けた選手オブジェクトAが敵ゴールにシュートをし、あるいは選手オブジェクトAがドリブルなどをして敵陣に向かい、あるいは選手オブジェクトAが自軍選手にパスを行なうことをワンツーパスであるとすると、既述の条件の一例は次のとおりである。
(1) ボール保持している選手Aが視錐台内に存在するか。
(2) 選手オブジェクトAを中心とした所定範囲内(最大で視錐台の内側)に選手オブジェクトBが存在するか。
(3) 自分のチームが攻撃状態にあること。
(4) カーソルの付いている選手オブジェクトAがパスを出せる体勢にあること。
【0051】
なお、このワンツーパスはサッカーゲームだけでなく、チーム間での対戦を行なう、バスケット、ホッケーなどのゲームアプリケーションプログラムにも適用可能である。
条件判定部36は、既述の条件毎に成立/不成立を判定し、この判定結果を許可/不許可判定部44へ送出する。許可/不許可判定部44は、ワンツーパスを発生して良いか否かを決定する。
【0052】
許可/不許可判定部44において、ワンツーパスが不許可と判定された場合には、その判定結果である不許可信号をAI動作実行制御部30へ送出する。AI動作実行制御部30は、ワンツーパスのための特殊コマンドを取り消すなどして、ワンツーパスを行なうことなく、選手オブジェクトなどを通常に制御する。
【0053】
許可/不許可判定部44は、ワンツーパスの発生を許可判定すると、判定結果をA→Bパス動作指示入力待機部38に出力する。A→Bパス動作指示入力待機部38は、操作コマンド解析部34からの、選手オブジェクトA→選手オブジェクトBへの送りパスのためのコマンドを待つ。
【0054】
ワンツーパス動作内カーソル移動禁止指示部46はA→Bパス動作指示入力待機部38から待機中であることを示す制御信号を受けると、ワンツーパスのための制御が行われている期間中、選手オブジェクトAと選手オブジェクトBとの間でボールオブジェクトの受け渡しがあっても、既述のカーソルが選手オブジェクトAと選手オブジェクトBとの間で移動されることなく、リターンパスを最終的に受け取る選手Aに固定或いは維持しておくためのリクエストをAI制御動作実行制御部30に出力する。
【0055】
ワンツーパスが実行されている間(これは比較的短いものであるが)、ボールオブジェクト28が選手A(パス側)→選手B(レシーブ側)、さらに選手B→選手Aとパスされる都度カーソル24が動くと、リターンパスでボールオブジェクトが最終的に、選手オブジェクトBから選手オブジェクトAに直ちに帰ってくることが判っている遊戯者には、選手オブジェクトAへの入力が遅れることにもなり、かえってカーソルの動きが煩わしい。
【0056】
A→Bパス動作指示入力待機部38が操作コマンド解析部34から、選手オブジェクトAから選手オブジェクトBへ送りパスのためのコマンドを受けると、A→Bパス動作実行指示部48へ送りパスを実行するための制御信号を出力する。
【0057】
この制御信号を受けた、A→Bパス動作実行指示部48は、AI制御動作実行制御部30に、ワンツーパスの最初の段階である、選手オブジェクトAから選手オブジェクトBへの送りパスを実行することを指示する。
【0058】
AI制御動作実行制御部30は、選手オブジェクトAに送りパスをさせた後、選手オブジェクトAをAI敵側ゴール方向へ移動させるなど、選手オブジェクトAが“ワンツーパス”関連動作を行なうように選手オブジェクトAの動きを制御する。
【0059】
A→Bパス動作フレームカウンタ50はA→Bパス動作実行指示部48から、選手オブジェクトAから選手オブジェクトBへのパスのコマンドを受け取った以降のフレーム数(経過時間)を計測する。
【0060】
A→Bパス動作フレームカウンタ50でのカウント値が所定値になるまで、A→Bパス動作フレームカウンタ50は、遊戯者からの選手オブジェクトAに対する、選手オブジェクトがリターンパスを受けるために移動する方向への方向キーの操作を有効にし、この方向への操作という点でAI制御よりも遊戯者の入力を優先させてワンツーパスを継続させるための有効信号が方向キー入力待機部40に出力される。
【0061】
一方、方向キー入力待機部40は、A→Bパス動作フレームカウンタ50でのカウント値が所定値を超えると、方向キーの操作があっても操作コマンドを無効にしてワンツーパスが遊戯者の入力に従わないようにする無効信号がA(選手オブジェクトA)移動動作実行指示部54に出力される。
【0062】
方向キー入力待機部40は、前記有効信号を受けている間に、操作コマンド解析部34を介して方向キーの操作信号を受けると、A移動動作実行指示部54に方向キーの操作に係る制御情報を出力する。
【0063】
A移動動作実行指示部54はAI制御動作実行制御部30に対して、選手オブジェクトAを方向キーの操作に基づいて移動させる。即ち、A移動動作実行指示部54は、選手オブジェクトAに対する方向キーをAI制御より優先させて、選手オブジェクトを遊戯者の操作した方向に移動するようにAI制御動作実行制御部30を動作させる。
【0064】
例えば、ワンツーパスコマンドが発動された際、AI制御動作実行制御部30によって選手オブジェクトAの移動方向が、相手方のゴール方向に設定されていても、方向キーの操作によって選手オブジェクトAの移動方向をゴール方向から変えることが可能となる。
【0065】
なお、選手Aが進行する方向と逆方向にキー入力があった場合には、選手オブジェクトAの移動が停止される。この時、ワンツーパスコマンドが無効にされるようにしても良い。
【0066】
一方、A→Bパス動作フレームカウンタ50からAI制御起動指示部52に出力される制御信号が前記無効信号に変わると、AI制御起動指示部52は、AI制御動作実行制御部30に方向キーの操作によらずに選手オブジェクトAをAI制御するように指示する。
【0067】
AI制御動作実行制御部30は、B→A動作指示入力待機部42に制御信号を出力する。AI制御動作実行制御部30は、B→A動作指示入力待機部42に、選手オブジェクトAから選手オブジェクトBへの送りパス、並びに、選手オブジェクトAの移動が開始した時点で、操作コマンド解析部34から送られる、選手オブジェクトBから選手オブジェクトAへのリターンパス動作指示(B→Aパス動作指示)を待つようにB→A動作指示入力待機部42に指示する。
【0068】
次いで、B→A動作指示入力待機部42が、選手オブジェクトBから選手オブジェクトAへのリターンパスを行なう指示を受けると、B→A動作指示入力待機部42は、B→Aパス動作指示実行指示部56に対して制御信号を出力する。
この制御信号を受けたB→A動作実行指示部56は、AI制御動作実行制御部30に対して、AI制御によって決るリターンパスのタイミングや方向より優先して、遊戯者が操作装置の方向キーやキックボタンの操作によって得られた方向やタイミングでリターンパスを選手オブジェクトAから選手オブジェクトBに繰り出す。
【0069】
選手オブジェクトAへの遊戯者からの方向が優先されると、AI制御動作実行制御部30は選手オブジェクトAがリターンパスを受ける目標地点を決定する。AI制御動作実行制御部30は、選手オブジェクトBからのリターンパスがこの目標地点で選手オブジェクトAに到達する方向やタイミングで遊戯者からの入力があった場合には、遊戯者の入力をAI制御より優先させる。
【0070】
一方、これが可能なタイミングで入力がなかった場合、AI制御動作実行制御部30は、ワンツーパスを中止する、又は、選手オブジェクトBから選手オブジェクトAへのリターンパスを遊戯者の入力とは関係なくプログラムに基づいて決定する。
【0071】
既述のワンツーパスにおける諸態様を次の表1〜5に纏め、かつ説明する。
【0072】
【表1】
【0073】
表1は、ワンツーパスの過程における選手A、選手Bに対する、ゲーム装置1の制御状態を纏めたものである。ワンツーパスは、表1の“ワンツーパスコマンド発行”から“ボールを受ける”までの各フェーズから構成されている。
【0074】
表1において、方向操作権又はボタン操作権にA又はBとあるのは、AI制御動作実行制御部30ではなく遊戯者に操作権があり、操作結果が選手オブジェクトA又はBに反映されることを示す。表1の「−」は、制御権がユーザではなく、AI制御動作実行制御部30にあることを示している。
【0075】
“Aの状態”は、選手オブジェクトAの状態を意味し、“方向操作権”とは遊戯者からの方向キーへの入力によって方向が操作される選手オブジェクトは誰か、ということであり、“ボタン操作権”とは、遊戯者からのキックボタンなどのボタンキーへの入力によってキックを行うのはどの選手オブジェクトか、ということであり、 “カーソル表示”とは既述のカーソルがどの選手オブジェクトに付されているかということであり、“Bの状態”は、選手オブジェクトBの状態を意味している。
【0076】
例えば、ワンツーパスコマンド発行時は、選手オブジェクトAはボール28を保持していて、カーソル24は選手オブジェクトAにあり、遊戯者の方向キー操作で選手オブジェクトAの方向を変え、キックボタンによって選手オブジェクトAから選手オブジェクトBへの送りパスがおこなわれ、このとき、選手オブジェクトBはAIによって制御される。
【0077】
次いで、キック(A→B)のときには選手オブジェクトAはボールをキックするモーションを行い、選手オブジェクトBはボール28の送りパス目的地に移動し待機する動作を行う。選手オブジェクトBの動きはAI制御動作実行制御部30が行う。
選手オブジェクトAがボール28をキックする動作パターンとしては、例えば、表2のようなものがある。
【0078】
【表2】
【0079】
表2のモーションデータは、記憶媒体12やシステムメモリ11などの記憶手段に記憶されており、コンピュータ(CPU10)は、選手オブジェクトAの位置や方向、選手オブジェクトBの位置や方位をチェックして、どれかのパターンを選択して、選手オブジェクトAの動作パターンを決定する。
選手オブジェクトAから選手オブジェクトBへのキックの際、カーソル24は選手オブジェクトAに付されたままであり、AI制御動作実行制御部30が、送りパスによるボール28と選手オブジェクトBとの合流可能点を計算して、その地点に選手オブジェクトBを移動させる。
【0080】
選手オブジェクトBは、送りパスされたボール28より一瞬でも先に到達点に着いて、ボール28が到達するまでその位置で待機する。この間、所定期間内に方向キーにユーザからの入力があると、この入力は選手オブジェクトAの移動方向に反映される。このとき、送りパスに続くキックはリターンパスであるために、キックボタンの制御権は選手オブジェクトBの側にある。選手オブジェクトAの方向キーによる移動方向への実際の移動はAI制御動作実行制御部30によって実行される。
【0081】
リターンパスの入力のフェーズでは、選手オブジェクトBから送りパスが、選手オブジェクトAがボールを受け取れる目標地点あるいは目標範囲に向けて実行される。目標地点、あるいは目標範囲に送りパスを出せるタイミング期間内での方向キーの操作は選手オブジェクトBの方向(向き)に反映され、キックボタンの操作は選手オブジェクトBのキック動作に反映される。このタイミング期間外での入力は既述のとおりAI制御動作実行制御部30に対して優先されず、AI制御動作実行制御部30がプログラムに基づいて、ワンツーパスを中止等する。例えば、リターンパスのモードは解除されて選手オブジェクトBがボール28を持ってドリブルするか、選手オブジェクトA以外の他の選手にパスを送る。
【0082】
「キック(B→A)」のフェーズでは、目標地点への選手オブジェクトAの移動および選手オブジェクトBからの送りパスはAI制御動作実行制御部30によって制御される。
【0083】
「ボールを受ける」のフェーズでは、選手オブジェクトAが目的地点へ向けて移動して選手オブジェクトBからの送りパスを受領し、遊戯者からの方向キーの操作、キックボタンなどのボタン操作が送りパスを受領した後の選手オブジェクトAに対して反映される。このとき、選手オブジェクトBは送りパスを送付し終わったので、プログラムなどによって制御される。
【0084】
表1の内容をフェイズシーケンス図で表すと、
図4のようになる。
図4におけるステップS1〜S6の矢印400に沿った幅は時間の長さに対応している。
【0085】
まず、ワンツーパスコマンドが発行されると(S1)、選手オブジェクトAから選手オブジェクトBにキック(送りパス)が行われる(S2)。これは、既述のとおり、コンピュータが、選手オブジェクトA、選手オブジェクトBの位置やその向きなどからワンツーパスの処理を実行しても良いと判断できる場合に実現される。
【0086】
次に、移動方向入力受付が開始され、移動方向入力受付が働いている間に(S3)、方向キーが操作されると、方向キーの操作によって指定された選手オブジェクトAの方向がAI制御よりも優先される。
【0087】
一方、時間内に方向キーの操作が無いときには、選手オブジェクトAの移動はAIによって自動制御される。
移動方向入力受付が開始されたときには、リターンパス入力受付が開始され、リターンパス入力受付が働いているときに(S4)、リターンパス(選手オブジェクトBから目的、例えばゴールに向かって走行している選手オブジェクトAに対するボール28のパス)の入力が遊戯者からあるときには、AI制御よりも遊戯者からの入力を優先して、リターンパスの方向が決定される。
【0088】
すなわち、S4の期間内にリターンパスのための入力が遊戯者からなされると、リターンパスは目標地点に送ることができ、そして、入力された方向に移動している選手オブジェクトAが送りパスを受け取れるようになる。なお、S3の間に遊戯者からの入力がない場合には、選手オブジェクトAはAI制御されるため、通常、リターンパス入力受付期間S4は遊戯者の入力に対して有効化されない。もっとも、AI制御によって移動中の選手オブジェクトAへのリターンパスに遊戯者のS4期間中の操作を反映させるようにしてもよい。
【0089】
そして、S4の期間にリターンパスの入力があると、続いて選手オブジェクトBから選手オブジェクトAへのリターンパスのためのキックモーションが再生される。それによって選手オブジェクトAはS6の期間にリターンパスされたボールを受け取り、以後選手オブジェクトAは遊戯者の方向キーの操作によって例えばゴール方向に移動し、遊戯者のキックボタンの操作によってゴールシュートをする。この間、選手オブジェクトBの操作はAI制御に従う。
【0090】
このリターンパス入力受付期間中にリターンパスの入力がない場合には、リターンパスの方向がAI制御されるか、またはワンツーパスが中止される。
リターンパス入力のフェーズS4では方向キーの操作権は遊戯者にあり、方向キーの操作結果は選手オブジェクトBに反映され、キックボタンの操作権についても同様であるが、カーソルはS1のフェーズからS6のフェーズまで選手オブジェクトAに対して表示されている。
【0091】
遊戯者操作に基づく、選手オブジェクトAから選手オブジェクトBへのキック、すなわちワンツーパスの第1のパスには表3に示すように複数あり、遊戯者はボタン操作によって特定のパスを選択できる。例えば、キックボタンを押すと通常はショートパスであるが、複数の組み合わせでロングパスやスルーパスを選択できる。ショートパスは短い分精度が高く、すなわち、選手オブジェクトAから選手オブジェクトBへのパスが成功する確率が高く、ロングパスは長い分敵陣側へ素早く攻撃を仕掛けられるものの、精度が低くなる。
【0092】
遊戯者操作に基づく選手オブジェクトAから選手オブジェクトBへのキックの精度はAI制御でのそれとほぼ同じである。
【0093】
【表3】
【0094】
遊戯者操作に基づく、選手オブジェクトBから選手オブジェクトAへのキック、すなわちワンツーパスの第2のパス(リターンパス)には表4に示すように複数あり、その精度は表3の説明と同様である。
【0095】
【表4】
【0096】
AI制御部は、ワンツーパスコマンドが発行されると、所定の期間に選手オブジェクトAの方向キーの操作入力を受け取った場合に、ワンツーパスの処理に遊戯者の操作が反映させる。しかし、表5の条件が発生したことを検出した場合には、ワンツーパスの処理を途中でキャンセルする。
【0097】
【表5】
【0098】
表4のパスの軌道や表5の条件はゲームプログラムとともに記録媒体に記録されている。
【0099】
次に、既述のワンツーパスの動作を
図5のフローチャートと
図6の選手オブジェクトA、および選手オブジェクトBの状態遷移図とを対比しながら説明する。
図5のフローチャートはゲーム装置のCPU10がゲームプログラムに基づいて実行される。
【0100】
図5に示される如く、ステップ100では、特殊コマンドが入力されたか否かが判断され、否定判定の場合はこのルーチンは終了する。
【0101】
ステップ100を肯定判定すると、ステップ102へ移行して、特殊コマンドがワンツーパスコマンドか否かを判断する。
このステップ102を否定判定すると、ステップ104へ移行して、ワンツーパス以外のコマンドに基づいて他の処理制御を実行して、このルーチンを終了する。
【0102】
ステップ102を肯定判定すると、ステップ106へ移行して条件チェックが実行される。すなわち、
図6に示すように、選手オブジェクトA及び選手オブジェクトBとの相対的な位置関係が、ボール28を保持している選手オブジェクトAが
図6のA1の位置で、選手オブジェクトBの位置が選手オブジェクトAを中心とした所定の半径の円内(所定距離内)のB1の位置であるかを、CPU10が判定する。A1はステップ102においてワンツーパスコマンドが発動したときの選手オブジェクトAの位置であり、B1は同じときの選手オブジェクトBの位置である。
【0103】
ステップ108では、条件判定の結果に基づいて、ワンツーパスを許可するか否かを判断し、否定判定(不許可)の場合は、ステップ110へ移行して、ワンツーパスコマンドを無効にして、選手オブジェクトの動作の制御を通常のAI動作制御に委ねてこのルーチンを終了する。
【0104】
ステップ108で肯定判定(許可)の場合は、ステップ112へ移行して、選手オブジェクトAと選手オブジェクトBとがワンツーパス動作範囲内で、選手オブジェクトAから選手オブジェクトBへのカーソルの移動が禁止される。
ステップ114では、CPU10は、選手オブジェクトAから選手オブジェクトBへの送りパス操作の入力の待機状態に入り、ステップ116でこの入力があると、ステップ118へ移行してAI動作制御により、A1の位置にいる選手オブジェクトAからB2の位置に向けて選手オブジェクトBに対するボールの送りパスを実行し、ステップ120へ移行する。
【0105】
CPU10は選手オブジェクトAの位置および向き、選手オブジェクトBの位置および向き、送りパスがされるボールの方向、その速度に基づいて、B2の位置を送りパスがされる前に予め演算する。
【0106】
CPU10はAI制御によって選手オブジェクトBをB1からB2の位置に移動させる。
【0107】
ステップ120では、CPU10はフレームカウンタとして機能し、この送りパスが発生した時点がフレーム数のカウントを開始する。フレーム数のカウントにあたっては、カウンタの値をリセットしてから計測を開始する。
【0108】
ステップ118で送りパスの実行があると、選手オブジェクトAは、(A1)の位置でボールを選手オブジェクトBに対してパスすると、AI制御機能によって相手側ゴール(
図6の上方向、図示省略)にむかって移動する。このとき既述のとおり選手オブジェクトBはB1の位置からB2の位置に向かって移動している。
【0109】
次いで、ステップ122では、選手オブジェクトAに対する方向キー操作指示を待機する状態が発生し、ステップ124において、この方向キー操作指示があったか否かを判断する。
【0110】
ステップ124において方向キーの操作がなかったときは、ステップ126において、フレームカウント値が所定数(N)になったか否かを判定する。フレームカウント値がN未満であれば、ステップ122にリターンする。この間、選手オブジェクトAの移動方向はAI制御による。
【0111】
ステップ126においてフレームカウント値が所定フレームになると、ステップ130において、AI制御による選手オブジェクトAのゴール方向への移動が続行される。
【0112】
ステップ124において、選手オブジェクトAに対する方向キーの操作があると、ステップ128は選手オブジェクトAをAI制御による方向ではなく方向キーでの操作方向に移動させる。
【0113】
今、CPU10が所定フレーム数をカウントするまで、選手オブジェクトAに対する方向キーの操作がなければ、ステップ122→ステップ124→ステップ126→ステップ122のループが繰り返し実行させる。
【0114】
所定フレーム数(N)がカウントされるまで間(tsec)に方向キーの操作があると、ステップ128にあるように、選手オブジェクトAの移動方向はAI制御による方向から方向キーの操作方向である右斜め上に変更される。
【0115】
所定フレーム数(N)がカウントされるまでの間に方向キーの入力がないと、ステップ124、ステップ128の処理がスキップされて、ステップ126→ステップ130→ステップ132に移行して、AI制御に基づく方向への選手オブジェクトAの移動が継続される。
【0116】
図6に示すように、A1の選手オブジェクトAが送りパスを選手オブジェクトBに行うと、AI制御によって選手オブジェクトAはA3−1の位置の方向(相手ゴールのある方向へ直進)に制御される。A1制御部は、選手Aの位置、向き、速度などによってA3−1の位置を演算する。
【0117】
Nフレームが経過する間に、オブジェクトAの方向キーが操作されると、AI制御による選手オブジェクトAの方向から方向キーの方向に選手オブジェクトAの移動方向を切り替える。
【0118】
図6のA2はNフレーム経過時の選手オブジェクトAの位置である。方向キーの操作方向によって選手オブジェクトAの移動方向が変更される場合、選手オブジェクトAはA1の位置から最大A2の位置まで進む。方向キーの操作がNフレーム経過以前に行われた場合にはA2の位置よりA1の位置寄りから選手オブジェクトAの方向が変更される。
【0119】
Nフレーム経過以前に方向キーの操作が行われないと、選手オブジェクトAはA2の位置を越えてNフレーム経過後の時間に応じてA3−1の位置まで進む。
【0120】
次にステップ132では、選手オブジェクトBから選手オブジェクトAへのリターンパスの入力が選手オブジェクトBに対して行われるのを待つ。
【0121】
ステップ134では、AI制御部は、B2の位置でボール28を受けた選手オブジェクトBが方向キーの操作方向に進んでくる選手オブジェクトAにボール28を渡せる目標地点A3−2を、選手オブジェクトAの速度と方向、ボールの速度と方向、そして選手オブジェクトBの位置と速度や向きに基づいて演算し、この目標地点3−2にボールを送れるタイミングでボールを蹴りだす入力が入力装置から選手オブジェクトBに対してあったか否かをチェックする。
【0122】
この入力は選手オブジェクトBの向きをB2の状態から選手オブジェクトAへの向きであるB3に変更することと、ボールを選手オブジェクトAに蹴り出す入力とからなる。
【0123】
図6において、(1)は選手オブジェクトAから選手オブジェクトBへの送りパスが実行される直前のボールの位置であり、(2)にNフレーム経過時のボールの位置であり、(3)は送りパスを選手オブジェクトBが受け取った時点でのボールの位置であり、(4)は選手オブジェクトBが選手オブジェクトAに向きを変えてリターンパスを送る直前でのボールの位置であり、(5)は選手オブジェクトAがリターンパスを受けた時点でのボールの位置である。
【0124】
ステップ134において、リターンパスに関する演算が、目標地点に向けて選手オブジェクトBがリターンパスを繰り出せない結果となる場合には、ステップ134を否定判定して、リターンパスを行うことなくワンツーパスの処理を終了する。
【0125】
一方、ステップ134において、CPU10による計算結果が、リターンパスを目標地点に対して実行できる場合には、ステップ136に移行して、B3の位置にある選手オブジェクトBからA3−2に向けてリターンパスを繰り出す。
【0126】
この結果、選手オブジェクトAは方向キーの操作方向に移動しながら、A3−2の位置に来ると(5)の位置のボールを受け取ることができる。
【0127】
図6によれば、選手オブジェクトBから選手オブジェクトAへのリターンパスを、AI制御による場合には選手オブジェクトBから比較的遠いA3−1の位置で選手オブジェクトAに対して行う必要があるが、方向キーの操作方向を有効にすることによって、選手オブジェクトBに近いA3−2の位置で行うことができる。
【0128】
例えば、敵軍のゴール前に敵選手が多く、AI制御に任してゴールに向かって選手オブジェクトAを移動させるよりも、一旦ゴール方向から外れた方向にリターンパスの方向を変更して、一旦敵軍の注意をそらす方が、遊戯者にとって好ましい場合などに、
図5及び
図6に示すワンツーパスの制御が有用である。