図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置(以下、単に「ゲーム装置」という。)12およびコントローラ22を含む。ゲーム装置12には、アンケート回答プログラム(後述アンケートアプリケーション)が組み込まれ、ゲームシステム10はアンケート回答装置として機能する。
なお、図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ22と通信可能に設計されている。また、ゲーム装置12と各コントローラ22とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。さらには、有線で接続されても良い。
ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。ディスクスロット16の周囲には、LEDと導光板が配置され、さまざまな処理に応答させて点灯させることが可能である。
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という。)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
ゲーム装置12のハウジング14の後面には、AVケーブルコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル32aを通してゲーム装置12にモニタ34およびスピーカ34aを接続する。このモニタ34およびスピーカ34aは典型的にはカラーテレビジョン受像機であり、AVケーブル32aは、ゲーム装置12からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ34の周辺(この実施例では、モニタ34の上側)には、2つの赤外LED(マーカ)34m,34nを備えるマーカ部34bが設けられる。このマーカ部34bは、電源ケーブル32bを通してゲーム装置12に接続される。したがって、マーカ部34bには、ゲーム装置12から電源が供給される。これによって、マーカ34m,34nは発光し、それぞれモニタ34の前方に向けて赤外光を出力する。
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、コントローラ22自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられる。このCPU40は、ゲームプロセッサとして機能する。このCPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりし、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク18からプログラムデータやテクスチャデータ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。
入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後で詳細に説明する。
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。なお、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ34aから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ34およびスピーカ34aに出力される。したがって、ゲーム画面がモニタ34に表示され、ゲームに必要な音(音楽)がスピーカ34aから出力される。
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60およびメモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(送信データとする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(受信データとする)を、ネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、受信データをフラッシュメモリ44に記憶する。ただし、一定の場合には、受信データをそのまま破棄する。さらに、入出力プロセッサ42aは、ダウンロードサーバからダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、そのダウンロードデータをフラッシュメモリ44に記憶する。
また、入出力プロセッサ42aは、コントローラ22から送信される入力データをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。入力データは、CPU40のゲーム処理によって利用された後、バッファ領域から消去される。
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格にしたがってコントローラ22との間で通信を行う。
さらに、入出力プロセッサ42aには、拡張コネクタ60およびメモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60やメモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング14)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、システムLSI42は、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、通常の通電状態となるモード(通常モードと呼ぶこととする)を設定する。一方、電源ボタン20aがオフされると、システムLSI42は、ゲーム装置12の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という。)を設定する。この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、このスタンバイモードは、CPU40によってアプリケーションの実行が行われないモードである。
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動させないようにして、消費電力を低減するようにしてある。
また、図示は省略するが、ゲーム装置12のハウジング14内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
また、通常モードとスタンバイモードの切り替えは、コントローラ22の電源スイッチ26hのオン/オフの切り替えによっても遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52aへの電源供給を行わない設定にしてもよい。
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク18が排出される。
図3(A)ないし図3(E)は、コントローラ22の外観の一例を示す。図3(A)はコントローラ22の先端面を示し、図3(B)はコントローラ22の上面を示し、図3(C)はコントローラ22の右側面を示し、図3(D)はコントローラ22の下面を示し、そして、図3(E)はコントローラ22の後端面を示す。
図3(A)ないし図3(E)を参照して、コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング22a(コントローラ22)には、入力手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(B)に示すように、ハウジング22aの上面には、十字キー26a,1ボタン26b,2ボタン26c,Aボタン26d,−ボタン26e,HOMEボタン26f,+ボタン26gおよび電源スイッチ26hが設けられる。また、図3(C)および図3(D)に示すように、ハウジング22aの下面に傾斜面が形成されており、この傾斜面に、Bトリガースイッチ26iが設けられる。
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりすることができる。
1ボタン26bおよび2ボタン26cは、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン26bおよび2ボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。
−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hもまた、押しボタンスイッチである。−ボタン26eは、ゲームモードを選択するために使用される。HOMEボタン26fは、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン26gは、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ26hは、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
なお、この実施例では、コントローラ22自体をオン/オフするための電源スイッチは設けておらず、コントローラ22の入力手段26のいずれかを操作することによってコントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、コントローラ22で選択した位置を指定したりするために使用される。また、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションを取り消すなどのために使用される。
また、図3(E)に示すように、ハウジング22aの後端面に外部拡張コネクタ22bが設けられ、また、図3(B)に示すように、ハウジング22aの上面であり、後端面側にはインジケータ22cが設けられる。外部拡張コネクタ22bは、図示しない別の拡張コントローラを接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成され、4つのうちのいずれか1つを点灯することにより、点灯LEDに対応するコントローラ22の識別情報(コントローラ番号)を示したり、点灯させるLEDの個数によってコントローラ22の電源残量を示したりすることができる。
さらに、コントローラ22は、撮像情報演算部80(図4参照)を有しており、図3(A)に示すように、ハウジング22aの先端面には撮像情報演算部80の光入射口22dが設けられる。また、コントローラ22は、スピーカ86(図4参照)を有しており、このスピーカ86は、図3(B)に示すように、ハウジング22aの上面であり、1ボタン26bとHOMEボタン26fとの間に設けられる音抜き孔22eに対応して、ハウジング22a内部に設けられる。
なお、図3(A)ないし図3(E)に示したコントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
図4はコントローラ22の電気的な構成を示すブロック図である。この図4を参照して、コントローラ22はプロセッサ70を含み、このプロセッサ70には、内部バス(図示せず)によって、外部拡張コネクタ22b、入力手段26、メモリ72、加速度センサ74、無線モジュール76、撮像情報演算部80、LED82(インジケータ22c)、バイブレータ84、スピーカ86および電源回路88が接続される。また、無線モジュール76には、アンテナ78が接続される。
プロセッサ70は、コントローラ22の全体制御を司り、入力手段26、加速度センサ74および撮像情報演算部80によって入力された情報(入力情報)を、入力データとして無線モジュール76およびアンテナ78を介してゲーム装置12に送信(入力)する。このとき、プロセッサ70は、メモリ72を作業領域ないしバッファ領域として用いる。
上述した入力手段26(26a−26i)からの操作信号(操作データ)は、プロセッサ70に入力され、プロセッサ70は操作データを一旦メモリ72に記憶する。
また、加速度センサ74は、コントローラ22の縦方向(y軸方向)、横方向(x軸方向)および前後方向(z軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
たとえば、加速度センサ74は、第1所定時間毎に、x軸,y軸,z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をプロセッサ70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ70は、加速度センサ74から与えられる加速度データを、第2所定時間毎に検出し、一旦メモリ72に記憶する。プロセッサ70は、操作データ、加速度データおよび後述するマーカ座標データの少なくとも1つを含む入力データを作成し、作成した入力データを、第3所定時間(たとえば、5msec)毎にゲーム装置12に送信する。
なお、図3(A)−図3(E)では省略したが、この実施例では、加速度センサ74は、ハウジング22a内部の基板上の十字キー26aが配置される付近に設けられる。
ここで、加速度センサ74から出力される加速度データに基づいて、ゲーム装置12のプロセッサ(たとえば、CPU40)またはコントローラ22のプロセッサ(たとえば、プロセッサ70)などのコンピュータが処理を行うことによって、コントローラ22に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。
たとえば、1軸の加速度センサを搭載するコントローラが静的な状態であることを前提としてコンピュータ側で処理する場合、すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理する場合、コントローラ22が現実に静的な状態であれば、検出された加速度データに基づいてコントローラ22の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサの検出軸が鉛直下方向である状態を基準としたとき、1G(重力加速度)がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかを知ることができる。
また、多軸の加速度センサの場合には、さらに各軸の加速度データに対して処理を施すことによって、重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサの出力に基づいて、プロセッサ70がコントローラ22の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータの算出処理を行うことなく、加速度センサからの出力に基づいて、おおよその傾きを推定できるような処理としてもよい。このように、加速度センサをプロセッサと組み合わせることによって、コントローラ22の傾き、姿勢または位置を判定することができる。
一方、加速度センサが動的な状態を前提とする場合には、重力加速度成分に加えて加速度センサの動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動きの方向などを知ることができる。具体的には、加速度センサを備えるコントローラ22がユーザの手で動的に加速されて動かされている場合に、加速度センサによって生成される加速度データを処理することによって、コントローラ22の様々な動きおよび/または位置を算出することができる。
なお、加速度センサが動的な状態であることを前提とする場合であっても、加速度センサの動きに応じた加速度を所定の処理により除去すれば、重力方向に対する傾きを知ることができる。他の実施例では、加速度センサは、加速度データをプロセッサ70に出力する前に、内蔵の加速度検出手段から出力される加速度信号(加速度データ)に対して所望の処理を行うための、組込み式の信号処理装置また他の種類の専用の処理装置を備えてもよい。たとえば、組込み式または専用の処理装置は、加速度センサが静的な加速度(たとえば、重力加速度)を検出するためのものである場合、検知された加速度データをそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
無線モジュール76は、たとえばBluetoothの技術を用いて、所定周波数の搬送波を入力データで変調し、その微弱電波信号をアンテナ78から放射する。つまり、入力データは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(コントローラ22)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、コントローラ22からの入力データを取得することができる。そして、CPU40は、取得した入力データとプログラム(ゲームプログラム)とに従ってゲーム処理を行う。
さらに、上述したように、コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ80a、レンズ80b、撮像素子80cおよび画像処理回路80dによって構成される。赤外線フィルタ80aは、コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ340mおよび340nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ80aを設けることによってマーカ340mおよび340nの画像をより正確に撮像することができる。レンズ80bは、赤外線フィルタ80aを透過した赤外線を集光して撮像素子80cへ出射する。撮像素子80cは、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ80bによって集光された赤外線を撮像する。したがって、撮像素子80cは、赤外線フィルタ80aを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子80cによって撮像された画像を撮像画像と呼ぶ。撮像素子80cによって生成された画像データは、画像処理回路80dで処理される。画像処理回路80dは、撮像画像内における撮像対象(マーカ340mおよび340n)の位置を算出し、第4所定時間毎に、当該位置を示す各座標値を撮像データとしてプロセッサ70に出力する。なお、画像処理回路80dにおける処理については後述する。
図5は、コントローラ22を用いてゲームプレイするときの状態を概説する図解図である。図5に示すように、ビデオゲームシステム10でコントローラ22を用いてゲームをプレイする際、プレイヤは、一方の手でコントローラ22を把持する。厳密に言うと、プレイヤは、コントローラ22の先端面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ340mおよび340nの方を向く状態でコントローラ22を把持する。ただし、図1からも分かるように、マーカ340mおよび340nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、コントローラ22が指示する画面上の位置を変更したり、コントローラ22と各マーカ340mおよび340nとの距離を変更したりすることによってゲーム操作を行う。
図6は、マーカ340mおよび340nと、コントローラ22との視野角を説明するための図である。図6に示すように、マーカ340mおよび340nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子80cは、コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ340mおよび340nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子80cの視野角θ2は41°である。プレイヤは、撮像素子80cが2つのマーカ340mおよび340nからの赤外光を受光することが可能な位置および向きとなるように、コントローラ22を把持する。具体的には、撮像素子80cの視野角θ2の中に少なくとも一方のマーカ340mおよび340nが存在し、かつ、マーカ340mまたは340nの少なくとも一方の視野角θ1の中にコントローラ22が存在する状態となるように、プレイヤはコントローラ22を把持する。この状態にあるとき、コントローラ22は、マーカ340mおよび340nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲でコントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
なお、コントローラ22の位置および向きがこの範囲外となった場合、コントローラ22の位置および向きに基づいたゲーム操作を行うことができなくなる。以下では、上記範囲を「操作可能範囲」と呼ぶ。
操作可能範囲内でコントローラ22が把持される場合、撮像情報演算部80によって各マーカ340mおよび340nの画像が撮像される。すなわち、撮像素子80cによって得られる撮像画像には、撮像対象である各マーカ340mおよび340nの画像(対象画像)が含まれる。図7は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路80dは、各マーカ340mおよび340nの撮像画像における位置を表す座標(マーカ座標)を算出する。
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路80dは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路80dは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ340mおよび340nの画像340m’および340n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像であるマーカ340mおよび340nの画像340m’および340n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路80dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子80cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子80cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路80dは、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、プロセッサ70によって入力データに含まれ、ゲーム装置12に送信される。
ゲーム装置12(CPU40)は、受信した入力データからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上におけるコントローラ22の指示位置(指示座標)と、コントローラ22からマーカ340mおよび340nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置から、コントローラ22の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、コントローラ22と、マーカ340mおよび340nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12はコントローラ22とマーカ340mおよび340nとの間の距離を把握できる。
以下、本願発明の一実施例における、メッセージの送受信について、概要を説明する。図8は上述のゲーム装置12を用いた通信システム(アンケート回答システム)100の一例を示す図解図である。図8に示すように、通信システム100は、複数のゲーム装置12を含み、各ゲーム装置12はインターネットやLANのようなネットワーク106を介して、メールサーバ102および配信サーバ104に接続される。このようなネットワーク106に接続されることによって、メールサーバ102を介したメッセージの送受信や配信サーバ104からのデータのダウンロードを行うことが可能となる。
なお、この実施例では、複数のゲーム装置12がネットワーク106に接続されている場合について説明するが、ゲーム装置12は一台でも構わない。また、配信サーバ104は、ダウンロードデータ(コンテンツ)の種類に応じて複数設けられてもよい。さらに、ネットワーク106にはPCも接続され、また、携帯電話網を介して携帯電話機も接続される。それ以外にも、様々な電子機器をネットワークに接続して、メールサーバ102を介してゲーム装置12とメッセージの送受信を行うことができる。
ゲーム装置12同士は、ネットワーク106を介して通信可能である。プレイヤが入力したメッセージやゲーム装置12で生成したメッセージは、電子メールの形式に変換され、ネットワーク106およびメールサーバ102を介して、ゲーム装置12同士で送受信(やり取り)される。このため、メールサーバ102は、汎用的なメールサーバを用いることができる。したがって、ゲーム装置12は、PCや携帯電話機のような端末(他のゲーム装置12以外の端末)との間でメッセージすなわち電子メールをやり取りすることも可能である。このようなゲーム装置12におけるメッセージの送受信の処理は、ユーザが送受信指示を行わなくとも所定のスケジュールで自動的に実行されるので、ユーザは定期的なチェック作業を自ら行わなくとも、メッセージを受け取った状態でゲームや他のアプリケーションをプレイすることができる。また、ゲーム装置12は、アドレス帳(後述するフレンドリスト44d)に宛先を登録したゲーム装置12またはゲーム装置12以外の他の端末(以下、単に「他の端末」ということがある。)との間でのみメッセージの送受信を行うようにすることもでき、したがって汎用的なメールシステムを用いてもスパムメールのような不要なメッセージをユーザが受け取らないようにすることが可能である。
また、ゲーム機12は、受信したメッセージをモニタ34に表示するためのアプリケーションである伝言板機能を実行することができる。ただし、その他のアプリケーション(ゲーム等)に依存する固有のメッセージであって、当該アプリケーションによってのみ利用されるデータについては、当該アプリケーションでのみ読み取り可能とすることができる。したがって、特定のユーザのみにメッセージを送りたい場合には、個々のアプリケーションに依存するデータをメッセージに含めて送信すれば、伝言板機能では読めない形式にすることができる。ただし、アプリケーションの種類に拘わらず参照可能なメッセージは、伝言板機能によってモニタ34に表示して誰でも参照する(読む)ことができる。
伝言板機能は、受信したメッセージをモニタ34に表示する機能を有するアプリケーションであり、ネットワーク106から取得したメッセージを表示する。ただし、他のゲーム装置12や他の端末から受信したメッセージのみならず、自身宛に作成したメッセージを同様に表示することもできる。したがって、ゲーム装置12がネットワーク106に接続されていない場合であっても、家庭内の伝言板ないし個人用のメモ帳として、この伝言板機能を利用することができるし、ゲーム等のアプリケーションによって生成された記録を後から伝言板機能によって閲覧できるようにしておくこともできる。このとき、ゲーム機12において生成されたメッセージを、ネットワーク106から取得したメッセージと同様の形式(本実施例においては電子メール形式)で同じ領域に記憶しておくようにすれば、表示のための処理を個別に用意する必要がなくなる。たとえば、メモまたは伝言を生成する際に電子メール形式のデータに変換を行ったり、ゲームプログラムの処理において電子メール形式のデータを生成したりすればよい。
図9は、ゲーム装置12に内蔵されるフラッシュメモリ44に記憶されるデータの構成を模式的に示した図解図である。この図9を用いて、本実施例におけるメッセージの送受信とダウンロード処理について概要を説明する。ゲーム装置12は、メールサーバ102とメッセージの送受信を行い、配信サーバ104からデータのダウンロードを行い、2種類の通信処理を行う。メッセージの送受信およびダウンロードの処理は、入出力プロセッサ42aによって実行される。フラッシュメモリ44は記憶領域として、送信メッセージボックス44a、受信メッセージボックス44b、管理用ファイル44c、フレンドリスト44d、タスクリスト44e、セーブ領域44f、データベース44gおよび本体アプリ領域44hを含む。
送信メッセージボックス44aは、ゲーム装置12から他のゲーム装置12や他の端末に送信する電子メール形式のメッセージ(送信データとする)を記憶する領域である。図9からも分かるように、送信データは、メールサーバ102に送信される。したがって、ゲーム装置12は、メールサーバ102およびネットワーク106を介して、他のゲーム装置12にメッセージを送信することができる。入出力プロセッサ42aは、所定のスケジュールに基づいて(たとえば、10分毎に)送信メッセージボックス44aを参照し、送信データが記憶されている場合には、記憶されている送信データをネットワーク106に送信する。送信データがネットワーク106に送信されると、当該送信データは送信メッセージボックス44aから削除される。
したがって、電子メールの送信を入出力プロセッサ42aがアプリケーションとは独立に行うので、伝言板機能やゲーム等、CPU40で実行されるアプリケーションでは、メッセージの作成後、当該メッセージを電子メール形式で送信メッセージボックス44aに記録しておく処理を行うだけで、メッセージをネットワークに対して送信することができる。
なお、本実施例においては、より汎用的な電子メール形式のデータをメールサーバと送受信するが、データの形式は電子メールに限られず、さまざまなフォーマットにて転用可能である。特にゲーム装置12同士の通信に限られる場合は、汎用的なフォーマットでなくともよいし、他の端末とも通信する場合であっても、当該端末で処理可能な汎用フォーマットであれば適用できる。また、サーバの種類も、端末からのアクセスまで送信されたデータを保持する性質のものであれば、メールサーバ以外の種類のサーバでもよい。
また、何らかの理由で送信機能が停止されていたり、通信障害が発生したりしている場合には、送信データの送信が行われないため、送信メッセージボックス44aのデータ量が一杯になる可能性がある。かかる場合には、送信メッセージの送信メッセージボックス44aへの登録を受け付けないようにする。
受信メッセージボックス44bは、他のゲーム装置12、他の端末や配信サーバ104から受信される電子メール形式のメッセージ(この実施例では、上記の「送信データ」に対して「受信データ」ということがある。)を記憶する領域である。図9からも分かるように、受信データは、メールサーバ102や配信サーバ104から送信される。入出力プロセッサ42aは、所定のスケジュールに基づいて(たとえば、10分毎に)メールサーバ102にアクセスして、サーバに新着メールがあるかどうかを確認し、新着メールがある場合に、当該新着メールを受信して受信データとして受信メッセージボックス44bに記憶する。受信メッセージボックス44bでは、受信データは、アプリケーションによって開かれ(使用され)削除されるか、当該受信メッセージボックス44bが一杯になるまで保持される。ただし、受信メッセージボックス44bが一杯になると、新たな受信データを受信する毎に、最も古い受信データから順に削除される。また、ゲーム装置12が通常モードである場合に、受信メッセージボックス44bに保持された受信データは、ゲームデータのようなアプリケーションに依存するデータが添付されたものを除いて、ヘッダ情報に従ってデータベース44gに移動され、伝言板機能によって読み出し可能な状態となる。
なお、メールサーバ102からの受信データは、他のゲーム装置12や他の端末からのメッセージである。また、配信サーバ104からの受信データは、配信サーバ104の管理者等からの複数ユーザに対するお知らせのようなメッセージである。たとえば、配信サーバ104の管理者等からは、新作のゲームアプリケーション(ゲームソフト)の情報やゲーム内におけるイベントの情報などのメッセージが送信(通知)される。配信サーバ104から受信したデータを受信メッセージボックス44bに記憶する処理の詳細については後述する。
管理用ファイル44cは、ゲーム装置12についての管理情報であり、ゲーム装置12の識別情報、ユーザのプロファイルなど、ゲーム装置12固有の情報が記憶され、必要に応じて読み出される。フレンドリスト44dは、いわゆる電子メールのアドレス帳に相当し、登録した他のゲーム装置12の識別情報(またはメールアドレス)および他の端末のメールアドレスが記述される。このフレンドリスト44dは、伝言板機能を実行する場合に参照可能であるのみならず、各種アプリケーションからも参照可能である。ただし、フレンドリスト44dに記述された他のゲーム装置12の識別情報および他の端末のメールアドレスのうち、フレンド登録(アドレス登録)が実行された他のゲーム装置12の識別情報または他の端末のメールアドレスから送信された電子メール(受信データ)以外は削除される。つまり、送信元が不明である場合には、受信データがフィルタリングされる。これによって、スパムメールのような所望でない電子メールを自動的に削除することができる。
タスクリスト44eは、配信サーバ104からデータをダウンロードするスケジュールを表すタスクのリストであって、ゲーム装置12の必要のために予め登録されたタスクやユーザによって任意に登録されたタスクをそれぞれ記憶する。それぞれのタスクが実行されることによって、ダウンロード処理が行われることになる。ただし、この実施例では、1つのアプリケーションにおいては、1つのタスクを登録することができる。図10に、各タスクに含まれる属性情報の一例を示す。1つのタスクには、タスクの識別情報(タスクID)、アプリケーションの識別情報(アプリID)、配信元のURL、残りダウンロード回数、タスクの起動間隔、リトライマージン、コンテンツ更新間隔およびファイル名が含まれる。
タスクIDは、当該タスクを一意に識別するためのIDである。アプリIDは、当該タスクを登録したアプリケーションを一意に識別するためのIDである。このアプリIDは、タスクの登録処理を行ったアプリケーションに応じて決定される。
配信元のURLは、配信元(配信サーバ104)の場所を示し、ダウンロードデータのファイル名までを含む。この配信元のURLは、ユーザによって設定されたり、アプリケーションによって自動的に設定されたりする。
残りダウンロード回数は、ダウンロードを実行可能な回数を示す。この実施例では、ゲーム装置12(入出力プロセッサ42a)がダウンロードのために、ネットワーク106(配信サーバ104)に接続要求(リクエスト)を送信すると、通常の場合において、残りダウンロード回数が1減算される。そして、残りダウンロード回数が0になると、当該タスクはタスクリスト44eから削除され、当該タスクは実行不能となる。残りダウンロード回数を設定することにより、必要な期間において当該ダウンロードを行わせることができ、ダウンロードが不要になっても無駄なダウンロード処理を実行し続けることを防ぐことができる。
タスクの起動間隔は、タスクを実行する時間間隔であり、具体的には、タスクを実行してから次にタスクを実行するまでの時間(期間)を意味する。ただし、タスクを登録した時点では、その登録時刻を基準にして、次にタスクを実行する時間が決定される。このタスクの起動間隔は、ユーザによって設定されたり、ダウンロードデータ(コンテンツ)の種類に応じて自動的に設定されたりする。
リトライマージンは、ダウンロードの起動間隔によって決まる次回のタスクの実行時刻(予定時刻)を超過することが許容される時間である。たとえばゲーム装置12の電源が完全にOFFされている場合や、ネットワークに障害が生じている場合等には、タスクを実行することができず、次にタスクが実行可能な状態になった場合にはタスクの予定時刻を超過している場合があるが、予定時刻を大幅に超過した場合には、既にダウンロードされるデータ自体が不要なものになっている場合がある。したがって、タスク登録時に上記リトライマージンを設定し、タスクの起動間隔に応じてタスクの予定時刻が決定されると、リトライマージンに応じて、リトライが許容される時刻(リトライ許容時刻)が決定される。このリトライ許容時刻を越えると、当該タスクは実行されず、その後、タスクリスト44eから削除される。このリトライマージンは、ユーザによって設定されたり、ダウンロードデータの種類に応じて自動的に設定されたりする。
コンテンツ更新間隔は、配信元のURLに関して当該配信元で設定されるコンテンツ(ダウンロードデータ)を更新する間隔の平均値である。したがって、ダウンロードデータの種類によっては、このコンテンツ更新間隔が示すダウンロードデータを更新する間隔の平均値を考慮して、タスク起動間隔が設定される。具体的には、タスク起動間隔をコンテンツ更新間隔よりも長い時間に設定しておけば、同じダウンロードデータを重複して取得するような無駄を無くすことができる。逆に、タスク起動間隔をコンテンツ更新間隔よりも短い時間に設定しておけば、更新されるコンテンツのダウンロードを逃すことが無くなる。更新間隔の平均値は、予め想定されている値でもよいし、ダウンロードを実行する毎に配信サーバ104から更新間隔の平均値を取得してタスクを更新するようにしてもよい。
ファイル名は、ダウンロードデータを保存する場合に付与するファイル名であり、たとえば、オプションによって指定可能である。ただし、ダウンロードデータにはファイル名が付されているため、ファイル名を指定せずとも所定のファイル名でデータを取得することは可能である。
なお、タスクの実行については後で詳細に説明する。ダウンロードデータは、その識別情報(アプリID)が示すアプリケーションにおいて利用することができる。たとえば、ゲームのアプリケーションにおいては、ダウンロードデータは、当該ゲームについての追加マップ、追加キャラクタ、追加アイテムなどのデータである。
図9に戻って、セーブ領域44fは、アプリケーションのデータを保存(セーブ)する領域であり、領域内にダウンロードボックス440を含む。ダウンロードボックス440は、上述したように、タスクに従って配信サーバ104からダウンロードされたダウンロードデータが記憶される領域である。詳細な説明は省略するが、ダウンロードデータには、タスクが登録されたアプリケーションを識別するためのアプリIDが予め付されている。ただし、アプリIDは必ずしもダウンロードデータに予め付されている必要はなく、他の実施例ではダウンロードボックス440に登録する際に、タスクの属性情報が示すアプリIDを参照して、これを付すようにしてもよい。したがって、様々な種類のアプリケーションについてのダウンロードデータがダウンロードボックス440に記憶されている場合であっても、そのアプリIDによって各ダウンロードデータを識別することができる。また、セーブ領域44fは、アプリケーション毎に領域が確保されている。したがって、他の実施例では、ダウンロードデータに対応したアプリケーションのデータを記憶する領域内にアプリケーション毎のダウンロードボックスを設けるようにしてもよい。
データベース44gは、上述の伝言板機能によって利用される、日付毎のメッセージを格納しておく領域であり、他のアプリケーションからも参照可能である。上述したように、受信データは受信メッセージボックス44bに記憶されるが、受信メッセージボックス44bの容量は有限であり、一杯になると、受信データは古いものから順に削除する。したがってメッセージの長期間保存や共用化のために、データベース44gを設け、受信データ(メッセージ)は、たとえばゲームデータが添付されたもののような、個々のアプリケーションでしか利用しないものを除いて、受信メッセージボックス44bからデータベース44gに移動される。このとき、メッセージのヘッダ情報が参照され、日付毎に管理されるデータベース44gの各領域に記憶される。たとえば、伝言板日時指定の情報として年月日および時間が記述されている場合には、当該受信データは指定された年月日に対応する領域に記憶される。ただし、メッセージのヘッダ情報に日時等の指定が無ければ、当該メッセージを受信した日に対応する領域に、当該メッセージは記憶される。日付毎の領域の管理方法としては、たとえば日付毎にフォルダを設定し、メッセージを対応するフォルダ内に保存するようにすればよい。また、保存する際のファイル名を、時刻を表すファイル名にしてもよい。
なお、図示は省略するが、メモリカードがメモリカード用コネクタ62に装着されている場合には、データベース44gの内容はメモリカードに自動的またはユーザの指示によりバックアップすることができる。
本体アプリ領域44hは、本体機能として組み込まれたアプリケーションのプログラム(ソフト)を記憶する領域である。たとえば、ゲーム装置12を起動した際のメニュープログラムや、伝言板機能、フレンド登録機能のようなゲーム装置12自体の機能(本体機能)のアプリケーションは、本体アプリ領域44hに記憶(インストール)されている。つまり、ゲーム装置12は、光ディスク18に記憶されているゲーム等のプログラムを読み出してアプリケーションを実行することも、フラッシュメモリ44に記憶されているプログラムを読み出してアプリケーションを実行することも可能なゲーム装置である。また、本体アプリ領域44hに記憶されるプログラムは上述のソフト以外にも追加することが可能である。
ここで、入出力プロセッサ42aによって実行されるダウンロード処理の概要について説明する。この実施例では、ダウンロードデータは、配信サーバ104から取得される。図11(A)に示すように、或るタスクがタスクリスト44eに登録されると、その時刻t1を基準に当該タスクがスケジューリングされる。たとえば、図11(A)に示す例では、タスクの実行間隔T1に従って時刻(予定時刻)t2に当該タスクがスケジューリングされる。なお、この実行間隔T1が、当該タスクの属性情報のタスク起動間隔に相当する。時刻は、ROM/RTC48から得ることができる。タスクが実行されると、当該実行時刻に実行間隔T1を加えた予定時刻に、次回タスクが実行される。ダウンロードのタスクは、ダウンロード実行とともに残りダウンロード回数が1減算され、このとき、次回タスクを実行する予定時刻(実行予定時刻)がスケジューリングされる。
図11(B)に示すように、入出力プロセッサ42aの内部では、処理の単位時間となる所定時間毎にトリガが発生し、当該トリガ発生時に、トリガ発生時刻と、前述のメッセージの送受信を行う予定時刻や、ダウンロードを行う予定時刻等とを比較する処理が行われ、予定時刻を超過している場合に当該処理が起動することになる。したがって、トリガの発生時よりも後にタスクがスケジューリングされている場合には、当該タスクは次回のトリガの発生時に実行されるため、タスクの実際の実行時刻は、図11(A)でスケジューリングした予定時刻t2から若干遅れてしまうことがある。
また、図11(C)に示すように、スタンバイモードではなく、ゲーム装置12の電源が完全にオフされた場合のように、タスクの実行自体が停止される場合も有り得る。かかる場合には、再びゲーム機12が起動した後にタスクが実行されることになるが、タスクの実行時刻にかなりの遅れが生じてしまうことがある。
なお、タスクの実行は、アプリケーションからの要求によって、一時的に停止させたり、再開させたりすることが可能であって、そのような場合にもタスクの実行時刻に遅れが生じる可能性がある。
このように、タスクの実行時刻の遅延が発生した場合、ダウンロードするデータが既に不要なものになっている場合があるので、遅延が発生した場合に、当該タスクの実行を許容するか否かを決定するために、タスクの属性情報として、リトライマージンが設定されている。具体的には、タスクを実行するとき、タスクの実行を開始する時点(現在時刻)が、タスクの実行予定時刻にリトライマージンが示す時間を加算したリトライ許容時刻を越えているかどうかを判断する。そして、現在時刻がリトライ許容時刻を越えている場合には、タスクの実行は行わずに、当該タスクはタスクリスト44eから削除される。一方、現在時刻がリトライ許容時刻に満たない場合には、当該タスクを実行し、以降の処理を続行する。
たとえば、ゲーム装置12は、アンケートについてのアプリケーション(アンケートアプリケーション)を実行することができる。なお、アンケートアプリケーションは、本体アプリとして予めゲーム装置12にインストールされていたり、光ディスク18からロードされたりする。ただし、配信サーバ104のようなサーバからプログラム(アンケートのアプリケーションソフト)をダウンロードして、ゲーム装置12に追加的にインストールすることもできる。
たとえば、アンケートアプリケーションが起動されると、図12に示すようなアンケートの初期画面100がモニタ34に表示される。この初期画面100は、アンケートアプリケーションにおける様々な処理の実行を選択するための画面である。初期画面100には、複数のボタン(またはアイコン)102,104,106,108,110,112,114,116が表示されるとともに、受付中のアンケートを表示(一覧表示)するための表示部(アンケート表示部)150が設けられる。
ボタン102は、アンケートアプリケーションで使用するプレイヤオブジェクトを新規登録(新規作成)するためのボタンである。ボタン104は、アンケートアプリケーションで使用するプレイヤオブジェクトについてのデータ(プレイヤデータ)を参照するためのボタンである。ボタン106は、メッセージ(電子メール)を作成するためのボタンである。ボタン108は、アンケートアプリケーションについてのオプション(データ全消去、地域選択、言語切替など)を設定するためのボタンである。ボタン110は、ゲーム装置12を起動した際のメニュープログラムの画面に戻るためのボタンである。ボタン112は、世界の各国で実施されるアンケート(ワールドアンケート)を選択するためのボタンである。ボタン114は、現在回答中のアンケートについての結果を表示するためのボタンである。ボタン116は、過去に回答したアンケートの結果を見るためのボタンである。
また、アンケート表示部150には、複数(この実施例では、3つ)の表示領域152、154、156が設けられる。表示領域152、154、156の各々には、アンケート(質問)の内容の全部ないし一部がテキストで表示されるとともに、その回答期限が表示される。さらに、アンケート表示部150に新しく表示されたアンケートについては、その表示領域(図12では、154,156)に、新しく表示されたことを示す旨が表示される。たとえば、図12に示す例では、「NEW!」の文字が吹き出し(バルーン)で表示される。これは単なる一例であり、文字を表示せずに、表示領域152、154、156の色や輝度或いはその両方を変えることにより、新しく表示されたことを表現してもよい。
ここで、この実施例では、初期画面100においては、3つのアンケートを選択可能に表示してある。詳細な説明は省略するが、表示領域152,154,156に表示されるアンケートは、メインメモリ(42e,46)に設けられる表示用領域にアンケート(質問)の識別情報(後述する質問ID)を記憶することにより管理されている。
また、このようなアンケートは、比較的長時間で更新されるため、一旦アンケートを受信した後では、次回アンケートを受信するまでに或る程度の長時間を要してしまう。このため、この実施例では、予備用のアンケートを1つ受信しておき、回答期限が切れたアンケートを削除した場合であっても、予備用のアンケートを読み出して表示可能にしてある。つまり、表示用の3つのアンケートと予備用の1つのアンケートがメインメモリ(42e,46)に記憶されているのである。
ただし、予備用のアンケートは2つ以上受信可能にしておいてもよい。かかる場合には、予備用のアンケートを表示するとき、回答期限が最も古いアンケートが選択されて初期画面100に表示される。
また、メインメモリ(42e,46)には、結果待ち領域が設けられ、回答期限が過ぎたアンケートの質問IDは、表示用領域から結果待ち領域に移動される。つまり、回答期限が過ぎたアンケートは、その集計結果を待機するための結果待ち領域において管理されるのである。
また、初期画面100において、ボタン102がオン(クリック)されると、図13に示すようなオブジェクト選択画面200がモニタ34に表示される。オブジェクト選択画面200は、アンケートアプリケーションで使用するプレイヤオブジェクト(アバタ)を選択するための画面である。詳細な説明は省略するが、この実施例では、最大で6つのプレイヤオブジェクトを使用(登録)することが可能である。
図13に示すように、オブジェクト選択画面200には、プレイヤオブジェクトを表示する表示部210が設けられ、複数(図13では、10個)のプレイヤオブジェクトの顔画像が表示されるとともに、顔画像に対応してプレイヤオブジェクトの名称が表示される。これらの顔画像および名称は、プレイヤが作成したり、ゲーム装置12(CPU40)が任意に作成したりしたものである。
また、オブジェクト選択画面200には、表示部210の下方に、ボタン202、204、206が設けられる。ボタン202は、図12に示した初期画面100に戻るためのボタンである。ボタン204は、ページの戻りボタンである。ボタン206は、ページの送りボタンである。たとえば、ゲーム装置12では、100個のプレイヤオブジェクトを登録(作成)可能であり、したがって、プレイヤがページを送ったり、ページを戻したりすると、表示部210に様々なプレイヤオブジェクトが表示される。このようにして、プレイヤは、所望のプレイヤオブジェクトを検索し、アンケートアプリケーションで使用する所望のプレイヤオブジェクトを登録(選択)する。
なお、アンケートアプリケーションを最初に起動した場合には必ずプレイヤオブジェクトを登録する必要があるため、初期画面100に変えて、オブジェクト選択画面200が表示される。
また、既に登録されているプレイヤオブジェクトについては、オブジェクト選択画面200には表示されない。または、グレーアウトされ、選択不能な状態で表示される。
図12に戻って、たとえば、表示領域152のアンケートが選択されると、図14に示すように、当該アンケートに回答するための回答画面300がモニタ34に表示される。回答画面300には、アンケート(質問)の内容を表示する表示領域310および質問に対する第1回答の内容を表示する表示領域312および第2回答の内容を表示する表示領域314が設けられる。説明の都合上、第1回答表示領域312と第2回答表示領域314と呼ぶことにする。図14に示す例では、表示領域310には「1億円当ったら…」という質問が表示され、第1回答表示領域312には「貯金する」という回答が表示され、第2回答表示領域314には「パーっと使う」という回答が表示される。
また、回答画面300には、アンケートへの回答を選択するための選択領域316が設けられる。選択領域316は、回答を選択していない領域(未選択領域)316a、第1回答を選択する領域(第1回答選択領域)316bおよび第2回答を選択する領域(第2回答選択領域)316cを含む。
さらに、回答画面300には、ボタン302およびボタン304が設けられる。ボタン302は、初期画面100に戻るためのボタンである。ボタン304は、アンケートに対する回答を投票するためのボタンである。具体的には、ボタン304がオンされると、後述するように、アンケートへの回答結果についての回答データ(図23(C)参照)がアンケートの回答を収集および集計するサーバ(この実施例では、配信サーバ104)に送信される。
たとえば、プレイヤがプレイヤオブジェクトをドラッグして、未選択領域316aに表示されるプレイヤオブジェクト(P1,P2,P3,P4,P5,P6)を、第1回答選択領域316bまたは第2回答選択領域316cに移動させる。図示は省略するが、アンケートに対する回答を投票する前では、第1回答選択領域316bと第2回答選択領域316cとの間を自由に移動させることができる。
ただし、一旦アンケートに対する回答を投票した後では、次回以降、当該アンケートについての回答画面300が表示されるときに、アンケートに回答したプレイヤオブジェクトは、回答した側の選択領域(316a,316b)上でグレーアウトされる。
なお、このように、アンケートに投票した後にも回答画面300を表示するのは、まだ投票していないプレイヤオブジェクト(P1−P6)が存在したり、プレイヤの投票した内容を確認したりする場合があるからである。
また、詳細な説明は省略するが、アンケートについてのデータ(後述する質問データ:図23(B)参照)は、アンケートの回答を収集および集計するサーバが配信してもよいし、他のサーバが配信するようにしてもよい。この実施例では、配信サーバ104が質問データを配信するようにしてある。
また、図14に示す回答画面300において、ボタン304をオンし、アンケートに投票すると、図15に示すような予想選択画面400がモニタ34に表示される。この予想選択画面400は、プレイヤに、投票を受け付けた旨を伝達するとともに、投票結果を予想するかどうかを選択させるための画面である。予想選択画面400では、表示部410に、投票を受け付けた旨および投票結果を予想するかどうかの選択を促す旨のメッセージが表示される。
また、予想選択画面400には、ボタン402およびボタン404が設けられる。ボタン402は、投票結果を予想することに同意するためのボタンである。また、ボタン404は、投票結果を予想することに同意しないためのボタンである。
ここで、ボタン402がオンされると、つまり投票結果を予想する場合には、図16に示すような予想画面500がモニタ34に表示される。なお、ボタン404がオンされた場合には、初期画面100に戻る。図16に示すように、予想画面500には、予想に関する質問内容を表示するための表示領域510が設けられるとともに、第1予想の内容を表示する表示領域512および第2予想の内容を表示する表示領域514が設けられる。説明の都合上、第1予想表示領域512および第2予想表示領域514と呼ぶことにする。図16に示す例では、表示領域510には「どっちが多いと思う?」という質問が表示され、第1予想表示領域512には「貯金する」という予想内容が表示され、第2予想表示領域514には「パーっと使う」という予想内容が表示される。
また、予想画面500には、予想内容を選択するための選択領域516が設けられる。選択領域516は、予想していない領域(未予想領域)516a、第1予想を選択する領域(第1予想選択領域)516bおよび第2予想を選択する領域(第2予想選択領域)516cを含む。
さらに、予想画面500には、ボタン502およびボタン504が設けられる。ボタン502は、初期画面100に戻るためのボタンである。ボタン504は、予想を投票するためのボタンである。具体的には、ボタン504がオンされると、予想データ(図24(A)参照)が配信サーバ104に送信される。
予想画面500において、プレイヤオブジェクトをドラッグして、第1予想選択領域516bまたは第2予想選択領域516cに移動させ、ボタン504をオンすると、予想することができる。ここで、図面では表現できないが、たとえば、図14に示す回答画面300において、第1回答表示領域312の背景と第1回答選択領域316bとには同じ色(説明の都合上、「第1色」という。)が付されており、第2回答表示領域314の背景と第2回答選択領域316cとには同じ色(説明の都合上、「第2色」という。)が付されている。また、同様に、図16に示す予想画面500において、第1予想表示領域512の背景と第1予想選択領域516bとには第1色が付され、第2予想表示領域514の背景と第2予想選択領域516cとには第2色が付されている。
図16の予想画面500から分かるように、回答画面300において、アンケートに回答すると、アンケートに回答したプレイヤオブジェクトの服(上着)の色は、回答選択領域の色と同じ色で表示される。したがって、たとえば、プレイヤオブジェクトP1およびP2は、回答画面300において第1回答を選択したことが分かり、プレイヤオブジェクトP3は、回答画面300において第2回答を選択したことが分かる。
なお、図示は省略するが、予想画面500において、ボタン504をオンし、投票結果の予想を終了すると、つまり予想データ76を配信サーバ104に送信すると、初期画面100に戻る。
図12に戻って、ボタン114がオンされると、回答したアンケートの投票結果(集計結果)についての全体の結果画面600がモニタ34に表示される。詳細な説明は省略するが、アンケートの結果データ(図24(B)参照)は、上述したダウンロードデータに含まれ、プレイヤがボタン114をオンしたとき、ダウンロードデータの取得処理を実行し、ダウンロードデータからアンケートの結果データを取得する。ただし、アンケートに何ら回答していない場合には、たとえダウンロードデータにアンケートの結果データが含まれるとしても、アンケートの結果データは取得されない。つまり、不要なデータを取得しないようにしてある。
図17に示すように、全体の結果画面600には、アンケートの内容を表示する表示領域610が設けられ、当該アンケートに対する第1回答の内容を表示する領域(第1回答表示領域)612および第2回答の内容を表示する領域(第2回答表示領域)614が設けられる。各表示領域(610,612,614)に記載される内容は、回答画面300で対応する表示領域(310,312,314)に記載される内容と同じであるため、重複した説明は省略する。
また、全体の結果画面600では、全体の結果を表示するための表示領域616が設けられるとともに、第1回答の割合を表示するための領域(第1割合表示領域)618および第2回答の割合を表示するための領域(第2割合表示領域)620が設けられる。表示領域616では、予め作成された複数のアバタ(ノンプレイヤオブジェクト)を、アンケートの回答の結果に応じた割合で色分けされるように、その服の色を設定して表示するようにしてある。また、この実施例では、アンケートに回答した全体人数を100%とした場合に、第1回答を選択した人数の全体人数に対する割合を第1割合表示領域618に表示し、第2回答を選択した人数の全体人数に対する割合を第2割合表示領域620に表示する。
なお、この実施例では、アンケートに対する全体の結果を割合で表示するようにしてあるが、人数で表示するようにしてもよい。
また、全体の結果画面600には、表示領域616の下方に、アンケートアプリで使用するプレイヤオブジェクトP1−P6が表示される。上述したように、プレイヤオブジェクトP1−P6では、服の色が自身の投票結果を示し、手に持っている札の色が自身の予想結果を示してある。
さらに、全体の結果画面600には、ボタン602、ボタン604およびボタン606が設けられる。ボタン602は、初期画面100に戻るためのボタンである。ボタン604は、詳細な結果を表示するためのボタンである。図示は省略するが、たとえば、男女別の結果や予想的中率の結果を見ることができる。ボタン606は、地域毎の結果を表示するためのボタンである。
たとえば、ボタン606をオンすると、図18に示すような地域毎の結果画面700がモニタ34に表示される。この地域毎の結果画面700は、都道府県別の集計結果を示す。なお、この実施例では、都道府県別の結果画面の例を示してあるが、或る県における市町村別、国別、他の国内における地域別のような地域毎の結果を表示するようにしてもよい。
図18に示すように、地域毎の結果画面700には、地域毎の結果である旨を表示する表示領域710が設けられるとともに、日本地図720が表示される。図18では、第1色および第2色の各々の濃さをさらに識別可能にするために、日本地図720では、第1色を縞模様で示し、第2色を斑点模様で示してある。第1色および第2色の濃さは、集計結果の偏り度合いを示しており、色が濃いほど、集計結果の偏りが大きいことを示している。ただし、図18では、色の濃さを線または点の密集度で表現してある。
また、地域毎の結果画面700には、ボタン702が設けられる。このボタン702は、初期画面100に戻るためのボタンである。
図12に戻って、ボタン104をオンすると、プレイヤデータの初期画面(図示せず)がモニタ34に表示される。簡単に説明すると、プレイヤデータの初期画面は、アンケートアプリケーションで使用するプレイヤオブジェクト(P1−P6)を選択可能に表示した画面である。ただし、この実施例では、アンケートアプリケーションでは、最大で6個のプレイヤオブジェクトを使用することできるが、このプレイヤデータの初期画面では、図13に示したオブジェクト選択画面200を用いて登録したプレイヤオブジェクトのみが表示される。
プレイヤデータの初期画面において、いずれか1つのプレイヤオブジェクト(P1−P6)を選択(指定)すると、図19に示すような個別プレイヤ画面800がモニタ34に表示される。この個別プレイヤ画面800は、該当するプレイヤオブジェクトについての各種情報(この実施例では、投票データ、世の中分かってる度、世の中とのギャップ)を表示するための画面である。
個別プレイヤ画面800には、情報表示画面810がさらに設けられる。この情報表示画面810は、個別プレイヤ画面800に重ねて表示される。ただし、個別プレイヤ画面800内に、情報表示画面810の表示領域を設けるようにしてもよい。情報表示画面810は、当該情報の内容(図19では、「投票データ」)を表示する表示領域812が設けられる。また、情報表示画面810には、アンケートへの投票回数を表示する表示領域814および投票結果の予想についての成績および的中率を表示する表示領域816が設けられる。図19から分かるように、表示領域816には、予想の成績の勝敗が表示され、予想の的中率はバーグラフで表示される。ただし、これは単なる一例であり、予想の的中率は百分率を数値で表示してもよい。
また、情報表示画面810には、ボタン820,ボタン822およびボタン824が表示される。ボタン820は、情報表示画面810を閉じて、プレイヤデータの初期画面に戻るためのボタンである。ボタン822は、ページを戻すためのボタンである。ただし、図19に示すように、1/3ページの情報表示画面810が表示されている状態でボタン822がオンされると、3/3ページの情報表示画面850(図22参照)が表示される。ボタン824は、ページを送るためのボタンである。
また、個別プレイヤ画面800には、ボタン802が設けられる。このボタン802をオンすると、現在選択(指定)しているプレイヤオブジェクトのプレイヤデータ(図23(A)参照)を削除することができる。つまり、アンケートの投票回数や予想の成績などの情報がすべて消去される。
ただし、ボタン802がオンされると、図20に示すような消去確認画面900が表示される。消去確認画面900には、プレイヤデータを消去する旨のメッセージおよび消去するかどうかの最終確認を促すメッセージが表示される。また、消去確認画面900には、ボタン902およびボタン904が表示される。ボタン902は、消去することを同意(許可)するためのボタンである。ボタン904は、消去することを止めるためのボタンである。
なお、ここでは詳細な説明は省略するが、消去(削除)しようとするプレイヤオブジェクト(後述するプレイヤデータ70)に現在回答中のアンケートがある場合には、当該プレイヤオブジェクトのプレイヤデータを削除することはできない。したがって、かかる場合には、消去確認画面900を表示する前に、回答中のアンケートがある為に削除することができない旨のメッセージがモニタ34に表示される。このようにすれば、配信サーバ104側で、1台のゲーム装置12からの1のアンケートへの回答数をチェックしなくても、プレイヤデータ70の作成および削除を繰り返して、何度も同じアンケートへ回答するような不正行為を防止することができる。
ただし、図示は省略するが、プレイヤオブジェクトを削除するための削除画面を表示可能にしておき、消去(削除)しようとするプレイヤオブジェクト(後述するプレイヤデータ70)に現在回答中のアンケートがある場合には、その削除画面において選択できないように、当該プレイヤオブジェクトを非表示或いはグレーアウトにするようにしてもよい。つまり、プレイヤオブジェクトに現在回答中のアンケートがある場合には、削除するために選択することすらできないようにするのである。このようにしても不正行為を防止することが可能である。
また、図19に示す個別プレイヤ画面800において、情報表示画面810に表示されるボタン824がオンされると、図21に示すように、個別プレイヤ画面800が更新される。具体的には、情報表示画面810に代えて、情報表示画面830が表示される。この情報表示画面830には、当該情報の内容(図21では、世の中わかってる度)を表示するための表示領域832が設けられる。また、情報表示画面830には、当該情報(世の中わかってる度)を複数のカテゴリに分けて可視化したグラフが表示される。この実施例では、世の中わかってる度は、「性格」、「身のまわり」、「知識」、「経験」および「考えかた」の5つのカテゴリで表わしてある。なお、各アンケートは、いずれかのカテゴリに当てはまるようにしてある。詳細な説明は省略するが、カテゴリ別のスコア(ポイント)が算出され、その合計ポイントが吹き出し表示されている。
詳細な説明は省略するが、たとえば、アンケートに対するプレイヤオブジェクトの回答が、当該アンケートの集計結果において多数派の回答と一致する場合には、当該アンケートに対応するカテゴリのポイントが加算される。逆に、アンケートに対するプレイヤオブジェクトの回答が、当該アンケートの集計結果において少数派の回答と一致する場合には、当該アンケートに対応するカテゴリのポイントが減算される。
また、情報表示画面830には、ボタン840、ボタン842およびボタン844が設けられる。ボタン840は、情報表示画面830を閉じて、プレイヤデータの初期画面に戻るためのボタンである。ボタン842はページを戻すためのボタンである。また、ボタン844はページを送るためのボタンである。
図21に示す個別プレイヤ画面800において、情報表示画面830のボタン844がオンされると、図22に示すような個別プレイヤ画面800に更新される。具体的には、情報表示画面830に代えて、情報表示画面850が表示される。情報表示画面850には、当該情報の内容(図22では、世の中とのギャップ)を表示するための表示領域852が設けられる。また、情報表示画面850には、世の中とのギャップを可視化した画像854が表示される。たとえば、世の中とのギャップは、アンケートに対するプレイヤオブジェクトの回答と、アンケートの集計結果とに基づいて、距離に換算して表示してある。詳細な説明は省略するが、アンケートに対するプレイヤオブジェクトの回答が、集計結果の少数派の回答と一致する回数(度合い)が大きい程、世の中とのギャップ(距離)が大きくされる。
また、情報表示画面850には、ボタン860、ボタン862およびボタン864が表示される。ボタン860は、情報表示画面850を閉じて、プレイヤデータの初期画面に戻るためのボタンである。ボタン862は、ページを戻すためのボタンである。ボタン864は、ページを送るためのボタンである。
次に、ゲーム装置12において管理されるプレイヤデータ70およびゲーム装置12と配信サーバ104との間で送受信されるデータ(質問データ72、回答データ74、予想データ76、結果データ78)について説明する。
図23(A)はプレイヤデータ70を示す。プレイヤデータ70は、プレイヤオブジェクトの識別情報(プレイヤオブジェクトID)70aをヘッダ情報として含む。また、プレイヤデータ70には、質問ID記憶領域70b、履歴データ70c、予想データ70d、分かってる度データ70eおよびギャップデータ70fが含まれる。図示は省略するが、プレイヤデータは、ゲーム装置12のフラッシュメモリ44内のアンケートアプリケーションに割り当てられた領域に記憶(セーブ)される。
プレイヤオブジェクトID70aは、プレイヤデータ(プレイヤオブジェクト)を識別するための識別情報である。質問ID記憶領域70bは、当該プレイヤオブジェクトが回答したアンケート(質問)についての識別情報(質問ID)を記憶するための領域であり、複数(この実施例では、4つ)の記憶領域(第1記憶領域70b1,第2記憶領域70b2,第3記憶領域70b3,第4記憶領域70b4)を含む。この実施例では、プレイヤオブジェクトがアンケートに回答する毎に、アンケートの質問IDが第1記憶領域70b1から第2記憶領域70b2、第3記憶領域70b3、第4記憶領域70b4の順に記憶される。第1記憶領域70b1ないし第4記憶領域70b4のすべてに質問IDが記憶されている状態で、プレイヤオブジェクトがアンケートに回答すると、第2記憶領域70b2に記憶された質問IDが第1記憶領域70b1に上書きされ、第3記憶領域70b3に記憶された質問IDが第2記憶領域70b2に上書きされ、第4記憶領域70b4に記憶された質問IDが第3記憶領域70b3に上書きされた後に、今回回答したアンケートの質問IDが第4記憶領域70b4に上書きされる。
なお、この実施例では、プレイヤデータ70に質問IDの記憶領域を4つ設けるようにしてあるのは、3つの表示用のアンケートと1つの予備用のアンケートについての質問IDを記憶できれば足りるためである。初期画面100において、4つ以上のアンケートを表示可能とする場合には、プレイヤデータ70には、そのアンケートの表示数に予備用のアンケートの個数(この実施例では、1個)を加えた数の記憶領域を設けるようにすればよい。また、初期画面100において、必ずしも3つのアンケートを表示する必要がない場合には、予備用のアンケートをメインメモリ(42e,46)に予め記憶しておく必要もないため、かかる場合には、プレイヤデータ70に設ける記憶領域の数は表示用のアンケートの数だけ設けられればよい。
履歴データ70cは、回答したアンケートの質問IDおよび回答内容についての履歴および回答したアンケートの数についてのデータである。ただし、質問IDおよび回答内容の履歴は、所定数(たとえば、12)だけ記憶し、メモリ容量の浪費を防止するようにしてある。予想データ70dは、プレイヤオブジェクトの予想の履歴、予想の勝敗および的中率のデータである。分かってる度データ70eは、プレイヤオブジェクトの世の中分かってる度のカテゴリ別のポイント数および合計ポイント数のデータである。ギャップデータ70fは、世の中とのギャップを距離で表わした数値のデータである。
図23(B)は質問データ72を示す。質問データ72(ダウンロードデータ)は、配信サーバ104からゲーム装置12に配信され、アンケートアプリケーションがダウンロードボックス440からセーブ領域44fの内の自身に割り当てられたフォルダ内に必要に応じて取り込む。質問データ72は、アプリID72aをヘッダ情報として含み、さらに、質問ID72b、質問内容データ72cおよび回答期限データ72dを含む。
アプリID72aは、アプリケーションの種類を識別するための識別情報であり、この実施例では、アンケートアプリケーションに割り当てられる識別情報が記述される。以下、この実施例において、同様であるため、重複する説明は省略することにする。質問ID72bは、アンケートすなわちアンケートデータ(質問内容データ)についての識別情報である。以下、この実施例おいて、同様であるため、重複する説明は省略することにする。質問内容データ72cは、質問内容(アンケート)についてのテキストデータである。回答期限データ72dは、アンケートについての質問の回答期限(終了日時)ないし質問の回答期間(開始日時と終了日時)を示すデータである。
図23(C)は回答データ74を示す。回答データ74は、図14に示した回答画面300において、ボタン304がオンされたときに、生成され、ゲーム装置12から配信サーバ104に送信される、アンケート(質問)に対する回答のデータである。配信サーバ104は、ネットワーク106に接続される複数のゲーム装置12から送信される回答データ74を受信し(アンケートの収集)、受信した回答データ74に従ってアンケートの集計を行う。そして、集計結果(後述する結果データ78)をネットワーク106に接続されたすべてのゲーム装置12に配信する。
回答データ74は、アプリID74aをヘッダ情報として含み、さらに、ゲーム装置ID74b、質問ID74c、回答内容データ74dおよび地域データ74eを含む。ゲーム装置ID74bは、ゲーム装置12固有の識別情報である。このゲーム装置ID74bを回答データ74に含めるのは、プレイヤオブジェクト(P1−P6)の数だけ、アンケートの回答を受け付けるためである。したがって、1のアンケートについて同一のゲーム装置IDが付された回答が、プレイヤオブジェクトの最大数(この実施例では、6)に達すると、配信サーバ104は、それ以降、当該ゲーム装置IDおよび質問IDを含む回答データ74を受け付けないようにしてある。
回答内容データ74dは、質問ID74cが示すアンケートに対する回答の詳細な内容を示すデータである。具体的には、回答内容データ74dは、第1回答の男性の数、第1回答の女性の数、第2回答の男性の数および第2回答の女性の数のそれぞれについての数値データである。ただし、これらの数値データは、回答画面300において、ボタン304がオンされたときに検出される。具体的には、第1回答の男性の数は、第1回答選択領域316bに存在する男性のプレイヤオブジェクトの数であり、第1回答の女性の数は、第1回答選択領域316bに存在する女性のプレイヤオブジェクトの数である。また、第2回答の男性の数は、第2回答選択領域316cに存在する男性のプレイヤオブジェクトの数であり、第2回答の女性の数は、第2回答選択領域316cに存在する女性のプレイヤオブジェクトの数である。ただし、一旦回答を投票してグレーアウトされたプレイヤオブジェクトの数は含まれない。地域データ74eは、プレイヤが初期画面100において設定したオプションに含まれる地域(この実施例では、都道府県)についてのデータである。
図24(A)は予想データ76を示す。予想データ76は、図16に示した予想画面500において、プレイヤがボタン504をオンしたときに、生成され、ゲーム装置12から配信サーバ104に送信される、アンケートに関する集計結果の予想のデータである。配信サーバ104は、ネットワーク106に接続される複数のゲーム装置12から送信される予想データ76を受信し(予想の収集)、受信した予想データ76に従ってアンケートについての予想の集計を行う。そして、集計結果(後述する結果データ78)をネットワーク106に接続されたすべてのゲーム装置12に配信する。
予想データ76は、アプリID76aをヘッダとして含み、さらに、ゲーム装置ID76b、質問ID76c、予想内容データ76dおよび地域データ76eを含む。予想内容データ76dの内容以外は、上述した回答データ74と同様であるため、重複した説明は省略する。
予想内容データ76dは、質問ID76cが示すアンケートについての予想内容についてのデータである。具体的には、予想内容データ76dは、第1回答を予想した男性の数、第1回答を予想した女性の数、第2回答を予想した男性の数および第2回答を予想した女性の数のそれぞれについての数値データである。
図24(B)は結果データ78を示す。結果データ78は、アンケートの集計結果についてのデータである。この結果データ78は、配信サーバ104から配信される。つまり、結果データ78は、入出力プロセッサ42aによって配信サーバ104からダウンロードされるのである。
結果データ78は、アプリID78aをヘッダ情報として含み、さらに、質問ID78b、全体の結果データ78c、予想の結果データ78d、地域毎の結果データ78eを含む。全体の結果データ78cは、質問ID78bが示すアンケートについての全投票数に対する、第1回答の数(第1回答の男性の数および女性の数)および第2回答の数(第2回答の男性の数および女性の数)の数値データである。ただし、第1回答および第2回答についての割合を計算した結果の数値データであってもよい。
予想の結果データ78dは、質問ID78bが示すアンケートについての全体の予想数に対する、第1回答の予想数(第1回答を予想した男性の数および女性の数)および第2回答の予想数(第2回答を予想した男性の数および女性の数)の数値データである。ただし、第1回答の予想および第2回答の予想についての割合を計算した結果の数値データであってもよい。
地域毎の結果データ78eは、白紙の地図データ(この実施例では、日本地図のデータ)および地域毎の回答内容(第1回答の男性の数、第1回答の女性の数、第2回答の男性の数、第2回答の女性の数)についてのデータである。
なお、地域毎の結果データ78eに地図データを含めるのは、地域の単位の変化や地域毎の結果の表示方法の変化に柔軟に対応するためである。
以下、具体的な処理についてフロー図を用いて説明することにする。図25は、図2に示した入出力プロセッサ42aのダウンロード処理を示すフロー図である。このダウンロード処理は、入出力プロセッサ42aがCPU40と独立に実行するものであって、上述のスタンバイモード時であっても実行される。また、CPU40がアプリケーション(アンケートアプリケーションに限らない)を実行している間であっても、独立に実行されている。ただし、このダウンロード処理は、タスクが登録されている状態で、上述のように、入出力プロセッサ42a内でトリガが発生するごとに実行され続ける。また、ダウンロード処理は、それぞれのタスクで実行される。
この図25に示すように、入出力プロセッサ42aはステップS1で、タスクを実行するためのトリガ(タスク実行トリガ)の発生を検出する。ステップS1で“NO”であれば、つまりタスク実行トリガが無ければ、そのままステップS1に戻る。一方、ステップS1で“YES”であれば、つまりタスク実行トリガが有れば、ステップS3で、当該タスクの実行予定時刻であるかどうかを判断する。厳密に言うと、ここでは、入出力プロセッサ42aは、現在時刻が実行予定時刻以降であるかどうかを判断する。
ステップS3で“NO”であれば、つまり当該タスクの実行予定時刻でなければ、そのままステップS1に戻る。一方、ステップS3で“YES”であれば、つまり当該タスクの実行予定時刻であれば、ステップS5で、リトライ許容時刻を経過しているかどうかを判断する。ステップS5で“YES”であれば、つまりリトライ許容時刻を経過していれば、ステップS7で、当該タスクをタスクリスト44eから消去して、ダウンロード処理を終了する。
ただし、ダウンロード処理はタスク毎に実行されるので、当該タスクに関するダウンロード処理が終了するという意味であって、他のタスクについてはそれ以降もトリガ発生とともにダウンロード処理が起動することになる。
一方、ステップS5で“NO”であれば、つまりリトライ許容時刻を経過していなければ、ステップS9で、配信サーバ104に接続要求を送信する。つまり、入出力プロセッサ42aは、当該タスクの属性が示すコンテンツすなわちダウンロードデータ(この実施例では、アンケートデータまたは結果データ)の取得元のURLにアクセス要求を送信するのである。続いて、ステップS11で、当該タスクの残りダウンロード回数を1減算する。ここで、図示は省略するが、入出力プロセッサ42aは、残りダウンロード回数が0になった時点で、当該タスクをタスクリスト44eから消去し、次回のダウンロードが行われないようにする。ステップS13では、次回のタスク実行予定時刻をスケジューリングする。
そして、ステップS15では、配信サーバ104との接続に成功したかどうかを判断する。ステップS15で“NO”であれば、つまり配信サーバ104との接続に失敗すれば、そのままステップS1に戻る。なお、この実施例では、入出力プロセッサ42aは、配信サーバ104との接続に失敗すると、直にステップS1に戻るようにしてあるが、所定回数(たとえば、3回のリトライ)接続要求を送信しても、接続に成功しない場合に、ステップS1に戻るようにしてもよい。また、ネットワーク106やサーバ(104)にエラーが発生している場合には、リトライを行わないようにしてもよい。また、そのようなエラーの場合には、上述の残りダウンロード回数の減算を行うとダウンロードが行われないまま終了してしまう可能性があるので、ステップS11をステップS15の後に実行するようにしてもよい。
ステップS15で“YES”であれば、つまり配信サーバ104との接続に成功すれば、ステップS17で、ダウンロードを実行する。つまり、入出力プロセッサ42aは、ダウンロードデータを取得する。そして、ステップS19で、ダウンロードデータがメッセージ配信用のデータであるかどうかを判断する。たとえば、メッセージ配信用のデータを電子メール形式のデータとし、入出力プロセッサ42aは、取得したダウンロードデータが電子メールの形式であるかどうかを判断する。または、メッセージ配信用のデータであることを示す情報をダウンロードデータに含め、ダウンロード実行後にゲーム装置12において電子メール形式のデータに変換するようにしてもよい。たとえば、この実施例では、メッセージ配信用のデータとして配信される内容としては、配信元(配信サーバ104)から、新しいアンケートを配信したことやアンケートの集計結果を配信したことのメッセージが考えられる。
ステップS19で“YES”であれば、つまりダウンロードデータがメッセージ配信用のデータである場合には、ステップS21で、当該ダウンロードデータを受信データとして受信メッセージボックス44bに格納して、ステップS1に戻る。一方、ステップS19で“NO”であれば、つまりダウンロードデータがメッセージ配信用のデータでない場合には、ステップS23で、当該ダウンロードデータをダウンロードボックス440に格納して、ステップS151に戻る。
上述したようなダウンロード処理は、基本的には、CPU40がこの実施例のアンケートアプリケーションやゲームアプリーションのようなアプリケーションを実行している場合やスタインバイモードが設定されている場合であっても、入出力プロセッサ42aによって独立に実行される。
なお、受信メッセージボックス44bに格納されたメッセージ配信用のデータは、その後、伝言板機能によってモニタ34に出力され、配信元からのメッセージがプレイヤに通知される。
図26および図27はアンケートアプリケーションの全体処理を示すフロー図である。ただし、オプションの設定など、本願発明の本質的な内容でない一部の機能についての処理は、説明の簡略化のために、図示を省略してある。
図26に示すように、アンケートアプリケーションの全体処理を開始すると、ステップS31では、後述するダウンロードデータ取得処理(図28参照)を実行する。続く、ステップS33では、図12に示した初期画面100をモニタ34に表示する。詳細な説明は省略するが、このとき、セーブデータを参照して、初期画面100の表示領域152,154,156にアンケートの内容および回答期限が表示される。
次のステップS35では、プレイヤオブジェクトを追加するかどうかを判断する。具体的には、初期画面100において、ボタン102がオン(プレイヤオブジェクトの追加(登録)が指示)されたかどうかを判断する。
ステップS35で“NO”であれば、つまりプレイヤオブジェクトの追加でなければ、そのままステップS39に進む。一方、ステップS35で“YES”であれば、つまりプレイヤオブジェクトの追加であれば、ステップS37で、後述するプレイヤオブジェクト追加処理(図29参照)を実行して、ステップS39に進む。
なお、アンケートアプリケーションを最初に起動した場合には、必ずプレイヤオブジェクトを登録する必要があるため、ステップS33による初期画面100の表示、およびステップS35でのプレイヤオブジェクトを追加するかどうかの判断を行うことなく、ステップS37で、後述するプレイヤオブジェクト追加処理(図29参照)を実行して、ステップS39に進む。
ステップS39では、データの全消去であるかどうかを判断する。ここでは、初期画面100のオプションの設定で全消去の指示が入力されたかどうかを判断する。ステップS39で“YES”であれば、つまりデータの全消去であれば、ステップS41で、アンケートに関する全データを消去する。具体的には、メインメモリ(42e,46)のデータ記憶領域からデータ(セーブデータ)をすべて消去して、図27に示すステップS69に進む。一方、ステップS39で“NO”であれば、つまりデータの全消去でなければ、そのままステップS43に進む。
ステップS43では、プレイヤデータの表示かどうかを判断する。ここでは、初期画面100においてボタン104がオンされた(プレイヤデータの表示が指示された)かどうかを判断する。ステップS43で“NO”であれば、プレイヤデータの表示でなければ、そのまま図27に示すステップS57に進む。一方、ステップS43で“YES”であれば、つまりプレイヤデータの表示であれば、ステップS45で、プレイヤデータの初期画面(図示せず)をモニタ34に表示する。
続くステップS47では、プレイヤオブジェクトが選択されたかどうかを判断する。ステップS47で“NO”であれば、つまりプレイヤオブジェクトが選択されていなければ、ステップS49で、キャンセルかどうかを判断する。具体的には、初期画面100に戻る指示が入力されたかどうかを判断する。ステップS49で“YES”であれば、つまりキャンセルであれば、ステップS33に戻る。一方、ステップS49で“NO”であれば、つまりキャンセルでなければ、そのままステップS47に戻って、プレイヤオブジェクトの選択を待機する。
しかし、ステップS47で“YES”であれば、つまりプレイヤオブジェクトの選択があれば、図27に示すステップS51で、図19に示したような個別プレイヤ画面800をモニタ34に表示して、ステップS53で、削除指示があるかどうかを判断する。つまり、個別プレイヤ画面800においてボタン802がオンされた(削除指示が入力された)かどうかを判断する。
ステップS53で“NO”であれば、つまり削除指示がなければ、そのままステップS57に進む。一方、ステップS53で“YES”であれば、つまり削除指示があれば、ステップS55で、後述するプレイヤオブジェクト削除処理(図30参照)を実行して、ステップS57に進む。
なお、図27では、簡単のため、ステップS53で“NO”であれば、そのままステップS57に進むようにしてあるが、上述したように、個別プレイヤ画面800においては、各種情報(情報情報画面810,830,850)を表示することもできる。
ステップS57では、アンケートの選択があるかどうかを判断する。つまり、初期画面100において、表示領域152,154,156のいずれかが選択(指示)されたかどうかを判断する。ステップS57で“NO”であれば、つまりアンケートの選択がなければ、そのままステップS61に進む。一方、ステップS57で“YES”であれば、つまりアンケートの選択があれば、ステップS59で、後述するアンケート回答処理(図33参照)を実行して、ステップS61に進む。
ステップS61では、結果表示かどうかを判断する。つまり、初期画面100において、ボタン114がオン(結果表示が指示)されたかどうかを判断する。ステップS61で“NO”であれば、つまり結果表示でなければ、そのままステップS65に進む。一方、ステップS61で“YES”であれば、つまり結果表示であれば、ステップS63で、後述する結果表示処理(図36参照)を実行して、ステップS65に進む。
ステップS65では、所定時間が経過したかどうかを判断する。詳細な説明は省略するが、ゲーム装置12には、タイマ(図示せず)が内蔵されており、ゲーム装置12の電源がオンされている状態(スタンバイ状態も含む。)において、時間をカウントしている。このタイマが所定時間(たとえば、4時間)をカウントしたかどうかを判断しているのである。
なお、タイマが所定時間をカウントすると、そのことを示すフラグがオンされ、後述するように、アンケート更新処理(S67)が実行されるときに、当該フラグがオフされる。また、タイマは、アンケート更新処理が実行された後、リセットおよびスタートされる。
ステップS65で“NO”であれば、つまり所定時間が経過していなければ、そのままステップS69に進む。一方、ステップS65で“YES”であれば、つまり所定時間が経過していれば、ステップS67で、後述するアンケート更新処理(図37参照)を実行して、ステップS69に進む。
ステップS69では、アンケートアプリケーションの全体処理を終了するかどうかを判断する。たとえば、初期画面100においてボタン110がオンされたかどうか、すなわちゲーム装置12を起動した際のメニュープログラムの画面に戻る指示が入力されたかどうかを判断する。ステップS69で“NO”であれば、つまりアンケートアプリケーションの全体処理を終了しない場合には、図26に示したステップS33に戻る。一方、ステップS69で“YES”であれば、つまりアンケートアプリケーションの全体処理を終了する場合には、そのまま全体処理を終了する。
図28は図26に示すステップS31のダウンロードデータ取得処理のフロー図である。図28に示すように、CPU40は処理を開始すると、まず、ステップS81で、ダウンロードボックス440を確認する。そして、ステップS83で、当該アプリケーションのダウンロードデータがあるかどうかを判断する。つまり、CPU40は、アンケートアプリケーションのアプリIDが付されたダウンロードデータがダウンロードボックス440に記憶されているかどうかを判断する。
ステップS83で“NO”であれば、つまり当該アプリケーションのダウンロードデータがなければ、そのままリターンする。一方、ステップS83で“YES”であれば、つまり当該アプリケーションのダウンロードデータがあれば、ステップS85で、当該ダウンロードデータをダウンロードボックス440から読み出し、ステップS87で、取得したダウンロードデータから必要なデータ(質問データ72,結果データ78)のみを取得してメインメモリ(42e,46)に記憶して、全体処理にリターンする。したがって、ダウンロードデータが、その後のアンケートアプリケーションの全体処理に利用される。
なお、CPU40は、内部メインメモリ42eおよび外部メインメモリ46のいずれにも高速にアクセス可能であるため、受信データやダウンロードデータはいずれのメモリに記憶するようにしてもよい。たとえば、アンケートアプリケーション(プログラム)やそのセーブデータによって利用されているメモリと同じ方のメモリに、受信データやダウンロードデータを記憶してもよい。
図29は、図26に示したステップS37のプレイヤオブジェクト追加処理のフロー図である。図29に示すように、CPU40は、プレイヤオブジェクト追加処理を開始すると、ステップS101で、現在の登録数が最大(たとえば、6)であるかどうかを判断する。つまり、セーブデータに、6個のプレイヤデータ72が含まれているかどうかを判断する。ステップS101で“YES”であれば、つまり現在の登録数が最大であれば、ステップS103で、これ以上登録できない旨のメッセージをモニタ34に表示して、全体処理にリターンする。
しかし、ステップS101で“NO”であれば、つまり現在の登録数が最大でなければ、ステップS105で、プレイヤデータの未登録のオブジェクトを表示する。具体的には、CPU40は、図13に示したようなオブジェクト選択画面200をモニタ34に表示する。続くステップS107では、キャンセルかどうかを判断する。つまり、オブジェクト選択画面200で、ボタン202がオン(初期画面100に戻ることが指示)されたかどうかを判断する。
ステップS107で“YES”であれば、つまりキャンセルであれば、全体処理にリターンする。なお、図示は省略するが、このとき初期画面100がモニタ34に表示される。以下、この実施例において、処理がキャンセルされる場合は同様に初期画面100がモニタ34に表示されるため、重複した説明は省略することにする。
一方、ステップS107で“NO”であれば、つまりキャンセルでなければ、ステップS109でオブジェクトの選択があるかどうかを判断する。つまり、プレイヤが所望のプレイヤオブジェクトを選択したかどうかを判断する。ステップS109で“NO”であれば、つまりオブジェクトの選択がなければ、そのままステップS107に戻る。一方、ステップS109で“YES”であれば、つまりオブジェクトの選択があれば、ステップS111で、新規プレイヤデータを生成して、全体処理にリターンする。具体的には、ステップS111では、CPU40は、選択されたプレイヤオブジェクトについてのプレイヤデータ70を生成して、メインメモリ(42e,46)に記憶する。
なお、簡単のため、図29では省略するが、図13に示したオブジェクト選択画面200を用いて説明したように、オブジェクト選択画面200では、ボタン204またはボタン206をオンすることにより、ページを戻したり、ページを送ったりして、その表示を更新することができる。
図30は、図27に示したステップS55のプレイヤオブジェクト削除処理のフロー図である。図30に示すように、CPU40は、プレイヤオブジェクトの削除処理を開始すると、ステップS121で、メインメモリ(42e,46)に記憶される、選択中のプレイヤオブジェクトについてのプレイヤデータ70を参照する。続くステップS123では質問カウンタのカウント値を1に設定するとともに、削除フラグをオンにリセットする。
ここで、図示は省略するが、質問カウンタおよび削除フラグは、メインメモリ(42e,46)に設けられる。質問カウンタは、プレイヤデータ70に含まれる記憶領域70b1−70b4を順番に検索するためのカウンタであり、削除フラグは削除対象のプレイヤデータ(プレイヤオブジェクト)を削除可能か否かを識別するためのフラグである。
続いて、ステップS125では、削除対象のプレイヤデータ70から質問カウンタのカウント値が示す記憶領域(70b1,70b2,70b3,70b4)を読み込む。そして、ステップS127で、当該記憶領域(70b1,70b2,70b3,70b4)に質問IDが記憶されているかどうかを判断する。ステップS127で“NO”であれば、つまり当該記憶領域(70b1,70b2,70b3,70b4)に質問IDが記憶されていなければ、そのままステップS137に進む。一方、ステップS127で“YES”であれば、つまり当該記憶領域(70b1,70b2,70b3,70b4)に質問IDが記憶されていれば、ステップS129で、後述する質問データ検索処理(図31参照)を実行して、ステップS131に進む。
ステップS131では、削除フラグがオンかどうかを判断する。つまり、当該プレイヤデータ70を削除可能かどうかを判断する。ステップS131で“NO”であれば、つまり削除フラグオフであれば、そのままステップS137に進む。一方、ステップS131で“YES”であれば、つまり削除フラグがオンであれば、ステップS133で、質問カウンタに1加算する。そして、ステップS135で、質問カウンタのカウント値が4以下かどうかを判断する。
ステップS135で“YES”であれば、つまり質問カウンタのカウント値が4以下であれば、当該プレイヤデータ70のすべての記憶領域(70b1,70b2,70b3,70b4)について調べていないと判断して、ステップS125に戻る。一方、ステップS135で“NO”であれば、つまり質問カウンタのカウント値が5以上であれば、当該プレイヤデータ70のすべての記憶領域(70b1,70b2,70b3,70b4)について調べたと判断して、ステップS137に進む。ステップS137では、後述する削除実行処理(図32)を実行して、全体処理にリターンする。
図31は、図30に示したステップS129の質問データ検索処理のフロー図である。図31に示すように、CPU40は質問データ検索処理を開始すると、ステップS151で、当該記憶領域(70b1,70b2,70b3,70b4)に記憶されている質問IDをキーにして、質問データ72を検索する。続くステップS153では、当該質問IDを有する質問データ72がメインメモリ(42e,46)に存在するかどうかを判断する。ステップS153で“NO”であれば、つまり当該質問データ72が存在しなければ、そのままプレイヤオブジェクト削除処理にリターンする。
しかし、ステップS153で“YES”であれば、つまり当該質問データ72が存在すれば、ステップS155で、現在の日時が当該質問データ72の回答期限内であるかどうかを判断する。ただし、回答期限データ72dとして、回答期間が記述(指定)されている場合には、その期間内であるかどうかを判断する。
ステップS155で“NO”であれば、つまり現在の日時が当該質問データ72の回答期限を過ぎていれば、そのままプレイヤオブジェクト削除処理にリターンする。一方、ステップS155で“YES”であれば、つまり現在の日時が当該質問データ72の回答期限内であれば、ステップS157で、削除フラグをオフして、プレイヤオブジェクト削除処理にリターンする。
また、図32は、図30に示したステップS137の削除実行処理のフロー図である。図32を参照して、CPU40は削除実行処理を開始すると、ステップS171で、削除フラグがオンであるかどうかを判断する。ステップS171で“NO”であれば、つまり削除フラグがオフであれば、当該プレイヤデータ70の削除を禁止すべく、ステップS173で、回答中のアンケートがある為に削除できない旨の画面表示を実行して、プレイヤオブジェクト削除処理にリターンする。
しかし、ステップS171で“YES”であれば、つまり削除フラグがオンであれば、ステップS175で、削除確認の画面表示を実行する。つまり、図20に示したような消去確認画面900を表示する。そして、ステップS177で、削除しても良いかどうかを判断する。つまり、消去確認画面900で、消去することの同意が得られたかどうかを判断する。具体的には、ボタン902がオンされたかどうかを判断するのである。
ステップS177で“NO”であれば、つまり消去確認画面900でボタン904がオンされれば、削除してはならないと判断して、そのままプレイヤオブジェクト削除処理にリターンする。一方、ステップS177で“YES”であれば、つまり消去確認画面900でボタン902がオンされれば、削除しても良いと判断して、削除対象のプレイヤデータ70をメインメモリ(42e,46)から削除して、プレイヤオブジェクト削除処理にリターンする。
図33−図35は、図27に示したステップS59のアンケート回答処理のフロー図である。図33を参照して、CPU40はアンケート回答処理を開始すると、ステップS191で、セーブデータを読み出す。したがって、各プレイヤオブジェクトが当該アンケートに回答済みであるか否かをプレイヤデータ70を参照することにより知ることができる。
続くステップS193では、セーブデータから当該アンケートについての質問データ72を読み込んで、図14に示したような回答画面300をモニタ34に表示する。このとき、当該アンケートに回答済みのプレイヤオブジェクトが存在する場合には、上述したように、当該プレイヤオブジェクトは、その回答に従って第1回答選択領域316bまたは第2回答選択領域316cにグレーアウトで表示される。
次のステップS195では、キャンセルかどうかを判断する。つまり、回答画面300でボタン302がオンされたかどうかを判断する。ステップS195で“YES”であれば、つまりキャンセルであれば、図35に示すように、全体処理にリターンする。一方、ステップS195で“NO”であれば、つまりキャンセルでなければ、ステップS197で、プレイヤの操作に従ってプレイヤオブジェクトを移動させる。ただし、プレイヤが何ら操作しない場合には、ステップS197の処理は実行されずに、そのままステップS199に進む。
ステップS199では、回答指示があるかどうかを判断する。具体的には、回答画面300でボタン304がオンされた(回答指示が入力された)かどうかを判断する。ステップS199で“NO”であれば、つまり回答指示がなければ、そのままステップS195に戻る。一方、ステップS199で“YES”であれば、つまり回答指示があれば、ステップS201で、回答データ74を生成し、ステップS203で、回答データ74をサーバ(配信サーバ104)に送信する。ただし、回答データ74は、今回アンケート(質問)に対して回答したプレイヤオブジェクトについての回答内容のみが含まれる。
続いて、ステップS205では、1番目のプレイヤオブジェクトのプレイヤデータ70を読み出す。ただし、ステップS205以降の処理は、今回アンケートに回答したプレイヤオブジェクトについてのみ実行される。また、説明の都合上、1番目のプレイヤオブジェクトや次のプレイヤオブジェクトというが、回答したプレイヤオブジェクトの各々について、ステップS205以降の処理を実行するという意味である。
次に、図34に示すステップS207では、当該プレイヤデータ70の記憶領域(70b1−70b4)に空きがあるかどうかを判断する。ステップS207で“NO”であれば、つまり記憶領域(70b1−70b4)に空きがなければ、ステップS209で、第2記憶領域70b2の質問IDを第1記憶領域70b1に上書きし、第3記憶領域70b3の質問IDを第2記憶領域70b2に上書きし、第4記憶領域70b4の質問IDを第3記憶領域70b3に上書きし、そして、ステップS211で、第4記憶領域70b4に、今回の質問データ72の質問IDを書き込んで(上書きして)、ステップS215に進む。
しかし、ステップS207で“YES”であれば、つまり記憶領域(70b1−70b4)に空きがあれば、ステップS213で、今回の質問データ72の質問IDを空きの記憶領域(70b1−70b4)に書き込んで、ステップS215に進む。
なお、上述したように、記憶領域(70b1−70b4)では、第1記憶領域70b1から順に質問IDを記憶するため、ステップS213では、2つ以上記憶領域(70b1−70b4)が空いている場合には、順番が先の記憶領域(70b1−70b4)に質問IDが記憶される。
ステップS215では、今回回答したすべてのプレイヤオブジェクトのプレイヤデータ70を更新したかどうかを判断する。ステップS215で“NO”であれば、つまり未だ更新していないプレイヤデータ70があれば、ステップS217で、次のプレイヤオブジェクトのプレイヤデータ70を読み出して、ステップS207に戻る。一方、ステップS215で“YES”であれば、つまり今回回答したすべてのプレイヤオブジェクトのプレイヤデータ70を更新すれば、ステップS219で、図15に示したような予想選択画面400をモニタ34に表示する。
続いて、図35に示すように、ステップS221で、予想しないかどうかを判断する。具体的には、予想選択画面400において、ボタン404がオンされた(予想しないことが選択された)かどうかを判断する。ステップS221で“YES”であれば、つまりボタン404がオンされた場合には、予想しないことが選択されたと判断して、そのまま全体処理にリターンする。一方、ステップS221で“NO”であれば、つまりボタン404がオンされていない場合には、予想しないことが選択されていないと判断して、ステップS223で、予想するかどうかを判断する。具体的には、予想選択画面400において、ボタン402がオンされた(予想することが選択された)かどうかを判断する。
ステップS223で“NO”であれば、つまりボタン402がオンされていなければ、予想することが選択されていないと判断して、そのままステップS221に戻る。一方、ステップS223で“YES”であれば、つまりボタン402がオンされれば、予想することが選択されたと判断して、ステップS225で、図16に示したような予想画面500をモニタに表示する。
続いて、ステップS227では、キャンセルかどうかを判断する。具体的には、予想画面500において、ボタン502がオンされた(初期画面100に戻ることが指示された)かどうかを判断する。ステップS227で“YES”であれば、つまりキャンセルであれば、そのまま全体処理にリターンする。一方、ステップS227で“NO”であれば、つまりキャンセルでなければ、ステップS229で、プレイヤの操作に従ってプレイヤオブジェクトを移動させる。ただし、プレイヤが何ら操作しない場合には、ステップS229の処理を実行せずに、そのままステップS231に進む。
ステップS231では、予想送信指示があるかどうかを判断する。具体的には、予想画面500において、ボタン504がオンされた(予想送信が指示された)かどうかを判断する。ステップS231で“NO”であれば、つまり予想送信指示がなければ、そのままステップS227に戻る。一方、ステップS231で“YES”であれば、つまり予想送信指示があれば、ステップS233で、予想データ76を生成し、ステップS235で、予想データ76を配信サーバ104に送信する。そして、ステップS237で、予想したプレイヤオブジェクトのプレイヤデータ70を更新して、全体処理にリターンする。ただし、厳密には、ステップS237では、プレイヤデータ70のうちの予想データ70dが更新される。
図36は、図27に示したステップS63の結果表示処理のフロー図である。図36を参照して、CPU40は結果表示処理を開始すると、ステップS251で、図17に示したような全体の結果画面600をモニタ34に表示する。続くステップS253では、キャンセルかどうかを判断する。具体的には、全体の結果画面600において、ボタン602がオンされた(初期画面100に戻ることが指示された)かどうかを判断する。
ステップS253で“YES”であれば、つまりキャンセルであれば、そのまま全体処理にリターンする。一方、ステップS253で“NO”であれば、つまりキャンセルでなければ、ステップS255で、詳細結果の表示が指示されたかどうかを判断する。具体的には、全体の結果画面600において、ボタン604がオンされた(詳細結果の表示が指示された)かどうかを判断する。
ステップS255で“YES”であれば、つまり詳細結果の表示が指示された場合には、ステップS257で、詳細結果の画面(図示せず)を表示する。なお、上述したように、詳細結果の画面では、男女別の集計結果や予想的中率などが表示される。続くステップS259では、キャンセルかどうかを判断する。ここで、キャンセルであれば、“YES”となり、ステップS253に戻るが、キャンセルでなければ、“NO”となり、そのままステップS259に戻る。
一方、ステップS255で“NO”であれば、つまり詳細結果の表示が指示されていなければ、ステップS261で、地域毎の結果の表示が指示されたかどうかを判断する。具体的には、全体の結果画面600において、ボタン606がオンされた(地域毎の結果の表示が指示された)かどうかを判断する。ステップS261で“NO”であれば、つまり地域毎の結果の表示が指示されていなければ、そのままステップS253に戻る。一方、ステップS261で“YES”であれば、つまり地域毎の結果の表示が指示されれば、ステップS263で、図18に示したような地域毎の結果画面700を表示する。
続くステップS265では、キャンセルかどうかを判断する。具体的には、地域毎の結果画面700において、ボタン702がオンされた(初期画面100に戻ることが指示された)かどうかを判断する。ここで、キャンセルでなければ、“NO”となり、そのまま同じステップS265に戻るが、キャンセルであれば、“YES”となり、ステップS253に戻る。
図37は、図27に示したステップS67のアンケート更新処理のフロー図である。図37に示すように、CPU40はアンケート更新処理を開始すると、ステップS281で、1つ目の質問データ72を読み込む。ここでは、表示用領域に記憶される質問IDがヘッダ情報として付されている質問データ72がメインメモリ(42e,46)から読み込まれる。ただし、このアンケート更新処理においては、1つ目の質問データ72や次の質問データ72と言うが、これはすべての質問データ72の各々について確認するためであり、たとえば、表示用領域に記憶されている順番に従って、質問データ72はメインメモリ(42e,46)から読み込まれる。
次のステップS283では、当該質問データ72が示す質問(アンケート)の回答期限が過ぎているかどうかを判断する。具体的には、質問データ72に含まれる回答期限データ72dを参照して、現在の日時が回答期限を経過しているかどうかを判断する。
ステップS283で“NO”であれば、つまり当該質問データ72が示す質問の回答期限が過ぎていない場合には、そのままステップS289に進む。一方、ステップS283で“YES”であれば、つまり当該質問データ72が示す質問の回答期限が過ぎている場合には、ステップS285で、該当する質問データ72(厳密には、対応する質問ID)を表用領域から結果配信待ち領域に移動する。続くステップS287では、予備用の質問データ72を読み込む。このとき、表示用領域に予備用の質問データ72の質問IDが記憶される。なお、上述したように、予備用の質問データ72が複数ある場合には、各質問データ72の回答期限データ72dを参照して、最も古いデータ(最も回答期限が迫っているデータ)が読み込まれる。
そして、ステップS289で、すべての質問データ72を確認したかどうかを判断する。ステップS289で“NO”であれば、つまりすべての質問データ72を確認していなければ、ステップS289で、次の質問データ72を読み込んで、ステップS283に戻る。一方、ステップS289で“YES”であれば、つまりすべての質問データ72を確認すれば、全体処理にリターンする。
この実施例によれば、プレイヤオブジェクト毎にアンケートに回答したかどうかを管理するので、1のプレイヤオブジェクトが同一のアンケートに回答するような不正行為を効果的に防止することができる。
また、この実施例では、アンケートに回答中のプレイヤデータを削除できないようにしたので、プレイヤデータの作成および削除を繰り返して、同一のアンケートに何度も回答するような不正行為を防止することができる。
さらに、この実施例では、配信サーバは、1台のゲーム装置から同一のアンケートへの回答の数を管理し、使用するプレイヤオブジェクトの最大数になると、それ以降の回答は受け付けないので、プレイヤオブジェクトを削除できたとしても不正行為を防止することができる。
さらにまた、以上のような不正行為を防止することができるので、アンケートの集計結果の信頼度が向上させることができる。
また、この実施例では、して、各プレイヤオブジェクトがアンケートに回答できるので、サーバでユーザデータを管理する必要がなく、その負担を軽減することができる。
さらには、1台のゲーム装置で複数のプレイヤオブジェクトについてのユーザデータを管理するので、上述の実施例で示したように、1の画面(回答画面)で複数のプレイヤオブジェクト(プレイヤないしユーザ)が1のアンケートに回答することができる。
なお、この実施例では、配信サーバが、アンケートデータを配信し、回答データを受け付け(受信し)、収集結果を配信するようにしたが、各々の機能を実行するためのサーバないしコンピュータを別個独立に設けてもよい。この場合、アンケートの収集処理を、回答データを受け付けるサーバや収集結果を配信するサーバが実行したり、他のサーバないしコンピュータが実行したりできる。
また、この実施例では、アンケートデータおよび結果データをダウンロードデータに含み、ゲーム装置はダウンロード処理を実行することにより、それらのデータを受信(取得)するようにした。しかし、これに限定される必要はなく、配信サーバが、アンケートデータや結果データをゲーム装置宛に送信するようにしてもよい。
なお、この実施例では、ゲーム装置とモニタとが個別に設けられたゲームシステムについてのみ説明したが、インターネットのようなネットワークに接続可能なゲーム装置であれば、モニタが一体的に設けられていてもよい。また、このようなゲーム装置には、ゲーム機能を備えるコンピュータや携帯電話機も含まれる。
また、ゲーム装置に限定される必要はなく、上述したようなプレイヤデータを管理することができれば、汎用のコンピュータであっても実現可能である。かかる場合には、コンピュータ固有の識別情報は、コンピュータの通信手段のMACアドレスを用いることができる。