図1を参照して、この発明の一実施例であるゲームシステム10は、ビデオゲーム装置(以下、単に「ゲーム装置」という)12およびコントローラ22を含む。なお、図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ22と通信可能に設計されている。また、ゲーム装置12と各コントローラ22とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。
ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。図示は省略するが、ディスクスロット16の周囲には、LEDと導光板とが配置され、様々な処理に応答させて、ディスクスロット16を点灯または点滅させることが可能である。
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置12では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカードには当該他のアプリケーションのデータを保存することができる。
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
図1では省略するが、ゲーム装置12のハウジング14の後面には、AVケーブルコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル32aを通してゲーム装置12にモニタ34およびスピーカ34aを接続する。このモニタ34およびスピーカ34aは典型的にはカラーテレビジョン受像機であり、AVケーブル32aによって、ゲーム装置12からの映像信号がカラーテレビのビデオ入力端子に入力され、ゲーム装置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の内部メモリ(フラッシュメモリ42(図2参照))に記憶(インストール)しておき、当該内部メモリから実行するようにしてもよい。かかる場合には,光ディスク18のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、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のようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、コントローラ22とは異なる他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ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においては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Aボタンスイッチ26dは、コントローラ22をポインティングデバイスとして用いる場合に、ゲーム画面上でポインタ(指示画像)が指示するプレイヤオブジェクトの画像やボタン画像またはアイコンの決定を指示するために使用される。たとえば、プレイヤオブジェクトの画像やボタン画像またはアイコンが決定されると、プレイヤオブジェクトを選択したり、ボタン画像に対応して予め設定されている指示ないし命令(コマンド)を入力したり、アイコンに設定されて機能を実行したりすることができる。
−ボタン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は、コントローラ22とは異なる拡張コントローラ(図示せず)を接続するためなどに使用される。インジケータ22cは、たとえば、4つのLEDで構成される。たとえば、インジケータ22cでは、4つのうちのいずれか1つを点灯させることにより、点灯したLEDに応じて、コントローラ22の識別情報(コントローラ番号)を示すことができる。また、インジケータ22cでは、点灯させる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が接続される。
なお、簡単のため、図4では省略するが、上述したように、インジケータ22cは4つのLED82によって構成される。
プロセッサ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が配置される付近に設けられる。
無線モジュール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’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路80dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子80cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子80cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は2024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(2024,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との間の距離を把握できる。
このような構成のゲームシステム10では、複数のミニゲームのうちから選択した1のミニゲームをプレイ可能なメインゲームを実行することができる。たとえば、メインゲームを起動すると、図8(A)に示すようなメニュー画面100がモニタ34に表示される。メニュー画面100には、4つのボタン画像102、104,106,108が表示される。ボタン画像102は、ゲーム装置12の起動時に表示される、ゲームソフトやアプリケーションソフトを選択するなどのメインメニューに戻るためのGUI(Graphical User Interface)である。ボタン画像104は、1人でゲームをプレイするためのGUIである。ボタン画像106は、詳細な説明は省略するが、ログ(ゲームプレイの履歴)を参照するためのGUIである。ボタン画像108は、2人以上で交代しながらゲームをプレイするためのGUIである。ただし、後述するように、2人以上で交代しながらプレイする場合であっても、1人のプレイヤが続けてゲームをプレイすることは可能である。また、メニュー画面100には、指示画像120が表示される。指示画像120は、マウスポインタと同様に、ポインティングデバイス(この実施例では、コントローラ22)によって指示された画面上の位置を示すための画像である。以下、他の画面における指示画像(220,320,420,520,620)も同じである。この図8(A)においては、指示画像120は、ボタン画像108を指示している。したがって、その指示された状態を表現するために、ボタン画像108を塗りつぶしてある。ただし、これは単なる一例であり、たとえば、指示されたボタン画像(102,104,106,108)の輝度を高くし、指示されていないボタン画像(102,104,106,108)をグレーアウトするようにしてもよい。または、指示されたボタン画像(102,104,106,108)のみを色反転させるようにしてもよい。
なお、図示は省略するが、他の画面(200,300,400,500,600)におけるボタン画像やプレイヤオブジェクトの画像が指示画像(220,320,420,520,620)によって指示される場合も同様である。
たとえば、指示画像120をボタン画像(102,104,106,108)に合わせて、決定ボタン(この実施例では、Aボタン26d)を押すと、そのボタン画像(102,104,106,108)をオン(選択)することができる。以下、ボタン画像をオンする場合やプレイヤオブジェクトの画像を選択する場合について、同様である。
上述したように、メニュー画面100において、ボタン画像104がオン(クリック)されると、1人でプレイすることが選択される。1人でプレイすることが選択されると、図8(B)に示すようなプレイヤ選択画面200がモニタ34に表示される。このプレイヤ選択画面200は、ゲームに参加するプレイヤを選択するための画面である。
図8(B)に示すように、プレイヤ選択画面200の中央には、表示領域202が設けられる。また、プレイヤ選択画面200の左下部には、ボタン画像204が表示される。さらに、プレイヤ選択画面200には、指示画像220が表示される。
表示領域202は、選択可能な複数のプレイヤオブジェクトOBJの画像を表示するための領域である。ここで、選択可能なプレイヤオブジェクトOBJとは、ゲームに参加することが選択されていないプレイヤ(以下、「未選択プレイヤ」という)を意味する。図示は省略するが、たとえば、表示領域202をスクロールしたり、ページをめくったりすると、他のプレイヤオブジェクトOBJの画像が表示される。いずれかのプレイヤオブジェクトOBJの画像が選択されると、選択されたプレイヤオブジェクトOBJがゲームに参加するプレイヤとして選択される。ボタン画像204は、1つ前の画面に戻るためのGUIである。ここでは、上述したメニュー画面100に戻る。
図8(B)のプレイヤ選択画面200において、1のプレイヤオブジェクトOBJの画像が選択されると、つまりプレイヤが選択されると、図9(A)に示すようなゲーム選択画面300がモニタ34に表示される。図9(A)に示すように、ゲーム選択画面300には、6つのボタン画像302,304,306,308,310,312が表示される。また、ゲーム選択画面300には、指示画像320が表示される。このゲーム選択画面300において、プレイヤの操作によって、ボタン画像302−312のいずれかがオンされると、対応するミニゲーム(ゲーム1,2,3,4,5,6)が選択され、選択されたゲーム(1−6)が実行(開始)される。つまり、プレイヤは、所望のゲーム(1−6)をプレイすることができる。
なお、詳細な説明は省略するが、ゲームの数は6個に限定される必要はない。
ゲーム中では、プレイヤが一時停止を指示(+ボタン26gをオン)することにより、ゲームが一時停止される。このとき、図9(B)に示すようなポーズ画面400がモニタ34に表示される。このポーズ画面400には、2つのボタン画像402,404が表示される。また、ポーズ画面400には、指示画像420が表示される。ボタン画像402は、ゲーム(1−6)を再開するためのGUIである。また、ボタン画像404は、ゲーム(1−6)を終了(途中終了)するためのGUIである。1人でプレイする場合には、ボタン画像404がオンされると、一時停止されたゲーム(1−6)が途中終了され、図9(A)に示したようなゲーム選択画面300がモニタ34に表示される。したがって、他のゲーム(1−6)の選択が行われる。
なお、ゲーム(1−6)が一時停止されている状態で、+ボタン26gがオンされた場合にも、ゲーム(1−6)が再開される。
また、1人でプレイする場合には、ゲームクリアまたはゲームオーバになると、つまりゲーム(1−6)を終了すると、図10(A)に示すようなゲーム変更選択画面500がモニタ34に表示される。このゲーム変更選択画面500には、2つのボタン画像502,504が表示される。また、ゲーム変更選択画面500には、指示画像520が表示される。ボタン画像502は、他のゲーム(1−6)を選択するためのGUIである。ただし、ボタン画像502がオンされることにより、ゲーム選択画面300がモニタ34に表示され、直前にプレイしたゲーム(1−6)と同じゲーム(1−6)が選択される場合もある。ボタン画像504は、直前にプレイしたゲーム(1−6)をもう一度プレイするためのGUIである。
図8(A)に戻って、ボタン108がオンされると、2人以上でプレイすることが選択される。2人以上でプレイすることが選択された場合にも、図8(B)に示したようなプレイヤ選択画面200が表示され、プレイヤが選択される。ただし、2人以上でプレイすることが選択されている場合には、他のプレイヤと交代することがあるため、ゲーム(1−6)に参加することが選択されたプレイヤ(以下、「既選択プレイヤ」という)として登録される。既選択プレイヤの登録については、後で詳細に説明することにする。
また、プレイヤが選択されると、図9(A)に示したゲーム選択画面300が表示される。したがって、プレイヤは、上述したようにして、所望のゲーム(1−6)を選択し、選択されたゲーム(1−6)が実行(開始)される。
ゲーム中に、一時停止の指示があると、ゲーム(1−6)が一時停止され、図9(B)に示したようなポーズ画面400がモニタ34に表示される。このポーズ画面400では、ボタン画像402がオンされると、1人でプレイする場合と同様に、一時停止されたゲーム(1−6)が再開される。ただし、2人以上でプレイする場合には、ボタン画像404がオンされ、一時停止されたゲーム(1−6)が終了されると、図10(B)に示すような次ゲームプレイヤ選択画面600がモニタ34に表示される。また、ゲームクリアまたはゲームオーバになり、ゲーム(1−6)が終了されても、同様に、図10(B)に示すような次ゲームプレイヤ選択画面600がモニタ34に表示される。
この次ゲームプレイヤ選択画面600は、次回のゲーム(次ゲーム)のプレイヤの選択(プレイヤの交代)や他のゲームの選択を行うための画面である。図10(B)に示すように、次ゲームプレイヤ選択画面600には、その中央に表示領域602が設けられる。また、表示領域602の下方に、ボタン画像604が表示される。さらに、次ゲームプレイヤ選択画面600には、指示画像620が表示される。
表示領域602には、既選択プレイヤに対応するプレイヤオブジェクトOBJの画像が表示されるとともに、ゲーム(1−6)に参加することが選択されていない未選択プレイヤのプレイヤオブジェクトOBJを選択するための画像(以下、「未選択プレイヤ選択画像」という)610が表示される。この表示領域602に表示されたプレイヤオブジェクトOBJ(既選択プレイヤ)の画像が選択されると、対応するプレイヤオブジェクトOBJについてのゲーム(1−6)が実行される。したがって、直前にゲームをプレイしたプレイヤ以外のプレイヤオブジェクトOBJが選択されると、プレイヤが交代される。ただし、直前にゲームをプレイしたプレイヤのプレイヤオブジェクトOBJが選択されると、プレイヤは交代されない。
ボタン画像604は、プレイヤを交代せずに、他のゲームを選択するためのGUIである。このボタン画像604が選択されると、他のゲーム(1−6)を選択するべく、図9(A)に示したゲーム選択画面300が表示される。したがって、同じプレイヤについて、ゲーム選択画面300で選択されたゲーム(1−6)が開始される。このように、2人以上のプレイヤが交代でゲーム(1−6)をプレイするのみならず、同じプレイヤが続けてゲーム(1−6)をプレイすることもできる。また、既選択プレイヤとして登録されると、選択的にゲーム(1−6)をプレイできるので、ゲーム(1−6)毎に既選択プレイヤを登録する必要がない。つまり、登録された既選択プレイヤは各ゲーム(1−6)について共通である。
また、未選択プレイヤ選択画像610は、未選択プレイヤを、次ゲームのプレイヤとして選択および既選択プレイヤとして登録(追加)するためのGUIである。したがって、未選択プレイヤ選択画像610が選択(オン)されると、図8(B)に示したプレイヤ選択画面200がモニタ34に表示される。上述したようにして、プレイヤ選択画面200においてプレイヤ(プレイヤオブジェクトOBJ)が選択されると、選択されたプレイヤ(未選択プレイヤ)が次ゲームのプレイヤに決定されるとともに、当該未選択プレイヤは既選択プレイヤとして登録される。このように、プレイヤ選択画面200に表示されるプレイヤオブジェクトOBJの画像を選択することにより、対応する未選択プレイヤを既選択プレイヤとして登録する処理が実行されるため、プレイヤオブジェクトOBJの画像はアイコンと呼ぶこともできる。
ここで、この実施例では、2人以上でプレイする場合には、最大で9人のプレイヤ(プレイヤオブジェクトOBJ)を既選択プレイヤとして登録することが可能である。したがって、未選択プレイヤを既選択プレイヤとして登録する際に、最大数を超える場合には、所定のルールに従って、登録済みの既選択プレイヤ(プレイヤオブジェクトOBJ)が削除される。この実施例では、所定のルールとして、前回ゲームをプレイした時刻が最も古い既選択プレイヤを削除することが設定されている。ただし、所定のルールは、これに限定される必要はない。他の実施例では、所定のルールとして、ゲームをプレイした回数が最も多い(または最も少ない)既選択プレイヤを削除したり、登録された時刻が最も古い既選択プレイヤを削除したりすることを設定してもよい。
また、図11には、次ゲームプレイヤ選択画面600の表示領域602における、既選択プレイヤの表示順位と表示位置との関係が示される。たとえば、表示順位は、1から9の整数で表わされ、図11に示すように、プレイヤオブジェクトOBJは、左上からその表示順位に従う順番に並べて表示される。そして、表示順位が最下位のプレイヤオブジェクトOBJの画像に続いて、未選択プレイヤ選択画像610が表示される。したがって、図11からも分かるように、9人のプレイヤ(プレイヤオブジェクトOBJ)が登録されている場合には、表示順位に従って9つのプレイヤオブジェクトOBJの画像が表示され、表示順位が「9」のプレイヤオブジェクトOBJの画像の次に未選択プレイヤ選択画像610が表示されることになる。
上述したように、この実施例では、既選択プレイヤの数が最大数に達している場合には、未選択プレイヤを既選択プレイヤとして登録する際に、所定のルールに従って、登録済みの既選択プレイヤを削除するようにしてある。したがって、たとえば、表示領域602についての表示順位はゲームが終了する度に更新される。つまり、直前にゲームをプレイしたプレイヤ(プレイヤオブジェクトOBJ)の表示順位が「1」になるように、ソートされる。この実施例では、前回プレイした時刻が古いほど、既選択プレイヤ(プレイヤオブジェクトOBJ)の表示順位が低くされる。つまり、前回プレイした時刻が早い順番で、既選択プレイヤ(プレイヤオブジェクトOBJ)の画像が表示領域602に表示されるのである。このため、上述した所定のルールに従って削除される既選択プレイヤは、表示順位が「9」であるプレイヤオブジェクトOBJである。
なお、この実施例では、所定のルールとして、前回ゲームをプレイした時刻が最も古いプレイヤオブジェクトOBJを削除することが設定されていることを前提として、直前にゲームをプレイしたプレイヤのプレイヤオブジェクトOBJの表示順位が「1」になるようにソートしてあるが、これに限定される必要はない。
たとえば、所定のルールとして、プレイ回数が最も多い(最も少ない)既選択プレイヤを削除する場合には、ゲームが終了すると、直前にプレイしたプレイヤオブジェクトOBJについてのプレイ回数が更新(1加算)され、全既選択プレイヤのプレイ回数の大小に応じて、表示順位がソートされる。
また、所定のルールとして、登録した時刻が最も古い既選択プレイヤを削除する場合には、プレイ毎に表示順位をソートする必要はなく、新しい既選択プレイヤが登録される度に、登録済みの既選択プレイヤの表示順位が1ずつ加算される。
このように、既選択プレイヤを削除する所定のルールに応じて、既選択プレイヤの表示順位の決定方法(ルール)も設定することができる。また、表示領域602には、前回プレイした時刻、プレイした回数、または、登録した時刻に応じた表示順位に従って、既選択プレイヤが並んで表示されているため、次のプレイヤすなわち交代するプレイヤの選択を比較的容易に行うことができる。これは、複数人で遊ぶ場合に、既選択プレイヤの表示順位が、次にプレイするプレイヤを選択(決定)する際の指標となるからである。たとえば、長時間プレイしていないプレイヤやプレイ回数の少ないプレイヤのように、表示順位の低いプレイヤを、優先的に次プレイヤとして選択することができる。また、たとえば、最近登録されたプレイヤのように、表示順位の高いプレイヤを、優先的に次のプレイヤとして選択することもできる。先に登録されているプレイヤよりも、プレイ回数やプレイ時間が短いと考えられるためである。
図12は図2に示したメインメモリ(42e,46)のメモリマップの一例を示す図解図である。図12に示すように、メインメモリ(42e,46)は、プログラム記憶領域700およびデータ記憶領域702を含む。プログラム記憶領域700は、ゲームプログラムを記憶し、このゲームプログラムは、メイン処理プログラム700a、画像生成プログラム700b、画像表示プログラム700c、個別ゲームプログラム700d、プレイヤ選択プログラム700eおよびプレイヤ登録プログラム700fなどによって構成される。
メイン処理プログラム700aは、この実施例の仮想ゲーム(メインゲーム)についてのメインルーチンを処理するためのプログラムである。画像生成プログラム700bは、後述する画像データ702aを用いて、ゲーム画像データを生成するためのプログラムである。画像表示プログラム700cは、画像生成プログラム700bに従って生成されたゲーム画像データに対応するゲーム画面(100−600など)をモニタ34に表示するためのプログラムである。
個別ゲームプログラム700dは、複数のミニゲーム(ゲーム1−6)の各々についてのゲーム処理を実行するためのプログラムである。図示は省略するが、個別ゲームプログラム700dは、各ゲーム(1−6)に対応する複数のプログラムを含む。プレイヤ選択プログラム700eは、ゲームに参加するプレイヤを選択するためのプログラムである。この実施例では、プレイヤ選択画面200が表示され、プレイヤ(プレイヤオブジェクトOBJ)が選択される。プレイヤ登録プログラム700fは、プレイヤ選択プログラム700eに従って選択されたプレイヤを既選択プレイヤとして登録するためのプログラムである。この実施例では、2人以上でプレイする場合に、最初に選択されたプレイヤと、ゲームが終了したときに選択された未選択プレイヤとが、既選択プレイヤとして登録(追加)される。
図示は省略するが、ゲームプログラムには、音出力プログラムやバックアッププログラムなども含まれる。音出力プログラムは、効果音、BGM、プレイヤオブジェクトOBJの音声ないし擬声音のようなゲームに必要な音を出力するためのプログラムである。バックアッププログラムは、メインメモリ(42e,46)に記憶されたゲームデータ(途中データ、結果データ)をメモリカードやフラッシュメモリ44に記憶(セーブ)するためのプログラムである。
データ記憶領域702には、画像データ702a、全プレイヤデータ70b、選択可能プレイヤデータ702cおよび既選択プレイヤデータ702dが記憶される。画像データ702aは、ゲーム画像データを生成するためのポリゴンデータやテクスチャデータなどのデータである。全プレイヤデータ70bは、ゲーム装置12自体に登録されているすべてのプレイヤオブジェクトOBJについてのデータ(画像、プロフィール、ゲームレベル、ログなどのデータ)である。たとえば、全プレイヤデータ702bは、フラッシュメモリ44に保存されており、ゲーム開始時に、フラッシュメモリ44からロードされる。
選択可能プレイヤデータ702cは、各プレイヤオブジェクトOBJに対応して登録可能か否かを示す情報が記載されたデータである。たとえば、選択可能プレイヤデータ702cは、ゲーム装置12自体に登録されているすべてのプレイヤオブジェクトOBJの数に相当するビット数のレジスタで構成され、プレイヤオブジェクトOBJが選択可能であれば、対応するビットにデータ値「0」が設定され、プレイヤオブジェクトOBJが選択不能であれば、対応するビットにデータ値「1」が設定される。ただし、既選択プレイヤのプレイヤオブジェクトOBJは選択不能であり、それ以外の未選択プレイヤのプレイヤオブジェクトOBJは選択可能である。したがって、選択可能プレイヤデータ702cを構成するレジスタにおいて、データ値「0」が設定されたビットに対応するプレイヤオブジェクトOBJが選択可能であり、そのプレイヤオブジェクトOBJの画像がプレイヤ選択画面200の表示領域202に表示される。
既選択プレイヤデータ702dは、既選択プレイヤとして登録されたプレイヤ(プレイヤオブジェクトOBJ)についてのデータであり、プレイヤ1データ710,プレイヤ2データ720,…,プレイヤ9データ790を含む。この実施例では、プレイヤが最大数になるまでは、プレイヤ1データ710,プレイヤ2データ720,…,プレイヤ9データ790の順で登録される。プレイヤ1データ710は、識別情報データ710aおよび表示順位データ710bを含む。識別情報データ710aは、プレイヤオブジェクトOBJを識別するための識別情報(IDや名称)についてのデータである。表示順位データ710は、次ゲームプレイヤ選択画面600の表示領域602における表示順位を示す数値データである。したがって、既選択プレイヤのプレイヤオブジェクトOBJの画像は、表示領域602において、表示順位データ710が示す表示順位に対応する表示位置に表示される。
図示等は省略するが、プレイヤ2データ720,…,プレイヤ9データ790についても、プレイヤ1データ710と同様である。また、プレイヤが登録されていない場合には、プレイヤnデータ7n0の識別情報データおよび表示順位データには、NULLデータが記憶される。ただし、n=1,2,3,…,9である。
なお、図示は省略するが、データ記憶領域702には、音データのような他のデータも記憶され、また、ゲームプログラムの実行に必要なフラグやカウンタ(タイマ)なども設けられる。
図13ないし図18は、図2に示したCPU40の全体処理を示すフロー図である。図13に示すように、CPU40は全体処理を開始すると、ステップS1で、図8(A)に示したようなメニュー画面100をモニタ34に表示する。次のステップS3では、ひとりでプレイすることが指示されたかどうかを判断する。つまり、CPU40は、メニュー画面100において、ボタン画像104がオンされたかどうかを判断する。ステップS3で“YES”であれば、つまりボタン画像104がオンされると、ひとりでプレイすることが指示されたと判断して、ステップS5で、図8(B)に示したようなプレイヤ選択画面200をモニタ34に表示する。このとき、CPU40は、選択可能プレイヤデータ702cを参照して、選択可能なプレイヤオブジェクトOBJの画像のみを表示領域202に表示する。ただし、全体処理が開始された当初では、いずれのプレイヤオブジェクトOBJも既選択プレイヤとして登録されていないため、このステップS5では、ゲーム装置12自体に登録されているすべてのプレイヤオブジェクトOBJの画像が表示されることになる。
なお、図示は省略するが、上述したように、全体処理の開始時に、全プレイヤデータ702bが、フラッシュメモリ44からメインメモリ(42e,46)のデータ記憶領域702にロードされる。
続いて、ステップS7では、プレイヤ(プレイヤオブジェクトOBJ)が選択されたかどうかを判断する。つまり、CPU40は、プレイヤ選択画面200でいずれかのプレイヤオブジェクトOBJの画像が選択されたかどうかを判断する。ステップS7で“NO”であれば、つまりプレイヤが選択されていなければ、そのまま同じステップS7に戻る。一方、ステップS7で“YES”であれば、つまりプレイヤが選択されれば、図14に示すステップS19に進む。
なお、図示等は省略するが、プレイヤ選択画面200には、ボタン画像204が表示されており、これが選択された場合には、メニュー画面100に戻る。以下、同様である。
また、ステップS3で“NO”であれば、つまりボタン画像104がオンされていなければ、ひとりでプレイすることが指示されていないと判断して、ステップS9で、みんなでプレイすることが指示されたかどうかを判断する。つまり、CPU40は、メニュー画面100において、ボタン画像108がオンされたかどうかを判断する。ステップS9で“NO”であれば、つまりボタン画像108がオンされていなければ、みんなでプレイすることが指示されていないと判断して、そのままステップS3に戻る。
なお、メニュー画面100では、ボタン画像102およびボタン画像106も設けられるが、ここでは、簡単のため、省略してある。上述したように、ボタン画像102がオンされると、全体処理を終了して、メインメニューの画面がモニタ34に表示される。また、ボタン画像106がオンされると、ログがモニタ34に表示される。
一方、ステップS9で“YES”であれば、つまりボタン画像108がオンされると、みんなでプレイすることが指示されたと判断して、ステップS11で、図8(B)に示したようなプレイヤ選択画面200をモニタ34に表示する。そして、ステップS13では、プレイヤが選択されたかどうかを判断する。ステップS11およびステップS13の処理は、上述したステップS5およびステップS7の処理と同じであるため、重複した説明は省略する。
ステップS13で“NO”であれば、同じステップS13に戻る。一方、ステップS13で“YES”であれば、ステップS15で、選択されたプレイヤオブジェクトOBJを既選択プレイヤとして登録する。ここでは、CPU40は、選択されたプレイヤオブジェクトOBJについての識別情報データ710aと、表示順位「1」を示す表示順位データ710bとを、既選択プレイヤデータ702dのプレイヤ1データ710に登録する。次のステップS17では、選択されたプレイヤオブジェクトOBJを選択不能に設定して、図16に示すステップS47に進む。このステップS17では、CPU40は、選択可能プレイヤデータ702cにおいて、選択されたプレイヤオブジェクトOBJに対応するビットのデータ値を「1」に設定する。以下、プレイヤオブジェクトOBJを選択不能にする場合について同じである。
上述したように、ひとりでプレイすることが指示され、プレイヤが選択されると、図14に示すステップS19で、図9(A)に示したようなゲーム選択画面300をモニタ34に表示する。次のステップS21では、ゲームの選択が有るかどうかを判断する。ここでは、ゲーム選択画面300において、いずれかのボタン画像302−312がオンされたかどうかを判断する。
ステップS21で“NO”であれば、つまりゲームが選択されていなければ、そのまま同じステップS21に戻る。一方、ステップS21で“YES”であれば、つまりゲームが選択されれば、ステップS23で、選択されたゲーム(1−6)を開始する。そして、ステップS25で、一時停止の指示が有るかどうかを判断する。つまり、CPU40は、+ボタン26gがオンされたかどうかを判断する。ステップS25で“YES”であれば、つまり一時停止の指示が有れば、図15に示すステップS35に進む。一方、ステップS25で“NO”であれば、つまり一時停止の指示が無ければ、ステップS27で、ゲームクリアまたはゲームオーバかどうかを判断する。つまり、CPU40は、ゲームが終了したかどうかを判断する。
ステップS27で“NO”であれば、つまりゲーム中であれば、そのままステップS25に戻る。一方、ステップS27で“YES”であれば、つまりゲームクリアまたはゲームオーバであれば、ゲームが終了したと判断して、ステップS29で、図10(A)に示したようなゲーム変更選択画面500をモニタ34に表示する。そして、次のステップS31で、もう一度プレイすることが指示されたかどうかを判断する。つまり、CPU40は、ゲーム変更選択画面500において、ボタン画像504がオンされたかどうかを判断する。
ステップS31で“YES”であれば、つまりボタン画像504がオンされると、もう一度プレイすることが指示されたと判断して、ステップS23に戻る。したがって、直前にプレイしたゲーム(1−6)が最初から開始される。一方、ステップS31で“NO”であれば、つまりボタン画像504がオンされなければ、もう一度プレイすることが指示されていないと判断して、ステップS33で、他のゲームを選択することが指示されたかどうかを判断する。つまり、CPU40は、ゲーム変更選択画面500において、ボタン画像502がオンされたかどうかを判断する。
ステップS33で“YES”であれば、つまりボタン画像502がオンされると、他のゲームを選択することが指示されたと判断して、ステップS19に戻る。一方、ステップS33で“NO”であれば、つまりボタン画像502がオンされなければ、他のゲームを選択することが指示されていないと判断して、ステップS31に戻る。
また、上述したように、一時停止が指示されると、図15に示すステップS35で、ゲームを一時停止する。次のステップS37では、図9(B)に示したようなポーズ画面400をモニタ34に表示する。続いて、ステップS39では、ゲームを再開することが指示されたかどうかを判断する。つまり、CPU40は、ボタン画像402がオンされたり、コントローラ22の+ボタン26gがオンされたりしたかどうかを判断する。
ステップS39で“YES”であれば、つまりゲームを再開することが指示されると、ステップS41で、ゲームを再開して、図14に示したステップS25に戻る。一方、ステップS39で“NO”であれば、つまりゲームを再開することが指示されなければ、ステップS43で、ゲームを終了することが指示されたかどうかを判断する。つまり、CPU40は、ボタン画像404がオンされたかどうかを判断する。ステップS43で“NO”であれば、つまりゲームを終了することが指示されなければ、そのままステップS39に戻る。一方、ステップS43で“YES”であれば、つまりゲームを終了することが指示されれば、ステップS45で、ゲームを終了(途中終了)して、図14に示したステップS29に進む。
図13に示したように、みんなでプレイすることが指示され、プレイヤが選択され、選択されたプレイヤが既選択プレイヤとして登録されるとともに、当該既選択プレイヤをプレイヤ選択画面200において選択不能にすると、図16に示すステップS47以降の処理を実行する。以下に、その説明をするが、ひとりでプレイする場合と同様の処理については簡単に説明することにする。
図16に示すように、ステップS47では、図9(A)に示すようなゲーム選択画面300をモニタ34に表示する。次のステップS49では、ゲームの選択が有るかどうかを判断する。ステップS49で“NO”であれば、同じステップS49に戻るが、ステップS49で“YES”であれば、ステップS51で、選択されたゲーム(1−6)を開始する。次のステップS53では、一時停止の指示が有るかどうかを判断する。ステップS53で“NO”であれば、ステップS55で、ゲームクリアまたはゲームオーバかどうかを判断する。ステップS55で“NO”であれば、そのままステップS53に戻る。一方、ステップS55で“YES”であれば、ステップS69に進む。
また、ステップS53で“YES”であれば、ステップS57で、ゲームを一時停止し、ステップS59で、図9(B)に示したようなポーズ画面400をモニタ34に表示する。次のステップS61では、ゲームの再開が指示されたかどうかを判断する。ステップS61で“YES”であれば、ステップS63で、ゲームを再開して、ステップS53に戻る。一方、ステップS61で“NO”であれば、ステップS65で、ゲームの終了が指示されたかどうかを判断する。ステップS65で“NO”であれば、そのままステップS61に戻る。一方、ステップS65で“YES”であれば、ステップS67で、ゲームを終了して、ステップS69に進む。
ステップS69では、既選択プレイヤの表示順位を更新する。この実施例では、直前にゲームをプレイした既選択プレイヤ(プレイヤオブジェクトOBJ)の表示順位を「1」とし、それに続いて、他の既選択プレイヤの表示順位が前回プレイした時刻の早い順に並ぶように、NULLデータ以外の表示順位データが更新される。ただし、表示順位が変更されないプレイヤも存在する。たとえば、既選択プレイヤが3人の場合に、表示順位が「2」の既選択プレイヤが直前にゲームをプレイしたとすると、当該表示順位が「2」であった既選択プレイヤの表示順位が「1」に変更され、表示順位が「1」であって既選択プレイヤの表示順位が「2」に変更される。ただし、表示順位が「3」であったプレイヤについては、表示順位は変更されない。後述するように、新しい既選択プレイヤが追加される場合には、当該新しい既選択プレイヤがゲームを終了した後に、表示順位が「1」に設定(変更)されるため、それ以前に登録されている既選択プレイヤの表示順位はそれぞれ1加算される。
図17に示すように、続くステップS71では、図10(B)に示したような次ゲームプレイヤ選択画面600をモニタ34に表示する。次のステップS73では、既選択プレイヤが選択されたかどうかを判断する。つまり、CPU40は、表示領域602に表示されたいずれかのプレイヤオブジェクトOBJの画像がオン(選択)されたかどうかを判断する。
ステップS73で“YES”であれば、つまり既選択プレイヤが選択されると、ステップS75で、プレイヤを交代して、図16に示したステップS47に戻る。ただし、直前にゲームをプレイしたプレイヤのプレイヤオブジェクトOBJと同じプレイヤオブジェクトOBJの画像が選択された場合には、プレイヤは交代されないことになる。一方、ステップS73で“NO”であれば、つまり既選択プレイヤが選択されなければ、ステップS77で、未選択プレイヤの選択が指示されたかどうかを判断する。つまり、CPU40は、表示領域602に表示された未選択プレイヤ選択画像610がオン(選択)されたかどうかを判断する。
ステップS77で“NO”であれば、つまり未選択プレイヤの選択が指示されなければ、ステップS79で、他のゲームの選択が指示されたかどうかを判断する。つまり、CPU40は、ボタン画像604がオンされたかどうかを判断する。ステップS79で“NO”であれば、つまり他のゲームの選択が指示されなければ、そのままステップS73に戻る。一方、ステップS79で“YES”であれば、つまり他のゲームの選択が指示されると、そのままステップS47に戻る。つまり、プレイヤは交代されずに、他のゲーム(1−6)が選択される。
一方、ステップS77で“YES”であれば、つまり未選択プレイヤの選択が指示されると、ステップS81で、図8(B)に示したようなプレイヤ選択画面200をモニタ34に表示する。ただし、登録済みの既選択プレイヤは選択不能であるため、このプレイヤ選択画面200には表示されない。次のステップS83では、プレイヤが選択されたかどうかを判断する。
ステップS83で“NO”であれば、同じステップS83に戻る。一方、ステップS83で“YES”であれば、ステップS85で、既選択プレイヤの数が最大数(この実施例では、9)以上であるかどうかを判断する。ステップS85で“NO”であれば、つまり既選択プレイヤの数が最大数未満であれば、図18に示すステップS91にそのまま進む。一方、ステップS85で“YES”であれば、つまり既選択プレイヤの数が最大数以上であれば、ステップS87で、表示順位が最下位の既選択プレイヤを削除して、図18に示すステップS89に進む。つまり、ステップS87では、CPU40は、表示順位データが「9」を示すプレイヤnデータ7n0の識別情報データおよび表示順位データにNULLデータを書き込むのである。
図18に示すステップS89では、削除された既選択プレイヤを選択可能に設定する。つまり、CPU40は、選択可能プレイヤデータ702cにおいて、削除された既選択プレイヤ(プレイヤオブジェクトOBJ)に対応するビットに、データ値「0」を設定する。次のステップS91では、選択されたプレイヤオブジェクトOBJ(未選択プレイヤ)を既選択プレイヤとして登録する。ここでは、既選択プレイヤデータ702dのうち、空きの(NULLデータが書き込まれた)プレイヤnデータ7n0に、ステップS81において表示されたプレイヤ選択画面200を用いて選択されたプレイヤオブジェクトOBJの識別情報データおよび表示順位データが登録される。ただし、今回登録された既選択プレイヤの表示順位は、当該既選択プレイヤについてのゲームの終了後に更新されるため(ステップS69)、ここでは最下位に設定される。そして、ステップS93で、選択されたプレイヤオブジェクトOBJすなわち既選択プレイヤとして登録されたプレイヤオブジェクトOBJを選択不能に設定して、ステップS47に戻る。
この実施例によれば、2人以上でプレイする場合には、ゲームを終了すると、次ゲームのプレイヤとして、登録済みの既選択プレイヤを選択するのみならず、未選択プレイヤを選択することができ、しかも次ゲームのプレイヤとして選択された未選択プレイヤを既選択プレイヤとして登録するので、メインゲームのゲームプログラムを再起動せずに、プレイヤを追加することができる。つまり、プレイヤをゲームに参加させる自由度を向上させることができる。
なお、この実施例では、2人以上でプレイする場合において、ゲームを終了した後に、プレイヤを交代するようにしたが、ゲームを一時停止した状態、すなわちゲームを終了せずに、プレイヤを交代するようにしてもよい。かかる場合には、ポーズ画面に、他のプレイヤを選択するボタン画像をさらに設け、当該他のプレイヤを選択するボタン画像がオンされると、他のゲームを選択するためのボタン画像が表示されていない(または他のゲームを選択するためのボタン画像をオンできないようにした)次ゲームプレイヤ選択画面を表示させ、他のプレイヤの選択後に、ゲームを一時停止した状態から再開させるようにすればよい。または、他のプレイヤ選択後に、ゲームを最初から開始してもよい。
また、この実施例では、モニタとは別に設けられた据置型のゲーム装置についてのみ説明したが、これに限定される必要はない。ゲーム機能を備えたPCなどであってもよい。また、モニタが一体的に設けられた、携帯型のゲーム装置、ゲーム機能を備えたPDAやノート型のPC、ゲーム機能を備えた携帯電話機、またはアーケードゲーム機などであってもよい。