JP2021524696A - 低レイテンシデータグラム応答性コンピュータネットワークプロトコル - Google Patents

低レイテンシデータグラム応答性コンピュータネットワークプロトコル Download PDF

Info

Publication number
JP2021524696A
JP2021524696A JP2020572883A JP2020572883A JP2021524696A JP 2021524696 A JP2021524696 A JP 2021524696A JP 2020572883 A JP2020572883 A JP 2020572883A JP 2020572883 A JP2020572883 A JP 2020572883A JP 2021524696 A JP2021524696 A JP 2021524696A
Authority
JP
Japan
Prior art keywords
datagram
peer
cell tower
client
client device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020572883A
Other languages
English (en)
Other versions
JP7033219B2 (ja
Inventor
ピーター ターナー
ピーター ターナー
ハイメ イワン セルバンテス
ハイメ イワン セルバンテス
シーイン ダイアナ フー
シーイン ダイアナ フー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Niantic Inc
Original Assignee
Niantic Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Niantic Inc filed Critical Niantic Inc
Publication of JP2021524696A publication Critical patent/JP2021524696A/ja
Application granted granted Critical
Publication of JP7033219B2 publication Critical patent/JP7033219B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/33Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
    • A63F13/332Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using wireless networks, e.g. cellular phone networks
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/34Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using peer-to-peer connections
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/65Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor automatically by game devices or servers from real world data, e.g. measurement in live racing competition
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/216Input arrangements for video game devices characterised by their sensors, purposes or types using geographical information, e.g. location of the game device or player using GPS
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/08Access point devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Child & Adolescent Psychology (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

共有拡張現実環境を提供するためのシステム及び方法が提供される。特に、ピアツーピアプロトコルを使用してデータグラムの送信先を判定することにより、通信のレイテンシが短縮される。データグラムは、共有拡張現実環境内で発生するアクションを記述し、データグラムの処理は、通信ネットワークの中間ノード(セルタワーなど)とサーバの間で分割される。その結果、データグラムにピアツーピアのラベルが付けられている場合、中間ノードはクライアントデバイスのローカル状態に更新を提供し、それ以外の場合はサーバ上のマスター状態に更新を提供することができる。これにより、通信のレイテンシが短縮され、ロケーションベースの並行現実ゲームのユーザは、共有拡張現実環境でアクションがより迅速に発生することを確認できる。

Description

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

Claims (20)

  1. 方法であって、
    共有拡張現実環境に接続された送信クライアントデバイスからのデータグラムをセルタワーで受信するステップであって、前記データグラムは、前記共有拡張現実環境におけるアクションに関するデータと、前記データグラムがピアツーピアであるかどうかのインジケータとを含むステップと、
    前記インジケータに基づいて前記データグラムがピアツーピアであるかどうかを判定するステップと、
    前記データグラムがピアツーピアであるとの判定に応じて、前記共有拡張現実環境に接続された1つ又は複数の他のクライアントデバイスに前記データグラムを送信し、前記アクションを考慮して、前記1つ又は複数のターゲットクライアントデバイスにおける前記共有拡張現実環境のローカル状態を更新するステップと、
    前記データグラムがピアツーピアでないとの判定に応じて、前記データグラムをサーバに送信し、前記アクションを考慮して、前記サーバにおける前記共有拡張現実環境のマスター状態を更新するステップと、
    を含む、方法。
  2. 前記インジケータが前記データグラムのヘッダ部分に含まれる、請求項1に記載の方法。
  3. 前記データグラムがピアツーピアであるかどうかを判定するステップが、
    前記インジケータに基づいて、前記データグラムをピアツーピアで送信する必要があることを判定するステップと、
    前記データグラムのヘッダに基づいて特定のターゲットクライアントデバイスを識別するステップと、
    前記特定のターゲットクライアントデバイスが前記セルタワーに現在接続されているかどうかを判定するステップと、
    前記特定のクライアントデバイスが前記セルタワーに現在接続されていることに応じて、前記データグラムがピアツーピアであると判定するステップと、
    を含む、請求項1に記載の方法。
  4. 前記データグラムが、前記特定のターゲットクライアントデバイスが前記セルタワーに現在接続されていないとの判定に応じて、前記サーバに送信される、請求項3に記載の方法。
  5. 前記共有拡張現実環境の前記ローカル状態が、1ミリ秒から20ミリ秒の間のレイテンシで前記アクションを考慮して更新される、請求項1に記載の方法。
  6. 前記データグラムを1つ又は複数の他のクライアントデバイスに送信するステップが、
    前記セルタワーと前記共有拡張現実環境に現在接続されているクライアントデバイスを識別するステップと、
    前記データグラムを前記識別されたクライアントデバイスに送信して、前記アクションを考慮して各クライアントデバイスの前記共有拡張現実環境のローカル状態を更新するステップと、
    を含む請求項1に記載の方法。
  7. 前記データグラムがピアツーピアであるとの判定に応じて、前記データグラムが前記サーバにも送信される、請求項1に記載の方法。
  8. 前記データグラムがピアツーピアであるかどうかを判定するステップが、
    前記インジケータを前記セルタワーによって維持されているインジケータのリストと比較するステップと、
    前記インジケータがインジケータの前記リストに含まれることに応じて、前記データグラムがピアツーピアであると判定するステップと、
    を含む、請求項1に記載の方法。
  9. 前記インジケータは、ARセッション、ユーザ、デバイス、又はゲームアカウントのうちの少なくとも1つを識別する、請求項8に記載の方法。
  10. プロセッサによって実行可能な命令を含む非一時的なコンピュータ可読記憶媒体であって、前記命令が、
    共有拡張現実環境に接続された送信クライアントデバイスからのデータグラムをセルタワーで受信するステップのための命令であって、前記データグラムは、前記共有拡張現実環境におけるアクションに関するデータと、前記データグラムがピアツーピアであるかどうかのインジケータとを含む命令と、
    前記インジケータに基づいて前記データグラムがピアツーピアであるかどうかを判定するステップのための命令と、
    前記データグラムがピアツーピアであるとの判定に応じて、前記共有拡張現実環境に接続された1つ又は複数の他のクライアントデバイスに前記データグラムを送信し、前記アクションを考慮して、前記1つ又は複数のターゲットクライアントデバイスにおける前記共有拡張現実環境のローカル状態を更新するステップのための命令と、
    前記データグラムがピアツーピアでないとの判定に応じて、前記データグラムをサーバに送信し、前記アクションを考慮して、前記サーバにおける前記共有拡張現実環境のマスター状態を更新するステップのための命令と、
    を含む、非一時的なコンピュータ可読記憶媒体。
  11. 前記インジケータが前記データグラムのヘッダ部分に含まれる、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
  12. 前記データグラムがピアツーピアであるかどうかを判定するステップが、
    前記インジケータに基づいて、前記データグラムをピアツーピアで送信する必要があることを判定するステップと、
    前記データグラムのヘッダに基づいて特定のターゲットクライアントデバイスを識別するステップと、
    前記特定のターゲットクライアントデバイスが前記セルタワーに現在接続されているかどうかを判定するステップと、
    前記特定のクライアントデバイスが前記セルタワーに現在接続されていることに応じて、前記データグラムがピアツーピアであると判定するステップと、
    を含む、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
  13. 前記データグラムが、前記特定のターゲットクライアントデバイスが前記セルタワーに現在接続されていないとの判定に応じて、前記サーバに送信される、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
  14. 前記ターゲットクライアントデバイスにおける前記共有拡張現実環境の前記ローカル状態が、1ミリ秒から20ミリ秒の間のレイテンシで前記アクションを考慮して更新される、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
  15. 前記データグラムを1つ又は複数の他のクライアントデバイスに送信するステップが、
    前記セルタワーと前記共有拡張現実環境に現在接続されているクライアントデバイスを識別するステップと、
    前記データグラムを前記識別されたクライアントデバイスに送信して、前記アクションを考慮して各クライアントデバイスの前記共有拡張現実環境のローカル状態を更新するステップと、
    を含む、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
  16. 前記データグラムがピアツーピアであるとの判定に応じて、前記データグラムが前記サーバにも送信される、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
  17. 前記データグラムがピアツーピアであるかどうかを判定するステップが、
    前記インジケータを前記セルタワーによって維持されているインジケータのリストと比較するステップと、
    前記インジケータがインジケータの前記リストに含まれることに応じて、前記データグラムがピアツーピアであると判定するステップと、を含む、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
  18. 前記インジケータは、ARセッション、ユーザ、デバイス、又はゲームアカウントのうちの少なくとも1つを識別する、請求項10に記載の非一時的なコンピュータ可読記憶媒体。
  19. セルタワーであって、
    前記セルタワーに接続されているクライアントデバイスのリストを記憶するローカルデータストアと、
    ルーティングモジュールであって、
    ターゲットクライアントデバイスにアドレス指定されたデータグラムを受信する動作であって、前記データグラムが共有拡張現実環境におけるアクションに関するデータを含むステップと、
    前記ターゲットクライアントデバイスが前記リストにあるかどうかを判定するステップと、
    前記ターゲットクライアントデバイスが前記リストにあることに応じて、前記データグラムがピアツーピアであると判定するステップと、
    前記データグラムがピアツーピアであるとの判定に応じて、前記データグラムを前記ターゲットクライアントデバイスに送信し、前記アクションを考慮して、前記ターゲットクライアントデバイスにおける前記共有拡張現実環境のローカル状態を更新するステップと、
    前記データグラムがピアツーピアでないとの判定に応じて、前記データグラムをサーバに送信し、前記アクションを考慮して、前記サーバにおける前記共有拡張現実環境のマスター状態を更新するステップと、
    を含む動作を実行するように構成されたルーティングモジュールと、
    を備える、セルタワー。
  20. 前記データグラムが、前記データグラムのヘッダ部分に、前記データグラムがピアツーピアであるかどうかのインジケータを更に含み、前記データグラムがピアツーピアであるとの判定が、前記インジケータに更に応答する、請求項19に記載のセルタワー。
JP2020572883A 2018-06-27 2019-06-25 低レイテンシデータグラム応答性コンピュータネットワークプロトコル Active JP7033219B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862690578P 2018-06-27 2018-06-27
US62/690,578 2018-06-27
US16/450,904 US11077365B2 (en) 2018-06-27 2019-06-24 Low latency datagram-responsive computer network protocol
US16/450,904 2019-06-24
PCT/US2019/038984 WO2020005939A1 (en) 2018-06-27 2019-06-25 Low latency datagram-responsive computer network protocol

Publications (2)

Publication Number Publication Date
JP2021524696A true JP2021524696A (ja) 2021-09-13
JP7033219B2 JP7033219B2 (ja) 2022-03-09

Family

ID=68987506

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020572883A Active JP7033219B2 (ja) 2018-06-27 2019-06-25 低レイテンシデータグラム応答性コンピュータネットワークプロトコル

Country Status (9)

Country Link
US (3) US11077365B2 (ja)
EP (1) EP3815343A4 (ja)
JP (1) JP7033219B2 (ja)
KR (1) KR102276899B1 (ja)
CN (1) CN112352413B (ja)
AU (1) AU2019292191B2 (ja)
CA (1) CA3104510C (ja)
TW (1) TWI722461B (ja)
WO (1) WO2020005939A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7591630B2 (en) 2003-08-29 2009-09-22 Casepick Systems, Llc Materials-handling system using autonomous transfer and transport vehicles
US11077365B2 (en) 2018-06-27 2021-08-03 Niantic, Inc. Low latency datagram-responsive computer network protocol
EP3918579A4 (en) 2019-02-25 2022-04-13 Niantic, Inc. AUGMENTED REALITY MOBILE EDGE COMPUTATION
AU2020409015A1 (en) 2019-12-20 2022-08-25 Niantic, Inc. Data hierarchy protocol for data transmission pathway selection
CN111603764B (zh) * 2020-05-28 2021-05-28 腾讯科技(深圳)有限公司 一种云游戏的处理方法及设备
US11724188B2 (en) * 2020-09-29 2023-08-15 Activision Publishing, Inc. Methods and systems for selecting a level of detail visual asset during the execution of a video game
US11717753B2 (en) * 2020-09-29 2023-08-08 Activision Publishing, Inc. Methods and systems for generating modified level of detail visual assets in a video game
US11833423B2 (en) 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game
EP4370223A1 (en) * 2021-07-16 2024-05-22 Niantic, Inc. Reducing latency in anticheat dataflow

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011188358A (ja) * 2010-03-10 2011-09-22 Panasonic Corp Vpn装置及びip通信装置
JP2016143076A (ja) * 2015-01-29 2016-08-08 エヌ・ティ・ティ・コミュニケーションズ株式会社 通信制御装置、通信制御方法及び通信制御プログラム

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6473404B1 (en) 1998-11-24 2002-10-29 Connect One, Inc. Multi-protocol telecommunications routing optimization
US6865169B1 (en) * 1999-11-02 2005-03-08 Ipwireless, Inc. Cellular wireless internet access system using spread spectrum and internet protocol
TW463840U (en) 2000-05-26 2001-11-11 Great Asia Engineering Consult Construction device for retaining wall and foundation pile of caisson type
SE520129C2 (sv) 2000-10-27 2003-05-27 Terraplay Systems Ab Kommunikationsinfrastrukturanordning i och en datorläsbar programprodukt för ett databearbetningssystem för fleranvändarapplikationer
US7616961B2 (en) 2002-04-29 2009-11-10 Harris Corporation Allocating channels in a mobile ad hoc network
US8149707B2 (en) 2003-02-12 2012-04-03 Rockstar Bidco, LP Minimization of radio resource usage in multi-hop networks with multiple routings
EP1678886B1 (en) * 2003-10-27 2009-02-18 Nokia Corporation Method and devices for relayed peer-to-peer communications between terminals in mobile networks
US20170310500A1 (en) 2005-03-16 2017-10-26 Icontrol Networks, Inc. Controlling Data Routing in Premises Management Systems
WO2006125454A1 (en) * 2005-05-23 2006-11-30 Telefonaktiebolaget L.M. Ericsson (Publ.) Traffic diversion in an ethernet-based access network
US20070104190A1 (en) * 2005-11-07 2007-05-10 Nokia Corporation User datagram protocol packet processing on network elements
US7839815B2 (en) 2006-02-10 2010-11-23 Alcatel-Lucent Usa Inc. Triggering migration of a network access agent associated with an access terminal
US8503431B2 (en) * 2006-08-25 2013-08-06 Wireless Wonders Ltd. Mobile phone related indirect communication system and method
US8787366B2 (en) * 2007-06-29 2014-07-22 Qualcomm Incorporated Community driven program access system and method
US8407605B2 (en) 2009-04-03 2013-03-26 Social Communications Company Application sharing
WO2009070713A1 (en) 2007-11-29 2009-06-04 Bigfoot Networks, Inc. Remote message routing device and methods thereof
US8654709B2 (en) * 2008-04-29 2014-02-18 Nokia Siemens Networks Oy Decentrallizing core network functionalities
US8619756B2 (en) 2009-07-15 2013-12-31 Qualcomm Incorporated Systems and methods for providing resource allocation meeting communication constraints for multi-hop network data flows
US9992762B2 (en) 2010-02-25 2018-06-05 James Michael Graziano Reverse path communication system
US8402515B2 (en) 2010-05-06 2013-03-19 Jonathan Weizman Apparatus and method for establishing a peer-to-peer communication session with a client device
JP5507350B2 (ja) 2010-06-11 2014-05-28 任天堂株式会社 携帯型情報端末、携帯型情報端末制御プログラム、携帯型情報システム、および、携帯型情報端末制御方法
KR101763887B1 (ko) 2011-01-07 2017-08-02 삼성전자주식회사 디바이스간 동기화된 인터랙션을 제공하는 콘텐츠 동기화 장치 및 방법
KR101292463B1 (ko) 2011-01-27 2013-07-31 주식회사 팬택 원격으로 증강현실 서비스를 공유하는 증강현실 시스템 및 그 방법
WO2012115616A1 (en) 2011-02-21 2012-08-30 Research In Motion Limited On the managed peer-to-peer sharing in cellular networks
CN102843349B (zh) 2011-06-24 2018-03-27 中兴通讯股份有限公司 实现移动增强现实业务的方法及系统、终端及服务器
US20130034047A1 (en) * 2011-08-05 2013-02-07 Xtreme Labs Inc. Method and system for communicating with web services using peer-to-peer technology
CN102984186A (zh) 2011-09-05 2013-03-20 中兴通讯股份有限公司 会话建立方法及装置
CN104011788B (zh) 2011-10-28 2016-11-16 奇跃公司 用于增强和虚拟现实的系统和方法
CA2857961A1 (en) * 2011-12-02 2013-06-06 No Strings Toys, Llc Wireless devices and control method
US20130178257A1 (en) 2012-01-06 2013-07-11 Augaroo, Inc. System and method for interacting with virtual objects in augmented realities
JP6048784B2 (ja) 2012-02-16 2016-12-21 任天堂株式会社 ゲームシステム、ゲーム制御方法、携帯型ゲーム装置及びゲーム制御プログラム
EP2645667A1 (en) 2012-03-27 2013-10-02 Alcatel-Lucent Apparatus for updating and transmitting augmented reality data
US20140015858A1 (en) 2012-07-13 2014-01-16 ClearWorld Media Augmented reality system
US9148484B2 (en) 2013-07-15 2015-09-29 Federico Fraccaroli Method, system and apparatus for providing a mediated sensory experience to users positioned in a shared location
WO2014031899A1 (en) 2012-08-22 2014-02-27 Goldrun Corporation Augmented reality virtual content platform apparatuses, methods and systems
CN102968549B (zh) 2012-10-17 2016-01-20 北京大学 基于智能移动终端设备的多人在线交互方法与系统
US9720505B2 (en) 2013-01-03 2017-08-01 Meta Company Extramissive spatial imaging digital eye glass apparatuses, methods and systems for virtual or augmediated vision, manipulation, creation, or interaction with objects, materials, or other entities
GB2513345B (en) * 2013-04-23 2017-07-26 Gurulogic Microsystems Oy Data communication system and method
US9413797B2 (en) * 2013-04-23 2016-08-09 Gurulogic Microsystems Oy Data communication system and method
CN105794177A (zh) 2013-12-01 2016-07-20 交互数字专利控股公司 使用基于策略的决策引擎的体验质量优化
CN103760972B (zh) 2013-12-18 2017-03-01 微软技术许可有限责任公司 跨平台的增强现实体验
US10142444B2 (en) * 2014-07-01 2018-11-27 Trinity Mobile Networks, Inc. Methods, devices, and systems for implementing centralized hybrid wireless self-organizing networks
KR101608172B1 (ko) 2014-12-22 2016-03-31 주식회사 넥슨코리아 객체를 제어하는 방법 및 장치
US11627639B2 (en) * 2015-01-26 2023-04-11 Ievgen Verzun Methods and apparatus for HyperSecure last mile communication
US10382322B2 (en) 2015-11-20 2019-08-13 Sap Se Data routing for electronic devices
US10201755B2 (en) 2016-02-25 2019-02-12 Pick A Play Networks Inc. System and method for providing a platform for real time interactive game participation
US10238965B2 (en) 2016-04-28 2019-03-26 Sony Interactive Entertainment America Llc Cloud gaming device handover
KR101940720B1 (ko) 2016-08-19 2019-04-17 한국전자통신연구원 공간 기반 증강현실을 위한 콘텐츠 저작 장치 및 그 방법
US10812936B2 (en) 2017-01-23 2020-10-20 Magic Leap, Inc. Localization determination for mixed reality systems
CN106656800B (zh) 2017-02-21 2020-04-14 网宿科技股份有限公司 一种路径选取方法及系统、网络加速节点及网络加速系统
US20180262432A1 (en) 2017-03-10 2018-09-13 Vidscale, Inc. Vertical packet aggregation using a distributed network
US10885714B2 (en) 2017-07-07 2021-01-05 Niantic, Inc. Cloud enabled augmented reality
US10717005B2 (en) 2017-07-22 2020-07-21 Niantic, Inc. Validating a player's real-world location using activity within a parallel reality game
US11077365B2 (en) 2018-06-27 2021-08-03 Niantic, Inc. Low latency datagram-responsive computer network protocol
US10911381B2 (en) 2018-12-27 2021-02-02 Verizon Media Inc. Presenting and sharing augmented reality objects
EP3918579A4 (en) * 2019-02-25 2022-04-13 Niantic, Inc. AUGMENTED REALITY MOBILE EDGE COMPUTATION
US11182966B2 (en) 2019-06-24 2021-11-23 At&T Intellectual Property I, L.P. System for collaboration of augmented reality events

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011188358A (ja) * 2010-03-10 2011-09-22 Panasonic Corp Vpn装置及びip通信装置
JP2016143076A (ja) * 2015-01-29 2016-08-08 エヌ・ティ・ティ・コミュニケーションズ株式会社 通信制御装置、通信制御方法及び通信制御プログラム

Also Published As

Publication number Publication date
TWI722461B (zh) 2021-03-21
KR20210013654A (ko) 2021-02-04
CN112352413A (zh) 2021-02-09
CN112352413B (zh) 2022-04-12
TW202007123A (zh) 2020-02-01
EP3815343A4 (en) 2021-08-11
US11497995B2 (en) 2022-11-15
US11077365B2 (en) 2021-08-03
KR102276899B1 (ko) 2021-07-15
EP3815343A1 (en) 2021-05-05
US11833420B2 (en) 2023-12-05
JP7033219B2 (ja) 2022-03-09
WO2020005939A1 (en) 2020-01-02
CA3104510A1 (en) 2020-01-02
US20210268376A1 (en) 2021-09-02
AU2019292191A1 (en) 2021-02-18
US20230022262A1 (en) 2023-01-26
CA3104510C (en) 2022-01-11
AU2019292191B2 (en) 2021-10-21
US20200001180A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
JP7033219B2 (ja) 低レイテンシデータグラム応答性コンピュータネットワークプロトコル
JP7518139B2 (ja) 拡張現実モバイルエッジコンピュータ
CN115136559A (zh) 用于数据传输路径选择的数据层次结构协议
TWI849064B (zh) 擴增實境行動邊緣計算

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210224

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220225

R150 Certificate of patent or registration of utility model

Ref document number: 7033219

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150