説明

シューティングゲームの自機動作制御方法、装置、プログラム及びその記録媒体

【課題】シューティングゲームのデモ画面における自機の動作制御方法を提供する。
【解決手段】第一存在確率計算部が、t=nT(nは任意の自然数)において自機が敵機及び敵機の攻撃弾によって破壊されないで、ゲーム画面を分割した格子を構成する各升目sに存在する確率Ps(nT,s)を求める。自機目標位置決定部が、上記Ps(nT,s)のうち、その確率を最も高くする升目を選択して、その升目を目標位置とする。第二自機存在確率計算部が、時刻t=nTにおいて自機が上記目標位置に到達することが確定している場合に、時刻t=Tにおいて自機が各升目sに存在する確率Psr(T,s)を計算する。移動速度決定部が、時刻t=0における自機が時刻t=Tにおいて到達することができる升目s0’のうち確率Psr(T,s0’)を最も高くする升目に移動するように、時刻t=0における自機の移動速度を決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シューティングゲームのデモンストレーションプレイ(デモ画面)、又は、オートパイロット制御時における、自機の動作制御方法、装置、プログラム及びその記録媒体に関する。
【背景技術】
【0002】
従来は、シューティングゲームにおいて自機を適切に自動操作する方法は提示されていなかった。
このため、シューティングゲームのデモンストレーションプレイ(以下、デモ画面という。)は、あるプレイヤーが過去に行った模範的なプレイの動画を再生するだけのものや、ランダムに自機を移動させ、ランダムに攻撃弾を発射するような単純なアルゴリズムを利用するものに限られていた。
ここで、シューティングゲームのデモンストレーションプレイとは、プレイヤーがプレイを行っていないいわば待ち状態のときに、シューティングゲームの内容や魅力を説明するために画面上に表示される、そのシューティングゲームの模範的なプレイのことである。
【非特許文献1】Jonathan Schaeffer,H.Jaap van den Herik,“Games,computers,and artificial intelligence”,Artificial Intelligence,2002,Vol.134,p1-7
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、模範的なプレイの動画を再生するだけでは、いつも同じデモンストレーションプレイが繰り返し表示されるだけであり、そのシューティングゲームの内容や魅力の一部しか表現することができないという問題があった。
また、ランダムに自機を移動させ、ランダムに攻撃弾を発射させるような単純なアルゴリズムは、人の目から見て理にかなった動作をするものではなく、多くの場合、敵機の攻撃によって自機はすぐに破壊されてしまう。このため、そのシューティングゲームの内容を理解させるほどの長い時間に渡って、デモ画面を表示することが難しいという問題があった。
ところで、デモンストレーションプレイにおける自機の動作アルゴリズムを知的なものにするためには、人工知能の技術を導入するのが有効であると考えられるが、現在の人口知能におけるゲームの研究は、チェス、オセロ、将棋といった非アクション系の思考ゲームが中心であった(例えば、非特許文献1参照。)。すなわち、人工知能の技術を、シューティングゲームのようなアクションゲームに応用する試みがないという問題があった。
【0004】
また、チェス、オセロ、将棋といった思考ゲームを解くための人工知能の技術研究は、効率的に深い探索計算を行うための手法の開発に集中している。たしかに、効率的に深い探索計算を行う技術は重要であるが、シューティングゲームのようなアクションゲームでは、探索の深さよりも、探索計算の処理の実時間性を実現することの方が重要である。しかし、探索計算の処理の実時間性を考慮したアルゴリズムがないという問題があった。
本発明は、上記の問題に鑑み、例えばデモンストレーションプレイに使用することができる、人工知能の技術を応用したシューティングゲームの自機動作制御方法、装置、プログラム及びその記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0005】
選択された移動速度によって自機が移動を始める時刻tをt=0とし、第一存在確率計算手段が、t=nT(nは任意の自然数)において自機が敵機及び敵機の攻撃弾によって破壊されないで、ゲーム画面を分割した格子を構成する各升目sに存在する確率Ps(nT,s)を求めて、第一自機存在確率記憶手段に格納する。自機目標位置決定手段が、第一自機存在確率記憶手段から読み出した、t=nTにおいて自機が敵機及び敵機の攻撃弾によって破壊されないで各升目sに存在する確率Ps(nT,s)のうち、その確率を最も高くする升目を選択して、その升目を目標位置とする。第二自機存在確率計算手段が、時刻t=nTにおいて自機が上記目標位置に到達することが確定している場合に、時刻t=Tにおいて自機が各升目sに存在する確率Psr(T,s)を計算して、第二自機存在確率記憶部に格納する。移動速度決定手段が、時刻t=0における自機が時刻t=Tにおいて到達することができる升目s0’のうち、第二自機存在確率記憶部から読み出した確率Psr(T,s0’)を最も高くする升目に移動するように、時刻t=0における自機の移動速度を決定する。
【0006】
Psr(t,s)は、時刻t=nTにおいて自機が升目s(Xd,Yd)に到達するとした場合の、時刻tにおいて自機が升目sに存在する確率である。言い換えると、Psr(t,s)は、時刻tにおいて升目sに存在する自機が、時刻t=nTにおいて自機が升目s(Xd,Yd)に到達する可能性を表わす指標である。具体的には、Psr(t,s)が大きい升目に位置する自機ほど、時刻t=nTにおいて自機が升目s(Xd,Yd)に到達する確率が大きくなる。このため、時刻t=0において升目s0に位置する自機が、Psr(T,s0’)を最大にする升目s0’に移動する移動速度wを選択することにより、時刻t=nTにおいて自機が升目s(Xd,Yd)に到達することができる確率が最も高くなるのである。すなわち、このようにして、移動速度wを選択することにより、自機の生存確率を最も高くすることができる。
【発明の効果】
【0007】
本発明により、自機が敵機に容易に破壊されなくなるため、シューティングゲームのデモンストレーションを効率的に行うことができる。
【発明を実施するための最良の形態】
【0008】
[装置構成]
図1に、本発明によるシューティングゲームの自機動作制御装置1の機能構成を例示する。
自機動作制御装置1は、例えば、現在位置取得部2、座標変換部3、第一存在確率計算部4、存在確率記憶部5、自機目標位置決定部8、記憶部10、移動速度決定部11、表示部12、第二自機存在確率計算部91から構成される。
第一存在確率計算部4は、例えば、第一自機存在確率計算部41、敵機存在確率計算部42、敵機攻撃弾存在確率計算部44から構成される。存在確率記憶部5は、例えば、第一自機存在確率記憶部51、敵機存在確率記憶部52、敵機攻撃弾存在確率記憶部53、第二自機存在確率記憶部54から構成される。
第一自機存在確率計算部41は、図6に示すように、例えば、移動確率計算部412、積算部413、加算部414、積算部415、加算部416、積算部417、最大値抽出部419、減算部410から構成される。
【0009】
敵機存在確率計算部42は、図4に示すように、例えば、敵機移動速度部421、移動確率計算部422、積算部423、加算部424、積算部425、加算部426から構成される。
敵機攻撃弾存在確率計算部44は、図5に示すように、例えば、移動確率計算部442、積算部443、加算部444から構成される。
第二自機存在確率計算部91は、例えば、移動確率計算部912、積算部913、加算部914、積算部915、加算部916、積算部917、最大値抽出部919、減算部910から構成される。
【0010】
<シューティングゲームの説明>
図2に、本発明の処理の対象となるシューティングゲームを例示する。画面上には、自機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次元の平面上に位置するものとする。
【0011】
プレイヤーは、自機1を操作して、敵機2と闘う。プレイヤーは、一回の操作で、W種類の移動速度(方向と速さ)で、行動単位時間Tだけ自機を移動させることができる。自機1が取り得るW種類の移動速度(Vxs(w),Vys(w))は予め決められており、それぞれの移動速度(Vxs(w),Vys(w))には、異なる移動速度番号w(w=1,…,W)が付けられているものとする。以下では、移動速度番号wを選択する行動のことを行動wという。また、プレイヤーは、W種類の速度による移動と同時に、敵機2を攻撃するための攻撃弾3を発射する操作をすることができる。
【0012】
例えば、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)
とすることができる。
【0013】
敵機2は、移動速度(Vxei(a),Vyei(a))で移動することができる。敵機2が取り得るA種類の移動速度(Vxei(a),Vyei(a))は予め定められており、それぞれの移動速度(Vxei(a),Vyei(a))には、異なる移動速度番号a(a=1,…,A)が付けられているものとする。以下では、移動速度番号aを選択する行動のことを行動aという。敵機2は、自機を攻撃するために攻撃弾4を任意の速度(方向と速さ)で発射することができる。発射された攻撃弾4は、所定の移動速度(Vxbj,Vybj)で移動する。敵機2は既存のアルゴリズムに従い行動aを選択し、攻撃弾4を発射するものとする。
自機1が、敵機2及び敵機2が発射する攻撃弾4と衝突した場合には、自機1は破壊され、そこでゲームオーバーとなる。逆に、自機1の攻撃弾3が敵機2に衝突した場合には、敵機2は破壊される。自機1の攻撃弾3によりすべての敵機2を破壊した場合には、ユーザは、そのゲームに勝利することになる。
【0014】
本発明による自機動作制御装置及び方法は、このようなシューティングゲームにおいて、プレイヤーに代わって自機の動作を制御する。具体的には、行動単位時間Tごとに自機の移動速度を決定する。以下では、選択された移動速度によって自機が移動を始める時刻tをt=0とする。
【0015】
<ステップ1>
現在位置取得部2は、時刻t=0における自機の位置(xs,ys)、つまり、自機の現在位置(xs,ys)を取得する。座標変換部3は、上記取得された自機の現在位置(xs,ys)を、升目の座標に変換する。
ここで、ゲーム画面は格子に分割されており、その格子の構成単位のことを升目というものとする。例えば、画面の一番左下の升目の座標を(0,0)とし、その(0,0)の升目のX個だけ右に位置し、かつ、Y個だけ上に位置する升目の座標を(X,Y)とすることができる。ここで、XとYは0以上の整数である。
なお、升目の一辺の長さSが、その辺に平行な方向に進む自機の速さVに行動単位時間Tをかけた値になるように、すなわち、S=VTとなるように、ゲーム画面を格子に分割するとよい。このように升目の一辺の長さを設定することにより、ある升目sに存在する自機が、どの移動速度(Vxs(w),Vys(w))に従って移動しても、行動単位時間T後には、必ずある升目sに100%の確率で存在することになる。このため、計算負担を軽減することができる。
【0016】
また、升目の一辺の長さが大きいと、本発明の処理が荒くなり、適切に自機を制御することができない場合がある。したがって、升目の一辺の長さSが、自機の形状に内接する円の直径と、敵機の攻撃弾の形状に内接する円の直径の和の半分の長さの3分の1以下の値になるように、行動単位時間T及び自機の速さVを決定すると良い。
座標変換部3は、上記取得された自機の現在位置(xs,ys)を含む升目s0(Xs,Ys)を選択する。
第一自機存在確率計算部41は、上記選択された升目s0(Xs,Ys)に自機が存在する確率Ps(0,s0)を、Ps(0,s0)=1として、第一自機存在確率記憶部51に格納する。
【0017】
<ステップ2>
現在位置取得部2は、時刻t=0における敵機の位置(xei,yei)を取得する。敵機の初期存在確率計算部45は、上記取得された敵機の位置(xei,yei)を中心とした升目seiと、ゲーム画面を分割した格子を構成する各升目sと重なる部分の面積を計算する。そして、敵機は、その重なった部分の面積に比例した確率で、各升目sに存在しているものとする。すなわち、敵機の位置(xei,yei)を中心とした升目seiと、ゲーム画面を分割した格子を構成する各升目sj(j=1〜4)が重なっている面積を、D(sei,sj)とすると、敵機が、各升目sj(j=1〜4)に存在している確率Pei(t,sj)は、
Pei(t,sj)=D(sei,sj)/ΣD(sei,sj) …(1)
として与えられる。
【0018】
例えば、図3に示すように、敵機の位置(xei,yei)を中心とした升目seiと、ゲーム画面を分割した格子を構成する各升目sj(j=1〜4)が重なっているとする。すなわち、升目seiと升目s1が重なっている部分の面積D(sei,s1)=8、升目seiと升目s2が重なっている部分の面積D(sei,s2)=8、升目seiと升目s3が重なっている部分の面積D(sei,s3)=2、升目seiと升目s4が重なっている部分の面積D(sei,s4)=2であるとする。このとき、敵機が升目sj(j=1〜4)に存在している確率は、次のようして与えられる
Pei(t,s1)=D(sei,s1)/ΣD(sei,sj)=8/20=0.4
Pei(t,s2)=D(sei,s2)/ΣD(sei,sj)=8/20=0.4
Pei(t,s3)=D(sei,s3)/ΣD(sei,sj)=2/20=0.1
Pei(t,s4)=D(sei,s4)/ΣD(sei,sj)=2/20=0.1
敵機の初期存在確率計算部45は、上記のようにして、時刻t=0における敵機が升目sに存在する確率Pei(0,s)を計算して、その計算された確率を敵機存在確率記憶部52に格納する。
【0019】
上記説明では、升目seiが4つの升目sと重なる場合を例に取って説明したが、升目seiが4つの以上の升目sと重なる場合、升目seiが2つの升目sと重なる場合、升目seiが1つの升目sと重なる場合であっても、同様に上記(1)式により、敵機が各升目sに存在する確率を求めることができる。
なお、例えば、敵機の形状に内接する円の直径と、自機の形状に内接する円の直径との和の半分の値を、敵機の位置(xei,yei)を中心とした升目seiの一辺の長さにすることができる。
また、敵機が複数存在する場合には、すべての敵機i(i=1,・・・,I)について上記確率を計算して、その確率Pei(t,s)(i=1,・・・,I)を敵機存在確率記憶部52に格納する。Pei(t,s)(i=1,・・・,I)は、配列である。
【0020】
<ステップ3>
現在位置取得部2は、時刻t=0における敵機の攻撃弾の位置(xbj,ybj)を取得する。敵機攻撃弾の初期存在確率計算部46は、上記取得された敵機の攻撃弾の位置(xbj,ybj)を中心とした升目sbjと、ゲーム画面を分割した格子を構成する各升目sと重なる部分の面積を計算する。そして、敵機の攻撃弾は、その重なった部分の面積に比例した確率Pbj(0,s)で、各升目sに存在しているものとする。その確率の計算方法は、上述した敵機が各升目sに存在している確率Pei(0,s)を求める方法と同様である。
なお、例えば、敵機の攻撃弾の形状に内接する円の直径と、自機の形状に内接する円の直径との和の半分の値を、敵機の位置(xbj,ybj)を中心とした升目sbjの一辺の長さにすることができる。
また、敵機の攻撃弾が複数存在する場合には、すべての敵機の攻撃弾j(j=1,・・・,J)について上記確率を計算して、その確率Pbj(t,s)(j=1,・・・,J)を敵機存在確率記憶部52に格納する。Pbj(t,s)(j=1,・・・,J)は、配列である。
【0021】
<ステップ4>
敵機存在確率計算部42は、τ=0,T,…,(n−1)Tとし、時刻t=τにおける敵機が升目se’(i)に存在する確率Pei(τ,se’(i))に基づいて、時刻t=τから行動単位時間T経過後の時刻t=τ+Tにおける敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を求める。そして、この処理を繰り返すことによって、最終的に、敵機存在確率計算部42は、各時刻t=kT(k=1…n)ごとに、敵機が升目se(i)に存在している確率を求める。計算した確率Pei(t,se(i))(t=kT(k=1…n))は、敵機存在確率記憶部52に格納される。
まず、敵機存在確率計算部42は、次式を計算することによって、時刻t=τにおける敵機が升目se’(i)に存在する確率Pei(τ,se’(i))に基づいて、t=τ+Tにおける敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を求める。
【0022】
Pei(τ+T,se(i))=Σ{Ps(τ,s)・Σse(i){Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))}} …(2)
ここで、Ai(s,se’(i),t)は、自機が存在する升目sの座標と、敵機が存在する升目se’(i)の座標に依存して、移動速度番号aを決定する関数である。Ai(s,se’(i),t)としては、任意の既存のアルゴリズムを利用することができる。例えば、Ai(s,se’(i),t)としては、時刻tにおいて自機が存在する升目sの中心の座標から、時刻tにおいて敵機が存在する升目se’(i)の中心の座標を引いたベクトルの向きに最も近い方向を与える移動速度(Vxei(a),Vyei(a))の番号aを選択するアルゴリズムを用いることができる。
【0023】
Ptrei(se’(i),se(i),Ai(s,se’(i),τ))は、時刻t=τにおいて升目se’(i)に存在する敵機が、移動速度番号a=Ai(s,se’(i),τ))の移動速度(Vxei(a),Vyei(a))に従って行動単位時間Tだけ移動することによって、時刻t=τ+Tにおいて升目se(i)に存在している確率である。Ptrei(se’(i),se(i),Ai(s,se’(i),τ))の計算の仕方については後述する。
【0024】
以下、図4を参照して、上記式(2)の計算について説明する。図4は、敵機存在確率計算部42の機能構成を例示する図である。
敵機移動速度決定部421は、時刻t=τにおいて自機が存在している升目sと、敵機が存在している升目se’(i)とから、上記に例示した既存のアルゴリズムを用いて、敵機の移動速度番号a=Ai(s,se’(i),t)を決定する。
移動確率計算部422は、升目se’(i)に存在している敵機が、上記求まった敵機の移動速度番号aに対応した移動速度で行動単位時間Tだけ移動した結果、升目se’(i)に存在している確率Ptrei(se’(i),se(i),Ai(s,se’(i),τ))を計算する。
積算部423は、上記計算されたPtrei(se’(i),se(i),Ai(s,se’(i),τ))と、敵機存在確率記憶部52から読み出した敵機が升目se’(i)に存在している確率Pei(τ,se’(i))との積Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))を求める。
【0025】
このようにして、敵機移動速度決定部421と移動確率計算部422と積算部423は、自機が存在する升目sを所与として、すべての升目se’(i)について上記Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))を計算する。
加算部424は、各升目se’(i)ごとに上記計算されたPtrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))を加算する。すなわち、Σse’(i){Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))}を計算する。
積算部425は、上記計算されたΣse’(i){Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))}と、時刻t=τにおける自機が升目sに存在する確率Ps(τ,s)との積Ps(τ,s)・Σse’(i){Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))}を求める。
【0026】
このようにして、敵機移動速度決定部421と移動確率計算部422と積算部423と加算部424と積算部425は、すべての自機が存在する升目sについて上記Ps(τ,s)・Σse’(i){Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))}を計算する。
加算部426は、各升目sごとに求まった上記Ps(τ,s)・Σse’(i){Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))}を加算する。すなわち、Σ{Ps(τ,s)・Σse’(i){Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))}}を計算する。
【0027】
このように、敵機存在確率計算部42は、自機が存在するすべての升目sを考慮して、時刻t=τにおける敵機が升目se’(i)に存在する確率Pei(τ,se’(i))に基づいて、t=τ+Tにおける敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を求める。
上記の処理をすべてのτ(τ=T,…,(n−1)T)について、τが小さい順に行い、各時刻ごとに敵機が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて、敵機が升目sに存在する確率を求める。これらの計算された確率は、敵機存在確率記憶部52に格納される。
【0028】
なお、ステップ4では、自機が存在する升目sと敵機が存在する升目se(i)を区別する必要があるため、升目sと升目se(i)のように表記を分けている。しかし、画面上を分割した格子の構成単位という意味では、升目sと升目se(i)は同じ升目を意味する。
また、式(2)と数学的に等しい式である次の式、
Pei(τ+T,se(i))=ΣΣse(i){Ps(τ,s)・Ptrei(se’(i),se(i),Ai(s,se’(i),τ))・Pei(τ,se’(i))} …(2a)
に基づいて、敵機の存在確率Pei(τ+T,se(i))を求めても良い。
【0029】
<ステップ5>
敵機攻撃弾存在確率計算部44は、時刻t=τにおける敵機の攻撃弾が升目sb’(j)に存在する確率Pbj(τ,sb’(j))に基づいて、時刻t=τ+Tにおける敵機の攻撃弾が升目sb(j)に存在する確率Pbj(τ,sb(j))を求める。そして、敵機攻撃弾存在確率計算部44は、この処理を繰り返すことによって、最終的に、各時刻t=kT(k=1…n)ごとに、敵機の攻撃弾が升目sb(i)に存在している確率を求める。計算した確率Pbj(t,sb(j))(t=kT(k=1…n))は、敵機攻撃弾存在確率記憶部53に格納される。
まず、敵機攻撃弾存在確率計算部44は、次式を計算することによって、時刻t=τにおける敵機の攻撃弾が升目sb’(j)に存在する確率Pbj(τ,sb’(j))に基づいて、時刻t=τ+Tにおける敵機の攻撃弾が升目sb(j)に存在する確率Pbj(τ,sb(j))を求める。
【0030】
Pbj(τ+T,sb(j))=Σsb’(j){Ptrbj(sb’(j),sb(j))・Pbj(τ,sb’(j))} …(3)
ここで、Ptrbj(sb’(j),sb(j))は、時刻t=τにおいて升目sb’(j)に存在する敵機の攻撃弾が、所定の移動速度(Vxbj,Vybj)に従って行動単位時間Tだけ移動することによって、時刻t=τ+Tにおいて升目sb(j)に存在している確率である。Ptrbj(sb’(j),sb(j))の計算の仕方については後述する。
【0031】
以下、図5を参照して、上記式(3)の計算について説明する。図5は、敵機攻撃弾存在確率計算部44の機能構成を例示する図である。
移動確率計算部442は、升目sb’(j)に存在している敵機の攻撃弾が、記憶部10から読み出した所定の移動速度(Vxbj,Vybj)で行動単位時間Tだけ移動した結果、升目sb’(j)に存在している確率Ptrbj(sb’(j),sb(j))を計算する。
積算部443は、上記計算されたPtrbj(sb’(j),sb(j))と、敵機攻撃弾存在確率記憶部53から読み出した敵機の攻撃弾が升目sb’(j)に存在している確率Pbj(τ,sb’(j))との積Ptrbj(sb’(j),sb(j))・Pbj(τ,sb’(j))を求める。
このようにして、移動確率計算部442と積算部443は、すべての升目sb’(j)について上記Ptrbj(sb’(j),sb(j))・Pbj(τ,sb’(j))を計算する。
加算部444は、各升目sb’(j)ごとに上記計算されたPtrbj(sb’(j),sb(j))・Pbj(τ,sb’(j))を加算する。すなわち、Σsb’(j){Ptrbj(sb’(j),sb(j))・Pbj(τ,sb’(j))}を計算する。
【0032】
このように、敵機攻撃弾存在確率計算部44は、時刻t=τにおける敵機の攻撃弾が升目sb’(j)に存在する確率Pbj(τ,sb’(j))に基づいて、t=τ+Tにおける敵機が升目sb(j)に存在する確率Pbj(τ+T,sb(j))を求める。
上記の処理をすべてのτ(τ=T,…,(n−1)T)について、τが小さい順に行い、各時刻ごとに敵機の攻撃弾が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて、敵機の攻撃弾が升目sに存在する確率を求める。これらの計算された確率は、敵機攻撃弾存在確率記憶部53に格納される。
【0033】
<ステップ6>
第一自機存在確率計算部41は、τ=0,T,…,(n−1)Tとし、時刻t=τにおける自機が升目s’に存在する確率Ps(τ,s’)に基づいて、時刻t=τから行動単位時間T経過後の時刻t=τ+Tにおける自機が升目sに存在する確率Ps(τ+T,s)を求める。そして、この処理を繰り返すことによって、最終的に、第一自機存在確率計算部41は、各時刻t=kT(k=1…n)ごとに、自機が升目sに存在している確率を求める。計算した確率Ps(t,s)(t=kT(k=1…n))は、第一自機存在確率記憶部51に格納される。
まず、第一自機存在確率計算部41は、次式を計算することによって、時刻t=τにおける自機が升目s’に存在する確率Ps(τ,s’)に基づいて、t=τ+Tにおける自機が升目sに存在する確率Ps(τ+T,s)を求める。
【0034】
Ps(τ+T,s)=(1−max(Pei(t+T,s),Pbj(t+T,s)))Σ{Psel(w,τ)・Σs’{Ptrs(s’,s,w))・Ps(τ,s’)}} …(4)
ここで、Psel(w,t)は、時刻tにおいて自機が移動速度番号wを選択する確率である。例えば、自機が等しい確率で移動速度番号wを選択すると仮定して、Psel(w,t)=1/Wとすることができる。この他にも、ユーザが任意にPsel(w,t)の値を選択することができる。Psel(w,t)の値は予め設定され、記憶部10に格納されているものとする。
【0035】
Ptrs(s’,s,w)は、時刻t=τにおいて升目s’に存在する自機が、移動速度番号wの移動速度(Vxs(w),Vys(w))に従って行動単位時間Tだけ移動することによって、時刻t=τ+Tにおいて升目sに存在している確率である。Ptrs(s’,s,w)の計算の仕方については後述する。
以下、図6を参照して、上記式(4)の計算について説明する。図6は、第一自機存在確率計算部41の機能構成を例示する図である。
移動確率計算部412は、升目s’に存在している自機が、自機の移動速度番号wに対応した移動速度(Vxs(w),Vys(w))で行動単位時間Tだけ移動した結果、升目s’に存在している確率Ptrs(s’,s,w)を計算する。
積算部413は、上記計算されたPtrs(s’,s,w)と、第一自機存在確率記憶部51から読み出した自機が升目s’に存在している確率Ps(τ,s’)との積Ptrs(s’,s,w)・Ps(τ,s’)を求める。
【0036】
このようにして、移動確率計算部412と積算部413は、すべての升目s’について上記Ptrs(s’,s,w)・Ps(τ,s’)を計算する。
加算部414は、各升目s’ごとに上記計算されたPtrs(s’,s,w)・Ps(τ,s’)を加算する。すなわち、Σs’{Ptrs(s’,s,w)・Ps(τ,s’)}を計算する。
積算部415は、上記計算されたΣs’{Ptrs(s’,s,w)・Ps(τ,s’)}と、記憶部10から読み出した、時刻t=τにおける自機が移動速度番号wを選択する確率Psel(w,τ)との積Psel(w,τ)・Σs’{Ptrs(s’,s,w)・Ps(τ,s’)}を求める。
【0037】
このようにして、移動確率計算部412と積算部413と加算部414と積算部415は、すべての自機が取り得る移動速度番号wについて上記Psel(w,τ)・Σs’{Ptrs(s’,s,w)・Ps(τ,s’)}を計算する。
加算部416は、各移動速度番号wごとに求まった上記Psel(w,τ)・Σs’{Ptrs(s’,s,w)・Ps(τ,s’)}を加算する。すなわち、ΣPsel(w,τ)・Σs’{Ptrs(s’,s,w)・Ps(τ,s’)}を計算する。
最大値抽出部419は、max(Pei(τ+T,s),Pbj(τ+T,s))を計算する。すなわち、敵機存在確率記憶部52から読み出した時刻t=τ+Tにおいて敵機が升目sに存在する確率Pei(τ+T,s)(i=1,・・・,I)と、敵機攻撃弾存在確率記憶部53から読み出した時刻t=τ+Tにおいて敵機の攻撃弾が升目sに存在する確率Pbj(τ+T,s)(j=1,・・・,J)とを比較して、最も大きい値を出力する。
【0038】
すなわち、すべてのi=1,・・・,IについてのPei(τ+T,s)と、j=1,・・・,JについてのPbj(τ+T,s)とを比較して最も大きい値を出力する。
減算部410は、1から、上記計算されたmax(Pei(τ+T,s),Pbj(τ+T,s))を減算した値を計算する。
積算部417は、加算部416が計算したΣPsel(w,τ)・Σs’{Ptrs(s’,s,w)・Ps(τ,s’)}と、減算部410が計算した1−max(Pei(τ+T,s),Pbj(τ+T,s))との積を求める。
【0039】
このようにして、1−max(Pei(τ+T,s),Pbj(τ+T,s))を乗算することにより、時刻t=τ+Tにおいて敵機又は敵機の攻撃弾が升目sに存在している場合には自機が破壊されたものとして、自機の存在確率Ps(τ,s)を計算することができる。
このようにして、第一自機存在確率計算部41は、時刻t=τにおける自機が升目sに存在する確率Ps(τ,s)に基づいて、時刻t=τ+Tにおける自機が升目sに存在する確率Ps(τ+T,s)を計算する。
上記の処理をすべてのτ(τ=T,…,(n−1)T)について、τが小さい順に行い、各時刻ごとに自機が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて、自機が升目sに存在する確率を求める。これらの計算された確率は、第一自機存在確率記憶部51に格納される。
【0040】
<移動確率の計算方法>
以下、升目s’に存在する敵機が敵機の移動速度番号aの移動速度(Vxei(a),Vyei(a))に従って行動単位時間Tだけ移動することによって升目sに移動する確率Ptrei(s’,s,a)、升目s’に存在する敵機の攻撃弾が所定の移動速度(Vxbj,Vybj)に従って行動単位時間Tだけ移動することによって升目sに移動する確率Ptrbj(s’,s)、升目s’に存在する自機が移動速度番号wの移動速度(Vxs(w),Vys(w))に従って行動単位時間Tだけ移動することによって升目sに移動する確率Ptrs(s’,s,w)の求め方について説明する。
【0041】
まず、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全体の面積に対する比率をPtr(s’,s,w)とする。すなわち、ステップ2で、敵機の存在確率を計算したのと同様にして、Prt(s’,s,w)を求める。
【0042】
例えば、図17に示すように、升目sdsが、升目s1〜s9と重なったとする。ここで、各升目に記載された0から1までの数値は、升目sdsとその升目が重なる面積の、その升目の面積に対する比率を表わしたものである。このとき、Ptr(s’,s1,w)=0.2、Ptr(s’,s2,w)=0.33、Ptr(s’,s3,w)=0.09、Ptr(s’,s4,w)=0.6、Ptr(s’,s5,w)=1、Ptr(s’,s6,w)=0.24、Ptr(s’,s7,w)=0.25、Ptr(s’,s8,w)=0.38、Ptr(s’,s9,w)=0.1となる。
【0043】
次に、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)とする。
【0044】
最後に、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)とする。
【0045】
このように、敵機が位置する升目の一辺の長さ、及び、この升目を敵機の位置の変位量(dxei,dyei)だけ移動させた升目sdeiの一辺の長さを、敵機の大きさ(敵機の形状に内接する円の直径)と自機の大きさ(自機の形状に内接する円の直径)の和の半分の値とすると、敵機が自機を破壊することができる範囲と上記升目が覆う範囲がほぼ同一となり、敵機と自機の接触をより適切に判定することができる。なお、敵機の攻撃弾が位置する升目を敵機の攻撃弾の位置の変位量(dxbj,dybj)だけ移動させた升目sdbjの一辺の長さを、敵機攻撃弾の大きさ(敵機の攻撃弾の形状に内接する円の直径)と自機の大きさ(自機の形状に内接する円の直径)の和の半分の値とした理由についても同様である。
【0046】
<ステップ7>
自機目標位置決定部8は、第一自機存在確率記憶部51からt=nTにおいて自機が敵機及び敵機の攻撃弾によって破壊されないで各升目sに存在する確率Ps(nT,s)のうち、その確率を最も高くする升目を選択して、その升目を目標位置(Xd,Ys)とする。計算された目標位置(Xd,Ys)は、第二自機存在確率計算部91に出力される。
【0047】
上記のようにして計算された目標位置(Xd,Yd)は、自機が、敵機及び敵機の攻撃弾を避けつつ最も到達しやすい位置である。言い換えると、上記目標位置(Xd,Yd)を目指す行動が、自機の生存率を最も高くするということができる。
通常の探索計算では、例えば自機の未来の移動パターン(例えば、Wのn乗通りの移動方向選択履歴を表わす順列)の一つ一つのデータを保持する必要があるため探索の深さnが増すと累乗で計算時間が増す。しかし、上記のようにして探索の計算をすると、探索の深さnが増しても高々探索の深さnに比例して計算時間が増すだけであり、実時間性の要求を満たすことができるというメリットがある。
【0048】
<ステップ8>
第二自機存在確率計算部91は、時刻t=nTにおいて自機が上記目標位置(Xd,Yd)に到達することが確定している場合に時刻t=τ+Tにおいて自機が升目s’に存在する確率Psr(τ+T,s’)に基づいて、時刻t=nTにおいて自機が上記目標位置(Xd,Yd)に到達することが確定している場合に時刻t=τにおいて自機が升目sに存在する確率Psr(τ,s)を計算する。この計算を、すべてのτ=mT(mはn−1以下の自然数)について行うことにより、最終的に、時刻t=nTにおいて自機が上記目標位置に到達することが確定している場合に、時刻t=Tにおいて自機が各升目sに存在する確率Psr(T,s)を計算する。計算された確率Psr(t,s)は、第二自機存在確率記憶部54に格納される。
【0049】
まず、第二自機存在確率計算部91は、次式を計算することによって、時刻t=nTにおいて自機が上記目標位置(Xd,Yd)に到達することが確定している場合に時刻t=τ+Tにおける自機が升目s’に存在する確率Psr(τ+T,s’)に基づいて、時刻t=nTにおいて自機が上記目標位置(Xd,Yd)に到達することが確定している場合にt=τにおける自機が升目sに存在する確率Psr(τ,s)を求める。
【0050】
Psr(τ,s)=(1−max(Pei(t,s),Pbj(t,s)))Σ{Psel(w,τ)・Σs’{Ptrs(s,s’,w))・Psr(τ+T,s’)}} …(5)
ステップS6で説明したように、Psel(w,t)は、時刻tにおいて自機が移動速度番号wを選択する確率であり、Ptrs(s,s’,w)は、時刻t=τにおいて升目sに存在する自機が、移動速度番号wの移動速度(Vxs(w),Vys(w))に従って行動単位時間Tだけ移動することによって、時刻t=τ+Tにおいて升目s’に存在している確率である。
【0051】
以下、図7を参照して、上記式(5)の計算について説明する。図7は、第二自機存在確率計算部91の機能構成を例示する図である。
移動確率計算部912は、升目sに存在している自機が、自機の移動速度番号wに対応した移動速度(Vxs(w),Vys(w))で行動単位時間Tだけ移動した結果、升目s’に存在している確率Ptrs(s,s’,w)を計算する。
積算部913は、上記計算されたPtrs(s,s’,w)と、第二自機存在確率記憶部54から読み出したPsr(τ+T,s’)との積Ptrs(s,s’,w)・Psr(τ+T,s’)を求める。
このようにして、移動確率計算部912と積算部913は、すべての升目s’について上記Ptrs(s,s’,w)・Psr(τ+T,s’)を計算する。
加算部914は、各升目s’ごとに上記計算されたPtrs(s,s’,w)・Psr(τ+T,s’)を加算する。すなわち、Σs’{Ptrs(s,s’,w)・Psr(τ+T,s’)}を計算する。
積算部915は、上記計算されたΣs’{Ptrs(s,s’,w)・Psr(τ+T,s’)}と、記憶部10から読み出した、時刻t=τにおける自機が移動速度番号wを選択する確率Psel(w,τ)との積Psel(w,τ)・Σs’{Ptrs(s,s’,w)・Psr(τ+T,s’)}を求める。
【0052】
このようにして、移動確率計算部912と積算部913と加算部914と積算部915は、すべての自機が取り得る移動速度番号wについて上記Psel(w,τ)・Σs’{Ptrs(s,s’,w)・Psr(τ+T,s’)}を計算する。
加算部916は、各移動速度番号wごとに求まった上記Psel(w,τ)・Σs’{Ptrs(s,s’,w)・Psr(τ+T,s’)}を加算する。すなわち、ΣPsel(w,τ)・Σs’{Ptrs(s,s’,w)・Psr(τ+T,s’)}を計算する。
最大値抽出部919は、max(Pei(τ,s),Pbj(τ,s))を計算する。すなわち、敵機存在確率記憶部52から読み出した時刻t=τにおいて敵機が升目sに存在する確率Pei(τ,s)(i=1,・・・,I)と、敵機攻撃弾存在確率記憶部53から読み出した時刻t=τにおいて敵機の攻撃弾が升目sに存在する確率Pbj(τ,s)(j=1,・・・,J)とを比較して、最も大きい値を出力する。
【0053】
すなわち、すべてのi=1,・・・,IについてのPei(τ,s)と、j=1,・・・,JについてのPbj(τ,s)とを比較して最も大きい値を出力する。
減算部910は、1から、上記計算されたmax(Pei(τ,s),Pbj(τ,s))を減算した値を計算する。
積算部917は、加算部916が計算したΣPsel(w,τ)・Σs’{Ptrs(s,s’,w)・Psr(τ+T,s’)}と、減算部910が計算した1−max(Pei(τ,s),Pbj(τ,s))との積を求める。
【0054】
このようにして、1−max(Pei(τ,s),Pbj(τ,s))を乗算することにより、時刻t=τにおいて敵機又は敵機の攻撃弾が升目sに存在している場合には自機が破壊されたものとして、確率Psr(τ,s)を計算することができる。
このようにして、第二自機存在確率計算部91は、確率Psr(τ+T,s)に基づいて、確率Psr(τ,s)を計算する。
上記の処理をすべてのτ(τ=T,…,(n−1)T)について、τが小さい順に行い、時刻t=nTにおいて自機が上記目標位置(Xd,Yd)に到達することが確定している場合の、各時刻における自機が升目sに存在する確率を求め、最終的に、時刻t=nTにおいて自機が上記目標位置(Xd,Yd)に到達することが確定している場合に、時刻t=Tにおいて自機が升目sに存在する確率を求める。これらの計算された確率は、第二自機存在確率記憶部54に格納される。
【0055】
<ステップ9>
移動速度決定部11は、時刻t=0における自機が時刻t=Tにおいて到達することができる升目s0’のうち、第二自機存在確率記憶部54から読み出した確率Psr(T,s0’)を最も高くする升目に移動するように、時刻t=0における自機の移動速度を決定する。
升目の一辺の長さが、その辺に平行な方向に進む自機の速さに行動単位時間Tをかけた値に設定されている場合には、時刻t=0における自機が存在する升目s0に隣接する升目又は升目s0が、時刻t=0における自機が時刻t=Tにおいて到達することができる升目s0’となる。
【0056】
移動速度決定部11は、この升目s0’の中で、第二自機存在確率記憶部54から読み出した確率Psr(T,s0’)を最も高くする升目を選択する。そして、この升目に移動する自機の移動速度番号wを決定する。移動速度決定部11は、この移動速度番号wの移動速度(Vxs(w),Vys(w)))に従って移動する自機の、行動単位時間T後位置を計算して、その移動後の自機を表示部12に出力する。
以上のステップ1〜ステップ9の処理を、行動単位時間Tごとに行うことにより、各行動単位ステップにおける自機の移動速度を決定する。以上が、本実施形態の概要である。
なお、出願時における計算機の能力を考慮すると、上記探索計算における探索の深さnとしては、10〜20程度にすると望ましい。しかし、計算機の性能が今後向上すれば、探索の深さnをさらに大きな値にすることができる。
【0057】
[変形例1]
図7に示された第二自機存在確率計算部91に替えて、図8,9に示された第二自機存在確率計算部92を用いても良い。図8,9は第二自機存在確率計算部92の機能構成を例示する図である。
図8に示された第二自機存在確率計算部92の機能構成は、図7に示された第二自機存在確率計算部91の機能構成と同じである。第二自機存在確率計算部92は、図9に示された機能構成・処理を有する点で、第二自機存在確率計算部91と異なる。第二自機存在確率計算部92は、第二自機存在確率計算部91と同じ処理で求めたPsr(τ,s)を、より敵機を破壊することができるように補正したPsr’(τ,s)を計算する。
【0058】
第二自機存在確率計算部92の移動確率計算部912、積算部913、加算部914、積算部915、加算部916、積算部917、最大値抽出部919、減算部910は、第二自機存在確率計算部91と同じであるため、説明を省略する。
射線判定部922(図9)は、升目sに存在する自機の射線上にある升目scを選択する。例えば、自機が画面の上方向に攻撃弾を発射する場合には、升目sの座標を(X,Y)とすると、(Xc,Yc)(Xc=X,Yc>Y)を座標に持つ升目が、自機の射線上にある升目scとなる。
加算部923は、升目scに存在する敵機の存在確率Pei(τ,s)を加算する。すなわち、Σsc∈sPei(τ,s)を計算する。そして、計算されたΣsc∈sPei(τ,s)に1を加算する。
積算部924は、記憶部10から予め定められた定数bを読み出し、上記計算された1+Σsc∈sPei(τ,s)に乗算する。
積算部925は、積算部917が計算したPsr(τ,s)に、上記計算されたb(1+Σsc∈sPei(τ,s))を乗算する。これにより、敵機をより多く破壊することができる位置に、より高い確率で自機が存在するようにすることができる。
積算部925は、すべての升目sについて、上記確率b(1+Σsc∈sPei(τ,s))・Psr(τ,s)を求める。
加算部926は、積算部925がすべての升目sにすいて求めた確率b(1+Σsc∈sPei(τ,s))・Psr(τ,s)を加算する。すなわち、Σb(1+Σsc∈sPei(τ,s))・Psr(τ,s)を計算する。
【0059】
割算部927は、各升目sごとに、Psr’(τ,s)={b(1+Σsc∈sPei(τ,s))・Psr(τ,s)}/{Σb(1+Σsc∈sPei(τ,s))・Psr(τ,s)}を演算する。この演算結果が、Psr’(τ,s)となる。
このように、加算部926と割算部927は、積算部925が求めた確率b(1+Σsc∈sPei(τ,s))・Psr(τ,s)を正規化し、ΣPsr’(τ,s)=1となるようにする。
なお、加算部923の替わりに、最大値抽出部923’を設けても良い。最大値抽出部923’は、maxsc∈sPei(τ、s)を計算する。そして、この値に1を加算した値を積算部924に出力する。他の処理は、上述したものと同様である。
【0060】
[変形例2]
自機の位置が常にゲーム画面の中央付近にあることは、未来において不測の事態が生じた場合に、ゲーム画面端のような自機の移動が制限される状況を生み出さないためにも重要である。
このため、図7に示された第二自機存在確率計算部91に替えて、図8,10に示された第二自機存在確率計算部93を用いても良い。図8,10は第二自機存在確率計算部93の機能構成を例示する図である。
図8に示された第二自機存在確率計算部93の機能構成は、図7に示された第二自機存在確率計算部91の機能構成と同じである。第二自機存在確率計算部93は、図10に示された機能構成・処理を有する点で、第二自機存在確率計算部91と異なる。第二自機存在確率計算部93は、第二自機存在確率計算部91と同じ処理で求めたPsr(τ,s)を、自機がよりゲーム画面の中央に位置するように補正したPsr’’(τ,s)を計算する。
【0061】
第二自機存在確率計算部93の移動確率計算部912、積算部913、加算部914、積算部915、加算部916、積算部917、最大値抽出部919、減算部910は、第二自機存在確率計算部91と同じであるため、説明を省略する。
距離計算部932(図10)は、ゲーム画面の中央と、自機が存在する升目sとの距離rを計算する。
割算部934は、記憶部10から予め定められた定数dを読み出し、上記計算されたrで割算をして、d/rを求める。
積算部935は、積算部917が計算したPsr(τ,s)に、上記計算されたd/rを乗算して、(d/r)・Psr(τ,s)を求める。このように、ゲーム画面の中央に位置する自機の存在確率を高くすることにより、自機がよりゲーム画面の中央に位置するように制御することができる。
加算部926と割算部927は、変形例1で説明したのと同様の方法で、上記補正された確率(d/r)・Psr(τ,s)を正規化して、確率Psr’’(τ,s)を計算する。
【0062】
なお、d/rではなく、距離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)を用いて、確率Psr(τ,s)を補正しても良い。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ではない値に適宜に設定することで、画面中央から離れた升目sのPsr(τ,s)を事実上無駄にしない、あるいは、画面中央から離れた升目sのPsr(τ,s)を過小評価しないことができる。
【0063】
また、上記変形例1と上記変形例2を組み合わせて行っても良い。すなわち、上記変形例1で求めたPsr’(τ,s)を、図10の積算部935に入力することにより、また、上記変形例2で求めたPsr’’(τ,s)を、図9の積算部925に入力することにより、より多くの敵機を破壊することができ、かつ、よりゲーム画面の中央に自機が位置するようにPsr(τ,s)を補正した確率Psr’’’(τ,s)を求めて、本発明を実施しても良い。
【0064】
[変形例3]
上記実施形態では、敵機存在確率計算部42は、上記式(2)を用いて、時刻t=τにおける敵機が升目se’(i)に存在する確率Pei(τ,se’(i))に基づいて、時刻t=τ+Tにおける敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を求めた。
しかし、敵機iの移動速度aの決定関数が、敵機の升目se’(i)と自機の升目sと時刻tによって、確率的に記述される場合には、敵機存在確率計算部42に替えて敵機存在確率計算部43が、上記式(2)に替えて、
Pei(τ+T,se(i))=Σ{Ps(τ,s)・Σse(i)Σ{PAi(a,s,se’(i),τ)・Ptrei(se’(i),se(i),a)・Pei(τ,se’(i))}} …(6)
を、図12に示すように計算することにより、時刻t=τにおける敵機が升目se(i)に存在する確率Pei(τ,se’(i))に基づいて、時刻t=τ+Tにおける敵機が升目se(i)に存在する確率Pei(τ+T,se’(i))を求めても良い。
【0065】
ここで、PAi(a,s,se’(i),τ)は、敵機の升目se’(i)と自機の升目sと時刻tによって、移動速度番号aが選択される確率である。
また、上記式(6)と数学的に等しい次式
Pei(τ+T,se(i))=ΣΣse(i)Σ{Ps(τ,s)・PAi(a,s,se’(i),τ)・Ptrei(se’(i),se(i),a)・Pei(τ,se’(i))} …(6a)
に基づいて、時刻t=τ+Tにおける敵機が升目se(i)に存在する確率Pei(τ+T,se’(i))を求めても良い。
上記(2)式、(6)式は、敵機の未来での移動を考慮した敵機の各位置での正確な存在確率の計算方法である。
【0066】
しかし、計算機に十分な速度や記憶容量がない場合には、図13に示す敵機存在確率計算部44、又は、図14に示す敵機存在確率計算部45が、以下の簡略化した式に基づいて計算をしても良い。
Pei(τ+T,se(i))=Σse(i){Ptrei(se’(i),se(i),Ai(smax,se’(i),τ))・Pei(τ,se’(i))}} …(2’)
Pei(τ+T,se(i))=Σse(i)Σ{PAi(a,smax,se’(i),t−1)・Ptrei(se’(i),se(i),a)・Pei(τ,se’(i))}} …(6’)
上記(2’)式、(6’)は、自機の升目sについて和を取ることを省略した代わりに、関数Aiと関数PAiが参照する升目sを、時刻t=τにおける自機の存在確率Ps(τ,s)を最大化する升目smaxとしたものである。
【0067】
また、図15に示す敵機存在確率計算部46、又は、図16に示す敵機存在確率計算部47が、さらに簡略化した、下記の式を用いて計算をしても良い。
Pei(τ+T,se(i))=Σse(i){Ptrei(se’(i),se(i),Ai(τ))・Pei(τ,se’(i))}} …(2’’)
Pei(τ+T,se(i))=Σse(i)Σ{PAi(a,t−1)・Ptrei(se’(i),se(i),a)・Pei(τ,se’(i))}} …(6’’)
上記(2’’)式、(6’’)は、関数Aiと関数PAiが、時刻tのみに依存することとしたものである。
【0068】
[変形例4]
上記実施形態においては、格子は画面に固定されており、t=zTにおける自機の位置が升目の中心に位置するとは限らなかった(zは整数)。そこで、t=zTにおける自機の現在位置が升目の中心に位置するように、格子を張り直しても良い。t=zTにおける自機の現在位置が升目の中心に位置するように格子を張り直すことにより、升目の一辺の長さSがS=VTである場合には、Ptr(s’,s,w)の値が必ず0か1となる。なぜなら、かかる場合には、x軸方向とy軸方向の自機の位置の変位量と、升目の一辺の長さが一致するため、升目t=zTにおいて自機が位置する升目を自機の位置の変位量(dxs,dys)だけ移動させた升目sdsは、格子上の升目とずれがなく、ぴったりと重なるからである。
【0069】
その他の実施例・変形例について
また、上記シューティングゲームの自機動作制御装置・方法をコンピュータによって実現することができる。この場合、シューティングゲームの自機動作制御装置・方法の内容はプログラムによって記述される。そして、このプログラムを、図11に示すようなコンピュータで実行することにより、上記シューティングゲームの自機動作制御装置・方法の処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、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)等を用いることができる。
【0070】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0071】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームの自機動作制御装置・方法を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
以上の各実施形態の他、本発明であるシューティングゲームの自機動作制御装置・方法等は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0072】
【図1】シューティングゲームの自機動作制御装置の機能構成を例示した図。
【図2】シューティングゲームの模式図。
【図3】存在確率の計算についての説明を補助する図。
【図4】敵機存在確率計算部42の機能構成を例示した図。
【図5】敵機攻撃弾存在確率計算部44の機能構成を例示した図。
【図6】第一自機存在確率計算部41の機能構成を例示した図。
【図7】第二自機存在確率計算部91の機能構成を例示した図。
【図8】第二自機存在確率計算部92,93の機能構成を例示した図。
【図9】第二自機存在確率計算部92の機能構成を例示した図。
【図10】第二自機存在確率計算部93の機能構成を例示した図。
【図11】シューティングゲームの自機動作制御装置・方法をコンピュータにより実行する場合の機能構成を例示した図。
【図12】敵機存在確率計算部43の機能構成を例示した図。
【図13】敵機存在確率計算部44の機能構成を例示した図。
【図14】敵機存在確率計算部45の機能構成を例示した図。
【図15】敵機存在確率計算部46の機能構成を例示した図。
【図16】敵機存在確率計算部47の機能構成を例示した図。
【図17】存在確率の計算についての説明を補助する図。

