(57)【要約】【課題】  距離測定用の通信量を低減させつつ、Ｐ２Ｐ方式における各計算機間のデータ配送の遠回りや遅延を解消し、データ更新を迅速に実行する。【解決手段】  仮想空間を分割してなる仮想空間単位領域を代表計算機が接続する仮想トポロジと、仮想空間単位領域内で代表計算機及び残りの計算機を接続する物理トポロジとからなる接続形態を用いる。各計算機間では、仮想空間単位領域内の場合、物理ネットワークを元にした物理トポロジにてメッセージを配送するので、仮想空間上で相手との関係動作が遅延する問題が無く、また、物理ネットワーク上でデータを遠回りして配送する問題が無い。一方、仮想空間単位領域外の場合、仮想空間を元にした仮想トポロジにてメッセージを配送するので、物理トポロジを形成する計算機を仮想空間単位領域内の計算機に限定でき、物理ネットワーク距離測定用の通信量を低減できる。【選択図】  図１
2006033384.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間を部分的に生成する複数台の計算機が互いに接続され、ある計算機が仮想空間の状態を更新する際に、前記更新のためのメッセージを他の計算機に配送するメッセージ配送方法であって、
前記各計算機の接続形態は、
前記仮想空間が分割されてなる複数個の仮想空間単位領域に関し、前記各計算機の仮想空間上の座標値に基づいて、前記各仮想空間単位領域のうちの隣合う仮想空間単位領域を個別に代表する計算機同士を接続して形成した仮想トポロジと、
前記各仮想空間単位領域毎に、当該仮想空間単位領域に含まれる計算機同士を当該計算機間の物理ネットワーク上の距離に基づいて接続して形成した物理トポロジと、からなる形態であり、
前記各計算機は、
予め前記仮想トポロジ上で隣に接続された隣接計算機のアドレス情報をメモリに記憶する工程と、
予め前記物理トポロジ上で隣に接続された隣接計算機のアドレス情報をメモリに記憶する工程と、
前記更新のためのメッセージを受信する工程と、
前記受信の後、前記メモリから隣接計算機のアドレス情報を読出す工程と、
前記読出したアドレス情報に向けて前記メッセージを配送する工程と
を備えたことを特徴とするメッセージ配送方法。
【請求項２】
仮想空間を部分的に生成する複数台の計算機が互いに接続され、ある計算機が仮想空間の状態を更新する際に、前記更新のためのメッセージを他の計算機に配送するメッセージ配送方法に用いられる各々の計算機であって、
前記各計算機の接続形態は、
前記仮想空間が分割されてなる複数個の仮想空間単位領域に関し、前記各計算機の仮想空間上の座標値に基づいて、前記各仮想空間単位領域のうちの隣合う仮想空間単位領域を個別に代表する計算機同士を接続して形成した仮想トポロジと、
前記各仮想空間単位領域毎に、当該仮想空間単位領域に含まれる計算機同士を当該計算機間の物理ネットワーク上の距離に基づいて接続して形成した物理トポロジと、からなる形態であり、
前記各計算機は、
予め前記仮想トポロジ上で隣に接続された隣接計算機のアドレス情報が記憶される仮想トポロジ隣接計算機記憶手段と、
予め前記物理トポロジ上で隣に接続された隣接計算機のアドレス情報が記憶される物理トポロジ隣接計算機記憶手段と、
前記更新のためのメッセージを受信する手段と、
前記受信の後、前記各記憶手段から隣接計算機のアドレス情報を読出す手段と、
前記読出したアドレス情報に向けて前記メッセージを配送する手段と
を備えたことを特徴とする計算機。
【請求項３】
請求項２に記載の計算機において、
担当する仮想空間単位領域の境界情報が記憶される担当領域記憶手段と、
前記接続形態に新規加入する際に、仮想空間上の自己の座標値を含む計算機検索要求メッセージを生成する手段と、
前記計算機検索要求メッセージを送信する手段と、
前記送信の後、前記座標値を含む仮想空間単位領域を代表する計算機から、この仮想空間単位領域を担当する全ての計算機のアドレス情報を含む検索結果“あり”メッセージを受信する手段と、
前記検索結果“あり”メッセージ内のいずれかのアドレス情報が示す計算機に対し、担当する仮想空間単位領域の境界情報を要求し、得られた境界情報を前記担当領域記憶手段に書込む手段と、
前記検索結果“あり”メッセージ内の全てのアドレス情報が示す全ての計算機との間の物理ネットワーク距離を測定する手段と、
この測定結果のうち、最短の物理ネットワーク距離をもつ計算機のアドレス情報を前記物理トポロジ隣接計算機記憶手段に書込む手段と、
前記計算機検索要求メッセージの送信の後、前記仮想トポロジ上の隣接計算機から当該隣接計算機のアドレス情報を含む検索結果“無し”メッセージを受信する手段と、
前記検索結果“無し”メッセージ内の隣接計算機のアドレス情報を前記仮想トポロジ隣接計算機記憶手段に書込む手段と
を備えたことを特徴とする計算機。
【請求項４】
請求項３に記載の計算機において、
予め前記担当する仮想空間単位領域内の全ての計算機のアドレス情報が記憶される担当領域内全計算機記憶手段と、
他の計算機から送信された当該他の計算機における仮想空間上の座標値と物理ネットワーク上の送信元アドレス情報とを含む計算機検索要求メッセージを受信する手段と、
この計算機検索要求メッセージ内の座標値が、担当している仮想空間単位領域に含まれるか否かを判定する担当領域判定手段と、
前記担当領域判定手段による判定の結果、座標値が含まれる場合、前記担当領域内全計算機記憶手段に記憶された全てのアドレス情報を含む検索結果“あり”メッセージを前記送信元アドレス情報に向けて返信する手段と、
前記担当領域判定手段による判定の結果、座標値が含まれない場合、担当する仮想空間単位領域よりも当該座標値に近い仮想空間単位領域を担当する隣接計算機があるか否かを判定する隣接領域判定手段と、
前記隣接領域判定手段による判定の結果、隣接計算機がある場合、この隣接計算機に計算機検索要求メッセージを配送する手段と、
前記隣接領域判定手段による判定の結果、隣接計算機が無い場合、自己のアドレス情報を含む検索結果“無し”メッセージを前記送信元アドレス情報に向けて返信する手段と
を備えたことを特徴とする計算機。
【請求項５】
請求項２に記載の計算機であって、
前記仮想空間の配送領域情報を含むメッセージを受信する手段と、
前記メッセージに含まれる配送領域情報に基づいて前記各記憶手段を参照し、当該配送領域情報に対応する境界情報を持つ仮想空間単位領域内の隣接計算機のアドレス情報を前記仮想トポロジ隣接記憶手段又は前記物理トポロジ隣接計算機記憶手段から読出す手段と、
前記読出したアドレス情報に向けて前記メッセージを配送する手段と
を備えたことを特徴とする計算機。
【請求項６】
請求項３又は請求項４に記載の計算機において、
予め担当する仮想空間単位領域内の全ての計算機のアドレス情報が記憶される担当領域内全計算機記憶手段と、
前記メッセージに含まれる座標値が、担当している仮想空間単位領域に含まれるとき、前記担当領域内全計算機記憶手段内の各アドレス情報に向けて、前記仮想空間上のシミュレーション担当領域情報を要求し、各シミュレーション担当領域情報を受信する手段と、
前記各シミュレーション担当領域情報のうち、前記メッセージに含まれる座標値を含むシミュレーション担当領域情報を選択する手段と、
前記選択したシミュレーション担当領域情報が示すシミュレーション担当領域を、前記メッセージに含まれる座標値に基づいて二分割し、この座標値を含む第１シミュレーション担当領域と、残りの第２シミュレーション担当領域とを得る手段と、
前記第１シミュレーション担当領域を示す第１シミュレーション担当領域情報を前記メッセージの送信元に返信する手段と、
前記第２シミュレーション担当領域を示す第２シミュレーション担当領域情報を、前記選択されたシミュレーション領域情報の送信元に返信する手段と
を備えたことを特徴とする計算機。
【請求項７】
仮想空間を部分的に生成する複数台の計算機が互いに接続され、ある計算機が仮想空間の状態を更新する際に、前記更新のためのメッセージを他の計算機に配送するメッセージ配送方法に用いられる各々の計算機にインストールされるプログラムであって、
前記各計算機の接続形態は、
前記仮想空間が分割されてなる複数個の仮想空間単位領域に関し、前記各計算機の仮想空間上の座標値に基づいて、前記各仮想空間単位領域のうちの隣合う仮想空間単位領域を個別に代表する計算機同士を接続して形成した仮想トポロジと、
前記各仮想空間単位領域毎に、当該仮想空間単位領域に含まれる計算機同士を当該計算機間の物理ネットワーク上の距離に基づいて接続して形成した物理トポロジと、からなる形態であり、
前記プログラムは前記インストールした計算機を、
予め前記仮想トポロジ上で隣に接続された隣接計算機のアドレス情報が記憶される仮想トポロジ隣接計算機記憶手段を形成する手段、
予め前記物理トポロジ上で隣に接続された隣接計算機のアドレス情報が記憶される物理トポロジ隣接計算機記憶手段を形成する手段、
前記更新のためのメッセージを受信する手段、
前記受信の後、前記各記憶手段から隣接計算機のアドレス情報を読出す手段、
前記読出したアドレス情報に向けて前記メッセージを配送する手段、
として機能させるためのプログラム。
【請求項８】
請求項７に記載のプログラムにおいて、
前記インストールした計算機を、
担当する仮想空間単位領域の境界情報が記憶される担当領域記憶手段を形成する手段、
前記接続形態に新規加入する際に、仮想空間上の自己の座標値を含む計算機検索要求メッセージを生成する手段、
前記計算機検索要求メッセージを送信する手段、
前記送信の後、前記座標値を含む仮想空間単位領域を代表する計算機から、この仮想空間単位領域を担当する全ての計算機のアドレス情報を含む検索結果“あり”メッセージを受信する手段、
前記検索結果“あり”メッセージ内のいずれかのアドレス情報が示す計算機に対し、担当する仮想空間単位領域の境界情報を要求し、得られた境界情報を前記担当領域記憶手段に書込む手段、
前記検索結果“あり”メッセージ内の全てのアドレス情報が示す全ての計算機との間の物理ネットワーク距離を測定する手段、
この測定結果のうち、最短の物理ネットワーク距離をもつ計算機のアドレス情報を前記物理トポロジ隣接計算機記憶手段に書込む手段、
前記計算機検索要求メッセージの送信の後、前記仮想トポロジ上の隣接計算機から当該隣接計算機のアドレス情報を含む検索結果“無し”メッセージを受信する手段、
前記検索結果“無し”メッセージ内の隣接計算機のアドレス情報を前記仮想トポロジ隣接計算機記憶手段に書込む手段、
として機能させるためのプログラム。
【請求項９】
請求項８に記載のプログラムにおいて、
前記インストールした計算機を、
予め前記担当する仮想空間単位領域内の全ての計算機のアドレス情報が記憶される担当領域内全計算機記憶手段を形成する手段、
他の計算機から送信された当該他の計算機における仮想空間上の座標値と物理ネットワーク上の送信元アドレス情報とを含む計算機検索要求メッセージを受信する手段、
この計算機検索要求メッセージ内の座標値が、担当している仮想空間単位領域に含まれるか否かを判定する担当領域判定手段、
前記担当領域判定手段による判定の結果、座標値が含まれる場合、前記担当領域内全計算機記憶手段に記憶された全てのアドレス情報を含む検索結果“あり”メッセージを前記送信元アドレス情報に向けて返信する手段、
前記担当領域判定手段による判定の結果、座標値が含まれない場合、担当する仮想空間単位領域よりも当該座標値に近い仮想空間単位領域を担当する隣接計算機があるか否かを判定する隣接領域判定手段、
前記隣接領域判定手段による判定の結果、隣接計算機がある場合、この隣接計算機に計算機検索要求メッセージを配送する手段、
前記隣接領域判定手段による判定の結果、隣接計算機が無い場合、自己のアドレス情報を含む検索結果“無し”メッセージを前記送信元アドレス情報に向けて返信する手段、
として機能させるためのプログラム。
【請求項１０】
請求項７に記載のプログラムであって、
前記インストールした計算機を、
前記仮想空間の配送領域情報を含むメッセージを受信する手段、
前記メッセージに含まれる配送領域情報に基づいて前記各記憶手段を参照し、当該配送領域情報に対応する境界情報を持つ仮想空間単位領域内の隣接計算機のアドレス情報を前記仮想トポロジ隣接記憶手段又は前記物理トポロジ隣接計算機記憶手段から読出す手段、
前記読出したアドレス情報に向けて前記メッセージを配送する手段、
として機能させるためのプログラム。
【請求項１１】
請求項８又は請求項９に記載のプログラムにおいて、
前記インストールした計算機を、
予め担当する仮想空間単位領域内の全ての計算機のアドレス情報が記憶される担当領域内全計算機記憶手段を形成する手段、
前記メッセージに含まれる座標値が、担当している仮想空間単位領域に含まれるとき、前記担当領域内全計算機記憶手段内の各アドレス情報に向けて、前記仮想空間上のシミュレーション担当領域情報を要求し、各シミュレーション担当領域情報を受信する手段、
前記各シミュレーション担当領域情報のうち、前記メッセージに含まれる座標値を含むシミュレーション担当領域情報を選択する手段、
前記選択したシミュレーション担当領域情報が示すシミュレーション担当領域を、前記メッセージに含まれる座標値に基づいて二分割し、この座標値を含む第１シミュレーション担当領域と、残りの第２シミュレーション担当領域とを得る手段、
前記第１シミュレーション担当領域を示す第１シミュレーション担当領域情報を前記メッセージの送信元に返信する手段、
前記第２シミュレーション担当領域を示す第２シミュレーション担当領域情報を、前記選択されたシミュレーション領域情報の送信元に返信する手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間を分散管理する各計算機が互いにメッセージを配送するメッセージ配送方法、計算機及びプログラムに係り、データ配送の遠回りや遅延を解消でき、データ更新を迅速に実行し得るメッセージ配送方法、計算機及びプログラムに関する。
【背景技術】
【０００２】
ロールプレイングゲーム、軍事シミュレータ、３Ｄチャット等は、計算機上に論理的な空間を生成し、その空間内で様々なオブジェクトを行動させるアプリケーションである。この種のアプリケーションが提供する論理的な空間は、一般に「仮想空間」と呼ばれる。
【０００３】
ここで、仮想空間は、近年のＡＤＳＬ(Asymmetric Digital Subscriber)，ＦＴＴＨ(Fiber To The Home)などの通信基盤の発展に伴い、ネットワークを通じて複数台の計算機で共有可能となっている。
【０００４】
仮想空間の共有手法としては、例えば、複数台の計算機で仮想空間を分散管理するＰ２Ｐ(Peer to Peer / Personal to Personal)方式が知られている。Ｐ２Ｐ方式では、仮想空間上の様々なオブジェクトの状態を示すデータを集中的に管理する計算機が無く、複数台の計算機がデータの一部、もしくは全部のコピーを持っている。各計算機は、仮想空間の処理中にデータを変更すると、変更内容をメッセージ通信により他の計算機に伝える。
【０００５】
このとき、理想的には全ての計算機同士を直接接続した形態が好ましいが、この形態は、計算機の台数に応じて各計算機が管理する接続数が増大し、管理の負荷が膨大になる。よって現実的には、幾つかの計算機が直接接続され、残りの計算機が他の計算機を介して間接接続されるネットワーク接続形態が使用される。なお、ネットワーク接続形態は一般に「トポロジ」と呼ばれる。このため、以下、ネットワーク接続形態をトポロジと呼ぶ。
【０００６】
トポロジを構成する手法としては、第１及び第２の手法が知られている。第１の手法は、各計算機に対応づけられた仮想空間上の座標値を元にトポロジを構成する方式である（例えば、非特許文献１参照。）。なお、仮想空間上の座標値は、通常の場合、計算機が仮想空間上で制御するオブジェクト（アバター）の座標値が用いられる。
【０００７】
第１の手法は、仮想空間上のアバター間の距離が近いほど、アバター同士が相互作用する可能性が高いという性質を利用する。例えば、互いに近くに配置されたアバターａ，ｂと、両アバターａ，ｂから遠くに配置されたアバターｃとがあるとする。
【０００８】
アバターｂを制御する計算機は、アバターａが手を挙げると、アバターａを制御する計算機から「手を挙げた」というデータ更新のメッセージを可能な限り早く受信し、アバターａのデータを更新及び描画表示する必要がある。一方、遠くのアバターｃを制御する計算機は、アバターａのデータを早く更新する必要がなく、アプリケーションによってはアバターａのデータすら持っていない場合もある。
【０００９】
ここで、第１の手法は、仮想空間上の座標値を元にトポロジを構成するので、近接しているアバターａ，ｂ間のデータ更新に有効である。また、第１の手法は、データ配送を近傍領域のみに限定し、遠方領域にはデータ配送をしないことにより、データ転送量及び処理量を低減可能となっている。
【００１０】
しかしながら、第１の手法は、１ホップの範囲へのデータ送信は早いが、２ホップ以上の範囲へのデータ送信が遅くなる状況が多々ある。この状況は、仮想空間上で近いアバター同士を制御する各計算機が、物理ネットワーク上では遠く離れるときに生じる。このとき、第１の手法では、近いアバターを介してデータを配送するものの、物理ネットワーク上では遠回りをするので、２ホップ以上の範囲へのデータ送信が遅くなる。
【００１１】
この種の遠回りは、メッセージの伝搬範囲が広くなると生じ易くなり、物理ネットワーク上の総トラフィック量を増大させる問題がある。
【００１２】
一方、第２の手法は、物理ネットワーク上の位置を元に効率の良いトポロジを構成する方式である（例えば、非特許文献２参照。）。第２の手法は、実際に相手の計算機に対してデータを送信し、その返信により物理ネットワーク上の距離を測定し、距離が近い計算機と接続してトポロジを構成する。しかしながら、第２の手法は、多数の計算機からなるＰ２Ｐ方式に適用する場合、各計算機間の距離を測定するための通信量が膨大になる。
【００１３】
また、第２の手法は、仮想空間上で近いアバターを管理する計算機同士がトポロジ上で遠く離れる場合がある。そのため、第２の手法は、第１の手法とは異なり、仮想空間上では近い距離にも関わらず、相手の動作に関係した動作が遅延し易い問題がある。
【非特許文献１】川原圭博、松本延孝、森川博之、青山友紀、「ネットワーク型仮想環境のための分散型通信アーキテクチャ」、信学会技報，IN−２００１−２２９，（２００２，３）
【非特許文献２】Ｃ−Ｋ．トー（C−K.Toh）著、構造計画研究所訳、「アドホックモバイルワイヤレスネットワーク」、共立出版
【発明の開示】
【発明が解決しようとする課題】
【００１４】
以上説明したように、トポロジを構成するための第１の手法は、仮想空間上の座標値を元にトポロジを構成することから、物理ネットワーク上でデータを遠回りして配送する問題がある。一方、第２の手法は、物理ネットワーク上の距離を元にトポロジを構成することから、仮想空間上で相手との関係動作が遅延する問題がある。すなわち、第１及び第２の手法は、互いに逆の関係の問題がある。これに加え、第２の手法は、距離を測定するための通信量が膨大になるので、適用が困難である。
【００１５】
本発明は上記実情を考慮してなされたもので、距離測定用の通信量を低減させつつ、Ｐ２Ｐ方式における各計算機間のデータ配送の遠回りや遅延を解消でき、データ更新を迅速に実行し得るメッセージ配送方法、計算機及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
第１の発明は、仮想空間を部分的に生成する複数台の計算機が互いに接続され、ある計算機が仮想空間の状態を更新する際に、前記更新のためのメッセージを他の計算機に配送するメッセージ配送方法であって、前記各計算機の接続形態としては、前記仮想空間が分割されてなる複数個の仮想空間単位領域に関し、前記各計算機の仮想空間上の座標値に基づいて、前記各仮想空間単位領域のうちの隣合う仮想空間単位領域を個別に代表する計算機同士を接続して形成した仮想トポロジと、前記各仮想空間単位領域毎に、当該仮想空間単位領域に含まれる計算機同士を当該計算機間の物理ネットワーク上の距離に基づいて接続して形成した物理トポロジと、からなる形態であり、前記各計算機としては、予め前記仮想トポロジ上で隣に接続された隣接計算機のアドレス情報をメモリに記憶する工程と、予め前記物理トポロジ上で隣に接続された隣接計算機のアドレス情報をメモリに記憶する工程と、前記更新のためのメッセージを受信する工程と、前記受信の後、前記メモリから隣接計算機のアドレス情報を読出す工程と、前記読出したアドレス情報に向けて前記メッセージを配送する工程とを備えたメッセージ配送方法である。
【００１７】
第２の発明は、仮想空間を部分的に生成する複数台の計算機が互いに接続され、ある計算機が仮想空間の状態を更新する際に、前記更新のためのメッセージを他の計算機に配送するメッセージ配送方法に用いられる各々の計算機であって、前記各計算機の接続形態としては、前記仮想空間が分割されてなる複数個の仮想空間単位領域に関し、前記各計算機の仮想空間上の座標値に基づいて、前記各仮想空間単位領域のうちの隣合う仮想空間単位領域を個別に代表する計算機同士を接続して形成した仮想トポロジと、前記各仮想空間単位領域毎に、当該仮想空間単位領域に含まれる計算機同士を当該計算機間の物理ネットワーク上の距離に基づいて接続して形成した物理トポロジと、からなる形態であり、前記各計算機としては、予め前記仮想トポロジ上で隣に接続された隣接計算機のアドレス情報が記憶される仮想トポロジ隣接計算機記憶手段と、予め前記物理トポロジ上で隣に接続された隣接計算機のアドレス情報が記憶される物理トポロジ隣接計算機記憶手段と、前記更新のためのメッセージを受信する手段と、前記受信の後、前記各記憶手段から隣接計算機のアドレス情報を読出す手段と、前記読出したアドレス情報に向けて前記メッセージを配送する手段とを備えた計算機である。
【００１８】
（作用）
第１及び第２の発明は、仮想空間を分割してなる仮想空間単位領域を代表の計算機が接続する仮想トポロジと、仮想空間単位領域内で代表の計算機及び残りの計算機を接続する物理トポロジとからなる接続形態をとっている。
【００１９】
これにより、更新のためのメッセージを全ての計算機に伝搬させる際に、各計算機は、仮想空間単位領域内の近くの隣接計算機には、物理ネットワークを元にした物理トポロジにてメッセージを配送するので、従来とは異なり、仮想空間上で相手との関係動作が遅延する問題が無く、また、物理ネットワーク上でデータを遠回りして配送する問題が無い。
【００２０】
一方、仮想空間単位領域外の遠くの隣接計算機には、仮想空間を元にした仮想トポロジにてメッセージを配送するので、物理トポロジを形成する計算機を仮想空間単位領域内の計算機のみに限定でき、従来とは異なり、物理ネットワーク距離を測定するための通信量を著しく低減させることができる。
【００２１】
このように第１及び第２の発明は、物理トポロジ及び仮想トポロジを組合せて用いる構成により、距離測定用の通信量を低減しつつ、Ｐ２Ｐ方式における各計算機間のデータ配送の遠回りや遅延を解消でき、データ更新を迅速に実行することができる。
【発明の効果】
【００２２】
以上説明したように本発明によれば、距離測定用の通信量を低減しつつ、Ｐ２Ｐ方式における各計算機間のデータ配送の遠回りや遅延を解消でき、データ更新を迅速に実行できる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明に係る各実施形態について図面を参照しながら説明するが、その前に各実施形態に共通するトポロジについて図１を用いて述べる。
【００２４】
図１（ａ）は仮想空間に複数のアバターが存在する状況を示している。仮想空間を区切る矩形は仮想空間単位領域を示し、丸印は仮想空間上の座標値に位置するアバターを示している。アバターとは、計算機に対して一対一に対応した仮想空間上の一つの座標を用いるオブジェクトの具体例である。計算機に対して一対一に対応する仮想空間上の座標のことを「仮想空間座標」とも呼ぶ。
【００２５】
図１（ｂ）はアバターを制御する計算機とそのトポロジを示している。図１（ｂ）中、アバターａを制御する計算機を符号Ａで示し，アバターｂを制御する計算機を符号Ｂで示す。以下同様に、アバタと計算機とを同一アルファベットの小文字と大文字とで表している。
【００２６】
同一の仮想空間単位領域にアバターがいる計算機は同一の仮想空間単位領域を管理する。例えば計算機Ａ，Ｂ，Ｃはアバターａ，ｂ，ｃがいる仮想空間単位領域を管理し、計算機Ｄ，Ｅ，Ｆはアバターｄ，ｅ，ｆがいる仮想空間単位領域を管理する。以下同様に、計算機Ｏ，Ｐはアバターｏ，ｐがいる仮想空間単位領域を管理する。
【００２７】
図１（ｂ）から分かるように、トポロジを構成するリンクは、（１）隣接した２つの仮想空間単位領域をまたがるリンクと、（２）仮想空間単位領域の中に閉じたリンクと、の二種類がある。
【００２８】
（１）のリンクは、互いに隣接する仮想空間単位領域に関し、各仮想空間単位領域を個別に代表する計算機同士をリンクしている。（１）のリンクは、仮想空間単位領域に基づくトポロジを構成することから、「仮想トポロジ」と呼ぶ。
【００２９】
（２）のリンクは、各計算機間の物理ネットワークの距離に基づいたトポロジを構成することから、「物理トポロジ」と呼ぶ。
【００３０】
計算機Ａが属する仮想空間単位領域を計算機Ａの「仮想トポロジ担当領域」と呼ぶ。
【００３１】
Ｐ２Ｐ方式の仮想空間アプリケーションは、仮想空間内の複数の領域のうち、どの領域のシミュレーションをどの計算機が担当するかを決定しなければならない。ここで、決定された担当領域を「シミュレーション担当領域」と呼ぶ。なお、以下の第１及び第２の実施形態は、ある計算機の「仮想トポロジ担当領域」と「シミュレーション担当領域」とが同じである。第３の実施形態は、ある計算機の「仮想トポロジ担当領域」と「シミュレーション担当領域」とが異なっている。
【００３２】
（第１の実施形態）
図２は本発明の第１の実施形態に係る計算機群を構成する各計算機の構成を示す模式図である。各計算機１０は、仮想空間を分散管理するものであり、メッセージ受信部１１、メッセージ送信部１２、仮想トポロジ隣接計算機管理部１３、物理トポロジ隣接計算機管理部１４、仮想トポロジ担当領域内全計算機管理部１５、配送先決定部１６、仮想トポロジ担当領域管理部１７、物理ネットワーク距離測定部１８、ランデブー計算機リスト１９、仮想空間座標管理部２０、メッセージ生成部２１、仮想空間シミュレータ２２、シミュレーション担当領域管理部２３、オブジェクト管理部２４を備えている。
【００３３】
ここで、メッセージ受信部１１は、他の計算機から送信されたメッセージを受信する機能と、メッセージを解析する機能と、解析結果に基づいて各管理部１３，１４，１７を参照しながら、配送先決定部１６、物理ネットワーク距離測定部１８、メッセージ生成部２１又はオブジェクト管理部２４に対し、メッセージの送出や処理の依頼を実行する機能とをもっている。また、メッセージ受信部１１は、メッセージＩＤ記録部を有し、処理したメッセージのＩＤを記録して同一メッセージを再処理することを防いでいる。
【００３４】
詳しくはメッセージ受信部１１は、図３に示すように、受信に関する処理機能(f11-1)〜(f11-5)と、受信メッセージの処理機能(f11-11)〜(f11-102)とを有している。  
受信に関する処理機能(f11-1)〜(f11-5)は、次の内容である。
【００３５】
(f11-1)  メッセージを受信すると、メッセージＩＤを取り出す。  
(f11-2)  メッセージＩＤ記録部に同一メッセージＩＤが記録済みか否かを判定する。
【００３６】
(f11-3)  記録済みの場合、以前に同一メッセージの処理をしたのでこのメッセージに対する処理を終了する。  
(f11-4)  記録済みでない場合、メッセージＩＤをメッセージＩＤ記録部に記録する。
【００３７】
(f11-5)  記録の後、このメッセージからメッセージタイプ（種類）を取り出す。  
受信メッセージの処理機能(f11-11)〜(f11-102)は、メッセージタイプにより、１０通りに分かれる。
【００３８】
(f11-11)  メッセージタイプが、“オブジェクトのデータ変更”、“オブジェクトのデータ追加”、“オブジェクトのデータ削除”、のいずれかの場合、メッセージをオブジェクト管理部２４と配送先決定部１６へ送る。
【００３９】
(f11-21)  メッセージタイプが“計算機検索要求”の場合、メッセージを配送先決定部１６へ送る。
【００４０】
(f11-31)〜(f11-33)  メッセージタイプが“物理ネットワーク距離測定要求”の場合、メッセージからメッセージ送信計算機ＩＤとメッセージＩＤを取り出し(f11-31)、メッセージ生成部２１に“物理ネットワーク距離測定要求返信”メッセージの生成を要求する(f11-32)。メッセージ送信部１２に対して、生成したメッセージをメッセージ送信計算機ＩＤに向けて送信するよう依頼する(f11-33)。
【００４１】
(f11-41)  メッセージタイプが、“物理ネットワーク距離測定要求返信”の場合、そのメッセージを物理ネットワーク距離測定部１８へ送る。
【００４２】
(f11-51)〜(f11-55)  メッセージタイプが、“計算機検索要求返信（なし）”の場合、仮想トポロジ担当領域管理部１７に新しい領域を担当するように依頼する(f11-51)。次に、メッセージ中からメッセージ送信計算機ＩＤを取り出す(f11-52)。次に、仮想トポロジ隣接計算機管理部１３に、メッセージ送信計算機ＩＤの登録を依頼する(f11-53)。次に、“仮想トポロジ登録要求”メッセージの作成をメッセージ生成部２１に依頼する(f11-54)。次に、生成したメッセージをメッセージ送信計算機ＩＤに向けて送信するための送信をメッセージ送信部１２に依頼する(f11-55)。
【００４３】
(f11-61)〜(f11-62)  メッセージタイプが、“計算機検索要求返信（あり）”の場合、メッセージコンテンツから計算機ＩＤを取り出す(f11-61)。次に、物理ネットワーク距離測定部１８に各計算機ＩＤに対して物理ネットワーク距離を測定するように依頼する(f11-62)。
【００４４】
(f11-71)〜(f11-72)  メッセージタイプが、“仮想トポロジ登録要求”の場合、メッセージからメッセージ送信計算機ＩＤを取り出す(f11-71)。次にメッセージ送信計算機ＩＤを仮想トポロジ隣接計算機管理部１３に登録を依頼する(f11-72)。
【００４５】
(f11-81)〜(f11-82)  メッセージタイプが“物理トポロジ登録要求”の場合、メッセージからメッセージ送信計算機ＩＤを取り出す(f11-81)。次にメッセージ送信計算機ＩＤを物理トポロジ隣接計算機管理部１４に登録を依頼する(f11-82)。
【００４６】
(f11-91)〜(f11-94)  メッセージタイプが、“仮想トポロジ担当領域情報取得要求”の場合、メッセージ中からメッセージ送信計算機ＩＤを取り出す(f11-91)。次に、仮想トポロジ担当領域管理部１７から仮想トポロジ担当領域情報を取得する(f11-92)。次に、メッセージ生成部２１に“仮想トポロジ担当領域情報取得要求返信”メッセージの作成を依頼する(f11-93)。次に、生成したメッセージをメッセージ送信計算機ＩＤに向けて送信するようにメッセージ送信部１２に依頼する(f11-94)。
【００４７】
(f11-101)〜(f11-102)  メッセージタイプが、“仮想トポロジ担当領域情報取得要求返信”の場合、メッセージコンテンツから仮想トポロジ担当領域情報を取得する(f11-101)。次に、仮想トポロジ担当領域情報の登録を仮想トポロジ隣接管理部１３に依頼する(f11-102)。
【００４８】
メッセージ送信部１２は、メッセージ受信部１１、配送先決定部１６、物理ネットワーク距離測定部１８又はメッセージ生成部２１からメッセージと送信先計算機ＩＤを受取り、指定された送信先へメッセージを送信する機能を持つ。
【００４９】
仮想トポロジ隣接計算機管理部１３は、仮想トポロジで隣接している計算機の計算機ＩＤを管理するものであり、メッセージ受信部１１及び配送先決定部１６からアクセス可能となっている。ここで、計算機ＩＤとは、例えば相手の計算機とのＴＣＰのコネクションや、相手の計算機のＩＰアドレスなどの隣接計算機を特定するものがある。ここでは、計算機ＩＤとしては、ＩＰアドレス情報を用いている。
【００５０】
詳しくは仮想トポロジ隣接計算機管理部１３は、図４に示すように、隣接計算機管理テーブル１３Ｔ、隣接計算機追加部１３ａ、隣接計算機変更部１３ｂ及び隣接計算機削除部１３ｃを備えている。
【００５１】
隣接計算機管理テーブル１３Ｔは、各部１３ａ〜１３ｃによりアクセス可能となっており、仮想トポロジ上で隣に接続された隣接計算機の計算機ＩＤ及びその隣接計算機の仮想トポロジ担当領域が登録されている。なお、隣接計算機管理テーブル１３Ｔの仮想トポロジ担当領域の列は省略可能である。仮想トポロジ担当領域の情報は、必要に応じて“仮想トポロジ担当領域情報取得要求”メッセージを隣接計算機に送信し、得られる“仮想トポロジ担当領域情報取得要求返信”メッセージから取出してもよいからである。
【００５２】
隣接計算機追加部１３ａは、隣接計算機の計算機ＩＤを隣接計算機管理テーブル１３Ｔに追加する部分であり、追加を頼まれた際に、すでに多くの隣接計算機が登録済みの場合には追加を拒否する機能をもっている。
【００５３】
隣接計算機変更部１３ｂは、隣接計算機管理テーブル１３Ｔの登録内容を変更する機能をもっている。
【００５４】
隣接計算機削除部１３ｃは、隣接計算機管理テーブル１３Ｔの登録内容を削除する機能をもっている。
【００５５】
物理トポロジ隣接計算機管理部１４は、物理トポロジで隣接している計算機の計算機ＩＤを管理するものであり、メッセージ受信部１１及び配送先決定部１６からアクセス可能となっている。計算機ＩＤは、前述した通りであり、仮想トポロジ隣接計算機管理部１３と同様にＩＰアドレス情報を用いている。
【００５６】
詳しくは物理トポロジ隣接計算機管理部１４は、図５に示すように、隣接計算機管理テーブル１４Ｔ、隣接計算機追加部１４ａ、隣接計算機変更部１４ｂ及び隣接計算機削除部１４ｃを備えている。
【００５７】
隣接計算機管理テーブル１４Ｔは、各部１４ａ〜１４ｃからアクセス可能に計算機ＩＤが登録されている。
【００５８】
隣接計算機追加部１４ａは、隣接計算機の計算機ＩＤを隣接計算機管理テーブル１４Ｔに追加する機能と、追加を頼まれた際に、すでに多くの隣接計算機が登録済みの場合には追加を拒否する機能とをもっている。
【００５９】
隣接計算機変更部１４ｂは、隣接計算機管理テーブル１４Ｔの登録内容を変更する機能をもっている。
【００６０】
隣接計算機削除部１４ｃは、隣接計算機管理テーブル１４Ｔの登録内容を削除する機能をもっている。
【００６１】
仮想トポロジ担当領域内全計算機管理部１５は、配送先決定部１６からアクセス可能となっており、仮想トポロジ担当領域内に仮想空間座標をもつ全ての計算機の計算機ＩＤを管理している。
【００６２】
配送先決定部１６は、受け取ったメッセージの配送先の計算機を決定する機能を有し、詳しくは図６に示すように、受取りに関する処理機能(f16-1)〜(f16-2)と、配送先の決定に関する機能(f16-11)〜(f16-36)とをもっている。
【００６３】
受取りに関する処理機能(f16-2)〜(f16-2)は、次の内容である。
【００６４】
メッセージを受け取ると(f16-1)、メッセージタイプを取り出して解析する(f16-2)。
【００６５】
配送先の決定に関する機能(f16-11)〜(f16-36)は、メッセージタイプにより、機能(f16-11)〜(f16-12)と、機能(f16-21)〜(f16-36)との２通りに分かれる。
【００６６】
(f16-11)〜(f16-12)  メッセージタイプが“オブジェクトのデータ変更”、“オブジェクトのデータ追加”、“オブジェクトのデータ削除”の場合、仮想トポロジ隣接計算機管理部１３と物理トポロジ隣接計算機管理部１４から隣接計算機ＩＤを取り出す(f16-11)。取り出した隣接計算機ＩＤに対してメッセージを送信するようにメッセージ送信部１２に依頼する(f16-12)。
【００６７】
(f16-21)〜(f16-36)  メッセージタイプが“計算機検索要求”の場合、仮想トポロジ隣接計算機管理部１３が管理している隣接計算機が存在するか否かを調べる(f16-21)。
【００６８】
隣接計算機が存在しない場合(f16-21; NO)、物理トポロジ隣接計算機管理部１４から隣接計算機ＩＤを取り出し(f16-22)、その隣接計算機ＩＤに向けてデータを送信する(f16-23)。
【００６９】
隣接計算機が存在する場合は(f16-21; YES)、仮想トポロジ担当領域管理部１７から仮想トポロジ担当領域情報を取り出す(f16-24)。メッセージ中の仮想空間座標と仮想トポロジ担当領域情報を比較し、同領域情報内に仮想空間座標があるか否かを判定する(f16-25)。
【００７０】
仮想トポロジ担当領域内に仮想空間座標が存在する場合(f16-25; YES)、メッセージから送信計算機ＩＤを取り出し(f16-26)、仮想トポロジ担当領域内全計算機管理部１５から全計算機ＩＤを取り出す(f16-27)。
【００７１】
取り出した全計算機ＩＤと、自分の計算機ＩＤとをメッセージコンテンツとする“計算機検索要求（あり）”メッセージの作成をメッセージ生成部２１に依頼する(f16-28)。
【００７２】
生成したメッセージを送信計算機ＩＤに向けて送信するようにメッセージ送信部１２に依頼する(f16-29)。
【００７３】
送信計算機ＩＤを仮想トポロジ担当領域内全計算機管理部１５に登録する(f16-30)。
【００７４】
一方、仮想トポロジ担当領域内に仮想空間座標が存在しない場合(f16-25; NO)、仮想トポロジ隣接計算機管理部１３が管理する計算機のうち、担当する仮想トポロジ担当領域が自己の管理する仮想トポロジ担当領域よりも仮想空間座標に近い隣接計算機が存在するか否かを判定する(f16-31)。
【００７５】
存在する場合(f16-31; YES)、隣接計算機のうち、仮想空間座標に近い仮想トポロジ担当領域を持つ隣接計算機の計算機ＩＤを求める(f16-32)。ここで、計算機ＩＤを求める方法は、二種類ある。
【００７６】
一つは、毎回、隣接計算機に“仮想トポロジ担当領域情報取得要求”メッセージを送信し、得られた“仮想トポロジ担当領域情報取得要求返信”メッセージから計算機ＩＤを取出す方法である。
【００７７】
もう一つは、一度、“仮想トポロジ担当領域情報取得要求”メッセージを送信し、得られた“仮想トポロジ担当領域情報取得要求返信”メッセージの内容を、仮想トポロジ隣接計算機管理部１３の隣接計算機管理テーブルに記録しておく方法である。
【００７８】
計算機ＩＤを求める二種類の手法はいずれを用いても良い。求める計算機ＩＤの数は、１つ以上であれば、ユーザの設定次第である。計算機ＩＤを求めた後、生成したメッセージをその計算機ＩＤに向けて送信するようにメッセージ送信部１２に依頼する(f16-33)。
【００７９】
存在しない場合(f16-31; NO)、メッセージ中からメッセージを送信した計算機ＩＤを取り出し(f16-34)、“計算機検索要求返信（なし）”メッセージの生成を依頼する(f16-35)。生成したメッセージを上記送信計算機ＩＤに向けて送信するようにメッセージ送信部１２に依頼する(f16-36)。
【００８０】
仮想トポロジ担当領域管理部１７は、メッセージ受信部１１、配送先決定部１６及び仮想空間座標管理部２０からアクセス可能となっており、仮想トポロジ担当領域保持部と単位領域指定情報管理部から構成されている。
【００８１】
仮想トポロジ担当領域保持部は、自計算機の仮想空間座標が属している仮想トポロジ担当領域を示すものである。示す方法は、例えばＩＤ又は座標による方式などが適用可能となっている。ＩＤによる方式では、図７に一例を示すように、全ての仮想トポロジ担当領域に予め領域ＩＤ１〜ＩＤ１２を割当てておき、その領域ＩＤ６を保持することで、仮想トポロジ担当領域を示している。ＩＤによる方式は、指定対象が領域に限らず、仮想空間上の建物や任意形状の草原など、任意の指定対象を指定可能である。座標による方式では、図８に一例を示すように、仮想トポロジ担当領域の境界となる座標｛(10,10), (10,20), (20,10), (20,20)｝を保持し、仮想トポロジ担当領域を示している。
【００８２】
仮想トポロジ担当領域保持部は、仮想トポロジ担当領域情報要求を受けると、保持している仮想トポロジ担当領域情報を返す。また、仮想トポロジ担当領域は新規に指定してもよい。新規に仮想トポロジ担当領域を指定する場合、仮想トポロジ担当領域保持部は、仮想空間座標を単位領域指定情報管理部に入力し、得られた単位領域の境界情報を仮想トポロジ担当領域に設定する。第１及び第２の実施形態では、境界情報を仮想トポロジ担当領域に設定した後に、仮想空間シミュレータ２２のシミュレーション担当領域管理部２３にて同じ領域を設定する。
【００８３】
単位領域指定情報管理部は、仮想空間の単位領域分割方法を記述したものである。分割方法は幾つかあり、例えば仮想空間を２次元で表現した場合、図９〜図１２に示す方式などが考えられる。図９はメッシュ状に区切る方式を示しており、図１０は隣接するメッシュがずれている方式を示している。図１１は六角形で区切る方式を示しており、図１２は原則としてメッシュ状に区切り、場所によっては原則とは異なる図形で区切る方式を示している。なお、図９〜図１２以外にも、仮想空間を隙間と重複が無く区切る方式であれば適用可能であることは言うまでもない。
【００８４】
単位領域指定情報管理部は、図９〜図１２等に示すように、仮想空間単位領域を個別に指定する境界情報を管理する機能と、仮想トポロジ担当領域保持部から入力された仮想空間座標に基づいて、この座標を含む単位領域の境界情報を割り出す機能と、得られた境界情報を仮想トポロジ担当領域保持部に返す機能とをもっている。
【００８５】
物理ネットワーク距離測定部１８は、メッセージ受信部１１から受けた計算機検索要求（あり）メッセージ内に含まれる全計算機ＩＤに基づいて、自分と相手の計算機との間の物理ネットワーク上の距離を測定するものである。
【００８６】
また、物理ネットワーク距離測定部１８は、メッセージ送信部１２にメッセージの送信を依頼する機能と、メッセージ送信時からの経過時間を物理ネットワーク距離として測定する時刻計測部（図示せず）と、測定結果のうち、最短の物理ネットワーク距離をもつ計算機の計算機ＩＤを物理トポロジ隣接計算機管理部１４に書込む機能とをもっている。
【００８７】
詳しくは物理ネットワーク距離測定部１８は、図１３に示すように、処理機能(f18-1)〜(f18-7)を有している。すなわち、物理ネットワーク距離測定部１８は、メッセージ生成部２１に“物理ネットワーク距離測定要求”メッセージの生成を依頼する(f18-1)。作成されたメッセージからメッセージＩＤを取り出し、メッセージＩＤを記録し、時刻の計測を開始する(f18-2)。
【００８８】
次に、物理ネットワーク距離測定対象の計算機に向けて“物理ネットワーク距離測定要求”メッセージの送信をメッセージ送信部１２に依頼する(f18-3)。
【００８９】
“物理ネットワーク距離測定要求返信”メッセージを受けると(f18-4)、メッセージＩＤを取り出し(f18-5)、得られたメッセージＩＤが、記録済のメッセージＩＤと同一である旨を確認する(f18-6)。同一のメッセージＩＤの場合(f18-6; YES)、時刻の計測を終了して経過時間を算出し、この経過時間を物理ネットワーク距離として算出する(f18-7)。この算出方式は、ラウンド・トリップ・タイム（round−trip time）による。物理ネットワーク距離の算出方式は、他に、現在の空き帯域幅、ホップ数などを用いる方法がある。
【００９０】
ランデブー計算機リスト１９は、新規の計算機をトポロジに参加させるとき、最初に接続する計算機ＩＤを管理するものであり、メッセージ生成部２１から参照可能となっている。ランデブー計算機リスト１９は、予め計算機に記述されていてもよく、接続時に外部から読み込んでもよい。
【００９１】
仮想空間座標管理部２０は、計算機と一対一に対応する仮想空間上での座標を管理するものであり、オブジェクト管理部２４及びメッセージ生成部２１からアクセス可能となっている。オンラインゲームなどの場合、計算機のユーザが動作を制御するアバターの座標が管理される。
【００９２】
メッセージ生成部２１は、ランデブー計算機リスト１９、仮想空間座標管理部２０又はオブジェクト管理部２４を参照しつつ、各部１１，１６，１８，２１等から要求されたメッセージを生成し、得られたメッセージをメッセージ送信部１２又は配送先決定部１６に送出する機能をもっている。
【００９３】
ここでは、生成可能なメッセージの種類として、“オブジェクトのデータ変更”、“オブジェクトのデータ追加”、“オブジェクトのデータ削除”、“物理ネットワーク距離測定要求”、“物理ネットワーク距離測定要求返信”、“計算機検索要求”、“計算機検索要求返信（あり）”、“計算機検索要求返信（なし）”、“仮想トポロジ担当領域内全計算機検索要求”、“仮想トポロジ担当領域内全計算機検索要求返信”、“物理トポロジ登録要求”、“仮想トポロジ登録要求”、“仮想トポロジ担当領域情報取得要求”、“仮想トポロジ担当領域情報取得要求返信”を想定している。各メッセージの詳細は後述する。
【００９４】
仮想空間シミュレータ２２は、仮想空間の物理演算、仮想空間内のオブジェクト管理を行う部分であり、シミュレーション担当領域管理部２３及びオブジェクト管理部２４を備えている。シミュレーション担当領域管理部２３は、シミュレーション担当領域を示す情報を管理している。
【００９５】
オブジェクト管理部２４は、仮想空間上に存在する様々なオブジェクトのデータを管理するものであり、オブジェクトのデータがメッセージ受信部１１から入力可能であり、仮想空間座標管理部２０及びメッセージ生成部２１に出力可能となっている。オブジェクト管理部２４は、図１４に示すように、オブジェクト管理テーブル２４Ｔ、オブジェクト作成部２４ａ、オブジェクト変更部２４ｂ及びオブジェクト削除部２４ｃを備えている。
【００９６】
オブジェクト管理テーブル２４Ｔは、オブジェクトを一意に識別するオブジェクトＩＤ毎に、オブジェクトの状態を保持するものであり、各部２４ａ〜２４ｃから読出／書込可能となっている。ここで、オブジェクトＩＤは十分に長い数値であるとする。オブジェクトの状態は、例えばオブジェクトの仮想空間上の座標、オブジェクトの重さなどがある。
【００９７】
オブジェクト作成部２４ａは、オブジェクトＩＤ毎のオブジェクトの状態を作成し、オブジェクト管理テーブル２４Ｔに書込むものである。
【００９８】
オブジェクト変更部２４ｂは、オブジェクト管理テーブル２４Ｔ内のオブジェクトの状態を変更するものである。
【００９９】
オブジェクト削除部２４ｃは、オブジェクト管理テーブル２４Ｔ内のオブジェクトＩＤ毎のオブジェクトの状態を削除するものである。
【０１００】
仮想空間シミュレータ２２は、“オブジェクトのデータ変更”メッセージを受けると、メッセージ中で指定されたオブジェクトのデータを変更し、“オブジェクトのデータ作成”メッセージを受けると、メッセージ中で指定されたオブジェクトのデータを作成し、“オブジェクトのデータ削除”メッセージを受けると、メッセージ中で指定されたオブジェクトのデータを削除する。
【０１０１】
仮想空間シミュレータ２２は、これらのデータ操作（変更、作成、削除）の前に、担当するシミュレーション担当領域とオブジェクトの座標とを比較し、シミュレーション担当領域内にオブジェクトの座標があり、かつ仮想トポロジ隣接計算機管理部１３にて隣接計算機を管理している場合のみデータ操作を実行する構成としてもよい。この構成の場合、仮想トポロジがつながっている計算機であり、かつ、ターゲットとなるオブジェクトが自分のシミュレーション担当領域内であるような計算機しかオブジェクトのデータを変更できない。
【０１０２】
次に、各メッセージについて説明する。メッセージは、図１５に示すように、メッセージヘッダ部分とメッセージコンテンツ部分に分類される。メッセージヘッダ部分は、どのメッセージも必ず持つ。メッセージヘッダ部分は、メッセージＩＤ（メッセージを識別するＩＤ）、メッセージタイプ（メッセージの種類を示す値）、送信計算機ＩＤ（メッセージを送信した計算機を示すＩＤ）を持つ。
【０１０３】
メッセージＩＤは、一意性を維持する観点から、十分な長さのランダムな数値が使用可能となっている。他には、メッセージＩＤの一意性を維持する観点から、メッセージ生成部２１内にカウンタを設け、メッセージを生成する毎にカウンタを１増やし、計算機ＩＤとカウンタの値を直列化してメッセージＩＤを構成しても良い。
【０１０４】
次に、メッセージコンテンツ部分について説明する。メッセージコンテンツは、メッセージタイプに応じて、記述される情報が異なる。
【０１０５】
メッセージタイプが“オブジェクトのデータ変更”のメッセージは、オブジェクトのデータ変更を要求するメッセージで用いられる。メッセージコンテンツは、変更対象オブジェクトを識別するオブジェクトＩＤと、変更内容が記述される。変更内容は、例えば「座標値」、「重さ」といったオブジェクトの属性の種類の名称と、「（１００，２００）」、「６０ｋｇ」といった属性の変更後の値とである。
【０１０６】
メッセージタイプが“オブジェクトのデータ追加”のメッセージは、オブジェクトの新規作成を要求するメッセージで用いられる。メッセージコンテンツは、追加対象オブジェクトを識別するオブジェクトＩＤと、そのオブジェクトの属性を示す内容とが記述される。属性を示す内容は、“オブジェクトのデータ変更”の例の変更内容と同様である。
【０１０７】
メッセージタイプが“オブジェクトのデータ削除”のメッセージは、オブジェクトの削除を要求するメッセージで用いられる。メッセージコンテンツは、削除対象のオブジェクトを識別するオブジェクトＩＤである。
【０１０８】
メッセージタイプが“物理ネットワーク距離測定要求”のメッセージは、物理ネットワークの距離を測定する際に用いられる。メッセージコンテンツは、メッセージを発信した計算機を識別するＩＤ（ＩＰアドレス等）が記述される。
【０１０９】
メッセージタイプが“物理ネットワーク距離測定要求返信”のメッセージは、物理ネットワーク距離測定要求メッセージを受信した計算機により、そのメッセージに対する返信用のメッセージとして用いられる。メッセージコンテンツは、対応する“物理ネットワーク距離測定要求”メッセージのメッセージＩＤが記述される。
【０１１０】
メッセージタイプが“計算機検索要求”のメッセージは、新規の計算機がトポロジに参加するときに用いる。メッセージコンテンツには、仮想空間座標が記述される。
【０１１１】
メッセージタイプが“計算機検索要求返信（あり）”のメッセージは、計算機検索要求メッセージに記述された仮想空間座標が、自己が管理する仮想トポロジ担当領域内に含まれるとき、当該仮想トポロジ担当領域内の全ての計算機を識別する全ての計算機ＩＤをメッセージの送信者に伝えるために用いられる。メッセージコンテンツには、対応する“計算機検索要求”メッセージのメッセージＩＤと、仮想トポロジ担当領域にある全計算機のＩＤとが入っている。
【０１１２】
メッセージタイプが“計算機検索要求返信（なし）”のメッセージは、計算機検索要求メッセージに記述された仮想空間座標が、自己が管理する仮想トポロジ担当領域内に含まれず、且つ、自己の仮想トポロジの隣接計算機中に自己よりも仮想空間座標に近い仮想トポロジ担当領域を管理する計算機が無い場合、その旨をメッセージ送信者に知らせるために用いられる。メッセージコンテンツには、対応する“計算機検索要求”メッセージのメッセージＩＤが入っている。
【０１１３】
次に、以上のように構成された計算機群の動作を図１６乃至図１９を用いて説明する。
【０１１４】
（新規に計算機が参加する場合）
始めに、新規に計算機がトポロジに参加するときの動作を図１６のフローチャートを用いて述べる。新規にトポロジに参加する計算機（以下、新規参加計算機という）は、仮想空間座標を初期値に設定する（ＳＴ１）。この初期値は、ユーザが指定してもよいし、計算機にて予め決まっている値や、外部の仮想空間座標初期値設定用のアプリケーションから読み込んだ値でもよい。設定した初期値は、仮想空間座標管理部２０にて保持される。
【０１１５】
新規参加計算機は、仮想空間上の自己の座標値を含む計算機検索要求メッセージをメッセージ生成部２１にて生成する（ＳＴ２）。
【０１１６】
新規参加計算機は、ランデブー計算機リスト１９で管理される計算機ＩＤに向けて計算機検索要求メッセージをメッセージ送信部１２から送信する（ＳＴ３）。
【０１１７】
新規参加計算機は、座標値を含む仮想空間単位領域における仮想トポロジ上の計算機、又は座標値を含む仮想空間単位領域に最も近い仮想空間単位領域における仮想トポロジ上の計算機からメッセージ受信部１１にてメッセージを受信する（ＳＴ４）。その後、このメッセージを解析して計算機検索要求（あり）か計算機検索要求（なし）かを識別する。
【０１１８】
ステップＳＴ４にて計算機検索要求（あり）の場合を述べる。
【０１１９】
計算機検索要求（あり）メッセージは、新規参加計算機の座標値を含む仮想空間単位領域を担当する全ての計算機の計算機ＩＤを含むものである。
【０１２０】
新規参加計算機は、このメッセージコンテンツから該当する全ての計算機ＩＤを取り出す（ＳＴ５）。新規参加計算機は、いずれかの計算機ＩＤで示す計算機に対し、担当する仮想空間単位領域の境界情報を要求し、得られた境界情報を仮想トポロジ担当領域管理部１７にて管理する（ＳＴ６）。
【０１２１】
取り出した計算機ＩＤ全てに対して物理ネットワーク距離測定部１８にて距離を測定する（ＳＴ７）。しかる後、全ての測定結果のうち、最短の物理ネットワーク距離をもつ計算機の計算機ＩＤを物理トポロジ隣接計算機管理部１４にて隣接計算機として登録し、登録した計算機に対して物理トポロジ登録要求を送信する。
【０１２２】
一方、ステップＳＴ４にて計算機検索要求（なし）の場合を述べる。
【０１２３】
計算機検索要求（無し）メッセージは、新規参加計算機の座標値を含む仮想空間単位領域に最も近い仮想空間単位領域における仮想トポロジ上の隣接計算機から送信され、当該隣接計算機の計算機ＩＤを含むものである。
【０１２４】
新規参加計算機は、仮想トポロジ担当領域管理部１７で仮想空間座標を含む単位領域を仮想トポロジ担当領域として設定する（ＳＴ８）。
【０１２５】
新規参加計算機は、仮想トポロジ隣接計算機管理部１３にて、受信メッセージを送信した計算機を隣接計算機として登録する（ＳＴ９）。
【０１２６】
新規参加計算機は、“仮想トポロジ登録要求”メッセージをメッセージ生成部２１にて生成し、得られた“仮想トポロジ登録要求”メッセージを、ステップＳＴ４のメッセージを送信してきた計算機にメッセージ送信部１２を介して送信する。
【０１２７】
以上により、計算機が新規参加する場合の動作を終了する。続いて、具体例１，２を述べる。
【０１２８】
（具体例１）
始めに、具体例の状況を述べる。図１７（ａ）は２次元の仮想空間にアバターａ〜ｅがいる状況を示している。枠線は仮想空間を分割した単位領域を示している。
【０１２９】
アバターａは計算機Ａに管理され、アバターｂは計算機Ｂに管理され、...、アバターｇは計算機Ｇに管理される。計算機Ａ〜Ｇのトポロジは図１７（ｂ）に示している。
【０１３０】
計算機Ｂ−Ｃ，Ｃ−Ｆ，Ｆ−Ｂ間は仮想トポロジで結ばれており、計算機Ａ−Ｂ，Ｃ−Ｄ，Ｄ−Ｅ，Ｆ−Ｇ間は物理トポロジで結ばれている。
【０１３１】
この状態で、新規の計算機Ｐが制御するアバターｐが仮想空間上の座標位置（420,230）に新たに出現したとする。計算機Ｐのランデブー計算機リスト１９には計算機Ａが設定されていたとする。
【０１３２】
計算機Ｐは、ランデブー計算機リスト１９を参照し、計算機Ａに計算機検索要求メッセージを送信する。ここで、計算機検索要求メッセージは、計算機Ｐにおける仮想空間上の座標値と計算機ＩＤ（物理ネットワーク上の送信元アドレス情報）とを含んでいる。
【０１３３】
計算機Ａは、計算機検索要求メッセージを受信すると、仮想トポロジ隣接計算機管理部１３に隣接計算機ＩＤが無いので、メッセージ受信部１１の処理（f11-1〜f11-5,f11-21）及び配送先決定部１６の処理（f16-1,f16-2,f16-21〜f16-23）により、物理トポロジ隣接計算機の計算機Ｂにメッセージを配送する。
【０１３４】
計算機Ｂは計算機検索要求メッセージを受信する。このとき、計算機Ｂは、仮想トポロジ隣接計算機管理部１３に隣接計算機ＩＤがあるので、仮想トポロジ担当領域管理部１７から仮想トポロジ担当領域情報である境界座標（２００，２００），（４００，２００），（４００，０），（２００，０）を取り出す。このとき、境界座標は左上、右上、右下、左下の順で表記するものとする。
【０１３５】
計算機Ｂは、計算機検索要求メッセージ中の仮想空間座標（４２０，２３０）がこの仮想トポロジ担当領域の範囲内に含まれるか否かを判定し、含まれないので、仮想トポロジ隣接計算機の中で、仮想空間座標（４２０，２３０）に最も近い領域を管理している計算機を判定する。
【０１３６】
計算機Ｂの仮想トポロジの隣接計算機は、計算機Ｃ，Ｆであり、仮想空間座標（４２０，２３０）により近い領域を持つのは計算機Ｃである。そのため、計算機Ｂは、計算機Ｃに向けて計算機検索要求メッセージを送信する。
【０１３７】
計算機Ｃは、計算機検索要求メッセージを受信する。計算機Ｃは、仮想トポロジ隣接計算機管理部１３中に隣接計算機ＩＤを持つため、仮想トポロジ担当領域部から仮想トポロジ担当領域座標（３００，４００），（５００，４００），（５００，２００），（３００，２００）を取り出す。計算機検索要求メッセージ中の仮想空間座標（４２０，２３０）はこの領域内に含まれる。
【０１３８】
従って、計算機Ｃは、仮想トポロジ担当領域内全計算機管理部１５に管理された計算機Ｄ，Ｅの各計算機ＩＤと自己の計算機ＩＤとをメッセージコンテンツとした計算機検索要求（あり）メッセージを作成し、計算機Ｐに送信する。計算機Ｃは計算機Ｐを仮想トポロジ担当領域内全計算機管理部１５に追加登録する。
【０１３９】
計算機Ｐは、計算機Ｃから計算機検索要求（あり）メッセージを受信する。しかる後、計算機Ｐは、このメッセージのメッセージコンテンツから計算機Ｃ，Ｄ，Ｅの計算機ＩＤを取得し、各々に対して物理ネットワーク距離測定部１８にてＰ−Ｃ間，Ｐ−Ｄ間及びＰ−Ｅ間の物理ネットワーク距離を測定する。この結果、Ｐ−Ｄ間の物理ネットワーク距離が最も短いとする。
【０１４０】
計算機Ｐは、最短の物理ネットワーク距離の計算機Ｄを物理トポロジ隣接計算機として登録し、計算機Ｄへ物理トポロジ登録要求メッセージを送信する。計算機Ｄは、物理トポロジ登録要求メッセージを受信し、物理トポロジ隣接計算機管理部１４にて計算機Ｐを登録する。以上が、計算機Ｐが参加した場合の具体例１である。
【０１４１】
（具体例２）
次に、図１７の状況において、新規の計算機Ｑが制御するアバターｑが仮想空間上の座標値（５５０，３３０）に新たに出現したとする。新規の計算機Ｑによるトポロジへの参加の処理を述べる。計算機Ｑのランデブー計算機リスト１９には計算機Ａが設定されていたとする。
【０１４２】
計算機Ｑでは、ランデブー計算機リスト１９を参照し、計算機Ａに計算機検索要求メッセージを送信する。計算機Ａは、計算機検索要求メッセージを受信する。受信した計算機Ａは仮想トポロジ隣接計算機管理部１３中の隣接計算機を持たないため、物理トポロジ隣接計算機である計算機Ｂでメッセージを配送する。
【０１４３】
計算機Ｂは計算機検索要求メッセージを受信する。計算機Ｂは仮想トポロジ隣接計算機管理部１３中に隣接計算機を持つため、仮想トポロジ担当領域管理部１７から仮想トポロジ担当領域情報である境界座標（２００，２００），（４００，２００），（４００，０），（２００，０）を取り出す。
【０１４４】
計算機検索要求メッセージ中の仮想空間座標（５５０，３３０）はこの仮想トポロジ担当領域内ではないので、仮想トポロジ隣接計算機の中から、仮想空間座標（５５０，３３０）に最も近い領域を管理している計算機を探す。
【０１４５】
計算機Ｂの仮想トポロジの隣接計算機は、計算機Ｃ，Ｆであり、仮想空間座標（５５０，３３０）により近い領域を持つのは計算機Ｃである。よって、計算機Ｂは計算機検索要求メッセージを計算機Ｃに送信する。
【０１４６】
計算機Ｃは計算機検索要求メッセージを受信する。計算機Ｃは仮想トポロジ隣接計算機管理部１３中に隣接計算機を持つため、仮想トポロジ担当領域部から仮想トポロジ担当領域座標（３００，４００），（５００，４００），（５００，２００），（３００，２００）を取り出す。計算機検索要求メッセージ中の仮想空間座標（５５０，３３０）はこの領域内に含まれない。そのため、計算機Ｃは、仮想トポロジ計算機の中で仮想空間座標（５５０，３３０）に最も近い領域を管理している計算機を判定する。
【０１４７】
計算機Ｃの仮想トポロジの隣接計算機は計算機Ｂ，Ｆである。しかし、計算機Ｃ，Ｂ，Ｆの中で仮想空間座標に最も近い領域を管理するのは計算機Ｃである。
【０１４８】
そこで計算機Ｃは、自己の計算機ＩＤを含む計算機検索要求返信（なし）メッセージを作成し、計算機Ｑに送信する。
【０１４９】
計算機Ｑは、計算機検索要求返信（なし）メッセージを受信すると、仮想トポロジ担当領域管理部１７に新しい領域を担当するように依頼する。
【０１５０】
仮想トポロジ担当領域管理部１７はアバターｑが存在する仮想空間単位領域の境界情報を単位領域指定情報管理部から取り出し、仮想トポロジ担当領域管理部１７で保持する。
【０１５１】
次に、計算機Ｑは、計算機検索要求返信（なし）メッセージを送信した計算機Ｃを仮想トポロジ隣接計算機管理部１３にて登録し、計算機Ｃに向けて隣接トポロジ登録要求メッセージを送信する。
【０１５２】
計算機Ｃは、隣接トポロジ登録要求メッセージを受信し、計算機Ｑを仮想トポロジ隣接計算機管理部１３にて登録する。
【０１５３】
以上が、計算機Ｑが参加した場合の具体例２である。以上により、計算機が新規参加した場合の説明を終了する。次に、オブジェクトを新規作成した場合の動作を説明する。
【０１５４】
（オブジェクトを新規作成した場合）
次に、“オブジェクトのデータ追加”メッセージを送信する処理の過程を説明する。
【０１５５】
オブジェクトを新規作成した計算機は、オブジェクト管理部２４に新規にオブジェクトのデータを追加した後、トポロジ全体にメッセージを伝搬させる。図１８にオブジェクトを新規作成した場合のフローチャートを示す。
【０１５６】
計算機では、仮想空間シミュレータ２２がオブジェクトを新規作成する（ＳＴ２１）。新規作成されたオブジェクトは、オブジェクト管理部２４の中のオブジェクト作成部２４ａにてオブジェクト管理テーブル２４Ｔに登録される。
【０１５７】
計算機は“オブジェクトのデータ追加”メッセージをメッセージ生成部２１にて作成する（ＳＴ２２）。メッセージコンテンツは、新規作成されたオブジェクトの状態が記述される。
【０１５８】
計算機は、作成したメッセージのメッセージＩＤをメッセージ受信部１１のメッセージＩＤ記録部にて記録する（ＳＴ２３）。
【０１５９】
計算機は、仮想トポロジ隣接計算機管理部１３が管理する隣接計算機の計算機ＩＤを配送先決定部１６が読出すと共に、この読出した計算機ＩＤに向けて、メッセージ送信部１２が“オブジェクトのデータ追加”メッセージを送信する（ＳＴ２４）。
【０１６０】
計算機は、物理トポロジ隣接計算機管理部１４が管理する隣接計算機の計算機ＩＤを配送先決定部１６が読出すと共に、この読出した計算機ＩＤに向けて、メッセージ送信部１２が“オブジェクトのデータ追加”メッセージを送信する（ＳＴ２５）。
【０１６１】
以上により、オブジェクトを新規作成した場合の処理を終了する。なお、オブジェクトの変更、オブジェクトの削除が行われた場合は、作成されるメッセージが異なるだけで、それ以外の処理内容は同じである。
【０１６２】
（オブジェクトのデータ追加メッセージを配送する場合）
次に、“オブジェクトのデータ追加”メッセージを配送する処理の流れを図１９を用いて述べる。
【０１６３】
計算機は、“オブジェクトのデータ追加”メッセージをメッセージ受信部１１が受信する（ＳＴ３１）。
【０１６４】
計算機は、メッセージのメッセージＩＤを取り出し（ＳＴ３２）、メッセージＩＤ記録部に同一のメッセージＩＤが記録されているか否かを判定する（ＳＴ３３）。
【０１６５】
ステップＳＴ３３の判定の結果、すでに記録されている場合、配送処理を終了する（ＳＴ３４）。
【０１６６】
一方、ステップＳＴ３３の判定の結果、まだ記録されていない場合、メッセージＩＤ記録部にて受信したメッセージ内のメッセージＩＤを記録する（ＳＴ３５）。
【０１６７】
しかる後、計算機では、オブジェクト管理部２４のオブジェクト作成部２４ａにてメッセージのメッセージコンテンツ部分で指定されたオブジェクトを作成する（ＳＴ３６）。
【０１６８】
また、計算機では、配送先決定部１６にて、仮想トポロジ隣接計算機管理部１３と物理トポロジ隣接計算機管理部１４が管理している隣接計算機の計算機ＩＤを示す隣接計算機リストを取り出す（ＳＴ３７）。
【０１６９】
計算機では、メッセージ送信部１２にて、先ほど取り出した隣接計算機リストの計算機ＩＤへメッセージを送信する（ＳＴ３８）。
【０１７０】
以上により、オブジェクトのデータ追加メッセージの配送処理が完了する。
【０１７１】
上述したように第１の実施形態によれば、仮想空間座標だけでなく、物理ネットワーク距離も想定してトポロジを構成する。具体的には図１に示したように、仮想空間を分割してなる仮想空間単位領域を代表の計算機が接続する仮想トポロジと、仮想空間単位領域内で代表の計算機及び残りの計算機を接続する物理トポロジとからなる接続形態をとっている。
【０１７２】
これにより、更新（新規作成、追加、変更、削除等）のためのメッセージを全ての計算機に伝搬させる際に、各計算機間では、仮想空間上の座標値がある閾値未満に収まる仮想空間単位領域内の場合、ステップＳＴ２５に述べたように、物理ネットワークを元にした物理トポロジにてメッセージを配送するので、従来とは異なり、仮想空間上で相手との関係動作が遅延する問題が無く、また、物理ネットワーク上でデータを遠回りして配送する問題が無い。また、遠回りしないことに伴い、ネットワーク上の通信量を低減することができる。
【０１７３】
一方、仮想空間上の座標位置がある閾値を越える仮想空間単位領域外の場合、ステップＳＴ２４に述べたように、仮想空間を元にした仮想トポロジにてメッセージを配送するので、物理トポロジを形成する計算機を仮想空間単位領域内の計算機のみに限定でき、従来とは異なり、物理ネットワーク距離を測定するための通信量を著しく低減させることができる。また、物理トポロジの構築対象を仮想空間単位領域内の計算機のみに限定するので、低いコストでトポロジを構築できる。
【０１７４】
このように本実施形態は、物理トポロジ及び仮想トポロジを組合せて用いる構成により、距離測定用の通信量を低減しつつ、Ｐ２Ｐ方式における各計算機間のデータ配送の遠回りや遅延を解消でき、データ更新を迅速に実行することができる。
【０１７５】
例えば、草原などの視野が開けた場所に多数のアバターがいる状況を考える。あるアバターが「手を挙げる」という動作を反映させる場合、視界の中にいるアバター群に対しては、距離の小さいアバターから順にデータを反映させるよりも、視界の中にいるアバター群全体に迅速にデータを送信する方が好ましい。つまり、ある閾値以下の距離の場合、仮想空間上の近いアバターから順次、迅速にデータを送ることよりも、閾値以下の距離のアバター全体に迅速にデータを送ることが重要である。
【０１７６】
本実施形態では、ある閾値以下では物理ネットワークを元にしたトポロジ、ある閾値以上では仮想空間を元にしたトポロジにてデータを配送するので、このような状況でも、視界の中にいるアバター群全体に迅速にデータを送信することができる。
【０１７７】
また、本実施形態によれば、ステップＳＴ１〜ＳＴ９や具体例１，２に示すように、新規参加計算機がトポロジに参加することができる。本実施形態によれば、ステップＳＴ２１〜ＳＴ２５に示すように、オブジェクトを更新するためのメッセージをトポロジ全体に伝搬させることができる。本実施形態によれば、ステップＳＴ３１〜ＳＴ３８に示すように、オブジェクトのデータ追加のメッセージを伝搬させることができる。
【０１７８】
なお、第１の実施形態を変形し、物理トポロジ隣接計算機管理部１４を省略することが可能である。この変形例は、物理トポロジ隣接計算機管理部１４が管理する隣接計算機が無く、また、“物理トポロジ登録要求”メッセージに対して何も処理をしないという点以外は第１の実施形態と同じものである。
【０１７９】
また同様に、第１の実施形態を変形し、仮想トポロジ隣接計算機管理部１３を省略することも可能である。この変形例は、仮想トポロジ隣接計算機管理部１３が管理している隣接計算機が無く、また、“物理トポロジ登録要求”メッセージに対して何も処理をしないという点以外は第１の実施形態と同じものである。
【０１８０】
また、本実施形態は、仮想空間上にアバターが存在しない、つまり、管理する計算機が一つも存在しない仮想空間単位領域を想定して説明を行ってきたが、全ての単位領域に必ずアバターが存在する、すなわち、全ての仮想空間単位領域に対して必ず管理している計算機が存在する実施形態も可能である。
【０１８１】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。本実施形態は、第１の実施形態の変形例であり、対象領域が指定されているメッセージを伝搬させるものである。
【０１８２】
詳しくは、仮想空間を扱うアプリケーションでは、仮想空間の都合上、オブジェクトのデータ変更、追加、削除のメッセージが仮想空間内の一部しか必要のない場合がある。この場合、メッセージの配送先を仮想空間の一部に限定する方が全体のメッセージのトラフィック量を低減できる利点がある。本実施形態はこのような場合を説明する。
【０１８３】
具体的には第２の実施形態では、第１の実施形態とほぼ同等の仕組みを有し、次の２点で異なる。
【０１８４】
１）データ変更／追加／削除メッセージのメッセージコンテンツに配送領域情報が含まれる点。
【０１８５】
２）配送先決定部１６がデータ変更／追加／削除メッセージを受けたとき、配送領域情報に基づいて配送先を決定する点。
【０１８６】
以下、この２点を主に説明する。
【０１８７】
上記１）に関し、“オブジェクトのデータ変更”メッセージのメッセージコンテンツは、変更するオブジェクトを識別するオブジェクトＩＤと、オブジェクトの変更内容と、メッセージの配送領域情報である。
【０１８８】
“オブジェクトのデータ追加”メッセージのメッセージコンテンツは、追加するオブジェクトを識別するオブジェクトＩＤと、追加するオブジェクトの内容と、メッセージの配送領域情報である。
【０１８９】
“オブジェクトのデータ削除”メッセージのメッセージコンテンツは、削除対象のオブジェクトを識別するオブジェクトＩＤと、メッセージの配送領域情報である。
【０１９０】
ここで、配送領域情報は仮想空間上の領域を指示する情報であり、指示する方法は任意である。例えば、中心座標と半径を指定する方法、領域の矩形の四隅の座標値を列挙する方法、単位領域の領域ＩＤを指定する方法などがある。
【０１９１】
次に、配送先決定部１６がオブジェクトのデータ変更／追加／削除メッセージを受けたときの処理を述べる。
【０１９２】
配送先決定部１６は、メッセージ受信部１１により受信されたメッセージに含まれる配送領域情報に基づいて仮想トポロジ隣接計算機管理部１３及び物理トポロジ隣接計算機管理部１４を参照し、当該配送領域情報に対応する境界情報を持つ仮想空間単位領域内の隣接計算機の計算機ＩＤを仮想トポロジ隣接計算機管理部１３又は物理トポロジ隣接計算機管理部１４から読出す機能と、読出した計算機ＩＤに向けてメッセージを配送するようにメッセージ送信部１２に依頼する機能とをもっている。
【０１９３】
詳しくは配送先決定部１６は、図２０に示すように、機能(f16-41)〜(f16-47)の部分が図６と異なる。この異なる部分を主に述べる。
【０１９４】
(f16-41)  メッセージから配送領域情報を取り出す。  
(f16-42)  仮想トポロジ担当領域管理部１７から仮想トポロジ担当領域情報を取り出す。  
(f16-43)  仮想トポロジ担当領域が配送領域を含むか否かを判別する。
【０１９５】
(f16-43; YES)  含んでいる場合  
(f16-44)  物理トポロジ隣接計算機管理部１４から隣接計算機ＩＤを取り出す。  
(f16-45)  隣接計算機ＩＤにメッセージを送信するようにメッセージ送信部１２に依頼し、機能(f16-46)に進む。
【０１９６】
(f16-43; NO)  含んでいない場合  
(f16-46)  仮想トポロジ隣接計算機管理部１３から隣接計算機ＩＤと領域情報を取得する。  
(f16-47)  配送領域を含んでいる、もしくは、配送領域に最も近い隣接計算機ＩＤを求め、その隣接計算機ＩＤにメッセージを配送するようにメッセージ送信部１２に依頼する。
【０１９７】
（具体例）
図１７の状況（アバターｐ，ｑは参加していない状態）において、アバターａを管理している計算機Ａがトポロジにメッセージを送信した場合を述べる。
【０１９８】
計算機Ａは、図１５に示した如き、オブジェクトのデータ追加メッセージを生成したとする。このデータ追加メッセージは、オブジェクトＩＤが１０２であり、オブジェクトの状態が位置（４００，３００）及び重さ５０ｇであり、配送領域が（３００，４００），（５００，４００），（５００，２００），（３００，２００）であるオブジェクトを追加する内容である。
【０１９９】
計算機Ａの隣接計算機としては、物理トポロジ隣接計算機が計算機Ｂであり、仮想トポロジ隣接計算機が無い。このため、計算機Ａは、データ追加メッセージを計算機Ｂに送信する。
【０２００】
計算機Ｂは、メッセージ受信部１１にてこのメッセージを受信する。計算機Ｂは、自分の仮想トポロジ担当領域が配送領域に含まれていないので、仮想トポロジ隣接計算機である計算機Ｃ，計算機Ｆの仮想トポロジ担当領域を取り出す。
【０２０１】
計算機Ｃの仮想トポロジ担当領域は（３００，４００），（５００，４００），（５００，２００），（３００，２００）である。計算機Ｆの仮想トポロジ担当領域は（１００，４００），（３００，４００），（３００，２００），（１００，２００）である。計算機Ｆよりも計算機Ｃの方が配送領域に近いので、計算機Ｂはメッセージを計算機Ｃに送信する。
【０２０２】
計算機Ｃは自分の仮想トポロジ担当領域が配送領域を含むので、物理トポロジ隣接計算機である計算機Ｄにメッセージを送信する。計算機Ｄは、自分の仮想トポロジ担当領域が配送領域を含むので計算機Ｅにメッセージを送信する。  
以上により、配送領域情報を含むメッセージの配送処理が完了する。
【０２０３】
上述したように本実施形態によれば、第１の実施形態の作用効果に加え、メッセージが仮想空間内の一部しか必要のない場合、メッセージの配送先を仮想空間の一部に限定するので、通信量を低減させることができる。
【０２０４】
また、配送領域が指定されたメッセージを配送する際に、メッセージの発信計算機から配送領域にたどり着くまでは仮想トポロジ上を配送し、配送領域に着くと、物理トポロジ上で配信を行うので、効率よくメッセージを配送領域に伝搬させることができる。
【０２０５】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。本実施形態は、第１の実施形態の変形例であり、シミュレーション担当領域を動的に変更させるものである。
【０２０６】
詳しくは、第１の実施形態は、各計算機のシミュレーション担当領域に変更が無い。これに対し、第３の実施形態はシミュレーション担当領域を動的に変更させる。但し、仮想トポロジ担当領域には変更が無い。
【０２０７】
始めに概要を図２１に示す例により述べる。図２１（ａ）は、計算機ａ〜ｆが各々のシミュレーション担当領域を管理している際に、計算機ｐが計算機ｄの管理下のシミュレーション担当領域に参加してきた状況を示している。
【０２０８】
計算機ｄは、計算機ｐの参加により、図２１（ｂ）に示すように、自己が担当するシミュレーション担当領域を二分割し、得られた領域のうち、計算機ｐが属する領域を計算機ｐの管理にし、残りの領域を自己が管理する。
【０２０９】
このように第３の実施形態は、新たに計算機がシミュレーション担当領域に入ると、シミュレーション担当領域を分割し、新たな計算機が属する方のシミュレーション領域を新たな計算機に担当させる形態である。
【０２１０】
かかる第３の実施形態は、次の２点で第１及び第２の実施形態と異なる。
【０２１１】
１）メッセージ生成部２１は“シミュレーション担当領域取得要求”メッセージと、“シミュレーション担当領域取得要求返信”メッセージを生成する点。
【０２１２】
２）配送先決定部１６は、“計算機検索要求”メッセージを受けたときの図６に示す機能(f16-26),(f16-27)の間に図２２に示す機能(f16-26-1)〜(f16-26-5)を有する点。
【０２１３】
以下、この２点を主に説明する。  
１）“シミュレーション担当領域取得要求”メッセージ及び“シミュレーション担当領域取得要求返信”メッセージは、他のメッセージと同様に、メッセージヘッダ部分とメッセージコンテンツ部分からなる。
【０２１４】
メッセージヘッダ部分は、他のメッセージと同様に、メッセージＩＤ、メッセージタイプ、メッセージ送信計算機ＩＤ、を持つ。メッセージタイプは、それぞれ“シミュレーション担当領域取得要求”、“シミュレーション担当領域取得要求返信”である。
【０２１５】
“シミュレーション担当領域取得要求”のメッセージコンテンツは空である。
【０２１６】
“シミュレーション担当領域取得要求返信”のメッセージコンテンツは、シミュレーション担当領域情報である。例えば、シミュレーション担当領域が矩形である場合は、その四隅の座標値が入っている。
【０２１７】
２）配送先決定部１６は、前述した機能に加え、メッセージに含まれる座標値が、担当している仮想空間単位領域に含まれるとき、仮想トポロジ担当領域内全計算機管理部１５内の各計算機ＩＤに向けて、仮想空間上のシミュレーション担当領域情報を要求し、各シミュレーション担当領域情報を受信する機能と、各シミュレーション担当領域情報のうち、メッセージに含まれる座標値を含むシミュレーション担当領域情報を選択する機能と、選択したシミュレーション担当領域情報が示すシミュレーション担当領域を、メッセージに含まれる座標値に基づいて二分割し、この座標値を含む第１シミュレーション担当領域と、残りの第２シミュレーション担当領域とを得る機能と、第１シミュレーション担当領域を示す第１シミュレーション担当領域情報をメッセージの送信元に返信するようにメッセージ送信部１２に依頼する機能と、第２シミュレーション担当領域を示す第２シミュレーション担当領域情報を、選択されたシミュレーション領域情報の送信元に返信するようにメッセージ送信部１２に依頼する機能とをもっている。
【０２１８】
詳しくは配送先決定部１６は、図２２に示すように、図６の破線矢印部分に追加する機能をもっている。すなわち、図２２は、配送先決定部１６が計算機検索要求のメッセージを受けた際に、仮想トポロジ隣接計算機管理部１３が管理している隣接計算機が存在し、かつ、仮想トポロジ担当領域内にメッセージ中に示された仮想空間座標が存在する場合の処理に対して追加する処理を示している。
【０２１９】
(f16-26-1)  仮想トポロジ担当領域内全計算機管理部１５から自分が管理している計算機ＩＤを取り出す。
【０２２０】
(f16-26-2)  取り出した全計算機ＩＤが示す計算機群から各計算機が持つシミュレーション担当領域の情報を取得する。取得方法は、例えば、対象計算機に対して、シミュレーション担当領域の取得要求を送信し、その返信により取得する方式がある。
【０２２１】
(f16-26-3)  仮想空間座標が、取得したシミュレーション担当領域のどれに含まれているかを検索する。そして、含まれていたシミュレーション担当領域を管理している計算機を計算機Ｘとする。
【０２２２】
(f16-26-4)  計算機Ｘが管理するシミュレーション担当領域を二分する。このとき、二分する方法としては、例えば次の方法がある。
【０２２３】
計算機Ｘの仮想空間座標と、メッセージを送信してきた計算機の仮想空間座標との中点を求める。計算機Ｘの持つシミュレーション担当領域の示す図形に関し、図形に含まれる線分のうちで、最も長く、かつ、中点を通る線分を求める。その線分に対して、垂直に交わる線分を求め、その線分にて、図形を二分する。
【０２２４】
(f16-26-5)  二分した領域の内、送信計算機ＩＤを持つ計算機の仮想空間座標を含む方の領域を、送信計算機のシミュレーション担当領域として設定する。そして、含まない方の領域を、計算機Ｘのシミュレーション担当領域として設定する。
【０２２５】
以上のような構成によれば、第１の実施形態の作用効果に加え、新規参加計算機Ｘに既存のシミュレーション担当領域の一部を分担させることができる。
【０２２６】
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０２２７】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０２２８】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行しても良い。
【０２２９】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【０２３０】
また、記憶媒体は１つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０２３１】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０２３２】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０２３３】
なお、本願発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０２３４】
【図１】本発明の各実施形態に係る計算機群によるトポロジを説明するための模式図である。
【図２】本発明の第１の実施形態に係る計算機群を構成する各計算機の構成を示す模式図である。
【図３】同実施形態におけるメッセージ受信部の処理機能を説明するためのフローチャートである。
【図４】同実施形態における仮想トポロジ隣接計算機管理部の構成を示す模式図である。
【図５】同実施形態における物理トポロジ隣接計算機管理部の構成を示す模式図である。
【図６】同実施形態における配送先決定部の処理機能を説明するためのフローチャートである。
【図７】同実施形態における仮想トポロジ担当領域保持部による指示方式を説明するための模式図である。
【図８】同実施形態における仮想トポロジ担当領域保持部による指示方式を説明するための模式図である。
【図９】同実施形態における単位領域指定情報管理部による単位領域の分割方法を説明するための模式図である。
【図１０】同実施形態における単位領域指定情報管理部による単位領域の分割方法を説明するための模式図である。
【図１１】同実施形態における単位領域指定情報管理部による単位領域の分割方法を説明するための模式図である。
【図１２】同実施形態における単位領域指定情報管理部による単位領域の分割方法を説明するための模式図である。
【図１３】同実施形態における物理ネットワーク距離測定部の処理機能を説明するためのフローチャートである。
【図１４】同実施形態におけるオブジェクト管理部の構成を示す模式図である。
【図１５】同実施形態におけるメッセージの構成を示す模式図である。
【図１６】同実施形態における新規参加の動作を説明するためのフローチャートである。
【図１７】同実施形態における具体例の状況を説明するための模式図である。
【図１８】同実施形態における新規作成の動作を説明するためのフローチャートである。
【図１９】同実施形態におけるメッセージ配送の動作を説明するためのフローチャートである。
【図２０】本発明の第２の実施形態に係る配送先決定部の処理機能を説明するためのフローチャートである。
【図２１】本発明の第３の実施形態の概要を説明するための模式図である。
【図２２】同実施形態における配送先決定部の追加した処理機能を説明するためのフローチャートである。
【符号の説明】
【０２３５】
１０…計算機、１１…メッセージ受信部、１２…メッセージ送信部、１３…仮想トポロジ隣接計算機管理部、１３Ｔ，１４Ｔ…隣接計算機管理テーブル、１３ａ，１４ａ…隣接計算機追加部、１３ｂ，１４ｂ…隣接計算機変更部、１３ｃ，１４ｃ…隣接計算機削除部、１４…物理トポロジ隣接計算機管理部、１５…仮想トポロジ担当領域内全計算機管理部、１６…配送先決定部、１７…仮想トポロジ担当領域管理部、１８…物理ネットワーク距離測定部、１９…ランデブー計算機リスト、２０…仮想空間座標管理部、２１…メッセージ生成部、２２…仮想空間シミュレータ、２３…シミュレーション担当領域管理部、２４…オブジェクト管理部、２４Ｔ…オブジェクト管理テーブル、２４ａ…オブジェクト作成部、２４ｂ…オブジェクト変更部、２４ｃ…オブジェクト削除部。
【図１】
2006033384.tif 000003
【図２】
2006033384.tif 000004
【図３】
2006033384.tif 000005
【図４】
2006033384.tif 000006
【図５】
2006033384.tif 000007
【図６】
2006033384.tif 000008
【図７】
2006033384.tif 000009
【図８】
2006033384.tif 000010
【図９】
2006033384.tif 000011
【図１０】
2006033384.tif 000012
【図１１】
2006033384.tif 000013
【図１２】
2006033384.tif 000014
【図１３】
2006033384.tif 000015
【図１４】
2006033384.tif 000016
【図１５】
2006033384.tif 000017
【図１６】
2006033384.tif 000018
【図１７】
2006033384.tif 000019
【図１８】
2006033384.tif 000020
【図１９】
2006033384.tif 000021
【図２０】
2006033384.tif 000022
【図２１】
2006033384.tif 000023
【図２２】
2006033384.tif 000024