(57)【要約】【課題】  ユーザが通信を申し込みやすい相手を容易に探すことのできる通信システムを提供する。【解決手段】  通信端末１は、他の通信端末と通信すると、その通信端末からユーザＩＤを受信し、そのユーザＩＤを含む通信者リスト５２を作成する。通信端末がサーバに接続すると、通信者リストをユーザＩＤと共にサーバに送信する。サーバは、通信端末から受信した通信者リストとユーザＩＤを相互に関連付けて記憶する一方で、その通信者リスト内のユーザＩＤと、その通信者リスト内のユーザＩＤに関連付けられた他の通信者リスト内のユーザＩＤとを集めて候補者リスト６０を作成し、通信端末に送る。通信端末は、候補者リストからユーザＩＤが選択されると、そのユーザＩＤを使用する他の通信端末とサーバを介して通信する。【選択図】  図１６
2006279814.tif 000002
【特許請求の範囲】
【請求項１】
サーバと、
前記サーバがアクセス可能な第１の記憶装置と、
通信ネットワークを介して前記サーバに接続し、当該サーバを介して相互に通信することの可能な複数の通信端末と、
を備え、一の前記通信端末が前記サーバに接続すると、前記サーバは、一以上のユーザＩＤを含む候補者リストを前記一の通信端末に送信し、前記一の通信端末は、前記候補者リスト中のユーザＩＤを指定する入力を受けると、当該指定されたユーザＩＤを使用する他の前記通信端末と前記サーバを介して通信する通信システムであって、
前記通信端末の各々は、第２の記憶装置を有しており、他の前記通信端末と通信すると、当該他の通信端末からユーザＩＤを受信し、当該ユーザＩＤを含む通信者リストを作成して前記第２の記憶装置に格納し、前記サーバに接続すると、前記第２の記憶装置から前記通信者リストを読み取り、当該通信端末が使用するユーザＩＤと共に前記サーバに送信し、
前記サーバは、一の前記通信端末から一の前記通信者リストおよび一の前記ユーザＩＤを受信すると、当該一の通信者リストを当該一のユーザＩＤに関連付けて前記第１の記憶装置に格納する一方で、前記一の通信者リスト内のユーザＩＤと、前記一の通信者リスト内のユーザＩＤに関連付けられて前記第１の記憶装置に格納された他の前記通信者リスト内のユーザＩＤとを集めて前記候補者リストを作成する、
通信システム。
【請求項２】
前記サーバは、
前記一の通信者リストから一のユーザＩＤを読み取り、
当該一のユーザＩＤを使用する前記通信端末が前記サーバに接続中であるか否かを判断し、
接続中であると判断したときに当該一のユーザＩＤを候補者ＩＤに選定し、
当該一のユーザＩＤに関連付けられて前記第１の記憶装置に格納された他の前記通信者リストからユーザＩＤを順次に読み取り、
読み取った各ユーザＩＤを使用する前記通信端末が当該サーバに接続中であるか否かを判断し、
接続中であると判断したときに当該ユーザＩＤを候補者ＩＤに選定し、
前記一の通信者リストから次のユーザＩＤを読み取る、
という処理を繰り返して選定した前記候補者ＩＤを集めて前記候補者リストを作成する、請求項１に記載の通信システム。
【請求項３】
一の前記通信端末が作成した前記通信者リスト内では、前記ユーザＩＤの各々が、当該ユーザＩＤを使用する他の前記通信端末と前記一の通信端末との通信回数に関連付けて格納されており、
前記サーバは、より多い前記通信回数に関連付けられた前記ユーザＩＤほど先に前記一の通信者リストから読み取る、
請求項２に記載の通信システム。
【請求項４】
前記通信端末の各々は、前記サーバを介することなく他の前記通信端末と直接通信を行うことが可能であり、前記通信回数は、この直接通信の回数である、請求項３に記載の通信システム。
【請求項５】
一の前記通信端末が作成した前記通信者リスト内では、当該通信者リスト内の各ユーザＩＤが、当該ユーザＩＤを使用する他の前記通信端末と前記一の通信端末との最新通信日時に更に関連付けられており、
前記サーバは、同じ前記通信回数に関連付けられた複数のユーザＩＤのうち、より新しい最新通信日時に関連付けられたユーザＩＤほど先に前記一の通信者リストから読み取る、
請求項３または４に記載の通信システム。
【請求項６】
前記サーバは、前記候補者リスト内のユーザＩＤの数が所定の上限に達したときに前記候補者リストの作成を終了する、請求項２〜５のいずれかに記載の通信システム。
【請求項７】
前記候補者リストでは、前記候補者ＩＤが選定された順序で前記候補者ＩＤが配列されている、請求項２〜６のいずれかに記載の通信システム。
【請求項８】
前記通信端末の各々は、表示装置を有しており、
前記通信端末は、前記サーバから前記候補者リストを受信すると、前記候補者ＩＤが配列された順序で前記候補者ＩＤを前記候補者リストから読み取り、当該候補者ＩＤに対応する表記を当該順序で配列して前記表示装置上に表示する、
請求項７に記載の通信システム。
【請求項９】
通信ネットワークを介して複数の通信端末が接続され、第１の記憶装置にアクセス可能なサーバであって、
前記複数の通信端末は、当該サーバを介して相互に通信することが可能であり、
前記通信端末の各々は、第２の記憶装置を有しており、他の前記通信端末と通信すると、当該他の通信端末からユーザＩＤを受信し、当該ユーザＩＤを含む通信者リストを作成して前記第２の記憶装置に格納し、前記サーバに接続すると、前記第２の記憶装置から前記通信者リストを読み取り、当該通信端末が使用するユーザＩＤと共に前記サーバに送信し、前記サーバから一以上のユーザＩＤを含む候補者リストを受信し、当該候補者リスト中のユーザＩＤを指定する入力を受けると、当該指定されたユーザＩＤを使用する他の前記通信端末と前記サーバを介して通信し、
一の前記通信端末から一の前記通信者リストおよび一の前記ユーザＩＤを受信すると、当該一の通信者リストを当該一のユーザＩＤに関連付けて前記第１の記憶装置に格納する手段と、
前記一の通信者リスト内のユーザＩＤと、前記一の通信者リスト内のユーザＩＤに関連付けられて前記第１の記憶装置に格納された他の前記通信者リスト内のユーザＩＤとを集めて前記候補者リストを作成する手段と、
前記候補者リストを前記一の通信端末に送信する手段と、
を備えるサーバ。
【請求項１０】
前記候補者リストを作成する手段は、
前記一の通信者リストから一のユーザＩＤを読み取り、
当該一のユーザＩＤを使用する前記通信端末が前記サーバに接続中であるか否かを判断し、
接続中であると判断したときに当該一のユーザＩＤを候補者ＩＤに選定し、
当該一のユーザＩＤに関連付けられて前記第１の記憶装置に格納された他の前記通信者リストからユーザＩＤを順次に読み取り、
読み取った各ユーザＩＤを使用する前記通信端末が当該サーバに接続中であるか否かを判断し、
接続中であると判断したときに当該ユーザＩＤを候補者ＩＤに選定し、
前記一の通信者リストから次のユーザＩＤを読み取る、
という処理を繰り返して選定した前記候補者ＩＤを集めて前記候補者リストを作成する、請求項９に記載のサーバ。
【請求項１１】
一の前記通信端末が作成した前記通信者リスト内では、前記ユーザＩＤの各々が、当該ユーザＩＤを使用する他の前記通信端末と前記一の通信端末との通信回数に関連付けて格納されており、
前記候補者リストを作成する手段は、より多い前記通信回数に関連付けられた前記ユーザＩＤほど先に前記一の通信者リストから読み取る、
請求項１０に記載のサーバ。
【請求項１２】
前記通信端末の各々は、前記サーバを介することなく他の前記通信端末と直接通信を行うことが可能であり、前記通信回数は、この直接通信の回数である、請求項１１に記載のサーバ。
【請求項１３】
一の前記通信端末が作成した前記通信者リスト内では、当該通信者リスト内の各ユーザＩＤが、当該ユーザＩＤを使用する他の前記通信端末と前記一の通信端末との最新通信日時に更に関連付けられており、
前記候補者リストを作成する手段は、同じ前記通信回数に関連付けられた複数のユーザＩＤのうち、より新しい最新通信日時に関連付けられたユーザＩＤほど先に前記一の通信者リストから読み取る、
請求項１１または１２に記載のサーバ。
【請求項１４】
前記候補者リストを作成する手段は、前記候補者リスト内のユーザＩＤの数が所定の上限に達したときに前記候補者リストの作成を終了する、請求項１０〜１３のいずれかに記載のサーバ。
【請求項１５】
前記候補者リストでは、前記候補者ＩＤが選定された順序で前記候補者ＩＤが配列されている、請求項１０〜１４のいずれかに記載のサーバ。
【請求項１６】
通信ネットワークを介して複数の通信端末が接続され、第１の記憶装置にアクセス可能なサーバを制御するプログラムであって、
前記複数の通信端末は、当該サーバを介して相互に通信することが可能であり、
前記通信端末の各々は、第２の記憶装置を有しており、他の前記通信端末と通信すると、当該他の通信端末からユーザＩＤを受信し、当該ユーザＩＤを含む通信者リストを作成して前記第２の記憶装置に格納し、前記サーバに接続すると、前記第２の記憶装置から前記通信者リストを読み取り、当該通信端末が使用するユーザＩＤと共に前記サーバに送信し、前記サーバから一以上のユーザＩＤを含む候補者リストを受信し、当該候補者リスト中のユーザＩＤを指定する入力を受けると、当該指定されたユーザＩＤを使用する他の前記通信端末と前記サーバを介して通信し、
一の前記通信端末から一の前記通信者リストおよび一の前記ユーザＩＤを受信すると、当該一の通信者リストを当該一のユーザＩＤに関連付けて前記第１の記憶装置に格納する一方で、前記一の通信者リスト内のユーザＩＤと、前記一の通信者リスト内のユーザＩＤに関連付けられて前記第１の記憶装置に格納された他の前記通信者リスト内のユーザＩＤとを集めて前記候補者リストを作成するステップと、
前記候補者リストを前記一の通信端末に送信するステップと、
をサーバに実行させるプログラム。
【請求項１７】
サーバと、
前記サーバがアクセス可能な第１の記憶装置と、
第２の記憶装置を有し、通信ネットワークを介して前記サーバに接続する複数の通信端末と、
を備える通信システムにおいて、前記複数の通信端末間で通信を行う方法であって、
一の前記通信端末が、他の前記通信端末と通信したときに、当該他の通信端末からユーザＩＤを受信するステップと、
前記他の通信端末から受信したユーザＩＤを列挙する通信者リストを作成して前記第２の記憶装置に格納するステップと、
前記通信端末が、前記通信ネットワークを介して前記サーバに接続したときに、前記第２の記憶装置から前記通信者リストを読み取り、当該通信端末が使用するユーザＩＤと共に前記サーバに送信するステップと、
前記サーバが、一の前記通信端末から一の前記通信者リストおよび一の前記ユーザＩＤを受信すると、当該一の通信者リストを当該一のユーザＩＤに関連付けて前記第１の記憶装置に格納する一方で、前記一の通信者リスト内のユーザＩＤと、前記一の通信者リスト内のユーザＩＤに関連付けられて前記第１の記憶装置に格納された他の前記通信者リスト内のユーザＩＤとを集めて前記候補者リストを作成するステップと、
サーバが、一以上のユーザＩＤを含む候補者リストを前記一の通信端末に送信するステップと、
前記一の通信端末が、前記候補者リスト中のユーザＩＤを指定する入力を受けて、当該指定されたユーザＩＤを使用する他の通信端末と前記サーバを介して通信するステップと、
を備える通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークゲームやオンラインチャットなど、サーバを介した通信端末間の通信に関する。
【背景技術】
【０００２】
従来、通信ケーブル等を介して相互に接続することにより対戦ゲームを行うことができる携帯型ゲーム機が知られている。また、最近では、近距離無線通信機能を有する携帯型ゲーム機も市販されており、これを使用すれば、友人同士で気軽に対戦ゲームを楽しむことができる。しかし、このような対戦ゲームを行うのは大抵同じ相手となりがちで、飽きがきやすい。
【０００３】
近年では、インターネットの普及に伴い、多数のユーザが共通のサーバを介して各自の通信端末（ゲーム機、携帯電話機、パーソナルコンピュータなど）の間で通信を行うことによりプレイするネットワークゲームも普及している。ネットワークゲームには、不特定多数のユーザから対戦相手を探すことができるという、直接対戦形式のゲームにはないメリットがある。しかし、全く見知らぬ相手と対戦ゲームを行うことに抵抗を感じるユーザも少なくない。このようなユーザは、互いの通信端末をサーバを介さずに直接接続して対戦するような友人がいれば、通信端末をサーバに接続したときでも、まず、その友人にコンタクトを取ることが多い。このような友人関係をネットワークゲームの内容に反映するネットワークゲーム情報管理システムが公開されている（特許文献１を参照）。
【特許文献１】特開２００３−９３７４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、友人ユーザがサーバに接続していないときは、依然として見知らぬユーザにコンタクトを取らなければゲームをプレイすることができず、敷居の高さが残る。このような問題は、オンラインゲームに限らず、不特定多数のユーザの通信端末がサーバを介して相互に通信を行う他の任意のシステム（例えば、オンラインチャットシステムやファイル交換システム）でも起こりうる。このような通信システムでは、ユーザが友人以外のユーザに通信を申し込みやすくし、友人関係の幅を広げられるようにする工夫が求められている。
【０００５】
そこで、本発明は、ユーザが通信を申し込みやすい相手を容易に探せるようにする通信システム、サーバ、プログラムおよび通信方法を提供することを課題とする。
【課題を解決するための手段】
【０００６】
一つの側面において、本発明は、サーバと、サーバがアクセス可能な第１の記憶装置と、通信ネットワークを介してサーバに接続し、サーバを介して相互に通信することの可能な複数の通信端末とを備える通信システムに関する。一の通信端末がサーバに接続すると、サーバは、一以上のユーザＩＤを含む候補者リストを当該一の通信端末に送信し、当該一の通信端末は、候補者リスト中のユーザＩＤを指定する入力を受けると、当該指定されたユーザＩＤを使用する他の通信端末とサーバを介して通信する。通信端末の各々は、第２の記憶装置を有しており、他の通信端末と通信すると、当該他の通信端末からユーザＩＤを受信し、そのユーザＩＤを含む通信者リストを作成して第２の記憶装置に格納する。通信者リストの一例は、下記の実施形態における友人リストである。通信端末の各々は、サーバに接続すると、第２の記憶装置から通信者リストを読み取り、当該通信端末が使用するユーザＩＤと共にサーバに送信する。サーバは、一の通信端末から一の通信者リストおよび一のユーザＩＤを受信すると、当該一の通信者リストを当該一のユーザＩＤに関連付けて第１の記憶装置に格納する一方で、一の通信者リスト内のユーザＩＤと、一の通信者リスト内のユーザＩＤに関連付けられて第１の記憶装置に格納された他の通信者リスト内のユーザＩＤとを集めて候補者リストを作成する。
【０００７】
通信を希望するユーザの通信端末で作成された通信者リスト内のユーザＩＤは、そのユーザが過去に通信を行ったことのあるユーザのＩＤなので、そのユーザにとって通信を申し込みやすい。また、その通信者リスト内のユーザＩＤに関連付けられた他の通信者リスト内のユーザＩＤを使用するユーザも、共通のユーザと通信したことを話題にできる相手なので、全くつながりのないユーザに比べれば、通信を希望するユーザにとって通信を申し込みやすい。通信を希望するユーザの通信端末には、このようなユーザＩＤを集めた候補者リストが提供されるので、当該ユーザは、通信を申し込みやすい相手を容易に探すことができる。これにより、通信システムを利用するユーザの利便性が高まる。
【０００８】
サーバは、一の通信者リストから一のユーザＩＤを読み取り、当該一のユーザＩＤを使用する通信端末がサーバに接続中であるか否かを判断し、接続中であると判断したときに当該一のユーザＩＤを候補者ＩＤに選定し、当該一のユーザＩＤに関連付けられて第１の記憶装置に格納された他の通信者リストからユーザＩＤを順次に読み取り、読み取った各ユーザＩＤを使用する通信端末がサーバに接続中であるか否かを判断し、接続中であると判断したときに当該ユーザＩＤを候補者ＩＤに選定し、前記一の通信者リストから次のユーザＩＤを読み取る、という処理を繰り返して選定した候補者ＩＤを集めて候補者リストを作成してもよい。
【０００９】
この構成では、サーバに通信端末を接続させているユーザのＩＤのみが候補者リストに登録されるので、オフラインのユーザＩＤを候補者ＩＤとしてユーザに提供して、ユーザの時間を浪費させるようなことはない。
【００１０】
一の通信端末が作成した通信者リスト内では、ユーザＩＤの各々が、当該ユーザＩＤを使用する他の通信端末と前記一の通信端末との通信回数に関連付けて格納されていてもよい。サーバは、より多い通信回数に関連付けられたユーザＩＤほど先に一の通信者リストから読み取ってもよい。
【００１１】
通信回数の多いユーザＩＤや、そのようなユーザＩＤに関連付けられた通信者リスト内のユーザＩＤが優先的に候補者の選定対象とされるので、選定された候補者ＩＤがユーザにとって実際に通信を申し込みやすい相手を表している可能性が高い。
【００１２】
通信端末の各々は、サーバを介することなく他の通信端末と直接通信を行うことが可能であってもよい。上記の通信回数は、この直接通信の回数であってもよい。
【００１３】
サーバを介さない直接通信を行ったことのあるユーザ同士は、現実に面識があり、したがって、通信を申し込みやすい関係にあると考えられる。上記の構成では、この直接通信の回数を重視した順序で候補者ＩＤが選定されるので、選定された候補者ＩＤがユーザにとって実際に通信を申し込みやすい相手を表している可能性が更に高まる。
【００１４】
一の通信端末が作成した通信者リスト内では、当該通信者リスト内の各ユーザＩＤが、当該ユーザＩＤを使用する他の通信端末と前記一の通信端末との最新通信日時に更に関連付けられていてもよい。サーバは、同じ通信回数に関連付けられた複数のユーザＩＤのうち、より新しい最新通信日時に関連付けられたユーザＩＤほど先に一の通信者リストから読み取ってもよい。
【００１５】
通信回数が同じなら、より新しい日時に通信を行っているユーザの方が通信を申し込みやすい相手と考えられる。上記の構成では、最新通信日時の新しいユーザＩＤが優先的に候補者ＩＤとして選定されるので、選定された候補者ＩＤがユーザにとって実際に通信を申し込みやすい相手を表している可能性がいっそう高まる。
【００１６】
サーバは、候補者リスト内のユーザＩＤの数が所定の上限に達したときに候補者リストの作成を終了してもよい。候補者リスト内の候補者ＩＤの数を適当に制限することで、候補者リストが閲覧しやすくなり、サーバ、通信端末双方の処理負担が軽減される。
【００１７】
候補者リストでは、候補者ＩＤが選定された順序で候補者ＩＤが配列されていてもよい。候補者ＩＤが選定された順序のまま候補者リストに候補者ＩＤを格納することで、候補者ＩＤを一時的に記憶するための記憶容量を抑えることができ、また、効率良く候補者リストを作成できる。また、候補者ＩＤの配列順が、そのまま候補者ＩＤの優先順位を表すので、優先順位を表すために特別なデータを用意する必要はない。したがって、候補者リストを記憶するための記憶容量を削減できる。
【００１８】
通信端末の各々は、表示装置を有していてもよい。通信端末は、サーバから候補者リストを受信すると、候補者ＩＤが配列された順序で候補者ＩＤを候補者リストから読み取り、当該候補者ＩＤに対応する表記を当該順序で配列して表示装置上に表示してもよい。候補者ＩＤに対応する表記の一例は、候補者ＩＤに対応するユーザ名である。
【００１９】
この構成では、候補者ＩＤをその配列順に読み取り、対応する表記をその配列順で表示するため、候補者ＩＤや表記データを一時的に記憶するための記憶容量を抑えることができ、また、表示のための処理を効率良く実行できる。
【００２０】
候補者ＩＤに対応する表記の配列順序は、任意の順序でソートできるようになっていてもよい。これにより、候補者ＩＤの数が多い場合でも、所望の通信相手を容易に探索できるようになる。
【００２１】
別の側面において、本発明は、通信ネットワークを介して複数の通信端末が接続され、第１の記憶装置にアクセス可能なサーバに関する。これら複数の通信端末は、当該サーバを介して相互に通信することが可能である。通信端末の各々は、第２の記憶装置を有しており、他の通信端末と通信すると、当該他の通信端末からユーザＩＤを受信し、そのユーザＩＤを含む通信者リストを作成して第２の記憶装置に格納する。また、通信端末の各々は、サーバに接続すると、第２の記憶装置から通信者リストを読み取り、当該通信端末が使用するユーザＩＤと共にサーバに送信し、サーバから一以上のユーザＩＤを含む候補者リストを受信し、当該候補者リスト中のユーザＩＤを指定する入力を受けると、当該指定されたユーザＩＤを使用する他の通信端末とサーバを介して通信する。サーバは、一の通信端末から一の通信者リストおよび一のユーザＩＤを受信すると、当該一の通信者リストを当該一のユーザＩＤに関連付けて第１の記憶装置に格納する手段と、前記一の通信者リスト内のユーザＩＤと、前記一の通信者リスト内のユーザＩＤに関連付けられて第１の記憶装置に格納された他の通信者リスト内のユーザＩＤとを集めて候補者リストを作成する手段と、その候補者リストを前記一の通信端末に送信する手段とを備えている。
【００２２】
更に別の側面において、本発明は、通信ネットワークを介して複数の通信端末が接続され、第１の記憶装置にアクセス可能なサーバを制御するプログラムに関する。これら複数の通信端末は、サーバを介して相互に通信することが可能である。通信端末の各々は、第２の記憶装置を有しており、他の通信端末と通信すると、当該他の通信端末からユーザＩＤを受信し、そのユーザＩＤを含む通信者リストを作成して第２の記憶装置に格納する。また、通信端末の各々は、サーバに接続すると、第２の記憶装置から通信者リストを読み取り、当該通信端末が使用するユーザＩＤと共にサーバに送信し、サーバから一以上のユーザＩＤを含む候補者リストを受信し、当該候補者リスト中のユーザＩＤを指定する入力を受けると、当該指定されたユーザＩＤを使用する他の通信端末とサーバを介して通信する。このプロラムは、一の通信端末から一の通信者リストおよび一のユーザＩＤを受信すると、当該一の通信者リストを当該一のユーザＩＤに関連付けて第１の記憶装置に格納する一方で、前記一の通信者リスト内のユーザＩＤと、前記一の通信者リスト内のユーザＩＤに関連付けられて第１の記憶装置に格納された他の通信者リスト内のユーザＩＤとを集めて候補者リストを作成するステップと、その候補者リストを前記一の通信端末に送信するステップとをサーバに実行させる。
【００２３】
更に別の側面において、本発明は、サーバと、サーバがアクセス可能な第１の記憶装置と、第２の記憶装置を有し、通信ネットワークを介してサーバに接続する複数の通信端末とを備える通信システムにおいて、これら複数の通信端末間で通信を行う方法に関する。この通信方法は、一の通信端末が、他の通信端末と通信したときに、当該他の通信端末からユーザＩＤを受信するステップと、他の通信端末から受信したユーザＩＤを列挙する通信者リストを作成して第２の記憶装置に格納するステップと、通信端末が、通信ネットワークを介してサーバに接続したときに、第２の記憶装置から通信者リストを読み取り、当該通信端末が使用するユーザＩＤと共にサーバに送信するステップと、サーバが、一の通信端末から一の通信者リストおよび一のユーザＩＤを受信すると、当該一の通信者リストを当該一のユーザＩＤに関連付けて第１の記憶装置に格納する一方で、前記一の通信者リスト内のユーザＩＤと、前記一の通信者リスト内のユーザＩＤに関連付けられて第１の記憶装置に格納された他の通信者リスト内のユーザＩＤとを集めて候補者リストを作成するステップと、サーバが、一以上のユーザＩＤを含む候補者リストを前記一の通信端末に送信するステップと、前記一の通信端末が、候補者リスト中のユーザＩＤを指定する入力を受けて、当該指定されたユーザＩＤを使用する他の通信端末とサーバを介して通信するステップと、を備えている。
【発明の効果】
【００２４】
本発明によれば、ユーザが通信を申し込みやすい相手を容易に探せるようにする通信システム、サーバ、プログラム、および通信方法を提供し、通信システムを利用するユーザの利便性を高めることができる。
【発明を実施するための最良の形態】
【００２５】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一の要素には同一の符号を付し、重複する説明を省略する。
【００２６】
以下では、本発明に係る通信システムの一実施形態として、ネットワークゲームシステムを説明する。図１は、このネットワークゲームシステム１００の構成を示す概略図である。ネットワークゲームシステム１００は、複数の通信端末１と、通信ネットワーク２と、サーバ３から構成されている。通信端末１の各々は、通信ネットワーク２を介してサーバ３に接続し、サーバ３を介して他の通信端末と通信を行うことが可能である。ネットワークゲームシステム１００では、このような通信を利用して、一の通信端末１を操作するユーザが他の通信端末１を操作するユーザと対戦プレイを楽しむことができるようになっている。
【００２７】
図２は、通信端末１間の通信の形態を説明するための概略図である。図２に示されるように、通信端末１は、サーバ３を介して他の通信端末１と通信できるほか、他の通信端末１と直接、通信を行うことも可能である。この直接通信は、例えば、通信端末１同士を通信ケーブルを用いて接続し、あるいは通信端末１間で無線通信を行うことにより実現することができる。したがって、複数のユーザが通信端末１を持ち寄って直接通信を行うことにより、サーバ３を介さずに対戦を行うことが可能である。
【００２８】
通信端末１は、サーバ３のクライアントとして動作する。通信端末１の例としては、携帯電話機や、通信機能を有するパーソナルコンピュータ、ゲーム機、ＰＤＡ（Personal Data Assistant）などを挙げることができる。通信端末１は、携帯電話機などの移動体端末であってもよいし、デスクトップ型コンピュータなどの固定端末であってもよい。
【００２９】
図３は、通信端末１の構成を示すブロック図である。通信端末１は、ＣＰＵ（Central Processing Unit：中央処理装置）１０、ＲＡＭ（Random Access Memory：ランダムアクセスメモリ）１２、ストレージ部１４、通信部１６、入力装置２０、および表示装置２２を有する。これらの構成要素はバス２４によって相互に接続されている。データおよび制御信号はバス２４を通じてこれらの構成要素間を伝送される。
【００３０】
ＣＰＵ１０は、ゲームプログラムを実行して通信端末１の動作を制御する制御演算装置である。ＲＡＭ１２は、ＣＰＵ１０がゲームプログラムを実行するために使用する主記憶装置である。ＲＡＭ１２には、ＣＰＵ１０が実行するゲームプログラムおよびその実行に必要なデータが格納される。
【００３１】
ストレージ部１４は、通信端末１の補助記憶装置であり、内蔵メモリ１４ａと、外付けメモリ１５用の読み取り装置１４ｂとを含んでいる。内蔵メモリ１４ａは、通信端末１の内部に固定された記憶装置であり、例えば、フラッシュメモリなどの不揮発性メモリや、ハードディスクドライブである。内蔵メモリ１４ａには、ユーザデータ５１、友人リスト５２および対戦履歴リスト５３が格納される。これらのデータの詳細については、後述する。
【００３２】
読み取り装置１４ｂは、通信端末１に着脱自在の外付けメモリ１５からデータを読み取るための装置である。外付けメモリ１５は、例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、その他のディスク媒体、または各種のカード型メモリである。
【００３３】
本実施形態では、ゲームプログラムが内蔵メモリ１４ａに格納されている。ゲームプログラムの実行時には、内蔵メモリ１４ａからＲＡＭ１２にゲームプログラムが読み込まれる。ただし、ゲームプログラムは、外付けメモリ１５に格納され、読み取り装置１４ｂによってＲＡＭ１２に読み込まれてもよい。
【００３４】
通信部１６は、通信インターフェース１７と個別通信部１８を含んでいる。通信インターフェース１７は、通信ネットワーク２に接続して、通信端末１とサーバ３との間の通信を制御する。通信インターフェース１７と通信ネットワーク２との接続は、無線方式でも有線方式でもよい。個別通信部１８は、他の通信端末１の個別通信部１８と接続され、通信端末１間でのサーバ３を介さない直接の通信を制御する。個別通信部１８同士の接続は、無線方式（例えば赤外線通信、無線ＬＡＮ）でも有線方式（例えばケーブル接続）でもよい。
【００３５】
入力装置２０は、通信端末１に命令およびデータを入力するために使用される。入力装置２０は、ボタン、ダイヤル、キーボード、マウス、スタイラスなど、ユーザによって直接操作される装置であってもよいし、ユーザの発する音声を判別する音声認識装置であってもよい。
【００３６】
表示装置２２は、ＣＰＵ１０の制御のもとで各種の情報を表示する。後述するように、サーバ３から受信する対戦候補者のリストも表示装置２２上に表示される。
【００３７】
サーバ３は、クライアントである通信端末１にネットワークゲームサービスを提供するコンピュータシステムである。サーバ３は、単一のコンピュータから構成されていてもよいし、相互に連携して動作する複数のコンピュータから構成されていてもよい。
【００３８】
図４は、サーバ３の構成を示すブロック図である。サーバ３は、ＣＰＵ３０、ＲＡＭ３２、ハードディスクドライブ３４、通信装置３６、入力装置３８、および表示装置４０を有する。これらの構成要素はバス４２によって相互に接続されている。データおよび制御信号はバス４２を通じてこれらの構成要素間を伝送される。
【００３９】
ＣＰＵ３０は、サーバプログラムを実行してサーバ３の動作を制御する制御演算装置である。ＲＡＭ３２は、ＣＰＵ３０がサーバプログラムを実行するために使用する主記憶装置である。ＲＡＭ３２には、ＣＰＵ３０が実行するサーバプログラムおよびその実行に必要なデータが格納される。
【００４０】
ハードディスクドライブ３４は、サーバ３の補助記憶装置である。ハードディスクドライブ３４には、サーバプログラムのほかに、ユーザ情報データベース５４および友人リスデータベース５５が格納されている。これらのデータベース（以下、「ＤＢ」）の詳細は後述する。サーバの起動時には、ハードディスクドライブ３４からＲＡＭ３２にサーバプログラムが読み込まれ、ＣＰＵ３０によって実行される。
【００４１】
通信装置３６は、通信ネットワーク２とサーバ３との間の通信を制御する。入力装置３８は、サーバ３に命令およびデータを入力するために使用される。表示装置４０は、ＣＰＵ３０の制御のもとで各種の情報を表示する。
【００４２】
図５は、通信端末１の内蔵メモリ１４ａに記憶されたユーザデータ５１の構成を示す概略図である。ユーザデータ５１は、通信端末１を操作するユーザに関する情報、すなわち、「ユーザＩＤ」、「ユーザ名」、「登録日時」および「最新対戦日時」を含んでいる。これらの情報は相互に関連付けられている。ユーザＩＤは、この通信端末１を操作するユーザに割り当てられた固有のＩＤ（Identification Data：識別データ）であり、ユーザ名は、ユーザがゲームプレイ中に使用する名前である。登録日時は、ユーザがサーバ３からユーザＩＤの発行を受けた日時であり、最新対戦日時は、ユーザが他のユーザと対戦を行った最新の日時である。
【００４３】
図６は、通信端末１の内蔵メモリ１４ａに記憶された友人リスト５２の構成を示す概略図である。図６（ａ）に示されるように、友人リスト５２は、順次に配列された複数の友人データ５６から構成されている。これらの友人データ５６は、優先順位の高い順に友人リスト５２の先頭から並べられている。また、友人リスト５２に格納できる友人データ５６の数には上限が定められている。以下では、この上限をＭ（自然数）で表す。
【００４４】
図６（ｂ）は、友人データの構成を概略的に示している。本実施形態では、過去に対戦をした相手ユーザを「友人」とみなし、その相手ユーザのＩＤ、その他の情報を集めて友人データ５６を作成する。図６（ｂ）に示されるように、友人データ５６は、そのデータ項目として、「ユーザＩＤ」、「ユーザ名」、「最古対戦日時」、「最新対戦日時」、「直接対戦回数」、「直接対戦勝敗」、「サーバ対戦回数」、および「サーバ対戦勝敗」を含んでいる。これらの情報は相互に関連付けられている。ユーザＩＤおよびユーザ名は、あるユーザが通信端末１を操作して他のユーザ（すなわち、対戦者）と対戦を行ったときの当該対戦者のユーザＩＤおよびユーザ名である。最古対戦日時および最新対戦日時は、両ユーザが対戦した最も古い日時と最も新しい日時である。直接対戦回数は、両ユーザの通信端末１をサーバ３を介さずに直接接続して対戦を行った回数であり、直接対戦勝敗は、それらの対戦の勝敗結果を示すデータである。サーバ対戦回数は、両ユーザの通信端末１をサーバ３に接続して対戦を行った回数であり、サーバ対戦勝敗は、それらの対戦の勝敗結果を示すデータである。
【００４５】
友人リスト５２内では、直接対戦回数が多い友人データ５６ほど上位に配置される。この点については、後で詳細に説明する。なお、本明細書では、友人リスト５２に登録された友人データ５６内のユーザＩＤを使用するユーザのことを、「友人リスト５２に登録されたユーザ」と述べることがある。
【００４６】
図７は、通信端末１の内蔵メモリ１４ａに記憶された対戦履歴リスト５３の構成を示す概略図である。図７（ａ）に示されるように、対戦履歴リスト５３は、複数の対戦履歴データ５７から構成されている。なお、対戦履歴リスト５３中の対戦履歴データ５７の数には上限を設けてもよい。
【００４７】
図７（ｂ）は、対戦履歴データ５７の構成を概略的に示している。図７（ｂ）に示されるように、対戦履歴データ５７は、そのデータ項目として、「ユーザＩＤ」、「勝敗」、および「対戦形式」を含んでいる。これらの情報は相互に関連付けられている。ユーザＩＤは、ユーザが通信端末１を操作して他のユーザ（すなわち、対戦者）と対戦を行ったときの当該対戦者のユーザＩＤである。勝敗は、対戦の結果、すなわち勝ちまたは敗けのいずれかを示すデータである。対戦形式は、当該対戦が通信端末１をサーバ３を介さず直接接続して行う直接対戦か、通信端末１をサーバ３に接続して行うサーバ対戦のいずれかを示すデータである。
【００４８】
なお、通信端末１を複数のユーザで共用する場合、内蔵メモリ１４ａには複数のユーザデータ５１、友人リスト５２および対戦履歴リスト５３が記憶されることになる。各ユーザのユーザデータ５１、友人リスト５２および対戦履歴リスト５３は、当該ユーザのＩＤに関連付けて記憶される。ユーザデータ５１、友人リスト５２および対戦履歴リスト５３は、一つのセーブデータとして記憶されていてもよい。
【００４９】
以下では、通信端末１およびサーバ３によって実行される処理を説明する。図８は、通信端末１上でのゲーム実行処理を示すフローチャートである。この処理は、通信端末１上で動作するゲームプログラムによって制御される。ゲームプログラムが実行されると、最初に、当該ゲームをプレイするユーザが新規のユーザ名を使用するか否かを照会する画面が表示装置２２上に表示される（ステップＳ８０２）。ユーザが新規のユーザ名を使用することを選択すると（ステップＳ８０２にてＹｅｓ）、ユーザ情報登録処理が実行される（ステップＳ８０４）。
【００５０】
図９は、ユーザ情報登録処理を示すフローチャートである。この図には、この処理に関連してサーバ３が実行する処理のフローも併せて示されている。この処理は、サーバ上で動作するサーバプログラムによって制御される。
【００５１】
通信端末１は、ユーザにユーザ名の入力を促す画面を表示して、ユーザ名の入力を受け付ける（ステップＳ９０２）。ユーザが入力装置２０を操作してユーザ名を入力すると（ステップＳ９０４）、通信端末１は、入力されたユーザ名と共にＩＤ発行要求をサーバ３に送信する（ステップＳ９０６）。サーバ３は、ＩＤ発行要求とユーザ名を受信すると（ステップＳ９２２）、そのユーザ名に固有のユーザＩＤを発行し、その発行日時と共に通信端末１に送信する（ステップＳ９２４）。なお、サーバ３から通信端末１へデータ送信を行う際の通信端末１の特定は、通信端末１から送信された要求に含まれるＩＰアドレスを用いて行う。この点は、以下の処理においても同様である。
【００５２】
サーバ３は更に、当該ユーザ名およびユーザＩＤを相互に関連付けて、ハードディスクドライブ３４内のユーザ情報データベース５４に登録する（ステップＳ９２６）。図１０は、ユーザ情報データベース５４の構成を示す概略図である。図１０（ａ）に示されるように、ユーザ情報データベース５４は、ユーザデータ５８を集積するデータベースである。図１０（ｂ）に示されるように、ユーザデータ５８は、上述した通信端末１側のユーザデータ５１と同じ情報を含んでいる。サーバ３は、ユーザＩＤおよびユーザ名と共にユーザＩＤを発行した日時を相互に関連付けてユーザデータ５８を作成し、ユーザ情報データベース５４内に格納する。ここで、ＩＤ発行日時は、ユーザデータ５１における「登録日時」として記憶される。また、ここでは、ユーザデータ５８内の最新対戦日時は空白とされる。サーバ３は、ユーザ情報データベース５４内のユーザデータ５８に自由にアクセスすることができる。
【００５３】
なお、通信端末１へのユーザＩＤの送信（ステップＳ９０４）とユーザ情報データベース５４への登録（ステップＳ９３６）とは逆の順序で実行してもよいし、並列して実行してもよい。
【００５４】
通信端末１は、サーバ３からユーザＩＤを受信すると（ステップＳ９０８）、そのユーザＩＤを、ステップＳ９０４で入力されたユーザ名およびサーバ３から受信したＩＤ発行日時に関連付けてユーザデータ５１を作成し、内蔵メモリ１４ａに記憶する（ステップＳ９１０）。ここでも、ＩＤ発行日時は、ユーザデータ５１における「登録日時」として記憶され、また、ユーザデータ５１内の「最新対戦日時」は空白とされる。
【００５５】
再び図８を参照する。ユーザが新規ユーザ名を使用しないことを選択すると（ステップＳ８０２にてＮｏ）、通信端末１は、内蔵メモリ１４ａ内のユーザデータ５１から登録済みのユーザ名を読み取り、それらのユーザ名を画面に表示し、ユーザに以降のゲームプレイで使用するユーザ名の選択を促す（ステップＳ８０６）。ユーザが入力装置２０を操作してユーザ名を選択し（ステップＳ８０８）、あるいはユーザデータ登録処理（ステップＳ８０４）が完了すると、通信端末１は、タイトル画面を表示し、命令の入力を待機する（ステップＳ８１０）。
【００５６】
タイトル画面には、ユーザがプレイ可能な幾つかのプレイモードを表すボタンが表示される。これらのプレイモードとしては、シングルプレイ、直接対戦およびサーバ対戦がある。シングルプレイは、ユーザが単独でゲームをプレイするモードである。直接対戦およびサーバ対戦は、ユーザ同士で対戦を行うプレイモードである。なお、これらの対戦は、３人以上のユーザが同時に参加して行われるものであってもよい。タイトル画面には、ゲームプログラムの終了を命令するための終了ボタンも表示される。ユーザは入力装置２０を操作していずれかのボタンをクリックすることにより、そのボタンに対応したプレイモードの指定あるいはゲームプログラムの終了を通信端末１に命令することができる。
【００５７】
ゲームプログラムの終了が命令されると（ステップＳ８１２にてＹｅｓ）、タイトル画面がクリアされ、ゲームプログラムが終了する。ゲームプログラムの終了が命令されず（ステップＳ８１２にてＮｏ）、いずれかのプレイモードが指定されると（ステップＳ８１４）、そのプレイモードに対応した処理が実行される。以下では、各プレイモードに対応する処理を順次に説明する。
【００５８】
ステップＳ８１４にてシングルプレイモードが指定されると、通信端末１はシングルゲーム処理を実行する（ステップＳ８１６）。この場合、通信端末１は、他の通信端末１と通信を行わずに、スタンドアロンでシングルゲーム用のプログラムを実行する。
【００５９】
ステップＳ８１４にて直接対戦モードが指定されると、通信端末１は直接対戦処理を実行する（ステップＳ８１８）。直接対戦モードは、通信端末１が、個別通信部１８を介して、他の通信端末１と直接の通信接続を確立していることが前提となる。以下では、一方の通信端末１を操作するユーザを単に「ユーザ」と呼び、他方の通信端末１を操作するユーザを「対戦者」と呼ぶことにする。
【００６０】
図１１は、直接対戦処理を示すフローチャートである。この処理では、まず、通信端末１間の通信接続が確立されているか否かが確認される（ステップＳ１１０２）。通信接続が確立されていない場合、通信端末１はエラーメッセージを表示した後、タイトル画面を再び表示する。通信接続が確立されていれば、通信端末１間でユーザ名およびユーザＩＤの交換が行われる（ステップＳ１１０４）。通信端末１は、ステップＳ８０８で選択され、あるいはユーザデータ登録処理（Ｓ８０４）で入力されたユーザ名と、そのユーザ名に関連付けられたユーザＩＤをユーザデータ５１から読み取り、対戦者の通信端末１に送信する。対戦者の通信端末側でも同様の処理が行われる。こうして、双方の通信端末１は、ユーザ名およびユーザＩＤを交換することになる。対戦者の通信端末１から受信したユーザ名およびユーザＩＤは、ＲＡＭ１２に格納されるが、必要に応じて内蔵メモリ１４ａに退避させてもよい。
【００６１】
次に、通信端末１は直接対戦ゲームを実行する（ステップＳ１１０６）。通信端末１は、対戦者の通信端末１から操作情報（対戦者がどのように通信端末１を操作したかに関する情報）を取得し、自身の操作情報と併せて所定の方法で処理し、直接対戦ゲームを進行させる。
【００６２】
直接対戦ゲームが終了すると、通信端末１は、内蔵メモリ１４ａ内の各種の情報、すなわちユーザデータ５１、友人リスト５２、および対戦履歴リスト５３を更新する（ステップＳ１１０８）。図１２は、この情報更新処理を示すフローチャートである。この処理では、まず、ユーザデータ５１が更新される（ステップＳ１２０１）。具体的には、ユーザデータ５１内の最新対戦日時が今回の対戦日時に書き換えられる。
【００６３】
次に、通信端末１は、必要に応じて対戦者のユーザデータ５１を友人リスト５２に登録する。具体的には、まず、対戦者のユーザデータ５１が友人リスト５２にすでに登録されているか否かが判断される（ステップＳ１２０２）。通信端末１は、ステップＳ１１０４で受信した対戦者のユーザＩＤを友人リスト５２内で検索し、当該ユーザＩＤが発見されないときは、対戦者のユーザデータが登録されていないと判断する（ステップＳ１２０２にてＮｏ）。
【００６４】
この場合、通信端末１は、友人リスト５２への登録ユーザ数が上限に達しているか否かを判断する（ステップＳ１２０４）。登録ユーザ数が上限に達している場合（ステップＳ１２０４にてＹｅｓ）、優先順位の最も低い友人データが削除される（ステップＳ１２０６）。続いて、対戦者に関する友人データ５６が作成される（ステップＳ１２０８）。登録ユーザ数が上限に達していないと判断されたときも（ステップＳ１２０４にてＮｏ）、同様に、友人データ５６が作成される。この友人データ５６には、ステップＳ１１０４で取得した対戦者のユーザ名およびユーザＩＤがデータ項目「ユーザＩＤ」および「ユーザ名」として格納される。また、「最古対戦日時」および「最新対戦日時」には、今回の対戦の日時が格納される。「直接対戦回数」には「１」が格納される。また、「直接対戦勝ち数」には、ユーザが今回の対戦に勝利していれば「１」が、敗北していれば「０」が格納される。「サーバ対戦回数」および「サーバ対戦勝数」には「０」が格納される。
【００６５】
一方、ステップＳ１１０４で受信した対戦者のユーザＩＤが友人リスト５２内で発見されたときは、対戦者のユーザデータが友人リスト５２に登録されている判断される（ステップＳ１２０２にてＮｏ）。この場合、通信端末１は、友人リスト５２内において、ステップＳ１１０４で受信したユーザＩＤを含む友人データ５６を友人リスト５２から読み取り、その内容を更新する（ステップＳ１２１０）。具体的には、「最新対戦日時」が今回の対戦日時に書き換えられ、「直接対戦回数」が１だけ増分される。また、ユーザが今回の対戦に勝利していれば、「直接対戦勝数」も１だけ増分される。
【００６６】
続いて、通信端末１は、対戦履歴リスト５３を更新する（ステップＳ１２１２）。通信端末１は、対戦者に関する対戦履歴データ５７を作成し、対戦履歴リスト５３に追加する。この対戦履歴データ５７には、ステップＳ１１０４で取得した対戦者のユーザＩＤがデータ項目「ユーザＩＤ」として格納される。また、「勝敗」には今回の対戦結果を示すデータが格納され、「対戦形式」には直接対戦を示すデータが格納される。
【００６７】
次に、通信端末１は、直接対戦回数の多い順に友人リスト５２内の友人データ５６を並べ替える、すなわちソートする（ステップＳ１２１４）。同じ直接対戦回数を有する友人データ５６が複数あるときは、サーバ対戦回数がより多い友人データ５６ほど上位に配置される。また、直接対戦回数およびサーバ対戦回数が双方とも等しい友人データ５６が複数あるときは、最新対戦日時がより新しい友人データ５６ほど上位に配置される。なお、同じ直接対戦回数を有する友人データ５６が複数あるときに、サーバ対戦回数よりも最新対戦日時を優先して順位を定めてもよい。この場合、同じ直接対戦回数を有する友人データ５６のうち最新対戦日時がより新しい友人データ５６ほど上位に配置され、直接対戦回数および最新対戦日時が等しい友人データ５６については、サーバ対戦回数がより多い友人データ５６ほど上位に配置される。
【００６８】
このほかのソート方法としては、次のような手法が考えられる。すなわち、通信端末１は、始めに対戦履歴リスト５３を参照し、最新の所定数（例えば５０）の対戦において直接対戦回数の多いユーザＩＤを含む友人データ５６ほど友人リスト５２内で上位に配置し、その後、上記の方法でソートを行う。この方法によれば、最新の対戦状況を友人データ５６の優先順位（配列順）に、より反映しやすい。
【００６９】
再び図１１を参照する。ユーザデータ５１、友人リスト５２および対戦履歴リスト５３の更新が完了すると、通信端末１は、ユーザに対してゲームを再度プレイするか否かを照会する画面を表示する（ステップＳ１１１０）。ユーザが入力装置２０を操作して再度のプレイを命令すると、ステップＳ１１０２以降の処理が再び実行される。一方、ユーザが再度のプレイを拒否する命令を通信端末１に入力すると、タイトル画面が表示される（ステップＳ８１０）。
【００７０】
次に、サーバ対戦に関する処理を説明する。ステップＳ８１４にてサーバ対戦モードが指定されると、通信端末１はサーバ対戦処理を実行する（ステップＳ８２０）。図１３は、サーバ対戦処理を示すフローチャートである。この図には、通信端末１でのサーバ対戦処理に関連してサーバ３が実行する処理のフローも示されている。この処理は、サーバプログラムによって制御される。
【００７１】
通信端末１は、まず、通信ネットワーク２を介してサーバ３に接続し、対戦要求をサーバ３に送信する（ステップＳ１３０２）。この対戦要求は、ユーザＩＤと友人リスト５２を伴っている。通信端末１は、現在使用中のユーザＩＤに関連付けられた友人リスト５２を内蔵メモリ１４ａから読み取り、当該ユーザＩＤおよび対戦要求と共にサーバ３に送信する。なお、以下では、ユーザが通信端末１をサーバ３に接続させていることを、慣用的に「ユーザがサーバ３に接続している」などと表現することがある。
【００７２】
サーバ３は、対戦要求、ユーザＩＤおよび友人リスト５２を通信端末１から受信すると（ステップＳ１３２２）、ハードディスクドライブ３４内の友人リストデータベース５５を更新する（ステップＳ１３２４）。図１４は、友人リストデータベース５５の構成を概略的に示している。友人リストデータベース５５には、様々な通信端末１から送信された友人リスト５２が蓄積されている。友人リスト５２は、通信端末１から共に送信されたユーザＩＤに関連付けられて、友人リストデータベース５５に格納される。
【００７３】
サーバ３は、通信端末１から対戦要求と共にユーザＩＤおよび友人リスト５２を受信すると、当該ユーザＩＤに関連付けられた友人リスト５２を友人リストデータベース５５内で検索する。友人リスト５２が発見されない場合、通信端末１から送信された友人リスト５２を友人リストデータベース５５に格納する。一方、友人リスト５２が発見されたときは、その友人リスト５２の内容を通信端末１から送信された友人リスト５２の内容と一致させる。これは、友人リストデータベース５５内の友人リスト５２を通信端末１から送信された友人リスト５２で上書きすることにより実行してもよい。このように、友人リストデータベース５５内の友人リスト５２は、通信端末１がサーバ３に接続したときに、通信端末１側の友人リスト５２に同期される。
【００７４】
続いて、サーバ３は、対戦要求を発した通信端末１に提供すべき候補者リストを作成する（ステップＳ１３２６）。後述するように、サーバ３は、サーバ３に接続中のユーザのなかから所定の基準で対戦候補者を選定し、それらの対戦候補者に関する情報を列挙した候補者リストを作成して、対戦要求を発した通信端末１に提供する。
【００７５】
以下では、サーバ対戦モードを選択して通信端末１をサーバ３に接続させたユーザを「ユーザＡ」と表し、そのユーザＡが使用する通信端末１を符号１Ａで表す。上述のように、本実施形態では、ユーザＡと対戦回数の多いユーザをユーザＡの「友人」とみなす。以下では、この「友人」ユーザを符号ＦＡで表す。友人ユーザＦＡにもユーザＡ以外に対戦回数の多いユーザがいれば、それはユーザＡから見て「友人」の「友人」に当たる。以下では、この「友人の友人」ユーザを符号ＦＦＡで表す。
【００７６】
図１５は、候補者リストの構成を概略的に示している。図１５（ａ）に示されるように、候補者リスト６０は、順次に配列された候補者データ６１から構成される。図１５（ｂ）は、候補者データ６１の構成を概略的に示している。候補者データ６１中の「ユーザＩＤ」および「ユーザ名」は、サーバ３によって対戦候補者に選定されたユーザのユーザＩＤおよびユーザ名を示している。また、候補者データ６１中の「友人ＩＤ」および「友人名」は、その対戦候補者が誰の「友人」であるかを示している。すなわち、対戦候補者が友人ユーザＦＡの友人ユーザＦＦＡであれば、「友人ＩＤ」および「友人名」には友人ユーザＦＡのユーザＩＤおよびユーザ名が格納される。対戦候補者が友人ユーザＦＡの場合は、「友人ＩＤ」には友人本人であることを示す値（本実施形態では「０」）が格納され、「友人名」は空白となる。また、対戦候補者が友人ユーザでも友人の友人ユーザでもない一般ユーザの場合は、「友人ＩＤ」および「友人名」は双方とも空白となる。
【００７７】
候補者リスト６０に登録される候補者データの数には上限が設けられている。以下では、この上限をＮ（自然数）で表す。サーバ３に接続中のユーザの総数が上限Ｎを超えている場合、一部のユーザしか候補者に選定されないことになる。候補者リストでは、優先順位の高い候補者データほど上位に配置される。本実施形態の特徴の一つは、この優先順位を決定するアルゴリズムにある。すなわち、サーバ３は、上述した友人ユーザおよび友人の友人ユーザを、その他の一般ユーザより優先して候補者に選定する。
【００７８】
以下では、図１６を参照しながら、候補者リスト作成処理を具体的に説明する。図１６は、候補者リスト作成処理を示すフローチャートである。候補者リスト６０は、サーバ３のＲＡＭ３２内に作成されるが、必要に応じてハードディスクドライブ３４に退避させてもよい。
【００７９】
まず、サーバ３は、選定された候補者の数を表す変数「候補者カウント」に初期値である０をセットする（ステップＳ１６０２）。この「候補者カウント」は、候補者リスト６０に列挙される候補者データ６１の数が上限Ｎに達したか否かを判断するために使用される。
【００８０】
次に、サーバ３は、対戦要求と共に通信端末１Ａから送信されたユーザＩＤ（ユーザＡのＩＤ）に関連付けられた友人リスト５２を友人リストデータベース５５からＲＡＭ３２に読み込む（ステップＳ１６０４）。なお、以下では、ユーザＡの友人リスト５２を符号５２ＦＬで、その友人リスト５２ＦＬに登録された友人ユーザＦＡの友人リスト５２を符号５２ＦＦＬで表し、両者を区別する。また、友人リスト５２ＦＬの第ｍ位（ｍは自然数）に登録されている友人データを符号５６ｍで、その友人データ５６ｍ内のユーザＩＤを使用する友人ユーザを符号ＦＡｍでそれぞれ表す。
【００８１】
サーバ３は、友人リスト５２ＦＬの最上位に登録されている友人ユーザＦＡ１が現在、サーバ３に通信端末１を接続させているのであれば、友人ユーザＦＡ１を候補者に選定する。より具体的に説明すると、サーバ３は、まず、第１のポインタＰ１をＲＡＭ３２内に作成し、友人リスト５２における最上位の友人データ５６１の記憶位置をポインタＰ１にセットする（ステップＳ１６０６）。このポインタＰ１は、友人リスト５２ＦＬ内の友人データ５６を先頭から順に読み取るために使用される。
【００８２】
次に、サーバ３は、ポインタＰ１が示す位置に記憶された友人データ５６（現在は、最上位の友人データ５６１）からユーザＩＤ（すなわち、友人ユーザＦＡ１のＩＤ）を読み取る（ステップＳ１６０８）。そして、サーバ３は、読み取ったユーザＩＤを使用してサーバ３に接続している通信端末１を探す（ステップＳ１６１０）。このような通信端末１が発見されないときは（ステップＳ１６１０にてＮｏ）、後述するステップＳ１６１８の処理が実行される。一方、このような通信端末１が発見されたときは（ステップＳ１６１０にてＹｅｓ）、サーバ３は、ポインタＰ１が示す位置に記憶された友人データ５６（現在は、最上位の友人データ５６１）内のユーザＩＤおよびユーザ名を格納した候補者データ６１を作成し、その候補者データ６１を最上位に有する候補者リスト６０を作成する（ステップＳ１６１２）。この候補者データ６１内の「友人ＩＤ」には、候補者が友人ユーザであることを示す値「０」がセットされる。
【００８３】
この後、サーバ３は、選定済み候補者が一人増えたことを示すために、「候補者カウント」を１だけ増分する（ステップＳ１６１４）。続いて、サーバ３は、「候補者カウント」を上限Ｎと比較し、選定済みの候補者数が上限Ｎに達したか否かを判断する（ステップＳ１６１６）。「候補者カウント」がＮに等しいときは（ステップＳ１６１６にてＹｅｓ）、選定済み候補者数が上限Ｎに達したと判断され、候補者リストの作成が終了される。一方、「候補者カウント」がＮに等しくなければ（ステップＳ１６１６にてＮｏ）、サーバ３は、選定済み候補者数が上限Ｎに達していないと判断する。この場合、サーバ３は、上記の処理で候補者に選定するか否かが判断された友人ユーザ（現在は、友人ユーザＦＡ１）の友人リスト５２ＦＦＬを参照し、その友人リスト５２ＦＦＬに列挙されているユーザ、すなわち友人の友人ユーザＦＦＡから候補者を選別する処理を実行する（ステップＳ１６１８）。
【００８４】
図１７は、「友人の友人」選別処理を示すフローチャートである。サーバ３は、ステップＳ１６０８で取得した友人ユーザＦＡ（現在は、友人ユーザＦＡ１）のＩＤに関連付けられた友人リスト５２ＦＦＬを友人リストデータベース５５からＲＡＭ３２に読み込む（ステップＳ１７０２）。以下では、友人の友人リスト５２ＦＦＬの第ｎ位（ｎは自然数）に登録されている友人データを「友人の友人データ５６ＦＦＬｎ」と表し、また、友人の友人データ５６ＦＦＬｎ内のユーザＩＤを使用する友人の友人ユーザを符号ＦＦＡｎでそれぞれ表す。
【００８５】
サーバ３は、友人リスト５２ＦＦＬの最上位に登録されているユーザ、すなわち友人の友人ユーザＦＦＡ１が、現在、サーバ３に通信端末１を接続させているのであれば、友人の友人ユーザＦＦＡ１を候補者に選定する。より具体的に説明すると、サーバ３は、まず、第２のポインタＰ２をＲＡＭ３２内に作成し、友人の友人リスト５２ＦＦＬにおいて最上位に配置された友人の友人データ５６ＦＦＬ１の記憶位置をポインタＰ２にセットする（ステップＳ１７０４）。このポインタＰ２は、友人リスト５２ＦＦＬ内の友人の友人データ５６を先頭から順に読み取るために使用される。
【００８６】
次に、サーバ３は、ポインタＰ２が示す位置に記憶された友人の友人データ５６（現在は、最上位の友人データ５６ＦＦＬ１）からユーザＩＤ（すなわち、友人の友人ユーザＦＦＡ１のＩＤ）を読み取る（ステップＳ１７０６）。そして、サーバ３は、読み取ったユーザＩＤを使用してサーバ３に接続している通信端末１を探す（ステップＳ１７０８）。このような通信端末が発見されないときは（ステップＳ１７０８にてＮｏ）、後述するステップＳ１７２２以降の処理が実行される。一方、このような通信端末１が発見されたときは（ステップＳ１７０８にてＹｅｓ）、サーバ３は、ポインタＰ２が示す位置に記憶された友人の友人データ５６（現在は、最上位の友人の友人データ５６ＦＦＬ１）内のユーザＩＤおよびユーザ名を含む候補者データ６１を作成し、その候補者データ６１を候補者リスト６０に登録する（ステップＳ１７１０）。この段階では、候補者データ６１内の「友人ＩＤ」および「友人名」は空白である。候補者リスト６０に既に他の候補者データ６１が登録されている場合、新しい候補者データ６１は既存の最下位の候補者データ６１の次の順位に配置される。
【００８７】
次に、サーバ３は、登録された候補者データ６１内のユーザＩＤ、すなわち友人の友人ユーザＦＦＡのＩＤが、ユーザＡの友人リスト５２内に存在するか否かを確認する（ステップＳ１７１２）。友人の友人ユーザＦＦＡのＩＤがユーザＡの友人リスト５２内に存在する場合（ステップＳ１７１２にてＹｅｓ）、そのユーザＦＦＡは、ユーザＡの「友人の友人」であると同時に、ユーザＡの「友人」でもある。この場合、ステップＳ１７１０で登録された候補者データ６１の「友人ＩＤ」には、候補者が友人ユーザであることを示す値「０」がセットされる（ステップＳ１７１４）。一方、友人の友人ユーザＦＦＡのＩＤが友人リスト５２Ａ内に存在しない場合は（ステップＳ１７１２にてＮｏ）、候補者データ６１の「友人ＩＤ」および「友人名」に、友人ユーザＦＡ（現在は、友人ユーザＦＡ１）のユーザＩＤおよびユーザ名がそれぞれセットされる（ステップＳ１７１６）。
【００８８】
この後、サーバ３は、選定済み候補者が一人増えたことを示すために、「候補者カウント」を１だけ増分する（ステップＳ１７１８）。続いて、サーバ３は、「候補者カウント」を上限Ｎと比較し、選定済みの候補者の数が上限Ｎに達したか否かを判断する（ステップＳ１７２０）。「候補者カウント」がＮに等しいときは（ステップＳ１７２０にてＹｅｓ）、サーバ３は、選定済み候補者数が上限Ｎに達したと判断され、候補者リストの作成が終了される。一方、「候補者カウント」がＮに等しくなければ（ステップＳ１７２０にてＮｏ）、サーバ３は、選定済み候補者数が上限Ｎに達していないと判断する。この場合、サーバ３は、友人の友人リスト５２ＦＦＬに登録された全ての友人の友人データ５６に対してステップＳ１７０６以降の処理を実行したか否かを判断する（ステップＳ１７２２）。未処理の友人の友人データ５６が友人の友人リスト５２ＦＦＬに残っている場合（ステップＳ１７２２にてＮｏ）、サーバ３は、友人の友人リスト５２ＦＦＬ中の次の順位（ここでは、第２位）の友人データ５６の記憶位置をポインタＰ２にセットする（ステップＳ１７２４）。その後、ステップＳ１７０６以降の処理が再び実行される。
【００８９】
一方、友人の友人リスト５２ＦＦＬ中に未処理の友人の友人データ５６が存在しない場合は（ステップＳ１７２２にてＹｅｓ）、サーバ３は、友人リスト５２ＦＬに登録された全ての友人データ５６に対してステップＳ１６０８以降の処理を実行したか否かを判断する（ステップＳ１７２６）。未処理の友人データ５６が友人リスト５２ＦＬに残っている場合（ステップＳ１７２６にてＮｏ）、サーバ３は、友人リスト５２ＦＬ中の次の順位の友人データ５６の記憶位置をポインタＰ１にセットする（ステップＳ１７２８）。その後、ステップＳ１６０８以降の処理が再び実行される。
【００９０】
上述のように、友人リストおよび友人の友人リストに登録されたユーザから上記の手順で候補者を選別する途中で選定済み候補者の数が上限Ｎに達すると、そこで候補者リストの作成は終了する。しかし、これらのユーザの全てについて選別が終了し、なお選定済み候補者の数が上限Ｎに達していない可能性もある。この場合、サーバ３は、候補者数が上限Ｎに達するまで、サーバ３に通信端末１を接続させている他の一般ユーザを候補者に選定し、候補者データ６１を作成して候補者リスト６０に追加する（ステップＳ１７３０）。一般ユーザの候補者データ６１内の「友人ＩＤ」および「友人名」は、いずれも空白にされる。一般ユーザから候補者を選別するアルゴリズムは任意である。
【００９１】
再び図１３を参照する。サーバ３は、ステップＳ１３２６で作成した候補者リスト６０を、通信端末１Ａに送信する（ステップＳ１３２８）。通信端末１Ａは、サーバ３から候補者リスト６０を受信し、当該リスト６０に列挙される候補者データ６１からユーザ名を読み取り、表示装置２２上に表示する（ステップＳ１３０４）。
【００９２】
図１８は、対戦候補者たるこれらのユーザ名を示す候補者リスト画面の一例を示している。「ニックネーム」欄７１には、サーバ３から受信した候補者リスト６０内のユーザ名が、スクロール可能なリストとして表示される。ユーザは、入力装置２０を操作してカーソル７５を移動させることにより、「ニックネーム」欄７１に列挙されるユーザ名を上下にスクロールさせることができる。この場合、後述する「誰の友達？」、「最終対戦日時・対戦形式」および「友情度」の表示もユーザ名と共にスクロールする。ユーザは、ユーザ名の一つにカーソル７５を合わせ、入力装置２０を所定の方法で操作する（例えば、所定のボタンを押す）ことにより、そのユーザ名を指定する入力を行うことができる。
【００９３】
「誰の友達？」欄７２には、「ニックネーム」欄７１内のユーザ名がどのユーザの「友人」であるかを示すため、候補者リスト６０においてそのユーザ名に関連付けられた「友人名」が表示される。この「友人名」が空白であり、対応する「友人ＩＤ」が「０」の場合は、「ニックネーム」欄７１内のユーザ名はユーザＡ自身の「友人」に該当するので、「誰の友達？」欄７２には「自分」が表示される。「友人名」および「友人ＩＤ」が共に空白の場合は、「ニックネーム」欄７１内のユーザ名がユーザＡの「友人」でも「友人の友人」でもないことになり、そのことを示すため、「誰の友達？」欄７２には「−−−」が表示される。
【００９４】
「最終対戦日時・対戦形式」欄７３には、これらのユーザ名を使用するユーザと過去に対戦したことがあれば、最新の対戦日時と対戦形式が表示される。対戦形式の「リアル」は直接対戦を意味し、「オンライン」はサーバ対戦を意味する。
【００９５】
「友情度」欄７４は、対戦候補者が友人ユーザであるか、友人の友人ユーザであるか、他の一般ユーザであるかを示す「友情度」が符号Ｓ，Ａ，ＢおよびＣとして表示される。「友情度」は、Ｓ，Ａ，ＢおよびＣの順に高い親密度を示す。具体的に述べると、「Ｓ」と「Ａ」は友人ユーザを示している。「Ｓ」と「Ａ」の違いは、直接対戦の経験の有無である。すなわち、Ｓは過去に直接対戦の経験がある友人ユーザを示し、Ａはサーバ対戦の経験しかない友人ユーザを示している。Ｂは友人の友人ユーザを示し、「Ｃ」はその他の一般ユーザを示している。
【００９６】
通信端末１Ａは、候補者データ６１内の友人ＩＤが「０」であれば、「友情度」を「Ｓ」または「Ａ」に設定する。この場合、通信端末１Ａは、候補者データ６１内のユーザＩＤを読み取り、当該ユーザＩＤを含む友人データ５６を友人リスト５２内で検索する。そして、通信端末１Ａは、検索された友人データ５６内の直接対戦回数を参照して、友人ユーザの「友情度」が「Ｓ」に該当するか「Ａ」に該当するかを判別する。このように、本実施形態では、直接対戦の経験のある友人ユーザを、より親密なユーザとして表示する。候補者データ６１内の「友人ＩＤ」が「０」でも空白でもなければ、通信端末１Ａは、当該候補者データ６１内の「ユーザ名」を友人の友人ユーザと判断し、友情度「Ｂ」を割り当てて表示する。候補者データ６１内の「友人ＩＤ」が空白のときは、通信端末１は、当該候補者データ６１内の「ユーザ名」を一般ユーザの名称と判断し、友情度「Ｃ」を割り当てて表示する。
【００９７】
通信端末１は、候補者リスト６０の候補者データ６１をその配列順（優先順位）に従ってリスト先頭から順に読み取り、それらの候補者データ６１に含まれる候補者のユーザ名を同じ順序で候補者リスト画面に表示する。したがって、友人リスト５２ＦＬの最上位に位置する友人ユーザＦＡ１がサーバ３に接続していれば、そのユーザ名が画面の最も上に表示される。友人ユーザＦＡ１のユーザ名の下には、友人ユーザＦＡ１の友人ユーザＦＦＡのうちサーバ３に接続しているユーザが表示される。友人ユーザＦＡ１の友人ユーザ名の下には、友人リスト５２ＦＬの第２位に位置する友人ユーザＦＡ２がサーバ３に接続していれば、そのユーザ名が表示される。その他の一般ユーザの名称は、友人ユーザＦＡおよび友人の友人ユーザＦＦＡの名称の下に表示される。
【００９８】
なお、候補者リスト画面の「ニックネーム」欄７１に表示された候補者ユーザ名は、「誰の友達？」欄７２、「最終対戦日時・対戦形式」欄７３および「友情度」欄７４内の項目をキーとしてソートすることができる。例えば、「誰の友達？」欄７２の上に配置された文字列「誰の友達？」はクリッカブルになっており、カーソル７５を合わせてクリックすると、「誰の友達？」欄７２内のユーザ名が所定の順序で並べ替えられ、それに伴って他の欄内の表記も並び替えられる。他の欄７３および７４についても同様の操作を行うことにより、「最終対戦日時・対戦形式」や「友情度」に基づいて候補者ユーザ名をソートすることができる。このようなソートが可能なことで、候補者ユーザ名が多い場合でも、所望の対戦相手を容易に探索できるようになる。
【００９９】
再び図１３を参照する。ユーザが入力装置２０を操作して、画面上のユーザ名の一つを対戦希望者として指定すると（ステップＳ１３０６）、通信端末１Ａは、その対戦希望者（ユーザＢ）のユーザＩＤを候補者データ６１から読み取り、対戦申込要求およびユーザＡのＩＤと共にサーバ３に送信する（ステップＳ１３０８）。サーバ３は、対戦申込要求を受信すると（ステップＳ１３３０）、対戦申込要求と共に受信した対戦希望者のユーザＩＤを使用してサーバ３に接続中の通信端末１Ｂに対戦申込通知を送信する（ステップＳ１３３２）。対戦申込通知は、対戦の申し込みを示すコードのほかに、対戦を申し込んでいる通信端末１Ａで使用されるユーザＡのユーザＩＤおよびユーザ名が含まれている。
【０１００】
通信端末１Ｂは、サーバ３からの対戦申込通知に応じて、対戦希望応答処理を実行する（ステップＳ１３３４）。図１９は、対戦希望応答処理を示すフローチャートである。通信端末１Ｂは、サーバ３から対戦申込通知を受信すると（ステップＳ１９０２）、対戦を承諾するか否かを照会する画面を表示装置２２上に表示する（ステップＳ１９０４）。この画面には、対戦を申し込んでいるユーザＡのユーザＩＤおよびユーザ名が表示される。ユーザＢが対戦承諾命令を通信端末１Ｂに入力すると（ステップＳ１９０６にてＹｅｓ）、通信端末１Ｂは承諾通知をサーバ３に送信する（ステップＳ１９０８）。一方、ユーザＢが対戦拒否命令を通信端末１Ｂに入力すると（ステップＳ１９０６にてＮｏ）、通信端末１Ｂは拒否通知をサーバ３に送信する（ステップＳ１９１０）。
【０１０１】
再び図１３を参照する。サーバ３は、通信端末１Ｂから承諾通知または拒否通知のいずれかを受信し、その通知を通信端末１Ａに転送する（ステップＳ１３３５）。通信端末１Ａは、その通知を受信すると（ステップＳ１３１０）、通知の内容を確認し、対戦が承諾されたか否かを判断する（ステップＳ１３１２）。通知が対戦拒否を表すコードを含んでいる場合、通信端末１Ａは対戦が拒否されたと判断し（ステップＳ１３１２にてＮｏ）、対戦拒否を表すメッセージを画面に表示する（ステップＳ１３１３）。その後、通信端末１Ａは、ステップＳ１３０２以降の処理を再び実行する。
【０１０２】
一方、通知が対戦承諾を表すコードを含んでいる場合、通信端末１Ａは対戦が承諾されたと判断し（ステップＳ１３１２にてＹｅｓ）、サーバ３を介して通信端末１Ｂとの間でサーバ対戦ゲームを実行する（ステップＳ１３１４）。サーバ３も、通信端末１Ｂからの通知の内容を確認し（ステップＳ１３３６）、対戦が承諾された場合には、サーバ対戦を実行するための処理を行う（ステップＳ１３３８）。また、通信端末１Ｂでも、通信端末１Ａと同じようにサーバ対戦ゲームが実行される。通信端末１Ａは、サーバ３を介して通信端末１Ｂから操作情報（ユーザＢがどのように通信端末１Ｂを操作したかに関する情報）を取得し、通信端末１Ａの操作情報と併せて所定の方法で処理し、サーバ対戦ゲームを進行させる。同様に、通信端末１Ｂは、サーバ３を介して通信端末１Ａから操作情報を取得し、通信端末１Ｂの操作情報と併せて所定の方法で処理し、サーバ対戦ゲームを進行させる。
【０１０３】
サーバ対戦ゲームが終了すると、通信端末１Ａおよび１Ｂは、内蔵メモリ１４ａ内の各種の情報、すなわちユーザデータ５１、友人リスト５２、および対戦履歴リスト５３をサーバ対戦の結果に応じて更新する（ステップＳ１３１６）。この手順は、図１２を参照して説明したものと同様である。ただし、今回は、「直接対戦回数」および「直接対戦勝数」ではなく、「サーバ対戦回数」および「サーバ対戦勝数」が更新される。また、サーバ３も、ハードディスクドライブ３４内の各種の情報、すなわちユーザ情報データベース５４内のユーザデータ５８、および友人リストデータベース５５内の友人リスト５２をサーバ対戦の結果に応じて更新する（ステップＳ１３４０）。
【０１０４】
情報更新処理が完了すると、通信端末１Ａおよび１Ｂは、ユーザに対してゲームを再度プレイするか否かを照会する画面を表示する（ステップＳ１３１８）。ユーザが入力装置２０を操作して再度のプレイを命令すると、ステップＳ１３０２以降の処理が再び実行される。ユーザが再度のプレイを拒否すると、タイトル画面が表示される（ステップＳ８１０）。
【０１０５】
以下では、本実施形態の利点を説明する。上述のように、本実施形態では、サーバ３が、サーバ対戦を希望するユーザの友人リストに登録された「友人ユーザ」、および当該「友人ユーザ」の友人リストに登録された「友人の友人ユーザ」を優先的に対戦候補者として選定し、その対戦候補者の情報をユーザの通信端末１に提供する。ユーザの友人リストに登録されている「友人ユーザ」は、ユーザと過去に対戦した経験のある者なので、多くの場合、対戦を申し込みやすいはずである。また、「友人ユーザ」の友人リストに登録された「友人の友人ユーザ」も、共通の「友人ユーザ」と対戦したという共通点があり、そのことを話題にできることから、他のユーザに比べて対戦を申し込みやすい。したがって、本実施形態のネットワークゲームシステム１００では、ユーザが比較的気軽に対戦を申し込める相手を容易に探すことができ、ユーザにとって利便性が高い。
【０１０６】
また、数多く対戦しているユーザは友人同士である可能性が高いことを考えれば、対戦回数の多いユーザを優先的に候補者に選定する本システム１００は、ユーザにとって対戦を申し込みやすい候補者を確実に選定することができる。
【０１０７】
特に、本システム１００は、直接対戦の回数の多いユーザを優先的に候補者に選定するので、候補者がユーザにとって実際に対戦を申し込みやすい相手である可能性を更に高めることができる。直接対戦を行ったことのあるユーザ同士は、現実に面識があり、友人同士である確率も高い。したがって、これらのユーザは、対戦を申し込みやすい関係にあると考えられる。このようなユーザを優先的に候補者に選定することで、ユーザの友人関係を候補者リストに反映しやすくなる。この結果、ユーザは、親しみを覚える相手と容易に対戦することが可能となり、より面白みのあるゲームをプレイすることができる。
【０１０８】
本システム１００では、対戦回数が同じユーザなら、最新通信日時の新しいユーザが優先的に候補者として選定される。これにより、選定された候補者がユーザにとって実際に対戦を申し込みやすい相手である可能性をいっそう高めることができる。より新しい日時に対戦を行っているユーザの方が、お互いを記憶している可能性が高く、それだけ対戦を申し込みやすいと考えられるからである。
【０１０９】
また、本システム１００では、サーバ３に通信端末１を接続させているユーザのＩＤのみが候補者リスト６０に登録されるので、オフラインのユーザを候補者に選定してユーザに時間を浪費させるようなことはない。
【０１１０】
サーバ３は、候補者リスト６０内の候補者データの数が上限に達したときに候補者リスト６０の作成を終了する。サーバ３に接続中のユーザをすべて候補者リストに列挙しなくて良いので、サーバ３の処理負担を軽減できる。また、候補者リスト６０のデータサイズが削減されるので、候補者リスト６０に基づいて候補者ユーザ名を表示する通信端末１の処理負担も軽減される。また、通信端末１上に表示される候補者リスト画面が閲覧しやすくなるという利点もある。
【０１１１】
本システム１００は、候補者のＩＤが選定された順序のまま候補者リスト６０に候補者データ６１を格納することで、候補者データ６１を一時的に記憶するための記憶容量を抑えることができ、また、効率良く候補者リスト６０を作成できる。また、候補者データ６１の配列順が、そのまま候補者データ６１の優先順位を表すので、優先順位を表すために特別なデータを用意する必要はない。したがって、候補者リスト６１を記憶するための記憶容量を削減できる。
【０１１２】
本システム１００では、候補者データ６１をその配列順に読み取り、候補者データ６１内のユーザ名を候補者データ６１の配列順で表示する。このため、候補者データ６１を一時的に記憶するための記憶容量を抑えることができ、また、候補者リスト画面の表示のための処理を効率良く実行できる。
【０１１３】
候補者リスト画面では、対戦回数の多い候補者ほど上位に表示され、スクロールの必要なしに閲覧できるので、ユーザにとって対戦を申し込みやすい候補者をユーザが見つけやすい。更に、「友人ユーザ」がサーバ３に接続していなくても、「友人の友人ユーザ」が候補者に選定されうるので、選定候補者の人数が少ないという不都合も生じにくい。
【０１１４】
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。例えば、上記実施形態では、サーバ３内のハードディスクドライブ３４にユーザ情報ＤＢ５４および友人リストＤＢ５５が格納されているが、これらのＤＢは、サーバ３がアクセス可能な別個のデータベースサーバに格納されていてもよい。
【０１１５】
上記実施形態では、最初に直接対戦回数に基づいて友人リスト５２がソートされるが、総対戦回数、すなわち直接対戦回数とサーバ対戦回数の合計に基づいて友人リスト５２をソートしてもよい。総対戦回数が等しい複数の友人データ５６に関しては、最新対戦日時がより新しい友人データ５６ほど上位に配置してもよいし、直接対戦回数がより多い友人データ５６ほど上位に配置してもよい。総対戦回数および最新対戦日時の双方が等しい友人データ５６に関して、直接対戦回数がより多い友人データ５６ほど上位に配置してもよい。また、総対戦回数および直接対戦回数の双方が等しい友人データ５６に関して、最新対戦日時がより新しい友人データ５６ほど上位に配置してもよい。
【０１１６】
上記の実施形態は、本発明を、ネットワークゲームシステムに適用した例であるが、本発明は、このような例に限られるものではなく、サーバを介して通信端末間で通信を行う他の任意の通信システムにも適用することができる。このような通信システムの例としては、オンラインチャットシステムやファイル交換システムなどを挙げることができる。
【０１１７】
上記実施形態では、通信部１６が、サーバに接続するための通信装置（通信インターフェース１７）と、他の通信端末１に接続するための通信装置（個別通信部１８）とを有している。しかし、これらの通信装置は、両者の機能を兼ね備える単一の通信装置に置き換えてもよい。
【図面の簡単な説明】
【０１１８】
【図１】ネットワークゲームシステムの構成を示す概略図である。
【図２】通信端末間の通信の形態を説明するための概略図である。
【図３】通信端末の構成を示すブロック図である。
【図４】サーバの構成を示すブロック図である。
【図５】通信端末に記憶されたユーザデータの構成を示す概略図である。
【図６】通信端末に記憶された友人リストの構成を示す概略図である。
【図７】通信端末に記憶された対戦履歴リストの構成を示す概略図である。
【図８】通信端末上でのゲーム実行処理を示すフローチャートである。
【図９】ユーザ情報登録処理を示すフローチャートである。
【図１０】ユーザ情報データベースの構成を示す概略図である。
【図１１】直接対戦処理を示すフローチャートである。
【図１２】情報更新処理を示すフローチャートである。
【図１３】サーバ対戦処理を示すフローチャートである。
【図１４】友人リストデータベースの構成を概略的に示す図である。
【図１５】候補者リストの構成を概略的に示す図である。
【図１６】候補者リスト作成処理を示すフローチャートである。
【図１７】「友人の友人」選別処理を示すフローチャートである。
【図１８】候補者リスト画面を示す図である。
【図１９】対戦希望応答処理を示すフローチャートである。
【符号の説明】
【０１１９】
１…通信端末、２…通信ネットワーク、３…サーバ、３４…ハードディスクドライブ、５１…ユーザデータ、５２…友人リスト（通信者リスト）、５３…対戦履歴リスト、５４…ユーザ情報データベース、５５…友人リストデータベース、５６…友人データ、５７…対戦履歴データ、５８…ユーザデータ、６０…候補者リスト、６１…候補者データ、１００…ネットワークシステム。
【図１】
2006279814.tif 000003
【図２】
2006279814.tif 000004
【図３】
2006279814.tif 000005
【図４】
2006279814.tif 000006
【図５】
2006279814.tif 000007
【図６】
2006279814.tif 000008
【図７】
2006279814.tif 000009
【図８】
2006279814.tif 000010
【図９】
2006279814.tif 000011
【図１０】
2006279814.tif 000012
【図１１】
2006279814.tif 000013
【図１２】
2006279814.tif 000014
【図１３】
2006279814.tif 000015
【図１４】
2006279814.tif 000016
【図１５】
2006279814.tif 000017
【図１６】
2006279814.tif 000018
【図１７】
2006279814.tif 000019
【図１８】
2006279814.tif 000020
【図１９】
2006279814.tif 000021