(57)【特許請求の範囲】
【請求項１】
キャッシュを有するクライアントデバイスにおいて、キャッシュされたコンテンツの一貫性を管理するためのコンピュータ実装された方法であって、
キャッシュに格納された１以上のコンテンツアセットを更新する前に、
ａ）配信サーバに更新トークン値を送信し、前記配信サーバに、前記配信サーバに関連づけられたメモリに格納された、トークン値と前記キャッシュに格納された１以上のコンテンツアセットとを対応づけた更新テーブルを前記更新トークン値にもとづいて参照させることにより、前記キャッシュに格納された１以上のコンテンツアセットを特定させるステップと、
ｂ）前記配信サーバからの命令に応答して前記キャッシュから１以上のコンテンツのアセットを削除するステップと、
ｃ）前記配信サーバからの更新信号の受信に続いて前記キャッシュに格納された前記コンテンツアセットを更新するステップとを含むことを特徴とする方法。
【請求項２】
前記配信サーバから新しい更新トークン値を受信するステップと、前記更新トークン値を前記新しい更新トークン値に変更するステップとをさらに含む請求項１の方法。
【請求項３】
ステップｂ）は、前記１以上のコンテンツアセットを前記キャッシュから削除した後、前記１以上のコンテンツアセットを削除したことを前記配信サーバに通知するステップをさらに含む請求項１の方法。
【請求項４】
ステップｂ）は、前記１以上のコンテンツを前記クライアントデバイスと関連づけられたストレージデバイス上に格納された１以上の対応する置換アセットに置き換えるステップをさらに含む請求項１の方法。
【請求項５】
ステップｃ）は、前記キャッシュに格納された前記コンテンツアセットへの更新を求める情報リクエストを前記配信サーバに送信するステップを含む請求項１の方法。 
【請求項６】
ステップｃ）は、１以上の更新されたコンテンツアセットを特定する情報と、前記情報リクエストに応答して前記更新されたコンテンツアセットの１以上の対応する情報源を特定する情報とを受信するステップをさらに含む請求項５の方法。
【請求項７】
ステップｃ）は、前記１以上の情報源にアセットリクエストを送信するステップをさらに含み、前記アセットリクエストは、前記１以上の更新されたコンテンツアセットを特定する情報を含む請求項６の方法。
【請求項８】
ステップｃ）は、前記アセットリクエストに応答して前記１以上の情報源から前記１以上の更新されたコンテンツを受信するステップと、前記キャッシュに格納された１以上のコンテンツアセットを前記１以上の更新されたコンテンツアセットで置き換えるステップとをさらに含む請求項７の方法。
【請求項９】
前記キャッシュされたコンテンツアセットは１以上の補助的なコンテンツアセットを含む請求項１の方法。
【請求項１０】
前記補助的なコンテンツアセットは１以上の広告コンテンツアセットを含む請求項９の方法。
【請求項１１】
前記キャッシュに格納された前記コンテンツアセットを用いて前記クライアントデバイスでコンテンツを表示するステップをさらに含む請求項１の方法。
【請求項１２】
クライアントデバイスであって、
プロセッサと、
前記プロセッサに接続された、キャッシュを含むメモリと、
前記プロセッサによって実行されるようにメモリに具体化された命令であって、キャッシュされたコンテンツの一貫性を管理するための方法を実装するように構成された命令とを含み、
前記方法は、
ａ）配信サーバに更新トークン値を送信し、前記配信サーバに、前記配信サーバに関連づけられたメモリに格納された、トークン値と前記キャッシュに格納された１以上のコンテンツアセットとを対応づけた更新テーブルを前記更新トークン値にもとづいて参照させることにより、前記キャッシュに格納された１以上のコンテンツアセットを特定させるステップと、
ｂ）前記配信サーバからの命令に応答して前記キャッシュから１以上のコンテンツアセットを削除するステップと、
ｃ）前記配信サーバからの更新信号の受信に続いて前記キャッシュに格納された前記コンテンツアセットを更新するステップとを含むことを特徴とするクライアントデバイス。
【請求項１３】
前記キャッシュに格納されたコンテンツアセットは１以上の補助的なコンテンツアセットを含む請求項１２のクライアントデバイス。
【請求項１４】
前記補助的なコンテンツアセットは１以上の広告コンテンツアセットを含む請求項１３のクライアントデバイス。
【請求項１５】
前記キャッシュに格納された前記コンテンツアセットを用いてコンテンツを表示するように構成されたディスプレイをさらに含む請求項１２のクライアントデバイス。
【請求項１６】
配信サーバにおいて、クライアントデバイス上のキャッシュに格納されたコンテンツアセットの一貫性を管理するためのコンピュータ実装された方法であって、
ａ）クライアントデバイスから更新トークン値を受信するステップと、
ｂ）前記更新トークン値と前記配信サーバに関連づけられたメモリに格納された更新テーブルとを用いて前記キャッシュに格納された１以上のコンテンツアセットを特定するステップと、
ｃ）前記キャッシュに格納された前記１以上のアセットのいずれかと、現在の更新トークン値と前記更新テーブルから決定された更新リストにおける１以上のアセットのいずれかとの間に潜在的なコンフリクトが存在するかどうかを決定するステップと、
ｄ）ステップｃ）においてコンフリクトが存在すると判定されたならば、前記キャッシュから１以上の潜在的にコンフリクトするアセットを削除することによるコンフリクト解消を決定し、その１以上のコンフリクトするアセットを削除するように前記クライアントデバイスに命令を送信するステップと、
ｅ）ステップｃ）において潜在的なコンフリクトが存在しないと判定されたならば、前記クライアントデバイスに前記コンテンツアセットの更新に進むように通知するステップとを含むことを特徴とする方法。
【請求項１７】
ステップｄ）またはステップｅ）は、前記クライアントデバイスに前記現在の更新トークン値を送信するステップをさらに含む請求項１６の方法。
【請求項１８】
ステップｄ）は、前記潜在的にコンフリクトするアセットが前記キャッシュから削除された旨の確認を前記クライアントデバイスから受信した後、前記クライアントデバイスに前記コンテンツアセットの更新に進むように通知するステップをさらに含む請求項１６の方法。
【請求項１９】
前記コンテンツアセットは１以上の補助的なコンテンツアセットを含む請求項１６の方法。
【請求項２０】
前記補助的なコンテンツアセットは１以上の広告コンテンツアセットを含む請求項１９の方法。
【請求項２１】
ステップｄ）またはｅ）の後、前記クライアントデバイスにコンテンツアセット更新情報を送信するステップをさらに含む請求項１６の方法。
【請求項２２】
前記コンテンツアセット更新情報は、１以上の更新されたコンテンツアセットを特定する情報と、前記更新されたコンテンツアセットの１以上の対応する情報源を特定する情報とを含む請求項２１の方法。
【請求項２３】
ステップｄ）またｅ）の後、前記クライアントデバイスからの、前記キャッシュに格納された前記コンテンツアセットへの更新を求める情報リクエストに応答して、前記クライアントデバイスにコンテンツアセット更新情報を送信するステップをさらに含む請求項１６の方法。
【請求項２４】
ステップｃ）は、ステップｂ）で特定されたコンテンツアセットを、１以上のコンフリクトルールを用いて前記更新リストの前記アセットと比較するステップを含む請求項１６の方法。
【請求項２５】
前記コンフリクトルールは、２以上のコンフリクトするコンテンツアイテムに対するアセットが実質的に同時に前記キャッシュに格納されるのを防ぐように構成される請求項２４の方法。
【請求項２６】
前記コンフリクトルールは、前記クライアントデバイスが２以上のコンフリクトするコンテンツアイテムを表示するのを防ぐように構成される請求項２４の方法。
【請求項２７】
前記コンフリクトルールは、前記クライアントデバイスが契約違反にある２以上のコンフリクトするコンテンツアイテムを表示するのを防ぐように構成される請求項２４の方法。
【請求項２８】
配信サーバであって、
プロセッサと、
更新テーブルが具体化されたメモリと、
前記プロセッサによって実行されるようにメモリ内に具体化された１以上の命令であって、クライアントデバイス上のキャッシュに格納されたコンテンツアセットの一貫性を管理するための方法を実装するように構成された命令とを含み、
前記方法は、
ａ）クライアントデバイスから更新トークン値を受信するステップと、
ｂ）前記更新トークン値と前記配信サーバに関連づけられたメモリに格納された更新テーブルとを用いて前記キャッシュに格納された１以上のコンテンツアセットを特定するステップと、
ｃ）前記キャッシュに格納された前記１以上のアセットのいずれかと、現在の更新トークン値と前記更新テーブルから決定された更新リストにおける１以上のアセットのいずれかとの間に潜在的なコンフリクトが存在するかどうかを決定するステップと、
ｄ）ステップｃ）においてコンフリクトが存在すると判定されたならば、前記キャッシュから１以上の潜在的にコンフリクトするアセットを削除することによるコンフリクト解消を決定し、その１以上のコンフリクトするアセットを削除するようにクライアントデバイスに命令を送信するステップと、
ｅ）ステップｃ）において潜在的なコンフリクトが存在しないと判定されたならば、前記クライアントデバイスに前記コンテンツアセットの更新に進むように通知するステップとを含むことを特徴とする配信サーバ。
【請求項２９】
前記コンテンツアセットは、１以上の補助的なコンテンツアセットを含む請求項２８の配信サーバ。
【請求項３０】
前記補助的なコンテンツアセットは１以上の広告コンテンツアセットを含む請求項２９の配信サーバ。
【請求項３１】
前記更新テーブルは複数のアセットリストを含み、各アセットリストは、対応する更新トークン値において前記クライアントデバイスに送信すべき１以上のアセットを特定する請求項２８の配信サーバ。
【請求項３２】
メモリ内に具体化された１以上のコンフリクトルールをさらに含み、ステップｃ）は、ステップｂ）において特定されたコンテンツアセットを、前記１以上のコンフリクトルールを用いて前記更新リストの前記アセットと比較するステップを含む請求項２８の配信サーバ。
【請求項３３】
１以上のクライアントデバイスと、ネットワークを介して前記１以上のクライアントデバイスと通信するように構成された配信サーバとを含むシステムにおいて、クライアントデバイス上のキャッシュに格納されたコンテンツアセットの一貫性を管理するための方法であって、
ａ）前記クライアントデバイスに対する更新トークン値を前記配信サーバに送信するステップと、
ｂ）前記更新トークン値と前記配信サーバに関連づけられたメモリに格納された更新テーブルとを用いて前記キャッシュに格納された１以上のコンテンツアセットを特定するステップと、
ｃ）前記キャッシュに格納された前記１以上のアセットのいずれかと、現在の更新トークン値と前記更新テーブルから決定された更新リストにおける１以上のアセットのいずれかとの間に潜在的なコンフリクトが存在するかどうかを前記配信サーバが決定するステップと、
ｄ）ステップｃ）においてコンフリクトが存在すると判定されたならば、前記キャッシュから１以上の潜在的にコンフリクトするアセットを削除することによるコンフリクト解消を決定し、その１以上のコンフリクトするアセットを削除するように前記配信サーバから前記クライアントデバイスに命令を送信し、前記配信サーバからの前記命令に応答して前記クライアントデバイスが前記キャッシュから１以上の潜在的にコンフリクトするアセットを前記キャッシュから削除するステップと、
ｅ）ステップｃ）において潜在的なコンフリクトが存在しないと判定されたならば、前記配信サーバから前記クライアントデバイスに、前記クライアントデバイスが前記コンテンツアセットの更新に進むことを許可するように構成された更新信号を送信するステップと、
ｆ）前記キャッシュに格納された前記コンテンツアセットを更新するステップとを含むことを特徴とする方法。
【請求項３４】
ステップｄ）またはｅ）は、前記配信サーバから前記クライアントデバイスに前記現在の更新トークン値を送信するステップと、前記更新トークン値を前記現在の更新トークン値に変更するステップとをさらに含む請求項３３の方法。
【請求項３５】
ステップｄ）は、前記キャッシュから前記１以上のコンテンツアセットを削除した後、前記クライアントデバイスから前記配信サーバに、前記１以上のコンテンツアセットを削除した旨を示すメッセージを送信するステップをさらに含む請求項３３の方法。
【請求項３６】
ステップｄ）は、前記１以上のコンテンツを、前記クライアントデバイスに関連づけられたストレージデバイス上に格納された１以上の対応する置換アセットで置き換えるステップをさらに含む請求項３３の方法。 
【請求項３７】
ステップｆ）は、ステップｄ）またはｅ）の後、前記クライアントデバイスから前記配信サーバに前記キャッシュに格納された前記コンテンツアセットへの更新を求める情報リクエストを送信するステップを含む請求項３３の方法。
【請求項３８】
ステップｆ）は、前記情報リクエストに応答して、前記配信サーバから前記クライアントデバイスにコンテンツアセット更新情報を送信するステップをさらに含む請求項３７の方法。
【請求項３９】
ステップｆ）は、前記コンテンツアセット更新情報を含むアセットリクエストを前記１以上の情報源に送信するステップをさらに含む請求項３８の方法。
【請求項４０】
前記キャッシュに格納された前記コンテンツアセットを用いて前記クライアントデバイスでコンテンツを表示するステップをさらに含む請求項３３の方法。
【請求項４１】
ステップｄ）またはｅ）は、前記配信サーバから前記クライアントデバイスに前記現在の更新トークン値を送信するステップをさらに含む請求項３３の方法。
【請求項４２】
ステップｄ）は、前記潜在的にコンフリクトするアセットを前記キャッシュから削除した旨の確認を前記配信サーバが前記クライアントデバイスから受信した後、前記配信サーバから前記クライアントデバイスに前記更新信号を送信するステップをさらに含み、前記メッセージは、前記クライアントデバイスが前記コンテンツアセットの更新に進むように命令するように構成される請求項３３の方法。
【請求項４３】
前記コンテンツアセットは１以上の補助的なコンテンツアセットを含む請求項３３の方法。
【請求項４４】
前記補助的なコンテンツアセットは１以上の広告コンテンツアセットを含む請求項４３の方法。
【請求項４５】
ステップｃ）は、ステップｂ）で特定されたコンテンツアセットを、１以上のコンフリクトルールを用いて前記更新リストの前記アセットと比較するステップを含む請求項３３の方法。
【請求項４６】
キャッシュされたコンテンツの一貫性管理システムであって、
更新テーブルが具体化されたメモリを有する配信サーバと、
キャッシュを有するクライアントデバイスとを含み、
前記クライアントデバイスと前記配信サーバは、ネットワークを介して互いに通信するように構成され、
前記配信サーバは、
１）クライアントデバイスから更新トークン値を受信するステップと、
２）前記更新トークン値と前記更新テーブルとを用いて前記キャッシュに格納された１以上のコンテンツアセットを特定するステップと、
３）前記キャッシュに格納された前記１以上のアセットのいずれかと、現在の更新トークン値と前記更新テーブルから決定された更新リストにおける１以上のアセットのいずれかとの間に潜在的なコンフリクトが存在するかどうかを決定するステップと、
４）ステップ３）においてコンフリクトが存在すると判定されたならば、前記キャッシュから１以上の潜在的にコンフリクトするアセットを削除することによるコンフリクト解消を決定し、その１以上のコンフリクトするアセットを削除するように前記クライアントデバイスに命令する削除命令を前記クライアントデバイスに送信するステップと、
５）ステップ３）において潜在的なコンフリクトが存在しないと判定されたならば、前記クライアントデバイスに前記コンテンツアセットの更新に進むように命令する更新信号を前記クライアントデバイスに送信するステップとを実行するように構成され、
各クライアントデバイスは、
ａ）配信サーバに前記更新トークン値を送信するステップと、
ｂ）前記配信サーバからの削除命令に応答して前記キャッシュから１以上のコンテンツアセットを削除するステップと、
ｃ）前記配信サーバからの更新信号を受信すると、前記キャッシュに格納された前記コンテンツアセットを更新するステップとを実行するように構成されることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本願は、２００７年６月６日出願された同一出願人による米国特許出願第１１／７５９，１５５号の優先権の利益を主張し、その開示内容全体を参照によりここに組み入れる。
【０００２】
本願は、２００７年６月６日出願された同一出願人による米国特許出願第１１／７５９，１４３号に関連し、その開示内容全体を参照によりここに組み入れる。
【０００３】
［技術分野］
本発明は電子コンピューティングに関し、特にインタラクティブ環境におけるキャッシュされたコンテンツの管理に関する。
【背景技術】
【０００４】
インターネットが成長し、ビデオゲームのようなインタラクティブエンターテインメントが盛んになったことから、ビデオゲーム内で広告する機会が増えてきた。最初は、広告はビデオゲーム内に静的に配置されていた。インターネット接続をもつビデオゲーム機が利用可能になるにつれ、ビデオゲーム内に現れる広告を更新することが可能になってきた。これによって、ゲーム機製造会社やビデオゲーム制作会社はビデオゲーム内の広告スペースを広告主に売ることで収益を得る道が開かれるようになった。広告コンテンツはしばしばビデオゲームタイトルの性質にもとづいて変わる。それに加えて、ゲーム内のある広告スペースは他の広告スペースよりも価値がある。さらに、広告会社は、ある広告がフェーズアウトし、他の広告がフェーズインするのに伴って時間とともに変化する。したがって、特定の期間に特定のビデオゲームの特定のスペースにどの広告を置くべきかを決定するシステムをもつことが有益である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来は、ビデオゲーム機は、ゲームタイトルおよび日時、年月などを考慮してゲーム内の特定の広告スペースに置くべき広告を決定する配信サーバと接続する。しばしば現実の広告コンテンツはコンテンツサーバとして知られる別個のサーバに格納される。そのような場合、配信サーバはゲーム機に特定のコンテンツサーバにコンタクトして、１以上のコンテンツファイルをリクエストするように命令する。このコンテンツファイルは、ビデオゲーム機が特定の広告スペース用のコンテンツを生成するために使うことのできるコンテンツのアセットとしてここでは参照される。そして、ゲーム機はコンテンツサーバに直接コンタクトして指定されたコンテンツアセットをリクエストすることができる。これらのコンテンツアセットは、ビデオゲーム内の広告スペース内のコンテンツの高速な更新を容易にするべく、ビデオゲーム機上のキャッシュに一時的に格納される。
【０００６】
広告主はしばしば広告に対して何らかの形態の排他性を求める。そのような排他性は、しばしば、広告コンテンツの配信に責任があるメディア会社との契約においてしばしば同意されているものである。広告主とメディア会社間の排他的な契約により、広告主の競争者の製品またはサービスの販売を促進する広告が、特定の時間に特定のメディアチャネルに表示されないようにすることができる。一例として、このことは、競合会社の広告がビデオゲームの同じフレームに現れないことを意味する。この例には多数の置換が可能である。
【０００７】
コンピュータネットワーク上での情報配信の動的な性質のゆえに、ビデオゲーム内に表示される広告はかなり速く更新してもよい。更新を実装する際、広告または他のコンテンツの間でコンフリクトを避けることが望ましい。
【０００８】
本発明の実施の形態はこのようなコンテキストで考えられた。
【課題を解決するための手段】
【０００９】
キャッシュを有するクライアントデバイスにおいて、キャッシュされたコンテンツの一貫性を管理するためのコンピュータ実装された方法であって、キャッシュに格納された１以上のコンテンツアセットを更新する前に、ａ）配信サーバに更新トークン値を送信するステップと、ｂ）前記配信サーバからの命令に応答して前記キャッシュから１以上のコンテンツのアセットを削除するステップと、ｃ）前記配信サーバからの更新信号の受信に続いて前記キャッシュに格納された前記コンテンツアセットを更新するステップとを含むことを特徴とする方法。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係る補助コンテンツ配信システムの概略図である。
【図２Ａ】先行技術におけるキャッシュ一貫性管理の問題を説明するフロー図である。
【図２Ｂ】本発明の実施の形態に係るキャッシュされたコンテンツの一貫性管理の例を説明するフロー図である。
【図３】本発明の実施の形態に係るクライアントデバイスを説明するブロック図である。
【図４】本発明の実施の形態に係る配信サーバを説明するブロック図である。
【発明を実施するための形態】
【００１１】
以下の詳細な説明には、説明のための多くの具体的な詳細事項が含まれるが、それらに対する多くの変更や修正も本発明の技術範囲に含まれることは、当業者であれば誰でも理解するであろう。したがって、以下に説明する本発明の好適な実施形態は、クレームされた発明の普遍性をなんら損なうことなく、また限定も行うことなく記載されている。
【００１２】
図１に示すように、キャッシュされたコンテンツの一貫性管理システム１００は、１以上のクライアントデバイス１０２と１以上の配信サーバ１０４を含む。クライアントデバイス１０２と配信サーバ１０４はネットワーク１０１を介して通信するように構成される。一例として、一般性を失うことなく、ネットワーク１０１は双方向のデジタル通信ネットワークである。ネットワーク１０１はローカルエリアネットワークまたはインターネットのようなワイドエリアネットワークであってもよい。ネットワーク１０１は、本発明の実施の形態を実装するネットワーク接続を可能にするために、たとえば、ＣＡＴＶ双方向ネットワーク、ＩＳＤＮまたはｘＤＳＬ高速ネットワークのようなインフラストラクチャを用いて実装されてもよい。
【００１３】
一例として、限定するわけではないが、クライアントデバイス１０４はゲーム機であってもよい。商用のゲーム機の例には、ワシントンレッドモンドのマイクロソフトのＸｂｏｘ（商標または登録商標）、日本の京都の任天堂のＷｉｉ（商標または登録商標）、日本の東京のソニー・コンピュータエンタテインメントのプレイステーション３のようなプレイステーション（商標または登録商標）デバイスを含む。Ｘｂｏｘ（商標または登録商標）は、ワシントンレッドモンドのマイクロソフトの登録商標である。プレイステーション（商標または登録商標）は日本の東京の株式会社ソニー・コンピュータエンタテインメントの登録商標である。Ｗｉｉ（商標または登録商標）は日本の京都の任天堂の登録商標である。あるいは、クライアントデバイスは、補助コンテンツを受信し利用することができるネットワーク機能をもつ任意の他のタイプのデバイスであってもよい。そのようなデバイスには、これに限るわけではないが、携帯電話、パーソナルコンピュータ、ラップトップコンピュータ、テレビジョンセットトップボックス、携帯インターネットアクセスデバイス、携帯メールデバイス、携帯ビデオゲームデバイス、携帯情報端末、デジタル音楽プレイヤなどが含まれる。さらに、クライアントデバイス１０４は、先にリストした例における２以上のデバイスの機能を搭載してもよい。
【００１４】
ここでコンテンツという用語は、シミュレートされた環境においてディスプレイに提示されるイメージ、ビデオ、テキスト、音などを指す。そのようなコンテンツには、たとえば、背景、アバタ、シミュレートされた環境内で使われるシミュレートされたオブジェクトなど、シミュレートされた環境の不可欠な部分であるコンテンツが含まれる。コンテンツはまた、シミュレートされた環境にとって不可欠ではないが、ともに現れることがある補助コンテンツを含んでもよい。ここで補助コンテンツという用語は、たとえば、テキスト、静止画、動画、アニメーション、音、アプレット、３次元コンテンツなどの形式でクライアントデバイス１０４に無償で提供されるコンテンツを意味する。一例として、限定する趣旨ではないが、インタラクティブな環境のコンテキストでは、たとえば、ビデオゲーム、３次元コンテンツは、画像または３次元に関わるシミュレーションに関する情報を含んでもよい。そのような情報の例は、静的な幾何学からゲームタイトル自身の表現上の双方向性（インタラクティビティ）をもった部分的または全体的なゲームレベルにまで広がっている。補助コンテンツの例には、広告、公共サービスのアナウンス、ソフトウェアアップデート、インタラクティブゲームコンテンツなどが含まれる。
【００１５】
コンテンツは、補助コンテンツも含め、クライアントデバイスによってコンテンツアセットから生成される。「コンテンツアセット」という用語は、クライアントデバイスがコンテンツを生成するために使うことのできるクライアントデバイスが読み取り可能なフォーマットの情報を指す。補助コンテンツを含むコンテンツおよび対応するコンテンツアセットは、「その場で」（on the fly）、すなわちシミュレートされた環境のセッションの過程で生成してもよい。
【００１６】
補助コンテンツは、クライアントデバイス１０４によって生成されたシミュレートされた環境において１以上のあらかじめ定められた場所あるいは時間に現れる。ここでは、「シミュレートされた環境」という用語は、クライアントデバイス１０４のユーザが開始したオペレーションの間、クライアントデバイス１０４によって生成されるテキスト、静止画、動画、アニメーション、音などを指す。一例として、限定するものではないが、シミュレートされた環境は、クライアントデバイス１０４がユーザに提示するテキスト、静止画、動画、アニメーション、音によって表現されるビデオゲーム内の光景である。
【００１７】
クライアントデバイス１０４は１以上のコンテンツサーバ１０８から補助コンテンツのアセットを取り出す。配信サーバ１０６は、補助コンテンツのどの特定のアイテムが、クライアントデバイス１０４によって生成されたシミュレートされた環境内の特定のスペースまたは時間に属するかを決定する。各配信サーバ１０６は異なる地域にあるクライアントデバイス１０４に補助コンテンツを配信する責任がある。
【００１８】
たとえばキャッシュされたコンテンツが広告コンテンツを含むような実装においては、システムは、オプションとして１以上のコンテンツサーバ１０６、１以上のレポーティングサーバ１０８、および１以上のキャンペーン管理サーバ１１０を含んでもよい。ある実装では、システムはオプションとして、コンテンツの配信を促進するための調停サーバ１１２を含んでもよい。各クライアントデバイス１０２は、調停サーバ１１２に入力を提出するように構成される。調停サーバ１１２はクライアントデバイス１０２と配信サーバ１０４間の仲介者の働きをする。一例として、調停サーバ１１２はどの配信サーバ１０４が特定の地域のクライアントデバイスに対する補助コンテンツの配信を取り扱うかを決定する。調停サーバ１１２はクライアントデバイス１０２からの入力を受信し、その入力に応答して配信サーバ１０４に対するコンタクト先（連絡先）情報をクライアントデバイス１０２に送信するように構成される。各クライアントデバイス１０２はさらに調停サーバ１１２からコンタクト先情報を受信し、補助的なコンテンツスペースに対する補助コンテンツ情報を求めるリクエストをもって、そのコンタクト先情報を用いて１以上の配信サーバ１０４にコンタクトするように構成される。配信サーバ１０４は１以上のクライアントデバイス１０２からの補助的なコンテンツ情報に対するリクエストをサービスするように構成される。調停サーバ１１２は各クライアントデバイス１０４と既存の信頼関係をもっている。一例として、信頼関係は、非対称暗号としても知られる公開鍵暗号を用いて確立してもよい。クライアントデバイス１０２と調停サーバ１１２間の既存の信頼関係を利用して、複数の配信サーバ１０４の管理を委任してもよい。補助コンテンツ配信と連動する調停サーバの使用は、譲受人が共通する米国特許出願第１１／７５９，１４３号のJames E. Marr et al.“MEDIATION FOR AUXILIARY CONTENT IN AN INTERACTIVE ENVIRONMENT”に記載されており、参照によりここに組み入れる。
【００１９】
ある実施の形態では、システム１００はさらにネットワーク１０１に接続された１以上のレポーティングサーバ１０８を含む。クライアントデバイス１０２は補助コンテンツに関するユーザのアクティビティをレポートする。たとえば、広告の形態の補助コンテンツの場合、クライアントデバイス１０２は、広告が表示されたかどうか、ユーザに印象を与えたかどうかに関する情報をレポーティングサーバ１０８にレポートするように構成される。そのような印象レポートの例は、たとえば、２００５年９月３０日に出願された、譲受人が共通する米国特許出願第１１／２４１，２２９号に記述されており、その全内容をここに参照により取り入れる。ある実施の形態では、調停サーバ１１２はまた、レポーティングサーバ１０８のＵＲＬとそのレポーティングサーバと通信するための暗号鍵を提供する。
【００２０】
図２Ａは、先行技術においてしばしば直面するキャッシュされたコンテンツを管理する問題を説明する。この例では、クライアントデバイス１０２は、シミュレートされた環境内の第１および第２コンテンツスペースＳｐ１、Ｓｐ２用のコンテンツアセットを含むキャッシュ１２２を有する。
【００２１】
ここで、キャッシュという用語は、一般に特別な高速のストレージ機構を指す。一例として、キャッシュ１２２はクライアントデバイス１０２と関連づけられたメインメモリの予約されたセクションであってもよく、クライアントデバイスと関連づけられた独立した高速ストレージデバイスであってもよい。最初、キャッシュ１２２は第１スペースＳｐ１用のアセットＡと、第２スペースＳｐ２用のアセットＢを含む。キャッシュ１２２に格納されたコンテンツアセットはときどき更新される。コンテンツアセットを更新するために、クライアントデバイス１０２は、符号２０２で示すようにアセット情報を求めるリクエストをもって、ネットワーク１０１上の配信サーバとコンタクトする。配信サーバは、符号２０４で示すように、そのリクエストにアセット情報をもって応答する。アセット情報は、たとえば、ファイル名または他の識別子によって、更新アセットおよび更新アセットの情報源を特定する。情報源、たとえばコンテンツサーバ１０６は、ネットワークアドレス、たとえばＵＲＬによって特定される。この例では、配信サーバは、クライアントデバイス１０２がアドレスＣＤＮにあるコンテンツサーバ１０６からアセットＣ２０３を取得するべきであると決定する。配信サーバは、符号２０４で示すように、この情報をクライアントデバイス１０２に中継する。符号２０６で示すように、クライアントデバイス１０２はこの情報を用いて、アドレスＣＤＮにあるコンテンツサーバ１０６にアセットＣ２０３を求めるリクエスト２０５を送信する。応答の際、コンテンツサーバ１０６はクライアントデバイスにアセットＣ２０３を送信する。クライアントデバイスはその後、符号２０８で示すように、キャッシュ１２２においてアセットＡをアセットＣ２０３で置き換える。
【００２２】
その後、クライアントデバイス１０２は、符号２１０で示すように配信サーバ１０４からコンテンツスペースＳｐ２に対するアセット情報を要求する。この例では、配信サーバは、アセットＤ２０７はネットワークアドレスＣＤＮにあるコンテンツサーバ１０６から取得できることを示すレスポンスを送信する。符号２１４において、クライアントデバイスはアセットＤ２０７を求めるリクエスト２０９を送信する。クライアントデバイスは、コンテンツスペース用のアセット情報を求めるリクエストに対してリプライを受信しなかった場合は、当該スペース用のコンテンツを生成するためにキャッシュされたアセットを用いるようにしばしば構成される。しかし、クライアントデバイス１０２は一般には、キャッシュされたアセットが互いに一貫性があるかどうかを決定する方法はもたない。たとえば、アセットＢとアセットＣが使われ、符号２１６において表示されたならば、これらはコンフリクトする広告を生成する。しかし、こういった二つ以上のキャッシュされたコンテンツアセットがコンフリクトを生成することを決定するには、クライアントデバイス１０２は、コンフリクトするコンテンツを支配するルールをもってプログラムされなければならないであろう。潜在的にコンフリクトするアセットの数やコンフリクトリールの数は非常に大きくなるため、そのような解決手段を実装することはやっかいで難しい。ルールが時間とともに変化し、非常に多くのクライアントデバイスにルールを定期的に配信しなければならないならば、その困難さは一層増すことになる。
【００２３】
あるケースでは、クライアントデバイスは、他のコンテンツが利用可能でない場合（たとえば、他のコンテンツアセットがキャッシュ１２２に格納されていない場合）に表示することができる良性のコンテンツアセットを大容量ストレージデバイス１２４に格納していることがある。そのようなアセットは、他のコンテンツとコンフリクトがないようにあらかじめ構成された良性のコンテンツを生成する。たとえば、良性のコンテンツアセットＥとＦを使っても、決してコンフリクトを生じる広告は生成されない。たとえば、クライアントデバイス１０２はアセットＥとＦを使って、クライアントデバイス１０２の製造者を宣伝する広告を生成することができる。製造者は、そのような広告がコンフリクトを生じないということを他の広告主とあらかじめ合意している。残念ながら、そのような広告はクライアントデバイスの製造者にとって広告収入をもたらさない。したがって、絶対的に必要でない限り、良性のアセットを表示することを避けるのが望ましい。
【００２４】
上記の例は、キャッシュ一貫性管理の一般的な問題を説明する。この問題の性質は、上記の例からわかるように、クライアントデバイス上にキャッシュされたコンテンツアセットが、ネットワーク通信における頻繁な更新と断続的な中断のゆえに一貫性を失うことにある。キャッシュされたコンテンツアセットは多くの異なる方法で一貫性がなくなる。たとえば、キャッシュされたコンテンツアセットによって生成されるコンテンツは、単に期限切れになったり、もはや有効ではなくなるかもしれない。
【００２５】
キャッシュされたコンテンツアセットの一貫性がなくなる一つの状況は、ゲームのようなアプリケーションによってダウンロードが中断された場合に起こる。たとえば、多くのゲームは、新しいアセットをダウンロードするために固定の時間を与える。たとえば、ゲームは、ゲームコンテンツの次のレベルをブルーレイ（商標または登録商標）ドライブのような大容量デバイスからロードする間に、新しいアセットをダウンロードするのを許すだけかもしれない。いったんすべてのゲームコンテンツのダウンロードが終わると、ゲームはアセットのダウンロードを中断するかもしれない（ゲームがこの中断を実行するのをクライアントライブラリが許可するかもしれない）。これにより、アセットのダウンロードは、それが完了しているかどうかに関係なく、中断される。インターネット接続のダウンロード速度は大きく変わるため、クライアントデバイス１０２が異なれば、最新のアセットをダウンロードする時間も異なる。同じタイプ、たとえば特定のゲーム機の特定のモデルのすべてのクライアントデバイス１０２は、同じ速度でゲームコンテンツアセットをロードするのが普通であるが、あるクライアントデバイスがすべての新しいアセットをダウンロードすることに成功する一方、他のクライアントデバイスは、中断する前に最新のアセットの一部をダウンロードするだけに終わることがある。
【００２６】
キャッシュされたコンテンツアセットはまた、配信サーバ１０４またはコンテンツサーバ１０６のネットワーク負荷が重い場合にも一貫性がなくなる。サーバがクライアントデバイス１０２からのリクエストで過負荷であるとき、サーバは特定のクライアントデバイス１０２にとっては利用不可のように見える。その結果、配信サーバ１０４からのコンテンツ情報に対するリクエストまたはコンテンツサーバ１０６からのアセットに対するリクエストは、サーバでの高いネットワーク負荷のゆえにランダムに失敗することがある。
【００２７】
そのような問題を克服するために、本発明の実施の形態は、配信サーバを用いてクライアントデバイス上にキャッシュされたコンテンツアセットの一貫性を管理することのある態様を実装する。一例として、図２Ｂに示すように、配信サーバ１０４はメモリに格納された更新テーブル１２６を有する。更新テーブルは、各更新において異なるコンテンツスペースにどのコンテンツアセットが関連づけられているかを追跡するように構成されている。トークン値を各更新に関連づける。コンテンツがクライアントデバイス１０２上で更新される度に、配信サーバはその更新に関連づけられたトークン値をクライアントデバイスに送信する。更新テーブル１２６は、配信サーバ１０４がどのコンテンツアセットが現在クライアントデバイスのキャッシュ１２２に格納されているかを更新トークン値から決定するための情報を含む。たとえば、更新テーブルは、どのコンテンツアセットが特定のコンテンツスペース用にキャッシュされているかを各更新トークン値で示す複数のリストを含む。
【００２８】
一例として、更新テーブル１２６は以下の表１で示すように構成される。
【００２９】
【表１】
0005474776.tif 000002
【００３０】
配信サーバ１０４は、コンフリクトルール１２８の集合をメモリに格納する。コンフリクトルール１２８は、２以上のコンフリクトするコンテンツアイテムに対するアセットがクライアントデバイスのキャッシュ１２２に実質的に同時に格納されるのを防ぐように構成される。さらに、コンフリクトルール１２８は、クライアントデバイス１０２が２以上のコンフリクトするコンテンツアイテムを表示するのを防ぐように構成される。一例として、ルールは、以下の表２に示すように構成された１以上のコンフリクトテーブルをルックアップすることによって実装される。
【００３１】
【表２】
0005474776.tif 000003
【００３２】
表２で説明される例によれば、アセットＣとアセットＥはコンフリクトする。キャッシュにあるアセットの他のすべての組み合わせは許可される。簡単のため、アセットはそれ自身とはコンフリクトしないと仮定する。２次元のクロスリファレンステーブルを用いてアセットペア間のコンフリクトの概念を説明する。この概念は、３以上のアセットの組み合わせに対するコンフリクトルールを構築するために３次元以上のクロスリファレンステーブルに一般化することができる。
【００３３】
システム１００用のコンフリクトルールは、キャンペーン管理サーバ１１０によって管理され、ネットワーク１０１上で配信サーバ１０４に配信される。キャンペーン管理サーバ１１０はまた定期的にコンフリクトルールを更新し、ネットワーク１０１経由で配信サーバにそのような更新を送信する。
【００３４】
本発明の実施の形態にしたがって、クライアントデバイス１０２上のキャッシュ１２２に格納されたコンテンツアセットの一貫性を図２Ｂで説明するように管理する。クライアントデバイス１０２と配信サーバ１０４は、たとえば適切なプログラミングによって、クライアントデバイス１０２が自分のキャッシュ１２２に格納されたコンテンツアセットを更新する前にキャッシュ一貫性管理を実行するように構成される。具体的には、クライアントデバイス１０２は一連のクライアント側オペレーション２２０を実装するようにプログラムされ、配信サーバ１０４は一連の配信側オペレーション２４を実装するようにプログラムされる。具体的には、符号２２１で配信サーバ１０４に接続した後、クライアントデバイス１０２は、符号２２２に示すように配信サーバ１０４に更新トークン２２３を送信する。更新トークン２２３には、クライアントデバイス１０２が実行したか、実行しようとした最新の更新を示す値が関連づけられている。次に配信サーバ１０４は、符号２４２に示すように、更新トークン値２２３と更新テーブル１２６を用いてキャッシュ１２２に格納された１以上のコンテンツアセットを特定することができる。一例として、クライアントデバイス１０２が２のトークン値をもつトークン２２３を送信したとすると、配信サーバ１０４は更新テーブル１２６をルックアップし、キャッシュ１２２がコンテンツスペースＳｐ１に対してアセットＤを、コンテンツスペースＳｐ２に対してアセットＣをもっていることを判定する。
【００３５】
その後、符号２４４に示すように、配信サーバ１０４は、キャッシュ１２２に格納されたアセットのいずれかと、現在の更新に対するトークン値と更新テーブル１２６から決定される更新リストにおけるアセットのいずれかの間に潜在的なコンフリクトがあるかどうかを決定する。コンフリクトが存在すると判定された場合、符号２４６で配信サーバ１０４は、潜在的にコンフリクトする１以上のアセットをキャッシュ１２２から削除することによるコンフリクト解消を決定する。配信サーバ１０４は次にクライアントデバイス１０２にコンフリクトする１以上のアセットを削除するように命令２４８を送信する。命令２４８には現在の更新トークン値が含まれ、クライアントデバイス１０２は自分の更新トークン値をこの更新値にリセットする。命令２４８に応答してクライアントデバイス１０２は、符号２２４で示すように潜在的にコンフリクトするコンテンツアセットをキャッシュ１２２から削除する。クライアントデバイス１０２は、符号２２６に示すように削除が完了したことを配信サーバ１０４に通知する。応答において、配信サーバ１０４は更新信号２５０をクライアントデバイス１０２に送信する。更新信号２５０は、たとえば、図２Ｂに関して上述したやり方にならって、クライアントデバイス１０２にキャッシュ１２２のコンテンツアセットの更新に進むことを許可するように構成される。潜在的なコンフリクトが存在しないことが判定された場合、配信サーバ１０４は単に更新信号２５０をクライアントデバイス１０２に送信する。更新信号２５０はオプションとして現在のトークン値を含み、クライアントデバイス１０２はそれにしたがって自分の更新トークン値をリセットする。
【００３６】
一例として、配信サーバ１０４に対する現在の更新トークン値がトークン値４であると仮定する。更新テーブル１２６が表１のように構成されているならば、配信サーバ１０４は、この更新により、コンテンツスペースＳｐ１に対してアセットＥが、コンテンツスペースＳｐ２に対してアセットＡがキャッシュ１２２に置かれることになることを判定する。コンフリクトルール１２８がたとえば表２のように構成されているならば、配信サーバ１０４はコンフリクトルール１２８からアセットＣとアセットＥがコンフリクトし、アセットＤがアセットＥに置き換えられるが、アセットＣがアセットＡに置き換えられなかった場合に、潜在的なコンフリクトが存在することを判定する。したがって命令２４８はクライアントデバイス１０２にキャッシュ１２２からアセットＣを削除するように命じる。
【００３７】
この方法でキャッシュ一貫性を管理する利点は、キャッシュ一貫性管理に続く更新の例から理解することができる。再び図２Ｂを参照して、クライアントデバイス１０２は、符号２２８に示すようにアセット情報に対するリクエストを配信サーバ１０４に送信する。配信サーバ１０４は符号２５２に示すようにアセット情報をもってリクエストに応答する。アセット情報は、たとえば上述のように、更新アセットと更新アセットの情報源を特定する。一例として、配信サーバは、更新テーブル１２６と現在の更新トークン値４から、クライアントデバイス１０２はアドレスＣＤＮにあるコンテンツサーバ１０６からアセットＥ２５３を取得するべきであると判定する。配信サーバ１０４は、符号２５２に示すようにこの情報をクライアントデバイス１０２に中継する。符号２３０に示すように、クライアントデバイス１０２は次にこの情報を用いてアセットＥ２５３に対するリクエストをアドレスＣＤＮにあるコンテンツサーバ１０６に送信する。応答において、コンテンツサーバ１０６はクライアントデバイス１０２にアセットＥ２５３を送信する。クライアントデバイス１０２は、符号２５８に示すようにキャッシュ１２２においてアセットＤをアセットＥ２５３に置き換える。その後、クライアントデバイス１０２は、符号２３２に示すように配信サーバ１０４からコンテンツスペースＳｐ２用のアセット情報を要求する。この例では、配信サーバは、アセットＡ２５７はネットワークアドレスＣＤＮにあるコンテンツサーバ１０６から取得できることを示す応答を送信する。符号２３４において、クライアントデバイスはアセットＡ２５７に対するリクエスト２５９を送信する。クライアントデバイス１０２が、たとえばネットワークの停止などの理由でアセットＡを受け取ることがない場合でも、アセットＣとアセットＥの間のコンフリクトの可能性は、符号２２４においてキャッシュ１２２からアセットＣを前もって削除したことによって避けることができる。
【００３８】
上述のように、クライアントデバイス１０２は、キャッシュ１２２から削除されたコンテンツアセットを大容量ストレージ１２４からの良性のアセットで置き換えるように構成される。これにより、クライアントデバイス１０２は、ネットワークの停止が起きてもコンテンツスペースに表示するために何らかのコンテンツをキャッシュしておくことが保証される。たとえば、符号２２４でアセットＣを削除した後、クライアントデバイス１０２はオプションとして、大容量ストレージデバイス１２４からの良性のアセットＧをコンテンツスペースＳｐ２用にキャッシュ１２２にコピーすることができる。クライアントデバイス１０２はその後、符号２３６に示すようにそれぞれアセットＥ、アセットＧを用いて生成されたコンテンツスペースＳｐ１、Ｓｐ２のコンテンツを表示することができる。
【００３９】
一例として、システム１００のクライアントデバイス１０２は図３に示すように構成される。図３は、本発明の実施の形態に係るクライアントデバイス３００の構成要素を説明するブロック図である。一例として、一般性を損なうことなく、クライアントデバイス３００は、本発明の実施の形態を実施するのにふさわしい、パーソナルコンピュータ、ビデオゲーム機、パーソナルデジタル情報機器、または他のデジタルデバイスのようなコンピュータシステムとして実装される。クライアントデバイス３００は、ソフトウェアアプリケーションとオプションとしてオペレーティングシステムを実行するように構成された中央演算処理装置（ＣＰＵ）３０５を含む。ＣＰＵ３０５は、１以上のプロセッサコアを含んでもよい。一例として限定するわけではないが、ＣＰＵ３０５は、セルプロセッサのような並列プロセッサモジュールであってもよい。セルプロセッサアーキテクチャの例は、「セルブロードバンドエンジンアーキテクチャ」に詳細が記述されている。これは、ＩＢＭ、ソニー・コンピュータエンタテインメント、東芝の２００５年８月８日付けの著作権で保護されており、コピーはｈｔｔｐ：／／ｃｅｌｌ．ｓｃｅｉ．ｃｏ．ｊｐ／からダウンロード可能であり、その内容全体を参照によってここに組み入れる。
【００４０】
メモリ３０６はＣＰＵ３０５に接続されており、メモリ３０６はＣＰＵ３０５によって使用されるアプリケーションとデータを格納する。メモリ３０６は、ＲＡＭ、ＤＲＡＭ、ＲＯＭ等の集積回路の形態であってもよい。コンピュータプログラム３０３はプロセッサ３０５上で実行可能な命令の形態でメモリ３０６に格納される。プログラム３０３の命令は、たとえば、図２のクライアントデバイスステップ２１０に関して上述したような補助コンテンツ配信の方法のあるステップを実装するように構成される。一例として、プログラム３０３は、調停サーバにコンタクトし、調停サーバから配信サーバのコンタクト先情報を受信し、インタラクティブ環境内の補助コンテンツスペース用の補助コンテンツ情報を求めるリクエストをもって配信サーバにコンタクトするための命令を含む。プログラム３０３は、インタラクティブ環境を実装するように構成された命令と連動して動作する。一例として、そのような命令は、ビデオゲームプログラムのようなメインプログラム３０７の一部である。クライアントデバイス３００は、プログラム３０３の適切なプログラミングによって、クライアントデバイス３００に対するリージョン識別子とビデオゲームプログラムのタイトルに対応する情報とを調停サーバに送信するように構成される。メインプログラムはプログラム３０３を関数またはサブルーチンとして呼び出してもよい。あるいは、メインプログラム３０７は仮想世界と相互作用するためのプログラムであってもよい。仮想世界は、譲受人が共通する米国特許出願第１１／６８２，２８１号、第１１／６８２，２８４号、第１１／６８２，２８７号、第１１／６８２，２９２号、第１１／６８２，２９８号、および第１１／６８２，２９９号に記述されており、そのすべての内容をここに参照により組み入れる。
【００４１】
クライアントデバイス３００はまた、入出力（Ｉ／Ｏ）装置３１１、電源（Ｐ／Ｓ）３１２、クロック（ＣＬＫ）３１３およびキャッシュ３１４などの公知のサポート機能３１０を備えてもよい。クライアントデバイス３００はさらに、アプリケーションおよびデータ用の不揮発性のストレージを提供するストレージデバイス３１５を備えてもよい。ストレージデバイス３１５はコンテンツサーバからダウンロードされた補助コンテンツアセット３１６の一時的または長期的ストレージとして使われてもよい。一例としてストレージデバイス３１５は、固定ディスクドライブ、リムーバブルディスクドライブ、フラッシュメモリデバイス、テープドライブ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ブルーレイ（商標または登録商標）、ＨＤ−ＤＶＤ、ＵＭＤ、その他の光学式ストレージデバイスであってもよい。
【００４２】
キャッシュ３１４は、メインメモリ３０６から切り離され、区別される容易にアクセス可能なメモリハードウェアコンポーネントである。そのような場合、キャッシュ３１４はしばしばハードウェアキャッシュと呼ばれる。メモリ３０６はまた、ソフトウェアキャッシュとしてしばしば参照される、予約された容易にアクセスできる領域３０９を含んでもよい。コンテンツアセット３１７はそのようなソフトウェアキャッシュに格納されてもよい。一例として、コンテンツアセット３１７は、広告コンテンツアセットのような補助的なコンテンツアセットであってもよい。たとえばストレージデバイス３１５がディスクドライブまたは格納されたデータを上書きすることのできる他のストレージデバイスであるような場合には、ソフトウェアキャッシュは、ストレージデバイス３１５の特別に予約された領域を用いて実装される。コンテンツアセット３１７はメインメモリ内のソフトウェアキャッシュ３０９に格納されるように示されているが、本発明の実施の形態では、コンテンツアセット３１７はハードウェアキャッシュ３１４に格納してもよく、ストレージデバイス３１５を用いて実装されたソフトウェアキャッシュ内に格納してもよい。
【００４３】
１以上のユーザからのユーザ入力をコンピュータクライアントデバイス３００に伝えるために１以上のユーザ入力デバイス３２０が用いられてもよい。たとえば、１以上のユーザ入力デバイス３２０が、入出力装置３１１を介してクライアントデバイス３００に接続されてもよい。適当な入力デバイス３２０の例には、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、ライトペン、スチル／ビデオカメラ、および／またはマイクロホンが含まれる。クライアントデバイス３００は、電子通信ネットワーク３２７を介した通信を手助けするネットワークインタフェース３２５を含んでもよい。ネットワークインタフェース３２５は、ローカルエリアネットワークおよびインターネットのようなワイドエリアネットワーク上で有線または無線通信を実装するべく構成されてもよい。クライアントデバイス３００はネットワーク３２７上で１以上のメッセージパケット３２６を用いて、データおよび／またはファイルに対するリクエストを送受信することができる。
【００４４】
クライアントデバイス３００は、グラフィックプロセッシングユニット（ＧＰＵ）３３５とグラフィックスメモリ３４０とを有するグラフィックス・サブシステム３３０を更に含む。グラフィックスメモリ３４０は、出力イメージの各画素に対する画素データを格納するために使われるディスプレイメモリ（例えばフレーム・バッファ）を含む。グラフィックスメモリ３４０は、ＧＰＵ３３５と同じデバイス内に統合されてもよく、別のデバイスとしてＧＰＵ３３５に結合されてもよく、メモリ３０６内に実装されてもよい。画素データは、ＣＰＵ３０５から直接グラフィックスメモリ３４０に提供される。あるいは、ＣＰＵ３０５は、所望の出力イメージを定めるデータやインストラクションをＧＰＵ３３５に提供する。ＧＰＵ３３５はそれを用いて出力イメージの画素データを生成する。ＧＰＵ３３５は、ソフトウェアキャッシュ３０９またはハードウェアキャッシュ３１４に格納されたコンテンツアセット３１７を用いてそのような出力イメージのコンテンツの一部を生成する。所望出力イメージを定めるデータやインストラクションは、メモリ３１０やグラフィックスメモリ３４０に格納される。ある実施の形態では、ＧＰＵ３３５は、例えば、適当なプログラミングまたはハードウェア・コンフィギュレーションによって構成され、シーンのためにジオメトリ、ライティング（照明）、シェーディング、テクスチャリング、モーション、および／またはカメラパラメータを定めるインストラクションとデータから出力イメージに対する画素データを生成するための３Ｄレンダリング機能をもつ。ＧＰＵ３３５は、シェーダプログラムを実行することができるプログラム可能な実行ユニットを更に含む。
【００４５】
グラフィックス・サブシステム３３０は、表示装置３５０で表示されるべきグラフィックスメモリ３４０からのイメージに対する画素データを周期的に出力する。表示装置３５０は、クライアントデバイス３００からの信号に応じてビジュアル情報を表示することができる任意のデバイスであり、ＣＲＴ、ＬＣＤ、プラズマ、およびＯＬＥＤディスプレイを含む。コンピュータクライアントデバイス３００は、表示装置３５０にアナログまたはデジタル信号を提供する。一例として、表示装置３５０は、テキスト、数字、グラフィカルシンボル、または画像を表示するＣＲＴまたはフラットパネルスクリーンを含む。そのようなコンテンツには、たとえばビデオゲームまたは仮想世界のようなシミュレートされた環境を表す１以上の画像が含まれる。そのような環境では、ユーザはアバタ３５４によって表現される。アバタの例は、たとえば譲受人が共通する米国特許出願第１１／６８２，２８１号、第１１／６８２，２８４号、第１１／６８２，２８７号、第１１／６８２，２９２号、第１１／６８２，２９８号、第１１／６８２，２９９号に記載されており、参照によりここに組み入れる。シミュレートされた環境は、補助コンテンツ３５８が表示される１以上の補助コンテンツスペース３５６を含む。補助コンテンツはキャッシュされたアセット３１７を用いて生成される。
【００４６】
さらに、ディスプレイ３５０は、可聴もしくは検知可能な音を出すオーディオスピーカーを含んでもよい。そのような音の生成を容易にするために、クライアントデバイス３００は、ＣＰＵ３０５、メモリ３０６、および／またはストレージ３１５によって提供されたインストラクションおよび／またはデータからアナログまたはデジタル音声出力を生成するために適したオーディオプロセッサ３５５を更に含む。
【００４７】
ＣＰＵ３０５、メモリ３０６、支援機能３１０、データストレージデバイス３１５、ユーザ入力デバイス３２０、ネットワークインターフェース３２５、およびオーディオプロセッサ３５５を含むクライアントデバイス３００の構成要素は、データバス３６０を介して互いに機能的に接続されている。これらの構成要素は、ハードウェア、ソフトウェアまたはファームウェア、あるいはこれらのうちの２つ以上の組合せで実装される。
【００４８】
一例として、調停サーバ４００は図４に示すように構成される。一例として、一般性を損なうことなく、調停サーバ４００はコンピュータシステムまたは他のデジタルデバイスとして実装される。調停サーバ４００は、ソフトウェアアプリケーションとオプションとしてオペレーティングシステムを実行するように構成された中央演算処理装置（ＣＰＵ）４０５を含む。ＣＰＵ４０５は、１以上のプロセッサコアを含んでもよい。一例として限定するわけではないが、ＣＰＵ４０５は、セルプロセッサのような並列プロセッサモジュールであってもよい。
【００４９】
メモリ４０６はＣＰＵ４０５に接続されており、メモリ４０６はＣＰＵ４０５によって使用されるアプリケーションとデータを格納する。メモリ４０６は、ＲＡＭ、ＤＲＡＭ、ＲＯＭ等の集積回路の形態であってもよい。コンピュータプログラム４０３はプロセッサ４０５上で実行可能な命令の形態でメモリ４０６に格納される。現在の更新値４０１はメモリ４０６に格納される。さらに、更新テーブル４０７およびキャッシュコンフリクトルール４０９はメモリ４０６に具体化される。一例として一般性を失うことなく、コンフリクトルールは、たとえば、表２に関して上述したようなルックアップテーブルとして実装される。プログラム４０３の命令は、たとえば図２Ｂの配信側オペレーション２４０に関して上述したようなキャッシュコンテンツ一貫性管理の方法のあるステップを実施するように構成される。具体的には、配信サーバ４００は、たとえばプログラム４０３の適切なプログラミングによって、次のステップを実行するように構成される。ａ）クライアントデバイスから更新トークン値を受信し、ｂ）前記更新トークン値と現在の更新トークン値４０１とを用いて、クライアントデバイスに関連づけられたキャッシュに格納された１以上のコンテンツアセットを特定し、ｃ）キャッシュに格納された１以上のアセットのいずれかと、現在の更新トークン値と更新テーブルから決定された更新リストにおける１以上のアセットのいずれかの間に潜在的なコンフリクトが存在するかどうかを決定し、ｄ）ステップｃ）においてコンフリクトが存在すると判定されたなら、クライアントデバイスのキャッシュから１以上の潜在的なコンフリクトするアセットを削除することによるコンフリクト解消を決定し、その１以上のコンフリクトするアセットを削除するようにクライアントデバイスに命令を送信し、および／または、ｅ）ステップｃ）において潜在的なコンフリクトが存在しないと判定されたならば、クライアントデバイスにコンテンツアセットの更新に進むように通知する。コンフリクトの可能性は更新テーブル４０７とコンフリクトルール４０９を用いて決定される。
【００５０】
調停サーバ４００はまた、入出力（Ｉ／Ｏ）装置４１１、電源（Ｐ／Ｓ）４１２、クロック（ＣＬＫ）４１３およびキャッシュ４１４などの公知のサポート機能４１０を備えてもよい。調停サーバ４００はさらに、アプリケーションおよびデータ用の不揮発性のストレージを提供するストレージデバイス４１５を備えてもよい。ストレージデバイス４１５は、配信サーバアドレスや暗号鍵のようなコンタクト先情報４１６の一時的または長期的ストレージとして使われてもよい。一例としてストレージデバイス４１５は、固定ディスクドライブ、リムーバブルディスクドライブ、フラッシュメモリデバイス、テープドライブ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ブルーレイ（商標または登録商標）、ＨＤ−ＤＶＤ、ＵＭＤ、その他の光学式ストレージデバイスであってもよい。
【００５１】
１以上のユーザからのユーザ入力を調停サーバ４００に伝えるために１以上のユーザ入力デバイス４２０が用いられてもよい。たとえば、１以上のユーザ入力デバイス４２０が、入出力装置４１１を介して調停サーバ４００に接続されてもよい。適当な入力デバイス４２０の例には、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、ライトペン、スチル／ビデオカメラ、および／またはマイクロホンが含まれる。調停サーバ４００は、電子通信ネットワーク４２７を介した通信を手助けするネットワークインタフェース４２５を含んでもよい。ネットワークインタフェース４２５は、ローカルエリアネットワークおよびインターネットのようなワイドエリアネットワーク上で有線または無線通信を実装するべく構成されてもよい。クライアントデバイス４００はネットワーク４２７上で１以上のメッセージパケット４２６を用いて、データおよび／またはファイルに対するリクエストを送受信することができる。
【００５２】
ＣＰＵ４０５、メモリ４０６、支援機能４１０、データストレージデバイス４１５、ユーザ入力デバイス４２０、およびネットワークインターフェース４２５を含む調停サーバの構成要素は、データバス４６０を介して互いに機能的に接続されている。これらの構成要素は、ハードウェア、ソフトウェアまたはファームウェア、あるいはこれらのうちの２つ以上の組合せで実装される。
【００５３】
本発明の実施の形態は、クライアントデバイス自身に管理上の過度の負担を与えることなく、クライアントデバイス上にキャッシュされたコンテンツアセットの一貫性の管理を容易にする。キャッシュ一貫性管理の責任をリモートサーバにオフロードし、トークン値を用いて更新を追跡し、更新に先立ってキャッシュ一貫性管理を実行することによって、本発明の実施の形態は潜在的にコンフリクトするコンテンツアセットのキャッシュを避けることができる。
【００５４】
本発明の好ましい実施の形態を完全な形で説明してきたが、いろいろな代替物、変形、等価物を用いることができる。したがって、本発明の範囲は、上記の説明を参照して決められるものではなく、請求項により決められるべきであり、均等物の全範囲も含まれる。ここで述べた特徴はいずれも、好ましいかどうかを問わず、他の特徴と組み合わせてもよい。請求項において、明示的に断らない限り、各項目は１またはそれ以上の数量である。請求項において「〜のための手段」のような語句を用いて明示的に記載する場合を除いて、請求項がミーンズ・プラス・ファンクションの限定を含むものと解してはならない。
【図２Ａ】
0005474776.tif 000004
【図２Ｂ】
0005474776.tif 000005
【図３】
0005474776.tif 000006
【図４】
0005474776.tif 000007
【図１】
0005474776.tif 000008