この発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<全体構成>
図1は、本発明に係る情報処理システムの典型例について説明する図である。
図1を参照して、この発明の実施の形態に従う本発明に係る情報処理システムは、複数の携帯型の情報処理装置を含む。本例においては、複数の携帯型の情報処理装置の一例として携帯ゲーム装置(以下、単にゲーム装置とも称する)1〜3が示されている。なお、ここでは、3台のゲーム装置が示されているが少なくとも2台有ればよい。また、さらに複数台のゲーム装置を設けた構成とすることも可能である。
なお、本例においては、本発明の実施の形態における情報処理システムにおいて、必須の構成物ではないが、携帯型の情報処理装置であるゲーム装置と無線通信可能な固定端末機器5を設ける。
ゲーム装置1〜3は、互いに無線通信を実行してデータの授受が可能であり、本例においては、ゲーム装置1(以下、単に、自機とも称する)と、他のゲーム装置および固定端末機器5と通信する場合について説明する。
また、図1においては、ゲーム装置1(自機)において、無線通信を実行する場合の通信可能範囲10が点線で示されている。すなわち、図1の例においては、ゲーム装置1(自機)は、ゲーム装置2,3と、固定端末機器5とそれぞれ通信が可能な状態であることが示されている。なお、図1においては、自機のゲーム装置1の通信可能範囲10に、ユーザ名「一郎」および「二郎」のゲーム装置2,3がそれぞれ存在し、ゲーム装置1は、ユーザ名「二郎」のゲーム装置3と無線通信している様子が示されている。
詳細については後述するが、ゲーム装置1とゲーム装置3とは、互いに無線通信を実行して、互いに有している後述する交換データを交換する。そして、ゲーム装置1,3は、交換した交換データを利用することが可能であるものとする。
また、後述するが、固定端末機器5は、周辺のゲーム装置に対して所定の配信データを配信する。そして、ゲーム装置は、固定端末機器5から配信された配信データを取得した場合には、取得した配信データを利用することが可能であるものとする。
<ゲーム装置の構成>
図2は、本発明の実施の形態に従うゲーム装置1の構成の概略ブロック図である。なお、ゲーム装置2,3についても同様の構成であるためその詳細な説明は省略する。
図2を参照して、ゲーム装置1は、CPU31と、メインメモリ32と、メモリ制御回路33と、保存用データメモリ34と、プリセットデータ用メモリ35と、メモリカードインターフェース(メモリカードI/F)36と、無線通信モジュール38と、リアルタイムクロック(RTC)40と、電源回路41とを備えている。
CPU31は、プログラムを実行するための演算処理手段である。本発明の実施の形態では、当該プログラムは、ゲーム装置1内のメモリ(たとえば、保存用データメモリ34)やメモリカード26等に記録されている。なお、CPU31によって実行されるプログラムは、ゲーム装置1内のメモリに予め記録されていてもよいし、メモリカード26から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。また、CPU31は、マルチタスク制御が可能である。具体的には、ゲーム処理を実行しつつ、バックグラウンドで、後述する交換データの授受処理を実行することができる。
CPU31には、メインメモリ32、メモリ制御回路33、およびプリセットデータ用メモリ35が接続される。また、メモリ制御回路33には、保存用データメモリ34が接続される。
メインメモリ32は、CPU31のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ32は、上記情報処理に用いられる各種データを記憶したり、外部(メモリカード26や他の機器等)から取得されるプログラムを記憶したりする。本発明の実施の形態では、メインメモリ32として、たとえばPSRAM(Pseudo-SRAM)を用いる。
保存用データメモリ34は、後述するが、CPU31によって実行されるプログラムやカメラ23によって撮影された画像のデータ等を記憶するための記憶手段である。
保存用データメモリ34は、不揮発性の記憶媒体によって構成されており、たとえば本実施例ではNAND型フラッシュメモリで構成される。メモリ制御回路33は、CPU31の指示に従って、保存用データメモリ34に対するデータの読み出しおよび書き込みを制御する回路である。
プリセットデータ用メモリ35は、ゲーム装置1において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ35としては、SPI(Serial Peripheral Interface)バスによってCPU31と接続されるフラッシュメモリを用いることができる。
メモリカードI/F36は、CPU31に接続される。メモリカードI/F36は、コネクタに装着されたメモリカード26に対するデータの読み出しおよび書き込みを、CPU31の指示に応じて行なう。
無線通信モジュール38は、後述するが同種のゲーム装置等との間で無線通信を行なう機能を有する。
さらに、CPU31には、RTC40および電源回路41が接続される。RTC40は、時間をカウントしてCPU31に出力する。たとえば、CPU31は、RTC40によって計時された時間に基づいて、現在時刻(日付)等を計算することもできる。電源回路41は、ゲーム装置1が有する電源から供給される電力を制御し、ゲーム装置1の各部品に電力を供給する。
さらに、ゲーム装置1は、マイク43およびアンプ44を備えている。マイク43およびアンプ44は、それぞれI/F回路42に接続される。マイク43は、ゲーム装置1に向かって発声されたユーザの音声を検知して、当該音声を示す音声信号をI/F回路42に出力する。アンプ44は、I/F回路42からの音声信号を増幅してスピーカ45から出力させる。I/F回路42は、CPU31に接続される。
I/F回路42は、マイク43からの音声信号の入力を受ける音声入力制御回路54と、アンプ44に対する音声信号の出力の制御を行なう音声出力制御回路56とを含む。
音声入力制御回路54は、マイク43からの音声信号の入力レベルを検知して、音声信号に対するA/D変換を行なったり、音声信号を所定の形式の音声データに変換したりする。
音声出力制御回路56は、出力信号がステレオ設定あるいはモノラル設定に従って、アンプ44に出力する音声信号を調整する。
操作ボタン14は、図示しないが複数の操作ボタンで構成され、CPU31に接続される。操作ボタン14からCPU31へは、各操作ボタンに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に応じた処理を実行する。
カメラ23は、CPU31に接続される。カメラ23は、CPU31の指示に応じて画像を撮影し、撮影した画像データをCPU31に出力する。たとえば、CPU31は、カメラ23に対して撮影指示を行ない、撮影指示を受けたカメラが画像を撮影して画像データをCPU31に送る。
また、LCD12は、CPU31に接続される。LCD12は、CPU31の指示に従って図示しないが操作画面等を表示する。
メモリカード26は、図示しないコネクタと着脱可能であり、コネクタと接続された場合にはメモリカードI/F36と接続される。メモリカード26は、ROM27と、バックアップRAM28とが内蔵され、ROM27には、ゲーム装置1で実行するためのアプリケーション(以下、単にアプリとも称する)等が予め設定(記憶)されている。なお、ROM27には、ROM27に記憶されるアプリケーションを識別するための名称(タイトル)を意味する識別番号が記憶されている。また、バックアップRAM28には、アプリケーションの途中のデータや結果データが記憶(セーブ)される。また、バックアップRAM28は、後述するが、当該アプリケーションを実行した場合に他のゲーム装置に提供するデータ(以下、交換データとも称する)をゲーム装置に保存した場合には交換フラグデータを記憶する。
なお、典型的には、後述するアプリケーション識別情報(アプリケーションID)とは、アプリケーションを識別するための名称(タイトル)を意味するデータ(識別番号)を含むが、必ずしもそれに限られるものではなく、本実施例においては、アプリケーションを識別するための名称に加えて、交換データとして交換対象となるデータであるかを識別可能とするデータ(交換条件データ)をも含むものとする。
図3は、本発明の実施の形態に従う無線通信モジュール38の構成について説明する図である。
図3を参照して、本発明の実施の形態に従う無線通信モジュール38は、CPU60と、RF−IC(Radio Frequency IC)62と、メモリ制御部64と、モジュールI/F76と、各部と接続されている内部バス74とを含む。
メモリ制御部64は、RAM66と、無線通信に関するプログラムの少なくとも一部等が保存されるROM72とを含む。RAM66には、フィルタリング用データ保存領域68と、MACアドレスリスト保存領域70,70#と、送信無線フレーム保存領域67と、受信無線フレーム保存領域69とが設けられる。
フィルタリング用データ保存領域68は、後述するがCPU31からの指示に従って登録された少なくとも1つ以上のフィルタリング用データを保存する領域である。フィルタリング用データは、交換データに設定されているデータであり、通信相手である他のゲーム装置等との間で実質的な通信を実行する前に交換データの交換等の処理が可能であるかどうかを判定するためのデータが含まれている。具体的には、フィルタリング用データには、交換データのアプリケーションを識別するための後述するアプリケーションIDが含まれている。
また、本例においては後述するが当該アプリケーションIDと他のアプリケーションIDとを比較する際の判定のアルゴリズムとして複数の判定方式を設けることが可能であり、フィルタリング用データの各々に含まれているアプリケーションIDを各判定方式に対応するリストとして纏めて保存することが可能である。そして、リスト毎に保存する際には、判定のアルゴリズムの方式を示す情報(アルゴリズム識別情報)を含むリストヘッダ情報がそれぞれのリストに対して設けられる。なお、リストヘッダ情報は、当該リストをさらに、交換データのアプリケーションの種別毎に分類するためのシステムフラグ情報を含む。
また、MACアドレスリスト保存領域70は、後述するがCPU31からの指示に従って登録された他のゲーム装置のMACアドレスを保存する領域である。また、MACアドレスリスト保存領域70#は、後述するがCPU31からの指示に従って登録された固定端末機器5のMACアドレスを保存する領域である。当該MACアドレスは、後述するが通信相手である他のゲーム装置等との間では実質的な通信を実行する前に以前に通信した通信相手であるかどうかを判定するMACアドレスフィルタリング処理の際に用いられる。
なお、本例においては、他のゲーム装置のMACアドレスを保存する領域と、固定端末機器のMACアドレスを保存する領域とをそれぞれ分けて設けた構成について説明するが同じ領域に保存するようにすることも可能である。
送信無線フレーム保存領域67は、後述するがRF−IC62を介して外部のゲーム装置に送信する無線フレーム(送信無線フレームとも称する)のデータを保存する領域である。また、受信無線フレーム保存領域69は、後述するが外部のゲーム装置から送信され、RF−IC62を介して受信された無線フレーム(受信無線フレームとも称する)のデータを保存する領域である。なお、受信無線フレーム保存領域69には、後述するが、固定端末機器5から送信された配信無線フレームのデータも保存される。
CPU60は、無線通信に関するプログラムを実行するための演算処理手段である。
CPU60は、メモリ制御部64に格納されているROM72から読出されたプログラムによって無線通信の所定の機能を実現することが可能である。具体的には、一例としてROM72には後述する携帯端末間通信を実行するためのアプリケーションおよび携帯固定端末間通信を実行するためのアプリケーションが格納されている。
CPU60が当該携帯端末間処理を実行するためのアプリケーションを実行することにより、無線通信モジュール38において交換データを交換する通信相手を探索する処理(以下、交換相手探索処理とも称する)が実行される。そして、無線通信モジュール38における交換相手探索処理により交換データを交換する通信相手が見つかった場合には、後述するがゲーム装置1の本体側のCPU31に通知されて、交換データの授受処理が実行される。本実施例においては、本体側のCPU31の指示に従って通信相手との接続を確立する処理が実行されて、接続が確立された後、交換データの授受処理が実行される。
同様に、CPU60が携帯固定端末間通信を実行するためのアプリケーションを実行することにより、無線通信モジュール38において、配信データを提供する通信相手を探索する処理(以下、配信相手探索処理とも称する)が実行される。そして、無線通信モジュール38における配信相手探索処理により配信データを提供する通信相手が見つかった場合には、後述するがゲーム装置1の本体側のCPU31に通知されて、配信データを取得する処理が実行される。本実施例においては、本体側のCPU31の指示に従って通信相手である固定端末機器との接続を確立する処理が実行されて、接続が確立された後、配信データを取得する処理が実行される。
RF−IC62は、例えば、他のゲーム装置に対してCPU60の指示により送信されるデータを変調して、アンテナ61から電波を送信する。ただし、電波強度は、非常に微弱で、電波法においてユーザが無免許で利用できる程度の小さい値に設定されている。また、無線通信モジュール38は、例えば、他のゲーム装置から送信された電波をアンテナ61で受信して、RF−IC62において受信データが復調される。復調された受信データは、メモリ制御部64のRAM66に格納される。これにより、無線通信モジュール38は、例えばデータ伝送距離が10mの範囲内の近距離無線通信を行うことができる。
モジュールI/F76は、無線通信モジュール38とゲーム装置1のCPU31等の本体部とのインターフェースであり、無線通信モジュールのアンテナ61で受信し、RAM66に格納された他のゲーム装置から送信された交換データは、モジュールI/F76を介してゲーム装置1の本体側のCPU31に出力され、メインメモリ32に格納される。また、CPU31からの指示に従って、保存用データメモリ34に格納されている後述する交換データがモジュールI/F76を介して無線通信モジュール38に入力されてメモリ制御部64のRAM66に一時的に格納され、上述したように送信されるデータとしてアンテナ61から例えば外部の他のゲーム装置に出力することが可能である。なお、受信した交換データは、一時的にRAM66に格納した後、メインメモリ32に格納しても良いし、直接メインメモリ32に格納するようにしても良い。また、送信される交換データについてもRAM66に一時的に格納しても良いし、格納することなく送信するようにしても良い。本例においては、送信および受信する交換データについてはRAM66に一時的に格納する場合については説明しないものとする。
なお、外部の他のゲーム装置に送信するデータとしては、モジュールI/F76を介してゲーム装置1の本体側のCPU31の指示により入力されたデータに限られず、無線通信モジュール38内でCPU60の指示によりメモリ制御部64に設けられたRAM66等に格納されているデータに基づいて生成した送信無線フレームを送信データとして出力する場合もある。後述するが当該送信無線フレームは、子機側からの接続要求信号として出力される。
図4は、本発明の実施の形態に従う保存用データメモリ34のメモリマップについて説明する図である。
図4を参照して、保存用データメモリ34は、交換データ保存領域80と、受信データ保存領域82と、内蔵アプリ保存領域84と、システムプログラム保存領域86と、MACアドレスリスト保存領域88,88#と、フレンドコードリスト保存領域89とを含む。
交換データ保存領域80は、他のゲーム装置との間でのデータの交換を実行する際に用いられる交換データが保存される領域である。
この交換データ保存領域80には、後述するが複数の記憶領域である複数の送信BOXが設けられている。送信BOXは、各アプリケーション毎に設けられる。この各送信BOXは、アプリケーションで利用可能なデータを他のゲーム装置に提供する交換データとして格納する領域であり、実際にアプリケーションで利用されるデータは、当該アプリケーションを識別するデータ(例えばアプリケーションID)に対応付けられた送信BOXに格納される。また、後述するが、各送信BOXには、複数の交換データを格納することが可能である。
なお、上述したようにアプリケーションIDは、本例において、単にアプリケーションを識別するデータを含むが、必ずしもそれに限られるものではなく、後述するが交換データが交換対象となるデータであるかを識別可能とするデータ(交換条件データ)も含むものとする。また、後述するが、当該アプリケーションIDを無線通信モジュール38のフィルタリング用データ保存領域68に保存する際に、判定のアルゴリズムの方式毎のリストとして保存する際には、当該アプリケーションIDをどのリストに保存するべきかを識別するために判定のアルゴリズムの方式を示す情報(アルゴリズム識別情報)がアプリケーションIDと対応付けられて格納することも可能である。また、後述する内蔵アプリ保存領域84に格納されているアプリケーション(内蔵アプリとも称する)と、それ以外のアプリケーション例えば、メモリカード26に保存されたアプリケーション(ゲームアプリとも称する)とを区別する、すなわちアプリケーションの種別を判別するためのシステムフラグ情報もアプリケーションIDと対応付けられて格納することも可能である。なお、本例においては、内蔵アプリと、それ以外のアプリケーション例えば、メモリカード26に保存されたアプリケーション(ゲームアプリとも称する)とを区別するためにシステムフラグ情報が用いられる場合について説明するが、さらに別のアプリケーション例えば、固定端末機器から配信されるアプリケーションプログラム等については別のシステムフラグ情報を割り当てて用いるようにすることも可能である。
また、受信データ保存領域82は、他のゲーム装置との間でのデータの交換の際に、他のゲーム装置から受信した交換データを保存する領域である。この受信データ保存領域82には、後述するが複数の記憶領域である複数の受信BOXが設けられている。受信BOXは、各アプリケーション毎に設けられる。この各受信BOXは、他のゲーム装置から提供された交換データを受信データとして格納して保存する領域であり、実際にアプリケーションで利用されるデータは、当該アプリケーションを識別するデータ(例えばアプリケーションID)に対応付けられた受信BOXに格納される。また、後述するが、各受信BOXには、複数の受信データを格納することが可能である。
また、内蔵アプリ保存領域84は、ゲーム装置1に格納されている、当該ゲーム装置1上で実行する複数のアプリケーション等が保存されている領域である。ゲーム装置1は、前述のとおり、メモリカード26に保存されたアプリケーションを実行することができるが、この内蔵アプリ保存領域84に保存されたアプリケーションを実行することも可能である。内蔵アプリ保存領域84に保存されるアプリケーションは、予め保存されていても良いし、インターネット等を介して外部からダウンロードして保存するようにしてもよい。なお、内蔵アプリ保存領域84には、アプリケーション本体用の保存領域と、各アプリケーション毎に設けられた、当該アプリケーションが占有的に使用するセーブデータを保存するための保存領域(アプリケーション用記憶領域)とが設けられる。
したがって、内蔵アプリ保存領域84に複数のアプリケーションが保存されている場合には、それぞれのアプリケーションに対応して設けられた複数の保存領域が設けられる。
また、システムプログラム保存領域86は、情報処理装置の本体機能を実現するための本体機能プログラム、例えば、起動するアプリケーションを選択するためのメニュープログラムや、交換データを有する通信相手と互いに交換データの授受を実行するデータ授受処理および配信データを通信相手から取得するデータ取得処理を実行するためのプログラム等が保存されている領域である。
また、MACアドレスリスト保存領域88は、無線通信モジュール38において、以前に通信した通信相手である他のゲーム装置を識別することが可能な装置識別情報であるMACアドレスを保存する領域である。また、MACアドレスリスト保存領域88#は、無線通信モジュール38において、以前に通信した通信相手である固定端末機器を識別することが可能な装置識別情報であるMACアドレスを保存する領域である。後述するが、無線通信を実行する際の通信設定処理において、MACアドレスリスト保存領域70,70#に保存されているMACアドレスが当該MACアドレスリスト保存領域88,88#にそれぞれ保存される。
また、フレンドコードリスト保存領域89は、フレンド登録した他のゲーム装置のフレンドコードが保存されている領域である。フレンドコードは、他のゲーム装置の所有者がフレンドであるかを識別するためのコードである。自己のフレンドコードは各ゲーム装置において一意に定められており、フレンドコードリスト保存領域89にて保持されているものとする。すなわち、ゲーム装置毎にフレンドコードは異なる。フレンドコードリスト保存領域89に対する他のゲーム装置のフレンドコードの登録の仕方は種々の方式があるが、例えば、内蔵アプリの中にフレンドコードの登録処理のためのアプリケーションプログラムが含まれているものとする。当該アプリケーションプログラムを実行することにより、図示しないが自己のフレンドコードが表示されるとともに、他のゲーム装置のフレンドコードの入力画面が表示されるものとする。そして、当該入力画面において、他のゲーム装置のフレンドコードを入力して登録することによりフレンドコードリスト保存領域89に他のゲーム装置のフレンドコードが登録されるものとする。また、相手に自己のフレンドコードを伝達することにより、他のゲーム装置において同様の方式に従って、フレンドコードリスト保存領域89に自己のフレンドコードが登録されることになる。なお、本例においては、ユーザがフレンドコードを入力して登録する場合について説明したが、無線通信で他のゲーム装置とフレンドコードを授受することによりフレンドコードリスト保存領域89に他のゲーム装置のフレンドコードを登録するようにしても良い。例えば、他のゲーム装置と無線通信でゲームアプリを互いに実行した場合には、フレンドコードリスト保存領域89に他のゲーム装置のフレンドコードを登録するようにしても良い。
本実施例におけるゲーム装置1のデータ通信は、大別すると他のゲーム装置との交換データの授受を実行するデータ通信と、固定端末機器からの配信データを受信するデータ通信とに分けることができる。
まず、本発明の実施の形態に従うゲーム装置1と他のゲーム装置との交換データの授受を実行するデータ通信について説明する。
<ゲーム装置3との間で交換データの授受を実行する機能ブロックの説明>
図5は、本発明の実施の形態に従うゲーム装置1における交換データの授受を実行する機能ブロックについて説明する図である。
図5を参照して、ゲーム装置1は、無線通信モジュール38と、無線通信モジュール38以外の本体部39とで構成される。
本体部39は、無線通信設定部205と、装置識別情報登録処理部211と、データ通信制御部209と、交換データ保存領域80と、受信データ保存領域82と、MACアドレスリスト保存領域88と、データ格納処理部210とを含む。
無線通信モジュール38は、無線フレーム送受信部223と、交換データ通信判断部225と、フィルタリング用データ保存領域68と、MACアドレスリスト保存領域70と、送信無線フレーム保存領域67と、受信無線フレーム保存領域69とを含む。
無線通信設定部205は、MACアドレスリスト保存領域88に格納されているMACアドレスリストをMACアドレスリスト保存領域70に格納する。また、無線通信設定部205は、交換データ保存領域80の送信BOXに保存されている交換データに設定されているフィルタリング用データをフィルタリング用データ保存領域68に格納する。なお、フィルタリング用データ保存領域68には、各送信BOXに含まれている少なくとも1つの交換データに設定されているフィルタリング用データがフィルタリング用データ保存領域68に格納される。なお、フィルタリング用データをフィルタリング用データ保存領域68に格納する際には、フィルタリング用データの各々に含まれているアプリケーションIDを判定のアルゴリズム毎のリストとして纏めて保存することが可能である。そして、リスト毎に保存する際には、判定のアルゴリズムの方式を示す情報(アルゴリズム識別情報)およびアプリケーションの種別を識別するシステムフラグ情報を含むリストヘッダ情報がそれぞれのリストに対して設けられる。
また、無線通信設定部205は、無線通信モジュール38における無線通信を実行するための指示を無線フレーム送受信部223に出力する。
無線通信モジュール38の無線フレーム送受信部223は、無線通信を実行する指示を受けてフィルタリング用データ保存領域68に保存されているフィルタリング用データ、すなわち、フィルタリング用データに各々含まれているアプリケーションIDをシステムフラグ情報毎に分類し、さらに判定のアルゴリズム毎のリストとして纏めて保存したデータを含む送信無線フレームを設定して送信無線フレーム保存領域67に格納するとともに、当該設定された送信無線フレームを用いて通信相手を探索する交換相手探索処理を実行する。本例においては、無線フレーム送受信部223は、通信相手として一例としてゲーム装置3に対して送信無線フレームを送信し、ゲーム装置3から送信された送信無線フレームすなわち受信無線フレームを受信するものとする。そして、無線フレーム送受信部223は、当該受信した受信無線フレームを受信無線フレーム保存領域69に格納する。
交換データ通信判断部225は、受信した受信無線フレームに基づいて通信相手が交換データを交換する交換相手であるかどうかを判断し、交換相手であると判断された場合には、その旨を本体部39に通知する。
具体的には、受信した受信無線フレームに含まれている装置識別情報であるMACアドレスがMACアドレスリスト保存領域70に保存されているMACアドレスリストに登録されているかどうかを判断する。また、当該受信した受信無線フレームが交換データの授受に関する処理が可能な無線フレームであるかどうかを判定する。また、当該受信した受信無線フレームに含まれているアプリケーションIDと、送信無線フレーム保存領域67に保存されている送信無線フレームに含まれているアプリケーションIDとを比較して、比較結果に基づいて、通信相手と交換データの交換が可能であるかどうかを判断する。
そして、交換データ通信判断部225は、受信した受信無線フレームに含まれているMACアドレスがMACアドレスリストに登録されておらず、また、当該受信した受信無線フレームが交換データの授受に関する処理が可能な無線フレームであり、また通信相手と交換データの交換が可能であると判断した場合には、交換データの交換が可能である旨の通知を本体部39のデータ通信制御部209に出力する。なお、ここでは、3つの条件が満たされた場合に交換データの交換が可能である旨の通知を本体部39のデータ通信制御部209に出力する場合について説明しているが、少なくとも1つの条件が満たされた場合に当該通知を出力するようにしても良い。
データ通信制御部209は、交換データ通信判断部225から出力された交換データの交換が可能である旨の通知を受けて、交換データ保存領域80に保存されている交換データを送信するとともに、ゲーム装置3から交換データを受信する交換データの授受処理を実行する。
データ格納処理部210は、データ通信制御部209で受信した交換データについて、交換条件が満たされているかどうかを判定し、満たしていると判定する場合には、受信データ保存領域82の交換データのアプリケーションIDに対応付けられて設けられた受信BOXに格納する。また、データ格納処理部210は、受信データ保存領域82の受信BOXに格納された受信データに設定されている伝播回数を確認して、伝播条件を満たしているかどうかを判定し、満たしている場合には、受信データを他のゲーム装置に伝播するために、受信データをコピーして交換データ(伝播データ)として交換データ保存領域80のアプリケーションIDに対応付けられて設けられた送信BOXに格納する。
装置識別情報登録処理部211は、データ通信制御部209により受信した交換データがデータ格納処理部210により受信データ保存領域82の受信BOXに格納された場合には、交換相手であるゲーム装置3の装置識別情報であるMACアドレスをMACアドレスリスト保存領域88に格納する。すなわち、装置識別情報を蓄積する。また、装置識別情報登録処理部211は、後述するが、受信した交換データが受信データ保存領域82の受信BOXに格納される毎にMACアドレスリスト保存領域88に交換相手であるゲーム装置の装置識別情報を追記することが可能である。すなわち、MACアドレスリスト保存領域88に交換相手であるゲーム装置の装置識別情報が追記されて登録されることは、装置識別情報に対応するゲーム装置との間で交換データの授受を実行したことの実行履歴が残されることを意味する。
そして、無線通信設定部205は、再び、MACアドレスリスト保存領域88に格納されているMACアドレスリストをMACアドレスリスト保存領域70に格納し、無線通信モジュール38における無線通信を実行するための指示を無線フレーム送受信部223に出力する。すなわち、上記で説明したのと同様の処理を繰り返す。
無線通信モジュール38の無線フレーム送受信部223は、再び、送信無線フレームを設定して、当該設定された送信無線フレームを用いて通信相手を探索する交換相手探索処理を実行する。例えば、再び、本例において、ゲーム装置3に対して送信無線フレームを送信し、ゲーム装置3から送信された送信無線フレームすなわち受信無線フレームを受信するものとする。
交換データ通信判断部225は、上述したように、受信した受信無線フレームに含まれている装置識別情報であるMACアドレスがMACアドレスリスト保存領域70に保存されているMACアドレスリストに登録されているかどうかを判断する。
その際、交換データ通信判断部225は、上述したように以前に交換データの授受を実行している場合には、MACアドレスリストにゲーム装置3の装置識別情報であるMACアドレスが格納されているためMACアドレスに登録されていると判断し、その後のデータ通信である交換データの授受処理は実行しない。すなわち、一度通信を行った通信相手との通信を行わずに効率的なデータ通信を実行することが可能である。
なお、本体部39と、無線通信モジュール38とは独立して動作することが可能である。すなわち、本体部39がスリープ状態に遷移している場合においても、無線通信モジュール38は、設定された送信無線フレームを用いて通信相手を探索する交換相手探索処理を実行することが可能である。そして、交換可能な通信相手が見つかった場合にのみ、本体部39に通知されて、通信相手との接続が確立されて、交換データの授受が実行される。したがって、例えば、本体部39がスリープ状態等の省電力状態に遷移している場合に、無線通信モジュール38における交換相手探索処理により通信相手が見つかった場合であっても交換が可能でなければ本体部39に通知されて通信接続が確立されることはないため、ゲーム装置1全体における省電力を図ることが可能である。
以下、本体部39および無線通信モジュール38の各機能の詳細について具体的に説明する。
図6は、本発明の実施の形態に従うゲーム装置の本体部39の機能ブロックの詳細について説明する図である。
図6を参照して、本例においては、一例として、CPU31がシステムプログラム保存領域86に保存された本体機能プログラムおよびメモリカード26のROM27に格納されているアプリケーションを実行することにより所定の機能を実現する場合について説明するが、必ずしもCPU31により実現される場合に限られず、少なくとも一部の機能を専用のIC(Integrated Circuit)を用いて実現するようにしても良い。ここでは、保存用データメモリ34の交換データ保存領域80、受信データ保存領域82、MACアドレスリスト保存領域88,88#にアクセスする場合についてメモリ制御回路33を介さない場合について示しているが、図1で説明したメモリ制御回路33を介して保存用データメモリ34に格納するようにしても良い。
なお、ここで、本体部39の機能ブロックは、後述するが携帯端末間処理および携帯固定端末間処理の共通の機能として説明する。
本体部39は、無線通信設定部205と、データ通信制御部209と、装置識別情報登録処理部211の他に、さらに、データロード処理部200と、アプリケーション実行処理部201と、通信条件設定処理部202と、交換データ格納処理部203と、データ通知処理部212と、交換データ追加および消去処理部214と、BOXアクセス処理部215と、BOX作成処理部217と、装置識別情報消去処理部218との機能をさらに有する。無線通信設定部205は、通信設定処理部204と、通信指示処理部206とを含む。データ通信制御部209は、データ通信実行処理部208と、スリープ設定/解除処理部216とを含む。
上記機能のうち、データロード処理部200、通信設定処理部204、通信指示処理部206、データ通信実行処理部208、データ格納処理部210、装置識別情報登録処理部211、データ通知処理部212、スリープ設定/解除処理部216および装置識別情報消去処理部218は、一例として、CPU31が本体機能プログラムを実行することにより実現される機能である。また、アプリケーション実行処理部201、通信条件設定処理部202、BOXアクセス処理部215、BOX作成処理部217、交換データ格納処理部203および交換データ追加および消去処理部214は、一例として、CPU31がメモリカード26のROM27に格納されているアプリケーションを実行することにより実現される機能である。なお、各機能は、必要に応じてマルチタスク制御により実現されるものとする。
データロード処理部200は、アプリケーション(データ)をロードする。
アプリケーション実行処理部201は、ロードすなわち取得したデータに基づいてアプリケーションを実行する。
BOX作成処理部217は、アプリケーションの実行処理によりBOX作成指示に従って交換データ保存領域80および受信データ保存領域82にそれぞれアプリケーションを識別するためのデータ(例えばアプリケーションID)に対応付けられた送信BOXおよび受信BOXを作成する。
通信条件設定処理部202は、アプリケーションの実行処理により交換データ登録イベントが発生した場合に、交換データについての通信条件を設定する。例えば、ユーザ等の設定指示に従って交換データをゲーム装置から送信する送信回数および/または交換データを他のゲーム装置を用いて伝播する伝播回数を設定する。
なお、本例においては、交換データに関して、主に、他のゲーム装置との間で他のゲーム装置が有しているデータと互いに交換するデータに伝搬回数を設定する場合について説明するが、互いに交換することなく、単に譲渡するようなデータ(譲渡データ)、例えば、他のゲーム装置に対して自己のデータを一方的に送信のみするデータ、あるいは、自己のデータを複製して一方的に送信するデータ、あるいは逆に、他のゲーム装置から一方的に受信のみするデータについても同様に伝搬回数を設定することが可能である。
交換データ格納処理部203は、アプリケーションの実行処理により保存用データメモリ34の交換データ保存領域80に設けられた送信BOXに通信条件が設定された交換データを格納する。なお、当該交換データは、後述する実質的な通信を実行する前に交換データの交換等の処理が可能であるかどうかを判定する判定処理用のフィルタリング用データが設定された状態で格納される。なお、フィルタリング用データには、アプリケーションIDとともに、判定のアルゴリズムの方式毎のリストとして保存するための当該アプリケーションIDをどのリストに保存するべきかを識別するために判定のアルゴリズムの方式を示す情報(アルゴリズム識別情報)と、アプリケーションの種別を判別するシステムフラグ情報とが含まれる。
交換データ追加および消去処理部214は、後述するがアプリケーションの実行処理により交換フラグデータが有ると判断された場合に受信データ保存領域82の受信BOXを確認し、受信BOXに交換条件を満たす交換データが有ると判断される場合には、受信データ保存領域82の受信BOXに記憶された交換データを取得して、交換データ保存領域80の送信BOXに記憶された交換データを削除する。
BOXアクセス処理部215は、アプリケーションの実行処理によりBOX確認の指定入力が有った場合に、BOXアクセス処理を実行する。例えば、ユーザ等のBOX確認の指定指示に従って交換データ保存領域80および受信データ保存領域82にそれぞれ設けられたアプリケーションIDに対応する送信BOXおよび受信BOXにアクセスして、その中に格納された交換データおよび/または受信データをユーザに表示等する。
通信設定処理部204は、無線通信モジュール38による無線通信が可能であると判断した場合には、交換データ保存領域80の送信BOXに格納されている交換データに設定されているフィルタリング用データを無線通信モジュール38に出力して、無線通信モジュール38のフィルタリング用データ保存領域68に格納する。
本例においては、一例として、通信設定処理部204は、当該フィルタリング用データを無線通信モジュール38のフィルタリング用データ保存領域68に保存する際に、フィルタリング用データに含まれているアプリケーションIDを、システムフラグ情報を確認して分類するとともに、さらに、判定のアルゴリズムを識別するためのアルゴリズム識別情報を確認して、フィルタリング用データ保存領域68にシステムフラグ情報およびアルゴリズム識別情報に従って設けられたリストにアプリケーションIDを格納する。
また、通信設定処理部204は、MACアドレスリスト保存領域88,88#に保存されているMACアドレスリストを無線通信モジュール38に出力して、無線通信モジュール38のMACアドレスリスト保存領域70,70#に格納する。
また、後述するが通信設定処理部204は、所定期間経過後に送信無線フレームに設定されるMACアドレスを更新することが可能であるものとする。
また、装置識別情報消去処理部218は、MACアドレスリスト保存領域88,88#のデータについて、所定の条件に応じてアクセスして消去する。本実施例においては、ユーザからの所定の操作指示に従ってMACアドレスリスト保存領域88,88#のデータを消去することが可能である。また、MACアドレスリスト保存領域88,88#として所定のデータ容量が設けられており、複数のMACアドレスを保存することにより当該所定のデータ容量が一杯となり、保存する領域が無い場合には、保存された古いMACアドレスを消去して新しいMACアドレスが保存されるようにしても良い。また、装置識別情報消去処理部218は、ユーザからの所定の操作指示とは別に、後述するが所定条件の場合、たとえば所定期間経過後にMACアドレスリスト保存領域のデータの一部を消去する。なお、MACアドレスリスト保存領域88,88#のデータを消去する際には、無線通信モジュール38内のRAM66のMACアドレスリスト保存領域70,70#に格納されているMACアドレスリストについても消去するように指示しても良い。
なお、本例においては、MACアドレスリスト保存領域70,70#に格納されているMACアドレスリストを消去する場合について説明するが、本体部からの指示によらず、無線通信モジュール38内で所定期間経過後、無線通信モジュール38のCPU60の指示によりRAM66のMACアドレスリスト保存領域70,70#に格納されているMACアドレスリストを消去するようにしても良い。
通信指示処理部206は、無線通信の通信開始指示を無線通信モジュール38に出力する。
図7は、本発明の実施の形態に従う携帯端末間処理を実行する無線通信モジュール38の機能ブロックの詳細について説明する図である。
図7を参照して、本例においては、一例として、CPU60がROM72に保存された携帯端末間処理を実行するためのアプリケーションを実行することにより所定の機能を実現する場合について説明するが、必ずしもCPU60により実現される場合に限られず、少なくとも一部の機能を専用のIC(Integrated Circuit)を用いて実現するようにしても良い。
無線通信モジュール38は、無線フレーム送受信部223と、交換データ通信判断部225とを含む。無線フレーム送受信部223は、無線フレーム設定部222と、通信相手探索部224とを含む。交換データ通信判断部225は、装置識別情報比較部226と、通信データ判定部228と、アプリケーションID判定部230とを含む。なお、各機能は、必要に応じてマルチタスク制御により実現されるものとする。
無線フレーム設定部222は、無線通信の通信開始指示に従って、フィルタリング用データ保存領域68に保存されたフィルタリング用データに基づいて、通信相手を探索する後述する交換相手探索処理を実行するための送信無線フレームを設定する。送信無線フレームの詳細については後述する。そして、無線フレーム設定部222は、設定した送信無線フレームを送信無線フレーム保存領域67に格納する。
通信相手探索部224は、送信無線フレーム保存領域67に格納された設定した送信無線フレームを用いて上述した通信可能範囲10に含まれる通信相手を探索する交換相手探索処理を実行する。本例においては、一例として通信相手としてゲーム装置3との間で通信する場合について説明する。そして、通信相手探索部224は、ゲーム装置3に対して送信無線フレームを送信した場合に、ゲーム装置3から送信された送信無線フレームを受信無線フレームとして受信し、受信無線フレーム保存領域69に格納する。
交換データ通信判断部225は、通信相手探索部224で通信相手を発見した場合、すなわち、通信相手から受信無線フレームを受信した場合、当該受信無線フレームに基づいて通信相手が交換データを交換する交換相手であるかどうかを判断し、交換相手であると判断された場合には、その旨を通知する。
具体的には、装置識別情報比較部226は、通信相手探索部224において通信相手が発見された場合に、通信相手であるゲーム装置から受信した受信無線フレームに含まれている装置識別情報であるMACアドレスが、MACアドレスリスト保存領域70に保存されたMACアドレスリストと比較して一致するものがあるかどうかを判断する。
通信データ判定部228は、通信相手が発見された場合に、装置識別情報比較部226の比較結果に従って受信無線フレームに含まれているMACアドレスがMACアドレスリスト保存領域70に保存されているMACアドレスリストと一致しないと判断された場合に、受信した受信無線フレームのデータ内容を確認して、受信無線フレームが携帯端末間処理として処理可能な無線フレームであるかどうかを判定する。
アプリケーションID判定部230は、通信データ判定部228の判定により処理可能な受信無線フレームを受信したと判定した場合に、受信した受信無線フレームに格納されているアプリケーションIDが交換データの交換に関する所定条件を満たすか否かを判定する。
具体的には、アプリケーションID判定部230は、IDリストヘッダ情報比較部232と、IDリスト比較部234とを含む。各部の処理については後述する。
そして、IDリスト比較部234における比較結果に基づいて所定条件を満たした(アプリケーションIDが一致した)と判断した場合には、本体側にその旨を通知する。
再び、図6を参照して、スリープ設定/解除処理部216は、無線通信モジュール38からの通知(本例においては図7のIDリスト比較部234からの通知)を受ける。
スリープ設定/解除処理部216は、本体部39の各機能を所定条件に基づいてスリープ状態に設定するあるいはスリープ状態を解除する。スリープ設定/解除処理部216は、一例として、ユーザの操作ボタン14による操作指示入力を監視し、所定期間、操作ボタン14による操作指示入力がなかったと判断した場合に本体部39の各機能における処理を停止するスリープ状態に設定する。当該機能によりユーザがゲーム装置の操作を希望しない場合に自動的に省電力状態とすることが可能である。また、ユーザからの指示入力によりスリープ状態に設定するようにしても良い。また、スリープ設定/解除処理部216は、本体部39の各機能における処理が停止したスリープ状態においてユーザの操作ボタン14による操作指示に従いスリープ状態を解除して元の状態に復帰させる。すなわち、本体部39における各種処理が可能となる。また、本例においては、ユーザの操作ボタン14による操作指示以外に、本体部39がスリープ状態である場合に無線通信モジュール38からの通知によりスリープ状態を解除するものとする。なお、本例において、スリープ設定/解除処理部216は、一例としてデータ通信制御部209に含まれるものとして説明したが、特にこれに限られず、当該機能をデータ通信制御部209とは別に設けるようにすることも可能である。
そして、スリープ設定/解除処理部216は、無線通信モジュール38から通知があった場合には、その通知をデータ通信実行処理部208に出力する。
スリープ設定/解除処理部216は、現在の状態がスリープ状態でない場合には、そのまま無線通信モジュール38からの通知をデータ通信実行処理部208に出力する。
データ通信実行処理部208は、携帯端末間通信における無線通信モジュール38からの通知に従ってゲーム装置3との間で交換データの授受処理を実行する。具体的には、交換データ保存領域80の送信BOXに保存されている交換データをゲーム装置3に送信する。そして、ゲーム装置3から交換データを受信する。
なお、後述するがデータ通信実行処理部208は、携帯固定端末間通信における無線通信モジュール38からの通知に従って固定端末機器5からの配信データの取得処理を実行する。具体的には、固定端末機器5に対して配信データの要求を送信し、固定端末機器5から送信される配信データを受信する。
データ格納処理部210は、データ通信実行処理部208により受信した交換データの交換条件が成立したかどうかを判断し、判断結果に基づいて、受信データ保存領域82のアプリケーションIDに対応する受信BOXに格納する。また、受信データの伝播回数を確認して、伝播条件を満たしているか否かを判断して、満たしていると判断した場合には、受信データをコピーして交換データ(伝播データ)として交換データ保存領域80のアプリケーションIDに対応する送信BOXに格納する。
装置識別情報登録処理部211は、交換条件が成立した場合には、交換相手であるゲーム装置3の装置識別情報であるMACアドレスをMACアドレスリスト保存領域88に格納する。
また、後述するが装置識別情報登録処理部211は、データ通信実行処理部208により受信した配信データを受信データ保存領域82に格納した場合には、配信相手である固定端末機器5の装置識別情報であるMACアドレスをMACアドレスリスト保存領域88#に格納する。
データ通知処理部212は、交換データを交換した等の旨あるいは配信データを取得した旨をユーザに通知する。
図8は、本発明の実施の形態に従う携帯端末間処理の交換データの授受処理を実行するデータ通信実行処理部208の詳細について説明する図である。
図8を参照して、データ通信実行処理部208は、本例においては、一例として、CPU31がプリセットデータ用メモリ35に保存された携帯端末間処理の交換データの授受処理を実行するためのアプリケーションを実行することにより所定の機能を実現する場合について説明するが、必ずしもCPU31により実現される場合に限られず、少なくとも一部の機能を専用のIC(Integrated Circuit)を用いて実現するようにしても良い。
データ通信実行処理部208は、通信接続確立処理部302と、フレンド認証処理部304と、送信スロット作成処理部306と、送信データリスト作成処理部308と、送受信データリスト分析処理部310と、送受信実行処理部312と、データリスト判定部314と、通信切断処理部316とを含む。なお、各機能は、必要に応じてマルチタスク制御により実現されるものとする。
通信接続確立処理部302は、無線通信モジュール38からの交換データを有するゲーム装置が発見された旨の通知に含まれている通信相手のMACアドレス等の接続情報に基づいて通信相手との間で通信接続を確立(通信路を形成)する。
フレンド認証処理部304は、フレンドコードリスト保存領域89に格納されたフレンドコードを授受することにより、通信相手がフレンドあるいは非フレンドのいずれであるかを判断する。
具体的には、フレンド認証処理部304は、自己のフレンドコードを無線通信モジュール38を介してゲーム装置3に送信する。また、フレンド認証処理部304は、無線通信モジュール38を介してゲーム装置3から送信されたフレンドコードを受信する。そして、受信したフレンドコードがフレンドコードリスト保存領域89に保存されているかどうかを判断し、フレンドコードリスト保存領域89に受信したフレンドコードが保存されている場合には、フレンド認証が成功した旨をゲーム装置3に通知する。また、ゲーム装置3においても同様の方式に従って、通信相手であるゲーム装置1のフレンドコードがフレンドコード保存領域に保存されているかどうかを判断する。そして、ゲーム装置3において、ゲーム装置1のフレンドコードがフレンドコード保存領域に保存されていると判断した場合には、フレンド認証が成功した旨をゲーム装置1に通知する。フレンド認証処理部304は、自己のフレンド認証が成功し、かつ、通信相手からフレンド認証が成功した旨の通知を受けた場合、すなわち、両方の装置でフレンド認証が成功した場合に、通信相手がフレンドであると判断する。通信相手がフレンドであるかどうかに従って、後の送信スロットに格納される交換データの内容を変更することが可能となる。
送信スロット作成処理部306は、送信スロット保存領域90に各送信BOXに対応して設けられる送信スロットを作成して、当該送信スロットに、交換データ保存領域80の各送信BOXに保存されているデータを実際に授受するための交換データとして格納する。なお、送信スロット保存領域90は、メインメモリ32の一部領域を用いて設けられるものとする。
送信データリスト作成処理部308は、送信スロット保存領域90に設けられた各送信BOX毎に設けられた送信スロットに基づいて、交換データを送信するための送信データリストを作成する。送信データリストには、各アプリケーション毎の各送信スロットに格納された交換データのデータのサイズ等の情報が含まれる。
送受信データリスト分析処理部310は、送信データリスト作成処理部308で作成された送信データリストを無線通信モジュール38を介してゲーム装置3に送信する。また、送受信データリスト分析処理部310は、ゲーム装置3から送信された送信データリスト(以下、受信データリストとも称する)を受信する。そして、受信データ保存領域82に設けられた各アプリケーションに対応して設けられた受信BOXの容量等を確認して、受信データリストに含まれるゲーム装置3から送信される各アプリケーション毎の交換データのサイズに基づいて、当該交換データを受信BOXに保存することができるかどうかを判断する。そして、受信データリストに含まれている各アプリケーション毎に、当該交換データを受信BOXに保存できるか否かを判定し、保存できると判断した場合には、受信データリストに含まれている各アプリケーション毎にOK判定フラグを付加する。一方、当該交換データを受信BOXに保存できないと判断した場合には、受信データリストに含まれている各アプリケーション毎にNG判定フラグを付加する。送受信データリスト分析処理部310は、OK判定フラグあるいはNG判定フラグを付加した受信データリストをゲーム装置3に送信(返信)する。同様に、ゲーム装置3においても同様の方式に従って、ゲーム装置1から送信された送信データリストに対して、各アプリケーション毎にOK判定フラグあるいはNG判定フラグを付加する。そして、各アプリケーション毎にOK判定フラグあるいはNG判定フラグを付加した送信データリストをゲーム装置1に送信(返信)する。
ゲーム装置1の送受信データリスト分析処理部310は、OK判定フラグあるいはNG判定フラグが付加された送信データリストを取得する。
送受信実行処理部312は、OK判定フラグあるいはNG判定フラグが付加された送信データリストに基づいて、送信スロット保存領域90に保存された送信スロットから交換データを無線通信モジュール38を介して送信する。また、送受信実行処理部312は、OK判定フラグあるいはNG判定フラグが付加された受信データリストに基づいて、ゲーム装置3から送信された交換データを無線通信モジュール38を介して受信する。
データリスト判定部314は、送信あるいは受信データリストに基づくデータ送受信処理が適切に実行されたかどうかを判定する。具体的には、送信データリストに基づいて、各アプリケーションに対応して設けられた送信スロットから交換データの送信が適切に実行されたか、また、受信データリストに基づいて、ゲーム装置3から送信された交換データの受信が適切に実行されたかどうかを判定する。
通信切断処理部316は、データリスト判定部314において送信データリストおよび受信データリストに基づくデータ送受信処理が適切に実行された場合には、ゲーム装置3との通信接続を切断する処理を実行する。また、データ送受信が適切に実行されなかった場合、例えば、通信が中断された場合等においても、ゲーム装置3との通信接続を切断する処理を実行する。そして、通信切断処理部316は、通信接続を切断した旨をデータ格納処理部210に通知する。
以下、各部における具体的処理について説明する。
<交換データ保存領域80への格納>
図9は、本発明の実施の形態に従う交換データ保存領域80の送信BOXへの交換データの格納処理について説明するフロー図である。
本例においては、交換データは、ユーザがゲーム装置1においてアプリケーションを実行中に、当該アプリケーションで利用可能なデータを交換データとして外部のゲーム装置に対して提供する目的で操作することにより、指定した交換データが交換データ保存領域80の対応する送信BOXに格納される。一例として、メモリカード26のROMに格納されたアプリケーションを実行する場合について説明する。
図9を参照して、ゲーム装置1の主電源がオンし、ユーザが所定の操作を実行することにより、ゲーム装置1のCPU31(データロード処理部200)は、メモリカード26に格納されたデータをロードする(ステップS0)。すなわち、メインメモリ32に展開する。
そして、次に、CPU31(アプリケーション実行処理部201)は、メインメモリ32に展開されたデータに基づいてアプリケーションを実行する(ステップS1)。
そして、CPU31(アプリケーション実行処理部201)は、当該アプリケーションの実行により、まず、当該アプリケーションに対応するBOX(送信BOXおよび受信BOX)が作成済みであるかどうかを判断する(ステップS2)。ステップS2において、CPU31(アプリケーション実行処理部201)は、BOX作成済みであると判断した場合(ステップS2においてYES)には、ステップS4に進む。
一方、ステップS2において、CPU31(アプリケーション実行処理部201)は、BOX作成済みでないと判断した場合(ステップS2においてNO)には、ステップS3に進む。具体的には、アプリケーション実行処理部201は、BOX作成処理部217にBOX作成指示を出力する。
そして、CPU31(BOX作成処理部217)は、交換データ保存領域80および受信データ保存領域82にそれぞれ自身のアプリケーションに対応付けられた送信BOXおよび受信BOXを作成する(ステップS3)。
図10は、本発明の実施の形態に従うアプリケーションに対応付けられた送信BOXおよび受信BOXを説明する概念図である。
図10を参照して、ここでは、一例としてアプリケーションプログラムAに対応付けられて作成されたBOXが示されている。図10(A)は、交換データ保存領域80にアプリケーションAに対応付けて設けられた送信BOX(ボックス)SBであり、図10(B)は、受信データ保存領域82にアプリケーションAに対応付けて設けられた受信BOX(ボックス)RBである。送信BOXは、複数個のデータの1つずつが格納される複数の送信BOXスロットSBUで構成されている。受信BOXについても同様に、受信データが1つずつ格納される複数の受信BOXスロットRBUで構成されている。この送信BOXおよび受信BOXを作成するために用いられる記憶領域の容量ならびに送信BOXスロットおよび受信BOXスロットの個数については、予めアプリケーションプログラム毎に規定されて設定されるものとする。なお、後述する交換データを送信する際にメインメモリ32に作成される送信スロットとして用いられる記憶領域の最大容量についても予めアプリケーションプログラム毎に規定されて設定されるものとする。
図11は、本発明の実施の形態に従う送信BOXにデータが格納された場合を説明する図である。
図11を参照して、ここでは、送信BOX(ボックス)SBの各送信BOXスロットにデータX,Yがそれぞれ格納されている場合が示されている。なお、送信BOXスロットには、スロット番号が割り当てられており、番号が小さい順にデータが格納され、基本的には格納された順番に従ってデータが1つずつ送信スロットに交換データとして格納される。
図12は、本発明の実施の形態に従う送信BOXの送信BOXスロットに格納されたデータのデータ構造を説明する図である。
図12を参照して、送信BOXスロットに格納された交換データとなるデータ構造は、IDデータIDD0と、データグループIDIDD1と、データサイズIDD2と、データ本体IDIDD3と、フレンドフラグデータIDD4と、送受信条件データIDD5と、送信者データIDD6と、送信回数IDD7と、伝播回数IDD8と、フィルタリング用データIDD9と、データ本体IDD10とで構成されている。
IDデータIDD0は、アプリケーション毎に予め設けられたアプリケーション名を示す識別データである。
データグループIDIDD1は、後述するデータグルーピング処理を実行するための識別データである。具体的には、データグループIDが同じデータは同じグループのデータとして扱われる。
データサイズIDD2は、データ全体のデータサイズを示す値が格納される。
データ本体IDIDD3は、データ本体の生成に際して割り当てられる固有の識別データである。データ本体が同じ内容である場合には、同じ識別データが設定される。
フレンドフラグデータIDD4は、当該交換データとなるデータの送信対象がフレンドに対するものか、あるいは、非フレンドに対するものか、あるいは、フレンド/非フレンドのいずれも(ANY)に対するものかを識別するフラグデータである。例えば、「フレンド」のフラグデータが設定されている場合には、当該データの送信対象がフレンドに対するものであることを意味する。また、「非フレンド」のフラグデータが設定されている場合には、当該データの送信対象がフレンドでない非フレンドに対するものであることを意味する。また、「ANY」のフラグデータが設定されている場合には、当該データの送信対象がフレンド/非フレンドのいずれに対するものでもあることを意味する。
送受信条件データIDD5は、後述するセンドフラグデータおよびレシーブフラグデータを含む。
送信者データIDD6は、送信者であるゲーム装置を識別するための情報であり一例としてMACアドレス等を含む。
送信回数IDD7は、当該データを送信する回数を規定するものである。例えば、送信回数が1回に設定されている場合には、1回交換データとして送信して当該データの送信が終了することを意味する。一方、送信回数が3回に設定されている場合には、当該データの送信が3回実行されることを意味する。なお、当該送信回数の設定は、上述した通信条件設定処理部202の処理として実行される。
伝播回数IDD8は、当該データを伝播する回数を規定するものである。例えば、伝播回数が1回に設定されている当該データが交換データとして他のゲーム装置に送信された場合に、他のゲーム装置からさらに別のゲーム装置に1回だけ当該データが伝播される。なお、当該伝播回数の設定は、上述した通信条件設定処理部202の処理として実行される。
フィルタリング用データIDD9は、通信相手である他のゲーム装置等との間で実質的な通信を実行する前に交換データの交換等の処理が可能であるかどうかを判定するためのアプリケーションIDを含むデータであり、アプリケーションIDとともに、当該アプリケーションIDの判定のアルゴリズムの方式を示すアルゴリズム識別情報と、アプリケーションの種別を判別するためのシステムフラグ情報とが含められる。
データ本体IDD10は、交換データとなるデータ内容である。
再び、図9を参照して、CPU31(アプリケーション実行処理部201)は、バックアップRAM28に格納されていたデータに交換データを交換データ保存領域80の対応する送信BOXに格納したことを示す交換フラグデータが含まれていたかどうかを判断する(ステップS4)。
ステップS4において、CPU31(アプリケーション実行処理部201)は、バックアップRAM28に格納されていたデータに交換データを交換データ保存領域80の対応する送信BOXに格納したことを示す交換フラグデータが含まれていたと判断した場合(ステップS4においてYES)には、交換データの追加処理および消去処理を実行する(ステップS22)。当該処理すなわち、交換データ追加および消去処理部214における処理については後述する。そして、当該追加処理および消去処理を実行した後、ステップS5に進む。
ステップS4において、CPU31(アプリケーション実行処理部201)は、バックアップRAM28に格納されていたデータに交換データを交換データ保存領域80の対応する送信BOXに格納したことを示す交換フラグデータが含まれていないと判断した場合(ステップS4においてNO)には、次に、ステップS5に進む。
そして、CPU31(アプリケーション実行処理部201)は、アプリケーションの実行により、交換データの登録イベント(以下、交換データ登録イベントとも称する)が発生したかどうかを判断する(ステップS5)。つまりアプリケーションの実行中に実行しているアプリケーションで利用可能なデータを交換データとして、交換データ保存領域80の対応する送信BOXに格納するかどうかを促すシーンに移行されたかどうかを判断する。
ここで、交換データとは、アプリケーションプログラムにおいて利用されるデータであり、より好ましくは、アプリケーションプログラムを実行することによりユーザが獲得または作成したデータである。
図示は省略するが、たとえば、交換データ登録イベントとしては、アプリケーションの実行により、バックアップRAMに記憶されているゲーム内で獲得または作成したデータ等、当該アプリケーションで利用可能なデータの一覧をLCD12に表示し、その中からユーザが他人にあげても良いデータを選択するような場合が挙げられる。
交換データの格納については、以下に説明するが、例えば、ユーザがゲーム内で手に入れたアイテムや、ゲームを進行することによって成長させたキャラクタのデータを交換データとしてもよい。また、アイテムにはユーザのメッセージを付加してもよい。より具体的には、「手紙」のアイテムにユーザがメッセージを書いて、当該メッセージを交換データとして格納するようにしてもよい。このように、ゲームの実行状況に応じたアイテムやキャラクタを交換データとすることで、データにユーザごとの個性が生じることになり、交換した場合の興趣が高まる。
また、交換データ登録イベントを、ゲーム上のイベントとして表現しても良い。例えば、ユーザが、ゲーム内で所定の場所にアイテムやキャラクタを置いたり預けたりする操作をした場合に、当該アイテムやキャラクタのデータを交換データとして交換データ保存領域80の送信BOXに格納する処理を実行しても良い。また、ゲーム内で「手紙」のアイテムをボトルに入れて海に流すような演出をして、海に流した「手紙」のアイテムのデータを交換データとして交換データ保存領域80の送信BOXに格納する処理を実行しても良い。
また、交換データの交換に際し、付加的な条件(取得条件データ)を付けることも可能である。例えば、交換を希望する装置の所有者あるいはアプリケーションを実行しているユーザの性別、年齢、住所、職業等を交換する際の条件として、当該条件を示すデータを取得条件データとしたり、あるいは、交換を希望するデータあるいはその旨を示すデータ等を交換する際の条件に含めるようにしても良い。例えば、上記交換データ登録イベントにおいて交換データの交換条件をユーザに選択させるようにして取得条件データを取得するようにすることが可能であるし、あるいは、ゲーム上のイベントと対応付けてアプリケーションが当該取得条件データを設定するようにしてもよい。このような取得条件データについては、後述するが交換条件データとしてアプリケーションID内に収められる。
また、本例において、交換データとは、主に他のゲーム装置との間で他のゲーム装置が有しているデータと互いに交換するデータについて説明するが、互いに交換することなく、単に譲渡するようなデータ(譲渡データ)、例えば、他のゲーム装置に対して自己のデータを一方的に送信のみするデータ、あるいは、自己のデータを複製して一方的に送信するデータ、あるいは逆に、他のゲーム装置から一方的に受信のみするデータも含むものとする。
また、さらに付加的な条件として、当該データの送受信に関する条件(送受信条件データ)を付けることも可能である。例えば、上記交換データ登録イベントにおいて交換データの送受信に関する条件をユーザに選択させるようにして送受信条件データを取得するようにすることも可能であるし、あるいは、ゲーム上のイベントと対応付けてアプリケーションが当該取得条件データを設定するようにしてもよい。たとえば、上記例において、ゲーム内で「手紙」のアイテムをボトルに入れて海に流すような演出をして、海に流した「手紙」のアイテムのデータを交換データとするような場合には、他のゲーム装置に対して自己のデータを一方的に送信するデータとして、送受信条件データを設定するようにすることも可能である。また、別の例としては、ゲーム内で、ユーザが望むアイテムを捜してもらうような演出をして、ユーザが望むアイテムの交換データを他のゲーム装置から一方的に受信するのみのデータとして、送受信条件データを設定するようにすることも可能である。このような送受信条件データについても後述するが交換条件データとしてアプリケーションID内に収められる。ユーザが望むアイテムの交換データを他のゲーム装置から一方的に受信するのみのデータとして、送受信条件データを設定するようにすることも可能である。なお、交換データを他のゲーム装置から一方的に受信するのみの場合には、他のゲーム装置に送信するデータは無いため交換データ保存領域80の送信BOXに格納する交換データとしては、空データやダミーデータを保存するようにしても良い。
当該付加的な条件を付けることにより交換データの交換に際し、希望する交換データの取得等、交換データのデータ取得のバリエーションを広げることができ、交換の興趣性を高めることができる。
そして、本例においては、後述するが当該アプリケーションIDを他のアプリケーションIDと比較する際の判定のアルゴリズムとして複数の判定方式を設けることが可能であり、アプリケーションID内のデータ形式すなわち交換条件データの有無に従って、判定のアルゴリズムの方式を示す情報であるアルゴリズム識別情報が異なるものとして設定されるものとする。
一方、CPU31(アプリケーション実行処理部201)は、交換データ登録イベントが発生していないと判断した場合(ステップS5においてNO)には、BOX確認の指定入力があったかどうかを判断する(ステップS24)。
CPU31は、(アプリケーション実行処理部201)は、BOX確認の指定入力があったと判断した場合(ステップS24においてYES)には、ステップS26に進む。具体的には、アプリケーション実行処理部201は、BOXアクセス処理部215にBOX確認の指定入力があった旨を出力する。当該処理すなわち、BOXアクセス処理部215における処理については後述する。そして、当該BOXアクセス処理を実行した後、ステップS1に戻り、通常のアプリケーションを実行する。例えば、ユーザの操作に基づいて仮想空間内でオブジェクトを動作させる等のゲーム処理を実行する。
また、CPU31は、(アプリケーション実行処理部201)は、BOX確認の指定入力がなかったと判断した場合(ステップS24においてNO)にも、ステップS1に戻る。
次に、ステップS5において、交換データ登録イベントが発生したと判断された場合(ステップS5においてYES)には、CPU31(アプリケーション実行処理部201)は、交換データの指定入力があったかどうかを判断する(ステップS6)。
次に、ステップS6において、交換データの指定入力があったと判断した場合(ステップS6においてYES)には、CPU31(通信条件設定処理部202)は、交換データの送信回数および交換データを伝播する伝播回数を設定する通信条件設定処理を実行する(ステップS7)。通信条件設定処理については後述する。
一方、ステップS6において、CPU31(アプリケーション実行処理部201)は、交換データの指定入力が無いと判断した場合(ステップS6においてNO)には、ユーザが交換を希望しないため、再び、ステップS1に戻り通常のアプリケーションを実行する。
次に、通信条件設定処理の後、CPU31(交換データ格納処理部203)は、交換データ保存領域80を確認する(ステップS8)。具体的には、交換データ保存領域80の対応する送信BOXを確認する。
次に、CPU31(交換データ格納処理部203)は、交換データ保存領域80の対応する送信BOXを確認した後、交換データ保存領域80の対応する送信BOXに空き送信BOXスロットがあるどうかを判断する(ステップS10)。
ステップS10において、CPU31(交換データ格納処理部203)は、交換データ保存領域80の対応する送信BOXに空き送信BOXスロットがあると判断した場合(ステップS10においてYES)には、空き送信BOXスロットに交換データを格納する(ステップS12)。
一方、ステップS10において、CPU31(交換データ格納処理部203)は、空き送信BOXスロットがないと判断した場合(ステップS10においてNO)には、送信BOXスロットのデータを削除したかどうかを判断する(ステップS11)。図示は省略するが、たとえば空き送信BOXスロットが無い旨をユーザに通知し、ユーザにいずれかの送信BOXスロットのデータを削除するように指定させることが可能である。そして、指定があった場合には、当該送信BOXスロットのデータが削除されるものとする。
ステップS11において、CPU31(交換データ格納処理部203)は、送信BOXスロットのデータが削除されたと判断した場合には、再びステップS10に戻る。そして、空き送信BOXスロットに交換データを格納する。なお、送信BOXスロットのデータの削除により送信BOXスロットの配列を更新して、最後の順番の空き送信BOXスロットに交換データを格納するようにする。当該処理により、格納した順番に交換データを送信することが可能である。あるいは、送信BOXスロットの配列をユーザが入れ替えることができるようにしても良い。
一方、ステップS11において、CPU31(交換データ格納処理部203)は、送信BOXスロットのデータが削除されていないと判断した場合には、再び、ステップS1に戻り、通常のアプリケーションを実行する。当該処理までが交換データ格納処理部203における処理である。
以降の処理は、アプリケーション実行処理部201における処理である。
そして、次に、CPU31(アプリケーション実行処理部201)は、ユーザからアプリケーションの終了指示が有るかどうかを判断する(ステップS14)。
ステップS14において、CPU31(アプリケーション実行処理部201)は、ユーザからアプリケーションの終了指示が有ると判断した場合には、次のステップS16に進む。一方、ステップS14において、ユーザからアプリケーションの終了指示が無いと判断した場合(ステップS14においてNO)には、再び、ステップS1に戻り、通常のアプリケーションを実行する。
次に、ステップS16において、CPU31(アプリケーション実行処理部201)は、交換データが交換データ保存領域80に格納されたかどうかを判断する。そして、CPU31(アプリケーション実行処理部201)は、交換データ保存領域80に交換データが格納されたと判断した場合(ステップS16においてYES)には、バックアップRAM28に交換データを交換データ保存領域80に格納したことを示す交換フラグデータをセーブデータ(例えば、獲得したアイテム、キャラクタ、文章や絵などの作成データなどアプリケーションで利用するデータ)とともに保存する(ステップS18)。そして、処理を終了する(エンド)。一方、CPU31(アプリケーション実行処理部201)は、交換データ保存領域80に交換データが格納されていないと判断した場合(ステップS16においてNO)には、バックアップRAM28にセーブデータのみを保存する(ステップS20)。そして、処理を終了する(エンド)。
当該処理により、バックアップRAM28に交換フラグデータを保存することにより、上述したようにステップS2における判断処理において、交換フラグデータが含まれている場合には、交換データの追加処理および消去処理を実行することが可能である。
なお、本例においては、一例として、メモリカード26のROMに格納されたアプリケーションを実行した場合における交換データ保存領域80への交換データの格納処理について説明したが、特にメモリカード26に格納されたアプリケーションに限られず、内蔵アプリ保存領域84に格納されているアプリケーションを実行した場合における交換データの格納処理についても、内蔵アプリ保存領域84に各アプリケーション毎に設けられた、当該アプリケーションのセーブデータを保存するための保存領域を上記したバックアップRAMと対応付けて用いることにより実現可能である。また、内蔵アプリ保存領域84に格納されているアプリケーションを実行した場合における交換データと、それ以外の例えばメモリカード26のROMに格納されたアプリケーションを実行した場合における交換データとは、アプリケーションプログラムの種別が異なるものとして異なるシステムフラグ情報が割り当てられる。そして、フィルタリング用データの中にアルゴリズム識別情報がアプリケーションIDとともに含められるものとする。このシステムフラグ情報は、後述する通信設定処理の際に用いることが可能である。
また、本例においては、通信条件を設定する機能等についてはメモリカード26のROM27に格納されているアプリケーションにより実行される機能として説明するが、システムプログラム保存領域86に保存されている本体機能プログラムにより実行される機能としても良い。
また、本例においては、BOXアクセス処理およびBOX作成処理についてはメモリカード26のROM27に格納されているアプリケーションにより実行される機能として説明するが、システムプログラム保存領域86に保存されている本体機能プログラムにより実行される機能としても良い。
また、本例においては、交換データを追加および消去する機能等についてはメモリカード26のROM27に格納されているアプリケーションにより実行される機能として説明するが、システムプログラム保存領域86に保存されている本体機能プログラムにより実行される機能としても良い。具体的には、メモリカード26に格納されたデータをロードした後、展開されているデータ中に、交換フラグデータが有るか否かを判断して、交換データを追加および消去する処理を実行した後、アプリケーションを実行するようにすれば良い。
図13は、アプリケーションにより交換データ保存領域80の送信BOXに交換データを格納する場合について説明する図である。
図13(A)を参照して、ここでは、たとえば、上述したメモリカードに記憶されたアプリケーション名Aのアプリケーションプログラムを実行することによって、交換データ保存領域80のアプリケーションプログラムAに対応して設けられた送信BOXSBAに交換データが格納されている場合が示されている。なお、ここでは、説明を簡易にするためにアプリケーション名とアプリケーションIDとを同一のものとして説明するが、特に同じである必要は無く異なるものとすることも可能である。なお、交換データには、上述したアプリケーションIDを含むフィルタリング用データが設定されている。本例においては当該アプリケーションIDと他のアプリケーションIDとを比較する際の判定のアルゴリズムとして複数の判定方式を設けることが可能であり、ここでは、図示していないがアプリケーションIDとともに、判定のアルゴリズムの方式を示す情報として、アプリケーションID内のデータ形式すなわち交換条件データの有無に従うアルゴリズム識別情報およびアプリケーションの種別を識別するシステムフラグ情報を登録することが可能である。
また、1つのアプリケーションに対して1つの交換データが格納される必要は無く、図13(B)においては、上述したメモリカードに記憶されたアプリケーションプログラムCを実行することによって、交換データ保存領域80の対応する送信BOXSBCに2つの交換データがそれぞれ格納される場合が示されている。
また、特にメモリカードのアプリケーションに限られず、図13(C)に示されるように、ゲーム装置1の内蔵アプリ保存領域84に格納されている内蔵アプリDを実行することによって、交換データ保存領域80の対応する送信BOXSBDに交換データが格納される場合が示されている。なお、内蔵アプリDに対応する交換データが格納されるためフィルタリング用データに格納されるシステムフラグ情報は、アプリケーションプログラムA等の交換データのフィルタリング用データに格納されるシステムフラグ情報とは異なるものが設定される。
そして、本例における交換データ保存領域80の各スロットに格納された交換データは、所定の後述する条件が満たされた場合に他のゲーム装置に送信される。
<無線通信モジュール38に対する通信設定>
図14は、無線通信モジュール38への通信設定処理について説明するフロー図である。
図14を参照して、CPU31(通信設定処理部204)は、交換データ保存領域80が変更されたかどうかを判断する(ステップS27)。具体的には、交換データ保存領域80の少なくとも1つの送信BOXが変更されたかどうかを判断する。
本例においては、一例として、交換データ保存領域80の少なくとも1つの送信BOXにおける内容が変更された場合をトリガとして動作する場合として説明する。例えば、図13で説明した如くアプリケーションプログラムを実行することによって、交換データ保存領域80の対応する送信BOXに交換データを格納したことに応答して通信設定処理部204における処理が実行されるものとする。
ステップS27において、交換データ保存領域80の対応する送信BOXに変更が合った場合(ステップS27においてYES)には、通信設定処理を実行する(ステップS28)。
図15は、CPU31(通信設定処理部204)における通信設定処理のフロー図である。
図15を参照して、まず、本体側のCPU31(通信設定処理部204)は、保存用データメモリ34の交換データ保存領域80を確認する(ステップS30)。そして、次に、CPU31(通信設定処理部204)は、保存用データメモリ34の交換データ保存領域80の送信BOXに交換データがあるかどうかを判断する(ステップS32)。
そして、ステップS32において、CPU31(通信設定処理部204)は、交換データ保存領域80の送信BOXに交換データがあると判断した場合(ステップS32においてYES)には、各送信BOXに格納されている交換データに設定されているフィルタリング用データおよびMACアドレスリスト保存領域88,88#に格納されているMACアドレスリストを無線通信モジュール38に出力する(ステップS34)。
そして、無線通信モジュール側において、CPU31(通信設定処理部204)の指示によりフィルタリング用データとMACアドレスリストをそれぞれRAM66のフィルタリング用データ保存領域68およびMACアドレスリスト保存領域70,70#にそれぞれ格納する(ステップS36)。そして、処理を終了する(リターン)。
なお、本実施例においては、携帯端末間通信処理および携帯固定端末間通信処理が一連の処理として連続して実行される方式であるため後述する携帯固定端末間通信処理のMACアドレスフィルタリング処理に用いられる固定端末機器のMACアドレスリストについてもMACアドレスリスト保存領域88#から読み出して、MACアドレスリスト保存領域70#に格納するようにしている。したがって、2つの種類がそれぞれ異なる通信処理について、それぞれ独立に通信設定するのではなく、1回にまとめて設定することが可能であり効率的な通信設定を実現することが可能である。
また、本例の如く、携帯端末間通信処理のMACアドレスフィルタリング処理に用いられるMACアドレスリスト保存領域70と、携帯固定端末間通信処理のMACアドレスフィルタリング処理に用いられるMACアドレスリスト保存領域70#とをそれぞれ別々に設けることにより、MACアドレスフィルタリング処理の処理負荷を軽減することが可能である。
また、フィルタリング用データのアプリケーションIDは、システムフラグ情報に基づいて分類される。さらに、当該アプリケーションIDを他のアプリケーションIDと比較する際の判定のアルゴリズムとして複数の判定方式を設けることが可能であり、アプリケーションIDを各判定方式に対応するリストとして纏めてフィルタリング用データ保存領域68に保存することが可能である。具体的には、CPU31(通信設定処理部204)は、各フィルタリング用データについて、フィルタリング用データに含まれているアプリケーションIDに対応付けられているシステムフラグ情報を確認して、分類するとともに、さらに、判定のアルゴリズムの方式を示すアルゴリズム識別情報を確認して、フィルタリング用データ保存領域68のシステムフラグ情報およびアルゴリズム識別情報に従って設けられた対応するリストに当該アプリケーションIDを保存するように指示する。なお、リスト毎に保存する際には、システムフラグ情報および判定のアルゴリズムの方式を示す情報(アルゴリズム識別情報)を含むリストヘッダ情報がそれぞれのリストに対して設けられる。
当該処理により無線通信モジュール38による無線通信の準備が完了する。すなわち、無線通信モジュール38のCPU60は、交換相手探索処理のための送信無線フレームを生成して他のゲーム装置に送信することが可能となる。
具体的には、CPU60は、フィルタリング用データに含まれている、交換データ保存領域80の送信BOXに実際に格納されている交換データを識別可能なアプリケーションIDを含む送信無線フレームを他のゲーム装置に送信することが可能となる。なお、アプリケーションIDをシステムフラグ情報およびアルゴリズム識別情報に対応するリストとして纏めてフィルタリング用データ保存領域68に保存している場合には、リスト毎に送信無線フレームに含めることが可能である。なお、本例においては、交換データ保存領域80の複数の送信BOXにそれぞれ交換データが格納されている場合について説明するが、1つの送信BOXのみに交換データが格納されている場合であっても1つのアプリケーションIDを含むリストとして送信無線フレームに含めることが可能である。
したがって、受信無線フレームを受信した他のゲーム装置は、送信無線フレームに含められたアプリケーションIDを確認することにより、他のゲーム装置自身が有している交換データに対応付けられているアプリケーションIDと比較して、一致するものがあるならば、交換データの交換が可能であり、不一致すなわち一致するものが無いならば交換データの交換が不可能であると判断することが可能となる。
なお、上記においては、フィルタリング用データに含まれるアプリケーションIDを分類するために、システムフラグ情報およびアルゴリズム識別情報を用いてリスト毎に分類して、当該リストにアプリケーションIDを含める方式について説明したが、上述したアプリケーションプログラムの種別を示すシステムフラグ情報を用いて、さらに高度なアプリケーションIDの分類を実行するようにしても良い。
具体的には、上記のアルゴリズム識別情報毎のリストを作成する際に、交換データのフィルタリング用データに含まれるシステムフラグ情報を確認して、内蔵アプリ保存領域84に内蔵されているアプリケーションプログラムに対応する交換データのアプリケーションIDは、システムフラグ情報およびアルゴリズム識別情報毎のリストの中に含めないようにすることが可能である。すなわち、内蔵アプリ保存領域84に内蔵されているアプリケーションプログラムに対応する交換データのアプリケーションIDのリストを作成しないようにすることが可能である。
当該処理により、内蔵アプリ保存領域84に内蔵されているアプリケーションプログラムに対応する交換データのアプリケーションIDについては、送信無線フレーム内に含めないようにすることが可能である。
内蔵アプリ保存領域84に格納されているアプリケーションプログラムは、全てのゲーム装置に予め内蔵されているものを含んでいる。したがって、当該アプリケーションプログラムを実行することによって生じた交換データを識別するアプリケーションIDを含めた送信無線フレームを通信相手であるゲーム装置3に送信あるいは、ゲーム装置3から受信した場合には、ゲーム装置3にも同じアプリケーションプログラムが内蔵されているため基本的にアプリケーションIDが一致する可能性が高い。すなわち、各ゲーム装置に同じアプリケーションプログラムが内蔵アプリ保存領域84に内蔵されているため、内蔵アプリに対応するアプリケーションID以外にアプリケーションIDが一致しない場合であっても基本的に通信相手となる全てのゲーム装置との間で実質的な通信を実行することになる可能性がある。したがって、内蔵アプリ保存領域84に内蔵されているアプリケーションプログラムに対応する交換データのアプリケーションIDは、アルゴリズム識別情報毎のリストの中に含めないようにすることにより、通信相手を制限することが可能となり、データ授受処理を実行させるためにスリープ状態の本体部を起動させる回数を減少させることにより消費電力を低減することが可能となる。
なお、当該処理の場合には、後述する送信スロット作成の際の交換データ授受アプリの確認の際に、送信無線フレームと受信無線フレームとの比較に基づいて一致したアプリケーション以外に、送信BOXに交換データを格納している内蔵アプリを交換データを授受することが可能なアプリケーションの中に含めるようにすれば良い。
また、MACアドレスリスト保存領域70に本体側のCPU31から出力されたMACアドレスリストを格納することにより、後述する携帯端末間通信処理におけるMACアドレスフィルタリング処理を実現することが可能となる。
一方、ステップS32において、CPU31(通信設定処理部204)は、交換データ保存領域80の送信BOXに交換データがないと判断した場合(ステップS32においてNO)には、上記の処理を実行することなく処理を終了する(リターン)。この場合には、送信BOXに交換データが無いため後述する携帯端末間通信に従う他のゲーム装置との間での交換データの授受処理は実行されないが、後述する携帯固定端末間通信に従う配信データを受信することが可能である。
再び、図14を参照して、次に、CPU31(通信指示処理部206)は、無線通信モジュール38に対して無線通信の通信開始指示を出力する(ステップS29)。当該指示により無線通信モジュール38による無線通信が開始される。たとえば、CPU31(通信指示処理部206)は、通信設定処理部204における通信設定処理の後、無線通信モジュール38を利用したアプリケーションが実行されていないと判断した場合に無線通信モジュール38に無線通信の通信開始指示を出力する。
なお、本例においては、一例として、無線通信モジュール38による無線通信の準備として、交換データ保存領域80の送信BOXの内容に変更が有ったかどうかに基づいて、例えば、図13で説明した如くアプリケーションプログラムが交換データ保存領域80の送信BOXに交換データを格納したことに応答して当該通信設定処理部204における処理を実行し、通信指示処理部206における通信開始指示を出力する場合について説明したが、特にその場合に限られず、電源投入時に、無線通信が有効に設定された場合に通信設定処理(ステップS28)を開始するようにすることも可能である。あるいは、ユーザからの操作指示に応答して通信設定処理(ステップS28)を開始するようにしても良い。あるいは、所定期間経過毎に、自動的に通信設定処理(ステップS28)を開始するようにしたり、これらを組み合わせるようにしても良い。
図16は、通信設定処理によりRAM66に格納されたデータの概念図について説明する図である。
図16(A)を参照して、ここでは、RAM66のフィルタリング用データ保存領域68にアプリケーションID「A,B,C,D」のリストがそれぞれ格納されている場合が示されている。
なお、図16(A)は、MACアドレスリストには何も格納されていない状態である。なお、ここでは、内蔵アプリDに対応するアプリケーションIDもフィルタリング用データ保存領域68に格納した場合について説明するが、上述したように含めないようにすることも可能である。以下においても同様である。
図16(B)においては、図16(A)で説明したアプリケーションIDのリストがフィルタリング用データ保存領域68に格納されるとともに、MACアドレスリストとして、MACアドレスAD1,AD2,AD3がMACアドレスリスト保存領域70に格納されている場合が示されている。当該MACアドレスリストのデータは、後述する携帯端末間通信におけるMACアドレスの比較によるMACアドレスフィルタリング処理の際に用いられる。
<無線通信モジュール38による無線通信の全体フロー>
図17は、本発明の実施の形態に従う無線通信モジュール38で実行する無線通信のフロー図である。
図17を参照して、CPU31からの通信開始指示に従い無線通信モジュール38のCPU60は、以下の処理を実行する。具体的には、CPU60は、所定期間の間、携帯端末間通信を実行する(ステップS44)。そして、再び、所定期間の間、携帯端末間通信を実行する(ステップS46)。そして、次に、所定期間の間、携帯固定端末間通信を実行する(ステップS48)。そして、再び、ステップS44に戻って携帯端末間通信を実行する。
なお、携帯端末間通信と携帯固定端末間通信を実行する所定期間の長さは同じであっても良いし、異なるものとすることも可能である。
また、本例においては、一例として、携帯端末間通信を実行した後に、携帯固定端末間通信を実行する場合について説明するが、特に当該順序に限られず、携帯固定端末間通信を最初に実行するようにしても良い。
また、本実施例においては、2回の携帯端末間通信の後に、1回の携帯固定端末間通信を実行する場合について説明するが、特にこの場合に限られず、回数は自由に設定することが可能である。
当該携帯端末間通信(図18)および携帯固定端末間通信(図86)については、一例として無線通信モジュール38のCPU60がROM72に格納されている携帯端末間通信を実行するためのアプリケーションおよび携帯固定端末間通信を実行するためのアプリケーションをそれぞれ実行することにより実現されるものである。
したがって、無線通信モジュール38は、本体側のCPU31のアプリケーションの実行の有無に関わらず、例えば、アプリケーションを実行していないとき、さらには、スリープ状態等の省電力状態にあるときでも、上記の携帯端末間通信および携帯固定端末間通信を実行し続ける。
なお、本体側のCPU31は、無線通信モジュール38を利用するアプリケーションを実行する場合には、無線通信モジュール38に対して、当該無線通信の中止を指示し、当該無線通信を終了させて、当該アプリケーションに基づく別の通信を実行することも可能である。
そして、CPU31は、当該別の通信が終了した場合には、上記で説明した通信設定処理部204における通信設定処理後、通信指示処理部206による通信開始指示を出力する。これにより、再び携帯端末間通信および携帯固定端末間通信である無線通信を再開することが可能である。
<無線通信モジュール38による携帯端末間通信>
図18は、本発明の実施の形態に従う携帯端末間通信について説明するフロー図である。当該処理は、無線通信モジュール38において交換データを交換する通信相手を探索する交換相手探索処理であり、一例としてCPU60が、ROM72に格納されている携帯端末間処理を実行するためのアプリケーションを実行することにより実現される。
図18を参照して、まず、CPU60(無線フレーム設定部222)は、送信無線フレームを設定する(ステップS50)。
具体的には、CPU60(無線フレーム設定部222)は、ゲーム装置3に対して送信する送信データとしてRAM66に格納されているフィルタリング用データ保存領域68に格納されているアプリケーションIDに基づく送信無線フレームを設定する。
なお、アプリケーションIDを各判定方式に対応するリストとして纏めてフィルタリング用データ保存領域68に保存している場合には、アプリケーションIDをリスト毎に送信無線フレームに含める。その際には、リストを識別するために設けられた判定のアルゴリズムの方式を示すアルゴリズム識別情報およびシステムフラグ情報を含むリストヘッダ情報もリストとともに含めた送信無線フレームを設定する。設定された送信無線フレームは、RF−IC62を介して外部に出力される送信データとしてRAM66の送信無線フレーム保存領域67に保存される。また、設定された送信無線フレームは、後述するアプリケーションID判定処理において用いられる。
図19は、本発明の実施の形態に従う携帯端末間通信においてゲーム装置において送信される送信無線フレームの構成について説明する図である。なお、受信される受信無線フレームの構成についても同様である。
図19を参照して、送信無線フレームは、ヘッダフィールドD1と、データフィールドD3とを含む。
ヘッダフィールドD1は、当該送信無線フレームを受信無線フレームとして受信するインターフェース(無線通信モジュール)に対して当該受信無線フレームの開始を認識させ、同期を取るタイミングを設定するためのデータやフレーム長およびMACアドレスを規定するMAC部D2等を含む。
データフィールドD3は、複数のIE(Information Element)データを含む。例えば、無線通信で用いられる識別コード、SSID(Service Set Identifier)や、電波干渉を避けるために設定される無線チャンネル(周波数)等のデータに関するIEデータがそれぞれ格納される。
そして、本例においては、データフィールドD3に携帯端末間通信のIEデータとして、ベンダ特定IEデータD4が含まれる場合が示されている。ベンダ特定IEデータは、本例における携帯端末間通信における交換データの通信処理を実行するか否かに関する通信判断条件に相当する。
ここで、MACアドレスを規定するMAC部D2の構成について説明する。
MAC部D2は、ネットワーク機器のベンダー毎に割り当てられているベンダーコードD5と、各ベンダがネットワークインターフェース毎に異なるように割り当てるインタフェースコードD6とを含む。
ベンダーコードD5およびインタフェースコードD6は、それぞれ3オクテット(1オクテットは8ビット)で構成され、ベンダーコードD5の最初のオクテットD5−1の最下位のビットD5bがX、最下位から2番目のビットD5aがYとしてMACアドレスのタイプを規定するものとして設けられている。
具体的には、ビットXは、グループ分けされた複数の宛先を示すマルチキャストアドレスか、ただ1つの宛先を表すユニキャストアドレスかを判定するビットとして用いられる。本例においては、ビットX=1の場合には、マルチキャストアドレス、ビットX=0の場合には、ユニキャストアドレスとする。
そして、ビットYは、ユニキャストアドレスの場合において、グローバルアドレスか、ローカルアドレスかを判定するビットとして用いられる。本例においては、ビットX=0の場合にビットY=0の場合には、グローバルアドレス、ビットY=1の場合には、ローカルアドレスとする。
そして、本例においては、IEデータに含まれる携帯端末間通信のMACアドレスのタイプとして、ビットX=0、Y=1が設定されているものとする。すなわち、ベンダーコードD5には、ローカルアドレスが設定されるものとする。
当該ローカルアドレスについては後述するが変更することが可能である。
図20は、ベンダ特定IDデータD4の構成について説明する図である。
図20を参照して、ベンダ特定IEデータは、タグ情報DD1、タグ長情報DD2、ベンダ情報DD3、通信データ識別情報DD4、第1ID群DDA、第2ID群DDBとを含む。
タグ情報DD1は、複数のIEデータをそれぞれ識別する識別データである。タグ長情報DD2は、ベンダ特定IEデータD4のデータ長を示すデータが含まれている。
ベンダ情報DD3は、当該データを提供する企業等を識別するためのデータである。
通信データ識別情報DD4は、通信データの種別を示すデータであり、携帯端末間通信の場合には、携帯端末間通信の通信データを示す情報が格納される。なお、携帯固定端末間通信の場合において、固定端末機器5から送信される配信無線フレームには、携帯固定端末間通信の通信データを示す別の情報が格納される。当該情報を確認することにより携帯端末間通信の通信データかどうか、すなわち、受信無線フレームが携帯端末間処理として処理可能な無線フレームであるかどうかが判断される。あるいは、受信した配信無線フレームが携帯固定端末間処理として処理可能な無線フレームであるかどうかが判断される。
本例においては、一例として、アプリケーションIDをリストとして纏めてフィルタリング用データ保存領域68に保存している場合について説明する。
それゆえ、アプリケーションIDのリストおよび当該リストを識別するために設けられたリストヘッダ情報が設けられる形式となっている。リストヘッダ情報は、システムフラグ情報と、アルゴリズム識別情報とを含む。
当該形式により、複数のアプリケーションIDで、システムフラグ情報および比較のアルゴリズムを識別するアルゴリズム識別情報を共有することができるためデータ量を縮小することが可能となる。また、システムフラグ情報および比較のアルゴリズム毎にアプリケーションIDのリストが設けられた形式であるため比較の際の検索が容易となり高速な比較処理が可能となる。なお、比較のアルゴリズムについては後述する。
本例においては、一例として、比較のアルゴリズムを規定する2つのそれぞれ異なるアルゴリズム識別情報に従って第1ID群DDAと、第2ID群DDBとが設けられている場合が示されている。なお、ここで、一例として、第1ID群DDAおよび第ID群DDBのシステムフラグ情報は、同じであるものとする。また、当該システムフラグ情報は、一例として、内蔵アプリ保存領域84に内蔵されたアプリケーション以外のアプリケーションであることを示すものであるとする。
第1ID群DDAは、第1IDリストヘッダ情報DD5と、第1IDリストDD6とを含む。
第1IDリストDD6は、複数のアプリケーションIDを含む。本例においては一例として、アプリケーションID[0]DD6−1、アプリケーションID[1]DD6−2、・・・が含まれる場合が示されている。
各アプリケーションIDは、長さデータDD9と、IDデータDD10とを含む。長さデータDD9は、IDデータDD10の比較に用いられる長さを示すデータである。IDデータDD10は、アプリケーション毎に予め設けられたアプリケーション名を示す識別データである。当該アプリケーションIDは、上述したCPU31におけるアプリケーションの実行により交換データ登録イベントの発生および交換データの指定入力に従い交換データに対応付けられて設定される。例えば、この場合は一例として交換条件データ等の設定はなかったものとする。
当該第1IDリストDD6の複数のアプリケーションIDのリストのヘッダ情報として、第1IDリストヘッダ情報DD5が設けられる。
具体的には、第1IDリストヘッダ情報DD5は、交換データに対応するアプリケーションの種別を規定するシステムフラグ情報DD5−1、比較のアルゴリズムを規定するアルゴリズム識別情報DD5−2、リストとして設けられたアプリケーションIDの長さあるいは個数を規定するリスト長情報DD5−3とを含む。
第2ID群DDBは、第2IDリストヘッダ情報DD7と、第2IDリストDD8とを含む。
第2IDリストヘッダ情報DD7は、システムフラグ情報DD7−1、アルゴリズム識別情報DD7−2、リスト長情報DD7−3とを含む。
第2IDリストヘッダ情報DD7−1は、上述したように交換データ用のアプリケーションIDのリストを規定するシステムフラグ情報DD7−1、比較のアルゴリズムを規定するアルゴリズム識別情報DD7−2、リストとして設けられたアプリケーションID#の長さあるいは個数を規定するリスト長情報DD7−3とを含む。
第2IDリストDD8は、複数のアプリケーションID#を含む。本例においては一例として、アプリケーションID#[0]DD8−1、アプリケーションID#[1]DD8−2、・・・が含まれる場合が示されている。
各アプリケーションID#は、IDデータDD11と、フィルタサイズデータDD12と、センドフラグデータDD13と、レシーブフラグデータDD14と、マスクデータDD15と、コンディションデータDD16と、リクエストDD17とを含む。
本例においてアプリケーションID#は、上述した送受信条件データおよび取得条件データが交換条件データとして収められている。具体的には、センドフラグデータおよびレシーブフラグデータが送受信条件データを示すデータである。また、マスクデータ、コンディションデータ、リクエストデータが取得条件データを示すデータである。当該アプリケーションID#は、上述したCPU31におけるアプリケーションの実行により交換データ登録イベントの発生および交換データの指定入力に従い交換データに対応付けられて設定される。例えば、この場合は一例として交換データ登録イベントにおいて、送受信条件データおよび取得条件データ等の交換条件データの設定があったものとする。
IDデータDD11は、アプリケーション毎に予め設けられたアプリケーション名を示す識別データである。
フィルタサイズデータDD12は、マスクデータDD15、コンディションデータDD16、リクエストデータDD17のデータ長を規定するデータである。したがって、フィルタサイズデータDD12の値に従ってマスクデータDD15、コンディションデータDD16、リクエストデータDD17の範囲が規定されることになる。
センドフラグデータDD13、レシーブフラグデータDD14は、アプリケーションID#に含まれるIDデータDD11に対応する交換データの送受信条件データを規定するものである。一例として、送信通信のみ可か、受信通信のみ可か、双方向通信のみ可か、いずれの条件でも通信可かその通信の条件を規定するためのデータである。
マスクデータDD15、コンディションデータDD16、リクエストデータDD17は、交換データの取得条件データを規定するデータである。
コンディションデータDD16は、交換データの交換に際し、自己が保有しているデータあるいは自己の属性等を示すデータ等、相手に送信する自己の交換データに関連付けられた属性データである。自己が送信する交換データに関して相手の要求条件を満たしているかどうかに用いられる。
リクエストデータDD17は、交換データの交換に際し、受信する相手に要求する交換データに関連付けられた属性データである。相手から受信する交換データに関して自己の要求条件を満たしているかどうかに用いられる。
マスクデータDD15は、リクエストデータDD17の有効/無効の領域を設定するデータである。すなわち、マスクデータDD15がリクエストデータDD17の無効を規定した場合には、交換データの交換に際し、自己の要求条件は無い、言い換えるならば自己の要求条件は常に満たしていることを意味する。
当該アプリケーションIDのリストを送信無線フレーム中にデータとして含めることにより、当該送信無線フレームを受信無線フレームとして受信した側において、当該アプリケーションIDのリストに基づいて、例えば同じアプリケーションの交換データを有しているか否かを判断することが可能である。なお、比較した場合に条件が一致するか否かを判断できさえすれば良く、例えば、当該アプリケーションIDそのものを送信するのではなく、ハッシュ関数に基づくハッシュ値を送信して、受信した側においてデータ比較するようにしても良い。他の情報等についても同様にすることも可能である。
当該送信無線フレームは、不特定の相手(ゲーム装置)に対して送信されたものであり、不特定の相手(ゲーム装置)が受信無線フレームとして受信するものである。後述するが子機側のゲーム装置は、宛先を特定せずに当該送信を繰り返し実行する。そして、当該送信無線フレームを受信無線フレームとして受信したゲーム装置(親機側)は、当該送信無線フレームを発信したゲーム装置(子機側)に対して、自己が有するデータに基づく送信無線フレームを送信し、データの授受に従って不特定のゲーム装置同士が通信処理を実行する。
なお、本例における送信無線フレームについては、一例として、複数のIE(Information Element)データが含まれた送信無線フレームについて説明したが、特にこれに限られず、ベンダ特定IEデータのみを含む送信無線フレームとすることも可能である。
図21は、フィルタリング用データ保存領域68で保存されているアプリケーションIDの状態を説明する概念図である。
図21を参照して、ここでは、アプリケーションプログラムAに対応する送信BOXSBAと、アプリケーションプログラムBに対応する送信BOXSBBが設けられている場合が示されている。各送信BOXには、複数の交換データとなるデータが格納されている場合が示されている。後述するが、一例として、基本的には各送信BOX内の左端のデータから順番に1つずつ送信されるものとする。本例においては、送信BOXSBA内の左端のデータXと、送信BOXSBBの左端のデータZが示されている。
データXは、IDデータIDD0A(「0001」)と、データグループIDIDD1A(「1001」)と、フィルタリング用データIDD9A(「F1001」)とを含む。データZは、IDデータIDD0B(「0002」)と、データグループIDIDD1B(「2001」)と、フィルタリング用データIDD9B(「F2001」)とを含む。
上述したように、交換データ保存領域80の各送信BOXのデータが確認され、交換データが有ると判断された場合には、各送信BOXに格納されているデータのフィルタリング用データが取得されて、フィルタリング用データ保存領域68に格納される。本例においては、送信BOXSBAの左端のデータXのフィルタリング用データIDD9A(「F1001」)が取得されて、フィルタリング用データ保存領域68に格納される。同様に、送信BOXSBBの左端のデータZのフィルタリング用データIDD9B(「F2001」)が取得されて、フィルタリング用データ保存領域68にリスト形式で格納される。
当該フィルタリング用データ保存領域68の格納の際に、システムフラグ情報およびアルゴリズム識別情報に基づいて、アプリケーションIDが分類されたリスト形式で保存される。
フィルタリング用データは、上述したようにシステムフラグ情報と、アルゴリズム識別情報と、アプリケーションIDとで構成されている。そして、当該システムフラグ情報およびアルゴリズム識別情報に基づいて、フィルタリング用データのアプリケーションIDが分類される。ここでは、データXのアプリケーションIDAと、データZのアプリケーションIDBとが同じ分類としてリスト形式で纏められた状態が示されている。リストヘッダ情報には、システムフラグ情報、アルゴリズム識別情報およびリスト長情報が含められている。そして、当該形式で保存されたフィルタリング用データのアプリケーションIDが送信無線フレームにセットされることになる。
なお、本例においては、一例として、アプリケーションIDをシステムフラグ情報およびアルゴリズム識別情報に従うリストとして纏めてフィルタリング用データ保存領域68に保存している場合において、アプリケーションIDをリスト毎に送信無線フレームに含めるとともに、当該リストを識別するために設けられたシステムフラグ情報およびアルゴリズム識別情報を含むリストヘッダ情報もリストとともに含めた送信無線フレームを設定する場合について説明したが、フィルタリング用データ保存領域68にリスト毎にアプリケーションIDが保存されていない場合であっても上記の送信無線フレームを設定することは可能である。
例えば、送信無線フレームを設定する際に、無線フレーム設定部222が、フィルタリング用データ保存領域68に保存されているフィルタリング用データに含まれているアプリケーションIDと、当該アプリケーションIDに対応づけられたシステムフラグ情報およびアルゴリズム識別情報に基づいて、システムフラグ情報およびアルゴリズム識別情報毎のリストと、当該リストを識別するためのリストヘッダ情報を作成して、送信無線フレームを設定するようにすることも可能である。
再び、図18を参照して、送信無線フレームを設定した後、次に、CPU60(通信相手探索部224)は、所定期間が経過したかどうかを判断する(ステップS51)。そして、ステップS51において、CPU60は、所定期間が経過していないと判断した場合(ステップS51においてNO)には、通信相手(他のゲーム装置)を探索する通信相手サーチ処理を実行する(ステップS52)。通信相手サーチ処理については後述する。
そして、次に、CPU60(通信相手探索部224)は、通信相手サーチ処理により通信相手が発見されたかどうかを判断する(ステップS54)。
ステップS54において通信相手が発見されない場合(ステップS54においてNO)には、ステップS51に戻る。
ステップS54において、通信相手が発見された場合(ステップS54においてYES)には、CPU60(装置識別情報比較部226)は、MACアドレスを比較する(ステップS56)。具体的には、受信無線フレームに含まれるMACアドレスと、上述したMACアドレスリスト保存領域70に格納されているMACアドレスとを比較する。上述したようにMACアドレスは、通信対象を識別する識別情報であり、各ゲーム装置にそれぞれ固有のMACアドレスが割り当てられている。そして、MACアドレスリスト保存領域70には、各ゲーム装置に割り当てられたMACアドレスが保存されている。
そして、次に、CPU60(装置識別情報比較部226)は、受信無線フレームに含まれる他のゲーム装置のMACアドレスが、MACアドレスリストに格納されているMACアドレスと一致するかどうかを判断する(ステップS58)。
そして、ステップS58において、MACアドレスが一致したと判断した場合(ステップS58においてYES)には、再びステップS51に戻る。すなわち、以降の処理を実行することなく当該MACアドレスに対応する他のゲーム装置との通信を終了する。したがって、通信可能範囲10に含まれる他のゲーム装置からの通信対象となるデータを受信する毎に識別情報であるMACアドレスと一致するかどうかの判断が繰り返される。
図22は、本発明の実施の形態に従うMACアドレスを比較する場合の概念図である。
本例においては、ゲーム装置1と、通信相手である他のゲーム装置としてゲーム装置3との通信接続について説明する。
図22を参照して、ここでは、ゲーム装置1側において、交換データ保存領域80の送信BOXSBA〜SBDにそれぞれ交換データが格納されている場合が示されている。
そして、無線通信モジュール38のRAM66のフィルタリング用データ保存領域68には、図16(A)で説明したのと同様にアプリケーションID「A,B,C,D」がそれぞれ格納されている場合が示されている。
なお、MACアドレスリストには何も格納されていない。
次に、ゲーム装置3側について説明する。ゲーム装置3側の対応する同一の構成要素については、「P」の記号をさらに付加している。具体的には、ゲーム装置1の交換データ保存領域80と、ゲーム装置3側の交換データ保存領域80Pとが対応している。
また、ゲーム装置1の無線通信モジュール38と、ゲーム装置3側の無線通信モジュール38Pとが対応している。他の場合についても同様である。
そして、ゲーム装置3の交換データ保存領域80Pの送信BOXSBB,SBEにそれぞれ交換データが格納されている場合が示されている。
ゲーム装置3側においても同様の方式に従って、無線通信モジュール38Pのフィルタリング用データ保存領域68PにアプリケーションID「B,E」がそれぞれ格納されている場合が示されている。
なお、MACアドレスリストには何も格納されていない。当該場合において、ゲーム装置1である自機のMACアドレスはAD0に設定されているものとする。
また、ゲーム装置3のMACアドレスはAD1に設定されているものとする。
例えば、ゲーム装置3からの受信無線フレームを受信した場合には、ゲーム装置3のMACアドレスAD1は、ゲーム装置1のMACアドレスリストには登録されていないためMACアドレスは一致しないと判断される。したがって、次の処理に進む。
なお、本例においては、ゲーム装置1において、MACアドレスリストに登録されているかどうかが判断される場合について説明しているが、ゲーム装置3側においても同様の処理が実行される。
図23は、本発明の実施の形態に従うMACアドレスを比較する場合の別の概念図である。
図23を参照して、ここでは、図22の構成と比較して、MACアドレスリストに登録されている内容が異なる。具体的には、無線通信モジュール38のMACアドレスリスト保存領域70には、MACアドレスAD1が登録されている場合が示されている。
また、同様に、ゲーム装置3側のMACアドレスリスト保存領域70PにMACアドレスAD0が登録されている場合が示されている。
例えば、ゲーム装置3からの受信無線フレームを受信した場合には、ゲーム装置3のMACアドレスAD1は、ゲーム装置1のMACアドレスリストに登録されておりMACアドレスが一致すると判断される。
したがって、当該場合には、当該MACアドレスに対応する他のゲーム装置であるゲーム装置3との以降の通信処理を行わない(MACアドレスフィルタリング処理)。すなわち、MACアドレスリストに登録されている以前に通信処理が実行されたゲーム装置との間では実質的な通信は実行されない。なお、ゲーム装置3側においても同様の処理が実行される。
なお、上述したようにMACアドレスリスト保存領域70に格納されているMACアドレスリストはたとえば所定の操作指示に従って消去することも可能であり、消去された場合には、再度、以前に通信処理が実行された装置ともデータ通信を実行することが可能である。すなわち、以前に交換データの授受が実行された装置についても状況が変わり(新たな交換データが設定されているなど)、交換データの授受が可能な状況となっている可能性もあるため再度、交換データの交換が可能か否かを判断して、可能であるならば交換データの授受を実行するようにしても良い。
たとえば、図9のステップS12において空きBOXスロットに交換データを格納した際に、MACアドレスリスト保存領域88および70に格納されているアドレスリストを消去するようにしても良い。
再び図18を参照して、ステップS58において、MACアドレスが一致しないと判断した場合(ステップS58においてNO)には、CPU60(通信データ判定部228)は、受信したデータの内容を確認する(ステップS59)。
そして、CPU60(通信データ判定部228)は、受信したデータとして、受信無線フレームが携帯端末間処理として処理可能な無線フレームであるかどうかを判定する(ステップS60)。
具体的には、図19で説明した当該データを提供する企業等を識別するためのベンダ情報がゲーム装置1が予め有しているベンダ情報と一致するかどうかを判断する。ベンダ情報が一致する場合とは、送信されたデータの発信源が互いに通信接続が可能な同種の装置であることを意味し、異なる場合には、送信されたデータの発信源が互いに通信接続が不可能である全く種類の異なる装置であることを意味する。
また、通信データ識別情報がゲーム装置1が予め有している通信データ識別情報と一致するかどうかを判断する。通信データ識別情報が一致する場合とは、携帯端末間通信における通信データ、すなわち携帯端末間処理として処理可能な無線フレームであることを意味する。ゲーム装置1側の比較の対象であるベンダ情報は予めROM72に登録されているものとする。また、ゲーム装置1側の比較の対象である通信データ識別情報についても予めROM72に登録されているものとする。
一方、携帯端末間通信における通信データ識別情報と、後述するが携帯固定端末間通信における固定端末機器5から出力される配信無線フレームに含まれる通信データ識別情報とは異なるため仮に携帯端末間通信において固定端末機器5から出力されたビーコン(配信無線フレーム)を受信した場合であっても通信データ識別情報が異なるためデータ通信は実行されず同種のゲーム装置とのみ通信することが可能である。
CPU60(通信データ判定部228)は、携帯端末間通信か携帯固定端末間通信かによって比較する通信データ識別情報を切り替えて、受信したデータ(受信無線フレーム)に含まれている通信データ識別情報と一致するか否か判断する。
すなわち、ステップS60において、受信無線フレームを受信しないと判断した場合(ステップS60においてNO)には、再びステップS51に戻る。したがって、互いに通信接続が不可能である装置からデータを受信あるいは通信対象とならないデータを受信した場合には、以降の処理を実行することなく通信を終了する。なお、本例においてはベンダ情報および通信データ識別情報がともに一致するかどうかを判断する場合について説明したが、通信データ識別情報のみが一致するかどうかを判断するようにしても良い。
次に、受信無線フレームを受信したと判断した場合(ステップS60においてYES)には、次に、CPU60(アプリケーションID判定部230)は、アプリケーションIDの判定処理を実行する(ステップS62)。
アプリケーションIDの判定処理については後述する。
そして、CPU60(アプリケーションID判定部230)は、判定処理結果に基づいてアプリケーションIDの一致フラグがオンであるかどうかを判断する(ステップS64)。具体的には、受信した受信無線フレームに含まれるアプリケーションIDのリストと自己が有している送信無線フレームに含まれるアプリケーションIDのリストとを参照して、一致すると判定されたアプリケーションIDが少なくとも1つ存在するかどうかを判断する。すなわち、ここでは、通信接続により交換可能な交換データを互いに有しているかどうかが判断される。同一のアプリケーションIDであれば、データを交換した場合に同じアプリケーションを実行することにより互いにデータを利用可能である。なお、アプリケーションIDが同じでなくても、データの互換性のあるアプリケーションであることが判定して、そのような関係にあるアプリケーションIDであれば、ステップS64でYESと判断してもよい。
CPU60(アプリケーションID判定部230)は、アプリケーションIDの一致フラグがオンであると判断した場合(ステップS64においてYES)には、一致したアプリケーションIDに対応する交換データを有する他のゲーム装置が発見された旨すなわち通信相手が交換データを交換する交換相手である旨を本体側に通知する(ステップS66)。そして処理を終了する(エンド)。
以降、他のゲーム装置である通信相手と接続を確立して、他のゲーム装置との間での一致したアプリケーションIDに対応する交換データの授受を実行するデータ授受処理については、無線通信モジュール38を用いた本体側のCPU31のアプリケーションとして実行されることになる。
したがって、本体側に、交換データを有する他のゲーム装置が発見された旨を通知することにより無線通信モジュール38のCPU60のみが独立して実行する無線通信、すなわち、無線通信モジュール38において交換データを交換する通信相手を探索する交換相手探索処理は終了する。
一方、ステップS64において、アプリケーションIDの一致フラグがオンでない場合(一致フラグオフ)(ステップS64においてNO)には、ステップS51に戻る。
当該処理により、本例においては、無線通信モジュール38における交換相手探索処理により交換可能な通信相手が見つかった場合にのみ、本体側のCPU31に通知されて、通信相手との接続が確立されて、交換データの授受が実行される。したがって、例えば、本体側のCPU31がスリープ状態等の省電力状態である場合に、無線通信モジュール38における交換相手探索処理により通信相手が見つかった場合であっても交換が可能でなければ本体側のCPU31に通知されて通信接続が確立されることはないため、ゲーム装置1全体における省電力を図ることが可能である。
<アプリケーションIDの判定処理>
本実施例においては、アプリケーションIDを各判定方式に対応するリストとして纏めた形式である図20に示す送信無線フレームのアプリケーションIDの判定処理について説明する。
図24は、アプリケーションID判定部230における全体のフロー図である。
図24を参照して、CPU60(IDリストヘッダ情報比較部232)は、まず、比較対象となるIDリストヘッダ情報を抽出する(ステップS72)。
例えば、まず最初に、受信無線フレーム保存領域69に保存された受信無線フレーム(ゲーム装置3)のベンダ特定IEデータに含まれる第1IDリストヘッダ情報と、送信無線フレーム保存領域67に保存された送信無線フレーム(自機1)のベンダ特定IEデータに含まれる第1IDリストヘッダ情報を抽出する。
なお、当該フローにおいては、後述するが、システムフラグ情報およびアルゴリズム識別情報が一致するまで受信無線フレーム保存領域69に保存された受信無線フレームおよび送信無線フレーム保存領域67に保存された送信無線フレームからIDリストヘッダ情報をそれぞれ1つずつ抽出して、全ての組み合わせにおいて比較処理を実行する。
そして、次に、CPU60(IDリストヘッダ情報比較部232)は、受信無線フレーム保存領域69に保存された受信無線フレームから抽出されたIDリストヘッダ情報に含まれるシステムフラグ情報と、送信無線フレーム保存領域67に保存された送信無線フレームから抽出されたIDリストヘッダ情報に含まれるシステムフラグ情報と一致するかどうかを判断する(ステップS74)。
ステップS74において、システムフラグ情報がともに一致すると判断された場合(ステップS74においてYES)には、次に、CPU60(IDリストヘッダ情報比較部232)は、受信データから抽出されたIDリストヘッダ情報に含まれるアルゴリズム識別情報が送信無線フレーム保存領域67に保存された送信無線フレームから抽出されたIDリストヘッダ情報に含まれるアルゴリズム識別情報と一致するかどうかを判断する(ステップS76)。
ステップS76において、アルゴリズム識別情報が一致しないと判断された場合(ステップS76においてNO)には、ステップS82に進む。
ステップS76において、アルゴリズム識別情報がともに一致すると判断された場合(ステップS76においてYES)には、次に、CPU60(IDリストヘッダ情報比較部232)は、受信無線フレーム保存領域69に保存された受信無線フレームから抽出されたIDリストヘッダ情報に含まれるアルゴリズム識別情報が「0」かどうかを判断する(ステップS78)。
ステップS78において、アルゴリズム識別情報が「0」である場合には、CPU60(IDリスト比較部234)は、第1アルゴリズムに従うIDリスト比較処理を実行する(ステップS80)。そして、処理を終了する(リターン)。第1アルゴリズムに従うIDリスト比較処理については後述する。
一方、ステップS78において、アルゴリズム識別情報が「0」でない場合、すなわち、「1」である場合には、CPU60(IDリスト比較部234)は、第2アルゴリズムに従うIDリスト比較処理を実行する(ステップS86)。そして、処理を終了する(リターン)。第2アルゴリズムに従うIDリスト比較処理については後述する。
一方、ステップS74において、システムフラグ情報が一致しないと判断された場合(ステップS74においてNO)には、次に、CPU60(IDリストヘッダ情報比較部232)は、比較対象となる他のIDリストヘッダ情報が有るかどうかを判断する(ステップS82)。
ステップS82において、比較対象となる他のIDリストヘッダ情報が有ると判断した場合には、次の比較対象となるIDリストヘッダ情報を抽出する(ステップS84)。そして、ステップS74に進み同様の処理を繰り返す。例えば、一例として第2IDリストヘッダ情報を抽出する。
一方、ステップS82において、CPU60(IDリストヘッダ情報比較部232)は、比較対象となる他のIDリストヘッダ情報がないと判断した場合には、処理を終了する(リターン)。
すなわち、受信無線フレーム保存領域69に保存された受信無線フレームおよび送信無線フレーム保存領域67に保存された送信無線フレームからIDリストヘッダ情報を抽出して、全ての組み合わせにおいて一致するものが無い場合には、交換データは存在しないと判断して処理を終了する。
例えば、本例の如く、送信無線フレーム(自機1)に2つのIDリストヘッダ情報が含まれ、また、受信無線フレーム(ゲーム装置)にも2つのIDリストヘッダ情報が含まれる場合において、IDリストヘッダ情報を抽出して全ての組み合わせについて比較する場合について説明すると、まず、送信無線フレーム(自機1)のベンダ特定IEデータに含まれる第1IDリストヘッダ情報を抽出し、受信無線フレーム(ゲーム装置)に含まれる第1IDリストヘッダ情報を抽出して比較する。次に、送信無線フレーム(自機1)のベンダ特定IEデータに含まれる第1IDリストヘッダ情報と、受信無線フレーム(ゲーム装置)に含まれる第2IDリストヘッダ情報を抽出して比較する。次に、送信無線フレーム(自機1)のベンダ特定IEデータに含まれる第2IDリストヘッダ情報を抽出し、受信無線フレーム(ゲーム装置)に含まれる第1IDリストヘッダ情報を抽出して比較する。次に、送信無線フレーム(自機1)のベンダ特定IEデータに含まれる第2IDリストヘッダ情報と、受信無線フレーム(ゲーム装置)に含まれる第2IDリストヘッダ情報を抽出して比較する。
すなわち、簡易に説明すると、まず、送信無線フレーム(自機1)から最初のIDリストヘッダ情報を抽出して固定し、そして、受信無線フレーム(ゲーム装置)からIDリストヘッダ情報を順番に抽出して比較する。システムフラグ情報およびアルゴリズム識別情報が一致しない場合には、次に、送信無線フレーム(自機1)から次のIDリストヘッダ情報を抽出して固定し、そして、受信無線フレーム(ゲーム装置)からIDリストヘッダ情報を順番に抽出して比較する。当該処理を送信無線フレーム(自機1)に含まれているIDリストヘッダ情報の個数分繰り返すことになる。そして、送信無線フレーム(自機1)から最後のIDリストヘッダ情報を抽出して固定し、そして、受信無線フレーム(ゲーム装置)からIDリストヘッダ情報を順番に抽出して比較した場合に、システムフラグ情報およびアルゴリズム識別情報が一致しない場合には、ステップS82において、比較対象IDリストヘッダ情報が無いと判断(ステップS82においてNO)されて、アプリケーションID判定処理が終了する(リターン)。
当該方式により、アプリケーションIDを比較する前に受信無線フレーム保存領域69に保存された受信無線フレームおよび送信無線フレーム保存領域67に保存された送信無線フレームのベンダ特定IEに含まれるIDリストヘッダ情報に基づいて比較処理を継続するべきか否かが判断されるため、高速な比較処理を実行することが可能となる。
図25は、本発明の実施の形態に従う比較対象となるベンダ特定IEの比較について説明する図である。
図25を参照して、ここでは、図20で説明したものと同様のデータ構成が示されている。
上側が自機1の送信無線フレーム保存領域67に保存された送信無線フレームに含まれるベンダ特定IEの構成であり、下側がゲーム装置3の受信無線フレーム保存領域69に保存された受信無線フレームに含まれるベンダ特定IEの構成である。
本例においては、自機1の第1IDリストヘッダ情報DD5に含まれるシステムフラグ情報DD5−1と、ゲーム装置3の第1IDリストヘッダ情報DDp5に含まれるシステムフラグ情報DDp5−1とを比較して一致し、さらに、アルゴリズム識別情報DD5−2とアルゴリズム識別情報DDp5−2とを比較して一致した場合において、自機1の第1IDリストDD6に含まれるアプリケーションID[0],ID[1],・・・と、ゲーム装置3の第1IDリストDDp6に含まれるアプリケーションID[0],ID[1],・・・との比較を行う場合が示されている。
図26は、本発明の実施の形態に従う第1アルゴリズムに従うIDリスト比較処理について説明するフロー図である。
図26を参照して、CPU60(IDリスト比較部234)は、まず、比較対象となるIDリストからアプリケーションIDを抽出する(ステップS90)。
例えば、図25で示されるように、送信無線フレーム保存領域67に保存された送信無線フレーム(自機1)の第1IDリストDD6のアプリケーションID[0]と、受信無線フレーム保存領域69に保存された受信無線フレーム(ゲーム装置3)の第1IDリストDDp6のアプリケーションID[0]とを抽出する。
なお、当該フローにおいては、後述するが、比較する長さおよびIDデータが一致するまで比較対象となるIDリストからアプリケーションIDをそれぞれ1つずつ抽出して、全ての組み合わせにおいて比較処理を実行する。
そして、次に、CPU60(IDリスト比較部234)は、比較する長さが一致するか否かを判断する(ステップS92)。
ステップS92において、CPU60(IDリスト比較部234)は、比較する長さが一致すると判断された場合(ステップS92においてYES)には、IDデータを比較する(ステップS94)。
そして、CPU60(IDリスト比較部234)は、IDデータが一致するか否か判断する(ステップS96)。
ステップS96において、IDデータが一致しないと判断された場合(ステップS96においてNO)には、ステップS100に進む。
ステップS96において、IDデータが一致すると判断された場合(ステップS96においてYES)には、CPU60(IDリスト比較部234)は、アプリケーションIDの一致フラグをオンに設定する(ステップS98)。そして、処理を終了する(リターン)。
一方、ステップS92において比較する長さが一致しないと判断された場合には、次に、CPU60(IDリスト比較部234)は、比較対象となるIDリストから他のアプリケーションIDが有るかどうかを判断する(ステップS100)。ステップS100において、比較対象となるIDリストから他のアプリケーションIDが有ると判断した場合には、比較対象となるIDリストから他のアプリケーションIDを抽出する(ステップS101)。そして、再び、ステップS92に戻る。
例えば、図25で示されるように、送信無線フレーム保存領域67に保存された送信無線フレーム(自機1)の第1IDリストDD6のアプリケーションID[1]を抽出して同様の処理を実行する。
一方、ステップS100において、CPU60(IDリスト比較部234)は、比較対象となるIDリストから他のアプリケーションIDがないと判断した場合には、「I」に進む。
すなわち、比較する長さおよびIDデータが一致するまで、受信無線フレーム保存領域69に保存された受信無線フレームおよび送信無線フレーム保存領域67に保存された送信無線フレームそれぞれの比較対象となるIDリストからアプリケーションIDをそれぞれ1つずつ抽出して、全ての組み合わせにおいて一致するものが無い場合には、図24のステップS82に進み、再度、上述した処理を繰り返す。
例えば、本例においては、一例として、比較対象となるIDリストとして、送信無線フレーム保存領域67に保存された送信無線フレーム(自機1)の第1IDリストDD6と、受信無線フレーム保存領域69に保存された受信無線フレーム(ゲーム装置3)の第1IDリストDDp6とが抽出された場合について説明する。例えば、一例として、第1IDリストDD6および第1IDリストDDp6は、ともに、アプリケーションIDを(n+1)個有しているものとする。
当該場合において、比較対象となるIDリストからアプリケーションIDをそれぞれ1つずつ抽出して全ての組み合わせについて比較する場合について説明すると、まず、送信無線フレーム(自機1)の第1IDリストDD6のアプリケーションID[0]DD6−1を抽出し、受信無線フレーム(ゲーム装置)に含まれる第1IDリストDDp6のアプリケーションID[0]DDp6−1を抽出して比較する。次に、送信無線フレーム(自機1)の第1IDリストDD6のアプリケーションID[0]DD6−1と、受信無線フレーム(ゲーム装置)に含まれる第1IDリストDDp6のアプリケーションID[1]DDp6−2を抽出して比較する。
次に、送信無線フレーム(自機1)の第1IDリストDD6のアプリケーションID[0]DD6−1と、受信無線フレーム(ゲーム装置)に含まれる第1IDリストDDp6のアプリケーションID[2]、アプリケーションID[3]、・・・アプリケーションID[n]をそれぞれ順番に抽出して比較する。
次に、送信無線フレーム(自機1)の第1IDリストDD6のアプリケーションID[1]DD6−2を抽出し、受信無線フレーム(ゲーム装置)に含まれる第1IDリストDDp6のアプリケーションID[0]DDp6−1を抽出して比較する。次に、送信無線フレーム(自機1)の第1IDリストDD6のアプリケーションID[1]DD6−2と、受信無線フレーム(ゲーム装置)に含まれる第1IDリストDDp6のアプリケーションID[1]DDp6−2を抽出して比較する。
次に、送信無線フレーム(自機1)の第1IDリストDD6のアプリケーションID[1]DD6−2と、受信無線フレーム(ゲーム装置)に含まれる第1IDリストDDp6のアプリケーションID[2]、アプリケーションID[3]、・・・アプリケーションID[n]をそれぞれ順番に抽出して比較する。この処理を送信無線フレーム(自機1)の第1IDリストDD6のアプリケーションID[2]、アプリケーションID[3]、・・・アプリケーションID[n]まで同様に繰り返す。
すなわち、簡易に説明すると、比較対象となるIDリストにおいて、まず、送信無線フレーム(自機1)から最初のアプリケーションIDを抽出して固定し、そして、受信無線フレーム(ゲーム装置)からアプリケーションIDを順番に抽出して比較する。比較する長さおよびIDデータが一致しない場合には、次に、送信無線フレーム(自機1)から次のアプリケーションIDを抽出して固定し、そして、受信無線フレーム(ゲーム装置)からアプリケーションIDを順番に抽出して比較する。当該処理を送信無線フレーム(自機1)のIDリストに含まれているアプリケーションIDの個数分繰り返すことになる。そして、送信無線フレーム(自機1)から最後のアプリケーションIDを抽出して固定し、そして、受信無線フレーム(ゲーム装置)からアプリケーションIDを順番に抽出して比較した場合に、比較する長さおよびIDデータが一致しない場合には、ステップS100において、比較対象となるIDリストから他のアプリケーションIDがないと判断(ステップS100においてNO)されて、「I」に進む。
ここで、上記で説明したIDデータの比較について説明する。
図27は、本発明の実施の形態に従うIDデータの比較について説明する図である。
図27を参照して、本例に示されるように自機1の送信無線フレーム保存領域67に保存された送信無線フレームに含まれているアプリケーションIDのIDデータと、ゲーム装置3からの受信無線フレーム保存領域69に保存された受信無線フレームに含まれているアプリケーションIDのIDデータとの比較において、同じ長さのIDデータを比較する。例えば、一例として、当該IDデータは、アプリケーション名等のアプリケーションを特定する情報であるものとする。
具体的には、図20で説明したアプリケーションIDに含まれている上述したIDデータの比較の長さを示す長さデータを用いて当該長さデータが一致するIDデータとのみデータ比較を実行する。
すなわち、長さデータが一致するIDデータすなわち、比較の長さが同じであるIDデータとのみ比較するため、比較の長さが異なるIDデータの比較を実行する必要が無く高速にアプリケーションIDの比較を実行することが可能である。
上記においては、同じ長さデータの自機1のIDデータとゲーム装置3のIDデータとが一致する場合にアプリケーションIDの一致フラグをオンする方式について説明したが、特にこれに限られず、さらに別の比較を実行することも可能である。
図28は、本発明の実施の形態に従うIDデータのさらに別の比較について説明する図である。
図28を参照して、この場合には、IDデータに、アプリケーション名等のアプリケーションを特定する情報(アプリケーション名情報)だけでなく、他の情報が含まれている場合が示されている。
他の情報として、自機のIDデータの少なくとも一部を用いて自分が欲しいキャラクタ情報と、自分が相手に渡すキャラクタ情報とを格納する。
一方、他のゲーム装置側においても、同様に、アプリケーション名情報だけでなく、他の情報として、IDデータの少なくとも一部を用いて自分が欲しいキャラクタ情報と、自分が相手に渡すキャラクタ情報とを格納する。
そして、アプリケーション名情報が一致するか否かを判断するとともに、さらに、自機のIDデータに含まれる自分が欲しいキャラクタ情報と、他のゲーム装置のIDデータに含まれる自分が相手に渡すキャラクタ情報とが一致するか否かを判断し、自機のIDデータに含まれる自分が相手に渡すキャラクタ情報と、他のゲーム装置のIDデータに含まれる自分が欲しいキャラクタ情報とが一致するか否かも判断する。アプリケーション名情報の一致のみならず、さらに、交換するキャラクタ情報が一致する場合にアプリケーションIDの一致と判断する。
当該比較方式により、ゲーム装置1である自機と他のゲーム装置3とで実際に交換データを交換する前に、互いに交換する交換データの内容(キャラクタ情報)に基づいて互いが希望する交換データであればアプリケーションIDの一致フラグをオンして本体側に通知し、いずれか一方でも希望しない場合にはアプリケーションIDの一致フラグはオンせず、本体側に通知されないためユーザが望む交換データのみを交換することが可能となる。
すなわち、IDデータにアプリケーション名等のアプリケーションを特定する情報以外に他の情報(例えば交換データ)を含ませることにより、不本意なデータ授受処理を回避することができ、情報処理装置であるゲーム装置に対する興趣性を増すことができる。
なお、当該比較については、例えば、別のアルゴリズム識別情報を用いることにより図26で説明した方式と区別するようにしても良い。
次に、IDデータとは別に、付加的な条件として交換条件データを付加して高度な交換処理を実現する場合について説明する。
具体的には、交換条件データとして送受信条件データと取得条件データとを含む場合について説明する。
図29は、本発明の実施の形態に従う第2アルゴリズムに従うIDリスト比較処理について説明するフロー図である。
本例においては、アルゴリズム識別情報が「1」である場合に、CPU60(IDリスト比較部234)は、第2アルゴリズムに従うIDリスト比較処理を実行する。
本例においては、一例として、送信無線フレーム保存領域67に保存されている送信無線フレーム(自機1)のベンダ特定IEデータに含まれる第2IDリストヘッダ情報に含まれるアルゴリズム識別情報と、受信無線フレーム保存領域69に保存されている受信無線フレーム(ゲーム装置3)のベンダ特定IEデータに含まれる第2IDリストヘッダ情報に含まれるアルゴリズム識別情報がともに「1」であるものとする。
この場合に、例えば一例として図25で説明した送信無線フレーム保存領域67に保存された送信無線フレームに含まれる第2IDリストと、受信無線フレーム保存領域69に保存された受信無線フレームに含まれる第2IDリストとが比較対象となる。
図29を参照して、CPU60(IDリスト比較部234)は、まず、比較対象となるIDリストからアプリケーションID#を抽出する(ステップS110)。
例えば、図20および図25で示されるように、送信無線フレーム保存領域67に保存された送信無線フレーム(自機1)の第2IDリストDD8のアプリケーションID#[0]と、受信無線フレーム保存領域69に保存された受信無線フレーム(ゲーム装置3)の第2IDリストDDp8のアプリケーションID#[0]とを抽出する。
なお、当該フローにおいては、後述するが、IDデータや取得条件データ等の判定条件を満たすまで比較対象となるIDリストからアプリケーションIDをそれぞれ1つずつ抽出して、全ての組み合わせにおいて比較処理を実行する。
そして、次に、CPU60(IDリスト比較部234)は、抽出されたアプリケーションID#に含まれるIDデータを比較する(ステップS112)。
具体的には、第2IDリストDD8のアプリケーションID#[0]のIDデータと、第2IDリストDDp8のアプリケーションID#[0]のIDデータとを比較する。
そして、次に、ステップS112において、CPU60(IDリスト比較部234)は、IDデータが一致するか否か判断する(ステップS114)。
ステップS114において、IDデータが一致すると判断された場合(ステップS114においてYES)には、CPU60(IDリスト比較部234)は、フィルタサイズデータを比較する(ステップS116)。
そして、次に、CPU60(IDリスト比較部234)は、フィルタサイズが一致するかどうか判断する(ステップS118)。具体的には、第2IDリストDD8のアプリケーションID#[0]のフィルタサイズデータと、第2IDリストDDp8のアプリケーションID#[0]のフィルタサイズデータとを比較する。フィルタサイズデータは、上述したようにマスクデータ、コンディションデータ、リクエストデータの各々のデータのサイズを規定するデータである。
フィルタサイズデータが異なる場合には、比較対象とするデータサイズが異なるため以降の後述するデータ比較処理を実行するまでもなく条件は不一致と判断することが可能である。
そして、次に、ステップS118において、CPU60(IDリスト比較部234)は、フィルタサイズが一致すると判断した場合(ステップS118においてYES)には、次に互いの送受信条件データが満たされるかどうかを判断する。具体的には、送受信条件データであるセンドフラグデータおよびレシーブフラグデータを比較する(ステップS120)。センドフラグデータおよびレシーブフラグデータの比較については後述する。
そして、CPU60(IDリスト比較部234)は、比較の結果、互いの送受信条件データが満たされるすなわちフラグデータがOK判定であるかどうかを判断する(ステップS122)。
図30は、本発明の実施の形態に従う送受信条件データであるセンドフラグデータおよびレシーブフラグデータの比較について説明する図である。
図30(A)を用いて、自機1における送受信条件データであるセンドフラグデータおよびレシーブフラグデータの形式について説明する。
具体的には、センドフラグとレシーブフラグとの組み合わせに従って、交換データの送受信条件データを設定することが可能である。
具体的には、センドフラグが「1」、レシーブフラグが「0」である場合には、交換データの自機1からの送信通信のみ可能であることを示す。
また、センドフラグが「0」、レシーブフラグが「1」である場合には、交換データの他のゲーム装置からの受信通信のみ可能であることを示す。
また、センドフラグおよびレシーブフラグが「1」、「1」の場合には、いずれの条件であっても交換データの通信が可能であることを示す。すなわち、この場合には、通信相手の送受信条件データに従う通信となる。
また、センドフラグおよびレシーブフラグが「0」、「0」の場合には、交換データの自機1および他のゲーム装置との間での双方向の通信のみ可能であることを示す。
当該送受信条件データに対して、送受信条件データが満たされるすなわちフラグデータがOK判定(以下、単にフラグOK判定とも称する)となる場合について説明する。
自機1のセンドフラグが「1」、レシーブフラグが「0」の場合は、通信相手のセンドフラグが「0」、レシーブフラグが「1」あるいはセンドフラグが「1」、レシーブフラグが「1」の場合にフラグOK判定となる。
自機1のセンドフラグが「0」、レシーブフラグが「1」の場合は、通信相手のセンドフラグが「1」、レシーブフラグが「0」あるいはセンドフラグが「1」、レシーブフラグが「1」の場合にフラグOK判定となる。
自機1のセンドフラグが「1」、レシーブフラグが「1」の場合は、通信相手のセンドフラグが「0」、レシーブフラグが「0」、あるいはセンドフラグが「0」、レシーブフラグが「1」、あるいはセンドフラグが「1」、レシーブフラグが「0」、あるいはセンドフラグが「1」、レシーブフラグが「1」の場合にフラグOK判定となる。
自機1のセンドフラグが「0」、レシーブフラグが「0」の場合は、通信相手のセンドフラグが「0」、レシーブフラグが「0」の場合、あるいは、センドフラグが「1」、レシーブフラグが「1」の場合にフラグOK判定となる。
図30(B)を用いて、送受信条件データに関するフラグデータ比較における具体例について説明する。
例1の場合は、自機1のセンドフラグが「0」、レシーブフラグが「1」でゲーム装置3のセンドフラグが「1」、レシーブフラグが「0」の場合における比較が示されている。したがって、自機1の送受信条件データは、受信通信のみ可であり、ゲーム装置3の送受信条件データは送信通信のみ可であるため受信フラグOK判定すなわち通信可となる。
例2の場合は、自機1のセンドフラグが「1」、レシーブフラグが「0」でゲーム装置3のセンドフラグが「0」、レシーブフラグが「1」の場合における比較が示されている。したがって、自機1の送受信条件データは、送信通信のみ可であり、ゲーム装置3の送受信条件データは受信通信のみ可であるためフラグOK判定すなわち通信可となる。
例3の場合は、自機1のセンドフラグが「1」、レシーブフラグが「1」でゲーム装置3のセンドフラグが「1」、レシーブフラグが「0」の場合における比較が示されている。したがって、自機1の送受信条件データは、いずれの条件でも通信可であり、ゲーム装置3の送受信条件データは送信通信のみ可であるためフラグOK判定すなわち通信可となる。
例4の場合は、自機1のセンドフラグが「1」、レシーブフラグが「0」でゲーム装置3のセンドフラグが「1」、レシーブフラグが「0」の場合における比較が示されている。したがって、自機1の送受信条件データは、送信通信のみ可であり、ゲーム装置3の送受信条件データは送信通信のみ可であるためフラグNG判定すなわち通信不可となる。
例5の場合は、自機1のセンドフラグが「0」、レシーブフラグが「0」でゲーム装置3のセンドフラグが「1」、レシーブフラグが「0」の場合における比較が示されている。したがって、自機1の送受信条件データは、双方向通信のみ可であり、ゲーム装置3の送受信条件データは送信通信のみ可であるためフラグNG判定すなわち通信不可となる。
当該方式により、IDデータに交換条件データとして送受信条件データ(センドフラグデータおよびレシーブフラグデータ)を含ませて比較することにより、交換データの送信だけをしたい場合、あるいは、交換データの受信だけをしたい場合、あるいは、通信相手との間で交換データの送受信のみしたい場合、あるいは、通信相手の送受信条件データに合わせて通信した場合等、データ交換する際の通信形式のバリエーションを増すことが可能であり、データ交換の興趣性を増大させることができる。
再び、図29を参照して、次に、ステップS122において、フラグOK判定である場合(ステップS122においてYES)には、CPU60(IDリスト比較部234)は、互いの取得条件が満たされるかどうかを判断する。具体的には、取得条件が満たされるか否かの判断として条件データを比較する(ステップS124)。条件データの比較については後述する。
そして、次に、CPU60(IDリスト比較部234)は、自己の取得条件を満たしているかどうかを判断する(ステップS126)。
そして、自己の取得条件を満たしていると判断した場合(ステップS126においてYES)には、次に相手の取得条件を満たしているかどうかを判断する(ステップS128)。
次に、CPU60(IDリスト比較部234)は、相手の取得条件を満たしていると判断した場合(ステップS128においてYES)には、アプリケーションIDの一致フラグをオンする(ステップS130)。そして、処理を終了する(リターン)。
図31は、本発明の実施の形態に従う取得条件を満たしているか否かに関する条件データの比較について説明する図である。
図31(A)は、自己の条件データの比較について説明する図である。
条件データは、自機1の取得条件データ(マスクデータ、コンディションデータ、リクエストデータ)と、ゲーム装置3の取得条件データ(マスクデータ、コンディションデータ、リクエストデータ)とにより生成される。
具体的には、条件データの比較として、自機1のマスクデータとゲーム装置3のコンディションデータとの積と、自機1のマスクデータと自機1のリクエストデータとの積とが同じ値であるかどうかを判断する。
図31(B)は、相手の取得条件を満たしているかに関する条件データの比較について説明する図である。
具体的には、条件データの比較として、ゲーム装置3のマスクデータと自機1のコンディションデータとの積と、ゲーム装置3のマスクデータとゲーム装置3のリクエストデータとの積とが同じ値であるかどうかを判断する。
図32は、本発明の実施の形態に従う取得条件データの具体例について説明する図である。
図32を参照して、ここでは、4つの取得条件データの例が示されている。
具体的には、ユーザであるHA、HB、HC、HDさんのそれぞれが設定した取得条件データが示されている。
マスクデータ、コンディションデータ、リクエストデータは、それぞれ1ビットであるものとする。
本例においては、一例として、例えば、上記の交換データ登録イベントにおける、交換データの格納に際し、HA、HB、HC、HDさんがそれぞれデータ交換を希望する際の条件として性別を取得条件データとして設定した場合の例について説明する。
具体的には、相手に送信する自己の交換データおよび相手から受信する交換データに関連付けられた属性データとして、性別を示すデータ(男:「1」、女:「0」)を用いた場合について説明する。
図32(A)は、HAさんの取得条件データが示されており、マスクデータが「1」、コンディションデータが「1」、リクエストデータが「0」である場合が示されている。当該場合は、HAさんは、コンディションデータが「1」であるため性別は男であることを示すとともに、リクエストデータが「0」であるため性別が女とデータ交換を希望する場合である。なお、マスクデータが「0」の場合には、リクエストデータを無効に設定することができる。すなわち、データ交換を希望する性別をいずれでも良いものに設定することができる。
図32(B)は、HBさんの取得条件データが示されており、マスクデータが「1」、コンディションデータが「0」、リクエストデータが「1」である場合が示されている。当該場合は、HBさんは、コンディションデータが「0」であるため性別は女であることを示すとともに、リクエストデータが「0」であるため性別が男とデータ交換を希望する場合である。
図32(C)は、HCさんの取得条件データが示されており、マスクデータが「0」、コンディションデータが「1」、リクエストデータが「0」である場合が示されている。当該場合は、HBさんは、コンディションデータが「1」であるため性別は男である。ここで、マスクデータが「0」であるためデータ交換の相手は性別を問わないため、リクエストデータは「0」あるいは「1」いずれでも良い、すなわちドントケアであるが、ここでは説明を簡易にするため「0」としている。
図32(D)は、HDさんの取得条件データが示されており、マスクデータが「0」、コンディションデータが「0」、リクエストデータが「0」である場合が示されている。当該場合は、HBさんは、コンディションデータが「0」であるため性別は女である。ここで、マスクデータが「0」であるためデータ交換の相手は性別を問わないため、リクエストデータは「0」あるいは「1」いずれでも良いすなわち、ドントケアであるが、ここでは説明を簡易にするため「0」としている。
図33は、図32で説明した取得条件データに基づく条件データの比較の具体例について説明する図である。
本例においては、HAさんと、他の人、すなわち、HBさん、HCさん、HDさんとの条件データの比較について説明する。
図33(A)を参照して、ここでは、HAさんと、HBさんとの条件データの比較が示されている。
HAさん側の処理について説明する。
相手のコンディションデータと自分のマスクデータとの積は、「0」&「1」=「0」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「0」&「1」=「0」となる。
したがって、この場合、自己の条件データは一致し、自己の取得条件は満たしていると判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「1」&「1」=「1」となる。
相手のリクエストデータと相手のマスクデータとの積は、「1」&「1」=「1」となる。
したがって、この場合、相手の条件データは一致し、相手の取得条件は満たしていると判断される。
すなわち、HAさん側の取得条件のデータ比較において、自己の取得条件および相手の取得条件はともに満たしていると判断される。
上記においては、HAさん側の処理について説明したが、HBさん側の処理としても同様に実行される。
相手のコンディションデータと自分のマスクデータとの積は、「1」&「1」=「1」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「1」&「1」=「1」となる。
したがって、この場合、自己の条件データは一致し、自己の取得条件は満たしていると判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「0」&「1」=「0」となる。
相手のリクエストデータと相手のマスクデータとの積は、「0」&「1」=「0」となる。
したがって、この場合、相手の条件データは一致し、相手の取得条件は満たしていると判断される。
すなわち、HBさん側の取得条件のデータ比較において、自己の取得条件および相手の取得条件はともに満たしていると判断される。
したがって、性別が男であるHAさんは、データ交換を希望する性別が女であるHBさんとデータ交換の条件が一致するためデータ交換することが可能である。
図33(B)を参照して、ここでは、HAさんと、HCさんとの条件データの比較が示されている。
HAさん側の処理について説明する。
相手のコンディションデータと自分のマスクデータとの積は、「1」&「1」=「1」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「0」&「1」=「0」となる。
したがって、この場合、自己の条件データは不一致であり、自己の取得条件は満たしていないと判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「1」&「0」=「0」となる。
相手のリクエストデータと相手のマスクデータとの積は、「0」&「0」=「0」となる。
したがって、この場合、相手の条件データは一致であり、相手の取得条件は満たしていると判断される。
すなわち、HAさん側の取得条件のデータ比較において、相手の条件データは一致しているため取得条件は満たしているが、自己の条件データは不一致であり、自己の取得条件は満たしていないと判断される。
上記においては、HAさん側の処理について説明したが、HCさん側の処理としても同様に実行される。
相手のコンディションデータと自分のマスクデータとの積は、「1」&「0」=「0」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「0」&「0」=「0」となる。
したがって、この場合、自己の条件データは一致しており、自己の取得条件は満たしていると判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「1」&「1」=「1」となる。
相手のリクエストデータと相手のマスクデータとの積は、「0」&「1」=「0」となる。
したがって、この場合、相手の条件データは不一致であり、相手の取得条件は満たしていないと判断される。
すなわち、HCさん側の取得条件のデータ比較において、自己の条件データは一致しており自己の取得条件は満たしているが、相手の条件データは不一致であるため相手の取得条件は満たしていないと判断される。
したがって、性別が男であるHCさんは、データ交換の性別を問わないため性別が男であるHAさんとデータ交換が可能であるが、性別が男であるHAさんは、性別が男であるHCさんとデータ交換を希望しないため、データ交換することはできない。
図33(C)を参照して、ここでは、HAさんと、HDさんとの条件データの比較が示されている。
HAさん側の処理について説明する。
相手のコンディションデータと自分のマスクデータとの積は、「0」&「1」=「0」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「0」&「1」=「0」となる。
したがって、この場合、自己の条件データは一致しており、自己の取得条件は満たしていると判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「1」&「0」=「0」となる。
相手のリクエストデータと相手のマスクデータとの積は、「0」&「0」=「0」となる。
したがって、この場合、相手の条件データは一致しており、相手の取得条件は満たしていると判断される。
すなわち、HAさん側の取得条件のデータ比較において、自己の取得条件および相手の取得条件はともに満たしていると判断される。
上記においては、HAさん側の処理について説明したが、HDさん側の処理としても同様に実行される。
相手のコンディションデータと自分のマスクデータとの積は、「1」&「0」=「0」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「0」&「0」=「0」となる。
したがって、この場合、自己の条件データは一致しており、自己の取得条件は満たしていると判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「0」&「1」=「0」となる。
相手のリクエストデータと相手のマスクデータとの積は、「0」&「1」=「0」となる。
したがって、この場合、相手の条件データは一致しており、相手の取得条件は満たしていると判断される。
すなわち、HBさん側の取得条件のデータ比較において、自己の取得条件および相手の取得条件はともに満たしていると判断される。
したがって、性別が女であるHDさんは、データ交換の性別を問わないため性別が男であるHAさんとデータ交換が可能であり、また、性別が男であるHAさんは、性別が女であるHDさんとデータ交換を希望するため、データ交換が可能となる。
上記においては、性別を取得条件データとして比較する場合について説明したが、特にこれに限られず、別のデータを取得条件データとして設定することも可能である。
図34は、本発明の実施の形態に従う取得条件データの別の具体例について説明する図である。
図34を参照して、ここでは、3つの取得条件データの例が示されている。
具体的には、ユーザであるHE、HF、HGさんのそれぞれが設定した取得条件データが示されている。
マスクデータ、コンディションデータ、リクエストデータは、それぞれ2ビットであるものとする。
本例においては、一例として、例えば、上記の交換データ登録イベントにおける、交換データの格納に際し、HE、HF、HGさんがそれぞれデータ交換を希望するゲームのコースデータを取得条件データとして設定した場合の例について説明する。
具体的には、相手に送信する自己の交換データおよび相手から受信する交換データに関連付けられた属性データとして、データの有無(有り:「1」、無し:「0」)および希望の有無(有り:「1」、無し「0」)を用いた場合について説明する。
一例として、コンディションデータとして2ビットが設けられ、それぞれコースPおよびコースQに対応している。例えば、コンディションデータについて、対応するコースのデータを有している場合「1」、対応するコースのデータを有していない場合「0」とする。
また、リクエストデータとして2ビットが設けられ、それぞれコースPおよびコースQに対応している。例えば、リクエストデータは、対応するコースのデータの取得を希望する場合「1」、対応するコースのデータの取得を希望しない場合「0」とする。
また、マスクデータとして2ビットが設けられ、それぞれコースPおよびコースQに対応している。なお、マスクデータが「0」の場合には、リクエストデータを無効に設定することができる。すなわち、データ交換を取得しても良いし、取得しなくても良いものに設定することができる。
図34(A)を参照して、HEさんの取得条件データが示されており、コースP,Qに対応してマスクデータが「01」、コンディションデータが「11」、リクエストデータが「01」である場合が示されている。
当該場合は、HEさんは、コンディションデータが「11」であるためコースP,Qをそれぞれ有している。リクエストデータは「01」であるためコースQについてデータ交換を希望する場合である。なお、マスクデータがコースPに関して「0」であるため、リクエストデータについてコースPについては「0」あるいは「1」いずれでも良いすなわち、ドントケアであるが、ここでは説明を簡易にするため「0」としている。
図34(B)を参照して、HFさんの取得条件データが示されており、コースP,Qに対応してマスクデータが「11」、コンディションデータが「10」、リクエストデータが「01」である場合が示されている。
当該場合は、HFさんは、コンディションデータが「10」であるためコースPを有している。リクエストデータは「01」であるためコースQについてデータ交換を希望する場合である。
図34(C)を参照して、HGさんの取得条件データが示されており、コースP,Qに対応してマスクデータが「11」、コンディションデータが「01」、リクエストデータが「11」である場合が示されている。
当該場合は、HGさんは、コンディションデータが「01」であるためコースQを有している。リクエストデータは「11」であるためコースP,Qについてデータ交換を希望する場合である。
図35は、図34で説明した取得条件データに基づく条件データの比較の具体例について説明する図である。
本例においては、HEさんと、他の人、すなわち、HFさん、HGさんとの条件データの比較について説明する。
図35(A)を参照して、ここでは、HEさんと、HFさんとの条件データの比較が示されている。
HEさん側の処理について説明する。
相手のコンディションデータと自分のマスクデータとの積は、「10」&「01」=「00」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「01」&「11」=「01」となる。
したがって、この場合、自己の条件データは不一致であり、自己の取得条件は満たしていないと判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「11」&「11」=「11」となる。
相手のリクエストデータと相手のマスクデータとの積は、「01」&「11」=「01」となる。
したがって、この場合、相手の条件データは不一致であり、相手の取得条件は満たしていないと判断される。
すなわち、HEさん側の取得条件のデータ比較において、自己の取得条件および相手の取得条件はともに満たしていないと判断される。
上記においては、HEさん側の処理について説明したが、HFさん側の処理としても同様に実行される。
相手のコンディションデータと自分のマスクデータとの積は、「11」&「11」=「11」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「01」&「11」=「01」となる。
したがって、この場合、自己の条件データは不一致であり、自己の取得条件は満たしていないと判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「10」&「01」=「00」となる。
相手のリクエストデータと相手のマスクデータとの積は、「01」&「01」=「01」となる。
したがって、この場合、相手の条件データは不一致であり、相手の取得条件は満たしていないと判断される。
すなわち、HFさん側の取得条件のデータ比較においても、自己の取得条件および相手の取得条件はともに満たしていないと判断される。
したがって、コースQのデータ交換を希望するHEさんと、コースQのデータを有していないHFさんとは、データ交換の取得条件データを満たさないためデータ交換することはできない。
図35(B)を参照して、ここでは、HEさんと、HGさんとの条件データの比較が示されている。
HEさん側の処理について説明する。
相手のコンディションデータと自分のマスクデータとの積は、「01」&「01」=「01」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「01」&「01」=「01」となる。
したがって、この場合、自己の条件データは一致し、自己の取得条件は満たしていると判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「11」&「11」=「11」となる。
相手のリクエストデータと相手のマスクデータとの積は、「11」&「11」=「11」となる。
したがって、この場合、相手の条件データは一致し、相手の取得条件は満たしていると判断される。
すなわち、HEさん側の取得条件のデータ比較において、自己の取得条件および相手の取得条件はともに満たしていると判断される。
上記においては、HEさん側の処理について説明したが、HGさん側の処理としても同様に実行される。
相手のコンディションデータと自分のマスクデータとの積は、「11」&「11」=「11」となる。
また、自分のリクエストデータと自分のマスクデータとの積は、「11」&「11」=「11」となる。
したがって、この場合、自己の条件データは一致し、自己の取得条件は満たしていると判断される。
また、自分のコンディションデータと相手のマスクデータとの積は、「11」&「11」=「11」となる。
相手のリクエストデータと相手のマスクデータとの積は、「11」&「11」=「11」となる。
したがって、この場合、相手の条件データは一致し、相手の取得条件は満たしていると判断される。
すなわち、HGさん側の取得条件のデータ比較においても、自己の取得条件データおよび相手の取得条件データはともに満たしていると判断される。
したがって、コースQのデータ交換を希望するHEさんと、コースQのデータを有しているHGさんとは、データ交換の取得条件データが満たされ、また、コースPのデータ交換を希望するHGさんと、コースPのデータを有しているHEさんとは、データ交換の取得条件データが満たされるためデータ交換が可能である。
再び、図29を参照して、ステップS114において、IDデータが一致しないと判断された場合(ステップS114においてNO)には、比較対象となるIDリストにアプリケーションID#が他に有るかどうかを判断する(ステップS132)。
また、ステップS118において、フィルタサイズが一致しない場合(ステップS118においてNO)には、ステップS132に進む。
また、ステップS122において、フラグOK判定で無い場合(ステップS122においてNO)には、ステップS132に進む。
また、ステップS126において、自己の取得条件を満たしていない場合(ステップS126においてNO)には、ステップS132に進む。
また、ステップS128において、相手の取得条件を満たしていない場合(ステップS128においてNO)には、ステップS132に進む。
ステップS132において、比較対象となるIDリストにアプリケーションID#が他に有る場合(ステップS132においてYES)には、比較対象となるIDリストから次のアプリケーションID#を抽出する(ステップS134)。そして、ステップS112に進み同様の処理を繰り返す。
例えば、図20で示されるように、第2IDリストDD8のアプリケーションID#[1]を抽出して同様の処理を実行する。
一方、ステップS132において、比較対象となるIDリストにアプリケーションID#が他に無い場合(ステップS132においてNO)には、「I」に進む。
すなわち、IDデータや取得条件データ等の判定条件を満たすまで、受信無線フレーム保存領域69に保存された受信無線フレームおよび送信無線フレーム保存領域67に保存された送信無線フレームそれぞれの比較対象となるIDリストからアプリケーションID#をそれぞれ1つずつ抽出して、全ての組み合わせにおいて条件を満たすものが無い場合には、図24のステップS82に進み、再度、上述した処理を繰り返す。
例えば、本例においては、一例として、比較対象となるIDリストとして、送信無線フレーム保存領域67に保存された送信無線フレーム(自機1)の第2IDリストDD8と、受信無線フレーム保存領域69に保存された受信無線フレーム(ゲーム装置3)の第2IDリストDDp8とが抽出された場合について説明する。例えば、一例として、第2IDリストDD8および第2IDリストDDp8は、ともに、アプリケーションID#を(n+1)個有しているものとする。
当該場合において、比較対象となるIDリストからアプリケーションID#をそれぞれ1つずつ抽出して全ての組み合わせについて比較する場合について説明すると、まず、送信無線フレーム(自機1)の第2IDリストDD8のアプリケーションID#[0]DD8−1を抽出し、受信無線フレーム(ゲーム装置)に含まれる第2IDリストDDp8のアプリケーションID#[0]DDp8−1を抽出して比較する。次に、送信無線フレーム(自機1)の第2IDリストDD8のアプリケーションID#[0]DD8−1と、受信無線フレーム(ゲーム装置)に含まれる第2IDリストDDp8のアプリケーションID#[1]DDp8−2を抽出して比較する。
次に、送信無線フレーム(自機1)の第2IDリストDD8のアプリケーションID#[0]DD8−1と、受信無線フレーム(ゲーム装置)に含まれる第2IDリストDDp8のアプリケーションID#[2]、アプリケーションID#[3]、・・・アプリケーションID#[n]をそれぞれ順番に抽出して比較する。
次に、送信無線フレーム(自機1)の第2IDリストDD8のアプリケーションID#[1]DD8−2を抽出し、受信無線フレーム(ゲーム装置)に含まれる第2IDリストDDp8のアプリケーションID#[0]DDp8−1を抽出して比較する。次に、送信無線フレーム(自機1)の第2IDリストDD8のアプリケーションID#[1]DD8−2と、受信無線フレーム(ゲーム装置)に含まれる第2IDリストDDp8のアプリケーションID#[1]DDp8−2を抽出して比較する。
次に、送信無線フレーム(自機1)の第2IDリストDD8のアプリケーションID#[1]DD8−2と、受信無線フレーム(ゲーム装置)に含まれる第2IDリストDDp8のアプリケーションID#[2]、アプリケーションID#[3]、・・・アプリケーションID#[n]をそれぞれ順番に抽出して比較する。この処理を送信無線フレーム(自機1)の第2IDリストDD8のアプリケーションID#[2]、アプリケーションID#[3]、・・・アプリケーションID#[n]まで同様に繰り返す。
すなわち、簡易に説明すると、比較対象となるIDリストにおいて、まず、送信無線フレーム(自機1)から最初のアプリケーションID#を抽出して固定し、そして、受信無線フレーム(ゲーム装置)からアプリケーションID#を順番に抽出して比較する。IDデータや取得条件データ等の判定条件を満たさない場合には、次に、送信無線フレーム(自機1)から次のアプリケーションID#を抽出して固定し、そして、受信無線フレーム(ゲーム装置)からアプリケーションID#を順番に抽出して比較する。当該処理を送信無線フレーム(自機1)のIDリストに含まれているアプリケーションID#の個数分繰り返すことになる。そして、送信無線フレーム(自機1)から最後のアプリケーションID#を抽出して固定し、そして、受信無線フレーム(ゲーム装置)からアプリケーションID#を順番に抽出して比較した場合に、IDデータや取得条件データ等の判定条件を満たさない場合には、ステップS132において、比較対象となるIDリストから他のアプリケーションID#がないと判断(ステップS132においてNO)されて、「I」に進む。
なお、上記図29のフローにおいては、フラグデータ比較(ステップS120)と、条件データ比較(ステップS124)をそれぞれ関連付けずに実行する方式について説明したが、例えば、図30で説明したように自機1の送受信条件データが送信通信のみを指定するような場合には、相手から交換データを受信することを希望しないため自己の取得条件を満たしているかの判断は不要である。また、逆に、自機1の送受信条件データが受信通信のみを指定するような場合には、相手に交換データを送信することを希望しないため相手の取得条件を満たしているかの判断は不要である。したがって、ステップS120のフラグデータの比較結果に基づいて、ステップS124〜ステップS128までの条件データ比較および判断の処理を変更するようにしても良い。
また、本例においては、アルゴリズム識別情報が「0」,「1」の場合にそれぞれ第1および第2アルゴリズムに従うIDリスト比較処理について説明したが、これに限られず、他のアルゴリズム識別情報(たとえば「2」)を設けてさらに別のアルゴリズムに従うIDリスト比較処理を実行するようにしても良い。
また、本例においては、取得条件データについて、マスクデータを含めた形式について説明したが、コンディションデータおよびリクエストデータの形式とすることも可能である。その場合には、条件データの比較として、自分のコンディションデータと相手のリクエストデータとの比較および自分のリクエストデータと相手のコンディションデータとの比較を実行して自己の取得条件および相手の取得条件を満たしているかを判断するようにしても良い。
図36は、本発明の実施の形態に従うアプリケーションIDを比較する場合の概念図である。
図36を参照して、ここでは、図22で説明したゲーム装置1およびゲーム装置3と同様の状況が示されており、無線通信モジュール38のRAM66のフィルタリング用データ保存領域68には、アプリケーションIDとして「A,B,C,D」がそれぞれ格納されている場合が示されている。そして、ゲーム装置3側の無線通信モジュール38Pのフィルタリング用データ保存領域68PにアプリケーションIDとして「B,E」がそれぞれ格納されている場合が示されている。
そして、上述したように、フィルタリング用データ保存領域68に格納されているデータに基づいて送信用の送信無線フレームが設定され、受信用の受信無線フレームに含まれているアプリケーションIDと比較して、一致フラグがオンするかどうかが判断される。
本例においては、アプリケーションID「B」に関して、一致フラグがオンする場合が示されている。
図37〜図39は、本発明の実施の形態に従うゲーム装置間における交換データの交換処理について説明する図である。
本例においては、ゲーム装置1と、通信相手である他のゲーム装置としてゲーム装置3との間で交換データの授受処理を実行する場合について説明する。
上記したように、CPU31(データ通信実行処理部208)は、無線通信モジュール38から一致したアプリケーションIDに対応する交換データを有する他のゲーム装置が発見された旨の通知を受けた場合には、データ授受処理を実行する。
図37を参照して、まず、一致したアプリケーションIDに対応する交換データが格納された送信BOX(交換データ保存領域80)からデータを読み出してデータを送信スロットにコピーする。例えば、メインメモリ32に設けられた送信スロットにコピーデータを作成する。そして、当該送信スロットに格納されたコピーデータが無線通信モジュール38を介してゲーム装置3に送信される。
ゲーム装置3においても、ゲーム装置1と同様に無線通信モジュール38Pから一致したアプリケーションIDに対応する交換データを有するゲーム装置が発見された旨の通知が本体側に出力される。
そして、本体側において、一致したアプリケーションIDに対応する交換データが格納された送信BOX(交換データ保存領域80)からデータが読み出されてデータを送信スロットにコピーする。そして、当該送信スロットに格納されたコピーデータが無線通信モジュール38Pを介してゲーム装置1に送信される。
図38を参照して、ゲーム装置1は、無線通信モジュール38を介してゲーム装置3から送信された交換データを取得する。そして、ゲーム装置1の交換データを送信し、ゲーム装置3の交換データを受信する交換条件が成立した場合には、アプリケーションIDに対応付けられて設けられた受信BOXRBB(受信データ保存領域82)に格納する。
同様に、ゲーム装置3は、無線通信モジュール38Pを介してゲーム装置1から送信された交換データを取得する。そして、ゲーム装置3の交換データを送信し、ゲーム装置1の交換データを受信する交換条件が成立した場合には、アプリケーションIDに対応付けられて設けられた受信BOXRBB(受信データ保存領域82P)に格納する。
そして、図39を参照して、本例においては、一例として、ゲーム装置1について交換データ保存領域80の送信BOXに格納されていたデータを消去する。本例においては、交換データ保存領域80の送信BOXSBBに対応する領域のデータを消去する。
同様に、本例においては、一例として、ゲーム装置3について交換データ保存領域80Pの送信BOXに格納されていたデータを消去する。本例においては、交換データ保存領域80Pの送信BOXSBBに対応する領域のデータを消去する。
当該処理により、通信相手に送信した交換データを消去することにより交換データの交換処理が完了する。
なお、後述するが交換データの消去は、送信BOXに格納されていた交換データを利用するアプリケーションを起動することにより当該アプリケーションの実行によって交換データ保存領域の送信BOXの送信BOXスロットのデータが消去されるものとする。
なお、本例においては、交換データを消去する場合について説明するが、消去せずにそのまま維持するようにすることも可能である。その場合には、交換データの交換処理ではなく複製データの授受となる。
また、本例においては、一例として、一致したアプリケーションIDに対応する1つの交換データについて、交換処理を行う場合について説明しているが、特に1つの交換データに限られず、一致したアプリケーションIDに対応する交換データが複数個有る場合においてもそれぞれの交換データについて同様の処理が実行される。
図40は、本発明の実施の形態に従うデータ授受処理のフロー図である。
当該データ授受処理は、一例として、上述したシステムプログラム保存領域86に格納されている本体機能プログラムをCPU31が実行することにより実現されるものである。当該データ授受処理は、例えば、本体の起動時に開始して、バックグラウンドで継続的に実行される。
図40を参照して、まず、CPU31(スリープ設定/解除処理部216)は、無線通信モジュール38からの通知が有るかどうかを判断する(ステップS140)。
ステップS140において、CPU31(スリープ設定/解除処理部216)は、無線通信モジュール38からの通知があったと判断した場合(ステップS140においてYES)には、本体側の機能がスリープ状態であるかどうかを判断する(ステップS141)。
そして、CPU31(スリープ設定/解除処理部216)は、本体側の機能がスリープ状態であると判断した場合(ステップS141においてYES)には、スリープ状態を解除する(ステップS142)。
そして、次に、CPU31(データ通信実行処理部208)は、データ授受処理を開始する(ステップS143)。一方、本体側の機能がスリープ状態で無いと判断した場合(ステップS141においてNO)には、ステップS143に進む。以降、データ通信実行処理部208の各機能を用いて説明する。
まず、CPU31(通信接続確立処理部302)は、無線通信モジュール38からの交換データを有するゲーム装置が発見された旨の通知に含まれている通信相手のMACアドレス等の接続情報に基づいて通信相手との間で通信接続を確立する(ステップS144)。
なお、本例においては、ゲーム装置が発見された旨の通知後、通信相手との接続を確立する場合、すなわち、CPU31(通信接続確立処理部302)が実行する場合について説明するが、ゲーム装置が発見された旨の通知前、例えば、無線通信モジュール38において図18のステップS64とステップS66との間で通信相手との接続を確立する処理を実行するようにしても良い。
そして、次に、CPU31(フレンド認証処理部304)は、通信相手がフレンドであるか否かを判定するフレンド認証処理を実行する(ステップS145)。フレンド認証処理の詳細については後述する。
次に、CPU31(送信スロット作成処理部306)は、通信相手に交換データを送信するための送信スロットを作成する送信スロット作成処理を実行する(ステップS146)。送信スロット作成処理の詳細については後述する。
次に、CPU31(送信データリスト作成処理部308)は、作成した送信スロットに基づいて送信データリストを作成する送信データリスト作成処理を実行する(ステップS147)。送信データリスト作成処理の詳細については後述する。
次に、CPU31(送受信データリスト分析処理部310)は、作成した送信データリストを通信相手に送信して、通信相手に対して交換データの送信が可能であるかどうかを判断するとともに、通信相手が作成した送信データリストを受信して、通信相手からの交換データの受信が可能であるかどうかを判断する処理(送受信データリスト分析処理)を実行する(ステップS148)。送受信データリスト分析処理の詳細については後述する。
次に、CPU31(送受信実行処理部312)は、送受信データリスト分析処理の結果に基づいて、送信データリストの中から送信が可能な交換データを実際に送信し、また、通信相手の送信データリスト(受信データリストとも称する)の中から通信相手から送信された交換データを受信する送受信処理を実行する(ステップS149)。処理の詳細については後述する。
次に、CPU31(通信切断処理部316)は、送受信処理が終了した場合、あるいは、通信接続が遮断された場合に通信を切断する(ステップS160)。
次に、CPU31(データ格納処理部210)は、通信相手から受信した交換データを格納等する処理(データ格納処理とも称する)を実行する(ステップS161)。データ格納処理の詳細については後述する。
次に、CPU31(装置識別情報登録処理部211)は、通信相手の装置識別情報であるMACアドレスをMACアドレスリスト保存領域88に格納する処理(MACアドレス保存処理)を実行する(ステップS162)。MACアドレス保存処理の詳細については後述する。
次に、CPU31(データ通知処理部212)は、交換データを交換した旨をユーザに通知する処理(交換データ通知処理)を実行する(ステップS164)。交換データ通知処理の詳細については後述する。
以下、各処理について詳細に説明する。
<フレンド認証処理>
図41は、本発明の実施の形態に従うフレンド認証処理のフロー図である。
図41を参照して、CPU31(フレンド認証処理部304)は、フレンドコードの読み出しを実行する(ステップS400)。具体的には、保存用データメモリ34のフレンドコードリスト保存領域89に格納されている自己のフレンドコードを取得する。
そして、CPU31(フレンド認証処理部304)は、無線通信モジュール38を介してゲーム装置3にフレンドコードを送信する(ステップS402)。
次に、CPU31(フレンド認証処理部304)は、無線通信モジュール38を介してゲーム装置3からフレンドコードを受信したかどうかを判断する(ステップS404)。
次に、CPU31(フレンド認証処理部304)は、無線通信モジュール38を介してゲーム装置3からフレンドコードを受信したと判断した場合(ステップS404においてYES)には、フレンド確認を実行する(ステップS406)。具体的には、受信したフレンドコードが保存用データメモリ34のフレンドコードリスト保存領域89に保存されているかどうかを判断する。
そして、受信したフレンドコードが保存用データメモリ34のフレンドコードリスト保存領域89に保存されていると判断した場合には、フレンド認証判定が成功(OK)とする。
一方、受信したフレンドコードが保存用データメモリ34のフレンドコードリスト保存領域89に保存されていないと判断した場合には、フレンド認証判定が失敗(NG)とする。
次に、CPU31(フレンド認証処理部304)は、フレンド確認結果を無線通信モジュール38を介してゲーム装置3に送信する(ステップS408)。具体的には、フレンド認証判定がOKかNGかを送信する。
次に、CPU31(フレンド認証処理部304)は、フレンド確認結果を無線通信モジュール38を介してゲーム装置3から受信したかどうかを判断する(ステップS410)。具体的には、ゲーム装置3からフレンド認証判定がOKかNGかの確認結果の受信があるかどうかを判断する。
CPU31(フレンド認証処理部304)は、ゲーム装置3からフレンド確認結果を受信したと判断した場合(ステップS410においてYES)には、自機におけるフレンド認証判定がOKであったかどうかを判断する(ステップS412)。
ステップS412において、CPU31(フレンド認証処理部304)は、フレンド認証判定がOKであると判断した場合(ステップS412においてYES)には、他機におけるフレンド認証判定がOKであったかどうかを判断する(ステップS414)。
CPU31(フレンド認証処理部304)は、自機および他機におけるフレンド認証判定がOKであると判断した場合(ステップS414においてYES)には、フレンドフラグをオンに設定する(ステップS416)。そして、フレンド認証処理部304における処理を終了する(リターン)。
一方、CPU31(フレンド認証処理部304)は、無線通信モジュール38を介してゲーム装置3からフレンドコードを受信しなかったと判断した場合(ステップS404においてNO)には、通信接続が中断したと判断して通信を切断する(ステップS418)。
また、ステップS410において、無線通信モジュール38を介してゲーム装置3からフレンド確認結果を受信しなかったと判断した場合(ステップS410においてNO)には、通信接続が中断したと判断して通信を切断する(ステップS418)。
また、ステップS412,S414において、CPU31(フレンド認証処理部304)は、自機におけるフレンド認証判定がOKでないと判断した場合(ステップS412においてNO)あるいは、他機におけるフレンド認証判定がOKでないと判断した場合(ステップS414においてNO)には、フレンドフラグをオンにすることなく処理を終了する(リターン)。
図42は、本発明の実施の形態に従うフレンド認証処理のデータの流れについて説明する図である。
図42を参照して、まず、自機からフレンドコードFCD1が送信される(シーケンスsq200)。そして、ゲーム装置3においてフレンドコードFCD1が受信される(シーケンスsq202)。
そして、次に、ゲーム装置3からフレンドコードFCD2が送信される(シーケンスsq204)。そして、自機においてフレンドコードFCD2が受信される(シーケンスsq206)。
そして、自機においてフレンド確認が実行される(シーケンスsq208)。具体的には、受信したフレンドコードFCD2がフレンドコードリスト保存領域89に格納されているかどうかが判断される。格納されている場合には、フレンド認証判定が成功(OK)、格納されていない場合には、フレンド認証判定が失敗(NG)となる。そして、フレンド確認結果が自機からゲーム装置3に送信される(シーケンスsq210)。また、ゲーム装置3において、フレンド確認が実行される(シーケンスsq212)。具体的には、受信したフレンドコードFCD1がフレンドコードリスト保存領域に格納されているかどうかが判断される。格納されている場合には、フレンド認証判定が成功(OK)、格納されていない場合には、フレンド認証判定が失敗(NG)となる。
そして、フレンド確認結果がゲーム装置3から自機に送信される(シーケンスsq214)。
そして、自機1側において、自機および他機におけるフレンド認証判定がOKであると判断した場合にフレンドフラグがオンに設定される(シーケンスsq216)。同様に、ゲーム装置3側においてもゲーム装置3側およびゲーム装置1側におけるフレンド認証判定がともにOKであると判断した場合にフレンドフラグがオンに設定される(シーケンスsq218)。
なお、図41におけるフレンド認証処理のフロー図は、ゲーム装置1側の処理について説明したが、ゲーム装置3側の処理としては、ステップS400の前にステップS404の処理を実行し、ステップS408の前にステップS410の処理を実行する点で異なり、その他の点については同様であるのでその詳細な点については繰り返さない。
なお、本例においては、自機におけるフレンドコードリスト保存領域89にゲーム装置3のフレンドコードが格納されているか否かに基づいてフレンド認証判定を実行する場合について説明したが、例えば、自機内でフレンド認証判定を実行するのではなく、フレンドコードリストが格納されている外部の認証サーバ等で認証判定した結果を自機1側に通知するような方式とすることも可能である。具体的には、外部のネットワークと接続されている無線アクセスポイント装置との間でデータ通信を行い、自機側から無線アクセスポイント装置を経由してネットワークと接続された認証サーバにフレンドコードを送信する。そして、認証サーバでフレンド認証判定を実行した結果を無線アクセスポイント装置を経由して、自機が受信する方式とすることが可能である。
<送信スロット作成処理>
図43は、本発明の実施の形態に従う送信スロット作成の処理について説明するフロー図である。
図43を参照して、CPU31(送信スロット作成処理部306)は、交換データを授受することが可能なアプリケーション(以下、交換データ授受アプリとも称する)を確認する(ステップS420)。具体的には、上述したゲーム装置1側の送信無線フレームとゲーム装置3から送信された受信無線フレームとに基づくアプリケーションID判定により、一致フラグがオンする全てのアプリケーションIDを確認する。アプリケーションID判定処理については上述したのと同様であるのでその詳細な説明は繰り返さない。すなわち、アプリケーションIDの一致により交換データを授受可能なアプリケーションを把握することが可能となる。また、内蔵アプリ保存領域84に内蔵されているアプリケーションプログラムに対応する交換データのアプリケーションIDについて送信無線フレーム内に含めないようにする処理とした場合には、上記処理によるアプリケーションIDの一致によるアプリケーションの把握とは別に、内蔵アプリ保存領域84に内蔵されているアプリケーションプログラムに対応する送信BOXに交換データが含まれているか否かを判断して、含まれている場合には、当該アプリケーションも交換データ授受アプリに付加するようにすれば良い。以降の処理についてはメモリカード26に格納されているアプリケーションプログラムと、内蔵アプリ保存領域84に格納されているアプリケーションプログラムとで処理は異ならないため特段区別することなく説明する。
図44は、送信無線フレームの比較に基づく交換データを授受することが可能なアプリ(交換データ授受アプリとも称する)を確認する処理を模式的に説明する図である。
図44を参照して、ここでは、リスト形式で示されており、自機側の送信無線フレームには、アプリA,B,C,D,EのアプリケーションIDが格納されている場合が示されている。なお、上述したように、アプリケーションIDには、アプリAに対応するIDデータIDD0が格納されており、当該IDデータに基づいてアプリAが識別されることになるが、説明の簡略化のために以下の説明においては、IDデータの代わりにアプリ名で説明する。他のアプリケーションについても同様である。
また、各アプリケーションIDに含められている送受信条件データが示されている。当該場合に交換データを授受することが可能なアプリについて説明する。
具体的には、アプリAは、送受信条件データとして、いずれの条件でも通信が可能であるセンドフラグおよびレシーブフラグがそれぞれ「11」である場合が示されている。また、アプリBは、送受信条件データとして、双方向通信のみのセンドフラグおよびレシーブフラグがそれぞれ「00」である場合が示されている。アプリCは、送受信条件データとして、送信通信のみのセンドフラグおよびレシーブフラグがそれぞれ「10」である場合が示されている。また、アプリDは、送受信条件データとして、受信通信のみのセンドフラグおよびレシーブフラグがそれぞれ「01」である場合が示されている。アプリEは、送受信条件データとして、受信通信のみのセンドフラグおよびレシーブフラグがそれぞれ「01」である場合が示されている。
また、他機側の送信無線フレーム(受信無線フレーム)には、アプリA,B,C,D,FのアプリケーションIDが格納されている場合が示されている。また、各アプリケーションIDに含められている送受信条件データが示されている。
具体的には、アプリAは、送受信条件データとして、いずれの条件でも通信が可能であるセンドフラグおよびレシーブフラグがそれぞれ「11」である場合が示されている。また、アプリBは、送受信条件データとして、双方向通信のみのセンドフラグおよびレシーブフラグがそれぞれ「00」である場合が示されている。アプリCは、送受信条件データとして、受信通信のみのセンドフラグおよびレシーブフラグがそれぞれ「01」である場合が示されている。また、アプリDは、送受信条件データとして、送信通信のみのセンドフラグおよびレシーブフラグがそれぞれ「10」である場合が示されている。アプリFは、送受信条件データとして、いずれの条件でも通信が可能であるセンドフラグおよびレシーブフラグがそれぞれ「11」である場合が示されている。
そして、上述したアプリケーションID判定により、アプリケーションIDが一致するとともに、送受信条件が合致するアプリケーション(アプリ)が交換データの授受が可能なアプリと判断される。なお、本例においては、アプリケーションID判定において、第2アルゴリズムに従うIDリスト比較に関して、説明の簡略化のために、交換条件データとして、送受信条件データが一致する場合のみを考えたが、取得条件データ等、他の条件も含めた判断により交換データ授受可能アプリを判断するようにしても良い。
一例として、本例においては、送受信条件データのみを判断した場合、図30で説明した方式に従えば、自機1側においては、アプリA,B,Cについて送受信条件データが合致し、交換データ授受アプリと判断されるものとする。
同様に、ゲーム装置3側においては、アプリA,B,Dについて送受信条件データが合致し、交換データ授受アプリと判断されるものとする。
再び、図43を参照して、次に、CPU31(送信スロット作成処理部306)は、1つ目の交換データ授受アプリの送信BOXをアクセスする(ステップS421)。例えば、上記の図44で説明した方式に従って、アプリAが交換データ授受アプリである場合には、アプリAに対応付けられて設けられた送信BOXSBAがアクセスされる。
そして、次に、CPU31(送信スロット作成処理部306)は、フレンドフラグがオンであるかどうかを判断する(ステップS422)。具体的には、図40のフレンド認証処理部304のフレンド認証処理(ステップS145)に従ってフレンドフラグがオンされたかどうかを判断する。フレンドフラグがオンであるか否かに基づいて以降の処理が異なる。
ステップS422において、CPU31(送信スロット作成処理部306)は、フレンドフラグがオンであると判断した場合(ステップS422においてYES)には、次に、送信BOXの先頭のデータを確認する(ステップS423)。具体的には、送信BOXスロットに格納された先頭のデータを確認する。
そして、次に、CPU31(送信スロット作成処理部306)は、先頭のデータに格納されている送信回数が1以上であるかどうかを判断する(ステップS424)。後述するが送信回数が1以上でなければすなわち、送信回数が0の場合には、送信が終了していることを意味し、送信スロットには格納しない。
ステップS424において、CPU31(送信スロット作成処理部306)は、先頭のデータに格納されている送信回数が1以上であると判断した場合(ステップS424においてYES)には、次に、データに格納されているフレンドフラグデータがフレンドであるか、あるいはANYであるかどうかを判断する(ステップS425)。
ステップS425において、CPU31(送信スロット作成処理部306)はデータに格納されているフレンドフラグデータがフレンドであるか、あるいはANYであると判断した場合(ステップS425においてYES)には、送信BOXの先頭のデータをコピーする(ステップS426)。そして、CPU31(送信スロット作成処理部306)は、メインメモリ32の送信スロット保存領域90に作成した送信スロットに当該コピーしたデータを格納する(ステップS427)。
一方、ステップS424において、CPU31(送信スロット作成処理部306)は、先頭のデータに格納されている送信回数が1以上でないと判断した場合(ステップS424においてNO)には、送信BOXに格納された最後のデータまで確認したかどうかを判断する(ステップS436)。
ステップS436において、CPU31(送信スロット作成処理部306)は、送信BOXに格納された最後のデータまで確認していないと判断した場合(ステップS436においてNO)には、送信BOXの次のデータを確認する(ステップS437)。そして、再び、ステップS424に戻り、同様の処理を繰り返す。すなわち、送信回数が1回以上のデータが選択される。
また、ステップS425において、データに格納されているフレンドフラグデータがフレンドまたはANYでないと判断した場合(ステップS425においてNO)にもステップS436に進む。
そして、ステップS436において、CPU31(送信スロット作成処理部306)は、送信BOXに格納された最後のデータまで確認していないと判断した場合(ステップS436においてNO)には、送信BOXの次のデータを確認する(ステップS437)。そして、再び、ステップS424に戻り、同様の処理を繰り返す。すなわち、フレンドフラグデータがフレンドまたはANYのデータが選択される。
ステップS436において、CPU31(送信スロット作成処理部306)は、送信BOXに格納された最後のデータまで確認したと判断した場合(ステップS436においてYES)には、条件が一致するデータが無いため、ステップS434に進む。すなわち、この場合には、送信スロットにデータはコピーされない。
次に、ステップS428において、CPU31(送信スロット作成処理部306)は、送信スロットに格納したデータのデータグループIDを確認する。
そして、次に、CPU31(送信スロット作成処理部306)は、送信BOXに同一のデータグループIDのデータが有るかどうかを判断する(ステップS429)。
次に、CPU31(送信スロット作成処理部306)は、送信BOXに同一のデータグループIDのデータが有ると判断した場合(ステップS429においてYES)には、当該データに格納されている送信回数が1以上であるかどうかを判断する(ステップS430)。
次に、CPU31(送信スロット作成処理部306)は、送信回数が1以上であると判断した場合(ステップS430においてYES)には、次に、当該データに格納されているフレンドフラグデータがフレンドであるか、あるいはANYであるかどうかを判断する(ステップS431)。
ステップS431において、CPU31(送信スロット作成処理部306)は当該データに格納されているフレンドフラグデータがフレンドであるか、あるいはANYであると判断した場合(ステップS431においてYES)には、送信BOXの当該データをコピーする(ステップS432)。そして、CPU31(送信スロット作成処理部306)は、送信スロットに同一のデータIDグループのコピーしたデータを格納する(ステップS433)。
当該処理により、送信スロットに送信BOXの1つのデータ(フレンドフラグはフレンド又はANY)が格納される。そして、格納したデータのデータグループIDを確認して、同一のデータグループIDのデータについてもフレンドフラグがフレンド又はANYの場合には、同じスロットに格納される。すなわち、送信スロットに格納された複数のデータが1つの交換データとして送信されることになる。本例においては、データグループIDが一致するデータを1まとめにする処理をデータグルーピング処理とも称する。ここまでで、フレンドフラグがオンである場合の1つの交換データ授受アプリの送信スロットの作成が完了する。
一方、ステップS429において、CPU31(送信スロット作成処理部306)は、送信BOXに同一のデータグループIDのデータがないと判断した場合(ステップS429においてNO)には、ステップS434に進む。また、ステップS430において、CPU31(送信スロット作成処理部306)は、データに格納されている送信回数が1以上でないと判断した場合(ステップS430においてNO)には、ステップS434に進む。また、ステップS431において、CPU31(送信スロット作成処理部306)は、データに格納されているフレンドフラグデータがフレンドでないあるいはANYでないと判断した場合(ステップS431においてNO)には、ステップS434に進む。
一方、ステップS422において、CPU31(送信スロット作成処理部306)は、フレンドフラグがオンでないと判断した場合(ステップS422においてNO)には、次に、送信BOXの先頭のデータを確認する(ステップS438)。具体的には、送信BOXスロットに格納された先頭のデータを確認する。
そして、次に、CPU31(送信スロット作成処理部306)は、先頭のデータに格納されている送信回数が1以上であるかどうかを判断する(ステップS439)。後述するが送信回数が1以上でなければすなわち、送信回数が0の場合には、送信が終了していることを意味し、送信スロットには格納しない。
ステップS439において、CPU31(送信スロット作成処理部306)は、先頭のデータに格納されている送信回数が1以上であると判断した場合(ステップS439においてYES)には、次に、データに格納されているフレンドフラグデータが非フレンドであるか、あるいはANYであるかどうかを判断する(ステップS440)。
ステップS440において、CPU31(送信スロット作成処理部306)はデータに格納されているフレンドフラグデータが非フレンドであるか、あるいはANYであると判断した場合(ステップS440においてYES)には、送信BOXの先頭のデータをコピーする(ステップS441)。そして、CPU31(送信スロット作成処理部306)は、送信スロットに当該コピーしたデータを格納する(ステップS442)。
一方、ステップS439において、CPU31(送信スロット作成処理部306)は、先頭のデータに格納されている送信回数が1以上でないと判断した場合(ステップS439においてNO)には、送信BOXに格納された最後のデータまで確認したかどうかを判断する(ステップS449)。
ステップS449において、CPU31(送信スロット作成処理部306)は、送信BOXに格納された最後のデータまで確認していないと判断した場合(ステップS449においてNO)には、送信BOXの次のデータを確認する(ステップS450)。そして、再び、ステップS439に戻り、同様の処理を繰り返す。すなわち、送信回数が1回以上のデータが選択される。
また、ステップS440において、データに格納されているフレンドフラグデータが非フレンドまたはANYでないと判断した場合(ステップS440においてNO)にもステップS449に進む。
そして、ステップS449において、CPU31(送信スロット作成処理部306)は、送信BOXに格納された最後のデータまで確認していないと判断した場合(ステップS449においてNO)には、送信BOXの次のデータを確認する(ステップS450)。そして、再び、ステップS439に戻り、同様の処理を繰り返す。すなわち、フレンドフラグデータが非フレンドまたはANYのデータが選択される。
ステップS449において、CPU31(送信スロット作成処理部306)は、送信BOXに格納された最後のデータまで確認したと判断した場合(ステップS449においてYES)には、条件が一致するデータが無いため、ステップS434に進む。すなわち、この場合には、送信スロットにデータはコピーされない。
次に、ステップS443において、CPU31(送信スロット作成処理部306)は、送信スロットに格納したデータのデータグループIDを確認する。
そして、次に、CPU31(送信スロット作成処理部306)は、送信BOXに同一のデータグループIDのデータが有るかどうかを判断する(ステップS444)。
次に、CPU31(送信スロット作成処理部306)は、送信BOXに同一のデータグループIDのデータが有ると判断した場合(ステップS444においてYES)には、当該データに格納されている送信回数が1以上であるかどうかを判断する(ステップS445)。
次に、CPU31(送信スロット作成処理部306)は、送信回数が1以上であると判断した場合(ステップS445においてYES)には、次に、当該データに格納されているフレンドフラグデータが非フレンドであるか、あるいはANYであるかどうかを判断する(ステップS446)。
ステップS446において、CPU31(送信スロット作成処理部306)は当該データに格納されているフレンドフラグデータが非フレンドであるか、あるいはANYであると判断した場合(ステップS446においてYES)には、送信BOXの当該データをコピーする(ステップS447)。そして、CPU31(送信スロット作成処理部306)は、送信スロットに同一のデータIDグループのコピーしたデータを格納する(ステップS448)。
当該処理により、送信スロットに送信BOXの1つのデータ(フレンドフラグは非フレンド又はANY)が格納される。そして、格納したデータのデータグループIDを確認して、同一のデータグループIDのデータについてもフレンドフラグが非フレンド又はANYの場合には、同じスロットに格納される。すなわち、送信スロットに格納された複数のデータが1つの交換データとして送信されることになる。当該処理により、フレンドフラグがオンでない場合の1つの交換データ授受アプリの送信スロットの作成が完了する。
一方、ステップS444において、CPU31(送信スロット作成処理部306)は、送信BOXに同一のデータグループIDのデータがないと判断した場合(ステップS444においてNO)には、ステップS434に進む。また、ステップS445において、CPU31(送信スロット作成処理部306)は、データに格納されている送信回数が1以上でないと判断した場合(ステップS445においてNO)には、ステップS434に進む。また、ステップS446において、CPU31(送信スロット作成処理部306)は、データに格納されているフレンドフラグデータが非フレンドでないあるいはANYでないと判断した場合(ステップS446においてNO)には、ステップS434に進む。
次に、CPU31(送信スロット作成処理部306)は、交換データ授受アプリが他にあるかどうかを判断する(ステップS434)。
ステップS434において、CPU31(送信スロット作成処理部306)は、交換データ授受アプリが他にあると判断した場合には、次の交換データ授受アプリの送信BOXをアクセスする(ステップS435)。例えば、上記の図44で説明した方式に従って、アプリBが次の交換データ授受アプリである場合には、アプリBに対応付けられて設けられた送信BOXSBBがアクセスされる。そして、ステップS422に戻り、同様の処理を繰り返す。
当該処理を繰り返すことにより、全ての交換データ授受アプリについて、送信BOXをアクセスして送信スロットの作成処理が実行される。
図45は、本発明の実施の形態に従う送信スロットの作成の概念図である。
図45を参照して、ここでは、送信BOXに4つのデータが格納されている場合が示されている。具体的には、IDデータIDD0と、データグループIDIDD1と、データ本体IDD10とで構成されるデータが示されている。2つ目のデータと、4つ目のデータのデータグループIDとは同じ値であり、それ以外のデータは、それぞれ異なるデータグループIDが設定されている。
なお、説明を簡易にするためここでは、フレンドフラグは考慮しないものとする。また、送信回数も1回以上のデータが格納されているものとする。
上記の処理に従い、まず、図45(A)には、送信BOXの先頭(左端)のデータが確認されて、1つ目のデータが送信スロットに格納された場合が示されている。
そして、次に、同一のデータグループIDのデータが送信BOXに格納されているかどうかが判断され、同一のデータグループIDのデータは送信BOXに格納されていないため図45(B)に示されるように、送信スロットの作成は完了する。
一方、図45(B)で作成された送信スロットに格納された交換データが送信された後、ここでは、一例として、図45(C)には、送信BOXに3つのデータが格納されている場合が示されている。
上記の処理と同様に、まず、送信BOXの先頭のデータが確認されて、1つ目のデータが送信スロットに格納される。そして、同一のデータグループIDのデータが送信BOXに格納されているかどうかが判断され、同一のデータグループIDの3つ目のデータが送信BOXに格納されているため、送信BOXに当該データが格納されて送信スロットの作成が完了する。
ここでは、データグループIDに基づくデータグルーピング処理について説明した。次に、フレンドフラグに基づくデータグルーピング処理について説明する。
図46は、本発明の実施の形態に従う別の送信スロットの作成の概念図である。
図46を参照して、ここでは、送信BOXに3つのデータが格納されている場合が示されている。具体的には、IDデータIDD0と、データグループIDIDD1と、フレンドフラグデータIDD4と、データ本体IDD10とで構成されるデータが示されている。
具体的には、IDデータIDD0と、データグループIDIDD1とは全て共通であり、フレンドフラグデータIDD4がそれぞれ異なる3つのデータが示されている。なお、説明を簡易にするためここでは、送信回数は1回以上のデータが格納されているものとする。
まず、フレンドフラグがオンである場合(フレンド)について説明する。上記の処理に従い、まず、送信BOXの先頭(左端)のデータが確認される。左端のデータのフレンドフラグはANYであるため、まず、最初に送信スロットに格納される。そして、次に、同一のデータグループIDのデータが送信BOXに格納されているかどうかが判断され、同一のデータグループIDのデータが送信BOXに格納されていると判断される。そして、次に、データグループIDが同一であるデータについて、さらに、フレンドフラグがフレンド又はANYに設定されているデータが送信BOX格納されているかどうかが判断される。2番目のデータのフレンドフラグがフレンドであるため送信スロットにさらに格納され、送信スロットの作成は完了する。
また、フレンドフラグがオンでない場合(非フレンド)について説明する。上記の処理に従い、まず、送信BOXの先頭(左端)のデータが確認される。左端のデータのフレンドフラグはANYであるため、まず、最初に送信スロットに格納される。そして、次に、同一のデータグループIDのデータが送信BOXに格納されているかどうかが判断され、同一のデータグループIDのデータが送信BOXに格納されていると判断される。そして、次に、データグループIDが同一であるデータについて、さらに、フレンドフラグが非フレンド又はANYに設定されているデータが送信BOX格納されているかどうかが判断される。3番目のデータのフレンドフラグが非フレンドであるため送信スロットにさらに格納され、送信スロットの作成は完了する。
したがって、フレンドフラグを用いることにより、データグルーピング処理においてフレンド用の交換データおよび非フレンド用の交換データに切り分けて送信スロットを作成することが可能となる。
図47は、本発明の実施の形態に従う送信スロットの作成の具体例について説明する図である。
図47(A)を参照して、ここでは、送信BOXに3つのデータが格納されている場合が示されている。
具体的には、3つのデータの共通のアプリIDは、「12345678」である。また、先頭および3番目のデータのデータグループIDは「123」、2番目のデータのデータグループIDは「456」である。また、先頭のデータのフレンドフラグデータは「フレンド」、2番目、3番目のフレンドフラグデータは「ANY」である。また、1番目〜3番目のデータ本体はそれぞれ異なるためデータ本体IDは、それぞれ「100」、「200」、「300」として割り当てられている場合が示されている。
図47(B)を参照して、ここでは、相手がフレンドである場合の送信スロットの作成の流れが示されている。
まず、(i)送信BOXの先頭のデータを確認(チェック)する。(ii)次に、フレンドフラグを確認(チェック)する。本例においては、フラグオンでフレンドフラグがフレンドであるため条件を満たす(TRUE)。したがって、送信スロットに入れる。(iii)次のデータグループIDを確認(チェック)する。先頭のデータグループIDと、データグループIDが異なる。したがって、送信スロットには入れない。(iv)次のデータグループIDを確認(チェック)する。先頭のデータグループIDと、データグループIDが同じである。すなわち、条件を満たす(TRUE)。したがって、送信スロットには入れる。
図47(C)を参照して、ここでは、相手が非フレンドである場合の送信スロットの作成の流れが示されている。
まず、(i)送信BOXの先頭のデータを確認(チェック)する。(ii)次にフレンドフラグを確認(チェック)する。本例においては、フラグオフでフレンドフラグがフレンドであるため条件を満たさない(FALSE)。したがって、送信スロットに入れない。(iii)次のデータのフレンドフラグを確認(チェック)する。本例においては、フラグオフでフレンドフラグがANYであるため条件を満たす(TRUE)。したがって、送信スロットに入れる。(iv)次の、データグループIDを確認(チェック)する。2番目のデータのデータグループIDと、データグループIDが異なる。したがって、送信スロットには入れない。
図48は、本発明の実施の形態に従う送信BOXに格納されたデータと、フレンドとの関係について説明する図である。
図48(A)を参照して、ここでは、送信BOXに4つのデータが格納されている場合が示されている。
具体的には、4つのデータの共通のアプリIDは、「12345678」である。また、先頭および2番目のデータのデータグループIDは「1」、3番目および4番目のデータのデータグループIDは「2」である。また、先頭および3番目のデータのフレンドフラグデータは「ANY」、2番目および4番目のフレンドフラグデータは「フレンド」である。また、1番目〜4番目のデータ本体はそれぞれ異なるためデータ本体IDは、それぞれ「100」、「200」、「300」、「400」として割り当てられている場合が示されている。1番目のデータ本体には、アイテムのデータが格納されているものとする。また、2番目のデータ本体には、「プレゼントをあげます」のコメントデータが格納されているものとする。3番目のデータ本体には、アイテム2のデータが格納されているものとする。また、4番目のデータ本体には、「レアなアイテムです」のコメントデータが格納されているものとする。
フレンドフラグがオンである場合(フレンド)には、送信スロットに1番目と2番目のデータが格納される。1番目と2番目のデータが送信スロットから送信された後、2回目の送信として、3番目と4番目のデータが送信スロットに格納される。したがって、当該方式により、アイテムの送信に際して、フレンドに対してはコメントを付加したアイテムの送信が可能となる。
一方、フレンドフラグがオフである場合(非フレンド)には、送信スロットに1番目のデータが格納される。1番目のデータが送信スロットから送信された後、2回目の送信として、3番目のデータが送信スロットに格納される。したがって、当該方式により、アイテムの送信に際して、非フレンドに対してはコメントを付加しないアイテムの送信が可能となる。すなわち、フレンドか非フレンドかに従ってアイテムを送信する際に、コメントの付加を変更することが可能となり、データ交換の興趣性が増す。
図48(B)を参照して、ここでは、送信BOXに4つのデータが格納されている場合が示されている。
具体的には、4つのデータの共通のアプリIDは、「12345678」である。また、4つのデータのデータグループIDは、共通の「1」である。また、先頭および2番目のデータのフレンドフラグデータは「非フレンド」、3番目および4番目のフレンドフラグデータは「フレンド」である。また、1番目〜4番目のデータ本体はそれぞれ異なるためデータ本体IDは、それぞれ「100」、「210」、「300」、「400」として割り当てられている場合が示されている。1番目のデータ本体には、アイテムのデータが格納されているものとする。また、2番目のデータ本体には、「誰かもらってください」のコメントデータが格納されているものとする。3番目のデータ本体には、アイテム2のデータが格納されているものとする。また、4番目のデータ本体には、「レアなアイテムです」のコメントデータが格納されているものとする。
フレンドフラグがオンである場合(フレンド)には、送信スロットに3番目と4番目のデータが格納される。したがって、当該方式により、アイテムの送信に際して、フレンドに対してはコメントとともにアイテム2の送信が可能となる。
一方、フレンドフラグがオフである場合(非フレンド)には、送信スロットに1番目と2番目のデータが格納される。したがって、当該方式により、アイテムの送信に際して、非フレンドに対してはコメントとともにアイテム1の送信が可能となる。すなわち、フレンドか非フレンドに従って送信するアイテムの種類を変更することが可能となり、データ交換の興趣性が増す。
図48(C)を参照して、ここでは、送信BOXに3つのデータが格納されている場合が示されている。
具体的には、3つのデータの共通のアプリIDは、「12345678」である。また、3つのデータのデータグループIDは、共通の「1」である。また、先頭のデータのフレンドフラグデータは「非フレンド」、2番目のフレンドフラグデータは「ANY」、3番目のフレンドフラグデータは「フレンド」である。また、1番目〜3番目のデータ本体はそれぞれ異なるためデータ本体IDは、それぞれ「210」、「100」、「310」として割り当てられている場合が示されている。1番目のデータ本体には、「誰かもらってください」のコメントデータが格納されているものとする。2番目のデータ本体には、アイテムのデータが格納されているものとする。また、3番目のデータ本体には、「○○からのプレゼント!」のコメントデータが格納されているものとする。
フレンドフラグがオンである場合(フレンド)には、送信スロットに2番目と3番目のデータが格納される。したがって、当該方式により、アイテムの送信に際して、「○○からのプレゼント!」のコメントを付加することが可能となる。
一方、フレンドフラグがオフである場合(非フレンド)には、送信スロットに1番目と2番目のデータが格納される。したがって、当該方式により、アイテムの送信に際して、「誰かもらってください」のコメントを付加することが可能となる。すなわち、フレンドか非フレンドかに従って送信するアイテムとともに付加するコメントの内容を変更することが可能となり、適切なコメントを付加してデータ交換の興趣性が増すことになる。
<送信データリスト作成処理>
図49は、本発明の実施の形態に従う送信データリストの作成処理について説明するフロー図である。
図49を参照して、CPU31(送信データリスト作成処理部308)は、送信スロットを確認する(ステップS460)。具体的には、送信スロット保存領域90に保存された、送信スロット作成処理部306により作成された交換データ授受アプリ毎の送信スロットを確認する。
そして、次に、CPU31(送信データリスト作成処理部308)は、各送信スロットのデータを確認する(ステップS462)。具体的には、送信スロットに格納された各々のデータのIDデータ、送受信条件データ、データサイズ等を確認する。
そして、CPU31(送信データリスト作成処理部308)は、送信データリストを作成する(ステップS464)。そして、処理を終了する(リターン)。
図50は、本発明の実施の形態に従う送信データリストについて説明する図である。
本例では、図44の比較に基づいて、自機側においてアプリA,B,Cが交換データ授受アプリである場合について説明する。また、ゲーム装置3側において、アプリA,B,Dが交換データ授受アプリである場合について説明する。
図50(A)に示されるように、ここでは、自機側の送信データリストが示されている。
具体的には、アプリA,B,Cにそれぞれ対応する送受信条件データと、アプリA,B,Cにそれぞれ対応して設けられた送信スロットに格納されたデータサイズが格納される。また、ゲーム装置3が交換データを受信可能であるか否かを示すフラグ欄が設けられている。
図50(B)に示されるように、ここでは、ゲーム装置3側の送信データリストが示されている。
具体的には、アプリA,B,Dにそれぞれ対応する送受信条件データと、アプリA,B,Dに対応して設けられた送信スロットに格納されたデータサイズが格納される。また、ゲーム装置3が交換データを受信可能であるか否かを示すフラグ欄が設けられている。
自機側で作成された送信データリストは、ゲーム装置3側に送信される。そして、ゲーム装置3側において、送信データリストにリストアップされた交換データの受信が可能であるかどうかを判断して、その結果をフラグ欄に書込んで返信する。
同様に、ゲーム装置3側で作成された送信データリスト(自機側からは受信データリストとも称する)が送信される。そして、自機側において、受信データリストにリストアップされた交換データの受信が可能であるかどうかを判断して、その結果をフラグ欄に書込んで返信する。
<送受信データリスト分析処理>
図51は、本発明の実施の形態に従う送受信データリスト分析処理について説明するフロー図である。
図51を参照して、CPU31(送受信データリスト分析処理部310)は、送信データリスト作成処理部308で作成した送信データリストを送信する(ステップS460)。本例においては、ゲーム装置3に送信データリストを送信する。
そして、次に、CPU31(送受信データリスト分析処理部310)は、受信データリストを受信したかどうかを判断する(ステップS462)。具体的には、通信相手であるゲーム装置3で作成され、送信された送信データリスト(受信データリスト)を受信したかどうかを判断する。
そして、次に、CPU31(送受信データリスト分析処理部310)は、受信データリストを受信したと判断した場合(ステップS462においてYES)には、受信データリストの受信判定を実行する(ステップS464)。具体的には、受信データリストにリストアップされているゲーム装置3から送信される交換データを受信可能であるかどうかを判断する。
上述したように、アプリケーション毎に受信BOXの容量および受信可能なデータ個数が規定されており、受信BOXの容量あるいは、受信可能なデータ個数を超えるようなデータの受信はできない。
したがって、受信データリストにリストアップされている交換データのサイズと、対応するアプリケーションの受信BOXの容量および受信可能なデータ個数を確認することにより受信可能であるかどうかを判断する。
そして、次に、CPU31(送受信データリスト分析処理部310)は、受信データリストの更新処理を実行する(ステップS466)。
具体的には、CPU31(送受信データリスト分析処理部310)は、受信可能であると判断した場合には、OK判定フラグを当該受信データリストのフラグ欄に付加する処理を実行する。一方、受信が不可能であると判断した場合には、NG判定フラグを当該受信データリストのフラグ欄に付加する処理を実行する。
そして、次に、CPU31(送受信データリスト分析処理部310)は、更新した受信データリストを送信する(ステップS468)。本例においては、ゲーム装置3に受信データリストを送信(返信)する。
次に、CPU31(送受信データリスト分析処理部310)は、更新された送信データリストを受信したかどうかを判断する(ステップS470)。ゲーム装置3側においても自機側と同様の処理が実行される。すなわち、送信データリストにリストアップされている交換データのサイズと、対応するアプリケーションの受信BOXの容量および受信可能なデータ個数を確認することにより受信可能であるかどうかを判断する。そして、自機から送信された送信データリストのフラグ欄にOK判定フラグあるいはNG判定フラグが付加されて、更新された送信データリストが返信されることになる。
次に、CPU31(送受信データリスト分析処理部310)は、更新された送信データリストを受信したと判断した場合(ステップS470においてYES)には、処理を終了する(リターン)。
一方、ステップS462において、CPU31(送受信データリスト分析処理部310)は、受信データリストを受信しなかったと判断した場合(ステップS462においてNO)あるいは、更新された送信データリストを受信しなかったと判断した場合(ステップS470においてNO)には、通信が遮断されたと判断して通信接続を切断する(ステップS472)。そして、処理を終了する(エンド)。
図52は、本実施の形態に従う送受信データリストの送受信の流れについて説明する図である。
図52を参照して、自機側から、作成された送信データリストが送信される(シーケンスsq220)。また、ゲーム装置3側から、作成された送信データリストが送信される(シーケンスsq222)。
そして、自機側において、ゲーム装置3から送信された送信データリスト(受信データリスト)を分析して、リストアップされている交換データが受信可能であるかどうかを判断し、受信データリストを更新する(シーケンスsq224)。
本例においては、一例としてアプリA,B,Cについては、受信可能であるOK判定フラグがフラグ欄に付加された場合が示されている。
そして、更新した受信データリストを返信する(シーケンスsq226)。
また、ゲーム装置3側において、自機側から送信された送信データリストを分析して、リストアップされている交換データが受信可能であるかどうかを判断し、受信データリストを更新する(シーケンスsq228)。本例においては、一例として、アプリA,Bについては、受信可能であるOK判定フラグがフラグ欄に付加され、アプリCについては、受信が不可能であるNG判定フラグがフラグ欄に付加された場合が示されている。
そして、更新した受信データリストを返信する(シーケンスsq230)。
当該処理により、自機側は、ゲーム装置3側で更新された送信データリストを受信し、送信データリストのフラグ欄に書き込まれたOK判定フラグあるいはNG判定フラグに従って実際に交換データを送受信するかどうかを判断することが可能となる。
本例においては、送信データリストに従って、アプリA,Bの送信は可能であるが、アプリCの送信は不可能であると判断される。
また、自機側において、ゲーム装置3で作成された受信データリストを受信して、受信が可能かどうかをフラグ欄に書込んで返信することにより、ゲーム装置3から実際に送信される交換データを把握することが可能となる。
本例においては、受信データリストに従って、アプリA,B,Dの交換データがゲーム装置3から送信され、自機側で受信するものとして把握することが可能である。
ゲーム装置3側についても同様である。
具体的には、ゲーム装置3側においては、送信データリストに従って、アプリA,B,Dの送信は可能であると判断される。
また、受信データリストに従って、アプリA,Bの交換データが自機側から送信され、受信されるが、アプリCの交換データは自機側からは送信されないもの(受信が不可能である為)として把握することが可能である。
<送受信実行処理>
図53は、本発明の実施の形態に従う送受信実行処理について説明するフロー図である。
本例における送受信実行処理は、主に、図8の送受信実行処理部312で実行されるが、後述する送信データリスト送信判定処理(ステップS151)および受信データリスト受信判定処理(ステップS155)は、図8のデータリスト判定部314で実行される処理である。また、ステップS157において通信が終了したかどうかを判断して、ステップS158において通信を切断する処理は、図8の通信切断処理部316で実行される処理である。
図53を参照して、CPU31(送受信実行処理部312)は、送信処理を開始する(ステップS150)。
ここで、送信処理に際し、互いに交換データの授受を実行する2つのゲーム装置のうち一方が親機となり他方が子機となるが、本例においては、接続要求信号を出力した子機側のゲーム装置から親機側のゲーム装置に交換データを出力するものとする。なお、本例においては、ゲーム装置1が子機となった場合の処理について説明する。そして、ゲーム装置3が親機となった場合の処理について説明する。
次に、CPU31(送受信実行処理部312)は、自機が親機か子機かを判断するため子機としての接続フラグがオンであるかどうかを判断する(ステップS150#)。接続フラグの設定に関しては、後述する。
そして、次に、子機としての接続フラグがオンである場合、すなわち、自機が子機であると判断した場合(ステップS150#においてYES)には、CPU31(データリスト判定部314)は、送信データリストの送信可能なデータが全て送信されたかどうかを判定する送信データリスト送信判定処理を実行する(ステップS151)。
図54は、本発明の実施の形態に従う送信データリスト送信判定処理を説明するフロー図である。
図54を参照して、CPU31(データリスト判定部314)は、後述する送信完了フラグがオンされているかどうかを判断する(ステップS490)。
ステップS490において、CPU31(データリスト判定部314)は、送信完了フラグがオンされていない場合(ステップS490においてNO)には、送信データリストを確認する(ステップS492)。具体的には、送信データリストの送信可能なデータに立てられる送信完了フラグを確認する。
そして、次に、CPU31(データリスト判定部314)は、送信データリストの送信可能なデータが全て送信されたかどうかを判断する(ステップS494)。具体的には、送信データリストの送信可能なデータに全ての送信完了フラグが立てられたかどうかを判断する。
ステップS494において、CPU31(データリスト判定部314)は、送信データリストの送信可能なデータが全て送信されたと判断した場合(ステップS494においてYES)には、送信完了フラグをオンに設定する(ステップS496)。そして、処理を終了する(リターン)。
ステップS490において、CPU31(データリスト判定部314)は、送信完了フラグがオンされている場合(ステップS490においてYES)には、送信データリストを確認する必要がなく処理を終了する(DDに進む)。すなわち、ステップS153に進む。
再び、図53を参照して、次に、CPU31(送受信実行処理部312)は、通信相手(親機)に交換データを送信する(ステップS152)。具体的には、送信データリストの送信可能な交換データを送信する。なお、送信データリストの送信可能なデータについて、データサイズの小さい交換データから送信するようにしても良い。
次に、CPU31(送受信実行処理部312)は、送信データリストを更新する(ステップS152#)。具体的には、送信データリストにおいて、交換データを送信した場合に当該交換データを送信した旨を示す送信OKフラグを立てる。
一方、子機としての接続フラグがオンでない場合、すなわち、自機が親機であると判断した場合(ステップS150#においてNO)には、「AA」に進む。「AA」以降の処理は、親機側の処理であり後述する。
そして、次に、CPU31(送受信実行処理部312)は、通信相手(親機)から交換データを一定期間内に受信したかどうかを判断する(ステップS153)。
ステップS153において、CPU31(送受信実行処理部312)は、通信相手(親機)から交換データを一定期間内に受信したと判断した場合には(ステップS152においてYES)には、受信データリストを更新する(ステップS153#)。具体的には、受信データリストにおいて、交換データを受信した場合に当該交換データを受信した旨を示す受信OKフラグを立てる。
次に、CPU31(送受信実行処理部312)は、メインメモリ32に交換データを格納する(ステップS154)。なお、この時点においては、後述するデータ格納処理のためにメインメモリに一時的に格納し、アプリケーション毎に設けられた受信BOXには保存しない。
そして、次に、CPU31(データリスト判定部314)は、受信データリストの受信可能なデータが全て受信されたかどうかを判定する受信データリスト受信判定処理を実行する(ステップS155)。
図55は、本発明の実施の形態に従う受信データリスト受信判定処理を説明するフロー図である。
図55を参照して、CPU31(データリスト判定部314)は、受信完了フラグがオンされているかどうかを判断する(ステップS480)。
ステップS480において、CPU31(データリスト判定部314)は、受信完了フラグがオンされていない場合(ステップS480においてNO)には、受信データリストを確認する(ステップS482)。具体的には、受信データリストの受信可能なデータに立てられる受信完了フラグを確認する。
そして、次に、CPU31(データリスト判定部314)は、受信データリストの受信可能なデータが全て受信されたかどうかを判断する(ステップS484)。具体的には、受信データリストの受信可能なデータに全ての受信完了フラグが立てられたかどうかを判断する。
ステップS484において、CPU31(データリスト判定部314)は、受信データリストの受信可能なデータが全て受信されたと判断した場合(ステップS484においてYES)には、受信完了フラグをオンに設定する(ステップS486)。そして、処理を終了する(リターン)。
ステップS480において、CPU31(データリスト判定部314)は、受信完了フラグがオンされている場合(ステップS480においてYES)には、受信データリストを確認する必要がなく処理を終了する(リターン)。
再び、図53を参照して、次に、CPU31(通信切断処理部316)は、通信が終了したかどうかを判断する(ステップS157)。具体的には、送信完了フラグおよび受信完了フラグがともにオンである場合には、送受信が完了すなわち通信が終了したと判断する。また、通信が遮断された場合にも通信が終了したと判断する。
CPU31(通信切断処理部316)は、通信が終了したと判断した場合(ステップS157においてYES)には、通信接続を切断する(ステップS158)。そして、処理を終了する(リターン)。
一方、CPU31(通信切断処理部316)は、通信が終了していないと判断した場合(ステップS157においてNO)には、ステップS151に戻る。
次に、親機側の処理について説明する。
なお、本例においては、ゲーム装置3が親機となった場合の処理について説明する。
図56は、本発明の実施の形態に従う送受信実行処理について親機側の処理を部分的に説明するフロー図である。
親機側の処理についても、子機側の処理とほぼ同様であり、受信および送信のタイミングが基本的に異なるのみである。
図56を参照して、子機としての接続フラグがオンでない場合、すなわち、親機としての接続フラグがオンであり自機が親機であると判断した場合(ステップS150#においてNO)には、CPU31(送受信実行処理部312)は、通信相手(子機)から交換データを一定期間内に受信したかどうかを判断する(ステップS172)。
次に、ステップS172において、通信相手(子機)から一定期間内に交換データを受信したと判断した場合(ステップS172においてYES)には、受信データリストを更新する(ステップS174)。具体的には、受信データリストにおいて、交換データを受信した場合に当該交換データを受信した旨を示す受信OKフラグを立てる。
次に、CPU31(送受信実行処理部312)は、メインメモリ32に交換データを格納する(ステップS178)。なお、この時点においては、後述するデータ格納処理のためにメインメモリ32に一時的に格納し、アプリケーション毎に設けられた受信BOXには保存しない。
そして、次に「BB」に進む。すなわち、図53のステップS155に進む。以降の処理については上述したのと同様である。
また、ステップS172において、CPU31(送受信実行処理部312)は、通信相手(子機)から一定期間内に交換データを受信していないと判断した場合(ステップS172においてNO)には、次に、「CC」に進む。すなわち、図53のステップS157に進む。
そして、ステップS157において、CPU31(通信切断処理部316)は、通信が終了したかどうかを判断し、送信完了フラグおよび受信完了フラグがともにオンでない場合には、ステップS151に戻る。そして、当該処理を繰り返す。
図57は、本発明の実施の形態に従う送受信実行処理のデータの流れについて説明する図である。本例においては、図52で説明した送信データリストおよび受信データリストに基づく送受信実行処理について説明する。
図57を参照して、自機側から、ゲーム装置3側にアプリAの交換データが送信される(シーケンスsq230)。当該交換データの送信処理に従い自機側の送信データリストのアプリAに対応して送信OKフラグが立てられる。また、ゲーム装置3側において、ゲーム装置3側の受信データリストのアプリAに対応して受信OKフラグが立てられる。
次に、ゲーム装置3側から、自機側にアプリAの交換データが送信される(シーケンスsq232)。当該交換データの送信処理に従いゲーム装置3側の送信データリストのアプリAに対応して送信OKフラグが立てられる。また、自機側において、受信データリストのアプリAに対応して受信OKフラグが立てられる。
次に、自機側から、ゲーム装置3側にアプリBの交換データが送信される(シーケンスsq234)。当該交換データの送信処理に従い自機側の送信データリストのアプリAに対応して送信OKフラグが立てられる。また、ゲーム装置3側において、ゲーム装置3側の受信データリストのアプリBに対応して受信OKフラグが立てられる。
次に、ゲーム装置3側から、自機側にアプリBの交換データが送信される(シーケンスsq236)。当該交換データの送信処理に従いゲーム装置3側の送信データリストのアプリBに対応して送信OKフラグが立てられる。また、自機側において、受信データリストのアプリAに対応して受信OKフラグが立てられる。
そして、自機側においては、送信データリストは送信完了フラグがオンであるためデータの送信処理は行われず、受信完了フラグはオンではなくオフであるためデータの受信待ち状態となる。
そして、ゲーム装置3側から、自機側にアプリDの交換データが送信される(シーケンスsq238)。当該交換データの送信処理に従いゲーム装置3側の送信データリストのアプリDに対応して送信OKフラグが立てられる。また、自機側において、受信データリストのアプリDに対応して受信OKフラグが立てられる。これにより、自機側においては、受信完了フラグがオンする。
したがって、自機側において、送信完了フラグおよび受信完了フラグがオンするため通信が終了する。同様に、ゲーム装置3側においても、受信完了フラグおよび送信完了フラグがオンするため通信が終了する。
すなわち、上記処理により通信相手との間での交換データの授受処理が終了することになる。
なお、本例においては、アプリAから順番に交互に自機側からゲーム装置3側に交換データが送信される場合について説明しているが、特にこの順番に限られず、送信データリストの送信可能なデータについて、データサイズの小さい交換データから送信するようにして、データの送受信がなるべく成功するようにしても良い。
<データ格納処理>
図58は、本発明の実施の形態に従うデータ格納処理のフロー図である。
図58を参照して、CPU31(データ格納処理部210)は、送信データリストを確認する(ステップS500)。具体的には、自機側の送信データリストについて確認する。なお、ステップS500〜S506の処理において、自機側の送信データリストにリストアップされたアプリケーションについて、送受信条件が満たされているか否かが判断される。なお、自機側の送信データリストには、交換データをゲーム装置3に送信するアプリケーションのみがリストアップされるため、交換データをゲーム装置3から受信のみするアプリケーションについてはリストアップされない。したがって、当該交換データをゲーム装置3から受信のみするアプリケーションについて、受信条件を満たしているか否かについては、ステップS508〜S514の処理で判断される。
次に、CPU31(データ格納処理部210)は、送信データリストの1つを抽出する(ステップS502)。
次に、CPU31(データ格納処理部210)は、送信データリストフラグ判定処理を実行する(ステップS504)。
図59は、本発明の実施の形態に従う送信データリストフラグ判定処理のフロー図である。
図59を参照して、CPU31(データ格納処理部210)は、抽出された1つの送信データリストの送受信条件データ(センドフラグおよびレシーブフラグ)を確認する(ステップS520)。
次に、CPU31(データ格納処理部210)は、送受信条件データに従って条件が満たされたかどうかを判定する送信データリストフラグ条件判定処理を実行する(ステップS522)。
図60は、本発明の実施の形態に従う送信データリストフラグ条件判定処理のフロー図である。
図60を参照して、送受信条件データについてセンドフラグ,レシーブフラグが「0,0」であるかどうかを判断する(ステップS540)。すなわち、送受信条件データが双方向通信(交換通信)のみであるかどうかを判断する。
ステップS540において、送受信条件データについてセンドフラグ,レシーブフラグが「0,0」であると判断した場合(ステップS540においてYES)には、送信データリストの送信フラグがOKであるかどうかを判断する(ステップS542)。
ステップS542において、送信データリストの送信フラグがOKであると判断した場合(ステップS542においてYES)には、受信データリストを確認する(ステップS544)。具体的には、対応するアプリケーションの受信データリストを確認する。
次に、受信データリストの受信フラグがOKであるかどうかを判断する(ステップS546)。
ステップS546において、受信データリストの受信フラグがOKであると判断した場合(ステップS546においてYES)には、送受信OK判定とする(ステップS548)。すなわち、送受信条件データが双方向通信(交換通信)のみであり、当該条件が満たされたことを意味する。そして、処理を終了する(リターン)。
一方、ステップS542において、送信データリストの送信フラグがOKでないと判断した場合(ステップS542においてNO)には、NG判定とする(ステップS550)。すなわち、送受信条件データが双方向通信(交換通信)のみであり、当該条件が満たされなかったことを意味する。そして、処理を終了する(リターン)。
また、ステップS546において、受信データリストの受信フラグがOKでないと判断した場合(ステップS546においてNO)には、NG判定とする(ステップS550)。すなわち、送受信条件データが双方向通信(交換通信)のみであり、当該条件が満たされなかったことを意味する。そして、処理を終了する(リターン)。
次に、ステップS540において、送受信条件データについてセンドフラグ,レシーブフラグが「0,0」でないと判断された場合(ステップS540においてNO)には、送受信条件データについてセンドフラグ,レシーブフラグが「1,1」であるかどうかを判断する(ステップS552)。すなわち、送受信条件データが双方向通信(いずれの条件でも通信可)であるかどうかを判断する。
ステップS552において、送受信条件データについてセンドフラグ,レシーブフラグが「1,1」であると判断した場合(ステップS552においてYES)には、送信データリストの送信フラグがOKであるかどうかを判断する(ステップS554)。
ステップS554において、送信データリストの送信フラグがOKであると判断した場合(ステップS554においてYES)には、受信データリストを確認する(ステップS556)。具体的には、対応するアプリケーションの受信データリストを確認する。
次に、受信データリストの受信フラグがOKであるかどうかを判断する(ステップS558)。
ステップS558において、受信データリストの受信フラグがOKであると判断した場合(ステップS558においてYES)には、送受信OK判定とする(ステップS560)。すなわち、送受信条件データが双方向通信(いずれの条件でも通信可)であり、送信および受信の当該条件がともに満たされたことを意味する。そして、処理を終了する(リターン)。
一方、ステップS558において、受信データリストの受信フラグがOKでないと判断した場合(ステップS558においてNO)には、送信OK判定とする(ステップS559)。すなわち、送受信条件データが双方向通信(いずれの条件でも通信可)であり、送信条件のみが満たされたことを意味する。そして、処理を終了する(リターン)。
一方、ステップS554において、送信データリストの送信フラグがOKでないと判断した場合(ステップS554においてNO)には、受信データリストを確認する(ステップS561)。
具体的には、対応するアプリケーションの受信データリストを確認する。
次に、受信データリストの受信フラグがOKであるかどうかを判断する(ステップS562)。
ステップS562において、受信データリストの受信フラグがOKであると判断した場合(ステップS562においてYES)には、受信OK判定とする(ステップS563)。すなわち、送受信条件データが双方向通信(いずれの条件でも通信可)であり、受信条件のみが満たされたことを意味する。そして、処理を終了する(リターン)。
一方、ステップS562において、受信データリストの受信フラグがOKでないと判断した場合(ステップS562においてNO)には、NG判定とする(ステップS564)。すなわち、送受信条件データが双方向通信(いずれの条件でも通信可)であり、送信条件および受信条件のいずれの条件も満たされなかったことを意味する。そして、処理を終了する(リターン)。
一方、ステップS552において、送受信条件データについてセンドフラグ,レシーブフラグが「1,1」でないと判断した場合(ステップS552においてNO)には、送受信条件データについてセンドフラグ,レシーブフラグが「1,0」であるかどうかを判断する(ステップS565)。すなわち、送受信条件データが送信通信のみであるかどうかを判断する。
ステップS565において、送受信条件データについて、センドフラグ,レシーブフラグが「1,0」であると判断した場合(ステップS565においてYES)には、送信データリストの送信フラグがOKであるかどうかを判断する(ステップS566)。
ステップS566において、送信データリストの送信フラグがOKであると判断した場合(ステップS566においてYES)には、送信OK判定とする(ステップS567)。すなわち、送受信条件データが送信通信のみであり、送信条件のみが満たされたことを意味する。そして、処理を終了する(リターン)。
一方、ステップS566において、送信データリストの送信フラグがOKでないと判断した場合(ステップS566においてNO)には、NG判定とする(ステップS568)。すなわち、送受信条件データが送信通信のみであり、送信条件を満たさなかったことを意味する。そして、処理を終了する(リターン)。
なお、送受信条件データであるセンドフラグ,レシーブフラグが「0,1」の場合については、交換データは、当該送受信条件データは受信通信のみを意味するため、送信スロットは形成されない。したがって、送信データリストには当該送受信条件データは存在しない。
再び、図59を参照して、次に、CPU31(データ格納処理部210)は、送信データリストフラグ条件判定処理の判定結果が送受信OK判定であるかどうかを判断する(ステップS524)。
ステップS524において、CPU31(データ格納処理部210)は、送信データリストフラグ条件判定処理の判定結果が送受信OK判定であると判断(ステップS524においてYES)には、受信データを対応するアプリケーションの受信BOXに格納する(ステップS526)。
次に、CPU31(データ格納処理部210)は、受信データ判定処理を実行する(ステップS528)。受信データ判定処理の詳細については後述する。
一方、CPU31(データ格納処理部210)は、送信データリストフラグ条件判定処理の判定結果が送受信OK判定でないと判断した場合(ステップS524においてNO)には、ステップS532に進む。
そして、次に、CPU31(データ格納処理部210)は、送信データリストフラグ条件判定処理の判定結果が送信OK判定であるかどうかを判断する(ステップS532)。
ステップS532において、CPU31(データ格納処理部210)は、送信データリストフラグ条件判定処理の判定結果が送信OK判定であると判断した場合(ステップS532においてYES)には、対応する送信BOXの交換データの送信回数を更新する(ステップS530)。具体的には、送信回数を1減算する。例えば、送信回数が2回である場合には、当該送信回数は1回に更新される。当該送信回数は、送信スロットから交換データとして送信される回数を意味する。したがって、送信回数が0回となった場合には、送信スロットから交換データとして送信されない。
そして、次に、送信BOXのデータの配列を変更する(ステップS531)。具体的には、送信BOXにある送信スロットに格納して送信した交換データを最後尾に配置する。なお、送信スロットに送信BOXから複数のデータが格納された場合においても、送信したデータ全てが送信BOXの最後尾に配置される。したがって、送信BOXに配置されたデータが順番に送信されることになる。そして、処理を終了する(リターン)。
一方、CPU31(データ格納処理部210)は、送信データリストフラグ条件判定処理の判定結果が送信OK判定でないと判断した場合(ステップS532においてNO)には、ステップS533に進む。
そして、次に、CPU31(データ格納処理部210)は、送信データリストフラグ条件判定処理の判定結果が受信OK判定であるかどうかを判断する(ステップS533)。ステップS533において、CPU31(データ格納処理部210)は、送信データリストフラグ条件判定処理の判定結果が受信OK判定であると判断した場合(ステップS533においてYES)には、受信データを対応するアプリケーションの受信BOXに格納する(ステップS534)。そして、次に、CPU31(データ格納処理部210)は、受信データ判定処理を実行する(ステップS535)。受信データ判定処理の詳細については後述する。
一方、次に、CPU31(データ格納処理部210)は、送信データリストフラグ条件判定処理の判定結果が受信OK判定でないと判断した場合(ステップS533においてNO)には、NG判定かどうかを判断する(ステップS536)。
そして、ステップS536において、CPU31(データ格納処理部210)は、NG判定であると判断した場合(ステップS536においてYES)には、受信データが有るかどうかを判断する(ステップS537)。
次に、CPU31(データ格納処理部210)は、受信データがあると判断した場合(ステップS537においてYES)には、メインメモリから当該受信データを削除する(ステップS538)。
そして、処理を終了する(リターン)。
そして、ステップS536において、CPU31(データ格納処理部210)は、NG判定でないと判断した場合(ステップS536においてNO)あるいは、ステップS537において、受信データが無いと判断した場合(ステップS537においてNO)には、処理を終了する(リターン)。
再び、図58を参照して、CPU31(データ格納処理部210)は、送信データリストの確認が全て終了したかどうかを判断する(ステップS506)。具体的には、送信データリストの全てについて確認が終了したかどうかを判断する。
CPU31(データ格納処理部210)は、送信データリストの全てについて確認が終了していないと判断した場合(ステップS506においてNO)には、ステップS502に戻り、次の送信データリストの1つを抽出して、同様の処理を繰り返す。
CPU31(データ格納処理部210)は、送信データリストの全てについて確認が終了したと判断した場合(ステップS506においてYES)には、送信データリストにリストアップされていないアプリケーションに対応する受信データリストを確認する(ステップS508)。上述したように、自機側の送信データリストには、交換データをゲーム装置3に送信するアプリケーションのみがリストアップされる。したがって、上記処理においては、自機側の送信データリストにリストアップされたアプリケーションの交換データの送受信条件のみが判断されるため、交換データをゲーム装置3から受信のみするアプリケーションについてはリストアップされない。したがって、自機側の送信データリストにリストアップされない、ゲーム装置3から受信のみするアプリケーションについて判断する。
次に、CPU31(データ格納処理部210)は、当該受信データリストの1つを抽出する(ステップS510)。
次に、CPU31(データ格納処理部210)は、受信データリストフラグ判定処理を実行する(ステップS512)。
図61は、本発明の実施の形態に従う受信データリストフラグ判定処理について説明するフロー図である。
図61を参照して、CPU31(データ格納処理部210)は、送受信条件データを確認する(ステップS570)。
次に、CPU31(データ格納処理部210)は、受信データリストフラグ条件判定処理を実行する(ステップS572)。
図62は、本発明の実施の形態に従う受信データリストフラグ条件判定処理のフロー図である。
上述したように、交換データをゲーム装置3から受信のみするアプリについて判断する必要があるため、ゲーム装置3から送信される送信データリストにおいて判断する必要のある送受信条件データは、「1,0」と、「1,1」の2つである。
図62を参照して、送受信条件データについてまず、センドフラグ,レシーブフラグが「1,0」であるかどうかを判断する(ステップS580)。すなわち、ゲーム装置3における送受信条件データが送信通信のみであるかどうかを判断する。
ステップS580において、送受信条件データについてセンドフラグ,レシーブフラグが「1,0」であると判断した場合(ステップS580においてYES)には、受信データリストの受信フラグがOKであるかどうかを判断する(ステップS582)。
ステップS582において、受信データリストの受信フラグがOKであると判断した場合(ステップS582においてYES)には、受信OK判定とする(ステップS584)。すなわち、ゲーム装置3における送受信条件データが送信通信のみであり、当該条件が満たされたことを意味する。そして、処理を終了する(リターン)。
一方、ステップS582において、受信データリストの受信フラグがOKでないと判断した場合(ステップS582においてNO)には、NG判定とする(ステップS585)。すなわち、ゲーム装置3における送受信条件データが送信通信のみであり、当該条件が満たされなかったことを意味する。そして、処理を終了する(リターン)。
次に、ステップS580において、送受信条件データについてセンドフラグ,レシーブフラグが「1,0」でないと判断された場合(ステップS580においてNO)には、送受信条件データについてセンドフラグ,レシーブフラグが「1,1」であるかどうかを判断する(ステップS586)。すなわち、送受信条件データが双方向通信(いずれの条件でも通信可)であるかどうかを判断する。
ステップS586において、送受信条件データについてセンドフラグ,レシーブフラグが「1,1」であると判断した場合(ステップS586においてYES)には、受信データリストの受信フラグがOKであるかどうかを判断する(ステップS587)。
ステップS587において、受信データリストの受信フラグがOKであると判断した場合(ステップS587においてYES)には、受信OK判定とする(ステップS588)。すなわち、送受信条件データが双方向通信(いずれの条件でも通信可)であり、受信条件が満たされたことを意味する。そして、処理を終了する(リターン)。
一方、ステップS587において、受信データリストの受信フラグがOKでないと判断した場合(ステップS587においてNO)には、NG判定とする(ステップS589)。すなわち、送受信条件データが双方向通信(いずれの条件でも通信可)であり、当該条件が満たされなかったことを意味する。そして、処理を終了する(リターン)。
一方、ステップS586において、送受信条件データについてセンドフラグ,レシーブフラグが「1,1」でないと判断した場合(ステップS586においてNO)には、処理を終了する(リターン)。
再び、図61を参照して、CPU31(データ格納処理部210)は、受信OK判定であるかどうかを判断する(ステップS574)。
ステップS574において、CPU31(データ格納処理部210)は、受信OK判定である場合(ステップS574においてYES)には、受信データを対応するアプリケーションの受信BOXに格納する(ステップS576)。
そして、受信データ判定処理を実行する(ステップS578)。受信データ判定処理の詳細については後述する。そして、処理を終了する(リターン)。
一方、ステップS574において、CPU31(データ格納処理部210)は、受信OK判定でないすなわちNG判定であると判断した場合(ステップS574においてNO)には、処理を終了する(リターン)。
再び、図58を参照して、CPU31(データ格納処理部210)は、受信データリストの確認が全て終了したかどうかを判断する(ステップS514)。
ステップS514において、CPU31(データ格納処理部210)は、受信データリストの確認が全て終了していないと判断した場合(ステップS514においてNO)には、ステップS510に戻り、次の受信データリストの1つを抽出して、同様の処理を繰り返す。
そして、ステップS514において、CPU31(データ格納処理部210)は、受信データリストの確認が全て終了したと判断した場合(ステップS514においてYES)には、送信スロットを削除する(ステップS516)。そして、処理を終了する(リターン)。
図63は、本発明の実施の形態に従う送受信実行処理のデータの流れについて説明する別の図である。本例においては、図52で説明した送信データリストおよび受信データリストに基づく送受信実行処理について説明する。
図63を参照して、自機側から、ゲーム装置3側にアプリAの交換データが送信される(シーケンスsq240)。当該交換データの送信処理に従い自機側の送信データリストのアプリAに対応して送信OKフラグが立てられる。また、ゲーム装置3側において、ゲーム装置3側の受信データリストのアプリAに対応して受信OKフラグが立てられる。
次に、ゲーム装置3側から、自機側にアプリAの交換データが送信される(シーケンスsq242)。当該交換データの送信処理に従いゲーム装置3側の送信データリストのアプリAに対応して送信OKフラグが立てられる。また、自機側において、受信データリストのアプリAに対応して受信OKフラグが立てられる。
次に、自機側から、ゲーム装置3側にアプリBの交換データが送信される(シーケンスsq244)。当該交換データの送信処理に従い自機側の送信データリストのアプリBに対応して送信OKフラグが立てられる。また、ゲーム装置3側において、ゲーム装置3側の受信データリストのアプリBに対応して受信OKフラグが立てられる。
この後、通信不良により例えば通信が遮断されたものとする。
そして、ゲーム装置3側から、自機側にアプリBの交換データを送信しようとするが、通信が遮断されて送信できなかったものとする(シーケンスsq246)。当該交換データの送信処理に従いゲーム装置3側の送信データリストのアプリBに対応して送信NGフラグが立てられる。
また、自機側において、受信データリストのアプリBに対応して受信NGフラグが立てられる。
以降、アプリDの交換データも送信できないため送信NGフラグが立てられる。また、自機側において、受信データリストのアプリDに対応して受信NGフラグが立てられる。
すなわち、アプリAについては通信相手との間での交換データの授受処理が実行され、アプリBについては中断したものとする。アプリC,Dについても処理は実行されなかったものとする。
図64は、本発明の実施の形態に従うデータ格納処理における受信データの受信BOXへの格納について説明する概念図である。
本例においては、図63で説明した送受信実行処理の場合について説明する。
図64を参照して、自機側のアプリAについては、送受信条件データは「1,1」であり、双方向通信(いずれの条件でも通信可)が設定されている。そして、送信データリストおよび受信データリストについては、送信OKフラグおよび受信OKフラグが立てられているため送受信OK判定となる。したがって、送受信OK判定であるため受信データがアプリAに対応付けられて設けられた受信BOXに格納される。
一方、自機側のアプリBについては、送受信条件データは「0,0」であり、双方向通信(交換通信)のみに設定されている。そして、送信データリストおよび受信データリストについては、送信OKフラグおよび受信NGフラグが立てられているためNG判定となる。したがって、NG判定であるため交換不成立として処理を終了する。なお、自機側のアプリBについては受信できていないためメインメモリから受信データは削除されない。
なお、アプリC,Dについても同様の方式に従ってNG判定となり、通信不成立として処理を終了する。
ゲーム装置3側のアプリAについては、送受信条件データは「1,1」であり、双方向通信(いずれの条件でも通信可)が設定されている。そして、送信データリストおよび受信データリストについては、送信OKフラグおよび受信OKフラグが立てられているため送受信OK判定となる。したがって、送受信OK判定であるため受信データがアプリAに対応付けられて設けられた受信BOXに格納される。
一方、ゲーム装置3側のアプリBについては、送受信条件データは「0,0」であり、双方向通信(交換通信)のみに設定されている。そして、送信データリストおよび受信データリストについては、送信NGフラグおよび受信OKフラグが立てられているためNG判定となる。したがって、NG判定であり、交換不成立として処理を終了する。なお、ゲーム装置3のアプリBについてはメインメモリに受信データが格納されている。したがって、メインメモリから受信データが削除されて、アプリBに対応付けられて設けられた受信BOXには格納されない。
なお、アプリC,Dについても同様の方式に従ってNG判定となり、通信不成立として処理を終了する。
したがって、自機側およびゲーム装置3側においても、アプリAについては、送受信条件データを満たすため送受信が成功として処理される。したがって、通信が途中で遮断された場合であっても、送受信条件データを確認して、通信が成功したと判断される場合には、当該処理は有効とすることが可能であるため適切にデータの授受を実行することが可能となる。
一方、アプリBについては、自機側およびゲーム装置3側において、送受信条件データを満たさないため通信エラーとして処理される。すなわち、通信が途中で遮断されて受信データのみ受信される、あるいは送信データのみが送信されるような場合であっても通信エラーを適切に判断して、当該処理は無効とすることが可能であるため適切にデータの授受を実行することが可能となる。
アプリC,Dについても同様である。
図65は、本発明の実施の形態に従うデータ格納処理における交換データの送信回数の更新および配列の変更について説明する概念図である。
図65を参照して、ここでは、送信BOXに4つのデータが格納されている場合が示されている。なお、説明を簡易にするためここでは、送信BOXに格納されている交換データのデータ構造として、IDデータIDD0、データグループIDIDD1、送信回数IDD7と、データ本体IDD10とが示されている。なお、本例においては、2回のデータ送信の送信スロットおよび送信BOXのデータの流れについて説明する。図65(A)および(B)は、1回目のデータ送信である。図65(C)および(D)は、2回目のデータ送信である。
上述した処理に従い、まず、図65(A)に示されるように、送信BOXの先頭(左端)のデータが確認されて、1つ目のデータが送信スロットに格納された場合が示されている。なお、1つ目のデータの送信回数は2回に設定されている。なお、データの送信回数は、図9の通信条件設定処理(ステップS7)で設定されたものである。
そして、上述した処理に従い、同一のデータグループIDのデータが送信BOXに格納されているかどうかが判断され、同一のデータグループIDのデータは送信BOXに格納されていないため送信スロットの作成は完了する。
そして、図65(B)に示されるように、送信スロットに格納された交換データが送信された後、データ格納処理により、送信BOXの先頭のデータが送信BOXの最後尾に配置される場合が示されている。そして、送信回数は2回から1回に更新される。
図65(C)は、2回目のデータ送信の際に、送信BOXの先頭(左端)のデータが確認されて、1つ目のデータが送信スロットに格納され、そして、上述した処理に従い、同一のデータグループIDのデータが送信BOXに格納されているかどうかが判断され、同一のデータグループIDのデータが送信BOXに格納されているため、3つ目のデータがさらに送信スロットに格納されて、送信スロットの作成は完了する。なお、1つ目および3つ目のデータの送信回数は1回に設定されている。
そして、図63(D)に示されるように、送信スロットに格納された交換データが送信された後、データ格納処理により、送信BOXの先頭の1つ目のデータおよび3つ目のデータが送信BOXの最後尾に配置される場合が示されている。そして、送信回数は1回から0回に更新される。
したがって、送信BOXに配置されたデータが順番に送信されることになり、同じ交換データが送信されることを抑制して、交換データの送受信の興趣性が増す。
(データ伝播処理)
次に、本発明の実施の形態に従うデータの伝播の方式について説明する。
図66は、本発明の実施の形態に従う受信データ判定処理のフロー図である。
図66を参照して、CPU31(データ格納処理部210)は、受信データを受信BOXに格納した後、当該格納した受信データの伝播回数を確認する(ステップS590)。
次に、CPU31(データ格納処理部210)は、伝播条件を満たしているか、本例においては、伝播回数が0より大きいかどうかを判断する(ステップS592)。
ステップS592において、CPU31(データ格納処理部210)は、伝播条件を満たしている場合、すなわち、本例においては、伝播回数が0より大きいと判断した場合(ステップS592においてYES)には、伝播回数を更新する(ステップS593)。具体的には、伝播回数を1減算する。例えば、伝播回数が1回である場合には、当該伝播回数は0回に更新される。当該伝播回数は、受信データが伝播される回数を意味する。したがって、伝播回数が0回となった場合には、当該伝播回数の受信データを受信したゲーム装置は、他のゲーム装置の当該受信データを伝播(送信)しない。
そして、次に、CPU31(データ格納処理部210)は、伝播条件を満たしていると判断した場合には、伝播回数を更新した受信データをコピーして、送信BOXに格納する(ステップS594)。そして、処理を終了する(リターン)。
一方、ステップS592において、CPU31(データ格納処理部210)は、伝播条件を満たしていないと判断した場合、すなわち、伝播回数が0より大きくないと判断した場合(ステップS592においてNO)には、ステップS593,594の処理をスキップして処理を終了する(リターン)。
すなわち、伝播条件を満たしている(伝播回数が0より大きい値が設定された)受信データを受信した場合には、当該受信データがコピーされて送信BOXに格納されることになる。すなわち、送信BOXに格納されて送信スロットに格納されることになるため、ユーザが意識することなく当該受信データが自動的に別のゲーム装置にさらに送信されることになる。
なお、本例においては、一例として、受信データを受信BOXに格納した後、当該格納した受信データの伝播回数を確認して、伝播条件を満たしているか否かに基づいて送信BOXに格納する場合について説明するが、受信BOXに格納する前に当該受信データの判定処理を実行するようにしても良い。具体的には、ステップS578の受信データ判定処理をステップS574とステップS576との間において実行するようにしても良い。
図67は、本発明の実施の形態に従う伝播条件を満たしている受信データの流れについて説明する図である。
図67を参照して、メインメモリに一時的に格納された受信データは、対応するアプリケーションAに対して設けられた受信BOXに格納される。そして、上記の図66の処理に従い受信データの伝播回数が確認される。本例においては、受信データの伝播回数は0より大きいものとする。したがって、当該受信データがコピーされて、対応するアプリケーションに設けられた送信BOXに格納される。本例においては、アプリAの受信データが受信BOXと、送信BOXに格納される場合が示されている。
図68は、本発明の実施の形態に従う伝播回数が0より大きい交換データが送信BOXに格納されている場合の処理について説明する概念図である。
図68を参照して、ここでは、送信BOXに1つのデータが格納されている場合が示されている。なお、説明を簡易にするためここでは、送信BOXに格納されている交換データのデータ構造として、IDデータIDD0、データグループIDIDD1、送信回数IDD7と、伝播回数IDD8と、データ本体IDD10とが示されている。なお、本例においては、図68(A)および(B)は、自機における処理である。図68(C)および(D)は、ゲーム装置3等の他機における処理である。
上述した処理に従い、まず、図68(A)に示されるように、送信BOXの先頭(左端)のデータが確認されて、1つ目のデータが送信スロットに格納された場合が示されている。なお、1つ目のデータの送信回数は1回、伝播回数は2回に設定されている。なお、データの送信回数および伝播回数は、図9の通信条件設定処理(ステップS7)で設定されたものである。また、当該通信条件設定処理において、伝播回数が0より大きい場合には、送信回数は1より大きい数には設定できないものとする。
そして、図68(B)に示されるように、送信スロットに格納された交換データが送信された後、データ格納処理により、送信BOXの先頭のデータが送信BOXの最後尾に配置される場合が示されている。そして、送信回数は1回から0回に更新される。したがって、当該データは送信回数が0回であるため、送信BOXから送信スロットにコピーされて格納されることはない。
図68(C)は、例えば、ゲーム装置3等の他機において、自機から送信された受信データを受信して、受信BOXに格納した場合が示されている。
そして、受信BOXにおいて、伝播回数が確認され、伝播回数が2回であるため伝播回数を1回に更新して、送信BOXにコピーして格納した場合が示されている。
図68(D)は、ゲーム装置3等の他機において、送信BOXに格納された伝播回数が1回のデータが再び、送信スロットに格納された場合が示されている。
そして、図68(E)に示されるように、ゲーム装置3等の他機において、送信スロットに格納された交換データが送信された後、データ格納処理により、送信BOXの先頭のデータが送信BOXの最後尾に配置される場合が示されている。そして、送信回数は1回から0回に更新される。したがって、当該データは送信回数が0回であるため、送信BOXから送信スロットにコピーされて格納されることはない。当該処理が交換データが伝播される毎に各ゲーム装置で行われることになる。
図69は、本発明の実施の形態に従う交換データの伝播の概念図について説明する図である。
図69を参照して、本例においては、自機1と、ゲーム装置2〜4とがそれぞれ設けられている場合が示されている。
本例においては、交換データが伝播されるため伝播データとして説明する。例えば、当該伝播データの伝播回数は自機1で設定されたものとする。なお、送信回数は1回に設定されているものとする。
自機1から伝播回数が2に設定された伝播データは、ゲーム装置3に送信される。そして、ゲーム装置3から伝播回数が1に設定された伝播データがゲーム装置2に送信される。そして、ゲーム装置2から伝播回数が0に設定された伝播データがゲーム装置4に送信される。
したがって、自機1からゲーム装置3に送信された伝播データ(伝播回数2回)は、ゲーム装置3から他のゲーム装置を介して2回伝播されることになる。
したがって、交換データが伝播される回数を設定することができ、交換データの送受信の興趣性が増す。
さらに、伝播回数を設定することにより、無制限に交換データが伝播されることを抑制することが可能となり、交換データを送信する送信者の意図を反映したデータ通信が可能となる。さらに、伝播回数を設定することにより無制限に交換データが伝播されることを抑制して、通信トラフィック量を減らすことが可能となる。
<MACアドレス保存処理>
図70は、本実施の形態に従うMACアドレス保存処理のフロー図である。
図70を参照して、CPU31(装置識別情報登録処理部211)は、受信データ保存領域82の各受信BOXの少なくとも1つに変更があったかどうかを判断する(ステップS600)。
ステップS600において、CPU31(装置識別情報登録処理部211)は、受信データ保存領域82の各受信BOXの少なくとも1つに変更がなかったと判断した場合(ステップS600においてNO)には、次に、交換データ保存領域80の各送信BOXの少なくとも1つに変更があったかどうかを判断する(ステップS602)。
そして、ステップS600において、CPU31(装置識別情報登録処理部211)は、受信データ保存領域82の各受信BOXの少なくとも1つに変更があったと判断した場合(ステップS600においてYES)あるいは、交換データ保存領域80の各送信BOXの少なくとも1つに変更があったと判断した場合(ステップS602においてYES)には、保存用データメモリ34に設けられているMACアドレスリスト保存領域88に、通信相手を識別するMACアドレスを保存する(ステップS604)。当該MACアドレスリスト保存領域88に保存されたMACアドレスがMACアドレスリストの一部に含められ上述した通信設定処理で用いられることになる。
一方、ステップS602において、CPU31(装置識別情報登録処理部211)は、受信BOXおよび送信BOXのいずれにも変更が無かったと判断した場合(ステップS600においてNO)には、通信相手を識別するMACアドレスを保存することなく、処理を終了する(リターン)。したがって、この場合には、交換データを適切に取得することができなかったためMACアドレスリスト保存領域70にMACアドレスを保存されない。したがって、再度、携帯端末間通信に従って上述した処理を実行して、交換データのデータ授受処理を再開することが可能である。
なお、本例においては、少なくとも1つの受信BOXあるいは送信BOXに変更が有った場合には、すなわち、通信相手との間での少なくとも1つの交換データの授受処理(通信処理)を実行した場合には、CPU31(装置識別情報登録処理部211)が保存用データメモリ34に設けられているMACアドレスリスト保存領域88に、通信相手を識別するMACアドレスを保存(登録)する場合について説明するが、上述したように通信が途中で遮断されて通信エラーとなる場合もあるため、通信エラーとならずに通信処理が完全(適切)に終了した場合(送信完了フラグオンおよび受信完了フラグオンの場合等)に、MACアドレスを登録するようにするようにしても良い。
そして、通信設定処理により、MACアドレスリスト保存領域70にMACアドレスリストが保存されるため、上述したMACアドレスフィルタリング処理により、同じゲーム装置との間で何度も通信することを防止することができ、効率的かつ効果的なデータ通信を実行することが可能である。
なお、本例においては、本体側の保存用データメモリ34に設けられているMACアドレスリスト保存領域88に保存されたMACアドレスリストと、無線通信モジュール38のMACアドレスリスト保存領域70に格納されているMACアドレスリストは同じであり、MACアドレスリスト保存領域70のみを用いて上記で説明した方式を実現しても良い。
一方で、本体側の保存用データメモリ34にMACアドレスリスト保存領域88を設けて、当該MACアドレスリスト保存領域88にMACアドレスを保存することにより、無線通信モジュール38にアクセスしてMACアドレスリスト保存領域70のデータを編集するよりも、MACアドレスのデータの追加あるいは削除等の編集を容易かつ高速に実行することが可能である。
また、本例においては、受信データ保存領域82の受信BOXに交換データが保存された場合に、すなわち、通信相手との間での交換データの授受処理(通信処理)を実行した場合に、CPU31(装置識別情報登録処理部211)は、保存用データメモリ34に設けられているMACアドレスリスト保存領域88に、一例として、通信相手を識別するMACアドレスを保存する場合について説明したが、特にこの順序に限られず、例えば、図40のステップS142におけるスリープ状態が解除された後、データ授受処理を開始する前に通信相手を識別するMACアドレスを保存するようにすることも可能である。
すなわち、当該構成においては、無線通信モジュール38から本体部に通知があった場合、例えばスリープ状態である場合にはスリープ状態が解除された場合に、当該スリープ状態を解除した他のゲーム装置のMACアドレスが装置識別情報登録処理部211によりMACアドレスリスト保存領域88に保存されることになる。上述した処理により、一度、本体部に通知があった、すなわちスリープ状態である場合にスリープ状態を解除した通信相手との通信を行わずに効率的なデータ通信を実行することが可能である。
なお、当該構成においては、本体部に通知があった、すなわちスリープ状態である場合にスリープ状態を解除したことを条件(登録条件)として、CPU31(装置識別情報登録処理部211)が保存用データメモリ34に設けられているMACアドレスリスト保存領域88に、通信相手を識別するMACアドレスを保存(登録)する場合について説明したが、当該本体部に通知があった、すなわちスリープ状態である場合にスリープ状態を解除したことのみをMACアドレスを登録する登録条件とする場合に限られず、当該スリープ状態を解除した上でさらに他の条件の判定処理を実行した上で、当該他の条件の判定処理を満たす場合に、MACアドレスを登録するようにするようにしても良い。
<データ通知処理>
図71は、本発明の実施の形態に従うデータ通知処理について説明するフロー図である。当該データ通知処理は、一例として上述したシステムプログラム保存領域86に格納されている本体機能プログラムをCPU31が実行することにより実現されるものである。
図71を参照して、CPU31(データ通知処理部212)は、受信データ保存領域82の受信BOXに交換データが格納されたかどうかを判断する(ステップS610)。
そして、CPU31(データ通知処理部212)は、受信データ保存領域82の受信BOXに交換データが格納されたと判断した場合(ステップS610においてYES)には、効果音を出力する(ステップS612)。具体的には、CPU31(データ通知処理部212)は、図2で説明したスピーカ45から予め用意されている効果音を出力するように指示する。そして、次に、CPU31(データ通知処理部212)は、交換データの内容を表示する(ステップS614)。具体的には、CPU31(データ通知処理部212)は、交換データが有った旨の表示をLCD12に出力するように指示する。そして、処理を終了する(エンド)。なお、交換データがあった旨の表示は、交換データが格納された受信BOX毎に表示させても良いし、一覧として、交換データが格納された全ての受信BOXに対応付けて一度に表示させるようにしても良い。
当該効果音のスピーカ45からの出力およびLCD12への表示によりユーザは、交換データが格納されたことを認知することが可能である。
なお、本例においては、一例としてスピーカ45からの効果音およびLCD12への表示による聴覚および視覚による交換データが授受されたことをユーザに通知する場合について説明したが、いずれか一方でも良い。また、例えば、バイブレーション機能を実行してゲーム装置を振動させて触覚により交換データが授受されたことをユーザに通知するようにしても良い。
そして、当該交換データの格納に伴いユーザは、当該交換データを利用可能なアプリケーションを起動するものとする。そして、当該アプリケーションの起動により交換データ保存領域に格納された交換データが消去されるものとする。
<交換データ追加および消去処理>
図72は、本発明の実施の形態に従う交換データ追加および消去処理のフロー図である。すなわち、図9のステップS22における処理について説明する。
なお、交換データ追加および消去処理は、一例としてメモリカード26のROM27に格納されているアプリケーションプログラムをCPU31が実行することにより実現される。
図72を参照して、まず、CPU31(交換データ追加および消去処理部214)は、受信データ保存領域82の受信BOXを確認する(ステップS620)。
そして、CPU31(交換データ追加および消去処理部214)は、データをロードした実行中のアプリケーションのアプリケーションIDに対応する交換データが受信データ保存領域82の対応する受信BOXに有るかどうかを判断する(ステップS622)。
そして、次に、CPU31(交換データ追加および消去処理部214)は、受信データ保存領域82の受信BOXに当該アプリケーションIDに対応する交換データが有ると判断した場合には、交換データを取得する(ステップS624)。
当該処理により取得した交換データを用いたアプリケーションを実行することが可能となる。
このとき、取得した交換データをセーブデータとして、自己のセーブ領域(バックアップRAM)に転送保存しても良い。また、それに伴い受信データ保存領域82の受信BOXに有る交換データを削除することも可能である。
なお、本例においては、交換データが受信データ保存領域82の受信BOXに有るかどうかを判断して、受信データ保存領域82に有る場合には、交換データを取得するとして説明したが、このとき、ユーザに交換データを取得した旨(より好ましくは、取得した交換データの内容)を提示するようにしても良い。さらには、当該交換データを利用するかどうか、ユーザに選択させるようにすることも可能である。
そして、次に、CPU31(交換データ追加および消去処理部214)は、交換データ保存領域80の送信BOXに格納されたアプリケーションIDに対応する交換データを削除する(ステップS626)。具体的には、送信BOXの中の最後尾にある送信回数が0のデータを削除するようにすれば良い。
このとき、自己のセーブ領域(バックアップRAM)にあるセーブデータとして格納されている交換データを削除することも可能である。
当該処理により交換データ保存領域80の送信BOXに格納されたアプリケーションIDに対応する交換データが削除されることにより交換データの交換処理が完了することになる。
そして、次に、CPU31(交換データ追加および消去処理部214)は、交換データ保存領域80に格納された交換データを削除したためバックアップRAM28に格納されていた交換フラグデータを消去する(ステップS628)。
そして、処理を終了する(リターン)。
そして、図9で説明したようにステップS5に進むことになる。
なお、本例においては、アプリケーションを起動した際に、交換フラグデータの有無に基づいて受信データ保存領域82の受信BOXを確認して交換データが有る場合には、当該受信データ保存領域82の受信BOXに記憶された交換データを取得して、交換データ保存領域80の送信BOXに記憶された交換データを削除する方式について説明したが、当該アプリケーションを起動しない場合においても交換データ保存領域80の送信BOXに記憶された交換データを削除するようにしても良い。たとえば、CPU31が受信データ保存領域82の受信BOXに他のゲーム装置からの交換データを格納することに応答して、交換データ保存領域80の送信BOXに記憶された交換データを削除するように指示することにより実現可能である。
また、本例においては、交換データ保存領域80の送信BOXに格納されたアプリケーションIDに対応する交換データを消去する場合について説明したが、消去せずにそのまま維持するようにすることも可能である。その場合には、交換データの交換処理ではなく複製データの授受となる。例えば、一例として上記したように送受信条件データがアプリケーションIDに含められている場合に、送受信条件データとして受信通信のみが条件として含められている場合に、送信BOXから消去せずにそのまま維持するように処理するようにしても良い。また、別の場合として、例えば、一例として上記したように送受信条件データがアプリケーションIDに含められている場合に、送受信条件データとして双方向通信(いずれの通信でも通信可)が条件として含められている場合に、送信回数が1回以上に設定されているような場合にも、送信BOXから消去せずにそのまま維持するように処理しても良い。
なお、送信BOXの中の最後尾にある送信回数が0のデータを削除する点について説明したが、1つに限られず、送信BOXの中にある送信回数が0のデータを全て削除するようにしても良い。
送信回数が0である場合には、送信BOXから送信スロットにコピーして格納されることはないため当該処理により送信BOXを整理することが可能となる。
なお、通信条件設定処理部202で設定された伝播回数に従って、ゲーム装置が伝播データを伝播する場合には、送信BOXに格納されている送信回数が0の伝播データについては自動的には削除しないようにしても良い。伝播データの場合には、ゲーム装置のユーザの意思に係わらず、データを伝播するため、送信BOXに残しておくことにより、ユーザが何を伝播したかを把握するようにしても良い。あるいは、伝播データの場合には、受信BOXの伝播データをコピーして、送信BOXに格納する際に、伝播データの表示に必要なデータのみ記憶させておくようにしても良い。当該場合に、送信回数が0となった伝播データを削除し、記憶しておいた伝播データの表示に必要なデータに基づいて、後述するBOX表示画面で伝播データに関する情報を表示させるようにしても良い。
<通信条件設定処理>
図73は、本発明の実施の形態に従う通信条件設定処理のフロー図である。すなわち、図9のステップS7における処理について説明する。
なお、通信条件設定処理は、一例としてメモリカード26のROM27に格納されているアプリケーションプログラムをCPU31が実行することにより実現される。
図73を参照して、まず、CPU31(通信条件設定処理部202)は、設定画面を表示する(ステップS630)。
図74は、本発明の実施の形態に従う通信条件設定画面を説明する図である。
図74を参照して、LCD12に表示された通信条件設定画面1000には、「交換データの送信回数を設定して下さい」の表示とともに、送信回数を表示する表示欄1002と、送信回数UP/DOWNボタン1004とが設けられている場合が示されている。また、「交換データの伝播回数を設定して下さい」の表示とともに、伝播回数を表示する表示欄1006と、伝播回数UP/DOWNボタン1008とが設けられている場合が示されている。また、「OK」ボタン1010が設けられている。送信回数UP/DOWNボタン1004を操作することにより送信回数がインクリメントあるいはデクリメントされて回数を設定することが可能となる。また、伝播回数UP/DOWNボタン1008を操作することにより伝播回数がインクリメントあるいはデクリメントされて回数を設定することが可能となる。そして、「OK」ボタン1010を押下することにより表示された内容を確定することが可能となる。本例においては、一例として送信回数1回、伝播回数1回が設定されている場合が示されている。なお、送信回数が1回、伝播回数が1回の交換データの場合には、上述したように相手に送信された交換データが受信BOXに格納され、そして、送信BOXにも格納されて、さらに他のゲーム装置に送信される。
なお、伝播回数が1より大きい場合には、送信回数は1より大きい値に設定できないように設定される。仮に送信回数が2回以上である場合には、伝播回数との組み合わせにより、交換データの伝播が送信者の意図を越えた範囲にまで拡大する可能性があるからである。
再び、図73を参照して、CPU31(通信条件設定処理部202)は、設定画面において設定指示の入力があったかどうかを判断する(ステップS632)。具体的には、「OK」ボタンの押下があったかどうかが判断される。
そして、次に、CPU31(通信条件設定処理部202)は、ステップS632において、設定指示の入力が有ったと判断した場合(ステップS632においてYES)には、指示された内容に従い交換データの送信回数および伝播回数が設定される(ステップS634)。そして、処理を終了する(リターン)。すなわち、図9で説明したステップS8に進むことになる。
なお、本例においては、図9のステップS6からの交換データの指定入力が有った場合に、図73で説明した通信条件設定処理が実行される場合について説明した。すなわち、ユーザが任意に通信条件設定画面1000で伝播回数および送信回数を設定可能である場合について説明したが、伝播回数および送信回数をアプリケーションの実行処理により自動的に設定するようにしても良い。具体的には、交換データ登録イベントが発生した場合において、交換データの種類に従って、ユーザが送信回数および伝播回数を任意に設定できるようにしたり、あるいは、アプリケーションが自動的に設定したりすれば良い。
<BOXアクセス処理>
図75は、本発明の実施の形態に従うBOXアクセス処理のフロー図である。すなわち、図9のステップS26における処理について説明する。
なお、BOXアクセス処理は、一例としてメモリカード26のROM27に格納されているアプリケーションプログラムをCPU31が実行することにより実現される。
図75を参照して、BOX確認の指定入力が有った場合には、CPU31(BOXアクセス処理部215)は、交換データ保存領域80および受信データ保存領域82の送信BOXおよび受信BOXの探索処理を実行する(ステップS640)。
図76は、本発明の実施の形態に従うBOX探索処理を説明するフロー図である。
図76を参照して、CPU31(BOXアクセス処理部215)は、まず、アプリケーションアクセス権限を確認する(ステップS650)。具体的には、アプリケーションの実行により指示された保存用データメモリ34に格納されたBOXの確認の指定入力(コマンド)の中に特定のアプリケーションを識別するデータではなく、特殊コマンドが含まれているかどうかを確認する。例えば、アプリケーションプログラムがシステムプログラム保存領域86に格納された情報を管理する管理プログラムであるような場合には、特殊コマンドが含まれるものとする。
そして、CPU31(BOXアクセス処理部215)は、特殊コマンドが有るかどうかを判断する(ステップS652)。
ステップS652において、CPU31(BOXアクセス処理部215)は、特殊コマンドが有ると判断した場合(ステップS652においてYES)には、全BOXを探索する(ステップS662)。
そして、次に、CPU31(BOXアクセス処理部215)は、探索した全BOXを抽出する(ステップS664)。そして、処理を終了する(リターン)。
一方、ステップS652において、CPU31(BOXアクセス処理部215)は、特殊コマンドがないと判断した場合(ステップS652においてNO)には、アプリケーションIDに対応するBOXを探索する(ステップS654)。
そして、CPU31(BOXアクセス処理部215)は、対応するアプリケーションIDの送信BOXおよび受信BOXを抽出する(ステップS658)。そして、処理を終了する(リターン)。
再び、図75を参照して、CPU31(BOXアクセス処理部215)は、抽出した送信BOXおよび受信BOXを表示する処理を実行する(ステップS644)。具体的には、LCD12に抽出したBOXを表示する。そして、次に、ステップS646において、CPU31(BOXアクセス処理部215)は、BOX表示終了の指定入力が有るかどうかを判断する(ステップS646)。 ステップS646において、CPU31(BOXアクセス処理部215)は、BOX表示終了の指定入力が有ると判断した場合(ステップS646においてYES)には、処理を終了する(リターン)。一方、ステップS646において、CPU31(BOXアクセス処理部215)は、BOX表示終了の指定入力がないと判断した場合(ステップS646においてNO)には、ステップS644に戻る。
図77は、本発明の実施の形態に従うBOX表示画面を説明する図である。
図77(A)を参照して、本例のBOX表示画面1100においては、対応するアプリケーションIDに対応する送信BOX1102および受信BOX1104が表示されている場合が示されている。また、「終了」ボタン1106が設けられており、当該「終了」ボタン1106を押下することにより当該BOXの表示処理を終了させることが可能となる。
図77(B)を参照して、本例のBOX表示画面1110においては、抽出された全BOXが表示されている場合が示されている。ここで、各アプリケーション毎に表示領域1112が設けられ、当該表示領域内に送信BOXおよび受信BOXが表示されている場合が示されている。また、「終了」ボタン1114が設けられており、当該「終了」ボタン1114を押下することにより当該BOXの表示処理を終了させることが可能となる。
したがって、当該処理により、ユーザは、対応するアプリケーションIDに対応する送信BOXおよび受信BOXに格納されたデータを確認することが可能となる。
なお、特殊なコマンドは、アプリケーションプログラムがシステムプログラム保存領域86に格納された情報を管理する管理プログラムである場合に限られず、他のアプリケーションプログラムを実行した場合に、BOXの確認の指定入力(コマンド)の中に含められるようにすることも可能である。
なお、一般的には、コマンドの中に特定のアプリケーションを識別するデータを含めて、当該特定のアプリケーションに対応する送信BOXおよび受信BOXのみ探索して情報を取得する処理が行われるが、当該特殊コマンドを用いることにより、全ての送信BOXおよび受信BOXを探索して情報を取得する処理が実行可能であるため当該特殊コマンドを用いた高度なゲーム装置1に対するアクセスが可能となる。例えば、当該特殊コマンドを用いて、固定端末機器から保存用データメモリ34に格納されている送信BOXおよび受信BOXに直接アクセスするようにしても良い。
<通信相手のサーチ処理>
次に、図78〜図81を参照して、前述のステップS52(図18)の通信相手サーチ処理について説明する。
この処理では、ゲーム装置1は、親機または子機として他のゲーム装置との間で通信可能な相手を探索する交換相手探索処理を実行する。
ゲーム装置1は、通信可能範囲10に存在する他のゲーム装置をサーチすべく、上述した送信無線フレームとして接続要求信号を宛先を特定せずに繰り返し送信する(本実施例においては、接続要求信号を定期的に繰り返し送信する方式について説明するが、いわゆるプローブリクエストによる方式等を採用することも可能である)。
本例においては、子機側のゲーム装置から送信無線フレームとして接続要求信号を送信するものとする。そして、親機側のゲーム装置は、子機側から送信された送信無線フレームである接続要求信号(すなわち受信無線フレーム)を受信するまで待機し、受信した場合には、これに応答して、子機側のゲーム装置に対して親機側から送信無線フレームである接続応答信号を送信する。
この接続要求信号および接続応答信号の送受信により、親機および子機としてのゲーム装置間においてデータ通信が可能となる。なお、本例においては、子機側のゲーム装置から接続要求信号を送信し、親機側のゲーム装置は、接続応答信号を送信する場合について説明するが、親機と子機との関係を入れ替えるようにしても良い。
このような通信相手サーチ処理では、各ゲーム装置1は、親機として動作して子機からのサーチを受ける処理と、子機として動作して親機をサーチする処理とを交互に繰り返す。
図78は、本発明の実施の形態に従う通信相手サーチ処理の1周期の期間について説明する図である。
具体的には、所定の期間(図78のTcycle)を1周期として、各周期の一部を子機として動作する期間(図78のTsp)とし、残りを親機として動作する期間(Tsc)とする。ここで、子機として動作中のゲーム装置と親機として動作中のゲーム装置との間で接続可能であり、子機として動作中のゲーム装置と子機として動作中のゲーム装置、および、親機として動作中のゲーム装置と親機として動作中のゲーム装置は、接続不可能である。
ゆえに、子機として動作する期間と親機として動作する期間を固定的にした場合、偶然にそれらの期間が一致している2つのゲーム装置においてデータ通信が不可能になる。
このようなことを防ぐため、1周期における子機として動作する期間と親機として動作する期間の配分または配置をランダムに変えるようにしてある。
配分をランダムに変える方式が図78(A)に示すような「通信相手サーチ処理(1)」であり、配置をランダムに変える方式が図78(B)に示すような「通信相手サーチ処理(2)」である。
図78(A)を参照して、通信相手サーチ処理(1)は、上述したように、TspおよびTscの配分がランダムに決定される。この処理(1サイクル)の期間を固定値のTcycle(たとえば、4秒)とし、Tscの長さは0からTcycleの間のランダム値に決定され、Tspの長さはTcycleの残りの期間(Tcycle−Tsc)に決まる。また、TscおよびTspが、この順番でTcycleに設定される。Tscの長さは毎回ランダムに決定されるため、Tspの長さもランダムに決定される。これにより、通信可能範囲10に存在する他のゲーム装置との間でデータ通信を実行することができない状態を回避するようにしてある。ただし、Tspが短くなり過ぎると、他のゲーム装置を正確にサーチすることができず、他のゲーム装置との間でデータ通信を実行することができない場合があるため、Tspについての必要最小限の期間を決定しておき、これを確保できない場合には、再度Tscを決定し直すようにしてもよい。
なお、この実施例では、Tsc、Tspの順でTcycleを設定するようにしてあるが、逆の順番で設定するようにしてもよい。
図78(B)を参照して、通信相手サーチ処理(2)は、上述したように、TspやTscの配置がランダムに決定される。言い換えると、Tspの長さを固定値として、Tcycle内におけるTspの開始位置をランダムに設定する。具体的に説明すると、図78(B)に示すように、通信相手サーチ処理(2)では、Tcycle(この実施例では、固定値であり、4秒に設定される。)には、固定値で決定されるTspおよびこのTspを間に挟むようにランダムに決定されるTsc1およびTsc2が設けられる。つまり、Tcycleには、Tsc1、TspおよびTsc2がこの順で設けられる。また、Tsc1の長さは0から(Tcycle−Tsp)の間でランダムに決定され、Tsc2の長さは、Tcycleからランダムに決定されたTsc1およびTspを減算して決定される。
なお、本実施例では、Tsc、Tspの順でTcycleが設定されるのでTspの開始位置をランダムにしたが、Tsp、Tscの順でTcycleが設定される場合には、Tscの開始時期をランダムに決定すればよい。
通信相手サーチ処理(1)または(2)においては、Tspの期間において、ゲーム装置1は、接続要求信号を宛先を特定せずに送信した後、他のゲーム装置3から送信される接続応答信号の受信を試みるという処理を繰り返す。また、Tscの期間において、ゲーム装置1は、他のゲーム装置から送信される接続要求信号の受信を試みて、受信に成功した場合には、接続応答信号を送信するという処理を繰り返す。
また、ゲーム装置1は、消費電力の浪費を防止するために、子機として働く期間においては、所定期間(この実施例では、64ms)毎に接続要求信号を送信するようにしてある。つまり、間欠的にデータ送信が実行されるのである。
以下、通信相手サーチ処理(1)および通信相手サーチ処理(2)について、フロー図を用いて、それぞれ、具体的に説明することにする。
図79は、本発明の実施の形態に従う通信相手サーチ処理(1)を示すフロー図である。
図79を参照して、通信相手サーチ処理(1)を開始すると、ステップS210で、Tscを0からTcycleの範囲内でランダムに決定する。図示は省略するが、Tcycleは固定値であるため、Tscが決定されると、Tspも決定される。
続くステップS212〜S216,S228,S230が上述のTscにおいて実行される処理であり、親機として動作して子機をサーチする処理がされる。ステップS218〜S226,S232が上述のTspにおいて実行される処理であり、子機として動作して親機をサーチする処理がされる。
ステップS212では、子機のサーチを開始する。図示は省略するが、このときタイマ回路をスタートする。次にステップS214で、子機から送信された送信無線フレームである接続要求信号(すなわち受信無線フレーム)を受信したかどうかを判断する。
子機から送信された送信無線フレームである接続要求信号(すなわち受信無線フレーム)を受信した場合(ステップS214においてYES)には、ステップS228で、子機に対して送信無線フレームである接続応答信号を送信し、その後、ステップS230において、親機としての接続フラグをオンして、通信相手サーチ処理(1)をリターンする。つまり、親機として、他のゲーム装置との間で通信接続が可能であることが判明する。
なお、図79においては省略したが、通信相手サーチ処理(1)が開始されたとき、子機としての接続フラグ(後述する親機としての接続フラグも同じ。)はオフ(リセット)される。
一方、子機からの接続要求信号を全く受信しない場合(ステップS214においてNO)には、ステップS216で、子機サーチ時間すなわち親機として他のゲーム装置からの接続が試みられる期間がTsc秒経過したかどうかを判断する。
ステップS216において、子機サーチ時間がTsc秒経過していなければ(ステップS216においてNO)、そのままステップS214に戻る。
一方、子機サーチ時間がTsc秒経過すれば(ステップS216においてYES)、ステップS218で、親機のサーチを開始し、つまりタイマ回路をリセットおよびスタートし、ステップS220で、送信無線フレームである接続要求信号を宛先を特定せずに送信する。
続くステップS222では、親機から送信された送信無線フレームである接続応答信号(すなわち受信無線フレーム)を受信したかどうかを判断する。親機から送信された送信無線フレームである接続応答信号(すなわち受信無線フレーム)を受信すれば(ステップS222においてYES)であれば、、ステップS232で、子機としての接続フラグをオンして、通信相手サーチ処理(1)をリターンする。つまり、子機として他のゲーム装置との間で通信接続が可能であることが判明する。
一方、親機から送信された送信無線フレームである接続応答信号(すなわち受信無線フレーム)を受信しなければ(ステップS222においてNO)、ステップS224で、64ms待機し、続くステップS226で、親機サーチ時間すなわち子機として他のゲーム装置との接続を試みる期間がTsp秒経過したかどうかを判断する。
親機サーチ時間がTsp秒経過していなければ(ステップS226においてNO)、そのままステップS220に戻る。
一方、親機サーチ時間がTsp秒経過すれば(ステップS226においてYES)、Tcycleの期間が経過したと判断して、通信相手サーチ処理(1)をリターンする。
ステップS226で64ms待機することにより、ステップS220において、送信無線フレームである接続要求信号を宛先を特定せずに送信を繰り返す処理が間欠的に行われることになり、消費電力を抑えることができる。
図80および図81は、本発明の実施の形態に従う通信相手サーチ処理(2)を示すフロー図である。
図80を参照して、通信相手サーチ処理(2)を開始すると、ステップS240で、Tsc1を0から(Tcycle−Tsp)の範囲内でランダムに決定する。上述したように、通信相手サーチ処理(2)では、TcycleおよびTspは固定値であるため、Tsc1が決定されると、Tsc2も決定される。
続くステップS242〜S246,S258,S260が上述のTsc1において実行される処理であり、親機として動作して子機をサーチする処理がされる。ステップS248〜S256,S262が上述のTspにおいて実行される処理であり、子機として動作して親機をサーチする処理がされる。さらに、ステップS270〜S274,S276,S278が上述のTsc2において実行される処理であり、親機として動作して子機をサーチする処理がされる。
ステップS242では、子機のサーチを開始する。図示は省略するが、このときタイマ回路をスタートする。次にステップS244で、子機から送信された送信無線フレームである接続要求信号(すなわち受信無線フレーム)を受信したかどうかを判断する。
子機から送信された送信無線フレームである接続要求信号(すなわち受信無線フレーム)を受信すれば(ステップS244においてYES)、ステップS258で、子機に対して親機から送信無線フレームである接続応答信号を送信し、その後、ステップS260において、親機としての接続フラグをオンして、通信相手サーチ処理(2)をリターンする。つまり、親機として他のゲーム装置との間で通信接続が可能であることが判明する。
なお、図81においては省略したが、通信相手サーチ処理(2)が開始されたとき、子機としての接続フラグおよび親機としての接続フラグがオフされるのは、通信相手サーチ処理(1)の場合と同じである。
一方、子機から送信された送信無線フレームである接続要求信号(すなわち受信無線フレーム)を全く受信しない場合(ステップS244においてNO)には、ステップS246で、子機サーチ時間すなわち親機として他のゲーム装置から接続を試みられる期間がTsc1秒経過したかどうかを判断する。
子機サーチ時間がTsc1秒経過していなければ(ステップS246においてNO)、そのままステップS244に戻る。
一方、子機サーチ時間がTsc1秒経過すれば(ステップS246においてYES)、ステップSs48で、親機のサーチを開始し、つまりタイマ回路をリセットおよびスタートし、ステップS197で、送信無線フレームである接続要求信号を宛先を特定せずに送信する。
続くステップS250では、親機から送信された送信無線フレームである接続応答信号(すなわち受信無線フレーム)を受信したかどうかを判断する。親機から送信された送信無線フレームである接続応答信号(すなわち受信無線フレーム)を受信すれば(ステップS252においてYES)、ステップS262で、子機としての接続フラグをオンして、通信相手サーチ処理(2)をリターンする。つまり、子機として他のゲーム装置との間で通信接続が可能であることが判明する。
一方、親機から送信された送信無線フレームである接続応答信号(すなわち受信無線フレーム)を受信しなければ(ステップS252においてNO)、ステップS254で、64ms待機し、続くステップS256で、親機サーチ時間すなわち子機として他のゲーム装置との接続を試みる期間がTsp秒経過したかどうかを判断する。
親機サーチ時間がTsp秒経過していなければ(ステップS256においてNO)、そのままステップS250に戻る。
一方、親機サーチ時間がTsp秒経過すれば(ステップS256においてYES)、図81に示すステップ270で、子機のサーチを開始する。このとき、タイマ回路をリセットおよびスタートする。
次のステップS272では、子機から送信された送信無線フレームである接続要求信号(すなわち受信無線フレーム)を受信したかどうかを判断する。
子機から送信された送信無線フレームである接続要求信号(すなわち受信無線フレーム)を受信すれば(ステップS272においてYES)、ステップS276で、子機に対して接続応答信号を送信し、その後、ステップS278において、親機としての接続フラグをオンして、通信相手サーチ処理(2)をリターンする。
一方、子機からの接続要求信号を全く受信しない場合(ステップS272においてNO)には、ステップS274で、子機サーチ時間がTsc2秒経過したかどうかを判断する。
子機サーチ時間がTsc2秒経過していなければ(ステップS274においてNO)、そのままステップS272に戻る。
一方、子機サーチ時間がTsc2秒経過すれば(ステップS274においてYES)、Tcycleの期間が経過したと判断して、通信相手サーチ処理(2)をリターンする。
図82は、本発明の実施の形態に従う交換データの授受のデータの遣り取りについて説明する図である。
図82を参照して、本体側のCPU31においてアプリケーションプログラムの実行による交換データが設定される(シーケンスsq2)。そして、本体側のCPU31は、無線通信モジュール38に対して通信設定のためのデータを出力する(シーケンスsq4)。具体的には、交換データのアプリケーションIDおよびMACアドレスリストに関するデータを出力する。そして、当該交換データのアプリケーションIDは、フィルタリング用データ保存領域68に格納され、MACアドレスリスト保存領域88のMACアドレスリストは、MACアドレスリスト保存領域70に格納される。本例においては、アプリケーションIDを各判定方式に対応するリストとして纏めてフィルタリング用データ保存領域68に保存する。なお、上述したようにMACアドレスリスト保存領域88#のMACアドレスリストについてもMACアドレスリスト保存領域70#に保存される。
そして、本体側のCPU31は、通信開始指示を無線通信モジュール38に出力する(シーケンスsq6)。
これに伴い通信開始指示に従い無線通信モジュール38による無線通信が開始される(シーケンスsq8)。そして、本実施例においては、無線通信モジュール38において交換データを交換する通信相手を探索する交換相手探索処理である携帯端末間通信が開始される。
一方、ゲーム装置3においても、本体側のCPUにおいてアプリケーションプログラムの実行による交換データが設定される(シーケンスsq14)。そして、本体側のCPUは、無線通信モジュール38Pに対して通信設定のためのデータを出力する(シーケンスsq16)。具体的には、交換データのアプリケーションIDおよびMACアドレスリストに関するデータを出力する。そして、当該交換データのアプリケーションIDのは、フィルタリング用データ保存領域68Pに格納され、MACアドレスリストは、MACアドレスリスト保存領域70Pに格納される。本例においては、アプリケーションIDを各判定方式に対応するリストとして纏めてフィルタリング用データ保存領域68に保存する。
そして、本体側のCPU31は、通信開始指示を無線通信モジュール38Pに出力する(シーケンスsq18)。
これに伴い通信開始指示に従い無線通信モジュール38Pによる無線通信が開始される(シーケンスsq20)。そして、上述したのと同様に、携帯端末間通信が開始される。
再び、ゲーム装置1に関して、次に、上述したように携帯端末間通信において、子機サーチが実行される(シーケンスsq21)。そして、次に、親機サーチが実行される(シーケンスsq22)。
そして、親機サーチにおいて、ゲーム装置1の無線通信モジュール38からゲーム装置3の無線通信モジュール38Pに対して接続要求信号が送信されると(シーケンスsq26)、ゲーム装置3の無線通信モジュール38Pは、ゲーム装置1から送信された送信無線フレーム(すなわち受信無線フレーム)を受け付けて、ゲーム装置1の無線通信モジュール38に対してゲーム装置3の送信無線フレームである接続応答信号を送信する(シーケンスsq28)。
そして、無線通信モジュール38は、無線通信モジュール38Pから送信された送信無線フレームである接続応答信号(すなわち受信無線フレーム)の入力を受け付ける。
当該処理により、上述したように自機であるゲーム装置1については子機としての接続フラグがオンする。また、ゲーム装置3については親機としての接続フラグがオンする。
ゲーム装置1においては、子機としての接続フラグがオンとなることに伴い通信相手である親機と通信接続が可能であるすなわち通信相手を発見したと判断する(シーケンスsq30)。また、ゲーム装置3においても親機としての接続フラグがオンとなることに伴い通信相手である子機と通信接続が可能であるすなわち通信相手を発見したと判断する(シーケンスsq42)。
そして、ゲーム装置1においては、通信相手を発見した後、次に、MACアドレスを比較する(シーケンスsq32)。すなわち、通信相手であるゲーム装置3から受信した受信無線フレームに含まれているMACアドレスが、MACアドレスリスト保存領域70に保存されたMACアドレスリストと比較して一致するかどうかが判断される。
そして、不一致であると判断された場合、すなわち、未だ通信していない相手である場合には、次にデータ内容を確認する(シーケンスsq34)。すなわち、受信無線フレームが携帯端末間処理として処理可能な無線フレームであるかどうかを判定する。
そして、携帯端末間処理として処理可能な受信無線フレームを受信したと判定された場合には、アプリケーションID判定処理を実行する(シーケンスsq36)。
そして、アプリケーションID判定処理により一致フラグがオンした場合には、無線通信モジュール38は、本体側のCPUに対して一致したアプリケーションIDに対応する交換データについて、交換が可能なゲーム装置3が発見された旨を通知する(シーケンスsq38)。
これにより本体側のCPUは、無線通信モジュール38からの通知によって通信接続が可能な交換相手が発見されたことを認識し、データ授受処理を開始する(シーケンスsq40)。
一方、同様の処理に従ってゲーム装置3側においても、通信相手を発見した(シーケンスsq42)後、MACアドレスを比較し(シーケンスsq44)、不一致である場合、すなわち、未だ通信していない相手である場合にはデータ内容を確認し(シーケンスsq46)、そして、携帯端末間処理として処理可能な受信無線フレームを受信したと判定した場合にはアプリケーションID判定処理を実行し(シーケンスsq48)、そして、一致フラグがオンした場合には本体側のCPUに交換が可能なゲーム装置1が発見された旨を通知する(シーケンスsq50)。
これにより、ゲーム装置3においてもデータ授受処理が開始される(シーケンスsq52)。
そして、次に、ゲーム装置1の本体側のCPU31は、データ授受処理が開始された後、ゲーム装置3との間で通信接続を確立する(シーケンスsq54)。
同様に、ゲーム装置3の本体側のCPUにおいてもデータ授受処理が開始された後、ゲーム装置1との間で通信接続を確立する(シーケンスsq56)。
そして、ゲーム装置1は、交換データを送信する(シーケンスsq58)。当該交換データは、スロットに格納されている交換データをコピーしたコピーデータである。
そして、ゲーム装置3においてゲーム装置1から送信された交換データを受信して、当該交換データを格納する(シーケンスsq60)。
そして、ゲーム装置3において、交換データを送信する(シーケンスsq62)。当該交換データは、スロットに格納されている交換データをコピーしたコピーデータである。
そして、ゲーム装置1においては、ゲーム装置3から送信された交換データを受信して、当該交換データを格納する(シーケンスsq64)。
そして、通信を切断する(シーケンスsq66)。
そして、データ格納処理を実行する(シーケンスsq67)。
そして、MACアドレスを登録する(シーケンスsq67)。
そして、データ通知処理を実行する(シーケンスsq68)。
同様に、ゲーム装置3においても、交換データを格納した後、通信を切断する(シーケンスsq70)。そして、データ格納処理を実行する(シーケンスsq71)。そして、MACアドレスを登録し(シーケンスsq72)、データ通知処理を実行する(シーケンスsq72)。
そして、上述したように交換データの通知を受けて、ユーザが当該交換データを利用するアプリケーションを実行することにより上記で説明したスロットに格納されている交換データの消去処理が実行されて交換データの交換処理が完了する。
なお、上記シーケンスにおいて、シーケンスsq4,sq6,sq16,sq18,sq40,sq52〜sq72は、それぞれのゲーム装置において、一例として、上述したように本体側の機能でありシステムプログラム保存領域86に格納された本体機能プログラムにより実現されるものである。一方、シーケンスsq8,sq20〜sq38,sq42〜sq50は、一例として、上述したように、それぞれのゲーム装置において、無線通信モジュール38におけるメモリ制御部64に格納されているROM72から読出されたプログラムにより実現されるものである。
この無線通信により、所定のアプリケーションで利用される交換データを、当該アプリケーションを実行していない時でも、通信接続が確立するゲーム装置との間で自動で交換することができるので、知人との間で交換データの交渉をする機会が増す。また、無線通信により、本体側のCPU31で実行されるアプリケーションの有無に関わらず、所定のアプリケーションで利用される交換データを、当該アプリケーションを実行していない時でも、通信接続が確立するゲーム装置との間で自動で交換することができるので、当該アプリケーションを格納しているメモリカード26を装着している必要は無く、利便性が高く、また、何が交換されるかが分からないため興趣性が増す。また、交換する相手が知人に限定されないため、人が集まる場所に出かければ、交換データを交換することができる可能性が高くなり、交換の楽しさを増大させることができる。つまり、交換データを利用するアプリケーションの興趣性を向上させることができる。また、まず、無線通信モジュール間のみでの通信処理を実行して交換可能であると判断した場合に、初めて本体側のCPUに通知して交換データの授受処理を実行するためCPUの処理負荷を軽減することが可能であるとともに消費電量を低減することが可能である。
そして、当該交換データの授受処理が実行された後、再び、無線通信モジュール38における交換相手探索処理が開始される。
具体的には、交換データの授受処理により交換データ保存領域80の内容が変更されることになる。したがって、図14で説明したフローに従って、CPU31(通信設定処理部204)は、通信設定処理(ステップS28)を実行する。通信設定処理の詳細については図15で説明したので繰り返さない。そして、次に、CPU31(通信指示処理部206)は、通信開始指示を無線通信モジュール38に出力する(ステップS29)。
これにより再び、図17のステップS44で説明したように無線通信モジュール38において携帯端末間通信が開始される(ステップS44)。携帯端末間通信の詳細については図18で説明したとおりである。
図23で説明したように携帯端末間通信においては、MACアドレスが一致する他のゲーム装置(本例においてはゲーム装置3)との再度の通信処理を行わないMACアドレスフィルタリング処理が実行される。
すなわち、MACアドレスリストに登録されている一度通信を行った通信相手であるゲーム装置(本例においてはゲーム装置3)との間では実質的な通信は実行されない。
したがって、本発明の実施の形態に従うゲーム装置においては、通信範囲のゲーム装置を自動的に繰り返して探知し、見つかったゲーム装置を通信候補に設定する。この場合、同じゲーム装置を何度も探知して見つけてしまう可能性があるが、上述のようなMACアドレスフィルタリング処理により、同じゲーム装置との間で何度も通信することを防止することができ、効率的かつ効果的なデータ通信を実行することが可能である。
<変形例>
なお、上記携帯端末間通信においては、送信無線フレームの設定にあたり、MACアドレスとともに通信判断条件であるベンダ特定IEデータを送信無線フレームに含めて送信する方式について説明したが、セキュリティを高めるために、まず、MACアドレスのみを含めた送信無線フレームを送信し、そして、後に、別の送信無線フレームにベンダ特定IEデータを含めて送受信する方式とすることも可能である。
具体的には、先の送信無線フレームに含まれているMACアドレスを用いて、上述したMACアドレスフィルタリング処理を実行することが可能である。
そして、その場合には、図7で説明した無線通信モジュール38の機能として設けられる交換データ通信判断部225の構成としては、装置識別情報比較部226のみの構成とする。
当該構成において、装置識別情報比較部226におけるMACアドレスフィルタリング処理においてMACアドレスが不一致であると判断される場合に本体側に通知するようにしても良い。
そして、上述した通信接続確立後に別の送信無線フレームを送受信して、一例として、本体機能プログラムの実行により本体部の機能として上記で説明した交換データ通信判断部225の他の機能である通信データ判定部228およびアプリケーションID判定部230の処理を実行するようにしても良い。
また、本例においても、上述したように、ステップS142におけるスリープ状態が解除された後、データ授受処理を開始する前に装置識別情報登録処理部211により通信相手を識別するMACアドレスを保存するようにすることも可能である。
すなわち、当該構成においては、装置識別情報比較部226を含む交換データ通信判断部225を通過した場合に、当該交換データ通信判断部225における判断処理を通過した他のゲーム装置のMACアドレスが装置識別情報登録処理部211によりMACアドレスリスト保存領域88に保存されることになる。上述した処理により、一度、当該判断処理を通過した通信相手との通信を行わずに効率的なデータ通信を実行することが可能である。
なお、当該構成においては、交換データ通信判断部225における判断処理を通過したことを条件(登録条件)として、CPU31(装置識別情報登録処理部211)が保存用データメモリ34に設けられているMACアドレスリスト保存領域88に、通信相手を識別するMACアドレスを保存(登録)する場合について説明したが、当該交換データ通信判断部225における判断処理を通過した場合のみをMACアドレスを登録する登録条件とする場合に限られず、当該判断処理を通過した上でさらに他の条件の判定処理を実行した上で、当該他の条件の判定処理を満たす場合に、MACアドレスを登録するようにするようにしても良い。
なお、当該構成において、本体部の機能として、通信データ判定部228およびアプリケーションID判定部230の処理を実行する場合について説明しているが、その場合に、通信データ判定部228において受信無線フレームを受信しないと判断した場合、すなわち互いに通信接続が不可能である装置からデータを受信あるいは通信対象とならないデータを受信したと判定される場合には、再度データ通信を実行する必要はないと考えられる。
したがって、その場合にも当該データを送信した装置のMACアドレスを装置識別情報登録処理部211によりMACアドレスリスト保存領域88に保存するようにしても良い。
これにより、通信対象とならない装置のMACアドレスをMACアドレスリスト保存領域88に保存することにより、一度通信を行った通信相手との通信を行わずに効率的なデータ通信を実行することが可能となる。
また、同様に、アプリケーションID判定部230の判定処理において、アプリケーションIDの一致フラグがオンでない、すなわち、他のゲーム装置は交換データの交換相手とはならないと判定される場合においても、再度データ通信を実行する必要はないと考えられる。
したがって、その場合にも他のゲーム装置のMACアドレスを装置識別情報登録処理部211によりMACアドレスリスト保存領域88に保存するようにしても良い。
これにより、交換データの交換相手とはならない他のゲーム装置のMACアドレスをMACアドレスリスト保存領域88に保存することにより、一度通信を行った通信相手との通信を行わずに効率的なデータ通信を実行することが可能となる。
<携帯固定端末間通信>
次に、本発明の実施の形態に従うゲーム装置1において固定端末機器の配信データを受信するデータ通信について説明する。
図83は、本発明の実施の形態に従うゲーム装置1と固定端末機器5との通信処理の概略について説明する図である。
図83を参照して、固定端末機器5は、無線アクセスポイント装置100と、信号発生装置102とを含む。無線アクセスポイント装置100は、ネットワーク110を介して配信サーバ115と接続される。信号発生装置102は、無線アクセスポイント装置100と接続するために必要な接続情報を含む後述する配信無線フレームを宛先を特定せずに送信する。
無線アクセスポイント装置100は、ゲーム装置1からの配信データの要求に対してネットワーク110を介して配信サーバ115から取得(ダウンロード)した配信データをゲーム装置1に対して送信する。
<固定端末機器5からの配信データの受信を実行する機能ブロックの説明>
図84は、本発明の実施の形態に従うゲーム装置1における配信データを受信する機能ブロックについて説明する図である。
図84を参照して、ゲーム装置1は、無線通信モジュール38と、無線通信モジュール38以外の本体部39とで構成される。
本体部39は、無線通信設定部205と、装置識別情報登録処理部211と、データ通信制御部209と、受信データ保存領域82と、MACアドレスリスト保存領域88#とを含む。
無線通信モジュール38は、無線フレーム受信部223#と、配信データ通信判断部225#と、MACアドレスリスト保存領域70#と、受信無線フレーム保存領域69とを含む。
無線通信設定部205は、MACアドレスリスト保存領域88#に格納されているMACアドレスリストをMACアドレスリスト保存領域70#に格納する。また、無線通信設定部205は、無線通信モジュール38における無線通信を実行するための指示を無線フレーム受信部223#に出力する。
無線通信モジュール38の無線フレーム受信部223#は、無線通信を実行する指示を受けて配信相手を探索する配信相手探索処理を実行する。本例においては、無線フレーム受信部223#は、配信相手として一例として固定端末機器5から送信された配信無線フレームを受信無線フレームとして受信するものとする。そして、無線フレーム受信部223#は、当該受信した受信無線フレームを受信無線フレーム保存領域69に格納する。
配信データ通信判断部225#は、受信した配信無線フレーム(受信無線フレーム)に基づいて通信相手が配信データを配信する配信相手であるかどうかを判断し、配信相手であると判断された場合には、その旨を本体部39に通知する。
具体的には、配信無線フレーム(受信無線フレーム)に含まれている装置識別情報であるMACアドレスがMACアドレスリスト保存領域70#に保存されているMACアドレスリストに登録されているかどうかを判断する。また、当該配信無線フレーム(受信無線フレーム)について、配信データの取得処理が可能な無線フレームであるかどうかを判定する。
そして、配信データ通信判断部225#は、配信無線フレームに含まれているMACアドレスがMACアドレスリストに登録されておらず、また、また、当該配信無線フレームが配信データの取得処理が可能な無線フレームであると判断した場合には、配信データの受信が可能である旨の通知を本体部39のデータ通信制御部209に出力する。なお、ここでは、2つの条件が満たされた場合に配信データの受信が可能である旨の通知を本体部39のデータ通信制御部209に出力する場合について説明しているが、少なくとも1つの条件が満たされた場合に当該通知を出力するようにしても良い。
データ通信制御部209は、配信データ通信判断部225#から出力された配信データの受信が可能である旨の通知を受けて、固定端末機器5に対して配信データの送信を要求し、固定端末機器5から送信された配信データを受信する配信データ取得処理を実行する。そして、受信した配信データを受信データ保存領域82に格納する。
装置識別情報登録処理部211は、データ通信制御部209により受信した配信データが受信データ保存領域82に格納された場合には、配信相手である固定端末機器5の装置識別情報であるMACアドレスをMACアドレスリスト保存領域88#に格納する。
そして、無線通信設定部205は、再び、MACアドレスリスト保存領域88#に格納されているMACアドレスリストをMACアドレスリスト保存領域70#に格納し、無線通信モジュール38における無線通信を実行するための指示を無線フレーム受信部223#に出力する。すなわち、上記で説明したのと同様の処理を繰り返す。
無線通信モジュール38の無線フレーム受信部223#は、再び、無線通信を実行する指示を受けて配信相手を探索する配信相手探索処理を実行する。そして、例えば、再び、本例において、固定端末機器5から送信された配信無線フレームすなわち受信無線フレームを受信するものとする。
配信データ通信判断部225#は、上述したように、配信無線フレームに含まれている装置識別情報であるMACアドレスがMACアドレスリスト保存領域70#に保存されているMACアドレスリストに登録されているかどうかを判断する。
その際、配信データ通信判断部225#は、上述したように以前に配信データの取得処理が実行されている場合には、MACアドレスリストに固定端末機器5の装置識別情報であるMACアドレスが格納されているためMACアドレスに登録されていると判断し、その後のデータ通信である配信データ取得処理は実行しない。すなわち、一度通信を行った通信相手との通信を行わずに効率的なデータ通信を実行することが可能である。
なお、本体部39と、無線通信モジュール38とは独立して動作することが可能である。すなわち、本体部39がスリープ状態に遷移している場合においても、無線通信モジュール38は、配信相手を探索する配信相手探索処理を実行することが可能である。そして、配信データを受信することが可能な配信相手が見つかった場合にのみ、本体部39に通知されて、通信相手との接続が確立されて、配信データの取得処理が実行される。したがって、例えば、本体部39がスリープ状態等の省電力状態に遷移している場合に、無線通信モジュール38における配信相手探索処理により通信相手が見つかった場合であっても交換が可能でなければ本体部39に通知されて通信接続が確立されることはないため、ゲーム装置1全体における省電力を図ることが可能である。
図85は、本発明の実施の形態に従う携帯固定端末間処理を実行する無線通信モジュール38の機能ブロックの詳細について説明する図である。
図85を参照して、本例においては、一例として、CPU60がROM72に保存された携帯固定端末間処理を実行するためのアプリケーションを実行することにより所定の機能を実現する場合について説明するが、必ずしもCPU60により実現される場合に限られず、少なくとも一部の機能を専用のIC(Integrated Circuit)を用いて実現するようにしても良い。
無線通信モジュール38は、無線フレーム受信部223#と、配信データ通信判断部225#とを含む。
無線フレーム受信部223#は、通信相手探索部224を含む。配信データ通信判断部225#は、装置識別情報比較部226と、通信データ判定部228とを含む。なお、各機能は、必要に応じてマルチタスク制御により実現されるものとする。
図7の機能ブロックと比較すると送信無線フレームを送信しないために無線フレーム設定部222が設けられていない構成である。
通信相手探索部224は、通信可能範囲10に含まれる通信相手を探索する配信相手探索処理を実行する。本例においては、一例として配信相手として固定端末機器5との間で通信する場合について説明する。そして、通信相手探索部224は、固定端末機器5からの配信無線フレームを受信するまで待機し、受信した場合に当該配信無線フレームを受信無線フレームとして受信無線フレーム保存領域69に格納する。
配信データ通信判断部225#は、通信相手探索部224で通信相手を発見した場合、すなわち、通信相手から配信無線フレームを受信した場合、当該配信無線フレームに基づいて通信相手が配信データを取得することが可能な配信相手であるかどうかを判断し、配信相手であると判断された場合には、その旨を通知する。
具体的には、装置識別情報比較部226は、通信相手探索部224において通信相手が発見された場合に、通信相手である固定端末機器5から受信した配信無線フレームに含まれている装置識別情報であるMACアドレスが、MACアドレスリスト保存領域70#に保存されたMACアドレスリストと比較して一致するものがあるかどうかを判断する。
通信データ判定部228は、通信相手が発見された場合に、装置識別情報比較部226の比較結果に従って配信無線フレームに含まれているMACアドレスがMACアドレスリスト保存領域70#に保存されているMACアドレスリストと一致しないと判断された場合に、配信無線フレームのデータ内容を確認して、配信無線フレームが携帯固定端末間処理として処理可能な無線フレームであるかどうかを判定する。
そして、通信データ判定部228は、配信無線フレームが携帯固定端末間処理として処理可能な無線フレームであると判断した場合には、本体側にその旨を通知する。
以降の処理は、ゲーム装置1の本体部39の機能として実行されることになる。
なお、ゲーム装置1の本体部39の機能ブロックの詳細については、上述したように図6で説明した構成と基本的に同様であるので図6を用いて説明する。
具体的には、スリープ設定/解除処理部216は、無線通信モジュール38からの通知(図85の通信データ判定部228からの通知)を受ける。
そして、スリープ設定/解除処理部216は、無線通信モジュール38から通知があった場合には、その通知をデータ通信実行処理部208に出力する。
データ通信実行処理部208は、無線通信モジュール38からの通知に従って固定端末機器5からの配信データの取得処理を実行する。具体的には、配信データの要求を固定端末機器5に送信する。そして、固定端末機器5から送信された配信データを受信する。
そして、固定端末機器5から受信した配信データを保存用データメモリ34の受信データ保存領域82に保存する。
装置識別情報登録処理部211は、データ通信実行処理部208により受信した配信データを受信データ保存領域82に格納した場合には、配信相手である固定端末機器5の装置識別情報であるMACアドレスをMACアドレスリスト保存領域88#に格納する。
データ通知処理部212は、配信データを取得した旨をユーザに通知する。
<無線通信モジュール38による携帯固定端末間通信>
図86は、本発明の実施の形態に従う携帯固定端末間通信について説明する図である。当該処理は、無線通信モジュール38において、配信データを提供する通信相手を探索する配信相手探索処理であり、一例として、CPU60が、ROM72に格納されている携帯固定端末間処理を実行するためのアプリケーションを実行することにより実現される。
図86を参照して、まず、CPU60(通信相手探索部224)は、所定期間が経過したかどうかを判断する(ステップS280)。そして、ステップS280において、CPU60は、所定期間が経過していないと判断した場合(ステップS280においてNO)には、通信相手(固定端末機器)を探索する通信相手サーチ処理を実行する(ステップS282)。通信相手サーチ処理については後述する。
そして、次に、CPU60(通信相手探索部224)は、通信相手サーチ処理により通信相手が発見されたかどうかを判断する(ステップS284)。
ステップS284において通信相手が発見されない場合(ステップS284においてNO)には、ステップS280に戻る。
ステップS284において、通信相手が発見された場合(ステップS284においてYES)には、CPU60(装置識別情報比較部226)は、MACアドレスを比較する(ステップS286)。具体的には、配信無線フレームに含まれるMACアドレスと、上述したMACアドレスリスト保存領域70#に格納されているMACアドレスとを比較する。上述したようにMACアドレスは、通信対象を識別する識別情報であり、各固定端末機器には固有のMACアドレスが割り当てられている。そして、MACアドレスリスト保存領域70#には、各固定端末機器に割り当てられたMACアドレスが保存されている。
そして、次に、CPU60(装置識別情報比較部226)は、配信無線フレームに含まれる固定端末機器のMACアドレスが、MACアドレスリストに格納されているMACアドレスと一致するかどうかを判断する(ステップS288)。
そして、ステップS288において、MACアドレスが一致したと判断した場合(ステップS288においてYES)には、再びステップS280に戻る。すなわち、以降の処理を実行することなく当該MACアドレスに対応する固定端末機器5との通信を終了する。すなわち、上述したMACアドレスフィルタリング処理が実行される。したがって、通信可能範囲10に含まれる他のゲーム装置からの通信対象となるデータを受信する毎に識別情報であるMACアドレスと一致するかどうかの判断が繰り返される。
MACアドレスの比較の概念図については、図22,23で説明したのと同様であるのでその詳細については繰り返さない。
ステップS288においてMACアドレスが一致しないと判断した場合(ステップS288においてNO)には、CPU60(通信データ判定部228)は、受信したデータの内容を確認する(ステップS290)。
図87は、本発明の実施の形態に従う携帯固定端末間通信においてゲーム装置においてビーコンとして受信される配信無線フレームの構成について説明する図である。
図87を参照して、固定端末機器5の信号発生装置102から送信される配信無線フレームの構成の概略は、図19で説明した送信無線フレームと同様の構成であり、図20で説明したベンダ特定IEデータの構成が異なる。
具体的には、ビーコンとして受信される配信無線フレームに含まれるベンダ特定IEデータは、タグ情報DD21、タグ長情報DD22、ベンダ情報DD23、通信データ識別情報DD24、アプリケーションIDDD25とを含む。
タグ情報DD21は、複数のIEデータをそれぞれ識別する識別データである。タグ長情報DD22は、当該ベンダ特定IEデータのデータ長を示すデータが含まれている。
ベンダ情報DD23は、当該データを提供する企業等を識別するためのデータである。
通信データ識別情報DD24は、通信データの種別を示すデータであり、携帯固定端末間通信の場合には、携帯固定端末間通信の通信データを示す情報が格納される。
そして、以降にアプリケーションIDDD25が設けられる。
当該配信無線フレームは、後述するが固定端末機器5から不特定の相手(ゲーム装置)に対して送信されたものであり、不特定の相手(ゲーム装置)が受信するものである。親機側の固定端末機器5は、宛先を特定せずに子機側の通信相手に対して当該送信を繰り返し実行する。
再び、図86を参照して、次に、CPU60は、受信したデータに含まれる配信無線フレームを受信したかどうかを判断する(ステップS288)。
具体的には、図87で説明した当該データを提供する企業等を識別するためのベンダ情報がゲーム装置1が予め有しているベンダ情報と一致するかどうかを判断する。ベンダ情報が一致する場合とは、送信されたデータの発信源が通信接続が可能な装置であることを意味し、異なる場合には、送信されたデータの発信源が通信接続が不可能である装置であることを意味する。
また、通信データ識別情報がゲーム装置1が予め有している通信データ識別情報と一致するかどうかを判断する。通信データ識別情報が一致する場合とは、携帯固定端末間通信における通信データ、すなわち携帯固定端末間処理として処理可能な無線フレームであることを意味する。ゲーム装置1側の比較の対象であるベンダ情報は予めROM72に登録されているものとする。また、ゲーム装置1側の比較の対象である通信データ識別情報についても予めROM72に登録されているものとする。
一方、携帯固定端末間通信における通信データ識別情報と、携帯端末間通信における通信データ識別情報とは異なるため、仮にゲーム装置3から出力されたデータを受信した場合であっても通信データ識別情報が異なるため当該データを受信せず固定端末機器5とのみ通信することが可能である。
CPU60(通信データ判定部228)は、携帯端末間通信か携帯固定端末間通信かによって比較対象とする通信データ識別情報を切り替えて、受信したデータに含まれている通信データ識別情報と一致するか否か判断する。
すなわち、ステップS288において、CPU60(通信データ判定部228)は、配信無線フレームを受信していないと判断した場合(ステップS288においてNO)には、再びステップS280に戻る。
したがって、互いに通信接続が不可能である装置からデータを受信あるいは通信対象とならないデータを受信した場合には、以降の処理を実行することなく通信を終了する。なお、本例においてはベンダ情報および通信データ識別情報がともに一致するかどうかを判断する場合について説明したが、通信データ識別情報のみが一致するかどうかを判断するようにしても良い。
次に、ステップS292において、CPU60(通信データ判定部228)は、配信無線フレームを受信したと判断した場合(ステップS292においてYES)には、次に、配信データを有する固定端末機器5が発見された旨を本体側に通知する(ステップS294)。そして処理を終了する(エンド)。
以降、通信相手である固定端末機器5と接続を確立して、配信データを取得する配信データ取得処理については、無線通信モジュール38を用いた本体側のCPU31のアプリケーションとして実行されることになる。
したがって、本体側に、配信データを有する固定端末機器5が発見された旨を通知することにより無線通信モジュール38のCPU60のみが独立して実行する無線通信すなわち、無線通信モジュール38において配信データを取得する通信相手を探索する配信相手探索処理は終了する。
一方、ステップS292において、CPU60(通信データ判定部228)は、配信無線フレームを受信しないと判断した場合(ステップS292においてNO)には、ステップS280に戻る。
当該処理により、本例においては、無線通信モジュール38における配信相手探索処理により配信データを取得可能な通信相手が見つかった場合にのみ、本体側のCPU31に通知されて、通信相手との接続が確立されて、配信データの取得処理が実行される。したがって、例えば、本体側のCPU31がスリープ状態等の省電力状態である場合に、無線通信モジュール38における配信相手探索処理により通信相手が見つかった場合であっても配信データの取得ができないと判断されれば本体側のCPU31に通知されて通信接続が確立されることはないため、ゲーム装置1全体における省電力を図ることが可能である。
図88は、本発明の実施の形態に従う配信データを取得するデータ取得処理のフロー図である。当該データ取得処理は、一例として上述したシステムプログラム保存領域86に格納されている本体機能プログラムをCPU31が実行することにより実現されるものである。当該データ取得処理は、例えば、本体の起動時に開始して、バックグラウンドで継続的に実行される。
図88を参照して、まず、CPU31(スリープ設定/解除処理部216)は、無線通信モジュール38からの通知があるかどうかを判断する(ステップS300)。
ステップS300において、CPU31(スリープ設定/解除処理部216)は、無線通信モジュール38からの通知があったと判断した場合(ステップS300においてYES)には、本体側の機能がスリープ状態であるかどうかを判断する(ステップS301)。
そして、CPU31(スリープ設定/解除処理部216)は、本体側の機能がスリープ状態であると判断した場合(ステップS301においてYES)には、スリープ状態を解除する(ステップS302)。
そして、次に、CPU31(データ通信実行処理部208)は、データ取得処理を開始する(ステップS303)。一方、本体側の機能がスリープ状態で無いと判断した場合(ステップS301においてNO)には、ステップS303に進む。
そして、CPU31(データ通信実行処理部208)は、無線通信モジュール38からの配信データを有する固定端末機器が発見された旨の通知に含まれている通信相手のMACアドレス等の接続情報に基づいて通信相手との間で通信接続を確立する(ステップS304)。本例においては、固定端末機器5の無線アクセスポイント装置100との間で通信接続を確立する。なお、本例においては、固定端末機器が発見された旨の通知後、通信相手との接続を確立する場合、すなわち、CPU31(データ通信実行処理部208)が実行する場合について説明するが、ゲーム装置が発見された旨の通知前、例えば、無線通信モジュール38において図86のステップS292とステップS294との間で通信相手との接続を確立する処理を実行するようにしても良い。
そして、次に、CPU31(データ通信実行処理部208)は、配信データの要求を送信する(ステップS305)。
そして、次に、CPU31(データ通信実行処理部208)は、配信データを受信したかどうかを判断する(ステップS306)。
そして、ステップS306において、CPU31(データ通信実行処理部208)は、配信データを受信したと判断した場合(ステップS306においてYES)には、メインメモリ32に配信データを格納する(ステップS308)。
そして、次に、CPU31(データ通信実行処理部208)は、通信相手(固定端末機器5)との通信を切断する(ステップS310)。すなわち、上記処理により通信相手である固定端末機器との間での配信データのデータ取得処理が終了することになる。
そして、次に、CPU31(データ格納処理部210)は、データ格納処理を実行する。
図89は、本発明の実施の形態に従う配信データのデータ格納処理について説明するフロー図である。
図89を参照して、CPU31(データ格納処理部210)は、データ通信実行処理部208で受信した配信データを受信データ保存領域82のアプリケーションIDに対応付けられて設けられた受信BOXに格納する(ステップS700)。
そして、次に、CPU31(データ格納処理部)は、受信データ判定処理を実行する(ステップS702)。受信データ判定処理については、図66で説明したのと同様である。すなわち、受信データ保存領域82の受信BOXに格納された配信データと対応付けられて設定されている伝播回数を確認して、条件を満たしているかどうかを判定し、満たされている場合には、配信データを他のゲーム装置に伝播するために、配信データをコピーして交換データ(伝播データ)として交換データ保存領域80のアプリケーションIDに対応付けられて設けられた送信BOXに格納する。
そして、処理を終了する(リターン)。
再び、図88を参照して、次に、CPU31(装置識別情報登録処理部211)は、MACアドレス保存処理を実行する(ステップS314)。MACアドレス保存処理については、図70で説明したのとほぼ同様であるが、受信BOXに変更があった場合には、保存用データメモリ34に設けられているMACアドレスリスト保存領域88#に、通信相手を識別するMACアドレスを保存する。当該MACアドレスリスト保存領域88#に保存されたMACアドレスがMACアドレスリストの一部に含められ上述した通信設定処理で用いられることになる。
そして、通信設定処理により、MACアドレスリスト保存領域70#にMACアドレスリストが保存されるため、上述したMACアドレスフィルタリング処理により、同じ固定端末機器との間で何度も通信することを防止することができ、効率的かつ効果的なデータ通信を実行することが可能である。
なお、本例においては、本体側の保存用データメモリ34に設けられているMACアドレスリスト保存領域88#に保存されたMACアドレスリストと、無線通信モジュール38のMACアドレスリスト保存領域70#に格納されているMACアドレスリストは同じであり、MACアドレスリスト保存領域70#のみを用いて上記で説明した方式を実現しても良い。
一方で、本体側の保存用データメモリ34にMACアドレスリスト保存領域88#を設けて、当該MACアドレスリスト保存領域88#にMACアドレスを保存することにより、無線通信モジュール38にアクセスしてMACアドレスリスト保存領域70のデータを編集するよりも、MACアドレスのデータの追加あるいは削除等の編集を容易かつ高速に実行することが可能である。
そして、CPU31(データ通知処理部212)は、取得データ通知処理を実行する(ステップS316)。そして、処理を終了する(エンド)。なお、取得データ通知処理については、図71で説明したのと同様に配信データを取得した場合には、効果音あるいは内容を表示することによりユーザに通知する。
一方、ステップS306において、CPU31(データ通信実行処理部208)は、配信相手である固定端末機器から配信データを一定期間内に受信していないと判断した場合(ステップS306においてNO)には、ステップS318に進む。ステップS318において、CPU31(データ通信実行処理部208)は、配信相手である固定端末機器との通信を切断する。そして、ステップS312に進む。したがって、この場合には、配信データを適切に取得することができなかったためMACアドレスリスト保存領域70#にMACアドレスを保存することなく通信を切断する。したがって、再度、携帯固定端末間通信に従って上述した処理を実行して、配信データのデータ取得処理を再開することが可能である。
図90は、本発明の実施の形態に従う固定端末サーチ処理のフロー図である。
この処理では、ゲーム装置1は、子機として親機である固定端末機器5との間で無線通信を実行し、ゲーム装置1は、親機である固定端末機器5からのビーコンの受信があるまで待機する。この通信相手サーチ処理では、ゲーム装置1は、常に子機として動作して親機をサーチする処理を実行する。なお、本例においては、固定端末機器5からのみビーコンが送信され、ゲーム装置1は当該信号の受信を待つ方式について説明しているが、固定端末機器5は、備え付けの機器であるため、携帯型の移動可能なゲーム装置から信号を出力するよりも固定端末機器5からのみビーコンを送信した方が効率よくデータ通信を実行することができるからである。
図90を参照して、固定端末サーチ処理を開始すると、図示は省略するが、このときタイマ回路をスタートする。
そして、ステップS320で、親機である固定端末機器5のビーコンを受信したかどうかを判断する。
固定端末機器5からのビーコンを受信した場合(ステップS320においてYES)には、ステップS324において接続フラグをオンして、固定端末サーチ処理をリターンする。つまり、子機として、親機である固定端末機器5との間で通信接続が可能であることが判明する。
なお、図90においては省略したが、固定端末サーチ処理が開始されたとき、接続フラグはオフ(リセット)される。
一方、親機からの接続要求信号を全く受信しない場合(ステップS320においてNO)には、ステップS322で、子機として固定端末機器5に接続を試みる期間がTsd秒経過したかどうかを判断する。
ステップS322において、親機サーチ時間がTsd秒経過していなければ(ステップS322においてNO)、そのままステップS320に戻る。
一方、親機サーチ時間がTsd秒経過すれば(ステップS322においてYES)固定端末サーチ処理をリターンする。
図91は、本発明の実施の形態に従う配信データ取得のデータの遣り取りについて説明する図である。
図91を参照して、シーケンスsq2〜sq8までは、図82で説明したのと同様であり、本体側のCPU31においてアプリケーションプログラムの実行による交換データが設定される(シーケンスsq2)。そして、本体側のCPU31は、無線通信モジュール38に対して通信初期設定のためのデータを出力する(シーケンスsq4)。そして、本体側のCPU31は、通信開始指示を無線通信モジュール38に出力する(シーケンスsq6)。
これに伴い通信開始指示に応答して無線通信モジュール38による無線通信が開始される(シーケンスsq8)。
そして、まず、無線通信モジュール38において交換データを交換する通信相手を探索する携帯端末間通信が開始され(シーケンスsq100)、所定期間内に通信相手を発見することができなかったものとする。
そして、さらに、携帯端末間通信が開始される(シーケンスsq102)この場合においても所定期間内に通信相手を発見することができなかったものとする。
そして、次に、携帯固定端末間通信が開始される(シーケンスsq103)。
固定端末機器5は、上述したように、信号発生装置102からビーコンを繰り返し発信(送信)する。
そして、ゲーム装置1の無線通信モジュール38は、固定端末機器5から送信されたビーコンの入力を受け付ける(シーケンスsq104)。
これにより、上述したように自機であるゲーム装置1について接続フラグがオンする。
ゲーム装置1の無線通信モジュール38においては、接続フラグがオンとなることに伴い通信相手である固定端末機器と通信接続が可能であるすなわち通信相手を発見したと判断する(シーケンスsq108)。
そして、ゲーム装置1の無線通信モジュール38においては、データ内容を確認する(シーケンスsq110)。
そして、配信無線フレームを受信したと判断した場合には、無線通信モジュール38は、本体側のCPUに対して配信データの提供を受けることが可能な固定端末機器5が発見された旨を通知する(シーケンスsq112)。
これにより、本体側のCPUは、無線通信モジュール38からの通知によって、配信データを配信する固定端末機器5と通信接続が可能であることを認識し、データ取得処理を開始する(sq114)。
そして、次に、ゲーム装置1の本体側のCPU31は、データ取得処理が開始された後、配信データ要求を送信する(シーケンスsq116)。
固定端末機器5の無線アクセスポイント装置100は、ゲーム装置1からの配信データ要求を受け付けて、当該配信データ要求をネットワーク110を介して配信サーバ115に送信する(シーケンスsq117)。
そして、配信サーバ115は、無線アクセスポイント装置100からの配信データ要求に従って、配信データを送信する(シーケンスsq118)。
無線アクセスポイント装置100は、ネットワーク110を介する配信サーバ115からの配信データを受け付けた後、当該配信データをゲーム装置1に対して送信する(シーケンスsq119)。
そして、ゲーム装置1は、固定端末機器5の無線アクセスポイント装置100から送信された配信データを受け付けて、受信した配信データをメモリに格納する(シーケンスsq120)。
そして、通信を切断する(シーケンスsq122)。
そして、データ格納処理を実行する(シーケンスsq123)。
そして、MACアドレスを登録する(シーケンスsq124)。
そして、取得データを通知する(シーケンスsq126)。
なお、上記シーケンスにおいて、シーケンスsq4,sq6,sq114〜126は、一例として、上述したように本体側の機能でありシステムプログラム保存領域86に格納された本体機能プログラムにより実現されるものである。一方、シーケンスsq8,sq100〜sq110は、一例として、上述したように、無線通信モジュール38におけるメモリ制御部64に格納されているROM72から読出されたプログラムにより実現されるものである。
この実施例によれば、無線通信により、通信接続が確立する固定端末機器5との間で配信データを自動で取得することができる。
例えば、配信データが店頭で使用することが可能なクーポンを表示するようなものである場合、ゲーム装置1を携帯しているだけで固定端末機器5と無線通信した場合に当該クーポンを表示する配信データを取得することが可能であり、配信データの取得の楽しさを増大させることができる。
また、たとえば、取得したクーポンを表示する配信データを交換データとして上述した交換データ保存領域80のスロットに格納させるようにしても良い。たとえば、当該配信データに上述した交換データとして交換データ保存領域に格納させるアプリケーションを含ませるようにすれば良い。当該処理により、携帯端末間通信において交換データとして他の人に当該配信データを提供することが可能となる。
すなわち、固定端末機器5からのみしか取得できない配信データについても携帯端末間通信を利用して他のユーザに提供することが可能となり、配信データの興趣性をさらに増大させることが可能である。
そして、当該配信データの取得処理が実行された後、再び、無線通信モジュール38における配信相手探索処理が開始される。
例えば、上述したように所定期間経過毎に、自動的に通信設定処理を開始することも可能である。通信設定処理の詳細については図15で説明したので繰り返さない。そして、次に、CPU31(通信指示処理部206)は、通信開始指示を無線通信モジュール38に出力する(ステップS29)。
これにより再び、図17のステップS44で説明したように無線通信モジュール38において携帯端末間通信が実行される(ステップS44)。次に、再び、携帯端末間通信が実行される(ステップS46)。
携帯端末間通信において、所定期間内に通信相手を発見することができなかった場合には、再び、携帯固定端末間通信が実行される。
携帯固定端末間通信の詳細については図86で説明したとおりである。
図86で説明したように携帯固定端末間通信においても、MACアドレスが一致する他の固定端末機器との再度の通信処理を行わないMACアドレスフィルタリング処理が実行される。
すなわち、MACアドレスリストに登録されている一度通信を行った通信相手である固定端末機器(本例においては固定端末機器5)との間では実質的な通信は実行されない。
したがって、本発明の実施の形態に従うゲーム装置においては、通信範囲の固定端末機器を自動的に繰り返して探知し、見つかった固定端末機器を通信候補に設定する。この場合、同じ固定端末機器を何度も探知して見つけてしまう可能性があるが、上述のようなMACアドレスフィルタリング処理により、同じ固定端末機器との間で何度も通信することを防止することができ、効率的かつ効果的なデータ通信を実行することが可能である。
なお、図85における構成においては、図7で説明したようなアプリケーションID判定部230が設けられていない構成について説明したが、携帯固定端末間通信においても、受信した配信無線フレームに格納されているアプリケーションIDが配信データの受信に関する所定条件を満たすか否かを判定するアプリケーションID判定部を設けるようにすることも可能である。具体的には、携帯端末間通信で説明した方式と同様に送信無線フレーム保存領域67に保存されているアプリケーションIDとの判定処理を実行するようにしても良い。例えば、上記したように送信無線フレーム保存領域67に保存されているアプリケーションIDについて、上述した送受信条件データ(センドフラグデータおよびレシーブフラグデータ)が含まれている場合に、データの受信だけをしたい場合が設定されているような場合に、当該アプリケーションIDと、配信無線フレームに含まれているアプリケーションIDとを比較して一致するかどうかの判定処理を実行するようにしても良い。
なお、図83に示す固定端末機器5においては、無線アクセスポイント装置100と、信号発生装置102とをそれぞれ別々のものとして設けた場合について説明したが両者をまとめて1つの装置とすることも可能である。すなわち、無線アクセスポイント装置100が信号発生装置102の機能を含み接続要求信号を出力するようにしても良い。
一方で、図83に示される構成の如く、信号発生装置102を接続要求信号のみを送信する専用の装置として設けることにより、無線アクセスポイント装置100の処理負荷を軽減することにより、例えば、複数のゲーム装置との間での配信データのデータ通信を効率的に実行させるようにしても良い。
また、信号発生装置102として、固定端末機器5と通信するゲーム装置を接続要求信号のみを送信する専用の信号発生装置として用いるようにしても良い。ベンダ情報等、通信相手であるゲーム装置と同様の情報を有しているため簡易に信号発生装置を実現することが可能である。
図92は、本発明の実施の形態に従うゲーム装置1と固定端末機器5#との通信処理の概略について説明する図である。
図92を参照して、固定端末機器5#は、図83で説明した固定端末機器5と比較して、通信モジュール104、CPU106、HDD108をさらに含む点で異なる。その他の構成については、図83で説明したのと同様でるのでその詳細な説明は繰り返さない。
通信モジュール104は、ネットワーク110と接続されるものとする。CPU106は、通信モジュール104、HDD(Hard Disk Drive)108、信号発生装置102とそれぞれ接続され、これらを制御するものとする。本例においては、一例としてCPU106がHDD108に格納されている配信データを通信モジュール104と接続されているネットワーク110を介して他の装置に出力可能であるものとする。
当該構成とすることにより、上記と同様の処理を実行することにより、無線アクセスポイント装置100は、配信サーバ115から配信データを取得することができるとともに、ネットワーク110を介して接続されている通信モジュール104と接続して、例えば、HDD108に格納されている配信データを取得して、無線アクセスポイント装置100からゲーム装置に送信することも可能である。
例えば、固定端末機器5#が複数の店舗等にそれぞれ設けられた場合に、各店舗毎に、HDD108に格納されている配信データをカスタマイズすることにより、カスタマイズされた配信データをゲーム装置に送信することが可能であり、ゲーム装置における配信データの取得の楽しさを増大させることができる。
<MACアドレスの更新>
図93は、本発明の実施の形態に従うMACアドレスの更新について説明する図である。
図93に示されるように、MACアドレスリスト保存領域には、所定のデータ容量が設けられており、当該所定のデータ容量が一杯となり、保存する領域が無い場合には、保存された古いMACアドレスを消去して新しいMACアドレスを保存する。なお、本例においては、MACアドレスが登録した日付けがタイムスタンプとして登録されている場合が示されているが、特に当該方式に限られず、タイムスタンプが無い場合であっても登録した順に配列しておくことにより古いものを消去して新しいものを登録するようにすることが可能である。
次に、携帯端末間通信の送信無線フレームの設定に関して、セキュリティを向上させる方式について説明する。
上述したように装置を識別する情報としてMACアドレスが用いられるが、第三者が当該MACアドレスを偽装して当該装置になりすます可能性も考えられる。
したがって、本例においては、セキュリティを向上させるためにMACアドレスを更新する。
具体的には、CPU31(通信設定処理部204)は、図19で説明したベンダーコードに設定されるローカルアドレスの内容を更新する。
図94は、本発明の実施の形態に従うローカルアドレスの更新のフロー図である。
図94を参照して、まず、本体側のCPU31(通信設定処理部204)は、所定期間が経過したかを判断する(ステップS330)。一例として所定期間としては6時間程度とする。
そして、ステップS330において、CPU31(通信設定処理部204)は、所定期間が経過したと判断された場合(ステップS330においてYES)には、ローカルアドレスの更新設定を指示する(ステップS332)。
そして、無線通信モジュール側のCPU60は、ローカルアドレスの更新設定指示に従って、ローカルアドレスを更新登録する(ステップS334)。すなわち、送信無線フレームで設定するためのローカルアドレスの値を更新してRAM66に登録する。
そして、処理を終了する(リターン)。
当該処理により、各装置におけるローカルアドレスが所定期間経過後に更新されることになる。
したがって、MACアドレスの内容が所定期間経過後に更新されるため一意にMACアドレスが規定されることはない。それゆえ、MACアドレスに従って装置を一意に特定することはできない仕組みとすることによりセキュリティを向上させることが可能となる。
<MACアドレスリストの消去>
上記においては、MACアドレスリスト保存領域88のデータは、ユーザからの所定の操作指示に従ってCPU31(装置識別情報消去処理部218)の指示により消去する、あるいは、所定のデータ容量が一杯となり、保存する領域が無い場合には、保存された古いMACアドレスを消去して新しいMACアドレスを保存するようにして保存領域を確保する等の処理について説明したが、上記MACアドレスの更新と連動させてMACアドレスリストを消去するようにさせることも可能である。
上述したように、各装置におけるローカルアドレスが所定期間経過後に更新される場合、他のゲーム装置のMACアドレスが更新される結果以前に上述した交換データの授受処理を実行した相手と再度、当該処理を実行する可能性がある。
図95は、本発明の実施の形態に従うMACアドレスの更新処理について説明する図である。
図95を参照して、ここでは、自機1と、ゲーム装置3について説明する。
時系列で所定期間毎に自機1のMACアドレスがAD0、AD0a、AD0bと更新される場合が示されている。
また、ゲーム装置3のMACアドレスがAD1、AD1aと更新される場合が示されている。
したがって、同一の装置(ゲーム装置3)について、MACアドレスが更新される毎にデータ通信する可能性があり、MACアドレスリスト保存領域に確保するべきデータ容量が大きくなる可能性がある。
一方で、図95に示されるようにMACアドレスの更新のタイミングは、各装置においてそれぞれ異なる。
自機1のMACアドレスがAD0の場合に、ゲーム装置3と上述した交換データの授受処理を実行したものとすると、ゲーム装置3のMACアドレスAD1が登録されることになる。
自機1のMACアドレスがAD0からAD0aに更新される際(更新1回目)、ゲーム装置3のMACアドレスが更新されているとは限らないため、MACアドレスがAD0の際に登録したゲーム装置3のMACアドレスAD1を消去せずにそのまま残しておくことにより、無駄なデータ通信を回避することが可能である。
そして、さらに所定期間後、自機1のMACアドレスがAD0aからAD0bに更新される際(更新2回目)について考える。この場合には、ゲーム装置3のMACアドレスについても所定期間が経過しているためAD1からAD1aに更新されている。
したがって、前回残しておいたゲーム装置3のMACアドレスAD1を残しておく必要はない。
それゆえ、本例においては、現在使用しているMACアドレスに対応するMACアドレスリストを保持するとともに、1つ前のMACアドレスに対応するMACアドレスリストを保持し、それよりも前すなわち2つ前のMACアドレスに対応するMACアドレスリストについては消去する。
図96は、本発明の実施の形態に従うMACアドレスリスト保存領域88の構成について説明する図である。
本例においては、MACアドレスリスト保存領域の構成として、2つの領域を設けることとする。ここでは、現在について、MACアドレスリスト保存領域88aとし、所定期間後について、MACアドレスリスト保存領域88bとした場合について説明する。
図96(A)を参照して、MACアドレスリスト保存領域88aは、2つのサブリストR1,R2を含む。なお、当該場合において、MACアドレスAD0aを使用したデータ通信を実行しているものとする。
具体的には現在使用しているMACアドレス(AD0a)を使用した交換データの授受処理を実行することにより、他のゲーム装置のMACアドレスを保存する領域(サブリストR1)と、現在使用しているMACアドレスよりも前に使用していたMACアドレス(AD0)を使用した交換データの授受処理を実行することにより他のゲーム装置のMACアドレスを保存する領域(サブリストR2)とを設ける。
図97は、本発明の実施の形態に従うMACアドレスリストの消去を説明するフロー図である。
図97を参照して、まず、本体側のCPU31(装置識別情報消去処理部218)は、所定期間が経過したかを判断する(ステップS340)。一例として所定期間としては6時間程度とする。
そして、ステップS340において、CPU31(装置識別情報消去処理部218)は、所定期間が経過したと判断された場合(ステップS340においてYES)には、MACアドレスリスト保存領域88を確認する(ステップS342)。
そして、次に、MACアドレスリスト保存領域88aに設けられているサブリストR1とサブリストR2のいずれが古いかを判断する(ステップS344)。
そして、サブリストR1が古いと判断された場合には、サブリストR1の内容を削除する(ステップS346)。
一方、サブリストR2が古いと判断された場合には、サブリストR2の内容を削除する(ステップS348)。
そして、削除した領域を新しいMACアドレス用の領域に設定する(ステップS350)。
そして、処理を終了する(エンド)。
図96(B)を参照して、ここでは、所定期間後に、MACアドレスAD0aがMACアドレスAD0bに更新された場合が示されている。
当該場合において、MACアドレスリスト保存領域88bは、2つのサブリストR1,R2のうち、古いサブリストR2(MACアドレスAD0)の内容を削除して、新しいMACアドレス(MACアドレスAD0b)用の領域に設定した場合が示されている。
当該処理により、MACアドレスの更新毎に2つの領域の一方のデータ内容が削除されるためMACアドレスリスト保存領域全体のデータ量を抑えることが可能となる。
また、MACアドレスを更新する際に、現在使用しているMACアドレスに対応するサブリストを保持することが可能であるため保持されたMACアドレスに基づいてMACアドレスフィルタリングを実行することができ、MACアドレスを更新した場合にも効率的なデータ通信を継続することが可能である。
なお、当該場合においても、CPU31(装置識別情報消去処理部218)は、携帯端末間通信のMACアドレスが保存されているMACアドレスリスト保存領域88とともに、携帯固定端末間通信のMACアドレスが保存されているMACアドレスリスト保存領域88#のデータ内容を削除することも可能であるが、固定端末機器のMACアドレスは更新されないため携帯固定端末間通信と同様のタイミングでデータ内容を消去しなくても良い。
したがって、CPU31(装置識別情報消去処理部218)は、携帯端末間通信のMACアドレスが保存されているMACアドレスリスト保存領域88のデータ内容を消去するタイミングと異なるタイミングで、携帯固定端末間通信のMACアドレスが保存されているMACアドレスリスト保存領域88#のデータ内容を消去するようにしても良い。
なお、ここでは、本体部のMACアドレスリスト保存領域88,88#について説明したが、無線通信モジュール38側のMACアドレスリスト保存領域70,70#についても同様に適用可能である。
<その他の形態>
上述の実施の形態においては、本発明に係る情報処理装置の代表例として、ゲーム装置1について例示したが、これに限定されることはない。すなわち、本発明に係るプログラムとして、パーソナルコンピュータで実行可能なアプリケーションを提供してもよい。このとき、本発明に係るプログラムは、パーソナルコンピュータ上で実行される各種アプリケーションの一部の機能として組み込まれてもよい。
なお、この実施例では、携帯型のゲーム装置を用いた情報処理システムについてのみ説明したが、当該携帯型のゲーム装置に変えて、携帯電話機やPDA等の携帯端末でも同様に適用可能である。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。