説明

通信制御装置、通信制御プログラム、通信制御方法、および、情報処理システム

【課題】送信先の異なる複数のデータを効率よく送信することが可能な通信制御装置を提供する。
【解決手段】ゲーム装置は、送信先が個別指定された個別送信データを個別送信箱に格納し、送信先が全端末である全送信データを全送信箱に格納する。個別送信箱には複数のデータが格納され、各データには送信先に関する情報と送信元に関する情報とが付加される。個別送信箱がいっぱいになると当該箱に格納された全てのデータが取り出されて、複数のデータを含む1つのフレームが生成されて、送信される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のデータを効率よく送信する通信制御装置、通信制御プログラム、通信制御方法、および、情報処理システムに関する。
【背景技術】
【0002】
従来、複数のデータを1つのフレームに含めて送信する装置が存在する。例えば、特許文献1では、送信側は1つのフレームに1つの受信側において用いられる複数のデータを含めて送信し、受信側は当該フレームを受信する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−256246号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に記載の装置では、上記複数のデータの送信先は単一の受信側に限られる。
【0005】
それ故、本発明の目的は、送信先の異なる複数のデータを効率よく送信することが可能な通信制御装置、通信制御プログラム、通信制御方法、および、情報処理システムを提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【0007】
本発明は、通信機能を有する情報処理装置のコンピュータにおいて実行される通信制御プログラムである。通信制御プログラムは、上記コンピュータを、送信データ生成手段と、送信手段として機能させる。送信データ生成手段は、送信先の異なる複数のデータを含む送信データを生成する。送信手段は、上記送信データをブロードキャストまたはマルチキャストで送信する。
【0008】
上記によれば、送信先の異なる複数のデータをまとめて送信することができる。これにより、個々のデータを別々に送信するよりも、効率よく複数のデータを複数の機器に対して送信することができる。
【0009】
本発明の他の構成では、上記送信データ生成手段は、各データごとの送信先情報を上記送信データに含ませてもよい。
【0010】
上記によれば、各データに加えて当該各データの送信先情報を送信することができる。
【0011】
本発明の他の構成では、通信制御プログラムは、取得手段と、格納制御手段としてさらに機能させてもよい。取得手段は、上記複数のデータを順次取得する。格納制御手段は、上記取得手段が取得したデータを記憶手段に順次格納する。上記送信データ生成手段は、上記記憶手段に格納された少なくとも2つのデータと当該少なくとも2つのデータのそれぞれの送信先情報とを含む上記送信データを生成する。
【0012】
上記によれば、順次取得されたデータを一時的に記憶手段に格納し、格納した複数のデータをまとめて送信することができる。
【0013】
本発明の他の構成では、上記通信制御プログラムは、上記記憶手段に格納されたデータを送信するための所定の条件が満たされたか否かを判定する第1判定手段として、上記コンピュータを機能させてもよい。上記送信データ生成手段は、上記第1判定手段によって上記所定の条件が満たされたと判定された場合、上記記憶手段に格納された少なくとも2つのデータと当該少なくとも2つのデータのそれぞれの送信先情報とを含む上記送信データを生成する。上記送信手段は、上記送信データ生成手段が生成した送信データを送信する。
【0014】
上記によれば、所定の条件が満たされた場合、記憶手段に格納されたデータを送信することができる。これにより、例えば、データが遅延することを防止することができる。
【0015】
本発明の他の構成では、上記通信制御プログラムは、上記記憶手段に格納されてから所定時間が経過したデータが存在するか否かを判定する第2判定手段として、上記コンピュータをさらに機能させてもよい。上記送信データ生成手段は、上記第2判定手段によって上記所定時間が経過したデータが存在すると判定された場合、上記所定時間が経過したデータを少なくとも含む上記送信データを生成する。上記送信手段は、上記送信データ生成手段が生成した送信データを送信する。
【0016】
上記によれば、データが格納されてから所定時間が経過すると当該データは送信される。これにより、データの遅延を防止することができる。
【0017】
本発明の他の構成では、上記記憶手段は、所定のサイズを有し、上記格納制御手段は、上記取得手段が取得したデータを上記記憶手段に格納可能か否かを判定する。上記送信データ生成手段は、上記格納制御手段によって上記データを格納不可能と判定された場合、上記記憶手段に格納された少なくとも2つのデータと当該少なくとも2つのデータのそれぞれの送信先情報とを含む上記送信データを生成する。上記送信手段は、上記送信データ生成手段が生成した送信データを送信する。
【0018】
上記によれば、例えば、記憶手段の空き容量が小さくデータを記憶することができない場合、記憶手段に格納したデータを送信することができる。ある程度まとまった複数のデータをまとめて送信することができ、データを効率的に送信することができる。
【0019】
本発明の他の構成では、上記通信制御プログラムは、上記取得手段によって取得されたデータを即時送信するか否かを判定する第3判定手段として、上記コンピュータをさらに機能させてもよい。上記送信データ生成手段は、上記第3判定手段によって上記データを即時送信すると判定された場合、当該データを含む上記送信データを生成する。上記送信手段は、上記送信データ生成手段が生成した送信データを送信する。
【0020】
上記によれば、取得したデータを即時に送信することができる。これにより、例えば、遅延させたくないデータを即時に送信することができる。
【0021】
本発明の他の構成では、上記取得手段は、他の情報処理装置から送られたデータを取得してもよい。上記送信データ生成手段は、上記複数のデータのそれぞれの送信元情報を上記送信データにさらに含める。
【0022】
上記によれば、他の装置から送信されたデータに送信元情報を含めて送信することができる。
【0023】
本発明の他の構成では、上記通信制御プログラムは、他の情報処理装置から送られた上記送信データを受信し、当該送信データに含まれる上記送信先情報に基づいて、少なくとも自機宛のデータを取り出すデータ取り出し手段として、上記コンピュータをさらに機能させてもよい。
【0024】
上記によれば、他の装置から送信された送信データに含まれる複数のデータのうち、少なくとも自機宛のデータを取り出すことができる。
【0025】
本発明の他の構成では、上記格納制御手段は、上記取得手段が取得したデータを第1記憶領域または第2記憶領域に格納してもよい。上記送信データ生成手段は、上記第1記憶領域および上記第2記憶領域の何れか一方に格納された少なくとも2つのデータを含む上記送信データを生成する。
【0026】
上記によれば、取得したデータを異なる2つの記憶領域に格納することができる。
【0027】
本発明の他の構成では、上記取得手段が取得する各データは、送信先で処理可能なひとまとまりのデータであってもよい。
【0028】
上記によれば、送信先で処理可能なひとまとまりのデータを複数取得して、当該複数のデータをまとめて送信することができる。これにより、効率よくデータを送信することができる。
【0029】
本発明の他の構成では、上記送信データ生成手段は、上記送信先情報をフレームのデータ部分に含て上記送信データを生成してもよい。
【0030】
上記によれば、上記送信先情報をフレームのデータ部分に含めることができる。
【0031】
本発明の他の構成では、上記送信データ生成手段は、上記送信元情報をフレームのデータ部分に含めて上記送信データを生成してもよい。
【0032】
上記によれば、上記送信元情報をフレームのデータ部分に含めることができる。
【0033】
また、本発明は、上記通信制御プログラムを実行する通信制御装置の形態で実施されてもよい。また、本発明は、通信制御方法であってもよい。
【0034】
本発明の他の構成は、通信機能を有する第1情報処理装置と第2情報処理装置とを含む情報処理システムである。上記第1情報処理装置は、送信データ生成手段と、送信手段とを含む。送信データ生成手段は、送信先の異なる複数のデータを含む送信データを生成する。送信手段は、上記送信データをブロードキャストまたはマルチキャストで送信する。また、上記第2情報処理装置は、上記送信データを受信し、少なくとも当該送信データに含まれる自機宛のデータを取り出すデータ取り出し手段を含む。
【0035】
上記によれば、第1情報処理装置は、送信先の異なる複数のデータをまとめて複数の機器に送信することができ、効率よく複数のデータを送信することができる。また、第2情報処理装置は、上記送信データを受信して自機宛のデータを取り出すことができる。
【0036】
本発明の他の構成は、通信機能を有する情報処理装置のコンピュータにおいて実行される通信制御プログラムである。当該通信制御プログラムは、前記コンピュータを、送信データ生成手段と、送信手段として機能させる。送信データ生成手段は、送信先の異なる複数のデータを含む送信データを生成する。送信手段は、所定の宛先アドレスを指定して前記送信データを送信する。
【0037】
上記によれば、例えば、所定の宛先アドレスとしてブロードキャストアドレスが指定された場合、上記複数のデータをネットワーク全体に送信することができる。また、例えば、所定の宛先アドレスとしてユニキャストアドレスが指定された場合、上記複数のデータを1つの機器に送信することができる。
【発明の効果】
【0038】
本発明によれば、送信先の異なる複数のデータを効率よく送信することができる。
【図面の簡単な説明】
【0039】
【図1】開状態におけるゲーム装置10の正面図
【図2】閉状態におけるゲーム装置10の左側面図、正面図、右側面図および背面図
【図3】ゲーム装置10の内部構成を示すブロック図
【図4】本実施形態に係るゲームが実行される際に複数のゲーム装置10によって構成されるネットワークを示す図
【図5】本実施形態に係るゲームが実行された場合にゲーム装置の上側LCD22に表示される画像の一例を示す図
【図6】マスターにおいて生成されるクライアントの登録テーブル80を示す図
【図7】各ゲーム装置10のメモリ(メインメモリ32や無線通信モジュール36内のメモリ等)のメモリマップを示す図
【図8】各ゲーム装置10において実行される設定処理の流れを示すフローチャート
【図9】マスターによって定期的に送信されるビーコンのフレームフォーマットを示す図
【図10】ステップS5において画面に表示される画像の一例を示す図
【図11】マスターとして機能するゲーム装置10の処理(マスター処理)の詳細を示すフローチャート
【図12】クライアントとして機能するゲーム装置10の処理(クライアント処理)の詳細を示すフローチャート
【図13】オーディエンスとして機能するゲーム装置10の処理(オーディエンス処理)の詳細を示すフローチャート
【図14】各ゲーム装置10の状態の遷移を示す図
【図15】マスターのデータ送信処理の概要を示す図
【図16】マスターから送信されたフレームをクライアントが受信した場合、クライアントで行われる受信処理の概要を示す図
【図17】マスターにおいて行われるデータ送信処理(マスター)の詳細を示すフローチャート
【図18】クライアントにおいて行われるデータ送信処理(クライアント)の詳細を示すフローチャート
【図19】クライアントにおいて行われるデータ受信処理の詳細を示すフローチャート
【図20】オーディエンスにおいて行われるデータ受信処理(オーディエンス)の詳細を示すフローチャート
【図21】マスターにおいて行われるデータ受信処理(マスター)の詳細を示すフローチャート
【図22】マスターを経由してクライアントC1から全端末にデータが送信される様子を示す図
【図23】クライアントC1から直接全端末にデータを送信する様子を示す図
【発明を実施するための形態】
【0040】
(ゲーム装置の構成)
以下、本発明の一実施形態に係るゲーム装置について説明する。図1は、開状態におけるゲーム装置10の外観を示す正面図である。図2(a)は閉状態におけるゲーム装置10の左側面図であり、図2(b)は閉状態におけるゲーム装置10の正面図であり、図2(c)は閉状態におけるゲーム装置10の右側面図であり、図2(d)は閉状態におけるゲーム装置10の背面図である。ゲーム装置10は携帯型のゲーム装置であり、図1および図2に示すように折り畳み可能に構成されている。図1は、開いた状態(開状態)におけるゲーム装置10を示し、図2は、閉じた状態(閉状態)におけるゲーム装置10を示している。ゲーム装置10は、撮像部によって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることが可能である。また、ゲーム装置10は、交換可能なメモリカード内に記憶され、または、サーバや他のゲーム装置から受信したゲームプログラムを実行可能であり、仮想空間に設定された仮想カメラで撮像した画像などのコンピュータグラフィックス処理により生成された画像を画面に表示したりすることができる。
【0041】
まず、図1および図2を参照して、ゲーム装置10の外観構成について説明する。図1および図2に示されるように、ゲーム装置10は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に接続されている。
【0042】
(下側ハウジングの説明)
まず、下側ハウジング11の構成について説明する。図1および図2に示すように、下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12、タッチパネル13、各操作ボタン14A〜14L、アナログスティック15、LED16A〜16B、挿入口17、および、マイクロフォン用孔18が設けられる。以下、これらの詳細について説明する。
【0043】
図1に示すように、下側LCD12は下側ハウジング11に収納される。下側LCD12の画素数は、例えば、320dot×240dot(横×縦)であってもよい。下側LCD12は、後述する上側LCD22とは異なり、画像を(立体視可能ではなく)平面的に表示する表示装置である。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、下側LCD12として、任意の解像度の表示装置を利用することができる。
【0044】
図1に示されるように、ゲーム装置10は、入力装置として、タッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上に装着されている。なお、本実施形態では、タッチパネル13は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。本実施形態では、タッチパネル13として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度が一致している必要はない。また、下側ハウジング11の上側面には挿入口17(図1および図2(d)に示す点線)が設けられている。挿入口17は、タッチパネル13に対する操作を行うために用いられるタッチペン28を収納することができる。なお、タッチパネル13に対する入力は通常タッチペン28を用いて行われるが、タッチペン28に限らずユーザの指でタッチパネル13に対する入力をすることも可能である。
【0045】
各操作ボタン14A〜14Lは、所定の入力を行うための入力装置である。図1に示されるように、下側ハウジング11の内側面(主面)には、各操作ボタン14A〜14Lのうち、十字ボタン14A(方向入力ボタン14A)、ボタン14B、ボタン14C、ボタン14D、ボタン14E、電源ボタン14F、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lが、設けられる。十字ボタン14Aは、十字の形状を有しており、上下左右の方向を指示するボタンを有している。ボタン14A〜14E、セレクトボタン14J、HOMEボタン14K、およびスタートボタン14Lには、ゲーム装置10が実行するプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン14Aは選択操作等に用いられ、各操作ボタン14B〜14Eは例えば決定操作やキャンセル操作等に用いられる。また、電源ボタン14Fは、ゲーム装置10の電源をオン/オフするために用いられる。
【0046】
アナログスティック15は、方向を指示するデバイスである。アナログスティック15は、そのキートップが、下側ハウジング11の内側面に平行にスライドするように構成されている。アナログスティック15は、ゲーム装置10が実行するプログラムに応じて機能する。例えば、3次元仮想空間に所定のオブジェクトが登場するゲームがゲーム装置10によって実行される場合、アナログスティック15は、当該所定のオブジェクトを3次元仮想空間内で移動させるための入力装置として機能する。この場合において、所定のオブジェクトはアナログスティック15のキートップがスライドした方向に移動される。なお、アナログスティック15として、上下左右および斜め方向の任意の方向に所定量だけ傾倒することでアナログ入力を可能としたものを用いても良い。
【0047】
また、下側ハウジング11の内側面には、マイクロフォン用孔18が設けられる。マイクロフォン用孔18の下部には後述する音声入力装置としてのマイク42(図3参照)が設けられ、当該マイク42がゲーム装置10の外部の音を検出する。
【0048】
図2(b)および(d)に示されるように、下側ハウジング11の上側面には、Lボタン14GおよびRボタン14Hが設けられている。Lボタン14GおよびRボタン14Hは、例えば、撮像部のシャッターボタン(撮影指示ボタン)として機能することができる。また、図2(a)に示されるように、下側ハウジング11の左側面には、音量ボタン14Iが設けられる。音量ボタン14Iは、ゲーム装置10が備えるスピーカの音量を調整するために用いられる。
【0049】
図2(a)に示されるように、下側ハウジング11の左側面には開閉可能なカバー部11Cが設けられる。このカバー部11Cの内側には、ゲーム装置10とデータ保存用外部メモリ45とを電気的に接続するためのコネクタ(図示せず)が設けられる。データ保存用外部メモリ45は、コネクタに着脱自在に装着される。データ保存用外部メモリ45は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。
【0050】
また、図2(d)に示されるように、下側ハウジング11の上側面には、ゲーム装置10とゲームプログラムを記録した外部メモリ44を挿入するための挿入口11Dが設けられ、その挿入口11Dの内部には、外部メモリ44と電気的に着脱自在に接続するためのコネクタ(図示せず)が設けられる。当該外部メモリ44がゲーム装置10に接続されることにより、所定のゲームプログラムが実行される。
【0051】
また、図1および図2(c)に示されるように、下側ハウジング11の下側面にはゲーム装置10の電源のON/OFF状況をユーザに通知する第1LED16A、下側ハウジング11の右側面にはゲーム装置10の無線通信の確立状況をユーザに通知する第2LED16Bが設けられる。ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第2LED16Bは、無線通信の機能が有効である場合に点灯する。ゲーム装置10は、例えば、IEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。下側ハウジング11の右側面には、この無線通信の機能を有効/無効にする無線スイッチ19が設けられる(図2(c)参照)。
【0052】
なお、図示は省略するが、下側ハウジング11には、ゲーム装置10の電源となる充電式電池が収納され、下側ハウジング11の側面(例えば、上側面)に設けられた端子を介して当該電池を充電することができる。
【0053】
(上側ハウジングの説明)
次に、上側ハウジング21の構成について説明する。図1および図2に示すように、上側ハウジング21には、上側LCD(Liquid Crystal Display:液晶表示装置)22、外側撮像部23(外側撮像部(左)23aおよび外側撮像部(右)23b)、内側撮像部24、3D調整スイッチ25、および、3Dインジケータ26が設けられる。以下、これらの詳細について説明する。
【0054】
図1に示すように、上側LCD22は上側ハウジング21に収納される。上側LCD22の画素数は、例えば、800dot×240dot(横×縦)であってもよい。なお、本実施形態では上側LCD22は液晶表示装置であるとしたが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置などが利用されてもよい。また、上側LCD22として、任意の解像度の表示装置を利用することができる。
【0055】
上側LCD22は、立体視可能な画像を表示することが可能な表示装置である。また、本実施例では、実質的に同一の表示領域を用いて左目用画像と右目用画像が表示される。具体的には、左目用画像と右目用画像が所定単位で(例えば、1列ずつ)横方向に交互に表示される方式の表示装置である。または、左目用画像と右目用画像とが時間的に交互に表示され、メガネを用いてユーザの左目に左目用画像が右目に右目用画像が視認される方式の表示装置であってもよい。本実施例では、裸眼立体視可能な表示装置である。そして、横方向に交互に表示される左目用画像と右目用画像とを左目および右目のそれぞれに分解して見えるようにレンチキュラー方式やパララックスバリア方式(視差バリア方式)のものが用いられる。本実施形態では、上側LCD22はパララックスバリア方式のものとする。上側LCD22は、右目用画像と左目用画像とを用いて、裸眼で立体視可能な画像(立体画像)を表示する。すなわち、上側LCD22は、視差バリアを用いてユーザの左目に左目用画像をユーザの右目に右目用画像を視認させることにより、ユーザにとって立体感のある立体画像(立体視可能な画像)を表示することができる。また、上側LCD22は、上記視差バリアを無効にすることが可能であり、視差バリアを無効にした場合は、画像を平面的に表示することができる(上述した立体視とは反対の意味で平面視の画像を表示することができる。すなわち、表示された同一の画像が右目にも左目にも見えるような表示モードである)。このように、上側LCD22は、立体視可能な画像を表示する立体表示モードと、画像を平面的に表示する(平面視画像を表示する)平面表示モードとを切り替えることが可能な表示装置である。この表示モードの切り替えは、後述する3D調整スイッチ25によって行われる。
【0056】
外側撮像部23は、上側ハウジング21の外側面(上側LCD22が設けられた主面と反対側の背面)21Dに設けられた2つの撮像部(23aおよび23b)の総称である。外側撮像部(左)23aと外側撮像部(右)23bの撮像方向は、いずれも当該外側面21Dの外向きの法線方向である。外側撮像部(左)23aと外側撮像部(右)23bとは、ゲーム装置10が実行するプログラムによって、ステレオカメラとして使用することが可能である。外側撮像部(左)23aおよび外側撮像部(右)23bは、それぞれ所定の共通の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0057】
内側撮像部24は、上側ハウジング21の内側面(主面)21Bに設けられ、当該内側面の内向きの法線方向を撮像方向とする撮像部である。内側撮像部24は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。
【0058】
3D調整スイッチ25は、スライドスイッチであり、上述のように上側LCD22の表示モードを切り替えるために用いられるスイッチである。また、3D調整スイッチ25は、上側LCD22に表示された立体視可能な画像(立体画像)の立体感を調整するために用いられる。3D調整スイッチ25のスライダ25aは、所定方向(上下方向)の任意の位置にスライド可能であり、当該スライダ25aの位置に応じて上側LCD22の表示モードが設定される。また、スライダ25aの位置に応じて、立体画像の見え方が調整される。具体的には、スライダ25aの位置に応じて、右目用画像および左目用画像の横方向の位置のずれ量が調整される。
【0059】
3Dインジケータ26は、上側LCD22が立体表示モードか否かを示す。3Dインジケータ26は、LEDであり、上側LCD22の立体表示モードが有効の場合に点灯する。なお、3Dインジケータ26は、上側LCD22が立体表示モードになっており、かつ、立体視画像を表示するプログラム処理が実行されているときに限り、点灯するようにしてもよい。
【0060】
また、上側ハウジング21の内側面には、スピーカ孔21Eが設けられる。後述するスピーカ43からの音声がこのスピーカ孔21Eから出力される。
【0061】
(ゲーム装置10の内部構成)
次に、図3を参照して、ゲーム装置10の内部の電気的構成について説明する。図3は、ゲーム装置10の内部構成を示すブロック図である。図3に示すように、ゲーム装置10は、上述した各部に加えて、情報処理部31、メインメモリ32、外部メモリインターフェイス(外部メモリI/F)33、データ保存用外部メモリI/F34、データ保存用内部メモリ35、無線通信モジュール36、リアルタイムクロック(RTC)38、加速度センサ39、電源回路40、およびインターフェイス回路(I/F回路)41等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
【0062】
情報処理部31は、所定のプログラムを実行するためのCPU(Central Processing Unit)311、画像処理を行うGPU(Graphics Processing Unit)312等を含む情報処理手段である。情報処理部31のCPU311は、ゲーム装置10内のメモリ(例えば外部メモリI/F33に接続された外部メモリ44やデータ保存用内部メモリ35)に記憶されているプログラムを実行することによって、当該プログラムに応じた処理を実行する。なお、情報処理部31のCPU311によって実行されるプログラムは、他の機器との通信によって他の機器から取得されてもよい。また、情報処理部31は、VRAM(Video RAM)313を含む。情報処理部31のGPU312は、情報処理部31のCPU311からの命令に応じて画像を生成し、VRAM313に描画する。そして、情報処理部31のGPU312は、VRAM313に描画された画像を上側LCD22及び/又は下側LCD12に出力し、上側LCD22及び/又は下側LCD12に当該画像が表示される。
【0063】
情報処理部31には、メインメモリ32、外部メモリI/F33、データ保存用外部メモリI/F34、および、データ保存用内部メモリ35が接続される。外部メモリI/F33は、外部メモリ44を着脱自在に接続するためのインターフェイスである。また、データ保存用外部メモリI/F34は、データ保存用外部メモリ45を着脱自在に接続するためのインターフェイスである。
【0064】
メインメモリ32は、情報処理部31(のCPU311)のワーク領域やバッファ領域として用いられる揮発性の記憶手段である。すなわち、メインメモリ32は、上記プログラムに基づく処理に用いられる各種データを一時的に記憶したり、外部(外部メモリ44や他の機器等)から取得されるプログラムを一時的に記憶したりする。本実施形態では、メインメモリ32として例えばPSRAM(Pseudo−SRAM)を用いる。
【0065】
外部メモリ44は、情報処理部31によって実行されるプログラムを記憶するための不揮発性の記憶手段である。外部メモリ44は、例えば読み取り専用の半導体メモリで構成される。外部メモリ44が外部メモリI/F33に接続されると、情報処理部31は外部メモリ44に記憶されたプログラムを読み込むことができる。情報処理部31が読み込んだプログラムを実行することにより、所定の処理が行われる。データ保存用外部メモリ45は、不揮発性の読み書き可能なメモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用外部メモリ45には、外側撮像部23で撮像された画像や他の機器で撮像された画像が記憶される。データ保存用外部メモリ45がデータ保存用外部メモリI/F34に接続されると、情報処理部31はデータ保存用外部メモリ45に記憶された画像を読み込み、上側LCD22及び/又は下側LCD12に当該画像を表示することができる。
【0066】
データ保存用内部メモリ35は、読み書き可能な不揮発性メモリ(例えばNAND型フラッシュメモリ)で構成され、所定のデータを格納するために用いられる。例えば、データ保存用内部メモリ35には、無線通信モジュール36を介した無線通信によってダウンロードされたデータやプログラムが格納される。
【0067】
無線通信モジュール36は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。無線通信モジュール36は情報処理部31に接続される。情報処理部31は、無線通信モジュール36を用いてインターネットを介して他の機器との間でデータを送受信したりすることができる。なお、無線通信モジュール36は、IEEE802.11b/g規格以外の独自の通信方式をサポートしてもよい。
【0068】
また、情報処理部31には、加速度センサ39が接続される。加速度センサ39は、3軸(xyz軸)方向に沿った直線方向の加速度(直線加速度)の大きさを検出する。加速度センサ39は、下側ハウジング11の内部に設けられる。加速度センサ39は、図1に示すように、下側ハウジング11の長辺方向をx軸、下側ハウジング11の短辺方向をy軸、下側ハウジング11の内側面(主面)に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。なお、加速度センサ39は、例えば静電容量式の加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ39は1軸又は2軸方向を検出する加速度センサであってもよい。情報処理部31は、加速度センサ39が検出した加速度を示すデータ(加速度データ)を受信して、ゲーム装置10の姿勢や動きを検出することができる。
【0069】
また、情報処理部31には、RTC38および電源回路40が接続される。RTC38は、時間をカウントして情報処理部31に出力する。情報処理部31は、RTC38によって計時された時間に基づき現在時刻(日付)を計算する。電源回路40は、ゲーム装置10が有する電源(下側ハウジング11に収納される上記充電式電池)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
【0070】
また、情報処理部31には、I/F回路41が接続される。I/F回路41には、マイク42およびスピーカ43が接続される。具体的には、I/F回路41には、図示しないアンプを介してスピーカ43が接続される。マイク42は、ユーザの音声を検知して音声信号をI/F回路41に出力する。アンプは、I/F回路41からの音声信号を増幅し、音声をスピーカ43から出力させる。また、タッチパネル13はI/F回路41に接続される。I/F回路41は、マイク42およびスピーカ43(アンプ)の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成して情報処理部31に出力する。タッチ位置データは、タッチパネル13の入力面において入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。情報処理部31は、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
【0071】
操作ボタン14は、上記各操作ボタン14A〜14Lからなり、情報処理部31に接続される。操作ボタン14から情報処理部31へは、各操作ボタン14A〜14Iに対する入力状況(押下されたか否か)を示す操作データが出力される。情報処理部31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に従った処理を実行する。
【0072】
下側LCD12および上側LCD22は情報処理部31に接続される。下側LCD12および上側LCD22は、情報処理部31(のGPU312)の指示に従って画像を表示する。本実施形態では、情報処理部31は、上側LCD22に立体画像(立体視可能な画像)を表示させる。
【0073】
具体的には、情報処理部31は、上側LCD22のLCDコントローラ(図示せず)と接続され、当該LCDコントローラに対して視差バリアのON/OFFを制御する。上側LCD22の視差バリアがONになっている場合、情報処理部31のVRAM313に格納された右目用画像と左目用画像とが、上側LCD22に出力される。より具体的には、LCDコントローラは、右目用画像について縦方向に1ライン分の画素データを読み出す処理と、左目用画像について縦方向に1ライン分の画素データを読み出す処理とを交互に繰り返すことによって、VRAM313から右目用画像と左目用画像とを読み出す。これにより、右目用画像および左目用画像が、画素を縦に1ライン毎に並んだ短冊状画像に分割され、分割された右目用画像の短冊状画像と左目用画像の短冊状画像とが交互に配置された画像が、上側LCD22の画面に表示される。そして、上側LCD22の視差バリアを介して当該画像がユーザに視認されることによって、ユーザの右目に右目用画像が、ユーザの左目に左目用画像が視認される。以上により、上側LCD22の画面には立体視可能な画像が表示される。
【0074】
外側撮像部23および内側撮像部24は、情報処理部31に接続される。外側撮像部23および内側撮像部24は、情報処理部31の指示に従って画像を撮像し、撮像した画像データを情報処理部31に出力する。
【0075】
3D調整スイッチ25は、情報処理部31に接続される。3D調整スイッチ25は、スライダ25aの位置に応じた電気信号を情報処理部31に送信する。
【0076】
また、3Dインジケータ26は、情報処理部31に接続される。情報処理部31は、3Dインジケータ26の点灯を制御する。例えば、情報処理部31は、上側LCD22が立体表示モードである場合、3Dインジケータ26を点灯させる。
【0077】
また、情報処理部31には、角速度センサ46が接続される。角速度センサ46は、各軸(x軸、y軸、z軸)周りの角速度を検出する。ゲーム装置10は、角速度センサ46が逐次検出する角速度に基づいて、実空間におけるゲーム装置10の姿勢を算出することができる。具体的には、ゲーム装置10は、角速度センサ46によって検出された各軸周りの角速度を時間で積分することによって、各軸周りのゲーム装置10の回転角を算出することができる。以上がゲーム装置10の内部構成の説明である。
【0078】
(通信処理の概要)
次に、図面を参照して、本発明の一実施形態に係る通信処理の概要について説明する。ゲーム装置10は、無線通信モジュール36によって例えばIEEE802.11.b/gの規格に準拠した方式により、他のゲーム装置と通信可能である。本実施形態では、複数のゲーム装置10が、IEEE802.11.b/gの規格に一部準拠した方式により互いに接続されることによって、ゲームが進行する。
【0079】
図4は、本実施形態に係るゲームが実行される際に複数のゲーム装置10によって構成されるネットワークを示す図である。図4に示すように、本実施形態では、複数のゲーム装置10のうち、1台のゲーム装置10aがマスターとして機能し、ゲーム装置10bおよびゲーム装置10cがクライアントC1およびクライアントC2として機能する(ゲーム装置10a〜10cは参加モードで動作する)。また、本実施形態では、マスター、クライアントC1およびクライアントC2とは別のゲーム装置10dが、オーディエンス(観戦者)として機能する(ゲーム装置10dは非参加モードで動作する)。オーディエンスは、マスターおよびクライアント間で進行するゲームの観戦のみを行う。なお、クライアントとしてゲームに参加可能なゲーム装置10の台数は、例えば最大で15に設定される。また、オーディエンスとしてゲームに参加可能なゲーム装置10の台数には制限は設けられない。
【0080】
図5は、本実施形態に係るゲームが実行された場合にゲーム装置の上側LCD22に表示される画像の一例を示す図である。図5に示すように、例えば、ゲーム装置10a〜10dの上側LCD22には複数のゲームキャラクタが表示され、複数のゲームキャラクタがカートに乗ってコース上を走行するレースゲームが行われる。具体的には、ゲーム装置10a〜10cの上側LCD22には、マスター(ゲーム装置10a)のユーザによって操作されるゲームキャラクタ101、クライアントC1(ゲーム装置10b)のユーザによって操作されるゲームキャラクタ102、および、クライアントC2(ゲーム装置10c)のユーザによって操作されるゲームキャラクタ103が表示される。また、図5に示す画像は、オーディエンス(ゲーム装置10d)の上側LCD22にも表示される。オーディエンスは、レースゲームには当事者として参加しないが、ゲーム装置10a〜10cの間で進行するレースゲームの観戦者として参加して、当該レースゲームを見ることができる。なお、各ゲーム装置10の画面に表示される画像は異なっていてもよく、例えば、視点が異なる画像がそれぞれのゲーム装置10において表示されてもよい。例えば、マスターの画面には、マスターにおいて操作されるゲームキャラクタ101を中心とした画像が表示され、クライアントC1の画面にはクライアントC1で操作されるゲームキャラクタ102を中心とした画像が表示されてもよい。また、オーディエンスの画面には、マスターおよび各クライアントとは視点が異なる画像が表示されてもよい。また、オーディエンスにおいて、仮想空間の画像を表示せずに、ゲーム状況を認識可能な情報(例えば、コースマップの画像、数値や文字等)が画面に表示されてもよい。
【0081】
図4に示すように、マスター(ゲーム装置10a)と、クライアントC1(ゲーム装置10b)との間では、まず、認証が行われる。同様に、マスター(ゲーム装置10a)と、クライアントC2(ゲーム装置10c)との間も、認証が行われる。マスターとクライアントCとの間で認証が行われると、マスターは認証したクライアントCの識別情報(MACアドレス)を自機に登録し、登録したクライアントCとの間で、操作データ(例えば操作ボタン14等に対する操作データ)等を送受信する。同様に、クライアントは、マスターとの間で認証が行われると、マスターの識別情報(MACアドレス)を自機に登録する。これによって、マスターとクライアントCとの間でデータがやり取りされて、ゲームが進行する。一方、マスター(ゲーム装置10a)と、オーディエンス(ゲーム装置10d)との間では、認証は行われず、マスターにはオーディエンスの識別情報(MACアドレス)は登録されない。オーディエンスは、マスターの識別情報(MACアドレス)を自機に登録する。オーディエンスは、マスターおよびクライアントCから送信されるデータの受信のみを行い、マスターおよびクライアントCから送信されるデータに基づいてゲーム画像を生成して、自機の上側LCD22に当該ゲーム画像を表示する。マスターと、オーディエンスとの間では、認証のための通信は一切行われないため、オーディエンスはマスターおよびクライアントCに認識されない。
【0082】
図6は、マスターにおいて生成されるクライアントの登録テーブル80を示す図である。図6に示すように、マスターには、認証が完了したクライアントのMACアドレス、ユーザ名、および、IDが記憶される。ユーザ名は、各ゲーム装置のユーザによって割り当てられた名前である。IDは、マスターが各クライアントを登録する際に、各クライアントに割り当てる番号であり、例えば、1〜15までの整数値である。マスターは、認証が完了したクライアントを図6に示すテーブルに、例えば最大で15台まで登録する。一方、オーディエンスはマスターの登録テーブル80には登録されない。
【0083】
各ゲーム装置では、ゲームが実行される前に設定処理が行われる。当該設定処理が行われることによって、ゲーム装置が上記マスター、クライアント、および、オーディエンスの何れかで動作するかが決定される。本実施形態では、各ゲーム装置10のユーザが、自身が使用するゲーム装置をマスター、クライアント、および、オーディエンスの何れで動作させるかを選択する。
【0084】
(設定処理)
次に、ゲーム装置10において行われる設定処理について説明する。図7は、各ゲーム装置10のメモリ(メインメモリ32や無線通信モジュール36内のメモリ等)のメモリマップを示す図である。
【0085】
図7に示すように、ゲーム装置10のメモリには、通信プログラム71、モードデータ72、および、識別情報73が記憶される。通信プログラム71は、通信を制御するプログラムとゲームプログラムとを含む。具体的には、通信プログラム71は、後述する各処理(設定処理、マスター処理、クライアント処理、オーディエンス処理、データ送信処理、および、データ受信処理)を実行するためのプログラムである。モードデータ72は、ゲーム装置10を、マスター、クライアント、および、オーディエンスの何れのモードで動作させるかを示すデータである。識別情報73は、自機がどのマスターに接続しているかを識別するための識別情報であり、具体的には、マスターのMACアドレスである。ゲーム装置10がマスターとして機能する場合、識別情報73には自機のMACアドレスが記憶される。図7に示すデータの他、各ゲーム装置10のメモリには、それぞれのモードに応じて、種々のデータが記憶される。例えば、マスターには、図6に示す登録テーブル80を示すデータ等が記憶される。また、マスターおよびクライアントのメモリには、後述する個別送信データを格納するための領域である個別送信箱110、および、全送信データを格納するための領域である全送信箱120が設けられる。また、例えば、各ゲーム装置のメモリには、ゲーム処理に用いられる各種のデータが記憶される。
【0086】
図8は、各ゲーム装置10において実行される設定処理の流れを示すフローチャートである。ゲーム装置10の電源が投入されると、ゲーム装置10の情報処理部31(CPU311)は、ROM(図示せず)に記憶されている起動プログラムを実行し、これによってメインメモリ32等の各ユニットが初期化される。次に、ROMに記憶されたプログラムがメモリ(具体的には、メインメモリ32)に読み込まれ、情報処理部31のCPU311によって当該プログラムの実行が開始される。図8のフローチャートに示す処理は、以上の処理が完了した後に情報処理部31によって行われる。
【0087】
まず、ステップS1において、情報処理部31は、マスターになるか否かの選択画面を上側LCD22または下側LCD12に表示する。例えば、下側LCD12には、自機をマスターとして機能させるか否かをユーザに選択させるためのアイコンが表示される。次に、情報処理部31は、ステップS2の処理を実行する。
【0088】
ステップS2において、情報処理部31は、マスターが選択されたか否かを判定する。例えば、情報処理部31は、タッチパネル13が検出したタッチ位置に基づいて、マスターを選択するためのアイコンがタッチされたか否かを判定する。マスターが選択された場合、情報処理部31は、次にステップS3の処理を実行する。一方、マスターが選択されなかった場合、情報処理部31は、次にステップS4の処理を実行する。
【0089】
ステップS3において、情報処理部31は、自機をマスターモードに設定する。具体的には、情報処理部31は、モードデータ72にマスターであることを示す値を格納するとともに、識別情報73に自機のMACアドレスを設定する。次に情報処理部31は、図8に示す設定処理を終了する。
【0090】
一方、ステップS4において、情報処理部31は、ビーコンを受信したか否かを判定する。ここで、ビーコンは、マスターによってブロードキャストで定期的(例えば、100msec毎)に送信される管理(マネジメント)フレームである。マスターとして機能するゲーム装置10が自機の近くに存在する場合、情報処理部31は、マスターから定期的に送信されるビーコンを受信する。
【0091】
図9は、マスターによって定期的に送信されるビーコンのフレームフォーマットを示す図である。図9に示すように、ビーコンには、送信元アドレス(マスターのMACアドレス)、BSSID(マスターのMACアドレスと一致する)、ゲームID、接続数、最大接続数、接続済みリスト、および、観戦許可フラグが含まれる。送信元アドレスおよびBSSIDは、当該フレームのヘッダ部分に埋め込まれている。また、ゲームID、接続数、最大接続数、接続済みリスト、および、観戦許可フラグは、ベンダー固有の情報要素としてフレームのボディ部分に含められる情報である。ゲームIDは、各ゲーム装置10で行われるゲームを識別するためのIDである。また、接続数は、現在マスターの登録テーブル80に登録されているクライアント(認証済みのクライアント)の数である。最大接続数は、マスターが許容するクライアントの最大接続数(15)にマスター自身を加えた数であり、例えば、16に設定されている。接続済みリストは、現在マスターに登録されているクライアント(登録テーブル80に登録されたクライアント)を示す情報のリストであり、例えば、登録されているクライアントのユーザ名のリストである。観戦許可フラグは、オーディエンスによる観戦を許可するか否かを示す情報である。
【0092】
ステップS4において、情報処理部31は、ビーコンを受信した場合、次にステップS5の処理を実行する。一方、情報処理部31は、ビーコンを受信しなかった場合、次にステップS6の処理を実行する。
【0093】
ステップS5において、情報処理部31は、マスターおよびクライアントのリストの表示、および、選択画面の表示をする。ここでは、情報処理部31は、ステップS4で受信したビーコンに含まれる接続済みリストに基づいて、現在マスターに登録されているクライアントのリストを上側LCD22または下側LCD12に表示する。例えば、図4に示すゲーム装置10aがマスターとして機能しており、ゲーム装置10cがクライアントとしてマスターに登録されている場合、情報処理部31は、ゲーム装置10aおよびゲーム装置10cを示すアイコンを下側LCD12に表示する。なお、ステップS4において、送信元が異なる複数のビーコンを受信した場合(すなわち、自機の近くにマスターとして機能するゲーム装置10が複数存在する場合)、情報処理部31は、各マスターとそれに登録されているクライアントとを表示する。これにより、ユーザは、どのマスターに接続するか(どのマスターによって構成されるネットワークに接続するか)を選択する。また、情報処理部31は、自機をクライアントとして動作させるか、オーディエンスとして動作させるかをユーザに選択させるためのアイコンを上側LCD22または下側LCD12に表示する。例えば、下側LCD12には、ゲームに参加することを示すアイコンと、ゲームを観戦することを示すアイコンとが表示され、ユーザにどちらか一方のアイコンを選択させる。図10は、ステップS5において画面に表示される画像の一例を示す図である。図10に示すように、自機の近くにマスターM10およびマスターM20の2台のマスターが検出された場合(すなわち、異なる2つの端末からビーコンを受信した場合)、例えば下側LCD12の画面にはマスターによって構成されるグループ(ネットワーク)毎にリストが表示される。例えば、マスターM10、クライアントC11およびクライアントC12によって構成されるグループ1と、マスターM20、クライアントC21およびクライアントC22によって構成されるグループ2とが、表示される。例えば、ユーザは、表示されたグループの何れかを選択する。そして、ユーザは、その選択したグループに対して、ゲームに参加するか(クライアントとして動作させるか)、ゲームを観戦するか(オーディエンスとして動作させるか)を選択する。情報処理部31は、次にステップS7の処理を実行する。
【0094】
一方、ステップS6において、情報処理部31は、所定時間経過したか否かを判定する。所定時間が経過した場合、自機の近くにマスターとして機能するゲーム装置10を見つけることが出来なかったため、情報処理部31は、ステップS1の処理を再び実行する。一方、所定時間が経過していない場合、情報処理部31は、ステップS4の処理を再び実行する。
【0095】
ステップS7において、情報処理部31は、ゲームに参加することを示すアイコンが選択されたか否かを判定する。具体的には、情報処理部31は、タッチパネル13が検出したタッチ位置に基づいて、ゲームに参加することを示すアイコン(すなわち、自機をクライアントとして動作させることを示すアイコン)が選択されたか否かを判定する。判定結果が肯定の場合、情報処理部31は、次にステップS8の処理を実行する。判定結果が否定の場合、情報処理部31は、次にステップS9の処理を実行する。
【0096】
ステップS8において、情報処理部31は、自機をクライアントモードに設定する。具体的には、情報処理部31は、モードデータ72にクライアントであることを示す値を格納する。その後、情報処理部31は、図8に示す設定処理を終了する。
【0097】
ステップS9において、情報処理部31は、自機をオーディエンスモードに設定する。具体的には、情報処理部31は、モードデータ72にオーディエンスであることを示す値を格納する。その後、情報処理部31は、図8に示す設定処理を終了する。
【0098】
以上のようにして、各ゲーム装置10は、マスターモード、クライアントモード、および、オーディエンスモードの何れかに設定される。このようにして各ゲーム装置のモードが設定されると、各ゲーム装置は、設定されたモードに応じてそれぞれ異なる処理を実行する。
【0099】
(マスター処理)
次に、マスターで行われる処理の詳細について説明する。図11は、マスターとして機能するゲーム装置10の処理(マスター処理)の詳細を示すフローチャートである。
【0100】
図8に示す設定処理が行われて、ゲーム装置10がマスターに設定されると図11に示すマスター処理が、マスターの情報処理部31および無線通信モジュール36によって実行される。
【0101】
まず、ステップS10において、マスターは、ビーコンの送信を開始する。ステップS10においてビーコンの送信を開始すると、マスターは、以降のステップS11〜ステップS20の処理を行う間、定期的に(例えば、100msec毎に)ビーコンを送信する。次に、マスターは、ステップS11の処理を実行する。
【0102】
ステップS11において、マスターは、クライアントから接続要求(登録フレーム)があったか否かを判定する。具体的には、マスターは、クライアントから接続要求を示すフレーム(オーセンティケーションフレーム)を受信したか否かを判定する。判定結果が肯定の場合、マスターは、次にステップS12の処理を実行する。一方、判定結果が否定の場合、マスターは、次にステップS16の処理を実行する。
【0103】
ステップS12において、マスターは、認証処理を開始して、ステップS13の処理を実行する。
【0104】
ステップS13において、マスターは、接続を許可するか否かを判定する。マスターは、接続を許可すると判定した場合、次にステップS14の処理を実行する。一方、マスターは、マスターは、接続を拒否すると判定した場合、次にステップS15の処理を実行する。例えば、マスターは、ステップS13において、所定の認証方式による認証処理を行うことによって、接続要求を送信した端末の接続を許可するか否かを判定する。また、ステップS13において、マスターは、登録テーブル80を参照して、現在登録されているクライアントの数が最大接続数(例えば、15)より小さいか否かを判定する。本実施形態では、オープンシステム認証による認証が行われるものとする。すなわち、マスターは、ステップS13において、現在登録されているクライアントの数が最大接続数より小さければ、接続要求を送信したクライアントの接続を許可し、現在接続されているクライアントの数が最大接続数以上であれば、当該クライアントの接続を拒否する。
【0105】
ステップS14において、マスターは、接続要求を送信したクライアントとの接続を確立した後、当該クライアントを自機に登録する。具体的には、マスターは、当該クライアントに対して接続許可を示すフレーム(オーセンティケーションフレーム)を送信するとともに、当該クライアントとの間でアソシエーションフレームをやり取りすることでアソシエーション処理を実行する。アソシエーション処理の後、マスターとクライアントとはアプリケーションレベルでの登録処理を行う。具体的には、クライアントが、マスターに対して、ユーザ名を含む登録要求のためのフレームを送信する。登録要求のためのフレームを受信したマスターは、当該ユーザ名を含む情報を取得して、当該クライアントのためのIDを付与する。次に、マスターは、当該クライアントに対して登録許可のフレームを送信する。当該登録許可のフレームには、当該クライアントのユーザ名やID等の情報に加えて、マスターおよび他の全ての登録済みのクライアントのユーザ名やID等の情報が含まれる。これにより、マスターとクライアントとの間でアプリケーションレベルでの登録処理が行われる。そして、当該登録処理が完了すると、マスターは、当該クライアントを登録テーブル80に登録する。このとき、マスターは、当該クライアントのMACアドレス、ユーザ名、および、IDを登録テーブル80に登録する。これにより、マスターは、当該クライアントを自機に登録する。
【0106】
なお、上記アプリケーションレベルでの登録処理は必ずしも行われなくてもよい。すなわち、クライアントとマスターとの間でオーセンティケーションフレームおよびアソシエーションフレームのやり取りが行われた後、マスターおよびクライアントは、相互に登録してもよい。ステップS14の処理の後、マスターは、次にステップS16の処理を実行する。
【0107】
一方、ステップS15において、マスターは、接続要求を送信したクライアントに対して、接続拒否を示すフレームを送信する。ここでは、マスターは、接続要求を送信したクライアントを登録テーブル80に登録しない。マスターは、次にステップS16の処理を実行する。
【0108】
ステップS16において、マスターは、ゲームを開始するか否かの判定を行う。判定結果が肯定の場合、マスターは、各クライアントにゲームを開始することを示すコマンドを送信し、次にステップS17の処理を実行する。判定結果が否定の場合、マスターは、ステップS11の処理を再び実行する。例えば、マスターは、登録されたクライアントの数が最大接続数に達した場合、ゲームを開始すると判定してもよいし、ステップS11の処理の実行を開始してから所定時間が経過した場合に、ゲームを開始すると判定してもよい。ステップS11〜S16の処理が繰り返し行われることによって、マスターに1以上のクライアントが登録され、ゲームが開始される。
【0109】
ステップS17において、マスターは、プローブリクエスト(探索フレーム)を受信したか否かを判定する。具体的には、マスターは、オーディエンスから送信されるプローブリクエストを受信したか否かを判定する。後述するように、オーディエンスは、基本的にはデータの受信のみを行うが、プローブリクエストをマスターに対して送信することにより、マスターに対して情報を送信することができる。オーディエンスが送信するプローブリクエストについては、後述する。判定結果が肯定の場合、マスターは、次にステップS18の処理を実行する。判定結果が否定の場合、マスターは、次にステップS19の処理を実行する。
【0110】
ステップS18において、マスターは、受信したプローブリクエストに応じた処理を行い、当該処理の結果をプローブレスポンス(探索応答フレーム)として、オーディエンスに送信する。マスターは、次にステップS19の処理を実行する。
【0111】
ステップS19において、マスターは、データの送受信処理を行う。ここでは、マスターが、ゲーム処理のためのデータ(自機において行われた操作を示す操作情報や自機で操作されるゲームキャラクタに関する情報等を示すデータ)をクライアントに対して送信したり、クライアントから送信される、ゲーム処理のためのデータを受信したりする。マスターにおいて行われるデータ送受信処理の詳細については後述する。次に、マスターは、ステップS20の処理を実行する。
【0112】
ステップS20において、マスターは、ゲーム処理を実行する。ここでは、マスターは、ステップS19で受信したデータ、および、自機において行われた操作(操作ボタン14やアナログスティック15、タッチパネル13等に対して行われた操作)に応じて、ゲーム処理を行う。例えば、マスターは、自機において行われた操作に基づいて、自機で操作されるゲームキャラクタ101の動作を決定したり当該ゲームキャラクタ101の位置情報を更新したりする。また、マスターは、ステップS19において、例えば、クライアントC1から受信した操作情報、または、クライアントC1から受信したゲームキャラクタ102の位置情報に基づいて、当該ゲームキャラクタ102の位置を更新する。また、マスターは、仮想空間内の仮想カメラの位置や視線方向を決定して、各ゲームキャラクタを当該仮想カメラで撮像することにより、画像を生成する。そして、マスターは、上側LCD22に生成した画像を表示する。ステップS20の処理の後、マスターは、ステップS17の処理を再び実行する。
【0113】
以上のように、ステップS17〜ステップS20の処理が繰り返し実行されることによって、ゲームが進行する。なお、ユーザによってゲームが終了された場合や、レースゲームが終了した場合は、図11に示すマスター処理は終了する。
【0114】
(クライアント処理)
次に、クライアントで行われる処理の詳細について説明する。図12は、クライアントとして機能するゲーム装置10の処理(クライアント処理)の詳細を示すフローチャートである。
【0115】
図8に示す設定処理が行われて、ゲーム装置10がクライアントに設定されると図12に示すクライアント処理が、クライアントの情報処理部31および無線通信モジュール36によって実行される。
【0116】
まず、ステップS30において、クライアントは、JOIN処理を実行する。具体的には、クライアントは、上記設定処理のステップS5で選択されたマスターから送信されたビーコンを受信して、マスターとの同期を行う(JOINする)。クライアントは、次にステップS31の処理を実行する。
【0117】
ステップS31において、クライアントは、接続要求を送信する。具体的には、クライアントは、マスターに対して接続要求を示すフレーム(オーセンティケーションフレーム)を送信する。次に、クライアントは、ステップS32の処理を実行する。
【0118】
ステップS32において、クライアントは、マスターとの間で認証処理を行う。本実施形態では、オープンシステム認証による認証処理が行われるため、クライアントは、次にステップS33の処理を行う。
【0119】
ステップS33において、クライアントは、マスターから接続が許可されたか否かを判定する。具体的には、クライアントは、接続許可を示すフレーム(ステップS14で送信されたフレーム)を受信した場合、次にステップS34の処理を実行する。一方、クライアントは、接続拒否を示すフレーム(ステップS15で送信されたフレーム)を受信した場合、図12に示すクライアント処理を終了する。
【0120】
ステップS34において、クライアントは、マスターとの間で接続を確立する。具体的には、クライアントは、マスターとの間でアソシエーションフレームをやり取りすることでアソシエーション処理を実行する。アソシエーション処理の後、マスターとクライアントとの間で、上記アプリケーションレベルでの登録処理が行われる。具体的には、クライアントは、マスターに対して自機のユーザ名と上記所定の情報とを含む上記登録要求のためのフレームを送信し、当該マスターから上記登録許可のフレームを受信する。そして、当該登録処理が完了した後、クライアントは、当該マスターのMACアドレスを識別情報73としてメモリに記憶することにより、マスターを自機に登録する。クライアントは、次にステップS35の処理を行う。
【0121】
ステップS35において、クライアントは、ゲームを開始する。具体的には、クライアントは、マスターからゲームの開始を示すコマンドが送られた場合、ゲームを開始する。クライアントは、次にステップS36の処理を行う。
【0122】
ステップS36において、クライアントは、データの送受信処理を行う。ここでは、ゲーム処理のためのデータ(自機において行われた操作を示す操作情報や自機で操作されるゲームキャラクタに関する情報等を示すデータ)をマスターあるいは他のクライアントに対して送信したり、マスターあるいは他のクライアントから送信される、ゲーム処理のためのデータを受信したりする。クライアントにおいて行われるデータ送受信処理の詳細については、後述する。次に、クライアントは、ステップS37の処理を実行する。
【0123】
ステップS37において、クライアントは、ゲーム処理を実行する。ここでは、クライアントは、ステップS36で受信したデータ、および、自機において行われた操作(操作ボタン14やアナログスティック15、タッチパネル13等に対して行われた操作)に応じて、ゲーム処理を行う。例えば、クライアントは、自機において行われた操作に基づいて、自機で操作されるゲームキャラクタ102の動作を決定したり当該ゲームキャラクタ102の位置情報を更新したりする。また、クライアントは、ステップS36において、他のゲーム装置10から受信した操作情報、または、他のゲーム装置10から受信した当該他のゲーム装置10で操作されるゲームキャラクタの位置情報に基づいて、当該ゲームキャラクタの位置を更新する。また、クライアントは、仮想空間内の仮想カメラの位置や視線方向を決定して、各ゲームキャラクタを当該仮想カメラで撮像することにより、画像を生成する。そして、クライアントは、上側LCD22に生成した画像を表示する。ステップS37の処理の後、クライアントは、ステップS36の処理を再び実行する。
【0124】
ステップS36およびステップS37の処理が繰り返し実行されることでゲームが進行する。なお、ユーザによってゲームが終了された場合(ユーザが自機のゲームを終了した場合やマスターのユーザによってゲームが終了された場合)や、レースゲームが終了した場合は、図12に示すクライアント処理は終了する。
【0125】
(オーディエンス処理)
次に、オーディエンスで行われる処理の詳細について説明する。図13は、オーディエンスとして機能するゲーム装置10の処理(オーディエンス処理)の詳細を示すフローチャートである。
【0126】
図8に示す設定処理が行われて、ゲーム装置10がオーディエンスに設定されると図13に示すオーディエンス処理が、オーディエンスの情報処理部31および無線通信モジュール36によって実行される。
【0127】
まず、ステップS40において、オーディエンスは、JOIN処理を実行する。ステップS40の処理は、クライアントにおいて行われるステップS30の処理と同じである。具体的には、オーディエンスは、上記設定処理のステップS5で選択されたマスターから送信されたビーコンを受信して、当該マスターとの同期を行う(JOINする)。オーディエンスは、次にステップS41の処理を実行する。なお、所定時間以内にビーコンを受信しない場合、オーディエンスは、オーディエンス処理を終了する。
【0128】
ステップS41において、オーディエンスは、観戦許可フラグがONか否かを判定する。具体的には、オーディエンスは、ステップS40で受信したビーコンに含まれる観戦許可フラグ(図9参照)がONか否かを判定する。判定結果が肯定の場合、オーディエンスは、次にステップS42の処理を実行する。判定結果が否定の場合、オーディエンスは、図13に示すオーディエンス処理を終了する。
【0129】
ステップS42において、オーディエンスは、オーディエンス動作を開始する。具体的には、オーディエンスは、ステップS40で受信したビーコンに含まれるマスターのMACアドレスを識別情報73としてメモリに記憶することにより、自機にマスターを登録する。オーディエンスは、次にステップS43の処理を実行する。
【0130】
ステップS43において、オーディエンスは、ビーコンを受信する。具体的には、オーディエンスは、登録したマスターからのビーコンを受信する。オーディエンスは、次にステップS44の処理を実行する。
【0131】
ステップS44において、オーディエンスは、観戦許可フラグがONか否かを判定する。ステップS44の処理はステップS41の処理と同じである。オーディエンスは、定期的にマスターから送られるビーコンを受信して、当該ビーコンに含まれる観戦許可フラグがONか否かを判定する。判定結果が肯定の場合、オーディエンスは、次にステップS45の処理を実行する。判定結果が否定の場合、オーディエンスは、識別情報73をクリアして、図13に示すオーディエンス処理を終了する。
【0132】
ステップS45において、オーディエンスは、プローブリクエストを送信するか否かを判定する。ステップS45においては、第1の判定、および、第2の判定が行われる。
【0133】
具体的には、オーディエンスは、第1の判定として、例えば所定のボタンが押されたか否かを判定する。上述のように、オーディエンスとして機能するゲーム装置10のユーザは、自機の画面を見ることによって、マスターおよびクライアントの間で行われるゲームを観戦することができる。この場合において、オーディエンスのユーザは、例えば、オーディエンスとして機能するゲーム装置10において所定の操作(例えば、ボタン14B等)を行うことで、マスターに対して所定の情報を送信することができる。マスターは所定の情報をオーディエンスから受け取ると、それに応じたゲーム処理を行う。例えば、オーディエンスとして機能するゲーム装置10の所定の操作が行われた場合、オーディエンスは、マスターに対してプローブリクエストフレームを送信する。当該プローブリクエストフレームのヘッダ部分には、マスターのMACアドレスが含まれる。また、当該プローブリクエストフレームのボディ部分には、ベンダー固有の情報要素が含まれ、当該情報要素には所定の操作に応じたゲーム処理に用いられるデータが含まれる。マスターは、プローブリクエストフレームを受信することによって、当該所定の操作に応じたデータを取得する。そして、マスターは、当該データに基づいて、所定の処理を実行する。具体的には、例えば、マスターは、予めゲーム装置10に記憶された歓声を示す音声データを再生する。これにより、オーディエンスからの歓声をゲームに反映することができる。また、マスターは、オーディエンスからプローブリクエストを受信した場合、当該プローブリクエストのボディ部分に含まれる上記所定の操作に応じたデータを取り出して、当該データを含むフレームを他のクライアントに対して送信する。各クライアントは、マスターからのフレームを受信し、上記所定の操作に応じたデータに基づいて、マスターと同様の処理を行う。なお、マスターは、プローブリクエストを受信しても当該プローブリクエストを送信したオーディエンスを自機に登録しない。
【0134】
また、オーディエンスは、第2の判定として、プローブリクエストを送信可能か否かを判定する。具体的には、オーディエンスは、自機が所定のモード(ROPSモードと呼ぶ)か否かを判定する。オーディエンスが所定のモードの場合、プローブリクエストの送信は禁止され、オーディエンスは、受信のみ可能となる。
【0135】
図14は、各ゲーム装置10の状態の遷移を示す図である。図14に示すように、マスターは、定期的にビーコンをブロードキャストで送信する。当該ビーコンには、アウェイク状態を維持する期間Tを示す情報等が含まれる。ビーコンを受信してからの期間Tは、マスター、各クライアント、および、オーディエンスは、アウェイク状態を維持し、通信が可能となる。例えば、図14に示すように、アウェイク状態においてマスターは、各端末(クライアントおよびオーディエンス)に対してブロードキャストでデータBC1を送信することが可能であり、各端末は当該データを受信可能である。一方、マスターがビーコンを送信してから期間Tが経過すると、マスター及び各端末は仮眠状態(省電力状態)に移行する。仮眠状態では、マスター及び各端末は、データの送受信機能が制限されるため、データは送信されない。その後、さらに時間が経過すると、マスターは再びビーコンを送信して、マスター及び各端末は再びアウェイク状態に移行する(ビーコンが送信される直前にマスター及び各端末はデータの送受信が可能な状態になる)。このように、マスターおよび各端末は、それぞれ同期して電力モードの切り替えを繰り返す。
【0136】
オーディエンスは、所定のモード(ROPSモード)に設定されている場合において、上記ビーコンによる電力モードの切り替えに加えて、マスターから送信されるデータに基づいて、仮眠状態に切り替えられる。例えば、マスターは、送信するデータBC2に、所定のフラグMを含めることができる。オーディエンスは、M=1がセットされたデータBC2を受信すると、アウェイク状態を維持する。一方、オーディエンスは、ROPSモードが有効になっている状態で、M=0がセットされたデータBC3を受信すると、自機を仮眠状態に切り替える。ROPSモードが無効になっている場合は、オーディエンスは、所定のフラグMの値に応じて仮眠状態に移行しない。ROPSモードでは、オーディエンスは、上記プローブリクエストの送信を禁止し、マスターおよびクライアントから送られたデータの受信のみを行う。ROPSモードの有効/無効の設定は、例えば、オーディエンスとして機能するゲーム装置において、オーディエンスのユーザによって設定されてもよい。
【0137】
なお、第1の判定として所定の操作が行われたか否かを判定したが、例えば、第1の判定として、所定のタイミングになったか否かを判定してもよい。すなわち、例えば、オーディエンスは自動で上記ゲーム処理に用いられるデータを含むプローブリクエストを送信してもよい。
【0138】
以上のように、ステップS45において、オーディエンスは、第1の判定(所定の操作が行われたか否か等の判定)、および、第2の判定(プローブリクエストを送信可能か否かの判定)を行う。何れの判定結果も肯定である場合、オーディエンスは、次にステップS46の処理を実行する。一方、オーディエンスは、第1の判定および第2の判定の判定結果が何れか一方でも否定である場合、次にステップS48の処理を実行する。
【0139】
ステップS46において、オーディエンスは、プローブリクエストを送信する。具体的には、オーディエンスは、上記ゲーム処理に用いられるデータを含むプローブリクエストを、マスターに対して送信する。オーディエンスは、次にステップS47の処理を実行する。
【0140】
ステップS47において、オーディエンスは、プローブレスポンスを受信する。具体的には、オーディエンスは、マスターから送信されるプローブレスポンスを受信する。オーディエンスは、次にステップS48の処理を実行する。
【0141】
ステップS48において、オーディエンスは、データ受信処理を行う。ここでは、オーディエンスは、マスターから送信されるブロードキャストデータおよびクライアントから送信されるブロードキャストデータを受信する。なお、オーディエンスにおいて行われるデータ受信処理の詳細については、後述する。オーディエンスは、次にステップS49の処理を実行する。
【0142】
ステップS49において、オーディエンスは、ゲーム処理を実行する。具体的には、オーディエンスは、ステップS48で受信したブロードキャストデータに基づいて、マスターおよびクライアントで操作されるゲームキャラクタの動作を決定したり、ゲームキャラクタの位置情報を更新したりする。また、オーディエンスは、仮想空間内の仮想カメラの位置や視線方向を決定して、各ゲームキャラクタを当該仮想カメラで撮像することにより、画像を生成する。そして、オーディエンスは、上側LCD22に生成した画像を表示する。これにより、マスターおよびクライアントの上側LCD22に表示される画像と同じ画像が、オーディエンスの上側LCD22に表示される。なお、オーディエンスにおいて決定される仮想カメラの位置や視線方向は、マスターおよびクライアントにおけるそれと異なっていてもよい。この場合、オーディエンスの画面には、マスターおよびクライアントにおいて表示される画像とは異なる画像が表示される。ステップS49の処理の後、オーディエンスは、ステップS43の処理を再び実行する。
【0143】
ステップS43からステップS49の処理が繰り返し実行されることによって、オーディエンスの上側LCD22にはゲームが進行する様子が表示される。
【0144】
以上のようにして、本実施形態に係るゲームでは、複数(または単数)のクライアントがマスターと接続されて、1つのゲームが進行する。オーディエンスは、マスターおよびクライアントから送信されるブロードキャストデータを受信することによって、マスターおよびクライアント間で進行するゲームを観戦することができる。
【0145】
(データ送信処理の概要)
次に、データの送受信処理について、説明する。まず、図15を参照して、マスターにおいて行われるデータ送信処理の概要について説明する。
【0146】
図15は、マスターのデータ送信処理の概要を示す図である。図15に示すように、マスターには、個別送信データを格納する個別送信箱110、および、全送信データを格納する全送信箱120が用意される。
【0147】
個別送信データは、ある端末(マスターまたはクライアント)から、個別に他の端末に送信するデータである。個別送信データは、例えば、マスターからクライアントC1に送信するデータUD10、または、クライアントC1からクライアントC2に送信するデータUD11である。マスターからクライアントC1に送信するデータUD10は、クライアントC1において処理可能なひとまとまりのデータ(ゲーム処理に用いられるデータ)であり、例えば、マスターにおいて行われた操作に応じたデータである。当該データUD10をクライアントC1が受信すると、クライアントC1は、当該データUD10を用いて所定の処理を行う。同様に、クライアントC1からクライアントC2に送信するデータUD11は、クライアントC2において処理可能なひとまとまりのデータであり、例えば、クライアントC1において行われた操作に応じたデータである。
【0148】
全送信データは、マスターから全てのクライアントに送信するデータである。全送信データは、例えば、マスターから全クライアントに送信するデータBD20、または、マスターから全クライアントに送信するデータBD21である。個別送信データと同様に、データBD20およびデータBD21は、送信先で処理可能なひとまとまりのデータである。例えば、データBD20およびデータBD21は、送信元(この場合マスター)において行われた操作に応じたデータであり、これらのデータを受信した端末は、各データに基づいて所定の処理を行う。
【0149】
マスターは、クライアントに個別に送信する複数の個別送信データを一時的に個別送信箱110に格納する。また、マスターは、全てのクライアントに送信する複数の全送信データを一時的に全送信箱120に格納する。
【0150】
具体的には、図15に示すように、マスターがアプリケーションを実行することによって、マスターからクライアントC1に送信するデータUD10を生成した場合、当該データUD10を即時にクライアントC1に送信せず、個別送信箱110に一時的に格納する。データUD10は、比較的小さいサイズのデータ(例えば、100Byte程度)である。また、マスターは、クライアントC1からクライアントC2に送信するデータUD11をクライアントC1から受け取った場合、当該データUD11を即時にクライアントC2に送信せず、個別送信箱110に一時的に格納する。データUD11は、クライアントC1からクライアントC2に送信されるデータであり、マスターを経由して送信されるデータである。データUD11は、比較的小さいサイズのデータ(例えば、100Byte程度)である。同様に、マスターがアプリケーションを実行することによって、マスターから全クライアントに送信するデータBD20を生成した場合、当該データBD20を即時にブロードキャストで送信せず、全送信箱120に一時的に格納する。また、マスターから全クライアントに送信するデータBD21をアプリケーションが生成した場合、当該データBD21を即時にブロードキャストで送信せず、全送信箱120に一時的に格納する。データBD20およびデータBD21は、比較的小さいサイズのデータ(例えば、100Byte程度)である。
【0151】
より具体的には、マスターがデータUD10を個別送信箱110に格納する場合、マスターは、当該データUD10に付加情報130を付加する。付加情報130には、データUD10の送信元および送信先に関する情報が含まれる。また、付加情報130には、付加情報130とデータUD10とを含めたデータのサイズに関する情報が含まれる。例えば、データUD10の送信元および送信先に関する情報は、マスターおよびクライアントC1のID(またはMACアドレスでもよい)である。例えば、データUD10の送信元に関する情報は、マスターのID(またはMACアドレス)である。また、データUD10の送信先に関する情報は、クライアントC1のID(またはMACアドレス)である。同様に、マスターがデータUD11を個別送信箱110に格納する場合、マスターは、当該データUD11に付加情報131を付加する。付加情報131には、データUD11の送信元および送信先に関する情報が含まれる。また、付加情報131には、付加情報131とデータUD11とを含めたデータのサイズに関する情報が含まれる。例えば、データUD11の送信元および送信先に関する情報は、それぞれクライアントC1およびクライアントC2のID(またはMACアドレス)である。
【0152】
また、同様に、マスターがデータBD20を全送信箱120に格納する場合、マスターは、当該データBD20に付加情報132を付加する。付加情報132には、データBD20の送信元および送信先に関する情報が含まれる。また、付加情報132には、付加情報132とデータBD20とを含めたデータのサイズに関する情報が含まれる。例えば、データBD20の送信元および送信先に関する情報は、それぞれマスターおよび全端末(マスターやクライアント、オーディエンスを含めたネットワーク全体)であることを示すID(またはブロードキャストアドレスでもよい)である。同様に、マスターがデータBD21を全送信箱120に格納する場合、マスターは、当該データBD21に付加情報133を付加する。付加情報133には、データBD21の送信元および送信先に関する情報が含まれる。また、付加情報133には、付加情報133とデータBD21とを含めたデータのサイズに関する情報が含まれる。例えば、データBD21の送信元および送信先に関する情報は、それぞれマスターおよび全端末であることを示すID(またはブロードキャストアドレスでもよい)である。
【0153】
個別送信箱110は、所定のサイズ(例えば、1500Byte)を有する。マスターは、個別送信箱110にデータを格納する際に、個別送信箱110の空きサイズに基づいて、データを格納することができるか否かを判定する。マスターは、これ以上個別送信箱110にデータを格納することができないと判定した場合、個別送信箱110に格納された全てのデータを取り出して、当該全てのデータを含む1つのフレームを生成する。例えば、マスターは、これ以上個別送信箱110にデータを格納することができないと判定した場合、UD10およびUD11を含む1つのフレーム150を生成し、当該フレーム150を送信する。図15に示すように、フレーム150のヘッダ部分には、送信先MACアドレスとしてブロードキャストアドレスが指定される。また、フレーム150のデータ部分には、付加情報130が付加されたデータUD10、および、付加情報131が付加されたデータUD11が含まれる。さらに、フレーム150のデータ部分には、当該データ部分に含まれるデータの数(図15に示す例では、2)が含まれる。このように、マスターは、マスターからクライアントC1へ送信するデータUD10、および、クライアントC1からクライアントC2へ送信するデータUD11を1つのフレーム150に含ませて、ブロードキャストで送信する。
【0154】
同様に、全送信箱120は、所定のサイズ(例えば、1500Byte)を有し、マスターは、全送信箱120にデータを格納する際に、全送信箱120の空きサイズに基づいて、データを格納することができるか否かを判定する。マスターは、これ以上全送信箱120にデータを格納することができないと判定した場合、全送信箱120に格納された全てのデータを取り出して、当該全てのデータを含む1つのフレーム160を生成する。図15に示すように、フレーム160のヘッダ部分には、送信先MACアドレスとしてブロードキャストアドレスが指定される。また、フレーム160のデータ部分には、付加情報132が付加されたデータBD20、および、付加情報133が付加されたデータBD21が含まれる。さらに、フレーム160のデータ部分には、当該データ部分に含まれるデータの数(図15に示す例では、2)が含まれる。このように、マスターは、サイズの小さいデータBD20、および、データBD21を1つのフレーム160に含ませて、ブロードキャストで送信する。
【0155】
なお、クライアントにおいても、マスターと同様、上記個別送信データを格納する個別送信箱110、上記全送信データを格納する全送信箱120が用意される。しかしながら、クライアントにおいては、他のクライアントから送信されたデータを、別のクライアントに送信することはない。従って、クライアントの個別送信箱110には、自機から他のクライアントに送信するデータのみが、複数格納される。
【0156】
(データ受信処理の概要)
次に、データ受信処理の概要について説明する。上記のようにしてマスターから送信されたフレームを各クライアントが受信した場合、各クライアントは、受信したフレームに含まれる、自機宛のデータのみを取得する。図16は、マスターから送信されたフレームをクライアントが受信した場合、クライアントで行われる受信処理の概要を示す図である。
【0157】
図16に示すように、フレーム150をマスターが送信した場合、クライアントC1およびクライアントC2は、フレーム150を受信する。フレーム150を受信したクライアントC1は、当該フレーム150に含まれる1番目のデータ(付加情報130とデータUD10とを含むデータ)の付加情報130を参照し、当該データが自機宛のデータか否かを判定する。1番目のデータはマスターからクライアントC1へ送信されたデータであるため、クライアントC1は、データUD10を含む1番目のデータのみを取り出す。次に、クライアントC1は、2番目のデータ(付加情報131とデータUD11とを含むデータ)の付加情報131を参照して、当該2番目のデータが自機宛のデータか否かを判定する。2番目のデータの始まりは、1番目のデータの付加情報130が示す当該データのサイズに基づいて決定できる。2番目のデータはクライアントC1からクライアントC2へ送信されたデータであるため、クライアントC1は、2番目のデータを破棄する。
【0158】
また、フレーム150を受信したクライアントC2は、当該フレーム150に含まれる1番目のデータ(付加情報130とデータUD10とを含むデータ)の付加情報130を参照し、当該データが自機宛のデータか否かを判定する。1番目のデータはマスターからクライアントC1へ送信されたデータであるため、クライアントC2は、当該1番目のデータを破棄する。次に、クライアントC2は、2番目のデータ(付加情報131とデータUD11とを含むデータ)の付加情報131を参照して、当該2番目のデータが自機宛のデータか否かを判定する。2番目のデータはクライアントC1からクライアントC2へ送信されたデータであるため、クライアントC2は、データUD11を含む2番目のデータのみを取り出す。
【0159】
また、フレーム160についても、各クライアントで上記と同様の処理が行われて、各データが取り出される。この場合、各クライアントは、フレーム160に含まれる全てのデータ(データBD20およびデータBD21)を取り出す。具体的には、フレーム160の1番目のデータ(付加情報132とデータBD20とを含むデータ)の付加情報132には、宛先が全端末に指定されている。このため、クライアントC1およびクライアントC2は、データBD20を含む1番目のデータを取り出す。同様に、フレーム160の2番目のデータ(付加情報133とデータBD21とを含むデータ)の付加情報133には、宛先が全端末に指定されているため、クライアントC1およびクライアントC2は、データBD21を含む2番目のデータを取り出す。
【0160】
このようにして、各クライアントは、マスターから送信されたフレームの中から、自機宛および全クライアント宛のデータのみを取り出し、それ以外のデータは全て破棄する。
【0161】
(データ送信処理の詳細)
次に、データ送信処理の詳細について、説明する。まず、図17を参照して、マスターにおいて行われるデータ送信処理の詳細について、説明する。
【0162】
(マスターのデータ送信処理)
図17は、マスターにおいて行われるデータ送信処理(マスター)の詳細を示すフローチャートである。なお、図17に示すステップS50〜ステップS61の処理は、所定の時間間隔で繰り返し実行される。
【0163】
まず、ステップS50において、マスターは、個別送信箱110および全送信箱120にデータを格納してから所定時間が経過している場合、格納されているデータを全て送信する。個別送信箱110および全送信箱120にデータを格納してから所定時間が経過していない場合、マスターは、格納されているデータを送信しない。具体的には、マスターは、個別送信箱110にデータが格納されている場合、当該個別送信箱110に格納されたデータのうち、最も古いデータが格納されてから所定時間が経過したか否かを判定する。判定結果が肯定の場合、マスターは、個別送信箱110に格納された全てのデータを取り出し、当該全てのデータを含む1つのフレームを生成して、当該フレームをブロードキャストで送信する。生成されるフレームのヘッダ部分には、マスターのMACアドレスが含まれる。
【0164】
同様に、マスターは、全送信箱120にデータが格納されている場合、当該全送信箱120に格納されたデータのうち、最も古いデータが格納されてから所定時間が経過したか否かを判定する。判定結果が肯定の場合、マスターは、全送信箱120に格納された全てのデータを取り出し、当該全てのデータを含む1つのフレームを生成して、当該フレームをブロードキャストで送信する。生成されるフレームのヘッダ部分には、マスターのMACアドレスが含まれる。ステップS50の処理の後、マスターは、次にステップS51の処理を実行する。
【0165】
ステップS51において、マスターは、送信すべきデータを取得する。ここで取得される送信すべきデータは、例えば、マスター自身(アプリケーション層)が生成したデータ(マスターにおいて行われた操作に応じたデータ等、ゲーム処理の過程で生成したデータ)である。また、ここで取得される送信すべきデータは、例えば、あるクライアントから受信した、マスターを経由して他のクライアントに送信されるデータである。また、ここで取得される送信すべきデータは、例えば、あるクライアントから受信した、マスターを経由して全端末に送信されるデータである。より具体的には、送信すべきデータは、例えば、図15に示すUD10、UD11、BD20、BD21である。例えば、マスターは、自機の操作ボタン14に対する操作が行われた場合、当該操作に応じたデータを生成する。マスターは、ステップS51において、当該生成したデータを取得する。また、例えば、クライアントC1からマスターを経由してクライアントC2にデータが送信される場合、マスターは、クライアントC1からのデータを受信する(マスターのデータ受信処理については後述する)。マスターは、ステップS51において、当該受信したデータを取得する。マスターは、次にステップS52の処理を実行する。
【0166】
ステップS52において、マスターは、取得したデータが個別送信データか否かを判定する。具体的には、マスターは、ステップS51で取得したデータが、各クライアントに個別に送信するデータ(上記UD10やUD11)か否かを判定する。例えば、マスターから他のクライアントに個別のデータを送信するための操作が行われた場合、マスターは、取得したデータが、クライアントに個別に送信するデータであると判定する。判定結果が肯定の場合、マスターは、次にステップS53の処理を実行する。一方、判定結果が否定の場合、マスターは、次にステップS57の処理を実行する。
【0167】
ステップS53において、マスターは、取得したデータを個別送信箱110に格納可能か否かを判定する。具体的には、マスターは、ステップS51で取得したデータと、個別送信箱110に格納されたデータのサイズとに基づいて、ステップS51で取得したデータを個別送信箱110に格納可能か否かを判定する。判定結果が肯定の場合、マスターは、次にステップS54の処理を実行する。一方、判定結果が否定の場合、マスターは、次にステップS56の処理を実行する。
【0168】
ステップS54において、マスターは、ステップS51で取得したデータを個別送信箱110に格納する。具体的には、マスターは、ステップS51で取得したデータに付加情報を付加して、個別送信箱110に格納する。より具体的には、マスターは、付加情報として、当該データの送信元および送信先に関する情報、および、サイズに関する情報を付加する。マスターは、次にステップS55の処理を実行する。
【0169】
ステップS55において、マスターは、取得したデータを即時送信すべきか否かを判定する。例えば、マスターは、ステップS51でデータを取得した際に、アプリケーション層から指定されるパラメータに基づいて、取得したデータを即時送信すべきか否かを判定する。判定結果が肯定の場合、マスターは、次にステップS56の処理を実行する。一方、判定結果が否定の場合、マスターは、次にステップS57の処理を実行する。
【0170】
一方、ステップS56において、マスターは、個別送信箱110に格納された全てのデータを取り出し、当該全てのデータを含む1つのフレームを生成して、当該フレームをブロードキャストで送信する(ブロードキャストフレームを送信する)。生成されるフレームのヘッダ部分には、マスターのMACアドレスが含まれる。ステップS56の処理が行われることによって、個別送信箱110に格納された全てのデータ(上記UD10およびUD11)がブロードキャストで送信されて、個別送信箱110は空になる。そして、マスターは、フレームを送信した後、ステップS53で個別送信箱110に格納されなかったデータに付加情報を付加して、空になった個別送信箱110に当該データを格納する。なお、ステップS51で取得したデータのサイズが個別送信箱110のサイズよりも大きい場合、マスターは、当該データを個別送信箱110に格納できないため、当該データを複数のフレームに分割して送信する。
【0171】
また、取得したデータを個別送信箱110に格納不可能(ステップS53の判定結果が否定)であり、かつ、取得したデータを即時送信すべきである場合、マスターは、個別送信箱110に格納された全てのデータを含む1つのフレームを生成して送信する。その後、マスターは、ステップS51で取得した、即時送信すべきデータと当該データの付加情報(送信先および送信元に関する情報)とを含む1つのフレームをさらに生成して、当該フレームを送信する。これにより、個別送信箱110に格納された全てのデータが送信されるとともに、ステップS51で取得した即時送信すべきデータが送信される。
【0172】
また、マスターは、ステップS56において、自機の状態が仮眠状態である場合、生成したフレームをメモリに一時的に保存し、自機の状態がアウェイク状態に移行した後で、当該フレームを送信する。すなわち、仮眠状態ではデータの送信が制限されるため、マスターは、仮眠状態からアウェイク状態に移行した後にフレームを送信する。マスターは、仮眠状態のときにフレームを生成してメモリに一時的に保存する場合、当該フレームに含まれる上記所定のフラグMに1を設定する。また、マスターは、アウェイク状態のときにフレームを生成した場合、当該フレームに含まれる上記所定のフラグMに0を設定し、当該フレームを送信する。フレームを受信したオーディエンスは、上述のようにROPSモードが有効である場合、上記所定のフラグMの値に応じてアウェイク状態を維持したり、仮眠状態に移行したりする。ステップS56の処理の後、マスターは、図17に示す送信処理を終了する。
【0173】
ステップS57において、マスターは、ステップS51で取得したデータが全送信データか否かを判定する。具体的には、マスターは、ステップS51で取得したデータが、全クライアントに送信するデータ(上記BD20やBD21)か否かを判定する。例えば、マスターにおいて操作されるゲームキャラクタ101に対する操作(操作ボタン14等に対する操作)が行われた場合、マスターは、取得したデータが、全クライアントに送信するデータであると判定する。判定結果が肯定の場合、マスターは、次にステップS58の処理を実行する。一方、判定結果が否定の場合、マスターは、図17に示す処理を終了する。
【0174】
ステップS58において、マスターは、全送信箱120にデータを格納可能か否かを判定する。具体的には、マスターは、ステップS51で取得したデータと、全送信箱120の空きサイズとに基づいて、ステップS51で取得したデータを全送信箱120に格納可能か否かを判定する。判定結果が肯定の場合、マスターは、次にステップS59の処理を実行する。一方、判定結果が否定の場合、マスターは、次にステップS61の処理を実行する。
【0175】
ステップS59において、マスターは、ステップS51で取得したデータを全送信箱120に格納する。具体的には、マスターは、ステップS51で取得したデータに付加情報を付加して、全送信箱120に格納する。より具体的には、マスターは、付加情報として、当該データの送信元および送信先に関する情報、および、サイズに関する情報を付加する。ここで、送信先の情報として、全端末であることを示す情報が付加される。ステップS59の処理の後、マスターは、次にステップS60の処理を実行する。
【0176】
ステップS60において、マスターは、データを即時送信すべきか否かを判定する。例えば、マスターは、ステップS51でデータを取得した際に、アプリケーション層から指定されるパラメータに基づいて、データを即時送信すべきか否かを判定する。データを即時送信すべきと判定した場合、マスターは、ステップS51で取得したデータを全送信箱120に格納して、次にステップS61の処理を実行する。一方、判定結果が否定の場合、マスターは、図17に示す送信処理を終了する。
【0177】
一方、ステップS61において、マスターは、全送信箱120に格納された全てのデータを取り出し、当該データを含む1つのフレームを生成して、当該フレームをブロードキャストで送信する。生成されるフレームのヘッダ部分には、マスターのMACアドレスが含まれる。ステップS61の処理が行われることによって、全送信箱120に格納された全てのデータ(上記BD20およびBD21)が、ブロードキャストで送信される。そして、マスターは、フレームを送信した後、ステップS59で全送信箱120に格納されなかったデータに付加情報を付加して、空になった全送信箱120に当該データを格納する。なお、ステップS51で取得したデータのサイズが全送信箱120のサイズよりも大きい場合、マスターは、当該データを全送信箱120に格納できないため、当該データを複数のフレームに分割して送信する。また、ステップS58において全送信箱120にステップS51で取得したデータを格納することができないと判定され、かつ、当該ステップS51で取得したデータが即時送信すべきデータである場合、マスターは、全送信箱120に格納された全てのデータを含む1つのフレームを送信した後、ステップS51で取得したデータを含む1つのフレームをさらに送信する。ステップS61の処理の後、マスターは、図17に示す送信処理を終了する。
【0178】
(クライアントのデータ送信処理)
次に、図18を参照して、クライアントにおいて行われるデータ送信処理の詳細について、説明する。図18は、クライアントにおいて行われるデータ送信処理(クライアント)の詳細を示すフローチャートである。図18において、図17と同じ処理については同一の符号を付して説明を省略する。
【0179】
クライアントにおいて行われるデータ送信処理では、個別送信箱110に格納されたデータは、ブロードキャストではなく、ユニキャストでマスターに送信される。
【0180】
まず、クライアントは、図17におけるステップS50の処理の替わりに、ステップS65の処理を行う。ステップS65において、クライアントは、個別送信箱110および全送信箱120にデータを格納してから所定時間が経過している場合、格納されているデータを全て送信する。個別送信箱110および全送信箱120にデータを格納してから所定時間が経過していない場合、クライアントは、格納されているデータを送信しない。この場合において、クライアントは、個別送信箱110に格納されたデータをブロードキャストで送信する替わりに、当該データをユニキャストでマスターに送信する。具体的には、クライアントは、個別送信箱110にデータが格納されている場合、当該個別送信箱110に格納されたデータのうち、最も古いデータが格納されてから所定時間が経過したか否かを判定する。判定結果が肯定の場合、クライアントは、個別送信箱110に格納された全てのデータを取り出し、当該全てデータを含む1つのフレームを生成して、当該フレームをユニキャストでマスターに送信する。
【0181】
同様に、クライアントは、全送信箱120にデータが格納されている場合、当該全送信箱120に格納されたデータのうち、最も古いデータが格納されてから所定時間が経過したか否かを判定する。判定結果が肯定の場合、クライアントは、全送信箱120に格納された全てのデータを取り出し、当該全てデータを含む1つのフレームを生成して、当該フレームをブロードキャストで送信する。この場合において、生成されるフレームのヘッダ部分には、送信元アドレスとして自機(クライアント)のMACアドレスとともに、BSSIDとしてマスターのMACアドレスが含まれる。ステップS65の処理の後、クライアントは、次にステップS66の処理を実行する。
【0182】
ステップS66において、クライアントは、送信すべきデータを取得する。ここで、送信すべきデータは、クライアント自身が生成したデータ(自機において行われた操作に応じたデータ等、ゲーム処理の過程で生成したデータ)である。クライアントは、マスターのように他の端末から送信されたデータを別の端末に転送することはないため、ステップS66においては、クライアントは、クライアント自身が生成したデータを取得する。次に、クライアントは、ステップS67の処理を実行する。
【0183】
ステップS67において、クライアントは、ステップS66で取得したデータがマスターを経由して送信するデータか否かを判定する。具体的には、クライアントは、取得したデータが個別送信データ(他のクライアントに個別に送信するデータ)である場合、マスターを経由して送信するデータであると判定する。また、クライアントは、取得したデータが全送信データ(全端末に送信するデータ)であっても、所定の条件を満たす場合、マスターを経由して送信するデータであると判定する。例えば、取得したデータの種類が所定の種類(例えば、自機で行われた操作に応じたデータであって全端末と共有すべきデータ)である場合、または、アプリケーション層から指定された場合、クライアントは、取得したデータが全送信データであっても、当該データはマスターを経由して送信するデータであると判定する。
【0184】
図22は、マスターを経由してクライアントC1から全端末にデータが送信される様子を示す図である。図22に示すように、クライアントC1は、自機で生成したデータD1を含むフレーム200を生成して、当該フレーム200をマスターに対して送信する。フレーム200のヘッダ部分には、宛先MACアドレスとしてマスターのMACアドレスが指定される。また、フレーム200には、データD1と付加情報201とが含まれる。付加情報201は、データD1の送信元および送信先を示す情報である。具体的には、送信元の情報はクライアントC1を示す情報であり、送信先の情報は全端末(マスター、クライアントC2、および、オーディエンスを含む全端末)を示す情報である。フレーム200を受信したマスターは、データD1とその付加情報201とを取り出し、これらデータD1および付加情報201を全送信箱120に格納し、データD1および付加情報201を含むフレームをブロードキャストで送信する。
【0185】
ステップS67において判定結果が肯定の場合、クライアントは、次にステップS53の処理を実行する。一方、判定結果が否定の場合、クライアントは、次にステップS68の処理を実行する。
【0186】
クライアントは、ステップS53からステップS55の処理を行った後、ステップS68の処理を実行する。
【0187】
ステップS68において、クライアントは、ステップS66で取得したデータが各端末に直接全送信するデータか否かを判定する。ここで、直接全送信するデータとは、クライアントから直接他のすべての端末に対してブロードキャストするデータである。クライアントは、マスターを経由せずに全ての端末に対してブロードキャストでデータを送信することが可能である。
【0188】
図23は、クライアントC1から直接全端末にデータを送信する様子を示す図である。図23に示すように、クライアントC1は、例えば自機で生成したデータD2を含むフレーム210を生成して、当該フレーム210を全端末にブロードキャストで送信する。フレーム210のヘッダ部分には、宛先MACアドレスとしてブロードキャストアドレスが指定される。また、フレーム210には、データD2と付加情報211とが含まれる。付加情報211は、データD2の送信元(クライアントC1)および送信先(全端末)を示す情報である。各端末(マスター、クライアントC2、および、オーディエンス)は、フレーム210を受信して、データD2を取得する。このように、クライアントは、マスターを経由せずに直接全端末に対してデータを送信することが可能である。
【0189】
ステップS68において判定結果が肯定の場合、クライアントは、次にステップS58の処理を実行する。一方、判定結果が否定の場合、クライアントは、図18に示す処理を終了する。
【0190】
また、クライアントは、図17のステップS56の処理の替わりに、ステップS69の処理を実行する。
【0191】
ステップS69において、クライアントは、個別送信箱110に格納された全てのデータを取り出し、当該全てのデータを含む1つのフレームを生成して、当該フレームをユニキャストでマスターに送信する(ユニキャストフレームを送信する)。ステップS69の処理は、生成したフレームをブロードキャストではなくユニキャストでマスターに送信することを除いて、図17のステップS56の処理と同様である。以上で図18の説明を終了する。
【0192】
このようにして、クライアントにおいては、個別送信箱110に格納したデータをユニキャストでマスターに送信する。
【0193】
(データ受信処理の詳細)
次に、データ受信処理の詳細について、説明する。まず、図19を参照して、クライアントにおいて行われるデータ受信処理の詳細について、説明する。
【0194】
(クライアントのデータ受信処理)
図19は、クライアントにおいて行われるデータ受信処理の詳細を示すフローチャートである。
【0195】
まず、ステップS70において、クライアントは、フレームを受信する。具体的には、クライアントは、自機宛のフレーム、または、ブロードキャストで送信されたフレームのみを受信する。より具体的には、クライアントは、送信先アドレスが自機のMACアドレスと一致するフレームを受信する。また、クライアントは、送信先アドレスがブロードキャストアドレスであるフレームであって、かつ、自機のメモリに記憶した識別情報73(マスターのMACアドレス)と一致する情報を含むフレームを受信する。マスターあるいは他のクライアントが送信したブロードキャストフレームには、BSSID(マスターのMACアドレスと一致する)が含まれるため、クライアントは、当該BSSIDが識別情報73と一致する場合、当該ブロードキャストフレームを受信する。クライアントは、次にステップS71の処理を実行する。
【0196】
ステップS71において、クライアントは、ステップS70で取得したフレームのデータ部分を参照して、当該フレームに含まれるデータの数(図15参照)を取得する。クライアントは、次にステップS72の処理を実行する。
【0197】
ステップS72において、クライアントは、変数iに1をセットし、次にステップS73の処理を実行する。
【0198】
ステップS73において、クライアントは、i番目のデータの付加情報を取得する。すなわち、クライアントは、ステップS70で取得したフレームのデータ部分のうち、i番目のデータの付加情報(送信元および送信先に関する情報、サイズに関する情報)を取得する。クライアントは、次にステップS74の処理を実行する。
【0199】
ステップS74において、クライアントは、i番目のデータが自機または全端末宛か否かを判定する。ここで、全端末とは、ネットワーク内の全ての端末であり、マスター、クライアント、および、オーディエンスを含む。具体的には、クライアントは、ステップS73で取得した付加情報のうち、送信先に関する情報を参照して、i番目のデータが自機または全端末宛のデータか否かを判定する。より具体的には、クライアントは、送信先に関する情報が、自機のIDと一致するか否か(または自機のMACアドレスと一致するか否か)を判定する。また、クライアントは、送信先に関する情報が、全端末であることを示す値か否か(またはブロードキャストアドレスか否か)を判定する。判定結果が肯定の場合、クライアントは、次にステップS75の処理を実行する。一方、判定結果が否定の場合、クライアントは、次にステップS76の処理を実行する。
【0200】
ステップS75において、クライアントは、i番目のデータ(図16参照)を取り出す。なお、取り出されたi番目のデータは、メモリに格納される。そして、上述したゲーム処理(ステップS37)において、メモリに格納されたi番目のデータを用いたゲーム処理が行われる。例えば、i番目のデータに含まれる付加情報が示す送信元の情報(例えば、送信元がマスターであることを示す情報)と当該i番目のデータに含まれるデータ本体(例えば、データUD10)とを用いて、ゲーム処理が行われる。クライアントは、次にステップS76の処理を実行する。
【0201】
ステップS76において、クライアントは、変数iに1を加算して、次にステップS77の処理を実行する。
【0202】
ステップS77において、クライアントは、変数iがステップS71で取得したデータの数よりも大きいか否かを判定し、判定結果が肯定の場合、図19に示す受信処理を終了する。一方、判定結果が否定の場合、クライアントは、ステップS73の処理を再び実行する。
【0203】
ステップS73〜ステップS77の処理が繰り返し行われることによって、受信したフレームに含まれるデータのうち、自機または全クライアント宛のデータのみが取り出される。
【0204】
(オーディエンスのデータ受信処理)
次に、図20を参照して、オーディエンスにおいて行われるデータ受信処理の詳細について、説明する。図20は、オーディエンスにおいて行われるデータ受信処理(オーディエンス)の詳細を示すフローチャートである。なお、図20において、図19と同じ処理については同一の符号を付して説明を省略する。
【0205】
まず、ステップS80において、オーディエンスは、フレームを受信する。具体的には、オーディエンスは、ブロードキャストで送信されたフレームを受信する。より具体的には、オーディエンスは、送信先アドレスがブロードキャストアドレスであるフレームであって、かつ、自機のメモリに記憶した識別情報73(マスターのMACアドレス)と一致する情報を含むフレームを受信する。マスターあるいはクライアントが送信したブロードキャストフレームには、BSSIDが含まれるため、オーディエンスは、当該BSSIDが識別情報73と一致する場合、当該ブロードキャストフレームを受信する。オーディエンスは、次にステップS71からステップS73の処理を実行する。
【0206】
ステップS73の処理の後、オーディエンスは、ステップS81の処理を実行する。
【0207】
ステップS81において、オーディエンスは、ステップS73で取得したi番目のデータが全端末宛か否かを判定する。具体的には、オーディエンスは、ステップS73で取得した付加情報のうち、送信先に関する情報を参照して、i番目のデータが全端末宛のデータか否かを判定する。より具体的には、オーディエンスは、送信先に関する情報が、全端末であることを示す値か否か(またはブロードキャストアドレスか否か)を判定する。判定結果が肯定の場合、オーディエンスは、次にステップS82の処理を実行する。一方、判定結果が否定の場合、オーディエンスは、次にステップS76の処理を実行する。
【0208】
ステップS82において、オーディエンスは、i番目のデータを取り出す。取り出されたi番目のデータは、メモリに格納される。そして、上述したゲーム処理(ステップS49)において、メモリに格納されたi番目のデータを用いたゲーム処理が行われる。例えば、i番目のデータに含まれる付加情報が示す送信元および送信先の情報と、当該i番目のデータに含まれるデータ本体とを用いて、ゲーム処理が行われる。このように、オーディエンスは受信したフレームに含まれる全端末宛のデータを用いてゲーム処理を行うことにより、マスターおよび各クライアントで行われた操作に応じたゲーム処理の結果を得ることができる。オーディエンスは、次にステップS76およびステップS77の処理を実行する。
【0209】
このようにして、オーディエンスでは、フレームに含まれる全てのデータが個別に取り出され、当該個別に取り出されたデータに基づいて、ゲーム処理が行われる。
【0210】
(マスターのデータ受信処理)
次に、図21を参照して、マスターにおいて行われるデータ受信処理の詳細について、説明する。図21は、マスターにおいて行われるデータ受信処理(マスター)の詳細を示すフローチャートである。なお、図21において、図19と同じ処理については同一の符号を付して説明を省略する。
【0211】
まず、マスターは、ステップS90の処理を行う。具体的には、マスターは、自機宛のフレーム、または、ブロードキャストで送信されたフレームを受信する。より具体的には、マスターは、送信先アドレスが自機(マスター)のMACアドレスと一致するフレームを受信する。また、マスターは、送信先アドレスがブロードキャストアドレスであるフレームであって、かつ、マスターのMACアドレスと一致する情報(BSSID)を含むフレームを受信する。ステップS90の処理の後、マスターは、次にステップS71およびステップS72の処理を実行する。ステップS72の処理の後、マスターは、ステップS91の処理を行う。
【0212】
ステップS91において、マスターは、i番目のデータを取り出す。マスターは、取り出したi番目のデータについて、当該データの付加情報が示す送信先に応じた処理を行う。例えば、マスターは、取り出したi番目のデータが自機宛のデータである場合、当該i番目のデータをメモリに記憶する。そして、上述したゲーム処理(ステップS20)において、メモリに記憶されたi番目のデータが用いられる。また、マスターは、取り出したi番目のデータが他のクライアント宛のデータである場合、メモリに当該他のクライアント宛のデータ(取り出したi番目のデータ)を記憶する。そして、上述したデータ送信処理のステップS51において、当該他のクライアント宛のデータが取得され、当該他のクライアント宛のデータが上記個別送信箱110に格納され、他のクライアントに送信される。また、マスターは、取り出したi番目のデータが全端末宛のデータである場合、メモリに当該全端末宛のデータ(取り出したi番目のデータ)を記憶する。そして、上述したデータ送信処理のステップS51において、当該全端末宛のデータが取得され、当該全端末宛のデータが全送信箱120に格納され、全端末に送信される。
【0213】
ステップS91の処理の後、マスターは、次にステップS76およびステップS77の処理を実行する。
【0214】
このようにして、マスターでは、フレームに含まれる全てのデータが個別に取り出され、当該個別に取り出されたデータがゲーム処理に用いられたり、クライアントに送信されたりする。
【0215】
以上のように、本実施形態では、マスターおよびクライアントは、相互に登録して互いに通信する。これにより、マスターおよびクライアント間でゲームが進行する。具体的には、ゲームが開始される前に、クライアントは、自機をマスターに登録させるために接続要求をマスターに送信する。マスターは当該接続要求を受信して、当該接続要求に対する応答をクライアントに送信するとともに、当該クライアントの識別情報(MACアドレス)を自機に登録する。クライアントは、接続要求に対する応答を受信したことに応じて、自機にマスターの識別情報(MACアドレス)を登録する。これにより、マスターおよびクライアントは、相互に登録する。一方、オーディエンスは、マスターには登録されずに、マスターを一方的に自機に登録する。すなわち、オーディエンスは、マスターに対して接続要求を送信することなく、マスターからのビーコンを受信して、当該ビーコンに含まれるマスターの識別情報(MACアドレス)を自機に登録する。そして、オーディエンスは、マスターおよびクライアントが送信したデータを受信して、マスターおよびクライアント間で進行するゲームを観戦する。
【0216】
このように、オーディエンスはマスターには登録されないため、マスターはオーディエンスを管理する必要がない。従って、マスターおよびクライアント間で進行するゲームを観戦するオーディエンスの数には制限はなく、より多くのゲーム装置10がオーディエンスとしてゲームに参加してもマスターの管理負荷が増大することはない。このため、例えば、複数人が参加して進行するゲームを、大多数のユーザが観戦することができる。
【0217】
また、本実施形態では、クライアントは、他のクライアントへのデータをマスターを経由して送信する。このため、クライアント間の距離が離れていたり、クライアント間に電波を妨害するものが存在したりすることによってクライアント間で直接通信ができない場合でも、クライアントは他のクライアントへデータを送信することができる。
【0218】
また、本実施形態では、マスター(あるいはクライアント)は、送信すべき比較的小さいサイズのデータを取得した場合、即時に当該データを送信せず、一時的にメモリに蓄積する。そして、マスターは、蓄積した複数のデータをまとめて1つのフレームで送信する。この場合において、マスターは、複数のデータのそれぞれについて、送信先および送信元に関する情報を付加する。
【0219】
このように、複数の比較的小さいサイズのデータを1つのフレームにまとめて送信することにより、各データを個々に送信する場合と比較して、データを送信する速度が速くなる。すなわち、フレームには送信すべきデータ本体にヘッダ等の情報が付加されるため、1つのデータを1つのフレームに含めて複数のフレームを送信するよりも、複数のデータを1つのフレームに含めて送信する方が、効率がよい。上記実施形態のような複数のゲーム装置が無線通信で接続されて進行するゲームの場合、各ゲーム装置間では比較的小さいサイズのデータが頻繁にやり取りされることが多い。このような場合、各データを各フレームに含めてそれぞれ送信すると、データを送受信する速度が遅くなり、ゲームの進行の障害となることがある。しかしながら、本実施形態では、複数のデータを1つのフレームにまとめて送信するため、効率的にデータを送受信することができる。
【0220】
(変形例)
なお、上記実施形態では、クライアントおよびオーディエンスはマスターのMACアドレスを登録し、マスターはクライアントのMACアドレスを登録した。他の実施形態では、各端末を識別可能な識別情報であれば、どのような情報を登録してもよい。
【0221】
また、上記実施形態では、マスターはビーコンを送信し、クライアントは当該ビーコンを受信(パッシブスキャン)したことに応じて、接続要求を当該ビーコンを送信したマスターに対して送信することにより、マスターとクライアントとは相互に接続(登録)した。他の実施形態では、アクティブスキャンにより、マスターとクライアントとが相互に接続されてもよい。すなわち、クライアントがプローブリクエストを送信し、当該プローブリクエストに応じて、マスターがプローブレスポンス(管理フレームの一種)を送信してもよい。そして、クライアントがマスターからのプローブレスポンスを受信したことに応じて、クライアントが接続要求を送信してもよい。
【0222】
また、上記実施形態では、マスターとクライアントとの間での認証はオープンシステム認証であるとしたが、他の実施形態では、他の認証方式でマスターとクライアントとが認証されてもよい。
【0223】
また、上記実施形態では、各ゲーム装置がIEEE802.11の規格に従って通信を行うこととしたが、他の実施形態では、どのような規格によって通信が行われてもよい。
【0224】
また、上記実施形態では、順次取得したデータを個別送信箱110等に順次格納した。他の実施形態では、各データは順次取得される必要はなく、個別送信箱110等に格納される必要はない。例えば、アプリケーションが同時に宛先の異なる複数のデータを生成した場合、個別送信箱110等に当該複数のデータを格納せずに、当該複数のデータと宛先の情報とを含む1つのフレームを生成して、送信してもよい。
【0225】
また、上記実施形態では、取得したデータを個別送信箱110等に格納することができない場合、すなわち、個別送信箱110等に空き領域がない場合、個別送信箱110等のデータを送信した。また、個別送信箱110等にデータを格納してから所定時間経過した場合、格納された全てのデータを送信した。さらに、取得したデータが即時送信すべきデータである場合、当該即時送信すべきデータとともに個別送信箱110等に格納されたデータを送信した。他の実施形態では、これら3つの条件に限らず、格納されたデータを送信するための所定の条件が満たされた場合に、格納されたデータを送信してもよい。例えば、所定の時間間隔で自動的に格納されたデータを送信するようにしてもよいし、各ゲーム装置10においてゲームの状態が所定の状態になった場合に、格納されたデータを送信してもよい。
【0226】
また、上記実施形態では、個別送信箱110等に格納された全てのデータを1つのフレームに含めて送信した。他の実施形態では、個別送信箱110等に格納された全てのデータを送信せずに、個別送信箱110等に格納されたデータのうちの少なくとも2つのデータを1つのフレームに含めて送信してもよい。例えば、最も古いデータから数えてN個目までのデータが1つのフレームで送信されてもよい。
【0227】
また、上記実施形態では、マスターはブロードキャストでデータを送信したが、他の実施形態では、マルチキャストでデータを送信してもよい。
【0228】
また、上記実施形態では、携帯型ゲーム装置を想定して各ゲーム装置が無線通信を行うこととしたが、他の実施形態では、バッテリで動作する情報処理装置であってもよいし、常時電力供給を受ける情報処理装置であってもよい。また、情報処理装置は、有線で通信を行うものであってもよい。この場合、各情報処理装置は、HUB等で接続され、データ通信を行う。
【0229】
また、他の実施形態においては、上述した処理の一部又は全部は、1又は複数の専用回路によって行われてもよい。また、上記処理は、ゲーム装置10が備える複数のコンピュータ(CPU311や無線通信モジュール36内の処理部等)によって行われてもよい。
【0230】
また、上述した通信方法は、ゲーム装置10以外の携帯型情報処理装置、例えば、PDA(Personal Digital Assistant)や無線LAN機能を有する高機能携帯電話、独自の通信方式により他の機器と通信可能に構成された携帯型情報処理装置等において適用されてもよい。
【符号の説明】
【0231】
10 ゲーム装置
14 操作ボタン
15 アナログスティック
31 情報処理部
32 メインメモリ
36 無線通信モジュール
311 CPU
80 登録テーブル
101、102、103 ゲームキャラクタ
110 個別送信箱
120 全送信箱
130、131、132、133 付加情報

