以下、本発明の一実施形態について、図面を参照して説明する。なお、この実施形態によって本発明が限定されるものではない。
(本発明の一実施形態)
[ゲーム装置の外部構成]
図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では、二点鎖線で示している)が設けられている。この挿入口の内側には、ゲーム装置1とメモリカード28とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード28は、例えばSD(Secure Digital)メモリカードであり、コネクタに着脱自在に装着される。メモリカード28は、例えば、ゲーム装置1によって撮影された画像を記憶(保存)したり、他の装置で生成された画像をゲーム装置1に読み込んだりするために用いられる。
さらに、下側ハウジング11の上側面には、カートリッジ29(本発明の第1記憶部の一例)を収納するための挿入口(図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(本発明の第2記憶部の一例)、プリセットデータ用メモリ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との間で自動的に通信を行い自動的にデータを送受信する。そして、当該通信が完了した後で自動的に通信の切断を行う。この一連の処理が所定周期毎に繰り返し行われる。この通信を以下「すれ違い通信」と記載し、すれ違い通信を行うための処理を「すれ違い通信処理」と記載する。なお、「すれ違い通信処理」の詳細は、図14を用いて後述する。
また、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を介して互いに通信を行い、また、これらを介さずに直接通信を行う(例えば、ローカル通信及びすれ違い通信を行う)ことで互いに通信を行う。
なお、図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、アプリケーションIDが示すアプリケーションに対応するメタデータ、アプリケーションIDが示すアプリケーションの詳細情報及びオンライン販売情報とが対応付けて登録されている。ここで、メタデータとは、図7(1)を用いて後に説明するが、そのアプリケーションに関連する情報であり、例えば、そのアプリケーションを表すアイコンやそのアプリケーションのタイトルである。また、詳細情報は、対応するプリケーションIDによって示されるアプリケーションの詳細情報であり、例えば、アプリケーションの内容や価格を示す情報である。また、オンライン販売情報は、サーバ4によるアプリケーションのオンライン販売(配信)の有無を示す情報である。
CPU65は、ゲーム装置1からの詳細情報の配信要求に応じて、この要求に含まれるメタデータでテーブルTを検索してメタデータに対応する詳細情報を読み出し、この詳細情報をゲーム装置1に送信等する。
[ゲーム装置が実行する処理の概要]
以下では、ゲーム装置1が実行する処理の概要について説明する。ゲーム装置1が実行するアプリケーションは、内蔵アプリケーション(以下、内蔵アプリという)と、カードアプリケーション(以下、カードアプリという)と、ダウンロードアプリケーション(以下、DLアプリという)に分類される。
内蔵アプリは、ゲーム装置1のメーカ出荷時(新品のゲーム装置1の販売時と言ってもよい)に予めゲーム装置1の格納されているアプリケーションである。DLアプリは、ゲーム装置1の外部(典型的にはサーバ4)から有線又は無線でダウンロードされるアプリケーションである。ゲーム装置1は、内蔵アプリ又はDLアプリを初めて実行する時点で、当該内蔵アプリ又は当該DLアプリのメタデータを登録(格納)する。
カードアプリは、カートリッジ29又はメモリカード28(図1参照)に格納されているアプリケーションである。ゲーム装置1は、カートリッジ29がゲーム装置1の挿入口(図1では、一点鎖線で示している)に初めて収納された時点、又はメモリカード28がゲーム装置1の挿入口(図1では、二点鎖線で示している)に初めて収納された時点で、当該カートリッジ29又は当該メモリカード28に格納されているカードアプリを記憶し、そのメタデータを登録する。なお、以下の説明では、説明の簡単のために、カートリッジ29に格納されたアプリケーションのみをカードアプリとして説明して、メモリカード28に格納されたアプリケーションについての説明は省略するが、メモリカード28に格納されたアプリケーションについても同様に考えることができる。
そして、ゲーム装置1は、内蔵アプリ、カードアプリ、又はDLアプリを実行した場合、実行したアプリの履歴(以下、プレイ履歴という)を記録する。
つまり、ゲーム装置1は、アプリケーションの実行時点又は実行可能な状態となった時点で、当該アプリケーションのメタデータを登録し、当該アプリケーションを実行する場合にそのプレイ履歴を記録する。この処理の詳細については、図10を用いて後述する。
また、ゲーム装置1は、後に図15を用いて説明するメッセージアプリ処理によって、他のゲーム装置1との間で、ユーザが作成したメッセージの送受信を行う。その際、ゲーム装置1は、プレイ履歴が記録されているアプリケーションのメタデータ(典型的にはアプリのアイコン又はタイトル)をユーザの指示に応じてメッセージ内に貼り付けて送信し、相手のゲーム装置1のユーザから同様にしてメタデータが貼り付けられたメッセージを受信することができる。このメッセージの送信及び受信は、サーバ4を介した通信、ローカル通信、又はすれ違い通信によって行われる。そして、ゲーム装置1は、相手のゲーム装置1からメタデータの貼り付けられたメッセージを受信した場合には、ユーザの指示に応じて、サーバ4に接続してこのメタデータに対応するアプリケーションの詳細情報を取得して表示する。その後、ゲーム装置1は、この詳細情報を見たユーザがこのアプリケーションを購入(取得)する操作を行った場合には、サーバ4からこのアプリケーションをダウンロードする。
以上に説明したように、ゲーム装置1のユーザは、購入等して自己の装置の記憶領域(自装置に収納されたカートリッジ29又はメモリカード28の記憶領域を含む)に記憶されてプレイしたアプリケーションを、他のゲーム装置1のユーザに、プレイした感想等のメッセージと共に紹介することができる。言い換えると、アプリケーションを紹介される側のゲーム装置1のユーザは、実際にアプリケーションをプレイしたユーザの感想等と共にそのアプリケーションを紹介されることとなる。この結果として、本実施形態によれば、ユーザ間で行われるコンテンツ(商品)の紹介の信頼性を高く保つことができる。
[保存用データメモリのメモリマップ]
次に、ゲーム装置1によって実行される処理の詳細を説明する。まず、図5〜図9を用いて、保存用データメモリ34に記憶されるデータについて説明する。図5は、ゲーム装置1の保存用データメモリ34のメモリマップの一例を示す図である。図5に示すように、保存用データメモリ34には、メイン処理プログラム80とすれ違い通信プログラム90等の各種プログラムが記憶される。また、保存用データメモリ34は、アプリ記憶領域100含み、アプリ記憶領域100には、アプリケーション毎に、アプリ本体データ101とメタデータ102とアプリ用データ103がセットで記憶される。また、保存用データメモリ34には、メタデータデータベース200とすれ違いボックスデータ300とフレンドリストデータ400等の各種データが記憶される。
なお、内蔵アプリのアプリ本体データ101及びメタデータ102は、メーカ出荷時から既に保存用データメモリ34に記憶されている。また、DLアプリのアプリ本体データ101及びメタデータ102は、これらのデータがダウンロードされた時点で保存用データメモリ34に記憶される。また、カードアプリのアプリ本体データ101及びメタデータ102は、カートリッジ29(又は、メモリカード28)がゲーム装置1に挿入(装着)された時点で保存用データメモリ34に記憶される。
保存用データメモリ34の上記データ(アプリ及びプログラムを含む)は、各アプリケーションの実行時に、CPU31によって、必要に応じてメインメモリ32に読み出されて使用され、必要に応じて記憶又は上書きされる。このことによって、CPU31は、メインメモリ32に読み出した各データを用いて、各アプリケーションの処理を実行する。なお、カードアプリのアプリ本体データ101及びメタデータ102は、保存用データメモリ34に記憶されない構成にして、CPU31は、これらのデータをカートリッジ29(又はメモリカード28)から直接メインメモリ32に読み出して処理を実行してもよい。
メイン処理プログラム80は、図10を用いて後述するメイン処理を実現するためのプログラムである。
すれ違い通信プログラム90は、図14を用いて後述するすれ違い通信処理を実現するためのプログラムである。
アプリ本体データ101は、アプリケーションの本体データである。アプリ本体データ101は、例えば、図15を用いて後述するメッセージアプリや、種々のゲームアプリ等の本体データである。
メタデータ102は、対応するアプリ本体データ101にかかるアプリケーションに関する情報を示すメタデータである。以下に、図6を用いて、メタデータ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は、対応するアプリケーションで使用される種々のデータである。以下に、図7を用いて、アプリ用データ103について具体的に説明する。
図7(1)は、メッセージアプリのアプリ用データ103を示す図である。なお、メッセージアプリは、図15等を用いて後述するが、ゲーム装置1が他のゲーム装置1との間でメッセージの送受信等を行うアプリケーションである。
メッセージアプリのアプリ用データ103は、作成/受信メッセージデータ103aと送信トレイデータ103gとを含む。
作成/受信メッセージデータ103aは、ユーザによって作成されたメッセージのデータ及び他のゲーム装置1から受信したメッセージのデータ等から成り、保存されているデータである。図7(1)では、説明の便宜のために、これらのメッセージのデータのうちの1つのみを、保存メッセージデータ103bとして図示している。
保存メッセージデータ103bは、手書きメッセージデータ103cと貼付け画像データ103dと貼付けメタデータ103eとメタデータ貼付け位置データ103fとを含む。手書きメッセージデータ103cは、ユーザがタッチペン27等を用いてタッチパネル13に書いた手書きメッセージのデータである。貼付け画像データ103dは、上記手書きメッセージ内に貼付けられる画像データであり、例えば、内側カメラ23又は外側カメラ25で撮影された画像のデータである。なお、貼付け画像データ103dは、上記画像データが貼付けられる手書きメッセージ内の位置を示すデータを含んでいてもよい。貼付けメタデータ103eは、上記手書きメッセージ内に貼付けられるメタデータであり、典型的には、アプリのアイコン画像データ又はアプリのタイトルデータである。メタデータ貼付け位置データ103fは、上記メタデータが貼付けられる手書きメッセージ内の位置を示すデータである。
送信トレイデータ103gは、保存されている保存メッセージデータ103bのうちから他のゲーム装置1に送信(又は転送)されるために複製され、送信されるまでの間一時的に保存されているデータである。図7(1)では、説明の便宜のために、このデータのうちの1つのみを、送信予定メッセージデータ103hとして図示している。
送信予定メッセージデータ103hは、他のゲーム装置1に送信されるために保存メッセージデータ103bから複製されたデータであり、手書きメッセージデータ103iと貼付け画像データ103jと貼付けメタデータ103kとメタデータ貼付け位置データ103lとを含む。手書きメッセージデータ103iは、手書きメッセージデータ103cから複製されたデータである。貼付け画像データ103jは、貼付け画像データ103dから複製されたデータである。貼付けメタデータ103kは、貼付けメタデータ103eから複製されたデータである。メタデータ貼付け位置データ103lは、メタデータ貼付け位置データ103fから複製されたデータである。
図7(2)は、所定のゲームアプリのアプリ用データ103を示す図である。なお、この所定のゲームアプリは、図17を用いて後述するが、レースゲームアプリ、戦闘ゲームアプリ、パズルゲームアプリ、スポーツゲームアプリ等の様々なゲームアプリである。
所定のゲームアプリのアプリ用データ103は、ユーザがこのゲームアプリのゲームをクリアした場合にこのユーザに提供されるゲームクリア時提供データ103mを含む。ゲームクリア時提供データ103mは、メッセージデータ103nと貼付け画像データ103oと貼付けメタデータ103pとメタデータ貼付け位置データ103qとを含む。メッセージデータ103nは、ユーザがこのゲームアプリのゲームをクリアした場合にこのユーザに提供されるメッセージのデータであり、典型的には、このゲームをクリアしたことを賞賛し証明するメッセージのデータである。貼付け画像データ103oは、上記メッセージ内に貼り付けられる画像のデータであり、予め保存されているデータ、又は、例えば、内側カメラ23でゲームクリア時のユーザを撮影した画像のデータである。なお、貼付け画像データ103oは、上記画像データが貼付けられるメッセージ内の位置を示すデータを含んでいてもよい。貼付けメタデータ103pは、上記メッセージ内に貼付けられるユーザがクリアしたゲームの上記ゲームアプリのメタデータであり、例えば、このアプリのアイコン画像データ又はこのアプリのタイトルデータである。メタデータ貼付け位置データ103qは、上記メタデータが貼付けられるメッセージ内の位置を示すデータである。なお、図7(2)では、ゲームクリア時提供データ103mは1つ(1つのタイプ)であるが、ゲームクリア時提供データ103mは複数のタイプが用意されてもよい。
メタデータデータベース200は、メタデータ102のデータベースである。メタデータデータベース200には、図8(1)に示すように、ゲーム装置1が自ら実行又は実行の準備(具体的にはカートリッジ29等をゲーム装置1に挿入)をしたアプリケーションのメタデータ102及びそのアプリケーションのプレイ履歴を記録したプレイ履歴データ104が、アプリケーション毎に記憶されている。プレイ履歴データ104には、図8(2)に示すように、プレイ毎のプレイデータ1041が記憶されている。各プレイデータ1041は、プレイ開始の日時を示すプレイ開始時刻データ1041aと、プレイ終了の日時を示すプレイ終了時刻データ1041bとから成る。
すれ違いボックスデータ300は、図9(1)に示すように、ゲーム装置1で実行可能な状態の全てのアプリケーション(本実施形態では、アプリ記憶領域100に記憶されているアプリケーション)毎のアプリIDデータ102cと送信ボックスデータ300aと受信ボックスデータ300bとのセットから成る。送信ボックスデータ300aは、図14のすれ違い通信処理によって他のゲーム装置1に送信する送信情報である。受信ボックスデータ300bは、図14のすれ違い通信処理によって他のゲーム装置1から受信する受信情報である。なお、この送信情報及び受信情報は、アプリケーション毎に設定された情報である。
以下に、図15を用いて後述するメッセージアプリのすれ違いボックスデータについて、説明する。図9(2)に示すように、メッセージアプリのすれ違いボックスデータは、メッセージアプリのIDデータ102cと、送信ボックスデータ300aである他のゲーム装置1に送信するメッセージデータ301及び貼付けメタデータ302及びメタデータ貼付け位置データ303と、送信ボックスデータ300bである他のゲーム装置1から受信したメッセージデータ304及び貼付けメタデータ305及びメタデータ貼付け位置データ306とから成る。
フレンドリストデータ400は、ユーザの操作に応じて所定の処理で登録されたフレンドの他のゲーム装置1それぞれを示すフレンドコードのリストデータである。
[メイン処理]
次に、図10を参照して、メイン処理プログラム80に基づいて実行されるCPU31の処理を説明する。図10は、メイン処理の一例を示すフローチャートである。なお、ステップS11でアプリケーションを実行している場合を除いて図10のフローチャートの処理が所定時間毎に繰り返されることによって、メイン処理は進行する。また、以降の全ての図面では、CPU31が実行する各ステップを「S」と略称する。また、以降の説明で、ステップSを単に「S」と略称する場合がある。
まず、ゲーム装置1の電源がオンされてメイン処理プログラム80の実行が開始されると、図10のステップS1において、CPU31は、下側LCD12にメニュー画面を表示させる。図11は、ゲーム装置1が表示させるメニュー画面の一例を示す図である。図11に示すように、メニュー画面には、ゲーム装置1で実行可能なアプリケーションのアイコンG1が表示される。ここで、この実行可能なアプリケーションとは、保存用データメモリ34に記憶されている内蔵アプリ、DLアプリ及びカードアプリである。なお、カードアプリが保存用データメモリ34に記憶されない構成とする場合には、ゲーム装置1に挿入(収納)された状態ではないカートリッジ29(又はメモリカード28)に記憶されているアプリケーションは、この実行可能なアプリケーションからは除かれる。ユーザは、タッチペン27等を使用して、メニュー画面に表示された何れかのアイコンG1を連続的に2回タッチすることで、ゲーム装置1に実行させるアプリケーションを選択できる。なお、図11では、下側LCD12には4つのアイコンG1しか表示されていないが、ユーザは、左方向又は右方向へのスクロール操作を行うことで、下側LCD12に他のアイコンG1を表示させることができる。その後、処理はステップS2に移る。
ステップS2において、CPU31は、カートリッジ29がゲーム装置1に挿入されたか否かを判定する。具体的には、CPU31は、カートリッジ29がカートリッジI/F43に接続されたか否かを判定する。ステップS2の判定がYESの場合処理はステップS3に移り、この判定がNOの場合処理はステップS6に移る。
ステップS3において、CPU31は、カートリッジ29に記憶されているアプリケーションのデータ(本体データ(101)、そのメタデータ(102)、及びアプリ用データ(103))を、保存用データメモリ34のアプリ記憶領域100に記憶する。なお、記憶すべきデータが既に記憶されている場合には、上書きするか、又は記憶を行わない。その後、処理はステップS4に移る。
ステップS4において、CPU31は、メタデータデータベース200(図8(1)参照)に、ステップS3で保存用データメモリ34に記憶したカードアプリのメタデータを登録する。なお、登録すべきメタデータが既に登録されている場合には、上書きするか、又は登録を行わない。その後、処理はステップS5に移る。
ステップS5において、CPU31は、ステップS3で保存用データメモリ34に記憶したカードアプリに固有のアイコンを、ステップS1で表示させたメニュー画面(図11参照)に追加して表示させる。その後、処理はステップS6に移る。
ステップS6において、CPU31は、ユーザの操作によって、メニュー画面に表示されているアプリのアイコンうちの何れかが選択されたか否かを判定する。ステップS6での判定がYESの場合処理はステップS7に移り、この判定がNOの場合処理はステップS1に戻る。
ステップS7において、CPU31は、ステップS6で選択されたと判定されたアイコンが、カードアプリのアイコンであるか否かを判定する。ステップS7での判定がYESの場合処理はステップS9に移り、この判定がNOの場合処理はステップS8に移る。
ステップS8において、CPU31は、メタデータデータベース200に、ステップS6で選択されたと判定されたアイコンに対応するアプリ(つまり、内蔵アプリ又はDLアプリ)のメタデータを登録する。なお、登録すべきメタデータが既に登録されている場合には、上書きするか、又は登録を行わない。その後、処理はステップS9に移る。ここで、ステップS7及びS8の処理によって、ステップS4で登録されたカードアプリのメタデータを重複して登録することを回避している。
ステップS9において、CPU31は、ステップS6で選択されたと判定されたアプリに対応するプレイ履歴データ104のプレイ開始時刻データ1041a(図8(2)参照)に、現時点の日時を記憶する。その後、処理はステップS10に移る。
ステップS10において、CPU31は、ステップS6で選択されたと判定されたアプリを起動する。その後、処理はステップS11に移る。
ステップS11において、CPU31は、ステップS10で起動したアプリの処理を実行する。なお、ステップS11で実行されるアプリケーションは、対戦ゲーム、レースゲーム、スポーツゲーム、及び後述するメッセージアプリ(図17参照)等の様々なアプリケーションである。その後、処理はステップS12に移る。
ステップS12において、CPU31は、ステップS11で実行したアプリに対応するプレイ履歴データ104のプレイ終了時刻データ1041b(図8(2)参照)に、現時点の日時を記憶する。その後、処理はステップS1に戻る。
以上に説明したように、メイン処理によって、カートリッジ29がゲーム装置1に初めて収納された時点で、そのカートリッジ29に記憶されているアプリケーションのメタデータがメタデータデータベース200に登録される(S4)。また、メイン処理によって、内蔵アプリ又はDLアプリが初めて実行された時点で、そのアプリのメタデータがメタデータデータベース200に登録される(S8)。そして、カードアプリ、内蔵アプリ、又はDLアプリがプレイ(実行)される際に、そのアプリのプレイ履歴が記録される(S9、S12)。
[すれ違い通信処理]
次に、保存用データメモリ34に記憶されたすれ違い通信プログラム90がCPU31及び無線通信モジュール37によって実行されることによって実現されるすれ違い通信処理について説明する。ゲーム装置1と他のゲーム装置1がそれぞれすれ違い通信処理を実行することで、両方が同じアプリを実行可能な場合に、これらのゲーム装置1の間でそのアプリに定められた所定情報の送受信が行われる。
図12は、すれ違い通信処理の一例を示す通信シーケンス図である。図12では、自ゲーム装置1が他のゲーム装置1に対して接続要求フレームを送信する場合を示している。自ゲーム装置1は、通信可能圏内に存在する他のゲーム装置1に対して、接続要求フレームD6(ビーコンフレーム)をブロードキャスト送信する。他のゲーム装置1は、接続要求フレームD6を受信すると、この接続要求フレームD6の送信元のゲーム装置1に対して、接続応答フレームD7を送信する。
自ゲーム装置1は、この接続応答フレームD7を受信すると、他のゲーム装置1に対して、自機の送信ボックスデータ300a(図9参照)を含んだデータフレームD8を送信する。ここで、送信ボックスデータ300aには、対応するアプリIDデータ102c(図9(1)参照)が付加される。例えば、後述するメッセージアプリでは、メッセージアプリのIDデータ102cと、メッセージデータ301と、貼付けメタデータ302と、メタデータ貼付け位置データ303とがデータフレームD8に含められる(図9(2)参照)。他のゲーム装置1は、このデータフレームD8を受信すると、自ゲーム装置1に対して、自ら生成したデータフレームD8を返信する。本実施形態では、この様な一連の通信が所定周期で繰り返し行われる。なお、自ゲーム装置1が接続要求フレームD6を受信する場合には、図12において、自ゲーム装置1の記載と他のゲーム装置1の記載とを入れ替えて考えればよい。
以下に、図13を用いて、すれ違い通信処理によって送受信されるフレームD6〜D8について説明する。図13(1)は、接続要求フレームD6の一例を示す図である。接続要求フレームD6は、フレームタイプF_TYP、送信元MAC(Media Access Control)アドレス、及びアプリIDリストを含む。フレームタイプF_TYPは、当該フレームの種別を示しており、この場合には接続要求フレームD6であることを示す情報が記述される。アプリIDリストは、この接続要求フレームD6を送信するゲーム装置1のすれ違いボックスデータ300内の全てのアプリIDデータ102c(図9(1)参照)のリストである。言い換えれば、アプリIDリストは、保存用データメモリ34のアプリ記憶領域100に記憶されている全てのアプリケーションのアプリIDのリストである。また、言い換えれば、アプリIDリストは、自ゲーム装置1で実行可能な状態の全てのアプリケーションのアプリIDのリストである。
図13(2)は、接続応答フレームD7の一例を示す図である。接続応答フレームD7は、フレームタイプF_TYP、宛先MACアドレス、送信元MACアドレス及びアプリIDリストを含む。フレームタイプF_TYPには、接続応答フレームD7であることを示す情報が記述される。アプリIDリストは、この接続応答フレームD7を送信するゲーム装置1のすれ違いボックスデータ300内の全てのアプリIDデータ102c(図9(1)参照)のリストである。
図13(3)は、データフレームD8の一例を示す図である。データフレームD8は、フレームタイプF_TYP、宛先MACアドレス、送信元MACアドレス、アプリIDデータ及び送信ボックスデータを含む。フレームタイプF_TYPには、データフレームD8であることを示す情報が記述される。
以下では、図14を用いて、ゲーム装置1が実行するすれ違い通信処理について説明する。図14は、ゲーム装置1が実行するすれ違い通信処理の一例を示すフローチャートである。すれ違い通信処理は、所定周期毎に(例えば数秒に1回の短い時間間隔で)繰り返し実行される。
まず、ステップS21において、無線通信モジュール37は、応答時刻から所定時間経過したMACアドレスを自メモリ(無線通信モジュール37の内部メモリ)に記憶しているか否かを判定する。ここで、応答時刻とは、後述するステップS35において接続応答フレームD7を送信した時点の時刻、又は、後述するステップS26において通信相手装置に送信ボックスデータを送信した時点の時刻である。ステップS21での判定がYESの場合処理はステップS22に移り、この判定がNOの場合処理はステップS23に移る。
ステップS22において、無線通信モジュール37は、このMACアドレスを自メモリから削除する。その後、処理はステップS23に移る。
ステップS23において、無線通信モジュール37は、自機のアプリIDリストを含む接続要求フレームD6(図13(1)参照)を生成してブロードキャスト送信する。その後、処理はステップS24に移る。
ステップS24において、無線通信モジュール37は、他機のアプリIDリストを含む接続応答フレームD7(図13(2)参照)を受信したか否かを判断する。ステップS24での判定がYESの場合処理はステップS25に移り、この判定がNOの場合処理はステップS32に移る。
ステップS25において、無線通信モジュール37は、受信した接続応答フレームD7に含まれる他機のアプリIDリストを構成するアプリIDのうちの少なくとも1つが自機のアプリIDリストを構成するアプリIDと一致するか否かを判定する。ステップS25での判定がYESの場合処理はステップS26に移り、この判定がNOの場合今回のすれ違い通信処理は終了する。なお、無線通信モジュール37は、電源がオンされたときに自メモリに自機のアプリIDリストを記憶しておき、このアプリIDリストを用いてステップS25の判定を行う。
ステップS26において、無線通信モジュール37は、ステップS25で一致したアプリIDのアプリケーションに対応する送信ボックスデータを、CPU31によってすれ違いボックスデータ300(図9(1)参照)から読み出させ、データフレームD8に含めて通信相手装置(接続応答フレームD7の送信元)に送信する。その後、処理はステップS27に移る。
ステップS27において、無線通信モジュール37は、通信相手装置(接続応答フレームD7の送信元)のMACアドレスと、ステップS26で送信ボックスデータを送信した時刻(応答時刻)とを自メモリに記憶する。その後、処理はステップS28に移る。ここで、通信相手装置のMACアドレス及び応答時刻は、当該応答時刻から所定時間内には同じ通信相手との通信を禁止するために用いられる。このことによって、短期間のうちに同じ相手と重複した通信を行うことを回避できる。なお、応答時刻から所定時間経過した時には、上記ステップS21及びS22の処理によって通信相手装置のMACアドレスは削除されて、通信の禁止は解除される。
ステップS28において、無線通信モジュール37は、通信相手装置の送信ボックスデータ(データフレームD8)の受信処理を既に行っているか否かを判定する。ステップS28での判定がYESの場合すれ違い通処理は終了し、この判定がNOの場合処理はステップS29に移る。
ステップS29において、無線通信モジュール37は、通信相手装置から送信ボックスデータ300a(データフレームD8)を受信するための処理を実行する。すれ違い通信処理を行う2つのゲーム装置1は、データフレームD8を相互に送受信し合うため、自ゲーム装置1が未だデータフレームD8を受信していない場合、ステップS29に処理が進められるのである。そして、ステップS29において、通信相手装置から送信ボックスデータ300aを受信した場合処理はステップS30に移り、受信しなかった場合すれ違い通信処理は終了する。
ステップS30において、無線通信モジュール37は、CPU31に指示して、ステップS29で受信した通信相手装置の送信ボックスデータを、自機の受信ボックスデータ300b(図9参照)として記憶させる。その際、CPU31は、送信ボックスデータに付加されているアプリIDデータが示すアプリケーションの受信ボックスデータとして、当該送信ボックスデータを記憶する。つまり、アプリIDデータを用いて、同じアプリケーションの受信ボックスに、受信した送信ボックスデータを記憶させる。その後、処理はステップS31に移る。
ステップS31において、無線通信モジュール37は、自機の送信ボックスデータ(データフレームD8)の送信処理を既に行っているか否かを判定する。ステップS31での判定がYESの場合すれ違い通処理は終了し、この判定がNOの場合処理はステップS26に移る。
一方、ステップS32において、無線通信モジュール37は、他機のアプリIDリストを含む接続要求フレームD6(図13(1)参照)を受信したか否かを判断する。ステップS32での判定がYESの場合処理はステップS33に移り、この判定がNOの場合すれ違い通信処理は終了する。
ステップS33において、無線通信モジュール37は、自メモリに、送信元のMACアドレスが記憶されているか否かを判定する。ステップS33での判定がYESの場合今回のすれ違い通処理は終了し、この判定がNOの場合処理はステップS34に移る。この処理によって、短期間に同じ相手と重複した通信を行うことを回避できる。
ステップS34において、無線通信モジュール37は、受信した接続要求フレームD6に含まれる他機のアプリIDリストを構成するアプリIDのうちの少なくとも1つが自機のアプリIDリストを構成するアプリIDと一致するか否かを判定する。ステップS34での判定がYESの場合処理はステップS35に移り、この判定がNOの場合今回のすれ違い通信処理は終了する。なお、無線通信モジュール37は、電源がオンされたときに自メモリに自機のアプリIDリストを記憶しておき、このアプリIDリストを用いてステップS34の判定を行う。
ステップS35において、無線通信モジュール37は、自機のアプリIDリストを含む接続応答フレームD7(図13(2)参照)を生成して、通信相手装置(接続要求フレームの送信元)に送信する。その後、処理はステップS36に移る。
ステップS36において、無線通信モジュール37は、通信相手装置(接続要求フレームD6の送信元)のMACアドレスと、ステップS35で接続応答フレームD7を送信した時刻(応答時刻)とを自メモリに記憶する。その後、処理はステップS29に移る。ここで、通信相手装置のMACアドレス及び応答時刻は、当該応答時刻から所定時間内には同じ通信相手との通信を禁止するために用いられる。このことによって、短期間に同じ相手と重複した通信を行うことを回避できる。なお、応答時刻から所定時間経過した時には、上記ステップS21及びS22の処理によって通信相手装置のMACアドレスは削除されて、通信の禁止は解除される。
[メッセージアプリ処理]
次に、保存用データメモリ34のアプリ記憶領域100に記憶されるアプリケーションの一つであるメッセージアプリが、CPU31によって実行されることによって実現されるメッセージアプリ処理について説明する。図15は、メッセージアプリ処理の一例を示すフローチャートである。なお、メッセージアプリ処理は、図10のメイン処理におけるステップS11で実行されるアプリケーション処理の1つである。
まず、ステップS41において、CPU31は、すれ違い通信のメッセージアプリの受信ボックス300b(図9(2)参照)に新着の受信データが有るか否を判定する。より具体的には、CPU31は、図9(2)に示したメッセージアプリのすれ違いボックスデータの受信ボックスデータとして、すれ違い通信によって新たなデータが受信されているか否かを判定する。ステップS41での判定がYESの場合処理はステップS42に移り、この判定がNOの場合処理はステップS44に移る。
ステップS42において、CPU31は、ステップS41で新着ありと判定した新着データ(図9(2)のメッセージアプリの受信ボックスデータ300b)を、図7(1)に示した保存メッセージデータ103bとして読み込む。その後、処理はステップS43に移る。
ステップS43において、CPU31は、メッセージアプリの受信ボックスデータ300bを削除する。その後、処理はステップS44に移る。ステップS41〜S43の処理が実行されることで、すれ違い通信を用いたメッセージアプリによるデータ(メッセージ)の受信が定期的に行われる。
ステップS44において、CPU31は、下側LCD12にメッセージアプリのメニュー画面を表示させる。このメニュー画面には、「メッセージ作成」の操作子、「サーバからメッセージ受信」の操作子、「ローカル通信でメッセージ送受信」の操作子、及び図7(1)に示した作成/受信メッセージデータとして保存されている保存メッセージのリスト(例えば、直近10個の保存メッセージのリスト)が表示されている。その後、処理はステップS45に移る。
ステップS45において、CPU31は、ユーザの操作によって、「メッセージ作成」の操作子が選択されたか否かを判定する。具体的には、CPU31は、ユーザが行う「メッセージ作成」の操作子を選択する操作を、タッチパネル13を用いて検出することによって、「メッセージ作成」の操作子が選択されたか否かを判定する。ステップS45での判定がYESの場合処理はステップS46に移り、この判定がNOの場合処理はステップS69に移る。
ステップS46において、CPU31は、下側LCD12に、メッセージ作成画面を表示させる。ユーザは、タッチペン27等を用いてこのメッセージ作成画面内の手書き領域上で文字等を書く動作を行うことで、このメッセージ作成画面に手書きのメッセージを書くことができる。その後、処理はステップS47に移る。なお、本実施形態では、下側LCD12における所定領域が手描き領域に設定される。
ステップS47において、CPU31は、軌跡描画(軌跡による描画操作)を検出したか否かを判定する。具体的には、CPU31は、タッチパネル13からのタッチ操作の検出信号に基づいて、ユーザがタッチペン27等を用いてメッセージ作成画面上で行った文字等を書く動作を検出したか否かを判定する。ステップS47での判定がYESの場合処理はステップS48に移り、この判定がNOの場合処理はステップS49に移る。
ステップS48において、CPU31は、ステップS47での検出に基づいて、ユーザがタッチペン27等を用いてメッセージ作成画面上で描いた軌跡を、メッセージ作成画面に手書きメッセージとして描画する。その後、処理はステップS49に移る。
ステップS49において、CPU31は、ユーザが行うボタン操作等に基づいて、メッセージにメタデータを貼り付ける指示が有ったか否かを判定する。ステップS49での判定がYESの場合処理はステップS50に移り、この判定がNOの場合処理はステップS53に移る。
ステップS50において、CPU31は、プレイ履歴データ104(図8参照)を参照して、プレイ履歴の有るアプリケーションのメタデータ(典型的には、アプリのアイコン又はアプリのタイトル)の一覧を、メッセージ作成画面上に表示する。より具体的には、例えば、下側LCD12における手描き領域とは別の領域に、手描き領域の表示と共に、メタデータの一覧が表示される。また、別の例では、下側LCD12における手描き領域の表示と共に、メタデータの一覧を呼び出すためのタッチボタンが表示されていてもよい。この場合、ユーザの操作に応じて、このタッチボタンが選択されるとメタデータの一覧が表示され、メタデータが選択された後に、この一覧は非表示となって、その後、手描き領域が再び出現して、さらにメッセージの作成が可能となる。なお、このメタデータの一覧は、プレイされた時期が近い順に(つまり時系列で)整列して表示されてもよい。その後、処理はステップS51に移る。
ステップS51において、CPU31は、ステップS50で表示したメタデータの一覧から、ユーザのタッチペン等による操作に基づいて、何れかのメタデータが選択されたか否かを判定する。ステップS51での判定がYESの場合処理はステップS52に移り、この判定がNOの場合処理はステップS50に戻る。
ステップS52において、CPU31は、ステップS51で選択されたと判定したメタデータを、手書きメッセージ内の初期位置に、貼付けメタデータとして貼付ける。具体的には、CPU31は、選択されたメタデータをメタデータデータベース200(図8(1)参照)から読み出して(複製して)、作成中のメッセージ内の所定位置に貼り付ける。なお、この初期位置は、メッセージ作成画面の中央下側等の所定位置である。その後、処理はステップS53に移る。
ステップS53において、CPU31は、ユーザが行うタッチペン27等による操作(例えばドラッグ操作)によって、貼付けメタデータの貼付け位置を移動させる指示が有ったか否かを判定する。ステップS53での判定がYESの場合処理はステップS54に移り、この判定がNOの場合処理はステップS56に移る。
ステップS54において、CPU31は、貼付けメタデータの貼付け位置を移動させる指示に従って、メッセージ作成画面に表示された貼付けメタデータの位置を移動させる。その後、処理はステップS55に移る。
ステップS55において、CPU31は、ステップS54での処理で移動させた後の位置で、メインメモリ32に一時的に記憶している貼付けメタデータの位置を更新する。その後、処理はステップS56に移る。
ステップS56において、CPU31は、ユーザが行うボタン操作等によって、作成した手書きメッセージの送信指示が有ったか否かを判定する。ステップS56での判定がYESの場合処理はステップS57に移り、この判定がNOの場合処理はステップSS46に戻る。
ステップS57において、CPU31は、送信指示のあった手書きメッセージを、メッセージアプリのアプリ用データ103内の保存メッセージデータ103b(図7(1)参照)として保存する。具体的には、CPU31は、ステップS48で描画した手書きメッセージのデータを手書きメッセージデータ103bとして保存メッセージデータ103b内に保存し、ステップS52で手書きメッセージ内に貼り付けた貼付けメタデータのデータを貼付けメタデータ103eとして保存メッセージデータ103b内に保存し、ステップS55で更新した貼付けメタデータの最新位置のデータをメタデータ貼付け位置データ103fとして保存メッセージデータ103b内に保存する。なお、図15では処理を記載していないが、内側カメラ23又は外側カメラ25で撮影された画像データ、又は他装置から取得した画像データ等が、ユーザの操作に応じて手書きメッセージ内に貼り付けられた場合、ステップS57において、CPU31は、この画像データを貼付け画像データ103dとして保存メッセージデータ103b内に保存する。その後、処理はステップS58に移る。
ステップS58において、CPU31は、下側LCD12に送信設定画面を表示させる。この送信設定画面には、「サーバ経由で送信」の操作子と、「ローカル通信で送信」の操作子と、「すれ違い通信で送信」の操作子とが表示されている。その後、処理はステップS59に移る。
ステップS59において、CPU31は、ユーザによるタッチペン27等の操作によって、送信設定画面の「サーバ経由で送信」の操作子が選択されたか否かを判定する。言い換えれば、CPU31は、ステップS57で保存した手書きメッセージ等の送信方法として、サーバ4経由で送信する方法が選択されたか否かを判定する。ステップS59での判定がYESの場合処理はステップS60に移り、この判定がNOの場合処理はステップS63に移る。
ステップS60において、CPU31は、ステップS57で保存した手書きメッセージを送信する宛先を、ユーザの操作に応じて設定する。具体的には、CPU31は、送信設定画面に、フレンドリストデータ400(図5参照)によって示されるフレンド(フレンド登録された他のゲーム装置1)の一覧を表示し、ユーザは、この一覧から所望のフレンドを選択することによって送信宛先を指定する。また、送信設定画面には「フレンド全員に送信」の操作子が表示されており、ユーザは、この操作子を選択することによって、フレンドリストデータ400によって示されるフレンド全員を送信宛先として一括指定できる。その後、処理はステップS61に移る。
ステップS61において、CPU31は、送信トレイに、送信する手書きメッセージメッセージを複製する。具体的には、CPU31は、ステップS57で保存メッセージデータ103bとして保存した手書きメッセージのデータを、送信トレイデータ103g内に、送信予定メッセージデータ103hとして複製する(図7(1)参照)。その後、処理はステップS62に移る。
ステップS62において、CPU31は、送信トレイに複製された手書きメッセージを、サーバ4に送信する。具体的には、CPU31は、送信トレイデータ103g内に複製された送信予定メッセージデータ103hを、無線通信モジュール37を用いてネットワーク3を通じてサーバ4に送信する(図3参照)。サーバ4は、受信した手書きメッセージ(103h)を、ステップS60で設定された宛先の他のゲーム装置1に、ネットワーク3を通じて送信(転送)する。ここで、上記したサーバ4経由で送信する方法は、ゲーム装置1とネットワーク3との接続状態に依存する。このことから、ゲーム装置1とネットワーク3との接続が確立した時点で、送信トレイの手書きメッセージは、サーバ4に送信されることとなる。その後、処理はステップS44に戻る。
一方、ステップS63において、CPU31は、ユーザによるタッチペン27等の操作によって、送信設定画面の「ローカル通信で送信」の操作子が選択されたか否かを判定する。言い換えれば、CPU31は、ステップS57で保存した手書きメッセージ等の送信方法として、ローカル通信で送信する方法が選択されたか否かを判定する。なお、ローカル通信については、後に図16を用いて説明する。ステップS63での判定がYESの場合処理はステップS64に移り、この判定がNOの場合処理はステップS66に移る。
ステップS64において、CPU31は、ステップS61と同様に、送信トレイに、送信する手書きメッセージメッセージを複製する。その後、処理はステップS65に移る。
ステップS65において、CPU31は、ローカル通信処理を実行する。図16は、図15のステップS65のローカル通信処理の一例を示すフローチャートである。以下では、図16を用いて、ローカル通信処理について説明する。
まず、ステップS81において、無線通信モジュール37は、通信相手装置をサーチする。具体的には、無線通信モジュール37は、ビーコンフレームを送信することによって、通信相手となる他のゲーム装置1を所定時間サーチする。その後、処理はステップS82に移る。
ステップS82において、無線通信モジュール37は、通信相手装置を発見したか否かを判定する。具体的には、無線通信モジュール37は、ステップS81で送信したビーコンフレームに応答する応答フレームを受信したか否かに基づいて、通信相手となる他のゲーム装置1を発見したか否かを判定する。ステップS82での判定がYESの場合処理はステップS83に移り、この判定がNOの場合ローカル無線処理は終了して処理は図15のステップS66に移る。
ステップS83において、CPU31は、ステップS82で発見された通信相手装置のリストを下側LCD12に表示させる。その後、処理はステップS84に移る。
ステップS84において、CPU31は、ユーザによるタッチペン27等の操作によって、下側LCD12に表示させた通信相手装置のリストから通信相手装置の何れかが選択されるまで待機し、何れかが選択された場合処理をステップS85に進める。
ステップS85において、CPU31は、無線通信モジュール37を用いて、ステップS84で選択された通信相手装置に、通信相手として選択した旨を通知する選択通知を送信する。その後、処理はステップS86に移る。
ステップS86において、CPU31は、ステップS85で選択通知を送信した通信相手装置から、この通信相手装置が送信した選択通知を受信したか否かを判定する。ステップS86での判定がYESの場合処理はステップS87に移り、この判定がNOの場合ローカル無線処理は終了して処理は図15のステップS66に移る。
ステップS87において、CPU31は、ステップS85で選択通知を送信した通信相手装置に、無線通信モジュール37を用いた近距離無線通信によって、送信トレイにあるメッセージを送信する。より具体的には、CPU31は、図15のステップS64で送信トレイデータ103g内に複製された送信予定メッセージデータ103hを、近距離無線通信によって送信する。その後、処理はステップS88に移る。
ステップS88において、CPU31は、ステップS85で選択通知を送信した通信相手装置が、上記したステップS87と同様の処理を実行することによって送信したメッセージを、受信する。その後、処理はステップS89に移る。なお、通信相手装置が送信すべきメッセージを持たない場合には、ステップS88において、通信相手装置からメッセージを受信しないこととなる。
ステップS89において、CPU31は、ステップS88で受信した通信相手装置からのメッセージを、保存メッセージデータ103b(図7(1)参照)として保存する。その後、ローカル通信処理は終了して、処理は図15のステップS66に移る。
以上に説明したように、ローカル通信処理によって、他のゲーム装置1との間で、近距離無線通信を用いたメッセージの送受信が行われる。
図15のステップS66において、CPU31は、ステップS65のローカル通信処理おいて、通信相手装置からメッセージを受信したか否かを判定する。ステップS66での判定がYESの場合処理はステップS71に移り、この判定がNOの場合処理はステップS44に戻る。
次に、ステップS67において、CPU31は、ユーザによるタッチペン27等の操作によって、送信設定画面の「すれ違い通信で送信」の操作子が選択されたか否かを判定する。言い換えれば、CPU31は、ステップS57等で保存した手書きメッセージの送信方法として、図14を用いて説明したすれ違い通信で送信する方法が選択されたか否かを判定する。ステップS67での判定がYESの場合処理はステップS68に移り、この判定がNOの場合処理はステップS44に戻る。
ステップS68において、CPU31は、ステップS57で保存メッセージデータ103b(図7(1)参照)として保存した手書きメッセージのデータを、メッセージアプリのすれ違いボックスデータ内の送信ボックスデータ300a(図9(2)参照)として複製する。このことによって、図14のすれ違い通信処理が実行されて、不特定の通信相手装置との間でデータの送受信が行われて、不特定の通信相手装置に対して手書きメッセージが送信される。その後、処理はステップS44に戻る。
一方、ステップS69において、CPU31は、ユーザの操作によって、「サーバからメッセージ受信」の操作子が選択されたか否かを判定する。具体的には、CPU31は、ユーザが行う「サーバからメッセージ受信」の操作子を選択する操作をタッチパネル13を用いて検出することによって、「サーバからメッセージ受信」の操作子が選択されたか否かを判定する。ステップS69での判定がYESの場合処理はステップS70に移り、この判定がNOの場合処理はステップS78に移る。
ステップS70において、CPU31は、ネットワーク3を通じてサーバ4に接続して、サーバ4から自己のゲーム装置1宛てのメッセージを受信して、図7(1)に示した保存メッセージデータ103bとして保存する。ここで、サーバ4からメッセージを受信する処理は、ゲーム装置1とネットワーク3との接続状態に依存する。このことから、ゲーム装置1とネットワーク3との接続が確立した時点で、サーバ4からメッセージを受信することとなる。その後、処理はステップS71に戻る。
ステップS78において、CPU31は、ユーザの操作によって、「ローカル通信でメッセージ受信」の操作子が選択されたか否かを判定する。具体的には、CPU31は、ユーザが行う「ローカル通信でメッセージ受信」の操作子を選択する操作を、タッチパネル13を用いて検出することによって、「ローカル通信でメッセージ受信」の操作子が選択されたか否かを判定する。ステップS78での判定がYESの場合処理はステップS79に移り、この判定がNOの場合処理はステップS80に移る。
ステップS79において、CPU31は、図16を用いて説明したローカル通信処理を実行して、通信相手装置との間で近距離無線通信を用いたメッセージの送受信を行って、通信相手装置からメッセージを受信する。その後、処理はステップS71に移る。
ステップS80において、CPU31は、メニュー画面に表示されている保存メッセージのリスト中のメッセージの何れかが選択されたか否かを判定する。具体的には、CPU31は、ユーザが行うメッセージを選択する操作を、タッチパネル13を用いて検出することによって、メッセージの何れかが選択されたか否かを判定する。ステップS80での判定がYESの場合処理はステップS71に移り、この判定がNOの場合処理はステップS44に戻る。
ステップS71において、CPU31は、ステップS70でサーバ4から受信したメッセージ、ステップS79でのローカル通信処理で受信したメッセージ、ステップS80でユーザによって選択されたメッセージ、又はステップS65でのローカル通信処理で受信したメッセージに、メタデータ(典型的にはアプリのアイコン又はタイトル)が貼り付けられているか否かを判定する。ステップS71での判定がYESの場合処理はステップS72に移り、この判定がNOの場合処理はステップS76に移る。
ステップS72において、CPU31は、ステップS71で判定対象としたメッセージ(つまり、受信等したメッセージ)を、当該メッセージに貼り付けられているメタデータと共に下側LCD12に表示する。その後、処理はステップS73に移る。より具体的には、メタデータはメッセージに重ねて表示されてもよい。この場合に、前述のステップS52からS55において設定されたメッセージ内の「メタデータの位置」を再現するようにしてもよい。また、別の例では、メタデータを、メッセージの表示領域とは別の領域に、メッセージと共に表示してもよい。
ステップS73において、CPU31は、ステップS72で表示させたメタデータが、ユーザによって選択されたか否かを判定する。具体的には、CPU31は、ユーザが行うメタデータを選択する操作を、タッチパネル13を用いて検出することによって、メタデータが選択されたか否かを判定する。ステップS73での判定がYESの場合処理はステップS74に移り、この判定がNOの場合処理はステップS77に移る。なお、CPU31は、複数のメタデータが添付されているためにステップS72で複数のメタデータを表示させた場合、ステップS73において、複数のメタデータの何れかがユーザによって選択されたか否かを判定する。
一方、ステップS76において、CPU31は、ステップS71で判定の対象としたメッセージ(つまり、受信等したメッセージ)を下側LCD12に表示する。その後、処理はステップS77に移る。
ステップS77において、CPU31は、ステップS72又はステップS76で表示したメッセージを他のゲーム装置1に転送するか否かを判定する。具体的には、ステップS72及びステップS76での表示画面には、「受信メッセージ転送」の操作子が表示されており、CPU31は、ユーザが行うこの操作子を選択する操作をタッチパネル13を用いて検出することによって、ステップS72又はステップS76で表示したメッセージを他のゲーム装置1に転送するか否かを判定する。ステップS77での判定がYESの場合処理はステップS58に移り、この判定がNOの場合処理はステップS44に戻る。
一方、ステップS74において、CPU31は、図18及び図19を用いて後に説明するアプリ選択時処理を実行する。なお、アプリ選択時処理において、CPU31は、サーバ4と通信して、ステップS73で選択されたと判定したメタデータが示すアプリケーションについての詳細情報(内容や価格等)を下側LCD12等に表示し、ユーザの指示に応じてそのアプリケーションをサーバ4からダウンロードする。その後、処理はステップS75に移る。
ステップS75において、CPU31は、ステップS72で表示したメッセージを他のゲーム装置1に転送するか否かを判定する。具体的には、ステップS72での表示画面には、「受信メッセージ転送」の操作子が表示されており、CPU31は、ユーザが行うこの操作子を選択する操作をタッチパネル13を用いて検出することによって、ステップS72で表示したメッセージを他のゲーム装置1に転送するか否かを判定する。ステップS75での判定がYESの場合処理はステップS58に移り、この判定がNOの場合処理はステップS44に戻る。
[所定のゲームアプリの処理]
以下に、所定のゲームアプリの処理の一例について、図17を用いて説明する。ここで、所定のゲームアプリは、このゲームアプリによるゲームがクリアされた場合に、このゲームをクリアしたユーザに対してメッセージを提供するタイプのゲームアプリである。このメッセージは、典型的には、このゲームをクリアしたことを賞賛し証明するメッセージである。ユーザは、このゲームアプリのゲームをクリアして提供されたメッセージを、図15で処理を説明したメッセージアプリによって、他のゲーム装置1に送信することができる。以下、詳細に説明する。
所定のゲームが開始されると、ステップS91において、CPU31は、所定のゲーム処理を実行する。なお、この所定のゲームは、レースゲーム、スポーツゲーム、戦闘ゲーム等の様々なゲームであってよく、どのようなゲームのゲームでもよい。その後、処理はステップS92に移る。
ステップS91において、CPU31は、ステップS91で実行しているゲーム処理のゲームがクリアされたか否かを判定する。ステップS91での判定がYESの場合処理はステップS93に移り、この判定がNOの場合処理はステップS95に移る。
ステップS95において、CPU31は、ステップS91で実行しているゲーム処理のゲームの終了が、ユーザによる所定の操作によって指示されたか否かを判定する。ステップS95での判定がYESの場合ゲームは終了し、この判定がNOの場合処理はステップS91に戻ってゲームは継続する。
一方、ステップS93において、CPU31は、ゲームクリア時提供データ103m(ゲームをクリアしたユーザに提供されるメッセージのデータ)を、メッセージアプリの保存メッセージデータ103bとして読み込む。具体的には、CPU31は、所定のゲームアプリのアプリ用データ103内のゲームクリア時提供データ103m(図7(2)参照)を、メッセージアプリのアプリ用データ103内の保存メッセージデータ103b(図7(1)参照)として読み込む。その後、処理はステップS94に移る。
ステップS94において、CPU31は、メッセージアプリを起動して、図15のメッセージアプリ処理を開始する。その際、CPU31は、図15のステップS58の送信画面を表示する処理からメッセージアプリ処理を開始し、処理は図15のステップS58に移る。以上に説明したように、所定のゲームアプリ処理によって、ゲーム処理が行われ、ゲームクリアされた場合には、所定のメッセージがメッセージアプリの保存メッセージとしてユーザに提供される。
図17のステップS94から図15のステップS58に処理が移行した場合、CPU31は、ステップS60〜S62の処理を行う場合、図17のステップS93で読み込んだゲームクリア時提供データ103mをサーバ4経由で送信し、ステップS64及びS65の処理を行う場合、このゲームクリア時提供データ103mをローカル通信処理で送信し、ステップS68の処理を行う場合、このゲームクリア時提供データ103mをすれ違い通信で送信する。
[アプリ選択時処理]
以下に、図18を用いて、図15のメッセージアプリ処理のステップS74で実行されるアプリ選択時処理の一例を説明する。図18は、アプリ選択時処理の一例を示すフローチャートである。
まず、ステップS101において、CPU31は、図15のステップS73で選択されたと判定されたメタデータ(典型的にはアプリのアイコン又はアプリのタイトル)が示すアプリケーションの詳細情報のダウンロード要求を、ネットワーク3を通じてサーバ4に送信する。なお、この要求には、図15のステップS73で選択されたと判定されたメタデータが含まれている。その後、処理はステップS102に移る。
ステップS102において、CPU31は、ステップS101でダウンロード要求した詳細情報をサーバ4から受信するまで待機し、この詳細情報をサーバ4から受信したと判定した場合、処理をステップS103に進める。
ステップS103において、CPU31は、詳細情報(本発明の紹介情報及びガイド情報の一例)に基づいてアプリ紹介画面を生成して、下側LCD12又は上側LCD22に表示する。その後、処理はステップS104に移る。ここで、アプリ紹介画面には、アプリを紹介する画像やアプリの説明文が表示されるとともに、そのアプリを購入するために必要な金額(またはお金の代わりとなるポイント)など、ユーザがそのアプリを購入する判断をするために必要な情報が表示される。また、所定の場合(後述するステップS104でYESと判定される場合)には、アプリ紹介画面には、そのアプリを購入するための操作をユーザから受付けるユーザインターフェース(典型的には、ユーザがクリック操作可能な「購入ボタン」が表示され、当該ボタンに対するクリック操作の受付け処理がされる)が提供される。なお、ステップS102で受信した詳細情報に対応するアプリケーションをサーバ4が販売していない場合、アプリ紹介画面には、アプリを購入するための操作をユーザから受付けるユーザインターフェースは提供されない(つまり「購入ボタン」は表示されない)。
ステップS104において、CPU31は、ステップS103で表示したアプリ紹介画面に「購入ボタン」の操作子が表示されているか否かを判定する。ステップS104での判定がYESの場合処理はステップS105に移り、この判定がNOの場合アプリ選択時処理は終了して処理は図15のステップS75に移る。
ここで、サーバ4は、受信したメタデータに対応するアプリケーションを販売(インターネットを介して配信)するショップサーバ(少なくとも、ダウンロード販売のユーザインターフェースを提供するサーバであり、通常は、ダウンロード販売の対象となる複数のアプリケーションが記憶されているサーバ)としての機能を有し、ステップS103で表示されるアプリ紹介画面が商品(アプリ)の購入のためのインターフェースとなる。そして、CPU31は、このインターフェースを用いて、ユーザによるアプリケーションの購入操作があったか否かを判定する。具体的には、ステップS105において、CPU31は、アプリ紹介画面に表示された「購入ボタン」の操作子をユーザが選択したか否かを判定する。ステップS105での判定がYESの場合処理はステップS106に移り、この判定がNOの場合アプリ選択時処理は終了して処理は図15のステップS75に移る。
ステップS106において、CPU31は、ステップS105での操作(購入操作)によって受け付けた購入要求を、サーバ4に送信する。その後、処理はステップS107に移る。
ステップS107において、CPU31は、ユーザにアプリケーション購入の最終確認を行うための最終確認画面のデータをサーバ4から受信するまで待機し、最終確認画面のデータを受信したと判定すると処理をステップS108に進める。
ステップS108において、CPU31は、ステップS107で受信した最終確認画面のデータに基づいて、下側LCD12又は上側LCD22に最終確認画面を表示する。ここで、この最終確認画面には、アプリ紹介画面の表示されたアプリケーションを購入することに最終確認するための「最終確認」の操作子が表示されている。その後、処理はステップS109に移る。
ステップS109において、CPU31は、最終確認画面に表示された「最終確認」の操作子をユーザが選択したか否かを判定する。ステップS109での判定がYESの場合処理はステップS110に移り、この判定がNOの場合アプリ選択時処理は終了して処理は図15のステップS75に移る。
ステップS110において、CPU31は、最終購入要求及び決済情報をサーバ4に送信する。ここで、決済情報とは、例えばクレジットカード番号や、このサーバ4の提供するサービスにおけるユーザID等である。なお、決済情報がクレジットカード番号等の場合、CPU31は、この番号等をユーザに入力させた後に送信を行う。その後、処理はステップS111に移る。
ステップS111において、CPU31は、サーバ4から購入したアプリケーションが受信されるまで待機し、受信された場合処理をステップS112に進める。
ステップS112において、CPU31は、受信したアプリケーションを保存用データメモリ34に記憶させる。その後、アプリ選択時処理は終了して処理は図15のステップS75に移る。
[サーバ4のデータ配信処理]
以下に、図19を用いて、サーバ4が、上記アプリ選択時処理を実行するゲーム装置1に対して上記詳細情報や、アプリケーションを配信するための処理の一例を説明する。
まず、ステップS121において、CPU65は、詳細情報のダウンロード要求を受信するまで待機し、受信した場合処理をステップS122に進める。なお、この要求は、図18のステップS101においてゲーム装置1から送信される。
ステップS122において、CPU65は、ステップS121で受信した詳細情報のダウンロード要求に含まれるメタデータでRAM64に格納されているテーブルT(図4参照)を検索して、このメタデータが対応するアプリの詳細情報を特定する。その後、処理はステップS123に移る。
ステップS123において、CPU65は、RAM64に格納されているテーブルTのオンライン販売情報を参照して、ステップS121で受信した詳細情報のダウンロード要求に含まれるメタデータが対応するアプリケーションがサーバ4でオンライン販売されているか否かを判定する。ステップS123での判定がYESの場合処理はステップS124に移り、この判定がNOの場合処理はステップS132に移る。
ステップS124において、CPU65は、図18のステップS103においてゲーム装置1がアプリ紹介画面を表示するための詳細情報を生成する。ここで、ステップS124で生成される詳細情報は、図18のステップS105等で説明した「購入ボタン」の操作子があるアプリ紹介画面を表示するためのものである。その後、処理はステップS125に移る。つまり、ステップS124で生成される詳細情報は、アプリの紹介画像や説明文、そのアプリを購入するために必要な金額など、ユーザがそのアプリを購入の判断をするために必要な情報を含み、また、そのアプリを購入するための操作を受付けるユーザインターフェースを提供するための情報を含む。
ステップS125において、CPU65は、ステップS124で生成した詳細情報を、ステップS121で受信した詳細情報のダウンロード要求を行ったゲーム装置1(以下、配信先ゲーム装置1という)にネットワーク3を通じて送信する。その後、処理はステップS126に移る。
ステップS126において、CPU65は、所定期間待機して配信先ゲーム装置1から購入要求を受信したか否かを判定する。なお、この購入要求は、図18のステップS106において、購入先ゲーム装置1が送信するものである。ステップS126での判定がYESの場合処理はステップS127に移り、この判定がNOの場合処理はステップS121に戻る。
ステップS127において、CPU65は、最終確認画面のデータをRAM64から読み出して配信先ゲーム装置1にネットワーク3を通じて送信する。なお、この最終確認画面のデータは、図18のステップS107で配信先ゲーム装置1が受信する。その後、処理はステップS128に移る。
ステップS128において、CPU65は、所定の期間待機して配信先ゲーム装置1から最終購入要求及び決済情報を受信したか否かを判定する。なお、この最終購入要求及び決済情報は、図18のステップS110において、配信先ゲーム装置1が送信するものである。ステップS128での判定がYESの場合処理はステップS129に移り、この判定がNOの場合処理はステップS121に戻る。
ステップS129において、CPU65は、決済処理を実行する。この決済処理は、例えばクレジットカード番号に基づく決済処理等である。また、サーバ4がユーザIDに対応づけてユーザポイントを管理している場合には、決済処理はユーザポイントから配信するアプリケーションの対価となる分のポイントを減算する処理等である。その後、処理はステップS130に移る。
ステップS130において、CPU65は、配信対象のアプリケーションを配信先ゲーム装置1にネットワーク3を通じて配信する。なお、配信されたこのアプリケーションは、図18のステップS111で配信先ゲーム装置1に受信される。その後、処理はステップS121に戻る。
一方、ステップS132において、CPU65は、図18のステップS101においてゲーム装置1に要求されたアプリのアプリ紹介画面を表示するための詳細情報を生成する。ここで、ステップS132で生成される詳細情報は、図18のステップS105等で説明した「購入ボタン」の操作子が無いアプリ紹介画面を表示するためのものである。その後、処理はステップS133に移る。
ステップS133において、CPU65は、詳細情報を、配信先ゲーム装置1にネットワーク3を通じて送信する。その後、処理はステップS121に戻る。
以上に説明した本実施形態によれば、ゲーム装置1のユーザは、購入等して自己の装置の記憶領域(自装置に収納されたカートリッジ29又はメモリカード28の記憶領域を含む)に記憶されてプレイしたアプリケーションを、他のゲーム装置1のユーザに、プレイした感想等のメッセージと共に紹介することができる。言い換えると、アプリケーションを紹介される側のゲーム装置1のユーザは、実際にアプリケーションをプレイしたユーザの感想等と共にそのアプリケーションを紹介されることとなる。この結果として、本実施形によれば、ユーザ間で行われるコンテンツ(商品)の紹介の信頼性を高く保つことができる。
また、本実施形態によれば、ゲーム装置1のユーザは、紹介するアプリケーションのメタデータ(アプリのアイコン又はアプリのタイトル等)をメッセージに貼り付けて、このアプリケーションを他のゲーム装置1のユーザに紹介できる。そして、紹介された側のユーザは、紹介メッセージに貼り付けられているメタデータを選択することによって、紹介されたアプリケーションの内容等を確認した後に、このアプリケーションをサーバ4からダウンロードすることができる。
また、本実施形態によれば、ゲーム装置1のユーザは、他のゲーム装置1のユーザから受信した紹介メッセージを、第3のゲーム装置1(のユーザ)に転送できる。このことから、第3のゲーム装置のユーザは、実際にアプリケーションをプレイしたユーザの感想等と共にそのアプリケーションを紹介されることとなる。この結果として、紹介メッセージが転送される場合であっても、ユーザ間で行われるコンテンツ(商品)の紹介の信頼性を高く保つことができる。
(本実施形態の変形例)
また、本実施形態では、カードアプリのメタデータは、カートリッジ29がゲーム装置1に挿入された時点でメタデータデータベース200に登録されている。しかし、カードアプリのメタデータは、挿入時ではなく起動時にメタデータデータベース200に登録されてもよい。この場合、図10のメイン処理において、ステップS4及びS7の処理は削除されることとなる。
また、本実施形態では、カードアプリは、カートリッジ29又はメモリカード28に記録されているものとした。しかし、カードアプリは、光ディスクやその他の記録媒体に記録されているものとしてもよい。
また、以上の実施形態は、本発明をゲーム装置1に適用したものであるが、本発明はゲーム装置に限定されない。例えば、携帯電話機、簡易型携帯電話機(PHS)、PDA等の携帯情報端末にも本発明の適用は可能である。また、据え置き型ゲーム機やパーソナルコンピュータ等にも本発明の適用は可能である。
また、本実施形態では、1つのサーバ4で上述した処理を実行しているが、複数のサーバで上記処理を分担してもよい。例えば、あるサーバが詳細情報をゲーム装置1に提供するための処理を行い、他のサーバが決済画面(決済関連情報)をゲーム装置1に表示させるための処理を行い、更に他のサーバが決済処理を行って購入されたアプリケーションをゲーム装置1に送信する構成等を採用してもよい。また、本実施形態では、1つのゲーム装置1で上述した処理を実行しているが、有線又は無線で通信可能な複数の装置で上記処理を分担してもよい。
また、本実施形態で説明したアプリケーション購入の処理(図18及び図19参照)としては、様々な態様が考えられる。例えば、アプリケーション購入時に、クレジットカード情報等の決済情報を入力する態様、予め決済情報は入力(サーバ4に送信)済みであるか後日請求を行うために単に購入指示を行う態様、或いは、予め決済情報は入力済みであるが本人確認のためにパスワード等を要求する態様等が考えられる。
また、本実施形態では、アプリケーション購入の処理(図18及び図19参照)において、メタデータ(典型的には、アプリのアイコン又はタイトル)を用いて、配信対象となるアプリケーションを特定していた(図18のS101及び図19のS122の説明を参照)。しかし、アプリケーション購入の処理において、アプリIDを用いて、配信対象となるアプリケーションを特定してもよい。この場合、図15のステップS52において手書きメッセージにメタデータが貼り付けられる際に、このメタデータが示すアプリを特定するアプリID(アプリIDデータ102c;図6参照)がメタデータとともにこのメッセージに付加される。そして、図18のステップS101においてCPU31は受信等したメッセージに付加されているアプリIDをサーバ4に送信することによってアプリケーションの詳細情報のダウンロード要求を行い、図19のステップ122においてCPU65はこのアプリIDでRAM64に格納されているテーブルT(図4参照)を検索して、このアプリIDに対応するアプリの詳細情報を特定することとなる。
また、本実施形態では、メッセージアプリ処理(図15参照)においてサーバ4経由でメッセージの通信を行う場合、ゲーム装置1間でネットワーク3及びサーバ4を介して通信を行っていた。しかし、メッセージアプリ処理(図15参照)においてサーバ4経由でメッセージの通信を行う場合において、ゲーム装置1間でネットワーク3を介して(サーバ4は介さないで)、いわゆるP2P通信を行ってもよい。
また、本実施形態では、ローカル通信(図16参照)及びすれ違い通信(図14参照)において、一例として無線局の免許が不要な微弱電波である近距離無線通信を使用するものとして説明した。しかし、ローカル通信(図16参照)及び/又はすれ違い通信(図14参照)の通信方法はこれに限られず、例えば、光通信(赤外線通信等)を使用してもよい。
また、本実施形態では、メッセージアプリ処理(図15参照)においてユーザが手書きメッセージにメタデータを貼り付ける際に、メタデータデータベース200(図8参照)のプレイ履歴データ104を参照して貼付けるメタデータを決定していた。しかし、メタデータデータベース200には、プレイ履歴データ104とアプリIDデータ102cのみが蓄積され、メタデータ102(アイコン画像データ等)は蓄積されなくともよい。この場合、メッセージアプリ処理(図15参照)においてユーザが手書きメッセージにメタデータを貼り付ける際に、アプリ記憶領域100(図5参照)のメタデータ102を参照して、貼付けるメタデータを決定することとなる。
また、本実施形態では、メッセージアプリ処理において、プレイ履歴のあるアプリのメタデータを手書きメッセージに貼り付けるものとした(図15のS50〜S52参照)。しかし、メッセージアプリ処理において、保存用データメモリ34に記憶されているメタデータを手書きメッセージに貼り付けるものとしてもよい。この場合、図15のステップS50において、CPU31は、保存用データメモリ34を参照して、メタデータデータベース200(又はアプリ記憶領域100)に記憶されているメタデータの一覧を、メッセージ作成画面上に表示することとなる。このようにした場合、ゲーム装置1のユーザは、購入等して持っている(又は持っていた)アプリケーションを、他のゲーム装置1のユーザに、メッセージと共に紹介することができる。言い換えると、アプリケーションを紹介される側のゲーム装置1のユーザは、実際にアプリケーションを購入等して持っている(又は持っていた)ユーザのメッセージと共にそのアプリケーションを紹介されることとなる。この結果として、このようにした場合であっても、ユーザ間で行われるコンテンツ(商品)の紹介の信頼性を高く保つことができる。
また、本実施形態では、メイン処理(図10参照)において、カートリッジ29(又はメモリカード28)がゲーム装置1に装着された際に、カートリッジ29等に記憶されているアプリケーション及びそれに対応するメタデータを、保存用メインメモリ34に蓄積記憶させている(S2〜S4参照)。しかし、カートリッジ29(又はメモリカード28)に記憶されているアプリケーションは保存用データメモリ34に記憶されない(メタデータは蓄積記憶される)構成にして、CPU31は、カートリッジ29(又はメモリカード28)からアプリケーションを直接メインメモリ32に読み出して処理を実行してもよい。この場合、メイン処理において、ステップS3の処理が削除されることとなる。このような構成にした場合、ゲーム装置1に装着されたカートリッジ29等に記憶されているアプリケーションを保存用データメモリ34に蓄積記憶する必要がないので、保存用データメモリの記憶容量を節約できる。また、1つのカートリッジ29等を多数のゲーム装置1に次々と装着することによって、このカートリッジ29等に記憶されているアプリケーションが次々と複製されることを回避できる。
また、本実施形態では、すれ違い通信処理(図14参照)によって、不特定の通信相手装置との間でメッセージ等のすれ違い通信を行った。しかし、すれ違い通信処理において、フレンドリストデータ400(図5参照)に登録されているフレンド(のゲーム装置1)のみと通信を行うものとしてもよい。この場合、図14のすれ違い通信処理において、各ゲーム装置1は、通信相手装置がフレンドであるか否かを判定して、フレンドの通信相手装置のみと通信を行う構成となる。
また、本実施形態において、ゲーム装置1の形状や、それに設けられている各種操作ボタン14等、タッチパネル13の形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず、本発明の範囲を逸脱しなければ他の順序や値であっても、本発明を実現できることは言うまでもない。
また、本実施形態のゲーム装置1において実行される各種情報処理プログラムは、カートリッジ29やメモリカード28等の記憶媒体を通じてゲーム装置10に供給されるだけでなく、有線又は無線の通信回線を通じてゲーム装置1に供給されてもよい。また、上記プログラムは、ゲーム装置1内部の不揮発性記憶装置(保存用データメモリ34等)に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、或いはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ等であってもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを一時的に記憶する揮発性メモリでもよい。
以上、本発明を詳細に説明してきたが、上述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。