(57)【特許請求の範囲】
【請求項１】
サーバシステムのリソースにレンダリングタスクを割り当てるためのコンピュータで実施される方法であって、前記方法は、
前記サーバシステムで、複数のゲームクライアントの第１のゲームクライアントにおいて見ることができる第１のゲーム世界のビューの少なくとも一部を決定することであって、前記第１のゲーム世界のビューの前記少なくとも一部は第１のゲーム要素および第２のゲーム要素を含み、前記第１のゲーム世界のビューは第１のゲーム世界の状態を表す、決定することと、
前記サーバシステムで、前記第１のゲームクライアントからのゲーム入力の少なくとも一部を受信することと、
前記サーバシステムで、前記ゲーム入力の前記少なくとも一部に基づき、前記第１のゲーム世界の状態から第２のゲーム世界の状態への変更を決定することと、
前記サーバシステムで、前記第２のゲーム世界の状態に基づき第２のゲーム世界のビューを決定することであって、前記第２のゲーム世界のビューの少なくとも一部は前記第１のゲームクライアントにおいて見ることができるように決定することと、
前記サーバシステムで、前記第１のゲームクライアントからの前記ゲーム入力の前記少なくとも一部を前記受信することの結果として、前記第１のゲーム要素のレンダリングを行ってレンダリング結果データを生成するための第１のレンダリングタスクおよび前記第２のゲーム要素のレンダリングを行ってレンダリング結果データを生成するための第２のレンダリングタスクを決定することと、
前記サーバシステムで、第１のゲーム要素リソースに対して前記第１のレンダリングタスクを割り当て、第２のゲーム要素リソースに対して前記第２のレンダリングタスクを割り当てることと、
前記サーバシステムで、前記第１のゲーム要素リソースから前記第１のゲーム要素のレンダリングにより生成された前記レンダリング結果データを取得し、前記第２のゲーム要素リソースから前記第２のゲーム要素のレンダリングにより生成された前記レンダリング結果データを取得することと、
前記サーバシステムで、ディスプレイのために前記第１のゲームクライアントに対して前記第２のゲーム世界のビューを送信することと、を含み、
前記第２のゲーム世界のビューの前記少なくとも一部は、前記第１のゲーム要素の前記生成されたレンダリング結果データおよび前記第２のゲーム要素の前記生成されたレンダリング結果データを含み、
前記第１のゲーム要素リソースは、前記複数のゲームクライアントに共通に割り当てられたゲーム要素リソースと、前記第１のゲームクライアントに割り当てられたゲーム要素リソースと 
を含み、
前記第１のレンダリングタスクは、
前記複数のゲームクライアントに共通に割り当てられたゲーム要素リソースで、前記第１のゲーム要素のゲームクライアントに依存しないレンダリングを行ってレンダリング結果データを生成することと、
前記第１のゲームクライアントに割り当てられたゲーム要素リソースで、前記ゲームクライアントに依存しないレンダリングにより生成された前記レンダリング結果データに基づいて、前記第１のゲーム要素のゲームクライアントに依存するレンダリングを行ってレンダリング結果データを生成することと、を含む、
方法。
【請求項２】
前記第１のゲーム要素リソースは、前記第１のゲームクライアントに対して前記第１のゲーム要素の前記生成されたレンダリング結果データを送信するように構成され、前記第２のゲーム要素リソースは、前記第1のゲームクライアントに対して前記第２のゲーム要素の前記生成されたレンダリング結果データを送信するように構成される、請求項１に記載のコンピュータで実施される方法。
【請求項３】
前記サーバシステムは、オンラインゲームシステム、データセンタまたはデータクラスタを含む、請求項１に記載のコンピュータで実施される方法。
【請求項４】
前記第１のゲーム要素リソースは、コンピュータ、複数のコンピュータ、サーバ、コンピュータリソース、バーチャルマシンまたはコンピュータクラスタを含む、請求項１に記載のコンピュータで実施される方法。
【請求項５】
前記第１のゲーム要素は、ゲームキャラクタ、ゲームオブジェクト、またはゲームシーンの少なくとも一部である、請求項１に記載のコンピュータで実施される方法。
【請求項６】
１つまたは複数のプロセッサによって実行されたときに、動作を実行することによりサーバシステムに前記サーバシステムのリソースに対してレンダリングタスクを割り当てさせる命令を格納した機械可読の非一時的な媒体であって、前記動作は、
前記サーバシステムで、複数のゲームクライアントの第１のゲームクライアントにおいて見ることができる第１のゲーム世界のビューの少なくとも一部を決定することであって、前記第１のゲーム世界のビューの前記少なくとも一部は第１のゲーム要素および第２のゲーム要素を含み、前記第１のゲーム世界のビューは第１のゲーム世界の状態を表す、決定することと、
前記サーバシステムで、前記第１のゲームクライアントからのゲーム入力の少なくとも一部を受信することと、
前記サーバシステムで、前記ゲーム入力の前記少なくとも一部に基づき、前記第１のゲーム世界の状態から第２のゲーム世界の状態への変更を決定することと、
前記サーバシステムで、前記第２のゲーム世界の状態に基づき第２のゲーム世界のビューを決定することであって、前記第２のゲーム世界のビューの少なくとも一部は前記第１のゲームクライアントにおいて見ることができるように決定することと、
前記サーバシステムで、前記第１のゲームクライアントからの前記ゲーム入力の前記少なくとも一部を前記受信することの結果として、前記第１のゲーム要素のレンダリングを行ってレンダリング結果データを生成するための第１のレンダリングタスクおよび前記第２のゲーム要素のレンダリングを行ってレンダリング結果データを生成するための第２のレンダリングタスクを決定することと、
前記サーバシステムで、第１のゲーム要素リソースに対して前記第１のレンダリングタスクを割り当て、第２のゲーム要素リソースに対して前記第２のレンダリングタスクを割り当てることと、
前記サーバシステムで、前記第１のゲーム要素リソースから前記第１のゲーム要素のレンダリングにより生成された前記レンダリング結果データを取得し、前記第２のゲーム要素リソースから前記第２のゲーム要素のレンダリングにより生成された前記レンダリング結果データを取得することと、 
前記サーバシステムで、ディスプレイのために前記第１のゲームクライアントに対して前記第２のゲーム世界のビューを送信することと、
を含み、
前記第２のゲーム世界のビューの前記少なくとも一部は、前記第１のゲーム要素の前記生成されたレンダリング結果データおよび前記第２のゲーム要素の前記生成されたレンダリング結果データを含み、
前記第１のゲーム要素リソースは、前記複数のゲームクライアントに共通に割り当てられたゲーム要素リソースと、前記第１のゲームクライアントに割り当てられたゲーム要素リソースとを含み、
前記第１のレンダリングタスクは、
前記複数のゲームクライアントに共通に割り当てられたゲーム要素リソースで、前記第１のゲーム要素のゲームクライアントに依存しないレンダリングを行ってレンダリング結果データを生成することと、
前記第１のゲームクライアントに割り当てられたゲーム要素リソースで、前記ゲームクライアントに依存しないレンダリングにより生成された前記レンダリング結果データに基づいて、前記第１のゲーム要素のゲームクライアントに依存するレンダリングを行ってレンダリング結果データを生成することと、を含む、
機械可読の非一時的な媒体。
【請求項７】
前記第１のゲーム要素リソースは前記第１のゲームクライアントに前記第１のゲーム要素の前記生成されたレンダリング結果データを送信するように構成され、前記第２のゲーム要素リソースは前記第１のゲームクライアントに前記第２のゲーム要素の前記生成されたレンダリング結果データを送信するように構成される、請求項６に記載の機械可読の非一時的な媒体。
【請求項８】
前記サーバシステムは、オンラインゲームシステム、データセンタまたはデータクラスタを含む、請求項６に記載の機械可読の非一時的な媒体。
【請求項９】
前記第１のゲーム要素リソースは、コンピュータ、複数のコンピュータ、サーバ、コンピュータリソース、バーチャルマシンまたはコンピュータクラスタを含む、請求項６に記載の機械可読の非一時的な媒体。
【請求項１０】
前記第１のゲーム要素は、ゲームキャラクタ、ゲームオブジェクト、またはゲームシーンの少なくとも一部を含む、請求項６に記載の機械可読の非一時的な媒体。
【請求項１１】
サーバシステムであって、
１または複数のプロセッサと、
前記１つまたは複数のプロセッサに結合された機械可読な媒体であって、前記１つまたは複数のプロセッサによって実行されたときに、動作を実行することによりサーバシステムに前記サーバシステムのリソースに対してレンダリングタスクを割り当てさせる命令を格納した機械可読な媒体とを含み、前記動作は、
前記サーバシステムで、複数のゲームクライアントの第１のゲームクライアントにおいて見ることができる第１のゲーム世界のビューの少なくとも一部を決定することであって、前記第１のゲーム世界のビューの前記少なくとも一部は第１のゲーム要素および第２のゲーム要素を含み、前記第１のゲーム世界のビューは第１のゲーム世界の状態を表す、決定することと、
前記サーバシステムで、前記第１のゲームクライアントからのゲーム入力の少なくとも一部を受信することと、
前記サーバシステムで、前記ゲーム入力の前記少なくとも一部に基づき、前記第１のゲーム世界の状態から第２のゲーム世界の状態への変更を決定することと、
前記サーバシステムで、前記第２のゲーム世界の状態に基づき第２のゲーム世界のビューを決定することであって、前記第２のゲーム世界のビューの少なくとも一部は前記第１のゲームクライアントにおいて見ることができるように決定することと、 
前記サーバシステムで、前記第１のゲームクライアントからの前記ゲーム入力の前記少なくとも一部を前記受信することの結果として、前記第１のゲーム要素のレンダリング行ってレンダリング結果データを生成するための第１のレンダリングタスクおよび前記第２のゲーム要素のレンダリング行ってレンダリング結果データを生成するための第２のレンダリングタスクを決定することと、
前記サーバシステムで、第１のゲーム要素リソースに対して前記第１のレンダリングタスクを割り当て、第２のゲーム要素リソースに対して前記第２のレンダリングタスクを割り当てることと、
前記サーバシステムで、前記第１のゲーム要素リソースから前記第１のゲーム要素のレンダリングにより生成された前記レンダリング結果データを取得し、前記第２のゲーム要素リソースから前記第２のゲーム要素のレンダリングにより生成された前記レンダリング結果データを取得することと、
前記サーバシステムで、ディスプレイのために前記第１のゲームクライアントに対して前記第２のゲーム世界のビューを送信することと、を含み、
前記第２のゲーム世界のビューの前記少なくとも一部は、前記第１のゲーム要素の前記生成されたレンダリング結果データおよび前記第２のゲーム要素の前記生成されたレンダリング結果データを含み、
前記第１ゲーム要素リソースは、前記複数のゲームクライアントに共通に割り当てられたゲーム要素リソースと、前記第１のゲームクライアントに割り当てられたゲーム要素リソースとを含み、
前記第１のレンダリングタスクは、
前記複数のゲームクライアントに共通に割り当てられたゲーム要素リソースで、前記第１のゲーム要素のゲームクライアントに依存しないレンダリングを行ってレンダリング結果データを生成することと、
前記第１のゲームクライアントに割り当てられたゲーム要素リソースで、前記ゲームクライアントに依存しないレンダリングにより生成された前記レンダリング結果データに基づいて、前記第１のゲーム要素のゲームクライアントに依存するレンダリングを行ってレンダリング結果データを生成することと、を含む、
機械可読な媒体
を含むサーバシステム。
【請求項１２】
前記第１のゲーム要素リソースは、前記第１のゲームクライアントに対して前記第１のゲーム要素の前記生成されたレンダリング結果データを送信するように構成され、前記第２のゲーム要素リソースは、前記第１のゲームクライアントに対して前記第２のゲーム要素の前記生成されたレンダリング結果データを送信するように構成される、請求項１１に記載のサーバシステム。
【請求項１３】
前記サーバシステムは、オンラインゲームシステム、データセンタまたはデータクラスタを含む、請求項１１に記載のサーバシステム。
【請求項１４】
前記第１のゲーム要素リソースは、コンピュータ、複数のコンピュータ、サーバ、コンピュータリソース、バーチャルマシンまたはコンピュータクラスタを含む、請求項１１に記載のサーバシステム。
【請求項１５】
前記第１のゲーム要素は、ゲームキャラクタ、ゲームオブジェクト、またはゲームシーンの少なくとも一部を含む、請求項１１に記載のサーバシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書に特に記載していない限り、本項に記述した手法は、本出願の特許請求の範囲に対する従来技術ではなく、本項に含めることによって従来技術であることを認めるものでもない。
【０００２】
現在のマルチプレイヤーオンラインゲームでは、キャラクタを実行し、シーンをレンダリングするクライアント側を持つことができ、また、ゲーム世界の対話を実行するサーバ側を持つことができる。オンラインゲームがサーバ側でレンダリングを実行させる方向に変化するにつれて、現在の処理手法は、サーバ内において背景およびキャラクタを幾重にも完全に配布することを必要とする場合がある。そのような手法では、オンラインゲームの経験を向上させる際に禁止的な要素となる可能性があるシステム内データトラフィックの段階を作り出す可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ある実施形態では、本開示は、ゲームクライアントにオンラインゲーム経験を提供する例示的な方法について記述する。例示的な方法は、複数のゲーム要素のそれぞれをサーバシステムの対応する複数のゲーム要素リソースに割り当てることと、複数のゲームクライアントに対してゲーム世界を規定するゲーム世界の状態への更新に基づいて、レンダリングタスクが必要な可能性があることを決定することと、複数のゲームクライアントの第１のゲームクライアントに対するゲーム世界のビューの第１のビューポートを決定することと、複数のゲーム要素の第１のゲーム要素が第１のビューポートから見えるかどうかを決定することと、複数のゲーム要素の第１のゲーム要素が第１のビューポートから見える場合に、第１のゲーム要素に対応する第１のゲーム要素リソースで、第１のビューポートに対して第１のゲーム要素のレンダリングを生成することと、第１のゲームクライアントに第１にゲーム要素のレンダリングを送信することとを含むことができる。
【０００４】
ある実施形態では、本開示は、また、実行されたときに、サーバシステムにオンラインゲーム経験をゲームクライアントへ提供させる命令を格納した例示的な機械可読の非一時的な媒体について記述する。例示的な機械可読の非一時的な媒体は、複数のゲーム要素のそれぞれをサーバシステムの対応する複数のゲーム要素リソースに割り当てることと、複数のゲームクライアントに対してゲーム世界を規定するゲーム世界の状態への更新に基づいて、レンダリングタスクが必要な可能性があることを決定することと、複数のゲームクライアントの第１のゲームクライアントに対するゲーム世界のビューの第１のビューポートを決定することと、複数のゲーム要素の第１のゲーム要素が第１のビューポートから見えるかどうかを決定することと、複数のゲーム要素の第１のゲーム要素が第１のビューポートから見える場合に、第１のゲーム要素に対応する第１のゲーム要素リソースで、第１のビューポートに対して第１のゲーム要素のレンダリングを生成することと、第１のゲーム要素のレンダリングを第１のゲームクライアントに送信することとによって、実行されたときに、サーバシステムにオンラインゲーム経験をゲームクライアントへ提供させる命令を格納することができる。
【０００５】
ある実施形態では、本開示は、また、例示的なシステムについて記述する。例示的なシステムは、プロセッサと、複数のゲーム要素のそれぞれをサーバシステムの対応する複数のゲーム要素リソースに割り当てることと、複数のゲームクライアントに対してゲーム世界を規定するゲーム世界の状態への更新に基づいて、レンダリングタスクが必要な可能性があることを決定することと、複数のゲームクライアントの第１のゲームクライアントに対するゲーム世界のビューの第１のビューポートを決定することと、複数のゲーム要素の第１のゲーム要素が第１のビューポートから見えるかどうかを決定することと、複数のゲーム要素の第１のゲーム要素が第１のビューポートから見える場合に、第１のゲーム要素に対応する第１のゲーム要素リソースで、第１のビューポートに対して第１のゲーム要素のレンダリングを生成することと、第１のゲーム要素のレンダリングを第１のゲームクライアントに送信することとによって、実行されたときに、サーバシステムにオンラインゲーム経験をゲームクライアントへ提供させる命令を格納した機械可読媒体とを含むことができる。
【０００６】
前述の概要は例を示すものであり、いかなる形においても限定することを意図するものではない。図面および以下の詳細な説明を参照することによって、上に記述した例として示す態様、実施形態、および機能に加えて、他の態様、実施形態、および機能が明白になるだろう。
【０００７】
主題については、明細書の結論部分に特に指摘して明確に請求する。本開示の前述および他の機能は、添付図面に関して、以下の記述および添付の請求項からより完全に明白になるだろう。これらの図は本開示に従って単に複数の実施形態を描写するものであり、したがって、その範囲の限定するものではないことを理解して、添付図面を使用して追加の特異性および詳細を用いて本開示について記述する。
【図面の簡単な説明】
【０００８】
【図１】オンラインゲーム経験を提供するための例示的なシステムを示すブロック図である。
【図２】オンラインゲーム経験を提供するための例示的な方法を示す流れ図である。
【図３】オンラインゲーム経験を提供するための例示的な実装を示すブロック図である。
【図４】例示的なコンピュータプログラム製品を示す図である。
【図５】本開示の少なくとも一部の実施形態に従ってすべて配置された、例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【０００９】
主題については、明細書の結論部分に特に指摘し明確に請求する。本開示の前述および他の機能は、添付図面に関して、以下の記述および添付の請求項からより完全に明白になるだろう。これらの図は本開示に従って単に複数の実施形態を描写するものであり、したがって、その範囲の限定するものではないことを理解して、添付図面を使用して追加の特異性および詳細を用いて本開示について記述する。
【００１０】
以下の記述では、請求される主題について完全な理解を促すために、特定の詳細と共に、様々な例について説明している。しかし、請求される主題は、本明細書に開示した特定の詳細の一部またはそれ以上がなくても実施できることを当業者は理解されるであろう。さらに、一部の状況では、よく知られている方法、手順、システム、コンポーネント、および／または回路については、請求される主題を不必要に不明瞭にすることを避けるために詳細には記述していない。
【００１１】
以下の詳細な説明では、その一部を形成する添付図面について言及する。図面では、文脈において指示されていない限り、類似の記号は、典型的には類似したコンポーネントを特定するものである。詳細な説明、図、および請求項に記述した例示的な実施形態は、限定を目的とするものではない。本明細書に提示された主題の精神または範囲から逸脱することなく、他の実施形態を利用し、他の変更を行うことができる。本明細書に一般的に記述し、図に示した本開示の態様は、多種多様の異なる構成において配置、交換、結合、および設計することができ、それらすべてが明示的に意図するものであり、本開示の一部を構成していることを容易に理解されるだろう。
【００１２】
本開示は、とりわけ、ゲームクライアントにオンラインゲーム経験を提供することに関係する方法、デバイス、システム、およびコンピュータ可読媒体について説明している。
【００１３】
一部の例では、オンラインゲーム経験を提供するために、オブジェクト指向のゲームサーバシステムを提供することができる。一部の例では、オンラインゲームは、マッシブリーマルチプレイヤーオンラインゲームでもよい。一部の例では、アーキテクチャは、サーバシステムでリソースまたはサービスにそれぞれ割り当てるためにゲーム要素を提供することができる。そのようなアーキテクチャでは、ゲーム要素のモデルは、リソースまたはサービスで本質的に局所化することができるため、サーバシステムでモデルデータをほとんど移動させないことが可能であるため、サーバシステムのリソースを効率的に利用することができる。一部の例では、ゲームサーバは、サービス指向でもよいため、割り当てられたリソースまたはサービスでゲームの動作を解決できるため、同様のサーバシステムのリソース節約を達成することができる。
【００１４】
レンダリングタスクが必要な可能性があるという決定に応じて、ゲーム入力、ゲームのビューポート情報、および／または他の情報は、全体的にまたは部分的に、サーバの複数のリソースに供給することができる。記述したように、たとえば、サーバのリソースは、動作の解決またはゲーム要素に割り当てるか、かつ／または専用に用いることができる。一部の例では、１つまたは複数の動作解決リソースは、受信されたゲーム入力に関係するゲームの動作を解決し、ゲーム世界の状態を更新することができる。これは、サーバシステムに維持することができる。ゲーム世界の状態の更新に応じて、割り当てられたゲーム要素リソースは、ゲームクライアントに送信されるゲーム要素をレンダリングすることができる。一部の例では、割り当てられたゲーム要素リソースでレンダリングされるゲーム要素は、効率的な並列のゲームサーバアーキテクチャを提供することができる。
【００１５】
一部の例では、ゲームクライアントのビューポートは、ビューポートから見ることができる可能性がある１つまたは複数のゲーム要素を決定するために評価することができる。一般的に、ビューポートは、ゲーム世界の表示領域を含むことができ、また、ビューポートは、任意の適切な形状を含むことができる。一部の例では、ビューポートは、３次元シーンの２次元投影を規定することができる。一部の例では、ビューポートは、ゲームクライアントに対する表示可能な領域を含むことができる。一部のゲーム要素は、複数のゲームクライアントのビューポートに含めることができることを理解されたい。一部の例では、ゲームクライアント依存しないレンダリングに基づいて各ビューポートに対して実行される最終的なゲームクライアントに依存するレンダリングを用いて、複数のビューポートで共通して、ゲームクライアントに依存しないレンダリングを使用することができるように、ゲーム要素をレンダリングすることができる。そのような手法およびアーキテクチャは、無駄が多い反復的なゲーム要素のレンダリングを本質的に減らすことができる。本明細書に記述したシステムアーキテクチャおよび方法は、映画品質のゲーム要素を持つマッシブリーマルチプレイヤーオンラインゲームを提供することができる。
【００１６】
図１は、本開示の少なくとも一部の実施形態に従って配置された、オンラインゲーム経験を提供するための例示的なシステム１００を示すブロック図である。図示するように、システム１００は、ゲーム世界の状態１２０、ゲームサーバリソース１３０、動作解決リソース１１２、１１４、１１６、ゲーム要素リソース１４２、１４４、１４６を含むことができる。また図示するように、システム１００は、１つまたは複数のゲームクライアント１０２、１０４、１０６と通信することができる。一般的に、システム１００は、特に以下に図４を用いて記述したように、本明細書に記述した任意の適切な方法で実装することができる。システム１００は、ゲームクライアント１０２、１０４、１０６にオンラインゲーム経験を提供するために、本明細書に記述した手法を実装することができる。
【００１７】
一般的に、ゲームまたはゲーム環境において、ゲーム要素はそれぞれ、システム１００の対応するゲーム要素リソースに割り当てることができる。割り当てられたゲーム要素は、任意の適切なゲーム要素を含むことができる。一部の例では、本明細書にさらに記述したように、ゲーム要素は、システム１００の割り当てられたゲーム要素リソース１４２、１４４、１４６を使用して、個々にレンダリングすることができる。一部の例では、割り当てられたゲーム要素は、ゲームキャラクタ、ゲームキャラクタの一部、ゲームオブジェクト、ゲームオブジェクトの一部、ゲームシーンの一部、またはゲームシーンなどでもよい。図示するように、ゲーム要素は、それぞれのゲーム要素リソース１４２、１４４、１４６に割り当てることができる。一般的に、ゲーム要素リソース１４２、１４４、１４６は、任意の適切なコンピューティング要素を含むことができる。一部の例では、ゲーム要素リソース１４２、１４４、１４６は、コンピュータ、複数のコンピュータ、サーバ、コンピュータリソース、バーチャルマシン、またはコンピュータクラスタなどを含むことができる。一部のゲーム要素は、専用のゲーム要素リソースに割り当てられない場合があることを理解されたい。一部の例では、そのようなゲーム要素は、ゲームクライアントまたはゲームサーバリソース１３０でレンダリングすることができる。
【００１８】
図示するように、一部の例では、ゲームの動作解決はそれぞれ、動作解決リソース１１２、１１４、１１６に割り当てることができる。一般的に、割り当てられたゲームの動作解決は、任意の適切なゲームの動作解決を含むことができる。一部の例では、本明細書にさらに記述したように、ゲームの動作解決は、システム１００の動作解決リソース１１２、１１４、１１６を使用して、個々に処理することができる。一部の例では、割り当てられたゲームの動作解決は、戦闘解決リソース、動き解決リソース、オブジェクト解決リソース、または衝突解決リソースなどを含むことができる。図示するように、ゲームの動作解決は、それぞれの動作解決リソース１１２、１１４、１１６に割り当てることができる。一般的に、動作解決リソース１１２、１１４、１１６は、任意の適切なコンピューティング要素を含むことができる。一部の例では、動作解決リソース１１２、１１４、１１６は、コンピュータ、複数のコンピュータ、サーバ、コンピュータリソース、バーチャルマシン、またはコンピュータクラスタなどを含むことができる。一部のゲームの動作解決は、専用の解決動作リソースに割り当てられない場合があることを理解されたい。一部の例では、動作解決は、ゲームクライアントまたはゲームサーバリソース１３０でレンダリングすることができる。
【００１９】
図示するように、一部の例では、システム１００は、ゲーム世界の状態１２０を含むことができる。一般的に、ゲーム世界の状態１２０は、提供されているオンラインゲームの状態を含むことができる。一部の例では、ゲーム世界の状態は、ゲームサーバで維持および更新することができる。一部の例では、ゲーム世界の状態１２０は、ゲームクライアント１０２、１０４、１０６に対してゲーム世界を規定することができる。一部の例では、ゲーム世界の状態は、ゲーム要素の場所、ゲーム要素の姿勢、またはゲームの照明などを含むことができる。ゲーム世界の状態１２０は、システム１００に任意の適切な方法で実装することができる。一部の例では、ゲーム世界の状態１２０は、データベースとして実装することができる。図示するように、動作解決リソース１１２、１１４、１１６、ゲーム要素リソース１４２、１４４、１４６、およびゲームサーバリソース１３０は、ゲーム世界の状態１２０に通信するように結合することができる。
【００２０】
図示するように、ゲームクライアント１０２、１０４、１０６は、システム１００に通信するように結合することができる。本明細書にさらに記述したように、ゲームクライアント１０２、１０４、１０６は、システム１００にゲーム入力、ビューポート情報、および／または他の情報を提供または送信することができる。一般的に、ゲーム入力は、任意の適切なゲーム入力を含むことができる。一部の例では、ゲーム入力は、ゲーム要素の動き、ゲーム要素の選択、ゲームリソースの選択、ゲーム選択肢の選択、ゲームの動きなどを含むことができる。一般的に、ビューポート情報は、任意の適切な情報を含むことができる。一部の例では、ビューポート情報は、ゲーム世界内の場所、ゲーム世界内のビュー、ゲーム世界の座標などを含むことができる。ゲーム入力、ビューポート、および他の情報は、任意の適切な通信手法を使用してサーバ１００と通信することができる。一部の例では、ゲーム入力は、オンライン通信を介してサーバ１００と通信することができる。
【００２１】
一般的に、サーバ１００で、ゲーム入力、ビューポート情報、および／または他の情報は、任意の適切なリソースまたはリソースに通信することができる。一部の例では、ゲーム入力は、ゲームサーバリソース１３０に通信することができる。一部の例では、ゲーム入力はゲームの動作を含むことができ、ゲーム入力のすべてまたは一部は、動作解決リソース１１２、１１４、１１６の１つまたは複数に通信することができる。一部の例では、ゲーム入力は、ゲーム要素への変更を含むことができ、ゲーム入力のすべてまたは一部は、ゲーム要素リソース１４２、１４４、１４６の１つまたは複数に通信することができる。一部の例では、ビューポート情報は、ゲーム要素リソース１４２、１４４、１４６の１つまたは複数に送信することができる。一部の例では、ゲーム入力は、必要なリソースにすべて提供することができる。一部の例では、ゲーム入力は、部分的に必要なリソースに提供できるため、リソースによって必要とされる情報だけを含むゲーム入力データまたは信号を送信することができる。そのような手法は、システム１００内のデータ転送を減らすことができる。
【００２２】
記述したように、一部の例では、ゲーム入力、ビューポート情報、および／または他の情報は、動作解決リソース１１２、１１４、１１６の１つまたは複数に通信することができる。一般的に、１つまたは複数の動作解決リソース１１２、１１４、１１６は、ゲーム入力に関係するゲームの動作を処理することができ、ゲーム世界の状態１２０は、処理されたゲームの動作に応じて更新することができる。記述したように、動作解決リソース１１２、１１４、１１６は、リソースに割り当てられたゲームの動作を個々に処理することができる。一部の例では、動作解決リソース１１２、１１４、１１６は、必要に応じて相互に通信することができる。ゲーム世界の状態が更新されると、結果としてゲーム世界のビューが変更または更新される場合があることを理解されたい。ここで、ゲーム世界のビューは、ゲーム世界の状態の視覚的な描写または表現の場合がある。そのため、更新されたゲーム世界のビューは、１つまたは複数のゲーム要素の更新されたレンダリングを必要とする場合がある。そのような更新されたレンダリングは、更新されたゲーム世界の状態１２０およびゲーム世界のビューへの対応する更新に応じて、ゲーム要素リソース１４２、１４４、１４６で実行することができる。
【００２３】
本明細書にさらに記述したように、一部の例では、ゲーム世界の状態への更新によって影響を受けたゲーム要素は、更新されたレンダリングを必要とする場合がある。たとえば、ゲームクライアント１０２、１０４、１０６の１つまたは複数が、ゲームクライアントのビューポートからゲーム要素またはゲーム要素の一部のビューを持っている可能性がある場合、ゲーム要素は、更新されたレンダリングを必要とする場合がある。ここでビューポートは、ゲームクライアントによって見えるゲーム世界のビュー全体の領域でもよい。そのような例では、更新されたレンダリングを必要とする可能性があるゲーム要素は、割り当てられたゲーム要素リソースでレンダリングすることができる。そのようなレンダリングは、ゲームクライアントに依存しないレンダリングおよび続くゲームクライアントに依存するレンダリングを含むことができる。一部の例では、ゲームクライアントに依存しないレンダリングは、ゲーム要素のビューに依存しない可能性がある１つまたは複数のレンダリングパスを含むことができる。一部の例では、ゲームクライアントに依存するレンダリングは、ゲーム要素のビューに依存する可能性がある１つまたは複数のレンダリングパスを含むことができ、ゲームクライアントに依存するレンダリングは、ゲームクライアントに依存しないレンダリングに基づいて行うことができる。
【００２４】
一部の例では、ゲーム要素は、ゲームクライアント１０２、１０４、１０６の２つ以上によって見ることができる。そのような例では、ゲーム要素のゲームクライアントに依存しないレンダリングは、ゲーム要素リソースで一度だけ行うことができる。一部の例では、ゲーム要素の各ゲームクライアントに依存するレンダリングは、同じゲームクライアントに依存しないレンダリングに基づいて行うことができる。そのような手法は、システム１００でかなりの処理リソースを節約するという長所を持つ場合がある。記述したように、ゲーム要素リソース１４２、１４４、１４６は、関係する割り当てられたゲーム要素のレンダリングを個々に処理することができる。一部の例では、ゲーム要素リソース１４２、１４４、１４６は、必要に応じて相互に通信することができる。
【００２５】
そのようなレンダリングおよび／または処理の手法は、ゲームクライアント１０２、１０４、１０６のビューポートに対して必要なすべてのゲーム要素をレンダリングするために、必要に応じてシステム１００で実行することができる。一般的に、レンダリングされたゲーム要素は、任意の適切な方法でゲームクライアント１０２、１０４、１０６に送信することができる。一部の例では、各レンダリングされたゲーム要素は、別々に送信することができる。一部の例では、各要素のゲームクライアント特定の部分は、ゲームクライアント１０２、１０４、１０６に別々に送信することができる。一部の例では、１つまたは複数のレンダリングされたゲーム要素を含むレンダリングされたシーンは、合成されたシーンとして送信することができる。一部の例では、複数のレンダリングされたゲーム要素は、レンダリングされたゲーム要素の再合成に関係するメタデータと共にゲームクライアントに送信することができる。一部の例では、メタデータは、トラッキング表示条件、ラインオブサイト計算、または境界ボックストラッキングなどを含むことができる。
【００２６】
記述したように、本明細書に記述した手法は、ゲームクライアント１０２、１０４、１０６にオンラインゲーム経験を提供するために使用することができる。一般的に、記述した手法は、任意の数のゲームクライアントにゲーム経験を提供することができる。さらに、システム１００は、任意の数のゲーム要素リソース１４２、１４４、１４６、および動作解決リソース１１２、１１４、１１６を含むことができる。記述したシステムおよび手法は並列化を提供できるため、システム１００内で転送されるデータの量を減らすことができる。一部の例では、本明細書に記述したゲーム要素は、映画品質でレンダリングすることができる。そのような品質は、たとえば、約１ＧＢを超えるメモリを占有する可能性があるゲームキャラクタを提供することができる。記述したシステムおよび手法は、不必要なレンダリングを排除するために、ゲームクライアントに依存しないレンダリングの再利用およびインテリジェントなレンダリング決定を用いて効率的なゲーム要素レンダリングを提供することができる。記述した手法は、特に図２に関して本明細書に詳細に記述している。
【００２７】
図２は、本開示の少なくとも一部の実施形態に従って配置された、オンラインゲーム経験を提供するための例示的な方法２００を示す流れ図である。一般的に、方法２００は、本明細書に記述したような任意の適切なデバイス、複数のデバイス、またはシステムによって実行することができる。一部の例では、方法２００は、サーバシステムによって実行することができる。一部の例では、方法２００は、データセンターまたはデータセンタークラスタによって実行することができる。方法２００は、処理ステップ、機能操作、イベント、および／または動作として記述できる様々な機能ブロックまたは動作を説明するものであり、これらは、ハードウェア、ソフトウェア、および／またはファームウェアによって実行することができる。様々な実装において、図２に示す機能ブロックの多数の代替案を実施することができる。たとえば、請求された主題の範囲から逸脱することなく、図２に図示していない干渉動作および／または図２に図示していない追加の動作を用いることができ、かつ／または図２に示す動作の一部を排除することができる。一部の例では、図２に示す動作は、並列処理手法を使用して運用することができる。方法２００は、ブロック２０５、２１０、２１５、２２０、２２５、２３０、２３５、２４０、２４５、２５０、２５５、および／または２６０の１つまたは複数によって示すような機能操作の１つまたは複数を含むことができる。方法２００のプロセスは、ブロック２０５で開始することができる。
【００２８】
ブロック２０５「対応するゲーム要素リソースにゲーム要素を割り当てる」で、多数のゲーム要素のそれぞれは、サーバシステムの対応する多数のゲーム要素リソースに割り当てることができる。一般的に、サーバシステムは、本明細書に記述したように任意の方法で実装することができる。記述したように、割り当てられたゲーム要素は、任意の適切なゲーム要素を含むことができる。一部の例では、割り当てられたゲーム要素は、ゲームキャラクタ、ゲームキャラクタの一部、ゲームオブジェクト、ゲームオブジェクトの一部、ゲームシーンの一部、またはゲームシーンなどでもよい。ゲーム要素は、ゲーム要素リソース１４２、１４４、１４６など、それぞれのゲーム要素リソースに割り当てることができる。一般的に、ゲーム要素リソースは、たとえば、コンピュータ、複数のコンピュータ、サーバ、コンピュータリソース、バーチャルマシン、またはコンピュータクラスタなど、任意の適切なコンピューティング要素を含むことができる。一部のゲーム要素は、専用のゲーム要素リソースに割り当てられない場合があることを理解されたい。方法２００のプロセスは、ブロック２１０で継続することができる。
【００２９】
ブロック２１０「レンダリングタスクが必要であることを決定する」では、サーバシステムは、レンダリングタスクが必要な可能性があると決定することができる。一般的に、サーバシステムは、任意の適切な方法でレンダリングタスクが必要であると決定することができる。一部の例では、サーバシステムは、ゲーム世界の状態への更新に基づいてレンダリングタスクが必要であると決定することができる。一部の例では、サーバシステムは、ゲーム変更に基づいてゲーム世界の状態への更新に基づいてレンダリングタスクが必要な可能性があると決定することができる。そのようなゲーム変更は、ゲームのルール、ゲームアルゴリズム、またはゲーム世界の状態に適用されるゲームからのゲーム物理学に基づいてもよい。一部の例では、サーバシステムは、タイムチックまたは時間経過など、時間の経過に基づいてレンダリングタスクが必要であると決定することができる。
【００３０】
一部の例では、サーバシステムはレンダリングタスクを決定することができ、サーバシステムは、ゲームクライアントから受信したゲーム入力に基づいてゲーム世界の状態へのゲーム変更に基づいて、レンダリングタスクが必要であると決定することができる。一般的に、サーバシステムは、任意の適切な方法でゲームクライアントから入力を受信することができる。一般的に、任意の数のゲームクライアントは、サーバシステムに通信するように結合することができ、任意のゲームクライアントは、サーバシステムにゲーム入力を送信することができる。一般的に、ゲーム入力は、たとえば、要求されたキャラクタの動き、要求されたキャラクタの動作、ゲームビューの変更、またはゲームトランザクションなど、任意の適切なゲーム入力の場合がある。一部の例では、多数のゲーム入力は、１つまたは複数ゲームクライアントから収集することができる。
【００３１】
本明細書に記述したように、一部の例では、１つのゲーム入力または多数のゲーム入力を受信することができる。一部の例では、１つまたは複数のゲーム入力は、ゲーム世界の状態を更新するために使用することができる。一般的に、ゲーム世界の状態は、ゲームサーバで維持および更新することができる。一部の例では、ゲーム世界の状態は、ゲーム要素の場所、ゲーム要素の姿勢、またはゲームの照明などを含むことができる。ゲーム世界の状態は、任意の適切な１つまたは複数の手法を使用して更新することができる。一部の例では、ゲーム世界の状態は、データベースとして維持することができ、ゲーム世界の更新は、データベース更新を含むことができる。一部の例では、ゲーム世界の状態の更新は、ゲーム入力に対する動作解決を決定することと、ゲーム世界の状態に動作解決を適用することとを含むことができる。一部の例では、ゲーム世界の状態の更新は、動作解決リソースまたはゲームサーバによって管理されているオブジェクトまたはイベントの動作を解決することを含むことができる。一部の例では、多数のゲームの動作解決のそれぞれは、サーバシステムの対応する多数の動作解決リソースに割り当てることができる。そのような例では、動作解決は、受信されたゲーム入力に関係する多数の動作解決リソースの動作解決リソースで決定することができる。一般的に、ゲームの動作解決は、任意の適切なゲームの動作解決を含むことができる。一部の例では、動作解決リソースは、戦闘解決リソース、動き解決リソース、オブジェクト解決リソース、または衝突解決リソースでもよい。方法２００のプロセスは、ブロック２１５で継続することができる。
【００３２】
ブロック２１５「ゲームクライアントのビューポートを決定する」では、ゲームクライアントのゲーム世界のビューのビューポートを決定することができる。一般的に、ビューポートは、任意の適切な手法を使用して決定することができる。一部の例では、ゲーム世界のビューのビューポートは、ゲームクライアントからビューポートパラメータを受信することによって決定することができる。一部の例では、ゲーム世界のビューのビューポートは、サーバシステムでビューポートパラメータを生成することによって決定することができる。一部の例では、ゲーム世界のビューはゲーム世界の状態の視覚的な描写または表現の場合がある。一部の例では、ビューポートは、ゲームクライアントによって見えるゲーム世界のビュー全体の領域の場合がある。記述したように、ビューポートはゲームクライアントに関係する場合がある。一部の例では、ビューポートは、第１のゲームクライアントに関係する第１のビューポートの場合がある。方法２００のプロセスは、ブロック２２０で継続することができる。
【００３３】
判定ブロック２２０「ゲーム要素は見えるか？」では、多数のゲーム要素のゲーム要素がビューポートから見えるかどうかを決定することができる。一般的に、任意の適切な手法を使用して、ゲーム要素がビューポートから見える可能性があるかどうかを決定することができる。一部の例では、ゲーム要素の１つまたは複数のポリゴンが、ビューポート内で見え、他のゲーム要素によって不明瞭にならない可能性があるかどうかを決定することによって、ゲーム要素がビューポートから見える可能性があるかどうかを決定することができる。ゲーム要素がビューポートから見えない場合、方法２００のプロセスは、ブロック２３５で継続することができる。ゲーム要素がビューポートから見える場合、方法２００のプロセスは、ブロック２２５で継続することができる。
【００３４】
ブロック２３５「ゲーム要素をレンダリングしない」では、ゲーム要素はレンダリングされない。一般的に、ゲーム要素がゲームクライアントのビューポートから見えなくてもよい場合、そのビューポートから見られるようにゲーム要素をレンダリングすることは、サーバリソースを浪費している可能性があることを理解されたい。ゲーム要素がレンダリングされなくてもよい場合、本明細書で下にさらに詳しく記述したように、方法２００のプロセスは、ブロック２５５で継続することができる。
【００３５】
判定ブロック２２５「ゲーム要素のレンダリングは必要か？」では、ゲーム要素をレンダリングする必要があるかどうかを決定することができる。一般的に、任意の適切な手法を使用して、ゲーム要素をレンダリングする必要があるかどうかを決定することができる。一部の例では、ゲーム要素は見える可能性があるが、要素をレンダリングする必要がない可能性があるようにビューの範囲にある可能性があるため（たとえば、ビューポートにおいて小さい場合がある）、ゲーム要素をレンダリングする必要がない場合がある。一部の例では、望まれるレンダリングは以前に完了されており、サーバシステムのメモリに保存（たとえばキャッシュ）されているため、ゲーム要素をレンダリングする必要がない場合がある。ゲーム要素をレンダリングする必要がない可能性がある場合、方法２００のプロセスは、ブロック２３５で継続することができる。ゲーム要素をレンダリングする必要がある場合、方法２００のプロセスは、ブロック２３０で継続することができる。
【００３６】
記述したように、ブロック２３５「ゲーム要素をレンダリングしない」では、本明細書で下にさらに詳しく記述したように、ゲーム要素はレンダリングされず、方法２００のプロセスはブロック２５５で継続することができる。
【００３７】
判定ブロック２３０「ゲームクライアントに依存しないレンダリングは必要か？」では、ゲーム要素のゲームクライアントに依存しないレンダリングが必要かどうかを決定することができる。一般的に、ゲームクライアントに依存しないレンダリングが完了しておらず、サーバシステムに保存されていない場合、ゲーム要素のゲームクライアントに依存しないレンダリングは必要な場合がある。本明細書に記述したように、方法２００のプロセスは、任意の数のゲームクライアントおよび／またはゲームクライアントのビューポートに対して完了することができ、ゲーム要素は見ることができ、１つまたは複数のゲームクライアントのビューポートに対してレンダリングすることを必要とする場合がある。一般的に、ゲーム要素の第１のレンダリングに対して、ゲーム要素またはゲーム要素の一部のゲームクライアントに依存しないレンダリングが必要な場合がある。一部の例では、そのレンダリングは、サーバシステムに保存することができ、ゲーム要素の続くレンダリングに対して（他のゲームクライアントのビューポートに対して）、ゲームクライアントに依存しないレンダリングは繰り返されなくてもよく、代わりに、保存されたゲームクライアントに依存しないレンダリングを使用することができる。そのような手法により、サーバシステムでかなりの処理リソースを節約することができる。ゲームクライアントに依存しないレンダリングをレンダリングする必要がない場合、方法２００のプロセスは、ブロック２４５で継続することができる。ゲームクライアントに依存しないレンダリングをレンダリングする必要がある場合、方法２００のプロセスは、ブロック２４０で継続することができる。
【００３８】
ブロック２４０「ゲームクライアントに依存しないレンダリングを実行する」では、ゲーム要素のゲームクライアントに依存しないレンダリングを実行することができる。一般的に、ゲームクライアントに依存しないレンダリングは、特に図１に関して本明細書に記述したように、ゲーム要素に割り当てられたサーバリソースで完了することができる。一般的に、ゲームクライアントに依存しないレンダリングは、ゲーム要素全体、またはゲーム要素の１つまたは複数のアクティブなポリゴンに対して実行できるため、アクティブなポリゴンは、更新されたレンダリングを必要とするゲーム要素レンダリングのポリゴンを含むことができる。一部の例では、アクティブなポリゴンは、ゲームクライアントビューポートから見えるポリゴンを含むことができる。一部の例では、更新されたレンダリングを必要としない可能性があるポリゴンは、非アクティブと考えられる可能性があり、レンダリングされない可能性がある。一般的に、ゲームクライアントに依存しないレンダリングは、任意の適切な手法を使用して実行することができる。一部の例では、ゲーム要素の１つまたは複数のアクティブなポリゴンのゲームクライアントに依存しないレンダリングを実行することができる。一部の例では、ゲームクライアントに依存しないレンダリングは、複数のレンダリングパスを含むことができる。記述したように、一部の例では、ゲーム要素全体またはゲーム要素の１つまたは複数のアクティブなポリゴンのゲームクライアントに依存しないレンダリングは、サーバシステムで将来の使用のためにキャッシュすることができる。
【００３９】
記述したように、ゲームクライアントに依存しないレンダリングは、１つまたは複数のレンダリングパスを含むことができる。一般的に、レンダリングパスは、任意の適切なレンダリング手法を含むことができる。一部の例では、レンダリングパスは、通常のレンダリング、拡散レンダリング、鏡面レンダリング、カラーレンダリング、シャドーレンダリング、アンビエントオクルージョン（ＡＯ）レンダリング、ジオメトリレンダリング、ディスプレースメントレンダリング、ワイヤーフレームレンダリング、アルティチュードレンダリング、Ｚ深度レンダリング、またはアルファレンダリング、などを含むことができる。一般的に、レンダリングパスの１つまたは複数を実行することができる。レンダリングパスが多ければゲーム要素レンダリングを改善できる可能性があるが、サーバシステムのリソースをより多く必要とする可能性があることを理解されたい。一部の例では、サーバシステムは、サーバリソース負荷、ゲーム要素の場所もしくは隆起（ｐｒｏｍｉｎｅｎｃｅ）、ゲームクライアントに依存しないレンダリングの使用数、またはゲーム要素の重要性などの１つまたは複数の要素に基づいて、レンダリングパスのタイプを実行するべきかどうかを決定することができる。方法２００のプロセスは、ブロック２４５で継続することができる。
【００４０】
ブロック２４５「ビューポートに依存するレンダリングを実行する」では、ゲーム要素全体またはゲーム要素の１つもしくは複数のアクティブなポリゴンのゲームクライアントに依存するレンダリングを実行することができる。一般的に、ゲームクライアントに依存するレンダリングは、特に図１に関して本明細書に記述したように、ゲーム要素に割り当てられたサーバリソースで完了することができる。一般的に、ゲームクライアントに依存するレンダリングはゲームクライアントに依存しないレンダリングおよびゲームクライアントのビューポートに基づいてもよい。一般的に、ゲームクライアントに依存するレンダリングは、任意の適切な手法を使用して実行することができる。一部の例では、ゲームクライアントに依存するレンダリングは、１つまたは複数のレンダリングパスを含むことができる。一般的に、レンダリングパスは、任意の適切なレンダリング手法を含むことができる。一部の例では、レンダリングパスは、通常のレンダリング、拡散レンダリング、鏡面レンダリング、カラーレンダリング、シャドーレンダリング、アンビエントオクルージョン（ＡＯ）レンダリング、ジオメトリレンダリング、ディスプレースメントレンダリング、ワイヤーフレームレンダリング、アルティチュードレンダリング、Ｚ深度レンダリング、またはアルファレンダリングなどを含むことができる。一般的に、レンダリングパスの１つまたは複数を実行することができる。ゲームクライアントに依存しないレンダリングに関して記述したように、レンダリングパスが多ければゲーム要素レンダリングを改善できる可能性があるが、サーバシステムのリソースをより多く必要とする可能性がある。一部の例では、サーバシステムは、サーバリソース負荷、ゲーム要素の場所もしくはプロミネンス、ゲームクライアントに依存しないレンダリングの使用数、またはゲーム要素の重要性などの１つまたは複数の要素に基づいて、レンダリングパスのタイプを実行するべきかどうかを決定することができる。
【００４１】
一般的に、方法２００のブロック２４０、２４５に関して記述した手法は、ゲームクライアントに対してゲーム要素のレンダリングを提供することができることを理解されたい。一般的に、ゲームクライアントにゲーム要素のレンダリングを提供するために、任意の手法を使用することができる。一部の例では、ゲームクライアントに依存しないレンダリングは実行されなくてもよく、ビューポートに依存するレンダリングだけを実行することができる。そのような手法により、実装を簡潔にすることができ、本明細書に記述したように並列化およびリソース割り当ての利点を提供することができる。方法２００のプロセスは、ブロック２５０で継続することができる。
【００４２】
ブロック２５０「送信する」では、ゲーム要素またはゲーム要素の一部のレンダリングをゲームクライアントに送信することができる。一般的に、ゲーム要素またはゲーム要素の一部は、任意の適切な通信手法を使用して、ゲームクライアントに送信することができる。一部の例では、レンダリングされたゲーム要素またはゲーム要素の一部は、ゲームクライアントだけに送信することができる。そのような例では、ゲームシーンの合成は、ゲームクライアントによって完了することができる。一部の例では、ゲームクライアントは、それらのビューポートで２つ以上のゲーム要素のレンダリングを必要とする場合がある。一部の例では、２つ以上のゲーム要素は、ゲームクライアントに別々に送信することができる。一部の例では、２つ以上のゲーム要素の再合成に関係するメタデータは、２つ以上のゲーム要素のレンダリングと共にゲームクライアントに送信することができる。
【００４３】
一部の例では、サーバは、合成されたゲームシーンまたは合成されたゲームシーンの一部をゲームクライアントに送信することができる。一部の例では、第１のゲーム要素レンダリングが完了すると、２つ以上のゲーム要素をレンダリングできるまで、第１のゲーム要素はゲームサーバに保存することができる。一部の例では、すべてのゲーム要素のレンダリングは、同時にまたは本質的に同時に完了することができる。そのような手法では、たとえば、本明細書に記述したようにマップリデュース手法を使用して、並列処理を提供することができる。ゲームクライアントのビューポートですべてのゲーム要素のレンダリングを完了すると、ゲームシーンを合成し、ゲームクライアントに送信することができる。記述したように、一般的に、各ゲーム要素は、ゲーム要素に割り当てられた対応するゲーム要素リソースでレンダリングすることができる。一部の例では、ゲームシーンの合成は、サーバシステムのゲーム全般ゲームサーバリソースで実行することができる。一部の例では、ゲームシーンの合成は、サーバシステムのゲーム専用合成リソースで実行することができる。方法２００のプロセスは、ブロック２５５で継続することができる。
【００４４】
判定ブロック２５５「他のゲーム要素？」では、ブロック２３０で他のゲーム要素を評価する必要がある可能性があるかどうかを決定することができる。一般的に、任意の適切な方法で他のゲーム要素を評価する必要がある可能性があるかどうかを決定することができる。一部の例では、ゲームクライアントのビューポートにある可能性があるゲーム要素のリストを維持することができ、ブロック２２０、２２５、２３０、２３５、２４０、２４５、および／または２５０に関係するプロセスを完了することができるため、各ゲーム要素にフラグを発行することができる。他のゲーム要素を評価する必要がある可能性がある場合、方法のプロセスは、ブロック２２０で継続することができる。他のゲーム要素を評価する必要がない可能性がある場合、そのプロセスは、判定ブロック２６０で継続することができる。
【００４５】
一部の例では、他のゲーム要素を評価する必要がある可能性がある場合、本明細書に記述したようなプロセスおよび手法は、ゲーム要素に対して本質的に繰り返すことができる。一部の例では、第１のゲーム要素を完了することができ、ブロック２２０に戻ったときに、第２のゲーム要素に対してプロセスを実行することができる。一部の例では、方法２００のプロセスは、第２のゲーム要素が第１のビューポートから見える可能性があるかどうかを決定することができ、第２のゲーム要素が第１のビューポートから見える可能性がある場合、第２のゲーム要素に対応するゲーム要素リソースで、ビューポートに対して第２のゲーム要素のレンダリングを生成し、ゲームクライアントに第２のゲーム要素のレンダリングを送信する。
【００４６】
一部の例では、他のゲーム要素の評価は、第１のゲーム要素と同時にまたは本質的に同時に実行できるため、並列処理手法を利用することができる。一般的に、方法２００は、任意の数のゲーム要素に対して同時にまたは本質的に同時に実行することができる。一部の例では、並列処理手法は、本明細書に記述したようにマップリデュースアーキテクチャを使用することができる。
【００４７】
判定ブロック２６０「他のゲームクライアント？」では、ブロック２１５で他のゲームクライアントのゲームクライアントビューポートを評価する必要がある可能性があるかどうかを決定することができる。一般的に、任意の適切な手法を使用して、他のゲームクライアントを評価する必要がある可能性があるかどうかを決定することができる。一部の例では、受信されるゲーム入力によって影響を受ける可能性があるゲームクライアントのリストを作成および／または維持することができ、ブロック２１５、２２０、２２５、２３０、２３５、２４０、２４５、および／または２５０に関係するプロセスを完了することができるため、各ゲームクライアントにフラグを発行することができる。他のゲームクライアントを評価する必要がある可能性がある場合、方法のプロセスは、ブロック２１５で継続することができる。他のゲーム要素を評価する必要がない可能性がある場合、プロセスは、ブロック２１０で継続することができる。
【００４８】
一部の例では、他のゲームクライアントを評価する必要がある可能性がある場合、本明細書に記述したようなプロセスおよび手法は、ゲームクライアントに対して本質的に繰り返すことができる。一部の例では、第１のゲームクライアントを完了することができ、ブロック２２５に戻ると、第２のゲームクライアントに対してプロセスを実行することができる。一部の例では、方法２００のプロセスは、第２のゲームクライアントに対してゲーム世界のビューの第２のビューポートを決定することができる。第２のゲームクライアントに対して、ゲーム要素が第２のゲームクライアントのビューポートから見える可能性があるかどうかを決定することができる。一部の例では、第１のゲームクライアントに関して以前にレンダリングされたゲーム要素が、また、第２のゲームクライアントのビューポートから見える可能性があることを理解されたい。一部の例では、第１のゲームクライアントに関して実行されたゲームクライアントに依存しないレンダリングが保存されている可能性がある。そのような例では、ゲーム要素のゲームクライアントに依存するレンダリングは、第２のビューポートおよび以前に実行および／または保存されたゲームクライアントに依存しないレンダリングに基づいて、第２のゲームクライアントのビューポートから生成することができる。そのような手法により、サーバシステムでかなりの処理リソースを節約することができる。
【００４９】
一部の例では、他のゲームクライアントの評価は、第１のゲーム要素と同時にまたは本質的に同時に実行できるため、並列処理手法を利用することができる。記述したように、一般的に、方法２００は、任意の数のビューポートに対して同時にまたは本質的に同時に実行することができる。一部の例では、並列処理手法は、本明細書に記述したようなマップリデュースアーキテクチャを使用することができる。そのような手法は、レンダリングタスクに必要なシステム内のデータ移動の量を減らすことによって、サーバシステムで本質的に効率的な処理を提供することができる。
【００５０】
他のゲームクライアントを評価する必要がない可能性がある場合、またはすべてのゲームクライアントが完了すると、方法２００のプロセスは、ブロック２１０で継続することができ、ここでサーバシステムは、レンダリングタスクの要求を待つことができる。一般的に、レンダリングタスクが必要な可能性があるため、方法２００のプロセスは何度も繰り返すことができる。
【００５１】
方法２００のプロセスは、１つまたは複数のゲームクライアントに関係するゲームビューを完了させるためにループ内に入れ子にされたビューポートに１つまたは複数のゲーム要素のためのレンダリングを完了されるためにループに関係する入れ子にされたループを含むことを理解されたい。そのような入れ子にされたループは、必要なレンダリングタスクの各決定に対して完了することができる。そのようなレンダリングタスクは、必要なレンダリングまたはフレームレンダリングなどを規定することができる。一部の例では、そのような入れ子にされたループは、サーバシステムで効率を提供するため活用することができる。たとえば、ゲーム要素のレンダリングループは、時間の経過を通じてアクティブなゲーム要素またはポリゴンを予測することができる。一部の例では、ゲームクライアントに依存しないレンダリングとして人気のあるゲーム要素の多くの姿勢を保存またはキャッシュできるため、それらのレンダリングは、再び繰り返す必要がない場合がある。
【００５２】
さらに、図１に関して、および本明細書の他の場所に記述した並列アーキテクチャは、サーバシステムで効率化のために活用することができる。一般的に、方法２００の図示するループおよび／または入れ子にされたループは、サーバシステムで本質的に並列に実行することができる。たとえば、ブロック２１５、２２０、２２５、２３０、２３５、２４０、２４５、２５０、２５５、および／または２６０は、並列処理手法を使用して、任意の数のビューポートおよび／またはゲームクライアントに対して、同時にまたは本質的に同時に実行することができる。一般的に、方法２００の任意の連続する記述は、直列または並列の処理手法のいずれかを使用して本質的に実装することができる。
【００５３】
図３は、本開示の少なくとも一部の実施形態に従って配置された、オンラインゲーム経験を提供するための例示的な実装３００を示すブロック図である。図示するように、実装３００は、ゲーム要素リソース１４２、１４４、１４６、動作解決リソース１１２、１１４、１１６、ゲームサーバリソース、および／または本明細書に記述したようなゲーム世界の状態１２０を含むことができるシステム１００を含むことができる。一般的に、システム１００は、本明細書に記述したようなゲームクライアント（明瞭さのために図示せず）に通信するように結合することができる。図示するように、実装３００は、システム１００にビューポート入力３１０および／または動作入力３２０を受信することを含むことができる。一般的に、ビューポート入力３１０および／または動作入力３２０は、ゲームクライアントの１つまたは複数から受信することができ、特に図１に関して本明細書に記述したように任意の適切な入力でもよい。一部の例では、ビューポート入力３１０は、１つまたは複数のゲームクライアントのビューポート情報を含むことができ、動作入力３２０は、１つまたは複数のゲームクライアントのアクション情報を含むことができる。
【００５４】
図３に示すように、実装３００は、収集／マップブロック３３０、３４０を含むことができる。一般的に、収集／マップブロック３３０は、ゲーム要素リソース１４２、１４４、１４６への情報を収集および／またはマッピングすることができ、収集／マップブロック３４０は、動作解決リソース１１２、１１４、１１６への情報を収集および／またはマッピングすることができる。一般的に、収集／マップブロック３３０、３４０は、任意の適切な要求に応じて、そのような収集および／またはマッピングを実行することができる。一部の例では、たとえば、要求は、ゲームサーバリソース１３０によって生成することができる。一般的に、収集／マップブロック３３０、３４０は、任意の適切な手法を使用して、情報を収集およびマッピングすることができる。一部の例では、収集／マップブロック３３０は、ゲーム要素リソース１４２、１４４、１４６にマッピングするために、ビューポート入力３１０を含むゲームクライアント（図示せず）から情報を収集することができる。一部の例では、収集／マップブロック３４０は、動作解決リソース１１２、１１４、１１６にマッピングするために、動作入力３２０を含むゲームクライアント（図示せず）から情報を収集することができる。一般的に、収集／マップブロック３３０、３４０は、システム１００で任意の適切な方法で実装することができる。一部の例では、収集／マップブロック３３０、３４０は、システム１００のゲームサーバリソースの一部または部分として実装することができる。一部の例では、収集／マップブロック３３０、３４０は、コンピュータ、多数のコンピュータ、サーバ、コンピュータリソース、バーチャルマシン、またはコンピュータクラスタなどとして実装することができる。
【００５５】
図３に示すように、実装３００は、結合／送信ブロック３５０を含むことができる。一般的に、結合／送信ブロック３５０は、情報を結合および／または送信することができる。一部の例では、結合／送信ブロック３５０は、たとえば、ゲーム要素リソース１４２、１４４、１４６からゲーム要素のレンダリングなどの情報を結合し、ゲームクライアント（図示せず）に情報を送信することができる。一般的に、結合／送信ブロック３５０は、任意の適切な要求に応じて、そのような結合および／または送信を実行することができる。一部の例では、たとえば、要求はゲームサーバリソース１３０によって生成することができる。一般的に、結合／送信ブロック３５０は、任意の適切な手法を使用して、情報を結合および／または送信することができる。一部の例では、結合／送信ブロック３５０は、ゲーム要素リソース１４２、１４４、１４６からゲーム要素のレンダリングを収集することができる。一部の例では、結合／送信ブロック３５０は、ゲームクライアント（図示せず）に送信する。本明細書に記述したように、一部の例では、ゲーム要素のレンダリングは、合成されたシーンとして送信することができ、他の実施形態では、ゲーム要素のレンダリングは、別に送信することができる。一般的に、結合／送信ブロック３５０は、システム１００で任意の適切な方法で実装することができる。一部の例では、結合／送信ブロック３５０は、ゲームサーバリソースの一部または部分として実装することができる。一部の例では、結合／送信ブロック３５０は、コンピュータ、多数のコンピュータ、サーバ、コンピュータリソース、バーチャルマシン、またはコンピュータクラスタなどとして実装することができる。
【００５６】
一般的に、収集／マップブロック３４０および結合／送信ブロック３５０は、動作解決およびゲーム要素のレンダリングのために並列処理を提供することができる。一部の例では、収集／マップブロック３４０および結合／送信ブロック３５０は、マップリデュース手法を使用して、並列処理を提供することができる。一部の例では、収集／マップブロック３４０および結合／送信ブロック３５０は、動作解決およびゲーム要素のレンダリングのために並列処理を個別に提供できるため、それらは同じタイミングおよび／または需要スケジュールになくてもよい。一部の例では、収集／マップブロック３４０および結合／送信ブロック３５０は、動作解決およびゲーム要素のレンダリングのために並列処理を提供できるため、それらは同じタイミングおよび／または需要スケジュールにあってもよい。
【００５７】
本明細書に記述したように、動作解決リソース１１２、１１４、１１６はそれぞれ、ゲームの動作に割り当てることができる。さらに、本明細書に記述したように、そのようなゲームの動作は、実装３００に示すような並列処理手法を使用して実行することができる。一部の例では、事前に定めたとき、１つまたは複数の動作入力３２０の受信時、ゲームのルール、ゲームアルゴリズム、またはゲーム世界の状態に適用されているゲームからのゲーム物理学などに基づいてゲームの変更が必要な可能性があるなどの決定時などに、ゲーム世界の状態１２０への更新が必要な可能性があるという指示を決定することができる。一部の例では、ゲーム世界の状態１２０への更新が必要な可能性があるという指示に応じて、収集／マップブロック３４０は、ゲームサーバリソース１３０から多数の収集動作入力３２０および他の情報を収集し（ある場合）、動作解決リソース１１２、１１４、１１６に入力および／または他の情報をマッピングすることができる。一部の例では、動作解決リソース１１２、１１４、１１６は、入力および／または他の情報に基づいてゲームの動作を解決し、ゲーム世界の状態１２０に更新を提供することができる。そのような収集／マップ手法およびゲーム世界の状態の更新は、必要に応じて実施することができる。
【００５８】
本明細書に記述したように、ゲーム要素リソース１４２、１４４、１４６はそれぞれ、ゲーム要素に割り当てることができる。さらに、本明細書に記述したように、レンダリングタスクが必要な可能性があることをシステム１００で決定することができる。レンダリングタスクが必要な可能性があるという決定は、たとえば、ゲーム世界の状態１２０への更新に基づいてもよい。特に図２に関して本明細書に記述したように、システム１００は、ゲーム要素が見える可能性があるかどうかを決定し、必要に応じてゲームクライアントに依存しないレンダリングを実行し、必要に応じてゲームクライアントに依存するレンダリングを実行し、かつ／または必要に応じて完了されたゲームクライアントに依存するレンダリングを送信することができる。記述したように、そのような手法は、実装３００に示すような並列処理を使用して実行することができる。一部の例では、レンダリングタスクが必要であると決定されたときに、収集／マップブロック３３０は、ゲームクライアント（図示せず）からもしくはシステム１００内で行われた決定から、またはそれらの組み合わせから、多数のビューポート入力３１０を収集することができる。収集されたビューポート情報および／または他の情報は、ゲーム要素リソース１４２、１４４、１４６にマッピングすることができる。一部の例では、ゲーム要素リソース１４２、１４４、１４６は、本明細書に記述したように１つまたは複数のゲームクライアントにゲーム要素のレンダリングを提供することができる。一部の例では、ゲームクライアントに依存するレンダリングなど、ゲームクライアントのレンダリングは、結合／送信ブロック３５０で結合することができる。記述したように、結合されたレンダリングは、合成されたシーン、または個別のレンダリングとしてゲームクライアント（図示せず）に送信することができる。そのような収集／マップ手法および結合／送信手法は、必要に応じて繰り返すことができる。一部の例では、レンダリングタスクが必要な可能性があるたびに、それらを繰り返すことができる。
【００５９】
一般的に、図１、図２、および／または図３に関して記述したシステムアーキテクチャおよび方法は、任意の適切なサーバおよび／またはコンピューティングシステムで実装することができる。例示的なシステムについて、図５に関して、および本明細書の他の場所に記述している。一部の例では、本明細書に記述したようなオンラインゲームシステム、データセンター、もしくデータクラスタ、または他のシステムは、複数の物理的なサイトまたは場所を通じて実装することができる。一部の例では、オンラインゲームシステムは、複数のゲームにオンラインゲーム経験を提供するように構成することができる。
【００６０】
図４は、本開示の少なくとも一部の実施形態に従って配置された、例示的なコンピュータプログラム製品４００を示している。コンピュータプログラム製品４００は、実行されたときに、本明細書に記述したプロセスおよび方法によるオンラインゲーム経験を機械へ提供させる複数の命令を格納した機械可読の非一時的な媒体を含むことができる。コンピュータプログラム製品４００は、信号伝達媒体４０２を含むことができる。信号伝達媒体４０２は、１つまたは複数のプロセッサによって実行されたときに、コンピューティングデバイスが、本明細書に記述した機能を提供できるように効果的にできる、１つまたは複数の機械可読の命令４０４を含むことができる。様々な例において、機械可読の命令の一部またはすべては、本明細書に記述したデバイスによって使用することができる。
【００６１】
一部の実装では、信号伝達媒体４０２は、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルバーサタイルディスク（ＤＶＤ）、デジタルテープ、メモリなど、コンピュータ可読媒体４０６を包含することができるが、それらに限定されない。一部の実装では、信号伝達媒体４０２は、メモリ、読み取り／書き込み（Ｒ／Ｗ）ＣＤ、Ｒ／Ｗ  ＤＶＤなど、記録可能な媒体４０８を包含することができるが、それらに限定されない。一部の実装では、信号伝達媒体４０２は、デジタルおよび／またはアナログの通信媒体（たとえば、光ファイバーケーブル、導波路、有線通信リンク、ワイヤレス通信リンクなど）など、通信媒体４１０を包含することができるが、それらに限定されない。一部の例では、信号伝達媒体４０２は、機械可読の非一時的な媒体を包含することができる。
【００６２】
図５は、本開示の少なくとも一部の実施形態に従って配置された、例示的なコンピューティングデバイス５００を示すブロック図である。様々な例において、コンピューティングデバイス５００は、本明細書に記述したようなオンラインゲーム経験を提供するように構成することができる。様々な例において、コンピューティングデバイス５００は、本明細書に記述するようなサーバシステムとしてオンラインゲーム経験を提供するように構成することができる。一例である基本構成５０１では、コンピューティングデバイス５００は、１つまたは複数のプロセッサ５１０およびシステムメモリ５２０を含むことができる。メモリバス５３０は、プロセッサ５１０とシステムメモリ５２０との間で通信するために使用することができる。
【００６３】
望まれる構成に依存して、プロセッサ５１０は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）、またはそれらの任意の組み合わせを含む任意のタイプでもよいが、これらに限定されない。プロセッサ５１０は、レベル１キャッシュ５１１およびレベル２キャッシュ５１２、プロセッサコア５１３、およびレジスタ５１４など、１つまたは複数レベルのキャッシュを含むことができる。プロセッサコア５１３は、論理演算ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはそれらの任意の組み合わせを含むことができる。メモリコントローラ５１５は、また、プロセッサ５１０と共に使用することができるか、または一部の実装では、メモリコントローラ５１５は、プロセッサ５１０の内部部品でもよい。
【００６４】
望まれる構成に依存して、システムメモリ５２０は、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）、またはそれらの任意の組み合わせを含む任意のタイプでもよいが、これらに限定されない。システムメモリ５２０は、オペレーティングシステム５２１、１つまたは複数のアプリケーション５２２、およびプログラムデータ５２４を含むことができる。アプリケーション５２２は、本明細書に記述した機能ブロック、動作、および／または操作を含む、本明細書に記述した機能、動作、および／または操作を実行するために配置できるオンラインゲームアプリケーション５２３を含むことができる。プログラムデータ５２４は、オンラインゲームアプリケーション５２３で使用するためにオンラインゲームデータ５２５を含むことができる。一部の例示実施形態では、アプリケーション５２２は、オペレーティングシステム５２１でプログラムデータ５２４を用いて動作するように配置することができる。この記述した基本構成は、破線５０１内のそれらのコンポーネントによって図５に示している。
【００６５】
コンピューティングデバイス５００は、基本構成５０１と任意の必要なデバイスおよびインターフェースとの間で通信を促進するために、追加的な特徴または機能、および追加的なインターフェースを備えることができる。たとえば、バス／インターフェースコントローラ５４０は、記憶装置インターフェースバス５４１を介して、基本構成５０１と１つまたは複数のデータ記憶装置５５０との間の通信を促進するために使用することができる。データ記憶装置５５０は、取外し式記憶装置５５１、非取外し式記憶装置５５２、またはそれらの組み合わせでもよい。取外し式記憶装置および非取外し式記憶装置の例を２、３挙げると、フレキシブルディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスク装置、コンパクトディスク（ＣＤ）ドライブまたはデジタルバーサタイルディスク（ＤＶＤ）ドライブなどの光ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、およびテープドライブなどが含まれる。例示的なコンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または他のデータなど、情報を格納するための任意の方法または技術で実装された揮発性および不揮発性、取外し式および非取外し式の媒体を含むことができる。
【００６６】
システムメモリ５２０、取外し式ストレージ５５１、および非取外し式ストレージ５５２は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶装置、または望まれる情報を格納するために使用でき、コンピューティングデバイス５００によってアクセスできる他の媒体を含むがそれらに限定されない。任意のそのようなコンピュータ記憶媒体は、デバイス５００の一部でもよい。
【００６７】
コンピューティングデバイス５００は、また、バス／インターフェースコントローラ５４０を介して、様々なインターフェースデバイス（たとえば出力インターフェース、周辺インターフェース、および通信インターフェース）から基本構成５０１への通信を促進するためのインターフェースバス５４２を含むことができる。例示的な出力インターフェース５６０は、グラフィック処理ユニット５６１および音声処理ユニット５６２を含むことができ、これは１つまたは複数のＡ／Ｖポート５６３を介してディスプレイまたはスピーカなど、様々な外部デバイスと通信するように構成することができる。例示的な周辺インターフェース５７０は、シリアルインターフェースコントローラ５７１またはパラレルインターフェースコントローラ５７２を含むことができ、これは１つまたは複数のＩ／Ｏポート５７３を介して入力デバイス（たとえばキーボード、マウス、ペン、音声入力機器、タッチ入力装置など）または他の周辺機器（たとえばプリンタ、スキャナなど）など外部デバイスと通信するように構成することができる。例示的な通信インターフェース５８０は、ネットワークコントローラ５８１を含み、これは１つまたは複数の通信ポート５８２を介してネットワーク通信を通じて１つまたは複数のその他のコンピューティングデバイス５８３との通信を促進するように配置することができる。通信接続は、通信媒体の一例である。通信メディアは、典型的には、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または搬送波もしくは他の移送機構など、変調されたデータ信号の他のデータによって具体化することができ、任意の情報配送媒体を含むことができる。「変調されたデータ信号」は、信号の情報を符号化する方法で設定または変更された、１つまたは複数のその特性を持つ信号でもよい。限定を目的とせずに例を挙げると、通信メディアは、有線ネットワークまたは直接的な有線接続などの有線媒体、ならびに音響、無線周波数（ＲＦ）、赤外線（ＩＲ）、および他の無線媒体などの無線媒体を含むことができる。本明細書に使用するコンピュータ可読媒体という用語は、記憶媒体および通信媒体の両方を含むことができる。
【００６８】
コンピューティングデバイス５００は、セル式電話、モバイル電話、タブレットデバイス、ラップトップ型コンピュータ、パーソナルデータアシスタント（ＰＤＡ）、パーソナルメディアプレイヤーデバイス、ワイヤレスウェブウォッチデバイス、個人用ヘッドセットデバイス、アプリケーション固有のデバイス、または上記の機能のいずれかを含むハイブリッドデバイスなど、スモールフォームファクタのポータブル（またはモバイル）電子デバイスの一部として実装することができる。コンピューティングデバイス５００は、また、ラップトップ型コンピュータおよび非ラップトップ型コンピュータの構成の両方を含むパーソナルコンピュータとして実装することができる。さらに、コンピューティングデバイス５００は、ワイヤレス基地局または他のワイヤレスのシステムもしくはデバイスの一部として実装することができる。
【００６９】
前述の詳細な記述の一部は、コンピュータメモリなど、コンピューティングシステムのメモリ内に格納されたデータビットまたは２値デジタル信号において操作のアルゴリズムまたは記号表現に関して提示される。これらのアルゴリズム的な記述または表現は、他の当業者に仕事の本質を伝達するために、データ処理分野における当業者によって使用される手法の例である。本明細書において、および一般的に、アルゴリズムは、望ましい結果につながる首尾一貫した連続する操作または類似の処理であると考えられる。この状況において、操作または処理は、物理量の物理的な操作を含む。典型的には、必須ではないが、そのような量は、格納、転送、結合、比較、あるいは操作することができる電気的または磁気的な信号の形をとることができる。主に一般的に使用する理由から、そのような信号は、ビット、データ、値、要素、記号、キャラクタ、条件、数、数字などと呼ぶことが便利なことがあると分かっている。しかし、これらおよび同様の用語はすべて、適切な物理量に関連しており、便利なラベルにすぎないことを理解されるだろう。特に明記しない限り、以下の説明から明白なように、本明細書の全体にわたって「処理（ｐｒｏｃｅｓｓｉｎｇ）」、「コンピューティング（ｃｏｍｐｕｔｉｎｇ）」、「計算（ｃａｌｃｕｌａｔｉｎｇ）」、「決定（ｄｅｔｅｒｍｉｎｉｎｇ）」などの用語を利用した議論は、メモリ、レジスタもしくは他の情報記憶装置、送信デバイス、またはコンピューティングデバイスのディスプレイデバイス内で物理電子的また磁気的な量として表されるデータを操作または変形するコンピューティングデバイスの動作またはプロセスを示すものであることを理解されたい。
【００７０】
前述の詳細な説明では、ブロック図、フローチャート、および／または例の使用によって、装置および／またはプロセスの様々な実施形態を説明してきた。そのようなブロック図、フローチャート、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および／または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組み合わせにより、個別におよび／または集合的に実装可能であることが、当業者には理解されるであろう。ある実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして（たとえば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（たとえば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、あるいは実質上それらの任意の組み合わせとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムを様々な形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フレキシブルディスク、ハードディスクドライブ（ＨＤＤ）、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）の通信タイプの媒体が含まれるが、それらには限定されない。
【００７１】
本明細書に記載された主題は、様々なコンポーネントをしばしば例示しており、これらのコンポーネントは、他の様々なコンポーネントに包含されるか、または他の様々なコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【００７２】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。様々な単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００７３】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む発明に限定する、ということを示唆していると解釈されるべきではない（たとえば、「ａ」および／または「ａｎ」は、通常、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、通常、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、通常、少なくとも２つの記載、または２つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、など���有するシステムを含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００７４】
様々な方法およびシステムを使用して、特定の例示的な手法について本明細書に記述および図示したが、請求された主題から逸脱することなく、様々な他の変更を行えること、および等価物で代用できることを当業者は理解されるだろう。さらに、本明細書に記述した主要な概念から逸脱することなく、請求された主題の教示に特定の状況を適応させるために、多数の変更を行うことができる。したがって、請求された主題は、開示された特定の例に限定されるものではなく、そのような請求された主題は、また、添付した請求項の範囲内にあるすべての実装、およびその等価物を含むことが意図される。
【図１】
0006550418.tif 000002
【図２】
0006550418.tif 000003
【図３】
0006550418.tif 000004
【図４】
0006550418.tif 000005
【図５】
0006550418.tif 000006