(57)【特許請求の範囲】
【請求項１】
ゲームホストと複数のクライアントの間の接続を確立するステップであって、前記ゲームホストと前記複数のクライアントの各々との間で交換されるゲームデータが受領時に確認されるステップと、
前記複数のクライアントのうち第１クライアントがゲームホストとなるための一つ以上の予め定められた要件を満足しているか否かを判定する、ゲームホストバックアップ実行可能性の判定を行うステップと、
前記第１クライアントに対して、前記複数のクライアントのネットワーク情報を含む、ゲームホストとして機能するのに必要なゲームホスト情報を前記ゲームホストから送信するステップであって、前記第１クライアントは少なくとも前記ゲームホスト情報を使用して前記複数のクライアントのうち他のすべてのクライアントとの間で接続を確立するバックアップゲームホストとして機能し、前記ゲームホストと前記複数のクライアントのうちの第２クライアントとの間で通信が中断された場合、バックアップゲームホストである前記第１クライアントが前記第２クライアントからデータを受け取るステップと、
を含むネットワークデータ分配を維持する方法。
【請求項２】
前記通信の中断は、前記第２クライアントが前記ゲームホストにデータを送信した後のある時間内に前記ゲームホストから前記第２クライアントに対して確認がないことにより認識されることを特徴とする請求項１に記載の方法。
【請求項３】
前記ゲームホストと前記複数クライアントの各々との間の接続を判定するために前記複数クライアントにポーリングすることをさらに含む請求項１または２に記載の方法。
【請求項４】
前記中断された通信が、前記ポーリングの結果によって示されることを特徴とする請求項３に記載の方法。
【請求項５】
前記ゲームホストから前記複数クライアントの各々に対し、前記第２クライアントへのホストによるサービスが中断されたことが通知されることをさらに含む請求項１ないし４のいずれかに記載の方法。
【請求項６】
前記中断された通信に基づき、前記ゲームホストと前記第２クライアントとの間の通信を終了することをさらに含む請求項１ないし５のいずれかに記載の方法。
【請求項７】
前記第１クライアントのバックアップ実行可能性の判定が、該第１クライアントが予め定められた帯域についての要件を満足するかを判定することを含む請求項１ないし６のいずれかに記載の方法。
【請求項８】
前記第１クライアントのバックアップ実行可能性の判定が、前記第１クライアントが前記複数クライアントのうちの他のクライアントの各々と接続可能であるかを判定することを含む請求項１ないし７のいずれかに記載の方法。
【請求項９】
前記第１クライアントへのゲームホスト情報の送信が、該ゲームホスト情報を提供するアプリケーションを送信することを含む請求項１ないし８のいずれかに記載の方法。
【請求項１０】
前記複数クライアントのうちの第３クライアントのバックアップ実行可能性を判定し、
少なくともゲームホスト情報に基づき、前記第３クライアントが前記複数クライアントのうちの他のすべてのクライアントへと接続し、かつ、前記第１クライアントと前記第２クライアントの間の通信が中断された場合に該第３クライアントが前記第２クライアントからデータを受信できるように、前記第３クライアントに対して前記ゲームホスト情報を送信することをさらに含む請求項１ないし９のいずれかに記載の方法。
【請求項１１】
前記ゲームホストとの接続が確立された順番に少なくとも基づき、前記第３クライアントへデータを送信する前に前記第１クライアントにデータを送信するように前記第２クライアントがさらに構成されていることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記第１クライアントおよび前記第３クライアントの利用可能な帯域の比較に少なくとも基づき、前記第３クライアントにデータを送信する前に前記第１クライアントにデータを送信するように前記第２クライアントがさらに構成されていることを特徴とする請求項１０または１１に記載の方法。
【請求項１３】
複数のクライアントに接続されるよう構成され、該複数のクライアントの各々からデータを受け取りデータの受信を確認するゲームホストと、
前記複数のクライアントのネットワーク情報を含む、ゲームホストとして機能するのに必要なゲームホスト情報を前記ゲームホストから受け取るように構成され、前記複数のクライアントのうち第１クライアントがゲームホストとなるための一つ以上の予め定められた要件を満足しているか否かを判定する、ゲームホストバックアップ実行可能性が判定され、少なくとも前記ゲームホスト情報に基づき前記複数のクライアントのうちの他のすべてのクライアントにバックアップゲームホストとして接続する第１クライアントと、
前記ゲームホストとの間の通信が中断した場合に、バックアップゲームホストである前記第１クライアントに対してデータを送信するように構成された第２クライアントと、
を備えるネットワークデータ分配を維持するシステム。
【請求項１４】
前記通信の中断が、前記第２クライアントが前記ゲームホストにデータを送信した後ある時間内に前記ゲームホストからの確認がないことによって示されることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記第２クライアントは、前記ゲームホストに対しデータを再送信するようにさらに構成されていることを特徴とする請求項１３または１４に記載のシステム。
【請求項１６】
前記第２クライアントは、前記ゲームホストと第２クライアントの間の通信の中断に関する情報を、前記複数のクライアントの各々に通知するようにさらに構成されていることを特徴とする請求項１３ないし１５のいずれかに記載のシステム。
【請求項１７】
前記第２クライアントは、前記ゲームホストと第２クライアントの間の接続を停止するようにさらに構成されていることを特徴とする請求項１３ないし１６のいずれかに記載のシステム。
【請求項１８】
前記ゲームホストは、接続に関する情報を前記複数のクライアントにポーリングするようにさらに構成されていることを特徴とする請求項１３ないし１７のいずれかに記載のシステム。
【請求項１９】
前記ゲームホストは、該ゲームホストと前記第２クライアントの間の通信の中断に関する情報を、前記複数のクライアントの各々に通知する通知するようにさらに構成されていることを特徴とする請求項１３ないし１８のいずれかに記載のシステム。
【請求項２０】
前記ゲームホストは、該ゲームホストと前記第２クライアントの間の接続を停止するようにさらに構成されていることを特徴とする請求項１９に記載のシステム。
【請求項２１】
前記ゲームホストは、前記第１クライアントのバックアップ実行可能性の判定をするようにさらに構成されていることを特徴とする請求項１３ないし２０のいずれかに記載のシステム。
【請求項２２】
前記ゲームホストは、前記第１クライアントが予め定められた帯域についての要件を満足するか否かに基づきバックアップ実行可能性を判定することを特徴とする請求項１３ないし２１のいずれかに記載のシステム。
【請求項２３】
前記ゲームホストは、前記複数のクライアントのうちの他のクライアントの各々に対して前記第１クライアントが接続可能であるか否かに基づきバックアップ実行可能性を判定することを特徴とする請求項１３ないし２２のいずれかに記載のシステム。
【請求項２４】
前記ゲームホストは、前記第１クライアントに対してゲームホスト情報を送信するようにさらに構成されていることを特徴とする請求項１３ないし２３のいずれかに記載のシステム。
【請求項２５】
前記ゲームホストは、前記複数のクライアントのうちの他のクライアントの各々に関する情報を提供するように構成されたアプリケーションを送信することで、前記ゲームホスト情報を送信することを特徴とする請求項２４に記載のシステム。
【請求項２６】
前記複数のクライアントのうちの第３のクライアントがゲームホスト情報を受け取るように構成されており、これにより前記第３のクライアントが少なくとも前記ゲームホスト情報に基づき複数のクライアントのうちの他のすべてのクライアントと接続することを特徴とする請求項１３ないし２５のいずれかに記載のシステム。
【請求項２７】
前記第２クライアントは、前記第１クライアントと第２クライアントの間の通信が中断した場合に、前記第３クライアントにデータを送信するようにさらに構成されていることを特徴とする請求項２６に記載に記載のシステム。
【請求項２８】
前記第２クライアントは、前記ゲームホストとの接続が確立された順番に基づき、前記第３クライアントにデータを送信する前に前記第１クライアントにデータを送信するようにさらに構成されていることを特徴とする請求項２７に記載のシステム。
【請求項２９】
前記第２クライアントは、前記第１クライアントおよび前記第３クライアントの利用可能な帯域の比較に基づき、第３クライアントにデータを送信する前に第１クライアントにデータを送信するようにさらに構成されていることを特徴とする請求項２７に記載のシステム。
【請求項３０】
クライアントから受け取ったデータを確認する応答を送信するように構成された確認モジュールと、
第１クライアントがゲームホストとなるための一つ以上の予め定められた要件を満足しているか否かを判定する、バックアップ実行可能性の判定を行うように構成された交渉モジュールと、
複数のクライアントのネットワーク情報を含む、ゲームホストとして機能するのに必要なゲームホスト情報に少なくとも基づき、前記第１クライアントがバックアップゲームホストとして機能し前記複数のクライアントのうちの他のクライアントすべてに前記第１クライアントが接続して、複数のクライアントのうちの第２クライアントから前記第１クライアントがデータを受け取るように、前記第１クライアントに対してゲームホスト情報を提供するアプリケーションを送信するように構成されたバックアップアプリケーションモジュールと、
を備えることを特徴とする、ネットワーク内でデータ分配を維持するためのコンピューティングデバイス。
【請求項３１】
複数のクライアントのうちの各クライアントに関する情報を格納するように構成されたゲームホスト情報データベースをさらに備えることを特徴とする請求項３０に記載のコンピューティングデバイス。
【請求項３２】
前記ゲームホスト情報データベースは、前記複数のクライアントに対するクライアントの追加または除去に基づき更新された情報を格納するようにさらに構成されていることを特徴とする請求項３１に記載のコンピューティングデバイス。
【請求項３３】
イベント後に経過した時間を測定するように構成されたタイマをさらに備えることを特徴とする請求項３０ないし３２のいずれかに記載のコンピューティングデバイス。
【請求項３４】
プロセッサにより実行可能でありネットワークデータ配布を維持する方法を実行するプログラムが具現化されたコンピュータ可読の記録媒体であって、
前記プログラムは、
ゲームホストと複数のクライアントの各々との間で交換されたデータが受領時に確認されるように、複数のクライアントにゲームホストを接続し、
前記複数のクライアントのうち第１クライアントがゲームホストとなるための一つ以上の予め定められた要件を満足しているか否かを判定する、ゲームホストバックアップ実行可能性の判定を前記ゲームホストが行い、
前記複数のクライアントのネットワーク情報を含む、ゲームホストとして機能するのに必要なゲームゲームホスト情報に少なくとも基づき、前記第１クライアントがバックアップゲームホストとなり前記複数のクライアントのうちの他のクライアントすべてに前記第１クライアントが接続して、複数のクライアントのうちの第２クライアントからバックアップゲームホストである前記第１クライアントがデータを受け取るように、前記第１クライアントに対して前記ゲームホストからゲームホスト情報を送信することを含む記録媒体。
【請求項３５】
前記プログラムは、前記ゲームホストと前記第２クライアントの間の接続を停止するための実行可能な命令をさらに含むことを特徴とする請求項３４に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、２００７年１０月５日に出願された「シームレスにホスト移行をするシステムおよび方法」と題する米国仮特許出願第６０／９９７，９１８号の優先権の利益を主張する。この開示は、参照により本明細書に援用される。
【０００２】
この出願は、２００２年７月３１日に出願された「動的プレイヤー管理」と題する米国特許出願第１０／２１１，１２８号に関連しており、その開示は参照により本明細書に援用される。さらに、この出願は２００３年２月４日に出願された「マルチユーザアプリケーションプログラムインタフェース」と題する米国特許出願第１０／３５９，３５９号に関連しており、その開示は参照により本明細書に援用される。
【０００３】
本発明は、一般にネットワークに関する。より具体的には、本発明はネットワークにおけるデータ分配に関する。
【背景技術】
【０００４】
ネットワークは、通信システムによって互いに接続されたコンピューティングデバイスのグループを含むことができる。ネットワーク内のコンピュータは、ネットワーク内の他のコンピュータと通信し、データを交換し、リソースを分け合うことができる。ネットワークの例には、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）が含まれる。
【０００５】
様々なネットワーク構成が当分野で知られている。図１Ａに示す従来のクライアント−サーバネットワークは、クライアント１２０Ａ−Ｄに接続されたホスト１１０を含む。ホスト１１０は、ネットワークセッション１３０を確立し、多数のクライアントによるネットワークセッション１３０への参加およびその方法を制御し、クライアント１２０Ａ−Ｄがネットワークセッション１３０に参加した後はクライアントによる相互対話の方法を制御する。ホスト１１０は一般に広い帯域と高い処理能力を持つので、ホスト１１０は、ネットワークセッション１３０内のすべてのクライアント１２０Ａ−Ｄとのデータの管理および分配を行うことが可能である。このような構成では、特定のクライアント（例えばクライアント１２０Ｄ）からのデータは、ホスト１１０を通して他のクライアント（例えばクライアント１２０Ａ−Ｃ）に分配される。例えば、クライアント１２０Ｄはホスト１１０にデータを送信する。他のクライアント、例えばクライアント１２０Ａがデータを要求すると、ホスト１１０はそのデータをクライアント１２０Ａに送信する。
【０００６】
ホストに接続しているおかげで、クライアントは自身が必要とするデータのみを（ホストを介して）要求することができ、そのため、クライアントは不必要なデータを管理する必要がない。このような構成は、ネットワークセッション内で交換されるすべてのデータを効率的に管理する能力を持たないクライアントの間で共通であってもよい。これらのクライアントは、データを管理し分配するホストを必要とする。
【０００７】
ネットワークセッション内のデータの管理および分配をホストに管理させることの欠点は、ホストとセッションクライアントのいずれか一つとの間の通信に影響を与える接続問題が生じたとき、データが失われる恐れがあることである。この場合、特定クライアントからのデータをホストに送信することができない。そのデータはまた、ネットワーク内の他のクライアントにとっても利用不可能になる。例えば、クライアント１２０Ｄが突然ホスト１１０から切断されたとする。クライアント１２０Ｄがホスト１１０に送っていたはずの情報はホスト１１０に到達せず、結果として、その情報はネットワークの残り（すなわち、クライアント１２０Ａ−Ｃ）には送信することができない。失われた情報により、ネットワークセッション１３０に混乱を引き起こすことがあり、他のクライアントの動作に影響を与える恐れがある。このことは、インタラクティブなネットワークゲームの場合には特に当てはまる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、ネットワークセッションの接続に関連する問題を解決し、セッション内で中断されないデータ交換を維持する、改善されたネットワークデータ分配システムおよび方法が当分野で必要とされている。
【課題を解決するための手段】
【０００９】
本発明のシステムおよび方法は、ネットワークセッションがデータを失うことなくホストとクライアントの間での通信の中断を乗り越えることを可能にする、ネットワークデータ分配の維持を提供する。ホスト機能は、シームレスにかつデータを大きく損なうことなくクライアントに移行する。本発明の実施形態は、ネットワークセッションのためにバックアップホストとして機能する一つまたは複数のクライアントを備える。他のクライアントがホストに対しデータを送信すると、そのデータを一つまたは複数のバックアップホストにも送信する。例えば、ホストにデータを送信したクライアントが所定の期間内にデータの確認を受領しないことがある。そのクライアントは、ホストに対してデータを再送信するとともに、データをバックアップホストにも送信する。
【００１０】
本発明の様々な実施形態は、ネットワークデータ分配方法を含む。この方法は、ホストをクライアントに接続し、クライアントがバックアップホストとして機能できるか否かを判定し、機能できる場合、そのクライアントに対してバックアップホストとして機能できるようにする特定の情報を送信することを含む。バックアップホストとして機能することには、他のクライアントがホストとの通信ができないときに、その他のクライアントからの情報を受け取ることが含まれる。本発明の一部の実施形態では、方法はさらに、ホストとクライアントの間の通信が中断したことを表し、ホストとその特定クライアントの間の接続を停止することを含む。
【００１１】
本発明の様々な実施形態は、ネットワークデータ分配システムを含む。このシステムは、ホストと、バックアップホストとして機能可能である第１クライアントと、ホストおよび第２クライアントの間の通信が中断した時に第１クライアントに対してデータを送信可能な第２クライアントとを含む。本発明の一部の実施形態では、第２クライアントもまたバックアップホストとして機能することができる。本発明の一部の実施形態は、それぞれがバックアップホストとして機能するように構成された複数のクライアントを含むことができる。
【００１２】
ネットワーク分配システムで使用されるホストシステムも、本発明の実施形態で提供される。このホストシステムは、受信時にクライアント通信を確認する確認モジュールと、特定のクライアントがバックアップホストとして機能できるか否かを交渉する交渉モジュールと、ホスト情報を提供するアプリケーションをクライアントに配信するバックアップアプリケーションモジュールとを含む。本発明の一部の実施形態は、さらにホスト情報データベースとタイマとを含む。
【００１３】
本発明の一部の実施形態は、ネットワークデータ分配用のコンピュータ記録媒体および命令を含む。この命令は、ホストをクライアントに接続すること、バックアップホストとして機能可能であるクライアントと交渉すること、およびクライアントにホスト情報を送信してクライアントがバックアップホストとして機能開始できるようにすることを含む。
【発明を実施するための最良の形態】
【００１４】
本発明はネットワークデータ配布システムおよび方法を含む。本発明の実施形態により、ホスト移行をシームレスに発生させることが可能になる。ホストとクライアントとの間で通信が中断した場合に、データを大きく損なうことなくネットワークセッションを継続することができる。ネットワークセッションのホストは、複数のクライアントに接続されていてもよい。これらクライアントの一つ（または複数）が、バックアップホストとして機能できるようにしてもよい。バックアップ実行可能性はクライアントと交渉され、ホスト情報はクライアントに送信される。このクライアントは続いてバックアップホストとして機能することができる。バックアップホストは、続いてネットワークセッション内の他のクライアントに接続し、他のクライアントからデータを受け取ってもよい。その後、ホストと特定クライアントとの間の通信が中断した場合、その特定クライアントは、自身のデータをバックアップホストに送信することができ、これによってデータを失うことなくネットワークセッションを継続することができる。
【００１５】
全体を通して特定される構成要素は例示であり、様々な代替物、等価物または派生物を含む。ハードウェア、ソフトウェア、およびコンピュータで実行可能な命令の様々な組み合わせを利用することができる。プログラムモジュールおよびエンジンは、プロセッサによって実行されるときに特定タスクの実行をするルーチン、プログラム、オブジェクト、コンポーネントおよびデータ構造を含んでもよい。このプロセッサは、汎用のものでもまたはアプリケーション専用のものでもよい。コンピュータ可読媒体に格納された、コンピュータで実行可能な命令および関連するデータ構造とは、本明細書で開示された方法のステップを実行するか、および／または本明細書で開示された特定のシステム構成を実装するためのプログラミング手段の例を表している。
【００１６】
図１Ａに示され、また上で詳細に説明したクライアント−サーバネットワーク構成においては、各クライアントは、ネットワークセッション内のすべてのデータを処理する必要はない。代わりに、各クライアントは、そのクライアントがネットワークセッションに参加するために必要なデータのみを受け取り、それを処理する。一部のクライアントは、データのすべてを効率的に管理することができないが、これは、例えば帯域の不足か処理能力の不足によるものである。しかしながら、クライアントの中には、ネットワークセッション内のすべてのデータを管理する能力を有しているものもある。これらの特定のクライアントは、ネットワークセッションから得られるデータの一部またはすべてを格納するバックアップホストとして機能することができる。
【００１７】
図１Ａのシステム構成と比較して、図１Ｂは、一つのバックアップホストであるクライアント１６０Ａを備えた、ネットワークデータ分配用の例示的なシステムを示している。バックアップホストは、ネットワークセッションのホストの機能の一部またはすべてを実行することが可能である任意のクライアントであってもよい。ネットワークセッション１５０のホスト１４０が実行不可能であるかまたは実行しないとき、ホスティング責任の一部またはすべてがバックアップホストに移行することができる。バックアップホストとしての資格を得るためには、バックアップの実行可能性を明示する候補ホスト（クライアント）が必要となる。バックアップ実行可能性を明示することには、例えば、帯域、処理能力、メモリ、ハードウェアまたはソフトウェア構成、あるいはサービス品質に関する一つ以上の用件を満足することを含む。クライアントのバックアップ実行可能性は、ホストとの交渉を通じて決定されてもよい。
【００１８】
バックアップ実行可能性に関連しそれを確認する交渉が完了した後、ネットワークセッション１５０を通じてホスト１４０とクライアント１６０Ａとの間でホスト情報が送信される。ホスト情報は、ネットワーク名、ネットワーク内でのクライアントのインターネットプロトコル（ＩＰ）アドレス、ファイアウォール情報、およびクライアント１６０Ａがあるホスト責任を引き継ぐ必要がある場合の特定の責任に関する情報を含むことができる。ホスト情報を使用して、クライアント１６０Ａは、ホスト１４０と他のクライアント１６０Ｂ−Ｄとの間の一つ以上の接続が中断した場合に、バックアップホストとして機能することが可能になる。例えば、クライアント１６０Ｂがホスト１４０から切断されたとすると、図３Ａおよび図３Ｂに示されているように、クライアント１６０Ｂはクライアント１６０Ａにデータを転送してもよい。ホスト１４０からクライアント１６０Ａにホスト責任を移行することによって、クライアント１６０Ｂからの情報がネットワークセッション１５０で完全に失われることはない。
【００１９】
一部の実施形態では、二つ以上のクライアントがバックアップホストとして機能可能であってもよい。図１Ｃは、いくつかのバックアップホストであるクライアント１９０Ａ−Ｄを有するネットワークデータ配布用の例示的なシステムを示す。図１Ｃのネットワークセッション１８０内の各クライアントは、元のホスト１７０が利用できなくなった場合に、特定のバックアップホスト責任に関与することができる。例えば、クライアント１９０Ａが得点の記録に責任を持つ一方で、クライアント１９０Ｂはゲーム環境内の状況変化に責任を持つことができる。クライアント１９０Ｃは参加基準（例えば、誰がゲームに参加できるか）について責任を持ち、クライアント１９０Ｄはチャット機能の責任を持つことができる。代わりに、クライアント１９０Ａが上述のタスクのすべてについて責任を持ち、他のクライアント１９０Ｂ−Ｄは、クライアント１９０Ａがその後機能しなくなった場合にそれらのタスクを引き継いでもよい。
【００２０】
図２は、ネットワークデータ配布システムにおいてシームレスなホスト移行を提供するコンピューティングデバイスの構成の一例２００を示す。ホスト２００は、ネットワーク内で中央通信ハブとして機能することができ、例えばサーバなどのコンピューティングデバイスである。通常はクライアント動作のために用意されるコンピューティングデバイスは、ホスト２００の構成の一部またはすべてを有していてもよいが、これは、ある時点においてはクライアントがバックアップホストとなることがあるという事実のためである。ホスト２００は、ネットワークインタフェース２１０、確認モジュール２２０、交渉モジュール２３０、ホスト情報データベース２４０、バックアップアプリケーションモジュール２５０、ポーリングモジュール２６０およびタイマ２７０を含むことができる。
【００２１】
本発明で参照される場合、モジュール（またはアプリケーション）とは、様々なシステムレベルの機能を実行するルーチンの集合のことをいう。モジュールは、必要に応じて、ハードウェアおよびデバイスドライバよって動的にロードおよびアンロードされる。本明細書で述べるモジュラーソフトウェアコンポーネントは、より大きなソフトウェアプラットフォームの一部として組み込まれてもよいし、あるいはアプリケーション専用コンポーネントの一部として統合されてもよい。
【００２２】
ネットワークインタフェース２１０は、ネットワーク内でホストと他のコンピューティングデバイスの間の通信が可能になるように構成された様々なハードウェアおよび／またはソフトウェアコンポーネントのうち任意のものであってよい。ネットワークインタフェース２１０は、有線、無線、および／またはインターネットベースの通信ネットワークを介して通信を行うコンポーネントを含んでもよい。
【００２３】
確認モジュール２２０は、クライアントによって送信された情報がホスト２００によって受信されたことを確認できるようにする。ネットワークインタフェース２１０を通じてホスト２００がクライアントから情報を受け取ると、確認モジュール２２０は、情報を送信したクライアントに対して受信確認（ＡＣＫ）を送信することができる。例えば、クライアントがホスト２００に対してゲーム状態データの変更に関連する情報を送信する場合、確認モジュール２２０は送信クライアントに対して、その情報が受信されたことを表すＡＣＫ返答を送信することができる。確認モジュール２２０により送信されたＡＣＫ返答は、受信した情報の内容およびその情報の量に関する表示、および／または情報が破損していたり不完全であったりした場合にはその旨の表示をさらに含むことができる。
【００２４】
送信クライアントによる特定のデータ送信に対してＡＣＫを受領していないということは、データ送信がホスト２００によって受け取られていないことを表す。ホスト２００がデータ送信（またはその一部）を受け取っていないということは、ホスト２００とデータ送信をしたクライアントとの間の接続に問題があるか、またはホスト２００自体に問題があることを示している。特定の数のデータ送信がホスト２００からのＡＣＫ返答の受信をしていない場合、送信クライアントは移行動作を実行してもよく、これによって、ホスト機能の一部またはすべてがバックアップホストに移行される。
【００２５】
交渉モジュール２３０は、様々なパラメータに基づきクライアントのバックアップ実行可能性を交渉する。例えば、実行可能なバックアップホスト／クライアント候補は、ある量の利用可能な帯域を有している必要があるかもしれない。クライアントの帯域は、ネットワークセッションにおけるデータのすべてをクライアントが管理できるよう十分なものである必要がある。バックアップ実行可能性は、クライアントが関連する様々なサービス基準の品質に準拠している必要があるかもしれない。例えば、ｐｉｎｇレート、パケットロス、利用可能なメモリ、プロセッサ速度等である。
【００２６】
交渉モジュール２３０は、クライアント候補がネットワーク内の他の各クライアントと接続可能であるかについて判定してもよい。実行可能なバックアップホストは、ネットワーク内の他の各クライアントと接続可能であり、かつ情報を受け取ることができる必要がある。バックアップ実行可能性のパラメータは、ネットワークセッションのタイプによって判別されてもよい。例えば、特定のゲームネットワークセッションは、ゲーム環境内で多くの状態変化が生じうるので、バックアップ実行可能とするために特定の量の帯域とプロセッサ速度とを必要とする場合がある。単純なファイル転送のような複雑さの少ないトランザクションでは、より小さな帯域および／または処理能力を必要とする。
【００２７】
交渉モジュール２３０は、複数のクライアントとともにバックアップ実行可能性について交渉するように構成されていてもよい。これによって、一連のバックアップホストを生じさせる。代わりに、交渉モジュール２３０は、特定のタスクに対するバックアップ責任をクライアントのグループの間で割り当てるように構成されていてもよい。一連のバックアップホストを提供することによって、ネットワークまたはホスト／クライアント条件が保証するとき、ホスティングの義務を、ホストから第１のバックアップホストへ、第２のバックアップホストへ、といったようにシームレスに移行させることができる。バックアップホスト責任および／または特定の責任の順序は、クライアントがホストに接続されている順序に基づいて割り当てられてもよい。代わりに、帯域やサービス品質などの他の要因に基づいて、順序および／または責任が定められてもよい。
【００２８】
ホスト情報データベース２４０は、ホスト、クライアント、またはネットワークセッションに関連する情報を格納することができる。ホスト情報データベース２４０に格納される情報により、コンピューティングデバイスは、ネットワークセッション内の他のクライアントへの接続などの特定のホスティング義務を果たすことが可能になる。このようなホスト情報は、ネットワーク名、ネットワーク内のクライアントのインターネットプロトコル（ＩＰ）アドレス、およびファイアウォール情報を含んでもよい。ネットワークからクライアントが切断されたりまたはネットワークに新たなクライアントが参加したりといったイベントが生じると、ホスト情報データベース２４０が更新されてもよい。例えば、新たなクライアントのＩＰアドレスは、ホスト情報データベース２４０に追加される必要がある。
【００２９】
ホスト情報データベース２４０とともに動作して、バックアップアプリケーションモジュール２５０は、クライアントにダウンロードされ、インストールされ、実行されることができるアプリケーションを作成する。このアプリケーションは、基礎的な実行可能用件を満足することに加えて、クライアントがバックアップホストとして動作するために必要である特定の機能をクライアントに提供する。アプリケーションは、クライアントがネットワークセッション内の他のクライアントと接続しデータを交換できるようにクライアントを調整することができる。
【００３０】
オプションであるポーリングモジュール２６０は、ネットワークセッション内のすべてのクライアントにポーリングをするように構成される。ポーリングモジュール２６０を使用して接続するクライアントをポーリングすることができる。接続のポーリングには、ネットワークセッション内の各クライアントに対して小さなデータパケットを送信すること、データパケットを受け取ったクライアントからの返信／確認を受け取ること、およびホスト２００との通信に問題を抱えているクライアントを決定することを含むことができる。
【００３１】
ポーリングモジュール２６０は、周期的な間隔で自動的にクライアントにポーリングすることができる。ポーリングモジュール２６０は、新たなクライアントがネットワークセッションに参加したりあるいは接続が中断した事象があったり（例えば、クライアントがホスト２００により送信されたデータを確認していない）といったイベントが生じたときに、クライアントに対しポーリングをするように構成することもできる。ポーリングモジュール２６０のポーリング動作は、米国特許公開番号第２００３−０２０４５６６号の「マルチユーザアプリケーションインタフェース」に記載されているような周期的な鼓動にも似ているかもしれない。この開示は既に参照により援用されている。
【００３２】
ホスト２００はタイマ２７０を含んでもよい。タイマ２７０は、イベント後に経過した時間を測定するように構成されている。ホスト２００はタイマ２７０を使用して、ポーリングモジュール２６０により生成されるようなデータ送信と、そのデータ送信の確認との間の時間を決定することができる。この種の情報を使用して、特定クライアントへの接続を打ち切るか否かの判定をすることができる。タイマ２７０により測定するとき、ホスト２００がある期間の間、特定のクライアントからの確認を受け取っていなかったりまたはポーリングの応答を受け取っていない場合、ホスト２００はそのクライアントとの接続を停止することができる。
【００３３】
バックアップアプリケーションモジュール２５０により作成されたアプリケーションは、ポーリングモジュール２６０およびタイマ２７０の機能と似た特定の機能をさらに含んでもよい。ネットワークセッションから特定クライアントを外すか否かを判定しようとするホスト２００とは異なり、この「鼓動」機能はバックアップホストとして指定されたクライアントによって使用され、ホスト２００が特定のホスト義務を実行できなくなったり、またはホスト義務の実行に連続して失敗した時間を決定する。ホスト２００が特定の義務を実行不可能であるかまたは実行に失敗したということは、確認モジュール２２０により生成されるＡＣＫすなわち鼓動を連続して受け取っていないことで表すことができる。
【００３４】
図３Ａは、ネットワークデータ分配用の例示的なシステム３００の実装を示す。ホスト２００は複数のクライアント３１０Ａ−Ｄに接続されている。クライアント３１０Ａは、ホスト２００とのバックアップ実行可能性についての交渉を成功させており、接続３２０を通じてホスト情報を受け取っている。ホスト情報を使用して、クライアント３１０Ａはネットワーク内の他のクライアント、すなわちクライアント３１０Ｂ−Ｄと接続する。接続３３０により、クライアント３１０Ｂ−Ｄはクライアント３１０Ａと直接（すなわち、ホスト２００を介することなく）通信する。クライアント３１０Ｂ−Ｄは、それぞれのクライアントからホスト２００へのデータ送信が困難になった場合に、接続３３０を用いてクライアント３１０Ａとデータを交換することができる。クライアント３１０Ｂ−Ｄは、ホスト２００とのデータ送信における問題に関係なく、クライアント３１０Ａに対して自動的にデータを送信することもできる。
【００３５】
図３Ｂは、ネットワークデータ分配用の例示的なシステムの別の実装を示す。特に、図３Ｂは、ホスト２００とクライアント３１０Ｄとの間の通信が中断した場合の、ネットワークデータ分配用の例示的なシステムを表している。具体的には、ホスト２００とクライアント３１０Ｄの間のデータ送信３４０が失敗した様子が示されている。クライアント３１０Ｄがホスト２００に対するデータ送信３４０を実行しようと試みている一方で、障害のある接続のためにホスト２００による送信の受け取りが妨げられている。
【００３６】
クライアント３１０Ａはネットワークセッションのバックアップホストであるので、クライアント３１０Ｄは、ホスト２００に向けられたのと同一のデータを、バックアップデータ送信３５０で直接（すなわち、ホスト２００を介さずに）クライアント３１０Ａに送ることができる。続いて、クライアント３１０Ａは、データ送信３６０でホスト２００に対してそのデータを送る。この特定の実施形態では、クライアント３１０Ｄとホスト２００とを分離する障害のある通信のために、クライアント３１０Ａは、クライアント３１０Ｄとホスト２００の間のプロキシ（代理）として機能する。続いて、ホスト２００は、クライアント３１０Ａを介して受け取ったものではあるが、クライアント３１０Ｄからのデータをクライアント３１０Ｂと３１０Ｃに分配する。代わりに、クライアント３１０Ｄとホスト２００の間の接続に対するホスト義務をホスト２００が維持することができなかった場合に、クライアント３１０Ａがデータをクライアント３１０Ｂまたは３１０Ｃに送信してもよい。
【００３７】
ホスト２００とクライアント３１０Ｄの間の通信が中断したので、クライアント３１０Ｄはクライアント３１０Ａを介してセッションデータを取得する必要がある。クライアント３１０Ａは、いずれかのコンピューティングデバイスに代わってデータを要求することに加えて、ホスト２００およびクライアント３１０Ｄに対するデータ送受信の中間媒体として機能することができる。
【００３８】
図４は、ネットワークデータ分配をする例示的な方法４００を示すフローチャートである。図４で特定されるステップ（およびその順序）は例示であり、様々な代替物、等価物または派生物を含むことができ、またその実行の順序に限定されない。図４のプロセスのステップ（およびその様々な代替物）は、プロセッサにより実行可能である命令を含む機械可読媒体またはコンピュータ可読記録媒体（例えば、光ディスク、メモリカードまたはハードドライブ）を含む、ハードウェアまたはソフトウェアで実現可能である。
【００３９】
ステップ４１０で、ホスト（例えばホスト２００）がネットワークセッションを確立する。ホストは、ネットワークセッションを進行させる様々な態様の他に、ネットワークセッションに参加可能な対象についての特定のパラメータを設定してもよい。ホストは、特定のクライアントのみまたは招待されたクライアントのみが参加できるプライベートなネットワークセッションを確立することができる。代わりに、ホストは、公衆に開かれており任意のクライアントが参加可能であるネットワークセッションを確立することができる。
【００４０】
ステップ４２０で、ホストに接続することによって複数のクライアントがネットワークセッションに参加する。ネットワークセッションに参加可能である対象に関する特定のパラメータをホストが設定していた場合、ホストへの接続またはネットワークセッションへの参加が許可される前に、クライアントはそれらのパラメータを満足している必要がある。
【００４１】
ステップ４３０で、図２の交渉モジュール２３０を介してバックアップ実行可能性が交渉される。一つまたは複数のクライアントが、バックアップホストとして機能するための能力およびリソースを有する、実行可能なバックアップホストとなることができる。帯域およびサービス品質を含むバックアップ実行可能性の様々な側面が評価され、特定のクライアントがバックアップホストとして機能可能であるか否かが判定される。交渉モジュール２３０の要件に応じて、ネットワークセッション内のクライアント中に一つまたは二つ以上の実行可能なバックアップホストが存在するか、またはバックアップホストが存在しないこともある。
【００４２】
ステップ４４０で、バックアップ責任が割り当てられる。実行可能なバックアップホストであるクライアントが複数ある場合、順序および／または特定の責任に関して、それらのクライアントの間でバックアップ責任を割り当てる必要がある。ネットワークセッション内のクライアントは、第１の実行可能なバックアップホストに対して自身のデータを送信することができる。第１の実行可能なバックアップホストは、ホストによって特定されるか、またはブロードキャストあるいは他の通信によって最初にバックアップと見なされたものである。後者については、米国特許公開番号第２００３−０２１７１３５号の「動的プレイヤー管理」に例証されており、この開示は既に参照により援用されている。第１の実行可能なバックアップホストがバックアップホストとして動作不可能であるか、または動作不可能になった場合、他のクライアントは、第２の実行可能なバックアップホストに対して自身のデータを送信して、ネットワークセッションに参加することができる。本明細書に開示の、および／または上述の「動的プレイヤー管理」の出願に開示されている手段を利用して、第２のバックアップホストと通信する必要性を示すことができる。
【００４３】
ステップ４５０で、ネットワークセッション内の他の各クライアントに対して特定のクライアントが接続可能であるか否かが判定される。バックアップホストは、セッション内の各クライアントおよびあらゆる他のクライアントと接続可能である必要がある。第１のクライアントが第２のクライアントと接続できない場合、第１のくライアンとは、ネットワークセッションのバックアップホストとして機能することはできない。例えば、第１クライアントによるあるタイプの接続を妨げるファイアウォール問題を第１のクライアントが有しているかもしれない。潜在的なバックアップホストがいかなる理由によっても別のクライアントと接続できない場合、本方法はステップ４４０に戻りバックアップ責任を再割り当てする。
【００４４】
あるクライアントが実行可能なバックアップホストであり、ネットワークセッション内の他のクライアントのすべてと接続可能であると判定されると、方法はステップ４６０に進む。ステップ４６０で、バックアップ情報が実行可能なバックアップホストにダウンロードされる。バックアップ情報をバックアップホストに提供することで、ホストはネットワークから抜け出すことができ、バックアップホストは、ネットワークセッション内の他のクライアントにより要求されるあらゆる情報を提供できるようになる。図２のバックアップアプリケーションモジュール２５０の文脈で述べたように、バックアップ情報は、シームレスなホスト移行を容易にするアプリケーションのダウンロードおよびインストールの一部として提供することができる。
【００４５】
ステップ４７０で、ネットワークデータ分配が開始される。図３Ａに示したように、ホストとクライアントの間でデータ送信が発生する。図３Ｂにさらに示したように、二つのクライアントの間、すなわちホスト接続問題を抱えるクライアントから、バックアップホストとして動作可能であるクライアントに対してデータ送信が行われる。さらに、バックアップホストは、ホストに向けてデータを送るか、または要求に応じて他のクライアントに対して直接データを送ることができる。データを中継しなければならないあらゆる接続を介して、そのデータを要求するコンピューティングデバイスに対してデータが提供される。
【００４６】
例示的な実施形態を参照して本発明を説明してきたが、当業者ならば、本発明の真の精神および範囲を逸脱することなく、様々な変更が可能であり、また等価物による要素の置換が可能であることを理解するだろう。加えて、本発明の本質的な教示を逸脱することなく修正が可能である。本明細書で述べた様々な方法を実装するために様々な代替システムを利用することができ、また上述のシステムから生じる特定の結果を達成するために様々な方法を使用することができる。
【図面の簡単な説明】
【００４７】
【図１Ａ】当技術分野で既知であるクライアント−サーバネットワーク構成を示す図である。
【図１Ｂ】一つのバックアップホストを有するネットワークデータ分配用の例示的なシステムを示す。
【図１Ｃ】いくつかのバックアップホストを有するネットワークデータ分配用の例示的なシステムを示す。
【図２】ネットワークデータ分配システムにおいてシームレスなホスト移行を提供するコンピューティングデバイスの例示的な構成を示す図である。
【図３Ａ】ネットワークデータ分配用の例示的なシステムの実装を示す図である。
【図３Ｂ】ネットワークデータ分配用の例示的なシステムの別の実装を示す図である。
【図４】ネットワークデータ分配の例示的な方法を示す図である。
【図１Ａ】
0005097671.tif 000002
【図１Ｂ】
0005097671.tif 000003
【図１Ｃ】
0005097671.tif 000004
【図２】
0005097671.tif 000005
【図３Ａ】
0005097671.tif 000006
【図３Ｂ】
0005097671.tif 000007
【図４】
0005097671.tif 000008