プログラム、情報記憶媒体及びゲーム情報生成装置
【課題】ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小現にする効率のよい通信制御を行う。
【解決手段】ネットワークを介して他のノードとゲームデータの送受信を行うゲーム機のためのプログラムであって、ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、してコンピュータを機能させ、前記ゲーム演算手段は、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含む。
【解決手段】ネットワークを介して他のノードとゲームデータの送受信を行うゲーム機のためのプログラムであって、ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、してコンピュータを機能させ、前記ゲーム演算手段は、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及びゲーム情報生成装置に関する。
【背景技術】
【0002】
ネットワークを介して複数のプレーヤが、ゲーム世界のプレーヤキャラクタ同士をオンラインで対戦させるオンライン対戦ゲームが知られており、人気が高い。
【0003】
かかるオンライン対戦ゲームでは、専用のサーバを設置して、サーバ方を経由してゲーム装置にゲームデータを送信して複数のゲーム装置の通信対戦を行うものが知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−041414号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし専用のサーバを設置し、サーバでゲームデータの送信を管理するとコストがかり、ネットワークの負荷が増大し、通信によるトラフィックが発生しやすくなる。また複数のゲーム装置を Peer to Peer(ピアトゥピア、ピアツーピア)で接続して、ゲーム装置間で相互にゲームデータの送受信を行う方式も存在するが、参加するゲーム装置が増えると、ネットワークの負荷が増大し、通信のトラフィックが発生しやすくなる。
【0006】
通信トラフィックを下げるために、通信頻度をさげると、ネットワークの負荷は減少するが、ゲームデータの遅延により、他のゲーム機のゲームデータが反映されないゲーム画像が生成されてしまい、プレーヤに違和感を与えてしまうという問題があった。
【0007】
本発明は、以上のような課題を解決するためになされたものである。本発明のいくつかの態様によれば、ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小限現にする効率のよい通信制御を行うことができるプログラム、情報記憶媒体、ゲーム情報生成装置を提供することができる。
【課題を解決するための手段】
【0008】
(1)本発明の一態様は、
ネットワークを介して他のノードとゲームデータの送受信を行うゲーム機のためのプログラムであって、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、
してコンピュータを機能させ、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うプログラムに関する。
【0009】
ノードはプレーヤ又はプレーヤキャラクタに対応して設定された通信単位である。生成されるゲーム画像は2次元画像でもよいし、3次元画像でもよい。グループ内通信では、各ノードのゲームデータをグループ内の他のノードと相互にやりとりする。グループ外のノードとの通信は、グループの代表が行うようにしてもよい。すなわち各グループの代表が他のグループの代表とグループ内のゲームデータをやりとりするようにしてもよい。
【0010】
本発明は、マルチプレーヤゲームで通信対戦をPeer to Peer(ピアトゥピア、ピアツーピア)方式で行う手法に関するもので、ノードは1つ以上の他のノードとPeer to Peerで接続されている。Peer to Peer(ピアトゥピア、ピアツーピア)とは、多数の端末間で通信を行う際のアーキテクチャのひとつで、対等の者ピア同士が通信をすることを特徴とする通信方式である。
【0011】
本発明によれば、マルチプレーヤゲームで通信対戦を行う場合に専用のサーバを使用せずに多人数で通信対戦が可能となる。
【0012】
一般にゲーム世界で近くに位置する他のノードのキャラクタの情報はゲーム画像に反映される確率が高いのでタイムラグなく更新することが好ましいが、ゲーム世界で遠くに位置する他のノードのキャラクタの情報は、ゲーム画像に反映される確率が低いので通信遅延により反映されるのに多少のタイムラグがあっても問題とならない場合がおおい。
【0013】
本発明によれば、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を求め、求めたゲーム評価値に基づきグループ分けする。そして、グループ内のノードとゲームデータの送受信を行う通信頻度を、グループ外のノードとゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノードとのネットワーク接続をグループ外のノードとのネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行うことができる。従って、グループ内のノード間の通信環境をグループ外のノード間との通信環境よりよくすることができるので、グループ外の他のノードに対するタイムラグに比べて、グループ内の他のノードに対するタイムラグを小さくすることができる。すなわち、ゲーム世界の状況に応じてノード間の通信環境にメリハリをつけることができるので、ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小現にする効率のよい通信制御を行うことができる。
【0014】
(2)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記通信制御手段は、
グループを構成するノードをクラスタリングするクラスタリング処理手段と、
同じクラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせるクラスタ内通信制御処理手段と、
クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、クラスタの代表ノードを判断するクラスタ代表判断手段と、
クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるクラスタ間通信制御処理手段と、を含み、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度とクラスタ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びクラスタ内のノード間のネットワーク接続とクラスタ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行ってもよい。
【0015】
(3)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記通信制御手段は、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度を、クラスタ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びクラスタ内のノード間のネットワーク接続をクラスタ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行ってもよい。
【0016】
(4)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータ(位置データ等)の少なくとも一方には、プレーヤキャラクタの位置に関する情報を含み、
前記ゲーム評価値演算手段は、
プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算してもよい。
【0017】
ゲームパラメータは、例えば位置データ等でもよい。プレーヤキャラクタの位置に関する情報とは、位置座標、位置が属するエリア情報、他のプレーヤキャラクタとの位置関係、視界範囲、仮想カメラの位置でもよい。
【0018】
この様にすれば、プレーヤキャラクタのゲーム世界の位置に応じて、プレーヤキャラクタに対応するノードの通信環境にメリハリをつけることができる。例えば同じゲーム画像に含まれる可能性のあるキャラクタ(ゲーム世界において近くに位置するキャラクタ)をクラスタにクラスタリングすることで、より効果的にネットワークの負荷の増大を防ぎつつ、通信遅延による影響を最小現にすることができる。
【0019】
(5)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタリング処理手段は、
ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行ってもよい。
【0020】
このようにすればゲーム状況やプレーヤキャラクタのゲームパラメータの変化に応じて、動的なクラスタ変更を行うことができる。
【0021】
(6)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタ間通信制御処理手段は、
クラスタの代表に、所属クラスタに直接接続されているクラスタの情報を定義した隣接クラスタ情報に基づき、隣接クラスタとして定義されているクラスタの代表ノードとネットワークを介して接続してクラスタ間通信を行わせてもよい。
【0022】
隣接クラスタ情報に隣接クラスタとして定義されてないクラスタの代表ノードとは直接クラスタ間通信を行わず、隣接クラスタの代表ノードを介して、さらに他の複数のクラスタの代表ノードを経由してゲームデータの送受信を行うようにしてもよい。離れたクラスタのゲームデータは多少の遅延はあっても、当該ノードのゲーム画像にはあまり影響がないので、通信によるトラフィックを弊害なく効果的に下げることができる。
【0023】
(7)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記通信制御手段は、
マスターノード以外のノードに、マスターノードのノード情報を受け取り、マスターノードとテスト通信を行わせるテスト通信処理手段と、
マスターノードに、テスト通信の結果に基づきテスト通信を行ったノードの通信状態情報を当該ノードに関連づけてノード情報として保持させ、保持しているノード情報を他のノード(クラスタの代表ノードでもよい)に送信させる処理をおこなうノード情報管理処理手段として機能してもよい。
【0024】
(8)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超えない範囲で、ノードをクラスタリングする処理を行ってもよい。
【0025】
(9)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
請求項1乃至6のいずれかにおいて、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超える場合には、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理をおこなってもよい。
【0026】
(10)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタ内通信制御処理手段は、
同じクラスタに属するノードと間をフルコネクト型のネットワーク構造で相互接続してクラスタ内通信を行ってもよい。
【0027】
フルコネクト型のネットワーク構造とは、1つ1つのノードが全ての他のノードと接続している状態であり、1つのノードが故障しても他のノードとの通信には関係なく、自由に接続できるため、障害耐性はネットワーク中でもっとも高い。
【0028】
(11)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタリング処理手段は、
クラスタ代表である複数のノードを上位クラスタとしてクラスタリングする処理を行い、
前記クラスタ内通信制御処理手段は、
同じ上位クラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせ、
前記クラスタ代表判断手段は、
上位クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、上位クラスタの代表ノードを判断し、
前記クラスタ間通信制御処理手段は、
上位クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせてもよい。
【0029】
(12)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記ゲーム世界は、複数のエリアに分割されており、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、プレーヤキャラクタが属するエリア情報を含み、
前記ゲーム評価値演算手段は、
前記エリア情報に基づき、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求めてもよい。
【0030】
(13)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、仮想カメラの配置に関する仮想カメラ情報を含み、
前記ゲーム評価値演算手段は、
前記仮想カメラ情報に基づき、プレーヤキャラクタに対応したゲーム評価値を求めてもよい。
【0031】
仮想カメラの配置に関する仮想カメラ情報は、 仮想カメラの位置及び回転及び画角の少なくとも1つの情報を含んでもよい。
【0032】
(14)本発明の一態様は、
上記のいずれかに記載のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体に関する。
【0033】
(15)本発明の一態様は、
ネットワークを介して他のノードとゲームデータの送受信を行い、ゲーム情報を生成するゲーム情報生成装置において、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、を含み、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うゲーム情報生成装置に関する。
【0034】
ゲーム情報とは、ゲーム中に生成される情報を意味し、ゲームの出力情報やゲーム成績やゲーム結果に関する情報でもよい。ゲームの出力情報は、例えばゲーム画像(画像の描画データでもよいし、他のコンピュータ等に画像を生成させるためのコマンドやデータでもよい)やゲーム音楽等でもよい。
【図面の簡単な説明】
【0035】
【図1】本実施形態の画像生成システムの機能ブロック図。
【図2】本実施の形態のグループ化の一例(クラスタリング処理)を示す図。
【図3】クラスタ変更処理について説明するための図。
【図4】クラスタ変更処理について説明するための図。
【図5】クラスタの階層構造について説明する図。
【図6】ゲームへの参加、脱退の流れについて説明するための図。
【図7】本実施の形態のノード情報について説明するための図。
【図8】図8(A)〜(C)は、クラスタ情報について説明するための図。
【図9】上流ノードと下流ノードについて説明するための図。
【図10】ゲームへの参加、脱退の流れについて説明するための図。
【図11】ゲーム参加時の処理の流れを示すフローチャート。
【図12】ノードの役割に応じた通信制御の処理の流れを示すフローチャート。
【図13】クラスタ変更処理(クラスタを変更するノードの処理)の流れを示すフローチャート。
【図14】クラスタ内の他のノードがクラスタを離脱する場合の処理の流れを示すフローチャート。
【図15】クラスタ分割処理の流れを示すフローチャート。
【図16】ゲーム画像の一例を示す図。
【発明を実施するための形態】
【0036】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0037】
1.構成
図1に本実施形態の画像生成システム(ゲーム情報生成装置の一例、コンピュータ、端末、ゲーム装置)の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0038】
操作部160は、プレーヤがプレーヤキャラクタ(プレーヤが操作するプレーヤキャラクタ、移動体、プレーヤオブジェクト、ゲームキャラクタを含む)の操作情報を入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【0039】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。
【0040】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを入力するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)、メモリカードなどにより実現できる。処理部100は、情報記憶媒体180に入力されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0041】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0042】
通信部196は外部(例えば、他機、サーバや他のゲームシステム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0043】
なお、画像生成装置が、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)を、ネットワークを介してサーバからダウンロードし、情報記憶媒体180に記憶するようにしてもよい。このようなサーバに入力されているプログラムの出力も本発明の範囲内に含めることができる。
【0044】
処理部100(プロセッサ)は、操作部160からの操作情報(入力情報の一例)やプログラムなどに基づいて、ゲーム演算処理、画像生成処理、或いは音生成処理などの処理を行う。この処理部100は記憶部170内の主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0045】
処理部100は、ゲーム演算部110、オブジェクト空間設定部111、仮想カメラ制御部112、移動・動作処理部113、ゲーム評価値演算部115、通信制御部120、描画部130、音生成部140を含む。なおこれらの一部を省略する構成としてもよい。
【0046】
ゲーム演算部110は、入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うもので、ゲーム演算手段ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0047】
本実施形態のゲーム演算部110は、ゲーム開始時に各プレーヤの体力値を初期値(例えば100)に設定し、ゲームを開始してからゲームが終了するまでのゲーム期間(例えば、90秒の間)に、フレーム毎に、各プレーヤからの入力情報に基づいてヒット判定処理を行い、ヒット判定結果に基づいていて、各プレーヤキャラクタの体力値を減算させ、各プレーヤキャラクタの体力値が0になったか否かに基づいてゲーム結果(勝敗、引き分け)を決定する演算処理を行ってもよい。なお、ゲーム演算部110は、ゲーム期間経過時点で、いずれのプレーヤキャラクタの体力値が0より大きい値である場合には、一方のプレーヤキャラクタの体力値が、他方のプレーヤキャラクタの体力値よりも大きい値である場合に、一方のプレーヤキャラクタが勝ちと決定し、他方のプレーヤキャラクタが負けと決定し、体力値が双方同じ場合には引き分けと決定してもよい。
【0048】
オブジェクト空間設定部111は、プレーヤキャラクタ、移動体、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0049】
仮想カメラ制御部112は、オブジェクト空間内の所与(任意)の仮想カメラ(視点)から見える画像を生成するための仮想カメラの制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。また、画角を制御するようにしてもよい。
【0050】
例えば、仮想カメラによりオブジェクト(例えば、プレーヤキャラクタ、ボール、車)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0051】
移動・動作処理部113は、モデル(キャラクタ、車、電車又は飛行機等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、モデルをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0052】
特に、本実施形態の移動・動作処理部113は、プレーヤからの入力情報に基づいて、プレーヤの操作対象のプレーヤキャラクタを移動・動作させる処理を行うことができる。
【0053】
また、後述する通信制御部120によって送信されたパケットに含まれる他のノードのゲームデータに基づいて、他のノードのプレーヤキャラクタを、自己のノードのプレーヤキャラクタと同一のオブジェクト空間において移動・動作させる処理を行うことができる。
【0054】
また、宛先情報とは、ゲームシステムを構成する各ノードのIPアドレス、ポート番号とすることができる。IPアドレスは、インターネット上もしくはWANで特定のゲーム機を特定するためのグローバルIPアドレスとしてもよいし、LANで特定のゲーム機を特定するためのプライベートIPアドレスとしてもよい。
【0055】
通信制御部120、他のノード(他のゲーム装置でもよい)に送信するパケットを生成する処理、パケット送信先のゲーム機のIPアドレスやポート番号を指定する処理、受信したパケットに含まれるデータを記憶部170に保存する処理、受信したパケットを解析する処理、その他のパケットの送受信に関する制御処理等を行う。
【0056】
パケットとは、ネットワークを介して通信する固まりであり、送信元IPアドレス、送信先IPアドレスを含むネットワークに必要なヘッダーと、送信元において書き込まれたデータがペイロードとからなるデータのことをいう。
【0057】
また、アプリケーションレベルの通信を実現するためには、使用するTCPやUDPプロトコルに応じたアプリケーションの種類を特定するポート番号を指定してパケットを生成する。例えば、TCPプロトコルは、データの送受信の信頼性が高く、例えば、確認応答や再送を利用している。また、TCPプロトコルは、紛失したデータの再送処理を行うことができ、さらにデータの送信順序を確保して送信先のゲーム機にパケットを送信することができる。一方、UDPプロトコルでは、送信の途中でデータを紛失しても再送されず、順番が入れ替わって伝送されることがある。しかし、UDPプロトコルは、TCPプロトコルに比べてオーバヘッドがないので、リアルタイムにデータを送信するオンラインゲームでは適している場合がある。UDPプロトコルを利用する場合には、バッファに入力するゲームデータが識別番号順(昇順)に入力するようにし、入力対象の識別番号のゲームデータが届いていない場合には、他機に要求するようにしてもよい。本実施形態では、いずれのプロトコルにも対応することができる。なお、UDPプロトコルを利用する場合には、バッファへのゲームデータの入力順序を識別情報(識別番号)の昇順に入力するように制御するようにしてもよい。
【0058】
本実施形態の通信制御部120は、画像を描画するフレームレートに応じてパケットを生成し、接続先の他のノードに生成したパケットを送信する処理を行う。具体的に説明すると、例えば、フレームレートが60fpsである場合には、1/60秒毎に、パケットのヘッダーの送信先IPアドレスと送信先ポート番号に、第2のゲーム機のIPアドレスと使用するポート番号指定し、ヘッダーの送信元のIPアドレスと送信元ポート番号に、第1のゲーム機のIPアドレスと使用するポート番号を指定して、ゲームデータを含むデータをパケットのペイロードに入力し、生成したパケットを他のノードに送信する処理を行う。
【0059】
フレーム毎にゲーム機を操作するプレーヤからの入力情報(操作情報も含む)を含むデータである。例えば、ゲームデータは、入力情報の有無や、入力情報が有る場合には入力情報の内容を示したデータとすることができる。例えば、ゲームデータを数値で示す場合には、入力情報が無い場合はゲームデータを「0」とし、入力情報があってその内容がAボタンの入力である場合にはゲームデータを「1」、入力情報があってその内容がBボタンの入力である場合にはゲームデータを「2」、また、入力情報があってその内容がA及びBボタンの入力である場合にはゲームデータを「3」としてもよい。
【0060】
また、ここで、識別情報とは、フレーム毎に付与される複数のゲーム機(第1、第2のゲーム機)において共通のデータである。本実施形態では、第1のゲーム機と第2のゲーム機との接続が確立されたときを基準に、経過時間に応じてフレーム毎に付与される情報とすることができる。例えば、ゲーム機において、フレームレートに応じて取得したゲームデータに対応付けるシーケンシャルな識別番号(1から始まる正の整数)とすることができる。
【0061】
例えば、フレームレートが60fpsである場合を考えると、1/60毎に取得したゲームデータに、識別情報を対応付ける。例えば、第1のゲーム機と第2のゲーム機それぞれにおいて、接続が確立された時点に取得したゲームデータには、識別番号「1」を対応付けし、接続確立時から1/60秒後に取得したゲームデータには、識別番号「2」を対応付けし、接続確立時から2/60秒後に取得したゲームデータには、識別番号「3」を対応付けする。
【0062】
また、本実施形態の通信制御部115は、第2のゲーム機から送信されたパケットを受信する処理を行う。そして、受信したパケットを解析し、パケットのペイロードに含まれるゲームデータを含むデータを取得する。
【0063】
通信制御部120は、ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行うもので、ネットワーク設定部125を含む。
【0064】
ネットワーク設定部125は、ゲームシステムで必要となるネットワーク情報を取得し、管理する処理等を行う。特に、本実施形態のネットワーク設定部は、各ノード(ゲーム機又はゲーム機のプレーヤキャラクタ)に個別に付与されるノードの識別情報(オンラインゲームに参加できるノードを識別するために個別に付与されたデータ)と、ノードの識別情報に対応付けられたパケットの送信先を指定する宛先情報とを取得し、管理する処理を行う。
【0065】
ゲーム評価値演算部115は、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算し、通信制御部120は、グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度を、グループ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノード間のネットワーク接続をグループ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行う。
【0066】
また通信制御部120は、グループを構成するノードをクラスタリングするクラスタリング処理部121と、同じクラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせるクラスタ内通信制御処理部122と、クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、クラスタの代表ノードを判断するクラスタ代表判断部123と、クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるクラスタ間通信制御処理部124と、を含み、クラスタ内のノード間でゲームデータの送受信を行う通信頻度とクラスタ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びクラスタ内のノード間のネットワーク接続とクラスタ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行ってもよい。
【0067】
また通信制御部120は、クラスタ内のノード間でゲームデータの送受信を行う通信頻度を、クラスタ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びクラスタ内のノード間のネットワーク接続をクラスタ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行ってもよい。
【0068】
ゲーム状況及びプレーヤキャラクタのゲームパラメータ(位置データ等)の少なくとも一方には、プレーヤキャラクタの位置に関する情報を含み、ゲーム評価値演算部115は、 プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算してもよい。
【0069】
クラスタリング処理部121は、ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行ってもよい。
【0070】
クラスタ間通信制御処理部124は、クラスタの代表に、所属クラスタに直接接続されているクラスタの情報を定義した隣接クラスタ情報に基づき、隣接クラスタとして定義されているクラスタの代表ノードとネットワークを介して接続してクラスタ間通信を行わせてもよい。
【0071】
通信制御部120は、マスターノード以外のノードに、マスターノードのノード情報を受け取り、マスターノードとテスト通信を行わせるテスト通信処理部126と、マスターノードに、テスト通信の結果に基づきテスト通信を行ったノードの通信状態情報を当該ノードに関連づけてノード情報として保持させ、保持しているノード情報を他のノードに送信させる処理をおこなうノード情報管理処理部127を含む。
【0072】
クラスタリング処理部121は、クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超えない範囲で、ノードをクラスタリングする処理を行ってもよい。
【0073】
クラスタリング処理部121は、クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超える場合には、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理をおこなってもよい。
【0074】
クラスタ内通信制御処理部122は、同じクラスタに属するノードと間をフルコネクト型のネットワーク構造で相互接続してクラスタ内通信を行ってもよい。
【0075】
クラスタリング処理部121は、クラスタ代表である複数のノードを上位クラスタとしてクラスタリングする処理を行い、クラスタ内通信制御処理部122は、同じ上位クラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせ、クラスタ代表判断部123は、上位クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、上位クラスタの代表ノードを判断し、クラスタ間通信制御処理部124は、上位クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせてもよい。
【0076】
ゲーム世界は、複数のエリアに分割されており、前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、プレーヤキャラクタが属するエリア情報を含み、ゲーム評価値演算部115は、前記エリア情報に基づき、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求めてもよい。
【0077】
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、仮想カメラの配置に関する仮想カメラ情報を含み、ゲーム評価値演算部115は、仮想カメラ情報に基づき、プレーヤキャラクタに対応したゲーム評価値を求めてもよい。
【0078】
描画部130は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータ(モデルデータ)に含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を画像バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0079】
なお、頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0080】
そして、描画部130は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0081】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、図示しないオブジェクトデータ記憶部に保存される。
【0082】
テクスチャマッピングは、記憶部170のテクスチャ記憶部に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0083】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が入力されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに入力されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0084】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。
【0085】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして出力できる。
【0086】
なお描画部130、オブジェクト空間設定部111,仮想カメラ制御112は、ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段として機能する。
【0087】
音生成部140は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0088】
2.本実施の形態の手法
(1)クラスタリング処理
本実施の形態では、オンラインで通信対戦や協力プレイを行うマルチプレーヤゲームにおいて、専用サーバを設置せずに、Pe er to Peer(ピアトゥピア、ピアツーピア)でゲーム機を接続し、多人数でのプレイを可能とするネットワークトポロジーを構成する。 Peer to Peer(ピアトゥピア、ピアツーピア)とは、多数の端末間で通信を行う際のアーキテクチャのひとつで、対等の者ピア同士が通信をすることを特徴とする通信方式である。
【0089】
図2は本実施の形態のグループ化の一例(クラスタリング処理)を示す図である。
【0090】
ノードND001〜ND009は、プレーヤキャラクタPC1〜PC9(プレーヤキャラクタを操作するプレーヤでもよい)に対応して設定された通信単位であり、1つ以上の他のノードと接続され、ゲームデータの送受信を行う。
【0091】
ゲームデータとは、ゲームの仕様に応じて決められるデータであり、例えばキャラクタの位置や回転情報でもよいし、ゲームパラメータでもよいし、キー情報(入力キーの情報)でもよいし、カウンタ情報やイベントトリガ等の情報でもよい。
【0092】
1台のゲーム装置(ゲーム情報生成装置でもよい)に1人のプレーヤが対応したゲーム装置を複数接続して通信対戦をおこなう場合には、1台のゲーム装置に1つのノードが存在する。また例えば画面分割して1つのゲーム機でn人のプレーヤがゲームするゲーム装置(1台のゲーム装置にn人のプレーヤ対応したゲーム装置)複数接続して通信対戦をおこなう場合には、1台のゲーム装置にn個のノードが存在する。この様な場合、1台のゲーム機に対応した複数のノードは、同じIPアドレスで異なるポート番号を有している。
【0093】
本実施の形態では、グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度を、グループ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノード間のネットワーク接続をグループ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行う。
【0094】
ゲーム評価値は、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき決定される値である。例えばプレーヤキャラクタのゲーム世界における位置データ(ゲームパラメータの一例)により、ゲーム評価値を決定してもよい。例えばゲーム世界における位置座標の分布から、距離が所定値以内(近くにいる)プレーヤキャラクタをグループ化してもよい。所与のタイミング(たとえばゲーム開始時)でゲーム世界のプレーヤキャラクタ間の距離を求め、距離が所定値以内のプレーヤキャラクタをグループ化してもよい。そして、グループ形成後は、所定のサイクルで各プレーヤキャラクタ間の距離を再計算して、グループを構成するノードを変更してもよい。また各プレーヤキャラクタの位置の変化によりノードの属するグループを変更してもよい。
【0095】
またグループの代表となるプレーヤキャラクタを複数抽出し、抽出されたプレーヤキャラクタを基準に、当該プレーヤキャラクタと所定の位置関係(所定の距離内でもよい)にあるプレーヤキャラクタをグループ化してもよい。
【0096】
またゲーム空間を、複数のエリアに分割し、プレーヤキャラクタが属するエリアに対応したゲーム評価値を求めてもよい。また例えば仮想カメラがプレーヤキャラクタに追従するようなゲームの場合には、仮想カメラの配置(位置、回転、画角)に基づき、プレーヤキャラクタのゲーム評価値を求めてもよい。
【0097】
ここで、ノードND001〜ND009に対応するプレーヤキャラクタPC1〜PC9のゲーム評価値がGV1〜GV9であり、それぞれGV1=1、GV2=1、GV3=1、GV4=2、GV5=1、GV6=3、GV7=3、GV8=3、GV9=3であるとする。この様な場合、プレーヤキャラクタのゲーム評価値が1であるノードND001〜D003の集合をグループ化(KL001)し、プレーヤキャラクタのゲーム評価値が2であるノードND004とD005の集合をグループ化(KL002)し、プレーヤキャラクタのゲーム評価値が3であるノードND006〜D009の集合をグループ化(KL003)してもよい。グループ内では各ノードは、グループ内の他のノードすべてと相互接続(フルコネクト型のネットワーク構造で相互接続)されてもよい。グループ内でのノード間通信α1、α2、α3では第1の通信頻度でゲームデータのやりとりを行う。
【0098】
また他のグループのノード(グループ外のノード)のゲームデータも必要なので、グループ間でもゲームデータの送受信を行う。グループ間でのデータの送受信は、グループの代表(クラスタサーバとよぶ)がおこなってもよい。
【0099】
グループ化はクラスタリング処理により実現してもよい。以下グループをクラスタと呼ぶ。図2では、クラスタKL001のクラスタサーバはノードND001であり、クラスタKL002のクラスタサーバはND004であり、クラスタKL003のクラスタサーバはND006となっている。
【0100】
例えばクラスタKL001のゲームデータ(クラスタKL001を構成するノードND001、ND002、ND003のゲームデータの集合でもよい)は、クラスタKL001のクラスタサーバND001が、隣接クラスタ(直接接続されているクラスタ)KL002のクラスタサーバND004に送信する。またクラスタKL001のクラスタサーバND001は、隣接クラスタKL002のクラスタサーバND004からクラスタKL002のゲームデータ及び隣接しないクラスタ(直接接続されていないクラスタ)KL003のゲームデータを受信する。この様にクラスタサーバは隣接しないクラスタ(直接接続されていないクラスタ)KL003のゲームデータについては、隣接クラスタKL002のクラスタサーバND006を介して受信する。
【0101】
この様なクラスタ間通信βのゲームデータの送受信は、第1の通信頻度より低い第2の通信頻度で行う。このようにすることにより、クラスタ外(グループ外)の他のノードに対するタイムラグに比べて、グループ内(クラスタ内)の他のノードに対するタイムラグを小さくすることができる。すなわち、ゲーム世界の状況に応じてノード間の通信環境にメリハリをつけることができるので、ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小現にする効率のよい通信制御を行うことができる。
【0102】
受信した他のクラスタの情報は、クラスタサーバND001が、クラスタ内の他のノードND002、ND003に送信する(クラスタ内通信)。このように、クラスタ内のクラスタサーバ以外のノードND002、ND003は、クラスタサーバND001を介して、他のクラスタKL002、KL003のゲームデータを受信し、またクラスタサーバND001を介して、他のクラスタKL002、KL003にゲームデータを送信することができる。
【0103】
ノードの接続情報は、ノード内で管理される。後述する図8で説明するに、各ノードがノード間の接続情報テーブルを保持してもよい。なお各ノードは全ノードに付いての接続情報を保持していてもよいし、一部のノードの接続情報のみ有していてもよい。また離れたクラスタの接続情報は必要ない場合がおおいので、各ノードが、ノードが属するクラスタ及びそのノードが直接接続されているクラスタについてのみノードの接続情報を保持するようにしてもよい。
【0104】
なお図2に示すようにクラスタサーバ同士は、フルコネクト接続でなくてもよい。直接接続されていないクラスタサーバのゲームデータは、直接接続されているクラスタサーバを経由して取得してもよい。
【0105】
図9は、上流ノードと下流ノードについて説明するための図である。
【0106】
クラスタKL001のクラスタサーバであるノードND001、クラスタKL002のクラスタサーバであるノードND004、クラスタKL003のクラスタサーバであるノードND006をグループA(320)とし、ノードND002,ND003、ND005、ND007、ND008、ND009をグループB(310)とすると、グループA(320)は、グループB(310)の上流ノードとなる。またグループB(310)は、グループA(320)の下流ノードとなる。
【0107】
クラスタサーバは、各クラスタ内で通信環境のよいノード(例えば図7に示す通信状態情報240がよいもので、通信状態情報がラウンドトリップタイム(RTT)で与えられる場合にはRTTがより短いもの)がなるようにしてもよい。
【0108】
この様にすると上流ノードは下流ノードに比べ通信状態がよくなる。上流ノードは隣接する上流ノードと接続して、上流ノード間で自己の下流ノードのデータのやりとりを行う。後述するクラスタ変更処理で説明するようにノードが他のクラスタに移動する場合には、クラスタ内のノードの接続を張り直し、上流ノードが他のクラスタに移動した場合には、下流ノードで通信環境のよいノードが上流ノードになる。
【0109】
ゲーム評価値によりノードをクラスタリングすることにより、離れたクラスタのゲームデータは多少の遅延はあっても、当該ノードのゲーム画像にはあまり影響がないようにすることができるので、通信によるトラフィックを弊害なく効果的に下げることができる。
【0110】
本実施の形態では、各ゲーム装置(ノード)は同じプログラムがインストールされている。プログラムは、複数の機能を実現するためのアルゴリズムをふくんでおり、ノードの役割に応じた機能を実現可能に構成されている。例えばプログラムは「クラスタ内通信制御処理ルーチン(ノードがクラスタサーバである場合の処理)」や「クラスタ間通信制御処理ルーチン」や、「クラスタ代表判断処理ルーチン」や「テスト通信処理ルーチン(ノードがマスターノードである場合に実行する処理)」や「ノード情報管理処理ルーチン」を含んでおり、ノードがクラスタサーバである場合には「クラスタ間通信制御処理ルーチン(ノードがクラスタサーバである場合の処理)」を実行するが、ノードがクラスタサーバでない場合には「クラスタ間通信制御処理ルーチン(ノードがクラスタサーバである場合の処理)」は実行されない。本実施の形態では、ゲーム中にクラスタサーバは変わる可能性があるため、すべてのノードが、上記全処理を実行可能なプログラムがインストールされている。
【0111】
(2)クラスタサーバの決定処理
次にクラスタサーバの決定処理について説明する。各ノードは、クラスタに属するノードの通信状態情報に基づき、同じアルゴリズム(プログラム)で、クラスタサーバを判断する。各ノードは、自己が保持しているノード情報に含まれたノードの通信状態情報を得ることができる。
【0112】
各ノードが有している情報は、全ノードのノード情報(IPアドレス、ポート番号、通信状態情報を含む)と、同じクラスタを構成するノードを特定するクラスタ情報でもよい。
【0113】
図7は、本実施の形態のノード情報について説明するための図である。
【0114】
ノード情報200は、各ノードのIPアドレス220、ポート番号230、通信状態情報240を含む情報であり、各ノードのノードID210に関連づけて記憶されている。通信状態情報240は、各ノードの通信状態に関する情報であり、例えばマスターノードとのテスト通信におけるラウンドトリップタイム(RTT)や往復遅延時間。(あるデータを送ってから、相手の確認応答が戻ってくるまでにかかる時間)でもよい。マスターノードとのテスト通信は、ノードのゲーム参加時に行うようにしてもよい。なおその後は、所定のタイミングで更新してもよいし、ネットワークの負荷を増加させないために、更新はしなくてもよい。
【0115】
各ノードは、ゲームに参加している(同じゲーム世界にいる)全ノードのノード情報を有している。なおゲームに参加している全ノードの情報は、マスターノードとして設定されているノードが管理している。すなわち通信状態情報240を更新しない場合には、ノード情報の更新があるのは、新たなノードがゲームに参加する場合と、現在ゲームに参加しているノードがゲームから離脱する場合等である。新たなノードがゲームに参加する場合には、後述するように、管理サーバにゲーム参加申し込みをして、管理サーバから参加するゲーム世界を管理しているマスターノードを紹介され、マスターノードから参加許可を受けることになる。従ってマスターノードは、ゲームに参加するノードを把握しているため、参加許可を与えた時点でノード情報を更新する。すなわち新たに参加したノードに関するノード情報を追加する。参加申し込みをしたノードとマスターノードがテスト通信をおこない、そのときにRTT情報を当該ノードの通信状態情報240としてもよい。
【0116】
図8(A)〜(C)は、クラスタ情報について説明するための図である。
【0117】
図8(A)は、図2のクラスタKL001のクラスタ情報であり、図8(B)は、図2のクラスタKL002のクラスタ情報であり、図8(C)は、図2のクラスタKL003のクラスタ情報である。クラスタ情報は、各クラスタを構成するノードを特定するための情報である構成ノード情報(構成ノードのノードID)210を含む。それ以外にも、構成ノードに対応するプレーヤキャラクタの位置情報270、構成ノードがクラスタサーバか否かを示すクラスタサーバフラグ280を含んでいてもよいが必須ではない。なおプレーヤキャラクタの位置情報270は、ゲームデータとして有しているプレーヤキャラクタの位置情報を参照してもよい。
【0118】
クラスタに属する各ノードは、自分のクラスタに関するクラスタ情報を有している。すなわち図2のクラスタKL001に属するノードND001、ND002、ND003は、クラスタKL001のクラスタ情報(図8(A))を有しており、図2のクラスタKL002に属するノードND004、ND005はクラスタKL002のクラスタ情報(図8(B))を有しており、図2のクラスタKL003に属するノードND006、ND007、ND008、ND009はクラスタKL003のクラスタ情報(図8(C))を有している。
【0119】
各クラスタのノードは自己が属するクラスタのクラスタ情報に基づき自己が属するクラスタのクラスタサーバがどのノードであるか把握し、図7に示すノード情報に基づき、クラスタアドレスの通信アドレス(IPアドレスとポート番号)を取得することができる。例えばノードND001は、クラスタKL001のクラスタ情報に基づき、自己と同じクラスタに属するノードがND002とND003であることを把握する。そしてノード情報に基づき、ノードND001、ND002、ND003の通信状態情報を取得することができ、通信状態情報に基づき、クラスタサーバを判断する。例えばクラスタサーバを選ぶ規則として、「クラスタ内で最も通信状態がよいノードをクラスタサーバとする」と決めておくことにより、クラスタ内の各ノードは、各ノードが個別にクラスタサーバを判断する際に一意に同じノードをクラスタサーバとして決定することができる。
【0120】
なおクラスタサーバを決定するのは、何らかの事情でクラスタサーバが変更するときである。クラスタサーバ変更時に新たなクラスタサーバを決定したら、クラスタ情報のクラスタサーバフラグを更新する。そして、クラスタサーバの変更がおこらない限りは、クラスタサーバフラグを参照して、クラスタサーバであるノードを判断する。
【0121】
(3)クラスタ変更処理
図3、図4は、クラスタ変更処理について説明するための図である。
【0122】
本実施では、ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行う。ここで、前記ゲーム世界が複数のエリアに分割されており、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求め、クラスタが形成される場合を例に取り説明する。
【0123】
図3は、ゲーム世界におけるプレーヤキャラクタの位置の変化を示している。ゲーム世界は、図3に示すように複数のエリアE1〜E10に分割されている。400−t1は時刻t1におけるゲーム世界におけるプレーヤキャラクタPC001〜PC009の位置分布を示している。同図に示すようにプレーヤキャラクタPC001〜PC003はエリアE1に存在し、プレーヤキャラクタPC004、PC005はエリアE2に存在し、プレーヤキャラクタPC006〜PC009はエリアE3に存在する。
【0124】
なお通信単位であるノードはプレーヤキャラクタに対応して設定されるため、PC001からPC009にそれぞれND001〜ND009が対応する。
【0125】
この様な場合、同じエリアに存在するプレーヤキャラクタに対応したノードを同じクラスタに割り当てし、クラスタリングしてもよい。
【0126】
同じエリアに存在するプレーヤキャラクタはゲーム世界で近くに位置するため、同じ画像内に登場する可能正が高い。図16は、プレーヤキャラクタPC001に対して生成されるゲーム画像の一例を示している。プレーヤキャラクタPC001に対して生成されるゲーム画像410は、プレーヤキャラクタPC001を操作するプレーヤの表示部に表示されるゲーム画像であり、プレーヤキャラクタPC001に追従する仮想カメラからゲーム空間(ゲーム世界が3次元である場合)を見た画像となる。ゲーム画像410には、図16に示すように、プレーヤキャラクタPC001に近い位置にいる(同じエリアに存在する)プレーヤキャラクタPC002、PC003の画像が生成される可能性が高い。これに対し、プレーヤキャラクタPC001から離れた(異なるエリアに存在する)プレーヤキャラクタPC004〜PC009の画像は生成される可能性が低い。すなわち同じエリアに位置するプレーヤキャラクタの情報はゲーム画像に反映される確率が高いのでタイムラグなく更新することが好ましいが、ゲーム世界で異なるエリア位置するプレーヤキャラクタの情報は、ゲーム画像に反映される確率が低いので通信遅延により反映されるのに多少のタイムラグがあっても問題とならない場合がおおい。
【0127】
図4の400−t1は、図3の400−t1の位置分布における、プレーヤキャラクタに対応するノードのネットワーク構成を示している。
【0128】
時刻t1において、ゲーム世界で同じエリアE1に属するプレーヤキャラクタPC001〜PC003に対応するノードND001〜ND003は、同じクラスタKL001にクラスタリングされている。
【0129】
また時刻t1において、ゲーム世界で同じエリアE2に属するプレーヤキャラクタPC004、PC005に対応するノードND004、ND005は、同じクラスタKL002にクラスタリングされている。
【0130】
また時刻t1において、ゲーム世界で同じエリアE3に属するプレーヤキャラクタPC006〜PC009に対応するノードND006〜ND009は、同じクラスタKL003にクラスタリングされている。
【0131】
図3の400−t2は時刻t2におけるゲーム世界におけるプレーヤキャラクタPC001〜PC009の位置分布を示している。時刻t1においてエリアE1に位置していたプレーヤキャラクタPC02は、時刻t2においてはエリアE2に位置している。また時刻t1においてエリアE3に位置していたプレーヤキャラクタPC006は、時刻t2においては、ゲームから離脱して、ゲーム世界に存在しなくなっている。従って時刻t2においては、プレーヤキャラクタPC001、PC003はエリアE1に存在し、プレーヤキャラクタPC002、PC004、PC005はエリアE2に存在し、プレーヤキャラクタPC007〜PC009はエリアE3に存在する。
【0132】
図4の400−t2は、図3の400−t2の位置分布における、プレーヤキャラクタに対応するノードのネットワーク構成を示している。
【0133】
時刻t1〜時刻t2におけるプレーヤキャラクタPC002のエリア変化に伴って、プレーヤキャラクタPC002に対応するノードND002の属するクラスタが、KL001からKL002に変化している。ノードND002は、プレーヤキャラクタPC002の属するエリアがE1からE2に変化したことを検出すると、プレーヤキャラクタPC002に対応したノードに適したクラスタはKL002であると判断する。しかしその時点でノードND002に割り当てられているクラスタはKL001であるため、クラスタKL001を離脱し、クラスタKL002に参加する処理を行う。
【0134】
離脱する際には、それまで属していたクラスタKL001に属する他のノードND001、ND002に離脱する旨の通知を送信する。離脱通知を受信したクラスタ内のノードND001,ND003は、自己の保持するクラスタ情報を更新する。すなわちKL001のクラスタ情報の構成ノード情報から、ノードND002を削除する。なおノードND002は、クラスタサーバではないので、新たなクラスタサーバを決定する処理は行われない。もし離脱通知をしたノードがクラスタサーバである場合には、当該クラスタの新たなクラスタサーバを決定する処理が行われる。
【0135】
またノードND002は、クラスタKL002のクラスタ情報に基づき、クラスタKL002のクラスタサーバがどのノードであるか判断し、クラスタサーバであるノードに参加申し込みを行う。
【0136】
図8のクラスタ情報の説明において、各ノードは、自己が属するクラスタのクラスタ情報を保持していると述べたが、各ノードは直接接続されているクラスタのクラスタ情報(隣接クラスタ情報と呼ぶ)も保持していてもよい。例えば図2においてはクラスタKL001はクラスタKL002とは直接接続されているが、クラスタKL003とは直接接続されていない。このような場合、クラスタKL001に属する各ノードND001〜ND003は、隣接クラスタ情報としてクラスタKL002のクラスタ情報を有している。
【0137】
また例えば図4の400−t1においてはクラスタKL001はクラスタKL002、KL003と直接接続されているので、このような場合、クラスタKL001に属する各ノードND001〜ND003は、隣接クラスタ情報としてクラスタKL002とクラスタKL003のクラスタ情報を有している。
【0138】
従ってノードND002は、KL002のクラスタ情報に基づき、クラスタKL002のクラスタサーバはND004であることを把握し、ノード情報(図7参照)によって、ND004のIPアドレスとポート番号を取得して、ノードND004に対して、クラスタKL002への参加申し込みを送信する。参加申し込みを受けたノードND004は、参加の許可又は不許可の判断を行う。
【0139】
例えばクラスタ内のノード数に制限を設けている場合には、当該クラスタのノード数が制限値を超えない場合には、参加を許可する。また当該クラスタのノード数が制限値を超える場合に、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理を行って分割後のいずれかのクラスタへの参加を許可してもよい。
【0140】
図4では、ノードND002のクラスタKL002への参加は許可され、クラスタKL002を構成するノードは、ND002、ND004、ND005となる。クラスタKL002のクラスタサーバであるノードND004は、自己の保持するKL002のクラスタ情報を更新するとともに、新たなノードND002の参加をクラスタ内の他のノードND005に通知する。参加通知を受信したクラスタ内ノードND005、ND002は、自己の保持するクラスタ情報を更新する。すなわちKL002のクラスタ情報の構成ノード情報に、ノードND002を追加する。
【0141】
時刻t1〜時刻t2におけるプレーヤキャラクタPC006のゲーム世界からの離脱また通信切断に伴って、プレーヤキャラクタPC006に対応するノードND006が属していたクラスタKL003の構成が変化している。例えばノードND006はゲーム世界から離脱する場合には、同じクラスタに属する他のノードND007〜ND009に離脱通知を送信するので、これを受信した同じクラスタに属する他のノードND007〜ND009は、ノードND006の離脱を把握する。また例えばノードND006の通信切断が生じた場合には、同じクラスタに属する他のノードND007〜ND009は、ノードND006との相互通信ができなくなることによりノードND006の通信切断を把握する。
【0142】
ノードND006の離脱又は通信切断を把握した同じクラスタに属する他のノードND007〜ND009は、自己が保持するクラスタ情報によりノードND006がクラスタサーバであったことを把握しているので、新たなクラスタサーバを決定する処理を行う。各ノードは同じアルゴリズム及び各ノードが保持しているノード情報とクラスタ情報に基づいて一意に新たなクラスタサーバをノードND009に決定し、各自のクラスタ情報を更新する。
【0143】
またクラスタKL003の新たなクラスタサーバとなったノードND009は、他のクラスタのクラスタサーバであるノードND001、ND004とクラスタのゲームデータの送受信を行う。
【0144】
(4)クラスタの階層構造
クラスタが多数存在する場合には、クラスタサーバ同士をクラスタリングすることで、さらに効率的な処理を行うことができる。
【0145】
図5は、クラスタの階層構造について説明する図である。
【0146】
クラスタサーバであるノードND001、ND004、ND006はクラスタリングされ上位クラスタSKL01を構成し、クラスタサーバであるノードND0010、ND013、ND015はクラスタリングされ上位クラスタSKL02を構成している。
【0147】
同じ上位クラスタSKL01に属するクラスタサーバであるノードND001,ND004、ND006は、上位クラスタSKL01内の他のノードすべてと相互接続(フルコネクト型のネットワーク構造で相互接続)されてもよい。上位クラスタ内でのノード間通信β1、β2、β3では第3の通信頻度でゲームデータのやりとりを行う。
【0148】
また他の上位クラスタSKL02のノードのゲームデータも必要なので、上位クラスタ間でもゲームデータの送受信を行う。上位クラスタ間でのデータの送受信は、上位クラスタのクラスタサーバが行ってもよい。
【0149】
図5では、上位クラスタSKL01のクラスタサーバはノードND006であり、上位クラスタSKL02のクラスタサーバはND0010となっている。
【0150】
例えば上位クラスタSKL01のゲームデータは、上位クラスタSKL01のクラスタサーバND006が、隣接上位クラスタ(直接接続されている上位クラスタ)SKL02のクラスタサーバND010に送信する。また上位クラスタSKL01のクラスタサーバND006は、隣接上位クラスタSKL02のクラスタサーバND010から上位クラスSタKL02のゲームデータを受信する。
【0151】
この様な上位クラスタ間通信γのゲームデータの送受信は、第3の通信頻度より低い第4の通信頻度で行う。このようにすることにより、上位クラスタ外の他のノードに対するタイムラグに比べて、上位クラスタ内の他のノードに対するタイムラグを小さくすることができる。
【0152】
(5)ゲームへの参加、脱退の流れ
図6、図10はゲームへの参加、脱退の流れについて説明するための図である。
【0153】
まず、ノードND−Aが所与のゲーム世界におけるゲームに参加する場合には、管理サーバ(図10の510)に問い合わせを行い(図10のb1)、管理サーバ510から所与の仮想世界でのゲームへの参加申し込みを受け付けるマスターノード(図10のND−M)の紹介を受ける。具体的には、管理サーバ510からマスターノードのIPアドレスやポート番号を受け取る。
【0154】
マスターノードの紹介を受けたノードND−Aは、マスターノードND−Mに所与の仮想世界におけるゲームへの参加申し込みを行う(図6、図10のa1)。マスターノードから参加の許可を受けると(図6、図10のa2)、ノードND−Aは、スタート地点(所属クラスタ)を決定する。例えばゲームのスタート地点(ノードND−Aのプレーヤキャラクタのスタート地点)が図3のエリアE1である場合には、所属クラスタはKL001であると判断する。所属クラスタKL001のクラスタサーバがどのノードであるかは、マスターノードにから、所属クラスタのクラスタ情報を取得して判断してもよい。
【0155】
所属クラスタのクラスタサーバ(クラスタの上流ノード)に対しクラスタ所属要求を行い(図6、図10のa3)、ノードND−Aとクラスタ内のノードND001、ND002、ND003が相互に接続が確立して(図6のa4、図10のa4−1、a4−2、a4−3)、ノードND−Aのゲームデータをクラスタ上流ノードであるクラスタサーバND001及びクラスタ下流ノードであるND002、ND003に送信し(図6のa5、a6)、クラスタ上流ノードであるクラスタサーバND001及びクラスタ下流ノードであるND002、ND003のゲームデータをノードND−Aに送信し(図6のa7,a8)、クラスタ内の情報が相互に共有できた時点で、ノードND−Aはゲームに開始できる(図6のa9)。
【0156】
ノードND−Aが、所属クラスKL001以外の情報が必要な場合には、所属クラスタのクラスタサーバであるノード(上流ノード)ND001経由で随時リクエストをおこなう(図6のa10)。そして所属クラスKL001以外の情報は、所属クラスKL001クラスタのクラスタサーバであるノード(上流ノード)ND001経由で受信する(図6のa11)。
【0157】
クラスタ下流ノード(例えばND003)が、クラスタ変更やゲームを脱退(フリーアウト)する場合には、クラスタ下流ノード(例えばND003)は、所属クラスKL001クラスタのクラスタサーバであるノード(上流ノード)ND001に脱退申し込みを行う(図6のa12)。所属クラスKL001クラスタのクラスタサーバであるノード(上流ノード)ND001は脱退を許可する場合には、クラスタ下流ノード(例えばND003)に対し、脱退許可の通知を行い(図6のa13)、クラスタの他の下流ノード(ノードND−Aを含む)に脱退通知を送る(図6のa14)とともに、マスターノードにも脱退通知を送る(図6のa15)。
【0158】
3.本実施の形態の処理
図11は、ゲーム参加時の処理の流れを示すフローチャートである。
【0159】
ゲームに参加を希望するノードは、マッチングサーバに問い合わせを行い(ステップS10)、マッチングサーバからマスターノード情報を受信する(ステップS20)
次に、マスターノードに参加申し込みを行い、合わせてテスト通信を行う(ステップS30)。マスターノードは、参加申し込みを受け付けたノードのノード情報を作成する。このときテスト通信においてノードのラウンドトリップタイム(RTT)を取得し、当該ノードのノード情報の通信状態情報として記憶させる。
【0160】
ゲームに参加を希望するノードは、マスターノードから参加許可通知及びクラスタ割り当て情報を受信すると(ステップS40)、クラスタ割り当て情報に基づき、割り当てられたクラスタのクラスタサーバにクラスタ所属申し込みを行う(ステップS50)。なおクラスタ割り当ては、ノードのプレーヤキャラクタのスタート地点基づき行われる。クラスタ割り当ては、ゲームに参加を希望するノードが行ってもよいし、マスターノードが行ってもよいが、割り当てられたクラスタのクラスタサーバを特定するための情報が必要となる。なお割り当てられたクラスタのクラスタサーバを特定するための情報は、例えばクラスタサーバの一覧を管理するテーブルとして、前ノードが保有するようにしてもよい。マスターノードは、全クラスタのクラスタ情報を保持しているので、マスターノードから、割り当てられたクラスタのクラスタサーバのノードを特定する情報やクラスタサーバの一覧を管理するテーブル(例えば図7のノードID210)を受け取ってもよい。
【0161】
そしてクラスタサーバからクラスタ情報を受け取り、クタスタを構成する他のノードと相互にコネクション確認を行う(ステップS60)。
【0162】
図12は、ノードの役割に応じた通信制御の処理の流れを示すフローチャートである。
【0163】
ノードは、第1の通信頻度でクラスタ内の他のノードと相互にゲームデータの送受信を行う(ステップS110)。
【0164】
ノードが、クラスタサーバである場合には(ステップS120)、第1の通信頻度より低い第2の通信頻度で、隣接クラスタ情報に定義されている隣接クラスタのクラスタサーバと相互にゲームデータの送受信を行う(ステップS130)。
【0165】
図13は、クラスタ変更処理(クラスタを変更するノードの処理)の流れを示すフローチャートである。
【0166】
プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算する(ステップS210)。
【0167】
プレーヤキャラクタのゲーム評価値が所定以上変化した場合には(ステップS220)、プレーヤキャラクタのゲーム評価値に基づき、プレーヤキャラクタに対応したノードに適したクラスタを求める(ステップS230)。
【0168】
そして、適したクラスタが現在属しているクラスタと異なる場合には(ステップS240)、現在のクラスタを離脱して、適したクラスタに参加する (ステップS250)。
【0169】
図14は、クラスタ内の他のノードがクラスタを離脱する場合の処理の流れを示すフローチャートである。
【0170】
同じクラスタの他のノードからクラスタ離脱通知ある場合には、以下の処理を行う(ステップS310)。
【0171】
離脱するのはクラスタサーバである場合には(ステップS320)、所属クラスタを構成するノードのノード情報(通信状態情報)に基づき、所属するクラスタの次のクラスタサーバを判断する(ステップS330)。自己が次のクラスタサーバである場合(ステップS340)には、クラスタ情報の変更を隣接クラスタ情報に定義されている隣接クラスタのクラスタサーバに通知する(ステップS350)。
【0172】
図15は、クラスタ分割処理の流れを示すフローチャートである。
【0173】
所与のノードからクラスタ参加申し込みがあると(ステップS410)、以下の処理を行う。
【0174】
所与のノードのクラスタ参加によりクラスタのノード数が制限値を超える場合には(ステップS420でY)、クラスタを構成するノードを制限値を超えない数のノードで構成された複数のクラスタに分割する(ステップS430)。所与のノードのクラスタ参加によりクラスタのノード数が制限値を超えない場合には(ステップS420でN)、所与のノードをクラスタの構成員とする(ステップS440)。
【0175】
自己が属するクタスタを構成する他のノードと相互にコネクション確認を行う(ステップS45)。
【0176】
自己がクラスタサーバである場合には(ステップS460)、クラスタ情報の変更を隣接クラスタ情報に定義されている隣接クラスタのクラスタサーバに通知する(ステップS470)。
【0177】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0178】
キャラクタ同士が通信遅延の影響が高いと判断される状況にある場合には当該キャラクタ同士は同じグループにグループ化され、キャラクタ同士が通信遅延の影響が低い判断される状況にある場合には当該キャラクタ同士は異なるグループにグループ化される構成であれば本発明の範囲内である。キャラクタ同士が通信遅延の影響が高いと判断される状況にある場合とは、例えばゲーム空間内におけるキャラクタの位置が近いことや同じエリアにいる場合でもよい。またキャラクタの能力(手足が伸びる能力があるなど)や、装備しているアイテム(狙撃銃など)に応じて、グループを変更してもよい。すなわち手足が伸びるキャラクタや狙撃銃など遠方の的に対しても攻撃可能なキャラクタに対しては、ゲーム空間内の距離が多少離れていても通信遅延の影響が高いと判断してもよい。
【0179】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、携帯型ゲームシステム、ゲーム画像を生成するシステムボード等の種々のゲームシステムに適用できる。
【符号の説明】
【0180】
100 処理部、110 ゲーム演算部、111 オブジェクト空間設定部、112 仮想カメラ制御部、113 移動・動作演算部、115 ゲーム評価値演算部、120 通信制御部、130 描画部、140 音処理部 160 操作部、180 情報記憶媒体、190 表示部、170 記憶部、172 主記憶部、192 音出力部、196 通信部
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及びゲーム情報生成装置に関する。
【背景技術】
【0002】
ネットワークを介して複数のプレーヤが、ゲーム世界のプレーヤキャラクタ同士をオンラインで対戦させるオンライン対戦ゲームが知られており、人気が高い。
【0003】
かかるオンライン対戦ゲームでは、専用のサーバを設置して、サーバ方を経由してゲーム装置にゲームデータを送信して複数のゲーム装置の通信対戦を行うものが知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004−041414号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし専用のサーバを設置し、サーバでゲームデータの送信を管理するとコストがかり、ネットワークの負荷が増大し、通信によるトラフィックが発生しやすくなる。また複数のゲーム装置を Peer to Peer(ピアトゥピア、ピアツーピア)で接続して、ゲーム装置間で相互にゲームデータの送受信を行う方式も存在するが、参加するゲーム装置が増えると、ネットワークの負荷が増大し、通信のトラフィックが発生しやすくなる。
【0006】
通信トラフィックを下げるために、通信頻度をさげると、ネットワークの負荷は減少するが、ゲームデータの遅延により、他のゲーム機のゲームデータが反映されないゲーム画像が生成されてしまい、プレーヤに違和感を与えてしまうという問題があった。
【0007】
本発明は、以上のような課題を解決するためになされたものである。本発明のいくつかの態様によれば、ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小限現にする効率のよい通信制御を行うことができるプログラム、情報記憶媒体、ゲーム情報生成装置を提供することができる。
【課題を解決するための手段】
【0008】
(1)本発明の一態様は、
ネットワークを介して他のノードとゲームデータの送受信を行うゲーム機のためのプログラムであって、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、
してコンピュータを機能させ、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うプログラムに関する。
【0009】
ノードはプレーヤ又はプレーヤキャラクタに対応して設定された通信単位である。生成されるゲーム画像は2次元画像でもよいし、3次元画像でもよい。グループ内通信では、各ノードのゲームデータをグループ内の他のノードと相互にやりとりする。グループ外のノードとの通信は、グループの代表が行うようにしてもよい。すなわち各グループの代表が他のグループの代表とグループ内のゲームデータをやりとりするようにしてもよい。
【0010】
本発明は、マルチプレーヤゲームで通信対戦をPeer to Peer(ピアトゥピア、ピアツーピア)方式で行う手法に関するもので、ノードは1つ以上の他のノードとPeer to Peerで接続されている。Peer to Peer(ピアトゥピア、ピアツーピア)とは、多数の端末間で通信を行う際のアーキテクチャのひとつで、対等の者ピア同士が通信をすることを特徴とする通信方式である。
【0011】
本発明によれば、マルチプレーヤゲームで通信対戦を行う場合に専用のサーバを使用せずに多人数で通信対戦が可能となる。
【0012】
一般にゲーム世界で近くに位置する他のノードのキャラクタの情報はゲーム画像に反映される確率が高いのでタイムラグなく更新することが好ましいが、ゲーム世界で遠くに位置する他のノードのキャラクタの情報は、ゲーム画像に反映される確率が低いので通信遅延により反映されるのに多少のタイムラグがあっても問題とならない場合がおおい。
【0013】
本発明によれば、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を求め、求めたゲーム評価値に基づきグループ分けする。そして、グループ内のノードとゲームデータの送受信を行う通信頻度を、グループ外のノードとゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノードとのネットワーク接続をグループ外のノードとのネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行うことができる。従って、グループ内のノード間の通信環境をグループ外のノード間との通信環境よりよくすることができるので、グループ外の他のノードに対するタイムラグに比べて、グループ内の他のノードに対するタイムラグを小さくすることができる。すなわち、ゲーム世界の状況に応じてノード間の通信環境にメリハリをつけることができるので、ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小現にする効率のよい通信制御を行うことができる。
【0014】
(2)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記通信制御手段は、
グループを構成するノードをクラスタリングするクラスタリング処理手段と、
同じクラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせるクラスタ内通信制御処理手段と、
クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、クラスタの代表ノードを判断するクラスタ代表判断手段と、
クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるクラスタ間通信制御処理手段と、を含み、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度とクラスタ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びクラスタ内のノード間のネットワーク接続とクラスタ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行ってもよい。
【0015】
(3)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記通信制御手段は、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度を、クラスタ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びクラスタ内のノード間のネットワーク接続をクラスタ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行ってもよい。
【0016】
(4)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータ(位置データ等)の少なくとも一方には、プレーヤキャラクタの位置に関する情報を含み、
前記ゲーム評価値演算手段は、
プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算してもよい。
【0017】
ゲームパラメータは、例えば位置データ等でもよい。プレーヤキャラクタの位置に関する情報とは、位置座標、位置が属するエリア情報、他のプレーヤキャラクタとの位置関係、視界範囲、仮想カメラの位置でもよい。
【0018】
この様にすれば、プレーヤキャラクタのゲーム世界の位置に応じて、プレーヤキャラクタに対応するノードの通信環境にメリハリをつけることができる。例えば同じゲーム画像に含まれる可能性のあるキャラクタ(ゲーム世界において近くに位置するキャラクタ)をクラスタにクラスタリングすることで、より効果的にネットワークの負荷の増大を防ぎつつ、通信遅延による影響を最小現にすることができる。
【0019】
(5)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタリング処理手段は、
ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行ってもよい。
【0020】
このようにすればゲーム状況やプレーヤキャラクタのゲームパラメータの変化に応じて、動的なクラスタ変更を行うことができる。
【0021】
(6)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタ間通信制御処理手段は、
クラスタの代表に、所属クラスタに直接接続されているクラスタの情報を定義した隣接クラスタ情報に基づき、隣接クラスタとして定義されているクラスタの代表ノードとネットワークを介して接続してクラスタ間通信を行わせてもよい。
【0022】
隣接クラスタ情報に隣接クラスタとして定義されてないクラスタの代表ノードとは直接クラスタ間通信を行わず、隣接クラスタの代表ノードを介して、さらに他の複数のクラスタの代表ノードを経由してゲームデータの送受信を行うようにしてもよい。離れたクラスタのゲームデータは多少の遅延はあっても、当該ノードのゲーム画像にはあまり影響がないので、通信によるトラフィックを弊害なく効果的に下げることができる。
【0023】
(7)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記通信制御手段は、
マスターノード以外のノードに、マスターノードのノード情報を受け取り、マスターノードとテスト通信を行わせるテスト通信処理手段と、
マスターノードに、テスト通信の結果に基づきテスト通信を行ったノードの通信状態情報を当該ノードに関連づけてノード情報として保持させ、保持しているノード情報を他のノード(クラスタの代表ノードでもよい)に送信させる処理をおこなうノード情報管理処理手段として機能してもよい。
【0024】
(8)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超えない範囲で、ノードをクラスタリングする処理を行ってもよい。
【0025】
(9)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
請求項1乃至6のいずれかにおいて、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超える場合には、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理をおこなってもよい。
【0026】
(10)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタ内通信制御処理手段は、
同じクラスタに属するノードと間をフルコネクト型のネットワーク構造で相互接続してクラスタ内通信を行ってもよい。
【0027】
フルコネクト型のネットワーク構造とは、1つ1つのノードが全ての他のノードと接続している状態であり、1つのノードが故障しても他のノードとの通信には関係なく、自由に接続できるため、障害耐性はネットワーク中でもっとも高い。
【0028】
(11)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記クラスタリング処理手段は、
クラスタ代表である複数のノードを上位クラスタとしてクラスタリングする処理を行い、
前記クラスタ内通信制御処理手段は、
同じ上位クラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせ、
前記クラスタ代表判断手段は、
上位クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、上位クラスタの代表ノードを判断し、
前記クラスタ間通信制御処理手段は、
上位クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせてもよい。
【0029】
(12)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記ゲーム世界は、複数のエリアに分割されており、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、プレーヤキャラクタが属するエリア情報を含み、
前記ゲーム評価値演算手段は、
前記エリア情報に基づき、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求めてもよい。
【0030】
(13)このプログラム、情報記憶媒体、ゲーム情報生成装置において、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、仮想カメラの配置に関する仮想カメラ情報を含み、
前記ゲーム評価値演算手段は、
前記仮想カメラ情報に基づき、プレーヤキャラクタに対応したゲーム評価値を求めてもよい。
【0031】
仮想カメラの配置に関する仮想カメラ情報は、 仮想カメラの位置及び回転及び画角の少なくとも1つの情報を含んでもよい。
【0032】
(14)本発明の一態様は、
上記のいずれかに記載のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体に関する。
【0033】
(15)本発明の一態様は、
ネットワークを介して他のノードとゲームデータの送受信を行い、ゲーム情報を生成するゲーム情報生成装置において、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、を含み、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うゲーム情報生成装置に関する。
【0034】
ゲーム情報とは、ゲーム中に生成される情報を意味し、ゲームの出力情報やゲーム成績やゲーム結果に関する情報でもよい。ゲームの出力情報は、例えばゲーム画像(画像の描画データでもよいし、他のコンピュータ等に画像を生成させるためのコマンドやデータでもよい)やゲーム音楽等でもよい。
【図面の簡単な説明】
【0035】
【図1】本実施形態の画像生成システムの機能ブロック図。
【図2】本実施の形態のグループ化の一例(クラスタリング処理)を示す図。
【図3】クラスタ変更処理について説明するための図。
【図4】クラスタ変更処理について説明するための図。
【図5】クラスタの階層構造について説明する図。
【図6】ゲームへの参加、脱退の流れについて説明するための図。
【図7】本実施の形態のノード情報について説明するための図。
【図8】図8(A)〜(C)は、クラスタ情報について説明するための図。
【図9】上流ノードと下流ノードについて説明するための図。
【図10】ゲームへの参加、脱退の流れについて説明するための図。
【図11】ゲーム参加時の処理の流れを示すフローチャート。
【図12】ノードの役割に応じた通信制御の処理の流れを示すフローチャート。
【図13】クラスタ変更処理(クラスタを変更するノードの処理)の流れを示すフローチャート。
【図14】クラスタ内の他のノードがクラスタを離脱する場合の処理の流れを示すフローチャート。
【図15】クラスタ分割処理の流れを示すフローチャート。
【図16】ゲーム画像の一例を示す図。
【発明を実施するための形態】
【0036】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0037】
1.構成
図1に本実施形態の画像生成システム(ゲーム情報生成装置の一例、コンピュータ、端末、ゲーム装置)の機能ブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0038】
操作部160は、プレーヤがプレーヤキャラクタ(プレーヤが操作するプレーヤキャラクタ、移動体、プレーヤオブジェクト、ゲームキャラクタを含む)の操作情報を入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【0039】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(VRAM)などにより実現できる。
【0040】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを入力するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)、メモリカードなどにより実現できる。処理部100は、情報記憶媒体180に入力されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0041】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0042】
通信部196は外部(例えば、他機、サーバや他のゲームシステム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0043】
なお、画像生成装置が、本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)を、ネットワークを介してサーバからダウンロードし、情報記憶媒体180に記憶するようにしてもよい。このようなサーバに入力されているプログラムの出力も本発明の範囲内に含めることができる。
【0044】
処理部100(プロセッサ)は、操作部160からの操作情報(入力情報の一例)やプログラムなどに基づいて、ゲーム演算処理、画像生成処理、或いは音生成処理などの処理を行う。この処理部100は記憶部170内の主記憶部172をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0045】
処理部100は、ゲーム演算部110、オブジェクト空間設定部111、仮想カメラ制御部112、移動・動作処理部113、ゲーム評価値演算部115、通信制御部120、描画部130、音生成部140を含む。なおこれらの一部を省略する構成としてもよい。
【0046】
ゲーム演算部110は、入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うもので、ゲーム演算手段ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0047】
本実施形態のゲーム演算部110は、ゲーム開始時に各プレーヤの体力値を初期値(例えば100)に設定し、ゲームを開始してからゲームが終了するまでのゲーム期間(例えば、90秒の間)に、フレーム毎に、各プレーヤからの入力情報に基づいてヒット判定処理を行い、ヒット判定結果に基づいていて、各プレーヤキャラクタの体力値を減算させ、各プレーヤキャラクタの体力値が0になったか否かに基づいてゲーム結果(勝敗、引き分け)を決定する演算処理を行ってもよい。なお、ゲーム演算部110は、ゲーム期間経過時点で、いずれのプレーヤキャラクタの体力値が0より大きい値である場合には、一方のプレーヤキャラクタの体力値が、他方のプレーヤキャラクタの体力値よりも大きい値である場合に、一方のプレーヤキャラクタが勝ちと決定し、他方のプレーヤキャラクタが負けと決定し、体力値が双方同じ場合には引き分けと決定してもよい。
【0048】
オブジェクト空間設定部111は、プレーヤキャラクタ、移動体、建物、球場、車、樹木、柱、壁、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0049】
仮想カメラ制御部112は、オブジェクト空間内の所与(任意)の仮想カメラ(視点)から見える画像を生成するための仮想カメラの制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。また、画角を制御するようにしてもよい。
【0050】
例えば、仮想カメラによりオブジェクト(例えば、プレーヤキャラクタ、ボール、車)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部で得られたオブジェクトの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0051】
移動・動作処理部113は、モデル(キャラクタ、車、電車又は飛行機等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、モデルをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0052】
特に、本実施形態の移動・動作処理部113は、プレーヤからの入力情報に基づいて、プレーヤの操作対象のプレーヤキャラクタを移動・動作させる処理を行うことができる。
【0053】
また、後述する通信制御部120によって送信されたパケットに含まれる他のノードのゲームデータに基づいて、他のノードのプレーヤキャラクタを、自己のノードのプレーヤキャラクタと同一のオブジェクト空間において移動・動作させる処理を行うことができる。
【0054】
また、宛先情報とは、ゲームシステムを構成する各ノードのIPアドレス、ポート番号とすることができる。IPアドレスは、インターネット上もしくはWANで特定のゲーム機を特定するためのグローバルIPアドレスとしてもよいし、LANで特定のゲーム機を特定するためのプライベートIPアドレスとしてもよい。
【0055】
通信制御部120、他のノード(他のゲーム装置でもよい)に送信するパケットを生成する処理、パケット送信先のゲーム機のIPアドレスやポート番号を指定する処理、受信したパケットに含まれるデータを記憶部170に保存する処理、受信したパケットを解析する処理、その他のパケットの送受信に関する制御処理等を行う。
【0056】
パケットとは、ネットワークを介して通信する固まりであり、送信元IPアドレス、送信先IPアドレスを含むネットワークに必要なヘッダーと、送信元において書き込まれたデータがペイロードとからなるデータのことをいう。
【0057】
また、アプリケーションレベルの通信を実現するためには、使用するTCPやUDPプロトコルに応じたアプリケーションの種類を特定するポート番号を指定してパケットを生成する。例えば、TCPプロトコルは、データの送受信の信頼性が高く、例えば、確認応答や再送を利用している。また、TCPプロトコルは、紛失したデータの再送処理を行うことができ、さらにデータの送信順序を確保して送信先のゲーム機にパケットを送信することができる。一方、UDPプロトコルでは、送信の途中でデータを紛失しても再送されず、順番が入れ替わって伝送されることがある。しかし、UDPプロトコルは、TCPプロトコルに比べてオーバヘッドがないので、リアルタイムにデータを送信するオンラインゲームでは適している場合がある。UDPプロトコルを利用する場合には、バッファに入力するゲームデータが識別番号順(昇順)に入力するようにし、入力対象の識別番号のゲームデータが届いていない場合には、他機に要求するようにしてもよい。本実施形態では、いずれのプロトコルにも対応することができる。なお、UDPプロトコルを利用する場合には、バッファへのゲームデータの入力順序を識別情報(識別番号)の昇順に入力するように制御するようにしてもよい。
【0058】
本実施形態の通信制御部120は、画像を描画するフレームレートに応じてパケットを生成し、接続先の他のノードに生成したパケットを送信する処理を行う。具体的に説明すると、例えば、フレームレートが60fpsである場合には、1/60秒毎に、パケットのヘッダーの送信先IPアドレスと送信先ポート番号に、第2のゲーム機のIPアドレスと使用するポート番号指定し、ヘッダーの送信元のIPアドレスと送信元ポート番号に、第1のゲーム機のIPアドレスと使用するポート番号を指定して、ゲームデータを含むデータをパケットのペイロードに入力し、生成したパケットを他のノードに送信する処理を行う。
【0059】
フレーム毎にゲーム機を操作するプレーヤからの入力情報(操作情報も含む)を含むデータである。例えば、ゲームデータは、入力情報の有無や、入力情報が有る場合には入力情報の内容を示したデータとすることができる。例えば、ゲームデータを数値で示す場合には、入力情報が無い場合はゲームデータを「0」とし、入力情報があってその内容がAボタンの入力である場合にはゲームデータを「1」、入力情報があってその内容がBボタンの入力である場合にはゲームデータを「2」、また、入力情報があってその内容がA及びBボタンの入力である場合にはゲームデータを「3」としてもよい。
【0060】
また、ここで、識別情報とは、フレーム毎に付与される複数のゲーム機(第1、第2のゲーム機)において共通のデータである。本実施形態では、第1のゲーム機と第2のゲーム機との接続が確立されたときを基準に、経過時間に応じてフレーム毎に付与される情報とすることができる。例えば、ゲーム機において、フレームレートに応じて取得したゲームデータに対応付けるシーケンシャルな識別番号(1から始まる正の整数)とすることができる。
【0061】
例えば、フレームレートが60fpsである場合を考えると、1/60毎に取得したゲームデータに、識別情報を対応付ける。例えば、第1のゲーム機と第2のゲーム機それぞれにおいて、接続が確立された時点に取得したゲームデータには、識別番号「1」を対応付けし、接続確立時から1/60秒後に取得したゲームデータには、識別番号「2」を対応付けし、接続確立時から2/60秒後に取得したゲームデータには、識別番号「3」を対応付けする。
【0062】
また、本実施形態の通信制御部115は、第2のゲーム機から送信されたパケットを受信する処理を行う。そして、受信したパケットを解析し、パケットのペイロードに含まれるゲームデータを含むデータを取得する。
【0063】
通信制御部120は、ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行うもので、ネットワーク設定部125を含む。
【0064】
ネットワーク設定部125は、ゲームシステムで必要となるネットワーク情報を取得し、管理する処理等を行う。特に、本実施形態のネットワーク設定部は、各ノード(ゲーム機又はゲーム機のプレーヤキャラクタ)に個別に付与されるノードの識別情報(オンラインゲームに参加できるノードを識別するために個別に付与されたデータ)と、ノードの識別情報に対応付けられたパケットの送信先を指定する宛先情報とを取得し、管理する処理を行う。
【0065】
ゲーム評価値演算部115は、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算し、通信制御部120は、グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度を、グループ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノード間のネットワーク接続をグループ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行う。
【0066】
また通信制御部120は、グループを構成するノードをクラスタリングするクラスタリング処理部121と、同じクラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせるクラスタ内通信制御処理部122と、クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、クラスタの代表ノードを判断するクラスタ代表判断部123と、クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるクラスタ間通信制御処理部124と、を含み、クラスタ内のノード間でゲームデータの送受信を行う通信頻度とクラスタ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びクラスタ内のノード間のネットワーク接続とクラスタ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行ってもよい。
【0067】
また通信制御部120は、クラスタ内のノード間でゲームデータの送受信を行う通信頻度を、クラスタ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びクラスタ内のノード間のネットワーク接続をクラスタ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行ってもよい。
【0068】
ゲーム状況及びプレーヤキャラクタのゲームパラメータ(位置データ等)の少なくとも一方には、プレーヤキャラクタの位置に関する情報を含み、ゲーム評価値演算部115は、 プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算してもよい。
【0069】
クラスタリング処理部121は、ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行ってもよい。
【0070】
クラスタ間通信制御処理部124は、クラスタの代表に、所属クラスタに直接接続されているクラスタの情報を定義した隣接クラスタ情報に基づき、隣接クラスタとして定義されているクラスタの代表ノードとネットワークを介して接続してクラスタ間通信を行わせてもよい。
【0071】
通信制御部120は、マスターノード以外のノードに、マスターノードのノード情報を受け取り、マスターノードとテスト通信を行わせるテスト通信処理部126と、マスターノードに、テスト通信の結果に基づきテスト通信を行ったノードの通信状態情報を当該ノードに関連づけてノード情報として保持させ、保持しているノード情報を他のノードに送信させる処理をおこなうノード情報管理処理部127を含む。
【0072】
クラスタリング処理部121は、クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超えない範囲で、ノードをクラスタリングする処理を行ってもよい。
【0073】
クラスタリング処理部121は、クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超える場合には、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理をおこなってもよい。
【0074】
クラスタ内通信制御処理部122は、同じクラスタに属するノードと間をフルコネクト型のネットワーク構造で相互接続してクラスタ内通信を行ってもよい。
【0075】
クラスタリング処理部121は、クラスタ代表である複数のノードを上位クラスタとしてクラスタリングする処理を行い、クラスタ内通信制御処理部122は、同じ上位クラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせ、クラスタ代表判断部123は、上位クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、上位クラスタの代表ノードを判断し、クラスタ間通信制御処理部124は、上位クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせてもよい。
【0076】
ゲーム世界は、複数のエリアに分割されており、前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、プレーヤキャラクタが属するエリア情報を含み、ゲーム評価値演算部115は、前記エリア情報に基づき、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求めてもよい。
【0077】
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、仮想カメラの配置に関する仮想カメラ情報を含み、ゲーム評価値演算部115は、仮想カメラ情報に基づき、プレーヤキャラクタに対応したゲーム評価値を求めてもよい。
【0078】
描画部130は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクトデータ(モデルデータ)が入力され、入力されたオブジェクトデータ(モデルデータ)に含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更(更新、調整)する。そして、頂点処理後の頂点データに基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色データの設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を画像バッファ174(ピクセル単位で画像情報を記憶できるバッファ。VRAM、レンダリングターゲット)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0079】
なお、頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0080】
そして、描画部130は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0081】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクトデータ(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、図示しないオブジェクトデータ記憶部に保存される。
【0082】
テクスチャマッピングは、記憶部170のテクスチャ記憶部に記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いて記憶部170のテクスチャ記憶部からテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【0083】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が入力されるZバッファ(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファに入力されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファのZ値を新たなZ値に更新する。
【0084】
αブレンディング(α合成)は、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)のことである。
【0085】
なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして出力できる。
【0086】
なお描画部130、オブジェクト空間設定部111,仮想カメラ制御112は、ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段として機能する。
【0087】
音生成部140は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0088】
2.本実施の形態の手法
(1)クラスタリング処理
本実施の形態では、オンラインで通信対戦や協力プレイを行うマルチプレーヤゲームにおいて、専用サーバを設置せずに、Pe er to Peer(ピアトゥピア、ピアツーピア)でゲーム機を接続し、多人数でのプレイを可能とするネットワークトポロジーを構成する。 Peer to Peer(ピアトゥピア、ピアツーピア)とは、多数の端末間で通信を行う際のアーキテクチャのひとつで、対等の者ピア同士が通信をすることを特徴とする通信方式である。
【0089】
図2は本実施の形態のグループ化の一例(クラスタリング処理)を示す図である。
【0090】
ノードND001〜ND009は、プレーヤキャラクタPC1〜PC9(プレーヤキャラクタを操作するプレーヤでもよい)に対応して設定された通信単位であり、1つ以上の他のノードと接続され、ゲームデータの送受信を行う。
【0091】
ゲームデータとは、ゲームの仕様に応じて決められるデータであり、例えばキャラクタの位置や回転情報でもよいし、ゲームパラメータでもよいし、キー情報(入力キーの情報)でもよいし、カウンタ情報やイベントトリガ等の情報でもよい。
【0092】
1台のゲーム装置(ゲーム情報生成装置でもよい)に1人のプレーヤが対応したゲーム装置を複数接続して通信対戦をおこなう場合には、1台のゲーム装置に1つのノードが存在する。また例えば画面分割して1つのゲーム機でn人のプレーヤがゲームするゲーム装置(1台のゲーム装置にn人のプレーヤ対応したゲーム装置)複数接続して通信対戦をおこなう場合には、1台のゲーム装置にn個のノードが存在する。この様な場合、1台のゲーム機に対応した複数のノードは、同じIPアドレスで異なるポート番号を有している。
【0093】
本実施の形態では、グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度を、グループ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びグループ内のノード間のネットワーク接続をグループ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行う。
【0094】
ゲーム評価値は、ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき決定される値である。例えばプレーヤキャラクタのゲーム世界における位置データ(ゲームパラメータの一例)により、ゲーム評価値を決定してもよい。例えばゲーム世界における位置座標の分布から、距離が所定値以内(近くにいる)プレーヤキャラクタをグループ化してもよい。所与のタイミング(たとえばゲーム開始時)でゲーム世界のプレーヤキャラクタ間の距離を求め、距離が所定値以内のプレーヤキャラクタをグループ化してもよい。そして、グループ形成後は、所定のサイクルで各プレーヤキャラクタ間の距離を再計算して、グループを構成するノードを変更してもよい。また各プレーヤキャラクタの位置の変化によりノードの属するグループを変更してもよい。
【0095】
またグループの代表となるプレーヤキャラクタを複数抽出し、抽出されたプレーヤキャラクタを基準に、当該プレーヤキャラクタと所定の位置関係(所定の距離内でもよい)にあるプレーヤキャラクタをグループ化してもよい。
【0096】
またゲーム空間を、複数のエリアに分割し、プレーヤキャラクタが属するエリアに対応したゲーム評価値を求めてもよい。また例えば仮想カメラがプレーヤキャラクタに追従するようなゲームの場合には、仮想カメラの配置(位置、回転、画角)に基づき、プレーヤキャラクタのゲーム評価値を求めてもよい。
【0097】
ここで、ノードND001〜ND009に対応するプレーヤキャラクタPC1〜PC9のゲーム評価値がGV1〜GV9であり、それぞれGV1=1、GV2=1、GV3=1、GV4=2、GV5=1、GV6=3、GV7=3、GV8=3、GV9=3であるとする。この様な場合、プレーヤキャラクタのゲーム評価値が1であるノードND001〜D003の集合をグループ化(KL001)し、プレーヤキャラクタのゲーム評価値が2であるノードND004とD005の集合をグループ化(KL002)し、プレーヤキャラクタのゲーム評価値が3であるノードND006〜D009の集合をグループ化(KL003)してもよい。グループ内では各ノードは、グループ内の他のノードすべてと相互接続(フルコネクト型のネットワーク構造で相互接続)されてもよい。グループ内でのノード間通信α1、α2、α3では第1の通信頻度でゲームデータのやりとりを行う。
【0098】
また他のグループのノード(グループ外のノード)のゲームデータも必要なので、グループ間でもゲームデータの送受信を行う。グループ間でのデータの送受信は、グループの代表(クラスタサーバとよぶ)がおこなってもよい。
【0099】
グループ化はクラスタリング処理により実現してもよい。以下グループをクラスタと呼ぶ。図2では、クラスタKL001のクラスタサーバはノードND001であり、クラスタKL002のクラスタサーバはND004であり、クラスタKL003のクラスタサーバはND006となっている。
【0100】
例えばクラスタKL001のゲームデータ(クラスタKL001を構成するノードND001、ND002、ND003のゲームデータの集合でもよい)は、クラスタKL001のクラスタサーバND001が、隣接クラスタ(直接接続されているクラスタ)KL002のクラスタサーバND004に送信する。またクラスタKL001のクラスタサーバND001は、隣接クラスタKL002のクラスタサーバND004からクラスタKL002のゲームデータ及び隣接しないクラスタ(直接接続されていないクラスタ)KL003のゲームデータを受信する。この様にクラスタサーバは隣接しないクラスタ(直接接続されていないクラスタ)KL003のゲームデータについては、隣接クラスタKL002のクラスタサーバND006を介して受信する。
【0101】
この様なクラスタ間通信βのゲームデータの送受信は、第1の通信頻度より低い第2の通信頻度で行う。このようにすることにより、クラスタ外(グループ外)の他のノードに対するタイムラグに比べて、グループ内(クラスタ内)の他のノードに対するタイムラグを小さくすることができる。すなわち、ゲーム世界の状況に応じてノード間の通信環境にメリハリをつけることができるので、ネットワークの負荷の増大を防ぎつつ、通信遅延によるゲームへの影響を最小現にする効率のよい通信制御を行うことができる。
【0102】
受信した他のクラスタの情報は、クラスタサーバND001が、クラスタ内の他のノードND002、ND003に送信する(クラスタ内通信)。このように、クラスタ内のクラスタサーバ以外のノードND002、ND003は、クラスタサーバND001を介して、他のクラスタKL002、KL003のゲームデータを受信し、またクラスタサーバND001を介して、他のクラスタKL002、KL003にゲームデータを送信することができる。
【0103】
ノードの接続情報は、ノード内で管理される。後述する図8で説明するに、各ノードがノード間の接続情報テーブルを保持してもよい。なお各ノードは全ノードに付いての接続情報を保持していてもよいし、一部のノードの接続情報のみ有していてもよい。また離れたクラスタの接続情報は必要ない場合がおおいので、各ノードが、ノードが属するクラスタ及びそのノードが直接接続されているクラスタについてのみノードの接続情報を保持するようにしてもよい。
【0104】
なお図2に示すようにクラスタサーバ同士は、フルコネクト接続でなくてもよい。直接接続されていないクラスタサーバのゲームデータは、直接接続されているクラスタサーバを経由して取得してもよい。
【0105】
図9は、上流ノードと下流ノードについて説明するための図である。
【0106】
クラスタKL001のクラスタサーバであるノードND001、クラスタKL002のクラスタサーバであるノードND004、クラスタKL003のクラスタサーバであるノードND006をグループA(320)とし、ノードND002,ND003、ND005、ND007、ND008、ND009をグループB(310)とすると、グループA(320)は、グループB(310)の上流ノードとなる。またグループB(310)は、グループA(320)の下流ノードとなる。
【0107】
クラスタサーバは、各クラスタ内で通信環境のよいノード(例えば図7に示す通信状態情報240がよいもので、通信状態情報がラウンドトリップタイム(RTT)で与えられる場合にはRTTがより短いもの)がなるようにしてもよい。
【0108】
この様にすると上流ノードは下流ノードに比べ通信状態がよくなる。上流ノードは隣接する上流ノードと接続して、上流ノード間で自己の下流ノードのデータのやりとりを行う。後述するクラスタ変更処理で説明するようにノードが他のクラスタに移動する場合には、クラスタ内のノードの接続を張り直し、上流ノードが他のクラスタに移動した場合には、下流ノードで通信環境のよいノードが上流ノードになる。
【0109】
ゲーム評価値によりノードをクラスタリングすることにより、離れたクラスタのゲームデータは多少の遅延はあっても、当該ノードのゲーム画像にはあまり影響がないようにすることができるので、通信によるトラフィックを弊害なく効果的に下げることができる。
【0110】
本実施の形態では、各ゲーム装置(ノード)は同じプログラムがインストールされている。プログラムは、複数の機能を実現するためのアルゴリズムをふくんでおり、ノードの役割に応じた機能を実現可能に構成されている。例えばプログラムは「クラスタ内通信制御処理ルーチン(ノードがクラスタサーバである場合の処理)」や「クラスタ間通信制御処理ルーチン」や、「クラスタ代表判断処理ルーチン」や「テスト通信処理ルーチン(ノードがマスターノードである場合に実行する処理)」や「ノード情報管理処理ルーチン」を含んでおり、ノードがクラスタサーバである場合には「クラスタ間通信制御処理ルーチン(ノードがクラスタサーバである場合の処理)」を実行するが、ノードがクラスタサーバでない場合には「クラスタ間通信制御処理ルーチン(ノードがクラスタサーバである場合の処理)」は実行されない。本実施の形態では、ゲーム中にクラスタサーバは変わる可能性があるため、すべてのノードが、上記全処理を実行可能なプログラムがインストールされている。
【0111】
(2)クラスタサーバの決定処理
次にクラスタサーバの決定処理について説明する。各ノードは、クラスタに属するノードの通信状態情報に基づき、同じアルゴリズム(プログラム)で、クラスタサーバを判断する。各ノードは、自己が保持しているノード情報に含まれたノードの通信状態情報を得ることができる。
【0112】
各ノードが有している情報は、全ノードのノード情報(IPアドレス、ポート番号、通信状態情報を含む)と、同じクラスタを構成するノードを特定するクラスタ情報でもよい。
【0113】
図7は、本実施の形態のノード情報について説明するための図である。
【0114】
ノード情報200は、各ノードのIPアドレス220、ポート番号230、通信状態情報240を含む情報であり、各ノードのノードID210に関連づけて記憶されている。通信状態情報240は、各ノードの通信状態に関する情報であり、例えばマスターノードとのテスト通信におけるラウンドトリップタイム(RTT)や往復遅延時間。(あるデータを送ってから、相手の確認応答が戻ってくるまでにかかる時間)でもよい。マスターノードとのテスト通信は、ノードのゲーム参加時に行うようにしてもよい。なおその後は、所定のタイミングで更新してもよいし、ネットワークの負荷を増加させないために、更新はしなくてもよい。
【0115】
各ノードは、ゲームに参加している(同じゲーム世界にいる)全ノードのノード情報を有している。なおゲームに参加している全ノードの情報は、マスターノードとして設定されているノードが管理している。すなわち通信状態情報240を更新しない場合には、ノード情報の更新があるのは、新たなノードがゲームに参加する場合と、現在ゲームに参加しているノードがゲームから離脱する場合等である。新たなノードがゲームに参加する場合には、後述するように、管理サーバにゲーム参加申し込みをして、管理サーバから参加するゲーム世界を管理しているマスターノードを紹介され、マスターノードから参加許可を受けることになる。従ってマスターノードは、ゲームに参加するノードを把握しているため、参加許可を与えた時点でノード情報を更新する。すなわち新たに参加したノードに関するノード情報を追加する。参加申し込みをしたノードとマスターノードがテスト通信をおこない、そのときにRTT情報を当該ノードの通信状態情報240としてもよい。
【0116】
図8(A)〜(C)は、クラスタ情報について説明するための図である。
【0117】
図8(A)は、図2のクラスタKL001のクラスタ情報であり、図8(B)は、図2のクラスタKL002のクラスタ情報であり、図8(C)は、図2のクラスタKL003のクラスタ情報である。クラスタ情報は、各クラスタを構成するノードを特定するための情報である構成ノード情報(構成ノードのノードID)210を含む。それ以外にも、構成ノードに対応するプレーヤキャラクタの位置情報270、構成ノードがクラスタサーバか否かを示すクラスタサーバフラグ280を含んでいてもよいが必須ではない。なおプレーヤキャラクタの位置情報270は、ゲームデータとして有しているプレーヤキャラクタの位置情報を参照してもよい。
【0118】
クラスタに属する各ノードは、自分のクラスタに関するクラスタ情報を有している。すなわち図2のクラスタKL001に属するノードND001、ND002、ND003は、クラスタKL001のクラスタ情報(図8(A))を有しており、図2のクラスタKL002に属するノードND004、ND005はクラスタKL002のクラスタ情報(図8(B))を有しており、図2のクラスタKL003に属するノードND006、ND007、ND008、ND009はクラスタKL003のクラスタ情報(図8(C))を有している。
【0119】
各クラスタのノードは自己が属するクラスタのクラスタ情報に基づき自己が属するクラスタのクラスタサーバがどのノードであるか把握し、図7に示すノード情報に基づき、クラスタアドレスの通信アドレス(IPアドレスとポート番号)を取得することができる。例えばノードND001は、クラスタKL001のクラスタ情報に基づき、自己と同じクラスタに属するノードがND002とND003であることを把握する。そしてノード情報に基づき、ノードND001、ND002、ND003の通信状態情報を取得することができ、通信状態情報に基づき、クラスタサーバを判断する。例えばクラスタサーバを選ぶ規則として、「クラスタ内で最も通信状態がよいノードをクラスタサーバとする」と決めておくことにより、クラスタ内の各ノードは、各ノードが個別にクラスタサーバを判断する際に一意に同じノードをクラスタサーバとして決定することができる。
【0120】
なおクラスタサーバを決定するのは、何らかの事情でクラスタサーバが変更するときである。クラスタサーバ変更時に新たなクラスタサーバを決定したら、クラスタ情報のクラスタサーバフラグを更新する。そして、クラスタサーバの変更がおこらない限りは、クラスタサーバフラグを参照して、クラスタサーバであるノードを判断する。
【0121】
(3)クラスタ変更処理
図3、図4は、クラスタ変更処理について説明するための図である。
【0122】
本実施では、ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行う。ここで、前記ゲーム世界が複数のエリアに分割されており、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求め、クラスタが形成される場合を例に取り説明する。
【0123】
図3は、ゲーム世界におけるプレーヤキャラクタの位置の変化を示している。ゲーム世界は、図3に示すように複数のエリアE1〜E10に分割されている。400−t1は時刻t1におけるゲーム世界におけるプレーヤキャラクタPC001〜PC009の位置分布を示している。同図に示すようにプレーヤキャラクタPC001〜PC003はエリアE1に存在し、プレーヤキャラクタPC004、PC005はエリアE2に存在し、プレーヤキャラクタPC006〜PC009はエリアE3に存在する。
【0124】
なお通信単位であるノードはプレーヤキャラクタに対応して設定されるため、PC001からPC009にそれぞれND001〜ND009が対応する。
【0125】
この様な場合、同じエリアに存在するプレーヤキャラクタに対応したノードを同じクラスタに割り当てし、クラスタリングしてもよい。
【0126】
同じエリアに存在するプレーヤキャラクタはゲーム世界で近くに位置するため、同じ画像内に登場する可能正が高い。図16は、プレーヤキャラクタPC001に対して生成されるゲーム画像の一例を示している。プレーヤキャラクタPC001に対して生成されるゲーム画像410は、プレーヤキャラクタPC001を操作するプレーヤの表示部に表示されるゲーム画像であり、プレーヤキャラクタPC001に追従する仮想カメラからゲーム空間(ゲーム世界が3次元である場合)を見た画像となる。ゲーム画像410には、図16に示すように、プレーヤキャラクタPC001に近い位置にいる(同じエリアに存在する)プレーヤキャラクタPC002、PC003の画像が生成される可能性が高い。これに対し、プレーヤキャラクタPC001から離れた(異なるエリアに存在する)プレーヤキャラクタPC004〜PC009の画像は生成される可能性が低い。すなわち同じエリアに位置するプレーヤキャラクタの情報はゲーム画像に反映される確率が高いのでタイムラグなく更新することが好ましいが、ゲーム世界で異なるエリア位置するプレーヤキャラクタの情報は、ゲーム画像に反映される確率が低いので通信遅延により反映されるのに多少のタイムラグがあっても問題とならない場合がおおい。
【0127】
図4の400−t1は、図3の400−t1の位置分布における、プレーヤキャラクタに対応するノードのネットワーク構成を示している。
【0128】
時刻t1において、ゲーム世界で同じエリアE1に属するプレーヤキャラクタPC001〜PC003に対応するノードND001〜ND003は、同じクラスタKL001にクラスタリングされている。
【0129】
また時刻t1において、ゲーム世界で同じエリアE2に属するプレーヤキャラクタPC004、PC005に対応するノードND004、ND005は、同じクラスタKL002にクラスタリングされている。
【0130】
また時刻t1において、ゲーム世界で同じエリアE3に属するプレーヤキャラクタPC006〜PC009に対応するノードND006〜ND009は、同じクラスタKL003にクラスタリングされている。
【0131】
図3の400−t2は時刻t2におけるゲーム世界におけるプレーヤキャラクタPC001〜PC009の位置分布を示している。時刻t1においてエリアE1に位置していたプレーヤキャラクタPC02は、時刻t2においてはエリアE2に位置している。また時刻t1においてエリアE3に位置していたプレーヤキャラクタPC006は、時刻t2においては、ゲームから離脱して、ゲーム世界に存在しなくなっている。従って時刻t2においては、プレーヤキャラクタPC001、PC003はエリアE1に存在し、プレーヤキャラクタPC002、PC004、PC005はエリアE2に存在し、プレーヤキャラクタPC007〜PC009はエリアE3に存在する。
【0132】
図4の400−t2は、図3の400−t2の位置分布における、プレーヤキャラクタに対応するノードのネットワーク構成を示している。
【0133】
時刻t1〜時刻t2におけるプレーヤキャラクタPC002のエリア変化に伴って、プレーヤキャラクタPC002に対応するノードND002の属するクラスタが、KL001からKL002に変化している。ノードND002は、プレーヤキャラクタPC002の属するエリアがE1からE2に変化したことを検出すると、プレーヤキャラクタPC002に対応したノードに適したクラスタはKL002であると判断する。しかしその時点でノードND002に割り当てられているクラスタはKL001であるため、クラスタKL001を離脱し、クラスタKL002に参加する処理を行う。
【0134】
離脱する際には、それまで属していたクラスタKL001に属する他のノードND001、ND002に離脱する旨の通知を送信する。離脱通知を受信したクラスタ内のノードND001,ND003は、自己の保持するクラスタ情報を更新する。すなわちKL001のクラスタ情報の構成ノード情報から、ノードND002を削除する。なおノードND002は、クラスタサーバではないので、新たなクラスタサーバを決定する処理は行われない。もし離脱通知をしたノードがクラスタサーバである場合には、当該クラスタの新たなクラスタサーバを決定する処理が行われる。
【0135】
またノードND002は、クラスタKL002のクラスタ情報に基づき、クラスタKL002のクラスタサーバがどのノードであるか判断し、クラスタサーバであるノードに参加申し込みを行う。
【0136】
図8のクラスタ情報の説明において、各ノードは、自己が属するクラスタのクラスタ情報を保持していると述べたが、各ノードは直接接続されているクラスタのクラスタ情報(隣接クラスタ情報と呼ぶ)も保持していてもよい。例えば図2においてはクラスタKL001はクラスタKL002とは直接接続されているが、クラスタKL003とは直接接続されていない。このような場合、クラスタKL001に属する各ノードND001〜ND003は、隣接クラスタ情報としてクラスタKL002のクラスタ情報を有している。
【0137】
また例えば図4の400−t1においてはクラスタKL001はクラスタKL002、KL003と直接接続されているので、このような場合、クラスタKL001に属する各ノードND001〜ND003は、隣接クラスタ情報としてクラスタKL002とクラスタKL003のクラスタ情報を有している。
【0138】
従ってノードND002は、KL002のクラスタ情報に基づき、クラスタKL002のクラスタサーバはND004であることを把握し、ノード情報(図7参照)によって、ND004のIPアドレスとポート番号を取得して、ノードND004に対して、クラスタKL002への参加申し込みを送信する。参加申し込みを受けたノードND004は、参加の許可又は不許可の判断を行う。
【0139】
例えばクラスタ内のノード数に制限を設けている場合には、当該クラスタのノード数が制限値を超えない場合には、参加を許可する。また当該クラスタのノード数が制限値を超える場合に、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理を行って分割後のいずれかのクラスタへの参加を許可してもよい。
【0140】
図4では、ノードND002のクラスタKL002への参加は許可され、クラスタKL002を構成するノードは、ND002、ND004、ND005となる。クラスタKL002のクラスタサーバであるノードND004は、自己の保持するKL002のクラスタ情報を更新するとともに、新たなノードND002の参加をクラスタ内の他のノードND005に通知する。参加通知を受信したクラスタ内ノードND005、ND002は、自己の保持するクラスタ情報を更新する。すなわちKL002のクラスタ情報の構成ノード情報に、ノードND002を追加する。
【0141】
時刻t1〜時刻t2におけるプレーヤキャラクタPC006のゲーム世界からの離脱また通信切断に伴って、プレーヤキャラクタPC006に対応するノードND006が属していたクラスタKL003の構成が変化している。例えばノードND006はゲーム世界から離脱する場合には、同じクラスタに属する他のノードND007〜ND009に離脱通知を送信するので、これを受信した同じクラスタに属する他のノードND007〜ND009は、ノードND006の離脱を把握する。また例えばノードND006の通信切断が生じた場合には、同じクラスタに属する他のノードND007〜ND009は、ノードND006との相互通信ができなくなることによりノードND006の通信切断を把握する。
【0142】
ノードND006の離脱又は通信切断を把握した同じクラスタに属する他のノードND007〜ND009は、自己が保持するクラスタ情報によりノードND006がクラスタサーバであったことを把握しているので、新たなクラスタサーバを決定する処理を行う。各ノードは同じアルゴリズム及び各ノードが保持しているノード情報とクラスタ情報に基づいて一意に新たなクラスタサーバをノードND009に決定し、各自のクラスタ情報を更新する。
【0143】
またクラスタKL003の新たなクラスタサーバとなったノードND009は、他のクラスタのクラスタサーバであるノードND001、ND004とクラスタのゲームデータの送受信を行う。
【0144】
(4)クラスタの階層構造
クラスタが多数存在する場合には、クラスタサーバ同士をクラスタリングすることで、さらに効率的な処理を行うことができる。
【0145】
図5は、クラスタの階層構造について説明する図である。
【0146】
クラスタサーバであるノードND001、ND004、ND006はクラスタリングされ上位クラスタSKL01を構成し、クラスタサーバであるノードND0010、ND013、ND015はクラスタリングされ上位クラスタSKL02を構成している。
【0147】
同じ上位クラスタSKL01に属するクラスタサーバであるノードND001,ND004、ND006は、上位クラスタSKL01内の他のノードすべてと相互接続(フルコネクト型のネットワーク構造で相互接続)されてもよい。上位クラスタ内でのノード間通信β1、β2、β3では第3の通信頻度でゲームデータのやりとりを行う。
【0148】
また他の上位クラスタSKL02のノードのゲームデータも必要なので、上位クラスタ間でもゲームデータの送受信を行う。上位クラスタ間でのデータの送受信は、上位クラスタのクラスタサーバが行ってもよい。
【0149】
図5では、上位クラスタSKL01のクラスタサーバはノードND006であり、上位クラスタSKL02のクラスタサーバはND0010となっている。
【0150】
例えば上位クラスタSKL01のゲームデータは、上位クラスタSKL01のクラスタサーバND006が、隣接上位クラスタ(直接接続されている上位クラスタ)SKL02のクラスタサーバND010に送信する。また上位クラスタSKL01のクラスタサーバND006は、隣接上位クラスタSKL02のクラスタサーバND010から上位クラスSタKL02のゲームデータを受信する。
【0151】
この様な上位クラスタ間通信γのゲームデータの送受信は、第3の通信頻度より低い第4の通信頻度で行う。このようにすることにより、上位クラスタ外の他のノードに対するタイムラグに比べて、上位クラスタ内の他のノードに対するタイムラグを小さくすることができる。
【0152】
(5)ゲームへの参加、脱退の流れ
図6、図10はゲームへの参加、脱退の流れについて説明するための図である。
【0153】
まず、ノードND−Aが所与のゲーム世界におけるゲームに参加する場合には、管理サーバ(図10の510)に問い合わせを行い(図10のb1)、管理サーバ510から所与の仮想世界でのゲームへの参加申し込みを受け付けるマスターノード(図10のND−M)の紹介を受ける。具体的には、管理サーバ510からマスターノードのIPアドレスやポート番号を受け取る。
【0154】
マスターノードの紹介を受けたノードND−Aは、マスターノードND−Mに所与の仮想世界におけるゲームへの参加申し込みを行う(図6、図10のa1)。マスターノードから参加の許可を受けると(図6、図10のa2)、ノードND−Aは、スタート地点(所属クラスタ)を決定する。例えばゲームのスタート地点(ノードND−Aのプレーヤキャラクタのスタート地点)が図3のエリアE1である場合には、所属クラスタはKL001であると判断する。所属クラスタKL001のクラスタサーバがどのノードであるかは、マスターノードにから、所属クラスタのクラスタ情報を取得して判断してもよい。
【0155】
所属クラスタのクラスタサーバ(クラスタの上流ノード)に対しクラスタ所属要求を行い(図6、図10のa3)、ノードND−Aとクラスタ内のノードND001、ND002、ND003が相互に接続が確立して(図6のa4、図10のa4−1、a4−2、a4−3)、ノードND−Aのゲームデータをクラスタ上流ノードであるクラスタサーバND001及びクラスタ下流ノードであるND002、ND003に送信し(図6のa5、a6)、クラスタ上流ノードであるクラスタサーバND001及びクラスタ下流ノードであるND002、ND003のゲームデータをノードND−Aに送信し(図6のa7,a8)、クラスタ内の情報が相互に共有できた時点で、ノードND−Aはゲームに開始できる(図6のa9)。
【0156】
ノードND−Aが、所属クラスKL001以外の情報が必要な場合には、所属クラスタのクラスタサーバであるノード(上流ノード)ND001経由で随時リクエストをおこなう(図6のa10)。そして所属クラスKL001以外の情報は、所属クラスKL001クラスタのクラスタサーバであるノード(上流ノード)ND001経由で受信する(図6のa11)。
【0157】
クラスタ下流ノード(例えばND003)が、クラスタ変更やゲームを脱退(フリーアウト)する場合には、クラスタ下流ノード(例えばND003)は、所属クラスKL001クラスタのクラスタサーバであるノード(上流ノード)ND001に脱退申し込みを行う(図6のa12)。所属クラスKL001クラスタのクラスタサーバであるノード(上流ノード)ND001は脱退を許可する場合には、クラスタ下流ノード(例えばND003)に対し、脱退許可の通知を行い(図6のa13)、クラスタの他の下流ノード(ノードND−Aを含む)に脱退通知を送る(図6のa14)とともに、マスターノードにも脱退通知を送る(図6のa15)。
【0158】
3.本実施の形態の処理
図11は、ゲーム参加時の処理の流れを示すフローチャートである。
【0159】
ゲームに参加を希望するノードは、マッチングサーバに問い合わせを行い(ステップS10)、マッチングサーバからマスターノード情報を受信する(ステップS20)
次に、マスターノードに参加申し込みを行い、合わせてテスト通信を行う(ステップS30)。マスターノードは、参加申し込みを受け付けたノードのノード情報を作成する。このときテスト通信においてノードのラウンドトリップタイム(RTT)を取得し、当該ノードのノード情報の通信状態情報として記憶させる。
【0160】
ゲームに参加を希望するノードは、マスターノードから参加許可通知及びクラスタ割り当て情報を受信すると(ステップS40)、クラスタ割り当て情報に基づき、割り当てられたクラスタのクラスタサーバにクラスタ所属申し込みを行う(ステップS50)。なおクラスタ割り当ては、ノードのプレーヤキャラクタのスタート地点基づき行われる。クラスタ割り当ては、ゲームに参加を希望するノードが行ってもよいし、マスターノードが行ってもよいが、割り当てられたクラスタのクラスタサーバを特定するための情報が必要となる。なお割り当てられたクラスタのクラスタサーバを特定するための情報は、例えばクラスタサーバの一覧を管理するテーブルとして、前ノードが保有するようにしてもよい。マスターノードは、全クラスタのクラスタ情報を保持しているので、マスターノードから、割り当てられたクラスタのクラスタサーバのノードを特定する情報やクラスタサーバの一覧を管理するテーブル(例えば図7のノードID210)を受け取ってもよい。
【0161】
そしてクラスタサーバからクラスタ情報を受け取り、クタスタを構成する他のノードと相互にコネクション確認を行う(ステップS60)。
【0162】
図12は、ノードの役割に応じた通信制御の処理の流れを示すフローチャートである。
【0163】
ノードは、第1の通信頻度でクラスタ内の他のノードと相互にゲームデータの送受信を行う(ステップS110)。
【0164】
ノードが、クラスタサーバである場合には(ステップS120)、第1の通信頻度より低い第2の通信頻度で、隣接クラスタ情報に定義されている隣接クラスタのクラスタサーバと相互にゲームデータの送受信を行う(ステップS130)。
【0165】
図13は、クラスタ変更処理(クラスタを変更するノードの処理)の流れを示すフローチャートである。
【0166】
プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算する(ステップS210)。
【0167】
プレーヤキャラクタのゲーム評価値が所定以上変化した場合には(ステップS220)、プレーヤキャラクタのゲーム評価値に基づき、プレーヤキャラクタに対応したノードに適したクラスタを求める(ステップS230)。
【0168】
そして、適したクラスタが現在属しているクラスタと異なる場合には(ステップS240)、現在のクラスタを離脱して、適したクラスタに参加する (ステップS250)。
【0169】
図14は、クラスタ内の他のノードがクラスタを離脱する場合の処理の流れを示すフローチャートである。
【0170】
同じクラスタの他のノードからクラスタ離脱通知ある場合には、以下の処理を行う(ステップS310)。
【0171】
離脱するのはクラスタサーバである場合には(ステップS320)、所属クラスタを構成するノードのノード情報(通信状態情報)に基づき、所属するクラスタの次のクラスタサーバを判断する(ステップS330)。自己が次のクラスタサーバである場合(ステップS340)には、クラスタ情報の変更を隣接クラスタ情報に定義されている隣接クラスタのクラスタサーバに通知する(ステップS350)。
【0172】
図15は、クラスタ分割処理の流れを示すフローチャートである。
【0173】
所与のノードからクラスタ参加申し込みがあると(ステップS410)、以下の処理を行う。
【0174】
所与のノードのクラスタ参加によりクラスタのノード数が制限値を超える場合には(ステップS420でY)、クラスタを構成するノードを制限値を超えない数のノードで構成された複数のクラスタに分割する(ステップS430)。所与のノードのクラスタ参加によりクラスタのノード数が制限値を超えない場合には(ステップS420でN)、所与のノードをクラスタの構成員とする(ステップS440)。
【0175】
自己が属するクタスタを構成する他のノードと相互にコネクション確認を行う(ステップS45)。
【0176】
自己がクラスタサーバである場合には(ステップS460)、クラスタ情報の変更を隣接クラスタ情報に定義されている隣接クラスタのクラスタサーバに通知する(ステップS470)。
【0177】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。
【0178】
キャラクタ同士が通信遅延の影響が高いと判断される状況にある場合には当該キャラクタ同士は同じグループにグループ化され、キャラクタ同士が通信遅延の影響が低い判断される状況にある場合には当該キャラクタ同士は異なるグループにグループ化される構成であれば本発明の範囲内である。キャラクタ同士が通信遅延の影響が高いと判断される状況にある場合とは、例えばゲーム空間内におけるキャラクタの位置が近いことや同じエリアにいる場合でもよい。またキャラクタの能力(手足が伸びる能力があるなど)や、装備しているアイテム(狙撃銃など)に応じて、グループを変更してもよい。すなわち手足が伸びるキャラクタや狙撃銃など遠方の的に対しても攻撃可能なキャラクタに対しては、ゲーム空間内の距離が多少離れていても通信遅延の影響が高いと判断してもよい。
【0179】
また本発明は、業務用ゲームシステム、家庭用ゲームシステム、携帯型ゲームシステム、ゲーム画像を生成するシステムボード等の種々のゲームシステムに適用できる。
【符号の説明】
【0180】
100 処理部、110 ゲーム演算部、111 オブジェクト空間設定部、112 仮想カメラ制御部、113 移動・動作演算部、115 ゲーム評価値演算部、120 通信制御部、130 描画部、140 音処理部 160 操作部、180 情報記憶媒体、190 表示部、170 記憶部、172 主記憶部、192 音出力部、196 通信部
【特許請求の範囲】
【請求項1】
ネットワークを介して他のノードとゲームデータの送受信を行うゲーム機のためのプログラムであって、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、
してコンピュータを機能させ、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うプログラム。
【請求項2】
請求項1において、
前記通信制御手段は、
グループを構成するノードをクラスタリングするクラスタリング処理手段と、
同じクラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせるクラスタ内通信制御処理手段と、
クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、クラスタの代表ノードを判断するクラスタ代表判断手段と、
クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるクラスタ間通信制御処理手段と、を含み、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度とクラスタ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びクラスタ内のノード間のネットワーク接続とクラスタ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うプログラム。
【請求項3】
請求項1乃至2において、
前記通信制御手段は、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度を、クラスタ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びクラスタ内のノード間のネットワーク接続をクラスタ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行うプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータ(位置データ等)の少なくとも一方には、プレーヤキャラクタの位置に関する情報を含み、
前記ゲーム評価値演算手段は、
プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算するプログラム。
【請求項5】
請求項2又は2に従属する3又は4において、
前記クラスタリング処理手段は、
ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行うプログラム。
【請求項6】
請求項2又は2に従属する3乃至5のいずれかにおいて、
前記クラスタ間通信制御処理手段は、
クラスタの代表に、所属クラスタに直接接続されているクラスタの情報を定義した隣接クラスタ情報に基づき、隣接クラスタとして定義されているクラスタの代表ノードとネットワークを介して接続してクラスタ間通信を行わせるプログラム。
【請求項7】
請求項2又は2に従属する3乃至6のいずれかにおいて、
前記通信制御手段は、
マスターノード以外のノードに、マスターノードのノード情報を受け取り、マスターノードとテスト通信を行わせるテスト通信処理手段と、
マスターノードに、テスト通信の結果に基づきテスト通信を行ったノードの通信状態情報を当該ノードに関連づけてノード情報として保持させ、保持しているノード情報を他のノードに送信させる処理をおこなうノード情報管理処理手段として機能するプログラム。
【請求項8】
請求項2又は2に従属する3乃至7のいずれかにおいて、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超えない範囲で、ノードをクラスタリングする処理を行うプログラム。
【請求項9】
請求項2又は2に従属する3乃至8のいずれかにおいて、
請求項1乃至6のいずれかにおいて、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超える場合には、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理をおこなうプログラム。
【請求項10】
請求項2又は2に従属する3乃至9のいずれかにおいて、
前記クラスタ内通信制御処理手段は、
同じクラスタに属するノードと間をフルコネクト型のネットワーク構造で相互接続してクラスタ内通信を行うログラム。
【請求項11】
請求項2又は2に従属する3乃至10のいずれかにおいて、
前記クラスタリング処理手段は、
クラスタ代表である複数のノードを上位クラスタとしてクラスタリングする処理を行い、
前記クラスタ内通信制御処理手段は、
同じ上位クラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせ、
前記クラスタ代表判断手段は、
上位クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、上位クラスタの代表ノードを判断し、
前記クラスタ間通信制御処理手段は、
上位クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるプログラム。
【請求項12】
請求項1乃至11のいずれかにおいて、
前記ゲーム世界は、複数のエリアに分割されており、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、プレーヤキャラクタが属するエリア情報を含み、
前記ゲーム評価値演算手段は、
前記エリア情報に基づき、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求めるプログラム。
【請求項13】
請求項1乃至12のいずれかにおいて、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、仮想カメラの配置に関する仮想カメラ情報を含み、
前記ゲーム評価値演算手段は、
前記仮想カメラ情報に基づき、プレーヤキャラクタに対応したゲーム評価値を求めるプログラム。
【請求項14】
請求項1乃至13のいずれかに記載のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体。
【請求項15】
ネットワークを介して他のノードとゲームデータの送受信を行い、ゲーム情報を生成するゲーム情報生成装置において、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、を含み、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うゲーム情報生成装置。
【請求項1】
ネットワークを介して他のノードとゲームデータの送受信を行うゲーム機のためのプログラムであって、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、
してコンピュータを機能させ、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うプログラム。
【請求項2】
請求項1において、
前記通信制御手段は、
グループを構成するノードをクラスタリングするクラスタリング処理手段と、
同じクラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせるクラスタ内通信制御処理手段と、
クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、クラスタの代表ノードを判断するクラスタ代表判断手段と、
クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるクラスタ間通信制御処理手段と、を含み、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度とクラスタ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びクラスタ内のノード間のネットワーク接続とクラスタ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うプログラム。
【請求項3】
請求項1乃至2において、
前記通信制御手段は、
クラスタ内のノード間でゲームデータの送受信を行う通信頻度を、クラスタ外のノード間でゲームデータの送受信を行う通信頻度よりも高くする通信頻度制御、及びクラスタ内のノード間のネットワーク接続をクラスタ外のノード間のネットワーク接続よりも密にするネットワーク接続制御の少なくとも一方を行うプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータ(位置データ等)の少なくとも一方には、プレーヤキャラクタの位置に関する情報を含み、
前記ゲーム評価値演算手段は、
プレーヤキャラクタの位置に関する情報に基づき、プレーヤキャラクタのゲーム評価値を演算するプログラム。
【請求項5】
請求項2又は2に従属する3又は4において、
前記クラスタリング処理手段は、
ゲーム評価値の変化により、ノードに適したクラスタが、当該ノードに割り当てられているクラスタと異なるクラスタに変化した場合には、当該ノードに割り当てるクラスタを変更するクラスタ変更処理を行うプログラム。
【請求項6】
請求項2又は2に従属する3乃至5のいずれかにおいて、
前記クラスタ間通信制御処理手段は、
クラスタの代表に、所属クラスタに直接接続されているクラスタの情報を定義した隣接クラスタ情報に基づき、隣接クラスタとして定義されているクラスタの代表ノードとネットワークを介して接続してクラスタ間通信を行わせるプログラム。
【請求項7】
請求項2又は2に従属する3乃至6のいずれかにおいて、
前記通信制御手段は、
マスターノード以外のノードに、マスターノードのノード情報を受け取り、マスターノードとテスト通信を行わせるテスト通信処理手段と、
マスターノードに、テスト通信の結果に基づきテスト通信を行ったノードの通信状態情報を当該ノードに関連づけてノード情報として保持させ、保持しているノード情報を他のノードに送信させる処理をおこなうノード情報管理処理手段として機能するプログラム。
【請求項8】
請求項2又は2に従属する3乃至7のいずれかにおいて、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超えない範囲で、ノードをクラスタリングする処理を行うプログラム。
【請求項9】
請求項2又は2に従属する3乃至8のいずれかにおいて、
請求項1乃至6のいずれかにおいて、
前記クラスタリング処理手段は、
クラスタ内のノード数に制限を設け、当該クラスタのノード数が制限値を超える場合には、当該クラスタを制限値を超えない数のノードで構成された複数のクラスタに分割する処理をおこなうプログラム。
【請求項10】
請求項2又は2に従属する3乃至9のいずれかにおいて、
前記クラスタ内通信制御処理手段は、
同じクラスタに属するノードと間をフルコネクト型のネットワーク構造で相互接続してクラスタ内通信を行うログラム。
【請求項11】
請求項2又は2に従属する3乃至10のいずれかにおいて、
前記クラスタリング処理手段は、
クラスタ代表である複数のノードを上位クラスタとしてクラスタリングする処理を行い、
前記クラスタ内通信制御処理手段は、
同じ上位クラスタに属するノード間でネットワークを構成して、ネットワークを介してゲームデータの送受信を行わせ、
前記クラスタ代表判断手段は、
上位クラスタに属するノードの通信状態に関する情報及び所定の規則の少なくとも一方に基づき、上位クラスタの代表ノードを判断し、
前記クラスタ間通信制御処理手段は、
上位クラスタの代表ノード間でネットワークを構成して、ゲームデータの送受信を行わせるプログラム。
【請求項12】
請求項1乃至11のいずれかにおいて、
前記ゲーム世界は、複数のエリアに分割されており、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、プレーヤキャラクタが属するエリア情報を含み、
前記ゲーム評価値演算手段は、
前記エリア情報に基づき、プレーヤキャラクタの属するエリアに対応したゲーム評価値を求めるプログラム。
【請求項13】
請求項1乃至12のいずれかにおいて、
前記ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方には、仮想カメラの配置に関する仮想カメラ情報を含み、
前記ゲーム評価値演算手段は、
前記仮想カメラ情報に基づき、プレーヤキャラクタに対応したゲーム評価値を求めるプログラム。
【請求項14】
請求項1乃至13のいずれかに記載のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体。
【請求項15】
ネットワークを介して他のノードとゲームデータの送受信を行い、ゲーム情報を生成するゲーム情報生成装置において、
ノード間でネットワークを構成して、ネットワークを介してノード間でゲームデータの送受信を行う通信制御手段と、
入力情報と、他のノードから受信したゲームデータとに基づきゲーム演算を行うゲーム演算手段と、
ゲーム演算結果に基づき、ゲーム世界のゲーム画像を生成する画像生成手段と、を含み、
前記ゲーム演算手段は、
ゲーム状況及びプレーヤキャラクタのゲームパラメータの少なくとも一方に基づき、グループ決定用のゲーム評価値を演算するゲーム評価値演算手段を含み、
前記通信制御手段は、
グループ決定用のゲーム評価値に基づきノードをグループ化し、グループ内のノード間でゲームデータの送受信を行う通信頻度とグループ外のノード間でゲームデータの送受信を行う通信頻度の度合いを異なるように制御する通信頻度制御、及びグループ内のノード間のネットワーク接続とグループ外のノード間のネットワーク接続の疎密の度合いを異なるように制御するネットワーク接続制御の少なくとも一方を行うゲーム情報生成装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2012−213427(P2012−213427A)
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願番号】特願2011−79069(P2011−79069)
【出願日】平成23年3月31日(2011.3.31)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願日】平成23年3月31日(2011.3.31)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】
[ Back to top ]