Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4804240B2 - シューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体 - Google Patents
[go: Go Back, main page]

JP4804240B2 - シューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体 - Google Patents

シューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体 Download PDF

Info

Publication number
JP4804240B2
JP4804240B2 JP2006172831A JP2006172831A JP4804240B2 JP 4804240 B2 JP4804240 B2 JP 4804240B2 JP 2006172831 A JP2006172831 A JP 2006172831A JP 2006172831 A JP2006172831 A JP 2006172831A JP 4804240 B2 JP4804240 B2 JP 4804240B2
Authority
JP
Japan
Prior art keywords
aircraft
attack
time
speed
cell
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006172831A
Other languages
English (en)
Other versions
JP2008000346A (ja
Inventor
洋 川野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Inc
NTT Inc USA
Original Assignee
Nippon Telegraph and Telephone Corp
NTT Inc USA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp, NTT Inc USA filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2006172831A priority Critical patent/JP4804240B2/ja
Publication of JP2008000346A publication Critical patent/JP2008000346A/ja
Application granted granted Critical
Publication of JP4804240B2 publication Critical patent/JP4804240B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、画面上に表示された自機と敵機とが互いに戦うシューティングゲームの処理技術に関わる。より詳しくは、敵機の攻撃制御の処理に関する。
一般的なシューティングゲームでは、画面上に1つの自機と一つあるいは複数の敵機が表示される。
プレーヤーが適当な入力手段(例えばキーボードのキー、多方向押圧可能なスイッチ、操縦桿などである。)を操作すると、その操作が画面上の自機のW種類の行動に変換され、自機がその操作に応じた行動をする。また、ユーザが適当な入力手段(例えばキーボードのキー、多方向押圧可能なスイッチ、操縦桿に備えられたボタンなどである。)を操作すると、その操作が画面上の自機の攻撃行動に変換され、自機が攻撃弾を発射し、敵機や種々のアイテムに対してダメージを与えることができるようになっている。
一方、敵機の操作は、ネットワーク対戦型シューティングゲームのように、自機を操作するプレーヤーとは異なるプレーヤーによって操作される人間操作型の場合や、あるいは、コンピュータによって操作されるコンピュータ操作型がある。ここで「コンピュータ」とは、いわゆるパーソナルコンピュータのような汎用機の場合に限定されず、ゲーム専用機などを広く指す(以下同様)。また、「コンピュータによる操作」とは、コンピュータのハードウェア資源とコンピュータに実装されたソフトウェアとが協働して情報処理を実現することで、敵機の行動・自機に対する攻撃弾の発射がコンピュータの画面上において表示されることをいう。
コンピュータ操作型の場合、敵機の行動制御及び敵機の自機に対する攻撃弾の発射制御は、コンピュータの制御プログラムに従って処理されている。
なお、自機・敵機の「行動」には、「移動」という行動のみならず、「静止」という行動も含まれる。また、自機・敵機が攻撃弾を発射すると、単に攻撃弾の「発射」のみが画面上に表示されるだけでなく、発射された攻撃弾の飛行も表示される。
シューティングゲームにおける上記の事実は周知であるから、先行技術文献を示すまでもない。
従来のシューティングゲームでは、コンピュータ操作型の場合、敵機の自機に対する攻撃弾の発射制御、つまり敵機の攻撃弾発射時の攻撃弾移動速度決定アルゴリズムは、攻撃弾発射時点の自機位置を狙って攻撃弾速度を決めるか、ランダムな方向に攻撃弾を発射するなどの単純なものに限られていた。ここで「速度」は、画面上に表示される物体の有する、「速さ」と「向き」とを合わせもったベクトル量とする。
このような単純なアルゴリズムであるため、従来のシューティングゲームでは、異なる銘柄のシューティングゲームであっても、敵機の攻撃は単調なものであり、敵機の攻撃回避等に必要なプレーヤーの自機操作技術は共通なものになりがちで、シューティングゲーム自体が飽きられやすいものとなっていた。
このような問題を解決するためには、人工知能の技術をシューティングゲームに導入するのが有効と考えられるが、現在、人工知能におけるゲームの研究は、チェス、オセロ、将棋といった、非アクション系のいわゆる思考ゲームを中心にして行われており(例えば参考文献参照)、人工知能をシューティングゲームのようなアクションゲームに応用する試みはなかった。
(参考文献)Jonathan Schaeffer,H.Jaap van den Herik,“Games,computers,and artificial intelligence”,Artificial Intelligence,2002,Vol.134,p1-7
また、チェス、オセロ、将棋といった思考ゲームを解くための人工知能技術研究は、深い探索計算を効率的に行うための手法の開発に集中している。このような人工知能技術をシューティングゲームに単純に導入することは全く有意義ではない。何故なら、シューティングゲームの醍醐味は、自機と敵機との仮想戦闘における適度の緊張感の中で、仮想戦闘の早い展開を視覚的に認知し、即時に適切な自機の行動・攻撃を判断し、それを入力手段の正確な操作に即時に反映させ、敵機等を撃破することで一種の達成感を味わうことの連綿性にあるところ、思考ゲームで用いられる人工知能技術を単純にシューティングゲームに導入すると、いくら効率的な探索計算を行うとしても、著しく遅い仮想戦闘の展開となり、シューティングゲームの醍醐味(以下、「遊興性」と云う。)が失われてしまうからである。
そこで本発明は、上記の問題点に鑑み、敵機の攻撃が単調なものとならないシューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体を提供することを目的とする。
上記課題を解決するために、本発明では、画面上に自機及び1つあるいは複数の敵機が表示され、敵機がプレーヤーの操作する自機に対して攻撃弾を発射するシューティングゲームの敵機攻撃制御を、次のような構成とする。即ち、まず、敵機が攻撃弾を発射する時点(現時点)において、敵機が現時点より過去の時点で発射した既存攻撃弾あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度、並びに現時点の自機の位置関係に基づいて、現時点より後の各時点で、画面を格子状に分割した各升目において、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率(自機存在確率)を各時点の各升目ごとに求める。次いで、敵機が攻撃弾を発射する速度の2つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する各升目における自機存在確率の和(自機存在確率和)をそれぞれの速度の候補ごとに求め、自機存在確率和が所定の条件を満たす候補の速度を攻撃弾発射速度として決定する。
このように、敵機が現時点より過去の時点で発射した既存攻撃弾あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度を考慮した上で、画面上における自機の将来の位置(升目)を予測し、予測位置における自機との衝突の可能性が高い攻撃弾の速度を速度候補の中から決定して攻撃弾を発射する。つまり、敵機の攻撃弾の発射に際して、将来において攻撃弾が自機に対して衝突する可能性の高い速度を割り出し、この速度で攻撃弾を発射するのである。
本発明に拠れば、敵機の攻撃弾の発射に際して、将来において攻撃弾が自機に対して衝突する可能性の高い速度を割り出し、この速度で攻撃弾を発射するため、敵機の攻撃が単調なものとならない。
また、敵機の攻撃が単調なものとならないため、プレーヤーの立場からすると、敵機の攻撃回避等に必要な自機操作技術を得にくくなる。このため、プレーヤーに飽きられにくいシューティングゲームの実現にも寄与する。
《技術の概要》
本発明の特徴の要旨は、画面を格子状に分割し、まず、現時点より後の各時点で格子の各升目に自機の存在する確率をそれぞれ求め、次いで、敵機の攻撃弾の速度ごとに、各時点における飛行経路上で各升目の確率総和を求め、高い確率総和となる速度を選択して敵機が攻撃弾を発射することにある。この敵機の攻撃弾の発射は、個別の敵機ごとに速度が決定されて行われる。なお、攻撃弾の速度は「速さ」と「向き」の有するベクトル量であり、そのいずれか一方あるいは両者を決定することができる。
ここで「時点」とは、シューティングゲームの処理単位時間間隔でとった各時点のことであり、現時点をt、処理単位時間をΔTとすれば、現時点より後の各時点は、t+ΔT、t+2ΔT、t+3ΔT、・・・となる。「現時点」は、敵機が攻撃弾を発射するべき時点を云う。シューティングゲームに限らずコンピュータゲームでは、時間を使った処理が行われるが、ここで処理単位時間は自機の1行動を基準にとった単位時間とする。換言すれば、1処理単位時間ΔTにおいて可能な自機の行動は、静止という行動も含めて1つである。
本発明において、自機の行動には、次のような条件が課されているとする。即ち、斜めに移動する際の移動速度の縦方向成分(速さ)は、縦方向のみに移動する場合の速さと同じ速さであり、横方向成分(速さ)は、横方向のみに移動する場合の速さと同じ速さであるとする。また、各攻撃弾の行動には、次のような条件が課されているとする。即ち、各攻撃弾は、敵機から発射される際に決定された速度を発射後において維持する。
自機・敵機・攻撃弾は、一般的に何らかの物体(例えば戦闘機や銃弾)を摸擬した画像として画面上に表示される。シューティングゲームでは自機や敵機と攻撃弾との衝突判定処理が行われるが、この判定のためには、摸擬されている物体の外形とは別に、自機・敵機・攻撃弾の衝突判定用の各形状が定義されていることが一般的である。以下、特に断りのない限り、自機・敵機・攻撃弾について単に「形状」と言えば衝突判定用の形状を意味する。本発明においては、この定義の仕方に何らの限定はなく、いかなる定義の仕方をしてもよい(但し、従来のシューティングゲームと同様に、衝突判定に用いる自機・敵機・攻撃弾の各形状を処理ごとに可変とするのではなく、一義的に定義しておくのが好ましい。)。例えば、自機の外形を内包する最小の矩形〔本明細書では、長方形に限定せず、正方形・菱形・平行四辺形などの四角形や、さらには三角形や五角形などの多角形も含む意味で「矩形」という文言を用いる。〕や円を、衝突判定に用いる自機の形状と定義すればよい。敵機・攻撃弾についても同様である。
また、自機・敵機・攻撃弾の画面上の位置(特に本発明では、自機がどの升目に存在するかを特定する必要がある。)の特定に用いる自機・敵機・攻撃弾の基準点を定めておく。基準点の定め方にも特に限定はなく、例えば上記のように衝突判定に用いる形状を定義したならば、自機の外形を内包する最小の矩形や円の中心を基準点とするのが簡便である。なお、矩形の中心について、例えばそれが長方形や正方形のような形状であれば対角線の交点を当該矩形の中心とし、あるいは、矩形を内包する最小の円の中心を当該矩形の中心とするなど適宜に定めることができる。このように基準点を定めたならば、画面上の基準点の位置座標をもって、自機・敵機・攻撃弾の画面上の位置座標とすることができる。
また、格子の各升目の形状は、縦の長さを(自機の縦方向の速さ)×ΔTとし、横の長さを(自機の横方向の速さ)×ΔTとする。このような升目からなる格子とすれば、上記自機速度の条件から、自機が現在する升目sから1処理単位時間で移動可能な升目は、升目sに接して取り囲む升目に限定される。
移動可能な升目への自機の行動の種類は、いくつか考えられるが、例えば、日本将棋の「玉将」または「王将」の動きと同じとするか、あるいは、十文字の動きとすることなどができる。ここで玉将の動きは図1(a)に示すとおりであり、十文字の動きは図1(b)に示すとおりである。なお両図において黒丸印は現在の自機の位置、白丸印は1処理単位時間後に移動可能な自機の位置を表している。図1(a)では行動種類は、周囲8升と静止の9種類、図1(b)では前後左右4升と静止の5種類である。
現時点より後の各時点における格子の各升目に自機の存在する確率は、次のようにして求める。現時点t(=0)に自機が存在する升目sから現時点より後の或る時点tにおける或る升目sまでの道筋の総数C(s,t)を求める。C(s,t)は例えば決定木(decision tree)探索で求めることができるが、上記のように自機の行動に制約がある場合には、升目sの周囲の升目のうち1処理単位時間で自機が移動可能な升目s′のC(s′,t−1)の総和(s′に関する総和である。)と1処理単位時間前の升目sのC(s,t−1)との和で得られる。
或る時点tにおける或る升目sに自機が存在する確率は、C(s,t)を、全ての升目についての総和であるΣC(s,t)で除したものとして表される。
なお、現時点tでの自機移動速度が、現時点より後の或る時点τまで継続されるとし、その自機移動速度で移動した自機が時点τまでに通過した升目及び時点τで自機が存在すると予測される升目における自機存在確率を1とし、他の升目における自機存在確率を0とすることもできる。
現時点より後の各時点で格子の各升目に自機の存在する確率をそれぞれ求める点については、次のような考慮がなされる。
或る敵機において攻撃弾の速度を決定するに当たり、その時点では既に、画面上に当該敵機や他の敵機から発射された攻撃弾(既存攻撃弾)が表示されている場合がある。そこで、現時点より後の各時点で、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目における自機の存在確率を、その時点において0にリセットするのである。これはC(s,t)=0とするに等しい。このことは、自機のプレーヤーが、敵機からの攻撃弾を回避する行動を自機が取るように入力装置の操作を行うという一般的傾向に基づく。
ここで「既存攻撃弾が存在すると予測される位置から所定の距離」とは、攻撃弾と自機との衝突判定に用いられる距離である。このような距離の内側、つまり攻撃弾の中心により近い領域では、自機は攻撃弾と衝突したと判定されることになる。換言すると、「既存攻撃弾が存在すると予測される位置から所定の距離」が張る領域、つまり衝突判定形状を定義し、この衝突判定形状を用いて自機と攻撃弾との衝突判定ができる。
衝突判定形状は適宜に定義できる。
例えば衝突判定形状を円とする場合、衝突判定円は、例えば、衝突判定円の中心を攻撃弾形状の中心とし、衝突判定円の半径を(攻撃弾形状の中心から攻撃弾形状の外周への最短距離)+(自機形状の中心から自機形状の外周への最短距離)とすることができる。但し、半径は、(攻撃弾形状の中心から攻撃弾形状の外周への最長距離)+(自機形状の中心から自機形状の外周への最短距離)などのようにしてもよい。要するに、衝突判定円の半径は、攻撃弾の形状の指標となる長さと、自機の形状の指標となる長さの和とする。ここで指標の採り方は、自機や攻撃弾の形状の定義によって適宜に定めることができる。簡単な例では、自機や攻撃弾などの形状を円とすればこの半径を、矩形とすればその長辺の長さの半分を指標とすることもできる。上記のように衝突判定円を定義すれば、この衝突判定円上あるいは衝突判定円内に自機の位置座標が存在すれば、自機は攻撃弾に衝突したと判定できる。
衝突判定形状を矩形とする場合、一例としてより具体的に攻撃弾形状を横a、縦bの長方形、自機形状を横c、縦dの長方形とした場合で説明すれば、衝突判定矩形は、その中心を攻撃弾形状の中心とし、横a+c、縦b+dの長方形とすることができる。このように衝突判定矩形を定義すれば、この衝突判定矩形上あるいは衝突判定矩形内に自機の位置座標が存在すれば、自機は攻撃弾に衝突したと判定できる。
衝突判定形状の中心は、既述の自機・敵機・攻撃弾の基準点の設定と同様であり、例えば衝突判定円ならばその中心、衝突判定矩形ならばその外接円の中心などとすることができる。
さて、既述のとおり、現時点より後の各時点で、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目のC(s,t)を0に設定するのであるが、このような升目(以下、「所望の升目」とも云う。)は、その全部または一部を衝突判定形状に含まれる升目である。例えば衝突判定円とした場合、攻撃弾の位置座標から衝突判定円に全部または一部が含まれる升目は計算機による有限ステップのアルゴリズムで特定可能であるが、このような升目を、シューティングゲームの遊興性を失わないようリアルタイムに、つまり簡便に特定することを考える。
本発明では、この問題を次のようにして解決する。
即ち、攻撃弾の位置座標を、当該位置座標が存在する升目の四隅の角(かど)または中心のいずれかであると看做し、この看做された位置座標(以下、「看做し位置座標」とも云う。)を中心とする衝突判定形状に一部または全部が含まれる升目のC(s,t)を0に設定する。換言すれば、既存攻撃弾が存在すると予測される位置を含む升目の四隅の角またはその中心のいずれか1つの位置から所定の距離内に位置する升目のC(s,t)を0に設定するのである。なお、看做し位置座標を中心とする衝突判定形状に一部が含まれる升目のC(s,t)を0に設定することは必須の要件ではない。少なくとも看做し位置座標を中心とする衝突判定形状に全部が含まれる升目のC(s,t)を0に設定すればよい。本明細書では、看做し位置座標を中心とする衝突判定形状に一部が含まれる升目のC(s,t)も0に設定する場合として説明する。
攻撃弾の種類ごとに衝突判定形状は異なりえるが、同じ種類の攻撃弾であれば衝突判定形状は同一であるのが通常であるところ、格子が定まっていれば、升目の四隅の角またはその中心のいずれかを中心とする衝突判定形状に含まれる升目は一意になる。
このことを図14を参照して説明する。図14中、■印は、看做し位置座標を表し、破線は格子を表している。また図14では、衝突判定形状が衝突判定円あるいは衝突判定矩形の場合を示している。図14(a)は、升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち1つに看做した場合である。図14(c)は、升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合である。図14(b)は、升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち1つに看做した場合である。図14(d)は、升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合である。いずれの場合でも、0が記入された升目は衝突判定形状に一部または全部が含まれる升目であり、これらの升目は、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角または中心のうち予め決められた1つに看做すというルールと同種の攻撃弾において衝突判定形状は同一とするというルールを維持すれば、看做された攻撃弾の位置座標に対して一意である。そこで、一意に定まる升目の集まりに関する情報を例えばテンプレート〔図14の網掛け部分〕として記憶手段に記憶しておけば、看做された攻撃弾の位置座標に対してテンプレートを適用するだけで、所望の升目のC(s,t)を0に設定できる。
このように、攻撃弾の位置座標および衝突判定形状から厳密に、当該衝突判定形状に一部または全部が含まれる升目を特定する処理を行わなくても、看做し位置座標に対してテンプレートを適用するだけの処理で簡便に所望の升目のC(s,t)を0に設定できるのである。
なお、一意に定まる升目の集まりに関する情報を、テンプレートとしてではなく、例えば攻撃弾の位置座標が存在する升目を取り囲む升目の数として記憶手段に記憶するなどとしてもよい。
以上のように簡便に所望の升目を特定することは、いわゆる近似処理であるから、できるだけ、厳密に所望の升目を特定した場合との差異が小さくするようにするのが好ましい。そこで、看做し位置座標を、攻撃弾が存在すると予測される位置を含む升目の四隅の角のいずれか1つとする場合には、攻撃弾の位置座標から最も近い角とするようにしてもよい。
なお、さらに簡便な処理とするならば、攻撃弾の位置座標が升目の如何なる部分にあろうが、常に予め定めた看做し位置座標とする構成としてもよい。つまり、例えば、攻撃弾の位置座標が升目の如何なる部分にあろうとも、升目の左上の角を看做し位置座標とするとして画一的に処理してもよいのである。
《実施形態》
本発明の実施形態について、図面を参照しながら説明する。
<シューティングゲームの敵機攻撃制御装置>
本発明の実施形態であるシューティングゲームの敵機攻撃制御装置(1)は、それ単体で独立に存在するよりは、コンピュータを構成するエンティティとして存在するのが一般的である(勿論、単体独立のエンティティとして存在することを排除する趣旨ではない。)。さらに云えば、シューティングゲームの敵機攻撃制御装置(1)は、コンピュータとは容易に分離可能にコンピュータを構成するエンティティではなく、コンピュータ自体を或る機能に着眼して片面的に評価したものであるのが一般的である。要するに、シューティングゲームの敵機攻撃制御装置(1)は、シューティングゲームを実行するコンピュータそのものであることが一般的である。ここでコンピュータは、既述のとおりパーソナルコンピュータのような汎用機やゲーム専用機などを広く指す。
以下、シューティングゲームの敵機攻撃制御装置(1)を単に敵機攻撃制御装置(1)と云うことにする。
コンピュータは、CPUやMPUのような演算処理装置と、演算処理の用に供するデータ、演算処理の結果として得られたデータ、演算処理装置によって解釈実行されるプログラムなどを記憶可能な記憶装置(例えば揮発性メモリ、不揮発性メモリ)などを備えている。また、シューティングゲームを実行可能なコンピュータに要求される装置として、ブラウン管型表示装置や液晶ディスプレイのような表示装置、キーボードや操縦桿のような入力装置がコンピュータに接続される。
コンピュータとして汎用機を例にとると、敵機攻撃制御装置(1)のハードウェア構成例は次のとおりである(図2参照)。
敵機攻撃制御装置(1)は、入力装置が接続可能な入力部(11)、表示装置が接続可能な出力部(12)、CPU(Central Processing Unit;14)〔キャッシュメモリなどを備えていてもよい。〕、メモリであるRAM(Random Access Memory)(15)、ROM(Read Only Memory)(16)やハードディスクである外部記憶装置(17)、並びにこれらの入力部(11)、出力部(12)、CPU(14)、RAM(15)、ROM(16)、外部記憶装置(17)間のデータのやり取りが可能なように接続するバス(18)などを備えている。また必要に応じて、敵機攻撃制御装置(1)に、ビデオカード(Video Card)やCD−ROMなどの記憶媒体を読み書きできる装置(ドライブ)などを設けるとしてもよい。
敵機攻撃制御装置(1)の外部記憶装置(17)には、敵機攻撃制御のためのプログラム及びこのプログラムの処理において必要となるデータなどが保存記憶されている。また、これらのプログラムの処理によって得られるデータなどは、RAM(15)などに適宜に保存記憶される。以下、演算結果やその格納領域のアドレスなどを記憶するRAM(15)やレジスタなどの装置を単に「記憶部」と呼ぶことにする。
既述のとおり、敵機攻撃制御装置(1)は、シューティングゲームを実行するコンピュータであるところ、外部記憶装置(17)にはシューティングゲームを実行するに必要な種々のプログラムなどが保存記憶されているが、本発明の要旨に関しないので説明を略する。また、そのプログラムが解釈されてシューティングゲームが実行される仕組みの詳細も本発明の要旨に関しないから説明を略する。
具体的には、外部記憶装置(17)には、敵機による攻撃弾発射時点(現時点)において、当該敵機あるいは他の敵機によって過去の時点で発射された既存攻撃弾の位置及びその速度、並びに自機の位置関係に基づいて、現時点より後の各時点で、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率を各時点の各升目ごとに求めるためのプログラム(自機存在確率計算プログラム)、敵機が攻撃弾を発射する速度の2つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する升目における自機存在確率の和をそれぞれの速度候補ごとに求め、その和の値が所定の条件を満たす候補速度を攻撃弾発射速度として決定するためのプログラム(攻撃弾発射速度決定プログラム)が保存記憶されている。
なお、この実施形態における自機存在確率計算プログラムは、現時点t(=0)に自機が存在する升目sから現時点より後の或る時点tにおける或る升目sまでの道筋の総数C(s,t)を、既存攻撃弾の存在を考慮して求めるためのプログラム(自機存在場合数計算プログラム)と、自機存在場合数計算プログラムの処理で得られた各升目における道筋の総数C(s,t)を用いて自機存在確率を求めるためのプログラム(確率計算プログラム)を含む。
敵機攻撃制御装置(1)では、外部記憶装置(17)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じて記憶部(20)に読み込まれて、CPU(14)で解釈実行・処理される。この結果、CPU(14)が所定の機能(自機存在確率計算部〔自機存在場合数計算部、確率計算部〕、攻撃弾発射速度決定部)を実現することで攻撃弾発射速度の決定が実現される。また、本発明の視点からは必須の構成要素ではないが、シューティングゲームの実行を制御する機能を有する制御部が実装されており、この制御部もCPU(14)で実現される。なお、全ての機能をCPUなどの演算処理装置で実現するに限定されず、機能の一部を例えば演算回路によってハードウェア的に実現するようにしてもよい。
<シューティングゲームの敵機攻撃制御処理>
次に、図3及び図4を参照して、敵機攻撃制御装置(1)における敵機攻撃制御処理(攻撃弾発射速度の決定)の流れを叙述的に説明する。
攻撃弾発射速度の決定には、3通りの方式がある。1つ目は、攻撃弾の「速さ」は固定とし「向き」を決定する方式である。2つ目は、攻撃弾の「向き」は固定とし「速さ」を決定する方式である。3つ目は、攻撃弾の「速さ」及び「向き」の双方を決定する方式である。
いずれの方式を選択するにしても、本発明の要旨に影響はなく適宜に設計変更可能であるから、この実施形態では、1つ目の方式、つまり、攻撃弾の「速さ」は固定とし「向き」を決定する方式として説明する。また、「向き」は、2つ以上の候補(この実施形態では5つの候補)が予め定められており、これらの候補の中から「向き」を決定する。
また、この実施形態では、画面上における自機(30)・敵機(40)・既存攻撃弾の位置座標は、記憶部(20)に記憶されているとする。
自機の行動は、図1(a)に示したとおりとする。
まず、制御部(190)は、シューティングゲームの実行処理中に、敵機(40)の攻撃弾の発射を行うか否かを決定する。この決定は、従来のシューティングゲームと同様にして決定される。
この実施形態では、制御部(190)が敵機の攻撃弾の発射を行うことを決定すると、本発明である敵機攻撃制御処理(攻撃弾発射速度の決定)が実行されるようになっている。
自機存在確率計算部(141)は、自機存在場合数計算部(142)及び確率計算部(143)で構成されており、制御部(190)による敵機の攻撃弾発射決定を受けて、以下に説明する処理を行う。
自機存在場合数計算部(142)は、記憶部(20)から自機(30)の位置座標を取得し、ゲーム画面を分割した格子(50)において自機(30)が存在する升目を特定する(ステップS1)。図5では、一例として7×7の49個の正方形の升目からなる格子(50)を示しており、自機は中心の升目に存在していると特定された場合を示している。説明の便宜から、升目の位置を格子(50)の外部に割り当てた数字(図5参照)をもって表現する。図5では、自機(30)が存在する升目は(4,4)であり、敵機(40)が存在する升目は(1,3)である。なお、自機(30)及び敵機(40)の中心は既述のとおりである。
このとき、自機(30)が存在すると特定された升目を除く各升目に数字0が割り当てられ、自機(30)が存在すると特定された升目に1が割り当てられる。つまり、自機(30)が存在すると特定された升目を除く各升目の初期値C(s,0)を0とし、自機(30)が存在すると特定された升目の初期値C(s,0)を1とする〔図5参照〕。
次に、自機存在場合数計算部(142)は、現時点より後の各時点tにおける各升目のC(s,t)を求める(ステップS2)。ここでは説明を具体的なものにするため処理単位時間ΔTを1とする。また、任意の升目をsで表す。
図6に時点t=1でのC(s,t)を示す。升目(3,3)、(3,4)、(3,5)、(4,3)、(4,4)、(4,5)、(5,3)、(5,4)、(5,5)に1が割り当てられている。
これは、現時点t(=0)に自機(30)が存在する升目s=(4,4)から、処理単位時間1で移動可能な升目が、静止という自機(30)の行動を含めて(3,3)、(3,4)、(3,5)、(4,3)、(4,4)、(4,5)、(5,3)、(5,4)、(5,5)であり、現時点t(=0)に自機(30)が存在する升目s=(4,4)からの道筋がいずれも1通りの道筋しか存在しないことを示している。
図7に時点t=2でのC(s,t)を示す。升目(2,2)、(2,6)、(6,2)、(6,6)に1が、(2,3)、(2,5)、(3,2)、(3,6)、(5,2)、(5,6)、(6,3)、(6,5)に2が、(2,4)、(4,2)、(4,6)、(6,4)に3が、(3,3)、(3,5)、(5,3)、(5,5)に4が、(3,4)、(4,3)、(4,5)、(5,4)に6が、(4,4)に9が割り当てられている。
これは、時点t=1に自機(30)が存在する升目s=(3,3)、(3,4)、(3,5)、(4,3)、(4,4)、(4,5)、(5,3)、(5,4)、(5,5)から、処理単位時間1で移動可能な升目が、静止という自機(30)の行動を含めて(2,2)、(2,6)、(6,2)、(6,6)、(2,3)、(2,5)、(3,2)、(3,6)、(5,2)、(5,6)、(6,3)、(6,5)、(2,4)、(4,2)、(4,6)、(6,4)、(3,3)、(3,5)、(5,3)、(5,5)、(3,4)、(4,3)、(4,5)、(5,4)、(4,4)であり、現時点t(=0)に自機(30)が存在する升目s=(4,4)からの道筋がそれぞれの数字が示す数だけあることを示している。
このように、自機存在場合数計算部(142)は、現時点より後の各時点tにおける各升目のC(s,t)を求めるのであるが、その求め方としては、人工知能技術の一つである探索計算方法を利用することができる。しかしながら、例えば普通の決定木探索の方法では、現時点より後の時点が増えると同時に、探索計算の深さが増し、必要な計算時間及び計算機の記憶容量が指数関数的に増大してしまう。この実施形態の場合、自機(30)の各時点での行動種類は9通りなので、時点が一つ増すたびに必要な計算資源が9倍増えることになることに注意を要する。
本発明では、上記のように自機(30)の行動に制約があるので、現時点t(=0)に自機が存在する升目sから現時点より後の或る時点tにおける或る升目sまでの道筋の総数C(s,t)は、或る升目sの周囲の升目のうち1処理単位時間で自機が移動可能な升目s′のC(s′,t−1)の総和(s′に関する総和である。)と1処理単位時間前の升目sのC(s,t−1)との和で得られる。つまり、C(s,t)は式(1)で得られる。
Figure 0004804240
このことを時点1及び時点2の場合で、一例を示して説明する〔図8参照〕。
時点2での升目(3,3)のC(s,2)を求める〔s=(3,3)〕。このとき、時点1でのC(s,1)は、1である。升目s=(3,3)の周囲の升目のうち1処理単位時間で自機が移動可能な升目s′は、(2,2)、(2,3)、(2,4)、(3,2)、(3,4)、(4,2)、(4,3)、(4,4)である。升目s′=(2,2)、(2,3)、(2,4)、(3,2)、(4,2)のC(s′,1)はそれぞれ0であり、升目s′=(3,4)、(4,3)、(4,4)のC(s′,1)はそれぞれ1である〔図8(a)参照〕。従って、これらを式(1)に代入すると升目s=(3,3)のC(s,2)は、C(s,2)=1+(1+1+1+0+0+0+0+0)=4となる〔図8(b)参照〕。
この方法によれば、C(s,t)の計算に必要な計算時間、計算機記憶容量は、時点と升目の数に比例して増えるのみである。発明者が実験を行った結果、遊興性の観点からは、通常の決定木探索では2から3時点先までの計算を行うのが限界であったが、上記方法では10から20時点先までの計算が可能であった。そのため、自機位置予測において、より精度の高い予測が可能となる(自機が画面の端から端まで移動するような場合までをも扱えるため。)。
上記のように現時点より後の各時点tにおける各升目のC(s,t)を求めるが、一般的には、自機位置予測の観点からはより先の時点まで予測するのが望ましいが、遊興性を損なわないようにする観点からはむやみに先の時点まで予測するのは好ましくない。また、このことは演算処理装置の処理能力などにも依存する。従って、どれくらい先の時点まで自機の位置を予測するかは、自機位置予測精度、遊興性、演算処理装置の処理能力などを考慮して予め決定しておけばよい(ここでの説明や図面では、理解を容易にするため時点2までしか示していない。)。
また、自機存在場合数計算部(142)は、記憶部(20)から現時点における既存攻撃弾の位置座標を取得し、現時点より後の各時点において既存攻撃弾と衝突可能性のある升目のC(s、t)の値を0にする。
他の敵機もしくは攻撃弾を発射しようとしている敵機(40)によって過去に発射済みの既存攻撃弾の影響は、C(s、t)の値に反映される。既存攻撃弾が現時点より後の或る時点で或る升目に存在しているとき、その時点では、攻撃弾位置座標を含む升目と攻撃弾位置座標から所定の距離内に位置する升目では、自機(30)が攻撃弾と接触する可能性がある。このため、プレーヤーの一般的傾向として、そのような升目への自機の移動は行われないと考えられる。そこで、そのような升目のC(s、t)の値を0にする。つまり、その時点でのその升目における自機(30)の存在確率は0になる。
このことを図9に示して説明する。
図9では、自機(30)・敵機(40)・既存攻撃弾のそれぞれの外形を内包する最小の円を、衝突判定に用いる自機(30)・敵機(40)・既存攻撃弾の形状と定義し、衝突判定円を、中心を既存攻撃弾の中心〔既存攻撃弾の形状の中心である。〕とし、半径を(既存攻撃弾の形状の半径)+(自機の形状の半径)とする。図9では、衝突判定円の半径は、丁度、正方形の升目の一辺に等しいとしている。
時点1では、格子(50)の右上の隅に既存攻撃弾の位置座標(あるいは看做し位置座標)があると予測されるとする〔図9(a)参照〕。このとき、衝突判定円内に位置する升目(1,7)のC(s、t)の値を0にする。但し、この場合では、もともと升目(1,7)のC(s、t)の値は0であるからリセットする必要はない。なお、「衝突判定円内に位置する升目」は、衝突判定円内に完全に内包される升目、及び、升目の一部分が衝突判定円内に含まれる升目である。
時点2では、升目(3,5)の右上の隅に既存攻撃弾の位置座標(あるいは看做し位置座標)があると予測されるとしている〔図9(b)参照〕。既述のとおり各攻撃弾は、敵機から発射される際に決定された速度を発射後において維持することから各時点での位置座標を予測可能である。このとき、衝突判定円内に位置する升目(2,5)、(2,6)、(3,5)、(3,6)のC(s、t)の値を0にする。
以上のようにして自機存在場合数計算部(142)は、現時点より後の各時点tにおける各升目のC(s,t)を求める。各時点における各升目のC(s,t)は、記憶部(20)に記憶される。ステップS2の処理の後、ステップS3の処理が行われる。
確率計算部(143)は、記憶部(20)から各時点における各升目のC(s,t)を取得し、自機(30)が各時点において各升目に存在している確率P(s,t)を求める(ステップS3)。
時点tで升目sにおける自機存在確率P(s,t)は、時点tでの全升目の場合数の和ΣC(s,t)を分母とし、升目sの場合数C(s,t)を分子とした式(2)で得る。各時点における各升目での自機存在確率P(s,t)は記憶部(20)に記憶される。
Figure 0004804240
このとき、時点が先に進むにつれて、一般には、自機(30)が到達するための道筋が存在しない(道筋が初期値の0通り)升目が減少していくため、時点tで自機(30)が或る升目sに存在する確率P(s,t)は、時点が先に進むにつれて減少する。また、一般に、攻撃弾発射時点(現時点)での自機位置から離れた升目での自機存在確率P(s,t)の値は低くなる。
続いて、攻撃弾発射速度決定部(144)は、記憶部(20)から敵機(40)の位置座標を取得し、また、ステップS3の処理で得られた各時点における各升目での自機存在確率P(s,t)も入力として、攻撃弾(新攻撃弾)の発射速度を決定する(ステップS4)。
この実施形態では、5つの「向き」の候補から選択して新攻撃弾の発射速度を決定する。敵機(40)から発射された新攻撃弾の現時点より後の各時点での予測位置Se(t)〔iは、5つの候補を表すパラメータとする。〕を候補ごとに、敵機(40)の位置座標を始点とする位置ベクトルで図10に示してある(図10中の5つの「向き」は一例に過ぎない。)。この新攻撃弾が、自機(30)に対して与える脅威を増すためには、新攻撃弾が自機(30)に衝突する可能性を高める必要がある。即ち、新攻撃弾が移動する各時点において、自機存在確率P(s,t)の高い升目に新攻撃弾が存在していることが必要である。このような考えの下、各時点での新攻撃弾の予測位置が存在する升目での自機存在確率の全ての時点での和である自機存在確率和ΣP(Se(t),t)をそれぞれの候補ごとに計算し、自機存在確率和ΣP(Se(t),t)が例えば最大となる「向き」を新攻撃弾の「向き」として決定する〔図11(a)〕。なお、自機存在確率和ΣP(Se(t),t)のSe(t)は、位置ベクトルSe(t)の終点の位置座標であり、P(Se(t),t)は、位置ベクトルSe(t)の終点の位置座標を含む升目の自機存在確率を表している。
ここでは、単発式の攻撃弾発射として、ΣP(Se(t),t)が最大となる「向き」を新攻撃弾の「向き」として1つに決定したが、このような実施形態に限定されるものではない。一度に複数の新攻撃弾を発射する場合、ΣP(Se(t),t)の値の上位から、発射すべき攻撃弾の数に等しい数の候補を選択することもできる。つまり、例えば一度に3つの新攻撃弾を発射する場合には、ΣP(Se(t),t)の値の上位3つの「向き」を新攻撃弾の「向き」として決定することもできる〔図11(b)〕。また、例えば一度に2つの新攻撃弾を発射する場合に、ΣP(Se(t),t)が最大となる「向き」を、2つの新攻撃弾のそれぞれ向きがなす角度の中心の向きとなるように、2つの新攻撃弾の「向き」を決定することもできる〔図11(c)〕。
以上のようにして決定された新攻撃弾の発射速度は、記憶部(20)に一旦保存され、制御部(190)の制御の下、決定された発射速度で新攻撃弾が画面上に飛行するように描画される。この処理の主体や処理方法は、従来と同様であるから説明を略する。
以上の実施形態では、攻撃弾の「速さ」は固定とし「向き」を決定する方式とした。これに対して、攻撃弾の「向き」は固定とし「速さ」を決定する方式では、ステップS4の処理において、位置ベクトルSe(t)を、「向き」は固定とし「速さ」を複数の候補としたものに変更すればよく、攻撃弾の「速さ」及び「向き」の双方を決定する方式では、ステップS4の処理において、位置ベクトルSe(t)を、「速さ」及び「向き」の双方の組み合わせを複数の候補としたものに変更すればよい。
なお、新攻撃弾の発射のたびに新攻撃弾の速度を決定するのではなく、例えば3発目に1回のように、所定の発射回数おきに本発明の手法で新攻撃弾の速度を決定するようにしてもよい。あるいは、前回の攻撃弾発射からの経過時間を計測しておき、所定の時間を経過した後の最初の攻撃弾発射において、本発明の手法で新攻撃弾の速度を決定するようにしてもよい。
<変形例>
自機存在確率P(s,t)の算出において、攻撃弾発射時点での自機移動速度を考慮し、その移動速度が過去に或る程度継続されている場合、その自機移動先の升目における自機存在確率P(s,t)の値をいずれも1にする〔その他の升目の自機存在確率は0とする。〕。これは、過去から現時点までの自機移動速度が将来もある程度維持されるであろうとの見通しに基づく。自機存在確率P(s,t)の値を1とする時点の上限は、例えばプレーヤーの操作履歴を保存しておき、プレーヤーが移動方向の変更を行う操作の時間間隔の平均値を求め、その値を利用すればよい。具体例として、図12に示すように、自機存在場合数計算部(142)は、記憶部(20)から操作時間間隔平均を取得し、操作時間間隔平均が3処理単位時間であれば、現時点から3処理単位時間先、つまり時点3まで現時点の自機移動速度を維持するとし、その時点3までに自機移動速度で通過する升目及び時点3で自機が存在する升目の自機存在確率P(s,t)の値をいずれも1とすればよい。あるいは、現時点の自機移動速度を開始した時点を記憶部(20)に記憶しておき、操作時間間隔平均と開始時点との残差を求め、その残差に相当する時点まで現時点の自機移動速度を維持するとし、その時点までに自機移動速度で通過する升目及び当該時点で自機が存在する升目の自機存在確率P(s,t)の値をいずれも1としてもよい。
具体的な一例を図13に示す。ここでは、操作時間間隔平均が1処理単位時間としている。時点1では、図13(a)のように自機は確率1で升目(4,5)に移動し、それ以外の升目での自機存在確率は0である〔なお、図13(a)の各升目の数字はC(s,t)であって自機存在確率ではない。ここでは、図5に示す時点0における道筋の総数が時点1でも継続していることを表している。〕。時点2では、上記で説明した方法で道筋を計算すればよく、時点1での自機位置を含む升目(4,5)を中心として、図6の時点1と同様に各升目に道筋の総数が割り当てられる〔図13(b)参照〕。
このようにすれば、より先の時点まで自機位置予測するような場合において、自機存在確率P(s,t)の値が非ゼロである升目の数の増加を押さえることができる。また、現時点よりもより先の時点の自機位置の予測が正確になるということであり、攻撃弾が自機に与えうる脅威も増大する。
シューティングゲームにおける敵機の数は複数であることが前提であり、複数の敵機が連携して自機を追い込むような機能が求められている。しかし、そのような連携を制御するアルゴリズムは、従来のように、全ての敵機の動きを監視する方式の中央制御では不十分である。何故なら、ゲーム画面上に出現する敵機の状況は時々刻々変化をし、それらの全ての状況の全てを考慮した中央制御アルゴリズムの開発は事実上不可能だからである。
この点、以上の実施形態で説明したとおり、本発明の敵機攻撃制御手法によれば、次のような効果も享受される。複数の敵機がそれぞれ、各々の制御アルゴリズム中で非同期に実行するものでありながらも、各敵機が攻撃弾発射時点で、自身が発射する攻撃弾がいかに自機にとって好ましくないものとするかを判断することと同値であると評価でき、結果的には、全体としての複数の敵機の連携を生むものとなる。つまり、いわゆる創発的な、複数の敵機の連携が発生するのである。
以上の各実施形態の他、本発明であるシューティングゲームの敵機攻撃制御装置・方法は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記シューティングゲームの敵機攻撃制御装置・方法において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
また、上記シューティングゲームの敵機攻撃制御装置における処理機能をコンピュータによって実現する場合、シューティングゲームの敵機攻撃制御装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記シューティングゲームの敵機攻撃制御装置における処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームの敵機攻撃制御装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
本発明は、画面上に自機及び1つあるいは複数の敵機を表示し、敵機が自機に対して攻撃弾を発射するコンピュータによるシューティングゲームに有用である。
自機の行動の種類を説明する図。(a)日本将棋の「玉将」または「王将」の動きと同じ場合。(b)十文字の動きの場合。 シューティングゲームの敵機攻撃制御装置(1)のハードウェア構成例を示す図。 シューティングゲームの敵機攻撃制御装置(1)の機能構成例を示す図。 シューティングゲームの敵機攻撃制御装置(1)における敵機の攻撃弾速度を決定する処理フロー。 時点0での各升目の道筋の総数C(s,t)を示す図。 時点1での各升目の道筋の総数C(s,t)を示す図。 時点2での各升目の道筋の総数C(s,t)を示す図。 (a)に示す網掛け部分の各升目から、(b)の網掛け部分の升目の道筋の総数C(s,t)を求める方法を説明する図。 (a)時点1で攻撃判定円に位置する升目の道筋の総数C(s,t)を0にリセットすることを説明する図。(b)時点2で攻撃判定円に位置する升目の道筋の総数C(s,t)を0にリセットすることを説明する図。 時点1及び時点2において、速度候補の位置ベクトルを示す図。 (a)速度候補を1つ決定する場合を例示した図。(b)速度候補を3つ決定する場合を例示した図。(c)速度候補を1つ決定して、決定された速度を挟む2つの速度で攻撃弾を発射する場合を例示した図。 変形例におけるシューティングゲームの敵機攻撃制御装置(1)の機能構成例を示す図。 (a)変形例の場合に時点1での各升目の道筋の総数C(s,t)を示す図。(b)変形例の場合に時点2での各升目の道筋の総数C(s,t)を示す図。 升目の四隅の角またはその中心のいずれかを中心とする衝突判定形状に含まれる升目は一意になることを説明する図。(a)升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち1つに看做した場合。(b)升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち1つに看做した場合。(c)升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合。(d)升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合。
符号の説明
1 シューティングゲームの敵機攻撃制御装置
141 自機存在確率計算部
142 自機存在場合数計算部
143 確率算出部
144 攻撃弾発射速度決定部
20 記憶部

Claims (10)

  1. 自機存在確率計算手段と攻撃弾発射速度決定手段を備えたコンピュータが、画面上に自機及び1つあるいは複数の敵機が表示され、敵機がプレーヤーの操作する自機に対して攻撃弾を発射するシューティングゲームの敵機攻撃制御を行う敵機攻撃制御方法であって、
    上記自機存在確率計算手段が、
    敵機が攻撃弾を発射する時点(現時点)において、敵機が現時点より過去の時点で発射した既存攻撃弾あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度、並びに現時点の自機の位置関係に基づき、現時点より後の各時点で、画面を格子状に分割した当該格子の各升目において、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率(自機存在確率)を各時点の各升目ごとに求める自機存在確率計算ステップと、
    上記攻撃弾発射速度決定手段が、
    敵機が攻撃弾を発射する速度の2つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する各升目における自機存在確率の和(自機存在確率和)をそれぞれの速度の候補ごとに求め、自機存在確率和が所定の条件を満たす候補の速度を攻撃弾発射速度として決定する攻撃弾発射速度決定ステップと
    を有することを特徴とするシューティングゲームの敵機攻撃制御方法。
  2. 自機が存在する升目Sから1処理単位時間で移動可能な升目は、升目Sに接して取り囲む升目の全部または一部であるとし、
    上記自機存在確率計算ステップは、
    現時点tに自機が存在する升目sから現時点より後の或る時点tにおける或る升目sまでの道筋の総数C(s,t)を、升目sを取り囲む升目のうち1処理単位時間で自機が移動可能な升目s′の時点t−1における道筋の総数C(s′,t−1)の総和(但し、s′に関する総和である。)と升目sの時点t−1における道筋の総数C(s,t−1)との和で求め、さらに、時点tにおいて、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目の道筋の総数C(s,t)を0に設定する自機存在場合数計算ステップと、
    時点tにおける升目sに自機が存在する自機存在確率を、C(s,t)を、全ての升目についての道筋の総数C(s,t)の総和であるΣC(s,t)で除したものとして求める確率計算ステップと
    を有することを特徴とする請求項1に記載のシューティングゲームの敵機攻撃制御方法。
  3. 自機が存在する升目Sから1処理単位時間で移動可能な升目は、升目Sに接して取り囲む升目の全部または一部であるとし、
    現時点tでの自機移動速度が、現時点より後の或る時点τまで継続されるとし、その自機移動速度で移動した自機が時点τまでに通過した升目及び時点τで自機が存在すると予測される升目における自機存在確率を1とし、他の升目における自機存在確率を0とし、
    上記自機存在確率計算ステップは、
    時点τに自機が存在する升目sτから時点τより後の或る時点tにおける或る升目sまでの道筋の総数C(s,t)を、升目sを取り囲む升目のうち1処理単位時間で自機が移動可能な升目s′の時点t−1における道筋の総数C(s′,t−1)の総和(但し、s′に関する総和である。)と升目sの時点t−1における道筋の総数C(s,t−1)との和で求め、さらに、時点tにおいて、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目の道筋の総数C(s,t)を0に設定する自機存在場合数計算ステップと、
    時点tにおける升目sに自機が存在する確率を、C(s,t)を、全ての升目についての道筋の総数C(s,t)の総和であるΣC(s,t)で除したものとして求める確率計算ステップと
    を有することを特徴とする請求項1に記載のシューティングゲームの敵機攻撃制御方法。
  4. 上記時点τは、プレーヤーが自機の移動方向の変更を行う操作の時間間隔の平均値(操作時間間隔平均)とする、あるいは、現時点tの自機移動速度を開始した時点tと操作時間間隔平均との残差とする
    ことを特徴とする請求項3に記載のシューティングゲームの敵機攻撃制御方法。
  5. 上記自機存在場合数計算ステップにおいて道筋の総数C(s,t)が0に設定される、既存攻撃弾が存在すると予測される位置を含む升目及び当該位置から所定の距離内に位置する升目を、
    既存攻撃弾が存在すると予測される位置を含む升目の四隅の角またはその中心のいずれか1つの位置から所定の距離内に位置する升目とする
    ことを特徴とする請求項2から請求項4のいずれかに記載のシューティングゲームの敵機攻撃制御方法。
  6. 既存攻撃弾が存在すると予測される位置を含む升目の四隅の角のうちいずれか1つの位置とする場合に、既存攻撃弾の位置を表す基準点から最も近い角を選択する
    ことを特徴とする請求項5に記載のシューティングゲームの敵機攻撃制御方法。
  7. 上記攻撃弾発射速度決定ステップにおいて上記所定の条件を満たす候補の速度は、
    上記自機存在確率和が最大となる候補の速度、
    あるいは、
    一度に複数の攻撃弾を発射する場合に、上記自機存在確率和が最大のものから降順に発射すべき攻撃弾の数に等しい数の順位までの各自機存在確率和を与えた候補の速度である
    ことを特徴とする請求項1から請求項6のいずれかに記載のシューティングゲームの敵機攻撃制御方法。
  8. 画面上に自機及び1つあるいは複数の敵機が表示され、敵機がプレーヤーの操作する自機に対して攻撃弾を発射するシューティングゲームの敵機攻撃制御装置であって、
    敵機が攻撃弾を発射する時点(現時点)において、敵機が現時点より過去の時点で発射した既存攻撃弾あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度、並びに現時点の自機の位置関係に基づき、現時点より後の各時点で、画面を格子状に分割した当該格子の各升目において、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率(自機存在確率)を各時点の各升目ごとに求める自機存在確率計算手段と、
    敵機が攻撃弾を発射する速度の2つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する各升目における自機存在確率の和(自機存在確率和)をそれぞれの速度候補ごとに求め、自機存在確率和が所定の条件を満たす候補の速度を攻撃弾発射速度として決定する攻撃弾発射速度決定手段と
    を備えたことを特徴とするシューティングゲームの敵機攻撃制御装置。
  9. 画面上に自機及び1つあるいは複数の敵機が表示され、敵機がプレーヤーの操作する自機に対して攻撃弾を発射するシューティングゲームの敵機攻撃制御をコンピュータに行わせる敵機攻撃制御プログラムであって、
    敵機が攻撃弾を発射する時点(現時点)において、敵機が現時点より過去の時点で発射した既存攻撃弾あるいは他の敵機が現時点より過去の時点で発射した既存攻撃弾の位置及びその速度、並びに現時点の自機の位置関係に基づき、現時点より後の各時点で、画面を格子状に分割した当該格子の各升目において、既存攻撃弾が存在すると予測される位置に対して自機が一定以内の距離に近づかずに升目に存在しうる確率(自機存在確率)を各時点の各升目ごとに求める自機存在確率計算処理と、
    敵機が攻撃弾を発射する速度の2つ以上の候補について、それぞれの候補の速度で発射された攻撃弾が各時点ごとに通過する各升目における自機存在確率の和(自機存在確率和)をそれぞれの速度の候補ごとに求め、自機存在確率和が所定の条件を満たす候補の速度を攻撃弾発射速度として決定する攻撃弾発射速度決定処理と
    をコンピュータに行わせることを特徴とするシューティングゲームの敵機攻撃制御プログラム。
  10. 請求項9に記載のプログラムを記録した、コンピュータに読み取り可能な記録媒体。
JP2006172831A 2006-06-22 2006-06-22 シューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体 Expired - Fee Related JP4804240B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006172831A JP4804240B2 (ja) 2006-06-22 2006-06-22 シューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006172831A JP4804240B2 (ja) 2006-06-22 2006-06-22 シューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体

Publications (2)

Publication Number Publication Date
JP2008000346A JP2008000346A (ja) 2008-01-10
JP4804240B2 true JP4804240B2 (ja) 2011-11-02

Family

ID=39005200

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006172831A Expired - Fee Related JP4804240B2 (ja) 2006-06-22 2006-06-22 シューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体

Country Status (1)

Country Link
JP (1) JP4804240B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010051514A (ja) * 2008-08-28 2010-03-11 Square Enix Co Ltd ビデオゲーム処理装置、ビデオゲーム処理方法、およびビデオゲーム処理プログラム
JP7175124B2 (ja) * 2018-08-03 2022-11-18 株式会社コーエーテクモゲームス 情報処理装置、位置予測方法及び位置予測プログラム

Also Published As

Publication number Publication date
JP2008000346A (ja) 2008-01-10

Similar Documents

Publication Publication Date Title
US12090402B2 (en) Contextually aware communications system in video games
JP5019897B2 (ja) ゲームプログラムおよびゲーム装置
US12403394B2 (en) Intent-based models for use in selecting actions in video games
JP2000308759A (ja) ビデオゲームのキャラクタを制御する方法、ビデオゲーム装置、及び記録媒体
US20140151960A1 (en) Gaming system using gaming surface having computer readable indicia and method of using same
JP7170397B2 (ja) プログラム、画像処理方法、及び画像処理装置
US20240293748A1 (en) Providing game controls through graphical user interfaces
Smith et al. Evolving Dota 2 shadow fiend bots using genetic programming with external memory
JP4804240B2 (ja) シューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体
JP7854453B2 (ja) 仮想シーンに基づくグラフィック表示方法、装置、機器及びコンピュータプログラム
JP6877555B1 (ja) サーバ装置、プログラム、方法及び端末装置
JP5155841B2 (ja) 得点可能性定量化装置及び得点可能性定量化プログラム
CN117298580A (zh) 虚拟对象的互动方法、装置、设备、介质及程序产品
CN112774204A (zh) 一种角色碰撞规避方法、装置、设备以及存储介质
JP4976771B2 (ja) シューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体
JP4996275B2 (ja) 難易度判定方法、装置、プログラム
KR20130124040A (ko) 부활 강화 버프 기능을 제공하는 온라인 게임 제공 방법 및 그 게임 제공 서버
JP4996267B2 (ja) 敵機行動制御方法、装置、プログラム及びその記録媒体
US20250242251A1 (en) Heuristic for termination of unit movement based on population density
JP6278998B2 (ja) ゲーム方法およびゲームプログラム
JP4804222B2 (ja) シューティングゲーム難易度判定方法、その装置、そのプログラム及びその記録媒体
KR102589889B1 (ko) 게임 ui 분석 방법
JP2006130348A (ja) プログラム、情報記憶媒体及びゲーム装置
JP4804230B2 (ja) シューティングゲーム処理方法、その装置、そのプログラム及びその記録媒体
CN117009206A (zh) 一种热点聚集位置的预测方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110506

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110623

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110802

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110809

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4804240

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140819

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees