以下、本発明の好適な実施形態の一例について図面に基づき詳細に説明する。
図1は、本発明の実施形態に係るゲーム装置の構成を示す図である。同図に示すゲーム装置10は、家庭用ゲーム機11に情報記憶媒体たるDVD−ROM25及びメモリカード28が装着され、さらにモニタ18及びスピーカ22が接続されることによって構成される。例えば、モニタ18には家庭用テレビ受像機が用いられ、スピーカ22にはその内蔵スピーカが用いられる。
家庭用ゲーム機11は、バス12、マイクロプロセッサ14、画像処理部16、音声処理部20、DVD−ROM再生部24、主記憶26、入出力処理部30及びコントローラ32を含んで構成される公知のコンピュータゲームシステムである。コントローラ32以外の家庭用ゲーム機11の各構成要素は筐体内に収容される。
バス12はアドレス及びデータを家庭用ゲーム機11の各部でやり取りするためのものである。マイクロプロセッサ14、画像処理部16、主記憶26及び入出力処理部30は、バス12によって相互データ通信可能に接続される。
マイクロプロセッサ14は、図示しないROMに格納されるオペレーティングシステム、DVD−ROM25から読み出されるプログラムや、メモリカード28から読み出されるデータに基づいて、家庭用ゲーム機11の各部を制御する。主記憶26は、例えばRAMを含んで構成されるものであり、DVD−ROM25から読み出されたプログラムやメモリカード28から読み出されたデータが必要に応じて書き込まれる。主記憶26はマイクロプロセッサ14の作業用としても用いられる。
画像処理部16はVRAMを含んで構成されており、マイクロプロセッサ14から送られる画像データに基づいてVRAM上にゲーム画面を描画する。そして、その内容をビデオ信号に変換して所定のタイミングでモニタ18に出力する。
入出力処理部30は、マイクロプロセッサ14が音声処理部20、DVD−ROM再生部24、メモリカード28及びコントローラ32にアクセスするためのインタフェースである。入出力処理部30には、音声処理部20、DVD−ROM再生部24、メモリカード28及びコントローラ32が接続される。
音声処理部20はサウンドバッファを含んで構成されており、DVD−ROM25から読み出され、該サウンドバッファに記憶されたゲーム音楽、ゲーム効果音、メッセージ等の各種音声データを再生してスピーカ22から出力する。
DVD−ROM再生部24は、マイクロプロセッサ14からの指示に従ってDVD−ROM25に記録されたプログラムや各種データを読み取る。なお、ここではプログラムを家庭用ゲーム機11に供給するためにDVD−ROM25を用いることとするが、CD−ROMやROMカード等、他のあらゆる情報記憶媒体を用いるようにしてもよい。また、インターネット等のデータ通信網を介して遠隔地からプログラムを家庭用ゲーム機11に供給するようにしてもよい。
メモリカード28は、不揮発性メモリ(例えばEEPROM等)を含んで構成される。家庭用ゲーム機11はメモリカード28を装着するための複数のメモリカードスロットを備えており、複数のメモリカード28を同時に装着可能に構成されている。メモリカード28はこのメモリカードスロットに対して脱着可能に構成され、例えばセーブデータなどの各種ゲームデータを記憶させるために用いられる。
コントローラ32は、プレイヤが各種ゲーム操作の入力をするための汎用操作入力手段である。入出力処理部30は一定周期ごと(例えば1/60秒ごと)にコントローラ32の各部の状態をスキャンし、そのスキャン結果を表す操作信号をバス12を介してマイクロプロセッサ14に渡す。マイクロプロセッサ14は、その操作信号に基づいてプレイヤのゲーム操作を判定する。家庭用ゲーム機11は複数のコントローラ32を接続可能に構成されており、各コントローラ32から入力される操作信号に基づいて、マイクロプロセッサ14がゲーム制御を行うようになっている。
図2及び図3はコントローラ32の一例を示す図である。図2に示すように、コントローラ32には、表面32aの左側に方向ボタン群46及び左操作スティック40が設けられ、右側にボタン群44及び右操作スティック42が設けられている。また、図3に示すように、コントローラ32の奥側側面には、表面32a側左右にボタン50L,50Rがそれぞれ備えられており、裏面側左右にボタン52L,52Rがそれぞれ備えられている。また、コントローラ32の奥側側面にはコントローラケーブル48が備えられている。このコントローラケーブル48によってコントローラ32は家庭用ゲーム機11に接続される。
なお、以下では、図2に示すように、コントローラ32の筐体長手方向をX方向とし、このX方向に直交する方向をY方向として説明を進める。
左操作スティック40及び右操作スティック42は、コントローラ32の筐体表面32aに直立しており、この直立状態から全方位に所定角度だけ傾倒自在となっている。そして、左操作スティック40の姿勢(傾き状態)は、X方向及びY方向の傾き(姿勢データ(X,Y))として、それぞれ−127〜+127の数値で家庭用ゲーム機11に入力されるようになっている。具体的には、X=0は、左操作スティック40がX方向に傾いていないことを示す。また、X=+127は、左操作スティック40がX方向(図2において右方向)に限界まで倒れていることを示す。さらに、X=−127は、左操作スティック40がX方向と逆向き(図2において左方向)に限界まで倒れていることを示す。Y方向についても同様である。また、右操作スティック42についても左操作スティック40の場合と同様である。こうして、家庭用ゲーム機11では、左操作スティック40及び右操作スティック42の現在の傾き状態(姿勢)を把握できるようになっている。
以上の構成を有するゲーム装置10では、複数のゲームキャラクタを含んで構成される部隊同士がゲーム空間(仮想空間、オブジェクト空間)において戦闘を行うアクションゲームを提供する。このアクションゲームでは、プレイヤは操作対象の部隊をコントローラ32を用いて移動させ、ゲーム装置10によって指示される部隊との戦闘を行わせる。
図4は、ゲーム装置10の主記憶26に構築されるゲーム空間を示す図である。同図に示すように、このゲーム空間には、カーソルオブジェクト54(以下、カーソル54とする。)と、操作対象部隊56と、敵部隊62とが配置される。操作対象部隊56はプレイヤの操作対象たる部隊であり、主人公たるゲームキャラクタオブジェクト58(以下、主人公キャラクタ58とする。)と、その味方である複数のゲームキャラクタオブジェクト60(以下、味方キャラクタ60とする。)とを含んで構成される。敵部隊62は操作対象部隊56に対立する部隊であって、ゲーム装置10によって指示される部隊である。敵部隊62は、複数のゲームキャラクタオブジェクト64(以下、敵キャラクタ64とする。)を含んで構成される。カーソル54は主に操作対象部隊56に対する移動指示のために用いられるものであり、詳細については後述する。
モニタ18には、このゲーム空間を所与の視点から見た様子がゲーム画面として表示される。視点は例えば主人公キャラクタ58の位置に基づく位置に設定され、主人公キャラクタ58に従動するものである。プレイヤはゲーム画面を見ながら、コントローラ32を用いて操作対象部隊56に指示を与える。
このアクションゲームでは、主人公キャラクタ58に対する移動指示と、味方キャラクタ60群に対する移動指示とを、プレイヤが左操作スティック40を用いて好適に行うことができるようになっている。以下、この点について説明する。
このアクションゲームでは、ゲーム開始時にカーソル54と主人公キャラクタ58とが同じ位置に配置される。そして、プレイヤが左操作スティック40を所望の方向に傾けると、その方向に対応するゲーム空間の方向に、カーソル54と主人公キャラクタ58とが移動する。このとき、主人公キャラクタ58は左操作スティック40の傾きの大きさに基づいて決定される速さで移動し、カーソル54はその主人公キャラクタ58の速度よりも速い速度で移動する。また、プレイヤが左操作スティック40をはなすと、主人公キャラクタ58はその位置で止まるとともに、カーソル54は主人公キャラクタ58の位置に向けて移動を開始する。このように、カーソル54は、左操作スティック40が傾けられると、主人公キャラクタ58から離れていき、左操作スティック40がはなされると(左操作スティック40が直立状態になると)、主人公キャラクタ58のところまで戻ってくるようになっている。
また、このアクションゲームでは、プレイヤがコントローラ32の所定ボタンを押下すると、その時点におけるカーソル54の位置が味方キャラクタ60群の移動目標位置として設定される。移動目標位置が設定されると、味方キャラクタ60群はその移動目標位置に向けて移動を開始する。
このように、このアクションゲームでは、主人公キャラクタ58に対する移動指示と、味方キャラクタ60の移動目標位置を設定するためのカーソル54に対する移動指示とを、コントローラ32に対する一の操作(左操作スティック40に対する操作)で同時に行うことができるようになっている。また、味方キャラクタ60群の移動目標位置はカーソル54の位置に基づいて設定されるところ、カーソル54は主人公キャラクタ58よりも速い速度で移動するため、主人公キャラクタ58から離れた位置を味方キャラクタ60群の移動目標位置として設定できるようになっている。すなわち、このアクションゲームでは、プレイヤは左操作スティック40を操作することによって、主人公キャラクタ58に対する移動指示を行うとともに、主人公キャラクタ58の位置から離れた位置を味方キャラクタ60群の移動目標位置として指示できるようになっており、その結果として、主人公キャラクタ58及び味方キャラクタ60群に対する移動指示を好適に行うことができるようになっている。
ここで、ゲーム装置10において実現される機能ブロックについて説明する。図5は、ゲーム装置10において実現される機能ブロックのうち、本発明に関連するものを中心として示す図である。同図に示すように、ゲーム装置10は操作部66、操作判断部68、移動制御部70、記憶部72、表示部74を含んでいる。
これらの機能のうち、操作部66はコントローラ32及び入出力処理部30を主として構成される。記憶部72は主記憶26及びDVD−ROM25を主として構成される。表示部74はモニタ18を主として構成される。その他の機能はマイクロプロセッサ14を主として構成され、マイクロプロセッサ14によってプログラム(DVD−ROM25などのコンピュータによって読み取り可能な情報記憶媒体や通信ネットワークによってゲーム装置10に供給されるプログラム)が実行されることによって実現される。
記憶部72は、カーソル54の位置情報と、主人公キャラクタ58(主ゲームキャラクタ)、各味方キャラクタ60(従ゲームキャラクタ)の位置情報及び姿勢情報とを記憶する。カーソル54が指向性を有するような場合には、カーソル54の姿勢情報が記憶部72に記憶されるようにしてもよい。また、記憶部72には各敵キャラクタ64の位置情報及び姿勢情報が記憶されるようにしてもよい。ここで、位置情報は例えばゲーム空間における現在位置を示す情報である。また、姿勢情報は例えばゲーム空間における姿勢(向きなど)を示す情報である。
操作部66は、各操作部材の操作状態を表す操作信号を出力する。操作信号には、例えば左操作スティック40の傾き状態を表す姿勢データ(X,Y)が含まれる。
操作判断部68(移動指示判断手段)は、操作部66から入力される操作信号に基づいて、操作部66に対して移動指示操作がなされたか否かを判断する。ここで、移動指示操作とは少なくとも移動方向を指示する操作であり、例えば移動方向とともに移動の速さを指示する操作である。
移動指示操作は、例えば左操作スティック40を用いて行われる。この場合、左操作スティック40の姿勢によって、移動方向や移動の速さが指示される。より具体的には、左操作スティック40の傾き方向によって移動方向が指示され、左操作スティック40の傾きの大きさによって移動の速さが指示される。
この場合、操作判断部68は、左操作スティック40の姿勢データ(X,Y)に基づいて、移動指示操作が行われたか否かを判断する。例えば、操作判断部68は、左操作スティック40の姿勢データ(X,Y)に基づいて、左操作スティック40の傾きの大きさを示す数値(以下、傾き値とする。)を取得する。左操作スティック40の傾き値は、例えば((X2+Y2)1/2)/127の算出式に基づいて算出される0.0〜1.0の数値であり、左操作スティック40がいずれの方向にも傾けられていない状態(直立状態)では0.0となり、いずれかの方向に最も傾けられた状態では1.0となる。操作判断部68は、例えば左操作スティック40の傾き値が所定の基準値以上である場合、移動指示操作がなされたと判断し、左操作スティック40の傾き値が該基準値未満である場合、移動指示操作がなされていないと判断する。なお以下では、該基準値を「0.1」として説明する。また、左操作スティック40の傾き値が「0.1未満」となる状態をニュートラル状態と呼ぶ。
ここでは、移動指示操作が左操作スティック40を用いて行われることとして説明するが、移動指示操作は例えば方向ボタン群46を用いて行われるようにしてもよい。この場合、方向ボタン群46に対する押下状態によって、移動方向や移動の速さが指示されるようにしてもよい。より具体的には、押下される方向ボタンの種類によって移動方向が指示され、その方向ボタンに対する押圧力(操作量)によって移動の速さが指示されるようにしてもよい。この場合、操作判断部68は、操作部66から入力される操作信号に基づいて、方向ボタン群46が押下されているか否かを判断し、移動指示操作がなされたか否かを判断するようにしてもよい。例えば、方向ボタン群46の少なくとも一が押下されている場合には、移動指示操作がなされていると判断し、いずれの方向ボタン群46も押下されていない場合には、移動指示操作がなされていないと判断する。
また、操作判断部68(移動目標設定指示判断手段)は、移動目標設定指示操作や移動目標解除指示操作がなされたか否かを判断する。移動目標設定指示操作や移動目標解除指示操作は、例えばコントローラ32の所定の操作部材(例えば、ボタン群44のうちの所定ボタン)を用いて行われる。この場合、操作判断部68は、操作部66から入力される操作信号に基づいて、所定の操作部材が操作されたか否か(例えば、所定ボタンが押下されたか否か)を判断することによって、移動目標設定指示操作や移動目標解除指示操作がなされたか否かを判断する。なお、移動目標設定指示操作と移動目標解除指示操作とは同じ操作であってもよいし、異なる操作であってもよい。すなわち、これらの操作は同じ操作部材を用いて行われるようにしてもよいし、異なる操作部材を用いて行われるようにしてもよい。
移動制御部70は、操作判断部68の判断結果に応じて、カーソル54や主人公キャラクタ58を移動させる。
例えば、操作部66に対して移動指示操作がなされたと操作判断部68によって判断された場合、移動制御部70は該移動指示操作によって指示される移動方向に主人公キャラクタ58(第1操作対象)を移動させるとともに、該移動指示操作によって指示される移動方向にカーソル54(第2操作対象)を移動させる。このとき、移動制御部70は、カーソル54を主人公キャラクタ58の移動速度よりも速い速度で移動させる。
移動制御部70は、例えば移動指示操作が左操作スティック40を用いてなされる場合、主人公キャラクタ58の移動方向及び移動速度と、カーソル54の移動方向及び移動速度とを、左操作スティック40の傾き状態に基づいて決定する。
この場合、移動制御部70は、主人公キャラクタ58及びカーソル54の移動方向を、左操作スティック40の傾き方向に基づいて決定する。より詳しくは、左操作スティック40の姿勢データ(X,Y)に基づいて左操作スティック40の傾き方向を特定し、該傾き方向に対応するゲーム空間の方向を、主人公キャラクタ58及びカーソル54の移動方向として決定する。
また、移動制御部70は、主人公キャラクタ58の移動速度を、左操作スティック40の傾きの大きさに基づいて決定する。例えば、移動制御部70は、左操作スティック40の傾き値に対する条件に対応づけて、所定の係数(以下、主人公キャラクタ速度係数とする。)を記憶する。そして、移動制御部70は左操作スティック40の傾き値を取得し、その傾き値に対応する主人公キャラクタ速度係数に基づいて、主人公キャラクタ58の移動速度を決定する。なお、主人公キャラクタ速度係数は、左操作スティック40の傾きが大きくなると、主人公キャラクタ58がより速く移動することとなるように設定される。以下では、左操作スティック40の傾き値が「0.1以上0.5未満」の場合の主人公キャラクタ移動係数が「1.0」と設定され、「0.5以上」の場合の主人公キャラクタ移動係数が「2.5」と設定されていることとして説明する。
なお、左操作スティック40の傾き値が「0.1以上0.5未満」の場合、移動制御部70は主人公キャラクタ58を歩行の態様で移動させる。また、左操作スティック40の傾き値が「0.5以上」の場合、主人公キャラクタ58を走行の態様で移動させる。以下では、左操作スティック40の傾き値が「0.1以上0.5未満」の状態を歩行指示状態と呼び、左操作スティック40の傾き値が「0.5以上」の状態を走行指示状態と呼ぶ。
また、移動制御部70は、カーソル54の移動速度を、左操作スティック40の傾きの大きさに基づいて決定する。このとき、移動制御部70は、主人公キャラクタ58の移動速度よりも速い速度となるように、カーソル54の移動速度を決定する。例えば、移動制御部70は、左操作スティック40の傾きの大きさに基づいて決定された主人公キャラクタ58の移動速度に基づいて、カーソル54の移動速度を決定する。より具体的には、主人公キャラクタ58の移動速度に、1より大きい値を有する所定の係数(以下、カーソル速度係数とする。)を乗じることにより、カーソル54の移動速度を算出する。以下では、カーソル速度係数が「1.5」と設定されていることとして説明する。
一方、操作部66に対して移動指示操作がなされなかったと操作判断部68によって判断された場合、移動制御部70は主人公キャラクタ58の移動を制限する。より具体的には、主人公キャラクタ58を移動させないようにする。この場合、移動制御部70は、カーソル54を主人公キャラクタ58の位置に向けて移動させる。すなわち、移動制御部70は、カーソル54の現在位置から主人公キャラクタ58の現在位置に向けての方向を、カーソル54の移動方向として決定する。このとき、移動制御部70は、移動指示操作がなされた場合のカーソル54の移動速度よりも速い速度で、カーソル54を移動させる。
移動制御部70は、主人公キャラクタ58とカーソル54との間の距離に基づいて、カーソル54の移動を制限するようにしてもよい。例えば、カーソル54と主人公キャラクタ58とが所定距離以上離れないように、カーソル54の移動を制限するようにしてもよい。ここで、「カーソル54の移動を制限する」とは、例えばカーソル54の移動を禁止したり、カーソル54の移動可能範囲を制限したりすることをいう。
移動制御部70は、操作部66に対して移動目標設定指示操作がなされたと操作判断部68によって判断された場合、カーソル54の位置に基づく移動目標位置を記憶部72に記憶させる。そして、移動制御部70は、記憶部72に記憶される移動目標位置に向けて、味方キャラクタ60を移動させる。なお、移動制御部70は、主人公キャラクタ58の位置に基づいて、味方キャラクタ60の移動を制限するようにしてもよい。例えば、主人公キャラクタ58の位置に基づく領域外に位置する味方キャラクタ60については、該領域内に戻るような方向を、その味方キャラクタ60の移動方向として決定するようにしてもよい。
移動制御部70は、操作部66に対して移動目標解除指示操作がなされたと操作判断部68によって判断された場合、移動目標位置に向けての味方キャラクタ60の移動を停止する。また、記憶部72に記憶される移動目標位置が無効となるように、記憶部72の記憶内容を更新する。
移動制御部70は、以上のようにして決定したカーソル54、主人公キャラクタ58、味方キャラクタ60の移動方向及び移動速度に基づいて、記憶部72に記憶されるカーソル54の位置情報と、主人公キャラクタ58、味方キャラクタ60の位置情報及び姿勢情報とを更新する。そして、敵キャラクタ64及びその他のオブジェクトとともに、カーソル54、主人公キャラクタ58、味方キャラクタ60が記憶部72の記憶内容に従って配置されたゲーム空間を所与の視点から見た様子を示すゲーム画面を、表示部74に表示させる。
なお、記憶部72に移動目標位置が記憶されている場合、ゲーム空間の移動目標位置に所定の移動目標案内オブジェクトが配置されるようにしてもよい。こうすれば、プレイヤは移動目標位置を容易に把握できるようになる。また、視点位置及び視線方向は、カーソル54及び主人公キャラクタ58の位置に基づいて決定されるようにしてもよい。例えば、カーソル54及び主人公キャラクタ58がゲーム画面に表示されるように、視点位置及び視線方向が決定されるようにしてもよい。こうすれば、プレイヤはカーソル54及び主人公キャラクタ58の位置を好適に確認することができるようになる。
ここで、ゲーム装置10において所定時間(例えば1/60秒)ごとに実行されるゲーム処理について説明する。図6及び図7は、ゲーム処理のうち本発明に関連するものについて示すフロー図である。ゲーム処理は、DVD−ROM25等のコンピュータにより読み取り可能な情報記憶媒体や通信ネットワークによって供給されるプログラムがゲーム装置10によって実行されることによって実現される。
同図に示すように、この処理では、まず操作判断部68が左操作スティック40の傾き状態を取得する(S101)。操作判断部68は、操作部66から入力される操作信号に基づいて、左操作スティック40の姿勢データ(X,Y)を取得する。また、操作判断部68は、左操作スティック40の傾き値をこの姿勢データ(X,Y)に基づいて算出する。
次に、操作判断部68は、左操作スティック40がニュートラル状態にあるか否かを判断する(S102)。すなわち、操作判断部68は、移動指示操作がなされたか否かを判断する。操作判断部68は、S101で取得した左操作スティック40の傾き値が「0.1未満」であるか否かを判断する。左操作スティック40の傾き値が0.1未満である場合、操作判断部68は左操作スティック40がニュートラル状態にあると判断する。
操作判断部68は、左操作スティック40がニュートラルの状態にないと判断した場合、左操作スティック40の状態が歩行指示状態であるか否かを判断する(S103)。操作判断部68は、S101で取得した左操作スティック40の傾き値が「0.1以上0.5未満」であるか否かを判断する。左操作スティック40の傾き値が「0.1以上0.5未満」である場合、操作判断部68は左操作スティック40が歩行指示状態にあると判断する。
左操作スティック40が歩行指示状態にあると判断された場合、移動制御部70は、歩行時の主人公キャラクタ速度係数の値を取得する(S104)。すなわち、記憶部72に記憶される歩行時の主人公キャラクタ速度係数の値(1.0)を参照する。また一方、左操作スティック40が歩行指示状態にないと判断された場合、移動制御部70は、左操作スティック40が走行指示状態にあると判断し、走行時の主人公キャラクタ速度係数の値を取得する(S105)。すなわち、記憶部72に記憶される走行時の主人公キャラクタ速度係数の値(2.5)を参照する。
次に、移動制御部70は、主人公キャラクタ58の移動力パラメータの値を取得する(S106)。移動制御部70は、記憶部72にあらかじめ記憶される主人公キャラクタ58の移動力パラメータの値を参照する。
そして、移動制御部70は、主人公キャラクタ58の移動方向及び速度を算出する(S107)。移動制御部70は、S101で取得した姿勢データ(X,Y)に基づいて、左操作スティック40の傾き方向を特定する。そして、その左操作スティック40の傾き方向に対応するゲーム空間の方向を主人公キャラクタ58の移動方向として決定する。また、移動制御部70は、S104又はS105で読み出した主人公キャラクタ速度係数の値を、S106で読み出した移動力パラメータの値に乗じることによって得られる値を、主人公キャラクタ58の移動速度として決定する。
移動制御部70は、主人公キャラクタ58の移動方向及び速度を算出したら、主人公キャラクタ58の位置情報及び姿勢情報を更新する(S108)。移動制御部70は、主人公キャラクタ58の移動先位置とその位置における姿勢とを、主人公キャラクタ58の現在の位置及び姿勢と、S107で算出した移動方向及び移動速度とに基づいて算出する。例えば、移動制御部70は、主人公キャラクタ58の現在位置から、S107で決定した移動方向に、S107で決定した移動速度に基づく距離だけ移動した位置を、主人公キャラクタ58の移動先位置とする。また例えば、移動制御部70は、S103の判断結果に応じて、歩行用又は走行用のモーションデータを記憶部72(DVD−ROM25)から読み出し、そのモーションデータ、主人公キャラクタ58の現在の姿勢や、主人公キャラクタ58の移動距離などに基づいて、主人公キャラクタ58の移動先位置での姿勢を算出する。そして、移動制御部70は、この移動先位置及び姿勢を示すように、記憶部72に記憶される主人公キャラクタ58の位置情報及び姿勢情報を更新する。
なお、このステップでは、主人公キャラクタ58に対する攻撃指示操作が行われたか否かを判断し、その判断結果に応じて読み出される攻撃用のモーションデータに基づいて、主人公キャラクタ58の姿勢が決定されるようにしてもよい。
移動制御部70は、主人公キャラクタ58の位置情報及び姿勢情報の更新を完了したら、カーソル54の位置情報を更新するための処理を開始する。この処理では、まず移動制御部70がカーソル速度係数の値を取得する(S109)。すなわち、記憶部72にあらかじめ記憶されるカーソル速度係数の値(1.5)を参照する。
次に、移動制御部70は、カーソル54の移動方向及び速度を算出する(S110)。移動制御部70は、S101で取得した姿勢データ(X,Y)に基づいて、左操作スティック40の傾き方向を特定する。そして、その左操作スティック40の傾き方向に対応するゲーム空間の方向をカーソル54の移動方向として決定する。また、移動制御部70は、例えばS107において算出した主人公キャラクタ58の移動速度に、S109において取得したカーソル速度係数の値(1.5)と、S101において取得した左操作スティック40の傾き値とを乗じることによって得られる値を、カーソル54の移動速度として決定する。
一方、S102において左操作スティック40がニュートラル状態にあると判断された場合、移動制御部70は、その場合のカーソル54の移動方向及び速度を算出する(S111)。この場合、移動制御部70は、カーソル54の現在位置から主人公キャラクタ58の現在位置に向かう方向を、カーソル54の移動方向として決定する。また、移動制御部70は、この場合のカーソル54の移動速度を取得する。この場合のカーソル54の移動速度は例えば記憶部72にあらかじめ記憶されており、その値は例えば主人公キャラクタ58の移動力パラメータの値と、走行時の主人公キャラクタ速度係数の値(2.5)と、カーソル速度係数よりも大きい値を有する所定の係数(例えば、2.0)とを乗じることによって得られる値となっている。すなわち、左操作スティック40が歩行指示状態又は走行指示状態にある場合のカーソル54の移動速度よりも速くなるような速度が、左操作スティック40がニュートラル状態にある場合のカーソル54の移動速度として記憶部72には記憶されている。移動制御部70は、かかる移動速度の値を参照する。
移動制御部70はカーソル54の移動方向及び速度を算出したら(S110,S111)、カーソル54の位置情報を更新する(S112)。移動制御部70は、カーソル54の移動先位置を、カーソル54の現在位置と、S110又はS111において算出した移動方向及び速度とに基づいて算出する。移動制御部70は、例えばカーソル54の現在位置から、S111において算出した移動方向に、S111で算出した移動速度に基づく距離だけ移動した位置を、カーソル54の移動先位置として決定する。このとき、その移動先位置が主人公キャラクタ58の位置から所定距離以内の領域に含まれない場合には、カーソル54の現在位置から該移動先位置までの直線と、主人公キャラクタ58の位置から所定距離内の領域の境界線とが交わる点をカーソル54の移動先位置として決定する。そして、移動制御部70は、この移動先位置を示すように、記憶部72に記憶されるカーソル54の位置情報を更新する。
カーソル54の位置情報の更新が完了すると、味方キャラクタ60群の位置情報及び姿勢情報を更新するための処理が開始される。この処理では、まず移動制御部70が移動目標設定フラグの値が「1」であるか否かを判断する(S113)。移動目標設定フラグは、味方キャラクタ60群の移動目標位置が設定されている状態であるか否かを示す情報であり、記憶部72に記憶される。例えば、味方キャラクタ60群の移動目標位置が設定されている場合、移動目標設定フラグの値は「1」となり、味方キャラクタ60群の移動目標が設定されていない場合、移動目標設定フラグの値は「0」となる。
移動目標設定フラグの値が「1」でないと判断された場合、操作判断部68は移動目標設定操作がなされたか否かを判断する(S118)。この判断は、操作部66から入力される操作信号に基づいて行われる。移動目標設定操作がなされていないと判断された場合には、味方キャラクタ60群の位置情報及び姿勢情報の更新が行われることなく、S121の処理が実行される。
移動目標設定操作がなされたと判断された場合、移動制御部70はその時点におけるカーソル54の位置を移動目標位置として記憶部72に記憶させる(S119)。また、移動制御部70は移動目標設定フラグの値を「1」に更新する(S120)。
一方、S113において移動目標設定フラグの値が「1」であると判断された場合、操作判断部68は移動目標解除操作が行われたか否かを判断する(S114)。このステップにおいて移動目標解除操作がなされていないと判断された場合、又はS120において移動目標設定フラグの値が「1」に更新された場合、移動制御部70は各味方キャラクタ60の位置情報及び姿勢情報を更新する(S116)。
このステップでは、例えば次のようにして、各味方キャラクタ60の移動方向及び速度が算出され、各味方キャラクタ60の位置情報及び姿勢情報が更新される。各味方キャラクタ60の移動方向は、例えばその味方キャラクタ60の位置と、記憶部72に記憶される移動目標位置とに基づいて算出される。また、各味方キャラクタ60の移動速度は、例えばその味方キャラクタ60の移動力パラメータに基づいて算出される。そして、各味方キャラクタ60の移動先位置は、その味方キャラクタ60の現在位置から、その味方キャラクタ60について算出された移動方向に、その味方キャラクタ60について算出された移動速度に基づく距離だけ移動した位置とされる。また、各味方キャラクタ60の移動先位置における姿勢は、その味方キャラクタ60のモーションデータ、その味方キャラクタ60の現在の姿勢などに基づいて決定される。移動制御部70は、各味方キャラクタ60の位置情報及び姿勢情報を、その味方キャラクタ60について算出した移動先位置及び姿勢を示すように更新する。
なお、味方キャラクタ60の移動先位置や姿勢は、主人公キャラクタ58の位置にさらに基づいて決定されるようにしてもよい。例えば、主人公キャラクタ58の位置から所定距離以内の範囲に位置していない味方キャラクタ60については、該範囲内に向けて移動するように、その味方キャラクタ60の移動方向を決定するようにしてもよい。或いは、主人公キャラクタ58の位置から所定距離以内の範囲から出ることがないように、味方キャラクタ60の移動先位置を決定するようにしてもよい。
また、味方キャラクタ60の移動先位置や姿勢は、敵キャラクタ64の位置にさらに基づいて決定されるようにしてもよい。例えば、味方キャラクタ60の位置から所定距離以内の領域に敵キャラクタ64が存在する場合には、その敵キャラクタ64に対する攻撃を行うように、その味方キャラクタ60の位置や姿勢を更新するようにしてもよい。
また、移動目標位置が設定されていない場合であっても、味方キャラクタ60の位置から所定距離以内の領域に敵キャラクタ64が存在する場合には、その敵キャラクタ64に対する攻撃を行うように、その味方キャラクタ60の位置や姿勢を更新するようにしてもよい。
移動制御部70は味方キャラクタ60の位置情報及び姿勢情報を更新したら、味方キャラクタ60の位置情報及び姿勢情報が移動完了条件を満足するか否かを判断する(S117)。移動完了条件は、移動目標位置に基づく領域(例えば、移動目標位置から所定距離内の領域)に全部又は一部(所定数)の味方キャラクタ60が位置しているか否かの条件としてもよいし、かかる領域に特定の味方キャラクタ60が位置しているか否かの条件としてもよい。
このステップで移動完了条件が満足されたと判断された場合、又はS114において移動目標解除操作が行われたと判断された場合、移動制御部70は移動目標設定フラグを「0」に更新する(S115)。このとき、移動制御部70は、移動目標位置に関する記憶部72の記憶内容をクリアするようにしてもよい。
味方キャラクタ60群の位置情報等の更新及びそれに伴う処理が完了すると、移動制御部70は、各敵キャラクタ64の位置情報及び姿勢情報を更新する(S121)。各敵キャラクタ64の位置情報及び姿勢情報は、各敵キャラクタ64の現在位置及び姿勢に基づき、所定のアルゴリズムに従って更新される。
なお、敵キャラクタ64の移動先位置や姿勢は、主人公キャラクタ58や味方キャラクタ60の位置に基づいて決定されるようにしてもよい。例えば、敵キャラクタ64の位置から所定距離以内の領域に主人公キャラクタ58や味方キャラクタ60が存在する場合には、その主人公キャラクタ58や味方キャラクタ60に対する攻撃を行うように、その敵キャラクタ64の位置や姿勢を更新するようにしてもよい。
次に、移動制御部70は、カーソル54、主人公キャラクタ58、味方キャラクタ60、敵キャラクタ64が各々の位置情報に基づく位置に、各々の姿勢情報に基づく姿勢で配置されたゲーム空間を所与の視点から見た様子を表す画像を主とするゲーム画像を、VRAM上に生成する(S122)。このとき、移動制御部70は、ゲーム画像にカーソル54及び主人公キャラクタ58が含まれるように、視点位置及び視線方向を決定するようにしてもよい。VRAM上に形成されたゲーム画像は、所定のタイミングでモニタ18に出力される。こうして、モニタ18にはゲーム画面が表示され、カーソル54や主人公キャラクタ58が左操作スティック40の操作に応じてゲーム空間を移動する様子が表示される。
以上説明したように、ゲーム装置10では、プレイヤは、複数の味方キャラクタ60の移動目標位置を指定するために用いるカーソル54と、主人公キャラクタ58と、を左操作スティック40を用いた一の移動指示操作で同時に移動させることができるようになるとともに、主人公キャラクタ58の位置とは異なる位置にカーソル54を移動させ、味方キャラクタ60の移動目標位置として設定できるようになっている。その結果として、ゲーム装置10によれば、主人公キャラクタ58と複数の味方キャラクタ60とに対する移動指示をプレイヤが好適に行うことができるようになっている。
なお、本発明は以上説明した実施の形態に限定されるものではない。
例えば、以上ではゲーム装置10が家庭用ゲーム機11によって実現されることとして説明したが、携帯用ゲーム機、業務用ゲーム機、携帯電話機、携帯情報端末(PDA)やパーソナルコンピュータなどの他のコンピュータによって実現されるようにしてもよい。
また例えば、以上では本発明を3次元アクションゲームに適用した例について説明したが、本発明はアクションゲーム以外のゲームにも適用できるものであり、また3次元のゲームだけではなく、2次元のゲームにも適用できるものである。
さらに例えば、以上ではプログラムを情報記憶媒体たるDVD−ROM25から家庭用ゲーム機11に供給するようにしたが、通信ネットワークを介してプログラムを家庭用ゲーム機11等に配信するようにしてもよい。図8は、通信ネットワークを用いたプログラム配信システムの全体構成を示す図である。同図に基づいて本発明に係るプログラム配信方法を説明する。同図に示すように、このプログラム配信システム100は、ゲームデータベース102、サーバ104、通信ネットワーク106、パソコン108、家庭用ゲーム機110、PDA(携帯情報端末)112を含んでいる。このうち、ゲームデータベース102とサーバ104とによりプログラム配信装置114が構成される。通信ネットワーク106は、例えばインターネットやケーブルテレビネットワークを含んで構成されている。このシステムでは、ゲームデータベース(情報記憶媒体)102に、DVD−ROM25の記憶内容と同様のプログラムが記憶されている。そして、パソコン108、家庭用ゲーム機110又はPDA112等を用いて需要者がゲーム配信要求をすることにより、それが通信ネットワーク106を介してサーバ104に伝えられる。そして、サーバ104はゲーム配信要求に応じてゲームデータベース102からプログラムを読み出し、それをパソコン108、家庭用ゲーム機110、PDA112等、ゲーム配信要求元に送信する。ここではゲーム配信要求に応じてゲーム配信するようにしたが、サーバ104から一方的に送信するようにしてもよい。また、必ずしも一度にゲームの実現に必要な全てのプログラムを配信(一括配信)する必要はなく、ゲームの局面に応じて必要な部分を配信(分割配信)するようにしてもよい。このように通信ネットワーク106を介してゲーム配信するようにすれば、プログラムを需要者は容易に入手することができるようになる。
10 ゲーム装置、11,110 家庭用ゲーム機、12 バス、14 マイクロプロセッサ、16 画像処理部、18 モニタ、20 音声処理部、22 スピーカ、24 DVD−ROM再生部、25 DVD−ROM、26 主記憶、28 メモリカード、30 入出力処理部、32 コントローラ、32a 表面、40 左操作スティック、42 右操作スティック、44 ボタン群、46 方向ボタン群、48 コントローラケーブル、50R,50L,52R,52L ボタン、54 カーソル、56 操作対象部隊、58 主人公キャラクタ、60 味方キャラクタ、62 敵部隊、64 敵キャラクタ、66 操作部、68 操作判断部、70 移動制御部、72 記憶部、74 表示部、100 プログラム配信システム、102 ゲームデータベース、104 サーバ、106 通信ネットワーク、108 パソコン、112 携帯情報端末(PDA)、114 プログラム配信装置。