(57)【特許請求の範囲】
【請求項１】
複数のユーザ端末で構成されるネットワークゲームシステムにおけるゲームネットワーク構築方法であって、
複数のユーザ端末のうちの一台をホスト端末として残りをクライアント端末としたスター型のピアツーピアネットワークを構築する第１構築ステップ、
前記スター型のピアツーピアネットワークに接続された複数のユーザ端末においてネットワークゲームを開始するゲーム開始ステップ、
前記スター型のピアツーピアネットワークに接続されたクライアント端末同士の接続を順次確立することによって前記スター型のピアツーピアネットワークからメッシュ型のピアツーピアネットワークを構築する第２構築ステップ、および、
前記ネットワークゲームの開始後、前記メッシュ型のピアツーピアネットワークの構築途中において、（ａ）すでに接続が確立されたクライアント端末間では、前記ネットワークゲームの進行に必要となるゲームデータを前記ホスト端末を介さずに当該クライアント端末同士で直接送受信し、（ｂ）まだ接続が確立されていないクライアント端末間では、前記ネットワークゲームの進行に必要となるゲームデータを、前記ホスト端末の転送処理により、前記ホスト端末を介して送受信するゲームデータ送受信ステップ、
を備えるゲームネットワーク構築方法。
【請求項２】
前記第２構築ステップでは、各クライアント端末は、前記スター型のピアツーピアネットワークに接続された他のクライアン端末のうち、当該スター型のピアツーピアネットワークに最も早く接続されたクライアン端末に対して優先的に接続を行う、請求項１に記載のゲームネットワーク構築方法。
【請求項３】
前記第２構築ステップでは、各クライアント端末は、前記スター型のピアツーピアネットワークに接続された他のクライアン端末のうち、最も多くの他のクライアント端末に接続されたクライアン端末に対して優先的に接続を行う、請求項１に記載のゲームネットワーク構築方法。
【請求項４】
前記ネットワークゲームの開始後、前記メッシュ型のピアツーピアネットワークの構築途中において、前記スター型のピアツーピアネットワークにまだ接続されていないユーザ端末を新規のクライアント端末として当該スター型のピアツーピアネットワークに接続する新規接続ステップをさらに備え、
前記第２構築ステップでは、前記新規のクライアント端末を含むメッシュ型のピアツーピアネットワークを構築する、請求項１に記載のゲームネットワーク構築方法。
【請求項５】
前記ゲーム開始ステップで行われるネットワークゲームには、ゲーム開始直後から所定の条件を満たすまでの間に当該ネットワークゲームに関する設定を行うゲーム準備処理が含まれる、請求項１に記載のゲームネットワーク構築方法。
【請求項６】
前記ゲーム開始ステップでは、前記スター型のピアツーピアネットワークの構築を開始してから所定時間が経過した時点で、当該スター型のピアツーピアネットワークに接続されている複数のユーザ端末においてネットワークゲームを開始する、請求項１に記載のゲームネットワーク構築方法。
【請求項７】
前記ゲーム開始ステップでは、前記スター型のピアツーピアネットワークに接続されたユーザ端末の台数が所定台数に到達した時点で、当該スター型のピアツーピアネットワークに接続されている複数のユーザ端末においてネットワークゲームを開始する、請求項１または４に記載のゲームネットワーク構築方法。
【請求項８】
前記ゲーム開始ステップでは、前記ホスト端末から前記クライアント端末に向けて送信されるゲーム開始信号に応じて、当該スター型のピアツーピアネットワークに接続されている複数のユーザ端末においてネットワークゲームを開始する、請求項１に記載のゲームネットワーク構築方法。
【請求項９】
前記ホスト端末は、当該ホスト端末に設けられた入力部からゲーム開始指示が入力されたことに応じて、前記クライアント端末に向けてゲーム開始信号を送信する、請求項８に記載のゲームネットワーク構築方法。
【請求項１０】
複数のユーザ端末で構成されるゲームネットワークシステムであって、
各ユーザ端末は、
複数のユーザ端末のうちの一台をホスト端末として残りをクライアント端末としたスター型のピアツーピアネットワークにホスト端末またはクライアント端末として接続する第１接続手段、
前記スター型のピアツーピアネットワークに接続した後にネットワークゲームを開始するゲーム開始手段、
前記スター型のピアツーピアネットワークにクライアント端末として接続した後、当該ピアツーピアネットワークに接続されている他のクライアント端末との間の接続を順次確立する第２接続手段、および、
前記ネットワークゲームの開始後、（ａ）すでに接続が確立されたクライアント端末に対しては、前記ネットワークゲームの進行に必要となるゲームデータを前記ホスト端末を介さずに直接送受信し、（ｂ）まだ接続が確立されていないクライアント端末に対しては、前記ネットワークゲームの進行に必要となるゲームデータを、前記ホスト端末の転送処理により、前記ホスト端末を介して送受信するゲームデータ送受信手段、
を備えるゲームネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ゲームネットワーク構築方法およびゲームネットワークシステムに関し、特に例えば、通信ネットワークを介して行われるゲームのためのゲームネットワーク構築方法およびゲームネットワークシステムに関する。
【背景技術】
【０００２】
従来、通信ネットワークを介して行われるゲームシステムとして非特許文献１のような技術がある。非特許文献１には、ピアツーピアネットワークを構築する手法が記載されている。ピアツーピア型のネットワークゲームシステムでは基本的にはユーザ端末同士で通信をすることによってゲームが進行するため、サーバ／クライアント型のネットワークゲームシステムのように高性能なゲームサーバは必要なく、またユーザ端末間のデータ転送もゲームサーバを経由せずに行うことができるため、例えばレースゲームのようなリアルタイムな処理が要求されるネットワークゲームに適している。
【０００３】
一般的に、ピアツーピアネットワークには大きく分けて２種類の方式がある。一つは、１台のユーザ端末がホストとして機能し、残りのユーザ端末（クライアント端末）がホスト端末を介してデータのやりとりを行うスター型である（図２２参照）。もう一つは、全てのユーザ端末が特定のホスト端末を介さずにデータのやりとりを行うことのできるメッシュ型である（図２３参照）。
【０００４】
図２４および図２５を参照して、従来のメッシュ型のピアツーピアネットワークの構築手法を簡単に説明する。図２４は、ホスト端末の処理を示すフローチャートであり、図２５は、クライアント端末の処理を示すフローチャートである。
【０００５】
図２４において、ホスト端末は、まずステップＳ９００でゲームセッションを生成し、ステップＳ９０１でプレイヤリストをリセットする。プレイヤリストとは、同一のネットワークに所属する全ユーザ端末の端末情報（アドレス情報など）のリストである。ステップＳ９０２では、ゲームを開始すべきかどうかを判断し、開始すべき場合（例えば一定台数のユーザ端末がネットワークに接続された場合）にはステップＳ９０７に進み、そうでない場合はステップＳ９０３に進む。ステップＳ９０３では、他のユーザ端末（新たにネットワークに加わろうとするユーザ端末）から接続要求信号を受信したかどうかを判断し、受信した場合にはステップＳ９０４に進み、そうでない場合はステップＳ９０２に戻る。ステップＳ９０４では、上記接続要求信号の発信元のユーザ端末の端末情報をプレイヤリストに加え、ステップＳ９０５では、更新後のプレイヤリストを同一ネットワークに所属している全てのクライアント端末に送信する。ステップＳ９０６では、上記接続要求信号の発信元のユーザ端末と接続し、その後ステップＳ９０２に戻る。ステップＳ９０７では、同一ネットワークに所属している全てのクライアント端末に、ゲーム開始信号を送信し、その後、ネットワークゲームが開始される。
【０００６】
図２５において、クライアント端末は、まずステップＳ９１０で、複数のホスト端末がそれぞれ生成した複数のゲームセッションの中から１つのゲームセッションを選択し、ステップＳ９１１では、選択したゲームセッションのホスト端末からプレイヤリストを受信する。ステップＳ９１２では、受信したプレイヤリストに基づいて、当該プレイヤリストに端末情報が含まれているユーザ端末（ホスト端末またはクライアント端末）と接続する。ステップＳ９１３では、ホスト端末からゲーム開始信号を受信したかどうかを判断し、受信した場合にはネットワークゲームが開始され、そうでない場合はステップＳ９１４に進む。ステップＳ９１４では、ホスト端末からプレイヤリストを受信したかどうかを判断し、受信した場合にはステップＳ９１２に進み、そうでない場合はステップＳ９１３に戻る。
【０００７】
上記のようにしてメッシュ型のピアツーピアネットワークが構築されて、ネットワークゲームが開始されると、各ユーザ端末は、他のユーザ端末との間で直接的に（すなわちホスト端末を介することなく）ゲームデータをやりとりしながらゲーム処理を進める。
【非特許文献１】「オンラインゲームプログラミング」、ソフトバンクパブリッシング株式会社、Ｊｕｎｇ  ＷｕｎＣｈｕｌ著、２００５年３月３日  初版、Ｐ２１８〜２２２
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、スター型のピアツーピアネットワークでは、ネットワークの構築を開始してから完了する（すなわちユーザ端末間でデータのやりとりが可能になる）までの時間が短いという利点がある。しかしながらスター型のピアツーピアネットワークでは、ホスト端末を介さないとデータのやりとりができないために通信遅延が大きくなってしまうという問題や、クライアント端末間の通信パフォーマンスがホスト端末の能力やネットワーク回線状態に左右されてしまうという問題がある。
【０００９】
一方、メッシュ型のピアツーピアネットワークでは、クライアント端末間のデータのやりとりがホスト端末を介さずに行われるので、上記のような問題は生じない。しかしながらメッシュ型のピアツーピアネットワークでは、全てのユーザ端末同士の接続が完了するまでに時間がかかり、特に同時接続台数の多いネットワークゲームではゲーム開始までに長時間待たされるという問題がある。さらには、全てのユーザ端末同士の接続が成功しなければならないため、スター型と比べて、ネットワークの構築に失敗する可能性が高いという問題がある。
【００１０】
それゆえに本発明の目的は、プレイ開始までの待機時間が少なく、かつ特定のユーザ端末に処理負担が集中することのないゲームネットワークシステムの構築方法およびゲームネットワークシステムを提供することである。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明は以下の構成を採用した。なお、括弧内の参照符号は本発明の理解を助けるために図面との対応関係を示したものであって、本発明の範囲を何ら限定するものではない。
【００１２】
本発明のゲームネットワーク構築方法は、複数のユーザ端末（２０）で構成されるネットワークゲームシステムにおけるゲームネットワーク構築方法であって、第１構築ステップ（Ｓ３３，Ｓ３８）、ゲーム開始ステップ（Ｓ３０）、第２構築ステップ（Ｓ２４，Ｓ２７）、およびゲームデータ送受信ステップ（Ｓ１００〜Ｓ１０２，Ｓ１１０，Ｓ１１１，Ｓ１１３）を備える。第１構築ステップは、複数のユーザ端末のうちの一台をホスト端末として残りをクライアント端末としたスター型のピアツーピアネットワークを構築するステップである。ゲーム開始ステップは、スター型のピアツーピアネットワークに接続された複数のユーザ端末においてネットワークゲームを開始するステップである。第２構築ステップは、スター型のピアツーピアネットワークに接続されたクライアント端末同士の接続を順次確立することによってスター型のピアツーピアネットワークからメッシュ型のピアツーピアネットワークを構築するステップである。ゲームデータ送受信ステップは、ネットワークゲームの開始後、メッシュ型のピアツーピアネットワークの構築途中において、（ａ）すでに接続が確立されたクライアント端末間では、ネットワークゲームの進行に必要となるゲームデータをホスト端末を介さずにこれらのクライアント端末同士で直接送受信し、（ｂ）まだ接続が確立されていないクライアント端末間では、ネットワークゲームの進行に必要となるゲームデータを、ホスト端末の転送処理により、ホスト端末を介して送受信するステップである。
【００１３】
第２構築ステップでは、各クライアント端末は、スター型のピアツーピアネットワークに接続された他のクライアン端末のうち、当該スター型のピアツーピアネットワークに最も早く接続されたクライアン端末に対して優先的に接続を行ってもよい。
【００１４】
第２構築ステップでは、各クライアント端末は、スター型のピアツーピアネットワークに接続された他のクライアン端末のうち、最も多くの他のクライアント端末に接続されたクライアン端末に対して優先的に接続を行ってもよい。
【００１５】
ゲームネットワーク構築方法は、ネットワークゲームの開始後、メッシュ型のピアツーピアネットワークの構築途中において、スター型のピアツーピアネットワークにまだ接続されていないユーザ端末を新規のクライアント端末として当該スター型のピアツーピアネットワークに接続する新規接続ステップをさらに備え、第２構築ステップでは、新規のクライアント端末を含むメッシュ型のピアツーピアネットワークを構築してもよい。
【００１６】
ゲーム開始ステップで行われるネットワークゲームには、ゲーム開始直後から所定の条件を満たすまでの間に当該ネットワークゲームに関する設定を行うゲーム準備処理が含まれていてもよい。
【００１７】
ゲーム開始ステップでは、スター型のピアツーピアネットワークの構築を開始してから所定時間が経過した時点で、当該スター型のピアツーピアネットワークに接続されている複数のユーザ端末においてネットワークゲームを開始してもよい。
【００１８】
ゲーム開始ステップでは、スター型のピアツーピアネットワークに接続されたユーザ端末の台数が所定台数に到達した時点で、当該スター型のピアツーピアネットワークに接続されている複数のユーザ端末においてネットワークゲームを開始してもよい。
【００１９】
ゲーム開始ステップでは、ホスト端末からクライアント端末に向けて送信されるゲーム開始信号に応じて、当該スター型のピアツーピアネットワークに接続されている複数のユーザ端末においてネットワークゲームを開始してもよい。
【００２０】
ホスト端末は、当該ホスト端末に設けられた入力部からゲーム開始指示が入力されたことに応じて、クライアント端末に向けてゲーム開始信号を送信してもよい。
【００２１】
本発明のゲームネットワークシステムは、複数のユーザ端末で構成されるゲームネットワークシステムであって、各ユーザ端末は、第１接続手段、ゲーム開始手段、第２接続手段、およびゲームデータ送受信手段を備える。第１接続手段は、複数のユーザ端末のうちの一台をホスト端末として残りをクライアント端末としたスター型のピアツーピアネットワークにホスト端末またはクライアント端末として接続する手段である。ゲーム開始手段は、スター型のピアツーピアネットワークに接続した後にネットワークゲームを開始する手段である。第２接続手段は、スター型のピアツーピアネットワークにクライアント端末として接続した後、当該ピアツーピアネットワークに接続されている他のクライアント端末との間の接続を順次確立する手段である。ゲームデータ送受信手段は、ネットワークゲームの開始後、（ａ）すでに接続が確立されたクライアント端末に対しては、ネットワークゲームの進行に必要となるゲームデータをホスト端末を介さずに直接送受信し、（ｂ）まだ接続が確立されていないクライアント端末に対しては、ネットワークゲームの進行に必要となるゲームデータを、ホスト端末の転送処理により、ホスト端末を介して送受信する手段である。
【発明の効果】
【００２２】
本発明によれば、スター型のピアツーピアネットワークが構築された時点でネットワークゲームを開始することができるので、ネットワークゲームのプレイを開始するまでのプレイヤの待機時間が短くてすむ。さらに、ネットワークゲームのプレイ中において、このスター型のピアツーピアネットワークに基づいてメッシュ型のピアツーピアネットワークが次第に構築されるので、ネットワークゲームのプレイ中におけるホスト端末の処理負担を減らすとともに、ネットワークゲームの実行に必要となるゲームデータの転送時間を減らすことができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の好ましい一実施形態について図面を参照して説明する。
【００２４】
図１は、本発明の好ましい一実施形態としてのゲームネットワークシステムの構成を示す図である。ゲームネットワークシステムは、アドレス情報サーバ１０と複数のユーザ端末（ゲーム装置）２０とで構成される。
【００２５】
図２に、アドレス情報サーバ１０の典型的な構成例を示す。アドレス情報サーバ１０は、ＣＰＵ１１、ＲＡＭ１２、ハードディスク１３および通信部１４を備えている。ＣＰＵ１１は、ハードディスク１３に格納されているコンピュータプログラムをＲＡＭ１２にロードして実行する。このコンピュータプログラムによって実現されるアドレス情報サーバ１０の主な機能は、各ユーザ端末２０から、後述するユーザ端末情報（図４）を定期的に受信してＲＡＭ１２に格納し、この端末情報に基づいて、ユーザ端末２０からの要求に応じてアドレス情報リストをそのユーザ端末２０に返信することである。
【００２６】
図３に、ユーザ端末２０の典型的な構成例を示す。ユーザ端末２０は、ＣＰＵ２１、ＲＡＭ２２、ハードディスク２３、通信部２４、入力部２５および表示部２６を備えている。ＣＰＵ２１は、ハードディスク２３に格納されているネットワークゲームプログラムをＲＡＭ２２にロードして実行する。なお、ここではネットワークゲームプログラムがハードディスク２３に予め格納されている例を説明しているが、本発明はこれに限らず、メモリカードやカートリッジやＤＶＤ−ＲＯＭ等の外部記録媒体を通じてネットワークゲームプログラムがユーザ端末２０に供給されても良いし、通信部２４を通じてネットワークゲームプログラムがユーザ端末２０に供給されても良い。このネットワークゲームプログラムによって実現されるユーザ端末２０の主な機能は、複数のプレイヤが一緒にゲームプレイできるようにピアツーピアネットワークを構築し、構築されたピアツーピアネットワークのユーザ端末２０間でゲームデータを通信し合ってレースゲームなどのビデオゲームを実行することである。入力部２５はゲームの操作のために利用され、表示部２６はゲーム画像の表示のために利用される。
【００２７】
図４は、アドレス情報サーバ１０のＲＡＭ１２に格納されるユーザ端末情報の一例を示している。このユーザ端末情報は、各ユーザ端末２０から送られてくる情報に基づいて更新される。ユーザ端末情報には、各ユーザ端末２０の端末情報（端末ＩＤ、ＩＰアドレス、ホストフラグ、ユーザＩＤよおび熟練度の情報）が含まれている。端末ＩＤは、ユーザ端末２０を識別するための情報である。ＩＰアドレスは、ＴＣＰ／ＩＰプロトコルを使用してユーザ端末２０にアクセスするためのアドレス情報であって、ポート番号の情報も含まれている。ホストフラグは、ユーザ端末２０がホスト端末として動作している（もしくは、他のユーザ端末２０からの接続要求に応じてホスト端末として動作し得る）か否かを示すフラグである。ユーザＩＤは、ユーザ端末２０を用いてゲームをプレイしているユーザを識別するための情報である。熟練度は、ゲームに対するユーザの熟練度を数値で表したものである。この熟練度の値は、例えばレースゲームにおいて上位の着順を獲得するほど増加していく。また、より熟練度の高い相手に対して先着するほどその増加量も増える。
【００２８】
図５は、ユーザ端末２０のＲＡＭ２２のメモリマップの一例である。ＲＡＭ２２には、ハードディスク２３からロードされたネットワーク構築プログラムおよびネットワークゲームプログラムや、プレイヤリストや、プレイヤの熟練度や、端末状態が格納される。プレイヤリスト、熟練度および端末状態の値は適宜に更新される。プレイヤリストとは、同一のゲームネットワークに参加しているユーザ端末の端末情報のリストであって、プレイヤリストに含まれる各ユーザ端末の端末情報には、各ユーザのユーザＩＤや熟練度、さらには、そのユーザのユーザ端末２０のＩＰアドレスや、そのユーザのユーザ端末２０との接続が確立済みか否かを示す接続フラグなどの情報が含まれている。また、プレイヤリストには、ホスト端末の端末情報を先頭として、ホスト端末に接続された順番でクライアント端末の端末情報がプレイヤリストに順次追加されていくので、プレイヤリストにおける端末情報の並び順から、どのような順番でクライアント端末がホスト端末に接続されたかを判断することができる。端末状態とは、ネットワークにおけるユーザ端末２０の役割を示し、端末状態の値は「ホスト」、「クライアント」、「ＮＵＬＬ」のいずれかとなる。ユーザ端末２０において端末状態が更新されると、新たな端末状態の情報がユーザ端末２０からアドレス情報サーバ１０に送信され、アドレス情報サーバ１０のＲＡＭ１２に格納されている端末情報のホストフラグに反映される。
【００２９】
次に、ユーザ端末２０の動作について説明する。
【００３０】
ユーザ端末２０の動作を詳細に説明する前に、本実施形態におけるゲームネットワーク構築方法の概要について説明する。本実施形態では、まず、複数のユーザ端末２０のうちの一台をホスト端末として残りをクライアント端末としたスター型のピアツーピアネットワークが構築される。そして、所定の条件が満たされた時点（例えば所定台数のユーザ端末２０がスター型のピアツーピアネットワークに接続された時点）で、これらのユーザ端末２０においてネットワークゲームが開始される。さらに、ネットワークゲームの進行と並行して、スター型のピアツーピアネットワークからメッシュ型のピアツーピアネットワークを構築する処理も行われる。これは、スター型のピアツーピアネットワークに接続されたクライアント端末同士の接続を確立することによって行われる。こうして、ネットワークゲームが進行している間にメッシュ型のピアツーピアネットワークが徐々に構築され、最終的にメッシュ型のピアツーピアネットワークが完成する。なお、ここでは必要に応じて、全てのクライアント端末間の接続が確立されているピアツーピアネットワークのことを「完全メッシュ型のピアツーピアネットワーク」と称し、一部のクライアント端末間の接続だけが確立されているピアツーピアネットワークのことを「非完全メッシュ型のピアツーピアネットワーク」と称することとする。
【００３１】
以下、図６〜図１１のフローチャートを参照して、ネットワーク構築プログラムに基づくユーザ端末２０（便宜上「ユーザ端末ａ」と称す）のＣＰＵ２１の処理の流れを説明する。
【００３２】
図６はネットワーク構築プログラムのメイン処理の流れを示すフローチャートである。メイン処理が開始されると、ＣＰＵ２１はステップＳ１０で、ＲＡＭ２２に保持されている端末状態を「ＮＵＬＬ」にリセットする。
【００３３】
ステップＳ１１では、ＣＰＵ２１はゲームセッションを生成する。
【００３４】
ステップＳ１２では、ＣＰＵ２１は、ＲＡＭ２２に保持されているプレイヤリストをリセットする。
【００３５】
ステップＳ１３では、ＣＰＵ２１は、通信部２４を通じてアドレス情報サーバ１０にアドレス情報リストを要求する。一具体例を説明すると、ＣＰＵ２１は、アドレス情報サーバ１０にアドレス情報リストを要求する際に、ＲＡＭ２２に格納されている熟練度の情報（ここでは仮に「２」とする）をアドレス情報サーバ１０に送信する。すると、アドレス情報サーバ１０のＣＰＵ１１は、図４に示されているユーザ端末情報から、ホストフラグがオンであってかつ熟練度が２に近い数値（例えば１〜３）の端末情報を少なくとも１つ抽出し、こうして抽出された端末情報のリストをアドレス情報リストとしてユーザ端末ａに返信する。
【００３６】
ステップＳ１４では、ＣＰＵ２１は、アドレス情報サーバ１０から取得したアドレス情報リストから、１つの端末情報を抽出し、こうして抽出した端末情報に対応するユーザ端末２０（便宜上「ユーザ端末ｂ」と称す）を、接続要求先として設定（ＲＡＭ２２に一時的に記憶）する。アドレス情報リストから１つの端末情報を抽出する方法としては、何らかの指標（熟練度や装置ＩＤやプレイヤＩＤなど）に基づいて抽出する方法や、ランダムに抽出する方法が考えられる。例えば、ＲＡＭ２２に格納されている熟練度に最も近い熟練度を有する端末情報を抽出してもよい。ＲＡＭ２２に格納されている熟練度に最も近い熟練度を有する端末情報が複数存在する場合には、それらの中から１つの端末情報をランダムに抽出するようにしてもよい。ステップＳ１４が完了すると、図７のステップＳ２０に進む。
【００３７】
ステップＳ２０では、ＣＰＵ２１は、ステップＳ１４で抽出された端末情報に含まれるユーザ端末ｂのＩＰアドレスを用いて、ユーザ端末ｂに対して接続要求信号を送信する。ここで送信される接続要求信号は、スター型のピアツーピアネットワークを構築するための接続要求信号である。
【００３８】
ステップＳ２１では、ＣＰＵ２１は、ＲＡＭ２２に保持されている端末状態が「クライアント」であるかどうかを判断し、「クライアント」である場合にはステップＳ２２に進み、そうでない場合（すなわち「ＮＵＬＬ」もしくは「ホスト」である場合）にはステップＳ２２に進む。
【００３９】
ステップＳ２２では、ＣＰＵ２１は、ＲＡＭ２２に保持されているプレイヤリストを参照し、自身のユーザ端末２０（ユーザ端末ａ）が属するピアツーピアネットワーク（スター型、非完全メッシュ型、完全メッシュ型のいずれか）に接続されている他のクライアント端末の中に、ユーザ端末ａとの間でまだ接続が確立されていないクライアント端末が存在するかどうかを判断する。そして、ユーザ端末ａとの間でまだ接続が確立されていないクライアント端末が存在する場合にはステップＳ２３に進み、そうでない場合（すなわちユーザ端末ａと他のクライアント端末との間の接続が全て確立されている場合）にはステップＳ２８に進む。
【００４０】
ステップＳ２３〜ステップＳ２７は、スター型のピアツーピアネットワークに接続されたクライアント端末同士の接続を確立することによってスター型のピアツーピアネットワークからメッシュ型のピアツーピアネットワークを構築するための処理である。
【００４１】
ステップＳ２３では、ＣＰＵ２１は、他のクライアント端末から接続要求信号（メッシュ型のピアツーピアネットワークを構築するための接続要求信号）を受信したかどうかを判断し、受信した場合にはステップＳ２４に進み、そうでない場合はステップＳ２５に進む。
【００４２】
ステップＳ２４では、ＣＰＵ２１は、被メッシュ接続処理を行う。被メッシュ接続処理とは、ユーザ端末ａが他のクライアント端末（ここではクライアント端末ｃ）からの接続要求信号（メッシュ型のピアツーピアネットワークを構築するための接続要求信号）を受信したときに実行される一連の処理である。以下、図８のフローチャートを参照して、被メッシュ接続処理の詳細を説明する。
【００４３】
被メッシュ接続処理が開始されると、ステップＳ５０で、ＣＰＵ２１は、接続要求信号の送信元である他のクライアント端末（便宜上「クライアント端末ｃ」と称す）からの接続要求を受け入れ可能かどうか（つまり、ユーザ端末ａとクライアント端末ｃとの間の接続を確立してもよいかどうか）を判断し、受け入れ可能な場合はステップＳ５１に進み、そうでない場合はステップＳ５８に進む。なお、後述するステップＳ２５でユーザ端末ａから別のクライアント端末（便宜上「クライアント端末ｄ」と称す）へ送信した接続要求信号に対して、クライアント端末ｄから応答信号をまだ受信していない状況もあり得るが、この場合には、予め定めた規則に基づいて、クライアント端末ｃからの接続要求を受け入れ可能かどうかを判定する。この規則の例としては、クライアント端末ｃの端末ＩＤとクライアント端末ｄの端末ＩＤの大小比較によって判定する例や、クライアント端末ｃを利用するユーザのユーザＩＤとクライアント端末ｄを利用するユーザのユーザＩＤの大小比較によって判定する例が挙げられる。他の例として、クライアント端末ｄから応答信号をまだ受信していない状況においては、クライアント端末ｃからの接続要求を常に拒否するようにしてもよいし、逆に常に受け入れる（すなわちクライアント端末ｄとの接続の確立よりもクライアント端末ｃとの接続の確立を優先する）ようにしてもよい。
【００４４】
ステップＳ５１では、ＣＰＵ２１は、クライアント端末ｃに『許可』の応答信号を送信する。
【００４５】
ステップＳ５２では、ＣＰＵ２１は、取り消し処理を行う必要があるかどうかを判断し、取り消し処理を行う必要がある場合にはステップＳ５３に進み、そうでない場合にはステップＳ５４に進む。ここでの取り消し処理とは、後述するステップＳ２５でユーザ端末ａから別のクライアント端末（ここではクライアント端末ｄ）へ送信した接続要求信号に対してクライアント端末ｄから応答信号を受信するよりも先に、ステップＳ５０でクライアント端末ｃからの接続要求を受け入れ可能と判断した場合に、クライアント端末ｄに対して接続要求を取り消す旨を通知するための処理である。プレイヤによって接続キャンセル指示が入力されたときに、取り消し処理を行ってもよい。
【００４６】
ステップＳ５３では、クライアント端末ｄに取り消し信号を送信する。
【００４７】
ステップＳ５４では、ＣＰＵ２１は、クライアント端末ｃから接続可否信号を受信したかどうかを判断し、接続可否信号を受信した場合にはステップＳ５６に進み、そうでない場合にはステップＳ５５に進む。
【００４８】
ステップＳ５５では、ＣＰＵ２１は、クライアント端末ｃから取り消し信号を受信したかどうかを判断し、クライアント端末ｃから取り消し信号を受信した場合には被メッシュ接続処理を終了し、そうでない場合はステップＳ５４に戻る。
【００４９】
ステップＳ５６では、ＣＰＵ２１は、クライアント端末ｃから受信した接続可否信号が『ＯＫ』かどうかを判断し、『ＯＫ』である場合にはステップＳ５７に進み、『ＮＯ』である場合には被メッシュ接続処理を終了する。
【００５０】
ステップＳ５７では、ＣＰＵ２１は、クライアント端末ｃとの間の接続を確立する。これにより、ユーザ端末ａとクライアント端末ｃとの間で、ホスト端末を介さずにゲームデータを送受信することが可能となる。クライアント端末ｃとの接続が確立済みとなったことは、前述のプレイヤリストに含まれる接続フラグにより記憶される。
【００５１】
ステップＳ５８では、ＣＰＵ２１は、クライアント端末ｃに対して『拒否』または『待機』の応答信号を送信し、被メッシュ接続処理を終了する。『拒否』は、クライアント端末ｃからの接続要求を完全に拒否する場合の応答信号であり、『拒否』の応答信号を送る典型的なケースとしては、クライアント端末ｃに接続可能なクライアント端末の数が予め定められた上限値を超えた場合が挙げられる。『待機』は、クライアント端末ｃからの接続要求に対する回答を一時的に保留する場合の応答信号であり、『待機』の応答信号を送る典型的なケースとしては、ユーザ端末ａが他のクライアント端末（例えばクライアント端末ｄ）に対して接続要求を行ったにも関わらずクライアント端末ｄからそれに対する応答信号をまだ受信していない場合が挙げられる。
【００５２】
ステップＳ２４の被メッシュ接続処理が完了すると、図７のステップＳ２８に進む。
【００５３】
ステップＳ２５では、ＣＰＵ２１は、ユーザ端末ａとの間でまだ接続が確立されていないクライアント端末の中から１台のクライアント端末（便宜上、クライアント端末ｄと称す）を選択し、このクライアント端末に対して接続要求信号を送信する。ここで送信される接続要求信号は、メッシュ型のピアツーピアネットワークを構築するための接続要求信号である。なお、ユーザ端末ａとの間でまだ接続が確立されていないクライアント端末の中から接続要求信号の送信先のクライアント端末を選出する方法としては、種々の方法が考えられる。一つの例として、端末ＩＤの値が最も小さいクライアント端末を選出してもよいし、ユーザＩＤの値が最も大きいクライアント端末を選出してもよいし、乱数を用いてランダムに選出してもよい。他の例として、スター型のピアツーピアネットワークに加わった時刻（すなわちホスト端末と接続された時刻）が最も早いクライアント端末（便宜上「クライアント端末ｅ」と称す）を選出してもよい。スター型のピアツーピアネットワークに加わった時刻が最も早いということは、クライアント端末ｅの接続状態は安定している（つまり、クライアント端末ｅと残りのクライアント端末との間の接続がすでに確立されている可能性が高い）ということを意味する。よって、クライアント端末ｅに対して複数のクライアント端末が同時に接続要求を行う可能性は低く、クライアント端末ｅに対する接続要求が許可される可能性が高い。したがって、クライアント端末ｅに対して接続要求信号を送信することで、メッシュ型のピアツーピアネットワークを効率よく構築することができる。さらに他の例として、最も多くの他のクライアント端末との間で接続を確立しているクライアント端末を選出してもよい。
【００５４】
ステップＳ２６では、ＣＰＵ２１は、クライアント端末ｄから『許可』の応答信号を受信したかどうかを判断し、『許可』の応答信号を受信した場合にはステップＳ２７に進み、そうでない場合（すなわち応答信号をまだ受信していない場合や、『拒否』または『待機』の応答信号を受信した場合）にはステップＳ２８に進む。
【００５５】
ステップＳ２７では、ＣＰＵ２１は、メッシュ接続処理を行う。メッシュ接続処理とは、ユーザ端末ａが送信した接続要求信号（メッシュ型のピアツーピアネットワークを構築するための接続要求信号）が他のクライアント端末（ここではクライアント端末ｄ）によって受け入れられたときに実行される一連の処理である。以下、図９のフローチャートを参照して、メッシュ接続処理の詳細を説明する。
【００５６】
メッシュ接続処理が開始されると、ステップＳ６０で、ＣＰＵ２１は、クライアント端末ｄとの接続が可能かどうかを判断し、クライアント端末ｄとの接続が可能な場合はステップＳ６１に進み、そうでない場合はステップＳ６３に進む。
【００５７】
ステップＳ６１では、ＣＰＵ２１は、『ＯＫ』の接続可否信号をクライアント端末ｄへ送信する。
【００５８】
ステップＳ６２では、ＣＰＵ２１は、クライアント端末ｄとの接続を確立させ、メッシュ接続処理を終了する。
【００５９】
ステップＳ６３では、ＣＰＵ２１は、『ＮＯ』の接続可否信号をクライアント端末ｄへ送信し、メッシュ接続処理を終了する。
【００６０】
ステップＳ２７のメッシュ接続処理が完了すると、図７のステップＳ２８に進む。
【００６１】
ステップＳ２８では、ＣＰＵ２１は、ネットワークゲームを実行中かどうかを判断し、実行中の場合にはステップＳ３１に進み、まだネットワークゲームが開始されていない場合にはステップＳ２９に進む。
【００６２】
ステップＳ２９では、ＣＰＵ２１は、ネットワークゲームを開始する条件を満たしたかどうかを判断し、ネットワークを開始する条件を満たした場合にはステップＳ３０に進み、そうでない場合にはステップＳ３１に進む。なお、ネットワークゲームを開始する条件としては、種々の条件が考えられる。例えば、スター型のピアツーピアネットワークの構築を開始してから（もしくは、ホスト端末においてゲームセッションが生成されてから）所定時間が経過した時点でネットワークゲームを開始するようにしてもよい。他の例として、スター型のピアツーピアネットワークに接続されたユーザ端末２０の台数が所定台数に到達した時点でネットワークゲームを開始するようにしてもよい。さらに他の例として、ホスト端末によって決定されたタイミングでネットワークゲームを開始するようにしてもよい（この場合、ホスト端末からクライアント端末へゲーム開始信号が送信されて、ネットワークゲームが開始される）。さらに他の例として、ホスト端末に設けられた入力部からゲーム開始指示が入力されたことに応じて（例えば、ホスト端末のプレイヤがコントローラ上のスタートスイッチを押したことに応じて）ネットワークゲームを開始するようにしてもよい。
【００６３】
ステップＳ３０では、ＣＰＵ２１は、ネットワークゲームプログラムの実行を開始することによって、ネットワークゲームを開始する。なお、ネットワークゲームプログラムの実行はネットワーク構築プログラムの実行と並列して行われ、ネットワークゲームが開始された以降も、引き続きゲームネットワーク構築処理が実行される。ネットワークゲームの進行中におけるユーザ端末２０間のゲームデータの転送処理の詳細については後述する。
【００６４】
ステップＳ３１では、ＣＰＵ２１は、ゲームネットワーク構築処理を終了するかどうかを判断し、ゲームネットワーク構築処理を終了する場合にはメイン処理を終了し、そうでない場合にはステップＳ２１に戻る。
【００６５】
ステップ３２〜ステップＳ４１は、端末状態が「ＮＵＬＬ」であるユーザ端末２０同士の接続を確立する、もしくは端末状態が「ホスト」であるユーザ端末２０と「ＮＵＬＬ」であるユーザ端末２０との接続を確立することによって、スター型のピアツーピアネットワークを構築するための処理である。
【００６６】
ステップＳ３２では、ＣＰＵ２１は、他のユーザ端末２０から接続要求信号（スター型のピアツーピアネットワークを構築するための接続要求信号）を受信したかどうかを判断し、他のユーザ端末２０から接続要求信号を受信した場合にはステップＳ３３に進み、そうでない場合にはステップＳ３４に進む。
【００６７】
ステップＳ３３では、ＣＰＵ２１は、被スター接続処理を実行する。被スター接続処理とは、ユーザ端末ａが他のユーザ端末２０からの接続要求信号（スター型のピアツーピアネットワークを構築するための接続要求信号）を受信したときに実行される一連の処理である。以下、図１０のフローチャートを参照して、被スター接続処理の詳細を説明する。
【００６８】
被スター接続処理が開始されると、ステップＳ７０で、ＣＰＵ２１は、接続要求信号の送信元である他のユーザ端末２０（便宜上「ユーザ端末ｆ」と称す）からの接続要求を受け入れ可能かどうか（つまり、ユーザ端末ａとユーザ端末ｆとの間の接続を確立してもよいかどうか）を判断し、受け入れ可能な場合はステップＳ７１に進み、そうでない場合はステップＳ８４に進む。なお、前述のステップＳ２０でユーザ端末ａからユーザ端末ｂへ送信した接続要求信号に対して、ユーザ端末ｂから応答信号をまだ受信していない状況もあり得るが、この場合には、予め定めた規則に基づいて、ユーザ端末ｆからの接続要求を受け入れ可能かどうかを判定する。この規則の例としては、ユーザ端末ｆの端末ＩＤとユーザ端末ｂの端末ＩＤの大小比較によって判定する例や、ユーザ端末ｆを利用するユーザのユーザＩＤとユーザ端末ｂを利用するユーザのユーザＩＤの大小比較によって判定する例が挙げられる。他の例として、ユーザ端末ｂから応答信号をまだ受信していない状況においては、ユーザ端末ｆからの接続要求を常に拒否するようにしてもよいし、逆に常に受け入れる（すなわちユーザ端末ｂとの接続の確立よりもユーザ端末ｆとの接続の確立を優先する）ようにしてもよい。
【００６９】
ステップＳ７１では、ＣＰＵ２１は、ユーザ端末ｆに『許可』の応答信号と、ＲＡＭ２２に格納されているプレイヤリストを送信する。
【００７０】
ステップＳ７２では、ＣＰＵ２１は、取り消し処理を行う必要があるかどうかを判断し、取り消し処理を行う必要がある場合にはステップＳ７３に進み、そうでない場合にはステップＳ７４に進む。ここでの取り消し処理とは、前述のステップＳ２０でユーザ端末ａから別のユーザ端末（ここではユーザ端末ｂ）へ送信した接続要求信号に対してユーザ端末ｂから応答信号を受信するよりも先に、ステップＳ７０でユーザ端末ｆからの接続要求を受け入れ可能と判断した場合に、ユーザ端末ｂに対して接続要求を取り消す旨を通知するための処理である。
【００７１】
ステップＳ７３では、ユーザ端末ｂに取り消し信号を送信する。
【００７２】
ステップＳ７４では、ＣＰＵ２１は、ユーザ端末ａに接続されているクライアント端末が存在するかどうかを判断し、ユーザ端末ａに接続されているクライアント端末が存在する場合（すなわち、ユーザ端末ａがすでにホスト端末として動作している場合）にはステップＳ７５に進み、そうでない場合にはステップＳ７６に進む。
【００７３】
ステップＳ７５では、ＣＰＵ２１は、ユーザ端末ａに接続されている全てのクライアント端末に対して、ユーザ端末ｆの情報（ＩＰアドレスなど）を送信する。なお、ユーザ端末ｆの情報は、ユーザ端末ａがユーザ端末ｆから受信した接続要求信号に含まれているものとする。
【００７４】
ステップＳ７６では、ＣＰＵ２１は、ユーザ端末ｆから接続可否信号を受信したかどうかを判断し、接続可否信号を受信した場合にはステップＳ７８に進み、そうでない場合にはステップＳ７７に進む。
【００７５】
ステップＳ７７では、ＣＰＵ２１は、ユーザ端末ｆから取り消し信号を受信したかどうかを判断し、ユーザ端末ｆから取り消し信号を受信した場合には被スター接続処理を終了し、そうでない場合はステップＳ７６に戻る。
【００７６】
ステップＳ７８では、ＣＰＵ２１は、ユーザ端末ｆから受信した接続可否信号が『ＯＫ』かどうかを判断し、『ＯＫ』である場合にはステップＳ７９に進み、『ＮＯ』である場合には被スター接続処理を終了する。
【００７７】
ステップＳ７９では、ＣＰＵ２１は、ユーザ端末ｆとの間の接続を確立する。これにより、ユーザ端末ａが生成したゲームセッションに、クライアント端末としてユーザ端末ｆが新たに参加したことになる。
【００７８】
ステップＳ８０では、ＣＰＵ２１は、ＲＡＭ２２に保持されている端末状態が「ＮＵＬＬ」であるかどうかを判断し、「ＮＵＬＬ」である場合にはステップＳ８１に進み、そうでない場合（すなわち「ホスト」である場合）にはステップＳ８３に進む。
【００７９】
ステップＳ８１では、ＣＰＵ２１は、ＲＡＭ２２に保持されている端末状態を「ホスト」に変更する。
【００８０】
ステップＳ８２では、新規にクライアント端末となったユーザ端末ｆに「空のクライアント情報」を送信し、被スター接続処理を終了する。なお「クライアント情報」とは、ユーザ端末ａに接続されているクライアント端末の情報（ＩＰアドレスなど）である。通常は、新規のクライアント端末に対して、既存のクライアント端末の情報が「クライアント情報」として送信されるのであるが、ここではユーザ端末ａはホスト端末になったばかりであって既存のクライアント端末は１台も存在しないため、新規のクライアント端末であるユーザ端末ｆに対してその旨を通知すべく、「空のクライアント情報」を送信することとしている。
【００８１】
ステップＳ８３では、ＣＰＵ２１は、新規にクライアント端末となったユーザ端末ｆに、既存のクライアント端末の情報を「クライアント情報」として送信し、被スター接続処理を終了する。
【００８２】
ステップＳ８４では、ＣＰＵ２１は、ユーザ端末ｆに対して『拒否』または『待機』の応答信号を送信し、被スター接続処理を終了する。『拒否』は、ユーザ端末ｆからの接続要求を完全に拒否する場合の応答信号であり、『拒否』の応答信号を送る典型的なケースとしては、ユーザ端末ｆに接続可能なクライアント端末の数が予め定められた上限値を超えた場合が挙げられる。『待機』は、ユーザ端末ｆからの接続要求に対する回答を一時的に保留する場合の応答信号であり、『待機』の応答信号を送る典型的なケースとしては、ユーザ端末ａが他のユーザ端末（例えばユーザ端末ｂ）に対して接続要求を行ったにも関わらずユーザ端末ｂからそれに対する応答信号をまだ受信していない場合が挙げられる。
【００８３】
ステップＳ３３の被スター接続処理が完了すると、図７のステップＳ３４に進む。
【００８４】
ステップＳ３４では、ＣＰＵ２１は、ＲＡＭ２２に保持されている端末状態が「ＮＵＬＬ」であるかどうかを判断し、「ＮＵＬＬ」である場合にはステップＳ３５に進み、そうでない場合（すなわち「ホスト」である場合）には前述したステップＳ２８に進む。
【００８５】
ステップＳ３５では、ＣＰＵ２１は、ステップＳ２０で送信した接続要求信号に対して、ユーザ端末ｂから応答信号（プレイヤリストを含む）を受信したかどうかを判断し、応答信号を受信した場合にはステップＳ３６に進み、そうでない場合にはステップＳ３９に進む。
【００８６】
ステップＳ３６では、ＣＰＵ２１は、ユーザ端末ｂからの応答信号が『待機』かどうかを判断し、『待機』である場合にはステップＳ４１に進み、そうでない場合（すなわち『許可』もしくは『拒否』である場合）にはステップＳ３７に進む。
【００８７】
ステップＳ３７では、ＣＰＵ２１は、ユーザ端末ｂからの応答信号が『許可』かどうかを判断し、『許可』である場合にはステップＳ３８に進み、『許可』でない場合（すなわち『拒否』である場合）にはステップＳ３９に進む。
【００８８】
ステップＳ３８では、スター接続処理を実行する。スター接続処理とは、ユーザ端末ａが送信した接続要求信号（スター型のピアツーピアネットワークを構築するための接続要求信号）が他のユーザ端末（ここではユーザ端末ｂ）によって受け入れられたときに実行される一連の処理である。以下、図１１のフローチャートを参照して、スター接続処理の詳細を説明する。
【００８９】
スター接続処理が開始されると、ステップＳ９０で、ＣＰＵ２１は、ユーザ端末ｂとの接続が可能かどうかを判断し、ユーザ端末ｂとの接続が可能な場合はステップＳ９１に進み、そうでない場合はステップＳ９４に進む。
【００９０】
ステップＳ９１では、ＣＰＵ２１は、『ＯＫ』の接続可否信号をユーザ端末ｂへ送信する。
【００９１】
ステップＳ９２では、ＣＰＵ２１は、ユーザ端末ｂとの接続を確立させる。
【００９２】
ステップＳ９３では、ＣＰＵ２１は、ＲＡＭ２２に保持されている端末状態を「クライアント」に変更し、スター接続処理を終了する。
【００９３】
ステップＳ９４では、ＣＰＵ２１は、『ＮＯ』の接続可否信号をユーザ端末ｂへ送信し、スター接続処理を終了する。
【００９４】
ステップＳ３８のスター接続処理が完了すると、前述した図７のステップＳ２８に進む。
【００９５】
ステップＳ３９では、ＣＰＵ２１は、ステップＳ１３と同様に、アドレス情報サーバ１０からアドレス情報リストを取得する。
【００９６】
ステップＳ４０では、ＣＰＵ２１は、アドレス情報サーバ１０から取得したアドレス情報リストに基づいて接続要求先を変更する。
【００９７】
ステップＳ４１では、ＣＰＵ２１は、ゲームネットワーク構築処理を終了するかどうかを判断し、ゲームネットワーク構築処理を終了する場合にはメイン処理を終了し、そうでない場合にはステップＳ２０に戻る。
【００９８】
以上のように、本実施形態では、ステップＳ３３の被スター接続処理およびステップＳ３８のスター接続処理によってスター型のピアツーピアネットワークが構築された後、このスター型のピアツーピアネットワークのクライアント端末間の接続が次第に確立され、最終的に完全メッシュ型のピアツーピアネットワークが完成する。
【００９９】
次に、ネットワークゲームプログラムの実行中におけるユーザ端末２０の動作の詳細を説明する。なお、ネットワークゲームの進行中におけるユーザ端末２０の動作（ゲームデータの送受信処理）は、クライアント端末とホスト端末とで異なる。
【０１００】
図１２は、クライアント端末（便宜上「クライアント端末ｇ」と称す）におけるゲーム処理の流れを示すフローチャートである。
【０１０１】
ステップＳ１００では、クライアント端末ｇのＣＰＵ２１は、クライアント端末ｇとの間ですでに接続が確立されている（すなわちホスト端末を介さずに直接的に通信可能となっている）クライアント端末（便宜上「クライアント端末ｈ」と称す）宛のゲームデータ（ネットワークゲームの進行に必要なゲームデータであって、例えば、クライアント端末ｇに設けられたコントローラに対するプレイヤの操作内容を示す操作データなど）を、クライアント端末ｈに送信する。接続が確立されているかどうかは、ＲＡＭ２２に格納されているプレイヤリストに含まれる接続フラグを参照して判断することができる。この接続フラグは、前述のネットワーク構築プログラムにしたがって、ネットワークゲームの進行中においても更新され得る。
【０１０２】
ステップＳ１０１では、クライアント端末ｇのＣＰＵ２１は、クライアント端末ｇとの間でまだ接続が確立されていないクライアント端末（便宜上「クライアント端末ｉ」と称す）宛のゲームデータを、ホスト端末に送信する。ホスト端末に送信される信号には、ゲームデータの宛先（ここではクライアント端末ｉ）を示す宛先情報が含まれている。
【０１０３】
ステップＳ１０２では、クライアント端末ｇのＣＰＵ２１は、ホスト端末宛のゲームデータをホスト端末に送信する。
【０１０４】
ステップＳ１０３では、クライアント端末ｇのＣＰＵ２１は、ホスト端末およびクライアント端末（ここではクライアント端末ｈおよびクライアント端末ｉ）からゲームデータを受信する。
【０１０５】
ステップＳ１０４では、クライアント端末ｇのＣＰＵ２１は、ステップＳ１０３において他のユーザ端末から受信したゲームデータを用いてゲーム処理（ゲームキャラクタの移動制御など）を実行する。
【０１０６】
ステップＳ１０５では、クライアント端末ｇのＣＰＵ２１は、ネットワークゲームが終了したかどうかを判断し、終了した場合にはゲーム処理を終了し、そうでない場合にはステップＳ１００に戻る。
【０１０７】
各クライアント端末では、上記のステップＳ１００〜ステップＳ１０５の処理が周期的に（典型的には６０分の１秒の周期で）実行されることによって、ネットワークゲームが進行する。
【０１０８】
図１３は、ホスト端末におけるゲーム処理の流れを示すフローチャートである。
【０１０９】
ステップＳ１１０では、ホスト端末のＣＰＵ２１は、各クライアント端末（ここではクライアント端末ｇ，クライアント端末ｈ，クライアント端末ｉ）宛のゲームデータ（ネットワークゲームの進行に必要なゲームデータであって、例えば、ホスト端末に設けられたコントローラに対するプレイヤの操作内容を示す操作データなど）を、各クライアント端末にそれぞれ送信する。
【０１１０】
ステップＳ１１１では、ホスト端末のＣＰＵ２１は、各クライアント端末からゲームデータをそれぞれ受信する。
【０１１１】
ステップＳ１１２では、ホスト端末のＣＰＵ２１は、ステップＳ１１１において受信したゲームデータの中に、中継すべきゲームデータ（すなわち、前述の宛先情報によって、いずれかのクライアント端末が宛先として指定されているゲームデータ）が含まれているかどうかを判断し、中継すべきゲームデータが存在する場合にはステップＳ１１３に進み、そうでない場合にはステップＳ１１４に進む。
【０１１２】
ステップＳ１１３では、ホスト端末のＣＰＵ２１は、中継すべきゲームデータを、このゲームデータの宛先として指定されているクライアント端末に送信する。
【０１１３】
ステップＳ１１４では、ホスト端末のＣＰＵ２１は、ステップＳ１１１において他のユーザ端末から受信したゲームデータを用いてゲーム処理（ゲームキャラクタの移動制御など）を実行する。
【０１１４】
ステップＳ１１５では、ホスト端末のＣＰＵ２１は、ネットワークゲームが終了したかどうかを判断し、終了した場合にはゲーム処理を終了し、そうでない場合にはステップＳ１１０に戻る。
【０１１５】
ホスト端末では、上記のステップＳ１１０〜ステップＳ１１５の処理が周期的に（典型的には６０分の１秒の周期で）実行されることによって、ネットワークゲームが進行する。
【０１１６】
以上のように、本実施形態では、ネットワークゲームの進行中において、接続が確立されているクライアント端末間ではホスト端末を介さずに直接的にゲームデータの送受信が行われ、接続が確立されていないクライアント端末間ではホスト端末を介してゲームデータの送受信が行われるため、少なくともスター型のピアツーピアネットワークが構築された時点でネットワークゲームを開始することができ、ネットワークゲームのプレイを開始するまでのプレイヤの待機時間が短くてすむ。また、ネットワークゲームのプレイ中において、このスター型のピアツーピアネットワークに基づいてメッシュ型のピアツーピアネットワークが次第に構築されるので、ネットワークゲームのプレイ中におけるホスト端末の処理負担を減らすとともに、ネットワークゲームの実行に必要となるゲームデータの転送時間を減らすことができる。
【０１１７】
また、本実施形態によれば、クライアント端末は、少なくともホスト端末とさえ接続されていればゲームネットワークに参加することができるため、仮に一部のクライアント端末間で接続の確立に失敗したとしても、それらのクライアント端末がホスト端末と接続されてさえいればネットワークゲームを進行することができる。よって、従来のメッシュ型のピアツーピアネットワークを利用したゲームネットワークシステムと比較して、ゲームネットワークの構築に失敗してネットワークゲームを開始できないという事態が起こりにくい。
【０１１８】
以下では、図１４Ａ〜図２１を参照して、本実施形態においてピアツーピアネットワークがどのように構築されていくのかを具体例により説明する。
【０１１９】
図１４Ａ〜図１４Ｅは、２台のユーザ端末（ユーザ端末Ａおよびユーザ端末Ｂ）が接続されるときの処理の流れを示している。
【０１２０】
図１４Ａでは、まだいずれのユーザ端末とも接続されていないユーザ端末Ｂから、同じくまだいずれのユーザ端末とも接続されていないユーザ端末Ａに対して接続要求信号が送信される。
【０１２１】
図１４Ｂでは、ユーザ端末Ａからユーザ端末Ｂへ『許可』の応答信号とプレイヤリストが送信される。
【０１２２】
図１４Ｃでは、ユーザ端末Ｂからユーザ端末Ａへ『ＯＫ』の接続可否信号が送信される。
【０１２３】
図１４Ｄでは、ユーザ端末Ａとユーザ端末Ｂの間の接続が確立される。これ以降、ユーザ端末Ａはホスト端末として動作し、ユーザ端末Ｂはクライアント端末として動作する。
【０１２４】
図１４Ｆでは、ユーザ端末Ａからユーザ端末Ｂへ空のクライアント情報が送信される。これにより、ユーザ端末Ｂは他のクライアント端末がまだ１台も存在しないことを確認することができる。
【０１２５】
以上のようにして、ユーザ端末Ａとユーザ端末Ｂの２台のユーザ端末から成るピアツーピアネットワークが構築される。この時点で、必要に応じていつでもネットワークゲームを開始可能な状態となる。
【０１２６】
図１５Ａ〜図１５Ｅは、上記のようにして構築された２台のユーザ端末（ユーザ端末Ａおよびユーザ端末Ｂ）から成るピアツーピアネットワークに、さらに別のユーザ端末Ｃが接続されるときの処理の流れを示している。
【０１２７】
図１５Ａでは、まだいずれのユーザ端末とも接続されていないユーザ端末Ｃから、ホスト端末であるユーザ端末Ａに対して接続要求信号が送信される。
【０１２８】
図１５Ｂでは、ユーザ端末Ａからユーザ端末Ｃへ『許可』の応答信号とプレイヤリストが送信され、さらに、ユーザ端末Ａからユーザ端末Ｂへ、ユーザ端末Ｃの情報が送信される。
【０１２９】
図１５Ｃでは、ユーザ端末Ｃからユーザ端末Ａへ『ＯＫ』の接続可否信号が送信される。
【０１３０】
図１５Ｄでは、ユーザ端末Ａとユーザ端末Ｃの間の接続が確立される。これ以降、ユーザ端末Ｃはクライアント端末として動作する。
【０１３１】
図１５Ｅでは、ユーザ端末Ａからユーザ端末Ｃへ、クライアント情報としてユーザ端末Ｂの情報が送信される。
【０１３２】
以上のようにして、ユーザ端末Ａ〜Ｃの３台のユーザ端末から成るスター型のピアツーピアネットワークが構築される。
【０１３３】
スター型のピアツーピアネットワークが構築された直後は、ユーザ端末Ｂとユーザ端末Ｃは、ホスト端末であるユーザ端末Ａを介してのみ、互いにゲームデータを送受信することができる。
【０１３４】
スター型のピアツーピアネットワークが構築された後は、ネットワークゲームが開始されたか否かに関わらず、これらの３台のユーザ端末から成るメッシュ型のピアツーピアネットワークの構築が進められる。
【０１３５】
図１６Ａ〜図１６Ｅは、上記のようにして構築された３台のユーザ端末（ユーザ端末Ａ〜Ｃ）から成るスター型のピアツーピアネットワークに基づいて、メッシュ型のピアツーピアネットワークが構築されるときの処理の流れを示している。
【０１３６】
図１６Ａでは、クライアント端末であるユーザ端末Ｂは、前述の接続フラグを参照して、まだユーザ端末Ｂとの接続が確立されていない別のクライアント端末（ユーザ端末Ｃ）が存在していることを確認する。
【０１３７】
図１６Ｂでは、ユーザ端末Ｂからユーザ端末Ｃに対して接続要求信号が送信される。
【０１３８】
図１６Ｃでは、ユーザ端末Ｃからユーザ端末Ｂへ『許可』の応答信号とプレイヤリストが送信される。
【０１３９】
図１６Ｄでは、ユーザ端末Ｂからユーザ端末Ｃへ『ＯＫ』の接続可否信号が送信される。
【０１４０】
図１６Ｅでは、ユーザ端末Ｂとユーザ端末Ｃの間の接続が確立される。これ以降は、ユーザ端末Ｂとユーザ端末Ｃは、ホスト端末であるユーザ端末Ａを介することなく、互いにゲームデータを送受信することができる。
【０１４１】
次に、図１７〜図２１を参照して、ユーザ端末Ａ〜Ｄの４台のユーザ端末から成るピアツーピアネットワークが構築されるときの処理の流れについて説明する。
【０１４２】
まず、図１７に示すように、ユーザ端末Ａ〜Ｃの３台のユーザ端末から成るスター型のピアツーピアネットワークが構成される。この段階で、ユーザ端末Ａ〜Ｃの３台のユーザ端末を用いたネットワークゲームを開始することが可能となる。この後、ユーザ端末Ｂとユーザ端末Ｃとの間の接続と、ユーザ端末Ａとユーザ端末Ｄとの間の接続の、どちらが先に確立されるかによって、処理の流れが変化する。
【０１４３】
図１８は、ユーザ端末Ａとユーザ端末Ｄとの間の接続が確立するよりも先に、ユーザ端末Ｂとユーザ端末Ｃとの間の接続が確立した場合のピアツーピアネットワークの様子を示している。図１９は、この時点でピアツーピアネットワークに所属している各ユーザ端末Ａ〜Ｃで保持されている他のユーザ端末の情報（ＩＰアドレス等）を示している。ユーザ端末Ｄはまだこのピアツーピアネットワークに接続されていないので、ユーザ端末Ｄの情報はまだいずれのユーザ端末にも保持されていない。この後、ユーザ端末Ａとユーザ端末Ｄとの間の接続が確立され、さらに、ユーザ端末Ｄと各クライアント端末（ユーザ端末Ｂおよびユーザ端末Ｃ）との間の接続が順次確立され、最終的にユーザ端末Ａ〜Ｄの４台のユーザ端末から成るメッシュ型のピアツーピアネットワークが構築されることになる。
【０１４４】
図２０は、ユーザ端末Ｂとユーザ端末Ｃとの間の接続が確立するよりも先に、ユーザ端末Ａとユーザ端末Ｄとの間の接続が確立した場合のピアツーピアネットワークの様子を示している。図２１は、この時点でピアツーピアネットワークに所属している各ユーザ端末Ａ〜Ｄで保持されている他のユーザ端末の情報（ＩＰアドレス等）を示している。この後、クライアント端末（ユーザ端末Ｂ〜Ｄ）間の接続が順次確立され、最終的にユーザ端末Ａ〜Ｄの４台のユーザ端末から成るメッシュ型のピアツーピアネットワークが構築されることになる。
【０１４５】
なお、本実施形態によれば、スター型のピアツーピアネットワークが構築された時点ですぐにネットワークゲームを開始することができるが、スター型のピアツーピアネットワークが構築されてからメッシュ型のピアツーピアネットワークの構築が完了するまでにはある程度の時間を要する。メッシュ型のピアツーピアネットワークの構築が完了するまでの間は、一部のクライアント端末間におけるゲームデータのやりとりがホスト端末を介して行われるため、通信の遅延時間が大きく、またホスト端末の処理負担も大きい。そこで、ネットワークゲームのゲームシーケンスを、ネットワークゲームの開始直後はリアルタイム処理を必要としない処理を行い、ある程度の時間が経過してからリアルタイム処理を必要とする処理を開始するようなゲームシーケンスとするのが好ましい。例えば、複数のプレイヤで対戦するレースゲームの場合には、ネットワークゲームの開始直後はプレイヤがレースコースを選択したりマシンをセッティングしたりするための準備処理を実行し、それらの作業が終わってからレース処理（共通のレースコース上で各プレイヤのマシンを走らせる処理）を開始するようにするのが好ましい。準備処理ではリアルタイム処理を必要としない（すなわちユーザ端末間で操作データを随時送受信する必要がない）ため、通信の遅延時間が大きくても、またホスト端末の処理負担が大きくても、特に問題にはならない。一方、レース処理ではリアルタイム処理を必要とする（すなわちユーザ端末間で操作データを随時送受信する必要がある）が、プレイヤがレースコースを選択したりマシンをセッティングしたりしている間にメッシュ型のピアツーピアネットワークが完成（もしくはほぼ完成）しているので、プレイヤは快適にレースゲームをプレイすることができる。
【０１４６】
なお、本実施形態では、アドレス情報サーバ１０から他のユーザ端末のアドレス情報を取得しているが、本発明はこれに限らず、他の任意の方法でアドレス情報を取得してもよい。
【図面の簡単な説明】
【０１４７】
【図１】本発明の一実施形態のゲームネットワークシステムの構成を示す図
【図２】アドレス情報サーバ１０の典型的な構成例
【図３】ユーザ端末２０の典型的な構成例
【図４】アドレス情報サーバ１０のＲＡＭ１２に格納されるユーザ端末情報の一例
【図５】ユーザ端末２０のＲＡＭ２２のメモリマップの一例
【図６】ネットワーク構築プログラムのメイン処理の流れを示すフローチャート
【図７】ネットワーク構築プログラムのメイン処理の流れを示すフローチャート
【図８】ネットワーク構築プログラムの被メッシュ接続処理の流れを示すフローチャート
【図９】ネットワーク構築プログラムのメッシュ接続処理の流れを示すフローチャート
【図１０】ネットワーク構築プログラムの被スター接続処理の流れを示すフローチャート
【図１１】ネットワーク構築プログラムのスター接続処理の流れを示すフローチャート
【図１２】ネットワークゲームプログラムのクライアントゲーム処理の流れを示すフローチャート
【図１３】ネットワークゲームプログラムのホストゲーム処理の流れを示すフローチャート
【図１４Ａ】ピアツーピアネットワークが構築されていく過程を示す図
【図１４Ｂ】ピアツーピアネットワークが構築されていく過程を示す図
【図１４Ｃ】ピアツーピアネットワークが構築されていく過程を示す図
【図１４Ｄ】ピアツーピアネットワークが構築されていく過程を示す図
【図１４Ｅ】ピアツーピアネットワークが構築されていく過程を示す図
【図１５Ａ】ピアツーピアネットワークが構築されていく過程を示す図
【図１５Ｂ】ピアツーピアネットワークが構築されていく過程を示す図
【図１５Ｃ】ピアツーピアネットワークが構築されていく過程を示す図
【図１５Ｄ】ピアツーピアネットワークが構築されていく過程を示す図
【図１５Ｅ】ピアツーピアネットワークが構築されていく過程を示す図
【図１６Ａ】ピアツーピアネットワークが構築されていく過程を示す図
【図１６Ｂ】ピアツーピアネットワークが構築されていく過程を示す図
【図１６Ｃ】ピアツーピアネットワークが構築されていく過程を示す図
【図１６Ｄ】ピアツーピアネットワークが構築されていく過程を示す図
【図１６Ｅ】ピアツーピアネットワークが構築されていく過程を示す図
【図１７】ピアツーピアネットワークが構築されていく過程を示す図
【図１８】ピアツーピアネットワークが構築されていく過程を示す図
【図１９】各端末が保持している端末情報を示す図
【図２０】ピアツーピアネットワークが構築されていく過程を示す図
【図２１】各端末が保持している端末情報を示す図
【図２２】従来のスター型のピアツーピアネットワークの構成例
【図２３】従来のメッシュ型のピアツーピアネットワークの構成例
【図２４】従来のメッシュ型のピアツーピアネットワークの構築手法を示すフローチャート
【図２５】従来のメッシュ型のピアツーピアネットワークの構築手法を示すフローチャート
【符号の説明】
【０１４８】
１０  アドレス情報サーバ
１１  ＣＰＵ
１２  ＲＡＭ
１３  ハードディスク
１４  通信部
２０  ユーザ端末
２１  ＣＰＵ
２２  ＲＡＭ
２３  ハードディスク
２４  通信部
２５  入力部
２６  表示部
【図１】
0005260070.tif 000002
【図２】
0005260070.tif 000003
【図３】
0005260070.tif 000004
【図４】
0005260070.tif 000005
【図５】
0005260070.tif 000006
【図６】
0005260070.tif 000007
【図７】
0005260070.tif 000008
【図８】
0005260070.tif 000009
【図９】
0005260070.tif 000010
【図１０】
0005260070.tif 000011
【図１１】
0005260070.tif 000012
【図１２】
0005260070.tif 000013
【図１３】
0005260070.tif 000014
【図１４Ａ】
0005260070.tif 000015
【図１４Ｂ】
0005260070.tif 000016
【図１４Ｃ】
0005260070.tif 000017
【図１４Ｄ】
0005260070.tif 000018
【図１４Ｅ】
0005260070.tif 000019
【図１５Ａ】
0005260070.tif 000020
【図１５Ｂ】
0005260070.tif 000021
【図１５Ｃ】
0005260070.tif 000022
【図１５Ｄ】
0005260070.tif 000023
【図１５Ｅ】
0005260070.tif 000024
【図１６Ａ】
0005260070.tif 000025
【図１６Ｂ】
0005260070.tif 000026
【図１６Ｃ】
0005260070.tif 000027
【図１６Ｄ】
0005260070.tif 000028
【図１６Ｅ】
0005260070.tif 000029
【図１７】
0005260070.tif 000030
【図１８】
0005260070.tif 000031
【図１９】
0005260070.tif 000032
【図２０】
0005260070.tif 000033
【図２１】
0005260070.tif 000034
【図２２】
0005260070.tif 000035
【図２３】
0005260070.tif 000036
【図２４】
0005260070.tif 000037
【図２５】
0005260070.tif 000038