(57)【要約】【課題】敵機の攻撃が単調なものとならないシューティングゲームの敵機攻撃制御を行う。【解決手段】まず、敵機が攻撃弾を発射する時点（現時点）において、敵機あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度、並びに現時点の自機の位置関係に基づいて、現時点より後の各時点で、画面を格子状に分割した各升目において、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率（自機存在確率）を各時点の各升目ごとに求める。次いで、敵機が攻撃弾を発射する速度の２つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する各升目における自機存在確率の和（自機存在確率和）をそれぞれの速度の候補ごとに求め、自機存在確率和が所定の条件を満たす候補の速度を攻撃弾発射速度として決定する。【選択図】図３
2008000346.tif 000002
【特許請求の範囲】
【請求項１】
画面上に自機及び１つあるいは複数の敵機が表示され、敵機がプレーヤーの操作する自機に対して攻撃弾を発射するシューティングゲームの敵機攻撃制御方法であって、
自機存在確率計算手段が、
敵機が攻撃弾を発射する時点（現時点）において、敵機が現時点より過去の時点で発射した既存攻撃弾あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度、並びに現時点の自機の位置関係に基づき、現時点より後の各時点で、画面を格子状に分割した当該格子の各升目において、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率（自機存在確率）を各時点の各升目ごとに求める自機存在確率計算ステップと、
攻撃弾発射速度決定手段が、
敵機が攻撃弾を発射する速度の２つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する各升目における自機存在確率の和（自機存在確率和）をそれぞれの速度の候補ごとに求め、自機存在確率和が所定の条件を満たす候補の速度を攻撃弾発射速度として決定する攻撃弾発射速度決定ステップと
を有することを特徴とするシューティングゲームの敵機攻撃制御方法。
【請求項２】
自機が存在する升目Ｓから１処理単位時間で移動可能な升目は、升目Ｓに接して取り囲む升目の全部または一部であるとし、
上記自機存在確率計算ステップは、
現時点ｔ０に自機が存在する升目ｓ０から現時点より後の或る時点ｔにおける或る升目ｓまでの道筋の総数Ｃ（ｓ，ｔ）を、升目ｓを取り囲む升目のうち１処理単位時間で自機が移動可能な升目ｓ′の時点ｔ−１における道筋の総数Ｃ（ｓ′，ｔ−１）の総和（但し、ｓ′に関する総和である。）と升目ｓの時点ｔ−１における道筋の総数Ｃ（ｓ，ｔ−１）との和で求め、さらに、時点ｔにおいて、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目の道筋の総数Ｃ（ｓ，ｔ）を０に設定する自機存在場合数計算ステップと、
時点ｔにおける升目ｓ１に自機が存在する自機存在確率を、Ｃ（ｓ１，ｔ）を、全ての升目についての道筋の総数Ｃ（ｓ，ｔ）の総和であるΣｓＣ（ｓ，ｔ）で除したものとして求める確率計算ステップと
を有することを特徴とする請求項１に記載のシューティングゲームの敵機攻撃制御方法。
【請求項３】
自機が存在する升目Ｓから１処理単位時間で移動可能な升目は、升目Ｓに接して取り囲む升目の全部または一部であるとし、
現時点ｔ０での自機移動速度が、現時点より後の或る時点τまで継続されるとし、その自機移動速度で移動した自機が時点τまでに通過した升目及び時点τで自機が存在すると予測される升目における自機存在確率を１とし、他の升目における自機存在確率を０とし、
上記自機存在確率計算ステップは、
時点τに自機が存在する升目ｓτから時点τより後の或る時点ｔにおける或る升目ｓまでの道筋の総数Ｃ（ｓ，ｔ）を、升目ｓを取り囲む升目のうち１処理単位時間で自機が移動可能な升目ｓ′の時点ｔ−１における道筋の総数Ｃ（ｓ′，ｔ−１）の総和（但し、ｓ′に関する総和である。）と升目ｓの時点ｔ−１における道筋の総数Ｃ（ｓ，ｔ−１）との和で求め、さらに、時点ｔにおいて、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目の道筋の総数Ｃ（ｓ，ｔ）を０に設定する自機存在場合数計算ステップと、
時点ｔにおける升目ｓ１に自機が存在する確率を、Ｃ（ｓ１，ｔ）を、全ての升目についての道筋の総数Ｃ（ｓ，ｔ）の総和であるΣｓＣ（ｓ，ｔ）で除したものとして求める確率計算ステップと
を有することを特徴とする請求項１に記載のシューティングゲームの敵機攻撃制御方法。
【請求項４】
上記時点τは、プレーヤーが自機の移動方向の変更を行う操作の時間間隔の平均値（操作時間間隔平均）とする、あるいは、現時点ｔ０の自機移動速度を開始した時点ｔｓと操作時間間隔平均との残差とする
ことを特徴とする請求項３に記載のシューティングゲームの敵機攻撃制御方法。
【請求項５】
上記自機存在場合数計算ステップにおいて道筋の総数Ｃ（ｓ，ｔ）が０に設定される、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目を、
既存攻撃弾が存在すると予測される位置を含む升目の四隅の角またはその中心のいずれか１つの位置から所定の距離内に位置する升目とする
ことを特徴とする請求項２から請求項４のいずれかに記載のシューティングゲームの敵機攻撃制御方法。
【請求項６】
既存攻撃弾が存在すると予測される位置を含む升目の四隅の角のうちいずれか１つの位置とする場合に、既存攻撃弾の位置を表す基準点から最も近い角を選択する
ことを特徴とする請求項５に記載のシューティングゲームの敵機攻撃制御方法。
【請求項７】
上記攻撃弾発射速度決定ステップにおいて上記所定の条件を満たす候補の速度は、
上記自機存在確率和が最大となる候補の速度、
あるいは、
一度に複数の攻撃弾を発射する場合に、上記自機存在確率和が最大のものから降順に発射すべき攻撃弾の数に等しい数の順位までの各自機存在確率和を与えた候補の速度である
ことを特徴とする請求項１から請求項６のいずれかに記載のシューティングゲームの敵機攻撃制御方法。
【請求項８】
画面上に自機及び１つあるいは複数の敵機が表示され、敵機がプレーヤーの操作する自機に対して攻撃弾を発射するシューティングゲームの敵機攻撃制御装置であって、
敵機が攻撃弾を発射する時点（現時点）において、敵機が現時点より過去の時点で発射した既存攻撃弾あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度、並びに現時点の自機の位置関係に基づき、現時点より後の各時点で、画面を格子状に分割した当該格子の各升目において、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率（自機存在確率）を各時点の各升目ごとに求める自機存在確率計算手段と、
敵機が攻撃弾を発射する速度の２つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する各升目における自機存在確率の和（自機存在確率和）をそれぞれの速度候補ごとに求め、自機存在確率和が所定の条件を満たす候補の速度を攻撃弾発射速度として決定する攻撃弾発射速度決定手段と
を備えたことを特徴とするシューティングゲームの敵機攻撃制御装置。
【請求項９】
コンピュータに請求項１から請求項７のいずれかに記載のシューティングゲームの敵機攻撃制御方法を実行させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを記録した、コンピュータに読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画面上に表示された自機と敵機とが互いに戦うシューティングゲームの処理技術に関わる。より詳しくは、敵機の攻撃制御の処理に関する。
【背景技術】
【０００２】
一般的なシューティングゲームでは、画面上に１つの自機と一つあるいは複数の敵機が表示される。
プレーヤーが適当な入力手段（例えばキーボードのキー、多方向押圧可能なスイッチ、操縦桿などである。）を操作すると、その操作が画面上の自機のＷ種類の行動に変換され、自機がその操作に応じた行動をする。また、ユーザが適当な入力手段（例えばキーボードのキー、多方向押圧可能なスイッチ、操縦桿に備えられたボタンなどである。）を操作すると、その操作が画面上の自機の攻撃行動に変換され、自機が攻撃弾を発射し、敵機や種々のアイテムに対してダメージを与えることができるようになっている。
【０００３】
一方、敵機の操作は、ネットワーク対戦型シューティングゲームのように、自機を操作するプレーヤーとは異なるプレーヤーによって操作される人間操作型の場合や、あるいは、コンピュータによって操作されるコンピュータ操作型がある。ここで「コンピュータ」とは、いわゆるパーソナルコンピュータのような汎用機の場合に限定されず、ゲーム専用機などを広く指す（以下同様）。また、「コンピュータによる操作」とは、コンピュータのハードウェア資源とコンピュータに実装されたソフトウェアとが協働して情報処理を実現することで、敵機の行動・自機に対する攻撃弾の発射がコンピュータの画面上において表示されることをいう。
コンピュータ操作型の場合、敵機の行動制御及び敵機の自機に対する攻撃弾の発射制御は、コンピュータの制御プログラムに従って処理されている。
【０００４】
なお、自機・敵機の「行動」には、「移動」という行動のみならず、「静止」という行動も含まれる。また、自機・敵機が攻撃弾を発射すると、単に攻撃弾の「発射」のみが画面上に表示されるだけでなく、発射された攻撃弾の飛行も表示される。
【０００５】
シューティングゲームにおける上記の事実は周知であるから、先行技術文献を示すまでもない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のシューティングゲームでは、コンピュータ操作型の場合、敵機の自機に対する攻撃弾の発射制御、つまり敵機の攻撃弾発射時の攻撃弾移動速度決定アルゴリズムは、攻撃弾発射時点の自機位置を狙って攻撃弾速度を決めるか、ランダムな方向に攻撃弾を発射するなどの単純なものに限られていた。ここで「速度」は、画面上に表示される物体の有する、「速さ」と「向き」とを合わせもったベクトル量とする。
【０００７】
このような単純なアルゴリズムであるため、従来のシューティングゲームでは、異なる銘柄のシューティングゲームであっても、敵機の攻撃は単調なものであり、敵機の攻撃回避等に必要なプレーヤーの自機操作技術は共通なものになりがちで、シューティングゲーム自体が飽きられやすいものとなっていた。
【０００８】
このような問題を解決するためには、人工知能の技術をシューティングゲームに導入するのが有効と考えられるが、現在、人工知能におけるゲームの研究は、チェス、オセロ、将棋といった、非アクション系のいわゆる思考ゲームを中心にして行われており（例えば参考文献参照）、人工知能をシューティングゲームのようなアクションゲームに応用する試みはなかった。
（参考文献）Jonathan Schaeffer,H.Jaap van den Herik,“Games,computers,and artificial intelligence”,Artificial Intelligence,2002,Vol.134,p1-7
【０００９】
また、チェス、オセロ、将棋といった思考ゲームを解くための人工知能技術研究は、深い探索計算を効率的に行うための手法の開発に集中している。このような人工知能技術をシューティングゲームに単純に導入することは全く有意義ではない。何故なら、シューティングゲームの醍醐味は、自機と敵機との仮想戦闘における適度の緊張感の中で、仮想戦闘の早い展開を視覚的に認知し、即時に適切な自機の行動・攻撃を判断し、それを入力手段の正確な操作に即時に反映させ、敵機等を撃破することで一種の達成感を味わうことの連綿性にあるところ、思考ゲームで用いられる人工知能技術を単純にシューティングゲームに導入すると、いくら効率的な探索計算を行うとしても、著しく遅い仮想戦闘の展開となり、シューティングゲームの醍醐味（以下、「遊興性」と云う。）が失われてしまうからである。
【００１０】
そこで本発明は、上記の問題点に鑑み、敵機の攻撃が単調なものとならないシューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明では、画面上に自機及び１つあるいは複数の敵機が表示され、敵機がプレーヤーの操作する自機に対して攻撃弾を発射するシューティングゲームの敵機攻撃制御を、次のような構成とする。即ち、まず、敵機が攻撃弾を発射する時点（現時点）において、敵機が現時点より過去の時点で発射した既存攻撃弾あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度、並びに現時点の自機の位置関係に基づいて、現時点より後の各時点で、画面を格子状に分割した各升目において、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率（自機存在確率）を各時点の各升目ごとに求める。次いで、敵機が攻撃弾を発射する速度の２つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する各升目における自機存在確率の和（自機存在確率和）をそれぞれの速度の候補ごとに求め、自機存在確率和が所定の条件を満たす候補の速度を攻撃弾発射速度として決定する。
このように、敵機が現時点より過去の時点で発射した既存攻撃弾あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度を考慮した上で、画面上における自機の将来の位置（升目）を予測し、予測位置における自機との衝突の可能性が高い攻撃弾の速度を速度候補の中から決定して攻撃弾を発射する。つまり、敵機の攻撃弾の発射に際して、将来において攻撃弾が自機に対して衝突する可能性の高い速度を割り出し、この速度で攻撃弾を発射するのである。
【発明の効果】
【００１２】
本発明に拠れば、敵機の攻撃弾の発射に際して、将来において攻撃弾が自機に対して衝突する可能性の高い速度を割り出し、この速度で攻撃弾を発射するため、敵機の攻撃が単調なものとならない。
【００１３】
また、敵機の攻撃が単調なものとならないため、プレーヤーの立場からすると、敵機の攻撃回避等に必要な自機操作技術を得にくくなる。このため、プレーヤーに飽きられにくいシューティングゲームの実現にも寄与する。
【発明を実施するための最良の形態】
【００１４】
《技術の概要》
本発明の特徴の要旨は、画面を格子状に分割し、まず、現時点より後の各時点で格子の各升目に自機の存在する確率をそれぞれ求め、次いで、敵機の攻撃弾の速度ごとに、各時点における飛行経路上で各升目の確率総和を求め、高い確率総和となる速度を選択して敵機が攻撃弾を発射することにある。この敵機の攻撃弾の発射は、個別の敵機ごとに速度が決定されて行われる。なお、攻撃弾の速度は「速さ」と「向き」の有するベクトル量であり、そのいずれか一方あるいは両者を決定することができる。
【００１５】
ここで「時点」とは、シューティングゲームの処理単位時間間隔でとった各時点のことであり、現時点をｔ０、処理単位時間をΔＴとすれば、現時点より後の各時点は、ｔ０＋ΔＴ、ｔ０＋２ΔＴ、ｔ０＋３ΔＴ、・・・となる。「現時点」は、敵機が攻撃弾を発射するべき時点を云う。シューティングゲームに限らずコンピュータゲームでは、時間を使った処理が行われるが、ここで処理単位時間は自機の１行動を基準にとった単位時間とする。換言すれば、１処理単位時間ΔＴにおいて可能な自機の行動は、静止という行動も含めて１つである。
【００１６】
本発明において、自機の行動には、次のような条件が課されているとする。即ち、斜めに移動する際の移動速度の縦方向成分（速さ）は、縦方向のみに移動する場合の速さと同じ速さであり、横方向成分（速さ）は、横方向のみに移動する場合の速さと同じ速さであるとする。また、各攻撃弾の行動には、次のような条件が課されているとする。即ち、各攻撃弾は、敵機から発射される際に決定された速度を発射後において維持する。
【００１７】
自機・敵機・攻撃弾は、一般的に何らかの物体（例えば戦闘機や銃弾）を摸擬した画像として画面上に表示される。シューティングゲームでは自機や敵機と攻撃弾との衝突判定処理が行われるが、この判定のためには、摸擬されている物体の外形とは別に、自機・敵機・攻撃弾の衝突判定用の各形状が定義されていることが一般的である。以下、特に断りのない限り、自機・敵機・攻撃弾について単に「形状」と言えば衝突判定用の形状を意味する。本発明においては、この定義の仕方に何らの限定はなく、いかなる定義の仕方をしてもよい（但し、従来のシューティングゲームと同様に、衝突判定に用いる自機・敵機・攻撃弾の各形状を処理ごとに可変とするのではなく、一義的に定義しておくのが好ましい。）。例えば、自機の外形を内包する最小の矩形〔本明細書では、長方形に限定せず、正方形・菱形・平行四辺形などの四角形や、さらには三角形や五角形などの多角形も含む意味で「矩形」という文言を用いる。〕や円を、衝突判定に用いる自機の形状と定義すればよい。敵機・攻撃弾についても同様である。
【００１８】
また、自機・敵機・攻撃弾の画面上の位置（特に本発明では、自機がどの升目に存在するかを特定する必要がある。）の特定に用いる自機・敵機・攻撃弾の基準点を定めておく。基準点の定め方にも特に限定はなく、例えば上記のように衝突判定に用いる形状を定義したならば、自機の外形を内包する最小の矩形や円の中心を基準点とするのが簡便である。なお、矩形の中心について、例えばそれが長方形や正方形のような形状であれば対角線の交点を当該矩形の中心とし、あるいは、矩形を内包する最小の円の中心を当該矩形の中心とするなど適宜に定めることができる。このように基準点を定めたならば、画面上の基準点の位置座標をもって、自機・敵機・攻撃弾の画面上の位置座標とすることができる。
【００１９】
また、格子の各升目の形状は、縦の長さを（自機の縦方向の速さ）×ΔＴとし、横の長さを（自機の横方向の速さ）×ΔＴとする。このような升目からなる格子とすれば、上記自機速度の条件から、自機が現在する升目ｓ０から１処理単位時間で移動可能な升目は、升目ｓ０に接して取り囲む升目に限定される。
【００２０】
移動可能な升目への自機の行動の種類は、いくつか考えられるが、例えば、日本将棋の「玉将」または「王将」の動きと同じとするか、あるいは、十文字の動きとすることなどができる。ここで玉将の動きは図１（ａ）に示すとおりであり、十文字の動きは図１（ｂ）に示すとおりである。なお両図において黒丸印は現在の自機の位置、白丸印は１処理単位時間後に移動可能な自機の位置を表している。図１（ａ）では行動種類は、周囲８升と静止の９種類、図１（ｂ）では前後左右４升と静止の５種類である。
【００２１】
現時点より後の各時点における格子の各升目に自機の存在する確率は、次のようにして求める。現時点ｔ０（＝０）に自機が存在する升目ｓ０から現時点より後の或る時点ｔにおける或る升目ｓまでの道筋の総数Ｃ（ｓ，ｔ）を求める。Ｃ（ｓ，ｔ）は例えば決定木（decision tree）探索で求めることができるが、上記のように自機の行動に制約がある場合には、升目ｓの周囲の升目のうち１処理単位時間で自機が移動可能な升目ｓ′のＣ（ｓ′，ｔ−１）の総和（ｓ′に関する総和である。）と１処理単位時間前の升目ｓのＣ（ｓ，ｔ−１）との和で得られる。
或る時点ｔにおける或る升目ｓに自機が存在する確率は、Ｃ（ｓ，ｔ）を、全ての升目についての総和であるΣｓＣ（ｓ，ｔ）で除したものとして表される。
なお、現時点ｔ０での自機移動速度が、現時点より後の或る時点τまで継続されるとし、その自機移動速度で移動した自機が時点τまでに通過した升目及び時点τで自機が存在すると予測される升目における自機存在確率を１とし、他の升目における自機存在確率を０とすることもできる。
【００２２】
現時点より後の各時点で格子の各升目に自機の存在する確率をそれぞれ求める点については、次のような考慮がなされる。
或る敵機において攻撃弾の速度を決定するに当たり、その時点では既に、画面上に当該敵機や他の敵機から発射された攻撃弾（既存攻撃弾）が表示されている場合がある。そこで、現時点より後の各時点で、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目における自機の存在確率を、その時点において０にリセットするのである。これはＣ（ｓ，ｔ）＝０とするに等しい。このことは、自機のプレーヤーが、敵機からの攻撃弾を回避する行動を自機が取るように入力装置の操作を行うという一般的傾向に基づく。
ここで「既存攻撃弾が存在すると予測される位置から所定の距離」とは、攻撃弾と自機との衝突判定に用いられる距離である。このような距離の内側、つまり攻撃弾の中心により近い領域では、自機は攻撃弾と衝突したと判定されることになる。換言すると、「既存攻撃弾が存在すると予測される位置から所定の距離」が張る領域、つまり衝突判定形状を定義し、この衝突判定形状を用いて自機と攻撃弾との衝突判定ができる。
【００２３】
衝突判定形状は適宜に定義できる。
例えば衝突判定形状を円とする場合、衝突判定円は、例えば、衝突判定円の中心を攻撃弾形状の中心とし、衝突判定円の半径を（攻撃弾形状の中心から攻撃弾形状の外周への最短距離）＋（自機形状の中心から自機形状の外周への最短距離）とすることができる。但し、半径は、（攻撃弾形状の中心から攻撃弾形状の外周への最長距離）＋（自機形状の中心から自機形状の外周への最短距離）などのようにしてもよい。要するに、衝突判定円の半径は、攻撃弾の形状の指標となる長さと、自機の形状の指標となる長さの和とする。ここで指標の採り方は、自機や攻撃弾の形状の定義によって適宜に定めることができる。簡単な例では、自機や攻撃弾などの形状を円とすればこの半径を、矩形とすればその長辺の長さの半分を指標とすることもできる。上記のように衝突判定円を定義すれば、この衝突判定円上あるいは衝突判定円内に自機の位置座標が存在すれば、自機は攻撃弾に衝突したと判定できる。
衝突判定形状を矩形とする場合、一例としてより具体的に攻撃弾形状を横ａ、縦ｂの長方形、自機形状を横ｃ、縦ｄの長方形とした場合で説明すれば、衝突判定矩形は、その中心を攻撃弾形状の中心とし、横ａ＋ｃ、縦ｂ＋ｄの長方形とすることができる。このように衝突判定矩形を定義すれば、この衝突判定矩形上あるいは衝突判定矩形内に自機の位置座標が存在すれば、自機は攻撃弾に衝突したと判定できる。
衝突判定形状の中心は、既述の自機・敵機・攻撃弾の基準点の設定と同様であり、例えば衝突判定円ならばその中心、衝突判定矩形ならばその外接円の中心などとすることができる。
【００２４】
さて、既述のとおり、現時点より後の各時点で、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目のＣ（ｓ，ｔ）を０に設定するのであるが、このような升目（以下、「所望の升目」とも云う。）は、その全部または一部を衝突判定形状に含まれる升目である。例えば衝突判定円とした場合、攻撃弾の位置座標から衝突判定円に全部または一部が含まれる升目は計算機による有限ステップのアルゴリズムで特定可能であるが、このような升目を、シューティングゲームの遊興性を失わないようリアルタイムに、つまり簡便に特定することを考える。
本発明では、この問題を次のようにして解決する。
即ち、攻撃弾の位置座標を、当該位置座標が存在する升目の四隅の角（かど）または中心のいずれかであると看做し、この看做された位置座標（以下、「看做し位置座標」とも云う。）を中心とする衝突判定形状に一部または全部が含まれる升目のＣ（ｓ，ｔ）を０に設定する。換言すれば、既存攻撃弾が存在すると予測される位置を含む升目の四隅の角またはその中心のいずれか１つの位置から所定の距離内に位置する升目のＣ（ｓ，ｔ）を０に設定するのである。なお、看做し位置座標を中心とする衝突判定形状に一部が含まれる升目のＣ（ｓ，ｔ）を０に設定することは必須の要件ではない。少なくとも看做し位置座標を中心とする衝突判定形状に全部が含まれる升目のＣ（ｓ，ｔ）を０に設定すればよい。本明細書では、看做し位置座標を中心とする衝突判定形状に一部が含まれる升目のＣ（ｓ，ｔ）も０に設定する場合として説明する。
【００２５】
攻撃弾の種類ごとに衝突判定形状は異なりえるが、同じ種類の攻撃弾であれば衝突判定形状は同一であるのが通常であるところ、格子が定まっていれば、升目の四隅の角またはその中心のいずれかを中心とする衝突判定形状に含まれる升目は一意になる。
このことを図１４を参照して説明する。図１４中、■印は、看做し位置座標を表し、破線は格子を表している。また図１４では、衝突判定形状が衝突判定円あるいは衝突判定矩形の場合を示している。図１４（ａ）は、升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち１つに看做した場合である。図１４（ｃ）は、升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合である。図１４（ｂ）は、升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち１つに看做した場合である。図１４（ｄ）は、升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合である。いずれの場合でも、０が記入された升目は衝突判定形状に一部または全部が含まれる升目であり、これらの升目は、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角または中心のうち予め決められた１つに看做すというルールと同種の攻撃弾において衝突判定形状は同一とするというルールを維持すれば、看做された攻撃弾の位置座標に対して一意である。そこで、一意に定まる升目の集まりに関する情報を例えばテンプレート〔図１４の網掛け部分〕として記憶手段に記憶しておけば、看做された攻撃弾の位置座標に対してテンプレートを適用するだけで、所望の升目のＣ（ｓ，ｔ）を０に設定できる。
このように、攻撃弾の位置座標および衝突判定形状から厳密に、当該衝突判定形状に一部または全部が含まれる升目を特定する処理を行わなくても、看做し位置座標に対してテンプレートを適用するだけの処理で簡便に所望の升目のＣ（ｓ，ｔ）を０に設定できるのである。
なお、一意に定まる升目の集まりに関する情報を、テンプレートとしてではなく、例えば攻撃弾の位置座標が存在する升目を取り囲む升目の数として記憶手段に記憶するなどとしてもよい。
【００２６】
以上のように簡便に所望の升目を特定することは、いわゆる近似処理であるから、できるだけ、厳密に所望の升目を特定した場合との差異が小さくするようにするのが好ましい。そこで、看做し位置座標を、攻撃弾が存在すると予測される位置を含む升目の四隅の角のいずれか１つとする場合には、攻撃弾の位置座標から最も近い角とするようにしてもよい。
なお、さらに簡便な処理とするならば、攻撃弾の位置座標が升目の如何なる部分にあろうが、常に予め定めた看做し位置座標とする構成としてもよい。つまり、例えば、攻撃弾の位置座標が升目の如何なる部分にあろうとも、升目の左上の角を看做し位置座標とするとして画一的に処理してもよいのである。
【００２７】
《実施形態》
本発明の実施形態について、図面を参照しながら説明する。
＜シューティングゲームの敵機攻撃制御装置＞
本発明の実施形態であるシューティングゲームの敵機攻撃制御装置（１）は、それ単体で独立に存在するよりは、コンピュータを構成するエンティティとして存在するのが一般的である（勿論、単体独立のエンティティとして存在することを排除する趣旨ではない。）。さらに云えば、シューティングゲームの敵機攻撃制御装置（１）は、コンピュータとは容易に分離可能にコンピュータを構成するエンティティではなく、コンピュータ自体を或る機能に着眼して片面的に評価したものであるのが一般的である。要するに、シューティングゲームの敵機攻撃制御装置（１）は、シューティングゲームを実行するコンピュータそのものであることが一般的である。ここでコンピュータは、既述のとおりパーソナルコンピュータのような汎用機やゲーム専用機などを広く指す。
以下、シューティングゲームの敵機攻撃制御装置（１）を単に敵機攻撃制御装置（１）と云うことにする。
【００２８】
コンピュータは、ＣＰＵやＭＰＵのような演算処理装置と、演算処理の用に供するデータ、演算処理の結果として得られたデータ、演算処理装置によって解釈実行されるプログラムなどを記憶可能な記憶装置（例えば揮発性メモリ、不揮発性メモリ）などを備えている。また、シューティングゲームを実行可能なコンピュータに要求される装置として、ブラウン管型表示装置や液晶ディスプレイのような表示装置、キーボードや操縦桿のような入力装置がコンピュータに接続される。
【００２９】
コンピュータとして汎用機を例にとると、敵機攻撃制御装置（１）のハードウェア構成例は次のとおりである（図２参照）。
敵機攻撃制御装置（１）は、入力装置が接続可能な入力部（１１）、表示装置が接続可能な出力部（１２）、ＣＰＵ（Central Processing Unit;１４）〔キャッシュメモリなどを備えていてもよい。〕、メモリであるＲＡＭ（Random Access Memory）（１５）、ＲＯＭ（Read Only Memory）（１６）やハードディスクである外部記憶装置（１７）、並びにこれらの入力部（１１）、出力部（１２）、ＣＰＵ（１４）、ＲＡＭ（１５）、ＲＯＭ（１６）、外部記憶装置（１７）間のデータのやり取りが可能なように接続するバス（１８）などを備えている。また必要に応じて、敵機攻撃制御装置（１）に、ビデオカード（Video Card）やＣＤ−ＲＯＭなどの記憶媒体を読み書きできる装置（ドライブ）などを設けるとしてもよい。
【００３０】
敵機攻撃制御装置（１）の外部記憶装置（１７）には、敵機攻撃制御のためのプログラム及びこのプログラムの処理において必要となるデータなどが保存記憶されている。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭ（１５）などに適宜に保存記憶される。以下、演算結果やその格納領域のアドレスなどを記憶するＲＡＭ（１５）やレジスタなどの装置を単に「記憶部」と呼ぶことにする。
既述のとおり、敵機攻撃制御装置（１）は、シューティングゲームを実行するコンピュータであるところ、外部記憶装置（１７）にはシューティングゲームを実行するに必要な種々のプログラムなどが保存記憶されているが、本発明の要旨に関しないので説明を略する。また、そのプログラムが解釈されてシューティングゲームが実行される仕組みの詳細も本発明の要旨に関しないから説明を略する。
【００３１】
具体的には、外部記憶装置（１７）には、敵機による攻撃弾発射時点（現時点）において、当該敵機あるいは他の敵機によって過去の時点で発射された既存攻撃弾の位置及びその速度、並びに自機の位置関係に基づいて、現時点より後の各時点で、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率を各時点の各升目ごとに求めるためのプログラム（自機存在確率計算プログラム）、敵機が攻撃弾を発射する速度の２つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する升目における自機存在確率の和をそれぞれの速度候補ごとに求め、その和の値が所定の条件を満たす候補速度を攻撃弾発射速度として決定するためのプログラム（攻撃弾発射速度決定プログラム）が保存記憶されている。
なお、この実施形態における自機存在確率計算プログラムは、現時点ｔ０（＝０）に自機が存在する升目ｓ０から現時点より後の或る時点ｔにおける或る升目ｓまでの道筋の総数Ｃ（ｓ，ｔ）を、既存攻撃弾の存在を考慮して求めるためのプログラム（自機存在場合数計算プログラム）と、自機存在場合数計算プログラムの処理で得られた各升目における道筋の総数Ｃ（ｓ，ｔ）を用いて自機存在確率を求めるためのプログラム（確率計算プログラム）を含む。
【００３２】
敵機攻撃制御装置（１）では、外部記憶装置（１７）に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じて記憶部（２０）に読み込まれて、ＣＰＵ（１４）で解釈実行・処理される。この結果、ＣＰＵ（１４）が所定の機能（自機存在確率計算部〔自機存在場合数計算部、確率計算部〕、攻撃弾発射速度決定部）を実現することで攻撃弾発射速度の決定が実現される。また、本発明の視点からは必須の構成要素ではないが、シューティングゲームの実行を制御する機能を有する制御部が実装されており、この制御部もＣＰＵ（１４）で実現される。なお、全ての機能をＣＰＵなどの演算処理装置で実現するに限定されず、機能の一部を例えば演算回路によってハードウェア的に実現するようにしてもよい。
【００３３】
＜シューティングゲームの敵機攻撃制御処理＞
次に、図３及び図４を参照して、敵機攻撃制御装置（１）における敵機攻撃制御処理（攻撃弾発射速度の決定）の流れを叙述的に説明する。
攻撃弾発射速度の決定には、３通りの方式がある。１つ目は、攻撃弾の「速さ」は固定とし「向き」を決定する方式である。２つ目は、攻撃弾の「向き」は固定とし「速さ」を決定する方式である。３つ目は、攻撃弾の「速さ」及び「向き」の双方を決定する方式である。
いずれの方式を選択するにしても、本発明の要旨に影響はなく適宜に設計変更可能であるから、この実施形態では、１つ目の方式、つまり、攻撃弾の「速さ」は固定とし「向き」を決定する方式として説明する。また、「向き」は、２つ以上の候補（この実施形態では５つの候補）が予め定められており、これらの候補の中から「向き」を決定する。
【００３４】
また、この実施形態では、画面上における自機（３０）・敵機（４０）・既存攻撃弾の位置座標は、記憶部（２０）に記憶されているとする。
自機の行動は、図１（ａ）に示したとおりとする。
【００３５】
まず、制御部（１９０）は、シューティングゲームの実行処理中に、敵機（４０）の攻撃弾の発射を行うか否かを決定する。この決定は、従来のシューティングゲームと同様にして決定される。
この実施形態では、制御部（１９０）が敵機の攻撃弾の発射を行うことを決定すると、本発明である敵機攻撃制御処理（攻撃弾発射速度の決定）が実行されるようになっている。
【００３６】
自機存在確率計算部（１４１）は、自機存在場合数計算部（１４２）及び確率計算部（１４３）で構成されており、制御部（１９０）による敵機の攻撃弾発射決定を受けて、以下に説明する処理を行う。
【００３７】
自機存在場合数計算部（１４２）は、記憶部（２０）から自機（３０）の位置座標を取得し、ゲーム画面を分割した格子（５０）において自機（３０）が存在する升目を特定する（ステップＳ１）。図５では、一例として７×７の４９個の正方形の升目からなる格子（５０）を示しており、自機は中心の升目に存在していると特定された場合を示している。説明の便宜から、升目の位置を格子（５０）の外部に割り当てた数字（図５参照）をもって表現する。図５では、自機（３０）が存在する升目は（４，４）であり、敵機（４０）が存在する升目は（１，３）である。なお、自機（３０）及び敵機（４０）の中心は既述のとおりである。
【００３８】
このとき、自機（３０）が存在すると特定された升目を除く各升目に数字０が割り当てられ、自機（３０）が存在すると特定された升目に１が割り当てられる。つまり、自機（３０）が存在すると特定された升目を除く各升目の初期値Ｃ（ｓ，０）を０とし、自機（３０）が存在すると特定された升目の初期値Ｃ（ｓ，０）を１とする〔図５参照〕。
【００３９】
次に、自機存在場合数計算部（１４２）は、現時点より後の各時点ｔにおける各升目のＣ（ｓ，ｔ）を求める（ステップＳ２）。ここでは説明を具体的なものにするため処理単位時間ΔＴを１とする。また、任意の升目をｓで表す。
【００４０】
図６に時点ｔ＝１でのＣ（ｓ，ｔ）を示す。升目（３，３）、（３，４）、（３，５）、（４，３）、（４，４）、（４，５）、（５，３）、（５，４）、（５，５）に１が割り当てられている。
これは、現時点ｔ０（＝０）に自機（３０）が存在する升目ｓ０＝（４，４）から、処理単位時間１で移動可能な升目が、静止という自機（３０）の行動を含めて（３，３）、（３，４）、（３，５）、（４，３）、（４，４）、（４，５）、（５，３）、（５，４）、（５，５）であり、現時点ｔ０（＝０）に自機（３０）が存在する升目ｓ０＝（４，４）からの道筋がいずれも１通りの道筋しか存在しないことを示している。
【００４１】
図７に時点ｔ＝２でのＣ（ｓ，ｔ）を示す。升目（２，２）、（２，６）、（６，２）、（６，６）に１が、（２，３）、（２，５）、（３，２）、（３，６）、（５，２）、（５，６）、（６，３）、（６，５）に２が、（２，４）、（４，２）、（４，６）、（６，４）に３が、（３，３）、（３，５）、（５，３）、（５，５）に４が、（３，４）、（４，３）、（４，５）、（５，４）に６が、（４，４）に９が割り当てられている。
これは、時点ｔ＝１に自機（３０）が存在する升目ｓ＝（３，３）、（３，４）、（３，５）、（４，３）、（４，４）、（４，５）、（５，３）、（５，４）、（５，５）から、処理単位時間１で移動可能な升目が、静止という自機（３０）の行動を含めて（２，２）、（２，６）、（６，２）、（６，６）、（２，３）、（２，５）、（３，２）、（３，６）、（５，２）、（５，６）、（６，３）、（６，５）、（２，４）、（４，２）、（４，６）、（６，４）、（３，３）、（３，５）、（５，３）、（５，５）、（３，４）、（４，３）、（４，５）、（５，４）、（４，４）であり、現時点ｔ０（＝０）に自機（３０）が存在する升目ｓ０＝（４，４）からの道筋がそれぞれの数字が示す数だけあることを示している。
【００４２】
このように、自機存在場合数計算部（１４２）は、現時点より後の各時点ｔにおける各升目のＣ（ｓ，ｔ）を求めるのであるが、その求め方としては、人工知能技術の一つである探索計算方法を利用することができる。しかしながら、例えば普通の決定木探索の方法では、現時点より後の時点が増えると同時に、探索計算の深さが増し、必要な計算時間及び計算機の記憶容量が指数関数的に増大してしまう。この実施形態の場合、自機（３０）の各時点での行動種類は９通りなので、時点が一つ増すたびに必要な計算資源が９倍増えることになることに注意を要する。
【００４３】
本発明では、上記のように自機（３０）の行動に制約があるので、現時点ｔ０（＝０）に自機が存在する升目ｓ０から現時点より後の或る時点ｔにおける或る升目ｓまでの道筋の総数Ｃ（ｓ，ｔ）は、或る升目ｓの周囲の升目のうち１処理単位時間で自機が移動可能な升目ｓ′のＣ（ｓ′，ｔ−１）の総和（ｓ′に関する総和である。）と１処理単位時間前の升目ｓのＣ（ｓ，ｔ−１）との和で得られる。つまり、Ｃ（ｓ，ｔ）は式（１）で得られる。
【数１】
2008000346.tif 000003
【００４４】
このことを時点１及び時点２の場合で、一例を示して説明する〔図８参照〕。
時点２での升目（３，３）のＣ（ｓ，２）を求める〔ｓ＝（３，３）〕。このとき、時点１でのＣ（ｓ，１）は、１である。升目ｓ＝（３，３）の周囲の升目のうち１処理単位時間で自機が移動可能な升目ｓ′は、（２，２）、（２，３）、（２，４）、（３，２）、（３，４）、（４，２）、（４，３）、（４，４）である。升目ｓ′＝（２，２）、（２，３）、（２，４）、（３，２）、（４，２）のＣ（ｓ′，１）はそれぞれ０であり、升目ｓ′＝（３，４）、（４，３）、（４，４）のＣ（ｓ′，１）はそれぞれ１である〔図８（ａ）参照〕。従って、これらを式（１）に代入すると升目ｓ＝（３，３）のＣ（ｓ，２）は、Ｃ（ｓ，２）＝１＋（１＋１＋１＋０＋０＋０＋０＋０）＝４となる〔図８（ｂ）参照〕。
【００４５】
この方法によれば、Ｃ（ｓ，ｔ）の計算に必要な計算時間、計算機記憶容量は、時点と升目の数に比例して増えるのみである。発明者が実験を行った結果、遊興性の観点からは、通常の決定木探索では２から３時点先までの計算を行うのが限界であったが、上記方法では１０から２０時点先までの計算が可能であった。そのため、自機位置予測において、より精度の高い予測が可能となる（自機が画面の端から端まで移動するような場合までをも扱えるため。）。
上記のように現時点より後の各時点ｔにおける各升目のＣ（ｓ，ｔ）を求めるが、一般的には、自機位置予測の観点からはより先の時点まで予測するのが望ましいが、遊興性を損なわないようにする観点からはむやみに先の時点まで予測するのは好ましくない。また、このことは演算処理装置の処理能力などにも依存する。従って、どれくらい先の時点まで自機の位置を予測するかは、自機位置予測精度、遊興性、演算処理装置の処理能力などを考慮して予め決定しておけばよい（ここでの説明や図面では、理解を容易にするため時点２までしか示していない。）。
【００４６】
また、自機存在場合数計算部（１４２）は、記憶部（２０）から現時点における既存攻撃弾の位置座標を取得し、現時点より後の各時点において既存攻撃弾と衝突可能性のある升目のＣ（ｓ、ｔ）の値を０にする。
他の敵機もしくは攻撃弾を発射しようとしている敵機（４０）によって過去に発射済みの既存攻撃弾の影響は、Ｃ（ｓ、ｔ）の値に反映される。既存攻撃弾が現時点より後の或る時点で或る升目に存在しているとき、その時点では、攻撃弾位置座標を含む升目と攻撃弾位置座標から所定の距離内に位置する升目では、自機（３０）が攻撃弾と接触する可能性がある。このため、プレーヤーの一般的傾向として、そのような升目への自機の移動は行われないと考えられる。そこで、そのような升目のＣ（ｓ、ｔ）の値を０にする。つまり、その時点でのその升目における自機（３０）の存在確率は０になる。
【００４７】
このことを図９に示して説明する。
図９では、自機（３０）・敵機（４０）・既存攻撃弾のそれぞれの外形を内包する最小の円を、衝突判定に用いる自機（３０）・敵機（４０）・既存攻撃弾の形状と定義し、衝突判定円を、中心を既存攻撃弾の中心〔既存攻撃弾の形状の中心である。〕とし、半径を（既存攻撃弾の形状の半径）＋（自機の形状の半径）とする。図９では、衝突判定円の半径は、丁度、正方形の升目の一辺に等しいとしている。
時点１では、格子（５０）の右上の隅に既存攻撃弾の位置座標（あるいは看做し位置座標）があると予測されるとする〔図９（ａ）参照〕。このとき、衝突判定円内に位置する升目（１，７）のＣ（ｓ、ｔ）の値を０にする。但し、この場合では、もともと升目（１，７）のＣ（ｓ、ｔ）の値は０であるからリセットする必要はない。なお、「衝突判定円内に位置する升目」は、衝突判定円内に完全に内包される升目、及び、升目の一部分が衝突判定円内に含まれる升目である。
時点２では、升目（３，５）の右上の隅に既存攻撃弾の位置座標（あるいは看做し位置座標）があると予測されるとしている〔図９（ｂ）参照〕。既述のとおり各攻撃弾は、敵機から発射される際に決定された速度を発射後において維持することから各時点での位置座標を予測可能である。このとき、衝突判定円内に位置する升目（２，５）、（２，６）、（３，５）、（３，６）のＣ（ｓ、ｔ）の値を０にする。
【００４８】
以上のようにして自機存在場合数計算部（１４２）は、現時点より後の各時点ｔにおける各升目のＣ（ｓ，ｔ）を求める。各時点における各升目のＣ（ｓ，ｔ）は、記憶部（２０）に記憶される。ステップＳ２の処理の後、ステップＳ３の処理が行われる。
【００４９】
確率計算部（１４３）は、記憶部（２０）から各時点における各升目のＣ（ｓ，ｔ）を取得し、自機（３０）が各時点において各升目に存在している確率Ｐ（ｓ，ｔ）を求める（ステップＳ３）。
時点ｔで升目ｓにおける自機存在確率Ｐ（ｓ，ｔ）は、時点ｔでの全升目の場合数の和ΣｓＣ（ｓ，ｔ）を分母とし、升目ｓの場合数Ｃ（ｓ，ｔ）を分子とした式（２）で得る。各時点における各升目での自機存在確率Ｐ（ｓ，ｔ）は記憶部（２０）に記憶される。
【数２】
2008000346.tif 000004
【００５０】
このとき、時点が先に進むにつれて、一般には、自機（３０）が到達するための道筋が存在しない（道筋が初期値の０通り）升目が減少していくため、時点ｔで自機（３０）が或る升目ｓに存在する確率Ｐ（ｓ，ｔ）は、時点が先に進むにつれて減少する。また、一般に、攻撃弾発射時点（現時点）での自機位置から離れた升目での自機存在確率Ｐ（ｓ，ｔ）の値は低くなる。
【００５１】
続いて、攻撃弾発射速度決定部（１４４）は、記憶部（２０）から敵機（４０）の位置座標を取得し、また、ステップＳ３の処理で得られた各時点における各升目での自機存在確率Ｐ（ｓ，ｔ）も入力として、攻撃弾（新攻撃弾）の発射速度を決定する（ステップＳ４）。
この実施形態では、５つの「向き」の候補から選択して新攻撃弾の発射速度を決定する。敵機（４０）から発射された新攻撃弾の現時点より後の各時点での予測位置Ｓｅ（ｔ）ｉ〔ｉは、５つの候補を表すパラメータとする。〕を候補ごとに、敵機（４０）の位置座標を始点とする位置ベクトルで図１０に示してある（図１０中の５つの「向き」は一例に過ぎない。）。この新攻撃弾が、自機（３０）に対して与える脅威を増すためには、新攻撃弾が自機（３０）に衝突する可能性を高める必要がある。即ち、新攻撃弾が移動する各時点において、自機存在確率Ｐ（ｓ，ｔ）の高い升目に新攻撃弾が存在していることが必要である。このような考えの下、各時点での新攻撃弾の予測位置が存在する升目での自機存在確率の全ての時点での和である自機存在確率和ΣｔＰ（Ｓｅ（ｔ）ｉ，ｔ）をそれぞれの候補ごとに計算し、自機存在確率和ΣｔＰ（Ｓｅ（ｔ）ｉ，ｔ）が例えば最大となる「向き」を新攻撃弾の「向き」として決定する〔図１１（ａ）〕。なお、自機存在確率和ΣｔＰ（Ｓｅ（ｔ）ｉ，ｔ）のＳｅ（ｔ）ｉは、位置ベクトルＳｅ（ｔ）ｉの終点の位置座標であり、Ｐ（Ｓｅ（ｔ）ｉ，ｔ）は、位置ベクトルＳｅ（ｔ）ｉの終点の位置座標を含む升目の自機存在確率を表している。
【００５２】
ここでは、単発式の攻撃弾発射として、ΣｔＰ（Ｓｅ（ｔ）ｉ，ｔ）が最大となる「向き」を新攻撃弾の「向き」として１つに決定したが、このような実施形態に限定されるものではない。一度に複数の新攻撃弾を発射する場合、ΣｔＰ（Ｓｅ（ｔ）ｉ，ｔ）の値の上位から、発射すべき攻撃弾の数に等しい数の候補を選択することもできる。つまり、例えば一度に３つの新攻撃弾を発射する場合には、ΣｔＰ（Ｓｅ（ｔ）ｉ，ｔ）の値の上位３つの「向き」を新攻撃弾の「向き」として決定することもできる〔図１１（ｂ）〕。また、例えば一度に２つの新攻撃弾を発射する場合に、ΣｔＰ（Ｓｅ（ｔ）ｉ，ｔ）が最大となる「向き」を、２つの新攻撃弾のそれぞれ向きがなす角度の中心の向きとなるように、２つの新攻撃弾の「向き」を決定することもできる〔図１１（ｃ）〕。
【００５３】
以上のようにして決定された新攻撃弾の発射速度は、記憶部（２０）に一旦保存され、制御部（１９０）の制御の下、決定された発射速度で新攻撃弾が画面上に飛行するように描画される。この処理の主体や処理方法は、従来と同様であるから説明を略する。
【００５４】
以上の実施形態では、攻撃弾の「速さ」は固定とし「向き」を決定する方式とした。これに対して、攻撃弾の「向き」は固定とし「速さ」を決定する方式では、ステップＳ４の処理において、位置ベクトルＳｅ（ｔ）ｉを、「向き」は固定とし「速さ」を複数の候補としたものに変更すればよく、攻撃弾の「速さ」及び「向き」の双方を決定する方式では、ステップＳ４の処理において、位置ベクトルＳｅ（ｔ）ｉを、「速さ」及び「向き」の双方の組み合わせを複数の候補としたものに変更すればよい。
【００５５】
なお、新攻撃弾の発射のたびに新攻撃弾の速度を決定するのではなく、例えば３発目に１回のように、所定の発射回数おきに本発明の手法で新攻撃弾の速度を決定するようにしてもよい。あるいは、前回の攻撃弾発射からの経過時間を計測しておき、所定の時間を経過した後の最初の攻撃弾発射において、本発明の手法で新攻撃弾の速度を決定するようにしてもよい。
【００５６】
＜変形例＞
自機存在確率Ｐ（ｓ，ｔ）の算出において、攻撃弾発射時点での自機移動速度を考慮し、その移動速度が過去に或る程度継続されている場合、その自機移動先の升目における自機存在確率Ｐ（ｓ，ｔ）の値をいずれも１にする〔その他の升目の自機存在確率は０とする。〕。これは、過去から現時点までの自機移動速度が将来もある程度維持されるであろうとの見通しに基づく。自機存在確率Ｐ（ｓ，ｔ）の値を１とする時点の上限は、例えばプレーヤーの操作履歴を保存しておき、プレーヤーが移動方向の変更を行う操作の時間間隔の平均値を求め、その値を利用すればよい。具体例として、図１２に示すように、自機存在場合数計算部（１４２）は、記憶部（２０）から操作時間間隔平均を取得し、操作時間間隔平均が３処理単位時間であれば、現時点から３処理単位時間先、つまり時点３まで現時点の自機移動速度を維持するとし、その時点３までに自機移動速度で通過する升目及び時点３で自機が存在する升目の自機存在確率Ｐ（ｓ，ｔ）の値をいずれも１とすればよい。あるいは、現時点の自機移動速度を開始した時点を記憶部（２０）に記憶しておき、操作時間間隔平均と開始時点との残差を求め、その残差に相当する時点まで現時点の自機移動速度を維持するとし、その時点までに自機移動速度で通過する升目及び当該時点で自機が存在する升目の自機存在確率Ｐ（ｓ，ｔ）の値をいずれも１としてもよい。
【００５７】
具体的な一例を図１３に示す。ここでは、操作時間間隔平均が１処理単位時間としている。時点１では、図１３（ａ）のように自機は確率１で升目（４，５）に移動し、それ以外の升目での自機存在確率は０である〔なお、図１３（ａ）の各升目の数字はＣ（ｓ，ｔ）であって自機存在確率ではない。ここでは、図５に示す時点０における道筋の総数が時点１でも継続していることを表している。〕。時点２では、上記で説明した方法で道筋を計算すればよく、時点１での自機位置を含む升目（４，５）を中心として、図６の時点１と同様に各升目に道筋の総数が割り当てられる〔図１３（ｂ）参照〕。
【００５８】
このようにすれば、より先の時点まで自機位置予測するような場合において、自機存在確率Ｐ（ｓ，ｔ）の値が非ゼロである升目の数の増加を押さえることができる。また、現時点よりもより先の時点の自機位置の予測が正確になるということであり、攻撃弾が自機に与えうる脅威も増大する。
【００５９】
シューティングゲームにおける敵機の数は複数であることが前提であり、複数の敵機が連携して自機を追い込むような機能が求められている。しかし、そのような連携を制御するアルゴリズムは、従来のように、全ての敵機の動きを監視する方式の中央制御では不十分である。何故なら、ゲーム画面上に出現する敵機の状況は時々刻々変化をし、それらの全ての状況の全てを考慮した中央制御アルゴリズムの開発は事実上不可能だからである。
この点、以上の実施形態で説明したとおり、本発明の敵機攻撃制御手法によれば、次のような効果も享受される。複数の敵機がそれぞれ、各々の制御アルゴリズム中で非同期に実行するものでありながらも、各敵機が攻撃弾発射時点で、自身が発射する攻撃弾がいかに自機にとって好ましくないものとするかを判断することと同値であると評価でき、結果的には、全体としての複数の敵機の連携を生むものとなる。つまり、いわゆる創発的な、複数の敵機の連携が発生するのである。
【００６０】
以上の各実施形態の他、本発明であるシューティングゲームの敵機攻撃制御装置・方法は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記シューティングゲームの敵機攻撃制御装置・方法において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【００６１】
また、上記シューティングゲームの敵機攻撃制御装置における処理機能をコンピュータによって実現する場合、シューティングゲームの敵機攻撃制御装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記シューティングゲームの敵機攻撃制御装置における処理機能がコンピュータ上で実現される。
【００６２】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（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）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００６５】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームの敵機攻撃制御装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【００６６】
本発明は、画面上に自機及び１つあるいは複数の敵機を表示し、敵機が自機に対して攻撃弾を発射するコンピュータによるシューティングゲームに有用である。
【図面の簡単な説明】
【００６７】
【図１】自機の行動の種類を説明する図。（ａ）日本将棋の「玉将」または「王将」の動きと同じ場合。（ｂ）十文字の動きの場合。
【図２】シューティングゲームの敵機攻撃制御装置（１）のハードウェア構成例を示す図。
【図３】シューティングゲームの敵機攻撃制御装置（１）の機能構成例を示す図。
【図４】シューティングゲームの敵機攻撃制御装置（１）における敵機の攻撃弾速度を決定する処理フロー。
【図５】時点０での各升目の道筋の総数Ｃ（ｓ，ｔ）を示す図。
【図６】時点１での各升目の道筋の総数Ｃ（ｓ，ｔ）を示す図。
【図７】時点２での各升目の道筋の総数Ｃ（ｓ，ｔ）を示す図。
【図８】（ａ）に示す網掛け部分の各升目から、（ｂ）の網掛け部分の升目の道筋の総数Ｃ（ｓ，ｔ）を求める方法を説明する図。
【図９】（ａ）時点１で攻撃判定円に位置する升目の道筋の総数Ｃ（ｓ，ｔ）を０にリセットすることを説明する図。（ｂ）時点２で攻撃判定円に位置する升目の道筋の総数Ｃ（ｓ，ｔ）を０にリセットすることを説明する図。
【図１０】時点１及び時点２において、速度候補の位置ベクトルを示す図。
【図１１】（ａ）速度候補を１つ決定する場合を例示した図。（ｂ）速度候補を３つ決定する場合を例示した図。（ｃ）速度候補を１つ決定して、決定された速度を挟む２つの速度で攻撃弾を発射する場合を例示した図。
【図１２】変形例におけるシューティングゲームの敵機攻撃制御装置（１）の機能構成例を示す図。
【図１３】（ａ）変形例の場合に時点１での各升目の道筋の総数Ｃ（ｓ，ｔ）を示す図。（ｂ）変形例の場合に時点２での各升目の道筋の総数Ｃ（ｓ，ｔ）を示す図。
【図１４】升目の四隅の角またはその中心のいずれかを中心とする衝突判定形状に含まれる升目は一意になることを説明する図。（ａ）升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち１つに看做した場合。（ｂ）升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち１つに看做した場合。（ｃ）升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合。（ｄ）升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合。
【符号の説明】
【００６８】
１  シューティングゲームの敵機攻撃制御装置
１４１  自機存在確率計算部
１４２  自機存在場合数計算部
１４３  確率算出部
１４４  攻撃弾発射速度決定部
２０  記憶部
【図１】
2008000346.tif 000005
【図２】
2008000346.tif 000006
【図３】
2008000346.tif 000007
【図４】
2008000346.tif 000008
【図５】
2008000346.tif 000009
【図６】
2008000346.tif 000010
【図７】
2008000346.tif 000011
【図８】
2008000346.tif 000012
【図９】
2008000346.tif 000013
【図１０】
2008000346.tif 000014
【図１１】
2008000346.tif 000015
【図１２】
2008000346.tif 000016
【図１３】
2008000346.tif 000017
【図１４】
2008000346.tif 000018