〔ネットワークの構成とゲーム装置の構成〕
図1は、ネットワークの概略構成を示す説明図である。このネットワークは、サーバ1と複数のゲーム装置2(クライアント:2a,2b,・・・)とを含んでいる。ここでは、各ゲーム装置2が、家庭用ビデオゲーム装置である場合の例が示される。各ゲーム装置2は、たとえば、各ルータ4(4a,4b,・・・)を介して、インターネットなどの外部ネットワーク3に接続される。外部ネットワーク3には、サーバ1が接続されている。
サーバ1は、プレイヤごとの個人データを記憶し、ゲーム装置2の認証を行う。たとえば、サーバ1は、ゲーム装置2からの要求に応じて、個人データを要求元のゲーム装置2に送信する。また、サーバ1は、ゲームの実行に必要となるデータ等も記憶し、ゲーム装置2へ送信する。
サーバ用の制御部たとえばCPU101は、データ蓄積部103(記憶部)に格納されている制御プログラムを読み出し、この制御プログラムを実行する。RAM102(記憶部)は、ゲームを行うにあたりプレイヤが個人的に設定するデータや、過去の結果に基づくデータなど、ゲーム毎の個人データを一時的に記憶する。データ蓄積部103には、たとえば、ハードディスクが用いられる。このデータ蓄積部103には、RAM102に展開されるデータ、制御プログラム、ゲーム装置2から送信されてくる個人データなどが蓄積される。通信部104は、外部ネットワーク3を介して、ゲーム装置2とデータの送受信を行う。
上記の構成を有するサーバ1は、各ゲーム装置2から、個人データやゲームデータ等を受信すると、各ゲーム装置2においてゲームが実行されるときに必要となる各種のゲームデータが、サーバ1から各ゲーム装置2へと送信される。
ゲーム装置2たとえば家庭用ビデオゲーム装置は、家庭用ゲーム機本体、家庭用ゲーム機本体に接続されるコントローラ、および家庭用ゲーム機本体に接続される家庭用テレビジョン、を備える。家庭用ゲーム機本体には、記録媒体が装填可能となっており、記録媒体からゲームデータが適宜読み出されてゲームが実行される。たとえば、コントローラからの入力信号に基づいてゲームが実行され、実行中のゲームの内容が家庭用テレビジョンに表示される。また、ゲーム装置2では、サーバ1から取得したゲーム用のデータに基づいて、他のゲーム装置2と外部ネットワーク3を介して、ゲームが実行可能である。
このように構成されるネットワークでは、たとえば、あるプレイヤがゲームへの参加を希望する場合、ゲームへの参加を報知するためのデータが、ゲーム装置2からサーバ1へと送信される。そして、このデータがサーバ1に認証されると、このプレイヤの情報(ゲームへの参加希望者の情報)を他のゲーム装置2に報知する処理が、サーバ1において実行される。そして、この情報を見た他のプレイヤが、この情報に応答した場合、2台のゲーム装置2をマッチングする処理が、サーバ1において実行される。この処理がサーバ1において繰り返されることにより、複数のゲーム装置2のマッチングが実行される。そして、複数のゲーム装置2のマッチングの実行後は、複数のゲーム装置2が互いに接続され、複数のゲーム装置2においてゲームが実行される。たとえば、複数のゲーム装置2においてゲームを実行する形態の1つに、Peer to Peer(P2P)がある。
図2は、ゲーム装置2のハードウェア構成を示す。
ゲーム装置用の制御部たとえばCPU201は、後述するハードディスク203に記憶されている制御プログラムを、実行する。
RAM202では、ハードディスク203に格納された各種データが、展開される。そして、RAM202は、パラメータおよび処理結果等を含む各種データを、一時的に記憶する。また、RAM202には、各種データとともに、各種データの記憶位置を示すアドレスデータが格納されており、任意のアドレスを指定して読み書きすることが可能になっている。ハードディスク203は、制御プログラムや各種パラメータなどを記憶する。
通信部204は、外部ネットワーク3を介して、サーバ1や他のゲーム装置2とデータの送受信を行う。通信部204は、たとえば、図示しない、通信制御回路および通信インターフェースを有している。通信制御回路および通信インターフェースは、ゲーム装置2をサーバ1や他のゲーム装置2等に接続するために用いられる。通信制御回路および通信インターフェースは、バスを介してCPU201に接続されている。通信制御回路および通信インターフェースは、CPU201からの命令に応じて、ゲーム装置2をインターネットに接続するための接続信号を制御し発信する。また、通信制御回路および通信インターフェースは、インターネットを介してゲーム装置2をサーバ1や他のゲーム装置2に接続するための接続信号を制御し発信する。
モニタ206は、ゲーム画像を表示する。描画処理部205は、モニタ206に表示する画像データを生成する。描画処理部205は、主に、画像処理プロセッサ(図示しない)によってRAM202に書き込まれた画像データや、記録媒体(図示しない)から読み出される画像データなどを、画像として、モニタ206に出力するために設けられている。この描画処理部205は、たとえば、モニタ206と、インターフェース回路と、D/Aコンバータ(Digital-To-Analogコンバータ)とから構成されている。モニタ206には、D/Aコンバータ接続されており、D/Aコンバータには、インターフェース回路が接続されている。そして、インターフェース回路にバスが接続されている。ここでは、画像データが、インターフェース回路を介してD/Aコンバータに供給され、ここでアナログ画像信号に変換される。そして、このアナログ画像信号をモニタ206に出力することによって、画像がモニタ206に表示される。
ここで、画像データは、たとえば、ポリゴンデータやテクスチャデータを含んでいる。ポリゴンデータはポリゴンを構成する頂点の座標データのことである。テクスチャデータは、ポリゴンにテクスチャを設定するためのものであり、テクスチャ指示データとテクスチャカラーデータとからなっている。テクスチャ指示データはポリゴンとテクスチャとを対応づけるためのデータであり、テクスチャカラーデータはテクスチャの色を指定するためのデータである。ここで、ポリゴンデータとテクスチャデータとには、各データの記憶位置を示すポリゴンアドレスデータとテクスチャアドレスデータとが対応づけられている。
このような画像データでは、画像処理プロセッサにより、ポリゴンアドレスデータの示す3次元空間上のポリゴンデータ(3次元ポリゴンデータ)が、画面自体(視点)の移動量データおよび回転量データに基づいて座標変換および透視投影変換されて、2次元空間上のポリゴンデータ(2次元ポリゴンデータ)に置換される。そして、複数の2次元ポリゴンデータでポリゴン外形を構成して、ポリゴンの内部領域にテクスチャアドレスデータが示すテクスチャデータを書き込む。このようにして、各ポリゴンにテクスチャが貼り付けられた物体つまり各種キャラクタを表現することができる。
画像データに対しては、CPU201からのコマンドに基づいて、まず、3次元空間上におけるキャラクタの位置計算および光源計算等が、行われる。次に、画像処理プロセッサが、描画すべき画像データのRAM202への書き込み処理などを行う。そして、RAM202に書き込まれた画像データが、インターフェース回路を介してD/Aコンバータに供給される。ここで、画像データがD/Aコンバータでアナログ映像信号に変換される。そして、この画像データが、モニタ206に供給され画像として表示される。
スピーカ208は、ゲーム実行中やデモ画面表示中のサウンドを出力する。音声再生部207は、スピーカ208に発音させるためのサウンドデータを生成する。音声再生部207は、主に、記録媒体から読み出される音声データを音声として出力するために設けられている。音声再生部207は、たとえば、スピーカ208と、増幅回路と、D/Aコンバータと、インターフェース回路とから構成されている。スピーカ208には、増幅回路が接続されており、増幅回路には、D/Aコンバータが接続されており、D/Aコンバータには、インターフェース回路が接続されている。そして、インターフェース回路にバスが接続されている。ここでは、音声データが、インターフェース回路を介してD/Aコンバータに供給され、ここでアナログ音声信号に変換される。このアナログ音声信号が増幅回路によって増幅され、スピーカ208から音声として出力される。
音声データには、たとえば、ADPCM(Adaptive Differential Pulse Code Modulation)データやPCM(Pulse Code Modulation)データなどがある。ADPCMデータの場合、上述と同様の処理方法で音声をスピーカ208から出力することができる。PCMデータの場合、RAM202においてPCMデータをADPCMデータに変換しておくことで、上述と同様の処理方法で音声をスピーカ208から出力することができる。
外部入出力制御部209は、外部機器に対する制御信号を生成する。また、入力操作部211、記録媒体リーダ・ライタ212、および起動ボタン214などの外部機器からの信号を受信してCPU201に送出する。
外部機器制御部210は、入力操作部(入力部)211、記録媒体リーダ・ライタ212、および起動ボタン214等の外部機器を制御する。入力操作部211は、ジョイスティックや操作ボタンなどから構成されたコントローラに対応しており、プレイヤの指示入力を受け付ける。詳細には、入力操作部211は、主に、コントローラと、操作情報インターフェース回路と、インターフェース回路とから構成されている。コントローラには、操作情報インターフェース回路が接続されており、操作情報インターフェース回路には、インターフェース回路が接続されている。そして、インターフェース回路には、バスが接続されている。
記録媒体リーダ・ライタ212は、挿入される記録媒体たとえば、CD−ROM、DVD、および磁気カード等に対して、データの読取・書込処理を実行する。ここで用いられる記録媒体は、オペレーションシステムのプログラムデータや、画像データ、音声データ並びに各種プログラムデータからなるゲームデータなどを記録するためのものである。記録媒体には、オペレーティングシステムのプログラムデータやゲームデータなどが記憶される。なお、記録媒体10にはカード型メモリも含まれており、このカード型メモリは、ゲーム終了時の各種ゲームパラメータや、ゲーム中断時の各種ゲームパラメータ等を保存するために用いられる。
起動ボタン214は、ゲーム装置2を起動するためのボタンである。このボタンは、ゲーム装置本体の外部に露出して設けられている。このボタンの押下により、ゲーム装置は起動する。
ルータ4は、ゲーム装置2の通信部204に接続され、ネットワーク上を流れるデータを、他のネットワークに中継する機器である。ルータ4は、制御部たとえばCPUを有しており、このCPUによりネットワーク層やトランスポート層の一部のプロトコルが解析され、データの転送が行われる。
また、ルータ4には、UPnP(Universal Plug and Play)に対応したルータと、UPnP(Universal Plug and Play)に対応していないルータとが、存在する。たとえば、ルータ4が、UPnPに対応している場合、ゲーム装置2をルータ4に接続するだけで、ルータ4を自動的に設定することができる。
UPnPは、ゲーム装置2をルータ4に接続するだけで、ゲーム装置2を外部ネットワーク3に参加することを可能にするプロトコルである。たとえば、UPnPに対応したルータ4では、ゲーム装置2を外部ネットワーク3に接続するために必要な設定を、自動的に実行する。ルータ4の設定には、たとえば、ポート番号の設定、およびIPアドレスの割り当て等がある。
たとえば、ゲーム装置2を、UPnPに対応したルータ4に接続すると、このルータ4のポート番号が、所定の番号に設定される。より具体的には、ゲーム装置2を、UPnPに対応したルータ4に接続すると、ゲーム装置2において、ルータ4の設定を行うためのプログラムが実行される。すると、このプログラムに基づいて、ポートの開放するための命令が、ゲーム装置2のCPU201から発行される。すると、この命令に基づいて、ルータ4のポート番号が、所定の番号たとえば「10000」に設定される。このようにして、ルータ4のポートが、開放される。
〔ゲーム装置における各種処理概要〕
本ゲーム装置において実行されるゲームは、たとえば、アドベンチャーゲームである。本ゲーム装置では、複数のキャラクタを制御するゲームが、実行可能になっている。ここでは、第1プレイヤが操作するキャラクタを、メインキャラクタとし、第2プレイヤが操作するキャラクタを、サブキャラクタとして、説明を行う。図3は、以下に示す、本発明で主要な役割を果たす機能を、説明するための機能ブロック図である。
以下では、第1プレイヤが、主たるプレイヤであり、第2プレイヤが、従たるプレイヤである場合を一例として、説明が行われている。しかし、第2プレイヤが、主たるプレイヤであり、第1プレイヤが、従たるプレイヤであると考えた場合、第1プレイヤのゲーム装置2において実行される処理が、第2プレイヤのゲーム装置2において、同様に実行される。また、この場合、第2プレイヤのゲーム装置2において実行される処理が、第1プレイヤのゲーム装置2において、同様に実行される。
メインキャラクタ設定手段50は、複数のキャラクタの中のいずれか1つのキャラクタを、メインキャラクタに設定する機能を備えている。
この手段では、複数のキャラクタの中のいずれか1つのキャラクタを、CPU201に認識させることにより、このキャラクタが、メインキャラクタとして設定される。ここでは、たとえば、第1プレイヤが、コントローラ211を操作することによって、複数のキャラクタの中のいずれか1つのキャラクタを選択すると、ここで選択されたキャラクタの識別データが、メインキャラクタ用の識別データとして、第1プレイヤのゲーム装置2におけるCPU201に、認識される。この認識処理をCPU201に実行させることにより、メインキャラクタが設定される。
サブキャラクタ設定手段51は、複数のキャラクタの中のいずれか1つのキャラクタを除く他のキャラクタを、サブキャラクタに設定する機能を備えている。
この手段では、複数のキャラクタの中のいずれか1つのキャラクタを除く他のキャラクタを、CPU201に認識させることにより、ここでCPU201に認識されたキャラクタが、サブキャラクタとして設定される。たとえば、第1プレイヤとは異なる他のプレイヤたとえば第2プレイヤが、コントローラ211を操作することによって、複数のキャラクタの中のいずれか1つのキャラクタを選択すると、ここで選択されたキャラクタの識別データが、外部ネットワーク3を介して、第2プレイヤのゲーム装置2から第1プレイヤのゲーム装置2へと送信される。すると、この識別データが、サブキャラクタ用の識別データとして、第1プレイヤのCPU201に認識される。この認識処理を第1プレイヤのCPU201に実行させることにより、サブキャラクタが設定される。
メイン画面設定手段52は、メインキャラクタ用の画面であるメイン画面を、モニタ206に設定する機能を備えている。
この手段では、メインキャラクタ用の画面であるメイン画面が、モニタ206に設定される。ここでは、たとえば、モニタ206において画像を表示可能な最大領域、すなわちモニタ206の全画面領域が、メイン画面として設定される。より具体的には、モニタ206の4隅の位置座標データが、RAM202から読み出され、CPU201に認識される。これにより、モニタ206の全画面領域が、メイン画面として設定される。なお、モニタ206の4隅の位置座標データは、各プレイヤが使用するモニタ206ごとに定義されおり、RAM202に格納されている。
キャラクタ制御手段53は、メインキャラクタおよびサブキャラクタを、同一のゲーム空間内において制御する機能を備えている。
この手段では、メインキャラクタおよびサブキャラクタが、同一のゲーム空間内において制御される。ここでは、たとえば、第1プレイヤがメインキャラクタを移動するためにコントローラ211を操作すると、第1プレイヤのコントローラ211の操作に対応した、ゲーム空間におけるメインキャラクタの移動方向および移動量が、第1プレイヤのゲーム装置2に内蔵されたCPU201(以下、第1プレイヤのCPUと呼ぶ)により計算される。すると、メインキャラクタを、第1プレイヤのゲーム空間において移動する命令が、第1プレイヤのCPU201から発行される。すると、メインキャラクタが、第1プレイヤのゲーム空間において、上記の移動方向に上記の移動量だけ移動する。
また、メインキャラクタの移動方向および移動量が計算されたときには、メインキャラクタの移動方向および移動量が、第2プレイヤのゲーム装置2に送信される。すると、第1プレイヤが操作するキャラクタ(第1プレイヤにとってはメインキャラクタに対応、第2プレイヤにとってはサブキャラクタに対応)を、第2プレイヤのゲーム空間において移動する命令が、第2プレイヤのゲーム装置2に内蔵されたCPU201(以下、第2プレイヤのCPUと呼ぶ)から発行される。すると、第1プレイヤが操作するキャラクタが、第2プレイヤのゲーム空間において、上記の移動方向に上記の移動量だけ移動する。
同様に、第2プレイヤがキャラクタを移動するためにコントローラ211を操作すると、第2プレイヤのコントローラ211の操作に対応した、ゲーム空間におけるキャラクタ(第1プレイヤにとってはサブキャラクタ、第2プレイヤにとってはメインキャラクタ)の移動方向および移動量が、第2プレイヤのCPU201により計算される。すると、このキャラクタを、第2プレイヤのゲーム空間において移動する命令が、第2プレイヤのCPU201から発行される。すると、このキャラクタが、第2プレイヤのゲーム空間において、上記の移動方向に上記の移動量だけ移動する。
また、このキャラクタの移動方向および移動量が計算されたときには、このキャラクタの移動方向および移動量が、第1プレイヤのゲーム装置2に送信される。すると、サブキャラクタを、第1プレイヤのゲーム空間において移動する命令が、第1プレイヤのCPU201から発行される。すると、サブキャラクタが、第1プレイヤのゲーム空間において、第2プレイヤのゲーム装置2において計算された移動方向に、第2プレイヤのゲーム装置2において計算された移動量だけ移動する。
このようにして、メインキャラクタおよびサブキャラクタが、異なる環境、すなわち異なるゲーム装置において、同時に制御される。また、ゲーム空間におけるメインキャラクタおよびサブキャラクタの位置は、1フレームごとに、各ゲーム装置2のRAM202に格納される。なお、サブキャラクタは、1つである必要はなく、複数であっても良い。
メイン映像表示手段54は、メインキャラクタの視野角内に含まれるゲーム空間の映像を、メイン画面に表示する機能を備えている。
この手段では、メインキャラクタの視野角内に含まれるゲーム空間の映像が、メイン画面に表示される。ここでは、たとえば、メインキャラクタ用の仮想カメラの撮影対象となる視錐空間の内部に位置するオブジェクト(キャラクタを含む)を、2次元空間に投影する処理が、CPU201により実行される。そして、2次元空間上のオブジェクトをモニタ206のメイン画面に表示する命令が、CPU201から発行されると、メインキャラクタの視野角内に含まれるゲーム空間の映像が、2次元空間上のオブジェクトに対応する画像データを用いて、メイン画面に表示される。
なお、ここでは、メインキャラクタ用の仮想カメラは、メインキャラクタの目の位置に配置されている。メインキャラクタの目の位置は、メインキャラクタの位置座標データが示す位置を基点とした、所定の高さに、設定されている。また、ここでは、視錐空間は、仮想カメラの位置の位置座標データ、仮想カメラの注視点の位置座標データ、仮想カメラの画角に対応する角度データ、および視錐空間の奥行き方向の範囲を規定するための位置座標データ等に基づいて、ゲーム空間に設定される。
レーダ画面設定手段55は、メインキャラクタとサブキャラクタ、さらにゲームの探索目的である宝物80が存在する領域80Rとの相対的な位置関係を示すためのレーダ画面を、モニタ206に設定する機能を備えている。
この手段では、メインキャラクタとサブキャラクタとの相対的な位置関係を示すためのレーダ画面が、モニタ206に設定される。ここでは、たとえば、モニタ206の全画面領域より小さな所定の領域(レーダ画面用の部分領域)が、レーダ画面として設定される。より具体的には、モニタ206の全画面領域の内部における4つの所定の位置座標データが、RAM202から読み出され、CPU201に認識される。これにより、モニタ206の所定の部分領域が、レーダ画面として設定される。なお、矩形状の部分領域を規定するための4つの隅角部の位置は、モニタ206の全画面領域の内部の所定の位置に定義される。これら4つの隅角部の位置を示す位置座標データは、ゲームプログラムにおいて予め規定されており、RAM202に格納されている。
位置表示手段56は、ゲーム空間におけるメインキャラクタの位置とサブキャラクタの位置とを、レーダ画面に表示する機能を備えている。
この手段では、ゲーム空間におけるメインキャラクタの位置を示す位置座標データと、ゲーム空間におけるサブキャラクタの位置を示す位置座標データとに基づいて、ゲーム空間におけるメインキャラクタの位置とサブキャラクタと位置が、レーダ画面に表示される。ここでは、たとえば、制御中のメインキャラクタの位置を示す位置座標データ、および制御中のサブキャラクタの位置を示す位置座標データが、所定の時間間隔たとえば1フレームごとに、RAM202に格納されている。そして、これら位置座標データがCPU201に認識され、これら位置座標データに対応する位置が、位置記号用の画像データを用いて、レーダ画面に表示される。
なお、位置表示手段56は、宝物80の位置を示す位置座標データに基づいて、宝物80の位置および宝物80が存在する領域80Rを、レーダ画面に表示する機能も備えている。この手段では、宝物80の位置を示す位置座標データに基づいて、宝物80の位置がレーダ画面に表示される。また、この位置座標データが示す位置を基準とした所定の領域が、宝物80が存在する領域80Rとして、レーダ画面に表示される。
イベント判断手段57は、サブキャラクタが関係するイベントが発生したか否かを、判断する機能を備えている。
この手段では、サブキャラクタが関係するイベントが発生したか否かが、CPU201により判断される。ここでは、たとえば、サブキャラクタが危機に瀕する事態が、イベントとして設定されている。この場合、サブキャラクタが危機に瀕する事態が発生したときに、イベントの発生を示すデータが、第2プレイヤのゲーム装置2から第1プレイヤのゲーム装置2へと送信される。そして、このデータが、第1プレイヤのCPU201に認識される。この場合が、イベントの発生に対応する。
なお、イベントの発生を示すデータを受信したか否かは、第1プレイヤのCPU201により常に監視されている。そして、このデータが、第1プレイヤのCPU201に認識された場合に、イベントが発生したものと判断される。同様の処理は、第2プレイヤのゲーム装置2において実行される。
サブ画面設定手段58は、サブキャラクタ用の画面であり、メイン画面の内部においてメイン画面より小さなサブ画面を、モニタ206に設定する機能を備えている。詳細には、サブ画面設定手段58は、サブキャラクタが関係するイベントが発生した場合に、サブ画面を、メイン画面内に設定する機能を備えている。
この手段では、サブキャラクタが関係するイベントが発生した場合に、サブキャラクタ用の画面であるサブ画面が、モニタ206のメイン画面内に設定される。モニタ206の全画面領域より小さな所定の領域(サブ画面用の部分領域)が、サブ画面として設定される。より具体的には、モニタ206の全画面領域の内部における4つの所定の位置座標データが、RAM202から読み出され、CPU201に認識される。これにより、モニタ206の所定の部分領域が、サブ画面として設定される。なお、矩形状の部分領域を規定するための4つの隅角部の位置は、モニタ206の全画面領域の内部の所定の位置に定義される。これら4つの隅角部の位置を示す位置座標データは、ゲームプログラムにおいて予め規定されており、RAM202に格納されている。
サブ映像表示手段59は、サブキャラクタの視野角内に含まれるゲーム空間の映像を、サブ画面に表示する機能を備えている。
この手段では、サブキャラクタが、メインキャラクタと同じゲーム空間を移動する。そして、このサブキャラクタの視野角内に含まれるゲーム空間の映像が、サブ画面に表示される。ここでは、サブキャラクタ用の仮想カメラの撮影対象となる視錐空間の内部に位置するオブジェクト(キャラクタを含む)を、2次元空間に投影する処理が、CPU201により実行される。そして、2次元空間上のオブジェクトをモニタ206のサブ画面に表示する命令が、CPU201から発行されると、サブキャラクタの視野角内に含まれるゲーム空間の映像が、サブ画面に表示される。
なお、ここでは、サブキャラクタ用の仮想カメラは、サブキャラクタの目の位置に配置されている。サブキャラクタの目の位置は、サブキャラクタの位置座標データが示す位置を基点とした、所定の高さに、設定されている。また、ここでは、視錐空間は、仮想カメラの位置の位置座標データ、仮想カメラの注視点の位置座標データ、仮想カメラの画角に対応する角度データ、および視錐空間の奥行き方向の範囲を規定するための位置座標データ等に基づいて、ゲーム空間に設定される。
位置判断手段60は、サブキャラクタが、メインキャラクタの視野角内のゲーム空間の内部に、位置するか否かを、判断する機能を備えている。
この手段では、メインキャラクタと同じゲーム空間を移動するサブキャラクタが、メインキャラクタの視野角内のゲーム空間の内部に、位置するか否かが、CPU201により判断される。ここでは、たとえば、サブキャラクタの位置座標データがCPU201に認識され、このサブキャラクタの位置座標データが示す位置が、メインキャラクタの視錐空間の内部に含まれているか否かが、CPU201により判断される。
サブ画面消去手段61は、イベント発生後に、サブキャラクタが、メインキャラクタの視野角内のゲーム空間の内部に位置した場合、サブキャラクタ用のサブ画面を、メイン画面から消去する機能を備えている。詳細には、サブ画面消去手段61は、イベントに関係したサブキャラクタが、メインキャラクタの視野角内のゲーム空間の内部に位置した場合に、複数のサブ画面の中から、イベントに関係したサブキャラクタのサブ画面のみを、強調表示した後に消去する機能を備えている。
この手段では、イベントに関係したサブキャラクタが、メインキャラクタの視野角内のゲーム空間の内部に位置した場合に、複数のサブ画面の中から、イベントに関係したサブキャラクタのサブ画面のみが、強調表示され消去される。ここで、強調表示とは、例えば、サブ画面全体あるいはサブ画面の外枠を一瞬、光らせる、または数回点滅させる等の演出を行い、サブ画面にプレイヤの注目を引くような表示を行なう表示のことを示す。
ここでは、たとえば、イベントに関係したサブキャラクタが、メインキャラクタの視野角内のゲーム空間の内部に位置した場合に、このサブキャラクタの識別データがCPU201に認識される。すると、このサブキャラクタの識別データに対応するサブ画面が、CPU7に認識される。すると、このサブ画面に表示されている映像を、強調表示する命令が、CPU201から発行される。そして、このサブ画面に表示されている映像を、サブ画面から消去する命令が、CPU201から発行される。そして、このサブ画面の設定を、モニタ206から解除する命令が、CPU201から発行される。このようにして、複数のサブ画面の中から、イベントに関係したサブキャラクタのサブ画面のみが、強調表示され消去される。
なお、サブキャラクタとサブ画面との対応関係は、対応テーブルに基づいて、CPU201により管理されている。
〔アドベンチャーゲームにおける状況把握システムの概要〕
次に、アドベンチャーゲームにおける状況把握システムの具体的な内容について説明する。図8は、アドベンチャーゲームにおける上記システムを説明するためのフローである。また、図8には、メインキャラクタを操作するプレイヤに関する処理と、その他のプレイヤに関する処理との関係も同時に示される。なお、図8では、その他のプレイヤの処理については、1人分の処理のみ示されているが、その他のプレイヤが複数になったとしても、このフローに基づいて、同様に説明することができる。
なお、以下では、複数のキャラクタが互いに助け合いながら宝探しを行うアドベンチャーゲームが、各ゲーム装置2において実行された場合の例を用いて、本システムの説明を行う。このアドベンチャーゲームでは、複数のキャラクタそれぞれが単独で行動したり、複数のキャラクタが互いに助け合ったりしながら、複数のキャラクタが一丸となって、宝探しを行う。
なお、本ゲームでは、次のような事項が前提として設けられている。たとえば、複数のキャラクタの中の少なくとも1つキャラクタが、途中で崖から落ちたり、モンスターに倒されたりした場合、ゲームオーバーとなるため、全員で協力し合いながら、宝探しを行う。また、後述する宝物80は山のある領域に隠されており、大体の場所はプレイヤに報知されるが、詳細な位置は、その場所に行って探さないと見つけることができない。
このような前提に基づいて、アドベンチャーゲームの実施形態を、以下に示す。
まず、ゲーム装置の電源が投入され、ゲーム装置が起動されると、アドベンチャーゲーム用のゲームプログラムが、記録媒体10からRAM202にロードされ格納される。このアドベンチャーゲーム用のゲームプログラムには、アドベンチャーゲームを実行する上で必要となる各種の基本ゲームデータが、含まれている。このため、基本ゲームデータは、アドベンチャーゲーム用のゲームプログラムとともに、RAM202にロードされ格納される(S1)。
たとえば、基本ゲームデータには、3次元ゲーム空間用の各種の画像に関するデータが含まれている。3次元ゲーム空間用の各種の画像に関するデータには、たとえば、キャラクタ用のモデルデータ、および建物や樹木等のような各種のオブジェクトのモデルデータ等が、含まれている。また、基本ゲームデータには、3次元ゲーム空間用のモデルデータを3次元ゲーム空間に配置するための位置座標データが、含まれている。また、基本ゲームデータには、仮想カメラにより撮影したモデルを、モニタ206に表示するための画像データが、含まれている。さらに、基本ゲームデータには、上記システムで用いられるデータも、含まれている。
続いて、RAM202に格納されたアドベンチャーゲーム用のゲームプログラムが、基本ゲームデータに基づいて、CPU7により実行される(S2)。すると、アドベンチャーゲームの起動画面がモニタ206に表示される(図示しない)。すると、アドベンチャーゲームの前処理、たとえばアドベンチャーゲームの設定を行うための各種の設定画面が、モニタ206に表示される。
ここでは、たとえば、図4に示すように、アドベンチャーゲームのプレイモードを選択するためのモード選択画面70が、モニタ206に表示される。このモード選択画面において、プレイヤがコントローラ211を操作することにより、プレイモードが決定される(S3)。プレイモードには、たとえば、1人プレイモードおよびネットワークプレイモード等が、用意されている。
ここで、たとえば、1人プレイモードが選択された場合、様々なタイプの複数のキャラクタが示されたキャラクタリストが、モニタ206に表示される(図示しない)。そして、プレイヤは、コントローラ211を操作することにより、このキャラクタリストの中から、プレイヤが所望するキャラクタを、選択する。この操作により選択されたキャラクタが、メインキャラクタとして設定される(S4)。すると、ここで設定されたメインキャラクタを除く他のキャラクタが、自動制御プログラム(AIプログラム、Artificial Intelligence Program)に基づいて、サブキャラクタとして、ランダムに設定される(S5)。たとえば、メインキャラクタを除く3つのキャラクタが、サブキャラクタとして、ランダムにCPU201により設定される。ここでは、3つのサブキャラクタが、CPU201により自動的に設定される場合の例を示したが、3つのサブキャラクタを、メインキャラクタと同様に、プレイヤが選択し設定するようにしても良い。
1人プレイモードでは、プレイヤがコントローラ211を操作することにより、各種の命令がメインキャラクタに対して指示される。そして、サブキャラクタに対する各種の命令は、自動制御プログラム(AIプログラム、Artificial Intelligence Program)に基づいて、CPU201により指示される。
なお、後述するように、本実施形態では、ネットワークプレイモードが選択された場合の例を用いて、本システムの説明が行われる。このため、本実施形態では、以下に示す形態、以下に示すステップ4(S4)およびステップ5(S5)を用いて、メインキャラクタおよびサブキャラクタは、設定される。
一方で、たとえば、ネットワークプレイモードが選択された場合、このアドベンチャーゲームに参加を希望するプレイヤ(他のプレイヤ)に対応するニックネームから構成されるプレイヤリストが、あるプレイヤのモニタ206に表示される。そして、このプレイヤが、コントローラ211を操作することにより、このリストの中から、プレイヤが所望するニックネームを選択する。すると、このニックネームに対応するプレイヤ(他のプレイヤ)が、チームメイトの一員として、選択される。
すると、ここで選択された事項(選択事項)を、他のプレイヤに報知するための信号が、CPU201からの命令に基づいて、あるプレイヤのゲーム装置2から他のプレイヤのゲーム装置2へと、送信される。そして、この信号が、他のプレイヤのゲーム装置2のCPU201に認識されると、上記の選択事項を報知するための情報、たとえば「参加しますか?」というコメントが、他のプレイヤのモニタ206に表示される。ここで、他のプレイヤが、コントローラ211を操作することにより、このコメントを承認すると、このプレイヤが、チームメイトの一員として、アドベンチャーゲームに参加することが決定される。なお、ここでは、メインキャラクタを操作するプレイヤと、3つのキャラクタそれぞれ操作する3人のプレイヤが、チームを組んだ場合を、一例として説明を行う。
アドベンチャーゲームを一緒に楽しむプレイヤすなわちチームメイトが設定されると、様々なタイプのキャラクタから構成されるキャラクタリストが、各プレイヤのモニタ206に表示される。ここで、あるプレイヤが、コントローラ211を操作することにより、このキャラクタリストの中から、自分の所望するキャラクタを、選択する。この操作により選択されたキャラクタが、このプレイヤのメインキャラクタとして設定される(S4)。また、チームメイトである他のプレイヤが選択したキャラクタが、メインキャラクタに対するサブキャラクタとして、設定される(S4)。
ここで、メインキャラクタおよびサブキャラクタの設定についての説明を、補足しておく。たとえば、あるプレイヤによりメインキャラクタが選択された場合、RAM202に格納されたメインキャラクタ用の識別データが、このプレイヤのゲーム装置2のCPU201に認識される。この認識処理によって、メインキャラクタの設定が行われる。また、他の3人のプレイヤそれぞれによりキャラクタ(他のプレイヤにとってはメインキャラクタ)が選択された場合、他の3人のプレイヤそれぞれが選択したキャラクタに対応する識別データが、各プレイヤのゲーム装置2から、メインキャラクタを選択したプレイヤのゲーム装置2へと送信される(図8のT4’を参照)。すると、これら3つのキャラクタ用の識別データが、3つのサブキャラクタ用の識別データとして、メインキャラクタを選択したプレイヤのゲーム装置2のCPU201に、認識される。この認識処理によって、メインキャラクタを選択したプレイヤのゲーム装置2において、サブキャラクタが設定される。
上記の処理は、各ゲーム装置2において実行され、メインキャラクタおよびサブキャラクタは、各キャラクタ用の識別データを用いて、各ゲーム装置2のCPU201により、管理される。たとえば、メインキャラクタを選択したプレイヤのゲーム装置2から、他の3人のプレイヤそれぞれのゲーム装置2へと、メインキャラクタ用の識別データが、送信される(図8のT4を参照)。
以下では、ネットワークプレイモードが選択された場合の例を用いて、本システムの説明を行う。また、メインキャラクタを操作するプレイヤを、Aプレイヤ、3つのサブキャラクタそれぞれを操作するプレイヤ(上記の第2プレイヤに対応)を、Bプレイヤ、Cプレイヤ、Dプレイヤと表記する。すなわち、Aプレイヤが主たるプレイヤで、Bプレイヤが従たるプレイヤである場合の一例を、以下に示す。さらに、各プレイヤのゲーム装置の符号を、ゲーム装置2a、ゲーム装置2b、ゲーム装置2c、ゲーム装置2dと表記する。同様に、各ゲーム装置2a,2b,2c,2dの各構成には、各構成の番号に符号a,b,c,dを付す。
この場合、Aプレイヤのゲーム装置2aにおいてAプレイヤが操作するキャラクタが、メインキャラクタとなる。そして、Bプレイヤのゲーム装置2bにおいてBプレイヤが操作するキャラクタが、Aプレイヤのゲーム空間GSにおいて動作する場合、このキャラクタが、サブキャラクタとなる。同様に、CプレイヤおよびDプレイヤのゲーム装置2b,2cにおいてBプレイヤおよびCプレイヤが操作する2つのキャラクタも、Aプレイヤのゲーム空間GSにおいて動作する場合、これらのキャラクタが、サブキャラクタとなる。
なお、以下では、Aプレイヤの視点で本システムの説明が行われるが、Bプレイヤ、Cプレイヤ、およびDプレイヤそれぞれのゲーム装置2b,2c,2dにおいても、Aプレイヤのゲーム装置2aにおいて実行される処理と同様の処理が、実行される。
上記のような処理が行われ、アドベンチャーゲームの各種の設定が終了すると、メインキャラクタ用の画面であるメイン画面71が、モニタ206aに設定される(S6、図6の破線を参照)。ここでは、たとえば、モニタ206aの全画面領域を規定する4隅の位置座標データが、RAM202から読み出され、CPU201aに認識される。これにより、モニタ206aの全画面領域が、メイン画面71として設定される。
続いて、アドベンチャーゲームを開始する命令が、CPU201aから発行される(S7)。すると、Aプレイヤの操作対象であるメインキャラクタと、Bプレイヤの操作対象であるサブキャラクタと、Cプレイヤの操作対象であるサブキャラクタと、Dプレイヤの操作対象であるサブキャラクタとが、各キャラクタの初期位置を示す位置座標データ、又は前回のゲーム終了時の各キャラクタの位置を示す位置座標データに基づいて、ゲーム空間GSに配置される(S8)。ここでは、「ゲーム空間(GS)」という文言が、プログラム上で定義される「仮想ゲーム空間」という意味で用いられる。なお、各キャラクタの初期位置およびゲーム終了時の各キャラクタの位置は、RAM12に格納されている。
続いて、ゲーム空間GSに配置された各キャラクタに対して仮想カメラを設定する処理が、CPU201aにより実行される(S9)。仮想カメラの設定には、視錐空間Vsの設定も含まれている。たとえば、仮想カメラの設定は、次のように行われる。
まず、仮想カメラを、図5に示すように、各キャラクタの目の位置に配置する処理が、CPU201aにより実行される。各キャラクタの目の位置すなわち仮想カメラの位置Pc(図7を参照)は、各キャラクタの位置座標データが示す位置(XY平面で定義される位置)を基点とした、所定の高さの位置(Z軸方向の位置)に、設定される。各キャラクタの目の位置は、ゲームプログラムにおいて予め規定されている。
なお、ここでは、ゲーム空間GSにおける水平面が、X軸およびY軸によって定義され、ゲーム空間GSにおける垂直上方が、Z軸によって定義される。この場合、原点と、X軸およびY軸が向く方向とは、ゲームプログラムにおいて予め規定されている。
次に、図7に示すように、仮想カメラの撮影対象となる視錐空間Vsが、ゲーム空間GSに設定される。視錐空間Vsは、上記の仮想カメラの位置Pcの位置座標データ、仮想カメラの注視点Pfの位置座標データ、仮想カメラの画角αに対応する角度データ、および視錐空間Vsの奥行き方向の範囲を規定するための位置座標データ等に基づいて、ゲーム空間GSに設定される。
より具体的には、仮想カメラの注視点Pfの位置を示す注視点用の位置座標データが、CPU201aに認識される。ここでは、図7に示すように、仮想カメラの注視点Pfは、仮想カメラの位置Pcを基準とした仮想カメラの注視方向(キャラクタの視線方向)において、仮想カメラの位置Pcから所定の距離を隔てた位置に、設定される。仮想カメラの注視方向は、キャラクタの向きたとえばキャラクタの視線の方向に対応している。なお、仮想カメラの位置Pcと注視点Pfとの間の距離は、ゲームプログラムにおいて、予め規定されている。また、仮想カメラの注視点PfのZ座標は、仮想カメラの位置座標データのZ座標と同じである。
仮想カメラの注視点Pfが設定されると、ゲーム空間GSにおいてテレビジョンモニタ20に表示される領域が、キャラクタから見える視錐空間Vsとして、設定される。視錐空間Vsは、図7に示すように定義される。まず、仮想カメラの位置Pcとカメラの注視点Pfとを結ぶ直線(基準線)を基準とした仮想カメラの画角αが、設定される。たとえば、仮想カメラの画角αは、基準線を中心とした水平方向の画角αxyと、基準線を中心とした垂直方向の画角αyzとから構成されている。これらの画角αxy,αyzに対応する角度データをCPU201aに認識させることにより、画角αが設定される。
次に、仮想カメラの画角α(αxy,αyz)が設定されると、仮想カメラの画角内の領域(画角内領域)が決定される。すると、画角内領域において、カメラ視点側の面(第1面)S1およびカメラ視点から離反する側の面(第2面)S2を設定することにより、第1面S1と第2面S2との間の領域が、視錐空間Vsとして設定される。
たとえば、基準線上において仮想カメラの位置Pcから第1距離を隔てた第1位置の位置座標データを、CPU201aに認識させることにより、第1面S1が設定される。また、基準線上において仮想カメラの位置Pcから所定の第2距離を隔てた第2位置の位置座標データを、CPU201aに認識させることにより、第2面S2が設定される。ここでは、第1距離とこの第1距離より長い第2距離とは、ゲームプログラムにおいて予め規定されている。そして、この第1距離および第2距離に基づいて、第1位置の位置座標データおよび第2位置の位置座標データが、CPU201aにより算出される。
すると、この視錐空間Vsの8つの隅角部v1,v2,v3,v4,v5,v6,v7,v8の位置を示す位置座標データが、CPU201aに認識される。これら隅角部v1,v2,v3,v4,v5,v6,v7,v8の位置に基づいて、3次元ゲーム空間GSにおける視錐空間Vsの位置および視錐空間Vsの範囲を、CPU201aに認識させることができる。
ここでは、視錐空間Vsは、仮想カメラの位置Pcを原点とした相対座標系において、定義される。たとえば、仮想カメラの位置Pcからカメラの注視点Pfへと向かう方向が、y軸に設定される。そして、ゲーム空間GSにおいてキャラクタが接触する面たとえば地表面に垂直な方向が、z軸に設定される。そして、y軸およびz軸に垂直な方向が、x軸に設定される。また、視錐空間Vsの8つの隅角部v1,v2,v3,v4,v5,v6,v7,v8の位置については、絶対座標系(XYZ座標系)において、定義されている。
なお、視錐空間Vsが一旦設定されると、後述するように各キャラクタがゲーム空間GSを移動すると、この各キャラクタの移動に連動して、視錐空間Vsが上記の形態で再設定される。また、上記の視錐空間Vsの設定を含む仮想カメラの設定は、メインキャラクタおよび3つのサブキャラクタそれぞれに対して、実行される。
続いて、Aプレイヤのゲーム装置2aにおいて形成されるゲーム空間GSの内部において、メインキャラクタおよびサブキャラクタが、CPU201aにより制御される(S10)。
たとえば、Aプレイヤがメインキャラクタを移動するためにコントローラ211を操作すると、コントローラ211の操作信号が、CPU201aに認識される。すると、この操作信号に対応する処理、たとえばAプレイヤのコントローラ211の操作に対応したメインキャラクタの移動方向データおよび移動量データを計算する処理が、CPU201aにより実行される。すると、移動方向データおよび移動量データに基づいて、メインキャラクタをゲーム空間GSにおいて移動する命令が、CPU201aから発行される。すると、メインキャラクタが、ゲーム空間GSにおいて、移動方向データが示す移動方向に、移動量データが示す移動量で移動する。
ここで、メインキャラクタの移動方向データおよび移動量データが計算されたときには、このメインキャラクタの位置座標データ、移動方向データ、および移動量データが、他のプレイヤ(ex. Bプレイヤ,Cプレイヤ,Dプレイヤ)のゲーム装置2b,2c,2dに送信される(図8のT10を参照)。すると、これら、位置座標データ、移動方向データ、および移動量データが、他のプレイヤのRAM202b,202c,202dに格納され、CPU201b,201c,201dに認識される。すると、Aプレイヤが操作するキャラクタ(Aプレイヤにとってはメインキャラクタに対応、Bプレイヤにとってはサブキャラクタに対応)を、他のプレイヤのゲーム空間GSにおいて移動する命令が、他のプレイヤのCPU201b,201c,201dから発行される。すると、Aプレイヤが操作するキャラクタが、Bプレイヤのゲーム空間GSにおいて、上記の移動方向に上記の移動量で移動する。
一方で、他のプレイヤがキャラクタを移動するためにコントローラ211を操作すると、Aプレイヤの場合と同様に、他のプレイヤのコントローラ211の操作に対応したキャラクタ(Aプレイヤにとってはサブキャラクタ、他のプレイヤにとってはメインキャラクタ)の位置座標データ、移動方向データ、および移動量データが、各ゲーム装置2b,2c,2dのCPU201b,201c,201dにより計算される。すると、これら位置座標データ、移動方向データ、および移動量データに基づいて、キャラクタをゲーム空間GSにおいて移動する命令が、CPU201b,201c,201dから発行される。すると、このキャラクタが、他のプレイヤのゲーム空間GSにおいて、移動方向データが示す移動方向に、移動量データが示す移動量で移動する。
また、他のプレイヤにより操作されるキャラクタの移動方向データおよび移動量データが計算されたときには、このキャラクタの位置座標データ、移動方向データ、および移動量データが、他のプレイヤのゲーム装置2b,2c,2dから、Aプレイヤのゲーム装置2aへと、送信される(図8のT10’を参照)。すると、これら位置座標データ、移動方向データ、および移動量データが、AプレイヤのRAM202aに格納され、CPU201aに認識される。すると、位置座標データ、移動方向データ、および移動量データに基づいて、サブキャラクタをAプレイヤのゲーム空間GSにおいて移動する命令が、CPU201aから発行される。すると、他のキャラクタが操作するサブキャラクタが、Aプレイヤのゲーム空間GSにおいて、他のプレイヤのゲーム装置2b,2c,2dにおいて計算された移動方向に、他のプレイヤのゲーム装置2b,2c,2dにおいて計算された移動量で移動する。
一方で、メインキャラクタの制御およびサブキャラクタの制御には、上記のような移動に関する制御だけでなく、アドベンチャーゲームにおいて用いられる各種の命令に対する制御も、含まれる。
たとえば、アドベンチャーゲームで用いられる命令には、モンスターを攻撃する動作に関する命令や、モンスターからの攻撃を防御する動作に関する命令等が、用意されている。そして、このような命令を指示するためにAプレイヤがコントローラ211を操作すると、このコントローラ211の操作信号が、CPU201aに認識される。すると、この操作信号に対応する動作をメインキャラクタに実行させるための命令が、CPU201aから発行される。すると、メインキャラクタが、ゲーム空間GSにおいてモンスターを攻撃する動作を行ったり、ゲーム空間GSにおいてモンスターからの攻撃を防御する動作等を行ったりする。
モンスターの動作は、モンスター用の自動制御プログラムに基づいて、CPU201aにより制御される。たとえば、メインキャラクタがモンスターを攻撃した場合、この攻撃に対応するモンスターの動作が、モンスター用の自動制御プログラムに基づいて、CPU201aにより制御される。また、モンスターがメインキャラクタを攻撃する場合、このモンスターの動作が、モンスター用の自動制御プログラムに基づいて、CPU201aにより制御される。なお、この処理は、Aプレイヤのゲーム装置2aと同様に、他のプレイヤのゲーム装置2b,2c,2dにおいても、各CPU201b,201c,201dにより実行される。
また、Aプレイヤの操作信号が、CPU201aに認識されたときには、動作指示用のデータに、所定の値を割り当てる処理が、CPU201aにより実行される。たとえば、モンスターを攻撃する命令に対応する操作信号が、CPU201aに認識された場合、動作指示用のデータに、所定の値たとえば数値「1」を割り当てる処理が、CPU201aにより実行される。また、モンスターからの攻撃を防御する命令に対応する操作信号が、CPU201aに認識された場合、動作指示用のデータに、所定の値たとえば数値「2」を割り当てる処理が、CPU201aにより実行される。
すると、動作指示用のデータを、Aプレイヤのゲーム装置2aから他のプレイヤのゲーム装置2b,2c,2dへと送信する命令が、CPU201aから発行される。すると、この動作指示用のデータが、動作指示用のデータが、Aプレイヤのゲーム装置2aから他のプレイヤのゲーム装置2b,2c,2dへと送信され(図8のT10を参照)、他のプレイヤのゲーム装置2b,2c,2dのCPU201b,201c,201dに認識される。すると、この動作指示用のデータに基づいて、Aプレイヤが操作するキャラクタ(Aプレイヤにとってはメインキャラクタ、他のプレイヤにとってはサブキャラクタ)が、ゲーム空間GSにおいてモンスターを攻撃する動作を行ったり、ゲーム空間GSにおいてモンスターからの攻撃を防御する動作等を行ったりする。
なお、他のプレイヤが、上記のような動作に関する命令を指示した場合も、上記と同様の処理が、CPU201b,201c,201dにより実行される(図8のT10’を参照)。そして、Aプレイヤのゲーム装置2aでは、Bプレイヤ、Cプレイヤ、およびDプレイヤそれぞれが操作するサブキャラクタが、ゲーム空間GSにおいてモンスターを攻撃する動作を行ったり、ゲーム空間GSにおいてモンスターからの攻撃を防御する動作等を行ったりする。
このように、各プレイヤはコントローラ211を操作することにより、自分およびチームメイトが操作するキャラクタの移動や動作等が、外部ネットワーク3を介して各ゲーム装置2a,2b,2c,2dにおいて相互に同期され制御される。言い換えると、メインキャラクタおよびサブキャラクタが、異なる環境、すなわち各ゲーム装置2a,2b,2c,2dのゲーム空間GSにおいて、同じように制御され動作する。特に、キャラクタに対する動作指示については、動作指示用のデータを用いることによって、外部ネットワーク3を介して、各キャラクタに対する命令が同期される。また、モンスターの動作も、異なる環境、すなわち各ゲーム装置2a,2b,2c,2dのゲーム空間において、同じように制御され動作する。
また、制御中のメインキャラクタの位置を示す位置座標データと、ゲーム空間GSにおける3つの制御中のサブキャラクタそれぞれの位置を示す位置座標データとは、所定の時間間隔たとえば1フレーム(ex. 1/60(sec))ごとに、複数のゲーム装置2a,2b,2c,2dそれぞれの間で、相互に同期される。また、これらの位置座標データは、各ゲーム装置2a,2b,2c,2dのRAM202a,202b,202c,202dに格納される。
上記のように、メインキャラクタおよびサブキャラクタが、ゲーム空間GSにおいて制御されている間においては、所定の時間間隔たとえば1フレーム(ex. 1/60(sec))ごとに、メインキャラクタの視野角内に含まれるゲーム空間GS、およびサブキャラクタの視野角内に含まれるゲーム空間GSが、仮想カメラによって撮影されている。より具体的には、メインキャラクタ用の仮想カメラの撮影対象である視錐空間Vsの内部、およびサブキャラクタ用の仮想カメラの撮影対象である視錐空間Vsの内部が、仮想カメラによって撮影されている。そして、この段階では、制御中のメインキャラクタの視錐空間Vsの内部を撮影した映像だけが、メイン画面71に表示される(S11)。たとえば、メインキャラクタの視錐空間Vsの内部に位置するオブジェクトを、視錐空間Vsの第1面S1に投影する処理が、CPU201aにより実行される。そして、第1面S1に投影されたオブジェクトをモニタ206aのメイン画面71に表示する命令が、CPU201aから発行されると、メインキャラクタの視野角内に含まれるゲーム空間GSの映像が、メイン画面71に表示される。
また、メインキャラクタおよびサブキャラクタが、ゲーム空間GSにおいて制御されている間においては、メインキャラクタとサブキャラクタとの相対的な位置関係を示すためのレーダ画面73が、モニタ206に設定される。たとえば、モニタ206の全画面領域より小さな所定の領域、たとえばモニタ206において画像を表示可能な所定の部分領域が、モニタ206の全画面領域の内部における4つの所定の位置座標データに基づいて、レーダ画面73として設定される。すると、ゲーム空間GSにおけるメインキャラクタの位置と3つのサブキャラクタの位置とが、ゲーム空間GSにおけるメインキャラクタの位置を示す位置座標データと、ゲーム空間GSにおける3つのサブキャラクタそれぞれの位置を示す位置座標データとに基づいて、レーダ画面73に表示される。ここでは、各キャラクタのXY平面の位置座標データがCPU7に認識され、この位置座標データに基づいて、各キャラクタの相対位置が、レーダ画面73に表示される(S12)。具体的には、レーダ画面73が、ゲーム空間GSを上方から見た全領域に対応する画面である場合、図6に示すように、メインキャラクタの位置が、レーダ画面73において丸記号で示される。また、各サブキャラクタの位置が、レーダ画面73において、X記号、三角記号、四角記号、さらにゲームの探索目的である宝物80が存在する領域80Rが楕円形状で示される。このため、各プレイヤは、自分が操作するキャラクタを、この領域80Rに向けて移動する。なお、各プレイヤがキャラクタを操作して、キャラクタが領域80Rに到達した場合、キャラクタが宝物80に近づけば近づくほど、宝物80の光度が強くなる。このため、各キャラクタが領域80Rに到達すると、各プレイヤは、メイン画面71に表示される宝物80の光の強さや方向を頼りにして、宝物80を探索する。たとえば、各プレイヤは、空や周辺の地形に向かって光が放射されている場所を手がかりにして、宝物80を探す。
なお、ここでは、レーダ画面73が、ゲーム空間GSを上方から見た全領域に対応する画面である場合の例を示すが、全キャラクタの相対的な位置関係を報知することができれば、レーダ画面73が示す領域の範囲は、どのようにしても良い。たとえば、レーダ画面73が示す領域の範囲は、ゲーム空間GSを上方から見た全領域に代えて、全キャラクタを含む最小の領域であっても良い。さらに、レーダ画面73には、ゲームが行われる地形のポイントのみ、例えば山、川、谷等を簡略的に示しても良い。
続いて、サブキャラクタが宝物80を上記の領域80Rに向けて移動しているときに、サブキャラクタが危機に瀕する事態が発生したか否かが、CPU201aにより判断される(S13)。たとえば、サブキャラクタがモンスターに遭遇したか否かが、CPU201aにより判断される。より具体的には、サブキャラクタの位置座標データおよびモンスターの位置座標データに基づいて、サブキャラクタの視錐空間Vsの内部にモンスターが位置したか否かが、CPU201aにより判断される。なお、Aプレイヤのゲーム装置2aは、サブキャラクタの位置座標データを、1フレーム(ex. 1/60(sec))ごとに、他のゲーム装置2b,2c,2dから受信し、RAM201aに格納している。たとえば、RAM201aに格納されたサブキャラクタの位置座標データが、CPU201aに認識されると、このサブキャラクタの位置座標データに基づいて、上述したように、各サブキャラクタの視錐空間Vsが設定される。すると、モンスターの位置座標データに基づいて、この視錐空間Vsの内部にモンスターが位置したか否かが、CPU201aにより判断される。
そして、サブキャラクタの視錐空間Vsの内部にモンスターが位置した場合(S13でYes)、サブキャラクタの位置座標データとモンスターの位置座標データとを用いて、サブキャラクタとモンスターとの距離を計算する処理が、CPU201aにより実行される。そして、サブキャラクタとモンスターとの距離が、所定の距離未満であるか否かが、CPU201aにより判別される。具体的には、サブキャラクタがモンスターに遭遇し対峙しているか否かが、CPU201aにより判別される(S14)。そして、サブキャラクタとモンスターとの距離が、所定の距離未満であった場合(S14でYes)、サブキャラクタがモンスターに遭遇し対峙しているものと判断される。
なお、サブキャラクタの視錐空間Vsの内部にモンスターが位置していない場合(S13でNo)、すなわちサブキャラクタがモンスターに遭遇していない場合、ステップ10(S10)の処理が、CPU201aにより実行される。また、ここで用いられる所定の距離は、ゲームプログラムにおいて予め規定されており、RAM202aに格納されている。
そして、サブキャラクタがモンスターに遭遇し対峙した場合(S14でYes)、このサブキャラクタの状況を報知するためのサブ画面72が、モニタ206aに設定される(S15)。たとえば、Bキャラクタが操作するキャラクタに対応するサブキャラクタが、モンスターに遭遇し対峙した場合は、図6に示すようなサブ画面72bが、モニタ206aに設定される。同様に、他のサブキャラクタが、モンスターに遭遇し対峙した場合は、図6に示すようなサブ画面72c,72dが、モニタ206aに設定される。ここでは、サブ画面72(72b,72c,72d)を規定するための4つの所定の位置座標データが、RAM202aから読み出され、CPU201aに認識される。すると、サブ画面72が、これら4つの所定の位置座標データに基づいて、モニタ206aに設定される。
なお、サブキャラクタがモンスターに遭遇したものの、モンスターがサブキャラクタから逃げた場合や、サブキャラクタがモンスターから逃げた場合(S13でYes、S14でNo)、ステップ10(S10)の処理が、CPU201aにより実行される
サブ画面72がモニタ206aに設定された場合(S15)、モンスターに遭遇したサブキャラクタの視錐空間Vsの内部を撮影した映像が、画面に表示される(S16)。たとえば、サブキャラクタの視錐空間Vsの内部に位置するオブジェクト(キャラクタを含む)を、視錐空間Vsの第1面S1に投影する処理が、CPU201aにより実行される。そして、第1面S1に投影されたオブジェクトをモニタ206aのサブ画面72に表示する命令が、CPU201aから発行されると、サブキャラクタの視野角内に含まれるゲーム空間GSの映像が、サブ画面72に表示される。このようにして、Bプレイヤ、Cプレイヤ、およびDプレイヤの少なくともいずれか1人のプレイヤの操作対象であるサブキャラクタが、危機に瀕した場合、Aプレイヤのモニタ206aの所定の位置に、サブ画面72(72b,72c,72d)が設定され、このサブ画面に映像が表示される。
サブ画面72は、メイン画面71の内部においてメイン画面71より小さな画面となっている。詳細には、サブ画面72は、モニタ206a,206b,206c,206dの全画面領域より小さな所定の領域(部分領域)に対応している。また、サブ画面72は、図6に示すように、3つのサブキャラクタそれぞれに対して、異なる位置に設定される。このため、RAM202a,202b,202c,202dには、1つのサブキャラクタごとに、4つの所定の位置座標データが用意されている。
このように、サブ画面72がモニタ206aに表示されると、Aプレイヤは、他のプレイヤが操作するキャラクタが、モンスターに遭遇したことを、視認することができる。すると、Aプレイヤは、モンスターに遭遇したキャラクタを手助けするために、コントローラ211を操作することによって、自分の操作対象であるキャラクタを、モンスターに対峙するキャラクタの場所へと、移動させる。このとき、レーダ画面73には、メインキャラクタと3つのサブキャラクタとの相対的な位置関係が示されているので、Aプレイヤは、このレーダ画面73を頼りにして、自分の操作対象であるキャラクタを、モンスターに遭遇したキャラクタの場所へと、移動する。
ここでは、Aプレイヤのゲーム装置2aを例として、サブキャラクタが危機に瀕するイベントが発生した場合の処理、たとえばサブキャラクタがモンスターに遭遇した場合の処理を、示した。しかしながら、他のゲーム装置2b,2c,2dにおいても、サブキャラクタが危機に瀕するイベントが発生した場合には、上記と同じ処理が、各ゲーム装置2b,2c,2dのCPU201a,201b,201c,201dにより実行される。
続いて、サブキャラクタが、モンスターに遭遇しこのモンスターと対峙した後には、このサブキャラクタがモンスターを退治したか否かが、CPU201aにより、常に監視されている(S17)。たとえば、サブキャラクタがモンスターを退治した場合(S17でYes)、フラグデータに所定の値たとえば数値「1」が割り当てられる。なお、フラグデータの初期値、たとえばサブキャラクタがモンスターに対峙中である場合のフラグデータの値には、数値「0」が設定されている。
なお、ここでは、動作指示用のデータを、複数のゲーム装置2a,2b,2c,2dの間で、同期しているので、各キャラクタは、各ゲーム装置2a,2b,2c,2dにおいて、制御可能である。また、モンスター用の自動制御プログラムは、各ゲーム装置2a,2b,2c,2dにおいて同じプログラムであるので、各キャラクタの動作が同じであれば、各キャラクタの動作に対応するモンスターの応答も同じである。すなわち、ステップ17(S7)の処理では、各ゲーム装置2a,2b,2c,2dにおいて同期処理をする必要はない。
続いて、続いて、フラグデータがCPU201aに参照され、このフラグデータの値が数値「1」であるとCPU7により認識された場合、サブキャラクタがモンスターを退治したものと判断される(S17でYes)。すると、このサブキャラクタの識別データが、CPU201に認識される。すると、このサブキャラクタの識別データに対応するサブ画面72の映像を、サブ画面72から消去する命令が、CPU201から発行される。すると、このサブ画面72の設定を、モニタ206から解除する命令が、CPU201から発行される。このようにして、モンスターに遭遇したサブキャラクタのサブ画面72が、消去される(S18)。すなわち、サブキャラクタがモンスターを退治した場合には、サブ画面72がモニタ206aから消去される。この場合、Aプレイヤは、自分が操作するキャラクタ(メインキャラクタ)を、サブキャラクタの手伝いに向かわせる必要がなくなったということを、サブ画面の消失によって、把握することができる。
一方で、サブキャラクタがモンスターを退治していない場合(S17でNo)、すなわちサブキャラクタとモンスターとの対峙が継続している場合、サブキャラクタとモンスターとの距離が、所定の距離以上になったか否かが、CPU201aにより、常に監視されている(S19)。そして、サブキャラクタとモンスターとの距離が、所定の距離以上になった場合(S19でNo)、サブキャラクタとモンスターとの対峙が終了したものと判断される。この場合は、サブキャラクタがモンスターから逃げた場合やモンスターがサブキャラクタから逃げた場合等に、対応する。この場合、このサブキャラクタの識別データが、CPU201に認識される。すると、このサブキャラクタの識別データに対応するサブ画面72の映像を、サブ画面72から消去する命令が、CPU201から発行される。すると、このサブ画面72の設定を、モニタ206から解除する命令が、CPU201から発行される。このようにして、モンスターに遭遇したサブキャラクタのサブ画面72が、消去される(S18)。すなわち、サブキャラクタがモンスターから逃げた場合やモンスターがサブキャラクタから逃げた場合等には、サブ画面72がモニタ206aから消去される。この場合も、Aプレイヤは、自分が操作するキャラクタ(メインキャラクタ)を、サブキャラクタの手伝いに向かわせる必要がなくなったということを、サブ画面の消失によって、把握することができる。
続いて、サブキャラクタとモンスターとの対峙が継続している場合(S19でYes)、サブキャラクタが、メインキャラクタの視野角内のゲーム空間GSの内部に、位置するか否かが、CPU201aにより判断される(S20)。たとえば、モンスターに遭遇したサブキャラクタが、メインキャラクタの視野角内のゲーム空間GSの内部に、位置するか否かが、CPU201により判断される。より具体的には、メインキャラクタの位置座標データ、およびモンスターに遭遇したサブキャラクタの位置座標データに基づいて、このサブキャラクタが、メインキャラクタの視錐空間Vsの内部に含まれているか否かが、CPU201により判断される。なお、Aプレイヤのゲーム装置2aは、メインキャラクタの位置座標データおよびサブキャラクタの位置座標データを、1フレーム(ex. 1/60(sec))ごとに、RAM201aに格納している。たとえば、メインキャラクタの位置座標データが、CPU201aに認識されると、このメインキャラクタの位置座標データに基づいて、上述したように、メインキャラクタの視錐空間Vsが設定される。すると、モンスターに遭遇したサブキャラクタの位置座標データに基づいて、この視錐空間Vsの内部にモンスターが位置したか否かが、CPU201aにより判断される。
そして、モンスターに遭遇したサブキャラクタが、メインキャラクタの視野角内のゲーム空間GSの内部に位置した場合(S20でYes)、たとえば、モンスターに遭遇したサブキャラクタの位置座標データが示す位置が、メインキャラクタの視錐空間Vsの内部に含まれた場合、このサブキャラクタの識別データが、CPU201に認識される。すると、このサブキャラクタの識別データに対応するサブ画面72が、CPU7に認識される。すると、このサブ画面72に表示されている映像を、強調表示する命令が、CPU201から発行される。そして、このサブ画面72に表示されている映像を、サブ画面72から消去する命令が、CPU201から発行される。すると、このサブ画面72の設定を、モニタ206から解除する命令が、CPU201から発行される。このようにして、複数のサブ画面72の中から、イベントに関係したサブキャラクタのサブ画面72のみが、強調表示され消去される(S21、S22)。
たとえば、Bプレイヤが操作するキャラクタに対応するサブキャラクタが、モンスターに遭遇し、このサブキャラクタが、メインキャラクタの視野角に入った場合、このサブキャラクタが、メイン画面に表示される。このとき、サブ画面72bに表示されている映像が、強調され、このサブ画面72bに表示されている映像が消去される。他のサブキャラクタについても、同じ条件が成立すれば、サブ画面72c,72dが、同様に、強調表示された後に、モニタ206aから消去される。
このようにして、Aプレイヤは、他のプレイヤ(Bプレイヤ、Cプレイヤ、Dプレイヤ)の状況を、サブ画面72(72b,72c,72d)のオンオフによって把握することができる。また、Aプレイヤは、レーダ画面73を参照することによって、メインキャラクタ(Aプレイヤが操作するキャラクタ)を、サブキャラクタ(他のプレイヤが操作するキャラクタ)の場所へと、容易に移動させることができる。
サブキャラクタとモンスターとの対峙が継続している場合(S19でYes)、たとえばサブキャラクタがモンスターと戦っているような場合は、この状況がサブ画面72に継続して表示される。また、モンスターに遭遇したサブキャラクタが、メインキャラクタの視野角内のゲーム空間GSの内部に位置していない場合(S20でNo)、たとえば、モンスターに遭遇したサブキャラクタの位置座標データが示す位置が、メインキャラクタの視錐空間Vsの内部に含まれていない場合、サブキャラクタの仮想カメラに映るモンスターが、サブ画面72に継続して表示される。
なお、ここでは詳細な説明を行っていないが、たとえば、サブキャラクタがモンスターに倒された場合、後述するステップ25(S25)の処理が、CPU201により実行される。
続いて、メインキャラクタおよび3つのサブキャラクタが、CPU201aにより制御されている状態において、複数のキャラクタ(メインキャラクタおよび3つのサブキャラクタ)の中の少なくともいずれか1つのキャラクタが、アドベンチャーゲームの最終目的である宝物80を発見したか否かが、CPU7により判断される(S23)。たとえば、キャラクタの位置座標データと宝物80の位置座標データとに基づいて、複数のキャラクタそれぞれと宝物80との距離を計算する処理が、CPU201aにより実行される。そして、各キャラクタと宝物80との距離が、所定の距離未満であるか否かが、CPU201aにより判断される。
そして、キャラクタと宝物80との距離が、所定の距離未満である場合(S23でYes)、すなわちキャラクタ宝物80を発見した場合、宝物80との距離が所定の距離未満である位置に存在するキャラクタが、宝物80を発見したキャラクタとして、CPU201aに認識される。具体的には、宝物80との距離が所定の距離未満である位置に存在するキャラクタの識別データが、CPU201aに認識される。これにより、宝物80を発見したキャラクタが、ゲームにおいて特定される。
続いて、本アドベンチャーゲームでは、各キャラクタが個別に宝物を探しに行くが、全員が仲間であり、最終地点たとえば宝物80の場所に、全員が集合することで、ゲームが完結するようになっている。このため、あるキャラクタが宝物80を発見すると、このキャラクタを操作するプレイヤを除いた他のプレイヤのモニタ206に、宝物80の発見を報知する画像が表示される(図示しない)。すると、この画像を見たプレイヤは、コントローラ211を操作することによって、自分が操作するキャラクタを、宝物80の場所へと、移動する。
このように、宝物80が発見された後に、全てのキャラクタが宝物80場所へと移動したときには、宝物80の捜索を開始した時点から、全てのキャラクタが宝物80の場所に到着した時点までの時間(探索時間)が、各CPU201により計算され認識される。すると、この時間が、各プレイヤのモニタ206のメイン画面71に表示される(S24)。ここで、各キャラクタが宝物80の場所に到着したか否かの判断は、ステップ23(S23)における判断と同様にして、行われる。
なお、各キャラクタと宝物80との距離が、所定の距離以上である場合(S23でNo)、各キャラクタが宝物80を発見できていない状態であるので、ステップ10(S10)の処理が、CPU206aにより実行される。
続いて、再度ゲームを実行するか否かを問う画面が、Aプレイヤのモニタ206aに表示される(図示しない)。ここで、再度ゲームを実行する項目を、Aプレイヤが選択すると(S25でYes)、ステップ3(S3)の処理が、CPU201aにより再び実行される。なお、ここで、ゲームを終了する項目を、Aプレイヤが選択すると(S25でNo)、ゲーム結果を保存する処理が、CPU206aにより実行される(S26)。
なお、上記の実施形態では、Bプレイヤ、Cプレイヤ、およびDプレイヤそれぞれのゲーム装置2b,2c,2dにおいて実行される処理については、詳細に説明を行ってはいない。しかしながら、これらゲーム装置2b,2c,2dでは、図8に示したように、Aプレイヤのゲーム装置2aと同じ処理が、実行される。なお、これらゲーム装置2b,2c,2dにおける処理は、図8においては、ステップ記号にダッシュ記号(’)を付している。
〔他の実施形態〕
(a)前記実施形態では、ネットワークプレイモードにおいて、状況把握システムが機能する場合の例が示されているが、本システムは、1人プレイモードにおいても使用することができる。この場合、メインキャラクタは、プレイヤによるコントローラ211の操作により、動作する。また、サブキャラクタは、自動制御プログラムに基づいてCPU201から発行される命令に基づいて、動作する。
(b)前記実施形態では、キャラクタが危機に瀕したか否かの判断が、各ゲーム装置2a,2b,2c,2dにおいて行われる場合の例を示したが、この判断は、前記実施形態に限定されず、次のようにしても良い。たとえば、あるプレイヤが操作するキャラクタが危機に瀕した場合、この事実を報知するための報知データを、このプレイヤのゲーム装置2から、他のプレイヤのゲーム装置2へと、送信する。すると、この報知データを受信した他のプレイヤのゲーム装置2において、上記のあるプレイヤが操作するキャラクタが危機に瀕したという事項を、認識することができる。すると、この報知データに基づいて、サブ画面がモニタ206に設定され、このサブ画面に映像が表示される。
(c)前記実施形態では、ゲームプログラムを適用しうるコンピュータの一例としての開発用のビデオゲーム装置を用いた場合の例を示したが、コンピュータは、前記実施形態に限定されず、モニタが別体に構成されたゲーム装置、モニタが一体に構成されたゲーム装置、ゲームプログラムを実行することによってゲーム装置として機能するパーソナルコンピュータやワークステーションなどにも同様に適用することができる。
(d)本発明には、前述したようなゲームを実行するプログラムおよびこのプログラムを記録したコンピュータ読み取り可能な記録媒体も含まれる。この記録媒体としては、カートリッジ以外に、たとえば、コンピュータ読み取り可能なフレキシブルディスク、半導体メモリ、CD−ROM、DVD、MO、ROMカセット、その他のものが挙げられる。