以下、本発明の一実施の形態について図面を参照して説明する。
図1は、本発明の一実施の形態におけるビデオゲーム装置100の構成の例を示すブロック図である。図1に示すように、本例のビデオゲーム装置100は、ビデオゲーム装置本体10と、表示装置50と、サウンド出力装置60とを含む。ビデオゲーム装置本体10は、例えば市販のビデオゲーム機によって構成される。また、表示装置50は、例えばテレビジョン装置や液晶表示装置などによって構成され、画像表示部51を有している。
ビデオゲーム装置本体10は、制御部11と、RAM12と、ハードディスクドライブ(HDD)13と、サウンド処理部14と、グラフィック処理部15と、DVD/CD−ROMドライブ16と、通信インターフェイス17と、インターフェイス部18と、フレームメモリ19と、メモリーカードスロット20と、入力インターフェイス部21とを含む。
制御部11、RAM12、ハードディスクドライブ(HDD)13、サウンド処理部14、グラフィック処理部15、DVD/CD−ROMドライブ16、通信インターフェイス17、及びインターフェイス部18は、それぞれ内部バス22に接続されている。
制御部11は、CPUやROMなどを含み、HDD13や記憶媒体70に格納された制御プログラムに従ってビデオゲーム装置100全体の制御を行う。制御部11は、タイマ割り込みを発生させるため等に用いられる内部タイマを備えている。RAM12は、制御部11のワークエリアとして用いられる。HDD13は、制御プログラムや各種のデータを保存するための記憶領域である。
サウンド処理部14は、例えばスピーカによって構成されるサウンド出力装置60に接続される。サウンド処理部14は、制御プログラムに従って処理を実行している制御部11からのサウンド出力指示に従って、サウンド出力装置60に対してサウンド信号を出力する。なお、サウンド出力装置60は、表示装置50あるいはビデオゲーム装置本体10に内蔵されていてもよい。
グラフィック処理部15は、画面表示がなされる画像表示部51を有する表示装置50に接続される。グラフィック処理部15は、制御部11からの描画命令に従って、フレームメモリ19に画像を展開するとともに、画像表示部51に画像を表示させるためのビデオ信号を表示装置50に対して出力する。ビデオ信号によって表示される画像の切替時間は、例えば、1フレームあたり1/30秒とされる。
DVD/CD−ROMドライブ16には、DVD−ROMやCD−ROMなどのゲーム用の制御プログラムが格納された記憶媒体70が装着される。DVD/CD−ROMドライブ16は、装着された記憶媒体70から、制御プログラムなどの各種データを読み出す処理を行う。
通信インターフェイス17は、インターネットなどの通信ネットワーク80に無線あるいは有線によって接続される。ビデオゲーム装置本体10は、通信インターフェイス17における通信機能を用いて、通信ネットワーク80を介して例えば他のコンピュータとの通信を行う。
インターフェイス部18には、入力インターフェイス部21と、メモリカードスロット20とが接続される。インターフェイス部18は、プレイヤによるキーパッド30の操作にもとづく入力インターフェイス部21からの指示データをRAM12に格納する。すると、RAM12に格納された指示データに従って、制御部11が各種の演算処理を実行する。
ビデオゲーム装置本体10は、入力インターフェイス部21を介して操作入力部(コントローラ)としてのキーパッド30に接続される。
キーパッド30の上部には、十字キー31と、ボタン群32と、左ジョイスティック38と、右ジョイスティック39とが配設されており、十字キー31には、上方キー31a、下方キー31b、右方キー31c及び左方キー31dが含まれ、ボタン群32には、○ボタン32a、×ボタン32b、△ボタン32c及び□ボタン32dが含まれる。また、十字キー31が配設される基部と、ボタン群32とが配設される基部との連結部には、セレクトボタン35が配設されている。なお、キーパッド30の側部にもR1ボタン36やL1ボタン33等の複数のボタンが配設されている。
キーパッド30は、十字キー31、○ボタン32a、×ボタン32b、△ボタン32c、□ボタン32d、セレクトボタン35、R1ボタン36及びL1ボタン33等のそれぞれと連係するスイッチを備え、各ボタンに対して押圧力が加えられると、その対応したスイッチがオンする。このスイッチのオン/オフに応じた検出信号がキーパッド30において生成されると共に、左ジョイスティック38及び右ジョイスティック39のそれぞれの傾倒方位に対応した検出信号がキーパッド30において生成される。
キーパッド30において生成された2系統の検出信号が入力インターフェイス部21に供給され、キーパッド30からの検出信号が入力インターフェイス部21を介されることによりキーパッド30上のどのボタンがオンされたかを示す検出情報と、左ジョイスティック38及び右ジョイスティック39のそれぞれの状態を示す検出情報となる。このようにキーパッド30に対してなされたプレイヤによる操作指令がビデオゲーム装置本体10に与えられる。
また、インターフェイス部18は、制御部11からの指示に従って、RAM12に記憶されているゲームの進行状況を示すデータをメモリカードスロット20に装着されているメモリーカード90に格納する処理や、メモリーカード90に保存されている中断時のゲームのデータを読み出してRAM12に転送する処理などを行う。
ビデオゲーム装置100でゲームを行うための制御プログラムなどの各種のデータは、例えば記憶媒体70に記憶されている。記憶媒体70に記憶されている制御プログラムなどの各種のデータは、記憶媒体70が装着されているDVD/CD−ROMドライブ16によって読み出され、RAM12にロードされる。制御部11は、RAM12にロードされた制御プログラムに従って、グラフィック処理部15に対して描画命令を出力する処理や、サウンド処理部14に対してサウンド出力の指示を出力する処理などの各種の処理を実行する。なお、制御部11が処理を実行している間は、ワークメモリとして用いられるRAM12に、ゲームの進行状況によって中間的に発生するデータ(例えば、ゲームの得点、プレイヤキャラクタの状態を示すデータなど)が保存される。
この実施の形態に係る3次元ビデオゲームは、仮想3次元空間に設けられたフィールド上を、プレイヤキャラクタ(プレイヤによるキーパッド30の操作に従って動作するキャラクタ)などの複数のキャラクタが移動していくことによりゲームが進行する部分を含むゲームであるものとする。なお、フィールドが形成された仮想3次元空間は、ワールド座標系によって示されるものとする。フィールドは、複数の面で構成され、各構成面の頂点の座標を特徴点として表したものである。
次に、本例のビデオゲーム装置100の動作について説明する。
ここでは、説明を簡単にするため、仮想3次元空間において動作するオブジェクトとして、プレイヤキャラクタと複数のノンプレイヤキャラクタ(NPC:ゲーム機側の制御(具体的には制御部11の制御)に従って動作するキャラクタ)のみが存在するものとし、本発明に特に関わる処理以外は、説明を省略している場合があるものとする。なお、本例では、RPGについてのビデオゲーム制御が実行されるものとする。
図2は、本例のビデオゲーム装置100におけるメイン処理の例を示すフローチャートである。メイン処理は、1フレーム分の画像を生成するための処理、及びビデオゲームの制御に必要な処理であり、1/30秒ごとのタイマ割り込みに応じて実行される。なお、「1/30秒ごと」は一例であり、メイン処理は、例えば、1フィールド期間(1/60秒)ごとのタイマ割り込みに応じて実行されるものとしても、処理量によっては2フレーム期間(1/15秒)ごとのタイマ割り込みに応じて実行されるものとしてもよい。
本例では、プレイヤキャラクタの移動やプレイヤキャラクタによる戦闘を含む各種の行動が許容された共通のフィールド上でゲームが進行するものとし、当該フィールド上での所定目的が達成されるとステージ終了となり、次のフィールド上でのステージに移行するものとする。また、本例では、フィールド上に登場する各キャラクタは、同一時間軸が与えられており、一旦登場するとHP(ヒットポイント:生命力を表す値)が0にならない限り同一時間軸に従ってフィールド上を移動したりフィールド上で静止していたりする。なお、キャラクタ画像として画像表示部51に表示される部分は、フィールドにおける仮想カメラの視界内に存在する部分である。
メイン処理において、制御部11は、ゲーム開始前であればプレイヤによるキーパッド30の操作によりゲームの開始指示があったか否かを判定し、ゲームの実行中であれば場面変更(例えばフィールドの変更)を行うタイミングとなったか否かを判定する(ステップS101)。場面変更を行うタイミングは、例えば、これまで画像表示部51に表示していた場面(例えば、仮想3次元空間によって表されている場面、ムービー画像による動画演出によって表されていた場面)を終了し、新たな場面に切り替えるために、画像表示部51に新たな場面を示す仮想3次元空間を表示するタイミングを意味する。
ゲームの開始指示があったと判定したとき、あるいは場面変更を行うタイミングとなったと判定したときは(ステップS101のY)、制御部11は、制御プログラムに従って、初期画面(ゲーム開始時の初期画面、場面変更時の初期画面)を決定する(ステップS102)。なお、ゲームに用いられる画面やキャラクタなどの各種のデータは、記憶媒体70に格納されている。ステップS102では、初期画面あるいは変更後の場面(例えば新しいステージ)におけるプレイヤキャラクタの初期表示位置、表示するNPC及びその初期表示位置などが、制御プログラムに従って決定される。
次いで、制御部11は、仮想カメラの視点の位置、視軸の方向、および視角の大きさを、制御プログラムに従って決定し、透視変換を行うための仮想カメラの初期設定を行う(ステップS103)。そして、ステップS115に移行する。
ゲームの実行中であり場面変更を行うタイミングでないと判定したときは(ステップS101のN)、制御部11は、プレイヤによるキーパッド30の操作にもとづく指示データを受け付ける(ステップS104)。すなわち、プレイヤキャラクタの動作などを実行させるための指示データがキーパッド30から入力されているか否かを判定し、有効な指示データ(受付が許容されている指示データを意味する)が入力されていれば、その指示データを受け付ける。
移動に関するプレイヤキャラクタの行動を指示するためのキーパッド30の操作(移動操作)に応じて、ステップS104にて移動に関する行動を指示するための指示データ(移動指示データ:移動コマンドや方向指示キーによる移動指示)を受け付けた場合には(ステップS105のY)、制御部11は、受け付けた移動指示データに応じて移動処理を実行する(ステップS106)。移動処理では、制御部11は、仮想空間(現在のフィールド上)におけるプレイヤキャラクタの位置を、受け付けた移動指示データに応じて移動させる。なお、移動コマンドには、例えばダッシュ指示コマンドなどがある。ダッシュ指示コマンドは、プレイヤキャラクタを素早く移動させるためのコマンドであり、戦闘中であれば戦闘エリアから素早く離れる(逃げる)指示を与えるためのコマンドとなる。
次いで、制御部11は、移動処理に伴って派生するプレイヤキャラクタの位置情報にもとづいて移動情報を生成する(ステップS107)。すなわち、移動処理によるプレイヤキャラクタの位置の移動に応じて、仮想カメラの視点の位置、視軸の方向、視角の大きさのうち、必要なデータを更新し、仮想カメラの設定内容の変更を行う。移動情報は、プレイヤキャラクタの移動後の位置、プレイヤキャラクタの移動によって変更された仮想カメラの視点の位置、視軸の方向、視角の大きさなど、移動に関する各種の情報を含む。そして、ステップS113に移行する。
戦闘に関するプレイヤキャラクタの行動を指示するためのキーパッド30の操作(バトル操作)に応じて、ステップS104にて戦闘に関する行動を指示するための指示データ(バトル指示データ:バトルコマンド)を受け付けた場合には(ステップS108のY)、制御部11は、受け付けたバトル指示データに応じてバトル処理を実行する(ステップS109)。バトル処理では、制御部11は、例えば、戦闘相手となっている敵キャラクタとプレイヤキャラクタとの戦闘結果や戦闘経過を決定する処理などが実行される。
次いで、制御部11は、バトル処理によって決定された戦闘結果や戦闘経過にもとづいてバトル情報を生成する(ステップS110)。すなわち、バトル処理による戦闘結果や戦闘経過に応じて、対戦したプレイヤキャラクタ及び敵キャラクタ名、対戦経過、その対戦結果、プレイヤキャラクタの能力を規定するパラメータなどのうち、必要な情報の更新及び設定を行う。バトル情報は、対戦したプレイヤキャラクタ及び敵キャラクタ名、対戦経過、その対戦結果、プレイヤキャラクタの能力を規定するパラメータなど、戦闘に関する各種の情報を含む。そして、ステップS113に移行する。
その他の指示を行うためのキーパッド30の操作(その他操作)に応じて、ステップS104にてその他の指示のための指示データ(その他指示データ:その他コマンド)を受け付けた場合には(ステップS111のY)、制御部11は、受け付けたその他指示データに応じた処理(例えば、会話、買物、拾得等)を実行する(ステップS112)。そして、ステップS112の処理結果に応じたその他の諸情報が生成され、ステップS113に移行する。
ステップS113にて、制御部11は、ステップS107にて生成した移動情報をRAM12の所定のデータ領域に格納することにより、プレイヤキャラクタの現在位置を更新する。また、ステップS113にて、制御部11は、ステップS110にて生成したバトル情報や、ステップS112の後に生成したその他の諸情報をRAM12の所定のデータ領域に格納することにより、プレイヤキャラクタの各種の行動履歴を記憶保持する。
次いで、制御部11は、RAM12に一旦格納されたプレイヤキャラクタの行動履歴を示す情報にもとづいて、行動評価処理を実行する(ステップS114)。具体的には、数値化が必要な情報に対しては、予め容易されている変換テーブルが用いられて数値化がなされ、また、重み付けが必要な情報に対しては、所定の計数が乗算されてそれらの数値が合計されて得点が計算される。そして、算出された得点がRAM12の所定のデータ領域に格納されている旧得点に加算され、再び所定のデータ領域に格納されることにより評価情報としての得点が更新される。
そして、制御部11は、仮想カメラの設定内容等に応じて、仮想カメラから表示すべきプレイヤキャラクタやノンプレイヤキャラクタを含む仮想3次元空間を仮想スクリーン上に透視変換して、画像表示部51に表示させる2次元画像を生成するための表示処理を行う(ステップS115)。表示処理を終了すると、今回のメイン処理を終了する。その後、次のフレーム期間の開始タイミングにおいてタイマ割り込みが発生すると、次回のメイン処理が実行されることとなる。そして、メイン処理が繰り返し実行されることで、キャラクタ画像がフレーム期間毎に切り替えられて、画像表示部51にて動画が表示されることになる。
ここで、ステップS115の表示処理について簡単に説明する。ステップS115では、制御部11は、先ず、プレイヤキャラクタやノンプレイヤキャラクタを含む仮想3次元空間を構成するポリゴンの頂点の座標のうち、少なくとも仮想スクリーン上に透視変換される範囲に含まれるポリゴンの頂点の座標を、ワールド座標系の座標から視点座標系の座標に変換する。次いで、制御部11は、プレイヤキャラクタやノンプレイヤキャラクタについての視点座標系におけるポリゴンの頂点の座標とをグラフィック処理部15に送信し、グラフィック処理部15に対して描画命令を出力する。
描画命令が入力されると、グラフィック処理部15は、視点座標系の座標にもとづいて、各面を構成する各点について、前側にある点のデータが残るようにZバッファの内容を更新する。Zバッファの内容を更新すると、グラフィック処理部15は、前側にある残った点についての画像データをフレームメモリ19に展開する。また、グラフィック処理部15は、展開される画像データに対して、シェーディングやテクスチャマッピングなどの処理も行う。
そして、グラフィック処理部15は、フレームメモリ19に展開された画像データを順次読み出し、同期信号を付加してビデオ信号を生成し、表示装置50に出力する。表示装置50は、グラフィック処理部15から出力されたビデオ信号に対応した画像を画像表示部51に表示する。1フレーム時間ごとに画像表示部51の画像が切り替えられていくことで、プレイヤは、プレイヤキャラクタやノンプレイヤキャラクタがフィールド上を移動する様子を含む画像を見ることができる。
次に、本例のビデオゲームにおいて表示装置50の表示画面51に表示されるプレイヤキャラクタと敵キャラクタとの戦闘状態における3次元フィールド画面の例について説明する。
図3は、戦闘開始状態における3次元フィールド画面の例を示す説明図である。図3に示すように、3次元フィールド画面には、例えば、プレイヤキャラクタ201や、プレイヤキャラクタ201の所定目的を阻害する敵キャラクタ202a〜202cなどの各キャラクタが表示される。また、3次元フィールド画面には、各キャラクタの他、プレイヤキャラクタ201のキャラクタ名とヒットポイント(HP)の最大値と現在のHPとを表示するHP表示領域203と、敵キャラクタ202a〜202eのキャラクタ名を表示する敵キャラクタ名表示領域204と、プレイヤからのキーパッド30による指示信号に基づき移動する選択カーソル205と、プレイヤキャラクタの行動の対象となるターゲットを示すターゲットカーソル206と、Active Time Battle値(以下、ATB値)の累積値を表示するATBゲージ207aと、バレットタイム値の累積値を表示するバレットメータ207cとが設けられている。なお、本例では、ATBゲージ207aの累積最大値とバレットメータ207cの累積最大値は、等しく設定される。なお、ATBゲージ207aの累積最大値とバレットメータ207cの累積最大値が、異なる値とされていてもよい。
ここで、「ATB値」とは、時間経過に伴って加算され、プレイヤキャラクタのコマンド(攻撃、防御などプレイヤキャラクタの動作)の実行により減算される値を意味する。換言すると、プレイヤは、ATB値が所定量累積されるまで待たなければ、プレイヤキャラクタのコマンドを発動することはできない。つまり、プレイヤは、ATBゲージ207aに表示されたATB値の累積値を参照しながら、時間経過と共に変化するプレイヤキャラクタのコマンドを計画的に発動しなければならない。よって、プレイヤのゲームへの趣向性が高まるものとなる。このATB値の減算、加算に係るコマンド処理については、以下に詳細に説明する。
また、「バレットタイム値」とは、時間経過に伴って加算され、バレットメータ207cが満タン状態であるときにプレイヤによってバレットタイムの実行選択がなされバレットタイムが開始されると徐々に減算されていく値を意味する。「バレットタイム」とは、敵キャラクタの動きがスローモーション状態とされる一定時間(バレットタイム値が0になるまでの時間)を意味する。
図4を参照して、プレイヤの入力に基づきプレイヤキャラクタの動きを制御するコマンド処理を説明する。図4は、本例のビデオゲーム装置100におけるコマンド処理の例を示すフローチャートである。
コマンド処理において、制御部11は、先ず、所定の時間経過に伴ってATB値を加算するATB値加算処理を行う(ステップS201a)。次いで、特定の時間経過に伴ってバレットタイム値を加算するバレットタイム値加算処理を行う(ステップS201b)。そして、制御部11は、プレイヤからのキーパッド30によるコマンド入力を受け付けるコマンド受付処理を行い(ステップS202)、プレイヤキャラクタにコマンドを発動させるコマンド発動処理を行う(ステップS203)。さらに、制御部11は、プレイヤからの指示に応じてバレットタイム制御を行うバレットタイム制御処理を行う(ステップS204)。
次に、図5を参照して、上述したATB値加算処理(ステップS201a)を詳細に説明する。図5は、ATB加算処理の詳細を示すフローチャートである。
制御部11は、先ず、プレイヤキャラクタのステータス情報を取得する(ステップS301)。ここで、プレイヤキャラクタのステータス情報とは、ゲームにおけるプレイヤキャラクタの状態を示す情報であって、例えば、プレイヤキャラクタの健康状態(通常状態、スロウ状態(敵キャラクタの攻撃により行動が遅くなった状態)、戦闘不能状態など)、プレイヤキャラクタのレベル(成長度)、プレイヤキャラクタの所持するアイテム、プレイヤキャラクタの装備、プレイヤキャラクタのコマンド状態(コマンド受け付け中、コマンド発動中、ATB値等)などである。
次に、制御部11は、ステップS301において、取得したプレイヤキャラクタのステータス情報に基づき、プレイヤキャラクタが戦闘可能な状態であるか否か判断する(ステップS302)。制御部11は、プレイヤキャラクタが戦闘可能状態であると判断すれば(ステップS302のY)、プレイヤキャラクタのステータス情報に基づき、プレイヤキャラクタがコマンド発動中であるか否かを判断する(ステップS303)。次いで、制御部11は、プレイヤキャラクタがコマンド発動中ではない判断すると(ステップS303のN)、累積されたATB値が累積最大値未満であるか否かを判断する(ステップS304)。ここで、制御部11は、累積ATBが累積最大値未満であると判断すると(ステップS304のY)、ATB値を加算し(ステップS305)、表示装置50に表示されるATBゲージ207aの表示を更新する(ステップS306)。なお、制御部11は、ATB値の加算値をプレイヤキャラクタのステータス情報から判断し、例えば、プレイヤキャラクタが「スロウ状態」にあれば、その加算するATB値を「通常状態」よりも低い値とする。
一方、ステップS302において、制御部11が、プレイヤキャラクタが戦闘可能状態でないと判断すれば(ステップS302のN)、ATB値を加算することなく終了する。同様に、ステップS303において、制御部11が、プレイヤキャラクタがコマンド発動中であると判断すれば(ステップS303のY)、ATB値を加算することなく終了する。同様に、ステップS304において、制御部11が、ATB値が累積最大値であると判断すると(ステップS304のN)、ATB値を加算することなく終了する。また、ステップS302において、制御部11が、プレイヤキャラクタが戦闘可能状態でないと判断したときに(ステップS302のN)、ATB値をリセットして(ATB値のポイントを0ポイントとして)、ATB値を更新して終了するようにしてもよい。
ATB値の加算量は、具体的に、1ポイントあたり0.2秒などとしてもよい。また、ATBゲージ207aの加算量及び最大値は、プレイヤキャラクタのレベルによって大きくしていくことも可能である。具体的には、ゲーム開始時のプレイヤキャラクタの最大ATB値を40ポイントとし、ゲーム終盤時のプレイヤキャラクタの最大ATB値を200ポイントとしてもよい。また、制御部11は、ATBゲージの加算量及び最大値をゲームの実行した累積時間に伴い増加させるようにしてもよい。
次に、図6を参照して、上述したバレットタイム値加算処理(ステップS201b)を詳細に説明する。図6は、バレットタイム値加算処理の詳細を示すフローチャートである。
制御部11は、先ず、バレットタイム制御の実行中であるか否かを確認する(ステップS401)。この確認は、後述するバレットタイムフラグがセットされているか否かによって行う。バレットタイム制御の実行中でなければ、制御部11は、累積されたバレットタイム値が累積最大値未満であるか否かを判断する(ステップS402)。ここで、制御部11は、バレットタイム値の累積値が累積最大値未満であると判断すると(ステップS402のY)、バレットタイム値を加算し(ステップS403)、表示装置50に表示されるバレットメータ207cの表示を更新する(ステップS404)。なお、制御部11は、バレットタイム値の加算値をプレイヤキャラクタのステータス情報から判断し、例えば、プレイヤキャラクタが「スロウ状態」にあれば、その加算するバレットタイム値を「通常状態」よりも低い値とする。
一方、ステップS401において、制御部11が、バレットタイム制御の実行中であると判断すれば(ステップS401のY)、バレットタイム値を加算することなく終了する。同様に、ステップS402において、制御部11が、バレットタイム値が累積最大値であると判断すると(ステップS402のN)、バレットタイム値を加算することなく終了する。
バレットタイム値の加算量は、具体的に、1ポイントあたり0.2秒などとしてもよい。また、バレットメータ207cの加算量及び最大値は、プレイヤキャラクタのレベルによって大きくしていくことも可能である。具体的には、ゲーム開始時のプレイヤキャラクタの最大バレットタイム値を40ポイントとし、ゲーム終盤時のプレイヤキャラクタの最大バレットタイム値を200ポイントとしてもよい。また、制御部11は、バレットメータ207cの加算量及び最大値をゲームを実行した累積時間に伴い増加させるようにしてもよい。なお、バレットタイム値の加算量や最大値は、ATB値と同じとするようにしてもよく、ATB値とは異なるようにしてもよい。
次に、図7を参照して、上述したコマンド受付処理(ステップS202)を詳細に説明する。図7は、コマンド受付処理の詳細を示すフローチャートである。
制御部11は、先ず、プレイヤキャラクタのステータスを取得する(ステップS501)。次に、制御部11は、取得されたプレイヤキャラクタのステータス情報に基づき、プレイヤキャラクタが戦闘可能状態であるか否かを判断し(ステップS502)、プレイヤキャラクタが戦闘可能状態であると判断すると(ステップS502のY)、プレイヤのキーパッド30によるプレイヤキャラクタの動作の対象となるターゲットの選択を受け付ける(ステップS503)。一方、制御部11は、プレイヤキャラクタが、戦闘可能状態ではないと判断すれば(ステップS502のN)、本コマンド受付処理を終了する。
ここで、図3を参照して、ターゲット選択受付(ステップS503)の具体例を説明する。図3に示すように、プレイヤは、十字キー31を押下げ選択カーソル205を移動させ、ターゲットを選択し、○ボタン32aを押下することによりターゲットを決定する。図3に示す例では、敵キャラクタAをターゲットとして選択している。
ターゲットの選択を受け付けると(ステップS503のY)、制御部11は、選択可能なコマンドの一覧を表示装置50に表示するとともに、プレイヤのキーパッド30によるコマンドの選択を受け付ける(ステップS504)。
次に、図8を参照して、選択可能なコマンドの一覧表示、及びコマンド選択受付(ステップS504)の具体例を説明する。図8は、図3に示す状態からターゲットを選択し、所定時間経過した状態の3次元フィールド画面を示す図である。図8に示すように、表示装置50には、コマンド表示領域208(選択可能なコマンドの一覧)と、ターゲットとしたキャラクタ名を表示するターゲット名表示領域209とが表示される。
コマンド表示領域208は、コマンドのカテゴリを選択するコマンドカテゴリ選択領域208aと、コマンド名とコマンド値とを選択するコマンド選択領域208bとで構成されている。コマンドカテゴリ選択領域208aには、例えば、通常技、特殊技、アイテム、魔法などが表示され、コマンド選択領域208bには、例えば、カテゴリが通常技であれば、「たたかう1」、「たたかう2」、「ぬすむ」、「しらべる」、「ぼうぎょ1」、「ぼうぎょ2」等のコマンド名が表示される。
ターゲット名表示領域209には、ターゲットのキャラクタ名が、「敵A」と表示される。また、図3の状態から、所定時間が経過していることから、ATBゲージ207aにおいては、例えば、ATB値が50ポイントに加算されており、バレットメータ207cにおいては、例えば、バレットタイム値が25ポイントに加算されている。なお、多数のコマンドが選択可能な場合には、例えば、コマンド選択領域208bにスクロールバーを設け、スクロールバーを移動させ、コマンド名を表示するようにすればよい。
プレイヤは、十字キー31を押下げ選択カーソル205を移動させ、コマンドを選択し、○ボタン32aの押下げることによりコマンドを決定可能である。図8に示す例では、「たたかう1」をコマンドとして選択している。
次に、制御部11は、プレイヤによるキーパッド30の指令信号に基づき、コマンドの選択がなされたと判断すると(ステップS504のY)、選択されたコマンドを記憶して(ステップS505)、ここでの処理を終了する。
次に、図9を参照して、上述したコマンド発動処理(ステップS203)について詳細に説明する。図9は、コマンド発動処理の例を示すフローチャートである。
コマンド発動処理において、制御部11は、先ず、プレイヤキャラクタのステータス情報を取得し(ステップS601)、プレイヤキャラクタが戦闘可能状態であるか否か判断する(ステップS602)。制御部11は、プレイヤキャラクタが戦闘可能状態であると判断すると(ステップS602のY)、受け付けられている動作コマンドがあれば(ステップS603のY)、累積ATB値が最大値であるか否か判断する(ステップS604)。
累積ATB値が最大値であると判断すると(ステップS604のY)、制御部11は、動作コマンドを発動する(ステップS605)。一方、上述した処理において、制御部11が、プレイヤキャラクタが戦闘可能状態ではないと判断した場合(ステップS602のN)、受け付けられたコマンドがないと判断した場合(ステップS603のN)、或いは、累積ATB値が最大値でないと判断した場合(ステップS604のN)には、コマンド発動処理を終了する。
制御部11は、コマンドを発動させると、ATB値を初期値(例えば0ポイント)に減算して表示し(ステップS606)、記憶された発動済みの動作コマンドを消去する(ステップS607)。
次に、図10を参照して、上述したバレットタイム制御処理(ステップS204)を詳細に説明する。図10は、バレットタイム制御処理の詳細を示すフローチャートである。
バレットタイム制御処理において、制御部11は、先ず、バレットタイム制御中であるか否か確認する(ステップS701)。この確認は、後述するバレットタイムフラグがセットされているか否かによって行う。バレットタイム制御中でなければ(ステップS701のN)、制御部11は、プレイヤのキーパッド30の操作により所定のバレットタイム指定ボタン(例えば×ボタン32b)が押下されたか否か確認する(ステップS702)。すなわち、プレイヤからのバレットタイム制御の実行指示がなされているか否か確認する。
バレットタイム指定ボタンが押下されていれば、制御部11は、バレットタイム値の累積値が所定の初期値(最小値:本例では0)でないか否か(初期値を超えているか:バレットタイム値が少しでも充填されているか否か)確認し(ステップS703)、例えば図11に示すようにバレットタイム値の累積値が初期値でなければ(バレットタイム値が少しでも充填されていれば)バレットタイムフラグをセットし(ステップS704)、NPCのスローモーション表示(バレットタイム制御による表示)を開始する(ステップS705)。すなわち、バレットタイム制御を開始する。
バレットタイム指定ボタンが押下されていれば、制御部11は、バレットタイム値の累積値が特定の最大値であるか否か確認し(ステップS703)、例えば図11に示すようにバレットタイム値の累積値が最大値となっていればバレットタイムフラグをセットし(ステップS704)、NPCのスローモーション表示(バレットタイム制御による表示)を開始する(ステップS705)。すなわち、バレットタイム制御を開始する。
バレットタイムフラグは、バレットタイム制御の実行を開始するときにセットされ、バレットタイム制御の実行を終了するときにリセットされるフラグであり、バレットタイム制御中であるか否かの判定等に利用される。
バレットタイム制御を開始すると(ステップS705)、あるいはバレットタイム制御の実行中であれば(ステップS701のY)、制御部11は、バレットタイム値を減算し(ステップS706)、表示装置50に表示されるバレットメータ207cの表示を更新する(ステップS707)。なお、制御部11は、バレットタイム値の減算値をプレイヤキャラクタのステータス情報から判断し、例えば、プレイヤキャラクタが「スロウ状態」にあれば、その減算するバレットタイム値を「通常状態」よりも低い値とする。すなわち、スロウ状態であるときにバレットタイム制御されるようにすると、バレットタイム制御の制御時間を長くすることができるようになる。
バレットタイム値の減算量は、具体的に、1ポイントあたり0.3秒などとしてもよい。また、バレットメータ207cの減算量は、プレイヤキャラクタのレベルによって大きくあるいは小さくしていくことも可能である。
次に、制御部11は、プレイヤのキーパッド30の操作により所定のバレットタイム終了ボタン(例えば□ボタン32d)が押下されたか否か確認する(ステップS708)。すなわち、プレイヤからのバレットタイム制御の強制修了指示がなされているか否か確認する。
バレットタイム終了ボタンが押下されていなければ、制御部11は、ステップS709に移行する。一方、バレットタイム終了ボタンが押下されていれば、制御部11は、バレットタイム値を初期値に設定し(ステップS712)、後述するステップS710に移行する。このように、バレットタイム制御が強制終了された場合には、バレットタイム値が初期値に戻される。なお、バレットタイム値を初期値に設定することなく(ステップS712を実行することなく)、ステップS710に移行するようにしてもよい。このように構成すれば、強制終了時に残っているバレットタイム値から加算処理が再開されるため、強制終了時に残っているバレットタイム値を無駄にすることなく有効に利用することが可能となる。
バレットタイム終了ボタンが押下されていなければ、制御部11は、バレットタイム値が初期値(例えば0ポイント)になっているか否か確認し(ステップS709)、初期値でなければ(ステップS709のN)、バレットタイム制御の実行状態を維持したまま、ここでのバレットタイム制御処理を終了する。
バレットタイム制御の実行中は、例えば図12に示すように、バレットメータ207cのポイント(バレットタイム値)が時間経過とともに減算されていく。また、図11に示す通常状態では高速で移動制御されていたNPCが、図12に示すように低速で移動制御されるようになる。従って、NPCが低速表示されるバレットタイム制御の実行中であれば、例えばプレイヤが攻撃や回復などの動作コマンドを選択する時間や、NPCからの攻撃を避ける動作を行う時間が十分に確保される。そして、例えば動作コマンドによる攻撃を行う場合には、図12に示すようにATBゲージ207aが満タン状態となっているときに、動作コマンドを選択して例えば図13に示すように敵キャラクタに対して攻撃を行うようにすればよい。
一方、制御部11は、バレットタイム値が初期値(例えば0ポイント)になっていれば、バレットタイムフラグをリセットし(ステップS710)、NPCのスローモーション表示(バレットタイム制御による表示)を終了する(ステップS711)。すなわち、バレットタイム制御を終了する。
次に、本実施の形態におけるNPCの行動パターンの選択方法について説明する。本実施の形態では、ノンプレイヤキャラクタの行動パターンがあらかじめ設定された行動パターン設定テーブルを用いて、ノンプレイヤキャラクタの行動を制御する。そして、その行動パターン設定テーブルには、例えば図14に示すように、バレットタイム制御(特殊制御)時に有効となる特殊パターン(バレットタイム制御時行動パターン、特殊制御時行動パターン)を含む各種の行動パターンが設定されている。
具体的には、図14に示すように、行動パターン設定テーブルには、各ノンプレイヤキャラクタ毎に、静止状態であるときの行動パターン(表示動作パターン)を示す静止パターン、攻撃を行っているときの行動パターンを示す攻撃パターン、特殊状態であるときの行動パターンを示す特殊パターンなどの各種の行動パターンがあらかじめ設定されている。なお、図14には表れていないが、防御パターンや、移動パターンなどの他の行動についての行動パターンも設定されている。また、各行動について、それぞれ複数種類の行動パターンが設定されていてもよい。
特殊パターンは、バレットタイム制御時にプレイヤが特定の動作を実行することで有効となる行動パターンとされる。すなわち、特殊パターンは、プレイヤキャラクタに対してノンプレイヤキャラクタがスローモーション表示されている状態で、例えばノンプレイヤキャラクタに対して特定のタイミングで特定の攻撃を行うといった特殊パターン発動のための要件を満たす行動を取ったと判定された時に選択され、その特殊パターンによる動作が実行される。具体的には、例えば、NPCのうち敵キャラクタであるドラゴンが、口を開けて火の玉や火炎を吐き出す詳細動作などが考えられる。なお、この場合、通常速度での攻撃パターンでは、ドラゴンが口を開けて火の玉や火炎を吐き出すような動作は一瞬のうちに高速で行われるため、プレイヤからは視認ができず、対応することができない。ところが、ドラゴンの動きがスローモーションで表示されることにより、どのタイミングで火の玉が吐き出されるのかをプレイヤが視認可能となるとともに、対応時間も確保される。そこで、プレイヤの操作に従って、プレイヤキャラクタが、火の玉がドラゴンの口の中で形成されている段階でドラゴンの口を目掛けて攻撃を加えると、通常の攻撃ヒットのギミックに代えて「火の玉がドラゴンの口の中で爆発し派手な爆発ギミックが表示される」といった特殊パターンの行動演出が実行される。なお、特殊パターンは、攻撃を受けたときに限らず、他のどのようなタイミングで出現することとされていてもよい。
図15は、行動パターン選択処理の例を示すフローチャートである。行動パターン選択処理は、表示画面51に表示されている各NPCの行動パターンを選択する処理であり、前回選択された行動パターンにもとづく行動が終了したときに実行される。
行動パターン選択処理において、制御部11は、先ず、バレットタイム制御の実行中であるか否かを、例えばバレットタイムフラグの設定状態によって確認する(ステップS801)。バレットタイム制御の実行中であれば、制御部11は、特殊行動選択条件が成立しているか否か判定する(ステップS802)。特殊行動選択条件は、特殊パターンにもとづく行動をNPCに実行させるか否かを決定するための条件であり、例えばバレットタイム制御中にプレイヤキャラクタから特定の攻撃を受けたり、バレットタイム発動時に乱数抽選を行わせる構成とし、その抽選結果や、ステップS802の判定時に表示されているNPCの種類などによって成立するか否かが決定される条件である。
特殊行動選択条件が成立していれば(ステップS802のY)、制御部11は、該当するキャラクタの行動パターンとして特殊パターンを選択する(ステップS803)。特殊パターンが複数ある場合には、例えば乱数抽選などによって一つの特殊パターンを選択する。特殊行動選択条件が成立していないか、バレットタイム制御の実行中でない場合には、制御部11は、特殊パターン以外の通常パターン(例えば攻撃パターン、静止パターンなど)のいずれかを選択する(ステップS804)。
そして、上記のようにして選択された行動パターンに従って、制御部11は、該当するノンプレイヤキャラクタに各種の行動を実行させる。
本例では、バレットタイム制御が開始されると、プレイヤキャラクタの行動速度はそのままで、ノンプレイヤキャラクの行動速度が低下する。例えば、非バレットタイム制御時にはプレイヤキャラクタによる対応が不可能な程度に高速であったノンプレイヤキャラクタの行動速度が、バレットタイム制御時にはプレイヤキャラクタによる対応が可能な程度まで低速化される。このような制御を行うことで、通常時(非バレットタイム制御時)は、極めて速い速度で飛行し極めて短時間しか画面上に登場しないためプレイヤキャラクタにより攻撃しHPを0にすることは不可能なNPC(例えば、鳥や飛行機などの敵キャラクタ)が、バレットタイム制御時には、飛行速度が低下して比較的長い時間画面上に現れるためプレイヤキャラクタにより攻撃しHPを0にすることが可能となる。また、通常時(非バレットタイム制御時)は、極めて速い速度で飛行するためプレイヤキャラクタが追っていくことは不可能なNPC(例えば、鳥や飛行機などのイベント誘引キャラクタ)が、バレットタイム制御時には、飛行速度が低下してプレイヤキャラクタが追っていくことが可能となる。
なお、「イベント誘引キャラクタ」とは、プレイヤキャラクタの行動を阻害することなく所定のイベントを誘引するキャラクタ(例えば、宝物のある場所に導いてくれるキャラクタ、追いかけて行くと所定の特典が付与されるキャラクタ)である。
すなわち、本例では、プレイヤキャラクタの戦闘場面であるときに限らず、プレイヤキャラクタの移動場面であるときなどであっても、プレイヤの操作にもとづくバレットタイム制御の実行指定を受け付ける。よって、バレットタイム制御の実行によってスローモーション表示される対象のノンプレイヤキャラクタは、プレイヤキャラクタの行動を積極的に阻害する敵キャラクタだけでなく、プレイヤキャラクタの行動を積極的には阻害しない中立キャラクタ(具体的には、プレイヤキャラクタから攻撃を仕掛けたときにのみ反撃してくるキャラクタなど)や、イベント誘引キャラクタなどを含む。
また、本例において、制御部11が、NPCの行動パターンを決定する際に、バレットタイム制御の実行中であるときには、行動パターン設定テーブルからバレットタイム制御時行動パターンを高確率あるいは常に選択するようにしてもよい。このように構成すれば、バレットタイム制御の実行中に、バレットタイム制御時行動パターンによる行動が高確率あるいは常に出現するようになり、バレットタイム制御時に効果的なゲーム状態とすることが可能となる。
以上に説明したように、上述した一実施の形態では、制御部11は、所定の時間経過に伴ってバレットタイム値(特殊制御ポイント)を所定の最大累積値まで加算し、バレットタイム値の累積値を表示装置50の表示画面51に表示し、プレイヤの操作にもとづくバレットタイム制御(特殊制御)の実行指定を受け付けたときに、バレットタイム値の累積値が所定の初期値を超える値であれば、プレイヤキャラクタの行動速度に対するノンプレイヤキャラクタの行動速度を遅くするバレットタイム制御を実行する構成としたので、戦闘場面等においてバラエティに富んだ制御を行うことができるようになるとともに、現実世界では実現不可能な映画のワンシーンのような非現実的な世界を表現することが可能となり、遊戯の興趣を向上させることができる。
すなわち、バレットメータ207cが満タンになるまで待つ必要がなくバレットメータ207cが少しでも充填されていれば、プレイヤの意図するタイミングでバレットタイム制御を実行させることができるようになり、どのタイミングでバレットタイム制御を開始するかといった新たな判断を必要とすることができるようになるため、ゲームにおける制御のバリエーションを増加させることが可能となり、バラエティに富んだ制御を行うことができるようになる。
具体的には、プレイヤが、例えば高速移動する敵キャラクタや、連続的に攻撃してくる敵キャラクタが出現した場合に、バレットタイム制御の開始指示を行い、高速移動する敵キャラクタに攻撃を加えるようにしたり、連続的な攻撃を防御することが可能となるように操作することができるようになる。このように、戦闘場面における遊戯方法に新たなバリエーションを持たせることが可能となる。
なお、バレットメータ207cが満タンであるときにのみ、バレットタイム制御を発動することが可能である構成としてもよい。
また、上述した実施の形態では、バレットタイム制御を開始したことに応じて、バレットタイム値を特定の時間経過に伴って所定の初期値まで減算していくこととし、バレットタイム値が減算されて初期値となったときにバレットタイム制御を終了する構成としたので、バレットタイム値が初期値となるまで、バレットタイム制御の実行状態とすることができ、バレットメータ207cを表示することとすれば、プレイヤにバレットタイム制御状態が終了するまでの残り時間を認識させることが可能となる。
また、上述した実施の形態では、制御部11が、プレイヤキャラクタの状態及びゲームの累積実行時間に基づき、バレットタイム値を加算するか否かの判断及びバレットタイム値の加算量を決定するので、バレットタイム値の加算速度を決定付けるパラメータが設定される。よって、プレイヤは、遊戯を攻略する手段を考慮する必要が増えるので、この構成は、遊戯に対するプレイヤの趣向性を向上させるものとなる。
また、上述した実施の形態において、制御プログラムの設定により、敵キャラクタがバレットタイム制御を実行指定するようにしてもよい。すなわち、敵キャラクタの特技の一つとしてバレットタイム制御指定を有するものとしてもよい。この場合、制御部11が、所定の特別制御発動条件が成立したとき(制御プログラムに設定されている条件が成立したとき:具体的には、敵キャラクタの動作制御において、敵キャラクタの特技の一つであるバレットタイム制御指定がなされたとき)に、プレイヤキャラクタの行動速度に対するノンプレイヤキャラクタの行動速度を速くする特別制御を実行するようにすればよい。
なお、上記の特別制御を実行可能とする場合に、敵キャラクタによるバレットタイム制御指定に基づきバレットタイム制御が実行されているか否か自体については、プレイヤが視覚的に判断できるようにしてもよい(例えば背景を変更する)し、プレイヤが視覚的に判断できないようにしてもよい。特に後者のようにすれば、プレイヤは、戦闘場面において、プレイヤキャラクタが防御しているときや待機しているときなどであっても、画面を注意深く観察し、敵キャラクタによるバレットタイム制御指定に基づきバレットタイム制御が実行されているか否かを見極める必要が出てくる(具体的には、敵キャラクタが一瞬動いただけなのにダメージを受けている場合などには、敵キャラクタの指定によるバレットタイム制御状態であることが把握できる)。このため、敵キャラクタの指定によるバレットタイム制御状態となっているか否かを見破るといった新たな面白味を加えることができるようになり、臨場感や緊張感が増すこととなって、遊戯の興趣を向上させることができるようになる。
なお、敵キャラクタによるバレットタイム制御指定に基づきバレットタイム制御が実行されているときにおける敵キャラクタからの攻撃に対しては、プレイヤキャラクタ側もバレットタイム制御を実行することとして応戦し回避することが可能であるため、バレットタイム制御の発動を応戦用として選択することができるようになり、さらに遊戯のバリエーションを増やすことが可能となり、遊戯の興趣をさらに向上させることが可能となる。
また、上述した一実施の形態では、ビデオゲーム装置本体10と表示装置50とが別体として構成されていたが、ビデオゲーム装置本体10に表示装置50を備える構成としてもよい。
また、上述した実施の形態では、RPGのゲーム制御について説明していたが、ガンアクションRPG等の同種のゲームに適用することができることは勿論であり、さらに他の種のゲームにも好適に適用することができる。
また、上述した実施の形態ではビデオゲーム装置100を例に説明したが、画像生成機能を備えた機器であれば、パーソナルコンピュータ、携帯電話端末、携帯用ゲーム機などの各種の機器に本発明を適用することができる。なお、携帯用ゲーム機などに適用する場合には、上述した記憶媒体70として、CD−ROMやDVD−ROMの替わりに半導体メモリーカードなどの小型の記憶媒体を用いるようにすればよい。
また、上述した実施の形態では、ビデオゲーム装置本体10に上述した各種の処理を実行させるためのゲーム用データ(ゲームに用いられる制御プログラムなどの各種のデータ)が記憶媒体70に格納されているものとしていたが、ゲーム用データは、WWWサーバなどのサーバ装置によって配信されるものであってもよい。この場合、ビデオゲーム装置本体10は、サーバ装置によって配信されるゲーム用データを通信ネットワーク80を介して取得してHDD13に格納し、ゲーム用データをHDD13からRAM12にロードして使用するようにすればよい。なお、上記の例ではゲーム用データとしていたが、少なくとも上述した実施の形態における画像生成処理をコンピュータに実行させるための制御プログラムを含むデータであればよい。