(57)【要約】【課題】ゲームに係わる安全な通信を提供する。【解決手段】対戦相手決定システム１０４は新しいゲームセッションを生成せよとの要求をコンピュータデバイスから受信するステップと、新しいゲームセッションに対するゲームセッション識別子と新しいゲームセッションに対するゲームセッションキーとの記録を維持するステップと、新しいゲームセッションを他のコンピュータデバイスが加わるために使用可能とするステップと実行する。【選択図】　　　　図２
2004065956.tif 000002
【特許請求の範囲】
【請求項１】
サーバデバイスで実施される方法において、
１つまたは複数の他のコンピュータデバイスによってホストされており、プレイするために現在使用可能な複数のゲームセッションの１つまたは複数を示す情報を求める要求をコンピュータデバイスから受信するステップと、
前記１つまたは複数のゲームセッションを示す前記情報と、前記ゲームセッションの一部である前記１つまたは複数のコンピュータデバイスの少なくとも１つと通信するために使用することのできるセッションキーとによって前記要求に応答するステップと
を含むことを特徴とする方法。
【請求項２】
前記コンピュータデバイスがゲームコンソールを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記要求が、前記コンピュータデバイスがそれに関する情報を受信することを希望しているゲームセッションを示す１つまたは複数のパラメータを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記１つまたは複数のパラメータが、前記ゲームセッションのプレイヤのスキルレベルを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記１つまたは複数のパラメータが、前記ゲームセッションに対するプレイがどこで行われるかに関する情報を含むことを特徴とする請求項３に記載の方法。
【請求項６】
前記１つまたは複数のパラメータがゲームセッションＩＤを含むことを特徴とする請求項３に記載の方法。
【請求項７】
前記要求に応答するステップが、前記コンピュータデバイスが前記１つまたは複数のゲームセッションに加わることを可能にする情報を前記コンピュータデバイスに戻すステップをさらに含み、前記コンピュータデバイスと１つまたは複数の他のコンピュータデバイスとが、それぞれに異なるネットワークアドレス変換（ＮＡＴ）デバイスの背後に設置されていることを特徴とする請求項１に記載の方法。
【請求項８】
前記コンピュータデバイスからゲームデータ交換情報を求める要求を受信するステップと、
前記要求されたゲームデータの位置を識別するステップと、
前記コンピュータデバイスに対して前記位置の識別子を送信するステップとを含むことを特徴とする請求項１に記載の方法。
【請求項９】
複数の命令を格納している１つまたは複数のコンピュータ可読媒体において、１つまたは複数のプロセッサによって実行された場合に、
コンピュータデバイスから新しいゲームセッションを生成するための要求を受信するステップと、
前記新しいゲームセッションに対するゲームセッション識別子と、前記新しいゲームセッションに対するゲームセッションキーとの記録を維持するステップと、
前記ゲームセッションを他のコンピュータデバイスが加わるために使用可能とするステップと
を前記１つまたは複数のプロセッサに実行させることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１０】
前記命令が、コンピュータデバイスが前記ゲームセッションのメンバーでない場合に前記記録を削除するステップを前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１１】
前記命令が、前記ゲームセッション識別子と前記ゲームセッションキーとを生成するステップを前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１２】
前記命令が、前記コンピュータデバイスから前記ゲームセッション識別子と前記ゲームセッションキーとを受信するステップを前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１３】
前記命令が、前記ゲームセッション識別子と前記ゲームセッションキーとを前記要求の一部として受信するステップを前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項１２に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１４】
前記命令が、
前記他のコンピュータデバイスの１つから、現行ゲームセッションを検索するための要求を受信するステップと、
前記要求に応答して前記新しいゲームセッションを識別するステップと、
前記ゲームセッション識別子と前記ゲームセッションキーとを前記他のコンピュータデバイスの前記１つに伝達するステップと
を前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１５】
前記命令が、
前記新しいゲームセッションの１つまたは複数の属性の記録を維持するステップを、
前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１６】
前記１つまたは複数の属性が、前記ゲームセッションの１人または複数のプレイヤそれぞれのスキルレベルを含むことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１７】
前記１つまたは複数の属性が、前記ゲームセッションに対するプレイがどこで行われることになっているかに関する情報を含むことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１８】
前記命令が、
招待によってしか入ることのできない前記ゲームセッションのスロット数の記録を維持するステップを
前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１９】
前記命令が、
他のコンピュータデバイスが前記コンピュータデバイスにアクセスすることを可能にする前記コンピュータデバイスに関する情報の記録を維持するステップを前記１つまたは複数のプロセッサにさらに実行させ、
前記コンピュータデバイスと前記他のコンピュータデバイスのそれぞれが、それぞれに異なるネットワークアドレス変換（ＮＡＴ）デバイスの背後に設置されていることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２０】
前記命令が、
前記コンピュータデバイスから、ゲームデータが格納されている位置の識別子を受信するステップと、
前記位置の記録を維持するステップと、
前記ゲームデータ位置を他のコンピュータデバイスに対して使用可能とするステップと
を前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２１】
サーバデバイスで実施される方法において、
コンピュータデバイスから、ゲームセッションに加わることへの招待の受理を受信するステップと、
前記コンピュータデバイスに、前記ゲームセッションの１つまたは複数の他のコンピュータデバイスとデータを安全に通信するために前記コンピュータデバイスが使用すべきゲームセッションキーを送信するステップと
を含むことを特徴とする方法。
【請求項２２】
前記コンピュータデバイスと前記１つまたは複数の他のコンピュータデバイスはどちらも前記サーバデバイスを含まないことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記招待の前記受理を受信するステップが、前記ゲームセッションのゲームセッションＩＤを検索パラメータとして含むセッション検索要求を受信するステップを含むことを特徴とする請求項２１に記載の方法。
【請求項２４】
前記コンピュータデバイスからゲームデータ交換情報を求める要求を受信するステップと、
前記要求されたゲームデータの位置を識別するステップと、
前記コンピュータデバイスに前記位置の識別子を送信するステップと
をさらに含むことを特徴とする請求項２１に記載の方法。
【請求項２５】
それぞれに複数のコンピュータデバイスの１つまたは複数によってホストされている複数のゲームセッションに関する要求を受信し、前記複数のゲームセッションの１つまたは複数に関する情報で前記受信した要求に応答するように構成されたインターフェースと、
前記複数のゲームセッションのそれぞれに対する前記情報を維持するように構成されたデータベースであって、相互に安全に通信するために、前記複数のゲームセッションのそれぞれに対する前記情報が、前記ゲームセッションを一意に識別するゲームセッション識別子を含み、前記ゲームセッションの一部であるコンピュータデバイスが使用すべきゲームセッションキーをさらに含むデータベースと
を含むことを特徴とするシステム。
【請求項２６】
前記複数のゲームセッションのそれぞれに対する前記情報が、他のコンピュータデバイスが前記複数のコンピュータデバイスのそれぞれにアクセスすることを可能にする前記複数のコンピュータデバイスに関する情報をさらに含み、前記他のコンピュータデバイスの前記それぞれと前記複数のコンピュータデバイスのそれぞれとが、異なるネットワークアドレス変換（ＮＡＴ）デバイスの背後に設置されていることを特徴とする請求項２５に記載のシステム。
【請求項２７】
前記インターフェースが、前記複数のゲームセッションのそれぞれに対して前記ゲームセッション識別子と前記ゲームセッションキーとを生成するようにさらに構成されていることを特徴とする請求項２５に記載のシステム。
【請求項２８】
前記複数のゲームセッションのそれぞれに対する前記情報が、招待によってしか入ることのできない前記ゲームセッションのスロット数に関する情報をさらに含むことを特徴とする請求項２５に記載のシステム。
【請求項２９】
複数の命令を格納している１つまたは複数のコンピュータ可読媒体において、１つまたは複数のプロセッサによって実行された場合に、
コンピュータデバイスからゲームデータが格納されている位置の識別子を受信するステップと、
前記位置とゲームセッションキーとの記録を維持するステップと、
前記ゲームデータ位置とゲームセッションキーとを他のコンピュータデバイスに対して使用可能とするステップと
を前記１つまたは複数のプロセッサに実行させることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項３０】
前記命令が、前記ゲーム位置とゲームセッションキーとを、前記コンピュータデバイスと同じゲームセッションに参加している他のコンピュータデバイスにのみ使用可能とするステップを前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項２９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３１】
前記位置の前記識別子が前記コンピュータデバイスの識別子を含むことを特徴とする請求項２９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３２】
前記命令が、
前記他のコンピュータデバイスの１つから、前記位置の前記識別子を求める要求を受信するステップと、
前記他のコンピュータデバイスの前記１つに前記位置の前記識別子と前記ゲームセッションキーとを戻すステップと
を前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項２９に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３３】
コンピュータデバイスからゲームデータ交換情報を求める要求を受信するステップと、
前記要求されたゲームデータの位置を識別するステップと、
前記コンピュータデバイスに、前記位置から前記要求されたゲームデータを獲得する際に前記コンピュータデバイスが使用すべき前記位置の識別子とゲームセッションキーとを送信するステップと
を含むことを特徴とする方法。
【請求項３４】
前記位置の前記識別子が別のコンピュータデバイスの識別子を含むことを特徴とする請求項３３に記載の方法。
【請求項３５】
前記コンピュータデバイスがゲームコンソールを含むことを特徴とする請求項３３に記載の方法。
【請求項３６】
複数の命令を格納している１つまたは複数のコンピュータ可読媒体において、１つまたは複数のプロセッサによって実行された場合に、
サーバデバイスに、ゲームセッションをホストせよとの要求を送信するステップと、
前記サーバデバイスから、前記ゲームセッションの他のメンバーと安全に通信するために使用すべき、前記ゲームセッションを一意に識別するゲームセッション識別子とゲームセッションキーとを受信するステップと
を前記１つまたは複数のプロセッサに実行させることを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項３７】
前記命令が、前記ゲームセッションの１つまたは複数の属性を前記要求の一部として送信するステップを、前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項３６に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３８】
前記命令が、招待によってしか入ることのできない前記ゲームセッションのスロット数を前記要求の一部として送信するステップを、前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項３６に記載の１つまたは複数のコンピュータ可読媒体。
【請求項３９】
前記１つまたは複数のプロセッサがゲームコンソールの一部であることを特徴とする請求項３６に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４０】
複数の命令を格納している１つまたは複数のコンピュータ可読媒体において、１つまたは複数のプロセッサによって実行された場合に、ゲームセッションをホストせよとの要求をサーバデバイスに送信するステップを前記１つまたは複数のプロセッサに実行させ、前記要求が、前記ゲームセッションの他のメンバーと安全に通信するために使用すべき前記ゲームセッションを一意に識別するゲームセッション識別子とゲームセッションキーの両方を含むことを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項４１】
前記命令が、前記ゲームセッションの１つまたは複数の属性を前記要求の一部として送信するステップを、前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項４０に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４２】
前記命令が、招待によってしか入ることのできない前記ゲームセッションのスロット数を前記要求の一部として送信するステップを前記１つまたは複数のプロセッサにさらに実行させることを特徴とする請求項４０に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４３】
前記１つまたは複数のプロセッサがゲームコンソールの一部であることを特徴とする請求項４０に記載の１つまたは複数のコンピュータ可読媒体。
【請求項４４】
処理装置と、
他のゲームコンソールとの通信を可能にするように構成されたネットワークインターフェースと、
前記処理装置が実行するために命令を格納するように構成されたメモリと
を含み、前記命令が、ゲームセッションに関連付けられており、前記ゲームセッションに参加している前記他のゲームコンソールの１つまたは複数と安全に通信するために使用されるべきゲームセッションキーを受信するステップを前記処理装置に実行させることを特徴とするゲームコンソール。
【請求項４５】
要求しているデバイスから、プレイするために現在使用可能な複数のゲームセッションの１つまたは複数を示す情報を求める要求を受信するステップであって、前記複数のゲームセッションが１つまたは複数の他のデバイスによってホストされるステップと、
前記要求しているデバイスに、前記要求しているデバイスが前記１つまたは複数のゲームセッションに加わることを可能にする情報を戻すステップであって、前記要求しているデバイスと前記１つまたは複数の他のデバイスとが、それぞれに異なるネットワークアドレス変換（ＮＡＴ）デバイスの背後に設置されているステップと
を含むことを特徴とする方法。
【請求項４６】
前記要求しているデバイスと前記１つまたは複数の他のデバイスとが、それぞれに家庭用ローカルエリアネットワークに設置されていることを特徴とする請求項４５に記載の方法。
【請求項４７】
ゲームセッションに関する前記情報が、相互に安全にデータを通信するために前記ゲームセッションの前記デバイスが使用するゲームセッションキーと、前記デバイスが前記ネットワークアドレス変換デバイスをトラバースすることを可能にするデバイスネットワークアドレス情報とを含むことを特徴とする請求項４５に記載の方法。
【請求項４８】
前記要求が、前記コンピュータデバイスがそれに関する情報を受信することを希望するゲームセッションを示す１つまたは複数のパラメータを含むことを特徴とする請求項４５に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゲームコンソールに関し、詳細には、ゲームセッション情報の発見および分配に関する。
【０００２】
【従来の技術】
従来、専用コンソールを備えるゲームシステムは限られた人数のプレイヤ（例えば、２〜４人のプレイヤ）に対応するスタンドアロンマシンであった。パーソナルコンピュータベースのゲームは、一部にはインターネットを介して多くの遠隔プレイヤとオンラインでゲームをプレイすることができるために人気が高まった。したがって、専用ゲームコンソールの１つの傾向は、インターネットベースのオンラインゲームのようなネットワークを介したゲームを円滑に進めるための機能を提供することにある。
【０００３】
ネットワークベースのゲームまたはオンラインのゲームは、集中サーバ方式またはピアツーピア方式で実施することができる。集中サーバ（ｃｅｎｔｒａｌｉｚｅｄ−ｓｅｒｖｅｒ）方式では、ゲームシステムは１つまたは複数の集中サーバに接続し、その１つ以上の集中サーバを介して相互に対話する。ピアツーピア方式では、ゲームシステムは相互に接続し、直接的に相互に対話する。しかし、ピアツーピア方式でも、その通信を補助するために１つ以上の集中サーバを使用することができる。
【０００４】
【非特許文献１】
Ｂｒｕｃｅ　Ｓｃｈｎｅｉｅｒ，　”Ａｐｐｌｉｅｄ　Ｃｒｙｐｔｏｇｒａｐｈｙ：　Ｐｒｏｔｏｃｏｌｓ，　Ａｌｇｏｒｉｔｈｍｓ，　ａｎｄ　Ｓｏｕｒｃｅ　Ｃｏｄｅ　ｉｎ　Ｃ，”　Ｊｏｈｎ　Ｗｉｌｅｙ　＆　Ｓｏｎｓ，　ｃｏｐｙｒｉｇｈｔ　１９９４　（ｓｅｃｏｎｄ　ｅｄｉｔｉｏｎ１９９６）
【０００５】
【発明が解決しようとする課題】
このような１つ以上の集中サーバの使用に伴う１つの課題は、ゲームシステム間でのネットワークトラフィックを、当該ネットワークの他のデバイスによる改ざんまたは監視から保護することである。ゲーマは、独創的な不正な手段を開発し、ネットワークトラフィックをそのようなユーザにとっての格好の標的としてしまうことで悪評が高い。残念ながら、従来のコンソールベースのゲームシステムは、通常は相互に安全な通信を提供しなかった。
【０００６】
以下で説明するゲームセッション情報の発見および分配は、これらおよび他の課題を解決する。
【０００７】
【課題を解決するための手段】
本明細書では、ゲームセッション情報の発見および分配について説明する。
【０００８】
一実施形態によれば、新しいゲームセッションを生成せよとの要求をコンピュータデバイスから受信する。新しいゲームセッションのためのゲームセッション識別子および新しいゲームセッションのためのゲームセッションキーの記録を維持する。その新しいゲームセッションを他のコンピュータデバイスが加わるために使用可能する。
【０００９】
別の実施形態によれば、１つまたは複数のゲームセッションを示す情報の要求をコンピュータデバイスから受信する。１つまたは複数のゲームセッションは、１つまたは複数の他のコンピュータデバイスによってホストされており、また、プレイのために現在使用可能である。この要求は、１つまたは複数のゲームセッションを示す情報と、ゲームセッションと係わりのある１つまたは複数の他のコンピュータデバイスの少なくとも１つと通信するために使用することができるセッションキーとによって応答される。
【００１０】
さらに別の実施形態によれば、ゲームデータが格納されている位置の識別子がコンピュータデバイスから受信される。位置およびゲームセッションキーの記録は維持され、そのゲームデータの位置およびゲームセッションキーが他のコンピュータデバイスに対して使用可能となる。
【００１１】
本明細書では、類似のコンポーネントおよび／または機能を参照するために同じ番号を使用する。
【００１２】
【発明の実施の形態】
本明細書の説明は、読者が暗号化、暗号解読、認証、ハッシング、およびデジタル署名などの基本的な暗号化原理に通じていることを想定している。暗号化への基本的な入門書としては、参照により本明細書に組み込んだテキスト（例えば、非特許文献１参照）を参照されたい。
【００１３】
図１はゲームセッション情報の発見および分配を使用することができる典型的な環境１００を示すブロック図である。複数のコンピュータデバイス１０２（１）、．．．、１０２（ｃ）が対戦相手決定システム１０４に結合されている。デバイス１０２とシステム１０４の間の結合、およびデバイス１０２間の結合は、システム１０４とデバイス１０２のそれぞれおよび／またはデバイス１０２間の通信を可能にする様々な結合のどれであってもよい。一実施態様では、この結合はインターネットを含み、また任意選択で１つまたは複数の他のネットワーク（例えば、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ））を含むことができる。例えば、コンピュータデバイス１０２のそれぞれを家庭用ＬＡＮ上に設置し、各家庭用ＬＡＮをインターネットを介してシステム１０４に結合してもよい。この結合は、有線ネットワークおよび／または無線ネットワークを含めて様々なネットワークタイプおよびネットワーク技術のどれでも使用して実施することができる。
【００１４】
コンピュータデバイス１０２は、それぞれのユーザが相互にゲームをプレイすることを可能にする。オンラインゲームは、通常は、コンソールの１人以上のユーザが相互にゲームをプレイすることを可能にするために相互に通信する複数のコンソールを意味する。この通信は、通常はインターネットを介して実行されるが、代わりに（インターネットの代用として、またはインターネットに追加して）他のネットワークを介することもできる。
【００１５】
対戦相手決定システム１０４は、コンピュータデバイス１０２がホストしている複数のゲームセッションに関する情報を維持しており、プレイヤがゲームセッションを検索し、新しいゲームセッションを作成し、ゲームセッションに加わり、ゲームセッションから抜け、相互にデータを伝達するためにコンピュータデバイスによって使用される情報を獲得することを可能にする。ゲームセッションのホストデバイスは、新しいゲームセッションを作成するために対戦相手決定システム１０４（または他の何らかのデバイス）を有することなどによって、ゲームセッションを開始することを担当するデバイスである。ゲームセッションは、１人または複数のプレイヤを含むゲームタイトルの１つの事例を意味している。ゲームセッションのすべてのプレイヤがセッションを終了した場合（例えば、ゲームセッションから抜ける、システム１０４からログアウトする、プレイヤが自分のデバイスの電源を切る、など）、そのゲームセッションは終了する。ゲームセッションは数ラウンドのプレイを含むことができ、あるいはプレイのラウンドごとに新しいゲームセッションを作成することができる。複数の異なるゲームタイトルのそれぞれに対する複数のゲームセッションに関する情報は、システム１０４によって同時に維持することができる。プレイヤはゲームセッションをやめ（抜け）ることができ、またゲームセッションに加わることができる。セッションがゲームプレイの特定ポイントに到達すると、そのセッションに加わる可能性を制限することができる。代替として、プレイヤはゲームプレイ中に自由にゲームセッションに加わったりやめたりすることができ、したがってゲームセッション終了時のプレイヤはゲームセッション開始時のプレイヤと異なる場合がある。ゲームセッションに加わったり、やめたりする可能性に対する制限は、ゲームタイトル設計者の希望に基づいてゲームタイトルによって異なる場合がある。
【００１６】
コンピュータデバイスを使用しているプレイヤがゲームセッションに加わった場合、そのコンピュータデバイスもゲームセッションに加わったものとみなされる。各プレイヤが使用している、ゲームセッションをプレイしているデバイスもまた、そのゲームセッションのメンバーとみなされる。
【００１７】
コンピュータデバイス１０２は専用のゲームコンソール、追加機能（例えば、デジタルＶＣＲとして動作することができるためのデジタルビデオ記録機能、テレビジョン信号（放送信号、ケーブル信号、衛星放送信号などのどれであっても）に同調し、復号化することができるためのチャネル同調機能など）を組み込んだゲームコンソール、デスクトップＰＣ、ワークステーション、ポータブルコンピュータ、携帯電話、インターネット機器、サーバコンピュータなどであってよい。さらに、異なるタイプのデバイス１０２が対戦相手決定システム１０４を同時に使用することもできる。例えば、専用ゲームコンソールのユーザがゲームセッションに加わってポータブルコンピュータのユーザと対戦することができ、またはある製造業者製の専用ゲームコンソールのユーザがゲームセッションに加わって別の製造業者製の専用ゲームコンソールのユーザと対戦することができる。
【００１８】
図２は、典型的な対戦相手決定システム１０４をさらに詳細に示すブロック図である。対戦相手決定システム１０４は、対戦相手決定インターフェース１２０と対戦相手決定データベース１２２とを含む。対戦相手決定インターフェース１２０は、ゲームセッションを作成し、それに加わり、そこから抜け、それを検索するなどに関する要求を受け取る。そのような要求を受け取った場合、対戦相手決定インターフェース１２０は、その要求を遂行するために対戦相手決定データベース１２２に対して発行されるべき適切なコマンドを生成する。代替として、対戦相手決定インターフェース１２０は、単にその要求を対戦相手決定データベース１２２に転送することもできる。
【００１９】
対戦相手決定データベース１２２は、対戦相手決定システム１０４が現行で管理している様々なゲームセッションに関する情報を格納している複数の記録１２４を維持する。対戦相手決定システム１０４が管理しているゲームセッションは、通常は、対戦相手決定システム１０４が作成したゲームセッションである。対戦相手決定システム１０４が管理しているゲームセッションによっては開放されている場合があり、したがって追加のプレイヤがそのセッションに加わることができるが、ゲームセッションによっては閉鎖されている場合があり、したがって追加のプレイヤがそのセッションに加わることはできない。記録１２４は、様々なデータ構造のどれでも使用して維持することができる。典型的な一実施態様では、各ゲームセッションに関する情報は１つまたは複数の表の１エントリとして格納される。
【００２０】
対戦相手決定システム１０４は、コンピュータデバイス同士またはコンピュータデバイス間でのゲームセッションの確立を円滑化するように設計されている。本明細書の説明の大部分では、対戦相手決定システム１０４は、ゲームセッションの管理はしているが、ゲームセッションのメンバーデバイス同士またはそれらの間におけるデータ転送は管理していないように説明されている。逆にコンピュータデバイスは、コンピュータデバイス同士またはそれらの間でデータを転送するか、または別のサーバデバイス（図２には図示せず）を介して転送する。代替として、一部のデータ転送は対戦相手決定システム１０４を介して行うことができる。
【００２１】
様々な異なる情報をゲームセッションごとに記録１２４に維持することができる。一実施態様では、この情報には、少なくとも１つのゲームセッションＩＤ（ＸＮＫＩＤ）とゲームセッションキー（ＸＮＫＥＹ）とが含まれる。ゲームセッションＩＤは、対戦相手決定システム１０４が管理する特定のゲームセッションを一意に示す。ゲームセッションキーは、ゲームセッションに関連付けられた暗号キーである。この暗号キーはゲームセッションのメンバーすべてに対して使用可能とされ、安全にデータを相互に伝達するためにゲームセッションのメンバーによって使用される。追加キーは対戦相手決定システム１０４と安全に通信するためにコンピュータデバイスがそれぞれに使用することができるが、この１つ以上の追加キーは図２に示すゲームセッションキーとは異なるということに留意されたい。
【００２２】
ゲームセッションＩＤとゲームセッションキーは、対戦相手決定システム１０４またはホストコンピュータデバイス１０２によって生成することができる。代替として、ゲームセッションＩＤとゲームセッションキーの一方を対戦相手決定システム１０４が生成し、他方をホストコンピュータデバイス１０２が生成してもよい。
【００２３】
図２には単一のデータベース１２２しか示していないが、データベース１２２が維持する記録は複数のサーバデバイスすべてに分配することができるということを理解されたい（分割化と称する）。分割化は様々な方法で実行することができ、一実施態様では、特定の記録に対する区画番号を生成するために、表の所与の行の１つまたは複数のフィールドを使用し、ハッシュ関数などのアルゴリズムをその１つ以上のフィールドのデータに適用して実行される。ゲームタイトル識別子、ゲームセッションＩＤ、ゲームセッションキー、これらの組合せなどの異なるフィールドを使用することができる。区画番号は、記録が格納されている（または格納されるべき）複数のサーバデバイスの１つを示す。
【００２４】
図３は、新しいゲームセッションを作成するための典型的なプロセス１６０を示す流れ図である。プロセス１６０では、ゲームセッションＩＤとゲームセッションキーの両方が対戦相手決定システム１０４によって生成される。プロセス１６０は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せで実行することができる。プロセス１６０について、図１および２のコンポーネントをさらに参照して説明する。
【００２５】
最初に、ホストコンピュータデバイスは、それ自体の識別子と、新しいセッションが作成されるべきゲームの説明を対戦相手決定システム１０４に送信する（動作１６２）。ホスト識別子は、例えばゲームセッションに加わる他のコンピュータデバイスがホストデバイスと通信することを可能にするために、ゲームセッションに加わる他のコンピュータデバイスと通信することのできるホストコンピュータデバイスのネットワークアドレス構造を含む。一実施態様では、このホスト識別子は、以下でさらに詳細に説明する完全修飾アドレス（ＸＮＡＤＤＲ）である。
【００２６】
ゲームの説明は、ゲームのタイトルと、そのゲームの１つまたは複数の属性とを含む。属性は、ゲームセッションまたはゲームセッションのプレイヤに関連付けられたデータである。ゲームの属性は、ゲームタイトルの設計者の希望によりゲームごとに異なる場合がある。例えば、属性は、新しいセッションの作成を開始するプレイヤのスキルレベル、新しいセッションに加わることができる他のプレイヤの望ましいスキルレベル、プレイが行われるゲームのロケーション（例えば、日中、夜間、特定のスタジアムで、特定の街で、特定のトラックで、気象条件など）、プレイ中に使用されるべきオブジェクト（例えば、自動車のタイプ、飛行機または宇宙船のタイプなど）、ゲームに登場する様々なキャラクタの性質（例えば、使用できる特別な能力、使用できる魔力など）などを示すことができる。さらに、ゲームタイトルを含むのではなく、ゲームタイトルは要求に固有であってもよい（例えば、ゲームタイトルごとに異なる要求のタイプを使用することができる）。
【００２７】
ホストコンピュータデバイス１０２は、様々な異なる方法で新しいゲームセッションを作成する旨のそのデバイス１０２自体の希望を示すことができる。一実施態様では、新しいゲームセッションが作成されることを対戦相手決定システム１０４に示すために、動作１６２で所定のセッションＩＤ値（例えば、ゼロのセッションＩＤ値）が送信される。代替として、新しいゲームセッションを作成することを要求するため、ホストコンピュータデバイス１０２が使用するために特別のコマンドを定義することができる。さらに別の代替形態では、要求はある種の他のコマンドに固有であってよく、または他の動作の結果であってもよい。例えば、コンピュータデバイスが、現行のゲームセッションが適合しない一組の属性を有するゲームセッションに加わることを要求した場合、対戦相手決定システム１０４は自動的にその一組の属性を有する新しいゲームセッションを作成することができる。
【００２８】
次いで、対戦相手決定システム１０４は新しいゲームセッションＩＤとゲームセッションキーとを生成する（動作１６４）。新しいゲームセッションＩＤは様々な異なる方法で生成することができる。一実施態様では、対戦相手決定インターフェース１２０は、ゲームセッションＩＤとして使用するための乱数または擬似乱数を生成する（例えば、Ｗｉｎ３２（登録商標）アプリケーションプログラミングインターフェースで、暗号的に強力な乱数生成器を使用して）。乱数が、対戦相手決定システム１０４が現行で使用している別のゲームセッションＩＤと同一である場合、対戦相手決定インターフェース１２０は、ゲームセッションＩＤとして使用するために新しい乱数を生成する（このような新しい乱数の生成は、対戦相手決定システム１０４が現行で使用している別のゲームセッションＩＤと同一でない乱数が生成されるまで続く）。
【００２９】
動作１６４で生成された新しいゲームセッションキーは、様々な異なる方法でも生成することができる。典型的な一実施態様では、対戦相手決定システム１２０は、ゲームセッションキーとして使用するために乱数または擬似乱数を生成する（例えば、Ｗｉｎ３２（登録商標）アプリケーションプログラミングインターフェースで、暗号的に強力な乱数生成器を使用して）。代替として、ゲームセッションキーを生成するためには、様々な従来の暗号化プロセスのどれでも使用することができる。
【００３０】
対戦相手決定システム１０４は、ゲームの説明と共に新しいゲームセッションが使用可能であることを宣伝する（動作１６６）。一実施態様では、この宣伝は、ゲームセッションの記録をそのデータベースに追加し、したがって他のコンピュータデバイスによる検索に対してそのゲームセッションを使用可能とすることを含んでいる。代替として、この宣伝は、ゲームセッションを１つまたは複数のコンピュータデバイスに勧めることを含むことができる。例えば、コンピュータデバイスは検索基準（例えば、特定のプレイヤ、特定のスキルレベル、または他の属性を伴うゲームセッション）を対戦相手決定システム１２０に登録することができ、検索基準を満たすどのような新しいゲームセッションの通知でもコンピュータデバイスに送信するようインターフェース１２０に要求する。
【００３１】
対戦相手決定システム１０４は、ホストコンピュータデバイスにゲームセッションＩＤとゲームセッションキーとを戻す（動作１６８）。ホストコンピュータデバイスにゲームセッションＩＤとセッションキーとを戻すことによって、ホストコンピュータデバイスは、そのゲームセッションに関する後続の通知をセッションの他のメンバーから受信する際などに、新しく作成されたゲームセッションを示すことができる。代替として、コンピュータデバイスが一度に１つのゲームセッションしかホストすることを許可されていない場合、ゲームセッションＩＤをホストコンピュータデバイスに戻す必要はなく、ホストデバイスは、ホストしているゲームセッションに関して受信したどのような後続の通知もこの新しく作成されたゲームセッションに関するものであると単に想定することができる。
【００３２】
図４は、新しいゲームセッションを作成するための別の典型的なプロセス２００を示す流れ図である。プロセス２００では、ゲームセッションＩＤとゲームセッションキーの両方はホストコンピュータデバイス１０２によって生成される。プロセス２００は、ソフトウェア、ファームウェア、ハードウェアまたはこれらの組合せで実行することができる。プロセス２００について、図１および２をさらに参照して説明する。
【００３３】
最初に、ホストコンピュータデバイス１０２は、新しいゲームセッションに対して新しいゲームセッションＩＤと新しいゲームセッションキーとを生成する（動作２０２）。新しいゲームセッションを作成するという希望は、図３を参照して上述した動作１６２に類似の様々な方法でホストコンピュータデバイス１０２によって示すことができる。新しいゲームセッションＩＤと新しいゲームセッションキーとは、図３を参照して上述した動作１６４に類似の様々な方法で生成することができる。次いで、ホストコンピュータデバイス１０２は、ホストコンピュータデバイス１０２の識別子、新しいゲームセッションに対するゲームの説明、動作２０２で生成されたゲームセッションＩＤとゲームセッションキーを対戦相手決定システム１０４に送信する（動作２０４）。対戦相手決定システム１０４は、この情報をホストコンピュータデバイス１０２から受信し、ゲームの説明と共に新しいゲームセッションが使用可能であることを宣伝する（動作２０６）。この宣伝は、図３を参照して上述した動作１６６に類似の様々な方法で実行することができる。
【００３４】
図５は、コンピュータデバイスがゲームセッションに加わることを可能にする情報を分配する典型的なプロセス２３０を示す流れ図である。プロセス２３０は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せで実行することができる。プロセス１６０について、図１および２のコンポーネントをさらに参照して説明する。
【００３５】
新しいゲームセッションに加わることを希望するコンピュータデバイスは、対戦相手決定システム１０４にゲームセッション検索要求を送信する（動作２３２）。一実施態様では、このゲームセッション検索要求は、所望のゲームタイトルと、１つまたは複数の追加の検索パラメータとを含む。代替として、所望のゲームタイトルは含まれなくてよい（例えば、プレイヤがどのようなゲームでもよいからプレイしたいと示している場合）。別の代替形態では、１つまたは複数の追加の検索パラメータは含まれなくてよい（例えば、プレイヤが、ゲームの属性をまったく考慮せずに特定のゲームタイトルをプレイしたいと示している場合）。
【００３６】
対戦相手決定システム１０４はゲームセッション検索要求を受信し、検索要求パラメータを満たしておりプレイヤが入るためのオープンスロットを有するゼロまたはそれ以上の現行のゲームセッションを示す（動作２３４）。一実施態様では、対戦相手決定システム１０４は、コンピュータデバイスを使用して、現行プレイヤの人数以上の複数のオープンスロットを有するゲームセッションのみを戻す。閾値のゲームセッション数を超える数が検索要求パラメータを満たす場合、それらのゲームセッションの部分集合が戻される。次いで、対戦相手決定システム１０４は、示されたゲームセッションを示す情報を、要求を出しているコンピュータデバイスに戻す（動作２３６）。この情報は、示されたゲームセッションのそれぞれに対するゲームセッションキーを含み、これによってコンピュータデバイスはゲームセッションに参加している他の１つ以上のコンピュータデバイスと安全に通信することができる。この情報は、ゲームセッションを作成する場合にホストコンピュータデバイスによって提供された説明情報も含む（例えば、図３の動作１６２または図４の動作２０４）。したがって、戻された説明情報は、検索要求パラメータで示されたゲーム属性を超える追加のゲーム属性を含むことができる。
【００３７】
動作２３６の代わりに複数の動作を実行することもできることに留意されたい。例えば、示されたゲームセッションのすべてに対するゲームセッションキーを戻すのではなく、ゲーム識別子と説明情報だけをコンピュータデバイスに戻すこともできる。コンピュータデバイスのプレイヤは、選択されたゲームセッションに対するゲームセッションキーに対する要求をどのコンピュータデバイスが対戦相手決定システム１０４に送信するかに応じて、示されたゲームセッションの１つを選択することができる。次いで、対戦相手決定システム１０４は、要求されたゲームセッションキーをコンピュータデバイスに戻す。
【００３８】
再び図１を参照すると、コンピュータデバイス１０２のユーザは、別のコンピュータデバイスの特定ユーザ（例えば、ユーザの友人）をゲームセッションに加わるよう招待することができる。このような招待は、対戦相手決定システム１０４を介して送信しても、代替として別のシステム（例えば、図１３を参照して後述する存在／通知システム）を介して送信することもできる。ゲームセッションに加わることへの招待はそのセッションのゲームセッションＩＤを含み、招待されたユーザは適切なゲームセッションを検索し、また示させることができる。
【００３９】
図６は、加わるよう招待されたゲームセッションにコンピュータデバイスが加わることを可能にする情報を分配する典型的なプロセス２６０を示す流れ図である。プロセス２６０は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せで実行することができる。プロセス２６０を、図１および２のコンポーネントをさらに参照して説明する。
【００４０】
最初に、コンピュータデバイスは、ホストコンピュータデバイスがホストするゲームセッションに加わることへの招待を受信する（動作２６２）。コンピュータデバイスは、対戦相手決定システム１０４にその招待を受理したことを送信する（動作２６４）。動作２６４での受理は、特定タイプの要求であっても、またはコンピュータデバイスが加わるよう招待されたゲームセッションのゲームセッションＩＤである１つの検索パラメータを有するゲーム検索要求であってもよい。対戦相手決定システム１０４は、これに応答して、そのゲームセッションに対するゲームセッションキーをコンピュータデバイスに送信する（動作２６６）。
【００４１】
一実施態様では、ホストコンピュータデバイスは、公開スロットと個人スロットの両方を含むゲームセッションを作成することができる。作成プロセスの一部として、ホストコンピュータデバイスは、そのゲームセッションに公開スロットがいくつ含まれることになるか、またそのゲームセッションに個人スロットがいくつ含まれるかを対戦相手決定システム１０４に対して示す。各スロットには１人のプレイヤが入ることができる。対戦相手決定システム１０４は、それらの異なるスロットの記録を維持し、公開スロットは検索によって入ることを可能にし（例えば、図５のプロセス２３０ごとに）、個人スロットは招待によって入ることを可能にする（例えば、図６のプロセス２６０ごとに）。したがって、ゲームセッションが作成された場合、ユーザは、すべてのスロットに見知らぬ人物が入ってしまうことを心配せずに、自分の友人（後で招待する可能性のある人物）のためにゲームの特定スロットをとっておくことができる。対戦相手決定システム１０４は、代替として、個人スロットが満杯の場合には招待されたユーザが公開スロットに入ることができるようにし、少なくとも閾値の時間だけ個人スロットが空であった場合には招待されていないユーザがその個人スロットに入ることができるようにするなど、それらの規則に対する変形形態を可能にすることができる。
【００４２】
ゲームセッションの記録を維持することに加え、対戦相手決定システム１０４（代替として、システム１０４と共同で動作する別のシステム）は、個々のコンピュータデバイス１０２に格納されている他の情報の記録を維持することができる。例えば、ある種のゲームタイトルはゲームプレイに関する情報を維持する（例えば、湖の特定部分に存在する魚または障害物の数、特定場面の一部をなすコンピュータによって生成された特別なキャラクタまたは動物の数、天候パターン（例えば、特定の場所では海がどのように荒れているか）などのゲームの環境に関する様々な特徴）。この環境でプレイしているコンピュータデバイスは、典型的な場合には、たとえプレイヤが接近戦の環境で１対１の対戦をしていない場合でも、様々なプレイヤ間でゲームプレイを一貫させるための情報を共有することを希望する。
【００４３】
対戦相手決定システム１０４は、共用されるべき情報の識別子と、その情報が格納されている位置の指示との記録を維持することによってこのようなゲームタイトルに関する情報交換を円滑化することができる（例えば、すべてのコンピュータデバイスが情報を格納するか、またはコンピュータデバイスの選択された１つのデバイスだけが情報を格納するか（その場合には、どのコンピュータデバイスがその情報を格納しているか））。これらの識別子は、例えばゲームセッションの属性として格納することができる。したがって、ユーザが加わることのできるゲームセッションを示す情報を獲得するために検索要求を実行するのではなく、コンピュータデバイス（ゲームセッションに既に加わっていてもいなくてもよい）に対する要求に応じて１つ以上のこのゲームデータ位置に対する検索要求を実行することができる。必要に応じてデバイスが安全な方法でゲームデータを直接的に交換できるようにするために、ゲームをプレイしている様々なコンピュータデバイスにゲームセッションキーを戻すこともできる。対戦相手決定システム１０４からゲームデータの１つ以上の位置を獲得すると、次いでコンピュータデバイスは、その１つ以上の位置（例えば、それらの位置にあるコンピュータデバイス）からデータを獲得するために、その１つ以上の位置にアクセスすることができる。一実施態様では、位置はコンピュータデバイスの完全修飾アドレス（ＸＮＡＤＤＲ）である。
【００４４】
図７は、コンピュータデバイス間での情報交換を円滑化する典型的なプロセス３００を示す流れ図である。プロセス３００は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せで実行することができる。プロセス３００を、図１および２のコンポーネントをさらに参照して説明する。
【００４５】
最初に、コンピュータデバイスは、ゲームデータ交換情報を求める要求を対戦相手決定システム１０４に送信する（動作３０２）。この要求は、特定のゲームセッションを、例えばそのゲームセッションＩＤによって示すことができる。対戦相手決定セッションは、その要求に対応するゲームセッションを識別し（動作３０４）、所望のゲームデータの位置を識別する（動作３０６）。所望のゲームデータの位置は、例えばゲームセッションの特定の１つまたは複数のコンピュータデバイスであってよい。次いで対戦相手決定システムは、その位置とゲームセッションキーとをコンピュータデバイスに送信し（動作３０８）、コンピュータデバイスが安全な接続を介して適切なコンピュータデバイスによりゲームデータを獲得するために使用することができる情報をコンピュータデバイスに提供する。代替として、セッションキーが既にコンピュータデバイスに伝えられている場合、動作３０８でセッションキーを送信する必要はない。
【００４６】
再び図２を参照すると、様々な属性は記録１２４に格納することができ、ゲームセッションを作成し、検索する際に対戦相手決定システム１０４によって使用される。属性は、１つのゲームセッションまたは１つのゲームセッションの１人のプレイヤに関連付けられたデータである。一実施態様では、各属性は、属性ＩＤによって示される属性値を有する。３２ビットの属性ＩＤの形式の一例を、以下の表Ｉに示す。属性ＩＤはゲームセッション内の属性を一意に示し、そのＩＤの異なるビット範囲も属性を記述する。この記述は、その属性がどのエンティティに関係するか、属性値を表すためにどのような種類のデータが使用されるか、その属性はどのネームスペースに関連付けられているかを指定することができる。
【００４７】
一実施態様では、属性にはグローバルネームスペースまたはタイトル特有のネームスペースを関連付けることができる。グローバル属性は対戦相手決定システムによって事前定義される属性であり、すべてのゲームを通して共通の意味を有する。タイトル特有属性はゲームによって定義され、そのゲーム内での意味だけを有する。したがって、２つの異なるゲームタイトルが、２つの異なる無関係な属性を示すために同じ属性ＩＤを使用することができる。これらのタイトル特有属性はタイトルＩＤによって有効範囲が示されるので、属性が相互に混同されることはない。
【００４８】
【表１】
2004065956.tif 000003
【００４９】
図８〜１２は、図１のゲームコンソール１０２と対戦相手決定システム１０４の間で要求と応答を伝達するための典型的なメッセージフォーマットを示す図である。各メッセージフォーマットは、複数のフィールドまたは後述する様々なデータを含むことができる部分を含む。
【００５０】
図８は、ゲームコンソール１０２から対戦相手決定システム１０４にゲームセッション作成要求を伝達するための典型的なメッセージ構造３５０を示す図である。メッセージリンクフィールドは、メッセージ構造３５０の長さを含んでいる。プロトコルバージョンフィールドは、使用されている対戦相手決定プロトコルのプロトコルバージョンを含んでいる。セッションＩＤフィールドは、対応するゲームセッションのゲームセッションＩＤを含んでいる。タイトルＩＤフィールドは、対応するゲームセッションのゲームタイトルの識別子を含んでいる。
【００５１】
ホストアドレスフィールドは、ホストコンピュータデバイスのアドレス構造を含んでいる。一実施態様では、このアドレス構造は、ホストコンピュータデバイスに対する完全修飾アドレス（ＸＮＡＤＤＲ）と称される。ホストコンピュータデバイスの完全修飾アドレスは、ホストコンピュータデバイスがネットワークルータなどのネットワークアドレストランスレーション（ＮＡＴ）デバイスの後方に置かれている可能性があっても、他のコンピュータデバイスがホストコンピュータデバイスにアクセスできるために十分な情報を含む。
【００５２】
コンピュータデバイスの完全修飾アドレスは、コンピュータデバイスに対するイーサネット（登録商標）ＭＡＣアドレス、コンピュータデバイスのローカルＩＰアドレス（これは、コンピュータデバイスが有していると認識しているＩＰアドレスであり、対戦相手決定システムがコンピュータデバイスからデータパケットを受け取るＩＰアドレスとは異なる場合がある（例えば、ルータなどの、コンピュータデバイスと対戦相手決定システムの間に設置されるＮＡＴデバイスのために（または、後述する図１３のセキュリティゲートウェイ４０４などの対戦相手決定システムの代用として機能する中継手段）））、対戦相手決定システム（または中継手段）がコンピュータデバイスからデータパケットを受け取るＩＰアドレスおよびポート（コンピュータデバイスのローカルＩＰアドレスと同じであっても、異なっていてもよい（例えば、ＮＡＴデバイスのアドレス））、論理デバイス番号（一群の複数の対戦相手決定システム（または中継手段）で対戦相手決定システム（または中継手段）を一意に示すための対戦相手決定システム（または中継手段）に割り当てられた識別子）、セキュリティパラメータ索引（ＳＰＩ）値（例えば、ＳＰＩ１および／またはＳＰＩ２）、およびコンピュータデバイスＩＤを含む。完全修飾アドレスの内容は、コンピュータデバイスから受信したデータパケットに埋め込まれた情報と、コンピュータデバイスと対戦相手決定システム（または中継手段）の間に安全な接続を確立する際に受信された情報とに基づいて決定することができる。
【００５３】
値ＳＰＩ１は、安全な通信チャネルを介して対戦相手決定システム（または中継手段）に送信される各データパケットのヘッダにデバイスが含める、コンピュータデバイスによって生成される値を示す。安全な通信チャネルを確立するためにゲームコンソールが対戦相手決定システム（または中継手段）に送信する第１のデータパケットは、新しい通信チャネルが確立されることになっていることを対戦相手決定システム（または中継手段）に示す０のＳＰＩ１値を含む。後続データパケットは、ゲームコンソールが生成したゼロ以外の値を含む。同様に、対戦相手決定システム（または中継手段）は、安全な通信チャネルを介してゲームコンソールに送信される各データパケットのヘッダに含めるＳＰＩ２の値を生成する。ＳＰＩ１値によって、ゲームコンソールは、ゲームコンソールと対戦相手決定システム（または中継手段）の間の安全な通信チャネルを、対応するゲームコンソールによってデータパケットが送信される特定チャネルと同一であると特定することを可能にし、同様にＳＰＩ２値によって、対戦相手決定システム（または中継手段）は、ゲームコンソールと対戦相手決定システム（または中継手段）の間の安全な通信チャネルを、対応する対戦相手決定システム（または中継手段）によってデータパケットが送信される特定チャネルと同一であると特定することを可能にする。各安全な通信チャネルは、同じゲームコンソールと対戦相手決定システム（または中継手段）の間であっても、通常は異なるＳＰＩ値を有する。
【００５４】
使用可能な公開スロットフィールドは、当該ゲームで使用可能な検索できるプレイヤスロット数を指定する。プレイヤがゲームに加わり、またはやめる際、使用可能な公開スロットフィールドの値はそれに応じて更新される。使用可能な個人スロットフィールドは、当該ゲームで使用可能な個人プレイヤスロット数を指定する。プレイヤがゲームに加わり、またはやめる際に、使用可能な個人スロットフィールドの値はそれに応じて更新される。個人プレイヤスロットには、そのゲームセッションへの招待を受けたプレイヤだけが入ることができる。
【００５５】
現在満たされている公開スロットフィールドは、プレイヤが現在入っている公開スロット数を指定する。プレイヤがゲームに加わり、またはやめる際に、この現在満たされている公開スロットフィールドの値はそれに応じて更新される。現在満たされている個人スロットフィールドは、プレイヤが現在入っている個人スロット数を指定する。プレイヤがゲームに加わり、またはやめる際に、この現在満たされている個人スロットフィールドの値はそれに応じて更新される。属性数フィールドは、当該ゲームセッションに関連付けられた属性数を指定する。属性オフセットフィールドは、当該ゲームセッションに関連付けられた属性に対するオフセットを指定する。属性はどのような順番で構成することもできる。各属性オフセットは、属性ＩＤと属性値を含むメッセージの領域を示す（例えば、それに対するポインタ）。
【００５６】
図９は、対戦相手決定システム１０４からゲームコンソール１０２にゲームセッション作成要求に対する応答を伝えるための、典型的なメッセージ構造３６０を示す図である。セッションＩＤフィールドは、当該ゲームセッションに割り当てられたゲームセッションＩＤを含んでいる。キー交換キーフィールドは、当該ゲームセッションに割り当てられたゲームセッションキーを含んでいる。
【００５７】
図１０は、ゲームコンソール１０２から対戦相手決定システム１０４にゲームセッションを削除するための要求を伝えるための、典型的なメッセージ構造３７０を示す図である。メッセージリンクフィールドは、メッセージ構造３７０の長さを含んでいる。プロトコルバージョンフィールドは、使用中の対戦相手決定プロトコルのプロトコルバージョンを含んでいる。セッションＩＤフィールドは、対応するゲームセッションのゲームセッションＩＤを含んでいる。タイトルＩＤフィールドは、対応するゲームセッションのゲームタイトルの識別子を含んでいる。
【００５８】
図１１は、ゲームコンソール１０２から対戦相手決定システム１０４にゲームセッション検索要求を伝えるための、典型的なメッセージ構造３８０を示す図である。メッセージリンクフィールドは、メッセージ構造３８０の長さを含んでいる。プロトコルバージョンフィールドは、使用中の対戦相手決定システムのプロトコルバージョンを含んでいる。タイトルＩＤフィールドは、対応するゲームセッションのゲームタイトルの識別子を含んでいる。検索手順索引フィールドは、対戦相手決定システムに格納されているどの手順が検索を実行するために使用されるかを指定する。ゲームセッションＩＤに基づく検索などの実行されるべき、異なるタイプの検索（例えば、ゲームへの招待に応答する際）または他のパラメータに基づく検索を指定するために、異なる検索手順索引を使用することができる。
【００５９】
パラメータ数フィールドは、このゲームセッション検索フィールドと共に送信中のパラメータ数を指定する。パラメータはどのような順番で構成してもよい。各パラメータは、データタイプインジケータとそれに続くパラメータデータとを含む。
【００６０】
図１２は、対戦相手決定システム１０４からゲームコンソール１０２にゲームセッション検索要求に対する応答を伝えるための、典型的なメッセージ構造３９０を示す図である。結果リンクフィールドは、任意の属性を含む検索結果メッセージ構造３９０の全長を含んでいる。セッションＩＤフィールドは、対応するゲームセッションのゲームセッションＩＤを含んでいる。ホストアドレスフィールドは、ホストコンピュータデバイスのアドレス構造を含んでいる。一実施態様では、このアドレス構造は、ホストコンピュータデバイスの完全修飾アドレス（ＸＮＡＤＤＲ）と称される。
【００６１】
使用可能な公開スロットフィールドは、当該ゲームで使用可能な検索できるプレイヤスロット数を指定する。使用可能な個人スロットフィールドは、当該ゲームで使用可能な個人プレイヤスロット数を指定する。現在満たされている公開スロットフィールドは、プレイヤによって現在満たされている公開スロット数を指定する。現在満たされている個人スロットフィールドは、プレイヤが現在入っている個人スロット数を指定する。追加属性数フィールドは、当該ゲームセッションに関連付けられた属性数を指定する。属性はどのような順番でも構成することができる。各属性オフセットは、属性ＩＤと属性値とを含むメッセージの領域を示す（例えば、それに対するポインタ）。
【００６２】
一実施態様では、図２の対戦相手決定システム１２２は、様々なゲームセッションに対するデータを格納するために複数の表を使用する。これらの表およびそれぞれの表に格納されているデータを、以下の表ＩＩ〜Ｘで説明する。これらの表は、対戦相手決定システム１０４が管理しているすべてのゲームセッションのマスターリストを含む対戦セッション表（表ＩＩ）、対戦相手決定システム１０４が管理しているすべての現行ゲームセッションに対するセッション属性のリストを含む対戦属性表（表ＩＩＩ）、所与のタイトルが使用中のタイトル特有の属性数を監視するために使用される、有効なタイトル特有の属性のリストを含む対戦属性情報表（表ＩＶ）（属性の範囲は、任意選択でタイトルに強制することも、属性数に基づいて料金を請求することもできる）、対戦相手決定システム１０４を使用することが認証されている各ゲームタイトルに関する情報を含む対戦タイトル表（表Ｖ）、セキュリティゲートウェイアドレスから関連付けられたゲームセッションＩＤへの逆検索を可能にする情報を含む対戦セッションセキュリティゲートウェイ検索表（表ＶＩ）（セキュリティゲートウェイに関しては、図１３を参照して以下でさらに詳しく説明する）、対戦相手決定データベースアプリケーションが使用する構成情報を含む対戦構成表（表ＶＩＩ）、ネットワークゾーンの完全なリストを含む対戦ゾーン表（表ＶＩＩＩ）（例えば、図１３のデータセンター４１０のように、図１の対戦相手決定システム１０４が実施されるネットワーク内に確立された一組のネットワークゾーン）、どのネットワークアドレスプレフィックスがどのゾーンに常駐しているかの定義を含む対戦ゾーンマップ（表ＩＸ）、および対になったゾーンの間の距離（例えば、ネットワーク待ち時間）を含む対戦ゾーン距離表（表Ｘ）を含む。
【００６３】
【表２】
2004065956.tif 000004
【００６４】
【表３】
2004065956.tif 000005
【００６５】
【表４】
2004065956.tif 000006
【００６６】
【表５】
2004065956.tif 000007
【００６７】
【表６】
2004065956.tif 000008
【００６８】
【表７】
2004065956.tif 000009
【００６９】
【表８】
2004065956.tif 000010
【００７０】
【表９】
2004065956.tif 000011
【００７１】
【表１０】
2004065956.tif 000012
【００７２】
一実施態様では、一組のアプリケーションプログラミングインターフェース（ＡＰＩ）は、対戦相手決定機能を使用するためにゲームタイトルに対して使用可能とされる。これらのＡＰＩはコンピュータデバイスのゲームタイトルに対して公開されており、これによってゲームセッションは作成され、検索されることができる。ゲームセッションをホストすることを支援する一組のゲームセッションホストＡＰＩは、
・ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＣｒｅａｔｅ
・ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＵｐｄａｔｅ
・ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＤｅｌｅｔｅ
・ＸＯｎｌｉｎｅＭａｔｃｈＧｅｔＳｅｓｓｉｏｎＩｎｆｏ
を含む。
【００７３】
ゲームセッションを検索することを支援する一組のゲームセッションクライアントＡＰＩは、
・ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈ
・ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＦｉｎｄＦｒｏｍＩＤ
・ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＧｅｔＲｅｓｕｌｔｓ
・ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＰａｒｓｅ
を含む。
【００７４】
ゲームセッションのコンピュータデバイスホストのゲームタイトルは、新しいゲームセッションを作成するためにまずＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＣｒｅａｔｅを呼び出す。任意の属性を含んでいるベースセッション情報と構造とが渡される。ＡＰＩは、ゲームセッション要求をフォーマットして、対戦相手決定システムに送信する。オンラインタスクハンドルが戻される。セッション作成タスクが完了すると、発呼者は、ＸＯｎｌｉｎｅＭａｔｃｈＧｅｔＳｅｓｓｉｏｎＩｎｆｏ　ＡＰＩを使用してゲームセッションＩＤとゲームセッションキー（キー交換キー）とを取り出すためにタスクハンドルを使用することができる。セッション情報または属性が変更されると、更新をサーバに送信するためにＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＵｐｄａｔｅを呼び出すことができる。ここでもまた、タスクハンドルが戻される。ホストがサーバでゲームセッションを宣伝することを最早希望しない場合は、ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＤｅｌｅｔｅが呼び出される。
【００７５】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＣｒｅａｔｅ
この機能は、ホストされたゲームセッションを開始し、非同期タスクハンドルを戻す。
ＨＲＥＳＵＬＴ　ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＣｒｅａｔｅ　（
ＩＮ　ＤＷＯＲＤ　ｄｗＰｕｂｌｉｃＣｕｒｒｅｎｔ，
ＩＮ　ＤＷＯＲＤ　ｄｗＰｕｂｌｉｃＡｖａｉｌａｂｌｅ，
ＩＮ　ＤＷＯＲＤ　ｄｗＰｒｉｖａｔｅＣｕｒｒｅｎｔ，
ＩＮ　ＤＷＯＲＤ　ｄｗＰｒｉｖａｔｅＡｖａｉｌａｂｌｅ，
ＩＮ　ＤＷＯＲＤ　ｄｗＮｕｍＡｔｔｒｉｂｕｔｅｓ，
ＩＮ　ＰＸＯＮＬＩＮＥ＿ＡＴＴＲＩＢＵＴＥ　ｐＡｔｔｒｉｂｕｔｅｓ，
ＩＮ　ＨＡＮＤＬＥ　ｈＷｏｒｋＥｖｅｎｔ，
ＯＵＴ　ＰＸＯＮＬＩＮＥＴＡＳＫ＿ＨＡＮＤＬＥ　ｐｈＴａｓｋ
）；
【００７６】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＣｒｅａｔｅパラメータ
ｄｗＰｕｂｌｉｃＣｕｒｒｅｎｔ−公開スロットを現在占有しているセッションのプレイヤ数。
ｄｗＰｕｂｌｉｃＡｖａｉｌａｂｌｅ−使用可能な公開スロット数。
ｄｗＰｒｖａｔｅＣｕｒｒｅｎｔ−個人スロットを現在占有しているセッションのプレイヤ数。
ｄｗＰｒｉｖａｔｅＡｖａｉｌａｂｌｅ−使用可能な個人スロット数。
ｄｗＮｕｍＡｔｔｒｉｂｕｔｅｓ−当該セッションに対して宣伝される予定の属性数。この数は、複数のユーザがコンソールの前に座っている場合に複製することのできるユーザ特有の属性を考慮に入れるべきである。
ｐＡｔｔｒｉｂｕｔｅｓ−セッションの属性を記述する属性構造の配列。
ｈＷｏｒｋＥｖｅｎｔ−発呼者が作成したイベントオブジェクトに対するハンドルである。発呼者は、なすべき作業があるか否かを判定するためにこのイベントを定期的にチェックすることができる。ポーリングモデルを使用して計画している場合、発呼者はＮＵＬＬに移動することもできる。
ｐｈＴａｓｋ−入力の際には、このパラメータは有効なタスクハンドル変数を指し示すべきである。成功裏に戻った際には、この変数には有効なハンドルが入力される。
【００７７】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＣｒｅａｔｅ戻り値
Ｓ＿ＯＫ−ゲームセッションは成功裏に作成された。ハンドルはｐｈＴａｓｋに戻される。
【００７８】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＵｐｄａｔｅ
この機能は、セッションの作成後にサーバでセッション情報と属性とを変更するために使用される。
ＨＲＥＳＵＬＴ　ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＵｐｄａｔｅ　（
ＩＮ　ＸＮＫＩＤ　ＳｅｓｓｉｏｎＩＤ，
ＩＮ　ＤＷＯＲＤ　ｄｗＰｕｂｌｉｃＣｕｒｒｅｎｔ，
ＩＮ　ＤＷＯＲＤ　ｄｗＰｕｂｌｉｃＡｖａｉｌａｂｌｅ，
ＩＮ　ＤＷＯＲＤ　ｄｗＰｒｉｖａｔｅＣｕｒｒｅｎｔ，
ＩＮ　ＤＷＯＲＤ　ｄｗＰｒｉｖａｔｅＡｖａｉｌａｂｌｅ，
ＩＮ　ＤＷＯＲＤ　ｄｗＮｕｍＡｔｔｒｉｂｕｔｅｓ，
ＩＮ　ＰＸＯＮＬＩＮＥ＿ＡＴＴＲＩＢＵＴＥ　ｐＡｔｔｒｉｂｕｔｅｓ，
ＩＮ　ＨＡＮＤＬＥ　ｈＷｏｒｋＥｖｅｎｔ，
ＯＵＴ　ＰＸＯＮＬＩＮＥＴＡＳＫ＿ＨＡＮＤＬＥ　ｐｈＴａｓｋ
）；
【００７９】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＵｐｄａｔｅパラメータ
ＳｅｓｓｉｏｎＩＤ−更新中のセッションを示す。この値はＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＧｅｔＩｎｆｏから取り出すことができる。
ｄｗＰｕｂｌｉｃＡｖａｉｌａｂｌｅ−使用可能な公開スロット数。
ｄｗＰｒｉｖａｔｅＣｕｒｒｅｎｔ−現在個人スロットを占有しているセッションのプレイヤ数。
ｄｗＰｒｉｖａｔｅＡｖａｉｌａｂｌｅ−使用可能な個人スロット数。
ｄｗＮｕｍＡｔｔｒｉｂｕｔｅｓ−当該セッションに対して宣伝されることになっている属性数。この数は、複数のユーザがコンソールの前に座っている場合に複製することのできるユーザ特有の属性を考慮に入れるべきである。
ｐＡｔｔｒｉｂｕｔｅｓ−セッションの属性を記述する属性構造の配列。
ｈＷｏｒｋＥｖｅｎｔ−発呼者が作成したイベントオブジェクトに対するハンドルである。発呼者は、なすべき作業があるか否かを判定するためにこのイベントを定期的にチェックすることができる。ポーリングモデルを使用して計画している場合、発呼者はＮＵＬＬに移動することもできる。
ｐｈＴａｓｋ−入力の際には、このパラメータは有効なタスクハンドル変数を指し示すべきである。成功裏に戻った際には、この変数には有効なハンドルが入力される。
【００８０】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＵｐｄａｔｅ戻り値
Ｓ＿ＯＫ−この機能は成功した。
【００８１】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＤｅｌｅｔｅパラメータ
この機能は、サーバからセッションとそのすべての属性を削除するために使用される。
ＨＲＥＳＵＬＴ　ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＤｅｌｅｔｅ　（
ＩＮ　ＸＮＫＩＤ　ＳｅｓｓｉｏｎＩＤ，
ＩＮ　ＨＡＮＤＬＥ　ｈＷｏｒｋＥｖｅｎｔ，
ＯＵＴ　ＰＸＯＮＬＩＮＥＴＡＳＫ＿ＨＡＮＤＬＥ　ｐｈＴａｓｋ
）；
【００８２】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＤｅｌｅｔｅパラメータ
ＳｅｓｓｉｏｎＩＤ−削除中のセッションを示す。この値は、セッション作成後にＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＧｅｔＩｎｆｏから取り出される。
ｈＷｏｒｋＥｖｅｎｔ−発呼者が作成したイベントオブジェクトに対するハンドルである。発呼者は、なすべき作業があるか否かを判定するためにこのイベントを定期的にチェックすることができる。ポーリングモデルを使用して計画している場合、発呼者はＮＵＬＬに移動することもできる。
ｐｈＴａｓｋ−入力の際には、このパラメータは有効なタスクハンドル変数を指し示すべきである。成功裏に戻った際には、この変数には有効なハンドルが入力される。
【００８３】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＤｅｌｅｔｅ戻り値
Ｓ＿ＯＫ−この機能は成功した。
【００８４】
ＸＯｎｌｉｎｅＭａｔｃｈＧｅｔＳｅｓｓｉｏｎＩｎｆｏ
この機能は、ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＣｒｅａｔｅが成功裏に完了した後で、タスクハンドルからセッション情報を取り出すために使用される。
ＨＲＥＳＵＬＴ　ＸＯｎｌｉｎｅＭａｔｃｈＧｅｔＳｅｓｓｉｏｎＩｎｆｏ　（
ＩＮ　ＸＯＮＬＩＮＥＴＡＳＫ＿ＨＡＮＤＬＥ　ｈＴａｓｋ，
ＯＵＴ　ＸＮＫＩＤ　＊ｐＳｅｓｓｉｏｎＩＤ，
ＯＵＴ　ＸＮＫＥＹ　＊ｐＫｅｙＥｘｃｈａｎｇｅＫｅｙ
）；
【００８５】
ＸＯｎｌｉｎｅＭａｔｃｈＧｅｔＳｅｓｓｉｏｎＩｎｆｏパラメータ
ｈＴａｓｋ−ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＣｒｅａｔｅによって戻されたオンラインタスクハンドル。
ｐＳｅｓｓｉｏｎＩＤ−セッションＩＤを受け取ることになっているＸＮＫＩＤ変数のアドレス。
【００８６】
ｐＫｅｙＥｘｃｈａｎｇｅＫｅｙ−キー交換キーを受け取ることになっているＸＮＫＥＹ変数のアドレス。
【００８７】
ＸＯｎｌｉｎｅＭａｔｃｈＧｅｔＳｅｓｓｉｏｎＩｎｆｏ戻り値
Ｓ＿ＯＫ−セッションＩＤとキーは成功裏に戻された。
【００８８】
ゲーム検索を実行するために、ゲームタイトルはＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈを呼び出す。ゲームタイトルは、手順索引内に、受信を希望する検索結果の最大数と、データベースに格納されている検索手順に渡されるべき任意のパラメータとを渡す。ゲームは、検索結果が占有できる最大バッファサイズも指定する。このバッファサイズは、ＡＰＩによって内部的に割り当てられ、このバッファに合致しない検索結果はどのような結果でもドロップされる。ゲームタイトルは、任意選択で、作業が残っている場合に信号を送られることになっているイベントハンドルを指定することができる。
【００８９】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈはオンラインタスクハンドルを戻す。検索タスクが完了したことを示している場合、ゲームはタスクハンドルを使用してＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＧｅｔＲｅｓｕｌｔｓを呼び出すことによって検索結果の配列を取り出すことができる。検索結果はこの時点で個別にアクセスすることができる。戻された拡張属性はどのような属性でもＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＰａｒｓｅを使用して構文解析することができる。ゲームは、戻される属性の順番とタイプとを事前に認識している。各個別の検索結果は、ゲームセッションホストに接続するために使用されるＸＮＡＤＤＲ、ＸＮＫＩＤおよびＸＮＫＥＹを含んでいる。
【００９０】
特有のゲームセッションＩＤが、ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＦｉｎｄＦｒｏｍＩＤなどのある種のバンド外機構によって既に知られている場合、セッションＩＤを使用して単一セッションを取り出すためにＡＰＩを使用することができる。このタスクが完了すると、発呼者は、要求されたセッションのＸＮＡＤＤＲ、ＸＮＫＩＤおよびＸＮＫＥＹを取り出すためにＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＧｅｔＲｅｓｕｌｔｓを使用する。
【００９１】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈ
この機能は、新しいゲームセッション検索を作成し、その検索をサーバに送信し、要求の進捗状況を監視するための非同期タスクハンドルを戻す。この機能は、発呼者によって渡されるサイズを使用して、検索結果に対するバッファを内部的に割り当てる。
ＨＲＥＳＵＬＴ　ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈ　（
ＩＮ　ＤＷＯＲＤ　ｄｗＰｒｏｃｅｄｕｒｅＩｎｄｅｘ，
ＩＮ　ＤＷＯＲＤ　ｄｗＮｕｍＲｅｓｕｌｔｓ，
ＩＮ　ＤＷＯＲＤ　ｄｗＮｕｍＡｔｔｒｉｂｕｔｅｓ，
ＩＮ　ＰＸＯＮＬＩＮＥ＿ＡＴＴＲＩＢＵＴＥ　ｐＡｔｔｒｉｂｕｔｅｓ，
ＩＮ　ＤＷＯＲＤ　ｄｗＲｅｓｕｌｔｓＬｅｎ，
ＩＮ　ＨＡＮＤＬＥ　ｈＷｏｒｋＥｖｅｎｔ，
ＯＵＴ　ＰＸＯＮＬＩＮＥＴＡＳＫ＿ＨＡＮＤＬＥ　ｐｈＴａｓｋ
）；
【００９２】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈパラメータ
ｄｗＰｒｏｃｅｄｕｒｅＩｎｄｅｘ−検索を実行するためにデータベースで実行されることになっている当該タイトルに対して格納されている手順を示す。
ｄｗＮｕｍＲｅｓｕｌｔｓ−ゲームが処理に関心を持っている検索結果の最大数を指定する。
ｄｗＮｕｍＡｔｔｒｉｂｕｔｅｓ−当該要求の一部として渡され、最終的に格納された手順に渡されることになっているパラメータ数。
ｐＡｔｔｒｉｂｕｔｅｓ−パラメータ値の配列。
ｄｗＲｅｓｕｌｔｓＬｅｎ−このパラメータは、検索結果を保持するために当該ＡＰＩが割り当てるバッファ空間量を指定する。当該ＡＰＩは、このパラメータが指定するバッファ空間を埋めるよう試みる。
ｈＷｏｒｋＥｖｅｎｔ−発呼者が作成したイベントオブジェクトに対するハンドルである。このオブジェクトは、作業が残っている場合に知らされる。このパラメータは任意選択であり、発呼者は代わりに、自分がポーリングすることを示してＮＵＬＬに移動することもできる。
ｐｈＴａｓｋ−成功裏に戻されると、このパラメータは、当該検索を一意に識別するハンドルを指し示す。このハンドルは後続のＡＰＩ呼び出しで使用される。
【００９３】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈ戻り値
Ｓ＿ＯＫ−検索は成功裏に作成された。
【００９４】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＦｉｎｄＦｒｏｍＩＤ
この機能は、単一の指定されたセッションに対する情報を取り出す。この機能は、招待のように、ある種のバンド外機構によってセッションＩＤが取り出されることを想定している。この機能は、手順索引、パラメータ、および最大結果が固定されている場合には、基本的にＸＯｎｌｉｈｅＭａｔｃｈＳｅａｒｃｈの省略形式である。ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈに乗じて行われるイベントのすべては、当該ＡＰＩに乗じても行われる。ＡＰＩがその作業を定期的に実行することを可能にするために、戻されたタスクハンドルが使用される。これは、ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈによって戻されるハンドルと同一である。
ＨＲＥＳＵＬＴ　ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＦｉｎｄＦｒｏｍＩＤ　（
ＩＮ　ＸＮＫＩＤ　ＳｅｓｓｉｏｎＩＤ，
ＩＮ　ＨＡＮＤＬＥ　ｈＷｏｒｋＥｖｅｎｔ，
ＯＵＴ　ＰＸＯＮＬＩＮＥＴＡＳＫ＿ＨＡＮＤＬＥ　ｐｈＴａｓｋ
）；
【００９５】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＦｉｎｄＦｒｏｍＩＤパラメータ
ＳｅｓｓｉｏｎＩＤ−取得するセッションのＸＮＫＩＤ。
ｈＷｏｒｋＥｖｅｎｔ−発呼者が作成したイベントオブジェクトに対するハンドルである。このオブジェクトは、作業が残っている場合には知らされる。このパラメータは任意選択であり、発呼者は代わりに、自分がポーリングすることを示してＮＵＬＬに移動することもできる。
ｐｈＴａｓｋ−成功裏に戻されると、このパラメータは、当該検索を一意に識別するハンドルを指し示す。このハンドルは後続の検索ＡＰＩ呼び出しで使用される。
【００９６】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅｓｓｉｏｎＦｉｎｄＦｒｏｍＩＤ戻り値
Ｓ＿ＯＫ−検索要求は成功裏に送信された。
【００９７】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＧｅｔＲｅｓｕｌｔｓ
この機能は、指定された検索結果に対する一組の検索結果を取り出すために使用される。この機能は、ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈが成功裏に完了したことを示すために、前回呼び出しからタスクハンドルが獲得された後で呼び出される。
ＨＲＥＳＵＬＴ　ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＧｅｔＲｅｓｕｌｔｓ　（
ＩＮ　ＸＯＮＬＩＮＥＴＡＳＫ＿ＨＡＮＤＬＥ　ｈＴａｓｋ，
ＯＵＴ　ＰＸＭＡＴＣＨ＿ＳＥＡＲＣＨＲＥＳＵＬＴ　＊＊ｐｒｇｐＳｅａｒｃｈＲｅｓｕｌｔｓ，
ＯＵＴ　ＤＷＯＲＤ　＊ｐｄｗＲｅｔｕｒｎｅｄＲｅｓｕｌｔｓ
）；
【００９８】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＧｅｔＲｅｓｕｌｔｓパラメータ
ｈＴａｓｋ−前回呼び出しからＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈに戻されたオンラインタスクハンドル。
ｐｒｇｐＳｅａｒｃｈＲｅｓｕｌｔｓ−検索結果構造の配列に対するポインタを受け取る。
ｐｄｗＲｅｔｕｒｎｅｄＲｅｓｕｌｔｓ−ｐｒｇｐＳｅａｒｃｈＲｅｓｕｌｔｓが指し示した検索結果構造数を受け取る。
【００９９】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＧｅｔＲｅｓｕｌｔｓ戻り値
Ｓ＿ＯＫ−検索要求は成功裏に戻された。
【０１００】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＰａｒｓｅ
この機能は、特定の検索結果から拡張属性を取り出すために使用される。発呼者は、この拡張属性の正確な順番とタイプとを知る必要がある。
ＨＲＥＳＵＬＴ　ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＰａｒｓｅ　（
ＩＮ　ＰＸＭＡＴＣＨ＿ＳＥＡＲＣＨＲＥＳＵＬＴ　ｐＳｅａｒｃｈＲｅｓｕｌｔ，ＩＮ　ＤＷＯＲＤ　ｄｗＮｕｍＳｅｓｓｉｏｎＡｔｔｒｉｂｕｔｅｓ，ＩＮ　ＰＸＯＮＬＩＮＥ＿ＡＴＴＲＩＢＵＴＥ＿ＳＰＥＣ　ｐＳｅｓｓｉｏｎＡｔｔｒｉｂｕｔｅＳｐｅｃ，
ＯＵＴ　ＰＶＯＩＤ　ｐＱｕｅｒｙＳｅｓｓｉｏｎ
）；
【０１０１】
ＸＯｎｌｉｎｅＭａｔｃｈＳｅａｒｃｈＰａｒｓｅパラメータ
ｐＳｅａｒｃｈＲｅｓｕｌｔ−構文解析中の検索結果を指定する。
ｄｗＮｕｍＳｅｓｓｉｏｎＡｔｔｒｉｂｕｔｅｓ−検索結果の拡張属性数を指定する。
ｐＳｅｓｓｉｏｎＡｔｔｒｉｂｕｔｅｓＳｐｅｃ−属性のそれぞれのタイプを示す。
ｐＱｕｅｒｙＳｅｓｓｉｏｎ−属性を含めるためにバッファする。
【０１０２】
図１３は、典型的なオンラインゲーム環境４００を示す図である。複数のゲームコンソール４０２（１）、４０２（２）、．．．４０２（ｎ）がネットワーク４０６を介してセキュリティゲートウェイ４０４に結合されている。ネットワーク４０６は、様々な従来型のデータ通信ネットワークの任意の１つまたは複数を表す。ネットワーク４０６は、通常は、パケット交換ネットワークを含むが、回線交換ネットワークを含んでもよい。ネットワーク４０６は、有線部分および／または無線部分を含むことができる。典型的な一実施態様では、ネットワーク４０６は、インターネットを含み、任意選択で１つまたは複数のローカルエリアネットワーク（ＬＡＮ）および／またはワイドエリアネットワーク（ＷＡＮ）を含むことができる。ネットワーク４０６の少なくとも一部は、公にアクセス可能なネットワークである公衆ネットワークである。事実上誰でも公衆ネットワークにアクセスすることができる。
【０１０３】
場合によっては、ネットワーク４０６は、ゲームコンソール４０２とセキュリティゲートウェイ４０４の間に設置されたルーティングデバイスを備えたＬＡＮ（例えば、ホームネットワーク）を含む。このルーティングデバイスは、ネットワークアドレス変換（ＮＡＴ）を実行することができる。これによって、ＬＡＮ上の複数のデバイスはインターネット上の同じＩＰアドレスを共有することができ、さらにＬＡＮ上の１つ以上のデバイスをインターネットを介した悪質または悪意のあるユーザによるアクセスから保護するためのファイアーウォールとして機能することができる。
【０１０４】
セキュリティゲートウェイ４０４は、公衆ネットワーク４０６と専用ネットワーク４０８の間のゲートウェイとして機能する。専用ネットワーク４０８は、ローカルエリアネットワークなど、広範な従来型ネットワークのどれであってもよい。専用ネットワーク４０８ならびに以下でさらに詳細に説明する他のデバイスは、安全なゾーンとして機能するデータセンター４１０内にある。データセンター４１０は、信頼ある通信手段を介した信頼ある通信によって構成されている。したがって、安全なゾーン４１０では暗号化および認証は必須ではない。ネットワーク４０８の専用という性質は、ネットワーク４０８にアクセスできる可能性が制限されていることを示している。すなわち、ネットワーク４０８に対するアクセスはある種の個人にのみ制限されているということである（例えば、データセンター４１０の所有者または運営者によって制限されている）。
【０１０５】
セキュリティゲートウェイ４０４は、一群の１つまたは複数のセキュリティゲートウェイコンピュータデバイスである。これらのセキュリティゲートウェイコンピュータデバイスは、共同してセキュリティゲートウェイ４０４を実施する。セキュリティゲートウェイ４０４は、セキュリティゲートウェイコンピュータデバイスによって処理されるよう指示する要求をコンピュータデバイスの適切なデバイスに向けるように機能する１つまたは複数の従来型ロードバランシングデバイスを任意選択で含むことができる。この指示またはロードバランシングは、様々なセキュリティゲートウェイコンピュータデバイスでほぼ均等に負荷の平衡をとることを試みる方法（代替として、ある種の他の基準に従って）で実行される。
【０１０６】
さらにデータセンター４１０内には、１つまたは複数の監視サーバ４１２、１つまたは複数の存在／通知フロントドア４１４、１つまたは複数の存在サーバ４１６と１つまたは複数の通知サーバ４１８（共同して存在／通知サービスを実施する）、１つまたは複数の対戦相手決定フロントドア４２０（例えば、図２のインターフェース１２０）と１つまたは複数の対戦相手決定サーバ４２２（例えば、図２のデータベース１２２）（共同して対戦相手決定システムを実施する）、および１つまたは複数の統計フロントドア４２４と１つまたは複数の統計サーバ４２６（共同して統計サービスを実施する）がある。サーバ４１６、４１８、４２２および４２６は、ゲームコンソール４０２にサービスを提供し、したがってサービスデバイスと呼ぶことができる。他のサービスデバイスを、サーバ４１６、４１８、４２２および４２６の１つまたは複数に追加して、かつ／またはこれらの代わりに含むことができる。さらに、図１３にはデータセンターは１つしか示していないが、ゲームコンソール４０２が通信することのできる複数のデータセンターがあってもよい。これらのデータセンターは独立して動作しても、代替として（例えば、ゲームコンソール４０２に対して使用可能な１つの大規模なデータセンターを構成するために）共同して動作してもよい。
【０１０７】
ゲームコンソール４０２は、データセンター４１０から遠隔に設置され、ネットワーク４０６を介してデータセンター４１０にアクセスする。データセンターの１つまたは複数のデバイスと通信することを希望しているゲームコンソール４０２は、コンソール４０２とセキュリティゲートウェイ４０４の間に安全な通信チャネルを確立する。ゲームコンソール４０２とセキュリティゲートウェイ４０４は、やり取りされるデータパケットを暗号化し、認証する。これによって、暗号を解読せずにデータパケットを捕捉またはコピーすることのできるどのような他のデバイスによっても認識されずに、ゲームコンソール４０２とセキュリティゲートウェイ４０４の間でデータパケットを安全に伝送することができる。ゲームコンソール４０２からセキュリティゲートウェイ４０４に、またはセキュリティゲートウェイ４０４からゲームコンソール４０２に伝達された各データパケットにデータを埋め込むことができる。この埋め込まれたデータは、パケットのコンテンツまたはデータコンテンツと呼ばれる。パケットタイプに基づいて、パケットに本質的に追加情報を含めることもできる。
【０１０８】
コンソール４０２とセキュリティゲートウェイ４０４の間の安全な通信チャネルは、セキュリティチケットに基づいている。コンソール４０２は、それ自体とコンソール４０２の１人以上の現行ユーザとをキー分配センター４２８に対して認証し、キー分配センター４２８からセキュリティチケットを獲得する。次いでコンソール４０２は、セキュリティゲートウェイ４０４との安全な通信チャネルを確立するためにこのセキュリティチケットを使用する。セキュリティゲートウェイ４０４との安全な通信チャネルを確立する際、ゲームコンソール４０２とセキュリティゲートウェイ４０４とは相互に対して自らを認証し、その特定のゲームコンソール４０２とセキュリティゲートウェイ４０４にだけ知られているセッションセキュリティキーを設定する。ゲームコンソール４０２とセキュリティゲートウェイクラスタ４０４の間で転送されるデータを暗号化して、他のデバイス（他のゲームコンソール４０２を含めて）がそのデータを読むことができないようにするために、このセッションセキュリティキーが使用される。データパケットが発信元であると主張しているセキュリティゲートウェイ４０４またはゲームコンソール４０２から発信されているものとしてそのデータパケットを認証するためにも、セッションセキュリティキーが使用される。したがって、そのようなセッションセキュリティキーを使用して、セキュリティゲートウェイ４０４と様々なゲームコンソール４０２の間に安全な通信チャネルが確立される。
【０１０９】
ゲームコンソール４０２とセキュリティゲートウェイ４０４の間で安全な通信チャネルが確立されると、暗号化されたデータパケットはそれらの間を安全に伝送することができる。ゲームコンソール４０２がデータセンター４１０の特定のサービスデバイスに対してデータの送信を希望した場合、ゲームコンソール４０２はそのデータを暗号化し、そのデータパケットが目標としている特定の１つ以上のサービスデバイスにその暗号化したデータを転送するよう要求して、そのデータをセキュリティゲートウェイ４０４に送信する。セキュリティゲートウェイ４０４はこのデータパケットを受け取り、そのデータパケットを認証し暗号解読した後で、専用ネットワーク４０８を介して適切なサービスに送信するためにパケットのデータコンテンツを別のメッセージにカプセル化する。セキュリティゲートウェイ４０４は、データパケットが目標としている１つ以上の要求されたサービスに基づいて、メッセージに対する適切なサービスを決定する。
【０１１０】
本明細書では主としてセキュリティゲートウェイ４０４とゲームコンソール４０２の間で暗号化されたデータパケットを伝達することとして説明したが、一部のデータパケットを部分的に暗号化してもよい（データパケットの一部を暗号化し、別の部分は暗号化しない）。データパケットのどの部分を暗号化してどの部分を暗号化しないかは、データセンター４１０および／またはゲームコンソール４０２の設計者の希望によって異なる場合がある。例えば、コンソール４０２のユーザが相互に会話を交わすことができるように設計者はコンソール４０２間での音声データの伝達を可能にすることを選択することができる。すなわち、設計者は、パケットのどのような他のデータでも暗号化するが、音声データは暗号化しないことを可能にすることをさらに選択することができる。さらに、別の代替形態では、一部のデータパケットには暗号化された部分がない場合がある（すなわち、データパケット全体は暗号化されていない）。データパケットが暗号化されていない場合、または一部だけが暗号化されている場合であっても、データパケットのすべては認証できるということに留意されたい。
【０１１１】
同様に、データセンター４１０内のサービスデバイスがゲームコンソール４０２にデータを伝達することを希望した場合、データセンターは専用ネットワーク４０８を介してセキュリティゲートウェイ４０４に、ゲームコンソール４０２に送信されるべきデータコンテンツとデータコンテンツが送信されるべき特定のゲームコンソール４０２の指示とを含めてメッセージを送信する。セキュリティゲートウェイ４０４は、データコンテンツをデータパケットに埋め込み、そのデータパケットは特定のゲームコンソール４０２によってのみ暗号解読できるようにそのデータパケットを暗号化し、そのデータパケットがセキュリティゲートウェイ４０４から発信されたものとして認証する。
【０１１２】
セキュリティゲートウェイ４０４の各セキュリティゲートウェイデバイスは、典型的には１つまたは複数のゲームコンソール４０２との安全な通信チャネルを担当し、したがって各セキュリティゲートウェイデバイスは１つまたは複数のゲームコンソールを管理し、または取り扱うことを担当しているものとみなすことができる。様々なセキュリティゲートウェイデバイスが相互に通信状態にあり、相互にメッセージを伝達することができる。例えば、管理を担当していないゲームコンソールにデータパケットを送信することを必要とするセキュリティゲートウェイデバイスは、そのゲームコンソールに送信されるべきデータと共にすべての他のセキュリティゲートウェイデバイスにメッセージを送信することができる。このメッセージは、そのゲームコンソールの管理を担当しており、そのゲームコンソールに適切なデータを送信するセキュリティゲートウェイデバイスによって受信される。代替として、セキュリティゲートウェイデバイスは、どのゲームコンソールがどのセキュリティゲートウェイデバイスによって取り扱われているかを認識している場合がある。これは、他のセキュリティゲートウェイデバイスによって取り扱われるゲームコンソールの表を維持する各セキュリティゲートウェイデバイスのように明示的であっても、ゲームコンソールの識別子に基づいて特定のゲームコンソールを担当するセキュリティゲートウェイデバイスはどれかを決定するように暗黙的であってもよい。
【０１１３】
１つ以上の監視サーバ４１２は、データセンター４１０のデバイスに対して使用不可能なゲームコンソール４０２を通知し、または使用不可能なセキュリティゲートウェイデバイスに対してセキュリティゲートウェイ４０４を通知するように機能する。ゲームコンソール４０２は、ハードウェアまたはソフトウェアの故障、コンソールがデータセンター４１０からログアウトせずに電源を遮断した、コンソール４０２へのネットワーク接続ケーブルがコンソール４０２から切断された、この他のネットワークの問題（例えば、コンソール４０２が接続されているＬＡＮの動作が不良である）などの様々な異なる理由で使用不可能になる場合がある。同様に、セキュリティゲートウェイ４０４のセキュリティゲートウェイデバイスは、ハードウェアまたはソフトウェアの故障、デバイスが電源を遮断した、デバイスへのネットワーク接続ケーブルがデバイスから切断された、この他のネットワークの問題などの様々な異なる理由で使用不可能になる場合がある。
【０１１４】
セキュリティゲートウェイ４０４の各セキュリティゲートウェイデバイスは１つまたは複数の監視サーバ４１２によって監視され、その監視サーバ４１２はセキュリティゲートウェイデバイスの１つが使用不可能になる時を検出する。セキュリティゲートウェイデバイスが使用不可能になった場合、監視サーバ４１２はデータセンター４１０の他のデバイス（サーバ、フロントドアなど）のそれぞれに、そのセキュリティデバイスは最早使用可能ではないというメッセージを送信する。他のデバイスのそれぞれは、それが適当とみなした場合にこの情報に基づいて動作することができる（例えば、セキュリティゲートウェイデバイスが管理している特定のゲームコンソールはデータセンター４１０と最早通信状態になく、したがって様々な終了処理を実行すると仮定する場合がある）。代替として、ある種のデバイスだけ（例えば、セキュリティゲートウェイデバイスが使用可能か否かに関心のあるデバイスだけ）が監視サーバ４１２からそのようなメッセージを受け取ることもできる。
【０１１５】
セキュリティゲートウェイ４０４は個々のゲームコンソール４０２を監視し、ゲームコンソール４０２の１つが使用不可能になる時を検出する。ゲームコンソールが最早使用可能でないことをセキュリティゲートウェイ４０４が検出した場合、セキュリティゲートウェイ４０４は使用不可能なゲームコンソールの監視サーバ４１２にメッセージを送信する。これに応答して、監視サーバ４１２は、ゲームコンソールは最早使用可能でないというメッセージをデータセンター４１０の他のデバイスそれぞれ（または選択されたデバイス）に送信する。次いで他のデバイスのそれぞれは、それが適当とみなした場合にこの情報に基づいて動作することができる。
【０１１６】
１つ以上の存在サーバ４１６は、オンラインゲームに関してデータセンター４１０にログインした所与のユーザの状況または存在に関するデータを保持し、処理する。１つ以上の通知サーバ４１８は、データセンター４１０にログインしたプレイヤに向けられた発信メッセージの複数の待ち行列を維持する。存在／通知フロントドア４１４は、セキュリティゲートウェイ４０４とサーバ４１６および４１８の間の中継手段として動作する１つまたは複数のサーバデバイスである。１つまたは複数のロードバランシングデバイス（図示せず）は、フロントドア４１４として動作している複数のサーバデバイス間で負荷の平衡をとるために存在／通知フロントドア４１４に含めることができる。セキュリティゲートウェイ４０４は、サーバ４１６および４１８に関するメッセージをフロントドア４１４に伝達し、フロントドア４１４は、特定サーバ４１６と特定サーバ４１８のどちらにメッセージが伝達されるべきかを示す。フロントドア４１４を使用して、どちらのサーバがどのユーザに関するデータを管理することを担当しているかなどの、サーバ４１６および４１８の実際の実施態様がセキュリティゲートウェイ４０４から抽出される。セキュリティゲートウェイ４０４は、存在／通知サービスに向けられたメッセージを存在／通知フロントドア４１４に単に転送するだけで、そのメッセージを１つ以上のサーバ４１６および１つ以上のサーバ４１８の適切な１つに経路指定することはフロントドア４１４に任せてもよい。
【０１１７】
１つ以上の対戦相手決定サーバ４２２は、上記のように相互にオンラインプレイヤの組合せに関するデータを保持し、処理する。対戦フロントドア４２０は、１つまたは複数のサーバデバイス（および、任意選択で１つ以上のロードバランシングデバイス）を含み、フロントドア４１４が１つ以上のサーバ４１６および１つ以上のサーバ４１８を抽出する方法と類似の方法でセキュリティゲートウェイ４０４から１つ以上の対戦サーバ４２２を抽出するように動作する。
【０１１８】
１つ以上の統計サーバ４２６は、オンラインゲームの様々な統計に関するデータを保持し、処理する。使用される特有の統計は、ゲーム設計者の希望によって変化する場合がある（例えば、上位１０個のスコアまたは時刻、当該ゲームの全オンラインプレイヤに対する世界ランキング、最多アイテムを発見したユーザのリストまたは最長時間プレイしたユーザのリストなど）。統計フロントドア４２６は、１つまたは複数のサーバデバイス（および任意選択で１つ以上のロードバランシングデバイス）を含み、フロントドア４１４が１つ以上のサーバ４１６および１つ以上のサーバ４１８を抽出する方法と類似の方法でセキュリティゲートウェイ４０４から１つ以上の統計サーバ４２６を抽出するように動作する。
【０１１９】
したがって、セキュリティゲートウェイ４０４は、データセンター４１０の安全なゾーンのデバイスを信頼のない公衆ネットワーク４０６から保護するよう動作するということが理解できよう。データセンター４１０内のすべてのデバイスは信頼があるので、データセンター４１０内の安全なゾーンでの通信を暗号化する必要はない。しかし、その情報が向けられたゲームコンソール４０２によってのみ暗号解読することができるような方法でその情報が暗号化されている場合は、データセンター４１０内のデバイスからゲームコンソール４０２に伝達されるべきどのような情報でもセキュリティゲートウェイクラスタ４０４を通過する。
【０１２０】
図１４は、本明細書で説明した技術を実施するために使用することのできる一般的なコンピュータ環境５００を示す図である。コンピュータ環境５００はコンピュータ環境の一例であるに過ぎず、コンピュータおよびネットワークアーキテクチャの用途または機能の範囲に関していかなる限定をも示すことを意図してはいない。また、コンピュータ環境５００は、典型的なコンピュータ環境５００で示したコンポーネントのどのようなコンポーネントまたはそれらの組合せに関してどのような依存または要求を有するものと理解されるべきではない。
【０１２１】
コンピュータ環境５００は、コンピュータ５０２形式の汎用コンピュータデバイスを含む。コンピュータ５０２は、例えば図１の対戦相手決定システム１０４またはコンピュータデバイス１０２、図２の対戦相手決定インターフェース１２０または対戦相手決定データベース１２２、図１３のサーバ４１２、４１６、４１８および４２２および／または４２６、または図１３のフロントドア４１４、４２０または４２４であってよい。コンピュータ５０２のコンポーネントは、限定はしないが、１つまたは複数のプロセッサまたは処理装置５０４（任意選択で暗号化プロセッサまたはコプロセッサを含めて）、システムメモリ５０６、およびプロセッサ５０４を含めて様々なシステムコンポーネントをシステムメモリ５０６に結合するシステムバス５０８を含むことができる。
【０１２２】
システムバス５０８は、メモリバスまたはメモリコントローラ、周辺バス、加速式グラフィックポート、および様々なバスアーキテクチャのどれかを使用するプロセッサまたはローカルバスを含めて、複数タイプのバス構成のどれか１つまたは複数を表す。一例として、そのようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとして知られている周辺コンポーネント相互接続（ＰＣＩ）バスを含むことができる。
【０１２３】
コンピュータ５０２は、通常、様々なコンピュータ可読媒体を含む。そのような媒体は、コンピュータ５０２によってアクセス可能ないかなる使用可能な媒体であってもよく、揮発性媒体と不揮発性媒体、取り外し可能媒体と取り外し不可能な媒体の両方を含む。
【０１２４】
システムメモリ５０６は、ランダムアクセスメモリ（ＲＡＭ）５１０などの揮発性メモリ、および／または読み取り専用メモリ（ＲＯＭ）５１２などの不揮発性メモリ形式のコンピュータ可読媒体を含む。基本入出力システム（ＢＩＯＳ）５１４は、起動時などにコンピュータ５０２の素子間で情報を転送するために役立つ基本ルーチンを含んでおり、ＲＯＭ５１２に格納されている。ＲＡＭ５１０は、通常、処理装置５０４によって直接的にアクセス可能な、かつ／または現在動作中のデータおよび／またはプログラムモジュールを含んでいる。
【０１２５】
コンピュータ５０２は、この他の取り外し可能／取り外し不可能な、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。一例として、図１４は、取り外し不可能な不揮発性磁気媒体（図示せず）から読み取り、そこに書き込むためのハードディスクドライブ５１６、取り外し可能な不揮発性磁気ディスク５２０（例えば、「フロッピー（登録商標）ディスク」）から読み取り、そこに書き込むための磁気ディスクドライブ５１８、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光媒体などの取り外し可能な不揮発性光ディスクから読み取り、かつ／またはそこに書き込むための光ディスクドライブ５２２を示す。ハードディスクドライブ５１６、磁気ディスクドライブ５１８、および光ディスクドライブ５２２は、それぞれに１つまたは複数のデータ媒体インターフェース５２６によってシステムバス５０８に接続されている。代替として、ハードディスクドライブ５１６、磁気ディスクドライブ５１８、および光ディスクドライブ５２２を、１つまたは複数のインターフェース（図示せず）によってシステムバス５０８に接続することもできる。
【０１２６】
ディスクドライブおよびそれらの関連付けられたコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ５０２に対する他のデータに不揮発性記憶を提供する。本実施例はハードディスク５１６、取り外し可能な磁気ディスク５２０、および取り外し可能な光ディスク５２４を示しているが、この典型的なコンピュータシステムおよび環境を実施するために、コンピュータによってアクセス可能なデータを格納することのできるこの他のタイプのコンピュータ可読媒体、例えば磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光記憶装置、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的消去可能書き込み可能な読み取り専用メモリ（ＥＥＰＲＯＭ）なども使用できることを理解されたい。
【０１２７】
プログラムモジュールは、一例としてオペレーティングシステム５２６、１つまたは複数のアプリケーションプログラム５２８、この他のプログラムモジュール５３０、およびプログラムデータ５３２を含めて、ハードディスク５１６、磁気ディスク５２０、光ディスク５２４、ＲＯＭ５１２、および／またはＲＡＭ５１０に何個でも格納することができる。このようなオペレーティングシステム５２６、１つまたは複数のアプリケーションプログラム５２８、この他のプログラムモジュール５３０、およびプログラムデータ５３２（またはこれらの組合せ）は、それぞれに分散型ファイルシステムをサポートする常駐コンポーネントのすべてまたは一部を実施することができる。
【０１２８】
ユーザは、キーボード５３４およびポインティングデバイス５３６（例えば、「マウス」）などの入力デバイスによってコマンドおよび情報をコンピュータ５０２に入力することができる。他の入力デバイス５３８（具体的には図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、シリアルポート、スキャナなどを含むことができる。これらおよび他の入力デバイスは、システムバス５０８に結合されている入出力インターフェース５４０を介して処理装置５０４に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構成によって接続することもできる。
【０１２９】
モニタ５４２または他のタイプの表示装置を、ビデオアダプタ５４４などのインターフェースを介してシステムバス５０８に接続することもできる。モニタ５４２の他に、他の出力周辺デバイスは、入出力インターフェース５４０を介してコンピュータ５０２に接続することができるスピーカ（図示せず）およびプリンタ５４６などのコンポーネントを含むこともできる。
【０１３０】
コンピュータ５０２は、遠隔コンピュータデバイス５４８などの１つまたは複数の遠隔コンピュータに対する論理接続を使用してネットワーク接続環境で動作することができる。一例として、遠隔コンピュータデバイス５４８は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイスまたは他の一般的なネットワークノード、ゲームコンソールなどであってよい。遠隔コンピュータデバイス５４８は、コンピュータ５０２に関して本明細書で説明した要素および機能の多くまたはすべてを含むことができるポータブルコンピュータとして示す。
【０１３１】
コンピュータ５０２と遠隔コンピュータ５４８の間の論理接続は、ローカルエリアネットワーク（ＬＡＮ）５５０と一般的なワイドエリアネットワーク（ＷＡＮ）５５２として示す。このようなネットワーク接続環境は、オフィス、企業内コンピュータネットワーク、イントラネット、およびインターネットで普及している。
【０１３２】
ＬＡＮネットワーク接続環境で実施される場合、コンピュータ５０２はネットワークインターフェースまたはアダプタ５５４を介してローカルネットワーク５５０に接続される。ＷＡＮネットワーク接続環境で実施される場合、コンピュータ５０２は、通常、モデム５５６またはワイドネットワーク５５２を介して通信を確立する他の手段を含む。コンピュータ５０２に内蔵されていても外付けであってもよいモデム５５６は、入出力インターフェース５４０または他の適切な機構を介してシステムバス５０８に接続することができる。図示したネットワーク接続は一例であって、コンピュータ５０２と５４８の間で１つ以上の通信リンクを確立する他の手段を使用することができるということを理解されたい。
【０１３３】
コンピュータ環境５００に伴って示されたようなネットワーク接続環境で、コンピュータ５０２に関して示されたプログラムモジュール、またはその一部は、遠隔記憶装置に格納することができる。一例として、遠隔アプリケーションプログラム５５８は、遠隔コンピュータ５４８のメモリデバイスに常駐する。説明のために、アプリケーションプログラムおよびオペレーティングシステムなどの他の実行可能なプログラムコンポーネントを本明細書では別個のブロックで示したが、そのようなプログラムおよびコンポーネントはコンピュータデバイス５０２の異なる記憶コンポーネントに様々な時点で常駐し、コンピュータの１つ以上のデータプロセッサによって実行されるということを理解されたい。
【０１３４】
本明細書では様々なモジュールおよび技術を、プログラムモジュールなどの、１つまたは複数のコンピュータまたは他のデバイスによって実行されるコンピュータ実行可能命令という一般的な状況で説明する。一般的に、プログラムモジュールは、特定タスクを実行し、または特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通常、プログラムモジュールの機能は、様々な実施形態で所望に応じて組み合わせたり、分散したりすることができる。
【０１３５】
これらのモジュールおよび技術の一実施態様は、何らかの形式のコンピュータ可読媒体に格納し、またはこれらによって伝えることができる。コンピュータ可読媒体は、コンピュータによってアクセスすることのできるいかなる使用可能な媒体であってもよい。限定ではなく一例として、コンピュータ可読媒体は「コンピュータ記憶媒体」と「通信媒体」とを含むことができる。
【０１３６】
「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するためのどのような方法または技術でも実施される揮発性媒体媒体、不揮発性媒体、取り外し可能媒体、取り外し不可能媒体が含まれる。コンピュータ記憶媒体には、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶、または他の磁気記憶デバイス、または所望の情報を格納するために使用され、コンピュータによってアクセス可能な他の媒体が含まれる。
【０１３７】
「通信媒体」は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波や他の転送機構などの変調されたデータ信号を実施する。通信媒体は、どのような情報送達媒体をも含む。「変調されたデータ信号」という用語は、性質セットの１つまたは複数を有するか、または情報を信号に符号化する方法などで変更された信号を意味する。限定ではなく一例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体と、アコースティック媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体とが含まれる。上記のどのような組合せでも、コンピュータ可読媒体の範囲に含まれる。
【０１３８】
図１５は、ゲームコンソール６００の機能コンポーネントをさらに詳細に示している。ゲームコンソール６００は、例えば図１のコンピュータデバイス１０２として使用することができる。ゲームコンソール６００は、中央処理装置（ＣＰＵ）６０１と、フラッシュＲＯＭ（読み取り専用メモリ）６０４、ＲＡＭ（ランダムアクセスメモリ）６０６、ハードディスクドライブ６０８、およびポータブルメディアドライブ６０９などの様々なタイプのメモリへのプロセッサのアクセスを円滑化するメモリコントローラ６０２とを有する。ＣＰＵ６０１は、データを一時的に格納するためのレベル１キャッシュ６１０とレベル２キャッシュ６１２とを装備しており、それによってメモリアクセス周期数が低減され、したがって処理速度とスループットとが高められる。
【０１３９】
ＣＰＵ６０１、メモリコントローラ６０２、および様々なメモリデバイスは、シリアルバスおよびパラレルバス、メモリバス、周辺バス、および様々なバスアーキテクチャのどれかを使用したプロセッサまたはローカルバスを含む１つまたは複数のバスを介して相互接続されている。一例として、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとして知られている周辺コンポーネント相互接続（ＰＣＩ）バスを含むことができる。
【０１４０】
１つの適切な一実施態様として、ＣＰＵ６０１、メモリコントローラ６０２、ＲＯＭ６０４、およびＲＡＭ６０６は１つの共通モジュール６１４に統合されている。この実施態様では、ＲＯＭ６０４は、ＰＣＩ（周辺コンポーネント相互接続）バスおよびＲＯＭバス（どちらも図示せず）を介してメモリコントローラ６０２に接続されているフラッシュＲＯＭとして構成されている。ＲＡＭ６０６は、別個のバス（図示せず）を介してメモリコントローラ６０２によって独立して制御されている複数のＤＤＲＳＤＲＡＭ（ダブルデータ転送率同期ダイナミックＲＡＭ（Ｄｏｕｂｌｅ　Ｄａｔａ　Ｒａｔｅ　Ｓｙｎｃｈｒｏｎｏｕｓ　Ｄｙｎａｍｉｃ　ＲＡＭ））として構成されている。ハードディスクドライブ６０８およびポータブルメディアドライブ６０９は、ＰＣＩバスおよびＡＴＡ（ＡＴアタッチメント）バス６１６を介してメモリコントローラに接続されている。
【０１４１】
３次元グラフィックス処理装置６２０およびビデオエンコーダ６２２は、高速、高解像度のグラフィックス処理用ビデオ処理パイプラインを構成する。データは、グラフィックス処理装置６２０からデジタルビデオバス（図示せず）を介してビデオエンコーダ６２２に搬送される。オーディオ処理装置２２４およびオーディオコーデック（コーダ／デコーダ）６２６は、ハイファイステレオ処理による対応するオーディオ処理パイプラインを構成する。オーディオデータは、通信リンク（図示せず）を介してオーディオ処理装置６２４とオーディオコーデック６２６の間を搬送される。ビデオ処理パイプラインとオーディオ処理パイプラインとは、テレビジョンまたは他のディスプレイに伝送するためにデータをＡ／Ｖ（オーディオ／ビデオ）ポート６２８に出力する。図示する実施態様では、ビデオおよびオーディオ処理コンポーネント６２０〜６２８はモジュール６１４に実装されている。
【０１４２】
同様にモジュール６１４では、ＵＳＢホストコントローラ６３０とネットワークインターフェース６３２とが実施されている。ＵＳＢホストコントローラ６３０はバス（例えばＰＣＩバス）を介してＣＰＵ６０１とメモリコントローラ６０２とに結合されており、周辺コントローラ６３６（１）〜６３６（４）に対するホストとして機能する。ネットワークインターフェース６３２はネットワーク（例えば、インターネット、ホームネットワークなど）ヘのアクセスを提供し、イーサネット（登録商標）カード、モデム、ブルートゥースモジュール、ケーブルモデムなどを含めて、広範に及ぶ様々な有線インターフェースコンポーネントまたは無線インターフェースコンポーネントのどれであってもよい。
【０１４３】
ゲームコンソール６００は、各サブアセンブリが２つのゲームコントローラ６３６（１）〜６３６（４）をサポートする２つのデュアルコントローラサポートサブアセンブリ（ｄｕａｌ　ｃｏｎｔｒｏｌｌｅｒ　ｓｕｐｐｏｒｔ　ｓｕｂａｓｓｅｍｂｌｉｅｓ）６４０（１）および６４０（２）を有する。フロントパネルＩ／Ｏサブアセンブリ６４２は、電源スイッチ６３１とメディアドライブ取り出しボタン６３３、ならびにゲームコンソールの外部表面上に露出しているどのようなＬＥＤ（発光ダイオード）または他のインジケータをもサポートする。サブアセンブリ６４０（１）、６４０（２）、および６４２は、１つまたは複数のケーブルアセンブリ６４４を介してモジュール６１４に結合されている。
【０１４４】
８個のメモリユニット６３４（１）〜６３４（８）は、４個のコントローラ６３６（１）〜６３６（４）に接続可能なように、すなわちコントローラ１つあたり２つのメモリユニットとして図示する。各メモリユニット６３４は、ゲーム、ゲームのパラメータ、および他のデータを格納することのできる追加の記憶領域を提供する。コントローラに挿入された場合、メモリユニット６３４はメモリコントローラ６０２によってアクセス可能である。
【０１４５】
システム電源機構モジュール６５０は、ゲームコンソール６００のコンポーネントに電力を供給する。ファン６５２は、ゲームコンソール６００内の回路を冷却する。
【０１４６】
コンソールのユーザインターフェース（ＵＩ）アプリケーション６６０は、ハードディスクドライブ６０８に格納されている。ゲームコンソールに電源が投入されると、コンソールアプリケーション６６０の様々な部分がＲＡＭ６０６および／またはキャッシュ６１０、６１２にロードされ、ＣＰＵ６０１で実行される。コンソールアプリケーション６６０は、ゲームコンソールで使用可能な異なる媒体のタイプにナビゲートする際に一貫したユーザ体験を提供するグラフィカルユーザインターフェースを提示する。
【０１４７】
ゲームコンソール６００は、暗号化、暗号解読、認証、デジタル署名、ハッシングなどの一般的な暗号化機能を実行するために暗号化エンジンを実施する。暗号化機能を実行するようＣＰＵを構成するように、暗号化エンジンは、ＣＰＵ６０１の一部として、またはＣＰＵで実行されるハードディスクドライブ６０８に格納されているソフトウェアとして実施することができる。代替として、暗号化機能を実行するように設計された暗号化プロセッサまたはコプロセッサをゲームコンソール６００に含むことができる。
【０１４８】
ゲームコンソール６００は、システムをテレビジョンまたは他のディスプレイに単に接続することによってスタンドアロンシステムとして操作することができる。このスタンドアロンモードでは、ゲームコンソール６００は、１人または複数のプレイヤがゲームをプレイし、映画を視聴し、または音楽を聴くことを可能にする。しかし、ネットワークインターフェース６３２を介して使用可能とされるブロードバンド接続を統合することによって、ゲームコンソール６００を上述のようにオンラインゲームの参加者として操作することが可能になる。
【０１４９】
本明細書では様々なプロセスを流れ図形式で示す。これらのプロセスで必要とされる動作は流れ図に示した順番で実行することも、異なる順番で実行することもできることに留意されたい。例えば、図３では、動作は図示した順番で実行しても、異なる順番で実行してもよい（例えば、動作１６８は動作１６６に先立って実行しても、同時に実行してもよい）。別の例として、図４では、動作は図示した順番で実行しても、異なる順番で実行してもよい（例えば、動作２０６は動作２０４に先立って実行しても、同時に実行してもよい）。
【０１５０】
上記の説明では構造上の機能および／または方法上の動作に特有の用語を使用したが、首記の特許請求の範囲で定義した本発明は、説明した特有の機能または動作に限定されるものではないことを理解されたい。そうではなく、特有の機能および動作は、本発明を実施する典型的な形式として開示されている。
【図面の簡単な説明】
【図１】ゲームセッション情報の発見および分配を使用することができる典型的な環境を示すブロック図である。
【図２】典型的な対戦相手決定システムをさらに詳細に示すブロック図である。
【図３】新しいゲームセッションを作成するための典型的なプロセスを示す流れ図である。
【図４】新しいゲームセッションを作成するための別の典型的なプロセスを示す流れ図である。
【図５】１つのコンピュータデバイスがゲームセッションに加わることを可能にする情報を分配するための典型的なプロセスを示す流れ図である。
【図６】加わるよう招待されたゲームセッションにコンピュータデバイスが加わることを可能にする情報を分配するための典型的なプロセスを示す流れ図である。
【図７】コンピュータデバイス間における情報交換を円滑化する典型的なプロセスを示す流れ図である。
【図８】ゲームセッション作成要求を伝達するための典型的なメッセージ構造を示す図である。
【図９】ゲームセッション作成要求に対する応答を伝達するための典型的なメッセージ構造を示す図である。
【図１０】ゲームセッションを削除する要求を伝達するための典型的なメッセージ構造を示す図である。
【図１１】ゲームセッション検索要求を伝達するための典型的なメッセージ構造を示す図である。
【図１２】ゲームセッション検索要求に対する応答を伝達するための典型的なメッセージ構造を示す図である。
【図１３】典型的なオンラインゲーム環境を示すブロック図である。
【図１４】本明細書で説明する技術を実施するために使用することができる一般的なコンピュータ環境を示す図である。
【図１５】ゲームコンソールの機能コンポーネントをさらに詳細に示す図である。
【符号の説明】
１０２　コンピュータデバイス
１０４　対戦相手決定システム
【図１】
2004065956.tif 000013
【図２】
2004065956.tif 000014
【図３】
2004065956.tif 000015
【図４】
2004065956.tif 000016
【図５】
2004065956.tif 000017
【図６】
2004065956.tif 000018
【図７】
2004065956.tif 000019
【図８】
2004065956.tif 000020
【図９】
2004065956.tif 000021
【図１０】
2004065956.tif 000022
【図１１】
2004065956.tif 000023
【図１２】
2004065956.tif 000024
【図１３】
2004065956.tif 000025
【図１４】
2004065956.tif 000026
【図１５】
2004065956.tif 000027