図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置(以下、単に「ゲーム装置」という。)12およびコントローラ22を含む。なお、図示は省略するが、この実施例のゲーム装置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(マーカ)340m,340nを備えるマーカ部34bが設けられる。このマーカ部34bは、電源ケーブル32bを通してゲーム装置12に接続される。したがって、マーカ部34bには、ゲーム装置12から電源が供給される。これによって、マーカ340m,340nは発光し、それぞれモニタ34の前方に向けて赤外光を出力する。
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるためにコントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、コントローラ22自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
なお、ゲームまたは他のアプリケーションのプログラムおよびデータは、予めゲーム装置12のフラッシュメモリ44(図2)のような内部メモリに記憶されていてもよいし、ネットワーク上のダウンロードサーバからダウンロードして内部メモリに追加的に記憶されてもよい。
図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がオンされると、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、システムLSI42は、通常の通電状態となるモード(通常モードと呼ぶこととする)を設定する。一方、電源ボタン20aがオフされると、ゲーム装置12の一部のコンポーネントのみに電源が供給され、システムLSI42は、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という。)を設定する。この実施例では、スタンバイモードが設定された場合には、システム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(ゲームシステム10)を用いて実現されるこの発明の一実施例の電子番組表表示システム100を示す図解図である。図8に示すように、電子番組表表示システム100は、複数のゲーム装置12および配信サーバ102を含む。各ゲーム装置12および配信サーバ102は、インターネットやLANのようなネットワーク104を介して接続され、相互にデータを送受信することができる。
この電子番組表表示システム100では、配信サーバ102がユーザ端末またはクライアントであるゲーム装置12に番組表データを提供し、ゲーム装置12がモニタ34に電子番組表を表示する。ユーザは、コントローラ22を用いた入力によって、電子番組表から見たい番組を選択することができる。ユーザによる選択の結果は、ゲーム装置12から配信サーバ102に送信される。配信サーバ102は、各ゲーム装置12から受信した結果を集計し、各番組の人気度を算出する。この人気度データは、たとえば電子番組表データを配信する際に、配信サーバ102から各ゲーム装置12に送信される。各ゲーム装置12では、人気度データに基づいて電子番組表上で各番組の人気度を表示することができる。このとき、番組表において各番組情報の表示態様を人気度に応じて変化させることによって、各番組の人気度が示される。
なお、この実施例では、図1に示したように家庭で使用される据え置き型のゲーム装置12を用いて電子番組表表示システム100を構成した場合を説明するが、他の実施例では、ゲーム装置12としてパーソナルコンピュータ、携帯電話機、携帯情報端末など他のコンピュータが用いられてもよい。
図9はゲーム装置12のメモリマップの一例を示す。メモリマップはプログラム記憶領域400およびデータ記憶領域500を含む。プログラムとデータは、光ディスク18から一度に全部または必要に応じて部分的に、かつ順次的に読み出され、外部メインメモリ46または内部メインメモリ42eに記憶される。また、データ記憶領域500には、処理によって生成または取得されたデータも記憶される。
なお、図9にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶される。たとえば、音声、効果音、音楽などの音を出力するためのサウンドデータ、画面を生成するための画像データ、音出力プログラム、画像生成表示プログラムなどが、光ディスク18から読み出されてデータ記憶領域500またはプログラム記憶領域400に記憶される。なお、本実施例においては、プログラムとデータは光ディスク18から読み出されるが、別の実施例においては、たとえばゲーム装置12に内蔵されるフラッシュメモリ44等の不揮発的な記憶媒体に予め記憶したまたはネットワーク104経由でダウンロードしたプログラムおよびデータを読み出して、外部メインメモリ46または内部メインメモリ42eに記憶するようにしてもよい。
プログラム記憶領域400の記憶領域402には、番組表取得プログラムが記憶されている。このプログラムは配信サーバ102から番組表データおよび人気度データを取得するためのものである。番組表データおよび人気度データを取得するための配信サーバ102への要求の送信は、所定のタイミングで行われる。たとえば、この番組表表示アプリケーションが起動されるたびに取得されてよいし、あるいは、24時間ごとなど定期的に取得されるようにしてもよい。この要求に応じて配信サーバ102は番組表データおよび人気度データをこのゲーム装置12に送信する。受信した番組表データは記憶領域508に記憶され、人気度データは記憶領域510に記憶される。なお、番組表データおよび人気度データは、配信サーバ102から受信したときにフラッシュメモリ44にも記憶されてよく、起動ごとに取得を行わない場合や所定のタイミングで取得できなかった場合等には、フラッシュメモリ44から番組表データおよび人気度データが読み出されるようにしてよい。
基本的には地域ごとに受信可能な放送局およびチャンネルが異なるので、番組表は地域ごとに異なるものとなる。したがって、ユーザによってゲーム装置12に設定された地域(地域ID)に対応する番組表データおよび人気度データの配信が要求される。ただし、他の実施例では、他の地域を含むまたは全地域を網羅する番組表データおよび人気度データが取得されてもよい。なお、配信サーバ102のアドレス情報は、たとえばこのプログラムに予め記述されている。
記憶領域404には番組表表示プログラムが記憶される。このプログラムは番組表データに基づいて電子番組表を表示するためのものである。電子番組表では、複数の番組情報が一方の軸を時間軸とし他方の軸を放送局軸としたマトリックス状に表示される(図13参照)。なお、後述されるように、この実施例では、図13に示すような2次元(2D)の電子番組表のほか、図14に示すような3次元(3D)の電子番組表も表示することができる。
記憶領域406には選択操作受付プログラムが記憶される。このプログラムは、ユーザによる所望の番組を選択する操作を受け付けるためのものである。ユーザはコントローラ22を操作して電子番組表から所望の番組を選択することが可能である。この実施例では、番組に対するユーザの関心の度合いを的確に把握して人気度を算出することができるように、2種類の選択操作を定義している。後述されるように、第1の選択操作は、番組の詳細情報を表示させるための操作であり、第2の選択操作は、番組に印を付ける操作である。詳細情報は当該番組の詳細な内容を確認するためのものであり、詳細情報を表示させた場合、ユーザが当該番組に少なくとも関心を持っていることがわかる。一方、番組に印を付けるという操作は、当該番組を見るつもりであることをユーザがゲーム装置12に登録するために必須の行為として定義されており、番組に印を付けた場合、ユーザの当該番組に対する関心がより高いことがわかる。このようなユーザの関心の度合いに応じて異なる2種類の選択操作を受け付けるようにしている。2種類のうちの少なくとも1つの選択操作が受け付けられると、選択操作の種類に応じた番組の選択結果を示す番組選択データが生成されて記憶領域512に記憶される。
記憶領域408には結果送信プログラムが記憶される。このプログラムは、当該ゲーム装置12における番組の選択の結果を示す結果情報を生成して配信サーバ102に送信するためのものである。結果情報は、記憶領域502の地域IDおよび記憶領域512の番組選択データ等に基づいて生成されて記憶領域514に記憶される。そして、結果情報は、所定の送信タイミングで配信サーバ102に送信される。たとえば、定期的に、または、初めて番組の選択が行われて番組選択データが生成されたとき、あるいは、番組の選択が変更されたり新たに行われたりして番組選択データが更新されたときなどに、結果情報が生成されて配信サーバ102に送信される。
記憶領域410には人気度表示プログラムが記憶される。このプログラムは、各番組の人気度を表示するためのものであり、このプログラムによって、番組表における各番組情報の表示態様が人気度データに基づいて変化される。なお、この実施例では、記憶領域506に記憶された対象範囲(性別、年代)に対応する人気度データが用いられる。また、この実施例では、人気度の段階またはレベルに応じた表示態様が予め定められている。具体的には、後述されるように、人気度に応じて、番組表における各番組情報の色の濃度が変化される。また、番組表が3D画像で表示される場合、各番組情報の欄の高さが人気度に応じて変化される。
なお、各番組情報の表示態様は、この実施例のように予め記憶された表示態様データに基づいて変化されてよいし、他の実施例では、表示態様データを予め準備せずに、色の濃度や高さなどの値が所定の関係式から人気度に基づいて算出されてもよい。
データ記憶領域500の記憶領域502には地域IDが記憶される。上述のように番組表は基本的に地域ごとに異なるので、初期設定等でユーザに住んでいる地域(都道府県など)を入力してもらって、この入力された地域に対応する地域IDを記憶する。
記憶領域504にはユーザ情報が記憶される。ユーザ情報は、ユーザIDに対応付けられた各ユーザの個人情報を含む。ユーザに入力してもらう個人情報の種別は適宜に設定され得るが、この実施例では、ユーザの生年および性別を含む。配信サーバ102では、この個人情報の種別ごとの人気度が算出される。ユーザ情報は、さらに、各ユーザが選択操作の際使用する印(印アイコン712)のデータも含む。ユーザの生年、性別および印は初期設定等でユーザに入力してもらい、当該入力された生年、性別および印をユーザIDに対応付けて記憶する。ゲーム装置12では、複数のユーザのユーザ情報を登録することが可能であり、登録した各ユーザが見たい番組を選択することが可能である。たとえば家族のそれぞれのユーザ情報を登録すれば、1台のゲーム装置12で家族のそれぞれが見たい番組を選択することができる。
記憶領域506には、人気度を表示する際の対象範囲が記憶される。この実施例では、性別および年代を設定することができ、つまり、設定した性別および年代を集計の対象とした場合の各番組の人気度を表示することができる。対象範囲は初期設定等でユーザによって入力されてよい。たとえば全性別および全年代がデフォルトの対象範囲として設定されていて、初期設定等におけるユーザ入力によって所望の性別および年代に変更されるようにしてもよい。
なお、地域ID、ユーザ情報および対象範囲など初期設定等で設定される情報は、最初に設定されまたは変更されたときにフラッシュメモリ44に記憶され、次の起動時には当該フラッシュメモリ44から読み出される。
記憶領域508には、番組表取得プログラムによって受信した番組表データが記憶される。この実施例のように、配信サーバ102が地域ごとの番組表を配信する場合、受信した番組表データは、ゲーム装置12に登録された地域IDに対応するデータである。番組表データでは、たとえば、番組IDに対応付けて各番組の情報が記憶されている。番組の情報は、放送局、チャンネル、日付、開始時刻、終了時刻、放送時間、番組名、ジャンル、詳細情報などを含む。なお、番組表データの構成は適宜変更可能であり、たとえば放送局ごとに各番組の情報が記憶されていてもよい。
記憶領域510には番組表取得プログラムによって受信した人気度データが記憶される。人気度は、後述されるようにこの実施例では配信サーバ102において多数のゲーム装置12の選択の結果を集計して算出されている。人気度データでは、各番組の人気度が番組IDに対応付けて記憶されている(図19参照)。また、人気度は、集計結果を複数の段階(この実施例では5段階)に分類することによって、複数の段階またはレベルで表現される。したがって、各番組の人気度を複数の段階またはレベルで表示することができる。さらに、この実施例では設定された対象範囲の人気度を表示するので、人気度データでは、年代および性別ごとの人気度が記憶されている。
なお、この実施例では、地域ごとに番組表が異なることを考慮して、配信サーバ102では地域ごとに人気度が算出されているので、ゲーム装置12には地域IDに対応する人気度データが取得されて記憶される。ただし、他の実施例では、配信サーバ102で全地域を対象として人気度データを算出し、当該人気度データがゲーム装置12に配信されるようにしてもよい。
また、この実施例では、時間帯によって視聴可能なユーザの数が大きく異なることを考慮して、配信サーバ102では各番組の人気度は時間帯別に算出されている。ただし、他の実施例では、配信サーバ102で全時間帯を対象として人気度データを算出し、当該人気度データがゲーム装置12に配信されるようにしてもよい。
記憶領域512には選択操作受付プログラムによって生成された番組選択データが記憶される。上述のように、この実施例では、ユーザは、2種類の選択操作によって番組を選択することができる。第1の選択操作で選択された場合、当該番組は第1の状態に設定され、第2の選択操作で選択された場合、当該番組は第2の状態に設定される。具体的には、番組選択データでは、番組IDに対応付けて各番組の選択情報が記憶されている。選択情報は、詳細フラグ、印合計値、および印を付けたユーザIDなどを含む。詳細フラグは、このゲーム装置12において当該番組の詳細情報がユーザによって見られたか否かを示すものであり、この詳細フラグは、当該番組に対して詳細情報を表示する操作(第1の選択操作)が行われたときにオンにされる。また、印合計値は、このゲーム装置12において当該番組に印を付けたユーザの総数を示すものであり、この印合計値は、当該番組に対して印を付ける操作(第2の選択操作)が行われたときに1だけ加算されることによって算出される。さらに、印を付けたユーザIDは、このゲーム装置12において当該番組に印を付けたユーザの識別番号を示す情報であり、この情報としては、当該番組に対して第2の選択操作が行われたときに使用された印アイコン712(図13参照)に対応するユーザIDが特定されて記憶される。
なお、番組選択データには、どのユーザがどの番組を選択したかが記録されているので、この番組選択データを参照することによって、たとえば番組表において各番組情報をユーザごとに異なる色で表示することによって、各番組情報がどのユーザによって選択されたかを示すことができる。また、この番組選択データをフラッシュメモリ44に記憶しておいて、番組表表示アプリケーションが次に起動されたときにフラッシュメモリ44の番組選択データを参照することによって、ユーザの過去の選択結果を番組表で表示することができる。
また、この実施例では、ゲーム装置12のユーザによって1度でも番組に対して第1の選択操作が行われて詳細情報が表示されたら、当該番組の詳細フラグをオンにするようにしているが、他の実施例では、第2の選択操作の場合と同様に、番組に対して第1の選択操作を行ったユーザのIDを記憶するとともに、当該ユーザの総数を示す値を詳細フラグとして記憶するようにしてもよい。
記憶領域514には結果送信プログラムによって生成されて配信サーバ102に送信される結果情報が記憶される。結果情報は、このゲーム装置12における番組の選択の結果を示すデータであり、配信サーバ102ではこの結果情報から人気度データが算出される。
結果情報は、図10に示すように、送信元IDおよび地域IDを含む。送信元IDは、ゲーム装置12の識別情報であり、たとえばROM/RTC48に予め記憶された識別番号であってもよいし、当該識別番号から生成されてよいし、あるいは無線通信モジュール50のMACアドレスから生成されてもよい。地域IDは記憶領域502から取得される。さらに、結果情報には、番組選択の詳細を示す情報として、選択された番組の番組IDに対応付けられて、印の合計値、印を付けたユーザの生年、印を付けたユーザの性別、および詳細フラグなどが記憶される。各番組の印の合計値と詳細フラグは、番組選択データ記憶領域512から取得される。また、各番組の印を付けたユーザの生年および性別は、番組選択データ記憶領域512の印を付けたユーザIDに対応する生年および性別をユーザ情報記憶領域504から読み出すことによって取得される。印を付けたユーザIDとして複数のユーザIDが記憶されている場合、複数のユーザのそれぞれの生年および性別が記憶される。
記憶領域516には、番組表における各番組情報を人気度に応じた表示態様に変化させるための表示態様データが記憶される。表示態様データでは、図11に示すように、人気度レベルに対応付けて、色の濃度および高さが記憶されている。具体的には、この実施例では、番組表における各番組情報の欄の背景の色の濃度を人気度に応じて変化させるので、たとえば、各レベルの濃度に予め設定された画像を指定するデータが色濃度データとして記憶される。あるいは、各レベルの濃度の色を指定するデータが記憶されてもよい。たとえば、人気度レベルが最低の1の場合の背景の色に通常状態の背景と同じ色(たとえば白色)を採用し、人気度レベルが2−5の場合、背景の色に別の色(たとえば赤色)を採用し、かつ、人気度レベルが上がるほどその色を濃くするようにしてよい。なお、単に背景色として1種類の色を採用して人気度レベルに応じて濃度を段階的に濃く(または薄く)変化させるようにしてもよい。
また、番組表が3D画像で表示される場合には、画面上で番組情報の欄の高さを表現することができるので、この実施例では、当該高さを人気度レベルに応じて変化させるようにしている。具体的には、マトリックス状の番組表の放送局軸および時間軸と直交する方向でかつ画面の手前側になる方向が高さ方向として設定され、当該方向の高さ(突出度)を示す数値が人気度レベルに応じて大きくなるように予め設定されている。図11の例では、人気度レベル1のときの高さを0とし、人気度レベルが2−5のとき、人気度レベルに応じて段階的に高くなるような高さが設定されている。
なお、図11の例では、人気度レベルが大きくなるに従って、高さが指数関数的に大きくなるように設定されているが、これに限らなくてもよい。例えば、人気度レベルの増加に従って、高さの値が0,1,2,3,4というように一定量ずつ増加するようにしても良い。
なお、この実施例では、3D番組表においては、人気度レベルに応じて色の濃度と高さの両方を変化させるようにしているが、他の実施例では、3D番組表においては、高さのみを変化させるようにしてもよいし、あるいは、2D番組表と同様に色の濃度のみを変化させてもよい。
また、各番組の人気度レベルを番組表において分り易く表現することができれば、ユーザに人気度を直感的に把握させることができるので、番組表における各番組情報の表示態様の変化は、番組情報の欄の色の濃度や高さの変化に限定されるものではなく適宜変更可能である。たとえば、各番組情報の欄の背景の色または階調を人気度レベルごとに変化させることが考えられる。または、各番組情報の欄の枠形状を人気度レベルごとに異なる形状に変化させてもよい。あるいは、番組情報の文字の色、色濃度、フォントまたはサイズ等を人気度レベルごとに変化させてもよい。
図12は配信サーバ102のメモリマップの一例を示す。このメモリマップはプログラム記憶領域600およびデータ記憶領域650を含む。配信サーバ102のコンピュータ(CPU)の動作を制御するためのプログラムおよび処理に必要なデータは、たとえば情報記憶媒体からHDDに記憶されまたはROMに予め記憶されており、必要に応じてRAMに読み出される。また、データ記憶領域650には、処理によって生成または取得されたデータも記憶される。なお、図12にはメモリマップの一部のみが示されており、処理に必要な他のプログラムおよびデータも記憶される。たとえば、配信事業者のサーバ等から配信されるEPG(Electronic Program Guide)データを取得するためのプログラムが記憶されている。
プログラム記憶領域600の記憶領域602には番組表配信プログラムが記憶される。このプログラムは、番組表データおよび人気度データを各ゲーム装置12に配信するためのものである。番組表データおよび人気度データは、各ゲーム装置12からの要求に応じて送信される。
番組表データは、配信事業者のサーバ等から取得したEPGデータに基づいて生成されて記憶領域652に記憶されている。番組表は地域ごとに異なるので、地域IDに対応付けて地域ごとの番組表データが生成される。具体的には、各番組には識別情報(番組ID)が割り当てられる。そして、たとえば番組IDに対応付けて各番組の情報を登録することによって、番組表データを生成する。各番組の情報としては、放送局、チャンネル、日付、開始時刻、終了時刻、放送時間、番組名、ジャンル、詳細情報などが含まれており、これらはEPGデータから取得される。また、番組表データには、たとえば現在の日付から所定期間分(1週間など)の番組の情報が記憶される。したがって、番組表データは、適宜なタイミングで次の日付からのデータに更新され、日付が変わると、当該更新された番組表データが送信される。
また、人気度データは、後述する人気度算出プログラムによって算出されて記憶領域656に記憶されている。人気度は地域ごとに算出されており、地域IDに対応付けた地域ごとの人気度データが記憶されている。
ゲーム装置12からの要求データを受信すると、当該要求データに含まれる地域IDに対応する番組表データおよび人気度データが読み出されて、当該ゲーム装置12に送信される。
記憶領域604には結果受信プログラムが記憶される。このプログラムは、各ゲーム装置12から送信される結果情報(図10)を受信するためのものである。受信した結果情報は記憶領域654に記憶され、さらにHDDに格納される。図10に示すように、結果情報には、送信元IDが含まれているので、既に同一の送信元IDの結果情報が記憶されている場合には、当該結果情報が更新される。
記憶領域606には人気度算出プログラムが記憶される。このプログラムは、各ゲーム装置12からの結果情報を集計して、各番組の人気度データを算出するためのものである。算出された人気度データは記憶領域656に記憶される。結果集計および人気度算出は、所定のタイミングで実行される。たとえば、12時間または24時間ごとなど定期的に算出が行われてよい。また、各番組の放送日までの残存期間によって集計タイミングを異ならせてもよく、たとえば、放送日まで3日以内の番組は12時間ごとに算出を行い、放送日まで3日を超える番組は24時間ごとに算出を行うようにしてもよい。
また、この実施例では、地域ごとの番組表データを配信するようにしているので、地域ごとに各ゲーム装置12の結果情報が集計され、地域ごとの人気度データが算出される。さらに、第1の選択操作と第2の選択操作を受け付けるようにしているので、集計の際には、第1の選択操作と第2の選択操作とで異なる重み付けが行われる。これによって、算出される人気度に、関心の度合いの違いを的確に反映させることができる。また、性別および年代別の対象範囲で人気度を表示可能にするので、性別および年代別の人気度が算出される。さらに、時間帯によって視聴可能なユーザ数が大きく異なるので、時間帯別の人気度が算出される。また、各番組の人気度の違いを分り易く示すために、複数の段階に分類した人気度が算出される。具体的な集計および人気度算出の方法は後述される。
データ記憶領域650の記憶領域652には番組表データが記憶される。番組表データは上述の番組表配信プログラムによって生成される。また、地域ごとの番組表が生成されるので、地域IDに対応付けた番組表データが記憶されている。番組表データでは、たとえば番組IDに対応付けて各番組の情報(放送局、チャンネル、日付、開始時刻、終了時刻、放送時間、番組名、詳細情報など)が記憶されている。
記憶領域654には上述の結果受信プログラムによって受信された各ゲーム装置12の結果情報が記憶される。この結果情報から人気度の集計および算出が行われる。
記憶領域656には上述の人気度算出プログラムによって算出された人気度データが記憶される。この実施例では、地域IDに対応付けられた地域ごとの人気度データ(図19参照)が記憶されている。人気度データでは、番組IDに対応付けて各番組の人気度レベルが記憶されている。
この番組表表示アプリケーションは、たとえばゲーム装置12のメニュー画面から当該アプリケーションを指示するボタンないしアイコンを選択することによって起動される。起動されると、現在の日時に対応する日付および時間帯の番組表が表示される。ただし、最初の起動時には、番組表表示より前に初期設定が行われる。番組表画面では、ユーザは、コントローラ22を操作して、表示される日付や時間帯を変更することができ、さらに、番組表から所望の番組情報を選択し、詳細情報を見たり印を付けたりすることができる。
図13は番組表が表示された画面の一例を示す。画面中央に番組表が表示されている。この番組表は、縦軸を放送局軸とし、かつ、横軸を時間軸としたマトリックス状に形成されている。具体的には、番組表の上端に放送の時刻を示す時間軸が表示される。時間の表示欄の背景色は、見易くするために時間帯ごとに色分けされている。なお、この実施例では、1日24時間をいわゆるゴールデンタイムの4時間と4つの5時間の5つの期間に分けることによって、時間帯が定義されており、すなわち、1日の各時間帯は、4時−8時、9時−13時、14時―18時、19時−22時(ゴールデンタイム)、23時−3時である。なお、時間帯の範囲の分け方は適宜変更されてよい。
番組表においては、時間軸の下側に各放送局の行ないし帯が配列され、放送予定の番組情報が掲載される。各行の左端には、放送局名とチャンネル番号が表示され、その右側に当該放送局およびチャンネルの各番組情報が時系列で配置されている。各番組情報の欄は、放送時間に応じた幅を有する枠で囲まれており、当該枠内の欄に当該番組情報の番組名が表示されている。なお、番組名の文字は枠の大きさによって必要に応じて省略される。
なお、図13から分かるように、番組表では、一部の放送局および時間帯の番組情報しか表示できないが、コントローラ22を用いて所定の操作を行うことによって、番組表を上下方向または左右方向にスクロールして、別の放送局または時間帯の番組情報を表示することが可能になっている。
また、画面上には、コントローラ22の指示位置を示すポインタ700が表示される。このポインタ700の表示位置は、コントローラ22の指示位置に応じて移動される。
画面上端部には、表示されている番組表の日付に関する情報が表示されるとともに、各種のボタン702、704、706、708および710が設けられている。左端の日付に関する情報は、表示されている番組表の日付を現在の日付を基準として表したものである。図13では「4日後」と示されており、したがって、表示されている番組表が4日後のものであることが分かる。
ボタン702は、表示する番組表の日付を指定するためのボタンであり、ボタン702上には、番組表の日付と曜日が記載される。たとえば、ポインタ700がこのボタン702上に置かれた状態で、Aボタン26dが押されると日付が1日進められ、Bトリガースイッチ26iが押されると日付が1日戻される。
ボタン704は、番組表の表示状態を指定するためのボタンである。通常の番組表を表示する通常状態、番組表上にユーザの選択番組を表示する状態、および番組表上に人気度を表示する状態などを指定することができる。図13では、ボタン704上に「なし」と記載されており、これは通常状態を示す。たとえば、ポインタ700がこのボタン704上に置かれた状態でAボタン26dが押されるたびに、表示状態が順に切替えられる。
ボタン706は番組検索のためのボタンである。たとえば、ポインタ700がこのボタン706上に置かれた状態で、Aボタン26dが押されると検索画面が表示され、キーワード検索やジャンル検索などを行うことができる。
ボタン708は、各種の設定を行うためのボタンである。たとえば、初期設定で設定される地域、ユーザ情報、対象範囲などの項目を変更できる。たとえば、ポインタ700がこのボタン708上に置かれた状態でAボタン26dが押されると、設定画面が表示されて各種の設定を行うことができる。
ボタン710は、ゲーム装置12のメニュー画面に戻るためのボタンである。このボタン710が選択されると、つまり、ポインタ700をこのボタン710上に置いた状態でAボタン26dが押されると、この番組表表示アプリケーションが終了されて、メニュー画面が表示される。
画面下端部には、印アイコン(参照符号「712」で包括的に示す。)および時計714が表示されている。印アイコン712は、ユーザが印付け(すなわち、第2の選択操作による見たい番組の選択。)に使用するアイコンであり、このゲーム装置12に登録された各ユーザの印アイコン712が表示される。なお、印アイコン712には、ユーザを区別可能なようにたとえば似顔絵が表示されており、このような各ユーザの印アイコン712の選択は初期設定で行うことができる。時計714は現在時刻を表示している。現在時刻の情報はROM/RTC48から取得される。
また、この実施例では、図14に示すように、番組表を3D画像で表示することができる。この3D表示では、1日分の番組表が1枚の板または直方体で形成されており、たとえば7枚の板が重ねられて表示されることで、1週間分の番組表が表現されている。なお、各板が重ねられているので、最前の板にのみ番組情報が表示されるが、図14では各番組情報の欄の枠のみが表示されている。また、各板の左端には、タブ(参照符号「716」で包括的に示す。)が設けられており、タブ716をポインタ700で選択することによって、当該タブ716に対応する日付の番組表を最前に表示することができる。なお、ボタン702の操作によっても最前に表示する番組表を切替えることができる。
なお、たとえば所定領域でAボタン26を押したり、1ボタン26bを押したりすることによって、図13のような2D表示と図14のような3D表示を切替えることができる。あるいは、ボタン708による設定で、切替を指示できるようにしてもよい。
ユーザは、2D番組表において、たとえば所望の番組情報の欄をポインタ700で指示しAボタン26dを押すことによって、当該番組情報の詳細を表示することができる。この第1の選択操作が行われると、たとえば、図15に示すように、詳細画面が番組表上に表示される。詳細画面では、番組名、放送日時、放送時間、放送局名、および詳細情報などが表示される。
この詳細画面を表示する操作は、上述のように第1の選択操作である。たとえば、ポインタ700の表示位置が番組表の表示領域に含まれる状態でAボタン26dが押された場合、第1の選択操作が行われたと判断され、ポインタ700の表示位置と各番組情報の表示位置とに基づいて、選択された番組情報の番組IDが特定される。そして、当該番組IDに対応する番組選択データが記憶領域512に生成されて、その詳細フラグがオンにされる。
詳細画面の下端部には、当該番組情報に各ユーザが印を付けるための領域を示す複数の枠(参照符号「718」で包括的に示す。)が設けられている。各ユーザは、自分の印アイコン712を枠718の表示位置に移動させることによって、当該番組情報に印を付けることができ、すなわち、当該番組情報を見たい番組として選択することができる。
たとえばドラッグアンドドロップ操作で、印アイコン712を枠718に置くことができる。具体的には、ポインタ700を印アイコン712上に移動させた状態でAボタン26dとBトリガースイッチ26iを同時に押すことによって、当該印アイコン712を指示位置に応じて移動可能な状態にすることができる。さらに、Aボタン26dとBトリガースイッチ26iを押したままでコントローラ22の指示位置を枠718へ移動させることによって、当該印アイコン712を当該枠718に移動させることができる。そして、Aボタン26dとBトリガースイッチ26iを放すことによって、印アイコン712を枠718に配置することができる。
この印を付ける操作は、上述のように第2の選択操作である。印アイコン712が詳細画面の枠718に置かれた場合には、第2の選択操作が行われたと判断される。印アイコン712から印を付けたユーザのユーザIDが特定され、番組IDに対応する番組選択データに記憶される。
なお、3D番組表においても、2D番組表における選択操作と同様の選択操作を可能にしてもよい。
印がつけられた番組情報の詳細画面が後に開かれた場合、印を付けたユーザの印アイコン712が枠718に配置された状態の詳細画面が表示される。したがって、詳細画面の印アイコン712によって、登録されたユーザ(家族)のいずれが当該番組情報を見たい番組として選択し登録したのかを知ることができる。
なお、この詳細画面には、ゲーム装置12にユーザ登録された家族が印を付けるための枠718とは別の枠720が設けられている。この枠720は、予め登録した他のゲーム装置12のユーザの印付けに関する情報を表示するためのものであり、つまり、この枠720によって、当該番組情報に対する友達の印付けの状況を知ることができる。枠720には、登録しておいた他のゲーム装置12のユーザのうち当該番組情報に印を付けたユーザの数が表示される。さらに、番組表の画面の下端部にはボタン722が表示される。このボタン722が選択されると、たとえば、登録されている他のゲーム装置12のユーザのリスト(友達リスト)を示す画面が表示される。当該画面では各ユーザを示すアイコンが表示されるが、印を付けたユーザの場合、その印アイコンが表示される。したがって、どの友達が印を付けたのかを知ることができる。
なお、ゲーム装置12は、後述の別の実施例で示すように、予め登録しておいた他のゲーム装置12との間でデータを送受信することができる。したがって、印を付ける第2の選択操作が行われた場合、番組選択データのような番組IDに対応付けたユーザIDを含むデータを、登録しておいた他のゲーム装置12に送信することによって、当該他のゲーム装置12では、上述のような枠720内の表示およびボタン722によって開く画面の表示を行うことができる。
また、印を付ける第2の選択操作を、詳細画面だけでなく番組表の画面でも行うことができるようにしてもよい。具体的には、上述の詳細画面の場合と同様にして、たとえば印アイコン712をドラッグアンドドロップ操作で番組表の所望の番組情報の欄に移動させることによって、当該番組情報を見たい番組として選択することができる。
このようにして印付けが行われると、その結果を番組表の画面で表示することが可能になる。具体的には、ボタン704を押して、番組表の状態をユーザの選択番組を表示する状態に切替える。図16は、ユーザの選択番組を表示する状態にされた番組表の画面の一例を示す。ボタン704には、「家族と友達の見るつもり」と記載され、ユーザの選択番組を表示する状態であることが示される。この状態の番組表では、たとえば、印を付けられた番組情報の欄の背景色が、当該ユーザの印アイコン712と同じ色に変化される。したがって、番組情報にどのユーザが印をつけたのかを容易に知ることができる。
また、図16では示されていないが、この状態の番組表では、友達の選択番組も表示され得る。他のゲーム装置12からの選択結果に関するデータを取得済みの場合、たとえば、図15に示したようなボタン722が時計714の左側にさらに表示され、他のゲーム装置12のユーザに選択された番組情報の欄の背景色が、ボタン722と同じ色に変化される。
なお、複数のユーザによって同一の番組情報が選択された場合、たとえば、当該番組情報の欄の背景色が特定の色に変化されるようにしてよい。詳細画面を開くことで、印を付けたユーザを知ることができる。あるいは、欄を複数の領域に分けて、当該複数の領域を複数のユーザのそれぞれに対応する色に変化させてもよい。
各ゲーム装置12における選択の結果を示す結果情報は配信サーバ102に送信される。配信サーバ102は、受信した結果情報の集計処理を行って人気度データを算出する。
この実施例では、集計は地域ごとに行われる。地域ごとでなく全体の集計を行って人気度を算出するようにしてもよいが、たとえば、地域毎でなく全体の人気度を算出すると、全ての地域で放送されるメジャーな番組の人気度が総じて高くなる傾向があり、特定の限られた地域でしか放送されていないがその地域では人気度が高いといった番組の人気度が相対的に低く表示されてしまうという問題が生じる恐れがある。しかし、地域毎に人気度を算出すればそのような問題がなくなり、各地域での番組の人気度をより的確に表示することができる。
具体的には、まず、図17に示すような集計表が地域ごとに作成される。すなわち、図17の上段の表のように、各番組情報について、印付き結果を送信したクライアントの数、印を付けたユーザの数、詳細フラグの数が集計される。印付き結果を送信したクライアントの数は、印合計値が0ではない結果情報を送信してきたゲーム装置12の数である。また、印を付けたユーザの数は、性別かつ生年別に集計される。また、詳細フラグの数は、受信した結果情報において詳細フラグがオンにされている場合にカウントされる。
次に、図17の下段の表のように、各番組情報について、印を付けたユーザ数を性別かつ年代別に再集計するとともに、総合得点を算出する。年代は、たとえば12歳以下、13−18歳、19−24歳、24−34歳、35−44歳、45−54歳、55歳以上のように分けられる。性別および年代別の印を付けたユーザ数は、各番組情報の性別および年代別の人気の度合いを示すものである。このような集計により、男女間での番組の人気度の差や年代ないし年齢毎の人気度の差等を容易に知ることができる。
総合得点は、各番組情報の総合的な評価を示し、つまり、全年代および全性別を対象とした全体的な人気の度合いを示すものである。この実施例では、総合得点は、印を付けるという第2の選択操作と詳細情報を表示するという第1の選択操作とを組み合わせた総合的な関心の度合いを示す。
具体的には、総合得点は、第1の選択操作のみが行われたゲーム装置12の数と第2の選択操作を行ったユーザの数とに異なる重み付けをして加算することによって算出される。なお、第1の選択操作のみが行われたゲーム装置12の数は、詳細フラグの数と印付き結果を送信したクライアントの数との差から得られる。また、第2の選択操作を行ったユーザの数は、印を付けた男性ユーザの小計と女性ユーザの小計との和から得られる。第2の選択操作を行ったユーザの数には、第1の選択操作のみが行われたゲーム装置12の数に付与される重みよりも大きい重みが付与され、たとえば、第1の選択操作の場合の重み係数は1に、第2の選択操作の場合の重み係数は10に設定される。
このようにして、ユーザの選択操作の種類に応じて重み付けを変えて人気度を算出することができる。詳細情報を見る第1の選択操作と印を付ける第2の選択操作では、ユーザの番組への関心の度合いに明確な差が存在する。したがって、ユーザの関心の度合いを的確に反映した人気度を算出することができる。
そして、この実施例では、集計結果から各番組を5つの段階に分類し、つまり、各番組の人気度を1−5で段階的に表現する。これにより、各番組の人気度を分かり易く示すことができる。
さらに、人気度の段階的な振り分けの際には、この実施例では、時間帯ごとに集計結果を比較して、時間帯ごとの人気度を算出する。時間帯ごとに分けずに全体の人気度を算出するようにしてもよいが、たとえば、時間帯毎でなく全体の人気度を算出すると、比較的多くのユーザが視聴するゴールデンタイムの時間帯の番組の人気度が総じて高くなる傾向があり、他の時間帯の番組はその時間帯での人気度が高い番組であってもゴールデンタイムの番組に比べると人気度が低い(ユーザ数が少ない)ために相対的に低く表示されてしまうという問題が生じる恐れがある。しかし、時間帯毎に人気度を算出すればそのような問題がなくなり、各時間帯での番組の人気度をより的確に表示することができる。
図18に時間帯ごとの比較による人気度の分類方法の概要が示される。なお、図18では、図17の下段に示した性別および年代別の集計結果と総合得点から、性別および年代別ならびに全体的な人気度のそれぞれの分類を行う場合を示すが、男女の値を合計した結果を用いて、性別を分けない年代別の人気度の分類を行うこともできる。また、年代別ではなく、図17の上段に示した性別および年齢別の集計結果から性別および年齢別の人気度の分類を行うことも可能である。
具体的には、まず、時間帯ごとに各番組の集計結果を比較して、最大値および最小値を検出する。なお、各番組の所属する時間帯は、たとえば開始時刻が含まれている時間帯に決められる。ただし、時間帯の分け方は適宜変更されてよく、たとえば番組の放送時間が複数の時間帯にまたがる場合、含まれる時間が長い方の時間帯が選ばれるようにしてよい。
次に、最大値と最小値の間を5段階に分けるために、最大値と最小値の差を5で割ることによって、基準範囲を算出する。そして、この基準範囲から、各人気度レベルの範囲を算出する。この実施例では、高いレベルほど範囲が狭くなるように各範囲が設定される。たとえば、5段階の範囲は基準範囲の2割減、4段階の範囲は基準範囲の1割減、3段階の範囲は基準範囲と同一、2段階の範囲は基準範囲の1割増、1段階の範囲は基準範囲の2割増に設定される。
たとえば、性別が男かつ年代が12歳以下を対象としたとき、図18では、最大値が4248、最小値が2であり、したがって、基準範囲は、4248と2との差を5で割って、849になる。なお、小数点以下の端数は省かれ、余りとして1段階の範囲に入れる。5段階の範囲は基準範囲に0.8を掛けて679となり、4段階の範囲は基準範囲に0.9を掛けて764となり、3段階の範囲は基準範囲に1.0を掛けて849となり、2段階の範囲は基準範囲に1.1を掛けて933となり、そして、1段階の範囲は、849に1.2を掛けてさらに余りを加算して、1022となる。つまり、男の12歳以下を対象としたとき、番組情報の集計結果が3570−4248の範囲内にあれば、当該番組情報の人気度レベルは5に設定され、集計結果が2806−3569の範囲内であれば人気度レベルは4に設定され、集計結果が1957−2805の範囲内であれば人気度レベルは3に設定され、集計結果が1024−1956の範囲内であれば人気度レベルは2に設定され、集計結果が2−1023の範囲内であれば人気度レベルは1に設定される。
このように、高い人気度レベルほどその範囲を狭くすることによって、多くのユーザから選択された真に人気のある番組のみ、高評価を与えて、高い人気を有する番組として表示することができる。
なお、上述の実施例では、最大値と最小値の差を取って各人気度レベルの範囲を算出するようにしたが、最小値は用いないようにしてもよい。つまり、最小値は0とし、最大値を5で割ることによって基準範囲を算出し、各人気度レベルの範囲を算出するようにしても良い。
なお、レベル分けの方法は適宜変更され得る。一例として、5段階分けの方法としては番組の総数を単純に5等分するようにしてもよい。たとえば番組の総数が100の場合、集計値が高い順に1位〜20位までを5段階とし、以下21位〜40位を4段階、41位〜60位を3段階、61位〜80位を2段階、81位〜100位を1段階としてもよい。なお、余りが出る場合は、1段階目に加えるものとする。たとえば番組の総数が103の場合、81位〜103位を1段階とする。
上述のようなレベル分類を、すべての性別および年代別の集計結果と総合得点にそれぞれ行い、各番組情報の人気度レベルを算出して、図19に示すような人気度データを生成する。この実施例では、地域ごとの集計を行ったので、地域ごとの人気度データが生成される。各ゲーム装置12から要求があったとき、配信サーバ102は、各ゲーム装置12の地域IDに対応する人気度データを配信する。
人気度データを受信したゲーム装置12では、人気度を表示する状態の番組表を表示することができる。図20は、人気度を表示する状態の番組表の一例を示す。ボタン704を押すことによって、番組表の表示状態を、人気度を表示する状態に切替えることができる。図20では、ボタン704には「みんなの見るつもり」と記載され、人気度を表示する状態の番組表であることが示される。
この人気度表示状態の番組表では、各番組情報の表示態様が人気度レベルに応じて変化される。マトリックス状に表示されている各番組情報の表示態様をその人気度に応じて変化させるので、ユーザは各番組の人気度を番組表上で直感的に把握することができる。特に、人気の高い番組がどの時間帯またはどの放送局に多いかといった傾向等を容易に把握することができる。
さらに、この実施例では、各番組情報の欄の背景色の濃度が人気度レベルに応じて濃くされるようにしたので、各番組情報の人気度を視覚的に把握し易くすることができる。
また、人気度は、図20に示すような2D番組表だけでなく、3D番組表でも表示することができる。図21に、人気度を表示する状態の3D番組表の一例が示される。この番組表の3D表示でも、2D表示の場合と同様に、各番組情報の欄の色が人気度レベルに応じて濃くなるように変化されている。
さらに、3D番組表の場合、番組表の放送局軸と時間軸の両方に直交する方向を表現することができるので、当該方向に各番組情報の欄の高さ方向を設定することができる。そこで、この実施例では、各番組情報の欄の高さが人気度に応じて高く変化されるようにしている。人気度に応じて各番組情報の欄が突出して表示されるので、このような高さ表現によっても、各番組情報の人気度を視覚的に容易に把握することができる。
なお、上述のように、この実施例では性別および年代別の人気度が算出されており、番組表では、所望の性別および年代を対象として人気度を表示することができる。人気度を表示する場合の対象範囲の設定は、初期設定やボタン708による設定等で行える。図22には、対象範囲の設定画面の一例が示される。性別は、すべて、男および女から選択できる。年代は、すべて、12歳以下、13−18歳、19−24歳、25−34歳、35−44歳、45−54歳および55歳以上から選択できる。各項目はボタンになっており、ポインタ700で所望の性別および年代を選択してから決定を選択することで、対象範囲を設定できる。なお、性別の「すべて」と年代の「すべて」が選択された場合、この実施例では総合得点の人気度レベルに基づいた表示が行われる。
図23から図25にはゲーム装置12の人気度表示のための処理の動作の一例が示される。番組表表示アプリケーションを開始すると、CPU40は、ステップS1で初期設定を実行する。最初の起動時には、ユーザ入力によって、地域ID(住んでいる地域)、ユーザ情報(各ユーザの生年、性別、使用する印アイコン712)、人気度表示の対象範囲(年代、性別)等が設定されて、それぞれ外部メインメモリ46の記憶領域502、504、506等に記憶される。これら設定情報はフラッシュメモリ44にも記憶され、2度目以降の起動時には、各設定情報がフラッシュメモリ44から外部メインメモリ46に読み出される。
次に、ステップS3で、CPU40は、入出力プロセッサ42aおよび無線通信モジュール50等を介してネットワーク104上の配信サーバ102に要求データを送信する。この要求データは、番組表データおよび人気度データの送信を要求するコマンドであり、地域IDを含む。この要求に応じて、配信サーバ102から地域IDに対応する番組表データおよび人気度データがこのゲーム装置12に送信される。
したがって、ステップS5で、CPU40は、入出力プロセッサ42aおよび無線通信モジュール50等を介して配信サーバ102から番組表データおよび人気度データを取得してRAM(外部メインメモリ46)の記憶領域508および510に記憶する。
続いて、ステップS7で、CPU40は番組表をモニタ34に表示する。具体的には、CPU40は、GPU42bを用いて番組表の画面を表示するためのデータをVRAM42dに生成し、AV IC56およびAVコネクタ58等を介してモニタ34に当該番組表の画面を表示する。なお、番組表の画面は、番組表データ、ユーザ情報および画像データ等に基づいて生成される。たとえば番組表の2D表示がデフォルトに設定されるので、図13に示したような2D番組表が表示される。2D番組表では、ROM/RTC48から取得される現在日時に対応する日付および時間帯の番組情報が表示範囲に選択されて表示される。各番組情報の欄の枠の幅は、各番組の放送時間に基づいて設定され、放送時間が一定以上の場合、欄内には番組名が枠の幅に応じた文字数で表示される。また、各ユーザの印アイコン712は記憶領域504のユーザ情報に基づいて表示される。
ステップS9では、CPU40は、コントローラ22の入力データに基づいて、GPU42bを用いて表示画像を更新する処理を行う。なお、入力データは、入出力プロセッサ42aおよび無線コントローラモジュール52等によって、一定時間ごとに受信されて内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶されており、CPU40はバッファ領域から入力データを読み出して処理を行う。たとえば、指示位置が検出されている場合、ポインタ700の表示位置が当該指示位置に基づいて更新される。また、番組表の表示範囲(日付、時間帯など)が入力手段26によるスクロール操作や画面上のボタン702等の選択に応じて変更される。さらに、所定の入力に応じて番組表の2Dと3Dの切替えが行われる。たとえば図14に示すように、3D番組表の場合、仮想3D空間において7枚の板が重ねられ、最前の板上に現在の日付に対応する日付の1日分の番組表が表示される。ただし、この実施例の3D番組表では、各番組の開始時刻から終了時刻までの枠のみを表示し、番組名は表示されない。
さらに、ユーザは、上述のように、番組表に対して所定の操作を行うことによって番組の詳細情報を見たり、印を付けたりすることができる。この番組選択の結果は配信サーバ102に送信される。また、所定の操作を行うことによって、配信サーバ102で集計されて配信された人気度データに基づいて、番組表において各番組の人気度を表示させることができる。
具体的には、ステップS11で、CPU40は、入力データおよび番組表の表示位置データ等に基づいていずれかの番組が選択されたか否かを判断する。たとえば、Aボタン26dが押されたときのポインタ700の表示位置の座標が番組表の表示領域内であるか否かが判断される。
ステップS11で“YES”の場合、CPU40は、ステップS13で、ポインタ700の表示位置と各番組の表示位置に基づいて、選択された番組を特定する。具体的には、ポインタ700の表示位置の座標と番組表の各番組の表示位置の座標を比較して、ポインタ700の表示位置の座標を含む番組の番組IDを特定する。
続くステップS15で、CPU40は特定された番組の詳細情報を表示する。具体的には、CPU40は、GPU42bを用いて、特定された番組の詳細画面(図15参照)を表示するためのデータをVRAM42dに生成する。特定された番組IDに対応する詳細情報は、記憶領域508の番組表データから読み出される。なお、記憶領域512の番組選択データを参照して当該番組IDの印を付けたユーザIDが既に記憶されている場合、当該ユーザIDに対応する印アイコン712は、詳細画面の枠718に配置される。
そして、ステップS17で、CPU40は、当該特定された番組の詳細フラグをオンにする。具体的には、記憶領域512に当該番組IDの番組選択データが生成されていない場合、当該番組IDの番組選択データを生成して、その詳細フラグをオンにする。ステップS17を終了すると、処理は図24のステップS25に進む。
一方、ステップS11で“NO”の場合、CPU40は、ステップS19で印が付けられたか否かを判断する。たとえば、詳細画面の枠718の表示領域内に対する印アイコン712のドラッグアンドドロップ操作が行われたか否かを、入力データならびに印アイコン712および枠718の表示位置データ等に基づいて判断する。
ステップS19で“YES”の場合、CPU40は、ステップS21で印に対応するユーザIDを当該番組IDに関連付けて登録する。具体的には、記憶領域504のユーザ情報に基づいて、操作された印アイコン712に対応するユーザIDを特定し、当該ユーザIDを、番組選択データ記憶領域512の当該番組IDに対応する印を付けたユーザIDとして記憶する。
続くステップS23で、CPU40は、当該番組の印合計値を1だけインクリメントする。具体的には、番組選択データ記憶領域512の当該番組IDに対応する印合計値に1を加算して、当該番組に印をつけたユーザの数を算出する。ステップS23を終了すると、処理は図24のステップS25に進む。
図24のステップS25では、CPU40は、結果情報送信タイミングであるか否かを判断する。結果情報送信タイミングは適宜に設定される。たとえば、結果情報を一定時間ごとに送信する場合、前の送信から一定時間が経過したか否かが判断される。また、1日のうちの所定の時刻や番組表アプリケーションが終了されるとき等が送信タイミングに設定されてもよい。
ステップS25で“YES”の場合、CPU40は、ステップS27で、地域IDおよび各番組の印合計値・ユーザ情報・詳細フラグ等に基づいて、記憶領域514に結果情報を生成する。結果情報は、図10に示すように、送信元IDおよび地域IDを含み、さらに、選択された番組の番組IDに対応付けた印合計値、印を付けたユーザの生年および性別、詳細フラグなどを含む。
続くステップS29で、CPU40は、入出力プロセッサ42aおよび無線通信モジュール50等を介して結果情報を配信サーバ102に送信する。このようにして、各ユーザが番組表で詳細情報を見たり印を付けたりした選択の結果が配信サーバ102に送信される。なお、ステップS25で“NO”の場合、処理はそのままステップS31に進む。
そして、ステップS31では、CPU40は、番組表アプリケーションを終了するか否かを判断する。具体的には、入力データおよびボタン710の表示位置データに基づいて、ユーザによってアプリケーションの終了が指示されたか否かを判断する。ステップS31で“NO”の場合、処理は図23のステップS9に戻り、一方、“YES”の場合、この番組表表示アプリケーションを終了する。
また、図23のステップS19で“NO”の場合には、処理は図25のステップS33に進む。ステップS33では、CPU40は、2D番組表の人気度の表示が選択されたか否かを判断する。具体的には、入力データおよびボタン704の表示位置データ等に基づいて、2D番組表が表示されているときのボタン704に対する操作によって、人気度を表示する状態が選択されたか否かを判断する。または、入力データ等に基づいて、人気度表示中の3D番組表から2D番組表に切替える操作が行われたか否かを判断する。
ステップS33で“YES”の場合、CPU40は、ステップS35で、対象範囲に対応する人気度データに基づいて、各番組の色の濃度を変化させた2D番組表を表示する。具体的には、人気度データには、図19に示すように、性別および年代別の人気度が記憶されているので、記憶領域506の対象範囲(年代、性別)に対応する人気度データが記憶領域510から読み出される。そして、記憶領域516の表示態様データ(図11)に基づいて、各番組の人気度レベルに応じた色濃度が決められる。CPU40は、GPU42bを用いて、番組表における各番組情報の表示態様(この実施例では番組情報の欄の色濃度)を人気度レベルに応じたものに変更し、当該番組表を表示するためのデータをVRAM42dに生成する。したがって、たとえば図20に示したように、各番組情報の欄の背景の色が各人気度に応じた濃度を有する2D番組表がモニタ34に表示される。このようにして、人気度が番組表において段階的な色濃度の違いによって表現されるので、各番組情報の人気度をユーザに直感的かつ容易に把握させることができる。なお、ステップS33で“NO”の場合、処理はそのままステップS37に進む。
ステップS37では、CPU40は、3D番組表の人気度の表示が選択されたか否かを判断する。具体的には、入力データおよび番組表の表示位置データ等に基づいて、人気度表示中の2D番組表から3D番組表に切替える操作が行われたか否かを判断する。たとえば、人気度を表示している2D番組表の表示領域がポインタ700によって指示された状態でAボタン26dが押されたか否かが判断されたり、入力手段26のうち所定のボタンが操作されたか否かが判断されたりする。
ステップS37で“YES”の場合、CPU40は、ステップS39で、対象範囲に対応する人気度データに基づいて、各番組の色の濃度と高さを変化させた3D番組表を表示する。具体的には、記憶領域516の表示態様データに基づいて、各番組の人気度レベルに応じた色濃度および高さが決められる。CPU40は、GPU42bを用いて、3D番組表における各番組情報の表示態様(この実施例では番組情報の欄の色濃度と高さ)を人気度レベルに応じたものに変更し、当該3D番組表を表示するためのデータをVRAM42dに生成する。したがって、たとえば図21に示したように、最前の板の番組表における各番組情報の欄の背景の色が各人気度に応じた濃度を有し、かつ、その高さが各人気度に応じた高さを有する3D番組表がモニタ34に表示される。このようにして、人気度が番組表において段階的な色濃度の違いと高さによって表現されるので、各番組情報の人気度をユーザに極めて直感的かつ容易に把握させることができる。なお、ステップS37で“NO”の場合、処理はそのままステップS41に進む。
ステップS41では、CPU40は、対象範囲が変更されたか否かを判断する。具体的には、入力データ、ボタン708の表示位置データ、対象範囲データ等に基づいて、人気度が表示されているときの対象範囲設定によって、性別および年代が変更されたか否かを判断する。ボタン708による設定に含まれる対象範囲設定では、図22に示すような画面が表示され、各ボタンの選択によって性別および年代が設定され、変更があった場合、記憶領域506の対象範囲データが更新される。
ステップS41で“YES”の場合、CPU40は、ステップS43で、対象範囲データに対応する人気度データに基づいて、番組表の各番組の表示態様を変更する。具体的には、変更された対象範囲(年代、性別)に対応する人気度データが記憶領域510から読み出され、記憶領域516の表示態様データに基づいて、各番組の人気度レベルに応じた色濃度が決められる。3D番組表が表示されている状態である場合には、さらに各番組の人気度レベルに応じた高さも決められる。そして、CPU40は、GPU42bを用いて、2Dまたは3D番組表における各番組情報の表示態様(色濃度、高さ)を人気度レベルに応じたものに変更し、当該番組表を表示するためのデータをVRAM42dに生成する。したがって、変更された対象範囲の人気度に対応する表示態様に変更された2Dまたは3D番組表がモニタ34に表示される。なお、ステップS41で“NO”の場合には、処理はそのまま上述の図24のステップS31に進む。
図26には配信サーバ102の動作の一例が示される。配信サーバ102のコンピュータ(CPU)は、ステップS61でクライアントから要求があったか否かを判断する。具体的には、ゲーム装置12からの要求データを受信したか否かを判断する。
ステップS63で“YES”の場合、配信サーバ102のCPUは、ステップS63で地域IDに対応する番組表データおよび人気度データをクライアントに送信する。具体的には、ゲーム装置12からの要求データから地域IDを抽出し、当該地域IDに対応する番組表データおよび人気度データをHDDまたは記憶領域652および記憶領域656から読み出して、ゲーム装置12に送信する。なお、配信する番組表データとして、現在の日付を含む一定期間(たとえば1週間分)の番組情報を含む番組表データが読み出される。また、ステップS61で“NO”の場合、処理はそのままステップS65へ進む。
ステップS65では、配信サーバ102のCPUは、結果情報をゲーム装置12から受信したか否かを判断する。番組の選択操作が行われたゲーム装置12からは、図10に示すような結果情報が送信されるので、この結果情報を受信したかどうかを判断する。
ステップS65で“YES”の場合、配信サーバ102のCPUは、受信した結果情報を記憶領域654に記憶し、当該結果情報をHDDに記憶する。なお、既に同じ送信元IDの結果情報が記憶されている場合には、記憶されているデータを、受信した結果情報に更新する。また、ステップS65で“NO”の場合、処理はそのままステップS69に進む。
ステップS69では、配信サーバ102のCPUは、集計タイミングであるか否かを判断する。集計タイミングは適宜に設定される。たとえば、一定時間ごとに集計する場合、前回の集計から一定時間が経過したか否かが判断される。また、1日のうちの所定の時刻が集計タイミングに設定されてもよい。
ステップS69で“YES”の場合、配信サーバ102のCPUは、ステップS71で、結果情報に基づいて、各番組の集計結果を地域ごとに生成する。具体的には、図17の上段に示したように、性別・年齢別の総数、性別の小計、印付き結果を送信したクライアントの数、詳細フラグの数などが、地域ごとに集計される。
また、ステップS73で、配信サーバ102のCPUは、各番組の性別・年代別の総数を地域ごとに算出する。具体的には、図17に示すように、各番組の性別・年齢別の総数を性別・年代別に集計する。
さらに、ステップS75で、配信サーバ102のCPUは、印を付けた場合の総数と詳細フラグ数とに異なる重み付けをして、各番組の総合得点を地域ごとに算出する。たとえば、図17の総合得点の算出では、印を付けた場合の総数の重みは10に、詳細情報を見ただけの場合の重みは1に設定される。
続いて、ステップS77で、配信サーバ102のCPUは、各番組の性別・年代別の総数および総合得点を時間帯別に比較して5段階のレベルに分類することによって、性別・年代別および総合の人気度データを生成する。具体的には、図18に示したような時間帯別の比較により、5段階の人気度の各範囲が性別・年代別に設定され、各番組の集計値がどの範囲に含まれるかによって各番組の人気度レベルが性別・年代別に決定されて、図19に示すような時間帯別の人気度データが生成される。人気度データは、地域IDに対応付けて記憶領域656に生成されてHDDに格納される。ステップS77を終了したとき、またはステップS69で“NO”の場合、処理はステップS61に戻る。
なお、上述の実施例では、配信サーバ102で、各ゲーム装置12の結果情報を集計し人気度を算出して、各ゲーム装置12に配信するようにしたが、結果集計、人気度算出および人気度配信などの人気度に関する処理を実行する機能は、電子番組表表示システム100全体で備えられればよい。したがって、他の実施例では、上記人気度に関する処理が配信サーバ102のみで行われるように構成されなくてもよい。たとえば、特定のゲーム装置12が上記人気度に関する処理を行ってもよいし、複数のゲーム装置12の分散処理で上記人気度に関する処理が行われてもよい。このような処理を行う場合、電子番組表表示システム100を配信サーバ102なしで構成するようにしてよい。
また、上述の各実施例では、多数のユーザの選択結果を集計して人気度を算出するようにしたが、他の実施例では、たとえば友達のような特定のグループの選択結果から人気度を算出するようにしてもよい。その場合、配信サーバ102で特定のグループに含まれるユーザのゲーム装置12の選択結果のみから人気度を算出して当該ユーザのゲーム装置12に当該人気度を配信するようにしてもよいが、各ゲーム装置12はネットワーク104を介して相互にデータを送受信することが可能であるから、予め登録しておいた他のゲーム装置12(たとえば友達のゲーム装置12)との間で、結果情報のような選択結果に関するデータをやり取りし、各ゲーム装置12で、他のゲーム装置12のユーザを含むグループを母集団とした集計を行って、各番組の人気度を算出するようにしてもよい。
この実施例の電子番組表表示システム100の一例が図27に示される。この実施例では、ゲーム装置12同士がネットワーク104上のメールサーバ106を介してデータの送受信を行うように構成される。
配信サーバ102は、番組表データを配信する。ただし、上述の実施例と同様に不特定多数のユーザを対象とした人気度データも配信するようにしてもよい。また、配信サーバ102とゲーム装置12の間でもメールサーバ106を介してデータの送受信を行うようにしてもよい。
各ゲーム装置12は、ユーザの選択結果を示すデータ(たとえば図10のような結果情報)を、電子メールの形式に変換し、ネットワーク104およびメールサーバ106を介して、当該データを他のゲーム装置12との間で送受信する。なお、各ゲーム装置12では、友達などの特定のユーザのゲーム装置12のメールアドレスを、たとえばフラッシュメモリ44に設けられるアドレス帳記憶領域に予め登録しておく。また、各ゲーム装置12では、アドレス帳に登録されたメールアドレスからのデータのみを受信し、または、メールアドレスがアドレス帳に登録されていないデータを受信しても即廃棄するようにしてよい。
メールサーバ106を介して他のゲーム装置12からの選択結果情報を受信すると、各ゲーム装置12では、上述の実施例の配信サーバ102と同様の集計処理を行って、友達のような特定のユーザのグループにおける各番組の人気度を算出することができる。
なお、この実施例では、より汎用的な電子メール形式のデータをメールサーバ106と送受信するが、データの形式は電子メールに限られず、さまざまなフォーマットにて転用可能である。特にゲーム装置12同士の通信に限られる場合は、汎用的なフォーマットでなくともよいし、他の端末(パーソナルコンピュータ、携帯電話機、携帯情報端末等)とも通信する場合であっても、当該端末で処理可能な汎用フォーマットであれば適用できる。また、サーバの種類も、端末からのアクセスまで送信されたデータを保持する性質のものであれば、メールサーバ以外の種類のサーバでもよい。
図28にゲーム装置12の送受信処理の動作の一例が示される。なお、この送受信処理は、上述の実施例の図24のステップS25−S29に代えて実行されてよい。
CPU40は、ステップS101で、図24のステップS25と同様にして、結果情報送信タイミングであるか否かを判断する。ステップS101で“YES”の場合、CPU40は、ステップS103で、図24のステップS27と同様にして、地域IDおよび各番組の印合計値・ユーザ情報・詳細フラグから記憶領域514に結果情報を生成する。
そして、ステップS105で、CPU40は、入出力プロセッサ42aおよび無線通信モジュール50等を介して、アドレス帳に登録された他のゲーム装置12(すなわち友達のゲーム装置12)のアドレス宛に結果情報を送信する。具体的には、結果情報は、友達のゲーム装置12を宛先とする電子メール形式に変換されて、メールサーバ106に送信される。なお、ステップS101で“NO”の場合、処理はそのままステップS107へ進む。
ステップS107では、CPU40は、結果情報受信タイミングであるか否かを判断する。結果情報受信タイミングは適宜に設定される。たとえば、結果情報の受信を一定時間ごと行う場合、前の受信処理から一定時間が経過したか否かが判断される。また、1日のうちの所定の時刻や番組表アプリケーションが開始または終了されるとき等が受信タイミングに設定されてもよい。
ステップS107で“YES”の場合、CPU40は、ステップS109で、友達のゲーム装置12からの結果情報を受信する。具体的には、メールサーバ106に、このゲーム装置12宛のデータの要求を送信し、メールサーバ106に当該データが受信されていれば、つまり、他のゲーム装置12から自分宛の結果情報が送信されていれば、当該データをメールサーバ106から受信して外部メインメモリ46のバッファ領域等に記憶する。なお、受信した結果情報は、このゲーム装置12で生成した結果情報とともに、集計タイミングまで保持されるようにフラッシュメモリ44に格納される。一方、ステップS107で“NO”の場合、そのままこの送受信処理を終了する。
なお、結果情報の送受信を、番組表アプリケーションが実行されているときに実行するようにしたが、他の実施例では、番組表アプリケーションが実行されていないときに(たとえば上述のスタンバイモードのときに)、結果情報の送受信が実行されるようにしてもよい。その場合、たとえば、番組表アプリケーションが実行されているときにCPU40が所定のスケジュールで送受信処理を実行することを規定したタスクをフラッシュメモリ44に登録しておき、スタンバイモードにおいて入出力プロセッサ42aが当該タスクを実行するように構成されてもよい。なお、当該タスクとともに、友達のゲーム装置12宛の送信データをフラッシュメモリ44に登録しておく。当該タスクの実行において、自分宛の結果情報をメールサーバ106から受信したとき、入出力プロセッサ42aは当該受信データをフラッシュメモリ44に記憶する。
図29には、ゲーム装置12の人気度算出処理の動作の一例が示される。なお、この人気度算出処理は、たとえば、上述の実施例の図25のステップS33の前に実行されてよい。
ステップS121では、CPU40は、集計タイミングであるか否かを判断する。集計タイミングは適宜に設定される。たとえば、一定時間ごとに集計を行う場合、前の集計タイミングから一定時間が経過したか否かが判断されてもよい。また、この番組表アプリケーションが起動されたときや所定の時刻等が集計タイミングとして設定されてもよい。
ステップS121で“YES”の場合、CPU40は、ステップS123で友達の結果情報を受信しているか否かを判断する。具体的には、友達のゲーム装置12からの結果情報がフラッシュメモリ44または外部メインメモリ46のバッファ領域等に記憶されているか否かを判断する。
ステップS123で“YES”の場合、CPU40は、ステップS125で友達の結果情報をRAM(外部メインメモリ46)の記憶領域514に読み出す。
続くステップS127で、CPU40は、受信した結果情報のうち集計に含める友達の結果情報を選択する。具体的には、地域ごとに異なる番組表データを配信サーバ102から配信する場合、このゲーム装置12の地域IDと同じ地域IDの結果情報を選択する。
また、たとえば初期設定またはボタン708による設定等において、登録された友達から集計に含める友達をユーザ入力によって選択させておいて、当該設定情報に基づいて、受信した結果情報から集計に含める結果情報を選択するようにしてもよい。この場合、たとえば、図30に示すような友達リスト画面をモニタ34に表示する。この画面には、登録された他のゲーム装置12のユーザが表示される。この画面から、ユーザ入力によって、集計に加える友達を選択する。したがって、ユーザが興味のある友達のみを選択して人気度を算出することが可能になる。なお、この実施例のように集計に加える友達のユーザ選択を許容する場合、送信する結果情報には印を付けたユーザIDを含めておく必要がある。また、結果情報または別のデータによって、友達のユーザIDに対応付けた名前および印のデータを取得することによって、図30に示すように、この友達リスト画面において友達の名前および印を表示することができる。
一方、ステップS123で“NO”の場合には、処理はそのままステップS129へ進む。友達の結果情報を受信していない場合には、このゲーム装置12に登録されたユーザの結果情報のみから人気度が算出されることとなる。
なお、この実施例では、このゲーム装置12のユーザと友達のゲーム装置12のユーザを一緒にしたグループの人気度を算出して表示するが、それぞれを別グループに分けた人気度を算出して表示できるようにしてもよい。
続くステップS129からS135の処理で、集計と人気度算出が実行される。各ステップS129、S131、S133およびS135の処理は、基本的には、上述の実施例の配信サーバ102における図26の各ステップS71、S73、S75およびS77の処理とそれぞれ同様である。
すなわち、ステップS129では、CPU40は、結果情報に基づいて各番組の集計結果を生成する。たとえば、図17の上段に示したように、性別・年齢別の総数、性別の小計、印付き結果を送信したゲーム装置12の数、詳細フラグ数等が集計される。
CPU40は、続くステップS131で、各番組の性別・年代別の総数を算出し、ステップS133で、印を付けた場合の総数と詳細フラグ数とに異なる重み付けをして各番組の総合得点を算出する(図17参照)。
そして、ステップS135で、CPU40は、各番組の性別・年代別の総数および総合得点を時間帯別に比較して5段階のレベルに分類することによって、性別・年代別および総合の人気度データを生成する(図18および図19参照)。生成した人気度データは、記憶領域510およびフラッシュメモリ44に記憶される。なお、ステップS121で“NO”の場合には、そのままこの人気度算出処理を終了する。
したがって、この実施例では、登録した友達および/または家族などを含む特定のグループの人気度を番組表において表示することができる。
また、上述の各実施例では、各番組の集計値に基づいて、各番組の人気度を複数の段階に分けるようにしたが、他の実施例では、算出された数値そのものを人気度として使用して、各ゲーム装置12では、当該人気度に基づいて各番組の表示態様を変化させるようにしてもよい。たとえば、表示態様として色濃度および/または高さを変化させる場合、当該人気度の数値に基づいて所定の関係式に従って、色濃度および/または高さを算出するようにしてもよい。
また、上述の各実施例では、この発明の表示システムを電子番組表における各番組情報の人気度表示に適用した場合を説明した。しかしながら、この表示システムは、番組情報を対象とした人気度表示に限られず、種々のコンテンツまたは項目のようなユーザの選択の対象となる事柄(選択対象)の人気度表示に適用することが可能である。この表示システムでは、単に人気上位のものを別表で表示したり人気順位や人気度を数字で表示したりするのではなく、複数の選択対象を表示した一覧において各選択対象の表示態様を人気度に応じて変化させるので、ユーザに人気度を直感的かつ容易に把握させることができる。たとえば、この表示システムは、発売前および/または発売済みの複数のゲームソフトのタイトルを一覧表示して、ユーザからの人気投票を受付けるようなシステムに適用することが可能である。また、たとえば、複数の商品を表示してユーザが選択操作により所望の商品を購入するような商品購入システムにおいて、商品毎に購入ユーザ数を集計して人気度を算出するようなシステムに適用することも可能である。ゲームソフトや商品などの各コンテンツの表示態様によって人気度を表現できるので、ユーザに各コンテンツの人気度を直感的かつ容易に把握してもらうことができる。また、各コンテンツは単純にたとえばあいうえお順または発売日順等に配列表示されてもよいが、各コンテンツをたとえば一方の軸をジャンルとし他方の軸を価格帯としたマトリックス状またはマップに表示すれば、人気のあるコンテンツがどのジャンル、価格帯等に多いのかといった傾向を容易に把握することも可能になる。また、上述の各実施例と同様に、各コンテンツの選択操作の種類を複数設けて、人気度算出の際の重み付けを選択操作の種類ごとに変えるようにしてもよい。例えば、ゲームソフトの人気投票を受け付けるようなシステムであれば、「おもしろかった」、「とてもおもしろかった」といった2種類以上の選択肢を設けてそれぞれの選択肢に異なる重み付けを設定することも可能である。また、商品を購入するようなシステムであれば、ユーザがその商品を何点購入したかによって重み付けを変えることも可能である。さらに、各コンテンツの人気度は、上述の各実施例で説明したような地域情報、時間帯(発売日時等)、ユーザの個人情報等の種別毎に算出することも可能である。