(57)【要約】【課題】デモンストレーションで人間の目から見て理に適った自機の行動制御を行う。【解決手段】格子状に分割された画面の各升目を用いた処理を行う。まず、現時点ｔ０における自機が存在する升目ｓ０を起点とし、現時点ｔ０よりも後の時点ｎで、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目に到達しえる順経路総数を升目ごとに求めて、順経路総数が最大の升目ｓｇを目標とする。次に升目ｓｇを起点とし、時点ｔ０＋ΔＴで、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに、升目ｓ０および升目ｓ０の周囲の升目のうち１処理単位時間ΔＴで自機が升目ｓ０に移動可能な升目ｓ０′の各升目に到達しえる逆経路総数を求め、このうち最大の逆経路総数を有する升目に対して行動することを決定する。【選択図】図５
2008023243.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）やＣＤ−ＲＯＭなどの記憶媒体を読み書きできる装置（ドライブ）などを設けるとしてもよい。
【００４６】
デモ用自機行動制御装置（１）の外部記憶装置（１７）には、デモンストレーション用自機行動制御のためのプログラムおよびこのプログラムの処理において必要となるデータなどが保存記憶されている。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭ（１５）などに適宜に保存記憶される。以下、演算結果やその格納領域のアドレスなどを記憶するＲＡＭ（１５）やレジスタなどの装置を単に「記憶部」と呼ぶことにする。
既述のとおり、デモ用自機行動制御装置（１）は、シューティングゲームを実行するコンピュータであるところ、外部記憶装置（１７）にはシューティングゲームを実行するに必要な種々のプログラムなどが保存記憶されているが、本発明の要旨に関しないので説明を略する。また、そのプログラムが解釈されてシューティングゲームが実行される仕組みの詳細も本発明の要旨に関しないから説明を略する。
【００４７】
具体的には、外部記憶装置（１７）には、デモンストレーションで自機の行動を決定するべき時点〔現時点〕において、既存敵機の位置およびその速度、既存敵機によって過去の時点で発射された既存攻撃弾の位置およびその速度、並びに自機の位置に基づいて、現時点ｔ０（＝０）に自機が存在する升目ｓ０から現時点より後の或る時点ｎにおける升目ｓまでの順経路総数Ｃ（ｓ，ｎ）を、既存敵機と既存攻撃弾の存在を考慮して求めて、Ｃ（ｓ，ｎ）が最大の升目ｓｇを自機の向かう目標の升目として設定するためのプログラム（自機目標設定プログラム）、目標の升目ｓｇを起点として、既存敵機と既存攻撃弾の存在、敵機の破壊並びに画面中央付近にできるだけ居ることを考慮して、時点を減少させながら逐次に逆経路総数Ｃｂ（ｓ，ｔ）を求めることで時点ｔ０＋ΔＴでのＣｂ（ｓ，ｔ０＋ΔＴ）を求め、現時点ｔ０（＝０）で自機が存在する升目ｓ０のＣｂ（ｓ０，ｔ０＋ΔＴ）および升目ｓ０の周囲の升目のうち１処理単位時間で自機が升目ｓ０に移動可能な升目ｓ０′の各Ｃｂ（ｓ０′，ｔ０＋ΔＴ）のうち、最大の値となった升目に対して行動することを決定するためのプログラム（自機行動決定プログラム）が保存記憶されている。
【００４８】
なお、この実施形態における自機目標設定プログラムは、現時点ｔ０（＝０）に自機が存在する升目ｓ０から現時点より後の或る時点ｔにおける或る升目ｓまでの順経路総数Ｃ（ｓ，ｔ）を、既存敵機と既存攻撃弾の存在を考慮して逐次求めるためのプログラム（順経路数計算プログラム）と、順経路数計算プログラムの処理で得られた時点ｎでの各升目における順経路総数Ｃ（ｓ，ｎ）のうち最大の升目ｓｇを特定するためのプログラム（目標決定プログラム）とを含む。
また、この実施形態における自機行動決定プログラムは、目標の升目ｓｇから時点ｎより前の或る時点ｔにおける或る升目ｓまでの逆経路総数Ｃｂ（ｓ，ｔ）を、既存敵機と既存攻撃弾の存在、敵機の破壊並びに画面中央付近にできるだけ居ることを考慮して逐次求めるためのプログラム（逆経路数計算プログラム）と、逆経路数計算プログラムの処理で得られた時点ｔ０＋ΔＴでのＣｂ（ｓ，ｔ０＋ΔＴ）のうち、現時点ｔ０（＝０）で自機が存在する升目ｓ０のＣｂ（ｓ０，ｔ０＋ΔＴ）および升目ｓ０の周囲の升目のうち１処理単位時間で自機が升目ｓ０に移動可能な升目ｓ０′の各Ｃｂ（ｓ０′，ｔ０＋ΔＴ）の中で最大の値となった升目を特定するためのプログラム（行動決定プログラム）とを含む。
【００４９】
デモ用自機行動制御装置（１）では、外部記憶装置（１７）に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じて記憶部（２０）に読み込まれて、ＣＰＵ（１４）で解釈実行・処理される。この結果、ＣＰＵ（１４）が所定の機能（自機目標設定部〔順経路数計算部、目標決定部〕、自機行動決定部〔逆経路数計算部、行動決定部〕）を実現することで自機行動の決定が実現される。また、本発明の視点からは必須の構成要素ではないが、シューティングゲームの実行やデモンストレーションの実行を制御する機能を有する制御部が実装されており、この制御部もＣＰＵ（１４）で実現される。なお、全ての機能をＣＰＵなどの演算処理装置で実現するに限定されず、機能の一部を例えば演算回路によってハードウェア的に実現するようにしてもよい。
【００５０】
＜シューティングゲームのデモンストレーション用自機行動制御方法＞
次に、図４および図５を参照して、デモ用自機行動制御装置（１）におけるデモ用自機行動制御処理（自機行動の決定）の流れを叙述的に説明する。
【００５１】
この実施形態では、画面上における自機（３０）の位置座標、敵機（４０）の位置座標および速度・既存攻撃弾の位置座標および速度は、それぞれ記憶部（２０）に記憶されているとする。また、目標を定める時点ｎも記憶部（２０）に記憶されているとする。
自機の行動は、図１（ａ）に示したとおりとする。
【００５２】
まず、制御部（１９０）は、デモンストレーションの実行処理中に、自機（３０）の行動を決定するための処理を行うよう制御する。
この実施形態では、制御部（１９０）の制御によって、本発明であるデモ用自機行動制御処理〔自機行動の決定〕が実行されるようになっている。
【００５３】
自機目標設定部（１４１）は、順経路数計算部（１４２）および目標決定部（１４３）で構成されており、制御部（１９０）の制御を受けて、以下に説明する処理を行う。
【００５４】
順経路数計算部（１４２）は、記憶部（２０）から自機（３０）の位置座標を取得し、画面を分割した格子（５０）において自機（３０）が存在する升目を特定する（ステップＳ１）。図６では、一例として７×７の４９個の正方形の升目からなる格子（５０）を示しており、自機は中心の升目に存在していると特定された場合を示している。説明の便宜から、升目の位置を格子（５０）の外部に割り当てた数字〔図６参照〕をもって表現する。つまり、格子（５０）を行列に見立てたときの行列の成分で各升目を表示する。図６では、自機（３０）が存在する升目は（４，４）であり、敵機（４０）が存在する升目は（１，３）である。なお、自機（３０）および敵機（４０）の基準点は既述のとおりである。自機（３０）の位置座標が、格子の線や交点の上に位置する場合には、例えば予め定義しておいた升目に自機が存在すると特定すればよい〔例：線上の場合、原則右側の升目とする。交点上の場合、原則右下の升目とする。〕。あるいは、自機（３０）の位置座標が格子の線や交点の上に位置しないように画面を格子分割するとしてもよい。
【００５５】
このとき、自機（３０）が存在すると特定された升目を除く各升目に数字０が割り当てられ、自機（３０）が存在すると特定された升目に１が割り当てられる。つまり、自機（３０）が存在すると特定された升目を除く各升目の初期値Ｃ（ｓ，０）を０とし、自機（３０）が存在すると特定された升目の初期値Ｃ（ｓ，０）を１とする〔図６参照〕。
【００５６】
次に、順経路数計算部（１４２）は、現時点より後の各時点ｔにおける各升目のＣ（ｓ，ｔ）を順次に求めることで、時点ｎで升目ｓに到達する順経路総数Ｃ（ｓ，ｎ）を求める（ステップＳ２）。ここでは説明を具体的なものにするため処理単位時間ΔＴを１とする。
【００５７】
図７に時点ｔ＝１でのＣ（ｓ，ｔ）を示す。升目（３，３）、（３，４）、（３，５）、（４，３）、（４，４）、（４，５）、（５，３）、（５，４）、（５，５）に１が割り当てられている。
これは、現時点ｔ０（＝０）に自機（３０）が存在する升目ｓ０＝（４，４）から、処理単位時間１で移動可能な升目が、静止という自機（３０）の行動を含めて（３，３）、（３，４）、（３，５）、（４，３）、（４，４）、（４，５）、（５，３）、（５，４）、（５，５）であり、現時点ｔ０（＝０）に自機（３０）が存在する升目ｓ０＝（４，４）からの経路がいずれも１通りの経路しか存在しないことを示している。
【００５８】
図８に時点ｔ＝２でのＣ（ｓ，ｔ）を示す。升目（２，２）、（２，６）、（６，２）、（６，６）に１が、（２，３）、（２，５）、（３，２）、（３，６）、（５，２）、（５，６）、（６，３）、（６，５）に２が、（２，４）、（４，２）、（４，６）、（６，４）に３が、（３，３）、（３，５）、（５，３）、（５，５）に４が、（３，４）、（４，３）、（４，５）、（５，４）に６が、（４，４）に９が割り当てられている。
これは、時点ｔ＝１に自機（３０）が存在する升目ｓ＝（３，３）、（３，４）、（３，５）、（４，３）、（４，４）、（４，５）、（５，３）、（５，４）、（５，５）から、処理単位時間１で移動可能な升目が、静止という自機（３０）の行動を含めて（２，２）、（２，６）、（６，２）、（６，６）、（２，３）、（２，５）、（３，２）、（３，６）、（５，２）、（５，６）、（６，３）、（６，５）、（２，４）、（４，２）、（４，６）、（６，４）、（３，３）、（３，５）、（５，３）、（５，５）、（３，４）、（４，３）、（４，５）、（５，４）、（４，４）であり、現時点ｔ０（＝０）に自機（３０）が存在する升目ｓ０＝（４，４）からの経路がそれぞれの数字が示す数だけあることを示している。
【００５９】
このように、順経路数計算部（１４２）は、現時点より後の各時点ｔにおける各升目のＣ（ｓ，ｔ）を求めるのであるが、その求め方としては、人工知能技術の一つである探索計算方法を利用することができる。しかしながら、例えば普通の決定木探索の方法では、現時点より後の時点が増えると同時に、探索計算の深さが増し、必要な計算時間および計算機の記憶容量が指数関数的に増大してしまう。この実施形態の場合、自機（３０）の各時点での行動種類は９通りなので、時点が一つ増すたびに必要な計算資源が９倍増えることになることに注意を要する。
【００６０】
本発明では、上記のように自機（３０）の行動に制約があるので、現時点ｔ０（＝０）に自機が存在する升目ｓ０から現時点より後の或る時点ｔにおける或る升目ｓまでの順経路総数Ｃ（ｓ，ｔ）は、或る升目ｓの周囲の升目のうち１処理単位時間で自機が升目ｓに移動可能な升目ｓ′のＣ（ｓ′，ｔ−１）の総和〔ｓ′に関する総和である。〕と１処理単位時間前の升目ｓのＣ（ｓ，ｔ−１）との和で得られる。つまり、Ｃ（ｓ，ｔ）は式（１）で得られる。
【数１】
2008023243.tif 000003
【００６１】
このことを時点１および時点２の場合で、一例を示して説明する〔図９参照〕。
時点２での升目（３，３）のＣ（ｓ，２）を求める〔ｓ＝（３，３）〕。このとき、時点１でのＣ（ｓ，１）は、１である。升目ｓ＝（３，３）の周囲の升目のうち１処理単位時間で自機が升目ｓに移動可能な升目ｓ′は、（２，２）、（２，３）、（２，４）、（３，２）、（３，４）、（４，２）、（４，３）、（４，４）である。升目ｓ′＝（２，２）、（２，３）、（２，４）、（３，２）、（４，２）のＣ（ｓ′，１）はそれぞれ０であり、升目ｓ′＝（３，４）、（４，３）、（４，４）のＣ（ｓ′，１）はそれぞれ１である〔図９（ａ）参照〕。従って、これらを式（１）に代入すると升目ｓ＝（３，３）のＣ（ｓ，２）は、Ｃ（ｓ，２）＝１＋（１＋１＋１＋０＋０＋０＋０＋０）＝４となる〔図９（ｂ）参照〕。
【００６２】
上記のように現時点より後の各時点ｔにおける各升目のＣ（ｓ，ｔ）を求めるが、実時間性を損なわないようにする観点からはむやみに遥か将来の時点まで予測するのは好ましくない。また、このことは演算処理装置の処理能力などにも依存する。従って、どれくらい将来の時点ｎまでのＣ（ｓ，ｎ）を求めるかは、娯楽性、演算処理装置の処理能力などを考慮して予め決定しておけばよい（ここでの説明や図面では、理解を容易にするため時点２までしか示していない。）。
【００６３】
また、順経路数計算部（１４２）は、記憶部（２０）から現時点における既存敵機の位置座標・速度および既存攻撃弾の位置座標・速度を取得し、現時点より後の各時点において既存敵機および／または既存攻撃弾と衝突可能性のある升目のＣ（ｓ，ｔ）の値を０にする。
【００６４】
このことを図１０に示して説明する。ここでは、既存攻撃弾の場合で説明するが、既存敵機の場合でも同様である。
図１０では、自機（３０）・敵機（４０）・既存攻撃弾のそれぞれの外形を内包する最小の円を、衝突判定に用いる自機（３０）・敵機（４０）・既存攻撃弾の形状と定義し、衝突判定円を、中心を既存攻撃弾の中心〔既存攻撃弾の形状の中心である。〕とし、半径を（既存攻撃弾の形状の半径）＋（自機の形状の半径）とする。図１０では、衝突判定円の半径は、丁度、正方形の升目の一辺に等しいとしている。
時点１では、格子（５０）の右上の隅に既存攻撃弾の位置座標（あるいは看做し位置座標）があると予測されるとする〔図１０（ａ）参照〕。このとき、衝突判定円内に位置する升目（１，７）のＣ（ｓ，ｔ）の値を０にする。但し、この場合では、もともと升目（１，７）のＣ（ｓ，ｔ）の値は０であるからリセットする必要はない。なお、「衝突判定円内に位置する升目」は、衝突判定円内に完全に内包される升目、および、升目の一部分が衝突判定円内に含まれる升目である。
時点２では、升目（３，５）の右上の隅に既存攻撃弾の位置座標（あるいは看做し位置座標）があると予測されるとしている〔図１０（ｂ）参照〕。既述のとおり各攻撃弾は、敵機から発射される際に決定された速度を発射後において維持することから各時点での位置座標を予測可能である。例えば、時点ｔ０（＝０）での或る既存攻撃弾の位置を（Ｘｂ（０），Ｙｂ（０））、その速度を（Ｖｘ（０），Ｖｙ（０））、時点ｔでの当該既存攻撃弾の位置を（Ｘｂ（ｔ），Ｙｂ（ｔ））とすれば、（Ｘｂ（ｔ），Ｙｂ（ｔ））＝（Ｘｂ（０）＋Ｖｘ（０）×ｔ×ΔＴ，Ｙｂ（０）＋Ｖｙ（０）×ｔ×ΔＴ）の関係がある。図１０（ｂ）の例では、衝突判定円内に位置する升目（２，５）、（２，６）、（３，５）、（３，６）のＣ（ｓ，ｔ）の値を０にする。
【００６５】
以上のようにして順経路数計算部（１４２）は、現時点より後の各時点ｔにおける各升目のＣ（ｓ，ｔ）を順次に求め、最終的に時点ｎでの各升目のＣ（ｓ，ｎ）を求める。時点ｎにおける各升目のＣ（ｓ，ｎ）は、記憶部（２０）に記憶される。ステップＳ２の処理の後、ステップＳ３の処理が行われる。
【００６６】
目標決定部（１４３）は、記憶部（２０）から時点ｎにおける各升目のＣ（ｓ，ｎ）を取得し、Ｃ（ｓ，ｎ）が最大の升目ｓｇを特定する（ステップＳ３）。特定された升目ｓｇは、自機の向かう目標の升目となる。
もし、Ｃ（ｓ，ｎ）が同じ値の升目が存在したならば、それらのうちの１つの升目を升目ｓｇとして特定すればよい。あるいは、それらのうち最も画面中央に近い升目を升目ｓｇとして特定してもよい。
特定された升目ｓｇを識別する目標升目識別情報は、記憶部（２０）に記憶される。このような目標升目識別情報としては、例えば、升目ｓｇの中心に位置座標でもよい。あるいは、本明細書において升目の位置を格子（５０）の外部に割り当てた数字の組み合わせをもって表現するのと同様にして、格子を行列と見立てて行列の成分表示で升目を特定するならば、この成分を目標升目識別情報に用いてもよい。
【００６７】
自機行動決定部（１４４）は、逆経路数計算部（１４５）および行動決定部（１４６）で構成されており、ステップＳ３の処理に続いて以下に説明する処理を行う。
【００６８】
逆経路数計算部（１４５）は、記憶部（２０）から識別情報を取得し、目標の升目ｓｇを起点として、時点を減少させながら逐次に各時点での各升目のＣｂ（ｓ，ｔ）を求める（ステップＳ４）。この求め方はステップＳ１およびステップＳ２の処理とほぼ同様である。
この段階では、起点となる升目が升目ｓｇに特定されているので、初期値として、升目ｓｇを除く各升目に数字０が割り当てられ、升目ｓｇに１が割り当てられる。
そして、現時点より前の各時点ｔにおける各升目のＣｂ（ｓ，ｔ）を求めるが、この求め方でステップＳ２の処理と異なるのは、式（１）ではなく式（２）によって求める点にある。
【数２】
2008023243.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）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００８２】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームのデモンストレーション用自機行動制御装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【００８３】
本発明は、画面上に自機と１つあるいは複数の敵機とを表示し、自機および敵機が行動しながら攻撃弾を発射するコンピュータによるシューティングゲームのデモンストレーションに有用である。
また、人間の目から見て理に適った自機の行動制御を行うデモンストレーションとなるから、デモンストレーション効果がより長く持続し、例えば店頭などでデモンストレーションを表示するならば、集客効果を発揮し、デモンストレーションを見た者の購買意欲を高めることとなる。
【図面の簡単な説明】
【００８４】
【図１】自機の行動の種類を説明する図。（ａ）日本将棋の「玉将」または「王将」の動きと同じ場合。（ｂ）十文字の動きの場合。
【図２】升目の四隅の角またはその中心のいずれかを中心とする衝突判定形状に含まれる升目は一意になることを説明する図。（ａ）升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち１つに看做した場合。（ｂ）升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち１つに看做した場合。（ｃ）升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合。（ｄ）升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合。
【図３】シューティングゲームのデモンストレーション用自機行動制御装置（１）のハードウェア構成例を示す図。
【図４】シューティングゲームのデモンストレーション用自機行動制御装置（１）の機能構成例を示す図。
【図５】シューティングゲームのデモンストレーション用自機行動制御装置（１）における自機行動決定の処理フロー。
【図６】時点０での各升目の順経路総数Ｃ（ｓ，ｔ）を示す図。
【図７】時点１での各升目の順経路総数Ｃ（ｓ，ｔ）を示す図。
【図８】時点２での各升目の順経路総数Ｃ（ｓ，ｔ）を示す図。
【図９】（ａ）に示す網掛け部分の各升目から、（ｂ）に示す網掛け部分の升目の順経路総数Ｃ（ｓ，ｔ）を求める方法を説明する図。
【図１０】（ａ）時点１で攻撃判定円に位置する升目の順経路総数Ｃ（ｓ，ｔ）を０にリセットすることを説明する図。（ｂ）時点２で攻撃判定円に位置する升目の順経路総数Ｃ（ｓ，ｔ）を０にリセットすることを説明する図。
【図１１】自機が敵機をできる限り破壊することを考慮して、各升目のＣｂ（ｓ，ｔ）を補正することを説明する図。（ａ）に示す各升目のＣｂ（ｓ，ｔ）のうち、時点ｔで自機が升目ｓに在る場合に敵機が自機の攻撃ライン上にあるときの升目ｓ〔網掛け部分〕のＣｂ（ｓ，ｔ）をＡｓ（＝２）倍して、（ｂ）に示す網掛け部分のＣｂ（ｓ，ｔ）に補正する。
【図１２】自機の位置ができるだけ画面中央付近にあることを考慮して、各升目のＣｂ（ｓ，ｔ）を、各升目の画面中央からの距離ｒに応じて補正することを説明する図。（ａ）に示す各升目のＣｂ（ｓ，ｔ）に関数Ｆ（ｒ）で得られたＡｚを乗じて、（ｂ）に示す各升目のＣｂ（ｓ，ｔ）に補正する。
【図１３】自機の位置ができるだけ画面中央付近にあることを考慮して、各升目のＣｂ（ｓ，ｔ）を、各升目の画面中央からの距離ｒに応じて補正することを説明する図。（ａ）に示すマスキングデータの各升目の値Ａｚと（ｂ）に示す各升目のＣｂ（ｓ，ｔ）との積の演算を対応する升目同士で行ない、（ｃ）に示す各升目のＣｂ（ｓ，ｔ）に補正する。
【図１４】現時点ｔ０（＝０）で自機が存在する升目ｓ０のＣｂ（ｓ０，１）および升目ｓ０の周囲の升目のうち１処理単位時間で自機が升目ｓ０に移動可能な升目ｓ０′のＣｂ（ｓ０′，１）を例示する図。
【符号の説明】
【００８５】
１  シューティングゲームのデモンストレーション用自機行動制御装置
１４１  自機目標設定部    １４２  順経路数計算部
１４３  目標決定部        １４４  自機行動決定部
１４５  逆経路数計算部    １４６  行動決定部
１９０  制御部            ２０  記憶部
【図１】
2008023243.tif 000005
【図２】
2008023243.tif 000006
【図３】
2008023243.tif 000007
【図４】
2008023243.tif 000008
【図５】
2008023243.tif 000009
【図６】
2008023243.tif 000010
【図７】
2008023243.tif 000011
【図８】
2008023243.tif 000012
【図９】
2008023243.tif 000013
【図１０】
2008023243.tif 000014
【図１１】
2008023243.tif 000015
【図１２】
2008023243.tif 000016
【図１３】
2008023243.tif 000017
【図１４】
2008023243.tif 000018