(57)【要約】オリジナルのアプリケーションコードを変更及び再コンパイルする必要なしにコンピュータ装置上で実行中のビデオゲームのようなソフトウェアアプリケーションを動的に向上させるシステム、方法及びコンピュータプログラム製品。システムは、アプリケーションの実行を監視し、第１データベース内の、アプリケーションにより生成されたグラフィックス及び／またはオーディオ情報の各項目を索引付けるステージング環境を含む。その後、システム管理者または他のエンティティは、手動または自動手段により１つ以上のビジネスルールを第２データベースに投入する。各ビジネスルールは、第１データベース内の索引付けられたオブジェクトの１つ以上と関連する。
2009517752.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーションを動的に向上させる方法であって、
（ａ）前記ソフトウェアアプリケーションを第１コンピュータ装置上で実行する工程と、
（ｂ）前記第１コンピュータ装置上での実行中、前記ソフトウェアアプリケーションにより生成された関数呼出しを代行受信する工程と、
（ｃ）前記工程（ｂ）で代行受信された前記関数呼出しと関連するグラフィックスまたはオーディオオブジェクトがビジネスルールと関連するか否かを決定する工程と、
（ｄ）前記グラフィックスまたはオーディオオブジェクトがビジネスルールと関連するという決定に応答して前記ビジネスルールを適用する工程と
を含む方法。
【請求項２】
前記工程（ｂ）は、グラフィックスまたはオーディオアプリケーションプログラムインターフェース（ＡＰＩ）への関数呼出しを代行受信する工程を含む、請求項１に記載の方法。
【請求項３】
グラフィックスまたはオーディオＡＰＩへの関数呼出しを代行受信する前記工程は、前記グラフィックスまたはオーディオＡＰＩをエミュレートする工程を含む、請求項２に記載の方法。
【請求項４】
前記ビジネスルールを適用する前記工程は、前記グラフィックスまたはオーディオオブジェクトを変更する工程を含む、請求項１に記載の方法。
【請求項５】
前記グラフィックスまたはオーディオオブジェクトを変更する前記工程は、前記グラフィックスまたはオーディオオブジェクトの一部を変更する工程を含む、請求項４に記載の方法。
【請求項６】
前記グラフィックスまたはオーディオオブジェクトの一部を変更する前記工程は、広告コンテンツを前記グラフィックスまたはオーディオオブジェクト内に挿入する工程を含む、請求項５に記載の方法。
【請求項７】
前記グラフィックスまたはオーディオオブジェクトを変更する前記工程は、前記グラフィックスまたはオーディオオブジェクトを異なるグラフィックスまたはオーディオオブジェクトと置換する工程を含む、請求項４に記載の方法。
【請求項８】
前記グラフィックスまたはオーディオオブジェクトを変更する前記工程は、前記グラフィックスまたはオーディオオブジェクトを描画または再生しない工程を含む、請求項４に記載の方法。
【請求項９】
ビジネスルールを適用する前記工程は、前記工程（ｂ）において代行受信された前記関数呼出しと関連する前記グラフィックスまたはオーディオオブジェクトを描画または再生する前または後に、異なるグラフィックスまたはオーディオオブジェクトを描画または再生する工程を含む、請求項１に記載の方法。
【請求項１０】
前記ビジネスルールを適用する前記工程は、前記ソフトウェアアプリケーションと関連するグラフィック表示装置内に広告コンテンツを描画する工程を含む、請求項１に記載の方法。
【請求項１１】
前記ビジネスルールを適用する前記工程は、
前記描画された広告コンテンツとのユーザ対話を検出する工程と、
前記ユーザ対話の検出に応答して追加の情報をユーザに供給する工程と
を更に含む、請求項１０に記載の方法。
【請求項１２】
前記ビジネスルールを適用する前記工程は、
前記ソフトウェアアプリケーション内のエンドユーザの進行状況に関する情報をロギングする工程と、
前記ロギングされた情報またはその一部をネットワークエンティティへ送信する工程と
を含む、請求項１に記載の方法。
【請求項１３】
前記工程（ａ）の前に、
（ｉ）前記ソフトウェアアプリケーションを第２コンピュータ装置上で実行する工程と、
（ｉｉ）前記第２コンピュータ装置上での実行中、前記ソフトウェアアプリケーションにより生成された関数呼出しを代行受信する工程と、
（ｉｉｉ）第１データベース内の、前記工程（ｉｉ）で代行受信された前記関数呼出しと関連するグラフィックス及びオーディオオブジェクトを索引付ける工程と、
（ｉｖ）第２データベース内の、前記工程（ｉｉｉ）で索引付けられた前記グラフィックス及びオーディオオブジェクトの１つ以上とビジネスルールとを関連付ける工程とを更に含み、
前記工程（ｃ）は、前記工程（ｂ）で代行受信された前記関数呼出しと関連するグラフィックスまたはオーディオオブジェクトが、前記第２データベースに記憶されたビジネスルールと関連するか否かを決定する工程を含む、請求項１に記載の方法。
【請求項１４】
前記工程（ｉｉｉ）は、前記工程（ｉｉ）で代行受信された前記関数呼出しと関連する前記グラフィックス及びオーディオオブジェクトごとに固有識別子（ＩＤ）を計算する工程と、各固有ＩＤを前記第１データベースに記憶する工程とを含み、前記工程（ｉｖ）は、ビジネスルールを前記第２データベース内の前記固有ＩＤの１つ以上と関連付ける工程を含む、請求項１３に記載の方法。
【請求項１５】
固有ＩＤを計算する前記工程は、前記工程（ｉｉ）で代行受信された前記関数呼出しと関連する前記グラフィックス及びオーディオオブジェクトごとに巡回冗長コードを計算する工程を含む、請求項１４に記載の方法。
【請求項１６】
固有ＩＤを計算する前記工程は、暗号化及び／またはハッシングアルゴリズムを、前記工程（ｉｉ）で代行受信された前記関数呼出しと関連する前記グラフィックス及びオーディオオブジェクトの各々に適用する工程を含む、請求項１４に記載の方法。
【請求項１７】
前記工程（ｃ）は、前記工程（ｂ）で代行受信された前記関数呼出しと関連する前記グラフィックスまたはオーディオオブジェクトの固有ＩＤを計算する工程と、前記工程（ｂ）で代行受信された前記関数呼出しと関連する前記グラフィックスまたはオーディオオブジェクトの前記固有ＩＤが、前記第２データベースに記憶された固有ＩＤに一致するか否かを決定する工程とを含む、請求項１４に記載の方法。
【請求項１８】
プロセッサと、
前記プロセッサと通信するメモリと
を含むコンピュータシステムであって、前記メモリは、複数の処理命令を記憶し、
ソフトウェアアプリケーションを実行するように前記プロセッサに命令する処理命令と、
前記ソフトウェアアプリケーションにより実行中に生成された関数呼出しを代行受信するように前記プロセッサに命令する処理命令と、
前記代行受信された関数呼出しと関連するグラフィックスまたはオーディオオブジェクトがビジネスルールと関連するか否かを決定するように前記プロセッサに命令する処理命令と、
前記グラフィックスまたはオーディオオブジェクトがビジネスルールと関連するという決定に応答して前記ビジネスルールを適用するように前記プロセッサに命令する処理命令と
を記憶する、コンピュータシステム。
【請求項１９】
前記ソフトウェアアプリケーションにより実行中に生成された関数呼出しを代行受信するように前記プロセッサに命令する前記処理命令は、グラフィックスまたはオーディオアプリケーションプログラムインターフェース（ＡＰＩ）への関数呼出しを代行受信するように前記プロセッサに命令する処理命令を含む、請求項１８に記載のコンピュータシステム。
【請求項２０】
グラフィックスまたはオーディオアプリケーションプログラムインターフェース（ＡＰＩ）への関数呼出しを代行受信するように前記プロセッサに命令する前記処理命令は、前記グラフィックスまたはオーディオＡＰＩをエミュレートするように前記プロセッサに命令する処理命令を含む、請求項１９に記載のコンピュータシステム。
【請求項２１】
前記ビジネスルールを適用するように前記プロセッサに命令する前記処理命令は、前記グラフィックスまたはオーディオオブジェクトを変更するように前記プロセッサに命令する処理命令を含む、請求項１８に記載のコンピュータシステム。
【請求項２２】
前記グラフィックスまたはオーディオオブジェクトを変更するように前記プロセッサに命令する前記処理命令は、前記グラフィックスまたはオーディオオブジェクトの一部を変更するように前記プロセッサに命令する処理命令を含む、請求項２１に記載のコンピュータシステム。
【請求項２３】
前記グラフィックスまたはオーディオオブジェクトの一部を変更するように前記プロセッサに命令する前記処理命令は、広告コンテンツを前記グラフィックスまたはオーディオオブジェクト内に挿入するように前記プロセッサに命令する処理命令を含む、請求項２２に記載のコンピュータシステム。
【請求項２４】
前記グラフィックスまたはオーディオオブジェクトを変更するように前記プロセッサに命令する前記処理命令は、前記グラフィックスまたはオーディオオブジェクトを異なるグラフィックスまたはオーディオオブジェクトと置換するように前記プロセッサに命令する処理命令を含む、請求項２１に記載のコンピュータシステム。
【請求項２５】
前記グラフィックスまたはオーディオオブジェクトを変更するように前記プロセッサに命令する前記処理命令は、前記グラフィックスまたはオーディオオブジェクトを描画または再生しないように前記プロセッサに命令する処理命令を含む、請求項２１に記載のコンピュータシステム。
【請求項２６】
前記ビジネスルールを適用するように前記プロセッサに命令する前記処理命令は、前記代行受信された関数呼出しと関連する前記グラフィックスまたはオーディオオブジェクトを描画または再生する前または後に、異なるグラフィックスまたはオーディオオブジェクトを描画または再生するように前記プロセッサに命令する処理命令を含む、請求項１８に記載のコンピュータシステム。
【請求項２７】
前記ビジネスルールを適用するように前記プロセッサに命令する前記処理命令は、前記ソフトウェアアプリケーションと関連するグラフィック表示装置内に広告コンテンツを描画するように前記プロセッサに命令する処理命令を含む、請求項１８に記載のコンピュータシステム。
【請求項２８】
前記ビジネスルールを適用するように前記プロセッサに命令する前記処理命令は、
前記描画された広告コンテンツとのユーザ対話を検出するように前記プロセッサに命令する処理命令と、
前記ユーザ対話の検出に応答して追加の情報をユーザに供給するように前記プロセッサに命令する処理命令と
を更に含む、請求項２７に記載のコンピュータシステム。
【請求項２９】
前記ビジネスルールを適用するように前記プロセッサに命令する前記処理命令は、
前記ソフトウェアアプリケーション内のエンドユーザの進行状況に関する情報をロギングするように前記プロセッサに命令する処理命令と、
前記ロギングされた情報またはその一部をネットワークエンティティへ送信するように前記プロセッサに命令する処理命令と
を含む、請求項１８に記載のコンピュータシステム。
【請求項３０】
前記代行受信された関数呼出しと関連するグラフィックスまたはオーディオオブジェクトがビジネスルールと関連するか否かを決定するように前記プロセッサに命令する前記処理命令は、
前記グラフィックスまたはオーディオオブジェクト用に固有識別子（ＩＤ）を計算するように前記プロセッサに命令する処理命令と、
前記グラフィックスまたはオーディオオブジェクト用に計算された前記固有ＩＤを、データベースに記憶されたビジネスルールと関連する固有ＩＤと比較するように前記プロセッサに命令する処理命令と
を含む、請求項１８に記載のコンピュータシステム。
【請求項３１】
前記グラフィックスまたはオーディオオブジェクト用に固有ＩＤを計算するように前記プロセッサに命令する前記処理命令は、前記グラフィックスまたはオーディオオブジェクト用に巡回冗長コードを計算するように前記プロセッサに命令する処理命令を含む、請求項３０に記載のコンピュータシステム。
【請求項３２】
前記グラフィックスまたはオーディオオブジェクト用に固有ＩＤを計算するように前記プロセッサに命令する前記処理命令は、暗号化及び／またはハッシングアルゴリズムを前記グラフィックスまたはオーディオオブジェクトに適用するように前記プロセッサに命令する処理命令を含む、請求項３０に記載のコンピュータシステム。
【請求項３３】
制御ロジックが記憶されたコンピュータ使用可能媒体を含むコンピュータプログラム製品であって、前記制御ロジックは、
ソフトウェアアプリケーションにより実行中に生成された関数呼出しをコンピュータに代行受信させる第１コンピュータ可読プログラムコード手段と、
前記代行受信された関数呼出しと関連するグラフィックスまたはオーディオオブジェクトがビジネスルールと関連するか否かを前記コンピュータに決定させる第２コンピュータ可読プログラムコード手段と、
前記グラフィックスまたはオーディオオブジェクトが前記ビジネスルールと関連するという決定に応答して前記コンピュータにビジネスルールを適用させる第３コンピュータ可読プログラムコード手段と
を含むコンピュータプログラム製品。
【請求項３４】
前記第１コンピュータ可読プログラムコード手段は、グラフィックスまたはオーディオアプリケーションプログラムインターフェース（ＡＰＩ）への関数呼出しを前記コンピュータに代行受信させる手段を含む、請求項３３に記載のコンピュータプログラム製品。
【請求項３５】
グラフィックスまたはオーディオＡＰＩへの関数呼出しを前記コンピュータに代行受信させる前記手段は、前記グラフィックスまたはオーディオＡＰＩを前記コンピュータにエミュレートさせる手段を含む、請求項３４に記載のコンピュータプログラム製品。
【請求項３６】
前記第３コンピュータ可読プログラムコード手段は、前記グラフィックスまたはオーディオオブジェクトを前記コンピュータに変更させる手段を含む、請求項３３に記載のコンピュータプログラム製品。
【請求項３７】
前記グラフィックスまたはオーディオオブジェクトを前記コンピュータに変更させる前記手段は、前記グラフィックスまたはオーディオオブジェクトの一部を前記コンピュータに変更させる手段を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項３８】
前記グラフィックスまたはオーディオオブジェクトの一部を前記コンピュータに変更させる前記手段は、前記グラフィックスまたはオーディオオブジェクト内へ広告コンテンツを前記コンピュータに挿入させる手段を含む、請求項３７に記載のコンピュータプログラム製品。
【請求項３９】
前記グラフィックスまたはオーディオオブジェクトを前記コンピュータに変更させる前記手段は、前記コンピュータに前記グラフィックスまたはオーディオオブジェクトを異なるグラフィックスまたはオーディオオブジェクトと置換させる手段を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４０】
前記グラフィックスまたはオーディオオブジェクトを前記コンピュータに変更させる前記手段は、前記コンピュータに前記グラフィックスまたはオーディオオブジェクトを描画または再生させない手段を含む、請求項３６に記載のコンピュータプログラム製品。
【請求項４１】
前記第３コンピュータ可読プログラムコード手段は、前記代行受信された関数呼出しと関連する前記オブジェクトを描画または再生する前または後に、異なるグラフィックスまたはオーディオオブジェクトを前記コンピュータに描画または再生させる手段を含む、請求項３３に記載のコンピュータプログラム製品。
【請求項４２】
前記第３コンピュータ可読プログラムコード手段は、前記ソフトウェアアプリケーションと関連するグラフィック表示装置内に広告コンテンツを前記コンピュータに描画させる手段を含む、請求項３３に記載のコンピュータプログラム製品。
【請求項４３】
前記第３コンピュータ可読プログラムコード手段は、
前記描画された広告コンテンツとのユーザ対話を前記コンピュータに検出させる手段と、
前記ユーザ対話の検出に応答してユーザへ追加の情報を前記コンピュータに供給させる手段と
を更に含む、請求項４２に記載のコンピュータプログラム製品。
【請求項４４】
前記第３コンピュータ可読プログラムコード手段は、
前記ソフトウェアアプリケーション内のエンドユーザの進行状況に関する情報を前記コンピュータにロギングさせる手段と、
前記ロギングされた情報またはその一部をネットワークエンティティへ前記コンピュータに送信させる手段と
を含む、請求項３３に記載のコンピュータプログラム製品。
【請求項４５】
前記第２コンピュータ可読プログラムコード手段は、
前記グラフィックスまたはオーディオオブジェクト用に固有識別子（ＩＤ）を前記コンピュータに計算させる手段と、
前記グラフィックスまたはオーディオオブジェクト用に計算された前記固有ＩＤと、データベースに記憶されたビジネスルールと関連する固有ＩＤとを前記コンピュータに比較させる手段と
を含む、請求項３３に記載のコンピュータプログラム製品。
【請求項４６】
前記グラフィックスまたはオーディオオブジェクト用に固有ＩＤを前記コンピュータに計算させる前記手段は、前記グラフィックスまたはオーディオオブジェクト用に巡回冗長コードを前記コンピュータに計算させる手段を含む、請求項４５に記載のコンピュータプログラム製品。
【請求項４７】
前記グラフィックスまたはオーディオオブジェクト用に固有ＩＤを前記コンピュータに計算させる前記手段は、暗号化及び／またはハッシングアルゴリズムを前記グラフィックスまたはオーディオオブジェクトへ前記コンピュータに適用させる手段を含む、請求項４５に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、概して、ソフトウェアアプリケーションに関する。特に、本発明は、コンピュータ装置上で実行中のソフトウェアアプリケーションを動的に向上させる技術に関する。
【背景技術】
【０００２】
（背景）
ソフトウェアアプリケーション、特にビデオゲームは、様々な技術を用いて表示装置にグラフィックス情報を描画する。１つの周知の技術は、ＤｉｒｅｃｔＸ（登録商標）またはＯｐｅｎＧＬ（登録商標）のような低レベルアプリケーションプログラミングインターフェース（ＡＰＩ）への関数呼出しを行うことである。このような関数呼出しの受信に応答して、これらＡＰＩは、コマンドをコンピュータシステムのグラフィックスハードウェアへ送出し、あるいはまた、ソフトウェアの関連のハードウェア機能をエミュレートしようとする。これに類似して、ソフトウェアアプリケーションは、ＤｉｒｅｃｔＸ（登録商標）ＡＰＩスイート内のＡＰＩであるＤｉｒｅｃｔＳｏｕｎｄ（登録商標）への関数呼出しを行うことによりオーディオ情報を再生することができる。
【０００３】
これらアプリケーションにより描画されるグラフィックス及びオーディオ情報の一部を動的な「ビジネスルール」セットに基づいて補強するため、このようなアプリケーションをエンドユーザ（例えば、パブリッシャ、リテイラ及びサービスプロバイダ）が利用できるようにすることは様々な関係者にとって興味深いことである。例えば、このようなビジネスルールを用いて、ビデオゲームにより描画されるグラフィックス要素上に広告コンテンツを表示するか、または、ビデオゲームにより再生されるオーディオストリーム内に広告コンテンツを挿入することができる。理想的には、これらをビジネスルールの動的性質により周期的に変更することができる。例えば、挿入された広告コンテンツを周期的に変更することができるのが有利である。
【０００４】
このことを達成する１つの可能な方法は、オリジナルのアプリケーションロジックまたは「ソースコード」へ直接にビジネスルールを埋め込み、その後、これらビジネスルールと一緒にアプリケーションを再コンパイルすることである。しかし、ビジネスルールに適合させるようにアプリケーションを符号化し再コンパイルするこの技術を、すべてのソフトウェアアプリケーションが達成できるとは限らない。一例として、ビジネスルールを挿入したい関係者はソースコードへのアクセス権を持っていないことがある。別の例として、向上されようとするアプリケーションは、この分野では既に配布されるか、または、消費者などにより購入される。
【０００５】
アプリケーションへのグラフィックスコンテンツの動的挿入を達成する別の方法は、アプリケーションのソフトウェア開発段階中、特別なクライアントソフトウェアをオリジナルのアプリケーションロジックへ組み入れることである。アプリケーションが実行された時、特別なクライアントソフトウェアは、予め定義された何らかのビジネスルールに基づいて、アプリケーションにより前もって識別され登録された予め割り当てられた空間内にアプリケーションへのグラフィックスコンテンツを動的に挿入することができるサーバと通信するようにアプリケーションを作用する。しかし、オリジナルにプログラムされたアプリケーションが、開発期間中に連結される必須の特別なクライアントソフトウェアを含み、動的に挿入されたグラフィックス情報が現れる空間を前もって識別した場合のみ、この方法が有効であるため、この方法は制限される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従って、コンピュータ装置上で実行中のビデオゲームのようなアプリケーションを、オリジナルのアプリケーションコードを変更及び再コンパイルする必要なしに動的に向上させるシステム、方法及びコンピュータプログラム製品が求められる。アプリケーションの動的な向上は、アプリケーションにより実行中に生成されるグラフィックス及び／またはオーディオ情報を動的に変更するか、アプリケーションの実行中、追加のグラフィックス及び／またはオーディオ情報を動的に描画するか、または、アプリケーションのソースコードにより供給または呼出されていない実行中のアプリケーションに関連する他の関数を実行する機能を含む必要がある。
【課題を解決するための手段】
【０００７】
本発明は、オリジナルのアプリケーションコードを変更及び再コンパイルする必要なしにコンピュータ装置上で実行中のビデオゲームのようなアプリケーションを動的に向上させるシステム、方法及びコンピュータプログラム製品を提供する。一実施において、アプリケーションの動的な向上は、アプリケーションにより実行中に生成されたグラフィックス及び／またはオーディオ情報を動的に変更する機能を含む。別の実施において、アプリケーションの動的な向上は、アプリケーションの実行中、追加のグラフィックス及び／またはオーディオコンテンツを描画することを含む。更なる別の実施において、アプリケーションの動的な向上は、アプリケーションのソースコードにより供給または呼出されていない実行中のアプリケーションに関連する他の関数を実行することを含む。
【０００８】
一実施において、本発明の一実施形態によるシステムは、アプリケーションの実行を監視し、第１データベース内の、アプリケーションにより生成されたグラフィックス及び／またはオーディオ情報の各項目を索引付けるステージング環境を含む。その後、システム管理者または他のエンティティは、手動または自動手段により１つ以上のビジネスルールを第２データベースに投入する。各ビジネスルールは、第１データベース内の索引付けられた項目の１つ以上と関連する。このシステムは、実行時中、アプリケーションにより生成されたグラフィックス及び／またはオーディオ情報の項目を識別し、第２データベースを用いて、識別された項目がビジネスルールと関連するか否かを決定し、識別された項目がビジネスルールと関連するという決定に応答して、ビジネスルールを適用する実行時環境を更に含む。ビジネスルールの適用は、アプリケーションにより実行中に生成されたグラフィックス及び／またはオーディオ情報の変更、追加のグラフィックス及び／またはオーディオ情報の描画、または、アプリケーションのソースコードにより供給または呼出されていない実行中のアプリケーションに関連する他の関数の実行を生じさせることができる。
【０００９】
本発明の様々な実施形態の構造及び動作のみならず本発明の更なる特徴及び利点をも、添付図面を参照して以下に詳細に説明する。当然のことながら、本発明は、本明細書で説明される具体的な実施形態に限定されるものではない。このような実施形態は、本明細書において例示目的のみで示されている。本明細書に含まれた教示に基づく追加の実施形態は当業者に明らかである。
【発明を実施するための最良の形態】
【００１０】
本明細書に組み入れられ、本明細書の一部を形成する添付図面は本発明を例示し、更に、図面に関する説明と併せて本発明の原理を説明し、当業者に本発明を製造及び使用させることができるようにする。
【００１１】
本発明の特徴及び利点は、同様の符号が対応する要素を特定する図面と併せて理解されれば、以下に述べる詳細な説明から更に明らかとなる。図中、一般的に、同様の符号は同一の、機能的に類似し、かつ／または構造的に類似した要素を示す。要素が始めて現れる図面は、要素に対応する符号の一番左の数字で示される。
【００１２】
（発明の詳細な説明）
（Ｉ．  コンピュータ装置上で実行中のソフトウェアアプリケーションを動的に向上させるシステム）
図１には、本発明の一実施形態に従ってコンピュータ装置上で実行中のアプリケーションの動的な向上を容易にする例示的なシステム１００のハードウェア構成要素を示す。図１に示されるように、システム１００は、ステージング環境１０２及び実行時環境１０６の双方を含む。ステージング環境１０２は、後で実行時環境１０６により実行される動作を容易にするために行われるべき処理工程を実行する。特に、本明細書で更に詳細に説明されるように、ステージング環境１０２は、コンピュータ装置上で実行中のビデオゲームのようなソフトウェアアプリケーションを監視し、アプリケーションにより生成されたグラフィックス及びオーディオオブジェクトを識別し、グラフィックス／オーディオオブジェクトデータベース１０４内のこれらオブジェクトの各々に固有識別子（ＩＤ）と共に索引付ける。理想的には、この処理は、１つのソフトウェアアプリケーションにつき１回の実行を必要とするだけである。
【００１３】
本明細書で更に詳細に説明されるように、ステージング環境１０２にグラフィックス／オーディオオブジェクトデータベース１０４が投入された後、システム管理者または他のエンティティは、手動または自動手段により「ビジネスルール」セットをビジネスルールデータベース１０８に投入する。データベース１０８内の各ビジネスルールは、グラフィックス／オーディオオブジェクトデータベース１０４内の索引付けられたオブジェクトの固有ＩＤの１つ以上と関連する。
【００１４】
実行時環境１０６は、エンドユーザがアプリケーションソフトウェアを実際に実行する環境を意味する。実行時環境１０６のアプリケーションは、完全に同一である必要はないが本質的に同じコンピュータプログラムの別のコピーまたはインスタンスであるという点で、ステージング環境１０２において実行されるアプリケーションと「同じ」である。本明細書で更に詳細に説明されるように、実行時環境１０６は、コンピュータ装置上のアプリケーションの実行を監視し、しかも、アプリケーションにより生成されたグラフィックス及びオーディオオブジェクトを識別する。アプリケーションにより生成されたオブジェクトが、前述したビジネスルールデータベース１０８内のオブジェクトと関連するビジネスルールに一致するということを実行時環境１０６が決定した場合、ビジネスルールを適用する。本明細書で他のビジネスルールも説明されるが、例えば、ビジネスルールを用いて、実行時中に（すなわち、ソフトウェアアプリケーションの実行中）オブジェクトを変更するか否かを決定することができる。
【００１５】
ハードウェア構成要素に関して、ステージング環境１０２及び実行時環境１０６の各々は、グラフィックス及びオーディオ情報を生成するソフトウェアアプリケーションを実行するように構成されたコンピュータ装置から成る。各コンピュータ装置は、アプリケーション生成グラフィックス情報を描画及び表示し、アプリケーション生成オーディオ情報を再生するアプリケーションプログラムインターフェースを更に含む。便宜上、この時点から、ステージング環境１０２及び実行時環境１０６の各々を、パーソナルコンピュータ（ＰＣ）に基づくコンピュータシステムを含むものとして説明する。ただし、本発明はこれに限定されない。例えば、ステージング環境１０２及び実行時環境１０６は各々、サーバ、コンソール、携帯情報端末（ＰＤＡ）または、ソフトウェアアプリケーションを実行し関連のアプリケーション生成グラフィックス及びオーディオ情報をエンドユーザに表示することができる他の任意のコンピュータ装置を含むことができる。
【００１６】
図２には、システム１００のソフトウェア構成要素を示す。図２に示すように、ステージング環境１０２は、アプリケーション２０２、代行受信構成要素（ｉｎｔｅｒｃｅｐｔｉｏｎ  ｃｏｍｐｏｎｅｎｔ）２０４、索引付け構成要素２０６及び低レベルグラフィックス／オーディオ関数２０８を含む。アプリケーション２０２は、ステージング環境１０２内で実行されるビデオゲームのようなソフトウェアアプリケーションである。低レベルグラフィックス／オーディオ関数２０８は、コンピュータシステムのメモリに存在し、アプリケーション２０２によるアクセスが可能であって、アプリケーション生成グラフィックス情報の描画及びアプリケーション生成オーディオ情報の再生中にアプリケーション２０２を支援するソフトウェア関数である。一実施形態では、低レベルグラフィックス／オーディオ関数２０８は、ＤｉｒｅｃｔＸ（登録商標）またはＯｐｅｎＧＬ（登録商標）のような低レベルアプリケーションプログラムインターフェース（ＡＰＩ）内に１つ以上の関数を含む。
【００１７】
実行中、アプリケーション２０２が低レベルグラフィックス／オーディオ関数２０８への関数呼出しを行うように、アプリケーション２０２はプログラムされている。低レベルグラフィックス／オーディオ関数２０８とアプリケーション２０２との対話は当該技術分野において周知である。しかし、本発明の一実施形態によれば、このような関数呼出しは代行受信構成要素２０４により代行受信され、低レベルグラフィックス／オーディオ関数２０８に受け渡される前に索引付け構成要素２０６に供給される。代行受信構成要素２０４及び索引付け構成要素２０６は、アプリケーション２０２の実行前にステージング環境１０２のコンピュータシステムにインストールされるソフトウェア構成要素である。本明細書で更に詳細に説明されるように、索引付け構成要素２０６は、代行受信された関数呼出しと関連するグラフィックス及びオーディオオブジェクトを識別し、グラフィックス／オーディオオブジェクトデータベース１０４内の各オブジェクトを固有ＩＤと共に索引付ける。
【００１８】
本発明の一実施形態では、代行受信構成要素２０４は、対応する低レベルグラフィックス／オーディオ関数２０８の１つ以上のエミュレートバージョンを含む。例えば、低レベルグラフィックス／オーディオ関数２０８が（動的リンクライブラリまたはＤＬＬのような）グラフィックス及びオーディオライブラリに含まれる実施形態では、代行受信構成要素２０４は、エミュレートされた１つ以上のライブラリを含む。これらエミュレートされたライブラリは実行時にアプリケーション２０２にリンクされるように交換するためのものであるオリジナルのライブラリと同じ名前を有する。次に、エミュレーションによる受信代行の特定の一例を、図３及び図４を参照して説明する。
【００１９】
図３には、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）搭載ＰＣの従来のソフトウェアアーキテクチャ３００を示す。図３に示すように、ソフトウェアアーキテクチャ３００は、ＰＣ上で実行する３２ビットＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）アプリケーション３０２を含む。実行中、アプリケーション３０２は、周知の通りにＤｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４への関数呼出しを行う。当業者により明らかなように、Ｄｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４は、ＰＣメモリに存在し、アプリケーション３０２によるアクセスが可能である一連のライブラリを含み、この一連のライブラリは、グラフィックス情報を描画及び表示するアプリケーション３０２により呼出すことができる関数を含む。アプリケーション３０２からの関数呼出しの受信に応答して、Ｄｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４は、このような関数をＰＣ内のグラフィックスハードウェア３０８により実行できるか否かを決定する。このような関数をＰＣ内のグラフィックスハードウェア３０８により実行できる場合、Ｄｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４は、コマンドをグラフィックスハードウェア３０８用の装置ドライバインターフェース（ＤＤＩ）３０６へ送出する。次に、ＤＤＩ３０６は、グラフィックスハードウェア３０８により処理されるコマンドを処理する。
【００２０】
図３に示される従来のソフトウェアアーキテクチャとは対照的に、図４には、本発明の一実施形態に従って、エミュレートされたグラフィックス及びオーディオライブラリを含むソフトウェアアーキテクチャを示す。図４に示すように、代行受信構成要素２０４は、アプリケーション３０２とＤｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４との間に挿入されている。このことを、Ｄｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４内の１つ以上のグラフィックスまたはオーディオライブラリをエミュレートすることにより達成することができる。結果として、アプリケーション３０２により生成された特定の関数呼出しは、Ｄｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４よりはむしろ代行受信構成要素２０４により受信される。代行受信構成要素２０４は、代行受信された関数呼出し、または、代行受信された関数呼出しと関連するグラフィックス及びオーディオオブジェクトを索引付け構成要素２０６へ供給する。代行受信構成要素２０４は、Ｄｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４への呼出しを行うことにより関数呼出しをＤｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４にも受け渡し、Ｄｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４では、これら関数呼出しは従来通りに処理される。しかし、関数呼出しは、本発明を実施するのにＤｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４へ必ずしも受け渡されることを必要としないことに留意すべきである。
【００２１】
オペレーティングシステムに依存して、純粋なグラフィックスＡＰＩのエミュレーションを様々な方法で達成することができる。純粋なグラフィックスＡＰＩをエミュレートする１つの方法はファイル置換である。例えば、ＤｉｒｅｃｔＸ（登録商標）及びＯｐｅｎＧＬ（登録商標）の双方はファイルから動的にロードされるので、適切なファイル（ＯｐｅｎＧＬ（登録商標）に対するＯｐｅｎＧＬ．ｄｌｌ及びＤｉｒｅｃｔＸ（登録商標）に対するｄ３ｄＸ．ｄｌｌ、ここで、ＸはＤｉｒｅｃｔＸ（登録商標）バージョンである）を単に置換することによりエミュレーションを達成することができる。あるいはまた、ＤＬＬを、類似のインターフェースを有するスタブＤＬＬと置換することができる。このインターフェースはｈｏｏｋ関数以外のあらゆる関数に対してオリジナルのＤＬＬへのパススルー呼出しを実施する。
【００２２】
用いることができる別の方法は、ワシントン州レッドモンドのＭｉｃｒｏｓｏｆｔ（登録商標）社により公開された迂回（Ｄｅｔｏｕｒｓ）フックライブラリを用いてＡＰＩへの関数呼出しを代行受信または「フック」することである。カーネルレベルでもフックを実施することができる。カーネルフックは、呼出されるＡＰＩの通知ルーチンを有効にするオペレーティングシステム（ＯＳ）対応フックの使用を含むことができる。別の技術は、ＯＳ  ＡＰＩテーブルのポインタをフックルーチンポインタに変更し、フックロジックの実行の前及び／または後、オリジナルのＯＳルーチンへの呼出しを連鎖することによりＯＳルーチンを置換することである。別の可能な方法は、ＤＬＬをロードするようにレジストリキーを設定するか、または、システムグローバルフックを設定することにより、ロードされる任意の処理へＤＬＬの導入を実行する、ＡＰＩに基づくフック技術である。この導入は、処理アドレス空間内で実行するｈｏｏｋ関数を有するためのみに行われる。ＯＳがこのようなＤＬＬをロードする間、ＤＬＬ初期化コードは所望のＤＬＬディスパッチテーブルを変更する。テーブルの変更は、（所望のＡＰＩのみへの）ＤＬＬ実施を指し示すオリジナルのＡＰＩ実施へのポインタを生じさせ、ＡＰＩをフックする。フック技術は、例えば、ウェブページｈｔｔｐ：／／ｗｗｗ．ｃｏｄｅｇｕｒｕ．ｃｏｍ／ｓｙｓｔｅｍ／ａｐｉｈｏｏｋ．ｈｔｍｌに記述されている。前述したフック技術は一例であって、これら技術が本発明を限定することを意味しないことに留意すべきである。グラフィックスまたはオーディオＡＰＩへの関数呼出しを代行受信する他のツール及び方法は当業者に既知である。
【００２３】
図２に更に示されるように、実行時環境１０６は、アプリケーション２１０、代行受信構成要素２１２、ビジネスロジック２１４及び低レベルグラフィックス／オーディオ関数２１６を含む。完全に同一である必要はないが本質的に同じコンピュータプログラムの別のコピーまたはインスタンスであるという点で、アプリケーション２１０はステージング環境１０２のアプリケーション２０２と「同じ」である。低レベルグラフィックス／オーディオ関数２１６は、コンピュータシステムのメモリに存在し、アプリケーション２０２によるアクセスが可能であって、アプリケーション生成グラフィックス情報の描画及びアプリケーション生成オーディオ情報の再生中にアプリケーション２１０を支援するソフトウェア関数である。低レベルグラフィックス／オーディオ関数２０８，２１６は、それらが類似のＡＰＩを介して同じ機能及びサービスをアプリケーション２０２及びアプリケーション２１０へそれぞれ提供するという意味で類似する。
【００２４】
実行時環境１０６のコンピュータシステム上の実行中、アプリケーション２１０は、アプリケーション２２０がステージング環境１０２の低レベルグラフィックス／オーディオ関数２０８への関数呼出しを行うことと同じ周知の通りに低レベルグラフィックス／オーディオ関数２１６への関数呼出しを行う。しかし、本発明の一実施形態によれば、このような関数呼出しは代行受信構成要素２１２により代行受信され、代行受信構成要素２１２は、関数呼出しを低レベルグラフィックス／オーディオ関数２１６及び／またはビジネスロジック２１４に受け渡される。代行受信構成要素２１２及びビジネスロジック２１４は、アプリケーション２１０の実行前に実行時環境１０６のコンピュータシステムにインストールされるソフトウェア構成要素である。
【００２５】
代行受信構成要素２１２が関数呼出しを代行受信する場合、関連のオブジェクトと一緒にコントロールをビジネスロジック２１４へ受け渡す。ビジネスロジック２１４は、オブジェクトがデータベース１０８内の１つ以上のビジネスルールと関連するか否かを決定する。オブジェクトがデータベース１０８内のビジネスルールと関連する場合、ビジネスロジック２１４はビジネスルールを適用する。
【００２６】
一実施形態では、ビジネスルールの適用は結果として、実行時、（照明源、視点、テクスチャまたは陰影付けを含むことができる）オブジェクトの変更を生じさせる。いかなる変更も生じさせない場合、代行受信された関数呼出しは単に低レベルグラフィックス／オーディオ関数２１６へ受け渡される。変更が生じる場合、ビジネスロジック２１４により単独で、または、低レベルグラフィックス／オーディオ関数２１６と連動してビジネスロジック２１４により、関数呼出しを処理することができる。本明細書で更に詳細に説明されるように、オブジェクトの変更は、オブジェクトの一部を変更すること、オブジェクトを異なるオブジェクトと置換すること、または、オブジェクトを単に描画または再生しないことを含む。本明細書には、他のビジネスルールの適用も説明される。
【００２７】
図５には、代行受信構成要素２１２がエミュレーションにより実施される実行時環境１０６用の例示的なソフトウェアアーキテクチャを示す。図５に示されるように、代行受信構成要素２１２は、Ｗｉｎｄｏｗｓ（登録商標）アプリケーション３０２とＤｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４との間に挿入されている。図４を参照して前述されたソフトウェアアーキテクチャと同様に、このことを、Ｄｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４内の１つ以上のグラフィックスまたはオーディオライブラリをエミュレートすることにより達成することができる。結果として、アプリケーション３０２により生成された特定の関数呼出しは、Ｄｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４よりはむしろ代行受信構成要素２１２により受信される。図５にも示されるように、一実施形態において、代行受信構成要素２１２及びビジネスロジック２１４の双方はＤｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩ３０４への関数呼出しを行うことができ、ビジネスロジック２１４はコマンドをＤＤＩ５０６へ直接に送信することができる。ビジネスロジック２１４がこの機能を有するか否かは、適用されるビジネスルールの性質に依存する。
【００２８】
一実施形態では、グラフィックス／オーディオオブジェクトデータベース１０４はステージング環境１０２のコンピュータシステムの局所メモリに生成または投入される。次に、システム管理者または他のエンティティは、手動または自動手段により１つ以上のビジネスルールをビジネスルールデータベース１０８に投入する。各ビジネスルールは、第１データベース内の索引付けられたオブジェクトの１つ以上と関連する。ビジネスルールとオブジェクトとの間の関連性は、データベース１０８内のビジネスルールとオブジェクトの固有ＩＤとの間の関係を形成することにより生成される。一実施形態では、単一のビジネスルールに、論理的に関連したオブジェクト群と関連付けさせる「ワイルドカード」方式が用いられる。
【００２９】
一般的に言えば、ビジネスルールは、アプリケーション２１０のコンテキスト内で適用された場合に、オリジナルのアプリケーションのソースコードで供給されなかった関数をアプリケーション２１０に実行させる任意のロジックである。前述したように、ビジネスルールは、代行受信された関数呼出しと関連するグラフィックスオブジェクトの変更を要求することができ、これにより、グラフィックスオブジェクトが描画された時、変更されなかった場合に現れることになっていたグラフィックスオブジェクトと違うグラフィックスオブジェクトが現れる。例えば、ビジネスルールは広告コンテンツをグラフィックスオブジェクト内へ動的に挿入させることができる。ビジネスルール及びその用途の更なる例について、以下のＩＶに説明する。しかし、これらの例は例示目的のみで示され、本発明を限定するものではない。
【００３０】
システム管理者または他のエンティティによりいつでもビジネスルールを変更することができるので、ビジネスルールは、アプリケーション２１０を向上させる動的な機構を備える。例えば、ビジネスルールは、このアプリケーションにより生成されるグラフィックス及びオーディオコンテンツを補強する動的な機構を備える。
【００３１】
一実施形態では、ビジネスルールデータベース１０８がシステム管理者または他のエンティティにより生成または更新された後、データベース１０８のコピーは実行時環境１０６のコンピュータシステムの局所メモリに転送される。この転送は、データベース１０８のコピーを磁気または光ディスクのような記録可能なコンピュータ使用可能媒体へ転送し、次に、コンピュータ使用可能媒体を実行時環境１０６へ転送することにより達成することができる。あるいはまた、ローカルエリア及び／または広域データ通信ネットワークのようなデータ通信ネットワークを介してデータベース１０８のコピーを転送することができる。更なる別の実施形態では、データベース１０８は、実行時環境１０６のコンピュータシステムの局所メモリへは全く転送されないが、その代わりに、周知のネットワークアクセスプロトコルを用いて複数の実行時環境１０６がアクセスできるコンピュータネットワーク内の中央位置に記憶される。しかし、これらの例は本発明を限定するものではなく、実行時環境１０６にデータベース１０８を利用させる様々な方法を用いることができることは当業者に明らかである。
【００３２】
（ＩＩ．コンピュータ装置上で実行中のソフトウェアアプリケーションを動的に向上させる方法）
図６には、本発明の一実施形態に従ってコンピュータ装置上で実行中のアプリケーションの動的な向上を容易にする方法のフローチャート６００を示す。実質的には、図６は、単一のソフトウェアアプリケーションにより生成された単一のグラフィックスまたはオーディオ関数呼出しの処理に関してステージング環境１０２により行われる処理工程について記述する。ソフトウェアアプリケーションが多数のこのような関数呼出しを生成し、従って、ソフトウェアアプリケーションの実行中、フローチャート６００の方法が何回も行われるであろうことは当業者にとって容易に明らかである。次に、この方法を一部において、図２に示され、この図について前述した特定のソフトウェア構成要素を参照して説明する。しかし、この実施形態にフローチャート６００の方法が限定されないことは当業者に明らかである。
【００３３】
フローチャート６００の方法の以下の説明は、ステージング環境１０２のソフトウェア構成要素の各々がコンピュータシステムに既にインストールされていると仮定する。更に、この方法は、ソフトウェアアプリケーション２０２がコンピュータシステム上で実行中であると仮定する。ソフトウェアアプリケーション２０２の実行は、アプリケーションを起動し、かつ、アプリケーションにグラフィックス及び／またはオーディオ情報を生成させるように１つ以上のユーザインターフェースを介してアプリケーションと対話することを含む。例えば、アプリケーション２０２がビデオゲームである場合、アプリケーションの実行は、ビデオゲームを起動し、適切なユーザ入出力（Ｉ／Ｏ）装置を用いてビデオゲームの少なくとも一部によりプレイすることを含む。
【００３４】
この方法は工程６０２から開始し、ソフトウェアアプリケーション２０２は、低レベルグラフィックス／オーディオ関数２０８に命令される関数呼出しを生成する。工程６０４では、関数呼出しが代行受信構成要素２０４により代行受信されるか否かを決定する。いかなる代行受信も行われない場合、処理は工程６１０に進行し、低レベルグラフィックス／オーディオ関数２０８が関数呼出しを通常通りに処理する。その後、工程６１２に示されるように関数呼出しの処理は終了する。しかし、関数呼出しが代行受信された場合、工程６１０に進行する代わりに、処理は工程６０６に進行する。
【００３５】
工程６０６では、代行受信構成要素２０４は、代行受信された関数呼出しと関連するグラフィックスまたはオーディオオブジェクトを識別する。グラフィックスオブジェクトは、モデル、テクスチャ、画像、パラメータ、または、代行受信された関数呼出しと関連し、アプリケーション２０２に代行してグラフィックス情報を描画するのに用いられる任意の他の別個の情報またはデータセットを含むことができる。オーディオオブジェクトは、オーディオファイル、デジタル音波、または、代行受信された関数呼出しと関連し、アプリケーション２０２に代行してオーディオ情報を再生するのに用いられる任意の他の別個の情報またはデータセットを含むことができる。グラフィックスまたはオーディオオブジェクトをそれ自体関数呼出しの一部とすることができ、または、関数呼出しによりアドレス指定または指し示すことができる。例えば、代行受信された関数呼出しがＤｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩへのＳｅｔＴｅｘｔｕｒｅ関数呼出しである場合、関連のグラフィックスオブジェクトは、ＳｅｔＴｅｘｔｕｒｅ関数呼出しにより指し示されるテクスチャから構成することができる。
【００３６】
工程６０８では、索引付け構成要素２０６は、グラフィックス／オーディオオブジェクトデータベース１０４内の、工程６０６で識別されたグラフィックスまたはオーディオオブジェクトを索引付ける。一実施形態では、オブジェクトの索引付けは、オブジェクトまたはその一部分をオブジェクトの固有識別子（ＩＤ）と一緒にグラフィックス／オーディオオブジェクトデータベース１０４に記憶することを含む。固有ＩＤを任意に割り当てることができ、または、オブジェクト自体に含まれる情報に基づいて計算することができる。例えば、一実施形態では、固有ＩＤは、グラフィックスまたはオーディオオブジェクトのコンテンツの全部または一部に基づいて計算される巡回冗長コード（ＣＲＣ）のようなエラー訂正コードを含む。代替の実施形態では、固有ＩＤを生成するため、暗号化及び／またはハッシングアルゴリズムがグラフィックスまたはオーディオオブジェクトのコンテンツの全部または一部に適用される。例えば、固有ＩＤを、グラフィックスまたはオーディオオブジェクトのコンテンツの全部または一部に基づいて計算されたＭＤ５ハッシュシグニチャ（ｈａｓｈ  ｓｉｇｎａｔｕｒｅ）とすることができる。オブジェクト自体のコンテンツに基づいて固有ＩＤを生成する利点は、（極めて大規模であることがある）オブジェクト自体の代わりに固有ＩＤを用いてビジネスルールデータベース１０８内の一致を検索することができる実行時環境１０６において実現されるということである。本発明の一実施形態では、内在するグラフィックスまたはオーディオオブジェクトを表すため、固有ＩＤだけがビジネスルールデータベース１０８内に記憶される。結果として、ビジネスルールデータベース１０８の記憶要件をかなり減少させることができる。
【００３７】
一実施形態では、固有ＩＤはフローチャート６００の方法の一部として計算されないが、その代わりに、この方法の完了後、グラフィックス／オーディオオブジェクトデータベース１０４にグラフィックス及びオーディオオブジェクトが投入された時に行う別個の処理により計算される。
【００３８】
工程６１０では、索引付けが完了した後、関数呼出しを低レベルグラフィックス／オーディオ関数２０８へ受け渡し、これら関数呼出しは従来通りに処理される。その後、工程６１２に示されるように関数呼出しの処理は終了する。
【００３９】
前述したように、フローチャート６００の方法は、ステージング環境１０２内でソフトウェアアプリケーションの実行中、何回も実行される可能性がある。更に、この方法を複数のソフトウェアアプリケーションの実行に適用してグラフィックス及びオーディオオブジェクトを索引付けることができる。複数のアプリケーションの索引付けられたグラフィックス及びオーディオオブジェクトを単一または複数のグラフィックス／オーディオオブジェクトデータベース１０４に記憶することができる。次に、これらデータベースの各々を用いて、１つ以上の実行時環境１０６内で用いるために供給される１つ以上のビジネスルールデータベース１０８を投入することができる。
【００４０】
図７には、本発明の一実施形態に従ってコンピュータ装置上で実行中のアプリケーションを動的に向上させる方法のフローチャート７００を示す。実質的には、図７は、単一のソフトウェアアプリケーションにより生成された単一のグラフィックスまたはオーディオ関数呼出しの処理に関して実行時環境１０６により行われる処理工程について記述する。ソフトウェアアプリケーションが多数のこのような関数呼出しを生成し、従って、ソフトウェアアプリケーションの実行中、フローチャート７００の方法が何回も行われるであろうことは当業者にとって容易に明らかである。次に、この方法を一部において、図２に示され、この図について前述した特定のソフトウェア構成要素を参照して説明する。しかし、この実施形態にフローチャート７００の方法が限定されないことは当業者に明らかである。
【００４１】
フローチャート７００の方法の以下の説明は、実行時環境１０６のソフトウェア構成要素の各々がコンピュータシステムに既にインストールされていると仮定する。更に、この方法は、ソフトウェアアプリケーション２１０がコンピュータシステム上で実行中であると仮定する。ソフトウェアアプリケーション２１０の実行は、アプリケーションを起動し、かつ、アプリケーションにグラフィックス及び／またはオーディオ情報を生成させるように１つ以上のユーザインターフェースを介してアプリケーションと対話することを含む。
【００４２】
この方法は工程７０２から開始し、ソフトウェアアプリケーション２１０は、低レベルグラフィックス／オーディオ関数２１６に命令される関数呼出しを生成する。工程７０４では、関数呼出しが代行受信構成要素により代行受信されるか否かを決定する。いかなる代行受信も行われない場合、処理は工程７１２に進行し、低レベルグラフィックス／オーディオ関数２１６が関数呼出しを通常通りに処理する。その後、工程７１４に示されるように関数呼出しの処理は終了する。しかし、関数呼出しが代行受信された場合、工程７１２に進行する代わりに、処理は工程７０６に進行する。
【００４３】
工程７０６では、代行受信構成要素２１２は、代行受信された関数呼出しと関連するグラフィックスまたはオーディオオブジェクトを識別する。前述したように、グラフィックスオブジェクトは、モデル、テクスチャ、画像、パラメータ、または、代行受信された関数呼出しと関連する任意の他の別個のグラフィックス情報セットを含むことができ、オーディオオブジェクトは、オーディオファイル、デジタル音波、または、代行受信された関数呼出しと関連する任意の他の別個のオーディオ情報セットを含むことができる。グラフィックスまたはオーディオオブジェクトをそれ自体関数呼出しの一部とすることができ、または、関数呼出しによりアドレス指定または指し示すことができる。例えば、代行受信された関数呼出しがＤｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩへのＳｅｔＴｅｘｔｕｒｅ関数呼出しである場合、関連のグラフィックスオブジェクトは、ＳｅｔＴｅｘｔｕｒｅ関数呼出しにより指し示されるテクスチャから構成することができる。
【００４４】
工程７０８では、ビジネスロジック２１４は、識別されたオブジェクトがビジネスルールデータベース１０８内の少なくとも１つのビジネスルールと関連するか否かを決定する。この工程は、識別されたオブジェクトまたはその一部分を、データベース１０８に記憶されたグラフィックスまたはオーディオオブジェクト、またはその一部分と比較することを含むことができる。あるいはまた、この工程は、識別されたオブジェクトの固有ＩＤを計算し、次に、識別されたオブジェクトの固有ＩＤを、データベース１０８に記憶された一連の固有ＩＤと比較することを含むことができる。例えば、図６を参照して前述したように、固有ＩＤは、識別されたオブジェクトのコンテンツの全部または一部に基づいて計算されるＣＲＣのようなエラー訂正コード、または、暗号化及び／またはハッシングアルゴリズムを、識別されたオブジェクトのコンテンツの全部または一部に適用することにより導き出されるＭＤ５ハッシュシグニチャのようなシグニチャを含むことができる。本発明によれば、「ワイルドカード」または他の論理的なオブジェクト分類を用いてビジネスルールを複数のオブジェクトと関連付けることができることに留意すべきである。例えば、ビジネスルールデータベース１０８は、包括的に一致する表現により識別された全オブジェクトに適用されるビジネスルールを含むことができる。
【００４５】
識別されたオブジェクトがデータベース１０８内の少なくとも１つのビジネスルールと関連しない場合、処理は工程７１２に進行し、低レベルグラフィックス／オーディオ関数２１６により関数呼出しを従来通りに処理する。
【００４６】
しかし、識別されたオブジェクトがデータベース１０８内の少なくとも１つのビジネスルールと関連する場合、工程７１０に示されるようにビジネスロジック２１４は少なくとも１つのビジネスルールを適用する。一実施形態では、ビジネスルールの適用は結果として、識別されたオブジェクトの変更を生じさせる。このような変更は、識別されたオブジェクトを異なるオブジェクトと置換すること、識別されたオブジェクトのコンテンツを変更すること、または、識別されたオブジェクトを単に全く描画または再生しないことを含む。しかし、本発明は、オブジェクトを単に変更することに限定されない。例えば、ビジネスルールは、或るオブジェクトの描画または再生を別のオブジェクトの描画または再生より先に行うか、または、或るオブジェクトの描画または再生を別のオブジェクトの描画または再生より後に行うことを含むことができる。ビジネスルールの適用がオブジェクトの描画または再生を含みうるので、このような適用は、低レベルグラフィックス／オーディオ関数２１６への１つ以上の関数呼出しを行うことを含みうるということに留意すべきである。
【００４７】
実際には、ビジネスルールは、任意のグラフィックス情報の描画または任意のオーディオ情報の再生を含む必要はない。その代わりとして、単に、代行受信構成要素２１２による特定のグラフィックスまたはオーディオオブジェクトの識別に応答してソフトウェアアプリケーション２１０のコンテキスト内の何らかのアクティビティを実行することからビジネスルールを構成することができる。一例として、ビジネスルールは、（シューティングゲームにおける自動照準、または、画面上のゲームメニュー内の自動的な方向付けに有用である）表示画面の予め定義された領域までの、ユーザ入力装置と関連するポインタを移動し、（「チートコード」の入力のような）キー列を生成し、ソフトウェアアプリケーション内のユーザ進行状況をロギング及び／または報告し、または、他のアクティビティを実行することを含むことができる。代行受信された関数呼出しと関連するグラフィックスまたはオーディオオブジェクトが、エミュレートされないオリジナルの低レベルグラフィックスまたはオーディオライブラリにより描画または再生される前か後に、あるいは、その代わりとして、前述した各イベントを実行することができる。
【００４８】
工程７１０において１つ以上のビジネスルールが適用された後、工程７１２に示されるように、関数呼出しの処理は終了する。
【００４９】
（ＩＩＩ．実行時環境へのソフトウェア構成要素の配布／インストール）
前述したように、本発明の一実施形態は、コンピュータ装置上で実行中のソフトウェアアプリケーションへのビジネスルールの適用を容易にし、これにより、オリジナルのアプリケーションコードを変更及び再コンパイルする必要なしに動的にアプリケーションを向上させることができる。更に、エミュレートされたライブラリを用いて本発明の一実施形態を実行時環境１０６において実施することができるので、動作を本質的にエンドユーザに気付かれなくすることができる。実際に、実行時環境１０６への必要なソフトウェア構成要素（すなわち、代行受信構成要素２１２、ビジネスロジック２１４及び、任意選択的にビジネスルールデータベース１０８）のインストールを除いて、エンドユーザは、ソフトウェアアプリケーションを外部のソフトウェア構成要素に連結またはインターフェース接続するいかなる事前措置も取る必要はない。
【００５０】
エンドユーザのコンピュータ装置への必要なソフトウェア構成要素の配布を様々な方法で達成することができる。例えば、インターネットのようなデータ通信ネットワークを介してソフトウェア構成要素を集中型エンティティから多数の実行時環境へ配布することができる。このようなシステムを図８に示す。図示のように、集中型ネットワークエンティティ８０２は、データ通信ネットワーク８０４を介して複数のユーザ実行時環境１０６ａ，１０６ｂ，１０６ｃと通信する。このようなネットワークに基づく配布を自動インストールソフトウェアと組み合わせることにより、エンドユーザのコンピュータ装置上でのこのような構成要素のインストールを、最小限のエンドユーザ介入で足りる方法で達成することができる。更に、エンドユーザマシン上で実行時構成要素の単一コピーしか必要としないので、これらの構成要素を１つ以上のアプリケーション２１０と統合することもできる。
【００５１】
本発明の一実施形態では、所定のアプリケーションを異なるように向上させるため、エンティティ（例えば、パブリッシャ、リテイラまたはサービスプロバイダ）がビジネスルールを周期的に変更することができるという意味でビジネスルール自体は動的である。ビジネスルールデータベース１０８に変更を行うことによりビジネスルールを変更または追加することができる。図８に示されるようなネットワークシステムを用いてデータ通信ネットワークを介してビジネスルールデータベース１０８のコピーまたは更新情報を集中型ネットワークエンティティから複数の実行時環境１０６へ配布することができる。
【００５２】
代替の実施形態では、ビジネスルールデータベース１０８のコピーは実行時環境１０６へ全く配布されないが、その代わり、ビジネスルールデータベース１０８は実行時環境１０６に対して遠隔的に存在し、必要とされる時だけにインターネットのようなデータ通信ネットワークを介してアクセスされる。例えば、ビジネスロジックルールデータベース１０８は、複数の実行時環境１０６と関連するコンピュータ装置によりアクセスされるサーバのような集中型ネットワークエンティティに存在することができる。この場合も、このようなネットワーク構成を図８に示す。この実施形態は、ビジネスルールの変更を中央サーバで１度だけ実施すれば良く、複数の実行時環境１０６に盛んに配布される必要はないという点で有利である。
【００５３】
代行受信構成要素２１２が、１つ以上のエミュレートされたライブラリを含む実施形態では、ライブラリをエミュレートすべきかの決定を、代行受信構成要素２１２のインストール中またはアプリケーションの実行時に行うことができる。従って、異なるライブラリセットを、動的に向上すべきソフトウェアアプリケーションごとにエミュレートすることができる。この決定を、動的に向上すべきソフトウェアアプリケーションの特性に基づいて、または、外部から供給された何らかのメタデータに基づいて行うことができ、あるいは、何らかの手段によりステージング環境から供給することができる。
【００５４】
（ＩＶ．本発明の例示的な用途）
次に、本願の幾つかの例示的な用途を説明する。これらの例は例示目的のみで示され、決して本発明を限定するものではない。
【００５５】
（Ａ．ゲーム内広告の埋め込み）
本発明の一実施形態は、ゲーム内広告を、このような機能を支援するように設計されていないゲームへ埋め込むのを容易にする。この実施形態によれば、ステージング環境１０２は、グラフィックス／オーディオオブジェクトデータベース１０４内の、レースゲームにおける車のボンネットのようなゲーム関連の表面のテクスチャを索引付けるように動作する。次に、システム管理者は、宣伝製品と関連するロゴで車のボンネットを覆うためのビジネスルールを定義する。このビジネスルールは、ビジネスルールが車のボンネットに対するテクスチャと関連するビジネスルールデータベース１０８に獲得される。実行時環境１０６では、代行受信構成要素２１２は、エンドユーザのコンピュータ上に描画するためにアクセスされるテクスチャを識別し、ビジネスロジック２１４はテクスチャを、データベース１０８に記憶されたビジネスルールと突き合わせる。結果として、ビジネスルールは、製品のロゴを有する車のボンネットに対するテクスチャの画像を補強し、操作された画像を画面上で描画するように適用される。最終結果として、製品のロゴは、ゲームと関連するグラフィック表示装置「内の」車のボンネット上に表示される。
【００５６】
本明細書で示された教示に基づいて、ゲームのコンテキスト内で再生されるオーディオオブジェクト内へオーディオ広告コンテンツを挿入することに本発明を同様に適用できることは当業者に明らかである。更に、任意の特定の代行受信されたオブジェクトに無関係であり、このオブジェクトとは無関係に描画または再生されるグラフィックス及びオーディオ広告コンテンツを描画することにも本発明を適用することができる。
【００５７】
本発明の更なる実施形態では、実行時環境１０６は、キーボードまたはマウスのようなエンドユーザ装置から入出力（Ｉ／Ｏ）を獲得するロジックを更に含む。このような実施形態のソフトウェア構成要素を図９に示す。特に、図９に示すように、実行時環境１０６のソフトウェア構成要素は、図２に示されたソフトウェアアーキテクチャに類似して、アプリケーション９１０、低レベルグラフィックス／オーディオ関数９１６及び、これらの間に「挿入され」、ビジネスロジック９１４と通信する代行受信構成要素９１２を含む。しかし、図９に示される実施形態では、キーボードまたはマウスのようなユーザ入力装置の使用と関連するイベントをビジネスロジック９１４に監視させることができる追加のＩ／Ｏ獲得構成要素９１８が備えられている。一実施形態では、この監視は、マウスまたはキーボード入力の処理と関連する関数をエミュレートすることにより達成される。
【００５８】
図９によるシステムを用いて、ゲーム内広告の埋め込みを容易にする本発明の一実施形態の機能を拡張することができる。例えば、埋め込まれた製品のロゴは、ゲームと関連するグラフィック表示装置内に描画される間、Ｉ／Ｏ構成要素９１８は、例えば、ロゴをマウスで指し示しクリックすることによりユーザがロゴと対話した時を識別するためにユーザ入力を監視する。ユーザ対話が生じたという決定に応答して、ビジネスロジック９１４は関数を実行する。一例として、この関数は、サーバへ送信すべきデータを入力する記入用紙をユーザへ表示するか、他のグラフィックスまたはオーディオコンテンツをユーザへ表示するか、または、賞品または、ユーザが賞品を受け取るであろうという通知をユーザに供給することを含むことができる。
【００５９】
（Ｂ．ゲーム中の進行状況及び達成の識別）
本発明の一実施形態によれば、ゲーム中のレベル進行状況及び達成を識別することができ、進行状況または達成に基づいて特定の措置を取ることができる。例えば、複数のレベルまたは段階に分割されたゲーム中の特定レベルまたは段階を表すか、または、これに対して一意的である、ステージング環境１０２内で識別されたグラフィックスまたはオーディオオブジェクトと、ビジネスルールとを関連付けることができる。同じオブジェクトが実行時環境１０６内で識別された場合、エンドユーザはゲーム中の或るレベルまたは段階に達し、ビジネスルールは適用される。ビジネスルールは、達成または進行状況に関する情報をロギングし、次に、この情報を、インターネットのようなデータ通信ネットワークを介して集中型リポジトリに送信してトーナメント及び効果割り当て方式を可能にすることを含むことができる。あるいはまた、ゲーム採点を画面上に表示するゲームにおいて、描画された情報を獲得することができ、ユーザが達成した実際の採点をロギングし、トーナメント及び効果割り当て方式を可能にするデータとして用いることができる。
【００６０】
（Ｃ．ビデオゲームコントロールの表示）
本発明の前述した実施形態では、ビジネスルールは、実行時環境１０６による特定のアプリケーション生成グラフィックスまたはオーディオオブジェクトの識別の結果として適用される。しかし、代替の実施形態では、その代わりに、ビジネスルールは、実行中のソフトウェアアプリケーションのコンテキスト内、または、実行時環境１０６のコンピュータシステム内で生じた他のイベントの検出に応答して適用される。
【００６１】
このような一実施形態を図１０に示す。図１０に示すように、実行時環境１０６のソフトウェア構成要素は、図２に示されたソフトウェアアーキテクチャに類似して、アプリケーション１０１０、低レベルグラフィックス／オーディオ関数１０１６及び、これらの間に「挿入され」、ビジネスロジック１０１４と通信する代行受信構成要素１０１２を含む。しかし、図１０に示される実施形態では、実行中のソフトウェアアプリケーションのコンテキスト内、または、実行時環境１０６のコンピュータシステム内で生じたイベントをビジネスロジック１０１８に通知させる追加のイベント検出構成要素１０１８が備えられている。図１０に示されるシステムでは、ビジネスロジック１０１４は、このようなイベントの検出に応答してビジネスルールを選択的に適用する。
【００６２】
このようなシステムの例示的な用途は、ビデオゲームと関連するグラフィック表示装置内にビデオゲームコントロールの表示をトグルオンまたはオフすることを含み、このような機能はビデオゲーム自体により供給されない。この例示的な用途によれば、イベント検出構成要素１０１８は、画面上コントロールをターンオンまたはオフするためにユーザがキーボード入力の組み合わせのようなコンピュータシステムへの入力を供給したことを検出する。このイベントの検出に応答して、ビジネスロジック１０１４は、コントロールがトグルオンされる場合にコントロールを画面上に描画させ、コントロールがトグルオフされる場合にコントロールを画面上に描画させない。コントロールの描画は、必要な低レベルグラフィックス／オーディオ関数１０１６への関数呼出しを行ってこのタスクを実行することにより達成される。この機能は、エンドユーザによりビデオゲームの有用性を向上させる。
【００６３】
ユーザがゲーム中に特定の「段階」に到達したことを識別する特定のグラフィックスまたはオーディオオブジェクトの識別により更に、このようなコントロールの画面上表示を起動することができる。従って、新たな「レベル」に達すると、画面上コントロール情報をユーザに自動的に供給することができ、ゲームにおいてユーザの役に立つ。
【００６４】
（Ｄ．試用メッセージ）
図１０のシステムの別の例示的な用途は、アプリケーションソフトウェアを用いる試用期間の終了についてエンドユーザに通知することを含む。アプリケーションソフトウェアは、限定期間中のみに、及び／または限定数の「レベル」中に用いられることを対象とする。この例によれば、イベント検出構成要素１０１８は、アプリケーションの実行に対して所定のしきい値に達した時にビジネスロジック１０１４に通知する。例えば、しきい値を、アプリケーションが用いられた合計時間（例えば、総使用の１時間）、または、アプリケーションが起動された合計回数（例えば、１０セッション）とすることができる。このしきい値は、実際の試用期間の終了にマークを付けるか、または、試用期間の終了が近づいてきた時のみにマークを付けることができる。いずれの場合でも、このような通知に応答して、ビジネスロジック１０１４は、試用期間の終了についてユーザに警告するため、ユーザへのグラフィックスまたはオーディオメッセージを描画または再生させる。このようなメッセージを、アプリケーションにより生成されるグラフィックスまたはオーディオオブジェクトの一部として描画することができ、または、任意のこのようなオブジェクトから切り離して描画することができる。メッセージは、アプリケーションを用いる残り時間の量または残りのセッションをユーザに示すことができる。このようなメッセージの描画は、必要な低レベルグラフィックス／オーディオ関数１０１６への関数呼出しを行うことにより達成される。
【００６５】
本発明の別の実施形態では、代行受信構成要素は、新たな「段階」または「レベル」に達したことを示す特定のオブジェクトを識別することができ、これにより、アプリケーションの使用を特定のレベルまたは段階に制限するビジネスルールを管理者または他のエンティティに設定させる。このような新たなレベルまたは段階を識別する際に、（必要とされるキー列を生成することにより）ゲームを自動的に保存することができ、適切なメッセージをユーザに表示することができる。
【００６６】
図９を参照して前述した獲得機能のようなＩ／Ｏ獲得機能を含む更なる実施形態（図示せず）では、Ｉ／Ｏ獲得構成要素は、例えば、マウスでメッセージを指し示しクリックすることによりユーザが、グラフィックに描画された試用メッセージと対話した時を識別するためにユーザ入力を監視する。ユーザ対話が生じたという決定に応答して、ビジネスロジック１０１４は関数を実行する。一例として、関数は、アプリケーションを用いる追加のライセンス期間をエンドユーザに入手させる処理を起動することを含むことができる。
【００６７】
（Ｅ．ペアレンタルコントロール）
図１０のシステムの更なる例示的な用途は、ソフトウェアアプリケーションの使用を管理するペアレンタルコントロールの動的な実施を可能にする。例えば、親は、ビデオゲームアプリケーションが１日のような所定の期間にわたってプレイされる時間量を制限したいことがある。この例によれば、イベント検出構成要素１０１８は、規定期間の終了に達した時にビジネスロジック１０１４に通知する。このような通知に応答して、ビジネスロジック１０１４は、規定期間の終了の到達についてユーザに警告するため、ユーザへのグラフィックスまたはオーディオメッセージを描画または再生させる。更に、規定期間が切れた場合、ビジネスロジック１０１４は通知され、ビデオゲーム中の任意の進行状況を保存させ、その後、アプリケーションを終了する。
【００６８】
本明細書の別の部分に説明されているように、ソフトウェアアプリケーションの実行中、特定の識別されたグラフィックスまたはオーディオオブジェクトを描画または再生させないビジネスルールを実施することもできる。このような実施形態は、ビデオゲーム中、特定のグラフィックス及び／またはオーディオオブジェクトコンテンツの提示を選択的に遮断するペアレンタルコントロールを供給するのに特に有用である。
【００６９】
（Ｆ．画面上通信メッセージ）
図１０のシステムの別の例示的な用途では、イベント検出構成要素１０１８は、実行時環境１０６のコンピュータシステムにも常駐する電子メールクライアント及び／またはインスタントメッセンジャを監視し、これらアプリケーションの１つによりメッセージのような情報が受信された時にビジネスロジック１０１４に通知する。その後、ビジネスロジック１０１４は、アプリケーション１０１０と関連するグラフィック表示装置内にメッセージを描画することによりメッセージをエンドユーザに供給する。ビジネスロジック１０１４は、低レベルグラフィックス／オーディオ関数１０１６にアクセスすることによりこのタスクを実行する。このような機能を用いて、ビデオゲームを、干渉されずに途切れなくプレイしながら、電子メール及びインスタントメッセンジャメッセージをエンドユーザに供給させることができる。実際に、このような機能は、全画面ＤｉｒｅｃｔＸ（登録商標）アプリケーションの場合、別の方法では不可能である。
【００７０】
（Ｇ．メニューシステム認識及び操作）
本発明の別の実施形態では、メニューシステム認識及び操作機能を提供する。例えば、このような実施形態によれば、代行受信構成要素２１２は、ビデオゲームのようなアプリケーション２１０が、メニューシステムと関連するグラフィックスを描画していることを識別する。これに応答して、ビジネスロジック２１４は１つ以上のアクティビティを実行する。例えば、ビジネスロジック２１４は、メニューシステム内で容易なナビゲーションを可能にするメニュー項目スナップ機能を有効にする。このような機能は、エンドユーザのマウスポインタを近接のメニュー項目へ移動することを含むことができる。その代わりに、または、これに加えて、図９を参照して前述したような、キーボード入力を獲得することによるＩ／Ｏ獲得機能を含む実施形態（図示せず）では、ビジネスロジックは、アナログのマウス動作から離散的な矢印キーベースの動作へ変換することによりメニュー項目間で移動させることができる。更なるアプリケーションは、ペアレンタルコントロールまたは使用許可関連のパラメータに応じて特定のメニュー項目を選択するエンドユーザの能力を遮断することを含むことができる。
【００７１】
（Ｈ．シーン操作）
本発明の別の実施形態では、特定のシーンについて様々な操作を実行することができる。例えば、これら操作の一部には、以下のことが含まれる。
【００７２】
（投影操作）シーンのグラフィック出力、またはその一部を、平面とは異なる表面上に示すように操作することができる。例えば、描画された出力を球状に投影する場合、この表面への投影を導入するのに特定のレンズを必要とはしないが、その表面に応じて、シーン内の選択された設定の指標及び頂点に変換を加える。「ＢｅｇｉｎＳｃｅｎｅ」及び「ＥｎｄＳｃｅｎｅ」呼出しへの呼出しを代行受信すると、特定のビジネスロジックを、その間のすべての呼出しに適用することができる。その後の適用は、表面の形状に従って動的に適応するように表面自体からフィードバックすることを更に含むことができる。
【００７３】
（オブジェクト寸法及び形状）別の例は、シーンオブジェクトの伸縮及び変更を含むことができる。例えば、シーン画像を、より高くしたり、より細くしたりすることなどができる。
【００７４】
（視点操作）既存のシーンの視点を変更可能にするためにビジネスロジックを用いることができる。例えば、レースゲームにおいて、ゲームのオリジナル機能により提供されない車の屋根からの視点を追加するのに本発明を用いることができる。その後、オリジナル画像または異なる画面上の代わりにゲーム自体の内部のピクチャインピクチャとしてシーンを表示することができる。画像が異なる画面上に表示される場合、操作された画像との双方向性を追加して、ゲームをする人のユーザ体験に影響を与えることなしに様々な視点から視聴者にゲームを見せることができる。
【００７５】
（照明操作）照明定義の変更を可能にするのにビジネスロジックが用いられる。例えば、暗いゲームまたはシーンを照明する。
【００７６】
（陰影付け操作）陰影付け定義の変更を可能にするのにビジネスロジックが用いられる。例えば、この操作を用いて、曇りを追加または除去するか、あるいは透明度を変更することができる。
【００７７】
（Ｖ．例示的なコンピュータシステム実施形態）
図１１には、ステージング環境１０２または実行時環境１０６を実施するのに用いることができる例示的なコンピュータシステム１１００を示す。しかし、コンピュータシステム１１００の以下の説明は一例であって、本発明を限定するものではない。むしろ、本明細書の別の部分に説明されているように、ステージング環境１０２及び実行時環境１０６は各々、サーバ、コンソール、携帯情報端末（ＰＤＡ）または、ソフトウェアアプリケーションを実行し関連のアプリケーション生成グラフィックス及びオーディオ情報をエンドユーザに表示することができる他の任意のコンピュータ装置を含むことができる。
【００７８】
図１１に示されるように、例示的なコンピュータシステム１１００は、ソフトウェアルーチンを実行するプロセッサ１１０４を含む。図面を明瞭とするために、単一のプロセッサが示されているが、コンピュータシステム１１００はマルチプロセッサシステムを含むこともできる。プロセッサ１１０４は、コンピュータシステム１１００の他の構成要素と通信するため、通信基盤１１０６に接続されている。通信基盤１１０６は、例えば、通信バス、クロスバーまたはネットワークを含むことができる。
【００７９】
コンピュータシステム１１００は、ランダムアクセスメモリ（ＲＡＭ）のような主メモリ１１０８と、２次メモリ１１１０とを更に含む。２次メモリ１１１０は、例えば、ハードディスクドライブ１１１２及び／または、フロッピー（登録商標）ディスクドライブ、磁気テープドライブ、光ディスクドライブなどを含むことができる取り外し可能なストレージドライブ１１１４を含むことができる。取り外し可能なストレージドライブ１１１４は周知の通りに、取り外し可能なストレージユニット１１１８から読み取り、かつ／または取り外し可能なストレージユニット１１１８へ書き込む。取り外し可能なストレージユニット１１１８は、取り外し可能なストレージドライブ１１１４により読み取りまたは書き込まれるフロッピー（登録商標）ディスク、磁気テープ、光ディスクなどを含むことができる。当業者に明らかなように、取り外し可能なストレージユニット１１１８は、コンピュータソフトウェア及び／またはデータが記憶されたコンピュータ使用可能ストレージ媒体を含む。
【００８０】
代替の実施形態では、２次メモリ１１１０は、コンピュータプログラムまたは他の命令をコンピュータシステム１１００へロードさせる他の類似の手段を含むことができる。このような手段は、例えば、取り外し可能なストレージユニット１１２２及びインターフェース１１２０を含むことができる。取り外し可能なストレージユニット１１２２及びインターフェース１１２０の一例として、（ビデオゲームコンソール装置内に見受けられるような）プログラムカートリッジ及びカートリッジインターフェース、（ＥＰＲＯＭまたはＰＲＯＭのような）取り外し可能なメモリチップ及び関連のソケット、並びに、ソフトウェア及びデータを取り外し可能なストレージユニット１１２２からコンピュータシステム１１００へ転送させる他の取り外し可能なストレージユニット１１２２及びインターフェース１１２０が挙げられる。
【００８１】
コンピュータシステム１１００は少なくとも１つの通信インターフェース１１２４も含む。通信インターフェース１１２４は、通信経路１１２６を介してコンピュータシステム１１００と外部装置との間でソフトウェア及びデータを転送させる。特に、通信インターフェース１１２４は、コンピュータシステム１１００と、公衆データまたは専用データ通信ネットワークのようなデータ通信ネットワークとの間でデータを転送させる。通信インターフェース１１２４の一例として、モデム、（Ｅｔｈｅｒｎｅｔ（登録商標）カードのような）ネットワークインターフェース及び通信ポートなどを挙げることができる。通信インターフェース１１２４を介して転送されたソフトウェア及びデータは、通信インターフェース１１２４により受信されうる電子信号、電磁気信号、光信号または他の信号とすることができる信号の形態を取る。これら信号は、通信経路１１２６を介して通信インターフェースへ供給される。
【００８２】
図１１に示されるように、コンピュータシステム１１００は、関連の表示装置１１３０に画像を描画する動作を実行する表示インターフェース１１０２と、関連の（１つ以上の）スピーカ１１３４を介してオーディオコンテンツを再生する動作を実行するオーディオインターフェース１１３２とを更に含む。
【００８３】
本明細書で用いられるように、「コンピュータプログラム製品」なる用語は、一部において、取り外し可能なストレージユニット１１１８、取り外し可能なストレージユニット１１２２、ハードディスクドライブ１１１２にインストールされたハードディスク、または、通信経路１１２６（無線リンクまたはケーブル）を介して通信インターフェース１１２４へソフトウェアを伝送する搬送波を意味することができる。コンピュータ使用可能媒体は、磁気媒体、光学媒体または他の記録可能媒体、あるいは、搬送波または他の信号を送信する媒体を含むことができる。これらコンピュータプログラム製品は、ソフトウェアをコンピュータシステム１１００へ供給する手段である。
【００８４】
（コンピュータ制御ロジックとも称される）コンピュータプログラムは、主メモリ１１０８及び／または２次メモリ１１１０に記憶されている。また、通信インターフェース１１２４を介してコンピュータプログラムを受信することができる。このようなコンピュータプログラムは実行されると、本明細書で説明されているようにコンピュータシステム１１００に本発明の１つ以上の特徴を実行させる。特に、コンピュータプログラムは実行されると、プロセッサ１１０４に本発明の特徴を実行される。従って、このようなコンピュータプログラムはコンピュータシステム１１００のコントローラを意味する。
【００８５】
本発明を実施するソフトウェアをコンピュータプログラム製品に記憶し、取り外し可能なストレージドライブ１１１４、ハードディスクドライブ１１１２またはインターフェース１１２０を用いてコンピュータシステム１１００へロードすることができる。あるいはまた、通信経路１１２６を介してコンピュータプログラム製品をコンピュータシステム１１００へダウンロードすることができる。ソフトウェアはプロセッサ１１０４により実行されると、本明細書で説明されているようにプロセッサ１１０４に本発明の関数を実行させる。
【００８６】
（Ｄ．結論）
本発明の様々な実施形態を前述したが、当然のことながら、これら実施形態は例示目的のみで示され、本発明を限定するものではない。本明細書において、以下の特許請求の範囲に定義された本発明の意図及び範囲から逸脱することなしに形態及び細部に変更を行うことができることは当業者に明らかである。従って、前述した例示的な実施形態のいずれかにより本発明の範囲を制限すべきでなく、以下の特許請求の範囲及び等価なものだけにより定義すべきである。
【図面の簡単な説明】
【００８７】
【図１】図１には、本発明の一実施形態に従ってコンピュータ装置上で実行中のアプリケーションの動的な向上を容易にするシステムの物理的構成要素を示す。
【図２】図２には、本発明の一実施形態に従って、コンピュータ装置上で実行中のアプリケーションの動的な向上を容易にするシステムのソフトウェア構成要素を示す。
【図３】図３には、グラフィックスライブラリを用いるＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）搭載ＰＣ用の従来のソフトウェアアーキテクチャを示す。
【図４】図４には、本発明の一実施形態に従って、グラフィックス及びオーディオオブジェクトを索引付ける構成要素を含み、エミュレートされたグラフィックス及びオーディオライブラリを含むステージング環境のソフトウェアアーキテクチャを示す。
【図５】図５には、本発明の一実施形態に従って、グラフィックス及びオーディオオブジェクトを識別し、識別されたオブジェクトと関連するビジネスルールを適用する構成要素を含み、エミュレートされたグラフィックス及びオーディオライブラリを含む実行時環境のソフトウェアアーキテクチャを示す。
【図６】図６には、本発明の一実施形態に従ってコンピュータ装置上で実行中のアプリケーションの動的な向上を容易にするため、ステージング環境において用いられる方法のフローチャートを示す。
【図７】図７には、本発明の一実施形態に従ってコンピュータ装置上で実行中のアプリケーションを動的に向上させるため、実行時環境において用いられる方法のフローチャートを示す。
【図８】図８には、本発明の一実施形態に従ってソフトウェア構成要素を配布し、かつ／またはソフトウェア構成要素にアクセスするネットワークシステムを示す。
【図９】図９には、エンドユーザ装置から入出力を獲得し、獲得された関数呼出し及び可能なオブジェクト識別情報に基づいてビジネスルールを適用する機能を含む本発明による実行時環境の一実施形態を示す。
【図１０】図１０には、イベント検出機能、ロギング及びこのようなイベントの報告を含む本発明による実行時環境の一実施形態を示す。
【図１１】図１１には、本発明の一実施形態に従ってコンピュータ装置を実施するのに用いることができる例示的なコンピュータシステムを示す。
【図１】
2009517752.tif 000003
【図２】
2009517752.tif 000004
【図３】
2009517752.tif 000005
【図４】
2009517752.tif 000006
【図５】
2009517752.tif 000007
【図６】
2009517752.tif 000008
【図７】
2009517752.tif 000009
【図８】
2009517752.tif 000010
【図９】
2009517752.tif 000011
【図１０】
2009517752.tif 000012
【図１１】
2009517752.tif 000013
【国際調査報告】
2009517752.tif 000014
2009517752.tif 000015
2009517752.tif 000016