説明

ゲーム装置およびゲームプログラム

【構成】 ビデオゲーム装置12はCPU36を含み、CPU36はゲームプログラムに従って仮想空間におけるゲームを実行する。ゲーム中では、プレイヤは、コントローラ22を操作して、2Dのゲーム画面または3Dのゲーム画面を選択的に表示させる。ただし、プレイヤキャラクタ等は、3次元仮想空間にモデリングされ、これを仮想カメラで撮影した画像が2Dまたは3Dのゲーム画面としてモニタ34に表示される。プレイヤキャラクタと所定のオブジェクトとの接触を判定する場合には、当該オブジェクトに対して予め設定されている2D用または3D用のコリジョンデータが用いられる。
【効果】 2Dゲームと3Dゲームとを単に組み合わせただけでないので、両ゲームの特徴を生かしたゲームを楽しむことができる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明はゲーム装置およびゲームプログラムに関し、特にたとえば、プレイヤが操作入力を行う操作手段と、ゲーム画像を表示する表示手段と、少なくとも仮想3次元空間を生成するためのデータを予め記憶する記憶手段とを備える、ゲーム装置およびゲームプログラムに関する。
【背景技術】
【0002】
この種の背景技術の一例が非特許文献1に開示される。この非特許文献1によれば、プレイヤは、主人公のキャラクタ(プレイヤキャラクタ)を操作して、そのプレイヤキャラクタを3次元空間に展開されたマップ上で移動させ、敵のキャラクタを倒すなどして、ゲームを攻略する。
【0003】
また、背景技術の他の例が非特許文献2に開示される。この非特許文献2によれば、初期のビデオゲームであって、プレイヤの操作によって横方向にスクロールする2次元マップ内をプレイヤキャラクタは移動し、敵キャラクタを倒すなどして、ゲームを攻略する。
【非特許文献1】「スーパーマリオ64おたすけガイド、ソフトバンク株式会社、1996年9月7日 初版発行、48−49頁」
【非特許文献2】「スーパーマリオブラザーズ 裏技大全集、株式会社二見書房、昭和61年3月31日 19版発行、4−5頁」
【発明の開示】
【発明が解決しようとする課題】
【0004】
上述したように、非特許文献1に開示されるのは3次元のゲームであり、非特許文献2に開示されるのは2次元のゲームであり、3次元のゲームは2次元のゲームの発展型と一般的に認識されている。しかし、それぞれ固有の楽しさがあり、どちらが優れているのかを比較するようなものではない。ところが、それぞれの特徴を組み合わせて、更なる楽しさを追求したゲームは存在しなかった。
【0005】
たとえば、それぞれのゲームを単に組み合わせることは容易に考えられるが、2次元用のデータと3次元用のデータとが必要であり、処理負担が大きいばかりでなく、メモリ容量をいたずらに増大させてしまう。
【0006】
それゆえに、この発明の主たる目的は、新規な、ゲーム装置およびゲームプログラムを提供することである。
【0007】
また、この発明の他の目的は、2次元のゲームと3次元のゲームとの特徴を生かして、ゲームの面白さを増大させることができる、ゲーム装置およびゲームプログラムを提供することである。
【0008】
さらに、この発明のその他の目的は、3次元ゲーム空間を用いて2次元的なゲームプレイを楽しむことができる、ゲーム装置およびゲームプログラムを提供することである。
【課題を解決するための手段】
【0009】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0010】
請求項1の発明は、プレイヤが操作入力を行う操作手段と、ゲーム画像を表示する表示手段と、少なくとも仮想3次元空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置である。このゲーム装置は、入力検出手段、プレイヤキャラクタ制御手段、オブジェクト制御手段、接触判定手段、視点制御手段、および視点切換手段を備える。入力検出手段は、操作手段からの操作入力に対応する入力データを検出し、記憶手段に一時記憶する。プレイヤキャラクタ制御手段は、入力検出手段によって一時記憶された第1入力データに応じて、記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを仮想3次元空間に配置する。オブジェクト制御手段は、記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを仮想3次元空間に配置する。接触判定手段は、プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する。視点制御手段は、仮想3次元空間における視点を制御する。視点切換手段は、入力検出手段によって一時記憶された第2入力データに応じて、視点を切り換える。そして、接触判定手段は、視点切換手段の切り換え結果に応じて、所定のオブジェクトに設定される接触判定用のデータを変更する。
【0011】
請求項1の発明では、ゲーム装置(12)は、プレイヤが操作入力を行う操作手段(22,26)と、ゲーム画像を表示する表示手段(34)と、少なくとも仮想3次元空間を生成するためのデータを予め記憶する記憶手段(40)とを備える。このゲーム装置は、さらに、入力検出手段(36,S51)、プレイヤキャラクタ制御手段(36,S5)、オブジェクト制御手段(36,S7)、接触判定手段(36,S9)、視点制御手段(36,S3)および視点切換手段(36,S21,S23,S29)を備える。入力検出手段は、操作手段からの操作入力に対応する入力データを検出し、記憶手段に一時記憶する。プレイヤキャラクタ制御手段は、入力検出手段によって一時記憶された第1入力データに応じて、記憶手段に記憶されたプレイヤキャラクタデータ(404c)を用いて、プレイヤの操作対象であるプレイヤキャラクタを仮想3次元空間に配置する。たとえば、操作手段からの操作入力に従ってプレイヤキャラクタを3次元仮想空間内で移動させる。また、オブジェクト制御手段は、記憶手段に記憶されたオブジェクトデータ(404d)を用いて、プレイヤの操作対象でないオブジェクトを仮想3次元空間に配置する。たとえば、プレイヤの操作によらず、コンピュータないしプロセサ(36)がプログラムに従って敵オブジェクトを出現させたり、移動させたり、アイテムオブジェクトや背景オブジェクト(104,106,108)を配置(出現)させたりする。接触判定手段は、プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する。視点制御手段は、仮想3次元空間における視点(仮想カメラ)を制御する。たとえば、プレイヤキャラクタの移動に従って視点の位置を更新する。視点切換手段は、入力検出手段によって一時記憶された第2入力データに応じて、視点を切り換える。たとえば、プレイヤの視点切換の指示に従って、視点の位置および方向を切り換える。そして、接触判定手段は、視点切換手段の切り換え結果に応じて、所定のオブジェクトに設定される接触判定用のデータを変更する。
【0012】
請求項1の発明によれば、視点に応じた接触判定用のデータを用いて接触判定を実行するので、視点に応じて異なるゲーム画面を見て、ゲームプレイを楽しむことができる。
【0013】
請求項2の発明は請求項1に従属し、接触判定用のデータは、仮想3次元空間を定義するすべての座標系に対して接触判定を行うための第1判定データと、仮想3次元空間を定義する座標系のいずれか1つまたはいずれか2つの組み合わせで接触判定を行うための第2判定データとを含み、接触判定手段は、切換手段の切り換え結果に応じて第1判定データと第2判定データとの間で変更する。
【0014】
請求項2の発明では、接触判定用のデータは、仮想3次元空間を定義するすべての座標系に対して接触判定を行うための第1判定データ(404i)と、仮想3次元空間を定義する座標系のいずれか1つまたはいずれか2つの組み合わせで接触判定を行うための第2判定データ(404j)とを含む。たとえば、第1判定データは、仮想3次元空間のX軸方向、Y軸方向およびZ軸方向について接触判定するためのデータである。また、第2判定データは、仮想3次元空間のX軸方向、Y軸方向およびZ軸方向のいずれか1つ、またはいずれか2つの組み合わせ(X軸方向とY軸方向、Y軸方向とZ軸方向、Z軸方向とX軸方向)で接触判定するためのデータである。接触判定手段は、切換手段の切り換え結果に応じて、第1判定データと第2判定データとの間で変更する。
【0015】
請求項2の発明によれば、たとえば、3次元または2次元(1次元)の接触判定をするので、3次元のゲームにおいて1次元または2次元的な接触判定を行うことができる。
【0016】
請求項3の発明は請求項1または2に従属し、視点切換手段によって仮想3次元空間を定義するすべての座標系に関して視点切換を行う第1モードと、視点切換手段によって前記仮想3次元空間を定義するいずれか1つまたはいずれか2つの組み合わせに関して視点切換を行う第2モードとを切り換える、モード切換手段をさらに備え、モード切換手段によって第1モードに切り換えられたとき、接触判定手段は第1判定データを選択し、モード切換手段によって第2モードに切り換えられたとき、接触判定手段は第2判定データを選択する。
【0017】
請求項3の発明では、ゲーム装置は、モード切換手段(36,S55,S59,S61,S63)をさらに備える。このモード切換手段は、視点切換手段によって仮想3次元空間を定義するすべての座標系に関して視点切換を行う第1モードと、視点切換手段によって前記仮想3次元空間を定義するいずれか1つまたはいずれか2つの組み合わせに関して視点切換を行う第2モードとを切り換える。したがって、第1モードでは、X軸方向、Y軸方向およびZ軸方向のすべてについて視点切換が実行される。また、第2モードでは、X軸方向、Y軸方向およびZ軸方向のいずれか1つ、またはいずれか2つの組み合わせ(X軸方向とY軸方向、Y軸方向とZ軸方向、Z軸方向とX軸方向)について視点切換が実行される。したがって、モード切換手段によって第1モードに切り換えられたとき、接触判定手段は第1判定データを選択し、モード切換手段によって第2モードに切り換えられたとき、接触判定手段は第2判定データを選択する。
【0018】
請求項3の発明によれば、視点を切り換えることができるので、異なる視点のゲーム画面を表示して、ゲームを楽しむことができる。たとえば、3次元ゲームのゲーム画面を2次元的に表示して、プレイすることができる。
【0019】
請求項4の発明は、プレイヤが操作入力を行う操作手段と、ゲーム画像を表示する表示手段と、少なくとも仮想3次元空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサを、入力検出手段、プレイヤキャラクタ制御手段、オブジェクト制御手段、接触判定手段、視点制御手段、および視点切換手段として機能させる。入力検出手段は、操作手段からの操作入力に対応する入力データを検出し、記憶手段に一時記憶する。プレイヤキャラクタ制御手段は、入力検出手段によって一時記憶された第1入力データに応じて、記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを仮想3次元空間に配置する。オブジェクト制御手段は、記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを仮想3次元空間に配置する。接触判定手段は、プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する。視点制御手段は、仮想3次元空間における視点を制御する。視点切換手段は、入力検出手段によって一時記憶された第2入力データに応じて、視点を切り換える。そして、接触判定手段は、視点切換手段の切り換え結果に応じて、所定のオブジェクトに設定される接触判定用のデータを変更する。
【0020】
請求項4の発明によれば、請求項1の発明と同様に、視点に応じて異なるゲーム画面を見て、ゲームプレイを楽しむことができる。
【発明の効果】
【0021】
この発明によれば、所定のオブジェクトに対応して記憶されるコリジョンデータを用いて接触判定するので、視点に応じてゲームプレイが可能である。つまり、視点に応じて異なるゲーム画面を見てゲームプレイを楽しむことができる。
【0022】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0023】
図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置12を含む。ビデオゲーム装置12は、略立方体のハウジング14を含み、ハウジング14の上端には光ディスクドライブ16が設けられる。光ディスクドライブ16には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が装着される。ハウジング14の前面には複数の(実施例では4つの)コネクタ20が設けられる。これらコネクタ20は、ケーブル24によって、コントローラ22をビデオゲーム装置12に接続するためのものであり、この実施例では最大4つのコントローラ22をビデオゲーム装置12に接続することができる。
【0024】
コントローラ22には、その上面,下面,或いは側面などに、操作部(操作スイッチ)26が設けられる。操作部26は、たとえば2つのアナログジョイスティック,1つの十字キー,複数のボタンスイッチ等を含む。1つのアナログジョイスティックは、スティックの傾き量と方向とによって、プレイヤオブジェクト(プレイヤがコントローラ22によって操作可能な動画オブジェクト)の移動方向および/または移動速度ないし移動量などを入力するために用いられる。他のアナログジョイスティックは、傾斜方向によって、仮想カメラの移動を制御する。十字スイッチは、アナログジョイスティックに代えてプレイヤオブジェクトの移動方向を指示するために用いられる。ボタンスイッチは、プレイヤオブジェクトの動作を指示するために利用されたり、3次元画像の仮想カメラの視点を切り換えたり、プレイヤオブジェクトの移動スピード調節等に用いられる。ボタンスイッチは、さらに、たとえばメニュー選択やポインタあるいはカーソル移動を制御する。
【0025】
なお、この実施例ではコントローラ22がそれと一体的に設けられるケーブル24によってビデオゲーム装置12に接続された。しかしながら、コントローラ22は、他の方法、たとえば電磁波(たとえば電波または赤外線)を介してワイヤレスで、ビデオゲーム装置12に接続されてもよい。また、コントローラ22の操作部26の具体的構成は、もちろん実施例の構成に限られるものではなく、任意の変形が可能である。たとえば、アナログジョイスティックは1つだけでもよいし、用いられなくてもよい。十字スイッチは用いられなくてもよい。
【0026】
ビデオゲーム装置12のハウジング14の前面であり、コネクタ20の下方には、1つまたは複数の(この実施例では2つの)メモリスロット28が設けられる。このメモリスロット28にはメモリカード30が挿入される。メモリカード30は、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。
【0027】
ビデオゲーム装置12のハウジング14の後面には、AVケーブルコネクタ(図示せず)が設けられ、そのコネクタを用いて、AVケーブル32を通してビデオゲーム装置12にモニタ34を接続する。このモニタ34は典型的にはカラーテレビジョン受像機であり、AVケーブル32は、ビデオゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。
【0028】
このゲームシステム10において、ユーザまたはゲームプレイヤがゲーム(または他のアプリケーション)をプレイするために、ユーザはまずビデオゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)をストアしている適宜の光ディスク18を選択し、その光ディスク18をビデオゲーム装置12のディスクドライブ16にローディングする。応じて、ビデオゲーム装置12がその光ディスク18にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、操作部26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。操作部26の他のものを動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3次元(3D)のゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0029】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。ビデオゲーム装置12には、中央処理ユニット(以下、「CPU」という。)36が設けられる。このCPU36は、コンピュータ或いはプロセサなどとも呼ばれ、ビデオゲーム装置12の全体的な制御を担当する。CPU36ないしコンピュータは、ゲームプロセサとして機能し、このCPU36には、バスを介して、メモリコントローラ38が接続される。メモリコントローラ38は主として、CPU36の制御の下で、バスを介して接続されるメインメモリ40の書込みや読出しを制御する。このメモリコントローラ38にはGPU(Graphics Processing Unit:グラフィックス処理装置) 42が接続される。
【0030】
GPU42は、描画手段の一部を形成し、たとえばシングルチップASICで構成され、メモリコントローラ38を介してCPU36からのグラフィクスコマンド(graphics command :作画命令) を受け、そのコマンドに従って、ジオメトリユニット44およびレンダリングユニット46によって3次元(3D)ゲーム画像を生成する。つまり、ジオメトリユニット44は、3次元座標系の各種オブジェクトやオブジェクト(複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも3つの頂点座標によって定義される多角形平面をいう。)の回転,移動,変形等の座標演算処理を行う。レンダリングユニット46は、各種オブジェクトの各ポリゴンにテクスチャ(Texture :模様画像)を貼り付けるなどの画像生成処理を施す。したがって、GPU42によって、ゲーム画面上に表示すべき3D画像データが作成され、その画像データがフレームバッファ48内に記憶される。
【0031】
なお、GPU42が作画コマンドを実行するにあたって必要なデータ(プリミティブまたはポリゴンやテクスチャ等)は、GPU42がメモリコントローラ38を介して、メインメモリ40から入手する。
【0032】
フレームバッファ48は、たとえばラスタスキャンモニタ34の1フレーム分の画像データを描画(蓄積)しておくためのメモリであり、GPU42によって1フレーム毎に書き換えられる。具体的には、フレームバッファ48は、1画素(ピクセル)毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、R,G,B,Aについてのデータであり、たとえば、8ビットのR(赤)データ、8ビットのG(緑)データ、8ビットのB(青)データおよび8ビットのA(アルファ)データである。なお、Aデータは、マスク(マット画像)についてのデータである。後述のビデオI/F58がメモリコントローラ38を介してフレームバッファ48のデータを読み出すことによって、モニタ34の画面上に3Dゲーム画像が表示される。
【0033】
また、Zバッファ50は、フレームバッファ48に対応する画素数×1画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ48の各記憶位置に対応するドットの奥行き情報または奥行きデータ(Z値)を記憶するものである。
【0034】
なお、フレームバッファ48およびZバッファ50は、ともにメインメモリ40の一部を用いて構成されてもよく、また、これらはGPU42の内部に設けられてもよい。
【0035】
メモリコントローラ38はまた、DSP(Digital Signal Processor)52を介して、オーディオ用のRAM(以下、「ARAM」という。)54に接続される。したがって、メモリコントローラ38は、メインメモリ40だけでなく、サブメモリとしてのARAM54の書込みおよび/または読出しを制御する。
【0036】
DSP52は、サウンドプロセサとして働き、メインメモリ40に記憶されたサウンドデータ(図示せず)を用いたり、ARAM54に書き込まれている音波形データ(図示せず)を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【0037】
メモリコントローラ38は、さらに、バスによって、各インタフェース(I/F)56,58,60,62および64に接続される。コントローラI/F56は、ビデオゲーム装置12に接続されるコントローラ22のためのインタフェースであり、コントローラ22の操作部26の操作信号または操作データを、メモリコントローラ38を通してCPU36に与える。ビデオI/F58は、フレームバッファ48にアクセスし、GPU42で作成した画像データを読み出して、画像信号または画像データ(ディジタルRGBAピクセル値)をAVケーブル32(図1)を介してモニタ34に与える。
【0038】
外部メモリI/F60は、ビデオゲーム装置12の前面に挿入されるメモリカード30(図1)をメモリコントローラ38に連係させる。それによって、メモリコントローラ38を介して、CPU36がこのメモリカード30にデータを書込み、またはメモリカード30からデータを読み出すことができる。オーディオI/F62は、メモリコントローラ38を通してDSP52から与えられるオーディオデータまたは光ディスク18から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号(音声信号)をモニタ34のスピーカ34aに与える。
【0039】
そして、ディスクI/F64は、ディスクドライブ16をメモリコントローラ38に接続し、したがって、CPU36がディスクドライブ16を制御する。このディスクドライブ16によって光ディスク18から読み出されたプログラムデータやテクスチャデータ等が、CPU36の制御の下で、メインメモリ40に書き込まれる。
【0040】
図3はこの実施例の仮想ゲーム(アクションゲーム)のゲーム画面100の一例を示す。このゲーム画面100には、プレイヤキャラクタ102、地面オブジェクト(床オブジェクト)104、複数のブロックオブジェクト106によって構成される段差オブジェクト108および背景画像110が表示される。図3からも分かるように、ゲーム画面100は、2次元(2D)で、プレイヤキャラクタ102を、その進行方向(X軸方向)に対して横から見るように表示される。図示は省略するが、この2Dのゲーム画面100は、プレイヤキャラクタ102の移動に従って左右にまたは上下にスクロールされる。また、ゲーム画面100は、左上、左下、右上および右下のように、複合的な方向にスクロールさせる場合もある。
【0041】
ただし、厳密に言うと、ゲーム装置12の画像処理では、プレイヤキャラクタ102やオブジェクト(104,106,108など)は、3次元(3D)でモデリングされる。したがって、図3に示すゲーム画面100を表示する場合には、このゲーム画面100が擬似的に2Dに見えるように、図示しない仮想カメラ(視点)の位置(3次元位置)およびその方向が設定されるのである。ここで、視点の方向(視点方向)は、予め設定されている基準の方向(仮想カメラをパンおよびチルトしていないホームポジションの方向)からの角度で表わすことができる。または、視点方向は、視点に対する距離および角度で定義することができる注視点の位置座標で表わすこともできる。
【0042】
なお、この実施例では、背景画像110は、3次元座標系において、所定のZ値が示す位置、たとえば、2Dのゲーム画面100を表示する場合の後方クリッピング(ファークリッピング)平面に相当する位置に配置されるビルボードにテクスチャが貼り付けられて、生成される。
【0043】
また、この実施例では、プレイヤの操作対象であるプレイヤキャラクタ102と、プレイヤの操作対象でないオブジェクト(104,106,108など)とを区別するために、「キャラクタ」と「オブジェクト」とを使い分けているが、「キャラクタ」と「オブジェクト」とを厳密に区別する必要はなく、単なる表現上の相違である。
【0044】
図4は、図3に示す場面(マップ上の位置)と同じ場面における3Dのゲーム画面200を示す。図4に示すゲーム画面200では、ゲーム画面100を生成する場合とは異なる位置に視点が移動され、その方向も変化される。具体的には、プレイヤキャラクタ102の後方であり、その進行方向(X軸方向)を向くように、視点位置および視点方向が切り換えられる。図4からも分かるように、ゲーム画面200では、プレイヤキャラクタ102、地面オブジェクト104および段差オブジェクト108は、3D表示される。また、段差オブジェクト108は、4つの構成要素108a,108b,108c,108dによって構成され、構成要素108a−108dの各々は、X軸方向のみならず、Z軸方向の位置が異なる。また、構成要素108a−108dの各々は、1または2以上のブロックオブジェクト106によって構成される。したがって、そのブロックオブジェクト106を重ねた数によって、構成要素108a−108dの各々のY軸方向の位置(高さ)が異なる。
【0045】
ただし、2Dのゲーム画面100における背景画像110は、3Dのゲーム画面200では、プレイヤキャラクタ102がその進行方向(X軸方向)を向いた場合の左側面となる。また、3Dのゲーム画面200では、プレイヤキャラクタ102がその進行方向を向いた場合の右側面は、何ら表示されていない。しかし、実際には、接触を判定するための透明のポリゴン(図示せず)が右側面に配置され、プレイヤキャラクタ102が、その進行方向に対して右方向(Z軸方向)に移動するのを制限してある。
【0046】
なお、3Dのゲーム画面200を表示した場合の右側面は、2Dのゲーム画面100を表示する場合の前方クリッピング(ニアークリッピング)平面に相当する。
【0047】
このように、同じ場面であっても、2Dのゲーム画面100を表示してゲームを進行させたり、3Dのゲーム画面200を表示してゲームを進行させたりすることができる。たとえば、プレイヤは、コントローラ22の操作手段26のいずれかを操作すると、仮想カメラ(視点)が切り換えられる。これにより、2Dのゲーム画面100または3Dのゲーム画面200を選択的に表示して、プレイヤはゲームを進行させ、ゲーム(マップ)を攻略する。
【0048】
たとえば、図4に示す3Dのゲーム画面200から分かるように、図3および図4に示す場面においては、プレイヤは、地面オブジェクト104と段差オブジェクト108とが無い(存在しない)部分を超えて、プレイヤキャラクタ102を進行方向(X軸方向)に進行させることになる。つまり、3次元仮想空間においては、段差オブジェクト108は構成要素108a−108dに分かれており、各構成要素108a−108dの間には、地面オブジェクト104が存在しないため、プレイヤキャラクタ102が落下し(Y軸方向下向きに移動し)易いと言える。一方、図3に示す2Dのゲーム画面100では、段差オブジェクト108は階段状に一体的に表示されるため、段差オブジェクト108上を移動する場合には、プレイヤキャラクタ102が落下することはない。つまり、このような場面では、3Dのゲーム画面200を表示させる場合に比べて、2Dのゲーム画面100を表示した方が、簡単にプレイヤキャラクタ102を進行方向に移動させることができると言える。
【0049】
ただし、上述したように、プレイヤキャラクタ102等は、3Dでモデリングされており、2Dのゲーム画面100が表示されている場合であっても、プレイヤキャラクタ102は3Dの仮想空間を移動している。このため、何ら手当てしなければ、たとえば、プレイヤキャラクタ102が、Z軸方向の位置が構成要素108aと構成要素108bとの間を移動する場合には、段差オブジェクト108上を移動しているにもかかわらず、ブロックオブジェクト106を通り抜けて、落下してしまうという不都合が生じてしまう。逆に、3Dのゲーム画面200を表示している場合には、構成要素108aと構成要素108bとの間では、プレイヤキャラクタ102を落下させる必要がある。
【0050】
これらを回避するために、所定のオブジェクト(この実施例では、段差オブジェクト108)に対して、2Dのゲーム画面100を表示した場合のコリジョンデータ(2D用コリジョンデータ404h)と、3Dのゲーム画面200を表示した場合のコリジョンデータ(3D用コリジョンデータ404i)とを用意しておき、選択的に使用するようにしてある。
【0051】
具体的には、図3に示すような2Dのゲーム画面100が表示される場合には、段差オブジェクト108に対して、図5に示すような接触判定用の多面体120が配置される。この多面体120は、複数の透明のポリゴン120aによって構成され、したがって、実際のゲーム画面100を表示した場合には、プレイヤは見えない。また、図5からもよく分かるように、多面体120は、複数のポリゴン120aによって横長の階段状に形成される。こ多面体120の幅は、Z軸方向のニアークリップ平面とファークリップ平面とで区切られる。したがって、プレイヤキャラクタ102が、段差オブジェクト108上を移動する場合には、Z軸方向の位置がどこであっても、当該多面体120と接触し、したがって、落下しないように表示してある。ただし、図5(図6も同じ。)においては、接触判定用の多面体120を分かり易く示すために、ポリゴン120aの外形線を示してある。
【0052】
一方、図4に示すような3Dのゲーム画面200における段差オブジェクト108では、構成要素108a−108dの各々でそのZ値が異なる。したがって、図6に示すように、構成要素108a−108dの各々に対して、接触判定用の多面体130,140,150,160が個別に配置される。具体的には、構成要素108aに対応して多面体130が設定され、構成要素108bに対応して多面体140が設定され、構成要素108cに対応して多面体150が設定され、そして、構成要素108dに対応して多面体160が設定される。また、多面体130は複数のポリゴン130aによって構成され、多面体140は複数のポリゴン140aによって構成され、多面体150は複数のポリゴン150aによって構成され、そして、多面体160は複数のポリゴン160aによって構成される。
【0053】
したがって、プレイヤは、コントローラ22を操作して、プレイヤキャラクタ102を、構成要素108a−108dが配置されていない場所を移動させる場合には、対岸の地面オブジェクト104までジャンプさせなければ、プレイヤキャラクタ102は、多面体130−160と接触することがない。したがって、プレイヤキャラクタ102は、落下表示され、その後、死滅する。
【0054】
なお、図5および図6では、接触判定用の多面体120−160を分かり易く示すために、図3に示したゲーム画面100および図4に示したゲーム画面200とは異なる位置に仮想カメラ(視点)をそれぞれ配置して、斜めから仮想3次元(ゲーム)空間を見た場合について示してある。
【0055】
次に、接触判定について説明する。まず、プレイヤキャラクタ102と、予めコリジョンデータが用意されているオブジェクトとの判定方法について説明する。かかる場合には、プレイヤキャラクタ102には、接触判定を行うための複数のベクトルが設定される。図7に示すように、プレイヤキャラクタ102には、その中心軸(Y軸に並行な軸)から外部に向かう複数のベクトルPが設定される。
【0056】
なお、図7においては、分かり易く示すために、ベクトルPをくさびで示してある。同様の理由により、図7では、くさびがプレイヤキャラクタ102の表面から出ているように示してあるが、実際には、各ベクトルPの始点は中心軸上である。また、図7では分かり難いが、各ベクトルPの大きさ(スカラ)は同じである。
【0057】
また、かかる場合には、現在表示されているゲーム画面が2Dであるか3Dであるかで、使用するコリジョンデータが異なる。つまり、2Dのゲーム画面100が表示されている場合には、2D用のコリジョンデータ(図9に示す404h)が使用され、3Dのゲーム画面200が表示されている場合には、3D用のコリジョンデータ(図9に示す404i)が使用される。
【0058】
また、図5および図6を用いて説明したように、所定のオブジェクト(たとえば、段差オブジェクト108)に対しては、用意されているコリジョンデータに従って、複数の透明のポリゴンで構成された多面体(たとえば、多面体120,多面体130−160)が設定される。このように、予め用意されたコリジョンデータを使用して接触判定する場合には、コリジョンデータに従って設定された多面体(120−160)に含まれる各ポリゴンと、ベクトルPとが接触するか否かが判断(判定)される。具体的には、ベクトルPとポリゴン面とが交差するか否か、または、ベクトルPがポリゴン面に含まれるか否かで、接触の有無が判定される。
【0059】
ただし、3D用のコリジョンデータを使用して接触判定する場合には、プレイヤキャラクタ102に設定されたすべてのベクトルPについて判定される。つまり、仮想3次元空間のX軸方向,Y軸方向,Z軸方向のすべてについて接触判定が実行される。一方、2D用のコリジョンデータを使用して接触判定する場合には、プレイヤキャラクタ102に設定されたベクトルPのうち、X軸に並行なもののみが用いられる。つまり、Z軸方向については接触の判定を行わず、X軸方向およびY軸方向について接触判定が実行される。すなわち、Z軸方向は無視される。
【0060】
次に、プレイヤキャラクタ102と敵オブジェクト(図示せず)との接触判定、敵オブジェクト同士の接触判定、または、プレイヤキャラクタ102とアイテムオブジェクト(図示せず)との接触判定などの判定方法について説明する。かかる場合には、敵オブジェクトやアイテムオブジェクトでは、接触判定用のデータ(コリジョンデータ)を用意しておく必要がなかったり、用意しておくことができなかったりする。これは、敵オブジェクトは3次元仮想空間内を移動し、アイテムオブジェクトは出現したりしなかったりするためである。このため、かかる場合には、接触判定の必要に応じて、その都度、敵オブジェクトやアイテムオブジェクトのコリジョンデータ(この実施例では、簡単な平面図形または立体図形についてのデータ)が作成(算出)される。また、かかる場合には、接触判定を簡単に行うために、プレイヤキャラクタ102についても、他のオブジェクトと同様に、コリジョンデータが作成される。
【0061】
具体的には、接触判定においては、プレイヤキャラクタ102、敵オブジェクトやアイテムオブジェクトは、2Dのゲーム画面100が表示されている場合には、その外形を囲むように、円形や矩形(長方形、正方形)などの平面図形(この実施例では、XY平面と並行な平面図形)として現される。つまり、プレイヤキャラクタ102、敵オブジェクトやアイテムオブジェクトの高さ(Y軸方向の長さ)および幅(X軸方向の長さ)を取得し、その高さおよび幅に基づいて、XY軸(XY平面)における平面図形が算出される。
【0062】
一方、3Dのゲーム画面200が表示されている場合には、プレイヤキャラクタ102、敵オブジェクトやアイテムオブジェクトは、その外形を囲むように、球、円柱、立方体または直方体などの立体図形として現される。つまり、プレイヤキャラクタ102、敵オブジェクトやアイテムオブジェクトの高さ(Y軸方向の長さ)、幅(X軸方向の高さ)および奥行き(Z軸方向の長さ)を取得し、その高さ、幅および奥行きに基づいて、XYZ軸(3次元仮想空間)における立体図形が算出される。
【0063】
ただし、プレイヤキャラクタ102と敵オブジェクトとの接触判定、敵オブジェクト同士の接触判定、または、プレイヤキャラクタ102とアイテムオブジェクトとの接触判定などを行う場合には、接触判定を行うもの同士を同じ図形で現すようにしてある。以下、オブジェクト同士の接触判定について具体的に説明するが、プレイヤキャラクタ102と敵オブジェクトとの接触判定、およびプレイヤキャラクタ102とアイテムオブジェクトとの接触判定についても同様である。
【0064】
たとえば、図8(A)を参照して、オブジェクト(ここでは、210,212)のコリジョンデータに対応する図形が、直方体または立方体のような四角柱状に設定(算出)された場合の接触判定について説明する。図8(A)からも分かるように、オブジェクト210は、その位置座標(中心座標)が(Xo1,Yo1,Zo1)であり、X軸方向の長さ(横),Y軸方向の長さ(縦),Z軸方向の長さ(奥行き)が、それぞれ、L1,L2,L3である。一方、オブジェクト212は、その位置座標(中心座標)が(Xo2,Yo2,Zo2)であり、X軸方向の長さ(横),Y軸方向の長さ(縦),Z軸方向の長さ(奥行き)が、それぞれ、H1,H2,H3である。このように、各オブジェクトの外形形状を四角柱状に設定した場合には、各オブジェクトの距離(中心距離)dと、各辺の長さとが、次の数1〜数3を全て満たせば、オブジェクト210とオブジェクト212とが接触していると判断される。しかし、数1〜数3のいずれか1つでも満たさなければ、オブジェクト210とオブジェクト212とは接触していないと判断される。ただし、数1〜数3において、dx,dy,dzは、中心距離dのX成分,Y成分,Z成分である。また、中心距離dの各成分dx,dy,dzは数4に従って算出される。
【0065】
[数1]
|L1−H1|≦dx
[数2]
|L2−H2|≦dy
[数3]
|L3−H3|≦dz
[数4]
dx=√{(Xo1−Xo2)
dy=√{(Yo1−Yo2)
dz=√{(Zo1−Zo2)
ただし、|・|は絶対値である。また、図示は省略するが、2Dのゲーム画面100が表示されている場合には、2Dについて判断すればよいため、オブジェクトの外形は長方形や正方形の矩形(四角形)に設定される。したがって、接触判定では、Z成分は無視される。
【0066】
また、図8(B)を参照して、オブジェクト(ここでは、220,222)のコリジョンデータに対応する図形が、球状(図面では、簡単のため2次元の円で示してある。)に設定(算出)された場合の接触判定について説明する。図8(B)から分かるように、オブジェクト220は、その位置座標(中心座標)が(Xo3,Yo3,Zo3)であり、半径Rである。一方、オブジェクト222は、その位置座標(中心座標)が(Xo4,Yo4,Zo4)であり、半径rである。このように、オブジェクトの外形を球状に設定した場合には、以下に示す数5〜数7のすべてを満たせば、オブジェクト220とオブジェクト222とが接触していると判断される。しかし、数5〜数7のいずれから1つでも満たさなければ、オブジェクト220とオブジェクト222とは接触していないと判断される。ただし、中心距離d(dx,dy,dz)は数4に従って求められる。
【0067】
[数5]
dx≦R+r
[数2]
dy≦R+r
[数3]
dz≦R+r
なお、図示は省略するが、2Dのゲーム画面100が表示されている場合には、2Dについて判断すればよいため、オブジェクトの外形は円形に設定される。したがって、接触判定では、Z成分は無視される。
【0068】
図9にはメインメモリ40のメモリマップが示される。メインメモリ40は、プログラム記憶領域402およびデータ記憶領域404を含む。プログラム記憶領域402には、この実施例のアクションゲームのゲームプログラムが記憶される。このゲームプログラムは、ゲームメイン処理プログラム402a、画像生成プログラム402b、画像表示プログラム402c、操作情報取得プログラム402d、プレイヤキャラクタ制御プログラム402e、オブジェクト制御プログラム402f、視点切換プログラム402g、視点制御プログラム402hおよび接触判定プログラム402iなどによって構成される。
【0069】
ゲームメイン処理プログラム402aは、アクションゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム402bは、仮想ゲーム空間(仮想3次元空間)に存在するプレイヤキャラクタ102、敵オブジェクトのようなノンプレイヤオブジェクト、アイテムオブジェクトおよび背景オブジェクト(104,106,108)等を含むゲーム画像を生成するためのプログラムである。
【0070】
ここで、プレイヤクキャラクタ102とは、プレイヤの操作によって仮想3次元空間内を移動等する動画キャラクタをいう。また、ノンプレイヤオブジェクトとは、プレイヤの操作によらないで、プログラムに従って移動等するオブジェクトをいう。背景オブジェクトとは、壁、床(地面)、柱、樹木などの背景についてのオブジェクトをいう。このような背景オブジェクトの配列等によって、アクションゲームのマップが形成される。
【0071】
画像表示プログラム402cは、画像生成プログラム402bの実行によって生成されたゲーム画像をモニタ34に表示するためのプログラムである。操作情報取得プログラム402dは、プレイヤによる操作情報(操作入力)を取得するためのプログラムであり、コントローラI/F56を介して入力されるコントローラ22からの操作データ(操作信号)を検出して、データ記憶領域404に記憶する。
【0072】
プレイヤキャラクタ制御プログラム402eは、操作情報取得プログラム402dに従って取得された操作データに応じて、移動後のプレイヤキャラクタ102の位置座標(3次元座標)を算出して、現在位置を更新したり、プレイヤキャラクタ102に任意のアクションをさせたりなどするためのプログラムである。また、プレイヤキャラクタ制御プログラム402eは、後述する接触判定プログラム402hの判定結果に応じて、プレイヤキャラクタ102のライフ(生命力)を減らしたり、プレイヤキャラクタ102や敵オブジェクトを死滅させたり、プレイヤキャラクタ102にアイテムを取得させたり、ブロックオブジェクト106を壊したりなどの処理を実行する。
【0073】
オブジェクト制御プログラム402fは、敵オブジェクトのようなノンプレイヤオブジェクトを仮想3次元空間内で移動させるためのプログラムである。また、オブジェクト制御プログラム402fは、接触判定プログラム402hの判定結果に応じて、プレイヤキャラクタ102のライフを減らしたり、プレイヤキャラクタ102や敵オブジェクトを死滅させたり、プレイヤキャラクタ102にアイテムを取得させたり、ブロックオブジェクト106を壊したりなどの処理を実行する。
【0074】
視点切換プログラム402gは、仮想3次元空間内に配置される仮想カメラ(視点)を切り換えるためのプログラムである。この実施例では、視点切換プログラム402gは、2Dのゲーム画面100を生成するための仮想カメラ(視点)位置および視点方向と、3Dのゲーム画面200を生成するための視点位置および視点方向とを切り換えるためのプログラムである。ただし、視点切換プログラム402gは、プレイヤキャラクタ102の現在位置に対応して記憶される視点データ(視点位置および視点方向のデータ)を、2D用の視点パラメータ(2D視点パラメータ404f)、または3D用の視点パラメータ(3D視点パラメータ404g)から取得する。
【0075】
視点制御プログラム402hは、仮想カメラ(視点)の移動すなわち視点位置の変更、および視点方向の変更を制御するためのプログラムである。具体的には、視点制御プログラム402hは、2Dのゲーム画面100が表示されている場合には、コントローラ22からの操作入力すなわちプレイヤキャラクタ102の移動に従ってX座標およびY座標を更新する。ただし、2Dのゲーム画面100が表示されている場合には、プレイヤからの操作入力がない限り、視点位置のZ座標は一定である。また、視点制御プログラム402hは、3Dのゲーム画面200が表示されている場合には、プレイヤキャラクタ102を追従するように、その移動に従ってX座標、Y座標およびZ座標の各々を更新する。
【0076】
なお、詳細な説明は省略するが、2Dまたは3Dのいずれの場合であっても、プレイヤがコントローラ22を操作して、仮想カメラ(視点)位置や視点方向(注視点の位置)を変更することができる。その変更内容は、メインメモリ40のデータ記憶領域に記憶(設定)される。したがって、視点位置や視点方向が変更されると、変更後の視点位置とプレイヤキャラクタ102との位置関係を保持するとともに、変更後の視点方向を保持するように、プレイヤキャラクタ102の移動に従って視点位置が更新される。
【0077】
接触判定プログラム402iは、上述した方法により、プレイヤキャラクタ102と他のオブジェクト(104,106,108など)の接触(当たり,衝突)を判定したり、敵キャラクタ同士の接触を判定したりするためのプログラムである。
【0078】
なお、図示は省略するが、プログラム記憶領域402には、ゲーム音再生プログラムやバックアッププログラムなどの他のプログラムも記憶される。ゲーム音再生プログラムは、ゲームに登場するキャラクタの声や擬声音、BGMのようなゲーム音楽、効果音など、ゲームに必要な音を生成し、出力するためのプログラムである。また、バックアッププログラムは、所定のイベントやプレイヤの指示に従って、メインメモリ40に記憶(一時記憶)されるゲームデータ(ゲームの途中データないし結果データ)をメモリカード30に保存するためのプログラムである。
【0079】
また、データ記憶領域404には、画像データ404a、操作データ404b、プレイヤキャラクタデータ404c、オブジェクトデータ404d、視点データ404e、2D視点パラメータデータ404f、3D視点パラメータデータ404g、2D用コリジョンデータ404h、3D用コリジョンデータ404iおよび2Dフラグデータ404jなどのデータが記憶される。
【0080】
画像データ404aは、プレイヤキャラクタ102、敵オブジェクト、アイテムオブジェクト、背景オブジェクト(地面オブジェクト104、ブロックオブジェクト106、段差オブジェクト108など)などのキャラクタやオブジェクトを描画したり、背景画像110を描画したりするためのデータ(ポリゴンデータやテクスチャデータ)である。操作データ404bは、プレイヤがコントローラ22の操作手段を操作することにより、コントローラ22から入力された操作データである。キャラクタデータ404cは、3次元仮想空間におけるプレイヤキャラクタ102の現在の3次元位置(3次元座標)についてのデータ(座標データ)である。このキャラクタデータ404cは、プレイヤの操作入力に従って更新される。
【0081】
また、オブジェクトデータ404dは、3次元空間における敵オブジェクト、アイテムオブジェクトおよび背景オブジェクト(104,106,108)のようなオブジェクトの現在の3次元位置(3次元座標)についての座標データである。ただし、各オブジェクトに対応して、座標データが記憶され、敵オブジェクトのような動画オブジェクトは、プログラムに従って(CPU36の処理によって)その座標データは更新される。
【0082】
視点データ404eは、3次元仮想空間における仮想カメラ(視点)の現在の3次元位置(3次元座標)のデータ(座標データ)および視点方向についてのデータ(基準方向からの角度データまたは注視点の座標データ)である。2D視点パラメータデータ404fは、2Dのゲーム画面100を表示する場合に参照される視点データであり、場面ないしはマップ上の位置の各々に対応して予め設定されている。3D視点パラメータデータ404gは、3Dのゲーム画面200を表示する場合に参照される視点データであり、場面ないしはマップ上の位置の各々に対応して予め設定されている。
【0083】
2D用コリジョンデータ404hは、2Dのゲーム画面100が表示されている場合に、所定のオブジェクト(この実施例では、段差オブジェクト108)に対して用意された、接触判定用のデータである。具体的には、多面体(この実施例では、120)を構成する各ポリゴン(この実施例では、120a)の頂点についての座標(3次元座標)データである。たとえば、2D用コリジョンデータ404h(後述する3D用コリジョンデータ404iも同様。)は、所定のオブジェクトに対応して、複数のポリゴンが設定され、さらに、各ポリゴンに対応して、該当するポリゴンの頂点の座標(3次元座標)が記述されたテーブルデータである。
【0084】
3D用コリジョンデータ404iは、3Dのゲーム画面200が表示されている場合に、所定のオブジェクト(この実施例では、段差オブジェクト108)に対して用意された、接触判定用のデータである。具体的には、多面体(この実施例では、130,140,150,160)を構成するポリゴン(この実施例では、130a,140a,150a,160a)の頂点についての3次元座標データである。
【0085】
2Dフラグデータ404jは、2Dのゲーム画面100が表示されているか否かを判断するためのフラグデータである。この2Dフラグデータ404jは、たとえば1ビットのレジスタで構成され、フラグがオン(成立)されている場合に、レジスタにデータ値「1」が設定され、フラグがオフ(不成立)されている場合に、レジスタにデータ値「0」が設定される。ただし、2Dのゲーム画面100が表示されている場合に、フラグがオンされ、3Dのゲーム画面200が表示されている場合に、フラグがオフされる。
【0086】
なお、図示は省略するが、データ記憶領域404には、ゲームの進行によって発生するゲームデータないし他のフラグデータなども記憶される。また、ゲームに必要な音を出力するための音(音楽)データも記憶される。
【0087】
具体的には、図2に示したCPU36が図10に示すゲーム全体処理を実行する。図10に示すように、CPU36はゲーム全体処理を開始すると、まず、ステップS1で、初期設定を行う。たとえば、ゲームを最初から開始する場合には、メインメモリ40のバッファ領域を初期化したり、メインメモリ40に記憶されるフラグデータに初期値を設定したりする。また、ゲームを前回の続きから開始する場合には、メモリカード30に記憶されたゲームデータをロードする。
【0088】
続いて、ステップS3で、後述する視点制御処理(図11参照)を実行し、ステップS5で、後述するプレイヤキャラクタ制御処理(図12参照)を実行する。次に、ステップS7で、後述するオブジェクト制御処理(図13参照)を実行し、ステップS9で、後述する画像生成処理(図16参照)を実行する。次のステップS11では、ステップS9で生成した画像(ゲーム画像)をモニタ34に表示する。
【0089】
そして、ステップS13で、ゲーム終了かどうかを判断する。つまり、ゲームオーバになったり、プレイヤによってゲーム終了を指示されたりしたかどうかを判断する。ステップS13で“NO”であれば、つまりゲーム終了でなければ、ステップS3に戻る。一方、ステップS13で“YES”であれば、つまりゲーム終了であれば、そのままゲーム全体処理を終了する。
【0090】
図11は、図10に示したステップS3の視点制御処理を示すフロー図である。この図11に示すように、CPU36は視点制御処理を開始すると、ステップS21で、2Dかどうかを判断する。つまり、2Dフラグデータ404jを参照して、2Dフラグがオンであるかどうかを判断する。ステップS21で“YES”であれば、つまり2Dフラグがオンであれば、2Dであると判断して、ステップS23で、2D視点パラメータデータ404fを取得する。厳密に言うと、ステップS23では、プレイヤキャラクタデータ404cを参照して、プレイヤキャラクタ102の現在位置を取得し、この現在位置に対応して記憶される2D視点パラメータデータ404f(視点データ)を取得する。
【0091】
続くステップS25では、操作入力に応じて視点位置を設定(変更)し、ステップS27では、操作入力に応じて視点方向を設定(変更)し、図10に示したゲーム全体処理にリターンする。ただし、プレイヤからの操作入力がない場合、つまりデータ記憶領域404に操作データ404bが記憶されていない場合や操作データ404bが記憶されていても視点制御に関係ない場合には、ステップS25およびステップS27の処理は実行されない。
【0092】
また、ステップS21で“NO”であれば、つまり2Dフラグがオフであり、3Dである場合には、ステップS29で、3D視点パラメータデータ404gを取得する。厳密に言うと、ステップS29では、プレイヤキャラクタデータ404cを参照して、プレイヤキャラクタ102の現在位置を取得し、この現在位置に対応して記憶される3D視点パラメータデータ404g(視点データ)を取得する。
【0093】
続くステップS31では、操作入力に応じて視点位置を設定(変更)し、ステップS33では、操作入力に応じて視点方向を設定(変更)し、ゲーム全体処理にリターンする。ただし、プレイヤからの操作入力がない場合、つまりデータ記憶領域404に操作データ404bが記憶されていない場合や操作データ404bが記憶されていても視点制御に関係ない場合には、ステップS31およびステップS33の処理は実行されない。
【0094】
図12は、図10に示したステップS5のプレイヤキャラクタ制御処理を示すフロー図である。図12に示すように、CPU36はプレイヤキャラクタ制御処理を開始すると、ステップS51で、操作入力を検出する。つまり、データ記憶領域404を参照する。
【0095】
次のステップS53では、操作入力が有るかどうかを判断する。つまり、操作データ404bがデータ記憶領域404に記憶されているかどうかを判断する。ステップS53で“NO”であれば、つまり操作入力が無ければ、そのままステップS65に進む。一方、ステップS53で“YES”であれば、つまり操作入力が有れば、ステップS55で、当該操作入力が視点切り換えの指示であるかどうかを判断する。ステップS55で“NO”であれば、つまり視点切り換えの指示でなければ、ステップS57で、その他の処理を実行し、ステップS65に進む。たとえば、ステップS57では、プレイヤキャラクタ102を移動させたり、任意のアクションを実行させたりする。
【0096】
しかし、ステップS55で“YES”であれば、つまり視点切り換えの指示であれば、ステップS59で、現在2Dであるかどうかを判断する。つまり、2Dフラグがオンであるかどうかを判断する。ステップS59で“YES”であれば、つまり2Dフラグがオンであれば、3Dに切り換えるべく、ステップS61で、2Dフラグをオフして、ステップS65に進む。一方、ステップS59で“NO”であれば、つまり2Dフラグがオフであれば、現在3Dであると判断して、2Dに切り換えるべく、ステップS63で、2Dフラグをオンして、ステップS65に進む。
【0097】
ステップS65では、後述する接触判定処理(図14および図15参照)を実行する。そして、ステップS67で、接触判定に基づいた処理を実行し、図10に示した全体処理にリターンする。たとえば、ステップS67では、プレイヤキャラクタ102が、アイテムに接触していれば、当該アイテムを取得する。また、プレイヤキャラクタ102が、敵キャラクタと接触していれば、プレイヤキャラクタ102にダメージを与えたり、当該敵キャラクタを死滅させたりする。これに付随して、プレイヤキャラクタ102のライフを減算したり、得点を加算したりする。さらに、プレイヤキャラクタ102が、地面オブジェクト104や段差オブジェクト108に接触していれば、プレイヤキャラクタ102をその上に存在させたり、段差オブジェクト108によってその移動を規制したりする。
【0098】
図13は、図10のステップS7に示したオブジェクト制御処理を示すフロー図である。図13に示すように、オブジェクト制御処理を開始すると、ステップS81で、オブジェクトゲーム処理を実行する。ここでは、敵キャラクタを出現させたり、移動させたり、アイテムを出現させたり、消滅させたりする。次のステップS83では、後述する接触判定処理を実行する。そして、ステップS85で、接触判定に基づいた処理を実行して、図10に示した全体処理にリターンする。
【0099】
なお、ステップS85の処理は、上述したプレイヤキャラクタ制御処理(図12)のステップS67の処理と同様である。
【0100】
図14および図15は、図12のステップS65および図13のステップS83に示した接触判定処理を示すフロー図である。図14に示すように、CPU36は接触判定処理を開始すると、ステップS101で、コリジョンデータを使用するオブジェクトかどうかを判断する。つまり、接触判定するオブジェクトに対してコリジョンデータが用意(記憶)されているかどうかを判断するのである。ステップS101で“YES”であれば、つまりコリジョンデータを使用するオブジェクトであれば、図15に示すステップS113に進む。しかし、ステップS101で“NO”であれば、つまりコリジョンデータを使用するオブジェクトでなければ、ステップS103で、2Dフラグデータ404jを参照して、2Dかどうかを判断する。
【0101】
ステップS103で“YES”であれば、つまり2Dであれば、ステップS105で、オブジェクトの高さおよび幅を取得し、ステップS107で、XY軸における円形や矩形の接触判定を行い、接触判定処理をリターンする。一方、ステップS103で“NO”であれば、つまり3Dであれば、ステップS109で、オブジェクトの高さ、幅および奥行きを取得し、ステップS111で、XYZ軸における球形や立方体(直方体)の接触判定を行い、接触判定処理をリターンする。
【0102】
図15に示すように、ステップS113では、2Dかどうかを判断する。ステップS113で“YES”であれば、つまり2Dであれば、ステップS115で、2D用コリジョンデータ404hを選択し(読み出し)、ステップS119に進む。一方、ステップS113で“NO”であれば、つまり3Dであれば、ステップS117で、3D用コリジョンデータ404iを選択し(読み出し)、ステップS119に進む。ステップS119では、選択した(読み出した)データに対しての接触判定を実行し、図14に示したように、接触判定処理をリターンする。
【0103】
図16は、図10に示したステップS9の画像生成処理を示すフロー図である。図16に示すように、CPU36は画像生成処理を開始すると、ステップS131で、視点位置と視点方向とに基づいて、視点変換を実行する。つまり、メインメモリ40のデータ記憶領域404に記憶される視点データ404eを参照して、現在の視点位置および視点方向を取得し、現在の視点(カメラ位置)を原点とし、現在の視点方向をカメラ座標のZ軸方向とするように、カメラ座標に変換する。そして、ステップS133で、2次元画像を生成して、図10に示した全体処理にリターンする。ステップS133では、視点から見た3次元仮想空間を仮想スクリーンに投影して、つまりカメラ座標を投影変換して、2次元画像を生成するのである。
【0104】
この実施例によれば、所定のオブジェクトに対応して2D用と3D用とのコリジョンデータを用意しておき、いずれかを用いて接触判定を行うので、3Dゲームにおいて擬似的な2Dゲームを楽しむことができ、2Dゲームおよび3Dゲームの特徴を生かしたゲームの面白さを味わうことができる。また、2Dゲームと3Dゲームとの単純な組み合わせではなく、これらの融合を図ったので、それらを単に組み合わせる場合よりも、処理負担やメモリ容量を軽減することができる。
【0105】
なお、この実施例では、2Dのゲーム画面が表示されている場合には、Z軸方向を無視して、X軸方向およびY軸方向の接触判定を行うようにしてあるが、これに限定される必要はない。たとえば、Y軸方向およびZ軸方向を無視して、X軸方向のみの接触判定を行うようにしてもよいし、X軸方向およびZ軸方向を無視して、Y軸方向のみの接触判定を行うようにしてもよい。つまり、仮想ゲームに応じて、いずれかの判定方法が採用されればよい。
【0106】
また、この実施例では、ビデオゲーム装置とモニタとが別個独立に設けられたゲームシステムについて説明したが、モニタが一体的に設けられた携帯型ゲーム装置やアーケードゲーム、さらには、ゲーム機能を有する携帯ゲーム装置にも適用できることは言うまでもない。
【図面の簡単な説明】
【0107】
【図1】図1はこの発明の実施例のゲームシステムを示す図解図である。
【図2】図2は図1に示すゲームシステムの電気的な構成を示すブロック図である。
【図3】図3は図1に示すモニタに表示される2Dのゲーム画面の一例を示す図解図である。
【図4】図4は図1に示すモニタに表示される3Dのゲーム画面の一例を示す図解図である。
【図5】図5は図3に示す2Dのゲーム画面が表示されている場合に段差オブジェクトに対して設定される接触判定用の多面体の例を示す図解図である。
【図6】図6は図4に示す3Dのゲーム画面が表示されている場合に段差オブジェクトに対して設定される接触判定用の多面体の例を示す図解図である。
【図7】図7はプレイヤキャラクタに設定される接触判定用のベクトルを示す図解図である。
【図8】図8はオブジェクト同士の接触判定を説明するための図解図である。
【図9】図9は図2に示すメインメモリのメモリマップを示す図解図である。
【図10】図10は図2に示すCPUのゲーム全体処理を示すフロー図である。
【図11】図11は図2に示すCPUの視点制御処理を示すフロー図である。
【図12】図12は図2に示すCPUのプレイヤキャラクタ制御処理を示すフロー図である。
【図13】図13は図2に示すCPUのオブジェクト制御処理を示すフロー図である。
【図14】図14は図2に示すCPUの接触判定処理の一部を示すフロー図である。
【図15】図15は図2に示すCPUの接触判定処理の他の一部を示すフロー図である。
【図16】図16は図2に示すCPUの画像生成処理を示すフロー図である。
【符号の説明】
【0108】
10 …ゲームシステム
12 …ビデオゲーム装置
18 …光ディスク
22 …コントローラ
34 …モニタ
34a …スピーカ
36 …CPU
38 …メモリコントローラ
40 …メインメモリ
42 …GPU
52 …DSP
54 …ARAM
62 …オーディオI/F

【特許請求の範囲】
【請求項1】
プレイヤが操作入力を行う操作手段と、ゲーム画像を表示する表示手段と、少なくとも仮想3次元空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置において、
操作手段からの操作入力に対応する入力データを検出し、前記記憶手段に一時記憶する、入力検出手段、
前記入力検出手段によって一時記憶された第1入力データに応じて、前記記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを前記仮想3次元空間に配置する、プレイヤキャラクタ制御手段、
前記記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを前記仮想3次元空間に配置する、オブジェクト制御手段、
前記プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する、接触判定手段、
前記仮想3次元空間における視点を制御する、視点制御手段、および
前記入力検出手段によって一時記憶された第2入力データに応じて、前記視点を切り換える、視点切換手段を備え、
前記接触判定手段は、前記視点切換手段の切り換え結果に応じて、前記所定のオブジェクトに設定される接触判定用のデータを変更することを特徴とする、ゲーム装置。
【請求項2】
前記接触判定用のデータは、前記仮想3次元空間を定義するすべての座標系に対して接触判定を行うための第1判定データと、前記仮想3次元空間を定義する座標系のいずれか1つまたはいずれか2つの組み合わせで接触判定を行うための第2判定データとを含み、
前記接触判定手段は、前記視点切換手段の切り換え結果に応じて前記第1判定データおよび前記第2判定データの一方を選択する、請求項1記載のゲーム装置。
【請求項3】
前記視点切換手段によって前記仮想3次元空間を定義するすべての座標系に関して視点切換を行う第1モードと、前記視点切換手段によって前記仮想3次元空間を定義するいずれか1つまたはいずれか2つの組み合わせに関して視点切換を行う第2モードとを切り換える、モード切換手段をさらに備え、
前記モード切換手段によって前記第1モードに切り換えられたとき、前記接触判定手段は前記第1判定データを選択し、前記モード切換手段によって前記第2モードに切り換えられたとき、前記接触判定手段は前記第2判定データを選択する、請求項2記載のゲーム装置。
【請求項4】
プレイヤが操作入力を行う操作手段と、ゲーム画像を表示する表示手段と、少なくとも仮想3次元空間を生成するためのデータを予め記憶する記憶手段とを備えるゲーム装置のゲームプログラムであって、
前記ゲームプログラムは、前記ゲーム装置のプロセサを、
操作手段からの操作入力に対応する入力データを検出し、前記記憶手段に一時記憶する、入力検出手段、
前記入力検出手段によって一時記憶された第1入力データに応じて、前記記憶手段に記憶されたプレイヤキャラクタデータを用いて、プレイヤの操作対象であるプレイヤキャラクタを前記仮想3次元空間に配置する、プレイヤキャラクタ制御手段、
前記記憶手段に記憶されたオブジェクトデータを用いて、プレイヤの操作対象でないオブジェクトを前記仮想3次元空間に配置する、オブジェクト制御手段、
前記プレイヤキャラクタと所定のオブジェクトとが接触しているか否かを判定する、接触判定手段、
前記仮想3次元空間における視点を制御する、視点制御手段、および
前記入力検出手段によって一時記憶された第2入力データに応じて、前記視点を切り換える、視点切換手段として機能させ、
前記接触判定手段は、前記視点切換手段の切り換え結果に応じて、前記所定のオブジェクトに設定される接触判定用のデータを変更する、ゲームプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2007−226707(P2007−226707A)
【公開日】平成19年9月6日(2007.9.6)
【国際特許分類】
【出願番号】特願2006−49778(P2006−49778)
【出願日】平成18年2月27日(2006.2.27)
【出願人】(000233778)任天堂株式会社 (1,115)
【出願人】(397037890)株式会社インテリジェントシステムズ (14)
【Fターム(参考)】