説明

シューティングゲーム難易度判定方法、その装置、そのプログラム及びその記録媒体

【課題】シューティングゲームの難易度を定量的に計る技術を提供する。
【解決手段】本発明によれば、画面上に自機と敵機を表示し、自機をW種類の行動によって所定の時間だけ移動させる操作を、所定の回数(以下、Dとする。)だけ行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度を提示するために、初期化手段が、自機と敵機を画面上の行動開始位置に置く(101)。自機移動パターン生成手段が、D回の行動を選択する自機の各移動先の候補を生成する(10)。敵機行動決定手段が、敵機の各移動先の候補を生成する(20)。衝突判定手段が、自機が、上記自機の各移動先の候補へ移動する途中に、上記敵機の各移動先の候補へ移動する敵機と衝突するか否かを判定する(30)。衝突カウント手段(40)が、上記衝突があった回数を計測して、シューティングゲームの難易度を決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画面上に自機と敵機を表示し、自機をW種類の行動によって所定の時間(以下、行動単位時間Tとする。)だけ移動させる操作を、所定の回数(以下、Dとする。)だけ行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの敵キャラクターの強さを定量的に判定するシューティングゲーム難易度判定方法、その装置、そのプログラム及びその記録媒体に関する。
【背景技術】
【0002】
将棋、囲碁のような一対一のゲームにおいて、コンピュータプログラムと人が対戦する形式のコンピュータゲームが普及している。そのコンピュータプログラムの強さを定量的に評価する指標としては、例えば、将棋の場合、人間のプロもしくはアマチュア有段者の何段のものにそのコンピュータプログラムが勝つことが出来るかという指標が用いられている。また、詰め将棋を解くコンピュータプログラムの場合には、その詰め将棋を解くのに必要な手の数で、コンピュータプログラムの強さを評価できる。例えば、200手詰めの詰め将棋をとくことが出来る場合はそのコンピュータプログラムの強さを200、1500手詰めの詰め将棋をとくことが出来る場合はそのコンピュータプログラムの強さを1500と考えることが出来た。
【0003】
また、攻撃手段が自機に近づくにつれて移動速度を低下させる等の処理により、自機が攻撃手段に接触し難くして、ビギナーであってもシューティングゲームを楽しむことができるように難易度を調整する技術があった(例えば、特許文献1参照)。
【特許文献1】特許第3496149号明細書
【非特許文献1】Jonathan Schaeffer,H.Jaap van den Herik,“Games,computers,and artificial intelligence”,Artificial Intelligence,2002,Vol.134,p1-7
【発明の開示】
【発明が解決しようとする課題】
【0004】
近年、コンピュータを利用したゲームが広く普及している。そのような中、ゲームのプレイヤーが戦闘機を模擬した自機を操作して、自機に対して攻撃を加えてくる敵機と闘うシューティングゲームは、コンピュータゲームの中でも、広く普及しているものである。
しかし、将棋、囲碁のような一対一のゲームの場合とは異なり、敵機が一機とは限らず、敵機が攻撃弾を発射するなどして、状況が時々刻々と変わるシューティングゲームにおいては、シューティングゲームの難易度を客観的かつ定量的に表現する手法はなかった。
【0005】
なぜなら、シューティングゲームにおいては、シューティングゲームの敵機のアルゴリズムが、自機の行動を何手先まで予測することができるのかということが、そのシューティングゲームの難易度と直接的には結びつかない。シューティングゲームにおいては、敵機や攻撃弾の数や速度が、より直接的に難易度に関係する。このため、将棋、囲碁のような一対一のゲームの場合とは異なり、敵のアルゴリズムの読みの深さをゲームの難易度の指標とすることはできないからである。
【0006】
また、人間のプレイヤーの強さを基準にゲームの難易度を測るにしても、シューティングゲームには、将棋のような公式に定義された厳密な強さの階級が存在しないため、どのプレイヤーがどのぐらいの強さを持っているかという再現性のあるデータを得ることが難しいという問題がある。
【0007】
このため、シューティングゲームの開発において、ゲームの難易度バランスを調整する際には、定量的な指標はなく、もっぱら、被験者に開発中のゲームをプレイさせて、難易度に関する印象を聞く方法に頼っているのが現状である。
また、上記特許第3496149号明細書に記載された技術は、難易度を調整する技術であり、難易度を定量的に計算するための技術ではない。
【課題を解決するための手段】
【0008】
本発明によれば、画面上に自機と敵機を表示し、自機をW種類の行動によって所定の時間(以下、行動単位時間Tとする。)だけ移動させる操作を、所定の回数(以下、Dとする。)だけ行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度を提示するために、初期化手段が、自機と敵機を画面上の行動開始位置に置く。自機移動パターン生成手段が、D回の行動を選択する自機の各移動先の候補を生成する。敵機行動決定手段が、敵機の各移動先の候補を生成する。衝突判定手段が、自機が、上記自機の各移動先の候補へ移動する途中に、上記敵機の各移動先の候補へ移動する敵機と衝突するか否かを判定する。衝突カウント手段が、上記衝突があった回数を計測して、シューティングゲームの難易度を決定する。
【発明の効果】
【0009】
シューティングゲームにおける敵機等の強さを定量的に判定することが可能となり、ゲームの難易度設定が容易となる。また、ゲームが人間の脳に与える影響を調べる際の心理物理実験のツールとしてシューティングゲームを利用する場合に、人間の心理学的バイアスを受けない、ゲーム難易度の客観的な指標を与えることが可能になる。
【発明を実施するための最良の形態】
【0010】
[理論的背景]
自機と敵機は、原点等の所定の初期位置に置かれている。なお、敵機は複数存在し、また、敵機が過去に発射した攻撃弾が存在していても良い。ユーザは、初期位置にある自機を操作して、初期位置にある敵機と闘う。自機は、一回の操作で、W種類の速度(方向と速さ)で、行動単位時間Tだけ移動することができる。ユーザは、任意の回数(D回)だけ自機を操作することができる。ここでの敵機の動作アルゴリズムは、例えば、自機の動作を観測し、その結果を敵機動作決定に反映するものである。また、敵機が発射した各攻撃弾は、例えば、敵機より発射される際に移動速度が設定され、その後はその一定速度を維持するものである。自機が、敵機及び敵機が発射する攻撃弾と衝突した場合には、自機は破壊され、そこでゲームオーバーとなる。D回の操作後に自機が生き残っていれば、ユーザは、そのゲームに勝利したことになる。
【0011】
このようなゲームにおいて、D回の操作により自機が行動した経路を行動パターンとすると、難易度は、自機の取り得る全行動パターンに占める死亡行動パターンの数で定量的に計算することができる。死亡行動パターン数が多い場合には、プレイヤーがそれだけ少ない数の安全行動パターンを選択する必要があるからである。ここで、死亡行動パターンとは、自機が敵機もしくは攻撃弾と接触して死んでしまうような場合の行動パターンのことである。また、安全行動パターンとは、敵機の位置もしくは攻撃弾の位置がある一定の距離に近づかないような自機操作のパターンのこと、すなわち、自機が敵機もしくは攻撃弾と接触しないような場合の行動パターンのことである。全行動パターンの数と、死亡行動パターンの数、安全行動パターンの数の間には、全行動パターンの数=死亡行動パターンの数+安全行動パターンの数、という関係が成り立っている。
【0012】
安全行動パターン、死亡行動パターンは、行動決定木で記述されており、決定木の分岐の数は、自機が生き残るもしくは死んでしまう行動の場合の数に対応するものである。したがって、死亡行動パターンの数は、自機が敵機もしくは攻撃弾との衝突が起こる行動選択の総数から求めるべきであるとも考えられる。しかし、ここで注意すべきなのは、行動決定木における衝突の起こる行動選択の深さである。深さが浅いところでの衝突は、それだけ、自機の行動選択に差し迫った決断を迫るものである。このため、同じ衝突でも、深さの浅いところでの衝突を、深さが深いところでの衝突よりも大きく評価すべきである。
【0013】
ここで、上述したように、自機が一回の行動において選択することができる行動の種類の数をW、自機の行動選択の回数の上限をDとし、さらに、衝突が起こった自機の行動が選択された深さ、すなわち、衝突が起こった際に自機が既に行動選択を行った回数をdとすると、自機が敵機もしくは攻撃弾と衝突した場合の数は、W(D−d)でカウントすることができる。W(D−d)を計算することにより、それ以降の行動決定木での分岐全てで、衝突が起こっているものとして、ある深さdで起こった衝突の場合の数をカウントすることができる。このため、W(D−d)で、衝突した場合の数をカウントすることにより、敵機の強さを適切に把握することができるのである。
【0014】
すべての衝突に対してW(D−d)を計算し、これらのW(D−d)をすべて足すことにより、死亡行動パターンの数を計算することができる。そして、例えば、この死亡行動パターンの数を全行動パターンで割ったものが、シューティングゲームの難易度となる。
【0015】
例えば、W=3、D=3の場合であり、図3に示すように、※1、※2、※3において衝突が起こったとする。この場合、死亡パターン数は以下のように計算することができる。図3において、実線は、各深さdにおいて、移動速度番号0の行動を選択した場合の自機の描く軌跡を表している。破線は、各深さdにおいて、移動速度番号1の行動を選択した場合の自機の描く軌跡を表している。一点鎖線は、各深さdにおいて、移動速度番号2の行動を選択した場合の自機の描く軌跡を表している。※1における衝突は、d=2における衝突であるため、W(D−d)=3(3−2)=3でカウントすることができる。※2における衝突は、d=3における衝突であるため、W(D−d)=3(3−3)=1でカウントすることができる。※3における衝突は、d=1における衝突であるため、W(D−d)=3(3−1)=9でカウントすることができる。これらのW(D−d)をすべて足し合わせたもの3+1+9=13が、死亡パターン数である。この死亡パターン数は、衝突が起こった以降の行動決定木での分岐全てで、衝突が起こっているものとした場合の死亡パターン数に一致する。この例では、全行動パターンの数は、W=3=27であるため、シューティングゲームの難易度は、例えば、(死亡行動パターンの数)/(全行動パターンの数)=13/27≒0.48148…、として求めることができる。
【0016】
死亡行動パターンは、人工知能の技術分野における探索計算を行うことで求めることができる。以下に述べる実施例では、いわゆる縦型探索により、死亡行動パターンの数を計算するものとする。縦型探索により、メモリを効率的に使用することができるためである。縦型探索とは、子節点を優先して探索する手順であり、例えば、D=3、W=3の場合、図4に示すように、行動単位ごとの移動経路につけた番号の順番でそれぞれの経路を探索する手法である。以下に述べる実施例においては、衝突が起こった場合には、衝突が起こった箇所より後の経路を探索しない。例えば、※1(6の経路)において衝突が起こった場合には、7〜9の経路については探索しない。この場合には、6の経路を探索して衝突が発生した後に、10の経路を探索することになる。
【0017】
[実施形態]
図1、2を参照して、本発明によるシューティングゲーム難易度判定方法を実施するためのシューティングゲーム難易度判定装置1000を説明する。図1は、シューティングゲーム難易度判定装置1000の機能構成例を示す図である。図2は、シューティングゲーム難易度判定装置1000の処理例を示す図である。
【0018】
シューティングゲーム難易度判定装置1000は、例えば、自機移動パターン生成部10、敵機行動決定部20、衝突判定部30、難易度計算部40、難易度データ保存部50、自機移動パターンバッファ51、敵機攻撃状態バッファ52から構成される。
自機移動パターン生成部10は、例えば、初期化部101、制御部102、バッファ103、位置更新部104、記憶部105から構成される。
敵機行動決定部20は、例えば、敵機移動速度決定部201、記憶部202、敵機攻撃弾発射速度決定部203、制御部204から構成される。
難易度計算部40は、例えば、べき乗演算部401、衝突カウント部402、正規化部403から構成される。
【0019】
自機に許される移動速度、すなわち、方向と速さの組み合わせはW通りであり、それぞれの移動速度には番号j(1≦j≦W)が付けられているものとする。深さdでの移動速度番号をJ(d)とする。また、それぞれの移動速度で行動単位時間Tだけ移動を行うことを行動単位とし、行動単位の一つを決定木の一つの枝とする。自機は、D回行動の選択を行う。すなわち、最大の深さdの最大値はDとなる。WとDは任意の値で良いが、例えば、W=9、D=10とすることができる。予め設定されたWとDの値は、自機移動パターン生成部10の記憶部105に格納されているものとする。また、自機は、直交x,y座標面上を行動するものとする。W種類の各移動速度(Vx(j),Vy(j))も、予め設定され、自機移動パターン生成部10の記憶部105に格納されているものとする。W=9の場合、例えば、
(Vx(0),Vy(0))=(0,1)、
(Vx(1),Vy(1))=(1,1)、
(Vx(2),Vy(2))=(1,0)、
(Vx(3),Vy(3))=(1,−1)、
(Vx(4),Vy(4))=(0,−1)、
(Vx(5),Vy(5))=(−1,−1)、
(Vx(6),Vy(6))=(−1,0)、
(Vx(7),Vy(7))=(−1,1)、
(Vx(8),Vy(8))=(0,0)、
とすることができる。
【0020】
なお、自機の行動を表現する行動単位の長さは、自機の大きさが0でないとした場合、自機が移動によって掃く領域がカバーできない領域が各深さの移動において発生しないようにすることが、正確な敵機の強さの判定において重要である。難易度を定量化する際に自機が移動によって掃く領域がカバーできない領域が存在すれば、求まった難易度は、実際に自機が移動することができる領域の一部については考慮していないことになるため、敵の強さを正確に表現しているものと言うことはできないためである。このため、より正確に難易度を求める場合は、自機の形状に内接する円の直径を自機の速度で割った値を、上記行動単位時間Tとすれば良い。このようにして予め設定された行動単位時間Tも、自機移動パターン生成部10の記憶部105に格納されているものとする。
【0021】
また、tを自機が行動を開始してからの経過時間、時刻tでの敵機iの位置を(Xi(t),Yi(t))、この実施例は、敵機iが発射した攻撃弾を考慮した場合であり、敵機iの発射したk番目の攻撃弾の時刻tでの位置を(Xbik(t),Ybik(t))、時刻tでの自機の位置を(Xs(t),Ys(t))、移動速度番号jの自機の移動速度を(Vx(j),Vy(j))とする。
【0022】
<ステップS1>
自機移動パターン生成部10の初期化部101は、t=0,d=1として、これをバッファ103に格納する。また、初期化部101は、時刻tにおける自機の位置(Xs(0),Ys(0))を、例えば、原点(0,0)に設定する。初期位置(Xs(0),Ys(0))を原点(0,0)に設定するのは一例であり、任意の位置に設定しても良い。また、初期化部101は、敵機iの位置(Xi(t),Yi(t))及び敵機が過去に攻撃弾を発射している場合にはその攻撃弾の位置(Xbik(t),Ybik(t))を任意の位置に設定する。
【0023】
<ステップS2>
自機移動パターン生成部10の制御部102は、J(d)=0とする。
【0024】
<ステップS3>
自機移動パターン生成部10の制御部102は、J(d)と(Xs(t),Ys(t))の値を、それぞれ自機移動パターンバッファ51に格納する。すなわち、d=1の場合には、J(1)=0が自機移動パターンバッファ51に格納されることになる。また、(Xs(0),Ys(0))=(0,0)の場合には、(Xs(0),Ys(0))=(0,0)が自機移動パターンバッファ51に格納されることになる。
また、自機移動パターン生成部10の制御部102は、時刻tにおける敵機の位置(Xi(t),Yi(t))と攻撃弾の位置(Xbik(t),Ybik(t))を、敵機攻撃状態バッファ52に格納する。
【0025】
<ステップS4>
自機移動パターン生成部10の制御部102は、バッファ103からtを読み出し、tをインクリメントする。インクリメントされたtは、バッファ103に格納される。tのインクリメント幅は、行動単位時間Tより小さい値、好ましくはTを複数等分する値であれば、どのような値でも良い。例えば、Tを0.3秒〜1秒としたとき、このTを10等分する時間間隔である、0.03秒〜0.1秒をtに設定することができる。
【0026】
また、自機移動パターン生成部10の位置更新部104は、自機の移動速度(Vx(J(d)),Vy(J(d))でtのインクリメント幅の時間だけ移動した後の自機の位置を計算する。具体的には、位置更新部104は、tのインクリメント幅をτとすると、(τ×Vx(J(d)),τ×Vy(J(d)))を計算して、位置の変位量を求め、これに(Xs(t−τ),Ys(t−τ))を加算することにより、自機の位置を更新する。インクリメント幅τでインクリメントした後の自機の位置、すなわち、更新後の自機の位置(Xs(t),Ys(t))は、敵機行動決定部20に出力される。
【0027】
<ステップS5>
敵機行動決定部20の敵機移動速度決定部201は、上記自機の位置(Xs(t),Ys(t))を基にして、敵機の位置(Xi(t),Yi(t))及び攻撃弾の位置(Xbik(t),Ybik(t))を更新する。すなわち、自機の位置(Xs(t),Ys(t))を考慮した敵機の行動のアルゴリズムに従ってτ時間移動した後の敵機の位置(Xi(t),Yi(t))及びτ時間経過後の攻撃弾の位置(Xbik(t),Ybik(t))を計算する。
【0028】
自機の位置を考慮した敵機の行動のアルゴリズムは周知のアルゴリズムを用いることができる。例えば、自機の位置に近づくように敵機が動くアルゴリズムや、常に自機との位置を一定距離・方向に保つように敵機が動くアルゴリズムを利用することができる。また、自機の位置を考慮しないアルゴリズム、例えば、自機の位置とは無関係に敵機が下降し続けるアルゴリズムや、自機の位置とは無関係に敵機が静止し続けるアルゴリズムを利用することもできる。
【0029】
例えば、敵機移動速度決定部201は、上記の何れかの敵機の行動アルゴリズムに従って、敵機の速度(Vix(t),Viy(t))を決定する。そして、敵機移動速度決定部201は、(τ×Vix(t),τ×Viy(t))を計算して、敵機の位置の変位量を求める。敵機行動決定部20の記憶部202に保存された更新前の敵機の位置(Xi(t−τ),Yi(t−τ))を読み出し、上記計算した敵機の位置の変位量(τ×Vix(t),τ×Viy(t))と加算することによって、更新後の敵機の位置(Xi(t),Yi(t))を求める。
【0030】
また、敵機移動速度決定部201は、記憶部202に記憶された攻撃弾の速度(Vbikx(t),Vbiky(t))を読み出し、これをτ倍したものを、同じく記憶部202から読み出した更新前の攻撃弾の位置(Xbik(t−τ),Ybik(t−τ))に加算することにより、更新後の攻撃弾の位置(Xbik(t),Ybik(t))を求める。
また、敵機攻撃弾発射速度決定部203が、更新後の自機の位置(Xs(t),Ys(t))に応じて、周知のアルゴリズムを用いて、新たな攻撃弾を発射するようにしても良い。
【0031】
更新後の敵機の位置(Xi(t),Yi(t))、更新後の攻撃弾の位置(Xbik(t),Ybik(t))は、記憶部202に記憶される。また、更新後の敵機の位置(Xi(t),Yi(t))、更新後の攻撃弾の位置(Xbik(t),Ybik(t))は、更新後の自機の位置(Xs(t),Ys(t))と共に、衝突判定部30に出力される。
また、更新後の敵機の位置(Xi(t),Yi(t))、更新後の攻撃弾の位置(Xbik(t),Ybik(t))は、自機移動パターン生成部10に出力される。
【0032】
<ステップS6>
衝突判定部30は、自機と敵機、又は、自機と攻撃弾が衝突したかどうかを判定する。衝突したかどうかは、予め設定され、図示していない衝突判定部30内の記憶部に記憶された自機の形状、敵機の形状、攻撃弾の形状と、敵機行動決定部20から出力された更新後の敵機の位置(Xi(t),Yi(t))、更新後の攻撃弾の位置(Xbik(t),Ybik(t))、更新後の自機の位置(Xs(t),Ys(t))とから判断される。例えば、更新後の位置に置かれた自機の形状と更新後の位置に置かれた敵機の形状が重なった場合には、自機と敵機が衝突したと判定することができる。また、更新後の位置に置かれた自機の形状と更新後の位置に置かれた敵機の形状が重なった場合には、自機と攻撃弾が衝突したと判定することができる。
【0033】
衝突がなかったと判定された場合には、衝突がなかった旨の信号が、自機移動パターン生成部10に出力される。その後、ステップS7の処理を行う。
衝突があったと判定された場合には、衝突があった旨の信号が、自機移動パターン生成部10と難易度計算部40に出力される。その後、ステップS14の処理を行う。
【0034】
<ステップS7>
衝突がなかった旨の信号を受け取った自機移動パターン生成部10の制御部102は、S3のときから、行動単位時間Tが経過したかどうかを判定する。すなわち、バッファから読み出したtがdTよりも大きいかどうか、つまり、t≧dTかどうかを判定する。
t<dTであれば、次の処理は、ステップS4に戻る。すなわち、tがステップS3の時から行動単位時間Tを経過するまで、ステップS4〜S7を繰り返す。t≧dTであれば、次の処理は、ステップS8に進む。
【0035】
<ステップS8>
自機移動パターン生成部10の制御部102は、バッファ103から読み出したdを1だけインクリメントする。インクリメントされたdは、バッファ103に格納される。
【0036】
<ステップS9>
自機移動パターン生成部10の制御部102は、バッファ103から読み出したdが、予め記憶部105に格納され設定されたDより大きいかどうかを判定する。すなわち、D<dかどうかを判定する。なお、Dは、例えば、Dは5〜10に設定することができる。
D≧dであると判定された場合には、制御部102は、ステップS2に戻って処理を行う。
D<dであると判定された場合には、制御部102は、ステップS10の処理を行う。
【0037】
<ステップS10>
自機移動パターン生成部10の制御部102は、バッファ103から読み出したdを、1だけデクリメントする。デクリメントされたdは、バッファ103に格納される。
【0038】
<ステップS11>
自機移動パターン生成部10の制御部102は、バッファ103から読み出したtを(d−1)Tに設定する。(d−1)Tに設定されたtは、バッファ103に格納される。また、自機移動パターンバッファ51に格納されたJ(d)を読み出し、1だけインクリメントする。インクリメントされたJ(d)は、自機移動パターンバッファ51に格納される。
【0039】
<ステップS12>
自機移動パターン生成部10の制御部102は、記憶部105から読み出したWと、自機移動パターンバッファ51から読み出したJ(d)の大小関係を判定する。
W<J(d)であれば、自機移動パターン生成部10の制御部102は、ステップS13の処理を行う。W≧J(d)であれば、自機移動パターン生成部10の制御部102は、ステップS15の処理を行う。
【0040】
<ステップS13>
自機移動パターン生成部10の制御部102は、敵機攻撃状態バッファ52から、時刻tにおける敵機の位置(Xi(t),Yi(t))、更新後の攻撃弾の位置(Xbik(t),Ybik(t))を読み出す。その後、ステップS3の処理に戻る。
【0041】
<ステップS14>
ステップS6において、衝突があったと判定された場合には、難易度計算部40のべき乗演算部401が、自機移動パターン生成部10のバッファ103から読み出したdと、自機移動パターン生成部10のバッファ103から読み出した記憶部105から読み出したWとDとを用いて、衝突回数W(D−d)を計算する。計算された衝突回数W(D−d)は、衝突カウント部402に出力される。
衝突カウント部402は、衝突がある毎に計算された衝突回数W(D−d)を、ステップS15において本実施例によるシューティングゲーム難易度判定方法の処理フローが終了するまで、足し込み続ける。
【0042】
<ステップS15>
ステップS12において、W<J(d)であると判定された場合には、自機移動パターン生成部10の制御部102は、d=1か否かを判定する。
d≠1と判定された場合には、ステップS10の処理に戻る。
d=1と判定された場合には、制御部102は、本実施例によるシューティングゲーム難易度判定方法の処理フローが終了した旨の信号を難易度計算部40に出力する。上記処理フローが終了した旨の信号を受信した難易度計算部40の衝突カウント部402が、今まで足し込んだ衝突回数を、正規化部403に出力する。正規化部403は、自機移動パターン生成部10の記憶部105から読み込んだWとDから、全行動パターンの数Wを計算する。正規化部403は、上記今まで足し込んだ衝突回数を全行動パターンの数Wで除算して、シューティングゲームの難易度を求める。除算結果は、難易度データ保存部50に出力される。
以上が、本実施例によるシューティングゲームの難易度判定装置の機能構成、処理例の概要である。
【0043】
[変形例等]
上記実施例では、死亡行動パターン数、すなわち、衝突した数をカウントしてシューティングゲームの難易度としたが、安全行動パターン数、すなわち、衝突しなかった数をカウントして、シューティングゲームの難易度としても良い。この場合には、シューティングゲーム難易度判定装置1000は、図5に示す処理を行う。図5に示す処理は、ステップS6’、ステップS9’、ステップS14’における処理が、図4に示す処理とは異なり、他のステップにおける処理は同じである。処理が同じステップについては、同一のステップ番号を付けて説明を省略する。
【0044】
<ステップS6’>
衝突判定部30により、ステップS6の説明で示したのと同じ衝突判定方法により、衝突がなかったと判定された場合には、衝突がなかった旨の信号が、自機移動パターン生成部10に出力される。その後、ステップS7の処理を行う。
衝突があったと判定された場合には、衝突があった旨の信号が、自機移動パターン生成部10に出力される。その後、ステップS11の処理を行う。
【0045】
<ステップS9’>
自機移動パターン生成部10の制御部102は、バッファ103から読み出したdが、予め記憶部105に格納され設定されたDより大きいかどうかを判定する。すなわち、D<dかどうかを判定する。なお、Dは、例えば、Dは5〜10に設定することができる。
D≧dであると判定された場合には、制御部102は、ステップS2に戻って処理を行う。
D<dであると判定された場合には、制御部102は、ステップS14’の処理を行う。
【0046】
<ステップS14’>
ステップS9’において、D<dであると判定された場合には、自機移動パターン生成部10の制御部102が、自機が生き残った旨を表わす信号を、難易度計算部40の生き残り移動パターンカウント部404に送る。生き残り移動パターンカウント部404は、上記自機が生き残った旨を表わす信号を受信した回数をカウントする。
自機移動パターン生成部10から処理フローが終了した旨の信号を受け取った場合には、生き残り移動パターンカウント部404は、それまでにカウントした上記自機が生き残った旨を表わす信号を受信した回数を、正規化部403に送る。
このようにして、安全行動パターン数、すなわち、衝突しなかった数をカウントして、シューティングゲームの難易度とすることができる。
【0047】
また、行動の種類Wを行動の回数Dで累乗して求められるW個のすべての行動パターンについて、それぞれ、自機と敵機、及び、自機と攻撃弾が衝突するかどうかを衝突判定部30が調べ、その衝突回数又は衝突しなかった回数を、衝突カウント手段402又は生き残り移動パターンカウント部404がカウントすることにより、シューティングゲームの難易度を求めても良い。
【0048】
また、図2に例示したフローチャートのステップS6とステップS7の間に、及び、図5に例示したフローチャートのステップS6’とステップS7の間に、下記のステップS6’’の処理を行うようにしても良い。
【0049】
<ステップS6’’>
衝突がなかった旨の信号を受け取った自機移動パターン生成部10の制御部102は、更新後の敵機の位置(Xi(t),Yi(t))が、更新後の自機の射線上にあるかどうかを判定する。例えば、自機がY軸方向(画面の上方向)に攻撃弾を発射する場合には、更新後の敵機のX軸方向の位置Xi(t)と更新後の自機のY軸方向の位置Xs(t)との差の絶対値d(Xi(t),Xs(t))を計算し、この計算結果が所定の値aよりも小さいかどうかを判定する。上記所定の値aとしては、例えば、敵機の形状のX軸方向の幅の半分の値に、自機が発射する攻撃弾の形状のX軸方向の幅の半分の値を加算した値を設定することができる。
【0050】
d(Xi(t),Xs(t))<aの場合には、敵機は自機の攻撃弾により破壊されたと考えることができるため、制御部102は、上記射線上にある敵機が破壊された旨の信号を、敵機行動決定部20及び衝突判定部30に送り、その後、ステップS7の処理を行う。上記信号を受けた敵機行動決定部20は、その後の処理において、上記破壊されたと考えられる敵機についての位置の更新を停止する。また、制御部102は、その後の処理において、上記破壊されたと考えられる敵機については、その位置のバッファへの読み書き等の処理を行わない。また、上記信号を受けた衝突判定部30は、その後の処理において、自機と上記破壊されたと考えられる敵機の衝突の判定を行わない。
d(Xi(t),Xs(t))≧aの場合には、制御部102は、ステップS7の処理を行う。
【0051】
また、上記実施例では、衝突カウント部402が足し込んだ衝突回数及び生き残り移動パターンカウント部404がカウントした自機が生き残った旨を表わす信号を受信した回数、を正規化部403が正規化し、正規化した値を難易度データ保存部50に出力した。しかし、衝突カウント部402が足し込んだ衝突回数及び生き残り移動パターンカウント部404がカウントした自機が生き残った旨を表わす信号を受信した回数、をそのまま難易度データ保存部50に出力しても良い。正規化部403が正規化せずとも、衝突カウント部402が足し込んだ衝突回数及び生き残り移動パターンカウント部404がカウントした自機が生き残った旨を表わす信号を受信した回数も、広義の難易度として捉えることができるためである。
【0052】
また、上記シューティングゲーム難易度判定装置1000の処理機能をコンピュータによって実現することができる。この場合、シューティングゲーム難易度装置の処理機能の内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、図6に示すように、上記シューティングゲーム難易度判定装置1000の処理機能がコンピュータ上で実現される。
【0053】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、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)等を用いることができる。
【0054】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0055】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0056】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ユーザ端末を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
以上の各実施形態の他、本発明であるシューティングゲーム難易度判定方法、その装置等は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【図面の簡単な説明】
【0057】
【図1】シューティングゲーム難易度判定装置の機能構成を例示した図。
【図2】シューティングゲーム難易度判定装置の処理を例示した図。
【図3】衝突回数のカウント方法を説明するための図。
【図4】縦型探索の方法を説明するための図。
【図5】シューティングゲーム難易度判定装置の処理を例示した図。
【図6】シューティングゲーム難易度判定装置をコンピュータにより実行するときの機能構成を例示した図。
【図7】図2に例示したシューティングゲーム難易度判定装置の処理の変形例を示した図。
【図8】図5に例示したシューティングゲーム難易度判定装置の処理の変形例を示した図。
【符号の説明】
【0058】
1 自機
2 敵機
3 CPU
4 RAM
5 出力部
6 補助記憶部
7 入力部
8 バス
10 自機移動パターン生成部
20 敵機行動決定部
30 衝突判定部
40 難易度計算部
50 難易度データ保存部
51 自機移動パターンバッファ
52 敵機攻撃状態バッファ
101 初期化部
102 制御部
103 バッファ
104 位置更新部
105 記憶部
201 敵機移動速度決定部
202 記憶部
203 敵機攻撃弾発射速度決定部
204 制御部
401 乗演算部
402 衝突カウント部
403 正規化部
404 生き残り移動パターンカウント部
1000 シューティングゲーム難易度判定装置

