(第1の実施形態)
以下に図面を参照して、本発明を適用した第1の実施形態にかかる位置情報提供システムについて説明する。本位置情報提供システムでは、携帯型のゲーム装置(本発明の携帯端末装置に対応)にこのゲーム装置が存在する位置(現在位置)を示す情報(位置情報)を提供する。この位置情報の提供は同じ構成の他の携帯型ゲーム装置及びアクセスポイントによって行われる。なお、本実施形態では、他のゲーム装置と本ゲーム装置は同じ構成であるが、若干構成の異なる同種の装置であってもよい。以下に図1及び図2を用いて位置情報提供システムを構成するゲーム装置の構成を説明する。
図1は、第1の実施形態にかかる位置情報提供システムを構成するゲーム装置の概観図である。ゲーム装置は、本発明の携帯端末プログラムを実行することで、本発明の携帯端末装置として機能する。
図1において、ゲーム装置1は、折り畳み型の携帯ゲーム装置であり、開いた状態(開状態)のゲーム装置1を示している。ゲーム装置1は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
ゲーム装置1は、下側ハウジング11および上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に連結されている。図1の例では、下側ハウジング11および上側ハウジング21は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回転可能に連結されている。通常、ユーザは、開状態でゲーム装置1を使用する。また、ユーザは、ゲーム装置1を使用しないときには閉状態としてゲーム装置1を保管する。また、図1に示した例では、ゲーム装置1は、上記閉状態および開状態のみでなく、下側ハウジング11と上側ハウジング21とのなす角度が閉状態と開状態との間の任意の角度において、連結部分に発生する摩擦力などによってその開閉角度を維持することができる。つまり、上側ハウジング21を下側ハウジング11に対して任意の角度で静止させることができる。
下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12が設けられる。下側LCD12は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置1に内蔵されている表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を利用してもよい。また、ゲーム装置1は、任意の解像度の表示装置を利用することができる。なお、詳細は後述するが、下側LCD12は、主に、内側カメラ23または外側カメラ25で撮影されている画像をリアルタイムに表示するために用いられる。
下側ハウジング11には、入力装置として、各操作ボタン14A〜14Kおよびタッチパネル13が設けられる。図1に示されるように、各操作ボタン14A〜14Kのうち、方向入力ボタン14A、操作ボタン14B、操作ボタン14C、操作ボタン14D、操作ボタン14E、電源ボタン14F、スタートボタン14G、およびセレクトボタン14Hは、上側ハウジング21と下側ハウジング11とを折りたたんだときに内側となる、下側ハウジング11の内側主面上に設けられる。方向入力ボタン14Aは、例えば選択操作等に用いられる。各操作ボタン14B〜14Eは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン14Fは、ゲーム装置1の電源をオン/オフするために用いられる。図1に示す例では、方向入力ボタン14Aおよび電源ボタン14Fは、下側ハウジング11の内側主面中央付近に設けられる下側LCD12に対して、左右一方側(図1では左側)の当該主面上に設けられる。また、操作ボタン14B〜14E、スタートボタン14G、およびセレクトボタン14Hは、下側LCD12に対して左右他方側(図1では右側)となる下側ハウジング11の内側主面上に設けられる。方向入力ボタン14A、操作ボタン14B〜14E、スタートボタン14G、およびセレクトボタン14Hは、ゲーム装置1に対する各種操作を行うために用いられる。
なお、図1においては、操作ボタン14I〜14Kの図示を省略している。例えば、Lボタン14Iは、下側ハウジング11の上側面の左端部に設けられ、Rボタン14Jは、下側ハウジング11の上側面の右端部に設けられる。Lボタン14IおよびRボタン14Jは、ゲーム装置1に対して、例えば撮影指示操作(シャッター操作)を行うために用いられる。さらに、音量ボタン14Kは、下側ハウジング11の左側面に設けられる。音量ボタン14Kは、ゲーム装置1が備えるスピーカの音量を調整するために用いられる。
また、ゲーム装置1は、各操作ボタン14A〜14Kとは別の入力装置として、さらにタッチパネル13を備えている。タッチパネル13は、下側LCD12の画面上を覆うように装着されている。なお、本実施形態では、タッチパネル13は、例えば抵抗膜方式のタッチパネルが用いられる。ただし、タッチパネル13は、抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。また、本実施形態では、タッチパネル13として、例えば下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル13の解像度と下側LCD12の解像度とが一致している必要はない。また、下側ハウジング11の右側面には、挿入口(図1に示す破線)が設けられている。挿入口は、タッチパネル13に対する操作を行うために用いられるタッチペン27を収納することができる。なお、タッチパネル13に対する入力は、通常タッチペン27を用いて行われるが、タッチペン27に限らずユーザの指でタッチパネル13を操作することも可能である。
また、下側ハウジング11の右側面には、メモリカード28を収納するための挿入口(図1では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置1とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、例えばSD(Secure Digital)メモリカードであり、コネクタに着脱自在に装着される。メモリカード28は、例えば、ゲーム装置1によって撮影された画像を記憶(保存)したり、他の装置で生成された画像をゲーム装置1に読み込んだりするために用いられる。
さらに、下側ハウジング11の上側面には、カートリッジ29を収納するための挿入口(図1では、一点鎖線で示している)が設けられている。この挿入口の内側にも、ゲーム装置1とカートリッジ29とを電気的に接続するためのコネクタ(図示せず)が設けられる。カートリッジ29は、ゲームプログラム等を記録した記録媒体であり、下側ハウジング11に設けられた挿入口に着脱自在に装着される。
下側ハウジング11と上側ハウジング21との連結部の左側部分には、3つのLED15A〜15Cが取り付けられる。ここで、ゲーム装置1は、他の機器との間で無線通信を行うことが可能であり、第1LED15Aは、ゲーム装置1の電源がオンであるときに点灯する。第2LED15Bは、ゲーム装置1の充電中に点灯する。第3LED15Cは、無線通信が確立している場合に点灯する。したがって、3つのLED15A〜15Cによって、ゲーム装置1の電源のオン/オフ状況、充電状況、および、通信確立状況をユーザに通知することができる。
一方、上側ハウジング21には、上側LCD22が設けられる。上側LCD22は横長形状であり、長辺方向が上側ハウジング21の長辺方向に一致するように配置される。なお、下側LCD12と同様、上側LCD22に代えて、他の任意の方式および任意の解像度の表示装置を利用してもよい。なお、上側LCD22上を覆うように、タッチパネルを設けてもかまわない。例えば、上側LCD22には、ユーザに各操作ボタン14A〜14Kやタッチパネル13の役割を教えるための、操作説明画面が表示される。
また、上側ハウジング21には、2つのカメラ(内側カメラ23および外側カメラ25)が設けられる。図1に示されるように、内側カメラ23は、上側ハウジング21の連結部付近の内側主面に取り付けられる。一方、外側カメラ25は、内側カメラ23が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング21の外側主面(ゲーム装置1が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング21の背面)に取り付けられる。なお、図1においては、外側カメラ25を破線で示している。これによって、内側カメラ23は、上側ハウジング21の内側主面が向く方向を撮影することが可能であり、外側カメラ25は、内側カメラ23の撮影方向の逆方向、すなわち、上側ハウジング21の外側主面が向く方向を撮影することが可能である。このように、本実施形態では、2つの内側カメラ23および外側カメラ25の撮影方向が互いに逆方向となるように設けられる。例えば、ユーザは、ゲーム装置1からユーザの方を見た景色を内側カメラ23で撮影することができるとともに、ゲーム装置1からユーザの反対側の方向を見た景色を外側カメラ25で撮影することができる。
なお、上記連結部付近の内側主面には、音声入力装置としてマイク(図2に示すマイク41)が収納されている。そして、上記連結部付近の内側主面には、マイク41がゲーム装置1外部の音を検知できるように、マイクロフォン用孔16が形成される。マイク41を収納する位置およびマイクロフォン用孔16の位置は必ずしも上記連結部である必要はなく、例えば下側ハウジング11にマイク41を収納し、マイク41を収納位置に対応させて下側ハウジング11にマイクロフォン用孔16を設けるようにしても良い。
また、上側ハウジング21の外側主面には、第4LED26(図1では、破線で示す)が取り付けられる。第4LED26は、外側カメラ25によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、外側カメラ25によって動画が撮影される間点灯する。第4LED26によって、ゲーム装置1による撮影が行われた(行われている)ことを撮影対象者や周囲に通知することができる。
また、上側ハウジング21の内側主面中央付近に設けられる上側LCD22に対して、左右両側の当該主面に音抜き孔24がそれぞれ形成される。音抜き孔24の奥の上側ハウジング21内にはスピーカが収納されている。音抜き孔24は、スピーカからの音をゲーム装置1の外部に放出するための孔である。
以上に説明したように、上側ハウジング21には、画像を撮影するための構成である内側カメラ23および外側カメラ25と、例えば撮影の際に操作説明画面を表示する表示手段である上側LCD22とが設けられる。一方、下側ハウジング11には、ゲーム装置1に対する操作入力を行うための入力装置(タッチパネル13および各ボタン14A〜14K)と、ゲーム画面を表示するための表示手段である下側LCD12とが設けられる。したがって、ゲーム装置1を使用する際には、ユーザは、下側LCD12に表示される撮影画像(カメラによって撮影された画像)を見ながら、下側ハウジング11を把持して入力装置に対する入力を行うことができる。
次に、図2を参照して、ゲーム装置1の内部構成を説明する。なお、図2は、ゲーム装置1の内部構成の一例を示すブロック図である。
図2において、ゲーム装置1は、CPU(Central Processing Unit)31、メインメモリ32、メモリ制御回路33、保存用データメモリ34、プリセットデータ用メモリ35、メモリカードインターフェース(メモリカードI/F)36およびカートリッジI/F43、無線通信モジュール37、リアルタイムクロック(RTC)38、電源回路39、およびインターフェース回路(I/F回路)40等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて、下側ハウジング11(または上側ハウジング21でもよい)内に収納される。
CPU31は、所定のプログラム(本発明の携帯端末プログラムを含む)を実行するための情報処理手段である。本実施形態では、所定のプログラムがゲーム装置1内のメモリ(例えば保存用データメモリ34)やメモリカード28および/または29に記憶されており、CPU31は、当該所定のプログラムを実行することによって、後述する端末ビーコン送信処理、位置情報送信処理、位置情報要求処理及び位置情報特定処理を実行する。なお、CPU31によって実行されるプログラムは、ゲーム装置1内のメモリに予め記憶されていてもよいし、メモリカード28および/またはカートリッジ29から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。例えば、インターネットを経由して所定のサーバからダウンロードすることで取得しても良いし、据置型ゲーム装置と通信を行うことで、当該据置型ゲーム装置に記憶されている所定のプログラムをダウンロードすることで取得しても良い。
CPU31には、メインメモリ32、メモリ制御回路33、およびプリセットデータ用メモリ35が接続される。また、メモリ制御回路33には、保存用データメモリ34が接続される。メインメモリ32は、CPU31のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ32は、上記端末ビーコン送信処理、位置情報送信処理、位置情報要求処理及び位置情報特定処理に用いられる各種データを記憶したり、外部(メモリカード28および29や他の機器等)から取得されるプログラムを記憶したりする。本実施形態では、メインメモリ32として、例えばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ34は、CPU31によって実行されるプログラムや内側カメラ23および外側カメラ25によって撮影された画像のデータ等を記憶するための記憶手段である。保存用データメモリ34は、不揮発性の記憶媒体によって構成されており、例えば本実施例ではNAND型フラッシュメモリで構成される。メモリ制御回路33は、CPU31の指示に従って、保存用データメモリ34に対するデータの読み出しおよび書き込みを制御する回路である。プリセットデータ用メモリ35は、ゲーム装置1において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ35としては、SPI(Serial Peripheral Interface)バスによってCPU31と接続されるフラッシュメモリを用いることができる。
メモリカードI/F36は、CPU31に接続される。メモリカードI/F36は、コネクタに装着されたメモリカード28に対するデータの読み出しおよび書き込みを、CPU31の指示に応じて行う。本実施形態では、外側カメラ25によって撮像された画像データがメモリカード28に書き込まれたり、メモリカード28に記憶された画像データがメモリカード28から読み出されて保存用データメモリ34に記憶されたりする。
カートリッジI/F43はCPU31に接続される。カートリッジI/F43は、コネクタに装着されたカートリッジ29に対するデータの読み出しおよび書き込みをCPU31の指示に従って行う。本実施形態では、ゲーム装置1が実行することが可能なアプリケーションプログラムがカートリッジ29から読み出されてCPU31によって実行されたり、当該アプリケーションプログラムに関するデータ(例えばゲームのセーブデータ等)がカートリッジ29に書き込まれたりする。
無線通信モジュール37は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、無線通信モジュール37は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール37は、例えばデータ伝送距離が10mの範囲内の近距離無線通信を行い、この無線通信で使用する電波は例えば無線局の免許が不要な程の微弱電波である。無線通信モジュール37は、CPU31に接続される。CPU31は、無線通信モジュール37を用いてインターネットを介して、又は介さないで他の機器との間でデータを送受信することができる。例えば、CPU31は、図4を用いて後述するアクセスポイント2と無線通信を行うことでアクセスポイント2の位置情報を取得することができる。位置情報及び位置情報を取得する方法についての詳細は、図4を用いて後述する。
また、CPU31は、無線通信モジュール37を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。なお、以下に、ゲーム装置1を他機と自機とを区別するときには、自機をゲーム装置1Aと記載し、他機をゲーム装置1Bと記載する。例えば、CPU31は、自機(ゲーム装置1A)と他のゲーム装置1Bとが互いに通信可能範囲内(例えば、両機間の距離が10m以内)に位置するときにデータを送受信することができる。また、本実施形態では、CPU31は、通信可能範囲内にある他のゲーム装置1Bとの間で自動的に通信(この通信を以下、「すれ違い通信」と記載する)を行い、自動的にデータを送受信する。本実施形態では、ゲーム装置1Aは、すれ違い通信によってゲーム装置1Bの記憶する位置情報を取得することができ、かつ、すれ違い通信によって自機が記憶する位置情報をゲーム装置1Bに提供することもできる。この位置情報を取得又は提供するための方法についての詳細は図4〜図11Bを用いて後述する。
「すれ違い通信」はゲーム装置1A、1Bがそれぞれ「すれ違い通信モード」に設定されているときに限って行われる。この「すれ違い通信モード」の設定は、例えば、ユーザが各操作ボタン14A〜14Kやタッチパネル13を操作することで行われる。「すれ違い通信モード」が設定されていると、ゲーム装置1Aは、自動的かつ継続的に他のゲーム装置1Bを探索して、探索の結果見つかったゲーム装置1Bとの間で自動的に通信(すれ違い通信)を行い、当該通信が完了した後で自動的に切断を行う。その後、ゲーム装置1Aはさらに他のゲーム装置1Bを探索して、上記と同様な処理を繰り返す。「すれ違い通信モード」が設定されていると、アプリケーションが実行されていない場合、例えば、ゲーム装置1AのCPU31がスリープ状態等の省電力状態である場合であっても、「すれ違い通信」は行われる。
また、CPU31には、RTC38および電源回路39が接続される。RTC38は、時間をカウントしてCPU31に出力する。例えば、CPU31は、RTC38によって計時された時間に基づいて、現在時刻(日付)等を計算することもできる。電源回路39は、ゲーム装置1が有する電源(典型的には電池であり、下側ハウジング11に収納される)から供給される電力を制御し、ゲーム装置1の各部品に電力を供給する。
また、ゲーム装置1は、マイク41およびアンプ42を備えている。マイク41およびアンプ42は、それぞれI/F回路40に接続される。マイク41は、ゲーム装置1に向かって発声されたユーザの音声を検知して、当該音声を示す音声信号をI/F回路40に出力する。アンプ42は、I/F回路40から音声信号を増幅してスピーカ(図示せず)から出力させる。I/F回路40は、CPU31に接続される。
また、タッチパネル13は、I/F回路40に接続される。I/F回路40は、マイク41およびアンプ42(スピーカ)の制御を行う音声制御回路と、タッチパネル13の制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。タッチパネル制御回路は、タッチパネル13からの信号に基づいて所定の形式のタッチ位置データを生成してCPU31に出力する。例えば、タッチ位置データは、タッチパネル13の入力面に対して入力が行われた位置の座標を示すデータである。なお、タッチパネル制御回路は、タッチパネル13からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。CPU31は、I/F回路40を介して、タッチ位置データを取得することにより、タッチパネル13に対して入力が行われた位置を知ることができる。
操作ボタン14は、上記各操作ボタン14A〜14Kから構成され、CPU31に接続される。操作ボタン14からCPU31へは、各操作ボタン14A〜14Kに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU31は、操作ボタン14から操作データを取得することによって、操作ボタン14に対する入力に応じた処理を実行する。
内側カメラ23および外側カメラ25は、それぞれCPU31に接続される。内側カメラ23および外側カメラ25は、CPU31の指示に応じて画像を撮影し、撮影した画像データをCPU31に出力する。本実施形態では、CPU31は、内側カメラ23および外側カメラ25のいずれか一方に対して撮影指示を行い、撮影指示を受けたカメラが画像を撮影して画像データをCPU31に送る。
また、下側LCD12および上側LCD22は、それぞれCPU31に接続される。下側LCD12および上側LCD22は、それぞれCPU31の指示に従って画像を表示する。
次に、図3を参照して、アクセスポイントの内部構成を説明する。なお、図3は、アクセスポイントの内部構成の一例を示すブロック図である。
アクセスポイント2は、操作部50、通信部51、ROM(Read Only Memory)52、HDD(ハードディスクドライブ)53、RAM(Random Access Memory)54及びCPU55を有し、これらの間はバス56で互いに通信可能に接続されている。
操作部50は、本アクセスポイント2の管理者からの操作を受け付ける機能を有する。通信部51は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。ROM52には、このアクセスポイント2本体を起動するとともに基本的な機能を実現するためのシステムプログラムが記憶されている。HDD53には、本アクセスポイント2にゲーム装置1との間の通信を行わせる通信プログラムを含むプログラム、及びこのプログラムの実行に必要なデータが記憶されている。HDD53には、このデータとして、アクセスポイント2の現在位置を示す位置情報が本アクセスポイント2の管理者等によって例えばアクセスポイント2の設置時に設定されている。なお、HDD53は本アクセスポイント2に内蔵されている必要はなく、別体として外部から接続されていてもよい。RAM54は、CPU55の作業領域として機能する。RAM54は図7Fを用いて後述するAPビーコンフレームD6を一時的に記憶する。
CPU55は、通信プログラムを実行することでゲーム装置1との間で通信部51を用いて無線通信を行い、これによって、自機の位置情報をゲーム装置1に提供する。具体的には、CPU55は、自機に記憶する位置情報そのものをゲーム装置1に送信するのではなく、ゲーム装置1に予め記憶される自機の位置情報を指定するための情報(図7Fを用いて後述するAPビーコンフレームD6)をゲーム装置1に送信することで、このゲーム装置1に位置情報を提供する。すなわち、ゲーム装置1は、複数のアクセスポイント2の位置情報を登録したテーブルを記憶し、登録されている位置情報のうちの1つをアクセスポイント2から受信した情報で検索して取得することでアクセスポイント2から位置情報の提供を受ける。
以下、第1の実施形態にかかる位置情報提供システムの構成を説明する。
図4は、第1の実施形態にかかる位置情報提供システムの構成を示す図である。位置情報提供システム100は、複数のゲーム装置1と複数のアクセスポイント2とを有し、ゲーム装置1とアクセスポイント2は、上述したように互いにIEEE802.11の無線LAN規格に則った無線通信を行うことができる。複数のゲーム装置1は、上述したように各装置の間で所定の通信方式で無線通信を行うことができる。同図では、2つのゲーム装置1(1A、1B)のうちゲーム装置1Aがアクセスポイント2から位置情報の提供を受ける様子を示している。なお、本実施形態では、位置情報提供システム100は2つのアクセスポイント2を備えるが必ずしもこの構成に限定されず、単数のアクセスポイント2を備える構成であってもよく、3以上のアクセスポイント2を備える構成であってもよい。また、位置情報提供システム100を構成するゲーム装置1の個数は3以上であってもよい。
位置情報提供システム100では、アクセスポイント2がゲーム装置1Aに対して位置情報を提供する。この位置情報は、アクセスポイント2の設定位置を示す情報であり、ゲーム装置1の大まかな現在位置を示す情報として利用される。位置情報は、例えば、アクセスポイント2の緯度及び経度を示す情報、アクセスポイント2の住所を示す情報、アクセスポイント2の位置を中心とした周辺地図の画像データ等があるが、列挙したものに限定されず、アクセスポイント2の位置を示す情報であれば如何なる情報であってもよい。ゲーム装置1は、電波到達範囲内(例えば、50〜100mの範囲内)にあるアクセスポイント2、すなわち最寄りのアクセスポイント2から位置情報を示す情報を受信し、この情報を用いて最寄りのアクセスポイント2の現在位置を指定する位置情報を自機の現在位置を示す情報として取得することができる。
なお、詳しくは後述するが、本実施形態では、ゲーム装置1Aが、複数のアクセスポイント2の識別情報毎の位置情報を予め記憶しており、アクセスポイント2から識別情報を受信することで位置情報を特定することができる。
同図では、ゲーム装置1Aは、2つのアクセスポイント2(2A、2B)の電波到達範囲内に位置し、2つのアクセスポイント2(2A、2B)と無線通信を行うことで情報の提供を受けることができる。アクセスポイント2A、2Bの設定位置は、それぞれ異なっており、アクセスポイント2A、2Bから提供される位置情報もそれぞれ異なった位置情報である。このため、ゲーム装置1Aは、異なった2つの位置情報を取得することが可能になり、これらの異なった位置情報のうち何れかの位置情報を選択して、自機の位置を示す情報として特定する必要がある。
本実施形態では、ゲーム装置1に対して、複数のアクセスポイント2の種別毎に信頼性の高さでランクが設定され、ゲーム装置1は、このランクが高いアクセスポイント2からの位置情報を優先して自機の位置を示す情報として特定する。具体的には、複数のアクセスポイント2のうち、本システム100のオペレータ等によって、正確性が高い位置情報を記憶していると判断されたアクセスポイント2に対して、「高信頼性アクセスポイント」のランクが設定される。また、記憶されている位置情報の正確性が低いと判断されたアクセスポイント2に対して、「低信頼性アクセスポイント」のランクが設定される。同図では、2つのアクセスポイント2(2A、2B)のうち、アクセスポイント2Aには「高信頼性アクセスポイント」のランクが設定されており、アクセスポイント2Bには「低信頼性アクセスポイント」のランクが設定されている。以下、両アクセスポイント2A、2Bをそれぞれ、「高信頼性アクセスポイント2A」、「低信頼性アクセスポイント2B」と記載する。
オペレータがアクセスポイント2の信頼性のランク(信頼性ランク)を判断するための要素としては、例えば、アクセスポイント2に記憶される位置情報のユーザによる書き換えの自由度がある。具体的には、アクセスポイント2がサービスを提供する店舗に固定的に配置されるものであれば、不正確な現在位置を示す位置情報が記憶されている可能性が低い。このようなアクセスポイント2の信頼性ランクは、「高信頼性アクセスポイント」とされる。対して、アクセスポイント2がサービスの提供を受ける一般ユーザが自ら容易に配置可能なものであれば、一般ユーザによって容易に位置情報を書き換えられる。このため、アクセスポイント2が記憶する位置情報が不正確な現在位置を示す可能性も高い。このようなアクセスポイント2の信頼性ランクは、「低信頼性アクセスポイント」とされる。
なお、上述した、アクセスポイント2の信頼性のランクを判断するための要素はあくまで一例であり、他の要素が判断要素とされてもよい。また、サービスを提供する店舗に固定的に配置されるアクセスポイント2の信頼性ランクを「高信頼性アクセスポイント」とし、サービスの提供を受ける一般ユーザが自ら容易に配置可能なアクセスポイント2の信頼性ランクを「低信頼性アクセスポイント」として説明したことも、あくまで一例であり、それぞれ逆の信頼性のランクが設定されていてもよい。
次に、本実施形態にかかる位置情報提供システム100の特徴を説明する。位置情報提供システム100は、ゲーム装置1Aがアクセスポイント2から位置情報の提供を受けることができるだけでなく、他の同種のゲーム装置1Bから「すれ違い通信」によって位置情報の提供を受けることができる。
アクセスポイント2から位置情報の提供を受けるためには、ゲーム装置1Aはアクセスポイント2の電波到達範囲内に位置しなければならない。しかしながら、位置情報提供システム100では、アクセスポイント2の電波到達範囲外であっても、ゲーム装置1Aは「すれ違い通信」によって他のゲーム装置1Bから位置情報の提供を受けることができる。
この「すれ違い通信」によって取得する位置情報は、他のゲーム装置1Bが上述したような方法でアクセスポイント2から取得し、自機の位置を示す情報として特定した位置情報(以下、「特定位置情報」とする)である。このため、アクセスポイント2の配置位置に依拠せずに、ゲーム装置1Aは位置情報を取得することができる。
また、ゲーム装置1Aもゲーム装置1Bに対して、自機が記憶する位置情報を配信することができる。本実施形態では、ゲーム装置1A、1Bは、アクセスポイント2から位置情報を取得した時からの経過時間を示す情報(以下、「経過時間情報」とする)を特定位置情報に対応づけて記憶する。そして、この経過時間情報を参照して、ゲーム装置1Bの記憶する特定位置情報の方がゲーム装置1Aの記憶する特定位置情報よりもアクセスポイント2から取得してから新しければ、ゲーム装置1Aはゲーム装置1Bから特定位置情報の提供を受ける側になる。一方、ゲーム装置1Aの記憶する特定位置情報の方がゲーム装置1Bの記憶する特定位置情報よりもアクセスポイント2から取得してから新しければ、ゲーム装置1Aがゲーム装置1Bに位置情報の提供を行う側となる。
同図の例では、ゲーム装置1Aが位置情報の提供を受ける側であり、ゲーム装置1Bが情報の提供を行う側である。
また、本実施形態にかかる位置情報提供システム100は、上述したように複数のゲーム装置1間で位置情報を提供することができることが特徴であるが、ゲーム装置1Aが提供を受けてから有効期限の過ぎた位置情報を無効化(破棄)するための処理を実行することも特徴である。ゲーム装置1Aはユーザに携帯されて移動するため、取得してから長時間経過した位置情報はゲーム装置1Aの現在位置を示さない可能性が高い。従って、有効期限の過ぎた位置情報を破棄することで、ゲーム装置1Aの現在位置を示さない位置情報を自機の現在位置を示す情報として特定してしまうことを防止している。この処理の詳細については、図13を用いて後述する。
以下に、ゲーム装置1Bがゲーム装置1Aに対して位置情報の提供を行うための通信を説明する。図5は、ゲーム装置1Bがゲーム装置1Aに対して位置情報の提供を行うための通信の一例を示す通信シーケンス図である。
まず、ゲーム装置1Bは、所定の周期毎に(例えば、3sec毎に)、自機の存在とその内容を示す端末ビーコンフレームを所定の周期毎にブロードキャストで送信する(同図の(21)で示す)。この端末ビーコンフレームには、上述した経過時間情報が含まれる。ゲーム装置1Aは、ゲーム装置1Bの電波到達範囲内に位置するため、チャンネルスキャン処理を行うことで端末ビーコンフレームを受信する。
ゲーム装置1Aは、端末ビーコンフレームを受信すると、自機の記憶する特定位置情報の経過時間情報と端末ビーコンフレームに含まれる経過時間情報とを比較する。本例では、ゲーム装置1Aは、この比較によって、自機の記憶する特定位置情報よりも相手方の特定位置情報の方がアクセスポイント2から取得してから新しいと判断する。ゲーム装置1Aは、ゲーム装置1Bとの間で通信を確立するために、ゲーム装置1Bに対して通信要求を行う(同図の(22)で示す)。ゲーム装置1Bは通信要求を受信するとゲーム装置1Aとの間で通信を確立するために通信許可を行う(同図の(23)で示す)。
ゲーム装置1Aは、通信の確立したゲーム装置1Bに対して位置情報の提供を要求する(同図の(24)で示す)。ゲーム装置1Bはこの要求に応えて位置情報をゲーム装置1Aに送信する(同図の(25)で示す)。
上述した、通信方法はあくまで一例であり、ゲーム装置1Bがゲーム装置1Aに対して位置情報の提供を行うことが可能であれば如何なる通信方法を採用してもよい。例えば、端末ビーコンフレームに位置情報を含めてブロードキャストで配信することで、ゲーム装置1Aに位置情報を提供してもよい。この方法によれば、位置情報の提供のために必要なデータの送受信に要する時間を短縮することができる。また、端末ビーコンフレームに経過時間情報を含めずに、ゲーム装置1A、1B間の通信が確立した後に、ゲーム装置1Bがゲーム装置1Aに対して経過時間情報を送信してもよい。この方法によれば、より確実にゲーム装置1Aに対して位置情報を提供することができる。また、ゲーム装置1Aが端末ビーコンフレームをブロードキャストで所定の周期毎に送信し、このフレームを受信したゲーム装置1Bから位置情報の提供を受けるようにしてもよい。
なお、図5で示す通信で送受信されるフレームについての詳細は、図7A〜図7Fを用いて後述する。
次に、図6を参照して、ゲーム装置1がメインメモリ32に記憶する各種プログラムや各種データについて説明する。
図6は、ゲーム装置1が本発明の携帯端末プログラムを実行することに応じて記憶されるプログラムや各種データの一例を示す図である。
メインメモリ32は、プログラムを記憶するプログラム記憶領域32aと、データを記憶するデータ記憶領域32bを有する。
プログラム記憶領域32aは、携帯端末プログラムP1と、ゲームプログラムP2等を記憶する。携帯端末プログラムP1は、他のゲーム装置1Bに対して位置情報を送信するための通信処理(端末ビーコン送信処理及び位置情報送信処理)、他のゲーム装置1Bから位置情報を受信するための通信処理(位置情報要求処理)をゲーム装置1Aに実行させるためのプログラムを含む。また、携帯端末プログラムP1は、取得した位置情報から、ゲーム装置1Aの現在位置を示す特定位置情報を決定する処理(位置情報特定処理)をゲーム装置1Aに実行させるためのプログラムを含む。なお、端末ビーコン送信処理、位置情報送信処理、位置情報要求処理及び位置情報特定処理の詳細については、図9等を用いて後述する。
ゲームプログラムP2は、ゲーム装置1で実行するゲーム処理全体を定義するプログラムである。ゲームプログラムP2を実行することで、ゲーム装置1は自機のユーザにゲームを提供することができる。本実施形態では、このゲーム内容に特定位置情報の内容を反映させることができる。例えば、特定位置情報が特定の地域内(例えば、京都、大阪等の都道府県内)の位置を示すときには、その地域の特産物のアイテムがゲーム空間内でプレイヤキャラクタに提供されたり、ゲーム空間にはその地域を示す背景オブジェクトが配置されたりする。なお、ゲーム内容に特定位置情報の内容を反映される構成に限定されず、例えば、単に位置情報の示す位置(例えば、緯度及び経度等)がユーザの操作に応じて表示される構成等であってもよい。
なお、携帯端末プログラムP1は、保存用データメモリ34に記憶されたプログラムから適宜読み出されて記憶される。保存用データメモリ34に記憶されたプログラムは、図略のサーバからダウンロードされたり、メモリカード28から読み出されたりして予め記憶される。また、ゲームプログラムP2は、例えば、ゲームの進行に応じて、メモリカード28から適宜読み出されて記憶される。もっとも、本発明はこの構成に限定されない。例えば、携帯端末プログラムP1も、ゲームプログラムP2と同様に、メモリカード28から適宜読み出されて記憶されてもよい。この場合に、携帯端末プログラムP1はゲームプログラムP2に含まれていてもよい。また、携帯端末プログラムP1やゲームプログラムP2は、図略のサーバや他のゲーム装置1Bから一括してダウンロードされるか、ゲームの進行に応じて適宜ダウンロードされることで記憶されてもよい。
データ記憶領域32bは、ゲーム装置1Aがゲーム装置1Bに対して位置情報を提供する側である場合に送信フレームを記憶する送信フレーム記憶領域321、この場合に受信フレームを記憶する受信フレーム記憶領域322を有する。また、データ記憶領域32bは、ゲーム装置1Aがゲーム装置1Bから位置情報の提供を受ける側である場合に送信フレームを記憶する送信フレーム記憶領域323、この場合に受信フレームを記憶する受信フレーム記憶領域324を有する。また、データ記憶領域32bは、アクセスポイント2からの受信フレームを記憶する受信フレーム記憶領域325とその他のデータ記憶領域326を有する。
送信フレーム記憶領域321には、端末ビーコンフレームD1、通信許可フレームD2及び位置情報フレームD3等が一時的に記憶される。これらのフレームD1〜D3は、端末ビーコン送信処理及び位置情報送信処理の実行によってゲーム装置1Aが他のゲーム装置1Bに送信するフレームである。以下に、図7A〜図7Cを参照して、端末ビーコンフレームD1、通信許可フレームD2及び位置情報フレームD3のフレーム構成の一例を説明する。
図7Aは、端末ビーコンフレームD1のフレーム構成の一例を示す図である。端末ビーコンフレームD1は、図5の(21)で示すタイミングに送信されるフレームである。もっとも、図5の例ではゲーム装置1Bが端末ビーコン送信処理及び位置情報送信処理を実行し、ゲーム装置1Aが位置情報要求処理を実行することで、ゲーム装置1Bがゲーム装置1Aに対して位置情報を配信する様子を示しているが、ここでは、逆に、ゲーム装置1Aが端末ビーコン送信処理及び位置情報送信処理を実行し、ゲーム装置1Bが位置情報要求処理を実行することで、ゲーム装置1Aがゲーム装置1Bに対して位置情報を配信する場合を想定している。
ビーコンフレームD1は、フレームタイプF_TYP、送信元MAC(Media Access Control)アドレス及び経過時間情報を含む。フレームタイプF_TYPは、当該フレームの種別を示しており、この場合には端末ビーコンフレームであることを示す情報が記述される。送信元MACアドレスは自機のMACアドレスを示す。経過時間情報は、自機の特定位置情報を取得してからの経過時間を示す情報である。本実施形態では、経過時間情報はアクセスポイント2から取得した情報に基づいて特定位置情報を取得した時刻を示す情報(取得時間情報)や、特定位置情報の残存有効時間を示す情報(有効時間情報:カウンタ値)を含むが、取得時間と有効時間情報の何れか1のみを含む構成であってもよい。
図7Bは、通信許可フレームD2のフレーム構成の一例を示す図である。通信許可フレームD2は、図5の(23)で示すタイミングに送信されるフレームである。もっとも、上述したように、図5の例では位置情報の提供側と受信側が本例とは逆である。
通信許可フレームD2は、フレームタイプF_TYP、宛先MACアドレス、送信元MACアドレス、結果情報及び通信情報を含む。フレームタイプF_TYPには、この場合には通信許可フレームを示す情報が記述される。宛先MACアドレスは、通信の許可又は不許可が通知されるゲーム装置1BのMACアドレスを示す。送信元MACアドレスは自機のMACアドレスを示す。結果情報は、他のゲーム装置1Bとゲーム装置1Aとの間の通信の許可又は不許可を示す。通信情報は、他のゲーム装置1Aとの間の通信を確立するために必要になる情報であり、例えば、通信チャンネルを示す情報等が含まれる。
図7Cは、位置情報フレームD3のフレーム構成の一例を示す図である。位置情報フレームD3は、図5の(25)で示すタイミングに送信されるフレームである。もっとも、上述したように、図5の例では、位置情報の提供側と受信側が本例とは逆である。
位置情報フレームD3は、フレームタイプF_TYP、宛先MACアドレス、送信元MACアドレス、位置情報、アクセスポイント識別情報(以下、「AP識別情報」とする)及び経過時間情報等を含む。フレームタイプF_TYPは、この場合には、当該フレームが位置情報フレームであることを示す情報が記述される。宛先MACアドレスは、位置情報を送信する宛先となるゲーム装置1BのMACアドレスを示す。送信元MACアドレスは、自機のMACアドレスを示す。位置情報はゲーム装置1Aが記憶する特定位置情報である。AP識別情報は、この特定位置情報の提供源であるアクセスポイント2の信頼性ランク(「高信頼性アクセスポイント」か、「低信頼性アクセスポイント」か)を示す情報である。経過時間情報は、上述したように、自機の特定位置情報を取得してからの経過時間を示す情報である。
図6に戻って、受信フレーム記憶領域322には、通信要求フレームD4及び位置情報要求フレームD5が一時的に記憶される。これらのフレームD4、D5は、端末ビーコン送信処理及び位置情報送信処理の実行によって、ゲーム装置1Aが他のゲーム装置1Bから受信するフレームである。以下に、図7D及び図7Eを参照して、通信要求フレームD4及び位置情報要求フレームD5のフレーム構成の一例を説明する。
図7Dは、通信要求フレームD4のフレーム構成の一例を示す図である。通信要求フレームD4は、図5の(22)で示すタイミングに受信されるフレームである。もっとも、上述したように、図5の例では、位置情報の提供側と受信側が本例とは逆である。
通信要求フレームD4は、フレームタイプF_TYP、宛先MACアドレス及び送信元MACアドレス等を含む。フレームタイプF_TYPには、この場合には通信要求フレームを示す情報が記述される。宛先MACアドレスは、通信が要求されるゲーム装置1のMACアドレスを示し、この場合には自機(ゲーム装置1A)のMACアドレスを示す。送信元MACアドレスは、通信を要求するゲーム装置1のMACアドレスを示し、この場合にはゲーム装置1BのMACアドレスを示す。
図7Eは、位置情報要求フレームD5のフレーム構成の一例を示す図である。位置情報要求フレームD5は、図5の(24)で示すタイミングに受信されるフレームである。もっとも、上述したように、図5の例では、位置情報の提供側と受信側が本例とは逆である。
位置情報要求フレームD5は、フレームタイプF_TYP、宛先MACアドレス及び送信元MACアドレス等を含む。フレームタイプF_TYPには、この場合には位置情報要求フレームを示す情報が記述される。宛先MACアドレスは、位置情報の配信が要求されるゲーム装置1のMACアドレスを示し、この場合には自機(ゲーム装置1A)のMACアドレスを示す。送信元MACアドレスは、位置情報を要求するゲーム装置1のMACアドレスを示し、この場合にはゲーム装置1BのMACアドレスを示す。
図6に戻って、送信フレーム記憶領域323及び受信フレーム記憶領域324に記憶されるフレームを説明する。送信フレーム記憶領域323は、ゲーム装置1Aが位置情報要求処理の実行によって他のゲーム装置1Bに送信するためのフレームを一時的に記憶するための領域である。受信フレーム記憶領域324は、位置情報要求処理を実行によって他のゲーム装置1Bから受信したフレームを一時的に記憶するための領域である。
上述したように、ゲーム装置1Aが他のゲーム装置1Bに対して自機の記憶する特定位置情報を送信する側である場合には、送信フレーム記憶領域321にはフレームD1〜D3が記憶され、受信フレーム記憶領域322にはフレームD4、D5が記憶される。これに対して、ゲーム装置1Aが、他のゲーム装置1Bから自機の記憶する特定位置情報を受信する側である場合には、上述した場合とは逆に、送信フレーム記憶領域323には、通信要求フレームD4及び位置情報要求フレームD5が記憶される。そして、受信記憶領域324には、端末ビーコンフレームD1、通信許可フレームD2及び位置情報フレームD3が記憶される。
また、受信フレーム記憶領域325には、アクセスポイント2から受信したAPビーコンフレームD6が記憶される。
図7Fは、APビーコンフレームD6のフレーム構成の一例を示す図である。APビーコンフレームD6は、フレームタイプF_TYP、BSSID(Basic Service Set ID)、ESSID(Extended Service ID)、セキュリティ情報、RSSI(Received Signal Strength Indication)及びチャンネル情報等を有する。フレームタイプF_TYPには、この場合にはAPビーコンフレームを示す情報が記述される。BSSIDは、アクセスポイント2を識別するための固有の識別情報である。ESSIDは、ネットワークを識別するための固有の識別情報であり、この場合には、アクセスポイント2及びゲーム装置1Aで構成される無線LANに固有の識別情報が記述される。セキュリティ情報は、アクセスポイント2及びゲーム装置1A間の通信のセキュリティを担保するための情報である。RSSIは、受信する信号の強度をゲーム装置1が測定するための情報である。チャンネル情報は、アクセスポイント2及びゲーム装置1A間の通信に使用するチャンネルを示す情報である。
上述のように、APビーコンフレームD6は位置情報を含まず、ゲーム装置1Aは単にAPビーコンフレームD6を受信するだけでは位置情報を取得することができない。しかしながら、APビーコンフレームD6は、自機に固有の識別情報であるBSSIDを含むため、ゲーム装置1Aは、APビーコンフレームD6に含まれるBSSIDで後述する位置情報テーブルT1を参照することで位置情報を取得することができる。この位置情報を取得する処理についての詳細は後述する。なお、APビーコンフレームD6の構成は、上述した例に限定されず、位置情報を含んでいてもよい。
また、APビーコンフレームD6は、ネットワークに固有の識別情報であるESSIDを含み、ゲーム装置1AがこのESSIDで後述するAP識別情報テーブルT2を参照することでアクセスポイント2のAP識別情報を取得することができる。このAP識別情報を取得する処理についての詳細は後述する。AP識別情報は、上述したように、アクセスポイント2の信頼性ランク(高信頼性アクセスポイント、低信頼性アクセスポイント)を示す情報である。
図6に戻って、データ記憶領域326に記憶されるデータを説明する。データ記憶領域326には、位置データD7、特定位置データD8、位置情報テーブルT1及びAP識別情報テーブルT2等が記憶される。
位置データD7は、他のゲーム装置1Bやアクセスポイント2から提供された位置情報を含むように生成して記憶される。なお、他のゲーム装置1Bやアクセスポイントから複数の位置情報が提供された場合には、複数の位置データD7が生成されて記憶される場合がある。データ記憶領域326には、所定数だけ位置データD7を記憶することができる。以下に図8A、図8Bを用いて、位置データD7の内容を説明する。
図8Aは、アクセスポイント2から提供された位置情報を含む位置データD7を示す図である。以下、アクセスポイント2から受信した位置データD7をAP位置データD7aと記載する。AP位置データD7aは、位置情報、AP識別情報及び経過時間情報(有効時間情報と取得時間情報)を有する。この場合の位置情報は、受信したAPビーコンフレームD6のBSSIDで後述の位置情報テーブルT1を検索して取得された位置情報である。AP識別情報は、受信したAPビーコンフレームD6のESSIDで後述のAP識別情報テーブルT2を検索して取得されたAP識別情報である。AP位置データD7aの生成方法についての詳細は、図12を用いて後述する。なお、位置情報、AP識別情報、経過時間情報、有効時間情報及び取得時間情報の意義については、上述したものと同様である。
図8Bは、他のゲーム装置1Bから提供された位置情報を含む位置データD7を示す図である。以下、他のゲーム装置1Bから提供された位置情報を含む位置データD7を端末位置データD7bと記載する。端末位置データD7bは、位置情報、AP識別情報、経過時間情報及び他ゲーム装置由来情報を有する。端末位置データD7bに含まれる位置情報、AP識別情報及び経過時間情報は、他のゲーム装置1Bから受信した位置情報フレームに含まれた情報と同一のものである。なお、位置情報、AP識別情報、経過時間情報、有効時間情報及び取得時間情報の意義については、上述したものと同様である。
他ゲーム装置由来情報は、他のゲーム装置1Bから受信した位置情報であることを示す情報である。この情報が位置データD7に含まれているかどうかで、ゲーム装置1Aは位置データD7がアクセスポイント2から提供された位置情報を含むAP位置データD7aではなく、他のゲーム装置1Bから提供された位置情報を含む端末位置データD7bであると判別することができる。端末位置データD7bの生成方法についての詳細は、図12を用いて後述する。
特定位置データD8は、上述した位置データD7の中から、自機の現在位置を示す位置情報(特定位置情報)を含む位置データD7であると特定されたデータである。1又は複数の位置データD7の中から特定位置データD8を決定するための位置情報特定処理については詳しくは図12及び図13を用いて後述する。なお、特定位置データD8は一つだけ記憶可能になっているが、幾つかの過去の特定位置データD8をログとして記憶しておいてもよい。
図6に戻って、位置情報テーブルT1及びAP識別情報テーブルT2を説明する。図8Cは位置情報テーブルT1の一例を示す図である。位置情報テーブルT1は、図8Cで示すように、複数種類のBSSIDに対応付けて複数種類の位置情報が登録されたテーブルである。位置情報テーブルT1には、BSSIDで識別されるアクセスポイント2の現在位置を示す位置情報がこのBSSIDに対応付けて登録される。従って、BSSIDで位置情報テーブルT1を検索することで、このBSSIDに対応するアクセスポイント2の位置情報を取得することができる。
なお、位置情報テーブルT1に登録される位置情報は、アクセスポイント2に記憶される位置情報と同一である。この位置情報は、例えば、本位置情報提供システム100のオペレータによって予め登録されるか、ゲーム装置1Aが予めアクセスポイント2と通信を行うことによって自動的に登録される。
また、図8DはAP識別情報テーブルT2の一例を示す図である。AP識別情報テーブルT2は、図8Dで示すように、複数種類のESSIDに対応付けて複数種類のAP情報が登録されたテーブルである。ESSIDは、上述したように、ネットワークに固有の識別情報である。AP識別情報テーブルT2には、ESSIDに対応する信頼性ランクを示すAP識別情報が登録される。従って、ESSIDでAP識別情報テーブルT2を検索することで、このESSIDに対応するAP識別情報を取得することができる。
なお、AP識別情報テーブルT2に登録される位置情報は、例えば、本位置情報提供システム100のオペレータによって予め登録される。また、テーブルT1、T2は、保存用データメモリ34から読み出されて記憶される。保存用データメモリ34には、図略のサーバからダウンロードされたり、メモリカード28から読み出されたりすることでテーブルT1、T2が記憶される。
以下に、図8C、図8Dを用いてゲーム装置1がアクセスポイント2から位置情報の提供を受けるための処理を説明する。アクセスポイント2は、所定の周期毎にAPビーコンフレームD6をブロードキャストで送信する。ゲーム装置1は、APビーコンフレームD6の電波到達範囲内にいる場合には、APビーコンフレームD6を受信することができる。ゲーム装置1は、APビーコンフレームD6に含まれるESSIDを参照して、自機に登録されたESSIDと同一であれば、このAPビーコンフレームD6の指定する位置情報を取得する。
具体的には、ゲーム装置1は、受信したAPビーコンフレームD6に含まれるBSSIDで位置情報テーブルT1を検索し、このBSSIDに対応する位置情報を取得することができる。この位置情報はAPビーコンフレームD6の送信元であるアクセスポイント2の位置を示す情報となる。そして、ゲーム装置1は、受信したAPビーコンフレームD6に含まれるESSIDでAP情報テーブルT2を検索し、このESSIDに対応するAP識別情報を取得する。このAP識別情報は、位置情報テーブルT1から取得した位置情報の信頼性のランクを示す情報となる。
なお、本実施形態では、APビーコンフレームD6に位置情報及びAP識別情報を含めず、ゲーム装置1が記憶するテーブルT1、T2を使用して位置情報を取得する構成であるが、この構成に限定されない。例えば、アクセスポイント2が、APビーコンフレームD6に位置情報やAP識別情報を含めてゲーム装置1Aに対して送信することで、ゲーム装置1Aに位置情報及びAP識別情報を提供する構成を採用してもよい。この場合には、ゲーム装置1がテーブルT1、T2を記憶しない。
なお、ゲーム装置1が、「AP通信モード」に設定されている場合に限り、アクセスポイント2からAPビーコンフレームを受信するための通信を行う。「AP通信モード」が設定されていると、ゲーム装置1は、自動的かつ継続的にアクセスポイント2を探索して、探索の結果見つかったアクセスポイント2との間で自動的に通信を行い、当該通信が完了した後で自動的に切断を行う。その後、ゲーム装置1はさらに他のアクセスポイント2を探索して、上記と同様な処理を繰り返す。「AP通信モード」が設定されていると、アプリケーションが実行されていない場合、例えば、ゲーム装置1のCPU31がスリープ状態等の省電力状態である場合であっても、上述した通信は行われる。もっとも、ゲーム装置1が「AP通信モード」に設定されていなくてもAPビーコンフレームを受信することができるようにしてもよい。
次に、図7A〜図7F、図8A〜図8D、図9〜図13を用いて、他のゲーム装置1Bからゲーム装置1Aに位置情報を提供するための処理と、提供された位置情報から自機の現在位置を示す位置情報を特定するための処理(位置情報特定処理)を説明する。
図9は、他のゲーム装置1Bからゲーム装置1Aに位置情報を提供するための処理の一例を示すフローチャートである。本処理は、ゲーム装置1A、1BのCPU31によって実行される。以下に、ゲーム装置1AのCPU31を「CPU31A」と記載し、ゲーム装置1BのCPU31を「CPU31B」と記載する。
まず、ゲーム装置1BのCPU31Bは、端末ビーコン送信処理を実行することで端末ビーコンフレームD1をブロードキャストで送信する(S1、同図の(21))。この端末ビーコンフレームD1には、ゲーム装置1Bが記憶する位置情報の経過時間情報が含まれる。
端末ビーコンフレームD1を受信したゲーム装置1AのCPU31Aは、位置情報要求処理を実行する(S2)。この位置情報要求処理では、受信した端末ビーコンフレームD1の経過時間情報と自機(ゲーム装置1A)の特定位置情報の経過時間情報とが比較され、他のゲーム装置1Bの記憶する位置情報と自機の記憶する位置情報の何れがアクセスポイント2から受信してから新しいかが判断される。そして、他のゲーム装置1Bの記憶する位置情報が新しいと判断した場合に、ゲーム装置1AのCPU31Aは他のゲーム装置1Bとの間に通信を確立するために通信要求を行う(同図の(22))。この通信要求によって通信が確立した後に、ゲーム装置1AのCPU31Aはゲーム装置1Bに対して位置情報を要求する(同図の(24))。
ゲーム装置1BのCPU31Bは、ゲーム装置1Aから通信要求があった場合に位置情報送信処理を行う(S3)。位置情報送信処理では、ゲーム装置1BのCPU31Bはゲーム装置1Aの通信要求に応えて通信許可(又は不許可)をゲーム装置1Aに通知する(同図の(23))。上述したように、この通知を受けたゲーム装置1Aからは位置情報が要求されるが、ゲーム装置1BのCPU31Bはこの位置情報の要求に応えて位置情報をゲーム装置1Aに送信する(同図の(25))。
ゲーム装置1AのCPU31Aは、位置情報特定処理を実行することで、ゲーム装置1Bから提供された位置情報やアクセスポイント2から提供された位置情報から、自機の現在位置を示す位置情報を特定する(S4)。その後、本処理は終了する。
ここで、図9のフローチャートにおいて、端末ビーコン送信処理(S1)および位置情報特定処理(S4)は、所定周期毎に実行される処理であり、位置情報送信処理(S3)および位置情報要求処理(S2)については、必要に応じて実行される処理である。図9のフローチャートでは、説明の便宜上、ゲーム装置1Bが端末ビーコン送信処理(S1)を実行した後に位置情報送信処理(S3)を実行し、更に、位置情報特定処理(S4)の前に位置情報要求処理(S2)が実行されている例を示しているが、必ずしも、当該位置情報送信処理(S3)が端末ビーコン送信処理(S1)の実行後に常に実行される必要はない。同様に、位置情報要求処理(S2)についても、位置情報特定処理(S4)の実行前に必ず実行される必要はない。位置情報送信処理(S3)は、ゲーム装置1Aからの通信要求があった場合にのみ実行されればよく、位置情報要求処理(S2)は、ゲーム装置1Aがゲーム装置1Bからの端末ビーコンフレームを受信した場合にのみ実行されればよい。
なお、本実施形態において、複数のゲーム装置1の間で位置情報を送受信することができるのは、「すれ違い通信」によってのみである。従って、位置情報を配信するゲーム装置1と位置情報を取得するゲーム装置1との双方が「すれ違い通信モード」に設定されている場合に限って、ゲーム装置1A、ゲーム装置1Bが上記ステップS1〜S3で示す処理を実行する。
以下、図7A、図8A、図8B及び図10を用いて、上記端末ビーコン送信処理を説明する。
図10は、図9のステップS1における端末ビーコン処理の一例を示すフローチャートである。本端末ビーコン処理は、ゲーム装置1BのCPU31Bによって所定周期毎に(例えば、3sec毎に)実行される。
まず、CPU31Bは、データ記憶領域326(図6を参照)を参照して、特定位置データD8が記憶されているかどうかを判断する(S11)。特定位置データD8が記憶されていなければ(S11でNO)、CPU31Bは本サブルーチンの処理を終了し、特定位置データD8が記憶されていれば(S11でYES)、CPU31Bは通信範囲に他端末があるかどうかを判断する(S12)。この判断は、周囲の電波強度を測定することで行われる。
通信範囲に他端末がないと判断した場合には(S12でNO)、CPU31Bは本サブルーチンの処理を終了する。通信範囲に他端末があると判断した場合には(S12でYES)、CPU31Bは、自機の記憶する特定位置データD8を参照し(S13)、この特定位置データの経過時間情報を取得する(S14)。そして、CPU31Bは図7Aで示す端末ビーコンフレームD1を生成する(S15)。端末ビーコンフレームD1の送信元MACアドレスには自機のMACアドレスが記述される。なお、MACアドレスは無線通信モジュール37に記憶されている。また、端末ビーコンフレームD1の経過時間情報には、ステップS14で読み出した経過時間情報が記述される。
CPU31Bは、生成した端末ビーコンフレームD1をブロードキャストで送信する(S16)。この後、CPU31Bは、本サブルーチンの処理を終了する。
以下に、図7A〜図7E、図8A、図8B及び図11Aを用いて位置情報要求処理を説明する。図11Aは、図9のステップS2における位置情報要求処理の一例を示すフローチャートである。本位置情報要求処理は、ゲーム装置1AのCPU31Aによって所定周期毎(例えば、3sec毎)に実行される。
まず、CPU31Aは、端末ビーコンフレームD1を受信したかどうかを判断する(S21)。この判断は、例えば、受信フレーム記憶領域324(図6を参照)に端末ビーコンフレームD1が記憶されているかどうかでなされる。端末ビーコンフレームD1を受信しなかったと判断した場合には(S21でNO)、CPU31Aは本サブルーチンの処理を終了させる。端末ビーコンフレームD1を受信したと判断した場合には(S21でYES)、CPU31Aは、データ記憶領域326(図6を参照)に記憶される特定位置データD8を参照し、このデータの経過時間情報を取得する(S22)。
CPU31Aは、読み出した経過時間情報と端末ビーコンフレームD1に含まれる経過時間情報を比較する(S23)。例えば、CPU31Aは、両経過時間情報に含まれる有効時間情報、すなわち、カウンタ値を比較する。他の例として、CPU31Aは、両経過時間情報に含まれる取得時間情報を比較してもよい。
両経過情報を比較した結果、自機の記憶する特定位置データの方が他のゲーム装置1Bの記憶する特定位置データよりも取得してから新しくなければ(S24でYES)、CPU31Aは、ステップS25の処理を実行する。例えば、端末ビーコンフレームD1に含まれるカウンタ値よりも自機の記憶する特定位置データに含まれるカウンタ値の方が大きければ、ステップS25の処理を実行する。他の例では、端末ビーコンフレームD1に含まれる取得時間情報よりも自機の記憶する特定位置データに含まれる取得時間情報の方が新しくなければ、ステップS25の処理を実行する。一方、自機の記憶する特定位置データの方が他のゲーム装置1Bの記憶する特定位置データよりも取得してから新しい、又は同じであれば(S24でNO)、CPU31Aは本サブルーチンを終了させる。
ステップS25では、CPU31Aは、図7Dに示す通信要求フレームD4を生成して、端末ビーコンフレームD1の送信元のゲーム装置1Bに送信する。この通信要求フレームD4の送信元MACアドレスには、自機のMACアドレスが記述され、宛先MACアドレスには、端末ビーコンフレームD1に含まれる送信元MACアドレスが記述される。
詳しくは後述するが、通信要求フレームD4を受信したゲーム装置1Bは、通信要求フレームD4に応えて通信許可フレームD2をゲーム装置1Aに宛てて送信する。
CPU31Aは、通信許可フレームD2を受信したかどうかを受信するまで所定周期毎に繰り返し判断する(S26)。この判断は、受信フレーム記憶領域324(図6を参照)に通信許可フレームD2が記憶されているかどうかで行われる。CPU31Aは、受信した通信許可フレームD2に含まれる結果情報を参照し、ゲーム装置1Bとの間の通信が許可されているかどうかを判断する(S27)。
ゲーム装置1Bとの間の通信が許可されていない場合には(S27でNO)、CPU31Aは本サブルーチンを終了させる。ゲーム装置1Bとの間の通信が許可されている場合には(S27でYES)、CPU31Aは通信許可フレームD2の送信元であるゲーム装置1Bを通信相手として登録し、このゲーム装置1Bとの接続を確立する(S28)。そして、CPU31Aは、図7Eで示す位置情報要求フレームD5を生成してゲーム装置1Bに送信する(S29)。位置情報要求フレームの宛先MACアドレスには、通信相手となったゲーム装置1BのMACアドレスが記述され、送信元MACアドレスには自機のMACアドレスが記述される。
詳しくは後述するが、位置情報要求フレームD5を受信したゲーム装置1Bは、位置情報要求フレームD5に応えて位置情報フレームD3をゲーム装置1Aに宛てて送信する。
CPU31Aは、位置情報フレームD3を受信したかどうかを受信するまで所定周期毎に繰り返し判断する(S30)。この判断は、受信フレーム記憶領域324(図6を参照)に位置情報フレームD3が記憶されているかどうかで行われる。位置情報フレームD3を受信した後に、CPU31Aは、ゲーム装置1Bとの間のコネクションを開放するための処理を行う(S31)。この後、CPU31Aは、本サブルーチンの処理を終了する。
以下、図7A〜図7E、図8A、図8B及び図11Bを用いて位置情報送信処理を説明する。図11Bは、図9のステップS3における位置情報送信処理の一例を示すフローチャートである。本位置情報送信処理は、通信要求フレームD4を受信したときにゲーム装置1BのCPU31Bによって実行される。この通信要求フレームD4は上記ステップS25によってゲーム装置1Aから送信される。
まず、CPU31Bは、ゲーム装置1Aとの間の通信を許可するか否かを判断する。そして、CPU31Bは、この判断結果を示す結果情報を含めた通信許可フレームD2(図7Bを参照)を生成し、通信要求フレームD4の送信元であるゲーム装置1Aに対して送信する(S32)。通信許可フレームD2の宛先MACアドレスには通信要求フレームD4の送信元であるゲーム装置1AのMACアドレスが記述される。送信元MACアドレスには自機のMACアドレスが記述される。
ゲーム装置1Aとの間の通信を許可しない場合には(S33でNO)、CPU31Bは本サブルーチンの処理を終了する。ゲーム装置1Aとの間の通信を許可する場合には(S33でYES)、CPU31Bは通信要求フレームD4の送信元のゲーム装置1Aを通信相手として登録し、通信を確立する(S34)。上述したように、通信許可フレームD2を受信したゲーム装置1Aは、上記ステップS29において位置情報要求フレームD5をゲーム装置1Bに宛てて送信する。CPU31Bは、位置情報要求フレームD5を受信したかどうかを受信するまで所定周期毎に繰り返し判断する(S35)。この判断は、受信フレーム記憶領域322に(図6を参照)位置情報要求フレームD5が記憶されているかどうかで行われる。
位置情報要求フレームD5を受信した場合に(S35でYES)、CPU31Bは、データ記憶領域326(図6を参照)を参照して、図8A、図8Bで示すような位置データD7を読み出す(S36)。CPU31Bは、読み出した位置データD7に含まれる位置情報、AP識別情報及び経過時間情報を含めて図7Cで示す位置情報フレームD3を生成し、ゲーム装置1Aに対して送信する(S37)。位置情報フレームD3の宛先MACアドレスは、ゲーム装置1AのMACアドレスであり、送信元MACアドレスは自機(ゲーム装置1B)のMACアドレスである。なお、位置情報フレームD3には位置データD7に含まれる経過時間情報が含まれるため、経過時間情報に含まれるカウンタ値が、ゲーム装置1Bからゲーム装置1Aに引き継がれることになる。
この後、CPU31Bは、ゲーム装置1Aとの間でコネクションを開放するための処理を行う(S38)。
以下、図8A〜図8D、図12及び図13を用いて位置情報特定処理を説明する。図12は、図9のステップS4における位置情報特定処理の一例を示すフローチャート(その1)である。図13は、図9のステップS4における位置情報特定処理の一例を示すフローチャート(その2)である。本位置情報特定処理は、ゲーム装置1AのCPU31Aによって所定周期毎(例えば、3sec毎)に実行される。
図12を参照して、まず、CPU31Aは、位置情報フレームD3かAPビーコンフレームD6を受信したかどうかを判断する(S41)。位置情報フレームD3の受信があったかどうかの判断は、受信フレーム記憶領域324(図6を参照)に位置情報フレームD3が記憶されているかで行われる。APビーコンフレームD6の受信があったかどうかの判断は、受信フレーム記憶領域325(図6を参照)にAPビーコンフレームD6が記憶されているかどうかで行われる。
位置情報フレームD3かAPビーコンフレームD6を受信していないと判断した場合には(S41でNO)、CPU31AはステップS51の処理を実行する。位置情報フレームD3かAPビーコンフレームD6を受信したと判断した場合には(S41でYES)、CPU31Aは、受信したフレームD3、D6の送信元の種別を判断する(S42)。この送信元の種別とは、高信頼性アクセスポイント2A、低信頼性アクセスポイント2B、他のゲーム装置1Bの何れかの種別である。
位置情報フレームD3を受信した場合には、送信元の種別は他のゲーム装置1Bであると識別される。APビーコンフレームD6を受信した場合には、このAPビーコンフレームD6を送信したアクセスポイント2が高信頼性アクセスポイント2Aか低信頼性アクセスポイント2Bかを識別する。この識別は次のような方法で行う。CPU31Aは、受信したAPビーコンフレームD6に含まれるESSIDで図8Dに示すAP識別テーブルT2を検索する。この結果、ESSIDに対応するAP識別情報が「高信頼性アクセスポイント」を示す場合には、APビーコンフレームD6の送信元の種別が高信頼性アクセスポイント2Aとされる。一方、ESSIDに対応するAP識別情報が「低信頼性アクセスポイント」を示す場合には、APビーコンフレームD6の送信元の種別が低信頼性アクセスポイント2Bとされる。
次に、CPU31AはフレームD3、D6の送信元の種別が高信頼性アクセスポイント2Aであるかどうかを判断する(S43)。フレームD3、D6の送信元の種別が高信頼性アクセスポイント2Aであると判断した場合には(S43でYES)、CPU31Aは図8Aで示す位置データD7(AP位置データD7a)を生成してデータ記憶領域326(図6を参照)に記憶させる(S44)。なお、データ記憶領域326に空きがない場合には、既に記憶されている位置データD7のうち最もカウンタ値の大きい位置データD7すなわち最も古い位置データD7を削除して、新たに生成した位置データD7を記憶すればよい。
AP位置データD7aの生成方法を詳細に述べると、まず、CPU31AはAPビーコンフレームD6に含まれるBSSIDで位置情報テーブルT1(図8Cを参照)を検索し、このBSSIDに対応する位置情報を取得する。更に、CPU31Aは、APビーコンフレームD6に含まれるESSIDでAP識別情報テーブルT2(図8Dを参照)を検索し、このESSIDに対応するAP識別情報を取得する。そして、CPU31Aは、取得した位置情報及びAP識別情報を含めてAP位置データD7aを生成する。
なお、AP位置データD7aは経過時間情報も含めて生成されるが、この経過時間情報は有効時間情報と取得時間情報からなる。有効時間情報は、カウンタ値であり後述するステップS59の実行毎に1ずつ加算される。従って、カウンタ値が大きい程、位置情報をアクセスポイント2から取得してから時間が経っており、有効時間が残り少ないことを示す。また、取得時間情報は、アクセスポイント2から位置情報を取得した時間、すなわちAPビーコンフレームD6から位置情報を取得した時間を示す。CPU31Aは、カウンタ値を初期値(0)にするとともに、取得時間情報を現在時刻にしてAP位置データD7aを生成する。
次に、CPU31Aは、データ記憶領域326を参照して他ゲーム装置1Bから取得した位置情報(端末位置データD7bに含まれる)又は低信頼性アクセスポイント2Bから取得した位置情報(AP位置データD7aに含まれる)が記憶されているかどうかを判断する(S45)。他のゲーム装置1Bから取得した位置情報又は低信頼アクセスポイント2Bから取得した位置情報が記憶されていないと判断した場合には(S45でNO)、CPU31AはステップS51に処理を進める。
一方、他のゲーム装置1Bから取得した位置情報又は低信頼アクセスポイント2Bから取得した位置情報が記憶されていると判断した場合には(S45でYES)、CPU31Aはこれらの位置情報を含む位置データD7をデータ記憶領域326から削除する(S46)。この理由は、高信頼性アクセスポイント2Aから位置情報を取得することができた場合には、低信頼性アクセスポイント2Bから取得した位置情報や他のゲーム装置1Bから取得した位置情報、すなわち、信頼性の低い位置情報を不要であるためである。なお、本実施形態においては、高信頼性アクセスポイント2Aから提供された位置情報のデータ記憶領域326からの削除を行わないが、このデータを削除してもよい。これによって、ステップS44で生成されたAP位置データD7aの位置情報よりも古い位置情報をデータ記憶領域326からの削除することができる。ステップS46の実行後、CPU31AはステップS51に処理を進める。
以下に、ステップS43でNOと判断された場合、すなわち、フレームD3、D6の送信元の種別が高信頼性アクセスポイント2Aでないと判断した場合について説明する。
この場合には、CPU31AはフレームD3、D6の送信元の種別が他のゲーム装置1Bであるかどうかを判断する(S47)。フレームD3、D6の送信元の種別が他のゲーム装置1Bであると判断した場合(S47でYES)、CPU31Aは図8Bで示す位置データD7(端末位置データD7b)を生成し(S48)、データ記憶領域326(図6を参照)に記憶させる。なお、データ記憶領域326に空きがない場合についての処理は、ステップS44において説明した方法と同様であるので説明を省略する。
端末位置データD7bの生成方法を詳細に述べると、まず、CPU31Aは、位置情報フレームに含まれる位置情報、AP識別情報及び経過時間情報を含めて端末位置データD7bを生成する。また、この端末位置データD7bは他ゲーム装置由来情報も含めて生成される。ステップS48の実行後、CPU31AはステップS51に処理を進める。
以下に、ステップS47でNOと判断された場合、すなわち、フレームD3、D6の送信元の種別が他のゲーム装置1Bでないと判断した場合について説明する。
この場合には、CPU31AはフレームD3、D6の送信元の種別が低信頼性アクセスポイント2Bであるかどうかを判断する(S49)。フレームD3、D6の送信元の種別が低信頼性アクセスポイント2Bであると判断した場合には(S49でYES)、CPU31Aは位置データD7(AP位置データD7a)を生成してデータ記憶領域326(図6を参照)に記憶させる(S50)。このAP位置データD7aの生成方法については、ステップS44において説明した方法と同様であるので説明を省略する。この後、CPU31AはステップS51に処理を進める。なお、データ記憶領域326に空きがない場合の処理についても、ステップS44において説明した方法と同様であるので説明を省略する。
一方、フレームD3、D6の送信元の種別が低信頼性アクセスポイント2Bでないと判断した場合には(S49でNO)、CPU31Aは位置情報を記憶せずにステップS51に処理を進める。なお、この場合は、例えば、AP識別情報テーブルT2にESSIDが登録されていないフレームD3、D6を受信した場合等である。
図8A〜図8D及び図13を参照して、ステップS51以降の位置情報特定処理を説明する。ステップS41〜S50までの処理は、フレームD3、D7に基づいて位置情報を取得してデータ記憶領域326に記憶させるための処理であるが、ステップS51〜S58までの処理は、記憶されている位置情報の何れかを自機の現在位置を示す位置情報であるとして特定するための処理である。
ステップS51では、CPU31Aは、データ記憶領域326を参照し、高信頼性アクセスポイント2Aから取得された位置情報を含む位置データD7が記憶されているかを判断する。この判断は、例えば位置データD7に含まれるAP識別情報が「高信頼性アクセスポイント」の信頼性ランクを示すかどうかで行われる。
高信頼性アクセスポイント2Aから取得された位置情報を含む位置データD7が記憶されている場合には(S51でYES)、CPU31Aは、この位置データD7を自機の現在位置を示す特定位置データD8としてデータ記憶領域326に記憶されている特定位置データD8を更新する(S52)。なお、高信頼性アクセスポイント2Aから取得された位置情報を含む位置データD7が複数記憶されている場合には、CPU31Aは、これらの複数の位置データD7に含まれる有効時間情報(カウンタ値)を参照し、このカウンタ値が最も小さい位置データD7すなわち最も新しい位置データD7を選択して特定位置データD8と決定する。この後、CPU31Aは、続くステップS59に処理を進める。
一方、高信頼性アクセスポイント2Aから取得された位置情報を含む位置データD7が記憶されていない場合には(S51でNO)、CPU31Aは、データ記憶領域326を参照し、他のゲーム装置1Bから取得された位置情報を含む位置データD7(端末位置データD7b)が記憶されているかを判断する(S53)。この判断は、例えば位置データD7に他のゲーム装置由来情報(図8Bを参照)が含まれるかどうかで行われる。端末位置データD7bが記憶されている場合には(S53でYES)、この端末位置データD7bであって、同じアクセスポイント2を提供源(由来)とする位置情報を含む端末位置データD7bが所定数以上(例えば複数)記憶されているかどうかをCPU31Aは判断する(S54)。
端末位置データD7bはゲーム装置1Bから受信した位置情報を含むが、この位置情報を最初にゲーム装置1Bに提供するのはアクセスポイント2である。位置情報は、最初にアクセスポイント2から他のゲーム装置1Bに提供され、このゲーム装置1Bから更に別のゲーム装置1Bを経由して若しくは直接にゲーム装置1Aに配信される。この最初に提供した(提供源となる)アクセスポイント2が同一である位置情報が所定数以上記憶されているかどうかがステップS54で判断されるのである。この判断は、同一のAP識別情報と位置情報を含む端末位置データD7bがデータ記憶領域326に所定数以上記憶されているかどうかで行われる。提供源となるアクセスポイント2が同一であれば、位置データに含まれるAP識別情報と位置情報は同一となるはずだからである。
なお、本実施形態では、ステップS54で、同一のAP識別情報と位置情報を含む端末位置データD7bが所定数以上記憶されているかを判断しているが、同一のAP識別情報については判断せず、同一の位置情報を含むかどうかのみを判断してもよい。
同じアクセスポイント2を提供源とする位置情報を含む端末位置データD7bが所定数以上記憶されていると判断した場合には(S54でYES)、CPU31Aは、これらの端末位置データD7bの何れかを自機の現在位置を示す位置情報として特定し、この端末位置データD7bを特定位置データD8としてデータ記憶領域326に記憶されている特定位置データD8を更新する(S55)。なお、同じアクセスポイント2を提供源とする位置情報を含む端末位置データD7bは複数記憶されているが、CPU31Aは、これらの複数の端末位置データD7bに含まれる有効時間情報(カウンタ値)を参照し、このカウンタ値が最も小さい端末位置データD7bを選択して特定位置データD8と決定する。この後、CPU31Aは、続くステップS59に処理を進める。
次に、端末位置データD7bが記憶されていないと判断された場合(S53でNO)、及び同じアクセスポイント2を提供源とする位置情報を含む端末位置データD7bが所定数以上記憶されていないと判断した場合(S54でNO)の処理を説明する。この場合には、CPU31AはステップS56を実行する。
ステップS56では、CPU31Aは、データ記憶領域326を参照し、低信頼性アクセスポイント2Bから提供された位置情報を含む位置データD7が記憶されているかを判断する(S56)。低信頼性アクセスポイント2Bから提供された位置情報を含む位置データD7が記憶されていないと判断した場合には(S56でNO)、CPU31Aは続くステップS59の処理を進める。一方、低信頼性アクセスポイント2Bから提供された位置情報を含む位置データD7が記憶されていると判断した場合には(S56でYES)、この位置データD7であって、かつ同じアクセスポイント2から提供された位置情報を含む位置データD7が所定数以上(例えば複数)記憶されているかどうかをCPU31Aは判断する(S57)。なお、同一の位置情報が含まれているかどうかで、同じアクセスポイント2から提供された位置情報を含む位置データD7であるかどうかが判断される。
同じアクセスポイント2から受信した位置情報を含む位置データD7が所定数以上(例えば複数)記憶されていると判断した場合には(S57でYES)、CPU31Aはこれらの位置データD7のうち何れかを自機の現在位置を示す特定位置データD8としてデータ記憶領域326に記憶されている特定位置データD8を更新する(S58)。なお、同じアクセスポイント2を提供源とする位置情報を含む位置データD7が複数記憶されている場合、CPU31Aは、これらの複数の位置データD7に含まれる有効時間情報(カウンタ値)を参照し、このカウンタ値が最も小さい位置データD7を選択して特定位置データD8と決定する。この後、CPU31Aは、続くステップS59に処理を進める。
なお、低信頼性アクセスポイント2Bから取得された位置情報を含む位置データD7が記憶されていないと判断された場合(S56でNO)、及び同じアクセスポイント2を提供源とする位置情報を含む位置データD7が所定数以上記憶されていないと判断された場合(S57でNO)には、CPU31Aは特定位置データD8を更新するための処理を行わずステップS59を実行する。
上述したように、本実施形態では、上記ステップS51〜S58によって、信頼性が高い(誤っている可能性が低い)と推定される位置データD7を優先的に使用して特定位置データD8を決定することができ、自機の現在位置を示す特定位置情報を正確性の高いものとすることができる。なお、本実施形態では、信頼性の高さで設定された優先順位は、高信頼性アクセスポイントから提供された位置情報、他のゲーム装置1Bから提供された位置情報、低信頼性アクセスポイントの位置情報の順になる。
また、他のゲーム装置1Bから取得した位置情報や、低信頼性アクセスポイント2Bから取得した位置情報を用いて特定位置情報を決定する場合には、同じアクセスポイント2を提供源とする複数の位置情報を用いて位置情報が特定される。これによって、高信頼性アクセスポイント2Aから取得した位置情報よりも信頼性が高くない位置情報を使用した場合であっても、自機の現在位置を示す特定位置情報を正確性の高いものとすることができる。なお、上述したように、本実施形態では、同じアクセスポイント2を提供源とする複数の位置情報を用いて位置情報を特定することができない状態であれば、特定位置情報の特定が行われないことになる。
次に、ステップS59の処理を説明する。この処理は、位置情報をアクセスポイント2から取得してからの新しさを管理するための処理である。ステップS59では、CPU31Aは、データ記憶領域326に記憶されている全ての位置データD7及び特定位置データD8の有効期間情報(カウンタ値)に所定値(例えば1)を加算する。これによって、ステップS59を実行する毎にカウンタ値が所定値だけ増加していくことになり、カウンタ値の大きさで位置情報の有効時間を管理することができる。カウンタ値が大きくなる程、位置情報はアクセスポイント2から取得してから古いものとなる。
この後、CPU31Aは、データ記憶領域326に記憶されている全ての位置データD7のカウンタ値を参照し、カウンタ値が一定値(例えば、600)になった位置データD7を消去(無効化)する(S60)。これによって、取得してからの経過時間が長くなり、有効時間が残り少なくなった位置データD7を破棄することができ、古い位置データD7を使用して特定位置データD8を更新することで不正確な現在位置を示す位置情報を特定してしまうことが防止される。ゲーム装置1Aは携帯型の装置でありユーザに携帯されて移動するため、取得してからの経過時間が長くなった位置情報はゲーム装置1Aの現在位置とは異なる位置を示す可能性が高いと推定されるからである。
この後、CPU31Aは本サブルーチンの処理を終了する。なお、図9〜図13は、本ゲーム装置1Aが、他のゲーム装置1Bから位置情報を取得し、この取得した位置情報やアクセスポイント2から提供された位置情報から自機の現在位置を示す特定位置情報を決定する場合についての処理を示すが、ゲーム装置1Aが他のゲーム装置1Bに位置情報を配信する場合には、ゲーム装置1Aはゲーム装置1Bの処理として説明した処理(端末ビーコン送信処理及び位置情報送信処理)を実行することになる。
上述したように、本実施形態では、ゲーム装置1Aがアクセスポイント2の通信範囲外にある場合にも、他のゲーム装置1Bとの無線通信によってゲーム装置1Aに位置情報を提供することができる。これによって、位置情報の提供を受けることができる範囲を、ゲーム装置1Aがアクセスポイント2の電波到達圏内に位置する場合といった限られた範囲だけでなく、他のゲーム装置1Bとの通信可能圏内に位置する範囲まで広げることができる。また、ゲーム装置1Aが通信可能な他のゲーム装置1Bの台数は装置の普及にともなって増加するため、装置の普及にともなってゲーム装置1Aが位置情報の提供を受けることができる範囲を更に広げることができる。
また、他のゲーム装置1Bは、このゲーム装置1Bのユーザの移動にともなって移動し、固定的に配置されるものではない。このため、ゲーム装置1Aが位置情報を取得することができる領域は流動的に変わることになり、ゲーム装置1Aに位置情報を提供することができる状況を変化に富んだものとすることができる。
(第2の実施形態)
以下に、図12及び図14を用いて本発明の第2の実施形態にかかる位置情報提供システムを説明する。第2の実施形態にかかる位置情報提供システムを第1の実施形態にかかる位置情報提供システム100と区別するために、位置情報提供システム100Aと記載する。位置情報提供システム100Aでは、位置情報特定処理のみが第1の実施形態と異なり、その他については第1の実施形態と同様である。このため、以下に第2の実施形態にかかる位置情報特定処理についてのみ説明し、その他の事項については説明を省略する。
第2の実施形態の位置情報特定処理においては、他のゲーム装置1Bから取得した位置情報について、この位置情報の提供源となるアクセスポイント2の信頼性のランク(高信頼性アクセスポイント、低信頼性アクセスポイント)に応じて優先順位が設けられることが特徴である。この優先順位を加味すると、第2の実施形態での位置情報の優先順位は、次のようになる。
(i)高信頼性アクセスポイント2Aから提供された位置情報
(ii)他のゲーム装置1Bから取得した位置情報であって、高信頼性アクセスポイント2Aが提供源である位置情報
(iii)低信頼性アクセスポイント2Bから提供された位置情報
(iv)他のゲーム装置1Bから取得した位置情報であって、低信頼性アクセスポイント2Bが提供源である位置情報
以下に、第2の実施形態にかかる位置情報特定処理を説明する。第2の実施形態にかかる位置情報特定処理では、ステップS41〜S50までについては図12を用いて第1の実施形態において説明した処理と同一であるため説明を省略する。続くステップS51以降の処理について図14を参照して説明する。
図14は、第2の実施形態にかかる位置情報特定処理を示すフローチャートである。本フローチャートにおいて、第1の実施形態と同一の処理を実行するステップについては同一の符号を付し、異なった処理を実行するステップについては異なった符号を付す。そして、第1の実施形態と異なる処理についてのみ説明し、同一の処理については説明を省略する。
S51でNO、すなわち、高信頼性アクセスポイント2Aから取得された位置情報を含む位置データD7が記憶されていない場合には、ゲーム装置1AのCPU31Aは、データ記憶領域326を参照し、他のゲーム装置1Bから取得され、かつ高信頼性アクセスポイント2Aが提供源である位置情報を含む位置データD7(端末位置データD7b)が記憶されているかを判断する(S71)。
他のゲーム装置1Bから取得され、かつ高信頼性アクセスポイント2Aが提供源である位置情報を含む位置データD7(端末位置データD7b)が記憶されている場合には(S71でYES)、CPU31Aは、この位置データD7を特定位置データD8としてデータ記憶領域326に記憶されている特定位置データD8を更新する(S72)。なお、他のゲーム装置1Bから取得され、かつ高信頼性アクセスポイント2Aが提供源である位置情報を含む端末位置データD7bが複数記憶されている場合には、CPU31Aは、これらの複数の端末位置データD7bに含まれる有効時間情報(カウンタ値)を参照し、このカウンタ値が最も小さいすなわち新しい端末位置データD7bを選択して特定位置データD8と決定する。この後、CPU31Aは、続くステップS59を実行する。
一方、他のゲーム装置1Bから取得され、かつ高信頼性アクセスポイント2Aが提供源である位置情報を含む位置データD7(端末位置データD7b)が記憶されていない場合には(S71でNO)、CPU31Aは低信頼性アクセスポイント2Bから提供された位置情報を含む位置データD7が記憶されているかを判断する(S73)。低信頼性アクセスポイント2Bから提供された位置情報を含む位置データD7が記憶されている場合には(S73でYES)、CPU31Aは、この位置データD7を特定位置データD8としてデータ記憶領域326に記憶されている特定位置データD8を更新する(S74)。なお、低信頼性アクセスポイント2Bから提供された位置情報を含む端末位置データD7bが複数記憶されている場合の処理については、ステップS72において上述した処理と同様である。この後、CPU31Aは、続くステップS59を実行する。
また、低信頼性アクセスポイント2Bから取得された位置情報を含む位置データD7が記憶されていない場合には(S73でNO)、CPU31Aは、他のゲーム装置1Bから取得され、かつ低信頼性アクセスポイント2Bが提供源である位置情報を含む位置データD7(端末位置データD7b)が記憶されているかどうかを判断する(S75)。他のゲーム装置1Bから取得され、かつ低信頼性アクセスポイント2Bが提供源である位置情報を含む端末位置データD7bが記憶されている場合には(S75でYES)、CPU31Aは、この位置データD7を特定位置データD8としてデータ記憶領域326に記憶されている特定位置データD8を更新する(S76)。なお、他のゲーム装置1Bから取得され、かつ低信頼性アクセスポイント2Bが提供源である位置情報を含む端末位置データD7bが複数記憶されている場合の処理については、ステップS72において上述した処理と同様である。この後、CPU31Aは、続くステップS59を実行する。
他のゲーム装置1Bから取得され、かつ低信頼性アクセスポイント2Bが提供源である位置情報を含む位置データD7(端末位置データD7b)が記憶されていない場合には(S75でNO)、CPU31Aは特定位置データD8を更新するための処理を行わずステップS59を実行する。
上述したように、第2の実施形態では、他のゲーム装置1Bから取得した位置情報について、この位置情報の提供源となるアクセスポイント2の信頼性のランク(「高信頼性アクセスポイント」、「低信頼性アクセスポイント」)に応じて優先順位が設けられているため、他のゲーム装置1Bから取得した位置情報の中でもより信頼性の高い位置情報を用いて自機の現在位置を示す特定位置情報の決定を行うことができる。
(第3の実施形態)
以下に、図12、図13及び図15を用いて本発明の第3の実施形態にかかる位置情報提供システムを説明する。第3の実施形態にかかる位置情報提供システムを第1の実施形態にかかる位置情報提供システム100と区別するために、位置情報提供システム100Bと記載する。位置情報提供システム100Bでは、位置情報特定処理のみが第1の実施形態と異なり、その他については第1の実施形態と同様である。このため、以下に第3の実施形態にかかる位置情報特定処理についてのみ説明し、その他の事項については説明を省略する。
第1の実施形態の位置情報特定処理では、図13で示すステップS54において、同じアクセスポイント2を提供源とする位置情報を含む端末位置データD7bが所定数以上記憶されているが判断される。第3の実施形態は、一定期間内に他のゲーム装置1Bから位置情報を取得することができた回数に応じてステップS54の判断で用いる所定数を通常設定から通常設定より多い特別設定に変更することを特徴とする。この特別設定への変更は、ステップS54の判断で用いる所定数を多くし、より信頼性高く位置情報を特定するために行われる。
以下に、第3の実施形態にかかる位置情報特定処理を説明する。第3の実施形態にかかる位置情報特定処理では、ステップS41〜S50までについては図12を用いて第1の実施形態において説明した処理と同一であるため説明を省略する。続くステップS51以降の処理について図15を参照して説明する。
図15は、第3の実施形態にかかる位置情報特定処理を示すフローチャートである。本フローチャートにおいて、第1の実施形態と同一の処理を実行するステップについては同一の符号を付し、異なった処理を実行するステップについては異なった符号を付す。そして、第1の実施形態と異なる処理についてのみ説明し、同一の処理については説明を省略する。
ステップS53でYESと判断された場合、すなわち、他のゲーム装置1Bから取得された位置情報を含む位置データD7(端末位置データD7b)が記憶されている場合には(S53でYES)、CPU31Aは端末位置データD7bの記憶数が閾値以上であるかを判断する(S81)。端末位置データD7bの記憶数が閾値以上である場合には(S81でYES)、CPU31Aは、ステップS54の判断で使用する所定数を通常設定(例えば、2つ)から特別設定(例えば、3つ)に変更する(S82)。例えば、CPU31Aは、2種類の所定数の値をデータ記憶領域326に記憶し、このうち大きい方の値で所定数の設定を変更する。なお、所定数の設定が既に特別設定となっている場合には、所定数の設定を変更する処理は行われない。この後、CPU31Aは続くステップS54に処理を進める。
他のゲーム装置1Bから取得した位置情報を含む端末位置データD7bの記憶数が閾値より小さい場合には(S81でNO)、CPU31Aは、ステップS54の判断で使用する所定数を通常設定に変更する(S83)。例えば、CPU31Aは、複数種類(例えば、2種類)データ記憶領域326に記憶された所定数の値のうち、小さい方の値で所定数を設定する。なお、所定数の設定が既に通常設定となっている場合には、所定数の設定を変更する処理は行われない。この後、CPU31Aは続くステップS54に処理を進める。
上述したように、第3の実施形態では、ゲーム装置1Aが記憶する端末位置データD7bの数によってステップS54の判断で使用される所定数の設定が変更される。より具体的には端末位置データD7bの記憶数が閾値より小さいと所定数が通常設定とされ、閾値以上に多いと所定数が特別設定にされる。このため、端末位置データD7bの記憶数が閾値より小さい場合よりも閾値以上に多い場合の方が、多い数の端末位置データD7bが記憶されていなければステップS54でYESと判断されないことになる。この理由を次に記載する。同じアクセスポイント2を提供源とする端末位置データD7bが多く記憶されている程、これらの端末位置データD7bの示す位置情報は信頼性が高いと推定される。したがって、第3の実施形態では、端末位置データD7bの記憶数がある程度多い場合(閾値以上に多い場合)には、ステップS54の判断で使用する所定数を通常設定よりも多い特別設定として、より信頼性の高い位置情報の特定を行うことができるようにしている。
一方、端末位置データD7bの記憶数が閾値より小さい場合には、ステップS54の判断で使用する所定数をあまり多くすると位置情報の特定を行うことができなくなってしまう。このため、この場合の所定数は通常設定とされる。
なお、第3の実施形態では、ステップS81の判断で使用される閾値は1つであるが、複数種類の閾値を使用して、複数種類の値の中からステップS54の判断で使用される所定数の設定を変更してもよい。また、ステップS57の判断で使用される所定数については可変ではないが、上述したステップS81〜S83と同様の処理を実行することで可変にしてもよい。
なお、第3の実施形態では、ステップS81によって、端末位置データD7bの記憶数が閾値以上であるかを判断しているが、このことは、一定期間内に他のゲーム装置1Bから位置情報を取得することができた回数を判断するための一方法である。データ記憶領域326に記憶されている位置データD7はそのカウンタ値が所定値以上になると消去されるため(S60)、位置データD7の記憶数は一定期間内に他のゲーム装置1Bから位置情報を取得することができた回数に相当するのである。もっとも、他の方法を使用して、一定期間内に他のゲーム装置1Bから位置情報を取得することができた回数を判断してもよい。
(第4の実施形態)
以下に図7F、図8C、図8D及び図16を使用して、本発明の第4の実施形態にかかる位置情報提供システムを説明する。第4の実施形態にかかる位置情報提供システムを第1の実施形態にかかる位置情報提供システム100と区別するために、位置情報提供システム100Cと記載する。
図16は、第4の実施形態にかかる位置情報提供システム100Cの構成を示す図である。位置情報提供システム100Cは、複数のゲーム装置1と複数のアクセスポイント2の他に、サーバ3を有する。位置情報提供システム100Cでは、ゲーム装置1とアクセスポイント2の間、及びゲーム装置1とサーバ3の間では、IEEE802.11の無線LAN規格に則った無線通信を行うことができる。また、ゲーム装置1A、1Bは互いに所定の通信方式に従って無線通信を行うことができる。
第4の実施形態の特徴を次に述べる。ゲーム装置1Aは、図7Fで示すAPビーコンフレームD6を取得すると、このAPビーコンフレームD6に含まれるESSIDとBSSIDを含む問合せ情報を生成して、サーバ3に送信する。サーバ3は、図8C、図8Dに示すテーブルT1、T2を記憶する。なお、第4の実施形態では、ゲーム装置1はテーブルT1、T2を記憶しない。サーバ3は、受信した問い合わせ情報に含まれるESSIDでAP識別情報テーブルT2を検索するとともに、BSSIDで位置情報テーブルT1を検索する。これらの検索によって、AP識別情報と位置情報を取得すると、サーバは、これらのAP識別情報と位置情報を含むフレームを生成してゲーム装置1Aに送信する。ゲーム装置1Aは、サーバから受信したフレームに含まれる情報を使用して位置データD7を生成する。その他の位置情報提供システム100Cの構成及びこのシステム100Cで実行される処理については第1の実施形態と同様であるため、説明を省略する。
以下、図17を用いて、上記サーバ3の構成を説明する。図17は、第4の実施形態にかかるサーバ3の内部構成を示すブロック図である。
サーバ3は、操作部60、通信部61、ROM62、HDD63、RAM64及びCPU65を有し、これらの間はバス66で互いに通信可能に接続されている。
操作部60は、本サーバ3の管理者からの操作を受け付ける機能を有する。通信部61は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。ROM62は、このサーバ3本体を起動するとともに基本的な機能を実現するためのシステムプログラムが記憶されている。HDD63は、本サーバ3にゲーム装置1Aとの間の通信を行わせる通信プログラムを含むプログラム、及びこのプログラムの実行に必要なデータが記憶されている。このデータには、図8Cで示す位置情報テーブルT1及び図8Dで示すAP識別情報テーブルT2が含まれる。RAM64は、CPU65の作業領域として機能し、HDD63から読み出されたテーブルT1、T2を記憶する。
CPU65は、ゲーム装置1Aからの問い合わせに応じてアクセスポイント2の位置情報をゲーム装置1Aに送信する上記処理を実行する。
上述したように、第4の実施形態では、サーバ3がテーブルT1、T2を記憶しており、サーバ3に問い合わせを行うことでゲーム装置1Aは位置情報を取得することができる。このため、第4の実施形態は、ゲーム装置1AがテーブルT1、T2を記憶する場合に比較して、テーブルT1、T2の更新を容易に行うことができるという利点がある。
次に、第1〜第4の実施形態の変形例を以下に記載する。
(1)第1〜第4の実施形態では、信頼性の高さで設定された優先順位は、高信頼性アクセスポイント2Aから提供された位置情報が、他のゲーム装置1Bから提供された位置情報、低信頼性アクセスポイント2Bの位置情報よりも常に高いが、この構成に限定されない。高信頼性アクセスポイント2Aから提供されてからの経過時間が所定値よりも短い場合(すなわち所定の経過時間よりも新しい場合)にのみ優先順位を高くしてもよい。この方法としては例えば次のようにすればよい。図13〜図15で示す処理において、ステップS51でYESと判断された場合、すなわち高信頼性アクセスポイント2Aから取得された位置情報を含む位置データD7が記憶されている場合に、この位置データD7が高信頼性アクセスポイント2Aから提供されてからの経過時間が所定値よりも短いかどうかが判断される。この判断は経過時間情報を用いて行われる。そして、この判断でYESの場合にのみ、続くステップS52が実行されてこの位置データD7が自機の現在位置を示す特定位置データD8とされる。一方、この判断でNOの場合には、この位置データD7は特定位置データD8とされず、ステップS53又はS71が実行される。
なお、他のゲーム装置1Bから提供された位置情報についても同様に、この位置情報の経過時間情報を加味して低信頼性アクセスポイント2Bとの間の優先順位が設定されてもよい。
(2)第1及び第3の実施形態では、位置情報特定処理のステップS54、S57において、位置情報が完全に同一である位置データD7の記憶数を判断しているが、位置情報が完全に一致していなくても近似していればよい。例えば、位置情報が緯度・経度情報である場合には、両位置情報の示す緯度・経度が所定値以内の誤差しかない場合には近似していると判断される。この場合には、特定位置情報となり得る位置情報が複数種類存在するが、例えば、このうちカウンタ値が最も小さいすなわち新しい位置データD7を選択して特定位置データ8とすればよい。なお、この変形例では、提供源となるアクセスポイント2の同一性は考慮しないため、AP識別情報が同一かどうかの判断は行わなくてもよい。
(3)第1〜第4の実施形態では、他のゲーム装置1Bがゲーム装置1Aに対して位置情報を送信する際に、他のゲーム装置1Bでカウントしていたカウンタ値が他のゲーム装置1Aに引き継がれるがこの構成に限定されない。すなわち、位置情報フレームD3(図7Cを参照)に含めてカウンタ値が送信されるが、カウンタ値は含めない構成であってもよい。この変形例では、ゲーム装置1Aがゲーム装置1Bから位置情報を取得したときから、新たにカウントがなされる。
(4)第1〜第4の実施形態では、ゲーム装置1A、1Bがすれ違い通信モードに設定されている場合に限って、ゲーム装置1A、1B間で位置情報の送受信が行われていたが、この構成に限定されない。すなわち、ゲーム装置1A、1Bの電源がオンされている状態であれば、あるいは電源がオンされている状態であって所定の条件を満たす場合に位置情報の送受信を行うことができる構成であってもよい。また、ユーザが所定の操作を行った場合に、ゲーム装置1A、1B間で位置情報の送受信を行う構成であってもよい。
(5)第1〜第4の実施形態は、本発明の携帯端末装置をゲーム装置1に適用したものであるが、本発明はゲーム装置に限定されない。例えば、携帯電話機、簡易型携帯電話機(PHS)、携帯情報端末(PDA)等にも本発明の適用は可能である。
(6)なお、ゲーム装置1Aがアクセスポイント2から位置情報の提供を受ける構成でなくてもよく、固定的に配置される他の固定局(例えば、据え置き型ゲーム装置や、パーソナルコンピュータ等)から位置情報の提供を受ける構成であってもよい。また、他のゲーム装置1Bとの間のみで位置情報の提供を行う構成であってもよい。