【特許請求の範囲】
【請求項1】
選択された移動速度によって自機が移動を始める時刻tをt=0とし、
第一存在確率計算手段が、t=nT(nは任意の自然数)において自機が敵機及び敵機の攻撃弾によって破壊されないで、ゲーム画面を分割した格子を構成する各升目sに存在する確率Ps(nT,s)を求めて、第一自機存在確率記憶手段に格納する第一存在確率計算ステップと、
自機目標位置決定手段が、第一自機存在確率記憶手段から読み出した、t=nTにおいて自機が敵機及び敵機の攻撃弾によって破壊されないで各升目sに存在する確率Ps(nT,s)のうち、その確率を最も高くする升目を選択して、その升目を目標位置とする自機目標位置決定ステップと、
第二自機存在確率計算手段が、時刻t=nTにおいて自機が上記目標位置に到達することが確定している場合に、時刻t=Tにおいて自機が各升目sに存在する確率Psr(T,s)を計算して、第二自機存在確率記憶部に格納する第二自機存在確率計算ステップと、
移動速度決定手段が、時刻t=0における自機が時刻t=Tにおいて到達することができる升目s0’のうち、第二自機存在確率記憶部から読み出した確率Psr(T,s0’)を最も高くする升目に移動するように、時刻t=0における自機の移動速度を決定する移動速度決定ステップと、
を有することを特徴とするシューティングゲームの自機動作制御方法。
【請求項2】
請求項1に記載のシューティングゲームの自機動作制御方法であって、
上記第一存在確率計算ステップは、
敵機の初期存在確率計算手段が、時刻t=0における敵機が、各升目sに存在している確率Pei(0,s)を求め、敵機存在確率記憶手段に格納する敵機の初期存在確率計算ステップと、
敵機攻撃弾の初期存在確率計算手段が、時刻t=0における敵機の攻撃弾が、各升目sに存在している確率Pbj(0,s)を求め、敵機攻撃弾存在確率記憶手段に格納する敵機攻撃弾の初期存在確率計算ステップと、
自機の初期存在確率計算手段が、時刻t=0における自機が、格子に分割されたゲーム画面において、その格子を構成する各升目sに存在している確率Ps(0,s)を求め、第一存在確率記憶手段に格納する自機の初期存在確率計算ステップと、
敵機存在確率計算手段が、時刻t=τにおいて敵機が升目se’(i)に存在する確率Pei(τ,se’ (i))と、時刻t=τと升目se’(i)と升目sの位置によって移動速度を決定する移動速度決定関数に基づいて決定される移動速度aに従って敵機が行動単位時間Tだけ移動することによって升目se’ (i)から升目se(i)に移動する確率と、時刻t=τにおいて自機が升目sに存在する確率との積を、すべての升目se’と升目sの組ごとに求め、これら求まった積を加算することによって、時刻t=τ+Tにおいて敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を、すべてのτ=kT(kはn−1以下の自然数)について求めて、敵機存在確率記憶手段に格納する敵機存在確率計算ステップと、
敵機攻撃弾存在確率計算手段が、時刻t=τにおいて敵機の攻撃弾が升目s’に存在する確率Pbj(τ,s’)と、敵機の攻撃弾が移動速度Vbjに従って行動単位時間Tだけ移動することによって升目s’から升目sに移動する確率との積を、すべての升目s’ごとに求め、これら求まった積を加算することによって、時刻t=τ+Tにおいて敵機の攻撃弾が升目sに存在する確率Pbj(τ+T,s)を、すべての升目sとτ=kT(kはn−1以下の自然数)の組について求めて、敵機攻撃弾存在確率記憶手段に格納する敵機攻撃弾存在確率計算ステップと、
最大値抽出手段が、すべてのτ+Tと升目sの組ごとに、上記敵機存在確率記憶手段から読み出した時刻t=τ+Tにおいて敵機が升目sに存在する確率Pei(τ+T,s)と、上記敵機攻撃弾存在確率記憶手段から読み出した時刻t=τ+Tにおいて敵機の攻撃弾が升目sに存在する確率Pbj(τ+T,s)との大小関係を比較し、最も大きい確率を出力する最大値抽出ステップと、
第一自機存在確率計算手段が、時刻t=τにおいて自機が升目s’に存在する確率Ps(τ,s’)と、自機が移動速度wを選択する確率と、自機が移動速度wに従って行動単位時間Tだけ移動することによって升目s’から升目sに移動する確率Ptr(s’,s,w)との積を、すべての升目s’と自機の移動速度wの組ごとに求め、これら求まった積を加算した値に、上記最大値抽出手段がτ+Tと升目sの組について出力した確率を1から引いた値を乗算することによって、時刻t=τ+Tにおいて自機が敵機及び敵機の攻撃弾によって破壊されないで升目sに存在する確率Ps(τ+T,s)を、すべての升目sとτ=kT(kはn−1以下の自然数)の組について求めて、第一自機存在確率記憶手段に格納する第一自機存在確率計算ステップと、
から構成され、
上記第二自機存在確率計算ステップは、
第二自機存在確率計算手段が、時刻t=nTにおいて自機が上記目標位置に到達することが確定している場合に時刻t=τ+Tにおいて自機が升目s’に存在する確率Psr(τ+T,s’)と、自機が移動速度wを選択する確率と、自機が移動速度wに従って行動単位時間Tだけ移動することによって升目sから升目s’に移動する確率Ptr(s,s’,w)との積を、すべての升目s’と自機の移動速度wの組ごとに求め、これら求まった積を加算した値に、上記最大値抽出ステップがTと升目sの組について求めた確率を1から引いた値を乗算することによって、時刻t=nTにおいて自機が上記目標位置に到達することが確定している場合に時刻t=τにおいて自機が敵機及び敵機の攻撃弾によって破壊されないで升目sに存在する確率Psr(t,s)を、すべての升目sとτ=mT(mはn−1以下の自然数)の組について求めて、第二自機存在確率記憶手段に格納する第二自機存在確率計算ステップ、
である、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項3】
請求項2に記載のシューティングゲームの自機動作制御方法において、
上記敵機存在確率計算ステップは、
敵機存在確率計算手段が、時刻t=τにおいて敵機が升目se’(i)に存在する確率Pei(τ,se’ (i))と、時刻t=τと升目se’(i)と升目sの位置によって移動速度を決定する移動速度決定関数に基づいて敵機が移動速度aを選択する確率と、敵機が移動速度aに従って行動単位時間Tだけ移動することによって升目se’ (i)から升目se(i)に移動する確率と、時刻t=τにおいて自機が升目sに存在する確率との積を、すべての移動速度aと升目se’と升目sの組ごとに求め、これら求まった積を加算することによって、時刻t=τ+Tにおいて敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を、すべてのτ=kT(kはn−1以下の自然数)について求めて、敵機存在確率記憶手段に格納するステップである、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項4】
請求項2に記載のシューティングゲームの自機動作制御方法において、
上記敵機存在確率計算ステップは、
敵機存在確率計算手段が、時刻t=τにおいて敵機が升目se’(i)に存在する確率Pei(τ,se’ (i))と、時刻t=τと升目se’(i)と自機が最も高い確率で存在する升目sの位置によって移動速度を決定する移動速度決定関数に基づいて決定される移動速度aに従って敵機が行動単位時間Tだけ移動することによって升目se’ (i)から升目se(i)に移動する確率と、時刻t=τにおいて自機が升目sに存在確率との積を、すべての升目se’ごとに求め、これら求まった積を加算することによって、時刻t=τ+Tにおいて敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を、すべてのτ=kT(kはn−1以下の自然数)について求めて、敵機存在確率記憶手段に格納する敵機存在確率計算ステップである、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項5】
請求項2に記載のシューティングゲームの自機動作制御方法において、
上記敵機存在確率計算ステップは、
敵機存在確率計算手段が、時刻t=τにおいて敵機が升目se’(i)に存在する確率Pei(τ,se’ (i))と、時刻t=τと升目se’(i)と自機が最も高い確率で存在する升目sの位置によって移動速度を決定する移動速度決定関数に基づいて敵機が移動速度aを選択する確率と、敵機が移動速度aに従って行動単位時間Tだけ移動することによって升目se’ (i)から升目se(i)に移動する確率と、時刻t=τにおいて自機が升目sに存在する確率との積を、すべての移動速度aと升目se’の組ごとに求め、これら求まった積を加算することによって、時刻t=τ+Tにおいて敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を、すべてのτ=kT(kはn−1以下の自然数)について求めて、敵機存在確率記憶手段に格納するステップである、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項6】
請求項2に記載のシューティングゲームの自機動作制御方法において、
上記敵機存在確率計算ステップは、
敵機存在確率計算手段が、時刻t=τにおいて敵機が升目se’(i)に存在する確率Pei(τ,se’ (i))と、時刻t=τによって移動速度を決定する移動速度決定関数に基づいて決定される移動速度aに従って敵機が行動単位時間Tだけ移動することによって升目se’ (i)から升目se(i)に移動する確率と、時刻t=τにおいて自機が升目sに存在確率との積を、すべての升目se’ごとに求め、これら求まった積を加算することによって、時刻t=τ+Tにおいて敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を、すべてのτ=kT(kはn−1以下の自然数)について求めて、敵機存在確率記憶手段に格納する敵機存在確率計算ステップである、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項7】
請求項2に記載のシューティングゲームの自機動作制御方法において、
上記敵機存在確率計算ステップは、
敵機存在確率計算手段が、時刻t=τにおいて敵機が升目se’(i)に存在する確率Pei(τ,se’ (i))と、時刻t=τによって移動速度を決定する移動速度決定関数に基づいて敵機が移動速度aを選択する確率と、敵機が移動速度aに従って行動単位時間Tだけ移動することによって升目se’ (i)から升目se(i)に移動する確率と、時刻t=τにおいて自機が升目sに存在する確率との積を、すべての移動速度aと升目se’の組ごとに求め、これら求まった積を加算することによって、時刻t=τ+Tにおいて敵機が升目se(i)に存在する確率Pei(τ+T,se(i))を、すべてのτ=kT(kはn−1以下の自然数)について求めて、敵機存在確率記憶手段に格納するステップである、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項8】
請求項2に記載したシューティングゲームの自機動作制御方法であって、
上記第二自機存在確率計算ステップは、
加算手段が、上記敵機存在確率記憶手段から読み出した、自機の射線上にある升目se(i)に存在する敵機の存在確率Pei(t,se(i))を加算する加算ステップと
第一乗算手段が、上記すべての升目sと時刻tの組ごとに求まった確率Psr(t,s)に、上記加算ステップで求まった加算値に1を加えた値に比例した値を乗算する第一乗算ステップと、
正規化手段が、上記第一乗算ステップで求まった値をそれぞれ、上記乗算ステップで求まった値を時刻tにおけるすべての升目sについて足し合わせた値で割算することにより上記確率Psr(t,s)を正規化して、第二自機存在確率記憶手段に格納する正規化ステップと、
をさらに有する、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項9】
請求項2〜8に記載したシューティングゲームの自機動作制御方法であって、
上記第二自機存在確率計算ステップは、
第二乗算手段が、上記すべての升目sと時刻tの組ごとに求まった確率Psr(t,s)に、画面の中央部と上記升目sに存在する自機との距離に反比例した値を乗算する第二乗算ステップと、
正規化手段が、上記第二乗算ステップで求まった値をそれぞれ、上記第二乗算ステップで求まった値を時刻tにおけるすべての升目sについて足し合わせた値で割算することにより上記確率Psr(t,s)を正規化して、第二自機存在確率記憶手段に格納する正規化ステップと、
をさらに有する、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項10】
請求項1〜9に記載のシューティングゲームの自機動作制御方法であって、
上記ゲーム画面を分割した各升目の一辺の長さは、自機の形状に内接する円の直径と敵機の攻撃弾の形状に内接する円の直径の和の半分の値の3分の1以下である、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項11】
請求項1〜9に記載のシューティングゲームの自機動作制御方法であって、
上記ゲーム画面を分割した各升目の一辺の長さは、その辺に平行な方向に進む自機のの速さに行動単位時間Tをかけたものである、
ことを特徴とするシューティングゲームの自機動作制御方法。
【請求項12】
選択された移動速度によって自機が移動を始める時刻tをt=0とし、
第一自機存在確率記憶手段と、
第二自機存在確率記憶手段と、
t=nT(nは任意の自然数)において自機が敵機及び敵機の攻撃弾によって破壊されないで、ゲーム画面を分割した格子を構成する各升目sに存在する確率Ps(nT,s)を求めて、第一自機存在確率記憶手段に格納する第一存在確率計算手段と、
第一自機存在確率記憶手段から読み出した、t=nTにおいて自機が敵機及び敵機の攻撃弾によって破壊されないで各升目sに存在する確率Ps(nT,s)のうち、その確率を最も高くする升目を選択して、その升目を目標位置とする自機目標位置決定手段と、
時刻t=nTにおいて自機が上記目標位置に到達することが確定している場合に、時刻t=Tにおいて自機が各升目sに存在する確率Psr(T,s)を計算して、第二自機存在確率記憶部に格納する第二自機存在確率計算手段と、
時刻t=0における自機が時刻t=Tにおいて到達することができる升目s0’のうち、第二自機存在確率記憶部から読み出した確率Psr(T,s0’)を最も高くする升目に移動するように、時刻t=0における自機の移動速度を決定する移動速度決定手段と、
を有することを特徴とするシューティングゲームの自機動作制御装置。
【請求項13】
請求項1〜11の何れかに記載のシューティングゲーム処理方法の各ステップをコンピュータに実行させるためのシューティングゲーム処理プログラム。
【請求項14】
請求項13記載のシューティングゲーム処理プログラムを記録したコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate