説明

プログラム、情報記憶媒体及びゲーム装置

【課題】 NPCの移動をより自然に見せる制御の実現。
【解決手段】探索領域22に設定される複数の経由候補点の中から、隣接する経由候補点を選択して順次結んで暫定ルート26を設定する。暫定ルート26に含まれる経由候補点のうち、経由しないこととしてルートを再構成した場合にも敵NPC4が移動不可能領域24を通過しないルートとなる経由候補点の経由を止めてルートを再構成して確定ルート28を設定する。そして、確定ルート28に基づいて敵NPC4を移動させる。つまり、暫定的に設定された移動ルートの内、移動不可能領域を通過せずに短縮できる部分の経由候補点の経由をやめる移動ルートを用いることで、兵士の戦闘行動として自然に見えるように、敵NPC4を経由候補点の配置条件に係わらずに目的地点へ最短コースで移動できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータにゲーム空間内でプレーヤキャラクタとNPC(ノンプレイアブルキャラクタ)を動作制御させるとともに、ゲーム空間を仮想カメラで撮影した画像を生成して所定のゲームを実行させるためのプログラム等に関する。
【背景技術】
【0002】
ビデオゲームに登場するキャラクタは、基本的にプレーヤが操作する事のできるプレーヤキャラクタの他は自動的に動作制御されるNPCである。特に、プレーヤキャラクタへの攻撃をその主任務とする所謂敵NPCは、プレーヤキャラクタを索敵して接近しつつ攻撃するように動作制御される。
【0003】
NPCの動作制御のうち移動に係る制御では、通常、現在位置からプレーヤキャラクタに接近する次の目標地点までの移動ルートを自動的に選択する処理が行われる場合が多い。そのため移動制御に要する演算負荷は攻撃制御のそれに比べると高く、その演算負荷を軽減するための技術も知られるところである(例えば、特許文献1参照)。また、複数のNPCの移動先が衝突する場合に、それぞれのNPCの単位時間当たりの移動距離を増減することで衝突しないようにする技術も知られている(特許文献2参照)。
【特許文献1】特許第3520069号公報
【特許文献2】特許第3694515号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところで、敵NPCのゲーム上の設定は、攻撃目標(例えばプレーヤキャラクタ)を探索して、適当な移動ルートを辿りつつ攻撃を仕掛けるといったある程度の知性を備えた存在である。そのため、敵NPCを自動制御するに当たっては、知性のある敵NPCらしい自然な行動の実現が重要となる。
【0005】
特に、プレーヤキャラクタと敵NPCが銃撃戦を繰り広げる所謂ガンシューティングゲームでは、敵NPCは訓練された兵士という設定が多く、敵NPCの移動行動は銃を構えて撃つ攻撃動作に比べて目に付き易く、敵NPCの移動が不自然であるとゲームのリアリティを著しく損ない易い。敵NPCに如何に自然な移動行動をさせるかは、その演算処理負荷の低減と同様かそれ以上に重要な課題とも言える。
【0006】
本発明はこうした事情を鑑みてなされたものであり、その目的とするところは、NPCの移動制御をするにあたり、その移動行動をより自然に見せることである。例えば、ガンシューティングゲームのようにNPCを兵士に設定するケースにおいては、訓練された本物の兵士の移動動作らしく見せることである。
【課題を解決するための手段】
【0007】
上記の課題を解決するための第1の発明は、コンピュータに、三次元仮想空間内でNPCを動作制御させるとともに、前記三次元仮想空間を仮想カメラで撮影した画像を生成させるためのプログラムであって、
前記三次元仮想空間に前記NPCの移動ルートの経由候補点を複数箇所設定する経由候補点設定手段(例えば、図9の処理部200、移動ルート探索部218、図14のステップS70)、
前記複数の経由候補点の中から経由候補点を選択して順次結んでいくことで前記NPCの暫定移動ルートを設定する暫定移動ルート設定手段(例えば、図9の処理部200、移動ルート探索部218、図14のステップS90)、
前記暫定移動ルートに含まれる経由候補点のうち、経由しないこととしてルートを再構成した場合にも前記三次元仮想空間に設けられた移動不可能領域を通過しないルートとなる経由候補点の経由を止めてルートを再構成することで確定移動ルートを設定する確定移動ルート設定手段(例えば、図9の処理部200、移動ルート探索部218、図14のステップS92〜S106)、
前記確定移動ルートに基づいて前記NPCを移動制御するNPC移動制御手段(例えば、図9の処理部200、NPC動作制御部216、図13のステップS24)、として前記コンピュータを機能させるためのプログラムである。
【0008】
また、別の形態として、三次元仮想空間内でプレーヤキャラクタとNPCを動作制御して、前記三次元仮想空間を仮想カメラで撮影した画像を生成して所定のゲームを実行するゲーム装置であって、
前記三次元仮想空間に前記NPCの移動ルートの経由候補点を複数箇所設定する経由候補点設定手段(例えば、図1の制御ユニット1150、図9の処理部200、移動ルート探索部218、図14のステップS70)と、
前記複数の経由候補点の中から経由候補点を選択して順次結んでいくことで前記NPCの暫定移動ルートを設定する暫定移動ルート設定手段(例えば、図1の制御ユニット1150、図9の処理部200、移動ルート探索部218、図14のステップS90)と、
前記暫定移動ルートに含まれる経由候補点のうち、経由しないこととしてルートを再構成した場合にも前記三次元仮想空間に設けられた移動不可能領域を通過しないルートとなる経由候補点の経由を止めてルートを再構成することで確定移動ルートを設定する確定移動ルート設定手段(例えば、図1の制御ユニット1150、図9の処理部200、移動ルート探索部218、図14のステップS92〜S106)と、
前記確定移動ルートに基づいて前記NPCを移動制御するNPC移動制御手段(例えば、図1の制御ユニット1150、図9の処理部200、NPC動作制御部216、図13のステップS24)と、を備えたゲーム装置として実現しても良い。
【0009】
第2の発明は、前記確定移動ルート設定手段が、前記暫定移動ルートに含まれる経由候補点のうち、経由しないこととしてルートを再構成した場合に、1)前記三次元仮想空間に設けられた移動不可能領域を通過しないルートとなる経由候補点であり、且つ、2)1)の経由候補点を経由しない場合のルートが経由する場合のルートに比べて短くなる場合に、1)の経由候補点の経由を止めてルートを再構成することで前記確定移動ルートを設定するように前記コンピュータを機能させるための第1の発明のプログラムである。
【0010】
この第1の発明等によれば、NPCの移動ルートの経由候補点を複数箇所設定し、その中から経由候補点を選択して順次結んでいくことで暫定移動ルートを設定することができる。そして、この暫定移動ルートに含まれる経由候補点のうち、経由しないこととしてルートを再構成した場合にもNPCが進入できない移動不可能領域を通過しないルートとなる経由候補点の経由を止めてルートを再構成することで確定移動ルートを設定し、確定移動ルートに基づいてNPCを移動させることができる。つまり、暫定的に設定された移動ルートの内、移動不可能領域を通過せずに短縮できる部分の経由候補点を削除して移動距離を短縮させた移動ルートを確定し、設定された経由候補点の分布状態に係わらず、NPCを目的地点に向けて効率的に移動させることができる。
【0011】
結果、生成される画面上で見ると、従来の技術レベルに相当する暫定移動ルートまでしか求めない場合では、プレーヤには見えない経由候補点の分布状況に影響されてNPCが不自然な位置で方向転換したり、ともすれば回りくどい移動ルートをカクカクと方向転換しつつ辿っているように見えてしまう。しかし、本発明のように確定移動ルートを更に求めることで、見かけ上、NPCは短縮できるところは短縮して効率的なルートを移動するように見える。プレーヤにしてみれば、そうしたNPCの動作は、兵士など知性ある戦闘体であれば自然な行動と見える。
【0012】
なお、第3の発明として、第1又は第2の発明のプログラムであって、暫定移動ルートの設定に際しては、前記経由候補点設定手段が、前記三次元仮想空間に網目状に前記経由候補点を設定し、前記暫定移動ルート設定手段が、隣接する経由候補点を順次結んでいくことで前記暫定移動ルートを設定するように前記コンピュータを機能させるためのプログラムを構成しても良い。
網目状に経由候補点を設定することで、三次元仮想空間内で障害物のオブジェクトなどが移動して移動不可能領域が変化する可能性がある構成であっても、柔軟に移動ルートを設定することができるので好適である。
【0013】
また、第4の発明として、第1〜第3の何れかの発明のプログラムであって、前記確定移動ルート設定手段が、前記暫定移動ルートに含まれる経由候補点のうち、経由候補点同士を結び、移動不可能領域を通過しない最長の直線を前記暫定移動ルートの順方向又は逆方向に順次検索していくことで前記確定移動ルートを設定するように前記コンピュータを機能させるためのプログラムを構成してもよい。
この場合、戦場において移動可能に見通せる範囲は、無駄に曲がらず一目散に直線的に駆け抜けるように移動するといった本物らしく見える移動行動をNPCにさせることができる。
【0014】
更に、第5の発明として、第4の発明において、前記三次元仮想空間を複数のエリアに分割設定するエリア設定手段(例えば、図9の処理部200、移動ルート探索部218)として前記コンピュータを機能させ、前記確定移動ルート設定手段が、前記エリア設定手段により設定されたエリア毎に当該エリア内で前記移動不可能領域を通過しない最長の直線を検索するように前記コンピュータを機能させるためのプログラムを構成してもよい。
この場合、確定移動ルートの設定に係わる処理をエリア毎に分割して実行することができるので、1回の制御サイクルにおける確定移動ルートの設定に要する処理負荷を低減できる。
【0015】
また、暫定移動ルートや確定移動ルートの設定処理は一度きりではなく、適宜行う構成とすることができる。
例えば、第6の発明として、第1〜第5の何れかの発明のプログラムであって、前記三次元仮想空間のオブジェクトの配置構成を変更するイベントを制御するイベント制御手段(例えば、図9の処理部200、ゲーム演算部210、図13のステップS38)、前記イベントの発生を条件にして、前記暫定移動ルート設定手段による暫定移動ルートの設定と、前記確定移動ルート設定手段による確定移動ルートの設定とを、再機能させるルート再設定制御手段(例えば、図9の処理部200、ゲーム演算部210、移動ルート探索部218、図13のステップS40〜S42)、として前記コンピュータを機能させるためのプログラムを構成してもよい。
この場合、イベントの発生に伴って、移動ルート探索の基礎となるステージの構成が変化する状態、所謂マップが変化する状態が起こっても、速やかにNPCの移動ルートを適応させることができる。
【0016】
また例えば、第7の発明として、第1〜第5の何れかの発明のプログラムであって、前記暫定移動ルート設定手段による暫定移動ルートの設定と、前記確定移動ルート設定手段による確定移動ルートの設定とを、間欠的に再機能させるルート再設定制御手段(例えば、図9の処理部200、ゲーム演算部210、図13のステップS6、S34〜S36)として前記コンピュータを機能させるためのプログラムを構成してもよい。
この場合、間欠的に移動ルートの再設定を行う事ができるので、移動ルート設定の前提条件がプログラム製作者側の想定外に変化したとしても、NPCの移動制御が途切れる事のないよう保障できる。
【0017】
また、第8の発明として、第1〜第7の何れかの発明のプログラムであって、予め用意された複数の目的地候補の中から1つの目的地候補を目的地として選択する目的地選択手段(例えば、図9の処理部200、移動ルート探索部218、図21のステップS86〜S88、図31のステップS73c)として前記コンピュータを機能させるとともに、前記暫定移動ルート設定手段が、前記目的地選択手段によって選択された目的地に向かう前記暫定移動ルートを設定するように前記コンピュータを機能させるためのプログラムを構成してもよい。
この場合、NPCの移動が一定のパターンに固定されるのを防ぎ、NPCの移動行動に多様性を持たせることができる。
【0018】
そして、更に第9の発明として、第9の発明のプログラムであって、前記暫定移動ルート設定手段が複数のNPCそれぞれについて暫定移動ルートを設定し、前記確定移動ルート設定手段が複数のNPCそれぞれについて確定移動ルートを設定し、前記目的地選択手段が、前記複数の目的地候補それぞれの周囲に存在するNPCの数に基づいて、目的地を選択するように前記コンピュータを機能させるためのプログラムを構成してもよい。
【0019】
この場合、変化する各NPCの位置を参照し、目的地候補の周りに存在するNPCの数に基づいて目的地を選択できる。例えば、NPCの数が基準値を超えない目的地候補を優先的に選択する構成とするならば、NPCを密集させず分散させて移動させることができる。これは、NPCが兵士の設定で有る場合、訓練をつんだ兵士が分散して攻撃目標を囲むように接近するように見せる事ができことにもなる。反対に、NPCの数が基準値を超える目的地候補を優先的に選択する構成とするならば、NPCを移動行動を介して意図的に集結させることで、密集行動をする性質のある生物(例えば、ある種の昆虫や小動物)のような移動行動をさせることもできる。
【0020】
更には、第9の発明として、第8の発明のプログラムであって、前記暫定移動ルート設定手段が複数のNPCそれぞれについて暫定移動ルートを設定し、前記確定移動ルート設定手段が複数のNPCそれぞれについて確定移動ルートを設定し、前記目的地選択手段が、前記仮想カメラの撮影範囲を分割した分割撮影範囲(例えば、図27の分割撮影領域54a,54b,54c)それぞれに位置するNPCの数、或いは、当該分割撮影範囲内の目的地候補に向けた移動制御中のNPCの数に基づいて、目的地を選択する、ように前記コンピュータを機能させるためのプログラムを構成してもよい。
【0021】
この場合、生成される画面内でのNPCの分布の偏りを防ぐことができる。これは、ガン型コントローラで画面に向けて照準操作してシューティングゲームを楽しむ、所謂ガンシューティングゲームにおいては、NPCが密集して安易にゲームをクリアされないようにするゲームバランスの観点から極めて有効である。
【0022】
また、第11の発明として、第8〜第10の何れかの発明のプログラムであって、前記目的地候補それぞれには、NPCに予め設定されている属性に応じた相性(例えば、図25のキャラクタ属性別重み付け係数)が設定されており、前記目的地選択手段が、目的地設定対象のNPCの属性に対応する前記目的地候補それぞれの前記相性に基づいて目的地を選択するように前記コンピュータを機能させるためのプログラムを構成してもよい。
【0023】
この場合、NPCはその属性に応じた目的地へ優先的に移動するように移動動作される。例えば、NPCを兵士とし、近接攻撃向きの装備の兵士や、遠距離攻撃向きの装備の兵士といった具合に様々な属性を与えると、それぞれの戦闘タイプに適した目的地に自動的に移動させることができるので、より一層本物らしいNPCの制御を実現することができる。特に、複数の敵NPCが集団で登場する場合に効果的である。
【0024】
第12の発明は、第1〜第11の何れか一つのプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体である。ここで言う「情報記憶媒体」とは、例えば磁気ディスクや光学ディスク、ICメモリなどを含む。本発明によれば、第1〜第12の何れか一つの発明のプログラムをコンピュータに読み取らせて実行させることによって、コンピュータに第1〜第12の何れか一つの発明と同様の効果を発揮させることができる。
【発明を実施するための最良の形態】
【0025】
〔第1実施形態〕
次に、本発明を適用した第1実施形態として、アーケード用のガンシューティングゲーム装置であって、一人称視点のガンシューティングゲームをプレイ可能なゲーム装置を例に挙げて説明する。
【0026】
[ゲーム装置の構成]
図1は、ガンシューティングゲーム装置1100の構成例を説明するための外観図である。同装置は、例えばバンダイナムコゲームス社製の作品名「タイムクライシス4」等で使用される公知のゲーム装置等で実現され得る。具体的には、ガンシューティングゲーム装置1100は、銃を模したガン型コントローラ1130と、画像表示装置1122と、スピーカ1124と、硬貨投入口1142から投入された硬貨を検知する硬貨検知センサ1144と、制御ユニット1150とを、装置本体1101に備えている。
【0027】
制御ユニット1150は、ゲーム装置の制御基板に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などの各種マイクロプロセッサ、ASIC(Application Specific Integrated Circuit)、VRAMやRAM,フラッシュメモリ1152等の各種ICメモリを搭載する。また、通信装置1154や、画像装置1122のドライバ回路、スピーカ1124へ音声信号を出力するためのアンプ回路、ガン型コントローラ1130や硬貨検知センサ1144との信号入出力回路といった所謂I/F回路(インターフェース回路)を搭載する。これら制御ユニット1150に搭載されている各要素は、それぞれバス回路を介して電気的に接続され、データの読み書きや信号の送受信が可能に接続されている。
【0028】
フラッシュメモリ1152には、ゲームプレイに係る各種演算処理を実行するために必要なプログラムや各種設定データが記憶されている。制御ユニット1150は、硬貨検知センサ1144で所定額の硬貨の投入を検知したら、フラッシュメモリ1152からプログラムやデータを読み出して、搭載するICメモリにこれらを一時記憶する。そして、読み出したプログラムを実行して、ゲーム画像を生成して画像表示装置1122に表示させるとともに、ゲーム音を生成してスピーカ1124から放音させる。
【0029】
プレーヤは、画像表示装置1122の画面前方に立ち、画面を狙うようにしてガン型コントローラ1130を構える。ゲーム画面内には、標的と、ガン型コントローラ1130で狙っている位置を示す照準6が表示されるので、ゲーム画面内の任意の標的に照準6を合わせるようにしてガン型コントローラ1130を構え、トリガーを引いて射撃操作してシューティングゲームを楽しむ。
【0030】
尚、本実施形態では、必要なプログラムや各種設定データをフラッシュメモリ1152から読み出す構成としているが、通信装置1154でインターネットやLAN(Local Area Network)、WAN(Wide Area Network)などの有線/無線の通信回線1に接続して外部の装置からダウンロードする構成としても良い。
【0031】
[ゲームの概要]
図2は、本実施形態におけるゲーム画面例を示す図である。本実施形態では、3次元仮想空間内に建物8や木箱10といった障害物オブジェクトが配置されて戦場となるゲーム空間が形成され、その内にプレーヤキャラクタや標的となる敵NPC4のキャラクタオブジェクトが配置され動作制御される。
【0032】
敵NPC4は、予めスクリプトデータによって出現位置や動作の内容が定義されており、所定のタイミングでプレーヤキャラクタ2に攻撃しつつ接近するように自動的に動作制御される。
【0033】
一方、図3に示すように、プレーヤキャラクタ2のオブジェクは、撮影方向がプレーヤキャラクタ2の視線方向に一致するようにして仮想カメラCMが一体に固定されて制御される。また、プレーヤキャラクタ2はゲーム空間内を予め決められたコースを辿りつつ、予め決められている敵NPC4の襲撃ポイントで襲来方向に視線を向けるように自動的に移動と視線方向が制御される。尚、同図ではプレーヤキャラクタ2の身体のモデルが存在するように示しているが、ゲームの構成上、プレーヤキャラクタ2の身体が画面に登場することが無い設定の場合、必ずしも身体のモデルを表示する必要はない。つまり、仮想カメラCMと画面の端に写る銃3のモデルのみで、プレーヤキャラクタ2を構成するとしても良い。
【0034】
従って、図2に示すように、プレーヤキャラクタ2の一人称視点として仮想カメラCMでゲーム空間内を撮影したゲーム空間画像(所謂3DCG)が生成され、これにプレーヤキャラクタのヒットポイントの残数を示すヒットポイントゲージ12や、残弾数を表示する弾数ゲージ14、視線の方向を示す方位表示16、ガン型コントローラ1130で狙っている位置を示す照準6などの各種情報表示が合成されることでゲーム画面W2が形成されて、画像表示装置1122に表示される。そこには、戦場を駆け抜けるように流れる背景をバックにして襲い来る敵の姿が映し出されることになる。プレーヤは、迫り来る敵NPC4から攻撃を受けるよりも早く、敵NPC4に照準6を合わせてこれを射撃する。
【0035】
本実施形態では、公知のガンシューティングゲームと同様に、プレーヤキャラクタが敵NPC4の攻撃を受けるとプレーヤキャラクタのヒットポイントが減算される。同ヒットポイントが「0」になる前に、所定のゴール地点に到達できればゲームクリアとなり、到達できなければゲームオーバとなる。
【0036】
[敵NPCの移動ルート探索の原理]
さて、本実施形態における敵NPC4の動作は、先に述べたようにスクリプトデータによって予め定義づけられている。スクリプトデータは、ゲーム開始を基準とする時間軸に沿って、動作するキャラクタの識別と、その動作の内容を定義するデータである。
【0037】
但し、図4に示すように、スクリプトデータで動作を定義すると言っても、特に移動に関しては移動の始点Psと終点Peが定義されるが具体的な移動ルートは定義されていない。そして、ゲーム進行状態に応じて敵NPC4それぞれについて移動ルートを求める構成となっている。
例えば、同図では、出現位置からプレーヤキャラクタの居る方向に向けて障害物20に身を隠しながら前進するように始点Psと終点Peとが定義されている。敵NPC4が一人であれば、同図の矢印のように移動ルートを予め定義することもできる。しかし、実際には複数の敵NPC4が登場し、それぞれが様々な移動や動作をすることになる。また、プレーヤキャラクタの任意の攻撃によって倒れる敵NPC4の位置や順番も異なれば、プレーヤキャラクタの攻撃による爆発で障害物20が移動して通れる場所も変化する可能性がある。つまり、不確定要素が極めて多く、多くの作業工数を費やして予め移動ルートを定義しても、本来ゲーム製作者が意図した敵の襲撃形態を演出する事ができなくなる可能性が高い。従って、移動ルートを予め定義する手法は適当とは言えない。そこで、移動ルートそのものをゲーム進行状態に応じて求める。
【0038】
図5は、移動ルートの探索範囲を俯瞰視した概念図である。移動ルートの探索領域22には、ゲーム空間の地面や床面と言った敵NPC4が移動する面のポリゴンモデルの情報を基礎データとして複製使用される。図中の三角形の格子状配列がそれに当たり、それぞれ三角形ポリゴンに相当する。格子の各辺の中央位置が移動ルートを設定する上での経由候補点となる。本明細書では、経由候補点のことを「ノード(node)」とも言う。
【0039】
移動ルートの探索に当たっては、先ずゲーム空間のマップデータを参照して、マップのうち、障害物オブジェクトが配置されている領域を敵NPC4が進入できない移動不可能領域24として設定する。図2の例で言うところの建物8や木箱10や、図4で言うところの障害物20などのオブジェクトが配置された範囲(例えば、障害物20のバウンダリボックス内の範囲)が移動不可能領域24に設定される。図5では網掛け表示されている範囲がこれに当たる。そして、スクリプトデータを参照して、敵NPC4に設定されている移動の始点Psと終点Peとを読み出して設定する。
【0040】
始点Psと終点Peが設定されたならば、図6(a)に示すように、移動不可能領域24を避けて、近接する経由候補点を伝いながら始点Ps〜終点Peとを最短距離で結ぶ暫定ルート26を求める。暫定ルート26の算出は、公知のルート探索技術を適宜応用する事によって実現できる。図では、暫定ルート上の経由候補点を黒丸で強調表示している。これら暫定ルート上の経由候補点には、始点Psを「1」とした経由順番号が付与され識別される。
【0041】
この暫定ルート26は、見ての通りそもそも格子状に設定された経由候補点を伝うことを前提に求められるので、感覚的な最短コースとは言えない。例えば、図6(a)の例では、探索領域22の右上部分、終点Peに到達する直前にクランク状の部分が存在することになる。本来、敵NPC4が知性ある兵士であれば、見通しの効く範囲を目的地点に向けてまっすぐ直線的に走り抜けるように移動するのが自然である。しかし、この暫定ルート26ではクランク上の部分を有するため、敵NPC4はまっすぐ進めばよいところを不自然に方向を変え、ともすれば遠回りしているかのように、その移動行動が不自然なものになる。そこで、暫定ルート26のうち敵NPC4が移動可能に見通しのできる部分を直線状に短縮補正して確定ルートを生成する。
【0042】
具体的には、図6(b)に示すように、先ず経由順番号n=m(mは1以上の整数)とされる終点Peを検索開始点に設定する。そして、終点Peより暫定ルート上で経由順番号n=m−1の経由候補点を検索先に設定し、検索開始点から検索先まで検索直線Lm−1を求める。そして、検索直線Lm−1が移動不可能領域24に掛かるか否かを判定する。
【0043】
検索直線Lm−1が移動不可能領域24に掛からなければ、現在検索先としている経由候補点までは見通しが取れて直線移動できると判断する。そして次に経由番号が一つ小さい(経由順番号n=m−2の)経由候補点を検索先に設定し直し、再び検索直線を設定して移動不可能領域24に掛かるか否かを判定する。
【0044】
同様の処理を、検索先とする経由候補点を経由逆順に辿るように次々に切り換えて繰り返す。検索直線が移動不可能領域24に掛かったならば(例えば、図6(b)中の検索直線L5)、検索開始点から現在の検索先の経由候補点へは見通すことができず、直線的に移動することはできないと判断する。そして、終点Peから経由順一つ後の経由候補点までの部分を、検索開始点から当該経由候補点を結ぶ検索直線(図6(b)中の検索直線L6)に置換し短縮補正する。
【0045】
暫定ルート26の一部が補正されても、現在の検索先とされる経由候補点が始点Psに達していなければ同様の処理を繰り返す。すなわち、今度は検索直線が移動不可能領域24に掛からなかった最も経由順番号nが小さい経由候補点(図6(b)の例では、経由順番号n=6の経由候補点)を次の新たな検索開始点に設定し、再び当該検索開始点より経由逆順の経由候補点を検索先に設定して、検索直線が移動不可能領域24に掛かるか否かの判定を繰り返す。当然、再び検索直線が移動不可能領域24に掛かると判定されたら、現在の検索開始点とされる経由候補点から、現在検索先とされる経由候補点よりも経由順番号nが一つ後の経由候補点までを直線で置換し短縮補正する。こうして、暫定ルート26の部分を直線に置換し短縮補正した結果が確定ルート28とされる。
【0046】
こうした一連の処理を、「ルート短縮補正処理」と呼ぶ。ルート短縮補正処理は、換言すると、暫定移動ルート26に含まれる経由候補点のうち、ある経由候補点を経由しないこととしてルートを再構成した場合にも探索領域22に設けられた移動不可能領域24を通過しないルートとなるその経由候補点の経由を止めて、ルート上からその経由候補点を削除し、ルートを再構成する処理とも言える。
【0047】
図6の例では、経由順番号n=6の経由候補点までは、検索直線L6が移動不可能領域24に掛からずにいたが、経由順番号n=5の経由候補点への検索直線L5は移動不可能領域24に掛かる。よって、経由順番号n=6までの暫定ルート26の部分を、終点Peから経由順番号n=6の経由候補点への検索直線L6によって置換し短縮補正する。
しかし、現在の検索先とされる経由候補点は、経由順番号n=5の経由候補点であって始点Psには達していない。従って、経由順番号n=6の経由候補点を次の検索開始点として設定し、現在の検索先とされる経由順番号n=5の経由候補点へ検索直線(不図示)を設定し移動不可能領域24に掛かるか否かの処理を再開する。
【0048】
同図の例では経由順番号n=6よりも経由順前の経由候補点は何れも始点Psまで直線状に並んでいるので、暫定ルート26の経由順番号n=6の経由候補点より始点Ps側の部分は、現在の検索開始点である経由順番号n=6の経由候補点から始点Psまでの直線で置換される。この結果、暫定ルート26は、終点Peから経由順番号n=6の経由候補点を結ぶ第1の直線部分と、同経由候補点から始点Psを結ぶ第2の直線部分とで形成される確定ルート28が決定される(図6(c))。
【0049】
[移動ルート再探索]
移動ルートの探索処理の実行は、対象となる敵NPC4の出現時は勿論、ゲーム進行の状況に応じて適当なタイミングで再度実行され、その時々の状況変化に合わせて適切な移動ルートが確保されるように考慮されている。
【0050】
移動ルート再探索の第1のタイミングとしては、ゲーム空間内における障害物オブジェクトの位置変化やイベントの発生によって、探索領域22及び移動不可能領域24に変化が生じる場合である。
障害物オブジェクトの位置が変化するケースとしては、例えばプレーヤキャラクタの攻撃によってゲーム空間内のある場所で爆発や破壊が生じて障害物オブジェクトが動かされて移動不可能領域24が変化するケースが有る。より具体的には、一箇所に積み上げられていた木箱10(図2参照)が倒壊して分散したり、柱や電柱などが倒れたり、ビルの看板が外れて落下したなどのシチュエーションが考えられる。また、後者のイベント発生に係るケースでは、マップ自体が切り換わったり、天井や床が崩落するなどして探索領域22の形状が変化するシチュエーションが考えられる。
【0051】
図7の例は、図6と比較すると、探索領域22の形状は変化していないが、障害物オブジェクトの位置が変化して新たにハッチング表示された部分が移動不可能領域24に追加されたケースを示している。この場合、暫定ルート26を再度求めるとともに、先に述べたのと同様にルート短縮補正処理を実行して新たな確定ルート28を決定する。
【0052】
また、ルート再探索の第2のタイミングとしては、確定ルート上に他の敵NPCが存在してルートを塞いでいると判断される時である。例えば、図8(a)〜(b)に示すように、既に求められている確定ルート28の上に、他の敵NPC30、32が移動してきて停止した状態を示している。停止状態は、その位置がそもそも移動の終点Peとなっているケースや、その位置で止まって攻撃をしているケース、或いはその位置で被弾して動けなくなっているケースなどが考えられる。そして、確定ルート28の上に止まっている他の敵NPCの数が基準値(例えば、1〜3)以上となると、ルート再検索が行われる。そして、図8(b)に示すように、新たな確定ルート28が設定される。この新たな確定ルート28では、もともと2つの直線部分で構成されていたルートが、3つの直線部分で形成されたルートに代わっている事を示している。
【0053】
また、ルート再探索の第3のタイミングとしては、タイマを利用した周期的なタイミングの到来である。例えば、数十秒程度の時間をタイマでカウントし、その都度ルート再検索を実行する。これによって、先に述べた第1〜第2のタイミング以外の想定外の状況で敵NPC4が確定ルート28を正常に移動できなくなる事態を保障することができる。
【0054】
[機能ブロックの説明]
次に、上述のような特徴を実現するための機能構成について説明する。
図9は、本実施形態における機能構成の一例を示す機能ブロック図である。同図に示すように本実施形態では、操作入力部100と、処理部200と、音出力部350と、画像表示部360と、通信部370と、記憶部500とを備える。
【0055】
操作入力部100は、プレーヤによって為された各種の操作入力に応じて操作入力信号を処理部200に出力する。例えば、ボタンスイッチや、ジョイスティック、タッチパッド、トラックボール、2軸以上の検出軸を有する多軸検出型加速度センサ又は検出軸方向を違えて組み合わされた単軸検出型加速度センサユニット、少なくとも2方向以上の検出方向を可能にする多方向検出型傾斜センサまたは検出方向を違えて組み合わされた単方向検出型傾斜センサユニット、基準位置からのズレを撮影するビデオカメラなどによっても実現できる。図1ではガン型コントローラ1130がこれに該当する。
【0056】
処理部200は、例えばCPUやGPU等のマイクロプロセッサや、ASIC(特定用途向け集積回路)、ICメモリなどの電子部品によって実現され、各機能部との間でデータの入出力を行う。そして、所定のプログラムやデータ、操作入力部100からの操作入力信号に基づいて各種の演算処理を実行して、ガンシューティングゲーム装置1100の動作を制御する。図1では制御ユニット1150がこれに該当する。
そして本実施形態における処理部200は、ゲーム演算部210と、音生成部250と、画像生成部260と、通信制御部270とを備える。
【0057】
ゲーム演算部210は、ゲームの進行に係る処理を実行する。例えば、仮想3次元空間中に障害物オブジェクト等を配置してゲーム空間を形成する処理や、ゲーム空間中にプレーヤキャラクタ2や敵NPC4等のキャラクタオブジェクトを配置する処理、配置されたキャラクタ等の動作制御処理、キャラクタの移動や攻撃といった各種動作制御処理、攻撃等によるオブジェクト(例えば弾丸とキャラクタ)間のヒット判定処理、物理演算処理、ゲーム結果の算出処理といった処理が実行対象に含まれる。
そして、本実施形態のゲーム演算部210は、照準位置判定部212と、プレーヤキャラクタ動作制御部214と、NPC動作制御部216と、移動ルート探索部218とを含んでいる。
【0058】
照準位置判定部212は、操作入力部100で指し示されているゲーム画面座標系における照準位置座標を決定する。つまり、画像表示装置1122に向けられたガン型コントローラ1130の銃口が向けられた画面上の位置を求める。そして、画面上の位置から仮想三次元空間における照準位置を求め、銃口の向きとして決定する。この照準位置判定部212の機能は、公知のガンシューティングゲーム装置の技術で実現することができる。
【0059】
プレーヤキャラクタ動作制御部214は、プレーヤキャラクタ2の動作を制御する。具体的には、先ず記憶部500のマップデータ512毎に設定されているPC(プレーヤキャラクタ)移動設定データ520を参照して、所定のコースを所定のタイミングで移動するように移動制御する。また、コースを移動中に所定のタイミングで敵NPC4の襲撃方向を向くように視線方向を制御する。また、プレーヤがガン型コントローラ1130で射撃操作したことを検出して、照準位置判定部212で求めた照準位置に向けて射撃をするように動作制御する。
尚、本実施形態では、プレーヤキャラクタの移動は所定のコースを辿るように設定されているが、プレーヤが自在に移動可能な構成とする場合には、移動操作入力に応じてプレーヤキャラクタを移動させる制御も行うとすれば良い。
【0060】
NPC動作制御部216は、記憶部500に記憶されているスクリプトデータ526を参照して、敵NPC4の出現・移動・攻撃・回避などの動作を制御する。そして、移動制御では、移動ルート探索部218で求めた確定ルートに従って敵NPC4を移動制御させる。尚、NPC動作制御部216は、所定の思考ルーチンに従って自動的に動作を決定するいわゆる「AI制御」機能を含むとしても良い。
【0061】
移動ルート探索部218は、敵NPC4の移動ルートを探索・設定する。
具体的には、先ず記憶部500のゲーム空間設定データ510の内、現在プレイ中のゲームステージのマップデータ512を参照して探索領域22(図5参照)を設定する。本実施形態では、敵NPC4は歩行移動をするのでゲーム空間を形成する地面や床面のモデルデータ(床面メッシュデータ514)を探索領域22の基礎データとする。敵NPC4が飛行移動する場合には、所定の3次元格子状メッシュデータを生成しこれを探索領域として使用する。次いで、各マップデータ512の障害物配置データ516を参照して、探索領域22に移動不可能領域24(図5参照)を設定する。
【0062】
次いで、スクリプトデータ526を参照したり、或いは所定の思考ルーチン(所謂「AI」)を実行して移動の始点Ps及び終点Peとなる経由候補点を探索領域22上に選択・設定する。本実施形態では、探索領域22を構成する各ポリゴンの各辺の中点位置を経由候補点とし、何れかの経由候補点を始点Ps及び終点Peとする。そして、公知の最短ルート探索処理(例えば、A*(スター)アルゴリズムなど)を実行して、始点Psから終点Peを結ぶ暫定ルート26を決定し、決定した暫定ルート26に対してルート短縮補正処理を実行して確定ルート28を決定する(図6参照)。
【0063】
移動ルート探索部218で求められた暫定ルート26や確定ルート28のデータは、記憶部500に各敵NPC毎に用意されるNPCステータスデータ530に、暫定ルートデータ540及び確定ルートデータ542として格納される。また、探索領域22の情報は探索領域データ544として記憶部500に記憶され、確定ルートの設定に際して検索直線を設定するための検索開始点とした経由候補点、及び検索先とした経由候補点の情報は、それぞれ検索開始ノード546,検索先ノード548として記憶部500に記憶される。
【0064】
音生成部250は、例えばデジタルシグナルプロセッサ(DSP)、音声合成ICなどのプロセッサや、音声ファイル再生可能なオーディオコーデックによって実現され、ゲーム演算部210による処理結果に基づいてゲームに係る効果音やBGM、各種操作音の音信号を生成し、音出力部350に出力する。
【0065】
音出力部350は、音生成部250から入力される音信号に基づいて効果音やBGM等を音出力する装置によって実現される。図1ではスピーカ1124がこれに該当する。
【0066】
画像生成部260は、例えば、GPU(Graphics Processing Unit)、デジタルシグナルプロセッサ(DSP)などのプロセッサ、ビデオ信号IC、ビデオコーデックなどのプログラム、フレームバッファ等の描画フレーム用ICメモリ等によって実現される。画像生成部260は、ゲーム演算部210による処理結果に基づいて1フレーム時間(1/60秒)で1枚のゲーム画像を生成し、生成したゲーム画像の画像信号を画像表示部360に出力する。
【0067】
画像表示部360は、画像生成部260から入力される画像信号に基づいて各種ゲーム画像を表示する。例えば、フラットパネルディスプレイ、ブラウン管(CRT)、プロジェクターといった画像表示装置によって実現できる。図1では画像表示装置1122がこれに該当する。
【0068】
通信制御部270は、データ通信に係るデータ処理を実行し、通信部370を介して外部装置とのデータのやりとりを実現する。
【0069】
通信部370は、通信回線1と接続して通信を実現する。例えば、無線通信機、モデム、TA(ターミナルアダプタ)、有線用の通信ケーブルのジャックや制御回路等によって実現され、図1の通信装置1154がこれに該当する。
【0070】
記憶部500は、処理部200にガンシューティングゲーム装置1100を統合的に制御させるための諸機能を実現するためのシステムプログラムや、ゲームを実行させるために必要なゲームプログラム、各種データ等を記憶する。また、処理部200の作業領域として用いられ、処理部200が各種プログラムに従って実行した演算結果や操作入力部100から入力される入力データ等を一時的に記憶する。この機能は、例えばRAMやROMなどのICメモリ、ハードディスク等の磁気ディスク、CD−ROMやDVDなどの光学ディスクなどによって実現される。図1では制御ユニット1150が搭載するフラッシュメモリ1152などがこれに該当する。
【0071】
本実施形態では、記憶部500はシステムプログラム502と、ゲームプログラム504とを記憶している。処理部200がゲームプログラム504を読み出して実行することによって、処理部200にゲーム演算部210としての機能を実現できる。
特にゲームプログラム504には、NPC動作制御部216や移動ルート探索部218の機能を実現させるためのNPC制御プログラム506が含まれている。
【0072】
また、記憶部500には、予め用意されるデータとして、ゲーム空間設定データ510と、キャラクタ初期設定データ524と、スクリプトデータ526が記憶されている。
更にゲームの進行に伴って随時生成や更新が行われるデータとして、着弾履歴データ528と、NPCステータスデータ530とを記憶する。また、ゲームの進行に係る処理を実行するにあたり必要となるデータ(例えば、仮想カメラCMの仮想3次元空間座標系における位置座標や姿勢情報や、カウンタの値、タイマの値)なども適宜記憶されるものとする。
【0073】
ゲーム空間設定データ510は、仮想3次元空間にゲーム空間を形成するための各種データをゲームステージ別のマップデータ512として格納している。
一のマップデータ512は、プレーヤキャラクタや敵NPC4が移動する地表や床面のモデルデータに相当する床面メッシュデータ514と、床面メッシュデータ514で形成される地表や床面に配置され障害物となり得るオブジェクトの位置や姿勢を定義する障害物配置データ516と、障害物となり得るオブジェクトのモデルデータやテクスチャデータなどを格納する障害物モデルデータ518と、当該マップにおいてプレーヤキャラクタが自動移動制御されるコースや移動速度、視線方向の変化などを定義するPC移動設定データ520とを含む。これらマップデータ512に含まれるデータは、公知のガンシューティングゲームのそれと同様に実現できる。
【0074】
キャラクタ初期設定データ524は、プレーヤキャラクタや敵NPC4の各種初期設定データを格納している。例えば、キャラクタについてはモデルデータ、テクスチャデータ、モーションデータ、耐力値の初期値、攻撃力、移動速度などが格納されている。
【0075】
スクリプトデータ526は、敵NPC4の動作タイミングと動作の内容、天井の崩落やゲームステージの切り換えといったイベントのタイミングとそのイベント内容など、ゲーム進行上の出来事を設定するデータである。
例えば、図10に示すように、タイミング526aと対応づけて、対象とされるオブジェクト526bと、その動作526cと、動作内容を定義する動作パラメータ526dとが格納されている。タイミング526aには、ゲーム開始からの経過時間に相当するフレーム番号が格納される。オブジェクト526bには、敵NPC4の識別情報や、崩落する天井や爆発する自動車など可動する障害物オブジェクトや背景のオブジェクトの識別情報が格納される。動作526cには、動作制御するプログラムのサブルーチンや関数が定義され、動作パラメータ526dには動作制御に必要なパラメータ値が格納される。
【0076】
同図の例をより具体的に説明すると、例えば、タイミング526aが「frame300」では、「敵002」のIDを有する敵NPC4が、ゲーム空間内の「出現位置=(x1,y1,z1)」の座標に「出現(appear)」し、「frame301〜frame480」の間に「始点、終点=node001,node298」として「移動(move)」するように設定されている。
また、タイミング「frame420〜frame480」では、「天井」がゲーム空間内の「落下位置=(x3,y3,z3)」へ「落下(fall)」するようにイベントが設定されている。
そして、タイミング「frame480」で「変更マップ=map02」へ「マップ変更(map−change)」する所謂ゲームステージの変更イベントが設定されている。
【0077】
着弾履歴データ528は、プレーヤキャラクタの射撃によって着弾したゲーム空間内の位置座標と時間とを対応付けて格納するデータであり、プレーヤキャラクタ動作制御部214が射撃動作を制御する際に随時記憶・蓄積されてゆく。
【0078】
NPCステータスデータ530は、敵NPC毎に用意され、該当キャラクタの現在状態を示す各種データを格納する。
一つのNPCステータスデータ530は、例えば、キャラクタID532と、ヒットポイント534と、ゲーム空間内における位置座標を格納する現在位置536と、現在実行中の動作の種類や当該動作のモーション制御情報などを格納する動作制御パラメータ538と、暫定ルート26を定義する情報を格納する暫定ルートデータ540と、確定ルート28を定義する情報を格納する確定ルートデータ542と、探索領域データ544を含む。また、確定ルートの決定に係る処理において検索直線の検索開始点と検索先となる経由候補点(ノード)との識別情報を格納する検索開始ノード546及び検索先ノード548を含む。
【0079】
暫定ルートデータ540と確定ルートデータ542は、基本的には同じデータ構造を有する。例えば暫定ルートデータ540は、図11に示すように、始点Psとされる経由候補点の識別情報を格納する始点ノード540aと、終点Peとされる経由候補点の識別情報を格納する終点ノード540bと、経由順番号540cに対応づけられた経由候補点の識別情報を格納するノードID540dとが含まれている。経由順番号540cが「1」及び「m(当該ルートにおける経由順番号の最大値を示す)」の経由候補点は、それぞれ始点ノード540a及び終点ノード540bと同じになる。
【0080】
探索領域データ544には、探索領域22に係る情報が格納される。本実施形態では、例えば図12に示すように、プレイ中のゲームステージのマップデータ512の床面メッシュデータ514を複製した床面メッシュデータ544aと、同データで定義されるポリゴンモデルの各辺の中点を経由候補点として抽出し、抽出した各経由候補点に付与したノードID544bと該当する経由候補点のゲーム空間座標系座標544cと、移動不可能領域フラグ544dを対応づけて格納する。その他、公知のルート探索処理を実行するのに必要な情報が適宜格納される。
【0081】
[動作の説明]
次に、本実施形態におけるガンシューディングゲーム装置1100の動作について説明する。尚、ここで説明される処理は、処理部200がシステムプログラム502並びにゲームプログラム504を読み出して実行することによって実現される。
【0082】
図13は、本実施形態における主たる処理の流れを説明するためのフローチャートである。同図に示すように、ゲーム演算部210は先ずゲーム空間設定データ510、キャラクタ初期設定データ524を参照して、仮想3次元空間中に建物8や木箱10(図2参照)などの障害物オブジェクトや背景オブジェクトを配置してゲーム空間を形成し(ステップS2)、形成したゲーム空間内にプレーヤキャラクタ2と、敵NPC4と、仮想カメラCMを配置する(ステップS4)。そして、移動ルート探索周期を自動的に計時する繰り返しカウンタによるカウンタを始動させる(ステップS6)。
【0083】
次に、処理部200はゲームがスタートしているか否かを判定する(ステップS8)。スタートしていなければ(ステップS8のNO)、処理部200はステップS48に移行して初期状態のゲーム空間内の様子を仮想カメラCMで撮影した画像(ゲーム空間画像)をレンダリングし、これにヒットポイントゲージ12等の各種情報表示を合成してゲーム画面を生成する。そして、生成したゲーム画面を画像表示部360、つまりは画像表示装置1122に表示させる。また、ゲーム音を生成して音出力部350、つまりはスピーカ1124から放音させる。
【0084】
次に、処理部200はゲーム終了条件を満たしているか否かを判定するが(ステップS50)。ゲームスタート前の状態であれば(ステップS50のNO)、再びステップS8に戻る。
【0085】
ゲームがスタートしていれば(ステップS8のYES)、処理部200は、公知のビデオゲームの制御と同様にゲーム開始からの経過時間を示すパラメータとして描画フレーム数のカウントを開始する。そして、ステップS12〜S50をゲーム終了条件を満たすと判定されるまで、画像表示装置1122のリフレッシュレートよりも十分短い制御サイクルで繰り返し実行する。
【0086】
具体的には、先ず、処理部200はプレーヤキャラクタの動作制御を実行する(ステップS12)。より具体的には、ガン型コントローラ1130の銃口を向けた先のゲーム画像座標系における照準位置座標を求め、当該箇所に照準6を表示させるとともに、当該照準位置に相当するゲーム空間内の位置を狙っているように銃を構えるプレーヤキャラクタの腕を動作制御する。そして、ガン型コントローラ1130での射撃操作を検出して、現在の照準位置座標に相当するゲーム空間中の位置に向けて射撃動作制御する。これらは、公知のガンシューディングゲームにおける処理と同様に実現できる。
【0087】
次に、処理部200は現在のゲームステージに対応するマップデータ512のPC移動設定データ520を参照して、設定通りにプレーヤキャラクタを移動させるとともに、その視線方向を制御する(ステップS14)。
【0088】
ここで、処理部200はスクリプトデータ526を参照する。現時点が敵NPCの出現タイミングとして設定されている場合には(ステップS16のYES)、指定された位置座標に敵NPCを配置・出現させ(ステップS18)、移動ルート探索処理を実行する(ステップS20)。
【0089】
図14は、本実施形態における移動ルート探索処理の流れを説明するためのフローチャートである。同処理では先ず、処理部200は現在のゲームステージに対応するマップデータ512の床面メッシュデータ514を複製してこれを探索領域22の基礎データとし、探索領域22に識別可能な経由候補点を格子状に設定する(ステップS70)。この情報は、対応する敵NPC4のNPCステータスデータ530の探索領域データ544として記憶される。
【0090】
次いで、処理部200は、探索領域22に移動不可能領域24を設定する(ステップS72)。具体的には、同マップデータの障害物配置データ516及び障害物モデルデータ518を参照して、ゲーム空間内に配置される障害物オブジェクトのバウンダリボックスが掛かる経由候補点の移動不可能領域フラグ544dに「1」を設定して移動不可能領域24を設定する。
【0091】
次に、処理部200は処理対象としている敵NPCに確定ルート28が既に設定されているか否かを判定する(ステップS74)。処理対象の敵NPCのNPCステータスデータ530に確定ルートデータ542が設定されていなければ否定判定し(ステップS74のNO)、スクリプトデータ526から現時点に該当するタイミング526aにおいて、処理対象の敵NPCに設定されている移動の動作パラメータ526dを参照して、これから探索するルートの始点Ps及び終点Peの指定を読み出し、指定されたノードIDを暫定ルートデータ540の始点ノード540a及び終点ノード540bにそれぞれ格納する(ステップS76)。
【0092】
一方、該当するNPCステータスデータ530に既に確定ルートデータ542が存在していれば(ステップS74のYES)、移動ルートの再検索に相当すると判断できるので、既存の暫定ルート及び確定ルートの情報を一旦クリアして(ステップS80)、処理対象の敵NPCの現在位置に最寄りの経由候補点(ノード)を選択し、これを新たに暫定ルートデータ540及び確定ルートデータ542の始点ノードに再設定する(ステップS82)。更に、スクリプトデータ526から同敵NPCに現時点のタイミングで設定されている移動の終点Peの指定を読み出して、これを暫定ルートデータ540及び確定ルートデータ542の終点ノードに設定する。
【0093】
始点ノード540a及び終点ノード540bの設定が完了したならば、処理部200は公知の最短ルート検索処理と同様にして探索領域22に設定されている経由候補点(ノード)を隣接する点を伝うようにして始点Psから終点Peを結ぶ暫定ルート26を決定する(ステップS90)。この時、始点Psの経由順番号nを「1」とする暫定ルートデータ540が設定される。尚、以降では暫定ルートの探索に伴い付与された終点Peの経由順番号を「m」として説明する。
【0094】
さて、暫定ルート26が決定されたので、次に処理部200はルート短縮補正処理を実行する(ステップS92〜S106)。具体的には、記憶部500にカウンタの領域を確保し、カウンタの値Nを暫定ルートの終点Peの経由順番号「m」を設定し(ステップS92)、検索開始ノード546に終点Peを設定する(ステップS94)。そして、経由順番号「N」の経由候補点(ノード)を検索先ノード548に設定し、検索開始ノード546から検索先ノード548を結ぶ検索直線Lx(xは添字。図6のLm−1などが該当)を設定する(ステップS96)。
【0095】
設定された検索直線Lxが移動不可能領域24に掛からなければ(ステップS98のNO)、処理部200は確定ルートデータ542にこの検索直線Lxを追加し(ステップS100)、カウンタNから「1」減算する(ステップS102)。反対に、検索直線Lxが移動不可能領域24に掛かる場合には(ステップS98のYES)、検索開始ノード546の設定を経由順番号「N+1」の経由候補点に再設定する(ステップS104)。
【0096】
次に、処理部200は現在のカウンタの値Nが「1」で有るか、つまり検索先ノードが暫定ルートの始点Psに達したか否かを判定する(ステップS106)。否定ならば(ステップS106のNO)、ステップS96に戻り、「1」減算されたカウンタNの値を経由順番号とする次の経由候補点を新たな検索先ノード548として、再度検索直線Lxを設定する。カウンタの値Nが「1」であれば(ステップS106のYES)、移動ルート探索処理を終了する。
【0097】
図13のフローチャートに戻って、続いて処理部200は、ゲーム空間内に配置されている全敵NPCについてループAの処理を実行する(ステップS22〜S28)。ループAでは、先ず処理対象とされる敵NPCについて移動制御処理を実行し(ステップS24)、次いでスクリプトデータ526を参照して同データの設定に従って攻撃動作制御処理を実行する(ステップS26)。
【0098】
図15は、本実施形態における移動制御処理の流れを説明するためのフローチャートである。同処理では先ず、処理部200は処理対象とされる敵NPCの視界前方の所定範囲内に他の敵NPCが存在するか否かを判定する(ステップS130)。存在している場合(ステップS130のYES)、更に該当する他の敵NPCの数が基準値を超えるか否かを判定する(ステップS132)。ここで言う「基準値」は、処理対象とされる敵NPCが移動ルートを変更せずに視界前方所定範囲内に他の敵NPC群を突っ切って移動するときにその動作が不自然に見るか否かで適宜設定されている。戦場で3人(基準値=3)の他の敵NPCが集まっている中を無理に突っ切るのは不自然であり、むしろ移動しやすい別の移動ルートに変更した方が目的地点により素早く移動できる訓練された兵士の判断に相当する。
【0099】
基準値を超える場合には(ステップS132のYES)、処理部200は迂回ルート探索処理を実行する(ステップS136)。また、基準値を超えない場合でも(ステップS132のNO)、処理対象とされる敵NPCの確定ルート28の前方に停止中の他の敵NPCが存在する場合には(ステップS134のYES)、やはり迂回ルート探索処理を実行する(ステップS136)。
【0100】
図16は、本実施形態における移動ルート探索の一種である迂回ルート探索処理の流れを説明するためのフローチャートである。同処理では、処理部200は前述のステップS70及びS72と同様にして、探索領域22と経由候補点の設定(ステップS160)と、探索領域22に移動不可能領域24を設定する(ステップS162)。
【0101】
そして、処理対象とされる敵NPCの視界前方所定範囲内に居る他の敵NPCの位置を移動不可能領域24に追加設定する(ステップS164)。具体的には、探索領域データ544の内、該当する他の敵NPCのバウンダリボックスが掛かる経由候補点の移動不可能領域フラグ544dを「1」に設定する。
【0102】
次いで、処理部200は終点ノード540bの設定を残して、暫定ルートと確定ルートの情報をクリアし(ステップS166)、処理対象とされる敵NPCの現在位置に最寄りの経由候補点(ノード)を暫定ルート及び確定ルートの始点ノード540aに設定する(ステップS168)。
【0103】
そして、移動ルート探索処理のステップS90と同様にして暫定ルートを決定し(ステップS170)、前述のステップS92〜S106と同様のルート短縮補正処理を実行し(ステップS172)、迂回ルート探索処理を終了する。
【0104】
図15のフローチャートに戻って、処理部200は次に、照準位置が、処理対象とされる敵NPCに向いているか否かを判定する(ステップS138)。例えば、当該敵NPCの代表点のゲーム画面座標系の位置座標から所定範囲に照準6が表示される場合には肯定判定し(ステップS138のYES)、当該敵NPCに回避運動をさせて(ステップS142)、移動制御処理を終了する。尚、回避運動は、例えば所定距離を仮想カメラCMの視線方向に対して右方向或いは左方向に移動させる、しゃがみ動作させるなど適宜設定可能である。
【0105】
また、照準位置が処理対象とされる敵NPCに向いていなくとも(ステップS138のNO)、着弾履歴データ528を参照して、処理対象とされる敵NPCを中心とした所定の着弾度合判定領域に過去所定時間(例えば2秒相当)内に基準数を上回る着弾がある場合には、当該敵NPCが狙われている可能性が高いと判断して(ステップS140のYES)、同じように処理対象とされる敵NPCに回避運動をさせ(ステップS142)、移動制御処理を終了する。
【0106】
一方、処理対象とされる敵NPCに照準も向けられていない上、その周囲への着弾も少なければ(ステップS140のNO)、処理部200は処理対象とされる敵NPCを確定ルートデータ542で定義されている確定ルート28を逆に辿るようにして、今回の制御サイクル分(例えば、1描画フレーム分)だけ移動制御する(ステップS144)。
【0107】
尚、同ステップにおける移動制御では、厳密に折れ線状の確定ルート28に沿ってキャラクタのオブジェクトを移動させるとしても良いが、確定ルート28を元にして折れ線の節部前後を滑らかに繋ぐ曲線(具体的には、確定ルート28の経由候補点を元に求められる近似曲線など)を算出してこれに沿ってキャラクタのオブジェクトを移動させるとしても良い。或いは、乱数を発生させ、乱数の大きさに応じて確定ルート28から実際の移動目標位置をずらす処理を行うことで、直線的な移動になり過ぎないようにすると、敵NPCにより自然な移動動作をさせることができる。
【0108】
さて、図13において、全敵NPCについてループAを実行したならば、処理部200は、ステップS24の移動制御処理に含まれる回避動作で、確定ルートから基準距離以上逸れた敵NPCが有るか否かを判定する(ステップS30)。
そして、該当する敵NPCがある場合には(ステップS30のYES)、処理部200は該当敵NPCについて移動ルート探索処理を実行して移動ルートを再設定する(ステップS32)。
【0109】
次いで、処理部200はステップS6で開始した移動ルート探索周期のカウンタを参照して、探索周期が到来したか否かを判定する(ステップS34)。そして、肯定の場合(ステップS34のYES)、処理部200はゲーム空間内に配置済の全敵NPCについて移動ルート探索処理を実行して移動ルートを再設定する(ステップS36)。
【0110】
次に、処理部200はスクリプトデータ526を参照して、イベント発生処理を実行する(ステップS38)。例えば、天井の崩落やマップの切り換えなどがこれに当たる。
そして、イベントの発生に伴って、新たに障害物オブジェクトが配置されたり既存の障害物オブジェクトの配置位置が変化した場合、或いはマップが切り換った場合には、ルート探索の基礎となっていた探索領域22がゲーム空間内の現状と乖離していると判断して(ステップS40のYES)、処理部200はゲーム空間内に配置済の全敵NPCについて移動ルート探索処理を実行して移動ルートを再設定する(ステップS42)。
【0111】
次いで、処理部200はゲーム結果の算出を行う(ステップS44)。ゲーム結果としては、プレーヤキャラクや敵NPCの攻撃のヒット判定、そのヒット判定に基づくプレーヤキャラクや敵NPCのヒットポイントの減算、ヒットポイントゲージ12や弾数ゲージ14、方位表示16の更新などが含まれる。
そして、算出したゲーム結果に応じて、着弾位置に火花を表示させたり、着弾した敵NPCにやられ動作をさせたりと言った、着弾・やられ処理を実行する(ステップS46)。
【0112】
次いで、処理部200はゲーム画面の生成及び表示制御と、ゲーム音の生成及び放音制御処理を実行し(ステップS48)、先に算出されたゲーム結果に基づいてゲーム終了の判定をする(ステップS50)。本実施形態では、プレーヤキャラクのヒットポイントが「0」になればゲームオーバ、「0」になる前に所定のゴール地点に到達すればゲームクリアとしてゲーム終了条件を満たすと判断する。
【0113】
ゲーム終了条件を満たしていないと判定した場合には(ステップS50のNO)、ステップS8に移行する。反対にゲーム終了条件を満たすと判定した場合には(ステップS50のYES)、処理部200はゲームオーバ或いはゲームクリアの結果に応じた所定のゲーム終了告知画面を表示させるなどのゲーム終了処理を実行して(ステップS52)、一連の処理を終了する。
【0114】
以上、本実施形態によれば、格子状に配置された経由候補点に基づいてNPCの移動ルートの元(暫定ルート)を決定する構成であっても、障害物が無く直線的に移動できる見通し部分についてはこれを短縮補正することができる。従って、NPCがより本物の兵士のように「移動可能に見通しのできるところはまっすぐに目的地点へ向かう」ように移動をさせることができる。
【0115】
また、移動ルートについては、ゲームの進行状況に応じて適宜ルート再探索をさせることができる。例えば、確定したルート上に他のNPCが密集している場合や、他のNPCが停止していて移動の邪魔になったり、無理にそこを突っ切ることが不自然に見えると判断できる場合に、再度移動ルートを探索して迂回させることができる。更には、移動ルートに束縛されず、移動中にプレーヤキャラクタに標的とされている可能性が高い場合には、NPCに回避運動をさせることで、より戦闘行動として自然な振る舞いをさせることができる。
【0116】
また例えば、回避運動等で移動ルートから逸れた場合や、イベント発生処理によって移動ルートを探索した探索領域の前提が変わった場合には、自動的に移動ルートの再探索をさせ、これに対処することができる。
更には、一定周期毎にも移動ルートの再探索をすることができるので、その他想定外の状況によって確定した移動ルートが不適当なままゲームが進行する事の無いように保障することができる。
【0117】
尚、移動ルートの再探索の契機は、上記以外にも適宜設定することができる。
例えば、各敵NPCの移動距離を累積算出するステップをループA内に設け、ステップS30〜S44の間のどこかで、累積算出された移動距離が所定の基準値に達した敵NPCを抽出するステップと、抽出した敵NPCの移動距離の累積値を「0」にリセットして、移動ルート探索処理を実行するステップとを加える構成としても良い。
また別の例としては、テップS30〜S44の間のどこかで、プレーヤキャラクタ2が、使用効果によって敵NPCが強制的に移動される可能性があるアイテム(例えば、強烈な爆風を生み出す特殊爆弾アイテム)を使用したことを検知するステップを設け、このステップで検知された場合に配置済みの全敵NPCについて移動ルート探索処理を実行するステップを加える構成とすることもできる。
【0118】
〔第2実施形態〕
次に、本発明を適用した第2実施形態について説明する。本実施形態は、基本的には第1実施形態と同様の構成を有するが、確定ルートを設定する際に、検索開始ノードを始点Psより設定し、検索先ノードを経由順番号に従って順次設定する点が異なる。尚、本実施形態についての説明では、第1施形態と同様の構成要素については同じ符号を付与し、構成の差異についてのみ説明する。
【0119】
図17は、本実施形態における確定ルート探索の原理について説明するための図である。同図に示すように、確定ルート28の探索に際しては、先ず検索開始ノード546に始点Psを設定し、検索先ノード548を経由順番号n順に順次設定してその都度検索直線Lx(xは添字)が移動不可能領域24に掛かるか否かを判定する。
移動不可能領域24に掛かる場合、検索開始ノード546を検索先ノード548の経由順番号nより一つ前のn−1の経由候補点に再設定し、経由順番号nの経由点候補を検索先ノード548に設定し経由順番号n順に順次設定してその都度検索直線Lxが移動不可能領域24に掛かるか否かを判定することを、検索先ノード548が終点Peに到達するまで繰り返す。
【0120】
同図の例では、検索直線L9が移動不可能領域24に掛かるので、始点Psから経由順番号n=8の経由候補点を結ぶ検索直線L8が確定ルートの第1の部分として確定される。次に、経由順番号n=9の経由候補点を新たな検索開始ノード546に設定して、経由順番号n=9の経由候補点を新たな検索先ノード548して検索直線Lxを設定し、移動不可能領域24との衝突判定を再開する。結果、経由順番号n=8の経由候補点から終点Peまでの検索直線Lmは移動不可能領域24に掛からないので、当該検索直線が確定ルートの第2の部分と指定確定される。
【0121】
図18は、本実施形態における移動ルート探索処理(移動ルート探索処理B)の流れを説明するためのフローチャートである。同処理は基本的に第1実施形態の移動ルート探索処理と同様に実現されるが、処理部200は暫定ルートを決定した後(ステップS90)、カウンタの値Nを「1」に設定し(ステップS93)、検索開始ノード546に始点Psを設定する(ステップS95)。そして、検索直線Lxを設定して(ステップS96)、この検索直線Lxが移動不可能領域24に掛かるか否かを判定する(ステップS98)。
【0122】
検索直線Lxが移動不可能領域24に掛からない場合(ステップS98のNO)、処理部200は当該検索直線Lxを確定ルートに設定したのち(ステップS100)、カウンタの値Nに「1」を加算する(ステップS103)。
また、検索直線Lxが移動不可能領域24に掛かる場合(ステップS98のYES)、処理部200は検索開始ノード546に経由点番号n=N−1の経由後方点を設定する(ステップS105)。
そして、ステップS106に代えて、カウンタの値Nがmに達したか否か、つまりは検索先ノード548が終点Peに達したか否かを判定する(ステップS107)。
【0123】
〔第3実施形態〕
次に、本発明を適用した第3実施形態について説明する。本実施形態は、基本的には第1又は第2実施形態と同様の構成を有するが、スクリプトデータ526によって移動の終点Peが複数箇所指定されており、ゲームの進行状況に応じてその何れかを選択する点が異なる。尚、本実施形態についての説明では、第1又は第2実施形態と同様の構成要素については同じ符号を付与し、構成の差異についてのみ説明する。
【0124】
図19は、本実施形態におけるスクリプトデータ526の例を示す図である。本実施形態では動作526c「move(移動)」の動作パラメータ526dには、一つの始点Psと、選択順位付きの複数の選択候補の終点が設定される。勿論、選択候補として設定できる終点Peの数は、適宜設定することができる。
【0125】
図20は、本実施形態における移動ルート探索の原理を説明するための図である。
同図の例では、敵NPC4には、第1順位終点Pe1〜第3順位終点Pe3が設定されている。第1順位終点Pe1と第2順位終点Pe2は、ともにプレーヤキャラクからの攻撃を防ぎ得る障害物群20に隠れられる位置にあって優先順位が高く設定されている(図20(a))。
【0126】
そして、本実施形態では、敵NPC4の暫定ルートを設定する際、終点ノード540bとする終点Peをゲームの進行状況に応じて決定する。
例えば、終点Peの周囲に存在する他の敵NPCの数に基づいて、できるだけ敵NPCがゲーム空間内に分散するように終点Peが選択される。同図の例では、第1順位終点Pe1を基準点とする所定の友軍検索範囲36には、基準値を超える数の他の敵NPC38が停止しているので選択候補から除外することで、次に優先行動が高い第2順位終点Pe2が選択されて終点ノード540bとされる(図20(b))。
もし、第2順位終点Pe2の周囲にも同様に基準値を超える数の他の敵NPC38が存在すれば、当該終点も選択候補から除外され、第3順位終点Pe3が選ばれる。
【0127】
図21は、本実施形態における移動ルート探索処理(移動ルート探索処理C)の流れを説明するためのフローチャートである。同処理は、基本的には第1実施形態又は第2実施形態の移動ルート探索処理と同様に実現されるが、ここでは第1実施形態を基にして説明する。
【0128】
移動ルート探索処理Cは、第1実施形態と比べて次のような特徴を有する。
第1実施形態のステップS76(図14参照)に代えて、処理対象とされる敵NPCに確定ルートデータ542が設定されていない場合(ステップS74のNO)、処理部200はスクリプトデータ526を参照して、現時点が該当するタイミングにおいて該当敵NPCに設定されている移動の動作パラメータ526dから始点Psの設定を読み出し、始点Psの経由候補点を暫定ルートデータ540の始点ノード540aに設定する(ステップS77)。反対に、処理対象とされる敵NPCに確定ルートデータ542が既に設定されている場合には(ステップS74のYES)、第1実施形態のステップS80〜S84に代えて、処理部200は処理対象とされる敵NPCの現在位置に最寄りの経由候補点(ノード)を始点ノード540aに設定する処理を行う(ステップS78)。
【0129】
次いで、処理部200は、スクリプトデータ526を参照して、現時点が該当するタイミングにおいて該当敵NPCに設定されている移動の動作パラメータ526dから複数の終点候補(図20で言うところの第1順位終点Pe1〜第3順位終点Pe3)の設定を読み出し、各終点候補を中心とした友軍検索範囲36に停止している他の敵NPCの数を算出する(ステップS86)。そして、算出した他の敵NPCの数が所定の基準値(例えば、「3」)未満で、且つより優先順位の高い終点候補の経由候補点の識別情報を終点ノード540bに格納して終点Peに設定する(ステップS88)。
以下、第1実施形態の移動ルート探索処理と同様に、暫定ルートを決定した後(ステップS90)、ルート短縮補正処理を実行する(ステップS92〜S106)。
【0130】
このように、本実施形態によれば、複数の終点候補の中から、例えば、ゲーム進行状況に応じて移動ルート探索の終点Peを自動的に選択することができる。例えば、他の敵NPCの配置条件を元に、他の敵NPCが密集する位置を迂回するようにすると、敵NPCが適当に分散してプレーヤキャラクタを攻撃するように、自然な戦闘移動行動をするように制御することができる。
【0131】
尚、ここで言う「ゲーム進行状況」としては、その他、プレーヤキャラクタのヒットポイントの残数、プレーヤキャラクタの所持している武器の種類やアイテムの種類、プレーヤキャラクタの種類、プレイ難易度を設定することができる。
【0132】
また、ステップS88では、他の敵NPCの数が基準未満とする終点候補を選択する構成としているが、反対に基準値以上の終点候補を選択する構成として、意図的に処理対象とする敵NPCを他の敵NPCのところに集合するように移動させることもできる。このケースは、敵NPCが集団で移動する性質を有するある種の昆虫や小動物といった設定とする場合に効果的である。
【0133】
〔第4実施形態〕
次に、本発明を適用した第4実施形態について説明する。本実施形態は、基本的には第1〜第3実施形態の何れかと同様の構成を有するが、確定ルート28を一度に求めるのでは無く、探索領域22に設定されているエリア毎に求めることで、1制御サイクル内での処理負荷を軽減する点が異なる。尚、本実施形態についての説明では、第1又は第2実施形態と同様の構成要素については同じ符号を付与し、構成の差異についてのみ説明する。
【0134】
図22は、本実施形態における移動ルート探索の原理を説明するための図である。本実施形態では、床面メッシュデータ514には複数のエリア40(40−1〜40−4)が設定されており、探索領域22の設定時にエリアの設定が受け継がれる。各エリア40の境界は床面メッシュデータ514のポリゴンの境界に沿って設定されており、エリア40の境界上のどこかには必ず経由点が存在する。
【0135】
そして、暫定ルート26は、第1〜第3実施形態の何れかと同様にして、探索領域22の全域を対象にして始点Ps〜終点Peを結ぶように一度に決定されるが、確定ルート28はプレーヤキャラクタの現在位置が該当するエリア単位で決定される。
【0136】
同図の例で言うと、プレーヤキャラクタがエリア40−1内を移動している間は、当該エリアに含まれる経由候補点の内、経由順番号nが最も小さい点である始点Psから、経由順番号nが最も大きい経由順番号n=6の経由候補点までを対象として確定ルート28の第1の部分が決定される。つまり、第1実施形態と同様に暫定ルート26の終点側からルート逆方向に検索直線Lxを設定する方式では経由順番号n=6を検索開始点とし、第2実施形態と同様に始点側からルート順方向に検索直線Lxを設定する方式では始点Ps(経由順番号n=1)を検索開始点とする。
【0137】
そして、プレーヤキャラクタがエリア40−2に到達すると、暫定ルート26の経由候補点の内、今度はエリア40−2内に位置する経由候補点を対象として確定ルート28の第2の部分を決定する。更にプレーヤキャラクタがエリア40−3に到達すると、今度は暫定ルート26の経由候補点の内、今度はエリア40−3内に位置する経由候補点を対象として確定ルート28の第3の部分を決定し、最終的に終点Peに到達する。
【0138】
尚、同図ではエリア40の形状を矩形としているが、六角形や多角形などその他の形状であっても良く、ゲーム内容に応じて適宜設定することができる。また、敵NPCが飛行移動するなど3次元的な移動が可能な場合には、予めエリア40が設定されている3次元の格子状に経由候補点を定義した探索領域データを別途用意しておいてこれを用いれば良い。
【0139】
図23は、本実施形態における移動ルート探索処理(移動ルート探索処理D)の流れを説明するためのフローチャートである。同処理は、基本的には第1実施形態〜第3実施形態の何れかの移動ルート探索処理と同様に実現されるが、ここでは第1実施形態を基にして説明する。
【0140】
移動ルート探索処理Dは次のような特徴を有する。
処理対象とされる敵NPCに確定ルートデータ542が設定されている場合(ステップS74のYES)、第1実施形態のステップS80〜S84に代えて、処理部200は処理対象とされる敵NPCの現在位置に最寄りの経由候補点を始点ノード540aに設定する処理を行う(ステップS78)。そして、処理対象とされる敵NPCが存在するエリア内の暫定ルート中、最も経由順番号nの大きい経由候補点を終点ノード540bに設定する(ステップS85)。また、第1実施形態のステップS92に代えて、処理部200はカウンタの値Nを暫定ルート26の終点ノード540bの経由順番号に設定する(ステップS91)。
以下、第1実施形態の移動ルート探索処理と同様に、暫定ルートを決定した後(ステップS90)、ルート短縮補正処理Dを実行する(ステップS92〜S106)。
【0141】
このように、本実施形態によれば、確定ルート28をプレーヤキャラクタの進行ルート前方の限定領域に限って求めることができる。よって、一の制御サイクル(図13のステップS8〜S50)における処理負荷を軽減することができる。
また、時間当たりの状況変化の激しいゲーム内容で有る場合、探索領域22全域を対象に確定ルート28を求めたとしても、その確定ルート28が有効である時間が短くなる可能性が有り演算負荷対効果が低くなるが、本実施形態ではその心配がない。
【0142】
尚、本実施形態では床面メッシュ514のポリゴンの境界と各エリア40の境界とを一致するように設定することで、エリア40の境界上に経由点が存在するように構成されているが、両者が異なる構成としても良い。
その場合、ルート短縮補正処理Dによって処理対象敵NPCが存在するエリア40内の確定ルート28を設定した後、当該エリア40に含まれる最も経由順番号nが最も大きい経由点が、経由順番号n+1の経由点の存在する次のエリア40に達しているか否かを判定するステップを加える。例えば、図22の例では経由順番号n=6の経由点が、エリア40−2に達しているかを判定する。そして、このステップで否定判定された場合には、次の確定ルート28に経由順番号nの経由点から、経由順番号n+1の経由点までの部分を自動的に追加するステップを加えると良い。
【0143】
〔第5実施形態〕
次に、本発明を適用した第5実施形態について説明する。本実施形態は、基本的には第1〜第4実施形態の何れかと同様の構成を有するが、敵NPCが移動や攻撃などの行動を自動で行う、所謂「AI制御」の形態を含む点が異なる。尚、本実施形態についての説明では、第1〜第4実施形態と同様の構成要素については同じ符号を付与し、ここでは構成の差異についてのみ説明する。
【0144】
図24〜図27は、本実施形態における敵NPCのAI制御における移動制御の特徴を説明するための図である。
【0145】
本実施形態では、スクリプトデータ526によってあるタイミングの間、敵NPCをAI制御の対象として設定することができる。また、本実施形態における敵NPCにはキャラクタの属性を設定することができる。ここで言う「キャラクタ属性」とは、兵士の好む戦闘形態を示す。本実施形態では、近接戦闘を得意とする近接型、防御力やヒットポイントが高く障害物の影に隠れずに戦闘する耐久型、障害物に隠れながら徐々にプレーヤキャラクタに接近しようとする標準型が設定される。勿論、キャラクタ属性はゲーム内容に応じて適宜設定可能である。
【0146】
また、床面メッシュデータ514で定義される領域には、予め敵NPCがAI制御で移動制御される際に始点Ps及び終点Peの候補となる目的地点Pmが随所に設定されている。そして、AI制御で移動制御する際には、処理対象とされる敵NPCの現在位置の目的地点Pmが始点Psにされ、当該敵NPCよりプレーヤキャラクタの方向にあって、且つ仮想カメラCMの撮影範囲に有る目的地点Pmを選択候補とし、その中から終点Peを選択する。
【0147】
図24に示すように、AI制御における移動制御の第1の特徴として、移動の終点Peの選択に際し、選択候補となる目的地点Pm(同図の例では目的地点Pm−1〜Pm−3)から他の敵NPC5が終点Peとしている点(同図の例では目的地点Pm−1)を除外する。これによって、一箇所に複数の敵NPCが集まってしまうといった不自然な状態を防ぐことができる。
【0148】
図25に示すように、第2の特徴として、各目的地点Pmには、キャラクタ属性毎に対応する相性を表すものとして、選択のための重み付け係数が設定されている。例えば、処理対象とされる敵NPC4が「近接型」で、選択候補とされる目的地点Pm−1〜Pm−3に同図に示すようにキャラクタ属性別重み付け係数が設定されている場合、同重み付け係数の高い目的地点Pm−2ほど選択される可能性が高くなる。
【0149】
図26は、第3の特徴を説明するための図であって、ゲーム空間を俯瞰した概念図である。処理対象とされる敵NPC4が白三角形、他の敵NPC5が黒三角形、目的地点Pmが小黒丸、障害物20が網掛け矩形として表示されている。
【0150】
第3の特徴として、プレーヤキャラクタとの相対位置関係に応じてキャラクタ属性別重み付け係数を補正し、終点Peの選択候補から目的地点Pmを除外する。具体的には、プレーヤキャラクタ(図中では仮想カメラCMで図示)を基準として、重み付け係数補正領域50と、選択対象除外領域52が設定される。
【0151】
重み付け係数補正領域50は、プレーヤキャラクタの視界方向前方、つまりは仮想カメラCMの撮影方向前方に扇状に設定される領域である。重み付け係数補正領域50に入る目的地点Pmのキャラクタ属性別重み付け係数は、終点Peの選択過程において所定値(例えば、プラス1.0)だけ高められる。これによって、近接型のキャラクタ属性を有する敵NPCが、プレーヤキャラクタに近接した目的地点Pmを選択するように工夫されている。
【0152】
選択対象除外領域52は、プレーヤキャラクタに比較的近距離で、且つ視界範囲外の領域をカバーするように設定されている。選択対象除外領域52に入る目的地点Pmは、終点Peの選択過程において選択候補から除外される。これによって、AI制御される敵NPCが仮想カメラCMから見えない場所に移動してしまうことを防ぐ事ができる。
【0153】
尚、重み付け係数補正領域50及び選択対象除外領域52は、同図に示すように平面的な設定に限らず、敵NPCが3時限的に配置され得る場合には、立体的な領域として設定することができる。また、選択対象除外領域52に代えて、第2の重み付け係数補正領域を設定し、当該補正領域に入る目的地点Pmのキャラクタ属性別重み付け係数を、終点Peの選択過程において強制的に「0」にして選択され難く構成しても良い。
【0154】
図27(表記例は図26に同じ)に示すように、第4の特徴として、終点Peの選択過程において、仮想カメラCMに設定される複数の分割撮影領域54(54a,54b,54c)毎に他の敵NPC5の分布数が算出され、他の敵NPC5の分布度合が「粗」の分割撮影領域内に位置する目的地点Pmが優先的に選択されるように分布重み付け係数が追加される。尚、分布数のカウント対象とする敵NPC5は、停止中の敵NPC、移動中の敵NPCの何れか又は両方を適宜設定することができる。
【0155】
同図の例では、仮想カメラCMの撮影範囲56には、左右方向に分割された3つの分割撮影領域54a,54b,54cが設定されている。そして、各分割撮影領域54a,54b,54cそれぞれに含まれる他の敵NPC5の分布数がカウントされ、カウント数の小さい分割撮影領域54bに含まれる目的地点Pmに付与される分布重み付け係数が高く、カウント数が大きくなるほど分布重み付け係数が小さくなるように設定されている。従って、終点Peの選択過程においては中央の分割撮影領域54bに含まれる目的地点Pmほど選択され易くなる。これによって、ゲーム画面上、敵NPCが適当に分散されるように敵NPCの移動を制御することができる。換言すると、敵NPCが、あたかもより分散してプレーヤキャラクタを攻撃するように自律的に自分の進むべき場所を判断する戦闘移動動作をしているように制御することができる。
【0156】
図28は、本実施形態における機能構成例を示す機能ブロック図である。第1実施形態の機能構成と比較すると、記憶部500のマップデータ512には、床面メッシュデータ514で定義されるポリゴンモデルの各辺の中点(経由候補点に対応)の中から目的地点Pmとすることのできる点の情報を格納する目的地点設定データ522が格納されている。
【0157】
図29は、目的地点設定データ522のデータ構成例を示す図である。同図に示すように、例えば経由候補点(ノード)の識別情報が格納されるノードID522aと対応づけてキャラクタ属性別重み付け係数522bを格納する。
【0158】
また、図28に示すように、キャラクタ初期設定データ524では、敵NPCそれぞれについてキャラクタ属性を定義しており、NPCステータスデータ530を生成する際には、これを読み出してキャラクタ属性535として格納している。
【0159】
また、本実施形態におけるスクリプトデータ526では、図30に示すように、オブジェクト526bが敵NPCで有る場合、動作526cの設定にAI制御(図中「AI」表記)を設定することができる。
【0160】
図31は、本実施形態における移動ルート探索処理(移動ルート探索処理E)の流れを説明するためのフローチャートである。同処理は基本的には第1実施形態の移動ルート探索処理と同様に実現されるが、ステップS72の次に、処理部200はスクリプトデータ526を参照して、処理対象とされる敵NPCが現在のタイミングでAI制御の対象となっているかを判定する(ステップS73a)。そして、AI制御の対象である場合(ステップS73aのYES)、処理部200は現在位置を始点ノード540aに設定して(ステップS73b)、終点設定処理を実行する(ステップS73c)。
【0161】
図32は、終点設定処理の流れを説明するためのフローチャートである。
同処理では先ず、処理部200は、現在のプレイ中のゲームステージに対応するマップデータ512の目的地点設定データ522を参照して、処理対象とされる敵NPCの現在位置よりもプレーヤキャラクタの側にある目的地点Pmであって、仮想カメラCMの現在の撮影範囲内に存在する目的地点Pmを終点Peの選択候補として抽出する(ステップS190)。
【0162】
次に、全ての他の敵NPCのNPCステータスデータ530の暫定ルートデータ540を参照して、選択候補から他の敵NPCの終点ノード540bと一致する目的地点Pmを除外し(ステップS192)、選択対象除外領域52の中に位置する目的地点Pmを選択候補から除外する(ステップS194)。
【0163】
次いで、処理部200は目的地点設定データ522を参照して、選択候補とされる目的地点Pmそれぞれについてキャラクタ属性別重み付け係数を読み出し(ステップS196)、重み付け係数補正領域50の内に位置する目的地点Pmのキャラクタ属性別重み付け係数を補正する(ステップS198)。
【0164】
次いで、選択候補の目的地点Pm毎に分布重み付け係数を算出し(ステップS200)、キャラクタ属性別重み付け係数と分布重み付け係数との和を算出する(ステップS202)。そして、算出された重み付け係数の和が最大となる選択候補とされる目的地点Pmの識別情報を暫定ルートデータ540の終点ノード540bに格納して、当該目的地点Pmを終点Peに設定し(ステップS204)、終点設定処理を終了する。
【0165】
終点設定処理を終了したならば、図31のフローチャートに戻る。そして、暫定ルート26を決定して(ステップS90)、ルート短縮処理を実行して(ステップS92〜S106)、移動ルート探索処理Eを終了する。
【0166】
よって、本実施形態によれば、敵NPCを所定の思考ルーチンに則った自動制御、所謂AI制御で制御する場合であっても、他の敵NPCの分布状況に応じて移動の終点Peを自動選択し、プレーヤキャラクタにより分散しながら接近して行く戦闘行動をとらせることができる。これは、訓練された兵士ならば取るべき行動内容であり、ガンシューティングゲームに登場する敵NPCをより本物らしく振る舞わせる事ができる。
【0167】
また、敵NPCにキャラクタ属性を設定するとともに、各目的地点Pmにキャラクタ属性に対応する重み付け係数を設定し、終点Peの選択過程において同係数をもとに優先的な選択処理を行うことで、キャラクタの属性に応じて適当な終点Peを自動選択することができる。例えば、キャラクタ属性を戦闘タイプで型分けする場合には、各敵NPCの装備や特性の観点からより効果的で攻撃的な移動ルートを辿るように移動制御することができる。よって、より一層、敵NPCの戦闘行動をより本物らしく見せることができる。
【0168】
これに関連して更に、プレーヤキャラクタ或いはそれを代表する点(例えば、本実施形態における仮想カメラCMの代表点)と、目的地点Pmとの相対位置関係に応じて重み付け係数を補正することができる。よって、より正確に敵NPCにとっての攻撃対象に向けて近づく移動ルートを選択できる。
【0169】
また、目的地点Pmの選択過程においては、仮想カメラCMの撮影範囲を複数の領域に分割し、領域毎の処理対象とされる敵NPC以外のその他の敵NPCの分布数に基づいて、各領域内の選択候補の目的地点Pmに分布重み付け係数を設定し、他の敵NPCの分布度合の低い領域内の目的地点Pmがより選択されやすくすることができる。よって、仮想カメラCMで撮影される撮影範囲内で、敵NPCの分布が偏らないようにすることができる。これは、見かけ上訓練された兵士ならば攻撃対象を取り囲むように適当に分散しながら攻めてくる行動形態を模擬することとなり、ゲームのリアリティを高める効果を生む。
【0170】
〔変形例〕
以上、本発明を適用した第1〜第5実施形態について説明したが、本発明の適用形態はこれらに限定されるものではなく適宜構成要素の追加・省略・変更を施すことができる。
【0171】
例えば、上記実施形態ではガンシューティングゲームを実行するケースを例に挙げたが、NPCが登場するゲームであれば、RPGや戦略シミュレーションゲームなどその他のジャンルのゲームにも同様に適用できる。
【0172】
また。ハードウェアは業務用のガンシューティングゲーム装置1100に限らず、家庭用ゲーム装置や携帯型ゲーム装置などを用いることができる。
例えば、図33に示すように、家庭用ゲーム装置1200は、ゲーム装置本体1201と、ゲームコントローラ1230と、ビデオモニタ1220とを備える。ゲーム装置本体1201は、例えばCPUや画像処理用LSI、ICメモリ等が実装された制御ユニット1210と、光学ディスク1202やメモリカード1204といった情報記憶媒体の読み取り装置1206,1208とを備える。そして、家庭用ゲーム装置1200は、光学ディスク1202やメモリカード1204からゲームプログラム及び各種設定データを読み出し、ゲームコントローラ1230に為される操作入力に基づいて制御ユニット1210が各種のゲーム演算を実行する。
【0173】
制御ユニット1210は、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)及びDSP(Digital Signal Processor)などの各種マイクロプロセッサ、ASIC(Application Specific Integrated Circuit)、ICメモリなどの電気電子機器を備え家庭用ゲーム装置1200の各部を制御する。また、制御ユニット1210は、インターネットやLAN(Local Area Network)、WAN(Wide Area Network)と言った通信回線1と接続して外部装置との間でデータ通信を実現する通信装置1212を備える。
【0174】
ゲームコントローラ1230は、選択の決定やキャンセル、タイミングの入力などに用いられるプッシュボタン1232と、図で言うところの上下左右の各方向を単独入力するための方向入力キー1234と、右アナログレバー1236Rと、左アナログレバー1236Lとを備える。ガンシューティングゲームを実行する場合では、プッシュボタン1232でプレーヤキャラクタによる射撃のトリガー操作、使用武器の切換などの操作を入力し、左アナログレバー1236Lの照準6の位置を上下左右に移動させることができる。
【0175】
制御ユニット1210は、ゲームコントローラ1230から受信した検出信号や操作入力信号に基づいてゲーム画像やゲーム音を生成する。そして、生成されたゲーム画像やゲーム音は、信号ケーブル1209で接続されたビデオモニタ1220(ディスプレイモニタ)に出力される。ビデオモニタ1220には、画像を表示するディスプレイ1222と音声を放音するスピーカ1224とが備えられており、プレーヤはディスプレイ1222に映し出されるゲーム画像を見ながら、スピーカ1224から放音されるゲーム音を聞きつつゲームをプレイすることができる。
【図面の簡単な説明】
【0176】
【図1】ガンシューティングゲーム装置の構成例を説明するための外観図。
【図2】ゲーム画面の例を示す図。
【図3】プレーヤキャラクタと仮想カメラの相対位置関係を示す図。
【図4】敵NPCのスクリプトによる移動制御の例を示す概念図。
【図5】敵NPCの移動ルート探索の原理を説明するための図。
【図6】敵NPCの移動ルート探索の原理を説明するための図。
【図7】移動ルートの再検索が実行される第1のケースを示す図。
【図8】移動ルートの再検索が実行される第2のケースを示す図。
【図9】第1実施形態における機能構成の一例を示す機能ブロック図。
【図10】スクリプトデータのデータ構成例を示す図。
【図11】暫定ルートデータのデータ構成例を示す図。
【図12】確定ルートデータのデータ構成例を示す図。
【図13】主たる処理の流れを説明するためのフローチャート。
【図14】第1実施形態における移動ルート探索処理の流れを説明するためのフローチャート。
【図15】移動制御処理の流れを説明するためのフローチャート。
【図16】迂回ルート探索処理の流れを説明するためのフローチャート。
【図17】第2実施形態における移動ルート探索の原理を説明するための図。
【図18】第2実施形態における移動ルート探索処理(移動ルート探索処理B)の流れを説明するためのフローチャート。
【図19】第3実施形態におけるスクリプトデータのデータ構成例を示す図。
【図20】第3実施形態における終点選択の原理を説明するための図。
【図21】第3実施形態における移動ルート探索処理(移動ルート探索処理C)の流れを説明するためのフローチャート。
【図22】第4実施形態における確定ルート探索の原理を説明するための図。
【図23】第4実施形態における移動ルート探索処理(移動ルート探索処理D)の流れを説明するためのフローチャート。
【図24】第5実施形態における移動ルート探索の第1の特徴を説明するための図。
【図25】第5実施形態における移動ルート探索の第2の特徴を説明するための図。
【図26】第5実施形態における移動ルート探索の第3の特徴を説明するための図。
【図27】第5実施形態における移動ルート探索の第4の特徴を説明するための図。
【図28】第5実施形態における機能構成の一例を示す機能ブロック図。
【図29】目的地点設定データのデータ構成例を示す図。
【図30】第5実施形態におけるスクリプトデータのデータ構成例を示す図。
【図31】第5実施形態における移動ルート探索処理(移動ルート探索処理E)の流れを説明するためのフローチャート。
【図32】終点設定処理の流れを説明するためのフローチャート。
【図33】家庭用ゲーム装置の構成例を示す図。
【符号の説明】
【0177】
2 プレーヤキャラクタ
4 敵NPC
5 他の敵NPC
6 照準
20 障害物
22 探索領域
24 移動不可能領域
26 暫定ルート
28 確定ルート
30、32 他の敵NPC
36 友軍探索範囲
40 エリア
50 重み付け係数補正領域
52 選択対象除外領域
54a,54b,54c 分割撮影領域
100 操作入力部
200 処理部
210 ゲーム演算部
212 照準位置判定部
214 プレーヤキャラクタ動作制御部
216 NPC動作制御部
218 移動ルート探索部
500 記憶部
504 ゲームプログラム
506 NPC制御プログラム
510 ゲーム空間設定データ
512 マップデータ
514 床面メッシュデータ
516 障害物配置データ
522 目的地点設定データ
522a ノードID
522b キャラクタ属性別重み付け係数
526 スクリプトデータ
528 着弾履歴データ
530 NPCステータスデータ
540 暫定ルートデータ
540a 始点ノード
540b 終点ノード
542 確定ルートデータ
544 探索領域データ
544b ノードID
544d 移動不可能領域フラグ
546 検索開始ノード
548 検索先ノード
1100 ガンシューティングゲーム装置
1122 画像表示装置
1130 ガン型コントローラ
1150 制御ユニット
1152 フラッシュメモリ
Ps 始点
Pe 終点
Pm 目的地点
Lx(xは添字) 検索直線

