JP3581673B2 - 群集の移動を表現する方法、記憶媒体、および情報処理装置 - Google Patents
群集の移動を表現する方法、記憶媒体、および情報処理装置 Download PDFInfo
- Publication number
- JP3581673B2 JP3581673B2 JP2001182693A JP2001182693A JP3581673B2 JP 3581673 B2 JP3581673 B2 JP 3581673B2 JP 2001182693 A JP2001182693 A JP 2001182693A JP 2001182693 A JP2001182693 A JP 2001182693A JP 3581673 B2 JP3581673 B2 JP 3581673B2
- Authority
- JP
- Japan
- Prior art keywords
- crowd
- character
- enemy character
- individual
- enemy
- 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
Landscapes
- Processing Or Creating Images (AREA)
Description
【発明の属する技術分野】
本発明は、複数の個体の集まりである群集の振る舞いを擬似的に表現する技術に係り、特に、情報処理装置を用いて、個体が群集となって移動を行う様子を画像により表現する技術に関する。
【0002】
【従来の技術】
群集とは、複数の個体が集まった状態であり、群集の移動とはその集まった状態を保ちながら各個体が移動することである。情報処理装置上で、この群集の移動を擬似的に表現するためには、群集を構成する個々の個体に対して目的地に向う移動の指示を与える第1の方法と、群集を一つのかたまりとみなし、群集に対して目的地に向う移動の指示を与える第2の方法とが考えられる。
【0003】
【発明が解決しようとする課題】
しかし、第1の場合、各個体が群集内の他の個体との関係を考慮せずに移動を行うことになり、群集としての振る舞いをうまく表現することは困難である。
【0004】
一方、第2の場合、群集自体は目的地に向うが、例えば、群集内の各個体の分布がそのまま変化せずに移動することとなり、群集が示す流体のような動きを表現することができず、表現が不自然となる。
【0005】
このため、群集を構成する個々の個体の振る舞いを表現でき、なおかつ、群集としての自然な移動を表現できる技術の開発が望まれている。
【0006】
本発明の目的は、個体が群集となって移動を行う様子を表現する技術を提供することにある。
【0007】
【課題を解決するための手段】
上記課題を解決するため、本発明は、情報処理装置において、複数の個体からなる群集の移動を表現する方法であって、ある時点tにおける群集を構成する個体の数と、各個体の位置とを取得し、あらかじめ定められた配置規則にしたがって、次の時点t+1における各個体の群集内における位置を割り当てる段階と、ある時点tにおける群集を構成する個体の位置により定められる群衆の基準点について、目的方向を定める段階と、各個体について、上記配置処理により割り当てられた位置と上記目的方向に応じて次の時点t+1における位置を決定する段階とを有することを特徴とする群集の移動を表現する方法を提供する。
【0008】
【発明の実施の形態】
本発明の一実施形態について、図面を参照して説明する。
【0009】
本実施形態においては、エンタテインメント装置において、プレイヤが操作するキャラクタを、プレイヤの敵であるキャラクタが群集となって追いかけるという追跡ゲームに本発明を適用した場合を例とする。
【0010】
まず、本実施例に係るエンタテインメント装置10のハードウェア構成について図16を参照して説明する。図16は、エンタテインメント装置のハードウェア構成を示すブロック図である。
【0011】
本図に示すように、エンタテインメント装置10は、メインCPU100と、グラフィックスプロセッサ(GP)110と、I/Oプロセッサ(IOP)120と、CD/DVD読み出し部130と、サウンド再生処理プロセッサ(SPU)140と、サウンドバッファ141と、OS−ROM150と、メインメモリ160と、IOPメモリ170とを備える。
【0012】
そして、メインCPU100とGP110とは、専用バス101によって接続されている。また、メインCPU100とIOP120とは、バス102によって接続されている。また、IOP120とCD/DVD読み出し部130とSPU140とOS−ROM150とは、バス103に接続されている。
【0013】
メインCPU100には、メインメモリ160が接続され、IOP120には、IOPメモリ170が接続されている。さらに、IOP120には、コントローラ(PAD)180が接続される。
【0014】
メインCPU100は、OS−ROM150に格納されたプログラム、あるいは、CD/DVD−ROM等からメインメモリ160に転送されたプログラムを実行することによって、所定の処理を行う。
【0015】
GP110は、本エンタテインメント装置のレンダリング機能を受け持つ描画プロセッサであり、メインCPU100からの指示に従って、描画処理を行う。
【0016】
IOP120は、メインCPU100と、周辺装置、例えばCD/DVD読み出し部130、SPU140等との間のデータのやり取りを制御する入出力用サブ・プロセッサである。
【0017】
CD/DVD読み出し部130は、CD/DVDドライブに装着されたCD−ROM、DVD−ROMからデータを読み出し、メインメモリ160に設けられたバッファ領域161への転送を行う。
【0018】
SPU140は、サウンドバッファ141に格納された圧縮波形データ等を、メインCPU100等からの発音命令に基づいて、所定のサンプリング周波数で再生する。
【0019】
OS−ROM150は、起動時にメインCPU100およびIOP120が実行するプログラム等が格納されている不揮発性メモリである。
【0020】
メインメモリ160は、メインCPU100の主記憶装置であり、メインCPU100が実行する命令、および、メインCPU100が利用するデータ等が格納される。またメインメモリ160には、CD−ROM、DVD−ROM等の記録媒体から読み出されたデータを一時的に格納するバッファ領域161が設けられている。
【0021】
IOPメモリ170は、IOP120の主記憶装置であり、IOP120が実行する命令、および、メインCPU100が利用するデータ等が格納される。
【0022】
コントローラ(PAD)180は、プレイヤの指示を受付けるインタフェースである。コントローラ180は、複数の操作ボタン、操作レバーからなる操作部を有しており、それぞれの操作ボタン等が押下、あるいは操作レバーが傾けられた情報は、あらかじめ定められた信号によりメインCPU100に伝えられる。
【0023】
図17は、エンタテインメント装置10の使用状態を説明する図である。本図において、エンタテインメント装置本体11のコネクタ部12にコントローラ(PAD)180が接続される。また、エンタテインメント装置本体11の画像音声出力端子13には、画像音声出力用ケーブル14が接続される。このケーブル14の他端にはテレビ受信装置等の画像音声出力装置15が接続される。エンタテインメント装置のプレイヤは、コントローラ(PAD)180を用いて操作を指示する。エンタテインメント装置10は、コントローラ180を介して、プレイヤからの指示を受け付け、この指示に対応した画像データと音声データを、画像音声出力装置15に出力する。そして、画像音声出力装置15が画像と音声を出力する。
【0024】
次に、上記構成のエンタテインメント装置10において、メインCPU100が、エンタテインメント装置10内に装着されたCD/DVDから読み出されたアプリケーションプログラムを実行することで、実現される追跡ゲームについて説明する。
【0025】
追跡ゲームにおいて、プレイヤはエンタテインメント装置10に接続されたコントローラ180を使用して、操作対象オブジェクトであるプレイヤキャラクタを操作し、仮想的な世界を移動することができる。一方、仮想世界310にはプレイヤキャラクタの敵である敵キャラクタが複数存在している。敵キャラクタは、通常は単独で、プレイヤキャラクタを追いかけるが、近くに仲間である他の敵キャラクタを発見すると、群集を形成して、プレイヤキャラクタを追いかける。ここで、プレイヤキャラクタにとっての敵である敵キャラクタは、敵キャラクタ同士では仲間の関係となる。もちろん、敵キャラクタ内に複数のグループを設け、同じグループ内に属する敵キャラクタのみを仲間とするようにしてもよい。
【0026】
プレイヤはこれらの敵キャラクタにつかまらないようにプレイヤキャラクタを操作することでゲームを続けることができる。
【0027】
エンタテインメント装置10は、この仮想世界310を移動するプレイヤキャラクタと、敵キャラクタとを表現する画像を生成し、エンタテインメント装置10に接続された画像音声出力装置15の表示画面に表示する。
【0028】
図1は、エンタテインメント装置10上に構築される追跡ゲームを実現するためのソフトウェア構成を示したブロック図である。なお、この図に示す各構成要素は、CD/DVD読み出し部130により、エンタテインメント装置10内に装着されたCD/DVDから読み出され、メインメモリ160上に格納されたアプリケーションプログラムを、メインCPU100が実行することにより、具現化される。
【0029】
図1において、仮想世界DB205は、追跡ゲームが展開される仮想世界を形成するためのデータを格納する。
【0030】
ここで、図2で示すように、仮想世界310は、X−Y座標平面として管理される有限の2次元空間である。すなわち、仮想世界310における位置は座標(x,y)の形式で特定することができる。
【0031】
仮想世界は、X軸に平行な一定間隔の直線とY軸に平行な一定間隔の直線とによって区切られるブロックに分割されている。ここでは、図2に示す仮想世界310の左下を原点として、X軸Y軸に平行な直線を座標間隔10で設け、ブロックに分割するものとする。そして、Y軸に平行な直線で区切られる領域をX座標の小さいほうからX1、X2・・・とし、X軸に平行な直線で区切られる領域をY座標の小さいほうからY1、Y2・・・とする。このように定義したことで、例えば、左下のブロックはX1Y1として特定することできるように、個々のブロックは、XnYmの形式で特定することができる。
【0032】
各ブロックは、図3に一例を示すようなデータ構造を有している。
【0033】
本図においてブロックIDは、ブロックを特定するためのXnYm形式によるデータである。
【0034】
ブロック属性は、ゲーム構成上の仮想世界310の地理的情報を定めるためのブロック属性を定める情報で、例えば道、川、丘、草原等を表すコードとすることができる。
【0035】
表示用データは、ブロックを表示するための画像データである。画像生成部204は本データを用いて、仮想世界310の画像を生成する。
【0036】
図1において、操作内容受付部201は、コントローラ180が受付けたプレイヤの指示にしたがい、プレイヤの操作対象オブジェクトであるプレイヤキャラクタの仮想世界310における移動方向を決定する。この処理は定期的に行われる。
【0037】
ここで、プレイヤキャラクタの移動方向は、上下左右の方向をコントローラ180に設けられた特定の操作ボタンあるいは操作レバーに対応させ、そのボタン等の操作を受付けることで決定する。
【0038】
図1において、プレイヤキャラクタ位置算出部202は、仮想世界310におけるプレイヤの操作対象オブジェクトであるプレイヤキャラクタの位置を算出する処理を行う。この処理は定期的に行われる。
【0039】
具体的には、前回算出したプレイヤキャラクタの仮想世界310における位置と操作内容受付部201で決定されたプレイヤキャラクタの最新の移動方向と、あらかじめ定められたプレイヤキャラクタの移動速度とから、現時点でのプレイヤキャラクタの仮想世界310における位置を算出する。
【0040】
画像生成部204は、仮想世界310の表示用データに、プレイヤキャラクタおよび敵キャラクタの表示用データを重ね合わせて、2次元画像を生成する。
【0041】
表示制御部206は、画像生成部204で生成された2次元画像をビデオ信号に変換し、エンタテインメント装置10に接続された画像音声出力装置15の表示画面に表示する。
【0042】
オブジェクト制御部203は、敵キャラクタオブジェクトの仮想世界310内における移動を制御する。その詳細について説明する。
【0043】
敵オブジェクト制御部203が制御する対象には、単独で行動する場合の敵キャラクタオブジェクトと、敵キャラクタから構成される群集オブジェクトとがある。敵オブジェクト制御部203は、制御するオブジェクトをオブジェクトリストで管理する。図4(a)は、オブジェクトリストの一例を示す図である。本図において、敵オブジェクト制御部203は、敵キャラクタオブジェクトE001とE002とE003とE004とE005とを管理している。
【0044】
ここで、仮に敵キャラクタオブジェクトE001とE002とE003とが群集を構成し、群集オブジェクトG001となったとすると、オブジェクト制御部203は、図4(b)に示すように、オブジェクトリストからE001とE002とE003とを削除し(削除したIDは、図9の敵キャラクタリスト281に追加する。詳細については後述する。)、群集オブジェクトG001をオブジェクトリストの先頭に追加する。
【0045】
この後、群集オブジェクトG001から敵オブジェクトE003が分離したときは、図4(c)に示すようにオブジェクト制御部203は、オブジェクトリストに敵オブジェクトE003を追加する。そして、敵キャラクタオブジェクトE003は単独で行動する。なお、敵キャラクタが群集を構成する場合および群集から敵キャラクタが分離する場合等の条件については後述する。
【0046】
本実施形態において、敵キャラクタは個々の独立したオブジェクトとして管理される。そして、あらかじめ定められた行動基準に基づいて移動を行う。行動基準はルール化され、敵キャラクタオブジェクトに共通に適用される。以下にその行動基準について図面を用いて説明する。
【0047】
図5は、敵キャラクタオブジェクトが管理するデータ構造の一例を模式的に説明するための図である。
【0048】
本図に示すように、敵キャラクタオブジェクトは、データとしてオブジェクトID261と、モード262と、存在位置263と、標準速度264とを有している。
【0049】
オブジェクトID261は、敵キャラクタオブジェクトを識別するためのコードで、例えばE001、E002とすることができる。
【0050】
モード262は、敵キャラクタが個体として行動しているか、群集の中の一員として行動しているかを識別するためのデータで、個体モードと群集モードの2つの状態がある。敵キャラクタは初期状態においては、個体モードとして行動しているが、他の敵キャラクタを発見すると、その敵キャラクタと群集を形成し、群集モードに遷移する。
【0051】
存在位置263は、仮想世界310内における敵キャラクタが存在している位置を表す座標データで、前回の存在位置と移動方向と移動速度とに基づいて、例えばΔtごとの定期的に算出される。
【0052】
標準速度264は敵キャラクタが移動するとき速度の基準値を表すあらかじめ定められた値である。例えば、Δtあたり仮想世界310の座標で10とすることができる。
【0053】
敵キャラクタは、モード262によって行動のパターンが変化する。
【0054】
まず、敵キャラクタオブジェクト(敵キャラクタ)の個体モードでの行動について説明する。
【0055】
個体モードである敵キャラクタは、時刻tにおいて、この仮想世界310上の、現在位置で定められる位置に存在しているものとする。そして、時間間隔Δtごとに離散的に位置を変えるものとする。ただし、Δtは、敵キャラクタが連続して移動しているようにプレイヤに認識される程度に短い時間とする。このときの移動距離は敵キャラクタの移動速度により定められる。この、敵キャラクタの移動速度は、標準速度に基づいて定められる。例えば、キャラクタが存在している座標点を含むブロックの属性が道であれば、移動速度=標準速度とし、属性が草原であれば移動速度=標準速度×0.8などと、キャラクタの存在するブロックの属性に応じて変化させることができる。さらに、プレイヤキャラクタを追いかけるときには速度を早くするように変化させることもできる。
【0056】
図6(a)は敵キャラクタの移動の様子を説明するイメージ図である。本図において敵キャラクタ300a、300b…は、2次元の仮想世界310を移動する。本図において実線円はある時刻tにおける敵キャラクタ300の位置で、破線円は時刻t+Δtにおける敵キャラクタ300の位置である。
【0057】
図7は敵キャラクタが個体モードとして行動するときの1ターンにおける処理を説明するフローチャートである。ここで、1ターンとは、時刻tにおけるオブジェクトごとの処理単位で、敵オブジェクト制御部203により制御される。
【0058】
敵キャラクタ300は、個体モードとして行動するとき、存在している位置を基準に図6(b)で示すようなサーチエリア301を有している。このサーチエリア310は、仮想世界310の敵キャラクタが存在している位置の座標を中心とした半径aの円内の領域とすることができる。
【0059】
敵キャラクタ300は、サーチエリア301内における、プレイヤのキャラクタ350および他の敵キャラクタ300aの存在を検出することができる(S101)。具体的には、オブジェクトリストに登録されているキャラクタの存在位置263を参照して、敵キャラクタ300の存在位置263の座標を中心とした半径aの円の中に、プレイヤキャラクタあるいは他の敵キャラクタの存在位置263があるかどうかを判断できる。
【0060】
そして、サーチエリア内に他の敵キャラクタが存在していることを検出すると、敵キャラクタは他の敵キャラクタと群集を形成する(S107)。この処理については後述する。
【0061】
一方、サーチエリア内にプレイヤキャラクタが存在していることを検出すると(S102)、敵キャラクタは、プレイヤキャラクタの座標と自己の座標の位置関係から目的方向を定める(S103)。ここで、定められる目的方向はプレイヤキャラクタが存在する方向とする。すなわち、敵キャラクタは、プレイヤキャラクタの存在している座標を取得して、プレイヤキャラクタを追いかける方向に目的方向を設定することとなる。
【0062】
次に、敵キャラクタは、移動速度を定める(S105)。移動速度は、例えば、標準速度の1.2倍とすることができる。また、前述のように、敵キャラクタが存在しているブロックの属性252に応じて変化させることとしてもよい。
【0063】
そして、定めた目的方向と、移動速度とにより時刻t+Δtの座標を算出する(106)。そして、その座標を現在位置に設定して時刻tにおけるターンを終了する。
【0064】
敵キャラクタは、サーチエリア内に他の敵キャラクタおよびプレイヤキャラクタのいずれをも検出しないときは、任意に、例えば乱数を用いて、目的方向を定める(S104)。このとき、移動の様子を不自然にしないため、時刻tにおける目的方向とあまり変わらないような方向に設定することが望ましい。
【0065】
次に、敵キャラクタは、移動速度を定める(S105)。移動速度は例えば標準速度とすることができる。もちろん、前述のようにブロックの属性252に応じて変化させることとしてもよい。
【0066】
そして、定めた目的方向と、移動速度とにより時刻t+Δtの座標を算出する(S106)。そして、その座標を現在位置に設定して時刻tにおけるターンを終了する。
【0067】
以上のように、1の敵キャラクタの時刻tにおける1ターンが終了する。すなわち敵キャラクタは時刻tにおける1ターンで、群集を形成するか、時刻t+Δtにおける現在位置に移動するかのいずれかの行動を行う。
【0068】
この行動は、時刻tにおいて個体モードにあるすべての敵キャラクタが順番に行う。このときの制御方法について説明する。
【0069】
オブジェクト制御手段は、前述のように図4(a)に示すようなオブジェクトリストを管理する。そして、時刻tにおいて、オブジェクトリストに記録されている敵キャラクタオブジェクトに対し、順番に1ターンにおける処理を行わせる。例えば、本図のように、オブジェクトリストに敵キャラクタE004、敵キャラクタE005が掲載されていたとすると、時刻tにおいて、まず、敵キャラクタE004に前述の1ターンの処理を行わせる。このターンが終了すると、次に敵キャラクタE005に1ターンの処理を行わせる。そして、敵キャラクタE005のターンが終了すると、時刻tにおける処理を終了する。
【0070】
この処理をΔtごとに行うことにより、敵キャラクタE004と敵キャラクタE005を連続的に行動させることができる。なお、図4(b)(c)に示すように、オブジェクトリストに群集オブジェクトが掲載されている場合には、時刻tにおける敵キャラクタオブジェクトのターンを行わせる前に、時刻tにおける群集オブジェクトのターンが行われるが、この処理については後述する。
【0071】
前述のように、サーチエリア内に他の敵キャラクタが存在することを検出すると、敵キャラクタは、サーチエリア内に存在する敵キャラクタと群集を形成する(S107)。
【0072】
このときの群集を形成する処理について図8を参照して説明する。本例では、図8(a)に示すように、敵キャラクタA(E006)が、時刻tにおけるターンで、サーチエリア301内に存在する敵キャラクタB(E007)と敵キャラクタC(E008)とを検出して、3体で群集を形成するものとする。
【0073】
まず、オブジェクト制御手段203は、敵キャラクタAから通知をうけ、図8(b)に示すように、サーチエリア301内に存在する敵キャラクタについての仮想リーダたる群集オブジェクトG(G002)302を作成する。そして、オブジェクトリストの先頭に群集オブジェクトGのIDであるG002を追加し、群集オブジェクトを構成する敵キャラクタA、敵キャラクタB、敵キャラクタCのIDをオブジェクトリストから削除する。さらに、敵キャラクタA、敵キャラクタB、敵キャラクタCのモード262を、個体から群集に変更する。そして、敵キャラクタAの時刻tにおけるターンを終了する。
【0074】
ここで、群集オブジェクトについて説明する。
【0075】
群集オブジェクトは仮想オブジェクトであり、表示は行わない。そして、群集オブジェクトの位置は、図8(c)に示すように、その群集を構成する敵キャラクタの位置の中心点(仮想世界310上における重心座標)とする。すなわち、時刻tにおける群集オブジェクトの位置は、群集を構成する敵キャラクタの時刻tにおける位置により定まる。なお、プレイヤの選択に応じて、群集オブジェクトを敵オブジェクトとは区別される図形で表示するようにしてもよい。
【0076】
さらに、群集オブジェクトは、その群集を構成する敵キャラクタの数情報と位置情報を有している。図9は、群集オブジェクトが管理する情報のデータ構造を模式的に説明する図である。
【0077】
本図において群集オブジェクトは、群集オブジェクトを識別するための群集オブジェクトID271と、群集を構成する敵キャラクタの数272と、群集オブジェクトの存在位置273とを管理している。
【0078】
加えて、群集オブジェクトは、敵キャラクタの数272に応じて、それぞれの敵キャラクタのIDと存在位置とを管理する情報を有している。敵キャラクタの存在位置を管理する情報は、本例においては、281aで敵キャラクタAのIDと存在位置とを管理し、281bで敵キャラクタBのIDと存在位置を管理し、281bで敵キャラクタCのIDと存在位置を管理しているものとする。一方、これらの敵キャラクタの存在位置情報を基に、群集オブジェクトの存在位置273の値が定められる。これらの敵キャラクタの情報は、群集形成時、その直前の敵キャラクタの情報を取得することで初期値を形成することができる。
【0079】
前述のようにオブジェクト制御部203は、時刻tにおけるオブジェクトリストに群集オブジェクトが掲載されている場合には、時刻tにおける個体モードの敵キャラクタオブジェクトのターンを行わせる前に、時刻tにおける群集オブジェクトのターンを行わせる。以下に、群集オブジェクトが1ターンで行う処理について図10のフローチャートを参照して説明する。
【0080】
ここでは、敵キャラクタA、敵キャラクタB、敵キャラクタCとから構成される群集オブジェクトGを例にする。
【0081】
まず、群集オブジェクトGは、その群集を構成する敵キャラクタの数262の情報を取得して(S201)、その情報に基づき敵キャラクタの配置情報を作成する(S202)。このときの処理について図11を参照して説明する。
【0082】
まず、群集オブジェクトGは、配置形状を定める。配置形状を定めるルールは任意であるが、ここでは、群集の形状を見栄えよく表現するルールを用いるものとする。そのルールについて説明する。
【0083】
群集オブジェクトGは、図11(a)に示すように、群集オブジェクトGの位置を中心に所定の半径を有する複数の同心円を仮定する。同心円は中心点に近い方から第1層303a、第2層303b…とする。なお、この同心円の大きさは固定とすることも、可変とすることもできる。可変とする場合には例えば、群集オブジェクトの存在しているブロックの属性に応じて変化させたり、プレイヤの操作内容に応じて変化させることができる。
【0084】
そして、例えば、図11(b)に示すように、第1層303aには6体まで、第2層には12体までの敵キャラクタが配置できるものとする。以下同様にN層には3×2N体までの敵キャラクタが配置できるものとする。
【0085】
この場合において、群集オブジェクトGは、群集を構成する敵キャラクタを、第1層303aから順番に分配していく。すなわち、群集を構成する敵キャラクタが2〜6体のときは、すべてを第1層に分配する。敵キャラクタが7体〜18体のときは、6体を第1層303aに分配し、残りの敵キャラクタを第2層303bに分配する。以下同様に中心点に近い層から順番に分配していく。なお、この時点においては、どの敵キャラクタがどの層に配置されるかは未確定である。
【0086】
次に、群集オブジェクトは、敵キャラクタが配置された層に関して、各敵キャラクタ同士の間隔が等しくなるように配置を定める。例えば、群集オブジェクトGを構成する敵キャラクタが4体で、第1層303aにすべての敵キャラクタが分配されたとすると、同心円上で、これらの間隔が等しくなるよう配置を行うと、図11(c)に示すように4体の敵キャラクタが同心円上で正方形を描くような配置になる。同様に、6体では同図(d)に示すように正六角形、10体では同図(e)に示すように2層構造となり、第1層303aは正六角形、第2層303bは正方形を描くような配置となる。
【0087】
次に、群集オブジェクトGは、群集を構成する敵キャラクタのそれぞれに対して、上記のように定められた配置を割り当てる。群集オブジェクトは、敵キャラクタの位置と、定められた配置とを比較して、どの敵キャラクタをどの配置に割り当てるかを定める。割り当て方法は任意であるが、例えば、各敵キャラクタの現在位置を参照して、全体として最も移動距離が短くなるように割り当てるようにすることができる。あるいは、敵キャラクタと、配置に識別番号を付し、番号順に割り当てを行うようにしてもよい。ここでは、それぞれの配置位置に、最も近くにいる敵キャラクタを割り当てることとする。
【0088】
この処理により、各敵キャラクタの配置割り当てを定めると、群集オブジェクトは、その割り当て情報を各敵キャラクタに通知する。これにより、敵キャラクタは自身が、仮想平面上のどの位置(座標)に割り当てられたかを知ることができる。
【0089】
なお、仮想世界310のブロック属性に応じて、割り当て位置を制限することもできる。例えば、ブロックの属性が川であると、そのブロックには敵キャラクタを配置できないようなルールを用いてもよい。
【0090】
次に、群集オブジェクトは、目的方向を定める処理を行う(S203)。群集オブジェクトの目的方向は、プレイヤキャラクタの存在している方向とする。例えば、時刻tにおいて、図12に示すように、群集オブジェクトの存在位置が(x1,y1)で、プレイヤキャラクタの存在位置が(x2,y2)であったとすると、群集オブジェクトの目的方向は、目的方向とX軸とのなす角をθとすると、
θ=tan−1(y2−y1)/(x2−x1)
となる(ただしx2≠x1、x2=x1の場合はθ=90°)。
【0091】
群集オブジェクトは、この目的方向を、群集オブジェクトを構成する各敵キャラクタに通知する。
【0092】
なお、群集オブジェクトがプレイヤキャラクタの存在している位置を検索する処理は、例えば、群集オブジェクトが存在しているブロックを中心に、所定の距離範囲内のブロックを順番に検索して、プレイヤキャラクタがそのブロック内に存在しているかどうかを判断することにより行うことができる。この結果、検索範囲内のブロックでプレイヤキャラクタを発見した場合は、その方向を目的方向とすることができる。一方、プレイヤキャラクタを発見できなかった場合は、直前の目的方向を維持する、ランダムに目的方向を変える等の処理を行って、目的方向を定めることができる。
【0093】
群集オブジェクトは、この目的方向を定めるだけで、群集オブジェクト自身は主体的に移動は行わない。群集オブジェクトの位置は、群集オブジェクトを構成する敵キャラクタの中心点であるからである。したがって、群集オブジェクトは、群集オブジェクトを構成する個々の敵キャラクタが移動することにより結果的に移動することになる。
【0094】
以下に群集を構成する敵キャラクタの移動について説明する。
【0095】
群集を構成し、群集モードにある敵キャラクタは、前述のように、群集オブジェクトから仮想平面上のどの座標に割り当てられたかという配置情報と目的方向に関する情報を得ている。
【0096】
群集を構成する敵キャラクタは、この配置情報と目的方向から時刻t+Δtの存在位置が定まる(S204)。
【0097】
群集を構成する敵キャラクタの移動は時刻tにおける群集オブジェクトのターンの、子ターンとして処理される。すなわち、ターンは入れ子構造を有している。例えば、群集オブジェクトGが、敵キャラクタA、敵キャラクタB、敵キャラクタCから構成されているとすると、オブジェクト制御部203から与えられた群集オブジェクトGのターン中において、群集オブジェクトGは、敵キャラクタA・B・Cに対し、順番にターン(群集オブジェクトGのターンにおける子ターン)を行わせる。
【0098】
ここで、敵キャラクタAを例に、子ターンにおける敵キャラクタの移動処理の一例について図13を用いて説明する。
【0099】
群集モードにある敵キャラクタAは、時刻tに仮想平面上の座標(x1,y1)に存在したとする。そして、群集オブジェクトから配置情報(x3,y3)と、目的方向θが与えられたとする。このとき敵キャラクタAの時刻t+Δtにおける存在位置は以下のように定められる。
【0100】
ここで、簡単のため仮想世界310の座標とは別の座標系を考え、図13(a)に示すように、時刻tにおける敵キャラクタの存在位置(x1,y1)を(0,0)として、目的方向をθ=90°とする。
【0101】
まず、敵キャラクタAは、配置情報が、目的方向を基準として、前方であるか、後方であるかを判断する。本例の場合は、配置情報(x3,y3)のy3が0以上であるか、0未満であるかを判断する。
【0102】
そして、配置情報の座標が、目的方向を基準として前方であると判断したときは、速い移動速度、例えば、移動速度=基準速度×1.2で、配置情報の座標(x3,y3)の方向に、移動速度×Δtの距離だけ移動する。そして、図13(b)に示すように、その結果得られる座標を、時刻t+Δtにおける存在位置とする。
【0103】
なお、本図において実線の円Aは時刻tにおける敵キャラクタAの位置で、破線の円Aは時刻t+Δtにおける敵キャラクタAの位置を表している。
【0104】
一方、配置情報の座標が、目的方向を基準として後方であると判断したときは、遅い移動速度、例えば、移動速度=基準速度×0.6で、座標(x3,0)の方向に、移動速度×Δtの距離だけ移動する。すなわち、目的方向に対して後退しないで、配置情報の座標(x3,y3)に近づくように移動を行う。そして、図13(c)に示すように、その結果得られる座標を、時刻t+Δtにおける存在位置とする。
【0105】
同様の、移動処理を敵キャラクタB、敵キャラクタCも行うことにより(S205)、群集オブジェクトGの時刻tにおけるターンが終了する。
【0106】
そして、オブジェクトリストに別の群集オブジェクトが登録されている場合には、その群集オブジェクトに対しても同様のターンを行わせる(S206)。
【0107】
時刻tのターン終了後、時刻t+Δtにおける群集オブジェクトGのターンで、群集オブジェクトGは、群集を構成する敵キャラクタA、敵キャラクタB、敵キャラクタCの時刻t+Δtにおける存在位置とから、自己の存在位置を求める。そして、配置情報と目的方向を上述のように定め、群衆を構成する敵キャラクタに通知する。このような処理を繰り返すことにより、群集としてプレイヤキャラクタを追いかける様子を、エンタテインメント装置上で表現することができる。
【0108】
図14は、時刻tから時刻t+Δtで、敵キャラクタA、敵キャラクタB、敵キャラクタCが群集として移動する様子を表した図である。本図において実線の円A、円B、円Cは時刻tにおける敵キャラクタの位置を表し、点線の円A、円B、円Cは時刻t+Δtにおける敵キャラクタの位置を表している。本図に示すように、敵キャラクタが群集を構成しながら目的方向の移動している様子が表現できている。
【0109】
以上の例は、簡単のため、存在位置(x1,y1)を(0,0)として、目的方向をθ=90°としたが、この関係は、現在位置を原点とし、目的方向にY軸を一致させた仮想的な座標軸を設定し、座標変換を施すことで一般化できる。
【0110】
なお、上記の敵キャラクタの移動処理は一例であり、本発明の移動処理は本例に限られない。例えば、配置情報の座標が、目的方向を基準として前方であると判断したときは、図15(a)に示すように、目的方向と配置情報の座標方向とを合成した方向に移動させるようにしてもよい。また、配置情報の座標が、目的方向を基準として後方であると判断したときでも、図15(b)に示すように、目的方向に対して前進させるようにしてもよい。このようにすることで、よりプレイヤキャラクタを追いかける様子を表現することができる。
【0111】
次に、群集の状態変化について説明する。群集は個体から形成されるが、ある群集を構成する個体は動的に変化する。
【0112】
まず、個体で行動している敵キャラクタが、群集に吸収される場合について説明する。個体で行動している敵キャラクタは、ターン中に自身の存在位置を中心とした半径bの円内に、群集オブジェクトを検知すると、群集に吸収される。
【0113】
具体的には、オブジェクト制御部203が、オブジェクトリストから、その敵キャラクタのIDを削除するとともに、群集オブジェクトが管理する敵キャラクタの数272に1を加え、その敵キャラクタのIDと、存在位置に関する情報を追加する。そして、敵キャラクタのモードを群集モードに変更する。この処理により、個体で行動していた敵キャラクタが、群集に吸収されることになる。
【0114】
次に、群集を構成してい敵キャラクタが、群集から分離する場合について説明する。群集として行動している敵キャラクタは、子ターン中に自身の存在位置と群集の位置との距離がb以上になると、群集から分離して、固体として行動するようになる。
【0115】
具体的には、オブジェクト制御部203が、オブジェクトリストに、その敵キャラクタのIDを追加するとともに、群集オブジェクトが管理する敵キャラクタの数272から1を引き、その敵キャラクタのIDと、存在位置に関する情報を削除する。そして、敵キャラクタのモードを個体モードに変更する。この処理により、群集として行動していた敵キャラクタが、群集から分離することになる。
【0116】
なお、吸収と分離の基準となる距離bの大きさは、例えば、仮想世界310の座標においてある値に固定させてもよいし、群集の大きさに応じて変化させるようにしてもよい。このようにすることで、群集が大きければ、敵キャラクタを吸収しやすくしたり、群集が小さければ、敵キャラクタが分離しやすくすることができる。
【0117】
また、プレイヤキャラクタを追いかける群集について、一定の条件下で複数の群集に分散してプレイヤキャラクタを追いかけるようにしてもよい。このときの処理について説明する。
【0118】
上述のように、群集オブジェクトの目的方向は、プレイヤキャラクタの存在している方向であるから、通常は、群集としてはプレイヤキャラクタに向ってまっすぐ追いかけることとなる。
【0119】
しかし、前述のように、仮想世界310のブロック属性に、例えば池のように敵キャラクタが通ることのできない属性を設定した場合は、このブロックを避けなければならないため、プレイヤキャラクタを追いかけるルートが複数存在することがある。
【0120】
図18は、このときの様子の一例を説明する図である。本図において、群集オブジェクト401が、プレイヤキャラクタ402を追いかけている。斜線で示した4つのブロックからなるエリア410は、敵キャラクタが通ることのできない属性を有している。通常、群集オブジェクト401の目的方向は破線411で示すように、プレイヤキャラクタ402の存在する方向を向くが、本図の場合、エリア410は通ることができないため、ルート412とルート413の2通りのルートが候補として挙げられる。
【0121】
オブジェクト制御部203は、このような場合に群集Gを分割させる処理を行う。すなわち本例の場合では、群集401を、ルート412を通る第1の群衆と、ルート413を通る第2の群集とに分割する。もちろん3つ以上のルートが候補として挙げられる場合は、3つ以上の群集に分割させることができる。
【0122】
ここで、候補ルートの検索は、例えば、障害物を避けるのに可能な手段、本図の例では、池410の上側を通る手段と、池410の下側を通る手段のそれぞれについての最短ルートを候補ルートと決定することができる。
【0123】
分割に際して、群集を構成する敵キャラクタの分配方法については、種々の方法を取ることができる。例えば、群集オブジェクトを構成する敵キャラクタの数を等分して、それぞれ新たな群集を構成させること、あるいは、それぞれのルートのプレイヤキャラクタまでの距離の比、または、距離に反比例するような数に分配して、それぞれ新たな群集を構成させることができる。
【0124】
オブジェクト制御部203は、分割処理において、分割前の群集オブジェクトをオブジェクトリストから削除し、分割した群集オブジェクトをオブジェクトリストに追加し、群集を構成する敵キャラクタについての情報を付加する。
【0125】
このとき、分割された群集に係る敵キャラクタは、一定時間の間は、新たに群集を形成する行動をとらないようにさせる必要がある。そうしなければ、分割直後に、再び群集が合流してしまう可能性があるからである。
【0126】
また、例えば、ルート412を通った場合と、ルート413を通った場合とで、プレイヤキャラクタまでの移動距離の差が大きい場合、例えば、一方のルートが、他方のルートの1.5倍以上の距離があるような場合には、群集を分割しないようにしてもよい。
【0127】
エンタテインメント装置10の外観およびハードウェア構成は図16、図17に示したものに限定されない。エンタテインメント装置10は、例えば、CPUとメモリとハードディスク装置などの外部記憶装置と、CD/DVD−ROM等の可搬性を有する記憶媒体からデータを読み取る読取装置と、キーボード、マウス等の入力装置と、ディスプレイ等の表示装置と、インターネット等のネットワークを介して通信を行うためのデータ通信装置と、上述した各装置間のデータ送受信をつかさどるインタフェースといった、一般的な情報処理装置の構成を有するものであってもよい。この場合、エンタテインメント装置10上に、図1に示すソフトウェア構成を構築するためのプログラム、データは、読取装置を介して、可搬性を有する記憶媒体から読み出され、メモリ、外部記憶装置に記憶されるようにしてもよいし、あるいは、データ通信装置を介して、ネットワークからダウンロードされ、メモリ、外部記憶装置に記憶されるようにしてもよい。
【0128】
なお、本発明の表現技術は、前述した例に限られず、多くの集合体の運動表現に適用することができる。例えば、魚群、鳥群、昆虫等の群れの運動画像表現にも適用できる。
【0129】
【発明の効果】
上述のように、本発明によれば、個体が群集となって移動を行う場合の各個体の振る舞いと、群集としての自然な移動の様子を、情報処理装置において表現することができる。
【図面の簡単な説明】
【図1】エンタテインメント装置上に構築される追跡ゲームを実現するためのソフトウェア構成を示したブロック図である。
【図2】仮想世界を説明する図である。
【図3】仮想世界のブロックのデータ構造を説明する図である。
【図4】オブジェクトリストの例を説明する図である。
【図5】敵キャラクタオブジェクトが管理するデータ構造の一例を模式的に説明するための図である。
【図6】敵キャラクタの移動の様子を説明する図である。
【図7】敵キャラクタが個体モードとして行動するときの1ターンにおける処理を説明するフローチャートである。
【図8】敵キャラクタが群集を構成するときの処理について説明するイメージ図である。
【図9】群集オブジェクトが管理する情報を模式的に説明する図である。
【図10】群集オブジェクトが1ターンで行う処理について説明するフローチャートである。
【図11】群集オブジェクトが敵キャラクタの配置情報を作成する処理について説明する図である。
【図12】群集オブジェクトの目的方向について説明する図である。
【図13】敵キャラクタの子ターンにおける移動処理の一例について説明する図である。
【図14】時刻tから時刻t+Δtで、敵キャラクタA、敵キャラクタB、敵キャラクタCが群集として移動する様子を表した図である。
【図15】敵キャラクタの子ターンにおける移動処理の別例について説明する図である。
【図16】エンタテインメント装置のハードウェア構成を示すブロック図である。
【図17】エンタテインメント装置の使用状態を説明する図である。
【図18】群集が分割する処理について説明する図である。
【符号の説明】
201…操作内容受付部、202…プレイヤキャラクタ位置算出部、203…オブジェクト制御部、204…画像生成部、205…仮想世界DB、206…表示制御部
Claims (9)
- 情報処理装置において、複数の個体からなる群集の移動を表現する方法であって、
ある時点tにおける群集を構成する個体の数と、各個体の位置とを取得し、あらかじめ定められた配置規則にしたがって、次の時点t+1における各個体の群集内における位置を割り当てる段階と、
ある時点tにおける群集を構成する個体の位置により定められる群集の基準点について、目的方向を定める段階と、
各個体について、上記配置処理により割り当てられた位置と上記目的方向に応じて次の時点t+1における位置を決定する段階と、
を有することを特徴とする群集の移動を表現する方法。 - ある時点tにおける群集を構成する個体の数と、各個体の位置とを取得し、あらかじめ定められた配置規則にしたがって、次の時点t+1における各個体の群集内における位置を割り当てる配置処理と、
ある時点tにおける群集を構成する個体の位置により定められる群集の基準点について、目的方向を定める処理と、
各個体について、上記配置処理により割り当てられた位置と上記目的方向に応じて次の時点t+1における位置を決定する処理と
を情報処理装置に実行させるためのプログラム。 - ある時点tにおける群集を構成する個体の数と、各個体の位置とを取得し、あらかじめ定められた配置規則にしたがって、次の時点t+1における各個体の群集内における位置を割り当てる配置手段と、
ある時点tにおける群集を構成する個体の位置により定められる群集の基準点について、目的方向を定める手段と、
各個体について、上記配置処理により割り当てられた位置と上記目的方向に応じて次の時点t+1における位置を決定する手段と
を有することを特徴とする情報処理装置。 - 仮想世界中を移動する複数のキャラクタの動画像を、表示装置に表示するためのプログラムであって、
それぞれのキャラクタが、個体として行動するか、群集として行動するかを決定するモード決定処理と、
群集として行動すると決定した場合には、その群集を構成するキャラクタ群を特定して、そのキャラクタ群に対して移動に関する移動情報を与える仮想オブジェクトを、特定されたキャラクタ群のそれぞれの位置に基づいて生成する仮想オブジェクト生成処理と、
特定されたそれぞれのキャラクタの仮想世界中における割り当て位置を定める配置処理と、
前記移動情報および割り当て位置に基づいて、キャラクタ群を移動させる群集移動処理と
を、情報処理装置に実行させることを特徴とするプログラム。 - 請求項4記載のプログラムであって、
前記移動情報は、仮想オブジェクトの目的方向に関する情報であること
を特徴とするプログラム。 - 請求項5記載のプログラムであって、
操作装置を介して受付けた操作者の操作内容にしたがい仮想世界中を移動する操作者キャラクタの動画像を表示装置の表示画面上に表示する操作者キャラクタ表示処理を情報処理装置にさらに実行させ、
前記仮想オブジェクトの目的方向は、仮想世界中の前記操作者キャラクタを追いかける方向であることを特徴とするプログラム。 - 請求項4〜6のいずれか一項に記載のプログラムであって、
前記モード決定処理により、あるキャラクタに対して個体として行動すると決定した場合には、仮想世界中において、そのキャラクタを移動させるキャラクタ移動処理と、
そのキャラクタの仮想世界中における位置に応じた、あらかじめ定められた範囲の領域内に、他のキャラクタが存在しているかどうかを判断するキャラクタサーチ処理と、
他のキャラクタが存在していると判断した場合には、当該他のキャラクタと群集を形成する行動を行わせる群集形成処理と
を情報処理装置にさらに実行させることを特徴とするプログラム。 - 請求項4〜7のいずれか一項に記載のプログラムであって、
前記仮想世界中におけるキャラクタの割り当て位置は、群集を形成するキャラクタ群の仮想世界中における位置に基づいて定められる基準点を中心とした一の円上または複数の同心円上の位置であって、同一円上のキャラクタ同士が等間隔になるような位置であることを特徴とするプログラム。 - 請求項2、4〜8のいずれか一項に記載のプログラムを記録した情報処理装置読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001182693A JP3581673B2 (ja) | 2000-06-16 | 2001-06-18 | 群集の移動を表現する方法、記憶媒体、および情報処理装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000181045 | 2000-06-16 | ||
JP2000-181045 | 2000-06-16 | ||
JP2001182693A JP3581673B2 (ja) | 2000-06-16 | 2001-06-18 | 群集の移動を表現する方法、記憶媒体、および情報処理装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004035114A Division JP2004167273A (ja) | 2000-06-16 | 2004-02-12 | 群集の移動を表現する方法、記憶媒体、および情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002074396A JP2002074396A (ja) | 2002-03-15 |
JP3581673B2 true JP3581673B2 (ja) | 2004-10-27 |
Family
ID=26594069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001182693A Expired - Fee Related JP3581673B2 (ja) | 2000-06-16 | 2001-06-18 | 群集の移動を表現する方法、記憶媒体、および情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3581673B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4040050B2 (ja) * | 2005-03-30 | 2008-01-30 | 株式会社コナミデジタルエンタテインメント | プログラム、キャラクタ制御方法、ならびに、キャラクタ制御装置 |
JP4808992B2 (ja) * | 2005-05-12 | 2011-11-02 | 任天堂株式会社 | ゲームプログラム、ゲーム装置、ゲームシステムおよびゲーム処理方法 |
JP4771821B2 (ja) * | 2006-02-02 | 2011-09-14 | 株式会社バンダイナムコゲームス | プログラム、情報記憶媒体、及び画像生成システム |
KR100885996B1 (ko) * | 2006-12-02 | 2009-03-03 | 한국전자통신연구원 | 대규모 가상 군중 동작의 획득 및 편집 방법 및 그 장치 |
KR100895199B1 (ko) | 2007-11-07 | 2009-04-24 | 에스케이 텔레콤주식회사 | 가상 공간에서의 캐릭터 이동 경로 설정 방법 및 시스템 |
JP4881974B2 (ja) * | 2009-05-26 | 2012-02-22 | 株式会社コナミデジタルエンタテインメント | 画像処理装置、画像処理方法、ならびに、プログラム |
KR101053395B1 (ko) * | 2009-06-11 | 2011-08-01 | 서울대학교산학협력단 | 동기화된 복수의 캐릭터의 동작 편집 시스템 및 방법 |
JP4809499B2 (ja) * | 2011-04-04 | 2011-11-09 | 任天堂株式会社 | ゲームプログラムおよびゲーム装置 |
CN110298908A (zh) * | 2019-05-16 | 2019-10-01 | 浙江万里学院 | 一种易于群体队形变换的位置采样方法 |
-
2001
- 2001-06-18 JP JP2001182693A patent/JP3581673B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002074396A (ja) | 2002-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11794109B2 (en) | Method and system for saving a snapshot of game play and used to begin later execution of the game play by any user as executed on a game cloud system | |
JP5887458B1 (ja) | プレイヤの移動履歴に基づいてノンプレイヤキャラクタの経路探索を行うゲームシステム等 | |
EP1164541A2 (en) | Method of expressing crowd movement in game, storage medium, and information processing apparatus | |
JP5076132B1 (ja) | 描画制御装置、その制御方法、プログラム、記録媒体、描画サーバ、及び描画システム | |
JP4125760B2 (ja) | ビデオゲーム処理装置、ビデオゲーム処理方法、およびビデオゲーム処理プログラム | |
EP2332622B1 (en) | Sound generation apparatus, sound generation method and sound generation program | |
JP2018028789A (ja) | サーバ、情報の送信方法及びそのプログラム | |
US11379104B2 (en) | Sharing user interface customization across applications | |
JP2017055995A (ja) | プログラム、ゲーム装置およびサーバシステム | |
JP3581673B2 (ja) | 群集の移動を表現する方法、記憶媒体、および情報処理装置 | |
JP2024016017A (ja) | 情報処理システム、情報処理装置およびプログラム | |
JP2004167273A (ja) | 群集の移動を表現する方法、記憶媒体、および情報処理装置 | |
TW202030007A (zh) | 遊戲控制方法及裝置 | |
JP3523228B2 (ja) | ビデオゲーム装置、ビデオゲームにおけるキャラクタの表示方法、プログラム及び記録媒体 | |
EP3129112B1 (en) | Device, game and methods therefore | |
JP2006092222A (ja) | オブジェクト配置方法、ゲーム装置、画像処理装置及び画像処理方法 | |
WO2024066723A1 (zh) | 针对虚拟场景的位置更新方法、设备、介质和程序产品 | |
JP5774182B1 (ja) | ゲームプログラム、ゲーム制御方法、およびコンピュータ | |
WO2009104227A1 (ja) | ゲーム装置、ゲーム制御方法、及びゲーム制御プログラム | |
WO2009101663A1 (ja) | ゲーム装置、ゲーム制御方法、及びゲーム制御プログラム | |
JP2005342360A (ja) | 集団キャラクタ移動制御方法,記録媒体,シミュレーション装置及びゲーム装置 | |
JP7089005B2 (ja) | ビデオゲーム処理プログラム、及びビデオゲーム処理システム | |
JP5506158B2 (ja) | ゲーム装置、ゲーム制御方法、及びゲーム制御プログラム | |
US20150290535A1 (en) | Device, game and methods therefor | |
JP2023020645A (ja) | ゲームプログラム、ゲーム処理方法、情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040413 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040614 |
|
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: 20040713 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040723 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080730 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080730 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090730 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090730 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100730 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110730 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110730 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120730 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120730 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130730 Year of fee payment: 9 |
|
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 |