JP4176455B2 - プログラム、情報記憶媒体及び画像生成装置 - Google Patents
プログラム、情報記憶媒体及び画像生成装置 Download PDFInfo
- Publication number
- JP4176455B2 JP4176455B2 JP2002345872A JP2002345872A JP4176455B2 JP 4176455 B2 JP4176455 B2 JP 4176455B2 JP 2002345872 A JP2002345872 A JP 2002345872A JP 2002345872 A JP2002345872 A JP 2002345872A JP 4176455 B2 JP4176455 B2 JP 4176455B2
- Authority
- JP
- Japan
- Prior art keywords
- individual
- area
- vector
- grid
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
- A63F2300/6623—Methods for processing data by generating or executing the game program for rendering three dimensional images for animating a group of characters
Landscapes
- Processing Or Creating Images (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータに、仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成させるためのプログラム等に関する。
【0002】
【従来の技術】
ゲーム等のコンピュータグラフィックス(CG)において、昆虫や鳥、兵隊などのように複数の個体が集まってなる「群」の様子を表現する技術を群制御という。
【0003】
群制御では、群を構成する各個体間で干渉が起きないように各個体を移動制御することが重要である。例えば、一の個体を移動制御する場合、他の個体と干渉するか否かを判定し、干渉すると判定される場合には当該他の個体を回避する方向に移動させる。これを干渉処理と言う。
しかし、群には多数の個体が存在し、一の個体の移動制御をする際に、全ての他の個体(他個体)を対象として一つ一つ干渉処理を実行することは、処理負荷が指数関数的に増大するために非現実的である。その為、従来、干渉処理にかかる処理負荷を軽減するために様々な工夫がされている。
【0004】
例えば、所定の有視界レンジに位置する他の個体とのみ干渉処理を実行するものが有る。より具体的には、移動制御の対象となっている個体を中心に近距離・中距離・遠距離の有視野レンジを設定する。そして、近距離の有視野レンジに仲間(同群の他個体)がいる場合には衝突回避のための反発力を設定し、この反発力を重量(個体の設定重量値)で除して第1の加速度を算出する。中距離の有視野レンジに仲間がいる場合には、仲間と同じ方向に移動するために仲間の加速度の平均値を第2の加速度とする。遠距離の有視野レンジに仲間がいる場合は、見通しを確保する為に仲間から離れるための反発力を設定し、反発力を重量で除して第3の加速度とする。そして、目標点に向かう加速度と第1〜第3の加速度とを、3次元仮想空間上のX,Y,Z成分毎に加算して総和平均値を算出する。この総和平均に基づいて当該個体の位置座標を演算する。このように、干渉処理の対象を特定の有視界レンジに位置する他の個体に限定することによって、干渉処理に掛かる処理負荷を軽減している(例えば、特許文献1参照;全請求項に対応)。
【0005】
また、3次元仮想空間における干渉処理を2次元座標上におきかえて実行することによって処理負荷を軽減するものも有る。より具体的には、移動制御対象となっている個体の進行方向を3次元座標空間のZ軸方向とするXY平面上に、当該個体と他の個体とを平行投影する。そして、このXY平面に投影された仮想空間中の実際の大きさで個体と他の個体との干渉処理を実行し、他個体と干渉しないように個体の移動経路を決定する(例えば、特許文献2;請求項10〜請求項14に対応)。
【0006】
【特許文献1】
特許第3163496号公報
【特許文献2】
特許第3005246号公報
【0007】
【発明が解決しようとする課題】
しかしながら、有視界レンジで干渉処理の対象となる他の個体を特定する場合でも、特定の有視界レンジ(前述の場合近距離有視界レンジ)に何れの他個体が含まれるかを、やはり全ての他個体について判定する必要があり処理負荷の削減には限界があった。また、XY平面に投影する場合であっても、全ての他個体を投影する必要があるために同様に処理負荷の削減に限界がある。
【0008】
本発明は上記課題を鑑みてなされたものであり、その目的とするところは、群制御における干渉処理に掛かる処理負荷を軽減し、群制御を高速化することである。
【0009】
【課題を解決するための手段】
上記課題を解決するための第1の発明は、コンピュータに類する装置に、仮想空間(ゲーム空間)内に配置された複数の個体(例えば、図8のネズミオブジェクトM1〜M10)で構成される群(例えば、図8の群Fa)について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成させるための制御情報であって、
前記仮想空間を複数のエリア(例えば、図8のグリッドG1〜G9)に分割するエリア分割手段(例えば、図12のゲーム演算部22、グリッド管理部223、記憶部70、図15のグリッド管理情報737)、前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段(例えば、図12のグリッド管理部223、記憶部70、図15のグリッド管理情報737)、前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアに基づいて、前記複数のエリアの中から特定エリアを選択する選択手段(例えば、図12のゲーム演算部22、図17のステップS220〜S226)、前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段(例えば、図12のゲーム演算部22、ベクトル演算部221、図17のステップS228〜S232、図18のS242〜S258)として前記装置を機能させるための情報を含む制御情報である。
【0010】
また、他の発明として、仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成する画像生成装置であって、前記仮想空間を複数のエリアに分割するエリア分割手段と、前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段と、前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアに基づいて、前記複数のエリアの中から特定エリアを選択する選択手段と、前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段とを備えた画像生成装置を構成してもよい。
【0011】
ここで言う「エリア」とは、仮想空間中を限定する範囲であって、個体の移動特性に応じて適宜設定される。例えば、個体が主に地表面上を移動する動物などの設定である場合には、エリアは仮想空間を2次元的に分割する構成とする。そして、その形状は例えば格子状やハニカム(六角形)形状、地表形状に則した多角形などとしても良い。また、個体が空中や水中などを3次元的に移動する鳥や魚・昆虫などの設定である場合には、仮想空間を3次元的に分割する構成とし、その形状は例えば立方体や多面立体などであっても良い。
【0012】
干渉処理とは、移動制御処理の対象となっている一の個体に近接する他の個体を選択し、個体間の干渉を回避するように個体を移動させる処理である。より具体的には、例えば一の個体に対して他の個体が所定距離以内に近接する場合には、干渉を回避するために当該一の個体を他の個体より離れるように移動制御する事である。
【0013】
第1の発明等によれば、仮想空間を複数のエリアに分割し、群を構成する各個体を何れかのエリアに対応付けることによって、多数の個体を常にエリアを単位とした幾つかのグループとして把握できる状態にできる。これにより、一の個体が位置するエリアを判定し、判定されたエリアと所定の位置関係に有る他のエリアを特定エリアとして選択することによって、干渉処理を行う他の個体数を容易に絞り込むことができる。例えば、一の個体が位置するエリアの周囲に隣接する他のエリアを特定エリアとするならば、当該個体より離れた遠方の他の個体を干渉処理の対象外とし、周囲の比較的近距離に位置する他の個体のみを即座に選択することができることになる。
【0014】
この過程には、全ての他の個体を対象に一の個体との距離を算出して一の個体に影響を与え得る距離の他の個体を選択するといった手間の掛かる処理が無い。従って、一の個体の移動制御に掛かる処理負荷、特に当該一の個体の行動に影響を及ぼす他の個体を選択する処理に掛かる負荷を軽減し、個体の移動制御処理を高速化することができる。
【0015】
尚、エリアの大きさは個体の大きさに応じて適宜設定可能であるが、群全体が1つのエリアに含まれるようでは群を構成する個体がグループ分けされなくなり、他の個体を選択する処理負荷を低減できなくなる。群を構成する個体が複数のエリアに分かれ、比較的小数の個体が1つのグループとなり得る程度に、個体の大きさや個体間の適当とされる距離、群の規模などに応じてエリアの大きさを適宜設定する。
また、ここで言う「制御情報」とは、ゲーム装置等の電子計算機(コンピュータ)による群制御処理の用に供する、プログラムに準じた情報の意である。
【0016】
特定エリアの選択について、第2の発明として、第1の発明の制御情報であって、前記選択手段が、前記一の個体が位置するエリア、及び当該一の個体の進行方向(例えば、図24、図25の合成ベクトルVa’)に基づいて、特定エリアを選択するための情報を含む制御情報を構成することとしても良い。
【0017】
例えば、個体が動物など一定の視界を有するものに設定されている場合、一の個体の視界に入り得る他の個体のみを干渉処理の対象とするべきである。
【0018】
第2の発明によれば、当該一の個体の進行方向に基づいて、特定エリアを選択することができる。例えば、進行方向およびその左右のエリアを特定エリアとして選択し、反対に視界に入らない進行方向の逆向きのエリアを特定エリアに含めないことができる。これによって、個体の視界に入る他の個体を干渉処理の対象に選択し、視界に入らない他の個体を対象外とすることができる。
また、特定エリアをさらに限定することができるため、干渉処理の対象となる他の個体の数を削減し、処理負荷をより軽減することができる。
【0019】
また特定エリアの選択について、第3の発明として、第1又は第2の発明の制御情報であって、前記選択手段が、前記一の個体が位置するエリア内の位置に基づいて特定エリアを選択するための情報を含む制御情報を構成することとしても良い。
【0020】
第3の発明によれば、個体のエリア内における位置に基づいて特定エリアを選択できる。
例えば、一の個体がエリアの右端に位置する場合には次のような処理を実現できる。即ち、個体が位置するエリアの右に隣接するエリアを特定エリアに含め、左に隣接するエリアを特定エリアに含めないことができる。これにより、右に隣接するエリアに位置する他の個体は干渉処理の対象となり、左に隣接するエリアに位置する他の個体は干渉処理の対象とはならない。左に位置するエリアに位置する他の個体は、一の個体から遠く離れており干渉処理の対象として不適切だからである。この場合、第3の発明によれば特定エリアをより適切に選択し、干渉処理の対象となる他の個体の数を削減して処理負荷を軽減できる。
【0021】
また、個体のエリア内の位置に基づいて特定エリアを選択する場合の第4の発明として、第3の発明の制御情報であって、前記一の個体が位置するエリアを更に複数のサブエリア(例えば、図8のサブグリッドH)に分割するサブエリア分割手段(例えば、図12のゲーム演算部22)として前記装置を機能させるための情報と、前記選択手段が、前記一の個体が位置するエリアに代えて、当該一の個体が位置するサブエリアに基づいて、特定エリアを選択するための情報とを含む制御情報を構成することとしても良い。
【0022】
第4の発明によれば、エリア内に更に小範囲のサブエリアを設定することによって、個体のエリア内の位置をサブエリア単位で扱うことができる。
従って、一の個体が位置するサブエリアと選択する特定エリアとの関係を予め設定することによって、移動制御対象の一の個体が何れのサブエリアに位置するかを判定するだけで簡単に特定エリアを選択し、干渉処理の対象とする他の個体を速やかに選択できる。
【0023】
また更に、第5の発明として、第4の発明の制御情報であって、前記選択手段が、特定エリアとして、前記一の個体が位置するサブエリアを含むエリアを選択する場合には、当該エリアに含まれるサブエリアの中から特定サブエリアを選択するための情報と、前記個体移動制御手段が、前記一の個体と、前記特定サブエリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御するための情報と、を含む制御情報を構成することとしても良い。
【0024】
第5の発明によれば、前記一の個体が位置するサブエリアを含むエリアの中から特定サブエリアを選択し、この特定サブエリアに位置する他の個体を干渉処理の対象とすることにより、一の個体と同じエリアに他の個体が複数有る場合でも、速やかに干渉処理の対象とする他の個体を選択できる。
【0025】
また、同様にエリア内にサブエリアを設ける構成とし、第6の発明として、第1の発明の制御情報であって、前記一の個体が位置するエリアを、内側サブエリアと外側サブエリアとの少なくとも2つのサブエリアに分割するサブエリア分割手段(例えば、図12のゲーム演算部22、グリッド管理部223、グリッド管理情報737)として前記装置を機能させるための情報と、前記選択手段が、前記一の個体が位置するサブエリアが内側サブエリアの場合には、当該一の個体が位置するエリアを特定エリアとするための情報とを含む制御情報を構成することとしてもよい。
【0026】
外側サブエリアとは、エリアの境界に沿ってその内周に沿って設けられる範囲であり、内側サブエリアは外周を外側サブエリアによって囲まれる範囲であってエリアのほぼ中央に設けられる。
【0027】
第6の発明によれば、一の個体が内側サブエリアに位置する場合には、同一のエリアに位置する他の個体を対象とする。これによって、干渉処理の対象となる他の個体を選択する処理をより簡単なものにして高速化を図ることができる。
【0028】
更に、第7の発明として、第6の発明の制御情報であって、前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアであり、尚かつ当該一の個体の進行方向が当該一の個体が位置するエリアの内方に向かう方向の場合には、当該一の個体が位置するエリアを特定エリアとするための情報を含む制御情報を構成することとしても良い。
【0029】
この場合、移動制御の対象となっている一の個体は、外側サブエリアに位置するが、進行方向が当該エリアの内方に向かっているので、当該一の個体が位置するエリアを特定エリアとする。これによって、当該エリアに隣接する他のエリアに位置する他の個体の影響は受けないものとすることができる。従って、干渉処理の対象となる他の個体を選択する処理をより簡単なものにして高速化を図ることができる。
【0030】
また、第8の発明として、第6の発明の制御情報であって、前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアの場合には、当該一の個体が位置するエリアに隣接するエリアを特定エリアとするための情報を含む制御情報を構成することとしても良い。
【0031】
また、第9の発明として、第6の発明の制御情報であって、前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアであり、尚かつ当該一の個体の進行方向が当該一の個体が位置するエリアの外方に向かう方向の場合には、当該一の個体が位置するエリアに隣接するエリアを特定エリアとするための情報を含む制御情報を構成することとしても良い。
【0032】
第8又は第9の発明によれば、当該一の個体はエリアの外側に位置するので、隣接するエリアに位置する他の個体との衝突や干渉を回避する必要があると判断し、当該一の個体が位置するエリアに隣接するエリアを特定エリアとする。このため、他の個体を選択する処理をより簡単なものにして高速化を図ることができる。
【0033】
また、第10の発明として、第1〜第9の何れかの発明の制御情報であって、前記仮想空間は、所定の地平面の地平面座標系(例えば図7のXZ座標系)と、前記地平面に対する高さを表す高さ情報とに基づく空間座標系(例えば図7のXYZ座標系)により、前記仮想空間内の任意の位置を定義することができる空間であり、前記各個体は前記仮想空間内の地表上(例えば、図7の地表面B)を移動し、前記エリア分割手段が、前記地平面座標系に基づいて前記仮想空間を分割するための情報と、前記個体移動制御手段が、前記地平面座標系に基づき前記干渉処理を行うための情報と、を含む制御情報を構成することとしてもよい。
【0034】
地平面座標系は、2次元の成分で位置を定義できる2次元平面座標系であり、仮想空間は地平面からの高さ情報を加えた3次元の成分で位置を定義できる3次元座標系である。
第10の発明によれば、エリアは地平面座標系に基づいて2次元的に分割・設定され、干渉処理は地平面座標系に基づいて2次元的に実行される。干渉処理によって、個体は地平面座標系で2次元的に干渉しないように制御される。個体は地表面を移動する設定なので、地平面座標系で個体間の干渉が起きないように制御できれば、地表面の高さ情報を与えることによって3次元的にも干渉が起きない状態にできる。従って、個体のエリアへの対応づけや干渉処理を地平面座標系の2次元成分で演算することによって、処理負荷を更に軽減できる。
【0035】
また、第11の発明として、第10の発明の制御情報であって、前記地平面に2次元格子を配設するとともに、配設した2次元格子と、前記2次元格子を構成する各格子点の高さ情報とに基づいて前記各格子点の位置座標を決定し、各格子点の位置座標に基づくプリミティブ面(例えば、図7のポリゴン面P)を形成することによって、前記仮想空間内に地表を形成する地表形成手段(例えば、図12のゲーム演算部22、図16のステップS102)として前記装置を機能させるための情報と、前記エリア分割手段が、前記2次元格子に沿って前記仮想空間を分割するための情報と、前記個体移動制御手段が、前記一の個体が位置するエリアの地表を形成するプリミティブ面に基づいて当該一の個体の高さ情報を演算するための情報とを含む制御情報を構成することとしても良い。
【0036】
第11の発明によれば、更に個体が移動する地表面は、地平面座標系の位置座標と地平面からの高さ情報とによって定義される格子点によって形成されるプリミティブ面から形成され、個体の高さ情報は地表を形成するプリミティブ面の高さ情報から求められる。エリアはプリミティプ面の格子点に沿って分割されるので、個体の位置するプリミティブ面は当該個体が対応するエリアに対応するプリミティブ面の中に含まれることになる。
従って、個体が位置するプリミティブ面を限定された中から検索すれば良く、個体の高さ情報の算出にかかる処理負荷を軽減することができる。
【0037】
そして更に、第12の発明として、第11の発明の制御情報であって、前記個体移動制御手段が、前記一の個体が位置するエリアの地表を形成するプリミティブ面の法線(例えば、図11の法線ベクトルVN)を演算し、演算した法線の前記地平面座標系成分(例えば、図11のベクトルVw−2)に基づいて前記一の個体の移動制御補正を行うための情報を含む制御情報を構成することとすれば、簡単に地表の傾斜などの地形条件に基づく個体の移動制御を実施することができる。
【0038】
また、更なる処理の高速化のために、第13の発明として、第1〜第12のいずれかの発明の制御情報であって、前記画像を生成する基準となる視点を設定する視点設定手段(例えば、図12のゲーム演算部22、図16のステップS102)として前記装置を機能させるための情報と、前記個体移動制御手段が、前記一の個体と前記視点間の距離に応じて前記干渉処理を実行するか否か判定するための情報と、を含む制御情報を構成することとしても良い。
【0039】
移動制御の対象となっている一の個体が、視点より遠く離れた場合には、画面に表示される個体のサイズが小さくなって、見た目の識別がつきにくくなり干渉処理の効果の有無を見分けることも難しくなる。
第13の発明によれば、一の個体と視点との距離に応じて干渉処理を適宜省略することによって、処理をより高速化させることができる。尚、干渉処理を実行するか否かの判定における基準は群を構成する個体の大きさや、視点の画角などの条件に応じて適宜設定する。
【0040】
また、第14の発明として、第1〜第13のいずれかの発明の制御情報を記憶した前記装置による読み取り可能な情報記憶媒体を構成することとしてもよい。
【0041】
第14の発明によれば、記憶されている制御情報を前記装置に読み取らせて演算処理させることによって、前記装置に第1〜第13の発明と同様の効果を実現させることができる。
【0042】
【発明の実施の形態】
〔第1の実施の形態〕
以下、図1〜図25を参照して、本発明を適用した第1の実施の形態について説明する。第1の実施の形態では、プレーヤがネズミの群を移動操作するゲームを例に挙げて説明する。
尚、群を構成する個体はネズミに限るものではなく適宜設定して構わない。例えば、シミュレーションゲームに登場する騎馬隊や戦車隊に適用し、プレーヤが指揮官となって戦う設定としても良い。また、群を操作するのはプレーヤに限らず、コンピュータが自動制御する設定としても良いのは勿論である。
【0043】
[構成の説明]
図1は、本発明を適用した業務用ゲーム装置1300の外観の一例を示す図である。同図に示すように、業務用ゲーム装置1300は、ゲーム画面を画像表示するディスプレイ1302と、ゲームの効果音やBGMを出力するスピーカ1304と、前後左右方向を入力するジョイスティック1306と、プッシュボタン1308と、演算処理によって業務用ゲーム装置1300を統合的に制御して所与のゲームを実行する制御ユニット1320とを備える。
【0044】
制御ユニット1320は、例えばCPUやMPU、各種ICメモリ、ASICなどによって実現され、ベクトル演算ユニット1324を搭載する。ベクトル演算ユニット1324とは、ベクトル演算処理用に機能を特化したマイクロプロセッサ等の意味である。
【0045】
また、制御ユニット1320には、業務用ゲーム装置1300の制御及びゲームの実行に必要なプログラムやデータが格納されたROM1322を搭載する。制御ユニット1320に搭載されるCPUやベクトル演算ユニット1324などは、ROM1322よりプログラムやデータを適宜読み出して演算処理することによって種々の処理を実行する。
【0046】
プレーヤは、ディスプレイ1302に表示されたゲーム画面を見ながらジョイスティック1306で群の移動方向を入力し、プッシュボタン1308で各種コマンドを入力して群を制御してゲームを楽しむ。
【0047】
[ゲーム内容の概要説明]
図2は、本実施の形態におけるゲーム内容の概要を説明するための図である。同図に示すように、ゲーム空間には複数のネズミオブジェクトM(一つのネズミオブジェクトを指す場合にはネズミオブジェクトMn(nは自然数)とする)と、ネズミを捕食する複数のネコオブジェクトC(一つのネコオブジェクトを指す場合にはネコオブジェクトCl(lは自然数)とする)とが配置される。
ネズミオブジェクトMは群Faを形成し、群Faには共通の移動目標である仮想ターゲットTaが設定される。各ネズミオブジェクトMは、仮想ターゲットTaに向かうようにそれぞれ個別に移動制御され、その結果として群Fa全体が移動しているように制御される。
【0048】
本実施の形態では、仮想ターゲットTaをプレーヤがジョイスティック1306で操作して群Faの移動方向を決定する。プレーヤは、自分が操作する群のネズミオブジェクトMがネコオブジェクトCに捕食されないように操作しながら群Faを所定の目的地(ゴール地点)に導く。そして、群Faを無事に目的地に到着させることができたならばゲーム終了となる。尚、説明の便宜上、仮想ターゲットTaを可視状態(旗状のオブジェクト)として説明するが、不可視としても構わない。
【0049】
[ネズミオブジェクトの移動制御の原理]
図3は、本実施の形態におけるネズミオブジェクトMの移動制御の原理を説明するための図である。同図に示すように、群Faを構成する一のネズミオブジェクトMnは、仮想ターゲットTaと、同群に属する他のネズミオブジェクトMm(mは自然数;m≠n)と、ネコオブジェクトCとを注目対象とする。注目対象とは、設定上ネズミオブジェクトMの行動に影響を与える存在を意味する。
【0050】
ネズミオブジェクトMnの移動制御においては、先ず各注目対象までのベクトルを求める。即ち、(1)ネズミオブジェクトMnから仮想ターゲットTaまでのベクトルVtと、(2)ネコオブジェクトClまでのベクトルVeと、(3)ネズミオブジェクトMnから同群に属する他のネズミオブジェクトMmまでのベクトルVfとを算出する。
【0051】
そして、算出されたベクトルVt、Ve、Vfの方向と大きさとを各注目対象との位置関係に応じて変更し、ベクトルVt’、Ve’、Vf’とする。このベクトルVt、Ve、Vfから求められるベクトルVt’、Ve’、Vf’は、ゲーム設定上のネズミオブジェクトMという種族に共通する各注目対象に対する関心の高さや影響力と同様の意義を有し、求心力や回避力として各ネズミオブジェクトMそれぞれに作用する。
【0052】
ベクトルVt’、Ve’、Vf’を算出したならば、ネズミオブジェクトMnの行動の個性を示すパラメータに基づいて、ベクトルVt’、Ve’、Vf’をそれぞれ係数kt、ke、kfで重み付けして合成ベクトルVaを算出する。
また、本実施の形態においては、合成ベクトルVaの算出時にネズミオブジェクトMnに影響を与えるゲーム空間の環境の力をベクトルVwとして更に合成する。ゲーム空間の環境の力とは、例えば風、水流、床や地面の移動、床や地面の滑り、重力などの地形条件や環境条件に基づく外力を表す。
【0053】
合成ベクトルVaを算出したならば、合成ベクトルVaを更にネズミオブジェクトMのゲーム設定上の上限速度|V|maxを超えないように大きさを適正化し、合成ベクトルVa’とする。ネズミオブジェクトMnは、この合成ベクトルVa’に基づいて次の描画フレームにおける移動先の位置座標が算出されて移動制御される。
【0054】
次に、本実施の形態におけるベクトルVt’、Ve’、Vf’、Vwの具体的な算出方法について説明する。
【0055】
図4は、ベクトルVt’の算出方法の原理を説明する図である。図4(a)に示すように、ベクトルVt’を求める算出方法は、仮想ターゲットTaを中心とする近距離・中距離・遠距離・遠距離圏外(以下、仮想ターゲット基準近距離、仮想ターゲット基準中距離、仮想ターゲット基準遠距離、仮想ターゲット基準遠距離外と言う。)の4つの距離レンジ毎に設定されている。適用する算出方法は、移動制御の対象となっているネズミオブジェクトMnが何れの距離レンジに位置するかによって択一的に選択して決定する。尚、具体的な各距離レンジの大きさ等は適宜設定するものとする。
【0056】
ネズミオブジェクトMnが仮想ターゲット基準近距離に位置する場合(図4(b)の(1))、仮想ターゲットTaに対して近づき過ぎていると判断し、仮想ターゲットTaから離れるようにベクトルVtの方向を変更する。より具体的には、例えば仮想ターゲットTaとの距離、或いはベクトルVtの大きさが所定値以下である場合、ベクトルVtが逆向きに作用するようにマイナスの係数を掛けてベクトルVt’とする。又は所定行列を掛けて方向を反転させるとしても良い。
【0057】
ネズミオブジェクトMnが仮想ターゲット基準中距離に位置する場合、仮想ターゲットTaの状態に応じて更に条件を細分化して算出方法を設定する。
仮想ターゲットTaが停止している場合(図4(b)の(2))、ベクトルVtに比例してベクトルVt’を算出する。ベクトルVt’は、ネズミオブジェクトMnが仮想ターゲットTaに近づくにつれて小さくなり、ネズミオブジェクトMnが停止状態の仮想ターゲットTaに対して徐々に速度を落としつつ接近するように作用する。
【0058】
仮想ターゲットTaが移動している場合は、仮想ターゲットTaの1フレーム前の移動ベクトルVtat-1に比例してベクトルVt’を算出する。ベクトルVt’は、ネズミオブジェクトMnが仮想ターゲットTaと同方向に移動するように作用する。また、仮想ターゲットTaが移動している場合では、群Faの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達しているか否かで更に条件分けする。
【0059】
群Faの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達していない場合は(図4(b)の(4))、ネズミオブジェクトMnが仮想ターゲットTaと並走するように係数k7を適当に設定する。
【0060】
群Faの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達している場合は(図4(b)の(3))、群Faが停止・減速する可能性が有ると判断し、ベクトルVtが大きな値を示していても、ベクトルVt’が小さくなるように係数k6を適当に設定する。この場合、ベクトルVt’はネズミオブジェクトMnが群Faの停止に備えて減速するように作用する。これによって、群Faが停止直前の状態や減速している状態の際に、前方がつかえてネズミオブジェクトMnがそれ以上進めないにもかかわらず、前方のネズミオブジェクトMmを無理に押し、その結果、群Faの形態が崩れる事態を回避できる。
【0061】
尚、群Faの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達している場合に求められるベクトルVt’は、その目的から群Faの先頭のネズミオブジェクトが仮想ターゲット基準中距離の範囲に達していない場合の並走時のベクトルVt’より小さい値となるように係数k6を設定する。
【0062】
ネズミオブジェクトMnが仮想ターゲット基準遠距離に位置する場合は、ベクトルVtに比例してベクトルVt’を算出する(図4(b)の(6))。従って、ベクトルVt’はネズミオブジェクトMnが仮想ターゲットTaから離れているほど大きくなり、ネズミオブジェクトMnが強く仮想ターゲットTaを追走するように作用する。
ただし、群Faの先頭のネズミオブジェクトが停止している場合は(図4(b)の(5))、ネズミオブジェクトMnも停止しなければならないと判断し、ベクトルVt’によって、ネズミオブジェクトMnが大きく減速するように見えるように係数k2を適当に設定する。これによって、ネズミオブジェクトMnが前方を行く同属の他のネズミオブジェクトMmに追突するのを回避しながら、群Fa全体をスムーズに停止させることができる。
【0063】
ネズミオブジェクトMnが仮想ターゲット基準遠距離圏外に位置する場合は、ベクトルVtに比例してベクトルVt’を算出する。(図4(b)の(7))。ベクトルVt’は、ネズミオブジェクトMnが仮想ターゲットTaをより強く追走するように作用する。この際、算出されるベクトルVt’の対ベクトルVt比を他の条件において算出される場合に比べて大きくなるように係数k4を適当に設定すると、仮想ターゲットTaから遠く離れてしまったネズミオブジェクトMnが必死に追い着こうとしてより速く移動するように移動制御できる。
【0064】
この様に、ベクトルVt’はネズミオブジェクトMnが群の一員として群Fa全体の移動方向へ向かう行動原理、求心力として作用する。尚、係数k1=k2=k3=k4とし、処理を簡略化するとしても良い。この場合であっても、ベクトルVtが仮想ターゲットTaとの距離に応じた大きさを有するので、基本的にベクトルVt’も仮想ターゲットTaとの距離に応じた大きさを有することとなり、ベクトルVt’の基本作用としては同様の効果が得られる。
【0065】
図5は、ベクトルVe’の算出方法の原理を説明するための図である。図5(a)に示すように、ベクトルVe’を求める算出方法は、ネズミオブジェクトMnを中心とする近距離・遠距離(以下、対ネコ用近距離、対ネコ用遠距離と言う。)の2つの距離レンジ毎に個別に設定される。適用する算出方法は、ネズミオブジェクトMnとネコオブジェクトClとの距離に応じて択一的に選択する。
【0066】
ネコオブジェクトCが対ネコ用近距離にいる場合(図5(b)の(1))、ベクトルVeの方向を反転させてベクトルVe’とする。ベクトルVe’はネコオブジェクトClから逃げるように作用させる。ネコオブジェクトCが対ネコ用遠距離にいる場合(図5(b)の(2))は、ベクトルVe’の大きさを「0」にする。即ち、まだ敵が十分離れているので危険を感じていないようにする。
このように、ベクトルVe’は敵から逃げる行動原理としての意味を有する。対ネコ用近距離と対ネコ用遠距離の閾値の設定によって、当該ネズミオブジェクトMnの危険察知能力や臆病さを表現することが可能になる。
【0067】
図6は、ベクトルVf’の算出方法の原理を説明するための図である。図6(a)に示すように、ベクトルVf’を求める算出方法は、ネズミオブジェクトMnを中心とする近距離・中距離・遠距離(以下、ネズミ基準近距離、ネズミ基準中距離、ネズミ基準遠距離と言う。)の3つの距離レンジ毎に個別に設定される。適用する算出方法は、同属の他のネズミオブジェクトMmとの距離に応じて択一的に選択され決定される。尚、ベクトルVf’の算出対象とするネズミオブジェクトMmの所定数は、群の規模やゲーム内容等に応じて適宜設定する。
【0068】
ネズミオブジェクトMmがネズミ基準近距離にいる場合(図6(b)の(1))、干渉回避のためにネズミオブジェクトMmから離れる方向にベクトルVfを変更する。より具体的には、ベクトルVfにマイナスの係数を掛けて方向を反転してベクトルVf’とする。これによってベクトルVf’は衝突しそうな程に接近しているネズミオブジェクトMnとネズミオブジェクトMmとを互いに離すように作用する。
【0069】
ネズミオブジェクトMmが、適当な距離と判断されるネズミ基準中距離にいる場合で、且つ群Faの先頭のネズミオブジェクトがネズミ基準中距離(図4(a)参照)にいる場合(図6(b)の(2))、群Faが停止・減速する可能性があると判断し、ベクトルVfに比例してベクトルVf’を算出する。ベクトルVf’は、同属の他のネズミオブジェクトMmに近づくほど小さくなり、ネズミオブジェクトMnが徐々に速度を落としながら近づくように作用する。
【0070】
群Faの先頭のネズミオブジェクトが、ネズミ基準中距離にいない場合は(図6(b)の(3))、近傍に位置するネズミオブジェクトMmの1フレーム前の合成ベクトルVmt-1に基づいて算出する。ベクトルVf’は、ネズミオブジェクトMnが同属の他のネズミオブジェクトMmと同じ方向に移動するように作用する。
【0071】
ネズミオブジェクトMmがネズミ基準遠距離にいる場合(図6(b)の(4))、ベクトルVfの方向はそのままにして、ベクトルVfに比例してベクトルVf’を算出する。ベクトルVf’は、ネズミオブジェクトMnが仲間(同属の他のネズミオブジェクトMm)から離れるに従って大きくなり、群Faからはぐれそうになった場合に、早く仲間に追いつくように移動速度を速めるように作用する。
【0072】
このように、ベクトルVf’は仲間(同属の他のネズミオブジェクトMm)までの距離に応じて、近づき過ぎれば離れる方向に、離れすぎれば近づく方向に作用し、ネズミオブジェクトMが互いに適切な距離を保ち、相互の干渉を回避させる働きをする。尚、ベクトルVf’は、更にネズミオブジェクトMmが他の群に属するか否かを条件に、図6(b)の(5)(6)(7)に示すようにベクトルの方向や大きさを適宜変更するなどしても良い。
【0073】
ここで重要となるのが、ベクトルVf及びVf’を算出する対象とするネズミオブジェクトMmの選択である。
群Faに属する全てのネズミオブジェクトMの中から、ネズミオブジェクトMnとMm間の距離に基づいてソートし、近接順に所定数を選択する方法では、ネズミオブジェクトMの数に比例して指数関数的に処理負荷が多くなってしまう。そこで、本実施の形態では、ネズミオブジェクトMnを、その位置座標に基づいてゲーム空間に設定された複数のグリッドGを単位として登録・管理し、グリッドGを単位として算出対象となるネズミオブジェクトMmを限定し、絞り込む。
【0074】
図7は、本実施の形態におけるグリッドGの配置の一例を説明するための斜視概念図である。図中上部で格子状に区切られた範囲が各グリッドGを示している。
グリッドGは、XZ座標平面を複数のエリア(範囲)に分割するように予め設定される。本実施の形態では、ネズミオブジェクトMの幅の16倍長を有する略正方形とするが、グリッドGの形状はこれに限定されるものではなく、ハニカム型や複数のポリゴン面Pの頂点を結んだ多角形などであっても良く適宜設定して構わない。
【0075】
ネズミオブジェクトMnと地表面Bを構成するポリゴン面Pは、予め設定される代表点(例えば重心など)の位置座標に基づいて、何れかのグリッドGの範囲に位置するかが判定され、後述する図12のグリッド管理情報737によって登録・管理される。図7では、ネズミオブジェクトMから破線で対応づけられた三角形マークを、登録されるグリッドG上に示している。
グリッド管理情報737では、例えばグリッドG毎に登録されている地表面Bのポリゴン面Pの情報や、風などの環境外力を設定するための情報、登録されているネズミオブジェクトMnの識別情報などが格納される。
【0076】
図8は、本実施の形態におけるベクトルVf及びVf’の算出対象となるネズミオブジェクトMmを検索するためのグリッドGの選択方法を説明するための概念図である。同図及び以下の説明においては、移動制御処理の対象をネズミオブジェクトM6としている。
【0077】
グリッドGを選択するためには、先ず、ネズミオブジェクトM6が位置するグリッドG5に複数のサブグリッドH(H1〜H16)を設定し、ネズミオブジェクトM6が何れのサブグリッドHに位置するかを判定する。そして、ネズミオブジェクトM6が何れのサブグリッドHに位置するかによって、予め設定される対応関係に基づいてグリッドGを選択する。
【0078】
図9は、本実施の形態におけるサブグリッドHと選択するグリッドGとの対応関係を示す図である。同図に示すように、ネズミオブジェクトMnがグリッドG5のサブグリッドH1、H2、H5の何れかに位置する場合、グリッドG5に対してこれらのサブグリッドHで隣接するグリッドG1、G2、G4、及びネズミオブジェクトMnが位置しているグリッドG5が選択される。即ち、ネズミオブジェクトMnがグリッドG5の左上端部に位置する場合、グリッドG3、G6〜G9に位置するネズミオブジェクトMmは遠くに離れていて視界に入らないと判断し、グリッドG3、G6〜G9を選択対象外とする。
同様にして、ネズミオブジェクトMnがグリッドG5のサブグリッドH3、H4、H8の何れかに位置する場合には、グリッドG2、G3、G6、G5を選択する。サブグリッドH9、H13、H14の何れかに位置する場合には、グリッドG4、G7、G8、G5を選択する。サブグリッドH12、H15、H16の何れかに位置する場合には、グリッドG6、G8、G9、G5を選択する。そして、グリッドG5の内側のサブグリッドH6、H7、H10、H11の何れかに位置する場合には、グリッドG5のみを選択する。
図8の場合、ネズミオブジェクトM6はグリッドG5のサブグリッドH1、H2、H5の何れかに位置する。より具体的には、ネズミオブジェクトM6の代表点(同図中のネズミオブジェクトM6の中心点)がサブグリッドH5に位置するため、ネズミオブジェクトM6はサブグリッドH5に位置することになる。従って、グリッドG1、G2、G4、G5が選択される。
【0079】
グリッドGが選択されたならば、選択されたグリッドGに登録されているネズミオブジェクトMmを候補とする。そして、候補となったネズミオブジェクトMmの内、所定数(例えば2つ)のネズミオブジェクトをネズミオブジェクトM6から近接順に選択する。
図8の場合、ネズミオブジェクトM1、M2、M4、M5の中から、ネズミオブジェクトM6に近接する順にネズミオブジェクトM4とM5とを選択し、ベクトルVf’の算出対象とする。
【0080】
このように、ネズミオブジェクトMを、グリッドGを単位として登録管理することによって、移動制御の対象となっているネズミオブジェクトMが何れのグリッドGに登録されているかを判定するだけで、ベクトルVf及びVf’の算出対象とするネズミオブジェクトMmを容易に選択することができる。
【0081】
図10は、環境から作用する外力ベクトルVwの算出方法の概念を説明するための図である。
同図に示すように、例えばゲーム空間に風が設定されている場合、ネズミオブジェクトMnの位置に応じた風の外力を、ベクトルVw−1としてネズミオブジェクトMnに作用させる。また、ネズミオブジェクトMnの位置が斜面である場合には、重力によるベクトルVw−2を作用させる。斜面の滑り易さを表現するために、地表面Bの設定に応じて適宜ベクトルVw−2に係数等をかけて可変する構成としても良い。そして、ベクトルVw−1及びVw−2を求めたならば合成してベクトルVwとする。
【0082】
地表面Bを構成するポリゴン面Pもまた、グリッド管理情報737によってグリッドG毎に対応づけられて登録されている。このため、グリッド管理情報737を参照することによって、移動制御の対象となっているネズミオブジェクトMnが登録されているグリッドGに設定されているベクトルVw−1及びVw−2を簡単に求めることができる。
【0083】
具体的には、ベクトルVw−1は、対応するグリッドGの環境外力の設定情報を管理情報737から読み出す。ベクトルVw−2の算出においては、図11に示すように、ネズミオブジェクトMnの位置座標(移動先の座標)に基づいてネズミオブジェクトMnの位置するグリッドGを判定し、判定したグリッドGに登録されたポリゴン面Pの中からネズミオブジェクトMnが置かれるポリゴン面Pを判定する。そして、当該ポリゴン面Pの法線ベクトルVNのX軸成分及びZ軸成分を求めることによって、ベクトルVw−2を算出する。即ち、地表面Bを構成するポリゴン面Pの何れにネズミオブジェクトMnが位置する(移動する)かを、全てのポリゴン面Pを対象に検索する必要は無く、速やかにベクトルVw−2を求め地表面Bにおける傾斜の影響をネズミオブジェクトMnに反映させることができる。
【0084】
ベクトルVt’、Ve’、Vf’、Vwの算出方法の設定は、ネズミオブジェクトMの種族固有の行動原理や環境から受ける影響を表現することに相当する。従って、例えばネコオブジェクトCを移動制御する場合、ネコオブジェクトCはネズミオブジェクトMを捕食する側なのでベクトルVe’は注目対象から遠ざかる方向ではなく近づく方向となるように設定する。
【0085】
ベクトルVt’、Ve’、Vf’、Vwを算出したならば、ネズミオブジェクトMnの個性を示す性格設定情報735の値に基づいて、例えばベクトルVa=kt×Vt’+kf×Vf’+ke×Ve’+Vwを演算して合成ベクトルVaを算出する。そして、算出されたベクトルVaを更にネズミのゲーム設定上の上限速度|V|maxを超えないように合成ベクトルVaの大きさを適正化しベクトルVa’とする。そして、ベクトルVa’に基づいてネズミオブジェクトMnの仮想空間における新しいX軸座標及びZ軸座標とする。
【0086】
仮想空間における新しいX軸座標及びZ軸座標が求められたならば、ネズミオブジェクトMnが地表面Bの上面を移動することを利用して、ネズミオブジェクトMnの高さ座標(Y軸座標)と、姿勢(仮想空間のワールド座標、XYZ各軸周りの回転)とを決定する。具体的には、新しいX軸座標及びZ軸座標からネズミオブジェクトMnが位置するポリゴン面Pを判定し、判定されたポリゴン面PからネズミオブジェクトMnの高さ座標を求め、当該ポリゴン面Pの法線ベクトルVNに基づいてその姿勢を求める。
【0087】
地表面Bを構成するポリゴン面Pは、前述のようにグリッドGに対応付けてグリッド管理情報737に登録されている。従って、新しいXZ位置座標からネズミオブジェクトMnが次の描画フレームにおいて何れのグリッドGに位置するかを判定するだけで、ポリゴン面Pを絞り込むことができる。ネズミオブジェクトMnが位置するポリゴン面Pを判定するために、ポリゴン面Pの頂点リストの検索やヒットチェックなどをする必要はなく、容易にネズミオブジェクトMnが位置するポリゴン面Pを判定することができる。本実施の形態によれば、この点においても群制御における干渉処理に掛かる処理負荷を軽減し、群制御を高速化することができる。
【0088】
以上の移動制御によって、ネズミオブジェクトMnを、ネズミというゲーム設定上の種族に共通する行動原理に従うが、その一方でネズミオブジェクトMnそれぞれの個性が反映されたように、より高速に移動制御することができる。
【0089】
[機能ブロックの説明]
図12は、本実施の形態における機能構成の一例を示す機能ブロック図である。同図に示すように、業務用ゲーム装置1300は、操作入力部10と、処理部20と、画像表示部30と、音出力部40と、記憶部70とを有する。
【0090】
操作入力部10は、例えば、十字キー、レバー、ボタンスイッチ、ジョイスティックなどによって実現され、種々のゲーム操作を受け付けて操作入力信号を処理部20に出力する。図1の例ではジョイスティック1306とプッシュボタン1308とがこれに該当する。
【0091】
処理部20は、業務用ゲーム装置1300全体の制御、ゲーム演算などの各種の演算処理を行う。その機能は、例えば、CPU(CISC型、RISC型)、ASIC(ゲートアレイ等)などのハードウェア及び関連する制御プログラム等により実現される。図1の例では制御ユニット1320がこれに該当する。
処理部20には更に、主にゲームに係る演算処理を行うゲーム演算部22と、ゲーム演算部22の処理によって求められた各種のデータから画像信号を生成する画像生成部24と、効果音やBGMなどのゲーム音の音信号を生成する音生成部26とが含まれる。
【0092】
ゲーム演算部22は、操作入力部10からの操作入力信号や、記憶部70から読み出したプログラムやデータに基づいて種々のゲーム処理を実行する。ゲーム処理としては、例えば、仮想空間(ゲーム空間)の設定、仮想空間へのオブジェクトの配置及び仮想空間中のオブジェクトの移動、ヒット判定、キャラクタのアクション操作、ゲーム結果(成績)を求める処理、ネコオブジェクトCの移動制御、視点の配置や視線方向の決定などの処理を実行する。
【0093】
本実施の形態では特に、複数のネズミオブジェクトMnからなる群Faを設定する群管理部220と、成分ベクトル(ベクトルVt'、Ve'、Vf'及びベクトルVw)の算出や合成ベクトルVa、Va’の合成を行うベクトル演算部221と、仮想ターゲットTaを移動制御する仮想ターゲット移動制御部222と、仮想空間にグリッドGを設定してネズミオブジェクトMとポリゴン面Pとを登録及び管理するグリッド管理部223とを含む。
【0094】
群管理部220は、群FaにネズミオブジェクトMnを所属オブジェクトとして群管理情報733に登録し、ネズミオブジェクトMnの位置座標などの情報を管理する。例えば、ネズミオブジェクトMnがゲーム中にネコオブジェクトCに捕食されるなどして存在しなくなる場合には登録を抹消する。
【0095】
ベクトル演算部221は、ベクトル演算専用のルーチンやベクトル演算専用のマイクロプロセッサ(例えば図1のベクトル演算ユニット1324)や、DSPなどによって実現される。本実施の形態では、ベクトル演算部221はベクトルVt’、Ve’、Vf’、Vwを算出する処理と、算出したベクトルVt’、Ve’、Vf’、Vwを合成して合成ベクトルVaを算出する処理と、合成ベクトルVaの大きさを適正化してベクトルVa’を算出する処理などを実行する。
【0096】
仮想ターゲット移動制御部222は、仮想ターゲットTaを操作入力部10からの操作入力信号に基づいて移動制御する。
【0097】
グリッド管理部223は、仮想空間に設定されたグリッドG毎に、何れのネズミオブジェクトMnが位置するか、また何れのポリゴン面Pが含まれるかをグリッド管理情報737で登録・管理する。
【0098】
画像生成部24は、例えばCPUやDSPなどの演算装置やその制御プログラム、フレームバッファなどの描画フレーム用ICメモリなどによって実現される。画像生成部24は、ゲーム演算部22によるネズミオブジェクトMやネコオブジェクトCの位置や姿勢、視点の位置や姿勢などの演算結果に基づいて幾何学変換処理やシェーディング処理を実行し、ゲーム画面を表示するための画像を生成する。そして、生成した画像の画像信号を画像表示部30に出力する。
【0099】
音生成部26は、例えばCPUやDSPなどの演算装置及びその制御プログラムによって実現され、ゲーム中に使用される効果音やBGMなどの音を生成し、音信号を音出力部40に出力する。
【0100】
画像表示部30は、画像生成部24からの画像信号に基づいて、例えば1/60秒毎に1フレームの画面を再描画しながらゲーム画面を表示する。画像表示部30は、例えばCRT、LCD、ELD、PDP、HMD等のハードウェアによって実現できる。図1の例ではディスプレイ1302がこれに該当する。
【0101】
音出力部40は、音生成部26からの音信号に基づいて効果音やBGM等を音出力する。図1の例ではスピーカ1304がこれに該当する。
【0102】
記憶部70は、例えばICメモリ、ハードディスク、CD−ROM、MO、DVD等の情報記憶媒体によって実現され、業務用ゲーム装置1300を統合的に制御するためのシステムソフトウェア(図示略)や、画像処理に必要なソフトウェア(図示略)、ゲームを実行するのに必要なプログラム及びデータを格納するゲーム情報72などを記憶する。図1の例ではROM1322がこれに該当する。
【0103】
ゲーム情報72は、処理部20を群管理部220として機能させるための群管理プログラム720と、ベクトル演算部221として機能させるためのベクトル演算プログラム721と、仮想ターゲット移動制御部222として機能させるための仮想ターゲット移動制御プログラム722と、グリッド管理部223として機能させるためのグリッド管理プログラム723とを含む。また、ネコオブジェクトCの移動制御など、そのほかゲームの実行に必要なプログラム等も含まれる(図示略)。
【0104】
また、データとしては、(1)仮想空間に地表面Bなどのオブジェクトを配置してゲーム空間を形成するために必要なモデリングデータやテクスチャデータ等を格納するステージデータ730と、(2)ネズミオブジェクトM及びネコオブジェクトCをゲーム空間に配置するためのモデリングデータやテクスチャデータなどを格納するキャラクタデータ732と、(3)群Faに所属するネズミオブジェクトMを登録・管理するための情報を格納する群管理情報733と、(4)ベクトルVt、Ve、VfからベクトルVt’、Ve’、Vf’を算出する際に参照される係数や行列などを格納する算出方法設定情報734と、(5)ネズミオブジェクトMそれぞれの行動の個性を設定するための情報を格納する性格設定情報735と、(6)仮想ターゲットTaの位置座標、など移動制御に必要な情報を格納する仮想ターゲット情報736と、(7)グリッドG毎にネズミオブジェクトMやポリゴン面Pを登録・管理するための情報を格納するグリッド管理情報737とを含む。
【0105】
またその他、ゲーム情報72には仮想ターゲットTaの位置座標、仮想ターゲットTaの移動ベクトルVta及び1フレーム前の移動ベクトルVtat-1、ネコオブジェクトCに関する位置情報や速度ベクトル、ネズミオブジェクトMの最大移動速度などの各種の初期条件に関する情報等もここに格納される(共に図示略)。
【0106】
図13は、群管理情報733のデータ構成の一例を示す図である。同図に示すように、群管理情報733は群毎に設けられ、群の識別情報である群ID733aと、当該群が移動目標とする仮想ターゲットTを識別するための仮想ターゲットID733bと、当該群に所属するオブジェクト毎の個体情報733cとを含む。本実施の形態では、個体情報733cには、ネズミオブジェクトMnの識別情報に当るオブジェクトIDと、現在の位置座標や合成ベクトルVa’t、1フレーム前の位置座標や合成ベクトルVa’t-1及び回転等の情報を格納する。
【0107】
図14は、性格設定情報735のデータ構成の一例を示す図である。性格設定情報735には、当該ネズミオブジェクトMnにおいてベクトルVt’、Ve’、Vf’がどの程度の割合で最終的な行動に影響を与えるかを決定する係数が格納されている。
【0108】
図15は、本実施の形態におけるグリッド管理情報737のデータ構成の一例を示す図である。同図に示すように、グリッド管理情報737は、グリッドG毎に、各グリッドGの識別情報であるグリッドID737aと、範囲を規定する情報を格納する範囲情報737bと、登録されている地表面Bのポリゴン面Pの情報を格納する地表ポリゴン737cと、当該グリッドGに設定されている風などの環境外力を設定するための情報を格納する環境外力設定情報737dと、登録されているネズミオブジェクトMnの識別情報を格納する登録オブジェクトID737eと、登録されているネコオブジェクトClの識別情報を格納するネコオブジェクトID737fとを含む。
【0109】
範囲情報737bには、例えばグリッドGの頂点座標等の情報が格納される。地表ポリゴン737cには、例えば地表面Bを構成するポリゴン面P毎の識別情報、ポリゴン面Pの法線ベクトルVN、地表の種類の設定情報などが格納される。環境外力設定情報737dは、例えば環境外力としての風や水流などを算出するための関数などが格納される。
【0110】
本実施の形態ではグリッドID737aと、範囲情報737b、地表ポリゴン737c及び環境外力設定情報737dは予め設定され、登録オブジェクトID737eとネコオブジェクトID737fが随時更新される。即ち、ネズミオブジェクトMnが移動する場合には、現在登録されているグリッドGから当該ネズミオブジェクトMnが抹消され、新しく求められた位置座標に基づいて新たに別のグリッドGに登録されることによって、全てのネズミオブジェクトMとネコオブジェクトClが、常に何れかのグリッドGに登録されている状態となる。
【0111】
[処理の流れの説明]
次に図16〜図18を参照して、本実施の形態における処理の流れを説明する。尚、ここでは群制御について主に説明するものとする。
【0112】
図16は、ゲームを実行するためのメインフローの流れを説明するためのフローチャートである。同図に示すように、先ずゲーム演算部22が初期条件に基づいて仮想空間に視点を設定し、オブジェクトを配置してゲーム空間を生成する(ステップS102)。より具体的には、地表面Bや背景などを構成するオブジェクトを仮想空間に配置してゲーム空間を構成し、ゲーム画面を描画する際の基準となる視点を仮想空間に配置する。そして、ネズミオブジェクトMとネコオブジェクトCとを地表面B上に配置する。この際ネズミオブジェクトMnは、予め定められた範囲にランダムに配置される。
ネズミオブジェクトMとネコオブジェクトCとが、ゲーム空間に配置されたならば、グリッド管理部223はネズミオブジェクトMとネコオブジェクトCを、それぞれの位置座標に基づいて何れかのグリッドGに対応づけて登録する(ステップS103)。
【0113】
次に、ゲーム演算部22が、各ネコオブジェクトCを所定のアルゴリズムに従って移動制御し(ステップS104)、グリッド管理部223はネコオブジェクトCとグリッドGとの対応づけを更新する(ステップS105)。
プレーヤによって操作入力がなされた場合(ステップS106のYES)は、仮想ターゲット移動制御部222が操作入力部10からの操作入力信号に基づいて仮想ターゲットTaを移動制御する(ステップS108)。そして、ゲーム演算部22は群Faについて群制御処理を実行する(ステップS110)。
【0114】
図17及び図18は、本実施の形態における群制御処理の流れを説明するための連続するフローチャートである。
図17に示すように、群制御処理において、先ずゲーム演算部22は干渉処理を実行するか省略するかを決定する(ステップS202からS208)。干渉処理とは、ネズミオブジェクトM間の干渉を避けるように移動制御する処理や反対に仲間からはぐれないように追走するように移動制御する処理であって、本実施の形態ではベクトルVf及びVf’を算出することに該当する。
【0115】
より具体的には、ゲーム演算部22は視点から仮想ターゲットTaまでの距離を算出し(ステップS202)、所与の閾値と比較する(ステップS204)。この閾値は、ネズミオブジェクトMを画面表示した場合にその表示サイズが小さくて個々の識別が難しくなる境の距離を示し、予め設定しても良いしネズミオブジェクトMの大きさや視点の画角などの条件に応じて適宜算出される構成であっても良い。
【0116】
視点から仮想ターゲットTaまでの距離が閾値に達する場合(ステップS204のYES)、ゲーム演算部22は、群Faが視点より遠くに離れているためにネズミオブジェクトMの表示サイズが小さく、干渉処理を行ってもその効果が見た目にわからない状態になると判断して、干渉処理省略モードとする(ステップS206)。干渉処理省略モードとは、本実施の形態ではベクトルVf及びVf’の算出を省略する演算モードに該当する。
【0117】
反対に、視点から仮想ターゲットTaまでの距離が閾値を超えない場合(ステップS204のNO)、ネズミオブジェクトMの表示サイズが比較的大きく、個々の識別が比較的容易であって、干渉処理の効果が見て分かる程度になると判断し、ベクトルVf及びVf’の算出を実行する干渉処理実行モードとする(ステップS208)。干渉処理省略モード及び干渉処理実行モードの識別結果は、例えばゲーム演算部22が記憶部70のゲーム情報72にフラグを設定することによって管理する。
【0118】
干渉処理のモードが決定されたならば、ベクトル演算部221は群管理情報733を参照しながら、群Faに登録されている全てのネズミオブジェクトMについて個体別ルーチンを実行する(図17のステップS212〜図18のS258)。
【0119】
個体別ルーチンでは、先ずベクトル演算部221がベクトルVtを算出する。そして、算出方法設定情報734を参照して、前述の如く仮想ターゲットTaからの距離や仮想ターゲットTaの停止しているか否か及び群Faの先頭の位置条件等に基づいてベクトルVtからベクトルVt’を算出する(ステップS212)。
【0120】
次に、ベクトル演算部221はベクトルVe及びVe’を算出する(ステップS214)。具体的には、ネコオブジェクトCの位置情報と当該ネズミオブジェクトMnの位置関係に基づいてベクトルVeを算出する。そして、算出方法設定情報734を参照してベクトルVeからベクトルVe’を算出する。
尚、複数のネコオブジェクトCが対ネコ用近距離にいる場合は、ネコオブジェクトClごとにベクトルVe’を算出し、それぞれのベクトルVe’をサブベクトルとみなし、ベクトル合成した結果を最終的なベクトルVe’とする。
【0121】
次に、ベクトル演算部221は干渉処理のモードを確認する(ステップS216)。干渉処理省略モードの場合(ステップS216のNO)、ベクトル演算部221は「ベクトルVf’=0」とする(ステップS218)。干渉処理実行モードの場合(ステップS216のYES)、ベクトル演算部221はベクトルVf及びVf’を算出する(ステップS220〜S232)。
【0122】
ベクトルVf及びVf’を算出する場合(ステップS216のYES)、ベクトル演算部221は先ずグリッド管理情報737を参照し、個体別ルーチンの処理対象となっているネズミオブジェクトMnが登録されているグリッドGを判定する(ステップS220)。そして、判定したグリッドGに対してサブグリッドHを設定し(ステップS222)、ネズミオブジェクトMnがグリッドG内の何れのサブグリッドHに位置するかを判定する(ステップS224)。即ち、グリッドG内におけるネズミオブジェクトMnの相対的な位置を判定する。
【0123】
次に、ネズミオブジェクトMnが位置するサブグリッドHを判定したならば、ベクトル演算部221は、サブグリッドHとグリッドGの対応条件(図9参照)に従ってグリッドGを選択する(ステップS226)。そして、グリッド管理情報737を参照し、選択されたグリッドGに登録されているネズミオブジェクトMmとネズミオブジェクトMn間の距離を算出し、近接順に所定数のネズミオブジェクトMmを選択する(ステップS228)。
【0124】
次に、ベクトル演算部221は、選択されたネズミオブジェクトMm毎にベクトルVfmを算出し、更に算出方法設定情報734を参照して、前述の如くネズミオブジェクトMnとの距離に応じてベクトルVfmからベクトルVf’mを算出する(ステップS230)。そして、ベクトル演算部221はネズミオブジェクトMm毎に算出されたベクトルVf’mをベクトル合成し、その結果をネズミオブジェクトMnの最終的なベクトルVf’とする(ステップS232)。
【0125】
次に図18において、ベクトル演算部221はベクトルVwを算出する(ステップS234〜240)。
先ずグリッド管理情報737を参照してネズミオブジェクトMnが登録されているグリッドGを判定し(ステップS234)、判定されたグリッドGに登録されているポリゴン面Pを対象に、ネズミオブジェクトMnが何れのポリゴン面Pに位置するかを判定する(ステップS236)。
【0126】
次に、ベクトル演算部221は、ネズミオブジェクトMnが位置するポリゴン面PのベクトルVNから地表面Bの傾斜によって作用するベクトルVw−2を算出する。また、ネズミオブジェクトMnが登録されているグリッドGに設定されている環境外力設定情報737dに従ってベクトルVw−1を算出する(ステップS238)。
ベクトルVw−1及びVw−2が算出されたならば、ベクトル演算部221はこれらを合成してネズミオブジェクトMnの最終的なベクトルVwとする(ステップS240)。
【0127】
ベクトルVt’、Ve’、Vf’、Vwが算出されたならば、ベクトル演算部221は性格設定情報735を参照して、ベクトルVt’、Ve’、Vf’、Vwから合成ベクトルVaを算出する(ステップS242)。次いで、合成ベクトルVaの大きさを、ネズミオブジェクトMの最大移動速度を越えないように適正化し合成ベクトルVa’とする(ステップS244)。
【0128】
合成ベクトルVa’が求められたならば、ゲーム演算部22は当該ネズミオブジェクトMnの移動先の位置座標や地形に合わせて仮想空間のワールド座標系X、Y、Z軸周りの回転等を演算し、群管理情報733を更新する(ステップS246〜258)。
【0129】
より具体的には、先ずベクトルVa’に基づいてネズミオブジェクトMnの新しいXZ座標を算出し(ステップS246)、Y軸周りの回転を算出する(ステップS248)。
次に、新しいXZ座標に基づいてネズミオブジェクトMnが何れのグリッドGに位置するかを判定する(ステップS250)。そして、判定されたグリッドGに登録されているポリゴン面Pの内、何れのポリゴン面PにネズミオブジェクトMnが位置するかを判定する(ステップS252)。
【0130】
ネズミオブジェクトMnが位置するポリゴン面Pが判定されたならば、ゲーム演算部22は、当該ポリゴン面Pに基づいてネズミオブジェクトMnの新しいY座標値(高さ)を算出し(ステップS254)、同ポリゴン面Pの法線ベクトルVNに基づいてネズミオブジェクトMnについてワールド座標系X軸及びZ軸周りの回転を算出する(ステップS256)。そして、ネズミオブジェクトMnの位置座標・回転・合成ベクトルVa’が決定されたならば、群管理部220が群管理情報733を更新し、グリッド管理部223がグリッド管理情報737を更新する(ステップS258)。
【0131】
全てのネズミオブジェクトMnについて、図17のステップS212〜図18のS258までの処理が実行されたならば群制御処理を終了し、図16のフローに戻る。尚、本実施の形態では処理対象となる群を一つ(群Fa)としているが、ゲーム空間中に複数の群が存在する場合は、全ての群について上述の群制御処理を実行する。
【0132】
図16のフローに戻って、群制御処理によって全てのネズミオブジェクトMnの位置が確定されたので、ゲーム演算部22は所定のゲーム判定処理を実施する(ステップS112)。例えば、ネズミオブジェクトMがネコオブジェクトCに捕食されたか否かの判定や、ゲーム時間の判定、得点の計算などがここに含まれる。
【0133】
次いで、画像生成部24が視点から見たゲーム画面の画像を生成し、画像表示部30に表示させる(ステップS114)。そして、ゲーム演算部22はゲーム終了判定を実行し、所定の条件を満たす場合にゲームを終了する(ステップS116のYES)。
【0134】
図19〜図21は、上記処理結果に基づくゲーム画面の一例を示す図である。図19では、ネコオブジェクトC1が画面下側より上に移動して群Faに近づいており、続く図20ではネコオブジェクトC1が仮想ターゲットTaの近傍まで達し、各ネズミオブジェクトMは仮想ターゲットTaに集まろうとしながらもネコオブジェクトC1から逃げるように移動制御される。結果、ネコオブジェクトC1の周囲に円形の空間が生じている。
【0135】
さらに続く図21は、ネコオブジェクトC1が更に右上方向に進行し、群Faを通り抜けた場合を示している。ネコオブジェクトC1(敵)が群Faから離れることによって、ネズミオブジェクトMにはベクトルVe’が作用しなくなる。例えば、敵から逃げるために仮想ターゲットTaから所定距離離れてしまったネズミオブジェクトMにはベクトルVt’が比較的高く作用し、仮想ターゲットTaに近づくように移動制御される。尚、これらの図はある条件下における一例であって、その時々の各オブジェクトの位置関係や地形などの諸条件により様々な形態になり得る。
【0136】
[ハードウェアの構成]
次に、業務用ゲーム装置1300を実現できるハードウェアの構成について説明する。
図22は、本実施の形態におけるハードウェア構成の一例を示す図である。業務用ゲーム装置1300は、CPU1000と、ROM1002と、RAM1004と、情報記憶媒体1006と、音生成IC1008と、画像生成IC1010と、I/Oポート1012及び1014とを有し、システムバス1016により相互にデータの入出力が可能に接続されている。
【0137】
CPU1000は、図12における処理部20に該当し、情報記憶媒体1006に格納されているプログラム、ROM1002に格納されているシステムプログラム、コントロール装置1022によって入力される操作入力信号等に従って、装置全体の制御や各種のデータ処理を行う。
【0138】
ROM1002、RAM1004及び情報記憶媒体1006は、図12における記憶部70に該当する。
ROM1002は、図1のROM1322に該当し、図12のゲーム情報72、特に、予め設定されているプログラムやデータを記憶する。RAM1004は、CPU1000の作業領域などとして用いられる記憶手段であり、情報記憶媒体1006やROM1002の所与の内容、或いはCPU1000の演算結果が格納される。情報記憶媒体1006は、ICメモリカードや着脱自在なハードディスクユニット、MOなどによって実現される。情報記憶媒体1006は、図1のROM1322に該当する。
【0139】
音生成IC1008は、情報記憶媒体1006やROM1002に記憶される情報に基づいて効果音やBGM等のゲーム音を生成する集積回路であり、生成された音はスピーカ1020によって出力される。なお、スピーカ1020は、図12における音出力部40、図1におけるスピーカ1304に該当する。
【0140】
画像生成IC1010は、RAM1004、ROM1002、情報記憶媒体1006等から出力される画像情報に基づいて表示装置1018に画像を出力するための画素情報を生成する集積回路である。なお、表示装置1018は、図12における画像表示部30、図1におけるディスプレイ1302に該当する。
【0141】
I/Oポート1012には、コントロール装置1022が接続され、I/Oポート1014には、通信装置1024が接続されている。
コントロール装置1022は、図12における操作入力部10に該当し、操作パネルや図1のジョイスティック1306やプッシュボタン1308等に相当するものであり、プレーヤがゲームの進行に応じて種々のゲーム操作を入力するための装置である。また、通信装置1024は、ゲーム装置内部で利用される各種の情報を外部とやり取りするものであり、他のゲーム装置と接続されてゲームプログラムに応じた所与の情報を送受信したり、通信回線を介して、ゲームプログラム等の情報を送受信することなどに利用される。
【0142】
尚、画像生成IC1010、音生成IC1008等で行われる処理はCPU1000、或いは汎用のDSP等によってソフトウェア的に実行されても良い。
【0143】
[変形例の説明]
以上、本発明を適用した第1の実施の形態について説明したが、本発明の適用がこれに限定されるものではなく、発明の趣旨を逸脱しない限りにおいて適宜構成要素の追加・省略・変更等を行っても構わない。
【0144】
例えば、群制御処理において、ネズミオブジェクトMnが位置するグリッドGに基づいて隣接する他のグリッドGを選択する際、例えば図23に示すように、隣接する他のグリッドG内にもサブグリッドJを設定し、グリッドGを選択する代わりにサブグリッドJを選択する構成としても良い。
【0145】
同図の場合、個体別ルーチンの処理対象となっているネズミオブジェクトM6が、グリッドG5の図中左上方のサブグリッドH5に位置している。この場合、グリッドG1、G2、G4にサブグリッドJを設定し、網掛け表示しているサブグリッドJを選択する。これにより、ベクトルVf’の算出対象とするネズミオブジェクトMmを、ネズミオブジェクトM1〜M5の中から更にネズミオブジェクトM2とM4とに絞り込むことで、より演算負荷を軽減できる。
【0146】
図23で示した手法は、グリッドGが比較的大きく、また1つのグリッドGに多くのネズミオブジェクトMが位置し得る場合に特に効果的である。
【0147】
また、図24に示すように、移動制御の対象となっているネズミオブジェクトM6が、サブグリッドH6、H7、H10、H11の何れかに位置する場合には、グリッドG5全体を選択するのではなくサブグリッドH単位で選択するとしても良い。
より具体的には、例えばネズミオブジェクトM6のベクトルVa’を参照して、ベクトルVa’がネズミオブジェクトM6の視線方向を向いていると考える。ネズミオブジェクトM6の後方に該当するサブグリッドH13〜H16は、ネズミオブジェクトM6の視界に入らないと判断して選択の対象外とする。従って、ベクトルVf’の算出対象となるネズミオブジェクトMmはグリッドG5のサブグリッドH1〜H4、H5、H8、H9、H12の中に位置するものに更に絞り込まれ、より処理負荷を低減することができる。
【0148】
また、図25に示すように、グリッドGの略中央に設定される内側サブエリアHi(網掛け部分)と外側サブエリアHoとを設定し、ネズミオブジェクトMnが何れのサブエリアに位置するかの条件と、ネズミオブジェクトMnの進行方向とによってグリッドGを選択する構成としても良い。
【0149】
例えば図25(a)に示すように、移動制御対象となっているネズミオブジェクトM6が内側サブエリアHiに位置する場合は、当該グリッドG5を選択する。
【0150】
ネズミオブジェクトM6が外側サブエリアHoに位置する場合には、ネズミオブジェクトM6の進行方向によって更に条件を細分化する。
例えば図25(b)に示すように、ネズミオブジェクトMnが外側サブエリアHoに位置し、更にその進行方向がグリッドG5の内側を向いている場合には、ネズミオブジェクトM6の前方(前方視界)がグリッドG5の大部分で占められると判断する。そして、グリッドG5を越えたネズミオブジェクトM6の進行方向に位置するグリッドG2やG1、G3はネズミオブジェクトM6より遠く離れているとみなし、グリッドG1〜G3を対象のグリッドとはせずにグリッドG5のみを対象のグリッドとして選択する。
【0151】
また、例えば図25(c)に示すように、ネズミオブジェクトM6が外側サブエリアHoに位置し、その進行方向がグリッドG5の外側を向いている場合は、進行方向(ベクトルVa’の方向)をネズミオブジェクトM6の視線方向と考えて、ネズミオブジェクトM6の後方に該当するグリッドG7〜G9を選択対象外とする。これによって、あたかもネズミオブジェクトMnに視界があって、視界に入らないグリッドG7〜G9に位置するネズミオブジェクトMmの影響を受けないようにすることができる。
【0152】
またハードウェアとしては、業務用ゲーム装置1300に適用した例を挙げたが、その他家庭用ゲーム装置、携帯型ゲーム装置、大型アトラクション装置、PDAなどにも同様に適用可能である。また、CGの利用分野に関してもゲームに限定するものではなく、映画、CFなどであっても良い。
【0153】
〔第2の実施の形態〕
次に、図26〜図30を参照して、本発明における第2の実施の形態について説明する。第2の実施の形態は、群を構成するオブジェクトMが例えば鳥や魚などであり3次元的に移動する場合を例に挙げて説明する。
尚、本実施の形態は基本的に第1の実施の形態と同様の構成によって実現可能であり、第1の実施の形態と同様の構成要素については同じ符号を付け説明は省略するものとする。
【0154】
図26及び図27は、本実施の形態におけるグリッドGを説明するための概念図である。図26に示すように、本実施の形態における群Faを構成するオブジェクトMは、魚や鳥など空間を3次元的に移動し得る設定である。群Faには仮想ターゲットTaを基準とする群形状Wが予め設定されている。ゲーム空間には第1の実施の形態と同様に、グリッドGがXZ座標系に設定され(同図下部の格子状に区切られた範囲)、各オブジェクトMはX軸座標及びZ軸座標に基づいてグリッドGに登録される。同図では、破線によってオブジェクトM1〜M6それぞれと対応づけられた三角形のマークでオブジェクトMがグリッドGに登録されている状態を示している。
【0155】
各オブジェクトMの移動制御におけるベクトルVt’、Ve’、Vf’、Vwも、第1の実施の形態と同様にX軸成分及びZ軸成分のみで演算される。即ち、オブジェクトMはXZ座標平面上において互いに干渉を避けながら、群Faとしての形状を保つように移動制御される。
【0156】
オブジェクトMのY軸方向の位置座標(高さ)は、群形状Wの範囲内に入るように例えばランダムに配置される。更に次の描画フレームにおけるY座標値は、現在のY座標値からオブジェクトMの移動が不自然とならない程度の範囲内でランダムに設定される。
【0157】
図27に示すように、オブジェクトMが敵とみなすオブジェクトCには、その周囲に忌避領域Dが設定されている。オブジェクトCが群Faに接近した場合は、空間集合演算(ブール演算)によって群形状Wから忌避領域Dを減算する。そして、忌避領域Dが減算された群形状W内にオブジェクトMを配置する。従って、オブジェクトMが敵であるオブジェクトCから避けているように移動制御することができる。
【0158】
[機能ブロックの説明]
第2の実施の形態における機能構成としては特に、ゲーム情報72に群形状情報(図示略)を含む。また、オブジェクトCのキャラクタデータ732には、忌避領域Dを設定する情報が含まれる(図示略)。
【0159】
群形状情報は、仮想ターゲットTaを基準点とした、群形状Wを規定する関数や群形状Wを形成するプリミティブ面の位置情報などを含む。群形状Wは予め固定されたものであっても良いし、時間変数を含み時間と共に変形する構成であっても良い。
【0160】
[処理の流れの説明]
図28及び図29は、本実施の形態における群制御処理の流れを説明するための連続するフローチャートである。尚、第1の実施の形態における群制御処理と差異のあるステップにはS300番台の符号をつけている。
【0161】
図29に示すように、個体別ルーチンにおいてオブジェクトMn(nは自然数)のY座標値を求める処理が異なる。ステップS246においてベクトルVa’に基づいてオブジェクトMnの新しいXZ位置座標を算出したならば、ゲーム演算部22は群形状情報を参照し、オブジェクトCとの位置関係に基づいて群形状Wから忌避領域Dを減算した群形状W’を求める(ステップS302)。そして、仮想ターゲットTaに対するオブジェクトMnの相対位置を算出し(ステップS304)、群形状W’に基づいてオブジェクトMnのXZ位置におけるY座標値のとり得る範囲を算出する(ステップS306)。
【0162】
Y座標値の範囲が求められたならば、ゲーム演算部22は、群管理情報733から1フレーム前の位置座標のY座標値を参照し、このY座標値から所定の範囲内にランダムに新しいY座標を設定する(ステップS308)。この段階で、次のフレームにおいてオブジェクトMnが移動するべき位置が決定したことになる。
次に、ゲーム演算部22は、次のフレームにおいてオブジェクトMnが移動するべき位置に、オブジェクトMnの頭が向くようにワールド座標系XYZ軸周りの回転を算出する(ステップS310)。
【0163】
オブジェクトMnの位置座標・回転・合成ベクトルVa’が決定されたならば、群管理部220が群管理情報733を更新し、グリッド管理部223がグリッド管理情報737を更新する(ステップS258)。
【0164】
以上の処理によって、オブジェクトMnが3次元的に移動する設定であっても、オブジェクトMnの移動制御に必要なベクトル演算をXZ成分のみで実行することができる。従って移動制御に掛かる演算処理を軽減し、群制御処理を高速化することができる。
【0165】
尚、3次元的に移動するオブジェクトの場合、図30に示すようにグリッドGを3次元の範囲として設定し、ベクトルVt’、Ve’、Vf’、Vw及び合成ベクトルVa’を3次元ベクトルとして演算する構成としても良いのは勿論である。
【0166】
【発明の効果】
本発明によれば、仮想空間を複数のエリア(範囲)に分割し、群を構成する各個体を何れかのエリアに対応付けることによって、群を構成する多数の個体を常にエリアを単位としたグループとして把握できる状態にできる。そして、一の個体を移動制御する場合、当該一の個体が位置するエリアに基づいて他のエリアの中から特定のエリア(特定エリア)を選択し、当該特定エリアに位置する他の個体を干渉処理の対象とする。即ち、一の個体が位置するエリアに対する特定エリアの関係を予め設定しておくだけで、簡単に干渉処理の対象となる他の個体を簡単に絞り込むことができる。
従って、一の個体の移動制御に掛かる処理負荷、特に当該一の個体の行動に影響を及ぼす他の個体を選択する処理に掛かる負荷を軽減し、個体の移動制御処理を高速化することができる。
【図面の簡単な説明】
【図1】本発明を適用した業務用ゲーム装置の外観の一例を示す図。
【図2】ゲーム内容の概要を説明するための図。
【図3】第1の実施の形態におけるネズミオブジェクトMの移動制御の原理を説明するための図。
【図4】ベクトルVt’の算出方法の原理について説明するための図。
【図5】ベクトルVe’の算出方法の原理について説明するための図。
【図6】ベクトルVf’の算出方法の原理について説明するための図。
【図7】第1の実施の形態におけるグリッドGを説明するための斜視概念図。
【図8】ベクトルVf’の算出対象となるネズミオブジェクトMmを検索するグリッドGの選択方法を説明するための概念図。
【図9】第1の実施の形態におけるサブグリッドHと選択するグリッドGとの対応関係の一例を示す図。
【図10】環境から作用する外力ベクトルVwの概念を説明するための図。
【図11】ポリゴン面Pの法線ベクトルVNとベクトルVw−2の関係を示す概念図。
【図12】第1の実施の形態における機能構成の一例を示す機能ブロック図。
【図13】群管理情報733のデータ構成の一例を示す図。
【図14】性格設定情報735のデータ構成の一例を示す図。
【図15】グリッド管理情報737のデータ構成の一例を示す図。
【図16】第1の実施の形態におけるゲーム処理のメインフローの流れを説明するためのフローチャート。
【図17】第1の実施の形態における群制御処理の流れを説明するためのフローチャート。
【図18】第1の実施の形態における群制御処理の流れを説明するためのフローチャート。
【図19】ゲーム画面の一例を示す図。
【図20】ゲーム画面の一例を示す図。
【図21】ゲーム画面の一例を示す図。
【図22】第1の実施の形態を実現し得るハードウェア構成の一例を示す図。
【図23】グリッドGを選択する場合にサブグリッドHを設定し、サブグリッドHを単位として選択する場合の一例を示す図。
【図24】グリッドGを選択する場合に、ネズミオブジェクトMnの進行方向(移動方向)に基づいてサブグリッドHを単位として選択する場合の一例を示す図。
【図25】グリッドGに内側サブエリアHiと外側サブエリアHoとを設定する場合のグリッドGの選択方法の例を示す図。
【図26】第2の実施の形態におけるグリッドGを説明するための概念図。
【図27】第2の実施の形態におけるグリッドGを説明するための概念図。
【図28】第2の実施の形態における群制御処理の流れを説明するためのフローチャート。
【図29】第2の実施の形態における群制御処理の流れを説明するためのフローチャート。
【図30】グリッドGを3次元の範囲として設定する場合の一例を示す概念図。
【符号の説明】
20 処理部
22 ゲーム演算部
220 群管理部
221 ベクトル演算部
222 仮想ターゲット移動制御部
223 グリッド管理部
70 記憶部
72 ゲーム情報
720 群管理プログラム
721 ベクトル演算プログラム
722 仮想ターゲット移動制御プログラム
723 グリッド管理プログラム
733 群管理情報
734 算出方法設定情報
735 性格設定情報
736 仮想ターゲット情報
737 グリッド管理情報
1300 業務用ゲーム装置
1302 ディスプレイ
1306 ジョイスティック
1308 プッシュボタン
1320 制御ユニット
1322 ROM
1324 ベクトル演算ユニット
B 地表面
C ネコオブジェクト
D 忌避領域
F 群
G グリッド
H サブグリッド
Hi 内側サブエリア
Ho 外側サブエリア
M ネズミオブジェクト
P ポリゴン面
T 仮想ターゲット
V ベクトル
W 群形状
Claims (13)
- コンピュータに、仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成させるためのプログラムであって、
前記仮想空間を複数のエリアに分割するエリア分割手段、
前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段、
前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアを複数のサブエリアに分割した場合の当該一の個体が位置するサブエリアに基づいて、前記複数のエリアの中から特定エリアを選択する選択手段、
前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段、
として前記コンピュータを機能させるためのプログラム。 - 請求項1に記載のプログラムであって、
前記選択手段が、特定エリアとして、前記一の個体が位置するサブエリアを含むエリアを選択する場合には、当該エリアに含まれるサブエリアの中から特定サブエリアを選択し、
前記個体移動制御手段が、前記一の個体と、前記特定サブエリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する、
ように前記コンピュータを機能させるためのプログラム。 - コンピュータに、仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成させるためのプログラムであって、
前記仮想空間を複数のエリアに分割するエリア分割手段、
前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段、
前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアに基づいて、前記複数のエリアの中から特定エリアを選択するとともに、当該一の個体が位置するエリアを内側サブエリアと外側サブエリアとの少なくとも2つのサブエリアに分割した場合の当該一の個体が位置するサブエリアが内側サブエリアの場合には、当該一の個体が位置するエリアを前記特定エリアとして選択する選択手段、
前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段、
として前記コンピュータを機能させるためのプログラム。 - 請求項3に記載のプログラムであって、
前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアであり、尚かつ当該一の個体の進行方向が当該一の個体が位置するエリアの内方に向かう方向の場合には、当該一の個体が位置するエリアを特定エリアとして選択するように前記コンピュータを機能させるためのプログラム。 - 請求項3に記載のプログラムであって、
前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアの場合には、当該一の個体が位置するエリアに隣接するエリアを特定エリアとして選択するように前記コンピュータを機能させるためのプログラム。 - 請求項3に記載のプログラムであって、
前記選択手段が、前記一の個体が位置するサブエリアが外側サブエリアであり、尚かつ当該一の個体の進行方向が当該一の個体が位置するエリアの外方に向かう方向の場合には、当該一の個体が位置するエリアに隣接するエリアを特定エリアとして選択するように前記コンピュータを機能させるためのプログラム。 - 請求項1〜6のいずれか一項に記載のプログラムであって、
前記仮想空間は、所定の地平面の地平面座標系と、前記地平面に対する高さを表す高さ情報とに基づく空間座標系により、前記仮想空間内の任意の位置を定義することができる空間であり、
前記各個体は前記仮想空間内の地表上を移動し、
前記エリア分割手段が、前記地平面座標系に基づいて前記仮想空間を分割し、
前記個体移動制御手段が、前記地平面座標系に基づき前記干渉処理を行う、
ように前記コンピュータを機能させるためのプログラム。 - 請求項7に記載のプログラムであって、
前記地平面に2次元格子を配設するとともに、配設した2次元格子と、前記2次元格子を構成する各格子点の高さ情報とに基づいて前記各格子点の位置座標を決定し、各格子点の位置座標に基づくプリミティブ面を形成することによって、前記仮想空間内に地表を形成する地表形成手段として前記コンピュータを更に機能させるとともに、
前記エリア分割手段が、前記2次元格子に沿って前記仮想空間を分割し、
前記個体移動制御手段が、前記一の個体が位置するエリアの地表を形成するプリミティブ面に基づいて当該一の個体の高さ情報を演算する、
ように前記コンピュータを機能させるためのプログラム。 - 請求項8に記載のプログラムであって、
前記個体移動制御手段が、前記一の個体が位置するエリアの地表を形成するプリミティブ面の法線を演算し、演算した法線の前記地平面座標系成分に基づいて前記一の個体の移動制御補正を行うように前記コンピュータを機能させるためのプログラム。 - 請求項1〜9のいずれか一項に記載のプログラムであって、
前記画像を生成する基準となる視点を設定する視点設定手段として前記コンピュータを更に機能させるとともに、
前記個体移動制御手段が、前記一の個体と前記視点間の距離に応じて前記干渉処理を実行するか否か判定するように前記コンピュータを機能させるためのプログラム。 - 請求項1〜10のいずれか一項に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
- 仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成する画像生成装置であって、
前記仮想空間を複数のエリアに分割するエリア分割手段と、
前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段と、
前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアを複数のサブエリアに分割した場合の当該一の個体が位置するサブエリアに基づいて、前記複数のエリアの中から特定エリアを選択する選択手段と、
前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段と、
を備えた画像生成装置。 - 仮想空間内に配置された複数の個体で構成される群について、少なくとも各個体間の干渉処理を行って、個体毎に移動制御することにより、移動する群の画像を生成する画像生成装置であって、
前記仮想空間を複数のエリアに分割するエリア分割手段と、
前記各個体と、当該個体が位置するエリアとを対応づけ、その対応づけ情報を記憶する記憶手段と、
前記対応づけ情報を参照して、前記複数の個体の内、一の個体が位置するエリアに基づいて、前記複数のエリアの中から特定エリアを選択するとともに、当該一の個体が位置するエリアを内側サブエリアと外側サブエリアとの少なくとも2つのサブエリアに分割した場合の当該一の個体が位置するサブエリアが内側サブエリアの場合には、当該一の個体が位置するエリアを前記特定エリアとして選択する選択手段と、
前記一の個体と、前記対応づけ情報を参照して求まる前記特定エリアに位置する他の個体との間で前記干渉処理を行い、当該一の個体を移動制御する個体移動制御手段と、
を備えた画像生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002345872A JP4176455B2 (ja) | 2002-11-28 | 2002-11-28 | プログラム、情報記憶媒体及び画像生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002345872A JP4176455B2 (ja) | 2002-11-28 | 2002-11-28 | プログラム、情報記憶媒体及び画像生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004178412A JP2004178412A (ja) | 2004-06-24 |
JP4176455B2 true JP4176455B2 (ja) | 2008-11-05 |
Family
ID=32706942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002345872A Expired - Fee Related JP4176455B2 (ja) | 2002-11-28 | 2002-11-28 | プログラム、情報記憶媒体及び画像生成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4176455B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021037167A (ja) * | 2019-09-04 | 2021-03-11 | 株式会社スクウェア・エニックス | ビデオゲーム処理プログラム、及びビデオゲーム処理システム |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5140976B2 (ja) * | 2006-09-14 | 2013-02-13 | 株式会社セガ | ゲームプログラムおよびゲーム装置 |
JP4489800B2 (ja) * | 2007-08-30 | 2010-06-23 | 株式会社スクウェア・エニックス | 画像生成装置及び方法、並びにプログラム及び記録媒体 |
KR100919513B1 (ko) * | 2007-10-17 | 2009-09-28 | 한국생산기술연구원 | 로봇의 자율주행을 위한 의미적 지도 |
JP5214215B2 (ja) * | 2007-11-02 | 2013-06-19 | 株式会社コナミデジタルエンタテインメント | ゲーム装置、ゲーム装置の制御方法及びプログラム |
JP5540128B2 (ja) * | 2013-02-25 | 2014-07-02 | 株式会社コナミデジタルエンタテインメント | ゲーム装置、ゲーム装置の制御方法及びプログラム |
JP6379077B2 (ja) * | 2015-09-03 | 2018-08-22 | 株式会社カプコン | ゲームプログラムおよびゲーム装置 |
JP6691937B2 (ja) * | 2018-06-25 | 2020-05-13 | グリー株式会社 | 表示プログラム、表示方法、及び表示システム |
WO2022027262A1 (zh) * | 2020-08-05 | 2022-02-10 | 上海莉莉丝科技股份有限公司 | 游戏对象的交互控制系统、方法、服务器及计算机可读存储介质 |
-
2002
- 2002-11-28 JP JP2002345872A patent/JP4176455B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021037167A (ja) * | 2019-09-04 | 2021-03-11 | 株式会社スクウェア・エニックス | ビデオゲーム処理プログラム、及びビデオゲーム処理システム |
JP7341801B2 (ja) | 2019-09-04 | 2023-09-11 | 株式会社スクウェア・エニックス | ビデオゲーム処理プログラム、及びビデオゲーム処理システム |
Also Published As
Publication number | Publication date |
---|---|
JP2004178412A (ja) | 2004-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1008959B1 (en) | Image processing system and image processing method | |
US8915784B2 (en) | Program, information storage medium, and image generation system | |
CN1651118B (zh) | 游戏用图像处理装置 | |
EP1470844A1 (en) | Game executing method, information recording medium, game device, data signal and program | |
EP2466445A1 (en) | Input direction determination terminal, method and computer program product | |
EP2255854A2 (en) | Image generation system, image generation method, and computer program product | |
JP7207911B2 (ja) | プログラム、ゲームシステム、サーバシステム及びゲーム提供方法 | |
CN106075900A (zh) | 终端装置 | |
JP2017099744A (ja) | プログラム及び画像生成システム | |
JP2004321598A (ja) | プログラム、情報記憶媒体及びゲーム装置 | |
JP4176455B2 (ja) | プログラム、情報記憶媒体及び画像生成装置 | |
JP2010029398A (ja) | プログラム、情報記憶媒体及び画像生成システム | |
CN112807681A (zh) | 游戏控制方法、装置、电子设备及存储介质 | |
JP3747050B1 (ja) | プログラム、情報記憶媒体、及び画像生成システム | |
WO2004090838A1 (ja) | シミュレーション装置及び情報記憶媒体 | |
JP2013208373A (ja) | プログラム、情報記憶媒体及びサーバ | |
JP5942031B1 (ja) | プログラム、ゲームの制御方法、及び情報処理装置 | |
JP5977878B1 (ja) | プログラム、ゲームの制御方法、及び情報処理装置 | |
US7402104B2 (en) | Game performing method, game apparatus, storage medium, data signal and program | |
JP3990648B2 (ja) | プログラム、情報記憶媒体及び画像生成装置 | |
JP7075710B2 (ja) | ゲーム装置及びプログラム | |
JP4220224B2 (ja) | プログラム、情報記憶媒体及び画像生成装置 | |
JP2009129167A (ja) | プログラム、情報記憶媒体、及び画像生成システム | |
JP5224496B2 (ja) | ゲームシステム、プログラム及び情報記憶媒体 | |
JP2009075739A (ja) | プログラム、情報記憶媒体、および画像生成システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051021 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20060104 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20060116 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20060116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080513 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080714 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080812 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080820 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4176455 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120829 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120829 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130829 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |