図1を参照して、この発明の一実施例である通信ゲームシステム1は、情報処理装置の一例であるゲーム装置10を含む。図1からも分かるように、通信ゲームシステム1は、複数のゲーム装置10によって構成される。たとえば、ゲーム装置10は近距離無線通信により他のゲーム装置10と通信可能である。
図1に示す複数のゲーム装置10はそれぞれ異なるユーザないしプレイヤ(以下、単に「プレイヤ」という。)によって所持される。つまり、ゲーム装置10は、携帯型(可搬型)のゲーム装置である。図1に示す通信ゲームシステム1では、それぞれ、3台のゲーム装置10を示すが、2台以上であれば、4台以上であってもよい。これらのことは、図2に示す通信ゲームシステム3においても同じである。
図2に示すように、他の例の通信ゲームシステム3は、サーバ5を含み、このサーバ5に、インターネット7のようなネットワークを介して複数のゲーム装置10が通信可能に接続される。つまり、ゲーム装置10は、無線でデータ通信することにより、無線LANに接続可能であり、アクセスポイント(図示せず)およびインターネット7を介してサーバ5や他のゲーム装置10と通信可能である。
図3は、図1および図2に示したゲーム装置10の電気的な構成の一例を示すブロック図である。図3に示すように、ゲーム装置10は、CPU20を含み、このCPU20には、メインメモリ22、メモリ制御回路24、インターネット通信モジュール28、ローカル通信モジュール30、入力装置32、第1GPU(Graphics Processing Unit)34、LCDコントローラ38、および第2GPU42が接続される。また、メモリ制御回路24には、保存用データメモリ26が接続される。さらに、第1GPU34とLCDコントローラ38との間には、第1VRAM(Video RAM)36が接続され、第2GPU42とLCDコントローラ38との間には、第2VRAM40が接続される。さらにまた、LCDコントローラ38には、第1LCD44および第2LCD46が接続される。
CPU20は、所定のプログラム(アプリケーションプログラム)を実行するための情報処理手段である。この実施例では、所定のプログラムは、ゲーム装置10内のメモリ(たとえば保存用データメモリ26)や外部のメモリに記憶されており、CPU20は、当該所定のプログラムを実行することによって、後述する情報処理(ゲーム全体処理)を実行する。
なお、CPU20によって実行されるプログラムは、予めメモリに記憶されていてもよいし、ゲーム装置10に装着可能なメモリカードから取得してもよいし、他の機器と通信することによって当該他の機器から取得(ダウンロード)してもよい。また、所定のプログラムを記憶する情報記憶媒体としては、保存用データメモリ26のような不揮発性の記憶媒体に限らず、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体でもよい。
メインメモリ22は、CPU20のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ22は、上記情報処理に用いられる各種データを記憶(一時記憶)したり、外部(メモリカードまたは他の機器等)から取得されるプログラムを記憶したりする。この実施例では、メインメモリ22として、たとえばPSRAM(Pseudo−SRAM)を用いる。
保存用データメモリ26は、CPU20によって実行されるプログラムやゲームデータのようなデータ等を記憶(保存)するための記憶手段である。この保存用データメモリ26は、不揮発性の記憶媒体によって構成されており、たとえば、NAND型フラッシュメモリを用いることができる。メモリ制御回路24は、CPU20の指示に従って、保存用データメモリ26に対するデータの読み出しおよび書き込みを制御する。
インターネット通信モジュール28は、たとえばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。したがって、上述したように、CPU20は、インターネット通信モジュール28を用いて、アクセスポイントおよびインターネット7を介して他の機器(コンピュータや他のゲーム装置など)との間でデータを送受信する。
ローカル通信モジュール30は、近距離無線通信を行う機能を有する。具体的には、ローカル通信モジュール30は、所定の通信方式(たとえば、赤外線方式)により、他の機器(他のゲーム装置など)との間で赤外線信号の送受信を行う機能、および所定の通信プロトコル(たとえば、マルチリンクプロトコル)に従って、同種のゲーム装置との間で無線通信を行う機能を有する。したがって、たとえば、CPU20は、ローカル通信モジュール30を用いて、同種の他のゲーム装置との間でデータを直接送受信することもできる。
入力装置32は、押しボタン、十字ボタン、アナログスティック、タッチパネルなどの様々な操作手段を含む。各ボタンに対する入力状況(押下されたか否かなど)を示す操作データやタッチパネルからの信号に基づく所定の形式のタッチ位置データが出力される。CPU20は、入力装置32からの操作データやタッチ位置データを取得し、取得した操作データやタッチ位置データに応じた処理を実行する。詳細な説明は省略するが、この実施例では、タッチパネルは、第2LCD46上に設けられる。
第1GPU34は、CPU20からの指示に応じて、メインメモリ22に記憶されているデータ(表示画像を生成するためのデータ)に基づいて第1の表示画像を生成し、第1VRAM36に描画する。第2GPU42は、同様にCPU20からの指示に応じて第2の表示画像を生成し、第2VRAM40に描画する。
LCDコントローラ38は、第1VRAM36に描画された第1の表示画像を第1LCD44に出力し、第2VRAM40に描画された第2の表示画像を第2LCD46に出力する。
なお、この実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。また、ゲーム装置10は、任意の解像度の表示装置を利用することができる。さらに、LCDコントローラ38は、第1の表示画像を第2LCD46に出力し、第2の表示画像を第1LCD44に出力してもよい。
また、図示は省略するが、ゲームに必要な音(音楽)を出力するためのスピーカも設けられる。
たとえば、このようなゲーム装置10では、プレイヤがこの実施例のゲーム(アプリケーション)を開始すると、通常、シングルプレイのゲーム処理が開始(実行)される。ただし、シングルプレイモードとは、ゲーム装置10のプレイヤが単独で仮想のゲーム世界に存在する1つのプレイヤキャラクタを操作してプレイする1人用のゲームを処理するモードを意味する。
また、シングルプレイモードのゲーム処理では、同じゲームをプレイするプレイヤが対戦相手の候補として探索され、探索された対戦相手の候補に対戦プレイを申し込んだり、対戦相手の候補から対戦プレイを申し込まれたりすることができる。対戦相手の候補に対戦プレイすることを承諾されたり、対戦相手の候補に対戦プレイすることを承諾したりすることにより、対戦プレイすることについて合意に達すると、対戦プレイすることが決定される。すると、対戦プレイすることが決定された複数のゲーム装置10の間で接続が確立され、対戦プレイモードのゲーム処理が実行される。ただし、対戦プレイモードとは、複数のゲーム装置10のプレイヤ間で、仮想のゲーム世界に存在するそれぞれのプレイヤキャラクタを操作してプレイ(対戦プレイ)する複数人用のゲームを処理するモードを意味する。
この実施例では、シングルプレイモードのゲーム処理を実行することにより、第1LCD44に、図4(A)に示すようなゲーム画面100が表示される。ゲーム画面100には、背景としてゲーム世界の画像が表示され、そのゲーム世界の画像上に、プレイヤキャラクタ102およびこのプレイヤキャラクタ102が所有するモンスターキャラクタ104が表示される。
シングルプレイモードでは、プレイヤの操作に従って、プレイヤキャラクタ102は、仮想空間に構築されたゲーム世界を移動したり、ゲーム世界に存在する野生のモンスターキャラクタを捕獲したり、捕獲した(所有する)モンスターキャラクタ104をノンプレイヤキャラクタ(図示せず)が所有するモンスターキャラクタや野生のモンスターキャラクタと戦わせたりする。また、プレイヤキャラクタ102は、プレイヤの操作に従って、所定のアイテム(図示せず)を取得したり、使用したりする。
また、シングルプレイモードでは、図4(B)に示すように、対戦プレイモードのゲーム処理を実行する場合の対戦相手を選択等するためのリスト画面150が第2LCD46に表示される。このリスト画面150には、対戦相手の候補が表示される。ただし、リスト画面150は、シングルプレイモードのゲーム処理の実行中に常に表示されている必要は無く、プレイヤが表示/非表示を選択してもよい。また、他のゲーム装置10のプレイヤと対戦プレイできない状態においては、リスト画面150は表示されない。たとえば、対戦プレイできない状態とは、通信不能な状態やシングルプレイモードのゲーム処理の都合上、対戦プレイの申し込みをできない状態などを意味する。つまり、リスト画面150は、他のゲーム装置10のプレイヤに対戦プレイを申し込むことができる場合に表示される。
図4(B)に示すリスト画面150には、左上部にボタン画像152が表示され、右上部にボタン画像154が表示される。このボタン画像152とボタン画像154の間には、アイコン156およびアイコン158が表示される。また、ボタン画像152、154およびアイコン156、158の下側には、表示領域160、162、164が設けられる。表示領域160には、友達として登録されたプレイヤが使用するゲームアバターの顔画像を付したアイコン170a、170bが表示される。また、表示領域162には、知り合いと判断されたプレイヤが使用するゲームアバターの顔画像を付したアイコン172a、172b、172cが表示される。さらに、表示領域164には、通りすがりと判断されたプレイヤが使用するゲームアバターの顔画像を付したアイコン174a、174b、174c、174d、174e、174fが表示される。
したがって、図4(B)に示すようなリスト画面150が表示されている場合には、友達のプレイヤ、知り合いのプレイヤおよび通りすがりのプレイヤのいずれかを対戦相手として選択可能である。
また、図4(B)に示すように、リスト画面150では、友達のプレイヤ、知り合いのプレイヤおよび通りすがりのプレイヤが使用するゲームアバターの顔画像を付したアイコンを、友達、知り合いおよび通りすがりに分けて表示するので、このリスト画面150を見たプレイヤはその分類を識別可能である。
ここで、友達のプレイヤとは、お互いもしくは一方的に、このゲームのプレイ中以外においても、通信することを許可(登録)している他のプレイヤを意味する。
友達のプレイヤとして登録されたプレイヤについての情報(プレイヤデータ)は、たとえば、ゲーム装置10の保存用データメモリ26に記憶される。このように、友達として登録されたプレイヤについてのプレイヤデータをゲーム装置10の保存用データメモリ26に記憶するので、このプレイヤデータを記憶するためのサーバや外部メモリを用意する必要がなく、その手間やコスト(設置コストや管理コスト)を削減することができる。
ここで、友達のプレイヤの登録方法の例について簡単に説明する。ただし、ここで説明する登録方法は、ゲーム装置10に予め備えられる機能(本体機能)によって友達のプレイヤを登録する方法である。
たとえば、近くに居る他のプレイヤを友達のプレイヤとして登録する場合には、ローカル通信モジュール30を用いた近距離無線通信により、プレイヤは自身のゲーム装置10を用いて不特定の他のゲーム装置10を探索し、探索した他のゲーム装置10のプレイヤから所望のプレイヤを選択する。すると、ゲーム装置10の保存用データメモリ26に、選択されたプレイヤについての情報(後述する「プレイヤ情報」)を記憶(登録)することが、当該他のゲーム装置10に通知される。このような処理がお互いのプレイヤが所持するゲーム装置10で行われると、それぞれのゲーム装置10において、他方のゲーム装置10のプレイヤについてのプレイヤ情報が保存用データメモリ26に記憶される。
また、たとえば、近くに居ない他のプレイヤを友達のプレイヤとして登録する場合には、一方のプレイヤが、自身が所持するゲーム装置10(説明の都合上、「ゲーム装置A」という。)を用いて、他方のプレイヤのプレイヤ情報を登録する。
このとき、その他方のプレイヤが所持するゲーム装置10(説明の都合上、「ゲーム装置B」という。)に、ゲーム装置Aのプレイヤについてのプレイヤ情報を登録していない場合には、ゲーム装置Aにおいて、ゲーム装置Bのプレイヤについてのプレイヤ情報が仮に登録(仮登録)される。そして、ゲーム装置Aは、無線LANによりインターネット接続し、ゲーム装置Bのプレイヤについてのプレイヤ情報を仮登録した旨を当該ゲーム装置Bに通知する。その後、ゲーム装置Aでは、ゲーム装置Bから当該ゲーム装置Aのプレイヤについてのプレイヤ情報を登録したことの通知を受けたときに、当該ゲーム装置Bのプレイヤについてのプレイヤ情報が実際に登録(本登録)される。
一方、ゲーム装置Aにゲーム装置Bのプレイヤについてのプレイヤ情報が登録されたときに、ゲーム装置Bにゲーム装置Aのプレイヤについてのプレイヤ情報が既に登録され、そのことが当該ゲーム装置Aに通知されている場合には、当該ゲーム装置Aではゲーム装置Bのプレイヤについてのプレイヤ情報がそのまま本登録される。
なお、友達のプレイヤ登録は必ずしもプレイヤ双方の同意に基づく必要はなく、一方のプレイヤの意思に基づいて一方的に登録されてもよい。
また、知り合いのプレイヤとは、友達のプレイヤとして登録されていないが、過去に一度でも対戦プレイを行ったことがある他のプレイヤを意味する。また、各プレイヤは、ゲーム装置10を用いて他のゲーム装置10と通信することにより、当該他のゲーム装置10を所持するプレイヤとの間で、ゲーム世界におけるプレイヤキャラクタ102が所有しているモンスターキャラクタ104を交換(送受信)することができ、過去に一度でもモンスターキャラクタ104の交換を行ったことがある他のプレイヤも知り合いのプレイヤと判断される。
知り合いのプレイヤと判断されたプレイヤについてのプレイヤデータは、たとえば、当該ゲームのゲームデータとともに、セーブデータとして、ゲーム装置10の保存用データメモリ26に記憶される。図示は省略するが、セーブデータは、ゲーム装置10に着脱可能に設けられたメモリカード(たとえば、SDカード)に記憶されてもよい。
さらに、通りすがりのプレイヤとは、友達のプレイヤとして登録されておらず、しかも知り合いのプレイヤと判断されていないプレイヤであって、シングルプレイモードにおいて少なくとも一時的にこのゲーム装置10と通信可能な状態になったと判断された他のゲーム装置10を所持するプレイヤである。具体的には、シングルプレイモードにおいてこのゲーム装置10で受信された情報通知の信号(後述する)を送信した他のゲーム装置10を所持するプレイヤである。通りすがりのプレイヤとの間では、上述したように、この実施例のゲームを実行している場合に、合意の下に、対戦ゲームをプレイしたり、ゲームデータを交換したりできる。ただし、一度に交換できるのは、1つのキャラクタについてのデータである。
たとえば、通りすがりのプレイヤと判断されたプレイヤについてのプレイヤデータは、ゲームを終了したときに消去される。ただし、後述するように、ゲーム中であっても、通りすがりのプレイヤの数が所定数を超える場合には、最も古いプレイヤについてのプレイヤデータから順に上書き(消去)される。
この実施例では、ゲーム装置10は、友達のプレイヤとして登録されたゲーム装置10、知り合いのプレイヤとして判断されたゲーム装置10、および通りすがりのプレイヤとして判断されたゲーム装置10との間で実行可能な機能がそれぞれ異なる。たとえば、通りすがり、知り合いおよび友達の順で親密度ないし信頼度が高くなると仮定し、親密度ないし信頼度が高くなるにつれて、同一の機能が高機能化されたり、他に無い機能が使用可能にされたりする。
具体的には、共通する機能として、ゲーム装置10は、友達、知り合いおよび通りすがりのプレイヤのゲーム装置10との間で、キャラクタ(キャラクタデータ)の送受信(交換)が可能である。
たとえば、通りすがりのプレイヤのゲーム装置10との間では、この実施例のゲームのプレイ中に、一度に1つのキャラクタを送受信(交換)することができる。ただし、知り合いのプレイヤのゲーム装置10との間では、一度に複数のキャラクタを送受信(交換)することができる。
また、知り合いのプレイヤのゲーム装置10との間では、対戦プレイした後に、当該知り合いのプレイヤを友達のプレイヤとして登録するかどうかを選択することができる。ただし、知り合いのプレイヤのゲーム装置10との間では、この実施例のゲーム(アプリケーション)以外でゲームデータやメッセージを送受信することはできない。
友達のプレイヤのゲーム装置10との間では、この実施例のゲーム(アプリケーション)以外のアプリケーションを実行する場合にも、すなわち、アプリケーションの種類に拘わらず、ゲームデータを交換(送受信)したり、メッセージを送受信したりすることができる。つまり、友達のプレイヤについてのプレイヤ情報(プレイヤデータ)は、アプリケーションの種類に拘わらず利用可能である。
また、この実施例では、リスト画面150では、友達、知り合いおよび通りすがりのプレイヤは、それぞれ、所定数(たとえば、100)表示することができる。所定数を超える場合には、最も早く友達のプレイヤとして登録されたり、最も早く知り合いや通りすがりのプレイヤとして判断されたりしたプレイヤ(最も古いプレイヤ)についての情報(プレイヤデータ)から順に上書きされる。図示は省略するが、表示領域160、162、164は、友達、知り合いおよび通りすがりのプレイヤが使用するゲームアバターの顔画像を付したアイコン(170a、170b、172a−172c、174a−174fなど)を表示(描画)する欄の一部を表示する。
この実施例では、リスト画面150に、友達のプレイヤ、知り合いのプレイヤ、および通りすがりのプレイヤが使用するゲームアバターの顔画像を付したアイコンを表示するようにしてある。したがって、リスト画面150は、友達のプレイヤ、知り合いのプレイヤ、および通りすがりのプレイヤについての情報を表示していると言える。ただし、ゲームアバターの顔画像の情報(後述する「アバター情報」に含まれる。)は、ゲーム装置10に登録(記憶)されたプレイヤ情報に含まれるため、リスト画面150は、友達のプレイヤ、知り合いのプレイヤ、および通りすがりのプレイヤが所持ないし使用するゲーム装置10の情報を表示しているとも言える。
また、上述したボタン画像152およびボタン画像154は、リスト画面150をスクロールさせるための操作ボタンを示す。たとえば、入力装置32に含まれるLボタンまたはRボタンを押すことにより、リスト画面150が左または右にスクロールされる。ただし、タッチパネル上でスライド操作を行うことにより、リスト画面150をスクロールさせることもできる。したがって、リスト画面150をスクロールさせることにより、現在表示されていないアイコンを表示することもできる。
アイコン156およびアイコン158は、通信方法(通信手段)を選択するために設けられる。この実施例では、アイコン156がオン(タッチ)された場合には、ローカル通信モジュール30を用いた近距離無線通信(以下、「ローカル通信」ということがある)が選択される。一方、アイコン158がオンされた場合には、インターネット通信モジュール28を用いた無線通信(以下、「インターネット通信」ということがある)が選択される。
詳細な説明は省略するが、デフォルト設定では、ローカル通信が選択されている。また、インターネット通信が選択された場合であっても、インターネット7に接続出来ない場合またはインターネット7への接続が切断された場合には、自動的にローカル通信に切り替えられる。
シングルプレイモードや対戦プレイモードのゲームの実行中には、各ゲーム装置10は、状態通知の信号を、他のゲーム装置10に送信したり、サーバ5に送信したりする。また、各ゲーム装置10は、他のゲーム装置10から送信される状態通知の信号を受信したり、サーバ5から送信される他のゲーム装置10についてのゲームの状況についてのデータを受信したりする。以下、具体的に説明する。
ローカル通信が選択されている場合には、各ゲーム装置10は、シングルプレイモードまたは対戦プレイモードのゲームの実行中に、状態通知のビーコン信号を、ローカル通信モジュール30を用いて、不特定の他のゲーム装置10に向けて繰り返し送信(ブロードキャスト)する。また、各ゲーム装置10は、不特定の他のゲーム装置10から送信された状態通知のビーコン信号を、ローカル通信モジュール30を用いて繰り返し受信する。
ビーコン信号の送信の方式は、アクティブスキャン方式であってもよいし、パッシブスキャン方式であってもよい。具体的には、各ゲーム装置10がビーコン信号を所定の周期で宛先を特定せずに送信(ブロードキャスト)してもよいし、各ゲーム装置10から所定の周期で宛先を指定せずにプローブリクエストのパケットを送信し、このプローブリクエストのパケットを受信した他のゲーム装置10からビーコン信号を送信してもよい(プローブレスポンス)。ただし、この実施例において送受信されるビーコン信号は近距離無線信号である。たとえば、近距離無線信号は、赤外線信号やBluetooth(登録商標)による電波信号である。
ここで、状態通知のビーコン信号は、種類ID、装置ID、ゲームID、プレイヤ情報、ゲーム状況などの情報を含む。
種類IDは、ビーコン信号の種類を識別するための識別情報である。この実施例では、状態通知のビーコン信号の他に後述する3種類のビーコン信号がある。その種類が種類IDによって識別されるのである。装置IDは、ゲーム装置10を識別するための識別情報である。ゲームIDは、ゲームの種類を識別するための識別情報である。
プレイヤ情報は、プレイヤID、プレイヤの名称、プレイヤのプロフィール情報、アバター情報などを含む。プレイヤIDは、ゲーム装置10の所有者(プレイヤ)の識別情報であり、このプレイヤIDを含むビーコン信号の送信元を示す。プレイヤの名称は、プレイヤがゲーム装置10に登録した名称である。プロフィール情報は、プレイヤがゲーム装置10に登録した自身のプロフィール(性別、居住地、趣味など)の情報である。アバター情報は、プレイヤが使用するゲームアバターの顔(頭髪を含む。)のパーツ、体のパーツ、服装(帽子、眼鏡、装飾品なども含む。)についての設定情報(パラメータ)である。
ゲーム状況は、現在実行中のゲーム処理がシングルプレイモードであるか対戦プレイモードであるかを示す情報である。
また、インターネット通信が選択されている場合には、この実施例のゲームを実行中のゲーム装置10は、状態通知のデータをサーバ5に送信する。サーバ5は、各ゲーム装置10のゲーム状況および通信状況(以下、これらを「現在の状況」ということがある)を管理する。
ここで、通信状況は、ゲーム装置10と通信可能かどうかを示す情報である。この実施例では、シングルプレイモードのゲーム装置10とは通信可能であり、対戦プレイモードのゲーム装置10とは通信不能である。また、通信不能の場合としては、ゲーム装置10がオフラインである場合、インターネット通信おいてアクセスポイントにアクセスできない(インターネット7に接続できない)場合がある。
なお、ローカル通信においては、オフラインの場合やビーコン信号の届く範囲に存在しない場合に、ゲーム装置10は通信不能である。
インターネット通信が選択されている場合には、各ゲーム装置10は、ゲーム状況が変化するときに、状態通知のデータをサーバ5に送信する。ここで、ゲーム状況が変化するときとは、シングルプレイモードから対戦プレイモードに変化するとき、そして、対戦プレイモードからシングルプレイモードに変化するときを意味する。ただし、状態通知のデータは、上述した状態通知のビーコン信号と同様の内容であるが、種類IDは、ゲーム装置10からサーバ5に送信されるデータの種類を示す。また、インターネット通信が選択されている場合には、ゲーム装置10は、ゲームを開始するときにそのことをサーバ5に通知し、また、ゲームを終了するときにそのことをサーバ5に通知する。これによって、サーバ5は、ゲーム装置10がオンラインになったことやオフラインになったことを知ることができる。
一方、サーバ5は、自身に接続されるゲーム装置10の各々に、自身に接続される他のゲーム装置10の各々の現在の状況を通知する。詳細な説明は省略するが、サーバ5は、ゲームの種類毎にゲーム装置10のプレイヤおよびその現在の状況を管理する。このとき、状態通知のデータに含まれるゲームIDに基づいて同じ種類のゲームをプレイしているゲーム装置10を判別する。そして、各ゲーム装置10には、同じ種類のゲームをプレイしている他のゲーム装置10の現在の状況が通知される。ただし、他のゲーム装置10の現在の状況には、当該他のゲーム装置10のプレイヤ情報が付加されている。
ここで、リスト画面150を更新(生成)する方法について説明する。ローカル通信が選択されている場合には、たとえば、ゲーム装置10は、他のゲーム装置10からの状態通知のビーコン信号を受信すると、この状態通知のビーコン信号に含まれるゲームIDがこの実施例のゲームのゲームIDと一致するかどうかを判断する。ゲームIDが一致しない場合には、受信された状態通知のビーコン信号は消去(破棄)される。
ゲームIDが一致する場合には、プレイヤIDが示すプレイヤが友達として登録されたり、知り合いと判断されたりしたプレイヤであるかどうかが判断される。プレイヤIDが示すプレイヤが友達として登録されたり、知り合いと判断されたりしたプレイヤである場合には、ゲーム状況に応じてアイコンの表示態様が変化される。ゲーム状況がシングルプレイモードを示す場合には、通常の色および明るさでアイコンが表示され、ゲーム状況が対戦プレイモードである場合には、アイコンがグレーアウトで表示される。これは、現在、対戦プレイ中であり、他の対戦プレイを実行することができないためである。図4(B)では、顔画像に斜線を付すことにより、グレーアウトで表示されていることを示してある。ただし、通常とは異なる表示態様とすればよく、アイコンの色、形状または大きさあるいはそれらのいずれか2つ以上を変化させるようにしてもよい。また、アイコンを非表示にしてもよい。
また、友達や知り合いのプレイヤが所持するゲーム装置10からの状態通知のビーコン信号を所定時間(たとえば、180秒)受信しない場合には、当該ゲーム装置10はオフラインである、またはビーコン信号の届く範囲に存在しない(近距離に居ない)ため、対戦プレイすることができない。したがって、かかる場合にも、アイコンがグレーアウトで表示される。
ただし、その後に、ゲーム装置10が、シングルプレイモードのゲーム処理を実行することにより、オンラインとなり、ビーコン信号が届く範囲に存在する(近距離に居る)場合には、対応するアイコンは通常の色および明るさで表示される。つまり、現在の状況をアイコンの表示態様の変化によってリアルタイムに知ることができる。
また、この実施例では、通信不能になった他のゲーム装置10を所持するプレイヤについては、最後に受信した情報(状態通知のビーコン信号の情報)を保持しておくことにより、対応するアイコンがグレーアウトで表示されている場合であっても、当該プレイヤの情報(プロフィールなど)を見ることができる。その後に、通信可能となった場合には、保持していた情報が最新の情報に更新される。
なお、この実施例では、対戦プレイ中の場合と、オフラインまたは近距離に居ない場合には、アイコンをグレーアウトするようにしたが、これらを識別可能にするために、アイコンの表示態様を変化させてもよい。たとえば、対戦プレイ中では、アイコンを通常の色および明るさで表示し、当該アイコンの近傍に対戦プレイ中であることを示す画像ないしテキストを表示するようにしてもよい。このことは、後述する通りすがりのプレイヤについても同様である。
ゲームIDが一致する場合であり、プレイヤIDが示すプレイヤが友達や知り合いのプレイヤでない場合には、通りすがりのプレイヤとして既に判断(表示欄に追加)されているかどうかを判断する。
通りすがりのプレイヤとして既に追加されている場合には、ゲーム状況に応じてアイコンの表示態様が変化される。表示態様の変化は、友達や知り合いのプレイヤのアイコンの場合と同じである。ただし、既に通りすがりのプレイヤとして追加されたプレイヤが所持するゲーム装置10からの状態通知のビーコン信号を所定時間(たとえば、180秒)受信しない場合には、当該ゲーム装置10はオフラインである、またはビーコン信号の届く範囲に存在しないため、アイコンがグレーアウトで表示される。
なお、この実施例では、オフラインやビーコン信号の届く範囲に存在しないゲーム装置10を所持するプレイヤのアイコンをグレーアウトで表示するようにしてあるが、アイコンを非表示にしてもよい。
また、現在のゲーム状況が対戦プレイ中であるプレイヤやオフラインのプレイヤを除けば、友達、知り合いおよび通りすがりのプレイヤであって、ビーコン信号の届く範囲に存在しないゲーム装置10を所持するプレイヤのアイコンを非表示する場合には、ビーコン信号の届く範囲(所定範囲)内に存在し、対戦プレイが可能であるプレイヤのアイコンのみがリスト画面150に表示されると言える。
このように、ローカル通信が選択されている場合には、シングルプレイモードにおいて、各ゲーム装置10は、他のゲーム装置10に状態通知のビーコン信号を送信し、他のゲーム装置10からの状態通知のビーコン信号を受信することにより、対戦相手の候補を互いに探索しているのである。ただし、対戦相手の候補は、状態通知のビーコン信号を送受信可能な所定範囲に存在するゲーム装置10である。つまり、比較的近距離に居る他のプレイヤを探索するのである。
なお、この実施例では、状態通知のビーコン信号に含まれるプレイヤ情報(プレイヤデータ)を参照して、友達として登録されているかどうか、知り合いと判断されたかどうかを判断するようにしてあるが、これに限定される必要はない。他のゲーム装置10の識別情報(装置ID)に基づいて、友達として登録されているか、知り合いと判断されたかを判断するようにしてもよい。
また、インターネット通信が選択されている場合には、サーバ5から通知される他のゲーム装置10の現在の状況に応じて、ローカル通信が選択されている場合と同様に、リスト画面150が更新(生成)される。ただし、ゲームIDが一致するかどうか、すなわち、同じ種類のゲームをプレイしているかどうかはサーバ5で判断(管理)されるため、この判断処理がゲーム装置10で実行されることはない。また、上述したように、ゲーム状況が変化される場合に、ゲーム装置10は状態通知のデータをサーバ5に送信するため、ゲーム装置10がオフラインであること、またはアクセスポイントにアクセスできないことを判断する所定時間はシングルプレイモードと対戦プレイモードで異なる。たとえば、サーバ5は、ゲーム状況がシングルプレイモードである場合には、30分〜1時間経過しても、状態通知のデータを送信してこないゲーム装置10についてはオフラインまたはアクセスポイントにアクセスできないと判断する。また、たとえば、サーバ5は、ゲーム状況が対戦プレイモードである場合には、180〜540秒経過しても、状態通知のデータを送信してこないゲーム装置10についてはオフラインまたはアクセスポイントにアクセスできないと判断する。
このように、インターネット通信が選択されている場合には、シングルプレイモードにおいて、各ゲーム装置10は、サーバ5に状態通知のデータを送信し、サーバ5から他のゲーム装置10のプレイヤ情報が付加された現在の状況を受信することにより、つまりサーバ5を介して、対戦相手の候補を互いに探索している。この場合、対戦相手の候補は、インターネット7に接続している不特定の他のゲーム装置10である。
上述したように、状態通知の信号は、対戦プレイモードのゲームが実行されている場合にも送信されるが、これは対戦プレイのゲーム処理を実行中であることを他のゲーム装置10に通知するためである。図示は省略するが、対戦プレイにおいては、対戦相手を選択する必要がないため、リスト画面150は表示されない。
なお、上述したように、この実施例では、ローカル通信とインターネット通信を選択する(切り替える)ことができる。上述したように、これらの通信方法は異なるため、ローカル通信またはインターネット通信が選択されている場合に、通りすがりのプレイヤとして判断されたプレイヤが所持ないし使用するゲーム装置10とは、通信方法が切り替えられると、ほとんどの場合に通信不能となる。したがって、ローカル通信からインターネット通信に切り替えられたり、インターネット通信からローカル通信に切り替えられたりした場合には、通りすがりのプレイヤを一旦消去するようにしてもよい。
また、シングルプレイモードのゲーム処理が実行されている場合に、リスト画面150において、所望のアイコン(図4(B)では、170a、170b、172a−172c、174a−174f)を選択(タッチ)することにより、対応するプレイヤのプロフィール情報を見たり、対応するプレイヤに対戦プレイを申し込んだりすることができる。
たとえば、図4(B)に示すリスト画面150において、アイコン170aを選択し、対応するプレイヤに対戦プレイを申し込む(対戦を要求する)と、図5に示すような対戦プレイを要求する画面(要求画面)200が第2LCD46に表示される。図示は省略するが、このとき、第1LCD44には、シングルプレイのゲーム画面100が表示されたままであり、プレイヤの操作に従って、シングルプレイは継続される。たとえば、対戦プレイを申し込んでいる最中であっても、プレイヤの操作に従って、プレイヤキャラクタ102およびモンスターキャラクタ104はゲーム世界を移動される。
また、図5に示すように、要求画面200は、表示領域202が画面の中央に表示され、その下側にアイコン204が表示される。また、要求画面200の右下部には、ボタン画像206が表示される。表示領域202には、誰に(どのプレイヤ)に対戦プレイを申し込んだかを示す情報(テキスト情報)が表示される。アイコン204は、対戦プレイを申し込んだ相手のプレイヤが使用するゲームアバターの顔画像が付されたアイコンである。図5からも分かるように、対戦プレイを申し込んだ相手のプレイヤは友達のプレイヤ(アイコン170aに対応するプレイヤ)である。また、アイコン204を選択(タッチ)することにより、対応するプレイヤのプロフィール情報を見ることができる。ボタン画像206は、リスト画面150に戻るためのボタンである。ボタン画像206がオン(タッチ)されると、第2LCD46には、図4(B)に示したようなリスト画面150が表示される。このとき、対戦プレイの申し込みをキャンセルするようにしてもよい。
このように、プレイヤは、リスト画面150を用いて、シングルプレイのゲーム中の任意のタイミングで、他のゲーム装置10のプレイヤに対戦を申し込むことができる。ただし、上述したように、リスト画面150が表示されていない場合のように、他のゲーム装置10と対戦プレイできない状態においては、対戦を申し込むことができない。
また、対戦プレイを申し込む(対戦を要求する)と、対戦を要求するための信号がゲーム装置10から送信される。この対戦を要求するための信号は、種類ID、装置ID、ゲームID、プレイヤID、要求先IDなどの情報を含む。ただし、ローカル通信が選択されている場合には、ゲーム装置10は、ローカル通信モジュール30を用いて、対戦プレイを要求するためのビーコン信号(対戦要求のビーコン信号)を送信(ブロードキャスト)する。一方、インターネット通信が選択されている場合には、ゲーム装置10は、インターネット通信モジュール28を用いて、対戦プレイを要求するためのデータ(対戦要求のデータ)をサーバ5に送信する。
種類ID、装置ID、ゲームID、プレイヤIDは、上述したとおりである。要求先IDは、対戦を申し込む(要求する)相手のプレイヤの識別情報(プレイヤID)である。図5の要求画面200が第2LCD46に表示されている場合には、アイコン170aに対応するプレイヤのプレイヤIDが要求先IDとして対戦要求のビーコン信号や対戦要求のデータに含まれる。このように、要求先IDを含めるのは、ビーコン信号はブロードキャストされるため、対戦要求のビーコン信号を受信した側で、対戦プレイが申し込まれたかどうかを判断する必要があるからである。また、サーバ5で対戦要求されたプレイヤを特定するためである。インターネット通信では、サーバ5は、対戦要求のデータを受信すると要求先IDが示すプレイヤが所持するゲーム装置10にこの対戦要求のデータを送信する。ただし、サーバ5には、プレイヤIDに対応して、プレイヤIDが示すプレイヤが所持するゲーム装置10への接続情報(IPアドレス)が記憶されている。
一方、対戦プレイを申し込まれた(対戦を要求された)場合には、図6に示すような対戦を要求された場合の画面(被要求画面)250が第2LCD46に表示される。図示は省略するが、このとき、第1LCD44には、シングルプレイのゲーム画面100が表示されたままであり、プレイヤの操作に従って、シングルプレイは継続される。たとえば、対戦プレイを申し込まれている最中であっても、その申し込みに対して応答することなく、応答を保留したままで、プレイヤの操作に従って、プレイヤキャラクタ102およびモンスターキャラクタ104はゲーム世界を移動される。つまり、対戦プレイを申し込まれても、ゲームが中断することがなく、また、割り込みで対戦プレイが開始されることもないのである。
図6に示すように、被要求画面250には、その上部に表示領域252が設けられ、その下側にアイコン254が表示される。さらに、アイコン254の下側に、アイコン256およびアイコン258が表示される。
表示領域252には、誰(どのプレイヤ)から対戦プレイを申し込まれたかの情報(テキスト情報)が表示される。このテキスト情報には、対戦プレイを申し込んできたプレイヤが、友達、知り合い、通りすがりのいずれであるかの情報も含まれる。したがって、プレイヤは、対戦を申し込んできたプレイヤの分類を知ることができるので、その分類を加味して、対戦プレイを行うかどうかを判断することできる。たとえば、知り合いのプレイヤからの対戦プレイの申し込みであれば、少なくとも一度は対戦プレイやキャラクタの交換を行っているため、通りすがりのプレイヤと対戦プレイする場合に比べて安心して対戦プレイを行うことができる。また、友達のプレイヤからの対戦プレイの申し込みであれば、知り合いのプレイヤよりも親密度や信頼度が高いと考えられるため、さらに安心して対戦プレイを行うことができる。
アイコン254は、対戦プレイを申し込んできたプレイヤが使用するゲームアバターの顔画像を付したアイコンである。ここでは、図6からも分かるように、リスト画面150に表示されていたアイコン172aに対応する知り合いのプレイヤから対戦プレイが申し込まれている。また、アイコン254を選択(タッチ)することにより、対応するプレイヤのプロフィール情報を見ることができる。アイコン256は、対戦プレイの申し込みを受諾するためのボタンである。また、アイコン258は、対戦プレイの申し込みを拒否するためのボタンである。
被要求画面250が表示されている場合に、アイコン256がオン(タッチ)されると、ゲーム装置10から対戦プレイの申し込みを受諾したことを示す信号が送信される。要求受諾の信号は、種類ID、装置ID、ゲームID、プレイヤID、要求元IDなどの情報を含む。ただし、ローカル通信が選択されている場合には、ゲーム装置10は、ローカル通信モジュール30を用いて、申し込みを受諾したことを示すビーコン信号(要求受諾のビーコン信号)を送信(ブロードキャスト)する。インターネット通信が選択されている場合には、ゲーム装置10は、インターネット通信モジュール28を用いて、申し込みを受諾したことを示すデータ(要求受諾のデータ)をサーバ5に送信する。
種類ID、装置ID、ゲームID、プレイヤIDは、上述したとおりである。要求元IDは、対戦プレイを申し込んできた(対戦を要求してきた)相手のプレイヤの識別情報(プレイヤID)である。このようにするのは、ローカル通信が選択されて場合には、要求受諾のビーコン信号がブロードキャストされるため、ビーコン信号を受信した側で、対戦プレイの要求が受諾されたことを判断する必要があるからである。また、サーバ5で、対戦要求が受諾されたプレイヤを特定するためである。インターネット通信では、サーバ5は、対戦受諾データを受信すると要求元IDが示すプレイヤが所持するゲーム装置10にこの対戦受諾データを送信する。
また、被要求画面250が表示されている場合に、アイコン258がオン(タッチ)されると、ゲーム装置10は、対戦プレイの申し込みを拒否するための信号(要求拒否のビーコン信号)ないしデータ(要求拒否データ)を送信する。
要求拒否のビーコン信号および要求拒否データは、種類IDが示す種類が異なる以外は、要求受諾のビーコン信号および要求受諾のデータと同じである。
ただし、この実施例では、アイコン258をオン(タッチ)しなくても、被要求画面250が表示されてから、所定時間(この実施例では、30秒−60秒)応答しない場合には、自動的に要求拒否のビーコン信号または要求拒否データが送信される。
このように、対戦プレイの申し込みがあっても、勝手に割り込みで対戦プレイが開始されることが無く、その申し込みに対する応答(受諾または拒否)を保留して、シングルプレイのゲームを継続することができる。そして、何ら応答せずに、シングルプレイのゲームを継続していれば、自動的に対戦プレイの申し込みを拒否することができる。つまり、プレイヤの手を煩わせることがない。
この実施例では、被要求画面250が表示された時点から所定時間をカウントするようにしてあるが、これに限定される必要はない。対戦要求のビーコン信号ないし対戦要求のデータを受信した時点から所定時間をカウントするようにしてもよい。
また、所定時間のカウントを、対戦要求のビーコン信号または対戦要求のデータの送信側のゲーム装置10で行い、受信側のゲーム装置10から所定時間応答が無い場合に、送信側のゲーム装置10で自動的に対戦プレイの申し込みをキャンセルしてもよい。
このように、プレイヤの操作に従って、他のゲーム装置10のプレイヤに対戦を申し込んだり、他のゲーム装置のプレイヤからの対戦の申し込みを受諾または拒否したりすることができる。
対戦プレイの申し込みが受諾された場合には、対戦プレイを開始するべく、対戦プレイを申し込んだプレイヤのゲーム装置10と、それを受諾したプレイヤのゲーム装置10は、それぞれシングルプレイモードのゲーム処理を中断し、それらのゲーム装置10の間でデータの送受信を行うための接続が確立される。ローカル通信が選択されている場合には、ローカル通信モジュール30を用いて、ゲーム装置10間でデータの送受信を行うための接続が確立される。一方、インターネット通信が選択されている場合には、サーバ5から対戦プレイを行う複数のゲーム装置10に対戦相手のゲーム装置10への接続情報(IPアドレス)が通知され、インターネット通信モジュール28を用いて、複数のゲーム装置10間でデータの送受信を行うための接続が確立される。
接続が確立されると、対戦プレイモードのゲーム処理(以下、「対戦プレイ処理」という)が実行される。このとき、たとえば、対戦プレイを申し込んだ側のゲーム装置10が親機として機能し、対戦プレイを申し込まれた側のゲーム装置10が子機として機能する。親機は、子機の操作データを受信して、受信した子機の操作データと自機の操作データに基づいて対戦プレイモードのゲーム制御処理を実行し、処理結果に応じたゲーム画像を生成および出力(画面表示など)するとともに、処理結果のデータ(処理結果データ)を子機に送信する。子機は、受信した処理結果データに応じたゲーム画像を生成および出力する。
なお、接続が確立されると、対戦プレイ処理が開始されるため、対戦プレイの申し込みは、接続(通信接続)の要求であるとも言える。
対戦プレイモードでは、対戦を申し込んだプレイヤが使用するモンスターキャラクタと、その申し込みを受諾したプレイヤが使用するモンスターキャラクタとがゲーム世界に配置され、それぞれのプレイヤの操作に従って、互いに他のモンスターキャラクタを攻撃したり、他のモンスターキャラクタの攻撃を防御したりする。
対戦の決着がつき、対戦プレイ処理を終了すると、たとえば、中断されていたシングルプレイモードのゲーム処理が再開される。したがって、シングルプレイモードのゲーム処理が中断されるときに、シングルプレイモードのゲーム処理で用いられるゲームデータ(シングルプレイ処理用データ504f)は保存(セーブ)され、再開するときに、読み出される。したがって、たとえば、中断した時点からシングルプレイモードのゲーム処理を再開することができる。
上述したように、この実施例では、一度でも対戦プレイを行ったプレイヤは知り合いとして判断される。このため、対戦プレイを終了したときに、今回の対戦相手が通りすがりのプレイヤであった場合には、知り合いのプレイヤと判断され、当該プレイヤのプレイヤデータが、当該ゲームのゲームデータとともに、セーブデータとして、ゲーム装置10の保存用データメモリ26に記憶される。ここで、対戦相手である通りすがりのプレイヤと知り合いになった旨を表示してもよい。
また、この実施例では、対戦プレイを終了したときに、今回の対戦相手が知り合いのプレイヤであった場合には、友達として登録するかどうかを選択(決定)することができる。たとえば、対戦プレイを終了すると、今回の対戦相手が知り合いのプレイヤである場合には、図7に示すような友達登録画面300が第2LCD46に表示される。
図7に示すように、友達登録画面300には、その上部に表示領域302が設けられ、その下側にアイコン304が表示される。さらに、アイコン304の下側に、アイコン306およびアイコン308が表示される。
表示領域302には、今回の対戦相手(ここでは、Bさん)を友達のプレイヤとして登録するかどうかを質問するテキスト情報が表示される。アイコン304は、今回の対戦相手である知り合いのプレイヤが使用するゲームアバターの顔画像を付したアイコンである。このアイコン304を選択(タッチ)することにより、対応するプレイヤ(Bさん)のプロフィール情報を見ることができる。アイコン306は、今回の対戦相手である知り合いのプレイヤを友達のプレイヤとして登録することを選択するためのボタンである。また、アイコン308は、今回の対戦相手である知り合いのプレイを友達のプレイヤとして登録しないことを選択するためのボタンである。
たとえば、友達登録画面300が表示されている場合において、アイコン306がオン(タッチ)されると、友達のプレイヤとして登録することが、今回の対戦相手である知り合いのプレイヤが使用するゲーム装置10に送信(通知)される。一方、今回の対戦相手である知り合いのプレイヤが使用するゲーム装置10から友達のプレイヤとして登録することが通知されると、友達のプレイヤとして登録することについて合意に達する。つまり、相互認証される。よって、各ゲーム装置10において、今回の対戦相手である知り合いのプレイヤが友達のプレイヤとして登録される。これは、前述の本体機能によって友達のプレイヤを登録する方法とは異なり、このゲーム(アプリケーション)を実行することにより、友達のプレイヤとして登録する方法である。つまり、このゲームでは、通りすがりのプレイヤと一度対戦プレイやキャラクタの交換を行うと、知り合いのプレイヤと判断され、さらに、知り合いのプレイヤと対戦プレイ(キャラクタの交換でもよい)を行うと、合意の下に、友達のプレイヤとして登録することができるのである。
ただし、友達登録画面300が表示されている場合において、アイコン306がオンされても、今回の対戦相手である知り合いのプレイヤが使用するゲーム装置10から友達のプレイヤとして登録することの通知がない場合には、友達のプレイヤとして登録することについて合意に達しないため、当該知り合いのプレイヤは友達のプレイヤとして登録されない。
また、友達登録画面300が表示されている場合において、アイコン308がオン(タッチ)されると、今回の対戦相手を友達のプレイヤとして登録しないことが選択される。かかる場合には、今回の対戦相手である知り合いのプレイヤが使用するゲーム装置10から友達のプレイヤとして登録することが通知されたとしても、友達のプレイヤとして登録することについて合意に達しないため、当該知り合いのプレイヤは友達のプレイヤとして登録されない。
上述したように、知り合いのプレイヤと友達のプレイヤとでは、各プレイヤが使用(所持)するゲーム装置10との間で実行可能な機能が異なるため、使用する機能に応じて、友達のプレイヤとして登録するかどうかを決定してよい。また、知り合いのプレイヤを友達として登録した旨または登録しなかった旨の表示をしてもよい。
図8は、図2に示したゲーム装置10のメインメモリ22のメモリマップ500の一例を示す図解図である。図8に示すように、メインメモリ22は、プログラム記憶領域502およびデータ記憶領域504を含む。プログラム記憶領域502には、情報処理プログラムの一例であるアプリケーションプログラムとしてのゲームプログラムが記憶される。このゲームプログラムは、メイン処理プログラム502a、画像生成プログラム502b、画像表示プログラム502c、シングルプレイ処理プログラム502d、対戦プレイ処理プログラム502e、接続関連処理プログラム502fおよび通信処理プログラム502gなどによって構成される。
メイン処理プログラム502aは、この実施例のゲームのメインルーチン(ゲーム全体処理)についてのプログラムである。画像生成プログラム502bは、ポリゴンデータやテクスチャデータなどのデータを用いて、各種の画面(100、150、200、250など)についての画像データを生成するためのプログラムである。画像表示プログラム502cは、画像生成プログラム502bに従って生成された画像データを第1LCD56や第2LCD58に出力するためのプログラムである。
シングルプレイ処理プログラム502dは、シングルプレイモードのゲーム処理についてのプログラムである。対戦プレイ処理プログラム502eは、対戦プレイモードのゲーム処理についてのプログラムである。接続関連処理プログラム502fは、シングルプレイモードのゲーム処理を実行中に、他のゲーム装置10に対戦要求を送信したり、他のゲーム装置10からの対戦要求を受信したり、他のゲーム装置10からの対戦要求に応答(受諾または拒否)したりするためのプログラムである。通信処理プログラム502gは、インターネット通信モジュール28を用いて通信したり、ローカル通信モジュール30を用いて通信したりするためのプログラムである。
なお、プログラム記憶領域502には、音出力プログラムやバックアッププログラムなども記憶される。音出力プログラムは、ゲームの音(音楽)を生成および出力するためのプログラムである。バックアッププログラムは、プレイヤの指示または所定のイベントに応じて、ゲームデータを保存(セーブ)するためのプログラムである。
また、データ記憶領域504には、送受信データバッファ504aおよび操作入力データバッファ504bが設けられる。
送受信データバッファ504aは、他のゲーム装置10との間で送受信されるデータ(ビーコン信号を含む)を一時記憶するための領域である。操作入力データバッファ504bは、入力装置32からの操作データやタッチ位置データを一時記憶するための領域である。
また、データ記憶領域504には、友達データ504c、知り合いデータ504d、通りすがりデータ504e、シングルプレイヤ処理用データ504f、対戦プレイ処理用データ504g、キャラクタデータ504h、マップデータ504iおよび自機プレイヤデータ504jなどが記憶される。
友達データ504cは、友達のプレイヤとして登録されているプレイヤについてのプレイヤデータである。プレイヤデータは、図9に示すように、プレイヤID、プレイヤ名、プロフィール情報、アバター情報およびゲーム状況などの情報を含む。これらは、状態通知のビーコン信号に含まれるプレイヤ情報である。ただし、プレイヤデータは、プレイヤ毎に記憶されるため、複数のプレイヤが友達として登録(記憶)されている場合には、それぞれのプレイヤに対応してプレイヤデータが記憶される。知り合いデータ504dおよび通りすがりデータ504eについても同様である。
知り合いデータ504dは、知り合いのプレイヤと判断されたプレイヤについてのプレイヤデータである。通りすがりデータ504eは、友達のプレイヤとして登録されておらず、しかも知り合いのプレイヤと判断されていないプレイヤであって、当該ゲーム装置10で受信した状態通知のビーコン信号または状態通知のデータの送信元のゲーム装置10のプレイヤについてのプレイヤデータである。
上述したように、友達および知り合いのプレイヤのプレイヤデータは、保存用データメモリ26に記憶されるため、友達データ504cおよび知り合いデータ504dは、ゲーム開始時に保存用データメモリ26からデータ記憶領域504に読み出される(ロードされる)。
シングルプレイ処理用データ504fは、シングルプレイモードのゲーム処理で用いられるデータである。図10に示すように、シングルプレイ処理用データ504fは、現在位置データ、レベルデータ、所持アイテムデータおよび所有キャラクタデータなどを含む。現在位置データは、仮想空間におけるプレイヤキャラクタの現地位置のデータ(座標データ)である。レベルデータは、プレイヤキャラクタやプレイヤキャラクタが所有するモンスターキャラクタについてのレベルを示すデータである。所持アイテムデータは、プレイヤキャラクタが所持するアイテムを識別する情報(データ)である。所有キャラクタデータは、プレイヤキャラクタが所有するモンスターキャラクタを識別する情報(データ)である。
図8に戻って、対戦プレイ処理用データ504gは、対戦プレイモードのゲーム処理で用いられるデータである。図11に示すように、対戦プレイ処理用データ504gは、受信データおよび対戦相手データを含む。受信データは、対戦相手のゲーム装置10から受信したデータである。当該ゲーム装置10が親機として機能する場合には、受信データは、子機として機能する対戦相手のゲーム装置10から受信した操作入力データである。一方、ゲーム装置10が子機として機能する場合には、受信データは、親機として機能する対戦相手のゲーム装置10から受信した処理結果データである。処理結果データは、親機の操作入力データおよび/または子機からの操作入力データに基づいて対戦プレイモードのゲーム処理を実行した結果についてのデータである。この処理結果データに基づいて、子機は、ゲームパラメータを更新したり、ゲーム画面を更新したりする。対戦相手データは、対戦相手(対戦するプレイヤ)についてのプレイヤIDのデータである。
図8に戻って、キャラクタデータ504hは、この実施例のゲームで使用される各種キャラクタ(プレイヤキャラクタやモンスターキャラクタなど)についてのデータである。マップデータ504iは、仮想空間にこの実施例のゲーム世界を構築するためのデータである。
自機プレイヤデータ504jは、ゲーム装置10を所持するプレイヤ(所有者)について登録されたプレイヤデータである。自機プレイヤデータ504jの内容は、図9に示したプレイヤデータと同じである。
また、データ記憶領域504には、対戦プレイフラグ504kが設けられる。この対戦プレイフラグ504kは、対戦プレイ中であるかどうかを判定するためのフラグである。たとえば、対戦プレイフラグ504kは、1ビットのレジスタで構成され、対戦プレイ中である場合には、レジスタに「1」が設定され、対戦プレイ中でない場合には、レジスタに「0」が設定される。対戦プレイフラグ504kは、対戦プレイを開始するときにオンされ、対戦プレイを終了するときにオフされる。
図12は、図3に示したCPU20のゲーム全体処理を示すフロー図である。ただし、ローカル通信が選択されている場合のゲーム全体処理が示される。なお、図12(後述する図13−図17についても同様。)に示すフロー図の各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、この実施例では、図12−図17に示すフロー図の各ステップの処理をCPU20が実行するものとして説明するが、CPU20以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい。
図12に示すように、CPU20は、ゲーム全体処理を開始すると、ステップS1で、初期設定を行う。ここでは、シングルプレイのゲーム世界を構築したり、プレイヤキャラクタなどのキャラクタを初期位置またはセーブした位置に配置したりする。次のステップS3では、後述するビーコン送受信処理(図16および図17参照)を開始する。つまり、ビーコン送受信処理は、ゲーム全体処理と並行して実行される。
次のステップS5では、操作入力データを取得する。ここでは、CPU20は、操作入力データバッファ504bに記憶された操作データおよび/またはタッチ位置データを取得する。当然のことではあるが、ステップS5では、操作入力データバッファ504bに操作データおよび/またはタッチ位置データが記憶されていない場合には、操作データおよび/またはタッチ位置データを取得せずに、そのままステップS7に進む。
続いて、ステップS7では、対戦プレイモードかどうかを判断する。ここでは、CPU20は、対戦プレイフラグ504kがオンであるかどうかを判断する。
ステップS7で“NO”であれば、つまりシングルプレイモードであれば、ステップS9で、シングルプレイ処理を実行して、ステップS13に進む。詳細な説明は省略するが、シングルプレイ処理では、シングルプレイのゲーム処理が実行されるとともに、状態通知のビーコン信号を受信したことに応じて、リスト画面150の画像データが更新される。したがって、友達、知り合いおよび通りすがりのプレイアに対応するアイコンが追加されたり、アイコンの表示態様が変化さたりする。また、プレイヤの操作に応じて対戦プレイを申し込んだり、他のゲーム装置10(プレイヤ)から対戦プレイを申し込まれたりする。そして、対戦相手の候補に対戦プレイすることを承諾されたり、対戦相手の候補に対戦プレイすることを承諾したりすることにより、対戦プレイすることについて合意に達すると、対戦プレイすることが決定される。
一方、ステップS7で“YES”であれば、つまり対戦プレイモードであれば、ステップS11で、後述する対戦プレイ処理(図13-図15参照)を実行して、ステップS13に進む。ステップS13では、表示処理を実行する。この実施例では、CPU20は、第1LCD44および第2LCD46のそれぞれに画像データを出力する。図示は省略するが、このとき、ゲームの音も出力される。
そして、ステップS15で、ゲームを終了するかどうかを判断する。ここでは、CPU20は、プレイヤによってゲームの終了が指示されたかどうかを判断する。ステップS15で“NO”であれば、つまりゲームを終了しない場合には、ステップS5に戻る。一方、ステップS15で“YES”であれば、つまりゲームを終了する場合には、ステップS17で、ビーコン送受信処理を終了して、ゲーム全体処理を終了する。
なお、ステップS5−S15のスキャンタイムが1フレームで実行される。たとえば、フレームは、画面更新の時間間隔(1/30秒または1/60秒)である。
また、上述したように、インターネット通信が選択されている場合には、ゲームの状況が変化するときに、状態通知のデータがサーバ5に送信される。したがって、かかる場合には、図16および図17に示すようなビーコン送受信処理は実行されない。また、上述したように、インターネット通信が選択されている場合には、ステップS3において、ゲームを開始したことをサーバ5に通知する。具体的には、ゲームIDとプレイヤ情報を含む開始通知がサーバ5に送信される。また、ステップS17で、ゲームを終了したことをサーバ5に通知する。具体的には、ゲームIDとプレイヤ情報を含む終了通知がサーバ5に送信される。
図13ないし図15は、図12のステップS11に示した対戦プレイ処理のフロー図の一例である。ただし、図13ないし図15に示す対戦プレイ処理は、ゲーム装置10が親機として機能する場合の処理である。図示は省略するが、対戦を開始するのに先立って、ゲーム装置10は対戦相手のゲーム装置10との間で通信接続を確立し、初期設定を行う。また、このとき、対戦プレイフラグ504kがオンされる。初期設定として、CPU20は、対戦プレイのゲーム世界を構築したり、プレイヤキャラクタなどのキャラクタを初期位置に配置したりする。
図13に示すように、対戦プレイ処理では、CPU20は、ステップS31で、対戦終了かどうかを判断する。ここでは、CPU20は、対戦プレイの勝敗を決定したかどうかを判断する。ステップS31で“YES”であれば、つまり対戦終了であれば、図14に示すステップS41に進む。一方、ステップS31で“NO”であれば、つまり対戦終了でなければ、ステップS33で、相手の操作入力データを受信したかどうかを判断する。ステップS33で“NO”であれば、つまり相手の操作入力データを受信していなければ、そのまま同じステップS33に戻る。一方、ステップS33で“YES”であれば、つまり相手の操作入力データを受信すれば、ステップS35に進む。
なお、この実施例では、ステップS33において、相手の操作入力データを受信しない場合には、そのまま同じステップS33に戻るようにしてあるが、所定時間(たとえば、2〜3秒)経過しても操作入力データを受信しない場合には、ステップS35に進むようにしてもよい。
ステップS35では、対戦プレイについてのゲーム制御処理を実行する。簡単に説明すると、CPU20は、ステップS5で取得した自機の操作入力データおよびステップS33で受信(取得)したと判断された相手の操作入力データの少なくとも一方に基づいて、自機のモンスターキャラクタ104と相手のモンスターキャラクタを戦闘(攻撃や防御)させる。また、CPU20は、攻撃を受けた側のモンスターキャラクタの体力値を減算する。そして、CPU20は、一方のモンスターキャラクタの体力値が0以下になると、勝敗を決定する。
次のステップS37では、処理結果を対戦相手に送信する。つまり、CPU20は、ステップS35におけるゲーム制御処理の処理結果データを対戦相手のゲーム装置10に送信する。そして、ステップS39で、ゲーム画面の画像を更新して、図12に示したゲーム全体処理にリターンする。CPU20は、ステップS39において、ステップS35におけるゲーム制御処理の結果を反映した画像データを生成する。したがって、その後のゲーム全体処理において、ゲーム制御処理の結果を反映したゲーム画面が第1LCD44に表示される。
上述したように、対戦終了であれば、ステップS31で“YES”となり、図14に示すステップS41で、図7に示したような友達登録画面300の表示中であるかどうかを判断する。ステップS41で“YES”であれば、つまり友達登録画面300の表示中であれば、ステップS43で、対戦相手のゲーム装置10に友達登録を通知したかどうかを判断する。ステップS43で“NO”であれば、つまり対戦相手のゲーム装置に友達登録を通知していなければ、図15に示すステップS55に進む。一方、ステップS43で“YES”であれば、つまり対戦相手のゲーム装置10に友達登録を通知していれば、図15に示すステップS61に進む。
また、ステップS41で“NO”であれば、つまり友達登録画面300の表示中でなければ、ステップS45で、今回の対戦相手が友達のプレイヤであるかどうかを判断する。ここでは、CPU20は、対戦プレイ処理用データ504gに含まれる対戦相手データが示すプレイヤIDを有するプレイヤデータが友達データ504c、知り合いデータ504dおよび通りすがりデータ504eのいずれに含まれるかを検出し、友達のプレイヤであるかどうかを判断する。なお、後述するステップS49においても同様の処理が実行される。
ステップS45で“YES”であれば、つまり今回の対戦相手が友達のプレイヤであれば、ステップS47で、対戦プレイフラグ504kをオフして、ゲーム全体処理にリターンする。したがって、その後のゲーム全体処理において、シングルプレイ処理が再開される。一方、ステップS45で“NO”であれば、つまり今回の対戦相手が友達のプレイヤでなければ、ステップS49で、今回の対戦相手が知り合いのプレイヤであるかどうかを判断する。ステップS49で“NO”であれば、つまり今回の対戦相手が通りすがりのプレイヤであれば、ステップS51で、今回の対戦相手を知り合いのプレイヤと判断し、当該対戦相手を知り合いのプレイヤに変更してから、ゲーム全体処理にリターンする。ここでは、CPU20は、今回の対戦相手のプレイヤデータを通りすがりデータ504eから知り合いデータ504dに移動する。
一方、ステップS49で“YES”であれば、つまり今回の対戦相手が知り合いのプレイヤであれば、ステップS53で、友達登録画面300の画像データを生成して、ゲーム全体処理にリターンする。したがって、その後のゲーム全体処理において、友達登録画面300が第2LCD46に表示される。
上述したように、友達登録画面300が表示中であるが、対戦相手のゲーム装置10に友達登録を通知していなければ、ステップS43で“NO”となり、図15に示すように、ステップS55で、操作が有るかどうかを判断する。ここでは、CPU20は、操作入力データバッファ504bに、操作データおよび/またはタッチ位置データが記憶されているかどうかを判断する。
ステップS55で“NO”であれば、つまり操作が無ければ、そのままゲーム全体処理にリターンする。なお、この実施例では、操作が無い場合には、そのままゲーム全体処理にリターンするようにしてあるが、友達登録画面300が表示されてから所定時間(たとえば、5〜10秒)を経過しても操作が無い場合には、ステップS67に進むようにしてもよい。
一方、ステップS55で“YES”であれば、つまり操作が有れば、ステップS57で、対戦相手を友達のプレイヤとして登録するかどうかを判断する。ここでは、CPU20は、アイコン306またはアイコン308がオンされたことを検出して、対戦相手を友達のプレイヤとして登録するかどうかを判断する。
ステップS57で“NO”であれば、つまりアイコン308がオンされれば、対戦相手を友達のプレイヤとして登録しないことが判断され、ステップS67に進む。一方、ステップS57で“YES”であれば、つまりアイコン306がオンされれば、対戦相手を友達のプレイヤとして登録することが判断され、ステップS59で、対戦相手が所持(使用)するゲーム装置10に友達として登録すること(友達登録)を通知する。
続いて、ステップS61では、対戦相手から友達登録の通知があるかどうかを判断する。ステップS61で“NO”であれば、つまり対戦相手から友達登録の通知が無ければ、ステップS63で、友達登録画面300を表示したときから所定時間(たとえば、5〜10秒)を経過したかどうかを判断する。ステップS63で“NO”であれば、つまり友達登録画面300を表示したときから所定時間を経過していなければ、そのままゲーム全体処理にリターンする。一方、ステップS63で“YES”であれば、つまり友達登録画面300を表示したときから所定時間を経過すれば、ステップS67に進む。
また、ステップS61で“YES”であれば、つまり対戦相手から友達登録の通知があれば、友達のプレイヤとして登録することが合意に達したと判断し、ステップS65で、対戦相手を友達のプレイヤとして登録する。ここでは、CPU20は、対戦相手のプレイヤデータを知り合いデータ504dから友達データ504cに移動する。そして、ステップS67では、対戦プレイフラグ504kをオフして、ゲーム全体処理にリターンする。
なお、ここでは、ゲーム装置10が親機として機能する場合について説明したが、ゲーム装置10が子機として機能する場合には、ステップS33、S35およびS37に代えて、次の処理が実行される。
具体的には、CPU20は、ステップS31で、対戦終了でないと判断すると、ステップS5において取得した自機の操作入力データを対戦相手が所持するゲーム装置10(親機)に送信する。そして、CPU20は、親機から処理結果データを受信したかどうかを判断する。CPU20は、処理結果データを受信しない場合には、処理結果データの受信を待機し、処理結果データを受信すれば、ステップS39で、処理結果データに従ってゲーム画面の画像を更新する。
図16および図17は、ビーコン送受信処理を示すフロー図である。ただし、このビーコの送受信処理は、ローカル通信が選択されている場合に実行される。
図16に示すように、CPU20は、ビーコン送受信処理を開始すると、ステップS101で、送信カウンタをリセットする。つまり、カウント値が0に設定される。図示等は省略したが、送信カウンタ(後述する「受信カウンタ」も同じ。)は、メインメモリ22のデータ記憶領域504に設けられる。
続くステップS103で、ビーコン出力処理を実行する。ここでは、ステップS47、S77、S83、S91で生成され、送受信データバッファ504aに登録されたビーコン信号が送信(ブロードキャスト)される。次のステップS105で、送信カウンタをインクリメントする。つまり、送信カウンタのカウント値が1加算される。そして、ステップS107で、送信カウンタのカウント値が所定値以上であるかどうかを判断する。なお、所定値は、開発者等によって予め設定される数値である。ステップS121においても同じである。
ステップS107で“NO”であれば、つまり送信カウンタのカウント値が所定値未満であれば、そのままステップS103に戻る。一方、ステップS107で“YES”であれば、つまり送信カウンタのカウント値が所定値以上であれば、図17に示すステップS109で、受信カウンタをリセットする。つまり、受信カウンタのカウント値が0に設定される。
続くステップS111では、他のゲーム装置10からのビーコン信号の受信を試行する。このとき、他のゲーム装置10からのビーコン信号を受信すると、CPU20は、受信したビーコン信号を送受信データバッファ504aに記憶する。次のステップS113では、他のゲーム装置10からのビーコン信号を受信したかどうかを判断する。ここでは、送受信データバッファ504aに他のゲーム装置10から送信されたビーコン信号が記憶されているかどうかを判断する。
ステップS113で“NO”であれば、つまり他のゲーム装置10からのビーコン信号を受信していなければ、そのままステップS119に進む。一方、ステップS113で“YES”であれば、つまり他のゲーム装置10からのビーコン信号を受信すれば、ステップS115で、ゲームIDが一致するかどうかを判断する。CPU20は、受信したビーコン信号に含まれるゲームIDが、自身が実行中のゲームのゲームIDと一致するかどうかを判断するのである。
ステップS115で“YES”であれば、つまりゲームIDが一致すれば、そのままステップS119に進む。一方、ステップS115で“NO”であれば、つまりゲームIDが一致しない場合には、ステップS117で、当該ビーコン信号を送受信データバッファ504aから消去して、ステップS119に進む。
なお、ステップS111で、複数のビーコン信号を受信した場合には、ステップS115処理が各ビーコン信号について実行され、その判断結果に応じて、ステップS117の処理が実行される。
ステップS119では、受信カウンタをインクリメントする。つまり、受信カウンタのカウント値が1加算される。そして、ステップS121で、受信カウンタのカウント値が所定値以上であるかどうかを判断する。ステップS121で“NO”であれば、つまり受信カウンタのカウント値が所定値未満であれば、ステップS111に戻る。一方、ステップS121で“YES”であれば、つまり受信カウンタのカウント値が所定値以上であれば、図16に示したステップS101に戻る。
このように、カウンタを用いて、繰り返しビーコン信号を送信したり、繰り返しビーコン信号の受信を試みたりしている。また、カウンタを用いることにより、ビーコン信号を送信する場合(モード)と受信する(受信を試みる)モードとを切り替えている。したがって、状態通知のビーコン信号を送受信する場合には、対戦プレイの候補を探索するモードと、探索されるモード(被探索モード)とが切り替えられる。このようなビーコン信号の送受信処理は、ゲームの全体処理の実行中に繰り返し行われるため、ゲーム装置10は、対戦プレイの候補である他のゲーム装置10を繰り返し探索することになる。
この実施例によれば、通りすがりのプレイヤと合意の上で通信することにより、知り合いのプレイヤと判断して、自動的に分類を変更するので、友達のプレイヤとして登録しなくても、その後においてゲーム状況や通信状況を知ることができる。したがって、その後に同じプレイヤと通信したい場合に、知り合いのプレイヤを検索し、現在の状況を把握して、通信を申し込むことができる。つまり、面倒な操作を省いて、コミュニケーションを多様化することができる。
また、この実施例では、ゲームを実行する場合には、少なくとも一度通信した知り合いのプレイヤを友達のプレイヤとして登録するので、直接会うことが困難なプレイヤであっても、通信を重ねることにより、親密度や信頼度を高めて、友達のプレイヤとして登録することができる。また、通りすがりのプレイヤのように、どのようなプレイヤであるかを全く知らないプレイヤを友達として登録することを防止することができる。ただし、通りすがりのプレイヤとの合意に基づいて、知り合いを経ることなく、友達のプレイヤとして登録可能な構成としてもよい。
さらに、この実施例では、一度通信を行ったプレイヤを、通りすがりのプレイヤから知り合いのプレイヤに変更するようにしたが、これに限定される必要はない。通信の回数は、2回以上の所定回数でもよい。また、通信の回数のみならず、期間を定めてもよい。たとえば、一週間に2回以上通信した場合に、通りすがりのプレイヤから知り合いのプレイヤに変更するようにしてもよい。
また、この実施例では、知り合いのプレイヤとの間で対戦プレイを行った後に、相互認証することにより、友達のプレイヤとして登録するようにしたが、対戦プレイを行わずに、相互認証することにより、友達のプレイヤとして登録してもよい。
なお、上述の実施例では、ゲーム装置のような情報処理装置のプレイヤを友達のプレイヤとして登録する場合について説明した。上述の実施例で示した友達のプレイヤとして登録する方法は、SNS(Social Networking Service)を提供するウェブサイトにおいて友達またはそれに準ずる関係(以下、「友達等」という。)として他のユーザを登録する場合にも適用することができる。かかる場合には、たとえば、検索機能を用いて検索された他のユーザ、自身のプロフィール情報(出身地、居住地、出身校など)を用いて検索された他のユーザ、または自身が友達等として登録した他のユーザが友達等として登録している他のユーザが、上記の実施例のように、通りすがりまたはそれに準ずる関係(以下、「通りすがり等」という。)のユーザとして判断される。たとえば、通りすがり等のユーザと通信(メッセージの送受信)を行うと、上述の実施例のように、当該通りすがり等のユーザは、知り合いまたはそれに準ずる関係(以下、「知り合い等」という。)のユーザとして判断される。そして、知り合い等のユーザとの間で相互認証することにより、友達等のユーザとして登録するようにすることができる。
また、上述の実施例で説明したように、この実施例の通信ゲームシステムでは3台以上のゲーム装置で対戦プレイすることもできる。かかる場合において、知り合いのプレイヤが複数人存在するときには、対戦終了後に、複数人のそれぞれについて友達登録画面が表示されたり、複数人のそれぞれを選択可能な1つの友達登録画面が表示されたりする。そして、個別に友達のプレイヤとして登録するか否かが選択される。
さらに、この実施例では、ローカル通信およびインターネット通信が可能な携帯型のゲーム装置を用いた場合について説明したが、インターネット通信が可能な据置型のゲーム装置を用いることもできる。
さらにまた、ゲーム装置の構成は実施例のものに限定される必要はない。たとえば、表示装置(LCD)は、1つのLCDを2つの表示領域に分けて使用してもよい。また、タッチパネルは、第1LCD上に、または、第1LCD上および第2LCD上の両方に設けてもよい。または、タッチパネルは設けなくてもよい。さらには、ゲーム装置は、GPS機能を備えてもよい。かかる場合には、近距離に(所定範囲内に)存在する他のゲーム装置を、実際の距離に基づいて検出することができる。
なお、上述の実施例で示した具体的な数値は単なる一例であり、実際の製品に応じて適宜変更される。