(57)【要約】【課題】情報の管理および通信を行うためのプレゼンスおよび通知システムを提供すること。【解決手段】一態様によれば、クライアント装置が利用可能な１つまたは複数のタイプの情報の表示がクライアント装置に送信される。この表示に応答して、クライアント装置が利用可能な情報を取り出すようにとの要求がクライアント装置から受信される。この情報が識別され、クライアント装置に送信される。別の態様では、ユーザの１人または複数の友人が永続データから識別され、各友人がシステムにログインしているか否かに関してチェックが行われる。システムにログインしている友人ごとに、ユーザが友人の情報に書き込みされ、友人がユーザの情報に書き込みされる。別の態様によれば、他のユーザがユーザの友人でもある場合にのみ、ユーザはその別のユーザの友人となることが可能となる。【選択図】　　　　図２
2004127247.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置が利用可能な複数のタイプの情報のうちの１つまたは複数についての表示を前記クライアント装置に送信するステップと、
前記表示に応答して前記クライアント装置から要求を受信し、前記クライアント装置が利用可能な前記情報を取り出すステップと、
前記クライアント装置が利用可能な前記情報を識別するステップと、
前記クライアント装置が利用可能な前記情報を前記クライアント装置に送信するステップと
を備えたことを特徴とする方法。
【請求項２】
前記クライアント装置はゲームコンソールを備えたことを特徴とする請求項１に記載の方法。
【請求項３】
前記表示を送信する前記ステップは、別の目的で前記クライアント装置に送信される別のメッセージ内に前記表示を含めるステップを備えたことを特徴とする請求項１に記載の方法。
【請求項４】
前記別のメッセージは生存通知を備えたことを特徴とする請求項３に記載の方法。
【請求項５】
前記複数のタイプのうちの１つの情報は、他のクライアント装置上のユーザのステータスを備えたことを特徴とする請求項１に記載の方法。
【請求項６】
前記複数のタイプのうちの１つの情報は、別のユーザの友人になるための招待を備えたことを特徴とする請求項１に記載の方法。
【請求項７】
前記複数のタイプのうちの１つの情報は、別のユーザとのゲームに加わるための招待を備えたことを特徴とする請求項１に記載の方法。
【請求項８】
前記情報は、他のクライアント装置上のユーザがログインしたことの表示を備えたことを特徴とする請求項１に記載の方法。
【請求項９】
前記情報は、他のクライアント装置のアドレスを備えたことを特徴とする請求項１に記載の方法。
【請求項１０】
前記複数のタイプのうちの１つの情報は、他のユーザの完全修飾アドレスを備えたことを特徴とする請求項１に記載の方法。
【請求項１１】
前記表示は、前記１つまたは複数のタイプの情報の各々に対してセットされる異なるフラグを備えたことを特徴とする請求項１に記載の方法。
【請求項１２】
前記識別するステップは、表示される情報のタイプごとに異なる通知キューにアクセスするステップを備えたことを特徴とする請求項１に記載の方法。
【請求項１３】
所定の時間間隔の後、前記クライアント装置が利用可能な前記情報を取り出すための要求を前記クライアント装置から受信したか否かをチェックするステップと、前記クライアント装置から前記要求を受信していない場合に前記表示を再送信するステップとをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項１４】
時間間隔を広げて前記再送信を反復するステップをさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項１５】
複数の命令が格納された１つまたは複数のコンピュータ読み取り可能媒体であって、前記複数の命令は、１つまたは複数のプロセッサによって実行されると、
前記クライアント装置が利用可能な複数のタイプのデータのうちの１つまたは複数についての表示をクライアント装置へ送信させるステップと、
前記データを求めて前記クライアント装置がポーリングするのを待機するステップであって、前記ポーリングは前記データの少なくとも一部を識別するステップと、
前記データの少なくとも一部を前記クライアント装置に送信するステップと
を前記１つまたは複数のプロセッサに実行させることを特徴とする１つまたは複数のコンピュータ読み取り可能媒体。
【請求項１６】
前記クライアント装置はゲームコンソールを備えたことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項１７】
前記１つまたは複数のプロセッサが通知サーバ内に実装されることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項１８】
前記１つまたは複数のプロセッサに前記表示を送信させる前記命令は、前記１つまたは複数のプロセッサに、別の目的で前記クライアント装置に送信される別のメッセージ内に前記表示を含めさせる命令を備えたことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項１９】
前記別のメッセージは生存通知を備えたことを特徴とする請求項１８に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２０】
前記複数のタイプのうちの１つの情報は、他のクライアント装置上のユーザのステータスを備えたことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２１】
前記複数のタイプのうちの１つの情報は、他のユーザの友人になるための招待を備えたことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２２】
前記複数のタイプのうちの１つの情報は、他のユーザとのゲームに加わるための招待を備えたことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２３】
前記表示は、前記１つまたは複数のタイプごとにセットされる異なるフラグを備えたことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２４】
前記命令はさらに、表示される情報のタイプごとに異なる通知キューから、前記データの前記識別した少なくとも一部を前記１つまたは複数のプロセッサに取り出させることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２５】
前記データの前記少なくとも一部は、前記クライアント装置が利用可能な複数のタイプのデータのうちの１つだけを備えたことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２６】
前記命令はさらに、前記１つまたは複数のプロセッサに所定の時間間隔待機させ、前記クライアント装置が前記データを求めてポーリングすることなく前記所定の時間間隔が経過した場合に前記表示を再送信させることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２７】
前記命令はさらに、時間間隔を広げた後、前記１つまたは複数のプロセッサに反復的に前記表示を再送信させることを特徴とする請求項２６に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２８】
複数の命令が格納された１つまたは複数のコンピュータ読み取り可能媒体であって、前記複数の命令は、１つまたは複数のプロセッサによって実行されると、
前記クライアント装置が利用可能な複数のタイプのデータのうちの１つまたは複数についての表示をリモートプレゼンスシステムから受信するステップと、
前記表示に応答して、前記クライアント装置が利用可能な前記データを取り出すようにとの要求を前記リモートプレゼンスシステムに送信するステップと、
前記クライアント装置が利用可能な前記データを前記リモートプレゼンスシステムから受信するステップと
を前記１つまたは複数のプロセッサに実行させることを特徴とする１つまたは複数のコンピュータ読み取り可能媒体。
【請求項２９】
前記１つまたは複数のプロセッサがゲームコンソール内に実装されることを特徴とする請求項２８に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項３０】
前記１つまたは複数のプロセッサに前記表示を受信させる前記命令は、前記１つまたは複数のプロセッサに、別の目的で前記クライアント装置において受信される別のメッセージ内の前記表示を受信させる命令を備えたことを特徴とする請求項２８に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項３１】
前記複数のタイプのデータのうちの１つは、他のクライアント装置上のユーザのステータスを備えたことを特徴とする請求項２８に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項３２】
前記複数のタイプのデータのうちの１つは、他のユーザの友人になるための招待を備えたことを特徴とする請求項２８に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項３３】
前記複数のタイプのデータのうちの１つは、他のユーザとのゲームに加わるための招待を備えたことを特徴とする請求項２８に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項３４】
前記要求は、前記クライアント装置が利用可能な前記データが格納されている前記リモートプレゼンスシステム内の複数の通知キューのうちの１つまたは複数の表示を備えたことを特徴とする請求項２８に記載の１つまたは複数のコンピュータ読み取り可能媒体。
【請求項３５】
ユーザがシステムにログインするときに、プロファイル記憶から前記ユーザに関する永続データをロードするステップと、
前記永続データから前記ユーザの１人または複数の友人を識別するステップと、
前記１人または複数の友人の各々が前記システムにログインしているか否かをチェックするステップと、
前記システムにログインしている前記１人または複数の友人ごとに、前記ユーザを前記友人の情報に書き込ませ、前記友人を前記ユーザの情報に書き込ませるステップと
を備えたことを特徴とする方法。
【請求項３６】
前記ユーザに関連する識別子に基づいて、前記永続データを複数のプレゼンスサーバのうちのいずれにロードするかを識別するステップをさらに備えたことを特徴とする請求項３５に記載の方法。
【請求項３７】
前記識別子は６４ビットユーザ識別子を備えたことを特徴とする請求項３６に記載の方法。
【請求項３８】
前記識別子は、少なくとも部分的にゲームタイトル識別子に基づくことを特徴とする請求項３６に記載の方法。
【請求項３９】
前記識別子は、少なくとも部分的にゲーム製造業者識別子に基づくことを特徴とする請求項３６に記載の方法。
【請求項４０】
前記ユーザに関する少なくとも１つの通知キューを確立するステップと、
前記プロファイル記憶内の何らかの情報を前記少なくとも１つの通知キューの１つまたは複数のキューに追加すべきか否かをチェックするステップと、
前記チェックに基づいて、情報を前記１つまたは複数の通知キューに追加するステップと
をさらに備えたことを特徴とする請求項３５に記載の方法。
【請求項４１】
前記ユーザに関連する識別子に基づいて、複数の通知サーバのうちのどれに前記永続データをロードするかを識別するステップをさらに備えたことを特徴とする請求項４０に記載の方法。
【請求項４２】
前記識別子は６４ビットユーザ識別子を備えたことを特徴とする請求項４１に記載の方法。
【請求項４３】
前記識別子は、少なくとも部分的にゲームタイトル識別子に基づくことを特徴とする請求項４１に記載の方法。
【請求項４４】
前記識別子は、少なくとも部分的にゲーム製造業者識別子に基づくことを特徴とする請求項４１に記載の方法。
【請求項４５】
前記永続データは、前記ユーザの友人である１人または複数の他のユーザのリストを備えたことを特徴とする請求項３５に記載の方法。
【請求項４６】
前記永続データは、前記ユーザがミュートすることを要求した１人または複数の他のユーザのリストを備えたことを特徴とする請求項３５に記載の方法。
【請求項４７】
前記永続データは、前記ユーザが友人のならないことを要望される１人または複数の他のユーザのリストを備えたことを特徴とする請求項３５に記載の方法。
【請求項４８】
前記ユーザの現ログインセッションに関するユーザ情報を確立するステップをさらに備えたことを特徴とする請求項３５に記載の方法。
【請求項４９】
前記ユーザの現ログインセッションに関する前記情報は、前記ユーザが現在プレイしているゲームタイトルを備えたことを特徴とする請求項４８に記載の方法。
【請求項５０】
前記ユーザの現ログインセッションに関する前記情報は、前記ユーザの完全修飾アドレスを備えたことを特徴とする請求項４８に記載の方法。
【請求項５１】
前記ユーザの現ログインセッションに関する前記情報は、前記ユーザがプレイしているゲームセッションのセキュリティ情報を備えたことを特徴とする請求項４８に記載の方法。
【請求項５２】
前記ユーザの現ログインセッションに関する前記情報は、前記ユーザの現ステータスを備えたことを特徴とする請求項４８に記載の方法。
【請求項５３】
リモートゲームコンソールのユーザについての友人のリストを管理するステップと、
他のユーザが前記ユーザの友人でもある場合にのみ、前記ユーザが前記他のユーザの友人となることを可能にするステップとを備えたことを特徴とする方法。
【請求項５４】
友人の前記リストを永続的に格納するステップをさらに備えたことを特徴とする請求項５３に記載の方法。
【請求項５５】
前記ユーザがシステムにログインするとき、友人の前記リストをロードするステップと、
前記１人または複数の友人のそれぞれが前記システムにログインしているか否かをチェックするステップと、
前記システムにログインしている前記１人または複数の友人ごとに、前記ユーザを前記友人の情報に書き込ませ、前記友人を前記ユーザの情報に書き込ませるステップと
をさらに備えたことを特徴とする請求項５３に記載の方法。
【請求項５６】
前記ユーザの友人となることにより、前記他のユーザが前記ユーザに関する現ステータス情報を受信することが可能となることを特徴とする請求項５３に記載の方法。
【請求項５７】
前記システムにログインしたユーザの１人または複数の友人を識別し、前記１人または複数の友人ごとに、前記友人に関する現ステータス情報を識別するように構成された書き込みリストと、
リモートクライアント装置のユーザが前記書き込みリストに友人を追加することを可能にするように構成され、前記書き込みリストに前記友人を追加したことに応答して、前記友人に対応する別の書き込みリストに前記ユーザを追加するように構成された制御モジュールと
を有することを特徴とするシステム。
【請求項５８】
前記制御モジュールは、
前記ユーザがシステムにログインすると前記ユーザの友人のリストをロードし、
前記１人または複数の友人のそれぞれが前記システムにログインしているか否かをチェックし、
前記システムにログインしている前記１人または複数の友人ごとに、前記友人を前記書き込みリストに追加し、前記友人に対応する前記別の書き込みリストに前記ユーザを追加するようにさらに構成されることを特徴とする請求項５７に記載のシステム。
【請求項５９】
前記システムにログインした複数のユーザに関する情報を管理するように各々構成された複数のプレゼンスサーバと、
前記複数のユーザが使用するクライアント装置によって取り出す目的で利用可能な情報を格納するための１つまたは複数の通知キューを前記複数のユーザごとに管理するように構成された複数の通知サーバと、
前記ユーザがもはや前記システムにログインしていない状態の後に前記複数のユーザに関する一定の情報を永続的に格納するためのプロファイル記憶と
を備えたことを特徴とするシステム。
【請求項６０】
前記複数のユーザのうち特定の１人に関する情報を管理するように構成された、前記複数のプレゼンスサーバのうち特定の１つは、前記ユーザに関連する識別子に基づくハッシュ値を生成することによって決定されることを特徴とする請求項５９に記載のシステム。
【請求項６１】
前記識別子は６４ビットユーザ識別子を備えたことを特徴とする請求項６０に記載のシステム。
【請求項６２】
前記識別子は、少なくとも部分的にゲームタイトル識別子に基づくことを特徴とする請求項６０に記載のシステム。
【請求項６３】
前記識別子は、少なくとも部分的にゲーム製造業者識別子に基づくことを特徴とする請求項６０に記載のシステム。
【請求項６４】
複数のユーザのうち特定の１人に関する通知キューを管理するように構成された、前記複数の通知サーバのうち特定の１つが、前記ユーザに関連する識別子に基づくハッシュ値を生成することによって決定されることを特徴とする請求項５９に記載のシステム。
【請求項６５】
前記識別子は６４ビットユーザ識別子を備えたことを特徴とする請求項６４に記載のシステム。
【請求項６６】
前記識別子は、少なくとも部分的にゲームタイトル識別子に基づくことを特徴とする請求項６４に記載のシステム。
【請求項６７】
前記識別子は、少なくとも部分的にゲーム製造業者識別子に基づくことを特徴とする請求項６４に記載のシステム。
【請求項６８】
前記プロファイル記憶は、前記ユーザの友人のリスト、前記ユーザがミュートすることを要求した１人または複数の他のユーザのリスト、および前記ユーザが友人とはならないことを要求する１人または複数の他のユーザのリストを永続的に格納することを企図されることを特徴とする請求項５９に記載のシステム。
【請求項６９】
ゲームコンソールのユーザをシステムにログインさせ、
前記ゲームコンソールから受信したデータパケットの暗号を解読し、
前記ゲームコンソールに送信すべきデータパケットを暗号化するように構成されたセキュリティゲートウェイと、
前記ユーザに関連する識別子に基づいて複数のプレゼンスサーバのうちの１つにデータパケットを通信するように構成された１つまたは複数のプレンゼンスおよび通知フロントドア装置であって、前記複数のプレゼンスサーバのうちの前記１つが、前記ユーザが前記システムにログインすると前記ユーザに関する情報を管理するように構成される１つまたは複数のプレンゼンスおよび通知フロントドア装置と、
前記ゲームコンソールによって取り出す目的で利用可能な情報を格納するための１つまたは複数の通知キューを前記ユーザに関して管理するように構成された複数の通知サーバと、
前記ユーザがもはや前記システムにログインしていない状態の後に前記ユーザに関する一定の情報を永続的に格納するためのプロファイル記憶と
を備えることを特徴とするシステム。
【請求項７０】
前記複数の通知サーバのうちの１つは、
前記ゲームコンソールが利用可能な複数のタイプの情報のうちの１つまたは複数についての表示を前記ゲームコンソールに送信し、
前記表示に応答して要求を前記ゲームコンソールから受信し、前記ゲームコンソールが利用可能な前記情報を取り出し、
前記ゲームコンソールが利用可能な前記情報を識別し、
前記ゲームコンソールが利用可能な前記情報を前記ゲームコンソールに送信するように
さらに構成されることを特徴とする請求項６９に記載のシステム。
【請求項７１】
前記複数のプレゼンスサーバのうちの１つは、
前記ユーザがシステムにログインするとき、前記プロファイル記憶から前記ユーザに関する永続データをロードし、
前記永続データから、前記ユーザの１人または複数の友人を識別し、
前記１人または複数の友人のそれぞれが前記システムにログインしているか否かをチェックし、
前記システムにログインしている１人または複数の友人ごとに、前記友人の情報に前記ユーザを書き込ませ、前記ユーザの情報に前記友人を書き込ませるように
さらに構成されることを特徴とする請求項６９に記載のシステム。
【請求項７２】
前記複数のプレゼンスサーバのうちの１つは、
前記ユーザの友人のリストを管理し、
他のユーザが前記ユーザの友人でもある場合にのみ、ユーザが前記他のユーザの友人となることを可能にするように
さらに構成されることを特徴とする請求項６９に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータおよびオンラインシステムに関し、より詳細には、情報の管理および通信を行うためのプレゼンスおよび通知システムに関する。
【０００２】
【従来の技術】
現在のコンピューティング装置の各ユーザは、しばしばこれらの装置を使用して相互に通信することを要望する。例えば、各ユーザは、ユーザ同士相互にインターネットにログインして短報またはショートメッセージを送信したいと要望するかもしれない。ユーザはこのメッセージを使用して種々の情報、例えば彼らの１日の詳細な情報、宿題に関する質問、ボーイフレンド／ガールフレンドの細かな情報、コンピュータゲームに関する情報などを送信したり、単にチャットをしたりすることなどの通信を行うことができる。
【０００３】
【発明が解決しようとする課題】
このようなオンラインメッセージの交換を行うために、特定のユーザがインターネットにログインしているか否かといった、ユーザに関する情報が一般に管理（ｍａｉｎｔａｉｎ）される（それにより、ネットワークにログインしているユーザだけにメッセージを送信することが可能となる）。このような情報（例えば、ユーザがログインしているか否か）を管理することに伴い、適切なユーザに対する情報をどのように取得するかということが問題となる。この１つの解決策は、ユーザの各装置と各サーバの間のＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）接続をオープンに保つことである。しかし、そのようにＴＣＰ／ＩＰを接続し続けることによって、著しい量のオーバヘッドが必要となり、それにより、より多くの数の中央サーバを使用しなければならなくなる。別の解決策としては、いかなる新しい情報を得るためにも各クライアント装置に、中央サーバを反復的に照会させることできる。しかし、このように頻繁に照会することによって、新たな情報が存在しない（例えば、ユーザがまだログインしており、したがってユーザがもはやログインしていないという表示を送信する必要はない）にもかかわらず著しい数の要求および応答が行われることとなる。
【０００４】
以下に述べる、情報の管理および通信を行うためのプレゼンスおよび通知システムにより、これらの問題やその他の問題が解決される。
【０００５】
【課題を解決するための手段】
情報の管理および通信を行うためのプレゼンスおよび通知システムを本明細書では説明する。
【０００６】
このシステムの一実施形態によれば、クライアント装置が利用可能な複数のタイプの情報のうちの１つまたは複数の表示がクライアント装置に送信される。この表示に応答して、要求をクライアント装置から受信し、クライアント装置が利用可能な情報が取り出される。クライアント装置が利用可能な情報が識別され、クライアント装置に送信される。
【０００７】
このシステムの一実施形態によれば、ユーザがシステムにログインすると、ユーザに関する永続データがプロファイル記憶からロードされる。ユーザの１人または複数の友人が永続データから識別され、１人または複数の友人がそれぞれシステムにログインしているか否かについてチェックが行われる。システムにログインしている１人または複数の友人ごとに、そのユーザは友人の情報に書き込まれ（ｓｕｂｓｃｒｉｂｅｄ）、友人はそのユーザの情報に書き込まれる。
【０００８】
このシステムの一実施形態によれば、リモートゲームコンソールのユーザについて、友人のリストが管理される。このユーザは、他のユーザもこのユーザの友人である場合にだけ、その他のユーザの友人となることが可能となる。
【０００９】
同様の構成要素および／または機能については、文書全体を通して同じ符号を使用して参照する。
【００１０】
【発明の実施の形態】
以下の議論は、オンラインサービスのためのプレゼンスおよび通知システムを対象とする。この議論は、暗号化、暗号化解除、認証、ハッシング、およびデジタル署名などの基本的な暗号原理に読者が通じていることを前提とする。暗号の基礎的な入門としては、　Ｂｒｕｃｅ　Ｓｃｈｎｅｉｅｒの著作による　”Ａｐｐｌｉｅｄ　Ｃｒｙｐｔｏｇｒａｐｈｙ：　Ｐｒｏｔｏｃｏｌｓ，　Ａｌｇｏｒｉｔｈｍｓ，　ａｎｄ　Ｓｏｕｃｅ　Ｃｏｄｅ　ｉｎ　Ｃ，”　Ｊｏｈｎ　Ｗｉｌｅｙ　＆　Ｓｏｎｓ，　ｃｏｐｙｒｉｇｈｔ　１９９４　（ｓｅｃｏｎｄ　ｅｄｉｔｉｏｎ　１９９６）が詳しく、参照により本明細書に組み込まれる。
【００１１】
本明細書における議論では「友人」に言及する。特定のユーザの友人とは他のユーザを指し、その他のユーザがログインすると、その特定のユーザによってその他のユーザの情報に書き込みがなされる。他のユーザの情報に書き込まれることにより、特定のユーザはその情報に対する変更の表示を受信することができる（例えば、特定のユーザは、他のユーザがゲームのプレイ状態からゲームの休止状態に変化したときに通知を受けることができる）。友人はまた、バディ（ｂｕｄｄｙ）と呼ばれることもある。
【００１２】
図１は、例示の環境１００を示すブロック図である。複数のクライアント装置１０２（１）、．．．、１０２（ｎ）がプレゼンスおよび通知システム１０４に結合する。装置１０２とシステム１０４との間の結合は、システム１０４と各装置１０２との間の通信を可能にする様々な結合のいずれでもよい。一実施形態では、この結合はインターネットを含み、任意に１つまたは複数の他のネットワーク（例えばローカルエリアネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ））を含むこともできる。
【００１３】
プレゼンスおよび通知システム１０４は、ユーザがシステム１０４にログインしたこと、およびどのユーザが他のどのユーザの情報に書き込まれているかということに関する情報（本明細書ではデータとも呼ばれる）を管理する。別のユーザの情報に書き込まれるユーザが使用するクライアント装置１０２は、その別のユーザに関する新しい情報がシステム１０４から入手可能であるときに通知を受信する。プレゼンスおよび通知システム１０４は、クライアント装置１０２によるシステム１０４へインテリジェントポーリングを可能にし、それによって、システム１０４の装置に関する情報が入手できない場合に、各クライアント装置１０２（およびシステム１０４）がシステム１０４を繰返しポーリングを行うという負担が軽減される。
【００１４】
ユーザに関する多種多様なタイプの情報のいずれもシステム１０４で管理することができる。このような情報タイプには、例えばユーザの現ステータス、ユーザがプレイしているゲームタイトルに関する情報、ユーザのハードウェア構成またはコンソール構成に関する情報、セキュリティ情報などが含まれる。システム１０４は、特定のユーザに関する複数の異なる情報タイプを同時に管理することができる。ユーザに関して管理する情報のいずれかが変化したとき（以下でより詳細に説明するように、ユーザのクライアント装置１０２がその情報を取り出すとき）はいつでも、そのユーザの情報に書き込みしている他のいずれのユーザにもその変更が通知される。
【００１５】
ユーザに、別のユーザの情報の変化を通知するために、システム１０４からユーザのクライアント装置１０２（ユーザが使用しており、それを介してユーザがシステム１０４にログインするクライアント装置）に表示が送信される。この表示はまた「チクル（ｔｉｃｋｌｅ）」とも呼ばれる。この表示は、システム１０４で情報の検索が可能であることをクライアント１０２に通知し、オプションで、利用可能な情報のタイプをクライアント１０２に知らせる。その後クライアント１０２は、システム１０４がクライアント１０２に対して有する情報についてシステム１０４をポーリングすることができる。したがって、システム１０４がクライアント１０２に対する情報を有することをクライアント１０２が認識するときだけクライアント１０２のシステム１０４へのポーリングが必要となるように、ポーリングはインテリジェントに行われる。受信さえされれば、クライアント１０２は、様々な方式（例えば、情報を表すアイコンを表示する、クライアントのディスプレイ装置上にダイアログボックスまたはテキストボックスとして情報を表示する、ユーザが具体的に要求するまで情報を保存するなど）のいずれによっても、ユーザが情報を利用させることができる。
【００１６】
クライアント１０２が表示に応答してシステム１０４をいつポーリングしようとするかを決定するのはクライアント１０２の役割である。その時にクライアント１０２が実施する他のオペレーションおよび／またはオプションで利用可能であると表示される情報のタイプによっては、クライアント１０２はシステム１０４をポーリングする前に、一定時間だけ待機することを要望する場合がある。加えて、システム１０４から取り出した情報をクライアント１０２がいつユーザに表示しようとするかを決定するのはクライアント１０２の役割である。この場合も、その際にクライアント１０２が実施するその他のオペレーションおよび／または取り出した情報のタイプによっては、クライアント１０２が、情報のユーザへの表示を待機することを要望することがある。
【００１７】
システム１０４によってクライアント１０２に送信される表示またはチクルは、別の目的でクライアント１０２に送信される別のメッセージ内に含められる（便乗される（ｐｉｇｇｙｂａｃｋｅｄ　ｏｎ）とも呼ばれる）。一実施形態で例示されるように、システム１０４は、規則的または不規則な間隔で生存通知（ｈｅａｒｔｂｅａｔ　ｍｅｓｓａｇｅ）をクライアント１０２に送信する。生存通知は、システム１０４が依然として機能していることをクライアント１０２に通知すること、中間装置（例えば、ネットワークアドレス変換（ＮＡＴ）を実施するルータ）を介する経路指定をアクティブに管理することなど、複数の目的を達することができる。クライアント１０２に送信される表示は、この生存通知内に含むことができる。したがって、表示は別の通信に便乗されて、利用可能な情報をクライアント１０２に通知するために、システム１０４が別々のメッセージをクライアント１０２に送信する必要が軽減される。
【００１８】
クライアント１０２に送信される表示は、様々な異なる形式のうちのいずれの形式も取ることができる。一実施形態では、表示は、特定のタイプの情報が現在クライアントにとって利用可能であることをそれぞれ示す１つまたは複数のフラグのセットである。これに代えて、様々なタイプを符号化するために別の値を生成することもできる（例えば、３ビット値を使用して、８（２３）個の異なるタイプを符号化することができる）。さらにこれに代えて、現在利用可能な情報のタイプごとに別々の表示を送信する（オプションで、異なるメッセージに便乗させる）こともできる。
【００１９】
例示される実施形態では、表示をクライアント１０２に送信した後、クライアント１０２がその情報についてシステム１０４をまだポーリングしていない場合、一定の時間間隔の後、システム１０４は表示を再送信する。システム１０４からクライアント１０２に通信を送信する方式によってはメッセージをクライアント１０２に送達することが保証されない可能性がある。例えば、送信されるメッセージが実際に受信側に送達されることが保証されないＵＤＰ（ユーザデータグラムプロトコル）形式を使用してメッセージが送信される可能性がある。したがって、以前の表示がクライアント１０２に送達されなかった可能性があるため、システム１０４はクライアント１０２に表示を再送信する。この再送信は、クライアント１０２がその情報についてシステム１０４をポーリングするか、または表示のしきい値の回数が送信されるまで続行される。システム１０４はまた、オプションでバックオフ機構を実装して、表示の再送信の頻度を低減する。一般に、クライアントに表示が再送信されればされるほど、表示のうちの少なくとも１つがクライアントに送達される確率が大きくなるが、クライアントが他の何らかの理由のために（例えば、クライアントは他のオペレーションの実施でビジーかもしれない）システム１０４をポーリングしていない確率も大きくなる。例えば、表示は２０秒後に再送信し、その４０秒後に再び再送信し、その８０秒後に再び再送信し、その１６０秒後に再び再送信することができる。
【００２０】
プレゼンスおよび通知システム１０４において、書き込みは相互的である。言い換えれば、ユーザＡがユーザＢの情報を受信するために書き込まれると、ユーザＢもまたユーザＡの情報を受信するために書き込まれる。書き込みが相互的であるとき、システム１０４は、ユーザの別のユーザの情報への書き込みを、その別のユーザもまたそのユーザの情報に書き込まなければ許可しない。別の代替される実施形態では、書き込みは相互的ではない。
【００２１】
ユーザがシステム１０４にログインすると、プレゼンスおよび通知システム１０４はユーザのステータスについての情報を管理する。本明細書において、ユーザがシステム１０４にログインし、またはシステム１０４にログインされるとは、ユーザがシステム１０４に直接ログインすること、または他の装置にユーザがログインすることを指し、このたの装置はシステム１０４の代わりにシステム１０４へのログインを管理し、またはプレゼンスおよび通知システム１０４がその一部であるより大規模なシステムへのログインを管理する。多種多様な方式のいずれでもログインを実施することができ、例示される一実施形態では、システム１０４（またはシステム１０４の代わりに動作する別の装置、およびオプションで他のシステム）に、（例えばＩＤおよび／またはパスワードに基づいて）ユーザおよび（例えば装置ＩＤに基づいて）ユーザの装置１０２を認証し、ユーザの装置１０２とシステム１０４の間で安全な通信チャネルを確立させることによって実施される。
【００２２】
本明細書の一部の議論においては、クライアント装置１０２をゲームコンソールと呼ぶ。クライアント装置１０２は専用ゲームコンソールとすることができ、あるいは追加の機能を含むこともできる。例えば、ゲームコンソールは、デジタルＶＣＲとして動作することができるようにデジタルビデオ記録機能を含んだり、テレビジョン信号を（それが同報通信信号、ケーブル信号、サテライト信号などであるかにかかわらず）同調および復号化することができるようにチャネル同調機能を含んだり等することができる。クライアント装置１０２は、デスクトップＰＣ、ポータブルコンピュータ、携帯電話、インターネット機器、サーバコンピュータなどの他のタイプのコンピューティング装置でもよい。加えて、様々なタイプの装置１０２でプレゼンスおよび通知システム１０４を同時に使用することができる。例えば、専用ゲームコンソール上のユーザがポータブルコンピュータ上のユーザの情報に書き込むことができ、またはある製造業者によって製造された専用ゲームコンソール上のユーザが、別の製造業者によって製造された専用ゲームコンソール上のユーザの情報に書き込むことができる。
【００２３】
図２は、例示としてプレゼンスおよび通知システム１０４をさらに詳細に示すブロック図である。プレゼンスおよび通知システム１０４は、プレゼンスサーバ１２０、通知サーバ１２２、およびプロファイル記憶１２４を含む。ユーザ（１）と呼ぶ単一のユーザに関する格納された情報を参照しながら図２を説明する。しかし、類似の情報が、システム１０４にログインする複数のユーザに関しシステム１０４によって同時に格納され、処理されることを理解されたい。これらの複数のユーザは、ユーザ（１）と同じゲームコンソールおよび／またはユーザ（１）とは異なるゲームコンソールを使用しているかもしれない。
【００２４】
プレゼンスサーバ１２０は、システム１０４にログインしたユーザに関する情報を格納する。この情報は、ユーザの現ステータス（例えば、ゲームプレイを休止したこと、現在はゲームをプレイしていないこと、隠されていることなど）に関する情報を含むことができる。隠しステータスが含めることで、「隠し」オプションをそのユーザに設定させることが可能となるが、「隠し」オプションとは、ユーザがログインしていることをシステム１０４が認識していても、そのユーザのステータス情報に書き込まれている任意の他のユーザにそのユーザがログインしていないことを通知すべきことをシステム１０４に示すものである。これにより、ユーザがログインしながら、ログインしているユーザの友人の誰にも宣伝することなく様々なオンラインサービスを利用することが可能となる。
【００２５】
通知サーバ１２２は、ユーザに通信すべき情報を格納する。ユーザの使用しているゲームコンソール１０２がこの情報を取り出し、またはユーザがシステムをログオフするまで、この情報はサーバ１２２に格納される。
【００２６】
プロファイル記憶１２４は、ユーザ情報の永続的記憶を実現する。プロファイル記憶１２４に格納された情報は、ユーザがログオフした後に管理すべき情報である。ユーザがプレイしていたゲームタイトル、ゲームコンソール１０２とシステム１０４の間のセキュア通信を可能にするためにシステム１０４へのログイン中に確立されたセキュリティ鍵、ユーザがゲームを休止しているか否かなどのある情報は、ユーザがログオフしたときに無関係となり、したがってプロファイル記憶１２４内で管理する必要はない。
【００２７】
図示する例では、プロファイル記憶１２４は、ユーザ（１）として識別される特定のユーザに関して、友人リスト１２６、友人招待（ｉｎｖｉｔａｔｉｏｎ）リスト１２８、ミュートリスト１３０、およびネバーリスト１３２を含む。単一のユーザ（ユーザ（１））に関して単一の組のリスト１２６〜１３２だけを図示するが、プロファイル記憶１２４は、複数のユーザに関する類似のリスト（例えば、プレゼンスおよび通知システム１０４のユーザごとに１組のリスト（友人リスト、友人招待リスト、ミュートリスト、およびネバーリスト））を管理する。
【００２８】
友人リスト１２６は、ユーザ（１）が友人として登録した他の各ユーザの識別子を含む。上記で説明した相互性により、ユーザ（１）の友人としてリストされるいずれのユーザもやはり、そのユーザの友人としてユーザ（１）をリストされる。「最良の」友人、または通常一緒にプレイする友人を示すためのフラグ、ユーザが友人となったときの表示、友人に関するニックネームなど、友人に関する追加の情報も格納することができる。
【００２９】
友人招待リスト１２８は、ユーザ（１）がシステム１０４にログインしなかった間にユーザ（１）の友人となるよう要求した他の各ユーザの識別子を含む。システム１０４は、ユーザが別のユーザを招待して、その別のユーザがその時にログインしていなくてもユーザの友人とすることができる。このような招待を受信したとき、ユーザ（１）が再度システム１０４にログインすると、（以下でさらに詳細に説明するように）招待側のユーザの識別子がリスト１２８に格納されて処理される。
【００３０】
ミュートリスト１３０は、ユーザ（１）がミュートするよう要求した他の各ユーザについての識別子を含む。ある実施形態では、ユーザは、ユーザのコンソール１０２を介して相互に会話することができる。これらの実施形態では、ユーザはまた、別のユーザからのいかなる音声通信も受信しないようにその別のユーザをミュートすることもできる。ユーザ（１）がミュートするそのようないかなるユーザの識別子もミュートリスト１３０に格納される。これに代えて、リスト１３０を含めないこともできる（例えば、プレゼンスおよび通知システム１０４は他のユーザのミュート機能をサポートしない場合、またはユーザ間の音声通信がゲームコンソール１０２または他の装置でサポートされない場合がある）。
【００３１】
ネバーリスト１３２は、ユーザ（１）が決して友人となることを望まない他の各ユーザについての識別子を含む。ユーザ（１）が単に別のユーザによって悩まされたくないだけといった状況も起こりうる。この状況では、ユーザ（１）は、その他のユーザの識別子をユーザ（１）のネバーリスト１３２に追加させることができる。これにより、以下でより詳細に説明するように、ユーザ（１）が友人となることについての他のユーザからのいかなる招待も、その招待をユーザ（１）に通知せずにシステム１０４で拒絶することが可能となる。これに代えて、（例えば、プレゼンスおよび通知システム１０４が、友人となるべきでないユーザを識別するという考えをサポートしない場合には）リスト１３２が含まれないようにすることができる。
【００３２】
４つの別々のリストをユーザ（１）に関して図示したが、リストのうち１つまたは複数を組み合わせることもできる。例えば、友人リスト１２６と友人招待リスト１２８を（例えば、友人と、友人になることを要求している人々とを区別するためのフラグまたは他の識別機構を使用して）組み合わせて単一のリストにすることができる。
【００３３】
本明細書で説明するユーザ識別子は、プレゼンスおよび通知システム１０４の異なるユーザを一意的に識別する多種多様な識別子のいずれとすることもできる。ユーザ識別子は、グローバルに一意的にユーザを識別することができ、あるいはまたローカルに一意的に（例えば、プレゼンスおよび通知システム１０４内で一意的に、またはプレゼンスおよび通知システム１０４を含むデータセンタまたはその他のシステム内で一意的に）識別することができる。例示される一実施形態では、ユーザ識別子の各々は、グローバルに一意の６４ビット識別子であり、ゲームコンソール１０２のユーザが登録されてプレゼンスおよび通知システム１０４へのログインが可能となるとそのユーザに割り当てられる。
【００３４】
本明細書で使用されるように、ユーザ識別子は、特定のユーザがいかなる特定のゲームコンソール１０２を使用しているのかに関わらず、その特定のユーザを識別する。したがって、ユーザは、あるゲームコンソールから別のゲームコンソールへ（例えば、ユーザの家から別のユーザの家へ）と移り、同じユーザ識別子を管理することができる。ユーザが（例えばキーボードまたは仮想キーボードを使用して）識別子を直接入力する方式、識別子を生成するのに使用する値またはキーシーケンスをユーザが入力する方式、あるいはユーザが搬送する取外し可能メモリ装置（オプションで、ユーザだけが識別子へのアクセスを許可することができるようにパスワード保護される）から取り出す方式など様々な方式で、ユーザ識別子をゲームコンソール１０２で入力し、システム１０４と通信することができる。
【００３５】
ユーザ（１）がシステム１０４にログインするとき、制御モジュール１３４は、プロファイル記憶１２４からミュートリスト１３０およびネバーリスト１３２を取り出し、それらをそれぞれリスト１３６および１３８としてプレゼンスサーバ１０４に格納する。別のユーザからの後続するいかなる招待も、制御モジュール１３４によりネバーリスト１３８と照らし合わせてチェックされる。招待側のユーザがリスト１３８で識別された場合、招待は拒絶される。この拒絶はユーザ（１）に通知することなく行うことができ、それによってユーザ（１）が招待側のユーザに悩まされないようにすることができる。同様に、ユーザ（１）との音声通信チャネルを確立するいかなる企図も、ミュートリスト１３６と照らし合わせてチェックされる。ユーザ（１）と音声通信チャネルを確立しようと企図するユーザがリスト１３６で識別された場合、その試行は失敗して音声通信チャネルは確立されない。
【００３６】
ユーザ（１）がシステム１０４にログインすると、制御モジュール１３４はまた、プロファイル記憶１２４から友人招待リスト１２８をも取り出し、リスト１２８で識別された各ユーザについて、識別されたユーザとユーザ（１）が友人となるようにとの招待をユーザ（１）に送信する。次いで、ユーザ（１）による応答に基づいて、識別されたユーザを友人リスト１２６、ネバーリスト１３２に追加し、あるいは追加しないこともできる。招待に対する応答を受信した後、制御モジュール１３４は、友人招待リスト１２８からユーザ識別子を除去する。ユーザ（１）が招待に応答することなくログオフする状況では、ユーザ識別子は依然として友人招待リスト１２８上にあり、したがってユーザ（１）は、再びログインするときに別の招待を受信することになる。
【００３７】
システム１０４にログインするユーザ（１）に応答して、制御モジュール１３４はまた、プロファイル記憶１２６から友人リスト１２６をも取り出す。友人リスト１２６にリストされる友人ごとに、制御モジュール１３４は、ユーザがシステム１０４にログインしているか否かをチェックする。ユーザがログインしている場合、そのユーザがユーザ（１）に関する書き込みリスト１４０に追加され、ユーザ（１）はそのユーザのステータス情報に書き込む。ユーザ（１）はまた、そのユーザについての書き込みリストにも追加される。制御モジュール１３４はさらに、そのユーザの現ステータスを取得し、それを書き込みリスト１４０に格納してユーザ（１）の現ステータスもそのユーザの書き込みリストに格納する。続くいかなる変更もそのユーザのステータス書き込みリスト１４０に反映され（かつ、以下により詳細に説明するように、ゲームコンソール１０２上のユーザ（１）に伝えられ）る。プレゼンスサーバ１２０は、システム１０４にログインした各ユーザに対応する書き込みリスト１４０（０個以上のエントリを有することができる）を管理する。したがってプレゼンスサーバ１２０は、特定のユーザの識別子が与えられた場合、その特定のユーザがシステム１０４にログインしているか否かを容易に判定することができる。あるいはまた、他の機構を使用して特定のユーザがシステム１０４にログインしているか否かを判定することもできる。例えば、プレゼンスサーバ１２０は、システム１０４にログインしたあらゆるユーザのユーザ識別子を含む追加のリスト（図示せず）を管理することができる。
【００３８】
システム１０４にログインしていない、友人リスト１２６にリストされるいかなる友人も、単に制御モジュール１３４によって（当面の間）無視できることに留意されたい。友人の相互性のために友人がその後ログインするとき、制御モジュール１３４は、ユーザ（１）がログインしていることを識別することを含め、友人についての類似のプロセスを実施する。ユーザ（１）がログインしていると識別したことに応答し、制御モジュール１３４は友人の情報にユーザ（１）を書き込んで、ユーザ（１）の情報に友人を書き込む。
【００３９】
ユーザ（１）がシステム１０４にログインすると、制御モジュール１３４はさらに、ユーザ（１）の現ログインセッションに関する追加の情報１４２をプレゼンスサーバ１２０内で管理する。この情報は、ユーザがログアウトし、その後ログインし直す場合に変更することができる。多種多様な情報のうちのいずれも情報１４２として管理することができる。この情報は、システム１０４の設計者の選択または要望に基づいて変わることがあり、オプションで、ゲームコンソール１０２、またはゲームコンソール１０２上で実行中のゲームタイトルの設計者または製造業者の要望に基づいて変わることがある。図示する例では、情報１４２は、ユーザがプレイしている現ゲームタイトル１４４（それが存在する場合）、ユーザのアドレス１４６、ユーザに関するセキュリティ情報１４８、およびユーザの現ステータス１５０を含む。
【００４０】
現ゲームタイトル１４４は、ユーザ（１）が使用しているゲームコンソール１０２上で実行中の現ゲームのタイトルである。ゲームタイトルが実行中でない場合は、ゲームタイトル１４４は、ゲームコンソール１０２に挿入された取外し可能ディスク上のゲームタイトルでよく、あるいは単にブランクとし、または「タイトルなし」を示すことができる。
【００４１】
アドレス情報１４６により、ユーザのゲームコンソール１０２のアドレスが識別される。一実施形態では、アドレス情報１４６には、完全修飾アドレスまたはＸＮＡＤＤＲと呼ばれるものが含まれる。ゲームコンソール１０２に関する完全修飾アドレスは、ゲームコンソール１０２に関するイーサネット（登録商標）ＭＡＣアドレス、ゲームコンソール１０２のローカルＩＰアドレス（これは、ゲームコンソール１０２が有しているとみなされるＩＰアドレスであり、（例えば、サーバ１２０とゲームコンソール１０２との間のＮＡＴ装置（例えばルータ）などの中間装置、またはシステム１０４とインターネットとの間に位置するゲートウェイのために）プレゼンスサーバ１２０がゲームコンソール１０２からデータパケットを受信するＩＰアドレスとは異なる可能性がある）、ゲームコンソール１０２からデータパケットが受信されるＩＰアドレスおよびポート（これらは、サーバ１２０で受信することができ、またはシステム１０４とインターネットの間に位置するゲートウェイなどの、サーバ１２０の代わりの別の中間装置で受信することもできる）、論理ゲートウェイ装置番号（システム１０４とインターネットの間に位置するゲートウェイ装置に割り当てられた識別子であって、ゲートウェイ装置のクラスタ内のゲートウェイ装置を一意的に識別する識別子）、ゲームコンソール１０２とシステム１０４（またはシステム１０４とインターネットの間に位置するゲートウェイ装置）の間の安全な通信チャネルに対応するセキュリティパラメータインデックス（ＳＰＩ）値、およびゲームコンソールＩＤ（特定のゲームコンソール１０２の一意に（またはグローバルに一意に）識別）を含む。
【００４２】
セキュリティ情報１４８は、ユーザ（それが存在する場合）がプレイしている現ゲームセッションに関するセキュリティ情報（例えば、セッション識別子、セッション暗号鍵など）を格納する。この情報１４８をゲームセッションに加わるように招待されている（および／またはゲームセッションに加わることを要求している）別のユーザのゲームコンソールに送信して、ゲームセッションに加わる方法をその別のゲームコンソールに通知することができる。
【００４３】
現ステータス１５０は、ユーザ（１）の現ステータスを格納する。クロスタイトルステータス（例えば、ユーザがプレイしているゲームタイトルの名前、ユーザが休止中のゲームプレイを有しているか否か、ユーザが隠されているか否か、ユーザが使用しているゲームコンソールの様々な特徴（例えば、ユーザが音声通信を可能にする音声周辺装置を有しているか否か、ゲームコンソールを現在使用しているユーザ数など）、ユーザニックネームの変更など）、同一タイトルステータス（例えば、ヘルスレベル、残り時間、現在位置、レベル変更、ユーザニックネームの変更などのゲーム特有の情報）などの様々な情報を現ステータスとして格納することができる。例示の一実施形態では、現ステータス１５０の一部は、ゲーム特有の情報のために予約される。この予約部分は、様々なゲームタイトルにおいて格納することが要望されるステータス情報があれば何でも格納する目的で、その様々なゲームタイトルで使用することができる。
【００４４】
ゲームコンソール１０２上のユーザのステータスが変化すると、ゲームコンソール１０２は、新しいステータスをプレゼンスサーバ１２０に転送する。制御モジュール１３４は、現ステータス１４２を変更して新しいステータスを反映し、書き込みリスト１４０内の各ユーザも識別する。友人が相互的である場合、制御モジュール１３４はまた、書き込みリスト１４０内で識別される各ユーザもユーザ（１）についての情報に書き込まれることについても認識する。したがって、制御モジュール１３４はさらに、これらの他のユーザの各々の書き込みリスト内のユーザ（１）のステータスを更新して、新しいステータスを反映する。
【００４５】
ユーザ（１）がシステム１０４にログインすると、通知サーバ１２２の制御モジュール１５２もまた、ユーザ（１）に対応する１つまたは複数の通知キュー１５４をサーバ１２２において確立する（例えばメモリ内に生成する）。ゲームコンソール１０２に送信することができる様々なタイプの情報ごとに異なる通知キューを確立することができ、あるいはまた様々なタイプの情報を含む単一のキューを確立することもできる。単一のキューが様々なタイプの情報を含む場合、キュー内で様々なタイプを（例えば各キューエントリに対応するフラグによって）識別するように、あるいはまた様々なタイプ間で区別しないようにすることができる。例えば、通知キュー１５４は、（ユーザの友人のステータスに対する変更に関する情報を格納する）友人の現ステータス通知キュー、（ユーザ（１）が開始したか、別のユーザが開始したかに関わらず、友人になるための招待に関する情報を格納する）友人招待通知キュー、（ユーザ（１）が開始したか、別のユーザが開始したかに関わらず、他のユーザとゲームをプレイするための招待に関する情報を格納する）ゲーム招待通知キュー、および（ユーザ（１）または別のユーザが送信したゲーム招待への回答に関する情報を格納する）ゲーム招待回答キューのうちの１つまたは複数を含む。
【００４６】
通知キューが同じユーザ識別子に対応する複数の情報（すなわち、複数のキューエントリ）を格納すること、および別の通知キューが同じユーザ識別子に対応する１つの情報だけを格納することが可能となるように制御モジュール１５２を構成することができる。例えば、ユーザ識別子あたり１つの情報だけを格納するように友人の現ステータス通知キューを構成することができる。友人の現ステータス通知キューに関する新しいエントリを通知サーバ１２２がプレゼンスサーバ１２０から受信するごとに、制御モジュール１５２は、新しいエントリに関するユーザ識別子が既にキュー内に存在しているか否かをチェックする。新しいエントリに関するユーザ識別子が既にキュー内に存在している場合、以前のエントリを削除し、新しいエントリを追加する（または、新しいエントリが以前のエントリを上書きすることもできる）。新しいエントリに関するユーザ識別子がキュー内に存在しない場合、新しいエントリをキューに追加する。例えば、通知を受けるユーザが情報を求めてシステム１０４をポーリングする前に、ユーザが「ゲームプレイ」ステータスから「休止」ステータスに移り、次いで「オフライン」ステータスに移り、次いで「オンライン」ステータスに戻り、再び「ゲームプレイ」ステータスに戻る場合、ポーリングコンソールのユーザが実際に通常留意するのは、先行するすべてのステータスではなく、最も最近のステータス（「ゲームプレイ」）だけである。
【００４７】
ユーザがシステム１０４にもはやログインしていなければ、情報１４２ならびにリスト１３６、１３８、および１４０はもはや必要ではなくなりシステム１０４から削除される。ユーザに対応する通知キュー１５４も必要ではなくなりシステム１０４から削除される。リスト１３８または１３６に対して行われる任意の変更が、システム１０４から削除される前にプロファイル記憶１２４に保存される。あるいはまた、リスト１３８または１３６に対する任意の変更を、変更を行う際プロファイル記憶１２４に書き込むことができ、それによってユーザがもはやログインしていなければ、プロファイル記憶１２４にリストを書き込む必要性が軽減される。ユーザが明示的にログオフし、または使用不能となる（例えば、具体的にログオフすることなく、ユーザのゲームコンソールが電源オフされる）結果、そのユーザはもはやログインすることができない。プレゼンスシステム１０４は、もはや利用可能ではないユーザを自動的に（例えば、予想されるデータパケットが、予想される時間にゲームコンソールから受信されない場合）検出することができ、あるいはまた他の何らかの装置によって、ユーザがもはや利用可能ではないということを知らされるようにすることができる。
【００４８】
図３は、ユーザがプレゼンスおよび通知システム１０４にログインするときにシステム１０４をセットアップするための例示としてプロセス２００を示すフローチャートである。図３のプロセスは、プレゼンスおよび通知システム１０４で実装することができ、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せとして実施することができる。図３のプロセスを、図１および２の構成要素を参照しながら説明する。
【００４９】
まず、ユーザがシステム１０４にログインする（動作２０２）。制御モジュール１３４が、ユーザに関する永続データをプロファイル記憶からロードし（動作２０４）、認識している追加のユーザ情報を実装（ｐｏｐｕｌａｔｅ）する（動作２０６）。加えて、制御モジュール１５２は、ユーザに対応する通知キュー１５４を確立する（動作２０８）。
【００５０】
次に制御モジュール１３４は、プロファイル記憶から任意の適切な情報を通知キュー１５４内に転送する（動作２１０）。例えば、友人招待リスト１２８で識別される任意の友人について、制御モジュール１３４は、友人招待をキュー１５４のうちの友人招待通知キューに追加する。
【００５１】
次に制御モジュール１３４は、プロファイル記憶内の友人リストから友人を選択する（動作２１２）。この選択はいかなる順序でもよい（例えば、ランダム、ユーザ識別子に基づく番号順、識別子が友人リストに追加されたときに基づく日付順など）。次いで制御モジュール１３４は、選択した友人がログインしているか否かをチェックする（動作２１４）。選択した友人がログインしている場合、ユーザは友人の情報に書き込まれ（動作２１６）、友人はユーザの情報に書き込まれる（動作２１８）。動作２１８の後、または選択した友人が動作２１４でログインしていない場合、制御モジュール１３４は、まだ選択していない友人が友人リスト内に存在するか否かをチェックする（動作２２０）。そのような友人が存在しない場合、プロセス２００は別の友人を選択する（動作２１２）に戻る。しかし、友人リスト内のすべての友人を選択した場合、セットアップは完了する（動作２２４）。
【００５２】
図４は、別のユーザを友人として追加するように要求する例示のプロセス２４８を示すフローチャートである。図４のプロセスはプレゼンスおよび通知システム１０４において実装することができ、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せとして実施することができる。図４のプロセスを、図１および２の構成要素と、２人のユーザ、ユーザＡおよびユーザＢとを参照しながら説明する。
【００５３】
まず、制御モジュール１３４が、ユーザＢを友人として追加するように要求するメッセージをユーザＡから受信し（動作２５０）、ユーザＢがログインしているか否かをチェックする（動作２５２）。ユーザＢがログインしていない場合、ユーザＢがログインするまで、ユーザＢに関するプロファイル記憶に招待を格納する（動作２５４）。例えばユーザＢの識別子をプロファイル記憶１２４内のユーザＡの友人招待リストに追加することにより、この格納を実施することができる。
【００５４】
ユーザＢがログインしている場合、または（動作２５４の後に）ユーザＢがログインした後、制御モジュール１３４はユーザＡがユーザＢのネバーリスト上に存在するか否かをチェックする（動作２５６）。存在する場合、制御モジュール１３４は、ユーザＡの通知キューに拒絶メッセージを追加する（動作２７４）。この拒絶メッセージは、招待が拒絶されたことを示す。その後このメッセージは、最終的に（ユーザＡがまだログインしていると仮定して）ユーザＡに通信される。ユーザＡがユーザＢのネバーリスト上に存在しない場合、追加友人招待をユーザＢについての友人招待通知キューに送信する（動作２５８）。表示（チクル）をユーザＢ（動作２６０）に送信し、招待情報が通知キュー内でユーザＢにとって利用可能であることをユーザＢに通知する。最終的に、通知サーバ１２２をポーリングするユーザＢのゲームコンソールである制御モジュール１５２が、ユーザＢから招待情報を求める要求を受信する（動作２６２）。これに応答して、制御モジュール１５２は招待情報をユーザＢに送信し（動作２６４）、最終的にユーザＢから招待に対する応答を受信する（動作２６６）。
【００５５】
招待に対する応答は、受諾、拒絶、またはネバー表示とすることができる。受諾である場合、制御モジュール１３４はユーザＡをユーザＢの友人リストに追加し（動作２６８）、それによってユーザＢをユーザＡの情報に書き込み、かつユーザＢをユーザＡの友人リスト（動作２７０）に追加し、それによってユーザＡをユーザＢの情報に書き込む。次に、依然としてログインしているユーザＡおよびユーザＢのそれぞれの通知キューに確認メッセージを追加し（動作２７２）、他のユーザの情報への各ユーザの書き込みを確認する。これらのメッセージが存在するならば、これらのメッセージは最終的にユーザＡとユーザＢとのうち適切な一方に通信される。ユーザＡおよび／またはユーザＢがログインしていない場合、オプションで、ユーザが再度ログインするまで、プロファイル記憶１２４内に確認メッセージを格納することができる。
【００５６】
招待に対する応答が拒絶である場合、制御モジュール１３４は、拒絶メッセージをユーザＡの通知キューに追加する（動作２７４）。拒絶メッセージは、招待が拒絶されたことを示す。その後このメッセージは最終的に（ユーザＡが依然としてログインしていると仮定して）ユーザＡに送信される。ユーザＡがログインしていない場合、オプションで、ユーザが再度ログインするまで、拒絶メッセージをプロファイル記憶１２４内に格納することができる。
【００５７】
招待に対する応答がネバー表示である場合、制御モジュール１３４は、ユーザＡのユーザ識別子をユーザＢのネバーリストに追加する（動作２７６）。制御モジュール１３４は、ネバーメッセージをユーザＡの通知キューに追加する（動作２７８）。ネバーメッセージは、招待が拒絶され、ユーザＢが決して再びユーザＡの友人となるための招待を受けることを要望していないことを示す。次にこのメッセージは最終的に（ユーザＡが依然としてログインしていると仮定して）ユーザＡに送信される。ユーザＡがログインしていない場合、オプションで、ユーザが再度ログインするまで、プロファイル記憶１２４内に拒絶メッセージを格納することができる。あるいはまた、ネバーメッセージを送信するのではなく、拒絶メッセージをユーザＡに送信することもできる。
【００５８】
特定のユーザが別のユーザのネバーリストに追加されると、その別のユーザがその特定のユーザを友人とする招待を送信するのでない限り、その特定のユーザはネバーリスト上にとどまる。例えば、動作２７６でユーザＡがユーザＢのネバーリストに追加された場合、ユーザＡは、ユーザＢが友人とするためユーザＡを招待するまで、ユーザＢのネバーリスト上にとどまる（友人となるためユーザＡをユーザＢが招待した場合、制御モジュール１３４は、ユーザＢのネバーリストからユーザＡを除去する）。あるいはまた、一実施形態でにおいては、項目を決してネバーリストから除去することができず、またはシステム１０４の管理者の制御下でのみ項目を削除することができる。
【００５９】
図５は、ユーザのステータス情報を変更するため例示として示すプロセス３００のフローチャートである。図５のプロセスはプレゼンスおよび通知システム１０４で実装され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せとして実施することができる。図５のプロセスを、図１および２の構成要素を参照しながら説明する。
【００６０】
まず、制御モジュール１３４が、ユーザのゲームコンソールから新しいユーザステータスデータを受信する（動作３０２）。制御モジュール１３４は、プレゼンスサーバ１２０内のユーザに関する現ステータスを更新し（動作３０４）、新しいユーザステータスを反映し、ユーザの情報に現在書き込まれている各友人も識別する（動作３０６）。次いで制御モジュール１３４は、識別したあらゆる友人の書き込みリスト内のユーザステータスを更新し、新しいユーザステータスを反映する（動作３０８）。次に制御モジュール１３４は、通知サーバ１２２のユーザステータス変更メッセージを送信し、制御モジュール１５２に、識別した各友人の通知キューにユーザステータス情報を追加させる（動作３１０）。
【００６１】
図６は、情報をゲームコンソールに送信するための例示されるプロセス３４０を示すフローチャートである。図６のプロセスは、プレゼンスおよび通知システム１０４で実装され、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せとして実施することができる。図６のプロセスを、図１および２の構成要素を参照しながら説明する。
【００６２】
通知サーバ１２２の制御モジュール１５２が、ユーザに関する通知キューのうちの１つに新しいエントリが追加されるまで待機する（動作３４２）。この新しいエントリは、友人になるための招待、書き込みユーザの現ステータスの変化、ゲームをプレイする（例えば、既にプレイしているゲームセッションに加わる、または新しいゲームセッションを開始する）ための招待など、通知キューに関連するユーザと通信すべきいかなるタイプの情報でもよい。新しいエントリを追加したとき、新しい情報の表示をゲームコンソールに送信する（動作３４４）。次いで制御モジュール１５２は、ゲームコンソールが新しい情報を求めてシステム１０４をポーリングするか、それともゲームコンソールがシステム１０４をポーリングすることなく、動作３４４で表示を送信してから一定時間間隔が経過したかに基づいて続行する。ゲームコンソールがシステム１０４をポーリングする場合、制御モジュール１５２は、ポーリングによって要求された情報を取り出し（動作３４６）、取り出した情報をゲームコンソールに送信する（動作３４８）。次に情報を通知キューから除去する（動作３５０）。しかし、一定の時間間隔が経過した場合、間隔を広げ（動作３５２）、制御モジュール１５２は表示を再送信する（動作３４４）。制御モジュール１５２は、送信する表示ごとに別々の（すなわち、システム１０４にログインするユーザごとに送信する表示ごとに１つの）時間間隔の数値を管理する。あるいはまた、制御モジュール１５２によって管理される時間間隔の数値は、複数の表示および／または複数のユーザによって共有することもできる。
【００６３】
図２を参照すると、１つまたは複数のリスト１２６、１２８、１３０、１３２のコピーをゲームコンソール１０２上にも格納することができる。あるいはまた、ネバーリスト１３２などの１つまたは複数のリストを単独でシステム１０４で管理し、ゲームコンソール１０２にコピーしない場合もある。リストのコピーをゲームコンソール１０２内に格納することにより、ユーザがシステム１０４にログインするたびにゲームコンソール１０２にダウンロードすべきデータ量を削減することができる。例えば、ゲームコンソール１０２が、ユーザの友人のすべてのリストをユーザに表示し、ユーザがリストをブラウズし、リストを修正することなどを可能にしたい場合がある。友人リスト１２６のコピーをゲームコンソール１０２上に管理することにより、ゲームコンソールは、ユーザがリストを要求するごとに友人リストの内容をシステム１０４からダウンロードする必要がない。リストをゲームコンソール１０２のハードドライブに保存することなどにより、ゲームコンソール１０２上に格納したリストを永続的に格納することができる。
【００６４】
リストの複数のコピーを様々な位置で（例えば、プロファイル記憶１２４とゲームコンソール１０２上に）管理するとき、その複数のコピーを同期し続けるために配慮を払うべきである。例示の実施形態では、この同期が、リストバージョン番号を使用して実施される。ゲームコンソール１０２上に格納すべき各リストは、それに関連するバージョン番号を有する。このバージョン番号は、リストが変更されるごとにインクリメントされる。ユーザがシステム１０４にログインすると、ゲームコンソール１０２は、そのユーザに関して格納しているリストのバージョンをプロファイル記憶１２４内に格納された対応するリストのバージョンに照らし合わせてチェックする。バージョンが同一である場合、変更を行う必要はない。しかし、プロファイル記憶１２４内のリストのバージョンがゲームコンソール１０２上のリストのバージョンと一致しない場合、ゲームコンソール１０２上に格納されたリストのコピーが、プロファイル記憶１２４内に格納されたリストのコピーと同一となるように変更される。この変更は、制御モジュール１３４がリスト全体をゲームコンソール１０２に送信して、ゲームコンソール１０２上のリストの前のバージョンを置換する方式、あるいはまたシステム１０４がバージョンごとの変更の記録（例えば、リストと共にプロファイル記憶１２４内に格納された記録）を管理して制御モジュール１３４がリストに対する変更だけをゲームコンソール１０２に送る方式など、様々な方式で実施することができる。
【００６５】
単一のプレゼンスサーバ１２０と単一の通知サーバ１２２だけを図２に示したが、本願発明のプレゼンスおよび通知システム１０４は複数のプレゼンスサーバ１２２と複数の通知サーバ１２４とを含むことができることに留意されたい。プレゼンスサーバ１２２の数は、通知サーバ１２４の数と同じ、あるいはまた異なったものとすることができる。
【００６６】
同じタイプの複数のサーバがシステム１０４に含まれると、ユーザを特定のサーバと関連付けるための機構が含まれる。例示の一実施形態では、この機構はユーザの識別子（例えば６４ビットユーザ識別子）のハッシュ値である。あるいは、ユーザが現在使用しているゲームコンソールのゲームコンソール識別子、ユーザの家庭にあるゲームコンソールのゲームコンソール識別子、（例えば現在プレイ中のゲームの）ゲームタイトル識別子、（例えば現在プレイ中のゲームの）ゲーム製造業者識別子など、ユーザに関連する１つまたは複数の他のデータまたは識別子に基づいてハッシュ値を生成することもできる。これらの他の複数のデータは個々に使用することができ、あるいはまた（相互におよび／またはユーザの識別子と）組み合わせることもできる。複数の識別子を組み合わせる場合、様々な方式（例えば、連結する、足し合わせる、乗算するなど）のうちのいかなる方式でも組み合わせることができる。
【００６７】
ハッシュ値を生成するのに、多種多様な従来のハッシング機能のいずれも使用することができる。一般に、ハッシング機能は、入力値よりも小さい値の範囲にわたって出力値を生成するように動作する。したがって、例えば、（最大２６４人の異なるユーザを一意的に識別するのに使用することができる）６４ビットユーザ識別子を、１から３０００の範囲の出力値にハッシュすることができる。ハッシュ出力値の範囲は変動する可能性があり、一実施形態では、システム１０４が含むと予想される（場合によっては、それによって将来の拡張が可能となる）特定のタイプの大部分のサーバに対して等しくなるように設計される。
【００６８】
ハッシュ出力値により、サーバのうちの、ユーザが対応する特定の１つ、すなわちユーザ情報が管理される特定のサーバが識別される。各サーバは、１つの特定のハッシュ出力値と関連付けることができ、または複数のハッシュ出力値と関連付けることもできる。例えば、ハッシュ出力値が１から３０００の範囲であり、かつ当初は３つのプレゼンスサーバがシステム１０４内に存在する場合、１から１０００の範囲のハッシュ出力値を、３つのサーバのうちの第１のサーバに対応させることができ、１００１から２０００の範囲の値を、３つのサーバのうちの第２のサーバに対応させることができ、２００１から３０００の範囲の値を、３つのサーバのうちの第３のサーバに対応させることができる。ハッシュ出力値は、多種多様な方式のうちのいずれの方式でもサーバに割り当てることができ、かつ連続する数値の範囲である必要はない。追加のプレゼンスサーバを後にシステム１０４に追加する場合、プレゼンスサーバに割り当てられたハッシュ出力値をその後変更することができる。例えば、３つの追加のプレゼンスサーバがシステム１０４に追加される（合計でプレゼンスサーバが６個となる）場合、１から５００の範囲のハッシュ出力値を、６個のサーバのうちの第１のサーバに対応させることができ、５０１から１０００の範囲の値を、６個のサーバのうちの第２のサーバに対応させることができ、１００１から１５００の範囲の値を、６個のサーバのうちの第３のサーバに対応させる等することができる。
【００６９】
ユーザ情報がどこに格納されているかを判定するために、複数のプレゼンスサーバ１２０のうちの特定の１つを識別する必要があるときはいつでも、ハッシュ機能がユーザ識別子（またはユーザに関連する他のデータ）に適用され、ハッシュ出力値に基づいて、対応するプレゼンスサーバ１２０が識別される。ゲームコンソールからのデータを受信し、プレゼンスサーバ１２０のうち、対応するユーザ情報が格納されているプレゼンスサーバ１２０を識別するために、別のサーバなどの追加の装置（図２には図示せず）をシステム１０４に含めることができる。
【００７０】
同様に、ユーザ情報に対応する通知キューがどこに格納されているかを判定するために、複数の通知サーバ１２２のうちの特定の１つを識別する必要があるときはいつでも、機能がユーザ識別子（またはユーザに関連する他のデータ）に適用され、ハッシュ出力値に基づいて、対応する通知サーバ１２２が識別される。この計算は例えば、プレゼンスサーバ１２０のうちの１つなど、通知キューがどこに格納されているかを識別することが必要となる装置上で実施することができる。
【００７１】
複数のプレゼンスサーバ１２０のうちの１つを識別するのに使用するハッシング機能は、複数の通知サーバ１２２のうちの１つを識別するのに使用するハッシング機能と同じ、あるいはまた異なったものとすることができる。例示の一実施形態では、２つの異なるハッシュ機能を使用して、２つの相異なる値（一方はプレゼンスサーバ１２０のうちの１つを識別するため、他方は通知サーバ１２２のうちの１つを識別するため）を生成することができ、これによって出力ハッシュ値を別々に調整する（ｓｃａｌｅ）ことが可能となり、通知サーバの数とプレゼンスサーバの数を相異なるようにすることができる。
【００７２】
複数のプレゼンスサーバ１２０が存在する場合は、これらのプレゼンスサーバは、相互に情報を通信する必要がある可能性がある。例えば、特定のユーザのステータスが変化した場合、その特定のユーザの情報を管理する特定のプレゼンスサーバ１２０の制御モジュール１３４は、特定のユーザの情報にステータスの変化について書き込むユーザに関する情報を管理する他のプレゼンスサーバ１２０の各々に通知する。制御モジュール１３４により、これらの他のプレゼンスサーバ１２０の各々の制御モジュール１３４に、ステータスの変化を通知するメッセージが送信される。特定のユーザの情報に書き込む複数のユーザが同じプレゼンスサーバ１２０で管理される場合、そのプレゼンスサーバ１２０に送信する必要があるのは、単一のメッセージだけである。あるいはまた、いかなるプレゼンスサーバ１２０に管理されるかに関わらず、各ユーザに対して異なるメッセージを送信することもできる。
【００７３】
図１および２には単一のプレゼンスおよび通知システム１０４のみを示したが、これに代えてこのような複数のシステム１０４をゲームコンソール１０２にアクセス可能とすることもできる。複数のシステム１０４は独立に動作することができ、あるいはまたシステム１０４のユーザが別のシステム１０４のユーザの情報に書き込むことが可能となるよう相互に通信することもできる。
【００７４】
ゲームコンソール１０２とプレゼンスおよび通知システム１０４の間で通信されるメッセージは、多種多様な形式のうちのいずれの形式とすることもできる。例示される実施形態では、ゲームコンソール１０２とシステム１０４の間で通信することができる１組のコマンドは、アライブ、同期、ニックネーム、リフレッシュ、追加、削除、ブロック化、非ブロック化、受諾、拒絶、招待、招待回答、招待取消し、キュー項目削除、デキュー、デッドユーザの各コマンドのうち１つまたは複数を含む。表Ｉ〜ＸＸＩを参照しながら、これらのコマンドを以下でより詳細に説明する。
【００７５】
表１に、表ＩＩ〜ＸＸＩＩに示すすべてのコマンドに対して現れるヘッダの内容を示す。
【００７６】
【表１】
2004127247.tif 000003
【００７７】
表ＩＩおよびＩＩＩに、（ゲームコンソールが送信する）アライブコマンドと（プレゼンスおよび通知システムが送信する）応答を示す。アライブコマンドはユーザログイン後に直ちに送信され、アライブコマンドによってプレゼンスおよび通知システムにおけるユーザのプレゼンスが確立される（かつ、ユーザの以前のその他のいかなるログインも非活動化する）。同期していない場合、更新後の友人（バディ）リストとミュートリストが応答として送信される。
【００７８】
【表２】
2004127247.tif 000004
【００７９】
【表３】
2004127247.tif 000005
【００８０】
表ＩＶおよびＶに、（ゲームコンソールが送信する）同期コマンドと、（プレゼンスおよび通知システムが送信する）応答を示す。同期コマンドは、プレゼンスおよび通知システムと同期していないとゲームコンソールがみなすされ、ゲームコンソールによって送信される。
【００８１】
【表４】
2004127247.tif 000006
【００８２】
【表５】
2004127247.tif 000007
【００８３】
表ＶＩに、ゲームコンソールのユーザのニックネームを変更するためにゲームコンソールが送信するニックネームコマンドを示す。
【００８４】
【表６】
2004127247.tif 000008
【００８５】
表ＶＩＩに、通知キュー内の項目をリフレッシュするためにゲームコンソールが送信する（例えば、プレゼンスサーバに、ログインした友人の各々についての現ステータス情報において通知キューを再実装させ、あるいはオプションで、ユーザの友人リストからの友人が現在ログインしているか否かをプレゼンスサーバに再チェックさせる）リフレッシュコマンドを示す。
【００８６】
【表７】
2004127247.tif 000009
【００８７】
表ＶＩＩＩに、友人（バディ）とするため別のユーザを招待するためにゲームコンソールが送信する追加コマンドを示す。このコマンドは、友人のユーザ識別子、またはそのユーザに関連するアカウント名（例えばユーザフレンドリな名前）を識別することができる。
【００８８】
【表８】
2004127247.tif 000010
【００８９】
表ＩＸに、ユーザの友人リストから友人（バディ）を削除し、友人の友人リストからユーザを削除するためにゲームコンソールが送信する削除コマンドを示す。
【００９０】
【表９】
2004127247.tif 000011
【００９１】
表Ｘに、ユーザをミュートリストに追加するためにゲームコンソールが送信するブロックコマンドを示す。
【００９２】
【表１０】
2004127247.tif 000012
【００９３】
表ＸＩに、ミュートリストからユーザを削除するためにゲームコンソールが送信する非ブロック化コマンドを示す。Ｍｕｔｅ　ＩＤを０にセットすることにより、ミュートリストからすべてのユーザを削除することができる。
【００９４】
【表１１】
2004127247.tif 000013
【００９５】
表ＸＩＩに、別のユーザの友人（バディ）とするための招待を受諾するためにゲームコンソールが送信する受諾コマンドを示す。
【００９６】
【表１２】
2004127247.tif 000014
【００９７】
表ＸＩＩＩに、別のユーザの友人（バディ）となるための招待を拒絶するためにゲームコンソールが送信する拒絶コマンドを示す。
【００９８】
【表１３】
2004127247.tif 000015
【００９９】
表ＸＩＶに、ホストするゲームセッションに友人（バディ）を加えるための招待するためにゲームコンソールが送信する招待コマンドを示す。
【０１００】
【表１４】
2004127247.tif 000016
【０１０１】
表ＸＶに、ホストするゲームセッションに加えるための招待に回答するためにゲームコンソールが送信する招待回答コマンドを示す。
【０１０２】
【表１５】
2004127247.tif 000017
【０１０３】
表ＸＶＩに、先に送信した招待を取り消すためにゲームコンソールが送信する招待取消しコマンドを示す。
【０１０４】
【表１６】
2004127247.tif 000018
【０１０５】
表ＸＶＩＩに、１つまたは複数の通知キューエントリを削除するためにゲームコンソールが送信するキュー項目削除コマンドを示す。
【０１０６】
【表１７】
2004127247.tif 000019
【０１０７】
表ＸＶＩＩＩおよびＸＩＸに、リストコマンドおよび応答を示す。リストコマンドは、通知キュー内の項目を、キューから削除することなくリストするためにゲームコンソールによって送信される。応答は、プレゼンスおよび通知システムによってゲームコンソールに送信され、かつ応答は、要求されたデータを含む。
【０１０８】
【表１８】
2004127247.tif 000020
【０１０９】
【表１９】
2004127247.tif 000021
【０１１０】
表ＸＸおよびＸＸＩに、デキューコマンドおよび応答を示す。デキューコマンドは、通知キュー内の項目をリストし、キューからそれらを削除するためにゲームコンソールによって送信される。応答は、プレゼンスおよび通知システムによってゲームコンソールに送信され、要求されたデータを含み、要求されたデータはキューから削除される。
【０１１１】
【表２０】
2004127247.tif 000022
【０１１２】
【表２１】
2004127247.tif 000023
【０１１３】
表ＸＸＩＩに、デッドユーザコマンドを示す。デッドユーザコマンドは、コンソール上のユーザのセットを変更するために（例えば、特定のユーザがもはやコンソールにいないことを示すために）ゲームコンソールによって送信される。
【０１１４】
【表２２】
2004127247.tif 000024
【０１１５】
表ＸＸＩＩＩに、プレゼンスおよび通知システムがゲームコンソール（または他のクライアント装置）に関するデータを有することをそのゲームコンソールに通知するために、プレゼンスおよび通知システムによってそのゲームコンソールに送信される例示されるような表示またはチクルを示す。
【０１１６】
【表２３】
2004127247.tif 000025
【０１１７】
図７は、例示としてオンラインゲーム環境４００を示すブロック図である。複数のゲームコンソール４０２（１）、４０２（２）、．．．、４０２（ｎ）が、ネットワーク４０６を介してセキュリティゲートウェイ４０４に結合する。各ゲームコンソール４０２は例えば、図１または図２のゲームコンソール１０２とすることができる。ネットワーク４０６は、様々な従来型データ通信ネットワークのうちの任意の１つまたは複数を表す。ネットワーク４０６は、一般にパケット交換ネットワークを含むが、回線交換ネットワークも含むことができる。ネットワーク４０６は、有線部分および／または無線部分を含むことができる。例示の一実施形態では、ネットワーク４０６はインターネットを含み、あるいはオプションで、１つまたは複数のローカルエリアネットワーク（ＬＡＮ）および／または広域ネットワーク（ＷＡＮ）を含むことができる。ネットワーク４０６の少なくとも一部は公衆ネットワークである。公衆ネットワークとは、公にアクセス可能なネットワークを指す。実質上、誰でも公衆ネットワークにアクセスすることができる。
【０１１８】
ある状況では、ネットワーク４０６は、ゲームコンソール４０２とセキュリティゲートウェイ４０４との間に位置するルーチング装置を備えるＬＡＮ（例えばホームネットワーク）を含む。このルーチング装置はネットワークアドレス変換（ＮＡＴ）を実行することができ、ここでＮＡＴはＬＡＮ上の複数の装置がインターネット上の同じＩＰアドレスを共用することを可能にし、および悪意のあるユーザまたは害を及ぼすユーザによるインターネットを介したアクセスからＬＡＮ上の装置を保護するためのファイアウォールとしても動作する。
【０１１９】
セキュリティゲートウェイ４０４は、公衆ネットワーク４０６とプライベートネットワーク４０８の間のゲートウェイとして動作する。プライベートネットワーク４０８は、ローカルエリアネットワークなど、多種多様な従来型ネットワークのうちのいずれとすることもできる。プライベートネットワーク４０８や、以下でより詳細に説明するその他の装置は、保護ゾーンとして動作するデータセンタ４１０内にある。データセンタ４１０は、高信頼（ｔｒｕｓｔｅｄ）通信を介して通信する高信頼装置から構成される。したがって、保護ゾーン４１０内では暗号化および認証が不要である。ネットワーク４０８のプライベートな性質とは、ネットワーク４０８のアクセス可能性が制限されること、すなわちネットワーク４０８へのアクセスが、（例えば、データセンタ４１０の所有者またはオペレータによって）ある個人群だけに制限されることを指す。
【０１２０】
セキュリティゲートウェイ４０４は、１つまたは複数のセキュリティゲートウェイコンピューティング装置のクラスタである。これらのセキュリティゲートウェイコンピューティング装置は、合わせてセキュリティゲートウェイ４０４を実装する。オプションで、セキュリティゲートウェイ４０４は、１つまたは複数の従来型ロードバランシング装置を含むことができ、この装置はセキュリティゲートウェイコンピューティング装置が処理すべき要求をそれらのコンピューティング装置のうちの適切な各コンピューティング装置に向けて送るように動作する。宛先指定またはロードバランシングは、様々なセキュリティゲートウェイコンピューティング装置に対する負荷がほぼ等しくなるように平衡を取ることを企図する手法で（あるいは、何らかの他の基準に従って）実施される。
【０１２１】
データセンタ４１０内には、１つまたは複数の監視サーバ４１２、１つまたは複数のプレンゼンスおよび通知フロントドア４１４、１つまたは複数のプレゼンスサーバ４１６、１つまたは複数の通知サーバ４１８、およびプロファイル記憶４２８（合わせてプレンゼンスおよび通知サービスまたはシステム４３０を実施する）、１つまたは複数のマッチフロントドア４２０および１つまたは複数のマッチサーバ４２２（合わせてマッチサービスを実施する）、ならびに１つまたは複数の統計フロントドア４２４および１つまたは複数の統計サーバ４２６（合わせて統計サービスを実施する）が存在する。サーバ４１６、４１８、４２２、および４２６は、ゲームコンソール４０２にサービスを提供し、したがってそれらのサーバをサービス装置と呼ぶことができる。サーバ４１６、４１８、４２２、および４２６のうち１つまたは複数に加え、および／またはそれらに代えて、他のサービス装置を含めることもできる。さらに、図７には１つのデータセンタのみを示しているが、これに代えてゲームコンソール４０２と通信することができる複数のデータセンタが存在するようにすることもできる。これらのデータセンタは、独立に動作することができ、または（例えば、ゲームコンソール１０２に利用可能な１つの大規模データセンタとするために）集合して動作することができる。
【０１２２】
ゲームコンソール４０２はデータセンタ４１０から遠隔に位置し、ネットワーク４０６を介してデータセンタ４１０にアクセスする。データセンタ内の１つまたは複数の装置と通信することを要望するゲームコンソール４０２は、データセンタにログインし、コンソール４０２とセキュリティゲートウェイ４０４との間で安全な（ｓｅｃｕｒｅ）通信チャネルを確立する。ゲームコンソール４０２とセキュリティゲートウェイ４０４は、行き来するデータパケットを暗号化および認証し、それによって、暗号を破壊せずにデータパケットを取り込んだりコピーしたりすることが可能な他の装置によって理解されることなく、両者の間でデータパケットを安全に伝送することが可能となる。ゲームコンソール４０２からセキュリティゲートウェイ４０４に通信され、またはセキュリティゲートウェイ４０４からゲームコンソール４０２に通信される各データパケットには、データを埋め込むことができる。埋込みデータは、パケットのコンテンツまたはデータコンテンツと呼ばれる。パケットタイプ（例えば生存通知パケット）に基づいて、パケット内に追加の情報を独自に含めることもできる。
【０１２３】
コンソール４０２とセキュリティゲートウェイ４０４の間の安全な通信チャネルは、セキュリティチケットに基づく。コンソール４０２は、コンソール４０２自体と、コンソール４０２の現ユーザの正当性を鍵配布センタ４２８に対して証明し、鍵配布センタ４２８からセキュリティチケットを取得する。次いでコンソール４０２はこのセキュリティチケットを使用して、セキュリティゲートウェイ４０４と安全な通信チャネルを確立する。セキュリティゲートウェイ４０４との安全な通信チャネルを確立する際、ゲームコンソール４０２とセキュリティゲートウェイ４０４はそれ自体の正当性を相互に証明し合い、その特定のゲームコンソール４０２とセキュリティゲートウェイ４０４にだけ知られるセッションセキュリティ鍵を確立する。このセッションセキュリティ鍵を使用して、ゲームコンソール４０２とセキュリティゲートウェイクラスタ４０４の間で転送されるデータが暗号化され、したがって他の装置（他のゲームコンソール４０２も含む）はデータを読み取ることができない。セッションセキュリティ鍵はまた、データパケットがそこから来たと主張するセキュリティゲートウェイ４０４またはゲームコンソール４０２から来たものとしてデータパケットを認証するのにも使用される。したがって、このようなセッションセキュリティ鍵を使用して、セキュリティゲートウェイ４０４と様々なゲームコンソール４０２の間で安全な通信チャネルを確立することができる。
【０１２４】
安全な通信チャネルをゲームコンソール４０２とセキュリティゲートウェイ４０４の間で確立した後、暗号化データパケットをその両者の間で安全に伝送することができる。ゲームコンソール４０２がデータセンタ４１０内の特定のサービス装置にデータを送信したいとき、ゲームコンソール４０２はデータを暗号化し、それをセキュリティゲートウェイ４０４に送信し、データパケットがターゲットとする特定のサービス装置に転送するように要求する。セキュリティゲートウェイ４０４はデータパケットを受信し、データパケットを認証および暗号化解除した後、プライベートネットワーク４０８を介して適切なサービスに送信すべき他のメッセージ内に、パケットのデータ内容をカプセル化する。セキュリティゲートウェイ４０４は、データパケットがターゲットとする要求されたサービスに基づいて、メッセージに対する適切なサービスを決定する。
【０１２５】
同様に、データセンタ４１０内のサービス装置がデータをゲームコンソール４０２に通信したいとき、データセンタは、ゲームコンソール４０２に送信すべきデータ内容と、データ内容を送信すべき特定のゲームコンソール４０２の表示とを含むメッセージを、プライベートネットワーク４０８を介してセキュリティゲートウェイ４０４に送信する。セキュリティゲートウェイ４０４は、データパケットにデータ内容を埋め込み、次いで、データパケットを暗号化解除することができるのがその特定のゲームコンソール４０２だけとなるようにデータパケットを暗号化し、さらに、データパケットをセキュリティゲートウェイ４０４から来たものとして認証する。
【０１２６】
本明細書では主に、セキュリティゲートウェイ４０４とゲームコンソール４０２の間で暗号化データパケットを通信するものとして説明したが、これに代えて一部のデータパケットを部分的に暗号化する（データパケットの一部を暗号化し、その他の部分を暗号化しない）こともできる。データパケットのどの部分を暗号化し、どの部分を暗号化しないかは、データセンタ４１０および／またはゲームコンソール４０２の設計者の要望に基づいて変化する可能性がある。例えば設計者は、コンソール４０２のユーザが相互に対話することができるようにコンソール４０２の間で音声データを通信することを可能にすることを選ぶことができる。設計者はさらに、音声データを非暗号化し、パケット内の任意の他のデータを暗号化することを可能にすることを選ぶことができる。加えて、別の代替方法では、データパケットが暗号化された部分を有さない（すなわち、データパケット全体が非暗号化される）ようにすることもできる。データパケットが非暗号化され、または一部だけが暗号化される場合であっても、データパケットのすべてを依然として認証できることに留意されたい。
【０１２７】
セキュリティゲートウェイ４０４内の各セキュリティゲートウェイ装置は、典型的には１つまたは複数のゲームコンソール４０２との安全な通信チャネルを担い、したがって各セキュリティゲートウェイ装置は、１つまたは複数のゲームコンソールを管理し、または扱うことを担うものとみなすことができる。様々なセキュリティゲートウェイ装置が相互に通信することができ、相互にメッセージを通信することができる。例えば、セキュリティゲートウェイ装置は、管理を分担しないゲームコンソールにデータパケットを送信する必要がある場合、そのゲームコンソールに送信すべきデータを有する他のセキュリティゲートウェイ装置すべてにメッセージを送信することができる。ゲームコンソールを管理することを担うセキュリティゲートウェイ装置がこのメッセージを受信し、適切なデータをそのゲームコンソールに送信する。あるいはまた、セキュリティゲートウェイ装置は、どのセキュリティゲートウェイ装置によってどのゲームコンソールが扱われているかを認識することができる。これは、各セキュリティゲートウェイ装置が他のセキュリティゲートウェイ装置で扱われるゲームコンソールの表を管理するといったように明示的なものとすることができ、あるいはまた、どのセキュリティゲートウェイ装置が特定のゲームコンソールを担うかをゲームコンソールの識別子に基づいて判定するといったように暗黙的とすることもできる。
【０１２８】
監視サーバ４１２は、使用不能なゲームコンソール４０２またはセキュリティゲートウェイ４０４の使用不能なセキュリティゲートウェイ装置をデータセンタ４１０内の装置に通知するように動作する。ゲームコンソール４０２は、ハードウェアまたはソフトウェアの障害、コンソールがデータセンタ４１０からログアウトすることなく電源遮断されること、コンソール４０２へのネットワーク接続ケーブルがコンソール４０２から切断されること、その他のネットワーク問題（例えばコンソール４０２が接続されているＬＡＮが誤動作すること）などの様々な理由で使用不能となる可能性がある。同様に、セキュリティゲートウェイ４０４のセキュリティゲートウェイ装置は、ハードウェアまたはソフトウェアの障害、装置への電源の遮断、装置へのネットワーク接続ケーブルの装置からの切断、その他のネットワーク問題など様々な理由で使用不能となる可能性がある。
【０１２９】
セキュリティゲートウェイ４０４内の各セキュリティゲートウェイ装置は、セキュリティゲートウェイ装置のうちの１つが使用不能になると検出を行う１つまたは複数の監視サーバ４１２によって監視される。セキュリティゲートウェイ装置が使用不能となった場合、監視サーバ４１２はデータセンタ４１０内の他の各装置（サーバ、フロントドアなど）に、セキュリティゲートウェイ装置がもはや利用可能ではないというメッセージを送信する。他の各装置は、適合を確認すると、この情報に基づいて動作することができる（例えば、セキュリティゲートウェイ装置によって管理される特定のゲームコンソールがもはやデータセンタ４１０と通信していないと想定し、それに応じて様々なクリーンアップオペレーションを実施することができる）。あるいはまた、一定の装置だけ（例えば、セキュリティゲートウェイ装置が利用可能か否かに関係する装置だけ）が、監視サーバ４１２からそのようなメッセージを受信することができる。
【０１３０】
セキュリティゲートウェイ４０４は、個々のゲームコンソール４０２を監視し、ゲームコンソール４０２のうちのいずれが使用不能となったかを検出する。セキュリティゲートウェイ４０４は、ゲームコンソールがもはや利用可能ではないことを検出すると、使用不能なゲームコンソールを識別する監視サーバ４１２にメッセージを送信する。それに応答して、監視サーバ４１２は、ゲームコンソールがもはや利用可能ではないというメッセージを、データセンタ４１０内の他の各装置に（または選択した装置だけに）送信する。次いで他の各装置は、適合を確認すると、この情報に基づいて動作することができる。
【０１３１】
プレゼンスおよび通知システムまたはサービス４３０は例えば、図１または２のシステム１０４でよい。プレゼンスサーバ４１６は、オンラインゲームを求めてデータセンタ４１０にログインした所与のユーザのステータスまたはプレゼンスに関するデータを保持および処理する。通知サーバ４１８は、データセンタ４１０にログインしたプレーヤ宛の発信メッセージの複数の通知キューを管理する。プレンゼンスおよび通知フロントドア４１４は、セキュリティゲートウェイ４０４とサーバ４１６および４１８との間の仲介として動作する１つまたは複数のサーバ装置である。フロントドア４１４として動作する複数のサーバ装置間の負荷の平衡を取るために、１つまたは複数のロードバランシング装置（図示せず）をプレンゼンスおよび通知フロントドア４１４に含めることができる。セキュリティゲートウェイ４０４は、サーバ４１６および４１８に関するメッセージをフロントドア４１４に通信し、フロントドア４１４は、メッセージを通信すべき特定のサーバ４１６または特定のサーバ４１８を識別する。フロントドア４１４を使用することにより、どのユーザに関するデータを管理することに関してどのサーバが担うのかなど、サーバ４１６および４１８の実際の実装は、セキュリティゲートウェイ４０４より抽出されることとなる。セキュリティゲートウェイ４０４は、プレンゼンスおよび通知サービスをターゲットとするメッセージをプレンゼンスおよび通知フロントドア４１４に単に転送することができ、かつフロントドア４１４に従って、サーバ４１６およびサーバ４１８のうちの適切な１つにメッセージをルーチングすることができる。
【０１３２】
マッチサーバ４２２は、オンラインプレーヤを相互にマッチングすることに関するデータを保持および処理する。オンラインユーザは、ゲームの様々な特徴（例えば、フットボールゲームがプレイされる位置、ゲームを日中にプレイすべきか、それとも夜間にプレイすべきか、ユーザのスキルレベルなど）に加えて、プレイすることができるゲームを宣伝することができる。次いで、様々なオンラインユーザがゲームを一緒にプレイするようにマッチングさせるための基礎として、これらの様々な特徴を使用することができる。マッチフロントドア４２０は、１つまたは複数のサーバ装置（オプションで、ロードバランシング装置）を含み、サーバ４１６およびサーバ４１８を抽出してフロントドア４１４とするのと同様の手法で、セキュリティゲートウェイ４０４からマッチサーバ４２２を抽出するように動作する。
【０１３３】
統計サーバ４２６は、オンラインゲームについての様々な統計に関するデータを保持および処理する。使用する特定の統計は、ゲーム設計者の要望に基づいて変化する可能性がある（例えば、トップ１０のスコアまたはタイム、ゲームのすべてのオンラインプレーヤについての世界ランキング、最も多くのアイテムを見つけたユーザ、または最も多くの時間をプレイに費したユーザのリストなど）。統計フロントドア４２６は、１つまたは複数のサーバ装置（およびオプションで、ロードバランシング装置）を含み、フロントドア４１４がサーバ４１６およびサーバ４１８を抽出するのと同様に、セキュリティゲートウェイ４０４から統計サーバ４２６を抽出するように動作する。
【０１３４】
したがって、セキュリティゲートウェイ４０４が、信頼されない公衆ネットワーク４０６から、データセンタ４１０の保護ゾーン内の装置をシールドするように動作することがわかる。データセンタ４１０内のすべての装置は信頼性があるので、データセンタ４１０の保護ゾーン内の通信は暗号化する必要はない。しかし、データセンタ４１０内の装置からゲームコンソール４０２に通信すべき情報は暗号化され、その情報は、セキュリティゲートウェイクラスタ４０４を通過して、セキュリティゲートウェイクラスタ４０４でその情報がターゲットとするゲームコンソール４０２によってのみ暗号化解除することができる。
【０１３５】
図８に、本明細書で説明する手法を実装するのに使用することができる一般的コンピュータ環境５００を示す。コンピュータ環境５００は、コンピューティング環境の単なる一例であり、コンピュータやネットワークアーキテクチャの使用法または機能の範囲に関して何らかの制限を提案するものではない。コンピュータ環境５００を、例示のコンピュータ環境５００に示す構成要素のうちのいずれか１つまたはそれらの組合せに依存しまたはこれらを要件とするものと解釈すべきではない。
【０１３６】
コンピュータ環境５００は、コンピュータ５０２の形態の汎用コンピューティング装置を含む。コンピュータ５０２は例えば、図１のプレゼンスおよび通知システム１０４、図２のプレゼンスサーバ１２０、図２の通知サーバ１２２、図２のプロファイル記憶、図７のセキュリティゲートウェイ４０４、図７のサーバ４１２、４１６、４１８、４２２、および／または４２６、図７のプロファイル記憶４２８、あるいは図７のフロントドア４１４、４２０、または４２４とすることができる。コンピュータ５０２の構成要素は、１つまたは複数のプロセッサまたは処理装置５０４（オプションで暗号プロセッサまたはコプロセッサを含む）と、システムメモリ５０６と、プロセッサ５０４を含む様々なシステム構成要素をシステムメモリ５０６に結合するシステムバス５０８とを含むことができるが、これに限定されない。
【０１３７】
システムバス５０８は、メモリバスまたはメモリコントローラと、周辺バスと、アクセラレーテッドグラフィックスポートと、様々なバスアーキテクチャのうちのいずれかを用いるプロセッサバスまたはローカルバスとを含むいくつかのタイプのバス構造のうちのいずれか１つまたは複数を表す。例えば、そのようなアーキテクチャは、ＩＳＡ（Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ　Ｃｈａｎｎｅｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ　ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ　Ｅｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとも呼ばれるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含むことができる。
【０１３８】
コンピュータ５０２は、一般に様々なコンピュータ読み取り可能媒体を含む。そのような媒体は、コンピュータ５０２がアクセス可能である利用可能ないかなる媒体でもよく、揮発性媒体と不揮発性媒体の両方、取外し可能媒体と固定媒体の両方を含む。
【０１３９】
システムメモリ５０６は、ランダムアクセスメモリ（ＲＡＭ）５１０などの揮発性メモリ、および／または読取り専用メモリ（ＲＯＭ）５１２などの不揮発性メモリの形態のコンピュータ読み取り可能媒体を含む。起動時などにコンピュータ５０２内の要素間で情報の転送を支援する基本ルーチンを含む基本入出力システム（ＢＩＯＳ）５１４が、ＲＯＭ　５１２内に格納される。ＲＡＭ　５１０は通常、処理装置５０４が直ちにアクセス可能であり、かつ／または処理装置５０４が現在操作しているデータおよび／またはプログラムモジュールを含む。
【０１４０】
コンピュータ５０２はまた、他の取外し可能／固定な、揮発性／不揮発性コンピュータ記憶媒体も含むことができる。例えば、図７に、固定、不揮発性磁気媒体（図示せず）を読み書きするハードディスクドライブ５１６と、取外し可能、不揮発性磁気ディスク５２０（例えば「フロッピィディスク」）を読み書きする磁気ディスクドライブ５１８と、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などの取外し可能、不揮発性光ディスク５２４を読み書きする光ディスクドライブ５２２とを示す。ハードディスクドライブ５１６、磁気ディスクドライブ５１８、および光ディスクドライブ５２２はそれぞれ、１つまたは複数のデータ媒体インターフェース５２６によってシステムバス５０８に接続される。あるいは、１つまたは複数のインターフェース（図示せず）によってシステムバス５０８にハードディスクドライブ５１６、磁気ディスクドライブ５１８、および光ディスクドライブ５２２を接続することもできる。
【０１４１】
ディスクドライブとその関連するコンピュータ記憶媒体は、コンピュータ５０２に対してコンピュータ読み取り可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を提供する。この例ではハードディスク５１６、取外し可能磁気ディスク５２０、および取外し可能光ディスク５２４を示すが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）、または他の光記憶装置、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）など、コンピュータによってアクセス可能な、データを格納することができる他のタイプのコンピュータ読み取り可能媒体も、この例示のコンピューティングシステムおよび環境を実装するのに利用できることを理解されたい。
【０１４２】
例えばオペレーティングシステム５２６、１つまたは複数のアプリケーションプログラム５２８、他のプログラムモジュール５３０、およびプログラムデータ５３２を含む任意の数のプログラムモジュールを、ハードディスク５１６、磁気ディスク５２０、光ディスク５２４、ＲＯＭ　５１２、および／またはＲＡＭ５１０上に格納することができる。このようなオペレーティングシステム５２６、１つまたは複数のアプリケーションプログラム５２８、他のプログラムモジュール５３０、およびプログラムデータ５３２はそれぞれ（またはそれらの何らかの組合せは）、分散ファイルシステムをサポートする常駐コンポーネントのすべてまたは一部を実装することができる。
【０１４３】
ユーザは、キーボード５３４やポインティングデバイス５３６（例えば「マウス」）などの入力装置を介してコンピュータ５０２にコマンドや情報を入力することができる。他の入力装置５３８（具体的には図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、シリアルポート、スキャナおよび／またはその他を含むことができる。これらの入力装置や他の入力装置は、システムバス５０８に結合される入出力インターフェース５４０を介して処理装置５０４に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することもできる。
【０１４４】
モニタ５４２または他のタイプのディスプレイ装置もまた、ビデオアダプタ５４４などのインターフェースを介してシステムバス５０８に接続することができる。モニタ５４２に加えて、他の出力周辺装置は、入出力インターフェース５４０を介してコンピュータ５０２に接続することができるスピーカ（図示せず）およびプリンタ５４６などの構成要素を含むことができる。
【０１４５】
コンピュータ５０２は、リモートコンピューティング装置５４８などの１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作することができる。例えば、リモートコンピューティング装置５４８は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピア装置または他の共通ネットワークノード、ゲームコンソールなどでよい。リモートコンピューティング装置５４８を、コンピュータ５０２に関して本明細書で説明した要素および機能のうちの多くまたはすべてを含むことができるポータブルコンピュータとして示す。
【０１４６】
コンピュータ５０２とリモートコンピュータ５４８の間の論理接続を、ローカルエリアネットワーク（ＬＡＮ）５５０と、一般的広域ネットワーク（ＷＡＮ）５５２として示す。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
【０１４７】
ＬＡＮネットワーキング環境で実装するとき、コンピュータ５０２は、ネットワークインターフェースまたはアダプタ５５４を介してローカルネットワーク５５０に接続される。ＷＡＮネットワーキング環境で実装するとき、コンピュータ５０２は通常、モデム５５６、または広域ネットワーク５５２を介して通信を確立する他の手段を含む。モデム５５６はコンピュータ５０２の内部でも外部でもよく、入出力インターフェース５４０または他の適切な機構を介してシステムバス５０８に接続することができる。図示するネットワーク接続は例であり、コンピュータ５０２と５４８の間の通信リンクを確立する他の手段も利用できることを理解されたい。
【０１４８】
コンピューティング環境５００と共に図示するようなネットワーク環境では、コンピュータ５０２に関して示したプログラムモジュールまたはその一部をリモートメモリ記憶装置に格納することができる。例えば、リモートアプリケーションプログラム５５８はリモートコンピュータ５４８のメモリ装置上に常駐する。本明細書の図では、アプリケーションプログラム、ならびにオペレーティングシステムなどの他の実行可能プログラムコンポーネントを別個のブロックとして図示するが、このようなプログラムおよびコンポーネントは、様々な時にコンピューティング装置５０２の様々な記憶構成要素内に常駐し、コンピュータのデータプロセッサによって実行されることを理解されたい。
【０１４９】
１つまたは複数のコンピュータまたは他の装置によって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的状況で、様々なモジュールおよび技法を本明細書で説明することができる。一般に、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。一般に、プログラムモジュールの機能を様々な実施形態で要望の通りに組み合わせ、または分散させることができる。
【０１５０】
これらのモジュールおよび技法の実施形態は、何らかの形態のコンピュータ読み取り可能媒体を介して格納し、または伝送することができる。コンピュータ読み取り可能媒体は、コンピュータがアクセスすることができる、利用可能な媒体のうちのいずれでもよい。例えば、限定はしないが、コンピュータ読み取り可能媒体は、「コンピュータ記憶媒体」および「通信媒体」を含むことができる。
【０１５１】
「コンピュータ記憶媒体」は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するためのなんらかの方法または技術で実装された揮発性および不揮発性の取外し可能および固定な媒体を含む。コンピュータ記憶媒体には、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）、または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータでアクセスすることができる他のいかなる媒体も含まれる。
【０１５２】
「通信媒体」は一般に、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の移送機構などの被変調データ信号で具体化する。通信媒体はまた、いかなる情報送達媒体も含む。用語「被変調データ信号」とは、その特性集合のうちの１つまたは複数を有する信号、または情報を信号内に符号化するように変化する信号を意味する。例えば、限定はしないが、通信媒体には、配線式ネットワークまたは直接配線式接続などの配線式媒体、ならびに音響、無線周波数、赤外線、および他のワイヤレス媒体などのワイヤレス媒体が含まれる。上記のいずれの組合せもコンピュータ読み取り可能媒体の範囲内に含まれるべきである。
【０１５３】
図９に、ゲームコンソール１０２の機能構成要素をより詳細に示す。ゲームコンソール１０２は、中央演算処理装置（ＣＰＵ）６００と、フラッシュＲＯＭ（読取り専用メモリ）６０４、ＲＡＭ（ランダムアクセスメモリ）６０６、ハードディスクドライブ６０８、およびポータブルメディアドライブ６０９を含む様々なタイプのメモリへのプロセッサアクセスを容易にするメモリコントローラ６０２とを有する。ＣＰＵ　６００は、データを一時的に格納し、したがってメモリアクセスサイクル数を低減し、それによって処理速度およびスループットを向上させるレベル１キャッシュ６１０およびレベル２キャッシュ６１２を備える。
【０１５４】
ＣＰＵ　６００、メモリコントローラ６０２、および様々なメモリ装置は、シリアルバスおよびパラレルバス、メモリバス、周辺バス、ならびに様々なバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む１つまたは複数のバスを介して相互接続される。例えば、そのようなアーキテクチャは、ＩＳＡ（Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ　Ｃｈａｎｎｅｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ　ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ　Ｅｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとも呼ばれるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含むことができる。
【０１５５】
１つの適切な実施形態として、ＣＰＵ　６００、メモリコントローラ６０２、ＲＯＭ　６０４、およびＲＡＭ　６０６が共通モジュール６１４上に統合される。この実施形態では、ＲＯＭ　６０４は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスおよびＲＯＭバス（共に図示せず）を介してメモリコントローラ６０２に接続されるフラッシュＲＯＭとして構成される。ＲＡＭ　６０６は、メモリコントローラ６０２によって別々のバス（図示せず）を介して別々に制御される複数のＤＤＲ　ＳＤＲＡＭ（Ｄｏｕｂｌｅ　Ｄａｔａ　Ｒａｔｅ　Ｓｙｎｃｈｒｏｎｏｕｓ　Ｄｙｎａｍｉｃ　ＲＡＭ）として構成される。ハードディスクドライブ６０８およびポータブルメディアドライブ６０９は、ＰＣＩバスおよびＡＴＡ（ＡＴ　Ａｔｔａｃｈｍｅｎｔ）バス６１６を介してメモリコントローラに接続される。
【０１５６】
３Ｄグラフィックス処理装置６２０およびビデオエンコーダ６２２は、高速かつ高解像度のグラフィックス処理用のビデオ処理パイプラインを形成する。データは、グラフィックス処理装置６２０からデジタルビデオバス（図示せず）を介してビデオエンコーダ６２２に搬送される。オーディオ処理装置６２４およびオーディオコーデック（コーダ／デコーダ）６２６は、高忠実度かつステレオの処理を伴う、対応するオーディオ処理パイプラインを形成する。オーディオデータは、オーディオ処理装置６２４とオーディオコーデック６２６の間を通信リンク（図示せず）を介して搬送される。ビデオ／オーディオ処理パイプラインは、データをＡ／Ｖ（オーディオ／ビデオ）ポート６２８に出力し、テレビジョンまたは他のディスプレイに送る。図示する実施形態では、ビデオ／オーディオ処理構成要素６２０〜６２８は、モジュール６１４上に取り付けられる。
【０１５７】
モジュール６１４上には、ＵＳＢホストコントローラ６３０およびネットワークインターフェース６３２も実装される。ＵＳＢホストコントローラ６３０は、バス（例えばＰＣＩバス）を介してＣＰＵ　６００およびメモリコントローラ６０２に結合され、周辺コントローラ６３６（１）〜６３６（４）に対するホストとして働く。ネットワークインターフェース６３２は、ネットワーク（例えばインターネット、ホームネットワークなど）へのアクセスを提供し、イーサネット（登録商標）カード、モデム、モデム、Ｂｌｕｅｔｏｏｔｈモジュール、ケーブルモデムなどを含む多種多様な有線または無線のインターフェース構成要素のうちのいずれでもよい。
【０１５８】
ゲームコンソール１０２は、２つのデュアルコントローラポートサブアセンブリ６４０（１）および６４０（２）を有し、各サブアセンブリは２つのゲームコントローラ６３６（１）〜６３６（４）をサポートする。フロントパネルＩ／Ｏサブアセンブリ６４２は、電源ボタン６３１およびメディアドライブイジェクトボタン６３３の機能と、ＬＥＤ（発光ダイオード）またはゲームコンソールの外面上に露出する他の標識の機能とをサポートする。サブアセンブリ６４０（１）、６４０（２）、および６４２は、１つまたは複数のケーブルアセンブリ６４４を介してモジュール６１４に結合される。
【０１５９】
８つのメモリユニット６３４（１）〜６３４（８）が、４つのコントローラ６３６（１）〜６３６（４）に接続可能であるものとして図示されている。すなわち、各コントローラについて２つのメモリユニットである。各メモリユニット６３４は、ゲーム、ゲームパラメータ、および他のデータを格納することができる追加の記憶域を提供する。コントローラに挿入されたとき、メモリユニット６３４はメモリコントローラ６０２でアクセスすることができる。
【０１６０】
システム電源モジュール６５０は、ゲームコンソール１０２の構成要素に電力を供給する。ファン６５２は、ゲームコンソール１０２内の回路を冷却する。
【０１６１】
コンソールユーザインターフェース（Ｕｌ）アプリケーション６６０がハードディスクドライブ６０８上に格納される。ゲームコンソールを電源オンしたとき、コンソールアプリケーション６６０の様々な部分がＲＡＭ　６０６および／またはキャッシュ６１０、６１２にロードされ、ＣＰＵ　６００上で実行される。コンソールアプリケーション６６０は、ゲームコンソール上で利用可能な様々なメディアタイプにナビゲートするときに一貫したユーザ体験を提供するグラフィカルユーザインターフェースを提示する。
【０１６２】
ゲームコンソール１０２は、暗号化、暗号化解除、認証、デジタル書き込み、ハッシングなどの共通暗号機能を実施するための暗号エンジンを実装する。暗号エンジンは、ＣＰＵ　６００の一部として実装することができ、またはＣＰＵ上で実行される、ハードディスクドライブ６０８上に格納されたソフトウェアとして実装することもでき、それによってＣＰＵは、暗号機能を実施するように構成される。あるいは、暗号機能を実施するように設計された暗号プロセッサまたはコプロセッサをゲームコンソール１０２内に含めることもできる。
【０１６３】
システムをテレビジョンまたは他のディスプレイに単に接続することにより、ゲームコンソール１０２はスタンドアロンシステムとして動作することができる。このスタンドアロンモードでは、ゲームコンソール１０２により、１人または複数のプレーヤがゲームをプレイし、ムービーを視聴し、音楽を聴くことが可能となる。しかし、ネットワークインターフェース６３２を介して利用可能とされるブロードバンド接続性を統合することにより、ゲームコンソール１０２はさらに、上記で論じたようなオンラインゲームの参加者として動作することができる。
【０１６４】
本明細書の説明においては、プレゼンスおよび通知システム１０４によって非常に多くの機能が提供される。代替実施形態では、この機能、またはこの機能の一部をゲームコンソール１０２のうちの１つまたは複数で提供することができる。
【０１６５】
上記の説明では構造的特徴および／または動作に特有の術語を用いたが、特許請求の範囲で定義される本発明は必ずしも説明した特定の機能または動作に限定されないことを理解されたい。むしろ、特定の特徴および動作は、本発明を実装する例示の形態として開示される。
【図面の簡単な説明】
【図１】例示の環境のブロック図である。
【図２】例示のプレゼンスおよび通知システムをより詳細に示すブロック図である。
【図３】ユーザがシステムにログインしているときにプレゼンスおよび通知システムをセットアップするための例示のプロセスを示すフローチャートである。
【図４】別のユーザを友人として追加することを要求するための例示のプロセスを示すフローチャートである。
【図５】ユーザのステータス情報を変更するための例示のプロセスを示すフローチャートである。
【図６】情報をゲームコンソールに通信するための例示のプロセスを示すフローチャートである。
【図７】例示のオンラインゲーム環境のブロック図である。
【図８】本明細書で述べる技法を実装するのに使用することができる一般的コンピュータ環境を示す図である。
【図９】ゲームコンソールの機能構成要素をより詳細に示す図である。
【符号の説明】
１００　例示の環境
１０２　クライアント装置／ゲームコンソール
１０４　プレゼンスおよび通知システム
１２０　プレゼンスサーバ
１２２　通知サーバ
１２４　プロファイル記憶
１２６　友人リスト
１２８　友人招待リスト
１３０　ミュートリスト
１３２　ネバーリスト
１３４　制御モジュール
１３６　ミュートリスト
１３８　ネバーリスト
１４０　書き込みリスト
１４２　情報
１４４　現ゲームタイトル
１４６　アドレス
１４８　セキュリティ情報
１５０　現ステータス
１５２　制御モジュール
１５４　通知キュー
４００　例示のオンラインゲーム環境
４０２　ゲームコンソール
４０４　セキュリティゲートウェイ
４０６　ネットワーク
４０８　プライベートネットワーク
４１０　データセンタ
４１２　監視サーバ
４１４　プレンゼンスおよび通知フロントドア
４１６　プレゼンスサーバ
４１８　通知サーバ
４２０　マッチフロントドア
４２２　マッチサーバ
４２４　統計フロントドア
４２６　統計サーバ
４２８　鍵配布センタ／プロファイル記憶
４３０　プレンゼンスおよび通知サービスまたはシステム
５００　一般的コンピュータ環境
５０２　コンピュータ
５０４　処理装置
５０６　システムメモリ
５０８　システムバス
５１０　ランダムアクセスメモリ
５１２　読取り専用メモリ
５１４　基本入出力システム
５１６　ハードディスクドライブ
５１８　磁気ディスクドライブ
５２０　取外し可能磁気ディスク
５２２　光ディスクドライブ
５２４　取外し可能光ディスク
５２６　データ媒体インターフェース
５２８　アプリケーションプログラム
５３０　他のプログラムモジュール
５３２　プログラムデータ
５３４　キーボード
５３６　ポインティングデバイス
５３８　他の入力装置
５４０　入出力インターフェース
５４２　モニタ
５４４　ビデオアダプタ
５４６　プリンタ
５４８　リモートコンピューティング装置
５５０　ローカルエリアネットワーク
５５２　広域ネットワーク
５５４　ネットワークインターフェースまたはアダプタ
５５６　モデム
５５８　リモートアプリケーションプログラム
６００　中央演算処理装置
６０２　メモリコントローラ
６０４　フラッシュＲＯＭ
６０６　ランダムアクセスメモリ
６０８　ハードディスクドライブ
６０９　ポータブルメディアドライブ
６１０　レベル１キャッシュ
６１２　レベル２キャッシュ
６１４　モジュール
６１６　ＡＴＡバス
６２０　３Ｄグラフィックス処理装置
６２２　ビデオエンコーダ
６２４　オーディオ処理装置
６２６　オーディオコーデック
６２８　Ａ／Ｖポート
６３０　ＵＳＢホストコントローラ
６３２　ネットワークインターフェース
６３４　メモリユニット
６３６　コントローラ
６４０　デュアルコントローラサポートサブアセンブリ
６４２　フロントパネルＩ／Ｏサブアセンブリ
６４４　ケーブルアセンブリ
６５０　システム電源モジュール
６５２　ファン
【図１】
2004127247.tif 000026
【図２】
2004127247.tif 000027
【図３】
2004127247.tif 000028
【図４】
2004127247.tif 000029
【図５】
2004127247.tif 000030
【図６】
2004127247.tif 000031
【図７】
2004127247.tif 000032
【図８】
2004127247.tif 000033
【図９】
2004127247.tif 000034