以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.画像生成システム
図1に本実施形態の画像生成システム(画像生成装置、ゲームシステム、ゲーム装置)の構成例を示す。画像生成システムは、処理部100、操作部160、記憶部170、表示部190、音出力部192、I/F部194、通信部196を含む。なお本実施形態の画像生成システムの構成は図1に限定されず、その構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
処理部100は、操作部160からの操作情報やプログラムなどに基づいて、入力処理、演算処理、出力処理などの各種の処理を行う。処理部100(プロセッサ)は、記憶部170(メモリー)に記憶される情報(プログラム、データ)に基づいて、本実施形態の各処理を行う。例えば処理部100は、記憶部170をワーク領域として本実施形態の各処理を実行する。この処理部100の機能は、少なくとも1つのプロセッサ(CPU、GPU等)や、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
処理部100は、入力処理部102、演算処理部110、出力処理部140を含む。入力処理部102は、各種の情報の入力処理を行う。例えば入力処理部102は、操作部160により入力されたプレーヤの操作情報を受け付ける処理を、入力処理として行う。例えば操作部160で検出された操作情報を取得する処理を行う。また入力処理部102は、記憶部170から情報を読み出す処理を、入力処理として行う。例えば読み出しコマンドで指定された情報を、記憶部170から読み出す処理を行う。また入力処理部102は、通信部196を介して情報を受信する処理を、入力処理として行う。例えば画像生成システムの外部装置(他の画像生成システム、サーバシステム等)からネットワークを介して情報を受信する処理を行う。受信処理は、通信部196に情報の受信を指示したり、通信部196が受信した情報を取得して記憶部170に書き込む処理などである。
演算処理部110は、各種の演算処理を行う。例えば演算処理部110は、ゲーム処理、オブジェクト空間設定処理、移動体演算処理、パラメータ処理、ヒット判定処理、ゲーム成績演算処理、仮想カメラ制御処理、画像生成処理、或いは音生成処理などの演算処理を行う。この演算処理部110は、ゲーム処理部111、オブジェクト空間設定部112、移動体演算部114、パラメータ処理部116、ヒット判定処理部117、ゲーム成績演算部118、仮想カメラ制御部119、画像生成部120、音生成部130を含む。
ゲーム処理は、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などである。このゲーム処理はゲーム処理部111(ゲーム処理のプログラムモジュール)により実行される。
オブジェクト空間設定処理は、オブジェクト空間に複数のオブジェクトを配置設定する処理である。このオブジェクト空間設定処理はオブジェクト空間設定部112(オブジェクト空間設定処理のプログラムモジュール)により実行される。例えばオブジェクト空間設定部112は、移動体(飛行機、ロボット、船舶、戦闘機、戦車、戦艦、人、動物、車等)、マップ(地形)、建物、コース(道路)、樹木、壁、水面などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)を、オブジェクト空間に配置設定する。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクト情報記憶部172には、オブジェクト(パーツオブジェクト)の位置、回転角度、移動速度、移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。オブジェクト空間設定部112は、例えば各フレーム毎にこのオブジェクト情報を更新する処理などを行う。
移動体演算処理は、移動体についての各種の演算処理である。例えば移動体演算処理は、移動体(ゲームに登場する表示物)をオブジェクト空間(仮想3次元空間、3次元ゲーム空間)で移動させるための処理や、移動体を動作させるための処理である。この移動体演算処理は移動体演算部114(移動体演算処理のプログラムモジュール)により実行される。例えば移動体演算部114は、操作部160によりプレーヤが入力した操作情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、移動体(モデルオブジェクト)をオブジェクト空間内で移動させたり、移動体を動作(モーション、アニメーション)させる制御処理を行う。具体的には、移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(例えば1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
パラメータ処理は、ゲーム処理に使用される各種のパラメータを設定、演算する処理である。このパラメータ処理はパラメータ処理部116(パラメータ処理のプログラムモジュール)により実行される。パラメータ処理部116は、パラメータの値を初期設定する処理や、パラメータの値を増減させる処理などを行う。パラメータは、ゲーム処理に使用される変数であり、例えばパラメータ処理部116は、移動体(プレーヤ移動体、コンピュータ操作移動体)についてのパラメータ(攻撃パラメータ、防御パラメータ、移動制御パラメータ、ステータスパラメータ等)や、ゲーム進行についてのパラメータや、ゲーム状況についてのパラメータなどの各種のパラメータを設定、演算する処理を行う。
ヒット判定処理は、一方のオブジェクトと他方のオブジェクトの接触判定(交差判定、衝突判定)を行う処理である。このヒット判定処理はヒット判定処理部117(ヒット判定処理のプログラムモジュール)により実行される。ゲーム成績演算処理は、プレーヤのゲームでの成績を演算する処理である。例えばゲーム成績演算処理は、プレーヤがゲームで獲得するポイントや得点を演算する処理や、ゲーム内通貨、メダル又はチケットなどのゲーム成果を演算する処理である。このゲーム成績演算処理はゲーム成績演算部118(ゲーム成績演算処理のプログラムモジュール)により実行される。
仮想カメラ制御処理は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点、基準仮想カメラ)を制御する処理である。この仮想カメラ制御処理は仮想カメラ制御部119(仮想カメラ制御処理のプログラムモジュール)により実行される。具体的には仮想カメラ制御部119は、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。例えば仮想カメラにより移動体を後方から撮影する場合には、移動体の位置又は方向の変化に仮想カメラが追従するように、仮想カメラの位置(視点位置)や方向(視線方向)を制御する。この場合には、移動体演算部114で得られた移動体の位置、方向又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は方向を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
画像生成処理は、表示部190に表示される画像(ゲーム画像)を生成するための処理であり、各種の画像合成処理や画像エフェクト処理などを含むことができる。音生成処理は、音出力部192により出力されるBGM、効果音又は音声等の音(ゲーム音)を生成するための処理であり、各種の音合成処理やサウンドエフェクト処理などを含むことができる。これらの画像生成処理、音生成処理は、画像生成部120、音生成部130(画像生成処理、音生成処理のプログラムモジュール)により実行される。
例えば画像生成部120は、処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ178(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、オブジェクト空間内において所与の視点(仮想カメラ)から見える画像が生成される。
なお、画像生成部120で行われる描画処理は、頂点シェーダ処理やピクセルシェーダ処理等により実現することができる。例えば頂点処理では、頂点処理プログラム(頂点シェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。またピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ178に出力(描画)する。即ち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において所与の視点(仮想カメラ)から見える画像が生成される。
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現できる。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
出力処理部140は、各種の情報の出力処理を行う。例えば出力処理部140は、記憶部170に情報を書き込む処理を、出力処理として行う。例えば、書き込みコマンドで指定された情報を、記憶部170に書き込む処理を行う。また出力処理部140は、生成された画像の情報を表示部190に出力したり、生成された音の情報を音出力部192に出力する処理を、出力処理として行う。また出力処理部140は、通信部196を介して情報を送信する処理を、出力処理として行う。例えばゲーム装置の外部装置(他の画像生成システム、サーバシステム等)に対してネットワークを介して情報を送信する処理を行う。送信処理は、通信部196に情報の送信を指示したり、送信する情報を通信部196に指示する処理などである。
操作部160(操作デバイス)は、プレーヤ(ユーザ)が操作情報を入力するためのものであり、その機能は、方向指示キー、操作ボタン、アナログスティック、レバー、各種センサ(角速度センサ、加速度センサ等)、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
記憶部170(メモリー)は、処理部100や通信部196などのワーク領域となるもので、その機能はRAMやSSDやHDDなどにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。記憶部170は、オブジェクト情報記憶部172、密度情報記憶部174、パラメータ記憶部176、描画バッファ178を含む。
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(DVD、CD等)、HDD(ハードディスクドライブ)、或いはメモリー(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。この情報記憶媒体180に、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶できる。
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、或いはHMDなどにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
I/F(インターフェース)部194は、携帯型情報記憶媒体195とのインターフェース処理を行うものであり、その機能はI/F処理用のASICなどにより実現できる。携帯型情報記憶媒体195は、ユーザが各種の情報を保存するためのものであり、電源が非供給になった場合にもこれらの情報の記憶を保持する記憶装置である。携帯型情報記憶媒体195は、ICカード(メモリーカード)、USBメモリー、或いは磁気カードなどにより実現できる。
通信部196は、ネットワークを介して外部装置(他の画像生成システム、サーバシステム等)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバシステム(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170)に配信してもよい。このようなサーバシステムによる情報記憶媒体の使用も本発明の範囲内に含めることができる。
図2(A)〜図2(F)は本実施形態の画像生成システムのハードウェア構成例について説明する図である。本実施形態の画像生成システムは、図2(A)に示す家庭用ゲーム装置(据え置き型)、図2(B)に示すパーソナルコンピュータ(情報処理装置)、図2(C)に示す携帯型ゲーム装置、図2(D)に示す携帯型通信端末(スマートフォン、携帯電話機)、図2(E)に示す業務用ゲーム装置などの種々のハードウェア装置により実現できる。例えば本実施形態のプログラムを、これらのハードウェア装置のメモリーにインストールし、インストールしたプログラムをハードウェア装置が有するプロセッサにより実行することで、本実施形態の各処理を実現できる。或いは本実施形態の各処理は、図2(F)に示すようなサーバシステム500を利用して実現してもよい。例えば、図2(A)〜2(E)に示すハードウェア装置である端末装置TM1〜TMnを、ネットワーク510を介してサーバシステム500に通信接続する。サーバシステム500は例えば1又は複数のサーバ(管理サーバ、ゲームサーバ、課金サーバ、サービス提供サーバ、コンテンツ配信サーバ、認証サーバ、データベースサーバ、又は通信サーバ等)により実現できる。このサーバシステム500は、コミュニティ型ウェブサイトやオンラインゲームを運営するための各種サービスを提供し、ゲーム実行に必要なデータの管理や、クライアントプログラム及び各種データ等の配信を行うことができる。これにより、端末装置(TM1〜TMn)によりサーバシステム500にアクセスし、当該サーバシステム500から提供されるオンラインゲームのプレイが可能になる。本実施形態により実現されるゲームは、このようなオンラインゲームであってもよい。この場合に本実施形態の画像生成システムは、サーバシステム500により実現してもよいし、端末装置(TM1〜TMn)とサーバシステム500の分散処理により実現してもよい。
そして本実施形態の画像生成システム(画像生成装置、ゲーム装置、ゲームシステム)は、図1に示すようにオブジェクト空間設定部112と移動体演算部114とパラメータ処理部116と画像生成部120を含む。オブジェクト空間設定部112は、移動体を含む複数のオブジェクトをオブジェクト空間に配置設定する処理を行う。例えば仮想3次元空間であるオブジェクト空間でのオブジェクトの配置位置を決定し、オブジェクト情報記憶部172に記憶されるオブジェクト情報で表されるオブジェクトを配置する処理を行う。移動体演算部114は、このオブジェクト空間において移動体を移動させる移動処理を行う。例えばプレーヤの操作情報や移動処理アルゴリズムなどに基づいて、オブジェクト空間において移動体を移動させる処理を行ったり、移動体を動作(モーション)させる処理を行う。画像生成部120は、このように移動体が移動するオブジェクト空間において所与の視点(仮想カメラ)から見える画像を生成する。例えば移動体に追従する視点(移動体の位置や移動体の後方に設定された視点)から見える画像を生成する。
そして本実施形態ではパラメータ処理部116が、移動体から所与の方向に延びる線又は範囲での粒子集合体の密度情報及び移動体の位置での粒子集合体の密度情報の少なくとも1つに基づいて、移動体の攻撃パラメータ、防御パラメータ及び移動制御パラメータの少なくとも1つの設定処理(演算処理)を行う。そして、このようにして設定(演算)された攻撃パラメータ、防御パラメータ又は移動制御パラメータを用いて、例えば移動体演算部114が、移動体や移動体が発射した攻撃物を移動させる処理を行ったり、ヒット判定処理部117が、移動体が発射した攻撃物と攻撃対象とのヒット判定処理を行う。またゲーム成績演算部118が、攻撃結果等に基づくプレーヤのゲーム成績を演算する処理を行う。そして画像生成部120は、プレーヤの攻撃、防御の結果や移動体や攻撃物の移動を反映させた画像を生成する。
ここで移動体から所与の方向に延びる線又は範囲は、1つの線又は範囲であってもよいし、複数の線又は範囲であってもよい。また線又は範囲は、移動体と所与の対象(攻撃対象等)とを結ぶ線又は範囲であってもよいし、移動体の前方方向等の基準方向を基準として、所与の方向に延びる1又は複数の線又は範囲であってもよい。また粒子集合体は、多数の粒子が集まったものを画像として表示するためのものである。この粒子集合体は、パーティクル等のオブジェクトにより構成されている必要は無く、その画像として粒子の集合体のように見えるものであればよい。粒子集合体の画像としては、例えば雲、霧、塵、煙、水蒸気、又は砂嵐などの画像を想定できる。粒子集合体は、多数の粒子状のものが集まって、全体として不定形な表示物となるものを表している。例えば雲は、大気中の水蒸気が凝結して、小さな氷の結晶や水の粒になり、それが集まって不定形のものとして空気中に浮かんでいるものである。本実施形態では、このような雲等の画像を、粒子集合体の画像として生成して表示する。
また密度情報は、粒子集合体での粒子の密度(濃度)の高低(程度)や状態を表す情報であり、例えば粒子集合体の各部分において粒子集合体の密度が高いか低いかなどを表す情報である。この密度情報の密度としては、例えばボリュームレンダリング処理におけるボクセルのボクセル値などを用いることができる。
そして本実施形態では、移動体から所与の方向に延びる線又は範囲での粒子集合体の密度情報や、移動体の位置での粒子集合体の密度情報を用いて、移動体の攻撃パラメータ、防御パラメータ又は移動制御パラメータを設定する。例えば密度情報に基づいて攻撃パラメータ、防御パラメータ又は移動制御パラメータを変化させる。
ここで、移動体から所与の方向に延びる線での密度情報である線密度情報は、例えば線の複数のポイントでの複数の密度から所与の演算処理より得られるものである。例えば上記のボリュームレンダリング処理の場合には、当該線が通過する複数のボクセルのボクセル値を、これらの複数の密度として用いることができる。また線密度情報としては、例えば、上記の複数の密度の最大値、複数の密度の積算値、複数の密度の平均値、或いは複数の密度のうち所与のしきい値を超えた密度などを用いることができる。
また、移動体から所与の方向に延びる線は、プレーヤ移動体の位置からコンピュータ操作移動体の位置の方に延びる線であってもよいし、コンピュータ操作移動体の位置からプレーヤ移動体の位置の方に延びる線であってもよい。或いは、プレーヤ移動体、コンピュータ操作移動体等の移動体の位置を基準として、1又は複数の方向に延びる線であってもよい。
一方、移動体の位置での密度情報としては、例えば移動体の位置のポイント又は移動体の位置に最も近いポイントに設定された密度を用いることができる。或いは移動体の位置の周囲の複数のポイントに設定された複数の密度の平均値等を用いてよい。例えば上記のボリュームレンダリング処理の場合には、移動体が位置するボクセル(移動体の位置が属するボクセル)のボクセル値を、移動体の位置の密度情報として用いることができる。これらの密度情報は密度情報記憶部174に記憶される。例えば密度情報記憶部174は、オブジェクト空間に設定された複数のボクセルに各ボクセルに対応づけられたボクセル値として、密度情報を記憶する。
また粒子集合体の密度情報により設定される攻撃パラメータ、防御パラメータは、移動体の攻撃、防御に関するゲーム処理に使用される各種のパラメータである。例えば攻撃パラメータは、移動体の攻撃能力(攻撃性能)を表すパラメータである。例えば攻撃パラメータは、移動体が発射する攻撃物の攻撃能力(攻撃性能)を表すパラメータである。防御パラメータは、移動体の防御能力(防御性能)を表すパラメータである。例えば防御パラメータは、移動体が攻撃物を避ける能力、移動体の耐久力などを表すパラメータである。粒子集合体の密度情報により設定される移動制御パラメータは、移動体の移動制御処理に使用される各種のパラメータである。例えば移動制御パラメータは、移動体の移動能力や旋回性能などを表すパラメータである。例えば加速性能や旋回性能などを表すパラメータである。攻撃パラメータ、防御パラメータ、移動制御パラメータ等の各種のパラメータは、パラメータ記憶部176に記憶される。
本実施形態では、このような攻撃パラメータ、防御パラメータ又は移動制御パラメータを、粒子集合体の密度情報に基づいて変化させる。このようにすることで、粒子集合体の密度情報を反映させた移動体の攻撃処理、防御処理又は移動制御処理を実現できるようになる。
またパラメータ処理部116は、移動体と、移動体の攻撃対象とを結ぶ線(線分、範囲)での密度情報に基づいて、移動体の攻撃パラメータの設定処理を行う。例えば移動体演算部114は、移動体として、オブジェクト空間においてプレーヤの操作情報に基づき移動するプレーヤ移動体の移動処理を行う。即ち、プレーヤが自身の操作で自在に移動させることができるプレーヤ移動体(自機等)の移動処理を行う。そしてパラメータ処理部116は、プレーヤ移動体(移動体)とプレーヤ移動体の攻撃対象とを結ぶ線(線分、範囲)での密度情報に基づいて、プレーヤ移動体の攻撃パラメータの設定処理を行う。例えばプレーヤ移動体と攻撃対象とを結ぶ線(線分、範囲)での密度情報により表される密度が高いと判定された場合(所与のしきい値よりも高いと判定された場合)には、プレーヤ移動体の攻撃性能が上がるように攻撃パラメータを設定する。
ここで攻撃対象は、例えばコンピュータが操作するコンピュータ操作移動体(敵機、NPC等)、他のプレーヤが操作する移動体、又はオブジェクト空間のマップに配置される物体(敵陣地等)などである。本実施形態では、プレーヤ移動体(移動体)と攻撃対象とを結ぶ線(オブジェクト空間での線)を特定し、その線密度情報に基づいて、プレーヤ移動体の攻撃パラメータ(攻撃能力)を変化させる処理などを行う。
また攻撃パラメータは、例えば移動体が発射する攻撃物(ミサイル、魚雷、砲弾又はレーザー等)の追尾性能、攻撃物のロックオン性能、及び攻撃物の移動性能の少なくとも1つのパラメータである。追尾性能は、攻撃物が攻撃対象を追尾する能力を表すものであり、例えば攻撃物の旋回性能や視野角などにより規定できる。攻撃物のロックオン性能は、攻撃物のロックオン距離、ロックオン範囲、又はロックオン速度などを表すものである。攻撃物の移動性能は、攻撃物の移動速度(移動加速度)、旋回速度(旋回加速度)、又は移動の精度などを表すものである。
またパラメータ処理部116は、コンピュータ操作移動体とプレーヤ移動体とを結ぶ線(線分、範囲)での密度情報に基づいて、プレーヤ移動体の防御パラメータの設定処理を行ってもよい。例えばコンピュータ操作移動体とプレーヤ移動体とを結ぶ線(線分、範囲)での密度情報に表される密度が高いと判定された場合(所与のしきい値よりも高いと判定された場合)には、プレーヤ移動体の防御性能が上がるように防御パラメータを設定する。例えばコンピュータ操作移動体が発射する攻撃物への回避性能を高くしたり、攻撃物がプレーヤ移動体にヒットした場合のダメージが小さくなるように、防御パラメータを設定する。
またパラメータ処理部116は、移動体の位置での密度情報に基づいて、移動体の移動制御パラメータの設定処理を行う。例えばプレーヤが操作するプレーヤ移動体の位置での密度情報に基づいて、プレーヤ移動体の移動制御パラメータの設定処理を行う。例えば移動体の位置での密度情報に応じて、移動制御パラメータを変化させ、密度情報を反映させた移動体の移動制御を実現する。例えば所定密度以上の場所に所定時間以上、移動体が位置していた場合には、移動体の移動性能(旋回性能)を低下させる処理を行う。この移動制御パラメータの設定処理は、プレーヤが操作するプレーヤ移動体に対して行ってもよいし、コンピュータが操作するコンピュータ操作移動体に対して行ってもよい。
また移動体演算部114は、移動体として、オブジェクト空間においてコンピュータの操作(制御)に基づき移動するコンピュータ操作移動体(コンピュータ制御移動体)の移動処理を行う。そしてパラメータ処理部116は、コンピュータ操作移動体から第1〜第Nの方向に延びる第1〜第Nの線(線分、範囲)での密度情報に基づいて、コンピュータ操作移動体の移動制御パラメータの設定処理を行う。
ここでコンピュータ操作移動体は、所定の移動アルゴリズム(動作アルゴリズム)で移動(動作)する移動体であり、いわゆるNPC(Non Player Character)である。例えばコンピュータ操作移動体の移動アルゴリズムは、プログラムに記述されており、この移動アルゴリズムと種々のゲーム状況(戦闘状況)に基づいて、コンピュータ操作移動体の移動が制御される。
そしてこのコンピュータ操作移動体から第1〜第Nの方向に延びる第1〜第Nの線(第1〜第Nの方向を規定する線)が設定される。例えば第1の線はコンピュータ操作移動体の前方方向(広義には基準方向)に延びる線である。第2、第3の線は、各々、第1の線の方向(基準方向)に対して左方向(第2の方向)、右方向(第3の方向)となる線である。なお第1〜第Nの線は2本以下であってもよいし、3本以上であってもよい。本実施形態では、これらの第1〜第Nの線での密度情報に基づいて、コンピュータ操作移動体の移動制御パラメータを変化させる設定処理などが行われて、コンピュータ操作移動体の移動が制御される。第1〜第Nの線での密度情報は、上述した線密度情報であり、例えば線の複数のポイントでの複数の密度から所与の演算処理より得られるものである。例えばボリュームレンダリング処理の場合には、第1〜第Nの各線が通過する複数のボクセルのボクセル値を、これらの複数の密度として用いることができる。
そしてパラメータ処理部116は、第1〜第Nの線のうち、密度情報により表される密度が高いと判定された線の方向を避ける方向側に、コンピュータ操作移動体が移動するように、移動制御パラメータの設定処理を行う。別の言い方をすれば、密度情報により表される密度が低いと判定される線に対応する方向側に、コンピュータ操作移動体を移動させる。
例えば第1〜第Nの線のうち、第1の線での線密度情報が他の線に比べて高いと判定されたとする。この場合には第1の線に対応する第1の方向(例えば前方方向)を避ける方向側(例えば左方向側、右方向側)に、コンピュータ操作移動体が移動するように(避ける方向側への移動確率が増えるように)、移動制御を行う。例えばコンピュータ操作移動体の進行方向が、第1の方向から遠ざかる方向になるように、コンピュータ操作移動体を移動させる。即ち、粒子集合体の密度が高い方向を避ける方向側にコンピュータ操作移動体を移動させる。また、第1〜第Nの線のうち、第2の線での線密度情報が他の線に比べて高いと判定されたとする。この場合には第2の線に対応する第2の方向(例えば左方向)を避ける方向側(例えば右方向側、前方方向側)に、コンピュータ操作移動体が移動するように、移動制御を行う。例えばコンピュータ操作移動体の進行方向が、第2の方向から遠ざかる方向になるように、コンピュータ操作移動体を移動させる。
一方、コンピュータ操作移動体のステータス(ステータスパラメータ)が所与の状態(例えば所与のパラメータ値以下)であると判定されたとする。例えばコンピュータ操作移動体の体力パラメータ値が所与のしきい値以下になったと判定されたとする。この場合にはパラメータ処理部116は、密度情報により表される密度が高いと判定された線の方向側に、コンピュータ操作移動体が移動するように、移動制御パラメータの設定処理を行う。即ち、通常状態では、上述したように粒子集合体の密度が高い方向を避ける方向側に、コンピュータ操作移動体を移動させる。これに対して、コンピュータ操作移動体のステータスが所与の状態(例えば体力、耐久力、ヒットポイント等がしきい値よりも低い状態)であると判定された場合には、粒子集合体の密度が高い方向側に、コンピュータ操作移動体を移動させる。こうすることで、体力等が低くなって粒子集合体の中に逃げ込むようなコンピュータ操作移動体の挙動を実現できるようになる。
また画像生成部120は、プレーヤ移動体が攻撃対象を攻撃する際にプレーヤに表示される攻撃支援用表示物の表示パターンを、密度情報に応じて変化させる表示処理を行う。例えばプレーヤ移動体と攻撃対象を結ぶ線(線分、範囲)での密度情報に応じて、攻撃支援用表示物の表示パターン(表示態様)を変化させる。例えば密度情報により表される密度が高い場合と低い場合とで、攻撃支援用表示物の表示パターンを異ならせる。例えば密度が高いと判定された場合には、攻撃支援用表示物の点滅表示を行ったり、攻撃支援用表示物の色、輝度、形状又はテクスチャ等を変化させる表示処理を行う。ここで、攻撃支援用表示物は、攻撃対象の位置、方向又は状態等を、プレーヤに知らせるための表示物である。例えば攻撃支援用表示物としては、攻撃対象に追従して動く表示物を想定できる。例えばHUD(Head-Up Display)におけるコンテナなどである。また攻撃支援用表示物の表示パターンを密度情報に応じて変化させる表示処理は、攻撃支援用表示物について、予め用意された複数の表示のパターンの中から、密度情報に応じたパターンを選択するような処理であってもよい。
また画像生成部120は、密度情報に基づいて、粒子集合体の画像の生成処理を行う。例えば密度情報が高い場合には、粒子集合体(例えば雲)の密度(例えば雲密度)が高く見える画像(粒子が密集している画像)を生成する。一方、密度情報が低い場合には、粒子集合体の密度が低く見える画像(粒子がまばらな画像)を生成する。
例えば画像生成部120は、ボクセル値を用いたボリュームレンダリング処理により粒子集合体の画像の生成処理を行う。そしてパラメータ処理部116は、ボリュームレンダリング処理のボクセル値を、粒子集合体の密度情報として取得する。このように、粒子集合体の画像の生成処理を、ボリュームレンダリング処理により実現する場合には、オブジェクト空間内に対して例えば格子状の複数のボクセルを設定し、各ボクセルのボクセル値として、粒子集合体の密度情報を設定する。そして画像生成部120は、密度情報であるボクセル値を用いた公知のボリュームレンダリング処理により、粒子集合体の画像を生成する。具体的には任意の視線(レイ)に沿ってボクセル(ボリューム)をサンプリングするレイキャスティング(ray casting)によりボリュームレンダリング処理を行って、粒子集合体の画像を生成する。またパラメータ処理部116は、移動体から所与の方向に延びる線又は範囲に対応するボクセルのボクセル値に基づいて、線又は範囲の密度情報を取得し、移動体の攻撃パラメータ、防御パラメータ、或いは移動制御パラメータを設定する。或いは、移動体の位置に対応するボクセルのボクセル値に基づいて、移動体の位置での密度情報を取得し、移動体の攻撃パラメータ、防御パラメータ、或いは移動制御パラメータを設定する。
またパラメータ処理部116は、密度情報に基づく攻撃パラメータ又は防御パラメータの変化の度合いを、移動体の種類、移動体の移動状態、移動体を操作するプレーヤのステータスパラメータ、及びプレーヤの課金情報の少なくとも1つに基づいて設定する。例えば粒子集合体の密度情報に基づいて移動体の攻撃パラメータ又は防御パラメータを変化させる場合に、当該移動体が第1の種類である場合と第2の種類である場合とで、攻撃パラメータ又は防御パラメータの変化の度合い(変化量、変化態様等)を異ならせる。或いは移動体が第1の移動状態(例えば第1の速度、第1の加速度)である場合と、移動体が第2の移動状態(例えば第2の速度、第2の加速度)である場合とで、攻撃パラメータ又は防御パラメータの変化の度合いを異ならせる。或いは移動体を操作するプレーヤのステータスパラメータ(例えばレベル、階級、体力等)が、第1の状態(第1のパラメータ値)であると場合と、第2の状態(第2のパラメータ値)である場合とで、攻撃パラメータ又は防御パラメータの変化の度合いを異ならせる。或いはプレーヤが支払う課金額が第1の額である場合と第2の額である場合とで、攻撃パラメータ又は防御パラメータの変化の度合いを異ならせる。こうすることで密度情報に基づく攻撃パラメータや防御パラメータの多様な変化処理を実現できるようになる。
2.本実施形態の手法
次に本実施形態の手法について詳細に説明する。なお以下では、本実施形態を、戦闘機ゲームの画像生成システムに適用した場合について主に例にとり説明するが、本実施形態はこれに限定されない。本実施形態は、例えばロボット対戦ゲーム、戦艦ゲーム、ロールプレイングゲーム、アクションゲーム、ドライビングゲーム、或いはスポーツゲームなどの種々のジャンルのゲームの画像生成システムに適用可能である。この場合には本実施形態における移動体は、これらのゲームに登場してオブジェクト空間内(ゲーム空間内)を移動する表示物(ロボット、船、人、魔物、動物、車等)になる。また以下では、粒子集合体が雲である場合を主に例にとり説明するが、本実施形態はこれに限定されない。粒子集合体としては、例えば雲、霧、塵、煙、水蒸気、又は砂嵐などの種々のものを想定できる。
2.1 雲の表現
図3、図4に本実施形態の画像生成システムにより生成されるゲーム画像の例を示す。この戦闘機ゲームは、リアルな3次元空間を360度、自由に飛び回る爽快感と共に、自身の判断で次々に敵を定めて撃墜、破壊する快感を得ながら、難局を勝ち抜いて行く達成感を得られるゲーム(フライトシューティングゲーム)である。
このゲームでは、自然現象の美しさ、壮大さ、迫力をプレーヤが体感できるように、多彩な形状、種類の雲(広義には粒子集合体)がボリューム表現して構成された空の画像を、ゲーム画像として生成する。これにより、雲の作りだす自然現象の美しさ、壮大さ、迫力をプレーヤは体感でき、表情豊かな現実感ある空を360度、自由に飛行できるようになる。
例えば図3は、プレーヤが操作する自機MVP(広義にはプレーヤ移動体)が、A1、A2に示すような雲の合間を飛行する敵機MVE(広義にはコンピュータ操作移動体)を追いかけて攻撃する場面のゲーム画像である。図3に示すようにプレーヤは、間近に流れる雲が生み出す今までにないスピード感を体感できる。即ち、ボリュームのある雲が立体的に配置されて、飛行中も間近に流れて行き、プレーヤは、自機MVPの移動量やスピードを目で感じながら、自分の思い描いた飛行ルートで飛行することが可能になる。
またこのゲームによれば、空の地形を駆使した変化のあるドッグファイトを実現できる。例えば積乱雲など、内部に着氷、落雷、乱気流の特性を持たせた雲が配置される。更には、雲により流れが可視化された気流も発生する空のフィールドで、プレーヤは、変化する空力を感じながら、空中の地形効果を使った変化のあるドッグファイトを楽しむことができる。視界を遮る雲、機体の挙動に影響する気流、乱気流などを、プレーヤは体感できる。これによりプレーヤは、ミッションを通して戦闘のメリハリを実感できるようになる。
例えば図4は、B1に示す雲を挟んで、プレーヤが操作する自機MVPと、コンピュータ(又は他のプレーヤ)が操作する敵機MVEとが対峙している場面のゲーム画像である。この場合に本実施形態では、敵機MVEに対して攻撃を行う自機MVPの攻撃パラメータ、防御パラメータ又は移動制御パラメータに対して、雲の存在の影響を与えるようにする。
例えば自機MVPと敵機MVEの間に存在するB1に示す雲の影響で、自機MVPが発射するミサイル等の攻撃性能を変化させる。例えば雲の向こう側に位置する敵機MVEに対して発射されたミサイルの追尾性能を低下させる。即ち、雲の影響によりミサイルの追尾性能が低下して、敵機MVEに当たりにくくなったことを表現する。例えば赤外線追尾のミサイルの場合には、雲の表面等における太陽光の反射により赤外線追尾が狂うことがある。本実施形態では、このような追尾性能等の低下をゲーム処理において実現する。
また自機MVPが雲の中に入った場合には、自機MVPの移動性能を低下させる。例えば、所定密度以上の雲の中に、一定時間以上、自機MVPが入った場合には、加速性能や旋回性能を低下させる。例えば戦闘機が雲の中に入ると、パイロットの視界が悪くなる。また雲の中には乱気流が存在すると共に、戦闘機が雲の中に入ると、雲の氷の破片等がエンジンに入り込み、戦闘機の移動性能等が低下する。本実施形態では、このように雲の中に入ることによる移動性能等の低下をゲーム処理において実現する。
このようなゲーム処理を実現するために本実施形態では、雲密度(広義には粒子集合体の密度情報)を用いる。例えば自機MVPや敵機MVEなどの移動体から所与の方向に延びる線又は範囲での雲密度や、移動体の位置での雲密度に基づいて、移動体の攻撃パラメータ、防御パラメータ又は移動制御パラメータを設定する。例えばこれらの雲密度を用いて、移動体の攻撃パラメータ、防御パラメータ又は移動制御パラメータを変化させる。
例えば図3、図4に示すようにボリューム感のある雲の画像を生成するためには、いわゆるボリュームレンダリング処理が有効である。ボリュームレンダリング処理では、オブジェクト空間(3次元空間)に対して3次元格子状に配置された多数のボクセルが設定され、各ボクセルにはボクセル値が設定される。本実施形態では、ボリュームレンダリング処理により雲の画像を生成するために、例えば各ボクセルのボクセル値として雲密度を設定する。これにより、例えば高い雲密度が設定されたボクセルが配置されている領域では、濃い雲が表示されるようになり、低い雲密度が設定されたボクセルが配置されている領域では、薄い雲が表示されるようになる。
例えばビルボードのポリゴンにより雲の画像を生成する手法では、ボリューム感のある雲の画像を生成したり、雲の濃さや薄さを精細に表現することが難しいという課題がある。例えば、プレーヤの視点のすぐ前に、雲の絵が描かれたビルボードのポリゴンが配置されていると、ビルボードのポリゴンの存在がプレーヤに知られてしまい、ボリューム感のある雲のリアルな画像を生成することが難しい。
これに対してボリュームレンダリング処理を用いて雲の画像を生成すれば、プレーヤの視点のすぐ前にある雲もリアルに表現することができる。即ち、プレーヤが自機MVPを操作して、雲の中を駆け抜けて飛行するというようなゲームを実現でき、プレーヤの仮想現実感を向上できる。
そして本実施形態では、例えばボリュームレンダリング処理における雲密度を有効活用して、移動体の攻撃パラメータ、防御パラメータ又は移動制御パラメータの設定処理を実現する。例えば移動体と攻撃対象を結ぶ線上(範囲内)にあるボクセルのボクセル値を、線(範囲)の雲密度として取得する。そして、この線(範囲)の雲密度に基づいて、移動体の攻撃パラメータ、防御パラメータ又は移動制御パラメータを変化させる。或いは移動体が位置するボクセルのボクセル値を、雲密度として取得する。そして、この移動体の位置での雲密度に基づいて、移動体の攻撃パラメータ、防御パラメータ又は移動制御パラメータを変化させる。こうすることで、雲画像の生成のためのボリュームレンダリング処理のボクセル値を有効活用して、雲密度に応じた移動体の攻撃パラメータ、防御パラメータ又は移動制御パラメータの設定処理を実現できるようになる。
以下、本実施形態の具体的な手法について詳細に説明する。
2.2 雲密度を用いた攻撃パラメータの設定処理
本実施形態では、雲密度(粒子集合体の密度情報)に基づいて、移動体の攻撃パラメータの設定処理を行っている。具体的には、移動体とのその攻撃対象を結ぶ線での雲密度に基づいて、移動体の攻撃パラメータの設定処理を行う。
例えば図5では、自機MVPと、その攻撃対象である敵機MVEとの間に、雲CLD(粒子集合体)が存在している。自機MVPは、敵機MVEをロックオンしており、ミサイル等により攻撃しようとしている。この場合に本実施形態では、自機MVPと敵機MVEを結ぶ線LNを求める。例えば自機MVPの代表位置(オブジェクト空間内での位置)と敵機MVEの代表位置とを結ぶ線LNを求める。そして、この線LNでの雲CLDの雲密度を取得する。例えば図5では、線LNは高い密度の雲CLDを通過しているため、線LNの雲密度は高いと判断される。この場合には、自機MVPの攻撃パラメータで表される攻撃能力を低下させる。具体的には、自機MVPが発射するミサイル(広義には攻撃物)の追尾性能、ロックオン性能(ロックオン範囲、ロックオン速度等)、或いは移動性能(移動速度等)を低下させる。
例えば図6(A)に示すように、追尾型のミサイルMSは、その追尾性能を表すパラメータとして、視野角θのパラメータを有している。例えば視野角θが大きくなると、ミサイルMSの視野範囲FVも広くなる。ミサイルMSは、この視野範囲FV内にある敵機MVEを追尾できる。従って、視野角θが大きいほど、ミサイルMSの追尾性能は高くなる。
また図6(B)に示すように、敵機MVEがミサイルMSを避けるために移動(旋回)すると、ミサイルMSは例えば角速度ωで旋回して、敵機MVEを追尾する。この旋回の角速度ωが、ミサイルMSの旋回性能を表すパラメータになる。この旋回の角速度ωが大きいほど、ミサイルMSの追尾性能は高くなる。例えば角速度ωによるミサイルMSの旋回が間に合わなくなり、図6(C)のように敵機MVEが視野範囲FVの外に出てしまうと、ミサイルMSは敵機MVEを追尾できなくなる。
本実施形態では、このような視野角θ、角速度ωなどのミサイルMSの追尾性能のパラメータを、図5に示す線の雲密度に基づいて制御する。例えば、自機MVPと敵機MVEの間に密度の高い雲CLDが存在し、線LNでの雲密度が高いと判定された場合には、図6(A)〜図6(C)で説明した視野角θや角速度ωなどの追尾性能パラメータを小さい値にする。一方、自機MVPと敵機MVEの間に密度の高い雲CLDが存在せず、線LNでの雲密度が低いと判定された場合には、追尾性能パラメータを変化させないようにする。こうすることで、雲CLDの存在により、自機MVPが発射したミサイルMSの追尾性能が低下(広義には攻撃能力の低下)するという事象を、ゲーム処理により実現できるようになる。
なお図5のように自機MVPと敵機MVEの間に密度が高い雲CLDが存在する場合に、ミサイルの追尾性能以外の攻撃能力を変化させてもよい。例えばミサイルのロックオン性能(ロックオン範囲、ロックオン速度)や、ミサイルの移動性能(追尾型ではないミサイルの移動速度等)を変化させる。或いは、ミサイルMS以外の攻撃物(レーザー等)の攻撃能力を変化させてもよい。或いは、自機MVPの攻撃物ではなく、自機MVP自体の攻撃能力(例えばレーダー性能、攻撃物を探知する性能等)を変化させてもよい。
さて本実施形態では図7(A)に示すような雲CLDのリアルな画像を生成するために、ボリュームレンダリング処理を行っている。ボリュームレンダリング処理では、図7(B)に示すように、複数のボクセルBXが3次元格子状に配置されたボリュームにより、雲(粒子集合体)を表現する。図7(C)に示すように各ボクセルBXにはボクセル値VBが設定されており、本実施形態ではこのボクセル値VBとして、そのボクセルBXでの雲密度(粒子集合体の密度情報)を設定する。なおボクセルは、例えば数m〜数10m(或いは数10m〜数100m)の範囲で、その高さや幅等が可変になっている。そして1つの積乱雲等の雲は例えば数10〜数100個のボクセルにより表されることになる。
図8はボリュームレンダリング処理の詳細を説明する図である。ボリュームレンダリング処理は、オブジェクト空間(仮想3次元空間)に設定された特徴量(ボクセル値)を、レイRY(視線)に沿って所定間隔でサンプリングし、その値を加算して行くレイキャスティングを行うことで、最終的な画像(半透明画像)を生成する。例えば図8では、視点VP(仮想カメラ)と、スクリーンSC(投影面)の画素PXとを通るレイRYにおいて、所定間隔でボリューム内のボクセルBX1、BX2、BX3、BX4、BX5・・・をサンプリングして行く。各ボクセルにはオパシティーα(不透明度)が与えられている。レイキャスティングでは、各ボクセルの輝度値とオパシティーαの積を加算して行き、αの総和が1になった場合、或いは、レイRYがボリュームから抜けた時に、その画素PXについての処理が終了する。レイキャスティングによる加算結果が、その画素PXの画素値として設定される。レイキャスティングのサンプリング点での輝度値、オパシティーは、隣接するボクセルの輝度値、オパシティーに基づき線形補間により求めることができる。
各ボクセルの輝度値は、隣接するボクセルのボクセル値からの勾配より推定される法線ベクトルなどを用いて、照明モデル(例えばフォンのシェーディングモデル)により求めることができる。例えば雲の画像を生成する場合には、ボクセル値である水蒸気の密度が、光源LSからの光を散乱、減衰させる要因となる。また、各ボクセルの輝度は、光源LSからボリューム内を通過してきた光(光源ベクトルLV)が、そのボクセルで反射、散乱して視点VPの方向に向かう光の量として表すことができる。いわゆる2段階レイキャスティングでは、スクリーンSC(投影面)からの第2のレイキャスティングを行う前に、光源LSからの第1のレイキャスティングを行って、ボクセル値や光源情報に基づいて、各ボクセルの輝度値を決定する。そして、決定された輝度値とオパシティーαに基づいて、第2のレイキャスティングを行って、各画素PXの画素値を求める。なお図8で説明した処理はボリュームレンダリング処理の一例であり、本実施形態におけるボリュームレンダリング処理はこのような処理には限定されず、種々の変形実施が可能である。
そして本実施形態では、自機MVP(プレーヤ移動体)と敵機MVE(攻撃対象)とを結ぶ線LNでの雲密度を用いて、自機MVPのパラメータの設定処理を行うが、この線LNでの雲密度を、ボクセル値に基づき取得して、自機MVPの攻撃パラメータを設定する。
例えば図9では、自機MVPと敵機MVEを結ぶ線LNは、オブジェクト空間内に設定されたボクセルBX1、BX2、BX3、BX4・・・・BXm−2、BXm−1、BXmを通過している。そして、これらのボクセルBX1、BX2、BX3、BX4・・・・BXm−2、BXm−1、BXmのボクセル値は、各々、VB1、VB2、VB3、VB4・・・・VBm−2、VBm−1、VBmとなっている。この場合に、線LNの雲密度を、これらのボクセル値VB1〜VBmにより設定して、自機MVPの攻撃パラメータ(ミサイルの追尾能力等)を設定する。例えばボクセル値VB1〜VBmの最大値、積算値又は平均値などに基づいて線LNの雲密度を設定して、攻撃パラメータを設定する。
例えばボクセル値(密度)の値域を0〜1.0(0〜100%)とする。この場合に例えば自機MVPと敵機MVEを結ぶ線LNが通過するボクセルBX1〜BXmのボクセル値VB1〜VBmの最大値が、所与のしきい値(例えば0.7〜0.8)を越えた場合に、自機MVPと敵機MVEの間に、密度(濃度)が高い雲が存在したと判断する。そして図6(A)〜図6(C)で説明したように自機MVPが発射したミサイルMSの追尾能力を低下させたり、ロックオン性能を低下させるなどの自機MVPの攻撃パラメータの低下処理を行う。或いは、ボクセル値VB1〜VBmの積算値が所与のしきい値(例えば1.0)を超えた場合に、自機MVPの攻撃パラメータの低下処理を行ってもよい。例えば手前側(自機に近い側)のボクセルBX1から順次にボクセル値を積算して行き、積算値がしきい値を超えた場合に攻撃パラメータの低下処理を行う。或いは、線LNに対応するボクセル値VB1〜VBmの平均値を求めて、平均値が所与のしきい値を超えた場合に、攻撃パラメータの低下処理を行ってもよい。
このようにすれば、ボリュームレンダリング処理におけるボクセルのボクセル値を有効活用して、自機MVPと敵機MVEを結ぶ線LNの雲密度を設定して、攻撃パラメータ等の設定処理を実現できるようになる。
図10は、線の雲密度を用いて攻撃パラメータを設定する本実施形態の処理の一例を示すフローチャートである。まず、ロックオンされた敵機に対してミサイルを発射する操作が行われたか否かを判断する(ステップS1)。即ち、自機を操作するプレーヤが、ミサイルの発射操作を行ったか否かを判断する。そしてミサイルの発射操作が行われた場合には、自機と敵機を結ぶ線(線分)を求める(ステップS2)。そして、線が通過するボクセルのボクセル値(雲密度)に基づいて、線の雲密度を取得する(ステップS3)。例えば図9で説明したように、ボクセル値の最大値、積算値又は平均値等に基づいて、線の代表の雲密度を取得する。
次に、線の雲密度に基づいて、ミサイルの視野角、旋回性能等の追尾性能パラメータ(攻撃パラメータ)を設定する(ステップS4)。即ち、線の雲密度に基づいて、自機と敵機の間に高い密度の雲が存在すると判断された場合には、図6(A)〜図6(C)で説明したように、ミサイルの視野角(θ)や旋回性能(ω)を低下させる設定処理を行う。そして、このように追尾性能パラメータが設定されたミサイルの発射処理及び移動処理を行う(ステップS5)。
2.3 雲密度を用いた移動制御パラメータの設定処理
本実施形態では、雲密度(粒子集合体の密度情報)に基づいて、移動体の移動制御パラメータの設定処理を行っている。具体的には、移動体の位置での密度情報に基づいて、移動体の移動制御パラメータの設定処理を行う。
例えば図11(A)では、自機MVPはボクセルBXの中に位置している。即ち自機MVPの位置はボクセルBXに属している。この場合には、自機MVPの位置の雲密度として、ボクセルBXのボクセル値VBを用いる。例えばボクセル値VBが小さければ、自機MVPの周りの雲密度は低いと判断し、ボクセル値VBが大きければ、自機MVPの周りの雲密度は高いと判断する。そして、この雲密度であるボクセル値VBに基づいて、自機MVPの移動性能(速度、加速度、角速度、角加速度)などの移動制御パラメータを設定する。例えばボクセル値が高いボクセル内(1又は複数のボクセル)に、所定時間に亘って、自機MVPが位置していたと判定された場合には、自機MVPの移動性能(旋回性能)のパラメータを低下させる処理を行う。この場合に自機MVPは、この所定時間に亘って、複数のボクセルを通過していてもよく、所定時間内において通過した複数の全てのボクセルのボクセル値が、所与のしきい値(例えば0.7〜0.8)よりも高かった場合に、自機MVPの移動性能のパラメータを低下させる。
なお、移動体の位置での密度情報に基づいて移動性能等の移動制御パラメータを設定する移動体は、自機MVPには限定されず、敵機MVEであってもよい。また、移動体の位置での密度情報をボクセル値に基づき求める手法は、図11(A)の手法に限定されない。例えば移動体が位置するボクセルのボクセル値のみならず、そのボクセルの周囲(隣接)のボクセルのボクセル値を用いて、移動体の位置での密度情報を求めてもよい。
図11(B)は、自機の位置での雲密度を用いて移動制御パラメータを設定する本実施形態の処理の一例を示すフローチャートである。
まず自機の移動処理を行う(ステップS11)。そして自機が位置するボクセルのボクセル値を、自機の位置での雲密度として取得する(ステップS12)。即ち、自機が位置するボクセルを検索し、そのボクセルのボクセル値を取得することで、自機の周りの雲密度を決定する。
次に、取得した雲密度が所定密度以上か否かを判断する(ステップS13)。例えば雲密度(ボクセル値)の値域が0〜1.0である場合に、例えば雲密度が0.7以上か否かを判断する。そして、雲密度が所定密度以上である場合には、時間カウント値のカウントアップ処理を行う(ステップS14)。例えば時間カウント値を+1とする。一方、雲密度が所定密度よりも小さい場合には、時間カウント値のリセット処理を行う(ステップS15)。例えば時間カウント値を0にリセットする。即ち、所定密度以下の場所(ボクセル)に自機が移動した場合には、時間カウント値はリセットされる。
時間カウント値のカウントアップ処理を行った後、時間カウント値がしきい値を超えたか否かを判断する(ステップS16)。例えば所定密度以上の場所(ボクセル)に自機が、例えば数秒以上に亘って位置していた場合には、時間カウント値がしきい値を超えたと判断される。そして自機の移動性能(旋回性能)のパラメータを低下させる処理が行われる(ステップS17)。
なお図11(B)の処理は、自機のみならず、敵機などの移動体に対して行うようにしてもよい。また、移動体の位置に基づく移動制御パラメータの設定処理は、移動性能(旋回性能)のパラメータを低下させる処理には限定されず、種々の変形実施が可能である。
2.4 雲密度を用いたコンピュータ操作移動体の移動制御処理
本実施形態では、雲密度(粒子集合体の密度情報)に基づいて、コンピュータ操作移動体の移動制御を行っている。例えばコンピュータ操作移動体から延びる線(線分、範囲)での雲密度に基づいて、コンピュータ操作移動体の移動制御を行う。具体的には、コンピュータ操作移動体から第1〜第Nの方向に延びる第1〜第Nの線での雲密度に基づいて、コンピュータ操作移動体の移動制御パラメータの設定処理を行う。
例えば図12(A)では、敵機MVE(コンピュータ操作移動体)に対して3本の線LNF、LNL、LNRが設定されている。例えば線LNF(第1の線)は敵機MVEから前方方向(第1の方向)に延びる線である。線LNL(第2の線)は敵機MVEから左方向(第2の方向)に延びる線である。線LNR(第3の線)は敵機MVEから右方向(第3の方向)に延びる線である。なおこれらの線は直線であることが望ましいが、曲線であってもよい。またコンピュータ操作移動体は敵機に限定されず、例えばプレーヤと共に共同で敵と戦うコンピュータ操作移動体(僚機)であってもよい。また例えばプレーヤのグループ(チーム)に所属するコンピュータ操作移動体(メンバー)であってもよい。
本実施形態ではこれらの線LNF、LNL、LNRを用いて、敵機MVEの周りの雲を探知し、雲が存在しない方向に、コンピュータ操作移動体である敵機MVEを移動させる。具体的には、図5、図9で説明した手法と同様の手法により、線LNF、LNL、LNRでの雲密度を取得し、これらの雲密度に基づいて、雲の存在方向を判定し、雲が存在しない方向に敵機MVEを移動させる。
例えば図12(B)では、敵機MVEの前方に雲CLDが存在している。この場合には敵機MVEから前方に延びる線LNFでの雲密度が高いと判定される。即ち、線LNFでの雲密度が、線LNL、LNRでの雲密度に比べて高いと判定される。この場合には、雲密度が高いと判定された線LNFの方向(前方方向)を避ける方向であるDRL側(左方向側)やDRR側(右方向側)に、敵機MVEが移動するように、移動制御パラメータを設定する。このようにすれば、前方に存在する雲CLDを避けるように、敵機MVEを移動させることが可能になる。
また図12(C)では、敵機MVEの左方向(左斜め方向)に雲CLDが存在している。この場合には敵機MVEから左方向に延びる線LNLでの雲密度が高いと判定される。即ち、線LNLでの雲密度が、線LNF、LNRでの雲密度に比べて高いと判定される。この場合には、雲密度が高いと判定された線LNLの方向(左方向)を避ける方向であるDRR側に、敵機MVEが移動するように、移動制御パラメータを設定する。このようにすれば、左方向に存在する雲CLDを避けるように、敵機MVEを移動させることが可能になる。同様に、敵機MVEの右方向(右斜め方向)に雲CLDが存在している場合には、右方向に延びる線LNRでの雲密度が高いと判定されるため、右方向を避ける方向側に敵機MVEを移動させる。
図13(A)〜図13(C)は、図12(A)〜図12(C)の処理を実現する移動制御パラメータの設定手法の一例を示す図である。
本実施形態では敵機MVEは、図13(A)〜図13(C)に示すような行動確率テーブルを用いて、各行動フェーズでの行動が決定される。例えば敵機MVEの行動としては、前進、左旋回、右旋回などの種々の行動が用意されている。各行動フェーズにおいて、これらの前進、左旋回、右旋回等のいずれの行動を行うかが、図13(A)〜図13(C)に示すような行動確率テーブルに基づき決定される。そして、行動が決定されると、例えば数十フレームの期間に亘って、敵機MVEは、その行動に対応する動作(モーション)を行う。そして、その行動が終了すると、行動確率テーブルに基づいて、次の行動が決定される。
例えば図13(A)は通常時の行動確率テーブルの例である。図13(A)に示すように通常時には、前進する確率が60%であり、左旋回、右旋回する確率は、各々、20%である。このため通常時には、敵機MVEが前進する確率が高くなる。
これに対して、図12(B)に示すように敵機MVEの前方に密度が高い雲CLDが存在する場合には、行動確率テーブルが図13(B)に示すように設定される。図13(B)では、前進する確率が10%に減り、左旋回、右旋回する確率が、各々、45%に増える。従って、雲CLDが前方に存在する場合には、敵機MVEが左旋回や右旋回する確率が高くなる。
また図12(C)に示すように敵機MVEの左方向(左斜め方向)に密度が高い雲CLDが存在する場合には、行動確率テーブルが図13(C)に示すように設定される。図13(C)では左旋回する確率が5%に減り、右旋回する確率が60%に増える。従って、雲CLDが左方向に存在する場合には、敵機MVEが右旋回する確率が高くなる。
例えば現実世界においては、戦闘機のパイロットは雲の中に入りたがらない。戦闘機が雲の中に入ると視界が悪くなると共に雲の中には乱気流が存在するからである。また、雲の氷の破片等がエンジンに入り込み、戦闘機の移動性能が低下するおそれがあるからである。
図12(A)〜図13(C)に示す本実施形態の手法によれば、このように雲に中に入りたがらないパイロットの挙動を、擬似的にシミュレートすることが可能になる。即ち、あたかも本物のパイロットが敵機に乗って操縦し、雲を避けるように飛行して行く敵機の様子を再現できる。そしてプレーヤは、自機を操作して、このように雲を避けるように飛行する敵機を追いかけるようになり、空中での雲の地形効果を使った変化のあるドッグファイトを楽しむことが可能になる。
また図13(A)〜図13(C)に示すように行動確率テーブルを用いる手法によれば、敵機の挙動が画一的になってしまうのを抑制できる。例えば図12(B)のように敵機の前方に雲が存在する場合には、基本的には図13(B)に示すように、敵機は左旋回又は右旋回をして、雲を避ける方向に移動する。しかしながら、前方に移動する確率も10%であり、0%ではないため、敵機が雲を避けずに、雲の方向に移動する状況も発生する。従って、敵機が、常に雲を避けて移動するというような画一的な挙動になってしまうのを抑制でき、よりリアルな敵機の移動制御を実現できる。
一方、図14(A)では、敵機MVEのステータスが、図12(A)〜図12(C)の状態とは異なる所与の状態となっている。具体的には、敵機MVEが攻撃等を受けて、体力パラメータ値がしきい値以下になっている。この場合には敵機MVEは、図12(A)〜図13(C)で説明した挙動とは異なる行動を行う。
具体的には図14(A)では、敵機MVEの左方向に密度の高い雲CLDが存在している。このような場合に図12(A)〜図13(C)の手法では、敵機MVEは雲CLDを避ける方向に移動するはずである。しかしながら、図14(A)では、敵機MVEの体力パラメータ値が非常に低く、撃墜寸前の状態となっている。この場合には敵機MVEは、図12(C)とは逆に、雲CLDの方向DRL側に移動する。即ち、敵機MVE(コンピュータ操作移動体)のステータスが、体力パラメータ値が非常に低い所与の状態であると判定された場合には、雲密度が高いと判定された線LNLの方向側に、敵機MVEが移動する。即ち図14(A)では敵機MVEの左方向に延びる線LNLでの雲密度が高いと判断されたため、雲CLDが存在する方向である方向DRLの方に、敵機MVEが移動するようになる。
このようにすれば、体力パラメータ値が低くなったことで雲の中に逃げ込むような敵機の挙動を表現することが可能になる。従って、敵機を追いかけてプレイしているプレーヤに対して、よりリアルで多様性のあるゲームプレイの面白味を提供できるようになる。
図15は、雲密度を用いた敵機の移動制御処理の一例を示すフローチャートである。まず線LNF、LNL、LNRでの雲密度DSF、DSL、DSRを取得する(ステップS21)。例えば図10のステップS2、S3のように、線LNF、LNL、LNRが通過するボクセルのボクセル値の最大値、積算値又は平均値等に基づいて、線LNF、LNL、LNRの代表の雲密度DSF、DSL、DSRを取得する。線LNF、LNL、LNRは図12(A)に示すように敵機から前方方向、左方向、右方向に延びる線である。
次に、敵機の体力パラメータ値がしきい値以下か否かを判断する(ステップS22)。そして体力パラメータ値がしきい値以下ではない場合には、線LNF、LNL、LNRでの雲密度DSF、DSL、DSRに基づいて、雲を避ける方向に移動するように、敵機の行動確率テーブルを設定する(ステップS23)。図12(B)の場合には、前方方向の雲を避ける方向に移動するように、例えば図13(B)に示すように行動確率テーブル(移動制御パラメータの1つ)を設定する。図12(C)の場合には、左方向の雲を避ける方向に移動するように、例えば図13(C)に示すように行動確率テーブルを設定する。
一方、体力パラメータ値がしきい値以下である場合には、線LNF、LNL、LNRでの雲密度DSF、DSL、DSRに基づいて、雲の方向に移動するように、敵機の行動確率テーブルを設定する(ステップS24)。図14(A)の場合には、雲が存在する方向である左方向側に移動するように、例えば図14(B)に示すように行動確率テーブルを設定する。
そして、設定された行動確率テーブルに基づいて、敵機の行動を決定する(ステップS25)。即ち、各行動フェーズにおいて敵機が行うべき行動を、行動確率テーブルに基づいて決定する。そして敵機の移動制御処理を行う(ステップS26)。即ち、行動確率テーブルに基づき決定された行動(例えば前方移動、左旋回、右旋回等)を行うように、敵機の移動制御処理を実行する。
2.5 雲密度を用いた攻撃支援用表示物の表示処理
本実施形態では、プレーヤ移動体が攻撃対象を攻撃する際にプレーヤに表示される攻撃支援用表示物の表示パターンを、密度情報に応じて変化させる表示処理を行う。例えば攻撃支援用表示物の表示態様を密度情報に応じて変化させる。
例えば図16(A)は、いわゆるコックビットビューとして表示される本実施形態のゲーム画面の例である。図16(A)では、HUD(Head-Up Display)の表示として、C1に示すような高度表示、姿勢表示、速度表示、照準表示が行われている。またC2に示すように自機や敵機の位置を知らせるレーダ表示も行われてる。
そして図16(A)では、自機が敵機MVE(攻撃対象)を攻撃する際にプレーヤに表示される攻撃支援用表示物として、コンテナCT(敵追尾カーソル)が表示されている。コンテナCTは、敵機MVEに追従して付属表示される表示物(スプライト等)であり、プレーヤは、このコンテナCTを目で追いかけることで、敵機MVEの位置や動きを把握できる。コンテナCTは、敵機MVEの位置を囲む枠の画像として表示されている。なお敵機MVEが自機によりロックオンされた場合に、コンテナCTの色や形などを変更して、ロックオン状態をプレーヤに知らせるようにしてもよい。
そして図16(A)では、自機と敵機MVEの間には、密度が高い雲が存在していないため、コンテナCTは通常の表示となっている。一方、図16(B)では、例えば図5のように自機と敵機MVEとの間に密度が高い雲(高濃度の雲)が存在しているため、コンテナCTの表示パターン(表示態様)が変化している。例えば自機と敵機MVEを結ぶ線での雲密度(例えば雲密度の最大値)がしきい値以上(例えば0.7以上)であると判定されたため、コンテナCTの表示パターンが変化している。具体的には、例えばコンテナCTが2秒間、点灯し、1秒間、消灯するというような点滅表示になる。
コンテナCTが表示されるHUDは、自機のコックピット内に設けられるものであるため、雲の存在によりHUDのコンテナCTの表示を変化させることは、通常は行われない。しかしながら、自機と敵機MVEの間に密度が高い雲が存在すると、自機の電子機器による敵機MVEに対する電子的な感知能力が落ちる状況が考えられる。即ち、敵機MVEの位置を電子的に追尾しきれなくなる状況である。
このような状況をゲーム的に表現するために、本実施形態では、自機と敵機MVEの間に密度が高い雲が存在すると判定された場合に、図16(B)に示すようにコンテナCTの表示パターンを変化させる。例えばコンテナCTが点滅表示されることで、あたかも電子的な感知能力が落ちて敵機MVEを追尾しきれなくなったような感覚を、プレーヤに与えることができ、プレーヤの仮想現実感を増すことができる。また、コンテナCTが点滅表示になると、プレーヤが敵機MVEを目で追うことが難しくなる。従って、雲の中に逃げ込むことで、相手からの攻撃を受けにくくなるというような状況も作り出すことができる。
なお、雲密度に基づいて表示パターンを変化させる攻撃支援用表示物は、HUDのコンテナCTには限定されない。例えば図16(B)のC3に示すようなレーダ表示の表示パターンを、雲密度に基づいて変化させてもよい。例えばレーダ表示における敵機アイコンの表示態様を変化させる。例えば敵機アイコンの点滅表示などを行う。また攻撃支援用表示物は、HUDの表示物(例えばロックオンカーソル)であってもよいし、それ以外の表示物であってもよい。例えば攻撃支援用表示物としては、種々のスプライト表示物を想定できる。また攻撃支援用表示物の表示パターンの変化は、上述したような点滅表示には限定されない。例えば雲密度に基づいて、攻撃支援用表示物の色、輝度、形状又はテクスチャ等の各種の画像プロパティを変化させてもよい。また攻撃支援用表示物の表示パターンの表示処理は、予め用意された複数のパターンの中から、密度情報に対応するパターンを選択するような処理であってもよい。例えばコンテナ等の攻撃支援用表示物について、半透明度等が異なる複数のパターンを用意し、これらのパターンの中から密度情報に基づく選択処理を行うようにしてもよい。
図17は、雲密度を用いた攻撃支援用表示物の表示処理の一例を示すフローチャートである。まず図5等で説明したように自機と敵機を結ぶ線を求める(ステップS31)。そして線が通過するボクセルのボクセル値に基づいて、線の雲密度を取得する(ステップS32)。例えば線が通過する複数のボクセルのボクセル値の最大値、積算値又は平均値に基づいて、線の雲密度を設定する。
次に線の雲密度が所定密度以上であるか否かを判断する(ステップS32)。そして線の雲密度が所定密度以上である場合には、画面上の敵機に設定されたコンテナの点滅表示処理を行う(ステップS33、S34)。例えば図16(B)に示すように敵機MVEを追尾するコンテナCTを点滅表示させて、電子的な感知能力が低下したことを、プレーヤに体感させる。
2.6 変形例
次に本実施形態の種々の変形例について説明する。例えば本実施形態では、密度情報に基づく攻撃パラメータ又は防御パラメータの変化の度合いを、移動体の種類、移動体の移動状態、移動体を操作するプレーヤのステータスパラメータ、或いはプレーヤの課金情報などに基づいて設定する変形例も可能である。図18は、この変形例の処理の一例を示すフローチャートである。
まず、雲密度に基づいて自機の攻撃パラメータ又は防御パラメータを変化させるか否かを判断する(ステップS41)。例えば図5において自機と敵機を結ぶ線の雲密度(例えばボクセル値の最大値)がしきい値を越えた場合に、自機の攻撃パラメータを変化させると判断する。或いは後述するように自機が敵機に追尾されている場合には、敵機と自機を結ぶ線の雲密度がしきい値を越えた場合に、自機の防御パラメータを変化させると判断する。
そして攻撃パラメータ又は防御パラメータを変化させると判断した場合には、自機の種類(機種、形状等)、移動状態(速度、加速度等)、プレーヤのステータスパラメータ(レベル等)、課金情報等の情報を取得する(ステップS42)。そして、取得された情報に基づいて、自機の攻撃パラメータ又は防御パラメータの変化度合いを設定する(ステップS43)。例えば、自機の種類、移動状態、プレーヤのステータスパラメータ、課金情報等に基づいて、攻撃パラメータ又は防御パラメータの変化量を可変に設定する。
例えば自機が特別な機種(レアの機種)である場合には、攻撃パラメータ又は防御パラメータの変化量(減少量等)を非常に小さくしたり、或いは逆に大きくする。また自機の移動速度が速い場合と遅い場合とで、攻撃パラメータ又は防御パラメータの変化量を異ならせる。例えば自機が敵機を追尾している状況において、自機の速度(又は加速度)が速い場合には、雲密度に基づく攻撃パラメータ(視野角、旋回性能等)の減少量を小さくする。また敵機が自機を追尾している状況において、自機の速度(又は加速度)が速い場合には、雲密度に基づく防御パラメータ(視野角、旋回性能等)の増加量を大きくする。
またプレーヤのレベル等のステータスパラメータに応じて、攻撃パラメータ又は防御パラメータの変化量を異ならせる。例えばプレーヤのレベルが高い場合には、ゲームの難易度を上げるために、敵機を追尾しているときの攻撃パラメータの減少量を大きくする。或いは、敵機に追尾されているときの防御パラメータの増加量を小さくする。またプレーヤの課金情報に応じて、攻撃パラメータ又は防御パラメータの変化量を異ならせる。例えばプレーヤの課金額が多い場合には、プレーヤを有利にするために、自機が敵機を追尾しているときの攻撃パラメータの減少量を小さくする。或いは自機が敵機に追尾されているときの防御パラメータの増加量を大きくする。
また以上では、移動体から延びるものが線である場合を主に例にとり説明したが、移動体から所与の方向に延びるものは範囲であってもよい。即ち、移動体から所与の方向に延びる範囲での粒子集合体の密度情報に基づいて、移動体の攻撃パラメータ、防御パラメータ又は移動制御パラメータを設定してもよい。例えば図19(A)、図19(B)、図19(C)は、移動体MV(自機MVP、敵機MVE)から所与の方向に延びる範囲ARの例である。
図19(A)では、図5の線LNを含むような範囲ARが設定されている。この範囲ARは移動体MVから所与の方向(例えば自機と敵機を結ぶ方向。前方向、右方向、左方向等)に延びる長方形の範囲である。例えば範囲ARは、所与の方向に交差する方向に幅を有する範囲である。この範囲ARは直方体等の立体図形の範囲であってもよい。この場合には図9において、線LNが通過するボクセルのみならず、この範囲ARが通過するボクセルのボクセル値を用いて、この範囲ARの密度情報(雲密度等)が設定されることになる。
また図19(B)では扇形状の範囲ARになっている。例えば移動体MVの近くでは、所与の方向に交差する方向での幅が小さく、移動体MVから離れた遠くでは、所与の方向に交差する方向での幅が大きい範囲ARとなっている。また図19(C)では、円錐形状の範囲ARとなっている。この範囲ARは立体形状の範囲である。
なお範囲ARの形状としては、図19(A)〜図19(C)に示す形状には限定されず、種々の形状を採用できる。例えば範囲ARは、図19(A)、図19(B)に示す長方形や扇形状以外の平面図形(例えば三角形等の他の多角形や、多角形以外の平面図形等)の範囲であってもよい。また範囲ARは、図19(C)に示す円錐形状以外の立体図形(例えば直方体、三角柱、六角柱等の多面体や、凸体)の範囲であってもよい。
また以上では、密度情報に基づいて移動体の攻撃パラメータを設定する手法について主に例にとり説明したが、密度情報に基づいて移動体の防御パラメータを設定してもよい。例えば図19(D)では、図5とは逆に、敵機MVEが自機MVPを追尾して攻撃しようとしている。この場合には敵機MVE(コンピュータ操作移動体)と自機MVP(プレーヤ移動体)を結ぶ線(範囲)での雲密度(密度情報)に基づいて、自機MVPの防御パラメータを設定する。例えば雲密度が高い場合に、敵MVEからのミサイル等の攻撃物に対する防御力を高くする。例えば敵機MVEのミサイルが自機MVPに当たりにくくなったり、当たった場合の自機MVPの損害(体力パラメータの減少等)を少なくする。なお、密度情報に基づき設定する防御パラメータとしては、例えば守備力、耐久力(体力)、攻撃物の回避力(攻撃物の追尾の回避力)、又は体力等の回復力などの種々のパラメータを想定できる。
また以上では、雲等の粒子集合体の画像をボリュームレンダリング処理により生成する場合について主に説明したが、本実施形態はこれに限定されない。例えば図19(E)では、視線に正対するように配置されたポリゴンに雲の画像を描いたビルボードBL1、BL2、BL3・・・により雲の画像を生成している。このようなビルボード(広義にはポリゴン)を用いて、あたかも雲の中を飛行するような画像を生成する場合には、例えば移動体MVがビルボードに到達する直前に、当該ビルボードを消す処理などを行えばよい。そして図19(E)の場合も、例えば各ビルボードBL1、BL2、BL3・・・に対して雲の密度情報を対応づけ、この密度情報に基づいて、移動体MVの攻撃パラメータ、防御パラメータ又は移動制御パラメータを設定すればよい。例えば移動体MVから所与の方向に延びる線又は範囲と交差するビルボード(ポリゴン)に対応づけられた密度情報に基づいて、移動体MVの攻撃パラメータ、防御パラメータ又は移動制御パラメータを設定すればよい。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(プレーヤ移動体、コンピュータ操作移動体、粒子集合体、粒子集合体の密度情報、攻撃物、攻撃支援用表示物等)と共に記載された用語(自機、敵機、雲、雲密度、ミサイル、コンテナ等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またオブジェクト空間の設定処理、移動体の移動処理、密度情報に基づくパラメータの設定処理、表示物の表示処理、レンダリング処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。