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
JP4976771B2 - シューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体 - Google Patents
[go: Go Back, main page]

JP4976771B2 - シューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体 - Google Patents

シューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体 Download PDF

Info

Publication number
JP4976771B2
JP4976771B2 JP2006202019A JP2006202019A JP4976771B2 JP 4976771 B2 JP4976771 B2 JP 4976771B2 JP 2006202019 A JP2006202019 A JP 2006202019A JP 2006202019 A JP2006202019 A JP 2006202019A JP 4976771 B2 JP4976771 B2 JP 4976771B2
Authority
JP
Japan
Prior art keywords
aircraft
time
cell
total number
square
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.)
Active
Application number
JP2006202019A
Other languages
English (en)
Other versions
JP2008023243A (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 JP2006202019A priority Critical patent/JP4976771B2/ja
Publication of JP2008023243A publication Critical patent/JP2008023243A/ja
Application granted granted Critical
Publication of JP4976771B2 publication Critical patent/JP4976771B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Description

本発明は、画面上に表示された自機と敵機とが互いに戦うシューティングゲームの処理技術に関わる。より詳しくは、シューティングゲームのデモンストレーションにおける自機の行動制御に関する。
現在、コンピュータを利用したシューティングゲームが広く普及している。
一般的なシューティングゲームでは、画面上に一つの自機と一つあるいは複数の敵機とが表示される。ここで画面とは、シューティングゲームが表示される画面のことであり、いわゆる全画面表示形式であれば、ディスプレイなどの表示装置の表示部の全面に相当し、あるいは、表示部の一部分に独立した表示領域を用意して、その表示領域に画像やテキストを表示する機能が与えられたいわゆる窓形式であれば、この窓形式の表示領域が画面に相当する。
プレイヤーが適当な入力手段〔例えばキーボードのキー、多方向押圧可能なスイッチ、操縦桿などである。〕を操作すると、その操作が画面上の自機の数種類の行動に変換され、自機がその操作に応じた行動をする。また、プレイヤーが適当な入力手段〔例えばキーボードのキー、多方向押圧可能なスイッチ、操縦桿に備えられたボタンなどである。〕を操作すると、その操作が画面上の自機の攻撃行動に変換され、自機が攻撃弾を発射し、敵機や種々のアイテムに対してダメージを与えることができるようになっている。
一方、敵機の操作は、ネットワーク対戦型シューティングゲームのように、自機を操作するプレイヤーとは異なるプレイヤーによって操作される人間操作型の場合や、あるいは、コンピュータによって操作されるコンピュータ操作型がある。「コンピュータ」とは、いわゆるパーソナルコンピュータのような汎用機の場合に限定されず、ゲーム専用機などを広く指す〔以下同様。〕。また、「コンピュータによる操作」とは、コンピュータのハードウェア資源とコンピュータに実装されたソフトウェアとが協働して情報処理を実現することで、敵機の行動や、自機に対する攻撃弾の発射などがコンピュータの画面上において表示されることをいう。
コンピュータ操作型の場合、敵機の行動制御および敵機の自機に対する攻撃弾の発射制御などは、コンピュータの制御プログラムに従って処理されている。
なお、自機・敵機の「行動」には、「移動」という行動のみならず、「静止」という行動も含まれる。また、自機・敵機が攻撃弾を発射すると、単に攻撃弾の「発射」のみが画面上に表示されるだけでなく、発射された攻撃弾の飛行も表示される。
このようなシューティングゲームでは、プレイヤーがゲームプレイをしていない、いわゆる「待ち状態」の時に、画面上でシューティングゲームのデモンストレーションが表示されることが多い。デモンストレーションは、シューティングゲームのゲーム内容を紹介することや自機のプレイヤーが一時的にプレイヤーによる操作を中断するなどの目的などから、コンピュータによる操作で自機を行動させて、シューティングゲームを行っている様子を表示するものであるのが一般的である。本明細書でデモンストレーションとは、その目的を問わず、コンピュータによる操作で自機を行動させることを云う。
シューティングゲームにおける上記の事実は周知であるが、一例として非特許文献1を示す。
松浦健一郎著、「シューティングゲームアルゴリズムマニアックス」初版、ソフトバンクパブリッシング株式会社、2004年6月
従来のデモンストレーションにおける自機の行動を決定するアルゴリズムは、例えば敵機や敵機から発射された攻撃弾に向かって自機を移動させたり、攻撃弾などが接近してきても自機を移動させなかったりなど、人間の目から見て理に適わない自機の行動制御を行うほど単純なものであった。このため、多くの場合、敵機の攻撃によってすぐに自機が破壊されるため、例えばゲーム内容をプレイヤーに理解させるほどの長い時間のデモンストレーションを行うことが難しかった。
このような問題を解決するためには、人工知能の技術をデモンストレーションに導入するのが有効と考えられるが、現在、人工知能におけるゲームの研究は、チェス、オセロ、将棋といった、非アクション系のいわゆる思考ゲームを中心にして行われており〔例えば参考文献参照。〕、人工知能をシューティングゲームのデモンストレーションに応用する試みはなかった。
(参考文献)Jonathan Schaeffer,H.Jaap van den Herik,“Games,computers,and artificial intelligence”,Artificial Intelligence,2002,Vol.134,p1-7
また、チェス、オセロ、将棋といった思考ゲームを解くための人工知能技術研究は、深い探索計算を効率的に行うための手法の開発に集中している。このような人工知能技術をシューティングゲームのデモンストレーションに単純に導入することは有意義ではない。何故なら、シューティングゲームの娯楽性は早い展開で行われる仮想戦闘にあるところ、このような娯楽性を伝えるデモンストレーションにおいても、深い探索計算より実時間性を損なわないことが重視されるからである。
そこで本発明は、上記の問題点に鑑み、デモンストレーションで人間の目から見て理に適った自機の行動制御を行うシューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体を提供することを目的とする。
上記課題を解決するために、本発明では、画面上に自機と1つあるいは複数の敵機とが表示され、自機および敵機が行動しながら攻撃弾を発射するシューティングゲームのデモンストレーションで自機の行動制御を行うシューティングゲームのデモンストレーション用自機行動制御方法を、次のようなものとする。即ち、まず、自機目標設定手段が、自機の行動を決定するべき現時点tにおいて、敵機が現時点tより過去の時点で発射した攻撃弾の位置およびその速度、敵機の位置およびその速度、並びに現時点の自機の位置に基づき、画面を格子状に分割した格子の升目であって現時点tで自機が存在する升目sを起点として、現時点tより後の時点nで、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目に到達しえる経路総数〔順経路総数〕を各升目ごとに求め、順経路総数が最大の升目sを目標として設定する。次いで、自機行動決定手段が、敵機が現時点tより過去の時点で発射した攻撃弾の位置およびその速度、敵機の位置およびその速度に基づき、目標とされた升目sを起点として、時点nよりも前の時点t+ΔTで、上記格子の各升目において、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目に到達しえる経路総数〔逆経路総数〕を各升目ごとに求め、上記升目sの逆経路総数および上記升目sの周囲の升目のうち1処理単位時間ΔTで自機が升目sに移動可能な升目s′の各逆経路総数のうち、最大の逆経路総数を有する升目に対して行動することを決定する。
このように、現時点tで自機の到達目標となる升目sを将来における敵機や攻撃弾との衝突可能性を考慮した経路総数によって定め、この升目sを起点として、将来における敵機や攻撃弾との衝突可能性を考慮した上で、時点t+ΔTでの、現時点tで自機が存在する升目sの逆経路総数および升目sの周囲の升目のうち1処理単位時間ΔTで自機が升目sに移動可能な升目s′の各逆経路総数を求め、これらのうち最大の逆経路総数を有する升目に対して行動することを決定する。
本発明では、自機が敵機をできる限り破壊することの考慮および自機の位置ができるだけ画面中央付近にあるための考慮を、逆経路総数を求める過程に反映させることもできる。つまり、逆経路総数を求める各時点tで、自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sの逆経路総数Cb(s,t)を、その他の升目の逆経路総数に比して相対的に増大させるとしてもよく、あるいは、逆経路総数を求める各時点tで、升目sの画面中央からの距離rを単調減少関数に入力して得られた結果、または、升目sの画面中央からの距離rを単調減少関数に入力して得られた結果を整数値化したものを、升目sの逆経路総数Cb(s,t)に乗じるとしてもよい。
これらを互いに排他的に行うのではなく、逆経路総数を求める各時点tで、自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sの逆経路総数Cb(s,t)を、その他の升目の逆経路総数に比して相対的に増大させ、さらに、この相対的に増大させた逆経路総数Cb(s,t)に、升目sの画面中央からの距離rを単調減少関数に入力して得られた結果、または、升目sの画面中央からの距離rを単調減少関数に入力して得られた結果を整数値化したもの、を乗じるとしてもよい。
本発明に拠れば、将来における敵機や攻撃弾との衝突可能性を考慮した経路総数に基づいて自機の行動決定を行うから、敵機や敵機から発射された攻撃弾に向かって自機を移動させたり、攻撃弾などが接近してきても自機を移動させなかったりなどの理不尽な自機の行動が低減され、人間の目から見て理に適った自機の行動制御がなされるシューティングゲームのデモンストレーションが実現する。
《技術の概要》
本発明では、画面を格子状に分割し、現時点t(=0)で自機が存在する格子の升目sから現時点より後の時点nで格子の或る升目sに到達する経路の総数C(s,n)を各升目ごとにそれぞれ求め、このC(s,n)が最大の升目を自機の移動先の目標とする。そして、現時点tで、この目標へ向かうような最適な行動を選択する。
ここで「時点」とは、シューティングゲームの処理単位時間間隔でとった各時点のことであり、現時点をt、処理単位時間をΔTとすれば、現時点より後の各時点tは、t+ΔT、t+2ΔT、t+3ΔT、・・・、nとなる。「現時点」は、デモンストレーションで自機の行動を決定するべき時点を云う。シューティングゲームに限らずコンピュータゲームでは、時間を使った処理が行われるが、ここで処理単位時間は自機の1行動を基準にとった単位時間とする。換言すれば、1処理単位時間ΔTにおいて可能な自機の行動は、升目に対する静止という行動も含めて1つである。
本発明において、自機の行動には、次のような条件が課されているとする。即ち、斜めに移動する際の移動速度の縦方向成分(速さ)は、縦方向のみに移動する場合の速さと同じ速さであり、横方向成分(速さ)は、横方向のみに移動する場合の速さと同じ速さであるとする。ここで「速度」は、画面上に表示される物体の有する、「速さ」と「向き」とを合わせもったベクトル量とする。
また、敵機から発射された攻撃弾の行動には、次のような条件が課されているとする。即ち、各攻撃弾は、敵機から発射される際に決定された速度を発射後において維持する。
さらに、各敵機は、現時点での速度を維持するものとする。ただし、実際のゲームプレイやデモンストレーションでは敵機速度は時間とともに変化するとしてよく、デモンストレーションにおける自機の行動決定では敵機速度は変化しないと仮定するという意味である。敵機速度が一定のシューティングゲームにのみ本発明を適用するというわけではない。
自機・敵機・攻撃弾は、一般的に何らかの物体〔例えば戦闘機や銃弾〕を摸擬した画像として画面上に表示される。シューティングゲームでは自機と敵機との衝突判定処理や自機と攻撃弾との衝突判定処理が行われる。この判定のためには、摸擬されている物体の外形とは別に、自機・敵機・攻撃弾の衝突判定用の各形状が定義されていることが一般的である。以下、特に断りのない限り、自機・敵機・攻撃弾について単に「形状」と言えば衝突判定用の形状を意味する。本発明においては、この定義の仕方に何らの限定はなく、いかなる定義の仕方をしてもよい〔但し、従来のシューティングゲームと同様に、衝突判定に用いる自機・敵機・攻撃弾の各形状を処理ごとに可変とするのではなく、一義的に定義しておくのが好ましい。〕。例えば、自機の外形を内包する最小の矩形〔本明細書では、長方形に限定せず、正方形・菱形・平行四辺形などの四角形や、さらには三角形や五角形などの多角形も含む意味で「矩形」という文言を用いる。〕や円を、衝突判定に用いる自機の形状と定義すればよい。敵機・攻撃弾についても同様である。
また、自機・敵機・攻撃弾の画面上の位置の特定に用いる自機・敵機・攻撃弾の基準点を定めておく。基準点の定め方にも特に限定はなく、例えば上記のように衝突判定に用いる形状を定義したならば、自機の外形を内包する最小の矩形や円の中心を基準点とするのが簡便である。なお、矩形の中心について、例えばそれが長方形や正方形のような形状であれば対角線の交点を当該矩形の中心とし、あるいは、矩形を内包する最小の円の中心を当該矩形の中心とするなど適宜に定めることができる。このように基準点を定めたならば、画面上の基準点の位置座標をもって、自機・敵機・攻撃弾の画面上の位置座標とすることができる。
また、格子の各升目の形状は、縦の長さを(自機の縦方向の速さ)×ΔTとし、横の長さを(自機の横方向の速さ)×ΔTとする。このような升目からなる格子とすれば、上記自機速度の条件から、自機が現在する升目sから1処理単位時間で移動可能な升目は、升目sに接して升目sを取り囲む升目となる。
処理単位時間ΔTは、升目の大きさに影響を与える要因の一つであり、升目は自機位置を離散化したものと評価できるから、ΔTをむやみに大きな値とするのは好ましくない。ΔTを大きくする程、処理単位時間ごとの自機位置が粗く離散化されてしまう。好ましいΔTは、演算処理装置の処理能力、プログラムの使用言語、実際のプログラムの記述の仕方などにもよるので一概には云えないが、升目の短辺が、攻撃弾あるいは敵機の形状の指標となる長さ〔後述する。〕と、自機の形状の指標となる長さ〔後述する。〕との和である基準長以下となる、好ましくは基準長の半分以下となる、より好ましくは基準長の3分の1以下となるようにΔTを設定するのがよい。また、升目形状と後述する敵機/攻撃弾の看做し位置座標との関係から、基準長の整数分の1以下とするのがよい。
移動可能な升目への自機の行動の種類は、いくつか考えられるが、例えば、日本将棋の「玉将」または「王将」の動きと同じとするか、あるいは、十文字の動きとすることなどができる。ここで玉将の動きは図1(a)に示すとおりであり、十文字の動きは図1(b)に示すとおりである。なお両図において黒丸印は現在の自機の位置、白丸印は1処理単位時間後に移動可能な自機の位置を表している。図1(a)では行動種類は、静止と周囲8つの各升目への移動の9種類、図1(b)では静止と前後左右4つの各升目への移動の5種類である。
現時点t(=0)で自機が存在する升目sから現時点より後の時点nで升目sに到達する経路の総数C(s,n)は、例えば決定木〔decision tree〕探索で求めることができる。しかしながら、上記のように自機の行動に制約があるとすれば、現時点t(=0)に自機が存在する升目sから現時点より後の或る時点tにおける或る升目sまでの経路の総数C(s,t)は、升目sの周囲の升目のうち1処理単位時間で自機が升目sに移動可能な升目s′のC(s′,t−ΔT)の総和〔s′に関する総和である。〕と1処理単位時間前の升目sのC(s,t−ΔT)との和で得られるから、各時点での各升目のC(s,t)を順次に求めることで、時点nで升目sに到達する経路の総数C(s,n)を効率良く求めることができる。
現時点t(=0)で自機が存在する升目sから現時点より後の時点nで或る升目sに到達する経路の総数C(s,n)を各升目ごとにそれぞれ求める過程では、次のような考慮がなされる。
デモンストレーションで自機の行動を決定するに当たり、その時点では既に、画面上に1つ以上の敵機〔以下、「既存敵機」とも云う。〕や敵機から発射された1つ以上の攻撃弾〔以下、「既存攻撃弾」とも云う。〕が表示されている場合がある。そこで、現時点より後の各時点tで、既存敵機と既存攻撃弾の少なくとも何れかが存在すると予測される各位置を含む升目および当該各位置から所定の距離内に位置する升目sにおける経路の総数を、その時点において0にリセットするのである。これはC(s,t)=0とするに等しい。このことは、デモンストレーションにおいて自機をより長く、敵機や敵機からの攻撃による破壊から免れせしめることに寄与するという考慮の表れである。
ここで「既存敵機と既存攻撃弾の少なくとも何れかが存在すると予測される各位置」は、既存敵機と既存攻撃弾とが共に存在すると予測される位置それぞれのことではなく、既存敵機が存在すると予測される位置と既存攻撃弾が存在すると予測される位置のそれぞれを云うのであり、この意味において、既存敵機と既存攻撃弾とが共に存在すると予測される位置も含まれる。また、「既存敵機と既存攻撃弾の少なくとも何れかが存在すると予測される各位置から所定の距離」とは、敵機と自機との衝突判定あるいは攻撃弾と自機との衝突判定に用いられる距離である。このような距離の内側、つまり敵機や攻撃弾の各中心により近い領域では、自機は敵機および/または攻撃弾と衝突したと判定されることになる。換言すると、「既存敵機と既存攻撃弾の少なくとも何れかが存在すると予測される各位置から所定の距離」が張る領域、つまり衝突判定形状を定義し、この衝突判定形状を用いて自機と攻撃弾との衝突判定あるいは自機と敵機との衝突判定ができる。
衝突判定形状は適宜に定義できる。ここでは攻撃弾の場合を例にとって説明するが、敵機の場合についても、「攻撃弾」を「敵機」に読み替えて同様の理解を得ることができる。
例えば衝突判定形状を円とする場合、衝突判定円は、例えば、衝突判定円の中心を攻撃弾形状の中心とし、衝突判定円の半径を(攻撃弾形状の中心から攻撃弾形状の外周への最短距離)+(自機形状の中心から自機形状の外周への最短距離)とすることができる。但し、半径は、(攻撃弾形状の中心から攻撃弾形状の外周への最長距離)+(自機形状の中心から自機形状の外周への最短距離)などのようにしてもよい。要するに、衝突判定円の半径は、攻撃弾の形状の指標となる長さと、自機の形状の指標となる長さの和とする。ここで指標の採り方は、自機や攻撃弾の形状の定義によって適宜に定めることができる。簡単な例では、自機や攻撃弾などの形状を円とすればこの半径を、矩形とすればその長辺の長さの半分を指標とすることもできる。上記のように衝突判定円を定義すれば、この衝突判定円上あるいは衝突判定円内に自機の位置座標が存在すれば、自機は攻撃弾に衝突したと判定できる。
衝突判定形状を矩形とする場合、一例としてより具体的に攻撃弾形状を横2a、縦2bの長方形、自機形状を横2c、縦2dの長方形とした場合で説明すれば、衝突判定矩形は、その中心を攻撃弾形状の中心とし、横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に設定する場合として説明する。
攻撃弾の種類ごとに衝突判定形状は異なりえるが、同じ種類の攻撃弾であれば衝突判定形状は同一であるのが通常であるところ、格子が定まっていれば、升目の四隅の角またはその中心のいずれかを中心とする衝突判定形状に含まれる升目は一意になる。
このことを図2を参照して説明する。図2中、■印は、看做し位置座標を表し、符号50は格子を示している。また図2では、衝突判定形状が衝突判定円あるいは衝突判定矩形の場合を示している。図2(a)は、升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち1つに看做した場合である。図2(c)は、升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合である。図2(b)は、升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち1つに看做した場合である。図2(d)は、升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合である。いずれの場合でも、0が記入された升目は衝突判定形状に一部または全部が含まれる升目であり、これらの升目は、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角または中心のうち予め決められた1つに看做すというルールと同種の攻撃弾において衝突判定形状は同一とするというルールを維持すれば、看做された攻撃弾の位置座標に対して一意である。そこで、一意に定まる升目の集まりに関する情報を例えばテンプレート〔図2の網掛け部分〕として記憶手段に記憶しておけば、看做された攻撃弾の位置座標に対してテンプレートを適用するだけで、所望の升目のC(s,t)を0に設定できる。
このように、攻撃弾の位置座標および衝突判定形状から厳密に、当該衝突判定形状に一部または全部が含まれる升目を特定する処理を行わなくても、看做し位置座標に対してテンプレートを適用するだけの処理で簡便に所望の升目のC(s,t)を0に設定できるのである。
なお、一意に定まる升目の集まりに関する情報を、テンプレートとしてではなく、例えば攻撃弾の位置座標が存在する升目を取り囲む升目の数として記憶手段に記憶するなどとしてもよい。
以上のように簡便に所望の升目を特定することは、いわゆる近似処理であるから、できるだけ、厳密に所望の升目を特定した場合との差異が小さくするようにするのが好ましい。そこで、看做し位置座標を、攻撃弾が存在すると予測される位置を含む升目の四隅の角のいずれか1つとする場合には、攻撃弾の位置座標から最も近い角とするようにしてもよい。
なお、さらに簡便な処理とするならば、攻撃弾の位置座標が升目の如何なる部分にあろうが、常に予め定めた看做し位置座標とする構成としてもよい。つまり、例えば、攻撃弾の位置座標が升目の如何なる部分にあろうとも、升目の左上の角を看做し位置座標とするとして画一的に処理してもよいのである。
既述のとおり、C(s,n)が最大の升目を自機の移動先の目標とし、現時点tで、この目標へ向かうような最適な行動を選択するのであるが、この最適な行動の選択について説明を加える。
最も単純と云える最適な行動の選択は、現時点tで自機が在る升目sからC(s,n)が最大の升目に対して直線を引き、升目sに接して升目sを取り囲む升目s′のうち、この直線を含む升目に対して自機を行動する、というものである。なお、直線は、升目sの中心とC(s,n)が最大の升目の中心とを結ぶ直線とすればよい。
しかし、この行動選択は、単純な処理である点で好ましいものの、時点nにおいてC(s,n)が最大の升目に到達する経路の時点t+ΔTの升目と必ずしも同じではない上、C(s,n)を求めた意義を十分に活用しきれていないきらいがある。
むしろ、目標となる升目、つまり時点nでC(s,n)が最大の升目に到達可能な経路の中から、時点t+ΔTで自機が存在する可能性の最も高い升目に行動するようにすればよいと想到される。考え方としては、C(s,n)を求めた処理と同様に、時点nでC(s,n)が最大の升目を起点として、時点t+ΔTへ遡りながら各升目のC(s,t)を順次に求めていくことで、最終的に時点t+ΔTのC(s,t+ΔT)を求め、升目sのC(s,t+ΔT)および升目sに接して升目sを取り囲む升目s′のC(s′,t+ΔT)の中で最大の値となる升目に対して行動するということになる。
既に説明したが、現時点での速度を維持するとの仮定によって敵機の行動が単純化され、かつ、将来の時点で発射される攻撃弾の効果を考慮していないことから、C(s,t+ΔT)の値は正確なものにならない。換言すれば、敵機が現時点での速度を維持するとの仮定と将来の時点で発射される攻撃弾の効果を考慮しないとの点を前提としてC(s,t+ΔT)の値は正確であるに過ぎない。
仮に、各敵機が速度を維持しないとし、将来の時点で発射される攻撃弾の効果を考慮し、さらには、不確定性の高い敵機の出現なども全て考慮してC(s,t+ΔT)を求めるとすると、決定木探索はもとより、C(s,t)をC(s′,t−ΔT)の総和とC(s,t−ΔT)との和で得る方法と同様の方法を用いても、膨大な計算量となりえるからリアルタイムな処理が困難となる。
そこで、経路総数算出の過程で、なるべく現時点で存在している敵機を自機ができる限り破壊することを前提とすればよい。将来の各時点においてC(s,t)の正確性を低下させる敵機の行動や攻撃弾の発射を低減することができ、C(s,t)の信頼性を増すことが可能となる。ここで留意しなければならないのは、自機の現時点での行動決定において考慮すべき事項の一つは、「将来の或る時点で自機が実際に敵機を破壊すること」ではなく、「将来の各時点で自機が敵機をできるだけ破壊しえること」という仮定的事項である。
また、将来において、画面端に自機が位置する場合のように、自機の移動が制限される状況を生み出さないためにも、自機の位置ができるだけ画面中央付近にあることが望ましい。
これらの観点から、現時点tで目標へ向かうような最適な行動を次のようにして決定する。
まず、時点nでC(s,n)が最大の升目を起点として、時点を減少させながら逐次にC(s,t)を求め、時点t+ΔTでのC(s,t+ΔT)を求める。既述のC(s,t)とは値が異なりえるから、ここでは前記のC(s,t)と区別する意味でCb(s,t)と表記する。これに応じて、C(s,t)を順経路総数、Cb(s,t)を逆経路総数ということにする。
Cb(s,t)の求め方は既述のC(s,n)の求め方と同様であり、時点をnからt+ΔTに順次減少する点が異なる。つまり、時点nでCb(s,n)が最大の升目から時点nより減少された或る時点tにおける或る升目sまでの逆経路総数Cb(s,t)は、升目sの周囲の升目のうち1処理単位時間で自機が升目sに移動可能な升目s′のCb(s′,t+ΔT)の総和〔s′に関する総和である。〕と1処理単位時間前の升目sのCb(s,t+ΔT)との和で得られるから、各時点でのCb(s,t)を順次に求めることで、時点t+ΔTでの升目sのCb(s,t+ΔT)を効率良く求めることができる。
Cb(s,t)を求める各時点tで、既存敵機と既存攻撃弾の少なくとも何れかが存在すると予測される各位置を含む升目および当該各位置から所定の距離内に位置する升目sにおける逆経路総数Cb(s,t)をその時点において0にリセットすることも、順経路総数C(s,t)を求める場合と同様にして行う。
時点を減少させながら逐次にCb(s,t)を求める過程では、自機が敵機をできる限り破壊することを考慮して、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sのCb(s,t)の値を或る定数値AsによってAs倍する。定数値Asは1よりも大の値とする。つまり、敵機を破壊できる自機位置を含む升目の逆経路総数を増大させる補正を行うのである。
この目的は、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sのCb(s,t)を、その他の升目のCb(s,t)よりも相対的に増大させることにあるから、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sのCb(s,t)の値を1よりも大である定数値AsによってAs倍することに限定されず、その他の升目のCb(s,t)に1よりも小の定数値を乗じる処理も可能である。いずれにしても、この趣旨を逸脱しないのであれば適宜に設計変更可能であるから、本明細書では、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sのCb(s,t)の値を1よりも大の定数値AsによってAs倍するとして説明する。
「攻撃ライン」とは、自機が発射する攻撃弾の飛行経路のことである。飛行経路は、厳密に「線」を意味するのではなく、攻撃弾は或る大きさの形状を有しさらに衝突判定が行われるものであるから、ある程度の幅を有することに留意しなければならない。シューティングゲームでは、自機が発射する攻撃弾の飛行経路は、予め定義されているのが一般的である。単純な例として、一度に1つの攻撃弾を発射する場合では、自機が発射する攻撃弾の飛行経路は画面の縦に平行になっているのが一般的である。他の例では、一度に例えば3つの攻撃弾a、b、cを発射する場合では、3つの攻撃弾のうち1つの攻撃弾aの飛行経路は画面の縦に平行になっていて、残りの2つの攻撃弾b、cの飛行経路は、攻撃弾aの飛行経路を中心に等角に挟み込むような飛行経路となっている。あるいは、2つの攻撃弾を発射する場合では、前記攻撃弾b、cの飛行経路と同様にすればよい。いずれにしても適宜の設計事項である。
また、自機は、自機の攻撃ライン上に敵機が在る場合には、攻撃弾を発射するものとする。ただし、発射された攻撃弾が敵機に必中することは要件でない。何故なら、先にも述べたが、敵機に対する攻撃は、C(s,t)の正確性を低下させる敵機の行動や攻撃弾の発射を低減することが目的だからである。なお、デモンストレーション効果、つまりプレイヤーにこのシューティングゲームは「面白い」、「楽しい」などと思わせる効果を狙って、自機から発射された攻撃弾が敵機に必中するようにしてもよい。
時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sの判定は、次のようにして行えばよい。例えば、単純な例として、自機が発射する攻撃弾の飛行経路が画面の縦に平行になっている場合では、敵機の時点tでの予測位置座標を(Xi,Yi)とすると、座標値Xiが、時点tに自機が在るとされる升目sの横幅のX座標値の範囲に含まれるか否かで判定する。つまり、升目sが、例えば画面上で4頂点の座標が(100,50)、(110,50)、(100,60)、(110,60)である升目とすれば、100≦Xi≦110であるか否かで判定する。含まれれば升目sのCb(s,t)の値をAs倍し、含まれなければ升目sのCb(s,t)の値を変更しない。
また、画面の背景描画が縦方向に流れる、例えば画面上方から画面下方に向かって背景が流れるように描画される、縦スクロール型シューティングゲームでは、敵機が自機と横並びか、あるいは、敵機が自機よりも画面下方に位置する場合に、自機がこのような敵機に対して攻撃弾を発射しても命中することがないのが一般的であるから、座標値Xiが、時点tに自機が在るとされる升目sの横幅のX座標値の範囲に含まれるか否かに加え、例えば、画面上端から画面下端に向かって縦軸(Y軸)数値が増大するとして、座標値Yiが、時点tに自機が在るとされる升目sの縦幅のY座標値の範囲の最小値よりも小であるか否かの判定をしてもよい。つまり、升目sが、例えば画面上で4頂点の座標が(100,50)、(110,50)、(100,60)、(110,60)である升目とすれば、100≦Xi≦110、かつ、Yi<50であるか否かで判定する。この理は、横スクロール型シューティングゲームや横方向に攻撃弾を発射するようなシューティングゲームなどにも適用できる。
ここでは、自機が発射する攻撃弾の飛行経路が画面の縦に平行になっている場合で例示説明したが、自機が発射する攻撃弾の飛行経路が画面の縦に平行になっていない場合でも、例えば、自機の基準点が升目の中心にあると仮定することで攻撃ラインを(その升目において)一意に定め、この攻撃ライン上に敵機が存在するかを判定することで、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sの判定が可能になる。
なお、自機が攻撃弾を発射する制御方法自体は本発明の要諦ではないから、説明を略する。
定数値Asについて更に説明する。Cb(s,t)の値は、攻撃弾などの存在予測で0にリセットする場合があるにせよ、一般的には、tの減少(あるいは増加)に応じて増大する。このようなCb(s,t)の値をAs倍すると、桁あふれする可能性がある。つまり、Cb(s,t)に或る変数型〔例えば整数型と長整数型とでは扱える数値の最大値が異なる。〕が定義されている場合、Cb(s,t)の値をAs倍することによって当該変数型が扱える数値の最大値を超えてしまう可能性がある。そこで、定数値Asは、格子の大きさ、nの値、Cb(s,t)の変数型などに応じて適切に設定しておくのがよい。また、Asは整数値に限定されないが、敢えて例えば浮動小数点数で計算する必要が無いので、整数値とするのが一般的と云える。仮にAsを非整数値とした場合、Cb(s,t)×Asの小数点以下を切上げや切捨てなどをして整数値とするとしてもよい。
また、時点を減少させながら逐次にCb(s,t)を求める過程では、自機の位置ができるだけ画面中央付近にあるための考慮を反映させるべく、時点tで自機が升目sに在る場合に、当該升目sの画面中央からの距離rに応じて、Cb(s,t)の値をAz倍する。Azは、画面中央に近い升目ほど大きく、画面中央から離れる升目ほど小さい値とする。升目sの画面中央からの距離rは、画面中央の位置座標と升目sの中心の位置座標との距離とすればよい。升目sの中心は2つの対角線の交点とすればよい。距離rを入力として、画面中央に近い升目ほど大きく、画面中央から離れる升目ほど小さい値となるAzを出力する関数F(r)として、例えば、F(r)=exp(−r)、F(r)=exp(−r)、F(r)=1/(1+r)、F(r)={a+exp(−r)}/(a+1)、F(r)={a+exp(−r)}/(a+1)、F(r)={a+b^(−r)}/(a+1)などを例示できる。a,bは正定数である。expは、自然対数の底の冪乗演算である。記号^は冪乗を表す。ここでは、0以上1以下の範囲に収まる値を出力する関数を例示したが、適当な定数係数kを乗じることで0以上k以下の範囲に収まる値を出力するようにすることもできる。また、画面中央に近い升目ほど大きく画面中央から離れる升目ほど小さい値となる分布の程度は、例えば、cを正定数としてF(r)=exp(−r/c)などとし、このcの値を適宜に設定することで調整可能である。また、F(r)={a+b×exp(−r)}/(a+1)、F(r)={a+c×b^(−r)}/(a+1)などは、画面中央よりも遠方でa/(a+1)に漸近するから、aの値を0ではない値に適宜に設定することで、画面中央から離れた升目のCb(s,t)を事実上無駄にしない、あるいは、画面中央から離れた升目のCb(s,t)を過小評価しないことができる。要するに、F(r)は単調減少関数であればよい。ここで単調減少関数は、関数F(r)がr≦rなる任意のrとrに対してF(r)≧F(r)を満足することを云う。また、Az=F(r)としてもよいが、敢えて例えば浮動小数点数で計算する必要が無いので、F(r)の小数点以下を切上げや切捨てなどをして整数値としたものをAzとするのが一般的と云える。仮にAzを非整数値とした場合、Cb(s,t)×Azの小数点以下を切上げや切捨てなどをして整数値とするとしてもよい。
以上の例では、距離rを求めてAzを算出するとしたが、より簡便な処理でAzを与えてもよい。Azは、画面中央に近い升目ほど大きく、画面中央から離れる升目ほど小さい値とするのであるから、格子が定まっていることを前提として、格子の各升目に予め、画面中央に近い升目ほど大きく画面中央から離れる升目ほど小さい値を割り当てておくのである。このようにすれば、距離rやAzを求める手間を省くことができる。
結局、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にないときにCb(s,t)の値に乗じる定数値Asを1とすれば、上記の諸条件に基づいて、各時点での各升目のCb(s,t)の値はCb(s,t)×As×Azに補正される。
なお、自機が敵機をできる限り破壊することの考慮、および、自機の位置ができるだけ画面中央付近にあるための考慮は、それぞれ、別個独立に考慮できるから、自機が敵機をできる限り破壊することだけを考慮する場合には、各時点での各升目のCb(s,t)の値をCb(s,t)×Asに補正し、自機の位置ができるだけ画面中央付近にあるためだけを考慮する場合には、各時点での各升目のCb(s,t)の値をCb(s,t)×Azに補正すればよい。
そして、現時点t(=0)で自機が存在する升目sのCb(s,t+ΔT)および升目sの周囲の升目のうち1処理単位時間で自機が移動可能な升目s′の各Cb(s′,t+ΔT)のうち、最大の値となった升目に対して行動することを決定する。
つまり、自機の行動種類が図1(a)に示すように静止と周囲8つの升目への移動の9種類の場合を例にとると、Cb(s,t+ΔT)および周囲8升の各Cb(s′,t+ΔT)のうち、その最大値が升目sであれば、時点t+ΔTで升目sに居るために、現時点tで「静止」という行動を最適な行動として選択する。最大値が升目s∈s′であれば、時点t+ΔTで升目sに居るために、現時点tで「升目sへの移動」という行動を最適な行動として選択する。
以上に説明したように、現時点tで、目標へ向かうような最適な行動が選択されるが、この行動の選択は、処理単位時間ΔTごとに行えばよい。
《実施形態》
本発明の実施形態について、図面を参照しながら説明する。
<シューティングゲームのデモンストレーション用自機行動制御装置>
本発明の実施形態であるシューティングゲームのデモンストレーション用自機行動制御装置(1)は、それ単体で独立に存在するよりは、コンピュータを構成するエンティティとして存在するのが一般的である〔勿論、単体独立のエンティティとして存在することを排除する趣旨ではない。〕。さらに云えば、シューティングゲームのデモンストレーション用自機行動制御装置(1)は、コンピュータとは容易に分離可能にコンピュータを構成するエンティティではなく、コンピュータ自体を或る機能に着眼して片面的に評価したものであるのが一般的である。要するに、シューティングゲームのデモンストレーション用自機行動制御装置(1)は、シューティングゲームを実行するコンピュータそのものであることが一般的である。ここでコンピュータは、既述のとおりパーソナルコンピュータのような汎用機やゲーム専用機などを広く指す。
以下、シューティングゲームのデモンストレーション用自機行動制御装置(1)を単にデモ用自機行動制御装置(1)と云うことにする。
コンピュータは、CPUやMPUのような演算処理装置と、演算処理の用に供するデータ、演算処理の結果として得られたデータ、演算処理装置によって解釈実行されるプログラムなどを記憶可能な記憶装置(例えば揮発性メモリ、不揮発性メモリ)などを備えている。また、シューティングゲームを実行可能なコンピュータに要求される装置として、ブラウン管型表示装置や液晶ディスプレイのような表示装置、キーボードや操縦桿のような入力装置がコンピュータに接続される。
コンピュータとして汎用機を例にとると、デモ用自機行動制御装置(1)のハードウェア構成例は次のとおりである〔図3参照〕。
デモ用自機行動制御装置(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)には、デモンストレーションで自機の行動を決定するべき時点〔現時点〕において、既存敵機の位置およびその速度、既存敵機によって過去の時点で発射された既存攻撃弾の位置およびその速度、並びに自機の位置に基づいて、現時点t(=0)に自機が存在する升目sから現時点より後の或る時点nにおける升目sまでの順経路総数C(s,n)を、既存敵機と既存攻撃弾の存在を考慮して求めて、C(s,n)が最大の升目sを自機の向かう目標の升目として設定するためのプログラム(自機目標設定プログラム)、目標の升目sを起点として、既存敵機と既存攻撃弾の存在、敵機の破壊並びに画面中央付近にできるだけ居ることを考慮して、時点を減少させながら逐次に逆経路総数Cb(s,t)を求めることで時点t+ΔTでのCb(s,t+ΔT)を求め、現時点t(=0)で自機が存在する升目sのCb(s,t+ΔT)および升目sの周囲の升目のうち1処理単位時間で自機が升目sに移動可能な升目s′の各Cb(s′,t+ΔT)のうち、最大の値となった升目に対して行動することを決定するためのプログラム(自機行動決定プログラム)が保存記憶されている。
なお、この実施形態における自機目標設定プログラムは、現時点t(=0)に自機が存在する升目sから現時点より後の或る時点tにおける或る升目sまでの順経路総数C(s,t)を、既存敵機と既存攻撃弾の存在を考慮して逐次求めるためのプログラム(順経路数計算プログラム)と、順経路数計算プログラムの処理で得られた時点nでの各升目における順経路総数C(s,n)のうち最大の升目sを特定するためのプログラム(目標決定プログラム)とを含む。
また、この実施形態における自機行動決定プログラムは、目標の升目sから時点nより前の或る時点tにおける或る升目sまでの逆経路総数Cb(s,t)を、既存敵機と既存攻撃弾の存在、敵機の破壊並びに画面中央付近にできるだけ居ることを考慮して逐次求めるためのプログラム(逆経路数計算プログラム)と、逆経路数計算プログラムの処理で得られた時点t+ΔTでのCb(s,t+ΔT)のうち、現時点t(=0)で自機が存在する升目sのCb(s,t+ΔT)および升目sの周囲の升目のうち1処理単位時間で自機が升目sに移動可能な升目s′の各Cb(s′,t+ΔT)の中で最大の値となった升目を特定するためのプログラム(行動決定プログラム)とを含む。
デモ用自機行動制御装置(1)では、外部記憶装置(17)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じて記憶部(20)に読み込まれて、CPU(14)で解釈実行・処理される。この結果、CPU(14)が所定の機能(自機目標設定部〔順経路数計算部、目標決定部〕、自機行動決定部〔逆経路数計算部、行動決定部〕)を実現することで自機行動の決定が実現される。また、本発明の視点からは必須の構成要素ではないが、シューティングゲームの実行やデモンストレーションの実行を制御する機能を有する制御部が実装されており、この制御部もCPU(14)で実現される。なお、全ての機能をCPUなどの演算処理装置で実現するに限定されず、機能の一部を例えば演算回路によってハードウェア的に実現するようにしてもよい。
<シューティングゲームのデモンストレーション用自機行動制御方法>
次に、図4および図5を参照して、デモ用自機行動制御装置(1)におけるデモ用自機行動制御処理(自機行動の決定)の流れを叙述的に説明する。
この実施形態では、画面上における自機(30)の位置座標、敵機(40)の位置座標および速度・既存攻撃弾の位置座標および速度は、それぞれ記憶部(20)に記憶されているとする。また、目標を定める時点nも記憶部(20)に記憶されているとする。
自機の行動は、図1(a)に示したとおりとする。
まず、制御部(190)は、デモンストレーションの実行処理中に、自機(30)の行動を決定するための処理を行うよう制御する。
この実施形態では、制御部(190)の制御によって、本発明であるデモ用自機行動制御処理〔自機行動の決定〕が実行されるようになっている。
自機目標設定部(141)は、順経路数計算部(142)および目標決定部(143)で構成されており、制御部(190)の制御を受けて、以下に説明する処理を行う。
順経路数計算部(142)は、記憶部(20)から自機(30)の位置座標を取得し、画面を分割した格子(50)において自機(30)が存在する升目を特定する(ステップS1)。図6では、一例として7×7の49個の正方形の升目からなる格子(50)を示しており、自機は中心の升目に存在していると特定された場合を示している。説明の便宜から、升目の位置を格子(50)の外部に割り当てた数字〔図6参照〕をもって表現する。つまり、格子(50)を行列に見立てたときの行列の成分で各升目を表示する。図6では、自機(30)が存在する升目は(4,4)であり、敵機(40)が存在する升目は(1,3)である。なお、自機(30)および敵機(40)の基準点は既述のとおりである。自機(30)の位置座標が、格子の線や交点の上に位置する場合には、例えば予め定義しておいた升目に自機が存在すると特定すればよい〔例:線上の場合、原則右側の升目とする。交点上の場合、原則右下の升目とする。〕。あるいは、自機(30)の位置座標が格子の線や交点の上に位置しないように画面を格子分割するとしてもよい。
このとき、自機(30)が存在すると特定された升目を除く各升目に数字0が割り当てられ、自機(30)が存在すると特定された升目に1が割り当てられる。つまり、自機(30)が存在すると特定された升目を除く各升目の初期値C(s,0)を0とし、自機(30)が存在すると特定された升目の初期値C(s,0)を1とする〔図6参照〕。
次に、順経路数計算部(142)は、現時点より後の各時点tにおける各升目のC(s,t)を順次に求めることで、時点nで升目sに到達する順経路総数C(s,n)を求める(ステップS2)。ここでは説明を具体的なものにするため処理単位時間ΔTを1とする。
図7に時点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通りの経路しか存在しないことを示している。
図8に時点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に移動可能な升目s′のC(s′,t−1)の総和〔s′に関する総和である。〕と1処理単位時間前の升目sのC(s,t−1)との和で得られる。つまり、C(s,t)は式(1)で得られる。
Figure 0004976771
このことを時点1および時点2の場合で、一例を示して説明する〔図9参照〕。
時点2での升目(3,3)のC(s,2)を求める〔s=(3,3)〕。このとき、時点1でのC(s,1)は、1である。升目s=(3,3)の周囲の升目のうち1処理単位時間で自機が升目sに移動可能な升目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である〔図9(a)参照〕。従って、これらを式(1)に代入すると升目s=(3,3)のC(s,2)は、C(s,2)=1+(1+1+1+0+0+0+0+0)=4となる〔図9(b)参照〕。
上記のように現時点より後の各時点tにおける各升目のC(s,t)を求めるが、実時間性を損なわないようにする観点からはむやみに遥か将来の時点まで予測するのは好ましくない。また、このことは演算処理装置の処理能力などにも依存する。従って、どれくらい将来の時点nまでのC(s,n)を求めるかは、娯楽性、演算処理装置の処理能力などを考慮して予め決定しておけばよい(ここでの説明や図面では、理解を容易にするため時点2までしか示していない。)。
また、順経路数計算部(142)は、記憶部(20)から現時点における既存敵機の位置座標・速度および既存攻撃弾の位置座標・速度を取得し、現時点より後の各時点において既存敵機および/または既存攻撃弾と衝突可能性のある升目のC(s,t)の値を0にする。
このことを図10に示して説明する。ここでは、既存攻撃弾の場合で説明するが、既存敵機の場合でも同様である。
図10では、自機(30)・敵機(40)・既存攻撃弾のそれぞれの外形を内包する最小の円を、衝突判定に用いる自機(30)・敵機(40)・既存攻撃弾の形状と定義し、衝突判定円を、中心を既存攻撃弾の中心〔既存攻撃弾の形状の中心である。〕とし、半径を(既存攻撃弾の形状の半径)+(自機の形状の半径)とする。図10では、衝突判定円の半径は、丁度、正方形の升目の一辺に等しいとしている。
時点1では、格子(50)の右上の隅に既存攻撃弾の位置座標(あるいは看做し位置座標)があると予測されるとする〔図10(a)参照〕。このとき、衝突判定円内に位置する升目(1,7)のC(s,t)の値を0にする。但し、この場合では、もともと升目(1,7)のC(s,t)の値は0であるからリセットする必要はない。なお、「衝突判定円内に位置する升目」は、衝突判定円内に完全に内包される升目、および、升目の一部分が衝突判定円内に含まれる升目である。
時点2では、升目(3,5)の右上の隅に既存攻撃弾の位置座標(あるいは看做し位置座標)があると予測されるとしている〔図10(b)参照〕。既述のとおり各攻撃弾は、敵機から発射される際に決定された速度を発射後において維持することから各時点での位置座標を予測可能である。例えば、時点t(=0)での或る既存攻撃弾の位置を(Xb(0),Yb(0))、その速度を(Vx(0),Vy(0))、時点tでの当該既存攻撃弾の位置を(Xb(t),Yb(t))とすれば、(Xb(t),Yb(t))=(Xb(0)+Vx(0)×t×ΔT,Yb(0)+Vy(0)×t×ΔT)の関係がある。図10(b)の例では、衝突判定円内に位置する升目(2,5)、(2,6)、(3,5)、(3,6)のC(s,t)の値を0にする。
以上のようにして順経路数計算部(142)は、現時点より後の各時点tにおける各升目のC(s,t)を順次に求め、最終的に時点nでの各升目のC(s,n)を求める。時点nにおける各升目のC(s,n)は、記憶部(20)に記憶される。ステップS2の処理の後、ステップS3の処理が行われる。
目標決定部(143)は、記憶部(20)から時点nにおける各升目のC(s,n)を取得し、C(s,n)が最大の升目sを特定する(ステップS3)。特定された升目sは、自機の向かう目標の升目となる。
もし、C(s,n)が同じ値の升目が存在したならば、それらのうちの1つの升目を升目sとして特定すればよい。あるいは、それらのうち最も画面中央に近い升目を升目sとして特定してもよい。
特定された升目sを識別する目標升目識別情報は、記憶部(20)に記憶される。このような目標升目識別情報としては、例えば、升目sの中心に位置座標でもよい。あるいは、本明細書において升目の位置を格子(50)の外部に割り当てた数字の組み合わせをもって表現するのと同様にして、格子を行列と見立てて行列の成分表示で升目を特定するならば、この成分を目標升目識別情報に用いてもよい。
自機行動決定部(144)は、逆経路数計算部(145)および行動決定部(146)で構成されており、ステップS3の処理に続いて以下に説明する処理を行う。
逆経路数計算部(145)は、記憶部(20)から識別情報を取得し、目標の升目sを起点として、時点を減少させながら逐次に各時点での各升目のCb(s,t)を求める(ステップS4)。この求め方はステップS1およびステップS2の処理とほぼ同様である。
この段階では、起点となる升目が升目sに特定されているので、初期値として、升目sを除く各升目に数字0が割り当てられ、升目sに1が割り当てられる。
そして、現時点より前の各時点tにおける各升目のCb(s,t)を求めるが、この求め方でステップS2の処理と異なるのは、式(1)ではなく式(2)によって求める点にある。
Figure 0004976771
また、逆経路数計算部(142)は、記憶部(20)から現時点における既存敵機の位置座標・速度および既存攻撃弾の位置座標・速度を取得し、時点nより前の各時点において既存敵機および/または既存攻撃弾と衝突可能性のある升目のCb(s,t)の値を0にすることもステップS2の処理と同様である。
さらに、自機が敵機をできる限り破壊することの考慮および自機の位置ができるだけ画面中央付近にあるための考慮を反映させるべく、各升目のCb(s,t)をCb(s,t)×As×Azに補正する。
Asについては、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にないときにCb(s,t)の値に乗じる定数値Asを1、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときにCb(s,t)の値に乗じる定数値Asを1よりも大の値とする。例えば、出願時点において流通している一般的なコンピュータであれば、演算処理装置の処理能力、記憶装置の記憶容量、プログラムの使用言語、実際のプログラムの記述の仕方などにもよるので一概には云えないが、nが15程度の値であればAsは例えば2とすればよい。
この例を図11示す。ここでは、一度に1つの攻撃弾を発射する場合で、且つ、自機が発射する攻撃弾の飛行経路が画面の縦に平行になっている場合を例とする。図11(a)では、時点tでの敵機の予測位置が(2,4)の升目に在るとする。また、時点tでの各升目のCb(s,t)は、図11(a)の各升目に記入された数値とする。このとき、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sは、網掛け部分に示した升目(3,4)、(4,4)、(5,4)、(6,4)、(7,4)である。なお、ここでは、敵機の予測位置のX座標値Xiが、時点tに自機が在るとされる升目sの横幅のX座標値の範囲に含まれるか否かに加え、画面上端から画面下端に向かって縦軸(Y軸)数値が増大するとして、敵機の予測位置の座標値Yiが、時点tに自機が在るとされる升目sの縦幅のY座標値の範囲の最小値よりも小であるか否かの判定をした。この判定が成立する升目が網掛け部分に示した升目である。従って、升目s=(3,4)、(4,4)、(5,4)、(6,4)、(7,4)のCb(s,t)をAs倍する。ここではAs=2として、As倍した後の時点tでの各升目のCb(s,t)を図11(b)に示す。
また、Azについては、既述のとおり、升目sの画面中央からの距離rを算出して、例えばF(r)=0.5×{1+exp(−r)}の小数点以下を切捨てた値としてもよい。勿論、F(r)=0.5×{1+exp(−r)}に適当な定数係数kを乗じた値の小数点以下を切捨てた値をAzとしてもよい。いずれにしてもF(r)を各升目ごとに求め、この値を各升目のCb(s,t)に乗じることで補正を行う。この例を図12に示す。時点tでの各升目のCb(s,t)は、図12(a)の各升目に記入された数値とする。また、図12(a)では、F(r)が、升目(7,1)で1、升目(5,1)、(6,1)、(7,2)、(7,3)で2、升目(6,2)で3、升目(5,2)、(6,3)で4、升目(5,3)で5になったとしている。そこで、できるだけ画面中央付近にあるための考慮に基づいて補正された時点tでの各升目のCb(s,t)は、図12(a)の各升目のCb(s,t)に、各升目のF(r)を乗じて得られ、この結果は図12(b)の各升目に記入された数値となる。
あるいは、格子の各升目に予め、画面中央に近い升目ほど大きく画面中央から離れる升目ほど小さい値Azを割り当てておいたマスキングデータを記憶部(20)に保存しておき、格子の各升目のCb(s,t)に適用するとしてもよい。この例を図13に示す。図13(a)は、7×7の格子において予めAzが固定して割り当てられたマスキングデータの一例を格子の各升目にAzを記入して示している。図13の記号×は、このマスキングデータを図13(b)に示す時点tでの各升目のCb(s,t)に適用することを示している。つまり、或る升目の補正後のCb(s,t)は、補正前の当該升目のCb(s,t)とマスキングデータの当該升目のAzとの積で得られ、具体例としては、升目s=(5,4)の補正後のCb(s,t)は、補正前の升目s=(5,4)のCb(s,t)=4とマスキングデータの升目s=(5,4)のAz=5との積で得られるから20となる。
以上のようにして逆経路数計算部(145)は、時点nより前の各時点tにおける各升目のC(s,t)を順次に求め、最終的に時点1での各升目のC(s,1)を求める。時点1における各升目のC(s,1)は、記憶部(20)に記憶される。ステップS4の処理の後、ステップS5の処理が行われる。
行動決定部(146)は、記憶部(20)から自機(30)の位置座標を取得し、自機(30)の位置座標によって現時点t(=0)で自機が存在する升目sを特定し、さらに記憶部(20)から、現時点t(=0)で自機が存在する升目sのCb(s,1)および升目sの周囲の升目のうち1処理単位時間で自機が升目sに移動可能な升目s′の各Cb(s′,1)を取得し、これらの値うち最大の値を有する升目sを特定する(ステップS5)。もし、同じ値の升目が存在したならば、それらのうちの1つの升目を升目sとして特定すればよい。自機は、この升目sに対して行動することになる。この例を図14に示す。図14では時点1における升目s=(4,4)のCb(s,1)とその周囲の升目s′のCb(s′,1)を示し、その他の升目の逆経路総数を略している。ここで升目(5,4)の逆経路総数が11で最大であるから、自機が時点1で升目(5,4)に居るように自機の行動制御がなされることになる。
特定された升目sを識別する行動升目識別情報は、記憶部(20)に記憶される。このような行動升目識別情報としては、例えば、升目sの中心に位置座標でもよい。あるいは、本明細書において升目の位置を格子(50)の外部に割り当てた数字の組み合わせをもって表現するのと同様にして、格子を行列と見立てて行列の成分表示で升目を特定するならば、この成分を行動升目識別情報に用いてもよい。
以上のようにして決定された升目sの行動升目識別情報は、記憶部(20)に一旦保存され、制御部(190)の制御の下、自機は、画面上で升目sに対して行動するように描画される。この処理の主体や処理方法は、従来と同様であるから説明を略する。
現時点tで、目標へ向かうような最適な行動が選択されるが、この行動の選択は、処理単位時間Δ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)十文字の動きの場合。 升目の四隅の角またはその中心のいずれかを中心とする衝突判定形状に含まれる升目は一意になることを説明する図。(a)升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち1つに看做した場合。(b)升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の四隅の角のうち1つに看做した場合。(c)升目が正方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合。(d)升目が縦に長い長方形の場合であり、かつ、攻撃弾の位置座標を当該位置座標が存在する升目の中心に看做した場合。 シューティングゲームのデモンストレーション用自機行動制御装置(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にリセットすることを説明する図。 自機が敵機をできる限り破壊することを考慮して、各升目のCb(s,t)を補正することを説明する図。(a)に示す各升目のCb(s,t)のうち、時点tで自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目s〔網掛け部分〕のCb(s,t)をAs(=2)倍して、(b)に示す網掛け部分のCb(s,t)に補正する。 自機の位置ができるだけ画面中央付近にあることを考慮して、各升目のCb(s,t)を、各升目の画面中央からの距離rに応じて補正することを説明する図。(a)に示す各升目のCb(s,t)に関数F(r)で得られたAzを乗じて、(b)に示す各升目のCb(s,t)に補正する。 自機の位置ができるだけ画面中央付近にあることを考慮して、各升目のCb(s,t)を、各升目の画面中央からの距離rに応じて補正することを説明する図。(a)に示すマスキングデータの各升目の値Azと(b)に示す各升目のCb(s,t)との積の演算を対応する升目同士で行ない、(c)に示す各升目のCb(s,t)に補正する。 現時点t(=0)で自機が存在する升目sのCb(s,1)および升目sの周囲の升目のうち1処理単位時間で自機が升目sに移動可能な升目s′のCb(s′,1)を例示する図。
符号の説明
1 シューティングゲームのデモンストレーション用自機行動制御装置
141 自機目標設定部 142 順経路数計算部
143 目標決定部 144 自機行動決定部
145 逆経路数計算部 146 行動決定部
190 制御部 20 記憶部

Claims (13)

  1. 自機目標設定手段と自機行動決定手段を備えたコンピュータが、画面上に自機と1つあるいは複数の敵機とが表示され、自機および敵機が行動しながら攻撃弾を発射するシューティングゲームのデモンストレーションで自機の行動制御を行うシューティングゲームのデモンストレーション用自機行動制御方法であって、
    上記自機目標設定手段が、自機の行動を決定するべき現時点tにおいて、敵機が現時点tより過去の時点で発射した攻撃弾の位置およびその速度、敵機の位置およびその速度、並びに現時点の自機の位置に基づき、画面を格子状に分割した格子の升目であって現時点tで自機が存在する升目sを起点として、現時点tより後の時点nで、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目に到達しえる経路総数(以下、「順経路総数」という。)を各升目ごとに求め、順経路総数が最大の升目sを目標として設定する自機目標設定ステップと、
    上記自機行動決定手段が、敵機が現時点tより過去の時点で発射した攻撃弾の位置およびその速度、敵機の位置およびその速度に基づき、上記自機目標設定ステップにおいて目標とされた升目sを起点として、時点nよりも前の時点t+ΔTで、上記格子の各升目において、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目に到達しえる経路総数(以下、「逆経路総数」という。)を各升目ごとに求め、上記升目sの逆経路総数および上記升目sの周囲の升目のうち1処理単位時間ΔTで自機が升目sに移動可能な升目s′の各逆経路総数のうち、最大の逆経路総数を有する升目に対して行動することを決定する自機行動決定ステップと
    を有することを特徴とするシューティングゲームのデモンストレーション用自機行動制御方法。
  2. 自機が存在する升目Sから1処理単位時間ΔTで移動可能な升目は、升目Sに接して升目Sを取り囲む升目の全部または一部であるとし、
    上記自機目標設定ステップは、
    現時点tより後の時点nで、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目sに到達しえる順経路総数C(s,n)を、
    上記升目sの順経路総数の初期値を1、その他の升目の順経路総数の初期値を0として設定し、現時点tに自機が存在する升目sから現時点より後の或る時点tにおける或る升目sまでの順経路総数C(s,t)を、升目sを取り囲む升目のうち1処理単位時間ΔTで自機が升目sに移動可能な升目s′の時点t−ΔTにおける順経路総数C(s′,t−ΔT)の総和〔但し、s′に関する総和である。〕と升目sの時点t−ΔTにおける順経路総数C(s,t−ΔT)との和で求め、さらに、時点tにおいて升目sが、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置を含む升目および当該各位置から所定の距離内に位置する升目のいずれかに該当する場合には順経路総数C(s,t)を0に設定するとして、各時点tでの各升目の順経路総数C(s,t)を順次に求めることで時点nでの各升目の順経路総数C(s,n)を求めるものである
    ことを特徴とする請求項1に記載のシューティングゲームのデモンストレーション用自機行動制御方法。
  3. 上記自機目標設定ステップにおいて順経路総数C(s,t)が0に設定される、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置を含む升目および当該各位置から所定の距離内に位置する升目を、
    敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置を含む升目の四隅の角またはその中心のいずれか1つの位置から所定の距離内に位置する升目とする
    ことを特徴とする請求項2に記載のシューティングゲームのデモンストレーション用自機行動制御方法。
  4. 自機が存在する升目Sから1処理単位時間ΔTで移動可能な升目は、升目Sに接して升目Sを取り囲む升目の全部または一部であるとし、
    上記自機行動決定ステップは、
    時点nよりも前の時点t+ΔTで、上記格子の各升目において、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目sに到達しえる逆経路総数Cb(s,t+ΔT)を、
    上記自機目標設定ステップにおいて目標とされた升目sの逆経路総数の初期値を1、その他の升目の逆経路総数の初期値を0として設定し直し、上記自機目標設定ステップにおいて目標とされた升目sから時点nより前の或る時点tにおける或る升目sまでの逆経路総数Cb(s,t)を、升目sを取り囲む升目のうち1処理単位時間ΔTで自機が升目sに移動可能な升目s′の時点t+ΔTにおける逆経路総数Cb(s′,t+ΔT)の総和〔但し、s′に関する総和である。〕と升目sの時点t+ΔTにおける逆経路総数Cb(s,t+ΔT)との和で求め、さらに、時点tにおいて升目sが、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置を含む升目および当該各位置から所定の距離内に位置する升目のいずれかに該当する場合には逆経路総数Cb(s,t)を0に設定するとして、各時点tでの各升目の逆経路総数Cb(s,t)を順次に求めることで時点t+ΔTでの各升目の逆経路総数Cb(s,t+ΔT)を求めるものである
    ことを特徴とする請求項1から請求項3のいずれかに記載のシューティングゲームのデモンストレーション用自機行動制御方法。
  5. 各時点tで、自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sの逆経路総数Cb(s,t)を、その他の升目の逆経路総数に比して相対的に増大させる
    ことを特徴とする請求項4に記載のシューティングゲームのデモンストレーション用自機行動制御方法。
  6. 各時点tで、升目sの画面中央からの距離rを単調減少関数に入力して得られた結果、または、升目sの画面中央からの距離rを単調減少関数に入力して得られた結果を整数値化したものを、升目sの逆経路総数Cb(s,t)に乗じる
    ことを特徴とする請求項4に記載のシューティングゲームのデモンストレーション用自機行動制御方法。
  7. 各時点tで、自機が升目sに在る場合に敵機が自機の攻撃ライン上にあるときの升目sの逆経路総数Cb(s,t)を、その他の升目の逆経路総数に比して相対的に増大させ、さらに、この相対的に増大させた逆経路総数Cb(s,t)に、升目sの画面中央からの距離rを単調減少関数に入力して得られた結果、または、升目sの画面中央からの距離rを単調減少関数に入力して得られた結果を整数値化したもの、を乗じる
    ことを特徴とする請求項4に記載のシューティングゲームのデモンストレーション用自機行動制御方法。
  8. 上記自機行動決定ステップにおいて逆経路総数Cb(s,t)が0に設定される、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置を含む升目および当該各位置から所定の距離内に位置する升目を、
    敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置を含む升目の四隅の角またはその中心のいずれか1つの位置から所定の距離内に位置する升目とする
    ことを特徴とする請求項4から請求項7のいずれかに記載のシューティングゲームのデモンストレーション用自機行動制御方法。
  9. 敵機と攻撃弾の少なくとも何れかが存在すると予測される位置を含む升目の四隅の角のうちいずれか1つの位置とする場合に、敵機または攻撃弾の位置を表す基準点から最も近い角を選択する
    ことを特徴とする請求項3または請求項8に記載のシューティングゲームのデモンストレーション用自機行動制御方法。
  10. 升目の短辺が、攻撃弾あるいは敵機の形状の指標となる長さと、自機の形状の指標となる長さとの和である基準長の整数分の1以下となる
    ことを特徴とする請求項1から請求項9のいずれかに記載のシューティングゲームのデモンストレーション用自機行動制御方法。
  11. 画面上に自機と1つあるいは複数の敵機とが表示され、自機および敵機が行動しながら攻撃弾を発射するシューティングゲームのデモンストレーションで自機の行動制御を行うシューティングゲームのデモンストレーション用自機行動制御装置であって、
    自機の行動を決定するべき現時点tにおいて、敵機が現時点tより過去の時点で発射した攻撃弾の位置およびその速度、敵機の位置およびその速度、並びに現時点の自機の位置に基づき、画面を格子状に分割した格子の升目であって現時点tで自機が存在する升目sを起点として、現時点tより後の時点nで、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目に到達しえる順経路総数を各升目ごとに求め、順経路総数が最大の升目sを目標として設定する自機目標設定手段と、
    敵機が現時点tより過去の時点で発射した攻撃弾の位置およびその速度、敵機の位置およびその速度に基づき、上記自機目標設定手段によって目標とされた升目sを起点として、時点nよりも前の時点t+ΔTで、上記格子の各升目において、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目に到達しえる逆経路総数を各升目ごとに求め、上記升目sの逆経路総数および上記升目sの周囲の升目のうち1処理単位時間ΔTで自機が升目sに移動可能な升目s′の各逆経路総数のうち、最大の逆経路総数を有する升目に対して行動することを決定する自機行動決定手段と
    を備えたことを特徴とするシューティングゲームのデモンストレーション用自機行動制御装置。
  12. 画面上に自機と1つあるいは複数の敵機とが表示され、自機および敵機が行動しながら攻撃弾を発射するシューティングゲームのデモンストレーションで自機の行動制御をコンピュータに行わせるシューティングゲームのデモンストレーション用自機行動制御プログラムであって、
    自機の行動を決定するべき現時点tにおいて、敵機が現時点tより過去の時点で発射した攻撃弾の位置およびその速度、敵機の位置およびその速度、並びに現時点の自機の位置に基づき、画面を格子状に分割した格子の升目であって現時点tで自機が存在する升目sを起点として、現時点tより後の時点nで、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目に到達しえる経路総数(以下、「順経路総数」という。)を各升目ごとに求め、順経路総数が最大の升目sを目標として設定する自機目標設定処理と、
    機が現時点tより過去の時点で発射した攻撃弾の位置およびその速度、敵機の位置およびその速度に基づき、上記自機目標設定処理において目標とされた升目sを起点として、時点nよりも前の時点t+ΔTで、上記格子の各升目において、敵機と攻撃弾の少なくとも何れかが存在すると予測される各位置に対して自機が一定以内の距離に近づかずに升目に到達しえる経路総数(以下、「逆経路総数」という。)を各升目ごとに求め、上記升目sの逆経路総数および上記升目sの周囲の升目のうち1処理単位時間ΔTで自機が升目sに移動可能な升目s′の各逆経路総数のうち、最大の逆経路総数を有する升目に対して行動することを決定する自機行動決定処理と
    をコンピュータに行わせることを特徴とするシューティングゲームのデモンストレーション用自機行動制御プログラム。
  13. 請求項12に記載のプログラムを記録した、コンピュータに読み取り可能な記録媒体。
JP2006202019A 2006-07-25 2006-07-25 シューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体 Active JP4976771B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006202019A JP4976771B2 (ja) 2006-07-25 2006-07-25 シューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006202019A JP4976771B2 (ja) 2006-07-25 2006-07-25 シューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体

Publications (2)

Publication Number Publication Date
JP2008023243A JP2008023243A (ja) 2008-02-07
JP4976771B2 true JP4976771B2 (ja) 2012-07-18

Family

ID=39114482

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006202019A Active JP4976771B2 (ja) 2006-07-25 2006-07-25 シューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体

Country Status (1)

Country Link
JP (1) JP4976771B2 (ja)

Also Published As

Publication number Publication date
JP2008023243A (ja) 2008-02-07

Similar Documents

Publication Publication Date Title
US8337284B2 (en) Game apparatus and storage medium having game program stored therein
KR102539606B1 (ko) 가상 객체의 이동을 제어하기 위한 방법과 장치, 및 단말기와 저장 매체
CN112774201B (zh) 一种虚拟角色掩蔽方法、装置、计算机设备及存储介质
US7775867B2 (en) Storage medium storing a game program, game apparatus, and game control method
US8167718B2 (en) Storage medium storing game program, game apparatus, and game control method
JP7170397B2 (ja) プログラム、画像処理方法、及び画像処理装置
US20160023102A1 (en) Game providing device
US12434145B2 (en) Controlling a virtual vehicle using auxiliary control function
CN111481930B (zh) 虚拟对象控制方法、装置、计算机设备和存储介质
US8271228B2 (en) Trace information processing device, trace information processing method, information recording medium, and program
JP2000308759A (ja) ビデオゲームのキャラクタを制御する方法、ビデオゲーム装置、及び記録媒体
US8902185B2 (en) Scrolling screen apparatus, method for scrolling screen, and game apparatus
KR102208894B1 (ko) 가상 현실 장면에서 패스워드를 입력하는 방법 및 디바이스
JP7772964B2 (ja) スキルインジケーターの表示方法及び装置、電子機器及び記憶媒体
JP7838086B2 (ja) カードリリース方法、装置、機器、記憶媒体、及びプログラム
KR102673556B1 (ko) 6자유도 모션플랫폼에 기반한 가상 시뮬레이션 수행 시스템
JP4976771B2 (ja) シューティングゲームのデモンストレーション用自機行動制御方法、その装置、そのプログラムおよびその記録媒体
JP3747050B1 (ja) プログラム、情報記憶媒体、及び画像生成システム
JP4804240B2 (ja) シューティングゲームの敵機攻撃制御方法、その装置、そのプログラム及びその記録媒体
Debenham New algorithms for computing field of vision over 2D grids
CN115814418A (zh) 一种交互方法、装置、计算机设备及存储介质
US20240325898A1 (en) Systems and methods for dynamically modifying hit zones on a display screen device
JP4996267B2 (ja) 敵機行動制御方法、装置、プログラム及びその記録媒体
JP7660441B2 (ja) 情報処理装置、プログラム、及びゲーム画像生成方法
JP2006065647A (ja) 画像処理プログラムおよび画像処理装置

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 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110818

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110905

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: 20120403

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: 20120413

R150 Certificate of patent or registration of utility model

Ref document number: 4976771

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150420

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