【特許請求の範囲】
【請求項1】
通信機能を有する情報処理装置のコンピュータにおいて実行される通信制御プログラムであって、
送信先の異なる複数のデータを含む送信データを生成する送信データ生成手段、
前記送信データをブロードキャストまたはマルチキャストで送信する送信手段として、前記コンピュータを機能させる、通信制御プログラム。
【請求項2】
前記送信データ生成手段は、各データごとの送信先情報を前記送信データに含ませる、請求項1に記載の通信制御プログラム。
【請求項3】
前記複数のデータを順次取得する取得手段と、
前記取得手段が取得したデータを記憶手段に順次格納する格納制御手段として、前記コンピュータをさらに機能させ、
前記送信データ生成手段は、前記記憶手段に格納された少なくとも2つのデータと当該少なくとも2つのデータのそれぞれの送信先情報とを含む前記送信データを生成する、請求項2に記載の通信制御プログラム。
【請求項4】
前記記憶手段に格納されたデータを送信するための所定の条件が満たされたか否かを判定する第1判定手段として、前記コンピュータを機能させ、
前記送信データ生成手段は、前記第1判定手段によって前記所定の条件が満たされたと判定された場合、前記記憶手段に格納された少なくとも2つのデータと当該少なくとも2つのデータのそれぞれの送信先情報とを含む前記送信データを生成し、
前記送信手段は、前記送信データ生成手段が生成した送信データを送信する、請求項3に記載の通信制御プログラム。
【請求項5】
前記記憶手段に格納されてから所定時間が経過したデータが存在するか否かを判定する第2判定手段として、前記コンピュータをさらに機能させ、
前記送信データ生成手段は、前記第2判定手段によって前記所定時間が経過したデータが存在すると判定された場合、前記所定時間が経過したデータを少なくとも含む前記送信データを生成し、
前記送信手段は、前記送信データ生成手段が生成した送信データを送信する、請求項3または4に記載の通信制御プログラム。
【請求項6】
前記記憶手段は、所定のサイズを有し、
前記格納制御手段は、前記取得手段が取得したデータを前記記憶手段に格納可能か否かを判定し、
前記送信データ生成手段は、前記格納制御手段によって前記データを格納不可能と判定された場合、前記記憶手段に格納された少なくとも2つのデータと当該少なくとも2つのデータのそれぞれの送信先情報とを含む前記送信データを生成し、
前記送信手段は、前記送信データ生成手段が生成した送信データを送信する、請求項3から5の何れかに記載の通信制御プログラム。
【請求項7】
前記取得手段によって取得されたデータを即時送信するか否かを判定する第3判定手段として、前記コンピュータをさらに機能させ、
前記送信データ生成手段は、前記第3判定手段によって前記データを即時送信すると判定された場合、当該データを含む前記送信データを生成し、
前記送信手段は、前記送信データ生成手段が生成した送信データを送信する、請求項3から6の何れかに記載の通信制御プログラム。
【請求項8】
前記取得手段は、他の情報処理装置から送られたデータを取得し、
前記送信データ生成手段は、前記複数のデータのそれぞれの送信元情報を前記送信データにさらに含める、請求項2から7の何れかに記載の通信制御プログラム。
【請求項9】
他の情報処理装置から送られた前記送信データを受信し、当該送信データに含まれる前記送信先情報に基づいて、少なくとも自機宛のデータを取り出すデータ取り出し手段として、前記コンピュータをさらに機能させる、請求項2から7の何れかに記載の通信制御プログラム。
【請求項10】
前記格納制御手段は、前記取得手段が取得したデータを第1記憶領域または第2記憶領域に格納し、
前記送信データ生成手段は、前記第1記憶領域および前記第2記憶領域の何れか一方に格納された少なくとも2つのデータを含む前記送信データを生成する、請求項3から9の何れかに記載の通信制御プログラム。
【請求項11】
前記取得手段が取得する各データは、送信先で処理可能なひとまとまりのデータである、請求項1から10の何れかに記載の通信制御プログラム。
【請求項12】
前記送信データ生成手段は、前記送信先情報をフレームのデータ部分に含て前記送信データを生成する、請求項1から11の何れかに記載の通信制御プログラム。
【請求項13】
前記送信データ生成手段は、前記送信元情報をフレームのデータ部分に含めて前記送信データを生成する、請求項8に記載の通信制御プログラム。
【請求項14】
送信先の異なる複数のデータを含む送信データを生成する送信データ生成手段と、
前記送信データをブロードキャストまたはマルチキャストで送信する送信手段とを備える、通信制御装置。
【請求項15】
送信先の異なる複数のデータを含む送信データを生成する送信データ生成ステップと、
前記送信データをブロードキャストまたはマルチキャストで送信する送信ステップとを含む、通信制御方法。
【請求項16】
通信機能を有する第1情報処理装置と第2情報処理装置とを含む情報処理システムであって、
前記第1情報処理装置は、
送信先の異なる複数のデータを含む送信データを生成する送信データ生成手段と、
前記送信データをブロードキャストまたはマルチキャストで送信する送信手段とを含み、
前記第2情報処理装置は、
前記送信データを受信し、少なくとも当該送信データに含まれる自機宛のデータを取り出すデータ取り出し手段を含む、情報処理システム。
【請求項17】
通信機能を有する情報処理装置のコンピュータにおいて実行される通信制御プログラムであって、
送信先の異なる複数のデータを含む送信データを生成する送信データ生成手段と、
所定の宛先アドレスを指定して前記送信データを送信する送信手段として、前記コンピュータを機能させる、通信制御プログラム。
【請求項18】
送信先の異なる複数のデータを含む送信データを生成する送信データ生成手段と、
所定の宛先アドレスを指定して前記送信データを送信する送信手段とを備える、通信制御装置。

【図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

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2012−178745(P2012−178745A)
【公開日】平成24年9月13日(2012.9.13)
【国際特許分類】
【出願番号】特願2011−40936(P2011−40936)
【出願日】平成23年2月25日(2011.2.25)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】