(57)【特許請求の範囲】
【請求項１】
プレイヤが操作入力を行う操作手段と、ゲーム画面を表示する表示手段と、少なくとも３次元仮想空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置において、
前記操作手段からの操作入力に対応する入力データを検出し、前記記憶手段に一時記憶する、入力検出手段、
前記入力検出手段によって一時記憶された第１入力データに応じて、前記記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを前記３次元仮想空間に配置する、プレイヤキャラクタ制御手段、
前記記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを前記３次元仮想空間に配置する、オブジェクト制御手段、
前記プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する、接触判定手段、
前記３次元仮想空間における視点の位置および方向を制御する、視点制御手段、および
前記入力検出手段によって一時記憶された第２入力データに応じて、３次元の前記ゲーム画面を表示するための前記視点の位置および方向と、２次元の前記ゲーム画面を表示するための前記視点の位置および方向とを切り換える、視点切換手段を備え、
前記接触判定手段は、前記視点切換手段の切り換え結果に応じて、前記所定のオブジェクトに設定される接触判定用のデータを変更することを特徴とする、ゲーム装置。
【請求項２】
前記接触判定用のデータは、前記３次元仮想空間を定義するすべての軸の各々の方向に関して接触判定を行うための第１判定データと、前記３次元仮想空間を定義するすべての軸のうちのいずれか１つの軸の方向またはいずれか２つの軸の組み合わせの方向に関して接触判定を行うための第２判定データとを含み、
前記接触判定手段は、前記視点切換手段の切り換え結果に応じて前記第１判定データおよび前記第２判定データの一方を選択する、請求項１記載のゲーム装置。
【請求項３】
前記３次元のゲーム画面を表示する場合に、前記視点制御手段によって前記３次元仮想空間を定義するすべての軸の各々に関して前記視点の位置および方向を制御する第１モードと、前記２次元のゲーム画面を表示する場合に、前記視点制御手段によって前記３次元仮想空間を定義するすべての軸のうちの前記いずれか１つの軸または前記いずれか２つの軸の組み合わせに関して前記視点の位置および方向を制御する第２モードとを切り換える、モード切換手段をさらに備え、
前記モード切換手段によって前記第１モードに切り換えられたとき、前記接触判定手段は前記第１判定データを選択し、前記モード切換手段によって前記第２モードに切り換えられたとき、前記接触判定手段は前記第２判定データを選択する、請求項２記載のゲーム装置。
【請求項４】
プレイヤが操作入力を行う操作手段と、ゲーム画面を表示する表示手段と、少なくとも３次元仮想空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置のゲームプログラムであって、
前記ゲームプログラムは、前記ゲーム装置のプロセッサを、
前記操作手段からの操作入力に対応する入力データを検出し、前記記憶手段に一時記憶する、入力検出手段、
前記入力検出手段によって一時記憶された第１入力データに応じて、前記記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを前記３次元仮想空間に配置する、プレイヤキャラクタ制御手段、
前記記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを前記３次元仮想空間に配置する、オブジェクト制御手段、
前記プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する、接触判定手段、
前記３次元仮想空間における視点の位置および方向を制御する、視点制御手段、および
前記入力検出手段によって一時記憶された第２入力データに応じて、３次元の前記ゲーム画面を表示するための前記視点の位置および方向と、２次元の前記ゲーム画面を表示するための前記視点の位置および方向とを切り換える、視点切換手段として機能させ、
前記接触判定手段は、前記視点切換手段の切り換え結果に応じて、前記所定のオブジェクトに設定される接触判定用のデータを変更する、ゲームプログラム。
【請求項５】
プレイヤが操作入力を行う操作手段と、ゲーム画面を表示する表示手段と、少なくとも３次元仮想空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置のゲーム制御方法であって、
前記ゲーム装置のプロセッサは、
（ａ）前記操作手段からの操作入力に対応する入力データを検出し、前記記憶手段に一時記憶し、
（ｂ）前記ステップ（ａ）によって一時記憶された第１入力データに応じて、前記記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを前記３次元仮想空間に配置し、
（ｃ）前記記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを前記３次元仮想空間に配置し、
（ｄ）前記プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定し、
（ｅ）前記３次元仮想空間における視点の位置および方向を制御し、そして
（ｆ）前記ステップ（ａ）によって一時記憶された第２入力データに応じて、３次元の前記ゲーム画面を表示するための前記視点の位置および方向と、２次元の前記ゲーム画面を表示するための前記視点の位置および方向とを切り換え、さらに
（ｇ）前記ステップ（ｄ）は、前記ステップ（ｆ）の切り換え結果に応じて、前記所定のオブジェクトに設定される接触判定用のデータを変更する、ゲーム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はゲーム装置、ゲームプログラムおよびゲーム制御方法に関し、特にたとえば、プレイヤが操作入力を行う操作手段と、ゲーム画像を表示する表示手段と、少なくとも仮想３次元空間を生成するためのデータを予め記憶する記憶手段とを備える、ゲーム装置、ゲームプログラムおよびゲーム制御方法に関する。
【背景技術】
【０００２】
この種の背景技術の一例が非特許文献１に開示される。この非特許文献１によれば、プレイヤは、主人公のキャラクタ（プレイヤキャラクタ）を操作して、そのプレイヤキャラクタを３次元空間に展開されたマップ上で移動させ、敵のキャラクタを倒すなどして、ゲームを攻略する。
【０００３】
また、背景技術の他の例が非特許文献２に開示される。この非特許文献２によれば、初期のビデオゲームであって、プレイヤの操作によって横方向にスクロールする２次元マップ内をプレイヤキャラクタは移動し、敵キャラクタを倒すなどして、ゲームを攻略する。
【非特許文献１】「スーパーマリオ６４おたすけガイド、ソフトバンク株式会社、１９９６年９月７日  初版発行、４８−４９頁」
【非特許文献２】「スーパーマリオブラザーズ  裏技大全集、株式会社二見書房、昭和６１年３月３１日  １９版発行、４−５頁」
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述したように、非特許文献１に開示されるのは３次元のゲームであり、非特許文献２に開示されるのは２次元のゲームであり、３次元のゲームは２次元のゲームの発展型と一般的に認識されている。しかし、それぞれ固有の楽しさがあり、どちらが優れているのかを比較するようなものではない。ところが、それぞれの特徴を組み合わせて、更なる楽しさを追求したゲームは存在しなかった。
【０００５】
たとえば、それぞれのゲームを単に組み合わせることは容易に考えられるが、２次元用のデータと３次元用のデータとが必要であり、処理負担が大きいばかりでなく、メモリ容量をいたずらに増大させてしまう。
【０００６】
それゆえに、この発明の主たる目的は、新規な、ゲーム装置、ゲームプログラムおよびゲーム制御方法を提供することである。
【０００７】
また、この発明の他の目的は、２次元のゲームと３次元のゲームとの特徴を生かして、ゲームの面白さを増大させることができる、ゲーム装置、ゲームプログラムおよびゲーム制御方法を提供することである。
【０００８】
さらに、この発明のその他の目的は、３次元ゲーム空間を用いて２次元的なゲームプレイを楽しむことができる、ゲーム装置、ゲームプログラムおよびゲーム制御方法を提供することである。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【００１０】
請求項１の発明は、プレイヤが操作入力を行う操作手段と、ゲーム画面を表示する表示手段と、少なくとも３次元仮想空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置である。このゲーム装置は、入力検出手段、プレイヤキャラクタ制御手段、オブジェクト制御手段、接触判定手段、視点制御手段、および視点切換手段を備える。入力検出手段は、操作手段からの操作入力に対応する入力データを検出し、記憶手段に一時記憶する。プレイヤキャラクタ制御手段は、入力検出手段によって一時記憶された第１入力データに応じて、記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを３次元仮想空間に配置する。オブジェクト制御手段は、記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを３次元仮想空間に配置する。接触判定手段は、プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する。視点制御手段は、３次元仮想空間における視点の位置および方向を制御する。視点切換手段は、入力検出手段によって一時記憶された第２入力データに応じて、３次元のゲーム画面を表示するための視点の位置および方向と、２次元のゲーム画面を表示するための視点の位置および方向とを切り換える。そして、接触判定手段は、視点切換手段の切り換え結果に応じて、所定のオブジェクトに設定される接触判定用のデータを変更する。
【００１１】
請求項１の発明では、ゲーム装置（１２）は、プレイヤが操作入力を行う操作手段（２２，２６）と、ゲーム画面を表示する表示手段（３４）と、少なくとも３次元仮想空間を生成するためのデータを予め記憶する記憶手段（４０）とを備える。このゲーム装置は、さらに、入力検出手段（３６，Ｓ５１）、プレイヤキャラクタ制御手段（３６，Ｓ５）、オブジェクト制御手段（３６，Ｓ７）、接触判定手段（３６，Ｓ９）、視点制御手段（３６，Ｓ３）および視点切換手段（３６，Ｓ２１，Ｓ２３，Ｓ２９）を備える。入力検出手段は、操作手段からの操作入力に対応する入力データを検出し、記憶手段に一時記憶する。プレイヤキャラクタ制御手段は、入力検出手段によって一時記憶された第１入力データに応じて、記憶手段に記憶されたプレイヤキャラクタデータ（４０４ｃ）を用いて、プレイヤの操作対象であるプレイヤキャラクタを３次元仮想空間に配置する。たとえば、操作手段からの操作入力に従ってプレイヤキャラクタを３次元仮想空間内で移動させる。また、オブジェクト制御手段は、記憶手段に記憶されたオブジェクトデータ（４０４ｄ）を用いて、プレイヤの操作対象でないオブジェクトを３次元仮想空間に配置する。たとえば、プレイヤの操作によらず、コンピュータないしプロセッサ（３６）がプログラムに従って敵オブジェクトを出現させたり、移動させたり、アイテムオブジェクトや背景オブジェクト（１０４，１０６，１０８）を配置（出現）させたりする。接触判定手段は、プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する。視点制御手段は、３次元仮想空間における視点（仮想カメラ）の位置および方向を制御する。たとえば、プレイヤキャラクタの移動に従って視点の位置を更新する。視点切換手段は、入力検出手段によって一時記憶された第２入力データに応じて、３次元のゲーム画面を表示するための視点の位置および方向と、２次元のゲーム画面を表示するための視点の位置および方向とを切り換える。たとえば、プレイヤの視点切換の指示に従って、視点の位置および方向を切り換える。そして、接触判定手段は、視点切換手段の切り換え結果に応じて、所定のオブジェクトに設定される接触判定用のデータを変更する。
【００１２】
請求項１の発明によれば、３次元のゲーム画面または２次元のゲーム画面を表示するための視点の位置および方向に応じた接触判定用のデータを用いて接触判定を実行するので、視点に応じて３次元または２次元のゲーム画面を見て、ゲームプレイを楽しむことができる。
【００１３】
請求項２の発明は請求項１に従属し、接触判定用のデータは、３次元仮想空間を定義するすべての軸の各々の方向に関して接触判定を行うための第１判定データと、３次元仮想空間を定義するすべての軸のうちのいずれか１つの軸の方向またはいずれか２つの軸の組み合わせの方向に関して接触判定を行うための第２判定データとを含み、接触判定手段は、切換手段の切り換え結果に応じて第１判定データと第２判定データとの間で変更する。
【００１４】
請求項２の発明では、接触判定用のデータは、３次元仮想空間を定義するすべての軸の各々に関して接触判定を行うための第１判定データ（４０４ｉ）と、３次元仮想空間を定義するすべての軸のうちのいずれか１つの軸の方向またはいずれか２つの軸の組み合わせの方向に関して接触判定を行うための第２判定データ（４０４ｊ）とを含む。たとえば、第１判定データは、３次元仮想空間のＸ軸方向、Ｙ軸方向およびＺ軸方向について接触判定するためのデータである。また、第２判定データは、３次元仮想空間のＸ軸方向、Ｙ軸方向およびＺ軸方向のいずれか１つ、またはいずれか２つの組み合わせ（Ｘ軸方向とＹ軸方向、Ｙ軸方向とＺ軸方向、Ｚ軸方向とＸ軸方向）で接触判定するためのデータである。接触判定手段は、切換手段の切り換え結果に応じて、第１判定データと第２判定データとの間で変更する。
【００１５】
請求項２の発明によれば、たとえば、３次元または２次元（１次元）の接触判定をするので、３次元のゲームにおいて１次元または２次元的な接触判定を行うことができる。
【００１６】
請求項３の発明は請求項２に従属し、３次元のゲーム画面を表示する場合に、視点制御手段によって３次元仮想空間を定義するすべての軸の各々に関して視点の位置および方向を制御する第１モードと、２次元のゲーム画面を表示する場合に、視点制御手段によって前記３次元仮想空間を定義するすべての軸のうちの１つの軸またはいずれか２つの軸の組み合わせに関して視点の位置および方向を制御する第２モードとを切り換える、モード切換手段をさらに備え、モード切換手段によって第１モードに切り換えられたとき、接触判定手段は第１判定データを選択し、モード切換手段によって第２モードに切り換えられたとき、接触判定手段は第２判定データを選択する。
【００１７】
請求項３の発明では、ゲーム装置は、モード切換手段（３６，Ｓ５５，Ｓ５９，Ｓ６１，Ｓ６３）をさらに備える。このモード切換手段は、３次元のゲーム画面を表示する場合に、視点制御手段によって３次元仮想空間を定義するすべての軸の各々に関して視点の位置および方向を制御する第１モードと、２次元のゲーム画面を表示する場合に、視点制御手段によって前記３次元仮想空間を定義するいずれか１つの軸またはいずれか２つの軸の組み合わせに関して視点の位置および方向を制御する第２モードとを切り換える。したがって、第１モードでは、Ｘ軸方向、Ｙ軸方向およびＺ軸方向のすべてについて視点の位置および方向が制御される。また、第２モードでは、Ｘ軸方向、Ｙ軸方向およびＺ軸方向のいずれか１つ、またはいずれか２つの組み合わせ（Ｘ軸方向とＹ軸方向、Ｙ軸方向とＺ軸方向、Ｚ軸方向とＸ軸方向）について視点の位置および方向が制御される。したがって、モード切換手段によって第１モードに切り換えられたとき、接触判定手段は第１判定データを選択し、モード切換手段によって第２モードに切り換えられたとき、接触判定手段は第２判定データを選択する。
【００１８】
請求項３の発明によれば、３次元のゲーム画面を表示する場合は３次元の各方向について視点の位置および方向を制御し、２次元のゲーム画面を表示する場合には３次元のうちのいずれか１つまたはいずれか２つの組み合わせの方向について視点の位置および方向を制御するので、異なる視点のゲーム画面を表示して、ゲームを楽しむことができる。たとえば、３次元ゲームのゲーム画面を２次元的に表示して、プレイすることができる。
【００１９】
請求項４の発明は、プレイヤが操作入力を行う操作手段と、ゲーム画面を表示する表示手段と、少なくとも３次元仮想空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセッサを、入力検出手段、プレイヤキャラクタ制御手段、オブジェクト制御手段、接触判定手段、視点制御手段、および視点切換手段として機能させる。入力検出手段は、操作手段からの操作入力に対応する入力データを検出し、記憶手段に一時記憶する。プレイヤキャラクタ制御手段は、入力検出手段によって一時記憶された第１入力データに応じて、記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを３次元仮想空間に配置する。オブジェクト制御手段は、記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを３次元仮想空間に配置する。接触判定手段は、プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する。視点制御手段は、３次元仮想空間における視点の位置および方向を制御する。視点切換手段は、入力検出手段によって一時記憶された第２入力データに応じて、３次元のゲーム画面を表示するための視点の位置および方向と、２次元のゲーム画面を表示するための視点の位置および方向とを切り換える。そして、接触判定手段は、視点切換手段の切り換え結果に応じて、所定のオブジェクトに設定される接触判定用のデータを変更する。
請求項５の発明は、プレイヤが操作入力を行う操作手段と、ゲーム画面を表示する表示手段と、少なくとも３次元仮想空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置のゲーム制御方法であって、ゲーム装置のプロセッサは、（ａ）操作手段からの操作入力に対応する入力データを検出し、記憶手段に一時記憶し、（ｂ）ステップ（ａ）によって一時記憶された第１入力データに応じて、記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを３次元仮想空間に配置し、（ｃ）記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを３次元仮想空間に配置し、（ｄ）プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定し、（ｅ）３次元仮想空間における視点の位置および方向を制御し、そして（ｆ）ステップ（ａ）によって一時記憶された第２入力データに応じて、３次元のゲーム画面を表示するための視点の位置および方向と、２次元のゲーム画面を表示するための視点の位置および方向とを切り換え、さらに（ｇ）ステップ（ｄ）は、ステップ（ｆ）の切り換え結果に応じて、所定のオブジェクトに設定される接触判定用のデータを変更する、ゲーム制御方法である。
【００２０】
請求項４および請求項５の発明においても、請求項１の発明と同様に、視点に応じて３次元または２次元のゲーム画面を見て、ゲームプレイを楽しむことができる。
【発明の効果】
【００２１】
この発明によれば、所定のオブジェクトに対応して記憶されるコリジョンデータを用いて接触判定するので、視点に応じてゲームプレイが可能である。つまり、視点に応じて異なるゲーム画面を見てゲームプレイを楽しむことができる。
【００２２】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００２３】
図１を参照して、この発明の一実施例であるゲームシステム１０は、ビデオゲーム装置１２を含む。ビデオゲーム装置１２は、略立方体のハウジング１４を含み、ハウジング１４の上端には光ディスクドライブ１６が設けられる。光ディスクドライブ１６には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が装着される。ハウジング１４の前面には複数の（実施例では４つの）コネクタ２０が設けられる。これらコネクタ２０は、ケーブル２４によって、コントローラ２２をビデオゲーム装置１２に接続するためのものであり、この実施例では最大４つのコントローラ２２をビデオゲーム装置１２に接続することができる。
【００２４】
コントローラ２２には、その上面，下面，或いは側面などに、操作部（操作スイッチ）２６が設けられる。操作部２６は、たとえば２つのアナログジョイスティック，１つの十字キー，複数のボタンスイッチ等を含む。１つのアナログジョイスティックは、スティックの傾き量と方向とによって、プレイヤオブジェクト（プレイヤがコントローラ２２によって操作可能な動画オブジェクト）の移動方向および／または移動速度ないし移動量などを入力するために用いられる。他のアナログジョイスティックは、傾斜方向によって、仮想カメラの移動を制御する。十字スイッチは、アナログジョイスティックに代えてプレイヤオブジェクトの移動方向を指示するために用いられる。ボタンスイッチは、プレイヤオブジェクトの動作を指示するために利用されたり、３次元画像の仮想カメラの視点を切り換えたり、プレイヤオブジェクトの移動スピード調節等に用いられる。ボタンスイッチは、さらに、たとえばメニュー選択やポインタあるいはカーソル移動を制御する。
【００２５】
なお、この実施例ではコントローラ２２がそれと一体的に設けられるケーブル２４によってビデオゲーム装置１２に接続された。しかしながら、コントローラ２２は、他の方法、たとえば電磁波（たとえば電波または赤外線）を介してワイヤレスで、ビデオゲーム装置１２に接続されてもよい。また、コントローラ２２の操作部２６の具体的構成は、もちろん実施例の構成に限られるものではなく、任意の変形が可能である。たとえば、アナログジョイスティックは１つだけでもよいし、用いられなくてもよい。十字スイッチは用いられなくてもよい。
【００２６】
ビデオゲーム装置１２のハウジング１４の前面であり、コネクタ２０の下方には、１つまたは複数の（この実施例では２つの）メモリスロット２８が設けられる。このメモリスロット２８にはメモリカード３０が挿入される。メモリカード３０は、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。
【００２７】
ビデオゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、そのコネクタを用いて、ＡＶケーブル３２を通してビデオゲーム装置１２にモニタ３４を接続する。このモニタ３４は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２は、ビデオゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。
【００２８】
このゲームシステム１０において、ユーザまたはゲームプレイヤがゲーム（または他のアプリケーション）をプレイするために、ユーザはまずビデオゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）をストアしている適宜の光ディスク１８を選択し、その光ディスク１８をビデオゲーム装置１２のディスクドライブ１６にローディングする。応じて、ビデオゲーム装置１２がその光ディスク１８にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置１２に入力を与えるためにコントローラ２２を操作する。たとえば、操作部２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。操作部２６の他のものを動かすことによって、動画オブジェクト（プレイヤオブジェクト）を異なる方向に移動させ、または３次元（３Ｄ）のゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。
【００２９】
図２は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。ビデオゲーム装置１２には、中央処理ユニット（以下、「ＣＰＵ」という。）３６が設けられる。このＣＰＵ３６は、コンピュータ或いはプロセサなどとも呼ばれ、ビデオゲーム装置１２の全体的な制御を担当する。ＣＰＵ３６ないしコンピュータは、ゲームプロセサとして機能し、このＣＰＵ３６には、バスを介して、メモリコントローラ３８が接続される。メモリコントローラ３８は主として、ＣＰＵ３６の制御の下で、バスを介して接続されるメインメモリ４０の書込みや読出しを制御する。このメモリコントローラ３８にはＧＰＵ(Graphics Processing Unit:グラフィックス処理装置) ４２が接続される。
【００３０】
ＧＰＵ４２は、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、メモリコントローラ３８を介してＣＰＵ３６からのグラフィクスコマンド(graphics command ：作画命令) を受け、そのコマンドに従って、ジオメトリユニット４４およびレンダリングユニット４６によって３次元（３Ｄ）ゲーム画像を生成する。つまり、ジオメトリユニット４４は、３次元座標系の各種オブジェクトやオブジェクト（複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも３つの頂点座標によって定義される多角形平面をいう。）の回転，移動，変形等の座標演算処理を行う。レンダリングユニット４６は、各種オブジェクトの各ポリゴンにテクスチャ（Texture ：模様画像）を貼り付けるなどの画像生成処理を施す。したがって、ＧＰＵ４２によって、ゲーム画面上に表示すべき３Ｄ画像データが作成され、その画像データがフレームバッファ４８内に記憶される。
【００３１】
なお、ＧＰＵ４２が作画コマンドを実行するにあたって必要なデータ（プリミティブまたはポリゴンやテクスチャ等）は、ＧＰＵ４２がメモリコントローラ３８を介して、メインメモリ４０から入手する。
【００３２】
フレームバッファ４８は、たとえばラスタスキャンモニタ３４の１フレーム分の画像データを描画（蓄積）しておくためのメモリであり、ＧＰＵ４２によって１フレーム毎に書き換えられる。具体的には、フレームバッファ４８は、１画素（ピクセル）毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、Ｒ，Ｇ，Ｂ，Ａについてのデータであり、たとえば、８ビットのＲ（赤）データ、８ビットのＧ（緑）データ、８ビットのＢ（青）データおよび８ビットのＡ（アルファ）データである。なお、Ａデータは、マスク（マット画像）についてのデータである。後述のビデオＩ／Ｆ５８がメモリコントローラ３８を介してフレームバッファ４８のデータを読み出すことによって、モニタ３４の画面上に３Ｄゲーム画像が表示される。
【００３３】
また、Ｚバッファ５０は、フレームバッファ４８に対応する画素数×１画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ４８の各記憶位置に対応するドットの奥行き情報または奥行きデータ（Ｚ値）を記憶するものである。
【００３４】
なお、フレームバッファ４８およびＺバッファ５０は、ともにメインメモリ４０の一部を用いて構成されてもよく、また、これらはＧＰＵ４２の内部に設けられてもよい。
【００３５】
メモリコントローラ３８はまた、ＤＳＰ(Digital Signal Processor)５２を介して、オーディオ用のＲＡＭ（以下、「ＡＲＡＭ」という。）５４に接続される。したがって、メモリコントローラ３８は、メインメモリ４０だけでなく、サブメモリとしてのＡＲＡＭ５４の書込みおよび／または読出しを制御する。
【００３６】
ＤＳＰ５２は、サウンドプロセサとして働き、メインメモリ４０に記憶されたサウンドデータ（図示せず）を用いたり、ＡＲＡＭ５４に書き込まれている音波形データ（図示せず）を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【００３７】
メモリコントローラ３８は、さらに、バスによって、各インタフェース（Ｉ／Ｆ）５６，５８，６０，６２および６４に接続される。コントローラＩ／Ｆ５６は、ビデオゲーム装置１２に接続されるコントローラ２２のためのインタフェースであり、コントローラ２２の操作部２６の操作信号または操作データを、メモリコントローラ３８を通してＣＰＵ３６に与える。ビデオＩ／Ｆ５８は、フレームバッファ４８にアクセスし、ＧＰＵ４２で作成した画像データを読み出して、画像信号または画像データ（ディジタルＲＧＢＡピクセル値）をＡＶケーブル３２（図１）を介してモニタ３４に与える。
【００３８】
外部メモリＩ／Ｆ６０は、ビデオゲーム装置１２の前面に挿入されるメモリカード３０（図１）をメモリコントローラ３８に連係させる。それによって、メモリコントローラ３８を介して、ＣＰＵ３６がこのメモリカード３０にデータを書込み、またはメモリカード３０からデータを読み出すことができる。オーディオＩ／Ｆ６２は、メモリコントローラ３８を通してＤＳＰ５２から与えられるオーディオデータまたは光ディスク１８から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号（音声信号）をモニタ３４のスピーカ３４ａに与える。
【００３９】
そして、ディスクＩ／Ｆ６４は、ディスクドライブ１６をメモリコントローラ３８に接続し、したがって、ＣＰＵ３６がディスクドライブ１６を制御する。このディスクドライブ１６によって光ディスク１８から読み出されたプログラムデータやテクスチャデータ等が、ＣＰＵ３６の制御の下で、メインメモリ４０に書き込まれる。
【００４０】
図３はこの実施例の仮想ゲーム（アクションゲーム）のゲーム画面１００の一例を示す。このゲーム画面１００には、プレイヤキャラクタ１０２、地面オブジェクト（床オブジェクト）１０４、複数のブロックオブジェクト１０６によって構成される段差オブジェクト１０８および背景画像１１０が表示される。図３からも分かるように、ゲーム画面１００は、２次元（２Ｄ）で、プレイヤキャラクタ１０２を、その進行方向（Ｘ軸方向）に対して横から見るように表示される。図示は省略するが、この２Ｄのゲーム画面１００は、プレイヤキャラクタ１０２の移動に従って左右にまたは上下にスクロールされる。また、ゲーム画面１００は、左上、左下、右上および右下のように、複合的な方向にスクロールさせる場合もある。
【００４１】
ただし、厳密に言うと、ゲーム装置１２の画像処理では、プレイヤキャラクタ１０２やオブジェクト（１０４，１０６，１０８など）は、３次元（３Ｄ）でモデリングされる。したがって、図３に示すゲーム画面１００を表示する場合には、このゲーム画面１００が擬似的に２Ｄに見えるように、図示しない仮想カメラ（視点）の位置（３次元位置）およびその方向が設定されるのである。ここで、視点の方向（視点方向）は、予め設定されている基準の方向（仮想カメラをパンおよびチルトしていないホームポジションの方向）からの角度で表わすことができる。または、視点方向は、視点に対する距離および角度で定義することができる注視点の位置座標で表わすこともできる。
【００４２】
なお、この実施例では、背景画像１１０は、３次元座標系において、所定のＺ値が示す位置、たとえば、２Ｄのゲーム画面１００を表示する場合の後方クリッピング（ファークリッピング）平面に相当する位置に配置されるビルボードにテクスチャが貼り付けられて、生成される。
【００４３】
また、この実施例では、プレイヤの操作対象であるプレイヤキャラクタ１０２と、プレイヤの操作対象でないオブジェクト（１０４，１０６，１０８など）とを区別するために、「キャラクタ」と「オブジェクト」とを使い分けているが、「キャラクタ」と「オブジェクト」とを厳密に区別する必要はなく、単なる表現上の相違である。
【００４４】
図４は、図３に示す場面（マップ上の位置）と同じ場面における３Ｄのゲーム画面２００を示す。図４に示すゲーム画面２００では、ゲーム画面１００を生成する場合とは異なる位置に視点が移動され、その方向も変化される。具体的には、プレイヤキャラクタ１０２の後方であり、その進行方向（Ｘ軸方向）を向くように、視点位置および視点方向が切り換えられる。図４からも分かるように、ゲーム画面２００では、プレイヤキャラクタ１０２、地面オブジェクト１０４および段差オブジェクト１０８は、３Ｄ表示される。また、段差オブジェクト１０８は、４つの構成要素１０８ａ，１０８ｂ，１０８ｃ，１０８ｄによって構成され、構成要素１０８ａ−１０８ｄの各々は、Ｘ軸方向のみならず、Ｚ軸方向の位置が異なる。また、構成要素１０８ａ−１０８ｄの各々は、１または２以上のブロックオブジェクト１０６によって構成される。したがって、そのブロックオブジェクト１０６を重ねた数によって、構成要素１０８ａ−１０８ｄの各々のＹ軸方向の位置（高さ）が異なる。
【００４５】
ただし、２Ｄのゲーム画面１００における背景画像１１０は、３Ｄのゲーム画面２００では、プレイヤキャラクタ１０２がその進行方向（Ｘ軸方向）を向いた場合の左側面となる。また、３Ｄのゲーム画面２００では、プレイヤキャラクタ１０２がその進行方向を向いた場合の右側面は、何ら表示されていない。しかし、実際には、接触を判定するための透明のポリゴン（図示せず）が右側面に配置され、プレイヤキャラクタ１０２が、その進行方向に対して右方向（Ｚ軸方向）に移動するのを制限してある。
【００４６】
なお、３Ｄのゲーム画面２００を表示した場合の右側面は、２Ｄのゲーム画面１００を表示する場合の前方クリッピング（ニアークリッピング）平面に相当する。
【００４７】
このように、同じ場面であっても、２Ｄのゲーム画面１００を表示してゲームを進行させたり、３Ｄのゲーム画面２００を表示してゲームを進行させたりすることができる。たとえば、プレイヤは、コントローラ２２の操作手段２６のいずれかを操作すると、仮想カメラ（視点）が切り換えられる。これにより、２Ｄのゲーム画面１００または３Ｄのゲーム画面２００を選択的に表示して、プレイヤはゲームを進行させ、ゲーム（マップ）を攻略する。
【００４８】
たとえば、図４に示す３Ｄのゲーム画面２００から分かるように、図３および図４に示す場面においては、プレイヤは、地面オブジェクト１０４と段差オブジェクト１０８とが無い（存在しない）部分を超えて、プレイヤキャラクタ１０２を進行方向（Ｘ軸方向）に進行させることになる。つまり、３次元仮想空間においては、段差オブジェクト１０８は構成要素１０８ａ−１０８ｄに分かれており、各構成要素１０８ａ−１０８ｄの間には、地面オブジェクト１０４が存在しないため、プレイヤキャラクタ１０２が落下し（Ｙ軸方向下向きに移動し）易いと言える。一方、図３に示す２Ｄのゲーム画面１００では、段差オブジェクト１０８は階段状に一体的に表示されるため、段差オブジェクト１０８上を移動する場合には、プレイヤキャラクタ１０２が落下することはない。つまり、このような場面では、３Ｄのゲーム画面２００を表示させる場合に比べて、２Ｄのゲーム画面１００を表示した方が、簡単にプレイヤキャラクタ１０２を進行方向に移動させることができると言える。
【００４９】
ただし、上述したように、プレイヤキャラクタ１０２等は、３Ｄでモデリングされており、２Ｄのゲーム画面１００が表示されている場合であっても、プレイヤキャラクタ１０２は３Ｄの仮想空間を移動している。このため、何ら手当てしなければ、たとえば、プレイヤキャラクタ１０２が、Ｚ軸方向の位置が構成要素１０８ａと構成要素１０８ｂとの間を移動する場合には、段差オブジェクト１０８上を移動しているにもかかわらず、ブロックオブジェクト１０６を通り抜けて、落下してしまうという不都合が生じてしまう。逆に、３Ｄのゲーム画面２００を表示している場合には、構成要素１０８ａと構成要素１０８ｂとの間では、プレイヤキャラクタ１０２を落下させる必要がある。
【００５０】
これらを回避するために、所定のオブジェクト（この実施例では、段差オブジェクト１０８）に対して、２Ｄのゲーム画面１００を表示した場合のコリジョンデータ（２Ｄ用コリジョンデータ４０４ｈ）と、３Ｄのゲーム画面２００を表示した場合のコリジョンデータ（３Ｄ用コリジョンデータ４０４ｉ）とを用意しておき、選択的に使用するようにしてある。
【００５１】
具体的には、図３に示すような２Ｄのゲーム画面１００が表示される場合には、段差オブジェクト１０８に対して、図５に示すような接触判定用の多面体１２０が配置される。この多面体１２０は、複数の透明のポリゴン１２０ａによって構成され、したがって、実際のゲーム画面１００を表示した場合には、プレイヤは見えない。また、図５からもよく分かるように、多面体１２０は、複数のポリゴン１２０ａによって横長の階段状に形成される。こ多面体１２０の幅は、Ｚ軸方向のニアークリップ平面とファークリップ平面とで区切られる。したがって、プレイヤキャラクタ１０２が、段差オブジェクト１０８上を移動する場合には、Ｚ軸方向の位置がどこであっても、当該多面体１２０と接触し、したがって、落下しないように表示してある。ただし、図５（図６も同じ。）においては、接触判定用の多面体１２０を分かり易く示すために、ポリゴン１２０ａの外形線を示してある。
【００５２】
一方、図４に示すような３Ｄのゲーム画面２００における段差オブジェクト１０８では、構成要素１０８ａ−１０８ｄの各々でそのＺ値が異なる。したがって、図６に示すように、構成要素１０８ａ−１０８ｄの各々に対して、接触判定用の多面体１３０，１４０，１５０，１６０が個別に配置される。具体的には、構成要素１０８ａに対応して多面体１３０が設定され、構成要素１０８ｂに対応して多面体１４０が設定され、構成要素１０８ｃに対応して多面体１５０が設定され、そして、構成要素１０８ｄに対応して多面体１６０が設定される。また、多面体１３０は複数のポリゴン１３０ａによって構成され、多面体１４０は複数のポリゴン１４０ａによって構成され、多面体１５０は複数のポリゴン１５０ａによって構成され、そして、多面体１６０は複数のポリゴン１６０ａによって構成される。
【００５３】
したがって、プレイヤは、コントローラ２２を操作して、プレイヤキャラクタ１０２を、構成要素１０８ａ−１０８ｄが配置されていない場所を移動させる場合には、対岸の地面オブジェクト１０４までジャンプさせなければ、プレイヤキャラクタ１０２は、多面体１３０−１６０と接触することがない。したがって、プレイヤキャラクタ１０２は、落下表示され、その後、死滅する。
【００５４】
なお、図５および図６では、接触判定用の多面体１２０−１６０を分かり易く示すために、図３に示したゲーム画面１００および図４に示したゲーム画面２００とは異なる位置に仮想カメラ（視点）をそれぞれ配置して、斜めから仮想３次元（ゲーム）空間を見た場合について示してある。
【００５５】
次に、接触判定について説明する。まず、プレイヤキャラクタ１０２と、予めコリジョンデータが用意されているオブジェクトとの判定方法について説明する。かかる場合には、プレイヤキャラクタ１０２には、接触判定を行うための複数のベクトルが設定される。図７に示すように、プレイヤキャラクタ１０２には、その中心軸（Ｙ軸に並行な軸）から外部に向かう複数のベクトルＰが設定される。
【００５６】
なお、図７においては、分かり易く示すために、ベクトルＰをくさびで示してある。同様の理由により、図７では、くさびがプレイヤキャラクタ１０２の表面から出ているように示してあるが、実際には、各ベクトルＰの始点は中心軸上である。また、図７では分かり難いが、各ベクトルＰの大きさ（スカラ）は同じである。
【００５７】
また、かかる場合には、現在表示されているゲーム画面が２Ｄであるか３Ｄであるかで、使用するコリジョンデータが異なる。つまり、２Ｄのゲーム画面１００が表示されている場合には、２Ｄ用のコリジョンデータ（図９に示す４０４ｈ）が使用され、３Ｄのゲーム画面２００が表示されている場合には、３Ｄ用のコリジョンデータ（図９に示す４０４ｉ）が使用される。
【００５８】
また、図５および図６を用いて説明したように、所定のオブジェクト（たとえば、段差オブジェクト１０８）に対しては、用意されているコリジョンデータに従って、複数の透明のポリゴンで構成された多面体（たとえば、多面体１２０，多面体１３０−１６０）が設定される。このように、予め用意されたコリジョンデータを使用して接触判定する場合には、コリジョンデータに従って設定された多面体（１２０−１６０）に含まれる各ポリゴンと、ベクトルＰとが接触するか否かが判断（判定）される。具体的には、ベクトルＰとポリゴン面とが交差するか否か、または、ベクトルＰがポリゴン面に含まれるか否かで、接触の有無が判定される。
【００５９】
ただし、３Ｄ用のコリジョンデータを使用して接触判定する場合には、プレイヤキャラクタ１０２に設定されたすべてのベクトルＰについて判定される。つまり、仮想３次元空間のＸ軸方向，Ｙ軸方向，Ｚ軸方向のすべてについて接触判定が実行される。一方、２Ｄ用のコリジョンデータを使用して接触判定する場合には、プレイヤキャラクタ１０２に設定されたベクトルＰのうち、Ｘ軸に並行なもののみが用いられる。つまり、Ｚ軸方向については接触の判定を行わず、Ｘ軸方向およびＹ軸方向について接触判定が実行される。すなわち、Ｚ軸方向は無視される。
【００６０】
次に、プレイヤキャラクタ１０２と敵オブジェクト（図示せず）との接触判定、敵オブジェクト同士の接触判定、または、プレイヤキャラクタ１０２とアイテムオブジェクト（図示せず）との接触判定などの判定方法について説明する。かかる場合には、敵オブジェクトやアイテムオブジェクトでは、接触判定用のデータ（コリジョンデータ）を用意しておく必要がなかったり、用意しておくことができなかったりする。これは、敵オブジェクトは３次元仮想空間内を移動し、アイテムオブジェクトは出現したりしなかったりするためである。このため、かかる場合には、接触判定の必要に応じて、その都度、敵オブジェクトやアイテムオブジェクトのコリジョンデータ（この実施例では、簡単な平面図形または立体図形についてのデータ）が作成（算出）される。また、かかる場合には、接触判定を簡単に行うために、プレイヤキャラクタ１０２についても、他のオブジェクトと同様に、コリジョンデータが作成される。
【００６１】
具体的には、接触判定においては、プレイヤキャラクタ１０２、敵オブジェクトやアイテムオブジェクトは、２Ｄのゲーム画面１００が表示されている場合には、その外形を囲むように、円形や矩形（長方形、正方形）などの平面図形（この実施例では、ＸＹ平面と並行な平面図形）として現される。つまり、プレイヤキャラクタ１０２、敵オブジェクトやアイテムオブジェクトの高さ（Ｙ軸方向の長さ）および幅（Ｘ軸方向の長さ）を取得し、その高さおよび幅に基づいて、ＸＹ軸（ＸＹ平面）における平面図形が算出される。
【００６２】
一方、３Ｄのゲーム画面２００が表示されている場合には、プレイヤキャラクタ１０２、敵オブジェクトやアイテムオブジェクトは、その外形を囲むように、球、円柱、立方体または直方体などの立体図形として現される。つまり、プレイヤキャラクタ１０２、敵オブジェクトやアイテムオブジェクトの高さ（Ｙ軸方向の長さ）、幅（Ｘ軸方向の高さ）および奥行き（Ｚ軸方向の長さ）を取得し、その高さ、幅および奥行きに基づいて、ＸＹＺ軸（３次元仮想空間）における立体図形が算出される。
【００６３】
ただし、プレイヤキャラクタ１０２と敵オブジェクトとの接触判定、敵オブジェクト同士の接触判定、または、プレイヤキャラクタ１０２とアイテムオブジェクトとの接触判定などを行う場合には、接触判定を行うもの同士を同じ図形で現すようにしてある。以下、オブジェクト同士の接触判定について具体的に説明するが、プレイヤキャラクタ１０２と敵オブジェクトとの接触判定、およびプレイヤキャラクタ１０２とアイテムオブジェクトとの接触判定についても同様である。
【００６４】
たとえば、図８（Ａ）を参照して、オブジェクト（ここでは、２１０，２１２）のコリジョンデータに対応する図形が、直方体または立方体のような四角柱状に設定（算出）された場合の接触判定について説明する。図８（Ａ）からも分かるように、オブジェクト２１０は、その位置座標（中心座標）が（Ｘｏ１，Ｙｏ１，Ｚｏ１）であり、Ｘ軸方向の長さ（横），Ｙ軸方向の長さ（縦），Ｚ軸方向の長さ（奥行き）が、それぞれ、Ｌ１，Ｌ２，Ｌ３である。一方、オブジェクト２１２は、その位置座標（中心座標）が（Ｘｏ２，Ｙｏ２，Ｚｏ２）であり、Ｘ軸方向の長さ（横），Ｙ軸方向の長さ（縦），Ｚ軸方向の長さ（奥行き）が、それぞれ、Ｈ１，Ｈ２，Ｈ３である。このように、各オブジェクトの外形形状を四角柱状に設定した場合には、各オブジェクトの距離（中心距離）ｄと、各辺の長さとが、次の数１〜数３を全て満たせば、オブジェクト２１０とオブジェクト２１２とが接触していると判断される。しかし、数１〜数３のいずれか１つでも満たさなければ、オブジェクト２１０とオブジェクト２１２とは接触していないと判断される。ただし、数１〜数３において、ｄｘ，ｄｙ，ｄｚは、中心距離ｄのＸ成分，Ｙ成分，Ｚ成分である。また、中心距離ｄの各成分ｄｘ，ｄｙ，ｄｚは数４に従って算出される。
【００６５】
[数１]
｜Ｌ１−Ｈ１｜≦ｄｘ
[数２]
｜Ｌ２−Ｈ２｜≦ｄｙ
[数３]
｜Ｌ３−Ｈ３｜≦ｄｚ
［数４］
ｄｘ＝√｛（Ｘｏ１−Ｘｏ２）２｝
ｄｙ＝√｛（Ｙｏ１−Ｙｏ２）２｝
ｄｚ＝√｛（Ｚｏ１−Ｚｏ２）２｝
ただし、｜・｜は絶対値である。また、図示は省略するが、２Ｄのゲーム画面１００が表示されている場合には、２Ｄについて判断すればよいため、オブジェクトの外形は長方形や正方形の矩形（四角形）に設定される。したがって、接触判定では、Ｚ成分は無視される。
【００６６】
また、図８（Ｂ）を参照して、オブジェクト（ここでは、２２０，２２２）のコリジョンデータに対応する図形が、球状（図面では、簡単のため２次元の円で示してある。）に設定（算出）された場合の接触判定について説明する。図８（Ｂ）から分かるように、オブジェクト２２０は、その位置座標（中心座標）が（Ｘｏ３，Ｙｏ３，Ｚｏ３）であり、半径Ｒである。一方、オブジェクト２２２は、その位置座標（中心座標）が（Ｘｏ４，Ｙｏ４，Ｚｏ４）であり、半径ｒである。このように、オブジェクトの外形を球状に設定した場合には、以下に示す数５〜数７のすべてを満たせば、オブジェクト２２０とオブジェクト２２２とが接触していると判断される。しかし、数５〜数７のいずれから１つでも満たさなければ、オブジェクト２２０とオブジェクト２２２とは接触していないと判断される。ただし、中心距離ｄ（ｄｘ，ｄｙ，ｄｚ）は数４に従って求められる。
【００６７】
[数５]
ｄｘ≦Ｒ＋ｒ
[数２]
ｄｙ≦Ｒ＋ｒ
[数３]
ｄｚ≦Ｒ＋ｒ
なお、図示は省略するが、２Ｄのゲーム画面１００が表示されている場合には、２Ｄについて判断すればよいため、オブジェクトの外形は円形に設定される。したがって、接触判定では、Ｚ成分は無視される。
【００６８】
図９にはメインメモリ４０のメモリマップが示される。メインメモリ４０は、プログラム記憶領域４０２およびデータ記憶領域４０４を含む。プログラム記憶領域４０２には、この実施例のアクションゲームのゲームプログラムが記憶される。このゲームプログラムは、ゲームメイン処理プログラム４０２ａ、画像生成プログラム４０２ｂ、画像表示プログラム４０２ｃ、操作情報取得プログラム４０２ｄ、プレイヤキャラクタ制御プログラム４０２ｅ、オブジェクト制御プログラム４０２ｆ、視点切換プログラム４０２ｇ、視点制御プログラム４０２ｈおよび接触判定プログラム４０２ｉなどによって構成される。
【００６９】
ゲームメイン処理プログラム４０２ａは、アクションゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム４０２ｂは、仮想ゲーム空間（仮想３次元空間）に存在するプレイヤキャラクタ１０２、敵オブジェクトのようなノンプレイヤオブジェクト、アイテムオブジェクトおよび背景オブジェクト（１０４，１０６，１０８）等を含むゲーム画像を生成するためのプログラムである。
【００７０】
ここで、プレイヤクキャラクタ１０２とは、プレイヤの操作によって仮想３次元空間内を移動等する動画キャラクタをいう。また、ノンプレイヤオブジェクトとは、プレイヤの操作によらないで、プログラムに従って移動等するオブジェクトをいう。背景オブジェクトとは、壁、床（地面）、柱、樹木などの背景についてのオブジェクトをいう。このような背景オブジェクトの配列等によって、アクションゲームのマップが形成される。
【００７１】
画像表示プログラム４０２ｃは、画像生成プログラム４０２ｂの実行によって生成されたゲーム画像をモニタ３４に表示するためのプログラムである。操作情報取得プログラム４０２ｄは、プレイヤによる操作情報（操作入力）を取得するためのプログラムであり、コントローラＩ／Ｆ５６を介して入力されるコントローラ２２からの操作データ（操作信号）を検出して、データ記憶領域４０４に記憶する。
【００７２】
プレイヤキャラクタ制御プログラム４０２ｅは、操作情報取得プログラム４０２ｄに従って取得された操作データに応じて、移動後のプレイヤキャラクタ１０２の位置座標（３次元座標）を算出して、現在位置を更新したり、プレイヤキャラクタ１０２に任意のアクションをさせたりなどするためのプログラムである。また、プレイヤキャラクタ制御プログラム４０２ｅは、後述する接触判定プログラム４０２ｈの判定結果に応じて、プレイヤキャラクタ１０２のライフ（生命力）を減らしたり、プレイヤキャラクタ１０２や敵オブジェクトを死滅させたり、プレイヤキャラクタ１０２にアイテムを取得させたり、ブロックオブジェクト１０６を壊したりなどの処理を実行する。
【００７３】
オブジェクト制御プログラム４０２ｆは、敵オブジェクトのようなノンプレイヤオブジェクトを仮想３次元空間内で移動させるためのプログラムである。また、オブジェクト制御プログラム４０２ｆは、接触判定プログラム４０２ｈの判定結果に応じて、プレイヤキャラクタ１０２のライフを減らしたり、プレイヤキャラクタ１０２や敵オブジェクトを死滅させたり、プレイヤキャラクタ１０２にアイテムを取得させたり、ブロックオブジェクト１０６を壊したりなどの処理を実行する。
【００７４】
視点切換プログラム４０２ｇは、仮想３次元空間内に配置される仮想カメラ（視点）を切り換えるためのプログラムである。この実施例では、視点切換プログラム４０２ｇは、２Ｄのゲーム画面１００を生成するための仮想カメラ（視点）位置および視点方向と、３Ｄのゲーム画面２００を生成するための視点位置および視点方向とを切り換えるためのプログラムである。ただし、視点切換プログラム４０２ｇは、プレイヤキャラクタ１０２の現在位置に対応して記憶される視点データ（視点位置および視点方向のデータ）を、２Ｄ用の視点パラメータ（２Ｄ視点パラメータ４０４ｆ）、または３Ｄ用の視点パラメータ（３Ｄ視点パラメータ４０４ｇ）から取得する。
【００７５】
視点制御プログラム４０２ｈは、仮想カメラ（視点）の移動すなわち視点位置の変更、および視点方向の変更を制御するためのプログラムである。具体的には、視点制御プログラム４０２ｈは、２Ｄのゲーム画面１００が表示されている場合には、コントローラ２２からの操作入力すなわちプレイヤキャラクタ１０２の移動に従ってＸ座標およびＹ座標を更新する。ただし、２Ｄのゲーム画面１００が表示されている場合には、プレイヤからの操作入力がない限り、視点位置のＺ座標は一定である。また、視点制御プログラム４０２ｈは、３Ｄのゲーム画面２００が表示されている場合には、プレイヤキャラクタ１０２を追従するように、その移動に従ってＸ座標、Ｙ座標およびＺ座標の各々を更新する。
【００７６】
なお、詳細な説明は省略するが、２Ｄまたは３Ｄのいずれの場合であっても、プレイヤがコントローラ２２を操作して、仮想カメラ（視点）位置や視点方向（注視点の位置）を変更することができる。その変更内容は、メインメモリ４０のデータ記憶領域に記憶（設定）される。したがって、視点位置や視点方向が変更されると、変更後の視点位置とプレイヤキャラクタ１０２との位置関係を保持するとともに、変更後の視点方向を保持するように、プレイヤキャラクタ１０２の移動に従って視点位置が更新される。
【００７７】
接触判定プログラム４０２ｉは、上述した方法により、プレイヤキャラクタ１０２と他のオブジェクト（１０４，１０６，１０８など）の接触（当たり，衝突）を判定したり、敵キャラクタ同士の接触を判定したりするためのプログラムである。
【００７８】
なお、図示は省略するが、プログラム記憶領域４０２には、ゲーム音再生プログラムやバックアッププログラムなどの他のプログラムも記憶される。ゲーム音再生プログラムは、ゲームに登場するキャラクタの声や擬声音、ＢＧＭのようなゲーム音楽、効果音など、ゲームに必要な音を生成し、出力するためのプログラムである。また、バックアッププログラムは、所定のイベントやプレイヤの指示に従って、メインメモリ４０に記憶（一時記憶）されるゲームデータ（ゲームの途中データないし結果データ）をメモリカード３０に保存するためのプログラムである。
【００７９】
また、データ記憶領域４０４には、画像データ４０４ａ、操作データ４０４ｂ、プレイヤキャラクタデータ４０４ｃ、オブジェクトデータ４０４ｄ、視点データ４０４ｅ、２Ｄ視点パラメータデータ４０４ｆ、３Ｄ視点パラメータデータ４０４ｇ、２Ｄ用コリジョンデータ４０４ｈ、３Ｄ用コリジョンデータ４０４ｉおよび２Ｄフラグデータ４０４ｊなどのデータが記憶される。
【００８０】
画像データ４０４ａは、プレイヤキャラクタ１０２、敵オブジェクト、アイテムオブジェクト、背景オブジェクト（地面オブジェクト１０４、ブロックオブジェクト１０６、段差オブジェクト１０８など）などのキャラクタやオブジェクトを描画したり、背景画像１１０を描画したりするためのデータ（ポリゴンデータやテクスチャデータ）である。操作データ４０４ｂは、プレイヤがコントローラ２２の操作手段を操作することにより、コントローラ２２から入力された操作データである。キャラクタデータ４０４ｃは、３次元仮想空間におけるプレイヤキャラクタ１０２の現在の３次元位置（３次元座標）についてのデータ（座標データ）である。このキャラクタデータ４０４ｃは、プレイヤの操作入力に従って更新される。
【００８１】
また、オブジェクトデータ４０４ｄは、３次元空間における敵オブジェクト、アイテムオブジェクトおよび背景オブジェクト（１０４，１０６，１０８）のようなオブジェクトの現在の３次元位置（３次元座標）についての座標データである。ただし、各オブジェクトに対応して、座標データが記憶され、敵オブジェクトのような動画オブジェクトは、プログラムに従って（ＣＰＵ３６の処理によって）その座標データは更新される。
【００８２】
視点データ４０４ｅは、３次元仮想空間における仮想カメラ（視点）の現在の３次元位置（３次元座標）のデータ（座標データ）および視点方向についてのデータ（基準方向からの角度データまたは注視点の座標データ）である。２Ｄ視点パラメータデータ４０４ｆは、２Ｄのゲーム画面１００を表示する場合に参照される視点データであり、場面ないしはマップ上の位置の各々に対応して予め設定されている。３Ｄ視点パラメータデータ４０４ｇは、３Ｄのゲーム画面２００を表示する場合に参照される視点データであり、場面ないしはマップ上の位置の各々に対応して予め設定されている。
【００８３】
２Ｄ用コリジョンデータ４０４ｈは、２Ｄのゲーム画面１００が表示されている場合に、所定のオブジェクト（この実施例では、段差オブジェクト１０８）に対して用意された、接触判定用のデータである。具体的には、多面体（この実施例では、１２０）を構成する各ポリゴン（この実施例では、１２０ａ）の頂点についての座標（３次元座標）データである。たとえば、２Ｄ用コリジョンデータ４０４ｈ（後述する３Ｄ用コリジョンデータ４０４ｉも同様。）は、所定のオブジェクトに対応して、複数のポリゴンが設定され、さらに、各ポリゴンに対応して、該当するポリゴンの頂点の座標（３次元座標）が記述されたテーブルデータである。
【００８４】
３Ｄ用コリジョンデータ４０４ｉは、３Ｄのゲーム画面２００が表示されている場合に、所定のオブジェクト（この実施例では、段差オブジェクト１０８）に対して用意された、接触判定用のデータである。具体的には、多面体（この実施例では、１３０，１４０，１５０，１６０）を構成するポリゴン（この実施例では、１３０ａ，１４０ａ，１５０ａ，１６０ａ）の頂点についての３次元座標データである。
【００８５】
２Ｄフラグデータ４０４ｊは、２Ｄのゲーム画面１００が表示されているか否かを判断するためのフラグデータである。この２Ｄフラグデータ４０４ｊは、たとえば１ビットのレジスタで構成され、フラグがオン（成立）されている場合に、レジスタにデータ値「１」が設定され、フラグがオフ（不成立）されている場合に、レジスタにデータ値「０」が設定される。ただし、２Ｄのゲーム画面１００が表示されている場合に、フラグがオンされ、３Ｄのゲーム画面２００が表示されている場合に、フラグがオフされる。
【００８６】
なお、図示は省略するが、データ記憶領域４０４には、ゲームの進行によって発生するゲームデータないし他のフラグデータなども記憶される。また、ゲームに必要な音を出力するための音（音楽）データも記憶される。
【００８７】
具体的には、図２に示したＣＰＵ３６が図１０に示すゲーム全体処理を実行する。図１０に示すように、ＣＰＵ３６はゲーム全体処理を開始すると、まず、ステップＳ１で、初期設定を行う。たとえば、ゲームを最初から開始する場合には、メインメモリ４０のバッファ領域を初期化したり、メインメモリ４０に記憶されるフラグデータに初期値を設定したりする。また、ゲームを前回の続きから開始する場合には、メモリカード３０に記憶されたゲームデータをロードする。
【００８８】
続いて、ステップＳ３で、後述する視点制御処理（図１１参照）を実行し、ステップＳ５で、後述するプレイヤキャラクタ制御処理（図１２参照）を実行する。次に、ステップＳ７で、後述するオブジェクト制御処理（図１３参照）を実行し、ステップＳ９で、後述する画像生成処理（図１６参照）を実行する。次のステップＳ１１では、ステップＳ９で生成した画像（ゲーム画像）をモニタ３４に表示する。
【００８９】
そして、ステップＳ１３で、ゲーム終了かどうかを判断する。つまり、ゲームオーバになったり、プレイヤによってゲーム終了を指示されたりしたかどうかを判断する。ステップＳ１３で“ＮＯ”であれば、つまりゲーム終了でなければ、ステップＳ３に戻る。一方、ステップＳ１３で“ＹＥＳ”であれば、つまりゲーム終了であれば、そのままゲーム全体処理を終了する。
【００９０】
図１１は、図１０に示したステップＳ３の視点制御処理を示すフロー図である。この図１１に示すように、ＣＰＵ３６は視点制御処理を開始すると、ステップＳ２１で、２Ｄかどうかを判断する。つまり、２Ｄフラグデータ４０４ｊを参照して、２Ｄフラグがオンであるかどうかを判断する。ステップＳ２１で“ＹＥＳ”であれば、つまり２Ｄフラグがオンであれば、２Ｄであると判断して、ステップＳ２３で、２Ｄ視点パラメータデータ４０４ｆを取得する。厳密に言うと、ステップＳ２３では、プレイヤキャラクタデータ４０４ｃを参照して、プレイヤキャラクタ１０２の現在位置を取得し、この現在位置に対応して記憶される２Ｄ視点パラメータデータ４０４ｆ（視点データ）を取得する。
【００９１】
続くステップＳ２５では、操作入力に応じて視点位置を設定（変更）し、ステップＳ２７では、操作入力に応じて視点方向を設定（変更）し、図１０に示したゲーム全体処理にリターンする。ただし、プレイヤからの操作入力がない場合、つまりデータ記憶領域４０４に操作データ４０４ｂが記憶されていない場合や操作データ４０４ｂが記憶されていても視点制御に関係ない場合には、ステップＳ２５およびステップＳ２７の処理は実行されない。
【００９２】
また、ステップＳ２１で“ＮＯ”であれば、つまり２Ｄフラグがオフであり、３Ｄである場合には、ステップＳ２９で、３Ｄ視点パラメータデータ４０４ｇを取得する。厳密に言うと、ステップＳ２９では、プレイヤキャラクタデータ４０４ｃを参照して、プレイヤキャラクタ１０２の現在位置を取得し、この現在位置に対応して記憶される３Ｄ視点パラメータデータ４０４ｇ（視点データ）を取得する。
【００９３】
続くステップＳ３１では、操作入力に応じて視点位置を設定（変更）し、ステップＳ３３では、操作入力に応じて視点方向を設定（変更）し、ゲーム全体処理にリターンする。ただし、プレイヤからの操作入力がない場合、つまりデータ記憶領域４０４に操作データ４０４ｂが記憶されていない場合や操作データ４０４ｂが記憶されていても視点制御に関係ない場合には、ステップＳ３１およびステップＳ３３の処理は実行されない。
【００９４】
図１２は、図１０に示したステップＳ５のプレイヤキャラクタ制御処理を示すフロー図である。図１２に示すように、ＣＰＵ３６はプレイヤキャラクタ制御処理を開始すると、ステップＳ５１で、操作入力を検出する。つまり、データ記憶領域４０４を参照する。
【００９５】
次のステップＳ５３では、操作入力が有るかどうかを判断する。つまり、操作データ４０４ｂがデータ記憶領域４０４に記憶されているかどうかを判断する。ステップＳ５３で“ＮＯ”であれば、つまり操作入力が無ければ、そのままステップＳ６５に進む。一方、ステップＳ５３で“ＹＥＳ”であれば、つまり操作入力が有れば、ステップＳ５５で、当該操作入力が視点切り換えの指示であるかどうかを判断する。ステップＳ５５で“ＮＯ”であれば、つまり視点切り換えの指示でなければ、ステップＳ５７で、その他の処理を実行し、ステップＳ６５に進む。たとえば、ステップＳ５７では、プレイヤキャラクタ１０２を移動させたり、任意のアクションを実行させたりする。
【００９６】
しかし、ステップＳ５５で“ＹＥＳ”であれば、つまり視点切り換えの指示であれば、ステップＳ５９で、現在２Ｄであるかどうかを判断する。つまり、２Ｄフラグがオンであるかどうかを判断する。ステップＳ５９で“ＹＥＳ”であれば、つまり２Ｄフラグがオンであれば、３Ｄに切り換えるべく、ステップＳ６１で、２Ｄフラグをオフして、ステップＳ６５に進む。一方、ステップＳ５９で“ＮＯ”であれば、つまり２Ｄフラグがオフであれば、現在３Ｄであると判断して、２Ｄに切り換えるべく、ステップＳ６３で、２Ｄフラグをオンして、ステップＳ６５に進む。
【００９７】
ステップＳ６５では、後述する接触判定処理（図１４および図１５参照）を実行する。そして、ステップＳ６７で、接触判定に基づいた処理を実行し、図１０に示した全体処理にリターンする。たとえば、ステップＳ６７では、プレイヤキャラクタ１０２が、アイテムに接触していれば、当該アイテムを取得する。また、プレイヤキャラクタ１０２が、敵キャラクタと接触していれば、プレイヤキャラクタ１０２にダメージを与えたり、当該敵キャラクタを死滅させたりする。これに付随して、プレイヤキャラクタ１０２のライフを減算したり、得点を加算したりする。さらに、プレイヤキャラクタ１０２が、地面オブジェクト１０４や段差オブジェクト１０８に接触していれば、プレイヤキャラクタ１０２をその上に存在させたり、段差オブジェクト１０８によってその移動を規制したりする。
【００９８】
図１３は、図１０のステップＳ７に示したオブジェクト制御処理を示すフロー図である。図１３に示すように、オブジェクト制御処理を開始すると、ステップＳ８１で、オブジェクトゲーム処理を実行する。ここでは、敵キャラクタを出現させたり、移動させたり、アイテムを出現させたり、消滅させたりする。次のステップＳ８３では、後述する接触判定処理を実行する。そして、ステップＳ８５で、接触判定に基づいた処理を実行して、図１０に示した全体処理にリターンする。
【００９９】
なお、ステップＳ８５の処理は、上述したプレイヤキャラクタ制御処理（図１２）のステップＳ６７の処理と同様である。
【０１００】
図１４および図１５は、図１２のステップＳ６５および図１３のステップＳ８３に示した接触判定処理を示すフロー図である。図１４に示すように、ＣＰＵ３６は接触判定処理を開始すると、ステップＳ１０１で、コリジョンデータを使用するオブジェクトかどうかを判断する。つまり、接触判定するオブジェクトに対してコリジョンデータが用意（記憶）されているかどうかを判断するのである。ステップＳ１０１で“ＹＥＳ”であれば、つまりコリジョンデータを使用するオブジェクトであれば、図１５に示すステップＳ１１３に進む。しかし、ステップＳ１０１で“ＮＯ”であれば、つまりコリジョンデータを使用するオブジェクトでなければ、ステップＳ１０３で、２Ｄフラグデータ４０４ｊを参照して、２Ｄかどうかを判断する。
【０１０１】
ステップＳ１０３で“ＹＥＳ”であれば、つまり２Ｄであれば、ステップＳ１０５で、オブジェクトの高さおよび幅を取得し、ステップＳ１０７で、ＸＹ軸における円形や矩形の接触判定を行い、接触判定処理をリターンする。一方、ステップＳ１０３で“ＮＯ”であれば、つまり３Ｄであれば、ステップＳ１０９で、オブジェクトの高さ、幅および奥行きを取得し、ステップＳ１１１で、ＸＹＺ軸における球形や立方体（直方体）の接触判定を行い、接触判定処理をリターンする。
【０１０２】
図１５に示すように、ステップＳ１１３では、２Ｄかどうかを判断する。ステップＳ１１３で“ＹＥＳ”であれば、つまり２Ｄであれば、ステップＳ１１５で、２Ｄ用コリジョンデータ４０４ｈを選択し（読み出し）、ステップＳ１１９に進む。一方、ステップＳ１１３で“ＮＯ”であれば、つまり３Ｄであれば、ステップＳ１１７で、３Ｄ用コリジョンデータ４０４ｉを選択し（読み出し）、ステップＳ１１９に進む。ステップＳ１１９では、選択した（読み出した）データに対しての接触判定を実行し、図１４に示したように、接触判定処理をリターンする。
【０１０３】
図１６は、図１０に示したステップＳ９の画像生成処理を示すフロー図である。図１６に示すように、ＣＰＵ３６は画像生成処理を開始すると、ステップＳ１３１で、視点位置と視点方向とに基づいて、視点変換を実行する。つまり、メインメモリ４０のデータ記憶領域４０４に記憶される視点データ４０４ｅを参照して、現在の視点位置および視点方向を取得し、現在の視点（カメラ位置）を原点とし、現在の視点方向をカメラ座標のＺ軸方向とするように、カメラ座標に変換する。そして、ステップＳ１３３で、２次元画像を生成して、図１０に示した全体処理にリターンする。ステップＳ１３３では、視点から見た３次元仮想空間を仮想スクリーンに投影して、つまりカメラ座標を投影変換して、２次元画像を生成するのである。
【０１０４】
この実施例によれば、所定のオブジェクトに対応して２Ｄ用と３Ｄ用とのコリジョンデータを用意しておき、いずれかを用いて接触判定を行うので、３Ｄゲームにおいて擬似的な２Ｄゲームを楽しむことができ、２Ｄゲームおよび３Ｄゲームの特徴を生かしたゲームの面白さを味わうことができる。また、２Ｄゲームと３Ｄゲームとの単純な組み合わせではなく、これらの融合を図ったので、それらを単に組み合わせる場合よりも、処理負担やメモリ容量を軽減することができる。
【０１０５】
なお、この実施例では、２Ｄのゲーム画面が表示されている場合には、Ｚ軸方向を無視して、Ｘ軸方向およびＹ軸方向の接触判定を行うようにしてあるが、これに限定される必要はない。たとえば、Ｙ軸方向およびＺ軸方向を無視して、Ｘ軸方向のみの接触判定を行うようにしてもよいし、Ｘ軸方向およびＺ軸方向を無視して、Ｙ軸方向のみの接触判定を行うようにしてもよい。つまり、仮想ゲームに応じて、いずれかの判定方法が採用されればよい。
【０１０６】
また、この実施例では、ビデオゲーム装置とモニタとが別個独立に設けられたゲームシステムについて説明したが、モニタが一体的に設けられた携帯型ゲーム装置やアーケードゲーム、さらには、ゲーム機能を有する携帯ゲーム装置にも適用できることは言うまでもない。
【図面の簡単な説明】
【０１０７】
【図１】図１はこの発明の実施例のゲームシステムを示す図解図である。
【図２】図２は図１に示すゲームシステムの電気的な構成を示すブロック図である。
【図３】図３は図１に示すモニタに表示される２Ｄのゲーム画面の一例を示す図解図である。
【図４】図４は図１に示すモニタに表示される３Ｄのゲーム画面の一例を示す図解図である。
【図５】図５は図３に示す２Ｄのゲーム画面が表示されている場合に段差オブジェクトに対して設定される接触判定用の多面体の例を示す図解図である。
【図６】図６は図４に示す３Ｄのゲーム画面が表示されている場合に段差オブジェクトに対して設定される接触判定用の多面体の例を示す図解図である。
【図７】図７はプレイヤキャラクタに設定される接触判定用のベクトルを示す図解図である。
【図８】図８はオブジェクト同士の接触判定を説明するための図解図である。
【図９】図９は図２に示すメインメモリのメモリマップを示す図解図である。
【図１０】図１０は図２に示すＣＰＵのゲーム全体処理を示すフロー図である。
【図１１】図１１は図２に示すＣＰＵの視点制御処理を示すフロー図である。
【図１２】図１２は図２に示すＣＰＵのプレイヤキャラクタ制御処理を示すフロー図である。
【図１３】図１３は図２に示すＣＰＵのオブジェクト制御処理を示すフロー図である。
【図１４】図１４は図２に示すＣＰＵの接触判定処理の一部を示すフロー図である。
【図１５】図１５は図２に示すＣＰＵの接触判定処理の他の一部を示すフロー図である。
【図１６】図１６は図２に示すＣＰＵの画像生成処理を示すフロー図である。
【符号の説明】
【０１０８】
１０  …ゲームシステム
１２  …ビデオゲーム装置
１８  …光ディスク
２２  …コントローラ
３４  …モニタ
３４ａ  …スピーカ
３６  …ＣＰＵ
３８  …メモリコントローラ
４０  …メインメモリ
４２  …ＧＰＵ
５２  …ＤＳＰ
５４  …ＡＲＡＭ
６２  …オーディオＩ／Ｆ
【図１】
0004791852.tif 000002
【図２】
0004791852.tif 000003
【図３】
0004791852.tif 000004
【図４】
0004791852.tif 000005
【図５】
0004791852.tif 000006
【図６】
0004791852.tif 000007
【図７】
0004791852.tif 000008
【図８】
0004791852.tif 000009
【図９】
0004791852.tif 000010
【図１０】
0004791852.tif 000011
【図１１】
0004791852.tif 000012
【図１２】
0004791852.tif 000013
【図１３】
0004791852.tif 000014
【図１４】
0004791852.tif 000015
【図１５】
0004791852.tif 000016
【図１６】
0004791852.tif 000017