(57)【要約】【構成】ゲーム装置１２はＣＰＵ３６を含み、ＣＰＵ３６はゲーム空間内に配置される仮想カメラで撮影された画像に基づいてゲーム画像を生成し、ゲーム装置１２に接続されるモニタ３４にゲーム画面を表示する。たとえば、プレイヤキャラクタのキャラクタ位置を目標位置とし、この目標位置に仮想カメラの注視点の位置  （注視位置）が所定の割合で近づくように、仮想カメラは移動される。つまり、仮想カメラは、プレイヤキャラクタを後から少し遅れて追従する。【効果】表現の柔らかく振れのないゲーム画面を表示できるので、プレイヤはゲームをプレイし易い。【選択図】  図２
2004329463.tif 000002
【特許請求の範囲】
【請求項１】
３次元のゲーム空間内に配置された仮想カメラを当該ゲーム空間内のプレイヤキャラクタの位置で決まる目標位置に追従させることによって当該ゲーム空間におけるプレイヤキャラクタの様子をゲーム画像として表示手段に表示させるゲーム装置であって、
前記ゲーム空間において前記プレイヤキャラクタを移動させるために、前記プレイヤによって操作手段を通じて入力される入力情報を所定数のフレーム間隔で取得する入力情報取得手段、
前記入力情報に基づいて前記ゲーム空間における前記プレイヤキャラクタの位置および前記目標位置を更新する位置更新手段、
前記プレイヤキャラクタの移動の有無に拘わらず、前記目標位置から前記仮想カメラ位置に対して固定的に決定される基準位置までの距離が所定の割合で縮まるように、当該仮想カメラの位置を順次更新する仮想カメラ位置更新手段、および
更新された前記プレイヤキャラクタの位置および前記仮想カメラの位置に基づいたゲーム画像を生成するゲーム画像生成手段を備える、ゲーム装置。
【請求項２】
注視点に対して固定的に決定される位置に仮想カメラを配置する、かつ当該注視点を向くように前記仮想カメラの向きを設定する仮想カメラ設定手段をさらに備え、
前記基準位置は前記注視点の位置であり、
前記仮想カメラ位置更新手段は、前記プレイヤキャラクタの移動の有無に拘わらず、前記目標位置から前記注視点の位置までの距離が所定の割合で縮まるように、前記注視点の位置を順次更新することにより、当該仮想カメラの位置を順次更新する、請求項１記載のゲーム装置。
【請求項３】
注視点に対して固定的に決定される位置に仮想カメラを配置する、かつ当該注視点を向くように前記仮想カメラの向きを設定する仮想カメラ設定手段をさらに備え、
前記基準位置は前記仮想カメラの位置であり、
前記目標位置は前記プレイヤキャラクタに連動して移動する前記仮想カメラの初期位置であり、
前記仮想カメラ位置更新手段は、前記プレイヤキャラクタの移動の有無に拘わらず、前記目標位置から前記仮想カメラの位置までの距離が所定の割合で縮まるように、当該仮想カメラの位置を順次更新する、請求項１記載のゲーム装置。
【請求項４】
前記目標位置を基準とする最大距離を設定し、当該目標位置から前記基準位置までの距離が当該最大距離よりも大きくなったかどうかを判別する距離判別手段、および
前記距離判別手段によって前記最大距離よりも大きくなったことが判別されたとき、前記基準位置を前記目標位置を基準とする最大距離以内の位置に強制的に更新する強制更新手段をさらに備える、請求項１ないし３のいずれかに記載のゲーム装置。
【請求項５】
前記カメラ位置更新手段は、更新後の基準位置を算出する基準位置算出手段を含み、
前記距離判別手段は、前記基準位置算出手段によって算出された更新後の前記基準位置が前記目標位置から最大距離よりも大きくなったかどうかを判別する、請求項４記載のゲーム装置。
【請求項６】
３次元のゲーム空間内に配置された仮想カメラを当該ゲーム空間内のプレイヤキャラクタの位置で決まる目標位置に追従させることによって当該ゲーム空間におけるプレイヤキャラクタの様子をゲーム画像として表示手段に表示させるゲーム装置のコンピュータによって実行される仮想カメラの制御プログラムであって、
前記コンピュータを、
前記ゲーム空間において前記プレイヤキャラクタを移動させるために、前記プレイヤによって操作手段を通じて入力される入力情報を所定数のフレーム間隔で取得する入力情報取得手段、
前記入力情報に基づいて前記ゲーム空間における前記プレイヤキャラクタの位置および前記目標位置を更新する位置更新手段、
前記プレイヤキャラクタの移動の有無に拘わらず、前記目標位置から前記仮想カメラの位置に対して固定的に決定される基準位置までの距離が所定の割合で縮まるように、当該仮想カメラの位置を順次更新する仮想カメラ位置更新手段、および
更新された前記プレイヤキャラクタの位置および前記仮想カメラの位置に基づいたゲーム画像を生成するゲーム画像生成手段として機能させる、仮想カメラの制御プログラム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はゲーム装置および仮想カメラの制御プログラムに関し、特にたとえば、３次元のゲーム空間内に配置された仮想カメラを当該ゲーム空間内のプレイヤキャラクタの移動に追従させることによって当該ゲーム空間におけるプレイヤキャラクタの様子をゲーム画像として表示手段に表示させる、ゲーム装置および仮想カメラの制御プログラムに関する。
【０００２】
【従来の技術】
従来のこの種のゲーム装置の一例が特許文献１に開示される。この特許文献１に開示される画像生成装置は、移動体と視点との間に設けられた仮想的なバネにより、プレイヤが操作する移動体に視点を追従させるものである。たとえば、大きさの異なる２つのバネ定数が用意されており、バネ定数を大きくし、視点の追従強度を強くすることにより、移動体が加速または減速した場合の画像のぶれを少なくして、ゲームの初級者に最適なゲーム画像を提供していた。一方、バネ定数を小さくし、視点の追従強度を弱くすることにより、移動体が加速または減速した場合の画面のぶれを大きくして、ゲームプレイの難易度を高くしていた。すなわち、ゲームの上級者に対して、迫力がありリアルなゲーム画像を提供していた。
【０００３】
また、従来のこの種のゲーム装置の他の一例が特許文献２に開示される。この特許文献２に開示される３次元ゲーム装置は、慣性の働きを利用して、プレイヤが操作する移動体に仮想カメラを追従させるものである。たとえば、移動体が高速で移動する場合には、仮想カメラは後ろに取り残されるように移動体を追従し、また、移動体が低速で移動する場合には、仮想カメラは移動体の真上に近い位置で移動体を追従していた。
【０００４】
【特許文献１】
特開平１１−３４７２４９号
【特許文献２】
特開平１０−１１３４６８号
【０００５】
【発明が解決しようとする課題】
しかし、前者の場合には、仮想的なバネの伸び縮みに伴って視点（仮想カメラ）の位置が前後に揺動するため、プレイし難く、また、いわゆる３Ｄ酔いを引き起こす原因となっていた。
【０００６】
また、後者の場合には、移動体が急停止した場合には、慣性の働きにより、必要以上に仮想カメラがプレイヤキャラクタに近づいてしまい、したがって、表示されるゲーム画面が見づらく、プレイし難いという問題があった。
【０００７】
それゆえに、この発明の主たる目的は、プレイし易いゲーム画面を表示できる、ゲーム装置および仮想カメラの制御プログラムを提供することである。
【０００８】
【課題を解決するための手段】
請求項１は、３次元のゲーム空間内に配置された仮想カメラを当該ゲーム空間内のプレイヤキャラクタの位置で決まる目標位置に追従させることによって当該ゲーム空間におけるプレイヤキャラクタの様子をゲーム画像として表示手段に表示させるゲーム装置である。このゲーム装置は、ゲーム空間においてプレイヤキャラクタを移動させるために、プレイヤによって操作手段を通じて入力される入力情報を所定数のフレーム間隔で取得する入力情報取得手段、入力情報に基づいてゲーム空間におけるプレイヤキャラクタの位置および目標位置を更新する位置更新手段、プレイヤキャラクタの移動の有無に拘わらず、目標位置から仮想カメラ位置に対して固定的に決定される基準位置までの距離が所定の割合で縮まるように、当該仮想カメラの位置を順次更新する仮想カメラ位置更新手段、および更新されたプレイヤキャラクタの位置および仮想カメラの位置に基づいたゲーム画像を生成するゲーム画像生成手段を備える。
【０００９】
請求項２は請求項１に従属し、注視点に対して固定的に決定される位置に仮想カメラを配置する、かつ当該注視点を向くように仮想カメラの向きを設定する仮想カメラ設定手段をさらに備え、基準位置は注視点の位置であり、仮想カメラ位置更新手段は、プレイヤキャラクタの移動の有無に拘わらず、目標位置から注視点の位置までの距離が所定の割合で縮まるように、注視点の位置を順次更新することにより、当該仮想カメラの位置を順次更新する。
【００１０】
請求項３は請求項１に従属し、注視点に対して固定的に決定される位置に仮想カメラを配置する、かつ当該注視点を向くように仮想カメラの向きを設定する仮想カメラ設定手段をさらに備え、基準位置は仮想カメラの位置であり、前記目標位置はプレイヤキャラクタに連動して移動する仮想カメラの初期位置であり、仮想カメラ位置更新手段は、プレイヤキャラクタの移動の有無に拘わらず、目標位置から仮想カメラの位置までの距離が所定の割合で縮まるように、当該仮想カメラの位置を順次更新する。
【００１１】
請求項４は請求項１ないし３のいずれかに従属し、目標位置を基準とする最大距離を設定し、当該目標位置から基準位置までの距離が当該最大距離よりも大きくなったかどうかを判別する距離判別手段、および距離判別手段によって最大距離よりも大きくなったことが判別されたとき、基準位置を目標位置を基準とする最大距離以内の位置に強制的に更新する強制更新手段をさらに備える。
【００１２】
請求項５は請求項４に従属し、カメラ位置更新手段は、更新後の基準位置を算出する基準位置算出手段を含み、距離判別手段は、基準位置算出手段によって算出された更新後の基準位置が目標位置から最大距離よりも大きくなったかどうかを判別する
請求項６は、３次元のゲーム空間内に配置された仮想カメラを当該ゲーム空間内のプレイヤキャラクタの位置で決まる目標位置に追従させることによって当該ゲーム空間におけるプレイヤキャラクタの様子をゲーム画像として表示手段に表示させるゲーム装置のコンピュータによって実行される仮想カメラの制御プログラムである。この仮想カメラの制御プログラムは、コンピュータを、ゲーム空間においてプレイヤキャラクタを移動させるために、プレイヤによって操作手段を通じて入力される入力情報を所定数のフレーム間隔で取得する入力情報取得手段、入力情報に基づいてゲーム空間におけるプレイヤキャラクタの位置および目標位置を更新する位置更新手段、プレイヤキャラクタの移動の有無に拘わらず、目標位置から仮想カメラの位置に対して固定的に決定される基準位置までの距離が所定の割合で縮まるように、当該仮想カメラの位置を順次更新する仮想カメラ位置更新手段、および更新されたプレイヤキャラクタの位置および仮想カメラの位置に基づいたゲーム画像を生成するゲーム画像生成手段として機能させる。
【００１３】
【作用】
請求項１によれば、ゲーム装置（１２：実施例で相当する参照番号。以下、同じ。）は、３次元のゲーム空間（８０）内に配置された仮想カメラ（８４）を当該ゲーム空間（８０）内のプレイヤキャラクタ（８２）の位置で決まる目標位置に追従させることによって当該ゲーム空間（８０）におけるプレイヤキャラクタ（８２）の様子をゲーム画像として表示手段（３４）に表示させる。このゲーム装置（１２）では、入力情報取得手段（３６，５６）は、ゲーム空間（８０）においてプレイヤキャラクタ（８２）を移動させるために、プレイヤによって操作手段（２２，２６）を通じて入力される入力情報を所定数のフレーム間隔で取得する。ここで、フレーム間隔とは、１画面分の画像を生成し表示するまでの時間を表す単位であり、たとえば、フレームレートが６０ｆｐｓである場合には、１／６０秒単位がフレーム間隔となる。すなわち、「所定のフレーム間隔で取得」とは、所定数が「１」であれば、１フレーム間（たとえば、１／６０秒間）に取得することを意味し、また、所定数が「２」であれば、２フレーム間（たとえば、２／６０秒間）に取得することを意味する。位置更新手段（３６，Ｓ２７）は、取得した入力情報に基づいてゲーム空間（８０）におけるプレイヤキャラクタ（８２）の位置および目標位置を更新する。つまり、それぞれの３次元座標を更新する。仮想カメラ位置更新手段（３６，Ｓ４１，Ｓ４３，Ｓ４５，Ｓ６１，Ｓ６３，Ｓ６５）は、プレイヤキャラクタの移動の有無に拘わらず、目標位置から仮想カメラ位置に対して固定的に決定される基準位置までの距離が所定の割合で縮まるように、当該仮想カメラ（８４）の位置を順次更新する。つまり、プレイヤキャラクタ（８０）が移動した後に停止し続ける場合や移動し続ける場合に拘わらず、繰り返し仮想カメラ（８４）の位置を更新する。そして、ゲーム画像生成手段（３６，Ｓ１５）は、更新されたプレイヤキャラクタ（８２）の位置および仮想カメラ（８４）の位置に基づいたゲーム画像を生成する。
【００１４】
請求項１の発明によれば、仮想カメラに対して固定的に決定される基準位置を目標位置に所定の割合で常に近づけるように仮想カメラの位置を順次更新するので、プレイヤキャラクタの移動に少し遅れて仮想カメラを移動させることができ、しかもゲーム画面にぶれが生じることはない。つまり、表現が柔らかく、プレイし易いゲーム画面を表示することができる。
【００１５】
請求項２によれば、仮想カメラ設定手段（３６，Ｓ４５，Ｓ６３）は、注視点に対して固定的に決定される位置に仮想カメラ（８４）を配置する、かつ当該注視点を向くように仮想カメラ（８４）の向きを設定する。たとえば、基準位置を注視点の位置に決定した場合には、仮想カメラ位置更新手段（３６，Ｓ４１，Ｓ４３，Ｓ４５，Ｓ６１，Ｓ６３，Ｓ６５）は、プレイヤキャラクタ（８２）の移動の有無に拘わらず、目標位置から注視点の位置までの距離が所定の割合で縮まるように、注視点の位置を順次更新することにより、当該仮想カメラ（８４）の位置を順次更新する。つまり、注視点の位置は仮想カメラ（８４）の位置と所定の距離関係を有しており、更新した注視点の位置とその所定の距離関係を有する位置に仮想カメラ（８４）の位置が更新されるのである。これにより、プレイヤキャラクタ（８２）の後から少し遅れて仮想カメラ（８４）を追従させることができ、プレイヤキャラクタ（８２）が移動後に停止し続ける場合にも所定の割合で仮想カメラ（８４）を近づけることができるのである。
【００１６】
請求項３によれば、仮想カメラ設定手段（３６，Ｓ４５，Ｓ６３）は、注視点に対して固定的に決定される位置に仮想カメラ（８４）を配置する、かつ当該注視点を向くように仮想カメラ（８４）の向きを設定する。たとえば、基準位置は仮想カメラ（８４）の位置であり、また、目標位置は、プレイヤキャラクタに連動して移動する仮想カメラの初期位置である。仮想カメラ位置更新手段（３６，Ｓ４１，Ｓ４３，Ｓ４５，Ｓ６１，Ｓ６３，Ｓ６５）は、プレイヤキャラクタ（８２）の移動の有無に拘わらず、目標位置から仮想カメラ（８４）の位置までの距離が所定の割合で縮まるように、当該仮想カメラ（８４）の位置を順次更新する。このようにしても、仮想カメラ（８４）をプレイヤキャラクタ（８２）の後ろから少し遅れて追従させることができ、また、プレイヤキャラクタ（８２）が移動した後に停止し続ける場合にも所定の割合で仮想カメラ（８４）を近づけることができるのである。
【００１７】
請求項４によれば、目標位置を基準とする最大距離を設定しておき、距離判別手段（３６，Ｓ３９，Ｓ５９）が当該目標位置から基準位置までの距離が当該最大距離よりも大きくなったかどうかを判別する。距離判別手段（３６，Ｓ３９，Ｓ５９）によって最大距離よりも大きくなったことが判別されたとき、強制更新手段（３６，Ｓ４３，Ｓ４５，Ｓ６１，Ｓ６３）は、基準位置を目標位置を基準とする最大距離以内の位置に強制的に更新する。たとえば、最大距離は、プレイヤキャラクタ（８２）がゲーム画面からはみ出さないようにするために設定され、したがって、たとえばプレイヤキャラクタ（８２）が高速に移動する場合には、所定の割合で近づけるだけでなく、最大距離を越える場合には、強制的に基準位置を最大距離以内に移動させるようにしている。これにより、不都合なゲーム画面が表示されるのを防止しているのである。
【００１８】
請求項５によれば、カメラ位置更新手段（３６，Ｓ４１，Ｓ４３，Ｓ４５，Ｓ６１，Ｓ６３，Ｓ６５）は、更新後の基準位置を算出する基準位置算出手段（３６，Ｓ３７，Ｓ５７）を含む。つまり、距離判別手段（３６，Ｓ３９，Ｓ５９）は、基準位置算出手段（３６，Ｓ３７，Ｓ５７）によって算出された更新後の基準位置が目標位置から最大距離よりも大きくなったかどうかを判別するのである。更新後の仮想カメラ（８２）の位置を適切に設定するので、不都合なゲーム画面が表示されるのを未然に防止することができる。
【００１９】
請求項６においても請求項１と同様に、プレイし易いゲーム画面を表示することができる。
【００２０】
【発明の効果】
この発明によれば、仮想カメラに対して固定的に決定される基準位置を目標位置に所定の割合で常に近づけるように仮想カメラの位置を順次更新するので、プレイヤキャラクタの移動に少し遅れて仮想カメラを移動させることができ、しかもゲーム画面にぶれが生じることはない。つまり、表現が柔らかく、プレイし易いゲーム画面を表示することができる。
【００２１】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００２２】
【実施例】
図１を参照して、この実施例のビデオゲームシステム１０はビデオゲーム装置１２を含む。このビデオゲーム装置１２には電源が与えられるが、この電源は、実施例では、一般的なＡＣアダプタ（図示せず）であってよい。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、ビデオゲーム装置１２を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例としては、電源として、バッテリが用いられてもよい。
【００２３】
ビデオゲーム装置１２は、略立方体のハウジング１４を含み、ハウジング１４の上端には光ディスクドライブ１６が設けられる。光ディスクドライブ１６には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が装着される。ハウジング１４の前面には複数の（実施例では４つの）コネクタ２０が設けられる。これらコネクタ２０は、コントローラ２２に一体的に設けられるケーブル２４によって、コントローラ２２をビデオゲーム装置１２に接続するためのものであり、この実施例では最大４つのコントローラ２２をビデオゲーム装置１２に接続することができる。
【００２４】
コントローラ２２には、その上面，下面，或いは側面などに、操作手段（コントロール）２６が設けられる。操作手段２６は，たとえば２つのアナログジョイスティック，１つの十字キー，複数のボタンスイッチ等を含む。１つのアナログジョイスティックは、スティックの傾き量と方向とによって、プレイヤキャラクタ（プレイヤがコントローラ２２によって操作可能な動画キャラクタ）の移動方向および／または移動速度ないし移動量などを入力するために用いられる。他のアナログジョイスティックは、傾斜方向によって、仮想カメラの移動を制御する。十字スイッチは、アナログジョイスティックに代えてプレイヤキャラクタの移動方向を指示するために用いられる。ボタンスイッチは、プレイヤキャラクタの動作を指示するために利用されたり、３次元画像の仮想カメラの視点を切り換えたり、プレイヤキャラクタの移動スピード調節等に用いられる。ボタンスイッチは、さらに、たとえばメニュー選択やポインタあるいはカーソル移動を制御する。
【００２５】
なお、この実施例ではコントローラ２２がそれと一体的に設けられるケーブル２４によってビデオゲーム装置１２に接続された。しかしながら、コントローラ２２は、他の方法、たとえば電磁波（たとえば電波または赤外線）を介してワイヤレスで、ビデオゲーム装置１２に接続されてもよい。また、コントローラ２２の操作手段２６の具体的構成は、もちろん実施例の構成に限られるものではなく、任意の変形が可能である。たとえば、アナログジョイスティックは１つだけでもよいし、用いられなくてもよい。十字スイッチは用いられなくてもよい。
【００２６】
ビデオゲーム装置１２のハウジング１４の前面のコネクタ２０の下方には、少なくとも１つの（この実施例では２つの）メモリスロット２８が設けられる。このメモリスロット２８にはメモリカード３０が挿入される。メモリカード３０は、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（たとえばゲームの結果）を保存（セーブ）しておいたりするために利用される。
【００２７】
ビデオゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、そのコネクタを用いて、ＡＶケーブル３２を通してビデオビデオゲーム装置１２にモニタ３４を接続する。このモニタ３４は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２は、ビデオゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に与える。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのゲーム音声（ステレオゲーム音声）が出力される。
【００２８】
このゲームシステム１０において、ユーザまたはゲームプレイヤがゲーム（または他のアプリケーション）をプレイするために、プレイヤはまずゲーム装置１２の電源をオンし、次いで、プレイヤはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）ソフトをストアしている適宜の光ディスク１８を選択し、その光ディスク１８をゲーム装置１２のディスクドライブ１６にローディングする。応じて、ゲーム装置１２がその光ディスク１８にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。プレイヤはゲーム装置１２に入力を与えるためにコントローラ２２を操作する。たとえば、操作手段２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。操作手段２６の他のものを動かすことによって、動画キャラクタ（プレイヤキャラクタ）を異なる方向に移動させ、または３次元（３Ｄ）のゲームプレイの仮想空間（以下、「ゲーム空間」という。）におけるプレイヤの視点（カメラ位置）を変化させることができる。
【００２９】
図２は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。ビデオゲーム装置１２には、中央処理ユニット（以下、「ＣＰＵ」という。）３６が設けられる。このＣＰＵ３６は、コンピュータ或いはプロセサなどとも呼ばれ、ビデオゲーム装置１２の全体的な制御を担当する。ＣＰＵ３６ないしコンピュータは、ゲームプロセサとして機能し、このＣＰＵ３６には、バスを介して、メモリコントローラ３８が結合される。メモリコントローラ３８は主として、ＣＰＵ３６の制御の下で、バスを介して結合されるメインメモリ４０の書込みや読出しを制御する。このメモリコントローラ３８にはＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：グラフィックス処理装置）  ４２が結合される。
【００３０】
ＧＰＵ４２は、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、メモリコントローラ３８を介してＣＰＵ３６からのグラフィクスコマンド（ｇｒａｐｈｉｃｓ  ｃｏｍｍａｎｄ  ：作画命令）  を受け、そのコマンドに従って、ジオメトリユニット４４およびレンダリングユニット４６によって３次元（３Ｄ）ゲーム画像を生成する。つまり、ジオメトリユニット４４は、３次元座標系の各種キャラクタやオブジェクト（複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも３つの頂点座標によって定義される多角形平面をいう）の回転，移動，変形等の座標演算処理を行う。レンダリングユニット４６は、各種オブジェクトの各ポリゴンにテクスチャ（Ｔｅｘｔｕｒｅ  ：模様画像）を張り付けるなどの画像生成処理を施す。したがって、ＧＰＵ４２によって、ゲーム画面上に表示すべき３Ｄ画像データが生成（作成）され、その画像データがフレームバッファ４８内に描画（記憶）される。
【００３１】
なお、ＧＰＵ４２が作画コマンドを実行するにあたって必要なデータ（プリミティブまたはポリゴンやテクスチャ等）は、ＧＰＵ４２がメモリコントローラ３８を介して、メインメモリ４０から入手する。
【００３２】
フレームバッファ４８は、たとえばラスタスキャンモニタ３４の１フレーム分の画像データを描画（蓄積）しておくためのメモリであり、ＧＰＵ４２によって１フレーム毎に書き換えられる。後述のビデオＩ／Ｆ５８がメモリコントローラ３８およびＧＰＵ４２を介してフレームバッファ４８のデータを読み出すことによって、モニタ３４の画面上に３Ｄゲーム画像が表示される。
【００３３】
また、Ｚバッファ５０は、フレームバッファ４８に対応する画素（記憶位置またはアドレス）数×１画素当たりの奥行データのビット数に相当する記憶容量を有し、フレームバッファ４８の各記憶位置に対応するドットの奥行情報または奥行データ（Ｚ値）を記憶するものである。
【００３４】
なお、フレームバッファ４８およびＺバッファ５０は、ともにメインメモリ４０の一部を用いて構成されてもよい。
【００３５】
メモリコントローラ３８はまた、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）５２を介して、ＡＲＡＭ５４に結合される。したがって、メモリコントローラ３８は、メインメモリ４０だけでなく、サブメモリとしてのＡＲＡＭ５４の書込みおよび／または読出しを制御する。
【００３６】
ＤＳＰ５２は、サウンドプロセサとして働き、たとえば、メインメモリ４０に記憶されたサウンドデータ（図示せず）を用いたり、ＡＲＡＭ５４に書き込まれている音波形データ（図示せず）を用いたりして、ゲームに必要な音、音楽或いは音声に対応するオーディオデータを生成する。
【００３７】
メモリコントローラ３８は、さらに、バスによって、各インタフェース（Ｉ／Ｆ）５６，５８，６０，６２および６４に結合される。コントローラＩ／Ｆ５６は、コントローラ２２のためのインタフェースであり、コントローラ２２の操作手段２６の操作信号またはデータを、メモリコントローラ３８を通してＣＰＵ３６に与える。ビデオＩ／Ｆ５８は、フレームバッファ４８にアクセスし、ＧＰＵ４２で作成した画像データを読み出して、画像信号または画像データ（ディジタルＲＧＢピクセル値）をＡＶケーブル３２（図１）を介してモニタ３４に与える。
【００３８】
外部メモリＩ／Ｆ６０は、ゲーム装置１２の前面に挿入されるメモリカード３０（図１）をメモリコントローラ３８に連係させる。それによって、メモリコントローラ３８を介して、ＣＰＵ３６がこのメモリカード３０にデータを書込み、またはメモリカード３０からデータを読み出すことができる。オーディオＩ／Ｆ６２は、メモリコントローラ３８を通してＤＳＰ５２から与えられるオーディオデータまたは光ディスク１８から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号（音声信号）をモニタ３４のスピーカ３４ａに与える。
【００３９】
そして、ディスクＩ／Ｆ６４は、そのディスクドライブ１６をメモリコントローラ３８に結合し、したがって、ＣＰＵ３６がディスクドライブ１６を制御する。このディスクドライブ１６によって光ディスク１８から読み出されたプログラムデータやテクスチャデータ等が、ＣＰＵ３６の制御の下で、メインメモリ４０に書き込まれる。
【００４０】
図３にはメインメモリ４０のメモリマップが示される。メインメモリ４０は、たとえば、プログラム記憶領域４０２およびデータ記憶領域４０４によって構成される。プログラム記憶領域４０２には、光ディスク１８から読み出したゲームプログラムが、一度にまたは部分的にかつ順次的に、記憶される。このゲームプログラムは、この実施例では、ゲームメイン処理プログラム４０２ａ、キャラクタ位置更新プログラム４０２ｂ、カメラ位置更新プログラム４０２ｃ、画像生成プログラム４０２ｄおよび画像表示プログラム４０２ｅなどによって構成される。
【００４１】
ゲームメイン処理プログラム４０２ａは、当該ゲームのメインルーチンを処理するプログラムである。キャラクタ位置更新プログラム４０２ｂは、プレイヤの操作に従うプレイヤキャラクタの位置を、ゲーム空間（ワールド座標系）において更新するプログラムである。カメラ位置更新プログラム４０２ｃは、キャラクタ位置更新プログラム４０２ｂによって更新されたプレイヤキャラクタの位置に基づいて仮想カメラの位置を、ゲーム空間において更新するプログラムである。画像生成プログラム４０２ｄは、ゲーム空間に配置され、プレイヤキャラクタに追従する仮想カメラによって撮影された画像に基づいて３Ｄのゲーム画像を生成するプログラムである。画像表示プログラム４０２ｅは、画像生成プログラム４０２ｄによって生成されたゲーム画像をモニタ３４に表示するプログラムである。
【００４２】
また、データ記憶領域４０４には、光ディスク１８から読み出したデータが、一度にまたは部分的にかつ順次的に、記憶されるとともに、ゲームの進行に伴って発生するゲームデータ等も一時的に記憶される。データとしては、この実施例では、画像データ４０４ａ、注視位置データ４０４ｂ、目標位置データ４０４ｃ、差分データ４０４ｄ、差分最大値データ４０４ｅおよびカメラ座標データ４０４ｆなどが記憶される。
【００４３】
画像データ４０４ａは、複数のキャラクタに関するポリゴンやテクスチャ等の画像データおよびゲーム空間の画像データが記憶される。ここで、キャラクタとは、プレイヤキャラクタ、ノンプレイヤキャラクタ、アイテムキャラクタまたは壁オブジェクトもしくは地形（地面）オブジェクト等の背景オブジェクト（キャラクタ）などをいう。プレイヤキャラクタとは、上述したように、プレイヤによって所望の方向へ移動させ、もしくは所望の動作を実行させることができるキャラクタをいう。また、ノンプレイヤキャラクタとは、プレイヤのコントローラ操作によらず、プログラムによって決まる方向へ移動し、もしくはプログラムによって決まる動作を実行する敵キャラクタのようなキャラクタをいう。さらに、アイテムキャラクタとは、ゲームにおいて、プレイヤキャラクタが取得または所持するアイテム（たとえば、食べ物、お金、薬、武器など）のキャラクタをいう。
【００４４】
基準位置データ４０４ｂは、この実施例では、仮想カメラの撮影方向（向き）を指定する注視点の位置（注視位置）についての座標データであり、ゲーム開始時点において、注視位置はプレイヤキャラクタの位置（キャラクタ位置）によって一義的に決定される。この実施例では、ゲーム開始時点における注視位置は、プレイヤキャラクタの足元の位置に決定される。後で詳細に説明するが、ゲーム開始時点における注視位置（キャラクタ位置）と仮想カメラの位置（カメラ位置）とは所定の関係（距離関係）を有している。また、この基準位置データ４０４ｂは、後述するカメラ位置の更新処理（図９参照）においてキャラクタ位置に応じて順次更新される。
【００４５】
目標位置データ４０４ｃは、カメラ位置を更新する場合に、注視位置を所定の割合で近づけるための目標となる位置（目標位置）についての座標データである。たとえば、この実施例では、目標位置は、キャラクタ位置と同じ位置に設定される。ただし、目標位置は、キャラクタ位置の近傍或いは所定の間隔（距離）を隔てて設定するようにしてもよい。つまり、目標位置は、キャラクタ位置によって固定的に決定される位置に決定される。
【００４６】
差分データ４０４ｄは、この実施例では、目標位置と注視位置との距離（差分）についてのデータである。つまり、上述した目標位置データ４０４ｃから注視位置データ４０４ｂを減算した値（絶対値）についてのデータである。
【００４７】
差分最大値データ４０４ｅは、目標位置と注視位置との差分の最大値を規定するデータである。この最大値は、プレイヤキャラクタがゲーム画面からはみ出さないようにするために予め決定される目標位置と注視位置との間の最大距離である。
【００４８】
カメラ座標データ４０４ｆは、差分データ４０４ｄに基づいて算出されたゲーム空間における更新後のカメラ位置すなわち移動後の仮想カメラの３次元座標についてのデータである。このカメラ座標データ４０４ｆは、後述するように、差分データ４０４ｄを用いて、注視位置を目標位置に所定の割合で近づけた場合に、注視位置（基準位置データ４０４ｂ）によって一義的に決定（算出）される。
【００４９】
なお、図示は省略するが、データ記憶領域４０４には、ゲームステージの雰囲気に合わせた演出の一環として、臨場感を高めるために演奏される音楽（ＢＧＭ）を鳴らす（演奏する）ためのオーディオデータなども記憶される。
【００５０】
たとえば、図４に示すようなゲーム空間（ワールド座標系）８０において、プレイヤの操作に応じてプレイヤキャラクタ８２を移動させるようなゲームでは、モニタ３４に表示するゲーム画像を生成するための画像を撮影する仮想カメラ８４がゲーム空間８０に配置される。この実施例では、仮想カメラ８４は、ゲーム空間８０において、ゲーム開始時点に、プレイヤキャラクタ８２の後方（真後ろ）であり、ＸＺ平面上（水平方向）に距離ｄおよびＹ軸方向（垂直方向）に距離ｈを隔てて配置される。この所定の距離関係は、ゲームプログラマのような開発者等によって予め設定される。また、仮想カメラ８４は、プレイヤキャラクタ８２の移動に従って、その真後ろから追従し、たとえば、プレイヤキャラクタ８２が「Ａ」で示す位置から「Ｂ」で示す位置に移動したとすると、それに従って、仮想カメラ８４は「ａ」で示す位置から「ｂ」で示す位置に移動される。
【００５１】
このようなゲームでは、仮想カメラ８４は、プレイヤキャラクタ８２に追従するように移動されるが、上述したような距離ｄおよび距離ｈを保ったままで仮想カメラ８４を移動させる（完全連動させる）と、プレイヤキャラクタ８２を少し移動させた場合であっても、これに連動して仮想カメラ８４が移動してしまい、表現の堅いゲーム画面が表示されてしまう。これを解消するには、プレイヤキャラクタ８２と仮想カメラ８４との間に仮想的なバネを設けたり、仮想カメラ８４の移動に対して慣性が働くようにしたりして、プレイヤキャラクタ８２の移動に完全連動させない方法が考えられる。
【００５２】
しかし、仮想的なバネを設けた場合には、バネの伸縮により、ゲーム画面に振れが生じてしまい、ゲームをプレイし難いという問題がある。また、仮想カメラ８４の移動に対して慣性が働くようにした場合には、プレイヤキャラクタ８２が高速で移動した後に急停止すると、仮想カメラ８４がプレイヤキャラクタ８２に近づき過ぎてしまい、見難いゲーム画面が表示されてしまう。この場合にも、ゲームをプレイし難いという問題がある。
【００５３】
したがって、この実施例では、このような問題を回避するとともに、仮想カメラ８４をプレイヤキャラクタ８２に完全連動させないようにするために、仮想カメラ８４がプレイヤキャラクタ８２に対して少し遅れて追従（移動）するように、その移動を制御しているのである。以下、具体的に説明することにする。
【００５４】
図５は、プレイヤキャラクタ８２が進行方向（図面の左向き）に或る距離Δｄだけ移動して、その後、停止し続ける場合の仮想カメラ８４の追従動作を説明するための図解図である。
【００５５】
なお、図５では、簡単に説明するために、プレイヤキャラクタ８２がゲーム空間８０のＸＺ平面上をＸ軸に対して平行に移動（進行）する場合について示してある。つまり、Ｚ軸方向への移動は無視してある。
【００５６】
図５（Ａ）に示すように、第０フレームすなわちゲーム開始時点において、プレイヤキャラクタ８２および仮想カメラ８４がゲーム空間８０の所定位置（初期位置）にそれぞれれ配置される。このとき、仮想カメラ８４は、キャラクタ位置に対して所定の距離関係を有する位置に配置される。つまり、上述したように、プレイヤキャラクタ８２の後方であり、キャラクタ位置からＸ軸方向に（ＸＺ平面上で）距離ｄ、Ｙ軸方向に距離ｈだけ隔てた位置に仮想カメラ８４が配置される。また、図５（Ａ）からも分かるように、ゲーム開始時点では、キャラクタ位置と注視位置とが互いに一致する。さらに、この実施例では、プレイヤキャラクタ８２が移動することにより更新されるキャラクタ位置を、注視位置を更新する際の目標位置とするため、ゲーム開始時点では、注視位置と目標位置とが互いに一致する。
【００５７】
プレイヤの操作に従って、プレイヤキャラクタ８２が進行方向に或る距離Δｄだけ移動すると、図５（Ｂ）に示すように、次の１フレーム（第１フレーム）で、目標位置と注視位置とが距離Δｄだけ離れることになる。この距離Δｄは、目標位置と注視位置とのワールド座標系における座標（３次元座標）に基づいて算出される。
【００５８】
たとえば、目標位置の３次元座標を（Ｘ１，Ｙ１，Ｚ１）、注視位置の３次元座標を（Ｘ２，Ｙ２，Ｚ２）と仮定し、カメラ位置の３次元座標を（Ｘ３，Ｙ３，Ｚ３）と仮定すると、距離Δｄは数１で求められる。ただし、目標位置および注視位置はプレイヤキャラクタ８２の足元に設定されるため、距離Δｄを算出する場合には、Ｙ成分は無視することができる。
【００５９】
なお、プレイヤキャラクタ８２が起伏のある場所を移動する場合には、当該起伏を無視して、すなわちＹ成分を無視して、注視位置の３次元座標を算出した後に、水平面を基準にして起伏に相当する高さだけＹ成分に加算或いは減算すればよい。
【００６０】
【数１】
Δｄ＝√（Ｘ１−Ｘ２）２  
ここで、キャラクタ位置は、ゲーム開始時に配置された初期位置から、プレイヤの操作に従って更新され、常に認識されるため、キャラクタ位置すなわち目標位置の３次元座標は既知である。また、図５（Ｂ）に示す注視位置は、ゲーム開始時にプレイヤキャラクタ８２が配置されたキャラクタ位置（初期位置）と一致するため、この３次元座標も既知である。したがって、距離Δｄは簡単に算出することができる。
【００６１】
この実施例では、このように算出された距離（差分）Δｄを、所定の割合（この実施例では、２割）で縮める（小さくする）ように、注視位置が目標位置に近づけられ、更新された注視位置と所定の距離関係を有するように仮想カメラ８４の位置が更新されるのである。このようにして、プレイヤキャラクタ８２の移動に少し遅れて仮想カメラ８４が追従される。
【００６２】
具体的には、まず、差分すなわち距離Δｄを数１を用いて算出した後に、数２に従って、距離Δｄの２割の距離だけ目標位置に近づけた注視位置のＸ座標（Ｘ２′）を算出する。
【００６３】
【数２】
Δｄ′＝Δｄ×８０％＝√（Ｘ１−Ｘ２′）２  
ここで、Δｄは数１に従って求められ、また、Ｘ１は既知であるため、移動後の注視位置のＸ座標（Ｘ２′）は簡単に算出することができる。なお、数２においては、注視位置を目標位置に所定の割合だけ近づけた距離をΔｄ′としてある。
【００６４】
したがって、移動後の注視位置の３次元座標（Ｘ２′，Ｙ２，Ｚ２）が求められる。次に、注視位置からＸ軸方向の距離ｄだけ離れた移動後のカメラ位置のＸ座標（Ｘ３′）を数３に従って算出する。
【００６５】
【数３】
Ｘ３′＝Ｘ２′−ｄ
ここで、ｄは設定値であり、Ｘ２′は数２に従って算出されるため、移動後のカメラ位置のＸ座標（Ｘ３′）は簡単に算出することができる。したがって、移動後の仮想カメラ８４の３次元座標（Ｘ３′，Ｙ３，Ｚ３）が求まる。この３次元座標（Ｘ３′，Ｙ３，Ｚ３）が示す位置に、仮想カメラ８４が移動され、図５（Ｃ）に示すような状態となる。また、このとき、仮想カメラ８４は、数２に従って求めた移動後の注視点の３次元座標（Ｘ２′，Ｙ２，Ｚ２）の方向に向けられる。
【００６６】
たとえば、この実施例では、ＣＰＵ３６は、コントローラＩ／Ｆ５６に設けられるバッファ（図示せず）を所定数のフレーム間隔で検出し、コントローラ２２（操作手段２６）の操作情報を取得して、プレイヤキャラクタ８２の移動または停止を検出する。そして、プレイヤキャラクタ８２の移動／停止に従って、仮想カメラ８４の移動が、１フレーム間隔で実行される。つまり、カメラ位置が１フレーム毎に更新され、これに伴ってゲーム画面が更新される。
【００６７】
ここで、フレーム間隔とは、１画面分の画像を生成し表示するまでの時間を表す単位であり、たとえば、フレームレートが６０ｆｐｓである場合には、１／６０秒単位がフレーム間隔となる。したがって、所定数が「１」であれば、１フレーム間（たとえば、１／６０秒間）に操作情報を取得することを意味し、また、所定数が「２」であれば、２フレーム間（たとえば、２／６０秒間）に操作情報を取得することを意味する。
【００６８】
そして、次の１フレーム（第２フレーム）では、図５（Ｃ）に示す状態から、さらに、注視位置が目標位置に所定の割合だけ近づくように、カメラ位置が更新される。上述したように、プレイヤキャラクタ８２は、距離Δｄだけ移動した後に、その位置で停止し続けるため、図５（Ｄ）に示す第２フレームでは、距離Δｄ′がその８０％（Δｄ″）になるように、注視位置が目標位置に近づけられる。
【００６９】
つまり、上記した数２および数３において、Δｄ′をΔｄ″に変更し、移動前の注視位置の３次元座標を（Ｘ２′，Ｙ２，Ｚ２）とし、移動前のカメラ位置の３次元座標を（Ｘ３′，Ｙ３，Ｚ３）とすれば、移動後の注視位置の３次元座標（Ｘ２″，Ｙ２，Ｚ２）および移動後のカメラ位置の３次元座標（Ｘ３″，Ｙ３，Ｚ３）を容易に算出することができる。
【００７０】
なお、注視位置を移動する前の距離Δｄ′は、上記した数２に従って求めた通りである。
【００７１】
また、図示は省略するが、第３フレーム以降においても、同様に、カメラ位置の更新処理が繰り返され、仮想カメラ８４は、停止（静止）しているプレイヤキャラクタ８２に次第に近づく。
【００７２】
上述したように、図５に示した例では、簡単のため、プレイヤキャラクタ８２がゲーム空間８０のＸＺ平面上をＸ軸に対して平行に移動する場合について説明したが、Ｚ軸に対して平行に移動した場合には、Ｘ成分およびＹ成分を無視して、Ｚ成分についてのみ計算すればよい。つまり、数１〜数３に示すＸをＺに置き換えればよい。
【００７３】
また、ＸＺ平面上を斜めに移動する場合には、Ｙ成分およびＺ成分を無視してＸ成分の座標を算出するととともに、Ｘ成分およびＹ成分を無視してＺ成分の座標を算出することにより、移動後の注視位置の３次元座標を算出することができる。そして、キャラクタ位置と移動後の注視位置とを結ぶ直線上であり、プレイヤキャラクタ８２の後方に、注視位置と所定の距離関係を有するカメラ位置の３次元座標を算出すればよい。
【００７４】
図６は、プレイヤキャラクタ８２が進行方向に移動し続ける場合の仮想カメラ８４の追従動作を説明するための図解図である。
【００７５】
なお、図６においては、図５に示した場合と同様に、簡単のため、プレイヤキャラクタ８２がゲーム空間８０のＸＺ平面上でＸ軸に対して平行に移動する場合について説明する。また、図面の都合上、図６においては、プレイヤキャラクタ８２および仮想カメラ８４は省略してある。さらに、図５を用いて説明した内容と同じ箇所については、簡単に説明することにする。
【００７６】
図６（Ａ）に示すように、第０フレームすなわちゲーム開始時点では、図５（Ａ）に示した場合と同様に、プレイヤキャラクタ８２がゲーム空間８０の初期位置に配置される。このとき、キャラクタ位置、目標位置および注視位置は同じ位置である。プレイヤの操作に従って、プレイヤキャラクタ８２が進行方向（図面の左向き）に或る距離Δｄ１移動すると、図６（Ｂ）に示すように、第１フレームにおいて、目標位置が移動する。また、このとき、注視位置が差分Δｄ１の所定の割合（距離Δｄ１の２０％）に相当する距離だけ目標位置に近づけられる。そして、更新された注視位置に対応してカメラ位置も更新される。図６（Ｂ）に示す注視位置およびカメラ位置の更新については、図５（Ｂ）および図５（Ｃ）を用いて説明した場合と同じであるため、詳細な説明は省略する。
【００７７】
さらに、プレイヤキャラクタ８２が、次の１フレーム（第２フレーム）で、或る距離Δｄ２だけ移動すると、図６（Ｃ）に示すように、目標位置が更新される。つまり、図６（Ｂ）に示す注視位置と更新後の目標位置との距離（差分）Δｄ１２は、数４で求められる。
【００７８】
【数４】
Δｄ１２＝Δｄ１×８０％＋Δｄ２
第２フレームでは、この差分Δｄ１２を所定の割合だけ小さくするように、注視位置が目標位置に近づけられ、それに従って、カメラ位置も更新される。注視位置およびカメラ位置のＸ座標の算出方法は数２および数３を用いて説明した場合と同じであるため、重複した説明は省略する。
【００７９】
このように、プレイヤキャラクタ８２が移動し続ける場合には、１フレーム毎にプレイヤキャラクタ８２が移動した距離が差分に加算される。それ以外は、図５に示した場合と同じである。
【００８０】
図６においても、簡単のため、プレイヤキャラクタ８２がゲーム空間８０のＸＺ平面上をＸ軸方向に移動した場合について説明したが、Ｚ軸方向に移動する場合にはＸ成分およびＹ成分を無視して移動後の注視位置およびカメラ位置を算出することができる。
【００８１】
また、プレイヤキャラクタ８２がゲーム空間８０のＸＺ平面上を斜めに移動する場合には、Ｘ軸方向およびＺ軸方向のそれぞれについて計算して、移動後の注視位置の３次元座標を算出することができ、さらに、移動後の注視位置の座標に基づいて移動後のカメラ位置の３次元座標を算出することもできる。
【００８２】
さらに、図６に示した場合のように、プレイヤキャラクタ８２が移動し続ける場合には、プレイヤキャラクタ８２の移動速度が速すぎると、注視位置を所定の割合で近づけるだけでは、仮想カメラ８４の追従が間に合わず、プレイヤキャラクタ８２がゲーム画面からはみ出してしまうことがある。これを回避するため、この実施例では、目標位置と注視位置との差分の最大値（最大距離）を予め設定しておき、差分がその最大距離を越える場合には、強制的にその最大距離だけ離れた位置に注視位置を移動させるようにしてある。これにより、不都合なゲーム画面が表示されるのを防止しているのである。
【００８３】
ただし、この実施例では、差分が最大距離を越える場合には、最大距離だけ離れた位置に注視位置を移動させるようにしてあるが、これに限定される必要はなく、最大距離以内であれば、任意の距離だけ離れた位置に注視位置を移動させるように設定することも可能である。
【００８４】
図７はこの実施例のゲーム画面表示処理を示すフロー図である。この図７を参照して、プレイヤがゲームプレイを開始すると、ＣＰＵ３６はゲーム画面表示処理を開始し、ステップＳ１で、地形オブジェクトをゲーム空間８０である３次元のワールド座標系の初期座標に配置する。続くステップＳ３では、ワールド座標系にプレイヤキャラクタ８２および仮想カメラ８４を初期座標に配置する。図５（Ａ）および図６（Ａ）に示したように、ゲーム開始時点においては、仮想カメラ８４は、キャラクタ位置を注視点（注視位置）として、当該注視位置から後方に距離ｄだけ離れた位置であり、かつ、距離ｈだけＹ軸（高さ）方向に離れた位置に配置される。また、このとき、仮想カメラ８４が注視位置を向くように、その向きも設定される。
【００８５】
続いて、ステップＳ５では、コントローラ２２（操作手段２６）からの入力があるかどうかを判断する。ステップＳ５で“ＮＯ”であれば、つまりコントローラ２２からの入力がなければ、そのままステップＳ９に進む。一方、ステップＳ５で“ＹＥＳ”であれば、つまりコントローラ２２からの入力があれば、ステップＳ７で、コントローラ２２の入力に応じてプレイヤキャラクタ８２の位置を更新してから、ステップＳ９に進む。つまり、ステップＳ７では、後述するキャラクタ位置の更新処理（図８参照）を実行する。
【００８６】
ステップＳ９では、プレイヤキャラクタ８２の位置に応じて仮想カメラの位置を更新する。すなわち、後述するカメラ位置の更新処理（図９参照）を実行する。続くステップＳ１１では、プレイヤキャラクタ８２等の位置を３次元カメラ座標系に変換する。図示は省略するが、簡単に説明すると、プレイヤキャラクタ８２および地形オブジェクト、さらに必要に応じて、敵キャラクタおよびアイテムキャラクタなどのワールド座標系をカメラ座標系に変換する。つまり、仮想カメラ８４の３次元座標が原点位置（０，０，０）となるように、カメラ位置およびプレイヤキャラクタ８２等の３次元座標が変換される。
【００８７】
続いて、ステップＳ１３では、ゲーム画面をモニタ３４に表示するために、３次元のカメラ座標系を、２次元の投影平面座標系に変換し、ステップＳ１５では、ゲーム画像生成処理を実行する。つまり、ＣＰＵ３６は、ＧＰＵ４２にグラフィクスコマンドを与え、そのコマンドに従って、ジオメトリユニット４４およびレンダリングユニット４６が３Ｄ画像データを生成する。
【００８８】
なお、図示は省略するが、ステップＳ１３においては、３次元のカメラ座標系を２次元の投影平面座標系に変換するとともに、テクスチャの指定やクリッピング（ｃｌｉｐｐｉｎｇ：  不可視世界の切り取り）も併せて実行する。
【００８９】
ステップＳ１５では、生成されたゲーム画像をモニタ３４に表示する。つまり、ＧＰＵ４２が１フレーム毎にフレームバッファ４８内の画像データを書き換えるとともに、ビデオＩ／Ｆ５８がメモリコントローラ３８を介してフレームバッファ４８のデータを読み出すことによって、モニタ３４の画面上に３Ｄゲーム画像が表示される。
【００９０】
続くステップＳ１７では、ゲーム終了かどうかを判断する。ステップＳ１７で“ＮＯ”であれば、つまりゲーム終了でなければ、ステップＳ１に戻る。一方、ステップＳ１７で“ＹＥＳ”であれば、つまりゲーム終了であれば、ゲーム処理を終了する。
【００９１】
なお、上述したように、ＣＰＵ３６は、ステップＳ５の処理を１フレーム毎に処理するように、ゲーム画像表示処理を実行する。
【００９２】
図８は、図７のステップＳ７で実行されるキャラクタ位置の更新処理を示すフロー図である。ＣＰＵ３６がキャラクタ位置の更新処理を開始すると、ステップＳ２１で、コントローラ２２から取得したスティック（アナログジョイスティック）の傾き方向のデータに基づいて、プレイヤキャラクタ８２の向きを算出（検出）する。つまり、ワールド座標系のＸＺ平面におけるプレイヤキャラクタ８２の進行方向を算出する。
【００９３】
続くステップＳ２３では、スティックの傾き量のデータに基づいて、プレイヤキャラクタ８２の移動量を算出する。次に、ステップＳ２５では、算出したプレイヤキャラクタ８２の移動方向および移動量に基づいて、移動後のプレイヤキャラクタ８２の位置についての３次元座標を算出する。つまり、目標位置データ４０４ｃを算出する。
【００９４】
そして、ステップＳ２７では、算出された３次元座標にプレイヤキャラクタ８２の位置を更新して、すなわち算出した目標位置データ４０４ｃをメインメモリ４０のデータ記憶領域４０４に書き込んで（上書きして）、キャラクタ位置の更新処理をリターンする。
【００９５】
また、図９は、図７に示したステップＳ９で実行されるカメラ位置の更新処理を示すフロー図である。ＣＰＵ３６がカメラ位置の更新処理を開始すると、ステップＳ３１で、更新後のプレイヤキャラクタ８２の位置についての３次元座標（目標位置の３次元座標）すなわち目標位置データ４０４ｃを読み出す。続くステップＳ３３では、現在の注視位置の座標すなわち基準位置データ４０４ｂを読み出す。
【００９６】
次にステップＳ３５で、現在の注視位置と目標位置との距離すなわち差分を算出して、差分データ４０４ｄをメインメモリ４０のデータ記憶領域４０４に書き込む（上書きする）。さらに、ステップＳ３７で、目標位置を基準として、差分を８０％にした位置すなわち移動後の基準位置の座標を算出する。そして、ステップＳ３９では、８０％にした差分が最大値より大きいかどうかを判断する。つまり、８０％にした差分データ４０４ｄの値と差分最大値データ４０４ｅとを比較して、目標位置から移動後の注視位置までの距離（差分）が最大距離を越えるかどうかを判断する。
【００９７】
ステップＳ３９で“ＮＯ”であれば、つまり８０％にした差分が最大値より小さい場合には、ステップＳ４１で、ステップＳ３７において算出した座標を新たな注視位置として設定し、ステップＳ４５に進む。一方、ステップＳ３９で“ＹＥＳ”であれば、つまり８０％にした差分が最大値より大きい場合には、ステップＳ４３で、目標位置から最大距離だけ離れた位置の座標を新たな注視位置として設定し、ステップＳ４５に進む。つまり、ステップＳ４１およびステップＳ４３では、基準位置データ４０４ｂが更新され、また、図示は省略するが、このとき、基準位置すなわち注視位置と所定の距離関係を有するカメラ位置についてのカメラ座標データ４０４ｆも更新される。
【００９８】
ステップＳ４５では、仮想カメラ８４の位置を更新して、カメラ位置の更新処理をリターンする。このステップＳ４５では、更新されたカメラ座標データ４０４ｆが示す位置に仮想カメラ８４を移動させるとともに、基準位置データ４０４ｂが示す位置に仮想カメラ８４が向くように、その向きを設定する。
【００９９】
なお、この実施例では、図７に示したように、ステップＳ５でコントローラ２２からの入力がないと判断した場合には、そのままステップＳ９に進んで、仮想カメラの位置を更新するようにしたが、ゲーム開始時点からプレイヤキャラクタ８２が移動されない場合には、仮想カメラ８４がプレイヤキャラクタ８２に近づき過ぎてしまうことがある。このため、ステップＳ５で“ＮＯ”と判断された後に、一度もコントローラ２２からの入力を検出していないかどうかを判断するようにして、一度もコントローラ２２からの入力を検出していない場合には、ステップＳ５に戻るようにして、ゲーム開始直後において、仮想カメラ８４がプレイヤキャラクタ８２に近づき過ぎるのを防止するようにしてもよい。一方、ゲーム開始直後において、一度コントローラ２２からの入力を検出した場合には、ステップＳ９に進んでカメラ位置の更新処理を実行するようにすればよい。
【０１００】
この実施例によれば、注視位置を目標位置に所定の割合で近づけるようにカメラ位置を更新するので、プレイヤキャラクタの後ろから少し遅れて追従させることができ、しかも、画面が振れたりするなどの不都合なゲーム画面が表示されることもない。すなわち、表現が柔らかく、プレイし易いゲーム画面を表示することができる。
【０１０１】
また、注視位置を目標位置に所定の割合で近づけるようにカメラ位置を更新するので、つまり、プレイヤキャラクタ８２の移動の有無や移動速度に拘わらず同じ処理を繰り返すので、カメラ位置の更新処理ないしゲーム画面表示処理にバグを発生しにくくすることができる。換言すれば、プログラム実行時のバク発生の要因を減らすことができ、デバッグ作業を軽減することができる。
【０１０２】
なお、この実施例では、モニタに接続されるビデオゲーム装置についてのみ説明したが、モニタが一体的に設けられるゲーム装置、携帯型ゲーム装置およびゲーム機能を備える携帯電話機などにも適用できることは言うまでもない。
【０１０３】
他の実施例のビデオゲームシステム１０は、ゲーム装置１２におけるカメラ位置の更新処理が異なる以外は上述の実施例と同じであるため、重複した説明は省略する。この他の実施例のゲーム装置１２では、ゲーム開始時に配置されたカメラ位置（仮想カメラ８４の初期位置）を基準位置とし、この基準位置をプレイヤキャラクタ８２に連動させて移動（更新）し、更新された基準位置を目標位置として設定して、当該目標位置とカメラ位置との距離（差分）が所定の割合で縮まる（小さくなる）ようにカメラ位置を更新するようにしてある。このように、目標位置と更新された基準位置とが一致するため、他の実施例においては、図３に示したメインメモリ４０のデータ記憶領域４０４に基準位置データ４０４ｂを記憶しておく必要はない。
【０１０４】
図１０は、プレイヤキャラクタ８２が進行方向に或る距離Δｄだけ移動した後に、停止し続ける場合についての仮想カメラ８４の追従動作を説明するための図解図である。
【０１０５】
なお、図１０においては、簡単に説明するため、プレイヤキャラクタ８２がゲーム空間８０のＸＺ平面上において、Ｘ軸に対して平行に移動した場合について説明する。
【０１０６】
具体的には、図１０（Ａ）に示すように、第０フレームすなわちゲーム開始時には、上述の実施例と同様に、プレイヤキャラクタ８２および仮想カメラ８４がワールド座標系の初期位置にそれぞれ配置される。
【０１０７】
次の１フレーム（第１フレーム）で、プレイヤキャラクタ８２が或る距離Δｄだけ移動したとすると、図１０（Ｂ）に示すように、キャラクタ位置すなわち注視位置と所定の距離関係を有する基準位置が元の位置（カメラ位置）から距離Δｄだけプレイヤキャラクタ８２の移動方向に連動して移動される。この他の実施例では、移動後の基準位置すなわち目標位置とカメラ位置との距離を所定の割合で小さくするように、カメラ位置を移動させるようにしてある。
【０１０８】
つまり、図１０（Ａ）および図１０（Ｂ）に示すカメラ位置のワールド座標系における３次元座標を（Ｘ４，Ｙ４，Ｚ４）とし、図１０（Ｂ）に示す移動後の基準位置すなわち目標位置のワールド座標系における３次元座標を（Ｘ５，Ｙ５，Ｚ５）とする。また、プレイヤキャラクタ８２がＸ軸に対して平行に移動すると仮定してあるため、距離Δｄは各３次元座標のＸ成分についてのみ着目して算出するとこができる。すなわち、Ｙ成分およびＺ成分を無視することができる。この点は、上述の実施例と同じであり、数５に従って算出することができる。
【０１０９】
【数５】
Δｄ＝√（Ｘ５−Ｘ４）２  
この距離（差分）Δｄを所定の割合（２０％）で近づけるようにするため、移動後のカメラ位置と目標位置との距離Δｄ′は数６に従って算出される。
【０１１０】
【数６】
Δｄ′＝Δｄ×８０％
つまり、図１０（Ｃ）に示す移動後のカメラ位置のＸ座標（Ｘ４′）は数７に従って算出することができる。
【０１１１】
【数７】
Ｘ４′＝Ｘ５−Δｄ′
ここで、Ｘ５はキャラクタ位置（注視位置）と所定の距離関係を有して完全連動する基準位置（目標位置）であるため、キャラクタ位置のＸ座標に距離ｄを加算するだけで算出することができる。また、Δｄ′は数６に従って求められる。このため、移動後のカメラ位置のＸ座標（Ｘ４′）を簡単に算出することができる。したがって、移動後のカメラ位置の３次元座標（Ｘ４′，Ｙ４，Ｚ４）が求められる。
【０１１２】
さらに、次の１フレーム（第２フレーム）では、距離Δｄ′を所定の割合で近づけるように、カメラ位置が移動される。移動後の距離Δｄ″は、数６に従って求められ、また、移動後のカメラ位置のＸ座標（Ｘ４″）は、算出した距離Δｄ″を用いて、数７に従って算出することができる。つまり、数６においてΔｄをΔｄ′に変更するとともに、Δｄ′をΔｄ″に変更すればよく、また、数７においてＸ４′をＸ４″に変更するとともに、Δｄ′を（Δｄ′＋Δｄ″）に変更すればよい。したがって、第２フレームにおける移動後のカメラ位置の３次元座標（Ｘ４″，Ｙ４，Ｚ４）を算出することができるのである。
【０１１３】
図１０においては、簡単のため、プレイヤキャラクタ８２がＸ軸に対して平行に移動した場合についてのみ説明したが、Ｚ軸に対して平行に移動した場合にも、同様にカメラ位置を更新することができる。ただし、この場合には、Ｘ成分およびＹ成分を無視して、Ｚ成分に基づいて目標位置および移動後のカメラ位置の３次元座標が求められる。
【０１１４】
また、プレイヤキャラクタ８２がゲーム空間８０のＸＺ平面上を斜めに移動する場合には、Ｙ成分およびＺ成分を無視してＸ成分を算出し、Ｘ成分およびＹ成分を無視してＺ成分を算出することにより、移動後のカメラ位置の３次元座標のＸ成分およびＺ成分をそれぞれ算出することができる。
【０１１５】
図１１は、プレイヤキャラクタ８２がゲーム空間８０のＸＺ平面上をＸ軸に対して平行に移動し続ける場合についての仮想カメラ８４の追従動作を説明するための図解図である。図１１（Ａ）は、第ｎ（ｎは１以上の整数）フレームにおいて、プレイヤキャラクタ８２がΔｄ１だけ移動した場合におけるキャラクタ位置、基準位置（目標位置）およびカメラ位置を示してある。
【０１１６】
なお、図１１（Ａ）に示すΔｄ１は、直前のフレーム（第ｎ−１フレーム）でプレイヤキャラクタ８２が移動した距離すなわち目標位置とカメラ位置との差分を、８０％にした距離に相当する。
【０１１７】
次の１フレームすなわち第ｎ＋１フレームでプレイヤキャラクタ８２が距離Δｄ２だけ移動すると、基準位置とカメラ位置との差分Δｄ１２は数８に従って算出される。
【０１１８】
【数８】
Δｄ１２＝Δｄ１＋Δｄ２
図１１（Ｂ）に示すように、第ｎ＋１フレームでは、この差分Δｄ１２を所定の割合で小さくするように、カメラ位置が更新される。つまり、数９に従って差分Δｄ１２が所定の割合だけ小さくされる。
【０１１９】
【数９】
Δｄ１２′＝Δｄ１２×８０％＝（Δｄ１＋Δｄ２）×８０％
この数９に従って算出されたΔｄ１２′を用いて移動後のカメラ位置のＸ座標が算出される。なお、上述の実施例と同様に、図１１に示す例では、１フレーム毎にプレイヤキャラクタ８２が移動した距離が差分に加算される以外は図１０に示した場合と同様であるため、移動後のカメラ位置のＸ座標の算出についての詳細な説明は省略する。以下、同様である。
【０１２０】
さらに次の１フレームすなわち第ｎ＋２フレームでプレイヤキャラクタ８２が距離Δｄ３だけ移動すると、基準位置とカメラ位置の差分Δｄ２３は数８に従って算出される。
【０１２１】
【数１０】
2004329463.tif 000003
図１１（Ｃ）に示すように、第ｎ＋２フレームでは、この差分Δｄ２３を所定の割合で小さくするように、カメラ位置が更新される。
【０１２２】
なお、図１１では、簡単のため、プレイヤキャラクタ８２がＸＺ平面上をＸ軸に対して平行に移動した場合について説明したが、Ｚ軸に対して平行に移動した場合にも、同様にカメラ位置を更新することができる。また、プレイヤキャラクタ８２がＸＺ平面を斜めに移動する場合には、Ｙ成分およびＺ成分を無視してＸ成分について算出し、また、Ｘ成分およびＹ成分を無視してＺ成分について算出することにより、移動後のカメラ位置の３次元座標のＸ成分およびＺ成分をそれぞれ算出することができる。
【０１２３】
図１２は、他の実施例におけるカメラ位置の更新処理を示すフロー図である。この図１２を参照して、ＣＰＵ３６は、カメラ位置の更新処理を開始すると、ステップＳ５１で、更新後のプレイヤキャラクタ８２の位置すなわちキャラクタ位置の座標に基づいて、一義的に決定される目標位置の座標を算出する。つまり、キャラクタ位置と所定の距離関係を保って連動する基準位置の３次元座標を算出する。
【０１２４】
続くステップＳ５３では、現在の仮想カメラ８４の位置すなわちカメラ座標データ４０４ｆを読み出す。つまり、移動前のカメラ位置の３次元座標を読み出す。次に、ステップＳ５５では、現在のカメラ位置と基準位置（目標位置）との距離すなわち差分を算出して、差分データ４０４ｄをメインメモリ４０のデータ記憶領域４０４に書き込む（上書きする）。続いて、ステップＳ５７では、目標位置を基準として、差分を８０％にした位置の座標すなわち更新後のカメラ位置の３次元座標を算出する。
【０１２５】
そして、ステップＳ５９では、８０％にした差分が最大値（最大距離）よりも大きいかどうかを判断する。ステップＳ５９で“ＮＯ”であれば、つまり最大距離を越えていない場合には、ステップＳ６１で、ステップＳ５７において算出したカメラ位置を新たなカメラ位置として設定して、ステップＳ６５に進む。一方、ステップＳ５９で“ＹＥＳ”であれば、つまり最大距離を越えている場合には、ステップ６３で、目標位置を基準として、最大距離だけ離れた位置の座標を新たなカメラ位置として設定して、ステップＳ６５に進む。つまり、ステップＳ６１およびＳ６３では、ステップＳ５７において算出したカメラ位置或いはステップＳ６１で設定したカメラ位置の座標についてのカメラ座標データ４０４ｆをメインメモリ４０のデータ記憶領域４０４に書き込む（上書きする）。
【０１２６】
ステップＳ６５では、仮想カメラの位置を更新して、カメラ位置の更新処理をリターンする。このステップＳ６５では、更新されたカメラ座標データ４０４ｆが示す位置に仮想カメラ８４を移動させるとともに、基準位置データ４０４ｂが示す位置に仮想カメラ８４が向くように、その向きを設定する。
【０１２７】
他の実施例によれば、プレイヤキャラクタと所定の距離関係を保持して更新される目標位置とカメラ位置との差分を所定の割合で小さくするように、カメラ位置を更新するので、上述の実施例と同様に、表現が柔らかく、プレイし易いゲーム画面を表示することができる。
【０１２８】
また、カメラ位置を目標位置に所定の割合で近づけるようにカメラ位置を更新するので、つまり、プレイヤキャラクタ８２の移動の有無や移動速度に拘わらず同じ処理を繰り返すので、上述の実施例と同様に、カメラ位置の更新処理ないしはゲーム画面表示処理にバグを発生しにくくすることができる。
【図面の簡単な説明】
【図１】この発明のゲームシステムの一例を示す図解図である。
【図２】図１実施例に示すビデオゲーム装置の電気的な構成を示すブロック図である。
【図３】図２に示すメインメモリのメモリマップを示す図解図である。
【図４】図１実施例に示すビデオゲーム装置によって展開されるゲーム空間のプレイヤキャラクタおよび仮想カメラの位置を示す図解図である。
【図５】図１実施例に示すビデオゲーム装置によって展開されるゲーム空間における仮想カメラの追従動作の一例を示す図解図である。
【図６】図１実施例に示すビデオゲーム装置よって展開されるゲーム空間における仮想カメラの追従動作の他の一例を示す図解図である。
【図７】図２に示すＣＰＵのゲーム画面の生成処理の一例を示すフロー図である。
【図８】図２に示すＣＰＵのキャラクタ位置の更新処理の一例を示すフロー図である。
【図９】図２に示すＣＰＵのカメラ位置の更新処理の一例を示すフロー図である。
【図１０】この発明の他の実施例のビデオゲーム装置によって展開されるゲーム空間における仮想カメラの追従動作の一例を示す図解図である。
【図１１】この発明の他の実施例のビデオゲーム装置によって展開されるゲーム空間における仮想カメラの追従動作の他の一例を示す図解図である。
【図１２】他の実施例におけるＣＰＵのカメラ位置の更新処理の一例を示すフロー図である。
【符号の説明】
１０  …ゲームシステム
１２  …ビデオゲーム装置
１８  …光ディスク
２２  …コントローラ
３４  …モニタ
３４ａ  …スピーカ
３６  …ＣＰＵ
３８  …メモリコントローラ
４０  …メインメモリ
４２  …ＧＰＵ
５２  …ＤＳＰ
５４  …ＡＲＡＭ
６２  …オーディオＩ／Ｆ
【図１】
2004329463.tif 000004
【図２】
2004329463.tif 000005
【図３】
2004329463.tif 000006
【図４】
2004329463.tif 000007
【図５】
2004329463.tif 000008
【図６】
2004329463.tif 000009
【図７】
2004329463.tif 000010
【図８】
2004329463.tif 000011
【図９】
2004329463.tif 000012
【図１０】
2004329463.tif 000013
【図１１】
2004329463.tif 000014
【図１２】
2004329463.tif 000015