(58)【調査した分野】(Int.Cl.,DB名)
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムであって、
前記複数の機器と通信可能な当該複数の機器と異なるリレー用装置を備え、
前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第1の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段を備える第1の機器を前記複数の機器に含み、
前記複数の機器は、前記選択手段により選択された通信経路によって通信を行い、
前記選択手段は、前記複数の機器を用いた通信経路を前記第1の制限に従って確立できない場合に、前記リレー用装置をリレーした通信経路を選択する、
通信システム。
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行い、前記複数の機器と通信可能な当該複数の機器と異なるリレー用装置を備えた通信システムを構成する通信機器であって、
前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第1の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段を備え、
前記選択手段は、前記複数の機器を用いた通信経路を前記第1の制限に従って確立できない場合に、前記リレー用装置をリレーした通信経路を選択する、
通信機器。
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行い、前記複数の機器と通信可能な当該複数の機器と異なるリレー用装置を備えた通信システムを構成する通信機器のコンピュータを、
前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第1の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段 として機能させるためのプログラムであって、
前記選択手段は、前記複数の機器を用いた通信経路を前記第1の制限に従って確立できない場合に、前記リレー用装置をリレーした通信経路を選択する、
プログラム。
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行い、前記複数の機器と通信可能な当該複数の機器と異なるリレー用装置を備えた通信システムにおいて、
前記複数の機器に含まれる第1の機器が、前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第1の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択し、
前記複数の機器が、前記第1の機器により選択された通信経路によって通信を行い、
前記複数の機器を用いた通信経路を前記第1の制限に従って確立できない場合、前記リレー用装置をリレーした通信経路を選択する、
通信方法。
【発明を実施するための形態】
【0018】
[第1実施例]
図1は、本発明の一実施例である通信システム10の全体構成を示すブロック図である。本実施例の通信システム10は、複数のユーザが共同でゲームをプレイするためのシステムである。通信システム10は、複数のゲーム装置100と、ネットワーク200とを有する構成である。
【0019】
ネットワーク200は、例えばインターネットであるが、移動体通信網などの他のネットワークによって構成されてもよい。また、ネットワーク200は、一定の範囲内にあるゲーム装置100(すなわち近傍のユーザ同士)を相互接続するためのネットワークであってもよいが、位置的に制限されることなく世界中のユーザを相互接続するためのネットワークであってもよい。さらに、ネットワーク200とゲーム装置100との間の通信は、有線通信と無線通信のいずれであってもよい。
【0020】
ゲーム装置100は、ユーザがゲームをプレイするためのコンピュータ装置であり、本発明に係る通信機器の一例である。ゲーム装置100は、それぞれが別々のユーザによって使用される。ゲーム装置100は、携帯型のゲーム機であってもよいし、主として屋内で使用される据置型のゲーム機であってもよい。また、ゲーム装置100は、単一の装置ではなく、複数の装置(入力装置、表示装置、本体装置など)を組み合わせて構成されたものであってもよい。なお、ゲーム装置100の数は、ここでは特に限定されないが、ユーザがプレイするゲームに応じて制限される場合がある。ただし、後述するメッシュ型のネットワークを形成するためには、ゲーム装置100の数は3以上である必要がある。
【0021】
図2は、ゲーム装置100のハードウェア構成を示すブロック図である。ゲーム装置100は、制御部110と、記憶部120と、通信部130と、表示部140と、UI(User Interface)部150とを備える。なお、ここでは図示されていないが、ゲーム装置100は、スピーカやマイクロホン(あるいはこれらと接続するインターフェース)を備えてもよい。また、ゲーム装置100のそれぞれは、本発明の実施に必要な構成を共通に備えていればよく、それ以外の部分では同一の構成や能力を必ずしも要しない。
【0022】
制御部110は、ゲーム装置100の各部の動作を制御する手段である。また、制御部110は、他のゲーム装置100とのネットワーク200を介した通信を制御する手段でもある。制御部110は、CPU(Central Processing Unit)などの演算処理装置や主記憶装置に相当するメモリを備え、プログラムを実行することによって各種制御を行う。制御部110が実行するプログラムには、他のゲーム装置100との間の通信を制御するためのアプリケーションプログラム(以下「通信制御プログラム」という。)と、ゲームを実行するためのアプリケーションプログラム(以下「ゲームプログラム」という。)とが含まれる。
【0023】
記憶部120は、データを記憶する手段である。記憶部120は、フラッシュメモリ、ハードディスクなどの補助記憶装置を備える。なお、記憶部120は、光ディスクなどの着脱可能な記憶媒体に記憶されたデータを読み出す構成を含んでもよい。ゲームプログラムは、このような着脱可能な記憶媒体に記録されたものであってもよい。記憶部120は、プログラムのほか、後述するリレー経路テーブルなどを記憶することができる。
【0024】
通信部130は、データを送受信する手段である。通信部130は、ネットワーク200に応じた方式でデータを変調及び復調する通信チップなどを備え、制御部110により供給されるゲーム装置100内部のデータを外部に送信するとともに、外部から送信されたデータを受信する。
【0025】
表示部140は、情報を表示する手段である。表示部140は、液晶素子や有機EL(electroluminescence)により構成される表示パネルとその駆動回路とを備え、制御部110により供給される画像データに応じた画像を表示する。なお、ここでいう画像は、静止画と動画のいずれであってもよい。
【0026】
UI部150は、ユーザの操作を受け付ける手段である。UI部150は、例えば、複数のキー(キーパッド)を備え、押下されたキーに応じたデータを制御部110に供給する。なお、UI部150は、表示部140の表示パネルに対応して設けられたタッチスクリーンを含んでもよく、また、マウス、キーボード、ジョイスティックなどの入力装置(又は入力装置と接続するインターフェース)を含んでもよい。あるいは、UI部150は、赤外線センサ、加速度センサ、ジャイロセンサなどによってユーザの操作(動き)を検出するものであってもよい。
【0027】
以上の構成のもと、通信システム10においては、複数のユーザが同時にプレイするゲームが実行される。このとき、それぞれのゲーム装置100は、共通のゲームプログラムを同時に実行する。通信システム10において利用可能なゲームは、特に限定されないが、例えば、ユーザ同士が対戦するものであっても、ユーザ同士が協力してプレイするものであってもよい。また、ゲームのジャンルは、ロールプレイング、アクション、レース、パズル、ボードゲームなどが考えられる。
【0028】
通信システム10においては、複数のユーザが同時にプレイするゲームが実行されるときに、複数のゲーム装置100によってメッシュ型のネットワークが形成され、データが相互に送受信される。このネットワークは、P2P(Peer to Peer)型のネットワークである。ネットワークを構成するゲーム装置100やその数は、実行されるゲームプログラムやそのときどきの状況に応じて異なり得る。また、このようなネットワークは、通信システム10内に1つのみ形成されるとは限らず、複数形成されてもよい。
【0029】
図3は、本実施例のメッシュ型ネットワークのネットワーク・トポロジの一例を示す図である。ここでは、5台のゲーム装置100によってネットワークが形成される場合が例示されている。なお、以下においては、メッシュ型ネットワークのノードに相当するゲーム装置100のことを「ステーション」といい、個々のステーションをID(ステーションID)によって識別するものとする。
図3の例では、ステーションIDが「1」〜「5」の5台のステーションがネットワークを構成している。以下においては、ステーションIDが「n」のステーションのことを「ステーションn」と表記する。
【0030】
各ステーションは、1又は複数の他のステーションとの間で経路(リンク)を有する。例えば、
図3のステーション1は、ステーション2〜5のいずれとの間にもリンクを有している。この場合、ステーション1は、ステーション2〜5のそれぞれと直接に(すなわち他のステーションを経由することなく)通信を行うことが可能である。以下においては、他のステーションを経由することなく行われる通信のことを「直接接続」という。
【0031】
一方、例えばステーション2をみると、ステーション1、4、5との間には直接の経路があるものの、ステーション3との間には直接の経路を有しない。ステーション2は、このような場合においてステーション3と通信を行うときには、他のステーションを経由してデータを送受信する。このように、通信に際して他のステーションを中継することを、以下においては「リレー」という。また、以下においては、リレーを行うステーションのことを「リレーステーション」といい、リレーステーションを介して行われる通信のことを「リレー接続」という。リレー接続による通信経路は、複数のリンクによって構成されている。一方、直接接続による通信経路は、単一のリンクによって構成されている。
【0032】
図3に示すように、2つのステーション間の通信経路は、複数考えられる。このような場合、上りの通信経路と下りの通信経路は、必ずしも同一でなくてもよい。例えば、ステーション1とステーション3の間で通信を行うための通信経路は、下り(1から3)においては直接接続である一方、上り(3から1)においてはステーション4をリレーステーションとしたリレー接続であってもよい。
【0033】
このようなメッシュ型ネットワークは、複数のユーザが同時にプレイするゲームが通信システム10において実行されるときに形成される。このようにして形成されるネットワーク(及び当該ネットワークを構成するステーション群)のことを、以下においては「セッション」という。セッションは、ゲームの実行に応じて形成され、所定のタイミング(ゲーム終了時など)で解消される。通信システム10においては、セッションの形成及び解消が随時行われる。
【0034】
セッションは、通信システム10内のいずれかのゲーム装置100のユーザが所定の操作を行うことで開始される。このユーザは、例えば、(複数のユーザとプレイ可能な)あるゲームをプレイしているときに、対戦者や協力者を募集したり、特定のユーザに当該ゲームへの参加を申し込んだりすることができる。セッションは、このユーザのステーションを起点として形成される。このようなステーションのことを、以下においては「マスタ」という。マスタは、本発明に係る「第1の機器」に相当する。なお、本実施例においては、どのステーションもマスタになり得るものとする。すなわち、マスタは、特定のステーションに限定されない。また、以下においては、セッションを構成するステーションのうちのマスタ以外のものを「クライアント」という。
【0035】
マスタになったステーションは、セッションに参加する他のステーションと通信を行い、それぞれのステーション間の通信に用いる通信経路を1又は複数の候補の中から選択する。マスタは、通信経路を決定したら、これを経路情報として記録する。経路情報は、ステーションの通信経路に関する情報である。マスタは、セッションに参加する全てのステーションについて経路情報を生成したら、選択された通信経路を記述したデータをセッション内の各ステーションに配布する。このようにして配布されるデータのことを、以下においては「リレー経路テーブル」という。リレー経路テーブルは、経路情報を含んで構成されるデータであり、セッション内での通信に用いられる通信経路を示すデータである。なお、このデータは、ここでは説明の便宜上テーブル形式としているが、必ずしもテーブル形式で配布されなくてもよい。
【0036】
図4は、リレー経路テーブルの一例を示す図である。
図4に示すリレー経路テーブルは、
図3に示した構成のセッションが形成された場合のテーブルを例示したものである。このリレー経路テーブルは、データの送信元となるステーション(又はリレーステーション)と、そのステーションが通信の相手先とするステーションとの間で通信を行う場合に、送信元のステーション(又はリレーステーション)がデータを送信すべきステーションのステーションIDを記述したものである。つまり、リレー経路テーブルに記述されたステーションIDは、あるステーションがある相手先のステーション宛てのデータを送信する場合に次の送信先となるステーションを示している。
【0037】
例えば、ステーション1(第1行)がデータの送信元である場合、相手先のステーションがステーション2であるとすると、リレー経路テーブルに記述されたステーションIDは「2」であるから、ステーション1は「ステーション2」にデータを送信する。すなわち、この場合、ステーション1とステーション2の間の通信は、直接接続である。同様に、ステーション1がデータの送信元である場合には、相手先のステーションがステーション3〜5のいずれであっても、通信は直接接続によって行われる。
【0038】
一方、ステーション2(第2行)がデータの送信元である場合において、相手先のステーションがステーション3であるときのリレー経路テーブルの値は、「4」である。すなわち、この場合ステーション2は、ステーション3宛てのデータを「ステーション4」に送信する。この場合、ステーション4は、リレーステーションとなる。したがって、ステーション2とステーション3の間の通信は、リレー接続である。
【0039】
ここで、再びリレー経路テーブルを参照すると、リレー経路テーブルには、ステーション3宛てのデータを受信したステーション4に対しては、次の送信先として「ステーション3」のステーションIDが記述されている。よって、このリレー経路テーブルに従うと、ステーション2からステーション3にデータを送信する場合には、ステーション2からステーション4にデータが送信された後、リレーステーションであるステーション4によってステーション3に当該データが転送される。
【0040】
なお、
図4に例示したリレー経路テーブルは、リレー経路テーブルを生成する途中の過程のものである。リレー経路テーブルを作成する過程において、セッション内には、何らかの理由(双方のルータの組み合わせなど)によって通信経路が確立できないステーションの組み合わせが存在する場合がある。
図4においては、このようなステーションに対応するリレー経路テーブルの値として「×」が記述されている。このようなステーション、すなわち
図4の例におけるステーション5のようなステーションは、新たなステーションの参加によって通信経路を確立することができるようになる場合があるが、通信経路が確立できないステーションの組み合わせが最後まで残る場合には、そのセッションには参加できなくなる。したがって、実際の最終的なリレー経路テーブルには、ここでいう「×」のような値は書き込まれておらず、このようなステーションはセッションから除外されることとなる。
【0041】
マスタは、セッション内の通信が円滑に行われるように、所定の制限に従ってリレー経路テーブルを生成する。ここでいう制限とは、具体的には、リレー数に関する制限、RTTに関する制限、ステーション当たりのデータ量に関する制限などである。セッションの形成に際してどのような制限を設けるかは、実行中のゲームに応じて(すなわち実行中のアプリケーションに応じて)決められてもよいし、セッションに参加するステーションの総数などに応じて決められてもよい。
【0042】
ここにおいて、リレー数とは、リレーステーションがリレー可能な通信経路の数をいう。例えば、
図4の例において、ステーション4のリレー数は「2」である。なぜならば、ステーション4は、ステーション2からステーション3への通信経路とステーション3からステーション2への通信経路の2つの通信経路においてリレーステーションとして機能するからである。この例からも明らかなように、本実施例においては、上りの通信経路と下りの通信経路が経路としては同一であったとしても、リレー数としては別個に数えるものとする。以下においては、リレー数に関する制限のことを「リレー数制限」という。本実施例のリレー数制限は、本発明の「第1の制限」の一例に相当する。リレー数制限とは、例えば、リレー数をその最大値によって制限するものである。なお、ここでいうリレー数が意味するものは、いわゆるホップ数(データが送信元のステーションから相手先のステーションに到達するまでに経由するリレーステーションの数)の意味と実質的に同一である(ただし、具体的な数値はホップ数+1である。)。
【0043】
次に、RTTとは、送信元のステーションと相手先のステーションの間で信号を発してから応答するまでに要する時間をいう。本実施例のRTTは、送信元のステーションと相手先のステーションの間にリレーステーションが存在する場合には、各ステーション間のRTTの合計値とする。以下においては、RTTに関する制限のことを「RTT制限」という。本実施例のRTT制限は、本発明の「第2の制限」の一例に相当する。RTT制限とは、例えば、RTTをその最大値によって制限するものである。
【0044】
図5は、ゲーム装置100の機能的構成を示すブロック図である。ゲーム装置100は、選択手段111、生成手段112、配布手段113、更新手段114、データ処理手段115及び実行手段116に相当する機能を実現する。これらの機能は、ゲーム装置100の制御部110が所定のプログラムを実行することによってソフトウェア的に実現されるものである。
【0045】
選択手段111は、送信元のステーションから相手先のステーションまでの通信経路を選択する手段である。選択手段111は、通信経路の候補が複数ある場合には、リレー数制限などの所定の制限に基づいて一の適当な通信経路を選択する。選択手段111は、セッション内において考え得る全てのステーションの組み合わせについて通信経路の選択を行う。具体的には、選択手段111は、後述する経路判定処理を実行することによって各ステーション間の通信経路を選択する。
【0046】
生成手段112は、経路情報の集合であるリレー経路テーブルを生成する手段である。生成手段112は、選択手段111による選択結果に基づいてリレー経路テーブルを生成する。また、配布手段113は、生成手段112により生成されたリレー経路テーブルを他のステーションに配布する手段である。
【0047】
更新手段114は、リレー経路テーブルを更新する手段である。更新手段114は、リレー経路テーブルを所定のタイミングで更新する。更新手段114は、リレー経路テーブルを更新するタイミングにおいて、選択手段111に通信経路を再度選択させ、生成手段112にリレー経路テーブルを更新させる。なお、リレー経路テーブルを更新するタイミングは、例えば、セッションにステーションが新たに参加したタイミング、ステーションがセッションから離脱したタイミング、ネットワーク上に何らかの不具合が発生したタイミングのほか、実行しているゲームに応じたタイミング(ステーション間の通信が行われないか、比較的データ量が少ないタイミング、ある場面から別の場面に切り替わるタイミングなど)であってもよい。
【0048】
データ処理手段115は、セッション内で送受信されるデータを処理する手段である。データ処理手段115は、ステーション間のデータの送信、受信及び転送を制御する。また、データ処理手段115は、自機からデータを送信する場合には、相手先の機器を指定するアドレス情報を設定する。
【0049】
図6は、本実施例のアドレス情報を例示する図である。本実施例のアドレス情報は、データの宛先をビットの値によって示す32ビットのビット列であり、各ビットがステーションIDに対応している。つまり、アドレス情報のnビット目が「1」であれば、ステーションIDが「n」のステーションが相手先のステーションとして指定されていることを表している。また、このアドレス情報は、宛先として複数のステーションIDを指定することが可能である。なお、ここでは、アドレス情報のビット数が同一のセッションとして許容するステーションの数に一致している。つまり、
図6の例では、最大で32台のステーションが同一のセッションに参加できるということである。
【0050】
データ処理手段115は、このようなアドレス情報を用いることにより、複数の宛先に同一のデータを送信する場合のデータ量を減らすことが可能であり、消費する通信帯域を削減することが可能である。例えば、あるリレーステーションに対して当該リレーステーション宛てのデータと転送先(相手先)のステーション宛てのデータとを送信する場合、本実施例のアドレス情報を用いると、個別のデータを用意する必要がなく、単一のデータを一括して送信することが可能である。
【0051】
また、データ処理手段115は、他のステーションからデータを受信した場合には、アドレス情報を参照し、アドレス情報に応じた処理を実行する。例えば、データ処理手段115は、アドレス情報に自機が指定されていれば、受信したデータを自機宛てのデータとして処理する一方、アドレス情報に自機以外のステーションが指定されていれば、受信したデータを当該ステーションに転送する。また、データ処理手段115は、アドレス情報に自機と自機以外のステーションの双方が含まれている場合には、アドレス情報から自機の指定を除外した上でデータを転送する。データ処理手段115は、リレー経路テーブルを参照し、リレー経路テーブルの記述に従ってデータを送信する。
【0052】
実行手段116は、アプリケーションを実行する手段である。ここでいうアプリケーションは、本実施例においてはゲームである。実行手段116は、複数のゲームを実行可能であり、実行可能なゲームのいずれかを選択的に実行する。実行手段116は、ゲームプログラムに従ってゲームを実行するほか、同じゲームを実行しているステーションから受信したデータに応じた処理を実行したり、同じゲームを実行しているステーションに送信するデータを生成したりすることが可能である。
【0053】
なお、
図5に示す構成のうち、選択手段111、生成手段112、配布手段113及び更新手段114は、自機がマスタである場合に機能するものである。一方、データ処理手段115及び実行手段116は、自機がマスタとクライアントのいずれであっても機能するものである。
【0054】
本実施例において、マスタは、セッション中に1台のみ存在する。マスタとなるステーションは、例えば、セッションに最初に参加したステーションである。また、マスタが途中でセッションから離脱する場合などには、マスタとして機能するステーションが途中で交代してもよい。マスタが交代する場合には、例えば、直接接続が可能なステーションの数が最も多いステーションや、各ステーションとのRTTの平均値が最も小さいステーションが次のマスタになるとよい。
【0055】
マスタは、セッションに参加したステーションに対して、リレー経路テーブルを配布する。このとき、マスタは、リレー経路テーブルを生成(又は更新)するために、RTTの計測及び通知を要求する。このときマスタとクライアントの間で実行される処理は、以下のとおりである。
【0056】
図7及び
図8は、リレー経路テーブルを配布するときのマスタ及びクライアントの動作を示すシーケンスチャートである。
図7は、2台のクライアント(以下、「クライアントC1」、「クライアントC2」とそれぞれ表記する。)がマスタ(以下「マスタM」と表記する。)に順番に接続してセッションに参加する場合の動作を示している。
【0057】
まず、クライアントC1は、マスタMへの接続に成功すると(ステップSa1)、マスタMとの間のRTTを計測し、その値をマスタMに送信する(ステップSa2)。
図7において、「RTT(a,b)」とは、「a」が計測した「a」と「b」のRTTを意味する。すなわち、ステップSa2において送信される「RTT(C1,M)」は、クライアントC1が計測したクライアントC1とマスタMのRTTである。
【0058】
マスタMは、クライアントC1からRTTを受信すると、リレー経路テーブル(relay route table)をクライアントC1に送信する(ステップSa3)。
図7において、「RRT(a,b)」とは、「a」及び「b」の経路情報を含むリレー経路テーブルを意味する。すなわち、ステップSa3において送信される「RRT(M,C1)」は、マスタMとクライアントC1の経路情報を含むリレー経路テーブルである。
【0059】
なお、この時点では、セッションに参加しているステーションはマスタMとクライアントC1のみである。したがって、この時点でのリレー経路テーブルは、マスタMとクライアントC1の直接接続のみを示したものである。
【0060】
ここで、クライアントC2が新たにセッションに参加するとする。つまり、クライアントC2は、ここでマスタMとの接続に成功する(ステップSa4)。また、クライアントC2は、クライアントC1とも接続を試み、ここではこれが成功したものとする(ステップSa5)。そうすると、クライアントC1は、クライアントC2とのRTTと、マスタMとのその時点での最新のRTTとをマスタMに送信する(ステップSa6)。このとき、クライアントC1は、マスタMとのRTTを定期的に計測し、その時点で計測されている最新のRTTを送信してもよいが、クライアントC2の接続を契機としてマスタMとのRTTの計測を行い、このとき計測されたRTTを送信してもよい。また、クライアントC2は、マスタMとのRTTとクライアントC1とのRTTとをそれぞれ計測し、これをマスタMに送信する(ステップSa7)。
【0061】
このように、クライアントは、新たなステーションがセッションに参加する毎に、セッション内の他のステーション(マスタを含む。)のそれぞれと接続を試み、接続に成功したらRTTを計測する。また、クライアントは、計測したRTTをマスタに送信する。このようにすることで、マスタは、新しいRTTの値を逐次受信することが可能であり、RTTを受信済みの通信経路のRTTの値を更新しない場合に比べ、最新のネットワークの状況に即したリレー経路テーブルを生成できるようになる。
【0062】
マスタMは、セッション内の各クライアント(この場合、クライアントC1及びC2)からRTTを受信すると、受信したRTTに基づいてリレー経路テーブルを更新し、クライアントC1、C2にそれぞれ送信する(ステップSa8、Sa9)。このとき、マスタMは、クライアントC2に関する経路情報をリレー経路テーブルに新たに追加する。また、マスタMは、クライアントC1に関する経路情報を適宜更新する。
【0063】
一方、
図8は、クライアント同士の直接接続に失敗した場合の動作を示している。
図8に示すシーケンスチャートは、ステップSb1〜Sb4の動作が上述したステップSa1〜Sa4の動作と同様である。したがって、ここでは、これらのステップの説明を省略する。
【0064】
ステップSb5において、クライアントC2は、クライアントC1との接続に失敗したものとする。そうすると、クライアントC1及びC2は、互いの間のRTTとして「0」を送信する(ステップSb6、Sb7)。ここにおいて、RTTの値が「0」であることは、ステーション間の接続ができなかったこと、すなわちRTTが計測不能だったことを示す。なお、このときのRTTの値は、RTTが計測不能であることを示す所定の値であれば、どのような値であってもよい。
【0065】
マスタMは、各クライアントからRTTを受信すると、リレー経路テーブルを更新して各クライアントに送信する(ステップSb8、Sb9)。このとき、マスタMは、受信したRTTに基づいて、クライアントC1及びC2が直接接続できないことを認識する。具体的には、マスタMは、RTTの値が所定の値(ここでは「0」)であると、そのステーション間の通信経路が利用不可能であると認識する。そうすると、マスタMは、利用できない通信経路以外の通信経路を選択する。
図8の例の場合、マスタMは、自機をリレーステーションとして用いて、クライアントC1からマスタMをリレーしてクライアントC2に至る通信経路(及びその逆方向の通信経路)を選択し、これを経路情報に記述する。
【0066】
なお、説明の便宜上、ここでは2台のクライアントについてのみ説明したが、3台目以降のクライアントがマスタに接続する場合においても、同様の要領で処理が実行される。すなわち、クライアントは、セッション内の他のステーション(マスタ及びクライアント)と接続を試みてRTTを計測し、マスタからリレー経路テーブルを受信する。また、マスタは、RTTを受信する毎にリレー経路テーブルを更新する。
【0067】
マスタは、このような動作を繰り返すことにより、リレー経路テーブルを逐次更新する。なお、
図7、8の説明は、概要的なものであって、実際の処理を全て含むものではない。実際のセッションにおいては、より多くのクライアントが接続される場合もあり、また、セッションの途中でのクライアントの参加や離脱も生じ得る。マスタは、セッションの構成が変化したタイミングなどで以下に示す経路判定処理を実行することによって、各クライアントについて適当な通信経路を随時選択することができる。
【0068】
図9〜12は、経路判定処理の一例を示すフローチャートである。経路判定処理は、マスタであるゲーム装置100の制御部110が、通信制御プログラムを実行することによって実現される処理である。また、ここに例示する経路判定処理は、所定のリレー数制限及びRTT制限に従って通信経路を選択する場合のものである。
【0069】
図9に示すように、制御部110は、まず、各ステーション間のRTTを全て取得する(ステップSc1)。制御部110は、マスタと各ステーションの間のRTTだけでなく、ステーション同士の間のRTTも取得する。制御部110が取得するRTTには、実際の時間を示す有意な値のほか、RTTが計測不能であることを示す所定の値(ここでは「0」)が含まれる。次に、制御部110は、取得したRTTなどに基づいて、各ステーションを「新規ステーション」、「継続ステーション」、「離脱ステーション」のいずれかに分類する(ステップSc2)。
【0070】
ここにおいて、新規ステーションとは、新たにセッションに参加することになったステーションをいう。すなわち、新規ステーションは、それまでセッションに参加しておらず、経路情報が生成されていないステーションである。制御部110は、例えば、前回実行した経路判定処理において得られた情報(RTTなど)に基づいて、ステーションが新規ステーションであるか否かを判断する。例えば、前回の経路判定処理ではRTTが取得されず、今回の経路判定処理でRTTが取得されたステーションは、新規ステーションに該当する。
【0071】
また、継続ステーションとは、セッションに継続して参加するステーションをいう。例えば、RTTが前回と今回のいずれの経路判定処理においても取得されているステーションは、継続ステーションに該当する。
【0072】
また、離脱ステーションとは、セッションから離脱したステーションをいう。例えば、前回の経路判定処理ではRTTが取得され、今回の経路判定処理でRTTが取得されなかたステーションは、離脱ステーションに該当する。
【0073】
各ステーションを分類したら、制御部110は、離脱ステーションに関連する既存の経路情報を更新する(ステップSc3)。制御部110は、離脱ステーションが送信元又は相手先となっている通信経路を「接続不可」であるとする。ここにおいて、「接続不可」とは、通信経路が確立できないことを意味する。また、制御部110は、離脱ステーションがリレーステーションとなっている経路を「切断経路」であるとする。
【0074】
次に、制御部110は、継続ステーションに関連する既存の経路情報を更新する(ステップSc4)。制御部110は、各継続ステーション間の通信経路について、直接接続できなくなった経路や、リレーステーションと接続できなくなった経路があれば、これを「切断経路」であるとする。
【0075】
ここで、制御部110は、セッション内に切断経路があるか否かを判断する(ステップSc5)。換言すれば、制御部110は、ステップSc3、Sc4において切断経路であるとした通信経路が存在するか否かを判断する。制御部110は、切断経路がある場合には、以下に示す第1の探索処理を実行し(ステップSc6)、切断経路がない場合には、この第1の探索処理をスキップ(省略)する。
【0076】
図10は、第1の探索処理を示すフローチャートである。この処理において、制御部110は、個々の切断経路について、そのステーション間をリレー接続によって接続することができるステーションを探索する(ステップSd1)。このとき、制御部110は、当該ステーションと接続する経路に含まれる切断経路がより少ないステーションから順に、このステップSd1の処理を実行する。
【0077】
次に、制御部110は、ステップSd1の処理の結果、リレー接続可能なステーションが見出されたか否かを判断する(ステップSd2)。ここにおいて、「リレー接続可能」であるとは、単にリレー接続が可能な経路が存在するという意味ではなく、リレー数制限やRTT制限を満たしつつリレー接続が可能であることを意味する。したがって、制御部110は、リレー接続が可能なステーションがあったとしても、当該ステーションのリレー数が既に最大値に達していれば、当該ステーションによるリレー接続は不可能であると判断する。
【0078】
リレー接続可能なステーションがあれば、制御部110は、当該ステーションをリレーステーションとして決定し(ステップSd3)、このリレーステーションをリレーした通信経路によって、切断経路であったステーション間の通信経路を確立する。
【0079】
一方、リレー接続可能なステーションがなければ、制御部110は、切り替え可能なリレーステーションを探索する(ステップSd4)。すなわち、制御部110は、既存のリレーステーションのいずれかを切り替えることによって、切断経路であったステーション間のリレー接続が可能になるか否かを判断する。ここにおいて、リレーステーションの切り替えとは、リレー接続によって既に通信経路が確立しているステーション間のリレーステーションを切り替えることを意味する。このような切り替えを実行することにより、切断経路であったステーション間の通信経路を別の経路によって確立することができるようになる場合がある。
【0080】
図13は、リレーステーションの切り替えを説明するための図である。ここでは、一例として、ステーション1とステーション2がステーション3を介したリレー接続によって接続されている場合において、ステーション4とステーション5の間が切断経路となっている場合を想定する。なお、説明の便宜上、リレーステーションの切り替えと無関係なリンクについては、図示を省略している。また、ここにおけるリレー数制限は、リレー数の最大値を「2」とするものであるとする。さらに、この場合において、ステーション3はステーション4、5と直接接続が可能であり、ステーション6はステーション1、2と直接接続が可能であるとする。
【0081】
このとき、リレーステーションであるステーション3のリレー数は、ステーション1からステーション2に向かう経路とその逆の経路とがあるため、「2」である。したがって、ステーション3は、リレー数が最大値に達しているため、このままでは他の通信経路のリレーステーションになることができない。そうすると、ステーション4、5がステーション3と直接接続が可能であっても、ステーション4、5間をステーション3によってリレー接続することはできない。
【0082】
ここで、ステーション1、2間のリレーステーションをステーション3からステーション6に切り替えるとする。そうすると、ステーション3のリレー数は、「2」から「0」へと減少する。その結果、ステーション3は、他の通信経路のリレーステーションになることが可能になる。したがって、ステーション4、5は、ステーション3を介したリレー接続によって通信経路を確立することができるようになる。
【0083】
制御部110は、ステップSd4において、このような切り替えが可能なリレーステーションを探索し、切断経路であったステーション間の通信経路の確立を試みる。そして、制御部110は、リレーステーションの切り替えによって切断経路であったステーション間のリレー接続が可能になったか否かを判断する(ステップSd5)。制御部110は、リレー接続可能なステーションがあった場合には、当該ステーションをリレーステーションとして決定する(ステップSd3)。
【0084】
ステップSd5において、切断経路であったステーション間のリレー接続が可能にならない場合には、制御部110は、この2つのステーション(送信元及び相手先)のいずれかを「接続拒否ステーション」であるとする(ステップSd6)。例えば、制御部110は、送信元のステーションに接続する経路と相手先のステーションに接続する経路とを比較し、切断経路となっている経路の数がより多い方を接続拒否ステーションとする。
【0085】
次に、制御部110は、この接続拒否ステーションがいずれかの通信経路のリレーステーションになっているか否かを判断する(ステップSd7)。制御部110は、接続拒否ステーションがリレーステーションになっていれば、当該ステーションによってリレー接続されている通信経路に含まれるリンクをそれぞれ切断経路とする(ステップSd8)。一方、接続拒否ステーションがリレーステーションでなければ、制御部110は、ステップSd8の処理をスキップする。
【0086】
そして、制御部110は、切断経路であると判断されたそれぞれの経路についてステップSd1〜Sd8の処理を実行したか否かを判断する(ステップSd9)。制御部110は、未処理の切断経路があれば、当該経路についてステップSd1〜Sd8の処理を実行する一方、全ての切断経路について処理を実行したら第1の探索処理を終了する。
【0087】
図11は、第1の探索処理後の経路判定処理(すなわちステップSc7以降)を示すフローチャートである。ステップSc7において、制御部110は、接続拒否ステーションであると判断されたステーションを新規ステーションであるとみなす。以下においては、ステップSc2において新規ステーションに分類されたステーションとステップSc7において新規ステーションであるとみなされたステーションの集合を「新規ステーション群」という。制御部110は、新規ステーションがあるか否かを判断し(ステップSc8)、新規ステーションがある場合には、新規ステーション群に対して第2の探索処理を実行する(ステップSc9)。
【0088】
図12は、第2の探索処理を示すフローチャートである。この処理において、制御部110は、個々の新規ステーションについて、ステップSe1〜Se4の処理を順番に実行する。まず、制御部110は、ある新規ステーションについて、セッション内の各ステーションと接続可能か否かを判断する(ステップSe1)。ここでいう接続とは、直接接続とリレー接続のいずれであってもよい。また、制御部110が接続を判断するステーションは、それぞれの継続ステーションと、後述する「新規参加が決定したステーション」のそれぞれである。
【0089】
制御部110は、新規ステーションがセッション内の各ステーションと接続可能である場合には、当該新規ステーションを新規ステーション群から除外し、これを「新規参加が決定したステーション」であるとする(ステップSe2)。
【0090】
一方、新規ステーションがセッション内の少なくともいずれかのステーションと接続できない場合には、切り替え可能なリレーステーションを探索する(ステップSe3)。ステップSe3の処理は、第1の探索処理のステップSd4の処理と同様のものである。すなわち、制御部110は、既存のリレーステーションのいずれかを切り替えることによって、それまで接続不可であったステーション間のリレー接続が可能になるか否かを判断する。
【0091】
ここで、制御部110は、新規ステーションがセッション内の各ステーションと接続可能か否かを再度判断する(ステップSe4)。ステップSe4の処理は、ステップSe1の処理と同様の処理である。制御部110は、新規ステーションがセッション内の各ステーションと接続可能である場合には、当該新規ステーションを新規ステーション群から除外して「新規参加が決定したステーション」であるとする(ステップSe2)。一方、制御部110は、新規ステーションがセッション内の少なくともいずれかのステーションと接続可能でない場合には、ステップSe2の処理をスキップする。
【0092】
そして、制御部110は、本処理を終了するか否かを判断する(ステップSe5)。制御部110は、ステップSe1〜Se4の処理を実行していない新規ステーションがあれば、当該新規ステーションを対象としてステップSe1〜Se4の処理を実行する。これに加え、制御部110は、ステップSe1〜Se4の処理を既に実行したが、新規ステーション群から除外されなかった新規ステーション(すなわち、ステップSe4の判断が「NO」となった新規ステーション)がある場合において、これとは別の新規ステーションが「新規参加が決定したステーション」となったときにも、当該新規ステーションに対してステップSe1〜Se4の処理を再度実行する。なぜならば、新規参加が決定したステーションが新たに発生したことにより、それまで接続できなかった経路が接続可能になる場合があるからである。
【0093】
第2の探索処理が終了したら、制御部110は、新規ステーション群に含まれるステーション(すなわち、「新規参加が決定したステーション」にならなかった新規ステーション)を、接続拒否ステーションとする(ステップSc10)。制御部110は、接続拒否ステーションのセッションへの参加を拒否する。このようなステーションにおいては、「ネットワークに接続することができません」などの所定のメッセージが表示されることにより、ゲームがプレイ可能でないことがユーザに通知される。
【0094】
この時点で、セッションに参加可能な各ステーションの通信経路は確定する。よって、制御部110は、この時点で経路判定処理を終了し、リレー経路テーブルを生成してもよい。一方、以下に示す処理を実行することで、次回以降の経路判定処理においてリレー数制限やRTT制限に抵触しにくくすることが可能である。よって、制御部110は、(必須ではないものの)ステップSc11〜Sc16の処理を実行するのが好ましい。
【0095】
ステップSc11において、制御部110は、セッション内の通信経路のうちのRTTが最大である通信経路を特定する(なお、このRTTは、RTT制限で設定されたRTTの最大値であるとは限らない。)。次に、制御部110は、リレーステーションを切り替えることによってRTTを減少させることができるか否かを判断する(ステップSc12)。なお、ここでいう切り替えも、第1の探索処理及び第2の探索処理における切り替えと同様の要領で実行されるものである。
【0096】
制御部110は、リレーステーションを切り替えることによってRTTを減少させることが可能であれば、RTTを減少させるようにリレーステーションを切り替える(ステップSc13)。すなわち、このとき制御部110は、所定のステーション間の通信経路を選択し直し、別の通信経路に切り替える。換言すれば、このとき制御部110は、リレーステーションを選択し直しているともいえる。
【0097】
ステップSc13の処理によってRTTが減少した場合、セッション内における最大のRTTは変化する。その結果、RTTが最大の通信経路は従前と異なる場合がある。そのため、制御部110は、ステップSc13の処理を実行した後に、ステップSc11の処理を再度実行し、リレーステーションの切り替えが可能であればリレーステーションを再度切り替える。制御部110は、リレー数制限などの制限によってリレーステーションを切り替えることができなくなるまで、この処理を繰り返す。
【0098】
リレーステーションの切り替えによってRTTを減少させることができなくなると、制御部110は、続いてセッション内の通信経路のうちのリレー数が最大である通信経路を特定する(ステップSc14)。なお、このリレー数は、ステップSc11において特定されたRTTと同様に、リレー数制限で設定されたリレー数の最大値であるとは限らない。
【0099】
ここで、制御部110は、リレーステーションを切り替えることによってリレー数を減少させることが可能か否かを判断し(ステップSc15)、これが可能であれば、リレー数を減少させるようにリレーステーションを切り替える(ステップSc16)。制御部110は、RTTの場合と同様に、リレー数を減少させることができなくなるまでステップSc14〜Sc16の処理を繰り返す。
【0100】
なお、ステップSc11〜Sc13の処理は、セッション内でのRTTの最大値を減少させるための処理であり、ステップSc14〜Sc16の処理は、セッション内でのリレー数の最大値を減少させるための処理である。よって、制御部110は、これらの処理の一方のみを実行してもよい。また、制御部110は、ステップSc11〜Sc13の処理とステップSc14〜Sc16の処理の実行順序を逆にすることも可能である。
【0101】
マスタは、このような経路判定処理を実行することにより、セッション内の各ステーション間について、リレー数制限やRTT制限に従った適当な通信経路を選択することができる。マスタは、この経路判定処理の結果に基づいてリレー経路テーブルを生成し、これを各ステーション(クライアント)に配布する。
【0102】
図14〜17は、経路判定処理によるセッション及びリレー経路テーブルの変化を例示する図である。ここに示す具体例は、
図3に示したネットワーク構成のもと、
図4に示したリレー経路テーブルに従って各ステーションが通信を行う場合において、ステーション6が新たにセッションに参加した後、ステーション4がセッションから離脱することを想定したものである。なお、ここにおいて、リレー数の最大値は「2」に制限され、RTTの最大値は「100(ミリ秒)」に制限されるとする。すなわち、各ステーションのリレー数は2以下に制限され、RTTは各々の送信先のステーションと相手先のステーションの組み合わせについて100ミリ秒以下に制限される。また、各経路上に図示された数値は、それぞれの経路のRTTであるとする。
【0103】
図14に示すように、
図4のリレー経路テーブルに従って通信経路が選択された場合、各通信経路のRTTはいずれも100以下である。また、リレー数は、ステーション4のみが「2」であり、それ以外のステーションは「0」である。
【0104】
この状況において、
図15に示すようにステーション6が新規にセッションに参加したとする。このとき、ステーション6とステーション1〜5の間の通信経路は、ステーション3を除き直接接続とすることが可能である。また、ステーション6は、ステーション4をリレーすれば、RTT制限の範囲内でステーション3と通信経路を確立することが可能である。しかし、ステーション4のリレー数は「2」、すなわち最大値に既に達しているため、このままではリレー接続することができない。
【0105】
ここで、ステーション4がリレーしている通信、すなわちステーション2、3間の通信の通信経路をみると、ステーション4だけでなくステーション1もリレーステーションになることが可能である。このような場合、マスタは、ステーション2、3間のリレーステーションを切り替え、ステーション1をリレーするように通信経路を変更する。そうすると、ステーション4のリレー数が「2」から「0」に減少するため、ステーション3、6間のリレーステーションとして機能することができるようになる。
【0106】
また、ステーション6が新規ステーションとしてセッションに参加することによって、それまで通信経路を確立できなかったステーション4、5間も、ステーション6を介したリレー接続によって通信経路を確立することができるようになる。
【0107】
したがって、ステーション6がセッションに新規に参加することによって、ステーション2、3間とステーション4、5間の通信経路に従前との変化が生じる。具体的には、
図15に下線を付して示したように、ステーション2、3間のRTTが「70」から「100」に変化するとともに、それまで接続不可(×)だったステーション4、5間がリレー数制限及びRTT制限の範囲内で接続可能になる。
【0108】
図16は、ステーション6がセッションに参加した後にマスタが生成(更新)するリレー経路テーブルを示す図である。同図に示すリレー経路テーブルは、ステーション6に関する経路情報が追加される点と、下線を付したステーションIDとが、
図4のリレー経路テーブルと異なっている。
【0109】
次に、ステーション6がセッションに参加した後に、ステーション4がセッションから離脱したとする。すなわち、ステーション4は、このとき「離脱ステーション」に相当する。このときのネットワーク構成は、
図17に示すような構成となる。ステーション4が離脱すると、ステーション4が送信元(又は相手先)となっている経路が「接続不可」となり、ステーション4がリレーステーションとなっているステーション3、6間の経路が「切断経路」となる。
【0110】
ここで、ステーション3、6間は、直接接続が不可能である。また、ステーション3、6間は、リレー接続する経路自体は存在するものの、RTTの合計値が少なくとも「140」であるため、RTT制限の範囲内でリレー接続することができない。この場合、マスタは、離脱ステーションであるステーション4に関する経路情報を更新し、ステーション3、6間を接続不可とする。
【0111】
図18は、ステーション4が離脱した後にマスタが生成(更新)するリレー経路テーブルを示す図である。同図に示すリレー経路テーブルは、ステーション4に関する経路情報が削除される点と、下線を付したステーションIDとが、
図16のリレー経路テーブルと異なっている。
【0112】
以上のとおり、本実施例によれば、リレー数制限やRTT制限に従いつつ、複数のステーション(ゲーム装置100)間で通信を確立してゲームを実行することが可能である。したがって、本実施例によれば、特定のステーションのリレー数が過大になって当該ステーションの負荷が増大したり、RTTが大きい通信経路が局在したりすることによってボトルネックが生じ、メッシュ型のネットワーク全体としての品質が低下することを抑制することが可能である。また、本実施例によれば、各通信経路のリレー数やRTTが全体として平均化されるようになっているため、処理の負荷や遅延が顕在化しにくくなる。これらの特徴は、特に、同時にプレイするユーザ数が多い(例えば5以上)ゲームや、ステーション間の通信頻度が高く、かつ、即応性が要求されるゲームを実行する場合に顕著な効果を奏する。
【0113】
また、本実施例においては、メッシュ型のネットワークを構成するいずれのステーションもリレーステーションとなり得る。また、それぞれのステーションは、データを送受信したり転送したりするだけでなく、複数のユーザによって同時にプレイされるゲームを実行する必要もある。そうすると、特定のステーションのリレー数が過大になり、当該ステーションの負荷が他のステーションよりも多くなると、その負荷がゲームそのものの実行を妨げることにもなり得る。しかし、通信システム10においては、リレー数制限を設けることによって、特定のステーションにリレーステーションとしての機能が集中しないように構成されているため、ユーザのゲーム体験を損なわないようにすることができる。
【0114】
加えて、本実施例においては、アドレス情報に複数の宛先を指定してデータを送信することが可能である。このようなデータを用いると、特に、リレー数が比較的多いリレーステーションの負荷を軽減させることが可能である。リレー数が比較的多いステーションの負荷が軽減されると、リレー数が比較的少ない(あるいはリレーしない)ステーションとの負荷の差が少なくなるため、各ステーションの負荷を平均化することが可能である。
【0115】
[第2実施例]
図19は、本発明の別の実施例である通信システム20の全体構成を示すブロック図である。本実施例の通信システム20は、リレーサーバ300を備える点が異なるほかは、上述した第1実施例と共通の構成を有するものである。本実施例において、第1実施例と同一の符号を付した構成要素は、第1実施例において説明されたものと共通する構成や機能を有するものとする。
【0116】
リレーサーバ300は、ゲーム装置100と通信可能であって、リレーステーションとして機能するコンピュータ装置である。リレーサーバ300は、リレーサーバ300の各部の動作を制御する手段や、ネットワーク200を介してデータを送受信する手段など、サーバ装置としての一般的な構成及び機能を有している。リレーサーバ300は、ゲーム装置100と異なり、リレー接続専用の装置である。したがって、リレーサーバ300は、ゲーム装置100のようにゲームを実行するものではない。また、リレーサーバ300は、ゲーム装置100に比して十分に処理能力が高く、通信帯域にも余裕があることが望ましい。リレーサーバ300は、本発明に係るリレー用装置の一例に相当する。なお、リレー用装置は、必ずしもサーバ装置である必要はない。
【0117】
リレーサーバ300は、メッシュ型のネットワークにおけるノードとして機能する。マスタは、例えば、リレー数などの制限によりステーション間の通信経路が確立できない場合に、リレーサーバ300を当該ステーション間のリレーステーションとして用いる。あるいは、リレーサーバ300は、各ステーション間において通信経路が確立可能か否かを問わず、常に、リレーステーションの候補として用いられてもよい。
【0118】
図20は、リレーサーバ300を含んだネットワーク構成を例示する図である。同図に示す構成は、
図17に示した構成にリレーサーバ300のノード(R)を追加したものである。
図17の例では、ステーション3とステーション5の間と、ステーション3とステーション6の間で通信経路を確立することができなかった。これに対し、
図20の例では、これらのステーションの間をリレーサーバ300がリレーすることによって、リレー接続による通信経路を確立することができるようになる。
【0119】
図21は、この場合のリレー経路テーブルを示す図である。像図に示すリレー経路テーブルは、
図18に示したリレー経路テーブルにおいて接続不可(×)とされていた通信経路の経路情報として、リレーサーバ300を示す値(ここでは「R」と表記する。)が記述される。このリレー経路テーブルを用いた場合、ステーション3は、ステーション5又はステーション6を宛先としたデータを送信する場合には、これをリレーサーバ300に送信する。
【0120】
以上のとおり、本実施例によれば、リレーサーバ300を設けることにより、これを設けない場合(第1実施例など)に比べ、接続不可となるステーションの組み合わせを減少させたり、データをリレーすることによる各ステーションの負荷を軽減させたりすることが可能である。
【0121】
[変形例]
上述した実施例は、本発明の実施の一態様である。本発明は、これらの実施例に限定されることなく、以下の変形例に示す態様で実施することも可能である。なお、以下の変形例は、必要に応じて、各々を組み合わせて適用することも可能である。
【0122】
(変形例1)
選択手段111は、通信経路の候補が複数ある場合には、さまざまな方法で通信経路を選択することが可能である。例えば、選択手段111は、通信経路の候補が複数ある場合には、RTTが最小であるものを優先的に通信経路として選択してもよい。また、選択手段111は、通信経路の候補として直接接続によるものとリレー接続によるものとがある場合には、直接接続の通信経路を優先的に選択することも可能である。あるいは、選択手段111は、セッション内の各ステーションのリレー数がなるべく均等になるように通信経路を選択してもよい。
【0123】
(変形例2)
配布手段113は、リレー経路テーブル全体ではなく、その一部を各ステーションに配布してもよい。あるステーションに配布する経路情報は、当該ステーションを送信元とし、その他のステーションをそれぞれ相手先とした場合のステーションIDのみであっても十分である。例えば、
図4のリレー経路テーブルを例に挙げると、ステーション1は、このリレー経路テーブルの第1行の経路情報を有していれば、当該ステーションがどのステーションを送信先とすべきかを特定することが可能である。
【0124】
一方、リレー経路テーブル全体、すなわち自機以外のステーションを送信元とした経路情報を全て含めて配布するようにすると、各ステーションが同一のデータを保持することが可能である。このようにすると、例えばマスタが離脱し、それまでクライアントであったステーションがマスタとして機能するようになる場合に、従前のリレー経路テーブル(すなわち交代前のマスタが生成したリレー経路テーブル)を容易に特定することが可能である。そうすると、ステップSc2の分類処理をより容易に実行することが可能である。
【0125】
(変形例3)
本発明におけるメッシュ型のネットワークは、フルメッシュ型であってもよい。ここにおいて、フルメッシュ型のネットワークとは、考え得るノードの全ての組み合わせについて直接接続が確立しているネットワークのことである。一方、メッシュ型のネットワークは、直接接続が確立していないノードの組み合わせを含むネットワークである。
【0126】
(変形例4)
本発明において、ステーションは、そのいずれもがマスタになることが可能であってもよいが、所定の条件を満たす一部のステーションのみがマスタになることが可能であってもよい。例えば、一定以上の性能(処理能力など)を有するステーションのみがマスタになってもよい。リレーステーションについても同様に、所定の条件を満たすステーションのみがリレーステーションとして機能できるようになっていてもよい。このようにすれば、各ステーションの性能に差がある場合に、より性能が劣るステーションに多くの負荷がかからないようにすることができる。
【0127】
(変形例5)
本発明に係る機器(通信機器)は、ゲームをするための装置に限定されない。例えば、本発明に係る機器は、パーソナルコンピュータ、タブレット端末、スマートフォンなどであってもよい。本発明に係る機器は、他の機器と通信を行ってデータを授受するとともに、所定のアプリケーションを実行可能なものであればよく、それ以外の要件は特に限定されない。
【0128】
したがって、ここでいうアプリケーションも、ゲーム以外のものであってもよい。本発明において実行されるアプリケーションは、ゲーム用か否かを問わず、あらゆるデータ(音声、写真、映像又はこれらの組み合わせを含む。)をやりとりするものであってもよい。例えば、本発明に係るアプリケーションは、複数のユーザが共同で画像や文書を編集するためのものであってもよいし、いわゆるテレビ電話のように、複数のユーザが同時に音声及び映像(又はそのいずれか)をやりとりするものであってもよい。
【0129】
(変形例6)
本発明に係る通信機器(第1の機器)は、リレー数制限とRTT制限の少なくともいずれかに従って通信経路を選択するものであってもよい。すなわち、本発明は、
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムであって、
前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第1の制限と、前記送信元の機器と前記相手先の機器の間のRTTに関する第2の制限の少なくともいずれかに従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段を備える第1の機器を前記複数の機器に含み、
前記複数の機器は、前記選択手段により選択された通信経路によって通信を行う
通信システム(又は当該通信システムを構成する通信機器)
としても把握され得るものである。
【0130】
また、本発明は、
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムであって、
前記送信元の機器と前記相手先の機器の間のRTTに関する制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段を備える第1の機器を前記複数の機器に含み、
前記複数の機器は、前記選択手段により選択された通信経路によって通信を行う
通信システム(又は当該通信システムを構成する通信機器)
としても把握され得るものである。
【0131】
あるいは、本発明は、
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムであって、
前記複数の機器は、一のデータに対して複数の前記相手先の機器を指定するアドレス情報を設定して当該データを送信するデータ処理手段をそれぞれ備える
通信システム(又は当該通信システムを構成する通信機器)
としても把握されてもよい。
【0132】
(変形例7)
本発明は、通信機器又はこれを備える通信システムとしてだけでなく、通信経路の選択方法又は当該方法を用いた通信方法などとしても把握され得るものである。さらに、本発明は、コンピュータにゲーム装置100の機能を実現させるためのプログラムの形態でも提供可能である。なお、このようなプログラムは、光ディスクや半導体メモリなどの記録媒体に記録された形態や、インターネットなどのネットワークを介して情報処理装置等にダウンロードさせる形態での提供も可能である。