(57)【要約】  本発明の実施形態は、全般的にはコンピュータベースのシミュレーション及び人工環境生成に関し、より具体的には、とりわけ動的コンテンツを導入するために分散アーキテクチャ内で人工環境を生成するシステム、コンピュータ可読媒体、方法、及び装置に関する。【選択図】  図１Ａ
2010525423.tif 000002
【特許請求の範囲】
【請求項１】
複数の参加者が相互作用する人工環境を生成するように構成されたゲーム管理サーバと、
ゲームサブプロセス結果をゲームサブプロセスの必要性の関数としてゲーム管理サーバに伝えるように構成されたスケーラブルゲームサブプロセスサーバと
を備える、人工環境を生成するシステムであって、
前記ゲーム管理サーバ及び前記スケーラブルゲームサブプロセスサーバが、分散ネットワークアーキテクチャ内に配置されている、システム。
【請求項２】
前記ゲームサブプロセスの前記必要性に応答して前記スケーラブルゲームサブプロセスサーバの実装を制御するように構成されたマスタスケーリングサーバをさらに備える、請求項１に記載のシステム。
【請求項３】
前記人工環境が、持続的世界である、請求項１に記載のシステム。
【請求項４】
前記ゲーム管理サーバが、クライアントではなく前記ゲーム管理サーバで前記人工環境との前記参加者の相互作用を変更するようにさらに構成される、請求項１に記載のシステム。
【請求項５】
データをノードに一体化するように構成されたユニバーサルデータ構造を含むメッセージを伝搬するように構成されたメッセージングシステムをさらに備える、請求項１に記載のシステム。
【請求項６】
前記ノードが、前記ゲーム管理サーバ、前記スケーラブルゲームサブプロセスサーバ、データベース、及びクライアントのうちの１つ又は複数をさらに備える、請求項５に記載のシステム。
【請求項７】
前記メッセージングシステムが、クライアントが前記人工環境に対する変更を示すことに応答して、サーバ側ユニバーサルデータ構造に関連するデータのサブセットを送信するように構成される、請求項５に記載のシステム。
【請求項８】
前記ノードが前記ユニバーサルデータ構造内でデータを実施することを可能にするように構成されたインスタンス管理スキーマをさらに備える、請求項５に記載のシステム。
【請求項９】
それぞれが前記ノードによって使用可能な形で前記ユニバーサルデータ構造内でデータを提供するように構成された複数のユニバーサルメッセージインターフェースをさらに備える、請求項５に記載のシステム。
【請求項１０】
前記ユニバーサルデータ構造が、オブジェクト指向プログラミング言語のクラスのものである、請求項５に記載のシステム。
【請求項１１】
それぞれが前記ユニバーサルデータ構造を前記ノードによる使用のためのデータ配置に変換することなく前記ユニバーサルデータ構造内でデータを提供するように構成された複数のユニバーサルメッセージインターフェースをさらに備える、請求項５に記載のシステム。
【請求項１２】
前記複数のユニバーサルメッセージインターフェースが、それぞれ、前記メッセージのそれぞれが前記ノード宛であるかどうかを検出するように構成される、請求項１１に記載のシステム。
【請求項１３】
少なくとも１つがプラットフォーム独立フォーマットで前記ユニバーサルデータ構造をフォーマットするように構成された複数のユニバーサルメッセージインターフェースをさらに備える、請求項５に記載のシステム。
【請求項１４】
前記プラットフォーム独立フォーマットが、拡張可能マークアップ言語によって定義されるフォーマットを含む、請求項１３に記載のシステム。
【請求項１５】
前記ゲーム管理サーバを含む複数のゲーム管理サーバと、
前記スケーラブルゲームサブプロセスサーバを含む複数のスケーラブルゲームサブプロセスサーバと
をさらに備える、請求項１に記載のシステム。
【請求項１６】
前記複数のゲーム管理サーバのうちの少なくとも２つが、別々のプロセス空間として擬似集約プロセス空間にアクセスするように構成される、請求項１５に記載のシステム。
【請求項１７】
前記複数のスケーラブルゲームサブプロセスサーバのうちの少なくとも１つが、共通プロセス空間として動作可能な擬似集約プロセス空間に関連する原子的トランザクションを実行するように構成されたトランザクションサーバを備える、請求項１５に記載のシステム。
【請求項１８】
参加者が分散サーバアーキテクチャ内で相互作用する人工環境を生成するように構成された人工環境生成プラットフォームであり、前記人工環境を生成するために命令を実行するように構成された少なくとも１つのゲーム管理サーバを備える、人工環境生成プラットフォームと、
前記命令の前記実行と実質的に同時に前記人工環境の少なくとも一部に動的コンテンツを導入するように構成されたイベントサーバと、
それぞれがユニバーサルデータ構造を含むユニバーサルオブジェクトのシステムと
を具備する、人工環境を生成するシステムであって、
前記ユニバーサルオブジェクトのうちの少なくとも１つが、前記動的コンテンツを容易にするように構成される、システム。
【請求項１９】
前記イベントサーバが、前記命令を構成するオブジェクトコードを変更せずに動的コンテンツを導入するように構成される、請求項１８に記載のシステム。
【請求項２０】
ユニバーサルオブジェクトの当該システムが、前記動的コンテンツの前記導入中の前記命令の再コンパイルを不要にする、請求項１８に記載のシステム。
【請求項２１】
前記少なくとも１つのゲーム管理サーバが、リブートなしで前記動的コンテンツを生成するように構成される、請求項１８に記載のシステム。
【請求項２２】
前記動的コンテンツを実施するプラグデータを備えるプラグオブジェクトと、前記人工環境の前記一部の生成に関する前記命令のサブセットに関連するソケットコードとを備えるデータベースをさらに具備し、
前記ソケットコードが、前記人工環境の前記一部に関して前記動的コンテンツをレンダリングするために動的データを実施するように構成された、請求項１８に記載のシステム。
【請求項２３】
前記イベントサーバが、所定のトリガに応答して前記動的コンテンツを導入するようにさらに構成される、請求項１８に記載のシステム。
【請求項２４】
合成プラットフォームが、
前記人工環境を生成するように構成された、複数のゲーム管理サーバ、ゲームサブプロセスサーバ、及びデータベースと、
前記複数のゲーム管理サーバ、ゲームサブプロセスサーバ、及びデータベースの中でメッセージを伝搬するように構成された分散ネットワークアーキテクチャと、
それぞれが前記メッセージ内でフォーマットされた前記ユニバーサルデータ構造内のデータを実施するように構成された複数のユニバーサルデータ構造インターフェースと
を備える、請求項１８に記載のシステム。
【請求項２５】
コンピュータ生成される人工環境を生成するシステムであって、
物理サーバ、人工知能サーバ、及びトランザクションサーバを備える複数のゲームサブプロセスサーバと、
参加者が相互作用する人工環境を生成するようにそれぞれが構成された複数のゲーム管理サーバと、
前記人工環境を生成するためのデータを格納するように構成されたデータベースであり、前記複数のゲーム管理サーバ、前記複数のゲームサブプロセスサーバ、及び前記データベースのそれぞれが、分散ネットワーク内に配置される、データベースと
を具備し、
前記複数のゲーム管理サーバ、前記複数のゲームサブプロセスサーバ、及び前記データベースが、前記分散ネットワークの少なくとも一部の中で伝搬するメッセージにフォーマットされたユニバーサルデータ構造を実施する、システム。
【請求項２６】
１つ又は複数の物理サーバ、１つ又は複数の人工知能サーバ、及び１つ又は複数のトランザクションサーバのうちのいずれかを追加するために追加ゲームサブプロセスサーバのサブセットを構成するように構成されたマスタスケーリングサーバをさらに備える、請求項２５に記載のシステム。
【請求項２７】
エンティティが参加者に可視であることを判定するために前記参加者の可視性範囲と前記エンティティの見られ得る範囲との交差を検出するように構成された可視性サーバと、
そうでなければ前記物理サーバによって実行されるはずの前記参加者のグループに関する物理処理をオフロードするように構成されたインスタンスサーバと
をさらに備える、請求項２５に記載のシステム。
【請求項２８】
前記人工環境と相互作用することを要求する複数のクライアントを複数のゲーム管理サーバに関連付けるように構成されたユーザサーバをさらに備える、請求項２５に記載のシステム。
【請求項２９】
前記システムとの相互作用中に更新されたデータの諸部分をクライアントに送信するように構成されたパッチサーバをさらに備え、
更新されたデータの受信されない部分が、プロキシアセットを生成するためのデフォルトデータに置換される、請求項２５に記載のシステム。
【請求項３０】
多人数参加型オンラインゲームを容易にする方法であって、
ゲーム管理プロセスとは独立のゲームサブプロセスを初期化するステップと、
前記ゲームサブプロセス及び前記ゲーム管理プロセスの間の協力を介して人工環境を生成するステップと、
前記ゲーム管理プロセスを実施して、前記ゲームサブプロセスのうちの１つ又は複数の動作不能の期間中に前記人工環境の少なくとも一部を生成するステップと
を含む、方法。
【請求項３１】
前記ゲームサブプロセスと前記ゲーム管理プロセスとの間でメッセージを交換して、前記人工環境を生成するステップをさらに含む、請求項３０に記載の方法。
【請求項３２】
前記ゲームサブプロセスのサブセットとして１つ又は複数の物理サーバを実施するステップであって、前記ゲーム管理プロセスが、前記１つ又は複数の物理サーバと独立に動作するように構成される、ステップをさらに含む、請求項３０に記載の方法。
【請求項３３】
前記１つ又は複数の物理サーバとは別々の人工知能サーバプロセスを実施するステップをさらに含む、請求項３２に記載の方法。
【請求項３４】
前記人工環境を生成するステップが、
少なくとも２つの異なるクライアント用の少なくとも２つの異なるゲーム管理プロセスを実施するステップと、
前記少なくとも２つの異なるクライアントが前記人工環境にアクセスすることを可能にするステップと
を含み、
前記少なくとも２つの異なるクライアントのいずれもが、前記少なくとも２つの異なるゲーム管理プロセスのいずれかを介して前記人工環境にアクセスすることができる、請求項３０に記載の方法。
【請求項３５】
擬似集約プロセス空間を生成するステップをさらに含む、請求項３０に記載の方法。
【請求項３６】
前記擬似集約プロセス空間を生成するステップが
参加者がその中でデータの第１サブセットについて相互作用できる共通プロセス空間を生成するステップであり、前記参加者が、少なくとも２つの異なるゲーム管理サーバに関連する、ステップと、
データの第２サブセットについて前記参加者用の別々のプロセス空間を生成するステップと
をさらに含む、請求項３５に記載の方法。
【請求項３７】
データの前記第１サブセットが、トランザクション関連データを含み、データの前記第２サブセットが、ジオメトリ関連データを含む、請求項３６に記載の方法。
【請求項３８】
参加者の間のトランザクションを管理して、前記トランザクションが原子的であることを保証するステップをさらに含む、請求項３５に記載の方法。
【請求項３９】
ゲーム管理プロセスサーバの量と独立にサブプロセスサーバの量をスケーリングするステップをさらに含む、請求項３０に記載の方法。
【請求項４０】
前記ゲームサブプロセスに関する要求に応答してサブプロセスサーバの前記量をスケーリングするステップをさらに含む、請求項３９に記載の方法。
【請求項４１】
前記ゲーム管理プロセスサーバの負荷を監視するステップと、
前記負荷の関数としてサブプロセスサーバの前記量をスケーリングするステップと
をさらに含む、請求項３９に記載の方法。
【請求項４２】
多人数参加型オンラインゲームを容易にするコンピュータ可読媒体であって、
１つ又は複数のゲームサブプロセスとは独立のゲーム管理プロセスを初期化する実行可能命令と、
前記ゲーム管理プロセスを実施するサーバと、前記１つ又は複数のゲームサブプロセスを実施するサーバとの間でネットワークを介してメッセージを交換して、人工環境を生成する実行可能命令と、
前記ゲーム管理プロセスを実行して、前記１つ又は複数のゲームサブプロセスを実施する前記サーバのうちの少なくとも１つの動作不能とは独立に前記人工環境の少なくとも一部を容易にする実行可能命令と
を含む、コンピュータ可読媒体。
【請求項４３】
メッセージを交換する前記実行可能命令が、
前記ゲーム管理プロセスを実施する前記サーバとクライアントのサブセットとの間の通信を確立する実行可能命令と、
前記人工環境とクライアントの前記サブセットとの間の相互作用を容易にする実行可能命令と
を含み、
クライアントの前記サブセットと、他のゲーム管理プロセスを実施する他のサーバに関連するクライアントの他のサブセットとが、実質的に同時に前記人工環境と相互作用する
請求項４２に記載のコンピュータ可読媒体。
【請求項４４】
前記ゲーム管理プロセスを実行する前記実行可能命令が、
データのうちで前記人工環境に関連する部分が変化したことを判定する実行可能命令と、
クライアントへの送信のために圧縮ユニバーサルメッセージを生成する実行可能命令であって、前記圧縮ユニバーサルメッセージが、前記データの前記部分が変化したことの表示を含む、実行可能命令と
を含む、請求項４２に記載のコンピュータ可読媒体。
【請求項４５】
前記圧縮ユニバーサルメッセージを生成する前記実行可能命令が、
ベクトルとして配置された複数のプロパティ値を含むオブジェクトを生成する実行可能命令と、
前記複数のプロパティ値からのプロパティ値が変更されたことを判定して、変更されたプロパティ値を識別する実行可能命令と、
前記圧縮ユニバーサルメッセージを形成して、前記変更されたプロパティ値及び前記ベクトルへのインデックスを含める実行可能命令と
をさらに含む、請求項４４に記載のコンピュータ可読媒体。
【請求項４６】
多人数参加型オンラインゲームを容易にするために分散ネットワークアーキテクチャ内のノードの間で通信する方法であって、
人工環境生成プラットフォーム内のノードの間でゲームデータを交換するように構成されたユニバーサルデータ構造に従うユニバーサルメッセージを生成するステップであり、前記ノードが、前記人工環境生成プラットフォームに分散プロセスを提供するように構成されたノードのサブセットを含む、ステップと、
前記ノードのサブセットに前記ユニバーサルメッセージの少なくともサブセットをブロードキャストして、人工環境を変更するステップと、
ノードの分散プロセスに応答して前記人工環境の少なくとも一部を変更するステップと
を含む、方法。
【請求項４７】
前記人工環境の前記一部を変更するステップが、前記人工環境に動的コンテンツを導入するステップを含む、請求項４６に記載の方法。
【請求項４８】
前記ユニバーサルメッセージを生成するステップが、プラットフォーム独立フォーマットに従うデータ配置から前記ゲームデータを抽出するステップを含む、請求項４６に記載の方法。
【請求項４９】
前記ユニバーサルメッセージを生成するステップが、拡張可能マークアップ言語によって定義されるフォーマットに従うデータ配置から前記ゲームデータを抽出するステップを含む、請求項４６に記載の方法。
【請求項５０】
オブジェクト指向クラス構造に従って前記ゲームデータを実施するステップをさらに含む、請求項４９に記載の方法。
【請求項５１】
スキーマにアクセスして前記ノードの使用を判定するステップと、
実行可能コードを変更せずに、前記ユニバーサルデータ構造とインターフェースするように前記ノードを構成して、前記ユニバーサルデータ構造と前記ノードに関連する別のデータ配置との間で前記ゲームデータを交換するステップと
をさらに含む、請求項４６に記載の方法。
【請求項５２】
前記スキーマに基づいて、前記ユニバーサルメッセージの前記サブセットからのユニバーサルメッセージの前記ゲームデータを前記ノードと一体化するステップをさらに含む、請求項５１に記載の方法。
【請求項５３】
前記ノードが前記ユニバーサルメッセージのサブセットからのユニバーサルメッセージと互換であることを、前記ユニバーサルメッセージに関連するノード属性に基づいて判定するステップをさらに含み、
前記ノード属性が、前記ノードを指定する、請求項４６に記載の方法。
【請求項５４】
前記人工環境の前記一部を変更するステップが、前記人工環境に動的コンテンツを導入するステップを含む、請求項４６に記載の方法。
【請求項５５】
前記分散プロセスが、ゲーム管理プロセス、ゲームサブプロセス、及びデータベースプロセスを含む、請求項４６に記載の方法。
【請求項５６】
前記ゲーム管理プロセスからの前記ユニバーサルメッセージのサブセットを、前記ゲームサブプロセス又は前記データベースプロセスのいずれか又は両方に送信するステップをさらに含む、請求項５５に記載の方法。
【請求項５７】
人工環境に関連するユニバーサルメッセージを生成するコンピュータ可読媒体であって、
人工環境生成プラットフォームへの移送のためにデータを受け取る実行可能命令と、
ユニバーサルメッセージを生成して、ユニバーサルデータ構造を含める実行可能命令と、
前記ユニバーサルメッセージを送信する実行可能命令と
を含む、コンピュータ可読媒体。
【請求項５８】
前記ユニバーサルメッセージを生成する前記実行可能命令が、プラットフォーム独立フォーマットを有する前記ユニバーサルデータ構造に従って前記データをフォーマットする実行可能命令を含む、請求項５７に記載のコンピュータ可読媒体。
【請求項５９】
前記ユニバーサルメッセージを生成する前記実行可能命令が、プロパティクラスオブジェクトを生成して前記データを含める実行可能命令を含む、請求項５７に記載のコンピュータ可読媒体。
【請求項６０】
前記ユニバーサルメッセージを生成する前記実行可能命令が、前記ユニバーサルデータ構造に従って前記データをフォーマットする実行可能命令を含み、
前記ユニバーサルデータ構造が、前記人工環境生成プラットフォームと通信するノードによって使用可能である、請求項５７に記載のコンピュータ可読媒体。
【請求項６１】
移送のためにデータを受け取る前記実行可能命令が、拡張可能マークアップ言語によって定義されるデータ配置から前記データを抽出する実行可能命令を含む、請求項５７に記載のコンピュータ可読媒体。
【請求項６２】
前記ユニバーサルメッセージを生成する実行可能命令が、
前記データ配置から前記データをシリアライズする実行可能命令と、
プロパティクラスオブジェクトを生成して前記データを含める実行可能命令と
をさらに含む、請求項６１に記載のコンピュータ可読媒体。
【請求項６３】
前記プロパティクラスオブジェクトをパケット化する実行可能命令をさらに含む、請求項６２に記載のコンピュータ可読媒体。
【請求項６４】
前記ユニバーサルメッセージを生成して前記ユニバーサルデータ構造を含める前記実行可能命令が、圧縮ユニバーサルメッセージを生成する実行可能命令をさらに含む、請求項５７に記載のコンピュータ可読媒体。
【請求項６５】
前記圧縮ユニバーサルメッセージを生成する実行可能命令が、
前記データのデータ部分が変更されたことを判定して、変更されたデータ部分を識別する実行可能命令と、
前記変更されたデータ部分の属性を判定する実行可能命令と、
前記圧縮ユニバーサルメッセージを形成して、前記変更されたデータ部分の属性及び前記属性の値を指定するキーを含める実行可能命令と
を含む、請求項６４に記載のコンピュータ可読媒体。
【請求項６６】
前記圧縮ユニバーサルメッセージを生成する前記実行可能命令が、
ベクトルとして配置された複数のプロパティ値を含むオブジェクトを生成する実行可能命令と、
前記複数のプロパティ値からのプロパティ値が変更されたことを判定して、変更されたプロパティ値を識別する実行可能命令と、
前記圧縮ユニバーサルメッセージを形成して、前記変更されたプロパティ値及び前記ベクトルへのインデックスを含める実行可能命令と
を含む、請求項６４に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明の実施形態は、全般的にはコンピュータベースのシミュレーション及び人工環境（ｓｙｎｔｈｅｔｉｃ  ｅｎｖｉｒｏｎｍｅｎｔ）生成に関し、より具体的には、とりわけ動的コンテンツを導入するために分散アーキテクチャ内で人工環境を生成するシステム、コンピュータ可読媒体、方法、及び装置に関する。
【背景技術】
【０００２】
[0002]多人数参加型オンライン（ｍａｓｓｉｖｅｌｙ  ｍｕｌｔｉｐｌａｙｅｒ  ｏｎｌｉｎｅ、「ＭＭＯ」）ゲーム内の仮想世界などのコンピュータ生成される環境を設計し、シミュレートする伝統的な技法は、新しい又は変更された仮想世界の効率的な開発及び制作をたやすくは容易にしない。さらに、仮想世界を生成するための従来のゲームプラットフォームは、特に多人数参加型オンラインゲームに関して、仮想世界の開発及び制作をさらに妨げる。一般に、従来のゲームプラットフォームは、ゲームサーバのセットを使用して仮想世界を作成し、ゲームサーバの各追加のセットが、仮想世界のコピーを作成するのに使用される。そのようなコピーを、通常、「シャード（ｓｈａｒｄ）」と称する。従来のゲームプラットフォームは、通常、各仮想世界の地理をパーティションに分割し、各単一パーティションを生成するために１つのゲームサーバを割り振る。仮想世界のパーティションを生成するように構成されたゲームサーバを、一般に、「エリアサーバ」と称する。さらに、いくつかの従来のゲームサーバは、モノリシックであり、これは、仮想世界のパーティションを生成するすべてのゲームプロセスが、単一のプロセス及び／又はサーバ内に設けられることを意味する。機能はするが、従来のゲームプラットフォーム並びにコンピュータ生成された世界の開発に対する伝統的手法に関連する様々な欠点がある。
【０００３】
[0003]従来のゲームプラットフォームの欠点は、仮想世界のパーティションのために１つのゲームサーバを割り振ることである。したがって、ゲームサーバ及びその機能性は、通常、パーティション及びそのアクティビティに直接にリンクされる。したがって、地理的にリンクされたゲームサーバの性能は、そのパーティションのプレイヤの人数並びにそこで実行されるアクティビティの種類の関数である。さらに、モノリシックゲームサーバを使用する従来のゲームプラットフォームは、需要の増加を満たすためにハードウェア機能を調整する能力のなさによって多少制限される。したがって、より多くのプレイヤが特定のパーティションに移動する時に、そのパーティションをサポートするゲームサーバが、ますます重荷を負うようになる。これが、対応する仮想世界パーティションと相互作用できるプレイヤの人数を制限する。救済策として、いくつかの多人数参加型オンラインゲームは、非常に人口の多いゲームサーバから比較的人口の少ないゲームサーバへプレイヤを移動するように動作する。これが、プレイヤ経験に大きく影響する場合がある。
【０００４】
[0004]伝統的なゲームプラットフォームのもう１つの欠点は、各ゲームサーバが、通常、同一の仮想世界内の他のゲームサーバとは別々の、仮想世界パーティションを生成するためのプロセス空間を有することである。プレイヤが、２つの仮想世界部分を画定する地理的境界にまたがって相互作用することは、珍しくない。したがって、パーティション境界に起因して問題が生じ、従来のゲームプラットフォームは、一般に、クロスパーティション相互作用を管理することを試みるために計算リソースを必要とする。例えば、あるパーティション内のあるプレイヤに関連するゲームサーバは、一般に、他の仮想世界パーティション内の他のプレイヤとのそのプレイヤの相互作用を追跡するために、ある種のトラッキング機能性を必要とする。もう１つの例として、計算リソースが、一般に、異なるプロセス空間内のプロキシとしてプレイヤを維持するのに必要であることを検討されたい。伝統的に、プロキシとしてのプレイヤの実施は、キャラクタ識別子などのある仮想世界パーティションのプレイヤ固有情報のある表現を、別の仮想世界パーティションの別々のプロセス空間と共に使用される別の表現に変換することを必要とする。さらに、ゲームサーバは、通常、例えばリモートプロシージャ呼出しを使用してプレイヤ相互作用に関してそれら自体の間で通信し、このリモートプロシージャ呼出しが、通信の複雑さ並びにクロスパーティション相互作用の待ち時間を増やす。
【０００５】
[0005]従来のゲームプラットフォームのさらなる欠点は、異なる仮想世界パーティションにまたがって相互作用するプレイヤ（又はプレイヤのプロキシ）が、それら自体を不公平に豊かにするためにトランザクションをたやすく中断できることである。例示のために、ある仮想世界パーティションの第１プレイヤが、別の仮想世界パーティションの第２プレイヤが所有する黄金と武器を交換することを申し出ると考えられたい。次に、第１プレイヤが黄金を受け取るが、武器を引き渡す前に、第１プレイヤが、異なる仮想世界パーティションにあるゲームサーバの間の接続を破壊すると考えられたい。その結果、第１プレイヤは、武器を交換せずに黄金を受け取る。
【０００６】
[0006]モノリシックゲームサーバを使用することの１つの欠点は、モノリシックゲームサーバの、物理プロセスなど、ゲームサブプロセスのうちの１つがつまずくかシャットダウンする場合に、そのゲームサブプロセスが存在するゲームサーバ全体も、つまずき又はシャットダウンを許すことである。
【０００７】
[0007]多人数参加型オンラインゲームのコンピュータ生成される環境を設計し、シミュレートするのに現在のクライアント−サーバアーキテクチャを使用することの他の欠点がある。新しい又は変更された仮想世界の新しいコンテンツを作成するのに必要な開発アクティビティと一緒に、ゲームデザイナ及び開発者が、新しいコンテンツ及びそのデータに対処するために実行可能命令をも定期的に変更することを考慮されたい。実行可能命令の変更は、通常、特にバグ及び他の問題を取り除くための品質保証及び信頼性テスティング中に、開発時間を増やす。さらに、多人数参加型オンラインゲームは、一般に、新しいコンテンツとの相互作用の前に、変更された実行可能コードをクライアントにダウンロードすることを必要とする。例えば、多人数参加型オンラインゲームプラットフォームが、変更された実行可能コードを含むことのできる大量データダウンロード（例えば、２５０ＭＢ）を実施することが珍しくはない。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
[0008]前述を考慮すると、とりわけ人工環境に動的コンテンツを導入するため、及び新しい又は変更された人工環境の効率的な開発及び制作をさらに実現するために、分散アーキテクチャ内で人工環境を生成するシステム、コンピュータ可読媒体、方法、及び装置を提供することが望ましい。
【課題を解決するための手段】
【０００９】
[0009]本発明の実施形態は、全般的にはコンピュータベースのシミュレーション及び人工環境生成に関し、より具体的には、とりわけ動的コンテンツを導入するために、分散アーキテクチャ内で人工環境を生成するシステム、コンピュータ可読媒体、方法、及び装置に関する。一実施形態では、人工環境生成プラットフォームは、人工環境の生成を容易にするためにユニバーサルデータ構造及びメッセージングシステムを実施することができる。
【００１０】
[0010]本発明は、添付図面と共に解釈される次の詳細な説明に関連してより十分に了解される。
【図面の簡単な説明】
【００１１】
【図１Ａ】本発明の少なくとも１つの実施形態による人工環境を生成するシステムを示す図である。
【図１Ｂ】本発明の少なくとも１つの実施形態による擬似集約プロセス空間に関して人工環境を全体的に又は部分的に生成するゲーム管理サーバを示す図である。
【図２】本発明の少なくとも１つの実施形態によるメッセージングシステムの例を示す図である。
【図３】本発明の少なくとも１つの実施形態によるユニバーサルメッセージングインターフェースを実施する人工環境を生成するシステムを示す図である。
【図４Ａ】本発明の少なくとも１つの実施形態による、動的コンテンツを人工環境に導入する方法を示す図である。
【図４Ｂ】本発明の少なくとも１つの実施形態による、動的コンテンツを人工環境に導入するように構成された人工環境生成プラットフォームを示す図である。
【図５】本発明の少なくとも１つの実施形態による、人工環境の生成に使用される擬似集約プロセス空間を示す図である。
【図６】本発明の少なくとも１つの実施形態による、圧縮ユニバーサルメッセージを実施するメッセージングシステムの一部の例を示す図である。
【図７】本発明の少なくとも１つの実施形態による、マスタスケーリングサーバを実施する人工環境を生成するシステムを示す図である。
【図８】本発明の少なくとも１つの実施形態による、スケーラブルゲームサブプロセスサーバを追加するマスタスケーリングサーバの例を示す図である。
【図９】本発明の少なくとも１つの実施形態による、ゲームサブプロセスサーバの特定の実装を実施する人工環境生成プラットフォームを示す図である。
【図１０】本発明の少なくとも１つの実施形態による、物理プロセスの実装を示す図である。
【図１１】本発明の少なくとも１つの実施形態による、可視性を判定する技法を示す図である。
【図１２】本発明の少なくとも１つの実施形態による、追加のタイプのゲームサブプロセスサーバを実施する人工環境生成プラットフォームを示す図である。
【図１３】本発明の少なくとも１つの実施形態による、パッチ中にゲームプレイを可能にする技法を示す図である。
【図１４】本発明の少なくとも１つの実施形態による、イベントサーバ及びイベントエディタを実施する人工環境生成プラットフォームを示す図である。
【図１５】本発明の少なくとも１つの実施形態による、様々な度合の動的コンテンツを導入するイベントを作成する流れを示す図である。
【図１６】本発明の少なくとも１つの実施形態による、ユニバーサルデータ構造の特定の実装を示す図である。
【図１７】本発明の少なくとも１つの実施形態による、プロパティクラスシステムの要素を示す図である。
【図１８】本発明の少なくとも１つの実施形態による、ユニバーサルメッセージを作成する流れを示す図である。
【図１９】本発明の少なくとも１つの実施形態による、ユニバーサルメッセージを作成するプロパティクラスシステムの要素を示す図である。
【図２０】本発明の少なくとも１つの実施形態による、プラグを作成するプロパティクラスシステムの要素を示す図である。
【図２１】本発明の少なくとも１つの実施形態による、圧縮ユニバーサルメッセージを実施するメッセージングシステムの部分の例を示す図である。
【図２２】本発明の少なくとも１つの実施形態による、人工環境生成プラットフォームと相互作用するユニバーサルメッセージングインターフェースを実施する複数のクライアントを示す図である。
【発明を実施するための形態】
【００１２】
[0035]図中、同様の符号は、図面の複数の図を通じて対応する部分を指す。符号のほとんどが、その符号が初めて導入される図を全般的に識別する１つ又は２つの左端桁を含むことに留意されたい。
【００１３】
[0036]図１Ａに、本発明の少なくとも１つの実施形態による人工環境を生成するシステムを示す。そのようなシステムの一例は、人工環境生成プラットフォーム１００であり、この人工環境生成プラットフォーム１００は、クライアント１５０が相互作用する人工環境を生成するために一緒にネットワーク化されたノード（及びノードプロセス）を含む。人工環境生成プラットフォーム１００は、クライアント−サーバネットワークアーキテクチャ内のサーバ側の構造及び／又は機能性を表し、クライアント１５０は、クライアント側の構造及び／又は機能性を表す。ノードは、ゲームサブプロセスサーバ１０４、データベース１１２、及びゲーム管理サーバ１２２を含み、これらのすべてが、それぞれゲームサブプロセス１０２、データベースプロセス１１０、及びゲーム管理プロセス１２０を実施するためにネットワーク１１５によって一緒に結合される。ゲームサブプロセス１０２は、サブプロセス１０２ａ、１０２ｂ、及び１０２ｃより多数又はこれより少数を含むことができる。図示されているように、ゲームサブプロセスサーバ１０４は、少なくともゲーム管理サーバ１２２に対して相対的に分散配置に配置され、これによって、ゲームサブプロセス１０２をゲーム管理プロセス１２０から分離する。少なくとも１つの実施形態では、ゲームサブプロセスサーバ１０４ａ、ゲームサブプロセスサーバ１０４ｂ、及びゲームサブプロセスサーバ１０４ｃを、それぞれ物理サーバ、人工知能サーバ、及びトランザクションサーバとして又は任意の他のゲーム関連サブプロセスとして動作するように構成することができる。さらに、人工環境生成プラットフォーム１００は、様々な実施形態に従って、ゲーム管理サーバ１２２の間又は人工環境生成プラットフォーム１００及び他の類似する人工環境生成プラットフォーム１００（図示せず）の間のいずれか或いはその両方で共有できる擬似集約プロセス空間１５２を実施するように構成される。
【００１４】
[0037]ゲームサブプロセス１０２ａ、１０２ｂ、及び１０２ｃをゲーム管理プロセス１２０とは別々に分散させることによって、ゲーム管理サーバ１２２は、独立に動作し、これによって、ゲーム管理サーバ１２２が、ゲームサブプロセスサーバ１０４のいずれかの性能の劣化に対してより脆弱でなくなる。したがって、ハードウェア障害及びソフトウェア障害を、特定のゲームサーバサブプロセス１０２に局所化することができ、これによって、しばしば、ゲーム管理プロセス１２０に割り込むことなく、手早く処理される問題識別及び解決が可能になる。これは、クライアント１５０ａ及びクライアント１５０ｂなどのクライアント１５０が、ゲームサブプロセスサーバ１０４に関して発生する問題によって割り込まれることなく、人工環境と相互作用し続けることを可能にする。さらに、分散ゲームサブプロセス１０２ａ、１０２ｂ、及び１０２ｃは、適当な量のゲームサブプロセス１０２ａ、１０２ｂ、及び１０２ｃを十分に提供するためにオンラインにすることのできるゲームサブプロセスサーバ１０４の量の独立スケーリングを促進する。例えば、人工環境が、追加の人工知能を必要とする場合に、追加の人工知能サーバを、物理プロセスなどの他のゲームサブプロセス１０２の必要とは独立にオンラインにすることができる。したがって、適当な量のハードウェア及びソフトウェアを実施して、人工環境生成プラットフォーム１００によって生成される人工環境と相互作用する任意の個数のクライアント１５０のための人工環境生成を容易にすることができる。さらに、擬似集約プロセス空間１５２は、他の類似する人工環境生成プラットフォームと共有されるが、プラットフォーム間（即ち、クロスシャード）相互作用を容易にし、これによって、とりわけ、改善された通信及びより安全なトランザクションを提供する。
【００１５】
[0038]ゲーム管理サーバ１２２は、それぞれ、ゲームサブプロセス１０２及びデータベースプロセス１１０と協力して、参加者が相互作用する人工環境を生成するように構成される。したがって、ゲーム管理サーバ１２２は、クライアント１５０に関連する複数の参加者を、人工環境とのその相互作用において管理するように構成される。ゲームサブプロセス１０２を、クライアント１５０の個数をサポートするためにそれ相応にスケーリングできることに留意されたい。様々な実施形態では、クライアント１５０を、１つのゲーム生成プロセスに制限するのではなく、複数のゲーム管理サーバ１２２にまたがって分散させることができる。例示のために、クライアント１５０ａが、ゲーム管理サーバ１２２ａと相互作用でき、クライアント１５０ｂが、ゲーム管理サーバ１２２ｃと相互作用できると考えられたい。クライアント１５０ａ及び１５０ｂは、異なるゲーム管理プロセスと相互作用するが、クライアント１５０ａ及び１５０ｂが相互作用する人工環境にかかわりなく、擬似集約プロセス空間１５２を共有することができる。一実施形態では、クライアント１５０ａ及び１５０ｂは、共通プロセス空間として擬似集約プロセス空間１５２を共有することができる。したがって、クロス人工環境相互作用を、たやすく発生させることができる。いくつかの実施形態では、ゲーム管理サーバ１２２は、特定の参加者によって要求されたアクションを妥当性検査し、これによって、その参加者がゲームデータを変更する権利を有することを認証するように動作することができる。少なくとも１つの実施形態では、ゲーム管理サーバ１２２ａから１２２ｎは、クライアント１５０による人工環境との相互作用を表すゲームデータを読取り専用の形で維持する。したがって、このゲームデータを、トランザクションを破壊するために操作することはできず、そうでなければ、ある参加者を不公平に豊かにすることができるはずである。
【００１６】
[0039]一実施形態では、ゲームサブプロセスサーバ１０４ａを物理サーバとすることができ、この物理サーバを、人工環境内の参加者に関するものなど、移動及び衝突アクティビティを処理するように構成することができる。例えば、物理サーバ１０４ａは、衝突検出、剛体移動、及び類似物などの物理関連イベントを処理することができる。ゲームサブプロセスサーバ１０４ｂは、少なくとも１つの実施形態によれば、人工知能サーバとすることができ、この人工知能サーバを、例えば人工環境内の非プレイヤキャラクタ（「ＮＰＣ」）による移動をシミュレートするために人工知能を提供するように構成することができる。
【００１７】
[0040]様々な実施形態では、ゲームサブプロセスサーバ１０４ｃを、トランザクションサーバとすることができ、このトランザクションサーバを、参加者の間のトランザクションが原子的であることを保証するためにそれらのトランザクションを管理するように構成することができる。即ち、ゲームサブプロセスサーバ１０４ｃは、トランザクションのすべての部分が発生するか、或いはすべての部分が発生しないことを保証し、これによって、データベースプロセス１１０に格納されたゲームデータが、トランザクションのすべての部分が成功しない限り更新されないことを保証し、これによって、参加者が不公平に豊かにすることを試みるための抜け道を減らすように動作することができる。トランザクションサーバは、あるアクティビティが両方の参加者にとって正しく完了され、或いは両方の参加者によって失敗されることを保証するゲームオーソリティである。一実施形態では、人工環境生成プラットフォーム１００内のすべてのサーバが、ゲームサブプロセスサーバ１０４ｃ（トランザクションサーバとしての）を除いて、読取り専用である。したがって、トランザクションサーバ（ゲームサブプロセスサーバ１０４ｃとしての）は、ゲームデータを取引する単一のオーソリティとして動作することができる（即ち、ゲームデータを変更することを許可される）。少なくとも１つの実施形態では、ゲームサブプロセスサーバ１０４を構成するトランザクションサーバを、擬似集約プロセス空間１５２を単位プロセス空間として実施するように構成することができ、これによって、参加者が、異なる人工環境用のゲーム管理サーバにかかわると同時に、擬似集約プロセス空間１５２によって提供されるエミュレートされた共通プロセス空間内で取引することが可能になる。
【００１８】
[0041]動作中に、クライアント１５０ａ及び１５０ｂは、ゲーム管理プロセス１２０内のゲームデータを変更するために、アバタなどの参加者の表現をもたらす要求を生成する。本明細書で使用される時に、用語「ゲーム管理サーバ」は、少なくとも一実施形態で、人工環境との参加者の相互作用を管理するコンピューティングデバイス及び／又はプロセスを指す。例えば、ゲーム管理サーバは、クライアント１５０から入力を受け入れ、これに応答して、ゲームサブプロセス１０２及びデータベースプロセス１１０と協力して、クライアント１５０ａ及び１５０ｂに送り返すための変更されたゲームデータを生成し、この変更されたゲームデータは、クライアント相互作用に基づく変更された人工環境を表す。本明細書で使用される時に、用語「ゲームサブプロセスサーバ」は、少なくとも一実施形態で、その結果がゲーム管理サーバによって使用される、物理サーバ及び人工知能サーバなどのゲームプロセスのサブセットを実行するコンピューティングデバイス及び／又はプロセスを指す。
【００１９】
[0042]本明細書で使用される時に、用語「ノード」は、少なくとも一実施形態で、サーバ、クライアント、データベース、及び類似物など、人工環境の生成に影響するコンピューティングデバイス及び／又はプロセスを指す。本明細書で使用される時に、用語「ゲームデータ」は、少なくとも一実施形態で、人工環境の生成に関連するデータの少なくともサブセットを指す。ゲームデータは、例えば、人工環境の地面を生成するために、マップデータを含むことができる。ゲームデータは、キャラクタデータ、インベントリデータ（例えば、武器データ）、銀行データ、合成家データ、賞データ、及び類似物を含む、参加者の状態をも含むことができる。本明細書で使用される時に、用語「人工環境」は、少なくとも一実施形態で、その参加者が例えばアバタを介して住み、相互作用することを意図されたコンピュータベースのシミュレートされた環境である仮想世界（又はその一部）を指すことができる。人工環境は、参加者の相互作用なし又はそれなしで前進する仮想世界である、シャード又は持続的世界（又はその一部）を指すこともできる。本明細書で使用される時に、用語「参加者」は、少なくとも一実施形態で、プレイヤ、又はプレイヤの２次元若しくは３次元のグラフィカル表現（例えば、アバタ）表現のいずれか、或いはその両方を指す。参加者は、プレイヤがそれを用いて相互作用するクライアントを指すこともできる。本明細書で使用される時に、用語「擬似集約プロセス空間」は、少なくとも一実施形態で、アプリケーションのために割り振られ、及び／又はプロセッサ（例えば、１つ又は複数の中央処理装置（ＣＰＵ））によって命令を実行するために実施される、メモリ空間を指し、これによって、メモリ空間は、あるタイプのデータについて集約された共通プロセス空間として振る舞うように構成され、さらに、１つ又は複数の他のタイプのデータについて別々のプロセス空間として振る舞うように構成される。
【００２０】
[0043]ゲームサブプロセスサーバ１０４及びゲームサブプロセス１０２を、例えば他の実施形態による多人数参加型オンラインゲーミング（「ＭＭＯ」）を容易にするために、任意の他のゲーム関連プロセスを実施するように構成することができる。さらに、１つ又は複数のデータベース１１２ａから１１２ｃを、例えば、とりわけ人工環境を生成するために、データを格納するように構成することができる。したがって、１つ又は複数のデータベース１１２ａから１１２ｃは、参加者アカウントに関するアカウントデータ、統計データ、監査データ、ゲームデータ、及び類似物を格納することができる。特定の実施形態では、人工環境生成プラットフォーム１００が、リンク１４０を介してデータを交換するように構成され、リンク１４０は、例えば、インターネットを含む複数のネットワーク（図示せず）のうちのいずれかを介して通信信号を伝えることができる。一実施形態では、リンク１４０は、少なくとも約５Ｋｂｓから約１０Ｋｂｓ、或いはそれより高速でデータを送信し、及び／又は受信するように構成される。したがって、リンク１４０は、特に実質的に同時に、５Ｋｂｓアップストリーム及び５Ｋｂｓダウンストリームをサポートすることができる。他の実施形態では、リンク１４０は、デジタル加入者回線（「ＤＳＬ」）テクノロジ、ケーブルテクノロジ、衛星テクノロジ、及び類似物などのブロードバンド接続として実施することのできる、比較的高帯域幅のリンクである。また、リンク１４０を、無線リンクとすることができる。一実施形態では、高帯域幅リンク１４０は、１０Ｋｂｓより高速のレートでデータを送信し、及び／又は受信することができ、したがって、リンク１４０は、１０Ｋｂｓより高速のデータ転送レートを実施することができる。さらに、ネットワーク１１５は、少なくとも１から１５ギガビット毎秒又はそれより高速のレートでメッセージ及び／又はパケットを移送するように構成される。一実施形態では、ネットワーク１１５は、１０ギガビットイーサネット（「１０ＧｂＥ」）ネットワークである。
【００２１】
[0044]図１Ｂは、本発明の少なくとも１つの実施形態による、プロセス空間に関連して人工環境を全体的に又は部分的に生成するゲーム管理サーバの図である。人工環境生成プラットフォーム１６０は、クライアント１５０ａ及び１５０ｂ用の人工環境１６２を生成するように構成される。この例では、人工環境１６２は、４つの領域即ち、領域１（「Ｒ１」）１６３、領域２（「Ｒ２」）１６５、領域３（「Ｒ３」）１６７、及び領域４（「Ｒ４」）１６９を含む。次に、参加者１７０及び参加者１７２が、それぞれクライアント１５０ａ及び１５０ｂに関連すると考えられたい。人工環境生成プラットフォーム１６０は、ゲーム（「ｍｇｍｔ」）管理サーバ１２２ａから１２２ｄによって実施されるゲーム管理プロセス１２０を含む。人工環境生成プラットフォーム１６０は、それを用いて人工環境１６２を生成できる擬似集約プロセス空間１６１をも含む。
【００２２】
[0045]本発明の様々な実施形態によれば、擬似集約プロセス空間１６１は、いくつかのインスタンスでは共通プロセス空間として、他のインスタンス中には別々のプロセスの集合として動作するように構成される。具体的に言うと、擬似集約プロセス空間１６１は、ゲームデータの第１サブセットについて共通プロセス空間として機能するように構成され、データの第２サブセットについて別々のプロセス空間として機能するように構成される。例えば、トランザクションサーバ１９０は、例えば非ジオメトリ関連データ及びトランザクション関連データ用の共通プロセス空間として擬似集約プロセス空間１６１を実施するように構成されるが、ゲーム管理サーバ１２２は、一例として、ジオメトリ関連データ用の別々のプロセス空間として擬似集約プロセス空間１６１を実施するように構成される。少なくとも１つの実施形態では、人工環境生成プラットフォーム１６０は、擬似集約プロセス空間１６１を全体的に又は部分的に実施するためにトランザクションサーバ１９０を含む。具体的に言うと、トランザクションサーバ１９０は、それを用いて参加者１７０ｃのデータの第１サブセット１９２及び参加者１７２のデータの第１サブセット１９４を処理すべき共通プロセス空間を有する。データの第１サブセット１９２及び１９４の例は、参加者が売買を望むアイテムを表すデータを含む。例えば、参加者１７０ｃ及び１７２のデータの第２サブセットは、例えば、ゲーム管理サーバ１２２ｂ及び１２２ｄが処理するジオメトリデータに関係することができる。
【００２３】
[0046]動作中に、参加者１７０がログインする時には、人工環境生成プラットフォーム１６０は、その参加者をゲーム管理サーバ１２２ｂに割り当てる。対照的に、参加者１７２がログインする時には、人工環境生成プラットフォーム１６０は、参加者１７２をゲーム管理サーバ１２２ｄに割り当てる。参加者１７０及び１７２は、セッション中に、それぞれゲーム管理サーバ１２２ｂ及び１２２ｄに関連付けられたままになる。次に、この両方が、図示されていない多数の他の参加者と同様に、領域２  １６５のアクティビティにかかわることを望むと考えられたい。参加者１７０ａは、領域１  １６３で人工環境１６２に入り、その後、参加者１７０ｂとして領域２  １６５に移動する。領域１  １６３と領域２  １６５との両方が、擬似集約プロセス空間１６１に関係するので、そうでなければクロスパーティション相互作用を管理するために必要になるはずの計算リソースは、例えば擬似集約プロセス空間１６１が共通プロセス空間としてアクセスされる時に、必要ではない。参加者１７０ｃは、さらに、領域３  １６７に移動し、その後、参加者１７０ｄとして領域４  １６９に移動することができる。より多くの参加者が領域２  １６５に入る時に、その増やされた数が、対応してサーバを停滞はさせないことに留意されたい。これは、本発明の様々な実施形態に従って、人工環境１６２を生成するゲーム関連プロセスが、地理的位置にリンクされないからである。この例では、どの１つのゲーム管理サーバ１２２も、すべての重荷を負ってはおらず、この重荷は、全体としてゲーム管理プロセス１２０にまたがって償却され得る。したがって、大勢の参加者が、単一のゲーム管理サーバ１２２の性能を大幅に圧倒せずに１つの領域に集まることができる。
【００２４】
[0047]図２は、本発明の少なくとも１つの実施形態によるメッセージングシステムの例を示す図である。図２には、ネットワーク２３０を介して、そのすべてがノードであるデータベースプロセス２０１、サーバプロセス２０６、及びクライアントプロセス２４０を一緒に結合するように構成されたメッセージングシステム２５０の少なくとも一部を実施する人工環境生成プラットフォーム２００が示されている。ネットワーク２３０を、コンピュータネットワーク又は任意の他のタイプの通信ネットワークとすることができる。データベースプロセス２０１は、データベース（「ｄ／Ｂ」）２０２及びデータベース管理システム（「ＤＢＭＳ」）２０４を含み、このデータベース管理システム２０４は、データベース２０２内のデータの編成、格納、及び取出を制御する。動作中に、メッセージングシステム２５０は、メッセージ２２０ａ及び２２０ｂなど、ユニバーサルデータ構造２６０を含むメッセージを、サーバプロセス２０６などのノード（又はノードプロセス）にデータを一体化するために伝搬させるように構成される。具体的に言うと、メッセージングシステム２５０は、データベースプロセス２０１、サーバプロセス２０６、及びクライアントプロセス２４０の間で、これらのプロセスのそれぞれによって使用可能であるデータ配置でデータを交換するように構成される。１つ又は複数の実施形態では、メッセージ２２０ａ及び２２０ｂに関連するデータ配置は、プロセスのそれぞれによって直接に使用可能である。例えば、サーバプロセス２０６は、メッセージ２２０ａによって使用されるユニバーサルデータ構造（「ＵＤＳ」）２６０ａに従って配置されたデータを使用することができる。したがって、データベースプロセス２０１、サーバプロセス２０６、及びクライアントプロセス２４０は、メッセージ２２０ａ及び２２０ｂに関連するデータ構造から、そうでなければ特定のノードによって要求される可能性がある異なる（又は特殊化された）形への変換を要求する必要がない。したがって、そうでなければそのような変換を提供するために必要になる可能性がある実行可能コードは、存在しない。
【００２５】
[0048]図２に示されているように、メッセージングシステム２５０は、ユニバーサルメッセージインターフェース２１０ａ、ユニバーサルメッセージインターフェース２１０ｂ、及びユニバーサルメッセージインターフェース２１０ｃなどの複数のユニバーサルメッセージインターフェースを含むことができ、これらのユニバーサルメッセージインターフェースのそれぞれは、人工環境生成プラットフォーム全体の及びクライアントプロセス２４０との伝送のためにメッセージ２２０ａ及び２２０ｂを生成するように構成され得る。ユニバーサルメッセージインターフェース２１０ａ、２１０ｂ、及び２１０ｃのそれぞれを、そのデータをノードプロセスに一体化するためにメッセージ２２０ａ及び２２０ｂを受信するように構成することができる。さらに、ユニバーサルデータ構造２６０が開発される時に、そうでなければあるタイプのデータ構造を異なるデータ構造に変換するはずの、実行可能コードの再コンパイルは、不要である。本明細書で使用される時に、用語「ユニバーサルデータ構造」は、少なくとも一実施形態で、ある異なる（又は特殊化された）データ構造への変換を必要としない、ノードによってあまねく使用可能であるデータ並びにメッセージ２２０ａ及び２２０ｂの表現を指す。
【００２６】
[0049]様々な実施形態では、図２のユニバーサルメッセージインターフェース２１０ａ、２１０ｂ、及び２１０ｃを、同一とすることができ、或いはその代わりに、それらが関係するノードに対処するために異なるものとすることができる。ユニバーサルメッセージインターフェース２１０ａ、２１０ｂ、及び２１０ｃを、ノードの内部で実施することができ、或いは、これらを、人工環境生成プラットフォーム内の任意の場所に配置することができる。少なくとも１つの実施形態では、ユニバーサルメッセージインターフェース２１０ａ、２１０ｂ、及び２１０ｃのそれぞれを、メッセージ２２０ａなどのメッセージをいずれか又はすべての他のノードにブロードキャストするように構成することができる。したがって、ユニバーサルメッセージインターフェース２１０ａ、２１０ｂ、及び２１０ｃのそれぞれを、メッセージのそれぞれがユニバーサルメッセージインターフェースが関係するノード宛であるかどうかを検出するように構成することができる。もう１つの実施形態では、ユニバーサルメッセージインターフェース２１０ａ、２１０ｂ、及び２１０ｃのそれぞれを、宛先に向けてメッセージを送信するように構成することができる。一実施形態では、メッセージ２２０ｂなど、クライアントと人工環境生成プラットフォームとの間のメッセージを、１つ又は複数のユーザデータグラムプロトコル（「ＵＤＰ」）パケット又はインターネットプロトコル（「ＩＰ」）パケットで実施することができる。一実施形態では、サーバプロセス２０６及びデータベースプロセス２０１の間のメッセージを、１つ又は複数の伝送制御プロトコル（「ＴＣＰ」）パケットで実施することができる。一実施形態では、ネットワーク２３０は、人工環境生成プラットフォーム２００のプラットフォーム内通信をサポートする。少なくとも１つの実施形態では、クライアントプロセス２４０は、ネットワーク２３２を介して人工環境生成プラットフォーム２００に結合される。ネットワーク２３２は、少なくとも１つの実施形態で、インターネット又は任意の他の通信ネットワークを含む。いくつかのインスタンスでは、クライアントプロセス２４０は、仲介プロセス（図示せず）を介してデータベースプロセス２０１及び／又はサーバプロセス２０６とメッセージを交換する。そのような仲介プロセスの例が、図１２のユーザサーバとして図示されている。
【００２７】
[0050]一実施形態では、ユニバーサルデータ構造２６０は、Ｃ＋＋又は任意の他のプログラミング言語など、オブジェクト指向プログラミング言語の一クラスのデータ構造である。もう１つの実施形態では、すべてのタイプのユニバーサルデータ構造２６０が、単一のクラスに関係することができる。ユニバーサルメッセージインターフェース２１０ａ、２１０ｂ、及び２１０ｃは、ノードがユニバーサルデータ構造２６０内でデータを実施する（例えば、直接に実施する）ことを可能にするように構成されたインスタンス管理スキーマを決定することができる。一実施形態では、ノードは、ユニバーサルデータ構造２６０をどのように実施すべきかに関してノードに指示するスキーマへの参照を含むことができる。もう１つの実施形態では、ユニバーサルメッセージ２２０ａが、その参照を含む。いくつかの実施形態では、ユニバーサルメッセージインターフェース２１０ａ、２１０ｂ、及び２１０ｃのそれぞれを、ユニバーサルデータ構造をプラットフォーム独立フォーマットでフォーマットするように構成することができ、このプラットフォーム独立フォーマットは、プロセス及び／又はオペレーティングシステムから独立に使用され得る。プラットフォーム独立フォーマットの一例は、例えば、ＸＭＬなどの拡張可能マークアップ言語によって定義されるフォーマットである。ＸＭＬは、ワールドワイドウェブコンソーシアム（「Ｗ３Ｃ」）によって保守されている。
【００２８】
[0051]図３に、本発明の少なくとも１つの実施形態によるユニバーサルメッセージングインターフェースを実施する人工環境を生成するシステムを示す。この例では、人工環境生成プラットフォーム３００は、ユニバーサルデータ構造ベースのメッセージを送信し、及び／又は受信するように構成されたユニバーサルメッセージインターフェース（「ＵＭＩ」）３０２、３０４、及び３０６を含む。図示されているように、ユニバーサルメッセージインターフェース３０２ａ、３０２ｂ、及び３０２ｃは、それぞれゲームプロセス１０２ａ、１０２ｂ、及び１０２ｃに又はその近くに配置される。ユニバーサルメッセージインターフェース３０２ａ、３０２ｂ、及び３０２ｃのそれぞれは、ゲームサブプロセスサーバ１０４に関連する。いくつかの場合に、ユニバーサルメッセージインターフェース３０２ａ、３０２ｂ、及び３０２ｃのそれぞれは、同等の構造及び／又は機能性を有することができ、他の場合に、ユニバーサルメッセージインターフェース３０２ａ、３０２ｂ、及び３０２ｃは、異なる構造及び／又は機能性を有することができる。例えば、物理サーバは、例えば人工知能サーバとは異なるユニバーサルメッセージインターフェースを必要としてもよい。図３には、人工環境生成プラットフォーム３００が、それぞれデータベース１１２ａ、１１２ｂ、及び１１２ｃに又はその近くに配置されたユニバーサルメッセージインターフェース３０４ａ、３０４ｂ、及び３０４ｃと、それぞれゲーム管理サーバ１２２ａ、１２２ｂ、１２２ｃ、及び１２２ｎに又はその近くに配置されたユニバーサルメッセージインターフェース３０６ａ、３０６ｂ、３０６ｃ、及び３０６ｎとを含むことも示されている。ユニバーサルメッセージインターフェース３０８ａ及び３０８ｂは、クライアント１５０ａ及び１５０ｂに関して実施される。３０４ａ、３０４ｂ、３０４ｃ、３０６ａ、３０６ｂ、３０６ｃ、３０６ｎ、３０８ａ、及び３０８ｂが、互いに関して同等又は異なるのいずれかである構造及び／又は機能性を有することができることに留意されたい。また、図３の類似する名前の要素が、いくつかの場合に、図２に示された要素と同等の構造及び／又は機能性を有することができることに留意されたい。
【００２９】
[0052]図４Ａに、本発明の少なくとも１つの実施形態による、動的コンテンツを人工環境に導入する方法を示す。図４０１は、例えば、一実施形態による、人工環境生成プラットフォームを使用する多人数参加型オンライン（「ＭＭＯ」）ゲームの開発を示す。コード開発及びコンパイルステージ４３１中に、ゲーム開発者は、ソースコードを生成し、コンパイルして、実行可能コードとしてオブジェクトコード４２１を形成することができる。ソースコードの開発において、ソケットコード４２３を生成し、コンパイルすることができる。ソケットコード４２３は、プラグデータ４２５からのデータにアクセスするように構成された実行可能命令及び／又は入力を含む。したがって、プラグデータ４２５を、品質保証（「ＱＡ」）プロセスの一部として、ソケットコード４２３とオブジェクトコード４２１との両方と協調して開発することができる。品質保証メトリックスが満足された後に、オブジェクトコード４２１（ソケットコード４２３を含む）とプラグデータ４２５との両方を、オンラインゲーミングのために公表することができる。コード開発及びコンパイルステージ４３３の後に、コンテンツ開発者は、人工環境生成プラットフォームを実施して、コードコンパイル後ステージ４３３中に他のプラグデータ４２７を作成することができる。ステージ４３３中に、オブジェクトコード４２１なしでソケットコード４２３と共に使用するために、プラグデータ４２７を作成することができる。例えば、コンテンツ開発者は、実行可能コードを変更せずに、プラグデータ４２５によって形成されたカヤックをプラグデータ４２７としてイージス艦に置換することができる。オブジェクトコードの再コンパイルに先んずることによって、開発者は、ソケットコード４２３を実施する人工環境に新しい動的コンテンツをよりすばやく配送することができる。さらに、将来のプラグデータ４７０を、オブジェクトコードに影響せずに作成することができ、これによって、相対的にすばやいコンテンツ開発が容易になる。本明細書で使用される時に、用語「動的コンテンツ」は、少なくとも一実施形態で、コンピュータ生成ビジュアル及び／又はサウンドコンテンツとして人工環境に導入できるコンテンツデータを指し、これによって、コンテンツデータを、そのコンテンツデータが相互作用する実行可能コードの変更とは独立に作成することができる。したがって、コンテンツデータを、オブジェクトコードに影響せずに開発することができる。
【００３０】
[0053]図４Ｂに、本発明の少なくとも１つの実施形態による、動的コンテンツを人工環境に導入するように構成された人工環境生成プラットフォームを示す。この例では、システム４００は、人工環境生成プラットフォーム４５０を含み、人工環境生成プラットフォーム４５０は、参加者が相互作用し、動的コンテンツ４２２が導入される人工環境４２０を生成するように構成される。システム４００は、データリポジトリ４０２、４３０、及び４６０を含む。具体的に言うと、データリポジトリ４０２は、動的コンテンツ４２２としてそれぞれカヤック及びイージス艦を導入するコンテンツデータを含むプラグオブジェクト４１０ａ及び４１０ｂを格納するように構成される。プラグオブジェクト４１０ａ及び４１０ｂは、様々な実施形態のユニバーサルデータ構造に類似するかこれと同一のデータ配置を実施することができる。プラグオブジェクト４１０ａ及び４１０ｂは、船がそれに沿って航海できる位置、位置決め、速度、及び経路４２４を表すデータをも含むことができる。データリポジトリ４３０は、例えば多人数参加型オンラインゲームを実行するオブジェクトコード４３４を格納するように構成される。データリポジトリ４３０は、オブジェクトコード４３４の一部を形成することのできるソケットコード４３２を格納するようにも構成される。ソケットコード４２３は、動的コンテンツ４２２の生成を実現するためにオブジェクトコード４３４によって使用されるプラグデータ４２５（図４Ａの）からのデータにアクセスするように構成された実行可能命令及び／又は入力を含む。データリポジトリ４６０は、人工環境４２０を形成するためにワールドデータ４６２を格納するように構成される。ワールドデータ４６２及びソケットコード４３２は、ソケットコード４２３が動的コンテンツ４２２を導入する位置を定義するための関係４６４を共有することができる。
【００３１】
[0054]人工環境生成プラットフォーム４５０は、イベントサーバ４５２を含み、イベントサーバ４５２は、動的コンテンツ４２２を人工環境４２０の少なくとも一部に導入するように構成される。動的コンテンツ４２２を、オブジェクトコード命令の実行と実質的に同時に導入して、人工環境４２０を生成することができる。したがって、人工環境生成プラットフォーム４５０を、プラグ挿入プロセス４４０を初期化するように構成することができ、このプラグ挿入プロセス４４０中に、プラグオブジェクト４１０ａ及び４１０ｂのうちの１つが、動的コンテンツ４２２をインスタンス化するためにソケットコード４３２に挿入される。特定の実施形態では、イベントサーバ４５２は、オブジェクトコード４３４を変更せずに動的コンテンツ４２２を導入するように構成される。一実施形態では、プラグオブジェクト４１０ａ及び４１０ｂは、少なくとも１つのユニバーサルデータ構造を含むユニバーサルオブジェクトのシステムに属する。さらに、プラグオブジェクト４１０ａ及びプラグオブジェクト４１０ｂ並びにユニバーサルオブジェクトのシステムは、動的コンテンツ４２２を導入するためのオブジェクトコード命令４３４の再コンパイルを不要にする。プラグオブジェクト４１０及びソケットコード４３２を実施することによって、少なくとも１つのゲーム管理サーバを、変更されたオブジェクトコードを実施した後などのリブートなしで動的コンテンツ４２２を生成するように構成することができる。
【００３２】
[0055]図５は、本発明の少なくとも１つの実施形態による、人工環境の生成に使用されるプロセス空間の図である。ここで、人工環境生成プラットフォーム５００は、クライアント５５０ａ及び５５０ｂ用の人工環境を生成するように構成される。人工環境生成プラットフォーム５００は、ゲーム管理（「ｍｇｍｔ」）サーバ５２２ａから５２２ｎによって実施されるゲーム管理プロセス５２０を含む。人工環境生成プラットフォーム５００は、トランザクション５０４などのトランザクションを原子的トランザクションとして実施できる擬似集約プロセス空間５０２をも含む。したがって、トランザクションのすべての部分が実行され、或いはそのどれもが実行されないのいずれかになる。例示のために、第１参加者（「参加者１」）５０６がクライアント５５０ａに関連し、第２参加者（「参加者２」）５１０がクライアント５５０ｂに関連する例を検討されたい。第１参加者５０６及び第２参加者５１０は、それぞれアイテム（「アイテムＡ」）５０８及びアイテム（「アイテムＢ」）５１２を所有する。次に、参加者５０６及び５１０が、アイテム５０８及び５１２を交換するように手配するが、彼らの望みをこれから確認しなければならないと考えられたい。参加者５０６と５１０との両方が交換に合意したならば、そのトランザクションが決定的にされる。これなどのトランザクション中に、擬似集約プロセス空間５０２は、共通プロセス空間を振る舞うように構成され、これによって、トランザクション５０４が、操作に対してより脆弱でなくなる。一実施形態では、トランザクションサーバ（図示せず）は、擬似集約プロセス空間５０２と相互作用するか、擬似集約プロセス空間５０２を提供するかのいずれかを行うように動作する。一実施形態によれば、擬似集約プロセス空間５０２は、共通プロセス空間をエミュレートし、したがって、参加者が異なる人工環境生成プラットフォーム５００によって作成された異なる人工環境の中でたやすく移動することを可能にする。本明細書で使用される時に、用語「トランザクション」は、少なくとも一実施形態で、人工環境と相互作用する１人又は複数の参加者を伴うアクティビティを構成するタスクのセットを指す。
【００３３】
[0056]図６は、本発明の少なくとも１つの実施形態による、圧縮ユニバーサルメッセージを実施するメッセージングシステムの一部の例を示す図である。ここで、メッセージシステム部分６００は、サーバプロセス６０６及びクライアントプロセス６５０を含み、その両方が、とりわけ、メッセージを交換するためにネットワーク６３０を介して結合される。この例では、メッセージシステム部分６００は、クライアントプロセス６５０が人工環境に対する変更を示すことに応答してなど、サーバ側（又はクライアント側）のユニバーサルデータ構造６６０に関連するデータのサブセットを移送することができる。サーバプロセス６０６及びクライアントプロセス６５０は、それぞれ、ユニバーサルメッセージインターフェース６１０ａ及びユニバーサルメッセージインターフェース６１０ｂを含む。サーバプロセス６０６は、クライアントプロセス６５０から送信されたゲームデータ変更に応答して人工環境を全体的又は部分的に生成するのに、ユニバーサルデータ構造（「ＵＤＳ」）６６０に従って配置されたデータを使用することができる。変更されたゲームデータの例は、アバタによる移動を示す、クライアントプロセス６５０によって生成されたゲームデータである。少なくとも１つの実施形態では、サーバプロセス６０６及び／又はクライアントプロセス６５０は、圧縮ユニバーサルメッセージ６２０としてメッセージを交換することができる。サーバプロセス６０６とクライアントプロセス６５０との両方が、それを用いてデータを交換すべきユニバーサルデータ構造６６０を実施できるので、減らされた量のデータを、圧縮ユニバーサルメッセージ６２０内で交換することができる。具体的に言うと、ユニバーサルデータ構造６２２に関連する変更されたゲームデータ６２４だけが、ユニバーサルメッセージ内で移送される必要がある。一実施形態では、圧縮ユニバーサルメッセージ６２０は、変更されたゲームデータ６２４が関係する属性を指定するキー６２８をも含む。この情報を用いて、サーバプロセス６０６は、人工環境を変更することができる。
【００３４】
[0057]図７に、本発明の少なくとも１つの実施形態による、マスタスケーリングサーバを実施する人工環境を生成するシステムを示す。人工環境生成プラットフォーム７００は、プロセス間メッセージングネットワーク７５０及びマスタスケーリングサーバ７５２を含み、この両方が、物理プロセス及び人工知能プロセスなど、ゲームサブプロセスを要求する変形形態を満足するためにゲームサブプロセス機能をスケーリングするように構成される。人工環境生成プラットフォーム７００は、様々なゲームサブプロセス７０２、データベースプロセス７１０、及びゲーム管理プロセス７２０をも含む。動作中に、マスタスケーリングサーバ７５２は、適宜ゲームサブプロセスサーバを追加し、又は除去するように構成される。例えば、より多くの物理処理が必要である場合には、マスタスケーリングサーバ７５２は、追加の物理サーバを追加することができる。しかし、より少ない人工知能が必要である場合には、マスタスケーリングサーバ７５２は、人工知能サーバをオフラインにすることができる。
【００３５】
[0058]マスタスケーリングサーバ７５２は、サーバのリストを監視するように構成され、このリストは、サーバのタイプに関する情報（例えば、サーバが物理サーバ、人工知能サーバなどのどれであるか）、ゲームサブプロセスサーバ７０２が属する人工環境、及び類似物をも含む。マスタスケーリングサーバ７５２は、例えば追加のサービス又は機能を要求する１つ又は複数のゲーム管理サーバからの、プロセス間メッセージングネットワーク７５０を介する追加ゲームサブプロセスに関する要求メッセージを監視するようにも構成される。それに応答して、マスタスケーリングサーバ７５２は、ゲームサブプロセスサーバ７０４ａ、７０４ｂ、及び７０４ｃのうちのいずれかなどの新たに追加されたゲームサブプロセスサーバとゲーム管理サーバなどの要求するサーバとの間の接続の確立を調整することができる。
【００３６】
[0059]一実施形態では、スケーラブルゲームサブプロセスサーバは、オンラインにされる時に、そのアイデンティティ及び他の関連情報をマスタスケーリングサーバ７５２に通信するように構成される。他の関連する情報は、サーバタイプ、それが属する関連する人工環境などを含むことができる。それに応答して、マスタスケーリングサーバ７５２は、スケーラブルゲームサブプロセスサーバを、例えばそのようなサーバタイプを要求するゲーム管理サーバに動的に割り振る。具体的に言うと、マスタスケーリングサーバ７５２は、コマンド及び接続情報（例えば、ホスト及びポートの情報）をスケーラブルゲームサブプロセスサーバに送信して、要求するゲーム管理サーバに接続する。いくつかの場合に、マスタスケーリングサーバ７５２は、接続情報（例えば、ホスト及びポートの情報）を要求するゲーム管理サーバに通信して、スケーラブルゲームサブプロセスサーバからの接続を受け取る。少なくとも１つの実施形態では、マスタスケーリングサーバ７５２を、ゲーム管理サーバの負荷を監視し、自動的にゲームサブプロセスサーバを追加し又は除去するように構成することができる。一実施形態では、プロセス間メッセージングネットワーク７５０は、ネットワーク７１５上で実施されるユニバーサルメッセージングシステムと同一の広がりを持ち、或いはそれと同一である。
【００３７】
[0060]図８は、本発明の少なくとも１つの実施形態による、スケーラブルゲームサブプロセスサーバを追加するマスタスケーリングサーバの例を示す図である。具体的に言うと、図８００は、ゲーム管理サーバ（図示せず）によって使用されるゲームサブプロセス８０２を提供するゲームサブプロセスサーバ８０４を示す。図示されているように、マスタスケーリングサーバ８５２は、物理処理機能を高めるためにスケーラブル物理サーバ８１０を追加しようとしている。一実施形態では、スケーラブル物理サーバ８１０及びゲームサブプロセスサーバ８０４は、それぞれ、同種ハードウェアプラットフォームである。同種ハードウェアプラットフォームを用いると、マスタスケーリングサーバ８５２は、必要に応じてスケールアップし、スケールダウンする柔軟性を高めることができる。
【００３８】
[0061]図９は、本発明の少なくとも１つの実施形態による、特定のタイプのゲームサブプロセスサーバを実施する人工環境生成プラットフォームの図である。人工環境生成プラットフォーム９００は、ゲームサブプロセス９０１、ゲームデータを格納するように構成されたゲームデータベース９１０、及びゲーム管理サーバ９２２ａから９２２ｎを含むゲーム管理プロセス９２０を含む。この例では、ゲームサブプロセス９０１は、物理サーバ９０２ａ、人工知能（「ＡＩ」）サーバ９０２ｂ、及びトランザクションサーバ９０２ｃという特定のタイプのゲームサブプロセスサーバを含む。これらのゲームサブプロセスを別々のサーバ内で実施することによって、人工環境生成プラットフォーム９００は、ゲームサブプロセスに関連する問題をより受けにくくなる。さらに、ある種のゲームサブプロセスを、他のゲームサブプロセスの必要とは独立に、要求を満足するために適当にスケーリングすることができる。
【００３９】
[0062]物理サーバ９０２ａは、人工環境の移動及び衝突検出アクティビティを処理するように構成された１つ又は複数の物理サーバを表す。様々な実施形態では、物理サーバ９０２ａは、可視性判定、インスタンス化、人工知能ＮＰＣの移動妥当性及び／又は経路セグメント化のうちのいずれをも実行することもできる。可視性判定を行う際に、物理サーバ９０２ａは、オブジェクト及び／又はシンセティックワールド（ｓｙｎｔｈｅｔｉｃ  ｗｏｒｌｄ）内の他の参加者が参加者に可視であるかどうかを計算する。エンティティは、そのエンティティが参加者の可視範囲内にある時に、その参加者に可視であり、ここで、物理サーバ９０２ａは、エンティティが可視範囲内にあるかどうかを判定する。図１１に、本発明の実施形態による、可視性を判定する代替技法を示す。図９に戻って、物理サーバ９０２ａを、「インスタンス化」を提供するように構成することもでき、これによって、参加者の集団（及び関連する物理処理）が、仮想家屋内などの人工環境の一部の中で又はボスモンスタなどのＮＰＣと戦うために一緒に団結する区域内で、アクティビティを実行する。
【００４０】
[0063]移動妥当性は、人工環境のコンテキストでの参加者の移動を妥当性検査する行為である。物理サーバ９０２ａを、仮想地面及び所望の移動の経路内にあるすべてのエンティティ（即ち、他のキャラクタ及び／又はオブジェクト）に対して移動を妥当性検査するように構成することができる。参加者のアバタが仮想地面に対して移動する速度に基づいて、参加者の位置を、人工環境内のその位置を反映するように変更することができる。物理サーバ９０２ａは、変更されたゲームデータをクライアントに送信する前に、その位置が正しいことを妥当性検査するためにシミュレーションを実行することができる。物理サーバ９０２ａを、参加者がある種のアクティビティにかかわるか、人工環境のある種の区域内で移動するかのいずれかを許可されることを保証するために参加者の移動を妥当性検査するように構成することもできる。一実施形態では、物理サーバ９０２ａは、単位時間あたりに参加者のサブセットを妥当性検査し、経時的に異なるサブセットを通ってサイクルする。人工環境のある種の区域の周囲又はその区域で移動することを許可されないすべての参加者、その参加者に、利己的利用を実行している疑いがあるものとしてタグを付けることができる。さらに、物理サーバ９０２ａは、人工知能（「ＡＩ」）サーバ９０２ｂに経路セグメントを提供することができ、その結果、ＮＰＣは、地面及び／又は静的オブジェクトに起因してＮＰＣの移動を阻止するオブジェクトを避けられるようになる。様々な実施形態では、上で述べた物理プロセスのうちの１つ又は複数を、別々のサーバ内で別々のプロセスとして実施することができる。
【００４１】
[0064]人工知能（「ＡＩ」）サーバ９０２ｂは、コンピュータ実施される非プレイヤキャラクタ（「ＮＰＣ」）及び類似物にＮＰＣの挙動を決定するための人工知能を与えるように構成された１つ又は複数の人工知能サーバを表す。人工知能に関する高まった要求中に人工環境をサポートするために、追加の人工知能サーバ９０２ｂを追加することができる。例えば、イベントが、多数のＮＰＣを必要とする場合に、追加の人工知能サーバ９０２ｂを追加することができる。一実施形態では、参加者は、「モンスタをプレイする」ためにＮＰＣの制御を引き受けることができる。
【００４２】
[0065]トランザクションサーバ９０２ｃは、とりわけ、参加者の位置にかかわりなくランタイム参加者ゲームデータを処理するように構成された１つ又は複数のトランザクションサーバを表す。したがって、トランザクションサーバ９０２ｃは、例えば持続的世界（即ち、人工環境）とインスタンス（即ち、仮想ビルディングなど、人工環境の一部）との間のキャラクタ（即ち、参加者）移動を容易にするためにキャッシュ９０３を含む。キャッシュ９０３の使用は、参加者が人工環境とその諸部分との間で移動する時にデータベースからゲームデータをロードする必要を回避する。いくつかの実施形態では、ゲームデータの表現が、例えばトランザクションの操作を避けるために、トランザクションサーバ９０２ｃ以外のプロセス内で読取り専用としてマークされる。さらに、トランザクションサーバ９０２ｃは、擬似集約プロセス空間内での原子的トランザクションを容易にする。トランザクションサーバ９０２ｃがトランザクションを実行する間に、ゲーム管理サーバ９２２ａから９２２ｎを、トランザクションサーバ９０２ｃがトランザクションに応答してデータを変更する前に参加者のアイデンティティを確認するために参加者を妥当性検査するように構成することができる。
【００４３】
[0066]図１０は、本発明の少なくとも１つの実施形態による、物理プロセスの実装を示す図である。図１０００は、可視性プロセス及びインスタンス化プロセスが物理サーバ１００２からそれぞれ別々の可視性サーバ１００４及びインスタンスサーバ１００６にオフロードされることを示す。可視性サーバ１００４は、シンセティックワールド内のオブジェクト及び／又は他の参加者が参加者に可視であるかどうかを判定するように構成される。インスタンスサーバ１００６は、「インスタンス化」を提供するように構成され、これによって、参加者の集団及び人工環境の部分内のグループ又は局所化されたアクティビティを実行するための関連する物理処理。可視性プロセス及びインスタンス化プロセスが人工環境に関して物理プロセスと分離された状態で、物理サーバ１００２は、より少ない重荷を負う。さらに、可視性サーバ１００４及びインスタンスサーバ１００６は、物理サーバ１００２に関する問題をより受けにくい。
【００４４】
[0067]図１１は、本発明の少なくとも１つの実施形態による、可視性を判定する技法を示す図である。図１１００は、参加者１１０４に関する可視性を判定する技法の例を示す。１つの場合に、可視性サーバは、まず、参加者１１０４を定義するために可視性範囲１１０２を定義する。したがって、参加者は、ある距離１１０６にあるオブジェクトを見ることができる。少なくとも１つの実施形態では、オブジェクト、ＮＰＣ、及び他のプレイヤは、それぞれ、「見られ得る」範囲に関連する。山１１１４などのより大きいオブジェクトは、ネズミ１１２４などのより小さいオブジェクトより大きい「見られ得る」範囲１１１２を有し、このより小さいオブジェクトは、「見られ得る」範囲１１１２を有する。一実施形態では、可視性サーバは、山１１１４の「見られ得る」範囲１１１２などの「見られ得る」範囲が可視性範囲１１０２と交差する時にオブジェクトが参加者に可視になる、球交差テストを実施するように構成される。「見られ得る」範囲は、円（即ち２次元）又は球（即ち３次元）として表現することができる。特定の実施形態では、参加者１１０４が、２つの範囲即ち、（１．）球１１０２によって定義される参加者可視性範囲及び（２．）エンティティ又はその可視性範囲が「見られ得る」範囲１１６０と交差する場合に他のエンティティが参加者１１０４を見ることができる「見られ得る」範囲１１６０を有することに留意されたい。次に、巨人１１５０が、その巨人から距離１１５４の可視性範囲１１５２を有し、その巨人から１１５５の距離の「見られ得る」範囲１１５３を有すると考えられたい。さらに、参加者１１０４は、参加者１１０４から１１５８の距離に「見られ得る」範囲１１６０を有する。したがって、巨人１１５０が参加者１１０４に接近し、その可視性範囲１１５２が「見られ得る」範囲１１６０と交差する時に、巨人１１５０は、参加者１１０４を見ることができる。しかし、可視性範囲１１５２が可視性ギャップ１１６０内にある時には、参加者は、巨人１１５４を見ることができない。可視性範囲１１５２が可視性範囲１１０２と交差したならば、参加者１１０４が巨人１１５０を見ることができることに留意されたい。前述を考慮すると、図１１００は、分類された可視性だけが可視性を判定するのに使用される時に発生し得る不自然な視覚的効果（例えば、エンティティが可視性範囲１１０２をまたぐ時にそのエンティティが「急に現れる」ように見える）を減らす、可視性を判定する技法の例を示す。図示されてはいないが、ネズミ１１２４も、可視性範囲を有することができる。様々な実施形態では、非プレイヤキャラクタ（「ＮＰＣ」）及び参加者は、それぞれ、可視性範囲及び「見られ得る」範囲を有することができる。
【００４５】
[0068]図１２は、本発明の少なくとも１つの実施形態による、追加のタイプのゲームサブプロセスサーバを実施する人工環境生成プラットフォームの図である。人工環境生成プラットフォーム１２００は、ゲームサブプロセス１２０２、ゲームデータを格納するように構成されたゲームデータベース１２１２ａ、監査データ（即ち、各参加者によるすべて又はほとんどの相互作用の記録）及び統計データを格納するように構成された監査データベース１２１２ｂ、及びゲーム管理サーバ１２２２ａから１２２２ｎを含むゲーム管理プロセス１２２０を含む。さらに、人工環境生成プラットフォーム１２００は、ユーザサーバ１２７０、パッチサーバ１２７２、及び統計／監査サーバ１２７４を含む。
【００４６】
[0069]ユーザサーバ１２７０を、ゲーム管理サーバ１２２２ａから１２２２ｎのいずれかとクライアント１２５０との間でメッセージをルーティングするように構成することができる。しかし、参加者が人工環境と相互作用するためにログインしたならば、ユーザサーバ１２７０は、参加者及びそのクライアント１２５０をゲーム管理サーバ１２２２ａから１２２２ｎのうちの１つに割り当てる。その後、ユーザサーバ１２７０は、ゲーム管理サーバ１２２２のうちの１つ及び参加者へ及びこれらからメッセージを中継することができる。セッション中に、参加者は、同一のゲーム管理サーバとの関係を持ち続けることができる。ユーザサーバ１２７０を、ゲーム管理サーバ１２２２ａから１２２２ｎにまたがってクライアント接続を均等に分散させる形でクライアント１２５０に接続するように構成することもでき、これによって、負荷平衡化がもたらされる。いくつかの場合に、ユーザサーバ１２７０を、サインオン時に参加者を認証するように構成することもできる。少なくとも１つの実例で、ユーザサーバ１２７０は、ゲーム管理サーバ１２２２ａから１２２２ｎとクライアント１２５０との間で交換されるデータを選択的に暗号化することができる。一実施形態では、ユーザサーバ１２７０は、支配的な量のメッセージである移動関連メッセージの暗号化をなしで済ませる。したがって、暗号化に関連する遅延が減らされる。パッチサーバ１２７２を、ファイルごとの基礎でなど、増分式にクライアント１２５０にパッチを送信するように構成することができる。少なくとも１つの実施形態では、パッチサーバ１２７２は、ログイン時などの時宜を得た時に並びにゲームプレイ中（即ち、参加者による人工環境との相互作用中）に、パッチをぽつりぽつりと移動するように構成される。統計／監査サーバ１２７４は、参加者による使用のため及び／又はイベントサーバに関連するイベントをトリガするために、統計を収集し、使用するように構成される。
【００４７】
[0070]図１３は、本発明の少なくとも１つの実施形態による、パッチ中にゲームプレイを可能にする技法を示す図である。図１３００は、新しい「世界」、「大陸」、又は人工環境として追加される領域を示す。人工環境拡大の進行は、矢印１３３０によって示される。領域（「１」）１３０２が、最初にダウンロードされたゲームを用いて実施されたと考えられたい。次に、領域（「２」）１３１２が、参加者がそれ用のパッチをダウンロードした拡大された人工環境を表すと考えられたい。最後に、参加者は、領域（「３」）１３２２用の次のパッチをまだ実施していないが、領域１３２２から領域１３０２に入ることを望むと考えられたい。参加者が領域１３０２から領域１３１２に移動する時に、参加者は、木１３０４及び木１３１４を観察する。しかし、参加者が区切り１３１６を通過する時に、参加者は、まだ完成していない場所にいる。したがって、人工環境生成プラットフォームは、木をレンダリングするためのパッチデータがまだ完成していない場合に、プロキシアセット（即ち、置換オブジェクト）１３２４を表示する。したがって、参加者は、新しい領域１３２２に入ることを禁止される必要があるのではなく、パッチプロセスが完了するまで代理オブジェクトを経験してもよい。
【００４８】
[0071]図１４は、本発明の少なくとも１つの実施形態による、イベントサーバ及びイベントエディタを実施する人工環境生成プラットフォームの図である。人工環境生成プラットフォーム１４００は、ゲームサブプロセス１４０１、ゲームデータを格納するように構成されたゲームデータベース１４１０、及びゲーム管理サーバ１４２２ａから１４２２ｎを含むゲーム管理プロセス１４２０を含む。人工環境生成プラットフォーム１４００は、イベントサーバ１４３０及びイベントエディタ１４８０をも含む。イベントサーバ１４３０は、例えば所定のトリガ又は条件をトリガするなどのプレイヤアクティビティの関数及び／又は事前に決定されるスケジューリングの関数としての人工環境への動的コンテンツの導入を制御するように構成される。例えば、特定の位置に集まっている複数の参加者がトリガポイントを超える場合に、イベントサーバ１４３０は、動的コンテンツの導入をトリガすることができる。いくつかの実施形態で、イベントサーバ１４３０は、産み出される船又はクリーチャのタイプを変更することができる。イベントサーバ１４３０は、動的コンテンツを生成するためにイベントライブラリデータベース１４１２からプラグオブジェクトにアクセスするように構成される。一実施形態では、イベントサーバ１４３０は、参加者がプログラムされたイベントをプレビューし、これに参加するためにそれらのイベントを表示するイベントサーバガイド１４９０を駆動するためのデータを生成するように構成される。イベントエディタ１４８０は、変化する量の動的コンテンツを導入するために複数のソケットに関連するプラグオブジェクトを集約するように構成され、これによって、プラグオブジェクトのコレクションが、クリーチャ、木、構造物、及び類似物を人工環境に導入することができる。
【００４９】
[0072]図１５に、本発明の少なくとも１つの実施形態による、様々な度合の動的コンテンツを導入するイベントを作成する流れを示す。流れ１５００は、イベントライブラリに格納されたユニバーサルデータ構造を含むプラグオブジェクトを使用してイベントを作成する方法の例である。１５０２では、イベントを定義し、要件を示す。１５０４では、ゲームデザイナが、新しいイベントが１５０６で確立されるまで、例えば事前に作られたプラグオブジェクトを使用することによって、新しいイベントを作成する。１５０８では、イベントをテストして、新しいイベントが品質保証（「ＱＡ」）仕様を満足することを確認する。イベントが、１５１０で失敗する場合には、流れ１５００は、１５０２に戻って、イベント定義及び／又は実装を再定義するか訂正する。イベントが成功である場合には、そのイベントを１５１２でイベントライブラリに格納する。１５２２では、人工環境への導入のためにイベントをスケジューリングする。１５２４では、イベントサーバ１５２６を、所定の時刻にイベントをトリガするように構成する。スケジューリングされた時刻に、イベントサーバ１５２６は、イベントに関連するデータをイベントライブラリ１５１２から取り出し、人工環境生成プラットフォーム１５２８にそのイベントを実施させる（例えば、動的コンテンツを生成することによって）。その後、動的コンテンツが、１５３０で、コンピュータ生成された世界での使用のためにクライアントに公開される。
【００５０】
[0073]一実施形態では、流れ１５００は、パッチサーバ１５８０で実施されるパッチサーバプロセスによって人工環境への動的コンテンツの導入を提供する。この例では、パッチサーバ１５８０は、イベントを表すデータが１５１２でイベントライブラリに置かれる時を検出するように構成される。さらに、パッチサーバ１５８０は、イベントによって要求されるデータを小さいファイル又はデータ１５８２としてクライアントにプッシュする即ち「ぽつりぽつりと移動させる」ように構成される。したがって、パッチサーバ１５８０は、オフピーク使用時間にデータをプッシュすることができ、コストの高い、２５０ＭＢなどの大きいダウンロードがピーク使用期間中に発生する時にそうでなければ発生し得る分配された帯域幅容量の超過を避けることができる。もう１つの実施形態では、パッチサーバ１５８０は、プッシュされるべきデータの量及びイベントの残り時間を判定し、したがって、単位時間あたりにプッシュされる必要がある平均データ量を計算する。したがって、パッチサーバ１５８０は、最適移送のために小さいファイル１５８２内のデータの量を変更することができる。特定の実施形態では、パッチサーバ１５８０を、大量のデータがピーク使用時間にプッシュされるのを避けるために小さいファイル１５８２のサイズを変更すべき時を判定するためにデータベース１５８４内のピークしきい値監視データにアクセスするように構成することができる。
【００５１】
[0074]図１６は、本発明の少なくとも１つの実施形態による、ユニバーサルデータ構造の特定の実装を示す図である。ユニバーサルデータ構造１６０２は、識別子１６０４（即ち、「Ｐｒｏｐｅｒｔｙ  Ｃｌａｓｓ  ｘｘｘｘｘｘ」）によって識別されるプロパティクラスオブジェクトとして図示されている。プロパティクラスオブジェクトは、属性１６０６を含むデータの配置を含み、属性１６０６のそれぞれは、図１６のユニバーサルデータ構造仕様ファイル１６２２に関して下で説明するものなど、Ｐｒｏｐｅｒｔｙ  Ｃｌａｓｓ  ｘｘｘｘｘｘのプロパティに対応することができる。さらに、属性１６０６は、図１７のユニバーサルデータ構造１７０２に関して説明するものなど、プロパティ値（例えば、ストリング、整数など）に対応することができる。様々な実施形態では、ユニバーサルデータ構造１６０２は、入れ子になったユニバーサルデータ構造（又はそれへの参照）を含むことができる。例示のために、Ｐｒｏｐｅｒｔｙ  Ｃｌａｓｓ  ｘｘｘｘｘｘが、図２０で説明するものなど、船のプロパティを定義できると考えられたい。ユニバーサルデータ構造１６０２は、その船が有する「位置決め」のプロパティを定義する、入れ子になったユニバーサルデータ構造を含むことができる。
【００５２】
[0075]図１６は、本発明の少なくとも１つの実施形態によるユニバーサルデータ構造仕様ファイルの例を示す図をも含む。ユニバーサルデータ構造仕様ファイル１６２２は、インスタンス管理スキーマを提供し、このインスタンス管理スキーマは、人工環境生成プラットフォーム内のノードを使用して、ユニバーサルデータ構造内で実施されるデータにアクセスする。ユニバーサルデータ構造仕様ファイル１６２２は、プロパティクラスオブジェクトごとにメタデータを含むことができ、このメタデータは、割り当てられた属性の対応するプロパティ値を提供するように構成されてもよい。いくつかの実施形態で、プロパティクラスオブジェクト即ちＰｒｏｐｅｒｔｙＣｌａｓｓオブジェクト（以下では「プロパティクラスオブジェクト」）は、様々なタイプのオブジェクトをどのようにレンダリングし、生成し、又はインスタンス化すべきかを判定するのに使用されるデータ又は情報、情報、及び人工環境内の他のパラメータを有するオブジェクトとすることができる。さらに、プロパティクラスオブジェクトを、例えば高速又は大容量のネットワーク接続と共に使用される時にすばやい又は高速のゲームプレイ、人工環境生成、及び類似物を可能にする縮小されたメッセージデータを提供するように構成してもよい。例えば、プロパティクラスオブジェクトは、オブジェクトをインスタンス化するのに使用されるデータのすべて又は一部を含むことができる。人工環境生成プラットフォーム（又はその中のノード）は、ゲームデータの値を作成し、表示し、及び／又は実施するためのメタデータを実施することができる。さらに、ユニバーサルデータ構造仕様ファイル１６２２を、識別子１６２４（即ち、「Ｐｒｏｐｅｒｔｙ  Ｃｌａｓｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｙｙｙｙｙ」）によって参照することができ、ユニバーサルデータ構造仕様ファイル１６２２は、例えば位置「ｉｎｓｔａｎｃｅ．ｍｇｍｔ．ｓｃｈｅｍａ」にあるインスタンス管理スキーマへの参照１６２６を含むことができる。いくつかの実施形態では、インスタンス管理スキーマは、プロパティクラスオブジェクトのデータにアクセスするためのノードの使用を記述するデータモデルである。さらに、ユニバーサルデータ構造仕様ファイル１６２２は、プロパティクラスオブジェクト１６３０のプロパティ値（又はそれへの参照）を含むことができる。
【００５３】
[0076]図１７は、本発明の少なくとも１つの実施形態による、プロパティクラスシステムの要素を示す図である。いくつかの実施形態では、プロパティクラス１７０４を、ユニバーサルデータ構造１７０２として実施してもよく、プロパティクラス１７０４は、１つ又は複数のプロパティ（「Ｐｒｏｐｅｒｔｙ」）１７０６を有することができる。ここでは、プロパティクラス１７０４は、対応するプロパティ値への特定のプロパティポインタのコンテナになるように構成される。さらに、１つ又は複数のプロパティ１７０６は、ストリング（「ＰｒｏｐｅｒｔｙＳｔｒｉｎｇ」）１７０８ａ、整数（「ＰｒｏｐｅｒｔｙＩｎｔ」）１７０８ｂ、大きい整数（「ＰｒｏｐｅｒｔｙＢｉｇＩｎｔ」）１７０８ｃ、及び他などのプロパティ値を含むことができる。
【００５４】
[0077]ユニバーサルデータ構造仕様ファイル１７２２は、プロパティクラス仕様１７２４を含むものとして図示されている。したがって、プロパティクラス１７０４の共通する型のインスタンスは、プロパティクラス仕様１７２４に関係することができる。例えば、「Ｐｌａｙｅｒ」と命名されたプロパティクラス１７０４は、例えば、プロパティ及びプロパティ値を指定するプロパティクラス仕様１７２４への関係を有してもよい。さらに、プロパティクラス仕様１７２４は、１つ又は複数のプロパティ仕様（「ＰｒｏｐｅｒｔｙＳｐｅｃ」）１７２６へのポインタのベクトルを含むことができ、プロパティ仕様１７２６のそれぞれは、プロパティ１７０６に関連するメタデータを含むことができる。プロパティクラスマネージャ（「ＰｒｏｐｅｒｔｙＣｌａｓｓＭａｎａｇｅｒ」）１７４２は、キー／値対としてプロパティクラス名及びプロパティクラス仕様を判定するためのマップ（例えば、ルックアップテーブル）を含むことができる。ランタイム中又は実行中に、人工環境生成プラットフォーム（又はその中のノード）は、プロパティクラスマネージャ１７４２を使用して、データ構造の実装及びプロパティクラスシステムからのゲームデータを管理する。
【００５５】
[0078]図１８に、本発明の少なくとも１つの実施形態による、ユニバーサルメッセージを作成する流れを示す。流れ１８００は、ＸＭＬベースのオブジェクトデータファイル１８０３などの１つ又は複数のプロパティクラスオブジェクトファイルを編集するか作成するように構成されたユニバーサルデータ構造エディタ１８０２を示す。ユニバーサルデータ構造エディタ１８０２は、例えば、ドロップダウンメニュー及び関連するプロパティクラス仕様に基づくデータ範囲妥当性などのコンテキストフレンドリなインターフェース要素を提供するエディタとすることができる。さらに、ユニバーサルデータ構造エディタ１８０２は、ＸＭＬリーダー１８０６及びＸＭＬライタ１８０５を使用して、ソースへ及びソースからのデータをシリアライズし、このソースは、ＸＭＬベースのオブジェクトデータファイル１８０３のうちの１つ又は複数とすることができる。様々な実施形態では、ユニバーサルデータ構造エディタ１８０２を、拡張可能マークアップ言語（即ち、ＸＭＬ）、ハイパーテキストマークアップ言語（即ち、ＨＴＭＬ）、及び任意の他のマークアップ言語又はフォーマッティング言語に従ってフォーマットされたデータを編集するように構成することができる。ユニバーサルデータ構造エディタ１８０２を、いくつかの実例で、ＸＭＬベースのエディタ１８０７に置換してもよい。というのは、プロパティクラス表現が、ＸＭＬ互換フォーマットであるからである。ＸＭＬベースのエディタ１８０７は、米国マサチューセッツ州ベバリーのＡｌｔｏｖａ，Ｉｎｃ．社が作るＸＭＬＳｐｙなどの複数の市販ツールのうちのいずれかとすることができる。
【００５６】
[0079]プロパティクラスデータファイル１８０３は、シリアライゼーション又はプロパティシステムのＸＭＬリーダー１８０６ファシリティを使用してランタイム環境に持ち込まれる。これは、ファイル１８０３からＸＭＬベースのプロパティクラスデータをとり、「インメモリ」Ｃ＋＋プロパティクラスオブジェクト表現１８０９を作成する。すべての変更を、ＸＭＬライタ１８０５ファシリティを使用してオリジナルソースに戻って反映することができる。
【００５７】
[0080]データのシリアライゼーションの速度及びＸＭＬ表現に対するデータの難読化を容易にするために、プロパティクラスオブジェクト１８０９を、バイナリリーダー１８０８機構及びバイナリライタ１８０１機構を使用してディスクベースのバイナリフォーマット１８１０にシリアライズすることができる。これは、開発者が、従来のツールを使用して人間可読フォーマット（即ち、ＸＭＬ）で編集し、実行の速度及び難読化が重要である時にそのＸＭＬをバイナリフォーマットに変換することを可能にする。
【００５８】
[0081]Ｃ＋＋オブジェクト１８０９の任意のインスタンスをネットワークを介して送信する必要がある場合には、プロパティクラスオブジェクトは、送信器１８５０内で移送のために「パック」され又は「パケット化」される。１８１１でのパケット化プロセスは、バイナリライタ１８０１のサービスを使用してパケットを生成し、そのパケットを１８１２でリンク１８４２を介して送信する。受信器１８５２は、そのパケットを受信し、バイナリリーダー１８０１のサービスを使用して、データをインメモリＣ＋＋プロパティクラスオブジェクト表現１８０９のインスタンスにアンパックする。送信器１８５０また受信器１８５２のいずれか或いはその両方を、本発明の様々な実施形態に従って、ユニバーサルメッセージインターフェース内で実施できることに留意されたい。
【００５９】
[0082]図１９に、本発明の少なくとも１つの実施形態による、ユニバーサルメッセージを作成するプロパティクラスシステムの要素を示す。図１９００は、プロパティクラスシステム要素即ち、プロパティクラスオブジェクト１９０２、１９０４、及び１９０６などのプロパティクラスオブジェクトと、プロパティクラスマニフェスト１９１０と、プロパティクラスマネージャ１９２０と、プロパティクラス仕様ファイル１９３０とを使用するユニバーサルメッセージ作成プロセス１９４０を示す。例示のために、ユニバーサルメッセージ作成プロセス１９４０が、文字データに関するユニバーサルメッセージを生成するように構成されると考えられたい。したがって、ユニバーサルメッセージ作成プロセス１９４０は、入れ子になったプロパティクラスオブジェクト１９０２及び１９０４を含むプロパティクラスオブジェクト（「ｐｌａｙｅｒ（プレイヤ）」）１９０６を使用する。入れ子になったプロパティクラスオブジェクト（「ｓｐｅｌｌｓ（呪文）」）１９０２は、例えば、プレイヤが所有する呪文のタイプ及び強さを表すデータのデータ配置を含む。入れ子になったプロパティクラスオブジェクト（「ｗｅａｐｏｎ（武器）」）１９０４は、例えば、プレイヤが所有する武器の種類を表すデータのデータ配置を含む。
【００６０】
[0083]少なくとも１つの実施形態では、プロパティクラスマニフェスト１９１０は、プロパティクラスオブジェクトをインスタンス化するためにプロパティシステムによって使用できる情報及びデータをリストし又はアセンブルするための空間を提供するように構成される。例えば、プロパティクラスマニフェスト１９１０は、プロパティクラス識別子（「ＩＤ」）、仕様ファイル（例えば、仕様ファイル１７２２（図１７））名、プロパティクラスオブジェクトをグループ化するのを助けるためのリスティングごとのカテゴリタグなどのリストを含むことができる。さらに、プロパティクラスマニフェスト１９１０は、ファイル名、プロパティクラスオブジェクト名、及びユニバーサルメッセージを作成するための他のリソース（又は情報のソース）を記述することができる。プロパティクラスマネージャ１９２０は、論理リソース及び物理リソースのマップと、プロパティクラスオブジェクト１９０２、１９０４、及び１９０６のデータ構造及びその中のゲームデータの実装を管理するためのデータとを含むことができる。プロパティクラス仕様ファイル１９３０は、プロパティ値又はプロパティ値への参照を含むことができる。
【００６１】
[0084]人工環境生成プラットフォーム及び／又はそのノードは、ユニバーサルメッセージ作成プロセス１９４０及び上で説明したプロパティクラスシステム要素を実施して、ユニバーサルメッセージ（又はユニバーサルデータ構造）を形成することができ、このユニバーサルメッセージは、とりわけ図１及び３に示されたものなどの人工環境生成プラットフォームのノードによって使用され得る。ノード（例えば、サーバ、クライアント、ピア、又は他のプロセッサ）がユニバーサルメッセージ作成プロセス１９４０を開始する時に、ユニバーサルデータ構造を、ユニバーサルメッセージの一部として実施することができる。次に、プロセス１９５０が、実施されたユニバーサルメッセージを受信すると考えられたい。したがって、プロセス１９５０は、そのソースコードのコンパイルを必要とせずに、メッセージから直接にデータ１９５２を使用することができる。
【００６２】
[0085]図２０に、本発明の少なくとも１つの実施形態による、プラグを作成するプロパティクラスシステムの要素を示す。図２０００は、プロパティクラスシステム要素即ち、プロパティクラスオブジェクト２００２〜２００６、プロパティクラスマニフェスト２０１０、プロパティクラスマネージャ２０２０、及びプロパティクラス仕様ファイル２０３０を使用するプラグ作成プロセス２０４０を示す。例示のために、プラグ作成プロセス２０４０が、船（例えば、貨物船、タンカ、軍艦（例えば、タイコンデローガ級、イージス誘導ミサイル装備巡洋艦）、巡航定期船、遠洋定期船、及び他）のイメージ又はゲーム要素を動的コンテンツとして人工環境にレンダリングするためのプラグを生成するように構成されると考えられたい。したがって、プラグ作成プロセス２０４０は、入れ子になったプラグプロパティクラスオブジェクト２００２、２００４、及び２００５を含むプラグプロパティクラスオブジェクト（「ｓｈｉｐ（船）」）２００６を使用する。入れ子になったプラグプロパティクラスオブジェクト（「ｐｏｓｉｔｉｏｎｉｎｇ（位置決め）」）２００２は、例えば、船が所有する位置決め及び相対運動を表すデータの配置を含む。入れ子になったプラグプロパティクラスオブジェクト（「ｓｐｅｅｄ（速度）」）２００４は、例えば、船が進む（即ち、移動する）速度を表すデータのデータ配置を含む。入れ子になったプラグプロパティクラスオブジェクト（「ａｐｐｅａｒ  ａｓ  ｓｈｉｐ（船に見える）」）２００５は、例えば、所望の船の形状に見える船の外見を記述するデータのデータ配置を含む。少なくとも１つの実施形態では、プロパティクラスマニフェスト２０１０、プロパティクラスマネージャ２０２０、及びプロパティクラス仕様ファイル２０３０が、図１９で説明したものに類似する機能及び／又は構造を有することができる。いくつかの実施形態では、プラグは、例えば、とりわけデータ、アセット、手続きアクションリスト、及び条件トリガを指定する表現を参照することができる。データ表現の例は、船の速度を指定するデータを含むプロパティクラスオブジェクト２００４である。アセット表現の例は、アセットとして船を指定するデータを含むプラグプロパティクラスオブジェクト２００６である。手続きアクションリストの表現の例は、プラグオブジェクトが実行しなければならないアクションを指定するデータを含む。例えば、手続きアクションリストデータは、船が（１．）港に向かって回頭し、（２．）航行を続け、（３．）ドックで停止することを指定することができる。条件トリガ表現の例は、条件トリガがイベントＹで発火したならばＸが発生しなければならないことを指定するデータを含む。例えば、条件トリガデータは、船がドックに到着したならば、その船が爆発しなければならないことを指定することができる。
【００６３】
[0086]人工環境生成プラットフォーム及び／又はそのノードは、プラグ作成プロセス２０４０及び上で説明したプロパティクラスシステム要素を実施して、プラグデータ２０５２を作成することができる。次に、プロセス２０５０がプラグデータ２０５２の受信側であると考えられたい。具体的に言うと、プラグデータ２０５２は、プロセス２０５０のソケットコード２０５４にゲームデータを供給できる１つ又は複数のユニバーサルデータ構造を含む。したがって、プロセス２０５０は、プラグデータ２０５２を使用して、プロセス２０５０又はソケットコード２０５４のいずれかのソースコードのさらなる又は追加のコンパイルを必要とせずに、人工環境に動的コンテンツを導入することができる。一実施形態では、プラグデータ２０５２を、データベース（「ｄ／Ｂ」）２０６０に船プラグデータ２０６１として格納することができる。ユーザは、イベントエディタ２０６４を使用して、イベントサーバ２０６２と協力して船プラグデータ２０６１を作成することができる。さらに、ユーザは、イベントエディタ２０６４を使用して、船プラグデータ２０６１が例えばスケジューリングされた時刻に動的コンテンツを生成するためにソケットコード２０５４にプラグされる日付及び時刻をスケジューリングすることができる。いくつかの実施形態では、イベントエディタ２０６４は、ＸＭＬエディタ又はプロパティクラスエディタのいずれかの上に構築されるアプリケーションとすることができる。
【００６４】
[0087]図２１は、本発明の少なくとも１つの実施形態による、圧縮ユニバーサルメッセージを実施するメッセージングシステムの部分の例を示す図である。ここでは、メッセージシステム部分２１００は、サーバプロセス２１０６及びクライアントプロセス２１５０を含み、この両方が、とりわけメッセージを交換するためにネットワーク２１３０を介して結合される。この実施形態では、メッセージシステム部分２１００は、サーバ側（又はクライアント側）プロパティクラスオブジェクト（「＜ｐｃｏ＞」）２１６０に関連するデータのサブセットを含むユニバーサルデータ構造としてメッセージを移送することができる。そのようなメッセージの例は、人工環境に対する変更を示すクライアントプロセス２１５０からの応答である。サーバプロセス２１０６及びクライアントプロセス２１５０は、それぞれ、ユニバーサルメッセージインターフェース２１１０ａ及びユニバーサルメッセージインターフェース２１１０ｂを含む。サーバプロセス２１０６は、プロパティクラスオブジェクト２１６０に従って配置されたデータを使用して、クライアントプロセス２１５０から送信されたゲームデータ変更に応答して人工環境を全体的に又は部分的に生成することができる。変更されたゲームデータの例は、人工環境内でのアバタの移動を引き起こすためにクライアントプロセス２１５０によって生成されたデータである。少なくとも１つの実施形態で、サーバプロセス２１０６及び／又はクライアントプロセス２１５０は、圧縮ユニバーサルメッセージ２１２０としてメッセージを交換することができる。サーバプロセス２１０６とクライアントプロセス２１５０との両方が、それを用いてデータを交換すべきプロパティクラスオブジェクト２１６０を実施することができるので、減らされた量のデータを、圧縮ユニバーサルメッセージ２１２０内で交換することができる。いくつかの実施形態では、プロパティクラスオブジェクト２１２２に関連する変更されたゲームデータ２１２４を、ユニバーサルメッセージ内で移送することができる。例として、変更されたゲームデータ２１２４が、インデックスによって識別できるあるプロパティの変更された値を指定すると考えられたい。したがって、圧縮ユニバーサルメッセージ２１２０は、変更されたゲームデータ２１２４の関連する属性を識別するためにインデックス２１２８を含むことができる。この情報を用いて、サーバプロセス２１０６を、人工環境を変更するように構成するか実施することができる。
【００６５】
[0088]図２２は、本発明の少なくとも１つの実施形態による、人工環境生成プラットフォームと相互作用するユニバーサルメッセージングインターフェースを実施する複数のデバイスの図である。人工環境生成プラットフォーム２８００は、ゲームサブプロセス２２８２、データベースプロセス２２８４、及びゲーム管理サーバ２２８８ａから２２８８ｎを含むゲーム管理プロセス２２８６を含む。図示されているように、ユニバーサルメッセージングインターフェース（「ＵＭＩ」）２２９２を実施する様々なクライアント２２９０は、インターネットなどのネットワーク２２８９を介して人工環境生成プラットフォーム２２００と相互作用することができる。この例では、とりわけ、セットトップボックス２２９０ａ、モバイルデバイス２２９０ｂ、コンピューティングデバイス２２９０ｃ、ゲーム機２２９０ｄ、衛星受信器（「ＲＸ」）２２９０ｅ、セル電話機２２９０ｇ、携帯情報端末（「ＰＤＡ」）２２９０ｈ、及びテレビジョン２２９０ｉを、本明細書で説明されるユニバーサルメッセージングインターフェース（「ＵＭＩ」）２２９２を実施するように構成することができる。少なくとも１つの実施形態では、論理（例えば、プロセッサ及びメモリ）を含む任意のデバイス２２９０ｆは、人工環境内の参加者への様々な実施形態のユニバーサルデータ構造及び／又はプロパティクラスを実施することができる。
【００６６】
[0089]様々な実施形態では、プロパティクラスシステム及びそのインスタンスを、Ｃ＋＋プロパティクラスオブジェクト又は他のプログラミング言語の任意の他のプロパティクラスとして実施することができる。さらに、上の議論は、オンラインゲーミングのコンテキストで様々な特徴を説明するが、本発明の実施形態は、オンラインゲーミングに限定されてはならない。そうではなく、本明細書で説明した特徴及び技法は、トレーニング目的、教育目的、社交目的、及び類似物のための人工環境に適用することができる。また、上の議論は、クライアント−サーバアーキテクチャ内の分散サーバのコンテキストにあるが、様々な実施形態は、それに限定されない。例えば、１つ又は複数のノードプロセスを、単一のプロセスに集約することができる。さらに、任意のネットワークアーキテクチャ及びトポロジを、本発明の実施形態と共に実施することができる。例えば、人工環境生成プラットフォームは、ピアツーピアネットワーク及び類似物を実施することができる。
【００６７】
[0090]本発明の実施形態の少なくとも一部では、上で説明した特徴のいずれの構造及び／又は特徴であれ、ソフトウェア、ハードウェア、ファームウェア、回路網、又はその組合せで実施することができる。上の構造及び構成要素並びにその機能性を、１つ又は複数の構造又は要素と共に集約できることに留意されたい。その代わりに、要素及びその機能性を、構成副要素がある場合に構成副要素に副分割することができる。ソフトウェアとして、上で説明した説明した技法を、Ｃ、Ｏｂｊｅｃｔｉｖｅ  Ｃ、Ｃ＋＋、Ｃ＃、Ｆｌｅｘ（商標）、Ｆｉｒｅｗｏｒｋｓ（登録商標）、Ｊａｖａ（商標）、Ｊａｖａｓｃｒｉｐｔ（商標）、ＡＪＡＸ、ＣＯＢＯＬ、Ｆｏｒｔｒａｎ、ＡＤＡ、ＸＭＬ、ＨＴＭＬ、ＤＨＴＭＬ、ＸＨＴＭＬ、ＨＴＴＰ、ＸＭＰＰ、及び他を含む、様々なタイプのプログラミング言語、フォーマッティング言語、フレームワーク、構文、アプリケーション、プロトコル、オブジェクト、又は技法を使用して実施することができる。これらは、変更され得、提供された例又は説明には限定されない。
【００６８】
[0091]前述の説明は、説明において、本発明の完全な理解を提供するために特定の命名法を使用した。しかし、特定の詳細が、本発明を実践するために必要ではないことが、当業者には明白であろう。実際に、この説明は、本発明の任意の特徴又は態様を任意の実施形態に限定すると解釈されてはならず、一実施形態の特徴及び態様を、他の実施形態とたやすく交換することができる。
【００６９】
[0092]したがって、本発明の特定の実施形態の前述の説明は、例示及び説明のために提示されたものである。これらは、網羅的であること又は本発明を開示された正確な形態に限定することを意図されてはおらず、多数の代替形態、修正形態、同等物、及び変形形態が、上の教示を考慮して可能である。明瞭にするために、実施形態に関連する技術的分野で既知の技術的材料は、この説明を不必要に不明瞭にすることを避けるために、詳細には説明しなかった。したがって、様々な実施形態を、添付の特許請求の範囲の範囲及び同等物の中で変更することができる。さらに、実施形態は、本発明の原理及びその実用的応用例を最もよく説明するために選択され、説明され、これらは、これによって、当業者が、本発明及び企図される特定の使用に適する様々な変更を加えた様々な実施形態をもっとよく利用することを可能にする。特筆すべきことに、本明細書で説明された利益のすべてを、本発明の各実施形態によって実現する必要はなく、任意の特定の実施形態は、上で述べた利益のうちの１つ又は複数を提供することができる。特許請求の範囲では、要素及び／又は動作は、特許請求の範囲で明示的に述べられない限り、動作の特定の順序を暗示しない。次の特許請求の範囲及びその同等物が、本発明の範囲を定義することが意図されている。
【図１Ａ】
2010525423.tif 000003
【図１Ｂ】
2010525423.tif 000004
【図２】
2010525423.tif 000005
【図３】
2010525423.tif 000006
【図４Ａ】
2010525423.tif 000007
【図４Ｂ】
2010525423.tif 000008
【図５】
2010525423.tif 000009
【図６】
2010525423.tif 000010
【図７】
2010525423.tif 000011
【図８】
2010525423.tif 000012
【図９】
2010525423.tif 000013
【図１０】
2010525423.tif 000014
【図１１】
2010525423.tif 000015
【図１２】
2010525423.tif 000016
【図１３】
2010525423.tif 000017
【図１４】
2010525423.tif 000018
【図１５】
2010525423.tif 000019
【図１６】
2010525423.tif 000020
【図１７】
2010525423.tif 000021
【図１８】
2010525423.tif 000022
【図１９】
2010525423.tif 000023
【図２０】
2010525423.tif 000024
【図２１】
2010525423.tif 000025
【図２２】
2010525423.tif 000026
【国際調査報告】
2010525423.tif 000027
2010525423.tif 000028
2010525423.tif 000029