敵機行動制御方法、装置、プログラム及びその記録媒体
【課題】敵機の動作をより多彩にする。
【解決手段】敵機はA(Aは任意の自然数とする。)種類の行動a(a=1,…,A)に従って移動するものとし、選択された行動によって敵機が移動を始める時刻tをt=0とする。敵機の行動aと時刻t=nT(Tは行動単位時間、n=1,…,N、Nは任意の自然数とする。)のすべての組合せについて、敵機が行動aに従って移動する場合の、時刻tにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する。敵機が行動aに従って移動する場合の、すべての又は一部の時刻tにおける上記混合値を加算した値を、敵機の各行動aごとに求める。上記加算した値を最大にする敵機の行動aを、敵機の行動とする。
【解決手段】敵機はA(Aは任意の自然数とする。)種類の行動a(a=1,…,A)に従って移動するものとし、選択された行動によって敵機が移動を始める時刻tをt=0とする。敵機の行動aと時刻t=nT(Tは行動単位時間、n=1,…,N、Nは任意の自然数とする。)のすべての組合せについて、敵機が行動aに従って移動する場合の、時刻tにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する。敵機が行動aに従って移動する場合の、すべての又は一部の時刻tにおける上記混合値を加算した値を、敵機の各行動aごとに求める。上記加算した値を最大にする敵機の行動aを、敵機の行動とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シューティングゲームにおける敵機の行動を制御するための方法、装置、プログラム及びその記録媒体に関する。
【背景技術】
【0002】
シューティングゲームの処理方法、特に敵機の動作を制御する方法としては、自機の位置を考慮しないアルゴリズム、例えば、自機の位置とは無関係に敵機が一定方向に下降し続けるアルゴリズムや、自機の位置とは無関係に敵機が静止し続けるアルゴリズムを採用する方法があった。また、自機の位置を考慮するアルゴリズムとしては、例えば、自機の位置に近づくように敵機が動くアルゴリズムや、常に自機との位置を一定距離・方向に保つように敵機が動くアルゴリズムがあった。
また、敵機の移動を制御する技術ではないが、敵機の攻撃弾発射アルゴリズムに関する従来技術として、非特許文献1に記載された技術がある。
【非特許文献1】川野洋、「シューティングゲームの敵機攻撃弾発射アルゴリズムに関する考察」、社団法人情報処理学会研究報告[ゲーム情報学]、2006年6月30日、vol.2006、No.70,p. 61―68
【発明の開示】
【発明が解決しようとする課題】
【0003】
従来技術による敵機の行動制御アルゴリズムは、単純なものに限られている。その結果、敵の攻撃回避に必要なプレイヤーの自機操作技術は、多くのシューティングゲームにおいて共通しており、従来技術による敵機の行動制御アルゴリズムを用いたシューティングゲームは、ユーザに飽きられやすいという問題があった。
【課題を解決するための手段】
【0004】
敵機はA(Aは任意の自然数とする。)種類の行動a(a=1,…,A)に従って移動するものとし、選択された行動によって敵機が移動を始める時刻tをt=0とする。混合値計算手段が、敵機の行動aと時刻t=nT(Tは行動単位時間、n=1,…,N、Nは任意の自然数とする。)のすべての組合せについて、敵機が行動aに従って移動する場合の、時刻tにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する。加算手段が、敵機が行動aに従って移動する場合の、すべての又は一部の時刻tにおける上記混合値を加算した値を、敵機の各行動aごとに求める。敵機移動速度決定手段が、上記加算した値を最大にする敵機の行動aを、敵機の行動とする。
【発明の効果】
【0005】
敵機の行動パターンが多彩となり、ゲーム性が向上する。また、敵機行動パラメータの値を変えることにより、シューティングゲームのゲームの難易度の調整を多面的に行うことができる。
【発明を実施するための最良の形態】
【0006】
[シューティングゲームの説明]
図5に、本発明の処理の対象となるシューティングゲームを例示する。画面上には、自機1’と自機1’の攻撃弾3’、敵機2’と敵機2’の攻撃弾4’が表示される。攻撃弾3’、敵機2’、攻撃弾4’は、複数存在していても良い。敵機2’が複数存在している場合には、それらの敵機にはそれぞれ異なる番号i(i=1…I)が付けられているものとする。同様に、敵機の攻撃弾4’が複数存在している場合には、それらの敵機の攻撃弾4’にはそれぞれ異なる番号j(j=1…J)が付けられているものとする。また、自機1’、敵機2’、攻撃弾3’、攻撃弾4’は、X軸とY軸で構成される2次元の平面上に位置するものとする。
【0007】
プレイヤーは、自機1’を操作して、敵機2’と闘う。プレイヤーは、一回の操作で、W種類の移動速度(方向と速さ)で、行動単位時間Tだけ自機を移動させることができる。自機1’が取り得るW種類の移動速度(Vxs(w),Vys(w))は予め決められており、それぞれの移動速度(Vxs(w),Vys(w))には、異なる移動速度番号w(w=1,…,W)が付けられているものとする。以下では、移動速度番号wを選択する行動のことを行動wという。また、プレイヤーは、W種類の速度による移動と同時に、敵機2’を攻撃するための攻撃弾3’を発射する操作をすることができる。攻撃弾3’は、予め定められた軌跡に従って移動をする。この攻撃弾3’の描く軌跡を、自機の射線と呼ぶ。
【0008】
なお、例えば、W=9のとき、
(Vxs(1),Vys(1))=(V,0)
(Vxs(2),Vys(2))=(V,V)
(Vxs(3),Vys(3))=(0,V)
(Vxs(4),Vys(4))=(−V,V)
(Vxs(5),Vys(5))=(−V,0)
(Vxs(6),Vys(6))=(−V,−V)
(Vxs(7),Vys(7))=(0,−V)
(Vxs(8),Vys(8))=(V,−V)
(Vxs(9),Vys(9))=(0,0)
とすることができる。
【0009】
敵機2’は、移動速度(Vxe(a),Vye(a))で移動することができる。敵機2’が取り得るA種類の移動速度(Vxe(a),Vye(a))は予め定められており、それぞれの移動速度(Vxe(a),Vye(a))には、異なる移動速度番号a(a=1,…,A)が付けられているものとする。敵機2’は、自機を攻撃するために攻撃弾4’を任意の速度(方向と速さ)で発射することができる。発射された攻撃弾4’は、所定の移動速度(Vxbj,Vybj)で移動する。
【0010】
自機1’が、敵機2’及び敵機2’が発射する攻撃弾4’と衝突した場合には、自機1’は破壊され、そこでゲームオーバーとなる。逆に、自機1’の攻撃弾3’が敵機2’に衝突した場合には、敵機2’は破壊される。自機1’の攻撃弾3’によりすべての敵機2’を破壊した場合には、ユーザは、そのゲームに勝利することになる。
【0011】
ゲーム画面は格子に分割されており、その格子の構成単位のことを升目というものとする。例えば、画面の一番左下の升目の座標を(0,0)とし、その(0,0)の升目のX個だけ右に位置し、かつ、Y個だけ上に位置する升目の座標を(X,Y)とすることができる。ここで、XとYは0以上の整数である。
【0012】
なお、升目の一辺の長さSが、その辺に平行な方向に進む自機の速さVに行動単位時間Tをかけた値になるように、すなわち、S=VTとなるように、ゲーム画面を格子に分割するとよい。このように升目の一辺の長さを設定することにより、ある升目sに存在する自機が、どの移動速度(Vxs(w),Vys(w))に従って移動しても、行動単位時間T後には、必ずある升目sに100%の確率で存在することになる。このため、計算負担を軽減することができる。
【0013】
また、升目の一辺の長さが大きいと、本発明の処理が荒くなり、適切に自機を制御することができない場合がある。したがって、升目の一辺の長さSが、自機の形状に内接する円の直径と、敵機の攻撃弾の形状に内接する円の直径の和の半分の長さの3分の1以下の値になるように、行動単位時間T及び自機の速さVを決定すると良い。
大文字で表現された座標(X,Y)は、升目の座標である。一方、小文字で表現された座標(x,y)は、ゲーム画面上での実数表現による座標位置を表す。任意の座標(x,y)は、その座標(x,y)を含む升目の座標(X,Y)に変換することができるものとする。
【0014】
[第一実施形態]
敵機がA(Aは任意の整数)種類の行動の中からある行動aに従って移動した場合の各時刻t=nT(Tは行動単位時間であり、n=1,…,N、Nは求める精度とハードウェアの性能に依存するがおよそ10〜20。)における敵機が自機を破壊する確率である敵機の自機破壊確率として、各時刻tにおいて自機が升目sに存在する確率である自機存在確率Ps(t,s)を用いた場合を例に挙げて説明をする。敵機の自機破壊確率として、自機存在確率Ps(t,s)を用いることができるのは、定義より、敵機が自機に接触した場合には、自機は破壊され、また、敵機と自機の距離が近いほど、敵機と自機が接触することにより自機が破壊される可能性が高くなり、かつ、敵機から発射される攻撃弾によって自機が破壊される可能性が高くなるためである。以下では、自機存在確率Ps(t,s)のことを、敵機の自機破壊確率Ps(t,s)と呼ぶことがある。
【0015】
また、敵機がA種類の行動の中からある行動aに従って移動した場合の各時刻tにおける自機が敵機を破壊する確率である自機の敵機破壊確率として、上記行動aに従って移動した敵機が自機の射線上にいる各時刻tにおける確率Psx(t,s)を用いた場合を例に挙げて説明をする。自機の敵機破壊確率として、射線上存在確率Psx(t,s)を用いることができるのは、敵機が自機の射線上にいる場合には、敵機が破壊される可能性が高いためである。以下では、射線上存在確率Psx(t,s)を、自機の敵機破壊確率Psx(t,s)と呼ぶことがある。
【0016】
さらに、本実施形態では、敵機の行動は、敵機が取ることができる移動速度番号に対応しており、敵機が行動として、A(Aは任意の自然数とする。)種類の移動速度番号の中からある移動速度番号a∈Aを選択した場合には、敵機は、その移動速度番号aに対応して予め定められた移動速度ベクトル(Vxe(a),Vye(a))に従って行動単位時間Tだけ移動する動作を、すべての時刻t=nT(n=1,…,N、Nは任意の自然数である。)において行うと仮定する。
【0017】
以下では、選択された移動速度によって自機が移動を始める時刻tをt=0とする。
[装置構成]
図1に、本発明による敵機行動制御装置1000の機能構成を例示する。
敵機行動制御装置1000は、例えば、記憶部1、混合値計算部2、加算部3、敵機移動速度決定部4(又は、敵機行動決定部4)、敵機行動パラメータ決定部5を有する。
記憶部1は、例えば、敵機の自機破壊確率記憶部11、自機の敵機破壊確率記憶部12、敵機位置記憶部13を有する。混合値計算部2は、例えば、記憶部21、制御部22を有する。加算部3は、例えば、加算部31、…、加算部3a、…、加算部3Aを有する。敵機移動速度決定部4は、最大値検出部41を有する。また、図8に示すように、敵機行動パラメータ決定部5は、例えば、距離計算部52、判定部53、記憶部54、座標比較部55を有する。
【0018】
図3を参照して、敵機行動制御装置1000の処理を説明する。図3は、敵機行動制御装置1000の処理の流れを例示する図である。
<ステップS0>
記憶部1(図1参照)の敵機の自機破壊確率記憶部11には、各時刻tにおいて自機が各升目sに存在する確率Ps(t,s)が予め計算されて格納される。Ps(t,s)の計算方法については後述する。
また、記憶部1の自機の敵機破壊確率記憶部12には、敵機が行動として移動速度番号aを選択した場合の敵機が自機の射線上にいる各時刻tにおける確率Psx(t,s)が予め計算されて格納される。Psx(t,s)の計算方法については後述する。
【0019】
また、記憶部1の敵機位置記憶部13には、敵機が行動として移動速度番号aを選択した場合の各時刻tにおける敵機が存在する升目sei(t,a)が予め計算されて格納される。sei(t,a)の計算方法については後述する。
さらに、敵機行動パラメータであるαとβが、混合値計算部2の記憶部21に格納される。αとβはそれぞれ任意の実数である。
【0020】
<ステップS1>
混合値計算部2は、敵機がA(Aは任意の整数)種類の移動速度の中から、ある移動速度番号aを行動として選択した場合の、敵機が自機を破壊する確率であるPs(t,sei(t,a))と、自機が敵機を破壊する確率であるPsx(t,sei(t,a))と、予め定められた敵機行動パラメータα,βとを用いて、下記の式により定まる混合値F(t,sei(t,a))を計算して加算部3に出力する。
F(t,sei(t,a))=αPs(t,sei(t,a))+βPsx(t,sei(t,a)) …(1)
F(t,s)=αPs(t,s)+βPsx(t,s)で定義される混合値F(t,s)は、時刻tにおいて升目sに位置する敵機が、自機に破壊されずに自機を破壊することができる可能性を示す指標である。
【0021】
混合値計算部2は、移動速度番号aと時刻tのすべての組合せについて、上記混合値F(t,sei(t,a))を計算する。図4を参照して、混合値F(t,sei(t,a))の計算方法について説明をする。図4は、ステップS1の処理の流れを例示する図である。
【0022】
まず、混合値計算部2の制御部22は、記憶部21に格納されたaとtの値をそれぞれa=1,t=Tと初期設定する(ステップS11)。
混合値計算部2は、敵機が時刻t=0において行動として移動速度番号aを選択した場合に時刻tにおいて敵機が存在する升目sei(t,a)を記憶部1の敵機位置記憶部13から読み出す(ステップS12)。
【0023】
混合値計算部2は、上記読み出された升目sei(t,a)に対応した、敵機の自機破壊確率Ps(t,sei(t,a))と、自機の敵機破壊確率Psx(t,sei(t,a))とを記憶部1の敵機の自機破壊確率記憶部11と自機の敵機破壊確率記憶部12とからそれぞれ読み出す(ステップS13)。
混合値計算部2は、例えば、上記(1)式により、自機の敵機破壊確率Ps(t,sei(t,a))と敵機の自機破壊確率Psx(t,sei(t,a))とを記憶部21から読み出した敵機行動パラメータαとβを用いて重み付き加算をすることにより混合して混合値F(t,sei(t,a))を計算して、加算部3に出力する(ステップS14)。
【0024】
制御部22は、記憶部21から読み出したtと、N×Tとを比較する(ステップS15)。t≧N×Tでない場合には、tを行動単位時間Tだけインクリメントして(ステップS12)、ステップS12に戻って処理を行う。t≧N×Tである場合には、aと、敵機の移動速度番号の種類Aとを比較する(ステップS17)。a≧Aでない場合には、aを1だけインクリメントして、ステップS12に戻って処理を行う(ステップS18)。a≧Aである場合には、ステップS1の処理を終える。
このようにして、混合値計算部2は、移動速度番号aと時刻tの各組合せごとの混合値F(t,sei(t,a))を計算して、その計算結果を加算部3に出力する。
【0025】
<ステップS2>
加算部3は、敵機が時刻t=0において行動として移動速度番号aを選択した場合の、すべての時刻t=nT(n=1,…,N)における混合値F(t,s)を加算した値を、各移動速度番号aごと(すなわち、各行動ごと)に求めて、敵機移動速度決定部4に出力する。すなわち、加算部3は、Σt=1t=NTF(t,sei(t,a))を計算して、各移動速度番号aごとの混合値F(t,sei(t,a))の加算値を求める。
【0026】
図1に例示した敵機行動制御装置1000の加算部3においては、加算部31がΣt=1t=NTF(t,sei(t,1))を計算し、加算部32がΣt=1t=NTF(t,sei(t,2))を計算し、…、加算部3aがΣt=1t=NTF(t,sei(t,a))を計算し、…、加算部3AがΣt=1t=NTF(t,sei(t,1))を計算して、その計算結果をそれぞれ敵機移動速度決定部4に出力している。
【0027】
<ステップS3>
敵機移動速度決定部4は、各移動速度番号aごとの混合値の加算値Σt=1t=NTF(t,sei(t,a))を比較して、上記加算値を最大にする移動速度番号aを選択して出力する。具体的には、敵機移動速度決定部4の最大値検出部41は、各移動速度番号aごとの混合値の加算値Σt=1t=NTF(t,sei(t,a))の最大値を検出し、その最大値に対応する移動速度番号aを出力する。図示していない敵機動作処理部は、上記選択された移動速度番号aに基づいて行動単位時間Tだけ敵機を移動させる。
【0028】
敵機が複数いる場合には、各敵機について上記処理を繰り返し行う。その際、敵機の自機破壊確率Ps(t,s)と、自機の破壊確率Psx(t,s)と、敵機の位置sei(t,s)とを異なる敵機ごとに再度計算するのではなく、ある敵機について一度計算された敵機の自機破壊確率Ps(t,s)と、自機の破壊確率Psx(t,s)と、敵機の位置sei(t,s)とを他の敵機についての処理に再利用すると計算効率が良い。
【0029】
** 敵機行動パラメータについて **
敵機行動パラメータの値を変更することにより、敵機の行動パターンをより攻撃的なものにするか、より防御的なものにするか等を連続的に調整することができる。さらに、上記実施形態において、記憶部21に格納した敵機行動パラメータαとβの値を変更することにより、敵機の行動パターンを例えば以下のように変えることができる。
【0030】
(1)α=0,β>0とすると、敵機は自機の射線上に吸い込まれるように寄ってくる(自殺犬死パターン)。
(2)α>0,β=0とすると、敵機は、自機の近くに移動することを最優先とするが、自機により敵機が破壊されることは考慮しない(神風パターン)。敵機が自身の安全性を考慮しないで攻めてくるので一見ゲームとしては厳しいが、自機が敵機を破壊することが、自機の安全行動につながり、さらには得点の最大化にもつながる。
(3)α=0,β<0とすると、敵機は、自機の射線上から逃げることのみを重視するようになり、自機への攻撃は考慮しない(安全重視臆病パターン)。敵機を撃墜することができない代わりに、敵機からの攻撃のプレッシャーは少ない。
(4)α>0,β<0とすると、敵機は、自機の近くに移動しながらも、自機の射線上に入らない行動をする(リスク考慮パターン)。自機が安全行動をとったとしても、そのときの自機射線上には敵機がいない可能性が高く、自機は攻撃弾との接触する可能性が高い位置に移動しなければ敵機を効果的に破壊することができない。このため、このように敵機行動パラメータを定めると、ハイリスク、ハイリターンの状況をシューティングゲーム内に作ることができる。
【0031】
また、敵機の位置に応じて、敵機行動パラメータの値を変えてもよい。これにより、敵機により複雑な動作、戦略的な動作をさせることができ、ゲーム性が増すというメリットがある。図6と図7を参照して、敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を以下に示す。図6と図7は、敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を表す図であり、点線で示した円は、自機から所定の距離rだけ離れた位置を意味する。
【0032】
図6に示すように、敵機が自機の正面にいて、かつ、敵機と自機が所定の距離R(Rは任意の実数)以上離れている場合には、敵機は自機が発射した攻撃弾によって破壊される可能性がある。この場合には、αを任意(好ましくは、α>0)とし、β<0として、上記実施形態に示した処理を行う。これにより、敵機に対して、自機に破壊されにくい行動を取らせることができる。ここで、敵機が自機の正面にいるとは、自機の射線と垂直であり自機を通る直線に対して、敵機が自機の射線がある方の側にいることを意味する。
【0033】
具体的には、例えば、敵機行動パラメータ決定部5の座標比較部55(図8参照。)が、敵機のy座標と自機のy座標とを比較する。また、距離計算部52が、自機と敵機の距離rを計算し、判定部53が求まった距離rと、記憶部54から読み出した所定の距離Rとを比較する。座標比較部55において敵機のy座標>自機のy座標と判断され、かつ、判定部53において距離r≧距離Rと判断された場合には、敵機行動パラメータ決定部5は、αを任意(好ましくは、α>0)、かつ、β<0の条件を満たす敵機行動パラメータαとβを、混合値計算部2の記憶部21に設定する。敵機行動パラメータ決定部5は、この判断処理を一定の時間間隔ごとに行う。敵機行動制御装置1000は、この敵機行動パラメータαとβに基づいて、上記した処理を行い敵機の動作を制御する。
【0034】
図7に示すように、敵機が自機の背後にいる場合には、自機の攻撃弾は敵機にはあたらない。この場合には、敵機に対して自機を攻撃させる行動パターンを取らせるとよい。すなわち、α>0、βを任意(好ましくは、β=0)として、上記実施形態に示した処理を行う。
【0035】
具体的には、例えば、敵機行動パラメータ決定部5の座標比較部55が、敵機のy座標と自機のy座標とを比較する。座標比較部55において、敵機のy座標<自機のy座標と判断された場合には、敵機行動パラメータ決定部5は、α>0、βを任意(好ましくは、β=0)の条件を満たす敵機行動パラメータαとβを、混合値計算部2の記憶部21に設定する。敵機行動パラメータ決定部5は、この判断処理を一定の時間間隔ごとに行う。敵機行動制御装置1000は、この敵機行動パラメータαとβに基づいて、上記した処理を行い敵機の動作を制御する。
このように敵機行動パラメータを様々な値に設定することにより、敵機の行動を自在に制御することができる。
【0036】
[第二実施形態]
上記実施形態は、ある行動に従って移動した敵機が各時刻t=nTにおいてある位置(升目)に100%の確率で存在すると仮定した場合の実施形態である。すなわち、上記実施形態においては、ある移動速度番号aに従って移動した敵機が位置する各時刻における升目が、sei(t,a)と一意に決まっていた。しかし、ある行動に従って移動した敵機がある位置に存在するかどうかを確率的に表した場合であっても本発明を適用することができる。すなわち、ある行動aに従って移動した敵機が時刻tにおいて升目sに存在する確率を、Pei(t,s,a)と確率的に表した場合であっても本発明を適用することができる。
【0037】
図2は、第二実施形態による敵機行動制御装置1001の機能構成を例示する図である。第二実施形態による敵機行動制御装置1001は、図2に示すように、混合値計算部2の代わりに混合値計算部2’を有している点と、記憶部1が敵機位置記憶部13の代わりに敵機存在確率記憶部14を有している点で第一実施形態による敵機行動制御装置1000と異なる。他の機能構成、処理については同様であるため、説明を省略する。
敵機存在確率記憶部14には、各行動aに従って移動した敵機が各時刻tにおいて各升目sに存在する確率Pei(t,s,a)が格納されているものとする。敵機存在確率Pei(t,s,a)の求め方については後述する。
【0038】
混合値計算部2’は、移動速度番号aと、時刻t=nTのすべての組合せについて、下記の式に基づいて混合値F(t,a)を計算する。
F(t,a)=ΣsPei(t,s,a)(αPs(t,s)+βPsx(t,s)) …(2)
加算部3において混合値F(t,a)は時間についての和が取られ、この和を最も大きくする移動速度番号aが敵機移動速度決定部4により選択され出力される。
画面を分割する格子の目が粗い場合には、敵機の位置の確率分布であるPei(t,s,a)に基づいて本発明を行う第二実施形態による敵機行動制御装置1001によって、敵機の行動をさらに精度良く制御することができる。
【0039】
[自機存在確率Ps(t,s)の求め方について]
上記実施形態において、行動aに従って移動する敵機が各時刻t=nTにおいて自機を破壊する確率の一例として用いた自機の存在確率Ps(t,s)の求め方について説明をする。Ps(t,s)は、時刻tにおいて敵機が升目(位置)sに存在する確率である。
図9に例示した自機存在確率計算部6は、時刻tにおける自機が升目s’に存在する確率Ps(t,s’)に基づいて、時刻tから行動単位時間T経過後の時刻t=t+Tにおける自機が升目sに存在する確率Ps(t+T,s)を求める。そして、この処理を繰り返すことによって、最終的に、自機存在確率計算部6は、各時刻t=nT(n=1…N)ごとに、自機が各升目sに存在している確率を求める。計算した確率Ps(t,s)は、記憶部61に格納される。
【0040】
時刻t=0における自機が位置する升目をs0とすると、自機が時刻t=0において升目s0に存在する確率Ps(0,s0)=1である。このPs(0,s0)=1が、記憶部61に格納されているものとする。
まず、自機存在確率計算部6は、次式を計算することによって、時刻tにおける自機が升目s’に存在する確率Ps(t,s’)に基づいて、t+Tにおける自機が升目sに存在する確率Ps(t+T,s)を求める。
Ps(t+T,s)=(1−max(Pbj(t+T,s)))Σw{Psel(w,t)・Σs’{Ptrs(s’,s,w))・Ps(t,s’)}} …(3)
ここで、Psel(w,t)は、時刻tにおいて自機が移動速度番号wを選択する確率である。例えば、自機が等しい確率で移動速度番号wを選択すると仮定して、Psel(w,t)=1/Wとすることができる。この他にも、ユーザが任意にPsel(w,t)の値を選択することができる。Psel(w,t)の値は予め設定され、記憶部61に格納されているものとする。
【0041】
Ptrs(s’,s,w)は、時刻tにおいて升目s’に存在する自機が、移動速度番号wの移動速度(Vxs(w),Vys(w))に従って行動単位時間Tだけ移動することによって、時刻t+Tにおいて升目sに存在している確率である。Ptrs(s’,s,w)の計算の仕方については後述する。
移動確率計算部62は、升目s’に存在している自機が、自機の移動速度番号wに対応した移動速度(Vxs(w),Vys(w))で行動単位時間Tだけ移動した結果、升目sに存在している確率Ptrs(s’,s,w)を計算する。
【0042】
積算部63は、上記計算されたPtrs(s’,s,w)と、記憶部61から読み出した自機が升目s’に存在している確率Ps(t,s’)との積Ptrs(s’,s,w)・Ps(t,s’)を求める。
このようにして、移動確率計算部62と積算部63は、すべての升目s’について上記Ptrs(s’,s,w)・Ps(t,s’)を計算する。
加算部64は、各升目s’ごとに上記計算されたPtrs(s’,s,w)・Ps(t,s’)を加算する。すなわち、Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を計算する。
【0043】
積算部65は、上記計算されたΣs’{Ptrs(s’,s,w)・Ps(t,s’)}と、記憶部10から読み出した、時刻tにおける自機が移動速度番号wを選択する確率Psel(w,t)との積Psel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を求める。
このようにして、移動確率計算部62と積算部63と加算部64と積算部65は、すべての自機が取り得る移動速度番号wについて上記Psel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を計算する。
【0044】
加算部66は、各移動速度番号wごとに求まった上記Psel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を加算する。すなわち、ΣwPsel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を計算する。
最大値抽出部69は、max(Pbj(t+T,s))を計算する。すなわち、敵機攻撃弾存在確率記憶部610から読み出した時刻t+Tにおいて敵機の攻撃弾が升目sに存在する各確率Pbj(t+T,s)(j=1,・・・,J)を比較して、最も大きい値を出力する。すなわち、すべてのj=1,・・・,JについてのPbj(t+T,s)を比較して最も大きい値を出力する。
【0045】
減算部60は、1から、上記計算されたmax(Pbj(t+T,s))を減算した値を計算する。
積算部67は、加算部66が計算したΣwPsel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}と、減算部60が計算した1−max(Pbj(t+T,s))との積を求める。
このようにして、1−max(Pbj(t+T,s))を乗算することにより、時刻t+Tにおいて敵機の攻撃弾が升目sに存在している場合には自機が破壊されたものとして、自機の存在確率Ps(t,s)を計算することができる。
【0046】
このようにして、自機存在確率計算部6は、時刻tにおける自機が升目sに存在する確率Ps(t,s)に基づいて、時刻t+Tにおける自機が升目sに存在する確率Ps(t+T,s)を計算する。
上記の処理をすべてのt(t=T,…,(n−1)T)について、tが小さい順に行い、各時刻ごとに自機が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて、自機が升目sに存在する確率を求める。
【0047】
なお、自機が、時刻t=0において自機が取っている行動を、時刻t=0から所定の時間長T2又は所定の時刻ステップn2だけ繰り返し取り続けると仮定して、自機の存在確率Ps(t,s)を求めてもよい。これは、シューティングゲームのプレイヤーは、方向指示レバーをある方向に行動単位時間Tを越える長い時間倒し続けることが多いこと、すなわち、連続する各時刻においてある方向に自機を移動する操作をし続けることが多いことを考慮したものである。上記した探索計算の量を少なくすることができるというメリットがある。
【0048】
次に、敵機攻撃弾存在確率記憶部610に予め格納されている時刻tにおいて敵機の攻撃弾jが升目sに存在する各確率Pbj(t,s)の求め方について説明をする。
図10に示す敵機攻撃弾存在確率計算部7は、時刻tにおける敵機の攻撃弾が升目s’に存在する確率Pbj(t,s’)に基づいて、時刻t+Tにおける敵機の攻撃弾が升目sに存在する確率Pbj(t,s)を求める。そして、敵機攻撃弾存在確率計算部7は、この処理を繰り返すことによって、最終的に、各時刻t=nT(n=1…N)ごとに、敵機の攻撃弾が升目sに存在している確率を求める。計算した確率Pbj(t,s)は、敵機攻撃弾存在確率記憶部610に格納される。
【0049】
具体的には、例えば、図10に示す敵機攻撃弾存在確率計算部7は、次式を計算することによって、時刻tにおける敵機の攻撃弾が升目s’に存在する確率Pbj(t,s’)に基づいて、時刻t+Tにおける敵機の攻撃弾が升目sに存在する確率Pbj(t,s)を求める。
Pbj(t+T,s)=Σs’{Ptrbj(s’,s)・Pbj(t,s’)} …(4)
ここで、Ptrbj(s’,s)は、時刻tにおいて升目s’に存在する敵機の攻撃弾が、所定の移動速度(Vxbj,Vybj)に従って行動単位時間Tだけ移動することによって、時刻t+Tにおいて升目sに存在している確率である。Ptrbj(s’,s)の計算の仕方については後述する。
【0050】
時刻t=0における敵機の攻撃弾の存在確率Pbj(0,s)は、例えば、時刻t=0における攻撃弾の座標(xbj,ybj)を含む升目s#についての敵機攻撃弾存在確率Pbj(0,s#)=1とし、他の升目についての敵機攻撃弾存在確率をPbj(0,s#)=0とする。また、(xbj,ybj)を中心とした升目sbjとゲーム画面を分割した格子を構成する各升目sと重なる部分の面積を計算する。そして、敵機の攻撃弾は、その重なった部分の面積に比例した確率Pbj(0,s)で、各升目sに存在しているものとしてもよい。この場合、例えば、敵機の攻撃弾の形状に内接する円の直径と、自機の形状に内接する円の直径との和の半分の値を、敵機の位置(xbj,ybj)を中心とした升目sbjの一辺の長さにすることができる。
【0051】
上記の処理をすべてのt(t=T,…,(n−1)T)について、tが小さい順に行い、各時刻ごとに敵機の攻撃弾が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて、敵機の攻撃弾が升目sに存在する確率を求める。これらの計算された確率は、敵機攻撃弾存在確率記憶部610に格納される。
【0052】
[射線上存在確率Psx(t,s)の求め方について]
次に、上記実施形態において、自機が升目sに位置する敵機を破壊することができる確率として用いた射線上存在確率Psx(t,s)の求め方について説明をする。Psx(t,s)は、升目sに存在する敵機が、自機の射線上に位置する確率である。敵機が升目xsに位置する場合、Psx(t,xs)は、次のように定義される。
Psx(t,xs)=(Σs∈xs*Ps(t,s))/num(xs*)
ここで、升目の集合xs*は、升目s∈xs*に位置する自機の射線上に、升目xsがある、という条件を満たすすべての升目sから構成される集合である。すなわち、xs*は、升目xsを通過する射線を有する自機が位置するすべての升目sの集合である。num(xs*)は升目の集合xs*を構成する升目の数である。
【0053】
例えば、自機の攻撃弾が画面の上(y軸の正方向)に向かって発射される場合には、升目の集合xs*は、升目xsとX座標が同じ升目であり、升目xsから下(Y軸の負方向)にある升目からの構成される集合ことであり、num(xs*)は、升目xsから下(Y軸の負方向)にある升目の数である。
なお、計算量を軽減する場合には、升目の集合xs*を、升目xsを通り、自機の射線と同じ傾きを持つ直線上に位置する升目から構成される集合と定義して上記Psx(t,xs)の計算をしてもよい。
【0054】
[敵機位置sei(t,a)及び敵機存在確率Pei(t,s,a)の求め方について]
敵機が時刻t=0において行動として移動速度番号aを選択して、この移動速度番号aに従って移動する敵機が各時刻t=nTにおいて存在する升目(位置)sei(t,a)と、敵機が時刻t=0において行動として移動速度番号aを選択して、この移動速度番号aに従って移動する敵機が各時刻t=nTにおいて各升目(位置)に存在する確率Pei(t,s,a)の求め方の一例を説明をする。
【0055】
まず、敵機位置sei(t,a)の求め方について説明をする。時刻t=0において敵機が存在する座標を(xei,yei)とする。敵機が行動である移動速度番号aを選択した場合、上記実施形態では敵機が各時刻t=nTにおいて移動速度番号aに従って行動単位時間Tだけ移動する動作を繰り返すため、各時刻tにおける敵機の座標は、(xei+Vxe(a)×t,yei+Vye(a)×t)で計算することができる。ここで、(Vxe(a),Vye(a))は、移動速度番号aに対応した移動速度ベクトルである。このとき、敵機位置sei(t,a)は、座標(xei+Vxe(a)×t,yei+Vye(a)×t)を含む升目となる。
【0056】
つぎに、第二実施形態で用いる敵機存在確率Pei(t,s,a)の求め方について説明をする。図11に示す敵機存在確率計算部8は、時刻tにおける敵機が升目s’に存在する確率Pei(t,s’,a)に基づいて、時刻t+Tにおける敵機が升目sに存在する確率Pei(t,s,a)を求める。そして、敵機存在確率計算部8は、この処理を繰り返すことによって、最終的に、各時刻t=nT(n=1…N)ごとに、敵機が升目sに存在している確率を求める。計算した確率Pei(t,s,a)は、敵機存在確率記憶部14に格納される。
【0057】
具体的には、例えば、図11に示す敵機存在確率計算部8は、次式を計算することによって、時刻tにおける敵機が升目s’に存在する確率Pei(t,s’,a)に基づいて、時刻t+Tにおける敵機が升目sに存在する確率Pei(t,s,a)を求める。
Pei(t+T,s,a)=Σs’{Ptrei(s’,s,a)・Pei(t,s’ ,a)} …(5)
ここで、Ptrei(s’,s,a)は、時刻tにおいて升目s’に存在する敵機が、所定の移動速度(Vxe(a),Vye(a))に従って行動単位時間Tだけ移動することによって、時刻t+Tにおいて升目sに存在している確率である。Ptrei(s’,s,a)の計算の仕方については後述する。
【0058】
時刻t=0における敵機の存在確率Pei(0,s,a)は、例えば、(xei,yei)を含む升目s#についての敵機存在確率Pei(0,s#,a)=1とし、他の升目についての敵機存在確率をPei(0,s#,a)=0とする。また、(xei,yei)を中心とした升目seiと、ゲーム画面を分割した格子を構成する各升目sと重なる部分の面積を計算し、敵機は、その重なった部分の面積に比例した確率で、各升目sに存在しているとしてもよい。例えば、敵機の形状に内接する円の直径と、自機の形状に内接する円の直径との和の半分の値を、敵機の位置(xei,yei)を中心とした升目seiの一辺の長さにすることができる。
【0059】
上記の処理をすべてのt(t=T,…,(n−1)T)について、tが小さい順に行い、各時刻ごとに敵機が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて、敵機が升目sに存在する確率を求める。これらの計算された確率は、敵機存在確率記憶部14に格納される。
【0060】
[移動確率Ptrs(s’,s,w)、Ptrbj(s’,s)、Ptrei(s’,s,a)の計算方法について]
以下、升目s’に存在する自機が移動速度番号wの移動速度(Vxs(w),Vys(w))に従って行動単位時間Tだけ移動することによって升目sに移動する確率Ptrs(s’,s,w)、升目s’に存在する敵機の攻撃弾が所定の移動速度(Vxej,Vyei)に従って行動単位時間Tだけ移動することによって升目sに移動する確率Ptrbj(s’,s)、升目s’に存在する敵機が敵機の移動速度番号aの移動速度(Vxe(a),Vye(a))に従って行動単位時間Tだけ移動することによって升目sに移動する確率Ptrei(s’,s,a)の求め方について説明する。
【0061】
まず、Ptrs(s’,s,w)の求め方について説明する。自機が移動速度番号wを選択して行動単位時間Tだけ移動した場合のx座標とy座標の変位量(dxs,dys)は、
dxs=Vxs(w)×T
dys=Vys(w)×T
である。自機が存在する升目s’を上記変位量(dxs,dys)だけ平行移動した升目をsdsとする。升目sdsと升目sが重なる面積の、升目s全体の面積に対する比率をPtrs(s’,s,w)とする。
【0062】
例えば、図12に示すように、升目sdsが、升目s1〜s9と重なったとする。ここで、各升目に記載された0から1までの数値は、升目sdsとその升目が重なる面積の、その升目の面積に対する比率を表わしたものである。このとき、Ptrs(s’,s1,w)=0.2、Ptrs(s’,s2,w)=0.33、Ptrs(s’,s3,w)=0.09、Ptrs(s’,s4,w)=0.6、Ptrs(s’,s5,w)=1、Ptrs(s’,s6,w)=0.24、Ptrs(s’,s7,w)=0.25、Ptrs(s’,s8,w)=0.38、Ptrs(s’,s9,w)=0.1となる。
【0063】
次に、Ptrbj(s’,s)の求め方について説明する。敵機の攻撃弾が所定の移動速度(Vxbj,Vybj)に従って行動単位時間Tだけ移動した場合のx座標とy座標の変位量(dxbj,dybj)は、
dxbj=Vxbj×T
dybj=Vybj×T
である。敵機の攻撃弾が存在する升目s’の中心に、一辺の大きさが敵機の攻撃弾の大きさ(敵機の攻撃弾の形状に内接する円の直径)と自機の大きさ(自機の形状に内接する円の直径)の和の半分である升目を新たに作成し、この升目を上記変位量(dxbj,dybj)だけ平行移動した升目をsdbjとする。升目sdbjと升目sが重なる面積の、升目s全体の面積に対する比率をPtrbj(s’,s)とする。
【0064】
最後に、Ptrei(s’,s,a)の求め方について説明する。敵機が移動速度番号aを選択して行動単位時間Tだけ移動した場合のx座標とy座標の変位量(dxei,dyei)は、
dxei=Vxei(a)×T
dyei=Vyei(a)×T
である。敵機が存在する升目s’の中心に、一辺の大きさが敵機の大きさ(敵機の形状に内接する円の直径)と自機の大きさ(自機に内接する円の直径)の和の半分である升目を新たに作成し、この升目を上記変位量(dxei,dyei)だけ平行移動した升目をsdeiとする。升目sdeiと升目sが重なる面積の、升目s全体の面積に対する比率をPtrei(s’,s,a)とする。
【0065】
このように、敵機が位置する升目の一辺の長さ、及び、この升目を敵機の位置の変位量(dxei,dyei)だけ移動させた升目sdeiの一辺の長さを、敵機の大きさ(敵機の形状に内接する円の直径)と自機の大きさ(自機の形状に内接する円の直径)の和の半分の値とすると、敵機が自機を破壊することができる範囲と上記升目が覆う範囲がほぼ同一となり、敵機と自機の接触をより適切に判定することができる。なお、敵機の攻撃弾が位置する升目を敵機の攻撃弾の位置の変位量(dxbj,dybj)だけ移動させた升目sdbjの一辺の長さを、敵機攻撃弾の大きさ(敵機の攻撃弾の形状に内接する円の直径)と自機の大きさ(自機の形状に内接する円の直径)の和の半分の値とした理由についても同様である。
【0066】
[変形例等]
上記実施形態では、敵機がある行動aに従って移動した場合の各時刻tにおける、敵機が自機を破壊する確率と自機が敵機を破壊する確率とを用いて敵機の行動を制御したが、確率に代えて、敵機がある行動aに従って移動した場合の各時刻tにおける、敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とをそれぞれ用いることができる。任意の指標を用いた場合であっても、確率の代わりにこの任意に指標を用いた点が異なるだけで、敵機の行動制御の処理方法は、上記実施形態と同様である。
敵機が自機を破壊する確率と自機が敵機を破壊する確率とは、敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す可能性を表す指標とをそれぞれ正規化したものである。敵機の自機破壊確率として用いたPs(t,s)と自機の敵機破壊確率として用いたPsx(t,s)は、敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す可能性を表す指標の一例に過ぎない。
【0067】
例えば、rが大きいほど大きい値を出力する関数fをf(r)とする。敵機が各行動aに従って移動した場合の各時刻tにおける自機の座標と敵機の座標をそれぞれ計算して、これらの座標から自機と敵機の距離rを求め、この距離rから上記関数f(r)の出力を求める。自機と敵機の距離が小さいほど、接触により自機が破壊される可能性が高くなるため、上記関数f(r)の出力値は、敵機が自機を破壊する可能性を示す指標となっている。この関数f(r)の出力値を、敵機がある行動aに従って移動した場合のある時刻tにおける敵機が自機を破壊する確率の代わりに用いてもよい。
【0068】
また、敵機が自機の射線上に位置する場合には自機と敵機の距離rが大きいほど大きい値を出力し、敵機が自機の射線上に位置しない場合には敵機の自機の射線からの距離が小さいほど大きな値を出力する関数をgとする。関数gの出力値は、敵機がある行動aに従って移動した場合の各時刻tにおける、自機が敵機を破壊する可能性を示す指標となっている。各行動aに従って移動した場合の各時刻tにおける敵機が自機の射線上に位置するかどうかと、自機と敵機の距離と、敵機の自機の射線からの距離とを求め、これらの求めた値から関数gの出力値を計算する。この関数gの出力値を、敵機がある行動aに従って移動した場合のある時刻tにおける敵機が自機を破壊する確率の代わりに用いてもよい。
【0069】
上記実施形態では、混合値をF(t,s)=αPs(t,s)+βPsx(t,s)、又は、F(t,a)=ΣsPei(t,s,a)(αPs(t,s)+βPsx(t,s))によって求めた。しかし、敵機混合パラメータによる、敵機の自機破壊確率と自機の敵機破壊確率とを敵機混合パラメータによって混合して混合値Fを計算する方法は、上記したものに限られない。例えば、上記敵機行動パラメータβの代わりに1−αを用いることにより、ひとつの敵機行動パラメータαで敵機の行動を制御することが可能になる。
【0070】
また、関数f1、f2、f3、f4を値域[0,∞]である単調増加関数をとして、次式によって定義される混合値F’(t,s)、F’’(t,s)、F’(t,a)、F’’(t,a)を用いて本発明を実施してもよい。
F’(t,s)=αf1(Ps(t,s))+βf2(Psx(t,s))
F’’(t,s)=f3(Ps(t,s))αf4(Psx(t,s))β
F’(t,a)=ΣsPei(t,s,a)(αf1(Ps(t,s))+βf2(Psx(t,s)))
F’’(t,a)=ΣsPei(t,s,a)(f3(Ps(t,s))αf4(Psx(t,s))β)
【0071】
すなわち、例えば、敵機の自機破壊確率(Ps(t,s))を非負の値を出力する第一の単調増加関数f1に入力した値と、自機の敵機破壊確率(Psx(t,s))を非負の値を出力する第二の単調増加関数f2に入力した値とを敵機行動パラメータで重み付き加算した値を計算することにより混合値F’(t,s)を計算してもよい。また、例えば、敵機の自機破壊確率(Ps(t,s))を非負の値を出力する第一の単調増加関数f1に入力した値を敵機行動パラメータαでべき乗した値と、自機の敵機破壊確率(Psx(t,s))を非負の値を出力する第二の単調増加関数f2に入力した値を敵機行動パラメータβでべき乗した値とをかけた値を計算することにより混合値F’’(t,s)を求めてもよい。このように、敵機の自機破壊確率と自機の敵機破壊確率とを、敵機行動パラメータを用いて混合して混合値を求める方法は任意である。
【0072】
図1と図2に破線で示すように敵機行動パラメータ入力手段51を設けて、本発明を実施する者が敵機行動パラメータを入力することができるようにしてもよい。敵機行動パラメータ入力手段51によって入力された敵機行動パラメータは混合値計算部2の記憶部21に格納され、この敵機行動パラメータに基づいて本発明による敵機の行動制御が行われる。敵機行動パラメータ入力手段51として、マウスやキーパット等のポインティングデバイスやキーボードを用いることができる。自由に敵機行動パラメータを設定することができるようにすることにより、本発明の利便性が増すという有利な効果がある。
【0073】
上記実施形態では、ステップS1以下の敵機の行動を決定するための処理を行う前に、敵機の自機存在確率の一例であるPs(t,s)と、自機の敵機存在確率の一例であるPsx(t,s)と、敵機位置sei(t,a)とが予め計算されて所定の記憶手段に格納されているとした(ステップS0)。しかし、必ずしも処理の前段階でこれらの確率・位置のすべてが計算されている必要はない。すなわち、これらの確率の計算とステップS1以下の処理を並列的に行ってもよい。
【0074】
上記実施形態では、加算部3の処理において、混合値F(t,s)、F(t,a)に関して、すべての時刻t=nT(n=1,…,N)についての和を取った。しかし、時刻t=nTの一部の時刻について和を取ることにしても構わない。一部の時刻のみについての和を取り、その和を最大にする行動(移動速度番号)を選択することにより、計算負担を軽減することができる。
【0075】
上記実施形態では、敵機の行動としてある移動速度番号aが選択された場合には、その移動速度番号aに従った移動を各時刻t=nTにおいて繰り返すと仮定した。しかし、各時刻tにおいて、異なる移動速度番号aに従って移動をする動作を各行動と定義しても良い。例えば、各時刻tにおいて敵機が取ることができる移動速度番号は1から3の3つであり、探索ステップ数N=3とする。このとき、図13に示すように、行動は33=27個存在する。図13において、行動1は、時刻t=Tにおいて移動速度番号1に従って移動し、時刻t=2Tにおいて移動速度番号1に従って移動し、時刻t=3Tにおいて移動速度番号1に従って移動することを意味する。行動2は、時刻t=Tにおいて移動速度番号1に従って移動し、時刻t=2Tにおいて移動速度番号2に従って移動し、時刻t=3Tにおいて移動速度番号2に従って移動することを意味する。他の行動についても同様であり、敵機の行動は、図13の表の右に示した移動速度番号に従った移動を、各時刻t=nT(n=1,…,3)において行うことを意味する。このように行動を27個定義した場合であっても、上記実施形態と同様にして、敵機が各行動を取った場合における上記混合値を計算して、この混合値の時間についての総和を最も大きくする行動を選択して、その行動に基づいて敵機を制御する。
【0076】
また、移動速度番号に代えて、加速度番号を用いて行動を定義してもよい。すなわち、敵機は、各時刻においてA1種類の加速度番号の中からひとつの加速度番号a1∈A1を選択することができるものとし、敵機がある行動a1を選択した場合には、敵機は、すべての時刻t=nT(1,…,N)において、加速度番号a1に対応して予め定められた加速度(Ax(a1),Ay(a1))に従って移動するように行動を定義してもよい。また、図13を参照して上述したのと同様に、各時刻t=nTにおいて、異なる加速度番号a1に従って移動する各動作を行動と定義してもよい。加速度番号を用いる場合であっても、上記実施形態と同様にして、敵機が各行動を取った場合における上記混合値を計算して、それらの混合値を最も大きくする行動を選択して、その行動に基づいて敵機を制御する。なお、上記加速度の概念は、角加速度を含むとする。また、上記速度の概念は、角速度を含むとする。すなわち、移動速度番号の代わりに角速度番号を用いて同様の処理を行ってもよい。
【0077】
本発明は、二次元のシューティングゲームだけではなく、三次元のシューティングゲームについても適用することができる。
上記した変形例は適宜組み合わせることができる。
また、上記シューティングゲームの敵機動作制御装置、方法をコンピュータによって実現することができる。この場合、シューティングゲームの敵機動作制御装置、方法の内容はプログラムによって記述される。そして、このプログラムを、図14に示すようなコンピュータで実行することにより、上記シューティングゲームの敵機動作制御装置の各部の機能がコンピュータ上で実現される。
【0078】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、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)等を用いることができる。
【0079】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0080】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0081】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームの敵機動作制御装置、方法を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
以上の各実施形態の他、本発明であるシューティングゲームの敵機動作制御方法、方法、プログラム及びその記録媒体は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0082】
【図1】本発明の第一実施形態による敵機行動制御装置1000の機能構成を例示した図。
【図2】本発明の第二実施形態による敵機行動制御装置1001の機能構成を例示した図。
【図3】本発明の第一実施形態による敵機行動制御装置1000の処理の流れを例示した図。
【図4】ステップS1の具体的な処理を例示した図。
【図5】シューティングゲームの模式図。
【図6】敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を表す図。
【図7】敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を表す図。
【図8】敵機行動パラメータ決定部5の機能構成を例示した図。
【図9】自機存在確率計算部6の機能構成を例示した図。
【図10】敵機攻撃弾存在確率計算部7の機能構成を例示した図。
【図11】敵機存在確率計算部8の機能構成を例示した図。
【図12】存在確率の計算についての説明を補助する図。
【図13】各時刻tごとに異なる移動速度番号を取る行動の例を表した図。
【図14】本発明による敵機行動制御装置をコンピュータにより実行する場合の機能構成を例示した図。
【技術分野】
【0001】
本発明は、シューティングゲームにおける敵機の行動を制御するための方法、装置、プログラム及びその記録媒体に関する。
【背景技術】
【0002】
シューティングゲームの処理方法、特に敵機の動作を制御する方法としては、自機の位置を考慮しないアルゴリズム、例えば、自機の位置とは無関係に敵機が一定方向に下降し続けるアルゴリズムや、自機の位置とは無関係に敵機が静止し続けるアルゴリズムを採用する方法があった。また、自機の位置を考慮するアルゴリズムとしては、例えば、自機の位置に近づくように敵機が動くアルゴリズムや、常に自機との位置を一定距離・方向に保つように敵機が動くアルゴリズムがあった。
また、敵機の移動を制御する技術ではないが、敵機の攻撃弾発射アルゴリズムに関する従来技術として、非特許文献1に記載された技術がある。
【非特許文献1】川野洋、「シューティングゲームの敵機攻撃弾発射アルゴリズムに関する考察」、社団法人情報処理学会研究報告[ゲーム情報学]、2006年6月30日、vol.2006、No.70,p. 61―68
【発明の開示】
【発明が解決しようとする課題】
【0003】
従来技術による敵機の行動制御アルゴリズムは、単純なものに限られている。その結果、敵の攻撃回避に必要なプレイヤーの自機操作技術は、多くのシューティングゲームにおいて共通しており、従来技術による敵機の行動制御アルゴリズムを用いたシューティングゲームは、ユーザに飽きられやすいという問題があった。
【課題を解決するための手段】
【0004】
敵機はA(Aは任意の自然数とする。)種類の行動a(a=1,…,A)に従って移動するものとし、選択された行動によって敵機が移動を始める時刻tをt=0とする。混合値計算手段が、敵機の行動aと時刻t=nT(Tは行動単位時間、n=1,…,N、Nは任意の自然数とする。)のすべての組合せについて、敵機が行動aに従って移動する場合の、時刻tにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する。加算手段が、敵機が行動aに従って移動する場合の、すべての又は一部の時刻tにおける上記混合値を加算した値を、敵機の各行動aごとに求める。敵機移動速度決定手段が、上記加算した値を最大にする敵機の行動aを、敵機の行動とする。
【発明の効果】
【0005】
敵機の行動パターンが多彩となり、ゲーム性が向上する。また、敵機行動パラメータの値を変えることにより、シューティングゲームのゲームの難易度の調整を多面的に行うことができる。
【発明を実施するための最良の形態】
【0006】
[シューティングゲームの説明]
図5に、本発明の処理の対象となるシューティングゲームを例示する。画面上には、自機1’と自機1’の攻撃弾3’、敵機2’と敵機2’の攻撃弾4’が表示される。攻撃弾3’、敵機2’、攻撃弾4’は、複数存在していても良い。敵機2’が複数存在している場合には、それらの敵機にはそれぞれ異なる番号i(i=1…I)が付けられているものとする。同様に、敵機の攻撃弾4’が複数存在している場合には、それらの敵機の攻撃弾4’にはそれぞれ異なる番号j(j=1…J)が付けられているものとする。また、自機1’、敵機2’、攻撃弾3’、攻撃弾4’は、X軸とY軸で構成される2次元の平面上に位置するものとする。
【0007】
プレイヤーは、自機1’を操作して、敵機2’と闘う。プレイヤーは、一回の操作で、W種類の移動速度(方向と速さ)で、行動単位時間Tだけ自機を移動させることができる。自機1’が取り得るW種類の移動速度(Vxs(w),Vys(w))は予め決められており、それぞれの移動速度(Vxs(w),Vys(w))には、異なる移動速度番号w(w=1,…,W)が付けられているものとする。以下では、移動速度番号wを選択する行動のことを行動wという。また、プレイヤーは、W種類の速度による移動と同時に、敵機2’を攻撃するための攻撃弾3’を発射する操作をすることができる。攻撃弾3’は、予め定められた軌跡に従って移動をする。この攻撃弾3’の描く軌跡を、自機の射線と呼ぶ。
【0008】
なお、例えば、W=9のとき、
(Vxs(1),Vys(1))=(V,0)
(Vxs(2),Vys(2))=(V,V)
(Vxs(3),Vys(3))=(0,V)
(Vxs(4),Vys(4))=(−V,V)
(Vxs(5),Vys(5))=(−V,0)
(Vxs(6),Vys(6))=(−V,−V)
(Vxs(7),Vys(7))=(0,−V)
(Vxs(8),Vys(8))=(V,−V)
(Vxs(9),Vys(9))=(0,0)
とすることができる。
【0009】
敵機2’は、移動速度(Vxe(a),Vye(a))で移動することができる。敵機2’が取り得るA種類の移動速度(Vxe(a),Vye(a))は予め定められており、それぞれの移動速度(Vxe(a),Vye(a))には、異なる移動速度番号a(a=1,…,A)が付けられているものとする。敵機2’は、自機を攻撃するために攻撃弾4’を任意の速度(方向と速さ)で発射することができる。発射された攻撃弾4’は、所定の移動速度(Vxbj,Vybj)で移動する。
【0010】
自機1’が、敵機2’及び敵機2’が発射する攻撃弾4’と衝突した場合には、自機1’は破壊され、そこでゲームオーバーとなる。逆に、自機1’の攻撃弾3’が敵機2’に衝突した場合には、敵機2’は破壊される。自機1’の攻撃弾3’によりすべての敵機2’を破壊した場合には、ユーザは、そのゲームに勝利することになる。
【0011】
ゲーム画面は格子に分割されており、その格子の構成単位のことを升目というものとする。例えば、画面の一番左下の升目の座標を(0,0)とし、その(0,0)の升目のX個だけ右に位置し、かつ、Y個だけ上に位置する升目の座標を(X,Y)とすることができる。ここで、XとYは0以上の整数である。
【0012】
なお、升目の一辺の長さSが、その辺に平行な方向に進む自機の速さVに行動単位時間Tをかけた値になるように、すなわち、S=VTとなるように、ゲーム画面を格子に分割するとよい。このように升目の一辺の長さを設定することにより、ある升目sに存在する自機が、どの移動速度(Vxs(w),Vys(w))に従って移動しても、行動単位時間T後には、必ずある升目sに100%の確率で存在することになる。このため、計算負担を軽減することができる。
【0013】
また、升目の一辺の長さが大きいと、本発明の処理が荒くなり、適切に自機を制御することができない場合がある。したがって、升目の一辺の長さSが、自機の形状に内接する円の直径と、敵機の攻撃弾の形状に内接する円の直径の和の半分の長さの3分の1以下の値になるように、行動単位時間T及び自機の速さVを決定すると良い。
大文字で表現された座標(X,Y)は、升目の座標である。一方、小文字で表現された座標(x,y)は、ゲーム画面上での実数表現による座標位置を表す。任意の座標(x,y)は、その座標(x,y)を含む升目の座標(X,Y)に変換することができるものとする。
【0014】
[第一実施形態]
敵機がA(Aは任意の整数)種類の行動の中からある行動aに従って移動した場合の各時刻t=nT(Tは行動単位時間であり、n=1,…,N、Nは求める精度とハードウェアの性能に依存するがおよそ10〜20。)における敵機が自機を破壊する確率である敵機の自機破壊確率として、各時刻tにおいて自機が升目sに存在する確率である自機存在確率Ps(t,s)を用いた場合を例に挙げて説明をする。敵機の自機破壊確率として、自機存在確率Ps(t,s)を用いることができるのは、定義より、敵機が自機に接触した場合には、自機は破壊され、また、敵機と自機の距離が近いほど、敵機と自機が接触することにより自機が破壊される可能性が高くなり、かつ、敵機から発射される攻撃弾によって自機が破壊される可能性が高くなるためである。以下では、自機存在確率Ps(t,s)のことを、敵機の自機破壊確率Ps(t,s)と呼ぶことがある。
【0015】
また、敵機がA種類の行動の中からある行動aに従って移動した場合の各時刻tにおける自機が敵機を破壊する確率である自機の敵機破壊確率として、上記行動aに従って移動した敵機が自機の射線上にいる各時刻tにおける確率Psx(t,s)を用いた場合を例に挙げて説明をする。自機の敵機破壊確率として、射線上存在確率Psx(t,s)を用いることができるのは、敵機が自機の射線上にいる場合には、敵機が破壊される可能性が高いためである。以下では、射線上存在確率Psx(t,s)を、自機の敵機破壊確率Psx(t,s)と呼ぶことがある。
【0016】
さらに、本実施形態では、敵機の行動は、敵機が取ることができる移動速度番号に対応しており、敵機が行動として、A(Aは任意の自然数とする。)種類の移動速度番号の中からある移動速度番号a∈Aを選択した場合には、敵機は、その移動速度番号aに対応して予め定められた移動速度ベクトル(Vxe(a),Vye(a))に従って行動単位時間Tだけ移動する動作を、すべての時刻t=nT(n=1,…,N、Nは任意の自然数である。)において行うと仮定する。
【0017】
以下では、選択された移動速度によって自機が移動を始める時刻tをt=0とする。
[装置構成]
図1に、本発明による敵機行動制御装置1000の機能構成を例示する。
敵機行動制御装置1000は、例えば、記憶部1、混合値計算部2、加算部3、敵機移動速度決定部4(又は、敵機行動決定部4)、敵機行動パラメータ決定部5を有する。
記憶部1は、例えば、敵機の自機破壊確率記憶部11、自機の敵機破壊確率記憶部12、敵機位置記憶部13を有する。混合値計算部2は、例えば、記憶部21、制御部22を有する。加算部3は、例えば、加算部31、…、加算部3a、…、加算部3Aを有する。敵機移動速度決定部4は、最大値検出部41を有する。また、図8に示すように、敵機行動パラメータ決定部5は、例えば、距離計算部52、判定部53、記憶部54、座標比較部55を有する。
【0018】
図3を参照して、敵機行動制御装置1000の処理を説明する。図3は、敵機行動制御装置1000の処理の流れを例示する図である。
<ステップS0>
記憶部1(図1参照)の敵機の自機破壊確率記憶部11には、各時刻tにおいて自機が各升目sに存在する確率Ps(t,s)が予め計算されて格納される。Ps(t,s)の計算方法については後述する。
また、記憶部1の自機の敵機破壊確率記憶部12には、敵機が行動として移動速度番号aを選択した場合の敵機が自機の射線上にいる各時刻tにおける確率Psx(t,s)が予め計算されて格納される。Psx(t,s)の計算方法については後述する。
【0019】
また、記憶部1の敵機位置記憶部13には、敵機が行動として移動速度番号aを選択した場合の各時刻tにおける敵機が存在する升目sei(t,a)が予め計算されて格納される。sei(t,a)の計算方法については後述する。
さらに、敵機行動パラメータであるαとβが、混合値計算部2の記憶部21に格納される。αとβはそれぞれ任意の実数である。
【0020】
<ステップS1>
混合値計算部2は、敵機がA(Aは任意の整数)種類の移動速度の中から、ある移動速度番号aを行動として選択した場合の、敵機が自機を破壊する確率であるPs(t,sei(t,a))と、自機が敵機を破壊する確率であるPsx(t,sei(t,a))と、予め定められた敵機行動パラメータα,βとを用いて、下記の式により定まる混合値F(t,sei(t,a))を計算して加算部3に出力する。
F(t,sei(t,a))=αPs(t,sei(t,a))+βPsx(t,sei(t,a)) …(1)
F(t,s)=αPs(t,s)+βPsx(t,s)で定義される混合値F(t,s)は、時刻tにおいて升目sに位置する敵機が、自機に破壊されずに自機を破壊することができる可能性を示す指標である。
【0021】
混合値計算部2は、移動速度番号aと時刻tのすべての組合せについて、上記混合値F(t,sei(t,a))を計算する。図4を参照して、混合値F(t,sei(t,a))の計算方法について説明をする。図4は、ステップS1の処理の流れを例示する図である。
【0022】
まず、混合値計算部2の制御部22は、記憶部21に格納されたaとtの値をそれぞれa=1,t=Tと初期設定する(ステップS11)。
混合値計算部2は、敵機が時刻t=0において行動として移動速度番号aを選択した場合に時刻tにおいて敵機が存在する升目sei(t,a)を記憶部1の敵機位置記憶部13から読み出す(ステップS12)。
【0023】
混合値計算部2は、上記読み出された升目sei(t,a)に対応した、敵機の自機破壊確率Ps(t,sei(t,a))と、自機の敵機破壊確率Psx(t,sei(t,a))とを記憶部1の敵機の自機破壊確率記憶部11と自機の敵機破壊確率記憶部12とからそれぞれ読み出す(ステップS13)。
混合値計算部2は、例えば、上記(1)式により、自機の敵機破壊確率Ps(t,sei(t,a))と敵機の自機破壊確率Psx(t,sei(t,a))とを記憶部21から読み出した敵機行動パラメータαとβを用いて重み付き加算をすることにより混合して混合値F(t,sei(t,a))を計算して、加算部3に出力する(ステップS14)。
【0024】
制御部22は、記憶部21から読み出したtと、N×Tとを比較する(ステップS15)。t≧N×Tでない場合には、tを行動単位時間Tだけインクリメントして(ステップS12)、ステップS12に戻って処理を行う。t≧N×Tである場合には、aと、敵機の移動速度番号の種類Aとを比較する(ステップS17)。a≧Aでない場合には、aを1だけインクリメントして、ステップS12に戻って処理を行う(ステップS18)。a≧Aである場合には、ステップS1の処理を終える。
このようにして、混合値計算部2は、移動速度番号aと時刻tの各組合せごとの混合値F(t,sei(t,a))を計算して、その計算結果を加算部3に出力する。
【0025】
<ステップS2>
加算部3は、敵機が時刻t=0において行動として移動速度番号aを選択した場合の、すべての時刻t=nT(n=1,…,N)における混合値F(t,s)を加算した値を、各移動速度番号aごと(すなわち、各行動ごと)に求めて、敵機移動速度決定部4に出力する。すなわち、加算部3は、Σt=1t=NTF(t,sei(t,a))を計算して、各移動速度番号aごとの混合値F(t,sei(t,a))の加算値を求める。
【0026】
図1に例示した敵機行動制御装置1000の加算部3においては、加算部31がΣt=1t=NTF(t,sei(t,1))を計算し、加算部32がΣt=1t=NTF(t,sei(t,2))を計算し、…、加算部3aがΣt=1t=NTF(t,sei(t,a))を計算し、…、加算部3AがΣt=1t=NTF(t,sei(t,1))を計算して、その計算結果をそれぞれ敵機移動速度決定部4に出力している。
【0027】
<ステップS3>
敵機移動速度決定部4は、各移動速度番号aごとの混合値の加算値Σt=1t=NTF(t,sei(t,a))を比較して、上記加算値を最大にする移動速度番号aを選択して出力する。具体的には、敵機移動速度決定部4の最大値検出部41は、各移動速度番号aごとの混合値の加算値Σt=1t=NTF(t,sei(t,a))の最大値を検出し、その最大値に対応する移動速度番号aを出力する。図示していない敵機動作処理部は、上記選択された移動速度番号aに基づいて行動単位時間Tだけ敵機を移動させる。
【0028】
敵機が複数いる場合には、各敵機について上記処理を繰り返し行う。その際、敵機の自機破壊確率Ps(t,s)と、自機の破壊確率Psx(t,s)と、敵機の位置sei(t,s)とを異なる敵機ごとに再度計算するのではなく、ある敵機について一度計算された敵機の自機破壊確率Ps(t,s)と、自機の破壊確率Psx(t,s)と、敵機の位置sei(t,s)とを他の敵機についての処理に再利用すると計算効率が良い。
【0029】
** 敵機行動パラメータについて **
敵機行動パラメータの値を変更することにより、敵機の行動パターンをより攻撃的なものにするか、より防御的なものにするか等を連続的に調整することができる。さらに、上記実施形態において、記憶部21に格納した敵機行動パラメータαとβの値を変更することにより、敵機の行動パターンを例えば以下のように変えることができる。
【0030】
(1)α=0,β>0とすると、敵機は自機の射線上に吸い込まれるように寄ってくる(自殺犬死パターン)。
(2)α>0,β=0とすると、敵機は、自機の近くに移動することを最優先とするが、自機により敵機が破壊されることは考慮しない(神風パターン)。敵機が自身の安全性を考慮しないで攻めてくるので一見ゲームとしては厳しいが、自機が敵機を破壊することが、自機の安全行動につながり、さらには得点の最大化にもつながる。
(3)α=0,β<0とすると、敵機は、自機の射線上から逃げることのみを重視するようになり、自機への攻撃は考慮しない(安全重視臆病パターン)。敵機を撃墜することができない代わりに、敵機からの攻撃のプレッシャーは少ない。
(4)α>0,β<0とすると、敵機は、自機の近くに移動しながらも、自機の射線上に入らない行動をする(リスク考慮パターン)。自機が安全行動をとったとしても、そのときの自機射線上には敵機がいない可能性が高く、自機は攻撃弾との接触する可能性が高い位置に移動しなければ敵機を効果的に破壊することができない。このため、このように敵機行動パラメータを定めると、ハイリスク、ハイリターンの状況をシューティングゲーム内に作ることができる。
【0031】
また、敵機の位置に応じて、敵機行動パラメータの値を変えてもよい。これにより、敵機により複雑な動作、戦略的な動作をさせることができ、ゲーム性が増すというメリットがある。図6と図7を参照して、敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を以下に示す。図6と図7は、敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を表す図であり、点線で示した円は、自機から所定の距離rだけ離れた位置を意味する。
【0032】
図6に示すように、敵機が自機の正面にいて、かつ、敵機と自機が所定の距離R(Rは任意の実数)以上離れている場合には、敵機は自機が発射した攻撃弾によって破壊される可能性がある。この場合には、αを任意(好ましくは、α>0)とし、β<0として、上記実施形態に示した処理を行う。これにより、敵機に対して、自機に破壊されにくい行動を取らせることができる。ここで、敵機が自機の正面にいるとは、自機の射線と垂直であり自機を通る直線に対して、敵機が自機の射線がある方の側にいることを意味する。
【0033】
具体的には、例えば、敵機行動パラメータ決定部5の座標比較部55(図8参照。)が、敵機のy座標と自機のy座標とを比較する。また、距離計算部52が、自機と敵機の距離rを計算し、判定部53が求まった距離rと、記憶部54から読み出した所定の距離Rとを比較する。座標比較部55において敵機のy座標>自機のy座標と判断され、かつ、判定部53において距離r≧距離Rと判断された場合には、敵機行動パラメータ決定部5は、αを任意(好ましくは、α>0)、かつ、β<0の条件を満たす敵機行動パラメータαとβを、混合値計算部2の記憶部21に設定する。敵機行動パラメータ決定部5は、この判断処理を一定の時間間隔ごとに行う。敵機行動制御装置1000は、この敵機行動パラメータαとβに基づいて、上記した処理を行い敵機の動作を制御する。
【0034】
図7に示すように、敵機が自機の背後にいる場合には、自機の攻撃弾は敵機にはあたらない。この場合には、敵機に対して自機を攻撃させる行動パターンを取らせるとよい。すなわち、α>0、βを任意(好ましくは、β=0)として、上記実施形態に示した処理を行う。
【0035】
具体的には、例えば、敵機行動パラメータ決定部5の座標比較部55が、敵機のy座標と自機のy座標とを比較する。座標比較部55において、敵機のy座標<自機のy座標と判断された場合には、敵機行動パラメータ決定部5は、α>0、βを任意(好ましくは、β=0)の条件を満たす敵機行動パラメータαとβを、混合値計算部2の記憶部21に設定する。敵機行動パラメータ決定部5は、この判断処理を一定の時間間隔ごとに行う。敵機行動制御装置1000は、この敵機行動パラメータαとβに基づいて、上記した処理を行い敵機の動作を制御する。
このように敵機行動パラメータを様々な値に設定することにより、敵機の行動を自在に制御することができる。
【0036】
[第二実施形態]
上記実施形態は、ある行動に従って移動した敵機が各時刻t=nTにおいてある位置(升目)に100%の確率で存在すると仮定した場合の実施形態である。すなわち、上記実施形態においては、ある移動速度番号aに従って移動した敵機が位置する各時刻における升目が、sei(t,a)と一意に決まっていた。しかし、ある行動に従って移動した敵機がある位置に存在するかどうかを確率的に表した場合であっても本発明を適用することができる。すなわち、ある行動aに従って移動した敵機が時刻tにおいて升目sに存在する確率を、Pei(t,s,a)と確率的に表した場合であっても本発明を適用することができる。
【0037】
図2は、第二実施形態による敵機行動制御装置1001の機能構成を例示する図である。第二実施形態による敵機行動制御装置1001は、図2に示すように、混合値計算部2の代わりに混合値計算部2’を有している点と、記憶部1が敵機位置記憶部13の代わりに敵機存在確率記憶部14を有している点で第一実施形態による敵機行動制御装置1000と異なる。他の機能構成、処理については同様であるため、説明を省略する。
敵機存在確率記憶部14には、各行動aに従って移動した敵機が各時刻tにおいて各升目sに存在する確率Pei(t,s,a)が格納されているものとする。敵機存在確率Pei(t,s,a)の求め方については後述する。
【0038】
混合値計算部2’は、移動速度番号aと、時刻t=nTのすべての組合せについて、下記の式に基づいて混合値F(t,a)を計算する。
F(t,a)=ΣsPei(t,s,a)(αPs(t,s)+βPsx(t,s)) …(2)
加算部3において混合値F(t,a)は時間についての和が取られ、この和を最も大きくする移動速度番号aが敵機移動速度決定部4により選択され出力される。
画面を分割する格子の目が粗い場合には、敵機の位置の確率分布であるPei(t,s,a)に基づいて本発明を行う第二実施形態による敵機行動制御装置1001によって、敵機の行動をさらに精度良く制御することができる。
【0039】
[自機存在確率Ps(t,s)の求め方について]
上記実施形態において、行動aに従って移動する敵機が各時刻t=nTにおいて自機を破壊する確率の一例として用いた自機の存在確率Ps(t,s)の求め方について説明をする。Ps(t,s)は、時刻tにおいて敵機が升目(位置)sに存在する確率である。
図9に例示した自機存在確率計算部6は、時刻tにおける自機が升目s’に存在する確率Ps(t,s’)に基づいて、時刻tから行動単位時間T経過後の時刻t=t+Tにおける自機が升目sに存在する確率Ps(t+T,s)を求める。そして、この処理を繰り返すことによって、最終的に、自機存在確率計算部6は、各時刻t=nT(n=1…N)ごとに、自機が各升目sに存在している確率を求める。計算した確率Ps(t,s)は、記憶部61に格納される。
【0040】
時刻t=0における自機が位置する升目をs0とすると、自機が時刻t=0において升目s0に存在する確率Ps(0,s0)=1である。このPs(0,s0)=1が、記憶部61に格納されているものとする。
まず、自機存在確率計算部6は、次式を計算することによって、時刻tにおける自機が升目s’に存在する確率Ps(t,s’)に基づいて、t+Tにおける自機が升目sに存在する確率Ps(t+T,s)を求める。
Ps(t+T,s)=(1−max(Pbj(t+T,s)))Σw{Psel(w,t)・Σs’{Ptrs(s’,s,w))・Ps(t,s’)}} …(3)
ここで、Psel(w,t)は、時刻tにおいて自機が移動速度番号wを選択する確率である。例えば、自機が等しい確率で移動速度番号wを選択すると仮定して、Psel(w,t)=1/Wとすることができる。この他にも、ユーザが任意にPsel(w,t)の値を選択することができる。Psel(w,t)の値は予め設定され、記憶部61に格納されているものとする。
【0041】
Ptrs(s’,s,w)は、時刻tにおいて升目s’に存在する自機が、移動速度番号wの移動速度(Vxs(w),Vys(w))に従って行動単位時間Tだけ移動することによって、時刻t+Tにおいて升目sに存在している確率である。Ptrs(s’,s,w)の計算の仕方については後述する。
移動確率計算部62は、升目s’に存在している自機が、自機の移動速度番号wに対応した移動速度(Vxs(w),Vys(w))で行動単位時間Tだけ移動した結果、升目sに存在している確率Ptrs(s’,s,w)を計算する。
【0042】
積算部63は、上記計算されたPtrs(s’,s,w)と、記憶部61から読み出した自機が升目s’に存在している確率Ps(t,s’)との積Ptrs(s’,s,w)・Ps(t,s’)を求める。
このようにして、移動確率計算部62と積算部63は、すべての升目s’について上記Ptrs(s’,s,w)・Ps(t,s’)を計算する。
加算部64は、各升目s’ごとに上記計算されたPtrs(s’,s,w)・Ps(t,s’)を加算する。すなわち、Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を計算する。
【0043】
積算部65は、上記計算されたΣs’{Ptrs(s’,s,w)・Ps(t,s’)}と、記憶部10から読み出した、時刻tにおける自機が移動速度番号wを選択する確率Psel(w,t)との積Psel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を求める。
このようにして、移動確率計算部62と積算部63と加算部64と積算部65は、すべての自機が取り得る移動速度番号wについて上記Psel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を計算する。
【0044】
加算部66は、各移動速度番号wごとに求まった上記Psel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を加算する。すなわち、ΣwPsel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}を計算する。
最大値抽出部69は、max(Pbj(t+T,s))を計算する。すなわち、敵機攻撃弾存在確率記憶部610から読み出した時刻t+Tにおいて敵機の攻撃弾が升目sに存在する各確率Pbj(t+T,s)(j=1,・・・,J)を比較して、最も大きい値を出力する。すなわち、すべてのj=1,・・・,JについてのPbj(t+T,s)を比較して最も大きい値を出力する。
【0045】
減算部60は、1から、上記計算されたmax(Pbj(t+T,s))を減算した値を計算する。
積算部67は、加算部66が計算したΣwPsel(w,t)・Σs’{Ptrs(s’,s,w)・Ps(t,s’)}と、減算部60が計算した1−max(Pbj(t+T,s))との積を求める。
このようにして、1−max(Pbj(t+T,s))を乗算することにより、時刻t+Tにおいて敵機の攻撃弾が升目sに存在している場合には自機が破壊されたものとして、自機の存在確率Ps(t,s)を計算することができる。
【0046】
このようにして、自機存在確率計算部6は、時刻tにおける自機が升目sに存在する確率Ps(t,s)に基づいて、時刻t+Tにおける自機が升目sに存在する確率Ps(t+T,s)を計算する。
上記の処理をすべてのt(t=T,…,(n−1)T)について、tが小さい順に行い、各時刻ごとに自機が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて、自機が升目sに存在する確率を求める。
【0047】
なお、自機が、時刻t=0において自機が取っている行動を、時刻t=0から所定の時間長T2又は所定の時刻ステップn2だけ繰り返し取り続けると仮定して、自機の存在確率Ps(t,s)を求めてもよい。これは、シューティングゲームのプレイヤーは、方向指示レバーをある方向に行動単位時間Tを越える長い時間倒し続けることが多いこと、すなわち、連続する各時刻においてある方向に自機を移動する操作をし続けることが多いことを考慮したものである。上記した探索計算の量を少なくすることができるというメリットがある。
【0048】
次に、敵機攻撃弾存在確率記憶部610に予め格納されている時刻tにおいて敵機の攻撃弾jが升目sに存在する各確率Pbj(t,s)の求め方について説明をする。
図10に示す敵機攻撃弾存在確率計算部7は、時刻tにおける敵機の攻撃弾が升目s’に存在する確率Pbj(t,s’)に基づいて、時刻t+Tにおける敵機の攻撃弾が升目sに存在する確率Pbj(t,s)を求める。そして、敵機攻撃弾存在確率計算部7は、この処理を繰り返すことによって、最終的に、各時刻t=nT(n=1…N)ごとに、敵機の攻撃弾が升目sに存在している確率を求める。計算した確率Pbj(t,s)は、敵機攻撃弾存在確率記憶部610に格納される。
【0049】
具体的には、例えば、図10に示す敵機攻撃弾存在確率計算部7は、次式を計算することによって、時刻tにおける敵機の攻撃弾が升目s’に存在する確率Pbj(t,s’)に基づいて、時刻t+Tにおける敵機の攻撃弾が升目sに存在する確率Pbj(t,s)を求める。
Pbj(t+T,s)=Σs’{Ptrbj(s’,s)・Pbj(t,s’)} …(4)
ここで、Ptrbj(s’,s)は、時刻tにおいて升目s’に存在する敵機の攻撃弾が、所定の移動速度(Vxbj,Vybj)に従って行動単位時間Tだけ移動することによって、時刻t+Tにおいて升目sに存在している確率である。Ptrbj(s’,s)の計算の仕方については後述する。
【0050】
時刻t=0における敵機の攻撃弾の存在確率Pbj(0,s)は、例えば、時刻t=0における攻撃弾の座標(xbj,ybj)を含む升目s#についての敵機攻撃弾存在確率Pbj(0,s#)=1とし、他の升目についての敵機攻撃弾存在確率をPbj(0,s#)=0とする。また、(xbj,ybj)を中心とした升目sbjとゲーム画面を分割した格子を構成する各升目sと重なる部分の面積を計算する。そして、敵機の攻撃弾は、その重なった部分の面積に比例した確率Pbj(0,s)で、各升目sに存在しているものとしてもよい。この場合、例えば、敵機の攻撃弾の形状に内接する円の直径と、自機の形状に内接する円の直径との和の半分の値を、敵機の位置(xbj,ybj)を中心とした升目sbjの一辺の長さにすることができる。
【0051】
上記の処理をすべてのt(t=T,…,(n−1)T)について、tが小さい順に行い、各時刻ごとに敵機の攻撃弾が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて、敵機の攻撃弾が升目sに存在する確率を求める。これらの計算された確率は、敵機攻撃弾存在確率記憶部610に格納される。
【0052】
[射線上存在確率Psx(t,s)の求め方について]
次に、上記実施形態において、自機が升目sに位置する敵機を破壊することができる確率として用いた射線上存在確率Psx(t,s)の求め方について説明をする。Psx(t,s)は、升目sに存在する敵機が、自機の射線上に位置する確率である。敵機が升目xsに位置する場合、Psx(t,xs)は、次のように定義される。
Psx(t,xs)=(Σs∈xs*Ps(t,s))/num(xs*)
ここで、升目の集合xs*は、升目s∈xs*に位置する自機の射線上に、升目xsがある、という条件を満たすすべての升目sから構成される集合である。すなわち、xs*は、升目xsを通過する射線を有する自機が位置するすべての升目sの集合である。num(xs*)は升目の集合xs*を構成する升目の数である。
【0053】
例えば、自機の攻撃弾が画面の上(y軸の正方向)に向かって発射される場合には、升目の集合xs*は、升目xsとX座標が同じ升目であり、升目xsから下(Y軸の負方向)にある升目からの構成される集合ことであり、num(xs*)は、升目xsから下(Y軸の負方向)にある升目の数である。
なお、計算量を軽減する場合には、升目の集合xs*を、升目xsを通り、自機の射線と同じ傾きを持つ直線上に位置する升目から構成される集合と定義して上記Psx(t,xs)の計算をしてもよい。
【0054】
[敵機位置sei(t,a)及び敵機存在確率Pei(t,s,a)の求め方について]
敵機が時刻t=0において行動として移動速度番号aを選択して、この移動速度番号aに従って移動する敵機が各時刻t=nTにおいて存在する升目(位置)sei(t,a)と、敵機が時刻t=0において行動として移動速度番号aを選択して、この移動速度番号aに従って移動する敵機が各時刻t=nTにおいて各升目(位置)に存在する確率Pei(t,s,a)の求め方の一例を説明をする。
【0055】
まず、敵機位置sei(t,a)の求め方について説明をする。時刻t=0において敵機が存在する座標を(xei,yei)とする。敵機が行動である移動速度番号aを選択した場合、上記実施形態では敵機が各時刻t=nTにおいて移動速度番号aに従って行動単位時間Tだけ移動する動作を繰り返すため、各時刻tにおける敵機の座標は、(xei+Vxe(a)×t,yei+Vye(a)×t)で計算することができる。ここで、(Vxe(a),Vye(a))は、移動速度番号aに対応した移動速度ベクトルである。このとき、敵機位置sei(t,a)は、座標(xei+Vxe(a)×t,yei+Vye(a)×t)を含む升目となる。
【0056】
つぎに、第二実施形態で用いる敵機存在確率Pei(t,s,a)の求め方について説明をする。図11に示す敵機存在確率計算部8は、時刻tにおける敵機が升目s’に存在する確率Pei(t,s’,a)に基づいて、時刻t+Tにおける敵機が升目sに存在する確率Pei(t,s,a)を求める。そして、敵機存在確率計算部8は、この処理を繰り返すことによって、最終的に、各時刻t=nT(n=1…N)ごとに、敵機が升目sに存在している確率を求める。計算した確率Pei(t,s,a)は、敵機存在確率記憶部14に格納される。
【0057】
具体的には、例えば、図11に示す敵機存在確率計算部8は、次式を計算することによって、時刻tにおける敵機が升目s’に存在する確率Pei(t,s’,a)に基づいて、時刻t+Tにおける敵機が升目sに存在する確率Pei(t,s,a)を求める。
Pei(t+T,s,a)=Σs’{Ptrei(s’,s,a)・Pei(t,s’ ,a)} …(5)
ここで、Ptrei(s’,s,a)は、時刻tにおいて升目s’に存在する敵機が、所定の移動速度(Vxe(a),Vye(a))に従って行動単位時間Tだけ移動することによって、時刻t+Tにおいて升目sに存在している確率である。Ptrei(s’,s,a)の計算の仕方については後述する。
【0058】
時刻t=0における敵機の存在確率Pei(0,s,a)は、例えば、(xei,yei)を含む升目s#についての敵機存在確率Pei(0,s#,a)=1とし、他の升目についての敵機存在確率をPei(0,s#,a)=0とする。また、(xei,yei)を中心とした升目seiと、ゲーム画面を分割した格子を構成する各升目sと重なる部分の面積を計算し、敵機は、その重なった部分の面積に比例した確率で、各升目sに存在しているとしてもよい。例えば、敵機の形状に内接する円の直径と、自機の形状に内接する円の直径との和の半分の値を、敵機の位置(xei,yei)を中心とした升目seiの一辺の長さにすることができる。
【0059】
上記の処理をすべてのt(t=T,…,(n−1)T)について、tが小さい順に行い、各時刻ごとに敵機が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて、敵機が升目sに存在する確率を求める。これらの計算された確率は、敵機存在確率記憶部14に格納される。
【0060】
[移動確率Ptrs(s’,s,w)、Ptrbj(s’,s)、Ptrei(s’,s,a)の計算方法について]
以下、升目s’に存在する自機が移動速度番号wの移動速度(Vxs(w),Vys(w))に従って行動単位時間Tだけ移動することによって升目sに移動する確率Ptrs(s’,s,w)、升目s’に存在する敵機の攻撃弾が所定の移動速度(Vxej,Vyei)に従って行動単位時間Tだけ移動することによって升目sに移動する確率Ptrbj(s’,s)、升目s’に存在する敵機が敵機の移動速度番号aの移動速度(Vxe(a),Vye(a))に従って行動単位時間Tだけ移動することによって升目sに移動する確率Ptrei(s’,s,a)の求め方について説明する。
【0061】
まず、Ptrs(s’,s,w)の求め方について説明する。自機が移動速度番号wを選択して行動単位時間Tだけ移動した場合のx座標とy座標の変位量(dxs,dys)は、
dxs=Vxs(w)×T
dys=Vys(w)×T
である。自機が存在する升目s’を上記変位量(dxs,dys)だけ平行移動した升目をsdsとする。升目sdsと升目sが重なる面積の、升目s全体の面積に対する比率をPtrs(s’,s,w)とする。
【0062】
例えば、図12に示すように、升目sdsが、升目s1〜s9と重なったとする。ここで、各升目に記載された0から1までの数値は、升目sdsとその升目が重なる面積の、その升目の面積に対する比率を表わしたものである。このとき、Ptrs(s’,s1,w)=0.2、Ptrs(s’,s2,w)=0.33、Ptrs(s’,s3,w)=0.09、Ptrs(s’,s4,w)=0.6、Ptrs(s’,s5,w)=1、Ptrs(s’,s6,w)=0.24、Ptrs(s’,s7,w)=0.25、Ptrs(s’,s8,w)=0.38、Ptrs(s’,s9,w)=0.1となる。
【0063】
次に、Ptrbj(s’,s)の求め方について説明する。敵機の攻撃弾が所定の移動速度(Vxbj,Vybj)に従って行動単位時間Tだけ移動した場合のx座標とy座標の変位量(dxbj,dybj)は、
dxbj=Vxbj×T
dybj=Vybj×T
である。敵機の攻撃弾が存在する升目s’の中心に、一辺の大きさが敵機の攻撃弾の大きさ(敵機の攻撃弾の形状に内接する円の直径)と自機の大きさ(自機の形状に内接する円の直径)の和の半分である升目を新たに作成し、この升目を上記変位量(dxbj,dybj)だけ平行移動した升目をsdbjとする。升目sdbjと升目sが重なる面積の、升目s全体の面積に対する比率をPtrbj(s’,s)とする。
【0064】
最後に、Ptrei(s’,s,a)の求め方について説明する。敵機が移動速度番号aを選択して行動単位時間Tだけ移動した場合のx座標とy座標の変位量(dxei,dyei)は、
dxei=Vxei(a)×T
dyei=Vyei(a)×T
である。敵機が存在する升目s’の中心に、一辺の大きさが敵機の大きさ(敵機の形状に内接する円の直径)と自機の大きさ(自機に内接する円の直径)の和の半分である升目を新たに作成し、この升目を上記変位量(dxei,dyei)だけ平行移動した升目をsdeiとする。升目sdeiと升目sが重なる面積の、升目s全体の面積に対する比率をPtrei(s’,s,a)とする。
【0065】
このように、敵機が位置する升目の一辺の長さ、及び、この升目を敵機の位置の変位量(dxei,dyei)だけ移動させた升目sdeiの一辺の長さを、敵機の大きさ(敵機の形状に内接する円の直径)と自機の大きさ(自機の形状に内接する円の直径)の和の半分の値とすると、敵機が自機を破壊することができる範囲と上記升目が覆う範囲がほぼ同一となり、敵機と自機の接触をより適切に判定することができる。なお、敵機の攻撃弾が位置する升目を敵機の攻撃弾の位置の変位量(dxbj,dybj)だけ移動させた升目sdbjの一辺の長さを、敵機攻撃弾の大きさ(敵機の攻撃弾の形状に内接する円の直径)と自機の大きさ(自機の形状に内接する円の直径)の和の半分の値とした理由についても同様である。
【0066】
[変形例等]
上記実施形態では、敵機がある行動aに従って移動した場合の各時刻tにおける、敵機が自機を破壊する確率と自機が敵機を破壊する確率とを用いて敵機の行動を制御したが、確率に代えて、敵機がある行動aに従って移動した場合の各時刻tにおける、敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とをそれぞれ用いることができる。任意の指標を用いた場合であっても、確率の代わりにこの任意に指標を用いた点が異なるだけで、敵機の行動制御の処理方法は、上記実施形態と同様である。
敵機が自機を破壊する確率と自機が敵機を破壊する確率とは、敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す可能性を表す指標とをそれぞれ正規化したものである。敵機の自機破壊確率として用いたPs(t,s)と自機の敵機破壊確率として用いたPsx(t,s)は、敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す可能性を表す指標の一例に過ぎない。
【0067】
例えば、rが大きいほど大きい値を出力する関数fをf(r)とする。敵機が各行動aに従って移動した場合の各時刻tにおける自機の座標と敵機の座標をそれぞれ計算して、これらの座標から自機と敵機の距離rを求め、この距離rから上記関数f(r)の出力を求める。自機と敵機の距離が小さいほど、接触により自機が破壊される可能性が高くなるため、上記関数f(r)の出力値は、敵機が自機を破壊する可能性を示す指標となっている。この関数f(r)の出力値を、敵機がある行動aに従って移動した場合のある時刻tにおける敵機が自機を破壊する確率の代わりに用いてもよい。
【0068】
また、敵機が自機の射線上に位置する場合には自機と敵機の距離rが大きいほど大きい値を出力し、敵機が自機の射線上に位置しない場合には敵機の自機の射線からの距離が小さいほど大きな値を出力する関数をgとする。関数gの出力値は、敵機がある行動aに従って移動した場合の各時刻tにおける、自機が敵機を破壊する可能性を示す指標となっている。各行動aに従って移動した場合の各時刻tにおける敵機が自機の射線上に位置するかどうかと、自機と敵機の距離と、敵機の自機の射線からの距離とを求め、これらの求めた値から関数gの出力値を計算する。この関数gの出力値を、敵機がある行動aに従って移動した場合のある時刻tにおける敵機が自機を破壊する確率の代わりに用いてもよい。
【0069】
上記実施形態では、混合値をF(t,s)=αPs(t,s)+βPsx(t,s)、又は、F(t,a)=ΣsPei(t,s,a)(αPs(t,s)+βPsx(t,s))によって求めた。しかし、敵機混合パラメータによる、敵機の自機破壊確率と自機の敵機破壊確率とを敵機混合パラメータによって混合して混合値Fを計算する方法は、上記したものに限られない。例えば、上記敵機行動パラメータβの代わりに1−αを用いることにより、ひとつの敵機行動パラメータαで敵機の行動を制御することが可能になる。
【0070】
また、関数f1、f2、f3、f4を値域[0,∞]である単調増加関数をとして、次式によって定義される混合値F’(t,s)、F’’(t,s)、F’(t,a)、F’’(t,a)を用いて本発明を実施してもよい。
F’(t,s)=αf1(Ps(t,s))+βf2(Psx(t,s))
F’’(t,s)=f3(Ps(t,s))αf4(Psx(t,s))β
F’(t,a)=ΣsPei(t,s,a)(αf1(Ps(t,s))+βf2(Psx(t,s)))
F’’(t,a)=ΣsPei(t,s,a)(f3(Ps(t,s))αf4(Psx(t,s))β)
【0071】
すなわち、例えば、敵機の自機破壊確率(Ps(t,s))を非負の値を出力する第一の単調増加関数f1に入力した値と、自機の敵機破壊確率(Psx(t,s))を非負の値を出力する第二の単調増加関数f2に入力した値とを敵機行動パラメータで重み付き加算した値を計算することにより混合値F’(t,s)を計算してもよい。また、例えば、敵機の自機破壊確率(Ps(t,s))を非負の値を出力する第一の単調増加関数f1に入力した値を敵機行動パラメータαでべき乗した値と、自機の敵機破壊確率(Psx(t,s))を非負の値を出力する第二の単調増加関数f2に入力した値を敵機行動パラメータβでべき乗した値とをかけた値を計算することにより混合値F’’(t,s)を求めてもよい。このように、敵機の自機破壊確率と自機の敵機破壊確率とを、敵機行動パラメータを用いて混合して混合値を求める方法は任意である。
【0072】
図1と図2に破線で示すように敵機行動パラメータ入力手段51を設けて、本発明を実施する者が敵機行動パラメータを入力することができるようにしてもよい。敵機行動パラメータ入力手段51によって入力された敵機行動パラメータは混合値計算部2の記憶部21に格納され、この敵機行動パラメータに基づいて本発明による敵機の行動制御が行われる。敵機行動パラメータ入力手段51として、マウスやキーパット等のポインティングデバイスやキーボードを用いることができる。自由に敵機行動パラメータを設定することができるようにすることにより、本発明の利便性が増すという有利な効果がある。
【0073】
上記実施形態では、ステップS1以下の敵機の行動を決定するための処理を行う前に、敵機の自機存在確率の一例であるPs(t,s)と、自機の敵機存在確率の一例であるPsx(t,s)と、敵機位置sei(t,a)とが予め計算されて所定の記憶手段に格納されているとした(ステップS0)。しかし、必ずしも処理の前段階でこれらの確率・位置のすべてが計算されている必要はない。すなわち、これらの確率の計算とステップS1以下の処理を並列的に行ってもよい。
【0074】
上記実施形態では、加算部3の処理において、混合値F(t,s)、F(t,a)に関して、すべての時刻t=nT(n=1,…,N)についての和を取った。しかし、時刻t=nTの一部の時刻について和を取ることにしても構わない。一部の時刻のみについての和を取り、その和を最大にする行動(移動速度番号)を選択することにより、計算負担を軽減することができる。
【0075】
上記実施形態では、敵機の行動としてある移動速度番号aが選択された場合には、その移動速度番号aに従った移動を各時刻t=nTにおいて繰り返すと仮定した。しかし、各時刻tにおいて、異なる移動速度番号aに従って移動をする動作を各行動と定義しても良い。例えば、各時刻tにおいて敵機が取ることができる移動速度番号は1から3の3つであり、探索ステップ数N=3とする。このとき、図13に示すように、行動は33=27個存在する。図13において、行動1は、時刻t=Tにおいて移動速度番号1に従って移動し、時刻t=2Tにおいて移動速度番号1に従って移動し、時刻t=3Tにおいて移動速度番号1に従って移動することを意味する。行動2は、時刻t=Tにおいて移動速度番号1に従って移動し、時刻t=2Tにおいて移動速度番号2に従って移動し、時刻t=3Tにおいて移動速度番号2に従って移動することを意味する。他の行動についても同様であり、敵機の行動は、図13の表の右に示した移動速度番号に従った移動を、各時刻t=nT(n=1,…,3)において行うことを意味する。このように行動を27個定義した場合であっても、上記実施形態と同様にして、敵機が各行動を取った場合における上記混合値を計算して、この混合値の時間についての総和を最も大きくする行動を選択して、その行動に基づいて敵機を制御する。
【0076】
また、移動速度番号に代えて、加速度番号を用いて行動を定義してもよい。すなわち、敵機は、各時刻においてA1種類の加速度番号の中からひとつの加速度番号a1∈A1を選択することができるものとし、敵機がある行動a1を選択した場合には、敵機は、すべての時刻t=nT(1,…,N)において、加速度番号a1に対応して予め定められた加速度(Ax(a1),Ay(a1))に従って移動するように行動を定義してもよい。また、図13を参照して上述したのと同様に、各時刻t=nTにおいて、異なる加速度番号a1に従って移動する各動作を行動と定義してもよい。加速度番号を用いる場合であっても、上記実施形態と同様にして、敵機が各行動を取った場合における上記混合値を計算して、それらの混合値を最も大きくする行動を選択して、その行動に基づいて敵機を制御する。なお、上記加速度の概念は、角加速度を含むとする。また、上記速度の概念は、角速度を含むとする。すなわち、移動速度番号の代わりに角速度番号を用いて同様の処理を行ってもよい。
【0077】
本発明は、二次元のシューティングゲームだけではなく、三次元のシューティングゲームについても適用することができる。
上記した変形例は適宜組み合わせることができる。
また、上記シューティングゲームの敵機動作制御装置、方法をコンピュータによって実現することができる。この場合、シューティングゲームの敵機動作制御装置、方法の内容はプログラムによって記述される。そして、このプログラムを、図14に示すようなコンピュータで実行することにより、上記シューティングゲームの敵機動作制御装置の各部の機能がコンピュータ上で実現される。
【0078】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、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)等を用いることができる。
【0079】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0080】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0081】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームの敵機動作制御装置、方法を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
以上の各実施形態の他、本発明であるシューティングゲームの敵機動作制御方法、方法、プログラム及びその記録媒体は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0082】
【図1】本発明の第一実施形態による敵機行動制御装置1000の機能構成を例示した図。
【図2】本発明の第二実施形態による敵機行動制御装置1001の機能構成を例示した図。
【図3】本発明の第一実施形態による敵機行動制御装置1000の処理の流れを例示した図。
【図4】ステップS1の具体的な処理を例示した図。
【図5】シューティングゲームの模式図。
【図6】敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を表す図。
【図7】敵機と自機の位置関係に応じて、敵機行動パラメータの値を変える例を表す図。
【図8】敵機行動パラメータ決定部5の機能構成を例示した図。
【図9】自機存在確率計算部6の機能構成を例示した図。
【図10】敵機攻撃弾存在確率計算部7の機能構成を例示した図。
【図11】敵機存在確率計算部8の機能構成を例示した図。
【図12】存在確率の計算についての説明を補助する図。
【図13】各時刻tごとに異なる移動速度番号を取る行動の例を表した図。
【図14】本発明による敵機行動制御装置をコンピュータにより実行する場合の機能構成を例示した図。
【特許請求の範囲】
【請求項1】
敵機はA(Aは任意の自然数とする。)種類の行動a(a=1,…,A)に従って移動するものとし、選択された行動によって敵機が移動を始める時刻tをt=0とし、
混合値計算手段が、敵機の行動aと時刻t=nT(Tは行動単位時間、n=1,…,N、Nは任意の自然数とする。)のすべての組合せについて、敵機が行動aに従って移動する場合の、時刻tにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する混合値計算ステップと、
加算手段が、敵機が行動aに従って移動する場合の、すべての又は一部の時刻tにおける上記混合値を加算した値を、敵機の各行動aごとに求める加算ステップと、
敵機行動決定手段が、上記加算した値を最大にする敵機の行動aを、敵機の行動とする敵機行動決定ステップと、
を有する敵機行動制御方法。
【請求項2】
請求項1に記載の敵機行動制御方法において、
上記敵機行動パラメータは、αとβ(αとβはそれぞれ任意の実数)の2つのパラメータからなり、
上記混合値は、敵機が自機を破壊する可能性を表す指標にαをかけた値と、自機が敵機を破壊する可能性を表す指標にβをかけた値とを加算した値である、
ことを特徴とする敵機行動制御方法。
【請求項3】
請求項1に記載の敵機行動制御方法において、
上記敵機行動パラメータは、αとβ(αとβはそれぞれ任意の実数)の2つのパラメータからなり、
上記混合値は、敵機が自機を破壊する可能性を表す指標を非負の値を出力する第一の単調増加関数に入力した場合の出力値にαをかけた値と、自機が敵機を破壊する可能性を表す指標を非負の値を出力する第二の単調増加関数に入力した場合の出力値にβをかけた値とを加算した値である、
ことを特徴とする敵機行動制御方法。
【請求項4】
請求項1に記載の敵機行動制御方法において、
上記敵機行動パラメータは、αとβ(αとβはそれぞれ任意の実数)の2つのパラメータからなり、
上記混合値は、敵機が自機を破壊する可能性を表す指標を非負の値を出力する第一の単調増加関数に入力した場合の出力値をα乗した値と、自機が敵機を破壊する可能性を表す指標を非負の値を出力する第二の単調増加関数に入力した場合の出力値をβ乗した値とを乗算した値である、
ことを特徴とする敵機行動制御方法。
【請求項5】
請求項1から4の何れかに記載の敵機行動制御方法において、
入力手段が、敵機行動パラメータの入力を受け付ける入力ステップをさらに有し、
上記混合値計算ステップは、上記予め定められた敵機行動パラメータに代えて、上記入力された敵機行動パラメータを用いて、上記混合値を計算するステップである、
ことを特徴とする敵機行動制御方法。
【請求項6】
請求項1から5の何れかに記載の敵機行動制御方法において、
上記敵機が行動aに従って移動する場合の、時刻t=nTにおける敵機が自機を破壊する可能性を表す指標は、行動aに従って移動する敵機が時刻t=nTに存在する位置に、時刻t=nTにおける自機が存在する確率である、
ことを特徴とする敵機行動制御方法。
【請求項7】
請求項1から6の何れかに記載の敵機行動制御方法において、
上記敵機が行動aに従って移動する場合の、時刻t=nTにおける自機が敵機を破壊する可能性を表す指標は、行動aに従って移動する敵機が時刻t=nTにおいて、自機の射線上に存在する位置する確率である、
ことを特徴とする敵機行動制御方法。
【請求項8】
敵機はA(Aは任意の自然数とする。)種類の行動a(a=1,…,A)に従って移動するものとし、選択された行動によって敵機が移動を始める時刻tをt=0とし、
敵機の行動aと時刻t=nT(Tは行動単位時間、n=1,…,N、Nは任意の自然数とする。)のすべての組合せについて、敵機が行動aに従って移動する場合の、時刻tにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する混合値計算手段と、
敵機が行動aに従って移動する場合の、すべての又は一部の時刻tにおける上記混合値を加算した値を、敵機の各行動aごとに求める加算手段と、
上記加算した値を最大にする敵機の行動aを、敵機の行動とする敵機行動決定手段と、
を有する敵機行動制御装置。
【請求項9】
請求項1から7に何れかに記載の敵機行動制御方法の各ステップをコンピュータに実行させるための敵機行動制御プログラム。
【請求項10】
請求項9に記載の敵機行動制御プログラムをコンピュータ読み取り可能に記録した敵機行動制御プログラム記録媒体。
【請求項1】
敵機はA(Aは任意の自然数とする。)種類の行動a(a=1,…,A)に従って移動するものとし、選択された行動によって敵機が移動を始める時刻tをt=0とし、
混合値計算手段が、敵機の行動aと時刻t=nT(Tは行動単位時間、n=1,…,N、Nは任意の自然数とする。)のすべての組合せについて、敵機が行動aに従って移動する場合の、時刻tにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する混合値計算ステップと、
加算手段が、敵機が行動aに従って移動する場合の、すべての又は一部の時刻tにおける上記混合値を加算した値を、敵機の各行動aごとに求める加算ステップと、
敵機行動決定手段が、上記加算した値を最大にする敵機の行動aを、敵機の行動とする敵機行動決定ステップと、
を有する敵機行動制御方法。
【請求項2】
請求項1に記載の敵機行動制御方法において、
上記敵機行動パラメータは、αとβ(αとβはそれぞれ任意の実数)の2つのパラメータからなり、
上記混合値は、敵機が自機を破壊する可能性を表す指標にαをかけた値と、自機が敵機を破壊する可能性を表す指標にβをかけた値とを加算した値である、
ことを特徴とする敵機行動制御方法。
【請求項3】
請求項1に記載の敵機行動制御方法において、
上記敵機行動パラメータは、αとβ(αとβはそれぞれ任意の実数)の2つのパラメータからなり、
上記混合値は、敵機が自機を破壊する可能性を表す指標を非負の値を出力する第一の単調増加関数に入力した場合の出力値にαをかけた値と、自機が敵機を破壊する可能性を表す指標を非負の値を出力する第二の単調増加関数に入力した場合の出力値にβをかけた値とを加算した値である、
ことを特徴とする敵機行動制御方法。
【請求項4】
請求項1に記載の敵機行動制御方法において、
上記敵機行動パラメータは、αとβ(αとβはそれぞれ任意の実数)の2つのパラメータからなり、
上記混合値は、敵機が自機を破壊する可能性を表す指標を非負の値を出力する第一の単調増加関数に入力した場合の出力値をα乗した値と、自機が敵機を破壊する可能性を表す指標を非負の値を出力する第二の単調増加関数に入力した場合の出力値をβ乗した値とを乗算した値である、
ことを特徴とする敵機行動制御方法。
【請求項5】
請求項1から4の何れかに記載の敵機行動制御方法において、
入力手段が、敵機行動パラメータの入力を受け付ける入力ステップをさらに有し、
上記混合値計算ステップは、上記予め定められた敵機行動パラメータに代えて、上記入力された敵機行動パラメータを用いて、上記混合値を計算するステップである、
ことを特徴とする敵機行動制御方法。
【請求項6】
請求項1から5の何れかに記載の敵機行動制御方法において、
上記敵機が行動aに従って移動する場合の、時刻t=nTにおける敵機が自機を破壊する可能性を表す指標は、行動aに従って移動する敵機が時刻t=nTに存在する位置に、時刻t=nTにおける自機が存在する確率である、
ことを特徴とする敵機行動制御方法。
【請求項7】
請求項1から6の何れかに記載の敵機行動制御方法において、
上記敵機が行動aに従って移動する場合の、時刻t=nTにおける自機が敵機を破壊する可能性を表す指標は、行動aに従って移動する敵機が時刻t=nTにおいて、自機の射線上に存在する位置する確率である、
ことを特徴とする敵機行動制御方法。
【請求項8】
敵機はA(Aは任意の自然数とする。)種類の行動a(a=1,…,A)に従って移動するものとし、選択された行動によって敵機が移動を始める時刻tをt=0とし、
敵機の行動aと時刻t=nT(Tは行動単位時間、n=1,…,N、Nは任意の自然数とする。)のすべての組合せについて、敵機が行動aに従って移動する場合の、時刻tにおける敵機が自機を破壊する可能性を表す指標と自機が敵機を破壊する可能性を表す指標とを、予め定められた敵機行動パラメータを用いて混合した値である混合値を計算する混合値計算手段と、
敵機が行動aに従って移動する場合の、すべての又は一部の時刻tにおける上記混合値を加算した値を、敵機の各行動aごとに求める加算手段と、
上記加算した値を最大にする敵機の行動aを、敵機の行動とする敵機行動決定手段と、
を有する敵機行動制御装置。
【請求項9】
請求項1から7に何れかに記載の敵機行動制御方法の各ステップをコンピュータに実行させるための敵機行動制御プログラム。
【請求項10】
請求項9に記載の敵機行動制御プログラムをコンピュータ読み取り可能に記録した敵機行動制御プログラム記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2008−183177(P2008−183177A)
【公開日】平成20年8月14日(2008.8.14)
【国際特許分類】
【出願番号】特願2007−18835(P2007−18835)
【出願日】平成19年1月30日(2007.1.30)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成20年8月14日(2008.8.14)
【国際特許分類】
【出願日】平成19年1月30日(2007.1.30)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]