以下、本発明の一実施の形態によるゲーム装置について図面を参照しながら説明する。図1は、本発明の一実施の形態のゲーム装置の構成を示すブロック図である。なお、以下の説明では、ゲーム装置の一例として家庭用ビデオゲーム機を家庭用テレビジョンに接続することによって構成される家庭用ビデオゲーム装置について説明するが、本発明はこの例に特に限定されず、モニタが一体に構成された携帯用のゲーム装置若しくは携帯電話、又は本発明によるゲーム制御プログラムを実行することによってゲーム装置として機能するパーソナルコンピュータ等にも同様に適用することができる。
図1に示すゲーム装置は家庭用ゲーム機100及びテレビジョン200を備える。家庭用ゲーム機100には、ゲームプログラムが記録されたコンピュータ読み出し可能な記録媒体300が装填され、ゲームプログラムが適宜読み出されてゲームが実行される。
家庭用ゲーム機100は、CPU(Central Processing Unit)1、バスライン2、グラフィックスデータ生成プロセッサ3、インターフェース回路(I/F)4、メインメモリ5、ROM(Read Only Memory)6、伸張回路7、パラレルポート8、シリアルポート9、描画プロセッサ10、音声プロセッサ11、デコーダ12、インターフェース回路(I/F)13、バッファ14〜16、記録媒体ドライブ17、メモリ18、及びコントローラ19を含む。テレビジョン200はテレビジョンモニタ21、増幅回路22及びスピーカ23を含む。
CPU1はバスライン2およびグラフィックスデータ生成プロセッサ3に接続されている。バスライン2はアドレスバス、データバス及びコントロールバス等を含み、CPU1、インターフェース回路4、メインメモリ5、ROM6、伸張回路7、パラレルポート8、シリアルポート9、描画プロセッサ10、音声プロセッサ11、デコーダ12及びインターフェース回路13を相互に接続している。
描画プロセッサ10はバッファ14に接続される。音声プロセッサ11はバッファ15及び増幅回路22に接続される。デコーダ12はバッファ16及び記録媒体ドライブ17に接続される。インターフェース回路13はメモリ18及びコントローラ19に接続される。
テレビジョン200のテレビジョンモニタ21は描画プロセッサ10に接続される。スピーカ23は増幅回路22に接続される。
また、ゲーム装置がパーソナルコンピュータやワークステーション等を核として構成されている場合、テレビジョンモニタ21等はコンピュータ用のディスプレイに対応する。また、伸張回路7、描画プロセッサ10、及び音声プロセッサ11等は、それぞれ記録媒体300に記録されているゲーム制御プログラムのデータの一部又はコンピュータの拡張スロットに搭載される拡張ボード上のハードウエアに対応する。また、インターフェース回路4、パラレルポート8、シリアルポート9、及びインターフェース回路13は、コンピュータの拡張スロットに搭載される拡張ボード上のハードウエアに対応する。また、バッファ14〜16はそれぞれメインメモリ5又は拡張メモリの各記憶エリアに対応する。
次に、図1に示す各構成要素について説明する。グラフィックスデータ生成プロセッサ3はCPU1のいわばコプロセッサとしての役割を果たす。すなわち、グラフィックスデータ生成プロセッサ3は座標変換や光源計算、例えば固定小数点形式の行列やベクトルの演算を並列処理によって行う。
グラフィックスデータ生成プロセッサ3が行う主な処理としては、CPU1から供給される画像データの2次元又は3次元空間内における各頂点の座標データ、移動量データ、及び回転量データ等に基づいて、所定の表示エリア上における処理対象画像のアドレスデータを求めてCPU1に返す処理、仮想的に設定された光源からの距離に応じて画像の輝度を計算する処理等がある。
インターフェース回路4は周辺デバイス、例えばマウスやトラックボール等のポインティングデバイス等のインターフェース用に用いられる。メインメモリ5はRAM(Random Access Memory)等で構成される。ROM6にはゲーム装置のオペレーティングシステムとなるプログラムデータが記憶されている。
伸張回路7は動画に対するMPEG(Moving Picture Experts Group)規格や静止画に対するJPEG(Joint Photographic Experts Group)規格に準拠したイントラ符号化によって圧縮された圧縮画像に対して伸張処理を施す。伸張処理はデコード処理(VLC:Variable Length Codeによってエンコードされたデータのデコード)、逆量子化処理、IDCT(Inverse Discrete Cosine Transform)処理、イントラ画像の復元処理等を含む。
描画プロセッサ10は所定時間T(例えば、1フレームでT=1/60秒)ごとにCPU1が発行する描画命令に基づいてバッファ14に対する描画処理を行う。
バッファ14は例えばRAMで構成され、表示エリア(フレームバッファ)と非表示エリアとに分けられる。表示エリアはテレビジョンモニタ21の表示面上に表示する画像データの展開エリアで構成される。非表示エリアはスケルトンを定義するデータ、ポリゴンを定義するモデルデータ、モデルに動きを行わせるアニメーションデータ、各アニメーションの内容を示すパターンデータ、テクスチャデータ及びカラーパレットデータ等の記憶エリアで構成される。
ここで、テクスチャデータは2次元の画像データである。カラーパレットデータはテクスチャデータ等の色を指定するためのデータである。記録媒体300から一度に又はゲームの進行状況に応じて複数回に分けて、CPU1はこれらのデータを予めバッファ14の非表示エリアに記録する。
また、描画命令としては、ポリゴンを用いて立体的な画像を描画するための描画命令、通常の2次元画像を描画するための描画命令がある。ここで、ポリゴンは多角形の2次元仮想図形であり、例えば、三角形や四角形が用いられる。
ポリゴンを用いて立体的な画像を描画するための描画命令は、ポリゴン頂点座標データのバッファ14の表示エリア上における記憶位置を示すポリゴン頂点アドレスデータ、ポリゴンに貼り付けるテクスチャのバッファ14上における記憶位置を示すテクスチャアドレスデータ、テクスチャの色を示すカラーパレットデータのバッファ14上における記憶位置を示すカラーパレットアドレスデータ及びテクスチャの輝度を示す輝度データのそれぞれに対して行われるものである。
上記のデータのうち表示エリア上のポリゴン頂点アドレスデータは、グラフィックスデータ生成プロセッサ3がCPU1からの3次元空間上におけるポリゴン頂点座標データを移動量データ及び回転量データに基づいて座標変換することによって2次元上でのポリゴン頂点座標データに置換されたものである。輝度データはCPU1からの上記座標変換後のポリゴン頂点座標データによって示される位置から仮想的に配置された光源までの距離に基づいてグラフィックスデータ生成プロセッサ3によって決定される。
ポリゴン頂点アドレスデータはバッファ14の表示エリア上のアドレスを示す。描画プロセッサ10は3個のポリゴン頂点アドレスデータで示されるバッファ14の表示エリアの範囲に対応するテクスチャデータを書き込む処理を行う。
ゲーム空間内におけるキャラクタ等の物体は、複数のポリゴンで構成される。CPU1は各ポリゴンの3次元空間上の座標データを対応するスケルトンのベクトルデータと関連させてバッファ14に記憶する。そして、後述するコントローラ19の操作によって、テレビジョンモニタ21の表示画面上でキャラクタを移動させる等の場合において、キャラクタの動きを表現したり、キャラクタを見ている視点位置を変えたりするときに、以下の処理が行われる。
すなわち、CPU1はグラフィックスデータ生成プロセッサ3に対してバッファ14の非表示エリア内に保持している各ポリゴンの頂点の3次元座標データと、スケルトンの座標及びその回転量のデータから求められた各ポリゴンの移動量データ及び回転量データとを与える。
グラフィックスデータ生成プロセッサ3は各ポリゴンの頂点の3次元座標データと各ポリゴンの移動量データ及び回転量データとに基づいて各ポリゴンの移動後及び回転後の3次元座標データを順次求める。
このようにして求められた各ポリゴンの3次元座標データのうち水平及び垂直方向の座標データは、バッファ14の表示エリア上のアドレスデータ、すなわちポリゴン頂点アドレスデータとして描画プロセッサ10に供給される。
描画プロセッサ10は3個のポリゴン頂点アドレスデータによって示されるバッファ14の表示エリア上に予め割り当てられているテクスチャアドレスデータによって示されるテクスチャデータを書き込む。これによって、テレビジョンモニタ21の表示画面上には、多数のポリゴンにテクスチャの貼り付けられた物体が表示される。
通常の2次元画像を描画するための描画命令は、頂点アドレスデータ、テクスチャアドレスデータ、テクスチャデータの色を示すカラーパレットデータのバッファ14上における記憶位置を示すカラーパレットアドレスデータ及びテクスチャの輝度を示す輝度データに対して行われる。これらのデータのうち頂点アドレスデータは、CPU1からの2次元平面上における頂点座標データをCPU1からの移動量データ及び回転量データに基づいてグラフィックスデータ生成プロセッサ3が座標変換することによって得られる。
音声プロセッサ11は記録媒体300から読み出されたADPCM(Adaptive Differential Pulse Code Modulation)データをバッファ15に記憶させ、バッファ15に記憶されたADPCMデータが音源となる。
また、音声プロセッサ11は、例えば、周波数44.1kHzのクロック信号に基づき、バッファ15からADPCMデータを読み出す。音声プロセッサ11は、読み出したADPCMデータに対してピッチの変換、ノイズの付加、エンベロープの設定、レベルの設定及びリバーブの付加等の処理を施す。
記録媒体300から読み出される音声データがCD−DA(Compact Disk Digital Audio)等のPCM(Pulse Code Modulation)データの場合、音声プロセッサ11はこの音声データをADPCMデータに変換する。また、PCMデータに対するプログラムによる処理は、メインメモリ5上において直接行われる。メインメモリ5上において処理されたPCMデータは、音声プロセッサ11に供給されてADPCMデータに変換される。その後、上述した各種処理が施され、音声がスピーカ23から出力される。
記録媒体ドライブ17としては、例えば、DVD−ROMドライブ、CD−ROMドライブ、ハードディスクドライブ、光ディスクドライブ、フレキシブルディスクドライブ、シリコンディスクドライブ、カセット媒体読み取り機等が用いられる。この場合、記録媒体300としては、DVD−ROM、CD−ROM、ハードディスク、光ディスク、フレキシブルディスク、半導体メモリ等が用いられる。
記録媒体ドライブ17は記録媒体300から画像データ、音声データ及びプログラムデータを読み出し、読み出したデータをデコーダ12に供給する。デコーダ12は記録媒体ドライブ17からの再生したデータに対してECC(Error Correction Code)によるエラー訂正処理を施し、エラー訂正処理を施したデータをメインメモリ5又は音声プロセッサ11に供給する。
メモリ18としては、例えばカード型のメモリが用いられる。カード型のメモリは、例えばゲームを中断した場合において中断時点での状態を保持する等のように、中断時点での各種ゲームパラメータを保持するため等に用いられる。
コントローラ19は操作者であるプレーヤが種々の操作指令を入力するために使用する操作装置であり、プレーヤの操作に応じた操作信号をCPU1に送出する。コントローラ19には、第1ボタン19a、第2ボタン19b、第3ボタン19c、第4ボタン19d、上方向キー19U、下方向キー19D、左方向キー19L、右方向キー19R、L1ボタン19L1、L2ボタン19L2、R1ボタン19R1、R2ボタン19R2、スタートボタン19e、セレクトボタン19f、左スティック19SL及び右スティック19SRが設けられている。
上方向キー19U、下方向キー19D、左方向キー19L及び右方向キー19Rは、例えば、キャラクタやカーソルをテレビジョンモニタ21の画面上で上下左右に移動させるコマンドをCPU1に与えるために使用される。
スタートボタン19eは記録媒体300からゲームプログラムをロードするようにCPU1に指示するため等に使用される。セレクトボタン19fは記録媒体300からメインメモリ5にロードされるゲームプログラムに関する各種選択をCPU1に指示するため等に使用される。
左スティック19SL及び右スティック19SRを除くコントローラ19の各ボタン及び各キーは、外部からの押圧力によって中立位置から押圧されるとオンになり、押圧力が解除されると上記中立位置に復帰してオフになるオンオフスイッチで構成される。
左スティック19SL及び右スティック19SRは、いわゆるジョイスティックとほぼ同一構成のスティック型コントローラである。このスティック型コントローラは直立したスティックを有し、このスティックの所定位置を支点として前後左右を含む360°方向に亘って傾倒可能な構成になっている。左スティック19SL及び右スティック19SRは、スティックの傾倒方向及び傾倒角度に応じて、直立位置を原点とする左右方向のx座標及び前後方向のy座標の値を操作信号としてインターフェース回路13を介してCPU1に送出する。
なお、第1ボタン19a、第2ボタン19b、第3ボタン19c、第4ボタン19d、L1ボタン19L1、L2ボタン19L2、R1ボタン19R1及びR2ボタン19R2は、記録媒体300からロードされるゲーム制御プログラムに応じて種々の機能に使用される。
次に、上記のゲーム装置の概略動作について説明する。記録媒体300が記録媒体ドライブ17に装填されている場合、電源スイッチ(図示省略)がオンされてゲーム装置に電源が投入されると、ROM6に記憶されているオペレーティングシステムに基づいて、記録媒体300からゲームプログラムを読み出すように、CPU1は記録媒体ドライブ17に指示する。これによって、記録媒体ドライブ17は記録媒体300から画像データ、音声データ及びプログラムデータを読み出す。読み出された画像データ、音声データ及びプログラムデータはデコーダ12に供給され、デコーダ12によってエラー訂正処理が各データに施される。
デコーダ12によってエラー訂正処理が施された画像データは、バスライン2を介して伸張回路7に供給される。伸張回路7によって上述した伸張処理が行われた画像データは描画プロセッサ10に供給され、描画プロセッサ10によってバッファ14の非表示エリアに書き込まれる。デコーダ12によってエラー訂正処理が施された音声データは、メインメモリ5又は音声プロセッサ11を介してバッファ15に書き込まれる。デコーダ12によってエラー訂正処理が施されたプログラムデータはメインメモリ5に書き込まれる。
以降、CPU1は、メインメモリ5に記憶されているゲーム制御プログラム及びプレーヤがコントローラ19を用いて指示する内容に基づいてゲームを進行させる。すなわち、プレーヤがコントローラ19を用いて指示する内容に基づいて、CPU1は画像処理の制御、音声処理の制御及び内部処理の制御等を適宜行う。
画像処理の制御として、例えば、キャラクタに指示されるアニメーションに該当するパターンデータから各スケルトンの座標の計算又はポリゴンの頂点座標データの計算、得られた3次元座標データや視点位置データのグラフィックスデータ生成プロセッサ3への供給、グラフィックスデータ生成プロセッサ3が求めたバッファ14の表示エリア上のアドレスデータや輝度データを含む描画命令の発行等が行われる。
音声処理の制御として、例えば、音声プロセッサ11に対する音声出力コマンドの発行、レベル、リバーブ等の指定が行われる。内部処理の制御として、例えばコントローラ19の操作に応じた演算等が行われる。
次に、記録媒体300に記録されているゲームプログラムに基づいて実行されるゲームについて説明する。本実施の形態におけるゲームは、野球ゲームを題材としたものである。
図3は、本実施の形態によるゲーム装置が実行する野球ゲームの概要を説明するための画面図である。この野球ゲームは、仮想3次元空間であるゲーム空間内において、投手キャラクタCL2が投じたボールオブジェクトBLを打者キャラクタCL1が打撃するものである。具体的には、図3に示すように、この野球ゲームは、投手キャラクタCL2がボールオブジェクトBLを投げ、打者キャラクタCL1がボールオブジェクトBLをバットオブジェクトBTにより打ち返す野球ゲームである。
この野球ゲームでは、プレーヤは、攻撃側である場合、コントローラ19を操作して、ストライクゾーンSZを示す外枠WK内に表示されたミートカーソルKを表示画面上で移動させ、ボールオブジェクトBLがホームベース付近に到達したときに、ボールオブジェクトBLにミートカーソルKを位置決めさせ、打撃指令を入力する。そうすると、バットオブジェクトBTがスイング表示されて、ボールオブジェクトBLが打ち返される。
次に、上記のように構成されたゲーム装置を用いて野球ゲームを行う場合のゲーム装置の主要な機能について説明する。図2は、図1に示すゲーム装置の主要機能ブロック図である。
図2に示すようにゲーム装置は、機能的には、操作部410、表示部420、プログラム実行部430、データ記憶部450、及びプログラム記憶部460を含む。
操作部410は、コントローラ19等から構成され、プレーヤによりゲームを進行する上で必要となる種々の入力を受け付ける。本実施の形態では、プレーヤが攻撃側であり、ゲーム装置が守備側にある場合は、操作部410は、打者キャラクタにボールオブジェクトを打撃させる位置を決定するためのミートカーソルを表示部420の表示画面上で移動させるための移動指令が入力される。そして、操作部410は、入力された移動指令を示す移動指令信号をプログラム実行部430に出力する。
また、操作部410は、ボールオブジェクトの打撃タイミングを決定するための打撃指令が入力される。そして、操作部410は、入力された打撃指令を示す打撃指令信号をプログラム実行部430に出力する。
ここで、プレーヤは、例えば左スティック19SL、又は右スティック19SRを傾倒させることで移動指令を入力する。また、操作部410が出力する移動指令信号には、左スティック19SL又は右スティック19SRが傾倒された方向を示す情報が含まれる。この傾倒された方向を示す情報としては、例えば、左スティック19SL又は右スティック19SRの立設面において、左スティック19SL又は右スティック19SRの前後の傾倒方向を基準方向とし、この基準方向と左スティック19SL又は右スティック19SRが傾倒された方向との時計回りの角度を採用することができる。
また、プレーヤは、例えば第1〜第4ボタン19a〜19dのいずれかを押下することで打撃指令を入力する。
また、プレーヤが守備側であり、ゲーム装置が攻撃側にある場合は、操作部410は、投手キャラクタに投球動作を開始させるための投球開始指令及びボールオブジェクトのコースを設定するためのコース設定指令を受け付ける。
表示部420は、図1に示すテレビジョン200により構成され、プログラム実行部430の制御の基、種々の画像を表示する。
プログラム実行部430は、図1に示すCPU1及びグラフィックスデータ生成プロセッサ3等から構成され、ゲーム進行制御部431、移動指令取得部432(移動指令取得手段の一例)、打撃タイミング決定部433(打撃タイミング決定手段の一例)、カーソル移動速度補助部434(カーソル移動速度補助手段の一例)、カーソル移動方向補助部435(カーソル移動方向補助手段の一例)、カーソル移動表示部436(カーソル移動表示手段の一例)、履歴取得部437、レベル設定部438(レベル設定手段の一例)、モード設定部439(モード設定手段の一例)、打撃判定部440、及び打撃パワー設定部441を備えている。
ゲーム進行制御部431は、本野球ゲームを進行させるためのものである。具体的には、ゲーム進行制御部431は、プレーヤが攻撃側の場合は、所定のタイミングになると、表示部420に表示された投手キャラクタに投球動作を行わせ、ボールオブジェクトの弾道を設定し、設定した弾道にしたがってボールオブジェクトを表示部420に移動表示させる。
また、ゲーム進行制御部431は、プレーヤが守備側の場合は、操作部410にプレーヤからの投球開始指令が入力されると、表示部420に表示された投手キャラクタに投球動作を行わせ、プレーヤに入力されたコース設定指令にしたがってボールオブジェクトの弾道を設定し、設定した弾道にしたがってボールオブジェクトを表示部420に移動表示させる。
図4は、本発明の実施の形態によるゲーム装置により野球ゲームが展開される仮想3次元空間を示した図である。なお、図4に示すzは仮想3次元空間内におけるピッチャーマウンドの中心O2とホームベースHBの中心O3とを結ぶ直線L3と平行な方向を示し、ボールオブジェクトBLの進行方向を示している。また、yは鉛直方向を示し、xは鉛直方向と進行方向と直交する方向を示している。ここで、x−z平面は地表面ESと平行であり、x座標及びz座標は地表面ESの各位置を規定する。また、鉛直方向は地表面ESに直交する方向である。本実施の形態では、yは地表面ESから離れるにつれて増大する。また、zはピッチャーマウンドの中心O2からホームベースHBの中心O3に向かうにつれて増大する。また、xは、例えば+z方向に見て、左側が+、右側が−である。また、x,y,z軸の原点は中心O2にあるものとする。
ストライクゾーンSZは、例えば、中心O3を通り、かつ、x−y平面と平行な平面である打撃面SF上に設定され、外枠WKで囲まれた四角形状の領域であり、実際の野球のストライクゾーンに基づいて仮想3次元空間(ゲーム空間)内に設定されている。
ストライクゾーンSZの中心OSは、中心O3から+y方向に所定距離離れて位置しており、ストライクゾーンのど真ん中に対応している。
ミートカーソルKは、操作部410に入力された移動指令に従って、打撃面SF上を移動する。打撃面SFのサイズとしては、ストライクゾーンSZのサイズよりも多少大きなサイズを採用することができる。地表面ESには、図3に示す投手キャラクタCL2、打者キャラクタCL1が配置されている。また、ホームベースHBから+z側には、捕手キャラクタと、審判キャラクタとが配置されている。
そして、投手キャラクタCL2が右投げであれば、例えば中心O2からy方向にH(O)離れた点SP´から−x方向に距離dL離間した点SPが、投手キャラクタCL2によるボールオブジェクトBLのリリースポイントとなる。
移動指令取得部432は、操作部410から出力される移動指令信号を受信することで、ミートカーソルの移動指令を取得する。また、移動指令取得部432は、操作部410から出力される打撃指令信号を受信することで、打撃指令を取得する。
打撃タイミング決定部433は、プレーヤにより入力される打撃指令に基づいて、打者キャラクタがボールオブジェクトを打撃する打撃タイミングを決定する。ここで、打撃タイミング決定部433は、操作部410から出力された打撃指令信号の受信時刻を基点として打者キャラクタによりスイングが開始されるバットオブジェクトが、仮想3次元空間内に設定された打撃面に到達するまでに要する所定時間が経過した時刻を打撃タイミングとして決定する。
カーソル移動速度補助部434は、モード設定部439において、ミートカーソルをボールオブジェクトに補助的に近接させるミートカーソル移動補助モードが設定されている場合、下記の動作を行う。
すなわち、カーソル移動速度補助部434は、ミートカーソル移動補助モードが設定されている場合、ミートカーソル移動補助モードが設定されていない場合に比べて、ミートカーソルがボールオブジェクトにより早く近接するように、ミートカーソルの移動速度を補正する。この場合、カーソル移動速度補助部434は、レベル設定部438において設定された技量レベルが低いほど、ミートカーソルの移動速度を大きく設定する。
なお、ミートカーソル移動補助モードが設定されていない場合のミートカーソルの移動速度を「デフォルト移動速度」と記述する。
そして、カーソル移動速度補助部434は、レベル設定部438が設定する各技量レベルと、各技量レベルに対応する移動速度の補正量とを予め定めている。ここで、技量レベルと移動速度の補正量との関係は、技量レベルが低下するにつれて移動速度の補正量が増大する、言い換えれば、技量レベルが増大するにつれて移動速度の補正量が低下する関係を有している。そして、カーソル移動速度補助部434は、レベル設定部438においてプレーヤの技量レベルが設定されると、その技量レベルに対応するミートカーソルの移動速度の補正量を、デフォルト移動速度に加算することでミートカーソルの移動速度を補正し、補正後の移動速度をミートカーソルの移動速度として設定する。
一方、カーソル移動速度補助部434は、モード設定部439において、ミートカーソル移動補助モードが設定されていない場合、ミートカーソルの移動速度をデフォルト移動速度に設定する。
カーソル移動方向補助部435は、ミートカーソルKの現在位置からボールオブジェクトの現在位置までを結ぶベクトルと、移動指令によるミートカーソルの移動方向を示すベクトルとのベクトル和の方向をミートカーソルの補正後の移動方向として設定する。
図5は、ミートカーソルの補正処理を示す模式図である。図5に示すように、カーソル移動方向補助部435は、ミートカーソルKの中心O1(Xk,Yk,Zk)から、ボールオブジェクトBLの重心G1(Xg,Yg,Zg)の打撃面への投影位置G1´(Xg,Yg,Zk)までを結ぶ2次元のベクトルであるベクトルVC1を求める。つまり、VC1=(Xg−Xk,Yg−Yk)で表されるベクトルを求める。
次に、カーソル移動方向補助部435は、移動指令取得部432において取得された現在のミートカーソルKの移動指令が示す移動方向のベクトルVC2を求める。ここで、ベクトルVC2は、2次元のベクトルである。また、ベクトルVC2の向きは、移動指令取得部432が取得した移動指令信号が示す角度をθとすると、y軸を時計回りにθ回転させた方向を向いている。また、ベクトルVC2の長さとしては、ベクトルVC1の平均的な長さに比べて大差のない予め定められた一定の長さを採用することができる。
次に、カーソル移動方向補助部435は、ベクトルVC1とベクトルVC2とのベクトル和であるベクトルVC3を求める。このベクトルVC3の向きがミートカーソルKの移動方向となる。そして、ミートカーソルKは、技量レベルにしたがって補正された移動速度で移動方向に向けて移動表示される。
なお、カーソル移動方向補助部435は、レベル設定部438において設定された技量レベルが低くなるにつれてベクトルVC2の長さが短くなるように、技量レベルに応じてベクトルVC2の長さを変動させてもよい。こうすれば、プレーヤの技量が低くなるにつれて、ベクトルVC3におけるベクトルVC1の比重がベクトルVC2よりも高くなる。その結果、プレーヤは、ミートカーソルKの移動方向についても、技量レベルが低くなるにつれてゲーム装置側から多くの補助が受けられることになる。
また、カーソル移動方向補助部435は、操作部410から移動指令信号の出力が開始されたときにベクトルVC3を算出して移動方向を補正し、以後、移動指令信号の出力が停止されるまで一定の時間間隔(例えばフレーム周期)でベクトルVC3を算出して移動方向を補正する。
そして、カーソル移動方向補助部435は、ボールオブジェクトBLの重心G1の打撃面への投影位置G1´(Xg,Yg,Zk)と、ミートカーソルKの中心O1(Xk,Yk,Zk)とが一致すると、以後、ミートカーソルKをボールオブジェクトBLの移動に追従させるべく、移動方向を補正する処理を終了する。また、このとき、カーソル移動速度補助部434も、ミートカーソルKをボールオブジェクトBLの移動に追従させるべく、ミートカーソルKの移動速度の設定を解除する。
図2に戻り、カーソル移動表示部436は、カーソル移動速度補助部434により補正された移動速度及びカーソル移動方向補助部435により補正された移動方向に基づいて、ミートカーソルKを表示部420の表示画面上で移動表示させる。
具体的には、カーソル移動表示部436は、操作部410から移動指令信号の出力が開始されると、そのときカーソル移動方向補助部435で補正された移動方向に向けてミートカーソルKを、カーソル移動速度補助部434により補正された移動速度で移動表示させる。以後、カーソル移動表示部436は、カーソル移動方向補助部435においてミートカーソルの移動方向が設定される毎に、ミートカーソルKの移動方向を切り替える。そして、カーソル移動表示部436は、操作部410から移動指令信号の出力が停止されると、ミートカーソルKの移動を停止させ、その位置においてミートカーソルKを停止表示させる。
また、カーソル移動表示部436は、ボールオブジェクトBLの重心G1の打撃面SFへの投影位置G1´(Xg,Yg,Zk)とミートカーソルKの中心O1(Xk,Yk,Zk)とが一致すると、ミートカーソルKのX座標及びY座標の値をボールオブジェクトBLのX座標及びY座標の値と同じ値に設定し、ミートカーソルKがボールオブジェクトBLに追従して移動するように、ミートカーソルKを移動表示する。つまり、カーソル移動表示部436は、投影位置G1´と中心O1とが一致すると、以後、ミートカーソルKをボールオブジェクトBLにロックオンさせるのである。
履歴取得部437は、打撃タイミング決定部433において打撃タイミングが決定される毎に打撃タイミングの決定時刻におけるミートカーソルKとボールオブジェクトBLとの距離を求め、この距離を履歴として履歴記憶部451に記憶させる。
図6は、履歴取得部437が距離を求める際の処理を示した図である。図6に示すように、履歴取得部437は、操作部410から打撃指令信号が出力され打撃タイミング決定部433により打撃タイミングが決定されると、打撃タイミングの決定時におけるボールオブジェクトBLの重心G1(Xg,Yg,Zg)を打撃面SFに投影し、投影位置G1´(Xg,Yg,Zk)を求める。次に、打撃タイミングの決定時におけるミートカーソルKの中心O1(Xk,Yk,Zk)と投影位置G1´(Xg,Yg,Zk)との距離Dkを求める。ここで、距離Dkは、例えばDk=((Xg−Xk)2+(Yg−Yk)2)1/2のユークリッドで表される。
そして、履歴取得部437は、算出した距離Dkを、その距離Dkが何回目に算出されたものであるかを示す数値と対応づけて履歴記憶部451に記憶された履歴テーブルに書き込む。図7は、履歴記憶部451に記憶された履歴テーブルのデータ構造の一例を示した図である。図7に示すように履歴テーブルは回数と距離との欄を備えている。回数の欄には、距離Dkが何回目に算出されたかものであるかを示す数値が格納されている。距離の欄には、打撃タイミングが決定される毎に算出される距離Dkが格納されている。
ここで、履歴取得部437は、距離Dkが算出される毎に1カウントアップされる回数カウンタを用いて、距離Dkの算出回数を決定すればよい。
なお、回数カウンタは、プレーヤがゲーム制御プログラムの格納された記録媒体300を購入し、ゲームを開始してからの通算の回数をカウントする。つまり、回数カウンタのカウント値は、ゲーム装置がオフされても保存される。
また、ゲーム装置が複数のプレーヤにより使用される場合は、プレーヤ毎に回数カウンタを用意し、かつ、プレーヤ毎の履歴テーブルを作成すればよい。この場合、履歴取得部437は、ゲーム装置の電源が投入され、ゲームが開始される時にプレーヤに自身のユーザ名を入力させ、入力されたユーザ名に予め対応づけられた回数カウンタ及び履歴テーブルを特定する。そして、履歴取得部437は、特定した回数カウンタによりカウントされた回数を距離Dkと対応付けて、特定した履歴テーブルに格納すればよい。
図2に戻り、レベル設定部438は、打撃タイミング決定部433により打撃タイミングが決定された時におけるボールオブジェクトBLとミートカーソルKとの距離Dkの履歴に基づいてプレーヤの技量を示す技量レベルを設定する。
ここで、レベル設定部438は、ミートカーソルKとボールオブジェクトBLとの距離Dkの履歴が所定個数蓄積される毎に、距離Dkの代表値を求め、得られた代表値を基に技量レベルを設定する。ここで、代表値としては、例えば相加平均や相乗平均を採用することができる。また、所定個数としては、1試合あたりの打撃指令の平均入力回数に基づいて予め定められた値を採用することができ、例えば100を採用することができる。
ここで、レベル設定部438は、例えば技量レベルと代表値との関係が対応付けられた技量レベル決定テーブルを用いて技量レベルを設定する。図8は、技量レベル決定テーブルのデータ構造の一例を示した図である。
図8に示すように技量レベル決定テーブルは、技量レベルの欄と代表値の欄とを備えている。技量レベルの欄には、技量レベルを示す数値が格納されている。本実施の形態では、技量レベルは、例えば1〜250の250段階が存在している。なお、技量レベルは、1〜250へと数値が増大するにつれてプレーヤの技量は高いことを示している。
代表値の欄には、各技量レベルに対応する距離Dkの代表値αの範囲が格納されている。距離Dkの代表値αがα≧αmである場合、技量レベルは1に設定される。つまり、プレーヤは技量が低いほど距離Dkが増大する傾向にある。したがって、距離Dkの代表値αがαm以上の場合、技量レベルは最低の1に設定される。
また、距離Dkの代表値αがαm>α≧αm−1の場合は技量レベルが2、αm−1>α≧αm−2の場合は技量レベルが3というようにして1〜250の技量レベルが設定される。つまり、レベル設定部438は、距離Dkの代表値αを1〜250の階級に分けた場合において、代表値αがどの階級に属しているかに応じて技量レベルを設定するのである。
また、本実施の形態では、内部処理に用いる技量レベルと、プレーヤに報知する技量レベルとの2種類の技量レベルが存在する。内部処理に用いる技量レベルは、図8に示す1〜250が採用されている。また、プレーヤに報知する技量レベルは、内部処理に用いる技量レベルより大まかに分けられており、例えば1〜5が採用されている。
レベル設定部438は、図8に示す1〜250の技量レベルを1〜50、51〜100、・・・、201〜250というように50個毎に1〜5の階級に分け、この1〜5の階級を用いてプレーヤに報知する技量レベルを設定すればよい。
図14は、技量レベルをプレーヤに報知するための画面図を示している。図14の画面図は、プレーヤが野球ゲームを開始する際に表示部420に表示される。この画面図には、打撃、投球等の種々の設定項目が設けられている。そして、プレーヤは操作部410を用いて各種の設定項目を選択し、設定作業を行う。図14では、打撃の設定項目が選択され、打撃の設定項目のうちミートアシストレベルの項目が選択されている。このミートアシストレベルのプルダウンメニューには、レベル1〜レベル5及びお任せの項目が設けられている。プレーヤは、レベル1〜レベル5のいずれかの項目を選択すると、レベル設定部438は、プレーヤにより選択されたレベルをプレーヤの技量レベルとして設定する。この場合、モード設定部439は、ミートカーソル移動補助モードを解除する。
一方、プレーヤは、おまかせを選択すると、モード設定部439はミートカーソル移動補助モードを設定する。これにより、プレーヤは、自身で技量レベルを申告することなく、ゲーム装置により技量レベルが設定され、適切な操作補助を受けることが可能となる。
また、図14の下部には、「現在は(レベル5)です。」と記載され、プレーヤの現在の技量レベルが5であることがプレーヤに報知されている。
図2に戻り、レベル設定部438は、最新の代表値より1つ前に求められた代表値から最新の代表値を差し引いた差分が規定値以上の場合、最新の代表値を用いて技量レベルを設定する。図9は、レベル設定部438の処理を説明するための図である。図9に示す座標軸は距離Dkの算出回数、つまり、打撃タイミングの決定回数を示している。そして、レベル設定部438は、距離Dkの算出回数が100増加する毎に代表値を算出する。
図9において、距離Dkの算出回数が300に到達したときに算出された代表値α(p)を最新の代表値とする。なお、代表値α(p)は201〜300回目に算出された100個の距離Dkの履歴を用いて算出された代表値である。また、1つ前に求められた代表値α(p−1)は101〜200回目に算出された100個の距離Dkの履歴を用いて算出された代表値である。
そして、レベル設定部438は、差分Δk(p)=α(p−1)−α(p)が規定値以上であれば、代表値α(p)を用いて技量レベルを設定する。
一方、レベル設定部438は、差分Δk(p)が規定値未満の場合、少なくとも1つ前に求められた代表値α(p−1)と最新の代表値α(p)とを基に、技量レベルを設定する。
この場合、レベル設定部438は、α(p−2)とα(p−1)との差分Δk(p−1)が規定値以上であれば、α(p−1)とα(p)との平均値を代表値として求め、この代表値を用いて技量レベルを設定すればよい。
また、レベル設定部438は、差分Δk(p−1)が規定値未満であり、かつ、差分Δk(p−2)が規定値以上であれれば、α(p−2)とα(p−1)とα(p)との平均値を代表値として求め、この代表値を用いて技量レベルを設定すればよい。
つまり、レベル設定部438は、差分Δk(p)が規定値未満の場合、過去に算出された差分のうち規定値以上となった最新の差分を特定し、特定した最新の差分を算出する際に使用された新しい方の代表値から最新の代表値までの各代表値の平均値を求め、この平均値を用いて技量レベルを設定すればよい。
図2に戻り、モード設定部439は、プレーヤからの操作指令に基づいて、野球ゲームをプレーヤ育成モードに設定する。ここで、プレーヤ育成モードは、プレーヤの技量の上達のスピードを高める目的で設けられたモードである。
そして、プレーヤ育成モードが設定されている場合、カーソル移動速度補助部434は、レベル設定部438により設定された技量レベルよりも上の技量レベルにおけるミートカーソルの移動速度の補正量でミートカーソルの移動速度を補正する。例えば、レベル設定部438によりプレーヤの技量レベルが3と設定された場合、レベル設定部438は、この技量レベルよりも数段階上(例えば5段階上)の技量レベルである8に対応する移動速度の補正量をデフォルト移動速度に加算することで、ミートカーソルの移動速度を補正する。これにより、ミートカーソルの移動速度は、プレーヤ育成モードが設定されていない場合のミートカーソルの移動速度に比べて遅くなる。その結果、プレーヤは表示画面上を移動するボールオブジェクトに素早く反応してミートカーソルを移動させなければならなくなり、ゲーム装置側の補助量が少なくなる結果、プレーヤの上達スピードを早めることができる。
なお、育成モードにおいて、レベル設定部438により設定された技量レベルを例えば5段階上げるとすると、技量レベルが246のプレーヤは技量レベルが250を超えて飽和してしまう。この場合、技量レベルを飽和レベルである250に設定すればよい。
また、プレーヤ育成モードが設定されている場合、カーソル移動方向補助部435は、レベル設定部438により設定された技量レベルよりも上の技量レベルにおけるミートカーソルの移動方向の補正量でミートカーソルの移動方向を補正するようにしてもよい。この場合、図5に示すベクトルVC2の長さがレベル設定部438により設定された技量レベルに対応する長さよりも長くなり、ゲーム装置側の補助量が減少する。
また、モード設定部439は、プレーヤの操作指令に基づいて、野球ゲームをミートカーソル移動補助モードに設定する。ここで、ミートカーソル補助モードは、プレーヤによるミートカーソルの移動操作をゲーム装置側が補助するモードである。具体的には、ミートカーソル移動補助モードが設定されている場合、カーソル移動速度補助部434及びカーソル移動方向補助部435がミートカーソルの移動速度及び移動方向を補正する。
打撃判定部440は、打撃タイミング決定部433により決定された打撃タイミングにおいて、ボールオブジェクトがミートカーソルと重なった場合、打者キャラクタがボールオブジェクトを打撃することができたと判定する。
図10は、図4に示す仮想3次元空間をx軸方向から見たときの図である。打撃判定部440は、図10に示すように、操作部410に打撃指令が入力された時刻から、打者キャラクタがバットオブジェクトのスイングを開始し、バットオブジェクトが打撃面SFに到達するまでの所定時間が経過した時刻が打撃タイミングとして決定される。そして、打撃判定部440は、打撃タイミングにおいて、ボールオブジェクトBLとミートカーソルKとが重なった場合、打者キャラクタによりボールオブジェクトBLが打撃されたと判定する。
しかしながら、これでは、ゲームの難易度が極めて高くなってしまい、面白みに欠ける虞がある。そこで、本実施の形態では、例えば打撃タイミングにおいて、ボールオブジェクトBLのz成分が、打撃面SFに対して−z方向に距離d1離れた位置と、打撃面SFに対して+z方向に距離d2離れた位置との間に存在し、かつ、そのときのボールオブジェクトBLの延長線が打撃面SF上のミートカーソルKと交差した場合、ボールオブジェクトBLとミートカーソルKとが重なったと判定してもよい。
ここで、ボールオブジェクトBLの延長線としては、例えば打撃タイミングを決定したときのボールオブジェクトBLの速度の方向に、ボールオブジェクトBLの重心G1を起点として伸ばした直線を採用することができる。
或いは、打撃タイミングにおいて、ボールオブジェクトBLのz成分が、打撃面SFに対して距離d1離れた位置と、打撃面SFに対して距離d2離れた位置との間に存在する場合、そのときの重心G1を通り打撃面SFに平行な打撃面SF´を設定し、設定した打撃面SF´上に打撃面SF上のミートカーソルKを投影し、投影したミートカーソルKとボールオブジェクトBLとが重なる場合、ボールオブジェクトBLとミートカーソルKとが重なったと判定してもよい。
なお、d1,d2としては、打撃面SFからのストライクゾーンのz成分の長さと同じ距離又は、多少のマージンを加える若しくは差し引いた距離を採用することができる。
図2に戻り、打撃パワー設定部441は、打撃判定部440により、打撃タイミングにおいて、ボールオブジェクトBLとミートカーソルKとが重なったと判定されると、ボールオブジェクトBLを打撃するための打撃パワーを設定する。
ここで、打撃パワー設定部441は、打撃タイミングにおいて、ボールオブジェクトBLの重心G1のミートカーソルKに対する通過位置がミートカーソルKの中心に近いほど、打撃パワーを大きく設定する。本実施の形態では打撃パワーとしては、ボールオブジェクトBLの初速度V0を採用することができ、打撃判定部440は、ボールオブジェクトBLに対して予め定められた基準初速度Vrefの大きさ及び向きを補正することでボールオブジェクトBLの初速度V0を求める。
図11(A)〜(C)は、打撃されたボールオブジェクトBLの初速度V0の算出処理を示した図である。図11(A)に示すように、ボールオブジェクトBLとミートカーソルKとの重なった領域の重心が点P4(u,v)であったとする。但し、uはミートカーソルKの中心O1を通り、且つミートカーソルKの長手方向に平行な座標軸であり、vは中心O1を通り、且つu軸に直交する座標軸である。
この場合、打撃パワー設定部441は、点P4と中心O1との距離dsを求め、距離dsが増大するにつれて基準初速度Vrefを小さく設定するための補正係数βを求め、この補正係数βを基準初速度Vrefに乗じることで(β・Vref)、基準初速度Vrefの大きさを補正し、補正後の基準初速度Vrefの大きさをボールオブジェクトBLの初速度V0の大きさとして設定すればよい。
なお、打撃パワー設定部441は、補正係数βを出力とし、距離dsを入力とし、距離dsが小さくなるにつれて補正係数βが増大する予め定められた関数を用いて補正係数βを算出すればよい。
なお、図11(A)に示すようにミートカーソルKは、ミート領域MDとミート領域MDの周囲のバット領域BDとを備えている。バット領域BDは、バットを長手方向の断面形状を模擬した形状を有している、ミート領域MDは中心O1を含む箇所に設定されている。
そして、打撃パワー設定部441は、例えば、点P4がバット領域BDに位置する場合、点P4がミート領域MDに位置する場合に比べて大幅に小さくなるように、初速度V0の大きさを求めればよい。
次に、図11(A)〜(C)を用いて、打撃パワー設定部441によるボールオブジェクトBLの初速度V0の向きの算出手法について説明する。打撃パワー設定部441は、図11(A)に示す点P4のvの値に応じて、図11(B)に示す予め定められた基準初速度Vrefの向きを示す基準方向Drefのピッチ角θ1を補正し、補正後の基準方向Drefのピッチ角θ1を初速度V0のピッチ角として設定する。
具体的には、打撃パワー設定部441は、点P4のvがu軸上に位置する場合、基準方向Drefの補正量は0とし、点P4のvが正の場合は、点P4のvの値に応じて基準方向Drefのピッチ角θ1を時計回りに所定角度回転させ、点P4のvが負の場合は点P4のvの値に応じて基準方向Drefのピッチ角θ1を反時計回りに所定角度回転させればよい。
なお、基準方向Drefのピッチ角θ1は、z軸を基準として反時計回りの方向に設定されている。
また、点P4のuが正であれば、打撃パワー設定部441は、図11(C)に示すように基準方向Drefのヨー角θ2を点P4のuの値に応じて、z軸を基準として時計回りの方向(+θ2側)に所定角度回転し、回転後の基準方向Drefのヨー角θ2を初速度V0のヨー角として設定する。
一方、点P4のuが負であれば、打撃パワー設定部441は、基準方向Drefのヨー角θ2を点P4のuの値に応じて、z軸を基準として反時計回り(−θ2側)に所定角度回転させ、回転後の基準方向Drefのヨー角θ2を初速度V0のヨー角として設定する。
また、打撃パワー設定部441は、図10に示すように、打撃タイミングにおいてボールオブジェクトBLの重心G1が打撃面SFからz方向にずれて位置しているが、打撃されたと判定された場合、このずれ量に応じて、図11(C)に示す基準方向Drefのヨー角θ2を回転させる。
具体的には、打者キャラクタが右打者の場合、図10において、ボールオブジェクトBLの重心G1が打撃面SFから−z方向側に位置していれば、打者キャラクタは、打ち急いだと判定される。そして、ボールオブジェクトBLの重心G1と打撃面SFとの距離dに応じて、図11(C)に示すヨー角θ2がz軸を基準として反時計回りに所定角度回転される。
一方、打者キャラクタが右打者の場合において、ボールオブジェクトBLの重心G1が打撃面SFから+z方向側に位置していれば、打者キャラクタは振り遅れたと判定される。そして、距離dに応じて図11(C)に示すヨー角θ2がz軸を基準として時計回りに所定角度回転される。
なお、打者キャラクタが左打者において、打ち急いだ場合は、図11(C)に示すヨー角θ2は距離dに応じて時計周りに所定角度回転され、振り遅れた場合は、ヨー角θ2は距離dに応じて反時計周りに所定角度回転される。
また、打撃パワー設定部441は、点P4がバット領域BDに位置する場合、ミート領域MDに位置する場合に比べて、ヨー角θ2を極端に時計回り又は反時計回りに回転させた方向をボールオブジェクトBLの初速度V0の方向として求めればよい。
図2に戻り、データ記憶部450は、例えばメインメモリ5から構成され、履歴記憶部451、及び画像記憶部452として機能する。履歴記憶部451は、図8に示す履歴テーブルを記憶している。
画像記憶部452は、本野球ゲームを実現するにあたり必要となる画像データを記憶するものであり、例えば、守備キャラクタ、打者キャラクタ、バットオブジェクト、野球場の背景画像、投手キャラクタ等の画像データを記憶する。ここで、野球場の背景画像の画像データとしては、例えば仮想3次元空間内において予め作成された仮想3次元モデルを所定の視点から投影することにより予め作成された画像データを採用することができる。
プログラム記憶部460は、例えば記録媒体ドライブ17等から構成され、コンピュータ読み取り可能な記録媒体461を含む。記録媒体461は、記録媒体300から構成され、本発明によるゲーム制御プログラムを記憶している。なお、記録媒体300からゲーム制御プログラムが読み取られ、当該ゲーム制御プログラムがメインメモリ5に記録されている場合、メインメモリ5がプログラム記憶部460として機能する。
図12は、本発明の実施の形態によるゲーム装置がボールオブジェクトを移動させる際の処理を示したフローチャートである。なお、図12に示すフローチャートはプレーヤが攻撃側にある場合を示している。
まず、ステップS1において、ゲーム進行制御部431は、打者キャラクタCL1、バットオブジェクトBT、野球場の背景画像、投手キャラクタCL2、及び野手キャラクタ等の画像データを画像記憶部452から読み出して表示部420に表示させ、初期設定を行う。この場合、表示部420には、例えば図3に示すような画像が表示される。
次に、ゲーム進行制御部431は、所定のタイミングになったとき、投手キャラクタに投球を開始させる(ステップS2)。
このとき、ゲーム進行制御部431は、投手キャラクタCL2がボールオブジェクトBLを投じるように投手キャラクタCL2の表示態様を変更させる。また、ゲーム進行制御部431は、投手キャラクタCL2の能力情報に基づいて、ボールオブジェクトBLの弾道を設定し、設定した弾道にしたがって、ボールオブジェクトBLを表示部420に移動表示させる。
次に、プレーヤにミートカーソルKの移動指令が入力され(ステップS3でYES)、かつ、ミートカーソルKがボールオブジェクトBLにロックオンされていない場合(ステップS4でNO)、カーソル移動速度補助部434は、プレーヤの技量レベルに応じた補正量でミートカーソルKの移動速度を補正し、かつ、カーソル移動方向補助部435は、操作指令が示すミートカーソルKの移動方向がボールオブジェクトBLに近接するように、ボールオブジェクトBLの移動方向を補正する(ステップS5)。
一方、ステップS3において、移動指令が入力されていない場合(ステップS3でNO)、処理がステップS7に進められる。この場合、ミートカーソルKは停止表示される。
また、ステップS4において、ミートカーソルKがボールオブジェクトBLにロックオンされている場合(ステップS4でYES)、カーソル移動表示部436は、ボールオブジェクトBLのX座標及びY座標がミートカーソルKのX座標及びY座標と同じ値になるように、ミートカーソルKを移動表示させる(ステップS6)。
なお、ステップS4でNOと判定され、ミートカーソルKがボールオブジェクトBLにロックオンされていない場合は、カーソル移動表示部436は、ステップS5で補正された移動速度及び移動方向でミートカーソルKを移動表示させる(ステップS6)。
次に、プレーヤにより打撃指令が入力されると(ステップS7でYES)、打撃タイミング決定部433は、打撃指令信号の受信時刻から打撃タイミングを決定する(ステップS8)。
一方、プレーヤにより打撃指令が入力されない場合(ステップS7でNO)、ゲーム進行制御部431によりボールオブジェクトBLが捕手キャラクタの位置に到達してボールオブジェクトBLの移動が終了したか否かが判定される(ステップS9)。
そして、ボールオブジェクトBLの移動が終了されていないと判定された場合(ステップS9でNO)、処理がステップS3に戻される。一方、ボールオブジェクトBLの移動が終了されたと判定された場合(ステップS9でYES)、打者キャラクタCL1はボールオブジェクトBLを見送ったと判定され、見送り処理が実行される(ステップS10)。
すなわち、ボールオブジェクトBLの移動中において、プレーヤは移動指令を入力することで随時、ミートカーソルKを表示画面上で移動させることができ、ボールオブジェクトBLにミートカーソルKを位置決めし、打撃指令を入力することが可能である。そして、打撃指令が入力されると、打撃タイミングが決定され、ステップS11以降の処理が実行される。
ステップS11において、打撃タイミングにおいてミートカーソルKとボールオブジェクトBLとが重なった場合、打撃判定部440は、打者キャラクタCL1がボールオブジェクトBLを打撃することができたと判定し(ステップS11でYES)、打撃パワー設定部441は、打撃パワーを設定する(ステップS13)。
一方、打撃タイミングにおいてミートカーソルKとボールオブジェクトBLとが重なっていない場合、打撃判定部440は、打者キャラクタCL1がボールオブジェクトBLを打撃することができなかったと判定し(ステップS11でNO)、ゲーム進行制御部431は空振り処理を実行する(ステップS12)。
なお、ステップS10に示す見送り処理においては、ゲーム進行制御部431は、捕手キャラクタがボールオブジェクトBLを捕球する画像を表示部420に表示させる。また、ステップS12に示す空振り処理においては、ゲーム進行制御部431は、打者キャラクタCL1が空振り動作する画像を表示部420に表示させる。
また、ステップS11でYESと判定された場合、ゲーム進行制御部431は、打者キャラクタCL1がボールオブジェクトBLを打撃動作する画像を表示部420に表示させる。
ステップS14において、履歴取得部437は、ステップS8で決定された打撃タイミングにおける、ボールオブジェクトBLの重心G1の打撃面SFへの投影位置G1´とミートカーソルKの中心O1との距離Dkを求める。
そして、履歴取得部437は、求めた距離Dkをその距離Dkの算出回数と対応付けて、履歴テーブルに書き込み、距離Dkの履歴を記憶させる(ステップS15)。
つまり、ボールオブジェクトが1球投じられる毎に、図12のフローチャートに示す処理が実行され、プレーヤが打撃指令を入力した場合は、空振りしたか打撃することができたかに関わらず、距離Dkが算出され、距離Dkの履歴が取得される。一方、プレーヤが打撃指令を入力しない場合は、距離Dkは算出されず、距離Dkの履歴は取得されない。
次に、本発明の実施の形態によるゲーム装置がプレーヤの技量レベルを設定する際の処理について説明する。図13は、本発明の実施の形態によるゲーム装置がプレーヤの技量レベルを設定する際に実行する処理を示すフローチャートである。
まず、ステップS21において、レベル設定部438は、距離Dkの履歴が履歴テーブルに書き込まれると、回数カウンタのカウント値kを1カウントアップする(ステップS22)。次に、レベル設定部438は、カウント値kが100のj(jは1以上の整数)倍に到達し、距離Dkの履歴の個数が所定個数蓄積されると(ステップS23でYES)、最新の代表値α(p)を求める(ステップS24)。この場合、最新の代表値α(p)は、直前に蓄積された100個の距離Dkの履歴の平均値である。
次に、レベル設定部438は、前回の代表値α(p−1)から最新の代表値α(p)を差し引いた差分Δk(p)を求め、差分Δk(p)が規定値以上の場合(ステップS25でYES)、最新の代表値α(p)を用いて技量レベルを設定する(ステップS26)。
一方、差分Δk(p)が規定値未満の場合(ステップS25でNO)、過去に算出した差分Δk(p−1)、Δk(p−2)、・・・のうち、規定値以上の差分を特定する(ステップS27)。そして、特定した差分を算出する際に用いられた新しい方の代表値から最新の代表値までの各代表値の平均値を算出し、代表値を再算出する(ステップS28)。
なお、過去に算出した差分のうち、規定値以上の差分がない場合、ステップS28において、レベル設定部438は、過去に算出した全ての代表値α(p−1)、α(p−2)、・・・と最新の代表値α(p)とを用いて代表値を再算出すればよい。
例えば、規定値が3であり、代表値が12,11,10,7,6,5,4と減っていった場合、7,6,5,4を用いて代表値が再算出されることになる。一方、代表値が12,11,10,9,8,7,6と減っていった場合、過去に算出した差分のうち、規定値以上の差分がないため、これら全ての代表値を用いて代表値が再算出されることになる。
ステップS29において、レベル設定部438は、ステップS28で再算出した代表値を用いて技量レベルを設定する。
このように、本ゲーム装置によれば、打撃タイミングにおけるボールオブジェクトBLとミートカーソルKとの距離Dkの履歴に基づいて、プレーヤの技量レベルが設定される。そして、技量レベルが低いほど、ミートカーソルの移動速度の補正量が大きく設定される。
ここで、プレーヤは技量が高くなるにつれて打撃タイミングにおいて、ボールオブジェクトBLとミートカーソルKとの距離が狭まる傾向にある。つまり、打撃タイミングにおけるボールオブジェクトBLとミートカーソルKとの距離Dkは、プレーヤの技量を反映している。そのため、プレーヤが打撃指令を入力する毎に打撃タイミングにおけるボールオブジェクトBLとミートカーソルKとの距離Dkの履歴を蓄積し、この距離Dkの履歴に基づいて技量レベルを設定すれば、プレーヤの実際の技量に適した技量レベルを設定することができる。
そして、技量レベルが低くなるにつれて、ミートカーソルKの移動速度の補正量が大きく設定される。つまり、技量レベルが低いプレーヤほど、ゲーム装置がプレーヤを補助する度合いが大きく設定される。
したがって、プレーヤは自身の実際の技量に応じた適切な補助をゲーム装置から受けることが可能となる。