〔ゲーム装置の構成と動作〕
図1は、本発明の一実施形態によるコンピュータの基本構成を示している。このコンピュータの構成は、ゲーム装置の構成と同様の構成を有している。ここでは、ゲーム装置に記録されたプログラムを実行可能、且つこのプログラムを修正可能な、コンピュータ(開発用のゲーム装置)が用いられる。
開発用のゲーム装置は、開発用のゲーム装置本体およびテレビジョンを備える。開発用のゲーム装置本体には、記録媒体10が装填可能となっており、記録媒体10からゲームデータが適宜読み出されてゲームが実行される。このようにして実行されるゲーム内容がテレビジョンに表示される。
開発用のゲーム装置のゲームシステムは、制御部1と、記憶部2と、画像表示部3と、音声出力部4と、操作入力部5、通信部23とからなっており、それぞれがバス6を介して接続される。このバス6は、アドレスバス、データバス、およびコントロールバスなどを含んでいる。ここで、制御部1、記憶部2、音声出力部4および操作入力部5は、開発用のゲーム装置のゲーム装置本体に含まれており、画像表示部3はテレビジョンに含まれている。
制御部1は、主に、ゲームプログラムに基づいてゲーム全体の進行を制御するために設けられている。制御部1は、たとえば、CPU(Central Processing Unit)7と、信号処理プロセッサ8と、画像処理プロセッサ9とから構成されている。CPU7と信号処理プロセッサ8と画像処理プロセッサ9とは、それぞれがバス6を介して互いに接続されている。CPU7は、ゲームプログラムからの命令を解釈し、各種のデータ処理や制御を行う。たとえば、CPU7は、信号処理プロセッサ8に対して、画像データを画像処理プロセッサに供給するように命令する。信号処理プロセッサ8は、主に、3次元空間上における計算と、3次元空間上から擬似3次元空間上への位置変換計算と、光源計算処理と、3次元空間上又は擬似3次元空間上で実行された計算結果に基づいた画像および音声データの生成加工処理とを行っている。画像処理プロセッサ9は、主に、信号処理プロセッサ8の計算結果および処理結果に基づいて、描画すべき画像データをRAM12に書き込む処理を行っている。また、CPU7は、信号処理プロセッサ8に対して、各種データを処理するように命令する。信号処理プロセッサ8は、主に、3次元空間上における各種データに対応する計算と、3次元空間上から擬似3次元空間上への位置変換計算とを行っている。
記憶部2は、主に、プログラムデータや、プログラムデータで使用される各種データなどを格納しておくために設けられている。記憶部2は、たとえば、記録媒体10と、インターフェース回路11と、RAM(Random Access Memory)12とから構成されている。記録媒体10には、インターフェース回路11が接続されている。そして、インターフェース回路11とRAM12とはバス6を介して接続されている。記録媒体10は、オペレーションシステムのプログラムデータや、画像データ、音声データ並びに各種プログラムデータからなるゲームデータなどを記録するためのものである。この記録媒体10は、たとえば、ROM(Read Only Memory)カセット、光ディスク、およびフレキシブルディスクなどであり、オペレーティングシステムのプログラムデータやゲームデータなどが記憶される。なお、記録媒体10にはカード型メモリも含まれており、このカード型メモリは、主に、ゲームを中断するときに中断時点での各種ゲームパラメータを保存するために用いられる。RAM12は、記録媒体10から読み出された各種データを一時的に格納したり、制御部1からの処理結果を一時的に記録したりするために用いられる。このRAM12には、各種データとともに、各種データの記憶位置を示すアドレスデータが格納されており、任意のアドレスを指定して読み書きすることが可能になっている。
画像表示部3は、主に、画像処理プロセッサ9によってRAM12に書き込まれた画像データや、記録媒体10から読み出される画像データなどを画像として出力するために設けられている。この画像表示部3は、たとえば、テレビジョンモニタ20と、インターフェース回路21と、D/Aコンバータ(Digital-To-Analogコンバータ)22とから構成されている。テレビジョンモニタ20にはD/Aコンバータ22が接続されており、D/Aコンバータ22にはインターフェース回路21が接続されている。そして、インターフェース回路21にバス6が接続されている。ここでは、画像データが、インターフェース回路21を介してD/Aコンバータ22に供給され、ここでアナログ画像信号に変換される。そして、アナログ画像信号がテレビジョンモニタ20に画像として出力される。
ここで、画像データには、たとえば、ポリゴンデータやテクスチャデータなどがある。ポリゴンデータはポリゴンを構成する頂点の座標データのことである。テクスチャデータは、ポリゴンにテクスチャを設定するためのものであり、テクスチャ指示データとテクスチャカラーデータとからなっている。テクスチャ指示データはポリゴンとテクスチャとを対応づけるためのデータであり、テクスチャカラーデータはテクスチャの色を指定するためのデータである。ここで、ポリゴンデータとテクスチャデータとには、各データの記憶位置を示すポリゴンアドレスデータとテクスチャアドレスデータとが対応づけられている。このような画像データでは、信号処理プロセッサ8により、ポリゴンアドレスデータの示す3次元空間上のポリゴンデータ(3次元ポリゴンデータ)が、画面自体(視点)の移動量データおよび回転量データに基づいて座標変換および透視投影変換されて、2次元空間上のポリゴンデータ(2次元ポリゴンデータ)に置換される。そして、複数の2次元ポリゴンデータでポリゴン外形を構成して、ポリゴンの内部領域にテクスチャアドレスデータが示すテクスチャデータを書き込む。このようにして、各ポリゴンにテクスチャが貼り付けられた物体つまり各種キャラクタを表現することができる。
音声出力部4は、主に、記録媒体10から読み出される音声データを音声として出力するために設けられている。音声出力部4は、たとえば、スピーカ13と、増幅回路14と、D/Aコンバータ15と、インターフェース回路16とから構成されている。スピーカ13には増幅回路14が接続されており、増幅回路14にはD/Aコンバータ15が接続されており、D/Aコンバータ15にはインターフェース回路16が接続されている。そして、インターフェース回路16にバス6が接続されている。ここでは、音声データが、インターフェース回路16を介してD/Aコンバータ15に供給され、ここでアナログ音声信号に変換される。このアナログ音声信号が増幅回路14によって増幅され、スピーカ13から音声として出力される。音声データには、たとえば、ADPCM(Adaptive Differential Pulse Code Modulation)データやPCM(Pulse Code Modulation)データなどがある。ADPCMデータの場合、上述と同様の処理方法で音声をスピーカ13から出力することができる。PCMデータの場合、RAM12においてPCMデータをADPCMデータに変換しておくことで、上述と同様の処理方法で音声をスピーカ13から出力することができる。
操作入力部5は、主に、コントローラ17と、操作情報インターフェース回路18と、インターフェース回路19とから構成されている。コントローラ17には、操作情報インターフェース回路18が接続されており、操作情報インターフェース回路18にはインターフェース回路19が接続されている。そして、インターフェース回路19にバス6が接続されている。
コントローラ17は、プレイヤが種々の操作命令を入力するために使用する操作装置であり、プレイヤの操作に応じた操作信号をCPU7に送出する。コントローラ17には、第1ボタン17a、第2ボタン17b、第3ボタン17c、第4ボタン17d、上方向キー17U、下方向キー17D、左方向キー17L、右方向キー17R、L1ボタン17L1、L2ボタン17L2、R1ボタン17R1、R2ボタン17R2、スタートボタン17e、セレクトボタン17f、左スティック17SL及び右スティック17SRが設けられている。
上方向キー17U、下方向キー17D、左方向キー17L及び右方向キー17Rは、例えば、キャラクタやカーソルをテレビジョンモニタ20の画面上で上下左右に移動させるコマンドをCPU7に与えるために使用される。
スタートボタン17eは、記録媒体10からゲームプログラムをロードするようにCPU7に指示するときなどに使用される。
セレクトボタン17fは、記録媒体10からロードされたゲームプログラムに対して、各種選択をCPU7に指示するときなどに使用される。
左スティック17SL及び右スティック17SRは、いわゆるジョイスティックとほぼ同一構成のスティック型コントローラである。このスティック型コントローラは、直立したスティックを有している。このスティックは、支点を中心として直立位置から前後左右を含む360°方向に亘って、傾倒可能な構成になっている。左スティック17SL及び右スティック17SRは、スティックの傾倒方向及び傾倒角度に応じて、直立位置を原点とするx座標及びy座標の値を、操作信号として操作情報インターフェース回路18とインターフェース回路19とを介してCPU7に送出する。
第1ボタン17a、第2ボタン17b、第3ボタン17c、第4ボタン17d、L1ボタン17L1、L2ボタン17L2、R1ボタン17R1及びR2ボタン17R2には、記録媒体10からロードされるゲームプログラムに応じて種々の機能が割り振られている。
なお、左スティック17SL及び右スティック17SRを除くコントローラ17の各ボタン及び各キーは、外部からの押圧力によって中立位置から押圧されるとオンになり、押圧力が解除されると中立位置に復帰してオフになるオンオフスイッチになっている。
通信部23は、通信制御回路24および通信インターフェース25を有している。通信制御回路24および通信インターフェース25は、ゲーム装置をサーバや他のゲーム装置等に接続するために用いられる。通信制御回路24および通信インターフェース25は、バス6を介してCPU7に接続されている。通信制御回路24および通信インターフェース25は、CPU7からの命令に応じて、ゲーム装置をインターネットに接続するための接続信号を制御し発信する。また、通信制御回路24および通信インターフェース25は、インターネットを介してゲーム装置をサーバや他のゲーム装置に接続するための接続信号を制御し発信する。
以上のような構成からなる開発用のゲーム装置の概略動作を、以下に説明する。電源スイッチ(図示省略)がオンにされゲームシステム1に電源が投入されると、CPU7が、記録媒体10に記憶されているオペレーティングシステムに基づいて、記録媒体10から画像データ、音声データ、およびプログラムデータを読み出す。読み出された画像データ、音声データ、およびプログラムデータの一部若しくは全部は、RAM12に格納される。そして、CPU7が、RAM12に格納されたプログラムデータに基づいて、RAM12に格納された画像データや音声データを画像や音声としてテレビジョンモニタ20やスピーカ13に出力するためのコマンドを発行する。
画像データの場合、CPU7からのコマンドに基づいて、まず、信号処理プロセッサ8が、3次元空間上におけるキャラクタやオブジェクト等の位置計算および光源計算などを行う。次に、画像処理プロセッサ9が、信号処理プロセッサ8の計算結果に基づいて、描画すべき画像データのRAM12への書き込み処理などを行う。そして、RAM12に書き込まれた画像データが、インターフェース回路21を介してD/Aコンバータ22に供給される。ここで、画像データがD/Aコンバータ22でアナログ映像信号に変換される。そして、画像データはテレビジョンモニタ20に供給され画像として表示される。
音声データの場合、まず、信号処理プロセッサ8が、CPU7からのコマンドに基づいて音声データの生成および加工処理を行う。ここでは、音声データに対して、たとえば、ピッチの変換、ノイズの付加、エンベロープの設定、レベルの設定及びリバーブの付加などの処理が施される。次に、音声データは、信号処理プロセッサ8から出力されて、インターフェース回路16を介してD/Aコンバータ15に供給される。ここで、音声データがアナログ音声信号に変換される。そして、音声データは増幅回路14を介してスピーカ13から音声として出力される。
〔ゲーム装置における各種処理概要〕
本ゲーム装置において開発されるゲームは、たとえば、野球ゲームである。本ゲーム装置において開発される野球ゲームでは、ゲーム空間に配置されたオブジェクトを、表示可能になっている。図2は、本発明で主要な役割を果たす機能を説明するための機能ブロック図である。
モデル配置手段50は、少なくとも1つのオブジェクトから構成されるモデルの位置を規定するための位置座標データを、CPU7に認識させることにより、モデルをゲーム空間に配置する機能を備えている。
この手段では、少なくとも1つのオブジェクトから構成されるモデルをゲーム空間に配置するための位置座標データを、CPU7に認識させることにより、モデルがゲーム空間に配置される。これにより、モデルを構成するオブジェクトも、ゲーム空間に配置される。ここでは、たとえば、スタジアムおよび選手キャラクタ等が、モデルに対応している。
各オブジェクトは、複数のポリゴンにより形成されている。これら複数のポリゴンそれぞれの座標データを、CPU7に認識させることにより、各オブジェクトの形状が、形成され設定される。また、複数のポリゴンの座標データに基づいて重心位置を算出する処理を、CPU7に実行させることにより、各オブジェクトの重心が、設定される。
また、各オブジェクトには、オブジェクトの属性を示す属性データが、割り当てられている。ここでは、各オブジェクトに対して、所定の属性データが、対応テーブルに基づいて割り当てられる。詳細には、所定の属性データは、対応テーブルに基づいて、各オブジェクトを構成する複数のポリゴンそれぞれに割り当てられる。なお、対応テーブルは、ゲームプログラムにおいて予め規定されており、RAM12に格納されている。
このように各種のオブジェクトから構成されるモデルには、モデルをゲーム空間に配置するときに用いられる基準位置(代表位置)が、設定されている。たとえば、選手キャラクタの場合、体幹オブジェクトの重心位置が、代表位置に設定されている。この選手キャラクタの代表位置を、初期条件としての位置座標データが示す位置に位置させることにより、選手キャラクタ(モデル)がゲーム空間に配置される。
仮想カメラ配置手段51は、仮想カメラの位置座標データを、CPU7に認識させることにより、仮想カメラをゲーム空間に配置する機能を備えている。
この手段では、仮想カメラの位置座標データを、CPU7に認識させることにより、仮想カメラが、ゲーム空間に配置される。たとえば、RAM12に格納された仮想カメラの位置座標データを、CPU7に認識させることにより、仮想カメラが、ゲーム空間に配置される。また、CPU7から発行された移動命令に基づいて、仮想カメラが移動させられた場合、この移動命令に対応する仮想カメラの位置座標データが、CPU7に認識される。これにより、仮想カメラが、ゲーム空間に配置される。なお、仮想カメラを移動するための移動命令は、コントローラ17が操作されたときの入力信号や、自動制御プログラム(AIプログラム、Artificial Intelligence Program)に記述された命令等に基づいて、CPU7から発行される。
視錐空間設定手段52は、ゲーム空間においてテレビジョンモニタ20に表示する空間を規定するための表示空間用のデータを、CPU7に認識させることにより、仮想カメラの撮影対象となる視錐空間を、ゲーム空間に設定する機能を備えている。
この手段では、表示空間用のデータをCPU7に認識させることにより、仮想カメラの撮影対象となる視錐空間が、ゲーム空間に設定される。ここでは、表示空間用データは、仮想カメラの注視点の位置座標データ、仮想カメラの画角に対応する角度データ、視錐空間の奥行き方向の範囲を規定するための位置データから構成されている。
これら表示空間用のデータをCPU7に認識させることにより、仮想カメラの撮影対象となる視錐空間が、ゲーム空間に設定される。なお、ここでは、仮想カメラの画角は、仮想カメラと注視点とを結ぶ直線を基準線として、水平方向および垂直方向に、定義されている。また、視錐空間の奥行き方向の範囲を規定するための位置データが示す位置は、仮想カメラと注視点とを結ぶ直線上に定義されている。
オブジェクト位置記録手段53は、オブジェクトの位置を規定するための位置座標データをCPU7に認識させることにより、オブジェクトの位置をRAM12に記録する機能を備えている。詳細には、オブジェクト位置記録手段53は、静止中のオブジェクトの位置および移動中のオブジェクトの位置の少なくともいずれか一方の位置に対応する位置座標データを、CPU7に認識させることにより、オブジェクトの位置をRAM12に記録する機能を備えている。
この手段では、静止中のオブジェクトの位置および移動中のオブジェクトの位置の少なくともいずれか一方の位置に対応する位置座標データを、CPU7に認識させることにより、オブジェクトの位置がRAM12に記録される。たとえば、静止中のオブジェクトの重心の位置座標データおよび移動中のオブジェクトの重心の位置座標データの少なくともいずれか一方を、オブジェクトの位置座標データとして、CPU7に認識させることにより、オブジェクトの位置がRAM12に記録される。
具体的には、選手キャラクタがゲーム空間に配置されると、選手キャラクタを構成する各オブジェクトの重心の位置座標データが、CPU7に認識され、RAM12に格納される。また、選手キャラクタがゲーム空間において移動すると、移動後の各オブジェクトの重心の位置座標データが、CPU7に認識され、RAM12に格納される。さらに、選手キャラクタを構成するオブジェクト、たとえば、投手キャラクタのボールオブジェクトが、投手キャラクタから離反すると、離反したボールオブジェクトの重心の位置座標データが、CPU7に認識され、RAM12に格納される。このようにして、ゲーム空間に配置された選手キャラクタの位置、すなわち、選手キャラクタを構成する各オブジェクトの重心の位置が、CPU7に監視される。
なお、ここでは、各オブジェクトの重心の位置は、選手キャラクタの代表位置を基準として定義されている。
属性記録手段54は、オブジェクトに割り当てられた属性を示す属性データを、CPU7に認識させることにより、オブジェクトの属性をRAM12に記録する機能を備えている。
この手段では、オブジェクトに割り当てられた属性を示す属性データを、CPU7に認識させることにより、オブジェクトの属性データがRAM12に記録される。たとえば、オブジェクトを構成するポリゴンに割り当てられた属性データを、CPU7に認識させることにより、オブジェクトの属性データがRAM12に記録される。
具体的には、選手キャラクタがゲーム空間に配置されると、視錐空間内の選手キャラクタを構成する各オブジェクトの属性データが、CPU7に認識され、RAM12に格納される。たとえば、属性データとしては、オブジェクトの質感を規定するためのシェーダデータや、オブジェクトのテクスチャを規定するためのテクスチャデータ等が含まれている。
ここでは、シェーダデータが、指定対象となる属性データとして用いられる。このため、オブジェクトが、ゲーム空間に配置されると、ゲーム空間に配置された各オブジェクトに割り当てられたシェーダデータが、CPU7に認識され、RAM12に格納される。このようにして、各オブジェクトに対応するシェーダデータが、CPU7により管理される。
イベント検査手段55は、所定のイベントが発生したか否かを、RAM12に格納されたライブラリデータに基づいて、CPU7に判断させることにより、所定のイベントの発生の有無を検査する機能を備えている。
この手段では、所定のイベントが発生したか否かを、RAM12に格納されたライブラリデータに基づいて、CPU7に判断させることにより、所定のイベントの発生の有無が、検査される。
たとえば、ライブラリデータは、イベントを特定するための複数のイベントデータから構成されている。イベントデータは、たとえば、「投手キャラクタが投球姿勢をとった」、「投手のリリース」、「バットに対するボールの衝突」、および「捕手によるボールの捕球」等のような各イベントを区別するためのデータである。
このようなイベントデータに対応するイベントが発生すると、イベントの発生を示すフラグがオンの状態に設定する処理が、CPU7により実行される。たとえば、ライブラリのイベントが発生すると、発生したイベントに対応するフラグデータに「1」を割り当てる処理が、CPU7により実行される。なお、ライブラリのイベントが未発生の場合、およびライブラリのイベントが終了した場合は、フラグデータには、「0」が割り当てられている。このようにして、所定のイベントの発生の有無が検査され、イベントの発生の有無が区別される。
命令発行手段56(第1命令発行手段)は、所定のイベントが発生したとCPU7により判断された場合に、属性を指定するための属性指定命令をCPU7に発行させる機能を備えている。
この手段では、所定のイベントが発生したとCPU7により判断された場合に、属性を指定するための属性指定命令が、CPU7から発行される。たとえば、投手キャラクタの投球時において、投手キャラクタが投球姿勢をとった時、投手キャラクタからボールがリリースされた時、リリースされたボールがバットに衝突した時、リリースされたボールが捕手キャラクタに捕球された時等に、属性を指定するための属性指定命令たとえばシェーダ指定命令が、CPU7から発行される。
属性指定手段57は、属性を指定するための属性指定命令がCPU7から発行されたときに、属性指定命令に対応する属性データを、指定属性データとして、CPU7に認識させることにより、指定属性を設定する機能を備えている。
この手段では、属性指定命令がCPU7から発行されたときに、属性指定命令に対応する属性データを、指定属性データとして、CPU7に認識させることにより、指定属性が設定される。たとえば、シェーダ指定命令がCPU7から発行されたときに、シェーダ指定命令に対応するシェーダデータを、指定シェーダデータとして、CPU7に認識させることにより、指定シェーダが設定される。
より具体的には、投手キャラクタの投球時において、投手キャラクタが投球姿勢をとった時、投手キャラクタからボールがリリースされた時、リリースされたボールがバットに衝突した時、およびリリースされたボールが捕手キャラクタに捕球された時等に、CPU7から発行されたシェーダ指定命令に対応するシェーダデータが、指定シェーダデータとして、CPU7に認識される。これにより、指定シェーダデータに対応するシェーダが、指定シェーダとして、設定される。
オブジェクト指定手段58は、指定属性データが割り当てられたオブジェクトを検索する処理を、CPU7に実行させることにより、指定属性を有するオブジェクトを指定する機能を備えている。
この手段では、指定属性データが割り当てられたオブジェクトを検索する処理を、CPU7に実行させることにより、指定属性を有するオブジェクトが、指定される。たとえば、指定シェーダデータが割り当てられたオブジェクトを検索する処理を、CPU7に実行させることにより、指定シェーダを有するオブジェクトが、指定される。
たとえば、投手キャラクタの投球時において、投手キャラクタが投球姿勢をとった時、投手キャラクタからボールがリリースされた時、リリースされたボールがバットに衝突した時、およびリリースされたボールが捕手キャラクタに捕球された時等に、指定シェーダデータが割り当てられたオブジェクトが、複数のオブジェクトの中から、CPU7により検索される。このようにして、指定シェーダを有するオブジェクトが、指定される。
より具体的には、投手キャラクタが投球姿勢をとった時には、「投手の顔用の肌」に対応するシェーダデータ(指定シェーダデータ)が指定され、この指定シェーダデータが割り当てられた投手の顔オブジェクトが、複数の他のオブジェクトの中から、CPU7により検索される。また、投手キャラクタからボールがリリースされた時には、「ボール用の革」に対応するシェーダデータ(指定シェーダデータ)が指定され、この指定シェーダデータが割り当てられたボールオブジェクトが、複数の他のオブジェクトの中から、CPU7により検索される。
また、リリースされたボールがバットに衝突した時には、「バット用の木材」に対応するシェーダデータ(指定シェーダデータ)が指定され、この指定シェーダデータが割り当てられたバットオブジェクトが、複数の他のオブジェクトの中から、CPU7により検索される。さらに、リリースされたボールが捕手キャラクタに捕球された時には、「捕手のグローブ用の革」に対応するシェーダデータ(指定シェーダデータ)が指定され、この指定シェーダデータが割り当てられたグローブオブジェクトが、複数の他のオブジェクトの中から、CPU7により検索される。
焦点設定手段59は、指定属性を有するオブジェクトの位置座標データを、仮想カメラの焦点を規定するための位置座標データとして、CPU7に認識させることにより、仮想カメラの焦点を、指定属性を有するオブジェクトに設定する機能を備えている。
この手段では、指定属性を有するオブジェクトの位置座標データを、仮想カメラの焦点を規定するための位置座標データとして、CPU7に認識させることにより、仮想カメラの焦点が、指定属性を有するオブジェクトに対して設定される。たとえば、指定属性を有するオブジェクトの重心の位置座標データを、仮想カメラの焦点用の位置座標データとして、CPU7に認識させることにより、仮想カメラの焦点が、指定属性を有するオブジェクトに対して設定される。
オブジェクト表示手段60は、指定属性を有するオブジェクトに、仮想カメラの焦点を合わした状態で、仮想カメラに映るオブジェクトを、テレビジョンモニタ20に表示する機能を備えている。
この手段では、指定属性を有するオブジェクトに、仮想カメラの焦点を合わした状態で、仮想カメラに映るオブジェクトが、テレビジョンモニタ20に表示される。たとえば、指定属性を有するオブジェクトが、静止している場合には、仮想カメラの焦点も静止した状態で、維持される。一方で、指定属性を有するオブジェクトが、移動する場合には、仮想カメラの焦点は、このオブジェクトと共に移動する。このように、指定属性を有するオブジェクトが静止していても移動していても、仮想カメラの焦点を常に合わした状態で、仮想カメラに映るオブジェクトを、テレビジョンモニタ20に表示することができる。
より具体的には、投手キャラクタが投球姿勢をとった時には、投手キャラクタの顔オブジェクトに焦点が合った状態で、視錐空間の内部のオブジェクトが、テレビジョンモニタ20に表示される。また、投手キャラクタからボールがリリースされた時には、ボールオブジェクトに焦点が合った状態で、視錐空間の内部のオブジェクトが、テレビジョンモニタ20に表示される。
また、リリースされたボールがバットに衝突した時には、バットオブジェクトに焦点が合った状態で、視錐空間の内部のオブジェクトが、テレビジョンモニタ20に表示される。さらに、リリースされたボールが捕手キャラクタに捕球された時には、捕手のグローブオブジェクトに焦点が合った状態で、視錐空間の内部のオブジェクトが、テレビジョンモニタ20に表示される。
命令変更手段61は、所定のイベントに対応する属性を変更するための命令を、CPU7に認識させることにより、属性指定命令を変更する機能を備えている。
この手段では、所定のイベントに対応する属性を変更するための命令を、CPU7に認識させることにより、属性指定命令が変更される。
たとえば、所定のイベントに対応する指定シェーダを変更するための命令を、CPU7に認識させることにより、RAM12に格納された、所定のイベントに対応する指定シェーダが、新規の指定シェーダ(変更後の指定シェーダ)に書き換えられる。そして、所定のイベントが発生したときには、変更後の指定シェーダを指定するためのシェーダ指定命令が、CPU7から発行される。
〔野球ゲームの開発時に用いられる焦点設定システムの概要〕
次に、野球ゲームの開発時に用いられる焦点設定システムの具体的な内容について説明する。また、図14に示すフローについても同時に説明する。以下では、投手と打者とが対戦する場面において、焦点設定システムが機能する場合を一例として、説明を行う。
まず、開発用のゲーム装置の電源が投入されゲーム装置が起動されると、開発用の野球ゲームプログラムが、記録媒体10からRAM12にロードされ格納される。このときには、開発用の野球ゲームを実行する上で必要となる各種の基本ゲームデータも、同時に、記録媒体10からRAM12にロードされ格納される(S1)。
たとえば、基本ゲームデータには、各種の画像に関するデータが、含まれている。そして、この各種の画像に関するデータ、たとえば、モデルの画像に関するデータが、CPU7に認識される。具体的には、モデルの画像に関するデータは、選手キャラクタの画像に関するデータ、選手キャラクタを除く他のキャラクタの画像に関するデータ、およびスタジアムの画像に関するデータ等から構成されている。また、基本ゲームデータには、ゲーム空間用の各種の画像に関するデータを3次元ゲーム空間に配置するための位置座標データが含まれている。なお、本システムで用いられる各種のデータも、基本ゲームデータに含まれている。
続いて、モデルの位置を規定するための位置座標データを、CPU7に認識させることにより、モデルがゲーム空間に配置される(S2)。モデルの位置座標データの初期値は、ゲームプログラムにおいて予め規定されており、RAM12に格納されている。なお、モデルは、少なくとも1つのオブジェクトから構成されており、モデルがゲーム空間に配置されると、モデルを構成するオブジェクトも、ゲーム空間に配置される。
ここでは、スタジアム用のモデル(以下では、スタジアムと呼ぶ)および選手キャラクタ用のモデル(以下では、選手キャラクタと呼ぶ)等が、モデルに対応している。モデルには、モデルをゲーム空間に配置するときに用いられる基準位置(代表位置)が、所定の位置に設定されている。
たとえば、選手キャラクタの場合、図3および図4に示すように、体幹オブジェクトの重心位置TG(TG1,TG2)が、代表位置に設定されている。ここでは、ゲーム空間における、選手キャラクタ用の位置座標データ(初期値)が示す位置に、選手キャラクタの代表位置TGが配置される。なお、図3および図4には、投手キャラクタ用のモデルM1、および打者キャラクタ用のモデルM2が、示されている。他のモデルについては、図を省略する。
このように、選手キャラクタの代表位置TGの位置座標データを、CPU7に認識させることにより、初期姿勢をとった選手キャラクタが、ゲーム空間に配置される。たとえば、投球姿勢をとった投手キャラクタM1(図3を参照)、打撃姿勢をとった打者キャラクタM2(図4を参照)、捕球姿勢をとった野手キャラクタ(図示しない)等が、ゲーム空間に配置される。なお、スタジアムや他のキャラクタ等も、選手キャラクタの場合と同様にして、ゲーム空間に配置される。
ここで、モデルを構成するオブジェクトについての詳細な説明を行っておく。
スタジアムは、スタンドオブジェクト、各エリアの観客オブジェクト、1塁側又は2塁側のベンチオブジェクト等から構成されている。また、スタジアムには、投手板(プレート)やベース等のオブジェクトも含まれている。
また、選手キャラクタは、投手キャラクタM1、打者キャラクタM2、捕手キャラクタ、投手キャラクタM1および捕手キャラクタを除く野手キャラクタ、および走者キャラクタ等を含んでいる。これらの各キャラクタは、複数のオブジェクトから構成されている。
たとえば、図3に示すように、投手キャラクタM1は、脚オブジェクトOA1、靴オブジェクトOB1、体幹オブジェクトOC1、腕オブジェクトOD1、手オブジェクトOE1、顔オブジェクトOF1、帽子オブジェクトOG1、グローブオブジェクトOH1、およびボールオブジェクトOI1等から構成されている。また、図4に示すように、打者キャラクタM2は、脚オブジェクトOA2、靴オブジェクトOB2、体幹オブジェクトOC2、腕オブジェクトOD2、手オブジェクトOE2、顔オブジェクトOF2、ヘルメットオブジェクトOG2、およびバットオブジェクトOH2等から構成されている。
同様に、野手キャラクタは、脚オブジェクト、靴オブジェクト、体幹オブジェクト、腕オブジェクト、手オブジェクト、顔オブジェクト、帽子オブジェクト、およびグローブオブジェクト等から構成されている。捕手キャラクタは、脚オブジェクト、靴オブジェクト、体幹オブジェクト、腕オブジェクト、手オブジェクト、顔オブジェクト、帽子オブジェクト、グローブオブジェクト、および各種プロテクタオブジェクト等から構成されている。走者キャラクタは、脚オブジェクト、靴オブジェクト、体幹オブジェクト、腕オブジェクト、手オブジェクト、顔オブジェクト、およびヘルメットオブジェクト等から構成されている。
このような各オブジェクトは、複数のポリゴンにより形成されている。これら複数のポリゴンそれぞれの座標データを、CPU7に認識させることにより、各オブジェクトの形状が、形成され設定される。
また、複数のポリゴンの座標データに基づいて重心を算出する処理が、CPU7により実行される。重心を算出する方程式には、「∫ρ(r)rdV/∫ρ(r)dV」が用いられる。この方程式においては、ρは密度、rは位置ベクトルを示す。また、∫dVは体積分、分母は全質量を示す。ここでは、密度を一定にし、複数のポリゴンの座標データを平均化する処理を、CPU7に実行させることにより、各オブジェクトの重心が、算出される。各オブジェクトの重心の位置は、選手キャラクタの代表位置TGを基準として定義されている。
なお、各オブジェクトを構成する複数のポリゴンの座標データの初期値は、ゲームプログラムにおいて予め規定されており、RAM12に格納されている。
また、各オブジェクトには、オブジェクトの属性を示す属性データZD(j,k,l)が、割り当てられている。ここで、jは、モデルを区別するためのパラメータであり、kは、オブジェクトを区別するためのパラメータであり、lは、属性の種類を区別するためのパラメータである。
たとえば、投手キャラクタの場合、jには「1」が割り当てられる。そして、投手キャラクタの各オブジェクトOA1,OB1,OC1,OD1,OE1,OF1,OG1,OH1,OI1に対応するkには、「1」から「9」までの自然数が割り当てられる。同様に、打者キャラクタの場合、jには「2」が割り当てられる。そして、打者キャラクタの各オブジェクトOA2,OB2,OC2,OD2,OE2,OF2,OG2,OH2に対応するkには、「1」から「8」までの自然数が割り当てられる。また、属性が、テクスチャである場合、lには「1」が割り当てられる。そして、属性が、シェーダである場合、lには「2」が割り当てられる。そして、このようにして、各オブジェクトの属性データZD(k,l)を、選手キャラクタごとに区別することができる(図5を参照)。なお、捕手キャラクタの場合、jには「3」が割り当てられる(図示しない)。
ここでは、各オブジェクトに対して、所定の属性データZD(j,k,l)が、割り当てられる。所定の属性データZD(j,k,l)は、各オブジェクトを構成する複数のポリゴンそれぞれに割り当てられる。たとえば、各オブジェクトを構成する複数のポリゴンそれぞれに、所定の同じ属性データZD(j,k,l)を割り当てる処理を、CPU7に実行させることにより、ポリゴンの集合体としてのオブジェクトが、同じ属性を有するように、オブジェクトの属性が設定される。
なお、属性データZD(j,k,l)としては、オブジェクトの質感を規定するためのシェーダデータや、オブジェクトのテクスチャを規定するためのテクスチャデータ等が含まれている。ここでは、シェーダデータZD(j,k,2)が、指定対象となる属性データとして用いられる。
シェーダは、オブジェクト(ポリゴン)に質感を設定するためのものである。ここでは、RAM12におけるシェーダデータZD(j,k,2)の記憶位置を示すシェーダアドレスデータと、RAM12におけるポリゴンの座標データの記憶位置を示すポリゴンアドレスデータとは、互いに関連付けられている。これにより、所定のシェーダデータZD(j,k,2)が、各ポリゴンに割り当てられ、各ポリゴンの内部領域に、シェーダが示す質感を表現することができる。すなわち、各オブジェクトに対して、シェーダデータZD(j,k,2)が示す質感を、設定することができる。また、シェーダと同様の形態で、ポリゴンの内部領域に、テクスチャを設定することができる。
続いて、仮想カメラCの配置位置C1を示す位置座標データを、CPU7に認識させることにより、図6に示すように、仮想カメラCが、ゲーム空間に配置される(S3)。また、CPU7から発行された移動命令に基づいて、仮想カメラCが移動させられた場合、この移動命令に対応する仮想カメラCの配置位置を示す位置座標データが、CPU7に認識される。このように、仮想カメラCの位置座標データをCPU7に認識させることにより、仮想カメラCが、ゲーム空間に配置される。
なお、仮想カメラCを移動するための移動命令は、コントローラ17が操作されたときの入力信号や、自動制御プログラム(AIプログラム、Artificial Intelligence Program)に記述された命令等に基づいて、CPU7から発行される。このように、仮想カメラCは、コントローラ17により手動で移動可能、且つ自動制御プログラムにより自動で移動可能になっている。
ここでは、ホームベースの重心が、ゲーム空間を規定する原点Oに設定されている。そして、ホームベースの重心を基準として、ホームベースの垂直上方がz軸に設定されている。そして、ホームベースの重心を基準として、z軸に垂直であり、ホームベースから投手板(プレート)に向かう方向に、y軸が設定されている。そして、y軸およびz軸に垂直であり、1塁スタンド側に延びる方向に、x軸が設定されている。このような座標系(絶対座標系)によって、ゲーム空間は定義されている。
投手キャラクタM1と打者キャラクタM2とが対戦する場面では、投手キャラクタM1とバックネットとの間に、仮想カメラCが配置される。たとえば、ホームベースの重心(原点)を基準とした、y軸上のプレートとは反対側の所定の位置に、仮想カメラCが配置される。仮想カメラCの配置位置を示す位置座標データ(仮想カメラCの位置座標データ)は、ゲームプログラムにおいて予め規定されたデータである。仮想カメラCの位置座標データは、RAM12に格納されている。この仮想カメラCの位置座標データを、CPU7に認識させることにより、仮想カメラCが、ゲーム空間の上記の位置に配置される。
なお、ここでは、投手キャラクタM1とバックネットとの間に、仮想カメラCが配置される場合の例が示されるが、仮想カメラCの配置位置は、上記の例の位置に限定されず、どの位置に配置しても良い。
続いて、図6に示すように、ゲーム空間において仮想カメラCが撮影可能な空間に対応する視錐空間SSが、設定される(S4)。たとえば、視錐空間SSを規定するための表示空間用のデータHS(m)を、CPU7に認識させることにより、視錐空間SSが、ゲーム空間に設定される。表示空間用のデータHS(m)は、仮想カメラCの注視点の位置座標データHS(1)、仮想カメラCの画角G1,G2に対応する角度データHS(2),HS(3)、および仮想カメラCで撮影する奥行き方向の撮影範囲を規定するための位置データHS(4),HS(5)から構成されている。
具体的には、仮想カメラCの注視点C2の位置座標データHS(1)を、CPU7に認識させることにより、仮想カメラCの注視点C2が、ゲーム空間に設定される。これにより、仮想カメラCの視線方向が、ゲーム空間に設定される。そして、仮想カメラCの画角G1,G2に対応する角度データHS(2),HS(3)を、CPU7に認識させることにより、視錐空間SSの上下方向および左右方向の範囲が設定される。
そして、仮想カメラCの視線方向に互いに所定の間隔を隔てて配置された2つの位置データHS(4),HS(5)を、CPU7に認識させることにより、奥行き方向の撮影範囲が設定される。仮想カメラCの視線方向の位置データHS(4),HS(5)は、仮想カメラCの配置位置から所定の第1距離を隔てた位置の位置座標データHS(4)、および仮想カメラCの配置位置から所定の第2距離(>第1距離)を隔てた位置の位置座標データHS(5)から構成されている。仮想カメラCから所定の第1距離を隔てた位置P1の位置座標データHS(4)を、CPU7に認識させることにより、仮想カメラCと注視点C2とを結ぶ直線に直交する第1面D1(カメラ側に近い面)が、設定される。また、仮想カメラCから所定の第2距離(>第1距離)を隔てた位置P2の位置座標データHS(5)を、CPU7に認識させることにより、仮想カメラCと注視点C2とを結ぶ直線に直交する第2面D2(仮想カメラCを基準として第1面より離れた面)が、設定される。
ここで、第1面D1は、仮想カメラCと打者キャラクタM2との間に設定される。また、仮想カメラCの注視点C2は、センターのスタンドに設定される。たとえば、仮想カメラCの注視点C2は、y軸上の所定の位置から上方に所定の距離を隔てた位置、たとえばセンタースタンドの位置に、配置される。
また、仮想カメラCの画角G1,G2は、仮想カメラCの配置位置C1と注視点C2とを結ぶ直線を基準線として、水平方向および垂直方向に、定義されている。たとえば、仮想カメラCの水平方向の画角G1は、仮想カメラCの配置位置C1と注視点C2とを結ぶ基準線を中心に、この基準線の左右方向に所定の角度で設定される。また、仮想カメラCの垂直方向の画角G2は、仮想カメラCの配置位置C1と注視点C2とを結ぶ基準線を中心に、この基準線の垂直方向に所定の角度で設定される。
さらに、仮想カメラCから所定の第1距離を隔てた位置P1、および仮想カメラCから所定の第2距離を隔てた位置P2は、仮想カメラCと注視点C2とを結ぶ直線上に定義されている。ここでは、仮想カメラCから第1距離を隔てた位置P1は、仮想カメラCの配置位置とホームベースとの間の所定の位置に、設定される。また、仮想カメラCから第2距離を隔てた位置P2は、スタンド場外の所定の位置に、設定される。
上記の表示空間用のデータHS(m)は、ゲームプログラムにおいて予め規定されたデータである。表示空間用のデータHS(m)は、RAM12に格納されている。このような表示空間用のデータHS(m)を、CPU7に認識させることにより、視錐空間SSが、ゲーム空間の内部に配置される。
なお、仮想カメラCの焦点SFの初期位置P_SFoは、視錐空間SS内の所定の位置、たとえば打者キャラクタM2の顔オブジェクトOF2の重心位置W26(図8を参照)に、規定されている。この位置は、ゲームプログラムにおいて予め規定されている。また、表示空間用のデータHS(1),HS(4),HS(5)は、位置座標データを表す記号である。このため、厳密には、表示空間用のデータHS(1),HS(4),HS(5)は、HS(x,y,z,1),HS(x,y,z,4),HS(x,y,z,5)となる。しかしながら、ここでは、表示空間用のデータを、「HS(1),HS(4),HS(5)」のように簡略化して表記している。また、表示空間用のデータHS(2),HS(3)は、角度データを表す記号である。
なお、ここでは、モデルがゲーム空間に配置された後に、仮想カメラの設定および視錐空間の設定が実行される場合の例が、示されている。しかしながら、仮想カメラの設定および視錐空間の設定が実行された後に、モデルがゲーム空間に配置されるようにしても良い。
続いて、プレイの開始を示す命令がCPU7から発行されると(S5)、各オブジェクトの位置が、RAM12に記録される(S6)。たとえば、オブジェクトの位置を規定するための位置座標データOJ(j,k)をCPU7に認識させることにより、オブジェクトの位置がRAM12に記録される。詳細には、静止中のオブジェクトの重心の位置座標データおよび移動中のオブジェクトの重心の位置座標データの少なくともいずれか一方を、オブジェクトの位置座標データOJ(j,k)として、CPU7に認識させることにより、オブジェクトの位置がRAM12に記録される。
具体的には、投手キャラクタM1と打者キャラクタM2との対戦プレイが開始されると、視錐空間SS内の選手キャラクタを構成する各オブジェクトの重心の位置座標データOJ(j,k)が、CPU7に認識され、RAM12に格納される。また、選手キャラクタが移動した場合、移動後の各オブジェクトの重心の位置座標データOJ(j,k)が、CPU7に認識され、RAM12に格納される。さらに、選手キャラクタを構成するオブジェクト、たとえば、投手キャラクタM1のボールオブジェクトOI1が、投手キャラクタM1から離反すると、離反したボールオブジェクトOI1の重心の位置座標データOJ(1,9)が、CPU7に認識され、RAM12に格納される。このように、視錐空間SSに配置された各オブジェクトの重心の位置は、CPU7により常に監視される。なお、ここでは、各オブジェクトの重心の位置は、絶対座標系において定義された位置である。
図7には、投手キャラクタM1が投球姿勢をとっているときの、各オブジェクトの重心位置W11〜W19が、示されている。また、図8には、打者キャラクタM2が打撃姿勢をとっているときの、各オブジェクトの重心位置W21〜28が、示されている。上記では、各オブジェクトの重心位置W11〜W19に対応する位置座標データが、「OJ(1,k),k=1〜9」で表現されている。また、上記では、各オブジェクトの重心位置W21〜W28に対応する位置座標データが、「OJ(2,k),k=1〜8」で表現されている。さらに、図7では、図3に示した体幹オブジェクトの重心位置TG1,TG2が、記号「W13,W23」で示されている。
なお、位置座標データOJ(j,k)は、位置座標データであるので、厳密には、OJ(x,y,z,j,k)となる。しかしながら、ここでは、位置座標データを、OJ(j,k)のように簡略化して表記している。
ここでは、モデルが移動する位置、およびモデルが移動したときの姿勢は、ゲームプログラムにおいて予め規定されている。たとえば、時間が経過するにつれて変化する、投手キャラクタM1の投球動作や打者キャラクタM2のスイング動作は、ゲームプログラムにおいて予め規定されている。すなわち、時間が経過するにつれて変化する、選手キャラクタの姿勢および位置(各オブジェクトの姿勢および位置)は、ゲームプログラムにおいて予め規定されている。そして、選手キャラクタが動作したときには、各オブジェクトの重心の位置が、1フレームごとに、CPU7に認識されRAM12に格納される。このように、選手キャラクタが動作しても、選手キャラクタを構成する各オブジェクトの位置は、CPU7により把握され、RAM12に記録される。
続いて、各オブジェクトのシェーダが、RAM12に記録される(S7)。たとえば、各オブジェクトに割り当てられたシェーダデータZD(j,k,2)を、CPU7に認識させることにより、各オブジェクトのシェーダがRAM12に記録される。詳細には、各オブジェクトを構成するポリゴンに割り当てられたシェーダデータZD(j,k,2)を、CPU7に認識させることにより、各オブジェクトのシェーダがRAM12に記録される。
具体的には、プレイ開始後に、各オブジェクトがゲーム空間に配置され、各オブジェクトがCPU7に認識されると、ゲーム空間に配置された各オブジェクトに割り当てられたシェーダデータZD(j,k,2)が、CPU7に認識され、RAM12に格納される。このようにして、各オブジェクトのシェーダデータZD(j,k,2)が、CPU7により管理される。
オブジェクトの質感を示すシェーダには、「脚用のユニフォーム」、「靴用の革」、「体幹用のユニフォーム」、「腕用のユニフォーム」、「手用の肌」、「顔用の肌」、「帽子用の布」、「ヘルメット用のプラスティック」、「バット用の木材」、「グローブ用の革」、および「ボール用の革」等が、用意されている(図5を参照)。
続いて、プレイ中には、所定のイベントの発生の有無が、検査される(S8)。たとえば、所定のイベントが発生したか否かを、RAM12に格納されたライブラリデータに基づいて、CPU7に判断させることにより、所定のイベントの発生の有無が、検査される。ライブラリデータは、図9に示すように、イベントを特定するための複数のイベントデータIから構成されている。イベントデータIは、たとえば、「投手キャラクタが投球姿勢をとった」、「投手のリリース」、「バットに対するボールの衝突」、および「捕手によるボールの捕球」等のような各イベントを区別するためのデータである。
このようなイベントデータIに対応するイベントが発生すると(S8でYes)、イベントの発生を示すフラグF(I)をオンの状態に設定する処理が、CPU7により実行される。たとえば、ライブラリのイベントが発生すると、発生したイベントに対応するフラグデータF(I)に「1」を割り当てる処理が、CPU7により実行される。一方で、ライブラリのイベントが未発生の場合、ライブラリのイベントが終了した場合、およびあるイベントから他のイベントへと切り替わった場合(S8でNo)、フラグデータF(I)には、「0」が割り当てられている。このようにして、所定のイベントの発生の有無が管理され、イベントの発生の有無が区別される。
具体的には、投手キャラクタM1が投球姿勢をとった時には、このイベントに対応するフラグデータF(I)に「1」が割り当てられる。そして、投手キャラクタM1からボールがリリースされた時、リリースされたボールがバットに衝突した時、およびリリースされたボールが捕手キャラクタに捕球された時等には、発生したイベントに対応するフラグデータF(I)に「1」が割り当てられ、事前に発生したイベントに対応するフラグデータF(I)に「0」が割り当てられる。このようなフラグデータF(I)をCPU7に参照させることにより、現在発生しているイベントが、特定される。
続いて、シェーダの指定が、行われる。たとえば、所定のイベントが発生したとCPU7により判断された場合(S8でYes)、シェーダを指定するためのシェーダ指定命令が、CPU7から発行される。ここでは、所定のイベントが発生した時、たとえば、投手キャラクタM1の投球時においては、投手キャラクタM1が投球姿勢をとった時、投手キャラクタM1からボールがリリースされた時、リリースされたボールがバットに衝突した時、リリースされたボールが捕手キャラクタに捕球された時等に、シェーダを指定するためのシェーダ指定命令すなわちばシェーダ指定命令が、CPU7から発行される。
ここでCPU7から発行されるシェーダ指定命令は、発生したイベントに対応するシェーダを指定するための命令である。具体的には、投手キャラクタM1が投球姿勢をとった時には、「投手の顔用の肌」をシェーダに指定する命令が、CPU7から発行される。また、投手キャラクタM1からボールがリリースされた時には、「ボール用の革」をシェーダに指定する命令が、CPU7から発行される。また、リリースされたボールがバットに衝突した時には、「ボール用の革」をシェーダに指定する命令が、CPU7から発行される。さらに、リリースされたボールが捕手キャラクタに捕球された時には、「捕手のグローブ用の革」をシェーダに指定する命令が、CPU7から発行される。
なお、発生したイベントと指定シェーダ(指定シェーダデータ)との対応関係は、図10に示すように、対応テーブルに基づいて、CPU7により管理されている。
このようにして、各イベントに対応するシェーダ指定命令が、CPU7から発行されると(S8でYes)、シェーダの指定が行われる(S9)。たとえば、シェーダ指定命令に対応するシェーダデータZD(j,k,2)を、指定シェーダデータZDo(j,k,2)として、CPU7に認識させることにより、指定シェーダ(シェーダ指定命令に対応するシェーダ)が設定される。
図11には、指定シェーダと、指定シェーダデータZDo(j,k,2)との対応関係が、示されている。なお、図11では、捕手キャラクタの「グローブ用の革」に対応するkの値を「9」に設定し、シェーダデータZD(3,9,2)の値が「9」に設定されている。
具体的には、投手キャラクタM1が投球姿勢をとった時には、「投手の顔用の肌」が指定シェーダに設定される。また、投手キャラクタM1からボールがリリースされた時には、「ボール用の革」が指定シェーダに設定される。また、リリースされたボールがバットに衝突した時には、「ボール用の革」が指定シェーダに設定される。さらに、リリースされたボールが捕手キャラクタに捕球された時には、「捕手のグローブ用の革」が指定シェーダに設定される。
このようにして、発生したイベントに応じて、シェーダの切り換えが、自動的に実行される。なお、ここでは、投手キャラクタM1からボールがリリースされた時と、リリースされたボールがバットに衝突した時とでは、同じシェーダが設定されるようになっている。しかしながら、リリースされたボールがバットに衝突した瞬間は、「バット用の木材」を指定シェーダに設定し、打ち返されたボールが飛球中は、「ボール用の革」を指定シェーダに設定するようにしても良い。
なお、各イベントに対応するシェーダ指定命令が、CPU7から発行されていない状態では(S8でNo)、所定のイベントの発生の有無が、継続して検査される。
続いて、指定シェーダを有するオブジェクトが、設定される(S10)。たとえば、指定シェーダデータZDo(j,k,2)に対応するシェーダ(指定シェーダ)が割り当てられたオブジェクトを検索する処理を、CPU7に実行させることにより、指定シェーダを有するオブジェクトが、設定される。
具体的には、投手キャラクタM1が投球姿勢をとった時には、「投手の顔用の肌」に対応する指定シェーダデータZDo(1,6,2)が割り当てられた、顔オブジェクトOF1が、複数のオブジェクトの中からCPU7により検索される。また、投手キャラクタM1からボールがリリースされた時には、「ボール用の革」に対応する指定シェーダデータZDo(1,9,2)が割り当てられた、ボールオブジェクトOI1が、複数のオブジェクトの中からCPU7により検索される。
また、リリースされたボールがバットに衝突した時には、「ボール用の革」に対応する指定シェーダデータZDo(1,9,2)が割り当てられた、ボールオブジェクトOI1が、複数のオブジェクトの中からCPU7により検索される。さらに、リリースされたボールが捕手キャラクタに捕球された時には、「捕手のグローブ用の革」に対応する指定シェーダデータZDo(3,k,2)が割り当てられた、捕手キャラクタのグローブオブジェクトOH3が、複数のオブジェクトの中からCPU7により検索される。なお、ここでは、捕手キャラクタのグローブオブジェクトを示す記号として、「OH3」が用いられている。
これにより、投手キャラクタM1と打者キャラクタM2とが対戦する場面において、投手キャラクタM1や打者キャラクタM2が動作した場合、発生したイベントに応じて、指定シェーダが順に切り換えられ、この指定シェーダが割り当てられたオブジェクトOF1,OI1,OH3が、指定される。すなわち、発生したイベントに応じて、指定シェーダが自動的に切り換えられ、この指定シェーダの切り換えに応じて、指定オブジェクトOF1,OI1,OH3(指定シェーダが割り当てられたオブジェクト)も、自動的に切り換えられる。
続いて、仮想カメラCの焦点SFが、設定される(S11)。たとえば、指定シェーダが割り当てられたオブジェクト(指定オブジェクト)の位置座標データを、仮想カメラCの焦点SFを規定するための位置座標データとして、CPU7に認識させることにより、仮想カメラCの焦点SFが、指定オブジェクトに設定される。詳細には、指定オブジェクトOF1,OI1,OH3の重心W16,W19,W38の位置座標データOJ(j,k)を、仮想カメラCの焦点用の位置座標データCOJo(j,k)として、CPU7に認識させることにより、仮想カメラCの焦点SFが、指定オブジェクトOF1,OI1,OH3に対して設定される。なお、ここでは、捕手キャラクタのグローブオブジェクトの重心を示す記号として、「W38」が用いられている。
具体的には、投手キャラクタM1が投球姿勢をとった時には、顔オブジェクトOF1(指定オブジェクト)の重心位置W16に、仮想カメラCの焦点SFが設定される。また、投手キャラクタM1からボールがリリースされた時には、ボールオブジェクトOI1(指定オブジェクト)の重心位置W19に、仮想カメラCの焦点SFが設定される。また、リリースされたボールがバットに衝突した時には、ボールオブジェクトOI1(指定オブジェクト)の重心位置W16に、仮想カメラCの焦点SFが設定される。さらに、リリースされたボールが捕手キャラクタに捕球された時には、捕手キャラクタのグローブオブジェクト(指定オブジェクト)の重心位置W38に、仮想カメラCの焦点SFが設定される。
続いて、指定オブジェクトに仮想カメラCの焦点SFを合わした状態で、仮想カメラCに映るモデルすなわち各種のオブジェクトが、テレビジョンモニタ20に表示される(S12)。すなわち、仮想カメラCに撮影された画像が、テレビジョンモニタ20に出力される。ここでは、たとえば、モデルが静止している場合には、仮想カメラCの焦点SFも静止した状態で、維持される。一方で、モデルが移動する場合には、モデルの移動に連動して、仮想カメラCの焦点SFも移動する。このように、モデルが静止していても移動していても、仮想カメラCの焦点SFを常に指定オブジェクトOF1,OI1,OH3に合わした状態で、仮想カメラCに映るモデルが、テレビジョンモニタ20に表示される。
具体的には、投手キャラクタM1が投球姿勢をとった時には、投手キャラクタM1の顔オブジェクトOF1に焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。また、投手キャラクタM1からボールがリリースされた時には、ボールオブジェクトOI1に焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。また、リリースされたボールがバットに衝突した時には、ボールオブジェクトOI1に焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。さらに、リリースされたボールが捕手キャラクタに捕球された時には、捕手のグローブオブジェクトOH3に焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。
なお、リリースされたボールが捕手キャラクタに捕球される時には、仮想カメラCの配置位置C1を、図6の注視点C2に移動することにより、捕手キャラクタが正面側から仮想カメラCにより撮影される。この場合、捕手キャラクタを正面側から撮影できるように、表示空間用のデータHS(m)が適宜修正される。この場合に用いられる表示空間用のデータHS(m)は、ゲームプログラムにおいて予め規定されたデータである。
続いて、プレイが終了したか否かが、CPU7により判断される(S13)。ここで、プレイが終了した場合、すなわちプレイの終了を示す命令がCPU7から発行された場合(S13でYes)、プレイ中の各種データがRAM12に格納される(S14)。なお、ここでは、プレイの終了を示すタイミングは、ゲームプログラムにおいて予め規定されており、プレイが終了したときに、プレイの終了を示す命令が、CPU7から自動的に発行される。
このため、プレイが継続中の場合、すなわちプレイの終了を示す命令がCPU7から発行されていない状態では(S13でNo)、1プレイが終了するまで、実行中の処理が、CPU7により監視される。そして、プレイの終了を示す命令がCPU7から発行されたときに、プレイが終了する(S13でYes)。
続いて、所定のイベントが発生したときに指定されるシェーダ(指定シェーダ)を変更するための命令が、発行されたか否かが、CPU7により判断される(S15)。言い換えると、イベントと指定シェーダとの対応関係を示す対応テーブルを修正するための命令が、発行されたか否かが、CPU7により判断される。たとえば、テレビジョンモニタ20に表示された指定シェーダ変更用のボタン(図示しない)が押されたか否かが、CPU7により判断される。ここで、指定シェーダ変更用のボタンが押された場合、すなわち対応テーブルを修正するための命令が、CPU7から発行された場合(S15でYes)、対応テーブルを修正するための修正画面が、図12(a)に示すように、テレビジョンモニタ20に表示される。この状態で、ゲーム制作者が、コントローラ17を操作することにより、所望のシェーダを指定すると(図12(b)を参照)、対応テーブルが修正され、修正後の対応テーブルがRAM12に格納される(S16)。
図12(b)では、ゲーム制作者により指定シェーダの欄が選択されると、プルダウンメニューが表示される。そして、プルダウンメニューにおいて、ゲーム制作者が所望するシェーダが選択されると、選択されたシェーダが、イベントに対応する新規の指定シェーダとして、CPU7に認識される。このようにして、対応テーブルが修正され、修正後の対応テーブルがRAM12に格納される。
なお、指定シェーダ変更用のボタンが押されなかった場合、すなわち対応テーブルを修正するための命令が、CPU7から発行されなかった場合(S15でNo)、対応テーブルを修正するための修正画面は、テレビジョンモニタ20に表示されない。この場合は、後述するステップ17(S17)の処理が、CPU7により実行される。
続いて、対応テーブルを修正した後のプレイをテレビジョンモニタ20に表示するためのリプレイ命令が、指示されたか否かが、CPU7により判断される(S17)。たとえば、テレビジョンモニタ20に表示されたリプレイ用のボタン(図示しない)が押されたか否かが、CPU7により判断される。ここで、リプレイ用のボタンが押された場合、すなわちリプレイ命令がCPU7に認識された場合(S17でYes)、修正後の対応テーブルに基づいて、ステップ5(S5)の処理が、CPU7により再実行される。すると、修正後の指定シェーダを有するオブジェクトに仮想カメラCの焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。
具体的には、「投手キャラクタが投球姿勢をとった」に対応する指定シェーダが、「投手の顔用の肌」から「投手のグローブ用の革」に変更されたときに(図12(b)を参照)、リプレイ用のボタンが押されると、投手キャラクタM1が投球姿勢をとった時に、投手キャラクタM1のグローブオブジェクトに焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。同様に、他のイベントに対応する指定シェーダが変更されたときに、リプレイ用のボタンが押されると、修正後の対応テーブルのイベントが発生した時に、発生したイベントに対応するオブジェクト(変更後の指定シェーダが割り当てられたオブジェクト)に焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。
このように、ゲーム制作者は、テレビジョンモニタ20に表示された画像を目で確認した上で、イベントと指定シェーダとの対応関係を修正し、イベント発生時に仮想カメラCの焦点SFを合わせるオブジェクトを、変更することができる。このように、本実施形態では、ライブラリデータに基づいて指定シェーダを容易に設定することができるだけでなく、指定シェーダを容易に変更することができる。これにより、ゲーム制作者は、所望のオブジェクトに容易に仮想カメラCの焦点SFを合わせることができる。
続いて、開発用の野球ゲームを終了するか否かが、CPU7により判断される(S18)。たとえば、開発用の野球ゲームを終了するためのゲーム終了ボタン(図示しない)が押されたか否かが、CPU7により判断される。ここで、ゲーム終了ボタンが押された場合、すなわちゲーム終了命令がCPU7に認識された場合(S18でYes)、本野球ゲームの各種データがRAM12に格納される(S19)。具体的には、ゲーム制作者が、コントローラ17を操作して、テレビジョンモニタ20に表示されたゲーム終了ボタンを押した場合、開発用の野球ゲームが終了される。
ここで、開発用の野球ゲームが継続中の場合(18でNo)、すなわち開発用の野球ゲームの終了を示す命令が指示されていない状態では、開発用の野球ゲームの終了を示す命令指示の有無が、CPU7により常に監視されている。この状態において、次のプレイの制御が、CPU7により実行される。すなわち、次のプレイにおけるステップ2(S2)の処理が、CPU7により実行される。
本実施形態では、まず、投手キャラクタM1が投球姿勢をとった時には、「投手の顔用の肌」を指定シェーダに設定することにより、投手キャラクタM1の顔オブジェクトOF1が、検索され指定される。そして、仮想カメラCの焦点位置が、投手キャラクタM1の顔オブジェクトOF1に設定される。そして、投手キャラクタM1の顔オブジェクトOF1に焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。
次に、投手キャラクタM1からボールがリリースされた時には、「ボール用の革」を指定シェーダに設定することにより、ボールオブジェクトOI1が、検索され指定される。そして、仮想カメラCの焦点位置が、ボールオブジェクトOI1に設定される。そして、ボールオブジェクトOI1に焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。
最後に、リリースされたボールがバットに衝突した時には、「ボール用の革」を指定シェーダに設定することにより、ボールオブジェクトOI1が、検索され指定される。そして、仮想カメラCの焦点位置が、ボールオブジェクトOI1に設定される。そして、リリースされたボールがバットに衝突した時には、ボールオブジェクトOI1に焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。
また、ここで、リリースされたボールが捕手キャラクタに捕球された時には、「捕手のグローブ用の革」を指定シェーダに設定することにより、捕手のグローブオブジェクトが、検索され指定される。そして、仮想カメラCの焦点位置が、捕手のグローブオブジェクトに設定される。そして、捕手のグローブオブジェクトに焦点SFが合った状態で、視錐空間SSの内部のモデルが、テレビジョンモニタ20に表示される。
このように、本実施形態では、指定属性(指定シェーダ)を設定することにより、指定属性を有するオブジェクトを、ゲーム空間のオブジェクトの中から、検索し指定することができる。そして、この指定オブジェクト(指定属性を有するオブジェクト)の位置に、仮想カメラCの焦点SFを設定することにより、指定オブジェクトに仮想カメラCの焦点SFを合わした状態で、仮想カメラCに映るオブジェクトを、テレビジョンモニタ20に表示することができる。すなわち、指定属性を設定するだけで、画像の焦点SFを容易に指定オブジェクトに設定することができる。
〔他の実施形態〕
(a)前記実施形態では、ライブラリに基づいて、所定のイベントの発生の有無が、検査されるようになっている。そして、ライブラリに含まれる所定のイベントが、発生したときに、シェーダ(指定シェーダ)が指定され、この指定シェーダに対応するオブジェクトに仮想カメラCの焦点SFが設定されるようになっている。
しかしながら、仮想カメラCの焦点SFをオブジェクトに合わせるタイミング(時機)は、前記実施形態に限定されず、どのようにしても良い。
たとえば、前記実施形態において、命令時機設定手段をさらに用意すると、所定のイベントが発生したときだけでなく、所定のフレーム数や時間等が経過したときに、仮想カメラCの焦点SFをオブジェクトに合わせることができる。
たとえば、命令時機設定手段では、スケジュールデータをCPU7に認識させることにより、シェーダ指定命令を指示するタイミングが、設定される。ここで、スケジュールデータとは、シェーダを指定するためのシェーダ指定命令をCPU7に発行させるタイミングを規定するためのデータである。スケジュールデータの初期値は、ゲームプログラムにおいて予め規定されており、ゲームプログラムがロードされるときに、RAM12に格納される。
具体的には、スケジュールデータは、仮想カメラCの焦点SFをオブジェクトに合わせるタイミングを定義するためのフレーム数や時間等から構成されている。ここでは、スケジュールデータが、フレーム数で定義されている場合の例を示す。
進行中のゲームのフレーム数が、スケジュールデータに記載されたあるフレーム数に一致した場合、このフレーム数に対応するシェーダデータZDo(j,k,2)を指定するためのシェーダ指定命令が、CPU7から発行される。これにより、指定シェーダを設定することができる。なお、シェーダ指定命令は、命令発行手段(第2命令発行手段)において、CPU7から発行される。
ここでは、たとえば、投手キャラクタM1が投球姿勢をとったときを、0フレームと定義する。そして、スケジュールデータとして、図13に示すように、「60(フレーム),120(フレーム)」とが用意されているものとする。この場合、60フレームになった時に、「打者の顔用の肌」が指定シェーダとして指定される。そして、120フレームになった時に、「投手の顔用の肌」が指定シェーダとして指定される。
前記実施形態では、投手キャラクタM1が投球姿勢をとったときには、仮想カメラCの焦点SFは、投手キャラクタM1の顔に合うようになっている。このため、ここでの命令時機設定手段による処理が実行されると、投手キャラクタM1と打者キャラクタM2とが対峙している状態で、60フレーム(1sec)が経過すると、仮想カメラCの焦点SFを、投手キャラクタM1から打者キャラクタM2へと切り換えることができる。そして、この状態で、120フレーム(2sec)が経過すると、仮想カメラCの焦点SFを、打者キャラクタM2から投手キャラクタM1へと戻すことができる。
このように、本発明では、所定のイベントの発生時だけでなく、所定のフレーム数や所定の時間等になった時にも、シェーダ指定命令を指示することができ、このシェーダ指定命令が示すシェーダを有するオブジェクトに仮想カメラCの焦点SFを合わせることができる。
(b)前記実施形態では、ゲームプログラムを適用しうるコンピュータの一例としての開発用のビデオゲーム装置を用いた場合の例を示したが、コンピュータは、前記実施形態に限定されず、モニタが別体に構成されたゲーム装置、モニタが一体に構成されたゲーム装置、ゲームプログラムを実行することによってゲーム装置として機能するパーソナルコンピュータやワークステーションなどにも同様に適用することができる。
(c)本発明には、前述したようなゲームを実行するプログラムおよびこのプログラムを記録したコンピュータ読み取り可能な記録媒体も含まれる。この記録媒体としては、カートリッジ以外に、たとえば、コンピュータ読み取り可能なフレキシブルディスク、半導体メモリ、CD−ROM、DVD、MO、ROMカセット、その他のものが挙げられる。