(57)【要約】  本開示の実装は、マルチプレーヤ・オンラインゲーム内のイベントデータを管理するための、コンピュータにより実行される方法、システム、および製品に向けられる。方法は、たとえば、仮想環境を含むマルチプレーヤ・オンラインゲームのための複数のクライアントデバイスにおいてユーザ入力を受信することと、ユーザ入力に基づきクライアントデバイス上でオンラインゲームのためのユーザ開始イベントを生成することと、各クライアントデバイス上で生成された任意のユーザ開始イベントを複数のクライアントデバイスのうちの他のクライアントデバイスに配信することと、各クライアントデバイスにおいてユーザ開始イベントに基づき複数の派生ゲームイベントを決定することと、各クライアントデバイス上でユーザ開始イベントおよび派生ゲームイベントを１つまたは複数のイベントキュー内に保存することと、保存されたユーザ開始イベントおよび派生ゲームイベントに従って、各クライアントデバイスにおいて仮想環境の経時的状態を決定することとを含むことができる。
2020503969.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実行される方法であって、
仮想環境を備えるマルチプレーヤ・オンラインゲームのための複数のクライアントデバイスにおいてユーザ入力を受信することと、
前記ユーザ入力に基づき前記クライアントデバイス上で前記オンラインゲームのためのユーザ開始イベントを生成することと、
各クライアントデバイス上で生成された任意のユーザ開始イベントを前記複数のクライアントデバイスのうちの他のクライアントデバイスに配信することと、
各クライアントデバイスにおいて前記ユーザ開始イベントに基づき複数の派生ゲームイベントを決定することと、
各クライアントデバイス上で前記ユーザ開始イベントおよび前記派生ゲームイベントを１つまたは複数のイベントキュー内に保存することと、
前記保存されたユーザ開始イベントおよび前記派生ゲームイベントに従って、各クライアントデバイスにおいて前記仮想環境の経時的状態を決定することとを備える、方法。
【請求項２】
ユーザは、前記クライアントデバイスを使用して前記仮想環境と対話する、請求項１に記載の方法。
【請求項３】
各ユーザ開始イベントは、前記仮想環境内で前記ユーザ開始イベントが発生する時間を備える、請求項１に記載の方法。
【請求項４】
前記ユーザ開始イベントを配信することは、
前記ユーザ開始イベントを前記クライアントデバイスからサーバに送信することと、
各クライアントデバイスにおいて、前記サーバから、前記複数のクライアントデバイスのうちの他のクライアントデバイスによって生成された前記ユーザ開始イベントを受信することとを備える、請求項１に記載の方法。
【請求項５】
前記ユーザ開始イベントを配信した後に、各クライアントデバイスは、各ユーザ開始イベントを備える、請求項１に記載の方法。
【請求項６】
各派生ゲームイベントは、前記仮想環境内で前記派生ゲームイベントが発生する時間を備える、請求項１に記載の方法。
【請求項７】
前記ユーザ開始イベントおよび前記派生ゲームイベントは、前記ユーザ開始イベントおよび前記派生ゲームイベントのための時間に従って各クライアントデバイス上に保存される、請求項１に記載の方法。
【請求項８】
各クライアントデバイスは、前記仮想環境の前記経時的状態について同一の決定を行う、請求項１に記載の方法。
【請求項９】
前記仮想環境の少なくとも一部を各クライアントデバイス上に表示することをさらに備える、請求項１に記載の方法。
【請求項１０】
サーバにおいて前記クライアントデバイスから前記ユーザ開始イベントを受信することと、
前記サーバにおいて前記ユーザ開始イベントに基づき前記複数の派生ゲームイベントを決定することと、
前記サーバ上で前記ユーザ開始イベントおよび前記派生ゲームイベントを１つまたは複数のサーバイベントキュー内に保存することと、
前記保存されたユーザ開始イベントおよび前記派生ゲームイベントに従って、前記サーバ上で前記仮想環境の前記経時的状態を決定することとをさらに備える、請求項１に記載の方法。
【請求項１１】
システムであって、
動作を実行するようにプログラムされた１つまたは複数のコンピュータプロセッサを備え、前記動作は、
仮想環境を備えるマルチプレーヤ・オンラインゲームのための複数のクライアントデバイスにおいてユーザ入力を受信することと、
前記ユーザ入力に基づき前記クライアントデバイス上で前記オンラインゲームのためのユーザ開始イベントを生成することと、
各クライアントデバイス上で生成された任意のユーザ開始イベントを前記複数のクライアントデバイスのうちの他のクライアントデバイスに配信することと、
各クライアントデバイスにおいて前記ユーザ開始イベントに基づき複数の派生ゲームイベントを決定することと、
各クライアントデバイス上で前記ユーザ開始イベントおよび前記派生ゲームイベントを１つまたは複数のイベントキュー内に保存することと、
前記保存されたユーザ開始イベントおよび前記派生ゲームイベントに従って、各クライアントデバイスにおいて前記仮想環境の経時的状態を決定することとを備える、システム。
【請求項１２】
ユーザは、前記クライアントデバイスを使用して前記仮想環境と対話する、請求項１１に記載のシステム。
【請求項１３】
各ユーザ開始イベントは、前記仮想環境内で前記ユーザ開始イベントが発生する時間を備える、請求項１１に記載のシステム。
【請求項１４】
前記ユーザ開始イベントを配信することは、
前記ユーザ開始イベントを前記クライアントデバイスからサーバに送信することと、
各クライアントデバイスにおいて、前記サーバから、前記複数のクライアントデバイスのうちの他のクライアントデバイスによって生成された前記ユーザ開始イベントを受信することとを備える、請求項１１に記載のシステム。
【請求項１５】
前記ユーザ開始イベントを配信した後に、各クライアントデバイスは、各ユーザ開始イベントを備える、請求項１１に記載のシステム。
【請求項１６】
各派生ゲームイベントは、前記仮想環境内で前記派生ゲームイベントが発生する時間を備える、請求項１１に記載のシステム。
【請求項１７】
前記ユーザ開始イベントおよび前記派生ゲームイベントは、前記ユーザ開始イベントおよび前記派生ゲームイベントのための時間に従って各クライアントデバイス上に保存される、請求項１１に記載のシステム。
【請求項１８】
各クライアントデバイスは、前記仮想環境の前記経時的状態について同一の決定を行う、請求項１１に記載のシステム。
【請求項１９】
前記動作は、
サーバにおいて前記クライアントデバイスから前記ユーザ開始イベントを受信することと、
前記サーバにおいて前記ユーザ開始イベントに基づき前記複数の派生ゲームイベントを決定することと、
前記サーバ上で前記ユーザ開始イベントおよび前記派生ゲームイベントを１つまたは複数のサーバイベントキュー内に保存することと、
前記保存されたユーザ開始イベントおよび前記派生ゲームイベントに従って、前記サーバ上で前記仮想環境の前記経時的状態を決定することとをさらに備える、請求項１１に記載のシステム。
【請求項２０】
製品であって、
１つまたは複数のコンピュータプロセッサによって実行されると、前記コンピュータプロセッサに動作を実行させる命令を格納した非一時的コンピュータ可読媒体を備え、前記動作は、
仮想環境を備えるマルチプレーヤ・オンラインゲームのための複数のクライアントデバイスにおいてユーザ入力を受信することと、
前記ユーザ入力に基づき前記クライアントデバイス上で前記オンラインゲームのためのユーザ開始イベントを生成することと、
各クライアントデバイス上で生成された任意のユーザ開始イベントを前記複数のクライアントデバイスのうちの他のクライアントデバイスに配信することと、
各クライアントデバイスにおいて前記ユーザ開始イベントに基づき複数の派生ゲームイベントを決定することと、
各クライアントデバイス上で前記ユーザ開始イベントおよび前記派生ゲームイベントを１つまたは複数のイベントキュー内に保存することと、
前記保存されたユーザ開始イベントおよび前記派生ゲームイベントに従って、各クライアントデバイスにおいて前記仮想環境の経時的状態を決定することとを備える、製品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１７年１１月２９日付出願の米国特許出願第１５／８２５，５８１号、および２０１７年１月１２日付出願の米国仮特許出願第６２／４４５，３６４号の優先権を主張し、その各々の内容全体は参照によりここに組み込まれる。
【０００２】
背景
本開示は、マルチプレーヤ・オンラインゲームに関し、特に、マルチプレーヤ・オンラインゲーム内のイベントデータを管理するためのシステムおよび方法に関する。
【背景技術】
【０００３】
一般に、マルチプレーヤ・オンラインゲームは、オンラインゲームのための仮想環境と対話するためにクライアントデバイスを使用する何十万あるいは何百万ものプレーヤによってプレイされることができる。通常プレーヤは、タスクを達成し、資産を取得し、またはオンラインゲーム内のあるスコアを達成するために取り組んでいる。いくつかのゲームは、プレーヤに対して他のプレーヤまたはプレーヤのグループと対戦可能なグループまたはチームを形成することを要求または奨励する。
【０００４】
プレーヤがゲームに入力を提供し、入力の結果さまざまなイベントが展開するときに、マルチプレーヤ・オンラインゲームおよび／またはその仮想環境の状態は経時的に変化することができる。ゲームの状態が任意の所与の時間においてすべてのプレーヤに対して一貫し、これにより各プレーヤがゲームアクティビティを知らされた状態を維持し、どのプレーヤも不公平な優位性を有さないことが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
ここで説明されるシステムおよび方法の実装は、マルチプレーヤ・オンラインゲーム内のイベントデータを管理するために使用されることができる。イベントデータは、ユーザ（代替的にここで「プレーヤ」とも称される）が入力をオンラインゲームまたはオンラインゲームのための仮想環境と対話するためのクライアントデバイスに提供するときに作成されるゲームイベントを含むことができる。代替的にまたは追加的に、ゲームイベントの少なくとも一部は、クライアントデバイスと通信するサーバによって作成されることができる。イベントデータはまた、派生ゲームイベントを含むことができ、これはたとえば、１つまたは複数のゲームイベントおよび／または他の派生ゲームイベントの結果発生すると予測されるイベントであることができ、またはこれを含むことができる。さまざまな例では、各ゲームイベントおよび各派生ゲームイベントは、オンラインゲーム内のそれぞれの時間において発生するように予定される。サーバおよび複数のクライアントデバイスは、イベントデータをそれぞれのキュー内に保存し、イベントが発生するときにオンラインゲームの状態を更新することができる。イベントは、決定論的に好ましくは処理され、これによりゲームの状態は、クライアントデバイスおよびサーバにわたって任意の所与の時間において同一である。これは、時間経過とともにすべてのプレーヤが同じゲームの状態を経験することを確実にする。
【０００６】
ここで説明されるシステムおよび方法の例は、イベントデータを管理し、オンラインゲームまたはその一部のための一貫した状態を決定するするために使用されることができる。たとえば、プレーヤが他のプレーヤと対話しまたは対抗して競い合うときに（たとえば、アドベンチャゲームにおけるバトルまたは戦闘シナリオにおいて）、ゲームの状態がゲーム内の時間経過とともに各プレーヤに対して同じまたは同一であることが重要である。ゲームの状態は、たとえば、ゲームのための仮想環境の状態、ゲーム内の仮想アイテム、キャラクタ、またはプレーヤの現在位置、および／またはプレーヤによって所有されるまたは保持される現在の資産であることができ、またはこれを含むことができる。いくつかの例では、ゲーム状態は、ゲーム内の物体またはキャラクタのためのあるプロパティの表示を含む。ゲーム状態は、たとえば、仮想環境内の物体が選択可能、移動可能、ダメージ可能、および／または変換可能かどうかの表示を含むことができる。有利に、システムおよび方法は、一貫したゲーム状態をゲーム全体に対してまたはゲームの１つまたは複数の部分（たとえば、バトルまたはプレーヤ間の他の競争中）に対してすべてのクライアントデバイスにわたって提供することができる。これは、公平なゲームプレイを促進し、任意のプレーヤが不公平な優位性を有することを阻止する。手法はまた、（たとえば、高いレイテンシのために）サーバへの貧弱な接続を有するユーザがゲームに参加することを容易にする。その理由は、たとえば、ユーザのクライアントデバイスが、ゲーム状態決定のためにサーバに頼ることなく、ゲーム状態をそれ自体で決定することができるためである。
【０００７】
１つの局面では、この明細書で記載される主題は、コンピュータにより実行される方法に関する。方法は、たとえば、仮想環境を含むマルチプレーヤ・オンラインゲームのための複数のクライアントデバイスにおいてユーザ入力を受信することと、ユーザ入力に基づきクライアントデバイス上でオンラインゲームのためのユーザ開始イベント（たとえば、ゲームイベント）を生成することと、各クライアントデバイス上で生成された任意のユーザ開始イベントを複数のクライアントデバイスのうちの他のクライアントデバイスに配信することと、各クライアントデバイスにおいてユーザ開始イベントに基づき複数の派生ゲームイベントを決定することと、各クライアントデバイス上でユーザ開始イベントおよび派生ゲームイベントを１つまたは複数のイベントキュー内に保存することと、保存されたユーザ開始イベントおよび派生ゲームイベントに従って、各クライアントデバイスにおいて仮想環境の経時的状態を決定することとを含む。
【０００８】
ある例では、ユーザは、クライアントデバイスを使用して仮想環境と対話する。各ユーザ開始イベントは、仮想環境内でユーザ開始イベントが発生する時間を含むことができる。ユーザ開始イベントを配信することは、ユーザ開始イベントをクライアントデバイスからサーバに送信することと、各クライアントデバイスにおいて、サーバから、複数のクライアントデバイスのうちの他のクライアントデバイスによって生成されたユーザ開始イベントを受信することを含むことができる。ユーザ開始イベントを配信した後に、各クライアントデバイスは、各ユーザ開始イベントを含むことができる。各派生ゲームイベントは、仮想環境内で派生ゲームイベントが発生する時間を含むことができる。
【０００９】
いくつかの実装では、ユーザ開始イベントおよび派生ゲームイベントは、ユーザ開始イベントおよび派生ゲームイベントのための時間に従って各クライアントデバイス上に保存される。各クライアントデバイスは、仮想環境の経時的状態について同一の決定を行うことができる。方法は、仮想環境の少なくとも一部を各クライアントデバイス上に表示することを含むことができる。方法は、サーバにおいてクライアントデバイスからユーザ開始イベントを受信することと、サーバにおいてユーザ開始イベントに基づき複数の派生ゲームイベントを決定することと、サーバ上でユーザ開始イベントおよび派生ゲームイベントを１つまたは複数のサーバイベントキュー内に保存することと、保存されたユーザ開始イベントおよび派生ゲームイベントに従って、サーバ上で仮想環境の経時的状態を決定することを含むことができる。
【００１０】
別の局面では、この明細書に記載された主題は、システムに関する。システムは、動作を実行するようにプログラムされた１つまたは複数のコンピュータプロセッサを含み、動作は、仮想環境を有するマルチプレーヤ・オンラインゲームのための複数のクライアントデバイスにおいてユーザ入力を受信することと、ユーザ入力に基づきクライアントデバイス上でオンラインゲームのためのユーザ開始イベント（たとえば、ゲームイベント）を生成することと、各クライアントデバイス上で生成された任意のユーザ開始イベントを当該複数のクライアントデバイスのうちの他のクライアントデバイスに配信することと、各クライアントデバイスにおいてユーザ開始イベントに基づき複数の派生ゲームイベントを決定することと、各クライアントデバイス上でユーザ開始イベントおよび派生ゲームイベントを１つまたは複数のイベントキュー内に保存することと、保存されたユーザ開始イベントおよび派生ゲームイベントに従って、各クライアントデバイスにおいて仮想環境の経時的状態を決定することとを含む。
【００１１】
ある例では、ユーザは、クライアントデバイスを使用して仮想環境と対話する。各ユーザ開始イベントは、仮想環境内でユーザ開始イベントが発生する時間を含むことができる。ユーザ開始イベントを配信することは、ユーザ開始イベントをクライアントデバイスからサーバに送信することと、各クライアントデバイスにおいて、サーバから、複数のクライアントデバイスのうちの他のクライアントデバイスによって生成されたユーザ開始イベントを受信することとを含むことができる。ユーザ開始イベントを配信した後に、各クライアントデバイスは、各ユーザ開始イベントを含むことができる。各派生ゲームイベントは、仮想環境内で派生ゲームイベントが発生する時間を含むことができる。
【００１２】
いくつかの例では、ユーザ開始イベントおよび派生ゲームイベントは、ユーザ開始イベントおよび派生ゲームイベントのための時間に従って各クライアントデバイス上に保存されることができる。各クライアントデバイスは、仮想環境の経時的状態について同一の決定を行うことができる。動作は、サーバにおいてクライアントデバイスからユーザ開始イベントを受信することと、サーバにおいてユーザ開始イベントに基づき複数の派生ゲームイベントを決定することと、サーバ上でユーザ開始イベントおよび派生ゲームイベントを１つまたは複数のサーバイベントキュー内に保存することと、保存されたユーザ開始イベントおよび派生ゲームイベントに従って、サーバ上で仮想環境の経時的状態を決定することとを含むことができる。
【００１３】
別の局面では、この明細書に記載された主題は、製品に関する。製品は、１つまたは複数のコンピュータプロセッサによって実行されると、コンピュータプロセッサに動作を実行させる命令を格納した非一時的コンピュータ可読媒体を含み、動作は、仮想環境を有するマルチプレーヤ・オンラインゲームのための複数のクライアントデバイスにおいてユーザ入力を受信することと、ユーザ入力に基づきクライアントデバイス上でオンラインゲームのためのユーザ開始イベント（たとえば、ゲームイベント）を生成することと、各クライアントデバイス上で生成された任意のユーザ開始イベントを複数のクライアントデバイスのうちの他のクライアントデバイスに配信することと、各クライアントデバイスにおいてユーザ開始イベントに基づき複数の派生ゲームイベントを決定することと、各クライアントデバイス上でユーザ開始イベントおよび派生ゲームイベントを１つまたは複数のイベントキュー内に保存することと、保存されたユーザ開始イベントおよび派生ゲームイベントに従って、各クライアントデバイスにおいて仮想環境の経時的状態を決定することとを含む。
【００１４】
本発明の所与の局面に関して説明される実施形態の要素は、本発明の他の局面のさまざまな実施形態において使用されることができる。たとえば、１つの独立請求項に従属する従属請求項の特徴は、他の独立請求項のいずれかの装置、システム、および／または方法において使用されることができると考えられる。
【図面の簡単な説明】
【００１５】
【図１】マルチプレーヤ・オンラインゲーム内のイベントデータを管理するための例示的システムの概略図である。
【図２】２つのクライアントデバイスがマルチプレーヤ・オンラインゲームのためのサーバと対話する例示的システムの概略図である。
【図３】マルチプレーヤ・オンラインゲームのためのクライアントデバイス上のイベントデータを管理する例示的方法の概略図である。
【図４】マルチプレーヤ・オンラインゲームのためのイベントデータを管理する例示的方法のフローチャートである。
【発明を実施するための形態】
【００１６】
詳細な説明
図１は、マルチプレーヤ・オンラインゲームのためのクライアントデバイスにわたってイベントデータを管理し一貫したゲーム状態を維持するための例示的システム１００を示す。サーバシステム１１２は、経時的に、ゲームイベントを処理し、派生ゲームイベントを計算し、ゲーム状態を更新し、および／またはゲームプレイを監視するための機能を提供する。サーバシステム１１２は、ソフトウェアコンポーネントおよびストレージデバイスまたはたとえば１つまたは複数の地理的場所内の１つまたは複数のデータセンタ１１４において配備されることができるデータベースを含む。サーバシステム１１２のソフトウェアコンポーネントは、たとえば、ゲームイベントモジュール１１６ａ、派生ゲームイベントモジュール１１８ａ、およびゲーム状態モジュール１２０ａを含むことができる。ソフトウェアコンポーネントは、同じまたは異なる個々のデータ処理装置上で実行することができるサブコンポーネントを含むことができる。サーバシステム１１２のデータベースは、たとえば、ゲームデータ・データベース１２２ａを含むことができる。ストレージデバイスは、１つまたは複数の物理ストレージシステムに属することができる。ソフトウェアコンポーネントおよびデータは、以下にさらに記載される。
【００１７】
たとえば、ウェブベースアプリケーションといったアプリケーションは、ユーザがサーバシステム１１２と対話することを可能とするためにエンドユーザアプリケーションとして提供されることができる。エンドユーザアプリケーションは、ネットワーク１２４（たとえば、インターネット）を介して、スマートフォン１２６、パーソナルコンピュータ１２８、スマートフォン１３０、タブレットコンピュータ１３２、およびラップトップコンピュータ１３４といったクライアントデバイスのユーザによってアクセスされることができる。他のクライアントデバイスが可能である。各クライアントデバイスは、ゲーム機能を提供するための適したソフトウェアコンポーネントおよびストレージデバイスまたはデータベースを含むことができる。クライアントデバイスソフトウェアコンポーネントは、たとえば、ユーザインタフェースモジュール１３８、ゲームイベントモジュール１１６ｂ、派生ゲームイベントモジュール１１８ｂ、およびゲーム状態モジュール１２０ｂを含むことができる。ストレージまたはデータベースコンポーネントは、ゲームデータ・データベース１２２ｂを含むことができる。図１は、ユーザインタフェースモジュール１３８、ゲームイベントモジュール１１６ｂ、派生ゲームイベントモジュール１１８ｂ、ゲーム状態モジュール１２０ｂ、およびゲームデータ・データベース１２２ｂをクライアントデバイス１３０と関連付けられたものとして描写するが、各クライアントデバイス１２６，１２８，１３０，１３２，１３４は、ユーザインタフェースモジュール１３８、ゲームイベントモジュール１１６ｂ、派生ゲームイベントモジュール１１８ｂ、ゲーム状態モジュール１２０ｂ、および／またはゲームデータ・データベース１２２ｂを含むことができるということが理解される。
【００１８】
図２は、２ユーザ２０２および２０４がそれぞれのクライアントデバイス１２６および１３０を使用してオンラインゲーム内でサーバシステム１１２と対話する例示的システム２００を描写する。各ユーザ２０２および２０４は、入力をそれぞれのクライアントデバイス１２６および１３０に提供することができる。入力は、たとえば、タッチスクリーン上のタップまたはスワイプ、マウスを用いるポイントおよびクリック、および／または１つまたは複数のキーボード上の入力であることができ、またはこれを含むことができる。入力に対応するデータは、ユーザインタフェースモジュール１３８から経路２０２に沿ってゲームイベントモジュール１１６ｂに送信され、これは、ゲームのためのゲームイベントをユーザ入力に基づきを決定しおよび／または管理する。ゲームイベントは一般に、オンラインゲームのための仮想環境内のプレーヤまたはプレーヤのキャラクタまたはアバタによって取られるアクションまたは動きである。いくつかの実装では、ゲームイベントの少なくとも一部は、サーバシステム１１２上で生成されることができる。たとえば、サーバシステム１１２は、ランダムにまたは特定の時間におよび／または仮想環境内の場所でゲームイベントを作成することができる。クライアントデバイス１２６および１３０上および／またはサーバシステム１１２上で生成されたゲームイベントは、たとえば、プレーヤの動き、別のプレーヤとの対話、リソース（たとえば、兵士、武器、または守備）の配備、仮想物体との対話、および／または仮想環境内のキャラクタとの対話であることができ、またはこれを含むことができる。その他のゲームイベントが、可能である。
【００１９】
好ましい例では、各クライアントデバイス上で（および／またはサーバシステム１１２上で）生成されたゲームイベントは、他のクライアントデバイスおよびオンラインゲームに参加している任意の他のクライアントデバイスと共有される。たとえば、ゲームイベントは、各クライアントデバイス１２６または１３０上のゲームイベントモジュール１１６ｂから経路２０４に沿ってサーバ１１２上のゲームイベントモジュール１１６ａに送信されることができる。サーバ１１２上のゲームイベントモジュール１１６ａは、（クライアントデバイス１２６および１３０上でおよび／またはサーバシステム１１２上で生成された）各ゲームイベントを他のクライアントデバイス上のゲームイベントモジュールに（たとえば、経路２０４を使用して）転送することができる。さらに他のゲームプレイ中に追加的なゲームイベントが生成され、サーバ１１２上のゲームイベントモジュール１１６ａに送信されるときに、追加的なゲームイベントは、他のクライアントデバイスに配信されることができる。このようにして、各クライアントデバイス１２６および１３０は、ゲームまたはその一部に参加しているすべてのクライアントデバイスおよび／または任意のサーバによって生成されたゲームイベントの完全な組を得ることができる。
【００２０】
ある実装では、各ゲームイベントは、イベントが発生するように予定される時間と関連付けられることができる。予定される時間に達したときに、各クライアントデバイス１２６または１３０上のゲームイベントモジュール１１６ｂは、ゲームイベントを経路２０６に沿ってゲーム状態モジュール１２０ｂに転送することができる。ゲーム状態モジュール１２０ｂは、ゲームイベントに従いゲームの状態を更新することができる。たとえば、ゲームイベントがある時間においてプレーヤの位置の移動を伴う場合、ゲーム状態モジュール１２０ｂは、その時間にプレーヤの位置を移動させることによってゲームの状態を更新することができる。
【００２１】
追加的にまたは代替的に、各ゲームイベントは、オンラインゲームのためのある派生ゲームイベントをトリガすることができる。派生ゲームイベントは、たとえば、仮想環境内の物体またはキャラクタの動き、仮想環境内の物体またはキャラクタの状態における変化、仮想環境内の物体（たとえば、コインまたは他の報酬）またはキャラクタ（たとえば、新たな兵士）の追加、および／または仮想環境内の物体（たとえば、破壊された建物）またはキャラクタ（たとえば、殺された兵士）の除去であることができ、またはこれを含むことができる。たとえば、プレーヤが仮想環境内で位置を変えるときに、仮想物体は、仮想環境内に出現し得、または他の物体（たとえば、仮想キャラクタ、人、または動物）は、プレーヤ動きに応じて動き得る。そのような派生ゲームイベントは、クライアントデバイス１２６および１３０上で派生ゲームイベントモジュール１１８ｂを使用して決定されることができる。ゲーム状態モジュール１２０ｂがゲームイベントをゲームイベントモジュール１１６ｂから受信するときに、たとえば、ゲームイベントは、経路２０８に沿って派生ゲームイベントモジュール１１８ｂに転送されることができる。代替的にまたは追加的に、ゲームイベントは、ゲームイベントモジュール１１６ｂから派生ゲームイベントモジュール１１８ｂに直接的に転送されることができる。派生ゲームイベントモジュール１１８ｂはそして、ゲームイベントに対応する任意の派生ゲームイベントを決定することができ、ゲーム内でそのような派生ゲームイベントが発生する時間を予定することができる。代替的にまたは追加的に、派生ゲームイベントモジュール１１８ｂは、たとえば、他の介入ゲームイベントまたは派生ゲームイベントのためにゲーム内でもはや発生することが予測されない任意の派生ゲームイベントを再計算または削除することができる。派生ゲームイベントのために予定される時間に達したときに、派生ゲームイベントモジュール１１８ｂは、派生ゲームイベントを経路２０８に沿ってゲーム状態モジュール１２０ｂに送信することができる。ゲーム状態モジュール１２０ｂは、派生ゲームイベントに従いゲーム状態を更新することができる。
【００２２】
ゲーム状態モジュール１２０ｂがゲーム状態を更新するときに、ゲームイベントおよび派生ゲームイベントに従って、ゲーム状態モジュール１２０ｂは、更新されたゲーム状態をユーザインタフェースモジュール１３８に送信することができる。更新されたゲーム状態および／または仮想環境のレンダリングは、ユーザインタフェースモジュール１３８によって生成され、クライアントデバイス１２６および１３０のユーザ２０２および２０４に提示されることができる。レンダリングは、たとえば、テキスト、画像、ビデオ、オーディオ、および／または触覚フィードバックを含むことができる。各ユーザ２０２および２０４は、更新されたゲーム状態のレンダリングに対してユーザインタフェースモジュール１３８にさらに他の入力を提供することによって応答することができる。ここで説明されるように、さらに他の入力は、処理され、ゲーム状態をさらに更新するために使用されることができる。
【００２３】
さまざまな例では、クライアントデバイス１２６および１３０がゲームイベントおよび派生ゲームイベントに従ってゲーム状態を更新すると、サーバ１１２は、ゲーム状態のサーバのバージョンをゲームイベントおよび派生ゲームイベントを処理することによって更新することができる。たとえば、ゲームイベントが発生するように予定されるときに、サーバ１１２上のゲームイベントモジュール１１６ａは、ゲームイベントを経路２１０に沿ってゲーム状態モジュール１２０ａに転送することができる。ゲーム状態モジュールは、ゲームの状態をゲームイベントに従い更新することができる。追加的にまたは代替的に、ゲームイベントは、経路２１２に沿って派生ゲームイベントモジュール１１８ａに転送されることができ、これは、ゲームイベントに対応する任意の派生ゲームイベントを決定することができる。派生ゲームイベントのために予定される時間に達したときに、派生ゲームイベントモジュール１１８ａは、派生ゲームイベントを経路２１２に沿ってゲーム状態モジュール１２０ａに送信することができる。ゲーム状態モジュール１２０ａは、ゲーム状態を派生ゲームイベントに従い更新することができる。
【００２４】
さまざまな例では、ゲーム状態のサーバのバージョンは、ゲーム状態の公式バージョンであることができ、各クライアントデバイス上のゲーム状態を監視しまたは確証するために使用されることができる。 ゲーム状態のサーバのバージョンは、たとえば、クライアントデバイス１２６および１３０上で任意の不正が発生することを阻止するために、またはクライアントデバイス１２６および１３０上でゲーム状態を更新するために使用されることができる。たとえば、サーバ１１２は、サーバの過去、現在、および／または未来のゲームイベントおよび／または派生ゲームイベントの一覧をクライアントデバイス１２６および１３０上の過去、現在、および／または未来のゲームイベントおよび／または派生ゲームイベントの一覧と比較することができる。追加的にまたは代替的に、サーバ１１２は、ゲーム状態のサーバのバージョンをクライアントデバイス１２６および１３０によって決定されたゲーム状態と比較するために、経路２１４を使用することができる。クライアントデバイス１２６および１３０上のイベントおよび／またはゲーム状態を検査することで、サーバ１１２は、イベントが許可可能でありゲームの任意のルールの範囲内であることおよび／またはゲーム状態が正確であることを検証することができる。サーバ１１２によるこの独立チェックがなければ、たとえば、ハッカーは、ゲームにおいて不公平な優位性および／または不正を得る目的で悪意のあるおよび／または詐欺のイベントを生成しサブミットしかねない。
【００２５】
ゲーム状態のサーバの公式バージョンはまた、ゲームに遅れて到着したクライアントデバイスを加えるために使用されることができる。従来のアプローチでは、最新にされるために、遅れて到着したクライアントデバイスは、クライアントデバイスの到着前にゲームまたはその一部において発生したすべてのイベントを処理することを要求され得る。しかし、ここで説明されるシステムおよび方法を用いることで、サーバ１１２は、現在ゲーム状態のスナップショットを遅れて到着したクライアントデバイスに送信することができ、これによりクライアントデバイスは、ゲームおよび／または他のクライアントデバイスと同期されることができる。これは、任意の、遅れて到着したクライアントデバイスをゲームまたはその一部に追加する処理を大分容易にする。
【００２６】
好ましい実装では、クライアントデバイス１２６および１３０およびサーバ１１２は、イベントデータを一貫した方法で管理し処理するように構成され、これにより各クライアントデバイス１２６および１３０並びにサーバ１１２は、各イベントが処理された後に同一のゲーム状態に到達する。このすべてのクライアントデバイスおよびサーバ１１２にわたってゲーム状態の一貫性および単一性を達成するために、ゲームイベントモジュール１１６ａおよび１１６ｂ、派生ゲームイベントモジュール１１８ａおよび１１８ｂ、並びにゲーム状態モジュール１２０ａおよび１２０ｂは、イベントを処理しゲーム状態を決定論的に更新するように構成されることができる。これは、たとえば、すべてのデバイスにわたってイベントを処理するための一貫したルールの組を使用することによっておよび／またはランダムイベントまたは結果を避けることによって達成されることができ、これにより各イベントは、同一に決定され処理される。そのような手法を用いて、各イベントは、クライアントデバイス１２６および１３０並びにサーバ１１２を含む各デバイスにおいてゲーム状態へ同一の影響を有することができる。イベントの一貫したタイミングを確実にするために、ゲームクロックは、すべてのデバイスが同じ時間に設定されるように、サーバ１１２並びにクライアントデバイス１２６および１３０（および任意の他のクライアントデバイス）にわたって同期されることができる。
【００２７】
図３を参照して、さまざまな例では、クライアントデバイス１３０は、ユーザインタフェースモジュール１３８、ゲームイベントモジュール１１６ｂ、派生ゲームイベントモジュール１１８ｂ、およびゲーム状態モジュール１２０ｂを使用してオンラインゲームのためのイベントデータを処理しおよび／または管理する。ユーザ２０４は、入力をユーザインタフェースモジュール１３８のユーザ入力デバイス３０２に提供することができる。ユーザ入力デバイス３０２は、たとえば、タッチスクリーン、キーボード、マウス、ジョイスティック、または他のゲームコントローラであることができ、またはこれを含むことができる。ユーザ入力デバイス３０２は、ユーザ入力を処理し、ユーザ入力に対応するデータを生成することができる。このデータは、ここではユーザ入力データとも称され、たとえば、ユーザ入力および／またはオンラインゲームのためのゲームイベントから導出される情報またはこれを記述する情報であることができ、またはこれを含むことができる。ユーザ入力データは、ユーザ入力デバイス３０２からゲームイベントモジュール１１６ｂ内のゲームイベントプロセッサ３０４に送信されることができる。追加的にまたは代替的に、他のクライアントデバイスからのユーザ入力データ（たとえば、ゲームイベント）は、サーバ１１２からゲームイベントプロセッサ３０４に送信されることができる。ゲームイベントプロセッサ３０４は、ユーザ入力データを処理し、ユーザ入力データに基づきおよび／またはサーバ１１２上で生成された任意のゲームイベントに基づきオンラインゲームのための任意のゲームイベントを決定するすることができる。たとえば、ゲームイベントプロセッサ３０４は、１つまたは複数のゲームイベントがオンラインゲーム内で発生する時間を決定することができる。１つまたは複数のゲームイベントは、たとえば、各ゲームイベントに対する固有の識別番号に従いおよび／または時系列順に従いゲームイベントキュー３０６内に保存されることができる。ゲームイベント送信機３０８は、オンラインゲームのためのゲーム時間を監視することができ、ゲームイベントが発生するように予定されるときに、ゲームイベントをゲームイベントキュー３０６から検索することができる。たとえば、ゲームイベントに関連付けられるゲーム時間に達したときに、ゲームイベント送信機３０８は、ゲームイベントをゲームイベントキュー３０６から除去し、ゲームイベントをゲーム状態モジュール１２０ｂ内のゲーム状態プロセッサ３１０に転送することができる。
【００２８】
ゲーム状態モジュール１２０ｂは一般に、オンラインゲームの状態をゲームイベントおよび派生ゲームイベントに従い更新するように構成される。たとえば、ゲームイベント送信機３０８がゲームイベントをゲーム状態プロセッサ３１０に送信するときに、ゲーム状態プロセッサ３１０は、ゲームイベントがゲーム状態を変更する方法を決定することができ、それに従ってゲーム状態を更新することができる。現在のゲームの状態は、ゲーム状態キュー３１２内に、１つまたは複数の過去のゲームの状態とともに保存されたされることができる。たとえば、ゲーム状態キュー３１２は、ゲーム状態の履歴を保存することができる。これは、たとえば、ユーザ２０４および／またはゲーム管理者が後にゲーム状態を再確認または再生することを可能とする。
【００２９】
ゲーム状態プロセッサ３１０がゲーム状態をゲームイベントに従い更新するときに、更新されたゲーム状態および／またはゲームイベントは、派生ゲームイベントモジュール１１８ｂに送信されることができ、これは、ゲームイベントおよび／または更新されたゲーム状態のために発生する任意の派生ゲームイベントを決定し処理することができる。たとえば、派生ゲームイベントプロセッサ３１４は、更新されたゲーム状態および／またはゲームイベントを受信し、更新されたゲーム状態および／またはゲームイベントの結果として、オンラインゲーム内で１つまたは複数の派生ゲームイベントが発生する時間を決定することができる。代替的にまたは追加的に、派生ゲームイベントプロセッサ３１４は、派生ゲームイベントを再計算し、および／または他の介入イベントのためにもはや発生しないある派生ゲームイベントを削除することができる。１つまたは複数の派生ゲームイベントは、派生ゲームイベントキュー３１６内に、たとえば、各派生ゲームイベントのための固有の識別番号に従いおよび／または時系列順に従い保存されることができる。派生ゲームイベント送信機３１８は、オンラインゲームに対するゲーム時間を監視することができ、派生ゲームイベントが発生するように予定されるときに、派生ゲームイベントを派生ゲームイベントキュー３１６から検索することができる。たとえば、派生ゲームイベントと関連付けられたゲーム時間に達すると、派生ゲームイベント送信機３１８は、派生ゲームイベントを派生ゲームイベントキュー３１６から除去し、派生ゲームイベントをゲーム状態プロセッサ３１０に転送することができ、ゲーム状態プロセッサ３１０は、それに従ってゲーム状態を更新することができる。ゲーム状態が経時的に更新されると、追加的な派生ゲームイベントは、派生ゲームイベントモジュール１１８ｂを使用して処理され、ゲーム状態モジュール１２０ｂを使用してオンラインゲームへと実装されることができる。いくつかの実装では、派生ゲームイベントモジュール１１８ｂは、ゲームイベントをゲームイベント送信機３０８から直接的に受信することができ、受信されたゲームイベントに基づき派生ゲームイベントを決定し処理することができる。
【００３０】
ゲーム状態が更新され、ゲーム状態キュー３１２内に保存されると、現在のゲーム状態またはそのレンダリングは、ゲーム状態モジュール１２０ｂからユーザインタフェースモジュール１３８上のユーザ出力デバイス３２０に送信されることができる。ユーザ出力デバイス３２０は、たとえば、表示画面、グラフィカルユーザインタフェース、スピーカ、および／または触覚フィードバックデバイスであることができ、またはこれを含むことができる。好ましい実装では、現在のゲーム状態のレンダリングは、ユーザインタフェースモジュール１３８および／またはゲーム状態モジュール１２０ｂによって決定されることができ、ユーザ出力デバイス３２０を使用してユーザ２０４に提供される。これに応じて、ユーザ２０４は、追加的なユーザ入力をユーザ入力デバイス３０２に提供することができ、任意の対応するゲームイベントおよび／または派生ゲームイベントは、それに従ってゲーム状態を更新するために決定され処理されることができる。ゲームイベントおよび派生ゲームイベントに基づきゲーム状態を更新する処理は、ゲーム（またはその一部）が終わるまで継続することができる。
【００３１】
図４は、仮想環境を含むマルチプレーヤ・オンラインゲームのためのイベントデータを管理するためのコンピュータにより実行される例示的方法４００を示す。ユーザ入力は、仮想環境を含むマルチプレーヤ・オンラインゲームのための複数のクライアントデバイスにおいて受信される（ステップ４０２）。ユーザ開始イベント（たとえば、ゲームイベント）は、オンラインゲームのためのクライアントデバイス上でユーザ入力に基づき生成される（ステップ４０４）。各クライアントデバイス上で生成された任意のユーザ開始イベントは、複数のクライアントデバイスのうちの他のクライアントデバイスに配信される（ステップ４０６）。複数の予測または派生ゲームイベントは、各クライアントデバイスにおいてユーザ開始イベントに基づき決定される（ステップ４０８）。ユーザ開始イベントおよび派生ゲームイベントは、イベントキュー（または複数のイベントキュー）内に、たとえば、時系列で各クライアントデバイス上に保存される（ステップ４１０）。各クライアントデバイスにおいて、仮想環境の状態は、保存されたユーザ開始イベントおよび派生ゲームイベントに従って経時的に決定される（ステップ４１２）。
【００３２】
この明細書に記載の主題の実装および動作は、この明細書に開示される構造およびそれらの構造上の均等物を含む、デジタル電子回路、あるいはコンピュータソフトウェア、ファームウェア、またはハードウェア、またはそれらの１つまたは複数の組み合わせにおいて実装されることができる。この明細書に記載の主題の実装は、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータストレージ媒体上に符号化された１つまたは複数のコンピュータプログラム、すなわち、コンピュータプログラム命令の１つまたは複数のモジュールとして実装されることができる。代替的にまたは追加的に、プログラム命令は、たとえばデータ処理装置による実行のために適切な受信装置に伝送するための情報を符号化するために生成された機械生成電気信号、光信号、又は電磁信号といった、人工的に生成された伝搬信号に符号化されることができる。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、またはそれらの１つまたは複数の組み合わせであるか、それらに含められることができる。さらに、コンピュータストレージ媒体は伝搬信号ではないが、コンピュータストレージ媒体は、人工的に生成された伝搬信号に符号化されたコンピュータプログラム命令の送信元または宛先になることができる。コンピュータストレージ媒体は、１つまたは複数の別々の物理的構成要素または媒体（たとえば、複数のＣＤ、ディスク、または他のストレージデバイス）であることができ、またはそれらに含められることができる。
【００３３】
この明細書で記載の動作は、１つまたは複数のコンピュータ可読ストレージデバイスに記憶される、または他のソースから受信されたデータに対して、データ処理装置によって実行される動作として実装することができる。
【００３４】
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、チップ上のシステム、またはこれらの複数のもの、あるいはそれらの組み合わせを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）などの特殊目的論理回路を含むことができる。装置はまた、ハードウェアに加えて、問題のコンピュータプログラムの実行環境を作成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらの１つ以上の組み合わせを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどのさまざまな異なるコンピューティングモデルインフラストラクチャを実現することができる。
【００３５】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも称される）は、コンパイル済み言語またはインタプリタ言語、宣言型言語または手続き型言語を含む任意の形式のプログラミング言語で作成されることができ、それは、独立型プログラム、またはモジュール、コンポーネント、サブルーチン、オブジェクト、あるいはコンピューティング環境での使用に適した他のユニットを含む任意の形式で配備されることができる。コンピュータプログラムは、必ずしもそうである必要はないが、ファイルシステム内のファイルに対応し得る。プログラムは、他のプログラムまたはデータを保持するファイルの一部（たとえば、マークアップ言語文書に格納されている１つまたは複数のスクリプト）、問題のプログラム専用の単一ファイル、または複数の協調ファイル（たとえば、１つ以上のモジュール、サブプログラム、またはコードの一部を格納するファイル）に保存されることができる。コンピュータプログラムは、１つのコンピュータ、または１つのサイトに配置されたまたは複数のサイトにわたって分散されて通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配備することができる。
【００３６】
この明細書に記載処理および論理フローは、入力データを操作して出力を生成することによって動作を実行するために１つまたは複数のコンピュータプログラムを実行する１つまたは複数のプログラマブルプロセッサによって実行されることができる。プロセスおよび論理フローはまた、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）などの特殊目的論理回路によって実行されることもでき、装置はまたこれとして実装されることもできる。
【００３７】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用および特殊用途の両方のマイクロプロセッサ、ならびに任意の種類のデジタルコンピュータの任意の１つまたは複数のプロセッサを含む。一般に、プロセッサは、読み出し専用メモリ、ランダムアクセスメモリ、またはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令に従って動作を実行するためのプロセッサと、命令およびデータを格納するための１つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための１つまたは複数の大容量ストレージデバイス、たとえば磁気ディスク、光磁気ディスク、光ディスク、またはソリッドステートドライブから、データを受信する、またはそれらにデータを転送するように結合されるしかしながら、コンピュータはそのようなデバイスを必須としない。さらに、コンピュータを、数例を挙げると、たとえば携帯電話、携帯情報端末（ＰＤＡ）、携帯オーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム（ＧＰＳ）受信機、または携帯型ストレージデバイス（たとえば、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ）といった別のデバイスに組み込むことができる。コンピュータプログラムの命令およびデータを格納するのに適したデバイスは、例として、たとえばＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイスを含む半導体メモリデバイス、たとえば内蔵ハードディスクまたはリムーバブルディスクを含む磁気ディスク、ＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む光磁気ディスクを含むあらゆる形式の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、特殊目的論理回路によって補完されるか、またはその中に組み込まれることができる。
【００３８】
ユーザとの対話を可能にするために、この明細書に記載の主題の実装は、たとえばＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニタといったユーザに情報を表示するための表示デバイスと、キーボードと、たとえば、マウス、トラックボール、タッチパッド、またはスタイラスといったユーザがコンピュータに入力を提供することができるポインティングデバイスとを有するコンピュータ上で実装されることができる。他の種類のデバイスを使用して、ユーザとの対話を提供することもできる。たとえば、ユーザに提供されるフィードバックは、たとえば視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなどの任意の形態の感覚的フィードバックであり得。ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形式で受け取られることができる。加えて、コンピュータは、たとえば、Ｗｅｂブラウザから受信した要求に応答して、Ｗｅｂページをユーザのクライアントデバイス上のＷｅｂブラウザに送信するなど、ユーザによって使用されるデバイスに文書を送受信することによってユーザと対話することができる。
【００３９】
この明細書で説明される主題の実装は、たとえばデータサーバとしてのバックエンドコンポーネントを含むか、またはたとえばアプリケーションサーバなどのミドルウェアコンポーネントを含むか、またはたとえばこの明細書に記載の主題の実装とユーザが対話することができるグラフィカルユーザインタフェース、またはウェブブラウザを有するクライアントコンピュータといったフロントエンドコンポーネントを含むかまたはそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの１つまたは複数の任意の組み合わせを含むコンピューティングシステムで実装されることができる。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続されることができる。通信ネットワークの例は、ローカルエリアネットワーク（「ＬＡＮ」）およびワイドエリアネットワーク（「ＷＡＮ」）、インターネットワーク（たとえばインターネット）、およびピアツーピアネットワーク（たとえばアドホックピアツーピアネットワーク）を含む。
【００４０】
コンピューティングシステムはクライアントおよびサーバを含むことができる。クライアントとサーバとは一般に互いに離れており、通信ネットワークを介して典型的に対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実装では、サーバは、データ（たとえば、ＨＴＭＬページ）を（たとえば、クライアントデバイスと対話しているユーザにデータを表示し、ユーザからユーザ入力を受け取るために）クライアントデバイスに送信する。クライアントデバイスで生成されたデータ（たとえば、ユーザとの対話の結果）は、サーバのクライアントデバイスから受信されることができる。
【００４１】
この明細書は多くの具体的な実装の詳細を含むが、これらはいかなる発明の範囲または特許請求の範囲の限定と考えられるべきではなく、むしろ特定の発明の特定の実装に特有な特徴の説明として解釈されるべきである。この明細書において別々の実装の文脈において説明されている特定の特徴は、単一の実装において組み合わせて実装されこともできる。逆に、単一の実装の文脈で説明されているさまざまな特徴は、複数の実装で別々にまたは任意の適切な部分的組み合わせにおいて実装されることもできる。さらに、特徴は特定の組み合わせにおいて作用するものとして上述されることができ、当初の特許請求の範囲に記載されていても、記載された組み合わせからの１つ以上の特徴は、組み合わせから除外されることができ、記載された組み合わせは、部分的組み合わせまたは部分的組み合わせの変形に向けられることができる。
【００４２】
同様に、動作は特定の順序で図面に描かれているが、望ましい結果を達成するために、そのような動作が示された特定の順序または順次に実行されること、または示されたすべての動作が実行されることが必要であると解されるべきではない。特定の状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上述の実装におけるさまざまなシステム構成要素の分離は、すべての実装においてそのような分離を必要とすると理解されるべきではなく、説明されたプログラム構成要素およびシステムは、単一のソフトウェア製品に一般的に統合されるかまたは複数のソフトウェア製品へとパッケージ化され得る。
【００４３】
このようにして、主題の特定の実装が説明された。他の実装は添付の特許請求の範囲内にある。場合によっては、請求項に記載されている動作は、異なる順序で実行されることができ、それでも望ましい結果を達成することができる。さらに、添付の図面に示された処理は、望ましい結果を達成するために、示された特定の順序、または順次順序を必ずしも必要としない。特定の実装では、マルチタスク処理および並列処理が有利であり得る。
【図１】
2020503969.tif 000003
【図２】
2020503969.tif 000004
【図３】
2020503969.tif 000005
【図４】
2020503969.tif 000006
【国際調査報告】
2020503969.tif 000007
2020503969.tif 000008
2020503969.tif 000009