(57)【特許請求の範囲】
【請求項１】
ネットワークを介して他のノードとゲームデータの送受信を行うゲーム機のためのプログラムであって、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、
して、コンピュータを機能させ、
前記ゲーム演算手段は、
プレーヤキャラクタの位置に関する情報に基づき、ゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
前記ゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うプログラム。
【請求項２】
請求項１において、
前記通信制御手段は、
プレーヤキャラクタに対応するノードと、当該プレーヤキャラクタと所定の位置関係にある他のプレーヤキャラクタに対応するノードとをグループ化することを特徴とするプログラム。
【請求項３】
請求項１又は２において、
前記通信制御手段は、
各プレーヤキャラクタの位置に基づきプレーヤキャラクタ間の距離を求め、距離が所定距離以内のプレーヤキャラクタに対応するノードをグループ化する処理を行うことを特徴
とするプログラム。
【請求項４】
請求項１〜３のいずれかにおいて、
前記ゲーム世界は、複数のエリアに分割されており、
前記ゲーム評価値演算手段は、
プレーヤキャラクタの位置が属するエリアに対応したゲーム評価値を求めるプログラム。
【請求項５】
ネットワークを介して他のノードとゲームデータの送受信を行うゲーム機のためのプログラムであって、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、仮想カメラから見えるゲーム世界のゲーム画像を生成する画像生成手段として、コンピュータを機能させ、
前記ゲーム演算手段は、
前記仮想カメラの配置に関する仮想カメラ情報に基づき、ゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
前記ゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うプログラム。
【請求項６】
請求項５において、
前記仮想カメラ情報は、前記仮想カメラの位置、回転及び画角の少なくとも一つであることを特徴とするプログラム。
【請求項７】
請求項１〜６のいずれかにおいて、
前記通信制御手段は、
グループに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、グループの代表ノードを判断し、グループの代表ノード間でゲームデータの送受信を行わせるプログラム。
【請求項８】
請求項１〜７のいずれかにおいて、
前記通信制御手段は、
グループ内のノード間でゲームデータの送受信を行う通信頻度を、グループ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノード間のネットワーク接続をグループ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行うプログラム。
【請求項９】
請求項１〜８のいずれかにおいて、
前記通信制御手段は、
ゲーム評価値の変化により、ノードに適したグループが、当該ノードに割り当てられているグループと異なるグループに変化した場合には、当該ノードに割り当てるグループを変更するグループ変更処理を行うプログラム。
【請求項１０】
請求項１〜９のいずれかにおいて、
前記通信制御手段は、
グループの代表ノードに、所属グループに直接接続されているグループの情報を定義した隣接グループ情報に基づき、隣接グループとして定義されているグループの代表ノードとゲームデータの送受信を行わせるプログラム。
【請求項１１】
請求項１〜１０のいずれかにおいて、
前記通信制御手段は、
マスターノード以外のノードに、マスターノードのノード情報を受け取り、マスターノードとテスト通信を行わせるテスト通信処理手段と、
マスターノードに、テスト通信の結果に基づきテスト通信を行ったノードの通信状態情報を当該ノードに関連づけてノード情報として保持させ、保持しているノード情報を他のノードに送信させる処理を行うノード情報管理処理手段として機能するプログラム。
【請求項１２】
請求項１〜１１のいずれかにおいて、
前記通信制御手段は、
グループの代表である複数のノードを上位グループとしてグループ化する処理を行い、同じ上位グループに属するノード間でゲームデータの送受信を行わせ、
上位グループに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、上位グループの代表ノードを判断し、
上位グループの代表ノード間でゲームデータの送受信を行わせるプログラム。
【請求項１３】
ネットワークを介して他のノードとゲームデータの送受信を行い、ゲーム情報を生成するゲーム情報生成装置において、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、を含み、
前記ゲーム演算手段は、
プレーヤキャラクタの位置に関する情報に基づき、ゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
前記ゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うゲーム情報生成装置。
【請求項１４】
ネットワークを介して他のノードとゲームデータの送受信を行い、ゲーム情報を生成するゲーム情報生成装置において、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、仮想カメラから見えるゲーム世界のゲーム画像を生成する画像生成手段と、を含み、
前記ゲーム演算手段は、
前記仮想カメラの配置に関する仮想カメラ情報に基づき、ゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
前記ゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うゲーム情報生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体及びゲーム情報生成装置に関する。
【背景技術】
【０００２】
ネットワークを介して複数のプレーヤが、ゲーム世界のプレーヤキャラクタ同士をオンラインで対戦させるオンライン対戦ゲームが知られており、人気が高い。
【０００３】
かかるオンライン対戦ゲームでは、専用のサーバを設置して、サーバ方を経由してゲーム装置にゲームデータを送信して複数のゲーム装置の通信対戦を行うものが知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−０４１４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし専用のサーバを設置し、サーバでゲームデータの送信を管理するとコストがかり、ネットワークの負荷が増大し、通信によるトラフィックが発生しやすくなる。また複数のゲーム装置を Peer to Peer（ピアトゥピア、ピアツーピア）で接続して、ゲーム装置間で相互にゲームデータの送受信を行う方式も存在するが、参加するゲーム装置が増えると、ネットワークの負荷が増大し、通信のトラフィックが発生しやすくなる。
【０００６】
通信トラフィックを下げるために、通信頻度をさげると、ネットワークの負荷は減少するが、ゲームデータの遅延により、他のゲーム機のゲームデータが反映されないゲーム画像が生成されてしまい、プレーヤに違和感を与えてしまうという問題があった。
【０００７】
本発明は、以上のような課題を解決するためになされたものである。本発明のいくつかの態様によれば、ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小限現にする効率のよい通信制御を行うことができるプログラム、情報記憶媒体、ゲーム情報生成装置を提供することができる。
【課題を解決するための手段】
【０００８】
（１）本発明の一態様は、
ネットワークを介して他のノードとゲームデータの送受信を行うゲーム機のためのプログラムであって、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、
してコンピュータを機能させ、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うプログラムに関する。
【０００９】
ノードはプレーヤ又はプレーヤキャラクタに対応して設定された通信単位である。生成されるゲーム画像は２次元画像でもよいし、３次元画像でもよい。グループ内通信では、各ノードのゲームデータをグループ内の他のノードと相互にやりとりする。グループ外のノードとの通信は、グループの代表が行うようにしてもよい。すなわち各グループの代表が他のグループの代表とグループ内のゲームデータをやりとりするようにしてもよい。
【００１０】
本発明は、マルチプレーヤゲームで通信対戦をPeer to Peer（ピアトゥピア、ピアツーピア）方式で行う手法に関するもので、ノードは1つ以上の他のノードとPeer to Peerで接続されている。Peer to Peer（ピアトゥピア、ピアツーピア）とは、多数の端末間で通信を行う際のアーキテクチャのひとつで、対等の者ピア同士が通信をすることを特徴とする通信方式である。
【００１１】
本発明によれば、マルチプレーヤゲームで通信対戦を行う場合に専用のサーバを使用せずに多人数で通信対戦が可能となる。
【００１２】
一般にゲーム世界で近くに位置する他のノードのキャラクタの情報はゲーム画像に反映される確率が高いのでタイムラグなく更新することが好ましいが、ゲーム世界で遠くに位置する他のノードのキャラクタの情報は、ゲーム画像に反映される確率が低いので通信遅延により反映されるのに多少のタイムラグがあっても問題とならない場合がおおい。
【００１３】
本発明によれば、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を求め、求めたゲーム評価値に基づきグループ分けする。そして、グループ内のノードとゲームデータの送受信を行う通信頻度を、グループ外のノードとゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノードとのネットワーク接続をグループ外のノードとのネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行うことができる。従って、グループ内のノード間の通信環境をグループ外のノード間との通信環境よりよくすることができるので、グループ外の他のノードに対するタイムラグに比べて、グループ内の他のノードに対するタイムラグを小さくすることができる。すなわち、ゲーム世界の状況に応じてノード間の通信環境にメリハリをつけることができるので、ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小現にする効率のよい通信制御を行うことができる。
【００１４】
（２）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記通信制御手段は、
グループを構成するノードをクラスタリングするクラスタリング処理手段と、
同じクラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせるクラスタ内通信制御処理手段と、
クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、クラスタの代表ノードを判断するクラスタ代表判断手段と、
クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるクラスタ間通信制御処理手段と、を含み、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度とクラスタ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びクラスタ内のノード間のネットワーク接続とクラスタ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行ってもよい。
【００１５】
（３）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記通信制御手段は、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度を、クラスタ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びクラスタ内のノード間のネットワーク接続をクラスタ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行ってもよい。
【００１６】
（４）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータ（位置データ等）の少なくとも一方には、プレーヤキャラクタの位置に関する情報を含み、
前記ゲーム評価値演算手段は、
プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算してもよい。
【００１７】
ゲームパラメータは、例えば位置データ等でもよい。プレーヤキャラクタの位置に関する情報とは、位置座標、位置が属するエリア情報、他のプレーヤキャラクタとの位置関係、視界範囲、仮想カメラの位置でもよい。
【００１８】
この様にすれば、プレーヤキャラクタのゲーム世界の位置に応じて、プレーヤキャラクタに対応するノードの通信環境にメリハリをつけることができる。例えば同じゲーム画像に含まれる可能性のあるキャラクタ（ゲーム世界において近くに位置するキャラクタ）をクラスタにクラスタリングすることで、より効果的にネットワークの負荷の増大を防ぎつつ、通信遅延による影響を最小現にすることができる。
【００１９】
（５）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタリング処理手段は、
ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行ってもよい。
【００２０】
このようにすればゲーム状況やプレーヤキャラクタのゲームパラメータの変化に応じて、動的なクラスタ変更を行うことができる。
【００２１】
（６）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタ間通信制御処理手段は、
クラスタの代表に、所属クラスタに直接接続されているクラスタの情報を定義した隣接クラスタ情報に基づき、隣接クラスタとして定義されているクラスタの代表ノードとネットワークを介して接続してクラスタ間通信を行わせてもよい。
【００２２】
隣接クラスタ情報に隣接クラスタとして定義されてないクラスタの代表ノードとは直接クラスタ間通信を行わず、隣接クラスタの代表ノードを介して、さらに他の複数のクラスタの代表ノードを経由してゲームデータの送受信を行うようにしてもよい。離れたクラスタのゲームデータは多少の遅延はあっても、当該ノードのゲーム画像にはあまり影響がないので、通信によるトラフィックを弊害なく効果的に下げることができる。
【００２３】
（７）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記通信制御手段は、
マスターノード以外のノードに、マスターノードのノード情報を受け取り、マスターノードとテスト通信を行わせるテスト通信処理手段と、
マスターノードに、テスト通信の結果に基づきテスト通信を行ったノードの通信状態情報を当該ノードに関連づけてノード情報として保持させ、保持しているノード情報を他のノード（クラスタの代表ノードでもよい）に送信させる処理をおこなうノード情報管理処理手段として機能してもよい。
【００２４】
（８）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超えない範囲で、ノードをクラスタリングする処理を行ってもよい。
【００２５】
（９）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
請求項１乃至６のいずれかにおいて、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超える場合には、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理をおこなってもよい。
【００２６】
（１０）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタ内通信制御処理手段は、
同じクラスタに属するノードと間をフルコネクト型のネットワーク構造で相互接続してクラスタ内通信を行ってもよい。
【００２７】
フルコネクト型のネットワーク構造とは、１つ１つのノードが全ての他のノードと接続している状態であり、１つのノードが故障しても他のノードとの通信には関係なく、自由に接続できるため、障害耐性はネットワーク中でもっとも高い。
【００２８】
（１１）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタリング処理手段は、
クラスタ代表である複数のノードを上位クラスタとしてクラスタリングする処理を行い、
前記クラスタ内通信制御処理手段は、
同じ上位クラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせ、
前記クラスタ代表判断手段は、
上位クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、上位クラスタの代表ノードを判断し、
前記クラスタ間通信制御処理手段は、
上位クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせてもよい。
【００２９】
（１２）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記ゲーム世界は、複数のエリアに分割されており、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、プレーヤキャラクタが属するエリア情報を含み、
前記ゲーム評価値演算手段は、
前記エリア情報に基づき、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求めてもよい。
【００３０】
（１３）このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、仮想カメラの配置に関する仮想カメラ情報を含み、
前記ゲーム評価値演算手段は、
前記仮想カメラ情報に基づき、プレーヤキャラクタに対応したゲーム評価値を求めてもよい。
【００３１】
仮想カメラの配置に関する仮想カメラ情報は、 仮想カメラの位置及び回転及び画角の少なくとも１つの情報を含んでもよい。
【００３２】
（１４）本発明の一態様は、
上記のいずれかに記載のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体に関する。
【００３３】
（１５）本発明の一態様は、
ネットワークを介して他のノードとゲームデータの送受信を行い、ゲーム情報を生成するゲーム情報生成装置において、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、を含み、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うゲーム情報生成装置に関する。
【００３４】
ゲーム情報とは、ゲーム中に生成される情報を意味し、ゲームの出力情報やゲーム成績やゲーム結果に関する情報でもよい。ゲームの出力情報は、例えばゲーム画像（画像の描画データでもよいし、他のコンピュータ等に画像を生成させるためのコマンドやデータでもよい）やゲーム音楽等でもよい。
【図面の簡単な説明】
【００３５】
【図１】本実施形態の画像生成システムの機能ブロック図。
【図２】本実施の形態のグループ化の一例（クラスタリング処理）を示す図。
【図３】クラスタ変更処理について説明するための図。
【図４】クラスタ変更処理について説明するための図。
【図５】クラスタの階層構造について説明する図。
【図６】ゲームへの参加、脱退の流れについて説明するための図。
【図７】本実施の形態のノード情報について説明するための図。
【図８】図８（Ａ）〜（Ｃ）は、クラスタ情報について説明するための図。
【図９】上流ノードと下流ノードについて説明するための図。
【図１０】ゲームへの参加、脱退の流れについて説明するための図。
【図１１】ゲーム参加時の処理の流れを示すフローチャート。
【図１２】ノードの役割に応じた通信制御の処理の流れを示すフローチャート。
【図１３】クラスタ変更処理（クラスタを変更するノードの処理）の流れを示すフローチャート。
【図１４】クラスタ内の他のノードがクラスタを離脱する場合の処理の流れを示すフローチャート。
【図１５】クラスタ分割処理の流れを示すフローチャート。
【図１６】ゲーム画像の一例を示す図。
【発明を実施するための形態】
【００３６】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００３７】
１．構成
図１に本実施形態の画像生成システム（ゲーム情報生成装置の一例、コンピュータ、端末、ゲーム装置）の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図１の構成要素（各部）の一部を省略した構成としてもよい。
【００３８】
操作部１６０は、プレーヤがプレーヤキャラクタ（プレーヤが操作するプレーヤキャラクタ、移動体、プレーヤオブジェクト、ゲームキャラクタを含む）の操作情報を入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【００３９】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。
【００４０】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを入力するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）、メモリカードなどにより実現できる。処理部１００は、情報記憶媒体１８０に入力されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。
【００４１】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００４２】
通信部１９６は外部（例えば、他機、サーバや他のゲームシステム）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００４３】
なお、画像生成装置が、本実施形態の各部としてコンピュータを機能させるためのプログラム（データ）を、ネットワークを介してサーバからダウンロードし、情報記憶媒体１８０に記憶するようにしてもよい。このようなサーバに入力されているプログラムの出力も本発明の範囲内に含めることができる。
【００４４】
処理部１００（プロセッサ）は、操作部１６０からの操作情報（入力情報の一例）やプログラムなどに基づいて、ゲーム演算処理、画像生成処理、或いは音生成処理などの処理を行う。この処理部１００は記憶部１７０内の主記憶部１７２をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００４５】
処理部１００は、ゲーム演算部１１０、オブジェクト空間設定部１１１、仮想カメラ制御部１１２、移動・動作処理部１１３、ゲーム評価値演算部１１５、通信制御部１２０、描画部１３０、音生成部１４０を含む。なおこれらの一部を省略する構成としてもよい。
【００４６】
ゲーム演算部１１０は、入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うもので、ゲーム演算手段ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００４７】
本実施形態のゲーム演算部１１０は、ゲーム開始時に各プレーヤの体力値を初期値（例えば１００）に設定し、ゲームを開始してからゲームが終了するまでのゲーム期間（例えば、９０秒の間）に、フレーム毎に、各プレーヤからの入力情報に基づいてヒット判定処理を行い、ヒット判定結果に基づいていて、各プレーヤキャラクタの体力値を減算させ、各プレーヤキャラクタの体力値が０になったか否かに基づいてゲーム結果（勝敗、引き分け）を決定する演算処理を行ってもよい。なお、ゲーム演算部１１０は、ゲーム期間経過時点で、いずれのプレーヤキャラクタの体力値が０より大きい値である場合には、一方のプレーヤキャラクタの体力値が、他方のプレーヤキャラクタの体力値よりも大きい値である場合に、一方のプレーヤキャラクタが勝ちと決定し、他方のプレーヤキャラクタが負けと決定し、体力値が双方同じ場合には引き分けと決定してもよい。
【００４８】
オブジェクト空間設定部１１１は、プレーヤキャラクタ、移動体、建物、球場、車、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００４９】
仮想カメラ制御部１１２は、オブジェクト空間内の所与（任意）の仮想カメラ（視点）から見える画像を生成するための仮想カメラの制御処理を行う。具体的には、仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）を制御する処理（視点位置、視線方向あるいは画角を制御する処理）を行う。また、画角を制御するようにしてもよい。
【００５０】
例えば、仮想カメラによりオブジェクト（例えば、プレーヤキャラクタ、ボール、車）を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度（仮想カメラの向き）を制御する。この場合には、移動・動作処理部で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置（移動経路）又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【００５１】
移動・動作処理部１１３は、モデル（キャラクタ、車、電車又は飛行機等）の移動・動作演算（移動・動作シミュレーション）を行う。すなわち操作部１６０によりプレーヤが入力した操作データや、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、モデルをオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させたりする処理を行う。具体的には、オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（オブジェクトを構成する各パーツの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理（シミュレーション処理）や画像生成処理を行う時間の単位である。
【００５２】
特に、本実施形態の移動・動作処理部１１３は、プレーヤからの入力情報に基づいて、プレーヤの操作対象のプレーヤキャラクタを移動・動作させる処理を行うことができる。
【００５３】
また、後述する通信制御部１２０によって送信されたパケットに含まれる他のノードのゲームデータに基づいて、他のノードのプレーヤキャラクタを、自己のノードのプレーヤキャラクタと同一のオブジェクト空間において移動・動作させる処理を行うことができる。
【００５４】
また、宛先情報とは、ゲームシステムを構成する各ノードのＩＰアドレス、ポート番号とすることができる。ＩＰアドレスは、インターネット上もしくはＷＡＮで特定のゲーム機を特定するためのグローバルＩＰアドレスとしてもよいし、ＬＡＮで特定のゲーム機を特定するためのプライベートＩＰアドレスとしてもよい。
【００５５】
通信制御部１２０、他のノード（他のゲーム装置でもよい）に送信するパケットを生成する処理、パケット送信先のゲーム機のＩＰアドレスやポート番号を指定する処理、受信したパケットに含まれるデータを記憶部１７０に保存する処理、受信したパケットを解析する処理、その他のパケットの送受信に関する制御処理等を行う。
【００５６】
パケットとは、ネットワークを介して通信する固まりであり、送信元ＩＰアドレス、送信先ＩＰアドレスを含むネットワークに必要なヘッダーと、送信元において書き込まれたデータがペイロードとからなるデータのことをいう。
【００５７】
また、アプリケーションレベルの通信を実現するためには、使用するＴＣＰやＵＤＰプロトコルに応じたアプリケーションの種類を特定するポート番号を指定してパケットを生成する。例えば、ＴＣＰプロトコルは、データの送受信の信頼性が高く、例えば、確認応答や再送を利用している。また、ＴＣＰプロトコルは、紛失したデータの再送処理を行うことができ、さらにデータの送信順序を確保して送信先のゲーム機にパケットを送信することができる。一方、ＵＤＰプロトコルでは、送信の途中でデータを紛失しても再送されず、順番が入れ替わって伝送されることがある。しかし、ＵＤＰプロトコルは、ＴＣＰプロトコルに比べてオーバヘッドがないので、リアルタイムにデータを送信するオンラインゲームでは適している場合がある。ＵＤＰプロトコルを利用する場合には、バッファに入力するゲームデータが識別番号順（昇順）に入力するようにし、入力対象の識別番号のゲームデータが届いていない場合には、他機に要求するようにしてもよい。本実施形態では、いずれのプロトコルにも対応することができる。なお、ＵＤＰプロトコルを利用する場合には、バッファへのゲームデータの入力順序を識別情報（識別番号）の昇順に入力するように制御するようにしてもよい。
【００５８】
本実施形態の通信制御部１２０は、画像を描画するフレームレートに応じてパケットを生成し、接続先の他のノードに生成したパケットを送信する処理を行う。具体的に説明すると、例えば、フレームレートが６０ｆｐｓである場合には、１／６０秒毎に、パケットのヘッダーの送信先ＩＰアドレスと送信先ポート番号に、第２のゲーム機のＩＰアドレスと使用するポート番号指定し、ヘッダーの送信元のＩＰアドレスと送信元ポート番号に、第１のゲーム機のＩＰアドレスと使用するポート番号を指定して、ゲームデータを含むデータをパケットのペイロードに入力し、生成したパケットを他のノードに送信する処理を行う。
【００５９】
フレーム毎にゲーム機を操作するプレーヤからの入力情報（操作情報も含む）を含むデータである。例えば、ゲームデータは、入力情報の有無や、入力情報が有る場合には入力情報の内容を示したデータとすることができる。例えば、ゲームデータを数値で示す場合には、入力情報が無い場合はゲームデータを「０」とし、入力情報があってその内容がＡボタンの入力である場合にはゲームデータを「１」、入力情報があってその内容がＢボタンの入力である場合にはゲームデータを「２」、また、入力情報があってその内容がＡ及びＢボタンの入力である場合にはゲームデータを「３」としてもよい。
【００６０】
また、ここで、識別情報とは、フレーム毎に付与される複数のゲーム機（第１、第２のゲーム機）において共通のデータである。本実施形態では、第１のゲーム機と第２のゲーム機との接続が確立されたときを基準に、経過時間に応じてフレーム毎に付与される情報とすることができる。例えば、ゲーム機において、フレームレートに応じて取得したゲームデータに対応付けるシーケンシャルな識別番号（１から始まる正の整数）とすることができる。
【００６１】
例えば、フレームレートが６０ｆｐｓである場合を考えると、１／６０毎に取得したゲームデータに、識別情報を対応付ける。例えば、第１のゲーム機と第２のゲーム機それぞれにおいて、接続が確立された時点に取得したゲームデータには、識別番号「１」を対応付けし、接続確立時から１／６０秒後に取得したゲームデータには、識別番号「２」を対応付けし、接続確立時から２／６０秒後に取得したゲームデータには、識別番号「３」を対応付けする。
【００６２】
また、本実施形態の通信制御部１１５は、第２のゲーム機から送信されたパケットを受信する処理を行う。そして、受信したパケットを解析し、パケットのペイロードに含まれるゲームデータを含むデータを取得する。
【００６３】
通信制御部１２０は、ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行うもので、ネットワーク設定部１２５を含む。
【００６４】
ネットワーク設定部１２５は、ゲームシステムで必要となるネットワーク情報を取得し、管理する処理等を行う。特に、本実施形態のネットワーク設定部は、各ノード（ゲーム機又はゲーム機のプレーヤキャラクタ）に個別に付与されるノードの識別情報（オンラインゲームに参加できるノードを識別するために個別に付与されたデータ）と、ノードの識別情報に対応付けられたパケットの送信先を指定する宛先情報とを取得し、管理する処理を行う。
【００６５】
ゲーム評価値演算部１１５は、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算し、通信制御部１２０は、グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度を、グループ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノード間のネットワーク接続をグループ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行う。
【００６６】
また通信制御部１２０は、グループを構成するノードをクラスタリングするクラスタリング処理部１２１と、同じクラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせるクラスタ内通信制御処理部１２２と、クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、クラスタの代表ノードを判断するクラスタ代表判断部１２３と、クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるクラスタ間通信制御処理部１２４と、を含み、クラスタ内のノード間でゲームデータの送受信を行う通信頻度とクラスタ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びクラスタ内のノード間のネットワーク接続とクラスタ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行ってもよい。
【００６７】
また通信制御部１２０は、クラスタ内のノード間でゲームデータの送受信を行う通信頻度を、クラスタ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びクラスタ内のノード間のネットワーク接続をクラスタ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行ってもよい。
【００６８】
ゲーム状況及びプレーヤキャラクタのゲームパラメータ（位置データ等）の少なくとも一方には、プレーヤキャラクタの位置に関する情報を含み、ゲーム評価値演算部１１５は、 プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算してもよい。
【００６９】
クラスタリング処理部１２１は、ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行ってもよい。
【００７０】
クラスタ間通信制御処理部１２４は、クラスタの代表に、所属クラスタに直接接続されているクラスタの情報を定義した隣接クラスタ情報に基づき、隣接クラスタとして定義されているクラスタの代表ノードとネットワークを介して接続してクラスタ間通信を行わせてもよい。
【００７１】
通信制御部１２０は、マスターノード以外のノードに、マスターノードのノード情報を受け取り、マスターノードとテスト通信を行わせるテスト通信処理部１２６と、マスターノードに、テスト通信の結果に基づきテスト通信を行ったノードの通信状態情報を当該ノードに関連づけてノード情報として保持させ、保持しているノード情報を他のノードに送信させる処理をおこなうノード情報管理処理部１２７を含む。
【００７２】
クラスタリング処理部１２１は、クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超えない範囲で、ノードをクラスタリングする処理を行ってもよい。
【００７３】
クラスタリング処理部１２１は、クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超える場合には、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理をおこなってもよい。
【００７４】
クラスタ内通信制御処理部１２２は、同じクラスタに属するノードと間をフルコネクト型のネットワーク構造で相互接続してクラスタ内通信を行ってもよい。
【００７５】
クラスタリング処理部１２１は、クラスタ代表である複数のノードを上位クラスタとしてクラスタリングする処理を行い、クラスタ内通信制御処理部１２２は、同じ上位クラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせ、クラスタ代表判断部１２３は、上位クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、上位クラスタの代表ノードを判断し、クラスタ間通信制御処理部１２４は、上位クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせてもよい。
【００７６】
ゲーム世界は、複数のエリアに分割されており、前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、プレーヤキャラクタが属するエリア情報を含み、ゲーム評価値演算部１１５は、前記エリア情報に基づき、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求めてもよい。
【００７７】
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、仮想カメラの配置に関する仮想カメラ情報を含み、ゲーム評価値演算部１１５は、仮想カメラ情報に基づき、プレーヤキャラクタに対応したゲーム評価値を求めてもよい。
【００７８】
描画部１３０は、処理部１００で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まずオブジェクト（モデル）の各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）を含むオブジェクトデータ（モデルデータ）が入力され、入力されたオブジェクトデータ（モデルデータ）に含まれる頂点データに基づいて、頂点処理（頂点シェーダによるシェーディング）が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。頂点処理では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換（ワールド座標変換、カメラ座標変換）、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）が行われる。ピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を画像バッファ１７４（ピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット）に出力（描画）する。すなわち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として１画面に表示できるように画像を生成することができる。
【００７９】
なお、頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００８０】
そして、描画部１３０は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【００８１】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後（透視投影変換後）のオブジェクトデータ（オブジェクトの頂点の位置座標、テクスチャ座標、色データ（輝度データ）、法線ベクトル、或いはα値等）は、図示しないオブジェクトデータ記憶部に保存される。
【００８２】
テクスチャマッピングは、記憶部１７０のテクスチャ記憶部に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定（付与）されるテクスチャ座標等を用いて記憶部１７０のテクスチャ記憶部からテクスチャ（色（ＲＧＢ）、α値などの表面プロパティ）を読み出す。そして、２次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【００８３】
隠面消去処理としては、描画ピクセルのＺ値（奥行き情報）が入力されるＺバッファ（奥行きバッファ）を用いたＺバッファ法（奥行き比較法、Ｚテスト）による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Ｚバッファに入力されるＺ値を参照する。そして参照されたＺバッファのＺ値と、プリミティブの描画ピクセルでのＺ値とを比較し、描画ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値（例えば小さなＺ値）である場合には、その描画ピクセルの描画処理を行うとともにＺバッファのＺ値を新たなＺ値に更新する。
【００８４】
αブレンディング（α合成）は、α値（Ａ値）に基づく半透明合成処理（通常αブレンディング、加算αブレンディング又は減算αブレンディング等）のことである。
【００８５】
なお、α値は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして出力できる。
【００８６】
なお描画部１３０、オブジェクト空間設定部１１１，仮想カメラ制御１１２は、ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段として機能する。
【００８７】
音生成部１４０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００８８】
２．本実施の形態の手法
（１）クラスタリング処理
本実施の形態では、オンラインで通信対戦や協力プレイを行うマルチプレーヤゲームにおいて、専用サーバを設置せずに、Pe er to Peer（ピアトゥピア、ピアツーピア）でゲーム機を接続し、多人数でのプレイを可能とするネットワークトポロジーを構成する。 Peer to Peer（ピアトゥピア、ピアツーピア）とは、多数の端末間で通信を行う際のアーキテクチャのひとつで、対等の者ピア同士が通信をすることを特徴とする通信方式である。
【００８９】
図２は本実施の形態のグループ化の一例（クラスタリング処理）を示す図である。
【００９０】
ノードＮＤ００１〜ＮＤ００９は、プレーヤキャラクタＰＣ１〜ＰＣ９（プレーヤキャラクタを操作するプレーヤでもよい）に対応して設定された通信単位であり、1つ以上の他のノードと接続され、ゲームデータの送受信を行う。
【００９１】
ゲームデータとは、ゲームの仕様に応じて決められるデータであり、例えばキャラクタの位置や回転情報でもよいし、ゲームパラメータでもよいし、キー情報（入力キーの情報）でもよいし、カウンタ情報やイベントトリガ等の情報でもよい。
【００９２】
１台のゲーム装置（ゲーム情報生成装置でもよい）に１人のプレーヤが対応したゲーム装置を複数接続して通信対戦をおこなう場合には、１台のゲーム装置に１つのノードが存在する。また例えば画面分割して１つのゲーム機でｎ人のプレーヤがゲームするゲーム装置（１台のゲーム装置にｎ人のプレーヤ対応したゲーム装置）複数接続して通信対戦をおこなう場合には、１台のゲーム装置にｎ個のノードが存在する。この様な場合、１台のゲーム機に対応した複数のノードは、同じＩＰアドレスで異なるポート番号を有している。
【００９３】
本実施の形態では、グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度を、グループ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノード間のネットワーク接続をグループ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行う。
【００９４】
ゲーム評価値は、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき決定される値である。例えばプレーヤキャラクタのゲーム世界における位置データ（ゲームパラメータの一例）により、ゲーム評価値を決定してもよい。例えばゲーム世界における位置座標の分布から、距離が所定値以内（近くにいる）プレーヤキャラクタをグループ化してもよい。所与のタイミング（たとえばゲーム開始時）でゲーム世界のプレーヤキャラクタ間の距離を求め、距離が所定値以内のプレーヤキャラクタをグループ化してもよい。そして、グループ形成後は、所定のサイクルで各プレーヤキャラクタ間の距離を再計算して、グループを構成するノードを変更してもよい。また各プレーヤキャラクタの位置の変化によりノードの属するグループを変更してもよい。
【００９５】
またグループの代表となるプレーヤキャラクタを複数抽出し、抽出されたプレーヤキャラクタを基準に、当該プレーヤキャラクタと所定の位置関係（所定の距離内でもよい）にあるプレーヤキャラクタをグループ化してもよい。
【００９６】
またゲーム空間を、複数のエリアに分割し、プレーヤキャラクタが属するエリアに対応したゲーム評価値を求めてもよい。また例えば仮想カメラがプレーヤキャラクタに追従するようなゲームの場合には、仮想カメラの配置（位置、回転、画角）に基づき、プレーヤキャラクタのゲーム評価値を求めてもよい。
【００９７】
ここで、ノードＮＤ００１〜ＮＤ００９に対応するプレーヤキャラクタＰＣ１〜ＰＣ９のゲーム評価値がＧＶ１〜ＧＶ９であり、それぞれＧＶ１＝１、ＧＶ２＝１、ＧＶ３＝１、ＧＶ４＝２、ＧＶ５＝１、ＧＶ６＝３、ＧＶ７＝３、ＧＶ８＝３、ＧＶ９＝３であるとする。この様な場合、プレーヤキャラクタのゲーム評価値が１であるノードＮＤ００１〜Ｄ００３の集合をグループ化（ＫＬ００１）し、プレーヤキャラクタのゲーム評価値が２であるノードＮＤ００４とＤ００５の集合をグループ化（ＫＬ００２）し、プレーヤキャラクタのゲーム評価値が３であるノードＮＤ００６〜Ｄ００９の集合をグループ化（ＫＬ００３）してもよい。グループ内では各ノードは、グループ内の他のノードすべてと相互接続（フルコネクト型のネットワーク構造で相互接続）されてもよい。グループ内でのノード間通信α１、α２、α３では第１の通信頻度でゲームデータのやりとりを行う。
【００９８】
また他のグループのノード（グループ外のノード）のゲームデータも必要なので、グループ間でもゲームデータの送受信を行う。グループ間でのデータの送受信は、グループの代表（クラスタサーバとよぶ）がおこなってもよい。
【００９９】
グループ化はクラスタリング処理により実現してもよい。以下グループをクラスタと呼ぶ。図２では、クラスタＫＬ００１のクラスタサーバはノードＮＤ００１であり、クラスタＫＬ００２のクラスタサーバはＮＤ００４であり、クラスタＫＬ００３のクラスタサーバはＮＤ００６となっている。
【０１００】
例えばクラスタＫＬ００１のゲームデータ（クラスタＫＬ００１を構成するノードＮＤ００１、ＮＤ００２、ＮＤ００３のゲームデータの集合でもよい）は、クラスタＫＬ００１のクラスタサーバＮＤ００１が、隣接クラスタ（直接接続されているクラスタ）ＫＬ００２のクラスタサーバＮＤ００４に送信する。またクラスタＫＬ００１のクラスタサーバＮＤ００１は、隣接クラスタＫＬ００２のクラスタサーバＮＤ００４からクラスタＫＬ００２のゲームデータ及び隣接しないクラスタ（直接接続されていないクラスタ）ＫＬ００３のゲームデータを受信する。この様にクラスタサーバは隣接しないクラスタ（直接接続されていないクラスタ）ＫＬ００３のゲームデータについては、隣接クラスタＫＬ００２のクラスタサーバＮＤ００６を介して受信する。
【０１０１】
この様なクラスタ間通信βのゲームデータの送受信は、第１の通信頻度より低い第２の通信頻度で行う。このようにすることにより、クラスタ外（グループ外）の他のノードに対するタイムラグに比べて、グループ内（クラスタ内）の他のノードに対するタイムラグを小さくすることができる。すなわち、ゲーム世界の状況に応じてノード間の通信環境にメリハリをつけることができるので、ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小現にする効率のよい通信制御を行うことができる。
【０１０２】
受信した他のクラスタの情報は、クラスタサーバＮＤ００１が、クラスタ内の他のノードＮＤ００２、ＮＤ００３に送信する（クラスタ内通信）。このように、クラスタ内のクラスタサーバ以外のノードＮＤ００２、ＮＤ００３は、クラスタサーバＮＤ００１を介して、他のクラスタＫＬ００２、ＫＬ００３のゲームデータを受信し、またクラスタサーバＮＤ００１を介して、他のクラスタＫＬ００２、ＫＬ００３にゲームデータを送信することができる。
【０１０３】
ノードの接続情報は、ノード内で管理される。後述する図８で説明するに、各ノードがノード間の接続情報テーブルを保持してもよい。なお各ノードは全ノードに付いての接続情報を保持していてもよいし、一部のノードの接続情報のみ有していてもよい。また離れたクラスタの接続情報は必要ない場合がおおいので、各ノードが、ノードが属するクラスタ及びそのノードが直接接続されているクラスタについてのみノードの接続情報を保持するようにしてもよい。
【０１０４】
なお図２に示すようにクラスタサーバ同士は、フルコネクト接続でなくてもよい。直接接続されていないクラスタサーバのゲームデータは、直接接続されているクラスタサーバを経由して取得してもよい。
【０１０５】
図９は、上流ノードと下流ノードについて説明するための図である。
【０１０６】
クラスタＫＬ００１のクラスタサーバであるノードＮＤ００１、クラスタＫＬ００２のクラスタサーバであるノードＮＤ００４、クラスタＫＬ００３のクラスタサーバであるノードＮＤ００６をグループＡ（３２０）とし、ノードＮＤ００２，ＮＤ００３、ＮＤ００５、ＮＤ００７、ＮＤ００８、ＮＤ００９をグループＢ（３１０）とすると、グループＡ（３２０）は、グループＢ（３１０）の上流ノードとなる。またグループＢ（３１０）は、グループＡ（３２０）の下流ノードとなる。
【０１０７】
クラスタサーバは、各クラスタ内で通信環境のよいノード（例えば図７に示す通信状態情報２４０がよいもので、通信状態情報がラウンドトリップタイム（ＲＴＴ）で与えられる場合にはＲＴＴがより短いもの）がなるようにしてもよい。
【０１０８】
この様にすると上流ノードは下流ノードに比べ通信状態がよくなる。上流ノードは隣接する上流ノードと接続して、上流ノード間で自己の下流ノードのデータのやりとりを行う。後述するクラスタ変更処理で説明するようにノードが他のクラスタに移動する場合には、クラスタ内のノードの接続を張り直し、上流ノードが他のクラスタに移動した場合には、下流ノードで通信環境のよいノードが上流ノードになる。
【０１０９】
ゲーム評価値によりノードをクラスタリングすることにより、離れたクラスタのゲームデータは多少の遅延はあっても、当該ノードのゲーム画像にはあまり影響がないようにすることができるので、通信によるトラフィックを弊害なく効果的に下げることができる。
【０１１０】
本実施の形態では、各ゲーム装置（ノード）は同じプログラムがインストールされている。プログラムは、複数の機能を実現するためのアルゴリズムをふくんでおり、ノードの役割に応じた機能を実現可能に構成されている。例えばプログラムは「クラスタ内通信制御処理ルーチン（ノードがクラスタサーバである場合の処理）」や「クラスタ間通信制御処理ルーチン」や、「クラスタ代表判断処理ルーチン」や「テスト通信処理ルーチン（ノードがマスターノードである場合に実行する処理）」や「ノード情報管理処理ルーチン」を含んでおり、ノードがクラスタサーバである場合には「クラスタ間通信制御処理ルーチン（ノードがクラスタサーバである場合の処理）」を実行するが、ノードがクラスタサーバでない場合には「クラスタ間通信制御処理ルーチン（ノードがクラスタサーバである場合の処理）」は実行されない。本実施の形態では、ゲーム中にクラスタサーバは変わる可能性があるため、すべてのノードが、上記全処理を実行可能なプログラムがインストールされている。
【０１１１】
（２）クラスタサーバの決定処理
次にクラスタサーバの決定処理について説明する。各ノードは、クラスタに属するノードの通信状態情報に基づき、同じアルゴリズム（プログラム）で、クラスタサーバを判断する。各ノードは、自己が保持しているノード情報に含まれたノードの通信状態情報を得ることができる。
【０１１２】
各ノードが有している情報は、全ノードのノード情報（ＩＰアドレス、ポート番号、通信状態情報を含む）と、同じクラスタを構成するノードを特定するクラスタ情報でもよい。
【０１１３】
図７は、本実施の形態のノード情報について説明するための図である。
【０１１４】
ノード情報２００は、各ノードのＩＰアドレス２２０、ポート番号２３０、通信状態情報２４０を含む情報であり、各ノードのノードＩＤ２１０に関連づけて記憶されている。通信状態情報２４０は、各ノードの通信状態に関する情報であり、例えばマスターノードとのテスト通信におけるラウンドトリップタイム（ＲＴＴ）や往復遅延時間。（あるデータを送ってから、相手の確認応答が戻ってくるまでにかかる時間）でもよい。マスターノードとのテスト通信は、ノードのゲーム参加時に行うようにしてもよい。なおその後は、所定のタイミングで更新してもよいし、ネットワークの負荷を増加させないために、更新はしなくてもよい。
【０１１５】
各ノードは、ゲームに参加している（同じゲーム世界にいる）全ノードのノード情報を有している。なおゲームに参加している全ノードの情報は、マスターノードとして設定されているノードが管理している。すなわち通信状態情報２４０を更新しない場合には、ノード情報の更新があるのは、新たなノードがゲームに参加する場合と、現在ゲームに参加しているノードがゲームから離脱する場合等である。新たなノードがゲームに参加する場合には、後述するように、管理サーバにゲーム参加申し込みをして、管理サーバから参加するゲーム世界を管理しているマスターノードを紹介され、マスターノードから参加許可を受けることになる。従ってマスターノードは、ゲームに参加するノードを把握しているため、参加許可を与えた時点でノード情報を更新する。すなわち新たに参加したノードに関するノード情報を追加する。参加申し込みをしたノードとマスターノードがテスト通信をおこない、そのときにＲＴＴ情報を当該ノードの通信状態情報２４０としてもよい。
【０１１６】
図８（Ａ）〜（Ｃ）は、クラスタ情報について説明するための図である。
【０１１７】
図８（Ａ）は、図２のクラスタＫＬ００１のクラスタ情報であり、図８（Ｂ）は、図２のクラスタＫＬ００２のクラスタ情報であり、図８（Ｃ）は、図２のクラスタＫＬ００３のクラスタ情報である。クラスタ情報は、各クラスタを構成するノードを特定するための情報である構成ノード情報（構成ノードのノードＩＤ）２１０を含む。それ以外にも、構成ノードに対応するプレーヤキャラクタの位置情報２７０、構成ノードがクラスタサーバか否かを示すクラスタサーバフラグ２８０を含んでいてもよいが必須ではない。なおプレーヤキャラクタの位置情報２７０は、ゲームデータとして有しているプレーヤキャラクタの位置情報を参照してもよい。
【０１１８】
クラスタに属する各ノードは、自分のクラスタに関するクラスタ情報を有している。すなわち図２のクラスタＫＬ００１に属するノードＮＤ００１、ＮＤ００２、ＮＤ００３は、クラスタＫＬ００１のクラスタ情報（図８（Ａ））を有しており、図２のクラスタＫＬ００２に属するノードＮＤ００４、ＮＤ００５はクラスタＫＬ００２のクラスタ情報（図８（Ｂ））を有しており、図２のクラスタＫＬ００３に属するノードＮＤ００６、ＮＤ００７、ＮＤ００８、ＮＤ００９はクラスタＫＬ００３のクラスタ情報（図８（Ｃ））を有している。
【０１１９】
各クラスタのノードは自己が属するクラスタのクラスタ情報に基づき自己が属するクラスタのクラスタサーバがどのノードであるか把握し、図７に示すノード情報に基づき、クラスタアドレスの通信アドレス（ＩＰアドレスとポート番号）を取得することができる。例えばノードＮＤ００１は、クラスタＫＬ００１のクラスタ情報に基づき、自己と同じクラスタに属するノードがＮＤ００２とＮＤ００３であることを把握する。そしてノード情報に基づき、ノードＮＤ００１、ＮＤ００２、ＮＤ００３の通信状態情報を取得することができ、通信状態情報に基づき、クラスタサーバを判断する。例えばクラスタサーバを選ぶ規則として、「クラスタ内で最も通信状態がよいノードをクラスタサーバとする」と決めておくことにより、クラスタ内の各ノードは、各ノードが個別にクラスタサーバを判断する際に一意に同じノードをクラスタサーバとして決定することができる。
【０１２０】
なおクラスタサーバを決定するのは、何らかの事情でクラスタサーバが変更するときである。クラスタサーバ変更時に新たなクラスタサーバを決定したら、クラスタ情報のクラスタサーバフラグを更新する。そして、クラスタサーバの変更がおこらない限りは、クラスタサーバフラグを参照して、クラスタサーバであるノードを判断する。
【０１２１】
（３）クラスタ変更処理
図３、図４は、クラスタ変更処理について説明するための図である。
【０１２２】
本実施では、ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行う。ここで、前記ゲーム世界が複数のエリアに分割されており、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求め、クラスタが形成される場合を例に取り説明する。
【０１２３】
図３は、ゲーム世界におけるプレーヤキャラクタの位置の変化を示している。ゲーム世界は、図３に示すように複数のエリアＥ１〜Ｅ１０に分割されている。４００−ｔ１は時刻ｔ１におけるゲーム世界におけるプレーヤキャラクタＰＣ００１〜ＰＣ００９の位置分布を示している。同図に示すようにプレーヤキャラクタＰＣ００１〜ＰＣ００３はエリアＥ１に存在し、プレーヤキャラクタＰＣ００４、ＰＣ００５はエリアＥ２に存在し、プレーヤキャラクタＰＣ００６〜ＰＣ００９はエリアＥ３に存在する。
【０１２４】
なお通信単位であるノードはプレーヤキャラクタに対応して設定されるため、ＰＣ００１からＰＣ００９にそれぞれＮＤ００１〜ＮＤ００９が対応する。
【０１２５】
この様な場合、同じエリアに存在するプレーヤキャラクタに対応したノードを同じクラスタに割り当てし、クラスタリングしてもよい。
【０１２６】
同じエリアに存在するプレーヤキャラクタはゲーム世界で近くに位置するため、同じ画像内に登場する可能正が高い。図１６は、プレーヤキャラクタＰＣ００１に対して生成されるゲーム画像の一例を示している。プレーヤキャラクタＰＣ００１に対して生成されるゲーム画像４１０は、プレーヤキャラクタＰＣ００１を操作するプレーヤの表示部に表示されるゲーム画像であり、プレーヤキャラクタＰＣ００１に追従する仮想カメラからゲーム空間（ゲーム世界が３次元である場合）を見た画像となる。ゲーム画像４１０には、図１６に示すように、プレーヤキャラクタＰＣ００１に近い位置にいる（同じエリアに存在する）プレーヤキャラクタＰＣ００２、ＰＣ００３の画像が生成される可能性が高い。これに対し、プレーヤキャラクタＰＣ００１から離れた（異なるエリアに存在する）プレーヤキャラクタＰＣ００４〜ＰＣ００９の画像は生成される可能性が低い。すなわち同じエリアに位置するプレーヤキャラクタの情報はゲーム画像に反映される確率が高いのでタイムラグなく更新することが好ましいが、ゲーム世界で異なるエリア位置するプレーヤキャラクタの情報は、ゲーム画像に反映される確率が低いので通信遅延により反映されるのに多少のタイムラグがあっても問題とならない場合がおおい。
【０１２７】
図４の４００−ｔ１は、図３の４００−ｔ１の位置分布における、プレーヤキャラクタに対応するノードのネットワーク構成を示している。
【０１２８】
時刻ｔ１において、ゲーム世界で同じエリアＥ１に属するプレーヤキャラクタＰＣ００１〜ＰＣ００３に対応するノードＮＤ００１〜ＮＤ００３は、同じクラスタＫＬ００１にクラスタリングされている。
【０１２９】
また時刻ｔ１において、ゲーム世界で同じエリアＥ２に属するプレーヤキャラクタＰＣ００４、ＰＣ００５に対応するノードＮＤ００４、ＮＤ００５は、同じクラスタＫＬ００２にクラスタリングされている。
【０１３０】
また時刻ｔ１において、ゲーム世界で同じエリアＥ３に属するプレーヤキャラクタＰＣ００６〜ＰＣ００９に対応するノードＮＤ００６〜ＮＤ００９は、同じクラスタＫＬ００３にクラスタリングされている。
【０１３１】
図３の４００−ｔ２は時刻ｔ２におけるゲーム世界におけるプレーヤキャラクタＰＣ００１〜ＰＣ００９の位置分布を示している。時刻ｔ１においてエリアＥ１に位置していたプレーヤキャラクタＰＣ０２は、時刻ｔ２においてはエリアＥ２に位置している。また時刻ｔ１においてエリアＥ３に位置していたプレーヤキャラクタＰＣ００６は、時刻ｔ２においては、ゲームから離脱して、ゲーム世界に存在しなくなっている。従って時刻ｔ２においては、プレーヤキャラクタＰＣ００１、ＰＣ００３はエリアＥ１に存在し、プレーヤキャラクタＰＣ００２、ＰＣ００４、ＰＣ００５はエリアＥ２に存在し、プレーヤキャラクタＰＣ００７〜ＰＣ００９はエリアＥ３に存在する。
【０１３２】
図４の４００−ｔ２は、図３の４００−ｔ２の位置分布における、プレーヤキャラクタに対応するノードのネットワーク構成を示している。
【０１３３】
時刻ｔ１〜時刻ｔ２におけるプレーヤキャラクタＰＣ００２のエリア変化に伴って、プレーヤキャラクタＰＣ００２に対応するノードＮＤ００２の属するクラスタが、ＫＬ００１からＫＬ００２に変化している。ノードＮＤ００２は、プレーヤキャラクタＰＣ００２の属するエリアがＥ１からＥ２に変化したことを検出すると、プレーヤキャラクタＰＣ００２に対応したノードに適したクラスタはＫＬ００２であると判断する。しかしその時点でノードＮＤ００２に割り当てられているクラスタはＫＬ００１であるため、クラスタＫＬ００１を離脱し、クラスタＫＬ００２に参加する処理を行う。
【０１３４】
離脱する際には、それまで属していたクラスタＫＬ００１に属する他のノードＮＤ００１、ＮＤ００２に離脱する旨の通知を送信する。離脱通知を受信したクラスタ内のノードＮＤ００１，ＮＤ００３は、自己の保持するクラスタ情報を更新する。すなわちＫＬ００１のクラスタ情報の構成ノード情報から、ノードＮＤ００２を削除する。なおノードＮＤ００２は、クラスタサーバではないので、新たなクラスタサーバを決定する処理は行われない。もし離脱通知をしたノードがクラスタサーバである場合には、当該クラスタの新たなクラスタサーバを決定する処理が行われる。
【０１３５】
またノードＮＤ００２は、クラスタＫＬ００２のクラスタ情報に基づき、クラスタＫＬ００２のクラスタサーバがどのノードであるか判断し、クラスタサーバであるノードに参加申し込みを行う。
【０１３６】
図８のクラスタ情報の説明において、各ノードは、自己が属するクラスタのクラスタ情報を保持していると述べたが、各ノードは直接接続されているクラスタのクラスタ情報（隣接クラスタ情報と呼ぶ）も保持していてもよい。例えば図２においてはクラスタＫＬ００１はクラスタＫＬ００２とは直接接続されているが、クラスタＫＬ００３とは直接接続されていない。このような場合、クラスタＫＬ００１に属する各ノードＮＤ００１〜ＮＤ００３は、隣接クラスタ情報としてクラスタＫＬ００２のクラスタ情報を有している。
【０１３７】
また例えば図４の４００−ｔ１においてはクラスタＫＬ００１はクラスタＫＬ００２、ＫＬ００３と直接接続されているので、このような場合、クラスタＫＬ００１に属する各ノードＮＤ００１〜ＮＤ００３は、隣接クラスタ情報としてクラスタＫＬ００２とクラスタＫＬ００３のクラスタ情報を有している。
【０１３８】
従ってノードＮＤ００２は、ＫＬ００２のクラスタ情報に基づき、クラスタＫＬ００２のクラスタサーバはＮＤ００４であることを把握し、ノード情報（図７参照）によって、ＮＤ００４のＩＰアドレスとポート番号を取得して、ノードＮＤ００４に対して、クラスタＫＬ００２への参加申し込みを送信する。参加申し込みを受けたノードＮＤ００４は、参加の許可又は不許可の判断を行う。
【０１３９】
例えばクラスタ内のノード数に制限を設けている場合には、当該クラスタのノード数が制限値を超えない場合には、参加を許可する。また当該クラスタのノード数が制限値を超える場合に、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理を行って分割後のいずれかのクラスタへの参加を許可してもよい。
【０１４０】
図４では、ノードＮＤ００２のクラスタＫＬ００２への参加は許可され、クラスタＫＬ００２を構成するノードは、ＮＤ００２、ＮＤ００４、ＮＤ００５となる。クラスタＫＬ００２のクラスタサーバであるノードＮＤ００４は、自己の保持するＫＬ００２のクラスタ情報を更新するとともに、新たなノードＮＤ００２の参加をクラスタ内の他のノードＮＤ００５に通知する。参加通知を受信したクラスタ内ノードＮＤ００５、ＮＤ００２は、自己の保持するクラスタ情報を更新する。すなわちＫＬ００２のクラスタ情報の構成ノード情報に、ノードＮＤ００２を追加する。
【０１４１】
時刻ｔ１〜時刻ｔ２におけるプレーヤキャラクタＰＣ００６のゲーム世界からの離脱また通信切断に伴って、プレーヤキャラクタＰＣ００６に対応するノードＮＤ００６が属していたクラスタＫＬ００３の構成が変化している。例えばノードＮＤ００６はゲーム世界から離脱する場合には、同じクラスタに属する他のノードＮＤ００７〜ＮＤ００９に離脱通知を送信するので、これを受信した同じクラスタに属する他のノードＮＤ００７〜ＮＤ００９は、ノードＮＤ００６の離脱を把握する。また例えばノードＮＤ００６の通信切断が生じた場合には、同じクラスタに属する他のノードＮＤ００７〜ＮＤ００９は、ノードＮＤ００６との相互通信ができなくなることによりノードＮＤ００６の通信切断を把握する。
【０１４２】
ノードＮＤ００６の離脱又は通信切断を把握した同じクラスタに属する他のノードＮＤ００７〜ＮＤ００９は、自己が保持するクラスタ情報によりノードＮＤ００６がクラスタサーバであったことを把握しているので、新たなクラスタサーバを決定する処理を行う。各ノードは同じアルゴリズム及び各ノードが保持しているノード情報とクラスタ情報に基づいて一意に新たなクラスタサーバをノードＮＤ００９に決定し、各自のクラスタ情報を更新する。
【０１４３】
またクラスタＫＬ００３の新たなクラスタサーバとなったノードＮＤ００９は、他のクラスタのクラスタサーバであるノードＮＤ００１、ＮＤ００４とクラスタのゲームデータの送受信を行う。
【０１４４】
（４）クラスタの階層構造
クラスタが多数存在する場合には、クラスタサーバ同士をクラスタリングすることで、さらに効率的な処理を行うことができる。
【０１４５】
図５は、クラスタの階層構造について説明する図である。
【０１４６】
クラスタサーバであるノードＮＤ００１、ＮＤ００４、ＮＤ００６はクラスタリングされ上位クラスタＳＫＬ０１を構成し、クラスタサーバであるノードＮＤ００１０、ＮＤ０１３、ＮＤ０１５はクラスタリングされ上位クラスタＳＫＬ０２を構成している。
【０１４７】
同じ上位クラスタＳＫＬ０１に属するクラスタサーバであるノードＮＤ００１，ＮＤ００４、ＮＤ００６は、上位クラスタＳＫＬ０１内の他のノードすべてと相互接続（フルコネクト型のネットワーク構造で相互接続）されてもよい。上位クラスタ内でのノード間通信β１、β２、β３では第３の通信頻度でゲームデータのやりとりを行う。
【０１４８】
また他の上位クラスタＳＫＬ０２のノードのゲームデータも必要なので、上位クラスタ間でもゲームデータの送受信を行う。上位クラスタ間でのデータの送受信は、上位クラスタのクラスタサーバが行ってもよい。
【０１４９】
図５では、上位クラスタＳＫＬ０１のクラスタサーバはノードＮＤ００６であり、上位クラスタＳＫＬ０２のクラスタサーバはＮＤ００１０となっている。
【０１５０】
例えば上位クラスタＳＫＬ０１のゲームデータは、上位クラスタＳＫＬ０１のクラスタサーバＮＤ００６が、隣接上位クラスタ（直接接続されている上位クラスタ）ＳＫＬ０２のクラスタサーバＮＤ０１０に送信する。また上位クラスタＳＫＬ０１のクラスタサーバＮＤ００６は、隣接上位クラスタＳＫＬ０２のクラスタサーバＮＤ０１０から上位クラスＳタＫＬ０２のゲームデータを受信する。
【０１５１】
この様な上位クラスタ間通信γのゲームデータの送受信は、第３の通信頻度より低い第４の通信頻度で行う。このようにすることにより、上位クラスタ外の他のノードに対するタイムラグに比べて、上位クラスタ内の他のノードに対するタイムラグを小さくすることができる。
【０１５２】
（５）ゲームへの参加、脱退の流れ
図６、図１０はゲームへの参加、脱退の流れについて説明するための図である。
【０１５３】
まず、ノードＮＤ−Ａが所与のゲーム世界におけるゲームに参加する場合には、管理サーバ（図１０の５１０）に問い合わせを行い（図１０のｂ１）、管理サーバ５１０から所与の仮想世界でのゲームへの参加申し込みを受け付けるマスターノード（図１０のＮＤ−Ｍ）の紹介を受ける。具体的には、管理サーバ５１０からマスターノードのＩＰアドレスやポート番号を受け取る。
【０１５４】
マスターノードの紹介を受けたノードＮＤ−Ａは、マスターノードＮＤ−Ｍに所与の仮想世界におけるゲームへの参加申し込みを行う（図６、図１０のａ１）。マスターノードから参加の許可を受けると（図６、図１０のａ２）、ノードＮＤ−Ａは、スタート地点（所属クラスタ）を決定する。例えばゲームのスタート地点（ノードＮＤ−Ａのプレーヤキャラクタのスタート地点）が図３のエリアＥ１である場合には、所属クラスタはＫＬ００１であると判断する。所属クラスタＫＬ００１のクラスタサーバがどのノードであるかは、マスターノードにから、所属クラスタのクラスタ情報を取得して判断してもよい。
【０１５５】
所属クラスタのクラスタサーバ（クラスタの上流ノード）に対しクラスタ所属要求を行い（図６、図１０のａ３）、ノードＮＤ−Ａとクラスタ内のノードＮＤ００１、ＮＤ００２、ＮＤ００３が相互に接続が確立して（図６のａ４、図１０のａ４−１、ａ４−２、ａ４−３）、ノードＮＤ−Ａのゲームデータをクラスタ上流ノードであるクラスタサーバＮＤ００１及びクラスタ下流ノードであるＮＤ００２、ＮＤ００３に送信し（図６のａ５、ａ６）、クラスタ上流ノードであるクラスタサーバＮＤ００１及びクラスタ下流ノードであるＮＤ００２、ＮＤ００３のゲームデータをノードＮＤ−Ａに送信し（図６のａ７，ａ８）、クラスタ内の情報が相互に共有できた時点で、ノードＮＤ−Ａはゲームに開始できる（図６のａ９）。
【０１５６】
ノードＮＤ−Ａが、所属クラスＫＬ００１以外の情報が必要な場合には、所属クラスタのクラスタサーバであるノード（上流ノード）ＮＤ００１経由で随時リクエストをおこなう（図６のａ１０）。そして所属クラスＫＬ００１以外の情報は、所属クラスＫＬ００１クラスタのクラスタサーバであるノード（上流ノード）ＮＤ００１経由で受信する（図６のａ１１）。
【０１５７】
クラスタ下流ノード（例えばＮＤ００３）が、クラスタ変更やゲームを脱退（フリーアウト）する場合には、クラスタ下流ノード（例えばＮＤ００３）は、所属クラスＫＬ００１クラスタのクラスタサーバであるノード（上流ノード）ＮＤ００１に脱退申し込みを行う（図６のａ１２）。所属クラスＫＬ００１クラスタのクラスタサーバであるノード（上流ノード）ＮＤ００１は脱退を許可する場合には、クラスタ下流ノード（例えばＮＤ００３）に対し、脱退許可の通知を行い（図６のａ１３）、クラスタの他の下流ノード（ノードＮＤ−Ａを含む）に脱退通知を送る（図６のａ１４）とともに、マスターノードにも脱退通知を送る（図６のａ１５）。
【０１５８】
３．本実施の形態の処理
図１１は、ゲーム参加時の処理の流れを示すフローチャートである。
【０１５９】
ゲームに参加を希望するノードは、マッチングサーバに問い合わせを行い（ステップＳ１０）、マッチングサーバからマスターノード情報を受信する（ステップＳ２０）
次に、マスターノードに参加申し込みを行い、合わせてテスト通信を行う（ステップＳ３０）。マスターノードは、参加申し込みを受け付けたノードのノード情報を作成する。このときテスト通信においてノードのラウンドトリップタイム（ＲＴＴ）を取得し、当該ノードのノード情報の通信状態情報として記憶させる。
【０１６０】
ゲームに参加を希望するノードは、マスターノードから参加許可通知及びクラスタ割り当て情報を受信すると（ステップＳ４０）、クラスタ割り当て情報に基づき、割り当てられたクラスタのクラスタサーバにクラスタ所属申し込みを行う（ステップＳ５０）。なおクラスタ割り当ては、ノードのプレーヤキャラクタのスタート地点基づき行われる。クラスタ割り当ては、ゲームに参加を希望するノードが行ってもよいし、マスターノードが行ってもよいが、割り当てられたクラスタのクラスタサーバを特定するための情報が必要となる。なお割り当てられたクラスタのクラスタサーバを特定するための情報は、例えばクラスタサーバの一覧を管理するテーブルとして、前ノードが保有するようにしてもよい。マスターノードは、全クラスタのクラスタ情報を保持しているので、マスターノードから、割り当てられたクラスタのクラスタサーバのノードを特定する情報やクラスタサーバの一覧を管理するテーブル（例えば図７のノードＩＤ２１０）を受け取ってもよい。
【０１６１】
そしてクラスタサーバからクラスタ情報を受け取り、クタスタを構成する他のノードと相互にコネクション確認を行う（ステップＳ６０）。
【０１６２】
図１２は、ノードの役割に応じた通信制御の処理の流れを示すフローチャートである。
【０１６３】
ノードは、第１の通信頻度でクラスタ内の他のノードと相互にゲームデータの送受信を行う（ステップＳ１１０）。
【０１６４】
ノードが、クラスタサーバである場合には（ステップＳ１２０）、第１の通信頻度より低い第２の通信頻度で、隣接クラスタ情報に定義されている隣接クラスタのクラスタサーバと相互にゲームデータの送受信を行う（ステップＳ１３０）。
【０１６５】
図１３は、クラスタ変更処理（クラスタを変更するノードの処理）の流れを示すフローチャートである。
【０１６６】
プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算する（ステップＳ２１０）。
【０１６７】
プレーヤキャラクタのゲーム評価値が所定以上変化した場合には（ステップＳ２２０）、プレーヤキャラクタのゲーム評価値に基づき、プレーヤキャラクタに対応したノードに適したクラスタを求める（ステップＳ２３０）。
【０１６８】
そして、適したクラスタが現在属しているクラスタと異なる場合には（ステップＳ２４０）、現在のクラスタを離脱して、適したクラスタに参加する （ステップＳ２５０）。
【０１６９】
図１４は、クラスタ内の他のノードがクラスタを離脱する場合の処理の流れを示すフローチャートである。
【０１７０】
同じクラスタの他のノードからクラスタ離脱通知ある場合には、以下の処理を行う（ステップＳ３１０）。
【０１７１】
離脱するのはクラスタサーバである場合には（ステップＳ３２０）、所属クラスタを構成するノードのノード情報（通信状態情報）に基づき、所属するクラスタの次のクラスタサーバを判断する（ステップＳ３３０）。自己が次のクラスタサーバである場合（ステップＳ３４０）には、クラスタ情報の変更を隣接クラスタ情報に定義されている隣接クラスタのクラスタサーバに通知する（ステップＳ３５０）。
【０１７２】
図１５は、クラスタ分割処理の流れを示すフローチャートである。
【０１７３】
所与のノードからクラスタ参加申し込みがあると（ステップＳ４１０）、以下の処理を行う。
【０１７４】
所与のノードのクラスタ参加によりクラスタのノード数が制限値を超える場合には（ステップＳ４２０でＹ）、クラスタを構成するノードを制限値を超えない数のノードで構成された複数のクラスタに分割する（ステップＳ４３０）。所与のノードのクラスタ参加によりクラスタのノード数が制限値を超えない場合には（ステップＳ４２０でＮ）、所与のノードをクラスタの構成員とする（ステップＳ４４０）。
【０１７５】
自己が属するクタスタを構成する他のノードと相互にコネクション確認を行う（ステップＳ４５）。
【０１７６】
自己がクラスタサーバである場合には（ステップＳ４６０）、クラスタ情報の変更を隣接クラスタ情報に定義されている隣接クラスタのクラスタサーバに通知する（ステップＳ４７０）。
【０１７７】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【０１７８】
キャラクタ同士が通信遅延の影響が高いと判断される状況にある場合には当該キャラクタ同士は同じグループにグループ化され、キャラクタ同士が通信遅延の影響が低い判断される状況にある場合には当該キャラクタ同士は異なるグループにグループ化される構成であれば本発明の範囲内である。キャラクタ同士が通信遅延の影響が高いと判断される状況にある場合とは、例えばゲーム空間内におけるキャラクタの位置が近いことや同じエリアにいる場合でもよい。またキャラクタの能力（手足が伸びる能力があるなど）や、装備しているアイテム（狙撃銃など）に応じて、グループを変更してもよい。すなわち手足が伸びるキャラクタや狙撃銃など遠方の的に対しても攻撃可能なキャラクタに対しては、ゲーム空間内の距離が多少離れていても通信遅延の影響が高いと判断してもよい。
【０１７９】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、携帯型ゲームシステム、ゲーム画像を生成するシステムボード等の種々のゲームシステムに適用できる。
【符号の説明】
【０１８０】
１００  処理部、１１０  ゲーム演算部、１１１  オブジェクト空間設定部、１１２  仮想カメラ制御部、１１３  移動・動作演算部、１１５  ゲーム評価値演算部、１２０  通信制御部、１３０  描画部、１４０  音処理部  １６０  操作部、１８０  情報記憶媒体、１９０  表示部、１７０  記憶部、１７２  主記憶部、１９２  音出力部、１９６  通信部
【図１】
0005770513.tif 000002
【図２】
0005770513.tif 000003
【図３】
0005770513.tif 000004
【図４】
0005770513.tif 000005
【図５】
0005770513.tif 000006
【図６】
0005770513.tif 000007
【図７】
0005770513.tif 000008
【図８】
0005770513.tif 000009
【図９】
0005770513.tif 000010
【図１０】
0005770513.tif 000011
【図１１】
0005770513.tif 000012
【図１２】
0005770513.tif 000013
【図１３】
0005770513.tif 000014
【図１４】
0005770513.tif 000015
【図１５】
0005770513.tif 000016
【図１６】
0005770513.tif 000017