(57)【特許請求の範囲】
【請求項１】
予め定められたシミュレート対象の挙動をシミュレートする複数の個別シミュレータと、
前記個別シミュレータの各々に接続された相互通信制御装置と、を含むシミュレータシステムであって、
前記個別シミュレータは、前記シミュレート対象のうち、予め定められた通知条件を満足するシミュレート対象を選択し、前記選択したシミュレート対象に関わる情報を前記相互通信制御装置に送信する選択通知手段を備え、
前記相互通信制御装置は、
少なくとも二つの個別シミュレータを特定する情報に関連づけて、当該情報で特定される個別シミュレータからシミュレート対象に係る情報を受信したときに実行するべき処理内容を規定する処理規定情報を保持する保持手段と、
前記少なくとも二つの個別シミュレータの各々から受信されるシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた、当該シミュレート対象の間の相互作用を考慮したシミュレートを行うべきか否かを判断する処理を実行し、当該実行の結果を前記少なくとも二つの個別シミュレータの各々に通知する相互処理実行手段と、を有する
ことを特徴とするシミュレータシステム。
【請求項２】
請求項１に記載のシミュレータシステムであって、
前記処理規定情報には、個別シミュレータを指定する情報と、当該情報で指定される個別シミュレータに対して設定するべき通知条件の情報とを含み、前記相互処理実行手段が、前記指定された個別シミュレータに対して通知条件を設定し、当該設定した通知条件に基づいて選択的に通知されたシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた内容の処理を実行することを特徴とするシミュレータシステム。
【請求項３】
予め定められたシミュレート対象の挙動をシミュレートする複数の個別シミュレータに接続される相互通信制御装置であって、
少なくとも二つの個別シミュレータを特定する情報に関連づけて、当該情報で特定される個別シミュレータからシミュレート対象に係る情報を受信したときに実行するべき処理内容を規定する処理規定情報を保持する保持手段と、
前記個別シミュレータから、予め定められた通知条件を満足するシミュレート対象に係る情報を受信すると、当該情報を記憶して、前記少なくとも二つの個別シミュレータの各々から受信されるシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた、当該シミュレート対象の間の相互作用を考慮したシミュレートを行うべきか否かを判断する処理を実行し、当該実行の結果を前記少なくとも二つの個別シミュレータの各々に通知する相互処理実行手段と、を有することを特徴とする相互通信制御装置。
【請求項４】
請求項３に記載の相互通信制御装置であって、
前記処理規定情報には、個別シミュレータを指定する情報と、当該情報で指定される個別シミュレータに対して設定するべき通知条件の情報とを含み、前記相互処理実行手段が、前記指定された個別シミュレータに対して通知条件を設定し、当該設定した通知条件に基づいて選択的に通知されたシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた内容の処理を実行することを特徴とする相互通信制御装置。
【請求項５】
予め定められたシミュレート対象の挙動をシミュレートする複数の個別シミュレータに接続されるコンピュータに、
少なくとも二つの個別シミュレータを特定する情報に関連づけて、当該情報で特定される個別シミュレータからシミュレート対象に係る情報の入力を受けたときに実行するべき処理内容を規定する処理規定情報を保持する手順と、
前記少なくとも二つの個別シミュレータの各々から入力されるシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた、当該シミュレート対象の間の相互作用を考慮したシミュレートを行うべきか否かを判断する処理を実行し、当該実行の結果を前記少なくとも二つの個別シミュレータの各々に通知する手順と、を
実行させることを特徴とするプログラム。
【請求項６】
予め定められたシミュレート対象の挙動をシミュレートする複数の個別シミュレータに接続されるコンピュータにより実行されるプログラムであって、
少なくとも二つの個別シミュレータを特定する情報に関連づけて、当該情報で特定される個別シミュレータからシミュレート対象に係る情報の入力を受けたときに実行するべき処理内容を規定する処理規定情報を保持するモジュールと、
前記少なくとも二つの個別シミュレータの各々から入力されるシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた、当該シミュレート対象の間の相互作用を考慮したシミュレートを行うべきか否かを判断する処理を実行し、当該実行の結果を前記少なくとも二つの個別シミュレータの各々に通知するモジュールと、を
含むプログラムを格納したことを特徴とするコンピュータ可読な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、互いに干渉し得る複数種類のオブジェクトについての挙動をシミュレートするシミュレータシステムに関する。
【背景技術】
【０００２】
近年、例えばゲーム上の仮想的な空間内で鳥や魚などのオブジェクトの移動をシミュレートし、ユーザの操作するユーザオブジェクトから視認可能な鳥や魚などのオブジェクトの情報をユーザ側の装置に提供することで、あたかもユーザが仮想的な世界に入り込んだような仮想現実感を提供する装置が開発されている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、かかる従来の仮想現実感を提供する装置では、鳥が魚を補食する場合や、交差点で歩行者が通過するまで左折車両が停止しているなど、種類の異なるオブジェクト間での相互作用が生じる場合には、各オブジェクト間の位置関係を常時監視しておく必要があって、処理負担が大きくなる。また、各種類のオブジェクトごとに個別のシミュレータを割り当てて分散的に処理する場合、個別のシミュレータ間でのオブジェクトの情報の授受が煩雑になってしまう。
【０００４】
また、ユーザオブジェクトの移動操作と、他のオブジェクトの移動シミュレーションとを異なるコンピュータ要素によって実行していると、各コンピュータ要素間で、各オブジェクトの位置をフレームごとに通信しなければならず、オブジェクトの数が増大するにつれて、通信負担が増大してしまい、この面でも処理負担が大きくなる。
【０００５】
本発明は上記実情に鑑みて為されたもので、処理負担や通信負担を軽減できるシミュレータシステムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００６】
上記従来例の問題点を解決するための本発明は、予め定められたシミュレート対象の挙動をシミュレートする複数の個別シミュレータと、前記個別シミュレータの各々に接続された相互通信制御装置と、を含むシミュレータシステムであって、前記個別シミュレータは、前記シミュレート対象のうち、予め定められた通知条件を満足するシミュレート対象を選択し、前記選択したシミュレート対象に関わる情報を前記相互通信制御装置に送信する選択通知手段を備え、前記相互通信制御装置は、少なくとも一つの個別シミュレータを特定する情報に関連づけて、当該情報で特定される個別シミュレータからシミュレート対象に係る情報を受信したときに実行するべき処理内容を規定する処理規定情報を保持する保持手段と、前記個別シミュレータの各々から受信されるシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた内容の処理を実行し、当該実行の結果を前記個別シミュレータに通知する相互処理実行手段と、を有することを特徴としている。
【０００７】
このように通知条件に係るシミュレート対象を選択的に、他の個別シミュレータに伝達することで各個別シミュレータにおける処理負担や通信負担を軽減できる。
【０００８】
ここで前記処理規定情報には、個別シミュレータを指定する情報と、当該情報で指定される個別シミュレータに対して設定するべき通知条件の情報とを含み、前記相互処理実行手段が、前記指定された個別シミュレータに対して通知条件を設定し、当該設定した通知条件に基づいて選択的に通知されたシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた内容の処理を実行することとしてもよい。
【０００９】
また本発明の一態様は、予め定められたシミュレート対象の挙動をシミュレートする複数の個別シミュレータに接続される相互通信制御装置であって、少なくとも一つの個別シミュレータを特定する情報に関連づけて、当該情報で特定される個別シミュレータからシミュレート対象に係る情報を受信したときに実行するべき処理内容を規定する処理規定情報を保持する保持手段と、前記個別シミュレータから、予め定められた通知条件を満足するシミュレート対象に係る情報を受信すると、当該情報を記憶して、前記個別シミュレータの各々から受信されるシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた内容の処理を実行し、当該実行の結果を前記個別シミュレータに通知する相互処理実行手段と、を有することを特徴としている。
【００１０】
ここで前記処理規定情報には、個別シミュレータを指定する情報と、当該情報で指定される個別シミュレータに対して設定するべき通知条件の情報とを含み、前記相互処理実行手段が、前記指定された個別シミュレータに対して通知条件を設定し、当該設定した通知条件に基づいて選択的に通知されたシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた内容の処理を実行することとしてもよい。
【００１１】
また、本発明の別の態様に係るプログラムは、コンピュータを予め定められたシミュレート対象の挙動をシミュレートする複数の個別シミュレータとして機能させ、各個別シミュレータとしての動作において、予め定められた通知条件を満足するシミュレート対象を選択し、前記選択したシミュレート対象に関わる情報を出力させる手順と、少なくとも一つの個別シミュレータを特定する情報に関連づけて、当該情報で特定される個別シミュレータからシミュレート対象に係る情報の入力を受けたときに実行するべき処理内容を規定する処理規定情報を保持する手順と、前記個別シミュレータの各々から入力されるシミュレート対象に係る情報に基づいて、前記処理規定情報において定められた内容の処理を実行し、当該実行の結果を前記個別シミュレータに通知する手順と、をコンピュータに実行させることを特徴としている。
【００１２】
さらに本発明の別の特徴は、予め定められたシミュレート対象の挙動をシミュレートする個別シミュレータと、ユーザから入力される指示に従ってユーザオブジェクトの挙動を決定するユーザ端末と、を含むシミュレータシステムであって、前記ユーザ端末は、所定の同期タイミングにおいて、予め定めた対象決定ルールに基づいて定められた同期対象の個別シミュレータから、シミュレート対象の情報を取得する取得手段と、前記同期対象外の個別シミュレータから最後に取得したシミュレート対象の情報に基づいて、当該同期対象外の個別シミュレータに係るシミュレート対象の挙動を予測する予測手段と、当該予測の結果をユーザに提示する表示手段と、を備えることである。
【発明を実施するための最良の形態】
【００１３】
本発明の実施の形態について図面を参照しながら説明する。本発明の第１の実施の形態に係るシミュレーションシステムは、図１に示すように、ユーザ端末１と、相互通信制御装置２と、複数の個別シミュレータ３とを含んで構成され、これらは相互にネットワークを介して接続されている。
【００１４】
以下では、説明のために、ユーザが仮想的な都市空間内を移動する例を想定し、ユーザオブジェクトと、ユーザ以外のオブジェクトとしての車オブジェクト、建物オブジェクト、池オブジェクト、道路オブジェクト、鳥オブジェクト、及び都市内の池などに生息する魚オブジェクトが都市空間内の予め定められた領域をそれぞれ移動しているものとする。例えばユーザオブジェクトは、人であり、仮想都市空間内の地上付近で、歩道、横断歩道、または都市内の公園の陸地部分などを移動可能であると規定されている。また車オブジェクトは、地上付近で車道を移動可能であると規定される。さらに、鳥オブジェクトは、仮想都市空間内で、池の深部などを除く、地面上方全体ないし、池の所定深さまでを移動可能であると規定される。魚オブジェクトは、池内部を移動可能と規定される。なお、建物や池、道路などのオブジェクトは移動しないオブジェクトとしてユーザ端末１と個別シミュレータ３との間で、その配置位置に係る情報が保持されている。
【００１５】
ユーザ端末１は、一般的なパーソナルコンピュータを用いて実現できる。このユーザ端末１では、後に述べるように、ユーザオブジェクトが管理される。
【００１６】
個別シミュレータ３は、それぞれ、特定の種類のオブジェクトを管理する。例えば、第１の個別シミュレータ３ａは車オブジェクトの移動をシミュレートして管理し、第２の個別シミュレータ３ｂは、鳥オブジェクトの移動をシミュレートして管理し、第３の個別シミュレータ３ｃは、魚オブジェクトの移動をシミュレートして管理する。
【００１７】
各個別シミュレータ３は、サーバコンピュータであり、図２に例示するように制御部３１と、記憶部３２と、通信部３３とを含んで構成される。ここで制御部３１は、ＣＰＵ等のプログラム制御デバイスであり、記憶部３２に格納されているプログラムに従って、担当する少なくとも一つのオブジェクトの移動をシミュレートする。また、制御部３１は、シミュレート対象であるオブジェクトのうち、予め定めた条件（通知条件）を満足するオブジェクトの情報を選択的に、相互通信制御装置２に対して通知する。この処理については、後に詳しく述べる。
【００１８】
さらにこの制御部３１は、指定された領域内に含まれるオブジェクトのリストを送出する処理（オブジェクト検索処理）を行う。
【００１９】
記憶部３２は、メモリ素子などを含んで構成され、これら制御部３１によって実行される各処理に関わるプログラムを格納している。また、この記憶部３２は、各処理で用いるパラメータ情報等を格納している。さらに記憶部３２は、制御部３１のワークメモリとしても動作する。
【００２０】
通信部３３は、ネットワークインタフェース等であり、制御部３１から入力される指示に従い、指定された送信先に対し指定された情報を、ネットワークを介して送出する。また、この通信部３３は、ネットワークを介して受信される情報を、制御部３１に出力する。
【００２１】
相互通信制御装置２は、サーバーコンピュータ等で実現でき、図３に示すように制御部２１と、記憶部２２と、通信部２３とを含んで構成される。ここで制御部２１は、ＣＰＵ等であり、記憶部２２に格納されているプログラムに従って処理を行う。
【００２２】
記憶部２２は、メモリ素子などを含んで構成され、各処理に関わるプログラムを格納している。また、この記憶部２２には、制御部２１の処理で用いるパラメータ情報が格納されている。さらにこの記憶部２２は、制御部２１のワークメモリとしても動作する。
【００２３】
通信部２３は、ネットワークインタフェース等であり、制御部２１から入力される指示に従い、指定された送信先に対し指定された情報を、ネットワークを介して送出する。また、この通信部２３は、ネットワークを介して受信される情報を、制御部２１に出力する。
【００２４】
本実施の形態のシミュレータシステムは、上述の構成を備えてなり、機能的には図５に示すように、ユーザ端末１におけるユーザオブジェクト管理部４１と、ユーザ視野表示部４２と、相互通信制御装置２における相互通信制御部５１と、検索処理部５２と、依存関係判断部５３と、衝突判定部５４と、依存関係データベース５５と、各個別シミュレータ３におけるシミュレーションエンジン部６１と、オブジェクトデータ記憶部６２と、通知判定部６３とを含んで構成される。
【００２５】
ユーザオブジェクト管理部４１は、ユーザによるユーザオブジェクトの移動操作を受けて、ユーザオブジェクトの仮想空間内の位置を更新する。ここでユーザ端末１は、ユーザによる移動操作のときに、移動可能であると予め定められた領域の外へユーザオブジェクトが移動しないよう、ユーザの操作を制限する。例えば、歩道から車道へ移動する指示操作が行われた場合、当該車道部分が横断歩道であるか否かを判断し、横断歩道でなければ、無視して移動を行わない。
【００２６】
ユーザ視野表示部４２は、ユーザの視野範囲に係る情報を相互通信制御装置２に送信し、相互通信制御装置２から当該視野範囲に含まれる他のオブジェクトの情報を受信し、ディスプレイ等に表示する。
【００２７】
相互通信制御部５１は、個別シミュレータ３からオブジェクトの情報の通知を受けると、当該通知されたオブジェクトの情報と、オブジェクト種別（あるいは通知元の個別シミュレータ３を特定する情報）とを関連づけて、通知データベースとして記憶部２２に格納する。
【００２８】
検索処理部５２は、ユーザ端末１から受信される指示に従い、ユーザの視野範囲に属するオブジェクトの情報を、各個別シミュレータにオブジェクト検索処理を行わせて取得し、当該取得したオブジェクトの情報をユーザ端末１に送出する。
【００２９】
依存関係判断部５３は、記憶部２２に格納された通知データベースと依存関係データベース５５とを参照し、実行するべき処理が依存関係データベース５５に定められている場合は、当該定められた処理（例えば衝突判定処理）の実行を開始する旨の指示を出力する。
【００３０】
衝突判定部５４は、依存関係判断部５３が衝突判定処理の実行を開始する旨の指示を出力したときに、記憶部２２に格納された通知データベースを参照して、種別の異なるオブジェクト間で相互作用を考慮したシミュレートを行うべきか否かを判断し、相互作用を考慮したシミュレートを行うべきと判断したときに、当該相互作用に係るオブジェクトをそれぞれ管理する個別シミュレータ３に対して、相互作用の相手となるオブジェクトに関する情報を出力して、相互作用に係る処理を実行するよう要求する。
【００３１】
本実施の形態では、これら依存関係判断部５３と衝突判定部５４とにより、本発明の相互処理実行手段が実現される。
【００３２】
依存関係データベース５５は、保持手段としての記憶部２２に格納されており、図４に示すように、少なくとも一つのオブジェクト種別（または当該少なくとも一つの種別のオブジェクトをそれぞれ管理する個別シミュレータ３を特定する情報）Ｒ１，Ｒ２…と、実行するべき処理の内容を特定する情報Ｐとを関連づけたものである。
【００３３】
各個別シミュレータ３におけるシミュレーションエンジン部６１は、シミュレート対象であるオブジェクトの挙動（移動など）をそれぞれシミュレートする。ここでは、シミュレーションエンジン部６１は、シミュレートの対象となるオブジェクトの各々にオブジェクト識別子を付し、それぞれの所定時間（１ステップ）後の移動位置を、シミュレートして演算し、当該移動位置などシミュレートに関わる情報を各オブジェクトの識別子に関連づけて、オブジェクトデータベースに格納する。
【００３４】
例えば、鳥オブジェクトや魚オブジェクトの移動は、群れの挙動をシミュレートする処理によって行われる。具体的な例としては、集まりやすさや、離れやすさ、集中対象の位置、忌避対象の位置等のシミュレートパラメータ情報に基づいてシミュレートを行う。ここで集中対象とは、より近くに寄ろうとする対象（オブジェクト）であり、例えば鳥であれば捕食対象としての魚が集中対象の一例となる。また、忌避対象とは、より離れようとする対象（オブジェクト）であれば、例えば魚であれば、捕食者である鳥が忌避対象の一例となる。このような群れの挙動をシミュレートする処理では、これらのシミュレートパラメータ情報を利用して、群れに属する各個体（個々のオブジェクト）の次のステップでの移動位置を演算する。
【００３５】
また、このシミュレーションエンジン部６１は、管理しているオブジェクトの種類に応じて定められる移動以外の挙動に係る処理を実行する。例えば、鳥オブジェクトについては、所定範囲内に所在する魚オブジェクトを捕食するか否かを決定する処理を実行する。
【００３６】
さらにシミュレーションエンジン部６１は、相互作用に係る処理を実行するべき旨の指示を、衝突判定部５４から受けると、当該指示とともに受信されるオブジェクトの情報を利用して、シミュレートの処理を続ける。
【００３７】
例えば魚オブジェクトにおいては、忌避対象である鳥オブジェクトの位置情報を、相互作用の相手となるオブジェクトに関する情報として受信し、当該位置情報を忌避対象の位置情報として設定してシミュレーションを続行すればよい。
【００３８】
オブジェクトデータ記憶部６２は、個々のシミュレート対象である各オブジェクトごとに、位置に関する情報を記憶部２２に格納して保持させる。
【００３９】
通知判定部６３は、本発明の選択通知手段に相当し、管理しているオブジェクトのうち、所与の通知条件を満足するものがあれば、当該通知条件を満足するオブジェクトの情報を相互通信制御部２に送信する処理（通知処理）を実行する。ここで通知条件は、パラメータ情報として記憶部３３に格納しておく。この通知条件は例えば、仮想空間内におけるオブジェクトの所在領域に関わる条件とする。具体例として鳥オブジェクトにおいては、捕食対象のいる池の範囲であって、地上所定高さ未満の領域（捕食対象たる魚を捉えて捕食可能として設定される領域）に所在するオブジェクトを通知対象とするとの条件を定める。
【００４０】
次に、本実施の形態のシミュレーションシステムの動作例を説明する。以下の動作例では、車オブジェクトの挙動をシミュレートする個別シミュレータ３ａと、鳥オブジェクトの挙動をシミュレートする個別シミュレータ３ｂと魚オブジェクトの挙動をシミュレートする個別シミュレータ３ｃとがネットワークを介して接続され、仮想都市空間内のオブジェクトを管理している場合を例として説明する。
【００４１】
このとき、鳥と車、魚と車とは相互作用がないが、鳥と魚との間には、鳥が魚を捕食するという関係を仮想的に設定しておくとする。この捕食関係を設定するため、鳥が魚を捕食可能な領域に入ったこと、例えば、池の上空ないし池の内部であって、地上所定高さ未満の領域にある鳥オブジェクトを通知対象とする、との通知条件を定めて、個別シミュレータ３ｂの記憶部３２に設定する。
【００４２】
また、魚オブジェクトに関しても、池の水面から、別途定められた深さＤまでの領域に存在する魚オブジェクトを通知対象とする、との通知条件を定め、個別シミュレータ３ｃの記憶部３２に設定しておく。
【００４３】
なお、車オブジェクトは、ユーザオブジェクトなどの人オブジェクトとの間で相互作用をすることがある（衝突など）が、ここでは人オブジェクトの移動可能範囲は、歩道または横断歩道のみと制限され、車オブジェクトの移動可能範囲は車道のみと制限されている。このため、人オブジェクトと車オブジェクトとの相互作用は、各種別のオブジェクトの移動可能範囲が交差する領域である、横断歩道のみとなる。そこで、車オブジェクトを管理する個別シミュレータ３ａには、横断歩道内に進入している車オブジェクトを通知の対象とする、との通知条件を設定しておく。同様に、人オブジェクトを管理する側には、横断歩道内に進入した人オブジェクトを通知の対象とするとの通知条件を設定しておく。つまり、ここではユーザ端末１に対し、ユーザオブジェクトが横断歩道内に進入したときに、通知を行うよう設定しておく。
【００４４】
さらに、相互通信制御装置２の依存関係データベース５５には、図４に例示したように、鳥オブジェクトを管理する個別シミュレータ３ｂを特定する情報と、魚オブジェクトを管理する個別シミュレータ３ｃを特定する情報とをキーとして、このキーに関連づけて、通知されている（通知データベースに格納された）魚オブジェクトの情報を個別シミュレータ３ｂに対して送出して、捕食するか否かを判断させる処理を行わせる旨の、処理規定情報としての依存関係エントリー（以下、区別のため捕食関係エントリーと呼ぶ）を設定しておく。
【００４５】
この動作例においては、図６に示すように、各個別シミュレータ３ａ、３ｂ、３ｃは、それぞれが担当する種別のオブジェクトについて、予め定められたアルゴリズムでの挙動シミュレーションを行って、各オブジェクトの移動位置を逐次変化させている（Ｓ１ａ，Ｓ１ｂ，Ｓ１ｃ）。例えば鳥オブジェクトを担当する個別シミュレータ３ｂでは、群れをシミュレートするアルゴリズム（基礎的なものとして例えばReynolds, C. W. (1987) Flocks, Herds, and Schools: A Distributed Behavioral Model, in Computer Graphics, 21(4) (SIGGRAPH '87 Conference Proceedings) pages 25-34.）を用いて個々の鳥オブジェクトが仮想的な都市空間を飛来する状況をシミュレートする。
【００４６】
また、各個別シミュレータ３は、この移動の処理において、シミュレートの対象としているオブジェクト（一般に複数）のうち、設定された通知条件を満足するオブジェクトがあるか否かを判断する（Ｓ２ａ，Ｓ２ｂ，Ｓ２ｃ）。例えば鳥オブジェクトを管理する個別シミュレータ３ｂは、通知条件として設定された、池の上空ないし池の内部であって、地上所定高さ未満の領域に移動した鳥オブジェクト（通知対象）があるか否かを調べ、通知対象となる鳥オブジェクトがあれば、当該通知対象となった鳥オブジェクトの情報として、予め定められている情報、例えば通知対象となった鳥オブジェクトの位置の情報を相互通信制御装置２に送信して通知する（Ｓ３）。
【００４７】
相互通信制御装置２の相互通信制御部５１は、当該通知された情報を受信し、個別シミュレータ３ｂを特定する情報と、通知された情報とを関連づけた通知データベースを記憶部２２に格納する。
【００４８】
そして相互通信制御装置２の依存関係判断部５３が、記憶部２２に格納された依存関係データベース５５を参照し、依存関係データベース５５において設定されている各依存関係エントリーのキーとなる情報に含まれるすべての個別シミュレータ３から通知がされているか否かを、通知データベースを参照して調べる。これにより、実行するべき処理が依存関係データベース５５に定められているか否かを判断する（Ｓ４）。
【００４９】
この例の段階では、魚オブジェクトを管理する個別シミュレータ３ｃから魚オブジェクトの通知を受けていない、つまり個別シミュレータ３ｃにおける魚オブジェクトの挙動シミュレートの現状から、池の水面から深さＤまでの範囲にいる魚オブジェクトがない状態なので、通知データベースには鳥オブジェクトに係る個別シミュレータ３ｂを特定する情報が格納されているだけである。このため、依存関係データベース５５に設定されている捕食関係エントリーのキーに含まれる各個別シミュレータ３ｂ，３ｃからの通知がされていないことと判断され、処理Ｓ１に戻って次のステップでのシミュレーションが実行される。このとき、相互通信制御装置２は、通知データベースを記憶部２２から削除する。
【００５０】
各個別シミュレータ３が、再び、次のステップでの移動の処理を行い（Ｓ５）、シミュレートの対象としているオブジェクト（一般に複数）のうち、設定された通知条件を満足するオブジェクトがあるか否かを判断する（Ｓ６）。ここで、個別シミュレータ３ｂが、通知対象となる鳥オブジェクトがあったとして、当該通知対象となった鳥オブジェクトの情報として例えば通知対象となった鳥オブジェクトの位置の情報を相互通信制御装置２に送信して再び通知する（Ｓ７）とする。
【００５１】
また、魚オブジェクトを管理する個別シミュレータ３ｃが、池の水面から設定された深さＤまでの範囲に移動した魚オブジェクトを見いだした場合、当該魚オブジェクトを通知対象とし、当該通知対象となった魚オブジェクトの情報として例えば通知対象となった魚オブジェクトを特定する情報（当該魚オブジェクトの識別子等）や、その位置の情報を相互通信制御装置２に送信し、通知をする（Ｓ８）。
【００５２】
これらの通知を受けた相互通信制御装置２の相互通信制御部５１は、当該通知された情報を受信し、個別シミュレータ３ｂ、３ｃを特定する情報と、それぞれから通知された情報とを関連づけた通知データベースを記憶部２２に格納する。
【００５３】
そして相互通信制御装置２の依存関係判断部５３が、実行するべき処理が依存関係データベース５５に定められているか否かを判断する（Ｓ９）。ここでは、通知データベースに個別シミュレータ３ｂ、３ｃを特定する情報の双方が格納されているので、捕食関係エントリーのキーに含まれるすべての個別シミュレータ３を特定する情報が通知データベースに格納されていると判断され、衝突判定部５４により当該キーに関連づけられた処理が実行される。既に述べたように、ここでの例では、通知データベースに格納された魚オブジェクトの情報を個別シミュレータ３ｂに対して送出して、捕食するか否かを判断させる処理を行わせることとなる（Ｓ１０）。
【００５４】
個別シミュレータ３ｂのシミュレーションエンジン部６１では、通知対象となった鳥が、ここで相互通信制御装置２から受信した魚オブジェクトを捕食する挙動を行うか否かを例えば乱数値や、所定のシミュレーション用のパラメータ（空腹パラメータなど）に応じて判断し（Ｓ１１）、当該判断の結果を相互通信制御装置２に送出する（Ｓ１２）。例えば、捕食したとする場合は、捕食した魚オブジェクトの識別子を相互通信制御装置２に送出し、捕食しなかったとする場合は、その旨を相互通信制御装置２に送出する。
【００５５】
相互通信制御装置２の衝突判定部５４は、そして依存関係に係る処理の結果を個別シミュレータ３へ報知する。ここでは、受信した判断結果の情報から捕食がされたか否かを調べ、捕食がされた場合には、捕食された魚オブジェクトの識別子を個別シミュレータ３ｃに送出して、当該識別子で識別される魚オブジェクトをオブジェクトデータベースから削除させる（Ｓ１３）。また相互通信制御装置２は、捕食の結果、通知対象となっていた魚オブジェクトのうち、捕食されたとされる魚オブジェクトが消失した旨の情報を個別シミュレータ３ｂへ送信する（Ｓ１４）。
【００５６】
以下、各個別シミュレータ３が、またそれぞれの管理するオブジェクトの挙動をシミュレートする処理から繰り返して実行する。
【００５７】
本実施の形態によると、鳥オブジェクトを管理する個別シミュレータ３ｂと、魚オブジェクトを管理する個別シミュレータ３ｃとは、それぞれの管理するオブジェクトが仮想空間内で相互作用を行い得る程度として予め定められた範囲に進入しない限り、他のオブジェクトに関わる情報を受信することがなく、従って相互作用のシミュレートの処理を実行する必要がない。これによりシミュレートの処理負担を軽減することができる。
【００５８】
また、図６の例にあるように、相互作用の設定のない、オブジェクト間（車と魚、車と鳥）では、情報の送受も行われない。つまり、通知対象となった鳥オブジェクトがあっても、車オブジェクトの挙動をシミュレートする個別シミュレータ３ａに対しては当該鳥オブジェクトの情報は送信されることがない。これにより、通信負担をも軽減できる。
【００５９】
なお、ここでは各オブジェクトの挙動についてのシミュレーションを進めるごとに毎回、通知データベースを削除し、新たに通知を受けて通知データベースを更新することとしたが、各個別シミュレータにおいて前回通知した通知対象と、今回通知するべき通知対象とに変化が生じたときに、当該変化（通知データベースに追加するべきオブジェクトの情報と、通知データベースから削除するべきオブジェクトの情報と）を相互通信制御装置２に通知するようにしてもよい。このようにすれば、通知対象に変化のない間は、毎回通知を行う必要がなくなり、通信負荷を軽減できる。
【００６０】
また、ここではそれぞれの個別シミュレータ３に、予め通知条件が設定されている場合を例として述べたが、次に説明するように通知条件は事前に設定されていなくてもよい。
【００６１】
例えば上述の例において、魚オブジェクトを管理する個別シミュレータ３ｃには、通知対象を定める深さＤの情報が事前に設定されているとしたが、この深さＤの情報を当初、Ｄ＝０、すなわち水面上にいる魚オブジェクトを通知対象とすることとしておくなど、一般的には通知が行われない条件としておき、相互通信制御装置２において、特定の個別シミュレータ３からの通知があったことを条件としてこの深さＤの情報を、Ｄ＝ｄ（ｄ＞０）と個別シミュレータ３ｃに設定させて、深さｄまでの魚オブジェクトを通知させるようにしてもよい。
【００６２】
すなわちこの場合は、鳥オブジェクトを管理する個別シミュレータ３ｂを特定する情報をキーとして、このキーに関連づけて魚オブジェクトを管理する個別シミュレータ３ｃに対し、深さＤの情報をＤ＝ｄ（ｄ＞０）と設定させる処理を行わせる旨を設定した依存関係エントリー（以下、区別のため深度設定エントリーと呼ぶ）を、依存関係データベース５５に格納しておく。
【００６３】
こうすると、上記図６に示した処理Ｓ４の段階において、相互通信制御装置２の依存関係判断部５３が実行するべき処理が依存関係データベース５５に定められているか否かを判断するにあたり、当該段階で通知データベースには鳥オブジェクトに係る個別シミュレータ３ｂを特定する情報が格納されているので、深度設定エントリーのキーに含まれるすべての情報が通知データベースに格納されていることとなり、相互通信制御装置２は、魚オブジェクトを管理する個別シミュレータ３ｃに対し、深さＤの情報をＤ＝ｄ（ｄ＞０）と設定するよう指示する。
【００６４】
この指示を受けて個別シミュレータ３ｃは、深さＤの情報をｄに設定し、池の水面から当該設定された深さＤ＝ｄまでの範囲に存在する魚オブジェクトがあるか否かを調べる。ここでかかる魚オブジェクトがあれば、当該魚オブジェクトを通知対象とし、例えば当該通知対象となった魚オブジェクトを特定する情報（当該魚オブジェクトの識別子等）や、その位置の情報を相互通信制御装置２に送信し通知する。
【００６５】
相互通信制御装置２は当該通知された情報を受信して、個別シミュレータ３ｃを特定する情報と、通知された情報とを関連づけて通知データベースに追加して格納する。そして相互通信制御装置２の依存関係判断部５３が、実行するべき処理が依存関係データベース５５に定められているか否かを判断する。この段階では、通知データベースに個別シミュレータ３ｂ、３ｃを特定する情報の双方が格納されているので、捕食関係エントリーに係る、図６の処理Ｓ１０以下の処理が実行され、通知データベースに格納された魚オブジェクトの情報を個別シミュレータ３ｂに対して送出して、捕食するか否かを判断させる処理を行わせる。
【００６６】
なお、ここまでは説明を簡易にするために、依存関係データベース５５には、鳥と魚との間の捕食関係に係る依存関係エントリーが格納されている例を示したが、依存関係エントリーはこれだけに限られず、例えば、人オブジェクトと車オブジェクトとの依存関係として、衝突判断や、忌避行動（車オブジェクトは、人オブジェクトがいなくなるまで停止するなど）のパラメータ設定等を行わせてもよい。
【００６７】
さらに本実施の形態では、ユーザ端末１は所定のタイミングごとに、ユーザオブジェクトからの視野範囲に属するオブジェクトの情報を取得して表示する。すなわちユーザ端末１のユーザ視野表示部４２が、ユーザの視野範囲に係る情報（ユーザの視野範囲を画定する仮想空間内の領域を表す情報）を相互通信制御装置２に送信する。
【００６８】
相互通信制御装置２の検索処理部５２は、このユーザ端末１から受信される情報で画定される視野範囲内のオブジェクトの情報を各個別シミュレータ３に送出して、各個別シミュレータ３に対してオブジェクト検索処理を行わせる。各個別シミュレータ３では、相互通信制御装置２から指定された領域内に含まれるオブジェクトのリストを送出する。このオブジェクトのリストは、オブジェクトの外観を定める情報やオブジェクトの位置に係る情報等を列挙したものである。
【００６９】
相互通信制御装置２は、各個別シミュレータ３から受信されるオブジェクトのリストをユーザ端末１に送出する。ユーザ端末１では、こうして相互通信制御装置２からユーザ視野範囲に含まれる他の（ユーザオブジェクト以外の）オブジェクトの情報を受信し、ディスプレイ等に表示する。
【００７０】
なお、ユーザ端末１がシミュレーションの１ステップごとに各オブジェクトの位置の情報を取得して表示することとすると、オブジェクトの数が増大したときにその通信負担が大きくなってしまう。そこで、ユーザ端末１は、予め定めたタイミング決定ルールに基づいて定められる同期タイミングにおいてユーザオブジェクトからの視野範囲に属するオブジェクトの情報を取得することとしてもよい。この場合、ユーザ端末１は、当該同期タイミング以外の時点では、最後に受信したオブジェクトの情報に基づいて、表示の時点でのオブジェクトの位置などの挙動を予測して、その結果を表示する。
【００７１】
つまりこの例では、ユーザ端末１は、図５に示した例に代えて図７に示すように、機能的にはユーザオブジェクト管理部４１と、ユーザ視野表示部４２′と、同期部４３と、シミュレート結果予測部４４とを備えてなる。
【００７２】
ユーザ視野表示部４２′は、ユーザの視野範囲に存在するオブジェクトのリストとして図示しないメモリに格納している、シミュレート結果の予測情報（オブジェクトの予測情報）に基づいて、当該視野範囲に含まれる他のオブジェクトの情報をディスプレイ等に表示する。
【００７３】
同期部４３は、予め定めたタイミング決定ルールに基づいて同期タイミングを定め、当該同期タイミングにおいて、ユーザの視野範囲を画定する情報とともに当該視野範囲に含まれるオブジェクトの情報を要求する指示を相互通信制御装置２に送信し、相互通信制御装置２から当該視野範囲に含まれる他のオブジェクトの情報を受信してメモリに格納する。
【００７４】
シミュレート結果予測部４４は、シミュレーションの１ステップに係る時間ごとに、同期部４３によってメモリに格納されたオブジェクトの情報を利用して、各オブジェクトの挙動（シミュレーション結果）を予測して、メモリに格納されているオブジェクトの予測情報を更新する。
【００７５】
ここではシミュレート結果予測部４４は例えば、カルマンフィルタ等を用いて、同期部４３が取得した実際のシミュレート結果によって予測値を補正しながら、オブジェクトの位置等の情報の予測を行う。
【００７６】
このようにユーザ端末１が他のオブジェクトの位置を予測して表示することで、他のオブジェクトの位置の情報を常時取得する必要がなくなり、通信負担を軽減できる。
【００７７】
また、個別シミュレータ３によっては、ユーザオブジェクトの位置等の情報を利用して、担当しているオブジェクトの挙動をシミュレートするものもある。例えば、ユーザのペットなどのオブジェクトを担当する個別シミュレータ３があれば、ユーザオブジェクトの位置に応じて、当該ペットの位置をシミュレートする必要が生じる。
【００７８】
そこで当該個別シミュレータ３は、ユーザオブジェクトの位置の情報を提供するようユーザ端末１に通知しておく。そしてユーザ端末１は、当該通知の元となった個別シミュレータ３に対して、ユーザオブジェクトの情報を送出する。この場合も、シミュレーションの１ステップごとにユーザオブジェクトの情報を送出するのではなく、予め定めたタイミング決定ルールに基づいて定められる同期タイミングにおいてのみ、ユーザオブジェクトの情報を送出するようにしてもよい。
【００７９】
ユーザオブジェクトの情報を受信する個別シミュレータ３は、この場合、同期タイミングにて受信したユーザオブジェクトの情報を記憶部３２に格納し、同期タイミング外のステップにおいては、ユーザオブジェクトの移動位置等を記憶している情報を元に予測し、当該予測の結果に基づいてオブジェクトの挙動をシミュレートする。この際のユーザオブジェクトの移動位置の予測もまた、例えばカルマンフィルタ等を用いて行うことができる。
【００８０】
なお、これらの例において同期タイミングを定めるタイミング決定ルールは、例えば、最後に同期してからの経過時間や、ユーザオブジェクトの移動速度、他のオブジェクトの移動速度等に応じて定めることができる。例えば最後に同期してからの経過時間が一定の時間に達するごとに同期タイミングを定めてもよい（この場合は一定の間隔で同期が行われる）し、ユーザオブジェクトの移動速度や他のオブジェクトの移動速度が高速になればなるほど短く設定される時間しきい値を演算し、最後に同期してからの経過時間が演算した時間しきい値を越えるときに同期タイミングを定めてもよい。
【００８１】
さらに、同期タイミングは、相互通信制御装置２によって定めてもよい。この場合において、相互通信制御装置２は、ユーザ端末１から受信するユーザの視野範囲の情報を用いて、各個別シミュレータ３に対して、当該視野範囲内に存在するオブジェクトがあるか否かを問い合わせる。
【００８２】
各個別シミュレータ３は、指定された視野範囲内に存在するオブジェクトがあるか否かをそれぞれ判断し、視野範囲内に存在するオブジェクトがある場合は、その旨を相互通信制御装置２に対して送出する。相互通信制御装置２は、視野範囲内に存在するオブジェクトがある旨の回答を送出した個別シミュレータ３を特定する情報のリストを記憶する。この情報のリスト（以下、対象シミュレータリストと呼ぶ）は、所定のタイミングごとに、例えば定期的に更新する。
【００８３】
相互通信制御装置２は、当初（初期化時）には、記憶しているリストの情報で特定されるすべての個別シミュレータ３に対して視野範囲内に存在するオブジェクトの情報を要求する（上述の検索処理）。そして、各個別シミュレータ３が送出するオブジェクトのリストを取得して、ユーザ端末１へ送信する。
【００８４】
また、相互通信制御装置２は、対象シミュレータリストに新規に追加される個別シミュレータ３があれば、当該新規に追加された個別シミュレータ３に対しては、ユーザオブジェクトの視野範囲内に存在するオブジェクトの情報を要求する（上述の検索処理）。そして、個別シミュレータ３が送出するオブジェクトのリストを取得して、ユーザ端末１へ送信する。
【００８５】
相互通信制御装置２は、これらのように個別シミュレータ３からオブジェクトの情報を受信すると、図示しない時計部からデータを取得した時点を表すタイムスタンプ情報を取得し、各個別シミュレータ３から受信したデータ量と当該タイムスタンプ情報とを、各個別シミュレータ３を特定する情報に関連づけて、受信データ量データベースとして記憶部２２に格納しておく。
【００８６】
ユーザ端末１は、表示を更新する際に、相互通信制御装置２に対してその旨を表す信号（表示更新信号）を送出する。
【００８７】
相互通信制御装置２は、ユーザ端末１から表示更新信号を受信した時点で、個別シミュレータ３がシミュレートを行って次のステップにおけるオブジェクトの位置の演算を完了するまでの時間（余裕時間）を調べる。
【００８８】
そして当該余裕時間内に取得可能なデータ量を取得可能データ量として演算する。相互通信制御装置２は、記憶部２２に格納した受信データ量データベースを参照し、当該演算した取得可能データ量以下のデータ量に関連づけられ、かつ、対象シミュレータリストに含まれる個別シミュレータ３を特定する情報を予備的に選択する。
【００８９】
そして予備的に選択した個別シミュレータ３を特定する情報のうち、最も古いタイムスタンプ情報に関連づけられている個別シミュレータ３を特定する情報を一つ選択する。なお、最も古いタイムスタンプ情報に関連づけられている個別シミュレータ３を特定する情報が複数あれば、ランダムにそのうちの一つを選択してもよい。
【００９０】
なお、相互通信制御装置２において、依存関係データベース５５内の依存関係エントリーに登録された処理を行った場合、当該依存関係エントリーに複数の個別シミュレータ３を特定する情報（または複数の個別シミュレータ３に係るオブジェクトを特定する情報）が含まれていたときには、依存関係エントリーに登録された処理の結果を、当該複数の個別シミュレータ３に一斉に報知する必要が生じる。そうでないと、ユーザ端末１において表示するシミュレーションの結果に矛盾が生じる可能性がある場合があるからである。
【００９１】
そこでこうした場合、個別シミュレータ３の各々についてのデータ量だけでなく、一斉に同期する必要のある個別シミュレータ３の群について、当該群に属する個別シミュレータ３の各々に関連づけて、受信データ量データベースに登録されているデータ量の値を取得し、群に属する個別シミュレータ３の各々に関連して記録されているデータ量の値を合算して、群全体でのデータ量の値を演算し、群を特定する情報（例えば群に属する複数の個別シミュレータ３を特定する情報のリスト）に関連づけて、当該群について演算した群全体でのデータ量の値を受信データ量データベースに格納しておく。
【００９２】
相互通信制御装置２は、余裕時間内に取得可能なデータ量を取得可能データ量として演算し、記憶部２２に格納した受信データ量データベースから、当該演算した取得可能データ量以下のデータ量に関連づけられ、かつ、対象シミュレータリストに含まれる個別シミュレータ３を特定する情報または群を特定する情報を予備的に選択する。
【００９３】
以下、予備的に選択した個別シミュレータ３を特定する情報または群を特定する情報のうちから、一つを所定の条件に従って選択する。この選択の条件は、例えば群についてのタイムスタンプ情報を、当該群に属する個別シミュレータ３のそれぞれに関連づけられたタイムスタンプ情報のうち、最も古いものとしておき、最も古いタイムスタンプ情報に関連づけられている個別シミュレータ３を特定する情報または群を特定する情報を選択する条件であってもよいし、ランダムに一つを選択する条件であってもよい。
【００９４】
これにより、群単位での同期も可能となり、ユーザ端末１にて表示されるシミュレーションの結果に矛盾が生じないようにすることができる。
【００９５】
相互通信制御装置２は、最終的に選択した情報で特定される個別シミュレータ３に対して、ユーザオブジェクトの視野範囲内に存在するオブジェクトの情報を要求する（上述の検索処理）。そして、個別シミュレータ３が送出するオブジェクトのリストを取得して、ユーザ端末１へ送信する。そして相互通信制御装置２は、図示しない時計部からデータを取得した時点を表すタイムスタンプ情報を取得し、上記最終的に選択した個別シミュレータ３から受信したデータ量と当該タイムスタンプ情報とを、個別シミュレータ３を特定する情報に関連づけて格納し、受信データ量データベースの内容を更新する。
【００９６】
また、ユーザ端末１は、相互通信制御装置２からオブジェクトのシミュレート結果に係る情報を受信するごとに、同期タイミングが到来したと判断して、ユーザオブジェクトの情報を、相互通信制御装置２へ送出する。
【００９７】
なお、個別シミュレータ３は、相互通信制御装置２に対してオブジェクトのリストを送出するときに、個別シミュレータ３内で予測しているユーザオブジェクトの位置などの情報を併せて送出してもよい。相互通信制御装置２は、受信したユーザオブジェクトの予測された情報をユーザ端末１へ送出し、ユーザ端末１では、この予測されている情報と、現実にユーザの操作によって変化したユーザオブジェクトの情報とを比較して、例えば予測された位置と現実の位置とが予め定めたしきい値以上に離れている場合に、ユーザオブジェクトの情報を、相互通信制御装置２へ送出するようにしてもよい。
【００９８】
相互通信制御装置２は、上記最終的に選択した個別シミュレータ３に対して、受信したユーザオブジェクトの情報を送出する。ユーザオブジェクトの情報を受信した個別シミュレータ３は、当該ユーザオブジェクトの情報を記憶部３２に格納して、以降のシミュレーションに利用する。
【００９９】
この例によると、ユーザ端末１と、相互通信制御装置２が選択した個別シミュレータ３とが時間をおいて同期しており（図８のステップ（ａ））、ユーザ端末１側では、最後の同期で取得したオブジェクトの移動を予測しつつ表示を行っており（図８のステップ（ｂ））、同様に個別シミュレータ３側でもユーザオブジェクトの移動を予測してオブジェクトの挙動をシミュレートしており（図８のステップ（ｃ））、次の同期が行われた際には、それぞれ受信したオブジェクトの情報やユーザオブジェクトの情報に基づいて予測の結果を補正していく（図８のステップ（ｄ））。これにより、同期を毎ステップごとに行う必要がなくなり、通信負担を軽減できる。
【０１００】
なお、ここまでの説明において、オブジェクトの情報（ユーザオブジェクトの情報を含む）は、相互通信制御装置２を介して送受しているものとしていたが、当該オブジェクトの情報は、ユーザ端末１と、個別シミュレータ３との間で直接的に授受しても構わない。
【０１０１】
次に、本発明の第２の実施の形態に係るシミュレーションシステムについて説明する。この第２の実施の形態に係るシミュレーションシステムは、図９に示すように、ユーザ端末１と、複数の個別シミュレータ３とを含んで構成される。これらは相互にネットワークを介して接続されている。
【０１０２】
この実施の形態では、ユーザ端末１は図７に示したものと同様に、機能的にはユーザオブジェクト管理部４１と、ユーザ視野表示部４２′と、同期部４３と、シミュレート結果予測部４４とを備えてなる。
【０１０３】
この例では同期部４３は、予め定めたタイミング決定ルールに基づいて同期タイミングを定め、当該同期タイミングにおいて、ユーザの視野範囲を画定する情報とともに当該視野範囲に含まれるオブジェクトの情報を要求する指示を各個別シミュレータ３へ送信し、各個別シミュレータ３から当該視野範囲に含まれる他のオブジェクトの情報を受信してメモリに格納する。
【０１０４】
また、シミュレート結果予測部４４は、シミュレーションの１ステップに係る時間ごとに、同期部４３によってメモリに格納されたオブジェクトの情報を利用して、各オブジェクトの挙動（シミュレーション結果）を予測して、メモリに格納されているオブジェクトの予測情報を更新する。
【０１０５】
ここではシミュレート結果予測部４４は例えば、カルマンフィルタ等を用いて、同期部４３が取得した実際のシミュレート結果によって予測値を補正しながら、オブジェクトの位置等の情報の予測を行う。
【０１０６】
このようにユーザ端末１が他のオブジェクトの位置を予測して表示することで、他のオブジェクトの位置の情報を常時取得する必要がなくなり、通信負担を軽減できる。
【０１０７】
またユーザオブジェクトの情報を利用する個別シミュレータ３は、ユーザオブジェクトの位置の情報を提供するようユーザ端末１に通知しておく。そしてユーザ端末１は、当該通知の元となった個別シミュレータ３に対して直接、ユーザオブジェクトの情報を送出する。
【０１０８】
なお、この場合も、シミュレーションの１ステップごとにユーザオブジェクトの情報を送出するのではなく、予め定めたタイミング決定ルールに基づいて定められる同期タイミングにおいてのみ、ユーザオブジェクトの情報を送出するようにしてもよい。この場合、個別シミュレータ３は、同期タイミングにて受信したユーザオブジェクトの情報を記憶部３２に格納し、同期タイミング外のステップにおいては、ユーザオブジェクトの移動位置等を記憶している情報を元に予測し、当該予測の結果に基づいてオブジェクトの挙動をシミュレートする。この際のユーザオブジェクトの移動位置の予測もまた、例えばカルマンフィルタ等を用いて行うことができる。
【０１０９】
なお、これらの例において同期タイミングを定めるタイミング決定ルールは、例えば、最後に同期してからの経過時間や、ユーザオブジェクトの移動速度、他のオブジェクトの移動速度等に応じて定めることができる。例えば最後に同期してからの経過時間が一定の時間に達するごとに同期タイミングを定めてもよい（この場合は一定の間隔で同期が行われる）し、ユーザオブジェクトの移動速度や他のオブジェクトの移動速度が高速になればなるほど短く設定される時間しきい値を演算し、最後に同期してからの経過時間が演算した時間しきい値を越えるときに同期タイミングを定めてもよい。
【０１１０】
さらに同期タイミングにおいては、すべての個別シミュレータ３との間で同期を行う必要は必ずしもない。例えばユーザ端末１は、ユーザオブジェクトの視野範囲の情報を用いて、各個別シミュレータ３に対して、当該視野範囲内に存在するオブジェクトがあるか否かを問い合わせる。
【０１１１】
各個別シミュレータ３は、指定された視野範囲内に存在するオブジェクトがあるか否かをそれぞれ判断し、視野範囲内に存在するオブジェクトがある場合は、その旨をユーザ端末１に対して送出する。ユーザ端末１は、視野範囲内に存在するオブジェクトがある旨の回答を送出した個別シミュレータ３を特定する情報のリストを記憶する。この情報のリスト（以下、対象シミュレータリストと呼ぶ）は、所定のタイミングごとに、例えば定期的に更新する。
【０１１２】
ユーザ端末１は、当初（初期化時）には、記憶しているリストの情報で特定されるすべての個別シミュレータ３に対して視野範囲内に存在するオブジェクトの情報を要求する。そして、各個別シミュレータ３はユーザオブジェクトの視野範囲内にあるオブジェクトのリストを生成して、ユーザ端末１へ送信する。
【０１１３】
また、ユーザ端末１は、対象シミュレータリストに新規に追加される個別シミュレータ３があれば、当該新規に追加された個別シミュレータ３に対しては、ユーザオブジェクトの視野範囲内に存在するオブジェクトの情報を要求する（上述の検索処理）。そして、各個別シミュレータ３はユーザオブジェクトの視野範囲内にあるオブジェクトのリストを生成して、ユーザ端末１へ送信する。
【０１１４】
ユーザ端末１では、これらのように個別シミュレータ３からオブジェクトの情報を受信すると、図示しない時計部からデータを取得した時点を表すタイムスタンプ情報を取得し、各個別シミュレータ３から受信したデータ量と当該タイムスタンプ情報とを、各個別シミュレータ３を特定する情報に関連づけて、受信データ量データベースとして記憶しておく。
【０１１５】
ユーザ端末１は、同期タイミングが到来したと判断した時点から、個別シミュレータ３がシミュレートを行って次のステップにおけるオブジェクトの位置の演算を完了するまでの時間（余裕時間）を調べる。そして当該余裕時間内に取得可能なデータ量を取得可能データ量として演算する。
【０１１６】
ユーザ端末１は、記憶している受信データ量データベースを参照し、当該演算した取得可能データ量以下のデータ量に関連づけられ、かつ、対象シミュレータリストに含まれる個別シミュレータ３を特定する情報を予備的に選択する。
【０１１７】
そして予備的に選択した個別シミュレータ３を特定する情報のうち、最も古いタイムスタンプ情報に関連づけられている個別シミュレータ３を特定する情報を一つ選択する。なお、最も古いタイムスタンプ情報に関連づけられている個別シミュレータ３を特定する情報が複数あれば、ランダムにそのうちの一つを選択してもよい。
【０１１８】
ユーザ端末１は、最終的に選択した情報で特定される個別シミュレータ３に対して、ユーザオブジェクトの視野範囲内に存在するオブジェクトの情報を要求する。そして、当該個別シミュレータ３が送出するオブジェクトのリストを取得する。そして図示しない時計部からデータを取得した時点を表すタイムスタンプ情報を取得し、上記最終的に選択した個別シミュレータ３から受信したデータ量と当該タイムスタンプ情報とを、個別シミュレータ３を特定する情報に関連づけて格納し、受信データ量データベースの内容を更新する。
【０１１９】
また、ユーザ端末１は、少なくとも一つの個別シミュレータ３からオブジェクトのシミュレート結果に係る情報を受信するごとに、同期タイミングが到来したと判断して、当該受信した情報の送信元である個別シミュレータ３に対して、ユーザオブジェクトの情報を送出する。
【０１２０】
なお、個別シミュレータ３は、相互通信制御装置２に対してオブジェクトのリストを送出するときに、個別シミュレータ３内で予測しているユーザオブジェクトの位置などの情報を併せて送出してもよい。ユーザ端末１では、この予測されている情報と、現実にユーザの操作によって変化したユーザオブジェクトの情報とを比較して、例えば予測された位置と現実の位置とが予め定めたしきい値以上に離れている場合に、ユーザオブジェクトの情報を、個別シミュレータ３へ送出するようにしてもよい。
【０１２１】
ユーザオブジェクトの情報を受信した個別シミュレータ３は、当該ユーザオブジェクトの情報を記憶部３２に格納して、以降のシミュレーションに利用する。
【０１２２】
この例によると、第１の実施の形態におけるのと同様に、ユーザ端末１と、当該ユーザ端末１が選択した個別シミュレータ３とが時間をおいて同期しており（図８のステップ（ａ））、ユーザ端末１側では、最後の同期で取得したオブジェクトの移動を予測しつつ表示を行っており（図８のステップ（ｂ））、同様に個別シミュレータ３側でもユーザオブジェクトの移動を予測してオブジェクトの挙動をシミュレートしており（図８のステップ（ｃ））、次の同期が行われた際には、それぞれ受信したオブジェクトの情報やユーザオブジェクトの情報に基づいて予測の結果を補正していく（図８のステップ（ｄ））。これにより、同期を毎ステップごとに行う必要がなくなり、通信負担を軽減できる。
【０１２３】
さらに、ここまでの説明においては、ユーザ端末１と、相互通信制御装置２と、個別シミュレータ３とをそれぞれ別体のコンピュータ装置によって実現し、相互にネットワークを介して接続する例について述べたが、本発明の実施形態は、これらに限られるものではない。例えば、ユーザ端末１と、相互通信制御装置２と、個別シミュレータ３とを一体のコンピュータ装置で構成しても構わない。また、別の例では、相互通信制御装置２と個別シミュレータ３とを一体のコンピュータ装置で構成し、ユーザ端末１との間で通信可能に接続してもよい。このとき、制御部２１と制御部３１、記憶部２２と記憶部３２、通信部２３と通信部３３とは、コンピュータ装置内で共通のものであってもよいし、別のハードウエア（例えばマルチプロセッサの場合、制御部２１と制御部３１とは各個別のプロセッサとすることができる）であってもよい。なお、ユーザ端末１と、相互通信制御装置２と、個別シミュレータ３とを一体のコンピュータ装置で構成した場合、プロセッサを、ユーザ端末１と、相互通信制御装置２と、個別シミュレータ３とのそれぞれとして機能させるプログラムが、コンピュータ可読な記憶媒体としての記憶部２２または記憶部３２に格納される。同様に、相互通信制御装置２と、個別シミュレータ３とを一体のコンピュータ装置で構成した場合、プロセッサを、相互通信制御装置２と、個別シミュレータ３とのそれぞれとして機能させるプログラムが、コンピュータ可読な記憶媒体としての記憶部２２または記憶部３２に格納されることとなる。
【０１２４】
これらの場合、相互通信制御装置２や個別シミュレータ３を実現するコンピュータ装置は、相互通信制御装置２としてのプロセスや、個別シミュレータ３としての複数のプロセスを並列的に動作させる。また、ユーザ端末１も一体の装置で実現する場合は、ユーザ端末１としてのプロセスも並列的に動作させる。この並列動作については、種々の方法を採用できるが、複数のプロセッサ（プログラム制御デバイス）を備えたコンピュータ装置であれば、クラスタシステムやグリッド、各プロセッサ間を仮想的なネットワークで接続した態様など、種々の構成で実現できる。
【０１２５】
これらのように、ユーザ端末１と、相互通信制御装置２と、個別シミュレータ３とを一体のコンピュータ装置で実現する場合も、相互通信制御装置２と個別シミュレータ３とを一体のコンピュータ装置で実現し、ユーザ端末１との間で通信可能に接続する場合も、各個別シミュレータ３としての動作のうちで、通知対象となるオブジェクトがあるか否かを調べ、通知対象となるオブジェクトがあれば、相互通信制御装置２のプロセスへ、当該オブジェクトの情報を出力する。相互通信制御装置２としてのプロセスでは、当該オブジェクトの情報の入力を受けて、各オブジェクトの情報を出力した個別シミュレータ３を特定する情報（プログラムの実行プロセスＩＤなど）に関連づけて、各オブジェクトの情報を記録し、当該記録した情報と、依存関係データベースとを参照して、実行するべき処理があるか否かを調べ、実行するべき処理があれば、当該処理を実行してその結果を、当該処理に関連づけて依存関係データベースに記録されている個別シミュレータ３としてのプロセスに出力する。
【０１２６】
また、これらの場合であっても、相互通信制御装置２が管理する複数の個別シミュレータ３の一部は、ネットワークを介して他のコンピュータ装置において実行されていてもよい。この場合、相互通信制御装置２として機能させるプログラムに、他のコンピュータ装置からオブジェクトに係る情報を受信して保持し、依存関係の判断に供するプログラムモジュールと、依存関係に関わる処理の結果を、他のコンピュータ装置へ送出する処理に係るプログラムモジュールとを含む。
【図面の簡単な説明】
【０１２７】
【図１】本発明の第１の実施の形態に係るシミュレーションシステムの構成ブロック図である。
【図２】本発明の第１の実施の形態に係る個別シミュレータの構成例を表すブロック図である。
【図３】本発明の第１、第２の実施の形態に係る相互通信制御装置の構成例を表すブロック図である。
【図４】本発明の実施の形態に係る依存関係データベースの内容例を表す説明図である。
【図５】本発明の実施の形態に係るシミュレーションシステムの一例に係る機能ブロック図である。
【図６】本発明の実施の形態に係るシミュレーションシステムの動作例を表す流れ図である。
【図７】本発明の実施の形態に係るシミュレーションシステムのユーザ端末の別の例に係る機能ブロック図である。
【図８】本発明の実施の形態に係るシミュレーションシステムの別の動作例を表す説明図である。
【図９】本発明の第２の実施の形態に係るシミュレーションシステムの構成ブロック図である。
【符号の説明】
【０１２８】
１  ユーザ端末、２  相互通信制御装置、３  個別シミュレータ、２１，３１  制御部、２２，３２  記憶部、２３，３３  通信部、４１  ユーザオブジェクト管理部、４２  ユーザ視野表示部、５１  相互通信制御部、５２  検索処理部、５３  依存関係判断部、５４  衝突判定部、５５  依存関係データベース、６１  シミュレーションエンジン部、６２  オブジェクトデータ記憶部、６３  通知判定部。
【図１】
0005132058.tif 000002
【図２】
0005132058.tif 000003
【図３】
0005132058.tif 000004
【図４】
0005132058.tif 000005
【図５】
0005132058.tif 000006
【図６】
0005132058.tif 000007
【図７】
0005132058.tif 000008
【図８】
0005132058.tif 000009
【図９】
0005132058.tif 000010