以下、本発明の一実施形態について、図面を参照して説明する。なお、この実施形態によって本発明が限定されるものではない。
(本発明の一実施形態)
[ゲーム装置の外部構成]
図1は、本発明の一実施形態に係るシステムを構成するゲーム装置1の概観図である。以下では、図1を参照して、本発明の情報処理装置の一例であるゲーム装置1の外部構成を説明する。
図1において、ゲーム装置1は、折り畳み型の携帯ゲーム装置であり、開いた状態(開状態)のゲーム装置1を示している。ゲーム装置1は、開いた状態においてもユーザが両手または片手で把持することができるようなサイズで構成される。
ゲーム装置1は、下側ハウジング11及び上側ハウジング21を有する。下側ハウジング11と上側ハウジング21とは、開閉可能(折り畳み可能)に連結されている。図1の例では、下側ハウジング11及び上側ハウジング21は、それぞれ横長の長方形の板状で形成され、互いの長辺部分で回転可能に連結されている。通常、ユーザは、開状態でゲーム装置1を使用する。また、ユーザは、ゲーム装置1を使用しないときには閉状態としてゲーム装置1を保管する。
下側ハウジング11には、下側LCD(Liquid Crystal Display:液晶表示装置)12が設けられる。下側LCD12は横長形状であり、長辺方向が下側ハウジング11の長辺方向に一致するように配置される。なお、本実施形態では、ゲーム装置1に内蔵されている表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を利用してもよい。
下側ハウジング11には、入力装置として、各操作ボタン14A〜14K及びタッチパネル13が設けられる。図1に示すように、各操作ボタン14A〜14Kのうち、方向入力ボタン14A、操作ボタン14B、操作ボタン14C、操作ボタン14D、操作ボタン14E、電源ボタン14F、スタートボタン14G、及びセレクトボタン14Hは、上側ハウジング21と下側ハウジング11とを折りたたんだときに内側となる、下側ハウジング11の内側主面上に設けられる。方向入力ボタン14Aは、例えば選択操作等に用いられる。各操作ボタン14B〜14Eは、例えば決定操作やキャンセル操作等に用いられる。電源ボタン14Fは、ゲーム装置1の電源をオン/オフするために用いられる。スタートボタン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の解像度と同解像度(検出精度)のものを利用する。また、下側ハウジング11の右側面には、挿入口(図1に示す破線)が設けられている。挿入口は、タッチパネル13に対する操作を行うために用いられるタッチペン27を収納することができる。
また、下側ハウジング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には、ユーザに各操作ボタン14A〜14Kやタッチパネル13の役割を教えるための、操作説明画面が表示される。
また、上側ハウジング21には、2つのカメラ(内側カメラ23及び外側カメラ25)が設けられる。図1に示すように、内側カメラ23は、上側ハウジング21の連結部付近の内側主面に取り付けられる。一方、外側カメラ25は、内側カメラ23が取り付けられる内側主面の反対側の面、すなわち、上側ハウジング21の外側主面(ゲーム装置1が閉状態となった場合に外側となる面であり、図1に示す上側ハウジング21の背面)に取り付けられる。なお、図1においては、外側カメラ25を破線で示している。これによって、内側カメラ23は、上側ハウジング21の内側主面が向く方向を撮影することが可能であり、外側カメラ25は、内側カメラ23の撮影方向の逆方向、すなわち、上側ハウジング21の外側主面が向く方向を撮影することが可能である。
なお、上記連結部付近の内側主面には、音声入力装置としてマイク(図2に示すマイク41)が収納されている。また、上記連結部付近の内側主面には、マイク41がゲーム装置1外部の音を検知できるように、マイクロフォン用孔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/F)43、無線通信モジュール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は、上記したCPU31の実行する処理に用いられる各種データを記憶したり、外部(メモリカード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の指示に応じて行う。
カートリッジI/F43はCPU31に接続される。カートリッジI/F43は、コネクタに装着されたカートリッジ29に対するデータの読み出し及び書き込みをCPU31の指示に従って行う。本実施形態では、アプリケーションプログラムがカートリッジ29から読み出されてCPU31によって実行されたり、当該アプリケーションプログラムに関するデータ(例えばゲームのセーブデータ等)がカートリッジ29に書き込まれたりする。
無線通信モジュール37は、例えばIEEE802.11b/gの規格に準拠した方式により、無線LANに接続する機能を有する。無線通信モジュール37はCPU31に接続される。CPU31は、無線通信モジュール37を用いてインターネットを介して、又は介さないで他の機器との間でデータを送受信することができる。
また、無線通信モジュール37は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。ここで、この無線通信で使用される電波は例えば無線局の免許が不要な微弱電波であり、無線通信モジュール37は、例えばデータ伝送距離が10mの範囲内である近距離無線通信を行う。従って、CPU31は、他のゲーム装置1の通信可能範囲内(例えば、両装置間の距離が10m以内)に位置するときに、無線通信モジュール37を用いて当該他のゲーム装置1とデータを送受信することができる。このデータの送受信は、ユーザの指示があったときに行われるのに加え、ユーザの指示を条件とせずに所定周期毎に自動的に繰り返し行われる。すなわち、CPU31は、通信可能範囲内にある他のゲーム装置1を探索して、探索の結果見つかったゲーム装置1との間で自動的に通信を行い自動的にデータを送受信する。そして、当該通信が完了した後で自動的に通信の切断を行う。この一連の処理が所定周期毎に繰り返し行われる。この通信を以下「すれ違い通信」と記載し、すれ違い通信ための処理を以下「すれ違い通信処理」と記載する。なお、「すれ違い通信処理」の詳細は、図20を用いて後述する。
また、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に出力する。
また、下側LCD12及び上側LCD22は、それぞれCPU31に接続される。下側LCD12及び上側LCD22は、それぞれCPU31の指示に従って画像を表示する。
[本実施形態に係るシステム]
図3は、本実施形態に係るシステムの一例を示す図である。図3に示すように、本実施形態に係るシステムは、複数のゲーム装置1と、アクセスポイント2及びネットワーク3を介して複数のゲーム装置1と通信可能に接続されたサーバ4とを備える。複数のゲーム装置1は、サーバ4やネットワーク3を介さずにすれ違い通信を行うことでデータ(メタデータ)の送受信を行う。或いは、いわゆるピア・ツー・ピア(P2P)通信のように、ネットワーク3を介するがサーバ4を介さずに通信を行ってデータの送受信を行うこともできる。これによって、複数のゲーム装置1のユーザは、実行等されたアプリケーションのメタデータを互いに知ることができる。ここで、アプリケーションのメタデータとは、図6(1)を用いて後に説明するが、そのアプリケーションに関連する情報であり、例えば、そのアプリケーションを表すアイコンやそのアプリケーションのタイトルである。
なお、図3ではゲーム装置1が2台しか存在しないが、本実施形態のシステムは3台以上のゲーム装置1で構成されてもよい。また、本実施形態のシステムはサーバ4を複数台備えてもよい。なお、ネットワーク3は、有線又は無線のネットワークであり、例えばインターネットやWAN、LAN等である。
[サーバの内部構成]
図4は、本実施形態に係るシステムを構成するサーバ4の内部構成の一例を示すブロック図である。図4に示すように、サーバ4は、操作部60、通信部61、ROM62、HDD63、RAM64及びCPU65を有し、これらはバス66で互いに通信可能に接続されている。
操作部60は、サーバ4の管理者からの操作を受け付ける機能を有する。通信部61は、ネットワーク3を介して他の装置と通信する機能を有する。ROM62は、サーバ4本体を起動するとともに基本的な機能を実現するためのシステムプログラムを記憶している。HDD63は、サーバ4にゲーム装置1との間の通信を行わせる通信プログラムを含むプログラム、及びこのプログラムの実行に必要なデータを記憶している。このデータには、ゲーム装置1がダウンロードするための詳細情報が含まれる。RAM64は、CPU65の作業領域として機能し、HDD63から読み出されたテーブルTを記憶する。このテーブルTには、アプリケーションID、詳細情報及びオンライン販売情報とが対応付けて登録されている。なお、オンライン販売情報はサーバ4によるアプリケーションのオンライン販売の有無を示す情報である。
CPU65は、ゲーム装置1からの詳細情報の配信要求に応じて、この要求に含まれるアプリケーションIDでテーブルTを検索してアプリケーションIDに対応する詳細情報を読み出し、この詳細情報をゲーム装置1に送信する。
[ゲーム装置が実行する処理の概要]
以下では、ゲーム装置1が実行する処理の概要について説明する。ゲーム装置1が実行するアプリケーションは、内蔵アプリケーション(以下、内蔵アプリという)と、カードアプリケーション(以下、カードアプリという)と、ダウンロードアプリケーション(以下、DLアプリという)に分類される。
内蔵アプリは、ゲーム装置1のメーカ出荷時(新品のゲーム装置1の販売時と言ってもよい)に予めゲーム装置1に格納されているアプリケーションである。ゲーム装置1は、内蔵アプリを初めて実行する時点で、当該内蔵アプリのメタデータを登録(格納)する。
カードアプリは、カートリッジ29又はメモリカード28(図1参照)に格納されているアプリケーションである。ゲーム装置1は、カートリッジ29がゲーム装置1の挿入口(図1では、一点鎖線で示している)に初めて収納された時点、又はメモリカード28がゲーム装置1の挿入口(図1では、二点鎖線で示している)に初めて収納された時点で、当該カートリッジ29又は当該メモリカード28に格納されているカードアプリのメタデータを登録する。また、ゲーム装置1は、カートリッジ29又はメモリカード28が過去に挿入されてこれらに格納されているアプリケーションのメタデータが一旦登録されたが、登録数量が多くなった等の理由により当該メタデータが削除された場合、当該カートリッジ29又は当該メモリカード28が再度挿入された時点で、当該カートリッジ29又は当該メモリカード28のメタデータを登録する。
ここで、カートリッジ29又はメモリカード28に格納されているカードアプリは、このカートリッジ29又はメモリカード28がゲーム装置1に収納(装着)されている状態においてゲーム装置1で実行可能であり、これらがゲーム装置1から取り外されている状態においてはゲーム装置1で実行できない。なお、以下の説明では、説明の簡単のために、カートリッジ29に格納されたアプリケーションのみをカードアプリとして説明して、メモリカード28に格納されたアプリケーションについての説明は省略するが、メモリカード28に格納されたアプリケーションについても同様に考えることができる。
DLアプリは、ゲーム装置1の外部(典型的にはサーバ4)から有線又は無線でダウンロードされるアプリケーションである。ここで、DLアプリがゲーム装置1にダウンロードされた状態では、当該DLアプリのアイコンは、プレゼントアイコンとして下側LCD12(又は上側LCD22)に表示される。プレゼントアイコンは、アプリケーションの種類に関わらず一般に同じ表示態様のアイコン(例えば、リボンで装飾されたプレゼント用の箱のアイコン)である。そして、ユーザがプレゼントアイコンを選択すると、当該プレゼントアイコンは、対応するDLアプリを表す固有の表示態様のアイコンに切り替わる。このことから、ユーザは、一度も実行されていないDLアプリのアイコンを一目で認識できる。ゲーム装置1は、DLアプリのプレゼントアイコンがユーザによって選択されて固有の表示態様に切り替わった時点で、当該DLアプリのメタデータを登録する。
つまり、ゲーム装置1は、自ら実行するアプリケーションの実行時点又は実行可能な状態となった時点で、当該アプリケーションのメタデータを登録する。
また、ゲーム装置1は、他のゲーム装置1との間でユーザの操作に応じて又は自動的に、お気に入りとして登録しているアプリケーション(以下、「お気に入りアプリ」という)、および直近に使用したアプリケーション又は使用中のアプリケーション(以下、「直近使用アプリ」という)のメタデータの送受信を行い、受信したメタデータを登録する。なお、例えば、ゲーム装置1は、フレンドアプリを実行することによって、フレンド登録している他のゲーム装置1との間および新規にフレンド登録した他のゲーム装置1との間で、お気に入りアプリ及び直近使用アプリのメタデータの送受信を行う。このフレンドアプリによる処理については、図11を用いて後述する。また、例えば、ゲーム装置1は、すれ違い通信処理を実行して、他のゲーム装置1との間で所定時間毎に自動的にお気に入りアプリ及び直近使用アプリのメタデータの送受信を行う。このすれ違い通信処理については、図20を用いて後述する。また、例えば、ゲーム装置1は、メッセージアプリを実行することによって、サーバ4を介して他のゲーム装置1との間でメッセージの送受信を行い、その際に、ユーザが指定したアプリケーションのメタデータの送受信を行う場合がある。このメッセージアプリによる処理については、図22を用いて後述する。
そして、ゲーム装置1は、自ら実行等したアプリケーションのメタデータおよび他のゲーム装置1から受信したメタデータを、複数のアプリケーションで使用する。例えば、ゲーム装置1は、フレンドアプリによる処理において、フレンド登録されている他のゲーム装置1のお気に入りアプリ及び直近使用アプリのメタデータを表示する。また、例えば、ゲーム装置1は、プレイ履歴アプリによる処理において、対象期間中に自装置で最もプレイされたアプリケーションのメタデータを表示したり、格納している全てのメタデータを一覧表示したりする。このプレイ履歴アプリによる処理については、図14を用いて後述する。また、例えば、ゲーム装置1は、すれ違いアプリによる処理において、過去にすれ違い通信した他のゲーム装置1のお気に入りアプリ及び直近使用アプリのメタデータを表示する。そして、ゲーム装置1は、ユーザの操作に応じてアプリ選択時処理を実行して、表示されたメタデータに対応するアプリケーションの詳細情報やそれに含まれる購入情報(ガイド情報)、そしてアプリケーション自体を、サーバからダウンロードする。このアプリ選択時処理については、図23を用いて後述する。また、例えば、ゲーム装置1は、メッセージアプリによる処理でメタデータを受信した場合、ユーザの操作に応じてアプリ選択時処理を実行して、受信したメタデータに対応するアプリケーションの詳細情報やそれに含まれる購入情報、そしてアプリケーション自体を、サーバからダウンロードする。
以上に説明したように、ゲーム装置1は、自ら実行等するアプリケーションのメタデータを登録し、また、上記した各種の通信処理によって他のゲーム装置1との間でアプリケーションのメタデータを送受信して受信したメタデータを登録することができる。そして、ゲーム装置1は、登録されているメタデータを、複数のアプリケーションで使用(利用)することができる。また、ゲーム装置1は、過去にゲーム装置1に装着されたことがあり現在は取り外されているカートリッジ29に記憶されたカードアプリ(つまり、過去に実行等したことがあるが現在自装置にはないアプリ)のメタデータであっても、各種のアプリケーションで使用(利用)することができる。
[保存用データメモリのメモリマップ]
次に、ゲーム装置1によって実行される処理の詳細を説明する。まず、図5〜図7を用いて、保存用データメモリ34に記憶されるデータについて説明する。図5は、ゲーム装置1の保存用データメモリ34のメモリマップの一例を示す図である。図5に示すように、保存用データメモリ34には、メイン処理プログラム80とすれ違い通信プログラム90等の各種プログラムが記憶される。また、保存用データメモリ34は、アプリ記憶領域100を含み、アプリ記憶領域100には、アプリケーション毎に、内蔵アプリ及びDLアプリのアプリ本体データ101とメタデータ102とがセットで記憶される。ここで、DLアプリの場合は、アプリ本体データ101とメタデータ102に加えて、プレゼントフラグデータ103がセットで記憶される。また、保存用データメモリ34には、メタデータデータベース200とプレイ履歴データベース250と直近使用アプリデータ300とお気に入りアプリデータ400とすれ違いボックスデータ500とフレンドリストデータ600とグラフ対象期間データ700とランキング条件データ800等の各種データが記憶される。
なお、内蔵アプリのアプリ本体データ101及びメタデータ102は、メーカ出荷時から既に保存用データメモリ34に記憶されている。また、DLアプリのアプリ本体データ101及びメタデータ102は、これらのデータがダウンロードされた時点で保存用データメモリ34に記憶される。
保存用データメモリ34の上記データ(アプリ及びプログラムを含む)は、各アプリケーションの実行時に、CPU31によって、必要に応じてメインメモリ32に読み出されて使用され、必要に応じて記憶又は上書きされる。このことによって、CPU31は、メインメモリ32に読み出した各データを用いて、各アプリケーションの処理を実行する。なお、カートリッジ29に記憶されているカードアプリのアプリ本体データ101及びメタデータ102は、保存用データメモリ34には記憶されず、CPU31は、これらのデータをカートリッジ29から直接メインメモリ32に読み出して処理を実行する。
メイン処理プログラム80は、図8を用いて後述するメイン処理を実現するためのプログラムである。
すれ違い通信プログラム90は、図20を用いて後述するすれ違い通信処理を実現するためのプログラムである。
アプリ本体データ101は、アプリケーションの本体データである。アプリ本体データ101は、例えば、図11を用いて後述するフレンドアプリの本体データ、図14を用いて後述するプレイ履歴アプリの本体データ、図21を用いて後述するすれ違いアプリの本体データ、図22を用いて後述するメッセージアプリの本体データ、及び種々のゲームアプリ等の本体データである。
メタデータ102は、対応するアプリ本体データ101にかかるアプリケーションに関する情報を示すメタデータである。以下に、図6(1)を用いて、メタデータ102について具体的に説明する。メタデータ102は、アイコンの画像(大)データ102aとアイコンの画像(小)データ102bとアプリIDデータ102cとバージョンデータ102dとタイトル(短)データ102eとタイトル(長)データ102fとベンダー名称データ102gと仕向地(リージョン)データhとレーティングデータ102iとアクセス日時データ102j等のメタデータを含む。
アイコンの画像(大)データ102aは、アプリケーションを視覚的に表す比較的大きいサイズの画像のデータである。アイコンの画像(小)データ102bは、アプリケーションを視覚的に表す比較的小さいサイズの画像のデータである。アプリIDデータ102cは、アプリケーション固有の識別子を示すデータである。バージョンデータ102dは、アプリケーションのバージョンを示すデータである。タイトル(短)データ102eは、アプリケーションの比較的短いタイトル(例えば短縮されたタイトル)を示すデータである。タイトル(長)データ102fは、アプリケーションの比較的長いタイトル(例えば正式なタイトル)を示すデータである。ベンダー名称データ102gは、アプリケーションの販売者の名称を示すデータである。仕向地(リージョン)データhは、アプリケーションの仕向地を示すデータである。レーティングデータ102iは、アプリケーションの格付け(レーティング)を示すデータであり、例えば、未成年者は使用できないことを示すデータである。アクセス日時データ102jは、アプリケーションに最後にアクセスした日時を示すデータである。
プレゼントフラグデータ103は、DLアプリのアイコンの表示態様を規定するプレゼントフラグを示すデータである。プレゼントフラグがON状態では、DLアプリのアイコンはプレゼントアイコンの表示態様となり、一方、プレゼントフラグがOFF状態では、DLアプリのアイコンはアプリケーション固有のアイコンの表示態様となる。
メタデータデータベース200は、メタデータ102のデータベースである。以下に図6(2)を用いて、メタデータデータベース200について具体的に説明する。メタデータデータベース200は、自機アプリ領域201と他機アプリ領域202とを含む。自機アプリ領域201には、ゲーム装置1が自ら実行又は実行の準備(具体的にはカートリッジ29等をゲーム装置1に挿入)をしたアプリケーションのメタデータ102が記憶されている。他機アプリ領域202には、後述するすれ違いアプリ処理(図22参照)等によって取得した他のゲーム装置1のお気に入りアプリ400及び直近使用アプリ300のメタデータ102が記憶されている。
プレイ履歴データベース250は、図6(3)に示すように、アプリ毎のプレイデータ251を記憶している。各プレイデータ251は、プレイされたアプリを示すアプリIDデータ102cと、プレイ開始の日時を示すプレイ開始時刻データ251aと、プレイ終了の日時を示すプレイ終了時刻データ251bとから成る。
直近使用アプリデータ300は、ゲーム装置1が直近に実行した又は実行中のアプリケーションを示すデータ(典型的にはアプリIDデータ)である。
お気に入りアプリデータ400は、図11を用いて後述するフレンドアプリ処理において設定された、ユーザのお気に入りのアプリケーションを示すデータ(典型的にはアプリIDデータ)である。
すれ違いボックスデータ500は、図7(1)に示すように、ゲーム装置1で実行可能な状態の全てのアプリケーション(本実施形態では、アプリ記憶領域100に記憶されているアプリケーション及びゲーム装置1に収納されている状態のカートリッジ29に記憶されているアプリケーション)毎のアプリIDデータ102cと送信ボックスデータ500aと受信ボックスデータ500bとのセットから成る。送信ボックスデータ500aは、図20のすれ違い通信処理によって他のゲーム装置1に送信する送信情報である。受信ボックスデータ500bは、図20のすれ違い通信処理によって他のゲーム装置1から受信する受信情報である。なお、この送信情報及び受信情報は、アプリケーション毎に設定された情報である。
以下に、図21を用いて後述するすれ違いアプリのすれ違いボックスデータについて、説明する。図7(2)に示すように、すれ違いアプリのすれ違いボックスデータは、すれ違いアプリのIDデータ102cと、送信ボックスデータ500aである自機(自ゲーム装置1)のお気に入りアプリのメタデータ501及び自機の直近使用アプリのメタデータ502と、送信ボックスデータ500bである他機(他のゲーム装置1)のお気に入りアプリのメタデータ503及び他機の直近使用アプリのメタデータ504とから成る。自機のお気に入りアプリのメタデータ501は、自機のお気に入りアプリデータ400が示す自機のユーザのお気に入りのアプリケーションのメタデータ(102)である。自機の直近使用アプリのメタデータ502は、自機の直近使用アプリデータ300が示す自機が直近使用した又は使用しているアプリケーションのメタデータ(102)である。他機のお気に入りアプリのメタデータ503は、他機のお気に入りアプリデータ400が示す他機のユーザのお気に入りのアプリケーションのメタデータ(102)である。他機の直近使用アプリのメタデータ504は、他機の直近使用アプリデータ300が示す他機が直近使用した又は使用しているアプリケーションのメタデータ(102)である。
フレンドリストデータ600は、図11を用いて後述するフレンドアプリ処理においてユーザによって登録されたフレンドである他のゲーム装置1(フレンド)それぞれを示すフレンドコードのリストデータである。
グラフ対象期間データ700は、図14を用いて後述するプレイ履歴アプリ処理においてアプリケーションのプレイ履歴をグラフ表示する期間を示すデータである。
ランキング条件データ800は、図14を用いて後述するプレイ履歴アプリ処理においてアプリケーションをランキングするためのランキング条件を規定するデータである。ランキング条件は、例えば、プレイ回数が多いアプリ、長時間プレイされたアプリ、一回のプレイ時間の平均が長いアプリ等である。
[メイン処理]
次に、図8及び図10を参照して、メイン処理プログラム80に基づいて実行されるCPU31の処理を説明する。図8は、メイン処理の一例を示すフローチャートである。なお、ステップS12でアプリケーションを実行している場合を除いて図8のフローチャートの処理が所定時間毎に繰り返されることによって、メイン処理は進行する。また、以降の全ての図面では、CPU31が実行する各ステップを「S」と略称する。また、以降の説明で、ステップSを単に「S」と略称する場合がある。
まず、ゲーム装置1の電源がオンされてメイン処理プログラム80の実行が開始されると、図8のステップS1において、CPU31は、下側LCD12にメニュー画面を表示させる。図9は、ゲーム装置1が表示させるメニュー画面の一例を示す図である。図9に示すように、メニュー画面には、ゲーム装置1で実行可能なアプリケーションのアイコンG1が表示される。ここで、この実行可能なアプリケーションとは、保存用データメモリ34に記憶されている内蔵アプリ及びDLアプリと、ゲーム装置1に収納(装着)された状態のカートリッジ29に記憶されているカードアプリである。ユーザは、タッチペン27を使用して、メニュー画面に表示された何れかのアイコンG1を1回タッチすることでアプリケーションを選択し、更にもう1回同じアイコンをタッチすることで選択したアプリケーションをゲーム装置1に実行させることができる。なお、図9では、下側LCD12には4つのアイコンG1しか表示されていないが、ユーザは、左方向又は右方向へのスクロール操作を行うことで、下側LCD12に他のアイコンG1を表示させることができる。その後、処理はステップS2に移る。
ステップS2において、CPU31は、カートリッジ29がゲーム装置1に挿入(装着)されたか否かを判定する。具体的には、CPU31は、カートリッジ29がカートリッジI/F43に接続されたか否かを判定する。ステップS2の判定がYESの場合処理はステップS4に移り、この判定がNOの場合処理はステップS6に移る。
ステップS4において、CPU31は、メタデータデータベース200(図6(2)参照)(の自機アプリ領域201に)メタデータの登録を行うメタデータ登録処理を行う。なお、ステップS4におけるメタデータ登録処理では、カートリッジ29に記憶されているカードアプリのメタデータが、メタデータデータベース200に登録される対象のメタデータ(以下、登録対象メタデータという)となる。その後、処理はステップS5に移る。
図10は、メタデータ登録処理の一例を示す図である。以下では、図10を参照して、メタデータ登録処理について説明する。
まず、図10のステップS21において、CPU31は、メタデータデータベース200に、同じアプリIDかつ同じバージョンのアプリケーションのメタデータが既に記憶されているか否かを判定する。CPU31は、メタデータデータベース200に記憶されている各メタデータ102のアプリIDデータ102c及びアプリバージョンデータ102dを参照することによって、この判定を行う。ステップS21での判定がYESの場合処理はステップS26に移り、この判定がNOの場合処理はステップS22に移る。
ステップS22において、CPU31は、ステップS21で判定された登録対象メタデータの登録先が、メタデータデータベース200の自機アプリ領域201であるか否かを判定する。具体的には、CPU31は、登録対象メタデータが、保存用データメモリ34のアプリ記憶領域101に記憶されているアプリ又はゲーム装置1に装着された状態のカートリッジ29に記憶されているアプリのメタデータ(言い換えると、自機の内蔵アプリ、自機のDLアプリ、及び自機に装着状態のカードアプリのメタデータ)である場合、登録対象メタデータの登録先がメタデータデータベース200の自機アプリ領域201であると判定し、そうではない場合、すなわち登録対象メタデータが他のゲーム装置1から受信したメタデータである場合などは、登録対象メタデータの登録先がメタデータデータベース200の他機アプリ領域202であると判定する。ステップS22での判定がYESの場合処理はステップS23に移り、この判定がNOの場合処理はステップS24に移る。
ステップS23において、CPU31は、登録対象メタデータを、メタデータデータベース200の自機アプリ領域201に記憶する。その後、処理はステップS25に移る。
ステップS24において、CPU31は、登録対象メタデータを、メタデータデータベース200の他機アプリ領域202に記憶する。その後、処理はステップS25に移る。
ステップS25において、CPU31は、保存用データメモリ34に記憶されているアクセス日時データ102j(図6(1)参照)を更新する。その後、メタデータ登録処理は終了し、処理は図8のメイン処理に戻る。なお、処理の詳細は省略するが、CPU31は、メタデータデータベース200の記憶容量が一杯となった場合又はメタデータの記憶数が最大記憶数に達した場合に、アクセス日時データを用いて古いメタデータから順に削除する。
ステップS26において、CPU31は、登録対象メタデータが既に他機アプリ領域202に記憶されており、かつ、その登録先は自機アプリ領域201であるか否かを判定する。ここで、CPU31は、ステップS22での判定方法と同様にして、登録対象メタデータの登録先が自機アプリ領域201あるか否かを判定する。ステップS26での判定がYESの場合処理はステップS27に移り、この判定がNOの場合処理はステップS25に移る。
ステップS27において、CPU31は、既に他機アプリ領域202に記憶されている登録対象メタデータを、自機アプリ領域201に移動させる。これは、他機から受信したメタデータを格納する他機アプリ領域よりも自機が所持等したアプリのメタデータを格納する自機アプリ領域を上位に位置づけるものであり、登録対象メタデータが既に他機アプリ領域に記憶されている場合には、当該登録対象メタデータを上位である自機アプリ領域に移動させる処理である。その後、処理はステップS25に移る。
図8のステップS4におけるメタデータ登録処理では、ゲーム装置1に装着されたカートリッジ29に記憶されているアプリケーション(つまり、自機アプリ)のメタデータが登録対象メタデータである。このことから、この登録対象メタデータが自機アプリ領域201及び他機アプリ領域202のいずれにも登録されていない場合、この登録対象メタデータは、自機アプリ領域201に登録される(S23)。また、この登録対象メタデータが自機アプリ領域201に登録されておらず他機アプリ領域202に登録されている場合、この登録対象メタデータは、他機アプリ領域202から自機アプリ領域201に移動して登録される(S27)。なお、この登録対象メタデータが自機アプリ領域201に既に登録されている場合、この登録対象メタデータは、メタデータデータベース200に登録されることはない(S26でNO)。
ステップS5において、CPU31は、ステップS2でゲーム装置1に挿入されたと判定されたカートリッジ29に記憶されたカードアプリに固有のアイコンを、ステップS1で表示させたメニュー画面(図9参照)に追加して表示させる。その後、処理はステップS6に移る。
ステップS6において、CPU31は、ユーザの操作によって、メニュー画面に表示されている内蔵アプリのアイコンうちの何れかが実行指示されたか否かを判定する。ステップS6での判定がYESの場合処理はステップS7に移り、この判定がNOの場合処理はステップS14に移る。
ステップS7において、CPU31は、図10のメタデータ登録処理を行う。なお、ステップS7におけるメタデータ登録処理では、ステップS6で実行指示されたと判定された内蔵アプリ(つまり、自機アプリ)のメタデータが、登録対象メタデータとなる。このことから、この登録対象メタデータは、ステップS4における登録対象メタデータと同様の場合に自機アプリ領域201に登録される(S23、S27)。その後、処理はステップS8に移る。
ステップS8において、CPU31は、ステップS6、S14又はS19で実行指示されたと判定されたアプリ(自機アプリ)に対応するプレイデータ251のプレイ開始時刻データ251a(図6(3)参照)に、現時点の日時を記憶する。その後、処理はステップS9に移る。なお、ステップS6、S7に続いてステップS8の処理が実行される場合、ステップS8において、CPU31は、ステップS6で実行指示されたと判定された内蔵アプリに対応するプレイデータ251のプレイ開始時刻データ251aに、現時点の日時を記録する。また、後述するステップS14、S15、S20に続いてステップS8の処理が実行される場合、ステップS8において、CPU31は、ステップS14で実行指示されたと判定されたDLアプリに対応するプレイデータ251のプレイ開始時刻データ251aに、現時点の日時を記録する。また、後述するステップS19、S20に続いてステップS8の処理が実行される場合、ステップS8において、CPU31は、ステップS19で実行指示されたと判定されたカードアプリに対応するプレイデータ251のプレイ開始時刻データ251aに、現時点の日時を記録する。
ステップS9において、CPU31は、保存用メインメモリ34の直近使用アプリデータ300に、ステップS6、S14又はS19で選択されたと判定されたアプリ(自機アプリ)のアプリIDを記憶する。その後、処理はステップS10に移る。なお、ステップS6、S7、S8に続いてステップS9の処理が実行される場合、ステップS9において、CPU31は、ステップS6で実行指示されたと判定された内蔵アプリのアプリIDを直近使用アプリデータ300に記憶する。また、後述するステップS14、S15、S20、S8に続いてステップS9の処理が実行される場合、ステップS9において、CPU31は、ステップS14で実行指示されたと判定されたDLアプリのアプリIDを直近使用アプリデータ300に記憶する。また、後述するステップS19、S20、S8に続いてステップS9の処理が実行される場合、ステップS9において、CPU31は、ステップS19で実行指示されたと判定されたカードアプリのアプリIDを直近使用アプリデータ300に記憶する。
ステップS10において、CPU31は、すれ違いアプリのすれ違い送信ボックスデータ500a(図7(2)参照)に、自機の直近使用アプリのメタデータ及び自機のお気に入りアプリのメタデータを記憶する。より具体的には、CPU31は、メタデータデータベース200のメタデータ102(図6(1)参照)を参照して、すれ違いアプリのすれ違い送信ボックスデータ500aに、保存用データメモリ34内の自機の直近使用アプリデータ(IDデータ)300に対応するメタデータ及び自機のお気に入りアプリデータ(IDデータ)400に対応するメタデータを記憶する。その後、処理はステップS11に移る。
ステップS11において、CPU31は、ステップS6、S14又はS19で実行指示されたと判定されたアプリ(自機アプリ)を起動する。なお、ステップS6〜S10に続いてステップS11の処理が実行される場合、ステップS11において、CPU31は、ステップS6で実行指示されたと判定された内蔵アプリを起動する。また、後述するステップS14、S15、S20、S8〜S10に続いてステップS11の処理が実行される場合、ステップS11において、CPU31は、ステップS14で実行指示されたと判定されたDLアプリを起動する。また、後述するステップS19、S20、S8〜S10に続いてステップS11の処理が実行される場合、ステップS11において、CPU31は、ステップS19で実行指示されたと判定されたカードアプリを起動する。その後、処理はステップS12に移る。
ステップS12において、CPU31は、ステップS11で起動したアプリ(自機アプリ)の処理を実行する。なお、ステップS12で実行されるアプリケーションは、対戦ゲーム、レースゲーム、スポーツゲーム、及び後述するフレンドアプリ(図11参照)等の様々なアプリケーションである。その後、処理はステップS13に移る。
ステップS13において、CPU31は、ステップS12で実行してそのプレイを終了したアプリ(自機アプリ)に対応するプレイ履歴データベース250のプレイ終了時刻データ251b(図6(3)参照)に、プレイ終了時刻として現時点の日時を記憶する。その後、処理はステップS1に戻る。
一方、ステップS14において、CPU31は、ユーザの操作によって、メニュー画面に表示されているDLアプリのアイコンうちの何れかが実行指示されたか否かを判定する。ステップS14での判定がYESの場合処理はステップS15に移り、この判定がNOの場合処理はステップS19に移る。
ステップS15において、CPU31は、プレゼントフラグデータ103(図5参照)を参照してステップS14で実行指示されたと判定されたDLアプリのアイコンが、プレゼントアイコンの表示態様であるか否かを判定する。具体的には、CPU31は、プレゼントフラグデータ103が示すプレゼントフラグがONである場合、ステップS14で実行指示されたと判定されたDLアプリのアイコンがプレゼントアイコンの表示態様であると判定し、このフラグがOFFである場合、このDLアプリのアイコンが固有の表示態様であると判定する。ステップS15での判定がYESの場合処理はステップS16に移り、この判定がNOの場合処理はステップS20に移る。
ステップS16において、CPU31は、図10のメタデータ登録処理を行う。なお、ステップS16におけるメタデータ登録処理では、ステップS14で実行指示されたと判定されたDLアプリ(自機アプリ)のメタデータが、登録対象メタデータとなる。このことから、この登録対象メタデータは、ステップS4における登録対象メタデータと同様の場合に自機アプリ領域201に登録される(S23、S27)。その後、処理はステップS17に移る。
ステップS17において、CPU31は、ステップS14で実行指示されたと判定されたDLアプリのアイコンの表示態様を、プレゼントアイコンの表示態様からこのDLアプリ固有の表示態様に切り替える。その後、処理はステップS18に移る。
ステップS18において、CPU31は、プレゼントフラグデータ103が示すプレゼントフラグをONからOFFにする。このことによって、DLアプリのアイコンは、プレゼントアイコンの表示態様から、アプリ固有の表示態様に切り替わる。その後、処理はステップS1に戻る。
ステップS20において、CPU31は、図10のステップS25の処理と同様に、保存用データメモリ34に記憶されているアクセス日時データ102j(図6(1)参照)を更新する。その後、処理はステップS8に移る。
一方、ステップS19において、CPU31は、ユーザの操作によって、メニュー画面に表示されているカードアプリのアイコンのうちの何れかが実行指示されたか否かを判定する。ステップS19での判定がYESの場合処理はステップS20に移り、この判定がNOの場合処理はステップS1に戻る。
以上に説明したように、メイン処理によって、カートリッジ29がゲーム装置1に初めて収納された時点で、そのカートリッジ29に記憶されているアプリケーションのメタデータがメタデータデータベース200の自機アプリ領域201に登録される(S4)。また、メイン処理によって、内蔵アプリが初めて実行された時点で、その内蔵アプリのメタデータがメタデータデータベース200の自機アプリ領域201に登録される(S7)。また、メイン処理によって、DLアプリのプレゼントアイコンがユーザの操作に応じてこのDLアプリ固有のアイコンに切り替わった時点で、そのDLアプリのメタデータがメタデータデータベース200の自機アプリ領域201に登録される(S16)。
[フレンドアプリ処理]
次に、保存用データメモリ34のアプリ記憶領域100に記憶されるアプリケーションの一例であるフレンドアプリがCPU31によって実行されることによって実現されるフレンドアプリ処理について説明する。図11は、フレンドアプリ処理の一例を示すフローチャートである。なお、フレンドアプリ処理は、図8のメイン処理におけるステップS12で実行されるアプリケーション処理の一例である。
まず、ステップS31において、CPU31は、今回の実行がフレンドアプリの初回実行であるか否かを判定する。ステップS31での判定がYESの場合処理はステップS32に移り、この判定がNOの場合処理はステップS33に移る。
ステップS32において、CPU31は、自機のお気に入りアプリを設定する。具体的には、CPU31は、下側LCD12にお気に入りアプリを選択する画面を表示させ、ユーザの選択操作に基づいて、自機のお気に入りアプリを設定する。より具体的には、お気に入りアプリデータ400(図5参照)の初期値は空値(NULL)であり、CPU31は、ユーザの選択操作に基づいて自機のお気に入りアプリのアプリIDデータをお気に入りアプリデータ400として記憶させる。その後、処理はステップS33に移る。
ステップS33において、CPU31は、所定のタイミングになったか否かを判定する。ここで、この所定のタイミングとは、所定時間毎に到来するタイミングである。ステップS33での判定がYESの場合処理はステップS34に移り、この判定がNOの場合処理はステップS38に移る。
ステップS34において、CPU31は、自機を示すフレンドコードと共に、自機のお気に入りアプリのメタデータ及び直近使用アプリのメタデータをサーバ4にネットワーク3を通じて通知する(図3参照)。これにより、サーバ4に自機がオンラインとなったことを通知する。その後、処理はステップS35に移る。
ステップS35において、CPU31は、フレンド登録している他機のお気に入りアプリのメタデータ及び直近使用アプリのメタデータを、他機のフレンドコードと共にサーバ4からネットワーク3を通じて受信する。その後、処理はステップS36に移る。
ステップS36において、CPU31は、ステップS35でメタデータを受信した他機(他のゲーム装置1)毎に、当該受信したメタデータが変化しているか否かを判定する。この判定は、フレンドリストデータ600を構成する他機のフレンドコード毎に、当該フレンドコードに関連付けられているメタデータデータベース200の他機のメタデータと、ステップS35で受信した他機のメタデータとを比較することで実行される。ステップS36での判定がYESの場合処理はステップS37に移り、この判定がNOの場合処理はステップS38に移る。
ステップS37において、CPU31は、図10のメタデータ登録処理を行う。ここで、ステップS37におけるメタデータ登録処理では、ステップS36で変化していると判定された他機のメタデータが、登録対象メタデータとなる。このことから、この登録対象メタデータが自機アプリ領域201及び他機アプリ領域202のいずれにも登録されていない場合、この登録対象メタデータは、他機アプリ領域202に登録される(S24)。なお、この登録対象メタデータが自機アプリ領域201に登録されている場合又は他機アプリ領域202に登録されている場合、この登録対象メタデータは、メタデータデータベース200に登録されることはない(S26でNO)。その後、処理はステップS38に移る。
ステップS33〜S37の処理が行われることによって、フレンド登録している他機の最新のお気に入りアプリのメタデータ及び直近使用アプリのメタデータを、メタデータデータベース200に登録しておくことができる。
ステップS38において、CPU31は、下側LCD12にフレンドリスト画面を表示させる。図12は、下側LCD12に表示されたフレンドリスト画面の一例を示す図である。図12に示すように、フレンドリスト画面には、フレンド登録されているフレンド(他のゲーム装置1又はそのユーザ)を表す操作子G2と、自分(自ゲーム装置1又はそのユーザ)を表す操作子G3と、フレンドの新規登録を行うための操作子G4とが表示される。その後、処理はステップS39に移る。
ステップS39において、CPU31は、フレンドリスト画面に表示したフレンドを表す操作子G2の何れかがユーザによって選択されたか否かを判定する。ステップS39での判定がYESの場合処理はステップS40に移り、この判定がNOの場合処理はステップS41に移る。
ステップS40において、CPU31は、ステップS39で選択されたフレンド操作子G2が表すフレンドのプロフィール、お気に入りアプリのメタデータ、及び直近使用アプリのメタデータを、上側LCD22に表示させる。図13は、上側LCD22に表示されたフレンドのプロフィール、お気に入りアプリのメタデータ、及び直近使用アプリのメタデータの一例を説明するための図である。図13では、ステップS39で選択されたフレンド操作子G2が下側LCD12で強調表示され、このフレンド操作子G2が表すフレンドのプロフィールG5、お気に入りアプリであるフレンドアプリのメタデータ(タイトルG6及びアイコンG7)、及び直近使用アプリであるレースゲームXのメタデータ(タイトルG8及びアイコンG9)が上側LCD22に表示されている。その後、処理はステップS31に戻る。
ステップS41において、CPU31は、フレンドリスト画面に表示した自分を表す操作子G3がユーザによって選択されたか否かを判定する。ステップS41での判定がYESの場合処理はステップS42に移り、この判定がNOの場合処理はステップS43に移る。
ステップS42において、CPU31は、自機のお気に入りアプリの設定を変更する。具体的には、CPU31は、下側LCD12にお気に入りアプリを選択する画面を表示させ、ユーザの選択操作に基づいて、自機のお気に入りアプリの設定を変更する。より具体的には、CPU31は、ユーザの選択操作に基づいて、新たな自機のお気に入りアプリのアプリIDデータをお気に入りアプリデータ400(図5参照)として記憶させる。その後、処理はステップS31に戻る。
ステップS43において、CPU31は、フレンドリスト画面に表示したフレンドの新規登録を行うための操作子G4がユーザによって選択されたか否かを判定する。ステップS41での判定がYESの場合処理はステップS44に移り、この判定がNOの場合処理はステップS33に戻る。
ステップS44において、CPU31は、フレンドの新規登録の方法がネットワーク3を介したオンライン接続を用いた方法であるか否かを判定する。ステップS44での判定がYESの場合処理はステップS45に移り、この判定がNOの場合処理はステップS49に移る。
ステップS45において、CPU31は、ユーザが登録しようとする他のユーザの識別番号(フレンドコード)の入力を受け付ける。具体的には、CPU31は、下側LCD12に他のユーザの識別番号の入力を受け付ける画面を表示させ、ユーザの入力操作に基づいて、ユーザが登録しようとする他のユーザの識別番号の入力を受け付ける。その後、処理はステップS46に移る。
ステップS46において、CPU31は、ステップS45で受付けた識別番号に対応するユーザのプロフィールデータとお気に入りアプリのメタデータと直近使用アプリのメタデータとを、ネットワーク3を介したオンライン接続(典型的には無線通信モジュール37を用いたインターネット接続)でサーバ4にダウンロード要求する。その後、処理はステップS47に移る。なお、ステップS46によるダウンロード要求に応じて、サーバ4は、上記の各データを、問い合わせたゲーム装置1に送信する。
ステップS47において、CPU31は、ステップS46でダウンロード要求した各データを、サーバ4から上記オンライン接続でダウンロードする。その後、処理はステップS471に移る。
ステップS471において、CPU31は、ステップS45で入力を受け付けた識別番号に関してフレンド登録を行う。具体的には、CPU31は、ステップS45で入力を受け付けた他のユーザの識別番号をフレンドリストデータ600に登録する。また、その際、CPU31は、登録した識別番号と関連付けて、ステップS47でダウンロードした相手ユーザ(フレンド)のプロフィールを、保存用データメモリ34に記憶する。その後、処理はステップS48に移る。
ステップS48において、CPU31は、図10のメタデータ登録処理を行う。ここで、ステップS471に続くステップS48におけるメタデータ登録処理では、ステップS47でダウンロードした他機のお気に入りアプリ及び直近使用アプリのメタデータが、登録対象メタデータとなる。このことから、この登録対象メタデータが自機アプリ領域201及び他機アプリ領域202のいずれにも登録されていない場合、この登録対象メタデータは、他機アプリ領域202に登録される(S24)。なお、この登録対象メタデータが自機アプリ領域201に登録されている場合又は他機アプリ領域202に登録されている場合、この登録対象メタデータは、メタデータデータベース200に登録されることはない(S26でNO)。その後、処理はステップS31に戻る。
ステップS49において、CPU31は、無線通信モジュール37を用いて他のゲーム装置1との間で近距離無線通信(典型的には、無線局の免許が不要な微弱電波で行う無線通信)を行うために、無線ビーコンを送信すると共に他のゲーム装置1から送信される無線ビーコンをサーチする。ここで、これらの無線ビーコンには、無線ビーコン送信元のゲーム装置1の識別番号(フレンドコード)が含まれている。その後、処理はステップS50に移る。
ステップS50において、CPU31は、他のゲーム装置1が送信する無線ビーコンを発見(受信)したか否かを判定する。ステップS50での判定がYESの場合処理はステップS51に移り、この判定がNOの場合処理はステップS31に戻る。
ステップS51において、CPU31は、無線ビーコン送信元の他のゲーム装置1のリストを、下側LCD12に表示する。ここで、このリストを構成する各要素(無線ビーコン送信元の他のゲーム装置1のそれぞれを表す画像等)には、ステップS50で受信した無線ビーコンに含まれる無線ビーコン送信元の他のゲーム装置1の識別番号が関連付けられている。その後、処理はステップS52に移る。
ステップS52において、CPU31は、ステップS51で表示させたリストからいずれかの他のゲーム装置1が選択されるまで待機し、選択された場合処理はステップS53に移る。なお、その際に、CPU31は、選択された他のゲーム装置1に対して、選択したことを通知する選択信号を送信する。
ステップS53において、CPU31は、ステップS52で選択された他のゲーム装置1(相手機)が、自ゲーム装置1を選択したか否かを判定する。この判定は、上記他のゲーム装置1(相手機)からの選択信号の有無で可能となる。ステップS53での判定がYESの場合処理はステップS54に移り、この判定がNOの場合処理はステップS31に戻る。
ステップS54において、CPU31は、相手機との間で、プロフィールデータとお気に入りアプリのメタデータと直近使用アプリのメタデータとを、無線通信モジュール37を用いた近距離無線通信によって互いに送受信する。その後、処理はステップS541に移る。
ステップS541において、CPU31は、ステップS52で選択されたと判定した他のゲーム装置1の識別番号に関してフレンド登録を行う。具体的には、CPU31は、ステップS52で選択されたと判定した他のゲーム装置1の識別番号をフレンドリストデータ600に登録する。また、その際、CPU31は、登録した識別番号と関連付けて、ステップS54でダウンロードした相手ユーザ(フレンド)のプロフィールを、保存用データメモリ34に記憶する。その後、処理はステップS48に移る。
ステップS48において、CPU31は、図10のメタデータ登録処理を行う。ここで、ステップS541に続くステップS48におけるメタデータ登録処理では、ステップS54で受信した他機(相手機)のメタデータが、登録対象メタデータとなる。このことから、この登録対象メタデータが自機アプリ領域201及び他機アプリ領域202のいずれにも登録されていない場合、この登録対象メタデータは、他機アプリ領域202に登録される(S24)。なお、この登録対象メタデータが自機アプリ領域201に登録されている場合又は他機アプリ領域202に登録されている場合、この登録対象メタデータは、メタデータデータベース200に登録されることはない(S26でNO)。その後、処理はステップS31に移る。
以上に説明したように、フレンドアプリ処理によって、フレンド登録されている他のゲーム装置1のお気に入りアプリ及び直近使用アプリのメタデータを受信し(S37、S48)、これらのメタデータを表示することができる(S40)。
[プレイ履歴アプリ処理]
次に、保存用データメモリ34のアプリ記憶領域100に記憶されるアプリケーションの一例であるプレイ履歴アプリが、CPU31によって実行されることによって実現されるプレイ履歴アプリ処理について説明する。図14は、プレイ履歴アプリ処理の一例を示すフローチャートである。なお、プレイ履歴アプリ処理は、図8のメイン処理におけるステップS12で実行されるアプリケーション処理の一例である。
まず、ステップS61において、CPU31は、下側LCD12にプレイ履歴アプリのメニュー画面を表示させる。プレイ履歴アプリのメニュー画面には、「プレイ履歴」の操作子と「アプリ図鑑」の操作子が含まれている。その後、処理はステップS62に移る。
ステップS62において、CPU31は、プレイ履歴アプリのメニュー画面のプレイ履歴の操作子がユーザによって選択操作されたか否かを判定する。ステップS62での判定がYESの場合処理はステップS63に移り、この判定がNOの場合処理はステップS70に移る。
ステップS63において、CPU31は、グラフ対象期間データ700(図5参照)を参照して、グラフ対象期間を特定する。なお、グラフ対象期間データ700が示すグラフ対象期間の初期値は、例えば今日1日間である。その後、処理はステップS64に移る。
ステップS64において、CPU31は、プレイ履歴データベース250(図6(3)参照)を用いて、ステップS63で特定したグラフ対象期間にプレイされた全てのアプリのプレイ履歴のグラフを、上側LCD22に表示させる。その後、処理はステップS65に移る。
ステップS65において、CPU31は、プレイ履歴データベース250を用いて、グラフ対象期間にプレイされた各アプリの総プレイ時間を算出する。その後、処理はステップS66に移る。
ステップS66において、CPU31は、ステップS65で算出した各アプリの総プレイ時間を用いて、グラフ対象期間において最も長時間プレイされたアプリのメタデータ(典型的にはアイコン及び名称)を、上側LCD22に表示させる。その後、処理はステップS67に移る。
図15は、上記したステップS63〜S66の処理によって上側LCD22に表示される、グラフ対象期間にプレイされた全てのアプリのプレイ履歴のグラフとグラフ対象期間に最も長時間プレイされたアプリのメタデータの一例を示す図である。図15では、2010年4月30日の1日間がグラフ対象期間である。図15に示すように、この1日間では3つのアプリがプレイされており、各アプリのプレイ時間は棒グラフを構成するG10、G11、G12の長さ(大きさ)で示される。図15では、G10に対応するアプリが最も長時間プレイされたアプリである。そして、図15には、この最も長時間プレイされたアプリのメタデータであるレースゲームXのアイコンG13及び名称G14が表示されている。
ステップS67において、CPU31は、ユーザによってグラフ対象期間を変更する指示(操作)が行われたか否かを判定する。ステップS67での判定がYESの場合処理はステップS69に移り、この判定はNOの場合処理はステップS68に移る。
ステップS69において、CPU31は、グラフ対象期間データ700を、ステップS67で指示を受けた変更後のグラフ対象期間を示すデータに変更する。その後、処理はステップS63に戻って、変更後のグラフ対象期間を反映した新たなグラフ等が表示される。
ステップS68において、CPU31は、ユーザの操作によってプレイ履歴表示の終了指示が行われたか否かを判定する。ステップS68での判定がYESの場合プレイ履歴アプリ処理は終了して図8のメイン処理のステップS13に移り、この判定がNOの場合処理はステップS64に戻ってグラフ等の表示が継続される。
ステップS70において、CPU31は、プレイ履歴アプリメニュー画面のアプリ図鑑の操作子がユーザによって選択操作されたか否かを判定する。ステップS70での判定がYESの場合処理はステップS71に移り、この判定がNOの場合処理はステップS61に移ってプレイ履歴アプリのメニュー画面の表示が継続される。
ステップS71において、CPU31は、図16に示すように、保存用データメモリ34のアプリ記憶領域100に記憶されている全てのアプリのアイコン(メタデータ)を下側LCD12に一覧表示させる。その後、処理はステップS72に移る。
ステップS72において、CPU31は、ステップS71で表示させたアイコンのうちの何れかがユーザの操作によって選択されているか否かを判定する。ステップ72での判定がYESの場合処理はステップS73に移り、この判定がNOの場合処理はステップS75に移る。
ステップS73において、CPU31は、図16に示すように、ステップS72で選択されていると判定したアイコンが表すアプリのメタデータ(アイコン以外のメタデータも含む)とこのアプリのプレイ履歴を、上側LCD22に表示させる。図16では、ステップS72でユーザによって選択されていると判定されたアイコンG15が下側LCD12において強調表示され、上側LCD22においてこのアイコンG15、アプリ名称G16、及びプレイ履歴に関わる情報G17が表示される。なお、プレイ履歴に関わる情報G17は、プレイ時間、プレイ回数、平均プレイ時間、初プレイ日、最終プレイ日等である。その後、処理はステップS74に移る。
ステップS74において、CPU31は、ユーザによってアプリ図鑑表示の終了指示が行われたか否かを判定する。ステップS74での判定がYESの場合プレイ履歴アプリ処理は終了して図8のメイン処理のステップS13に移り、この判定がNOの場合処理はステップS71に戻ってアイコンの一覧表示等が継続される。
ステップS75において、CPU31は、ユーザの操作によって下側LCD12の操作子(図示せず)が選択されてアプリのランキング表示が指示されたか否かを判定する。ステップ75での判定がYESの場合処理はステップS76に移り、この判定がNOの場合処理はステップS71に戻ってアイコンの一覧表示が継続される。
ステップS76において、CPU31は、プレイ履歴データベース250(図6(3)参照)を用いて、ランキング条件データ800(図5参照)が示すランキング条件に基づいたアプリのランキングを生成する。その後、処理はステップS77に移る。
ステップS77において、CPU31は、ステップS76で生成したランキングを、メタデータを用いて下側LCD12に表示させる。図17は、ステップS77の処理によって表示されるアプリのランキング画像の一例である。図17では、プレイされた回数が多いアプリのランキングが表示されており、アプリのメタデータであるアイコンG18及び名称G19が用いられている。その後、処理はステップS78に移る。
ステップS78において、CPU31は、ユーザによってランキング条件の変更指示が行われたか否かを判定する。ステップS78での判定がYESの場合処理はステップS79に移り、この判定がNOの場合処理はステップS80に移る。
ステップS79において、CPU31は、保存用データメモリ34のランキング条件データ800を、ステップS78で変更指示されたランキング条件を示すデータに変更する。その後、処理はステップS76に戻って、新たなランキング条件に基づいたランキングが表示される。
ステップS80において、CPU31は、ユーザによってアプリ図鑑表示の終了指示が行われたか否かを判定する。ステップS80での判定がYESの場合プレイ履歴アプリ処理は終了して図8のメイン処理のステップS13に移り、この判定がNOの場合処理はステップS76に戻ってランキング表示が継続される。
以上に説明したように、プレイ履歴アプリ処理によって、メタデータを用いた態様で、アプリケーションを一覧表示したりアプリケーションをランキング等することができる。
[すれ違い通信処理]
次に、保存用データメモリ34に記憶されたすれ違い通信プログラム90がCPU31及び無線通信モジュール37によって実行されることによって実現されるすれ違い通信処理について説明する。ゲーム装置1と他のゲーム装置1がそれぞれすれ違い通信処理を実行することで、両方が同じアプリを実行可能な場合に、これらのゲーム装置1の間でそのアプリに定められた所定情報の送受信が行われる。
図18は、すれ違い通信処理の一例を示す通信シーケンス図である。図18では、自ゲーム装置1が他のゲーム装置1に対して接続要求フレームを送信する場合を示している。ゲーム装置1は、通信可能圏内に存在する他のゲーム装置1に対して、接続要求フレームD6(ビーコンフレーム)をブロードキャスト送信する。他のゲーム装置1は、接続要求フレームD6を受信すると、この接続要求フレームD6の送信元のゲーム装置1に対して、接続応答フレームD7を送信する。
自ゲーム装置1は、この接続応答フレームD7を受信すると、他のゲーム装置1に対して、自機の送信ボックスデータ500a(図7参照)を含んだデータフレームD8を送信する。ここで、送信ボックスデータ500aには、対応するアプリIDデータ102c(図7(1)参照)が付加される。例えば、後述するすれ違いアプリでは、すれ違いアプリのIDデータと、自機のお気に入りアプリのメタデータと、自機の直近使用アプリのメタデータとがデータフレームD8に含められる(図7(2)参照)。他のゲーム装置1は、このデータフレームD8を受信すると、自ゲーム装置1に対して、自ら生成したデータフレームD8を返信する。本実施形態では、この様な一連の通信が所定周期で繰り返し行われる。なお、自ゲーム装置1が接続要求フレームD6を受信する場合には、図18において、自ゲーム装置1の記載と他のゲーム装置1の記載とを入れ替えて考えればよい。
以下に、図19を用いて、すれ違い通信処理によって送受信されるフレームD6〜D8について説明する。図19(1)は、接続要求フレームD6の一例を示す図である。接続要求フレームD6は、フレームタイプF_TYP、送信元MAC(Media Access Control)アドレス、及びアプリIDリストを含む。フレームタイプF_TYPは、当該フレームの種別を示しており、この場合には接続要求フレームD6であることを示す情報が記述される。アプリIDリストは、この接続要求フレームD6を送信するゲーム装置1のすれ違いボックスデータ500内の全てのアプリIDデータ102c(図7(1)参照)のリストである。言い換えれば、アプリIDリストは、保存用データメモリ34のアプリ記憶領域100に記憶されているアプリケーション及びゲーム装置1に装着された状態のカートリッジ29に記憶されているカードアプリのうちすれ違い通信を行うもの全てのアプリIDのリストである。また、言い換えれば、アプリIDリストは、自ゲーム装置1で実行可能な状態であり、かつすれ違い通信を行う全てのアプリケーションのアプリIDのリストである。
図19(2)は、接続応答フレームD7の一例を示す図である。接続応答フレームD7は、フレームタイプF_TYP、宛先MACアドレス、送信元MACアドレス及びアプリIDリストを含む。フレームタイプF_TYPには、接続応答フレームD7であることを示す情報が記述される。アプリIDリストは、この接続応答フレームD7を送信するゲーム装置1のすれ違いボックスデータ500内の全てのアプリIDデータ102c(図7(1)参照)のリストである。
図19(3)は、データフレームD8の一例を示す図である。データフレームD8は、フレームタイプF_TYP、宛先MACアドレス、送信元MACアドレス、アプリIDデータ及び送信ボックスデータを含む。フレームタイプF_TYPには、データフレームD8であることを示す情報が記述される。
以下では、図20を用いて、ゲーム装置1が実行するすれ違い通信処理について説明する。図20は、ゲーム装置1が実行するすれ違い通信処理の一例を示すフローチャートである。すれ違い通信処理は、所定周期毎に(例えば数秒に1回の短い時間間隔で)繰り返し実行される。
まず、ステップS91において、無線通信モジュール37は、応答時刻から所定時間経過したMACアドレスを自メモリ(無線通信モジュール37の内部メモリ)に記憶しているか否かを判定する。ここで、応答時刻とは、後述するステップS105において接続応答フレームD7を送信した時点の時刻、又は、後述するステップS96において通信相手装置に送信ボックスデータを送信した時点の時刻である。ステップS91での判定がYESの場合処理はステップS92に移り、この判定がNOの場合処理はステップS93に移る。
ステップS92において、無線通信モジュール37は、このMACアドレスを削除する。その後、処理はステップS93に移る。
ステップS93において、無線通信モジュール37は、自機のアプリIDリストを含む接続要求フレームD6(図19(1)参照)を生成してブロードキャスト送信する。その後、処理はステップS94に移る。
ステップS94において、無線通信モジュール37は、他機のアプリIDリストを含む接続応答フレームD7(図19(2)参照)を受信したか否かを判断する。ステップS94での判定がYESの場合処理はステップS95に移り、この判定がNOの場合処理はステップS102に移る。
ステップS95において、無線通信モジュール37は、受信した接続応答フレームD7に含まれる他機のアプリIDリストを構成するアプリIDのうちの少なくとも1つが自機のアプリIDリストを構成するアプリIDと一致するか否かを判定する。ステップS95での判定がYESの場合処理はステップS96に移り、この判定がNOの場合今回のすれ違い通信処理は終了する。なお、無線通信モジュール37は、電源がオンされたときに自メモリに自機のアプリIDリストを記憶しておき、このアプリIDリストを用いてステップS95の判定を行う。
ステップS96において、無線通信モジュール37は、ステップS95で一致したアプリIDのアプリケーションに対応する送信ボックスデータを、CPU31によってすれ違いボックスデータ500(図7(1)参照)から読み出させ、データフレームD8に含めて通信相手装置(接続応答フレームD7の送信元)に送信する。その後、処理はステップS97に移る。
ステップS97において、無線通信モジュール37は、通信相手装置(接続応答フレームD7の送信元)のMACアドレスと、ステップS96で送信ボックスデータを送信した時刻(応答時刻)とを自メモリに記憶する。その後、処理はステップS98に移る。ここで、通信相手装置のMACアドレス及び応答時刻は、後述のステップS103において当該応答時刻から所定時間内には同じ通信相手との通信を禁止するために用いられる。このことによって、短期間のうちに同じ相手と重複した通信を行うことを回避できる。なお、応答時刻から所定時間経過した時には、上記ステップS91及びS92の処理によって通信相手装置のMACアドレスは削除されて、通信の禁止は解除される。
ステップS98において、無線通信モジュール37は、通信相手装置の送信ボックスデータ(データフレームD8)の受信処理を既に行っているか否かを判定する。ステップS98での判定がYESの場合すれ違い通信処理は終了し、この判定がNOの場合処理はステップS99に移る。
ステップS99において、無線通信モジュール37は、通信相手装置から送信ボックスデータ500a(データフレームD8)を受信するための処理を実行する。すれ違い通信処理を行う2つのゲーム装置1は、データフレームD8を相互に送受信し合うため、自ゲーム装置1が未だデータフレームD8を受信していない場合、ステップS99に処理が進められるのである。そして、ステップS99において、通信相手装置から送信ボックスデータ500aを受信した場合処理はステップS100に移り、受信しなかった場合すれ違い通信処理は終了する。
ステップS100において、無線通信モジュール37は、CPU31に指示して、ステップS99で受信した通信相手装置の送信ボックスデータを、自機の受信ボックスデータ500b(図7参照)として記憶させる。その際、CPU31は、送信ボックスデータに付加されているアプリIDデータが示すアプリケーションの受信ボックスデータとして、当該送信ボックスデータを記憶する。つまり、アプリIDデータを用いて、同じアプリケーションの受信ボックスに送信ボックスデータを記憶させる。その後、処理はステップS101に移る。
ステップS101において、無線通信モジュール37は、自機の送信ボックスデータ(データフレームD8)の送信処理を既に行っているか否かを判定する。ステップS101での判定がYESの場合すれ違い通信処理は終了し、この判定がNOの場合処理はステップS96に移って送信の処理を行う。
一方、ステップS102において、無線通信モジュール37は、他機のアプリIDリストを含む接続要求フレームD6(図19(1)参照)を受信したか否かを判断する。ステップS102での判定がYESの場合処理はステップS103に移り、この判定がNOの場合すれ違い通信処理は終了する。
ステップS103において、無線通信モジュール37は、自メモリに、送信元のMACアドレスが記憶されているか否かを判定する。ステップS103での判定がYESの場合今回のすれ違い通信処理は終了し、この判定がNOの場合処理はステップS104に移る。この処理によって、短期間に同じ相手と重複した通信を行うことを回避できる。
ステップS104において、無線通信モジュール37は、受信した接続要求フレームD6に含まれる他機のアプリIDリストを構成するアプリIDのうちの少なくとも1つが自機のアプリIDリストを構成するアプリIDと一致するか否かを判定する。ステップS104での判定がYESの場合処理はステップS105に移り、この判定がNOの場合今回のすれ違い通信処理は終了する。なお、無線通信モジュール37は、電源がオンされたときに自メモリに自機のアプリIDリストを記憶しておき、このアプリIDリストを用いてステップS104の判定を行う。
ステップS105において、無線通信モジュール37は、自機のアプリIDリストを含む接続応答フレームD7(図19(2)参照)を生成して、通信相手装置(接続要求フレームの送信元)に送信する。その後、処理はステップS106に移る。
ステップS106において、無線通信モジュール37は、通信相手装置(接続要求フレームD6の送信元)のMACアドレスと、ステップS105で接続応答フレームD7を送信した時刻(応答時刻)とを自メモリに記憶する。その後、処理はステップS99に移り、上述のデータフレームD8の受信処理が行われる。ここで、通信相手装置のMACアドレス及び応答時刻は、当該応答時刻から所定時間内には同じ通信相手との通信を禁止するために用いられる。このことによって、短期間に同じ相手と重複した通信を行うことを回避できる。なお、応答時刻から所定時間経過した時には、上記ステップS91及びS92の処理によって通信相手装置のMACアドレスは削除されて、通信の禁止は解除される。
[すれ違いアプリ処理]
次に、保存用データメモリ34のアプリ記憶領域100に記憶されるアプリケーションの一例であるすれ違いアプリが、CPU31によって実行されることによって実現されるすれ違いアプリ処理について説明する。図21は、すれ違いアプリ処理の一例を示すフローチャートである。なお、すれ違いアプリ処理は、図8のメイン処理におけるステップS12で実行されるアプリケーション処理の一例である。
まず、ステップS111において、CPU31は、すれ違いアプリの受信ボックス500b(図7(2)参照)に新着データがあるか否かを判定する。具体的には、CPU31は、図20を用いて説明したすれ違い通信処理によって、すれ違いアプリの受信ボックス500bに、他機のお気に入りアプリのメタデータ及び他機の直近使用アプリのメタデータが新たに記憶されているか否かを判定する。ステップS111での判定がYESの場合処理はステップS112に移り、この判定がNOの場合処理はステップS115に移る。
ステップS112において、CPU31は、すれ違いアプリの受信ボックス500bの新着データをメインメモリ32に取り込んで、すれ違いアプリの受信ボックス500bを空にする(S113)。その後、処理はステップS114に移る。
ステップS114において、CPU31は、図10のメタデータ登録処理を行う。ここで、ステップS114におけるメタデータ登録処理では、すれ違いアプリの受信ボックス500bに新着した他機のお気に入りアプリ及び直近使用アプリのメタデータが、登録対象メタデータとなる。このことから、この登録対象メタデータが自機アプリ領域201及び他機アプリ領域202のいずれにも登録されていない場合、この登録対象メタデータは、他機アプリ領域202に登録される(S24)。なお、この登録対象メタデータが自機アプリ領域201に登録されている場合又は他機アプリ領域202に登録されている場合、この登録対象メタデータは、メタデータデータベース200に登録されることはない(S26でNO)。その後、処理はステップS115に移る。
ステップS115において、CPU31は、過去にすれ違い通信処理で受信した相手(他機)のお気に入りアプリのメタデータ及び直近使用アプリのメタデータ(典型的にはアイコン及びアプリの名称)を、下側LCD12に一覧表示させる。その後、処理はステップS116に移る。
ステップS116において、CPU31は、ユーザの操作によって何れかのメタデータが選択されたか否かを判定する。ステップS116での判定がYESの場合処理はステップS117に移り、この判定がNOの場合処理はステップS115に戻ってメタデータの一覧表示が継続される。
ステップS117において、CPU31は、後に説明するアプリ選択時処理を行って、ステップS116で選択されたメタデータに対応するアプリケーションの詳細情報やそれに含まれる購入情報(ガイド情報)をサーバ4から取得し、更にはアプリケーション自体をサーバ4からダウンロードする。その後、処理はステップS115に戻って、メタデータの一覧表示が継続される。
[メッセージアプリ処理]
次に、保存用データメモリ34のアプリ記憶領域100に記憶されるアプリケーションの一例であるメッセージアプリが、CPU31によって実行されることによって実現されるメッセージアプリ処理について説明する。図22は、メッセージアプリ処理の一例を示すフローチャートである。なお、メッセージアプリ処理は、図8のメイン処理におけるステップS12で実行されるアプリケーション処理の一例である。
まず、ステップS121において、CPU31は、下側LCD12に、メッセージアプリのメインメニュー画面を表示させる。このメインメニュー画面には、「メッセージ作成」の操作子及び「メッセージ受信」の操作子が含まれる。その後、処理はステップS122に移る。
ステップS122において、CPU31は、ユーザの操作によって、メッセージ作成の操作子が選択されたか否かを判定する。ステップS122での判定がYESの場合処理はステップS123に移り、この判定がNOの場合処理はステップS130に移る。
ステップS123において、CPU31は、下側LCD12に、メッセージ作成画面を表示させる。その後、処理はステップS124に移る。
ステップS124において、CPU31は、ユーザの操作によって、アプリケーションのメタデータを、メッセージに貼り付ける指示が行われたか否かを判定する。ステップS124での処理がYESの場合処理はステップS125に移り、この判定がNOの場合処理はステップS128に移る。
ステップS125において、CPU31は、下側LCD12に、メタデータデータベース200に記憶されているメタデータ(典型的にはアイコン)を一覧表示させる。その後、処理はステップS126に移る。
ステップS126において、CPU31は、ユーザの操作によって、一覧表示させたメタデータの何れかが選択されたか否かを判定する。ステップS126での判定がYESの場合処理はステップS127に移り、この判定がNOの場合処理はステップS125に戻ってメタデータの一覧表示が継続される。
ステップS127において、CPU31は、ユーザに選択されたメタデータを、作成中のメッセージに貼り付ける。その後、処理はステップS128に移る。
ステップS128において、CPU31は、ユーザの操作によって、メッセージの送信指示が行われたか否かを判定する。ステップS128での判定がYESの場合処理はステップS129に移り、この判定がNOの場合処理はステップS123に戻ってメッセージ作成画面の表示が継続される。
ステップS129において、CPU31は、無線通信モジュール37を用いて、送信指示が行われたメッセージをサーバ4に送信する。その後、処理はステップS121に戻ってメニュー画面が表示される。
一方、ステップS130において、CPU31は、ユーザの操作によって、メッセージ受信の操作子が選択されたか否かを判定する。ステップS130での判定がYESの場合処理はステップS131に移り、この判定がNOの場合処理はステップS121に戻ってメニュー画面の表示が継続される。
ステップS131において、CPU31は、無線通信モジュール37を用いてサーバ4に接続して、サーバ4から自分(自機)宛てのメッセージを受信する。その後、処理はステップS132に移る。
ステップS132において、CPU31は、サーバ4から受信したメッセージにメタデータ(典型的にはアイコン)が貼り付けられているか否かを判定する。ステップS132での判定がYESの場合処理はステップS133に移り、この判定がNOの場合処理はステップS136に移る。
ステップS133において、CPU31は、貼り付けられていたメタデータと共にメッセージを、下側LCD12等に表示する。その後、処理はステップS134に移る。
ステップS134において、CPU31は、ユーザの操作によって、表示されたメタデータが選択されるまで待機し、選択されると処理はステップS135に移る。
ステップS135において、CPU31は、後に説明するアプリ選択時処理を行って、ステップS134で選択されたメタデータに対応するアプリケーションの詳細情報やそれに含まれる購入情報(ガイド情報)、そしてアプリケーション自体をサーバ4からダウンロードする。その後、処理はステップS121に戻って、メニュー画面の表示が行われる。
一方、ステップS136において、CPU31は、受信したメッセージを、下側LCD12等に表示する。その後、処理はステップS121に戻って、メニュー画面の表示が行われる。
[アプリ選択時処理]
以下に、図23を用いて図21のすれ違いアプリ処理のステップS117及び図22のメッセージアプリ処理のステップS135で実行されるアプリ選択時処理を説明する。図23はアプリ選択時処理の一例を示すフローチャートである。
まず、ステップS141において、CPU31は、図21のステップS116又は図22のステップS134で選択されたと判定されたメタデータが示すアプリケーションの詳細情報のダウンロード要求を、ネットワーク3を通じてサーバ4に送信する。なお、この要求には、選択されたと判定されたメタデータに対応するアプリケーションIDが含まれている。その後、処理はステップS142に移る。
ステップS142において、CPU31は、ステップS141でダウンロード要求した詳細情報をサーバ4から受信するまで待機し、この詳細情報をサーバ4から受信したと判定した場合、処理をステップS143に進める。
ステップS143において、CPU31は、詳細情報に基づいてアプリ紹介画面を生成して、下側LCD12又は上側LCD22に表示する。その後、処理はステップS144に移る。ここで、アプリ紹介画面には、アプリを紹介する画像やアプリの説明文が表示されるとともに、そのアプリを購入するために必要な金額(またはお金の代わりとなるポイント)など、ユーザがそのアプリを購入する判断をするために必要な情報が表示される。また、所定の場合(後述するステップS144でYESと判定される場合)には、アプリ紹介画面には、そのアプリを購入するための操作をユーザから受付けるユーザインターフェース(典型的には、ユーザがクリック操作可能な「購入ボタン」が表示され、当該ボタンに対するクリック操作の受付け処理がされる)が提供される。なお、ステップS142で受信した詳細情報に対応するアプリケーションをサーバ4が販売していない場合、アプリ紹介画面には、アプリを購入するための操作をユーザから受付けるユーザインターフェースは提供されない(つまり「購入ボタン」は表示されない)。
ステップS144において、CPU31は、ステップS134で表示したアプリ紹介画面に「購入ボタン」の操作子が表示されているか否かを判定する。ステップS144での判定がYESの場合処理はステップS145に移り、この判定がNOの場合アプリ選択時処理は終了する。
ここで、サーバ4は、受信したメタデータに対応するアプリケーションを販売(インターネットを介して配信)するショップサーバ(少なくとも、ダウンロード販売のユーザインターフェースを提供するサーバであり、通常は、ダウンロード販売の対象となる複数のアプリケーションが記憶されているサーバ)としての機能を有し、ステップS143で表示されるアプリ紹介画面が商品(アプリ)の購入のためのインターフェースとなる。そして、CPU31は、このインターフェースを用いて、ユーザによるアプリケーションの購入操作があったか否かを判定する。具体的には、ステップS145において、CPU31は、アプリ紹介画面に表示された「購入ボタン」の操作子をユーザが選択したか否かを判定する。ステップS145での判定がYESの場合処理はステップS146に移り、この判定がNOの場合アプリ選択時処理は終了する。
ステップS146において、CPU31は、ステップS145での操作(購入操作)によって受け付けた購入要求を、サーバ4に送信する。その後、処理はステップS147に移る。
ステップS147において、CPU31は、ユーザにアプリケーション購入の最終確認を行うための最終確認画面のデータをサーバ4から受信するまで待機し、最終確認画面のデータを受信したと判定すると処理をステップS148に進める。
ステップS148において、CPU31は、ステップS147で受信した最終確認画面のデータに基づいて、下側LCD12又は上側LCD22に最終確認画面を表示する。ここで、この最終確認画面には、アプリ紹介画面の表示されたアプリケーションを購入することに最終確認するための「最終確認」の操作子が表示されている。その後、処理はステップS149に移る。
ステップS149において、CPU31は、最終確認画面に表示された「最終確認」の操作子をユーザが選択したか否かを判定する。ステップS149での判定がYESの場合処理はステップS150に移り、この判定がNOの場合アプリ選択時処理は終了する。
ステップS150において、CPU31は、最終購入要求及び決済情報をサーバ4に送信する。ここで、決済情報とは、例えばクレジットカード番号や、このサーバ4の提供するサービスにおけるユーザID等である。なお、決済情報がクレジットカード番号等の場合、CPU31は、この番号等をユーザに入力させた後に送信を行う。その後、処理はステップS151に移る。
ステップS151において、CPU31は、サーバ4から購入したアプリケーションが受信されるまで待機し、受信された場合処理をステップS152に進める。
ステップS152において、CPU31は、受信したアプリケーションを保存用データメモリ34に記憶させる。その後、処理はステップS153に移る。
ステップS153において、CPU31は、ステップS152で記憶したアプリケーション(アプリ本体データ101)に対応するプレゼントフラグ(図5参照)をONに設定する。その後、アプリ選択時処理は終了する。
[サーバ4のデータ配信動作]
以下に図24を用いて、サーバ4が、上記アプリ選択時処理を実行するゲーム装置1に対して上記詳細情報や、アプリケーションを配信するためのデータ配信処理を説明する。図24はサーバ4のデータ配信処理の一例を示すフローチャートである。この処理は、サーバ4が例えば電源がオンされたときや所定のモードに設定されたときに実行される。
まず、ステップS161において、CPU65は、詳細情報のダウンロード要求を受信するまで待機し、受信した場合処理をステップS122に進める。なお、この要求は、図23のステップS141においてゲーム装置1から送信される。
ステップS162において、CPU65は、ステップS161で受信した詳細情報のダウンロード要求に含まれるアプリケーションIDでRAM64に格納されているテーブルT(図4参照)を検索して、このアプリケーションIDが対応するアプリの詳細情報を特定する。その後、処理はステップS163に移る。
ステップS163において、CPU65は、RAM64に格納されているテーブルTのオンライン販売情報を参照して、ステップS161で受信した詳細情報のダウンロード要求に含まれるアプリケーションIDが対応するアプリケーションがサーバ4でオンライン販売されているか否かを判定する。ステップS163での判定がYESの場合処理はステップS164に移り、この判定がNOの場合処理はステップS172に移る。
ステップS164において、CPU65は、図23のステップS143においてゲーム装置1がアプリ紹介画面を表示するための詳細情報を生成する。ここで、ステップS164で生成される詳細情報は、図23のステップS145等で説明した「購入ボタン」の操作子があるアプリ紹介画面を表示するためのものである。その後、処理はステップS165に移る。つまり、ステップS164で生成される詳細情報は、アプリの紹介画像や説明文、そのアプリを購入するために必要な金額など、ユーザがそのアプリを購入の判断をするために必要な情報を含み、また、そのアプリを購入するための操作を受付けるユーザインターフェースを提供するための情報を含む。
ステップS165において、CPU65は、ステップS164で生成した詳細情報を、ステップS161で受信した詳細情報のダウンロード要求を行ったゲーム装置1(以下、配信先ゲーム装置1という)にネットワーク3を通じて送信する。その後、処理はステップS166に移る。
ステップS166において、CPU65は、所定期間待機して配信先ゲーム装置1から購入要求を受信したか否かを判定する。なお、この購入要求は、図23のステップS146において、購入先ゲーム装置1が送信するものである。ステップS166での判定がYESの場合処理はステップS167に移り、この判定がNOの場合処理はステップS161に戻る。
ステップS167において、CPU65は、最終確認画面のデータをRAM64から読み出して配信先ゲーム装置1にネットワーク3を通じて送信する。なお、この最終確認画面のデータは、図23のステップS147で配信先ゲーム装置1が受信する。その後、処理はステップS168に移る。
ステップS168において、CPU65は、所定の期間待機して配信先ゲーム装置1から最終購入要求及び決済情報を受信したか否かを判定する。なお、この最終購入要求及び決済情報は、図23のステップS150において、配信先ゲーム装置1が送信するものである。ステップS168での判定がYESの場合処理はステップS169に移り、この判定がNOの場合処理はステップS161に戻る。
ステップS169において、CPU65は、決済処理を実行する。この決済処理は、例えばクレジットカード番号に基づく決済処理等である。また、サーバ4がユーザIDに対応づけてユーザポイントを管理している場合には、決済処理はユーザポイントから配信するアプリケーションの対価となる分のポイントを減算する処理等である。その後、処理はステップS170に移る。
ステップS170において、CPU65は、配信対象のアプリケーションを配信先ゲーム装置1にネットワーク3を通じて配信する。なお、配信されたこのアプリケーションは、図23のステップS151で配信先ゲーム装置1に受信される。その後、処理はステップS121に戻る。
一方、ステップS172において、CPU65は、図23のステップS141においてゲーム装置1に要求されたアプリのアプリ紹介画面を表示するための詳細情報を生成する。ここで、ステップS172で生成される詳細情報は、図23のステップS145等で説明した「購入ボタン」の操作子が無いアプリ紹介画面を表示するためのものである。その後、処理はステップS173に移る。
ステップS173において、CPU65は、詳細情報を、配信先ゲーム装置1にネットワーク3を通じて送信する。その後、処理はステップS161に戻る。
以上に説明したように、本実施形態によれば、ゲーム装置1は、自ら実行するアプリケーションのメタデータを登録し、また、各種の通信処理によって他のゲーム装置1との間でアプリケーションのメタデータを送受信して受信したメタデータを登録する。そして、ゲーム装置1は、登録されているメタデータを、複数のアプリケーションで使用(利用)することができる。また、ゲーム装置1は、過去にゲーム装置1に装着されたことがあり現在は取り外されているカートリッジ29に記憶されたカードアプリ(つまり、過去に実行等したことがあるが現在自装置にはないアプリ)のメタデータであっても、各種のアプリケーションで使用(利用)することができる。
[本実施形態の変形例]
なお、本実施形態では、DLアプリのメタデータは、プレゼントアイコン状態から固有のアイコンの状態に切り替わる時にメタデータデータベース200に登録されている。しかし、DLアプリのメタデータは、当該DLアプリが起動される時にメタデータデータベース200に登録されてもよい。この場合、図8のメイン処理において、ステップS16のメタデータ登録処理は、ステップS15でNOと判定された直後の位置に移動することとなる。
また、本実施形態では、カードアプリのメタデータは、カートリッジ29がゲーム装置1に挿入された時点でメタデータデータベース200に登録されている。しかし、カードアプリのメタデータは、挿入時ではなくアプリの起動時にメタデータデータベース200に登録されてもよい。この場合、図8のメイン処理において、ステップS4のメタデータ登録処理は、ステップS19でYESと判定された直後の位置に移動することとなる。
また、本実施形態では、内蔵アプリのメタデータは、初めて起動された内蔵アプリ毎に、メタデータデータベース200に登録された。しかし、何れかの内蔵アプリが起動された時点で、全ての内蔵アプリのメタデータが一括してメタデータデータベース200に登録されるものとしてもよい。更には、全ての内蔵アプリのメタデータが、ゲーム装置1の販売当初からメタデータデータベース200に登録されているものとしてもよい。
また、本実施形態において、メタデータデータベース200に登録されないアプリケーションが存在してもよい。
また、メタデータを利用するアプリケーションは、本実施形態に挙げたようなアプリ(フレンドアプリ、プレイ履歴アプリ、すれ違いアプリ等)には限らない。例えば、レースゲームやスポーツゲーム等の様々なアプリでメタデータを利用してもよい。
また、メタデータの利用形態は、本実施形態に挙げた利用形態には限られない。例えば、メタデータである仕向地データ102h(図6(1)参照)が示す仕向地(販売地域)に応じて、ゲーム装置1の仕向地と合致しないアプリケーションのメタデータ(アイコン等)は非表示とする利用形態も考えられる。また、例えば、ユーザの年齢を予めゲーム装置1に登録するものとし、アプリケーションのメタデータであるレーティングデータ102iとユーザの年齢に基づいて、条件を満たさないアプリケーションのメタデータ(アイコン等)を非表示とする利用形態も考えられる。
また、本実施形態では、メタデータは、自機アプリ領域と他機アプリ領域とに分けて記憶されている(図6(2)参照)。しかし、メタデータは、このように分けて記憶しなくてもよい。
また、本実施形態では、アプリケーションのバージョンが異なる場合、各バージョンのメタデータがメタデータデータベース200に登録される(図10のS21参照)。しかし、本実施形態において、新バージョンのメタデータをメタデータデータベース200に登録する際に、旧バージョンのメタデータに上書きする構成としてもよい。
また、本実施形態では、メタデータをメタデータデータベース200に追加する際に、既に同一のメタデータが登録されている場合、処理を行わず、上書きする処理は実行していない(図10参照)。しかし、この場合に、上書きする処理を実行してもよい。
また、本実施形態では、図5のアプリ記憶領域100に蓄積して記憶されるべきメタデータ(つまり、内蔵アプリ及びDLアプリのメタデータ)は、常に、対応するアプリケーションとセットで記憶されている。しかし、このメタデータは、アプリケーション起動時等にサーバ4からダウンロードされることによって、対応するアプリケーションとセットにされて図5のアプリ記憶領域100に記憶されてもよい。この場合、ゲーム装置1は、内蔵アプリ又はDLアプリの起動時等に、サーバ4にアプリIDを送信することによって、必要なメタデータをダウンロードすることとなる。また、このメタデータ(ゲーム装置1の発売時に既にリリースされているアプリのメタデータに限られる)を、ゲーム装置1の保存用データメモリ34等に当初から内蔵されている構成としておいて、アプリケーション起動時等に、対応するアプリケーションとセットにされて図5のアプリ記憶領域100に記憶されることとしてもよい。
また、本実施形態では、カートリッジ29(又はメモリカード28)にはアプリケーションとメタデータとがセットで記憶されており、カートリッジ29等がゲーム装置1に挿入された時点でこのメタデータがメタデータデータベース200に登録された(図8のS2及びS4参照)。しかし、カートリッジ29等にはメタデータが記憶されていない構成にして、カートリッジ29等がゲーム装置1に挿入された時点でメタデータがサーバ4からダウンロードされてメタデータデータベース200に登録されてもよい。
また、本実施形態では、カードアプリは、カートリッジ29又はメモリカード28に記録されているものとした。しかし、カードアプリは、光ディスクやその他の記録媒体に記録されているものとしてもよい。
また、本実施形態は、本発明を携帯型のゲーム装置1に適用したものであるが、本発明はゲーム装置に限定されない。例えば、携帯電話機、簡易型携帯電話機(PHS)、PDA等の携帯情報端末にも本発明の適用は可能である。また、据え置き型ゲーム機やパーソナルコンピュータ等にも本発明の適用は可能である。
また、本実施形態では、1つのサーバ4で上述した処理を実行しているが、複数のサーバで上記処理を分担してもよい。例えば、あるサーバが詳細情報をゲーム装置1に提供するための処理を行い、他のサーバが決済画面(決済関連情報)をゲーム装置1に表示させるための処理を行い、更に他のサーバが決済処理を行って購入されたアプリケーションをゲーム装置1に送信する構成等を採用してもよい。また、本実施形態では、1つのゲーム装置1で上述した処理を実行しているが、互いに通信可能に接続された複数の装置で上記処理を分担してもよい。
また、本実施形態では、カードアプリは、アプリ記憶領域100(図5参照)に記憶されないものとして説明した。しかし、カードアプリは、カートリッジ29等が装着された際に、DLアプリと同様に、対応するメタデータと共にアプリ記憶領域100に蓄積して記憶される構成としてもよい。つまり、カートリッジ29等が装着されたことのあるカードアプリは、ゲーム装置1に蓄積されて、カートリッジ29等が取り外された後にも実行できる構成としてもよい。この場合、図8のステップS4の直前に、ゲーム装置1に挿入されたカートリッジ29に記憶されたカードアプリ及びメタデータをアプリ記憶領域100に記憶させる処理が追加されることとなる。
また、本実施形態において、ゲーム装置1に一旦記憶された内蔵アプリ及びDLアプリがユーザの操作等によって削除された場合であっても、これらのアプリに対応するメタデータ等は保存用データメモリ34から削除されずに残る構成としてもよい。このような構成にすることによって、ゲーム装置1から削除されたアプリのメタデータを同様に利用できることとなる。
また、本実施形態において、ゲーム装置1の形状や、それに設けられている各種操作ボタン14等、タッチパネル13の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず、本発明の範囲を逸脱しなければ他の順序や値であっても、本発明を実現できることは言うまでもない。
また、本実施形態において、メイン処理プログラム80等の各種プログラムは、ゲーム装置1内部の不揮発性メモリ(保存用データメモリ34等:図5参照)に記録されているが、これらのプログラムは、CD−ROM、DVD、或いはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ等に記憶されていてもよい。また、更には、これらのプログラムは、一時的な記録媒体である揮発性メモリに記録されていてもよい。
以上、本発明を詳細に説明してきたが、上述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。