(57)【要約】【課題】メッシュ型のネットワークにおいて特定の機器に起因する品質の低下を抑制する。【解決手段】通信システム１０においては、複数あるゲーム装置１００のいずれかがマスタとして機能し、メッシュ型のネットワークを形成する。マスタは、他のゲーム装置１００がリレー可能な通信経路の数を示すリレー数に関する制限や、ＲＴＴ（Round-Trip Time）に関する制限などに基づいて通信経路を選択し、選択した経路を示すテーブルを各装置に配布する。【選択図】図１
2015073193.tif 000002
【特許請求の範囲】
【請求項１】
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムであって、
前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第１の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段を備える第１の機器を前記複数の機器に含み、
前記複数の機器は、前記選択手段により選択された通信経路によって通信を行う
通信システム。
【請求項２】
前記第１の制限は、前記リレー数の最大値を表し、
前記選択手段は、各々の前記他の機器について前記リレー数が最大値以下になるようにそれぞれの通信経路を選択する
請求項１に記載の通信システム。
【請求項３】
前記選択手段は、前記リレー数が最大の前記他の機器の通信経路を当該リレー数が減少するように選択し直す
請求項１又は２に記載の通信システム。
【請求項４】
前記選択手段は、前記第１の制限と、前記送信元の機器と前記相手先の機器の間のＲＴＴ（Round-Trip Time）に関する第２の制限とに従って通信経路を選択する
請求項１ないし３のいずれか１項に記載の通信システム。
【請求項５】
前記第２の制限は、ＲＴＴの最大値を表し、
前記選択手段は、各々の前記送信元の機器と前記相手先の機器の組み合わせについてＲＴＴが前記最大値以下になるようにそれぞれの通信経路を選択する
請求項４に記載の通信システム。
【請求項６】
前記選択手段は、ＲＴＴが最大の前記組み合わせの通信経路をＲＴＴが減少するように選択し直す
請求項４又は５に記載の通信システム。
【請求項７】
前記選択手段は、通信経路の候補が複数ある場合に、当該複数の候補のうちＲＴＴが最小であるものを優先的に通信経路として選択する
請求項４ないし６のいずれか１項に記載の通信システム。
【請求項８】
前記複数の機器は、受信したデータに基づいて所定のアプリケーションを実行する実行手段をそれぞれ備える
請求項１ないし７のいずれか１項に記載の通信システム。
【請求項９】
前記実行手段は、複数のアプリケーションのいずれかを選択的に実行し、
前記第１の制限及び前記第２の制限の少なくともいずれかは、前記実行手段が実行するアプリケーションに応じて決められる
請求項８に記載の通信システム。
【請求項１０】
前記複数の機器は、前記実行手段により共通のアプリケーションをそれぞれ同時に実行し、
前記相手先の機器は、前記送信元の機器により前記アプリケーションが実行されたことによって当該機器から送信されたデータを受信し、当該データに応じた処理を実行する
請求項８又は９に記載の通信システム。
【請求項１１】
前記複数の機器は、一のデータに対して複数の前記相手先の機器を指定するアドレス情報を設定して当該データを送信するデータ処理手段をそれぞれ備える
請求項１ないし１０のいずれか１項に記載の通信システム。
【請求項１２】
前記データ処理手段は、前記アドレス情報が設定された前記データを受信すると、当該アドレス情報に指定されている機器を判断し、自機が指定されていれば当該データを自機宛てのデータとして処理する一方、自機以外の機器が指定されていれば当該機器に当該データを転送する
請求項１１に記載の通信システム。
【請求項１３】
前記データ処理手段は、前記アドレス情報に自機と自機以外の機器とが指定されていれば、当該データを自機宛てのデータとして処理するとともに、当該アドレス情報から自機の指定を除外して当該自機以外の機器に当該データを転送する
請求項１２に記載の通信システム。
【請求項１４】
前記データ処理手段は、自機から前記相手先の機器にデータを送信する場合の次の送信先となる機器を前記相手先の機器毎に示す経路情報に基づいてデータを送信する
請求項１１ないし１３のいずれか１項に記載の通信システム。
【請求項１５】
前記経路情報は、前記次の送信先となる機器を、自機を含む複数の機器について示す情報である
請求項１４に記載の通信システム。
【請求項１６】
前記経路情報は、前記ネットワークを構成する全ての機器について、前記次の送信先となる機器を示す情報である
請求項１５に記載の通信システム。
【請求項１７】
前記第１の機器は、前記選択手段による選択結果に基づき、前記制限に従うように前記経路情報を生成する生成手段を備える
請求項１４ないし１６のいずれか１項に記載の通信システム。
【請求項１８】
前記第１の機器は、前記経路情報を配布対象の機器に配布する配布手段を備え、
前記配布対象の機器は、前記配布手段により配布された経路情報に基づいてデータを送信する
請求項１４ないし１７のいずれか１項に記載の通信システム。
【請求項１９】
前記複数の機器と通信可能な当該複数の機器と異なるリレー用装置を備える
請求項１ないし１８のいずれか１項に記載の通信システム。
【請求項２０】
前記選択手段は、前記複数の機器を用いた通信経路を前記制限に従って確立できない場合に、前記リレー用装置をリレーした通信経路を選択する
請求項１９に記載の通信システム。
【請求項２１】
前記ネットワークがＰ２Ｐ（Peer to Peer）型のネットワークである
請求項１ないし２０のいずれか１項に記載の通信システム。
【請求項２２】
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムを構成する通信機器であって、
前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第１の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段
を備える通信機器。
【請求項２３】
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムを構成する通信機器のコンピュータを、
前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第１の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段
として機能させるためのプログラム。
【請求項２４】
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムにおいて、
前記複数の機器に含まれる第１の機器が、前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第１の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択し、
前記複数の機器が、前記第１の機器により選択された通信経路によって通信を行う
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッシュ型のネットワークを用いた機器間のデータ通信に関する。
【背景技術】
【０００２】
特許文献１には、複数の無線局を有する無線メッシュネットワークにおける経路設定方法として、ホップ数に基づいて経路候補を取得し、経路候補が複数あった場合に、無線資源消費量や予測遅延量を評価パラメータとし、これに基づいて経路を選択することが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−７４５６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メッシュ型のネットワークにおいては、ネットワーク全体としての品質を低下させる要因としてさまざまなものがある。例えば、ある通信機器が多数の通信経路を中継し得る場合において、何の対策も講じなければ、その通信機器への負荷が過大となってボトルネックになる可能性がある。また、通信機器間のＲＴＴ（Round-Trip Time）にばらつきがある場合、ＲＴＴが大きい経路を一部に含む通信経路を用いると、他の通信経路を用いた場合よりも遅延が生じる。
本発明の目的は、メッシュ型のネットワークにおいて特定の機器に起因する品質の低下を抑制することにある。
【課題を解決するための手段】
【０００５】
本発明の通信システムは、複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムであって、前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第１の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段を備える第１の機器を前記複数の機器に含み、前記複数の機器は、前記選択手段により選択された通信経路によって通信を行う構成を有する。
【０００６】
また、前記第１の制限は、前記リレー数の最大値を表し、前記選択手段は、各々の前記他の機器について前記リレー数が最大値以下になるようにそれぞれの通信経路を選択する構成であってもよい。
また、前記選択手段は、前記リレー数が最大の前記他の機器の通信経路を当該リレー数が減少するように選択し直す構成であってもよい。
【０００７】
また、前記選択手段は、前記第１の制限と、前記送信元の機器と前記相手先の機器の間のＲＴＴに関する第２の制限とに従って通信経路を選択する構成であってもよい。
また、前記第２の制限は、ＲＴＴの最大値を表し、前記選択手段は、各々の前記送信元の機器と前記相手先の機器の組み合わせについてＲＴＴが前記最大値以下になるようにそれぞれの通信経路を選択する構成であってもよい。
また、前記選択手段は、ＲＴＴが最大の前記組み合わせの通信経路をＲＴＴが減少するように選択し直す構成であってもよい。
また、前記選択手段は、通信経路の候補が複数ある場合に、当該複数の候補のうちＲＴＴが最小であるものを優先的に通信経路として選択する構成であってもよい。
【０００８】
また、前記複数の機器は、受信したデータに基づいて所定のアプリケーションを実行する実行手段をそれぞれ備える構成であってもよい。
また、前記実行手段は、複数のアプリケーションのいずれかを選択的に実行し、前記第１の制限及び前記第２の制限の少なくともいずれかは、前記実行手段が実行するアプリケーションに応じて決められる構成であってもよい。
また、前記複数の機器は、前記実行手段により共通のアプリケーションをそれぞれ同時に実行し、前記相手先の機器は、前記送信元の機器により前記アプリケーションが実行されたことによって当該機器から送信されたデータを受信し、当該データに応じた処理を実行する構成であってもよい。
【０００９】
また、前記複数の機器は、一のデータに対して複数の前記相手先の機器を指定するアドレス情報を設定して当該データを送信するデータ処理手段をそれぞれ備える構成であってもよい。
また、前記データ処理手段は、前記アドレス情報が設定された前記データを受信すると、当該アドレス情報に指定されている機器を判断し、自機が指定されていれば当該データを自機宛てのデータとして処理する一方、自機以外の機器が指定されていれば当該機器に当該データを転送する構成であってもよい。
また、前記データ処理手段は、前記アドレス情報に自機と自機以外の機器とが指定されていれば、当該データを自機宛てのデータとして処理するとともに、当該アドレス情報から自機の指定を除外して当該自機以外の機器に当該データを転送する構成であってもよい。
【００１０】
また、前記データ処理手段は、自機から前記相手先の機器にデータを送信する場合の次の送信先となる機器を前記相手先の機器毎に示す経路情報に基づいてデータを送信する構成であってもよい。
また、前記経路情報は、前記次の送信先となる機器を、自機を含む複数の機器について示す情報であってもよい。
また、前記経路情報は、前記ネットワークを構成する全ての機器について、前記次の送信先となる機器を示す情報であってもよい。
【００１１】
また、前記第１の機器は、前記選択手段による選択結果に基づき、前記制限に従うように前記経路情報を生成する生成手段を備える構成であってもよい。
また、前記第１の機器は、前記経路情報を配布対象の機器に配布する配布手段を備え、前記配布対象の機器は、前記配布手段により配布された経路情報に基づいてデータを送信する構成であってもよい。
【００１２】
また、前記通信システムは、前記複数の機器と通信可能な当該複数の機器と異なるリレー用装置を備える構成であってもよい。
また、前記選択手段は、前記複数の機器を用いた通信経路を前記制限に従って確立できない場合に、前記リレー用装置をリレーした通信経路を選択する構成であってもよい。
また、前記ネットワークがＰ２Ｐ（Peer to Peer）型のネットワークであってもよい。
【００１３】
また、本発明の通信機器は、複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムを構成する通信機器であって、前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第１の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段を備える構成を有する。
【００１４】
また、本発明のプログラムは、複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムを構成する通信機器のコンピュータを、前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第１の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段として機能させるためのプログラムである。
【００１５】
また、本発明の通信方法は、複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムにおいて、前記複数の機器に含まれる第１の機器が、前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第１の制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択し、前記複数の機器が、前記第１の機器により選択された通信経路によって通信を行うものである。
【発明の効果】
【００１６】
本発明によれば、メッシュ型のネットワークにおいて特定の機器に起因する品質の低下を抑制することが可能である。
【図面の簡単な説明】
【００１７】
【図１】通信システムの全体構成を示すブロック図（第１実施例）
【図２】ゲーム装置のハードウェア構成を示すブロック図
【図３】メッシュ型ネットワークのネットワーク・トポロジの一例を示す図
【図４】リレー経路テーブルの一例を示す図
【図５】ゲーム装置の機能的構成を示すブロック図
【図６】アドレス情報を例示する図
【図７】リレー経路テーブルを配布するときの動作を示すシーケンスチャート
【図８】リレー経路テーブルを配布するときの動作を示すシーケンスチャート
【図９】経路判定処理の一例を示すフローチャート
【図１０】第１の探索処理を示すフローチャート
【図１１】経路判定処理の一例を示すフローチャート（図９の続き）
【図１２】第２の探索処理を示すフローチャート
【図１３】リレーステーションの切り替えを説明するための図
【図１４】経路判定処理によるセッションの変化を例示する図
【図１５】経路判定処理によるセッションの変化を例示する図
【図１６】経路判定処理によるリレー経路テーブルの変化を例示する図
【図１７】経路判定処理によるセッションの変化を例示する図
【図１８】経路判定処理によるリレー経路テーブルの変化を例示する図
【図１９】通信システムの全体構成を示すブロック図（第２実施例）
【図２０】リレーサーバを含んだネットワーク構成を例示する図
【図２１】リレー経路テーブルを示す図
【発明を実施するための形態】
【００１８】
［第１実施例］
図１は、本発明の一実施例である通信システム１０の全体構成を示すブロック図である。本実施例の通信システム１０は、複数のユーザが共同でゲームをプレイするためのシステムである。通信システム１０は、複数のゲーム装置１００と、ネットワーク２００とを有する構成である。
【００１９】
ネットワーク２００は、例えばインターネットであるが、移動体通信網などの他のネットワークによって構成されてもよい。また、ネットワーク２００は、一定の範囲内にあるゲーム装置１００（すなわち近傍のユーザ同士）を相互接続するためのネットワークであってもよいが、位置的に制限されることなく世界中のユーザを相互接続するためのネットワークであってもよい。さらに、ネットワーク２００とゲーム装置１００との間の通信は、有線通信と無線通信のいずれであってもよい。
【００２０】
ゲーム装置１００は、ユーザがゲームをプレイするためのコンピュータ装置であり、本発明に係る通信機器の一例である。ゲーム装置１００は、それぞれが別々のユーザによって使用される。ゲーム装置１００は、携帯型のゲーム機であってもよいし、主として屋内で使用される据置型のゲーム機であってもよい。また、ゲーム装置１００は、単一の装置ではなく、複数の装置（入力装置、表示装置、本体装置など）を組み合わせて構成されたものであってもよい。なお、ゲーム装置１００の数は、ここでは特に限定されないが、ユーザがプレイするゲームに応じて制限される場合がある。ただし、後述するメッシュ型のネットワークを形成するためには、ゲーム装置１００の数は３以上である必要がある。
【００２１】
図２は、ゲーム装置１００のハードウェア構成を示すブロック図である。ゲーム装置１００は、制御部１１０と、記憶部１２０と、通信部１３０と、表示部１４０と、ＵＩ（User Interface）部１５０とを備える。なお、ここでは図示されていないが、ゲーム装置１００は、スピーカやマイクロホン（あるいはこれらと接続するインターフェース）を備えてもよい。また、ゲーム装置１００のそれぞれは、本発明の実施に必要な構成を共通に備えていればよく、それ以外の部分では同一の構成や能力を必ずしも要しない。
【００２２】
制御部１１０は、ゲーム装置１００の各部の動作を制御する手段である。また、制御部１１０は、他のゲーム装置１００とのネットワーク２００を介した通信を制御する手段でもある。制御部１１０は、ＣＰＵ（Central Processing Unit）などの演算処理装置や主記憶装置に相当するメモリを備え、プログラムを実行することによって各種制御を行う。制御部１１０が実行するプログラムには、他のゲーム装置１００との間の通信を制御するためのアプリケーションプログラム（以下「通信制御プログラム」という。）と、ゲームを実行するためのアプリケーションプログラム（以下「ゲームプログラム」という。）とが含まれる。
【００２３】
記憶部１２０は、データを記憶する手段である。記憶部１２０は、フラッシュメモリ、ハードディスクなどの補助記憶装置を備える。なお、記憶部１２０は、光ディスクなどの着脱可能な記憶媒体に記憶されたデータを読み出す構成を含んでもよい。ゲームプログラムは、このような着脱可能な記憶媒体に記録されたものであってもよい。記憶部１２０は、プログラムのほか、後述するリレー経路テーブルなどを記憶することができる。
【００２４】
通信部１３０は、データを送受信する手段である。通信部１３０は、ネットワーク２００に応じた方式でデータを変調及び復調する通信チップなどを備え、制御部１１０により供給されるゲーム装置１００内部のデータを外部に送信するとともに、外部から送信されたデータを受信する。
【００２５】
表示部１４０は、情報を表示する手段である。表示部１４０は、液晶素子や有機ＥＬ（electroluminescence）により構成される表示パネルとその駆動回路とを備え、制御部１１０により供給される画像データに応じた画像を表示する。なお、ここでいう画像は、静止画と動画のいずれであってもよい。
【００２６】
ＵＩ部１５０は、ユーザの操作を受け付ける手段である。ＵＩ部１５０は、例えば、複数のキー（キーパッド）を備え、押下されたキーに応じたデータを制御部１１０に供給する。なお、ＵＩ部１５０は、表示部１４０の表示パネルに対応して設けられたタッチスクリーンを含んでもよく、また、マウス、キーボード、ジョイスティックなどの入力装置（又は入力装置と接続するインターフェース）を含んでもよい。あるいは、ＵＩ部１５０は、赤外線センサ、加速度センサ、ジャイロセンサなどによってユーザの操作（動き）を検出するものであってもよい。
【００２７】
以上の構成のもと、通信システム１０においては、複数のユーザが同時にプレイするゲームが実行される。このとき、それぞれのゲーム装置１００は、共通のゲームプログラムを同時に実行する。通信システム１０において利用可能なゲームは、特に限定されないが、例えば、ユーザ同士が対戦するものであっても、ユーザ同士が協力してプレイするものであってもよい。また、ゲームのジャンルは、ロールプレイング、アクション、レース、パズル、ボードゲームなどが考えられる。
【００２８】
通信システム１０においては、複数のユーザが同時にプレイするゲームが実行されるときに、複数のゲーム装置１００によってメッシュ型のネットワークが形成され、データが相互に送受信される。このネットワークは、Ｐ２Ｐ（Peer to Peer）型のネットワークである。ネットワークを構成するゲーム装置１００やその数は、実行されるゲームプログラムやそのときどきの状況に応じて異なり得る。また、このようなネットワークは、通信システム１０内に１つのみ形成されるとは限らず、複数形成されてもよい。
【００２９】
図３は、本実施例のメッシュ型ネットワークのネットワーク・トポロジの一例を示す図である。ここでは、５台のゲーム装置１００によってネットワークが形成される場合が例示されている。なお、以下においては、メッシュ型ネットワークのノードに相当するゲーム装置１００のことを「ステーション」といい、個々のステーションをＩＤ（ステーションＩＤ）によって識別するものとする。図３の例では、ステーションＩＤが「１」〜「５」の５台のステーションがネットワークを構成している。以下においては、ステーションＩＤが「ｎ」のステーションのことを「ステーションｎ」と表記する。
【００３０】
各ステーションは、１又は複数の他のステーションとの間で経路（リンク）を有する。例えば、図３のステーション１は、ステーション２〜５のいずれとの間にもリンクを有している。この場合、ステーション１は、ステーション２〜５のそれぞれと直接に（すなわち他のステーションを経由することなく）通信を行うことが可能である。以下においては、他のステーションを経由することなく行われる通信のことを「直接接続」という。
【００３１】
一方、例えばステーション２をみると、ステーション１、４、５との間には直接の経路があるものの、ステーション３との間には直接の経路を有しない。ステーション２は、このような場合においてステーション３と通信を行うときには、他のステーションを経由してデータを送受信する。このように、通信に際して他のステーションを中継することを、以下においては「リレー」という。また、以下においては、リレーを行うステーションのことを「リレーステーション」といい、リレーステーションを介して行われる通信のことを「リレー接続」という。リレー接続による通信経路は、複数のリンクによって構成されている。一方、直接接続による通信経路は、単一のリンクによって構成されている。
【００３２】
図３に示すように、２つのステーション間の通信経路は、複数考えられる。このような場合、上りの通信経路と下りの通信経路は、必ずしも同一でなくてもよい。例えば、ステーション１とステーション３の間で通信を行うための通信経路は、下り（１から３）においては直接接続である一方、上り（３から１）においてはステーション４をリレーステーションとしたリレー接続であってもよい。
【００３３】
このようなメッシュ型ネットワークは、複数のユーザが同時にプレイするゲームが通信システム１０において実行されるときに形成される。このようにして形成されるネットワーク（及び当該ネットワークを構成するステーション群）のことを、以下においては「セッション」という。セッションは、ゲームの実行に応じて形成され、所定のタイミング（ゲーム終了時など）で解消される。通信システム１０においては、セッションの形成及び解消が随時行われる。
【００３４】
セッションは、通信システム１０内のいずれかのゲーム装置１００のユーザが所定の操作を行うことで開始される。このユーザは、例えば、（複数のユーザとプレイ可能な）あるゲームをプレイしているときに、対戦者や協力者を募集したり、特定のユーザに当該ゲームへの参加を申し込んだりすることができる。セッションは、このユーザのステーションを起点として形成される。このようなステーションのことを、以下においては「マスタ」という。マスタは、本発明に係る「第１の機器」に相当する。なお、本実施例においては、どのステーションもマスタになり得るものとする。すなわち、マスタは、特定のステーションに限定されない。また、以下においては、セッションを構成するステーションのうちのマスタ以外のものを「クライアント」という。
【００３５】
マスタになったステーションは、セッションに参加する他のステーションと通信を行い、それぞれのステーション間の通信に用いる通信経路を１又は複数の候補の中から選択する。マスタは、通信経路を決定したら、これを経路情報として記録する。経路情報は、ステーションの通信経路に関する情報である。マスタは、セッションに参加する全てのステーションについて経路情報を生成したら、選択された通信経路を記述したデータをセッション内の各ステーションに配布する。このようにして配布されるデータのことを、以下においては「リレー経路テーブル」という。リレー経路テーブルは、経路情報を含んで構成されるデータであり、セッション内での通信に用いられる通信経路を示すデータである。なお、このデータは、ここでは説明の便宜上テーブル形式としているが、必ずしもテーブル形式で配布されなくてもよい。
【００３６】
図４は、リレー経路テーブルの一例を示す図である。図４に示すリレー経路テーブルは、図３に示した構成のセッションが形成された場合のテーブルを例示したものである。このリレー経路テーブルは、データの送信元となるステーション（又はリレーステーション）と、そのステーションが通信の相手先とするステーションとの間で通信を行う場合に、送信元のステーション（又はリレーステーション）がデータを送信すべきステーションのステーションＩＤを記述したものである。つまり、リレー経路テーブルに記述されたステーションＩＤは、あるステーションがある相手先のステーション宛てのデータを送信する場合に次の送信先となるステーションを示している。
【００３７】
例えば、ステーション１（第１行）がデータの送信元である場合、相手先のステーションがステーション２であるとすると、リレー経路テーブルに記述されたステーションＩＤは「２」であるから、ステーション１は「ステーション２」にデータを送信する。すなわち、この場合、ステーション１とステーション２の間の通信は、直接接続である。同様に、ステーション１がデータの送信元である場合には、相手先のステーションがステーション３〜５のいずれであっても、通信は直接接続によって行われる。
【００３８】
一方、ステーション２（第２行）がデータの送信元である場合において、相手先のステーションがステーション３であるときのリレー経路テーブルの値は、「４」である。すなわち、この場合ステーション２は、ステーション３宛てのデータを「ステーション４」に送信する。この場合、ステーション４は、リレーステーションとなる。したがって、ステーション２とステーション３の間の通信は、リレー接続である。
【００３９】
ここで、再びリレー経路テーブルを参照すると、リレー経路テーブルには、ステーション３宛てのデータを受信したステーション４に対しては、次の送信先として「ステーション３」のステーションＩＤが記述されている。よって、このリレー経路テーブルに従うと、ステーション２からステーション３にデータを送信する場合には、ステーション２からステーション４にデータが送信された後、リレーステーションであるステーション４によってステーション３に当該データが転送される。
【００４０】
なお、図４に例示したリレー経路テーブルは、リレー経路テーブルを生成する途中の過程のものである。リレー経路テーブルを作成する過程において、セッション内には、何らかの理由（双方のルータの組み合わせなど）によって通信経路が確立できないステーションの組み合わせが存在する場合がある。図４においては、このようなステーションに対応するリレー経路テーブルの値として「×」が記述されている。このようなステーション、すなわち図４の例におけるステーション５のようなステーションは、新たなステーションの参加によって通信経路を確立することができるようになる場合があるが、通信経路が確立できないステーションの組み合わせが最後まで残る場合には、そのセッションには参加できなくなる。したがって、実際の最終的なリレー経路テーブルには、ここでいう「×」のような値は書き込まれておらず、このようなステーションはセッションから除外されることとなる。
【００４１】
マスタは、セッション内の通信が円滑に行われるように、所定の制限に従ってリレー経路テーブルを生成する。ここでいう制限とは、具体的には、リレー数に関する制限、ＲＴＴに関する制限、ステーション当たりのデータ量に関する制限などである。セッションの形成に際してどのような制限を設けるかは、実行中のゲームに応じて（すなわち実行中のアプリケーションに応じて）決められてもよいし、セッションに参加するステーションの総数などに応じて決められてもよい。
【００４２】
ここにおいて、リレー数とは、リレーステーションがリレー可能な通信経路の数をいう。例えば、図４の例において、ステーション４のリレー数は「２」である。なぜならば、ステーション４は、ステーション２からステーション３への通信経路とステーション３からステーション２への通信経路の２つの通信経路においてリレーステーションとして機能するからである。この例からも明らかなように、本実施例においては、上りの通信経路と下りの通信経路が経路としては同一であったとしても、リレー数としては別個に数えるものとする。以下においては、リレー数に関する制限のことを「リレー数制限」という。本実施例のリレー数制限は、本発明の「第１の制限」の一例に相当する。リレー数制限とは、例えば、リレー数をその最大値によって制限するものである。なお、ここでいうリレー数が意味するものは、いわゆるホップ数（データが送信元のステーションから相手先のステーションに到達するまでに経由するリレーステーションの数）の意味と実質的に同一である（ただし、具体的な数値はホップ数＋１である。）。
【００４３】
次に、ＲＴＴとは、送信元のステーションと相手先のステーションの間で信号を発してから応答するまでに要する時間をいう。本実施例のＲＴＴは、送信元のステーションと相手先のステーションの間にリレーステーションが存在する場合には、各ステーション間のＲＴＴの合計値とする。以下においては、ＲＴＴに関する制限のことを「ＲＴＴ制限」という。本実施例のＲＴＴ制限は、本発明の「第２の制限」の一例に相当する。ＲＴＴ制限とは、例えば、ＲＴＴをその最大値によって制限するものである。
【００４４】
図５は、ゲーム装置１００の機能的構成を示すブロック図である。ゲーム装置１００は、選択手段１１１、生成手段１１２、配布手段１１３、更新手段１１４、データ処理手段１１５及び実行手段１１６に相当する機能を実現する。これらの機能は、ゲーム装置１００の制御部１１０が所定のプログラムを実行することによってソフトウェア的に実現されるものである。
【００４５】
選択手段１１１は、送信元のステーションから相手先のステーションまでの通信経路を選択する手段である。選択手段１１１は、通信経路の候補が複数ある場合には、リレー数制限などの所定の制限に基づいて一の適当な通信経路を選択する。選択手段１１１は、セッション内において考え得る全てのステーションの組み合わせについて通信経路の選択を行う。具体的には、選択手段１１１は、後述する経路判定処理を実行することによって各ステーション間の通信経路を選択する。
【００４６】
生成手段１１２は、経路情報の集合であるリレー経路テーブルを生成する手段である。生成手段１１２は、選択手段１１１による選択結果に基づいてリレー経路テーブルを生成する。また、配布手段１１３は、生成手段１１２により生成されたリレー経路テーブルを他のステーションに配布する手段である。
【００４７】
更新手段１１４は、リレー経路テーブルを更新する手段である。更新手段１１４は、リレー経路テーブルを所定のタイミングで更新する。更新手段１１４は、リレー経路テーブルを更新するタイミングにおいて、選択手段１１１に通信経路を再度選択させ、生成手段１１２にリレー経路テーブルを更新させる。なお、リレー経路テーブルを更新するタイミングは、例えば、セッションにステーションが新たに参加したタイミング、ステーションがセッションから離脱したタイミング、ネットワーク上に何らかの不具合が発生したタイミングのほか、実行しているゲームに応じたタイミング（ステーション間の通信が行われないか、比較的データ量が少ないタイミング、ある場面から別の場面に切り替わるタイミングなど）であってもよい。
【００４８】
データ処理手段１１５は、セッション内で送受信されるデータを処理する手段である。データ処理手段１１５は、ステーション間のデータの送信、受信及び転送を制御する。また、データ処理手段１１５は、自機からデータを送信する場合には、相手先の機器を指定するアドレス情報を設定する。
【００４９】
図６は、本実施例のアドレス情報を例示する図である。本実施例のアドレス情報は、データの宛先をビットの値によって示す３２ビットのビット列であり、各ビットがステーションＩＤに対応している。つまり、アドレス情報のｎビット目が「１」であれば、ステーションＩＤが「ｎ」のステーションが相手先のステーションとして指定されていることを表している。また、このアドレス情報は、宛先として複数のステーションＩＤを指定することが可能である。なお、ここでは、アドレス情報のビット数が同一のセッションとして許容するステーションの数に一致している。つまり、図６の例では、最大で３２台のステーションが同一のセッションに参加できるということである。
【００５０】
データ処理手段１１５は、このようなアドレス情報を用いることにより、複数の宛先に同一のデータを送信する場合のデータ量を減らすことが可能であり、消費する通信帯域を削減することが可能である。例えば、あるリレーステーションに対して当該リレーステーション宛てのデータと転送先（相手先）のステーション宛てのデータとを送信する場合、本実施例のアドレス情報を用いると、個別のデータを用意する必要がなく、単一のデータを一括して送信することが可能である。
【００５１】
また、データ処理手段１１５は、他のステーションからデータを受信した場合には、アドレス情報を参照し、アドレス情報に応じた処理を実行する。例えば、データ処理手段１１５は、アドレス情報に自機が指定されていれば、受信したデータを自機宛てのデータとして処理する一方、アドレス情報に自機以外のステーションが指定されていれば、受信したデータを当該ステーションに転送する。また、データ処理手段１１５は、アドレス情報に自機と自機以外のステーションの双方が含まれている場合には、アドレス情報から自機の指定を除外した上でデータを転送する。データ処理手段１１５は、リレー経路テーブルを参照し、リレー経路テーブルの記述に従ってデータを送信する。
【００５２】
実行手段１１６は、アプリケーションを実行する手段である。ここでいうアプリケーションは、本実施例においてはゲームである。実行手段１１６は、複数のゲームを実行可能であり、実行可能なゲームのいずれかを選択的に実行する。実行手段１１６は、ゲームプログラムに従ってゲームを実行するほか、同じゲームを実行しているステーションから受信したデータに応じた処理を実行したり、同じゲームを実行しているステーションに送信するデータを生成したりすることが可能である。
【００５３】
なお、図５に示す構成のうち、選択手段１１１、生成手段１１２、配布手段１１３及び更新手段１１４は、自機がマスタである場合に機能するものである。一方、データ処理手段１１５及び実行手段１１６は、自機がマスタとクライアントのいずれであっても機能するものである。
【００５４】
本実施例において、マスタは、セッション中に１台のみ存在する。マスタとなるステーションは、例えば、セッションに最初に参加したステーションである。また、マスタが途中でセッションから離脱する場合などには、マスタとして機能するステーションが途中で交代してもよい。マスタが交代する場合には、例えば、直接接続が可能なステーションの数が最も多いステーションや、各ステーションとのＲＴＴの平均値が最も小さいステーションが次のマスタになるとよい。
【００５５】
マスタは、セッションに参加したステーションに対して、リレー経路テーブルを配布する。このとき、マスタは、リレー経路テーブルを生成（又は更新）するために、ＲＴＴの計測及び通知を要求する。このときマスタとクライアントの間で実行される処理は、以下のとおりである。
【００５６】
図７及び図８は、リレー経路テーブルを配布するときのマスタ及びクライアントの動作を示すシーケンスチャートである。図７は、２台のクライアント（以下、「クライアントＣ１」、「クライアントＣ２」とそれぞれ表記する。）がマスタ（以下「マスタＭ」と表記する。）に順番に接続してセッションに参加する場合の動作を示している。
【００５７】
まず、クライアントＣ１は、マスタＭへの接続に成功すると（ステップＳａ１）、マスタＭとの間のＲＴＴを計測し、その値をマスタＭに送信する（ステップＳａ２）。図７において、「ＲＴＴ（ａ，ｂ）」とは、「ａ」が計測した「ａ」と「ｂ」のＲＴＴを意味する。すなわち、ステップＳａ２において送信される「ＲＴＴ（Ｃ１，Ｍ）」は、クライアントＣ１が計測したクライアントＣ１とマスタＭのＲＴＴである。
【００５８】
マスタＭは、クライアントＣ１からＲＴＴを受信すると、リレー経路テーブル（relay route table）をクライアントＣ１に送信する（ステップＳａ３）。図７において、「ＲＲＴ（ａ，ｂ）」とは、「ａ」及び「ｂ」の経路情報を含むリレー経路テーブルを意味する。すなわち、ステップＳａ３において送信される「ＲＲＴ（Ｍ，Ｃ１）」は、マスタＭとクライアントＣ１の経路情報を含むリレー経路テーブルである。
【００５９】
なお、この時点では、セッションに参加しているステーションはマスタＭとクライアントＣ１のみである。したがって、この時点でのリレー経路テーブルは、マスタＭとクライアントＣ１の直接接続のみを示したものである。
【００６０】
ここで、クライアントＣ２が新たにセッションに参加するとする。つまり、クライアントＣ２は、ここでマスタＭとの接続に成功する（ステップＳａ４）。また、クライアントＣ２は、クライアントＣ１とも接続を試み、ここではこれが成功したものとする（ステップＳａ５）。そうすると、クライアントＣ１は、クライアントＣ２とのＲＴＴと、マスタＭとのその時点での最新のＲＴＴとをマスタＭに送信する（ステップＳａ６）。このとき、クライアントＣ１は、マスタＭとのＲＴＴを定期的に計測し、その時点で計測されている最新のＲＴＴを送信してもよいが、クライアントＣ２の接続を契機としてマスタＭとのＲＴＴの計測を行い、このとき計測されたＲＴＴを送信してもよい。また、クライアントＣ２は、マスタＭとのＲＴＴとクライアントＣ１とのＲＴＴとをそれぞれ計測し、これをマスタＭに送信する（ステップＳａ７）。
【００６１】
このように、クライアントは、新たなステーションがセッションに参加する毎に、セッション内の他のステーション（マスタを含む。）のそれぞれと接続を試み、接続に成功したらＲＴＴを計測する。また、クライアントは、計測したＲＴＴをマスタに送信する。このようにすることで、マスタは、新しいＲＴＴの値を逐次受信することが可能であり、ＲＴＴを受信済みの通信経路のＲＴＴの値を更新しない場合に比べ、最新のネットワークの状況に即したリレー経路テーブルを生成できるようになる。
【００６２】
マスタＭは、セッション内の各クライアント（この場合、クライアントＣ１及びＣ２）からＲＴＴを受信すると、受信したＲＴＴに基づいてリレー経路テーブルを更新し、クライアントＣ１、Ｃ２にそれぞれ送信する（ステップＳａ８、Ｓａ９）。このとき、マスタＭは、クライアントＣ２に関する経路情報をリレー経路テーブルに新たに追加する。また、マスタＭは、クライアントＣ１に関する経路情報を適宜更新する。
【００６３】
一方、図８は、クライアント同士の直接接続に失敗した場合の動作を示している。図８に示すシーケンスチャートは、ステップＳｂ１〜Ｓｂ４の動作が上述したステップＳａ１〜Ｓａ４の動作と同様である。したがって、ここでは、これらのステップの説明を省略する。
【００６４】
ステップＳｂ５において、クライアントＣ２は、クライアントＣ１との接続に失敗したものとする。そうすると、クライアントＣ１及びＣ２は、互いの間のＲＴＴとして「０」を送信する（ステップＳｂ６、Ｓｂ７）。ここにおいて、ＲＴＴの値が「０」であることは、ステーション間の接続ができなかったこと、すなわちＲＴＴが計測不能だったことを示す。なお、このときのＲＴＴの値は、ＲＴＴが計測不能であることを示す所定の値であれば、どのような値であってもよい。
【００６５】
マスタＭは、各クライアントからＲＴＴを受信すると、リレー経路テーブルを更新して各クライアントに送信する（ステップＳｂ８、Ｓｂ９）。このとき、マスタＭは、受信したＲＴＴに基づいて、クライアントＣ１及びＣ２が直接接続できないことを認識する。具体的には、マスタＭは、ＲＴＴの値が所定の値（ここでは「０」）であると、そのステーション間の通信経路が利用不可能であると認識する。そうすると、マスタＭは、利用できない通信経路以外の通信経路を選択する。図８の例の場合、マスタＭは、自機をリレーステーションとして用いて、クライアントＣ１からマスタＭをリレーしてクライアントＣ２に至る通信経路（及びその逆方向の通信経路）を選択し、これを経路情報に記述する。
【００６６】
なお、説明の便宜上、ここでは２台のクライアントについてのみ説明したが、３台目以降のクライアントがマスタに接続する場合においても、同様の要領で処理が実行される。すなわち、クライアントは、セッション内の他のステーション（マスタ及びクライアント）と接続を試みてＲＴＴを計測し、マスタからリレー経路テーブルを受信する。また、マスタは、ＲＴＴを受信する毎にリレー経路テーブルを更新する。
【００６７】
マスタは、このような動作を繰り返すことにより、リレー経路テーブルを逐次更新する。なお、図７、８の説明は、概要的なものであって、実際の処理を全て含むものではない。実際のセッションにおいては、より多くのクライアントが接続される場合もあり、また、セッションの途中でのクライアントの参加や離脱も生じ得る。マスタは、セッションの構成が変化したタイミングなどで以下に示す経路判定処理を実行することによって、各クライアントについて適当な通信経路を随時選択することができる。
【００６８】
図９〜１２は、経路判定処理の一例を示すフローチャートである。経路判定処理は、マスタであるゲーム装置１００の制御部１１０が、通信制御プログラムを実行することによって実現される処理である。また、ここに例示する経路判定処理は、所定のリレー数制限及びＲＴＴ制限に従って通信経路を選択する場合のものである。
【００６９】
図９に示すように、制御部１１０は、まず、各ステーション間のＲＴＴを全て取得する（ステップＳｃ１）。制御部１１０は、マスタと各ステーションの間のＲＴＴだけでなく、ステーション同士の間のＲＴＴも取得する。制御部１１０が取得するＲＴＴには、実際の時間を示す有意な値のほか、ＲＴＴが計測不能であることを示す所定の値（ここでは「０」）が含まれる。次に、制御部１１０は、取得したＲＴＴなどに基づいて、各ステーションを「新規ステーション」、「継続ステーション」、「離脱ステーション」のいずれかに分類する（ステップＳｃ２）。
【００７０】
ここにおいて、新規ステーションとは、新たにセッションに参加することになったステーションをいう。すなわち、新規ステーションは、それまでセッションに参加しておらず、経路情報が生成されていないステーションである。制御部１１０は、例えば、前回実行した経路判定処理において得られた情報（ＲＴＴなど）に基づいて、ステーションが新規ステーションであるか否かを判断する。例えば、前回の経路判定処理ではＲＴＴが取得されず、今回の経路判定処理でＲＴＴが取得されたステーションは、新規ステーションに該当する。
【００７１】
また、継続ステーションとは、セッションに継続して参加するステーションをいう。例えば、ＲＴＴが前回と今回のいずれの経路判定処理においても取得されているステーションは、継続ステーションに該当する。
【００７２】
また、離脱ステーションとは、セッションから離脱したステーションをいう。例えば、前回の経路判定処理ではＲＴＴが取得され、今回の経路判定処理でＲＴＴが取得されなかたステーションは、離脱ステーションに該当する。
【００７３】
各ステーションを分類したら、制御部１１０は、離脱ステーションに関連する既存の経路情報を更新する（ステップＳｃ３）。制御部１１０は、離脱ステーションが送信元又は相手先となっている通信経路を「接続不可」であるとする。ここにおいて、「接続不可」とは、通信経路が確立できないことを意味する。また、制御部１１０は、離脱ステーションがリレーステーションとなっている経路を「切断経路」であるとする。
【００７４】
次に、制御部１１０は、継続ステーションに関連する既存の経路情報を更新する（ステップＳｃ４）。制御部１１０は、各継続ステーション間の通信経路について、直接接続できなくなった経路や、リレーステーションと接続できなくなった経路があれば、これを「切断経路」であるとする。
【００７５】
ここで、制御部１１０は、セッション内に切断経路があるか否かを判断する（ステップＳｃ５）。換言すれば、制御部１１０は、ステップＳｃ３、Ｓｃ４において切断経路であるとした通信経路が存在するか否かを判断する。制御部１１０は、切断経路がある場合には、以下に示す第１の探索処理を実行し（ステップＳｃ６）、切断経路がない場合には、この第１の探索処理をスキップ（省略）する。
【００７６】
図１０は、第１の探索処理を示すフローチャートである。この処理において、制御部１１０は、個々の切断経路について、そのステーション間をリレー接続によって接続することができるステーションを探索する（ステップＳｄ１）。このとき、制御部１１０は、当該ステーションと接続する経路に含まれる切断経路がより少ないステーションから順に、このステップＳｄ１の処理を実行する。
【００７７】
次に、制御部１１０は、ステップＳｄ１の処理の結果、リレー接続可能なステーションが見出されたか否かを判断する（ステップＳｄ２）。ここにおいて、「リレー接続可能」であるとは、単にリレー接続が可能な経路が存在するという意味ではなく、リレー数制限やＲＴＴ制限を満たしつつリレー接続が可能であることを意味する。したがって、制御部１１０は、リレー接続が可能なステーションがあったとしても、当該ステーションのリレー数が既に最大値に達していれば、当該ステーションによるリレー接続は不可能であると判断する。
【００７８】
リレー接続可能なステーションがあれば、制御部１１０は、当該ステーションをリレーステーションとして決定し（ステップＳｄ３）、このリレーステーションをリレーした通信経路によって、切断経路であったステーション間の通信経路を確立する。
【００７９】
一方、リレー接続可能なステーションがなければ、制御部１１０は、切り替え可能なリレーステーションを探索する（ステップＳｄ４）。すなわち、制御部１１０は、既存のリレーステーションのいずれかを切り替えることによって、切断経路であったステーション間のリレー接続が可能になるか否かを判断する。ここにおいて、リレーステーションの切り替えとは、リレー接続によって既に通信経路が確立しているステーション間のリレーステーションを切り替えることを意味する。このような切り替えを実行することにより、切断経路であったステーション間の通信経路を別の経路によって確立することができるようになる場合がある。
【００８０】
図１３は、リレーステーションの切り替えを説明するための図である。ここでは、一例として、ステーション１とステーション２がステーション３を介したリレー接続によって接続されている場合において、ステーション４とステーション５の間が切断経路となっている場合を想定する。なお、説明の便宜上、リレーステーションの切り替えと無関係なリンクについては、図示を省略している。また、ここにおけるリレー数制限は、リレー数の最大値を「２」とするものであるとする。さらに、この場合において、ステーション３はステーション４、５と直接接続が可能であり、ステーション６はステーション１、２と直接接続が可能であるとする。
【００８１】
このとき、リレーステーションであるステーション３のリレー数は、ステーション１からステーション２に向かう経路とその逆の経路とがあるため、「２」である。したがって、ステーション３は、リレー数が最大値に達しているため、このままでは他の通信経路のリレーステーションになることができない。そうすると、ステーション４、５がステーション３と直接接続が可能であっても、ステーション４、５間をステーション３によってリレー接続することはできない。
【００８２】
ここで、ステーション１、２間のリレーステーションをステーション３からステーション６に切り替えるとする。そうすると、ステーション３のリレー数は、「２」から「０」へと減少する。その結果、ステーション３は、他の通信経路のリレーステーションになることが可能になる。したがって、ステーション４、５は、ステーション３を介したリレー接続によって通信経路を確立することができるようになる。
【００８３】
制御部１１０は、ステップＳｄ４において、このような切り替えが可能なリレーステーションを探索し、切断経路であったステーション間の通信経路の確立を試みる。そして、制御部１１０は、リレーステーションの切り替えによって切断経路であったステーション間のリレー接続が可能になったか否かを判断する（ステップＳｄ５）。制御部１１０は、リレー接続可能なステーションがあった場合には、当該ステーションをリレーステーションとして決定する（ステップＳｄ３）。
【００８４】
ステップＳｄ５において、切断経路であったステーション間のリレー接続が可能にならない場合には、制御部１１０は、この２つのステーション（送信元及び相手先）のいずれかを「接続拒否ステーション」であるとする（ステップＳｄ６）。例えば、制御部１１０は、送信元のステーションに接続する経路と相手先のステーションに接続する経路とを比較し、切断経路となっている経路の数がより多い方を接続拒否ステーションとする。
【００８５】
次に、制御部１１０は、この接続拒否ステーションがいずれかの通信経路のリレーステーションになっているか否かを判断する（ステップＳｄ７）。制御部１１０は、接続拒否ステーションがリレーステーションになっていれば、当該ステーションによってリレー接続されている通信経路に含まれるリンクをそれぞれ切断経路とする（ステップＳｄ８）。一方、接続拒否ステーションがリレーステーションでなければ、制御部１１０は、ステップＳｄ８の処理をスキップする。
【００８６】
そして、制御部１１０は、切断経路であると判断されたそれぞれの経路についてステップＳｄ１〜Ｓｄ８の処理を実行したか否かを判断する（ステップＳｄ９）。制御部１１０は、未処理の切断経路があれば、当該経路についてステップＳｄ１〜Ｓｄ８の処理を実行する一方、全ての切断経路について処理を実行したら第１の探索処理を終了する。
【００８７】
図１１は、第１の探索処理後の経路判定処理（すなわちステップＳｃ７以降）を示すフローチャートである。ステップＳｃ７において、制御部１１０は、接続拒否ステーションであると判断されたステーションを新規ステーションであるとみなす。以下においては、ステップＳｃ２において新規ステーションに分類されたステーションとステップＳｃ７において新規ステーションであるとみなされたステーションの集合を「新規ステーション群」という。制御部１１０は、新規ステーションがあるか否かを判断し（ステップＳｃ８）、新規ステーションがある場合には、新規ステーション群に対して第２の探索処理を実行する（ステップＳｃ９）。
【００８８】
図１２は、第２の探索処理を示すフローチャートである。この処理において、制御部１１０は、個々の新規ステーションについて、ステップＳｅ１〜Ｓｅ４の処理を順番に実行する。まず、制御部１１０は、ある新規ステーションについて、セッション内の各ステーションと接続可能か否かを判断する（ステップＳｅ１）。ここでいう接続とは、直接接続とリレー接続のいずれであってもよい。また、制御部１１０が接続を判断するステーションは、それぞれの継続ステーションと、後述する「新規参加が決定したステーション」のそれぞれである。
【００８９】
制御部１１０は、新規ステーションがセッション内の各ステーションと接続可能である場合には、当該新規ステーションを新規ステーション群から除外し、これを「新規参加が決定したステーション」であるとする（ステップＳｅ２）。
【００９０】
一方、新規ステーションがセッション内の少なくともいずれかのステーションと接続できない場合には、切り替え可能なリレーステーションを探索する（ステップＳｅ３）。ステップＳｅ３の処理は、第１の探索処理のステップＳｄ４の処理と同様のものである。すなわち、制御部１１０は、既存のリレーステーションのいずれかを切り替えることによって、それまで接続不可であったステーション間のリレー接続が可能になるか否かを判断する。
【００９１】
ここで、制御部１１０は、新規ステーションがセッション内の各ステーションと接続可能か否かを再度判断する（ステップＳｅ４）。ステップＳｅ４の処理は、ステップＳｅ１の処理と同様の処理である。制御部１１０は、新規ステーションがセッション内の各ステーションと接続可能である場合には、当該新規ステーションを新規ステーション群から除外して「新規参加が決定したステーション」であるとする（ステップＳｅ２）。一方、制御部１１０は、新規ステーションがセッション内の少なくともいずれかのステーションと接続可能でない場合には、ステップＳｅ２の処理をスキップする。
【００９２】
そして、制御部１１０は、本処理を終了するか否かを判断する（ステップＳｅ５）。制御部１１０は、ステップＳｅ１〜Ｓｅ４の処理を実行していない新規ステーションがあれば、当該新規ステーションを対象としてステップＳｅ１〜Ｓｅ４の処理を実行する。これに加え、制御部１１０は、ステップＳｅ１〜Ｓｅ４の処理を既に実行したが、新規ステーション群から除外されなかった新規ステーション（すなわち、ステップＳｅ４の判断が「ＮＯ」となった新規ステーション）がある場合において、これとは別の新規ステーションが「新規参加が決定したステーション」となったときにも、当該新規ステーションに対してステップＳｅ１〜Ｓｅ４の処理を再度実行する。なぜならば、新規参加が決定したステーションが新たに発生したことにより、それまで接続できなかった経路が接続可能になる場合があるからである。
【００９３】
第２の探索処理が終了したら、制御部１１０は、新規ステーション群に含まれるステーション（すなわち、「新規参加が決定したステーション」にならなかった新規ステーション）を、接続拒否ステーションとする（ステップＳｃ１０）。制御部１１０は、接続拒否ステーションのセッションへの参加を拒否する。このようなステーションにおいては、「ネットワークに接続することができません」などの所定のメッセージが表示されることにより、ゲームがプレイ可能でないことがユーザに通知される。
【００９４】
この時点で、セッションに参加可能な各ステーションの通信経路は確定する。よって、制御部１１０は、この時点で経路判定処理を終了し、リレー経路テーブルを生成してもよい。一方、以下に示す処理を実行することで、次回以降の経路判定処理においてリレー数制限やＲＴＴ制限に抵触しにくくすることが可能である。よって、制御部１１０は、（必須ではないものの）ステップＳｃ１１〜Ｓｃ１６の処理を実行するのが好ましい。
【００９５】
ステップＳｃ１１において、制御部１１０は、セッション内の通信経路のうちのＲＴＴが最大である通信経路を特定する（なお、このＲＴＴは、ＲＴＴ制限で設定されたＲＴＴの最大値であるとは限らない。）。次に、制御部１１０は、リレーステーションを切り替えることによってＲＴＴを減少させることができるか否かを判断する（ステップＳｃ１２）。なお、ここでいう切り替えも、第１の探索処理及び第２の探索処理における切り替えと同様の要領で実行されるものである。
【００９６】
制御部１１０は、リレーステーションを切り替えることによってＲＴＴを減少させることが可能であれば、ＲＴＴを減少させるようにリレーステーションを切り替える（ステップＳｃ１３）。すなわち、このとき制御部１１０は、所定のステーション間の通信経路を選択し直し、別の通信経路に切り替える。換言すれば、このとき制御部１１０は、リレーステーションを選択し直しているともいえる。
【００９７】
ステップＳｃ１３の処理によってＲＴＴが減少した場合、セッション内における最大のＲＴＴは変化する。その結果、ＲＴＴが最大の通信経路は従前と異なる場合がある。そのため、制御部１１０は、ステップＳｃ１３の処理を実行した後に、ステップＳｃ１１の処理を再度実行し、リレーステーションの切り替えが可能であればリレーステーションを再度切り替える。制御部１１０は、リレー数制限などの制限によってリレーステーションを切り替えることができなくなるまで、この処理を繰り返す。
【００９８】
リレーステーションの切り替えによってＲＴＴを減少させることができなくなると、制御部１１０は、続いてセッション内の通信経路のうちのリレー数が最大である通信経路を特定する（ステップＳｃ１４）。なお、このリレー数は、ステップＳｃ１１において特定されたＲＴＴと同様に、リレー数制限で設定されたリレー数の最大値であるとは限らない。
【００９９】
ここで、制御部１１０は、リレーステーションを切り替えることによってリレー数を減少させることが可能か否かを判断し（ステップＳｃ１５）、これが可能であれば、リレー数を減少させるようにリレーステーションを切り替える（ステップＳｃ１６）。制御部１１０は、ＲＴＴの場合と同様に、リレー数を減少させることができなくなるまでステップＳｃ１４〜Ｓｃ１６の処理を繰り返す。
【０１００】
なお、ステップＳｃ１１〜Ｓｃ１３の処理は、セッション内でのＲＴＴの最大値を減少させるための処理であり、ステップＳｃ１４〜Ｓｃ１６の処理は、セッション内でのリレー数の最大値を減少させるための処理である。よって、制御部１１０は、これらの処理の一方のみを実行してもよい。また、制御部１１０は、ステップＳｃ１１〜Ｓｃ１３の処理とステップＳｃ１４〜Ｓｃ１６の処理の実行順序を逆にすることも可能である。
【０１０１】
マスタは、このような経路判定処理を実行することにより、セッション内の各ステーション間について、リレー数制限やＲＴＴ制限に従った適当な通信経路を選択することができる。マスタは、この経路判定処理の結果に基づいてリレー経路テーブルを生成し、これを各ステーション（クライアント）に配布する。
【０１０２】
図１４〜１７は、経路判定処理によるセッション及びリレー経路テーブルの変化を例示する図である。ここに示す具体例は、図３に示したネットワーク構成のもと、図４に示したリレー経路テーブルに従って各ステーションが通信を行う場合において、ステーション６が新たにセッションに参加した後、ステーション４がセッションから離脱することを想定したものである。なお、ここにおいて、リレー数の最大値は「２」に制限され、ＲＴＴの最大値は「１００（ミリ秒）」に制限されるとする。すなわち、各ステーションのリレー数は２以下に制限され、ＲＴＴは各々の送信先のステーションと相手先のステーションの組み合わせについて１００ミリ秒以下に制限される。また、各経路上に図示された数値は、それぞれの経路のＲＴＴであるとする。
【０１０３】
図１４に示すように、図４のリレー経路テーブルに従って通信経路が選択された場合、各通信経路のＲＴＴはいずれも１００以下である。また、リレー数は、ステーション４のみが「２」であり、それ以外のステーションは「０」である。
【０１０４】
この状況において、図１５に示すようにステーション６が新規にセッションに参加したとする。このとき、ステーション６とステーション１〜５の間の通信経路は、ステーション３を除き直接接続とすることが可能である。また、ステーション６は、ステーション４をリレーすれば、ＲＴＴ制限の範囲内でステーション３と通信経路を確立することが可能である。しかし、ステーション４のリレー数は「２」、すなわち最大値に既に達しているため、このままではリレー接続することができない。
【０１０５】
ここで、ステーション４がリレーしている通信、すなわちステーション２、３間の通信の通信経路をみると、ステーション４だけでなくステーション１もリレーステーションになることが可能である。このような場合、マスタは、ステーション２、３間のリレーステーションを切り替え、ステーション１をリレーするように通信経路を変更する。そうすると、ステーション４のリレー数が「２」から「０」に減少するため、ステーション３、６間のリレーステーションとして機能することができるようになる。
【０１０６】
また、ステーション６が新規ステーションとしてセッションに参加することによって、それまで通信経路を確立できなかったステーション４、５間も、ステーション６を介したリレー接続によって通信経路を確立することができるようになる。
【０１０７】
したがって、ステーション６がセッションに新規に参加することによって、ステーション２、３間とステーション４、５間の通信経路に従前との変化が生じる。具体的には、図１５に下線を付して示したように、ステーション２、３間のＲＴＴが「７０」から「１００」に変化するとともに、それまで接続不可（×）だったステーション４、５間がリレー数制限及びＲＴＴ制限の範囲内で接続可能になる。
【０１０８】
図１６は、ステーション６がセッションに参加した後にマスタが生成（更新）するリレー経路テーブルを示す図である。同図に示すリレー経路テーブルは、ステーション６に関する経路情報が追加される点と、下線を付したステーションＩＤとが、図４のリレー経路テーブルと異なっている。
【０１０９】
次に、ステーション６がセッションに参加した後に、ステーション４がセッションから離脱したとする。すなわち、ステーション４は、このとき「離脱ステーション」に相当する。このときのネットワーク構成は、図１７に示すような構成となる。ステーション４が離脱すると、ステーション４が送信元（又は相手先）となっている経路が「接続不可」となり、ステーション４がリレーステーションとなっているステーション３、６間の経路が「切断経路」となる。
【０１１０】
ここで、ステーション３、６間は、直接接続が不可能である。また、ステーション３、６間は、リレー接続する経路自体は存在するものの、ＲＴＴの合計値が少なくとも「１４０」であるため、ＲＴＴ制限の範囲内でリレー接続することができない。この場合、マスタは、離脱ステーションであるステーション４に関する経路情報を更新し、ステーション３、６間を接続不可とする。
【０１１１】
図１８は、ステーション４が離脱した後にマスタが生成（更新）するリレー経路テーブルを示す図である。同図に示すリレー経路テーブルは、ステーション４に関する経路情報が削除される点と、下線を付したステーションＩＤとが、図１６のリレー経路テーブルと異なっている。
【０１１２】
以上のとおり、本実施例によれば、リレー数制限やＲＴＴ制限に従いつつ、複数のステーション（ゲーム装置１００）間で通信を確立してゲームを実行することが可能である。したがって、本実施例によれば、特定のステーションのリレー数が過大になって当該ステーションの負荷が増大したり、ＲＴＴが大きい通信経路が局在したりすることによってボトルネックが生じ、メッシュ型のネットワーク全体としての品質が低下することを抑制することが可能である。また、本実施例によれば、各通信経路のリレー数やＲＴＴが全体として平均化されるようになっているため、処理の負荷や遅延が顕在化しにくくなる。これらの特徴は、特に、同時にプレイするユーザ数が多い（例えば５以上）ゲームや、ステーション間の通信頻度が高く、かつ、即応性が要求されるゲームを実行する場合に顕著な効果を奏する。
【０１１３】
また、本実施例においては、メッシュ型のネットワークを構成するいずれのステーションもリレーステーションとなり得る。また、それぞれのステーションは、データを送受信したり転送したりするだけでなく、複数のユーザによって同時にプレイされるゲームを実行する必要もある。そうすると、特定のステーションのリレー数が過大になり、当該ステーションの負荷が他のステーションよりも多くなると、その負荷がゲームそのものの実行を妨げることにもなり得る。しかし、通信システム１０においては、リレー数制限を設けることによって、特定のステーションにリレーステーションとしての機能が集中しないように構成されているため、ユーザのゲーム体験を損なわないようにすることができる。
【０１１４】
加えて、本実施例においては、アドレス情報に複数の宛先を指定してデータを送信することが可能である。このようなデータを用いると、特に、リレー数が比較的多いリレーステーションの負荷を軽減させることが可能である。リレー数が比較的多いステーションの負荷が軽減されると、リレー数が比較的少ない（あるいはリレーしない）ステーションとの負荷の差が少なくなるため、各ステーションの負荷を平均化することが可能である。
【０１１５】
［第２実施例］
図１９は、本発明の別の実施例である通信システム２０の全体構成を示すブロック図である。本実施例の通信システム２０は、リレーサーバ３００を備える点が異なるほかは、上述した第１実施例と共通の構成を有するものである。本実施例において、第１実施例と同一の符号を付した構成要素は、第１実施例において説明されたものと共通する構成や機能を有するものとする。
【０１１６】
リレーサーバ３００は、ゲーム装置１００と通信可能であって、リレーステーションとして機能するコンピュータ装置である。リレーサーバ３００は、リレーサーバ３００の各部の動作を制御する手段や、ネットワーク２００を介してデータを送受信する手段など、サーバ装置としての一般的な構成及び機能を有している。リレーサーバ３００は、ゲーム装置１００と異なり、リレー接続専用の装置である。したがって、リレーサーバ３００は、ゲーム装置１００のようにゲームを実行するものではない。また、リレーサーバ３００は、ゲーム装置１００に比して十分に処理能力が高く、通信帯域にも余裕があることが望ましい。リレーサーバ３００は、本発明に係るリレー用装置の一例に相当する。なお、リレー用装置は、必ずしもサーバ装置である必要はない。
【０１１７】
リレーサーバ３００は、メッシュ型のネットワークにおけるノードとして機能する。マスタは、例えば、リレー数などの制限によりステーション間の通信経路が確立できない場合に、リレーサーバ３００を当該ステーション間のリレーステーションとして用いる。あるいは、リレーサーバ３００は、各ステーション間において通信経路が確立可能か否かを問わず、常に、リレーステーションの候補として用いられてもよい。
【０１１８】
図２０は、リレーサーバ３００を含んだネットワーク構成を例示する図である。同図に示す構成は、図１７に示した構成にリレーサーバ３００のノード（Ｒ）を追加したものである。図１７の例では、ステーション３とステーション５の間と、ステーション３とステーション６の間で通信経路を確立することができなかった。これに対し、図２０の例では、これらのステーションの間をリレーサーバ３００がリレーすることによって、リレー接続による通信経路を確立することができるようになる。
【０１１９】
図２１は、この場合のリレー経路テーブルを示す図である。像図に示すリレー経路テーブルは、図１８に示したリレー経路テーブルにおいて接続不可（×）とされていた通信経路の経路情報として、リレーサーバ３００を示す値（ここでは「Ｒ」と表記する。）が記述される。このリレー経路テーブルを用いた場合、ステーション３は、ステーション５又はステーション６を宛先としたデータを送信する場合には、これをリレーサーバ３００に送信する。
【０１２０】
以上のとおり、本実施例によれば、リレーサーバ３００を設けることにより、これを設けない場合（第１実施例など）に比べ、接続不可となるステーションの組み合わせを減少させたり、データをリレーすることによる各ステーションの負荷を軽減させたりすることが可能である。
【０１２１】
［変形例］
上述した実施例は、本発明の実施の一態様である。本発明は、これらの実施例に限定されることなく、以下の変形例に示す態様で実施することも可能である。なお、以下の変形例は、必要に応じて、各々を組み合わせて適用することも可能である。
【０１２２】
（変形例１）
選択手段１１１は、通信経路の候補が複数ある場合には、さまざまな方法で通信経路を選択することが可能である。例えば、選択手段１１１は、通信経路の候補が複数ある場合には、ＲＴＴが最小であるものを優先的に通信経路として選択してもよい。また、選択手段１１１は、通信経路の候補として直接接続によるものとリレー接続によるものとがある場合には、直接接続の通信経路を優先的に選択することも可能である。あるいは、選択手段１１１は、セッション内の各ステーションのリレー数がなるべく均等になるように通信経路を選択してもよい。
【０１２３】
（変形例２）
配布手段１１３は、リレー経路テーブル全体ではなく、その一部を各ステーションに配布してもよい。あるステーションに配布する経路情報は、当該ステーションを送信元とし、その他のステーションをそれぞれ相手先とした場合のステーションＩＤのみであっても十分である。例えば、図４のリレー経路テーブルを例に挙げると、ステーション１は、このリレー経路テーブルの第１行の経路情報を有していれば、当該ステーションがどのステーションを送信先とすべきかを特定することが可能である。
【０１２４】
一方、リレー経路テーブル全体、すなわち自機以外のステーションを送信元とした経路情報を全て含めて配布するようにすると、各ステーションが同一のデータを保持することが可能である。このようにすると、例えばマスタが離脱し、それまでクライアントであったステーションがマスタとして機能するようになる場合に、従前のリレー経路テーブル（すなわち交代前のマスタが生成したリレー経路テーブル）を容易に特定することが可能である。そうすると、ステップＳｃ２の分類処理をより容易に実行することが可能である。
【０１２５】
（変形例３）
本発明におけるメッシュ型のネットワークは、フルメッシュ型であってもよい。ここにおいて、フルメッシュ型のネットワークとは、考え得るノードの全ての組み合わせについて直接接続が確立しているネットワークのことである。一方、メッシュ型のネットワークは、直接接続が確立していないノードの組み合わせを含むネットワークである。
【０１２６】
（変形例４）
本発明において、ステーションは、そのいずれもがマスタになることが可能であってもよいが、所定の条件を満たす一部のステーションのみがマスタになることが可能であってもよい。例えば、一定以上の性能（処理能力など）を有するステーションのみがマスタになってもよい。リレーステーションについても同様に、所定の条件を満たすステーションのみがリレーステーションとして機能できるようになっていてもよい。このようにすれば、各ステーションの性能に差がある場合に、より性能が劣るステーションに多くの負荷がかからないようにすることができる。
【０１２７】
（変形例５）
本発明に係る機器（通信機器）は、ゲームをするための装置に限定されない。例えば、本発明に係る機器は、パーソナルコンピュータ、タブレット端末、スマートフォンなどであってもよい。本発明に係る機器は、他の機器と通信を行ってデータを授受するとともに、所定のアプリケーションを実行可能なものであればよく、それ以外の要件は特に限定されない。
【０１２８】
したがって、ここでいうアプリケーションも、ゲーム以外のものであってもよい。本発明において実行されるアプリケーションは、ゲーム用か否かを問わず、あらゆるデータ（音声、写真、映像又はこれらの組み合わせを含む。）をやりとりするものであってもよい。例えば、本発明に係るアプリケーションは、複数のユーザが共同で画像や文書を編集するためのものであってもよいし、いわゆるテレビ電話のように、複数のユーザが同時に音声及び映像（又はそのいずれか）をやりとりするものであってもよい。
【０１２９】
（変形例６）
本発明に係る通信機器（第１の機器）は、リレー数制限とＲＴＴ制限の少なくともいずれかに従って通信経路を選択するものであってもよい。すなわち、本発明は、
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムであって、
前記他の機器がリレー可能な通信経路の数を示すリレー数に関する第１の制限と、前記送信元の機器と前記相手先の機器の間のＲＴＴに関する第２の制限の少なくともいずれかに従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段を備える第１の機器を前記複数の機器に含み、
前記複数の機器は、前記選択手段により選択された通信経路によって通信を行う
通信システム（又は当該通信システムを構成する通信機器）
としても把握され得るものである。
【０１３０】
また、本発明は、
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムであって、
前記送信元の機器と前記相手先の機器の間のＲＴＴに関する制限に従って、前記送信元の機器から前記相手先の機器までの通信経路を選択する選択手段を備える第１の機器を前記複数の機器に含み、
前記複数の機器は、前記選択手段により選択された通信経路によって通信を行う
通信システム（又は当該通信システムを構成する通信機器）
としても把握され得るものである。
【０１３１】
あるいは、本発明は、
複数の機器によりメッシュ型のネットワークを形成し、送信元の機器から相手先の機器に対して、直接に、又は他の機器をリレーして相互に通信を行う通信システムであって、
前記複数の機器は、一のデータに対して複数の前記相手先の機器を指定するアドレス情報を設定して当該データを送信するデータ処理手段をそれぞれ備える
通信システム（又は当該通信システムを構成する通信機器）
としても把握されてもよい。
【０１３２】
（変形例７）
本発明は、通信機器又はこれを備える通信システムとしてだけでなく、通信経路の選択方法又は当該方法を用いた通信方法などとしても把握され得るものである。さらに、本発明は、コンピュータにゲーム装置１００の機能を実現させるためのプログラムの形態でも提供可能である。なお、このようなプログラムは、光ディスクや半導体メモリなどの記録媒体に記録された形態や、インターネットなどのネットワークを介して情報処理装置等にダウンロードさせる形態での提供も可能である。
【符号の説明】
【０１３３】
１０、２０…通信システム、１００…ゲーム装置、１１０…制御部、１１１…選択手段、１１２…生成手段、１１３…配布手段、１１４…更新手段、１１５…データ処理手段、１１６…実行手段、１２０…記憶部、１３０…通信部、１４０…表示部、１５０…ＵＩ部、２００…ネットワーク、３００…リレーサーバ
【図１】
2015073193.tif 000003
【図２】
2015073193.tif 000004
【図３】
2015073193.tif 000005
【図４】
2015073193.tif 000006
【図５】
2015073193.tif 000007
【図６】
2015073193.tif 000008
【図７】
2015073193.tif 000009
【図８】
2015073193.tif 000010
【図９】
2015073193.tif 000011
【図１０】
2015073193.tif 000012
【図１１】
2015073193.tif 000013
【図１２】
2015073193.tif 000014
【図１３】
2015073193.tif 000015
【図１４】
2015073193.tif 000016
【図１５】
2015073193.tif 000017
【図１６】
2015073193.tif 000018
【図１７】
2015073193.tif 000019
【図１８】
2015073193.tif 000020
【図１９】
2015073193.tif 000021
【図２０】
2015073193.tif 000022
【図２１】
2015073193.tif 000023