【特許請求の範囲】
【請求項1】
画面上に自機と敵機を表示し、自機をW種類の行動によって所定の時間(以下、行動単位時間Tとする。)だけ移動させる操作を、所定の回数(以下、Dとする。)だけ行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度を提示する方法であって、
初期化手段が、自機と敵機を画面上の行動開始位置に置く初期化過程と、
自機移動パターン生成手段が、D回の行動を選択する自機の各移動先の候補を生成する自機移動パターン生成過程と、
敵機行動決定手段が、敵機の各移動先の候補を生成する敵機行動決定過程と、
衝突判定手段が、自機が、上記自機の各移動先の候補へ移動する途中に、上記敵機の各移動先の候補へ移動する敵機と衝突するか否かを判定する衝突判定過程と、
カウント手段が、上記衝突があった回数を計測して、シューティングゲームの難易度を決定するカウント過程と、
を有することを特徴とするシューティングゲーム難易度判定方法。
【請求項2】
請求項1記載のシューティングゲーム難易度判定方法であって、
べき乗演算手段が、衝突があった場合に、衝突が起こった際に自機が行った行動の回数をdとすると、W(D−d)を計算するべき乗演算過程、を更に有し、
上記カウント過程は、上記べき乗演算過程で得られた値を衝突回数としてカウントする過程であり、
上記自機移動パターン生成過程は、上記衝突が起こった場合、上記衝突が起こった箇所より後の自機の移動先の候補を生成しない過程である、
ことを特徴とするシューティングゲーム難易度判定方法。
【請求項3】
請求項1記載のシューティングゲームの難易度判定方法であって、
上記カウント過程は、上記衝突がなかった回数を計測して、シューティングゲームの難易度を決定する過程である、
ことを特徴とするシューティングゲーム難易度判定方法。
【請求項4】
請求項1乃至3の何れかに記載のシューティングゲーム難易度判定方法であって、更に、
正規化手段が、上記カウント過程が計測した結果を、上記D回の行動を選択した自機の移動先の候補の数であるWで割算し、この計算結果をシューティングゲームの難易度とする正規化過程、
を有することを特徴とするシューティングゲーム難易度判定方法。
【請求項5】
請求項1乃至4の何れかに記載のシューティングゲーム難易度判定方法であって、
上記敵機行動決定過程は、上記自機の各移動先の候補に基づいて、敵機の移動先の候補を生成する過程である、
ことを特徴とするシューティングゲーム難易度判定方法。
【請求項6】
請求項1乃至5の何れかに記載のシューティングゲーム難易度判定方法であって、
自機の形状に内接する円の直径を自機の速度で割った値を、上記行動単位Tとする、
ことを特徴とするシューティングゲーム難易度判定方法。
【請求項7】
請求項1乃至6の何れかに記載のシューティングゲーム難易度判定方法であって、
敵機は複数存在する、
ことを特徴とするシューティングゲーム難易度判定方法。
【請求項8】
請求項1乃至7の何れかに記載のシューティングゲーム難易度判定方法であって、
上記表示過程は、更に、敵機が過去に発射した攻撃弾を画面上の行動開始位置に置く過程であり、
上記敵機行動決定過程は、更に、上記攻撃弾の各移動先の候補を生成する過程であり、
上記衝突判定過程は、更に、自機が、上記攻撃弾の各移動先の候補へ移動する攻撃弾と衝突するか否かを判定する過程である、
ことを特徴とするシューティングゲーム難易度判定方法。
【請求項9】
請求項1乃至8の何れかに記載のシューティングゲーム難易度判定方法であって、
射線判定手段が、敵機が自機の射線上にあるかどうかを判定する射線判定過程、を更に有し、
上記敵機行動決定過程は、上記射線判定過程において射線上にあると判定された敵機については、その敵機の各移動先の候補を生成しない過程であり、
上記衝突判定過程は、上記射線判定過程において射線上にあると判定された敵機については、自機と衝突するか否かを判定しない過程である、
ことを特徴とするシューティングゲーム難易度判定方法。
【請求項10】
画面上に自機と敵機を表示し、自機をW種類の行動によって所定の時間(以下、行動単位時間Tとする。)だけ移動させる操作を、所定の回数(以下、Dとする。)だけ行って、自機に攻撃を加えてくる敵機と闘うシューティングゲームの難易度を提示する装置であって、
自機と敵機を画面上の行動開始位置に置く初期化手段と、
D回の行動を選択する自機の各移動先の候補を生成する自機移動パターン生成手段と、
敵機の各移動先の候補を生成する敵機行動決定手段と、
自機が、上記自機の各移動先の候補へ移動する途中に、上記敵機の各移動先の候補へ移動する敵機と衝突するか否かを判定する衝突判定手段と、
上記衝突があった回数を計測して、シューティングゲームの難易度を決定するカウント手段と、
を有することを特徴とするシューティングゲーム難易度判定装置。
【請求項11】
請求項1乃至9の何れかに記載のシューティングゲーム難易度判定方法の各過程をコンピュータに実行させるためのシューティングゲーム難易度判定プログラム。
【請求項12】
請求項11記載のシューティングゲーム難易度判定プログラムを記録したコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2007−307209(P2007−307209A)
【公開日】平成19年11月29日(2007.11.29)
【国際特許分類】
【出願番号】特願2006−140177(P2006−140177)
【出願日】平成18年5月19日(2006.5.19)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】