(57)【特許請求の範囲】
【請求項１】
コンピュータネットワークデータの転送方法であって、
複数ユーザネットワークアプリケーション共有データ空間内の所有ネットワークユーザクライアントにより保持されるデータオブジェクトに関連する更新データサブセットであって、前記データオブジェクトについての完全データ更新以下の数のデータフィールドのセットを指定する更新データサブセットを、前記データオブジェクトに対応するローカルコピーを保持する更新中ユーザクライアントが決定し、この決定は、更新中ユーザクライアントが利用可能なネットワーク帯域幅を決定することと、該利用可能なネットワーク帯域幅にしたがって前記更新データサブセットを決定することを含むものであり、
前記更新中ユーザクライアントから、決定された更新データサブセットを要求するネットワークデータ更新要求メッセージを前記所有ネットワークユーザクライアントに対して送信し、
前記更新中ユーザクライアントが、前記ネットワークデータ更新要求メッセージに応答して前記所有ネットワークユーザクライアントから送信された前記データフィールドのセットを構成する前記データオブジェクトの更新データを受信することを含むことを特徴とする方法。
【請求項２】
前記データオブジェクトのローカルコピーを、前記更新中ユーザクライアントが受信した更新データサブセットで更新することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
利用可能なネットワーク帯域幅を決定することが、ユーザの選択した帯域幅の値を受け取ることを含むことを特徴とする請求項１に記載の方法。
【請求項４】
利用可能なネットワーク帯域幅を決定することが、前記更新中ユーザクライアントからシステムリソース情報を受け取ることを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記更新データサブセットを決定することが、更新中ユーザクライアントの前記データオブジェクトに対する興味のレベルにしたがって、前記更新データサブセットの前記データフィールドのセットを決定することを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記更新中ユーザクライアントの興味のレベルが、前記更新中ユーザクライアントと前記共有データ空間内のデータオブジェクトとの対話によって決定されることを特徴とする請求項５に記載の方法。
【請求項７】
前記要求メッセージが、前記ネットワークアプリケーションについてのデータオブジェクトを完全に定義するデータフィールドより小さい更新データサブセットを指定することを特徴とする請求項１に記載の方法。
【請求項８】
前記データオブジェクトのローカルコピーを更新することが、前記更新されたデータオブジェクトの描写を含む視覚表示を描画することを含むことを特徴とする請求項２に記載の方法。
【請求項９】
前記ネットワークアプリケーションが、ネットワークを介したストリーミングデータの転送を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記ネットワークアプリケーションの各ユーザが、前記ネットワークアプリケーション共有データ空間の対応するデータオブジェクトの所有権を有することを特徴とする請求項１に記載の方法。
【請求項１１】
前記ネットワークアプリケーションの単一ネットワークノードが、前記ネットワークアプリケーション共有データ空間の全ユーザの対応するデータオブジェクトの所有権を有することを特徴とする請求項１に記載の方法。
【請求項１２】
コンピューティングデバイスとネットワークの間のデータ転送をサポートするネットワーク通信インタフェースと、
プログラム命令を実行して、複数ユーザネットワークアプリケーションを提供する中央処理装置と、を備え、
前記複数ユーザネットワークアプリケーションが、
複数ユーザネットワークアプリケーション共有データ空間内の所有ネットワークユーザにより保持されるデータオブジェクトに関連する更新データサブセットであって、前記データオブジェクトについての完全データ更新以下の数のデータフィールドのセットを指定する更新データサブセットを、前記所有ネットワークユーザにおける前記データオブジェクトに対応するローカルコピーを保持している更新中ユーザに対応するデバイスで決定し、この決定は、更新中ユーザに対応するデバイスが利用可能なネットワーク帯域幅を決定することと、該利用可能なネットワーク帯域幅にしたがって前記更新データサブセットを決定することを含むものであり、
決定された更新データサブセットを要求するネットワークデータ更新要求メッセージを、前記更新中ユーザに対応するデバイスから前記所有ネットワークユーザに対応するデバイス対して送信し、
前記ネットワークデータ更新要求メッセージに応答して前記所有ネットワークユーザに対応するデバイスから送信された前記データフィールドのセットを構成する前記データオブジェクトの更新データを、前記更新中ユーザに対応するデバイスで受信する機能を発揮する
ことを特徴とするデバイス。
【請求項１３】
前記デバイスが、前記データオブジェクトのローカルコピーを、前記更新中ユーザにおいて受信された更新データサブセットで更新することを特徴とする請求項１２に記載のデバイス。
【請求項１４】
前記デバイスが、ユーザの選択した帯域幅の値を受け取ることによって利用可能なネットワーク帯域幅を決定することを特徴とする請求項１２に記載のデバイス。
【請求項１５】
前記デバイスが、ユーザのオペレーティングシステムからシステムリソース情報を受け取ることによって利用可能なネットワーク帯域幅を決定することを特徴とする請求項１２に記載のデバイス。
【請求項１６】
前記デバイスが、前記データオブジェクトに対する更新中ユーザの興味のレベルにしたがって前記更新データサブセットのデータフィールドのセットを決定することによって、前記更新データサブセットを決定することを特徴とする請求項１２に記載のデバイス。
【請求項１７】
前記更新中ユーザの興味のレベルが、前記更新中ユーザと前記共有データ空間内のデータオブジェクトとの対話によって決定されることを特徴とする請求項１６に記載のデバイス。
【請求項１８】
前記要求メッセージが、前記ネットワークアプリケーションについてのデータオブジェクトを完全に定義するデータフィールドより小さい更新データサブセットを指定することを特徴とする請求項１２に記載のデバイス。
【請求項１９】
前記データオブジェクトの前記ローカルコピーを更新することが、前記更新されたデータオブジェクトの描写を含む視覚表示を描画することを含むことを特徴とする請求項１３に記載のデバイス。
【請求項２０】
前記ネットワークアプリケーションが、ネットワークを介したストリーミングデータの転送を含むことを特徴とする請求項１２に記載のデバイス。
【請求項２１】
前記ネットワークアプリケーションの各ユーザが、前記ネットワークアプリケーション共有データ空間の対応するデータオブジェクトの所有権を有することを特徴とする請求項１２に記載のデバイス。
【請求項２２】
前記ネットワークアプリケーションの単一ネットワークノードが、前記ネットワークアプリケーション共有データ空間の全ユーザの対応するデータオブジェクトの所有権を有することを特徴とする請求項１２に記載のデバイス。
【請求項２３】
データオブジェクト所有ユーザクライアントからデータオブジェクトのローカルコピーを保持する更新中ユーザクライアントに対し、コンピュータネットワークを介してデータを転送する方法であって、
複数ユーザネットワークアプリケーションにおいて、データオブジェクトを定義するデータフィールドのセットについて、前記所有ユーザクライアントにおける更新データを決定し、
前記複数ユーザネットワークアプリケーションについてのデータオブジェクトに関連する更新データサブセットであって、前記所有ユーザクライアントにより決定された前記更新データを含むデータフィールドの数以下のデータフィールドを指定する更新データサブセットを前記更新中ユーザクライアントが決定し、この決定は、更新中ユーザクライアントが利用可能なネットワーク帯域幅を決定することと、該利用可能なネットワーク帯域幅にしたがって前記更新データサブセットを決定することを含むものであり、
前記更新中ユーザクライアントから前記更新データサブセットを要求する更新データメッセージを前記所有ユーザクライアントに送信することを含むことを特徴とする方法。
【請求項２４】
コンピュータ可読媒体に記録されたプログラム命令を実行して、コンピュータネットワークを介したデータ転送方法を実行する、コンピュータデバイスにおいて使用されるプログラムプロダクトであって、
前記プログラムプロダクトは、
記録可能な媒体と、
前記コンピュータデバイスにより実行可能であり以下の方法を実行する複数のコンピュータ可読命令と、を含み、
前記方法が、
複数ユーザネットワークアプリケーション共有データ空間内の所有ネットワークユーザにより保持されるデータオブジェクトに関連する更新データサブセットであって、前記データオブジェクトについての完全データ更新以下の数のデータフィールドのセットを指定する更新データサブセットを、前記所有ネットワークユーザにおける前記データオブジェクトに対応するローカルコピーを保持している更新中ユーザに対応するコンピュータデバイスで決定し、この決定は、更新中ユーザに対応するコンピュータデバイスが利用可能なネットワーク帯域幅を決定することと、該利用可能なネットワーク帯域幅にしたがって前記更新データサブセットを決定することを含むものであり、
決定された更新データサブセットを要求するネットワークデータ更新要求メッセージを、前記更新中ユーザに対応するコンピュータデバイスから前記所有ネットワークユーザに対応するコンピュータデバイスに対して送信し、
前記ネットワークデータ更新要求メッセージに応答して前記所有ネットワークユーザに対応するコンピュータデバイスから送信された前記データフィールドのセットを構成する前記データオブジェクトの更新データを、前記更新中ユーザに対応するコンピュータデバイスで受信することを含むことを特徴とするプログラムプロダクト。
【請求項２５】
前記コンピュータデバイスが、前記データオブジェクトのローカルコピーを、前記更新中ユーザにおいて受信された更新データサブセットで更新することを特徴とする請求項２４に記載のプログラムプロダクト。
【請求項２６】
前記コンピュータデバイスが、ユーザの選択したネットワーク帯域幅の値を受け取ることによって利用可能な帯域幅を決定することを特徴とする請求項２４に記載のプログラムプロダクト。
【請求項２７】
前記コンピュータデバイスが、該コンピュータデバイスのシステムリソース情報を受け取ることによって、利用可能なネットワーク帯域幅を決定することを特徴とする請求項２４に記載のプログラムプロダクト。
【請求項２８】
前記コンピュータデバイスが、前記データオブジェクトに対する更新中ユーザの興味のレベルにしたがって前記更新データサブセットのデータフィールドのセットを決定することによって、前記更新データサブセットを決定することを特徴とする請求項２４に記載のプログラムプロダクト。
【請求項２９】
前記更新中ユーザの興味のレベルが、前記更新中ユーザと前記共有データ空間内のデータオブジェクトとの対話によって決定されることを特徴とする請求項２８に記載のプログラムプロダクト。
【請求項３０】
前記要求メッセージが、前記ネットワークアプリケーションについてのデータオブジェクトを完全に定義するデータフィールドより小さい更新データサブセットを指定することを特徴とする請求項２４に記載のプログラムプロダクト。
【請求項３１】
前記コンピュータデバイスが、更新されたデータオブジェクトの描写を含む視覚表示を描画することによって、前記データオブジェクトのローカルコピーを更新することを特徴とする請求項２５に記載のプログラムプロダクト。
【請求項３２】
前記ネットワークアプリケーションが、ネットワークを介したストリーミングデータの転送を含むことを特徴とする請求項２４に記載プログラムプロダクト。
【請求項３３】
前記ネットワークアプリケーションの各ユーザが、前記ネットワークアプリケーション共有データ空間の対応するデータオブジェクトの所有権を有することを特徴とする請求項２４に記載のプログラムプロダクト。
【請求項３４】
前記ネットワークアプリケーションの単一ネットワークノードが、前記ネットワークアプリケーション共有データ空間の全ユーザの対応するデータオブジェクトの所有権を有することを特徴とする請求項２４に記載のプログラムプロダクト。
【請求項３５】
コンピュータネットワークを介してデータを転送するネットワークコンピュータデバイスであって、
複数ユーザネットワークアプリケーションを実行して、前記コンピュータデバイスが前記ネットワークアプリケーションのローカルクライアントを構成するようにするプロセッサと、
複数ユーザネットワークアプリケーション共有データ空間内の所有ネットワークユーザにより保持されるデータオブジェクトに対応するローカルコピーを更新中ユーザとして保持する保持手段と、
利用可能なネットワーク帯域幅を決定し、該利用可能な帯域幅にしたがって、前記データオブジェクトに関連する更新データサブセットであり前記データオブジェクトについての完全データ更新以下の数のデータフィールドのセットを指定する更新データサブセットを決定する決定手段と、
決定された更新データサブセットを要求するネットワークデータ更新要求メッセージを前記所有ネットワークユーザに対して送信する通信手段と、
前記ネットワークデータ更新要求メッセージに応答して前記所有ネットワークユーザから送信された前記データフィールドのセットを構成する前記データオブジェクト用の更新データを更新中ユーザとして受信する受信手段と、
を含むことを特徴とするコンピュータデバイス。
【請求項３６】
前記プロセッサが、前記データオブジェクトのローカルコピーを、前記更新中ユーザにおいて受信された更新データサブセットで更新することを特徴とする請求項３５に記載のコンピュータデバイス。
【請求項３７】
前記決定手段が、ユーザの選択したネットワーク帯域幅の値を受け取ることによって利用可能な帯域幅を決定することを特徴とする請求項３５に記載のコンピュータデバイス。
【請求項３８】
前記決定手段が、当該コンピュータデバイスからシステムリソース情報を受け取ることによって、利用可能なネットワーク帯域幅を決定することを特徴とする請求項３５に記載のコンピュータデバイス。
【請求項３９】
前記決定手段が、前記データオブジェクトに対する更新中ユーザの興味のレベルにしたがって前記更新データサブセットのデータフィールドのセットを決定することによって、前記更新データサブセットを決定することを特徴とする請求項３５に記載のコンピュータデバイス。
【請求項４０】
前記決定手段が、更新中ユーザの興味のレベルを、該更新中ユーザと前記共有データ空間内の前記データオブジェクトとの対話によって決定することを特徴とする請求項３９に記載のコンピュータデバイス。
【請求項４１】
前記要求メッセージが、前記ネットワークアプリケーションについてのデータオブジェクトを完全に定義するデータフィールドより小さい更新データサブセットを指定することを特徴とする請求項３５に記載のコンピュータデバイス。
【請求項４２】
前記プロセッサが、前記データオブジェクトのローカルコピーを、更新されたデータオブジェクトの描写を含む視覚表示を描画することによって更新することを特徴とする請求項３５に記載のコンピュータデバイス。
【請求項４３】
前記ネットワークアプリケーションが、ネットワークを介したストリーミングデータの転送を含むことを特徴とする請求項３５に記載のコンピュータデバイス。
【請求項４４】
前記ネットワークアプリケーションの各ユーザが、前記ネットワークアプリケーション共有データ空間の対応するデータオブジェクトの所有権を有することを特徴とする請求項３５に記載のコンピュータデバイス。
【請求項４５】
前記ネットワークアプリケーションの単一ネットワークノードが、前記ネットワークアプリケーション共有データ空間の全ユーザの対応するデータオブジェクトの所有権を有することを特徴とする請求項３５に記載のコンピュータデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータネットワークに関し、より詳細には、コンピュータネットワークを介して複数ユーザにより実行されるアプリケーションに関する。
【背景技術】
【０００２】
ローカルエリアネットワークおよびインターネットなどのコンピュータネットワークは、パーティ間の種々の取引または対話のバックボーンとしてますます使用されるようになっている。銀行の顧客がコンピュータネットワークを介して金銭取引を開始することができるオンラインバンキングから、ゲーマがインターネットを介してリアルタイムゲームに参加することのできるオンラインゲーミングに至るまで、サービスプロバイダは、コンピュータネットワークを介した多様なサービスをますますサポートするに至っている。現在、発生する取引や対話を容易にする多種多様なコンピュータネットワーク構成がある。
【０００３】
オンラインアプリケーションの多くは、複数ユーザのアプリケーションを含む。複数ユーザアプリケーションは、複数の地理的に離れた参加者が、コンピュータプログラムおよびアプリケーション環境内の他の参加ユーザと対話することを可能にする、コンピュータシステム上で実行されるコンピュータプログラムである。例えば、オンラインゲーミングは、人気の上昇している複数ユーザアプリケーションである。オンライン飛行機シミュレーションゲームは、複数の参加者が、仮想の飛行空間内でそれぞれの仮想飛行機を操縦することを可能とし、また、参加者が、同一の飛行空間内の飛行機の他の参加者との対話を可能とする。各参加者は、それぞれの仮想飛行機の飛行動作に対する制御を有している。すなわち、各参加者は、飛行機を構成するアプリケーションオブジェクトの所有権を有している。したがって、オンライン飛行機ゲームアプリケーションは、複数の参加者がそれぞれのオブジェクトを操縦する単一のアプリケーション環境または世界を提供する。
【０００４】
ゲーム参加者などの別個の地理的に分散したアプリケーションユーザを持つ、オンラインゲーミングのような複数ユーザアプリケーション環境において、アプリケーションのローカルユーザによって修正または操作される１つまたは複数のデータオブジェクトについて、各参加者は一般に責任を有する。これらデータオブジェクトは、「所有可能な」データオブジェクトであり、各ユーザは、１つまたは複数のこのような対応するアプリケーションオブジェクトに関連している。
【０００５】
例えば、オンラインゲーミング環境においては、各参加者は、一般に、ゲーミングアプリケーション環境における各参加者の競技者（contestant）すなわちエントリについての状態データを保持する責任を有する。参加者のゲームエントリは、典型的にデータオブジェクトによって表される。取引複数ユーザ環境においては、ユーザは、口座に関連するデータについて責任を有するが、これはデータオブジェクトにより表される。両方のアプリケーション環境において、各ユーザは、ユーザがアプリケーション環境におけるユーザのデータオブジェクトを更新する責任を有するという点において、ゲーム参加者オブジェクトまたは取引口座オブジェクトのいずれかのデータオブジェクトを「所有」しているといえる。ゲームシナリオにおいて、ユーザは、通常、ゲームアプリケーションの共有オブジェクト空間内の対応するデータオブジェクトの移動に対する制御を有し、また、通常、データオブジェクト状態についてのデータを保持する責任を有する（したがって、データオブジェクトを所有している）。
【０００６】
複数ユーザアプリケーション環境におけるユーザ間のリアルタイムの対話をサポートするためには、アプリケーション環境における各参加者の対応データオブジェクトについての情報を共有する必要がある。ユーザのデータオブジェクトの状態は、その値がユーザ対話の間に変化しうるデータフィールドの集合によって定義することができる。例えば、ゲームアプリケーションにおいて、ユーザのデータオブジェクトはゲーム環境内の位置を変更し、取引アプリケーションにおいては、ユーザのデータオブジェクトは変更された取引履歴と口座残高とを有する。
【０００７】
ネットワークユーザ間でユーザのデータオブジェクトの状態情報を共有するためには、データオブジェクトを定義する種々のデータフィールドの値を共有する必要がある。例えば、飛行機シミュレーション複数ユーザアプリケーションでは、各ユーザは飛行機データオブジェクトにより表されるが、飛行機についての状態情報に関連するデータフィールドは、飛行機サイズ、飛行機速度、三次元空間における高度、外観のディテール（戦闘被害または制御表面位置など）、仮想環境のディテール（建物、天候、地形など）などを含むことができる。このような状態情報により、各参加者のコンピュータが、ゲームの展開を適切に追跡し、他の参加者のそれぞれにより実行される行動を決定することができる。これは、各参加者が、参加者の表示ディスプレイ上に視覚画像を適切に描画することを可能とし、他の参加者が同様にすることを可能にする。取引アプリケーション環境では、データフィールドは、ユーザ名、口座情報、口座残高などを含むことができる。このような情報は、複数のユーザが特定の取引口座についての詳細を確認することを可能にする。
【０００８】
オンライン複数ユーザアプリケーションのなかには、アプリケーション更新時間間隔にしたがって、ネットワーク更新メッセージを全てのユーザに対して送信することによって、各ユーザアプリケーションオブジェクトの状態についての詳細を通信するものもある。オンラインゲームについて、ゲーム参加者であるユーザは、ネットワークユーザによって所有されるアプリケーションオブジェクト用のデータフィールドの最新セットを保持する責任を有する。シミュレーションゲームにおける飛行機のように、ネットワークユーザによって所有されるアプリケーションオブジェクトの状態に変化が生じた場合、所有ユーザは、更新メッセージを介して他のネットワーク参加者に対してその変更を通信しなければならない。したがって、データオブジェクトを所有する各ネットワークユーザは、他のネットワーククライアントに対して更新メッセージを作成し送信して、彼らにデータオブジェクトにおける変更を通知し続けなければならない。この方法では、各所有ユーザからの更新メッセージは、他のネットワーククライアントに対して、データフィールド内の変更を通信する。したがって、全てのネットワークユーザ参加者は、正確なデータオブジェクト状態情報を通知され続ける。
【０００９】
不幸なことに、更新メッセージを介して通信され全ての参加者の間で共有されるデータの量は、負担になりうる。既に述べたように、飛行機シミュレーションアプリケーション内のゲーム参加者のアプリケーションオブジェクトの視覚的な描画を更新するために必要なデータフィールドは、飛行機サイズ、速度、高度、外観ディテール（外部ダメージまたは制御表示位置など）、仮想環境ディテール（建物、天候、地形など）などを含むことができる。すべてのアプリケーション参加者の間で共有されなければならない情報の量は大変大きく、帯域幅の飽和につながりうる。すなわち、限られたネットワーク帯域幅しか持たないユーザもおり、そのようなユーザは、ネットワークアプリケーションによって作成されるアプリケーション環境を通して「プレイ状態」を維持するために、リアルタイムで十分速く更新メッセージを受信することが困難となりうる。
【００１０】
限られた帯域幅しか持たないユーザがオンラインゲーミングなどの複数ユーザアプリケーションに参加することを可能にする１つの方法は、その詳細が全てのユーザ間で共有されるデータオブジェクトの数を減らすことである。例えば、これは、アプリケーション環境を興味の領域に分割することによって、興味の１つのアプリケーション環境領域内のユーザには、他のアプリケーション環境領域内のアプリケーションオブジェクトについての情報が提供されないようにすることで、達成できる。アプリケーション環境の１つの領域内のデータオブジェクトを所有するユーザは、アプリケーション環境の他の領域内のユーザに、更新されたデータフィールドを送信する必要がない。これは、ネットワークを介して、各所有ユーザに送信されなければならない情報の量を削減する。各ユーザは、アプリケーションに対してネットワーククライアントによって伝播されたあらゆる更新メッセージをいちいちダウンロードする必要がない。このようなシステムは、例えば、R. WatersおよびJ. Allredによる米国特許第５，８４１，９８０号の配布された処理システム内に記述されている。このような所定の処理によって、ユーザは、アプリケーションオブジェクトについての更新メッセージの全てをダウンロードし処理することを省略することができる。これは、参加者のリアルタイムの対話が、更新メッセージの処理によって遅延しないことを意味する。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、限られた共有環境であっても、データオブジェクトに関連するデータフィールドの数は十分に多くまたは詳細であり、依然として、ユーザの帯域幅は、ユーザの興味の仮想環境領域内にある全てのアプリケーションオブジェクトに関する処理をするための要求によって負担が重くなり得る。実際、同一のアプリケーション環境領域内のアプリケーションオブジェクトの更新メッセージは、ネットワーククライアントの視点からは重要でない多くのデータを含み得る。これは、例えば、アプリケーションオブジェクト更新メッセージが詳細な描画に必要な全てのグラフィック情報を含むものの、アプリケーションオブジェクトが、詳細を見るユーザの視点に十分近くはないようなときに起こりえる。さらに、利用可能な帯域幅をユーザが確保しているとしても、各参加ユーザの必要性にかかわらず、ネットワークデータトラフィックが全てのデータオブジェクトについての全てのデータフィールドを含まなければ、ネットワーク動作にとってより効率的である。
【００１２】
したがって、現在の複数ユーザアプリケーションは、アプリケーションオブジェクトの更新に関して、最大限の効率を上げるようには構成されていない。アプリケーション環境を個別の更新領域に分割することに基づく削減されたデータ転送であっても、参加者の帯域幅リソースに重い負担を課し、また不必要なネットワークデータトラフィックを作成しうる。したがって、より効率的な、改善されたオンライン複数ユーザアプリケーション環境が必要とされている。本発明は、この必要性を満足する。
【課題を解決するための手段】
【００１３】
データオブジェクトを所有するネットワークユーザから更新中ユーザ（updating user）に対して、複数ユーザネットワークアプリケーションのデータオブジェクトに関連するデータのコンピュータネットワークを介した転送は、データオブジェクトを定義するデータフィールドのサブセットを転送することによって達成される。データフィールドのサブセットは更新中ユーザによって指定され、このサブセットは、データオブジェクトを定義する全てのデータフィールドについての更新された値を含む完全更新転送以下の大きさである。各データオブジェクトが複数のデータフィールドにより定義されているので、データオブジェクトデータフィールドのサブセットの転送は、更新中のオブジェクトの定義データフィールドの全てがネットワークを介して転送される状況よりも、データ更新に利用されるネットワーク帯域幅が低減されることを確実にする。
【００１４】
本発明にしたがって、データ更新要求メッセージが更新中ユーザから所有ユーザに送信され、この要求メッセージが更新中ユーザによって必要とされる更新データのサブセットを指定する。更新中ユーザは、更新中ユーザにおけるネットワークアプリケーションの処理に必要であるデータフィールドサブセットを決定する。指定された更新データのサブセットが更新中ユーザにより受け取られると、更新中ユーザにより保持されているアプリケーションオブジェクトの対応データフィールドが、受け取られたサブセットデータを持って更新される。この方法では、更新中ユーザは、データオブジェクトを定義する全てのデータフィールドについての更新データを、常に要求し受け取る必要はない。むしろ、更新中ユーザは、アプリケーションオブジェクトについての更新データの削減されたサブセットを要求することができる。これにより、複数ユーザネットワークアプリケーションを実行しまたアプリケーションオブジェクトの状態を更新するために、更新中ユーザにより要求される帯域幅を低減することができる。
【００１５】
本発明の他の特徴および利点は、例示として本発明の原理を説明する好ましい実施形態についての以下の記述から明らかになるであろう。
【００１６】
本発明の目的、利点および特徴は、添付の図面とともに読まれたとき、以下の詳細な説明からより容易に理解されるであろう。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明にしたがって構築されたコンピュータネットワーク１００を示す。複数のクライアントコンピュータ１０２、１０４、１０６が、ネットワーク１０８を介して相互に通信している。１つまたは複数のサーバコンピュータ１１０も、ネットワークを介してクライアントと通信することができる。コンピュータはネットワークを介して互いに通信し、複数ユーザアプリケーション環境の処理を協力する。コンピュータ１０２、１０４、１０６は、例えば、従来のデスクトップパーソナルコンピュータなどのコンピュータ、日本国、東京のソニーコンピュータコーポレーションから市販されている「プレイステーション２」ゲームコンソールシステムなどのエンタテインメントコンソール装置、または、複数ユーザアプリケーションプログラミング環境を提供しあるいは参加することができる他のコンピューティングプラットフォームである。説明のために、図１には３つのクライアントのみが示されているが、システム１００は、より多数または少数のクライアントを含むことができる。コンピュータが通信をするネットワーク１０８は、コンピュータ１０２、１０４、１０６の間のデータ通信を容易にする様々なネットワーク構成を含むことができることは理解されよう。適切なネットワークには、例えば、クライアント−サーバネットワーク構成や、ピア−ツー−ピアコンピュータネットワーク構成が含まれる。
【００１８】
ネットワーククライアント１０２、１０４、１０６が参加するアプリケーションプログラミング環境は、各クライアントが少なくとも１つのアプリケーションデータオブジェクトについて責任を持つ環境である。オンラインゲーミングアプリケーションの文脈では、例えば、各クライアントは、クライアントマシンにおけるゲーム競技者すなわちユーザのエントリに相当することができる。したがって、各クライアントは、競技者を定義するデータオブジェクトを保持する。すなわち、各データオブジェクトはデータフィールドのセットによって定義されるが、このことは、このようなオブジェクト指向プログラミング概念に精通している当業者であれば理解されよう。クライアントは、データオブジェクトの所有権を有しているといえる。例えば、ビジネスアプリケーションにおいて、各データオブジェクトは、取引またはユーザや顧客のビジネス口座に対応してもよい。
【００１９】
対応するデータオブジェクトについてユーザ１０２、１０４、１０６により保持されるデータは、複数ユーザアプリケーション環境内でデータオブジェクトが完全に動作するのを可能にするために必要な全てのパラメータを規定する。例えば、複数プレイヤーの飛行機シミュレーションアプリケーションでは、各ユーザは、それぞれのクライアントにおいてユーザにより操縦される仮想の飛行機に対応するデータオブジェクトを保持（すなわち「所有」）する。各ユーザの飛行機に対応するデータオブジェクトを完全に定義するデータフィールドは、飛行機サイズ、速度、三次元空間における高度、外観のディテール（外面ダメージまたは制御表面位置など）、仮想環境のディテール（建物、天候、地形など）などのデータフィールドを含む。フライトシミュレーションネットワークアプリケーション内で飛行機を定義するために使用されうるデータフィールドの一例を、以下の表１に示す。
【００２０】
【表１】
0004572119.tif 000002
表１に示したものに加え他のデータフィールドも、飛行機を完全に定義してネットワークアプリケーションの適当なビデオイメージを描画するために使用することができ、例えば、ライトのオン／オフ、アフターバーナーのオン／オフ、パイロットの個人情報などがある。
【００２１】
各所有ユーザ（owning user）は、それぞれのアプリケーションオブジェクトを定義するデータフィールドを定期的に更新し、また、各所有ユーザは、ネットワークアプリケーションを実行している他の全てのネットワークユーザに対して、更新メッセージを送信する能力を有する。ここで、更新メッセージは、所有ユーザにより保持されているデータを含む。後述するように、システム１００の処理は、各更新中のネットワークユーザ（すなわち、所有ユーザとはリモートに位置するユーザ）が、それぞれの所有ユーザからのオブジェクト更新について数を減らしたデータフィールドを要求することができ、これによって、アプリケーションオブジェクトに関するローカルデータを保持するための帯域幅要件を削減し、また、更新データを転送するためのネットワークトラフィックを削減する。
【００２２】
図２は、図１のシステムにおける処理を示す流れ図であり、選択的なアプリケーションオブジェクト更新動作を提供する。ここで、更新中のユーザは、他のユーザにより所有されているアプリケーションオブジェクトのデータフィールドの更新サブセットを要求することができる。図２に示す動作は、リモートユーザにより所有されているアプリケーションオブジェクトに関して、リモートネットワークユーザからの更新を要求するネットワークユーザの視点から記述したものである。しかしながら、システム内の各更新中ユーザは同様の動作を実行しており、また、システム内の任意の特定の更新中ネットワークユーザにとって、全ての他のユーザは、更新中のネットワークユーザに対してはリモートユーザであり、特定の更新中ネットワークユーザはローカルネットワーククライアントと見なされることを理解すべきである。
【００２３】
流れ図の欄２０２により示される図２の第１の動作において、複数ユーザネットワークアプリケーションがネットワークユーザにおいて起動され、１つまたは複数のアプリケーションオブジェクトがユーザにより検出される。検出されたデータオブジェクトは、ネットワークアプリケーションの他のユーザによって所有される。コンピュータ処理システムの例示的な実施形態において、アプリケーションオブジェクトは、ネットワークアプリケーションにしたがって共有オブジェクト空間内で保持されているデータオブジェクトであり、アプリケーションを実行している各ネットワークユーザに対して共有オブジェクト空間内のオブジェクトの存在が通知される。すなわち、アプリケーションデータオブジェクトは共有データ空間内に存在し、全てのアプリケーションユーザにはデータオブジェクトが通知され、また、データオブジェクトは、データ更新メッセージおよび各ユーザにおけるローカル処理を通して互いに対話することができる。各データオブジェクトは、パラメータおよびオブジェクトメソッドを含むことができるデータフィールドのセットによって定義されるが、これは当業者には理解されよう。飛行機オブジェクトを定義するデータフィールドの一例が、上述の表１に示されている。
【００２４】
例えば、複数プレイヤーのゲーミングアプリケーションにおいて、図１に示したようなサーバは、仮想ゲーム世界内の関連するアイテム用のデータオブジェクトとともに、各ユーザ競技者用の１つのオブジェクトに対応する、共有データ空間用のすべてのアプリケーションデータオブジェクトの収集を継続する。ここで、ネットワーククライアントにおける各ユーザは、ユーザに対応するデータオブジェクトの責任（所有権）を有している。アプリケーションユーザはネットワークサーバからオブジェクト更新を取得することができ、ネットワークサーバは各所有ユーザ（ネットワーククライアント）から更新を受け取る。別の実施形態では、ネットワーククライアントはそれぞれ、対応するユーザ用のデータオブジェクトを保持し、ネットワーククライアントは、各所有ユーザから直接それぞれのアプリケーションオブジェクトに関連するデータを交換して、それぞれのユーザマシン内のデータコピーを保持する。
【００２５】
次に、流れ図の欄２０４において、更新中ユーザは、更新中ユーザに対応するアプリケーションオブジェクトの現在の状態を更新する動作を実行する。同様の更新動作は、システムの各ネットワーククライアントにおいてローカルに発生する。したがって、各アプリケーションデータオブジェクトの現在の状態は、データオブジェクトを所有するネットワーククライアントによって定期的に更新される。欄２０６において、更新中クライアントは、更新中ユーザにより所有されるオブジェクト以外のアプリケーションデータオブジェクト（すなわち、リモートの所有ユーザのデータオブジェクト）についてのローカル情報に対する更新要求を決定する。本発明によれば、更新中ユーザは、リモートのデータオブジェクトを定義する全てのデータフィールドについての更新構成データを要求する必要はない。
【００２６】
従来のネットワークアプリケーションシステムでは、更新メッセージは、通常、データオブジェクトを定義する全てのデータフィールドについてのデータを含む。図１に示すシステムでは、リモートの所有ユーザから受け取った指定された更新データサブセットが、アプリケーションオブジェクトの完全な更新データメッセージを構成するデータフィールドの数以下になるように、更新中ユーザは、ネットワークアプリケーションデータオブジェクトを定義するデータフィールドのサブセットを定義することができる。この方法では、更新中ユーザは、リモートの所有ユーザから送られた更新データに対する制御を有し、それ故に、更新中ユーザは、所有ユーザからの更新データ転送を効率的に受信するために必要な帯域幅に対する制御を有している。
【００２７】
要求されるべき更新データサブセットの決定は、マニュアルのユーザ選択の関数であってもよいし、または、ネットワークアプリケーションの自動処理機能で決定されてもよい。例えば、ネットワークアプリケーションは、選択可能なメニューを更新中ユーザに提供することができ、このメニューは、ユーザに、完全な更新と簡略された更新サブセットの間で選択するように、要求すべき更新情報の程度をマニュアル指定するようにユーザに要求する。更新データサブセットについてのユーザ選択は、ユーザのネットワーク接続帯域幅の観点から表現することもできる。
【００２８】
データフィールドの利用可能なセットからの更新データサブセットの選択は、マニュアルで選択可能としてもよいし、ユーザコンピュータにより自動的に決定および選択されてもよいし、一旦設定され、その後ネットワークアプリケーションの実行の間保持されてもよいし、あるいは、アプリケーションが始めに起動されたときに初期設定され、その後ネットワーク動作の動作中定期的に調整されてもよい。例えば、ネットワークアプリケーションは、ユーザのオペレーティングシステムからユーザのネットワーク接続の帯域幅速度を取得することができ、また、アプリケーションが起動されたとき、適当なデータサブセット選択を自動的に決定することができる。その後、ネットワークアプリケーションは、更新中のデータオブジェクト用のローカル（更新中ユーザ）アプリケーションの必要性または興味レベル（interest level）にしたがって、更新データサブセットを動的に決定することができる。興味のレベルは、更新中ユーザのデータオブジェクトとの対話の関数であっってもよい。
【００２９】
データフィールドのより完全なセットが要求される増加した興味の領域に飛行機が位置するとき（密集した編隊）などのように、例えば、更新中ユーザの対話が大きいような状況において、動的決定は特に有用である。減少した興味の領域に飛行機が位置するとき（離れた空間を飛行）は、ネットワークアプリケーションにとってより限定的なデータサブセットで十分である。これら２つの例示的な飛行機シミュレーションシナリオにおいて、更新中ユーザによる興味のレベルは、仮想アプリケーション空間におけるデータオブジェクトの更新中ユーザへの近接度に依存する。データオブジェクトにおけるユーザの興味レベルは、例えば、データオブジェクトに対する更新中ユーザのアプリケーション空間内の位置（視覚上の明確さまたは不明瞭さなど）、アプリケーションにおける集団または連係（味方または敵など）、ネットワークアプリケーションの目的または目標（これによって、所有ユーザに対するアプリケーション目的に基づいて、興味のレベルを決定する）によって、指示することができる。実行中のネットワークアプリケーションにしたがって、更新中ユーザの興味レベルを決定するために、他の基準を使用することができる。
【００３０】
接続帯域幅の観点から、更新サブセットにおけるデータフィールドの数を選択する一例を図３に示す。図３は、接続速度が、アナログモデム接続速度か、またはいくつかあるブロードバンド接続速度の１つのいずれかであるかをユーザに問い合わせる、ネットワークアプリケーションのディスプレイスクリーン選択メニュー３０２を示す。ユーザが接続速度の１つを選択すると、ローカルクライアントにおけるネットワークアプリケーションが、対応する更新データサブセットを持つ更新要求メッセージを生成する。例えば、Ｔ１接続に対しては、アプリケーションは、所有ユーザからの完全更新データメッセージを自動的に選択する。これに対し、アナログモデム接続に対しては、アプリケーションは、所有ユーザからの削減された量のデータを自動的に選択する。一例として、クライアントのオペレーティングシステムを通して学習されたシステム情報にしたがって、自動決定を実行することができる。要求されるべき情報の程度を選択する他のスキームは、当業者であれば想起するであろう。採用する決定手法にかかわらず、本発明にしたがった処理は、アプリケーションデータオブジェクトに関連するデータ更新について、リモートクライアントから要求するデータフィールドの数を指定する能力を、ローカルクライアントに提供する。この方法では、ローカルクライアントは、定義中のデータフィールドの全てについて更新データを要求し受け入れる必要はないが、これらは、アプリケーションデータオブジェクトについての更新データメッセージ内に備えられている。
【００３１】
データサブセット選択の粒度は、更新データサブセットを構成するデータフィールド毎の選択から構成することができ、または、所定のデータフィールドサブセットコレクションのセットであることもできる。例えば、図３のユーザメニューは、データフィールドサブセットのメニューを提供することができる。データフィールドサブセットの選択がネットワークアプリケーションによって自動的に決定される状況において、サブセットは、いくつかのデータフィールドサブセットの１つであることができる。例えば、飛行機フライトシミュレーションであるネットワークアプリケーションにおいて、飛行機オブジェクトを完全に定義するデータフィールドは、上述の表１に示したフィールドに対応してもよい。５６Ｋのアナログモデム接続を使用するユーザ（図３のウインドウディスプレイの第１のボタン）に対しては、ネットワークアプリケーションは、以下の表２に示すような、低減された数のパラメータのデータフィールドサブセットを自動的に選択することができる（これをサブセット１と呼ぶ）。
【００３２】
【表２】
0004572119.tif 000003
ケーブルモデムまたはＤＳＬ接続を使用するユーザ（図３のウインドウディスプレイ内の第２ボタン）に対しては、ネットワークアプリケーションは、以下の表３に示すような、低減された数のパラメータのデータフィールドサブセットを自動的に選択することができる（これをサブセット２と呼ぶ）。
【００３３】
【表３】
0004572119.tif 000004
このように、利用可能な更新データサブセットのサブセット２は、サブセット１よりも多くのデータフィールドを含むが、表１に示したオブジェクト定義データフィールドの全てについての現在データフィールド値を含む完全な更新メッセージよりはデータフィールドの数が少ない。他のボタンおよびデータサブセットは、ワイヤレスＬＡＮ接続、ワイヤレスインターネットセルラー接続などの他の接続帯域幅を含むこともできる。同様に、利用可能なユーザ帯域幅にしたがって、更新サブセットを選択するための異なる粒度を提供するために、他のデータフィールド更新サブセットを提供することもできる。提供される粒度は、ネットワークアプリケーションを提供することと関連して、当業者によって決定することができる。
【００３４】
図２に戻り、欄２０８により指定される次の動作で、ローカルクライアントは、更新要求メッセージをリモートクライアントに送る。更新要求メッセージのフォーマットは、クライアント１０２、１０４、１０６（図１）の全てによって操作されているネットワークアプリケーションに左右される。所有ユーザは、更新ブロードキャストスケジュール（ローカル更新）を使用してそのデータオブジェクトを更新することが通常である。図示されたシステムでは、（所有ユーザに対してリモートの）各更新中ユーザは、アプリケーションオブジェクトデータフィールドの更新サブセットを指定するリモートオブジェクトブロードキャストスケジュールを作成することができる。この方法では、所有ユーザ（ローカルクライアント）は、更新中ユーザにより要求されている情報が何であるかを知っており、同様に、（更新周期、帯域幅設定などの）更新メッセージの他の詳細も知っている。
【００３５】
本発明によれば、更新要求メッセージは、完全なデータ更新メッセージと比較して、更新データのサブセットを指定するとき、リモートの更新中クライアントにより認識されるフィールドまたはパラメータを含む。上述したように、更新データセットは、完全な更新セット（すなわち、データオブジェクトの定義フィールドの全てについての値を持つ更新メッセージ）か、または、完全なデータ更新メッセージを構成するデータフィールドのサブセットである、数を減らしたデータフィールドのいずれかであってよい。いずれの場合も、更新中クライアントから更新データ要求メッセージを受け取るリモートクライアント（データオブジェクト所有クライアント）は、要求された量のデータを提供することによって応答する。続いて、更新中ユーザは、所有ユーザから更新データサブセットメッセージを受け取る。これは、流れ図の欄２１０で示されている。
【００３６】
欄２１２で示される最後の更新処理動作において、更新要求ユーザは、更新されたデータを、対応するアプリケーションオブジェクト用のローカルオブジェクトデータ空間内に組み込む。この動作は、例えば、所有クライアントのデータオブジェクトに関連するローカルクライアントデータを更新することを含むことができ、また、所有クライアントのアプリケーションオブジェクトを示す視覚表示の描写（visual display representation）を更新することを含むことができる。ネットワークアプリケーションの他の処理が、これに続くことができる。
【００３７】
図４は、ネットワークアプリケーションを実行中の他の（リモートの）ネットワーククライアントにおける更新中ユーザに関して、図１のシステムのデータオブジェクト所有クライアントにおける処理を示す流れ図である。所有ユーザは、所有ユーザにより所有されるデータオブジェクトのデータフィールドを更新し、また、ネットワークアプリケーションの他のユーザからの更新要求メッセージを受け取る。流れ図の欄４０２により表される第１の動作は、所有ユーザにおける複数ユーザネットワークアプリケーション環境を開始することを含む。上述のように、ネットワークアプリケーションは、オンラインゲーミングシナリオ、取引指向シナリオ、または、複数ユーザで共有オブジェクトデータ空間をサポートする任意の他のアプリケーションを含むことができる。
【００３８】
共有オブジェクトデータ空間において、各参加ユーザは、１つまたは複数のアプリケーションオブジェクトの所有権を有する。例えば、オンラインゲーミングシナリオの文脈では、各オブジェクト所有ユーザは、アプリケーション環境における所有ユーザの競技者を表すアプリケーションオブジェクトの所有権を有する。各所有ユーザは、所有されたアプリケーションオブジェクト用の更新動作を定期的に実行しなければならず、アプリケーションオブジェクトの状態は、データオブジェクトを定義するデータフィールドにしたがって更新される。この更新動作は、図４の流れ図の欄４０４により表される。
【００３９】
各所有ユーザは、ネットワークアプリケーションの共有オブジェクトデータ空間内で動作するので、各所有ユーザは、共有オブジェクトデータ空間内で同じく動作している他のユーザ（ネットワークノードまたはクライアント）を認識している。ネットワークアプリケーションにしたがって、各参加ユーザは、更新データ要求メッセージを定期的に作成する。更新データ要求メッセージは、各リモート所有ユーザに送られる。上述のように、ネットワークアプリケーションの構成に応じて、更新データ要求メッセージは、中央アプリケーションサーバに送られることができ、このサーバは、メッセージ中で指定されたデータサブセットにしたがって、各更新メッセージに応答する。他の状況では、欄４０６において、更新データ要求メッセージは、データオブジェクトの定義データフィールドの全てに対応するネットワーククライアント記憶データにおいて受け取られ、更新データ要求メッセージが更新データサブセットを要求するようにする。欄４０８で、更新データサブセットは、更新データ要求メッセージで識別された更新中ユーザに送信される。
【００４０】
上記動作は、飛行機フライトシミュレーションのような例示的なゲーミングアプリケーションの文脈で説明した。このようなアプリケーションは、例えば、共有オブジェクト空間を含み、この空間は、ネットワークゲーミングアプリケーションにおいて、３機の対応する味方飛行機を操作するよう協力する３つのユーザと、３機の対応する敵飛行機を操作するために協力する３つの他のユーザを含む。ユーザは、それぞれの飛行機を定義するデータフィールド、例えば表１に示したデータフィールドの全てを、個別に更新する。３機の味方飛行機の場合、３機が（三次元仮想空間の観点から）密集編隊で動作している場合、３機の味方飛行機ユーザのそれぞれが、完全なデータ更新を受け取ることが重要である。例えば、３機の密集編隊の味方飛行機の内１機が着陸を決定すると、フラップ位置、補助翼位置、着陸装置位置について、着陸飛行機の表１のデータフィールドの状態を知ることが、各味方飛行機ユーザのコンピュータにおいて適当な視覚描画を行うために重要である。アプリケーション仮想空間内でより離れて位置する３機の敵飛行機の場合、興味の対象となるデータフィールドは、おそらく、位置Ｘ、位置Ｙ、位置Ｚと、対応する速度情報の範囲データのみであろう。このオブジェクトデータフィールドの削減されたセットが、表２のサブセット１グルーピングにより提供できるのは、明らかであろう。表２は、完全データ更新フィールド（表１）に比べて、通信のためにより少ない帯域幅しか要求されないことは明らかである。
【００４１】
当業者は、他のネットワークアプリケーションもまた、上述のようなデータ更新サブセット特徴を備えることができることを認めるであろう。例えば、比較的広い帯域幅要件を持つストリーミングデータアプリケーションは、ビデオ、音声、およびオーディオデータを含み、ネットワークユーザによって動的に要求することができるストリーミングデータを送信するアプリケーションを含む、データ更新サブセット特徴を利用することができる。したがって、ネットワークアプリケーションユーザ、ストリーミングデータおよびポリゴン（形状）データは、仮想空間を埋めることができる。各アプリケーションユーザは、所定のデータオブジェクトのネットワーク制御を有することができる（すなわち、データフィールドの所定のセットにより定義されるデータオブジェクト）。したがって、各ネットワークアプリケーションユーザは、ユーザが所有権を有しているオブジェクトを更新する。ビデオストリーミングオブジェクトのようなストリーミングオブジェクトを更新しているユーザの場合、ビデオストリームは、声または音を伴う顔としていくつかのアプリケーションユーザに可視であり、一方、他のアプリケーションユーザにとって、ビデオストリームは、スクリーン上のノイズとしてしか見えない。すなわち、利用可能な帯域幅、ローカルユーザの興味、または他のパラメータにしたがって、更新中ユーザの一部は、オーディオデータを含むデータフィールドのみを指定することができ、一方、他の更新中ユーザは、オーディオデータでないビデオデータを含むデータフィールドを指定することができ、または、ストリーミングオブジェクトを定義するデータフィールドの他の組み合わせを指定することができる。したがって、本発明によれば、各アプリケーションユーザは、受信中の各ビデオストリーム（および他のデータ）から要求された解像度を指定し、また、受信するリモート更新メッセージの制御を有する。ビデオストリームを制御するネットワークユーザ（クライアントまたはサーバ）は、各更新中ユーザにより要求された適当な更新データサブセットのみを送信する。上述のように、各更新中ユーザは、その動作状況に従って、必要な更新データサブセットを決定することができる。
【００４２】
上述の「所有ユーザ」は、ネットワーク共有オブジェクト空間において、１つまたは複数のオブジェクトとに対して責任のある任意のネットワークユーザ（ノード）を含むことができることを理解されたい。すなわち、ネットワークアプリケーションは、単一のユーザがアプリケーションの全てのオブジェクトを所有するように、構成することができる。これは、例えば、サーバがアプリケーション空間内の全てのオブジェクトを所有し、またデータ更新を要求するクライアントマシンと通信するようなとき、状況としてあり得る。この状況では、ネットワークアプリケーションクライアントの全てが更新中ユーザになり、更新中ユーザは、ネットワークアプリケーションの所有ユーザ（サーバ）からオブジェクト更新を要求する。したがって、ネットワークアプリケーションは、所有ユーザがネットワークノードにおいてクライアントマシンを構成しており、各クライアントがアプリケーションの共有オブジェクト空間においてひとつまたは複数の対応するオブジェクトを所有するように、構成することができる。または、ネットワークアプリケーションは、ネットワークアプリケーションの他のユーザ全てに対してオブジェクト更新を提供するアプリケーションサーバのように、アプリケーションに対して１つの所有ユーザが存在するように構成することもできる。
【００４３】
アプリケーションサーバのような、ネットワークアプリケーションに対して１つの所有ユーザが存在する状況において、上述の動的帯域幅制御を実行する方法は、当業者であれば理解されるよう。上述のように、ネットワークアプリケーションに対する１つの所有ユーザは、ネットワークアプリケーションとのユーザの対話についての状態データを保持する責任を持つユーザである。したがって、アプリケーションに対して１つの所有ユーザしか存在しない場合、そのユーザ（サーバ）は、アプリケーションユーザのそれぞれに対応するオブジェクトについて、状態情報を保持する責任を有する。例えば、ネットワークゲーミングシナリオにおいて、クライアントユーザは、共有オブジェクト空間内のユーザの動きを制御することができるが、サーバはオブジェクトを所有しており、したがって、サーバは共有空間内のクライアントユーザの対応オブジェクトに関連する状態データを保持する。したがって、クライアントユーザのそれぞれは、所有ユーザ（サーバ）から更新を要求する。
【００４４】
このように、ネットワークアプリケーションの各ユーザは、ネットワークアプリケーション共有データ空間の対応データオブジェクトの所有権を有しているか、または、ネットワークアプリケーションの単一のネットワークノードは、ユーザに対応する、ネットワークアプリケーション共有データ空間の全てのデータオブジェクトの所有権を有する。単一オブジェクト所有ノードの場合、そのノードは、通常、アプリケーションサーバと呼ばれる。図１に関して、このパラグラフの第１のシナリオにおいて、クライアントノード１０２、１０４、１０６は、それぞれ、自身のデータオブジェクトを所有する。このパラグラフの第２のシナリオにおいて、単一ユーザ（サーバ）１１０は、クライアント１０２、１０４、１０６のそれぞれを表すデータオブジェクトの所有権を有する。
【００４５】
上述の動作は、適切なネットワークコンピューティングデバイスにインストールされたとき、ネットワークアプリケーションにしたがって実行されることができる。図５および図６は、上述したような、本発明にしたがって動作するように適応することのできるネットワークコンピューティングデバイスのブロック図である。
【００４６】
図１のブロック図に示すネットワークコンピュータデバイス（クライアントおよびサーバ）は、コンピュータネットワークシステム１００のノードを含む。図５は、図１のシステム１００におけるコンピュータのブロック図であり、サーバおよびクライアントの機能を提供するコンピュータの１つに含まれるハードウェアコンポーネントを示す。図１に示すサーバおよびクライアントが同様のコンピュータ構造を全て有することができ、または、本明細書に記載した性能およびそれぞれの機能と一致する代替構造を有することもできることは、当業者であれば分かるであろう。図５の構造は、図１に示すサーバコンピュータ１１０に特に適している。
【００４７】
図５は、ネットワークコンピュータ１０２、１０４、１０６、１１０のいずれかであるような、例示的なコンピュータ５００を示す。各コンピュータ５００は、米国カリフォルニア州サンタクララのインテル社から市販されている「ペンティアム（登録商標）」マイクロプロセッサおよび関連する集積回路チップのような、中央処理装置（ＣＰＵ）５０２の制御下で動作する。コンピュータユーザは、キーボードおよびコンピュータマウス５０４からコマンドおよびデータを入力し、入力およびコンピュータ出力をディスプレイ５０６で見ることができる。ディスプレイは、通常、ビデオモニタまたはフラットパネルディスプレイである。コンピュータ５００は、また、ハードディスクドライブのような直接アクセス記憶装置（ＤＡＳＤ）５０８を含む。メモリ５１０は、通常、揮発性の半導体ランダムアクセスメモリ（ＲＡＭ）である。各コンピュータは、プログラムプロダクト記憶デバイス５１４を受け入れるプログラムプロダクトリーダ５１２を含むことが好ましく、プログラムプロダクトリーダは、プログラムプロダクト記憶デバイスからデータを読み出すことができる（また、選択的にデータを書き込むことができる）。プログラムプロダクトリーダは、例えばディスクドライブであってよく、プログラムプロダクト記憶デバイスは、磁気式フロッピーディスク（登録商標）、ＣＤ−Ｒディスク、ＣＤ−ＲＷディスク、ＤＶＤディスクなどの着脱可能な記憶メディアであってよい。
【００４８】
各コンピュータ５００は、ネットワークインタフェース５１８を通してコンピュータネットワーク５２０（インターネットまたはイントラネットなど）を介して他のコンピュータと通信することができる。ネットワークインタフェース５１８は、ネットワーク５２０とコンピュータとの間の接続５２２を介した通信を可能にする。ネットワークインタフェース５１８は、通常、例えば、種々のネットワークを介した通信を可能とするネットワークインタフェースカード（ＮＩＣ）およびモデムから構成される。
【００４９】
ＣＰＵ５０２は、コンピュータ５００のメモリ５１０に一時記憶されているプログラミングステップの制御下で動作する。プログラミングステップが実行されると、コンピュータはその機能を実行する。したがって、プログラミングステップは、それぞれのクライアントまたはサーバの機能を実現する。プログラミングステップは、プログラムプロダクト記憶デバイス５１４またはネットワーク接続５２２を通って、ＤＡＳＤ５０８から受け取ることができる。プログラムプロダクト記憶ドライブ５１２は、プログラムプロダクト５１４を受け入れ、それに記録されているプログラミングステップを読み出し、そのプログラミングステップを、ＣＰＵ５０２による実行のためにメモリ５１０に転送することができる。上述したように、プログラムプロダクト記憶デバイスは、磁気式フロッピーディスクおよびＣＤ−ＲＯＭ記憶ディスクを含む、記録されたコンピュータ可読の命令を有する複数の着脱可能なメディアの任意のひとつであってもよい。他の適切なプログラムプロダクト記憶デバイスは、磁気テープや半導体メモリチップなどである。この方法では、本発明にしたがった動作に必要である処理ステップは、プログラムプロダクト上で具現化することができる。
【００５０】
代替的に、プログラムステップは、ネットワーク５２０を介した動作メモリ５１０内に受け取られることができる。ネットワーク方法では、当業者ならば詳細に説明することなく理解するであろう既知の方法により、ネットワーク通信がネットワーク接続５２２を介して確立された後、コンピュータは、ネットワークインタフェース５１８を通してプログラムステップを含むデータをメモリ５１０に受け入れる。そして、プログラムステップはＣＰＵ５０２により実行され、これによって、コンピュータプロセスを構成する。
【００５１】
図１に示すネットワークシステム１００のネットワークコンピュータのすべてが、図５に示したものと同様の構成を有することができ、したがって、図５のコンピュータ５００に関して述べた詳細が、システム１００の全てのコンピュータに適用されるように理解されるべきであることは、理解されよう。また、コンピュータが図１に示す他のコンピュータとの通信することができ、本明細書に記載した機能をサポートすることができる限り、ネットワークコンピュータのいずれかが代替的な構造を有することができることは理解されよう。
【００５２】
例えば、図１のクライアントコンピュータ１０２、１０４、１０６のいずれかが、図６に示すビデオゲームコンソールシステムのようなコンピュータエンタテインメントシステムであってもよい。図６は、ビデオゲームコンソールシステム６００の例示的なハードウェア構成のブロック図である。
【００５３】
ビデオゲームコンソールシステム６００は、メインメモリ６０５に関連する中央処理装置（ＣＰＵ）６０１を含む。ＣＰＵ６０１は、ＯＳ−ＲＯＭ６６０に記憶されているか、または、ゲームプログラム記憶媒体からメインメモリ６０５に転送されたプログラミングステップの制御下で動作する。ＣＰＵ６０１は、プログラミングステップにしたがって、情報を処理し命令を実行するように構成される。
【００５４】
ＣＰＵ６０１は、専用バス６２５を介して、入出力プロセッサ（ＩＯＰ）６２０に通信可能に接続される。ＩＯＰ６２０は、オペレーティングシステムなどのプログラム命令を格納する不揮発性メモリからなるＯＳ  ＲＯＭ６６０にＣＰＵ６０１を接続する。命令は、メインユニット６００のスタートアップ時に、ＩＯＰ６２０を介してＣＰＵに転送されるのが好ましい。
【００５５】
ＣＰＵ６０１は、専用バス６１５を介して、グラフィック処理装置（ＧＰＵ）６１０に通信可能に接続される。ＧＰＵ６１０は、ＣＰＵ６０１から受け取った命令に従って描画プロセスを実行し、画像を構築するように構成された描画プロセッサである。例えば、ＧＰＵ６１０は、ＣＰＵ６０１により作成されＣＰＵから受け取ったディスプレイリストに基づいて、グラフィック画像を描画することができる。ＧＰＵは、グラフィックデータを記憶するバッファを含むことができる。ＧＰＵ６１０は、コンソールシステム６００に接続されたＡ／Ｖ出力デバイス６９０に画像を出力する。
【００５６】
ＩＯＰ６２０は、ＩＯＰメモリ６３０に記憶されている命令に従って、ＣＰＵ６０１および複数の周辺装置の間でのデータ交換を制御する。周辺装置には、１つまたは複数の入力コントローラ６２２、メモリカード６４０、ＵＳＢ６４５、ＩＥＥＥ１３９４シリアルバス６５０などがある。さらに、バス６５５が、ＩＯＰ６２０に通信可能に接続される。バス６５５は、ＯＳ  ＲＯＭ６６０、音声処理装置（ＳＰＵ）６５５、光ディスク制御装置６７０およびハードディスクドライブ（ＨＤＤ）６８０を含む、いくつかの付加的な装置に接続される。
【００５７】
ＳＰＵ６６５は、ＣＰＵ６０１およびＩＯＰ６２０から受けとったコマンドにしたがって、音楽、音声効果、声を作成するよう構成される。ＳＰＵ６６５は、波形データが記憶された音声バッファを含むことができる。ＳＰＵ６６５は、音声信号を作成し、その信号をスピーカに送信する。
【００５８】
ディスク制御装置６７０は、プログラムリーダを制御するように構成される。プログラムリーダは、例えば、磁気式フロッピーディスク（登録商標）、光学ＣＤ−ＲＯＭディスク、ＣＤ−Ｒディスク、ＣＤ−ＲＷディスク、ＤＶＤディスクなどの着脱可能な記憶媒体を受け入れる、光学ディスクであってもよい。
【００５９】
メモリカード６４０は、ＣＰＵ６０１がデータを読み書きすることができる記憶媒体であってもよい。好ましくは、メモリカード６４０は、ＩＯＰ６２０に挿入され、ＩＯＰ６２０から取り出すことができる。ユーザは、メモリカード６４０を使用して、データを記憶すなわち保存することができる。加えて、ビデオゲームシステム６００は、データを読み書きできる少なくとも１つのハードディスクドライブ（ＨＤＤ）６８０を備えていることが好ましい。
【００６０】
ＩＥＥＥ１３９４シリアルバス６５０またはユニバーサルシリアルバス（ＵＳＢ）６４５インターフェースなどのデータＩ／Ｏインターフェースは、図１に示すネットワークのように、ビデオゲームシステム６００からデータを出し入れすることを可能にするために、ＩＯＰ６２０に通信可能に接続されることが好ましい。
【００６１】
したがって、上述の実施形態は、複数ユーザネットワークアプリケーションに対して、コンピュータネットワークを介した、リモートクライアントからローカルクライアントへのデータ転送を改善する。改善されたデータ転送は、リモートクライアントのネットワークアプリケーションオブジェクトについての更新データの指定された量を決定することによって管理され、この指定された量は、アプリケーションオブジェクト用の完全更新データメッセージ以下である。要求メッセージは、リモートクライアントから指定された量の更新データを要求するリモートクライアントに、ローカルクライアントから送られる。指定された量の更新データがローカルクライアントで受け取られると、アプリケーションオブジェクト用のローカルクライアントデータ状態が、受け取られた更新データで更新される。この動作で、ローカルクライアントは、リモートクライアントからの全てのアプリケーションオブジェクトについての完全な更新データメッセージを常に要求する必要がなくなる。しかし、代わりに、ローカルクライアントは、アプリケーションオブジェクトの状態について削減された量の更新データを要求することができる。これにより、複数ユーザネットワークアプリケーションを実行し、アプリケーションオブジェクトのデータ状態を更新するために、ローカルクライアントにより要求される帯域幅を低減することができる。
【００６２】
本発明が理解されるように、現時点で好ましい実施形態の観点から本発明を説明してきた。しかしながら、本明細書においては個別には説明しないが、本発明を適用することのできる、システムまたはアプリケーション用の多くの構成が存在する。したがって、本発明が上述の特定の実施形態に限定されると見なされるのではなく、むしろ、本発明は、複数ユーザのアプリケーション一般に、広く適用可能であることが理解されよう。あらゆる変更、変形、または等価な構成または実装は、添付の特許請求の範囲内に包含され、したがって本発明の範囲内にあると見なされる。
【図面の簡単な説明】
【００６３】
【図１】本発明にしたがって構築されたコンピュータネットワークを示す図である。
【図２】図１のシステム内の更新中のユーザにおける、選択的なアプリケーションオブジェクト更新動作を提供するための処理を示す流れ図である。
【図３】アプリケーションユーザに対して、接続速度を指定しそれによってデータ更新サブセットを指示するよう要求する、ディスプレイスクリーン選択メニューを示す図である。
【図４】図１のシステムにおけるオブジェクト所有ユーザにおける処理を示す流れ図である。
【図５】図１に示すネットワーク内のコンピュータのブロック図であり、ハードウェア要素を示す図である。
【図６】図１に示すネットワークのネットワークノードにおけるコンピュータエンタテインメントシステムのブロック図であり、ハードウェア要素を示す図である。
【図１】
0004572119.tif 000005
【図２】
0004572119.tif 000006
【図３】
0004572119.tif 000007
【図４】
0004572119.tif 000008
【図５】
0004572119.tif 000009
【図６】
0004572119.tif 000010