難易度判定方法、装置、プログラム
【課題】シューティングゲームの難易度判定に関する技術を提供する。
【解決手段】自機のすべての自機行動パターンを生成する。自機の各時刻ステップdにおける位置を求める。敵機の各時刻ステップdにおける位置を求める。自機の時刻ステップdにおける位置を含む所定の第一の形状と、各升目smnとの重複部分の面積Smnを計算する。Sall=ΣmΣnSmn。敵機の各時刻ステップdにおける位置を含む所定の第二の形状と、各升目smnとの重複部分の面積Scmnを計算する。衝突確率Pcmnを求める。Ps(s,d)=Σs’ Ps(s’,d−1)(1/W)Ptr(w,m,n)(Smn/Sall)(1−Psmn)を計算することにより、Ps(s’,d−1)からPs(s,d)を求める処理を順次繰り返すことによって、Ps(s,D)を求める。Ps(s,D)をすべての升目sについて加算する。
【解決手段】自機のすべての自機行動パターンを生成する。自機の各時刻ステップdにおける位置を求める。敵機の各時刻ステップdにおける位置を求める。自機の時刻ステップdにおける位置を含む所定の第一の形状と、各升目smnとの重複部分の面積Smnを計算する。Sall=ΣmΣnSmn。敵機の各時刻ステップdにおける位置を含む所定の第二の形状と、各升目smnとの重複部分の面積Scmnを計算する。衝突確率Pcmnを求める。Ps(s,d)=Σs’ Ps(s’,d−1)(1/W)Ptr(w,m,n)(Smn/Sall)(1−Psmn)を計算することにより、Ps(s’,d−1)からPs(s,d)を求める処理を順次繰り返すことによって、Ps(s,D)を求める。Ps(s,D)をすべての升目sについて加算する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画面上に自機と敵機を表示し、自機をW種類の行動によって所定の時間だけ移動させる操作を行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法、装置、プログラムに関する。
【背景技術】
【0002】
以下、非特許文献1に記載された難易度判定法を説明する。所定の時間ステップ数をDとする。このとき、各時刻ステップd(d=1,…,D)ごとにW種類の行動で移動する自機が取り得る移動経路の総数は、WDである。この自機の各移動経路に対して、敵機の移動経路もWD通り存在するものとする。自機が敵機に接触した場合に、自機は敵機に破壊されるとする。自機の移動経路の中で、自機が敵機に破壊される移動経路(死亡行動パターン)の数をNDとする。このとき、上記所定の時間ステップDの期間における自機撃墜確率PDは、次式により与えられる。
【0003】
PD=ND/WD
この自機撃墜確率PDを、上記所定の時間ステップの期間における難易度と定義をする。
W=3、D=3の場合の全行動パターンの例を図5に示す。図5においては、※1、※2、※3において衝突が起こるものとする。また、図5において、実線は、各時刻ステップdにおいて、w=1の行動を選択した場合の自機の描く軌跡を表している。破線は、各深さdにおいて、w=2の行動を選択した場合の自機の描く軌跡を表している。一点鎖線は、各深さdにおいて、w=3の行動を選択した場合の自機の描く軌跡を表している。枝の末端に×が示されているものが死亡行動パターンである。自機が敵機に破壊されない移動経路を安全行動パターンとすると、枝の末端に○が示されているものが安全行動パターンである。このとき、ND=13であり、WD=27であるため、自機撃墜確率PDである難易度は、
PD=13/27
となる。
【非特許文献1】川野洋、「シューティングゲームの敵機攻撃弾発射アルゴリズムに関する考察」、社団法人情報処理学会研究報告[ゲーム情報学]、2006年6月30日、vol.2006、No.70,p. 61―68
【発明の開示】
【発明が解決しようとする課題】
【0004】
上記非特許文献1には、自機が破壊される経路の総数NDを求める具体的な手法は開示されていない。すなわち、難易度を計算する具体的な技術(ハードウェア構成、フローチャート等)は示されていない。
【課題を解決するための手段】
【0005】
請求項1に係る発明によれば、画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、自機行動パターン生成手段が、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する。自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める。敵機位置計算手段が、所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を求める。第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する。第二面積計算手段が、上記求まった敵機の各時刻ステップdにおける位置を含む所定の第二の形状と、各升目sとの重複部分の面積を計算する。衝突確率計算手段が、第二の形状と各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める。自機存在確率計算手段が、時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、第一の形状と各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める。難易度判定手段が、自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する。
【0006】
請求項2に係る発明によれば、画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、自機行動パターン生成手段が、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する。自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める。敵機攻撃弾位置計算手段が、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を求める。第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する。第三面積計算手段が、上記求まった敵機攻撃弾の各時刻ステップdにおける位置を含む所定の第三の形状と、各升目sとの重複部分の面積を計算する。衝突確率計算手段が、第三の形状と各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める。自機存在確率計算手段が、時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、第一の形状と各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める。難易度判定手段が、自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する。
【0007】
請求項7に係る発明によれば、上記第一の形状は、時刻ステップdにおいて自機が位置する升目sの各辺を、予想されるプレイヤーの操作誤差の分だけ広げた形状である。
【発明の効果】
【0008】
本発明により難易度を求める具体的な手法が示された。また、自機存在確率等の確率を導入し、自機が敵機に破壊される経路の数という離散値に代えて、自機存在確率という連続値の和を計算することにより、難易度を連続的に捉えることが可能となる。このため、本発明による難易度の指標はさらに信頼性が高くなる。
また、請求項7に係る発明によれば、プレイヤーの操作誤差の分だけ広げた形状を用いることにより、人間の操作精度を十分に考慮した難易度を求めることができる。
【0009】
さらに、本発明により、シューティングゲームにおける敵機の攻撃の強さをプレイヤーの操作位置情報を考慮して定量的に判定することが可能となり、ゲームの難易度設定を正確かつ容易に行うことができる。ゲームが人間の脳に与える影響を調べる際の心理物理実験のツールとしてシューティングゲームを利用する場合に、ゲームの難易度の指標を与えることが可能となる。
【発明を実施するための最良の形態】
【0010】
図6に、本発明の処理の対象となるシューティングゲームを例示する。画面上には、自機1’と自機1’の攻撃弾3’、敵機2’と敵機2’の攻撃弾4’が表示される。攻撃弾3’、敵機2’、攻撃弾4’は、複数存在していても良い。敵機2’が複数存在している場合には、それらの敵機にはそれぞれ異なる番号i(i=1,…,I、Iは任意の自然数)が付けられているものとする。同様に、敵機の攻撃弾4’が複数存在している場合には、それらの敵機の攻撃弾4’にはそれぞれ異なる番号k(k=1,…,K、Kは任意の自然数)が付けられているものとする。また、自機1’、敵機2’、攻撃弾3’、攻撃弾4’は、X軸とY軸で構成される2次元の平面上に位置するものとする。
【0011】
プレイヤーは、自機1’を操作して、敵機2’と闘う。プレイヤーは、一回の操作で、W種類の移動速度(方向と速さ)で、行動単位時間τだけ自機を移動させることができる。自機1’が取り得るW種類の移動速度(Vxs(w),Vys(w))は予め決められており、それぞれの移動速度(Vxs(w),Vys(w))には、異なる移動速度番号w(w=1,…,W)が付けられているものとする。以下では、移動速度番号wを選択する行動のことを行動wという。また、プレイヤーは、W種類の速度による移動と同時に、敵機2’を攻撃するための攻撃弾3’を発射する操作をすることができる。攻撃弾3’は、予め定められた軌跡に従って移動をする。この攻撃弾3’の描く軌跡を、自機の射線と呼ぶ。
【0012】
なお、例えば、W=9のとき、自機1’が取り得る移動速度はそれぞれ、
(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)が付けられているものとする。敵機2’は、自機を攻撃するために攻撃弾4’を任意の速度(方向と速さ)で発射することができる。発射された攻撃弾4’は、例えば、所定の移動速度(Vxbk,Vybk)で移動する。
【0014】
自機1’が、敵機2’及び敵機2’が発射する攻撃弾4’と衝突した場合には、自機1’は破壊され、そこでゲームオーバーとなる。逆に、自機1’の攻撃弾3’が敵機2’に衝突した場合には、敵機2’は破壊される。自機1’の攻撃弾3’によりすべての敵機2’を破壊した場合には、プレイヤーは、そのゲームに勝利することになる。
【0015】
ゲーム画面は格子に分割されており、その格子の構成単位のことを升目というものとする。例えば、画面の一番左下の升目の座標を(0,0)とし、その(0,0)の升目のX個だけ右に位置し、かつ、Y個だけ上に位置する升目の座標を(X,Y)とすることができる。ここで、XとYは0以上の整数である。
【0016】
なお、升目の一辺の長さSが、その辺に平行な方向に進む自機の速さVに、所定の時間Tをかけた値になるように、すなわち、S=VTとなるように、ゲーム画面を格子に分割するとよい。このように升目の一辺の長さを設定することにより、ある升目sに存在する自機が、どの移動速度(Vxs(w),Vys(w))に従って移動しても、所定の時間T後には、必ずある升目sに100%の確率で存在することになる。このため、計算負担を軽減することができる。ここで、所定の時間Tは、行動単位時間τを0.03秒〜0.1秒とすると、0.3秒〜1秒の時間長である。
【0017】
また、升目の一辺の長さが大きいと、本発明の処理が荒くなり、適切に自機を制御することができない場合がある。したがって、升目の一辺の長さSが、自機の形状に内接する円の直径と、敵機の攻撃弾の形状に内接する円の直径の和の半分の長さの3分の1以下の値になるように、所定の時間T及び自機の速さVを決定すると良い。
大文字で表現された座標(X,Y)は、升目の座標である。一方、小文字で表現された座標(x,y)は、ゲーム画面上での実数表現による座標位置を表す。任意の座標(x,y)は、その座標(x,y)を含む升目の座標(X,Y)に変換することができるものとする。
なお、自機、敵機、敵機攻撃弾の位置は、例えば、自機、敵機、敵機攻撃弾の形状に内接する円の中心や、形状の重心等を意味する。
【0018】
[第一実施形態]
<機能構成>
図1に、第一実施形態による難易度判定装置1000の機能構成を例示する。難易度判定装置1000は、例えば、自機存在確率計算部1、自機存在確率記憶部2、難易度判定部3、自機位置計算部4、敵機位置計算部5、敵機攻撃弾位置計算部6、位置記憶部7、誤差記憶部8、自機行動パターン生成部9、自機行動パターン記憶部91、制御部10、記憶部101を有する。
【0019】
図2に、自機存在確率計算部1の機能構成を例示する。自機存在確率計算部1は、例えば、位置取得部11、面積計算部12、加算部13、割算部14、確率計算部15、面積計算部17、衝突確率計算部18、減算部19を有する。確率計算部15は、例えば、乗算部151、加算部152を有する。
これらの難易度判定装置1000の各部は、例えば、図3、図4で示されたフローチャートに従った処理を行うことにより実現されるものである。
【0020】
≪自機行動パターン生成部≫
自機行動パターン生成部9(図1参照。)は、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての自機行動パターンを生成する。生成された自機行動パターンは、自機行動パターン記憶部91に格納される。
【0021】
自機行動パターンは、各時刻ステップd(d=1,…,D)ごとに生成された、移動速度番号w(w=1,…,W)の順列w(d,de,j)である。例えば、D=3のとき、自機行動パターン生成部9は、d=1の場合の移動速度番号wの順列w(1,de,j)と、d=2の場合の移動速度番号wの順列w(2,de,j)と、d=3の場合の移動速度番号wの順列(3,de,j)とをそれぞれ生成する。
【0022】
例えば、d=1の場合の移動速度番号wの順列w(1,de,j)は、以下のような9(=9の1乗)個の順列から構成される。
【0023】
j=1:{w(1,1,1)=1}
j=2:{w(1,1,2)=2}
…
j=8:{w(1,1,2)=8}
j=9:{w(1,1,9)=9}
また、例えば、d=2の場合の移動速度番号wの順列w(2,de,j)は、以下のような81(=9の2乗)個の順列から構成される。
j=1:{w(2,1,1)=1,w(2,2,1)=1}
j=2:{w(2,1,2)=1,w(2,2,2)=2}
…
j=80:{w(2,1,80)=9,w(2,2,80)=8}
j=81:{w(2,1,81)=9,w(2,2,81)=9}
さらに、例えば、d=3の場合の移動速度番号wの順列w(3,de,j)は、以下のような729(=9の3乗)個の順列から構成される。
j=1:{w(3,1,1)=1,w(3,2,1)=1,w(3,3,1)=1}
j=2:{w(3,1,2)=1,w(3,2,2)=1,w(3,3,2)=2}
…
j=728:{w(3,1,728)=9,w(3,2,728)=9,w(3,3,728)=8}
j=729:{w(3,1,729)=9,w(3,2,729)=9,w(3,3,729)=9}
【0024】
ある自機行動パターン(順列)w(d,de,j)={w(d,1,j)=w1,…,w(d,de,j)=wde,…,w(d,d,j)=wd}が与えられたとき、その自機行動パターンに従って自機が移動するとは、時刻ステップd=1において、自機が移動速度番号w1に従って所定の時間Tだけ移動する動作をし、…、時刻ステップd=deにおいて、自機が移動速度番号wdeに従って所定の時間Tだけ移動する動作をし、…、時刻ステップd=dにおいて、自機が移動速度番号wdに従って所定の時間Tだけ移動する動作をすることを意味する。
【0025】
自機行動パターン生成部9が、すべての自機行動パターンではなく、一部の自機行動パターンを生成して、その一部の自機行動パターンに基づいて本難易度判定方法を適用してもよい。例えば、上記実施形態では、自機は9種類の移動速度番号に従って移動することができるとしたが、例えば、そのうち8種類のみの移動速度番号に従って移動する場合(例えば、自機が停止という行動をしない場合)における各自機行動パターンを生成して、これら生成された自機行動パターンに基づいて上記難易度判定方法を適用する。また、自機行動パターン生成部9は、すべての自機行動パターンを生成するが、生成された自機行動パターンの一部に基づいて上記難易度判定方法を適用してもよい。一部の自機行動パターンにすいて上記難易度判定方法を適用することにより、自機の行動が制限された場合の限定的な難易度を求めることができる。
【0026】
≪自機位置計算部≫
自機位置計算部4(図1参照。)は、自機行動パターン生成部9が生成した各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置(xs,ys)を求める。求まった位置(xs,ys)は、位置記憶部7に格納される。上記したように、ある自機行動パターン(順列)w(d,de,j)={w(d,1,j)=w1,…,w(d,de,j)=wde,…,w(d,d,j)=wd}が与えられたとき、その自機行動パターンに従って自機が移動するとは、時刻ステップd=1において、自機が移動速度番号w1に従って所定の時間Tだけ移動する動作をし、…、時刻ステップd=deにおいて、自機が移動速度番号wdeに従って所定の時間Tだけ移動する動作をし、…、時刻ステップd=dにおいて、自機が移動速度番号wdに従って所定の時間Tだけ移動する動作をすることを意味する。このため、この自機行動パターンw(d,de,j)に従って移動する自機の各時刻ステップdにおける位置(xs,ys)は、例えば、次式で計算することができる。
【0027】
(xs,ys)=(xs0+Σk=1dVxs(wk)×T,ys0+Σk=1dVys(wk)×T)
ここで、(Vxs(w),Vys(w))は、移動速度番号wに対応して予め定められた移動速度ベクトルであり、Vxs(w)とVys(w)はそれぞれこの移動速度ベクトルのx成分、y成分である。
【0028】
なお、後述する敵機位置計算部5又は敵機攻撃弾位置計算部6が、自機の位置(xs,ys)に応じて敵機の位置(xei,yei)又は敵機攻撃弾の位置(xbk,ybk)を求める場合には、必要に応じて、自機位置計算部4は、行動単位時間τごとの自機の位置(xs,ys)を計算する。
【0029】
≪敵機位置計算部≫
敵機位置計算部5(図1参照。)は、所定の敵機行動パターンに従って移動する敵機の各時刻ステップd(d=1,…,D)における位置(xei,yei)を求める。求まった敵機の位置(xei,yei)は、位置記憶部7に格納される。
【0030】
所定の敵機の行動パターンとは、例えば、所定の移動速度(Vxei*,Vyei*)を取り続ける行動パターンや、自機の位置や時間に関係なくランダムに移動する行動パターンや、移動単位時間τごとに、敵機の位置から自機の位置に引いたベクトルとの内積を最も大きくする移動速度ベクトル(Vxei(a),Vyei(a))を選択し、この選択された移動速度ベクトルに従って移動する行動パターン等のことである。このように、所定の敵機行動パターンは、自機の位置や時間に関係なく移動するものや、自機の位置や時間に依存して移動するもの等の何でもよい。自機の位置に応じて敵機の位置を計算する場合には、自機位置計算部4によって計算された自機の位置(xs,ys)を用いる。
敵機が複数いる場合には、すべての敵機i(i=1,…,I)の各時刻ステップdにおける位置(xei,yei)を計算して、位置記憶部7に格納する。
【0031】
≪敵機攻撃弾位置計算部≫
敵機攻撃弾位置計算部6(図1参照。)は、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップd(d=1,…,D)における位置(xbk,ybk)を求める。求まった敵機の位置(xbk,ybk)は、位置記憶部7に格納される。
【0032】
所定の敵機攻撃弾の行動パターンとは、例えば、所定の移動速度(Vxbk*,Vybk*)を取り続ける行動パターンや、自機の位置や時間に関係なくランダムに移動する行動パターンや、行動単位時間τごとに、敵機攻撃弾の位置から自機の位置に引いたベクトルとの内積を最も大きくする移動速度ベクトル(Vxbk(c),Vybk(c))を選択し、この選択された移動速度ベクトルに従って移動する行動パターン等のことである。このように、所定の敵機攻撃弾行動パターンは、自機の位置や時間に関係なく移動するものや、自機の位置や時間に依存して移動するもの等の何でもよい。自機の位置に応じて敵機攻撃弾の位置を計算する場合には、自機位置計算部4によって計算された自機の位置(xs,ys)を用いる。
敵機の攻撃弾が複数ある場合には、すべての敵機の攻撃弾k(k=1,…,K)の各時刻ステップdにおける位置(xbk,ybk)を計算して、位置記憶部7に格納する。
【0033】
≪自機存在確率計算部≫
自機存在確率計算部1(図1参照。)は、上記生成された各自機行動パターンに従って移動する自機が時刻ステップd−1において破壊されないでゲーム画面を分割した格子を構成する各升目s’に位置する確率Ps(s’,d―1)から、各自機行動パターンに従って移動する自機が時刻ステップdにおいて破壊されないで各升目sに位置する確率Ps(s,d)を求める処理を繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める
図2と図7を参照して、各自機行動パターンに従って移動した結果時刻ステップd−1において升目s’にPs(s’,d−1)の確率で存在する自機が、各自機行動パターンに従った結果時刻ステップdにおいて升目sに位置する確率Ps(s,d)の求め方を説明する。図2は、自機存在確率計算部1の機能構成を例示する図であり、図7は、確率Ps(s,d)の求め方の説明を補助する図である。
【0034】
時刻ステップdにおいて自機が位置する升目sの辺をx軸の正方向と負方向にexだけ、y軸の正方向と負方向にeyだけそれぞれ広げた升目seを考える。exとeyは、予想されるプレイヤーの操作誤差である。升目seは、図7において、破線で示される升目である。図7においては、升目seと升目sの中心が重なっているが、この限りではない。升目seとして、時刻ステップdにおける自機の位置を含み、プレイヤーの操作誤差を考慮した任意の形状を用いてもよい。自機の位置は、自機位置計算部4(図1参照)が計算したものを用いる。位置取得部11(図2参照)が、自機の位置を取得して面積計算部12に出力する。なお、
また、時刻ステップdにおける敵機の位置を中心とする升目sceiと、時刻ステップdにおける敵機攻撃弾の位置を中心とする升目scbkを考える。升目sceiの一辺の長さは、例えば、敵機の形状に内接する円の直径と自機の形状に内接する円の直径との和を2で割った値であり、升目scbkの一辺の長さは、例えば、敵機攻撃弾の形状に内接する円の直径と自機の形状に内接する円の直径との和を2で割った値である。時刻ステップdにおける敵機の位置と、敵機攻撃弾の位置は、敵機位置計算部5と敵機攻撃弾位置計算部6が計算したものをそれぞれ用いる。位置取得部11が、敵機の位置と、敵機攻撃弾の位置をそれぞれ取得して、面積計算部17に出力する。
【0035】
敵機の位置を中心とする升目sceiに代えて、敵機の位置を含む、敵機の形状やあたり判定の形状を反映した任意の形状を用いることができる。また敵機攻撃弾の位置を中心とする升目scbkに代えて、敵機の攻撃弾の位置を含む、敵機攻撃弾の形状やあたり判定の形状を反映した任意の形状を用いることができる。
【0036】
面積計算部12(第一面積計算手段に相当)は、升目seと各升目sとの重複部分の面積を計算する。図7に示した例では、升目seは、s00,s01,s02,s10,s11,s12,s20,s21,s22の部分でそれぞれの升目と重なっている。以下、重複部分smn(m=0,1,2,n=0,1,2)を含む升目を升目smnと呼ぶ。そして、重複部分smnの面積を、面積Smnと表記する。面積計算部12は、各面積Smn(m=0,1,2,n=0,1,2)を計算して、加算部13と割算部14にそれぞれ出力する。
【0037】
加算部13は、各面積Smnの和を求める。この和をSallと表記する。すなわち、加算部13は、ΣmΣnSmnで定まる値Sallを計算する。Sallは、割算部14に出力される。
割算部14は、各SmnをSallで割算することにより、時刻ステップd−1において升目s’に位置する自機が、ある自機行動パターンw(d,de,j)に従って移動した結果、時刻ステップdにおいて各升目smnに移動する確率Ptr(w,m,n)を求める。Ptr(w,m,n)は、Smn/Sallによって定まる値である。計算されたPtr(w,m,n)は、確率計算部15に出力される。
【0038】
面積計算部17(第二面積計算手段、第三面積計算手段に相当)は、升目sceiと升目smnとの重複部分と、升目scbkと升目smnとの重複部分との和集合の面積Scmnを升目smnごとに求めて、衝突確率計算部18に出力する。例えば、図7においては、升目sceiは、升目s11とsei11の部分で、升目s12とsei12の部分で、升目s21とsei21の部分で、升目s22とsei22の部分でそれぞれ重なっている。また、升目scbkは、升目s20とsbk20の部分で、升目s21とsbk21の部分でそれぞれ重なっている。升目s11についてはsei11の部分の面積がSc12となり、升目s12についてはsei12の部分の面積がSc12となり、升目20についてはsbk20の部分の面積がSc20となり、升目22についてはsei22の部分の面積がSc22となる。また、sei21の部分とsbk21の部分が重なっている升目21については、sei21の部分とsbk21の部分の和集合の面積、すなわち、sei21の面積とsbk21の面積とを加算した値から縦縞模様で示した領域の面積(図7参照。)を引いた面積が、Sc21となる。
【0039】
なお、面積計算部17は、敵機と敵機攻撃弾が複数ある場合には、升目sceiと升目sとの重複部分を複数の敵機ごとに求め、升目scbkと升目sとの重複部分を複数の敵機攻撃弾ごとに求め、それらの重複部分の和集合の面積を各升目sごとに計算することにより、面積Scmnを計算する。
【0040】
衝突確率計算部18は、各面積Scmnを、その升目smnの面積で割ることにより、敵機及び敵機の攻撃弾が時刻ステップdにおいて各升目smnに存在する確率Pcmnを求める。計算されたPcmnは、減算部19に出力される。Pcmnは、敵機及び敵機の攻撃弾と升目smnに位置する自機が衝突することにより、自機を破壊する確率を表す。
【0041】
減算部19は、1からPcmnを引いた値を各升目smnごとに計算して、確率計算部15に出力する。
確率計算部15は、時刻ステップd−1において時期が升目s’に位置する確率Ps(s’,d−1)と、時刻ステップd―1において移動速度wが選択される確率(例えば、1/W)と、Ptr(w,m,n)と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める。
【0042】
すなわち、Ps(s,d)=Σs’(1/W)・(1−Pcmn)・Ps(s’,d−1)・Ptr(w,m,n)で定まる値を計算することにより、Ps(s,d)を求める。計算されたPs(s,d)は、自機存在確率記憶部2に格納される。
自機存在確率計算部1は、上記した処理を順次繰り返すことによって、最終的に、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める。
【0043】
上述した通り、これらの自機存在確率計算部1の機能は、図3及び図4に示したフローチャートに従った処理を行うことにより実現されるものである。
【0044】
≪難易度判定部≫
難易度判定部3(図1参照。)は、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)をすべての升目sについて加算した値を計算して、その計算された値をそのシューティングゲームの難易度とする。すなわち、難易度判定部3は、ΣsPs(s,D)で定まる値を難易度として計算する。
【0045】
なお、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を一部の升目sについて加算した値を計算して、その計算された値をそのシューティングゲームの難易度としてもよい。Ps(s,D)を一部の升目sについて加算した値を難易度とすることにより、自機の移動範囲がそれらの一部の升目sに制限されている場合の限定的な難易度を求めることができる。
【0046】
≪記憶部≫
記憶部101には、時刻ステップd、順列wの要素番号de、順列wの番号j、時刻p、所定の時刻T、自機の移動速度番号の数W、探索の深さDがそれぞれ予め格納されているものとする。Dは、求める難易度の精度やハードウェアの性能に応じて変更することができる値であるが、例えば、5〜15程度に設定することができる。
【0047】
[処理の流れ]
図3を参照して、難易度判定装置1000の各部の処理の流れを説明する。図3は、難易度判定装置1000の処理の流れを説明する例示する図である。図3に例示した処理の流れはいわゆる横型探索と呼ばれるものである。横型探索とは、ある節点から探索を開始して、その節点に接続している節点を全て調べた後、その調べた節点に接続している子節点を順番に調べて行く探索方法である。例えば、D=3、W=3の場合、図8に示すように、行動単位ごとの移動経路につけた番号の順番でそれぞれの経路を探索する手法である。
【0048】
<ステップS1>
難易度判定装置1000の制御部10は、記憶部101から読み出したdをd=1として記憶部101に格納する。また、制御部10は、現時刻を時刻0とし、時刻t=0における自機の位置(xs0,ys0)と、時刻t=0における敵機の位置(xei0,yei0)と、時刻t=0における敵機攻撃弾の位置(xbk0,ybk0)についての情報を取得して、位置記憶部7に格納する。さらに、制御部10は、時刻t=0における自機の位置(xs0,ys0)を含む升目をs0として、Ps(s0,0)=1として、自機存在確率記憶部2に格納する。ここで、升目s0は、時刻t=0における自機の位置(xs0,ys0)を含む升目である。
【0049】
<ステップS2>
自機行動パターン生成部9は、現在のdの値から、移動速度番号wの順列w(d,de,j)を生成する。上記≪自機行動パターン≫の欄で説明したように、例えばd=1の場合には、以下のような9(=9の1乗)個の順列を作成する。
【0050】
j=1:{w(1,1,1)=1}
j=2:{w(1,1,2)=2}
…
j=8:{w(1,1,2)=8}
j=9:{w(1,1,9)=9}
作成された順列は、自機行動パターン記憶部91に格納される。また、記憶部101から読み出したjをj=1として、再度記憶部101に格納する。
【0051】
<ステップS3>
制御部10は、記憶部101から読み出したdeをde=dとして、再度記憶部101に格納する。
【0052】
<ステップS4>
制御部10は、記憶部から読み出したdがd=1であるかどうかを判定する。d=1であれば、ステップS5の処理を行う。そうでない場合には、ステップS14の処理を行う。
【0053】
<ステップS5>
ステップS4でd=1と判断された場合には、自機位置計算部4は、位置記憶部7から読み出した(xs0,ys0)を用いて、自機の位置(xs,ys)=(xs0,ys0)とする。敵機位置計算部5は、位置記憶部7から読み出した(xei0,yei0)を用いて、敵機の位置(xei,yei)=(xei0,yei0)とする。敵機攻撃弾位置計算部6は、位置記憶部7から読み出した(xbk0,ybk0)を用いて、敵機攻撃弾の位置(xbk(t),ybk(t))=(xbk0,ybk0)とする。
【0054】
<ステップS6>
自機位置計算部4は、記憶部101から読み出したdとdeとjに対応した移動速度番号w(d,de,j)を、自機行動パターン記憶部91から読み出す。また、制御部10は、記憶部101から読み出したpを、p=0として再度記憶部101に格納する。
【0055】
<ステップS7>
自機位置計算部4は、自機の位置(xs,ys)を、移動速度番号w(d,de,j)に対応した移動速度ベクトル(Vsx(w(d,de,j)),Vsy(w(d,de,j)))で行動単位時間τだけ移動させて、自機の位置を更新する。すなわち、自機位置(xs,ys)=(xs+τ×Vsx(w(d,de,j)),ys+τ×Vsy(w(d,de,j)))とする。
【0056】
敵機位置計算部5は、敵機の位置(xei,yei)から、所定の敵機行動パターンを用いて、τ時間後の敵機の位置を求める。そして、敵機の位置(xei,yei)を、τ時間後の敵機の位置とすることにより、敵機の位置を更新する。上記所定の敵機行動パターンが、自機の位置(xs,ys)に依存するものであるときは、自機位置計算部4が計算した自機の位置(xs,ys)を用いる。敵機が複数いる場合には、すべての敵機i(i=1,…,I)について、敵機の位置を更新する。
【0057】
敵機攻撃弾位置計算部6は、敵機攻撃弾の位置(xbk,ybk)から、所定の敵機攻撃弾行動パターンを用いて、τ時間後の敵機攻撃弾の位置を求める。そして、敵機攻撃弾の位置(xbk,ybk)を、τ時間後の敵機攻撃弾の位置とすることにより、敵機攻撃弾の位置を更新する。上記所定の敵機攻撃弾行動パターンが、自機の位置(xs,ys)に依存するものであるときは、自機位置計算部4が計算した自機の位置(xs,ys)を用いる。敵機の攻撃弾が複数ある場合には、すべての敵機攻撃弾k(k=1,…,K)について、敵機攻撃弾の位置を更新する。
制御部10は、記憶部101から読み出したpを1だけインクリメントして記憶部101に格納する。
【0058】
<ステップS8>
制御部10は、記憶部101から読み出したp、τ、Tを用いて、p×τ=Tであるかどうかを判定する。そうでない場合は、ステップS7の処理を行う。
【0059】
<ステップS8’>
ステップS8において、p×τ=Tと判断された場合、その時点での自機の位置(xs,ys)を(xs(d,de,j),ys(d,de,j))として、その時点での敵機の位置(xei,yei)を(xei(d,de,j),yei(d,de,j))として、その時点での敵機攻撃弾の位置(xbk,ybk)を(xbk(d,de,j),ybk(d,de,j))として、それぞれ位置記憶部7に格納する。
【0060】
このように、p×τ=Tとなるごとに、その時点での位置を位置記憶部7に格納することにより、自機位置計算部4、敵機位置計算部5、敵機攻撃弾位置計算部6は、それぞれ各(自機、敵機、敵機攻撃弾)行動パターンに従って移動する場合の、各時刻ステップdにおける(自機、敵機、敵機攻撃弾)位置を求める。
【0061】
<ステップS9>
自機存在確率計算部1は、現在の移動速度番号w(d、de、j)に従って移動する自機が、各升目sに敵機に破壊されないで位置する確率を計算する。以下、ステップS9を構成するステップS91〜ステップS98の処理について説明をする。se、scei、scbk、smm、Smm、Sall、Ptr(w,m,n)、Pcm等の詳細については、上記≪自機存在確率計算部≫の説明及び図7を参照のこと。
【0062】
≪ステップS91(図4)≫
自機存在確率計算部1の位置取得部11(図2参照)は、自機位置計算部4が計算した、自機行動パターンの順列w(d,de,j)に従って移動した時刻ステップdにおける自機の位置(xs(d,de,j),ys(d,de,j))を、位置記憶部7から読み出し、この位置に対応する升目sを求めて、面積計算部12に出力する。
【0063】
≪ステップS92≫
面積計算部12は、升目sと同じか誤差ex,eyの分だけ広げた升目seと、各升目smnとの重複部分の面積Smnをそれぞれ計算して、加算部13と割算部14に出力する。誤差ex,eyは、誤差記憶部8から読み出したものである。
【0064】
≪ステップS93≫
加算部13は、smnの面積の和Sall=ΣmΣnsmnを計算して、割算部14に出力する。
【0065】
≪ステップS94≫
割算部14は、時刻ステップdにおいて、升目smnに移動する確率Ptr(w,m,n)=smn/Sallを各升目smnごとに求めて、確率計算部15に出力する。
【0066】
≪ステップS95≫
面積計算部17は、升目sceiと升目smnとの重複部分と、升目scbkと升目smnとの重複部分の和集合の面積Scmnを各升目smnごとに求めて、衝突確率計算部18に出力する。
【0067】
≪ステップS96≫
衝突確率計算部18は、敵機及び敵機攻撃弾が時刻ステップdにおいて升目smnに位置する確率Pcmn=Scmn/Smnを各升目ごとに求めて、減算部19に出力する。
【0068】
≪ステップS97≫
減算部19は、1からPcmnを減算して、時刻ステップdにおいて、敵機及び敵機攻撃弾が升目smnに位置する自機を破壊する確率1−Pcmnを各升目smnごとに求めて、確率計算部15に出力する。
【0069】
≪ステップS98≫
確率計算部15は、自機存在確率記憶部2から読み出したPs(smn,d)に、(1/W)・(1−Pcmn)・Ptr(w,m,n)・Ps(s’,d−1)を加算する処理を各升目smnについて行うことにより、時刻ステップdにおいて自機が敵機に破壊されないで升目sに存在する確率Ps(s,d)を更新して、自機存在確率記憶部2に格納する。Wは、記憶部101から読み出したものであり、Ps(s’,d−1)は自機存在確率記憶部2から読み出したものである。
【0070】
<ステップS10>
制御部10は、記憶部101から読み出した順列番号jを1だけインクリメントして再度記憶部101に格納する。
【0071】
<ステップS11>
制御部10は、記憶部101から読み出したj、W、dを用いて、j−1=Wのd乗かどうかを判定する。j−1=Wのd乗でない場合は、ステップS4の処理を行う。j−1=Wのd乗である場合は、ステップS12の処理を行う。
【0072】
<ステップS12>
制御部10は、記憶部101から読み出した時刻ステップdを1だけインクリメントして再度記憶部101に格納する。
【0073】
<ステップS13>
制御部10は、記憶部101から読み出したdとDを用いて、d=D+1であるかどうかを判定する。d=D+1でない場合は、ステップS2の処理を行う。d=D+1である場合は、ステップS15の処理を行う。
【0074】
<ステップS14>
ステップS4において、d=1でないと判断された場合には、制御部10は、現在評価しているdとjの自機行動パターンの順列w(d,de,j)のd−1番目までの要素が同じである、d−1とj’の自機行動パターンの順列w(d−1,d−1,j’)を自機行動パターン記憶部91から探す。自機行動パターンの順列w(d−1,d−1,j’)についての情報は、自機位置計算部4、敵機位置計算部5、敵機攻撃弾位置計算部6に出力される。
【0075】
例えば、図9のAに示すように、d=2,j=1の自機行動パターンの順列が{w(2,1,1)=1,w(2,2,1)=1}であり、d=1,j=1の自機行動パターンの順列が{w(1,1,1)=1}である場合には、w(2,1,1)=1とw(1,1,1)=1の部分で、自機行動パターンの順列の要素が一致する。したがって、d=2,j=1の自機行動パターンの順列{w(2,1,1)=1,w(2,2,1)=1}についての、d−1番目までの要素が同じである自機行動パターンの順列は、d=1,j=1の自機行動パターンの順列{w(1,1,1)=1}である。
【0076】
また、図9のBに示すように、例えば、d=3,j=3の自機行動パターンの順列が{w(3,1,3)=1,w(3,2,3)=1,w(3,3,3)=3}であり、d=2,j=1の自機行動パターンの順列が{w(2,1,1)=1,w(2,2,1)=1}である場合には、d=3,j=3の自機行動パターンの順列とd=2,j=1の自機行動パターンの順列のうち、{w(3,1,3)=1,w(3,2,3)=1}と{w(2,1,1)=1,w(2,2,1)=1}の部分で、自機行動パターンの順列の要素が一致する。したがって、d=3,j=3の自機行動パターンの順列{w(3,1,1)=1,w(3,2,1)=1,w(3,3,1)=3}についての、d−1番目までの要素が同じである自機行動パターンの順列は、d=2,j=1の自機行動パターンの順列が{w(2,1,1)=1,w(2,2,1)=1}である。
自機位置計算部4は、上記自機行動パターンの順列w(d−1,d−1,j’)に対応した自機の位置(xs(d−1,d−1,j’),ys(d−1,d−1,j’))を位置記憶部7から読み出して、現在評価している自機の位置(xs,ys)=(xs(d−1,d−1,j’),ys(d−1,d−1,j’))とする。
【0077】
同様に、敵機位置計算部5は、上記自機行動パターンの順列w(d−1,d−1,j‘)に対応した敵機の位置(xei(d−1,d−1,j’),yei(d−1,d−1,j’))を位置記憶部7から読み出して、現在評価している敵機の位置(xei,yei)=(xei(d−1,d−1,j’),yei(d−1,d−1,j’))とする。
【0078】
同様に、敵機攻撃弾位置計算部6は、上記自機行動パターンの順列w(d−1,d−1,j‘)に対応した敵機攻撃弾の位置(xbk(d−1,d−1,j’),ybk(d−1,d−1,j’))を位置記憶部7から読み出して、現在評価している敵機攻撃弾の位置(xbk,ybk)=(xbk(d−1,d−1,j’),ybk(d−1,d−1,j’))とする。
【0079】
<ステップS15>
難易度判定部3(図1参照。)は、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)をすべての升目sについて加算した値を計算して、その計算された値をそのシューティングゲームの難易度とする。すなわち、難易度判定部3は、ΣsPs(s,D)で定まる値を難易度として計算する。
【0080】
[誤差ex,eyの求め方]
以下、誤差ex,eyの求め方の例について説明をする。まず、ゲーム画面上に自機が追従すべき目標点を表示する。その目標点は、所定のアルゴリズムによって移動し、どの時刻にどの位置にあるかが決まっているものとする。プレイヤーに自機を操作させて、目標点を追従させる。そして、各時刻における、自機のx座標と目標点のx座標の差(以下、x軸方向の追従誤差と呼ぶ。)を測定する。同様に、各時刻における、自機のy座標と目標点のy座標の差(y軸方向の追従誤差と呼ぶ。)を測定する。その測定結果の例を、図10に示す。図10は、各時刻における、x軸方向の追従誤差を表す図であり、縦軸はx軸方向の追従誤差、横軸は時刻である。
【0081】
一般に、自機の位置は、ゲーム画面を構成するドットにより離散的に定義されるので、操作時間の長さによって追従誤差の表れ方は異なる。例えば、自機が1ドット進むのに追従誤差がどの程度出るのかを議論するのは困難である。このため、誤差はどのくらいの時間の長さでどのくらいの大きさに拡大するのか、ということを考慮することが必要である。これは、本発明の難易度判定に用いる格子の大きさ、及び、どの程度の大きさのTを設定すればよいかを決める上でも重要である。
【0082】
ここで、プレイヤーはフィードバック制御のように追従誤差を小さくしようとして自機の操作を行うと考えられる。このため、一定の時刻T*が経過した後は、追従誤差の絶対値のそれまでの最大値はさほど拡大しないと考えられる。そこで、本発明では、例えば、自機と目標点の位置が同じ状態(位置誤差0の状態)にある自機を操作してから、上記一定の時刻T*以降の時刻をT、上記時刻T*以降のある時刻までの追従誤差の絶対値の最大値を誤差として用いる。これにより、追従誤差が安定する時刻Tと、その安定した追従誤差を用いることができ、本発明による難易度判定方法の精度が良くなる。参考のために、図11に太線で、図10に示したx軸方向の追従誤差の、その時刻までの絶対値の最大値を示す。なお、図11の細線は、図10に示したx軸方向の追従誤差であり、点線は、図10に示したx軸方向の追従誤差の絶対値である。
【0083】
このようにして、例えば、本発明では、x軸方向及びy軸方向の追従誤差の絶対値のそれまでの時刻における最大値の増加がほぼ止まる時刻T*以降の時刻をTとして、x軸方向の追従誤差の絶対値の時刻T*以降のある時刻までの最大値をexとして、y軸方向の追従誤差の絶対値のその時刻までの最大値をeyとしてそれぞれ用いる。
【0084】
なお、x軸方向とy軸方向に分けずに、自機の位置と目標点の位置の各時刻tにおける距離(追従誤差)を測定し、その追従誤差の絶対値の最大値の大きく増えなくなる時刻T*以降の時刻をT、上記時刻Tまでの追従誤差の絶対値の最大値をそれぞれex,eyとしてもよい。
【0085】
また、追従誤差の絶対値の最大値の大きく増えなくなる時刻T*以降の時刻をTとする代わりに、任意の時刻をTとし、その時刻Tまでの追従誤差の絶対値の最大値を誤差として用いてもよい。
【0086】
難易度の判定の前に、誤差計算部82がこれらの誤差を計算して、誤差記憶部8に格納しておく。また、入力部81を設けて、自由に誤差を設定することができるようにしても良い。
【0087】
シューティングゲームのゲーム中で、誤差を推定してもよい。例えば、画面上に所定のアルゴリズムによって移動をする画像を表示して、自機がその画像を追従した場合に、その追従の精度が高いほど高い得点が与えられるようなボーナスステージ等をシューティングゲームの中に設ける。このようなボーナスステージにおいて、誤差計算部82が、上述した方法によって誤差を推定する。
【0088】
[変形例等]
上記実施形態では、敵機と敵機攻撃弾の両方が存在する場合を例に挙げて説明をしたが、敵機と敵機攻撃弾の何れか一方のみが存在する場合であっても、同様に本発明による難易度判定方法を実現することができる。また、敵機と敵機攻撃弾がそれぞれ1つしかなくても、複数いても同様に本発明による難易度判定方法を実現することができる。
【0089】
上記シューティングゲームの難易度判定方法、装置をコンピュータによって実現することができる。この場合、シューティングゲームの敵機動作制御方法、装置の内容はプログラムによって記述される。そして、このプログラムを、図12に示すようなコンピュータで実行することにより、上記シューティングゲームの難易度判定装置の各部の機能がコンピュータ上で実現される。
【0090】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、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)等を用いることができる。
【0091】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0092】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームの難易度判定方法、装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【0093】
以上の各実施形態の他、本発明であるシューティングゲームの難易度判定方法、装置、プログラムは上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0094】
【図1】難易度判定装置1000の機能構成を例示した図。
【図2】自機存在確率計算部1の機能構成を例示した図。
【図3】難易度判定装置1000の処理の流れを例示した図。
【図4】ステップS9及び自機存在確率計算部1の処理の流れを例示した図。
【図5】背景技術による難易度判定方法についての説明を補助する図。
【図6】シューティングゲームの概念図。
【図7】確率Ps(s,d)の求め方の説明を補助する図。
【図8】横型探索の説明を補助する図。
【図9】dとjの自機行動パターンの順列w(d,de,j)のd−1番目までの要素が同じである、d−1とj’の自機行動パターンの順列w(d−1,d−1,j’)を例示した図。
【図10】各時刻におけるx軸方向の追従誤差を例示した図。
【図11】x軸方向の追従誤差の、その時刻までの絶対値の最大値を示した図。
【図12】難易度判定装置をコンピュータにより実行するときの機能構成を例示した図。
【技術分野】
【0001】
本発明は、画面上に自機と敵機を表示し、自機をW種類の行動によって所定の時間だけ移動させる操作を行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法、装置、プログラムに関する。
【背景技術】
【0002】
以下、非特許文献1に記載された難易度判定法を説明する。所定の時間ステップ数をDとする。このとき、各時刻ステップd(d=1,…,D)ごとにW種類の行動で移動する自機が取り得る移動経路の総数は、WDである。この自機の各移動経路に対して、敵機の移動経路もWD通り存在するものとする。自機が敵機に接触した場合に、自機は敵機に破壊されるとする。自機の移動経路の中で、自機が敵機に破壊される移動経路(死亡行動パターン)の数をNDとする。このとき、上記所定の時間ステップDの期間における自機撃墜確率PDは、次式により与えられる。
【0003】
PD=ND/WD
この自機撃墜確率PDを、上記所定の時間ステップの期間における難易度と定義をする。
W=3、D=3の場合の全行動パターンの例を図5に示す。図5においては、※1、※2、※3において衝突が起こるものとする。また、図5において、実線は、各時刻ステップdにおいて、w=1の行動を選択した場合の自機の描く軌跡を表している。破線は、各深さdにおいて、w=2の行動を選択した場合の自機の描く軌跡を表している。一点鎖線は、各深さdにおいて、w=3の行動を選択した場合の自機の描く軌跡を表している。枝の末端に×が示されているものが死亡行動パターンである。自機が敵機に破壊されない移動経路を安全行動パターンとすると、枝の末端に○が示されているものが安全行動パターンである。このとき、ND=13であり、WD=27であるため、自機撃墜確率PDである難易度は、
PD=13/27
となる。
【非特許文献1】川野洋、「シューティングゲームの敵機攻撃弾発射アルゴリズムに関する考察」、社団法人情報処理学会研究報告[ゲーム情報学]、2006年6月30日、vol.2006、No.70,p. 61―68
【発明の開示】
【発明が解決しようとする課題】
【0004】
上記非特許文献1には、自機が破壊される経路の総数NDを求める具体的な手法は開示されていない。すなわち、難易度を計算する具体的な技術(ハードウェア構成、フローチャート等)は示されていない。
【課題を解決するための手段】
【0005】
請求項1に係る発明によれば、画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、自機行動パターン生成手段が、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する。自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める。敵機位置計算手段が、所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を求める。第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する。第二面積計算手段が、上記求まった敵機の各時刻ステップdにおける位置を含む所定の第二の形状と、各升目sとの重複部分の面積を計算する。衝突確率計算手段が、第二の形状と各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める。自機存在確率計算手段が、時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、第一の形状と各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める。難易度判定手段が、自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する。
【0006】
請求項2に係る発明によれば、画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、自機行動パターン生成手段が、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する。自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める。敵機攻撃弾位置計算手段が、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を求める。第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する。第三面積計算手段が、上記求まった敵機攻撃弾の各時刻ステップdにおける位置を含む所定の第三の形状と、各升目sとの重複部分の面積を計算する。衝突確率計算手段が、第三の形状と各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める。自機存在確率計算手段が、時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、第一の形状と各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める。難易度判定手段が、自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する。
【0007】
請求項7に係る発明によれば、上記第一の形状は、時刻ステップdにおいて自機が位置する升目sの各辺を、予想されるプレイヤーの操作誤差の分だけ広げた形状である。
【発明の効果】
【0008】
本発明により難易度を求める具体的な手法が示された。また、自機存在確率等の確率を導入し、自機が敵機に破壊される経路の数という離散値に代えて、自機存在確率という連続値の和を計算することにより、難易度を連続的に捉えることが可能となる。このため、本発明による難易度の指標はさらに信頼性が高くなる。
また、請求項7に係る発明によれば、プレイヤーの操作誤差の分だけ広げた形状を用いることにより、人間の操作精度を十分に考慮した難易度を求めることができる。
【0009】
さらに、本発明により、シューティングゲームにおける敵機の攻撃の強さをプレイヤーの操作位置情報を考慮して定量的に判定することが可能となり、ゲームの難易度設定を正確かつ容易に行うことができる。ゲームが人間の脳に与える影響を調べる際の心理物理実験のツールとしてシューティングゲームを利用する場合に、ゲームの難易度の指標を与えることが可能となる。
【発明を実施するための最良の形態】
【0010】
図6に、本発明の処理の対象となるシューティングゲームを例示する。画面上には、自機1’と自機1’の攻撃弾3’、敵機2’と敵機2’の攻撃弾4’が表示される。攻撃弾3’、敵機2’、攻撃弾4’は、複数存在していても良い。敵機2’が複数存在している場合には、それらの敵機にはそれぞれ異なる番号i(i=1,…,I、Iは任意の自然数)が付けられているものとする。同様に、敵機の攻撃弾4’が複数存在している場合には、それらの敵機の攻撃弾4’にはそれぞれ異なる番号k(k=1,…,K、Kは任意の自然数)が付けられているものとする。また、自機1’、敵機2’、攻撃弾3’、攻撃弾4’は、X軸とY軸で構成される2次元の平面上に位置するものとする。
【0011】
プレイヤーは、自機1’を操作して、敵機2’と闘う。プレイヤーは、一回の操作で、W種類の移動速度(方向と速さ)で、行動単位時間τだけ自機を移動させることができる。自機1’が取り得るW種類の移動速度(Vxs(w),Vys(w))は予め決められており、それぞれの移動速度(Vxs(w),Vys(w))には、異なる移動速度番号w(w=1,…,W)が付けられているものとする。以下では、移動速度番号wを選択する行動のことを行動wという。また、プレイヤーは、W種類の速度による移動と同時に、敵機2’を攻撃するための攻撃弾3’を発射する操作をすることができる。攻撃弾3’は、予め定められた軌跡に従って移動をする。この攻撃弾3’の描く軌跡を、自機の射線と呼ぶ。
【0012】
なお、例えば、W=9のとき、自機1’が取り得る移動速度はそれぞれ、
(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)が付けられているものとする。敵機2’は、自機を攻撃するために攻撃弾4’を任意の速度(方向と速さ)で発射することができる。発射された攻撃弾4’は、例えば、所定の移動速度(Vxbk,Vybk)で移動する。
【0014】
自機1’が、敵機2’及び敵機2’が発射する攻撃弾4’と衝突した場合には、自機1’は破壊され、そこでゲームオーバーとなる。逆に、自機1’の攻撃弾3’が敵機2’に衝突した場合には、敵機2’は破壊される。自機1’の攻撃弾3’によりすべての敵機2’を破壊した場合には、プレイヤーは、そのゲームに勝利することになる。
【0015】
ゲーム画面は格子に分割されており、その格子の構成単位のことを升目というものとする。例えば、画面の一番左下の升目の座標を(0,0)とし、その(0,0)の升目のX個だけ右に位置し、かつ、Y個だけ上に位置する升目の座標を(X,Y)とすることができる。ここで、XとYは0以上の整数である。
【0016】
なお、升目の一辺の長さSが、その辺に平行な方向に進む自機の速さVに、所定の時間Tをかけた値になるように、すなわち、S=VTとなるように、ゲーム画面を格子に分割するとよい。このように升目の一辺の長さを設定することにより、ある升目sに存在する自機が、どの移動速度(Vxs(w),Vys(w))に従って移動しても、所定の時間T後には、必ずある升目sに100%の確率で存在することになる。このため、計算負担を軽減することができる。ここで、所定の時間Tは、行動単位時間τを0.03秒〜0.1秒とすると、0.3秒〜1秒の時間長である。
【0017】
また、升目の一辺の長さが大きいと、本発明の処理が荒くなり、適切に自機を制御することができない場合がある。したがって、升目の一辺の長さSが、自機の形状に内接する円の直径と、敵機の攻撃弾の形状に内接する円の直径の和の半分の長さの3分の1以下の値になるように、所定の時間T及び自機の速さVを決定すると良い。
大文字で表現された座標(X,Y)は、升目の座標である。一方、小文字で表現された座標(x,y)は、ゲーム画面上での実数表現による座標位置を表す。任意の座標(x,y)は、その座標(x,y)を含む升目の座標(X,Y)に変換することができるものとする。
なお、自機、敵機、敵機攻撃弾の位置は、例えば、自機、敵機、敵機攻撃弾の形状に内接する円の中心や、形状の重心等を意味する。
【0018】
[第一実施形態]
<機能構成>
図1に、第一実施形態による難易度判定装置1000の機能構成を例示する。難易度判定装置1000は、例えば、自機存在確率計算部1、自機存在確率記憶部2、難易度判定部3、自機位置計算部4、敵機位置計算部5、敵機攻撃弾位置計算部6、位置記憶部7、誤差記憶部8、自機行動パターン生成部9、自機行動パターン記憶部91、制御部10、記憶部101を有する。
【0019】
図2に、自機存在確率計算部1の機能構成を例示する。自機存在確率計算部1は、例えば、位置取得部11、面積計算部12、加算部13、割算部14、確率計算部15、面積計算部17、衝突確率計算部18、減算部19を有する。確率計算部15は、例えば、乗算部151、加算部152を有する。
これらの難易度判定装置1000の各部は、例えば、図3、図4で示されたフローチャートに従った処理を行うことにより実現されるものである。
【0020】
≪自機行動パターン生成部≫
自機行動パターン生成部9(図1参照。)は、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての自機行動パターンを生成する。生成された自機行動パターンは、自機行動パターン記憶部91に格納される。
【0021】
自機行動パターンは、各時刻ステップd(d=1,…,D)ごとに生成された、移動速度番号w(w=1,…,W)の順列w(d,de,j)である。例えば、D=3のとき、自機行動パターン生成部9は、d=1の場合の移動速度番号wの順列w(1,de,j)と、d=2の場合の移動速度番号wの順列w(2,de,j)と、d=3の場合の移動速度番号wの順列(3,de,j)とをそれぞれ生成する。
【0022】
例えば、d=1の場合の移動速度番号wの順列w(1,de,j)は、以下のような9(=9の1乗)個の順列から構成される。
【0023】
j=1:{w(1,1,1)=1}
j=2:{w(1,1,2)=2}
…
j=8:{w(1,1,2)=8}
j=9:{w(1,1,9)=9}
また、例えば、d=2の場合の移動速度番号wの順列w(2,de,j)は、以下のような81(=9の2乗)個の順列から構成される。
j=1:{w(2,1,1)=1,w(2,2,1)=1}
j=2:{w(2,1,2)=1,w(2,2,2)=2}
…
j=80:{w(2,1,80)=9,w(2,2,80)=8}
j=81:{w(2,1,81)=9,w(2,2,81)=9}
さらに、例えば、d=3の場合の移動速度番号wの順列w(3,de,j)は、以下のような729(=9の3乗)個の順列から構成される。
j=1:{w(3,1,1)=1,w(3,2,1)=1,w(3,3,1)=1}
j=2:{w(3,1,2)=1,w(3,2,2)=1,w(3,3,2)=2}
…
j=728:{w(3,1,728)=9,w(3,2,728)=9,w(3,3,728)=8}
j=729:{w(3,1,729)=9,w(3,2,729)=9,w(3,3,729)=9}
【0024】
ある自機行動パターン(順列)w(d,de,j)={w(d,1,j)=w1,…,w(d,de,j)=wde,…,w(d,d,j)=wd}が与えられたとき、その自機行動パターンに従って自機が移動するとは、時刻ステップd=1において、自機が移動速度番号w1に従って所定の時間Tだけ移動する動作をし、…、時刻ステップd=deにおいて、自機が移動速度番号wdeに従って所定の時間Tだけ移動する動作をし、…、時刻ステップd=dにおいて、自機が移動速度番号wdに従って所定の時間Tだけ移動する動作をすることを意味する。
【0025】
自機行動パターン生成部9が、すべての自機行動パターンではなく、一部の自機行動パターンを生成して、その一部の自機行動パターンに基づいて本難易度判定方法を適用してもよい。例えば、上記実施形態では、自機は9種類の移動速度番号に従って移動することができるとしたが、例えば、そのうち8種類のみの移動速度番号に従って移動する場合(例えば、自機が停止という行動をしない場合)における各自機行動パターンを生成して、これら生成された自機行動パターンに基づいて上記難易度判定方法を適用する。また、自機行動パターン生成部9は、すべての自機行動パターンを生成するが、生成された自機行動パターンの一部に基づいて上記難易度判定方法を適用してもよい。一部の自機行動パターンにすいて上記難易度判定方法を適用することにより、自機の行動が制限された場合の限定的な難易度を求めることができる。
【0026】
≪自機位置計算部≫
自機位置計算部4(図1参照。)は、自機行動パターン生成部9が生成した各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置(xs,ys)を求める。求まった位置(xs,ys)は、位置記憶部7に格納される。上記したように、ある自機行動パターン(順列)w(d,de,j)={w(d,1,j)=w1,…,w(d,de,j)=wde,…,w(d,d,j)=wd}が与えられたとき、その自機行動パターンに従って自機が移動するとは、時刻ステップd=1において、自機が移動速度番号w1に従って所定の時間Tだけ移動する動作をし、…、時刻ステップd=deにおいて、自機が移動速度番号wdeに従って所定の時間Tだけ移動する動作をし、…、時刻ステップd=dにおいて、自機が移動速度番号wdに従って所定の時間Tだけ移動する動作をすることを意味する。このため、この自機行動パターンw(d,de,j)に従って移動する自機の各時刻ステップdにおける位置(xs,ys)は、例えば、次式で計算することができる。
【0027】
(xs,ys)=(xs0+Σk=1dVxs(wk)×T,ys0+Σk=1dVys(wk)×T)
ここで、(Vxs(w),Vys(w))は、移動速度番号wに対応して予め定められた移動速度ベクトルであり、Vxs(w)とVys(w)はそれぞれこの移動速度ベクトルのx成分、y成分である。
【0028】
なお、後述する敵機位置計算部5又は敵機攻撃弾位置計算部6が、自機の位置(xs,ys)に応じて敵機の位置(xei,yei)又は敵機攻撃弾の位置(xbk,ybk)を求める場合には、必要に応じて、自機位置計算部4は、行動単位時間τごとの自機の位置(xs,ys)を計算する。
【0029】
≪敵機位置計算部≫
敵機位置計算部5(図1参照。)は、所定の敵機行動パターンに従って移動する敵機の各時刻ステップd(d=1,…,D)における位置(xei,yei)を求める。求まった敵機の位置(xei,yei)は、位置記憶部7に格納される。
【0030】
所定の敵機の行動パターンとは、例えば、所定の移動速度(Vxei*,Vyei*)を取り続ける行動パターンや、自機の位置や時間に関係なくランダムに移動する行動パターンや、移動単位時間τごとに、敵機の位置から自機の位置に引いたベクトルとの内積を最も大きくする移動速度ベクトル(Vxei(a),Vyei(a))を選択し、この選択された移動速度ベクトルに従って移動する行動パターン等のことである。このように、所定の敵機行動パターンは、自機の位置や時間に関係なく移動するものや、自機の位置や時間に依存して移動するもの等の何でもよい。自機の位置に応じて敵機の位置を計算する場合には、自機位置計算部4によって計算された自機の位置(xs,ys)を用いる。
敵機が複数いる場合には、すべての敵機i(i=1,…,I)の各時刻ステップdにおける位置(xei,yei)を計算して、位置記憶部7に格納する。
【0031】
≪敵機攻撃弾位置計算部≫
敵機攻撃弾位置計算部6(図1参照。)は、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップd(d=1,…,D)における位置(xbk,ybk)を求める。求まった敵機の位置(xbk,ybk)は、位置記憶部7に格納される。
【0032】
所定の敵機攻撃弾の行動パターンとは、例えば、所定の移動速度(Vxbk*,Vybk*)を取り続ける行動パターンや、自機の位置や時間に関係なくランダムに移動する行動パターンや、行動単位時間τごとに、敵機攻撃弾の位置から自機の位置に引いたベクトルとの内積を最も大きくする移動速度ベクトル(Vxbk(c),Vybk(c))を選択し、この選択された移動速度ベクトルに従って移動する行動パターン等のことである。このように、所定の敵機攻撃弾行動パターンは、自機の位置や時間に関係なく移動するものや、自機の位置や時間に依存して移動するもの等の何でもよい。自機の位置に応じて敵機攻撃弾の位置を計算する場合には、自機位置計算部4によって計算された自機の位置(xs,ys)を用いる。
敵機の攻撃弾が複数ある場合には、すべての敵機の攻撃弾k(k=1,…,K)の各時刻ステップdにおける位置(xbk,ybk)を計算して、位置記憶部7に格納する。
【0033】
≪自機存在確率計算部≫
自機存在確率計算部1(図1参照。)は、上記生成された各自機行動パターンに従って移動する自機が時刻ステップd−1において破壊されないでゲーム画面を分割した格子を構成する各升目s’に位置する確率Ps(s’,d―1)から、各自機行動パターンに従って移動する自機が時刻ステップdにおいて破壊されないで各升目sに位置する確率Ps(s,d)を求める処理を繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める
図2と図7を参照して、各自機行動パターンに従って移動した結果時刻ステップd−1において升目s’にPs(s’,d−1)の確率で存在する自機が、各自機行動パターンに従った結果時刻ステップdにおいて升目sに位置する確率Ps(s,d)の求め方を説明する。図2は、自機存在確率計算部1の機能構成を例示する図であり、図7は、確率Ps(s,d)の求め方の説明を補助する図である。
【0034】
時刻ステップdにおいて自機が位置する升目sの辺をx軸の正方向と負方向にexだけ、y軸の正方向と負方向にeyだけそれぞれ広げた升目seを考える。exとeyは、予想されるプレイヤーの操作誤差である。升目seは、図7において、破線で示される升目である。図7においては、升目seと升目sの中心が重なっているが、この限りではない。升目seとして、時刻ステップdにおける自機の位置を含み、プレイヤーの操作誤差を考慮した任意の形状を用いてもよい。自機の位置は、自機位置計算部4(図1参照)が計算したものを用いる。位置取得部11(図2参照)が、自機の位置を取得して面積計算部12に出力する。なお、
また、時刻ステップdにおける敵機の位置を中心とする升目sceiと、時刻ステップdにおける敵機攻撃弾の位置を中心とする升目scbkを考える。升目sceiの一辺の長さは、例えば、敵機の形状に内接する円の直径と自機の形状に内接する円の直径との和を2で割った値であり、升目scbkの一辺の長さは、例えば、敵機攻撃弾の形状に内接する円の直径と自機の形状に内接する円の直径との和を2で割った値である。時刻ステップdにおける敵機の位置と、敵機攻撃弾の位置は、敵機位置計算部5と敵機攻撃弾位置計算部6が計算したものをそれぞれ用いる。位置取得部11が、敵機の位置と、敵機攻撃弾の位置をそれぞれ取得して、面積計算部17に出力する。
【0035】
敵機の位置を中心とする升目sceiに代えて、敵機の位置を含む、敵機の形状やあたり判定の形状を反映した任意の形状を用いることができる。また敵機攻撃弾の位置を中心とする升目scbkに代えて、敵機の攻撃弾の位置を含む、敵機攻撃弾の形状やあたり判定の形状を反映した任意の形状を用いることができる。
【0036】
面積計算部12(第一面積計算手段に相当)は、升目seと各升目sとの重複部分の面積を計算する。図7に示した例では、升目seは、s00,s01,s02,s10,s11,s12,s20,s21,s22の部分でそれぞれの升目と重なっている。以下、重複部分smn(m=0,1,2,n=0,1,2)を含む升目を升目smnと呼ぶ。そして、重複部分smnの面積を、面積Smnと表記する。面積計算部12は、各面積Smn(m=0,1,2,n=0,1,2)を計算して、加算部13と割算部14にそれぞれ出力する。
【0037】
加算部13は、各面積Smnの和を求める。この和をSallと表記する。すなわち、加算部13は、ΣmΣnSmnで定まる値Sallを計算する。Sallは、割算部14に出力される。
割算部14は、各SmnをSallで割算することにより、時刻ステップd−1において升目s’に位置する自機が、ある自機行動パターンw(d,de,j)に従って移動した結果、時刻ステップdにおいて各升目smnに移動する確率Ptr(w,m,n)を求める。Ptr(w,m,n)は、Smn/Sallによって定まる値である。計算されたPtr(w,m,n)は、確率計算部15に出力される。
【0038】
面積計算部17(第二面積計算手段、第三面積計算手段に相当)は、升目sceiと升目smnとの重複部分と、升目scbkと升目smnとの重複部分との和集合の面積Scmnを升目smnごとに求めて、衝突確率計算部18に出力する。例えば、図7においては、升目sceiは、升目s11とsei11の部分で、升目s12とsei12の部分で、升目s21とsei21の部分で、升目s22とsei22の部分でそれぞれ重なっている。また、升目scbkは、升目s20とsbk20の部分で、升目s21とsbk21の部分でそれぞれ重なっている。升目s11についてはsei11の部分の面積がSc12となり、升目s12についてはsei12の部分の面積がSc12となり、升目20についてはsbk20の部分の面積がSc20となり、升目22についてはsei22の部分の面積がSc22となる。また、sei21の部分とsbk21の部分が重なっている升目21については、sei21の部分とsbk21の部分の和集合の面積、すなわち、sei21の面積とsbk21の面積とを加算した値から縦縞模様で示した領域の面積(図7参照。)を引いた面積が、Sc21となる。
【0039】
なお、面積計算部17は、敵機と敵機攻撃弾が複数ある場合には、升目sceiと升目sとの重複部分を複数の敵機ごとに求め、升目scbkと升目sとの重複部分を複数の敵機攻撃弾ごとに求め、それらの重複部分の和集合の面積を各升目sごとに計算することにより、面積Scmnを計算する。
【0040】
衝突確率計算部18は、各面積Scmnを、その升目smnの面積で割ることにより、敵機及び敵機の攻撃弾が時刻ステップdにおいて各升目smnに存在する確率Pcmnを求める。計算されたPcmnは、減算部19に出力される。Pcmnは、敵機及び敵機の攻撃弾と升目smnに位置する自機が衝突することにより、自機を破壊する確率を表す。
【0041】
減算部19は、1からPcmnを引いた値を各升目smnごとに計算して、確率計算部15に出力する。
確率計算部15は、時刻ステップd−1において時期が升目s’に位置する確率Ps(s’,d−1)と、時刻ステップd―1において移動速度wが選択される確率(例えば、1/W)と、Ptr(w,m,n)と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める。
【0042】
すなわち、Ps(s,d)=Σs’(1/W)・(1−Pcmn)・Ps(s’,d−1)・Ptr(w,m,n)で定まる値を計算することにより、Ps(s,d)を求める。計算されたPs(s,d)は、自機存在確率記憶部2に格納される。
自機存在確率計算部1は、上記した処理を順次繰り返すことによって、最終的に、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める。
【0043】
上述した通り、これらの自機存在確率計算部1の機能は、図3及び図4に示したフローチャートに従った処理を行うことにより実現されるものである。
【0044】
≪難易度判定部≫
難易度判定部3(図1参照。)は、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)をすべての升目sについて加算した値を計算して、その計算された値をそのシューティングゲームの難易度とする。すなわち、難易度判定部3は、ΣsPs(s,D)で定まる値を難易度として計算する。
【0045】
なお、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を一部の升目sについて加算した値を計算して、その計算された値をそのシューティングゲームの難易度としてもよい。Ps(s,D)を一部の升目sについて加算した値を難易度とすることにより、自機の移動範囲がそれらの一部の升目sに制限されている場合の限定的な難易度を求めることができる。
【0046】
≪記憶部≫
記憶部101には、時刻ステップd、順列wの要素番号de、順列wの番号j、時刻p、所定の時刻T、自機の移動速度番号の数W、探索の深さDがそれぞれ予め格納されているものとする。Dは、求める難易度の精度やハードウェアの性能に応じて変更することができる値であるが、例えば、5〜15程度に設定することができる。
【0047】
[処理の流れ]
図3を参照して、難易度判定装置1000の各部の処理の流れを説明する。図3は、難易度判定装置1000の処理の流れを説明する例示する図である。図3に例示した処理の流れはいわゆる横型探索と呼ばれるものである。横型探索とは、ある節点から探索を開始して、その節点に接続している節点を全て調べた後、その調べた節点に接続している子節点を順番に調べて行く探索方法である。例えば、D=3、W=3の場合、図8に示すように、行動単位ごとの移動経路につけた番号の順番でそれぞれの経路を探索する手法である。
【0048】
<ステップS1>
難易度判定装置1000の制御部10は、記憶部101から読み出したdをd=1として記憶部101に格納する。また、制御部10は、現時刻を時刻0とし、時刻t=0における自機の位置(xs0,ys0)と、時刻t=0における敵機の位置(xei0,yei0)と、時刻t=0における敵機攻撃弾の位置(xbk0,ybk0)についての情報を取得して、位置記憶部7に格納する。さらに、制御部10は、時刻t=0における自機の位置(xs0,ys0)を含む升目をs0として、Ps(s0,0)=1として、自機存在確率記憶部2に格納する。ここで、升目s0は、時刻t=0における自機の位置(xs0,ys0)を含む升目である。
【0049】
<ステップS2>
自機行動パターン生成部9は、現在のdの値から、移動速度番号wの順列w(d,de,j)を生成する。上記≪自機行動パターン≫の欄で説明したように、例えばd=1の場合には、以下のような9(=9の1乗)個の順列を作成する。
【0050】
j=1:{w(1,1,1)=1}
j=2:{w(1,1,2)=2}
…
j=8:{w(1,1,2)=8}
j=9:{w(1,1,9)=9}
作成された順列は、自機行動パターン記憶部91に格納される。また、記憶部101から読み出したjをj=1として、再度記憶部101に格納する。
【0051】
<ステップS3>
制御部10は、記憶部101から読み出したdeをde=dとして、再度記憶部101に格納する。
【0052】
<ステップS4>
制御部10は、記憶部から読み出したdがd=1であるかどうかを判定する。d=1であれば、ステップS5の処理を行う。そうでない場合には、ステップS14の処理を行う。
【0053】
<ステップS5>
ステップS4でd=1と判断された場合には、自機位置計算部4は、位置記憶部7から読み出した(xs0,ys0)を用いて、自機の位置(xs,ys)=(xs0,ys0)とする。敵機位置計算部5は、位置記憶部7から読み出した(xei0,yei0)を用いて、敵機の位置(xei,yei)=(xei0,yei0)とする。敵機攻撃弾位置計算部6は、位置記憶部7から読み出した(xbk0,ybk0)を用いて、敵機攻撃弾の位置(xbk(t),ybk(t))=(xbk0,ybk0)とする。
【0054】
<ステップS6>
自機位置計算部4は、記憶部101から読み出したdとdeとjに対応した移動速度番号w(d,de,j)を、自機行動パターン記憶部91から読み出す。また、制御部10は、記憶部101から読み出したpを、p=0として再度記憶部101に格納する。
【0055】
<ステップS7>
自機位置計算部4は、自機の位置(xs,ys)を、移動速度番号w(d,de,j)に対応した移動速度ベクトル(Vsx(w(d,de,j)),Vsy(w(d,de,j)))で行動単位時間τだけ移動させて、自機の位置を更新する。すなわち、自機位置(xs,ys)=(xs+τ×Vsx(w(d,de,j)),ys+τ×Vsy(w(d,de,j)))とする。
【0056】
敵機位置計算部5は、敵機の位置(xei,yei)から、所定の敵機行動パターンを用いて、τ時間後の敵機の位置を求める。そして、敵機の位置(xei,yei)を、τ時間後の敵機の位置とすることにより、敵機の位置を更新する。上記所定の敵機行動パターンが、自機の位置(xs,ys)に依存するものであるときは、自機位置計算部4が計算した自機の位置(xs,ys)を用いる。敵機が複数いる場合には、すべての敵機i(i=1,…,I)について、敵機の位置を更新する。
【0057】
敵機攻撃弾位置計算部6は、敵機攻撃弾の位置(xbk,ybk)から、所定の敵機攻撃弾行動パターンを用いて、τ時間後の敵機攻撃弾の位置を求める。そして、敵機攻撃弾の位置(xbk,ybk)を、τ時間後の敵機攻撃弾の位置とすることにより、敵機攻撃弾の位置を更新する。上記所定の敵機攻撃弾行動パターンが、自機の位置(xs,ys)に依存するものであるときは、自機位置計算部4が計算した自機の位置(xs,ys)を用いる。敵機の攻撃弾が複数ある場合には、すべての敵機攻撃弾k(k=1,…,K)について、敵機攻撃弾の位置を更新する。
制御部10は、記憶部101から読み出したpを1だけインクリメントして記憶部101に格納する。
【0058】
<ステップS8>
制御部10は、記憶部101から読み出したp、τ、Tを用いて、p×τ=Tであるかどうかを判定する。そうでない場合は、ステップS7の処理を行う。
【0059】
<ステップS8’>
ステップS8において、p×τ=Tと判断された場合、その時点での自機の位置(xs,ys)を(xs(d,de,j),ys(d,de,j))として、その時点での敵機の位置(xei,yei)を(xei(d,de,j),yei(d,de,j))として、その時点での敵機攻撃弾の位置(xbk,ybk)を(xbk(d,de,j),ybk(d,de,j))として、それぞれ位置記憶部7に格納する。
【0060】
このように、p×τ=Tとなるごとに、その時点での位置を位置記憶部7に格納することにより、自機位置計算部4、敵機位置計算部5、敵機攻撃弾位置計算部6は、それぞれ各(自機、敵機、敵機攻撃弾)行動パターンに従って移動する場合の、各時刻ステップdにおける(自機、敵機、敵機攻撃弾)位置を求める。
【0061】
<ステップS9>
自機存在確率計算部1は、現在の移動速度番号w(d、de、j)に従って移動する自機が、各升目sに敵機に破壊されないで位置する確率を計算する。以下、ステップS9を構成するステップS91〜ステップS98の処理について説明をする。se、scei、scbk、smm、Smm、Sall、Ptr(w,m,n)、Pcm等の詳細については、上記≪自機存在確率計算部≫の説明及び図7を参照のこと。
【0062】
≪ステップS91(図4)≫
自機存在確率計算部1の位置取得部11(図2参照)は、自機位置計算部4が計算した、自機行動パターンの順列w(d,de,j)に従って移動した時刻ステップdにおける自機の位置(xs(d,de,j),ys(d,de,j))を、位置記憶部7から読み出し、この位置に対応する升目sを求めて、面積計算部12に出力する。
【0063】
≪ステップS92≫
面積計算部12は、升目sと同じか誤差ex,eyの分だけ広げた升目seと、各升目smnとの重複部分の面積Smnをそれぞれ計算して、加算部13と割算部14に出力する。誤差ex,eyは、誤差記憶部8から読み出したものである。
【0064】
≪ステップS93≫
加算部13は、smnの面積の和Sall=ΣmΣnsmnを計算して、割算部14に出力する。
【0065】
≪ステップS94≫
割算部14は、時刻ステップdにおいて、升目smnに移動する確率Ptr(w,m,n)=smn/Sallを各升目smnごとに求めて、確率計算部15に出力する。
【0066】
≪ステップS95≫
面積計算部17は、升目sceiと升目smnとの重複部分と、升目scbkと升目smnとの重複部分の和集合の面積Scmnを各升目smnごとに求めて、衝突確率計算部18に出力する。
【0067】
≪ステップS96≫
衝突確率計算部18は、敵機及び敵機攻撃弾が時刻ステップdにおいて升目smnに位置する確率Pcmn=Scmn/Smnを各升目ごとに求めて、減算部19に出力する。
【0068】
≪ステップS97≫
減算部19は、1からPcmnを減算して、時刻ステップdにおいて、敵機及び敵機攻撃弾が升目smnに位置する自機を破壊する確率1−Pcmnを各升目smnごとに求めて、確率計算部15に出力する。
【0069】
≪ステップS98≫
確率計算部15は、自機存在確率記憶部2から読み出したPs(smn,d)に、(1/W)・(1−Pcmn)・Ptr(w,m,n)・Ps(s’,d−1)を加算する処理を各升目smnについて行うことにより、時刻ステップdにおいて自機が敵機に破壊されないで升目sに存在する確率Ps(s,d)を更新して、自機存在確率記憶部2に格納する。Wは、記憶部101から読み出したものであり、Ps(s’,d−1)は自機存在確率記憶部2から読み出したものである。
【0070】
<ステップS10>
制御部10は、記憶部101から読み出した順列番号jを1だけインクリメントして再度記憶部101に格納する。
【0071】
<ステップS11>
制御部10は、記憶部101から読み出したj、W、dを用いて、j−1=Wのd乗かどうかを判定する。j−1=Wのd乗でない場合は、ステップS4の処理を行う。j−1=Wのd乗である場合は、ステップS12の処理を行う。
【0072】
<ステップS12>
制御部10は、記憶部101から読み出した時刻ステップdを1だけインクリメントして再度記憶部101に格納する。
【0073】
<ステップS13>
制御部10は、記憶部101から読み出したdとDを用いて、d=D+1であるかどうかを判定する。d=D+1でない場合は、ステップS2の処理を行う。d=D+1である場合は、ステップS15の処理を行う。
【0074】
<ステップS14>
ステップS4において、d=1でないと判断された場合には、制御部10は、現在評価しているdとjの自機行動パターンの順列w(d,de,j)のd−1番目までの要素が同じである、d−1とj’の自機行動パターンの順列w(d−1,d−1,j’)を自機行動パターン記憶部91から探す。自機行動パターンの順列w(d−1,d−1,j’)についての情報は、自機位置計算部4、敵機位置計算部5、敵機攻撃弾位置計算部6に出力される。
【0075】
例えば、図9のAに示すように、d=2,j=1の自機行動パターンの順列が{w(2,1,1)=1,w(2,2,1)=1}であり、d=1,j=1の自機行動パターンの順列が{w(1,1,1)=1}である場合には、w(2,1,1)=1とw(1,1,1)=1の部分で、自機行動パターンの順列の要素が一致する。したがって、d=2,j=1の自機行動パターンの順列{w(2,1,1)=1,w(2,2,1)=1}についての、d−1番目までの要素が同じである自機行動パターンの順列は、d=1,j=1の自機行動パターンの順列{w(1,1,1)=1}である。
【0076】
また、図9のBに示すように、例えば、d=3,j=3の自機行動パターンの順列が{w(3,1,3)=1,w(3,2,3)=1,w(3,3,3)=3}であり、d=2,j=1の自機行動パターンの順列が{w(2,1,1)=1,w(2,2,1)=1}である場合には、d=3,j=3の自機行動パターンの順列とd=2,j=1の自機行動パターンの順列のうち、{w(3,1,3)=1,w(3,2,3)=1}と{w(2,1,1)=1,w(2,2,1)=1}の部分で、自機行動パターンの順列の要素が一致する。したがって、d=3,j=3の自機行動パターンの順列{w(3,1,1)=1,w(3,2,1)=1,w(3,3,1)=3}についての、d−1番目までの要素が同じである自機行動パターンの順列は、d=2,j=1の自機行動パターンの順列が{w(2,1,1)=1,w(2,2,1)=1}である。
自機位置計算部4は、上記自機行動パターンの順列w(d−1,d−1,j’)に対応した自機の位置(xs(d−1,d−1,j’),ys(d−1,d−1,j’))を位置記憶部7から読み出して、現在評価している自機の位置(xs,ys)=(xs(d−1,d−1,j’),ys(d−1,d−1,j’))とする。
【0077】
同様に、敵機位置計算部5は、上記自機行動パターンの順列w(d−1,d−1,j‘)に対応した敵機の位置(xei(d−1,d−1,j’),yei(d−1,d−1,j’))を位置記憶部7から読み出して、現在評価している敵機の位置(xei,yei)=(xei(d−1,d−1,j’),yei(d−1,d−1,j’))とする。
【0078】
同様に、敵機攻撃弾位置計算部6は、上記自機行動パターンの順列w(d−1,d−1,j‘)に対応した敵機攻撃弾の位置(xbk(d−1,d−1,j’),ybk(d−1,d−1,j’))を位置記憶部7から読み出して、現在評価している敵機攻撃弾の位置(xbk,ybk)=(xbk(d−1,d−1,j’),ybk(d−1,d−1,j’))とする。
【0079】
<ステップS15>
難易度判定部3(図1参照。)は、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)をすべての升目sについて加算した値を計算して、その計算された値をそのシューティングゲームの難易度とする。すなわち、難易度判定部3は、ΣsPs(s,D)で定まる値を難易度として計算する。
【0080】
[誤差ex,eyの求め方]
以下、誤差ex,eyの求め方の例について説明をする。まず、ゲーム画面上に自機が追従すべき目標点を表示する。その目標点は、所定のアルゴリズムによって移動し、どの時刻にどの位置にあるかが決まっているものとする。プレイヤーに自機を操作させて、目標点を追従させる。そして、各時刻における、自機のx座標と目標点のx座標の差(以下、x軸方向の追従誤差と呼ぶ。)を測定する。同様に、各時刻における、自機のy座標と目標点のy座標の差(y軸方向の追従誤差と呼ぶ。)を測定する。その測定結果の例を、図10に示す。図10は、各時刻における、x軸方向の追従誤差を表す図であり、縦軸はx軸方向の追従誤差、横軸は時刻である。
【0081】
一般に、自機の位置は、ゲーム画面を構成するドットにより離散的に定義されるので、操作時間の長さによって追従誤差の表れ方は異なる。例えば、自機が1ドット進むのに追従誤差がどの程度出るのかを議論するのは困難である。このため、誤差はどのくらいの時間の長さでどのくらいの大きさに拡大するのか、ということを考慮することが必要である。これは、本発明の難易度判定に用いる格子の大きさ、及び、どの程度の大きさのTを設定すればよいかを決める上でも重要である。
【0082】
ここで、プレイヤーはフィードバック制御のように追従誤差を小さくしようとして自機の操作を行うと考えられる。このため、一定の時刻T*が経過した後は、追従誤差の絶対値のそれまでの最大値はさほど拡大しないと考えられる。そこで、本発明では、例えば、自機と目標点の位置が同じ状態(位置誤差0の状態)にある自機を操作してから、上記一定の時刻T*以降の時刻をT、上記時刻T*以降のある時刻までの追従誤差の絶対値の最大値を誤差として用いる。これにより、追従誤差が安定する時刻Tと、その安定した追従誤差を用いることができ、本発明による難易度判定方法の精度が良くなる。参考のために、図11に太線で、図10に示したx軸方向の追従誤差の、その時刻までの絶対値の最大値を示す。なお、図11の細線は、図10に示したx軸方向の追従誤差であり、点線は、図10に示したx軸方向の追従誤差の絶対値である。
【0083】
このようにして、例えば、本発明では、x軸方向及びy軸方向の追従誤差の絶対値のそれまでの時刻における最大値の増加がほぼ止まる時刻T*以降の時刻をTとして、x軸方向の追従誤差の絶対値の時刻T*以降のある時刻までの最大値をexとして、y軸方向の追従誤差の絶対値のその時刻までの最大値をeyとしてそれぞれ用いる。
【0084】
なお、x軸方向とy軸方向に分けずに、自機の位置と目標点の位置の各時刻tにおける距離(追従誤差)を測定し、その追従誤差の絶対値の最大値の大きく増えなくなる時刻T*以降の時刻をT、上記時刻Tまでの追従誤差の絶対値の最大値をそれぞれex,eyとしてもよい。
【0085】
また、追従誤差の絶対値の最大値の大きく増えなくなる時刻T*以降の時刻をTとする代わりに、任意の時刻をTとし、その時刻Tまでの追従誤差の絶対値の最大値を誤差として用いてもよい。
【0086】
難易度の判定の前に、誤差計算部82がこれらの誤差を計算して、誤差記憶部8に格納しておく。また、入力部81を設けて、自由に誤差を設定することができるようにしても良い。
【0087】
シューティングゲームのゲーム中で、誤差を推定してもよい。例えば、画面上に所定のアルゴリズムによって移動をする画像を表示して、自機がその画像を追従した場合に、その追従の精度が高いほど高い得点が与えられるようなボーナスステージ等をシューティングゲームの中に設ける。このようなボーナスステージにおいて、誤差計算部82が、上述した方法によって誤差を推定する。
【0088】
[変形例等]
上記実施形態では、敵機と敵機攻撃弾の両方が存在する場合を例に挙げて説明をしたが、敵機と敵機攻撃弾の何れか一方のみが存在する場合であっても、同様に本発明による難易度判定方法を実現することができる。また、敵機と敵機攻撃弾がそれぞれ1つしかなくても、複数いても同様に本発明による難易度判定方法を実現することができる。
【0089】
上記シューティングゲームの難易度判定方法、装置をコンピュータによって実現することができる。この場合、シューティングゲームの敵機動作制御方法、装置の内容はプログラムによって記述される。そして、このプログラムを、図12に示すようなコンピュータで実行することにより、上記シューティングゲームの難易度判定装置の各部の機能がコンピュータ上で実現される。
【0090】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、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)等を用いることができる。
【0091】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0092】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、シューティングゲームの難易度判定方法、装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【0093】
以上の各実施形態の他、本発明であるシューティングゲームの難易度判定方法、装置、プログラムは上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0094】
【図1】難易度判定装置1000の機能構成を例示した図。
【図2】自機存在確率計算部1の機能構成を例示した図。
【図3】難易度判定装置1000の処理の流れを例示した図。
【図4】ステップS9及び自機存在確率計算部1の処理の流れを例示した図。
【図5】背景技術による難易度判定方法についての説明を補助する図。
【図6】シューティングゲームの概念図。
【図7】確率Ps(s,d)の求め方の説明を補助する図。
【図8】横型探索の説明を補助する図。
【図9】dとjの自機行動パターンの順列w(d,de,j)のd−1番目までの要素が同じである、d−1とj’の自機行動パターンの順列w(d−1,d−1,j’)を例示した図。
【図10】各時刻におけるx軸方向の追従誤差を例示した図。
【図11】x軸方向の追従誤差の、その時刻までの絶対値の最大値を示した図。
【図12】難易度判定装置をコンピュータにより実行するときの機能構成を例示した図。
【特許請求の範囲】
【請求項1】
画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、
自機行動パターン生成手段が、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する自機行動パターン生成ステップと、
自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める自機位置計算ステップと、
敵機位置計算手段が、所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を求める敵機位置計算ステップと、
第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する第一面積計算ステップと、
第二面積計算手段が、上記求まった敵機の各時刻ステップdにおける位置を含む所定の第二の形状と、各升目sとの重複部分の面積を計算する第二面積計算ステップと、
衝突確率計算手段が、上記第二面積計算ステップにおいて計算された各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める衝突確率計算ステップと、
自機存在確率計算手段が、時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、上記第一面積計算ステップで計算された各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める自機存在確率計算ステップと、
難易度判定手段が、自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する難易度判定ステップと、
を有する難易度判定方法。
【請求項2】
画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、
自機行動パターン生成手段が、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する自機行動パターン生成ステップと、
自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める自機位置計算ステップと、
敵機攻撃弾位置計算手段が、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を求める敵機攻撃弾位置計算ステップと、
第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する第一面積計算ステップと、
第三面積計算手段が、上記求まった敵機攻撃弾の各時刻ステップdにおける位置を含む所定の第三の形状と、各升目sとの重複部分の面積を計算する第三面積計算ステップと、
衝突確率計算手段が、上記第三面積計算ステップにおいて計算された各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める衝突確率計算ステップと、
自機存在確率計算手段が、時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、上記第一面積計算ステップで計算された各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める自機存在確率計算ステップと、
難易度判定手段が、自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する難易度判定ステップと、
を有する難易度判定方法。
【請求項3】
請求項1に記載の難易度判定方法において、
さらに、
敵機攻撃弾位置計算手段が、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を求める敵機攻撃弾位置計算ステップ、
を有し、
上記第二面積計算ステップは、上記求まった敵機の時刻ステップdにおける位置を含む所定の第二の形状と升目sとの重複部分と、上記求まった敵機攻撃弾の時刻ステップdにおける位置を含む所定の第三の形状と升目sとの重複部分との和集合の面積を各升目sごとに計算するステップであり、
上記衝突確率計算ステップは、第二面積計算ステップにおいて各升目sごとに計算された升目sとの重複部分の和集合の面積を、その升目sの面積で割った値を計算することにより、衝突確率を求めるステップである、
ことを特徴とする難易度判定方法。
【請求項4】
請求項1に記載の難易度判定方法において
敵機は複数存在しており、
上記敵機位置計算ステップは、所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を複数の敵機ごとに求めるステップであり、
上記第二面積計算ステップは、上記求まった敵機の時刻ステップdにおける位置を含む所定の第二の形状と升目sとの重複部分を複数の敵機ごとに求め、それらの重複部分の和集合の面積を各升目sごとに計算するステップであり、
上記衝突確率計算ステップは、第二面積計算ステップにおいて各升目sごとに計算された升目sとの重複部分の和集合の面積を、その升目sの面積で割った値を計算することにより、衝突確率を求めるステップである、
ことを特徴とする難易度判定方法。
【請求項5】
請求項2に記載の難易度判定方法において
敵機攻撃弾は複数存在しており、
上記敵機攻撃弾位置計算ステップは、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を複数の敵機攻撃弾ごとに求めるステップであり、
上記第二面積計算ステップは、上記求まった敵機攻撃弾の時刻ステップdにおける位置を含む所定の第三の形状と升目sとの重複部分を複数の敵機攻撃弾ごとに求め、それらの重複部分の和集合の面積を各升目sごとに計算するステップであり、
上記衝突確率計算ステップは、第二面積計算ステップにおいて各升目sごとに計算された升目sとの重複部分の和集合の面積を、その升目sの面積で割った値を計算することにより、衝突確率を求めるステップである、
ことを特徴とする難易度判定方法。
【請求項6】
請求項3に記載の難易度判定方法において
敵機と敵機攻撃弾とはそれぞれ複数存在しており、
上記敵機位置計算ステップは、所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を複数の敵機ごとに求めるステップであり、
上記敵機攻撃弾位置計算ステップは、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を複数の敵機攻撃弾ごとに求めるステップであり、
上記第二面積計算ステップは、上記求まった敵機の時刻ステップdにおける位置を含む所定の第二の形状と升目sとの重複部分を複数の敵機ごとに求め、上記求まった敵機攻撃弾の時刻ステップdにおける位置を含む所定の第三の形状と升目sとの重複部分を複数の敵機攻撃弾ごとに求め、それらの重複部分の和集合の面積を各升目sごとに計算するステップである、
ことを特徴とする難易度判定方法。
【請求項7】
請求項1から請求項6の何れかに記載の難易度判定方法において、
上記第一の形状は、時刻ステップdにおいて自機が位置する升目sの各辺を、予想されるプレイヤーの操作誤差の分だけ広げた形状である、
ことを特徴とする難易度判定方法。
【請求項8】
請求項7に記載の難易度判定方法において、
上記予想されるプレイヤーの操作誤差は、所定の時刻まで各時刻ごとに求めた、所定のアルゴリズムによって移動する目標位置と、プレイヤーがその目標位置を追従するように自機を操作した場合の自機位置との距離の絶対値のその所定の時刻までの最大値である、
ことを特徴とする難易度判定方法。
【請求項9】
画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定装置において、
各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する自機行動パターン生成手段と、
上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める自機位置計算手段が、
所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を求める敵機位置計算手段が、
上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する第一面積計算手段と、
上記求まった敵機の各時刻ステップdにおける位置を含む所定の第二の形状と、各升目sとの重複部分の面積を計算する第二面積計算手段と、
上記第二面積計算手段において計算された各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める衝突確率計算手段と、
時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、上記第一面積計算手段で計算された各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める自機存在確率計算手段と、
自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する難易度判定手段と、
を有する難易度判定装置。
【請求項10】
請求項1〜8の何れかに記載の難易度判定方法の各ステップをコンピュータに実行させるための難易度判定プログラム。
【請求項1】
画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、
自機行動パターン生成手段が、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する自機行動パターン生成ステップと、
自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める自機位置計算ステップと、
敵機位置計算手段が、所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を求める敵機位置計算ステップと、
第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する第一面積計算ステップと、
第二面積計算手段が、上記求まった敵機の各時刻ステップdにおける位置を含む所定の第二の形状と、各升目sとの重複部分の面積を計算する第二面積計算ステップと、
衝突確率計算手段が、上記第二面積計算ステップにおいて計算された各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める衝突確率計算ステップと、
自機存在確率計算手段が、時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、上記第一面積計算ステップで計算された各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める自機存在確率計算ステップと、
難易度判定手段が、自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する難易度判定ステップと、
を有する難易度判定方法。
【請求項2】
画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定方法において、
自機行動パターン生成手段が、各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する自機行動パターン生成ステップと、
自機位置計算手段が、上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める自機位置計算ステップと、
敵機攻撃弾位置計算手段が、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を求める敵機攻撃弾位置計算ステップと、
第一面積計算手段が、上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する第一面積計算ステップと、
第三面積計算手段が、上記求まった敵機攻撃弾の各時刻ステップdにおける位置を含む所定の第三の形状と、各升目sとの重複部分の面積を計算する第三面積計算ステップと、
衝突確率計算手段が、上記第三面積計算ステップにおいて計算された各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める衝突確率計算ステップと、
自機存在確率計算手段が、時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、上記第一面積計算ステップで計算された各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める自機存在確率計算ステップと、
難易度判定手段が、自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する難易度判定ステップと、
を有する難易度判定方法。
【請求項3】
請求項1に記載の難易度判定方法において、
さらに、
敵機攻撃弾位置計算手段が、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を求める敵機攻撃弾位置計算ステップ、
を有し、
上記第二面積計算ステップは、上記求まった敵機の時刻ステップdにおける位置を含む所定の第二の形状と升目sとの重複部分と、上記求まった敵機攻撃弾の時刻ステップdにおける位置を含む所定の第三の形状と升目sとの重複部分との和集合の面積を各升目sごとに計算するステップであり、
上記衝突確率計算ステップは、第二面積計算ステップにおいて各升目sごとに計算された升目sとの重複部分の和集合の面積を、その升目sの面積で割った値を計算することにより、衝突確率を求めるステップである、
ことを特徴とする難易度判定方法。
【請求項4】
請求項1に記載の難易度判定方法において
敵機は複数存在しており、
上記敵機位置計算ステップは、所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を複数の敵機ごとに求めるステップであり、
上記第二面積計算ステップは、上記求まった敵機の時刻ステップdにおける位置を含む所定の第二の形状と升目sとの重複部分を複数の敵機ごとに求め、それらの重複部分の和集合の面積を各升目sごとに計算するステップであり、
上記衝突確率計算ステップは、第二面積計算ステップにおいて各升目sごとに計算された升目sとの重複部分の和集合の面積を、その升目sの面積で割った値を計算することにより、衝突確率を求めるステップである、
ことを特徴とする難易度判定方法。
【請求項5】
請求項2に記載の難易度判定方法において
敵機攻撃弾は複数存在しており、
上記敵機攻撃弾位置計算ステップは、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を複数の敵機攻撃弾ごとに求めるステップであり、
上記第二面積計算ステップは、上記求まった敵機攻撃弾の時刻ステップdにおける位置を含む所定の第三の形状と升目sとの重複部分を複数の敵機攻撃弾ごとに求め、それらの重複部分の和集合の面積を各升目sごとに計算するステップであり、
上記衝突確率計算ステップは、第二面積計算ステップにおいて各升目sごとに計算された升目sとの重複部分の和集合の面積を、その升目sの面積で割った値を計算することにより、衝突確率を求めるステップである、
ことを特徴とする難易度判定方法。
【請求項6】
請求項3に記載の難易度判定方法において
敵機と敵機攻撃弾とはそれぞれ複数存在しており、
上記敵機位置計算ステップは、所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を複数の敵機ごとに求めるステップであり、
上記敵機攻撃弾位置計算ステップは、所定の敵機攻撃弾行動パターンに従って移動する敵機攻撃弾の各時刻ステップdにおける位置を複数の敵機攻撃弾ごとに求めるステップであり、
上記第二面積計算ステップは、上記求まった敵機の時刻ステップdにおける位置を含む所定の第二の形状と升目sとの重複部分を複数の敵機ごとに求め、上記求まった敵機攻撃弾の時刻ステップdにおける位置を含む所定の第三の形状と升目sとの重複部分を複数の敵機攻撃弾ごとに求め、それらの重複部分の和集合の面積を各升目sごとに計算するステップである、
ことを特徴とする難易度判定方法。
【請求項7】
請求項1から請求項6の何れかに記載の難易度判定方法において、
上記第一の形状は、時刻ステップdにおいて自機が位置する升目sの各辺を、予想されるプレイヤーの操作誤差の分だけ広げた形状である、
ことを特徴とする難易度判定方法。
【請求項8】
請求項7に記載の難易度判定方法において、
上記予想されるプレイヤーの操作誤差は、所定の時刻まで各時刻ごとに求めた、所定のアルゴリズムによって移動する目標位置と、プレイヤーがその目標位置を追従するように自機を操作した場合の自機位置との距離の絶対値のその所定の時刻までの最大値である、
ことを特徴とする難易度判定方法。
【請求項9】
画面上に自機と敵機を表示し、W(Wは任意の自然数。)種類の行動を選択する操作によって自機を移動させて、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度判定装置において、
各時刻ステップd(d=1,…,D、Dは任意の自然数。)ごとに、各行動w(w=1,…,W)に従って所定の時間Tだけ移動する動作を行う自機のすべての又は一部の自機行動パターンを生成する自機行動パターン生成手段と、
上記生成された各自機行動パターンに従って移動する自機の各時刻ステップdにおける位置を求める自機位置計算手段が、
所定の敵機行動パターンに従って移動する敵機の各時刻ステップdにおける位置を求める敵機位置計算手段が、
上記生成された各自機行動パターンに従って移動する自機の時刻ステップdにおける上記求まった位置を含む所定の第一の形状と、画面を分割した格子を構成する各升目sとの重複部分の面積を計算する第一面積計算手段と、
上記求まった敵機の各時刻ステップdにおける位置を含む所定の第二の形状と、各升目sとの重複部分の面積を計算する第二面積計算手段と、
上記第二面積計算手段において計算された各升目sとの重複部分の面積をその升目sの面積で割った値を計算することにより、衝突確率を求める衝突確率計算手段と、
時刻ステップd−1において自機が升目s’に位置する確率Ps(s’,d−1)と、1/Wと、上記第一面積計算手段で計算された各升目sとの重複部分の面積を上記第一の形状の面積で割った値と、1から上記衝突確率を引いた値とを乗算した値をすべての升目s’について和を取ることにより、時刻ステップdにおいて自機が升目sに位置する確率Ps(s,d)を求める処理を順次繰り返すことによって、自機が時刻ステップDにおいて各升目sに位置する確率Ps(s,D)を求める自機存在確率計算手段と、
自機が時刻ステップDにおいて升目sに存在する確率Ps(s,D)をすべての又は一部の升目について加算した値を出力する難易度判定手段と、
を有する難易度判定装置。
【請求項10】
請求項1〜8の何れかに記載の難易度判定方法の各ステップをコンピュータに実行させるための難易度判定プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2008−188268(P2008−188268A)
【公開日】平成20年8月21日(2008.8.21)
【国際特許分類】
【出願番号】特願2007−26434(P2007−26434)
【出願日】平成19年2月6日(2007.2.6)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成20年8月21日(2008.8.21)
【国際特許分類】
【出願日】平成19年2月6日(2007.2.6)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]