以下、本発明の実施の形態に係るゲームプログラム、記録媒体、及びコンピュータ装置について、図面を参照しつつ説明する。
[ハードウェアの構成]
図1は、本発明の実施の形態に係るゲーム装置(コンピュータ装置)の構成を機能的に示すブロック図である。ゲーム装置1は、片手で持ち運びできる程度の寸法のボックス形状を成すハウジングに収納されており、図1に示すように、このゲーム装置1には制御部8が備えらており、制御部8にはCPU(Central Processing Unit)3が備えられている。制御部8において、CPU3は、データ転送を統括的に制御するメモリコントローラ2を介して、GPU(Graphics Processing Unit)4、メインメモリ5、及びDSP(Digital Signal Processor)6に接続されている。また、ゲーム装置1において、メモリコントローラ2には、バス9を介して、コントローラ・インタフェース(以下、「インタフェース」は「I/F」と記す)10、ビデオI/F11、外部メモリI/F12、オーディオI/F13、及びディスクI/F14が接続されている。そして、コントローラI/F10には受信ユニット15が接続され、オーディオI/F13及びディスクI/F14にはディスクドライブ16が接続されている。
更に、ゲーム装置1が有するビデオI/F11及びオーディオI/F13には、外部機器であるモニタ20及びスピーカ22が夫々に接続可能になっており、記録媒体としてのメモリカード21及び光ディスク23が、外部メモリI/F12及びディスクドライブ16に対して夫々装填可能になっている。
このうちCPU3は、図示しないブートROMに記録された起動プログラムを実行してメインメモリ5の初期化等を行った後、ディスクドライブ16に装填された光ディスク23に記録されているゲームプログラム24を実行し、該ゲームプログラムの内容に応じたゲーム処理を行うものである。また、メインメモリ5は、CPU3の動作時に使用されるデータを記録する記録領域を有し、例えば、光ディスク23から読み出されたゲームプログラム24や各種のデータを記録する。
GPU4は、三次元グラフィックスの表示に必要な計算処理を行う半導体チップで構成されており、CPU3からの指示に基づいて画像処理を行う。一例を挙げると、GPU4は、メインメモリ5の一部の記録領域や図示しない画像処理専用のメモリを用い、経時的に変化する三次元の仮想ゲーム空間の各フレーム画像を生成することができ、この画像は、メモリコントローラ2及びビデオI/F11を介してモニタ20に表示される。
DSP6は、CPU3がゲームプログラム24を実行しているときに生成されるサウンドデータの処理を行うものであり、該サウンドデータを記録するためのARAM(Audio RAM)7が接続されている。DSP6は、光ディスク23から先読みしておいたサウンドデータをARAM7に記録しておき、適宜のタイミングでARAM7から読み出したサウンドデータを出力するものであり、DSP6から出力されたサウンドデータは、メモリコントローラ2及びオーディオI/F13を介してスピーカ22から外部へ出力される。
一方、受信ユニット15は、ゲーム装置1とは別体を成すコントローラ(Remote controller)30(図2参照)から送られてきたデータを受信するものであり、受信したデータは、コントローラI/F10及びメモリコントローラ2を介してCPU3へ送られる。外部メモリI/F12は、メモリカード21が装填された状態で該メモリカード21内の記録領域にアクセス可能であり、該記録領域内のデータを読み出し、又はバックアップデータを書き込むことができる。
オーディオI/F13に接続されたスピーカ22は、上述したようにDSP6がARAM7から読み出したサウンドデータを外部へ出力する他、ディスクドライブ16が光ディスク23から読み出したサウンドデータを直接的に外部へ出力する。また、ディスクドライブ16は、上述したように、装填された光ディスク23に記録されたゲームプログラム24を読み出し、このゲームプログラム24をオーディオI/F13又はディスクI/F14へ出力する。
図2は、ゲーム装置1とは別体を成すコントローラ30の構成を機能的に示すブロック図である。コントローラ30は、例えばプラスチック成型により形成された略直方体形状を成すハウジングを有しており、片手で把持可能な寸法に設計されている。そして、図2に示すように、コントローラ30は、撮像情報演算部31、通信部32、操作部33、加速度センサ34、及びバイブレータ35を備えている。
撮像情報演算部31は、赤外線フィルタ31a、レンズ31b、撮像素子31c、及び画像処理回路31dを有しており、赤外線フィルタ31aは、外部からの入射光のうち赤外線のみをレンズ31bへ通過させる。レンズ31bは、赤外線フィルタ31aを通過した赤外線を集光して撮像素子31cへ出射する。撮像素子31cは、例えばCMOSセンサのような個体撮像素子であって、レンズ31bが集光した赤外線を撮像して画像データを生成する。ここで、ゲーム装置1に接続されるモニタ20(図1参照)には、高輝度の赤外線を発光する2つの発光部(図示せず)が設けられており、画像処理回路32dは、撮像素子32cで生成された画像データから高輝度部分を抽出することにより、前記発光部からの光を検出する。そして、画像処理回路32dは、検出した光に基づいてコントローラ30の向きを示すデータを算出し、該データを通信部32へ出力する。
通信部32は、マイクロコンピュータ(Micro Computer:マイコン)32a、メモリ32b、無線モジュール32c、及びアンテナ32dを有している。この通信部32は、マイコン32aが無線モジュール32cの動作を制御することによって、所定のデータをアンテナ32dから外部に対して無線送信するものであり、送信処理の際にメモリ32bはデータの記録領域として使用される。また、アンテナ32dから無線送信されたデータは、ゲーム装置1が備える受信ユニット15(図1参照)において受信可能になっている。
操作部33は、十字キー及び各種のボタンスイッチを有しており、これらは、コントローラ30を把持したプレイヤの手によって操作可能になっている。そして、プレイヤにより操作部33が操作されると、何れのキー又はスイッチが操作されたかを示す操作信号が、通信部32によってゲーム装置1へ送信されるようになっている。また、加速度センサ34は、コントローラ7に対して設定された直交3軸方向(上下方向、左右方向、及び前後方向)についての加速度を検出するものであり、検出された加速度を示す信号は、通信部32によってゲーム装置1へ送信される。
バイブレータ35は、例えば偏芯質量を有する振動モータ又はソレノイド等を備えており、その作動によってコントローラ30自身に振動を発生させることができる。該バイブレータ35を適宜作動させることにより、コントローラ30を把持するプレイヤの手に振動を体感させることができ、いわゆる振動対応ゲームが実現できる。
なお、上述したコントローラ30の向きを示すデータ、操作信号、及び加速度を示す信号等は、通信部32から無線送信されるに先だって一時的にメモリ32bに格納される。マイコン32aは、無線モジュール32cを制御して、このメモリ32bに格納されているデータを所定周波数の搬送波にのせ、所定の短い周期で、アンテナ32dから送信するようになっている。
[ゲームシステムの説明]
図3は、ゲーム装置1がゲームプログラム24を実行することによって、モニタ20に表示されるゲーム画面の一つのフレーム例を示す模式図であり、(a)は背景が地上のゲーム画面、(b)は背景が水中のゲーム画面を夫々示している。本ゲーム装置1により実現されるゲームでは、所定の広がりを有する仮想空間(エリア)が設定されており、図3(a),(b)に示すように、このエリアの一部分が、地上又は水中を表現する仮想の三次元ゲーム空間41a,41bとして構築され、ゲーム画面40に表示される。そして、これらのゲーム空間41a,41bには、プレイヤキャラクタC1、モンスター(ボスモンスター及び雑魚モンスター等)である敵キャラクタC2、及び味方キャラクタC3が登場する。
このうちプレイヤキャラクタC1は、プレイヤがコントローラ30の操作部33を操作することにより、その動作を直接的に制御することのできるキャラクタである。一方、敵キャラクタC2及び味方キャラクタC3は、いわゆるノンプレイヤキャラクタであり、プレイヤはその動作を直接的には制御することができず、ゲーム装置1のCPU3によって動作が制御されるキャラクタである。そして、本ゲームは、プレイヤの操作によってプレイヤキャラクタC1をゲーム空間41a,41b内で行動させ、味方キャラクタC3と協力して敵キャラクタC2と戦闘を行い、該敵キャラクタC2を討伐するアクションゲームになっている。
また、図3に示すように、ゲーム画面40には、仮想的なカメラで撮像された仮想のゲーム空間41a,41bが描画される。この仮想的なカメラは、基本的にはプレイヤキャラクタC1の背後(手前)に配置されており、このカメラで撮像された各キャラクタC1〜C3及びゲーム空間41a,41bの映像が描画される。但し、カメラの位置は、プレイヤによるコントローラ30の操作によって、プレイヤキャラクタC1を中心とする所定の円周上の任意の位置に変更することも可能であり、位置が変更された場合には、変更された位置でカメラによって撮像された映像が描画される。
また、図3(b)に示すように、水中に位置するカメラによって撮像された映像は全体的に青みがかっており、上方には水面がある。このような水中を表すゲーム空間41bは、水面を形成するオブジェクト(水面オブジェクト)と水底等のオブジェクトとで区切られたゲーム空間を意味し、現実の水中世界とは異なって水面及び水底間に水等を表すオブジェクトが存在するわけではない。そのため、リアリティのある水中のゲーム空間41bの映像を作成するために、ゲーム装置1はゲームプログラム24に従って以下のような処理を行う。即ち、キャラクタC1〜C3を含むゲーム画面40の全体に、水底等に近いほど濃くなる青色を帯びた透明のフィルタをかけ、水中の深さを表現する。また、ゲーム画面40の全体にフォグ(霧)もかけて表示を軽くぼかすことにより、地上よりも視界が制限されるリアルな水中の映像を形成している。更に、水面オブジェクトには波のテクスチャを貼り付け、太陽光が水面に差し込む様子を擬似的に表した水面効果の図形を、水面オブジェクトの一部の領域と重なる箇所に配置し、水面近傍の映像にリアリティをもたせている。
なお、図3(a)に示す地上のゲーム空間41aは、プレイヤキャラクタC1及び味方キャラクタC3が、地面に平行な二次元的な範囲内での動作(即ち、前後方向及び左右方向の動作)が許容される空間(二次元動作許容ゲーム空間)として設定されており、図3(b)に示す水中のゲーム空間41bは、三次元的な範囲内での動作(即ち、前後方向、左右方向、及び上下方向の動作)が許容される空間(三次元動作許容ゲーム空間)として設定されている。なお、三次元的な範囲内での動作が許容される空間としては、図3(b)に例示したような水中だけに限られず、空中や宇宙空間などであってもよい。従って、以下の説明ではゲーム空間41bとして水中の場合を例示しているが、これに代えてゲーム空間41bを空中や宇宙空間として設定してもよい。
ところで、図1に示すように、ゲーム装置1が備えるメモリコントローラ2、CPU3、GPU4、メインメモリ5、DSP6、及びARAM7により制御部8が構成されている。そして、この制御部8は、ゲーム装置1がゲームプログラム24を実行して上記のようなゲームを実現するにあたって、所定の機能を発揮する。この所定の機能について、ゲーム装置1が備える制御部8の機能的な構成を示すブロック図である図4を参照し、具体的に説明する。
図4に示すように、制御部8は、ゲーム空間生成手段8a、プレイヤキャラクタ制御手段8b、味方キャラクタ制御手段8c、敵キャラクタ制御手段8d、及び言語情報出力手段8eを備えている。このうちゲーム空間生成手段8aは、各キャラクタC1〜C3が行動するゲーム空間41a,41bを生成する。プレイヤキャラクタ制御手段8bは、プレイヤによるコントローラ30の操作に応じて、ゲーム空間41a,41b内で行動するプレイヤキャラクタC1の動作を制御する。
また、味方キャラクタ制御手段8cは、適宜プレイヤキャラクタC1及び/又は敵キャラクタC2の位置や動作等に関連させて、ゲーム空間41a,41b内で行動する味方キャラクタC3の動作を制御する。敵キャラクタ制御手段8cは、ゲームプログラム24から読み出したデータに基づき、且つ、適宜プレイヤキャラクタC1及び/又は味方キャラクタC3の位置や動作等に関連させて、ゲーム空間41a,41b内で行動する敵キャラクタC2の動作を制御する。
更に、言語情報出力手段8eは、少なくとも味方キャラクタC3の動作に応じて該動作に関連する味方キャラクタC3の発言内容を外部へ出力するものであり、より具体的には、モニタ20に前記発言内容を表す文字列を含む画面を表示させ、及び/又は、スピーカ22から前記発言内容を示す音声情報を出力させることができる。
ここで、味方キャラクタ制御手段8cにより制御される味方キャラクタC3の動作について更に詳述する。図5は、敵キャラクタC2に関連づけて設定された味方キャラクタC3の状態及びアクション(行動)を説明するための図面であり、(a)は、敵キャラクタC2からの距離により設定された味方キャラクタC3の状態を示し、(b)は、各状態において味方キャラクタC3が実行するアクションを例示している。
この図5(a)に示すように、味方キャラクタC3は、「通常状態」、「警戒状態」、及び「戦闘状態」の3つの状態のうち、常に何れか一つの状態となっており、何れの状態であるかは、敵キャラクタC2の種類(ボスモンスター又は雑魚モンスター)と、敵キャラクタC2との間の直線離隔距離とによって決定される。具体的には、エリア内には、味方キャラクタC3を中心とする3種類の認識範囲が同心円状に設定されている。第一認識範囲A1は、後述する第二認識範囲A2及び第三認識範囲A3を除くエリア全体に設定されており、この第一認識範囲A1内に敵キャラクタC2としてボスキャラクタが存在する場合には、味方キャラクタC3は「警戒状態」となり、敵キャラクタC2として雑魚キャラクタのみが存在する場合には「通常状態」となる。なお、敵キャラクタC2がボスモンスターであるか雑魚モンスターであるかの判定は、例えば敵キャラクタC3のそれぞれに設定されている識別情報に基づいて行うことが可能である。
第二認識範囲A2は、味方キャラクタC3を中心とする所定径(本実施の形態では、この径は20mに設定されている)の円内の領域のうち、後述する第三認識範囲A3を除く領域に設定されており、この第二認識範囲A2内にボスキャラクタが存在する場合には「戦闘状態」となり、雑魚キャラクタのみが存在する場合には「警戒状態」となる。また、第三認識範囲A3は、味方キャラクタC3を中心とする所定径(本実施の形態では、この径は10mに設定されている)の円内の領域に設定されており、この第三認識範囲A3内に敵キャラクタC2が存在する場合には、それがボスキャラクタであるか雑魚キャラクタであるかにかかわらず、味方キャラクタC3は「戦闘状態」となる。
図5(b)に示すように、味方キャラクタC3が実行するアクションは、敵キャラクタC2に対する直接的な行動(分類1)と間接的な行動(分類2)とに分類され、更に、間接的な行動(分類2)は、そのなかでも相対的に攻撃型の行動(分類2−1)と守備型の行動(分類2−2)とに細分類される。
直接的な行動である分類1としては、味方キャラクタC3が戦闘状態のときに実行する「攻撃」及び「威嚇」といったアクションが設定されている。間接的な行動である分類2のうち、相対的に攻撃型の行動である分類2−1としては、味方キャラクタC3が戦闘状態のときに実行する「踊り」や、警戒状態のときに実行する「攻撃型の踊り」といったアクションが設定されている。更に、相対的に守備型の行動である分類2−2としては、味方キャラクタC3が警戒状態のときに実行する「威嚇」及び「守備型の踊り」といったアクションが設定されている。
なお、分類1に属する戦闘状態での「攻撃」の例としては、刀などを使った近距離攻撃やブーメランなどを使った遠距離攻撃がある。分類2−1に属する戦闘状態での「踊り」の例としては、敵キャラクタへの挑発を目的とする踊りや閃光を発生させる技としての踊りなどがあり、同分類に属する警戒状態での「攻撃型の踊り」の例としては、プレイヤキャラクタC1及び味方キャラクタC3の攻撃力を上昇させる技としての踊りなどがある。更に、分類2−2に属する警戒状態での「守備型の踊り」の例としては、プレイヤキャラクタC1及び味方キャラクタC3の防御力を上昇させる技としての踊りや、体力を回復させる技としての踊りなどがある。
本実施の形態に係る分類1,2の各アクションは、複数の動作(モーション)から構成されており、これらの複数の動作の全てを行うことでアクションが1回実行されたことになる。また、1回のアクションは複数フレームで実現される。例えば、「攻撃」のアクションの1つである刀を使った近距離攻撃のアクションを実行する場合、はじめに、味方キャラクタC2は現在位置から移動目標位置に移動する動作を行う。次に、攻撃対象である敵キャラクタC2に向かって移動する(近づく)動作を行い、所定距離まで敵キャラクタC2に近づくと、敵キャラクタC2に対し、構えている刀を振り上げる動作及び振り下ろす動作を行う。最後に、振り下ろした刀を再び構えなおす動作を行い、1回の近距離攻撃のアクションが終了する。
また、「攻撃」のアクションの1つであるブーメランを使った遠距離攻撃のアクションを実行する場合、上記例と同様に、はじめに味方キャラクタC2は現在位置から移動目標位置に移動する動作を行う。次に、その場でジャンプしてブーメランを敵キャラクタC2に向けて投げつける攻撃の動作を行う。その後、着地して立ち上がってアクション開始前の基本姿勢に戻る動作を行い、遠距離攻撃のアクションが終了する。その他、「威嚇」や「踊り」のアクションについても、アクション開始の最初に現在位置から移動目標位置に移動する動作を行い、その後に威嚇を表す動作や踊る動作を行った後、アクション開始前の基本的な姿勢に戻るように動作する。
上記のように、分類1,2のアクションは、現在位置から移動目標位置へ移動する動作については少なくとも共通している。なお、移動目標位置の設定処理については後述する。
また、味方キャラクタC3は、通常状態においてはプレイヤキャラクタC1の近くに位置している。そして、上述した分類1、分類2−1、及び分類2−2に属する各アクションを実行する際には、アクションの種類に応じて設定される位置(移動目標位置)へ現在位置から移動し、移動が完了した後にアクションを実行するようになっている。なお、図5(a)に示した認識範囲の設定の仕方や、図5(b)に示した各アクションの内容及びその分類は、何れも一例であって、他の態様を採用してもよい。
図6は、上述した味方キャラクタC3の動作処理を説明するための図面であって、(a)は、ゲーム装置1(詳しくは制御部8の味方キャラクタ制御手段8c)が反復的に実行する味方キャラクタC3の動作処理の1ルーチンを示すフローチャートを示しており、(b)は、動作処理時に適宜取得される味方キャラクタC3のステータス情報を例示している。
図6(a)に示すように、はじめにゲーム装置1は、味方キャラクタC3のステータスをチェックする(ステップS1)。図6(b)に示すように、このステータスとしては、味方キャラクタC3が位置しているゲーム空間41a,41bの種類(地上又は水中)、その中での位置座標、敵キャラクタC2からの直線離隔距離、味方キャラクタC3の体力値、アクションステータス、アクションナンバー、及び障害アタリ情報などがある。
アクションステータスは、現在実行しているアクションの種類を特定する情報が設定される。具体的には、移動、停止、攻撃、威嚇、及び踊りなどの情報が設定される。アクションナンバーは、現在実行しているアクションの種類の詳細を特定する情報が設定される。例えば、攻撃中である場合は、刀を使った近距離攻撃を特定するための情報が設定される。障害アタリ情報は、方キャラクタC3が壁のオブジェクトなどの障害にあたっているか否かの情報が設定される。この障害アタリ情報は、例えば、周知のアタリ判定(衝突判定)を用いて情報が設定される。具体的には、味方キャラクタC3を囲む球状のオブジェクトと、壁や敵キャラクタC2などの障害となるオブジェクトとが衝突している場合は、障害にあたっているとする情報が設定される。一方、衝突してない場合は、障害にあたっていないとする情報が設定される。
この障害アタリ情報を用いて、例えば、移動動作中に、目標に向かって移動できているか否かを判断することができる。具体的に説明すると、障害オブジェクトは、味方オブジェクトC3の移動の障害となり、味方キャラクタC3は、障害オブジェクトをすり抜けて移動する(通過する)ことができない。そのため、味方キャラクタC3が目標に向かって移動動作中に、味方キャラクタC3が障害オブジェクトにあたっていれば、目標に向かって移動ができずに停止してしまっている状態を示すことになる。したがって、移動動作中に障害アタリ情報が障害にあたっているとする情報が設定されている場合は、味方キャラクタC3は停止していると判断することができる。一方、障害アタリ情報が障害にあたっていないとする情報が設定されている場合は、目標に向かって停止することなく移動できていると判断することができる。
次に、チェックしたステータスなどに基づいて、味方キャラクタC3が実行する能動的な行動の処理を行う(ステップS2)。具体的には、ステータスなどに基づいて、味方キャラクタC3に実行させる図5(b)に示すようなアクションの内容を選択し、またそのアクションを上述したように複数フレームかけて味方キャラクタに実行させる。そして、1つのアクションが終了した後、次の行動が選択される。
次に、味方キャラクタC3に関連するその他の行動処理を実行する(ステップS3)。このような処理としては、例えば、敵キャラクタC2からの攻撃が味方キャラクタC3に命中したか否かの判定(所謂、アタリ判定)などが含まれる。
その後、ステップS2,S3の処理の実行によって味方キャラクタC3の状態が変化するので、味方キャラクタC3のステータスの更新処理を行う(S4)。このステータスは、上述したように、味方キャラクタC3が位置しているゲーム空間41a,41bの種類(地上又は水中)、その中での位置座標、敵キャラクタC2からの直線離隔距離、味方キャラクタC3の体力値、アクションステータス、アクションナンバー及び障害アタリ情報などがある。このようなステータスは、周知の内容であるので詳細な説明は省略する。
そして最後に、ステップS1〜S3で取得した情報に基づき、味方キャラクタC3に関して次のフレームにおいてモニタ20に表示すべきゲーム画面40の描画処理を実行する(ステップS5)。ゲーム装置1は、このようなステップS1〜S5で構成されるルーチンを所定の周期毎に繰り返し実行し、且つ、プレイヤキャラクタC1及び敵キャラクタC2についても同様の処理を実行することにより、各キャラクタC1〜C3をゲーム空間41a,41b内で活動させ、ゲームを進行させる。なお、上述した描画処理(ステップS5)に至るまでの各ステップS1〜S3の処理の実行は、図6に示した順序に限定されるものではなく、これとは異なる順序で実行するようにしてもよい。
[地上での移動目標位置の設定(実施例1)]
次に、実施例1として、地上であるゲーム空間41aにいる味方キャラクタC3について、アクションの種類に応じてその移動目標位置を設定し、該移動目標位置へ味方キャラクタC3を移動させる処理について説明する。図7は、ゲーム装置1(味方キャラクタ制御手段8c)が実行する味方キャラクタC3の移動目標位置の設定処理を示すフローチャートである。この図7の処理は、図6(a)のステップS2の処理の一部であり、味方キャラクタC3が実行するアクションとして図5(b)に示す分類1のアクション(「戦闘状態」での「攻撃」又は「威嚇」)が選択された時に実行される。つまり、味方キャラクタは、選択された分類1のアクションを実行する際、最初に行われる移動の動作において、現在位置から図7の処理によって設定された移動目標位置に向かって移動する行動を行う。
図8は、味方キャラクタC3が分類1のアクションを実行する場合の移動目標位置の設定処理を説明すべく、各キャラクタC1〜C3の配置等を例示した模式的平面図であって、各キャラクタC1〜C3が、二次元的に行動することが許容されるゲーム空間41a(地上)に存在する場合について示している。
なお、図8は、地上を表すゲーム空間41aを平面視したときの状態を示しており、プレイヤキャラクタC1から敵キャラクタC2側を水平方向の正面に見たときの右方向を正のX軸方向、プレイヤキャラクタC1から見て上方をY軸方向、プレイヤキャラクタC1から敵キャラクタC2側へ水平に向かう方向をZ軸方向として定めている(後に参照する図9,図10,図12〜図15において同じ)。
また、図8では、プレイヤキャラクタC1及び味方キャラクタC3を円50と三角形51とを組み合わせた図形で表現しており、このうち三角形51は各キャラクタC1,C3それぞれの正面方向(正面位置とキャラクタの向き)を示している。また、円50内に設けた点52は、プレイヤキャラクタC1及び味方キャラクタC3の基準点を示しており、この基準点52は、各キャラクタC1,C3のゲーム空間41a,41b内での現在位置を特定する座標(X,Y,Z座標)が設定されて、敵キャラクタC2についても同様の基準点52が設定されている(後に参照する図9,図10,図12〜図15において同じ)。また、本ゲームでは、プレイヤキャラクタC1は人型であり、味方キャラクタC3は犬や猫などの動物の形体をしており、敵キャラクタC2には様々の形体が用意されている。そして、各キャラクタC1〜C3に設けられる基準点52は、各キャラクタC1〜C3を表すオブジェクト内又はその近傍に設定され、例えば、人型のプレイヤキャラクタC1においては直立状態での両足間の足元の一点に設定されている。
次に、味方キャラクタC3の移動目標位置の設定手順について説明する。図7に示すように、味方キャラクタ制御手段8cは、プレイヤキャラクタC1、敵キャラクタC2、及び味方キャラクタC3の現在の位置座標(基準点52のX,Y,Z座標)を取得する(ステップS10)。この位置座標に基づき、味方キャラクタC3がどの領域に存在しているかを特定する(ステップS11)。より詳しく説明すると、ステップS10で取得したプレイヤキャラクタC1及び敵キャラクタC2の位置座標(X,Z座標)に基づき、図8に示すように平面視して(XZ平面において)両キャラクタC1,C2を通ってZ軸方向へ延びる仮想の第一基準線R1を設定する。ゲーム空間41aでの味方キャラクタC3の行動許容範囲は、この第一基準線R1によって、X軸方向の正側に位置する領域F1とX軸方向の負側に位置する領域F2とに二分される。そして、味方キャラクタC3の位置座標に基づき、該味方キャラクタC3が領域F1及び領域F2のうち、何れに存在しているかを特定する(図8の例では、領域F1と特定)。
その後、味方キャラクタ制御手段8cは、敵キャラクタC2を中心とする径r1を決定し(ステップS12)、これにより、味方キャラクタC3の移動目標位置が設定される水平基本円55が決定される。なお、この径r1は、所定の固定値と調整用の補正値とを有しており、補正値は敵キャラクタC2の種類及び外形寸法に応じて変更される。例えば、敵キャラクタC2がボスモンスターの場合は雑魚モンスターの場合よりも大きい補正値とされ、敵キャラクタC2の外形寸法が大きいほど大きい補正値とされる。更に、本実施の形態に係る味方キャラクタC3は、特殊能力を発揮するためのアイテムとして面を装備可能になっており、装備している面の種類によっても異なる補正値とされる。
なお、図8では、平面視して敵キャラクタC2を通って第一基準線R1に垂直にX方向へ延びる仮想線として第二基準線R2を示し、第二基準線R2に対してプレイヤキャラクタC1が存在する側の領域とは反対側(Z軸方向の正側)の領域を領域F3、プレイヤキャラクタC1が存在する側(Z軸方向の負側)の領域を領域F4としている。また、第二基準線R2と水平基本円55との交点のうち、領域F1に位置する方を点A、領域F2に位置する方を点Cとし、第一基準線R1と水平基本円55との交点のうち、領域F3に位置する方を点B、領域F4に位置する方を点Dとして示している。
次に、径r1により決定された水平基本円55において、プレイヤキャラクタC1及び敵キャラクタC2を結ぶ線分56を基準とし、該線分56から敵キャラクタC2を中心とする反時計回り方向の角度α1を決定する(ステップS13)。これにより、味方キャラクタC3の移動目標位置Tに関するXZ平面内の位置(X,Z座標)tが決定される(ステップS14)。
ここで、味方キャラクタC3が分類1のアクションを実行する場合、角度α1は、味方キャラクタC3の現在位置に応じて取り得る範囲に異なる境界条件が設定されている。即ち、本実施例に係る味方キャラクタC3の移動目標位置Tは、ステップS11にて特定した味方キャラクタC3の存在領域(図8の領域F1)と、敵キャラクタC2を基準にしてプレイヤキャラクタC1とは反対側の領域F3とが重複する領域に設定される。従って、味方キャラクタC3が領域F1に存在する場合の角度α1は、
90°≦α1≦180°
の範囲で任意に設定される。その結果、移動目標位置TのX,Z座標で表される位置tは、図8の点Aと点Bとの間の四半円弧AB上に設定される。一方、味方キャラクタC3が領域F2に存在する場合の角度α1は、
180°≦α1≦270°
の範囲で任意に設定されるようになっている。その結果、位置tは、図8の点Bと点Cとの間の四半円弧BC上に設定される。
そして、味方キャラクタC3のステータス(図6(a)のステップ1で取得)を参照し、味方キャラクタC3が地上にいると判断すると(ステップS15:二次元)、上述した径r1及び角度α1によって特定される水平基本円55上の位置tが、移動目標位置Tに設定され(ステップS16)、処理が終了する。このステップS16の処理で、移動目標位置TのY座標は、本実施例では移動前(現在)の味方キャラクタC3のY座標が設定されるが、特にこれに限定されるものではない。
その後、味方キャラクタC3はこの移動目標位置Tへ向かって直線的に最短距離を移動する動作を開始し、移動目標位置Tに到達すると、選択されたアクションを構成する次の動作を順次実行していく。
以上の説明から分かるように、本実施例に係るゲーム装置1の処理によると、味方キャラクタC3の移動目標位置Tは、プレイヤキャラクタC1から見て敵キャラクタC2の背後側であって、且つ移動前(現在位置)の味方キャラクタC3から近い側の領域に設定されるようになっている。従って、例えば戦闘状態で攻撃のアクションをする場合に、最初にプレイヤキャラクタC1との間で敵キャラクタC2を挟むような位置へ、味方キャラクタC3を速やかに移動させることができる。つまり、敵キャラクタC2を挟むような位置を基点として攻撃したり、威嚇したりすることができる。そして、このような位置取りをすることにより、敵キャラクタC2に対して多方面から攻撃を加えることができると共に、味方キャラクタC3が囮になっている間にプレイヤキャラクタC1が効果的な攻撃を敵キャラクタC2に加えることができる。
ここで、本ゲームの敵キャラクタ制御手段8dは、敵キャラクタC2から見て攻撃対象となるプレイヤキャラクタC1及び味方キャラクタC3の夫々に対し設定された「ヘイト値」と称する所定の値を保持している。このヘイト値は、敵キャラクタC2が、プレイヤキャラクタC1及び味方キャラクタC3のうち何れを攻撃するかを決定するのに用いられ、ヘイト値が大きいキャラクタを攻撃の対象とするようになっている。また、ヘイト値は、各キャラクタの行動及び位置等によって変動し、例えば、敵キャラクタC2に対して攻撃したキャラクタのヘイト値は増加する。従って、上述したように位置取りした味方キャラクタC3が囮になって敵キャラクタC2を攻撃すると、敵キャラクタC2は、ヘイト値が増加した味方キャラクタC3を攻撃しようとしてプレイヤキャラクタC1に背を向けた状態となる。そのため、プレイヤキャラクタC1は、敵キャラクタC2に対して大技を繰り出すなどして、有効な攻撃を加えることができる。また、プレイヤキャラクタC1は、一定時間だけ敵キャラクタC2の動作を抑制する罠を仕掛けるアクションや、アイテムを使用して体力を回復させるアクションなどを行うこともできる。
このように、複数のプレイヤにより操作される複数のプレイヤキャラクタC1が共同して敵キャラクタC2と戦闘を行うような感覚で、一人のプレイヤが操作するプレイヤキャラクタC1と味方キャラクタC3とが共同して敵キャラクタC2と戦闘を行うことができる。そして、本実施例1に係る味方キャラクタC3の位置取りは、ごく自然な行動としてプレイヤに感じさせることができるため、味方キャラクタC3の行動に起因してプレイヤに生じる違和感を低減させることができる。
本実施例では、味方キャラクタC3の現在位置が第1基準線R1上であった場合に領域F1に存在していると判断しているが、領域F2に存在していると判断してもよい。また、領域F1,F2の何れにも存在していないと特定し、例えば半円弧ABC上のいずれかの地点に移動目標位置TのX,Z座標を設定してもよい。後述する水中に味方キャラクタC3がいる場合も同様である。
なお、ゲームの内容によっては、ゲーム画面40内に複数の敵キャラクタC2が存在する場合もある。この場合には、何れか一つの敵キャラクタC2を味方キャラクタC3の攻撃対象として選択し、該敵キャラクタC2の位置とプレイヤキャラクタC1の位置とから、上述したようにして味方キャラクタC3の移動目標位置Tを設定すればよい。攻撃対象とする一つの敵キャラクタC2を選択する際には、例えば、最も戦闘力の高い敵キャラクタC2を選択することとし、更にこのような敵キャラクタC2が複数存在する場合は、そのうち最も味方キャラクタC3に近い敵キャラクタC2を選択すればよい。但し、味方キャラクタC3ではなくプレイヤキャラクタC1に最も近い敵キャラクタC2を選択するようにしてもよい。
ここで、上述した味方キャラクタC3の攻撃対象としての敵キャラクタC2とは、味方キャラクタC3が図5(b)の「攻撃」を実行する場合にあっては、その攻撃によりダメージを与えようとする相手方の敵キャラクタC2を意味するのはもちろんのこと、その他の戦闘状態や警戒状態での「威嚇」及び「踊り」を実行する場合においては、これらアクションによって発揮(発動)される効果を作用させる相手方の敵キャラクタC2を意味する。なお、敵キャラクタC2の選択基準は、味方キャラクタC3の攻撃対象でなくてもよく、他の基準に従って選択されるようにしてもよい。
また、上述した例では、味方キャラクタC3が領域F1(又は領域F2)に存在する場合は、四半円弧AB上(又は四半円弧BC上)に移動目標位置Tを設定することとしているが、異なる円弧部分に設定するようにしてもよい。例えば、味方キャラクタC3の移動前の位置(現在位置)が領域F1である場合、点Aと、点Bから水平基本円55に沿って時計回り側の近傍に位置する点B’との間の、円弧AB’上に設定するようにしてもよい。この場合の点B’としては、プレイヤキャラクタC1から見て、敵キャラクタC2の背後に味方キャラクタC3が隠れてしまわない座標とすればよい。味方キャラクタC3の移動前の位置が領域F2である場合も同様に、四半円弧BCにおいて、プレイヤキャラクタC1から見て敵キャラクタC2の背後に味方キャラクタC3が隠れてしまわない範囲(図8の円弧B”C参照)に設定するようにしてもよい。換言すれば、敵キャラクタC2の背後であってプレイヤキャラクタC1(プレイヤ)から隠れて視認できない範囲(円弧B’B”)を、移動目標位置Tの設定領域から除外してもよい。図9を参照して次に説明する実施例2において位置tを設定する場合も同様である。
更に、上述した例ではXZ平面内の位置tを決定した後(ステップS14)、味方キャラクタC3が地上又は水中の何れのゲーム空間に存在するかを判断し(ステップS15)、それからこの位置tを移動目標位置Tとして決定(ステップS16)することにしているが、これとは異なる手順を採用してもよい。例えば、ステップS10にて味方キャラクタC3の現在の位置座標をステータスから取得する際に、味方キャラクタC3が存在するゲーム空間の情報を取得することにより、図7のステップS15の処理を除外し、ステップS14で決定した位置tを自動的に移動目標位置Tに設定してもよい。
なお、図8では、プレイヤキャラクタC1および味方キャラクタC3が敵キャラクタC2のいる方向に向いている状態が例示されているが、図7に示す処理では、プレイヤキャラクタC1、敵キャラクタC2、及び味方キャラクタC3の向きは考慮されない(後に参照する図9,図10,図12〜図15において同じ)。
[水中での移動目標位置の設定(実施例2)]
本実施例2では、水中であるゲーム空間41bにいる味方キャラクタC3が、分類1のアクションを実行する場合の移動目標位置の設定処理について説明する。味方キャラクタC3が水中にいる場合にも、上述した図7の処理を実行することで移動目標位置が設定される。図9は、この場合の移動目標位置の設定処理を説明すべく、水中のゲーム空間41bでの各キャラクタC1〜C3の配置等を例示した模式的平面図である。また、図10は、図9に例示したゲーム空間41bをX矢視方向から見た模式的側面図である。
図9に示すように、味方キャラクタC3が三次元的に移動可能な水中に存在している場合であって分類1のアクションが選択された時、味方キャラクタ制御手段8cは、上述したようにステップS10〜S14の処理を実行し、位置t(X,Z座標)を決定する。
なお、位置tが設定されるXZ平面(図9)は、上下方向(Y方向)の何れの高さに設定されていてもよいが、本実施例では、移動前の味方キャラクタC3が位置している点を通る基準水平面Ra(図10参照)をこの平面としている。
次に、ステップS14にて位置tを決定した後、ステータスを参照して味方キャラクタC3が水中にいると判断すると(ステップS15:三次元)、続いてプレイヤキャラクタC1の高さ方向の存在領域を特定する(ステップS17)。より詳しく説明すると、ステップS10で取得した敵キャラクタC2のY軸方向の位置座標に基づき、図10に示すように敵キャラクタC2を通るXZ平面である基準水平面Rbを設定する。
これによりゲーム空間41bは、この基準水平面Rbによって、Y軸方向の正側に位置する領域F5とY軸方向の負側に位置する領域F6とに二分される。そして、プレイヤキャラクタC1のY方向の位置座標に基づき、該プレイヤキャラクタC1が領域F5及び領域F6のうち、何れに存在しているかを特定する(図10の例では、領域F6と特定)。本実施例では、基準水平面Rbは敵キャラクタC2と同じ高さ位置(同一のY座標)であるので、プレイヤキャラクタC1のY座標と敵キャラクタC2のY座標とを比較し、敵キャラクタC2より水面側(領域F5)にいるか、水底側(領域F6)にいるかを特定すればよい。
そして、プレイヤキャラクタC1の現在の存在領域に基づき、移動目標位置Tの高さ位置を、基準水平面Rbからの距離Hとして決定する(ステップS18)。この処理では、基準水平面Rbに対してプレイヤキャラクタC1が現存する側の領域とは反対側の領域に移動目標位置Tが設定されるように距離Hが決定される。即ち、プレイヤキャラクタC1が領域F6に位置している場合には、移動目標位置Tが領域F5に設定されるように、距離Hは正の所定値に決定され、プレイヤキャラクタC1が領域F5に位置している場合には、移動目標位置Tが領域F6に設定されるように、距離Hは負の所定値に決定される。
なお、距離Hの値は、前述した径r1の場合と同様に、所定の固定値と調整用の補正値とを有しており、補正値は敵キャラクタC2の種類及び外形寸法に応じて、あるいは、味方キャラクタC3が装備している面の種類に応じて、異なる補正値とされる。また、距離Hの値を決定するに先がけて、水面及び水底の位置を取得しておき、これら水面及び水底の間(即ち、水中)から外れない範囲で距離Hは決定される。
なお、距離Hは、所定の固定値および補正値で決定されているが、例えば任意の値としてもいいし、(所定の固定値+任意の値)としてもよい。
最後に、このようにして決定された基準水平面Ra内での位置tを移動目標位置TのX,Z座標に設定し、基準水平面Rbからの距離Hに基づいて特定されるゲーム空間41b内の位置座標(基準水平面RbのY座標に距離Hの値を加えた座標)を移動目標位置TのY座標に設定し(ステップS19)、処理を終了する。その後、味方キャラクタC3はこの移動目標位置Tへ向かって直線的に最短距離を移動する動作を開始し、移動目標位置Tに到達すると、選択されたアクションを構成する次の動作を順次行っていく。
以上の説明から分かるように、本実施例2の場合においても、プレイヤキャラクタC1との間で敵キャラクタC2を挟むような位置へ、味方キャラクタC3を速やかに移動させることができ、且つ、味方キャラクタC3の行動に起因してプレイヤに生じる違和感を低減させることができる。
特に、距離Hを用いることで、高さ方向を考慮して味方キャラクタC3の移動目標位置が設定されるので、プレイヤキャラクタC1から見ても、味方キャラクタC3とで敵キャラクタC2を挟んでいるような位置取りを実現できる。
ところで、本実施例では、味方キャラクタC3の現在位置が基準水平面Rb上であった場合に領域F6に存在していると判断しているが、領域F5に存在していると判断してもよい。また、領域F5,F6の何れにも存在していないと判断し、例えば基準水平面Rbの高さ位置(Y座標)を移動目標位置TのY座標として決定するようにしてもよい。
なお、本実施例においても、ステップS10にて味方キャラクタC3が存在するゲーム空間についての情報(地上又は水中)を取得することにより、ステップS15の処理を除外し、ステップS14にてXZ平面内の位置tを決定した直後にステップS17の処理を行うようにしてもよい。
また、本実施例では、ステップS18にて距離Hを決定することによって移動目標位置Tを設定するようにしているが、これに限定されない。例えば、位置t及び敵キャラクタC2を含んでY軸方向に平行な平面を設定し、この平面内において、敵キャラクタC2を中心とする円周方向へ位置tから所定の角度だけ移動した点を、移動目標位置Tとして設定してもよい。また、位置t及びプレイヤキャラクタC1を含んでY軸方向に平行な平面を設定し、この平面内において、プレイヤキャラクタC1を中心とする円周方向へ位置tから所定角度だけ移動した点を、移動目標位置Tとして設定してもよい。これらの何れの場合であっても、円周方向への角度を決定する際には、上述した距離Hを決定する場合と同様に、基準水平面Rbに対してプレイヤキャラクタC1が現存する側の領域とは反対側の領域に移動目標位置Tが設定されるように角度を決定すればよい。要するに、平面視したときに第二基準線R2に対してプレイヤキャラクタC1が存在する領域とは反対側の領域であって、且つ、側面視したときに基準水平面Rbに対してプレイヤキャラクタC1が存在する領域とは反対側の領域に、移動目標位置Tを設定すればよい。
また、距離Hを用いずに移動目標位置Tを決定するようにしてもよい。例えば、プレイヤキャラクタC1のY座標を移動目標位置TのY座標として設定してもよいし、敵キャラクタC2のY座標を移動目標位置TのY座標として設定してもよい。このように設定する場合であっても、少なくとも平面視において、プレイヤキャラクタC1との間で敵キャラクタC2を挟むような位置へ味方キャラクタC3を移動させることができる。
[地上での移動目標位置の設定(実施例3)]
本実施例3では、地上であるゲーム空間41aにいる味方キャラクタC3が、図5(b)に示す分類2のアクションを実行する場合の移動目標位置Tの設定処理について説明する。図11は、この場合にゲーム装置1(味方キャラクタ制御手段8c)が実行する味方キャラクタC3の移動目標位置の設定処理を示すフローチャートである。図11の処理は、図6(a)のステップS2の処理の一部であり、味方キャラクタC3が実行するアクションとして図5(b)に示す分類2のアクション(「戦闘状態」での「踊り」など)が選択された時に実行される。
また、図12は、分類2−1のアクション(「戦闘状態」での「踊り」または「警戒状態」での「踊り(攻撃型)」)を実行する場合の移動目標位置の設定処理を説明すべく、地上のゲーム空間41aでの各キャラクタC1〜C3の配置等を例示した模式的平面図であり、図13は、分類2−2のアクション(「警戒状態」での「威嚇」又は「踊り(守備型)」)を実行する場合の移動目標位置の設定処理を説明すべく、地上のゲーム空間41aでの各キャラクタC1〜C3の配置等を例示した模式的平面図である。
図11に示すように、味方キャラクタ制御手段8cはプレイヤキャラクタC1及び敵キャラクタC2の現在の位置座標(X,Y,Z座標)を取得する(ステップS20)。これに基づき、平面視してプレイヤキャラクタC1及び敵キャラクタC2を通ってZ軸方向に平行な仮想の第一基準線R1と、プレイヤキャラクタC1を通って第一基準線R1に直交する仮想の第三基準線R3とを設定する。このうち第三基準線R3により、味方キャラクタC3の行動許容範囲は、Z軸方向の正側に位置する領域F7とZ軸方向の負側に位置する領域F8とに二分される(図12及び図13を参照)。
次に、本実施例では、プレイヤキャラクタC1を中心とする径r2を決定し(ステップS21)、これにより、味方キャラクタC3の移動目標位置が設定される水平基本円57が決定される。ここで、この径r2は、前述の径r1の場合と同様に、所定の固定値と調整用の補正値とを有しており、補正値は敵キャラクタC2の種類及び外形寸法に応じて、あるいは、味方キャラクタC3が装備している面の種類に応じて、異なる補正値とされる。なお、径r2は、アクションの種類に関連づけられた固定値であってもよく、また何にも関連付けられていない唯一の固定値であってもよい。
図12及び図13では、水平基本円57上に点A〜点Dを示しているが、これらは、図8に示した点A〜点Dが水平基準円55と第一基準線R1及び第二基準線R2との各交点として設定したのと同様に、水平基準鉛57と第一基準線R1及び第三基準線R3との各交点として設定している(後に参照する図14でも同様)。
次に、径r2により決定された水平基本円57において、プレイヤキャラクタC1及び敵キャラクタC2を結ぶ線分56を基準とし、該線分56からプレイヤキャラクタC1を中心とする反時計回り方向の角度α2を決定する(ステップS22)。これにより、味方キャラクタC3の移動目標位置に関するXZ平面内の位置(X,Z座標)tが決定される(ステップS23)。
この角度α2は、味方キャラクタC3が分類2−1及び分類2−2の何れのアクションを実行するかに応じて、その取り得る範囲に異なる境界条件が設定されている。即ち、図12に示すように、分類2−1の攻撃型のアクションを実行する場合、味方キャラクタC3の移動目標位置Tは、プレイヤキャラクタC1の前方の領域F7に設定されるようになっている。従って、このときの角度α2は、
−90°≦α2≦90°
の範囲で任意に設定される。その結果、移動目標位置TのX,Z座標で表される位置tは、図12の点Aから点Bを経由して点Cに至る半円弧ABC上に設定される。一方、図13に示すように、分類2−2の守備型のアクションを実行する場合、味方キャラクタC3の移動目標位置Tは、プレイヤキャラクタC1の後方の領域F8に設定されるようになっている。従って、このときの角度α2は、
90°≦α2≦270°
の範囲で任意に設定される。その結果、移動目標位置TのX,Z座標で表される位置tは、図13の点Cから点Dを経由して点Aに至る半円弧CDA上に設定される。
次に、ステータスを参照して味方キャラクタC3が地上にいると判断すると(ステップS24:二次元)、図7のステップS16と同様に移動目標位置Tを設定し(ステップS25)、処理を終了する。その後、味方キャラクタC3はこの移動目標位置Tへ向かって直線的に最短距離を移動する動作を開始し、移動目標位置Tに到達すると、選択されたアクションを構成する次の動作を順次行っていく。
以上の説明から分かるように、本実施例3に係るゲーム装置1の処理によると、味方キャラクタC3の移動目標位置Tは、分類2−1に属する攻撃型のアクション(例えば「戦闘状態」での「踊り」)を実行する場合にはプレイヤキャラクタC1の前方に設定される。そのため、味方キャラクタC3は、プレイヤキャラクタC1の前方の移動目標位置Tに移動(到達)した後、踊る動作などを順次行って「踊り」のアクションの実行を終了する。また、分類2−2に属する守備型のアクション(「警戒状態」での「踊り(守備型)」など)を実行する場合にはプレイヤキャラクタC1の後方に設定される。そのため、味方キャラクタC3は、プレイヤキャラクタC1の後方の移動目標位置Tへ移動した後、踊る動作などを順次行って「踊り(守備型)」のアクションの実行を終了する。
そして、このように味方キャラクタC3を位置取りさせることによって、プレイヤキャラクタC1近傍の所定範囲内で味方キャラクタC3を行動させることができる。従って、警戒状態の場合には、味方キャラクタC3が不用意に敵キャラクタC2に近付きすぎて見つかってしまい、戦闘状態とならないように、味方キャラクタC3を行動させることができる。分類2−1のアクションを実行する場合には、プレイヤキャラクタC1の近傍の敵キャラクタC2側に味方キャラクタC3を位置取りさせるので、例えば閃光を発生させるような「戦闘状態」の「踊り」では、閃光を浴びせなければ敵キャラクタC2の目をくらませられないので、敵キャラクタ側に位置取りすることで、より自然で且つ効果的な位置取りを実現できる。
分類2−2のアクションを実行する場合には、守備型であることから、プレイヤキャラクタC1の敵キャラクタC2側を表側とすると、裏側(敵キャラクタC2から遠ざかる位置)に位置取りすることとなるため、より戦闘状態になるのを避けた状態とすることができる。また、分類2−2のアクションである「踊り」については、味方キャラクタC3がプレイヤキャラクタC1の近傍に位置するため、味方キャラクタC3がゲーム画面40の外に移動してしまうことがなく、プレイヤは味方キャラクタC3の「踊り」のアクションを見ることができる。
なお、本実施例においても、ステップS20にて味方キャラクタC3が存在するゲーム空間に関する情報(地上又は水中)を取得することにより、ステップS24の処理を除外し、ステップS23にてXZ平面内の位置tを決定した直後にステップS25の処理を実行するようにしてもよい。
[水中での移動目標位置の設定(実施例4)]
本実施例4では、水中であるゲーム空間41bにいる味方キャラクタC3が、分類2のアクションを実行する場合の移動目標位置の設定処理について説明する。味方キャラクタC3が水中にいる場合にも、上述した図11の処理を実行することで移動目標位置が設定される。図14は、この場合の移動目標位置の設定処理を説明すべく、水中であるゲーム空間41bでの各キャラクタC1〜C3の配置等を例示する模式的平面図である。また、図15は、図14に例示したゲーム空間41bをXV矢視方向から見た模式的側面図である。
図14に示すように、味方キャラクタC3が水中に存在している場合にも、味方キャラクタ制御手段8cは、上述したようにステップS20〜S23の処理を実行し、位置t(X,Z座標)を決定する。なお、位置tが設定されるXZ平面(図14)は、上下方向(Y軸方向)の何れの高さに設定されていてもよいが、本実施例では実施例3と同様に、移動前の味方キャラクタC3が位置している点を通る基準水平面Ra(図15参照)をこの平面としている。
次に、ステップS23にて位置tを決定した後、ステータスから味方キャラクタC3が水中にいると判断すると(ステップS24:三次元)、図15に示すように、プレイヤキャラクタC1を含む基準水平面Rc内であって位置tと同じX,Z座標を有する点を移動目標位置Tに設定し(ステップS26)、処理を終了する。つまり、本実施例では、位置tのX,Z座標が移動目標位置TのX,Z座標として設定され、プレイヤキャラクタC1のY座標が移動目標位置TのY座標として設定される。そして、味方キャラクタC3は、この移動目標位置Tへ向かって直線的に最短距離を移動する動作を開始し、移動目標位置Tに到達すると、選択されたアクションを構成する次の動作を順次行っていく。
以上の説明から分かるように、本実施例4に係るゲーム装置1の処理によると、水中において味方キャラクタC3が分類2−1の攻撃型のアクション(例えば、「戦闘状態」での「踊り」)を実行する場合、味方キャラクタC3の移動目標位置Tは、プレイヤキャラクタC1と同一水平面内であってプレイヤキャラクタC1の前方に設定される。そのため、味方キャラクタC3は、この移動目標位置Tへ移動(到達)した後、踊る動作などを順次行って「踊り」のアクションの実行を終了する。
一方、水中において味方キャラクタC3が分類2−2の守備型のアクション(「警戒状態」での「踊り(守備型)」など)を実行する場合は、味方キャラクタC3の移動目標位置Tは、プレイヤキャラクタC1と同一水平面内であってプレイヤキャラクタC1の後方に設定される。そのため、味方キャラクタC3は、この移動目標位置Tへ移動(到達)した後、踊る動作などを順次行って「踊り(守備型)」のアクションの実行を終了する。
そのため、水中にて分類2−1,2−2の何れのアクションを実行する場合においても、実施例3において説明したのと同様に、警戒状態のときに味方キャラクタC3が敵キャラクタC2に不用意に近付きすぎて見つかってしまい、戦闘状態にならないように、味方キャラクタC3を行動させることができる。
また、分類2−1のアクションを実行する場合には、プレイヤキャラクタC1の近傍の敵キャラクタC2側に味方キャラクタC3を位置取りさせるので、例えば閃光を発生させるような「戦闘状態」の「踊り」では、敵キャラクタ側に位置取りすることで敵キャラクタC2に閃光を浴びせて目をくらませることができ、より自然で且つ効果的な位置取りを実現できる。
また、分類2−2のアクションを実行する場合には、守備型であることから、プレイヤキャラクタC1の裏側(敵キャラクタC2から遠ざかる位置)に位置取りすることとなるため、より戦闘状態になるのを避けた状態とすることができる。また、分類2−2のアクションである「踊り」については、味方キャラクタC3がプレイヤキャラクタC1の近傍に位置するため、味方キャラクタC3がゲーム画面40の外に移動してしまうことがなく、プレイヤは味方キャラクタC3の「踊り」のアクションを見ることができる。
なお、本実施例においても、ステップS20にて味方キャラクタC3が存在するゲーム空間に関する情報(地上又は水中)を取得することにより、ステップS24の処理を除外し、ステップS23にてXZ平面内の位置tを決定した直後にステップS26の処理を実行するようにしてもよい。
[味方キャラクタの発言処理(実施例5)]
図16は、ゲーム進行中の味方キャラクタC3による発言内容を、プレイヤに対して認識可能に出力する処理を説明するための模式図であって、(a)は発言内容を文字列で表したゲーム画面40を例示し、(b)は発言のバリエーションの一部を示している。図16(a)に示すように、各キャラクタC1〜C3を含むゲーム空間41a(又はゲーム空間41b)を表示するゲーム画面40には、その左下の領域など、各キャラクタC1〜C3の動作をプレイヤが視認するのに邪魔にならない位置に、所定寸法のウィンドウ60が表示される。このウィンドウ60はゲーム装置1の制御部8が備える言語情報出力手段8e(図4参照)によって生成・表示され、そこには、味方キャラクタC3による発言内容が、プレイヤに判読可能な文字列として表示(テキスト表示等)される。
図16(b)に示すように、ウィンドウ60に表示される味方キャラクタC3の発言内容は、味方キャラクタC3の動作に関連したものになっており、図5(b)に示した各アクションに対応して個別の発言内容が用意されている。そして、ゲーム装置1(言語情報出力手段8e)は、味方キャラクタC3が何らかの動作を実行する際(実行前、実行後、又は実行中)に、その動作に関連して用意された味方キャラクタC3の発言内容をウィンドウ60に含めた画像を、ゲーム空間41aまたは41bの画像に合成することで、最終的にゲーム画面40に味方キャラクタC3の発言内容が表示される。
図16(b)に示すようなアクションと発言内容(例えば、テキストデータ)とが関連づけられたデータは予め光ディスク23に記憶されている。言語情報出力手段8eは、例えば上記データを予めメインメモリ5に読み出しておき、味方キャラクタC3が現在実行している(分類1,2などの)アクションの情報に基づいて、該当する発言内容のデータを選択する。味方キャラクタC3が現在実行しているアクションの情報は、味方キャラクタ制御手段8cによって設定更新されるアクションステータス及びアクションナンバーを用いて特定する。なお、本実施例では、アクションの実行中に表示されるが、例えば、分類1,2のアクションについては、最初に行われる移動目標位置への移動の動作中に表示してもよい。具体的には、「戦闘状態」の「踊り」における閃光を発生させる踊りが選択された場合、移動動作中に図16(a)のようなテキストがウィンドウ60に表示される。この例では、実行しているアクションについて、どの動作を現在行っているかを特定する情報を取得するようにすればよい。
このようにすることにより、プレイヤは、味方キャラクタC3の動作について把握することができるため、味方キャラクタC3と攻撃などの連携をとりやすくなり、プレイヤと味方キャラクタC3との間の連帯感を高めることができる。また、味方キャラクタC3に対して親しみを感じることもできる。分類1のアクションを実行する場合では、プレイヤキャラクタC1との間で敵キャラクタC2を挟むような位置取りをすると、プレイヤキャラクタC1(プレイヤ)側から味方キャラクタC2を視認できない場合もあるので特に有効である。
なお、ウィンドウ60に味方キャラクタC3の発言内容を示す文字列を表示するのに代えて、又はこれに加えて、ゲーム装置1に接続したスピーカ22から音声情報を出力するようにしてもよい。
[障害がある場合の処理(変形例)]
ところで、ゲーム空間41a,41bは多様な地形を有するように設定され、巨大な岩石や飛び越えられない地表の裂け目(クレバス)といった障害オブジェクトが配置されている場合がある。このような障害オブジェクトが、味方キャラクタC3の移動目標位置Tへ至るまでのルート途中に存在する場合、当初設定した移動目標位置Tへ到達できないため、移動目標位置Tを再設定する処理を行う。そして、このような再設定処理は、移動目標位置TがプレイヤキャラクタC1から比較的遠くに設定される場合、即ち、味方キャラクタC3が分類1のアクションを実行する際に、行う頻度が高くなる。
従って、以下では分類1のアクションを実行すべく移動目標位置Tを設定し、ここに味方キャラクタC3を移動させる場合において、このような障害の存在を考慮した処理について説明する。本変形例では、図7の処理に代えて図17の処理を実行することで上記再設定処理を実現する。
図17は、ゲーム装置1(味方キャラクタ制御手段8c)が実行する味方キャラクタC3の移動目標位置の設定処理を示すフローチャートである。S10〜S19までは、上述の図7のフローチャートと同様であるが、S30以降について移動目標位置の再設定処理を有する点で異なる。図17に示す設定処理は、図6(a)のステップS2の処理の一部であり、味方キャラクタC3が実行するアクションとして図5(b)に示す分類1のアクションが選択された時に実行される。また、図18は、地上のゲーム空間41aでの味方キャラクタC3の移動処理を説明すべく、各キャラクタC1〜C3の配置等を例示する模式的平面図である。
(処理例1)
はじめに、移動目標位置Tの初回の設定及び初回に設定した移動目標位置T(T1)までのルート71上に障害が存在しない場合の処理について説明する。但し、ここの説明では、図18に示すように、味方キャラクタC3が地上のゲーム空間41aに存在し、またステップS10〜S16の処理によって、四半円弧AB上に初回の移動目標位置T1が設定されるものとする。
図17に示すように、味方キャラクタ制御手段8cはステップS10〜S16の処理を実行することにより、初回の移動目標位置T(T1)の設定を行う。この処理は、図7に示したステップS10〜S16の処理と同様であるため、対応する処理内容に同一符号を付すことでその具体的な説明は省略する。次に、味方キャラクタC3の現在位置から移動目標位置T1までのルート71(図18参照)を取得し、その途中に障害となる壁などのオブジェクトが存在するか否かを判断する(ステップS30)。具体的には、味方キャラクタC3の現在位置と移動目標位置T1とを直線で結んだルート71上に、障害となるオブジェクトが位置しているかを判断する。
そして本処理例1では、移動目標位置T1までのルート71上に障害がないので(ステップS30:NO)、これで初回の移動目標位置T1の設定処理を終了する。
(処理例2)
次に、味方キャラクタC3が地上のゲーム空間41aに存在し、初回に設定した移動目標位置T1までのルート71上に障害が存在する場合の処理について説明する。
上記で説明したステップS30にて、ルート71に障害71aが存在すると判断した場合(ステップS30:YES)、当該移動目標位置T1が初回に設定されたものか否かを判断し(ステップS31)、初回に設定されたものである場合には(ステップS31:YES)、地上であるので(ステップS32:二次元)、ステップS10からの処理を再度実行し、移動目標位置の再設定を行う。
但し、図17のステップS11に示しているように、2回目の移動目標位置の設定処理においては、現在の味方キャラクタC3の存在領域(領域F1又は領域F2)を、前回とは違う領域に特定した上で、移動目標位置の設定(再設定)を行う。具体的に言えば、初回の設定処理では、実施例1にて図7を参照して説明したのと同様に、味方キャラクタC3の存在領域と同一領域(領域F1)に移動目標位置を設定するが、上記のように再設定処理を行う場合には、障害71aを回避する可能性を高めるために、前回とは違うもう一方の領域(領域F2)に移動目標位置T2を設定する。そのため、図17に示すように、本実施例に係るステップS11では、2回目の設定処理では前回とは違う領域を特定するようにしている。
なお、移動目標位置Tの設定回数は、例えば設定回数カウンタを設けて設定される毎にカウントアップさせるようにし、このカウント値を参照することによって取得するようにすればよい。
このようにして、障害71aの存在しない可能性の高い領域F2にて新たに2回目の移動目標位置T2を設定し(ステップS16)、本実施例では、図18に示すように四半円弧BC上に移動目標位置T2が設定されることになる。
なお、2回目の移動目標位置T2でも障害があると判定され(ステップS30:YES)、ステップS31の処理で2回目の設定回数であるためにNOの判断となり、移動目標位置の設定処理が終了することになる場合、2回目に設定された移動目標位置T2への移動の動作が行われる。また、本実施例では、移動目標位置の設定が2回に制限されているが、特にこれに限定されるものではなく、ルート上に障害が存在しなくなるまで設定を繰り返し行ってもよい。
(処理例3)
次に、味方キャラクタC3が水中のゲーム空間41bに存在し、初回に設定した移動目標位置T1までのルート上に障害が存在しない場合の処理について説明する。
味方キャラクタが水中のゲーム空間41bに存在する場合も、処理例1,2と同様に図17に示す処理が行われる。具体的には、まず、図7に示す処理と同様のステップS10〜S15、ステップS17〜19の処理が実行される。その結果、ステップS19で設定された初回の移動目標位置T1が設定される。その後、ステップS30の処理でルート上に障害となるオブジェクトが存在するか否かを判断する。ここで、水中のゲーム空間41bの場合、障害となるオブジェクトは水面オブジェクトと水底オブジェクトのみとなる。つまり、高さ方向(Y軸方向)について障害物があるか否かを判断している。そして、本処理例3では、障害となるオブジェクトが存在しないので(ステップS30:NO)、移動目標位置の設定処理を終了する。
(処理例4)
次に、味方キャラクタC3が水中のゲーム空間41bに存在し、初回に設定した移動目標位置T1までのルート上に障害が存在する場合の処理について説明する。ステップS30の処理で初回に設定した移動目標位置T1までのルート上に障害が存在すると判断した場合には、水中であるので(ステップS32:三次元)、ステップS17からの処理を再度実行し、移動目標位置の再設定を行う。
但し、図17のステップS17に示しているように、2回目の移動目標位置T2の設定処理においては、現在の味方キャラクタC3の存在領域(領域F5又は領域F6)を、前回とは違う領域に特定した上で、移動目標位置の設定(再設定)を行う。具体的に言えば、初回の設定処理では、実施例2にて図7を参照して説明したのと同様に、味方キャラクタC3の存在領域と異なる領域(図10:領域F5)に移動目標位置を設定するが、上記のように再設定処理を行う場合には、障害(水面オブジェクト、水底オブジェクト)を回避する可能性を高めるために、前回とは違うもう一方の領域(図10:領域F6)に移動目標位置T2を設定する。そのため、図17に示すように、本実施例に係るステップS17では、2回目の設定処理では前回とは違う領域を特定するようにしている。
例えば、初回の移動目標位置T1が領域F5に設定される場合、移動目標位置T1が水面オブジェクトよりも上方に位置していたとした場合、距離Hを再度決定して2回目の移動目標位置T2が領域F6になるように再設定する。なお、2回目の移動目標位置T2を設定する際は、前回の距離Hの正負を変更するだけでもよい。
なお、2回目の移動目標位置T2でも障害があると判定され(ステップS30:YES)、ステップS31の処理で2回目の設定回数であるためにNOの判断となって処理が終了することになる場合、2回目の移動目標位置T2の設定処理後に移動の動作が行われることになる。この場合、例えば、2回目の移動目標位置T2に代えて、この移動目標位置T2のY座標を水面オブジェクトのY座標又は水底オブジェクトのY座標に置き換えたX,Y,Z座標で特定される位置を、最終的な移動目標位置Tとして設定するようにしてもよい。
本実施例では、移動目標位置の設定が2回に制限されているが、特にこれに限定されるものではなく、障害が存在しなくなるまで再設定してもよい。
以上に説明したように、状況に応じて処理例1〜4の何れかを実行することにより、移動の障害となるオブジェクトを回避しつつ、敵キャラクタC2をプレイヤキャラクタC1との間で挟み込む位置(半円弧ABC上)などに設定した移動目標位置を設定することができる。
なお、本変形例では、分類1のアクションに関する移動目標位置の再設定の処理について説明したが、分類2のアクションに関する移動目標位置の再設定の処理についても同様にすればよい。地上における分類2のアクションに関しては、味方キャラクタC3の存在領域は考慮されないので、再設定する場合は、例えば、ステップS20からの処理を再度実行するだけでよい。具体的には、領域F8の半円弧ADC上(図13参照)に初回の目標移動位置Tが設定されるアクションの場合は、ステップS20からの処理を繰り返し実行し、同じ半円弧ADC(領域F8)内で目標移動位置Tを再設定すればよい。
[障害がある場合の処理(実施例6)]
次に、移動目標位置が設定され、移動の動作が行われている間にルート上に障害が途中から出現した場合の処理について説明する。味方キャラクタC3が移動目標位置Tへ移動している最中に、当初の移動目標位置Tの設定時には存在しなかった別の敵キャラクタC2(障害オブジェクト)が出現し、この敵キャラクタC2がルート途中に位置してしまう可能性がある。このような場合、移動の動作を中止する処理を行う。
図19は、ゲーム装置1(味方キャラクタ制御手段8c)が実行する移動動作中の障害判定処理を示すフローチャートである。図19に示す処理は、図6(a)に示すステップS2の処理の一部であり、分類1,2のアクションが選択され、移動目標位置への移動の動作中、1フレーム単位で実行される処理である。
図18に示す初回に設定した移動目標位置T1への移動の動作中を例にして、図19のフローについて説明する。
(処理例1)
最初に、ルート71上に障害が出現しなかった場合について説明する。味方キャラクタ制御手段8cは、最初に移動の途中で停止したか否かを判断する(ステップS40)。本処理例1では停止していないので(ステップS40:NO)、後述するカウンタt0をリセットし(ステップS41)、処理を終了する。味方キャラクタC3が停止しているか否かは、味方キャラクタC3のステータスの障害アタリ情報をチェックすることによって判断することができる。
なお、本処理例1では、図18に示すように味方キャラクタC3が地上のゲーム空間41aに存在する場合について説明しているが、味方キャラクタC3が水中のゲーム空間41bに存在する場合も、設定された移動目標位置へのルート上に障害が出現しなかった場合には、本処理例1と同様の処理が行われる。
(処理例2)
次に、ルート71上に障害が途中から出現した場合の処理について説明する。これは、味方キャラクタC3の移動中に、別の敵キャラクタC2がルート71上に移動してきた場合などの処理に該当し、このような障害が出現するまでは、上記処理例1の動作がフレーム単位で繰り返し実行される。
本処理例2では、上記処理例1と同様に、移動の途中で味方キャラクタC3が停止したか否かを判断する(ステップS40)。当初は存在しなかった別の敵キャラクタC2等の障害71aが移動してくるなどしてルート71上に位置すると、ルート71に沿った移動ができなくなり、味方キャラクタC3が停止したと判断する(ステップS40:YES)。この判断は、処理例1で説明したように、味方キャラクタC3の障害アタリ情報に基づいて行う。味方キャラクタC3が停止すると、その停止時点からの経過フレーム数を計測するためにカウンタt0を1カウントアップし(ステップS42)、このカウンタt0が所定の設定回数t1以上になったかどうかを判断する(ステップS43)。
カウンタt0が設定回数t1未満である場合は(ステップS43:NO)、味方キャラクタC3の移動が障害によって停止してから所定時間が経過していないと判断し、このフレームでの処理を終了する。
なお、上記ステップS43の処理により所定時間が経過していないと判断され、且つ障害71aが依然として存在している場合、次のフレームでもステップS40にてYESと判断され、上述したステップS42,S43の処理が行われる。これに対し、所定時間が経過する前のある時点で、障害となっていた敵キャラクタC2が移動するなどによりルート71上から排除された場合、味方キャラクタC3の動作は停止状態ではなくなるので、障害アタリ情報も障害にあたっていないとする情報が設定され、障害71aが排除された直後のフレームで行う図19に示す処理では、ステップS40はNOの判断となり、ステップS41にてカウンタt0はリセット(0)される。
一方、障害が排除されることなくカウンタt0が設定回数t1以上になった場合は(ステップS43:YES)、移動動作を終了(中止)し(ステップS44)、処理を終了する。その後、ステップS2(図6(a)参照)では、例えば、実行されているアクションにおける移動の動作の次の動作を開始するように処理を開始する。あるいは、図17に示す処理を再度実行し、中止した移動動作をやり直すようにしてもよい。さらに、移動動作の中止後、実行されているアクションを中止し、ステータスなどに基づいて別のアクションの再選択、または、同一のアクションの再選択を行うなどしてもよい。
なお、本処理例2では、図18に示すように味方キャラクタC3が地上のゲーム空間41aに存在する場合について説明しているが、味方キャラクタC3が水中のゲーム空間41bに存在する場合も、設定された移動目標位置への移動の動作が行われている間にそのルート上に障害が途中から出現した場合には、本処理例2と同様の処理が行われる。
このように、途中から障害71aが出現した場合であっても、この障害71aが排除されるのを待ったり、次の動作に移行させるなどして、味方キャラクタC3の動作が不自然にならないようにしている。
また、本実施例6では、分類1のアクションについて説明したが、分類2のアクションにおける移動動作についても適用可能である。
ところで、上述の実施例1〜7では、アクション(行動)が複数の動作で構成され、分類1,2のアクションでは最初に移動目標位置に移動する動作が設定されているが、移動目標位置に移動する動作とその他の動作とを区別して、別のアクションとして位置付けてもよい。例えば、分類1,2のアクションを実行する際、実行する前に移動目標位置に移動するアクションを実行するようにし、その後に実行すべき分類1,2のアクションを実行すればよい。
上述した説明では、一人のプレイヤがオフラインゲームを行う場合について例示したが、本発明は、複数のプレイヤが各自のプレイヤキャラクタを同一の仮想ゲーム空間内に登場させ、これらを共同させて行動させるオンラインゲームにおいても適用することができる。例えば、仮想ゲーム空間に、このような複数のプレイヤキャラクタと共に、上述したようなノンプレイヤキャラクタである味方キャラクタ及び敵キャラクタが存在する場合には、この味方キャラクタの動作に関して本発明を適用することができる。
また、本実施例では据え置き型のゲーム装置について説明したが、携帯ゲーム機、携帯電話機や、パーソナルコンピュータなどのコンピュータについても、本発明を好適に適用することができる。