(57)【要約】      （修正有）【課題】キャラクタ集団移動制御プログラム、記憶媒体及びゲーム装置において、リーダーキャラクタを中心とした複雑な集団の移動や戦闘を、直感的に分かり易い操作により動的に楽しませ、よりリアルに表現させることにある。【解決手段】ビデオゲームを制御するプログラムであって、コンピュータを、３次元仮想空間上でリーダーキャラクタを複数のエージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置からの入力情報に基づいて移動する集団移動手段、所定時間毎に、前記リーダー入り集団の移動中において前記各キャラクタに自然な移動を表現させるように前記各キャラクタに特定力を作用する特定力作用手段、前記特定力に基づいて前記各キャラクタの最新位置を演算して記憶する位置演算記憶手段、前記リーダー入り集団を表示装置に表示する集団表示手段、として機能させる。【選択図】  図３
2006174929.tif 000002
【特許請求の範囲】
【請求項１】
ビデオゲームを制御するプログラムであって、コンピュータを、３次元仮想空間上でリーダーキャラクタを複数のエージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置からの入力情報に基づいて移動する集団移動手段、所定時間毎に、前記リーダー入り集団の移動中において前記各キャラクタに自然な移動を表現させるように前記各キャラクタに特定力を作用する特定力作用手段、前記特定力に基づいて前記各キャラクタの最新位置を演算して記憶する位置演算記憶手段、前記リーダー入り集団を表示装置に表示する集団表示手段、として機能させることを特徴とするキャラクタ集団移動制御プログラム。
【請求項２】
前記各キャラクタに作用する特定力は、反発力と凝集力と移動力とで構成されることを特徴とする請求項１に記載のキャラクタ集団移動制御プログラム。
【請求項３】
前記コンピュータを、更に、前記リーダーキャラクタを前記エージェント集団の重心に移動するリーダー移動手段、として機能させることを特徴とする請求項１又は請求項２に記載のキャラクタ集団移動制御プログラム。
【請求項４】
請求項１乃至請求項３に記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【請求項５】
ビデオゲームを制御するゲーム装置であって、３次元仮想空間上でリーダーキャラクタを複数のエージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置からの入力情報に基づいて移動する集団移動手段と、所定時間毎に、前記リーダー入り集団の移動中において前記各キャラクタに自然な移動を表現させるように前記各キャラクタに特定力を作用する特定力作用手段と、前記特定力に基づいて前記各キャラクタの最新位置を演算して記憶する位置演算記憶手段と、前記リーダー入り集団を表示装置に表示する集団表示手段と、を備えることを特徴とするゲーム装置。
【請求項６】
ビデオゲームを制御するプログラムであって、コンピュータを、３次元仮想空間上でリーダーキャラクタを複数の味方エージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置からの入力情報に基づいて敵集団の領域に移動して戦闘させる集団移動戦闘手段、前記リーダー入り集団と前記敵集団との戦闘中に前記敵集団が通過しないように前記リーダー入り集団の前線を形成する前線形成手段、前記リーダー入り集団と前記敵集団とを表示装置に表示する敵味方集団表示手段、として機能させることを特徴とするキャラクタ集団移動制御プログラム。
【請求項７】
前記コンピュータを、更に、前記リーダー入り集団の前記敵集団への戦闘突入後に、前記入力装置からの入力情報に基づいて戦闘していない残りの味方エージェントを移動する味方エージェント移動手段、として機能させることを特徴とする請求項６に記載のキャラクタ集団移動制御プログラム。
【請求項８】
前記コンピュータを、更に、前記敵集団の背後に仮想境界線を設定し、前記残りの味方エージェントが前記仮想境界線を越えた場合に、前記残りの味方エージェントを自動的に前記敵集団の背後まで回り込ませる味方エージェント回込手段、として機能させることを特徴とする請求項７に記載のキャラクタ集団移動制御プログラム。
【請求項９】
前記コンピュータを、更に、前記リーダー入り集団の移動後の戦闘時に、前記リーダーキャラクタは前記他の味方エージェントキャラクタと同様に索敵する索敵手段、として機能させることを特徴とする請求項６に記載のキャラクタ集団移動制御プログラム。
【請求項１０】
請求項６乃至請求項９に記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【請求項１１】
ビデオゲームを制御するゲーム装置であって、３次元仮想空間上でリーダーキャラクタを複数の味方エージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置からの入力情報に基づいて敵集団の領域に移動して戦闘させる集団移動戦闘手段と、前記リーダー入り集団と前記敵集団との戦闘中に前記敵集団が通過しないように、前記リーダー入り集団の前線を形成する前線形成手段と、前記リーダー入り集団の前記敵集団への戦闘突入後に、戦闘していない残りの味方エージェントを移動する味方エージェント移動手段と、前記敵集団の背後に仮想境界線を設定し、前記残りの味方エージェントが前記仮想境界線を越えた場合に、前記残りの味方エージェントを自動的に前記敵集団の背後まで回り込ませる味方エージェント回込手段と、前記リーダー入り集団と前記敵集団とを表示装置に表示する敵味方集団表示手段と、を備えたことを特徴とするゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、キャラクタ集団移動制御プログラム、記憶媒体及びゲーム装置に係り、特にプレイヤに３次元空間上の集団（群れ）を直接介入操作させ、集団の移動や戦闘をリアルに表現させるキャラクタ集団移動制御プログラム、記憶媒体及びゲーム装置に関するものである。
【背景技術】
【０００２】
家庭用ビデオゲームにおいては、３次元仮想空間上で、リーダーキャラクタと、このリーダーキャラクタに追随する複数のエージェントキャラクタからなるエージェント集団（群れ）と、を移動制御するものがある。
【０００３】
従来、キャラクタ集団移動制御には、第１の領域内に他のキャラクタが存在するときに、この他のキャラクタから所定距離だけ離れるための加速度、第２の領域内にリーダーキャラクタに追随するように移動する他のキャラクタが存在するときに、この他のキャラクタの移動する速さ及び方向を合わせるための加速度を、３次元仮想空間上のｘ、ｙ、ｚの成分毎に加算した総和加速度で、各キャラクタを目標点に移動させるものがある。これにより、各キャラクタが、第１又は第２の領域内に存在する他のキャラクタの移動状況に応じて速さや方向を変更しながら移動することができ、各キャラクタの移動の動作をリアルに表現させている。
また、キャラクタ集団移動制御には、入力装置において、方向を指示するための第１ボタン乃至第４ボタンのいずれのボタンも押下されていないときに、複数のゲームキャラクタを、特定のゲームキャラクタ又は特定の第１領域から離散するように移動させ、第１ボタンが押下されたときに、ゲームキャラクタを特定のゲームキャラクタ又は特定の第２領域の近傍に集結するように移動させるものがある。これにより、３次元仮想空間上で、特定のゲームキャラクタ又は特定の第１領域から離散した後、特定のゲームキャラクタ又は特定の第２領域に向かう方向が夫々異なる複数のゲームキャラクタに対し、第１ボタンによる一つのボタン操作で各方向と動作開始の指示を同時に指定し、複数のゲームキャラクタの移動に対して操作性の向上を図るとともに、信号処理部での負担の軽減を図ることができる。また、第２ボタン乃至第４ボタンのいずれかのボタンが押下されたときに、この第２ボタン乃至第４ボタンで指示された指定方向に、複数のゲームキャラクタを集団で移動させるようにすれば、この集団を指定することなく、第２ボタン乃至第４ボタンを、本来の方向を指示するためのボタンとして使用し、この集団を移動させることができるので、上述した離散・集結に加え、集団の移動操作性を向上させることができる。更に、入力装置が上下左右で構成された十字方向ボタンセットを備えており、第１ボタンを下ボタンとし、第２ボタン乃至第４ボタンを上左右ボタンとすれば、特定のゲームキャラクタはプレイヤ自身を表しており、十字方向ボタンセットの下ボタンは、その物理的配設位置からプレイヤの元に集結するという感覚と一致しているので、下ボタンは特定のゲームキャラクタへの集結用ボタンであることが分かり易く、上左右ボタンは十字方向ボタンの本来の方向指示用ボタンとして用いることができる。
更に、キャラクタ集団移動制御には、コンピュータを、３次元仮想空間で動作する非表示の３次元ポリゴンモデルのモーションデータを付与するモデルデータ付与手段、３次元ポリゴンモデルの頂点に追随するように頂点に対応付けられたキャラクタに運動性能を付与する運動性能付与手段、キャラクタの３次元仮想空間上の位置を演算する位置演算手段、として機能させるものがある。これにより、集団を構成する複数のキャラクタが非表示の３次元ポリゴンモデルの頂点に追随するように運動性能が付与され、各キャラクタ毎にモーションを用意する必要がなく、処理の簡素化が図られるとともに、キャラクタ全体で複雑な集団形状をとりながら、あたかも、１つの生物のように動く様子を表現することができる。
【特許文献１】特許第３１６３４９６号公報
【特許文献２】特開２００２−６６１３１号公報
【特許文献３】特開２００４−６２６７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、従来、キャラクタ集団移動制御にあっては、上記の特許文献１及び特許文献３に記載された発明は、プレイヤが集団（群れ）の移動を直接介入操作できるものではなく、コンピュータにより自動的に集団が移動処理されるものなので、戦略をながめて楽しむという点では向いているものの、集団の移動や戦闘場面に直接介入して楽しむという点では不向きであるという不都合があった。
【０００５】
また、上記の特許文献１に記載された発明では、各キャラクタの集団は、リーダーキャラクタに追随しながら互いに距離をとり、速度と方向とを変化させながら移動するので、追い越しや隊列内の配置が変わることもあり、自然な移動が表現することができるが、重心という考え方が存在しないので、場合によっては、集団の背後（後方）のキャラクタが大きく拡散し、画面に集団全体が表れないこともあった。これに対し、上記の特許文献３に記載された発明では、各キャラクタが非表示の全体ポリゴンモデルの各頂点に追随するようにしたので、各キャラクタが大きく拡散することはなくなり、隊列の形状を保つことができるようになったが、各キャラクタには、隊列内の本来の整列位置（即ち、移動目標となるキャラクタ固有の頂点）が定められているので、基本的には、隊列内の配置が変わることはなく、変化に富んだ移動とまでは言えなかった。
【０００６】
更に、上記の特許文献２に記載された発明では、十字方向ボタンセットにより直接的に集団を操作することができたが、基本的には、リーダーキャラクタに追随する上記の特許文献１に記載された発明を引き継ぐものであるので、集団全体で真っ直ぐ進め・止まれ程度の操作が限界であった。これは、上記と同様に、重心という考え方が存在しないので、キャラクタが移動中に拡散したり、集団全体が表示されないという問題が残り、更には、戦闘状態への移行後は、最終的に乱戦状態となるので、拡散したキャラクタのプログラム処理上での状況把握が困難であり、外部からの集団としての操作が、もはや、困難となるからである。
【課題を解決するための手段】
【０００７】
この発明は、ビデオゲームを制御するプログラムであって、コンピュータを、３次元仮想空間上でリーダーキャラクタを複数のエージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置からの入力情報に基づいて移動する集団移動手段、所定時間毎に、前記リーダー入り集団の移動中において前記各キャラクタに自然な移動を表現させるように前記各キャラクタに特定力を作用する特定力作用手段、前記特定力に基づいて前記各キャラクタの最新位置を演算して記憶する位置演算記憶手段、前記リーダー入り集団を表示装置に表示する集団表示手段、として機能させることを特徴とする。
また、ビデオゲームを制御するプログラムであって、コンピュータを、３次元仮想空間上でリーダーキャラクタを複数の味方エージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置からの入力情報に基づいて敵集団の領域に移動して戦闘させる集団移動戦闘手段、前記リーダー入り集団と前記敵集団との戦闘中に前記敵集団が通過しないように前記リーダー入り集団の前線を形成する前線形成手段、前記リーダー入り集団と前記敵集団とを表示装置に表示する敵味方集団表示手段、として機能させることを特徴とする。
【発明の効果】
【０００８】
この発明のキャラクタ集団移動制御プログラム、記憶媒体及びゲーム装置は、集団の隊列を大きく乱さずに全体を表示できると同時に、適度に隊列内での追い越しや配置が入れ替わる様子を表現することができ、リーダーキャラクタを中心とした複雑な集団の移動や戦闘を、直感的に分かり易い操作により動的に楽しませることができるとともに、よりリアルに表現させることができる。
【発明を実施するための最良の形態】
【０００９】
この発明は、リーダーキャラクタを中心とした複雑な集団の移動や戦闘を直感的に分かり易い操作により動的に楽しませる目的を、プレイヤに集団を直接介入操作させて実現するものである。
以下図面に基づいてこの発明の実施例を詳細且つ具体的に説明する。
【実施例】
【００１０】
図１〜図２４は、この発明の実施例を示すものである。
【００１１】
図２１において、２はビデオゲームが実行される家庭用ビデオゲーム装置（以下「ゲーム装置」という）である。
【００１２】
このゲーム装置２は、ゲーム装置本体４に、スピーカ６を内蔵した表示装置としてのテレビモニタ８及びコントローラパッド等の入力装置１０を接続している。ゲーム装置本体４は、ＣＤ−ＲＯＭやＤＶＤ等の記録媒体１２を装着可能な媒体読取部１４（図２４参照）を有している。この媒体読取部１４に記録媒体１２を装着することにより、記録媒体１２に記録されたゲームプログラムやゲームデータが自動的にゲーム装置本体４内の記憶メモリ（ＲＡＭ）にロードされる。テレビモニタ８は、入力装置１０からの入力情報に基づいてゲーム上での集団（群れ）等を表示するものである。入力装置１０は、ゲーム上での集団（群れ）等を移動させるものである。
【００１３】
図２２、図２３に示す如く、入力装置１０の入力装置本体１６には、操作部として、ゲームを開始するためのスタートボタン１８や、ゲームキャラクタを操作したり、ゲーム装置本体４からの選択問い合わせ等に応答するための、□ボタン２０、△ボタン２２、○ボタン２４、×ボタン２６、及び、↑ボタン２８、→ボタン３０、←ボタン３２、↓ボタン３４で構成される十字方向ボタンセット３６、セレクトボタン３８、Ｒ１ボタン４０、Ｒ２ボタン４２、Ｌ１ボタン４４、Ｌ２ボタン４６、そして、２つの右側、左側アナログスティック４８、５０や、アナログモードスイッチ５２等の各種ボタン類が配置されている。左側アナログスティック５０は、集団（群れ）の移動方向を指定するものである。□ボタン２０は、各キャラクタが刀を振りかざす等の攻撃を行わせるものである。
【００１４】
図２４に示す如く、ゲーム装置本体４は、ビデオゲームのプログラムを実行するためのコンピュータとして、装置全体の制御を行うＣＰＵブロック５４を備えている。このＣＰＵブロック５４は、ゲーム装置本体４内の各部とのデータ転送を主に制御するＳＣＵ（Ｓｙｓｔｅｍ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）５６、中央演算処理装置として高速クロックで作動するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５８、ゲーム装置本体４の基本制御動作が記憶されたＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６０、ＣＰＵ５８のワークエリアとして働くと共に記録媒体１２に記録されたゲームプログラム及び種々のデータを一時的に記憶するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６２、及び、これらを接続する内部バス６４で構成されている。
【００１５】
また、ＳＣＵ５６には、外部バス６６が接続している。この外部バス６６は、入力装置１０からの入力を受信してＣＰＵブロック５４へ入力情報を転送する入力受信部６８、図示しないサブＣＰＵを備えて記録媒体１２に記録されたゲームプログラムを読み取りＣＰＵブロック５４へ転送するＣＤ−ＲＯＭドライブ等の媒体読取部１４、グラフィック処理を行うＣＰＵ及びＶＲＡＭを備えてＣＰＵブロック５４から送出された情報に従って光源処理等を行い３次元フィールドでの描画処理を施す画像処理部７０、並びに、図示しないサブＣＰＵを備え、例えば、バックミュージックや戦闘音等の音響を処理する音響処理部７２に接続している。また、入力受信部６８には、入力装置１０が接続している。画像処理部７０には、テレビモニタ８が接続している。音響処理部７２には、テレビモニタ８に内蔵されたスピーカ６が接続している。
【００１６】
この実施例のビデオゲームを制御するプログラムは、コンピュータであるＣＰＵブロック５４を、３次元仮想空間上でリーダーキャラクタを複数のエージェントキャラクタからなるエージェント集団（群れ）に含めて形成したリーダー入り集団（群れ）を入力装置１０からの入力情報に基づいて移動する集団移動手段、所定時間毎に、前記リーダー入り集団の移動中において前記各キャラクタに自然な移動を表現させるように前記各キャラクタに特定力を作用する特定力作用手段、前記特定力に基づいて前記各キャラクタの最新位置を演算して記憶する位置演算記憶手段、前記リーダー入り集団を表示装置としてのテレビモニタ８に表示する集団表示手段、として機能させる。
【００１７】
前記特定力は、以下の（１）から（３）の３つの力から構成される。
（１）他のキャラクタとの衝突を回避する力である反発力（拡散方向の力）。
（２）エージェント集団（群れ：部隊）に対して重心に向かう力である凝集力（集団でまとまろうとする力）。
（３）入力装置１０の操作部やプログラムの指定等により各キャラクタの指定方向に移動する力である移動力。
【００１８】
また、この実施例のビデオゲームを制御するプログラムは、前記コンピュータであるＣＰＵブロック５４を、更に、前記リーダーキャラクタを前記エージェント集団の重心に移動するリーダー移動手段、として機能させる。
【００１９】
前記記録媒体１２は、ゲーム装置２を、前記集団移動手段、前記特定力作用手段、前記位置演算記憶手段、前記集団表示手段、及び、前記リーダー移動手段として機能させる、プログラムを記録している。
【００２０】
この実施例のビデオゲームを制御するゲーム装置２は、３次元仮想空間上でリーダーキャラクタを複数のエージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置１０からの入力情報に基づいて移動する集団移動手段と、所定時間毎に、前記リーダー入り集団の移動中において前記各キャラクタに自然な移動を表現させるように前記各キャラクタに特定力を作用する特定力作用手段と、前記特定力に基づいて前記各キャラクタの最新位置を演算して記憶する位置演算記憶手段と、前記リーダー入り集団を表示装置としてのテレビモニタ８に表示する集団表示手段と、前記リーダーキャラクタを前記エージェント集団の重心に移動するリーダー移動手段と、を備えている。
【００２１】
更に、この実施例のビデオゲームを制御するプログラムは、前記コンピュータであるＣＰＵブロック５４を、３次元仮想空間上でリーダーキャラクタを複数の味方エージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置１０からの入力情報に基づいて敵集団の領域に移動して戦闘させる集団移動戦闘手段、前記リーダー入り集団と前記敵集団との戦闘中に前記敵集団が通過（交錯）しないように前記リーダー入り集団の前線を形成する前線形成手段、前記リーダー入り集団と前記敵集団とを表示装置としてのテレビモニタ８に表示する敵味方集団表示手段、として機能させる。
【００２２】
更にまた、この実施例のビデオゲームを制御するプログラムは、前記コンピュータであるＣＰＵブロック５４を、前記リーダー入り集団の前記敵集団への戦闘突入後に、入力装置１０からの入力情報に基づいて戦闘していない残りの味方エージェントを移動する味方エージェント移動手段、として機能させる。
【００２３】
また、この実施例のビデオゲームを制御するプログラムは、コンピュータであるＣＰＵブロック５４を、前記敵集団の背後（後方）に仮想境界線を設定し、前記残りの味方エージェント（集団であっても良い）が前記仮想境界線を越えた場合に、前記残りの味方エージェントを自動的に前記敵集団の背後まで回り込ませる味方エージェント回込手段、として機能させる。
【００２４】
更に、この実施例のビデオゲームを制御するプログラムは、前記コンピュータであるＣＰＵブロック５４を、前記リーダー入り集団の移動後の戦闘時に、前記リーダーキャラクタは前記他の味方エージェントキャラクタと同様に索敵する索敵手段、として機能させる。
【００２５】
前記記録媒体１２は、ゲーム装置２を、上述の各機能の他に、前記集団移動戦闘手段、前記前線形成手段、前記敵味方集団表示手段、前記味方エージェント移動手段、前記味方エージェント回込手段、前記索敵手段としても機能させる、プログラムを記録している。
【００２６】
また、この実施例のビデオゲームを制御するゲーム装置２は、３次元仮想空間上でリーダーキャラクタを複数の味方エージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置からの入力情報に基づいて敵集団の領域に移動して戦闘させる集団移動戦闘手段と、前記リーダー入り集団と前記敵集団との戦闘中に前記敵集団が通過（交錯）しないように、前記リーダー入り集団の前線を形成する前線形成手段と、前記リーダー入り集団の前記敵集団への戦闘突入後に、戦闘していない残りの味方エージェントを移動する味方エージェント移動手段と、前記敵集団の背後に仮想境界線を設定し、前記残りの味方エージェントが前記仮想境界線を越えた場合に、前記残りの味方エージェントを自動的に前記敵集団の背後まで回り込ませる味方エージェント回込手段と、前記リーダー入り集団と前記敵集団とを表示装置としてのテレビカメラ８に表示する敵味方集団表示手段と、を備えている。
【００２７】
即ち、この実施例において、ビデオゲームを制御するプログラムは、コンピュータであるＣＰＵブロック５４を、３次元仮想空間上でリーダーキャラクタを複数のエージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置１０からの入力情報に基づいて移動する集団移動手段、所定時間毎に、前記リーダー入り集団の移動中において前記各キャラクタに自然な移動を表現させるように前記各キャラクタに特定力を作用する特定力作用手段、前記特定力に基づいて前記各キャラクタの最新位置を演算して記憶する位置演算記憶手段、前記リーダー入り集団を表示装置に表示する集団表示手段、として機能させ、又は、上述の各機能に、前記リーダーキャラクタを前記エージェント集団の重心に移動するリーダー移動手段、として機能させる。これにより、リーダー入り集団の移動中においては、各所定時間（フレーム）毎で、全てのキャラクタに、自然な移動を表現させるように、前記特定力としての、上述した反発力と凝集力と移動力とが加えられる。
【００２８】
ここで、前記所定時間（フレーム）とは、画像処理の時間的単位であり、描画の際の、いわゆる「コマ」のことである。この実施例において、１フレームの時間は、テレビモニタ８の垂直帰線周期と一致した１／６０秒（１６．６ミリ秒）に一度の周期でプログラム上呼び出される垂直帰線割込（Ｖｓｙｎｃ）の２回分の時間（１／３０秒）に相当するものとする。
【００２９】
上記の（１）の反発力において、図８に示す如く、例えば、エージェントキャラクタＡについての反発力は、エージェントキャラクタＡの位置を中心とした、例えば、半径３ｍ程度の円の範囲内に属する他のエージェントキャラクタに対して反発力が発生する。この反発力は、各エージェントキャラクタについて別々に発生する。
【００３０】
この場合、一方のエージェントキャラクタの位置をａとし、他方のエージェントキャラクタの位置をｂとし、反発力の発生限界距離（これ以上離れていたら反発力は、発生しない距離）をｄとし、最大反発力の大きさをｆとすると、以下のようになる。
［数１］
１＝｜ａ−ｂ｜
ｖ＝（ａ−ｂ）／１
反発力＝ｖ＊ｆ＊ｍａｘ（ｄ−１、０）／ｄ
ここで、ｖは、ａからｂに向かう単位ベクトル（方向のみの意味を持ち、大きさは１）。ｆ＊ｍａｘ（ｄ−１、０）／ｄの部分は、図９に示すようになる。なお、ここで、｜ａ−ｂ｜は、（ａ−ｂ）の絶対値である。また、ｍａｘ（ｄ−１、０）は、（ｄ−１）と（０）とのいずれか大きい値の方を選択するという意味である。このとき、図９に示すように、反発力と距離とが一定比率で変化するとしても良いが、例えば、２次関数のように、距離が短いほど反発力が急激に増加するように変化させても良い。
【００３１】
また、上記の（２）の凝集力において、図１０に示す如く、ここでいう集団の重心とは、いわゆる質点の重心であり、各エージェントキャラクタの水平成分（ｘ、ｚ）座標を成分毎に足して平均化した座標値をとる。なお、垂直成分ｙは、地表面の高さとする。即ち、重心とは、各エージェントキャラクタを含むような矩形又は円等の形状の単なる外枠の中心とは必ずしも一致しない。なお、簡易的に、このような外枠の中心で処理しても良いが、例えば、密集している部分から遠く離れてしまったキャラクタが１つ存在するとき等は、群れの重心は、密集している部分に近い方が望ましいことから、やはり本来的な重心の考え方を用いるべきである。
【００３２】
この場合、エージェントキャラクタＡの位置をａとし、集団の重心をｃとし、最大凝集力の大きさをｆとすると、以下のようになる。
［数２］
ｖ＝（ｃ−ａ）／｜ｃ−ａ｜
凝集力＝ｖ＊ｆ
【００３３】
更に、上記の（３）の移動力において、図１１に示す如く、例えば、入力装置１０の左側アナログスティック５０を指定方向としての左斜め前方に傾けた場合に、エージェントキャラクタの現在の速度をｖ０とし、指定移動速度をｖ１とし、ｖ０からｖ１に変化するのに要する時間をｄｔとし、発生可能な最大加速度の大きさをａｃｃとすると、以下のようになる。
［数３］
ｖ＝（ｖ１−ｖ０）／ｄｔ
移動力＝ｖ／｜ｖ｜＊ｍｉｎ（｜ｖ｜、ａｃｃ）
ここで、ｖ／｜ｖ｜は、単位ベクトルである。ｖは、加速度である。ｍｉｎ（｜ｖ｜、ａｃｃ）により、加速度ｖが最大加速度ａｃｃを超えないようにしている。
【００３４】
また、ここで、運動方程式Ｆ＝ｍα（Ｆ：力、ｍ：質量、α：加速度）において、この実施例におけるゲームの３次元仮想空間では、エージェントキャラクタの質量ｍは、１として考えて、力＝加速度とみなして計算する。
【００３５】
各座標成分（ｘ、ｙ、ｚ）毎に上記の（１）から（３）の力、即ち、加速度を求め、これらを各座標成分毎に加算して総和加速度を求め、下記の数式の［数４］を用いて各キャラクタの最新速度及び最新位置を演算し、この最新速度及び最新位置をＲＡＭ６２に格納する。キャラクタの移動開始前の初期状態の速度（即ち０）、指定移動速度（上記の（３）の移動力のｖ１）及び位置（整列状態での座標値）は、予め与えられているものとする。
【００３６】
現在の総和加速度αが与えられる１つ前（前回のフレーム時）の速度Ｖ０及び位置Ｐ０を用いて、オイラー法を用いた運動方程式を表す下記の数式の［数４］により、対象エージェントキャラクタの現在の速度Ｖ１及び位置Ｐ１を、各（ｘ、ｙ、ｚ）成分毎に演算する。
【００３７】
なお、下記の数式の［数４］において、Δｔは、前回のフレーム時から今回のフレーム時までの時間（１／３０秒）を表しており、前回の速度Ｖ０及び位置Ｐ０は、ＲＡＭ６２に格納されている。
［数４］
Ｖ１＝Ｖ０＋α・Δｔ
Ｐ１＝Ｐ０＋Ｖ０・Δｔ＋０．５・α・Δｔ２
【００３８】
これを各エージェントキャラクタ毎に求め、上記の数式の［数４］により得られた最新位置Ｐ１で、エージェントキャラクタを描画する。
【００３９】
従って、上記の（１）の反発力と上記の（２）の凝集力とは、相反する力となり、各フレーム毎に上記の（１）から（３）の各力は、変化する。前記重心は、微妙に揺れ動くので、上記の（２）の重心に向かう凝集力も揺れ動く。これにより、集団には、揺れ動く感じや、ざわざわという感じを出すことができる。
【００４０】
また、この実施例のビデオゲームを制御するプログラムは、前記コンピュータであるＣＰＵブロック５４を、前記リーダーキャラクタを前記エージェント集団の前記重心に移動するリーダー移動手段、として機能させる。
【００４１】
つまり、図１２に示す如く、リーダーキャラクタを先頭とするとエージェント集団全体が画面に表せない（映らない）場合があり得る。また、実際に武将（リーダーキャラクタ）がエージェント集団を率いて移動する場面を考えた場合、武将は、集団の先頭ではなく、周りに護衛兵を配置させて、中央で指揮を取るとした方が現実的であるとも考えられる。
【００４２】
そこで、この実施例においては、図１３に示す如く、エージェント集団全体に重心を設け、重心が表示される画面の中央となるように、自動的にカメラの位置及び方向を合わせ更に、リーダーキャラクタの位置が重心と一致するように、この重心に向かう力として上記の（２）の凝集力を作用させるとともに、リーダーキャラクタに特別な力（後述のリーダーキャラクタを重心に向かわせる力）を作用させる。
【００４３】
エージェント集団の各エージェントキャラクタの位置は、初期状態（移動開始前の整列状態）では、例えば、エージェント集団の形状が矩形等となるように配置が決まっているが、一旦移動が開始されると、上記の３つの力が各フレーム毎に様々に変化しながら働いて、具体的な位置が決まり表示される。このため、エージェント集団全体の形状や各キャラクタの位置関係・配列順は、一定でなく、実際の群れのような変化に富んだ移動を表現できる。
【００４４】
このとき、エージェント集団の先頭を走るキャラクタは存在するが、このキャラクタはいわゆるリーダーキャラクタではなく、エージェント集団の重心に存在するリーダーキャラクタへ向かう力（上記の（２）の凝集力）が働いている。
【００４５】
また、リーダーキャラクタには、上記の３つの力とは別に、さらに以下の力が各フレーム毎で作用し、上記の３つの力との総和加速度を求めて、同様に、オイラー法の上記の数式の［数４］を用いて最新速度及び最新位置を演算し、ＲＡＭに記憶する。
【００４６】
つまり、リーダーキャラクタを小隊重心に向かわせる力において、エージェントキャラクタ（ここでは、リーダーキャラクタのこと）の位置をｐとし、エージェントキャラクタの現在速度をｖ０とし、発生可能な最大加速度をａｃｃとし、小隊重心位置をｃとし、小隊重心の移動速度をｖ１とし、小隊重心に接近する際の相対速度（＝小隊重心から見たエージェントキャラクタの速度）をｆ（１）とすると、以下のようになる。
［数５］
ｆ（ｌ）：０≦１＜ｄのとき、ｖ＊１／ｄ
ｄ＜１のとき、ｖ
ここで、ｖは最大相対速度であり、ｄは接近速度の減速を開始する距離であり、１はエージェントキャラクタと小隊重心との距離である。
【００４７】
そして、相対速度がｆ（１）になるまでに要する時間をｄｔとすると、以下のようになる。
［数６］
ｖ２＝ｖ０−ｖ１
１＝｜ｃ−ｐ｜
ｖ３＝（ｃ−ｐ）／１
ｖ４＝（（ｖ３＊ｆ（１））−ｖ２）／ｄｔ
小隊重心に向かわせる力＝ｖ４／｜ｖ４｜＊ｍｉｎ（｜ｖ４｜、ａｃｃ）
【００４８】
なお、上式の意図するところは、図１４（Ａ）、図１４（Ｂ）に示す如く、エージェントキャラクタｘが、υ方向に速度υで移動中に、υ‘方向（重心方向）に速度υ‘が与えられたとき、υ‘−υ方向に力を作用させれば、υ‘方向に移動できるということである。
ここで（υ‘−υ）／ｄｔ＝αは、加速度、すなわち、質量１の場合の重心に向かわせる力ということになる。また、この加速度αは、重心を向いていない（υ‘が重心方向であって上記υ‘−υの方向）。この点、上記の（２）の凝集力（即ち加速度）が重心を向いていることとは、相違する。
【００４９】
しかし、この段階では、未だ、エージェントキャラクタの方向が加味されておらず、エージェントキャラクタは、方向を持たないパーティクル（質点）として把握される。エージェントキャラクタにも方向があるため、逆方向への瞬時の変更を表現すると不自然となり、徐々に方向を変更する様子を表現する必要があるためである。
【００５０】
このため、この実施例においては、各フレーム毎にエージェントキャラクタの方向を変化させるために、エージェントキャラクタに対するパーティクル（質点）的な制御に方向制御を加味した、方向を持ったパーティクル制御を実行する。これについては、公知の手法（例えば、上記の特許文献３である特開２００４−６２６７６号公報）を用いることで、進行方向に応じた向きに、エージェントキャラクタを回転させて表現することが可能となる。
【００５１】
また、エージェント集団の戦闘中において、図１５、図１６に示す如く、上記の（３）の前方に移動する移動力（図１１参照）と、上記の（１）の敵集団の前衛兵士から受ける反発力が集団に作用しているため、このままでは、上記の（１）と（３）との双方の力により、集団が押し潰される形となり、徐々に左右に広がっていく（特に、後衛兵士）ので、集団に重心を設定して、これに向かう力である上記の（２）の凝集力を各キャラクタに作用させることで、拡散を防ぐようにした。なお、前線で戦闘中の前衛兵士は、基本的には戦闘優先で処理され、上記の（３）の移動力の内、左右方向への移動は、働かないものとする（左側アナログスティック５０を横に傾けても移動しない）。
【００５２】
更に、この実施例のビデオゲームを制御するプログラムは、コンピュータであるＣＰＵブロック５４を、３次元仮想空間上でリーダーキャラクタを複数の味方エージェントキャラクタからなるエージェント集団に含めて形成したリーダー入り集団を入力装置１０からの入力情報に基づいて敵集団の領域に移動して戦闘させる集団移動戦闘手段、前記リーダー入り集団と前記敵集団との戦闘中に前記敵集団が通過（交錯）しないように前記リーダー入り集団の前線を形成する前線形成手段、前記リーダー入り集団と前記敵集団とを表示装置であるテレビカメラ８に表示する敵味方集団表示手段、として機能させる。
【００５３】
つまり、図１７に示す如く、先ず、視野角θ（例えば９０度）で所定半径（例えば５ｍ）内に存在する自分以外のエージェントキャラクタを探す。
【００５４】
次に、仮に、自分に一番近い前方にいる他のエージェントキャラクタが敵エージェントキャラクタの場合は、戦闘状態に移行し、また、そうでなければ、仮に、自分に一番近い前方にいる他のエージェントキャラクタが味方エージェントキャラクタの場合には、支援状態に移行し、そして、そうでなければ、自分の前方に他のエージェントキャラクタがいない場合なので、移動状態のままとする。
【００５５】
ここで、前記支援状態とは、これにより、前線に存在する戦闘状態の前衛キャラクタの攻撃力・防御力等のキャラクタ変数をアップさせる手法も考えられるが、この実施例においては、味方エージェント集団の各キャラクタ間に敵集団のエージェントキャラクタを入り込ませないように、その場で待機している状態をいう。
【００５６】
なお、このプログラム処理において、各キャラクタが戦闘中か否かの判断については、戦闘中、支援中又は移動中という状態を示し、ＲＡＭ６２に記憶され、随時更新される状態変数を参照して判断される。
【００５７】
以上の説明により、結果的に、集団には、前記前線のようなものができる。このように、実際には、ローカルな制御を各エージェントキャラクタに与えているが、結果的に、グローバルな構造ができあがる処理を、一般に「創発的な制御」という。このように前線が形成されるように処理する上記処理の目的は、乱戦になるのを防ぐためである。
【００５８】
従来の方法では、戦闘開始後は、敵味方の双方が入り乱れた乱戦状態となるので、仮に、その時点まで集団を操作できる処理を設計できたとしても、その後、そのプレイヤは、それまでどの集団（部隊）を操作しているかわからなくなってしまう。つまり、集団（部隊）の原形がわからなくなってしまうのである。
【００５９】
これに対して、戦闘状態となったときに、戦闘する前衛兵士の前線が形成され、その背後（後方）に位置する後衛兵士がカバーに回るような処理をすれば、集団（部隊）の固まりがはっきり視認できるようになる。
【００６０】
なお、攻撃ボタン（例えば、□ボタン２０）を押すと、プレイヤが、現在操作中の集団（群れ）の内、ここでいう前線の前衛兵士のみが、刀を振り下ろす等の攻撃を行い、そのモーションが表示される。
【００６１】
より具体的には、自分の目の前に味方のエージェントキャラクタがいない状態（敵エージェントキャラクタはいてもいなくてもよい）のエージェントキャラクタは、□ボタン２０の押下により刀を振る。この場合、必ずしも、一列目が刀を振るというわけではない。図１８には、それを例示する。
【００６２】
また、この実施例のビデオゲームを制御するプログラムは、前記コンピュータであるＣＰＵブロック５４を、前記リーダー入り集団の前記敵集団への戦闘突入後に、入力装置１０からの入力情報に基づいて戦闘していない残りの味方エージェントを移動する味方エージェント移動手段、として機能させ、又は、前記敵集団の背後に仮想境界線を設定し、前記残りの味方エージェントが前記仮想境界線を越えた場合に、前記残りの味方エージェントを自動的に前記敵集団の背後（後方）まで回り込ませる味方エージェント回込手段、として機能させる。
【００６３】
つまり、図１９に示す如く、右方の（ａ）と上方の（ｂ）は、左側アナログスティック５０を右方、上方と順に傾けたとき（又は、十字方向ボタンセット３６を右、上と順に押したとき）に、後衛兵士に働く力の方向、即ち移動方向を示している。
【００６４】
また、図２０に示す如く、（ａ）、（ｂ）と左側アナログスティック５０を傾けた後、本来であれば下方向への左側アナログスティック５０の操作が必要となるが、下方向への操作を必要とすると、そのままでは、現在戦闘中の集団本体の下方向の移動（即ち逃走）までもが重なって処理されてしまう。
【００６５】
このときに、集団本体は動かしたくないので、左側アナログスティック５０の下方向への操作は、集団本体を動かす操作のままとし、後衛兵士の回り込みに関しては、左側アナログスティック５０の下方向への操作を必要としないようにする。即ち、敵集団の背後又は敵集団の内部を通るように、適度な仮想境界線を設け、左側アナログスティック５０の（ｂ）の方向への操作により、後衛兵士が移動して仮想境界線を越えた場合に、自動的に敵集団の背後又は側面に回り込み、そして、敵集団の重心に向かって移動するようにした（その後は、戦闘状態となる）。
【００６６】
ここで、前記仮想境界線とは、例えば、敵集団と味方エージェント集団との双方の重心を結ぶ線に直角な線であって味方エージェント集団本体から向かって敵集団の一番後ろを通る直線、又は、敵集団の背後とはならないが、双方の重心を結ぶ線に直角な線であって、敵集団の重心を通る直線等であり、一定の攻撃ができる程度の自動の回り込み開始が可能であれば、敵集団の背後であっても、又は、集団の内部を通る線であっても問題なく、曲線であっても良い。
【００６７】
また、エージェントキャラクタの拡散を防ぐ他の方法としては、例えば、集団の形状としての仮想枠を用意して、その仮想枠の中からはみ出ないようにする処理が考えられる。しかし、この方法では、現在戦闘していない集団の一部のみを移動させる（回り込みの）操作をすることは、困難となる。
【００６８】
そこで、この実施例のビデオゲームを制御するプログラムは、コンピュータであるＣＰＵブロック５４を、前記敵集団の背後（後方）に仮想境界線を設定し、残りの味方エージェントが前記仮想境界線を越えるまで移動した後に、前記残りの味方エージェントを自動的に前記敵集団の背後（後方）まで回り込ませる味方エージェント回込手段、として機能させる。敵集団の背後（後方）に回り込む力においては、上記の数式の［数５］及び［数６］のリーダーキャラクタに働く力の式を、回り込ませる各エージェントに適用し、小隊重心を敵小隊重心に置き換えて、「各エージェントを敵小隊重心に向かわせる力」として求めて作用させる。
【００６９】
次に、この実施例のゲーム装置２の動作について、図１〜図７のフローチャートを参照して、プレイヤの集団（リーダー入り集団：味方部隊）が移動した後、コンピュータ（ＣＰＵブロック５４）側の集団（敵集団：敵部隊）と戦闘する場合について説明する。
【００７０】
なお、ゲーム装置本体４には、既に、記録媒体１２が挿入されたゲームプログラム、ゲームデータが、ＣＰＵブロック５４内のＲＡＭ６２に格納され、初期設定の処理がなされているものとする。また、説明を簡単にするために、図１〜図７のフローチャートにおいては、プレイヤの集団の動作を中心に記載して、コンピュータの集団についても同様の処理がなされるものとして、その記載を省略した。
【００７１】
図１のフローチャートに示す如く、プログラムがスタートすると（ステップ１０２）、先ず、初期設定を行う（ステップ１０４）。このステップ１０４における初期設定は、各小隊が移動停止状態であり、各小隊の重心座標を設定する。つまり、全てのエージェントキャラクタの速度・加速度を０、北向き（例）、エージェントキャラクタの移動停止状態、ポリゴンデータ等の各種データをロードする。なお、前記移動停止状態とは、移動又は停止の状態である。
【００７２】
そして、この初期設定の後は、割り込みが発生したか否かを判断する（ステップ１０６）。なお、この時間間隔は、上述した通り、この実施例では、垂直帰線割込２回分に相当する１フレームの時間とする。
【００７３】
このステップ１０６がＮＯで、割り込みが発生していない場合には、メイン処理を行う（ステップ１０８）。
【００７４】
このステップ１０８におけるメイン処理においては、例えば、左側アナログスティック５０により入力され入力受信部６８により、受信後に転送されたその傾き情報を、ＲＡＭ６２に一時記憶して随時更新する処理を行う。その他のボタンの押下による入力情報に対するその他の処理やゲーム効果音を音響制御部７２に合成させるための音響処理等の処理も、ここで実行するものとする。
【００７５】
一方、前記ステップ１０６がＹＥＳで、割り込みが発生している場合には、集団移動戦闘処理のサブルーチンを実行する（ステップ１１０）。
【００７６】
そして、前記ステップ１０８でのメイン処理の後、又は、前記ステップ１１０での集団移動戦闘処理サブルーチンの実行後は、入力装置１０の終了ボタンが押下しているか否かを判断し（ステップ１１２）、このステップ１１２がＮＯで、終了ボタンが押下していない場合には、前記ステップ１０６に戻し、一方、このステップ１１２がＹＥＳで、終了ボタンが押下している場合には、プログラムをエンドとする（ステップ１１４）。
【００７７】
図１の前記ステップ１１０における集団移動戦闘処理のサブルーチンにおいては、図２のフローチャートに示す如く、各小隊全体で１つの小隊状態変数、各エージェントキャラクタで１つのエージェント状態変数が、ＲＡＭ６２で用意されている。
【００７８】
図２のフローチャートに示す如く、プログラムがスタートすると（ステップ２０２）、先ず、全小隊が終了か否かを判断する（ステップ２０４）。
【００７９】
このステップ２０４がＮＯで、全小隊が終了していない場合には、エージェント処理のサブルーチンを実行し（ステップ２０６）、そして、小隊処理のサブルーチンを実行し（ステップ２０８）、そして、前記ステップ２０４に戻す。
【００８０】
一方、前記ステップ２０４がＹＥＳで、全小隊が終了している場合には、画面枠内に表示可能なキャラクタに対して全画面表示処理を行い（ステップ２１０）、プログラムをリターンする（ステップ２１２）。
【００８１】
図２の前記ステップ２０６におけるエージェント処理のサブルーチンにおいては、図３のフローチャートに示す如く、プログラムがスタートすると（ステップ３０２）、先ず、全エージェントキャラクタが終了か否かを判断する（ステップ３０４）。
【００８２】
このステップ３０４がＮＯで、全エージェントキャラクタが終了していない場合には、エージェント状態処理のサブルーチンを実行し（ステップ３０６）、次いで、反発力の演算をし（ステップ３０８）、さらに、上記の（２）の凝集力の演算をし（ステップ３１０）、そして、エージェントキャラクタが戦闘状態か否かを判断する（ステップ３１２）。
【００８３】
このステップ３１２がＮＯで、エージェントキャラクタが戦闘状態でない場合には、プレイヤが小隊を操作しているか否かを判断し（ステップ３１４）、このステップ３１４がＹＥＳで、プレイヤが小隊を操作している場合には、左側アナログスティック５０の傾きの値からエージェントキャラクタの移動速度を設定する（ステップ３１６）。
【００８４】
一方、前記ステップ３１４がＮＯで、プレイヤが小隊を操作していない場合には、小隊の移動速度からエージェントキャラクタの移動速度を設定する（ステップ３１８）。
【００８５】
前記ステップ３１６又は前記ステップ３１８で、エージェントキャラクタの移動速度を設定した後は、上記の（３）の移動力を演算する（ステップ３２０）。
【００８６】
このステップ３２０で移動力を演算した後、重心力処理のサブルーチンを実行し（ステップ３２２）、また、総和加速度の演算を行い（ステップ３２４）、さらに、各キャラクタの最新速度及び最新位置を演算してＲＡＭに記憶し（ステップ３２６）、そして、体の向き合わせ処理を行って（ステップ３２８）、前記ステップ３０４に戻す。
【００８７】
前記ステップ３１２がＹＥＳで、エージェントキャラクタが戦闘状態の場合には、エージェント戦闘処理を実行する（ステップ３３０）。ここでは、例えば、□ボタン２０の押下があったときに、戦闘中のエージェントキャラクタのみが、攻撃動作を開始する処理や、これによる敵エージェントキャラクタのダメージ処理、逆に、敵エージェントキャラクタから攻撃を受けたときのダメージ処理や防御処理等が実行され、その後、前記ステップ３２４の総和加速度の演算を実行する。
【００８８】
一方、前記ステップ３０４がＹＥＳで、全エージェントキャラクタが終了している場合には、プログラムをリターンする（ステップ３３２）。
【００８９】
図３の前記ステップ３０６におけるエージェント状態処理のサブルーチンにおいては、図４に示す如く、エージェント状態変数の変更を行うものである。
【００９０】
図４のフローチャートに示す如く、プログラムがスタートすると（ステップ４０２）、先ず、自分の一番近い前方にいるエージェントキャラクタを探し（ステップ４０４）、そして、敵集団（敵エージェントキャラクタ）を発見したか否かを判断する（ステップ４０６）。
【００９１】
このステップ４０６がＮＯで、敵集団を発見していない場合には、味方エージェント集団を発見したか否かを判断する（ステップ４０８）。
【００９２】
このステップ４０８がＹＥＳで、味方エージェント集団を発見した場合には、自分の小隊が戦闘状態か否かを判断する（ステップ４１０）。
【００９３】
このステップ４１０がＹＥＳで、自分の味方エージェント集団（小隊）が戦闘状態の場合には、支援待機状態とする（ステップ４１２）。
【００９４】
前記ステップ４０８がＮＯで、味方エージェント集団を発見していない場合、又は、前記ステップ４１０がＮＯで、自分の小隊が戦闘状態でない場合には、自分の前方にエージェントキャラクタが何もいない場合であり、移動停止状態とする（ステップ４１４）。
【００９５】
前記ステップ４０６がＹＥＳで、敵集団（敵エージェントキャラクタ）を発見した場合には、戦闘状態とする（ステップ４１６）。
【００９６】
そして、前記ステップ４１２、前記ステップ４１４、又は、前記ステップ４１６の各処理後は、プログラムをリターンする（ステップ４１８）。
【００９７】
図３の前記ステップ３２２における重心力処理のサブルーチンにおいては、図５に示す如く、プログラムがスタートすると（ステップ５０２）、先ず、リーダーキャラクタか否かを判断する（ステップ５０４）。
【００９８】
このステップ５０４がＹＥＳで、リーダーキャラクタの場合には、自分の小隊（味方エージェント集団）の重心へ向かう力（上記の数式の［数５］及び［数６］により得られる力であって、厳密には自小隊の重心に向かわせる力であり、上記の（２）の凝集力とは異なる）の演算を行う（ステップ５０６）。
【００９９】
前記ステップ５０４がＮＯで、リーダーキャラクタでない場合には、エージェントキャラクタの位置が仮想境界線を越えたか否かを判断する（ステップ５０８）。
【０１００】
このステップ５１０がＹＥＳで、エージェントキャラクタの位置が仮想境界線を越えた場合には、敵の小隊（敵集団）の重心へ向かう力を演算する（ステップ５１０）。なお、上記同様に厳密には敵小隊の重心に向かわせる力であり、このときの演算も、上記の数式の［数５］及び［数６］を用いる。
【０１０１】
そして、前記ステップ５０６で、自分の小隊の重心に向かわせる力を演算した後、前記ステップ５１０で、敵の小隊（敵エージェント集団）の重心に向かわせる力を演算した後、そして、前記ステップ５０８がＮＯで、エージェントキャラクタの位置が仮想境界線を越えていない場合には、プログラムをリターンする（ステップ５１２）。
【０１０２】
図２の前記ステップ２０８における小隊処理のサブルーチンにおいては、図６のフローチャートに示すように、小隊状態変数の更新部分を含でいる。
【０１０３】
図６のフローチャートに示す如く、プログラムがスタートすると（ステップ６０２）、先ず、自分の小隊の重心座標を演算し（ステップ６０４）、全エージェントキャラクタか否かを判断する（ステップ６０６）。
【０１０４】
このステップ６０６がＮＯで、全エージェントキャラクタでない場合には、エージェントキャラクタが戦闘状態か否かを判断し（ステップ６０８）、このステップ６０８がＮＯで、エージェントキャラクタが戦闘状態でない場合には、前記ステップ６０６に戻す。
【０１０５】
前記ステップ６０８がＹＥＳで、エージェントキャラクタが戦闘状態の場合には、小隊を戦闘状態とし（ステップ６１０）、そして、回り込みの仮想境界線を設定する（ステップ６１２）。
【０１０６】
一方、前記ステップ６０６がＹＥＳで、全エージェントキャラクタの場合には、小隊を移動停止状態とする（ステップ６１４）。ここで、戦闘状態のエージェントキャラクタが１つもいない場合に、この状態となる。
【０１０７】
そして、前記ステップ６１２で、回り込みの仮想境界線を設定した後、又は、前記ステップ６１４で、小隊を移動停止状態とした後は、小隊移動速度設定処理のサブルーチンを実行し（ステップ６１６）、プログラムをリターンする（ステップ６１８）。
【０１０８】
この図６のフローチャートにおいては、いずれかのエージェントキャラクタが戦闘状態となったとき、そのエージェントキャラクタが属する小隊の状態変数を戦闘状態に変更し、敵小隊（敵集団）への回り込みの境界線を設定・記憶する。また、いずれのエージェントキャラクタも戦闘状態でなくなったときは、小隊を移動停止状態に変更する。
【０１０９】
図６の前記ステップ６１６における小隊移動速度設定処理のサブルーチンにおいては、図７のフローチャートに示す如く、プログラムがスタートすると（ステップ７０２）、先ず、自分の味方小隊（味方エージェント集団）の一番近い前方にいる他の敵の小隊（敵集団）を探し（ステップ７０４）、敵小隊（敵集団）を発見したか否かを判断する（ステップ７０６）。
【０１１０】
このステップ７０６がＮＯで、敵小隊を発見していない場合には、味方小隊を発見したか否かを判断する（ステップ７０８）。
【０１１１】
このステップ７０８がＹＥＳで、味方小隊を発見した場合には、この味方小隊が戦闘状態か否かを判断する（ステップ７１０）。
【０１１２】
このステップ７１０がＹＥＳで、味方小隊が戦闘状態の場合には、敵小隊が仮想境界線を越えたか否かを判断する（ステップ７１２）。
【０１１３】
このステップ７１２がＹＥＳで、味方小隊が仮想境界線を越えた場合には、敵小隊の重心へ向かう（回り込みの）移動速度を設定する（ステップ７１４）。
【０１１４】
一方、前記ステップ７０６がＹＥＳで、敵小隊を発見した場合には、敵小隊に接近する移動速度・方向を設定する（ステップ７１６）。
【０１１５】
前記ステップ７０８がＮＯで、味方小隊を発見しない場合には、減速停止のための移動速度・方向を設定する（ステップ７１８）。
【０１１６】
前記ステップ７１０がＮＯで、味方小隊が戦闘状態でない場合には、味方小隊に追従する移動速度・方向を設定する（ステップ７２０）。
【０１１７】
前記ステップ７１２がＮＯで、味方小隊が仮想境界線を越えていない場合には、敵小隊付近に向かう移動速度・方向を設定する（ステップ７２２）。前記敵小隊付近とは、例えば、その敵小隊の最右端のエージェントキャラクタの位置から境界線上の５ｍの位置等である。
【０１１８】
そして、前記ステップ７１４〜７２２の各種設定の終了後は、プログラムをリターンする（ステップ７２４）。
【０１１９】
これにより、この実施例におけるキャラクタ集団移動制御プログラム、記憶媒体及びゲーム装置は、集団の隊列を大きく乱さずに全体を表示できると同時に、適度に隊列内での追い越しや配置が入れ替わる様子を表現することができ、リーダーキャラクタを中心とした複雑な集団の移動や戦闘を、直感的に分かり易い操作により動的に楽しませることができるとともに、よりリアルに表現させることができる。
【０１２０】
この結果、この実施例においては、リーダー入り集団（群れ）の移動開始・移動中に、入力装置１０の操作により集団の移動を直接介入操作できる。この入力装置１０の操作とは、左アナログスティック５０を傾けたり、十字方向ボタンセット３６を押下して移動方向を入力することである。これにより、リーダーキャラクタを含めた集団（群れ）（例えば騎馬兵）の移動を、リアルに表現することができる。この集団の移動中の各キャラクタには、常に、上述の３つの力（反発力、凝集力、移動力）が作用し、所定時間（フレーム）毎に最新位置が計算される。リーダー入り集団の隊列内で適度に位置を変えて散らばりながらも、隊列を大きく乱さないという、自然な群れの移動が表現できる。
【０１２１】
ところで、リーダー入り集団の移動の際には、リーダーキャラクタがその集団の中央に位置する。例えば、現実の鳥の群れのように、群れの先頭に位置するキャラクタをリーダーキャラクタとして左右に移動させると、先頭の変更とともに、リーダーキャラクタも変更されるとする方法も考えられる。
【０１２２】
しかし、この実施例においては、特定のリーダーキャラクタの指揮に基づく、エージェントキャラクタ（兵士キャラクタ）同士の集団移動・集団戦闘を想定しているので、リーダー入り集団（群れ）の状態により、リーダーキャラクタが変更されることを想定していない。このため、リーダーキャラクタがリーダー入り集団（群れ）の中心にいても、上記の重心の考え方により、リーダーキャラクタであることが変更されることはない。
【０１２３】
また、リーダー入り集団の戦闘開始・戦闘中においては、戦闘中の各キャラクタの前線が形成される。左側アナログスティック５０（又は、十字方向ボタンセット３６）を上に傾けてリーダー入り集団が上方に向かって移動を開始した後、敵集団に遭遇して戦闘を開始し、さらに、左側アナログスティック５０を上に押し続けている限り、戦闘を続ける。このとき、戦闘中のエージェントキャラクタ（前衛兵士）の非表示の前線が形成されるようにし、敵集団を通過（交錯）しないようにする。一方、左側アナログスティック５０を下に傾けると、集団が逃走を開始する。この点、１対１の戦闘では、通常の処理だが、集団の場合は、処理が複雑になる。
【０１２４】
更に、リーダー入り集団の戦闘突入後は、戦闘中でない残りの味方エージェント集団を操作することができる。リーダー入り集団が戦闘中でないとき、後方のエージェントキャラクタ（後衛兵士）は、支援状態として、その場で待機させ、隊列を大きく崩さないように（間に敵エージェントキャラクタが入り込まないように）するとともに、入力装置１０の入力操作があった場合には、敵集団の背後（後方）へ回り込めるようにする。
【０１２５】
敵集団の背後（後方）付近に仮想的な境界線を設定し、プレイヤが、上記の左側アナログスティック５０の操作をし、残りの味方エージェント集団がこの境界線を超えるまで移動した後は、自動的に敵集団の背後（後方）まで回り込ませることができる。
【０１２６】
また、リーダー入り集団の移動後の戦闘時では、リーダーキャラクタは、他の味方エージェントキャラクタと同様に、索敵（戦闘中でない視野内の敵を探し、接近して戦闘）することができる。
【０１２７】
なお、この発明においては、リーダーキャラクタをエージェント集団の後側に位置させることも可能である。
【産業上の利用可能性】
【０１２８】
プレイヤに集団を直接介入操作させることを、他のゲーム装置にも適用することができる。
【図面の簡単な説明】
【０１２９】
【図１】キャラクタ集団制御のフローチャートである。
【図２】図１の集団移動戦闘処理のサブルーチンのフローチャートである。
【図３】図２のエージェント処理のサブルーチンのフローチャートである。
【図４】図３のエージェント状態処理のサブルーチンのフローチャートである。
【図５】図３の重心力処理のサブルーチンのフローチャートである。
【図６】図２の小隊処理のサブルーチンのフローチャートである。
【図７】図６の小隊移動速度設定処理のサブルーチンのフローチャートである。
【図８】キャラクタに作用する反発力の説明図である。
【図９】キャラクタに作用する反発力と距離との関係を示す説明図である。
【図１０】キャラクタに作用する凝集力の説明図である。
【図１１】キャラクタに作用する移動力の説明図である。
【図１２】リーダーキャラクタを先頭とする集団の説明図である。
【図１３】リーダーキャラクタを画面の中央に位置したときの説明図である。
【図１４】（Ａ）は、キャラクタに作用する力の説明図である。              （Ｂ）は、キャラクタの移動の説明図である。
【図１５】前線で戦闘中の前衛兵士の移動を示す説明図である。
【図１６】後衛兵士が前衛兵士のカバーに入って待機中を示す説明図である。
【図１７】味方エージェント集団を支援状態に移行した説明図である。
【図１８】攻撃時の各エージェントキャラクタの配置図である。
【図１９】後衛兵士の移動を示す説明図である。
【図２０】仮想境界線を形成した場合の後衛兵士の移動を示す説明図である。
【図２１】ゲーム装置の構成図である。
【図２２】入力装置の平面図である。
【図２３】図２２の矢印ＸＸＩＩＩによる入力装置の正面図である。
【図２４】ゲーム装置の制御ブロック図である。
【符号の説明】
【０１３０】
２  ゲーム装置
８  モニタテレビ
１０  入力装置
１２  記憶媒体
１４  媒体読取部
４８  右側アナログスティック
５０  左側アナログスティック
５４  ＣＰＵブロック
５６  ＳＣＵ
５８  ＣＰＵ
６０  ＲＯＭ
６２  ＲＡＭ
６８  入力受信部
７０  画像処理部
７２  音響処理部
【図１】
2006174929.tif 000003
【図２】
2006174929.tif 000004
【図３】
2006174929.tif 000005
【図４】
2006174929.tif 000006
【図５】
2006174929.tif 000007
【図６】
2006174929.tif 000008
【図７】
2006174929.tif 000009
【図８】
2006174929.tif 000010
【図９】
2006174929.tif 000011
【図１０】
2006174929.tif 000012
【図１１】
2006174929.tif 000013
【図１２】
2006174929.tif 000014
【図１３】
2006174929.tif 000015
【図１４】
2006174929.tif 000016
【図１５】
2006174929.tif 000017
【図１６】
2006174929.tif 000018
【図１７】
2006174929.tif 000019
【図１８】
2006174929.tif 000020
【図１９】
2006174929.tif 000021
【図２０】
2006174929.tif 000022
【図２１】
2006174929.tif 000023
【図２２】
2006174929.tif 000024
【図２３】
2006174929.tif 000025
【図２４】
2006174929.tif 000026