(57)【要約】    【構成】  ゲーム装置１２は、ＣＰＵ４０を含み、ＣＰＵは、プレイヤからの指示に従ってプレイヤオブジェクト（２０２）の移動等を制御する。プレイヤオブジェクトが敵オブジェクト（２１０）を出現させる領域（Ｅ）内に存在し、設定条件を満たす場合に、敵セットタグ（Ｔ）を設定する。このとき、ＣＰＵは、プレイヤオブジェクトの移動方向に、コースに沿って所定距離（ｄ）だけ移動した位置（Ｑ）に、敵セットタグを設定する。つまり、敵オブジェクトの配置位置を決定する。そして、ＣＰＵは、この敵セットタグに従って敵オブジェクトを配置する。    【効果】  状況に応じて適切にオブジェクトの配置位置を決定することができる。【選択図】  図２
2012252531.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置のコンピュータを、
地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、
前記地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、
前記配置位置決定手段によって決定された配置位置に前記オブジェクトを配置するオブジェクト配置手段として機能させる、画像処理プログラム。
【請求項２】
前記パラメータは前記地形の所定点を含み、
前記配置位置決定手段は、前記所定点と前記基準位置を結ぶ線分の長さに基づいて特定される位置を前記オブジェクトの配置位置として決定する、請求項１記載の画像処理プログラム。
【請求項３】
前記配置位置決定手段は、前記線分と、前記所定点を中心として当該線分の長さに応じて決定される角度をなすように設定される他の線上の位置を前記オブジェクトの配置位置として決定する、請求項２記載の画像処理プログラム。
【請求項４】
前記配置位置決定手段は、前記線分と、前記所定点を中心として当該線分の長さに応じて決定される角度をなすように設定される他の線分の端部を前記オブジェクトの配置位置として決定する、請求項２または３記載の画像処理プログラム。
【請求項５】
前記角度は、前記線分の長さが大きい程、小さくなる、請求項３または４記載の画像処理プログラム。
【請求項６】
前記パラメータは前記地形の高さをさらに含む、請求項２ないし５のいずれかに記載の画像処理プログラム。
【請求項７】
前記配置位置決定手段は、前記基準位置における地形の高さと所定の関係にある高さの地形上の位置を前記オブジェクトの配置位置として決定する、請求項６記載の画像処理プログラム。
【請求項８】
前記地形は、曲線のコースを含み、
前記地形の所定点は、前記曲線のコースを規定する中心点であり、
前記基準位置は、前記曲線のコース上に設定される、請求項２ないし７のいずれかに記載の画像処理プログラム。
【請求項９】
前記地形は、渦巻状に形成される曲線のコースを含む、請求項８記載の画像処理プログラム。
【請求項１０】
前記渦巻状に形成された曲線のコースは、中心に向かうに従って高さを変化される、請求項９記載の画像処理プログラム。
【請求項１１】
前記オブジェクトはノンプレイヤオブジェクトであり、
前記基準位置は、プレイヤオブジェクトの現在位置であり、
前記配置位置決定手段は、前記プレイヤオブジェクトの現在の移動方向に沿って所定の間隔を有する位置に前記ノンプレイヤオブジェクトの配置位置を決定する、請求項１ないし１０のいずれかに記載の画像処理プログラム。
【請求項１２】
地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、
前記地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、
前記配置位置決定手段によって決定された配置位置に前記オブジェクトを配置するオブジェクト配置手段を備える、画像処理装置。
【請求項１３】
画像処理装置の画像処理方法であって、
（ａ）地形が設定された仮想空間を仮想カメラから撮影した画像を出力し、
（ｂ）前記地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定し、
（ｃ）前記ステップ（ｂ）によって決定された配置位置に前記オブジェクトを配置する、画像処理方法。
【請求項１４】
地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、
前記地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、
前記配置位置決定手段によって決定された配置位置に前記オブジェクトを配置するオブジェクト配置手段を備える、画像処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムに関し、特にたとえば、オブジェクトを配置および表示する、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムに関する。
【背景技術】
【０００２】
従来、仮想空間内にオブジェクトを配置し、それを仮想カメラから撮影した画像を表示する技術が知られている。たとえば、特許文献１には、三次元仮想空間内にプレーヤキャラクターとエネミーキャラクターおよび視点を配置し、該視点から見た、ある視方向におけるプレーヤキャラクターとエネミーキャラクターの画像を生成するゲーム情報処理装置が開示されている。
【特許文献１】特開２００５−３１９２２０［A63F 13/00］
【発明の概要】
【発明が解決しようとする課題】
【０００３】
この特許文献１のゲーム情報処理装置では、プレーヤキャラクターやエネミーキャラクターを仮想空間内のどの位置に配置するかについて明確に開示されていないが、従来は、予め定められた位置に配置するか、ランダムに決定された位置に配置するような手法が採られていた。しかし、このような手法では、前者の場合には、同じ場面では、エネミーキャラクターが出現する位置が分かっているため、ゲームが単調になってしまう。また、後者の場合には、エネミーキャラクターを配置する位置が、プレーヤキャラクターから離れ過ぎたり近過ぎたりする場合がある。したがって、背景技術では、状況に応じて適切な位置にオブジェクトを配置するのが難しいという問題があった。
【０００４】
それゆえに、この発明の主たる目的は、新規な、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを提供することである。
【０００５】
また、この発明の他の目的は、オブジェクトの配置位置を状況に応じて適切に決定することができる、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを提供することである。
【課題を解決するための手段】
【０００６】
第１の発明は、画像処理装置のコンピュータを、画像出力手段と、配置位置決定手段と、オブジェクト配置手段として機能させる。画像出力手段は、地形が設定された仮想空間を仮想カメラから撮影した画像を出力する。配置位置決定手段は、地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する。オブジェクト配置手段は、配置位置決定手段によって決定された配置位置にオブジェクトを配置する。
【０００７】
第１の発明によれば、地形に規定されるパラメータと所定の基準位置に基づいてオブジェクトの配置位置を決定するので、周囲の環境などの状況に応じて適切にオブジェクトの配置位置を決定することができる。
【０００８】
第２の発明は、第１の発明に従属し、パラメータは地形の所定点を含み、配置位置決定手段は、所定点と基準位置を結ぶ線分の長さに基づいて特定される位置をオブジェクトの配置位置として決定する。
【０００９】
第２の発明によれば、線分の長さに基づいてオブジェクトの配置位置を決定するので、所定点と基準位置を結ぶ線分の長さに応じて適切にオブジェクトの配置位置を決定することができる。
【００１０】
第３の発明は、第２の発明に従属し、配置位置決定手段は、線分と、所定点を中心として当該線分の長さに応じて決定される角度をなすように設定される他の線上の位置をオブジェクトの配置位置として決定する。
【００１１】
第３の発明によれば、線分の長さに応じて決定される角度をなす他の線上の位置にオブジェクトの配置位置を決定することができる。したがって、例えば、所定の半径によって規定される曲線上にオブジェクトの配置位置を決定するような場合に好適である。
【００１２】
第４の発明は、第２または第３の発明に従属し、配置位置決定手段は、線分と、所定点を中心として当該線分の長さに応じて決定される角度をなすように設定される他の線分の端部をオブジェクトの配置位置として決定する。
【００１３】
第４の発明によれば、線分の長さとそれに応じて決定される角度に基づいて、オブジェクトの配置位置を決定することができる。したがって、円のような所定の半径を有する円周上にオブジェクトを配置するような場合に好適である。
【００１４】
第５の発明は、第３または第４の発明に従属し、角度は、線分の長さが大きい程、小さくなる。
【００１５】
第５の発明によれば、線分の長さが大きいほど、角度を小さくするので、例えば、基準点を有する曲線上にオブジェクトを配置する場合に、線分の長さに関わらず、曲線上における基準点とオブジェクトの配置位置との距離がほぼ一定になるように設定することができる。
【００１６】
第６の発明は、第２ないし第５の発明のいずれかに従属し、パラメータは地形の高さをさらに含む。
【００１７】
第６の発明によれば、地形の高さを考慮してオブジェクトの配置位置を決定するので、状況に応じて適切にオブジェクトの配置位置を決定することができる。
【００１８】
第７の発明は、第６の発明に従属し、配置位置決定手段は、基準位置における地形の高さと所定の関係にある高さの地形上の位置をオブジェクトの配置位置として決定する。
【００１９】
第７の発明によれば、基準位置の高さをさらに考慮するので、状況に応じて適切にオブジェクトの配置位置を決定することができる。
【００２０】
第８の発明は、第２ないし第７の発明のいずれかに従属し、地形は、曲線のコースを含み、地形の所定点は、曲線のコースを規定する中心点であり、基準位置は、曲線のコース上に設定される。
【００２１】
第８の発明によれば、曲線のコース上の基準位置に応じて適切にオブジェクトを配置することができる。また、曲線のコースを規定する中心点と曲線上の位置の位置関係に応じてオブジェクトの配置位置を決定するので、曲線のようなコース上にオブジェクトの配置位置を設定する際の処理を容易にすることができる。
【００２２】
第９の発明は、第８の発明に従属し、地形は、渦巻状に形成される曲線のコースを含む。たとえば、コース上に設定される基準位置が変化すると、所定点と基準位置を結ぶ線分が変化し、これに基づいてオブジェクトの配置位置が決定される。
【００２３】
第９の発明によれば、所定点と基準位置の位置関係に応じて適切にオブジェクトの配置位置を決定することができる。また、所定点と基準位置を結ぶ線分、すなわち渦巻状に形成される曲線の半径に応じてオブジェクトの配置位置を決定するので、所定の半径に従って形成される渦巻状の曲線のようなコース上にオブジェクトの配置位置を決定する際の処理を容易にすることができる。
【００２４】
第１０の発明は、第９の発明に従属し、渦巻状に形成された曲線のコースは、中心に向かうに従って高さを変化される。
【００２５】
第１０の発明によれば、高さも考慮した位置関係に応じて適切にオブジェクトの配置位置を決定することができる。したがって、曲線のコースを進むにしたがってその高さが次第に大きく（または小さく）なるようなコースにオブジェクトを配置するような場合に好適である。
【００２６】
第１１の発明は、第１ないし第１０の発明のいずれかに従属し、オブジェクトは敵オブジェクトやアイテムオブジェクトのようなノンプレイヤオブジェクトであり、基準位置は、プレイヤオブジェクトの現在位置であり、配置位置決定手段は、プレイヤオブジェクトの現在の移動方向に沿って所定の間隔を有する位置にノンプレイヤオブジェクトの配置位置を決定する。
【００２７】
第１１の発明によれば、プレイヤオブジェクトの現在位置および現在の移動方向に応じて、適切にノンプレイヤオブジェクトの配置位置を決定することができる。
【００２８】
第１２の発明は、地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、配置位置決定手段によって決定された配置位置にオブジェクトを配置するオブジェクト配置手段を備える、画像処理装置である。
【００２９】
第１３の発明は、画像処理装置の画像処理方法であって、（ａ）地形が設定された仮想空間を仮想カメラから撮影した画像を出力し、（ｂ）地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定し、そして（ｃ）ステップ（ｂ）によって決定された配置位置にオブジェクトを配置する、画像処理方法である。
【００３０】
第１４の発明は、地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、配置位置決定手段によって決定された配置位置にオブジェクトを配置するオブジェクト配置手段を備える、画像処理システムである。
【００３１】
第１２ないし第１４の発明においても、第１の発明と同様に、状況に応じて適切にオブジェクトの配置位置を決定することができる。
【発明の効果】
【００３２】
この発明によれば、仮想空間に設定された地形に規定されたパラメータと基準位置に基づいて、オブジェクトの配置位置を決定するので、状況に応じて適切にオブジェクトの配置位置を決定することができる。
【００３３】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００３４】
【図１】図１はこの発明のゲームシステムの一実施例を示す図解図である。
【図２】図２は図１に示すゲームシステムの電気的な構成を示すブロック図である。
【図３】図３は図１に示す第１コントローラの外観を説明するための図解図である。
【図４】図４は図１に示すジャイロユニットを接続した第１コントローラおよびジャイロユニットの外観を説明するための図解図である。
【図５】図５は図１に示す第２コントローラの外観を説明するための図解図である。
【図６】図６はプレイヤがコントローラを操作する様子を示す図解図である。
【図７】図７は図１に示す第１コントローラ、ジャイロユニットおよび第２コントローラが接続された状態の電気的な構成を示すブロック図である。
【図８】図８は図１に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図９】図９は対象画像を含む撮像画像の一例を示す図解図である。
【図１０】図１０は図１に示すモニタに表示されるゲーム画面の一例を示す図解図である。
【図１１】図１１は仮想ゲーム空間に設けられる複数の円形状の曲線のコースで形成された地形を上方から見た場合の図解図である。
【図１２】図１２は図１に示すモニタに表示されるゲーム画面の他の例を示す図解図である。
【図１３】図１３は図１２に示すゲーム画面に表示された渦巻状の曲線のコースで形成された地形を上方から見た場合の図解図および高さを考慮した敵セットタグの設定方法を説明するための図解図である。
【図１４】図１４は図２に示すメインメモリのメモリマップの一例を示す図解図である。
【図１５】図１５は図２に示すＣＰＵのゲーム全体処理のフロー図である。
【図１６】図１６は図２に示すＣＰＵの敵配置位置決定処理のフロー図である。
【図１７】図１７は敵オブジェクトを出現させる地形の他の例を示す図解図である。
【発明を実施するための形態】
【００３５】
図１を参照して、この発明の一実施例であるゲームシステム１０は、画像処理装置としても機能するビデオゲーム装置（以下、単に「ゲーム装置」という。）１２および第１コントローラ２２を含む。なお、図示は省略するが、この実施例のゲーム装置１２は、最大４つの第１コントローラ２２と通信可能に設計されている。また、ゲーム装置１２と各第１コントローラ２２とは、無線によって接続される。たとえば、無線通信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。また、この実施例では、第１コントローラ２２には、ジャイロユニット２４が接続（連結）され、このジャイロセンサ２４に差し込みプラグ３６ａおよびケーブル３６ｂを介して第２コントローラ３６が接続されている。
【００３６】
なお、図示等は省略するが、ジャイロユニット２４を第１コントローラ２２に装着しない場合には、差し込みプラグ３６ａおよびケーブル３６ｂを介して第２コントローラ３６を第１コントローラ２２に接続することもできる。
【００３７】
ジャイロユニット２４は、第１コントローラ２２に接続されることで、第１コントローラ２２と物理的および電気的に結合される。したがって、第１コントローラ２２に装着（一体化）されたジャイロユニット２４からは、第１コントローラ２２の角速度を示す角速度データが出力され、第１コントローラ２２に与えられる。
【００３８】
また、第２コントローラ３６の操作データないし入力データは、ケーブル３６ｂ、差し込みプラグ２６ｂおよびジャイロユニット２４を介して第１コントローラ２２に与えられる。
【００３９】
したがって、第１コントローラ２２は、第１コントローラ２２自身の操作データないし入力データのみならず、ジャイロユニット２４からの角速度データおよび第２コントローラ３６からの操作データないし入力データをゲーム装置１２に送信する。
【００４０】
なお、ジャイロユニット２４を第１コントローラ２２に装着しない場合には、第２コントローラ３６の操作データないし入力データはケーブル３６ｂ、差し込みプラグ３６ａを介して第１コントローラ２２に与えられる。
【００４１】
図１に戻って、ゲーム装置１２は、略直方体のハウジング１４を含み、ハウジング１４の前面にはディスクスロット１６が設けられる。ディスクスロット１６から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が挿入されて、ハウジング１４内のディスクドライブ５４（図２参照）に装着される。図示は省略するが、ディスクスロット１６の周囲には、ＬＥＤと導光板とが配置され、様々な処理に応答させて、ディスクスロット１６を点灯または点滅させることが可能である。
【００４２】
また、ゲーム装置１２のハウジング１４の前面であり、その上部には、電源ボタン２０ａおよびリセットボタン２０ｂが設けられ、その下部には、イジェクトボタン２０ｃが設けられる。さらに、リセットボタン２０ｂとイジェクトボタン２０ｃとの間であり、ディスクスロット１６の近傍には、外部メモリカード用コネクタカバー２８が設けられる。この外部メモリカード用コネクタカバー２８の内側には、外部メモリカード用コネクタ６２（図２参照）が設けられ、図示しない外部メモリカード（以下、単に「メモリカード」という。）が挿入される。メモリカードは、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置１２の内部に設けられるフラッシュメモリ４４（図２参照）のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置１２では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカードには当該他のアプリケーションのデータを保存することができる。
【００４３】
なお、メモリカードとしては、汎用のＳＤカードを用いることができるが、メモリスティックやマルチメディアカード（登録商標）のような他の汎用のメモリカードを用いることもできる。
【００４４】
図１では省略するが、ゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ５８（図２参照）が設けられ、そのＡＶコネクタ５８を用いて、ＡＶケーブル３２ａを通してゲーム装置１２にモニタ３４およびスピーカ３４ａを接続する。このモニタ３４およびスピーカ３４ａは典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２ａによって、ゲーム装置１２からの映像信号がカラーテレビのビデオ入力端子に入力され、ゲーム装置１２からの音声信号が音声入力端子に入力される。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ３４の周辺（この実施例では、モニタ３４の上側）には、２つの赤外ＬＥＤ（マーカ）３４０ｍ，３４０ｎを備えるマーカ部３４ｂが設けられる。このマーカ部３４ｂは、電源ケーブル３２ｂを通してゲーム装置１２に接続される。したがって、マーカ部３４ｂには、ゲーム装置１２から電源が供給される。これによって、マーカ３４０ｍ，３４０ｎは発光し、それぞれモニタ３４の前方に向けて赤外光を出力する。
【００４５】
なお、ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置１２は、家庭用電源（商用電源）を、駆動に適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００４６】
このゲームシステム１０において、ユーザまたはプレイヤがゲーム（またはゲームに限らず、他のアプリケーション）をプレイするために、ユーザはまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）のプログラムを記録している適宜の光ディスク１８を選択し、その光ディスク１８をゲーム装置１２のディスクドライブ５４にローディングする。応じて、ゲーム装置１２がその光ディスク１８に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置１２に入力を与えるために第１コントローラ２２を操作する。たとえば、入力手段２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段２６に対する操作以外にも、第１コントローラ２２自体を動かすことによって、動画オブジェクト（プレイヤオブジェクト）を異なる方向に移動させ、または３Ｄのゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。
【００４７】
ただし、ビデオゲームや他のアプリケーションのプログラムは、ゲーム装置１２の内部メモリ（フラッシュメモリ４４（図２参照））に記憶（インストール）しておき、当該内部メモリから実行するようにしてもよい。かかる場合には，光ディスク１８のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
【００４８】
図２は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。図示は省略するが、ハウジング１４内の各コンポーネントは、プリント基板に実装される。図２に示すように、ゲーム装置１２には、ＣＰＵ４０が設けられ、ゲームプロセッサとして機能する。また、ＣＰＵ４０には、システムＬＳＩ４２が接続される。このシステムＬＳＩ４２には、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８、ディスクドライブ５４およびＡＶ  ＩＣ５６が接続される。
【００４９】
外部メインメモリ４６は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、ＣＰＵ４０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ４８は、いわゆるブートＲＯＭであり、ゲーム装置１２の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ５４は、光ディスク１８からプログラム，画像データやサウンドデータ等を読み出し、ＣＰＵ４０の制御の下で、後述する内部メインメモリ４２ｅまたは外部メインメモリ４６に書き込む。
【００５０】
システムＬＳＩ４２には、入出力プロセッサ４２ａ、ＧＰＵ(Graphics Processor Unit)４２ｂ，ＤＳＰ(Digital Signal Processor)４２ｃ，ＶＲＡＭ４２ｄおよび内部メインメモリ４２ｅが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ（Ｉ／Ｏプロセッサ）４２ａは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後述する。
【００５１】
ＧＰＵ４２ｂは、描画手段の一部を形成し、ＣＰＵ４０からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵ４０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ４２ｂに与える。
【００５２】
図示は省略するが、上述したように、ＧＰＵ４２ｂにはＶＲＡＭ４２ｄが接続される。ＧＰＵ４２ｂが作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンデータやテクスチャデータなどのデータ）は、ＧＰＵ４２ｂがＶＲＡＭ４２ｄにアクセスして取得する。ただし、ＣＰＵ４０は、描画に必要な画像データを、ＧＰＵ４２ｂを介してＶＲＡＭ４２ｄに書き込む。ＧＰＵ４２ｂは、ＶＲＡＭ４２ｄにアクセスして描画のためのゲーム画像データを作成する。
【００５３】
なお、この実施例では、ＧＰＵ４２ｂがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、ＧＰＵ４２ｂは当該任意のアプリケーションについての画像データを生成する。
【００５４】
また、ＤＳＰ４２ｃは、オーディオプロセッサとして機能し、内部メインメモリ４２ｅや外部メインメモリ４６に記憶されるサウンドデータや音波形（音色）データを用いて、スピーカ３４ａから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【００５５】
上述のように生成されたゲーム画像データおよびオーディオデータは、ＡＶ  ＩＣ５６によって読み出され、ＡＶコネクタ５８を介してモニタ３４およびスピーカ３４ａに出力される。したがって、ゲーム画面がモニタ３４に表示され、ゲームに必要な音（音楽）がスピーカ３４ａから出力される。
【００５６】
また、入出力プロセッサ４２ａには、フラッシュメモリ４４、無線通信モジュール５０および無線コントローラモジュール５２が接続されるとともに、拡張コネクタ６０およびメモリカード用コネクタ６２が接続される。また、無線通信モジュール５０にはアンテナ５０ａが接続され、無線コントローラモジュール５２にはアンテナ５２ａが接続される。
【００５７】
図示は省略するが、入出力プロセッサ４２ａは、無線通信モジュール５０を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ４２ａは、定期的にフラッシュメモリ４４にアクセスし、ネットワークへ送信する必要があるデータ（「送信データ」とする）の有無を検出し、当該送信データが有る場合には、無線通信モジュール５０およびアンテナ５０ａを介してネットワークに送信する。また、入出力プロセッサ４２ａは、他のゲーム装置から送信されるデータ（「受信データ」とする）を、ネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、当該受信データをフラッシュメモリ４４に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ４２ａは、ダウンロードサーバからダウンロードしたデータ（ダウンロードデータとする）をネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、そのダウンロードデータをフラッシュメモリ４４に記憶する。
【００５８】
また、入出力プロセッサ４２ａは、第１コントローラ２２から送信されるコントローラデータをアンテナ５２ａおよび無線コントローラモジュール５２を介して受信し、内部メインメモリ４２ｅまたは外部メインメモリ４６のバッファ領域に記憶（一時記憶）する。コントローラデータは、ＣＰＵ４０の処理（たとえば、ゲーム処理）によって利用された後、バッファ領域から消去される。
【００５９】
なお、この実施例では、上述したように、無線コントローラモジュール５２は、Ｂｌｕｅｔｏｏｔｈ規格に従って第１コントローラ２２との間で通信を行う。また、図２では、簡単のため、ジャイロユニット２４および第２コントローラ３６は省略してある。
【００６０】
さらに、入出力プロセッサ４２ａには、拡張コネクタ６０およびメモリカード用コネクタ６２が接続される。拡張コネクタ６０は、ＵＳＢやＳＣＳＩのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、第１コントローラ２２および第２コントローラ３６とは異なるコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ６０に有線ＬＡＮアダプタを接続し、無線通信モジュール５０に代えて当該有線ＬＡＮを利用することもできる。メモリカード用コネクタ６２には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ４２ａは、拡張コネクタ６０やメモリカード用コネクタ６２を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００６１】
詳細な説明は省略するが、図１にも示したように、ゲーム装置１２（ハウジング１４）には、電源ボタン２０ａ，リセットボタン２０ｂおよびイジェクトボタン２０ｃが設けられる。電源ボタン２０ａは、システムＬＳＩ４２に接続される。この電源ボタン２０ａがオンされると、システムＬＳＩ４２には、ゲーム装置１２の各コンポーネントに図示しないＡＣアダプタを経て電源が供給され、通常の通電状態となるモード（「通常モード」と呼ぶこととする）が設定される。一方、電源ボタン２０ａがオフされると、システムＬＳＩ４２には、ゲーム装置１２の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード（以下、「スタンバイモード」という）が設定される。
【００６２】
この実施例では、スタンバイモードが設定された場合には、システムＬＳＩ４２は、入出力プロセッサ４２ａ、フラッシュメモリ４４、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８および無線通信モジュール５０、無線コントローラモジュール５２以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、ＣＰＵ４０がアプリケーションを実行することはない。
【００６３】
なお、システムＬＳＩ４２には、スタンバイモードにおいても電源が供給されるが、ＧＰＵ４２ｂ、ＤＳＰ４２ｃおよびＶＲＡＭ４２ｄへのクロックの供給を停止することにより、これらを駆動しないようにして、消費電力を低減するようにしてある。
【００６４】
また、図示は省略するが、ゲーム装置１２のハウジング１４内部には、ＣＰＵ４０やシステムＬＳＩ４２などのＩＣの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【００６５】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン２０ａがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【００６６】
また、通常モードとスタンバイモードとの切り替えは、第１コントローラ２２の電源スイッチ２６ｈ（図３（Ｂ）参照）のオン／オフの切り替えによって、遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール５２ａへの電源供給を行わない設定にしてもよい。
【００６７】
リセットボタン２０ｂもまた、システムＬＳＩ４２に接続される。リセットボタン２０ｂが押されると、システムＬＳＩ４２は、ゲーム装置１２の起動プログラムを再起動する。イジェクトボタン２０ｃは、ディスクドライブ５４に接続される。イジェクトボタン２０ｃが押されると、ディスクドライブ５４から光ディスク１８が排出される。
【００６８】
図３（Ａ）ないし図３（Ｅ）は、第１コントローラ２２の外観の一例を示す。図３（Ａ）は第１コントローラ２２の先端面を示し、図３（Ｂ）は第１コントローラ２２の上面を示し、図３（Ｃ）は第１コントローラ２２の右側面を示し、図３（Ｄ）は第１コントローラ２２の下面を示し、そして、図３（Ｅ）は第１コントローラ２２の後端面を示す。
【００６９】
図３（Ａ）ないし図３（Ｅ）を参照して、第１コントローラ２２は、たとえばプラスチック成型によって形成されたハウジング２２ａを有している。ハウジング２２ａは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング２２ａ（第１コントローラ２２）には、入力手段（複数のボタンないしスイッチ）２６が設けられる。具体的には、図３（Ｂ）に示すように、ハウジング２２ａの上面には、十字キー２６ａ，１ボタン２６ｂ，２ボタン２６ｃ，Ａボタン２６ｄ，−ボタン２６ｅ，ＨＯＭＥボタン２６ｆ，＋ボタン２６ｇおよび電源スイッチ２６ｈが設けられる。また、図３（Ｃ）および図３（Ｄ）に示すように、ハウジング２２ａの下面に傾斜面が形成されており、この傾斜面に、Ｂトリガースイッチ２６ｉが設けられる。
【００７０】
十字キー２６ａは、４方向プッシュスイッチであり、矢印で示す４つの方向、前（または上）、後ろ（または下）、右および左の操作部を含む。この操作部のいずれか１つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト（プレイヤキャラクタまたはプレイヤオブジェクト）の移動方向を指示したり、カーソルの移動方向を指示したり、単に方向を指示したりすることができる。
【００７１】
１ボタン２６ｂおよび２ボタン２６ｃは、それぞれ、押しボタンスイッチである。たとえば３次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、１ボタン２６ｂおよび２ボタン２６ｃは、Ａボタン２６ｄおよびＢトリガースイッチ２６ｉと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【００７２】
Ａボタンスイッチ２６ｄは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム（ＲＰＧ）やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Ａボタンスイッチ２６ｄは、第１コントローラ２２をポインティングデバイスとして用いる場合に、ゲーム画面上でポインタ（指示画像）が指示するアイコンないしボタン画像の決定を指示するために使用される。たとえば、アイコンやボタン画像が決定されると、これらに対応して予め設定されている指示ないし命令（コマンド）を入力することができる。
【００７３】
−ボタン２６ｅ、ＨＯＭＥボタン２６ｆ、＋ボタン２６ｇおよび電源スイッチ２６ｈもまた、押しボタンスイッチである。−ボタン２６ｅは、ゲームモードを選択するために使用される。ＨＯＭＥボタン２６ｆは、ゲームメニュー（メニュー画面）を表示するために使用される。＋ボタン２６ｇは、ゲームを開始（再開）したり、一時停止したりするなどのために使用される。電源スイッチ２６ｈは、ゲーム装置１２の電源を遠隔操作によってオン／オフするために使用される。
【００７４】
なお、この実施例では、第１コントローラ２２自体をオン／オフするための電源スイッチは設けておらず、第１コントローラ２２の入力手段２６のいずれかを操作することによって第１コントローラ２２はオンとなり、一定時間（たとえば、３０秒）以上操作しなければ自動的にオフとなるようにしてある。
【００７５】
Ｂトリガースイッチ２６ｉもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、第１コントローラ２２で選択した位置を指定したりするために使用される。また、Ｂトリガースイッチ２６ｉを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Ｂトリガースイッチ２６ｉは、通常のＢボタンと同様に機能し、Ａボタン２６ｄによって決定したアクションやコマンドなどを取り消すなどのために使用される。
【００７６】
また、図３（Ｅ）に示すように、ハウジング２２ａの後端面にコネクタ２２ｂが設けられ、また、図３（Ｂ）に示すように、ハウジング２２ａの上面であり、後端面側にはインジケータ２２ｃが設けられる。この実施例では、コネクタ２２ｂは、主として、ジャイロユニット２４を接続するために設けられる。インジケータ２２ｃは、たとえば、４つのＬＥＤで構成される。たとえば、インジケータ２２ｃでは、４つのうちのいずれか１つを点灯させることにより、点灯したＬＥＤに応じて、第１コントローラ２２の識別情報（コントローラ番号）を示すことができる。また、インジケータ２２ｃでは、点灯させるＬＥＤの個数によって第１コントローラ２２の電池残量を示すこともできる。
【００７７】
さらに、第１コントローラ２２は、撮像情報演算部８０（図７参照）を有しており、図３（Ａ）に示すように、ハウジング２２ａの先端面には撮像情報演算部８０の光入射口２２ｄが設けられる。また、第１コントローラ２２は、スピーカ８６（図７参照）を有しており、このスピーカ８６は、図３（Ｂ）に示すように、ハウジング２２ａの上面であり、１ボタン２６ｂとＨＯＭＥボタン２６ｆとの間に設けられる音抜き孔２２ｅに対応して、ハウジング２２ａ内部に設けられる。
【００７８】
なお、図３（Ａ）ないし図３（Ｅ）に示した第１コントローラ２２の形状や、各入力手段２６の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【００７９】
図４（Ａ）は、図１に示したように、第１コントローラ２２にジャイロユニット２４を接続した状態を示す図解図である。ジャイロユニット２４は、第１コントローラ２２の後端面側（インジケータ２２ｃ側）に接続される。図４（Ｂ）に示すように、ジャイロユニット２４は、第１コントローラ２２と同様に、プラスチック成型によって形成されたハウジング２４ａを有している。ハウジング２４ａは、略立方体形状であり、第１コントローラ２２に接続される側の面に、第１コントローラ２２のコネクタ２２ｂに連結される差し込みプラグ２４ｂが設けられる。また、図４（Ｃ）に示すように、この差し込みプラグ２４が設けられる面の反対側の面には、コネクタ２４ｃが設けられる。詳細な説明は省略するが、ジャイロユニット２４が第１コントローラ２２に連結させると、ロック機構によって、その連結状態が維持される。この連結状態は、ジャイロユニット２４の両側面に設けられた解除ボタン２４ｄが押されると、解除される。したがって、第１コントローラ２２にジャイロユニット２４を着脱することが可能である。
【００８０】
図５には第２コントローラ３６の本体の外観の一例が示される。図５（Ａ）は、第２コントローラ３６を上面後方から見た斜視図であり、図５（Ｂ）は、第２コントローラ３６を下面前方から見た斜視図である。なお、図５では、第２コントローラ３６の差し込みプラグ３６ａおよびケーブル３６ｂは省略されている。この第２コントローラ３６は、たとえばプラスチック成型によって形成されたハウジング３６ｃを有している。図５（Ａ）および（Ｂ）に示すように、ハウジング３６ｃは、平面視では、前後方向（Ｚ軸方向）に略細長い楕円形状を有し、後端側の左右方向（Ｘ軸方向）の幅が先端側のそれよりも狭くされている。また、ハウジング３６ｃは、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している。ハウジング３６ｃは、第１コントローラ２２と同様に、片手で把持可能な大きさであるが、長手方向（Ｚ軸方向）の長さは、第１コントローラ２２のハウジング２２ａよりもやや短くされている。この第２コントローラ３６でも、プレイヤは、ボタンやスティックを操作することと、第２コントローラ３６自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【００８１】
ハウジング３６ｃの上面の先端側には、アナログジョイスティック１００ａが設けられる。ハウジング３６ｃの先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向（図５に示すＹ軸方向）に並べて、Ｃボタン１００ｂおよびＺボタン１００ｃが設けられる。アナログジョイスティック１０ａおよび各ボタン１００ｂ，１００ｃには、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第２コントローラ３６に設けられるアナログジョイスティック１００ａおよび各ボタン１００ｂ，１００ｃは、包括的に入力手段１００として示されることもある。
【００８２】
このゲームシステム１０では、ボタン操作だけでなく、第１コントローラ２２自体や第２コントローラ３６自体を動かすことによっても、ゲームなどのアプリケーションに対する入力を行うことができる。ゲームをプレイする際には、たとえば図６に示すように、プレイヤは、その右手で第１コントローラ２２を持ち、その左手で第２コントローラ３６を持つ。また、図面では分かりにくいが、第１コントローラ２２の後端面側には、ストラップ３８が装着されており、このストラップ３８がプレイヤの右手の手首に掛けられる。したがって、プレイ中に第１コントローラ２２が離脱するのが防止される。
【００８３】
上述したように、第１コントローラ２２には３軸方向の加速度を検出する加速度センサ７４が内蔵され、第２コントローラ３６にも同様の加速度センサ１０２が内蔵されている。第１コントローラ２２および第２コントローラ３６がそれぞれプレイヤによって動かされると、加速度センサ８４および加速度センサ９０によって、それぞれのコントローラ自身の動きを示す３軸方向（図４、図５参照）の加速度値が検出される。また、この実施例では、第１コントローラ２２には、ジャイロユニット２４が装着されているため、第１コントローラ２２自身の動きを示す３軸周り（図４参照）の角速度値がさらに検出される。
【００８４】
これらの検出値に対応するデータは、上述のコントローラデータに含まれてゲーム装置１２に送信される。ゲーム装置１２では、コントローラ１４からのコントローラデータは、アンテナ５２ａおよび無線コントローラモジュール５２を介して受信され、受信されたコントローラデータは、入出力プロセッサ４２ａによって、内部メインメモリ４２ｅまたは外部メインメモリ４６のバッファ領域に書き込まれる。ＣＰＵ４０は、内部メインメモリ４２ｅまたは外部メインメモリ４６のバッファ領域に格納されたコントローラデータを読み出し、このコントローラデータから検出値つまりコントローラ１４によって検出された加速度および／または角速度の値を復元する。
【００８５】
ＣＰＵ４４はまた、このような復元処理と並行して、復元された加速度から第１コントローラ２２や第２コントローラ３６の速度を計算する処理を実行してもよい。さらに並行して、計算された速度から第１コントローラ２２や第２コントローラ３６の移動距離ないし位置を求めることもできる。一方、復元された角速度からは、第１コントローラ２２の回転角が求まる。
【００８６】
なお、加速度を積算して速度を求めたり、角速度を積算して回転角を求めたりする際の初期値（積分定数）は、たとえば、後述する撮像情報演算部８０のからの位置座標データに基づいて計算できる。位置座標データはまた、積算によって蓄積されていく誤差の修正にも用いることができる。
【００８７】
ゲーム処理は、こうして求められた加速度、速度、移動距離、角速度および回転角などの変数に基づいて実行される。したがって、上記の処理は全てを行わなくともよく、ゲーム処理に必要な変数を適宜算出すればよい。なお、角速度や回転角も、原理的には加速度から計算し得るが、そのためには、ゲームプログラムに複雑なルーチンが必要で、ＣＰＵ４４にも重い処理負荷がかかる。ジャイロユニット２４を利用することで、プログラム開発が容易になり、ＣＰＵ４０の処理負荷も軽減される。
【００８８】
図７は、第１コントローラ２２、ジャイロユニット２４および第２コントローラ３６の電気的な構成を示すブロック図である。この図７を参照して、第１コントローラ２２はプロセッサ７０を含み、このプロセッサ７０には、内部バス（図示せず）によって、コネクタ２２ｂ、入力手段２６、メモリ７２、加速度センサ７４、無線モジュール７６、撮像情報演算部８０、ＬＥＤ８２（インジケータ２２ｃ）、バイブレータ８４、スピーカ８６および電源回路８８が接続される。また、無線モジュール７６には、アンテナ７８が接続される。
【００８９】
なお、簡単のため、図７では省略するが、上述したように、インジケータ２２ｃは４つのＬＥＤ８２によって構成される。
【００９０】
プロセッサ７０は、第１コントローラ２２の全体制御を司り、入力手段２６、加速度センサ７４および撮像情報演算部８０によって入力された情報（入力情報）を、コントローラデータとして無線モジュール７６およびアンテナ７８を介してゲーム装置１２に送信（入力）する。このとき、プロセッサ７０は、メモリ７２を作業領域ないしバッファ領域として用いる。また、上述した入力手段２６（２６ａ−２６ｉ）からの操作信号（操作データ）は、プロセッサ７０に入力され、プロセッサ７０は操作データを一旦メモリ７２に記憶する。
【００９１】
加速度センサ７４は、図４に示すように、第１コントローラ２２の縦方向（Ｙ軸方向）、横方向（Ｘ軸方向）および前後方向（Ｚ軸方向）の３軸で各々の加速度を検出する。この加速度センサ７４は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【００９２】
たとえば、加速度センサ７４は、Ｘ軸，Ｙ軸，Ｚ軸の各々についての加速度（ａｘ，ａｙ，ａｚ）を検出し、検出した加速度のデータ（加速度データ）をプロセッサ７０に入力する。たとえば、加速度センサ７４は、各軸方向の加速度を、−２．０ｇ〜２．０ｇ（ｇは重力加速度である。以下、同じ。）の範囲で検出する。プロセッサ７０は、加速度センサ７４から与えられる加速度データを検出し、一旦メモリ７２に記憶する。したがって、検出された加速度に適宜な演算処理を施すことによって、第１コントローラ２２の傾きや回転、重力方向に対する加速度センサ７４の姿勢などを算出することができる。また、振り等によって第１コントローラ２２に加えられた動きについても同様に算出することができる。
【００９３】
プロセッサ７０は、第１コントローラ２２の操作データ、第１コントローラ２２の加速度データ、後述するマーカ座標データ、後述する角速度データ、後述する第２コントローラの操作データおよび後述する第２コントローラの加速度データの少なくとも１つを含むコントローラデータを作成し、作成したコントローラデータを、ゲーム装置１２に送信する。
【００９４】
なお、図３（Ａ）−図３（Ｅ）では省略したが、この実施例では、加速度センサ７４は、ハウジング２２ａ内部の基板上の十字キー２６ａが配置される付近に設けられる。
【００９５】
無線モジュール７６は、たとえばＢｌｕｅｔｏｏｔｈ（登録商標）の技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ７８から放射する。つまり、コントローラデータは、無線モジュール７６によって微弱電波信号に変調されてアンテナ７８（第１コントローラ２２）から送信される。この微弱電波信号が上述したゲーム装置１２に設けられた無線コントローラモジュール５２によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置１２（ＣＰＵ４０）は、第１コントローラ２２からのコントローラデータを取得することができる。そして、ＣＰＵ４０は、取得したコントローラデータとアプリケーションプログラム（ゲームプログラム）とに従ってアプリケーションの処理（ゲーム処理）を行う。
【００９６】
さらに、上述したように、第１コントローラ２２には、撮像情報演算部８０が設けられる。この撮像情報演算部８０は、赤外線フィルタ８０ａ、レンズ８０ｂ、撮像素子８０ｃおよび画像処理回路８０ｄによって構成される。赤外線フィルタ８０ａは、第１コントローラ２２の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ３４の表示画面近傍（周辺）に配置されるマーカ３４０ｍおよび３４０ｎは、モニタ３４の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ８０ａを設けることによってマーカ３４０ｍおよび３４０ｎの画像をより正確に撮像することができる。レンズ８０ｂは、赤外線フィルタ８０ａを透過した赤外線を集光して撮像素子８０ｃへ出射する。撮像素子８０ｃは、たとえばＣＭＯＳセンサあるいはＣＣＤのような固体撮像素子であり、レンズ８０ｂによって集光された赤外線を撮像する。したがって、撮像素子８０ｃは、赤外線フィルタ８０ａを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子８０ｃによって撮像された画像を撮像画像と呼ぶ。撮像素子８０ｃによって生成された画像データは、画像処理回路８０ｄで処理される。画像処理回路８０ｄは、撮像画像内における撮像対象（マーカ３４０ｍおよび３４０ｎ）の位置を算出し、当該位置を示す各座標値を撮像データ（後述するマーカ座標データ）としてプロセッサ７０に出力する。なお、画像処理回路８０ｄにおける処理については後述する。
【００９７】
また、第１コントローラ２２には、ジャイロユニット２４が接続される。図５からも分かるように、差し込みプラグ２４ｂは、コネクタ２２ｂに接続される。差し込みプラグ２４ｂは信号線によって、マイコン９０に接続される。マイコン９０には、ジャイロセンサ９２が接続されるとともに、信号線によってコネクタ２４ｃが接続される。
【００９８】
ジャイロセンサ９２は、図４に示すように、第１コントローラ２２の縦方向の軸回り（Ｙ軸回り）、横方向の軸回り（Ｘ軸回り）および前後方向の軸回り（Ｚ軸回り）の３軸回りについての各々の角速度を検出する。ただし、Ｙ軸の回転はヨー角で表わされ、Ｘ軸の回転はピッチ角で表わされ、そして、Ｚ軸の回転はロール角で表わされる。このジャイロセンサ９２は、典型的には、圧電振動型のものを用いることができるが、他の方式のものを用いるようにしてもよい。
【００９９】
たとえば、ジャイロセンサ９２は、Ｘ軸，Ｙ軸，Ｚ軸の各々の軸周りについての角速度（ωｘ，ωｙ，ωｚ）を検出し、検出した角速度をマイコン９０に入力する。ただし、角速度は、マイコン９０に入力されるときに、アナログ信号からディジタルのデータに変換される。この実施例で使用するジャイロセンサ９２は、各軸についての角速度を０〜１５００ｄｐｓ（ｄｅｇｒｅｅ  ｐｅｒｃｅｎｔ  ｓｅｃｏｎｄ）の範囲で計測可能である。ただし、後述するこの実施例の仮想ゲームにおいては、ヨー角については、９００ｄｐｓ〜１５００ｄｐｓの範囲を計測範囲とし、ピッチ角とロール角とについては、０〜１５００ｄｐｓの範囲を計測範囲としてある。
【０１００】
なお、センサは、好ましい実施例ではジャイロセンサ（角速度センサ）であるが、たとえば加速度センサ、速度センサ、変位センサ、回転角センサなど、他のモーションセンサでもよい。モーションセンサ以外にも、傾斜センサ、イメージセンサ、光センサ、圧力センサ、磁気センサ、温度センサなどがあり、いずれのセンサを追加する場合でも、センサの検出対象を利用した操作が可能となる。いずれのセンサを用いた場合でも、従来操作装置に接続されていた他の装置をそのまま使用しながら、操作装置に当該センサを追加することができる。
【０１０１】
マイコン９０は、ジャイロセンサ９２から与えられる角速度を検出し、検出した角速度に対応する角速度データをマイコン９０に内蔵されるメモリ（図示せず）に一時記憶する。そして、マイコン９０は、メモリに一時記憶された角速度データを第１コントローラ２２（プロセッサ７０）に送信する。したがって、コントローラデータには、角速度データが含まれる場合がある。
【０１０２】
なお、この実施例では、マイコン９０は、角速度データをメモリに一時記憶し、或る程度まとめてプロセッサ７０に送信するようにしてあるが、メモリに一時記憶せずに、そのままプロセッサ７０に送信するようにしてもよい。
【０１０３】
また、第２コントローラ３６のハウジング３６ｃ内には加速度センサ１０２（図７）が設けられている。この加速度センサ１０２としては、第１コントローラ２２の加速度センサ７４と同様の加速度センサが適用される。具体的には、この実施例では３軸加速度センサが適用され、第２コントローラ３６の上下方向（Ｙ軸方向）、左右方向（Ｘ軸方向）および前後方向（Ｚ軸方向）の３軸方向のそれぞれで加速度を検知する。したがって、第１コントローラ２２の場合と同様に、検出された加速度に適宜な演算処理を施すことによって、第２コントローラ３６の傾きや回転、重力方向に対する加速度センサ１０２の姿勢などを算出することができる。また、振り等によって第２コントローラ３６に加えられた動きについても同様に算出することができる。
【０１０４】
また、第１コントローラ２２内に取替可能に収容されるバッテリ（図示せず）によって、電源が与えられる。ジャイロユニット２４には、コネクタ２２ｂおよび差し込みプラグ２４ｂを介してこの電源が供給される。さらに、第１コントローラ２２からジャイロユニット２４に供給された電源の一部が、コネクタ２４ｃ、差し込みプラグ３６ａおよびケーブル３６ｂを介して第２コントローラ３６に与えられる。
【０１０５】
上述したように、ビデオゲームシステム１０で第１コントローラ２２および第２コントローラ３６を用いてゲームをプレイする際、プレイヤは、一方の手（右手）で第１コントローラ２２を把持し、他方の手（左手）で第２コントローラ３６を把持する。ただし、ジャイロユニット２４は、第１コントローラ２２に装着されている。たとえば、ポインティングデバイスとして第１コントローラ２２を使用する場合には、プレイヤは、第１コントローラ２２の先端面（撮像情報演算部８０が撮像する光の入射口２２ｄ側）がマーカ３４０ｍおよび３４０ｎの方を向く状態で第１コントローラ２２を把持する。ただし、図１からも分かるように、マーカ３４０ｍおよび３４０ｎは、モニタ３４の画面の横方向と平行に配置されている。この状態で、プレイヤは、第１コントローラ２２が指示する画面上の位置を変更したり、第１コントローラ２２と各マーカ３４０ｍおよび３４０ｎとの距離を変更したりすることによってゲーム操作を行う。
【０１０６】
図８は、マーカ３４０ｍおよび３４０ｎと、第１コントローラ２２との視野角を説明するための図である。ただし、簡単のため、図８では、ジャイロユニット２４および第２コントローラ３６は省略してある。図８に示すように、マーカ３４０ｍおよび３４０ｎは、それぞれ、視野角θ１の範囲で赤外光を放射する。また、撮像情報演算部８０の撮像素子８０ｃは、第１コントローラ２２の視線方向を中心とした視野角θ２の範囲で入射する光を受光することができる。たとえば、マーカ３４０ｍおよび３４０ｎの視野角θ１は、共に３４°（半値角）であり、一方、撮像素子８０ｃの視野角θ２は４１°である。プレイヤは、撮像素子８０ｃが２つのマーカ３４０ｍおよび３４０ｎからの赤外光を受光することが可能な位置および向きとなるように、第１コントローラ２２を把持する。具体的には、撮像素子８０ｃの視野角θ２の中にマーカ３４０ｍおよび３４０ｎの少なくとも一方が存在し、かつ、マーカ３４０ｍまたは３４０ｎの少なくとも一方の視野角θ１の中に第１コントローラ２２が存在する状態となるように、プレイヤは第１コントローラ２２を把持する。この状態にあるとき、第１コントローラ２２は、マーカ３４０ｍおよび３４０ｎの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲で第１コントローラ２２の位置および向きを変化させることによってゲーム操作を行うことができる。
【０１０７】
なお、第１コントローラ２２の位置および向きがこの範囲外となった場合、ジャイロユニット２４で検出される角速度に基づいて第１コントローラ２２の位置および向きに基づいたゲーム操作を行う。したがって、以下では、上記範囲を「ポインティング操作可能範囲」と呼ぶ。
【０１０８】
ポインティング操作可能範囲内で第１コントローラ２２が把持される場合、撮像情報演算部８０によって各マーカ３４０ｍおよび３４０ｎの画像が撮像される。すなわち、撮像素子８０ｃによって得られる撮像画像には、撮像対象である各マーカ３４０ｍおよび３４０ｎの画像（対象画像）が含まれる。図９は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路８０ｄは、各マーカ３４０ｍおよび３４０ｎの撮像画像における位置を表す座標（マーカ座標）を算出する。
【０１０９】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路８０ｄは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路８０ｄは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である２つのマーカ３４０ｍおよび３４０ｎに対応する画像３４０ｍ’および３４０ｎ’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像である画像３４０ｍ’および３４０ｎ’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【０１１０】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路８０ｄは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子８０ｃの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子８０ｃによって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、マーカ座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。
【０１１１】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをＹ軸正方向とし、右向きをＸ軸正方向とする座標系（ＸＹ座標系）で表現されるものとする。
【０１１２】
また、対象画像が正しく検出される場合には、判定処理によって２つの高輝度部分が対象画像として判定されるので、２箇所のマーカ座標が算出される。画像処理回路８０ｄは、算出された２箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ（マーカ座標データ）は、上述したように、プロセッサ７０によってコントローラデータに含まれ、ゲーム装置１２に送信される。
【０１１３】
ゲーム装置１２（ＣＰＵ４０）は、受信したコントローラデータからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ３４の画面上における第１コントローラ２２の指示位置（指示座標）と、第１コントローラ２２からマーカ３４０ｍおよび３４０ｎまでの各距離とを算出することができる。具体的には、２つのマーカ座標の中点の位置から、第１コントローラ２２の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、第１コントローラ２２と、マーカ３４０ｍおよび３４０ｎとの距離に応じて変化するので、２つのマーカ座標間の距離を算出することによって、ゲーム装置１２は第１コントローラ２２と、マーカ３４０ｍおよび３４０ｎとの間の距離を把握できる。
【０１１４】
なお、上述したプロセッサ７０への各出力は、たとえば１／２００秒周期で実行される。したがって、任意の１／２００秒間に、入力手段２６からの操作データと、撮像情報演算部８０のからの位置座標データと、加速度センサ７４からの加速度データと、ジャイロセンサ９２からの角速度データと、入力手段１００からの操作データと、加速度センサ１０２からの加速度データとが、１回ずつプロセッサ７０に出力される。また、コントローラデータは、たとえば、１／２００秒毎に、ゲーム装置１２に送信される。無線コントローラモジュール５２は、コントローラ２２から所定周期（たとえば、１／２００秒）で送信されるコントローラデータを受信し、当該無線コントローラモジュール５２が備える図示しないバッファに蓄積する。その後、ゲーム装置１２では、ＣＰＵ４０の指示の下、入力プロセッサ４２ａによって、１フレーム（画面更新単位時間：１／６０秒）毎に、当該期間中に蓄積されたコントローラデータが読み出され、操作データバッファ５０２ａ（図１４参照）に記憶される。ＣＰＵ４０は、操作データバッファ５０２ａを参照して、コントローラデータに従ってゲーム処理を実行する。
【０１１５】
上述したようなゲームシステム１０では、仮想ゲームをプレイすることができる。図１０には、この実施例の仮想ゲームにおいて、モニタ３４に表示されるゲーム画面２００の一例が表示される。詳細な説明は省略するが、仮想ゲーム空間内に、地面オブジェクト、建物オブジェクトおよび地形オブジェクトのような背景オブジェクトが設けられるとともに、プレイヤオブジェクト２０２が配置される。また、アイテムオブジェクト（以下、単に「アイテム」という）や敵オブジェクト２１０なども必要に応じて仮想ゲーム空間に配置される。このような仮想ゲーム空間を仮想カメラ（図示せず）で撮影した画像がゲーム画面としてモニタ３４に表示される。以下、画面を表示する場合について同様である。
【０１１６】
図１０に示すように、ゲーム画面２００には、プレイヤオブジェクト２０２が画面中央からやや右下寄りに表示される。この実施例のプレイヤオブジェクト２０２は、右手で剣オブジェクト２０４を持ち、左手で盾オブジェクト２０６を持っている。また、ゲーム画面２００には、複数（ここでは、４体）の敵オブジェクト２１０が画面中央からやや上寄りに横一列に並んで表示される。このゲーム画面２００では、敵オブジェクト２１０が矢オブジェクトを放ち、それをプレイヤオブジェクト２０２が盾オブジェクト２０６で防御している様子が示される。
【０１１７】
図面では、分かり難いが、プレイヤオブジェクト２０２や敵オブジェクト２１０が存在する場所が背景として表示される。
【０１１８】
さらに、ゲーム画面２００の左上部には、プレイヤオブジェクト２０２の生命力（ライフ）を示す画像（ハート画像）２２０、盾オブジェクト２０６の防御力を示す画像２２２および所定のアイテムの所持数を示す画像２２４が表示される。また、ゲーム画面２００の左下部には、第２コントローラ３６の操作方法を示す画像２３０が表示される。そして、ゲーム画面２００の右端部に、第１コントローラ２２の操作方法を示す画像２４０が表示される。
【０１１９】
簡単に説明すると、第１コントローラ２２では、＋ボタン２６ｇを操作すると、地図（ゲームマップ）がモニタ３４に表示される。また、第１コントローラ２２では、Ｂトリガースイッチ２６ｉを操作すると、アイテムを選択および使用する画面がモニタ３４に表示される。
【０１２０】
なお、ゲーム画面２００には表示されていないが、ジャイロユニット２４が接続された第１コントローラ２２は、プレイヤオブジェククト２０２が持っている剣オブジェクト２０４に対応しており、第１コントローラ２２を振ると、その動きに連動して、剣オブジェクト２０４が動く。これによって、敵オブジェクト２１０や他のオブジェクト（図示せず）を切ることができる。詳細な説明は省略するが、剣オブジェクト２０４を用いて、敵オブジェクト２１０や他のオブジェクトを切る以外の動作を行うこともできる。
【０１２１】
なお、ジャイロユニット２４が接続された第１コントローラ２２の動きに連動して剣オブジェクト２０４が動くことについては、本願発明の本質的な内容でないため、その詳細な説明については省略する。たとえば、本件出願人が先に出願し、既に出願公開された特開２０１０−１４２５６１号公報に開示された技術を用いることができる。
【０１２２】
また、第２コントローラ３６では、Ｃボタン１００ｂを操作すると、プレイヤオブジェクト２０２に盾オブジェクト２０６で弾く動作をさせることができる。したがって、敵オブジェクト２１０が放った矢を盾オブジェクト２０６で弾くことがきる。また、Ｚボタン１００ｃを操作すると、プレイヤオブジェクト２０２に敵オブジェクト２１０を注目させることができる。たとえば、プレイヤオブジェクト２０２に敵オブジェクト２１０を注目させておけば、戦闘中に、プレイヤオブジェクト２０２が敵オブジェクト２１０を見失うことがない。
【０１２３】
なお、ゲーム画面２００に表示されていないが、第２コントローラ３６を振ることによっても、敵オブジェクト２１０や他のオブジェクトを切ることができる。詳細な説明は省略するが、第１コントローラ２２を振る場合と第２コントローラ３６を振る場合とでは、切り方（切る技）が異なる。
【０１２４】
この仮想ゲームでは、プレイヤの操作に従って、プレイヤオブジェクト２０２を移動させたり、剣オブジェクト２０４を振る動作や盾オブジェクト２０６で防御する動作などの所定の動作をさせたりする。これによって、プレイヤオブジェクト２０２は、敵オブジェクト２１０と闘ったり、敵オブジェクト２１０を倒したり、アイテムを取得したり、所定の場所に行ったりすることにより、予め用意されたステージをクリア（ステージクリア）し、最終的な目的を達成すると、ゲームクリアとなる。ただし、プレイヤオブジェクト２０２が、敵オブジェクト２１０に倒されると、ゲームオーバとなる。
【０１２５】
一般的に、このような仮想ゲームにおいては、敵オブジェクト２１０を配置する（出現させる）位置は、予め決定されていたり、敵オブジェクト２１０を配置する（出現させる）範囲においてランダムに決定されたりする。前者の場合には、同じ場面においては、敵オブジェクト２１０が出現する場所が分かっているため、仮想ゲームが単調になってしまう。また、後者の場合には、仮想ゲームが単調になることは避けられるが、プレイヤオブジェクト２０２からかなり離れている場所や近すぎる場所に敵オブジェクト２１０が出現される場合があり、敵オブジェクト２１０を出現させる位置が適切でない場合がある。つまり、周囲の環境などの状況に応じて適切な位置に敵オブジェクト２１０のようなオブジェクト（ノンプレイヤオブジェクト）を配置するのが困難であるという問題がある。
【０１２６】
そこで、この実施例では、地形に規定されるパラメータとプレイヤオブジェクト２０２の現在位置に応じて、オブジェクトの配置位置を決定することにより、状況に応じて適切にオブジェクトを配置するようにしてある。以下、敵オブジェクト２１０を配置する場合について具体的に説明する。
【０１２７】
図１１（Ａ）および図１１（Ｂ）には、仮想ゲーム空間内に設けられる複数の円形状の曲線のコース（リングのコース）で形成された地形が示される。ただし、各リングの径は異なる。また、ここでは、各コースの高さは同じまたはほぼ同じとする。各コースでは、プレイヤオブジェクト２０２は、たとえば、所定の進行方向（ここでは、反時計回り）に移動し、出現する敵オブジェクト２１０と闘う。ここで、「進行方向」は、コースにおいてプレイヤオブジェクト２０２が進行するべき方向（順路）を意味する。また、これ以降では、プレイヤオブジェクト２０２が実際に移動している方向ないしプレイヤオブジェクト２０２が向いている方向（視界の方向）を「移動方向」ということにする。
【０１２８】
なお、図１１（Ａ）および図１１（Ｂ）においては、進行方向と移動方向とが一致しているものとする。
【０１２９】
詳細な説明は省略するが、図１１（Ａ）および図１１（Ｂ）に示すように、仮想ゲーム空間では、横方向がＸ軸方向であり、縦方向がＹ軸方向であり、Ｘ軸およびＹ軸に対して垂直な方向がＺ軸方向である。また、たとえば、右方向がＸ軸のプラス方向であり、上方向がＹ軸のプラス方向であり、紙面に対して垂直上方向がＺ軸のプラス方向である。後述する図１３（Ａ）においても同じ。
【０１３０】
たとえば、図１１（Ａ）および図１１（Ｂ）に示すような地形では、プレイヤオブジェクト２０２は、最外周のコースから順に内周側に進む。プレイヤオブジェクト２０２は、各コースに配置した（出現された）敵オブジェクト２１０を全部または所定数以上倒すと、次のコースに進むことができる。そして、プレイヤオブジェクト２０２は、最内周のコースの敵オブジェクト２１０を全部または所定数以上倒すと、ボスの敵オブジェクト２１０と闘うことができる。そして、プレイヤオブジェクト２０２が、ボスの敵オブジェクト２１０を倒すと、たとえば、所定のアイテムを取得したり、他のコースが出現したりする。
【０１３１】
ただし、プレイヤオブジェクト２０２が最内周のコースに到達したときに、ボスの敵オブジェクト２１０と闘うようにすることもできる。また、ボスの敵オブジェクト２１０と闘わずに、所定のアイテムを取得したり、他のコースが出現したりしてもよい。これらは、ゲームプログラマや開発者によって任意に設定される事項である。
【０１３２】
なお、ここでは、プレイヤオブジェクト２０２は、最外周のコースから内周側に順次進むようにしてあるが、最内周のコースから外周側に順次進むようにしてもよい。また、プレイヤオブジェクト２０２の進行方向を反時計回りに設定してあるが、時計周りに設定してもよい。
【０１３３】
この実施例では、プレイヤオブジェクト２０２の現在位置Ｐに応じて適切に敵オブジェクト２１０などのオブジェクトを配置するために、外周側のコースまたは内周側のコースに拘わらず、プレイヤオブジェクト２０２の現在位置Ｐから所定距離ｄだけ離れた位置Ｑに、敵オブジェクト２１０を配置する（出現させる）ようにしてある。
【０１３４】
これは、プレイヤオブジェクト２０２が移動する場合に、外周側のコースおよび内周側のコースのいずれにおいても、所定の間隔（距離）ないしタイミングで敵オブジェクト２１０を出現させるためである。したがって、所定距離ｄは、直線距離ではなく、プレイヤオブジェクト２０２がコースに沿って移動した場合の距離（円弧状の曲線距離）である。
【０１３５】
また、この実施例では、コースには、敵オブジェクト２１０を出現させる位置Ｑを設定するためのレールＲが設定されており、このレールＲ上に、敵オブジェクト２１０を配置するためのタグ（以下、「敵セットタグ」と呼ぶ）Ｔが設定される。敵セットタグＴは、種類、総数、隊列情報およびセーブフラグを含む。図１１（Ａ）および図１１（Ｂ）では、レールＲを点線で示すとともに、敵セットタグＴを逆三角形で示してあるが、これらが、実際のゲーム画面２００に表示されることはない。以下、同じ。
【０１３６】
種類は、敵オブジェクト２１０を識別（特定）するための情報（敵ＩＤ）である。総数は、当該敵セットタグＴが配置された位置から出現させる敵オブジェクト２１０の最大数である。
【０１３７】
隊列情報は、一度に複数の敵オブジェクト２１０を出現させる場合に、当該複数の敵オブジェクト２１０によって作られる隊列の種類および当該隊列を構成する敵オブジェクト２１０の数である。たとえば、隊列の種類としては、縦長の列（一列または複数列）や横長の列（一列または複数列）などが該当する。また、隊列の種類が指定されていない場合には、たとえば、所定時間毎に、１体の敵オブジェクト２１０を出現させる。ただし、一度に仮想ゲーム空間に出現させる敵オブジェクト２１０の最大数（たとえば、２０）になった後では、敵オブジェクト２１０がプレイヤオブジェクト２０２に倒される度に、１体の敵オブジェクト２１０が出現される。または、仮想ゲーム空間内に存在する敵オブジェクト２１０の数が所定数以下になると、所定時間毎に、１体の敵オブジェクト２１０が出現される。
【０１３８】
セーブフラグは、当該敵セットタグＴに従って敵オブジェクト２１０を出現させるかどうかを判定するためのフラグである。このセーブフラグは、１ビットのレジスタで構成される。セーブフラグが成立（オン）であれば、レジスタにデータ値「１」が設定され、セーブフラグが不成立（オフ）であれば、レジスタにデータ値「０」が設定される。たとえば、当該敵セットタグＴに設定されたすべての敵オブジェクト２１０を出現させると、セーブフラグはオンされる。このセーブフラグがオンである状態が維持される場合には、その後、プレイヤオブジェクト２０２が同じ場所（位置Ｐ）に戻ってきたとしても、当該敵セットタグＴに従って敵オブジェクト２１０が出現されることはない。たとえば、ボスの敵オブジェクト２１０を倒した場合には、セーブフラグがオンである状態が維持される。一方、セーブフラグがリセット（オフ）される場合には、その後、プレイヤオブジェクト２０２が同じ場所に戻ってくると、再び当該敵セットタグＴに従って敵オブジェクト２１０が出現される。
【０１３９】
上述したように、外周側のコースまたは内周側のコースに拘わらず、所定の間隔ないしタイミングで、敵オブジェクト２１０を出現させる。このため、この実施例では、敵オブジェクト２１０を出現させる領域ないし範囲（以下、「領域Ｅ」という）において、敵オブジェクト２１０を出現させることが判断されると、プレイヤオブジェクト２０２の現在位置Ｐから当該プレイヤオブジェクト２０２の移動方向に所定距離ｄだけ離れた位置Ｑに敵セットタグＴを配置する。ただし、上述したように、敵セットタグＴは、コースに設定されたレールＲ上に配置される。
【０１４０】
ただし、敵オブジェクト２１０を出現させる領域Ｅとは、当該敵オブジェクト２１０を発生させることが設定された地形または場所（範囲）であり、その地形または場所（範囲）を囲む２次元の範囲で決定される。たとえば、図１１（Ａ）および図１１（Ｂ）に示す複数の円形状のリングのコースで形成される地形を囲む四角形（一点鎖線で示す）の範囲が、敵オブジェクト２１０を出現させる領域Ｅである。ただし、領域Ｅは、上記のような地形を囲む円形の範囲で設定されてもよい。後述する渦巻状の曲線のコースで形成された地形についても同様である。
【０１４１】
図１１（Ａ）に示すように、プレイヤオブジェクト２０２が最外周のコースに存在する場合には、プレイヤオブジェクト２０２の現在位置Ｐを基準として、この現在位置Ｐと当該地形ないしコースを規定する中心の点Ｏとの距離ｒと、所定距離ｄとから、角度α（ここでは、α１）を算出する。具体的には、数１に従って算出される。
【０１４２】
［数１］
α＝π×ｄ÷２πｒ＝ｄ／（２ｒ）
ただし、半径ｒは数２に従って算出される。数２では、点Ｏの３次元座標を（ｘ１，ｙ１，ｚ１）とし、プレイヤオブジェクト２０２の現在位置Ｐの３次元座標を（ｘ２，ｙ２，ｚ２）としてある。さらに、角度αを計算する際には、地形の高さについては考慮しないため、ｚ座標は省略される。
【０１４３】
［数２］
ｒ＝√｛（ｘ１−ｘ２）２＋（ｙ１−ｙ２）２｝
図１１（Ａ）に示す例では（図１１（Ｂ）も同じ）、プレイヤオブジェクト２０２がレールＲ上に存在するように記載してあるが、コースには幅があるため、実際には、プレイヤオブジェクト２０２がレールＲ上に存在するとは限らない。したがって、角度α（＝α１）が求められると、点Ｏと現在位置Ｐとを通る直線Ｌ１に対して、点Ｏを中心に角度α１をなす直線Ｌ２が設定され、この直線Ｌ２とレールＲとの交点に、敵セットタグＴが設定される。ただし、直線Ｌ２は、点Ｏを中心として、直線Ｌ１をプレイヤオブジェクト２０２の移動方向に角度α１だけ回転させた直線である。以下、同じ。
【０１４４】
同様に、図１１（Ｂ）に示すように、プレイヤオブジェクト２０２が最外周のコースから１つ内周側のコース上に存在する場合にも、数１および数２に従って角度α（＝α２）が算出される。角度α２が求められると、点Ｏと現在位置Ｐとを通る直線Ｌ１に対して、点Ｏを中心に角度α２をなす直線Ｌ２が設定され、この直線Ｌ２とレールＲとの交点に、敵セットタグＴが設定される。
【０１４５】
ただし、レールＲは各コースに設定されており、図１１（Ａ）および図１１（Ｂ）に示す地形では、プレイヤオブジェクト２０２が存在するコースに設定されたレールＲ上に、敵セットタグＴが設定される。したがって、後述する渦巻状の曲線のコースで形成された地形のように、コースの高さが変化するような場合には、適切な位置に敵セットタグＴを設定するために、事前に後述する高さのチェックが行われる。
【０１４６】
また、レールＲ上に敵セットタグＴを設定するのは、隊列を作った敵オブジェクト２１０を配置する場合に、敵オブジェクト２１０がコースからはみ出したり、壁面に埋もれてしまったりするような不都合を無くすためである。したがって、隊列を作らずに、１体ずつ敵オブジェクト２１０を出現させるような場合には、レールＲが必要でない場合もある。かかる場合には、点Ｏを中心として、点Ｏとプレイヤオブジェクト２０２の現在位置Ｐとを結ぶ線分（ここでは、「第１線分」という）に対して、角度αをなす線分（ここでは、「第２線分」という）の端点（点Ｏとは反対側の端点）を位置Ｑとし、当該位置Ｑに敵セットタグＴが設定される。
【０１４７】
ただし、位置Ｑは、第２線分の端点に設定される必要はなく、第２線分を基準とする所定範囲内に設定されてもよい。たとえば、所定範囲は、第２線部の端点を中心とする円や四角形などで規定される。ただし、この実施例では、所定の間隔ないしタイミングで、敵オブジェクト２１０を配置する（出現させる）ので、所定範囲内で敵セットタグＴが設定される位置は予め決定されている。また、所定範囲を比較的小さく設定した場合には、その所定範囲内でランダムに敵セットタグＴを設定したとしても、所定の間隔ないしタイミングで敵オブジェクト２１０を出現させることができる。さらに、位置Ｑは、第２線分の端点からプレイヤオブジェクト２０２の側またはその反対側に所定距離移動した位置に決定されてもよい。つまり、敵セットタグＴを設定する位置Ｑは、第２線分に基づいて決定される位置および範囲で決定される。
【０１４８】
図示は省略するが、プレイヤオブジェクト２０２の移動方向が進行方向と逆向きである場合には、図１１（Ａ）および図１１（Ｂ）とは逆方向（時計周り）に所定距離ｄだけ進んだ位置に敵オブジェクト２１０が配置されるように、レールＲ上に敵セットタグＴが設定される。
【０１４９】
また、この実施例の仮想ゲームでは、図１１（Ａ）および図１１（Ｂ）に示した地形とは異なり、図１２のゲーム画面３００に示されるような渦巻状の曲線のコースで形成される地形をプレイヤオブジェクト２０２が移動する場合もある。図１２に示すゲーム画面３００に表示された渦巻状の曲線のコースで形成される地形では、その中心に向かうに従ってコースの高さが次第に低くなる。地形ないしコースの高さの情報（高さ情報）は、後述するように、地形を規定するパラメータに含まれ、対応するデータは地形データ５０２ｄとしてメインメモリ（４２ｅ，４６）に記憶される（図１４参照）。ただし、高さ情報は、地形ないしコースの或る地点の高さ情報であるため、実際には、地形ないしコースに含まれる点についての３次元座標である。
【０１５０】
図１２に示した渦巻状の曲線のコースで形成される地形を真上方向から見ると、図１３（Ａ）のように示される。したがって、図１２に示すような渦巻状の地形において、敵オブジェクト２１０を出現させる場合には、図１１（Ａ）および図１１（Ｂ）を用いて説明したのと同様に、渦巻状の曲線のコースで形成される地形の中心の点Ｏとプレイヤオブジェクト２０２の現在位置Ｐとの距離（半径ｒ）と、所定距離ｄとから角度αが求められる。
【０１５１】
ただし、図１３（Ａ）からも分かるように、渦巻状の曲線のコースで形成される地形では、最外周から最内周までコースは繋がっている。このため、プレイヤオブジェクト２０２の現在位置Ｐによっては、角度αだけでは、敵セットタグＴを設定するレールＲが現在位置Ｐよりも内周側なのか外周側なのか分からない場合がある。
【０１５２】
したがって、この実施例では、渦巻状の曲線のコースで形成される地形のように、コースの高さが変化する場合には、プレイヤオブジェクト２０２の移動方向におけるコースの高さをさらに考慮して、敵セットタグＴを設定するようにしてある。具体的には、プレイヤオブジェクト２０２の現在位置Ｐの上方または下方の所定長さｈの範囲に含まれるかどうかが判断される。以下、この高さの判断を「高さチェック」ということがある。
【０１５３】
上述したように、図１２に示す渦巻状の曲線のコースで形成される地形では、最外周から最内周に向かう方向がプレイヤオブジェクト２０２の進行方向である。したがって、図１３（Ｂ）に示すように、プレイヤオブジェクト２０２が進行方向に移動している場合には、プレイヤオブジェクト２０２の現在位置Ｐの高さから下方向に所定長さｈの範囲内に在るレールＲ上に、敵セットタグＴを設定する必要がある。したがって、図１３（Ｂ）から分かるように、図１３（Ａ）に示す直線Ｌ２と交差する点Ａ、Ｂ、Ｃのうち、点Ｂおよび点Ｃは所定長さｈの範囲外であり、高さの条件を満たさない。これに対して、点Ａは所定長さｈの範囲内であり、高さの条件を満たす。このため、点Ａが敵セットタグＴを設定する位置Ｑに決定され、当該敵セットタグＴが設定される。
【０１５４】
ただし、この実施例では、プレイヤオブジェクト２０２の移動方向の所定距離ｄ先に敵セットタグＴが設定される。このため、図１３（Ａ）および図１３（Ｂ）に示す地形において、プレイヤオブジェクト２０２が進行方向とは逆向きに移動する場合には、プレイヤオブジェクト２０２の現在位置Ｐの高さから上方向に所定長さｈの範囲内に在るレールＲ上の点に、敵セットタグＴが設定される。
【０１５５】
なお、この実施例では、プレイヤオブジェクト２０２の足元の位置を、当該プレイヤオブジェクト２０２の現在位置Ｐに設定してある。ただし、高さチェックのための所定長さｈは、地形毎に予め決定されている。
【０１５６】
また、図示等は省略するが、図１１（Ａ）および図１１（Ｂ）に示した場合と同様に、渦巻状の地形においても、当該地形ないし渦巻き状のコースの中心の点Ｏとプレイヤオブジェクト２０２の現在位置Ｐとの水平距離（半径ｒ）が短い程（長い程）、敵セットタグＴを設定する位置Ｑを決定するための角度αが大きく（小さく）なる。
【０１５７】
なお、図示は省略するが、図１１（Ａ）および図１１（Ｂ）に示した複数の円形状のリングのコースで形成された地形のように、渦巻状の曲線のコースで形成された地形の高さが変化しない場合には、直線Ｌ１と角度αをなす直線Ｌ２と交差するレールＲ上の点のうち、敵セットタグＴを設定する点は次のようにして決定される。直線Ｌ２とコースに設定されたレールＲとが交差する複数の点（ここでは、「候補の点」という）のうち、中心の点Ｏと候補の点とを結ぶ線分（ここでは、「第３線分」という）の長さが、中心の点Ｏとプレイヤオブジェクト２０２とを結ぶ線分（ここでは、「第４線分」という）の長さとほぼ等しい候補の点が敵セットタグＴを設定する点に決定される。
【０１５８】
たとえば、プレイヤオブジェクト２０２の移動方向が渦の中心に向かう方向である場合には、第４線分よりも若干短い第３線分の端点となる候補の点が選択される。一方、プレイヤオブジェクト２０２の移動方向が渦の中心とは逆方向である場合には、第４線分よりも若干長い第３線分の端点となる候補の点が選択される。
【０１５９】
また、この実施例では、敵オブジェクト２１０を出現させる領域Ｅ内では、最初に敵セットタグＴが設定された後では、所定のタイミング（設定タイミング）で、２つ目以降の敵セットタグＴが設定される。これは、当該シーンや仮想ゲーム空間内に存在する敵オブジェクト２１０の数を調整することにより、ＣＰＵ４０の処理負荷を制限（抑制）するためである。
【０１６０】
たとえば、設定タイミングであるかどうかは、以下の所定の条件（設定条件）のうちのいずれか１つを満たすかどうかで判断される。ただし、設定条件を満たすかどうかの判断は、１つ前の敵セットタグＴを設定した後に行われる。
【０１６１】
（１）所定時間ｔが経過したこと。（２）プレイヤオブジェクト２０２が所定距離Ｄ以上移動したこと。（３）プレイヤオブジェクト２０２が当該領域Ｅ内の所定の範囲に入ったこと。（４）現在のシーンまたは当該領域Ｅに存在する敵オブジェクト２１０の数が所定数以下であること。（５）プレイヤオブジェクト２０２が倒した敵オブジェクト２１０の数が所定数以上であること。（６）出現した敵オブジェクト２１０の数が所定数以上であること、または敵オブジェクト２１０が出現した回数が所定回数以上であること。（７）プレイヤオブジェクト２０２のライフが所定値以下であること。
【０１６２】
たとえば、プレイヤオブジェクト２０２が所定距離Ｄ以上移動したときに、設定条件を満たし、すなわち設定タイミングとなり、敵セットタグＴを設定するので、各敵セットタグＴにおいて敵オブジェクト２１０の種類を異なるように設定しておけば、プレイヤオブジェクト２０２の移動に従って、異なる敵オブジェクト２１０を次々と出現させることができる。
【０１６３】
なお、上記の設定条件のいずれか２つ以上を満たす場合に、設定タイミングであると判断するようにしてもよい。
【０１６４】
また、上記の所定時間ｔ、所定距離Ｄ、所定回数は、仮想ゲームの開発者やプログラマが任意に設定する事項である。また、仮想ゲームの進行状況やゲームレベル等に応じて可変的に設定されてもよい。
【０１６５】
また、上述したように、設定条件は、領域Ｅにおいて、２つ目以降の敵セットタグＴが設定される場合に判断される。したがって、当該領域Ｅに敵セットタグＴが１つも設定されていない場合には、当該領域Ｅにプレイヤオブジェクト２０２が入ったときに、設定タイミングであると判断される。ただし、プレイヤオブジェクト２０２が当該領域Ｅに入って、所定の場所まで進んだときや所定の範囲に入ったときに、設定タイミングであると判断するようにしてもよい。
【０１６６】
また、敵セットタグＴが設定されると、当該敵セットタグＴに従って、当該敵セットタグＴが設定された位置Ｑに敵オブジェクト２１０が配置される。つまり、敵オブジェクト２１０が出現される。ただし、複数の敵オブジェクト２１０が隊列を作る場合には、位置Ｑを基準に、当該複数の敵オブジェクト２１０が隊列を作って配置される。
【０１６７】
その後、所定時間毎に、１体の敵オブジェクト２１０が位置Ｑに配置される。また、隊列を作っている場合には、プレイヤオブジェクト２０２に倒された敵オブジェクト２１０が最初に配置（出現）されていた位置に、新たに複数の敵オブジェクト２１０が隊列を作って配置される。
【０１６８】
ただし、これらの方法に限定される必要はなく、当該シーンまたは仮想ゲーム空間に出現される敵オブジェクト２１０の最大数を超えない範囲で、適宜敵オブジェクト２１０は配置される。
【０１６９】
また、敵セットタグＴが示す総数の敵オブジェクト２１０が配置されると、セーブフラグがオンされ、オンの状態が維持される場合には、当該敵セットタグＴが設定された位置Ｑでは、敵オブジェクト２１０は配置されない。
【０１７０】
なお、敵オブジェクト２１０が位置Ｑまたは位置Ｑを基準に配置されると、プログラム（後述するオブジェクト制御プログラム５００ｅ）に従って、移動されたり、プレイヤオブジェクト２０２を攻撃したりする。
【０１７１】
図１４は、図２に示したメインメモリ（４２ｅまたは４６）のメモリマップの一例を示す図解図である。図１４に示すように、メインメモリ（４２ｅ，４６）は、プログラム記憶領域５００およびデータ記憶領域５０２を含む。プログラム記憶領域５００には、画像処理プログラムを含むゲームプログラムが記憶される。ゲームプログラムは、ゲームメイン処理プログラム５００ａ、画像生成プログラム５００ｂ、画像表示プログラム５００ｃ、操作入力検出プログラム５００ｄ、オブジェクト制御プログラム５００ｅおよび敵配置位置決定プログラム５００ｆなどを含む。たとえば、画像処理プログラムは、画像生成プログラム５００ｂ、画像表示プログラム５００ｃ、操作入力検出プログラム５００ｄ、オブジェクト制御プログラム５００ｅ、および敵配置位置決定プログラム５００ｆによって構成される。
【０１７２】
ゲームメイン処理プログラム５００ａは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム５００ｂは、後述する画像データ５０２ｂを用いて、モニタ３４に表示する画面（２００、３００など）に対応するゲーム画像データを生成するためのプログラムである。画面表示プログラム５００ｃは、画像生成プログラム５００ｂに従って生成されたゲーム画像データをモニタ３４に出力（表示・更新）するためのプログラムである。
【０１７３】
操作入力検出プログラム５００ｄは、第１コントローラ２２から送信されるコントローラデータを検出するためのプログラムである。オブジェクト制御プログラム５００ｅは、コントローラデータに従ってプレイヤオブジェクト２０２を移動等させたり、コントローラデータに従わないで敵オブジェクト２１０等のノンプレイヤオブジェクトを配置したり（出現させたり）移動等させたりするためのプログラムである。ただし、オブジェクト制御プログラム５００ｅは、後述する敵配置位置決定プログラム５００ｆで設定された敵セットタグＴに応じて、敵オブジェクト２１０などのノンプレイヤオブジェクトを配置する（出現させる）。
【０１７４】
敵配置位置決定プログラム５００ｆは、プレイヤオブジェクト２０２の現在位置Ｐに基づいて、敵オブジェクト２１０を配置する（出現される）位置を決定するためのプログラムである。つまり、敵配置位置決定プログラム５００ｆは、上述したように、敵セットタグＴを設定する位置Ｑを決定するとともに、当該位置Ｑに敵セットタグＴを設定する。ただし、領域Ｅ（地形）、コースおよびゲームレベルなどに応じて、設定する敵セットタグＴは決定されている。
【０１７５】
なお、図示は省略するが、プログラム記憶領域５００には、音出力プログラムやバックアッププログラムも記憶される。音出力プログラムは、プレイヤオブジェクト２０２および敵オブジェクト２１０の音声（擬声音）、効果音、音楽（ＢＧＭ)などのゲームに必要な音を生成および出力するためのプログラムである。バックアッププログラムは、プレイヤの指示や所定のゲームイベントに従って、ゲームデータ（途中データ、結果データ）を、フラッシュメモリ４４やメモリカードに記憶するためのプログラムである。
【０１７６】
データ記憶領域５０２には、操作データバッファ５０２ａが設けられる。また、データ記憶領域５０２には、画像データ５０２ｂ、現在位置データ５０２ｃ、地形データ５０２ｄ、レールデータ５０２ｅ、半径データ５０２ｆ、角度データ５０２ｇおよび敵セットタグデータ５０２ｈを記憶する。
【０１７７】
操作データバッファ５０２ａは、アンテナ５２ａを介して無線コントローラモジュール５２で受信された、第1コントローラ２２からのコントローラデータを、記憶（一時記憶）するためのバッファである。操作データバッファ５０２ａに記憶されたコントローラデータは、ＣＰＵ４０によって使用された後、削除（消去）される。
【０１７８】
画像データ５０２ｂは、ポリゴンデータおよびテクスチャデータなどのデータである。現在位置データ５０２ｃは、プレイヤオブジェクト２０２の現在位置Ｐについてのデータであり、具体的には、プレイヤオブジェクト２０２の現在位置Ｐの３次元座標のデータである。
【０１７９】
地形データ５０２ｄは、上述した複数の円形状のリングのコースや渦巻状の曲線のコースで形成される地形のような所定の地形についてのパラメータのデータである。具体的には、地形ないしコースを規定する所定の点（この実施例では、中心の点Ｏ）、地形ないしコースに含まれる各点の３次元座標および高さチェックに用いる所定長さｈについてのデータである。ただし、地形データ５０２ｄは、複数の所定の地形のそれぞれについてのパラメータのデータを含む。また、地形ないしコースの高さが変化しない場合には、高さチェックを行う必要がないため、かかる場合には、パラメータには、所定長さｈについてのデータは含まれない。
【０１８０】
レールデータ５０２ｅは、地形データ５０２ｄに対応する地形に設定されるレールＲについてのデータである。たとえば、レールＲは点の集合であり、レールデータ５０２ｅは、各点の３次元座標のデータである。詳細な説明は省略するが、複数の所定の地形のそれぞれについてレールＲが設定されるため、レールデータ５０２ｅは、複数のレールＲについてのデータを含む。
【０１８１】
半径データ５０２ｆは、所定の地形において、敵セットタグＴを設定する位置を決定する場合に算出される、当該所定の地形の中心の点Ｏとプレイヤオブジェクト２０２の現在位置Ｐとの距離（半径ｒ）についてのデータである。
【０１８２】
角度データ５０２ｇは、所定の地形において、敵セットタグＴを設定する位置を決定する場合に算出される、当該所定の地形の中心の点Ｏとプレイヤオブジェクト２０２の現在位置Ｐとを通る直線Ｌ１と、この直線Ｌ１に対して設定される直線Ｌ２とがなす角度αについてのデータである。
【０１８３】
敵セットタグデータ５０２は、現在設定されている敵セットタグＴについてのデータである。したがって、仮想ゲーム空間内に、複数の敵セットタグＴが設定されている場合には、それぞれの敵セットタグＴについてのデータが記憶される。
【０１８４】
図示は省略するが、データ記憶領域５０２には、音データなども記憶され、ゲーム処理に必要な、フラグやカウンタ（タイマ）も設けられる。
【０１８５】
具体的には、図２に示しＣＰＵ４０は、図１５に示すゲーム全体処理を実行する。ＣＰＵ４０は、ゲーム全体処理を開始すると、ステップＳ１で、ゲーム画面を表示する。ここでは、ＣＰＵ４０は、仮想ゲームを最初から開始する場合には、当該仮想ゲームの初期のゲーム画面をモニタ３４に表示する。また、ＣＰＵ４０は、仮想ゲームを前回の続きから開始する場合には、前回の続きから開始するためのゲーム画面をモニタ３４に表示する。
【０１８６】
次のステップＳ３では、操作入力を検出する。ここでは、ＣＰＵ４０は、アンテナ５２ａおよび無線コントローラ５２を介して受信されたコントローラデータを、メインメモリ（４２ｅ，４６）内の操作データバッファ５０２ａに記憶する。続くステップＳ５では、プレイヤオブジェクト２０２を制御する。ここでは、ＣＰＵ４０は、操作データバッファ５０２ａに記憶されたコントローラデータに従って、プレイヤオブジェクト２０２を移動させたり、プレイヤオブジェクト２０２に所定の動作をさせたりする。ただし、ＣＰＵ４０は、プレイヤオブジェクト２０２を移動させる場合には、移動後の現在位置Ｐの３次元座標のデータを現在位置データ５０２ｃとしてデータ記憶領域５０２に記憶する。つまり、現在位置データ５０２ｃが更新される。
【０１８７】
次のステップＳ７では、敵オブジェクト２１０を制御する。ここでは、ＣＰＵ４０は、敵セットタグＴに従って、敵オブジェクト２１０を配置する（出現させる）。また、ＣＰＵ４０は、ゲームプログラムに従って、敵オブジェクト２１０を移動させたり、敵オブジェクト２１０に所定の動作をさせたりする。
【０１８８】
詳細な説明は省略するが、ステップＳ５およびＳ７の処理によって、プレイヤオブジェクト２０２と敵オブジェクト２１０とが遭遇したり、闘ったりする。また、これらの処理によって、ゲーム画面が更新される。さらに、図示は省略するが、ステップＳ５の処理によって、プレイヤオブジェクト２０２がアイテムを取得すれば、当該アイテムが所持アイテムとして追加され、アイテムを使用すると、当該アイテムが所持アイテムから消去される。
【０１８９】
次のステップＳ９では、各種パラメータを更新する。ここでは、ＣＰＵ４０は、プレイヤオブジェクト２０２や敵オブジェクト２１０のライフを変化（低減または増加）させたり、プレイヤオブジェクト２０２のレベルを変化（増加）させたり、プレイヤオブジェクト２０２の攻撃力や防御力を変化（低減または増加）させたりする。
【０１９０】
続いて、ステップＳ１１では、ゲームクリアかどうかを判断する。たとえば、ＣＰＵ４０は、プレイヤないしプレイヤオブジェクト２０２が全ステージをクリアしたかどうかを判断する。ステップＳ１１で“ＹＥＳ”であれば、つまりゲームクリアであれば、ステップＳ１３で、ゲームクリア処理を実行して、ゲーム全体処理を終了する。たとえば、ステップＳ１３では、ＣＰＵ４０は、ゲームクリアであることを表現するゲーム画面をモニタ３４に表示したり、そのことを表現する音ないし音楽をスピーカ３４ａから出力したりする。
【０１９１】
一方、ステップＳ１１で“ＮＯ”であれば、つまりゲームクリアでなければ、ステップＳ１５で、ゲームオーバかどうかを判断する。たとえば、ＣＰＵ４０は、プレイヤオブジェクト２０２のライフが０以下となり、当該プレイヤオブジェクト２０２が倒されたかどうかを判断する。ステップＳ１５で“ＹＥＳ”であれば、つまりゲームオーバであれば、ステップＳ１７で、ゲームオーバ処理を実行して、ゲーム全体処理を終了する。たとえば、ステップＳ１７では、ＣＰＵ４０は、ゲームオーバであることを表現するゲーム画面をモニタ３４に表示したり、そのことを表現する音ないし音楽をスピーカ３４ａから出力したりする。
【０１９２】
なお、ゲームクリアまたはゲームオーバの場合に、ゲーム全体処理を終了するようにしてあるが、プレイヤの操作に従って、ゲーム全体処理を終了することもある。また、図示は省略するが、プレイヤの操作や所定のゲームイベントに従って、ゲームデータのバックアップ処理が実行されることもある。
【０１９３】
また、ステップＳ１５で“ＮＯ”であれば、つまりゲームオーバでなければ、ステップＳ１９で、ステージクリアかどうかを判断する。たとえば、ＣＰＵ４０は、現在のステージにおいて、プレイヤオブジェクト２０２がボスの敵オブジェクト２０２を倒したかどうかを判断する。
【０１９４】
ステップＳ１９で“ＮＯ”であれば、つまりステージクリアでなければ、そのままステップＳ３に戻る。一方、ステップＳ１９で“ＹＥＳ”であれば、つまりステージクリアであれば、ステップＳ２１で、ステージクリア処理を実行する。ここでは、ＣＰＵ４０は、ステージクリアであることを表現するゲーム画面をモニタ３４に表示したり、そのことを表現する音ないし音楽をスピーカ３４ａから出力したりする。
【０１９５】
次のステップＳ２３では、次のステージに進み、ステップＳ３に戻る。たとえば、ステップＳ２３では、ＣＰＵ４０は、プレイヤオブジェクト２０２を、次のステージの初期位置（スタート地点）に移動させる。
【０１９６】
図１６は、図２に示したＣＰＵ４０の敵配置位置決定処理のフロー図である。ＣＰＵ４０は、ゲーム全体処理とは別のタスクで、この敵配置位置決定処理を並列的に実行する。ただし、この敵配置位置決定処理は、ゲーム全体処理が開始されたときに開始される。
【０１９７】
図１６に示すように、ＣＰＵ４０は、敵配置位置決定処理を開始すると、ステップＳ５１で、プレイヤオブジェクト２０２の現在位置を検出する。ここでは、ＣＰＵ４０は、データ記憶領域５０２を参照して、現在位置データ５０２ｃに対応するプレイヤオブジェクト２０２の現在位置Ｐの３次元座標を取得する。
【０１９８】
続くステップＳ５３では、プレイヤオブジェクト２０２の現在位置Ｐが敵オブジェクト２１０を出現させる領域Ｅ内であるかどうかを判断する。つまり、ＣＰＵ４０は、現在位置Ｐが、地形データ５０２ｄが記憶されている地形の領域Ｅ内であるかどうかを判断する。ただし、現在位置Ｐが領域Ｅ内であるかどうかは、当該現在位置Ｐの３次元座標のうち、高さ情報（Ｚ座標）を除く２次元座標（ＸＹ座標）で判断される。
【０１９９】
ステップＳ５３で“ＮＯ”であれば、つまりプレイヤオブジェクト２０２の現在位置Ｐが敵オブジェクト２１０を出現させる領域Ｅ外であれば、そのままステップＳ５１に戻る。一方、ステップＳ５３で“ＹＥＳ”であれば、つまりプレイヤオブジェクト２０２の現在位置Ｐが敵オブジェクト２１０を出現させる領域Ｅ内であれば、ステップＳ５５で、敵オブジェクト２１０を出現させるタイミングであるかどうかを判断する。この判断については、上述したとおりである。
【０２００】
ステップＳ５５で“ＮＯ”であれば、つまり敵オブジェクト２１０を出現させるタイミングでなければ、そのままステップＳ５１に戻る。一方、ステップＳ５５で“ＹＥＳ”であれば、つまり敵オブジェクト２１０を出現させるタイミングであれば、ステップＳ５７で、半径ｒを算出する。ここでは、ＣＰＵ４０は、数２に従って、地形の中心の点Ｏとプレイヤオブジェクト２０２の現在位置Ｐとの水平距離を算出する。次のステップＳ５９では、角度αを算出する。ここでは、ＣＰＵ４０は、先に算出した半径ｒおよび所定距離ｄを用いて、数１に従って、角度αを求める。
【０２０１】
そして、ステップＳ６１では、当該地形が高さの変化する領域Ｅであるかどうかを判断する。ここでは、ＣＰＵ４０は、データ記憶領域５０２に記憶された地形データ５０２ｄに含まれる高さ情報を参照して、高さが変化する領域Ｅであるかどうかを判断する。または、ＣＰＵ４０は、地形データ５０２ｄに所定長さｈのデータが含まれているかどうかで、高さが変化する領域Ｅであるかどうかを判断する。
【０２０２】
ステップＳ６１で“ＹＥＳ”であれば、つまり当該地形が高さの変化する領域Ｅであれば、ステップＳ６３で、プレイヤオブジェクト２０２の高さ情報（Ｚ座標）を取得し、ステップＳ６５で、高さを考慮して、敵セットタッグＴを設定して、ステップＳ５１に戻る。ステップＳ６５では、ＣＰＵ４０は、直線Ｌ１と角度αをなす直線Ｌ２を設定する。次に、この直線Ｌ２とレールＲとが交差する点のうち、プレイヤオブジェクト２０２の現在位置Ｐの高さを基準に、所定長さｈの範囲内となるレールＲ上の点を位置Ｑとして決定する。そして、この位置Ｑに敵セットタグＴを設定する。
【０２０３】
一方、ステップＳ６１で“ＮＯ”であれば、つまり当該領域Ｅが高さの変化する領域Ｅでなければ、ステップＳ６７で、現在のコース内で、敵セットタグＴを設定して、ステップＳ５１に戻る。ステップＳ６７では、ＣＰＵ４０は、直線Ｌ１と角度αをなす直線Ｌ２を設定する。次に、この直線Ｌ２とレールＲとが交差する点のうち、プレイヤオブジェクト２０２の現在位置Ｐを含むコースに設定されたレールＲ上の点を位置Ｑとして決定する。そして、この位置Ｑに敵セットタグＴを設定する。
【０２０４】
ただし、上述したように、設定する敵セットタグＴの内容は、領域Ｅ（地形）、コースおよびゲームレベルなどに応じて決定される。
【０２０５】
この実施例によれば、プレイヤオブジェクトの現在位置のような基準位置と所定の地形の中心の点とに基づいて、プレイヤオブジェクトの現在位置から円弧のような曲線で所定距離だけ離れた位置に敵オブジェクトを配置するので、たとえば、プレイヤオブジェクトが円形状や渦巻状の曲線のコースなどを移動する場合に、簡単な処理方法で、同じような間隔ないしタイミングで敵オブジェクトを出現させることができる。つまり、コース上の基準位置と仮想空間に設定された地形に規定されたパラメータとに基づいて、オブジェクトの配置位置を状況に応じて適切に決定することができる。
【０２０６】
なお、この実施例では、敵オブジェクトを配置する場合についてのみ説明したが、同じ方法によって、所定のアイテムのような他のオブジェクト（ノンプレイヤオブジェクト）を配置することも可能である。
【０２０７】
また、この実施例では、複数の円形状のリングのコースや渦巻状の曲線のコースで形成された地形のように、滑らかな曲線のコースにおいて、敵セットタグＴを設定するようにしたが、図１７（Ａ）に示すように、中心の点Ｏを共通とし、大きさの異なる複数の多角形状のリングのコースで形成された地形においても、同様の方法によって、敵セットタグＴを設定することができる。ただし、図１７（Ａ）では、多角形として正１２角形を示してあるが、これに限定される必要はない。図示は省略するが、図１７（Ａ）に示すような地形においてもレールＲが設定される。正多角形状のリングのコースでは、同じく正多角形状のレールＲを設定することもできるし、円形状のレールＲを設定することもできる。
【０２０８】
また、この実施例では、複数の円形状のリングのコースや渦巻状の曲線のコースのように、異なる大きさ（径）の円が重なるようなコースについてのみ説明したが、これに限定される必要はない。たとえば、図１７（Ｂ）に示すような、レースゲームのコースについても、同様の手法を用いることができる。具体的には、図１７（Ｂ）に示すように、コーナーＭ１では、当該コーナーＭ１を規定する円Ｃ１の中心の点Ｏ１と、プレイヤオブジェクトの現在位置（図面では省略してある）とに基づいて、敵セットタグを設定する位置（オブジェクトの配置位置）が決定される。また、コーナーＭ２では、当該コーナーＭ２を規定する円Ｃ２の中心の点Ｏ２と、プレイヤオブジェクトの現在位置とに基づいて、オブジェクトの配置位置が決定される。図示等は省略するが、他のコーナーについても同様である。また、レースゲームのコースについても、レールＲが設定され、このレールＲ上に敵セットタグが設定される。
【０２０９】
図１７（Ｂ）に示すコースでは、コース自体が重なるような場所が無いが、たとえば、コーナーが立体的に交差したり重なったりするような場合には、上述の実施例と同様に、地形の高さも考慮される。
【０２１０】
なお、この発明の本質的な内容ではないが、レースゲームでは、敵オブジェクトを出現させるタイミングか否かの判断として、たとえば、プレイヤオブジェクトの速度が所定速度以上かどうかを判断するようにしてもよい。このようにすれば、たとえば、所定速度以上のプレイヤオブジェクトの場合には、敵オブジェクト（周回遅れの車などのお邪魔オブジェクト）を出現させ、所定速度未満のプレイヤオブジェクトの場合には、敵オブジェクトを出現させないようにすることができる。逆に、所定速度以上のプレイヤオブジェクトの場合には、所定のアイテム（スピードアップまたは無敵などのお助けアイテム）を出現させないが、所定速度未満のプレイヤオブジェクトの場合には、所定のアイテムを出現させることもできる。
【０２１１】
また、この実施例では、プレイヤオブジェクトの現在位置のような基準位置と所定の地形の中心の点とに基づいて、プレイヤオブジェクトの現在位置から円弧のような曲線で所定距離だけ離れた位置に敵オブジェクトを配置するようにした。たとえば、敵オブジェクトを配置（出現）させる位置が予め決定されている場合には、敵オブジェクトの配置（出現）させる位置と、コースに沿って所定距離だけ離れた位置とで決まる所定の範囲をコース上に設定しておき、この所定の範囲にプレイヤオブジェクトが入ったときに、敵オブジェクトを出現させるようにしても、上述の実施例と同様に、プレイヤオブジェクトが移動する場合に、同じような間隔ないしタイミングで敵オブジェクトを出現させることができる。
【０２１２】
また、この実施例では、ジャイロユニットを第１コントローラに着脱可能な構成としたが、ジャイロユニットは第１コントローラと一体的に設けられるようにしてもよい。または、ジャイロセンサのみを第１コントローラに内蔵するようにしてもよい。
【０２１３】
さらに、この実施例では、据え置き型のゲーム装置を用いた場合について説明したが、表示装置およびコントローラが一体的に設けられた携帯型のゲーム装置、パーソナルコンピュータ、ＰＤＡ、携帯電話機などの画像を表示する機能を備える様々な電子機器に適用することができる。
【０２１４】
さらにまた、この発明は、画像処理のための各処理（プログラム５００ｂ−５００ｆ）が複数のコンピュータ等によって分散処理されるような画像処理システムにも適用可能である。
【符号の説明】
【０２１５】
１０  …ゲームシステム
１２  …ゲーム装置
１８  …光ディスク
２２  …コントローラ
２４  …ジャイロユニット
２６，１００  …入力手段
３４  …モニタ
３４ａ  …スピーカ
４０  …ＣＰＵ
４２  …システムＬＳＩ
４２ａ  …入出力プロセッサ
４２ｂ  …ＧＰＵ
４２ｃ  …ＤＳＰ
４２ｄ  …ＶＲＡＭ
４２ｅ  …内部メインメモリ
４４  …フラッシュメモリ
４６  …外部メインメモリ
４８  …ＲＯＭ／ＲＴＣ
５０  …無線通信モジュール
５２  …無線コントローラモジュール
５４  …ディスクドライブ
５６  …ＡＶ  ＩＣ
５８  …ＡＶコネクタ
６０  …拡張コネクタ
６２  …メモリカード用コネクタ
７０  …プロセッサ
７４，１０２  …加速度センサ
８０  …画像情報演算部
８０ｃ  …撮像素子
８０ｄ  …画像処理回路
９０  …マイコン
９２  …ジャイロセンサ
【図１】
2012252531.tif 000003
【図２】
2012252531.tif 000004
【図３】
2012252531.tif 000005
【図４】
2012252531.tif 000006
【図５】
2012252531.tif 000007
【図６】
2012252531.tif 000008
【図７】
2012252531.tif 000009
【図８】
2012252531.tif 000010
【図９】
2012252531.tif 000011
【図１０】
2012252531.tif 000012
【図１１】
2012252531.tif 000013
【図１２】
2012252531.tif 000014
【図１３】
2012252531.tif 000015
【図１４】
2012252531.tif 000016
【図１５】
2012252531.tif 000017
【図１６】
2012252531.tif 000018
【図１７】
2012252531.tif 000019