説明

画像処理プログラム、画像処理装置、画像処理方法および画像処理システム

【構成】 ゲーム装置12は、CPU40を含み、CPUは、プレイヤからの指示に従ってプレイヤオブジェクト(202)の移動等を制御する。プレイヤオブジェクトが敵オブジェクト(210)を出現させる領域(E)内に存在し、設定条件を満たす場合に、敵セットタグ(T)を設定する。このとき、CPUは、プレイヤオブジェクトの移動方向に、コースに沿って所定距離(d)だけ移動した位置(Q)に、敵セットタグを設定する。つまり、敵オブジェクトの配置位置を決定する。そして、CPUは、この敵セットタグに従って敵オブジェクトを配置する。
【効果】 状況に応じて適切にオブジェクトの配置位置を決定することができる。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムに関し、特にたとえば、オブジェクトを配置および表示する、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムに関する。
【背景技術】
【0002】
従来、仮想空間内にオブジェクトを配置し、それを仮想カメラから撮影した画像を表示する技術が知られている。たとえば、特許文献1には、三次元仮想空間内にプレーヤキャラクターとエネミーキャラクターおよび視点を配置し、該視点から見た、ある視方向におけるプレーヤキャラクターとエネミーキャラクターの画像を生成するゲーム情報処理装置が開示されている。
【特許文献1】特開2005−319220[A63F 13/00]
【発明の概要】
【発明が解決しようとする課題】
【0003】
この特許文献1のゲーム情報処理装置では、プレーヤキャラクターやエネミーキャラクターを仮想空間内のどの位置に配置するかについて明確に開示されていないが、従来は、予め定められた位置に配置するか、ランダムに決定された位置に配置するような手法が採られていた。しかし、このような手法では、前者の場合には、同じ場面では、エネミーキャラクターが出現する位置が分かっているため、ゲームが単調になってしまう。また、後者の場合には、エネミーキャラクターを配置する位置が、プレーヤキャラクターから離れ過ぎたり近過ぎたりする場合がある。したがって、背景技術では、状況に応じて適切な位置にオブジェクトを配置するのが難しいという問題があった。
【0004】
それゆえに、この発明の主たる目的は、新規な、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを提供することである。
【0005】
また、この発明の他の目的は、オブジェクトの配置位置を状況に応じて適切に決定することができる、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを提供することである。
【課題を解決するための手段】
【0006】
第1の発明は、画像処理装置のコンピュータを、画像出力手段と、配置位置決定手段と、オブジェクト配置手段として機能させる。画像出力手段は、地形が設定された仮想空間を仮想カメラから撮影した画像を出力する。配置位置決定手段は、地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する。オブジェクト配置手段は、配置位置決定手段によって決定された配置位置にオブジェクトを配置する。
【0007】
第1の発明によれば、地形に規定されるパラメータと所定の基準位置に基づいてオブジェクトの配置位置を決定するので、周囲の環境などの状況に応じて適切にオブジェクトの配置位置を決定することができる。
【0008】
第2の発明は、第1の発明に従属し、パラメータは地形の所定点を含み、配置位置決定手段は、所定点と基準位置を結ぶ線分の長さに基づいて特定される位置をオブジェクトの配置位置として決定する。
【0009】
第2の発明によれば、線分の長さに基づいてオブジェクトの配置位置を決定するので、所定点と基準位置を結ぶ線分の長さに応じて適切にオブジェクトの配置位置を決定することができる。
【0010】
第3の発明は、第2の発明に従属し、配置位置決定手段は、線分と、所定点を中心として当該線分の長さに応じて決定される角度をなすように設定される他の線上の位置をオブジェクトの配置位置として決定する。
【0011】
第3の発明によれば、線分の長さに応じて決定される角度をなす他の線上の位置にオブジェクトの配置位置を決定することができる。したがって、例えば、所定の半径によって規定される曲線上にオブジェクトの配置位置を決定するような場合に好適である。
【0012】
第4の発明は、第2または第3の発明に従属し、配置位置決定手段は、線分と、所定点を中心として当該線分の長さに応じて決定される角度をなすように設定される他の線分の端部をオブジェクトの配置位置として決定する。
【0013】
第4の発明によれば、線分の長さとそれに応じて決定される角度に基づいて、オブジェクトの配置位置を決定することができる。したがって、円のような所定の半径を有する円周上にオブジェクトを配置するような場合に好適である。
【0014】
第5の発明は、第3または第4の発明に従属し、角度は、線分の長さが大きい程、小さくなる。
【0015】
第5の発明によれば、線分の長さが大きいほど、角度を小さくするので、例えば、基準点を有する曲線上にオブジェクトを配置する場合に、線分の長さに関わらず、曲線上における基準点とオブジェクトの配置位置との距離がほぼ一定になるように設定することができる。
【0016】
第6の発明は、第2ないし第5の発明のいずれかに従属し、パラメータは地形の高さをさらに含む。
【0017】
第6の発明によれば、地形の高さを考慮してオブジェクトの配置位置を決定するので、状況に応じて適切にオブジェクトの配置位置を決定することができる。
【0018】
第7の発明は、第6の発明に従属し、配置位置決定手段は、基準位置における地形の高さと所定の関係にある高さの地形上の位置をオブジェクトの配置位置として決定する。
【0019】
第7の発明によれば、基準位置の高さをさらに考慮するので、状況に応じて適切にオブジェクトの配置位置を決定することができる。
【0020】
第8の発明は、第2ないし第7の発明のいずれかに従属し、地形は、曲線のコースを含み、地形の所定点は、曲線のコースを規定する中心点であり、基準位置は、曲線のコース上に設定される。
【0021】
第8の発明によれば、曲線のコース上の基準位置に応じて適切にオブジェクトを配置することができる。また、曲線のコースを規定する中心点と曲線上の位置の位置関係に応じてオブジェクトの配置位置を決定するので、曲線のようなコース上にオブジェクトの配置位置を設定する際の処理を容易にすることができる。
【0022】
第9の発明は、第8の発明に従属し、地形は、渦巻状に形成される曲線のコースを含む。たとえば、コース上に設定される基準位置が変化すると、所定点と基準位置を結ぶ線分が変化し、これに基づいてオブジェクトの配置位置が決定される。
【0023】
第9の発明によれば、所定点と基準位置の位置関係に応じて適切にオブジェクトの配置位置を決定することができる。また、所定点と基準位置を結ぶ線分、すなわち渦巻状に形成される曲線の半径に応じてオブジェクトの配置位置を決定するので、所定の半径に従って形成される渦巻状の曲線のようなコース上にオブジェクトの配置位置を決定する際の処理を容易にすることができる。
【0024】
第10の発明は、第9の発明に従属し、渦巻状に形成された曲線のコースは、中心に向かうに従って高さを変化される。
【0025】
第10の発明によれば、高さも考慮した位置関係に応じて適切にオブジェクトの配置位置を決定することができる。したがって、曲線のコースを進むにしたがってその高さが次第に大きく(または小さく)なるようなコースにオブジェクトを配置するような場合に好適である。
【0026】
第11の発明は、第1ないし第10の発明のいずれかに従属し、オブジェクトは敵オブジェクトやアイテムオブジェクトのようなノンプレイヤオブジェクトであり、基準位置は、プレイヤオブジェクトの現在位置であり、配置位置決定手段は、プレイヤオブジェクトの現在の移動方向に沿って所定の間隔を有する位置にノンプレイヤオブジェクトの配置位置を決定する。
【0027】
第11の発明によれば、プレイヤオブジェクトの現在位置および現在の移動方向に応じて、適切にノンプレイヤオブジェクトの配置位置を決定することができる。
【0028】
第12の発明は、地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、配置位置決定手段によって決定された配置位置にオブジェクトを配置するオブジェクト配置手段を備える、画像処理装置である。
【0029】
第13の発明は、画像処理装置の画像処理方法であって、(a)地形が設定された仮想空間を仮想カメラから撮影した画像を出力し、(b)地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定し、そして(c)ステップ(b)によって決定された配置位置にオブジェクトを配置する、画像処理方法である。
【0030】
第14の発明は、地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、配置位置決定手段によって決定された配置位置にオブジェクトを配置するオブジェクト配置手段を備える、画像処理システムである。
【0031】
第12ないし第14の発明においても、第1の発明と同様に、状況に応じて適切にオブジェクトの配置位置を決定することができる。
【発明の効果】
【0032】
この発明によれば、仮想空間に設定された地形に規定されたパラメータと基準位置に基づいて、オブジェクトの配置位置を決定するので、状況に応じて適切にオブジェクトの配置位置を決定することができる。
【0033】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0034】
【図1】図1はこの発明のゲームシステムの一実施例を示す図解図である。
【図2】図2は図1に示すゲームシステムの電気的な構成を示すブロック図である。
【図3】図3は図1に示す第1コントローラの外観を説明するための図解図である。
【図4】図4は図1に示すジャイロユニットを接続した第1コントローラおよびジャイロユニットの外観を説明するための図解図である。
【図5】図5は図1に示す第2コントローラの外観を説明するための図解図である。
【図6】図6はプレイヤがコントローラを操作する様子を示す図解図である。
【図7】図7は図1に示す第1コントローラ、ジャイロユニットおよび第2コントローラが接続された状態の電気的な構成を示すブロック図である。
【図8】図8は図1に示すマーカおよびコントローラの視野角を説明するための図解図である。
【図9】図9は対象画像を含む撮像画像の一例を示す図解図である。
【図10】図10は図1に示すモニタに表示されるゲーム画面の一例を示す図解図である。
【図11】図11は仮想ゲーム空間に設けられる複数の円形状の曲線のコースで形成された地形を上方から見た場合の図解図である。
【図12】図12は図1に示すモニタに表示されるゲーム画面の他の例を示す図解図である。
【図13】図13は図12に示すゲーム画面に表示された渦巻状の曲線のコースで形成された地形を上方から見た場合の図解図および高さを考慮した敵セットタグの設定方法を説明するための図解図である。
【図14】図14は図2に示すメインメモリのメモリマップの一例を示す図解図である。
【図15】図15は図2に示すCPUのゲーム全体処理のフロー図である。
【図16】図16は図2に示すCPUの敵配置位置決定処理のフロー図である。
【図17】図17は敵オブジェクトを出現させる地形の他の例を示す図解図である。
【発明を実施するための形態】
【0035】
図1を参照して、この発明の一実施例であるゲームシステム10は、画像処理装置としても機能するビデオゲーム装置(以下、単に「ゲーム装置」という。)12および第1コントローラ22を含む。なお、図示は省略するが、この実施例のゲーム装置12は、最大4つの第1コントローラ22と通信可能に設計されている。また、ゲーム装置12と各第1コントローラ22とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。また、この実施例では、第1コントローラ22には、ジャイロユニット24が接続(連結)され、このジャイロセンサ24に差し込みプラグ36aおよびケーブル36bを介して第2コントローラ36が接続されている。
【0036】
なお、図示等は省略するが、ジャイロユニット24を第1コントローラ22に装着しない場合には、差し込みプラグ36aおよびケーブル36bを介して第2コントローラ36を第1コントローラ22に接続することもできる。
【0037】
ジャイロユニット24は、第1コントローラ22に接続されることで、第1コントローラ22と物理的および電気的に結合される。したがって、第1コントローラ22に装着(一体化)されたジャイロユニット24からは、第1コントローラ22の角速度を示す角速度データが出力され、第1コントローラ22に与えられる。
【0038】
また、第2コントローラ36の操作データないし入力データは、ケーブル36b、差し込みプラグ26bおよびジャイロユニット24を介して第1コントローラ22に与えられる。
【0039】
したがって、第1コントローラ22は、第1コントローラ22自身の操作データないし入力データのみならず、ジャイロユニット24からの角速度データおよび第2コントローラ36からの操作データないし入力データをゲーム装置12に送信する。
【0040】
なお、ジャイロユニット24を第1コントローラ22に装着しない場合には、第2コントローラ36の操作データないし入力データはケーブル36b、差し込みプラグ36aを介して第1コントローラ22に与えられる。
【0041】
図1に戻って、ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。図示は省略するが、ディスクスロット16の周囲には、LEDと導光板とが配置され、様々な処理に応答させて、ディスクスロット16を点灯または点滅させることが可能である。
【0042】
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という。)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置12では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカードには当該他のアプリケーションのデータを保存することができる。
【0043】
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
【0044】
図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の前方に向けて赤外光を出力する。
【0045】
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0046】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるために第1コントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、第1コントローラ22自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
【0047】
ただし、ビデオゲームや他のアプリケーションのプログラムは、ゲーム装置12の内部メモリ(フラッシュメモリ44(図2参照))に記憶(インストール)しておき、当該内部メモリから実行するようにしてもよい。かかる場合には,光ディスク18のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
【0048】
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられ、ゲームプロセッサとして機能する。また、CPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
【0049】
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク18からプログラム,画像データやサウンドデータ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
【0050】
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後述する。
【0051】
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
【0052】
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。ただし、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
【0053】
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
【0054】
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ34aから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【0055】
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ34およびスピーカ34aに出力される。したがって、ゲーム画面がモニタ34に表示され、ゲームに必要な音(音楽)がスピーカ34aから出力される。
【0056】
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60およびメモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
【0057】
図示は省略するが、入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(「送信データ」とする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(「受信データ」とする)を、ネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、当該受信データをフラッシュメモリ44に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ42aは、ダウンロードサーバからダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、そのダウンロードデータをフラッシュメモリ44に記憶する。
【0058】
また、入出力プロセッサ42aは、第1コントローラ22から送信されるコントローラデータをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。コントローラデータは、CPU40の処理(たとえば、ゲーム処理)によって利用された後、バッファ領域から消去される。
【0059】
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格に従って第1コントローラ22との間で通信を行う。また、図2では、簡単のため、ジャイロユニット24および第2コントローラ36は省略してある。
【0060】
さらに、入出力プロセッサ42aには、拡張コネクタ60およびメモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、第1コントローラ22および第2コントローラ36とは異なるコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60やメモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0061】
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング14)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、システムLSI42には、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、通常の通電状態となるモード(「通常モード」と呼ぶこととする)が設定される。一方、電源ボタン20aがオフされると、システムLSI42には、ゲーム装置12の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という)が設定される。
【0062】
この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、CPU40がアプリケーションを実行することはない。
【0063】
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動しないようにして、消費電力を低減するようにしてある。
【0064】
また、図示は省略するが、ゲーム装置12のハウジング14内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
【0065】
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
【0066】
また、通常モードとスタンバイモードとの切り替えは、第1コントローラ22の電源スイッチ26h(図3(B)参照)のオン/オフの切り替えによって、遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52aへの電源供給を行わない設定にしてもよい。
【0067】
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク18が排出される。
【0068】
図3(A)ないし図3(E)は、第1コントローラ22の外観の一例を示す。図3(A)は第1コントローラ22の先端面を示し、図3(B)は第1コントローラ22の上面を示し、図3(C)は第1コントローラ22の右側面を示し、図3(D)は第1コントローラ22の下面を示し、そして、図3(E)は第1コントローラ22の後端面を示す。
【0069】
図3(A)ないし図3(E)を参照して、第1コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング22a(第1コントローラ22)には、入力手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(B)に示すように、ハウジング22aの上面には、十字キー26a,1ボタン26b,2ボタン26c,Aボタン26d,−ボタン26e,HOMEボタン26f,+ボタン26gおよび電源スイッチ26hが設けられる。また、図3(C)および図3(D)に示すように、ハウジング22aの下面に傾斜面が形成されており、この傾斜面に、Bトリガースイッチ26iが設けられる。
【0070】
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したり、単に方向を指示したりすることができる。
【0071】
1ボタン26bおよび2ボタン26cは、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン26bおよび2ボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
【0072】
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Aボタンスイッチ26dは、第1コントローラ22をポインティングデバイスとして用いる場合に、ゲーム画面上でポインタ(指示画像)が指示するアイコンないしボタン画像の決定を指示するために使用される。たとえば、アイコンやボタン画像が決定されると、これらに対応して予め設定されている指示ないし命令(コマンド)を入力することができる。
【0073】
−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hもまた、押しボタンスイッチである。−ボタン26eは、ゲームモードを選択するために使用される。HOMEボタン26fは、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン26gは、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ26hは、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
【0074】
なお、この実施例では、第1コントローラ22自体をオン/オフするための電源スイッチは設けておらず、第1コントローラ22の入力手段26のいずれかを操作することによって第1コントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
【0075】
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、第1コントローラ22で選択した位置を指定したりするために使用される。また、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションやコマンドなどを取り消すなどのために使用される。
【0076】
また、図3(E)に示すように、ハウジング22aの後端面にコネクタ22bが設けられ、また、図3(B)に示すように、ハウジング22aの上面であり、後端面側にはインジケータ22cが設けられる。この実施例では、コネクタ22bは、主として、ジャイロユニット24を接続するために設けられる。インジケータ22cは、たとえば、4つのLEDで構成される。たとえば、インジケータ22cでは、4つのうちのいずれか1つを点灯させることにより、点灯したLEDに応じて、第1コントローラ22の識別情報(コントローラ番号)を示すことができる。また、インジケータ22cでは、点灯させるLEDの個数によって第1コントローラ22の電池残量を示すこともできる。
【0077】
さらに、第1コントローラ22は、撮像情報演算部80(図7参照)を有しており、図3(A)に示すように、ハウジング22aの先端面には撮像情報演算部80の光入射口22dが設けられる。また、第1コントローラ22は、スピーカ86(図7参照)を有しており、このスピーカ86は、図3(B)に示すように、ハウジング22aの上面であり、1ボタン26bとHOMEボタン26fとの間に設けられる音抜き孔22eに対応して、ハウジング22a内部に設けられる。
【0078】
なお、図3(A)ないし図3(E)に示した第1コントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
【0079】
図4(A)は、図1に示したように、第1コントローラ22にジャイロユニット24を接続した状態を示す図解図である。ジャイロユニット24は、第1コントローラ22の後端面側(インジケータ22c側)に接続される。図4(B)に示すように、ジャイロユニット24は、第1コントローラ22と同様に、プラスチック成型によって形成されたハウジング24aを有している。ハウジング24aは、略立方体形状であり、第1コントローラ22に接続される側の面に、第1コントローラ22のコネクタ22bに連結される差し込みプラグ24bが設けられる。また、図4(C)に示すように、この差し込みプラグ24が設けられる面の反対側の面には、コネクタ24cが設けられる。詳細な説明は省略するが、ジャイロユニット24が第1コントローラ22に連結させると、ロック機構によって、その連結状態が維持される。この連結状態は、ジャイロユニット24の両側面に設けられた解除ボタン24dが押されると、解除される。したがって、第1コントローラ22にジャイロユニット24を着脱することが可能である。
【0080】
図5には第2コントローラ36の本体の外観の一例が示される。図5(A)は、第2コントローラ36を上面後方から見た斜視図であり、図5(B)は、第2コントローラ36を下面前方から見た斜視図である。なお、図5では、第2コントローラ36の差し込みプラグ36aおよびケーブル36bは省略されている。この第2コントローラ36は、たとえばプラスチック成型によって形成されたハウジング36cを有している。図5(A)および(B)に示すように、ハウジング36cは、平面視では、前後方向(Z軸方向)に略細長い楕円形状を有し、後端側の左右方向(X軸方向)の幅が先端側のそれよりも狭くされている。また、ハウジング36cは、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している。ハウジング36cは、第1コントローラ22と同様に、片手で把持可能な大きさであるが、長手方向(Z軸方向)の長さは、第1コントローラ22のハウジング22aよりもやや短くされている。この第2コントローラ36でも、プレイヤは、ボタンやスティックを操作することと、第2コントローラ36自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
【0081】
ハウジング36cの上面の先端側には、アナログジョイスティック100aが設けられる。ハウジング36cの先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向(図5に示すY軸方向)に並べて、Cボタン100bおよびZボタン100cが設けられる。アナログジョイスティック10aおよび各ボタン100b,100cには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第2コントローラ36に設けられるアナログジョイスティック100aおよび各ボタン100b,100cは、包括的に入力手段100として示されることもある。
【0082】
このゲームシステム10では、ボタン操作だけでなく、第1コントローラ22自体や第2コントローラ36自体を動かすことによっても、ゲームなどのアプリケーションに対する入力を行うことができる。ゲームをプレイする際には、たとえば図6に示すように、プレイヤは、その右手で第1コントローラ22を持ち、その左手で第2コントローラ36を持つ。また、図面では分かりにくいが、第1コントローラ22の後端面側には、ストラップ38が装着されており、このストラップ38がプレイヤの右手の手首に掛けられる。したがって、プレイ中に第1コントローラ22が離脱するのが防止される。
【0083】
上述したように、第1コントローラ22には3軸方向の加速度を検出する加速度センサ74が内蔵され、第2コントローラ36にも同様の加速度センサ102が内蔵されている。第1コントローラ22および第2コントローラ36がそれぞれプレイヤによって動かされると、加速度センサ84および加速度センサ90によって、それぞれのコントローラ自身の動きを示す3軸方向(図4、図5参照)の加速度値が検出される。また、この実施例では、第1コントローラ22には、ジャイロユニット24が装着されているため、第1コントローラ22自身の動きを示す3軸周り(図4参照)の角速度値がさらに検出される。
【0084】
これらの検出値に対応するデータは、上述のコントローラデータに含まれてゲーム装置12に送信される。ゲーム装置12では、コントローラ14からのコントローラデータは、アンテナ52aおよび無線コントローラモジュール52を介して受信され、受信されたコントローラデータは、入出力プロセッサ42aによって、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に書き込まれる。CPU40は、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に格納されたコントローラデータを読み出し、このコントローラデータから検出値つまりコントローラ14によって検出された加速度および/または角速度の値を復元する。
【0085】
CPU44はまた、このような復元処理と並行して、復元された加速度から第1コントローラ22や第2コントローラ36の速度を計算する処理を実行してもよい。さらに並行して、計算された速度から第1コントローラ22や第2コントローラ36の移動距離ないし位置を求めることもできる。一方、復元された角速度からは、第1コントローラ22の回転角が求まる。
【0086】
なお、加速度を積算して速度を求めたり、角速度を積算して回転角を求めたりする際の初期値(積分定数)は、たとえば、後述する撮像情報演算部80のからの位置座標データに基づいて計算できる。位置座標データはまた、積算によって蓄積されていく誤差の修正にも用いることができる。
【0087】
ゲーム処理は、こうして求められた加速度、速度、移動距離、角速度および回転角などの変数に基づいて実行される。したがって、上記の処理は全てを行わなくともよく、ゲーム処理に必要な変数を適宜算出すればよい。なお、角速度や回転角も、原理的には加速度から計算し得るが、そのためには、ゲームプログラムに複雑なルーチンが必要で、CPU44にも重い処理負荷がかかる。ジャイロユニット24を利用することで、プログラム開発が容易になり、CPU40の処理負荷も軽減される。
【0088】
図7は、第1コントローラ22、ジャイロユニット24および第2コントローラ36の電気的な構成を示すブロック図である。この図7を参照して、第1コントローラ22はプロセッサ70を含み、このプロセッサ70には、内部バス(図示せず)によって、コネクタ22b、入力手段26、メモリ72、加速度センサ74、無線モジュール76、撮像情報演算部80、LED82(インジケータ22c)、バイブレータ84、スピーカ86および電源回路88が接続される。また、無線モジュール76には、アンテナ78が接続される。
【0089】
なお、簡単のため、図7では省略するが、上述したように、インジケータ22cは4つのLED82によって構成される。
【0090】
プロセッサ70は、第1コントローラ22の全体制御を司り、入力手段26、加速度センサ74および撮像情報演算部80によって入力された情報(入力情報)を、コントローラデータとして無線モジュール76およびアンテナ78を介してゲーム装置12に送信(入力)する。このとき、プロセッサ70は、メモリ72を作業領域ないしバッファ領域として用いる。また、上述した入力手段26(26a−26i)からの操作信号(操作データ)は、プロセッサ70に入力され、プロセッサ70は操作データを一旦メモリ72に記憶する。
【0091】
加速度センサ74は、図4に示すように、第1コントローラ22の縦方向(Y軸方向)、横方向(X軸方向)および前後方向(Z軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
【0092】
たとえば、加速度センサ74は、X軸,Y軸,Z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をプロセッサ70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ70は、加速度センサ74から与えられる加速度データを検出し、一旦メモリ72に記憶する。したがって、検出された加速度に適宜な演算処理を施すことによって、第1コントローラ22の傾きや回転、重力方向に対する加速度センサ74の姿勢などを算出することができる。また、振り等によって第1コントローラ22に加えられた動きについても同様に算出することができる。
【0093】
プロセッサ70は、第1コントローラ22の操作データ、第1コントローラ22の加速度データ、後述するマーカ座標データ、後述する角速度データ、後述する第2コントローラの操作データおよび後述する第2コントローラの加速度データの少なくとも1つを含むコントローラデータを作成し、作成したコントローラデータを、ゲーム装置12に送信する。
【0094】
なお、図3(A)−図3(E)では省略したが、この実施例では、加速度センサ74は、ハウジング22a内部の基板上の十字キー26aが配置される付近に設けられる。
【0095】
無線モジュール76は、たとえばBluetooth(登録商標)の技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ78から放射する。つまり、コントローラデータは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(第1コントローラ22)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、第1コントローラ22からのコントローラデータを取得することができる。そして、CPU40は、取得したコントローラデータとアプリケーションプログラム(ゲームプログラム)とに従ってアプリケーションの処理(ゲーム処理)を行う。
【0096】
さらに、上述したように、第1コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ80a、レンズ80b、撮像素子80cおよび画像処理回路80dによって構成される。赤外線フィルタ80aは、第1コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ340mおよび340nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ80aを設けることによってマーカ340mおよび340nの画像をより正確に撮像することができる。レンズ80bは、赤外線フィルタ80aを透過した赤外線を集光して撮像素子80cへ出射する。撮像素子80cは、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ80bによって集光された赤外線を撮像する。したがって、撮像素子80cは、赤外線フィルタ80aを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子80cによって撮像された画像を撮像画像と呼ぶ。撮像素子80cによって生成された画像データは、画像処理回路80dで処理される。画像処理回路80dは、撮像画像内における撮像対象(マーカ340mおよび340n)の位置を算出し、当該位置を示す各座標値を撮像データ(後述するマーカ座標データ)としてプロセッサ70に出力する。なお、画像処理回路80dにおける処理については後述する。
【0097】
また、第1コントローラ22には、ジャイロユニット24が接続される。図5からも分かるように、差し込みプラグ24bは、コネクタ22bに接続される。差し込みプラグ24bは信号線によって、マイコン90に接続される。マイコン90には、ジャイロセンサ92が接続されるとともに、信号線によってコネクタ24cが接続される。
【0098】
ジャイロセンサ92は、図4に示すように、第1コントローラ22の縦方向の軸回り(Y軸回り)、横方向の軸回り(X軸回り)および前後方向の軸回り(Z軸回り)の3軸回りについての各々の角速度を検出する。ただし、Y軸の回転はヨー角で表わされ、X軸の回転はピッチ角で表わされ、そして、Z軸の回転はロール角で表わされる。このジャイロセンサ92は、典型的には、圧電振動型のものを用いることができるが、他の方式のものを用いるようにしてもよい。
【0099】
たとえば、ジャイロセンサ92は、X軸,Y軸,Z軸の各々の軸周りについての角速度(ωx,ωy,ωz)を検出し、検出した角速度をマイコン90に入力する。ただし、角速度は、マイコン90に入力されるときに、アナログ信号からディジタルのデータに変換される。この実施例で使用するジャイロセンサ92は、各軸についての角速度を0〜1500dps(degree percent second)の範囲で計測可能である。ただし、後述するこの実施例の仮想ゲームにおいては、ヨー角については、900dps〜1500dpsの範囲を計測範囲とし、ピッチ角とロール角とについては、0〜1500dpsの範囲を計測範囲としてある。
【0100】
なお、センサは、好ましい実施例ではジャイロセンサ(角速度センサ)であるが、たとえば加速度センサ、速度センサ、変位センサ、回転角センサなど、他のモーションセンサでもよい。モーションセンサ以外にも、傾斜センサ、イメージセンサ、光センサ、圧力センサ、磁気センサ、温度センサなどがあり、いずれのセンサを追加する場合でも、センサの検出対象を利用した操作が可能となる。いずれのセンサを用いた場合でも、従来操作装置に接続されていた他の装置をそのまま使用しながら、操作装置に当該センサを追加することができる。
【0101】
マイコン90は、ジャイロセンサ92から与えられる角速度を検出し、検出した角速度に対応する角速度データをマイコン90に内蔵されるメモリ(図示せず)に一時記憶する。そして、マイコン90は、メモリに一時記憶された角速度データを第1コントローラ22(プロセッサ70)に送信する。したがって、コントローラデータには、角速度データが含まれる場合がある。
【0102】
なお、この実施例では、マイコン90は、角速度データをメモリに一時記憶し、或る程度まとめてプロセッサ70に送信するようにしてあるが、メモリに一時記憶せずに、そのままプロセッサ70に送信するようにしてもよい。
【0103】
また、第2コントローラ36のハウジング36c内には加速度センサ102(図7)が設けられている。この加速度センサ102としては、第1コントローラ22の加速度センサ74と同様の加速度センサが適用される。具体的には、この実施例では3軸加速度センサが適用され、第2コントローラ36の上下方向(Y軸方向)、左右方向(X軸方向)および前後方向(Z軸方向)の3軸方向のそれぞれで加速度を検知する。したがって、第1コントローラ22の場合と同様に、検出された加速度に適宜な演算処理を施すことによって、第2コントローラ36の傾きや回転、重力方向に対する加速度センサ102の姿勢などを算出することができる。また、振り等によって第2コントローラ36に加えられた動きについても同様に算出することができる。
【0104】
また、第1コントローラ22内に取替可能に収容されるバッテリ(図示せず)によって、電源が与えられる。ジャイロユニット24には、コネクタ22bおよび差し込みプラグ24bを介してこの電源が供給される。さらに、第1コントローラ22からジャイロユニット24に供給された電源の一部が、コネクタ24c、差し込みプラグ36aおよびケーブル36bを介して第2コントローラ36に与えられる。
【0105】
上述したように、ビデオゲームシステム10で第1コントローラ22および第2コントローラ36を用いてゲームをプレイする際、プレイヤは、一方の手(右手)で第1コントローラ22を把持し、他方の手(左手)で第2コントローラ36を把持する。ただし、ジャイロユニット24は、第1コントローラ22に装着されている。たとえば、ポインティングデバイスとして第1コントローラ22を使用する場合には、プレイヤは、第1コントローラ22の先端面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ340mおよび340nの方を向く状態で第1コントローラ22を把持する。ただし、図1からも分かるように、マーカ340mおよび340nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、第1コントローラ22が指示する画面上の位置を変更したり、第1コントローラ22と各マーカ340mおよび340nとの距離を変更したりすることによってゲーム操作を行う。
【0106】
図8は、マーカ340mおよび340nと、第1コントローラ22との視野角を説明するための図である。ただし、簡単のため、図8では、ジャイロユニット24および第2コントローラ36は省略してある。図8に示すように、マーカ340mおよび340nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子80cは、第1コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ340mおよび340nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子80cの視野角θ2は41°である。プレイヤは、撮像素子80cが2つのマーカ340mおよび340nからの赤外光を受光することが可能な位置および向きとなるように、第1コントローラ22を把持する。具体的には、撮像素子80cの視野角θ2の中にマーカ340mおよび340nの少なくとも一方が存在し、かつ、マーカ340mまたは340nの少なくとも一方の視野角θ1の中に第1コントローラ22が存在する状態となるように、プレイヤは第1コントローラ22を把持する。この状態にあるとき、第1コントローラ22は、マーカ340mおよび340nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲で第1コントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
【0107】
なお、第1コントローラ22の位置および向きがこの範囲外となった場合、ジャイロユニット24で検出される角速度に基づいて第1コントローラ22の位置および向きに基づいたゲーム操作を行う。したがって、以下では、上記範囲を「ポインティング操作可能範囲」と呼ぶ。
【0108】
ポインティング操作可能範囲内で第1コントローラ22が把持される場合、撮像情報演算部80によって各マーカ340mおよび340nの画像が撮像される。すなわち、撮像素子80cによって得られる撮像画像には、撮像対象である各マーカ340mおよび340nの画像(対象画像)が含まれる。図9は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路80dは、各マーカ340mおよび340nの撮像画像における位置を表す座標(マーカ座標)を算出する。
【0109】
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路80dは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路80dは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ340mおよび340nに対応する画像340m’および340n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像である画像340m’および340n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【0110】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路80dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子80cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子80cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
【0111】
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
【0112】
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路80dは、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、プロセッサ70によってコントローラデータに含まれ、ゲーム装置12に送信される。
【0113】
ゲーム装置12(CPU40)は、受信したコントローラデータからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上における第1コントローラ22の指示位置(指示座標)と、第1コントローラ22からマーカ340mおよび340nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置から、第1コントローラ22の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、第1コントローラ22と、マーカ340mおよび340nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12は第1コントローラ22と、マーカ340mおよび340nとの間の距離を把握できる。
【0114】
なお、上述したプロセッサ70への各出力は、たとえば1/200秒周期で実行される。したがって、任意の1/200秒間に、入力手段26からの操作データと、撮像情報演算部80のからの位置座標データと、加速度センサ74からの加速度データと、ジャイロセンサ92からの角速度データと、入力手段100からの操作データと、加速度センサ102からの加速度データとが、1回ずつプロセッサ70に出力される。また、コントローラデータは、たとえば、1/200秒毎に、ゲーム装置12に送信される。無線コントローラモジュール52は、コントローラ22から所定周期(たとえば、1/200秒)で送信されるコントローラデータを受信し、当該無線コントローラモジュール52が備える図示しないバッファに蓄積する。その後、ゲーム装置12では、CPU40の指示の下、入力プロセッサ42aによって、1フレーム(画面更新単位時間:1/60秒)毎に、当該期間中に蓄積されたコントローラデータが読み出され、操作データバッファ502a(図14参照)に記憶される。CPU40は、操作データバッファ502aを参照して、コントローラデータに従ってゲーム処理を実行する。
【0115】
上述したようなゲームシステム10では、仮想ゲームをプレイすることができる。図10には、この実施例の仮想ゲームにおいて、モニタ34に表示されるゲーム画面200の一例が表示される。詳細な説明は省略するが、仮想ゲーム空間内に、地面オブジェクト、建物オブジェクトおよび地形オブジェクトのような背景オブジェクトが設けられるとともに、プレイヤオブジェクト202が配置される。また、アイテムオブジェクト(以下、単に「アイテム」という)や敵オブジェクト210なども必要に応じて仮想ゲーム空間に配置される。このような仮想ゲーム空間を仮想カメラ(図示せず)で撮影した画像がゲーム画面としてモニタ34に表示される。以下、画面を表示する場合について同様である。
【0116】
図10に示すように、ゲーム画面200には、プレイヤオブジェクト202が画面中央からやや右下寄りに表示される。この実施例のプレイヤオブジェクト202は、右手で剣オブジェクト204を持ち、左手で盾オブジェクト206を持っている。また、ゲーム画面200には、複数(ここでは、4体)の敵オブジェクト210が画面中央からやや上寄りに横一列に並んで表示される。このゲーム画面200では、敵オブジェクト210が矢オブジェクトを放ち、それをプレイヤオブジェクト202が盾オブジェクト206で防御している様子が示される。
【0117】
図面では、分かり難いが、プレイヤオブジェクト202や敵オブジェクト210が存在する場所が背景として表示される。
【0118】
さらに、ゲーム画面200の左上部には、プレイヤオブジェクト202の生命力(ライフ)を示す画像(ハート画像)220、盾オブジェクト206の防御力を示す画像222および所定のアイテムの所持数を示す画像224が表示される。また、ゲーム画面200の左下部には、第2コントローラ36の操作方法を示す画像230が表示される。そして、ゲーム画面200の右端部に、第1コントローラ22の操作方法を示す画像240が表示される。
【0119】
簡単に説明すると、第1コントローラ22では、+ボタン26gを操作すると、地図(ゲームマップ)がモニタ34に表示される。また、第1コントローラ22では、Bトリガースイッチ26iを操作すると、アイテムを選択および使用する画面がモニタ34に表示される。
【0120】
なお、ゲーム画面200には表示されていないが、ジャイロユニット24が接続された第1コントローラ22は、プレイヤオブジェククト202が持っている剣オブジェクト204に対応しており、第1コントローラ22を振ると、その動きに連動して、剣オブジェクト204が動く。これによって、敵オブジェクト210や他のオブジェクト(図示せず)を切ることができる。詳細な説明は省略するが、剣オブジェクト204を用いて、敵オブジェクト210や他のオブジェクトを切る以外の動作を行うこともできる。
【0121】
なお、ジャイロユニット24が接続された第1コントローラ22の動きに連動して剣オブジェクト204が動くことについては、本願発明の本質的な内容でないため、その詳細な説明については省略する。たとえば、本件出願人が先に出願し、既に出願公開された特開2010−142561号公報に開示された技術を用いることができる。
【0122】
また、第2コントローラ36では、Cボタン100bを操作すると、プレイヤオブジェクト202に盾オブジェクト206で弾く動作をさせることができる。したがって、敵オブジェクト210が放った矢を盾オブジェクト206で弾くことがきる。また、Zボタン100cを操作すると、プレイヤオブジェクト202に敵オブジェクト210を注目させることができる。たとえば、プレイヤオブジェクト202に敵オブジェクト210を注目させておけば、戦闘中に、プレイヤオブジェクト202が敵オブジェクト210を見失うことがない。
【0123】
なお、ゲーム画面200に表示されていないが、第2コントローラ36を振ることによっても、敵オブジェクト210や他のオブジェクトを切ることができる。詳細な説明は省略するが、第1コントローラ22を振る場合と第2コントローラ36を振る場合とでは、切り方(切る技)が異なる。
【0124】
この仮想ゲームでは、プレイヤの操作に従って、プレイヤオブジェクト202を移動させたり、剣オブジェクト204を振る動作や盾オブジェクト206で防御する動作などの所定の動作をさせたりする。これによって、プレイヤオブジェクト202は、敵オブジェクト210と闘ったり、敵オブジェクト210を倒したり、アイテムを取得したり、所定の場所に行ったりすることにより、予め用意されたステージをクリア(ステージクリア)し、最終的な目的を達成すると、ゲームクリアとなる。ただし、プレイヤオブジェクト202が、敵オブジェクト210に倒されると、ゲームオーバとなる。
【0125】
一般的に、このような仮想ゲームにおいては、敵オブジェクト210を配置する(出現させる)位置は、予め決定されていたり、敵オブジェクト210を配置する(出現させる)範囲においてランダムに決定されたりする。前者の場合には、同じ場面においては、敵オブジェクト210が出現する場所が分かっているため、仮想ゲームが単調になってしまう。また、後者の場合には、仮想ゲームが単調になることは避けられるが、プレイヤオブジェクト202からかなり離れている場所や近すぎる場所に敵オブジェクト210が出現される場合があり、敵オブジェクト210を出現させる位置が適切でない場合がある。つまり、周囲の環境などの状況に応じて適切な位置に敵オブジェクト210のようなオブジェクト(ノンプレイヤオブジェクト)を配置するのが困難であるという問題がある。
【0126】
そこで、この実施例では、地形に規定されるパラメータとプレイヤオブジェクト202の現在位置に応じて、オブジェクトの配置位置を決定することにより、状況に応じて適切にオブジェクトを配置するようにしてある。以下、敵オブジェクト210を配置する場合について具体的に説明する。
【0127】
図11(A)および図11(B)には、仮想ゲーム空間内に設けられる複数の円形状の曲線のコース(リングのコース)で形成された地形が示される。ただし、各リングの径は異なる。また、ここでは、各コースの高さは同じまたはほぼ同じとする。各コースでは、プレイヤオブジェクト202は、たとえば、所定の進行方向(ここでは、反時計回り)に移動し、出現する敵オブジェクト210と闘う。ここで、「進行方向」は、コースにおいてプレイヤオブジェクト202が進行するべき方向(順路)を意味する。また、これ以降では、プレイヤオブジェクト202が実際に移動している方向ないしプレイヤオブジェクト202が向いている方向(視界の方向)を「移動方向」ということにする。
【0128】
なお、図11(A)および図11(B)においては、進行方向と移動方向とが一致しているものとする。
【0129】
詳細な説明は省略するが、図11(A)および図11(B)に示すように、仮想ゲーム空間では、横方向がX軸方向であり、縦方向がY軸方向であり、X軸およびY軸に対して垂直な方向がZ軸方向である。また、たとえば、右方向がX軸のプラス方向であり、上方向がY軸のプラス方向であり、紙面に対して垂直上方向がZ軸のプラス方向である。後述する図13(A)においても同じ。
【0130】
たとえば、図11(A)および図11(B)に示すような地形では、プレイヤオブジェクト202は、最外周のコースから順に内周側に進む。プレイヤオブジェクト202は、各コースに配置した(出現された)敵オブジェクト210を全部または所定数以上倒すと、次のコースに進むことができる。そして、プレイヤオブジェクト202は、最内周のコースの敵オブジェクト210を全部または所定数以上倒すと、ボスの敵オブジェクト210と闘うことができる。そして、プレイヤオブジェクト202が、ボスの敵オブジェクト210を倒すと、たとえば、所定のアイテムを取得したり、他のコースが出現したりする。
【0131】
ただし、プレイヤオブジェクト202が最内周のコースに到達したときに、ボスの敵オブジェクト210と闘うようにすることもできる。また、ボスの敵オブジェクト210と闘わずに、所定のアイテムを取得したり、他のコースが出現したりしてもよい。これらは、ゲームプログラマや開発者によって任意に設定される事項である。
【0132】
なお、ここでは、プレイヤオブジェクト202は、最外周のコースから内周側に順次進むようにしてあるが、最内周のコースから外周側に順次進むようにしてもよい。また、プレイヤオブジェクト202の進行方向を反時計回りに設定してあるが、時計周りに設定してもよい。
【0133】
この実施例では、プレイヤオブジェクト202の現在位置Pに応じて適切に敵オブジェクト210などのオブジェクトを配置するために、外周側のコースまたは内周側のコースに拘わらず、プレイヤオブジェクト202の現在位置Pから所定距離dだけ離れた位置Qに、敵オブジェクト210を配置する(出現させる)ようにしてある。
【0134】
これは、プレイヤオブジェクト202が移動する場合に、外周側のコースおよび内周側のコースのいずれにおいても、所定の間隔(距離)ないしタイミングで敵オブジェクト210を出現させるためである。したがって、所定距離dは、直線距離ではなく、プレイヤオブジェクト202がコースに沿って移動した場合の距離(円弧状の曲線距離)である。
【0135】
また、この実施例では、コースには、敵オブジェクト210を出現させる位置Qを設定するためのレールRが設定されており、このレールR上に、敵オブジェクト210を配置するためのタグ(以下、「敵セットタグ」と呼ぶ)Tが設定される。敵セットタグTは、種類、総数、隊列情報およびセーブフラグを含む。図11(A)および図11(B)では、レールRを点線で示すとともに、敵セットタグTを逆三角形で示してあるが、これらが、実際のゲーム画面200に表示されることはない。以下、同じ。
【0136】
種類は、敵オブジェクト210を識別(特定)するための情報(敵ID)である。総数は、当該敵セットタグTが配置された位置から出現させる敵オブジェクト210の最大数である。
【0137】
隊列情報は、一度に複数の敵オブジェクト210を出現させる場合に、当該複数の敵オブジェクト210によって作られる隊列の種類および当該隊列を構成する敵オブジェクト210の数である。たとえば、隊列の種類としては、縦長の列(一列または複数列)や横長の列(一列または複数列)などが該当する。また、隊列の種類が指定されていない場合には、たとえば、所定時間毎に、1体の敵オブジェクト210を出現させる。ただし、一度に仮想ゲーム空間に出現させる敵オブジェクト210の最大数(たとえば、20)になった後では、敵オブジェクト210がプレイヤオブジェクト202に倒される度に、1体の敵オブジェクト210が出現される。または、仮想ゲーム空間内に存在する敵オブジェクト210の数が所定数以下になると、所定時間毎に、1体の敵オブジェクト210が出現される。
【0138】
セーブフラグは、当該敵セットタグTに従って敵オブジェクト210を出現させるかどうかを判定するためのフラグである。このセーブフラグは、1ビットのレジスタで構成される。セーブフラグが成立(オン)であれば、レジスタにデータ値「1」が設定され、セーブフラグが不成立(オフ)であれば、レジスタにデータ値「0」が設定される。たとえば、当該敵セットタグTに設定されたすべての敵オブジェクト210を出現させると、セーブフラグはオンされる。このセーブフラグがオンである状態が維持される場合には、その後、プレイヤオブジェクト202が同じ場所(位置P)に戻ってきたとしても、当該敵セットタグTに従って敵オブジェクト210が出現されることはない。たとえば、ボスの敵オブジェクト210を倒した場合には、セーブフラグがオンである状態が維持される。一方、セーブフラグがリセット(オフ)される場合には、その後、プレイヤオブジェクト202が同じ場所に戻ってくると、再び当該敵セットタグTに従って敵オブジェクト210が出現される。
【0139】
上述したように、外周側のコースまたは内周側のコースに拘わらず、所定の間隔ないしタイミングで、敵オブジェクト210を出現させる。このため、この実施例では、敵オブジェクト210を出現させる領域ないし範囲(以下、「領域E」という)において、敵オブジェクト210を出現させることが判断されると、プレイヤオブジェクト202の現在位置Pから当該プレイヤオブジェクト202の移動方向に所定距離dだけ離れた位置Qに敵セットタグTを配置する。ただし、上述したように、敵セットタグTは、コースに設定されたレールR上に配置される。
【0140】
ただし、敵オブジェクト210を出現させる領域Eとは、当該敵オブジェクト210を発生させることが設定された地形または場所(範囲)であり、その地形または場所(範囲)を囲む2次元の範囲で決定される。たとえば、図11(A)および図11(B)に示す複数の円形状のリングのコースで形成される地形を囲む四角形(一点鎖線で示す)の範囲が、敵オブジェクト210を出現させる領域Eである。ただし、領域Eは、上記のような地形を囲む円形の範囲で設定されてもよい。後述する渦巻状の曲線のコースで形成された地形についても同様である。
【0141】
図11(A)に示すように、プレイヤオブジェクト202が最外周のコースに存在する場合には、プレイヤオブジェクト202の現在位置Pを基準として、この現在位置Pと当該地形ないしコースを規定する中心の点Oとの距離rと、所定距離dとから、角度α(ここでは、α1)を算出する。具体的には、数1に従って算出される。
【0142】
[数1]
α=π×d÷2πr=d/(2r)
ただし、半径rは数2に従って算出される。数2では、点Oの3次元座標を(x1,y1,z1)とし、プレイヤオブジェクト202の現在位置Pの3次元座標を(x2,y2,z2)としてある。さらに、角度αを計算する際には、地形の高さについては考慮しないため、z座標は省略される。
【0143】
[数2]
r=√{(x1−x2)+(y1−y2)
図11(A)に示す例では(図11(B)も同じ)、プレイヤオブジェクト202がレールR上に存在するように記載してあるが、コースには幅があるため、実際には、プレイヤオブジェクト202がレールR上に存在するとは限らない。したがって、角度α(=α1)が求められると、点Oと現在位置Pとを通る直線L1に対して、点Oを中心に角度α1をなす直線L2が設定され、この直線L2とレールRとの交点に、敵セットタグTが設定される。ただし、直線L2は、点Oを中心として、直線L1をプレイヤオブジェクト202の移動方向に角度α1だけ回転させた直線である。以下、同じ。
【0144】
同様に、図11(B)に示すように、プレイヤオブジェクト202が最外周のコースから1つ内周側のコース上に存在する場合にも、数1および数2に従って角度α(=α2)が算出される。角度α2が求められると、点Oと現在位置Pとを通る直線L1に対して、点Oを中心に角度α2をなす直線L2が設定され、この直線L2とレールRとの交点に、敵セットタグTが設定される。
【0145】
ただし、レールRは各コースに設定されており、図11(A)および図11(B)に示す地形では、プレイヤオブジェクト202が存在するコースに設定されたレールR上に、敵セットタグTが設定される。したがって、後述する渦巻状の曲線のコースで形成された地形のように、コースの高さが変化するような場合には、適切な位置に敵セットタグTを設定するために、事前に後述する高さのチェックが行われる。
【0146】
また、レールR上に敵セットタグTを設定するのは、隊列を作った敵オブジェクト210を配置する場合に、敵オブジェクト210がコースからはみ出したり、壁面に埋もれてしまったりするような不都合を無くすためである。したがって、隊列を作らずに、1体ずつ敵オブジェクト210を出現させるような場合には、レールRが必要でない場合もある。かかる場合には、点Oを中心として、点Oとプレイヤオブジェクト202の現在位置Pとを結ぶ線分(ここでは、「第1線分」という)に対して、角度αをなす線分(ここでは、「第2線分」という)の端点(点Oとは反対側の端点)を位置Qとし、当該位置Qに敵セットタグTが設定される。
【0147】
ただし、位置Qは、第2線分の端点に設定される必要はなく、第2線分を基準とする所定範囲内に設定されてもよい。たとえば、所定範囲は、第2線部の端点を中心とする円や四角形などで規定される。ただし、この実施例では、所定の間隔ないしタイミングで、敵オブジェクト210を配置する(出現させる)ので、所定範囲内で敵セットタグTが設定される位置は予め決定されている。また、所定範囲を比較的小さく設定した場合には、その所定範囲内でランダムに敵セットタグTを設定したとしても、所定の間隔ないしタイミングで敵オブジェクト210を出現させることができる。さらに、位置Qは、第2線分の端点からプレイヤオブジェクト202の側またはその反対側に所定距離移動した位置に決定されてもよい。つまり、敵セットタグTを設定する位置Qは、第2線分に基づいて決定される位置および範囲で決定される。
【0148】
図示は省略するが、プレイヤオブジェクト202の移動方向が進行方向と逆向きである場合には、図11(A)および図11(B)とは逆方向(時計周り)に所定距離dだけ進んだ位置に敵オブジェクト210が配置されるように、レールR上に敵セットタグTが設定される。
【0149】
また、この実施例の仮想ゲームでは、図11(A)および図11(B)に示した地形とは異なり、図12のゲーム画面300に示されるような渦巻状の曲線のコースで形成される地形をプレイヤオブジェクト202が移動する場合もある。図12に示すゲーム画面300に表示された渦巻状の曲線のコースで形成される地形では、その中心に向かうに従ってコースの高さが次第に低くなる。地形ないしコースの高さの情報(高さ情報)は、後述するように、地形を規定するパラメータに含まれ、対応するデータは地形データ502dとしてメインメモリ(42e,46)に記憶される(図14参照)。ただし、高さ情報は、地形ないしコースの或る地点の高さ情報であるため、実際には、地形ないしコースに含まれる点についての3次元座標である。
【0150】
図12に示した渦巻状の曲線のコースで形成される地形を真上方向から見ると、図13(A)のように示される。したがって、図12に示すような渦巻状の地形において、敵オブジェクト210を出現させる場合には、図11(A)および図11(B)を用いて説明したのと同様に、渦巻状の曲線のコースで形成される地形の中心の点Oとプレイヤオブジェクト202の現在位置Pとの距離(半径r)と、所定距離dとから角度αが求められる。
【0151】
ただし、図13(A)からも分かるように、渦巻状の曲線のコースで形成される地形では、最外周から最内周までコースは繋がっている。このため、プレイヤオブジェクト202の現在位置Pによっては、角度αだけでは、敵セットタグTを設定するレールRが現在位置Pよりも内周側なのか外周側なのか分からない場合がある。
【0152】
したがって、この実施例では、渦巻状の曲線のコースで形成される地形のように、コースの高さが変化する場合には、プレイヤオブジェクト202の移動方向におけるコースの高さをさらに考慮して、敵セットタグTを設定するようにしてある。具体的には、プレイヤオブジェクト202の現在位置Pの上方または下方の所定長さhの範囲に含まれるかどうかが判断される。以下、この高さの判断を「高さチェック」ということがある。
【0153】
上述したように、図12に示す渦巻状の曲線のコースで形成される地形では、最外周から最内周に向かう方向がプレイヤオブジェクト202の進行方向である。したがって、図13(B)に示すように、プレイヤオブジェクト202が進行方向に移動している場合には、プレイヤオブジェクト202の現在位置Pの高さから下方向に所定長さhの範囲内に在るレールR上に、敵セットタグTを設定する必要がある。したがって、図13(B)から分かるように、図13(A)に示す直線L2と交差する点A、B、Cのうち、点Bおよび点Cは所定長さhの範囲外であり、高さの条件を満たさない。これに対して、点Aは所定長さhの範囲内であり、高さの条件を満たす。このため、点Aが敵セットタグTを設定する位置Qに決定され、当該敵セットタグTが設定される。
【0154】
ただし、この実施例では、プレイヤオブジェクト202の移動方向の所定距離d先に敵セットタグTが設定される。このため、図13(A)および図13(B)に示す地形において、プレイヤオブジェクト202が進行方向とは逆向きに移動する場合には、プレイヤオブジェクト202の現在位置Pの高さから上方向に所定長さhの範囲内に在るレールR上の点に、敵セットタグTが設定される。
【0155】
なお、この実施例では、プレイヤオブジェクト202の足元の位置を、当該プレイヤオブジェクト202の現在位置Pに設定してある。ただし、高さチェックのための所定長さhは、地形毎に予め決定されている。
【0156】
また、図示等は省略するが、図11(A)および図11(B)に示した場合と同様に、渦巻状の地形においても、当該地形ないし渦巻き状のコースの中心の点Oとプレイヤオブジェクト202の現在位置Pとの水平距離(半径r)が短い程(長い程)、敵セットタグTを設定する位置Qを決定するための角度αが大きく(小さく)なる。
【0157】
なお、図示は省略するが、図11(A)および図11(B)に示した複数の円形状のリングのコースで形成された地形のように、渦巻状の曲線のコースで形成された地形の高さが変化しない場合には、直線L1と角度αをなす直線L2と交差するレールR上の点のうち、敵セットタグTを設定する点は次のようにして決定される。直線L2とコースに設定されたレールRとが交差する複数の点(ここでは、「候補の点」という)のうち、中心の点Oと候補の点とを結ぶ線分(ここでは、「第3線分」という)の長さが、中心の点Oとプレイヤオブジェクト202とを結ぶ線分(ここでは、「第4線分」という)の長さとほぼ等しい候補の点が敵セットタグTを設定する点に決定される。
【0158】
たとえば、プレイヤオブジェクト202の移動方向が渦の中心に向かう方向である場合には、第4線分よりも若干短い第3線分の端点となる候補の点が選択される。一方、プレイヤオブジェクト202の移動方向が渦の中心とは逆方向である場合には、第4線分よりも若干長い第3線分の端点となる候補の点が選択される。
【0159】
また、この実施例では、敵オブジェクト210を出現させる領域E内では、最初に敵セットタグTが設定された後では、所定のタイミング(設定タイミング)で、2つ目以降の敵セットタグTが設定される。これは、当該シーンや仮想ゲーム空間内に存在する敵オブジェクト210の数を調整することにより、CPU40の処理負荷を制限(抑制)するためである。
【0160】
たとえば、設定タイミングであるかどうかは、以下の所定の条件(設定条件)のうちのいずれか1つを満たすかどうかで判断される。ただし、設定条件を満たすかどうかの判断は、1つ前の敵セットタグTを設定した後に行われる。
【0161】
(1)所定時間tが経過したこと。(2)プレイヤオブジェクト202が所定距離D以上移動したこと。(3)プレイヤオブジェクト202が当該領域E内の所定の範囲に入ったこと。(4)現在のシーンまたは当該領域Eに存在する敵オブジェクト210の数が所定数以下であること。(5)プレイヤオブジェクト202が倒した敵オブジェクト210の数が所定数以上であること。(6)出現した敵オブジェクト210の数が所定数以上であること、または敵オブジェクト210が出現した回数が所定回数以上であること。(7)プレイヤオブジェクト202のライフが所定値以下であること。
【0162】
たとえば、プレイヤオブジェクト202が所定距離D以上移動したときに、設定条件を満たし、すなわち設定タイミングとなり、敵セットタグTを設定するので、各敵セットタグTにおいて敵オブジェクト210の種類を異なるように設定しておけば、プレイヤオブジェクト202の移動に従って、異なる敵オブジェクト210を次々と出現させることができる。
【0163】
なお、上記の設定条件のいずれか2つ以上を満たす場合に、設定タイミングであると判断するようにしてもよい。
【0164】
また、上記の所定時間t、所定距離D、所定回数は、仮想ゲームの開発者やプログラマが任意に設定する事項である。また、仮想ゲームの進行状況やゲームレベル等に応じて可変的に設定されてもよい。
【0165】
また、上述したように、設定条件は、領域Eにおいて、2つ目以降の敵セットタグTが設定される場合に判断される。したがって、当該領域Eに敵セットタグTが1つも設定されていない場合には、当該領域Eにプレイヤオブジェクト202が入ったときに、設定タイミングであると判断される。ただし、プレイヤオブジェクト202が当該領域Eに入って、所定の場所まで進んだときや所定の範囲に入ったときに、設定タイミングであると判断するようにしてもよい。
【0166】
また、敵セットタグTが設定されると、当該敵セットタグTに従って、当該敵セットタグTが設定された位置Qに敵オブジェクト210が配置される。つまり、敵オブジェクト210が出現される。ただし、複数の敵オブジェクト210が隊列を作る場合には、位置Qを基準に、当該複数の敵オブジェクト210が隊列を作って配置される。
【0167】
その後、所定時間毎に、1体の敵オブジェクト210が位置Qに配置される。また、隊列を作っている場合には、プレイヤオブジェクト202に倒された敵オブジェクト210が最初に配置(出現)されていた位置に、新たに複数の敵オブジェクト210が隊列を作って配置される。
【0168】
ただし、これらの方法に限定される必要はなく、当該シーンまたは仮想ゲーム空間に出現される敵オブジェクト210の最大数を超えない範囲で、適宜敵オブジェクト210は配置される。
【0169】
また、敵セットタグTが示す総数の敵オブジェクト210が配置されると、セーブフラグがオンされ、オンの状態が維持される場合には、当該敵セットタグTが設定された位置Qでは、敵オブジェクト210は配置されない。
【0170】
なお、敵オブジェクト210が位置Qまたは位置Qを基準に配置されると、プログラム(後述するオブジェクト制御プログラム500e)に従って、移動されたり、プレイヤオブジェクト202を攻撃したりする。
【0171】
図14は、図2に示したメインメモリ(42eまたは46)のメモリマップの一例を示す図解図である。図14に示すように、メインメモリ(42e,46)は、プログラム記憶領域500およびデータ記憶領域502を含む。プログラム記憶領域500には、画像処理プログラムを含むゲームプログラムが記憶される。ゲームプログラムは、ゲームメイン処理プログラム500a、画像生成プログラム500b、画像表示プログラム500c、操作入力検出プログラム500d、オブジェクト制御プログラム500eおよび敵配置位置決定プログラム500fなどを含む。たとえば、画像処理プログラムは、画像生成プログラム500b、画像表示プログラム500c、操作入力検出プログラム500d、オブジェクト制御プログラム500e、および敵配置位置決定プログラム500fによって構成される。
【0172】
ゲームメイン処理プログラム500aは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム500bは、後述する画像データ502bを用いて、モニタ34に表示する画面(200、300など)に対応するゲーム画像データを生成するためのプログラムである。画面表示プログラム500cは、画像生成プログラム500bに従って生成されたゲーム画像データをモニタ34に出力(表示・更新)するためのプログラムである。
【0173】
操作入力検出プログラム500dは、第1コントローラ22から送信されるコントローラデータを検出するためのプログラムである。オブジェクト制御プログラム500eは、コントローラデータに従ってプレイヤオブジェクト202を移動等させたり、コントローラデータに従わないで敵オブジェクト210等のノンプレイヤオブジェクトを配置したり(出現させたり)移動等させたりするためのプログラムである。ただし、オブジェクト制御プログラム500eは、後述する敵配置位置決定プログラム500fで設定された敵セットタグTに応じて、敵オブジェクト210などのノンプレイヤオブジェクトを配置する(出現させる)。
【0174】
敵配置位置決定プログラム500fは、プレイヤオブジェクト202の現在位置Pに基づいて、敵オブジェクト210を配置する(出現される)位置を決定するためのプログラムである。つまり、敵配置位置決定プログラム500fは、上述したように、敵セットタグTを設定する位置Qを決定するとともに、当該位置Qに敵セットタグTを設定する。ただし、領域E(地形)、コースおよびゲームレベルなどに応じて、設定する敵セットタグTは決定されている。
【0175】
なお、図示は省略するが、プログラム記憶領域500には、音出力プログラムやバックアッププログラムも記憶される。音出力プログラムは、プレイヤオブジェクト202および敵オブジェクト210の音声(擬声音)、効果音、音楽(BGM)などのゲームに必要な音を生成および出力するためのプログラムである。バックアッププログラムは、プレイヤの指示や所定のゲームイベントに従って、ゲームデータ(途中データ、結果データ)を、フラッシュメモリ44やメモリカードに記憶するためのプログラムである。
【0176】
データ記憶領域502には、操作データバッファ502aが設けられる。また、データ記憶領域502には、画像データ502b、現在位置データ502c、地形データ502d、レールデータ502e、半径データ502f、角度データ502gおよび敵セットタグデータ502hを記憶する。
【0177】
操作データバッファ502aは、アンテナ52aを介して無線コントローラモジュール52で受信された、第1コントローラ22からのコントローラデータを、記憶(一時記憶)するためのバッファである。操作データバッファ502aに記憶されたコントローラデータは、CPU40によって使用された後、削除(消去)される。
【0178】
画像データ502bは、ポリゴンデータおよびテクスチャデータなどのデータである。現在位置データ502cは、プレイヤオブジェクト202の現在位置Pについてのデータであり、具体的には、プレイヤオブジェクト202の現在位置Pの3次元座標のデータである。
【0179】
地形データ502dは、上述した複数の円形状のリングのコースや渦巻状の曲線のコースで形成される地形のような所定の地形についてのパラメータのデータである。具体的には、地形ないしコースを規定する所定の点(この実施例では、中心の点O)、地形ないしコースに含まれる各点の3次元座標および高さチェックに用いる所定長さhについてのデータである。ただし、地形データ502dは、複数の所定の地形のそれぞれについてのパラメータのデータを含む。また、地形ないしコースの高さが変化しない場合には、高さチェックを行う必要がないため、かかる場合には、パラメータには、所定長さhについてのデータは含まれない。
【0180】
レールデータ502eは、地形データ502dに対応する地形に設定されるレールRについてのデータである。たとえば、レールRは点の集合であり、レールデータ502eは、各点の3次元座標のデータである。詳細な説明は省略するが、複数の所定の地形のそれぞれについてレールRが設定されるため、レールデータ502eは、複数のレールRについてのデータを含む。
【0181】
半径データ502fは、所定の地形において、敵セットタグTを設定する位置を決定する場合に算出される、当該所定の地形の中心の点Oとプレイヤオブジェクト202の現在位置Pとの距離(半径r)についてのデータである。
【0182】
角度データ502gは、所定の地形において、敵セットタグTを設定する位置を決定する場合に算出される、当該所定の地形の中心の点Oとプレイヤオブジェクト202の現在位置Pとを通る直線L1と、この直線L1に対して設定される直線L2とがなす角度αについてのデータである。
【0183】
敵セットタグデータ502は、現在設定されている敵セットタグTについてのデータである。したがって、仮想ゲーム空間内に、複数の敵セットタグTが設定されている場合には、それぞれの敵セットタグTについてのデータが記憶される。
【0184】
図示は省略するが、データ記憶領域502には、音データなども記憶され、ゲーム処理に必要な、フラグやカウンタ(タイマ)も設けられる。
【0185】
具体的には、図2に示しCPU40は、図15に示すゲーム全体処理を実行する。CPU40は、ゲーム全体処理を開始すると、ステップS1で、ゲーム画面を表示する。ここでは、CPU40は、仮想ゲームを最初から開始する場合には、当該仮想ゲームの初期のゲーム画面をモニタ34に表示する。また、CPU40は、仮想ゲームを前回の続きから開始する場合には、前回の続きから開始するためのゲーム画面をモニタ34に表示する。
【0186】
次のステップS3では、操作入力を検出する。ここでは、CPU40は、アンテナ52aおよび無線コントローラ52を介して受信されたコントローラデータを、メインメモリ(42e,46)内の操作データバッファ502aに記憶する。続くステップS5では、プレイヤオブジェクト202を制御する。ここでは、CPU40は、操作データバッファ502aに記憶されたコントローラデータに従って、プレイヤオブジェクト202を移動させたり、プレイヤオブジェクト202に所定の動作をさせたりする。ただし、CPU40は、プレイヤオブジェクト202を移動させる場合には、移動後の現在位置Pの3次元座標のデータを現在位置データ502cとしてデータ記憶領域502に記憶する。つまり、現在位置データ502cが更新される。
【0187】
次のステップS7では、敵オブジェクト210を制御する。ここでは、CPU40は、敵セットタグTに従って、敵オブジェクト210を配置する(出現させる)。また、CPU40は、ゲームプログラムに従って、敵オブジェクト210を移動させたり、敵オブジェクト210に所定の動作をさせたりする。
【0188】
詳細な説明は省略するが、ステップS5およびS7の処理によって、プレイヤオブジェクト202と敵オブジェクト210とが遭遇したり、闘ったりする。また、これらの処理によって、ゲーム画面が更新される。さらに、図示は省略するが、ステップS5の処理によって、プレイヤオブジェクト202がアイテムを取得すれば、当該アイテムが所持アイテムとして追加され、アイテムを使用すると、当該アイテムが所持アイテムから消去される。
【0189】
次のステップS9では、各種パラメータを更新する。ここでは、CPU40は、プレイヤオブジェクト202や敵オブジェクト210のライフを変化(低減または増加)させたり、プレイヤオブジェクト202のレベルを変化(増加)させたり、プレイヤオブジェクト202の攻撃力や防御力を変化(低減または増加)させたりする。
【0190】
続いて、ステップS11では、ゲームクリアかどうかを判断する。たとえば、CPU40は、プレイヤないしプレイヤオブジェクト202が全ステージをクリアしたかどうかを判断する。ステップS11で“YES”であれば、つまりゲームクリアであれば、ステップS13で、ゲームクリア処理を実行して、ゲーム全体処理を終了する。たとえば、ステップS13では、CPU40は、ゲームクリアであることを表現するゲーム画面をモニタ34に表示したり、そのことを表現する音ないし音楽をスピーカ34aから出力したりする。
【0191】
一方、ステップS11で“NO”であれば、つまりゲームクリアでなければ、ステップS15で、ゲームオーバかどうかを判断する。たとえば、CPU40は、プレイヤオブジェクト202のライフが0以下となり、当該プレイヤオブジェクト202が倒されたかどうかを判断する。ステップS15で“YES”であれば、つまりゲームオーバであれば、ステップS17で、ゲームオーバ処理を実行して、ゲーム全体処理を終了する。たとえば、ステップS17では、CPU40は、ゲームオーバであることを表現するゲーム画面をモニタ34に表示したり、そのことを表現する音ないし音楽をスピーカ34aから出力したりする。
【0192】
なお、ゲームクリアまたはゲームオーバの場合に、ゲーム全体処理を終了するようにしてあるが、プレイヤの操作に従って、ゲーム全体処理を終了することもある。また、図示は省略するが、プレイヤの操作や所定のゲームイベントに従って、ゲームデータのバックアップ処理が実行されることもある。
【0193】
また、ステップS15で“NO”であれば、つまりゲームオーバでなければ、ステップS19で、ステージクリアかどうかを判断する。たとえば、CPU40は、現在のステージにおいて、プレイヤオブジェクト202がボスの敵オブジェクト202を倒したかどうかを判断する。
【0194】
ステップS19で“NO”であれば、つまりステージクリアでなければ、そのままステップS3に戻る。一方、ステップS19で“YES”であれば、つまりステージクリアであれば、ステップS21で、ステージクリア処理を実行する。ここでは、CPU40は、ステージクリアであることを表現するゲーム画面をモニタ34に表示したり、そのことを表現する音ないし音楽をスピーカ34aから出力したりする。
【0195】
次のステップS23では、次のステージに進み、ステップS3に戻る。たとえば、ステップS23では、CPU40は、プレイヤオブジェクト202を、次のステージの初期位置(スタート地点)に移動させる。
【0196】
図16は、図2に示したCPU40の敵配置位置決定処理のフロー図である。CPU40は、ゲーム全体処理とは別のタスクで、この敵配置位置決定処理を並列的に実行する。ただし、この敵配置位置決定処理は、ゲーム全体処理が開始されたときに開始される。
【0197】
図16に示すように、CPU40は、敵配置位置決定処理を開始すると、ステップS51で、プレイヤオブジェクト202の現在位置を検出する。ここでは、CPU40は、データ記憶領域502を参照して、現在位置データ502cに対応するプレイヤオブジェクト202の現在位置Pの3次元座標を取得する。
【0198】
続くステップS53では、プレイヤオブジェクト202の現在位置Pが敵オブジェクト210を出現させる領域E内であるかどうかを判断する。つまり、CPU40は、現在位置Pが、地形データ502dが記憶されている地形の領域E内であるかどうかを判断する。ただし、現在位置Pが領域E内であるかどうかは、当該現在位置Pの3次元座標のうち、高さ情報(Z座標)を除く2次元座標(XY座標)で判断される。
【0199】
ステップS53で“NO”であれば、つまりプレイヤオブジェクト202の現在位置Pが敵オブジェクト210を出現させる領域E外であれば、そのままステップS51に戻る。一方、ステップS53で“YES”であれば、つまりプレイヤオブジェクト202の現在位置Pが敵オブジェクト210を出現させる領域E内であれば、ステップS55で、敵オブジェクト210を出現させるタイミングであるかどうかを判断する。この判断については、上述したとおりである。
【0200】
ステップS55で“NO”であれば、つまり敵オブジェクト210を出現させるタイミングでなければ、そのままステップS51に戻る。一方、ステップS55で“YES”であれば、つまり敵オブジェクト210を出現させるタイミングであれば、ステップS57で、半径rを算出する。ここでは、CPU40は、数2に従って、地形の中心の点Oとプレイヤオブジェクト202の現在位置Pとの水平距離を算出する。次のステップS59では、角度αを算出する。ここでは、CPU40は、先に算出した半径rおよび所定距離dを用いて、数1に従って、角度αを求める。
【0201】
そして、ステップS61では、当該地形が高さの変化する領域Eであるかどうかを判断する。ここでは、CPU40は、データ記憶領域502に記憶された地形データ502dに含まれる高さ情報を参照して、高さが変化する領域Eであるかどうかを判断する。または、CPU40は、地形データ502dに所定長さhのデータが含まれているかどうかで、高さが変化する領域Eであるかどうかを判断する。
【0202】
ステップS61で“YES”であれば、つまり当該地形が高さの変化する領域Eであれば、ステップS63で、プレイヤオブジェクト202の高さ情報(Z座標)を取得し、ステップS65で、高さを考慮して、敵セットタッグTを設定して、ステップS51に戻る。ステップS65では、CPU40は、直線L1と角度αをなす直線L2を設定する。次に、この直線L2とレールRとが交差する点のうち、プレイヤオブジェクト202の現在位置Pの高さを基準に、所定長さhの範囲内となるレールR上の点を位置Qとして決定する。そして、この位置Qに敵セットタグTを設定する。
【0203】
一方、ステップS61で“NO”であれば、つまり当該領域Eが高さの変化する領域Eでなければ、ステップS67で、現在のコース内で、敵セットタグTを設定して、ステップS51に戻る。ステップS67では、CPU40は、直線L1と角度αをなす直線L2を設定する。次に、この直線L2とレールRとが交差する点のうち、プレイヤオブジェクト202の現在位置Pを含むコースに設定されたレールR上の点を位置Qとして決定する。そして、この位置Qに敵セットタグTを設定する。
【0204】
ただし、上述したように、設定する敵セットタグTの内容は、領域E(地形)、コースおよびゲームレベルなどに応じて決定される。
【0205】
この実施例によれば、プレイヤオブジェクトの現在位置のような基準位置と所定の地形の中心の点とに基づいて、プレイヤオブジェクトの現在位置から円弧のような曲線で所定距離だけ離れた位置に敵オブジェクトを配置するので、たとえば、プレイヤオブジェクトが円形状や渦巻状の曲線のコースなどを移動する場合に、簡単な処理方法で、同じような間隔ないしタイミングで敵オブジェクトを出現させることができる。つまり、コース上の基準位置と仮想空間に設定された地形に規定されたパラメータとに基づいて、オブジェクトの配置位置を状況に応じて適切に決定することができる。
【0206】
なお、この実施例では、敵オブジェクトを配置する場合についてのみ説明したが、同じ方法によって、所定のアイテムのような他のオブジェクト(ノンプレイヤオブジェクト)を配置することも可能である。
【0207】
また、この実施例では、複数の円形状のリングのコースや渦巻状の曲線のコースで形成された地形のように、滑らかな曲線のコースにおいて、敵セットタグTを設定するようにしたが、図17(A)に示すように、中心の点Oを共通とし、大きさの異なる複数の多角形状のリングのコースで形成された地形においても、同様の方法によって、敵セットタグTを設定することができる。ただし、図17(A)では、多角形として正12角形を示してあるが、これに限定される必要はない。図示は省略するが、図17(A)に示すような地形においてもレールRが設定される。正多角形状のリングのコースでは、同じく正多角形状のレールRを設定することもできるし、円形状のレールRを設定することもできる。
【0208】
また、この実施例では、複数の円形状のリングのコースや渦巻状の曲線のコースのように、異なる大きさ(径)の円が重なるようなコースについてのみ説明したが、これに限定される必要はない。たとえば、図17(B)に示すような、レースゲームのコースについても、同様の手法を用いることができる。具体的には、図17(B)に示すように、コーナーM1では、当該コーナーM1を規定する円C1の中心の点O1と、プレイヤオブジェクトの現在位置(図面では省略してある)とに基づいて、敵セットタグを設定する位置(オブジェクトの配置位置)が決定される。また、コーナーM2では、当該コーナーM2を規定する円C2の中心の点O2と、プレイヤオブジェクトの現在位置とに基づいて、オブジェクトの配置位置が決定される。図示等は省略するが、他のコーナーについても同様である。また、レースゲームのコースについても、レールRが設定され、このレールR上に敵セットタグが設定される。
【0209】
図17(B)に示すコースでは、コース自体が重なるような場所が無いが、たとえば、コーナーが立体的に交差したり重なったりするような場合には、上述の実施例と同様に、地形の高さも考慮される。
【0210】
なお、この発明の本質的な内容ではないが、レースゲームでは、敵オブジェクトを出現させるタイミングか否かの判断として、たとえば、プレイヤオブジェクトの速度が所定速度以上かどうかを判断するようにしてもよい。このようにすれば、たとえば、所定速度以上のプレイヤオブジェクトの場合には、敵オブジェクト(周回遅れの車などのお邪魔オブジェクト)を出現させ、所定速度未満のプレイヤオブジェクトの場合には、敵オブジェクトを出現させないようにすることができる。逆に、所定速度以上のプレイヤオブジェクトの場合には、所定のアイテム(スピードアップまたは無敵などのお助けアイテム)を出現させないが、所定速度未満のプレイヤオブジェクトの場合には、所定のアイテムを出現させることもできる。
【0211】
また、この実施例では、プレイヤオブジェクトの現在位置のような基準位置と所定の地形の中心の点とに基づいて、プレイヤオブジェクトの現在位置から円弧のような曲線で所定距離だけ離れた位置に敵オブジェクトを配置するようにした。たとえば、敵オブジェクトを配置(出現)させる位置が予め決定されている場合には、敵オブジェクトの配置(出現)させる位置と、コースに沿って所定距離だけ離れた位置とで決まる所定の範囲をコース上に設定しておき、この所定の範囲にプレイヤオブジェクトが入ったときに、敵オブジェクトを出現させるようにしても、上述の実施例と同様に、プレイヤオブジェクトが移動する場合に、同じような間隔ないしタイミングで敵オブジェクトを出現させることができる。
【0212】
また、この実施例では、ジャイロユニットを第1コントローラに着脱可能な構成としたが、ジャイロユニットは第1コントローラと一体的に設けられるようにしてもよい。または、ジャイロセンサのみを第1コントローラに内蔵するようにしてもよい。
【0213】
さらに、この実施例では、据え置き型のゲーム装置を用いた場合について説明したが、表示装置およびコントローラが一体的に設けられた携帯型のゲーム装置、パーソナルコンピュータ、PDA、携帯電話機などの画像を表示する機能を備える様々な電子機器に適用することができる。
【0214】
さらにまた、この発明は、画像処理のための各処理(プログラム500b−500f)が複数のコンピュータ等によって分散処理されるような画像処理システムにも適用可能である。
【符号の説明】
【0215】
10 …ゲームシステム
12 …ゲーム装置
18 …光ディスク
22 …コントローラ
24 …ジャイロユニット
26,100 …入力手段
34 …モニタ
34a …スピーカ
40 …CPU
42 …システムLSI
42a …入出力プロセッサ
42b …GPU
42c …DSP
42d …VRAM
42e …内部メインメモリ
44 …フラッシュメモリ
46 …外部メインメモリ
48 …ROM/RTC
50 …無線通信モジュール
52 …無線コントローラモジュール
54 …ディスクドライブ
56 …AV IC
58 …AVコネクタ
60 …拡張コネクタ
62 …メモリカード用コネクタ
70 …プロセッサ
74,102 …加速度センサ
80 …画像情報演算部
80c …撮像素子
80d …画像処理回路
90 …マイコン
92 …ジャイロセンサ

【特許請求の範囲】
【請求項1】
画像処理装置のコンピュータを、
地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、
前記地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、
前記配置位置決定手段によって決定された配置位置に前記オブジェクトを配置するオブジェクト配置手段として機能させる、画像処理プログラム。
【請求項2】
前記パラメータは前記地形の所定点を含み、
前記配置位置決定手段は、前記所定点と前記基準位置を結ぶ線分の長さに基づいて特定される位置を前記オブジェクトの配置位置として決定する、請求項1記載の画像処理プログラム。
【請求項3】
前記配置位置決定手段は、前記線分と、前記所定点を中心として当該線分の長さに応じて決定される角度をなすように設定される他の線上の位置を前記オブジェクトの配置位置として決定する、請求項2記載の画像処理プログラム。
【請求項4】
前記配置位置決定手段は、前記線分と、前記所定点を中心として当該線分の長さに応じて決定される角度をなすように設定される他の線分の端部を前記オブジェクトの配置位置として決定する、請求項2または3記載の画像処理プログラム。
【請求項5】
前記角度は、前記線分の長さが大きい程、小さくなる、請求項3または4記載の画像処理プログラム。
【請求項6】
前記パラメータは前記地形の高さをさらに含む、請求項2ないし5のいずれかに記載の画像処理プログラム。
【請求項7】
前記配置位置決定手段は、前記基準位置における地形の高さと所定の関係にある高さの地形上の位置を前記オブジェクトの配置位置として決定する、請求項6記載の画像処理プログラム。
【請求項8】
前記地形は、曲線のコースを含み、
前記地形の所定点は、前記曲線のコースを規定する中心点であり、
前記基準位置は、前記曲線のコース上に設定される、請求項2ないし7のいずれかに記載の画像処理プログラム。
【請求項9】
前記地形は、渦巻状に形成される曲線のコースを含む、請求項8記載の画像処理プログラム。
【請求項10】
前記渦巻状に形成された曲線のコースは、中心に向かうに従って高さを変化される、請求項9記載の画像処理プログラム。
【請求項11】
前記オブジェクトはノンプレイヤオブジェクトであり、
前記基準位置は、プレイヤオブジェクトの現在位置であり、
前記配置位置決定手段は、前記プレイヤオブジェクトの現在の移動方向に沿って所定の間隔を有する位置に前記ノンプレイヤオブジェクトの配置位置を決定する、請求項1ないし10のいずれかに記載の画像処理プログラム。
【請求項12】
地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、
前記地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、
前記配置位置決定手段によって決定された配置位置に前記オブジェクトを配置するオブジェクト配置手段を備える、画像処理装置。
【請求項13】
画像処理装置の画像処理方法であって、
(a)地形が設定された仮想空間を仮想カメラから撮影した画像を出力し、
(b)前記地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定し、
(c)前記ステップ(b)によって決定された配置位置に前記オブジェクトを配置する、画像処理方法。
【請求項14】
地形が設定された仮想空間を仮想カメラから撮影した画像を出力する画像出力手段と、
前記地形に規定されるパラメータと所定の基準位置に基づいて、オブジェクトの配置位置を決定する配置位置決定手段と、
前記配置位置決定手段によって決定された配置位置に前記オブジェクトを配置するオブジェクト配置手段を備える、画像処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2012−252531(P2012−252531A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−124776(P2011−124776)
【出願日】平成23年6月3日(2011.6.3)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】