【特許請求の範囲】
【請求項1】
コンピュータに、三次元仮想空間内でNPCを動作制御させるとともに、前記三次元仮想空間を仮想カメラで撮影した画像を生成させるためのプログラムであって、
前記三次元仮想空間に前記NPCの移動ルートの経由候補点を複数箇所設定する経由候補点設定手段、
前記複数の経由候補点の中から経由候補点を選択して順次結んでいくことで前記NPCの暫定移動ルートを設定する暫定移動ルート設定手段、
前記暫定移動ルートに含まれる経由候補点のうち、経由しないこととしてルートを再構成した場合にも前記三次元仮想空間に設けられた移動不可能領域を通過しないルートとなる経由候補点の経由を止めてルートを再構成することで確定移動ルートを設定する確定移動ルート設定手段、
前記確定移動ルートに基づいて前記NPCを移動制御するNPC移動制御手段、
として前記コンピュータを機能させるためのプログラム。
【請求項2】
前記確定移動ルート設定手段が、前記暫定移動ルートに含まれる経由候補点のうち、経由しないこととしてルートを再構成した場合に、1)前記三次元仮想空間に設けられた移動不可能領域を通過しないルートとなる経由候補点であり、且つ、2)1)の経由候補点を経由しない場合のルートが経由する場合のルートに比べて短くなる場合に、1)の経由候補点の経由を止めてルートを再構成することで前記確定移動ルートを設定するように前記コンピュータを機能させるための請求項1に記載のプログラム。
【請求項3】
前記経由候補点設定手段が、前記三次元仮想空間に網目状に前記経由候補点を設定し、
前記暫定移動ルート設定手段が、隣接する経由候補点を順次結んでいくことで前記暫定移動ルートを設定する、
ように前記コンピュータを機能させるための請求項1又は2に記載のプログラム。
【請求項4】
前記確定移動ルート設定手段が、前記暫定移動ルートに含まれる経由候補点のうち、経由候補点同士を結び、移動不可能領域を通過しない最長の直線を前記暫定移動ルートの順方向又は逆方向に順次検索していくことで前記確定移動ルートを設定するように前記コンピュータを機能させるための請求項1〜3の何れか一項に記載のプログラム。
【請求項5】
前記三次元仮想空間を複数のエリアに分割設定するエリア設定手段として前記コンピュータを機能させ、
前記確定移動ルート設定手段が、前記エリア設定手段により設定されたエリア毎に当該エリア内で前記移動不可能領域を通過しない最長の直線を検索するように前記コンピュータを機能させる、
ための請求項4に記載のプログラム。
【請求項6】
前記三次元仮想空間のオブジェクトの配置構成を変更するイベントを制御するイベント制御手段、
前記イベントの発生を条件にして、前記暫定移動ルート設定手段による暫定移動ルートの設定と、前記確定移動ルート設定手段による確定移動ルートの設定とを、再機能させるルート再設定制御手段、
として前記コンピュータを機能させるための請求項1〜5の何れか一項に記載のプログラム。
【請求項7】
前記暫定移動ルート設定手段による暫定移動ルートの設定と、前記確定移動ルート設定手段による確定移動ルートの設定とを、間欠的に再機能させるルート再設定制御手段として前記コンピュータを機能させるための請求項1〜5の何れか一項に記載のプログラム。
【請求項8】
予め用意された複数の目的地候補の中から1つの目的地候補を目的地として選択する目的地選択手段として前記コンピュータを機能させるとともに、
前記暫定移動ルート設定手段が、前記目的地選択手段によって選択された目的地に向かう前記暫定移動ルートを設定するように前記コンピュータを機能させるための請求項1〜7の何れか一項に記載のプログラム。
【請求項9】
前記暫定移動ルート設定手段が複数のNPCそれぞれについて暫定移動ルートを設定し、
前記確定移動ルート設定手段が複数のNPCそれぞれについて確定移動ルートを設定し、
前記目的地選択手段が、前記複数の目的地候補それぞれの周囲に存在するNPCの数に基づいて、目的地を選択する、
ように前記コンピュータを機能させるための請求項8に記載のプログラム。
【請求項10】
前記暫定移動ルート設定手段が複数のNPCそれぞれについて暫定移動ルートを設定し、
前記確定移動ルート設定手段が複数のNPCそれぞれについて確定移動ルートを設定し、
前記目的地選択手段が、前記仮想カメラの撮影範囲を分割した分割撮影範囲それぞれに位置するNPCの数、或いは、当該分割撮影範囲内の目的地候補に向けた移動制御中のNPCの数に基づいて、目的地を選択する、
ように前記コンピュータを機能させるための請求項8に記載のプログラム。
【請求項11】
前記目的地候補それぞれには、NPCに予め設定されている属性に応じた相性が設定されており、
前記目的地選択手段が、目的地設定対象のNPCの属性に対応する前記目的地候補それぞれの前記相性に基づいて目的地を選択するように前記コンピュータを機能させるための請求項8〜10の何れか一項に記載のプログラム。
【請求項12】
請求項1〜11の何れか一項に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
【請求項13】
三次元仮想空間内でプレーヤキャラクタとNPCを動作制御して、前記三次元仮想空間を仮想カメラで撮影した画像を生成して所定のゲームを実行するゲーム装置であって、
前記三次元仮想空間に前記NPCの移動ルートの経由候補点を複数箇所設定する経由候補点設定手段と、
前記複数の経由候補点の中から経由候補点を選択して順次結んでいくことで前記NPCの暫定移動ルートを設定する暫定移動ルート設定手段と、
前記暫定移動ルートに含まれる経由候補点のうち、経由しないこととしてルートを再構成した場合にも前記三次元仮想空間に設けられた移動不可能領域を通過しないルートとなる経由候補点の経由を止めてルートを再構成することで確定移動ルートを設定する確定移動ルート設定手段と、
前記確定移動ルートに基づいて前記NPCを移動制御するNPC移動制御手段と、
を備えたゲーム装置。

【図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

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate