(57)【要約】  共有拡張現実環境を提供するためのシステム及び方法が提供される。特に、ピアツーピアプロトコルを使用してデータグラムの送信先を判定することにより、通信のレイテンシが短縮される。データグラムは、共有拡張現実環境内で発生するアクションを記述し、データグラムの処理は、通信ネットワークの中間ノード（セルタワーなど）とサーバの間で分割される。その結果、データグラムにピアツーピアのラベルが付けられている場合、中間ノードはクライアントデバイスのローカル状態に更新を提供し、それ以外の場合はサーバ上のマスター状態に更新を提供することができる。これにより、通信のレイテンシが短縮され、ロケーションベースの並行現実ゲームのユーザは、共有拡張現実環境でアクションがより迅速に発生することを確認できる。
2021524696.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
共有拡張現実環境に接続された送信クライアントデバイスからのデータグラムをセルタワーで受信するステップであって、前記データグラムは、前記共有拡張現実環境におけるアクションに関するデータと、前記データグラムがピアツーピアであるかどうかのインジケータとを含むステップと、
前記インジケータに基づいて前記データグラムがピアツーピアであるかどうかを判定するステップと、
前記データグラムがピアツーピアであるとの判定に応じて、前記共有拡張現実環境に接続された１つ又は複数の他のクライアントデバイスに前記データグラムを送信し、前記アクションを考慮して、前記１つ又は複数のターゲットクライアントデバイスにおける前記共有拡張現実環境のローカル状態を更新するステップと、
前記データグラムがピアツーピアでないとの判定に応じて、前記データグラムをサーバに送信し、前記アクションを考慮して、前記サーバにおける前記共有拡張現実環境のマスター状態を更新するステップと、
を含む、方法。
【請求項２】
前記インジケータが前記データグラムのヘッダ部分に含まれる、請求項１に記載の方法。
【請求項３】
前記データグラムがピアツーピアであるかどうかを判定するステップが、
前記インジケータに基づいて、前記データグラムをピアツーピアで送信する必要があることを判定するステップと、
前記データグラムのヘッダに基づいて特定のターゲットクライアントデバイスを識別するステップと、
前記特定のターゲットクライアントデバイスが前記セルタワーに現在接続されているかどうかを判定するステップと、
前記特定のクライアントデバイスが前記セルタワーに現在接続されていることに応じて、前記データグラムがピアツーピアであると判定するステップと、
を含む、請求項１に記載の方法。
【請求項４】
前記データグラムが、前記特定のターゲットクライアントデバイスが前記セルタワーに現在接続されていないとの判定に応じて、前記サーバに送信される、請求項３に記載の方法。
【請求項５】
前記共有拡張現実環境の前記ローカル状態が、１ミリ秒から２０ミリ秒の間のレイテンシで前記アクションを考慮して更新される、請求項１に記載の方法。
【請求項６】
前記データグラムを１つ又は複数の他のクライアントデバイスに送信するステップが、
前記セルタワーと前記共有拡張現実環境に現在接続されているクライアントデバイスを識別するステップと、
前記データグラムを前記識別されたクライアントデバイスに送信して、前記アクションを考慮して各クライアントデバイスの前記共有拡張現実環境のローカル状態を更新するステップと、
を含む請求項１に記載の方法。
【請求項７】
前記データグラムがピアツーピアであるとの判定に応じて、前記データグラムが前記サーバにも送信される、請求項１に記載の方法。
【請求項８】
前記データグラムがピアツーピアであるかどうかを判定するステップが、
前記インジケータを前記セルタワーによって維持されているインジケータのリストと比較するステップと、
前記インジケータがインジケータの前記リストに含まれることに応じて、前記データグラムがピアツーピアであると判定するステップと、
を含む、請求項１に記載の方法。
【請求項９】
前記インジケータは、ＡＲセッション、ユーザ、デバイス、又はゲームアカウントのうちの少なくとも１つを識別する、請求項８に記載の方法。
【請求項１０】
プロセッサによって実行可能な命令を含む非一時的なコンピュータ可読記憶媒体であって、前記命令が、
共有拡張現実環境に接続された送信クライアントデバイスからのデータグラムをセルタワーで受信するステップのための命令であって、前記データグラムは、前記共有拡張現実環境におけるアクションに関するデータと、前記データグラムがピアツーピアであるかどうかのインジケータとを含む命令と、
前記インジケータに基づいて前記データグラムがピアツーピアであるかどうかを判定するステップのための命令と、
前記データグラムがピアツーピアであるとの判定に応じて、前記共有拡張現実環境に接続された１つ又は複数の他のクライアントデバイスに前記データグラムを送信し、前記アクションを考慮して、前記１つ又は複数のターゲットクライアントデバイスにおける前記共有拡張現実環境のローカル状態を更新するステップのための命令と、
前記データグラムがピアツーピアでないとの判定に応じて、前記データグラムをサーバに送信し、前記アクションを考慮して、前記サーバにおける前記共有拡張現実環境のマスター状態を更新するステップのための命令と、
を含む、非一時的なコンピュータ可読記憶媒体。
【請求項１１】
前記インジケータが前記データグラムのヘッダ部分に含まれる、請求項１０に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１２】
前記データグラムがピアツーピアであるかどうかを判定するステップが、
前記インジケータに基づいて、前記データグラムをピアツーピアで送信する必要があることを判定するステップと、
前記データグラムのヘッダに基づいて特定のターゲットクライアントデバイスを識別するステップと、
前記特定のターゲットクライアントデバイスが前記セルタワーに現在接続されているかどうかを判定するステップと、
前記特定のクライアントデバイスが前記セルタワーに現在接続されていることに応じて、前記データグラムがピアツーピアであると判定するステップと、
を含む、請求項１０に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１３】
前記データグラムが、前記特定のターゲットクライアントデバイスが前記セルタワーに現在接続されていないとの判定に応じて、前記サーバに送信される、請求項１０に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記ターゲットクライアントデバイスにおける前記共有拡張現実環境の前記ローカル状態が、１ミリ秒から２０ミリ秒の間のレイテンシで前記アクションを考慮して更新される、請求項１０に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記データグラムを１つ又は複数の他のクライアントデバイスに送信するステップが、
前記セルタワーと前記共有拡張現実環境に現在接続されているクライアントデバイスを識別するステップと、
前記データグラムを前記識別されたクライアントデバイスに送信して、前記アクションを考慮して各クライアントデバイスの前記共有拡張現実環境のローカル状態を更新するステップと、
を含む、請求項１０に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記データグラムがピアツーピアであるとの判定に応じて、前記データグラムが前記サーバにも送信される、請求項１０に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記データグラムがピアツーピアであるかどうかを判定するステップが、
前記インジケータを前記セルタワーによって維持されているインジケータのリストと比較するステップと、
前記インジケータがインジケータの前記リストに含まれることに応じて、前記データグラムがピアツーピアであると判定するステップと、を含む、請求項１０に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記インジケータは、ＡＲセッション、ユーザ、デバイス、又はゲームアカウントのうちの少なくとも１つを識別する、請求項１０に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１９】
セルタワーであって、
前記セルタワーに接続されているクライアントデバイスのリストを記憶するローカルデータストアと、
ルーティングモジュールであって、
ターゲットクライアントデバイスにアドレス指定されたデータグラムを受信する動作であって、前記データグラムが共有拡張現実環境におけるアクションに関するデータを含むステップと、
前記ターゲットクライアントデバイスが前記リストにあるかどうかを判定するステップと、
前記ターゲットクライアントデバイスが前記リストにあることに応じて、前記データグラムがピアツーピアであると判定するステップと、
前記データグラムがピアツーピアであるとの判定に応じて、前記データグラムを前記ターゲットクライアントデバイスに送信し、前記アクションを考慮して、前記ターゲットクライアントデバイスにおける前記共有拡張現実環境のローカル状態を更新するステップと、
前記データグラムがピアツーピアでないとの判定に応じて、前記データグラムをサーバに送信し、前記アクションを考慮して、前記サーバにおける前記共有拡張現実環境のマスター状態を更新するステップと、
を含む動作を実行するように構成されたルーティングモジュールと、
を備える、セルタワー。
【請求項２０】
前記データグラムが、前記データグラムのヘッダ部分に、前記データグラムがピアツーピアであるかどうかのインジケータを更に含み、前記データグラムがピアツーピアであるとの判定が、前記インジケータに更に応答する、請求項１９に記載のセルタワー。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータネットワークプロトコル、特に、互いに物理的に近接しているデバイス間で低レイテンシ無線通信を提供するためのプロトコルに関する。
【背景技術】
【０００２】
コンピュータネットワークは、インターネットといった、データを交換する相互接続されたコンピューティングデバイスのセットである。ユーザデータグラムプロトコル（User Datagram Protocol：ＵＤＰ）などの通信プロトコルは、コンピュータネットワークを使用してデータを交換するためのルールのシステムを定義する。ＵＤＰは、データグラムの配信、順序付け、又は非重複を保証しないコネクションレス型通信モデルに準拠する。データグラムは通信の基本単位であり、ヘッダとペイロードを含む。ヘッダは、送信元ポート、宛先ポート、データグラムの長さ、データグラムのチェックサムなど、データグラムの側面を指定するメタデータである。ペイロードは、データグラムによって通信されるデータである。ＵＤＰを使用して通信するコンピューティングデバイスは、コンピュータネットワークを介して相互にデータグラムを送信する。
【０００３】
ＵＤＰなどのコネクションレス型通信プロトコルは、一般に、データを送信する前にコンピューティングデバイス間の接続を確立する伝送制御プロトコル（Transmission Control Protocol：ＴＣＰ）などのコネクション型通信プロトコルよりもオーバーヘッドとレイテンシが低くなる。ただし、既存のコネクションレス型通信プロトコルは、既存の技術で対応されているよりも短いレイテンシを必要とするデータ転送には不十分である。例えば、６０フレーム／秒（Frames Per Second：ＦＰＳ）でストリーミングする拡張現実（Augmented Reality：ＡＲ）環境では、現在の手法で提供されるよりも１桁低いレイテンシが必要になる場合がある。このようなＡＲ環境では、フレームの間隔は約１６ミリ秒であるが、現在のネットワークプロトコルでは、通常、約１００ミリ秒（又はそれ以上）のレイテンシが発生する。
【０００４】
そのため、既存の手法では、ユーザはＡＲ環境の現在の状態と相互作用せず、少し前の状態のみと相互作用する。クライアントを使用してコンピュータネットワークを介してＡＲ環境と相互作用するユーザは、ＡＲ位置データの古い状態と相互作用する場合がある。例えば、ＡＲゲームにおいて、プレーヤーがＡＲオブジェクトを古い場所（例えば、オブジェクトが１００ミリ秒前にあった場所）において認識する一方で、実際のＡＲ位置データは、そのオブジェクトについて新しい場所となっている（例えば、ＡＲオブジェクトが別のプレーヤーによって移動される）こともある。クライアントと、ＡＲゲームをホスト又は調整するサーバとの間の通信におけるこのレイテンシは、苛立たしいユーザエクスペリエンスにつながり得る。この問題は、複数のユーザがＡＲゲームに参加している場合に特に深刻になり得る。これは、レイテンシによって、あるプレーヤーのアクションが他のプレーヤーのＡＲ環境のビューに表示されるまでに顕著な遅延が発生する可能性があるためである。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
拡張現実（Augmented Reality：ＡＲ）システムは、コンピュータで生成されたコンテンツで現実世界のビューを補完する。ＡＲを並行現実ゲームに組み込むことで、現実世界と仮想世界の統合を改善することができる。ＡＲは、プレーヤーが相互作用する共有ゲーム体験に参加する機会を提供することにより、プレーヤー間のインタラクティブ性を高めることもできる。例えば、戦車バトルゲームでは、プレーヤーは仮想戦車を現実世界の場所でナビゲートして、互いの戦車を破壊しようとする場合がある。戦車の動きは、現実世界の地理によって制限される場合がある（例えば、戦車は川をゆっくりと移動する、道路をより速く移動する、壁を通過できないなど）。
【０００６】
既存のＡＲセッション技術では、サーバがマスター状態を維持し、クライアントデバイスでの環境のローカル状態をネットワーク（例えば、インターネット）を介してマスター状態に定期的に同期する。ただし、デバイスのローカル状態の同期にはかなりの時間がかかる場合があり（例えば、数百ミリ秒程度）、ゲームエクスペリエンスに悪影響を及ぼし得る。プレーヤーは、事実上、現在のゲーム状態ではなく、過去のゲーム状態と相互作用する。この問題は、複数のユーザがＡＲゲームに参加している場合に特に深刻になり得る。これは、レイテンシによって、あるプレーヤーのアクションが他のプレーヤーのビューに表示されるまでに顕著な遅延が発生するためである。例えば、１人のプレーヤーが世界でＡＲオブジェクトを移動させた場合、他のプレーヤーは１００ミリ秒（又はそれ以上）後にならないと移動したことを認識できない可能性がある。これは人間が知覚できる遅延である。そのため、別のプレーヤーが以前の場所にあるオブジェクトと相互作用しようとして、ゲームがレイテンシを修正した場合に（例えば、プレーヤーが要求したアクションの実行を拒否するか、最初にアクションを実行し、次にプレーヤーのクライアントデバイスがサーバと同期したときにそのアクションを取り消すことによって）イライラさせられる可能性がある。
【０００７】
この問題やその他の問題は、中間ノード（セルタワーなど）でデータグラムを処理することで対処できる。ゲームサーバを介して更新をルーティングせずに、同じエッジノードに接続されているクライアント間でゲームの更新を交換するピアツーピア（Ｐ２Ｐ）プロトコルを使用すると、レイテンシを短縮できる。例えば、これらのアプローチを使用すると、レイテンシを最大１０ミリ秒以下に短縮できる。更に、これは、より多くのプレーヤーが共通のＡＲエクスペリエンスを共有することを可能にする帯域幅の利用可能性を増加させる。
【課題を解決するための手段】
【０００８】
一実施形態では、共有ＡＲ環境のゲーム状態を更新するための方法は、中間ノードで、ターゲットクライアントデバイスにアドレス指定されたデータグラムを受信することを含む。データグラムには、共有拡張現実環境で発生したアクションに関するデータと、データグラムがＰ２Ｐであるかどうかのインジケータを含む。セルタワーなどの中間ノードは、インジケータに基づいてデータグラムがピアツーピアであるかどうかを判定する。データグラムがＰ２Ｐの場合、中間ノードはデータグラムをターゲットクライアントデバイスに送信して、発生したアクションを考慮して、ターゲットクライアントデバイスの共有ＡＲ環境のローカル状態を更新する。あるいは、データグラムがＰ２Ｐでない場合、中間ノードはデータグラムをサーバに送信して、発生したアクションを考慮して、サーバの共有ＡＲ環境のマスター状態を更新する。更なる実施形態では、中間ノードは、ターゲットクライアントデバイスに送信するデータグラムの一部又はすべてをサーバに更に送信して、マスター共有ＡＲ状態を更新する。
【図面の簡単な説明】
【０００９】
【図１】図１は、一実施形態による、開示されたプロトコルを使用することができるコンピュータネットワークを例示する。
【００１０】
【図２】図２は、一実施形態による、開示されたプロトコルに従って構成されたデータグラムを例示する。
【００１１】
【図３】図３は、一実施形態による、図１のセルタワーを例示するブロック図である。
【００１２】
【図４】図４は、一実施形態による、低レイテンシデータグラム応答性コンピュータネットワークプロトコルを使用するためのプロセスを例示する。
【００１３】
【図５】図５は、一実施形態による、図１に示されるコンピュータネットワーク内での使用に適した例示的なコンピュータを示すハイレベルブロック図である。
【発明を実施するための形態】
【００１４】
図及び以下の説明は、例示のみを目的として、特定の実施形態を説明している。当業者は、以下の説明から、記載された原理から逸脱することなく、構造及び方法の代替の実施形態を使用できることを容易に認識するであろう。ここで、いくつかの実施形態を参照し、その例を添付の図に示す。実行可能な限り、同様の又は類似する機能を示すために、同様の又は類似する参照番号が図で使用されている。共通の数字とそれに続く異なる文字を複数の要素が共有する場合、それらの要素は同様又は同一である。数字のみは、そのような要素の任意の１つ又は任意の組み合わせを指す。
【００１５】
＜コンピューティング環境の例＞
本明細書に開示されるように、データグラム応答性コンピュータネットワークプロトコル（「開示されたプロトコル」）は、コンピュータネットワークレイテンシを低下させ得る（例えば、一実施形態では、レイテンシは約１０ミリ秒程度である）。図１は、一実施形態による、開示されたプロトコルを使用して通信するコンピュータネットワークを例示する。この図は、明確にするために、ブロック図を使用した簡略化された例を示している。コンピュータネットワークは、２つのクライアント１１０、サーバ１２０、及びセルタワー１３０を含む。他の実施形態では、コンピュータネットワークは、より少ない構成要素、追加の構成要素、又は他の構成要素を含んでいてもよい。例えば、コンピュータネットワークは、追加のクライアント１１０、サーバ１２０、セルタワー１３０、又は他のネットワークノードなどを含み得る。例えば、コンピュータネットワークは、セルタワー１３０ではなく、ネットワークノードとして１つ又は複数のＷｉＦｉルータを使用するローカルエリアネットワーク（ＬＡＮ）であってもよい。
【００１６】
クライアント１１０は、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、スマートフォンなどのようなコンピューティングデバイスである。クライアント１１０は、開示されたプロトコルを使用して通信することができる。サーバ１２０は、同様に、開示されたプロトコルを介して通信することができるコンピューティングデバイスである。クライアント１１０は、開示されたプロトコルを使用してサーバ１２０と通信することができ、又はいくつかの実施形態では、異なるプロトコルを使用することができる。例えば、クライアント１１０は、開示されたプロトコルを使用して互いに通信することができるが、ＴＣＰを使用してサーバ１２０と通信することができる。一実施形態では、各クライアント１１０はローカルＡＲモジュールを含み、サーバ１２０はマスターＡＲモジュールを含む。各ローカルＡＲモジュールは、ＡＲデータを、他のクライアント１１０上のローカルＡＲモジュール及び／又はサーバ１２０上のマスターＡＲモジュールに通信する。
【００１７】
セルタワー１３０は、クライアント１１０などのエンドノードの中間ノードとして機能するネットワークノードである。上記のように、他の実施形態では、コンピュータネットワークは、セルタワー１３０に代えて、又はそれに加えて、同様の通信を可能にする、他のネットワークノードを含み得る。セルタワー１３０は、メッセージが通信され得る範囲を拡大する。例えば、クライアント１１０Ａは、セルタワー１３０なしではクライアント１１０Ｂと通信することができない場合は、クライアント１１０Ｂへメッセージを続けて送信するセルタワー１３０にメッセージを送信することができる。
【００１８】
一実施形態では、クライアント１１０の通信は、サーバ１２０又はピアツーピア（Ｐ２Ｐ）を介してルーティングされ得る。サーバ１２０を介してルーティングされた通信は、第１のクライアント１１０Ａからセルタワー１３０を介してサーバ１２０に進み、次にセルタワー１３０を通って第２のクライアント１１０Ｂに戻ることができる。対照的に、Ｐ２Ｐ通信は、第１のクライアント１１０Ａからセルタワー１３０に進み、次に第２のクライアント１２０Ｂに直接進むことができる。場合によっては、通信が信号ブースタなどの他の中間デバイスを通過する可能性があることに留意されたい。本明細書で使用されるように、通信は、サーバ１２０を通過せずにターゲットクライアント１１０Ｂにルーティングされる場合、Ｐ２Ｐと見なされる。例えば、ターゲットクライアント１１０Ｂが送信クライアント１１０Ａと同じセルタワー１３０に接続され、そうでない場合はサーバ１２０を介してルーティングされる場合、メッセージ（例えば、データグラム）はＰ２Ｐで送信され得る。別の実施形態では、クライアント１１０は、完全にＰ２Ｐを使用して通信する。更に、いくつかの実施形態では、ＵＤＰホールパンチングを使用して、２つ以上のクライアント１１０間の接続を確立することができる。
【００１９】
一実施形態では、クライアント１１０は、（例えば、サーバでホストされ、ＴＣＰを介して通信される）調整サービスを使用して、ＩＰアドレスを同期させる。次に、クライアント１１０は、公開されているＩＰアドレス又はローカルエリアネットワーク（ＬＡＮ）を使用して、（例えば、ＵＤＰを介して）通信することができる。例えば、第１のクライアント１１０Ａは、ローカルＡＲ共有環境に参加するために、ＴＣＰを介して調整サービスに要求を送信することができる。調整サービスは、（例えば、同じセルタワー１３０を介して）ＡＲ環境に接続された第２のクライアント１１０ＢのＩＰアドレスを第１のクライアント１１０Ａに提供することができる。調整サービスはまた、第１のクライアントのＩＰアドレスを第２のクライアント１１０Ｂに提供することができ、又は第１のクライアント１１０Ａは、（調整サービスによって提供されるように）第２のクライアントのＩＰアドレスを使用してそれを直接提供することができる。いくつかの実施形態では、調整サービスは、第２のクライアントのＩＰアドレスが提供される前に、（例えば、ユーザ確認を要求するか、又は承認されたクライアント１１０のリストをチェックして第２のクライアント１１０Ｂに接続することによって）第２のクライアント１１０Ｂに第１のクライアント１１０Ａを承認するように促すことができる。
【００２０】
図２は、一実施形態による、開示されたプロトコルに従って構成されたデータグラム２００を例示する。データグラム２００は、ペイロード２０２を含む。これは、上記のように、データグラム２００の内容である。データグラム２００は、ヘッダ２０４を更に含み、その一部は、インジケータとしても知られるＰ２Ｐフラグ２０６である。ヘッダは、ＵＤＰヘッダにＰ２Ｐフラグ２０６を加えたものと同様であってもよいし、Ｐ２Ｐフラグに加えて、異なる又は追加のメタデータを含んでいてもよい。Ｐ２Ｐフラグは、データグラム２００がサーバ１２０に送信されるか又は別のクライアント１１０にＰ２Ｐで送信されるかを判定するために使用される。他の実施形態では、Ｐ２Ｐフラグ２０６は、同様の機能を提供するヘッダ内の１つ又は複数の他のインジケータで置き換えられる。
【００２１】
セルタワー１３０は、クライアント１１０Ａからデータグラム２００を受信し（３０５）、Ｐ２Ｐフラグ２０６に基づいてデータグラムをルーティングする方法を判定する。一実施形態では、Ｐ２Ｐフラグ２０６は、データグラム２００が可能であればＰ２Ｐで送信されるべきであることを示すために、送信クライアント１１０Ａによって設定され得る。セルタワー１３０は、データグラム２００を分析し、そのデータグラム２００がＰ２Ｐで送信されるべきであることをＰ２Ｐフラグ２０６が示すと仮定して、ターゲットクライアント１１０Ｂがセルタワーに現在接続されているかどうかを、（例えば、ターゲットクライアント１１０Ｂの識別子を現在接続されているクライアントのリストと比較することによって）判定する。ターゲットクライアント１１０Ｂがセルタワー１３０に接続されている場合、データグラム２００は、サーバ１２０を経由せずにそれに送信される。対照的に、ターゲットクライアント１１０Ｂがセルタワー１３０に接続されていない場合、データグラム２００は、サーバ１２０に送信されて、ターゲットクライアント１１０Ｂに（例えば、現在接続されている第２のセルタワー１３０を介して）送信される。例えば、サーバ１２０は、どのセルタワー１３０がどのクライアントデバイス１１０に現在接続されている又は少し前に接続されたかのデータベース又は他のリストを維持することができる。いくつかの実施形態では、セルタワー１３０は、データグラム２００をターゲットクライアント１１０Ｂ及びサーバ１２０の両方に送信することができる。
【００２２】
別の実施形態では、Ｐ２Ｐフラグ２０６は、ＡＲセッション、ユーザ、デバイス、ゲームアカウントなどの識別子であってもよい。セルタワー１３０は、データグラム２００がＰ２Ｐ（または可能であればＰ２Ｐ）で送信されるべきであるＰ２Ｐフラグ２０６のリストを維持する。セルタワー１３０は、データグラム２００を分析して（３１０）、それがサーバ１２０又はＰ２Ｐのどちらを介して送信されるべきかを判定する。Ｐ２Ｐフラグ２０６がリスト上の識別子を含む場合、データグラム２００はＰ２Ｐメッセージであり、セルタワー１３０はデータグラム２００をターゲットクライアント１１０に送信する（３１５）。例えば、データグラム２００のヘッダ２０４が、宛先ポートがクライアント１１０Ｂのポートであることを示している場合、セルタワー１３０は、データグラム２００をクライアント１１０Ｂに送信する（３１５）。対照的に、データグラム２００がＰ２ＰメッセージではないことをＰ２Ｐフラグ２０６が示している場合、セルタワー１３０は、Ｐ２Ｐフラグ２０６をサーバ１２０に送信する（３２０）。あるいは、リストは、Ｐ２Ｐで送信されないメッセージのＰ２Ｐフラグ２０６を示し得る。この場合、Ｐ２Ｐフラグ２０６がリストにない場合のデフォルトの動作は、対応するデータグラムＰ２Ｐをターゲットクライアント（例えば、クライアント１１０Ｂ）に送信することである。
【００２３】
＜中間ノードの例＞
図３は、中間ノードの一実施形態を例示するブロック図である。示される実施形態では、中間ノードは、ルーティングモジュール３１０、データ取り込みモジュール３２０、ＡＲ環境モジュール３３０、マップ処理モジュール３４０、権限チェックモジュール３５０、及びローカルデータストア３６０を含むセルタワー１３０である。セルタワー１３０は、データを交換するためにサーバ１２０及びクライアント１１０への接続を確立するための、ハードウェア及びファームウェア又はソフトウェア（図示せず）を更に含む。例えば、セルタワー１３０は、光ファイバー又は他の有線インターネット接続を介してサーバ１２０に接続することができ、無線接続（例えば、４Ｇ又は５Ｇ）を使用してクライアント１１０に接続することができる。他の実施形態では、セルタワー１３０は、異なる又は追加の構成要素を含んでいてもよい。更に、機能は、説明されているのとは異なる方法で、要素間で分散されてもよい。
【００２４】
ルーティングモジュール３１０は、データパケットを受信し、それらのパケットを１つ又は複数の受信者デバイスに送信する。一実施形態では、ルーティングモジュール３１０は、データグラム２００をクライアント１１０から受信し、図４を参照して説明した方法を使用して、受信したデータグラムの送信先を判定する。ルーティングモジュール３１０はまた、特定のクライアント１１０又はセルタワーに接続されているすべてのクライアントのいずれかにアドレス指定されたサーバからデータパケットを受信することができる。ルーティングモジュール３１０は、データパケットを、それらがアドレス指定されるクライアント１１０に転送する。
【００２５】
データ取り込みモジュール３２０は、セルタワー１３０が接続されたクライアント１１０を介してプレーヤーに共有ＡＲエクスペリエンスを提供するために使用する１つ又は複数の送信元からデータを受信する。一実施形態では、データ取り込みモジュール３２０は、（例えば、サードパーティサービスから）現実世界の状態に関するリアルタイム又は実質的にリアルタイムの情報を受信する。例えば、データ取り込みモジュール３２０は、セルタワー周辺の地理的領域の気象状況を示す気象サービスから気象データを定期的に（例えば、毎時）受信することができる。別の例として、データ取り込みモジュール３２０は、公園、美術館、又は他の公共スペースの営業時間を検索することができる。更に別の例として、データ取り込みモジュール３２０は、セルタワー１３０周辺の地理的領域内の道路を走行している車両の数を示す交通データを受信することができる。現実世界の状態に関するそのような情報は、仮想世界と現実世界との間の相乗効果を改善するために使用され得る。
【００２６】
ＡＲ環境モジュール３３０は、セルタワー１３０周辺の地理的領域にいるプレーヤーが共有ＡＲエクスペリエンスに参加することができるＡＲ環境を管理する。一実施形態では、クライアント１１０は、ＡＲゲームを実行している間にセルタワー１３０に接続し、ＡＲ環境モジュール３３０は、そのクライアントをゲームのＡＲ環境に接続する。セルタワー１３０に接続するゲームのすべてのプレーヤーは、単一のＡＲ環境を共有することができ、又はプレーヤーは、複数のＡＲ環境に分割され得る。例えば、特定のＡＲ環境には最大数（例えば、１０、２０、１００など）のプレーヤーがいる場合がある。複数のＡＲ環境が存在する場合、新たに接続するクライアント１１０は、ランダムにセッションに配置されるか、又はクライアントは、プレーヤーが参加するセッションを選択できるようにするためのユーザインターフェース（user interface：ＵＩ）を提供し得る。したがって、プレーヤーは友達とＡＲ環境に参加することを選択できる。いくつかの実施形態では、プレーヤーは、アクセス保護されている（例えば、参加するためにパスワード又はコードを要求する）プライベートＡＲ環境を確立することができる。
【００２７】
様々な実施形態では、ＡＲオブジェクト（例えば、生物、車両など）が現実世界の特徴と相互作用する（例えば、障害物を通り抜けるのではなく飛び越える）ように見えるようにするために、ＡＲ環境モジュール３３０は、接続されたクライアント１１０に、クライアントの近くの現実世界を表すマップデータ（例えば、ローカルデータストア３６０に格納される）を提供する。ＡＲ環境モジュール３３０は、クライアント１１０の位置データ（例えば、ＧＰＳ位置）を受信し、そのクライアント周辺の地理的領域（例えば、そのクライアントの現在位置の閾値距離内）のマップデータを提供することができる。
【００２８】
受信したマップデータには、現実世界の１つ又は複数の表現を含めることができる。例えば、マップデータには、点群モデル、平面マッチングモデル、ラインマッチングモデル、地理情報システム（ＧＩＳ）モデル、建物認識モデル、景観認識モデルなどを含めることができる。マップデータには、様々な詳細レベルで特定のタイプの複数の表現が含まれる場合もある。例えば、マップデータには、それぞれが異なる数のポイントを含む２つ以上の点群モデルが含まれる場合がある。
【００２９】
クライアント１１０は、マップデータを１つ又は複数のセンサによって収集されたデータと比較して、クライアントの位置を精緻化することができる。例えば、クライアント１１０上のカメラによってキャプチャされている画像を点群モデルにマッピングすることによって、クライアントの位置及び向きを正確に（例えば、１センチメートル及び０．１度以内で）判定することができる。クライアント１１０は、判定された位置及び向きを、プレーヤーによって取られたアクション（例えば、射撃、相互作用する仮想アイテムの選択、仮想アイテムのドロップなど）とともに、ＡＲ環境モジュール３３０に戻す。このように、ＡＲ環境モジュール３３０は、ＡＲ環境に参加しているすべてのプレーヤーのゲームのステータスを更新することができる。
【００３０】
マップ処理モジュール３４０は、現在の状態（例えば、データ取り込みモジュール３２０からのデータ）に基づいてマップデータを更新する。現実世界は静的でないため、ローカルデータストア３６０内のマップデータは、現在の現実世界の状態を表していない場合がある。例えば、バーモント州の同じ公園の歩道は、季節によって大きく異なる場合がある。夏には、歩道がはっきり見え、周囲の木々が葉で覆われることがある。対照的に、冬には、雪が降り積もって歩道が塞がれ、木々がむき出しになることがある。マップ処理モジュール３４０は、そのような変化に近づけるためにマップデータを変換することができる。
【００３１】
一実施形態では、マップ処理モジュール３４０は、現在の状態データを検索して変換を識別し、その変換をマップデータに適用する。様々な条件についての変換は、ヒューリスティックルールによって定義するか、トレーニング済みの機械学習モデルの形式をとるか、両方のアプローチを組み合わせて使用することができる。例えば、マップ処理モジュール３４０は、現在の気象状況データを受信し、現在の気象状況の変換を選択し、その変換をマップデータに適用することができる。あるいは、マップ処理モジュール３４０は、変換されたマップを事前に計算し、それらを（例えば、ローカルデータストア３６０に）格納することができる。この場合、クライアント１１０がセルタワーに接続すると、マップ処理モジュールは、現在の状況を判定し、マップデータの適切な事前計算されたバージョンを選択し、そのバージョンをクライアントに提供する。
【００３２】
権限チェックモジュール３５０は、異なるクライアント１１０のゲーム状態間の同期を維持する。一実施形態では、権限チェックモジュール３５０は、クライアント１１０から受信されたゲームアクションが、ＡＲ環境モジュール３３０によって維持されるゲーム状態と一致することを確認する。例えば、２人のプレーヤーが両方とも同じゲーム内アイテムを拾おうとする場合、権限チェックモジュール３５０は、どちらのプレーヤーがアイテムを受け取るかを判定する（例えば、要求に関連付けられたタイムスタンプに基づいて）。説明したように、セルタワーでのＰ２Ｐプロトコル及びローカル処理の使用は、他のプレーヤーのクライアント１１０で見られるプレーヤーのアクションのレイテンシを大幅に短縮することができる。したがって、そのような競合が発生し、権限チェックモジュール３５０によって解決される事例の可能性（及びその数）が低減される。したがって、ＡＲエクスペリエンスが向上し得る。
【００３３】
権限チェックモジュール３５０はまた、ＡＲ環境の状態（中間ノード状態）のそのコピーと、サーバ１２０によって維持されるマスター状態との間の同期を維持することができる。一実施形態では、権限チェックモジュール３５０は、定期的に（例えば、１秒から１０秒ごとに）、サーバ１２０からＡＲ環境の状態に関するグローバルな更新を受信する。権限チェックモジュール３５０は、これらの更新を中間ノード状態と比較し、不一致を解決する。例えば、アイテムを拾うというプレーヤーの要求が権限チェックモジュール３５０によって最初は承認されたが、サーバ１２０からのゲーム更新が、プレーヤーが拾うことを試みる前にアイテムが別のプレーヤーによって拾われた（又はそうでなければ利用できなくなった）ことを示す場合、権限チェックモジュール３５０は、アイテムがプレーヤーのインベントリから削除されるべきであることを示す更新をプレーヤーのクライアント１１０に送信することができる。
【００３４】
このプロセスは、異なるセルタワー１３０によって提供されるカバレッジ間の境界の近くに位置するクライアント１１０に価値を提供することができる。この場合、異なるセルタワー１３０に接続されたプレーヤーは、両方とも同じ仮想要素と相互作用することができる可能性がある。したがって、個々のセルタワー１３０は、最初は、要素との競合する相互作用を承認することができるが、サーバ１２０は、競合を検出し、競合を解決するために更新を送信する（例えば、セルタワーの１つに、そのアクションの最初の承認を取り消し、それに応じてそのローカル状態を更新するように指示する）。
【００３５】
ローカルデータストア３６０は、セルタワーによって使用されるデータを格納するように構成された１つ又は複数の非一時的なコンピュータ可読媒体である。一実施形態では、記憶されたデータは、マップデータ、現在の状態データ、現在（又は少し前に）接続されたクライアント１１０のリスト、地理的領域のゲーム状態のローカルコピーなどを含み得る。ローカルデータストア３６０は単一のエンティティとして示されているが、データは複数の記憶媒体に分割されてもよい。更に、一部のデータは通信ネットワークの他の場所に保存され、リモートでアクセスされてもよい。例えば、セルタワー１３０は、必要に応じて、現在の状態データにリモートで（例えば、サードパーティサーバから）アクセスすることができる。
【００３６】
＜方法の例＞
図４は、一実施形態による、低レイテンシデータグラム応答性コンピュータネットワークプロトコルを使用するためのプロセスを例示する。セルタワー１３０は、ターゲットクライアントデバイスであるクライアント１１０Ａにアドレス指定されたデータグラム２００を受信する（３０５）。他の実施形態では、セルタワー１３０は、この実施形態のセルタワー１３０と同じ操作を実行する別のタイプの中間ノードであってもよい。データグラム２００は、クライアント１１０Ｂなどの別のクライアントデバイスからセルタワー１３０に送信される場合がある。データグラム２００はまた、現実世界におけるプレーヤーの位置がゲーム世界における彼らの位置と相関する並行現実ゲームに関連するものなど、共有ＡＲ環境で発生したアクションを記述する。
【００３７】
セルタワー１３０は、データグラム２００を分析して（３１０）、そのＰ２Ｐフラグ２０６に基づいてデータグラムがＰ２Ｐであるかどうかを判定する。データグラム２００がＰ２Ｐである場合、セルタワー１３０は、データグラム２００をクライアント１１０Ａに送信して（３１５）、クライアント１１０Ａでの共有ＡＲ環境のローカル状態を更新して、アクションを示す。データグラム２００がＰ２Ｐでない場合、セルタワー１３０は、データグラム２００をサーバ１２０に送信して（３２０）、共有ＡＲ環境のマスター状態を更新して、アクション及びそのＡＲ環境への影響を示す。いくつかの実施形態では、セルタワー１３０はまた、それらをクライアント１１０Ａに送信した後、Ｐ２Ｐデータグラムのいくつか又はすべてをサーバ１２０に送信する。このように、クライアント１１０は、Ｐ２Ｐメッセージに基づいてローカル状態を同期することができ、一方、サーバ１２０は、異なるクライアントのローカル状態間の不一致を解決するために使用できるマスター状態を維持する。Ｐ２Ｐデータグラムのためにサーバ１２０をバイパスすることによって、セルタワー１３０は、ＡＲ環境のローカル状態が更新される前にデータグラムがサーバ１２０による処理を必要としないときにＡＲ環境で発生するアクションのレイテンシを改善できる。様々な実施形態において、ローカル状態は、１ミリ秒から１０ミリ秒、１ミリ秒から１５ミリ秒、１ミリ秒から２０ミリ秒、又は１ミリ秒から３０ミリ秒の間のレイテンシで更新される。
【００３８】
いくつかの実施形態では、セルタワー１３０は、データグラム２００がＰ２Ｐであるかどうかを判定するために複数のステップに従う。セルタワー１３０は、インジケータ、又はＰ２Ｐフラグ２０６を分析して、データグラム２００がＰ２Ｐで送信されるべきかどうかを判定する。次に、セルタワー１３０は、クライアント１１０Ａがセルタワー１３０に現在接続されているかどうかを判定する。そうである場合、セルタワー１３０は、データグラム２００がＰ２Ｐであり、サーバ１２０の代わりにクライアント１１０Ａに直接送信することができると判定する。セルタワー１３０がクライアント１１０Ａに現在接続されていない場合、データグラムがＰ２ＰであることをＰ２Ｐフラグ２０６が示していても、セルタワー１３０はデータグラム２００をサーバ１２０に送信する。
【００３９】
図４のプロセスは、プレーヤーが互いに光のボールを投げ、他のプレーヤーがリアルタイムでかわすか又はキャッチする並行現実ゲームに組み込まれる例示的な共有ＡＲ環境に関連して更に説明され得る。この例においてクライアント１１０Ｂに関連付けられた送信側プレーヤーが、クライアント１１０Ａに関連付けられたターゲットプレーヤーに光の球を投げると、クライアント１１０Ｂは、アクション（例えば、光の球を投げること）を記述するデータグラム２００を作成する。アクションはプレーヤー間で行われ、共有ＡＲ環境で迅速に発生する必要があるため、クライアント１１０Ｂは、データグラム２００がＰ２Ｐであることをデータグラム２００に示す。クライアント１１０Ｂは、データグラム２００をセルタワー１３０に送信し、セルタワー１３０は、データグラム２００をどう処理するかを判定する。データグラムはＰ２Ｐであるため、セルタワー１３０は、データグラム２００をサーバ１２０ではなくクライアント１１０Ａに送信する。クライアント１１０Ａは、データグラム２００を受信し、ペイロード２０２からのデータを共有ＡＲ環境のローカル状態に統合する（例えば、送信側プレーヤーがそれらに光の球を投げたことをターゲットプレーヤーに示す）。データグラム２００をサーバ１２０に送信しないことにより、レイテンシが短縮される。レイテンシが十分に短いと、アクションがリアルタイムで発生したかのようにターゲットプレーヤーのローカル表示に現れ、ゲームプレイをより迅速に続行できる。これにより、プレーヤーはお互いの直接的な相互作用の感覚を体験することもできる。例えば、仮想キャッチゲームでは、あるプレーヤーが仮想ボールを投げ、別のプレーヤーがクライアント１１０をボールの軌道に置くことによって仮想ボールをキャッチするのを目撃することができる。
【００４０】
セルタワー１３０は、データグラム２００をクライアント１１０Ａに送信した後、データグラム２００又はデータグラム２００のコピーをサーバ１２０に送信することができる。このようにして、共有ＡＲ環境のマスター状態が更新され、送信側プレーヤーがターゲットプレーヤーに光の球を投げたことが示される。データグラム３００をサーバ１２０に送信することは、レイテンシよりも時間的に近い異なるプレーヤーによって実行されるアクション間の競合を解決する方法を提供することができる。更に、サーバ１２０は、クライアント１１０が別のセルタワーに接続されているときに、データグラム２００から他のセルタワーへの情報の送信を処理することができる（例えば、クライアント１１０が隣接するセルタワーに切り替わるとき、プレーヤーは、別のセルタワーに接続されているクライアント１１０などを用いて別のプレーヤーにメッセージを送る）。いくつかの実施形態では、セルタワーは、セルタワー１３０及び共有ＡＲ環境に現在接続されているクライアント１１０のグループ（例えば、セルタワー及びＡＲ環境に接続されているすべてのクライアント）を判定し、それらのクライアント１１０に関連付けられたプレーヤーが、アクションが迅速に、一見リアルタイムで（例えば、１０ミリ秒未満のレイテンシで）発生するのを見ることができるようにするため、データグラムをそのクライアント１１０のグループに送信することができる。
【００４１】
図５は、一実施形態による、図１に示されるコンピュータネットワーク内での使用に適した例示的なコンピュータ５００を示すハイレベルブロック図である。例示的なコンピュータ５００は、チップセット５０４に結合された少なくとも１つのプロセッサ５０２を含む。チップセット５０４は、メモリコントローラハブ５２０及び入力／出力（input/output：Ｉ／Ｏ）コントローラハブ５２２を含む。メモリ５０６及びグラフィックアダプタ５１２は、メモリコントローラハブ５２０に結合され、ディスプレイ５１８は、グラフィックアダプタ５１２に結合される。ストレージデバイス５０８、キーボード５１０、ポインティングデバイス５１４、及びネットワークアダプタ５１６は、Ｉ／Ｏコントローラハブ５２２に結合されている。コンピュータ５００の他の実施形態は、異なるアーキテクチャを有する。
【００４２】
図５に示す実施形態では、ストレージデバイス５０８は、ハードドライブ、コンパクトディスク読み取り専用メモリ（compact disk read-only memory：ＣＤ−ＲＯＭ）、ＤＶＤ、又はソリッドステートストレージデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ５０６は、プロセッサ５０２によって使用される命令及びデータを保持する。ポインティングデバイス５１４は、マウス、トラックボール、タッチスクリーン、又は他のタイプのポインティングデバイスであり、キーボード５１０（オンスクリーンキーボードであってもよい）と組み合わせて使用されて、コンピュータシステム５００にデータを入力する。グラフィックアダプタ５１２は、画像及び他の情報をディスプレイ５１８に表示する。ネットワークアダプタ５１６は、コンピュータシステム５００を１つ又は複数のコンピュータネットワークに結合する。
【００４３】
図１のエンティティによって使用されるコンピュータのタイプは、実施形態及びエンティティによって要求される処理能力に応じて変化し得る。例えば、サーバ１２０は、説明された機能を提供するために一緒に動作する複数のブレードサーバを含む分散データベースシステムを含み得る。更に、コンピュータは、キーボード５１０、グラフィックアダプタ５１２、及びディスプレイ５１８などの上記のコンポーネントのいくつかを欠くことができる。
【００４４】
当技術分野の当業者は、記載された概念から逸脱することなく、本明細書に開示される装置及び技術の多くの使用及び修正及び逸脱を行うことができる。例えば、本開示で図示又は説明される構成要素又は特徴は、図示又は説明される場所、設定、又は文脈に限定されない。本開示による装置の例は、前述の図の１つ又は複数を参照して説明されたものよりも、すべて、より少ない、又は異なる構成要素を含むことができる。したがって、本開示は、本明細書に記載の特定の実施に限定されるものではなく、添付の特許請求の範囲及びその等価物と一致する可能な限り広い範囲を与えられるべきである。
【図１】
2021524696.tif 000003
【図２】
2021524696.tif 000004
【図３】
2021524696.tif 000005
【図４】
2021524696.tif 000006
【図５】
2021524696.tif 000007
【手続補正書】
【提出日】令和3年2月24日(2021.2.24)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
＜関連出願への相互参照＞
本出願は、２０１８年６月２７日に出願された米国仮出願第６２／６９０，５７８号の利益を主張するものであり、その全体が参照により組み込まれる。
【０００２】
＜技術分野＞
本開示は、コンピュータネットワークプロトコル、特に、互いに物理的に近接しているデバイス間で低レイテンシ無線通信を提供するためのプロトコルに関する。
【背景技術】
【０００３】
コンピュータネットワークは、インターネットといった、データを交換する相互接続されたコンピューティングデバイスのセットである。ユーザデータグラムプロトコル（User Datagram Protocol：ＵＤＰ）などの通信プロトコルは、コンピュータネットワークを使用してデータを交換するためのルールのシステムを定義する。ＵＤＰは、データグラムの配信、順序付け、又は非重複を保証しないコネクションレス型通信モデルに準拠する。データグラムは通信の基本単位であり、ヘッダとペイロードを含む。ヘッダは、送信元ポート、宛先ポート、データグラムの長さ、データグラムのチェックサムなど、データグラムの側面を指定するメタデータである。ペイロードは、データグラムによって通信されるデータである。ＵＤＰを使用して通信するコンピューティングデバイスは、コンピュータネットワークを介して相互にデータグラムを送信する。
【０００４】
ＵＤＰなどのコネクションレス型通信プロトコルは、一般に、データを送信する前にコンピューティングデバイス間の接続を確立する伝送制御プロトコル（Transmission Control Protocol：ＴＣＰ）などのコネクション型通信プロトコルよりもオーバーヘッドとレイテンシが低くなる。ただし、既存のコネクションレス型通信プロトコルは、既存の技術で対応されているよりも短いレイテンシを必要とするデータ転送には不十分である。例えば、６０フレーム／秒（Frames Per Second：ＦＰＳ）でストリーミングする拡張現実（Augmented Reality：ＡＲ）環境では、現在の手法で提供されるよりも１桁低いレイテンシが必要になる場合がある。このようなＡＲ環境では、フレームの間隔は約１６ミリ秒であるが、現在のネットワークプロトコルでは、通常、約１００ミリ秒（又はそれ以上）のレイテンシが発生する。
【０００５】
そのため、既存の手法では、ユーザはＡＲ環境の現在の状態と相互作用せず、少し前の状態のみと相互作用する。クライアントを使用してコンピュータネットワークを介してＡＲ環境と相互作用するユーザは、ＡＲ位置データの古い状態と相互作用する場合がある。例えば、ＡＲゲームにおいて、プレーヤーがＡＲオブジェクトを古い場所（例えば、オブジェクトが１００ミリ秒前にあった場所）において認識する一方で、実際のＡＲ位置データは、そのオブジェクトについて新しい場所となっている（例えば、ＡＲオブジェクトが別のプレーヤーによって移動される）こともある。クライアントと、ＡＲゲームをホスト又は調整するサーバとの間の通信におけるこのレイテンシは、苛立たしいユーザエクスペリエンスにつながり得る。この問題は、複数のユーザがＡＲゲームに参加している場合に特に深刻になり得る。これは、レイテンシによって、あるプレーヤーのアクションが他のプレーヤーのＡＲ環境のビューに表示されるまでに顕著な遅延が発生する可能性があるためである。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
拡張現実（Augmented Reality：ＡＲ）システムは、コンピュータで生成されたコンテンツで現実世界のビューを補完する。ＡＲを並行現実ゲームに組み込むことで、現実世界と仮想世界の統合を改善することができる。ＡＲは、プレーヤーが相互作用する共有ゲーム体験に参加する機会を提供することにより、プレーヤー間のインタラクティブ性を高めることもできる。例えば、戦車バトルゲームでは、プレーヤーは仮想戦車を現実世界の場所でナビゲートして、互いの戦車を破壊しようとする場合がある。戦車の動きは、現実世界の地理によって制限される場合がある（例えば、戦車は川をゆっくりと移動する、道路をより速く移動する、壁を通過できないなど）。
【０００７】
既存のＡＲセッション技術では、サーバがマスター状態を維持し、クライアントデバイスでの環境のローカル状態をネットワーク（例えば、インターネット）を介してマスター状態に定期的に同期する。ただし、デバイスのローカル状態の同期にはかなりの時間がかかる場合があり（例えば、数百ミリ秒程度）、ゲームエクスペリエンスに悪影響を及ぼし得る。プレーヤーは、事実上、現在のゲーム状態ではなく、過去のゲーム状態と相互作用する。この問題は、複数のユーザがＡＲゲームに参加している場合に特に深刻になり得る。これは、レイテンシによって、あるプレーヤーのアクションが他のプレーヤーのビューに表示されるまでに顕著な遅延が発生するためである。例えば、１人のプレーヤーが世界でＡＲオブジェクトを移動させた場合、他のプレーヤーは１００ミリ秒（又はそれ以上）後にならないと移動したことを認識できない可能性がある。これは人間が知覚できる遅延である。そのため、別のプレーヤーが以前の場所にあるオブジェクトと相互作用しようとして、ゲームがレイテンシを修正した場合に（例えば、プレーヤーが要求したアクションの実行を拒否するか、最初にアクションを実行し、次にプレーヤーのクライアントデバイスがサーバと同期したときにそのアクションを取り消すことによって）イライラさせられる可能性がある。
【０００８】
この問題やその他の問題は、中間ノード（セルタワーなど）でデータグラムを処理することで対処できる。ゲームサーバを介して更新をルーティングせずに、同じエッジノードに接続されているクライアント間でゲームの更新を交換するピアツーピア（Ｐ２Ｐ）プロトコルを使用すると、レイテンシを短縮できる。例えば、これらのアプローチを使用すると、レイテンシを最大１０ミリ秒以下に短縮できる。更に、これは、より多くのプレーヤーが共通のＡＲエクスペリエンスを共有することを可能にする帯域幅の利用可能性を増加させる。
【課題を解決するための手段】
【０００９】
一実施形態では、共有ＡＲ環境のゲーム状態を更新するための方法は、中間ノードで、ターゲットクライアントデバイスにアドレス指定されたデータグラムを受信することを含む。データグラムには、共有拡張現実環境で発生したアクションに関するデータと、データグラムがＰ２Ｐであるかどうかのインジケータを含む。セルタワーなどの中間ノードは、インジケータに基づいてデータグラムがピアツーピアであるかどうかを判定する。データグラムがＰ２Ｐの場合、中間ノードはデータグラムをターゲットクライアントデバイスに送信して、発生したアクションを考慮して、ターゲットクライアントデバイスの共有ＡＲ環境のローカル状態を更新する。あるいは、データグラムがＰ２Ｐでない場合、中間ノードはデータグラムをサーバに送信して、発生したアクションを考慮して、サーバの共有ＡＲ環境のマスター状態を更新する。更なる実施形態では、中間ノードは、ターゲットクライアントデバイスに送信するデータグラムの一部又はすべてをサーバに更に送信して、マスター共有ＡＲ状態を更新する。
【図面の簡単な説明】
【００１０】
【図１】図１は、一実施形態による、開示されたプロトコルを使用することができるコンピュータネットワークを例示する。
【００１１】
【図２】図２は、一実施形態による、開示されたプロトコルに従って構成されたデータグラムを例示する。
【００１２】
【図３】図３は、一実施形態による、図１のセルタワーを例示するブロック図である。
【００１３】
【図４】図４は、一実施形態による、低レイテンシデータグラム応答性コンピュータネットワークプロトコルを使用するためのプロセスを例示する。
【００１４】
【図５】図５は、一実施形態による、図１に示されるコンピュータネットワーク内での使用に適した例示的なコンピュータを示すハイレベルブロック図である。
【発明を実施するための形態】
【００１５】
図及び以下の説明は、例示のみを目的として、特定の実施形態を説明している。当業者は、以下の説明から、記載された原理から逸脱することなく、構造及び方法の代替の実施形態を使用できることを容易に認識するであろう。ここで、いくつかの実施形態を参照し、その例を添付の図に示す。実行可能な限り、同様の又は類似する機能を示すために、同様の又は類似する参照番号が図で使用されている。共通の数字とそれに続く異なる文字を複数の要素が共有する場合、それらの要素は同様又は同一である。数字のみは、そのような要素の任意の１つ又は任意の組み合わせを指す。
【００１６】
＜コンピューティング環境の例＞
本明細書に開示されるように、データグラム応答性コンピュータネットワークプロトコル（「開示されたプロトコル」）は、コンピュータネットワークレイテンシを低下させ得る（例えば、一実施形態では、レイテンシは約１０ミリ秒程度である）。図１は、一実施形態による、開示されたプロトコルを使用して通信するコンピュータネットワークを例示する。この図は、明確にするために、ブロック図を使用した簡略化された例を示している。コンピュータネットワークは、２つのクライアント１１０Ａおよび１１０Ｂ、サーバ１２０、及びセルタワー１３０を含む。他の実施形態では、コンピュータネットワークは、より少ない構成要素、追加の構成要素、又は他の構成要素を含んでいてもよい。例えば、コンピュータネットワークは、追加のクライアント、サーバ１２０、セルタワー１３０、又は他のネットワークノードなどを含み得る。例えば、コンピュータネットワークは、セルタワー１３０ではなく、ネットワークノードとして１つ又は複数のＷｉＦｉルータを使用するローカルエリアネットワーク（ＬＡＮ）であってもよい。
【００１７】
クライアント１１０Ａ、１１０Ｂは、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、スマートフォンなどのようなコンピューティングデバイスである。クライアント１１０Ａおよび１１０Ｂは、開示されたプロトコルを使用して通信することができる。サーバ１２０は、同様に、開示されたプロトコルを介して通信することができるコンピューティングデバイスである。クライアント１１０Ａおよび１１０Ｂは、開示されたプロトコルを使用してサーバ１２０と通信することができ、又はいくつかの実施形態では、異なるプロトコルを使用することができる。例えば、クライアント１１０Ａおよび１１０Ｂは、開示されたプロトコルを使用して互いに通信することができるが、ＴＣＰを使用してサーバ１２０と通信することができる。一実施形態では、各クライアント１１０Ａ、１１０ＢはローカルＡＲモジュールを含み、サーバ１２０はマスターＡＲモジュールを含む。各ローカルＡＲモジュールは、ＡＲデータを、他のクライアント上のローカルＡＲモジュール及び／又はサーバ１２０上のマスターＡＲモジュールに通信する。
【００１８】
セルタワー１３０は、クライアント１１０Ａおよび１１０Ｂなどのエンドノードの中間ノードとして機能するネットワークノードである。上記のように、他の実施形態では、コンピュータネットワークは、セルタワー１３０に代えて、又はそれに加えて、同様の通信を可能にする、他のネットワークノードを含み得る。セルタワー１３０は、メッセージが通信され得る範囲を拡大する。例えば、クライアント１１０Ａは、セルタワー１３０なしではクライアント１１０Ｂと通信することができない場合は、クライアント１１０Ｂへメッセージを続けて送信するセルタワー１３０にメッセージを送信することができる。
【００１９】
一実施形態では、クライアント１１０Ａ、１１０Ｂの通信は、サーバ１２０又はピアツーピア（Ｐ２Ｐ）を介してルーティングされ得る。サーバ１２０を介してルーティングされた通信は、第１のクライアント１１０Ａからセルタワー１３０を介してサーバ１２０に進み、次にセルタワー１３０を通って第２のクライアント１１０Ｂに戻ることができる。対照的に、Ｐ２Ｐ通信は、第１のクライアント１１０Ａからセルタワー１３０に進み、次に第２のクライアント１１０Ｂに直接進むことができる。場合によっては、通信が信号ブースタなどの他の中間デバイスを通過する可能性があることに留意されたい。本明細書で使用されるように、通信は、サーバ１２０を通過せずにターゲットクライアント１１０Ｂにルーティングされる場合、Ｐ２Ｐと見なされる。例えば、ターゲットクライアント１１０Ｂが送信クライアント１１０Ａと同じセルタワー１３０に接続され、そうでない場合はサーバ１２０を介してルーティングされる場合、メッセージ（例えば、データグラム）はＰ２Ｐで送信され得る。別の実施形態では、クライアント１１０Ａおよび１１０Ｂは、完全にＰ２Ｐを使用して通信する。更に、いくつかの実施形態では、ＵＤＰホールパンチングを使用して、２つ以上のクライアント間の接続を確立することができる。
【００２０】
一実施形態では、クライアント１１０Ａおよび１１０Ｂは、（例えば、サーバでホストされ、ＴＣＰを介して通信される）調整サービスを使用して、ＩＰアドレスを同期させる。次に、クライアント１１０Ａおよび１１０Ｂは、公開されているＩＰアドレス又はローカルエリアネットワーク（ＬＡＮ）を使用して、（例えば、ＵＤＰを介して）通信することができる。例えば、第１のクライアント１１０Ａは、ローカルＡＲ共有環境に参加するために、ＴＣＰを介して調整サービスに要求を送信することができる。調整サービスは、（例えば、同じセルタワー１３０を介して）ＡＲ環境に接続された第２のクライアント１１０ＢのＩＰアドレスを第１のクライアント１１０Ａに提供することができる。調整サービスはまた、第１のクライアントのＩＰアドレスを第２のクライアント１１０Ｂに提供することができ、又は第１のクライアント１１０Ａは、（調整サービスによって提供されるように）第２のクライアントのＩＰアドレスを使用してそれを直接提供することができる。いくつかの実施形態では、調整サービスは、第２のクライアントのＩＰアドレスが提供される前に、（例えば、ユーザ確認を要求するか、又は承認されたクライアントのリストをチェックして第２のクライアント１１０Ｂに接続することによって）第２のクライアント１１０Ｂに第１のクライアント１１０Ａを承認するように促すことができる。
【００２１】
図２は、一実施形態による、開示されたプロトコルに従って構成されたデータグラム２００を例示する。データグラム２００は、ペイロード２０２を含む。これは、上記のように、データグラム２００の内容である。データグラム２００は、ヘッダ２０４を更に含み、その一部は、インジケータとしても知られるＰ２Ｐフラグ２０６である。ヘッダは、ＵＤＰヘッダにＰ２Ｐフラグ２０６を加えたものと同様であってもよいし、Ｐ２Ｐフラグに加えて、異なる又は追加のメタデータを含んでいてもよい。Ｐ２Ｐフラグは、データグラム２００がサーバ１２０に送信されるか又は別のクライアント１１０Ａまたは１１０ＢにＰ２Ｐで送信されるかを判定するために使用される。他の実施形態では、Ｐ２Ｐフラグ２０６は、同様の機能を提供するヘッダ内の１つ又は複数の他のインジケータで置き換えられる。
【００２２】
セルタワー１３０は、クライアント１１０Ａからデータグラム２００を受信し（４０５）、Ｐ２Ｐフラグ２０６に基づいてデータグラムをルーティングする方法を判定する。一実施形態では、Ｐ２Ｐフラグ２０６は、データグラム２００が可能であればＰ２Ｐで送信されるべきであることを示すために、送信クライアント１１０Ａによって設定され得る。セルタワー１３０は、データグラム２００を分析し、そのデータグラム２００がＰ２Ｐで送信されるべきであることをＰ２Ｐフラグ２０６が示すと仮定して、ターゲットクライアント１１０Ｂがセルタワーに現在接続されているかどうかを、（例えば、ターゲットクライアント１１０Ｂの識別子を現在接続されているクライアントのリストと比較することによって）判定する。ターゲットクライアント１１０Ｂがセルタワー１３０に接続されている場合、データグラム２００は、サーバ１２０を経由せずにそれに送信される。対照的に、ターゲットクライアント１１０Ｂがセルタワー１３０に接続されていない場合、データグラム２００は、サーバ１２０に送信されて、ターゲットクライアント１１０Ｂに（例えば、現在接続されている第２のセルタワー１３０を介して）送信される。例えば、サーバ１２０は、どのセルタワー１３０がどのクライアントデバイス１１０Ａおよび１１０Ｂに現在接続されている又は少し前に接続されたかのデータベース又は他のリストを維持することができる。いくつかの実施形態では、セルタワー１３０は、データグラム２００をターゲットクライアント１１０Ｂ及びサーバ１２０の両方に送信することができる。
【００２３】
別の実施形態では、Ｐ２Ｐフラグ２０６は、ＡＲセッション、ユーザ、デバイス、ゲームアカウントなどの識別子であってもよい。セルタワー１３０は、データグラム２００がＰ２Ｐ（または可能であればＰ２Ｐ）で送信されるべきであるＰ２Ｐフラグ２０６のリストを維持する。セルタワー１３０は、データグラム２００を分析して（４１０）、それがサーバ１２０又はＰ２Ｐのどちらを介して送信されるべきかを判定する。Ｐ２Ｐフラグ２０６がリスト上の識別子を含む場合、データグラム２００はＰ２Ｐメッセージであり、セルタワー１３０はデータグラム２００をターゲットクライアントに送信する（４１５）。例えば、データグラム２００のヘッダ２０４が、宛先ポートがクライアント１１０Ｂのポートであることを示している場合、セルタワー１３０は、データグラム２００をクライアント１１０Ｂに送信する（４１５）。対照的に、データグラム２００がＰ２ＰメッセージではないことをＰ２Ｐフラグ２０６が示している場合、セルタワー１３０は、Ｐ２Ｐフラグ２０６をサーバ１２０に送信する（４２０）。あるいは、リストは、Ｐ２Ｐで送信されないメッセージのＰ２Ｐフラグ２０６を示し得る。この場合、Ｐ２Ｐフラグ２０６がリストにない場合のデフォルトの動作は、対応するデータグラムＰ２Ｐをターゲットクライアント（例えば、クライアント１１０Ｂ）に送信することである。
【００２４】
＜中間ノードの例＞
図３は、中間ノードの一実施形態を例示するブロック図である。示される実施形態では、中間ノードは、ルーティングモジュール３１０、データ取り込みモジュール３２０、ＡＲ環境モジュール３３０、マップ処理モジュール３４０、権限チェックモジュール３５０、及びローカルデータストア３６０を含むセルタワー１３０である。セルタワー１３０は、データを交換するためにサーバ１２０及びクライアント１１０Ａおよび１１０Ｂへの接続を確立するための、ハードウェア及びファームウェア又はソフトウェア（図示せず）を更に含む。例えば、セルタワー１３０は、光ファイバー又は他の有線インターネット接続を介してサーバ１２０に接続することができ、無線接続（例えば、４Ｇ又は５Ｇ）を使用してクライアント１１０Ａおよび１１０Ｂに接続することができる。他の実施形態では、セルタワー１３０は、異なる又は追加の構成要素を含んでいてもよい。更に、機能は、説明されているのとは異なる方法で、要素間で分散されてもよい。
【００２５】
ルーティングモジュール３１０は、データパケットを受信し、それらのパケットを１つ又は複数の受信者デバイスに送信する。一実施形態では、ルーティングモジュール３１０は、データグラム２００をクライアント１１０Ａおよび１１０Ｂから受信し、図４を参照して説明した方法を使用して、受信したデータグラムの送信先を判定する。ルーティングモジュール３１０はまた、特定のクライアント１１０Ａ、１１０Ｂ又はセルタワーに接続されているすべてのクライアントのいずれかにアドレス指定されたサーバからデータパケットを受信することができる。ルーティングモジュール３１０は、データパケットを、それらがアドレス指定されるクライアント１１０Ａおよび１１０Ｂに転送する。
【００２６】
データ取り込みモジュール３２０は、セルタワー１３０が接続されたクライアント１１０Ａおよび１１０Ｂを介してプレーヤーに共有ＡＲエクスペリエンスを提供するために使用する１つ又は複数の送信元からデータを受信する。一実施形態では、データ取り込みモジュール３２０は、（例えば、サードパーティサービスから）現実世界の状態に関するリアルタイム又は実質的にリアルタイムの情報を受信する。例えば、データ取り込みモジュール３２０は、セルタワー周辺の地理的領域の気象状況を示す気象サービスから気象データを定期的に（例えば、毎時）受信することができる。別の例として、データ取り込みモジュール３２０は、公園、美術館、又は他の公共スペースの営業時間を検索することができる。更に別の例として、データ取り込みモジュール３２０は、セルタワー１３０周辺の地理的領域内の道路を走行している車両の数を示す交通データを受信することができる。現実世界の状態に関するそのような情報は、仮想世界と現実世界との間の相乗効果を改善するために使用され得る。
【００２７】
ＡＲ環境モジュール３３０は、セルタワー１３０周辺の地理的領域にいるプレーヤーが共有ＡＲエクスペリエンスに参加することができるＡＲ環境を管理する。一実施形態では、クライアント１１０Ａおよび１１０Ｂは、ＡＲゲームを実行している間にセルタワー１３０に接続し、ＡＲ環境モジュール３３０は、そのクライアントをゲームのＡＲ環境に接続する。セルタワー１３０に接続するゲームのすべてのプレーヤーは、単一のＡＲ環境を共有することができ、又はプレーヤーは、複数のＡＲ環境に分割され得る。例えば、特定のＡＲ環境には最大数（例えば、１０、２０、１００など）のプレーヤーがいる場合がある。複数のＡＲ環境が存在する場合、新たに接続するクライアント１１０Ａ、１１０Ｂは、ランダムにセッションに配置されるか、又はクライアントは、プレーヤーが参加するセッションを選択できるようにするためのユーザインターフェース（user interface：ＵＩ）を提供し得る。したがって、プレーヤーは友達とＡＲ環境に参加することを選択できる。いくつかの実施形態では、プレーヤーは、アクセス保護されている（例えば、参加するためにパスワード又はコードを要求する）プライベートＡＲ環境を確立することができる。
【００２８】
様々な実施形態では、ＡＲオブジェクト（例えば、生物、車両など）が現実世界の特徴と相互作用する（例えば、障害物を通り抜けるのではなく飛び越える）ように見えるようにするために、ＡＲ環境モジュール３３０は、接続されたクライアント１１０Ａおよび１１０Ｂに、クライアントの近くの現実世界を表すマップデータ（例えば、ローカルデータストア３６０に格納される）を提供する。ＡＲ環境モジュール３３０は、クライアント１１０Ａまたは１１０Ｂの位置データ（例えば、ＧＰＳ位置）を受信し、そのクライアント周辺の地理的領域（例えば、そのクライアントの現在位置の閾値距離内）のマップデータを提供することができる。
【００２９】
受信したマップデータには、現実世界の１つ又は複数の表現を含めることができる。例えば、マップデータには、点群モデル、平面マッチングモデル、ラインマッチングモデル、地理情報システム（ＧＩＳ）モデル、建物認識モデル、景観認識モデルなどを含めることができる。マップデータには、様々な詳細レベルで特定のタイプの複数の表現が含まれる場合もある。例えば、マップデータには、それぞれが異なる数のポイントを含む２つ以上の点群モデルが含まれる場合がある。
【００３０】
クライアント１１０Ａ、１１０Ｂは、マップデータを１つ又は複数のセンサによって収集されたデータと比較して、クライアントの位置を精緻化することができる。例えば、クライアント１１０Ａ、１１０Ｂ上のカメラによってキャプチャされている画像を点群モデルにマッピングすることによって、クライアントの位置及び向きを正確に（例えば、１センチメートル及び０．１度以内で）判定することができる。クライアント１１０Ａ、１１０Ｂは、判定された位置及び向きを、プレーヤーによって取られたアクション（例えば、射撃、相互作用する仮想アイテムの選択、仮想アイテムのドロップなど）とともに、ＡＲ環境モジュール３３０に戻す。このように、ＡＲ環境モジュール３３０は、ＡＲ環境に参加しているすべてのプレーヤーのゲームのステータスを更新することができる。
【００３１】
マップ処理モジュール３４０は、現在の状態（例えば、データ取り込みモジュール３２０からのデータ）に基づいてマップデータを更新する。現実世界は静的でないため、ローカルデータストア３６０内のマップデータは、現在の現実世界の状態を表していない場合がある。例えば、バーモント州の同じ公園の歩道は、季節によって大きく異なる場合がある。夏には、歩道がはっきり見え、周囲の木々が葉で覆われることがある。対照的に、冬には、雪が降り積もって歩道が塞がれ、木々がむき出しになることがある。マップ処理モジュール３４０は、そのような変化に近づけるためにマップデータを変換することができる。
【００３２】
一実施形態では、マップ処理モジュール３４０は、現在の状態データを検索して変換を識別し、その変換をマップデータに適用する。様々な条件についての変換は、ヒューリスティックルールによって定義するか、トレーニング済みの機械学習モデルの形式をとるか、両方のアプローチを組み合わせて使用することができる。例えば、マップ処理モジュール３４０は、現在の気象状況データを受信し、現在の気象状況の変換を選択し、その変換をマップデータに適用することができる。あるいは、マップ処理モジュール３４０は、変換されたマップを事前に計算し、それらを（例えば、ローカルデータストア３６０に）格納することができる。この場合、クライアント１１０Ａまたは１１０Ｂがセルタワーに接続すると、マップ処理モジュールは、現在の状況を判定し、マップデータの適切な事前計算されたバージョンを選択し、そのバージョンをクライアントに提供する。
【００３３】
権限チェックモジュール３５０は、異なるクライアント１１０Ａおよび１１０Ｂのゲーム状態間の同期を維持する。一実施形態では、権限チェックモジュール３５０は、クライアント１１０Ａおよび１１０Ｂから受信されたゲームアクションが、ＡＲ環境モジュール３３０によって維持されるゲーム状態と一致することを確認する。例えば、２人のプレーヤーが両方とも同じゲーム内アイテムを拾おうとする場合、権限チェックモジュール３５０は、どちらのプレーヤーがアイテムを受け取るかを判定する（例えば、要求に関連付けられたタイムスタンプに基づいて）。説明したように、セルタワーでのＰ２Ｐプロトコル及びローカル処理の使用は、他のプレーヤーのクライアントで見られるプレーヤーのアクションのレイテンシを大幅に短縮することができる。したがって、そのような競合が発生し、権限チェックモジュール３５０によって解決される事例の可能性（及びその数）が低減される。したがって、ＡＲエクスペリエンスが向上し得る。
【００３４】
権限チェックモジュール３５０はまた、ＡＲ環境の状態（中間ノード状態）のそのコピーと、サーバ１２０によって維持されるマスター状態との間の同期を維持することができる。一実施形態では、権限チェックモジュール３５０は、定期的に（例えば、１秒から１０秒ごとに）、サーバ１２０からＡＲ環境の状態に関するグローバルな更新を受信する。権限チェックモジュール３５０は、これらの更新を中間ノード状態と比較し、不一致を解決する。例えば、アイテムを拾うというプレーヤーの要求が権限チェックモジュール３５０によって最初は承認されたが、サーバ１２０からのゲーム更新が、プレーヤーが拾うことを試みる前にアイテムが別のプレーヤーによって拾われた（又はそうでなければ利用できなくなった）ことを示す場合、権限チェックモジュール３５０は、アイテムがプレーヤーのインベントリから削除されるべきであることを示す更新をプレーヤーのクライアントに送信することができる。
【００３５】
このプロセスは、異なるセルタワー１３０によって提供されるカバレッジ間の境界の近くに位置するクライアント１１０Ａおよび１１０Ｂに価値を提供することができる。この場合、異なるセルタワー１３０に接続されたプレーヤーは、両方とも同じ仮想要素と相互作用することができる可能性がある。したがって、個々のセルタワー１３０は、最初は、要素との競合する相互作用を承認することができるが、サーバ１２０は、競合を検出し、競合を解決するために更新を送信する（例えば、セルタワーの１つに、そのアクションの最初の承認を取り消し、それに応じてそのローカル状態を更新するように指示する）。
【００３６】
ローカルデータストア３６０は、セルタワーによって使用されるデータを格納するように構成された１つ又は複数の非一時的なコンピュータ可読媒体である。一実施形態では、記憶されたデータは、マップデータ、現在の状態データ、現在（又は少し前に）接続されたクライアント１１０Ａおよび１１０Ｂのリスト、地理的領域のゲーム状態のローカルコピーなどを含み得る。ローカルデータストア３６０は単一のエンティティとして示されているが、データは複数の記憶媒体に分割されてもよい。更に、一部のデータは通信ネットワークの他の場所に保存され、リモートでアクセスされてもよい。例えば、セルタワー１３０は、必要に応じて、現在の状態データにリモートで（例えば、サードパーティサーバから）アクセスすることができる。
【００３７】
＜方法の例＞
図４は、一実施形態による、低レイテンシデータグラム応答性コンピュータネットワークプロトコルを使用するためのプロセスを例示する。セルタワー１３０は、ターゲットクライアントデバイスであるクライアント１１０Ａにアドレス指定されたデータグラム２００を受信する（４０５）。他の実施形態では、セルタワー１３０は、この実施形態のセルタワー１３０と同じ操作を実行する別のタイプの中間ノードであってもよい。データグラム２００は、クライアント１１０Ｂなどの別のクライアントデバイスからセルタワー１３０に送信される場合がある。データグラム２００はまた、現実世界におけるプレーヤーの位置がゲーム世界における彼らの位置と相関する並行現実ゲームに関連するものなど、共有ＡＲ環境で発生したアクションを記述する。
【００３８】
セルタワー１３０は、データグラム２００を分析して（４１０）、そのＰ２Ｐフラグ２０６に基づいてデータグラムがＰ２Ｐであるかどうかを判定する。データグラム２００がＰ２Ｐである場合、セルタワー１３０は、データグラム２００をクライアント１１０Ａに送信して（４１５）、クライアント１１０Ａでの共有ＡＲ環境のローカル状態を更新して、アクションを示す。データグラム２００がＰ２Ｐでない場合、セルタワー１３０は、データグラム２００をサーバ１２０に送信して（４２０）、共有ＡＲ環境のマスター状態を更新して、アクション及びそのＡＲ環境への影響を示す。いくつかの実施形態では、セルタワー１３０はまた、それらをクライアント１１０Ａに送信した後、Ｐ２Ｐデータグラムのいくつか又はすべてをサーバ１２０に送信する。このように、クライアント１１０Ａおよび１１０Ｂは、Ｐ２Ｐメッセージに基づいてローカル状態を同期することができ、一方、サーバ１２０は、異なるクライアントのローカル状態間の不一致を解決するために使用できるマスター状態を維持する。Ｐ２Ｐデータグラムのためにサーバ１２０をバイパスすることによって、セルタワー１３０は、ＡＲ環境のローカル状態が更新される前にデータグラムがサーバ１２０による処理を必要としないときにＡＲ環境で発生するアクションのレイテンシを改善できる。様々な実施形態において、ローカル状態は、１ミリ秒から１０ミリ秒、１ミリ秒から１５ミリ秒、１ミリ秒から２０ミリ秒、又は１ミリ秒から３０ミリ秒の間のレイテンシで更新される。
【００３９】
いくつかの実施形態では、セルタワー１３０は、データグラム２００がＰ２Ｐであるかどうかを判定するために複数のステップに従う。セルタワー１３０は、インジケータ、又はＰ２Ｐフラグ２０６を分析して、データグラム２００がＰ２Ｐで送信されるべきかどうかを判定する。次に、セルタワー１３０は、クライアント１１０Ａがセルタワー１３０に現在接続されているかどうかを判定する。そうである場合、セルタワー１３０は、データグラム２００がＰ２Ｐであり、サーバ１２０の代わりにクライアント１１０Ａに直接送信することができると判定する。セルタワー１３０がクライアント１１０Ａに現在接続されていない場合、データグラムがＰ２ＰであることをＰ２Ｐフラグ２０６が示していても、セルタワー１３０はデータグラム２００をサーバ１２０に送信する。
【００４０】
図４のプロセスは、プレーヤーが互いに光のボールを投げ、他のプレーヤーがリアルタイムでかわすか又はキャッチする並行現実ゲームに組み込まれる例示的な共有ＡＲ環境に関連して更に説明され得る。この例においてクライアント１１０Ｂに関連付けられた送信側プレーヤーが、クライアント１１０Ａに関連付けられたターゲットプレーヤーに光の球を投げると、クライアント１１０Ｂは、アクション（例えば、光の球を投げること）を記述するデータグラム２００を作成する。アクションはプレーヤー間で行われ、共有ＡＲ環境で迅速に発生する必要があるため、クライアント１１０Ｂは、データグラム２００がＰ２Ｐであることをデータグラム２００に示す。クライアント１１０Ｂは、データグラム２００をセルタワー１３０に送信し、セルタワー１３０は、データグラム２００をどう処理するかを判定する。データグラムはＰ２Ｐであるため、セルタワー１３０は、データグラム２００をサーバ１２０ではなくクライアント１１０Ａに送信する。クライアント１１０Ａは、データグラム２００を受信し、ペイロード２０２からのデータを共有ＡＲ環境のローカル状態に統合する（例えば、送信側プレーヤーがそれらに光の球を投げたことをターゲットプレーヤーに示す）。データグラム２００をサーバ１２０に送信しないことにより、レイテンシが短縮される。レイテンシが十分に短いと、アクションがリアルタイムで発生したかのようにターゲットプレーヤーのローカル表示に現れ、ゲームプレイをより迅速に続行できる。これにより、プレーヤーはお互いの直接的な相互作用の感覚を体験することもできる。例えば、仮想キャッチゲームでは、あるプレーヤーが仮想ボールを投げ、別のプレーヤーがクライアントをボールの軌道に置くことによって仮想ボールをキャッチするのを目撃することができる。
【００４１】
セルタワー１３０は、データグラム２００をクライアント１１０Ａに送信した後、データグラム２００又はデータグラム２００のコピーをサーバ１２０に送信することができる。このようにして、共有ＡＲ環境のマスター状態が更新され、送信側プレーヤーがターゲットプレーヤーに光の球を投げたことが示される。データグラム３００をサーバ１２０に送信することは、レイテンシよりも時間的に近い異なるプレーヤーによって実行されるアクション間の競合を解決する方法を提供することができる。更に、サーバ１２０は、クライアント１１０Ａまたは１１０Ｂが別のセルタワーに接続されているときに、データグラム２００から他のセルタワーへの情報の送信を処理することができる（例えば、クライアント１１０Ａまたは１１０Ｂが隣接するセルタワーに切り替わるとき、プレーヤーは、別のセルタワーに接続されているクライアント１１０Ａまたは１１０Ｂなどを用いて別のプレーヤーにメッセージを送る）。いくつかの実施形態では、セルタワーは、セルタワー１３０及び共有ＡＲ環境に現在接続されているクライアント１１０Ａおよび１１０Ｂのグループ（例えば、セルタワー及びＡＲ環境に接続されているすべてのクライアント）を判定し、それらのクライアント１１０Ａおよび１１０Ｂに関連付けられたプレーヤーが、アクションが迅速に、一見リアルタイムで（例えば、１０ミリ秒未満のレイテンシで）発生するのを見ることができるようにするため、データグラムをそのクライアント１１０Ａおよび１１０Ｂのグループに送信することができる。
【００４２】
図５は、一実施形態による、図１に示されるコンピュータネットワーク内での使用に適した例示的なコンピュータ５００を示すハイレベルブロック図である。例示的なコンピュータ５００は、チップセット５０４に結合された少なくとも１つのプロセッサ５０２を含む。チップセット５０４は、メモリコントローラハブ５２０及び入力／出力（input/output：Ｉ／Ｏ）コントローラハブ５２２を含む。メモリ５０６及びグラフィックアダプタ５１２は、メモリコントローラハブ５２０に結合され、ディスプレイ５１８は、グラフィックアダプタ５１２に結合される。ストレージデバイス５０８、キーボード５１０、ポインティングデバイス５１４、及びネットワークアダプタ５１６は、Ｉ／Ｏコントローラハブ５２２に結合されている。コンピュータ５００の他の実施形態は、異なるアーキテクチャを有する。
【００４３】
図５に示す実施形態では、ストレージデバイス５０８は、ハードドライブ、コンパクトディスク読み取り専用メモリ（compact disk read-only memory：ＣＤ−ＲＯＭ）、ＤＶＤ、又はソリッドステートストレージデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ５０６は、プロセッサ５０２によって使用される命令及びデータを保持する。ポインティングデバイス５１４は、マウス、トラックボール、タッチスクリーン、又は他のタイプのポインティングデバイスであり、キーボード５１０（オンスクリーンキーボードであってもよい）と組み合わせて使用されて、コンピュータシステム５００にデータを入力する。グラフィックアダプタ５１２は、画像及び他の情報をディスプレイ５１８に表示する。ネットワークアダプタ５１６は、コンピュータシステム５００を１つ又は複数のコンピュータネットワークに結合する。
【００４４】
図１のエンティティによって使用されるコンピュータのタイプは、実施形態及びエンティティによって要求される処理能力に応じて変化し得る。例えば、サーバ１２０は、説明された機能を提供するために一緒に動作する複数のブレードサーバを含む分散データベースシステムを含み得る。更に、コンピュータは、キーボード５１０、グラフィックアダプタ５１２、及びディスプレイ５１８などの上記のコンポーネントのいくつかを欠くことができる。
【００４５】
当技術分野の当業者は、記載された概念から逸脱することなく、本明細書に開示される装置及び技術の多くの使用及び修正及び逸脱を行うことができる。例えば、本開示で図示又は説明される構成要素又は特徴は、図示又は説明される場所、設定、又は文脈に限定されない。本開示による装置の例は、前述の図の１つ又は複数を参照して説明されたものよりも、すべて、より少ない、又は異なる構成要素を含むことができる。したがって、本開示は、本明細書に記載の特定の実施に限定されるものではなく、添付の特許請求の範囲及びその等価物と一致する可能な限り広い範囲を与えられるべきである。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2021524696.tif 000008
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2021524696.tif 000009
【国際調査報告】
2021524696.tif 000010
2021524696.tif 000011