≪ゲームシステムの説明≫
図面を参照して、本発明が適用されるゲームシステム6について説明する。
図1は、ゲームシステム6を説明するための外観図である。以下、据置型ゲーム装置を一例にして、本発明のゲームシステム6について説明する。
図1において、ゲームシステム6は、スピーカ9aおよびディスプレイ9bを備えた家庭用テレビジョン受像機等のモニタ装置9に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)10および当該ゲーム装置10に操作情報を与えるコントローラ7によって構成される。ゲーム装置10には、交換可能な記憶媒体の一例である光ディスク4がセットされるとともに、ゲームのセーブデータ等を不揮発的に記憶する着脱自在のメモリカード5が必要に応じて装着される。ゲーム装置10には、ゲームの主電源である電源ON/OFFスイッチ、光ディスク4の着脱を行うイジェクトスイッチが設けられている。
コントローラ7は、遊戯者によって操作され、その操作内容を示す操作信号をゲーム装置10に対して送信する装置である。ゲーム装置10は、コントローラ7から送信されてくる操作信号に応じてゲームを開始・終了させ、ゲームを進行させる等の制御を行う。コントローラ7とゲーム装置10との通信は、無線で行われる。この通信のための通信ユニットとしては、コントローラ7は通信部75(図4参照)を備え、ゲーム装置10は受信ユニット36a(図2参照)を備えている。なお、1台のゲーム装置10に対して1台〜4台のコントローラ7を無線接続することが可能である。
なお、モニタ装置9の左右上面には、コントローラ7に対してモニタ装置9の位置を知らせるための発光部8L,Rが取り付けられている。発光部8L,Rは、それぞれ赤外線LEDを内蔵しており、ゲーム装置10の動作中は赤外線で発光する。
次に、図2のブロック図を参照して、ゲーム装置10の機能的構成について説明する。図2において、ゲーム装置10は、各種プログラムを実行するCPU(Central Processing Unit)30を備える。CPU30は、図示しないブートROMに記憶された起動プログラムを実行し、メインメモリ33等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理等を行うものである。CPU30には、メモリコントローラ31を介して、GPU(Graphics Processing Unit)32、メインメモリ33、DSP(Digital Signal Processor)34、およびARAM(Audio RAM)35が接続される。また、メモリコントローラ31には、所定のバス42を介して、コントローラI/F(インターフェース)36、ビデオI/F37、外部メモリI/F38、オーディオI/F39、およびディスクI/F41が接続され、それぞれ受信ユニット36a、モニタ装置9、外部メモリカード5、スピーカ9a、およびディスクドライブ40が接続されている。
GPU32は、CPU30の命令に基づいて画像処理を行うものであり、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成される。GPU32は、図示しない画像処理専用のメモリやメインメモリ33の一部の記憶領域を用いて三次元の仮想空間(ゲーム空間)の各コマの画像(公知の透視投影法による二次元画像)を生成し、この画像にカーソル等の画像を合成する等して生成したゲーム画像をメモリコントローラ31およびビデオI/F37を介してモニタ装置9(ディスプレイ9b)に出力する。メインメモリ33は、CPU30で使用される記憶領域であって、光ディスク4から読み出されたゲームプログラムや各種データ等を適宜記憶する。
DSP34は、ゲームプログラム実行時にCPU30において生成されるサウンドデータ等を処理するものであり、そのサウンドデータ等を記憶するためのARAM35が接続される。ARAM35は、DSP34が所定の処理(例えば、先読みしておいたゲームプログラムやサウンドデータの記憶)を行う際に用いられる。DSP34は、ARAM35に記憶されたサウンドデータを読み出し、メモリコントローラ31およびオーディオI/F39を介してモニタ装置9に備えるスピーカ9aに出力させる。
メモリコントローラ31は、データ転送を統括的に制御するものであり、上述した各種I/Fが接続される。受信ユニット36aは、コントローラI/F36を介してメモリコントローラ31に接続される。上述したように受信ユニット36aは、コントローラ7からの送信データを受信し、コントローラI/F36およびメモリコントローラ31を介して当該送信データをCPU30へ出力する。ビデオI/F37には、モニタ装置9が接続される。外部メモリI/F38には、外部メモリカード5が接続され、その外部メモリカード5に設けられたバックアップメモリ等とアクセス可能となる。
オーディオI/F39にはモニタ装置9に内蔵されるスピーカ9aが接続される。スピーカ9aは、DSP34がARAM35から読み出したサウンドデータや、ディスクドライブ40から直接出力されるサウンドデータを出力する。ディスクI/F41には、ディスクドライブ40が接続される。ディスクドライブ40は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置10のバス42やオーディオI/F39に出力する。
次に、図3を参照して、コントローラ7について説明する。
コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有している。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
ハウジング71上面の中央前面側に、十字キー72cが設けられる。この十字キー72cは、十字型の4方向プッシュスイッチであり、矢印で示す4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。遊戯者によって十字キー72cのいずれかの方向の操作部が押下されると、その方向を示す操作信号が、コントローラ7からゲーム装置10に送信される。
ハウジング71上面の十字キー72cより後側には、多数のボタンスイッチが設けられており、各ボタンがオンされると、対応する操作信号がコントローラ7からゲーム装置10へ送信される。これらのボタンスイッチのうち、最も前方(十字キー72c寄り)に設けられているものが、Aボタン72aである。
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、遊戯者がハウジング71を把持したとき、この遊戯者の人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、ボタンスイッチ72bが設けられる。このボタンスイッチ72bは、Bボタンとして機能する操作部である。
なお、ハウジング71上面の十字キー72cより前面側に設けられているボタンスイッチ72hは、遠隔からゲーム装置10本体の電源をオン/オフする電源スイッチである。
また、ハウジング71前面には、コントローラ7前方の画像を撮像するための撮像素子743(図4参照)が設けられている。撮像素子743は、撮像情報演算部74(図4参照)の一部を構成している。撮像素子743は、コントローラ7がモニタ装置9に向けて支持されているとき、モニタ装置9の上面に設けられた発光部8L,Rを撮像する。撮像情報演算部74は、撮像素子743における発光部8L,Rの撮像位置によってコントローラ7の向きを検出する。
次に、図4のブロック図を参照して、コントローラ7の内部構成について説明する。
図4において、コントローラ7は、上述した操作部72および撮像情報演算部74の他に、その内部に通信部75、加速度センサ701およびバイブレータ704を備えている。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コアユニット70の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分、すなわち発光部8L,Rからの光を検出し、それらの位置座標を示す座標データを通信部75へ出力する。
加速度センサ701は、コントローラ7の上下方向、左右方向および前後方向の3軸でそれぞれ加速度を検知する加速度センサである。加速度センサ701が検知した加速度を示すデータは、通信部75へ出力される。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。
操作部72からの操作信号(キーデータ)、加速度センサ701からの加速度信号(加速度データ)、および撮像情報演算部74からの座標データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、加速度データ、座標データ)を受信ユニット36aへ送信する送信データとして一時的にメモリ752に格納する。
ここで、通信部75から受信ユニット36aへの無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。マイコン751は、受信ユニット36aへの送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。
バイブレータ704は、例えば振動モータ又はソレノイド等が考えられる。バイブレータ704が作動することによってコアユニット70に振動が発生するので、それを把持している遊戯者の手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。
≪ゲームプログラムの説明≫
次にこのゲーム装置で実行されるゲームプログラムについて説明する。このゲームプログラムは、いわゆるハンティングアクションゲームであり、遊戯者が操作するプレイヤキャラクタが敵キャラクタ(モンスター)と戦闘を行い、モンスターを討伐することによりゲームを進めていく。プレイヤキャラクタはフィールド(狩場)でモンスターに出会うと、モンスターの攻撃を回避しつつ、武器やアイテムを使用してモンスターを攻撃し、ダメージを与えてモンスターを倒す。
このようなゲームを実行するゲームプログラムを上述したゲーム装置に読み込ませることにより、図5に示すようなゲームシステムを機能的に実現することができる。ゲームシステムは、操作検出部50、ゲーム進行制御部51、描画処理部57等から構成されており、ゲーム進行制御部51は、プレイヤキャラクタ制御部52、ノンプレイヤキャラクタ制御部53、ゲーム空間制御部55を含んでいる。そして、ノンプレイヤキャラクタ制御部53はモンスター状態制御部54を、ゲーム空間制御部55はゲームステージ制御部56を含んでいる。
操作検出部50は、CPU30、GPU32等のデータ処理部およびコントローラ7を含み、遊戯者の各種操作を検出して、ゲーム進行制御部51に伝達する。ゲーム進行制御部51は、CPU30、GPU32等のデータ処理部を含み、仮想のゲーム空間やキャラクタを生成するとともに、遊戯者の操作や時間の経過等に応じて、上述のゲーム空間を変化させたりキャラクタを活動させたりする等の処理を行ってゲームを進行させる。
プレイヤキャラクタ制御部52は、ゲーム空間内にプレイヤキャラクタを生成するとともに、操作検出部50から入力される操作情報に基づいてその活動を制御する。ノンプレイヤキャラクタ制御部53は、ゲーム空間内にノンプレイヤキャラクタを生成するとともに、その活動を制御する。主なノンプレイヤキャラクタは、プレイヤキャラクタと戦う敵キャラクタのモンスターである。モンスター状態制御部54は、ゲームの状況に応じたモンスターの行動形態である状態(ステータス)を制御し、ゲームの状況に応じて状態を移行させる。
ゲーム空間制御部55は、操作検出部50から入力された操作情報に基づいて選択されたフィールド(狩場)のゲーム空間を生成するとともに、そのゲーム空間の天候や昼夜の変更などの環境を制御する。ゲームステージ制御部56は、ゲーム空間制御部55が生成したフィールド内に、さらに複数のゲームステージを生成し、その環境を制御する。ゲームステージは、森林や砂漠、湖や草原や洞窟等の様々な環境を有するゲーム空間である。プレイヤキャラクタおよびモンスターは、このゲームステージ内で活動する。また、プレイヤキャラクタおよびモンスターは、フィールド内であれば複数のゲームステージ間を移動することが可能である。
描画処理部57は、CPU30、GPU32等のデータ処理部を含み、ゲーム進行制御部51が生成したゲーム空間、キャラクタ等を二次元のスクリーンに投影したゲーム画像を生成してモニタ9bに出力する。
モンスター状態制御部54は、モンスターに「通常状態」、「警戒状態」、「戦闘状態」という3つの状態のいずれかを設定する。ノンプレイヤキャラクタ制御部53は、この状態に基づいてモンスターの行動を制御する。
「通常状態」とは、モンスターがプレイヤキャラクタを「発見」していない普通の状態をいう。モンスターが通常状態の場合、プレイヤキャラクタに対する戦闘行動は取らず、歩行や周囲を見渡す等の通常の行動を取る。
「戦闘状態」とは、モンスターがプレイヤキャラクタを「発見」し、このプレイヤキャラクタと戦闘する態勢になっている状態をいう。モンスターが戦闘状態の場合、プレイヤキャラクタを追跡し、ブレスを吐く、噛みつく等の戦闘行動を取る。
「警戒状態」とは、プレイヤキャラクタを「発見」しているが、戦闘状態になるほどの危険性がなく、警戒している状態をいう。警戒状態では、モンスターはプレイヤキャラクタに対する戦闘行動は取らず、通常状態と同様の行動を取るため、通常状態と外観上の差はない。
上述の危険性は、プレイヤキャラクタがモンスターに対して攻撃を仕掛けてくる可能性を示すパラメータである「気配値」で表される。気配値は、各モンスターに設定されている。そして、気配値は、以下の計算式により算出される。
気配値=前回の気配値+(増減値A×行動値B+補正値C) ・・・(式1)
この気配値の計算は、モンスターがフィールド内に出現した(ノンプレイヤキャラクタ制御部53によってセットされた)ときから開始され、例えば1フレーム(1/30秒など)ごとに行われる。したがって、式1の「前回の気配値」とは、前フレームにこの式1により算出された気配値をいう。モンスターが出現した直後のフレームでは、前回の気配値を0(初期値)として計算する。式1のように、前回の気配値に、そのフレームの状況に基づく値(A×B+C)を加えることにより、フレーム単位で気配値を更新することができる。以下、図6を参照して気配値の計算式1の各項目について説明する。
図6は、気配値の算出に用いられる各テーブル等を示す図である。まず、同図(A)は、同じゲームステージにいるモンスター1とプレイヤキャラクタ2との位置関係を説明する図である。モンスター1の周囲の一定範囲内(例えば中心から50mで120°の角度範囲内)をモンスター1の視界範囲11とする。なお、視界範囲11はモンスター1の種類ごとに異なる。そして、同図の例のように、プレイヤキャラクタ2がモンスター1の視界範囲11内にいる場合、モンスター1に「発見」されている状態となる。
一方、モンスター1と同じゲームステージにいるプレイヤキャラクタ2が視界範囲11外にいる場合は、モンスター1に「発見」されていない状態となる。また、プレイヤキャラクタがモンスター1とは異なるゲームステージにいる場合も、上記と同様に視界範囲11外にいることとなるので「発見」されていない状態となる。
さらに、プレイヤキャラクタ2がモンスター1に「発見」されている状態から「発見」されていない状態に変化する(同じゲームステージ内のプレイヤキャラクタ2がモンスター1の視界範囲11外に移動する、プレイヤキャラクタ2が他のゲームステージに移動する、または、モンスター1が他のゲームステージに移動する)ことによって、モンスター1はプレイヤキャラクタ2を「見失う」こととなる。
なお、視界範囲は、可変としてもよく、例えば、岩等の視界を遮る障害物が存在する場合や洞窟のような暗闇が広がっている場合等の視界が良くない状態では、視界が良好な状態に比べて狭くなるようしてもよい。
また、特許請求の範囲中の「発見」は、本実施形態のようにプレイヤキャラクタがモンスター(ノンプレイヤキャラクタ)の周囲の一定範囲に存在する状態に限定されず、ノンプレイヤキャラクタがプレイヤキャラクタの存在を認識したと判断できる状態であればよい。
さらに、モンスター1には、近傍から順に(1)〜(6)の距離範囲が設定されている。そして、プレイヤキャラクタ2がモンスター1のいずれの距離範囲に存在するかによって、同図(B)のテーブルに基づいて上記式1の増減値Aが決定される。すなわち、モンスター1とプレイヤキャラクタ2との距離によって気配値が増減する。同図(A)の例では、プレイヤキャラクタ2はモンスター1の距離範囲(3)に存在している。
同図(B)は、上記式1の増減値Aを求める増減値テーブルを示す。プレイヤキャラクタ2が存在する距離範囲(モンスター1とプレイヤキャラクタ2との距離)ごとに増減値Aが設定されている。距離範囲(1)(モンスター1からの距離が6メートル以内)の場合は増減値Aが+300、同(2)(同11メートル以内)の場合は同+15、同(3)(同25メートル以内)の場合は同+10、同(4)(同50メートル以内)の場合は同+5に設定されている。さらに、同(5)(同50メートルよりも離れている)の場合は同−2、同(6)(同ステージ外)の場合は同−5に設定されている。
同図(C)は、上記式1の行動値Bを求める行動値テーブルを示す。プレイヤキャラクタ2の行動および上記の増減値Aによって行動値Bを設定している。プレイヤキャラクタ2がしゃがんだ状態での行動をとり、増減値Aの符号が+((1)〜(4))の場合は行動値Bが0.5に、増減値Aの符号が−((5)、(6))の場合は行動値Bが1に設定されている。一方、プレイヤキャラクタ2がしゃがんでいない状態での行動をとった場合、増減値Aの符号に関わらず(±(1)〜(6))、行動値Bが1に設定されている。
同図(D)は、上記式1の補正値Cを求める補正値テーブルを示す。モンスター1の状態およびプレイヤキャラクタ2の行動によって補正値Cを設定している。モンスター1が警戒状態であり、プレイヤキャラクタ2がしゃがんでいない状態での行動をとった場合、補正値Cは+100に、しゃがんだ状態での行動をとった場合、補正値Cは0に設定されている。一方、モンスター1が警戒状態以外の(通常、戦闘)状態の場合、いずれの行動をとっても補正値は0に設定されている。
以下、上記の式1を用いて、同図(A)の位置関係でモンスターがゲームステージに出現した直後の気配値を算出する。まず、モンスターが出現した直後であるため、前回の気配値は0(初期値)である。次に、プレイヤキャラクタが距離範囲(3)に存在するため、増減値Aは+10である。さらに、プレイヤキャラクタは立っており、しゃがんでいない状態での行動を行っているため、行動値Bは1である。また、プレイヤキャラクタがモンスターに発見されているが、この気配値の計算(更新)はモンスターの状態を更新する前に行われるため(図9)、まだモンスターの状態は通常状態であり、補正値Cは0である。したがって、気配値=0+(10×1+0)となり、このフレームでの気配値は+10となる。
なお、本実施形態では、プレイヤキャラクタの行動としてしゃがみだけを用いて気配値を算出しているが、武器を構える、走り出す等の全て又は一部の行動を対象としてもよい。
また、本実施形態では、気配値が、モンスターとプレイヤキャラクタとの距離、および、プレイヤキャラクタの行動によって算出されるが、距離のみ、または、行動のみに基づいて算出してもよい。さらに、気配値を決めるのはこれらの距離、行動に限定されず、その他のプレイヤキャラクタに関する情報に基づいて気配値を算出できるようにしてもよい。
例えば、プレイヤキャラクタの攻撃力、体力の値に基づいて気配値を算出してもよい。この場合、例えば攻撃力が高いプレイヤキャラクタはモンスターにとって危険性が高いため、気配値がすぐに上昇するようにする。
その他、例えばプレイヤキャラクタが装備している武器の性質により気配値を算出してもよい。この場合、例えばプレイヤキャラクタが装備している武器がボーガン等の遠距離武器である場合には、プレイヤキャラクタとモンスターとの距離が遠い場合であっても、大剣等の近接武器を装備している場合に比べて気配値の上昇率を高くするようにする。
本実施形態では、上述したモンスターによるプレイヤキャラクタの「発見」の有無、および、気配値の大小に基づいて、モンスターの状態を移行させる。以下、図7を参照してモンスターの状態の移行条件について説明する。
図7は、モンスターの3つの状態の移行の流れを説明する図である。同図に示す条件に基づき、モンスターの状態は移行する。まず、通常状態から警戒状態への移行は、プレイヤキャラクタがモンスターの視界範囲内に入り(発見され)、気配値が低いときに行われる。一方、通常状態から戦闘状態への移行は、プレイヤキャラクタがモンスターの視界範囲内に入り(発見され)、気配値が高いときに行われる。また、警戒状態から戦闘状態への移行は、既にプレイヤキャラクタが発見された状態にあるため、気配値が高くなると行われる。
本実施形態では、気配値が所定値(例えばMAX値の20000)に達することで、気配値が高いとして、発見によって通常状態、警戒状態から戦闘状態に移行する。一方、気配値が所定値(同20000)に達していなければ、気配値が低いとして戦闘状態へ移行しない。
なお、気配値のMAX値は、モンスター毎に異なる値を設定しもよく、また固定値でなくてもよい。
さらに、本実施形態では、気配値がMAX値に達することで気配値が高いと判定しているが、気配値が所定値以上で高いと判定してもよい。
したがって、プレイヤキャラクタがモンスターの視界範囲内に入った(警戒状態になった)場合でも、しゃがみ行動をしたりモンスターから遠ざかったりする等して気配値をあまり上昇させない(所定値に達しない)ようにすることにより、モンスターの状態が戦闘状態に移行するのを防ぎ、戦闘を回避することができる。一方、プレイヤキャラクタが武器を出す等の行動を取ると気配値が急速に上昇し(所定値に達し)、モンスターの状態はすぐに戦闘状態に移行する。
すなわち、遊戯者が気配値をコントロールすることにより、ゲームの状況に応じて戦闘するか否かを選択でき、戦闘開始のパターンにバリエーションを持たせることができる。これにより、例えば、プレイヤキャラクタの残体力が少ない場合に戦闘開始を避けたり、モンスターが2頭いる場合に1頭との戦闘を避けたり、また、他のプレイヤキャラクタが同じゲームステージに到着するまで戦闘開始を遅らせたりすることができ、様々な戦略をとることが可能になる。
逆に、警戒状態から通常状態への移行は、モンスターの視界範囲内にプレイヤキャラクタがいない(モンスターがプレイヤキャラクタを見失った)状態が一定時間(例えば30秒)継続したときに行われる。また、戦闘状態から通常状態への移行も、同様にプレイヤキャラクタがモンスターの視界範囲内から消えた(モンスターがプレイヤキャラクタを見失った)状態が一定時間(例えば1分30秒)継続したときに行われる。なお、本実施形態では戦闘状態から警戒状態へ移行することはないが、移行するようにしてもよい。
また、モンスターがプレイヤキャラクタを発見していない通常状態のとき、気配値が所定値(例えばMAX値の20000)に達すると、モンスターは、プレイヤキャラクタ(敵)が自分の視界範囲内に入るように探す「索敵行動」を行う。例えば、プレイヤキャラクタが、モンスターの視界範囲外である背後のすぐ近傍に存在する場合、モンスターの状態が通常状態のまま気配値が急速に上昇し、所定値(同20000)に達する。
そして、モンスターが索敵行動によってプレイヤキャラクタを発見した場合、既に気配値が所定値(同20000)に達している状態であるので、通常状態から、警戒状態を経由せずに戦闘状態に移行する。
上述のように、各モンスターには気配値が設定されており、フレームごとに上記式1に基づいて算出され、更新されるが、本実施形態では、モンスターが索敵行動によってプレイヤキャラクタを発見できなかった場合、および、モンスターの状態が戦闘状態から通常状態に移行した場合には、気配値が0にリセットされ、再び0から気配値の計算が開始される。なお、気配値をリセットする条件は、これらの場合に限定されない。
これらのモンスターの状態は、ゲーム画面上にアイコン(ステータスアイコン)で表示される。ステータスアイコンは、モンスターの状態を表す目の形状のアイコンである。このステータスアイコンは黄色及び赤色の何れかで表示される。モンスターが気配値の低い警戒状態であれば黄色の目のステータスアイコンが表示される。一方、気配値の高い戦闘状態であれば赤色の目のステータスアイコンが表示される。警戒状態から戦闘状態に移行した場合は、黄色から赤色に目のアイコンの色が変化する。なお、プレイヤキャラクタを発見していない通常状態の場合、ステータスアイコンは表示されない。
各フィールド(狩場)には、ゲームステージ制御部56が生成する複数の(ゲーム)ステージが存在する。そして、モンスターは、常に同じステージに存在するのではなく、各ステージを移動している。基本的には、予めステージごとに設定された滞在時間が経過するとモンスターは他のステージに移動する。例えば、通常状態時および警戒状態時では滞在時間が30秒に設定され、戦闘状態時では戦闘時間確保のため4分以上に設定される。
ただし、2種類以上のモンスターが同じステージに存在する場合や、プレイヤキャラクタがモンスターを逃げさせるアイテムを使用した場合等には、滞在時間にかかわらず所定の確率でモンスターが移動する。
したがって、モンスターに発見されても、プレイヤキャラクタがしゃがみ行動等をしてモンスターを戦闘状態にさせなければ、モンスターは滞在時間の経過等に伴いステージを移動していき、戦闘開始を回避することができる。特に、モンスターを逃げさせるアイテムを使用する際、通常状態、警戒状態時の上記所定の確率が戦闘状態時の所定の確率よりも高く設定されている場合は、気配値を抑えた行動をとりつつアイテムを使用することで、戦闘状態時にアイテムを使用するよりも確実にモンスターとの戦闘を回避することができる。
なお、ゲーム空間(フィールド)内にプレイヤキャラクタが複数存在する場合、モンスターには、プレイヤキャラクタ毎に気配値が設定される。例えば、フィールド内にプレイヤキャラクタが3人いる場合、3つの気配値が設けられる。そして、最も高い気配値に基づいてモンスターの状態が決定される。
図8は、モンスター状態制御部54に設定されるモンスター管理テーブルを示す図である。このテーブルには、モンスターについてのゲーム進行に関わる各種データが記憶されている。具体的には、モンスター名、モンスターID、体力MAX値、体力値、気配値、状態フラグの記憶エリアが設定されている。
体力値は、モンスターが生存するためのパラメータであり、現在の値およびMAX値がこのテーブルで管理されている。また、気配値は、上記の通り、プレイヤキャラクタがモンスターに対して攻撃を仕掛けてくる可能性を示すパラメータである。この気配値は、プレイヤキャラクタの数(n)だけ設けられる。そして、状態フラグは、モンスターの状態が決まったときにセットされるフラグである。このフラグは、通常状態、警戒状態、戦闘状態のうちいずれか一つが選択される。
以下に、図9〜図13のフローチャートを参照しながら本実施形態のモンスター状態移行処理等について説明する。
図9は、ノンプレイヤキャラクタ制御部53が行うモンスター制御処理を説明するフローチャートである。このモンスター制御処理は、モンスター制御のメインルーチンとして例えば1フレームごとに繰り返し実行される。なお、フィールド内に複数のモンスターが存在する場合は、モンスター毎に上記モンスター制御処理が実行される。
まず、上述の式1によりモンスターの気配値を算出し、気配値更新処理を行う(S11)。気配値更新処理については図10を参照して後述する。次に、更新された気配値に基づいてモンスター状態移行処理を行う(S12)。モンスター状態移行処理については図11〜図13を参照して後述する。次に、移行した状態に基づいて、攻撃行動等のモンスターの行動を決定するモンスター行動処理を行う(S13)。その後、モンスターの生死判定処理等のその他ゲーム処理を行う(S14)。最後に、描画処理を行い(S15)、処理を終了する。
図10は、ノンプレイヤキャラクタ制御部53が行う気配値更新処理を説明するフローチャートである。気配値更新処理は、モンスターとプレイヤキャラクタとの距離、および、プレイヤキャラクタの行動に基づいて、上述の式1により、例えば1フレームごとにモンスターの気配値を更新する処理である。なお、プレイヤキャラクタの位置および行動の情報は、プレイヤキャラクタ制御部52から毎フレーム受信している。
まず、モンスターとプレイヤキャラクタとの距離情報(距離範囲情報)を取得し、両者の距離が、図7(B)の距離範囲のいずれに該当するかを判断する(S20)。次に、プレイヤキャラクタの行動情報を取得する(S21)。具体的には、プレイヤキャラクタがしゃがんだ状態で行動しているか、しゃがんでいない状態で行動しているかを判断する。そして、S20の距離情報およびS21の行動情報に基づいて、上述の式1により気配値計算処理を行う(S22)。最後に、S22で算出した気配値に更新し(S23)、図8のモンスター管理テーブルの気配値を書き換え、ここでの処理を終了する。
図11〜図13は、ノンプレイヤキャラクタ制御部53が行うモンスター状態移行処理を説明するフローチャートである。モンスター状態移行処理は、モンスターの状態を通常状態、警戒状態、戦闘状態の各状態に移行する処理である。
図11は、通常状態から警戒状態、戦闘状態に移行する処理を示している。まず、現在のモンスターの状態を取得する(S30)。そして、現在、警戒状態であれば図12の(1)へ、戦闘状態であれば図13の(2)へ進む。一方、現在、通常状態であれば、プレイヤキャラクタから攻撃を受けたか否かを判定する(S31)。すなわち、モンスターがプレイヤキャラクタを発見する前に、不意打ちの攻撃を受けたか否かを判定する。攻撃を受けた場合(S31でYES)、プレイヤキャラクタ発見の有無、気配値の大小に関わらず、いきなり戦闘状態に移行する(S35)。
一方、攻撃を受けていない場合(S31でNO)、モンスターの視界範囲内にプレイヤキャラクタが存在するか(プレイヤキャラクタが発見されているか)否かを判定する(S32)。プレイヤキャラクタが視界範囲内に存在しない場合(S32でNO)、状態を移行せずに図9のメインルーチンにリターンする。一方、プレイヤキャラクタが視界範囲内に存在する場合(S32でYES)、気配値が所定値以上か否かを判定する(S33)。所定値は、例えばMAX値の20000とする。気配値が所定値未満であれば(S33でNO)、警戒状態に移行して(S34)、メインルーチンにリターンする。気配値が所定値以上であれば(S33でYES)、戦闘状態に移行して(S35)メインルーチンにリターンする。
図12は、警戒状態から戦闘状態、通常状態に移行する処理を示している。図11のS30で現在警戒状態の場合(1)、上記S31の処理と同様にプレイヤキャラクタから攻撃を受けたか否かを判定する(S40)。攻撃を受けた場合(S40でYES)、プレイヤキャラクタ発見の有無、気配値の大小に関わらず、いきなり戦闘状態に移行する(S43)。
一方、攻撃を受けていない場合(S40でNO)、モンスターの視界範囲内にプレイヤキャラクタが存在するか(モンスターがプレイヤキャラクタを見失っていないか)否かを判定する(S41)。視界範囲内に存在する場合(S41でYES)、気配値が所定値以上か否かを判定する(S42)。所定値は、同様にMAX値の20000とする。気配値が所定値以上であれば(S42でYES)、戦闘状態に移行する(S43)。気配値が所定値未満であれば(S42でNO)、状態を移行しない。
次に、警戒解除判定中か否か判定する(S44)。警戒解除判定中であれば(S44でYES)、タイマリセットを行い、警戒解除判定を中止する。一方、警戒解除判定中でなければ(S44でNO)、何の処理もせずに、メインルーチンにリターンする。
また、視界範囲内にプレイヤキャラクタが存在しない場合(S41でNO)、警戒解除判定中か否か判定する(S46)。警戒解除判定中であれば(S46でYES)、タイマが所定時間(例えば30秒)経過しているか否かを判定する(S47)。所定時間経過している場合(S47でYES)、通常状態に移行する(S48)。一方、所定時間経過していない場合(S47でNO)、何の処理もせずに、メインルーチンにリターンする。そして、警戒解除判定中でなければ(S46でNO)、タイマセットを行い、警戒解除判定を開始し(S49)、メインルーチンにリターンする。
図13は、戦闘状態から通常状態に移行する処理を示している。なお、本実施形態では、戦闘状態から警戒状態に移行する処理は行わない。図11のS30で現在戦闘状態の場合(2)、モンスターの視界範囲内にプレイヤキャラクタが存在するか(モンスターがプレイヤキャラクタを見失っていないか)否かを判定する(S50)。視界範囲内に存在する場合(S50でYES)、戦闘解除判定中か否か判定する(S51)。戦闘解除判定中であれば(S51でYES)、タイマリセットを行い、戦闘解除判定を中断する(S52)。一方、戦闘解除判定中でなければ(S51でNO)、何の処理もせずに、メインルーチンにリターンする。
また、視界範囲内にプレイヤキャラクタが存在しない場合(S50でNO)、戦闘解除判定中か否か判定する(S53)。戦闘解除判定中であれば(S53でYES)、タイマが所定時間経過しているか否かを判定する(S54)。所定時間経過している場合(S54でYES)、通常状態に移行し(S55)、気配値を0にリセットして(S56)、メインルーチンにリターンする。所定時間(例えば30秒)経過していない場合は(S54でNO)、何の処理もせずに、メインルーチンにリターンする。そして、警戒解除判定中でなければ(S53でNO)、タイマセットを行い、戦闘解除判定を開始し(S57)、メインルーチンにリターンする。
本実施形態では、警戒解除判定および戦闘解除判定に同一の所定時間である30秒を設定しているが、異なる値を設定してもよい。また、モンスター毎に所定時間の値を設定してもよい。
なお、本実施形態では、モンスターの視界範囲内にプレイヤキャラクタが存在するか否かに基づいて状態移行処理を行っているが、視界範囲の代わりに可聴範囲等を用いてもよい。この場合、プレイヤキャラクタが可聴域内で行動して物音をたてると、モンスターに「発見」されたことになり、状態移行処理が行われる。
また、本実施形態では、モンスターの気配値を算出し、気配値に基づいて状態移行処理を行っているが、気配値に代えてフラグを用いたON/OFF判定を用いてもよい。具体的には、プレイヤキャラクタがモンスターの周囲の一定範囲に存在するか否か、あるいは、プレイヤキャラクタが武器を構えたか否か等により、フラグをON/OFFさせる。そして、例えばプレイヤキャラクタがモンスターに発見された状態で、かつフラグがONの場合にモンスターの状態を戦闘状態に移行させる。
また、本実施形態では、敵キャラクタをモンスターとして説明したが、モンスターに限らず戦闘機や人型の敵キャラクタ等であってもよい。戦闘機が敵キャラクタである場合、例えばレーダを用いて相手(プレイヤキャラクタである戦闘機)を発見して戦闘を行うシューティングゲームの構成としてもよい。レーダの検知範囲内にプレイヤキャラクタが存在すると「発見」となる。したがって、本発明は、プレイヤキャラクタと敵キャラクタとの戦闘を行うゲームであればジャンルを問わず好適に適用可能である。
さらに、本実施形態では、据置型の家庭用ゲーム機器であるゲーム装置を一例として説明したが、携帯用のゲーム装置や、その他パソコンなど、他の汎用のコンピュータにゲーム制御プログラムを組み込んだものとしても実施可能である。また、業務用ゲーム機器としての実施も可能である。