(57)【特許請求の範囲】
【請求項１】
自機安全行動パターン計算手段と、自機撃墜確率計算手段と、積算手段と、加算手段と、最大値判定手段とを備えたコンピュータが、画面上に自機と敵機を表示し、自機をＷ種類の行動ｗによって所定の時間（以下、行動単位時間Ｔとする。）だけ移動させる操作を行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの処理を行う方法において、
自機安全行動パターン計算手段が、自機が各行動ｗを選択することにより行動単位時間Ｔの経過後に位置（Ｘｗ，Ｙｗ）へ移動する確率Ｐｍ（Ｘｗ，Ｙｗ）を求める自機安全行動パターン計算過程と、
自機撃墜確率計算手段が、自機が行動ｗを選択した場合の行動単位時間Ｔの経過後の位置（Ｘｗ，Ｙｗ）と、敵機が行動ｋを選択した場合の行動単位時間Ｔの経過後の位置（Ｘｋ，Ｙｋ）との組み合わせごとに、自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する自機撃墜確率計算過程と、
積算手段が、自機の行動ｗごとに、上記自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）と、上記自機が各行動ｗを選択することにより行動単位時間Ｔの経過後に位置（Ｘｗ，Ｙｗ）へ移動する確率Ｐｍ（Ｘｗ，Ｙｗ）との積Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を求める積算過程と、
加算手段が、上記積算過程で求まった上記Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を、自機のすべての行動ｗについて加算することにより、敵機が行動ｋを選択した場合の自機撃墜確率の和ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を求める加算過程と、
最大値判定手段が、上記加算過程で求まった上記ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を最大にする敵機の行動ｋを求めることにより、敵機の行動ｋを決定する最大値判定過程と、
を有することを特徴とするシューティングゲーム処理方法。
【請求項２】
請求項１に記載のシューティングゲーム処理方法において、
上記自機安全行動パターン計算過程は、自機が敵機の攻撃弾により破壊されない行動パターンを安全行動パターンとすると、自機が行動ｗを選択した場合の安全行動パターンの数を、安全行動パターンの総数により割算することによりＰｍ（Ｘｗ，Ｙｗ）を求める過程である、
ことを特徴とするシューティングゲーム処理方法。
【請求項３】
請求項１又は２記載のシューティングゲーム処理方法において、
上記自機撃墜確率計算過程は、自機が行動ｗを選択した場合の移動先の位置（Ｘｗ，Ｙｗ）と、敵機が行動ｋを選択した場合の移動先の位置（Ｘｋ，Ｙｋ）との距離をｒとすると、ｒが小さいほど、上記自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）が大きくなるように上記自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する過程を含む、
ことを特徴とするシューティングゲーム処理方法。
【請求項４】
請求項１乃至３の何れかに記載のシューティングゲーム処理方法において、
自機の形状に内接する円の直径を自機の速度で割った値を、上記行動単位時間Ｔとする、
ことを特徴とするシューティングゲーム処理方法。
【請求項５】
請求項１乃至４の何れかに記載のシューティングゲーム処理方法において、
上記自機安全行動パターン計算過程は、自機位置の現在速度を自機が未来において一定時間Ｔｃ継続した後に、行動ｗを選択することによって位置（Ｘｗ，Ｙｗ）へ移動する確率Ｐｍ（Ｘｗ，Ｙｗ）を求める過程であり、
上記自機撃墜確率計算過程は、上記自機位置の現在速度を自機が未来において一定時間Ｔｃだけ継続した後に、行動ｗを選択した自機の行動単位時間Ｔ経過後の位置（Ｘｗ，Ｙｗ）と、敵機が行動ｋを選択した場合の行動単位時間Ｔ＋一定時間Ｔｃの経過後の位置（Ｘｋ，Ｙｋ）との組み合わせごとに、自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する過程である、
ことを特徴とするシューティングゲーム処理方法。
【請求項６】
請求項１乃至５の何れかに記載のシューティングゲーム処理方法において、
射線判定手段が、敵機が行動ｋを選択した場合の行動単位時間Ｔ後の位置（Ｘｋ，Ｙｋ）が、自機が行動ｗを選択した場合の行動単位時間Ｔ後の位置（Ｘｗ，Ｙｗ）に位置する自機の射線上にあるか否かを判断する射線判定過程、を更に有し、
上記自機撃墜確率計算過程は、射線判定過程により、射線上にあると判定された場合には、上記自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）が小さくなるように上記自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する過程を含む、
ことを特徴とするシューティングゲーム処理方法。
【請求項７】
画面上に自機と敵機を表示し、自機をＷ種類の行動ｗによって所定の時間（以下、行動単位時間Ｔとする。）だけ移動させる操作を行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームにおいて、
自機が各行動ｗを選択することにより行動単位時間Ｔの経過後に位置（Ｘｗ，Ｙｗ）へ移動する確率Ｐｍ（Ｘｗ，Ｙｗ）を求める自機安全行動パターン計算手段と、
自機が行動ｗを選択した場合の行動単位時間Ｔの経過後の位置（Ｘｗ，Ｙｗ）と、敵機が行動ｋを選択した場合の行動単位時間Ｔの経過後の位置（Ｘｋ，Ｙｋ）との組み合わせごとに、自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する自機撃墜確率計算手段と、
自機の行動ｗごとに、上記自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）と、上記自機が各行動ｗを選択することにより行動単位時間Ｔの経過後に位置（Ｘｗ，Ｙｗ）へ移動する確率Ｐｍ（Ｘｗ，Ｙｗ）との積Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を求める積算手段と、
上記積算手段で求まった上記Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を、自機のすべての行動ｗについて加算することにより、敵機が行動ｋを選択した場合の自機撃墜確率の和ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を求める加算手段と、
上記加算手段で求まった上記ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を最大にする敵機の行動ｋを求めることにより、敵機の行動ｋを決定する最大値判定手段と、
を有することを特徴とするシューティングゲーム処理装置。
【請求項８】
画面上に自機と敵機を表示し、自機をＷ種類の行動ｗによって所定の時間（以下、行動単位時間Ｔとする。）だけ移動させる操作を行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの処理を行うプログラムにおいて、
自機が各行動ｗを選択することにより行動単位時間Ｔの経過後に位置（Ｘｗ，Ｙｗ）へ移動する確率Ｐｍ（Ｘｗ，Ｙｗ）を求める自機安全行動パターン計算過程と、
自機が行動ｗを選択した場合の行動単位時間Ｔの経過後の位置（Ｘｗ，Ｙｗ）と、敵機が行動ｋを選択した場合の行動単位時間Ｔの経過後の位置（Ｘｋ，Ｙｋ）との組み合わせごとに、自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する自機撃墜確率計算過程と、
自機の行動ｗごとに、上記自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）と、上記自機が各行動ｗを選択することにより行動単位時間Ｔの経過後に位置（Ｘｗ，Ｙｗ）へ移動する確率Ｐｍ（Ｘｗ，Ｙｗ）との積Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を求める積算過程と、
上記積算過程で求まった上記Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を、自機のすべての行動ｗについて加算することにより、敵機が行動ｋを選択した場合の自機撃墜確率の和ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を求める加算過程と、
上記加算過程で求まった上記ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を最大にする敵機の行動ｋを求めることにより、敵機の行動ｋを決定する最大値判定過程と、
とをコンピュータに実行させるためのシューティングゲーム処理プログラム。
【請求項９】
請求項８記載のシューティングゲーム処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画面上に自機と敵機を表示し、自機をＷ種類の行動によって所定の時間（以下、行動単位時間Ｔとする。）だけ移動させる操作を行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの処理方法、その装置、そのプログラム及びその記録媒体に関する。
【背景技術】
【０００２】
シューティングゲームの処理方法、特に敵機の動作を制御する方法としては、自機の位置を考慮しないアルゴリズム、例えば、自機の位置とは無関係に敵機が一定方向に下降し続けるアルゴリズムや、自機の位置とは無関係に敵機が静止し続けるアルゴリズムを採用する方法があった。また、自機の位置を考慮するアルゴリズムとしては、例えば、自機の位置に近づくように敵機が動くアルゴリズムや、常に自機との位置を一定距離・方向に保つように敵機が動くアルゴリズムがあった。
また、チェス、オセロ、将棋といって非アクションの思考ゲームにおいては、人工知能の技術を導入したアルゴリズムの研究が行われている（例えば、非特許文献１参照）。
【非特許文献１】Jonathan Schaeffer,H.Jaap van den Herik,“Games,computers,and artificial intelligence”,Artificial Intelligence,2002,Vol.134,p1-7
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、従来技術による敵機の行動制御アルゴリズムは、単純なものに限られている。その結果、敵の攻撃回避に必要なプレイヤーの自機操作技術は、多くのシューティングゲームにおいて共通しており、従来技術による敵機の行動制御アルゴリズムを用いたシューティングゲームは、ユーザに飽きられやすいという問題があった。
また、各プレイヤーの自機操作の癖を考慮した敵機攻撃弾発射アルゴリズムの自動的な更新も不可能であったため、ユーザが一度そのゲームに習熟してしまうと、ユーザがすぐにそのゲームに飽きてしまうという問題があった。
【０００４】
そのような問題を解くためには、人工知能の技術を導入するのが有効であると考えられるが、現在人工知能におけるゲームの研究は、チェス、オセロ、将棋といった非アクションの思考ゲームが中心であり、人工知能の技術をシューティングゲームのようなアクションゲームに応用する試みはなかった。
また、チェス、オセロ、将棋といった思考ゲームを解くための人工知能技術の研究は、効率的に深い探索計算を行うための手法の開発に集中している（例えば、非特許文献１参照。）。もちろん、シューティングゲームにおいても、知的な敵機の動作アルゴリズムを開発するためには、探索技術は重要である。しかし、シューティングゲームにおいて、探索の深さに関する要求は低く、むしろ、いかにしてアクションゲームにおいて求められているレベルの実時間性を実現するかが大事である。しかし、そのような要求を満たす技術はなかった。
【０００５】
さらに、シューティングゲームにおける敵機の数は複数であることが前提であり、複数の敵機が連携で自機を追い込むような機能が求められている。しかし、そのような連携を制御するアルゴリズムは、全ての敵機の動きを監視する方式の中央制御では不十分である。なぜならば、ゲーム画面上に出現する敵機の状況は時々刻々と変化するものであり、それら全ての状況を考慮した中央制御アルゴリズムの開発は事実上不可能だからである。
【課題を解決するための手段】
【０００６】
本発明によれば、画面上に自機と敵機を表示し、自機をＷ種類の行動ｗによって所定の時間（以下、行動単位時間Ｔとする。）だけ移動させる操作を行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームにおいて、自機安全行動パターン計算手段が、自機が各行動ｗを選択することにより行動単位時間Ｔの経過後に位置（Ｘｗ，Ｙｗ）へ移動する確率Ｐｍ（Ｘｗ，Ｙｗ）を求める。自機撃墜確率計算手段が、自機が行動ｗを選択した場合の行動単位時間Ｔの経過後の位置（Ｘｗ，Ｙｗ）と、敵機が行動ｋを選択した場合の行動単位時間Ｔの経過後の位置（Ｘｋ，Ｙｋ）との組み合わせごとに、自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する。積算手段が、自機の行動ｗごとに、上記自機撃墜確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）と、上記自機が各行動ｗを選択することにより行動単位時間Ｔの経過後に位置（Ｘｗ，Ｙｗ）へ移動する確率Ｐｍ（Ｘｗ，Ｙｗ）との積Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を求める。加算手段が、上記積算過程で求まった上記Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を、自機のすべての行動ｗについて加算することにより、敵機が行動ｋを選択した場合の自機撃墜確率の和ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を求める。最大値判定手段が、上記加算過程で求まった上記ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を最大にする敵機の行動ｋを求めることにより、敵機の行動ｋを決定する。
【発明の効果】
【０００７】
本発明により、敵機は進んで敵機による攻撃弾が少ない位置へ移動するようになり、結果として自機が敵機攻撃に囲まれやすくなる。また、シューティングゲームにおける敵機の攻撃が、敵機同士の連携をベースにしたより知的なものになり、攻撃弾発射時のフォーメーションパターンも多様化する。この結果、よりゲーム性の増したシューティングゲームを実現することができる。
【発明を実施するための最良の形態】
【０００８】
［理論的背景］
図５に、シューティングゲームを例示する。図５は、シューティングゲームの画面を表わした模式図である。画面上には、自機１と自機１の攻撃弾３、敵機２と敵機２の攻撃弾４が表示される。なお、画面上の位置は、直交Ｘ座標・Ｙ座標で表わされるものとする。攻撃弾３、敵機２、攻撃弾４は、複数存在していても良い。ユーザは、自機１を操作して、敵機２と闘う。ユーザは、一回の操作で、Ｗ種類の速度（方向と速さ）で、行動単位時間Ｔだけ移動することができる。Ｗ種類の速度による各行動をｗ（ｗ＝｛０，…，Ｗ−１｝）とする。また、Ｗ種類の速度による移動と同時に、敵機２を攻撃するための攻撃弾３を発射する操作をすることができる。
【０００９】
自機１が、敵機２及び敵機２が発射する攻撃弾４と衝突した場合には、自機１は破壊され、そこでゲームオーバーとなる。逆に、自機１の攻撃弾３が敵機２に衝突した場合には、敵機２は破壊される。自機１の攻撃弾３によりすべての敵機２を破壊した場合には、ユーザは、そのゲームに勝利することになる。
このようなシューティングゲームにおいて、効率的に自機１を追い込むためには、自機の移動先（将来位置）を予測し、その移動先に移動した自機を撃墜しやすい位置に敵機２を移動させると良い。ここで、敵機は、Ｋ種類の速度（方向と速さ）で行動することができるとし、Ｋ種類の各行動をｋ（ｋ＝０，…，Ｋ−１）とする。以下では、どのようにして、敵機が、自機の移動先（将来位置）を予測し、その移動先に移動した自機を撃墜しやすい位置に移動する行動ｋを選択するのかを説明する。まず、自機の移動確率Ｐｍの求め方を説明し、その後、自機撃墜確率の求め方と行動ｋの選択方法について説明する。
【００１０】
＜自機の移動確率の求め方＞
ユーザは、各操作において、自機が破壊される可能性が最も小さい位置に自機を移動させると考えられる。このため、本発明では、例えば、下記のようにして、自機の将来位置を確率的に求める。
Ｗ種類の速度による移動の操作を所定の回数（Ｄ回）行うことによって自機が取り得る全行動パターンについて、すなわち、各深さｄ（ｄ＝｛１，…，Ｄ｝）において、Ｗ種類の速度による移動の操作を行うことによって自機が取り得る全行動パターンについて、自機が敵機の攻撃弾により破壊されるかどうかを調べる。全行動パターンのうち、自機が攻撃弾により破壊されない行動パターンのことを安全行動パターンとする。逆に、自機が攻撃弾により破壊されてしまう行動パターンのことを死亡行動パターンとする。全行動パターンと安全行動パターンと死亡行動パターンの間には、全行動パターン数＝安全行動パターンの総数＋死亡行動パターンの総数、という関係がある。
【００１１】
ここで、Ｗ種類の操作のうちのひとつをｗ（ｗ＝｛０，…，Ｗ−１｝）とし、ｄ＝１において行動ｗを取った場合の安全行動パターンの数をＳ（ｗ）とし、安全行動パターンの総数をΣＳ（ｗ）とする。深さｄ＝１において、各操作ｗを行った場合の安全行動パターン数Ｓ（ｗ）を数え、その各操作ｗごとに求まった安全行動パターン数Ｓ（ｗ）を安全行動パターンの総数ΣＳ（ｗ）で割った値が、自機がその操作ｗを行う確率と考えることができる。
例えば、Ｗ＝３、Ｄ＝３の場合であり、図６に示すように、※１、※２、※３において衝突が起こるケースを考える。図６において、実線は、各深さｄにおいて、ｗ＝０の行動を選択した場合の自機の描く軌跡を表している。破線は、各深さｄにおいて、ｗ＝１の行動を選択した場合の自機の描く軌跡を表している。一点鎖線は、各深さｄにおいて、ｗ＝２の行動を選択した場合の自機の描く軌跡を表している。枝の末端に○が示されているものが安全行動パターンであり、枝の末端に×が示されているものが死亡行動パターンである。
【００１２】
ここで、全行動パターン数は、ＷＤ＝３３＝２７である。また、安全行動パターンの総数ΣＳ（ｗ）は１４であり、死亡行動パターン総数は１３である。ｄ＝１において、ｗ＝０の行動を選択した場合の安全行動パターン数Ｓ（０）は６である。ｄ＝１において、ｗ＝１の行動を選択した場合の安全行動パターン数Ｓ（１）は８である。ｄ＝１において、ｗ＝２の行動を選択した場合の安全行動パターン数Ｓ（２）は０である。したがって、ｄ＝１において、ｗ＝０の行動を選択する確率は、（Ｓ（０）／ΣＳ（ｗ））＝（６／１４）＝０．４２８…と求めることができる。同様に、ｄ＝１において、ｗ＝１の行動を選択する確率は、（Ｓ（１）／ΣＳ（ｗ））＝（８／１４）＝０．５７１…と求めることができる。同様に、ｄ＝１において、ｗ＝２の行動を選択する確率は、（Ｓ（２）／ΣＳ（ｗ））＝（０／１４）＝０と求めることができる。
【００１３】
ここで、ｄ＝１において、自機が行動ｗを選択した結果行動単位時間Ｔ経過後に自機が（Ｘｗ，Ｙｗ）に位置する確率をＰｍ（Ｘｗ，Ｙｗ）とすると、上記の例において、自機が（Ｘ１，Ｙ１）に移動する確率Ｐｍ（Ｘ１，Ｙ１）は０．４２８…、自機が（Ｘ２，Ｙ２）に移動する確率Ｐｍ（Ｘ２，Ｙ２）は０．５７１…、自機が（Ｘ３，Ｙ３）に移動する確率Ｐｍ（Ｘ３，Ｙ３）は０と求めることができる。
本発明では、例えば、このようにして、確率的に自機の将来位置を予測する。
なお、以下に述べる実施例では、いわゆる縦型探索により、安全行動パターン数又は死亡行動パターン数を計算するものとする。縦型探索により、メモリを効率的に使用することができるためである。縦型探索とは、子節点を優先して探索する手順であり、例えば、Ｄ＝３、Ｗ＝３の場合、図７に示すように、行動単位ごとの移動経路につけた番号の順番でそれぞれの経路を探索する手法である。以下に述べる実施例においては、衝突が起こった場合には、衝突が起こった箇所より後の経路を探索しない。例えば、※１（６の経路）において衝突が起こった場合には、７〜９の経路については探索しない。この場合には、６の経路を探索して衝突が発生した後に、１０の経路を探索することになる（＜自機の移動確率の求め方＞の説明終わり。）。
【００１４】
＜自機撃墜確率の求め方と行動ｋの選択方法＞
自機と敵機の距離がｒのとき、敵機が攻撃弾によって自機を撃墜する潜在的な確率Ｐは、
Ｐ＝Ａｅｘｐ（−ａｒ）  …（１）
で与えられると考えられる。ここで、Ａとａは正の定数である。例えば、自機敵弾サイズの和をＳ、画面の長さをＬ、Ｕを０．１〜０．５、Ａを１．０〜０．８、ａを、
ａ＝Ｕ×（Ｌ／Ｓ）-１．５
とすると、経験上、精度の高い自機撃墜確率Ｐを求めることができる。さらに具体的に言うと、例えば、ゲーム画面が縦６００ピクセル、横４００ピクセル程度の大きさ、自機の形状が３２×３２ピクセルの大きさ、敵機の攻撃弾の大きさが４ピクセルであるとき、Ａ＝１．０〜０．８、ａ＝０．００１〜０．０１とすると良い。
【００１５】
上記式（１）によれば、敵機が攻撃弾によって自機を撃墜する潜在的な確率Ｐは、図８に示すように、敵機と自機の距離ｒが小さくなるにつれて、指数関数的に上昇する。逆に、敵機が攻撃弾によって自機を撃墜する潜在的な確率Ｐは、敵機と自機の距離ｒが大きくなるにつれて、指数関数的に減少する。
行動単位時間Ｔ経過後に、行動ｋを選択した結果（Ｘｋ，Ｙｋ）に位置する敵機が、行動ｗを選択した結果（Ｘｗ，Ｙｗ）に位置する自機を撃墜することができる潜在的な確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）は、自機がｗの行動を選択する確率、すなわち、自機が行動単位時間Ｔの経過後に（Ｘｗ，Ｙｗ）に位置する確率Ｐｍ（Ｘｗ，Ｙｗ）を考慮すると、
Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）…（２）
で与えられる。Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）は、上記式（１）を計算することにより求めることができる。また、Ｐｍ（Ｘｗ，Ｙｗ）は、＜自機の移動確率の求め方＞で説明した手法を用いることにより求めることができる。
【００１６】
上記式（２）を、自機の全行動ｗ＝０，…，Ｗ−１について和を取ると、敵機がある行動ｋを取ったときの自機撃墜確率ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を求めることができる。
上記自機撃墜確率ΣｗＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を最大化する行動ｋを敵機が選択するようにすれば、敵機は、敵機による攻撃弾が少ない位置に移動するようになり、結果として自機が敵機攻撃に囲まれやすくなり、ゲームの緊迫感が増す（＜自機撃墜確率の求め方と行動ｋの選択方法＞の説明終わり。）。
【００１７】
［実施形態］
図１、２を参照して、本発明によるシューティングゲーム装置を実施するためのシューティングゲーム処理装置１０００を説明する。図１は、シューティングゲーム処理装置１０００の機能構成例を示す図である。図３は、シューティングゲーム処理装置１０００の処理を例示する図である。
シューティングゲーム処理装置１０００は、例えば、敵機行動制御部２００、表示部３００から構成される。
【００１８】
敵機行動制御部２００は、例えば、自機安全行動パターン計算部１０、自機撃墜確率計算部２０、行動決定部３０から構成される。
自機安全行動パターン計算部１０は、例えば、図２に示すように、自機移動パターン生成部１１、攻撃弾位置推定部１２、衝突判定部１３、自機行動確率計算部１４、自機移動パターンバッファ１５、敵機攻撃弾状態バッファ１６から構成される。自機移動パターン生成部１１は、例えば、初期化部１１１、制御部１１２、バッファ１１３、位置更新部１１４、記憶部１１５、位置取得部１１６から構成される。攻撃弾位置推定部１２は、例えば、記憶部１２１、位置取得部１２２から構成される。自機行動確率計算部１４は、生き残り移動パターンカウント部１４１、確率計算部１４２から構成される。
自機撃墜確率計算部２０は、位置計算部２１、距離計算部２２、記憶部２３、確率計算部２４から構成される。
行動決定部３０は、積算部３１、加算部３２、最大値判定部３３、位置計算部３４から構成される。
【００１９】
＜準備＞
自機の行動の回数（探索の深さ）Ｄ、自機の取り得る行動ｗの種類の数Ｗ、各行動ｗを取ったときの自機の速度（Ｖｘｗ，Ｖｙｗ）、行動単位時間Ｔは予め設定され、自機移動パターン生成部の記憶部１１５に格納されているものとする。
【００２０】
例えば、Ｄ＝５、Ｗ＝９に設定することができる。また、各行動ｗを取ったときの自機の速度（Ｖｘｗ，Ｖｙｗ）としては、例えば、Ｗ＝９の場合、（Ｖｘ０，Ｖｙ０）＝（０，１）、（Ｖｘ１，Ｖｙ１）＝（１，１）、（Ｖｘ２，Ｖｙ２）＝（１，０）、（Ｖｘ３，Ｖｙ３）＝（１，−１）、（Ｖｘ４，Ｖｙ４）＝（０，−１）、（Ｖｘ５，Ｖｙ５）＝（−１，−１）、（Ｖｘ６，Ｖｙ６）＝（−１，０）、（Ｖｘ７，Ｖｙ７）＝（−１，１）、（Ｖｘ８，Ｖｙ８）＝（０，０）とすることができる。
また、自機の行動を表現する行動単位の長さは、自機の大きさが０でないとした場合、自機が移動によって掃く領域がカバーできない領域が各深さの移動において発生しないようにすることが、正確な敵機の強さの判定において重要である。難易度を定量化する際に自機が移動によって掃く領域がカバーできない領域が存在すれば、求まった難易度は、実際に自機が移動することができる領域の一部については考慮していないことになるため、敵の強さを正確に表現しているものと言うことはできないためである。このため、より正確に難易度を求める場合は、例えば、自機の形状に内接する円の直径を自機の速度で割った値を、上記行動単位時間Ｔとして設定することができる。
【００２１】
敵機が取り得る行動ｋの種類の数Ｋ、敵機が行動ｋを取ったときの敵機の速度（Ｖｘｋ，Ｖｙｋ）は、予め設定され自機撃墜確率計算部２０の記憶部２３に格納されているものとする。敵機が３６０度の全方向に移動することができる場合には、例えば、Ｋ＝３６０として設定することができる。
以下では、ｔを自機が行動を開始してからの経過時間、敵機ｉの発射したｋ番目の攻撃弾の時刻ｔでの位置を（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））、時刻ｔでの自機の位置を（Ｘｓ（ｔ），Ｙｓ（ｔ））とする。ｔは、処理単位時間τごとの離散的時刻を取るものとする。
【００２２】
＜ステップＳ１＞
自機安全行動パターン計算部１０が、自機が各行動ｗを選択する確率、言い換えると、自機が各行動ｗを選択することによって行動単位時間Ｔの経過後に位置（Ｘｗ，Ｙｗ）へ移動している確率Ｐｍ（Ｘｗ，Ｙｗ）を計算する。計算されたＰｍ（Ｘｗ，Ｙｗ）は、行動決定部３０に出力される。
なお、ステップＳ１の詳細については、後述する。
【００２３】
＜ステップＳ２＞
自機撃墜確率計算部２０は、すべてのｗとｋの組み合わせについて、敵機が行動ｋに基づいて行動単位時間Ｔだけ行動した後の位置（Ｘｋ，Ｙｋ）に位置する敵機が、自機が行動ｗに基づいて行動単位時間Ｔだけ行動した後の位置（Ｘｗ，Ｙｗ）に位置する自機を撃墜することができる潜在的な確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する。
具体的には、まず、自機撃墜確率計算部２０の位置計算部２１が、敵機が各行動ｋに基づいて行動単位時間Ｔだけ行動した後の位置（Ｘｋ，Ｙｋ）を求める。記憶部２３から行動ｋを選択した場合の敵機の移動速度（Ｖｘｋ，Ｖｙｋ）を読み出し、これをＴ倍して敵機が行動ｋを選択した場合の敵機の位置の変位量（Ｔ×Ｖｘｋ，Ｔ×Ｖｙｋ）を求める。位置計算部２１は、敵機の現在位置（Ｘｉ，Ｙｉ）に上記変位量（Ｔ×Ｖｘｋ，Ｔ×Ｖｙｋ）を加算して、敵機が行動ｋを選択した場合の敵機の位置（Ｘｋ，Ｙｋ）を求める。行動ｋを選択した場合の敵機の位置（Ｘｋ，Ｙｋ）は、距離計算部２２に出力される。
【００２４】
距離計算部２２は、上記敵機の位置（Ｘｋ，Ｙｋ）と、自機移動パターンバッファ１５から読み出した自機が行動ｗを選択した場合の自機の位置（Ｘｗ，Ｙｗ）との距離ｄ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算して、式（１）におけるｒを求める。計算された各ｒ＝ｄ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）は、確率計算部２４に出力される。
確率計算部２４は、記憶部２３から読み出したＡとａと、距離計算部２２が計算したｒを用いて、Ａｅｘｐ（−ａｒ）を計算することにより、敵機が行動ｋに基づいて行動単位時間Ｔだけ行動した後の位置（Ｘｋ，Ｙｋ）に位置する敵機が、自機が行動ｗに基づいて行動単位時間Ｔだけ行動した後の位置（Ｘｗ，Ｙｗ）に位置する自機を撃墜することができる潜在的な確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する。計算されたＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）は、行動決定部３０の積算部３１に出力される。
【００２５】
＜ステップＳ３＞
行動決定部３０の積算部３１は、自機安全行動パターン計算部１０が計算した、自機が行動ｗを選択することによって位置（Ｘｗ，Ｙｗ）に移動する確率Ｐｍ（Ｘｗ，Ｙｗ）と、自機撃墜確率計算部２０の確率計算部２４が計算したＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）の積Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を計算する。すなわち、すべてのｋについて、Ｐ（Ｘ１，Ｙ１，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘ１，Ｙ１），…，Ｐ（ＸＷ，ＹＷ，Ｘｋ，Ｙｋ）・Ｐｍ（ＸＷ，ＹＷ）をそれぞれ計算する。計算結果は、加算部３２に出力される。
【００２６】
＜ステップＳ４＞
加算部３２は、自機の全行動ｗにおいて、上記Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）の値を加算する。すなわち、Σｗ∈ＷＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）を計算することにより、敵機がある行動ｋを取った時の自機撃墜確率を求める。計算結果は、最大値判定部３３に出力される。
【００２７】
＜ステップＳ５＞
最大値判定部３３は、各行動ｋごとに求まったΣｗ∈ＷＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）・Ｐｍ（Ｘｗ，Ｙｗ）のうち、どの行動ｋが最大値を与えるのかを判定する。判定された最大値を与えるｋは、位置計算部３４に出力される。位置計算部３４は、上記最大値を与えるｋに基づいて行動単位時間Ｔだけ行動する敵機の位置を更新する。更新後の敵機の位置は、表示部３００に出力される。
以上のステップＳ１〜Ｓ５の処理を繰り返すことにより、ゲーム性の増したシューティングゲームを構成することができる。
【００２８】
［ステップＳ１の詳細について］
ステップＳ１の処理は、ステップＳ１ａ〜ステップＳ１ｏの各処理から構成される。以下では、図２と図４を用いて、ステップＳ１を構成するステップＳ１ａ〜ステップＳ１ｏの各処理について説明する。図２は、ステップＳ１の処理を行う自機安全行動パターン計算部１０の機能構成を例示する図である。図４は、ステップＳ１の各処理Ｓ１ａ〜ステップＳ１ｏの流れを例示する図である。
【００２９】
＜ステップＳ１ａ＞
自機移動パターン生成部１１の初期化部１１１は、ｔ＝０，ｄ＝１として、これをバッファ１１３に格納する。また、初期化部１１１は、位置取得部１１６が取得した自機の現在位置を、時刻ｔにおける自機の位置（Ｘｓ（ｔ），Ｙｓ（ｔ））に設定する。
＜ステップＳ１ｂ＞
自機移動パターン生成部１１の制御部１１２は、Ｗ（ｄ）＝０とする。Ｗ（ｄ）とは、深さｄ＝１における自機の行動ｋの番号のことである。
【００３０】
＜ステップＳ１ｃ＞
自機移動パターン生成部１１の制御部１１２は、Ｗ（ｄ）と（Ｘｓ（ｔ），Ｙｓ（ｔ））の値を、それぞれ自機移動パターンバッファ１５に格納する。
また、自機移動パターン生成部１１の制御部１１２は、時刻ｔにおける敵機の攻撃弾の位置（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））を、敵機攻撃弾状態バッファ１６に格納する。
【００３１】
＜ステップＳ１ｄ＞
自機移動パターン生成部１１の制御部１１２は、バッファ１１３からｔを読み出し、ｔをインクリメントする。インクリメントされたｔは、バッファ１１３に格納される。ｔのインクリメント幅は、行動単位時間Ｔより小さい値、好ましくはＴを複数等分する値であれば、どのような値でも良い。例えば、Ｔを０．３秒〜１秒としたとき、このＴを１０等分する時間間隔である、０．０３秒〜０．１秒をｔに設定することができる。
また、自機移動パターン生成部１１の位置更新部１１４は、自機の移動速度（Ｖｘ（Ｗ（ｄ）），Ｖｙ（Ｗ（ｄ））でｔのインクリメント幅の時間だけ移動した後の自機の位置を計算する。具体的には、位置更新部１１４は、ｔのインクリメント幅をτとすると、（τ×Ｖｘ（Ｗ（ｄ）），τ×Ｖｙ（Ｗ（ｄ）））を計算して、位置の変位量を求め、これに（Ｘｓ（ｔ−τ），Ｙｓ（ｔ−τ））を加算することにより、自機の位置を更新する。インクリメント幅τでインクリメントした後の自機の位置、すなわち、更新後の自機の位置（Ｘｓ（ｔ），Ｙｓ（ｔ））は、衝突判定部１３に出力される。
【００３２】
＜ステップＳ１ｅ＞
攻撃弾位置推定部１２は、攻撃弾の位置（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））を更新する。すなわち、τ時間経過後の攻撃弾の位置（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））を計算する。
具体的には、記憶部１２１に記憶された攻撃弾の速度（Ｖｂｉｋｘ（ｔ），Ｖｂｉｋｙ（ｔ））を読み出し、これをτ倍したものを、位置取得部１２２が取得した更新前の攻撃弾の位置（Ｘｂｉｋ（ｔ−τ），Ｙｂｉｋ（ｔ−τ））に加算することにより、更新後の攻撃弾の位置（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））を求める。
更新後の攻撃弾の位置（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））は、記憶部１２１に記憶される。また、更新後の攻撃弾の位置（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））は、衝突判定部１３に出力される。
また、更新後の攻撃弾の位置（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））は、自機移動パターン生成部１１に出力される。
【００３３】
＜ステップＳ１ｆ＞
衝突判定部１３は、自機と攻撃弾が衝突したかどうかを判定する。衝突したかどうかは、予め設定され、図示していない衝突判定部１３内の記憶部に記憶された自機の形状、攻撃弾の形状と、攻撃弾位置推定部１２から出力された更新後の攻撃弾の位置（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））、自機移動パターン生成部１１から出力された更新後の自機の位置（Ｘｓ（ｔ），Ｙｓ（ｔ））とから判断される。例えば、更新後の位置に置かれた自機の形状と更新後の位置に置かれた攻撃弾の形状が重なった場合には、自機と攻撃弾が衝突したと判定することができる。
衝突がなかったと判定された場合には、衝突がなかった旨の信号が、自機移動パターン生成部１１に出力される。その後、ステップＳ１ｇの処理を行う。
衝突があったと判定された場合には、衝突があった旨の信号が、自機移動パターン生成部１１に出力される。その後、ステップＳ１ｌの処理を行う。
【００３４】
＜ステップＳ１ｇ＞
衝突がなかった旨の信号を受け取った自機移動パターン生成部１１の制御部１１２は、ステップＳ３のときから、行動単位時間Ｔが経過したかどうかを判定する。すなわち、バッファ１１３から読み出したｔがｄＴよりも大きいかどうか、つまり、ｔ≧ｄＴかどうかを判定する。
ｔ＜ｄＴであれば、ステップＳ１ｄに戻って処理を行う。すなわち、ｔがステップＳ１ｃの時から行動単位時間Ｔを経過するまで、ステップＳ１ｄ〜Ｓ１ｆの処理を繰り返す。ｔ≧ｄＴであれば、次にステップＳ１ｈの処理を行う。
【００３５】
＜ステップＳ１ｈ＞
自機移動パターン生成部１１の制御部１１２は、バッファ１１３から読み出したｄを１だけインクリメントする。インクリメントされたｄは、バッファ１１３に格納される。
【００３６】
＜ステップＳ１ｉ＞
自機移動パターン生成部１１の制御部１１２は、バッファ１１３から読み出したｄが、予め記憶部１１５に格納され設定されたＤより大きいかどうかを判定する。すなわち、Ｄ＜ｄかどうかを判定する。なお、Ｄは、例えば、Ｄは５〜１０に設定することができる。
Ｄ≧ｄであると判定された場合には、制御部１１２は、ステップＳ１ｂに戻って処理を行う。
Ｄ＜ｄであると判定された場合には、その行動パターンは安全行動パターンである旨の信号が、自機行動確率計算部１４に出力され、ステップＳ１ｊの処理が行われる。
【００３７】
＜ステップＳ１ｊ＞
その行動パターンは安全行動パターンである旨の信号を受信した自機行動確率計算部１４は、自機移動パターンバッファ１５からＷ（１）を読み出し、深さｄ＝１においてどの行動ｗが選択されたのかを調べ、ｄ＝１における各行動ｗごとに、上記信号を受信した回数Ｓ（ｗ）を数える。
ステップＳ１ｏにおいて本実施例によるシューティングゲーム難易度判定方法の処理フローが終了するまで、ｄ＝１における各行動ｗごとのＳ（ｗ）を足し込み続ける。
【００３８】
＜ステップＳ１ｋ＞
自機移動パターン生成部１１の制御部１１２は、バッファ１１３から読み出したｄを、１だけデクリメントする。デクリメントされたｄは、バッファ１１３に格納される。
【００３９】
＜ステップＳ１ｌ＞
自機移動パターン生成部１１の制御部１１２は、バッファ１１３から読み出したｔを（ｄ−１）Ｔに設定する。（ｄ−１）Ｔに設定されたｔは、バッファ１１３に格納される。また、自機移動パターンバッファ１５に格納されたＷ（ｄ）を読み出し、１だけインクリメントする。インクリメントされたＷ（ｄ）は、自機移動パターンバッファ１５に格納される。
【００４０】
＜ステップＳ１ｍ＞
自機移動パターン生成部１１の制御部１１２は、記憶部１１５から読み出したＷと、自機移動パターンバッファ１５から読み出したＷ（ｄ）の大小関係を判定する。
Ｗ＜Ｗ（ｄ）であれば、自機移動パターン生成部１１の制御部１１２は、ステップＳ１ｏの処理を行う。Ｗ≧Ｗ（ｄ）であれば、自機移動パターン生成部１１の制御部１１２は、ステップＳ１ｎの処理を行う。
【００４１】
＜ステップＳ１ｎ＞
自機移動パターン生成部１１の制御部１１２は、敵機攻撃弾状態バッファ１６から更新後の攻撃弾の位置（Ｘｂｉｋ（ｔ），Ｙｂｉｋ（ｔ））を読み出す。その後、ステップＳ１ｃの処理を行う。
【００４２】
＜ステップＳ１ｏ＞
ステップＳ１ｍにおいて、Ｗ＜Ｗ（ｄ）であると判定された場合には、自機移動パターン生成部１１の制御部１１２は、ｄ＝１か否かを判定する。
ｄ≠１と判定された場合には、ステップＳ１ｋの処理に戻る。
ｄ＝１と判定された場合には、制御部１１２は、本実施例によるシューティングゲーム難易度判定方法の処理フローが終了した旨の信号を自機行動確率計算部１４に出力する。上記処理フローが終了した旨の信号を受信した自機行動確率計算部１４の生き残り移動パターンカウント部１４１は、今まで足し込んだ深さｄ＝１における行動ｗごとの安全行動パターン数Ｓ（ｗ）を、確率計算部１４２に出力する。
【００４３】
確率計算部１４２は、深さｄ＝１における行動ｗごとの安全行動パターン数Ｓ（ｗ）から、自機が深さｄ＝１において行動ｗを選択する確率Ｐｍ（Ｘｗ，Ｙｗ）を計算する。具体的には、確率計算部１４２は、Ｓ（ｗ）／ΣＳ（ｗ）を計算することにより、Ｐｍ（Ｘｗ，Ｙｗ）を計算する。計算されたＰｍ（Ｘｗ，Ｙｗ）は、行動決定部３０の積算部３１に出力される。
以上が、ステップＳ１の詳細の説明である。
【００４４】
［変形例等］
変形例１
上記実施例では、ステップＳ１において、安全行動パターン数Ｓ（ｗ）を計算して、自機が行動ｗを選択する確率Ｐｍ（Ｘｗ，Ｙｗ）を計算したが、死亡行動パターン数、すなわち、衝突した数をカウントして自機が行動ｗを選択する確率Ｐｍ（Ｘｗ，Ｙｗ）を計算しても良い。
【００４５】
この場合には、自機安全行動パターン計算部１０は、図９に示す処理を行う。図９に示す処理は、ステップＳ１ｆ’’、ステップＳ１ｊ’、ステップＳ１ｉ’における処理が、図４に示す処理とは異なり、他のステップにおける処理は同じである。処理が同じステップについては、同一のステップ番号を付けて説明を省略する。
【００４６】
＜ステップＳ１ｆ’’＞
衝突判定部１３により、衝突がなかったと判定された場合には、衝突がなかった旨の信号が、自機移動パターン生成部１１に出力される。その後、ステップＳ１ｇの処理を行う。
衝突があったと判定された場合には、衝突があった旨の信号が、自機移動パターン生成部１１と自機行動確率計算部１４に出力される。その後、ステップＳ１ｊ’の処理を行う。
【００４７】
＜ステップＳ１ｉ’＞
自機移動パターン生成部１１の制御部１１２により、Ｄ≧ｄであると判定された場合には、制御部１１２は、ステップＳ１ｂに戻って処理を行う。
Ｄ＜ｄであると判定された場合には、制御部１１２は、ステップＳ１ｋの処理を行う。
【００４８】
＜ステップＳ１４＞
ステップＳ１ｆ’’において、衝突があったと判定された場合には、自機行動確率計算部１４のべき乗演算部１４３が、自機移動パターン生成部１１のバッファ１１３から読み出したｄと、自機移動パターン生成部１１のバッファ１１３から読み出した記憶部１１５から読み出したＷとＤとを用いて、衝突回数Ｗ（Ｄ−ｄ）を計算する。計算された衝突回数Ｗ（Ｄ−ｄ）は、衝突カウント部１４４に出力される。
衝突カウント部１４４は、衝突がある毎に計算された衝突回数Ｗ（Ｄ−ｄ）を、ステップＳ１の処理が終わるまで、足し込み続ける。衝突カウント部１４４は、行動ｗを取ったときの全行動パターン数ＷＤ−１から、上記足し込まれた衝突回数を減算することにより、行動ｗごとの安全行動パターン数Ｓ（ｗ）を計算し、これを確率計算部１４２に出力する。
【００４９】
変形例２
また、行動の種類Ｗを行動の回数Ｄで累乗して求められるＷＤ個のすべての行動パターンについて、それぞれ、自機と敵機、及び、自機と攻撃弾が衝突するかどうかを衝突判定部１３が調べ、その衝突回数又は衝突しなかった回数を、衝突カウント部１４４又は生き残り移動パターンカウント部１４１がカウントすることにより、安全行動パターン数Ｓ（ｗ）を求めても良い。
【００５０】
変形例３
また、自機が現在速度を未来において一定時間Ｔｃだけ継続したとして、上記実施形態による処理を行うようにしても良い。ステップＳ１において行う探索計算を実質的に一段深く行うことができるためである。すなわち、自機が現在速度を未来において一定時間Ｔｃだけ継続したと仮定した後に、上記ステップＳ１においてＤ＝５の探索を行う場合には、実質的にＤ＝６の探索を行ったのと同じ探索を行うことができる。また、ユーザが画面に表示された自機、敵機、攻撃弾を見てから、自機の行動を決めて、その行動を入力するには、行動単位時間Ｔ以上の時間がかかることが普通である。したがって、自機が現在速度を未来において一定時間Ｔｃだけ継続したとして、上記ステップＳ１における処理を行うようにしても問題は生じない。また、自機と敵機の行動選択のタイミングが同時ではない場合、すなわち、敵機が行動を選択するときに、自機が移動中である場合においても、自機が現在速度を未来において一定時間Ｔｃだけ継続したとして、上記実施形態における処理を行うことにより、敵機が行動を選択することができる。
【００５１】
自機が現在速度を未来において一定時間Ｔｃだけ継続したとして、上記実施形態における処理を行うために、ステップＳ１ａにおいて、初期化部１１１は、ｔ＝Ｔｃとする。また。位置取得部１１６が取得した自機の位置に、一定時間Ｔｃに自機の現在速度をかけたものを足し、これを時刻ｔ＝Ｔｃにおける自機の位置（Ｘｓ（Ｔｃ），Ｙｓ（Ｔｃ））に設定する。
また、ステップＳ２において、自機撃墜確率計算部２０は、行動単位時間Ｔ後の敵機が、行動単位時間Ｔ後の自機を撃墜する確率ではなく、敵機が行動ｋに基づいてＴ＋Ｔｃ時間だけ移動した後の位置（Ｘｋ，Ｙｋ）に位置する敵機が、自機が一定時間Ｔｃだけ移動した後に、行動ｗに基づいてＴ時間だけ移動した後の位置（Ｘｗ，Ｙｗ）に位置する自機を撃墜することができる潜在的な確率Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）を計算する。すなわち、一定時間Ｔｃだけ余計に移動した敵機と自機の位置を基にして、自機撃墜確率を計算する。
その他の処理は、上記実施形態と同じである。
【００５２】
変形例４
自機撃墜確率計算部２０の確率計算部２４の射線判定部２５が、敵機が自機の射線上にあるかどうかを判定し、射線上にある場合には、そのときのＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）の値を低く設定することができる。これにより、敵機が自機の射線を避けるような行動をさせることができ、よりゲーム性が増す。
このために、まず、自機撃墜確率計算部２０の確率計算部２４の射線判定部２５は、行動ｋを選択した敵機の移動先の位置（Ｘｋ，Ｙｋ）が、行動ｗを選択して（Ｘｗ，Ｙｗ）に位置する自機の射線上にあるかどうかを判定する。例えば、自機がＹ軸方向（画面の上方向）に攻撃弾を発射する場合には、上記Ｘｋと上記Ｘｗの差の絶対値ｄ（Ｘｋ，Ｘｗ）を計算し、この計算結果が所定の値aよりも小さいかどうかを判定する。上記所定の値aとしては、例えば、敵機の形状のＸ軸方向の幅の半分の値に、自機が発射する攻撃弾の形状のＸ軸方向の幅の半分の値を加算した値を設定することができる。
【００５３】
ｄ（Ｘｋ，Ｘｗ）＜aの場合には、敵機は自機の攻撃弾により破壊されると考えることができるため、射線判定部２５は、上記行動ｋと上記行動ｗに対応したＰ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）の値を低く設定する。Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）の値は、ユーザが求める難易度に応じて自由に設定することができる。例えば、難易度をより高くしたい場合には、Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）の値をより低く設定すれば良い。Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）の値をより低く設定した場合には、それだけ、敵機が自機の射線を避けるように行動することになるためである。
ｄ（Ｘｋ，Ｘｗ）≧aの場合には、射線判定部２５は、Ｐ（Ｘｗ，Ｙｗ，Ｘｋ，Ｙｋ）の値を変更しない。
【００５４】
その他
また、上記シューティングゲーム処理装置１０００の処理機能をコンピュータによって実現することができる。この場合、シューティングゲーム処理装置１０００の処理機能の内容はプログラムによって記述される。そして、このプログラムを図１０に示すようなコンピュータで実行することにより、上記シューティングゲーム処理装置１０００の各処理機能がコンピュータ上で実現される。
【００５５】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（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）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００５７】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ユーザ端末を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
以上の各実施形態の他、本発明であるシューティングゲーム処理方法、その装置、そのプログラム及びその記録媒体は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【００５８】
【図１】シューティングゲーム処理装置１０００の機能構成を例示した図。
【図２】自機安全行動パターン計算部１０の機能構成を例示した図。
【図３】シューティングゲーム処理装置１０００の処理を例示した図。
【図４】自機安全行動パターン計算部１０の処理を例示した図。
【図５】シューティングゲームの模式図。
【図６】安全行動パターンとそのカウント方法を説明するための図。
【図７】縦型探索の方法を説明するための図。
【図８】自機と敵機の距離ｒと自機撃墜確率Ｐの関係を例示した図。
【図９】自機安全行動パターン計算部１０の変形例の処理を例示した図。
【図１０】シューティングゲーム処理装置をコンピュータにより実行するときの機能構成を例示した図。
【符号の説明】
【００５９】
１  自機
２  敵機
３  攻撃弾
４  攻撃弾
５  ＣＰＵ
６  ＲＡＭ
７  出力部
８  補助記憶部
９  入力部
９’  バス
１０  自機安全行動パターン計算部
１１  自機移動パターン生成部
１２  攻撃弾位置推定部
１３  衝突判定部
１４  自機行動確率計算部
１５  自機移動パターンバッファ
１６  敵機攻撃弾状態バッファ
２０  自機撃墜確率計算部
２１  位置計算部
２２  距離計算部
２３  記憶部
２４  確率計算部
２５  射線判定部
３０  行動決定部
３１  積算部
３２  加算部
３３  最大値判定部
３４  位置計算部
１１１  初期化部
１１２  制御部
１１３  バッファ
１１４  位置更新部
１１５  記憶部
１１６  位置取得部
１２１  記憶部
１２２  位置取得部
１４１  移動パターンカウント部
１４２  確率計算部
１４３  乗演算部
１４４  衝突カウント部
２００  敵機行動制御部
３００  表示部
１０００  シューティングゲーム処理装置
【図１】
0004804224.tif 000002
【図２】
0004804224.tif 000003
【図３】
0004804224.tif 000004
【図４】
0004804224.tif 000005
【図５】
0004804224.tif 000006
【図６】
0004804224.tif 000007
【図７】
0004804224.tif 000008
【図８】
0004804224.tif 000009
【図９】
0004804224.tif 000010
【図１０】
0004804224.tif 000011