(57)【要約】【課題】敵機の動作をより多彩にする。【解決手段】敵機はＡ（Ａは任意の自然数とする。）種類の行動ａ（ａ＝１，…，Ａ）に従って移動するものとし、選択された行動によって敵機が移動を始める時刻ｔをｔ＝０とする。敵機の行動ａと時刻ｔ＝ｎＴ（Ｔは行動単位時間、ｎ＝１，…，Ｎ、Ｎは任意の自然数とする。）のすべての組合せについて、敵機が行動ａに従って移動する場合の、時刻ｔにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する。敵機が行動ａに従って移動する場合の、すべての又は一部の時刻ｔにおける上記混合値を加算した値を、敵機の各行動ａごとに求める。上記加算した値を最大にする敵機の行動ａを、敵機の行動とする。【選択図】図１
2008183177.tif 000002
【特許請求の範囲】
【請求項１】
敵機はＡ（Ａは任意の自然数とする。）種類の行動ａ（ａ＝１，…，Ａ）に従って移動するものとし、選択された行動によって敵機が移動を始める時刻ｔをｔ＝０とし、
混合値計算手段が、敵機の行動ａと時刻ｔ＝ｎＴ（Ｔは行動単位時間、ｎ＝１，…，Ｎ、Ｎは任意の自然数とする。）のすべての組合せについて、敵機が行動ａに従って移動する場合の、時刻ｔにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する混合値計算ステップと、
加算手段が、敵機が行動ａに従って移動する場合の、すべての又は一部の時刻ｔにおける上記混合値を加算した値を、敵機の各行動ａごとに求める加算ステップと、
敵機行動決定手段が、上記加算した値を最大にする敵機の行動ａを、敵機の行動とする敵機行動決定ステップと、
を有する敵機行動制御方法。
【請求項２】
請求項１に記載の敵機行動制御方法において、
上記敵機行動パラメータは、αとβ（αとβはそれぞれ任意の実数）の２つのパラメータからなり、
上記混合値は、敵機が自機を破壊する可能性を表す指標にαをかけた値と、自機が敵機を破壊する可能性を表す指標にβをかけた値とを加算した値である、
ことを特徴とする敵機行動制御方法。
【請求項３】
請求項１に記載の敵機行動制御方法において、
上記敵機行動パラメータは、αとβ（αとβはそれぞれ任意の実数）の２つのパラメータからなり、
上記混合値は、敵機が自機を破壊する可能性を表す指標を非負の値を出力する第一の単調増加関数に入力した場合の出力値にαをかけた値と、自機が敵機を破壊する可能性を表す指標を非負の値を出力する第二の単調増加関数に入力した場合の出力値にβをかけた値とを加算した値である、
ことを特徴とする敵機行動制御方法。
【請求項４】
請求項１に記載の敵機行動制御方法において、
上記敵機行動パラメータは、αとβ（αとβはそれぞれ任意の実数）の２つのパラメータからなり、
上記混合値は、敵機が自機を破壊する可能性を表す指標を非負の値を出力する第一の単調増加関数に入力した場合の出力値をα乗した値と、自機が敵機を破壊する可能性を表す指標を非負の値を出力する第二の単調増加関数に入力した場合の出力値をβ乗した値とを乗算した値である、
ことを特徴とする敵機行動制御方法。
【請求項５】
請求項１から４の何れかに記載の敵機行動制御方法において、
入力手段が、敵機行動パラメータの入力を受け付ける入力ステップをさらに有し、
上記混合値計算ステップは、上記予め定められた敵機行動パラメータに代えて、上記入力された敵機行動パラメータを用いて、上記混合値を計算するステップである、
ことを特徴とする敵機行動制御方法。
【請求項６】
請求項１から５の何れかに記載の敵機行動制御方法において、
上記敵機が行動ａに従って移動する場合の、時刻ｔ＝ｎＴにおける敵機が自機を破壊する可能性を表す指標は、行動ａに従って移動する敵機が時刻ｔ＝ｎＴに存在する位置に、時刻ｔ＝ｎＴにおける自機が存在する確率である、
ことを特徴とする敵機行動制御方法。
【請求項７】
請求項１から６の何れかに記載の敵機行動制御方法において、
上記敵機が行動ａに従って移動する場合の、時刻ｔ＝ｎＴにおける自機が敵機を破壊する可能性を表す指標は、行動ａに従って移動する敵機が時刻ｔ＝ｎＴにおいて、自機の射線上に存在する位置する確率である、
ことを特徴とする敵機行動制御方法。
【請求項８】
敵機はＡ（Ａは任意の自然数とする。）種類の行動ａ（ａ＝１，…，Ａ）に従って移動するものとし、選択された行動によって敵機が移動を始める時刻ｔをｔ＝０とし、
敵機の行動ａと時刻ｔ＝ｎＴ（Ｔは行動単位時間、ｎ＝１，…，Ｎ、Ｎは任意の自然数とする。）のすべての組合せについて、敵機が行動ａに従って移動する場合の、時刻ｔにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する混合値計算手段と、
敵機が行動ａに従って移動する場合の、すべての又は一部の時刻ｔにおける上記混合値を加算した値を、敵機の各行動ａごとに求める加算手段と、
上記加算した値を最大にする敵機の行動ａを、敵機の行動とする敵機行動決定手段と、
を有する敵機行動制御装置。
【請求項９】
請求項１から７に何れかに記載の敵機行動制御方法の各ステップをコンピュータに実行させるための敵機行動制御プログラム。
【請求項１０】
請求項９に記載の敵機行動制御プログラムをコンピュータ読み取り可能に記録した敵機行動制御プログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シューティングゲームにおける敵機の行動を制御するための方法、装置、プログラム及びその記録媒体に関する。
【背景技術】
【０００２】
シューティングゲームの処理方法、特に敵機の動作を制御する方法としては、自機の位置を考慮しないアルゴリズム、例えば、自機の位置とは無関係に敵機が一定方向に下降し続けるアルゴリズムや、自機の位置とは無関係に敵機が静止し続けるアルゴリズムを採用する方法があった。また、自機の位置を考慮するアルゴリズムとしては、例えば、自機の位置に近づくように敵機が動くアルゴリズムや、常に自機との位置を一定距離・方向に保つように敵機が動くアルゴリズムがあった。
また、敵機の移動を制御する技術ではないが、敵機の攻撃弾発射アルゴリズムに関する従来技術として、非特許文献１に記載された技術がある。
【非特許文献１】川野洋、「シューティングゲームの敵機攻撃弾発射アルゴリズムに関する考察」、社団法人情報処理学会研究報告［ゲーム情報学］、２００６年６月３０日、ｖｏｌ．２００６、Ｎｏ．７０，p. 61―68
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来技術による敵機の行動制御アルゴリズムは、単純なものに限られている。その結果、敵の攻撃回避に必要なプレイヤーの自機操作技術は、多くのシューティングゲームにおいて共通しており、従来技術による敵機の行動制御アルゴリズムを用いたシューティングゲームは、ユーザに飽きられやすいという問題があった。
【課題を解決するための手段】
【０００４】
敵機はＡ（Ａは任意の自然数とする。）種類の行動ａ（ａ＝１，…，Ａ）に従って移動するものとし、選択された行動によって敵機が移動を始める時刻ｔをｔ＝０とする。混合値計算手段が、敵機の行動ａと時刻ｔ＝ｎＴ（Ｔは行動単位時間、ｎ＝１，…，Ｎ、Ｎは任意の自然数とする。）のすべての組合せについて、敵機が行動ａに従って移動する場合の、時刻ｔにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する。加算手段が、敵機が行動ａに従って移動する場合の、すべての又は一部の時刻ｔにおける上記混合値を加算した値を、敵機の各行動ａごとに求める。敵機移動速度決定手段が、上記加算した値を最大にする敵機の行動ａを、敵機の行動とする。
【発明の効果】
【０００５】
敵機の行動パターンが多彩となり、ゲーム性が向上する。また、敵機行動パラメータの値を変えることにより、シューティングゲームのゲームの難易度の調整を多面的に行うことができる。
【発明を実施するための最良の形態】
【０００６】
［シューティングゲームの説明］
図５に、本発明の処理の対象となるシューティングゲームを例示する。画面上には、自機１’と自機１’の攻撃弾３’、敵機２’と敵機２’の攻撃弾４’が表示される。攻撃弾３’、敵機２’、攻撃弾４’は、複数存在していても良い。敵機２’が複数存在している場合には、それらの敵機にはそれぞれ異なる番号ｉ（ｉ＝１…Ｉ）が付けられているものとする。同様に、敵機の攻撃弾４’が複数存在している場合には、それらの敵機の攻撃弾４’にはそれぞれ異なる番号ｊ（ｊ＝１…Ｊ）が付けられているものとする。また、自機１’、敵機２’、攻撃弾３’、攻撃弾４’は、Ｘ軸とＹ軸で構成される２次元の平面上に位置するものとする。
【０００７】
プレイヤーは、自機１’を操作して、敵機２’と闘う。プレイヤーは、一回の操作で、Ｗ種類の移動速度（方向と速さ）で、行動単位時間Ｔだけ自機を移動させることができる。自機１’が取り得るＷ種類の移動速度（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））は予め決められており、それぞれの移動速度（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））には、異なる移動速度番号ｗ（ｗ＝１，…，Ｗ）が付けられているものとする。以下では、移動速度番号ｗを選択する行動のことを行動ｗという。また、プレイヤーは、Ｗ種類の速度による移動と同時に、敵機２’を攻撃するための攻撃弾３’を発射する操作をすることができる。攻撃弾３’は、予め定められた軌跡に従って移動をする。この攻撃弾３’の描く軌跡を、自機の射線と呼ぶ。
【０００８】
なお、例えば、Ｗ＝９のとき、
（Ｖｘｓ（１），Ｖｙｓ（１））＝（Ｖ，０）
（Ｖｘｓ（２），Ｖｙｓ（２））＝（Ｖ，Ｖ）
（Ｖｘｓ（３），Ｖｙｓ（３））＝（０，Ｖ）
（Ｖｘｓ（４），Ｖｙｓ（４））＝（−Ｖ，Ｖ）
（Ｖｘｓ（５），Ｖｙｓ（５））＝（−Ｖ，０）
（Ｖｘｓ（６），Ｖｙｓ（６））＝（−Ｖ，−Ｖ）
（Ｖｘｓ（７），Ｖｙｓ（７））＝（０，−Ｖ）
（Ｖｘｓ（８），Ｖｙｓ（８））＝（Ｖ，−Ｖ）
（Ｖｘｓ（９），Ｖｙｓ（９））＝（０，０）
とすることができる。
【０００９】
敵機２’は、移動速度（Ｖｘｅ（ａ），Ｖｙｅ（ａ））で移動することができる。敵機２’が取り得るＡ種類の移動速度（Ｖｘｅ（ａ），Ｖｙｅ（ａ））は予め定められており、それぞれの移動速度（Ｖｘｅ（ａ），Ｖｙｅ（ａ））には、異なる移動速度番号ａ（ａ＝１，…，Ａ）が付けられているものとする。敵機２’は、自機を攻撃するために攻撃弾４’を任意の速度（方向と速さ）で発射することができる。発射された攻撃弾４’は、所定の移動速度（Ｖｘｂｊ，Ｖｙｂｊ）で移動する。
【００１０】
自機１’が、敵機２’及び敵機２’が発射する攻撃弾４’と衝突した場合には、自機１’は破壊され、そこでゲームオーバーとなる。逆に、自機１’の攻撃弾３’が敵機２’に衝突した場合には、敵機２’は破壊される。自機１’の攻撃弾３’によりすべての敵機２’を破壊した場合には、ユーザは、そのゲームに勝利することになる。
【００１１】
ゲーム画面は格子に分割されており、その格子の構成単位のことを升目というものとする。例えば、画面の一番左下の升目の座標を（０，０）とし、その（０，０）の升目のＸ個だけ右に位置し、かつ、Ｙ個だけ上に位置する升目の座標を（Ｘ，Ｙ）とすることができる。ここで、ＸとＹは０以上の整数である。
【００１２】
なお、升目の一辺の長さＳが、その辺に平行な方向に進む自機の速さＶに行動単位時間Ｔをかけた値になるように、すなわち、Ｓ＝ＶＴとなるように、ゲーム画面を格子に分割するとよい。このように升目の一辺の長さを設定することにより、ある升目ｓに存在する自機が、どの移動速度（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））に従って移動しても、行動単位時間Ｔ後には、必ずある升目ｓに１００％の確率で存在することになる。このため、計算負担を軽減することができる。
【００１３】
また、升目の一辺の長さが大きいと、本発明の処理が荒くなり、適切に自機を制御することができない場合がある。したがって、升目の一辺の長さＳが、自機の形状に内接する円の直径と、敵機の攻撃弾の形状に内接する円の直径の和の半分の長さの３分の１以下の値になるように、行動単位時間Ｔ及び自機の速さＶを決定すると良い。
大文字で表現された座標（Ｘ，Ｙ）は、升目の座標である。一方、小文字で表現された座標（ｘ，ｙ）は、ゲーム画面上での実数表現による座標位置を表す。任意の座標（ｘ，ｙ）は、その座標（ｘ，ｙ）を含む升目の座標（Ｘ，Ｙ）に変換することができるものとする。
【００１４】
［第一実施形態］
敵機がＡ（Ａは任意の整数）種類の行動の中からある行動ａに従って移動した場合の各時刻ｔ＝ｎＴ（Ｔは行動単位時間であり、ｎ＝１，…，Ｎ、Ｎは求める精度とハードウェアの性能に依存するがおよそ１０〜２０。）における敵機が自機を破壊する確率である敵機の自機破壊確率として、各時刻ｔにおいて自機が升目ｓに存在する確率である自機存在確率Ｐｓ（ｔ，ｓ）を用いた場合を例に挙げて説明をする。敵機の自機破壊確率として、自機存在確率Ｐｓ（ｔ，ｓ）を用いることができるのは、定義より、敵機が自機に接触した場合には、自機は破壊され、また、敵機と自機の距離が近いほど、敵機と自機が接触することにより自機が破壊される可能性が高くなり、かつ、敵機から発射される攻撃弾によって自機が破壊される可能性が高くなるためである。以下では、自機存在確率Ｐｓ（ｔ，ｓ）のことを、敵機の自機破壊確率Ｐｓ（ｔ，ｓ）と呼ぶことがある。
【００１５】
また、敵機がＡ種類の行動の中からある行動ａに従って移動した場合の各時刻ｔにおける自機が敵機を破壊する確率である自機の敵機破壊確率として、上記行動ａに従って移動した敵機が自機の射線上にいる各時刻ｔにおける確率Ｐｓｘ（ｔ，ｓ）を用いた場合を例に挙げて説明をする。自機の敵機破壊確率として、射線上存在確率Ｐｓｘ（ｔ，ｓ）を用いることができるのは、敵機が自機の射線上にいる場合には、敵機が破壊される可能性が高いためである。以下では、射線上存在確率Ｐｓｘ（ｔ，ｓ）を、自機の敵機破壊確率Ｐｓｘ（ｔ，ｓ）と呼ぶことがある。
【００１６】
さらに、本実施形態では、敵機の行動は、敵機が取ることができる移動速度番号に対応しており、敵機が行動として、Ａ（Ａは任意の自然数とする。）種類の移動速度番号の中からある移動速度番号ａ∈Ａを選択した場合には、敵機は、その移動速度番号ａに対応して予め定められた移動速度ベクトル（Ｖｘｅ（ａ），Ｖｙｅ（ａ））に従って行動単位時間Ｔだけ移動する動作を、すべての時刻ｔ＝ｎＴ（ｎ＝１，…，Ｎ、Ｎは任意の自然数である。）において行うと仮定する。
【００１７】
以下では、選択された移動速度によって自機が移動を始める時刻ｔをｔ＝０とする。
［装置構成］
図１に、本発明による敵機行動制御装置１０００の機能構成を例示する。
敵機行動制御装置１０００は、例えば、記憶部１、混合値計算部２、加算部３、敵機移動速度決定部４（又は、敵機行動決定部４）、敵機行動パラメータ決定部５を有する。
記憶部１は、例えば、敵機の自機破壊確率記憶部１１、自機の敵機破壊確率記憶部１２、敵機位置記憶部１３を有する。混合値計算部２は、例えば、記憶部２１、制御部２２を有する。加算部３は、例えば、加算部３１、…、加算部３ａ、…、加算部３Ａを有する。敵機移動速度決定部４は、最大値検出部４１を有する。また、図８に示すように、敵機行動パラメータ決定部５は、例えば、距離計算部５２、判定部５３、記憶部５４、座標比較部５５を有する。
【００１８】
図３を参照して、敵機行動制御装置１０００の処理を説明する。図３は、敵機行動制御装置１０００の処理の流れを例示する図である。
＜ステップＳ０＞
記憶部１（図１参照）の敵機の自機破壊確率記憶部１１には、各時刻ｔにおいて自機が各升目ｓに存在する確率Ｐｓ（ｔ，ｓ）が予め計算されて格納される。Ｐｓ（ｔ，ｓ）の計算方法については後述する。
また、記憶部１の自機の敵機破壊確率記憶部１２には、敵機が行動として移動速度番号ａを選択した場合の敵機が自機の射線上にいる各時刻ｔにおける確率Ｐｓｘ（ｔ，ｓ）が予め計算されて格納される。Ｐｓｘ（ｔ，ｓ）の計算方法については後述する。
【００１９】
また、記憶部１の敵機位置記憶部１３には、敵機が行動として移動速度番号ａを選択した場合の各時刻ｔにおける敵機が存在する升目ｓｅｉ（ｔ，ａ）が予め計算されて格納される。ｓｅｉ（ｔ，ａ）の計算方法については後述する。
さらに、敵機行動パラメータであるαとβが、混合値計算部２の記憶部２１に格納される。αとβはそれぞれ任意の実数である。
【００２０】
＜ステップＳ１＞
混合値計算部２は、敵機がＡ（Ａは任意の整数）種類の移動速度の中から、ある移動速度番号ａを行動として選択した場合の、敵機が自機を破壊する確率であるＰｓ（ｔ，ｓｅｉ（ｔ，ａ））と、自機が敵機を破壊する確率であるＰｓｘ（ｔ，ｓｅｉ（ｔ，ａ））と、予め定められた敵機行動パラメータα，βとを用いて、下記の式により定まる混合値Ｆ（ｔ，ｓｅｉ（ｔ，ａ））を計算して加算部３に出力する。
Ｆ（ｔ，ｓｅｉ（ｔ，ａ））＝αＰｓ（ｔ，ｓｅｉ（ｔ，ａ））＋βＰｓｘ（ｔ，ｓｅｉ（ｔ，ａ））  …（１）
Ｆ（ｔ，ｓ）＝αＰｓ（ｔ，ｓ）＋βＰｓｘ（ｔ，ｓ）で定義される混合値Ｆ（ｔ，ｓ）は、時刻ｔにおいて升目ｓに位置する敵機が、自機に破壊されずに自機を破壊することができる可能性を示す指標である。
【００２１】
混合値計算部２は、移動速度番号ａと時刻ｔのすべての組合せについて、上記混合値Ｆ（ｔ，ｓｅｉ（ｔ，ａ））を計算する。図４を参照して、混合値Ｆ（ｔ，ｓｅｉ（ｔ，ａ））の計算方法について説明をする。図４は、ステップＳ１の処理の流れを例示する図である。
【００２２】
まず、混合値計算部２の制御部２２は、記憶部２１に格納されたａとｔの値をそれぞれａ＝１，ｔ＝Ｔと初期設定する（ステップＳ１１）。
混合値計算部２は、敵機が時刻ｔ＝０において行動として移動速度番号ａを選択した場合に時刻ｔにおいて敵機が存在する升目ｓｅｉ（ｔ，ａ）を記憶部１の敵機位置記憶部１３から読み出す（ステップＳ１２）。
【００２３】
混合値計算部２は、上記読み出された升目ｓｅｉ（ｔ，ａ）に対応した、敵機の自機破壊確率Ｐｓ（ｔ，ｓｅｉ（ｔ，ａ））と、自機の敵機破壊確率Ｐｓｘ（ｔ，ｓｅｉ（ｔ，ａ））とを記憶部１の敵機の自機破壊確率記憶部１１と自機の敵機破壊確率記憶部１２とからそれぞれ読み出す（ステップＳ１３）。
混合値計算部２は、例えば、上記（１）式により、自機の敵機破壊確率Ｐｓ（ｔ，ｓｅｉ（ｔ，ａ））と敵機の自機破壊確率Ｐｓｘ（ｔ，ｓｅｉ（ｔ，ａ））とを記憶部２１から読み出した敵機行動パラメータαとβを用いて重み付き加算をすることにより混合して混合値Ｆ（ｔ，ｓｅｉ（ｔ，ａ））を計算して、加算部３に出力する（ステップＳ１４）。
【００２４】
制御部２２は、記憶部２１から読み出したｔと、Ｎ×Ｔとを比較する（ステップＳ１５）。ｔ≧Ｎ×Ｔでない場合には、ｔを行動単位時間Ｔだけインクリメントして（ステップＳ１２）、ステップＳ１２に戻って処理を行う。ｔ≧Ｎ×Ｔである場合には、ａと、敵機の移動速度番号の種類Ａとを比較する（ステップＳ１７）。ａ≧Ａでない場合には、ａを１だけインクリメントして、ステップＳ１２に戻って処理を行う（ステップＳ１８）。ａ≧Ａである場合には、ステップＳ１の処理を終える。
このようにして、混合値計算部２は、移動速度番号ａと時刻ｔの各組合せごとの混合値Ｆ（ｔ，ｓｅｉ（ｔ，ａ））を計算して、その計算結果を加算部３に出力する。
【００２５】
＜ステップＳ２＞
加算部３は、敵機が時刻ｔ＝０において行動として移動速度番号ａを選択した場合の、すべての時刻ｔ＝ｎＴ（ｎ＝１，…，Ｎ）における混合値Ｆ（ｔ，ｓ）を加算した値を、各移動速度番号ａごと（すなわち、各行動ごと）に求めて、敵機移動速度決定部４に出力する。すなわち、加算部３は、Σｔ＝１ｔ＝ＮＴＦ（ｔ，ｓｅｉ（ｔ，ａ））を計算して、各移動速度番号ａごとの混合値Ｆ（ｔ，ｓｅｉ（ｔ，ａ））の加算値を求める。
【００２６】
図１に例示した敵機行動制御装置１０００の加算部３においては、加算部３１がΣｔ＝１ｔ＝ＮＴＦ（ｔ，ｓｅｉ（ｔ，１））を計算し、加算部３２がΣｔ＝１ｔ＝ＮＴＦ（ｔ，ｓｅｉ（ｔ，２））を計算し、…、加算部３ａがΣｔ＝１ｔ＝ＮＴＦ（ｔ，ｓｅｉ（ｔ，ａ））を計算し、…、加算部３ＡがΣｔ＝１ｔ＝ＮＴＦ（ｔ，ｓｅｉ（ｔ，１））を計算して、その計算結果をそれぞれ敵機移動速度決定部４に出力している。
【００２７】
＜ステップＳ３＞
敵機移動速度決定部４は、各移動速度番号ａごとの混合値の加算値Σｔ＝１ｔ＝ＮＴＦ（ｔ，ｓｅｉ（ｔ，ａ））を比較して、上記加算値を最大にする移動速度番号ａを選択して出力する。具体的には、敵機移動速度決定部４の最大値検出部４１は、各移動速度番号ａごとの混合値の加算値Σｔ＝１ｔ＝ＮＴＦ（ｔ，ｓｅｉ（ｔ，ａ））の最大値を検出し、その最大値に対応する移動速度番号ａを出力する。図示していない敵機動作処理部は、上記選択された移動速度番号ａに基づいて行動単位時間Ｔだけ敵機を移動させる。
【００２８】
敵機が複数いる場合には、各敵機について上記処理を繰り返し行う。その際、敵機の自機破壊確率Ｐｓ（ｔ，ｓ）と、自機の破壊確率Ｐｓｘ（ｔ，ｓ）と、敵機の位置ｓｅｉ（ｔ，ｓ）とを異なる敵機ごとに再度計算するのではなく、ある敵機について一度計算された敵機の自機破壊確率Ｐｓ（ｔ，ｓ）と、自機の破壊確率Ｐｓｘ（ｔ，ｓ）と、敵機の位置ｓｅｉ（ｔ，ｓ）とを他の敵機についての処理に再利用すると計算効率が良い。
【００２９】
＊＊  敵機行動パラメータについて  ＊＊
敵機行動パラメータの値を変更することにより、敵機の行動パターンをより攻撃的なものにするか、より防御的なものにするか等を連続的に調整することができる。さらに、上記実施形態において、記憶部２１に格納した敵機行動パラメータαとβの値を変更することにより、敵機の行動パターンを例えば以下のように変えることができる。
【００３０】
（１）α＝０，β＞０とすると、敵機は自機の射線上に吸い込まれるように寄ってくる（自殺犬死パターン）。
（２）α＞０，β＝０とすると、敵機は、自機の近くに移動することを最優先とするが、自機により敵機が破壊されることは考慮しない（神風パターン）。敵機が自身の安全性を考慮しないで攻めてくるので一見ゲームとしては厳しいが、自機が敵機を破壊することが、自機の安全行動につながり、さらには得点の最大化にもつながる。
（３）α＝０，β＜０とすると、敵機は、自機の射線上から逃げることのみを重視するようになり、自機への攻撃は考慮しない（安全重視臆病パターン）。敵機を撃墜することができない代わりに、敵機からの攻撃のプレッシャーは少ない。
（４）α＞０，β＜０とすると、敵機は、自機の近くに移動しながらも、自機の射線上に入らない行動をする（リスク考慮パターン）。自機が安全行動をとったとしても、そのときの自機射線上には敵機がいない可能性が高く、自機は攻撃弾との接触する可能性が高い位置に移動しなければ敵機を効果的に破壊することができない。このため、このように敵機行動パラメータを定めると、ハイリスク、ハイリターンの状況をシューティングゲーム内に作ることができる。
【００３１】
また、敵機の位置に応じて、敵機行動パラメータの値を変えてもよい。これにより、敵機により複雑な動作、戦略的な動作をさせることができ、ゲーム性が増すというメリットがある。図６と図７を参照して、敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を以下に示す。図６と図７は、敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を表す図であり、点線で示した円は、自機から所定の距離ｒだけ離れた位置を意味する。
【００３２】
図６に示すように、敵機が自機の正面にいて、かつ、敵機と自機が所定の距離Ｒ（Ｒは任意の実数）以上離れている場合には、敵機は自機が発射した攻撃弾によって破壊される可能性がある。この場合には、αを任意（好ましくは、α＞０）とし、β＜０として、上記実施形態に示した処理を行う。これにより、敵機に対して、自機に破壊されにくい行動を取らせることができる。ここで、敵機が自機の正面にいるとは、自機の射線と垂直であり自機を通る直線に対して、敵機が自機の射線がある方の側にいることを意味する。
【００３３】
具体的には、例えば、敵機行動パラメータ決定部５の座標比較部５５（図８参照。）が、敵機のｙ座標と自機のｙ座標とを比較する。また、距離計算部５２が、自機と敵機の距離ｒを計算し、判定部５３が求まった距離ｒと、記憶部５４から読み出した所定の距離Ｒとを比較する。座標比較部５５において敵機のｙ座標＞自機のｙ座標と判断され、かつ、判定部５３において距離ｒ≧距離Ｒと判断された場合には、敵機行動パラメータ決定部５は、αを任意（好ましくは、α＞０）、かつ、β＜０の条件を満たす敵機行動パラメータαとβを、混合値計算部２の記憶部２１に設定する。敵機行動パラメータ決定部５は、この判断処理を一定の時間間隔ごとに行う。敵機行動制御装置１０００は、この敵機行動パラメータαとβに基づいて、上記した処理を行い敵機の動作を制御する。
【００３４】
図７に示すように、敵機が自機の背後にいる場合には、自機の攻撃弾は敵機にはあたらない。この場合には、敵機に対して自機を攻撃させる行動パターンを取らせるとよい。すなわち、α＞０、βを任意（好ましくは、β＝０）として、上記実施形態に示した処理を行う。
【００３５】
具体的には、例えば、敵機行動パラメータ決定部５の座標比較部５５が、敵機のｙ座標と自機のｙ座標とを比較する。座標比較部５５において、敵機のｙ座標＜自機のｙ座標と判断された場合には、敵機行動パラメータ決定部５は、α＞０、βを任意（好ましくは、β＝０）の条件を満たす敵機行動パラメータαとβを、混合値計算部２の記憶部２１に設定する。敵機行動パラメータ決定部５は、この判断処理を一定の時間間隔ごとに行う。敵機行動制御装置１０００は、この敵機行動パラメータαとβに基づいて、上記した処理を行い敵機の動作を制御する。
このように敵機行動パラメータを様々な値に設定することにより、敵機の行動を自在に制御することができる。
【００３６】
［第二実施形態］
上記実施形態は、ある行動に従って移動した敵機が各時刻ｔ＝ｎＴにおいてある位置（升目）に１００％の確率で存在すると仮定した場合の実施形態である。すなわち、上記実施形態においては、ある移動速度番号ａに従って移動した敵機が位置する各時刻における升目が、ｓｅｉ（ｔ，ａ）と一意に決まっていた。しかし、ある行動に従って移動した敵機がある位置に存在するかどうかを確率的に表した場合であっても本発明を適用することができる。すなわち、ある行動ａに従って移動した敵機が時刻ｔにおいて升目ｓに存在する確率を、Ｐｅｉ（ｔ，ｓ，ａ）と確率的に表した場合であっても本発明を適用することができる。
【００３７】
図２は、第二実施形態による敵機行動制御装置１００１の機能構成を例示する図である。第二実施形態による敵機行動制御装置１００１は、図２に示すように、混合値計算部２の代わりに混合値計算部２’を有している点と、記憶部１が敵機位置記憶部１３の代わりに敵機存在確率記憶部１４を有している点で第一実施形態による敵機行動制御装置１０００と異なる。他の機能構成、処理については同様であるため、説明を省略する。
敵機存在確率記憶部１４には、各行動ａに従って移動した敵機が各時刻ｔにおいて各升目ｓに存在する確率Ｐｅｉ（ｔ，ｓ，ａ）が格納されているものとする。敵機存在確率Ｐｅｉ（ｔ，ｓ，ａ）の求め方については後述する。
【００３８】
混合値計算部２’は、移動速度番号ａと、時刻ｔ＝ｎＴのすべての組合せについて、下記の式に基づいて混合値Ｆ（ｔ，ａ）を計算する。
Ｆ（ｔ，ａ）＝ΣｓＰｅｉ（ｔ，ｓ，ａ）（αＰｓ（ｔ，ｓ）＋βＰｓｘ（ｔ，ｓ））  …（２）
加算部３において混合値Ｆ（ｔ，ａ）は時間についての和が取られ、この和を最も大きくする移動速度番号ａが敵機移動速度決定部４により選択され出力される。
画面を分割する格子の目が粗い場合には、敵機の位置の確率分布であるＰｅｉ（ｔ，ｓ，ａ）に基づいて本発明を行う第二実施形態による敵機行動制御装置１００１によって、敵機の行動をさらに精度良く制御することができる。
【００３９】
［自機存在確率Ｐｓ（ｔ，ｓ）の求め方について］
上記実施形態において、行動ａに従って移動する敵機が各時刻ｔ＝ｎＴにおいて自機を破壊する確率の一例として用いた自機の存在確率Ｐｓ（ｔ，ｓ）の求め方について説明をする。Ｐｓ（ｔ，ｓ）は、時刻ｔにおいて敵機が升目（位置）ｓに存在する確率である。
図９に例示した自機存在確率計算部６は、時刻ｔにおける自機が升目ｓ’に存在する確率Ｐｓ（ｔ，ｓ’）に基づいて、時刻ｔから行動単位時間Ｔ経過後の時刻ｔ＝ｔ＋Ｔにおける自機が升目ｓに存在する確率Ｐｓ（ｔ＋Ｔ，ｓ）を求める。そして、この処理を繰り返すことによって、最終的に、自機存在確率計算部６は、各時刻ｔ＝ｎＴ（ｎ＝１…Ｎ）ごとに、自機が各升目ｓに存在している確率を求める。計算した確率Ｐｓ（ｔ，ｓ）は、記憶部６１に格納される。
【００４０】
時刻ｔ＝０における自機が位置する升目をｓ０とすると、自機が時刻ｔ＝０において升目ｓ０に存在する確率Ｐｓ（０，ｓ０）＝１である。このＰｓ（０，ｓ０）＝１が、記憶部６１に格納されているものとする。
まず、自機存在確率計算部６は、次式を計算することによって、時刻ｔにおける自機が升目ｓ’に存在する確率Ｐｓ（ｔ，ｓ’）に基づいて、ｔ＋Ｔにおける自機が升目ｓに存在する確率Ｐｓ（ｔ＋Ｔ，ｓ）を求める。
Ｐｓ（ｔ＋Ｔ，ｓ）＝（１−ｍａｘ（Ｐｂｊ（ｔ＋Ｔ，ｓ）））Σｗ｛Ｐｓｅｌ（ｗ，ｔ）・Σｓ’｛Ｐｔｒｓ（ｓ’，ｓ，ｗ））・Ｐｓ（ｔ，ｓ’）｝｝  …（３）
ここで、Ｐｓｅｌ（ｗ，ｔ）は、時刻ｔにおいて自機が移動速度番号ｗを選択する確率である。例えば、自機が等しい確率で移動速度番号ｗを選択すると仮定して、Ｐｓｅｌ（ｗ，ｔ）＝１／Ｗとすることができる。この他にも、ユーザが任意にＰｓｅｌ（ｗ，ｔ）の値を選択することができる。Ｐｓｅｌ（ｗ，ｔ）の値は予め設定され、記憶部６１に格納されているものとする。
【００４１】
Ｐｔｒｓ（ｓ’，ｓ，ｗ）は、時刻ｔにおいて升目ｓ’に存在する自機が、移動速度番号ｗの移動速度（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））に従って行動単位時間Ｔだけ移動することによって、時刻ｔ＋Ｔにおいて升目ｓに存在している確率である。Ｐｔｒｓ（ｓ’，ｓ，ｗ）の計算の仕方については後述する。
移動確率計算部６２は、升目ｓ’に存在している自機が、自機の移動速度番号ｗに対応した移動速度（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））で行動単位時間Ｔだけ移動した結果、升目ｓに存在している確率Ｐｔｒｓ（ｓ’，ｓ，ｗ）を計算する。
【００４２】
積算部６３は、上記計算されたＰｔｒｓ（ｓ’，ｓ，ｗ）と、記憶部６１から読み出した自機が升目ｓ’に存在している確率Ｐｓ（ｔ，ｓ’）との積Ｐｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）を求める。
このようにして、移動確率計算部６２と積算部６３は、すべての升目ｓ’について上記Ｐｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）を計算する。
加算部６４は、各升目ｓ’ごとに上記計算されたＰｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）を加算する。すなわち、Σｓ’｛Ｐｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）｝を計算する。
【００４３】
積算部６５は、上記計算されたΣｓ’｛Ｐｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）｝と、記憶部１０から読み出した、時刻ｔにおける自機が移動速度番号ｗを選択する確率Ｐｓｅｌ（ｗ，ｔ）との積Ｐｓｅｌ（ｗ，ｔ）・Σｓ’｛Ｐｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）｝を求める。
このようにして、移動確率計算部６２と積算部６３と加算部６４と積算部６５は、すべての自機が取り得る移動速度番号ｗについて上記Ｐｓｅｌ（ｗ，ｔ）・Σｓ’｛Ｐｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）｝を計算する。
【００４４】
加算部６６は、各移動速度番号ｗごとに求まった上記Ｐｓｅｌ（ｗ，ｔ）・Σｓ’｛Ｐｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）｝を加算する。すなわち、ΣｗＰｓｅｌ（ｗ，ｔ）・Σｓ’｛Ｐｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）｝を計算する。
最大値抽出部６９は、ｍａｘ（Ｐｂｊ（ｔ＋Ｔ，ｓ））を計算する。すなわち、敵機攻撃弾存在確率記憶部６１０から読み出した時刻ｔ＋Ｔにおいて敵機の攻撃弾が升目ｓに存在する各確率Ｐｂｊ（ｔ＋Ｔ，ｓ）（ｊ＝１，・・・，Ｊ）を比較して、最も大きい値を出力する。すなわち、すべてのｊ＝１，・・・，ＪについてのＰｂｊ（ｔ＋Ｔ，ｓ）を比較して最も大きい値を出力する。
【００４５】
減算部６０は、１から、上記計算されたｍａｘ（Ｐｂｊ（ｔ＋Ｔ，ｓ））を減算した値を計算する。
積算部６７は、加算部６６が計算したΣｗＰｓｅｌ（ｗ，ｔ）・Σｓ’｛Ｐｔｒｓ（ｓ’，ｓ，ｗ）・Ｐｓ（ｔ，ｓ’）｝と、減算部６０が計算した１−ｍａｘ（Ｐｂｊ（ｔ＋Ｔ，ｓ））との積を求める。
このようにして、１−ｍａｘ（Ｐｂｊ（ｔ＋Ｔ，ｓ））を乗算することにより、時刻ｔ＋Ｔにおいて敵機の攻撃弾が升目ｓに存在している場合には自機が破壊されたものとして、自機の存在確率Ｐｓ（ｔ，ｓ）を計算することができる。
【００４６】
このようにして、自機存在確率計算部６は、時刻ｔにおける自機が升目ｓに存在する確率Ｐｓ（ｔ，ｓ）に基づいて、時刻ｔ＋Ｔにおける自機が升目ｓに存在する確率Ｐｓ（ｔ＋Ｔ，ｓ）を計算する。
上記の処理をすべてのｔ（ｔ＝Ｔ，…，（ｎ−１）Ｔ）について、ｔが小さい順に行い、各時刻ごとに自機が升目ｓに存在する確率を求め、最終的に、時刻ｔ＝ｎＴにおいて、自機が升目ｓに存在する確率を求める。
【００４７】
なお、自機が、時刻ｔ＝０において自機が取っている行動を、時刻ｔ＝０から所定の時間長Ｔ２又は所定の時刻ステップｎ２だけ繰り返し取り続けると仮定して、自機の存在確率Ｐｓ（ｔ，ｓ）を求めてもよい。これは、シューティングゲームのプレイヤーは、方向指示レバーをある方向に行動単位時間Ｔを越える長い時間倒し続けることが多いこと、すなわち、連続する各時刻においてある方向に自機を移動する操作をし続けることが多いことを考慮したものである。上記した探索計算の量を少なくすることができるというメリットがある。
【００４８】
次に、敵機攻撃弾存在確率記憶部６１０に予め格納されている時刻ｔにおいて敵機の攻撃弾ｊが升目ｓに存在する各確率Ｐｂｊ（ｔ，ｓ）の求め方について説明をする。
図１０に示す敵機攻撃弾存在確率計算部７は、時刻ｔにおける敵機の攻撃弾が升目ｓ’に存在する確率Ｐｂｊ（ｔ，ｓ’）に基づいて、時刻ｔ＋Ｔにおける敵機の攻撃弾が升目ｓに存在する確率Ｐｂｊ（ｔ，ｓ）を求める。そして、敵機攻撃弾存在確率計算部７は、この処理を繰り返すことによって、最終的に、各時刻ｔ＝ｎＴ（ｎ＝１…Ｎ）ごとに、敵機の攻撃弾が升目ｓに存在している確率を求める。計算した確率Ｐｂｊ（ｔ，ｓ）は、敵機攻撃弾存在確率記憶部６１０に格納される。
【００４９】
具体的には、例えば、図１０に示す敵機攻撃弾存在確率計算部７は、次式を計算することによって、時刻ｔにおける敵機の攻撃弾が升目ｓ’に存在する確率Ｐｂｊ（ｔ，ｓ’）に基づいて、時刻ｔ＋Ｔにおける敵機の攻撃弾が升目ｓに存在する確率Ｐｂｊ（ｔ，ｓ）を求める。
Ｐｂｊ（ｔ＋Ｔ，ｓ）＝Σｓ’｛Ｐｔｒｂｊ（ｓ’，ｓ）・Ｐｂｊ（ｔ，ｓ’）｝  …（４）
ここで、Ｐｔｒｂｊ（ｓ’，ｓ）は、時刻ｔにおいて升目ｓ’に存在する敵機の攻撃弾が、所定の移動速度（Ｖｘｂｊ，Ｖｙｂｊ）に従って行動単位時間Ｔだけ移動することによって、時刻ｔ＋Ｔにおいて升目ｓに存在している確率である。Ｐｔｒｂｊ（ｓ’，ｓ）の計算の仕方については後述する。
【００５０】
時刻ｔ＝０における敵機の攻撃弾の存在確率Ｐｂｊ（０，ｓ）は、例えば、時刻ｔ＝０における攻撃弾の座標（ｘｂｊ，ｙｂｊ）を含む升目ｓ＃についての敵機攻撃弾存在確率Ｐｂｊ（０，ｓ＃）＝１とし、他の升目についての敵機攻撃弾存在確率をＰｂｊ（０，ｓ＃）＝０とする。また、（ｘｂｊ，ｙｂｊ）を中心とした升目ｓｂｊとゲーム画面を分割した格子を構成する各升目ｓと重なる部分の面積を計算する。そして、敵機の攻撃弾は、その重なった部分の面積に比例した確率Ｐｂｊ（０，ｓ）で、各升目ｓに存在しているものとしてもよい。この場合、例えば、敵機の攻撃弾の形状に内接する円の直径と、自機の形状に内接する円の直径との和の半分の値を、敵機の位置（ｘｂｊ，ｙｂｊ）を中心とした升目ｓｂｊの一辺の長さにすることができる。
【００５１】
上記の処理をすべてのｔ（ｔ＝Ｔ，…，（ｎ−１）Ｔ）について、ｔが小さい順に行い、各時刻ごとに敵機の攻撃弾が升目ｓに存在する確率を求め、最終的に、時刻ｔ＝ｎＴにおいて、敵機の攻撃弾が升目ｓに存在する確率を求める。これらの計算された確率は、敵機攻撃弾存在確率記憶部６１０に格納される。
【００５２】
［射線上存在確率Ｐｓｘ（ｔ，ｓ）の求め方について］
次に、上記実施形態において、自機が升目ｓに位置する敵機を破壊することができる確率として用いた射線上存在確率Ｐｓｘ（ｔ，ｓ）の求め方について説明をする。Ｐｓｘ（ｔ，ｓ）は、升目ｓに存在する敵機が、自機の射線上に位置する確率である。敵機が升目ｘｓに位置する場合、Ｐｓｘ（ｔ，ｘｓ）は、次のように定義される。
Ｐｓｘ（ｔ，ｘｓ）＝（Σｓ∈ｘｓ＊Ｐｓ（ｔ，ｓ））／ｎｕｍ（ｘｓ＊）
ここで、升目の集合ｘｓ＊は、升目ｓ∈ｘｓ＊に位置する自機の射線上に、升目ｘｓがある、という条件を満たすすべての升目ｓから構成される集合である。すなわち、ｘｓ＊は、升目ｘｓを通過する射線を有する自機が位置するすべての升目ｓの集合である。ｎｕｍ（ｘｓ＊）は升目の集合ｘｓ＊を構成する升目の数である。
【００５３】
例えば、自機の攻撃弾が画面の上（ｙ軸の正方向）に向かって発射される場合には、升目の集合ｘｓ＊は、升目ｘｓとＸ座標が同じ升目であり、升目ｘｓから下（Ｙ軸の負方向）にある升目からの構成される集合ことであり、ｎｕｍ（ｘｓ＊）は、升目ｘｓから下（Ｙ軸の負方向）にある升目の数である。
なお、計算量を軽減する場合には、升目の集合ｘｓ＊を、升目ｘｓを通り、自機の射線と同じ傾きを持つ直線上に位置する升目から構成される集合と定義して上記Ｐｓｘ（ｔ，ｘｓ）の計算をしてもよい。
【００５４】
［敵機位置ｓｅｉ（ｔ，ａ）及び敵機存在確率Ｐｅｉ（ｔ，ｓ，ａ）の求め方について］
敵機が時刻ｔ＝０において行動として移動速度番号ａを選択して、この移動速度番号ａに従って移動する敵機が各時刻ｔ＝ｎＴにおいて存在する升目（位置）ｓｅｉ（ｔ，ａ）と、敵機が時刻ｔ＝０において行動として移動速度番号ａを選択して、この移動速度番号ａに従って移動する敵機が各時刻ｔ＝ｎＴにおいて各升目（位置）に存在する確率Ｐｅｉ（ｔ，ｓ，ａ）の求め方の一例を説明をする。
【００５５】
まず、敵機位置ｓｅｉ（ｔ，ａ）の求め方について説明をする。時刻ｔ＝０において敵機が存在する座標を（ｘｅｉ，ｙｅｉ）とする。敵機が行動である移動速度番号ａを選択した場合、上記実施形態では敵機が各時刻ｔ＝ｎＴにおいて移動速度番号ａに従って行動単位時間Ｔだけ移動する動作を繰り返すため、各時刻ｔにおける敵機の座標は、（ｘｅｉ＋Ｖｘｅ（ａ）×ｔ，ｙｅｉ＋Ｖｙｅ（ａ）×ｔ）で計算することができる。ここで、（Ｖｘｅ（ａ），Ｖｙｅ（ａ））は、移動速度番号ａに対応した移動速度ベクトルである。このとき、敵機位置ｓｅｉ（ｔ，ａ）は、座標（ｘｅｉ＋Ｖｘｅ（ａ）×ｔ，ｙｅｉ＋Ｖｙｅ（ａ）×ｔ）を含む升目となる。
【００５６】
つぎに、第二実施形態で用いる敵機存在確率Ｐｅｉ（ｔ，ｓ，ａ）の求め方について説明をする。図１１に示す敵機存在確率計算部８は、時刻ｔにおける敵機が升目ｓ’に存在する確率Ｐｅｉ（ｔ，ｓ’，ａ）に基づいて、時刻ｔ＋Ｔにおける敵機が升目ｓに存在する確率Ｐｅｉ（ｔ，ｓ，ａ）を求める。そして、敵機存在確率計算部８は、この処理を繰り返すことによって、最終的に、各時刻ｔ＝ｎＴ（ｎ＝１…Ｎ）ごとに、敵機が升目ｓに存在している確率を求める。計算した確率Ｐｅｉ（ｔ，ｓ，ａ）は、敵機存在確率記憶部１４に格納される。
【００５７】
具体的には、例えば、図１１に示す敵機存在確率計算部８は、次式を計算することによって、時刻ｔにおける敵機が升目ｓ’に存在する確率Ｐｅｉ（ｔ，ｓ’，ａ）に基づいて、時刻ｔ＋Ｔにおける敵機が升目ｓに存在する確率Ｐｅｉ（ｔ，ｓ，ａ）を求める。
Ｐｅｉ（ｔ＋Ｔ，ｓ，ａ）＝Σｓ’｛Ｐｔｒｅｉ（ｓ’，ｓ，ａ）・Ｐｅｉ（ｔ，ｓ’ ，ａ）｝  …（５）
ここで、Ｐｔｒｅｉ（ｓ’，ｓ，ａ）は、時刻ｔにおいて升目ｓ’に存在する敵機が、所定の移動速度（Ｖｘｅ（ａ），Ｖｙｅ（ａ））に従って行動単位時間Ｔだけ移動することによって、時刻ｔ＋Ｔにおいて升目ｓに存在している確率である。Ｐｔｒｅｉ（ｓ’，ｓ，ａ）の計算の仕方については後述する。
【００５８】
時刻ｔ＝０における敵機の存在確率Ｐｅｉ（０，ｓ，ａ）は、例えば、（ｘｅｉ，ｙｅｉ）を含む升目ｓ＃についての敵機存在確率Ｐｅｉ（０，ｓ＃，ａ）＝１とし、他の升目についての敵機存在確率をＰｅｉ（０，ｓ＃，ａ）＝０とする。また、（ｘｅｉ，ｙｅｉ）を中心とした升目ｓｅｉと、ゲーム画面を分割した格子を構成する各升目ｓと重なる部分の面積を計算し、敵機は、その重なった部分の面積に比例した確率で、各升目ｓに存在しているとしてもよい。例えば、敵機の形状に内接する円の直径と、自機の形状に内接する円の直径との和の半分の値を、敵機の位置（ｘｅｉ，ｙｅｉ）を中心とした升目ｓｅｉの一辺の長さにすることができる。
【００５９】
上記の処理をすべてのｔ（ｔ＝Ｔ，…，（ｎ−１）Ｔ）について、ｔが小さい順に行い、各時刻ごとに敵機が升目ｓに存在する確率を求め、最終的に、時刻ｔ＝ｎＴにおいて、敵機が升目ｓに存在する確率を求める。これらの計算された確率は、敵機存在確率記憶部１４に格納される。
【００６０】
［移動確率Ｐｔｒｓ（ｓ’，ｓ，ｗ）、Ｐｔｒｂｊ（ｓ’，ｓ）、Ｐｔｒｅｉ（ｓ’，ｓ，ａ）の計算方法について］
以下、升目ｓ’に存在する自機が移動速度番号ｗの移動速度（Ｖｘｓ（ｗ），Ｖｙｓ（ｗ））に従って行動単位時間Ｔだけ移動することによって升目ｓに移動する確率Ｐｔｒｓ（ｓ’，ｓ，ｗ）、升目ｓ’に存在する敵機の攻撃弾が所定の移動速度（Ｖｘｅｊ，Ｖｙｅｉ）に従って行動単位時間Ｔだけ移動することによって升目ｓに移動する確率Ｐｔｒｂｊ（ｓ’，ｓ）、升目ｓ’に存在する敵機が敵機の移動速度番号ａの移動速度（Ｖｘｅ（ａ），Ｖｙｅ（ａ））に従って行動単位時間Ｔだけ移動することによって升目ｓに移動する確率Ｐｔｒｅｉ（ｓ’，ｓ，ａ）の求め方について説明する。
【００６１】
まず、Ｐｔｒｓ（ｓ’，ｓ，ｗ）の求め方について説明する。自機が移動速度番号ｗを選択して行動単位時間Ｔだけ移動した場合のｘ座標とｙ座標の変位量（ｄｘｓ，ｄｙｓ）は、
ｄｘｓ＝Ｖｘｓ（ｗ）×Ｔ
ｄｙｓ＝Ｖｙｓ（ｗ）×Ｔ
である。自機が存在する升目ｓ’を上記変位量（ｄｘｓ，ｄｙｓ）だけ平行移動した升目をｓｄｓとする。升目ｓｄｓと升目ｓが重なる面積の、升目ｓ全体の面積に対する比率をＰｔｒｓ（ｓ’，ｓ，ｗ）とする。
【００６２】
例えば、図１２に示すように、升目ｓｄｓが、升目ｓ１〜ｓ９と重なったとする。ここで、各升目に記載された０から１までの数値は、升目ｓｄｓとその升目が重なる面積の、その升目の面積に対する比率を表わしたものである。このとき、Ｐｔｒｓ（ｓ’，ｓ１，ｗ）＝０．２、Ｐｔｒｓ（ｓ’，ｓ２，ｗ）＝０．３３、Ｐｔｒｓ（ｓ’，ｓ３，ｗ）＝０．０９、Ｐｔｒｓ（ｓ’，ｓ４，ｗ）＝０．６、Ｐｔｒｓ（ｓ’，ｓ５，ｗ）＝１、Ｐｔｒｓ（ｓ’，ｓ６，ｗ）＝０．２４、Ｐｔｒｓ（ｓ’，ｓ７，ｗ）＝０．２５、Ｐｔｒｓ（ｓ’，ｓ８，ｗ）＝０．３８、Ｐｔｒｓ（ｓ’，ｓ９，ｗ）＝０．１となる。
【００６３】
次に、Ｐｔｒｂｊ（ｓ’，ｓ）の求め方について説明する。敵機の攻撃弾が所定の移動速度（Ｖｘｂｊ，Ｖｙｂｊ）に従って行動単位時間Ｔだけ移動した場合のｘ座標とｙ座標の変位量（ｄｘｂｊ，ｄｙｂｊ）は、
ｄｘｂｊ＝Ｖｘｂｊ×Ｔ
ｄｙｂｊ＝Ｖｙｂｊ×Ｔ
である。敵機の攻撃弾が存在する升目ｓ’の中心に、一辺の大きさが敵機の攻撃弾の大きさ（敵機の攻撃弾の形状に内接する円の直径）と自機の大きさ（自機の形状に内接する円の直径）の和の半分である升目を新たに作成し、この升目を上記変位量（ｄｘｂｊ，ｄｙｂｊ）だけ平行移動した升目をｓｄｂｊとする。升目ｓｄｂｊと升目ｓが重なる面積の、升目ｓ全体の面積に対する比率をＰｔｒｂｊ（ｓ’，ｓ）とする。
【００６４】
最後に、Ｐｔｒｅｉ（ｓ’，ｓ，ａ）の求め方について説明する。敵機が移動速度番号ａを選択して行動単位時間Ｔだけ移動した場合のｘ座標とｙ座標の変位量（ｄｘｅｉ，ｄｙｅｉ）は、
ｄｘｅｉ＝Ｖｘｅｉ（ａ）×Ｔ
ｄｙｅｉ＝Ｖｙｅｉ（ａ）×Ｔ
である。敵機が存在する升目ｓ’の中心に、一辺の大きさが敵機の大きさ（敵機の形状に内接する円の直径）と自機の大きさ（自機に内接する円の直径）の和の半分である升目を新たに作成し、この升目を上記変位量（ｄｘｅｉ，ｄｙｅｉ）だけ平行移動した升目をｓｄｅｉとする。升目ｓｄｅｉと升目ｓが重なる面積の、升目ｓ全体の面積に対する比率をＰｔｒｅｉ（ｓ’，ｓ，ａ）とする。
【００６５】
このように、敵機が位置する升目の一辺の長さ、及び、この升目を敵機の位置の変位量（ｄｘｅｉ，ｄｙｅｉ）だけ移動させた升目ｓｄｅｉの一辺の長さを、敵機の大きさ（敵機の形状に内接する円の直径）と自機の大きさ（自機の形状に内接する円の直径）の和の半分の値とすると、敵機が自機を破壊することができる範囲と上記升目が覆う範囲がほぼ同一となり、敵機と自機の接触をより適切に判定することができる。なお、敵機の攻撃弾が位置する升目を敵機の攻撃弾の位置の変位量（ｄｘｂｊ，ｄｙｂｊ）だけ移動させた升目ｓｄｂｊの一辺の長さを、敵機攻撃弾の大きさ（敵機の攻撃弾の形状に内接する円の直径）と自機の大きさ（自機の形状に内接する円の直径）の和の半分の値とした理由についても同様である。
【００６６】
［変形例等］
上記実施形態では、敵機がある行動ａに従って移動した場合の各時刻ｔにおける、敵機が自機を破壊する確率と自機が敵機を破壊する確率とを用いて敵機の行動を制御したが、確率に代えて、敵機がある行動ａに従って移動した場合の各時刻ｔにおける、敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とをそれぞれ用いることができる。任意の指標を用いた場合であっても、確率の代わりにこの任意に指標を用いた点が異なるだけで、敵機の行動制御の処理方法は、上記実施形態と同様である。
敵機が自機を破壊する確率と自機が敵機を破壊する確率とは、敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す可能性を表す指標とをそれぞれ正規化したものである。敵機の自機破壊確率として用いたＰｓ（ｔ，ｓ）と自機の敵機破壊確率として用いたＰｓｘ（ｔ，ｓ）は、敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す可能性を表す指標の一例に過ぎない。
【００６７】
例えば、ｒが大きいほど大きい値を出力する関数ｆをｆ（ｒ）とする。敵機が各行動ａに従って移動した場合の各時刻ｔにおける自機の座標と敵機の座標をそれぞれ計算して、これらの座標から自機と敵機の距離ｒを求め、この距離ｒから上記関数ｆ（ｒ）の出力を求める。自機と敵機の距離が小さいほど、接触により自機が破壊される可能性が高くなるため、上記関数ｆ（ｒ）の出力値は、敵機が自機を破壊する可能性を示す指標となっている。この関数ｆ（ｒ）の出力値を、敵機がある行動ａに従って移動した場合のある時刻ｔにおける敵機が自機を破壊する確率の代わりに用いてもよい。
【００６８】
また、敵機が自機の射線上に位置する場合には自機と敵機の距離ｒが大きいほど大きい値を出力し、敵機が自機の射線上に位置しない場合には敵機の自機の射線からの距離が小さいほど大きな値を出力する関数をｇとする。関数ｇの出力値は、敵機がある行動ａに従って移動した場合の各時刻ｔにおける、自機が敵機を破壊する可能性を示す指標となっている。各行動ａに従って移動した場合の各時刻ｔにおける敵機が自機の射線上に位置するかどうかと、自機と敵機の距離と、敵機の自機の射線からの距離とを求め、これらの求めた値から関数ｇの出力値を計算する。この関数ｇの出力値を、敵機がある行動ａに従って移動した場合のある時刻ｔにおける敵機が自機を破壊する確率の代わりに用いてもよい。
【００６９】
上記実施形態では、混合値をＦ（ｔ，ｓ）＝αＰｓ（ｔ，ｓ）＋βＰｓｘ（ｔ，ｓ）、又は、Ｆ（ｔ，ａ）＝ΣｓＰｅｉ（ｔ，ｓ，ａ）（αＰｓ（ｔ，ｓ）＋βＰｓｘ（ｔ，ｓ））によって求めた。しかし、敵機混合パラメータによる、敵機の自機破壊確率と自機の敵機破壊確率とを敵機混合パラメータによって混合して混合値Ｆを計算する方法は、上記したものに限られない。例えば、上記敵機行動パラメータβの代わりに１−αを用いることにより、ひとつの敵機行動パラメータαで敵機の行動を制御することが可能になる。
【００７０】
また、関数ｆ１、ｆ２、ｆ３、ｆ４を値域［０，∞］である単調増加関数をとして、次式によって定義される混合値Ｆ’（ｔ，ｓ）、Ｆ’’（ｔ，ｓ）、Ｆ’（ｔ，ａ）、Ｆ’’（ｔ，ａ）を用いて本発明を実施してもよい。
Ｆ’（ｔ，ｓ）＝αｆ１（Ｐｓ（ｔ，ｓ））＋βｆ２（Ｐｓｘ（ｔ，ｓ））
Ｆ’’（ｔ，ｓ）＝ｆ３（Ｐｓ（ｔ，ｓ））αｆ４（Ｐｓｘ（ｔ，ｓ））β
Ｆ’（ｔ，ａ）＝ΣｓＰｅｉ（ｔ，ｓ，ａ）（αｆ１（Ｐｓ（ｔ，ｓ））＋βｆ２（Ｐｓｘ（ｔ，ｓ）））
Ｆ’’（ｔ，ａ）＝ΣｓＰｅｉ（ｔ，ｓ，ａ）（ｆ３（Ｐｓ（ｔ，ｓ））αｆ４（Ｐｓｘ（ｔ，ｓ））β）
【００７１】
すなわち、例えば、敵機の自機破壊確率（Ｐｓ（ｔ，ｓ））を非負の値を出力する第一の単調増加関数ｆ１に入力した値と、自機の敵機破壊確率（Ｐｓｘ（ｔ，ｓ））を非負の値を出力する第二の単調増加関数ｆ２に入力した値とを敵機行動パラメータで重み付き加算した値を計算することにより混合値Ｆ’（ｔ，ｓ）を計算してもよい。また、例えば、敵機の自機破壊確率（Ｐｓ（ｔ，ｓ））を非負の値を出力する第一の単調増加関数ｆ１に入力した値を敵機行動パラメータαでべき乗した値と、自機の敵機破壊確率（Ｐｓｘ（ｔ，ｓ））を非負の値を出力する第二の単調増加関数ｆ２に入力した値を敵機行動パラメータβでべき乗した値とをかけた値を計算することにより混合値Ｆ’’（ｔ，ｓ）を求めてもよい。このように、敵機の自機破壊確率と自機の敵機破壊確率とを、敵機行動パラメータを用いて混合して混合値を求める方法は任意である。
【００７２】
図１と図２に破線で示すように敵機行動パラメータ入力手段５１を設けて、本発明を実施する者が敵機行動パラメータを入力することができるようにしてもよい。敵機行動パラメータ入力手段５１によって入力された敵機行動パラメータは混合値計算部２の記憶部２１に格納され、この敵機行動パラメータに基づいて本発明による敵機の行動制御が行われる。敵機行動パラメータ入力手段５１として、マウスやキーパット等のポインティングデバイスやキーボードを用いることができる。自由に敵機行動パラメータを設定することができるようにすることにより、本発明の利便性が増すという有利な効果がある。
【００７３】
上記実施形態では、ステップＳ１以下の敵機の行動を決定するための処理を行う前に、敵機の自機存在確率の一例であるＰｓ（ｔ，ｓ）と、自機の敵機存在確率の一例であるＰｓｘ（ｔ，ｓ）と、敵機位置ｓｅｉ（ｔ，ａ）とが予め計算されて所定の記憶手段に格納されているとした（ステップＳ０）。しかし、必ずしも処理の前段階でこれらの確率・位置のすべてが計算されている必要はない。すなわち、これらの確率の計算とステップＳ１以下の処理を並列的に行ってもよい。
【００７４】
上記実施形態では、加算部３の処理において、混合値Ｆ（ｔ，ｓ）、Ｆ（ｔ，ａ）に関して、すべての時刻ｔ＝ｎＴ（ｎ＝１，…，Ｎ）についての和を取った。しかし、時刻ｔ＝ｎＴの一部の時刻について和を取ることにしても構わない。一部の時刻のみについての和を取り、その和を最大にする行動（移動速度番号）を選択することにより、計算負担を軽減することができる。
【００７５】
上記実施形態では、敵機の行動としてある移動速度番号ａが選択された場合には、その移動速度番号ａに従った移動を各時刻ｔ＝ｎＴにおいて繰り返すと仮定した。しかし、各時刻ｔにおいて、異なる移動速度番号ａに従って移動をする動作を各行動と定義しても良い。例えば、各時刻ｔにおいて敵機が取ることができる移動速度番号は１から３の３つであり、探索ステップ数Ｎ＝３とする。このとき、図１３に示すように、行動は３３＝２７個存在する。図１３において、行動１は、時刻ｔ＝Ｔにおいて移動速度番号１に従って移動し、時刻ｔ＝２Ｔにおいて移動速度番号１に従って移動し、時刻ｔ＝３Ｔにおいて移動速度番号１に従って移動することを意味する。行動２は、時刻ｔ＝Ｔにおいて移動速度番号１に従って移動し、時刻ｔ＝２Ｔにおいて移動速度番号２に従って移動し、時刻ｔ＝３Ｔにおいて移動速度番号２に従って移動することを意味する。他の行動についても同様であり、敵機の行動は、図１３の表の右に示した移動速度番号に従った移動を、各時刻ｔ＝ｎＴ（ｎ＝１，…，３）において行うことを意味する。このように行動を２７個定義した場合であっても、上記実施形態と同様にして、敵機が各行動を取った場合における上記混合値を計算して、この混合値の時間についての総和を最も大きくする行動を選択して、その行動に基づいて敵機を制御する。
【００７６】
また、移動速度番号に代えて、加速度番号を用いて行動を定義してもよい。すなわち、敵機は、各時刻においてＡ１種類の加速度番号の中からひとつの加速度番号ａ１∈Ａ１を選択することができるものとし、敵機がある行動ａ１を選択した場合には、敵機は、すべての時刻ｔ＝ｎＴ（１，…，Ｎ）において、加速度番号ａ１に対応して予め定められた加速度（Ａｘ（ａ１），Ａｙ（ａ１））に従って移動するように行動を定義してもよい。また、図１３を参照して上述したのと同様に、各時刻ｔ＝ｎＴにおいて、異なる加速度番号ａ１に従って移動する各動作を行動と定義してもよい。加速度番号を用いる場合であっても、上記実施形態と同様にして、敵機が各行動を取った場合における上記混合値を計算して、それらの混合値を最も大きくする行動を選択して、その行動に基づいて敵機を制御する。なお、上記加速度の概念は、角加速度を含むとする。また、上記速度の概念は、角速度を含むとする。すなわち、移動速度番号の代わりに角速度番号を用いて同様の処理を行ってもよい。
【００７７】
本発明は、二次元のシューティングゲームだけではなく、三次元のシューティングゲームについても適用することができる。
上記した変形例は適宜組み合わせることができる。
また、上記シューティングゲームの敵機動作制御装置、方法をコンピュータによって実現することができる。この場合、シューティングゲームの敵機動作制御装置、方法の内容はプログラムによって記述される。そして、このプログラムを、図１４に示すようなコンピュータで実行することにより、上記シューティングゲームの敵機動作制御装置の各部の機能がコンピュータ上で実現される。
【００７８】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【００７９】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００８０】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００８１】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームの敵機動作制御装置、方法を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
以上の各実施形態の他、本発明であるシューティングゲームの敵機動作制御方法、方法、プログラム及びその記録媒体は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【００８２】
【図１】本発明の第一実施形態による敵機行動制御装置１０００の機能構成を例示した図。
【図２】本発明の第二実施形態による敵機行動制御装置１００１の機能構成を例示した図。
【図３】本発明の第一実施形態による敵機行動制御装置１０００の処理の流れを例示した図。
【図４】ステップＳ１の具体的な処理を例示した図。
【図５】シューティングゲームの模式図。
【図６】敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を表す図。
【図７】敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を表す図。
【図８】敵機行動パラメータ決定部５の機能構成を例示した図。
【図９】自機存在確率計算部６の機能構成を例示した図。
【図１０】敵機攻撃弾存在確率計算部７の機能構成を例示した図。
【図１１】敵機存在確率計算部８の機能構成を例示した図。
【図１２】存在確率の計算についての説明を補助する図。
【図１３】各時刻ｔごとに異なる移動速度番号を取る行動の例を表した図。
【図１４】本発明による敵機行動制御装置をコンピュータにより実行する場合の機能構成を例示した図。
【図１】
2008183177.tif 000003
【図２】
2008183177.tif 000004
【図３】
2008183177.tif 000005
【図４】
2008183177.tif 000006
【図５】
2008183177.tif 000007
【図６】
2008183177.tif 000008
【図７】
2008183177.tif 000009
【図８】
2008183177.tif 000010
【図９】
2008183177.tif 000011
【図１０】
2008183177.tif 000012
【図１１】
2008183177.tif 000013
【図１２】
2008183177.tif 000014
【図１３】
2008183177.tif 000015
【図１４】
2008183177.tif 000016