JP2023507770A - データ送信経路選択のためのデータヒエラルキープロトコル - Google Patents

データ送信経路選択のためのデータヒエラルキープロトコル Download PDF

Info

Publication number
JP2023507770A
JP2023507770A JP2022538070A JP2022538070A JP2023507770A JP 2023507770 A JP2023507770 A JP 2023507770A JP 2022538070 A JP2022538070 A JP 2022538070A JP 2022538070 A JP2022538070 A JP 2022538070A JP 2023507770 A JP2023507770 A JP 2023507770A
Authority
JP
Japan
Prior art keywords
data
client
network
game
paths
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
JP2022538070A
Other languages
English (en)
Other versions
JP7485768B2 (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 JP2023507770A publication Critical patent/JP2023507770A/ja
Application granted granted Critical
Publication of JP7485768B2 publication Critical patent/JP7485768B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/123Evaluation of link metrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • 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/213Input arrangements for video game devices characterised by their sensors, purposes or types comprising photodetecting means, e.g. cameras, photodiodes or infrared cells
    • 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
    • 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/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • 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
    • A63F13/655Generating 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 by importing photos, e.g. of the player
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates

Abstract

データフローヒエラルキープロトコルは、1つ以上のデバイスがネットワーク通信のためのデータグラムをどのように処理するかを最適化するために、1つ以上のデバイスによって実施される。データフローヒエラルキーは、データフローについての様々な利用可能なネットワーク経路を考慮する。データフローヒエラルキーを実施するデバイスは、1つ以上の利用可能なネットワーク経路を選択して、他のデバイスとのデータ通信において低レイテンシを提供する。デバイスは、経路メトリック(例えば、レイテンシ)を決定し、メトリックに基づいて1つ以上のネットワーク経路を選択するために、様々な利用可能なネットワーク経路をサンプリングしうる。利用可能なネットワーク経路は、ゲームサーバを通る経路、セルタワーを通る経路、及びネットワークを通る経路などの、1つ以上の中間ノードを通る経路を含むことができる。

Description

本出願は、2019年12月20日に提出された米国仮出願第62/951,926号の利益を主張し、その全体が参照によって組み込まれる。
本開示は、コンピュータネットワークプロトコルに関し、特に、互いに物理的に近い範囲にあるデバイス間の低レイテンシ無線通信を提供するためのプロトコルに関する。
コンピュータネットワークは、インターネットなど、データを交換する相互接続されたコンピューティングデバイスの集合である。ユーザデータグラムプロトコル(UDP)などの通信プロトコルは、コンピュータネットワークを利用してデータを交換するルールの仕組みを定義する。UDPは、データグラムの保証された配送、順序、又は非重複のないコネクションレス型通信モデルに従う。データグラムは、通信の基本ユニットであり、ヘッダ及びペイロードを含む。ヘッダは、送信元ポート、宛先ポート、データグラムの長さ、及びデータグラムのチェックサムなど、データグラムの態様を指定するメタデータである。ペイロードは、データグラムによって通信されるデータである。UDPを利用して通信するコンピューティングデバイスは、コンピュータネットワークを介して互いにデータグラムを送信する。
UDPなどのコネクションレス型通信プロトコルは、概して、データを送信する前にコンピューティングデバイス間の接続を確立する伝送制御プロトコル(TCP)のようなコネクション型通信プロトコルより低いオーバーヘッド及びレイテンシを有する。しかし、既存のコネクションレス型通信プロトコルは、既存技術によって適応されるものより低いレイテンシを要求するデータ転送に対して不十分である。例えば、毎秒60フレーム(FPS)での拡張現実(AR)環境ストリーミングは、レイテンシに、現在の技術によって提供されるものより低いオーダを要求しうる。そのようなAR環境において、フレームは、約16ミリ秒間隔で配置されることがあり、一方で、現在のネットワークプロトコルは、典型的に約100ミリ秒(又はそれより大きい)レイテンシを提供する。
かくして、既存の技術では、ユーザは、AR環境内で相互作用(interact)するとき、ある程度のレイテンシに遭遇する。このレイテンシは、AR位置データの古い状態を伴う相互作用を引き起こすことがある。例えば、パラレルリアリティゲームにおいて、プレイヤーは、古い位置(例えば、オブジェクトが100ミリ秒前にいた位置)にあるARオブジェクトを見ることがある一方、実際のAR位置データは、新しいオブジェクトの位置を有する(例えば、ARオブジェクトは、他のプレイヤーによって既に動かされている)。クライアントと、パラレルリアリティゲームをホストし又はコーディネートするサーバとの間の通信において、このレイテンシは、ユーザ体験を妨げる結果に繋がりうる。レイテンシは、AR環境の他のプレイヤーの視界に見える一人のプレーヤのアクション間の顕著な遅延を引き起こすことがあるため、この問題は、特に、一人より多くのユーザがパラレルリアリティゲームに参加する場面で深刻になりうる。さらに、プレイヤーの数が増えるにつれ、遅延に起因するミスマッチがさらにひどくなりうる。
拡張現実(AR)システムは、コンピュータが生成したコンテンツで現実世界の視界を補う。ARをパラレルリアリティゲームに組み込むことは、現実世界と仮想世界との間の統合を改善しうる。ARは、プレーヤーらが相互作用する共有ゲーミング体験に参加する機会をプレーヤーらに提供することによって、プレーヤー間のインタラクティブ性も増加させうる。例えば、戦車バトルゲームにおいて、プレーヤーは、現実世界位置の周りにある仮想戦車をナビゲートして、互いの戦車を破壊することを企てることがある。戦車の移動は、現実世界の地形によって制限されうる(例えば、戦車は、川をよりゆっくりと移動し、道路をより速く移動し、壁を通っては移動できないなど)。
既存のARセッション技術は、マスタ状態を管理し、定期的に、ネットワーク(例えば、インターネット)を介して、クライアントでの環境のローカル状態をマスタ状態に同期させるサーバを含む。しかし、デバイスのローカル状態を同期させることは、かなりの時間(例えば、~100ミリ秒)を要することがあり、ゲーム体験に有害である。プレイヤーは、事実上、現在のゲーム状態というよりむしろ、過去のゲーム状態と相互作用している。レイテンシは、他のプレイヤーの視界に見える一人のプレーヤのアクション間の顕著な遅延を引き起こすため、この問題は、特に、一人より多くのユーザがパラレルリアリティゲームに参加する場面で深刻になりうる。例えば、一人のプレーヤーがその世界でARオブジェクトを移動する場合、他のプレイヤーは、人間が知覚可能な遅延である100ミリ秒(又はそれより大きい)後まで、それが動いたことが見えないことがある。かくして、他のプレイヤーは、その以前の位置内のオブジェクトに相互作用しようと試みるが、ゲームが遅延を正すときに(例えば、プレイヤーによって要求されるアクションを実施することを拒否するか、又は最初にアクションを実行し、次いで、プレイヤーのクライアントが次にサーバと同期するときに、それを呼び出すことによって)妨げられることがある。
この問題及び他の問題は、どのようにして1つ以上のデバイスがデータグラムを処理するかを最適化するデータフローヒエラルキープロトコルを実装することによって対処されうる。データフローヒエラルキーは、データフローのための様々なネットワーク経路を含む。データフローヒエラルキーを実装するデバイスは、1つ以上のネットワーク経路を利用して、他のデバイスとのデータ通信における低レイテンシを保証しうる。いくつかの実施形態において、デバイスは、様々なネットワーク経路をサンプリングして、中間ノードを通るデータ通信に利用するための最小レイテンシのネットワーク経路を決定する。様々なネットワーク経路は、ゲームサーバを通る経路、セルタワーを通る経路、及びネットワークを通る経路などの、1つ以上の中間ノードを通る経路を含みうる。ネットワーク経路は、(例えば、ブルートゥースを利用する)デバイス間の直接接続も含みうる。データフローヒエラルキーを利用することは、レイテンシをミリ秒のオーダ、例えば、5ミリ秒未満に改善しうる。さらに、データフローヒエラルキーは、バンド幅利用可能性に従ってバンド幅利用を最適化しうる。
実施形態による、データフローヒエラルキープロトコルが実装されうるネットワーク環境を示す。 一実施形態による、クライアントを示すブロック図である。 一実施形態による、ゲームサーバを示すブロック図である。 一実施形態による、セルタワーを示すブロック図である。 実施形態による、データフローヒエラルキープロトコルを利用するプロセスを示す。 実施形態による、セルタワー周辺の地域内のクライアント間でデータを送信するプロセスを示す。 実施形態による、図1に示したコンピュータネットワーク内の利用に適した例示的なコンピュータを示す高レベルブロック図である。
図及び以下の説明では、例示のみを目的として特定の実施形態について説明する。当業者は、構造及び方法の代替的な実施形態が、説明された原理から逸脱することなく採用されうることを、以下の説明から直ちに認識するだろう。ここでは、参照が様々な実施形態に対してなされることがあり、その例は、添付図に例示される。どこでも、実質的に類似又は同様の参照番号が、類似又は同様の機能性を示すために図中で利用される。要素が共通の番号を共有し、その後に異なる文字が続く場合、要素は類似又は同一である。数字のみが、そのような要素の任意の1つ又は任意の組み合わせを指す。
ネットワーク環境
ここで開示されるように、データフローヒエラルキープロトコルは、以前のアプローチと比較すると、減少したコンピュータネットワークレイテンシを提供しうる(例えば、一実施形態において、レイテンシは~10ミリ秒である)。図1は、一実施形態による、データフローヒエラルキープロトコルを利用して通信するコンピュータネットワーク100を示す。図は、明確にする目的でブロック図を利用して簡単化した例を示す。コンピュータネットワーク100は、2つのクライアント110と、ゲームデータベース115と、ゲームサーバ120と、セルタワー130と、ローカルエリアネットワーク(LAN)140とを含む。他の実施形態において、コンピュータネットワークは、追加的なクライアント110、追加的なゲームサーバ120、追加的なセルタワー130、又は他のネットワークノードなどの、より少ない要素、追加的な要素、又は他の要素を含んでよい。クライアント110は、パラレルリアリティゲームをホストするゲームサーバ120と通信する。クライアント110は、パラレルリアリティゲームの間、パラレルリアリティゲームの他のプレイヤーと相互作用するプレイヤーとして互いに通信する。
クライアント110は、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、スマートフォンなどのようなコンピューティングデバイスである。クライアント110は、例えば、パラレルリアリティゲームをプレイしている間、データフローヒエラルキープロトコルを利用して互いに通信することができる。実施形態において、各クライアント110は、ローカルARモジュールを含み、ゲームサーバ120は、マスタARモジュールを含む。各ローカルARモジュールは、ARデータを、他のクライアント110上のローカルARモジュール及び/又はゲームサーバ120上のマスタARモジュールと通信する。クライアント110については、図2でさらに説明されよう。
ゲームサーバ120は、同様に、様々なクライアント110によってプレイされるパラレルリアリティゲームをホストするコンピューティングデバイスである。ゲームサーバ120は、クライアント110の間の接続を確立して、パラレルリアリティゲーム状態の情報を受信及び送信する。ゲームサーバ120は、プレイヤープロファイル、ゲーム状態、マップ(リアル及びバーチャル)、及びゲームデータベース115内のパラレルリアリティゲームに関する他の情報を格納する。ゲームサーバ120については、図3でさらに説明されよう。
セルタワー130は、クライアント110間のデータ通信のために構成されたネットワークである。セルタワー130は、例えば、UDPを介して、クライアント110間のデータ転送を容易にしうる。1つ以上の実施形態において、セルタワー130は、セルタワー130に接続されたクライアント110間でパラレルリアリティゲームをホストすることを補助するように構成されるローカルARモジュールを有する。セルタワー130は、例えば、周期的に又はリアルタイムで、ゲームサーバ120とゲーム状態を共有しうる。セルタワー130については、図4でさらに説明される。
LAN140は、クライアントが接続しうるローカルネットワークである。LAN140は、クライアント110が接続しうる1つ以上のルータを含む。LAN140は、Wi-Fi及びイーサネットを伴って動作する。セルタワー130と同様に、LAN140は、LANに接続されたクライアント110間でパラレルリアリティゲームをホストすることを補助するように構成されたローカルARモジュールを含みうる。同様に、LAN140は、ゲーム状態をゲームサーバ120と共有する。
クライアント110は、データフローヒエラルキープロトコル、又は他の実施形態における他のプロトコルを利用して互いに通信しうる。互いに通信するために、2つ以上のクライアントが、1つ以上の経路を介してデータを送信する。図1に示すように、クライアント110Aとクライアント110Bとの間に、コンピュータネットワーク110内に存在する3つの経路がある。第1の経路においては、クライアント110は、例えば、TCPを利用して、ゲームサーバ120を介して互いに通信しうる。第2の経路においては、クライアント110は、例えば、TCP又はUDPを利用して、セルタワー130を介して互いに通信しうる。第3の経路においては、クライアント110は、例えば、TCP又はUDPを利用して、LAN140を介して互いに通信しうる。他の実施形態(不図示)においては、例えば、イーサネット、ブルートゥース、近距離無線通信(NFC)などを介する、クライアント間の通信のための他の経路がありうる。経路のそれぞれにおいて、クライアント110は、中間ノード、例えば、ゲームサーバ120、セルタワー130、又はLAN140を介して通信する。データフローヒエラルキープロトコルは、クライアント110間の利用可能な通信経路を評価し、クライアント110間でデータを通信する際に利用する1つ以上の経路を最適化する。
実施形態において、クライアント110通信は、ゲームサーバ120を通じてルーティングされるか又はピアトゥピア(P2P)でありうる。ゲームサーバ120を通じてルーティングされる通信は、セルタワー130を介して、第1のクライアント110Aからゲームサーバ120へと進み、次いで、セルタワー130を通じて第2のクライアント110Bへと戻る。対称的に、P2P通信は、第1のクライアント110Aからセルタワー130へと進み、次いで、直接的に第2のクライアント120Bへと進む。いくつかのケースでは、通信は、信号ブースターなどの他の中間デバイスを通過しうることに留意されたい。ここで利用されるように、ゲームサーバ120を通過せずにターゲットクライアント110Bへとルーティングされる場合、通信は、P2Pとみなされる。例えば、ターゲットクライアント110Bが、送信クライアント110Aと同じセルタワー130に接続されている場合にはメッセージ(例えば、データグラム)がP2Pで送信され、そうでない場合にはゲームサーバ120を介してルーティングされうる。他の実施形態において、クライアント110は、完全にP2Pを利用して通信する。さらに、いくつかの実施形態では、UDPホールパンチング、又はネットワークアドレストランスレーション(NAT)を含むP2P通信のための他の技術が、2つ以上のクライアント110間の接続を確立するために利用されうる。
一実施形態において、クライアント110は、(例えば、ゲームサーバ120でホストされ、TCPを介して通信される)コーディネーションサービスを利用してIPアドレスを同期する。クライアント110は、次いで、公開IPアドレス又はLAN140を利用して(例えば、UDPを介して)通信することができる。例えば、第1のクライアント110Aは、ローカルAR共有環境に接続するために、TCPを介してコーディネーションサービスに要求を送信することがある。コーディネーションサービスは、第1のクライアント110Aに、(例えば、同じセルタワー130を介して)AR環境に接続された第2のクライアント110BのIPアドレスを提供しうる。コーディネーションサービスは、第1のクライアントのIPアドレスを第2のクライアント110Bに提供してもよいし、又は、第1のクライアント110Aは、第2のクライアントのIPアドレスを利用して、(コーディネーションサービスによって提供されるように)それを直接提供してもよい。いくつかの実施形態において、コーディネーションサービスは、第2のクライアントのIPアドレスが提供される前に、第2のクライアント110Bに対し、(例えば、ユーザ認証を要求するか、又は、第2のクライアント110Bに接続するために承認されたクライアント110のリストをチェックすることによって)第1のクライアント110Aを承認するように促しうる。
一実施形態において、クライアント110は、UDPを介して公開IPアドレスで通信し、通信は、公開鍵暗号で保護される。特定の実施形態においては、楕円曲線暗号(ECC)が実装される。ECCは、他のコンピューティングシステム及びネットワークに公に提供される公開鍵を暗号化するための一方向性及び決定論的関数である有限体上の楕円曲線を利用する。他の公開鍵暗号方式に対するECCの1つの利点は、ECCがよりシンプルな関数であり、より小さな鍵サイズを可能にし、結果としてバンド幅利用量を低減することである。
クライアント
図2は、実施形態による、クライアント110のブロック図である。クライアント110は、プレーヤによって利用され、ゲームサーバ120とインターフェースで接続することができる任意のポータブルコンピューティングデバイスでありうる。例えば、クライアント110は、ワイヤレスデバイス、パーソナルデジタルアシスタント(PDA)、ポータブルゲーミングデバイス、セルラフォン、スマートフォン、タブレット、ナビゲーションシステム、ハンドヘルドGPSシステム、ウェアラブルコンピューティングデバイス、1つ以上のプロセッサを持つディスプレイ、又は他のそのようなデバイスでありうる。他の例では、クライアント110は、デスクトップ又はラップトップコンピュータなどの従来のコンピューティングシステムを含む。さらに、クライアント110は、コンピューティングデバイスを持つ車両であってよい。端的に言えば、クライアント110は、プレイヤーがゲームサーバ120と相互作用することを可能にしうる任意のコンピュータデバイス又はシステムであってよい。コンピューティングデバイスとして、クライアント110は、1つ以上のプロセッサと、1つ以上のコンピュータ可読記憶媒体とを含みうる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を格納することができる。クライアント110は、好適には、スマートフォン又はタブレットなど、容易に持ち運ぶことができるか又はそうでなければプレーヤーが携帯することができるポータブルコンピューティングデバイスである。
クライアント110は、ゲームサーバ120と通信して、ゲームサーバ120に物理環境の感覚データを提供する。クライアント110は、クライアント110が位置する物理環境内のシーンの2次元のイメージデータをキャプチャするカメラアセンブリ210を含む。クライアント110は、例えば、ゲームサーバ120によってトレーニングされた機械学習モデルである深度評価モデル130も含む。図1に示した実施形態において、各クライアント110は、ゲーミングモジュール220及びポジショニングモジュール230などのソフトウェアコンポーネントを含む。クライアント110は、プレーヤーから情報を受信し及び/又はプレーヤーに情報を提供するための様々な他の入力/出力デバイスを含んでよい。例示的な入力/出力デバイスは、ディスプレイ画面、タッチ画面、タッチパッド、データ入力キー、スピーカー、及び音声認識に適したマイクロフォンを含む。クライアント110は、それらに限定されないが、動きセンサ、加速度計、ジャイロスコープ、他の慣性計測ユニット(IMUs)、気圧計、測位システム、温度計、光センサなどを含む、クライアント110からのデータを記録するための他の様々なセンサを含んでもよい。クライアント110は、ネットワーク105を介して通信を提供するためのネットワークインターフェースをさらに含みうる。ネットワークインターフェースは、1つ以上のネットワークとインターフェースで接続するための任意の適したコンポーネントを含むことができ、例えば、トランスミッタ、レシーバ、ポート、コントローラ、アンテナ、又は他の適したコンポーネントを含む。
カメラアセンブリ210は、クライアント110がいる環境のシーンのイメージデータをキャプチャする。カメラアセンブリ210は、様々なキャプチャレートで、様々なカラーキャプチャ範囲を持つ様々なフォトセンサを利用しうる。カメラアセンブリ210は、広角レンズ又はテレフォトレンズを含みうる。カメラアセンブリ210は、単一画像又はビデオをイメージデータとしてキャプチャするように構成されうる。加えて、カメラアセンブリ210の向きは、カメラアセンブリ210が水平に向けられた状態で、地面に平行でありうる。カメラアセンブリ210は、イメージデータをキャプチャし、クライアント110上のコンピューティングデバイスとイメージデータを共有する。イメージデータは、感覚データ(例えば、温度、環境の明るさ)又はキャプチャデータ(例えば、露出、暖かさ、シャッタースピード、焦点距離、撮影時間など)を含む、イメージデータの他の詳細を記述するメタデータが追加できる。カメラアセンブリ210は、イメージデータをキャプチャすることができる1つ以上のカメラを含みうる。1つの例では、カメラアセンブリ210は、1つのカメラを含み、単眼イメージデータをキャプチャするように構成される。他の例では、カメラアセンブリ210は、2つのカメラを含み、立体イメージデータをキャプチャするように構成される。様々な他の実装では、カメラアセンブリ210は、それぞれがイメージデータをキャプチャするように構成された複数のカメラを含む。
ゲーミングモジュール220は、プレーヤーに、パラレルリアリティゲームに参加するためのインターフェースを提供する。ゲームサーバ120は、クライアント110のゲーミングモジュール220で利用するゲームデータをクライアント110に送信し、ゲームサーバ120から離れた位置のプレーヤーにゲームのローカルバージョンを提供する。ゲームサーバ120は、図1で説明した様々な経路で通信を提供するためのネットワークインターフェースを含みうる。ネットワークインターフェースは、1つ以上のネットワークとインターフェースで接続するための任意の適したコンポーネントを含むことができ、例えば、トランスミッタ、レシーバ、ポート、コントローラ、アンテナ、又は他の適したコンポーネントを含む。
クライアント110によって実行されるゲーミングモジュール220は、プレーヤーとパラレルリアリティゲームとの間のインターフェースを提供する。ゲーミングモジュール220は、ゲームに関連付けられた仮想世界を表示する(例えば、仮想世界の画像をレンダリングする)クライアント110に関連付けられたディスプレイデバイス上にユーザインターフェースを提示し、ユーザが仮想世界で相互作用して様々なゲーム目標を実行できるようにする。いくつかの他の実施形態では、ゲーミングモジュール220は、パラレルリアリティゲームからの仮想要素で拡張された現実世界からの(例えば、カメラアセンブリ210によってキャプチャされた)イメージデータを提示する。これらの実施形態では、ゲーミングモジュール220は、クライアントの他のコンポーネントから受信した他の情報に従って、仮想コンテンツを生成し及び/又は仮想コンテンツを調整しうる。例えば、ゲーミングモジュール220は、イメージデータでキャプチャされたシーンの(例えば、深度評価モデル130によって決定された)深度マップに従って、ユーザインターフェース上に表示される仮想オブジェクトを調整しうる。
ゲーミングモジュール220は、また、様々な他の出力を制御して、ディスプレイ画面を見るようにプレーヤーに要求することなしに、プレーヤーがゲームと相互作用することを可能にする。例えば、ゲーミングモジュール220は、様々な音声、振動、又はディスプレイ画面を見ることなくプレーヤーがゲームをプレイすることを可能にする他の通知を制御することができる。ゲーミングモジュール220は、ゲームサーバ120から受信したゲームデータにアクセスして、ゲームの正確な表現をユーザに提供することができる。ゲーミングモジュール220は、プレーヤの入力を受信して処理し、ネットワーク105を介してゲームサーバ120にアップデートを提供することができる。ゲーミングモジュール220は、クライアント110によって表示されるゲームコンテンツを生成及び/又は調整してもよい。例えば、ゲーミングモジュール220は、(例えば、深度評価モジュール130によって決定されるような)深度情報に基づいて仮想要素を生成しうる。
ポジショニングモジュール230は、クライアント110の位置をモニタリングするための任意のデバイス又は回路でありうる。例えば、ポジショニングモジュール230は、サテライトナビゲーションポジショニングシステム(例えば、GPSシステム、ガリレオポジショニングシステム、グローバルナビゲーションサテライトシステム(GLONASS)、BeiDouサテライトナビゲーション及びポジショニングシステム)、慣性ナビゲーションシステム、三角測量及び/又はセルラタワー又はWi-Fiホットスポットへの近接を利用したIPアドレスに基づく推測航法システム、及び/又は位置を決定するための他の適した技術を利用することによって、実際の又は相対的な位置を決定しうる。ポジショニングモジュール230は、正確にクライアント110の位置を測位するのに役立ちうる様々な他のセンサをさらに含みうる。いくつかの実施形態では、クライアント110は、パラレルリアリティゲームでローカルに利用されるマップの位置を格納する。ポジショニングモジュール230は、ローカルに格納されたマップに関してクライアント110を位置決めすることができる。ポジショニングモジュール230は、周期的に、ローカルに格納された(又はキャッシュされた)マップと、ゲームサーバ120によって管理されているマップデータとを同期することもできる。
プレーヤーが現実世界でクライアント110と共に動き回ると、ポジショニングモジュール230は、プレーヤーの位置をトラッキングし、プレーヤー位置情報をゲーミングモジュール220に提供する。ゲーミングモジュール220は、現実世界におけるプレーヤーの実際の位置に基づいて、ゲームに関連付けられた仮想世界におけるプレーヤーの位置をアップデートする。従って、プレーヤーは、現実世界でシンプルにクライアント110を携帯又は輸送することによって仮想世界と相互作用することができる。特に、仮想世界におけるプレーヤーの位置は、現実世界におけるプレーヤーの位置に対応しうる。ゲーミングモジュール220は、ネットワーク105を介して、プレーヤー位置情報をゲームサーバ120に提供することができる。これに応答して、ゲームサーバ120は、不正行為者がクライアント110の位置を偽装するのを防止するために、クライアント110の位置を検証するための様々な技術を制定しうる。プレーヤーに関連付けられた位置情報は、プレーヤーの位置情報にアクセスすること、及び位置情報がゲームのコンテキストでどのように利用されるか(例えば、仮想世界におけるプレーヤーの位置をアップデートするため)をプレーヤーに通知した後、許可が与えられた場合にのみ利用されると理解すべきである。加えて、プレーヤーに関連付けられた任意の位置情報は、プレーヤーのプライバシーを保護する方法で格納されて管理されるだろう。
データフローモジュール240は、他のコンピューティングコンポーネントと通信する。データフローモジュール240は、任意のタイプの有線及び/又は無線接続を利用し、様々な通信プロトコル(例えば、TCP/IP、HTTP、SMTP、FTP)、エンコーディング又はフォーマット(例えば、HTML、XML、JSON)、及び/又は保護スキーム(例えば、VPN、セキュアHTTP、SSL)を利用して、通信を確立しうる。
1つ以上の実施形態において、データフローモジュール240は、ゲームサーバ120と通信する。データフローモジュール240は、アクション、ゲーム状態のアップデート、様々なコンテンツアイテム(例えば、パラレルリアリティゲーム)の要求、又はゲームサーバ120への他の通信を提供する。データフローモジュール240は、例えば、TCPを介して、ゲームサーバ120との接続を確立する。TCPは、データの送信においてロバストな方法を提供する。TCPでは、データフローモジュール240は、データの送信中にロスパケットを検出し、ロストパケットの再送信を要求することができる。さらに、TCPは、意図したメッセージを生成するために、順不同で受信されたシーケンシャルデータパケットの再構築を可能にする。
データフローモジュール240は、1つ以上の他のクライアント110との通信も管理する。データフローモジュール240は、他のクライアント110と通信するための1つ以上の経路を識別する。所与の時間にクライアント110が利用可能な経路は、ゲームサーバ120を通る経路、セルタワー130を通る経路、LAN140を通る経路、他のネットワークを通る他の経路、及び直接接続(例えば、ブルートゥース経由)の任意の組み合わせを含みうる。データフローモジュール240は、データフローヒエラルキープロトコルを実装して、クライアント110間でデータを送信する際に利用するための1つ以上の利用可能な経路を選択する。単一の利用可能な経路がある状況では、データフローヒエラルキープロトコルは、唯一の識別された経路を介してデータを送信するように指示する。
複数の利用可能な経路がある状況では、データフローヒエラルキープロトコルは、1つ以上の利用可能な経路を選択して、データ通信のレイテンシを改善する。データフローモジュール240は、利用可能な経路によるデータ送信パフォーマンスを示す利用可能な経路の1つ以上のメトリック(即ち、パフォーマンスメトリック)を計算する。メトリックは、レイテンシ(ping)、ジッタ、データロス、接続強度(接続の安定性)、バンド幅、他のデータ送信メトリックなどを含む。一実施形態では、データフローヒエラルキープロトコルは、データ通信に利用する最低のレイテンシを持つ経路(又はいくつかの経路)を選択する。他の実施形態では、データフローヒエラルキープロトコルは、レイテンシに加えて又は代替的に1つ以上の他のメトリックを考慮する。例えば、データフローヒエラルキープロトコルは、各経路の総合スコア(即ち、経路スコア)を決定するために、各経路に対する1つ以上のメトリックを組み合わせうる。経路スコアは、利用可能な経路をランキングし、ある経路(例えば、最高ランクの経路)又は複数の経路(例えば、いくつかの最高ランクの経路)を選択するために利用されうる。
複数の経路がデータフローヒエラルキープロトコルに基づいて選択される場合、複数の選択された経路はそれぞれ、データ送信レートを改善するために、同じデータの別々のコピーを送信するために利用されうる。しかし、そのようなケースでは、異なる経路を介して同じデータの複数のコピーを送信することがバンド幅の利用量を増加するという点で、より多くの経路を利用することにはトレードオフがある。いくつかの実施形態では、データフローヒエラルキープロトコルは、周期的に利用可能な経路をサンプリングして、どの経路が利用に最適かを再評価する。例えば、データフローヒエラルキープロトコルは、定期的に(例えば、30秒毎に)利用可能な経路を評価し、通信に利用する1つ以上の経路の最適なセットを決定する。データフローヒエラルキープロトコルは、クライアント110Aからクライアント110Bへなど、データを利用可能な経路のエンドポイントへと送信することによって利用可能な経路をサンプリングしうる。追加的に又は代替的に、データフローヒエラルキープロトコルは、クライアント110Aからゲームサーバ120又はセルタワー130へなど、データを多くのエンドポイントに接続された中間ノードへと送信することによって、1つ以上の利用可能な経路をサンプリングしうる。いくつかの実施形態では、データフローヒエラルキープロトコルは、通信で利用する全ての利用可能な経路を選択する。データフローヒエラルキープロトコルは、バンド幅の利用可能性に従って、経路選択を調整しうる。例えば、帯域利用可能性が高い状況では、データフローヒエラルキープロトコルは、全ての利用可能な経路の選択を指示しうる。対称的に、バンド幅の利用可能性が制限されるとき、データフローヒエラルキープロトコルは、最適な経路(例えば、最小レイテンシ経路)を選択しうる。
いくつかの実施形態では、データフローモジュール240は、例えば、パラレルリアリティゲームにおける共有AR体験の間、クライアント間で送信されるデータを暗号化する。データフローモジュール240は、様々な暗号化方法を実装しうる。特定の実装では、ECCは、例えば、セルタワー130を介して、又はLAN140を介して、クライアント110間のUDP送信を保護するために実装される。
ゲームサーバ
図3は、実施形態による、ゲームサーバを示すブロック図である。ゲームサーバ120は、任意のコンピューティングデバイスであることができ、1つ以上のプロセッサと、1つ以上のコンピュータ可読記憶媒体とを含むことができる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を格納することができる。ゲームサーバ120は、ゲームデータベース115を含むことができるし、又はゲームデータベース115と通信することができる。ゲームデータベース115は、パラレルリアリティゲームで利用され、クライアント120に供給又は提供されるゲームデータを格納する。
ゲームデータベース115に格納されるゲームデータは、
(1)パラレルリアリティゲーム内の仮想世界に関連付けられたデータ(例えば、ディスプレイデバイス上で仮想世界をレンダリングするために利用される画像データ、仮想世界内の位置の地理的座標など)、
(2)パラレルリアリティゲームのプレーヤーに関連付けられたデータ(例えば、それらに限定されないが、プレーヤー情報、プレーヤー経験レベル、プレーヤー通貨、仮想世界/現実世界内の現在のプレーヤーの位置、プレーヤーのエネルギーレベル、プレーヤーの好み、チーム情報、派閥情報などを含むプレーヤープロファイル)、
(3)ゲーム目標に関連付けられたデータ(例えば、現在のゲーム目標に関連付けられたデータ、ゲーム目標のステータス、過去のゲーム目標、将来のゲーム目標、望ましいゲーム目標など)、
(4)仮想世界内の仮想要素に関連付けられたデータ(例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲーム目標;仮想要素のための対応する実際の世界の位置情報;仮想要素の振る舞い、仮想要素の関連性など)、
(5)現実世界のオブジェクト、ランドマーク、仮想世界要素にリンクした位置に関連付けられたデータ(例えば、現実世界オブジェクト/ランドマークの位置、現実世界オブジェクト/ランドマークの説明、現実世界オブジェクトにリンクした仮想要素の関連性など)、
(6)ゲームステータス(例えば、現在のプレーヤー数、現在のゲーム目標のステータス、プレーヤーリーダーボードなど)、
(7)プレーヤーアクション/入力に関連付けられたデータ(例えば、現在のプレーヤーの位置、過去のプレーヤーの位置、プレーヤーの動き、プレーヤーの入力、プレーヤーのクエリ、プレーヤーの通信など)、
(8)パラレルリアリティゲームの実施期間に利用され、関連付けられ、又は取得される任意の他のデータ、
を含むことができる。
ゲームデータベース115に格納されるゲームデータは、システム管理者によって及び/又はクライアント110から受信されたデータによって、オフライン又はリアルタイムに事前設定されることができる。
ゲームサーバ120は、ゲームデータについての要求をクライアント110から(例えば、リモートプロシージャコール(RPCs)を介して)受信し、それらの要求に応答するように構成されうる。例えば、ゲームサーバ120は、1つ以上のデータファイル内のゲームデータをエンコードし、データファイルをクライアント110に提供することができる。加えて、ゲームサーバ120は、クライアント110からゲームデータ(例えば、プレーヤーの位置、プレーヤーのアクション、プレーヤーの入力など)を受信するように構成されうる。例えば、ゲームサーバ120が、ゲームデータベース115内のゲームデータをアップデートして、任意の及び全ての変更された状態をゲームに反映させるために利用する、プレーヤーの入力及び他のアップデートを、クライアント110が、周期的にゲームサーバ120に送信するように構成されうる。
示された実施形態において、サーバ120は、ユニバーサルゲーミングモジュール310と、データコレクションモジュール320と、イベントモジュール330とを含む。上記のように、ゲームサーバ120は、ゲームサーバ120の一部であるか又はリモートでアクセスされてよいゲームデータベース115と相互作用する(例えば、ゲームデータベース115は、ネットワークを介してアクセスされる分散型データベースであってよい)。他の実施形態では、ゲームサーバ120は、異なる及び/又は追加的な要素を含む。加えて、機能は、説明されたものとは異なる方式で要素間で分散されてよい。例えば、ゲームデータベース115は、ゲームサーバ120に統合されうる。
ユニバーサルゲーミングモジュール310は、全てのプレーヤーに対してパラレルリアリティゲームをホストし、パラレルリアリティゲームの現在のステータスについての全てのプレーヤーに対する信頼できる情報源としての役割を演じる。ホストとして、ユニバーサルゲーミングモジュール310は、プレーヤーに、例えば、それらの個々のクライアント110を介して提示するためのゲームコンテンツを生成する。ユニバーサルゲーミングモジュール310は、パラレルリアリティゲームをホストするとき、ゲームデータベース115にアクセスしてゲームデータを取り出し及び/又は格納しうる。ユニバーサルゲーミングモジュール310は、また、クライアント110からゲームデータ(例えば、深度情報、プレーヤーの入力、プレーヤーの位置、プレーヤーのアクション、ランドマークの情報など)を受信し、パラレルリアリティゲームの全プレーヤーについて、受信したゲームデータをパラレルリアリティゲーム全体に組み入れる。ユニバーサルゲーミングモジュール310は、また、ネットワーク105を介したクライアント110へのゲームデータの搬送を管理しうる。ユニバーサルゲーミングモジュール310は、また、それらに限定されないが、クライアント110とゲームサーバ120との間の接続をセキュアにすること、様々なクライアント110間の接続を確立すること、及び様々なクライアント110の位置を検証することを含む、クライアント110のセキュリティ面を管理しうる。
ゲームサーバ120は、データコレクションモジュール320をさらに含みうる。データコレクションモジュール320は、それが含まれる実施形態において、ユニバーサルゲーミングモジュール310から分離するか又はその一部とすることができる。データコレクションモジュール320は、現実世界でのデータ収集活動にリンクするパラレルリアリティゲーム内の様々なゲーム特徴の包含を管理することができる。例えば、データコレクションモジュール320は、パラレルリアリティゲーム内のデータ収集活動にリンクしたゲーム特徴を含めるように、ゲームデータベース115に格納されたゲームデータを修正することができる。データコレクションモジュール320は、また、データ収集活動に従ってプレーヤーによって収集されたデータを分析し、様々なプラットフォームによるアクセスのためのデータを提供することができる。
イベントモジュール330は、パラレルリアリティゲーム内のイベントに対するプレーヤーのアクセスを管理する。用語「イベント」が便利に利用されるけれども、この用語は、特定の場所又は時間での特定のイベントを指す必要がないと理解すべきである。むしろ、プレーヤーがそのコンテンツにアクセスしうるかどうかを決定するために1つ以上のアクセス基準が利用される、アクセス制御されたゲームコンテンツの任意の提供を指しうる。そのようなコンテンツは、アクセス制御がより少ない又は全く無いゲームコンテンツを含む、より大きなパラレルリアリティゲームの一部であってもよいし、又は、スタンドアローンの、アクセス制御されたパラレルリアリティゲームであってもよい。
セルタワー
図4は、実施形態による、セルタワーを示すブロック図である。示した実施形態では、セルタワー130は、ルーティングモジュール410と、データ取り込みモジュール420と、AR環境モジュール430と、マップ処理モジュール440と、権限チェックモジュール450と、ローカルデータストア460とを含む。セルタワー130は、また、データを交換するためにゲームサーバ120及びクライアント110に対する接続を確立するためのハードウェア及びファームウェア又はソフトウェア(不図示)を含む。例えば、セルタワー130は、光ファイバ又は他の有線インターネット接続を介してゲームサーバ120に接続され、無線接続(例えば、4G又は5G)を利用してクライアント110に接続されうる。他の実施形態では、セルタワー130は、異なる又は追加的なコンポーネントを含みうる。加えて、機能は、説明されたものとは異なる方式で要素間に分散されてよい。1つ以上の実施形態において、LAN140は、セルタワー130について説明されたものと類似のモジュールを含んでよく、同様に、LANがパラレルリアリティゲームをホストするのに役立ちうる。
ルーティングモジュール410は、データパケットを受信し、それらのパケットを1つ以上の受信デバイスに送信する。一実施形態では、ルーティングモジュール410は、データグラムをクライアント110から受信し、受信したデータグラムを適切な宛先に送信する。ルーティングモジュール410は、また、特定のクライアント110又はセルタワー130に接続されている全てのクライアントのいずれかにアドレス指定されたサーバからデータパケットを受信しうる。ルーティングモジュール410は、データパケットを、アドレス指定されているクライアント110に転送する。いくつかの実施形態では、ルーティングモジュール410は、他のクライアント110へと直接的に又はゲームサーバ120を介して、データパケット(例えば、データパケット内の情報)をルーティングするために、送信クライアント110によって選択された経路を示す情報を受信する。この場合、ルーティングモジュール410は、選択された経路を利用してデータパケット。
データ取り込みモジュール420は、接続されたクライアント110を介してセルタワー130が共有AR体験をプレーヤーに提供するために利用する1つ以上の送信元からデータを受信する。一実施形態では、データ取り込みモジュール420は、(例えば、サードパーティサービスから)現実世界状況についてのリアルタイムの又は実質的にリアルタイムの情報を受信する。例えば、データ取り込みモジュール420は、周期的に(例えば、1時間毎に)、セルタワー周囲の地域内の気象条件を示す気象データを気象サービスから受信することがある。他の例として、データ取り込みモジュール420は、公園、美術館、又は他の公共空間の開場時間を取り込むことがある。さらに他の例として、データ取り込みモジュール420は、どのくらい多くの車両が、セルタワー130周辺の地域内の道路を走行しているかを示す交通データを受信することがある。そのような現実世界の状況についての情報は、仮想世界と現実世界との間のシナジーを改善するために利用されうる。
AR環境モジュール430は、セルタワー130周辺の地域内のプレーヤーが共有AR体験に参加しうるAR環境を管理する。一実施形態では、クライアント110は、パラレルリアリティゲームを実行している間、セルタワー130に接続し、AR環境モジュール430は、クライアントをゲーム用のAR環境に接続する。セルタワー130に接続するゲームの全プレーヤーは、単一のAR環境を共有しうるか、又はプレーヤーは、複数のAR環境間に分けられうる。例えば、特定のAR環境内ではプレーヤーの最大数(例えば、10、20、100など)が存在することがある。複数のAR環境がある場所では、新たに接続するクライアント110は、ランダムにセッションに配置されうるし、又はクライアントは、ユーザインターフェース(UI)を提供して、プレーヤーがどのセッションに参加するかを選択できるようにしうる。従って、プレーヤーは、友人と一緒にAR環境に参加することを選択しうる。いくつかの実施形態では、プレーヤーは、(例えば、参加するためにパスワード又はコードを要求する)アクセスが保護されているプライベートAR環境を構築しうる。
様々な実施形態において、ARオブジェクト(例えば、生物、乗り物など)が現実世界の特徴と相互作用するように見える(例えば、障害物を通り抜けるのではなく、障害物を飛び越える)ようにするため、AR環境モジュール430は、接続されたクライアント110に、クライアントの近くの現実世界を表す(例えば、ローカルデータストア460に格納された)マップデータを提供する。AR環境モジュール430は、クライアント110についてのローカルデータ(例えば、GPS位置)を受信し、(例えば、クライアントの現在位置の閾値距離範囲内の)クライアント周囲の地域についてのマップデータを提供しうる。
受信されたマップデータは、1つ以上の現実世界の表示を含むことができる。例えば、マップデータは、ポイントクラウドモデル、プレーンマッチングモデル、ラインマッチングモデル、ジオグラフィック情報システム(GIST)モデル、ビルディング認識モデル、ランドスケープ認識モデルなどを含むことができる。マップデータは、また、異なる詳細レベルで、所与のタイプの1つ以上の表示を含みうる。例えば、マップデータは、2つ以上のポイントクラウドモデルを含んでよく、それぞれは、異なる数のポイントを含む。
クライアント110は、マップデータと、1つ以上のセンサによって収集されたデータとを比較して、クライアントの位置を精錬する。例えば、クライアント110のカメラによってキャプチャされた画像をポイントクラウドモデルにマッピングすることによって、クライアントの位置及び向きは、正確に(例えば、1センチメートル及び0.1度の範囲で)決定されうる。クライアント110は、プレーヤーが行った任意のアクション(例えば、射撃、相互作用する仮想アイテムの選択、仮想アイテムのドロップなど)と共に、決定された位置及び向きをAR環境モジュール430に返す。従って、AR環境モジュール430は、AR環境に参加する全てのプレーヤーについてのゲームのステータスをアップデートすることができる。
マップ処理モジュール440は、現在の状況(例えば、データ取り込みモジュール420からのデータ)に基づいてマップデータをアップデートする。現実世界が静的でないため、ローカルデータストア460内のマップデータは、現在の現実世界の状況を表していないことがある。例えば、バーモント州の同じ公園の小道は、季節によって大きく異なるように見えることがある。夏なら、小道は、クリアでありるうし、周囲の木々は、葉で覆われているだろう。対照的に、冬なら、小道は、雪の吹きだまりによってブロックされていることがあるし、木々は露出しているかもしれない。マップ処理モジュール440は、マップデータを変形して、そのような変化を近似する。
一実施形態では、マップ処理モジュール440は、現在状況データを取得して変容を認識し、その変容をマップデータに適用する。異なる状況に対する変容は、ヒューリスティックルールによって定義されうるし、トレーニングされた機械学習モデルの形式をとったり、又は両方のアプローチの組み合わせを利用しうる。例えば、マップ処理モジュール440は、現在の気象状況データを受信し、現在の気象状況についての変容を選択し、マップデータにその変容を適用することがある。代替的に、マップ処理モジュール440は、変容したマップを事前計算し、それらを(例えば、ローカルデータストア460に)格納することがある。この場合、クライアント110がセルタワーに接続するとき、マップ処理モジュールは、現在の状況を決定し、適切な事前計算されたバージョンのマップデータを選択し、そのバージョンをクライアントに提供する。
権限チェックモジュール450は、異なるクライアント110のゲーム状態間の同期を管理する。一実施形態では、権限チェックモジュール450は、クライアント110から受信されたゲームアクションが、AR環境モジュール430によって管理されるゲーム状況と一致することを確認する。例えば、二人のプレーヤーが両方とも同じゲーム内のアイテムをピックアップしようとする場合、権限チェックモジュール450は、(例えば、要求に関連付けられたタイムスタンプに基づいて)どちらのプレーヤーがアイテムを受け取るかを決定する。説明されたように、P2Pプロトコル及びセルタワーでのローカル処理の利用は、他のプレーヤーのクライアント110で見られるプレーヤーのアクションのレイテンシを大きく低減させうる。従って、そのような競合が発生し、権限チェックモジュール450によって解決されるべきインスタンスの尤度(及び数)が低減される。従って、AR体験が改善されうる。
権限チェックモジュール450は、また、そのAR環境の状態のコピー(中間ノード状態)と、ゲームサーバ120によって管理されるマスタ状態との間の同期を管理しうる。一実施形態では、権限チェックモジュール450は、周期的に(例えば、1~10秒毎に)、AR環境の状態に関するグローバルアップデートをゲームサーバ120から受信する。権限チェックモジュール450は、中間ノード状態に対するこれらのアップデートを比較し、あらゆる矛盾を解決する。例えば、アイテムをピックアップするプレーヤーの要求が最初に権限チェックモジュール450によって承認されたが、プレーヤーがそれをピックアップしようとする前に、ゲームサーバ120からのゲームアップデートが、他のプレーヤーによってアイテムがピックアップされた(又は、そうでなければ、利用不可能であるとされた)ことを示す場合、権限チェックモジュール450は、プレーヤーのクライアント110に、そのアイテムはプレーヤーの目録から削除されるべきである旨を示すアップデートを送信することがある。
このプロセスは、2つ以上の異なるセルタワー130によって提供されるカバレッジ間の境界近くに位置するクライアント110についての値を提供しうる。この場合、異なるセルタワー130に接続されるクライアント110のプレーヤーが両方とも、同じ仮想要素に相互作用することができることがある。従って、個別のセルタワー130はそれぞれ、異なるクライアント110からの要素との競合する相互作用を最初に承認することがある。この場合、サーバ120は、異なるセルタワー130との同期後に競合を検出し、競合を解決するためのアップデートを送信することができる(例えば、セルタワーの1つが、アクションのその最初の承認を取り消し、それに従って、そのローカル状態をアップデートするように指示する)。
ローカルデータストア460は、セルタワーによって利用されるデータを格納するように構成された1つ以上の非一時的なコンピュータ可読記憶媒体である。一実施形態では、格納されたデータは、マップデータ、現在の状況データ、現在(又は最近)接続されているクライアント110のリスト、地域に対するゲーム状態のローカルコピーなどを含みうる。ローカルデータストア460は、単一のエンティティとして表示されているけれども、データは、複数の記憶媒体に分割されてよい。さらに、いくつかのデータは、通信ネットワーク内の別の場所に格納されてよいし、又はリモートアクセスされてよい。例えば、セルタワー130は、現在の状況データに必要に応じてリモートで(例えば、サードパーティーサーバから)アクセスしてよい。
例示的な方法
図5は、実施形態による、データフローヒエラルキープロトコルを利用するためのプロセス500を示す。図5のステップは、方法500を実行するクライアント110Aの視点から説明されている。しかし、ステップの一部又は全部は、他のエンティティ又はコンポーネントによって実行されうる。加えて、いくつかの実施形態は、ステップを並列に実行してよいし、異なる順序でステップを実行してよいし、又は異なるステップを実行してよい。
クライアント110Aは、510、データ送信のために1つ以上の利用可能なネットワーク経路を識別する。クライアント110Aは、ターゲットクライアント110Bへの事前設定された経路のセットのいずれが、クライアント110Aに現在利用可能であるかを決定することによって、そのようなネットワーク経路を識別する。クライアント110Aがゲームサーバ120との接続を確立でき、ターゲットクライアント110Bもゲームサーバ120と接続している場合、クライアント110Aは、ゲームサーバ120を介する他のクライアント110とのネットワーク経路を識別する。クライアント110Aがセルタワー130に接続されている場合、クライアント110は、他のクライアント110Bが同様にセルタワー130に接続されているかどうかを決定しうる。もしそうならば、クライアント110Aは、セルタワー130を通る他のネットワーク経路を識別する。さらに、クライアント110Aと他のクライアント110Bとが同じLAN140に接続されている場合、クライアント110Aは、LAN140を通るネットワーク経路を識別しうる。クライアント110Aは、両方のクライアント110が接続する他のネットワーク又は経路を、他の利用可能なネットワーク経路(例えば、ブルートゥース接続などの、クライアント110間の直接接続)として識別しうる。1つ以上のネットワーク経路は、データ送信のためのUDPを実装しうる。 UDP経路について、クライアント110は、データの暗号化のために公開鍵暗号を利用しうる。特に、クライアント110は、ECCを実装しうる。
クライアント110Aは、520、利用可能なネットワーク経路のそれぞれについて1つ以上のパフォーマンスメトリックを検出する。クライアント110Aは、利用可能なネットワーク経路を通じてテストデータパケットを送信することによってパフォーマンスメトリックを検出する。データパケットは、他のクライアント110Bからの他のテストデータパケットの返送を要求しうる。これらのテストパケットの送信成功に基づいて、クライアント110Aは、ネットワーク経路のメトリックを計算(又は検出)することができる。メトリックは、レイテンシ(ping)、ジッタ、データロス、接続強度、バンド幅利用可能性などを含む。
クライアント110Aは、530、検出されたメトリックに従って、データ送信に利用する1つ以上の利用可能なネットワーク経路を選択する。クライアント110Aは、ネットワーク経路を選択するとき、1つ以上の特定のメトリックを考慮しうる。一実施形態では、クライアント110Aは、レイテンシ(ping)のみを考慮する。他の実施形態では、クライアント110Aは、レイテンシと接続強度とを考慮する。先に説明したように、クライアント110Aは、「最良の」経路又は(1つ以上のメトリックによって示されるような)経路を選択してよく、又は、データ送信に利用する全ての利用可能なネットワーク経路を選択してよい。
クライアント110Aは、540、1つ以上の選択されたネットワーク経路を介してデータを送信する。パラレルリアリティゲームのコンテキストにおいては、クライアント110Aは、ゲームデータを他のクライアント110及びゲームサーバ120に送信する。クライアント間の通信は、特に、パラレルリアリティゲームにおけるAR体験を共有するときに有効であり、それらのクライアント110上の複数のプレーヤーは、互いに及びゲームサーバ120と相互作用しうる。ゲーム状態がゲームサーバ120によって同期される必要がないように、いくつかの相互作用は、クライアント110又は他のネットワーク(例えば、セルタワー130又はLAN140)によってローカルでホストされる。ローカルにAR体験をホストすることは、より合理化されたAR体験を低レイテンシで提供する。
クライアント110Aは、プロセス500を繰り返して、周期的に利用可能な経路をサンプリングし、デバイス間のデータ送信を管理するために利用する経路を反復的に最適化する。
図6は、実施形態による、セルタワー周辺の地域内のクライアント110間でデータを送信するための方法600を示す。図6のステップは、地域内のクライアントデバイス110間でのP2P通信を提供するための方法600を実行するセルタワー130の視点から説明されている。しかし、ステップの一部又は全部は、他のエンティティ又はコンポーネントによって実行されてよい。加えて、いくつかの実施形態は、並列にステップを実行してよいし、異なる順序でステップを実行してよいし、又は異なるステップを実行してよい。
図6に示した実施形態において、セルタワー130は、610、セルタワー周辺の地域内のクライアント110のためのネットワーク経路を介してP2P通信を提供する。例えば、セルタワー130は、(例えば、ゲームサーバ120によってホストされる)パラレルリアリティゲームを提供するクライアントs=110にP2P通信を提供しうる。セルタワー130は、620、第1のクライアント110Aからネットワーク経路を介してデータを受信する。特に、ネットワーク経路は、利用可能なネットワーク経路のそれぞれに対する1つ以上のメトリックに基づいて、第1のクライアント110Aによって、利用可能なネットワーク経路から選択される。例えば、第1のクライアントデバイスは、上記のように、データフローヒエラルキープロトコルを利用してP2P通信を提供するネットワーク経路を選択しうる。第1のクライアント110Aから受信されたデータは、地域内の地理的位置に対応するARデータのように、AR環境の仮想コンテンツに関連付けられてよい。
ネットワーク経路を利用して、セルタワー130は、630、地域内の第2のクライアント110Bにデータを送信する。例えば、データが、パラレルリアリティゲームに関連付けられたAR環境の仮想コンテンツに対するアップデートを記述する場合、セルタワー130は、セルタワー130に接続される、パラレルリアリティゲームのクライアント110の一部又は全部に対するアップデートを提供しうる。他の例として、メッセージ又は第2のクライアントを利用するプレーヤーに関連付けられた仮想コンテンツとの相互作用など、データは、第2のクライアント110Bに特にアドレス指定されうる。
例示的なコンピュータ
図7は、実施形態による、図1に示したコンピュータネットワーク内での利用に適した例示的なコンピュータ600を示す高レベルブロック図である。例示的なコンピュータ700は、チップセット704に結合された少なくとも1つのプロセッサ702を含む。チップセット704は、メモリコントローラハブ720と、入力/出力(I/O)コントローラハブ722とを含む。メモリ706及びグラフィックアダプタ712は、メモリコントローラハブ720に結合され、ディスプレイ718は、グラフィックアダプタ712に結合される。ストレージデバイス708、キーボード710、ポインティングデバイス714、及びネットワークアダプタ716は、I/Oコントローラハブ722に結合される。コンピュータ700の他の実施形態は、異なるアーキティクチャを有する。
図7に示した実施形態において、ストレージデバイス708は、ハードドライブ、コンパクトディスクリードオンリーメモリ(CD-ROM)、DVD、又はソリッドステートメモリデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ706は、プロセッサ702によって利用される命令及びデータを保持する。ポインティングデバイス714は、マウス、トラックボール、タッチスクリーン、又は他のタイプのポインティングデバイスであり、コンピュータシステム700にデータを入力するために、キーボード710(オンスクリーンキーボードであってもよい)と組み合わせて利用される。グラフィックアダプタ712は、ディスプレイ718上に画像及び他の情報を表示する。ネットワークアダプタ716は、コンピュータシステム700を1つ以上のコンピュータネットワークに結合する。
図1のエンティティによって利用されるコンピュータのタイプは、実施形態及びエンティティによって要求される処理パワーに依存して変わりうる。例えば、ゲームサーバ120は、説明した機能を提供するために一緒に動作する複数のブレード型サーバを含む分散型データベースシステムを含むことがある。さらに、コンピュータは、キーボード710、グラフィックアダプタ712、及びディスプレイ718など、上述したコンポーネントの一部を省略することができる。
当業者は、説明された概念から逸脱することなく、本明細書に開示された装置及び技術の多数の使用及び修正、及びそれらからの拡張を行うことができる。例えば、本開示で図示又は説明されたコンポーネント又は特徴は、図示又は説明された場所、設定、又はコンテキストに限定されない。本開示による装置の例は、1つ以上の前述の図を参照しながら説明されたものの全て、より少数、又は異なるコンポーネントを含むことができる。本開示は、従って、本明細書で説明された特定の実装に限定されず、むしろ、添付の特許請求の範囲及びその均等物と一致する可能な限り広い範囲が与えられるべきである。
追加的な考察
実施形態の前述の説明は、例示を目的として提示されたものであり、 網羅的であること又は特許権を開示された正確な形式に限定することを意図したものではない。当業者は、上記の開示に照らして多くの修正及び変更が可能であることを理解することができる。
この説明のいくつかの部分は、情報に対する操作のアルゴリズム及び記号表現に関して実施形態を説明する。これらのアルゴリズムの説明及び表現は、その動作の要旨を他の当業者に効果的に伝えるためにデータ処理技術の当業者によって一般的に使用される。これらの操作は、機能的、計算的、又は論理的に説明されているが、コンピュータプログラム又は等価な電気回路、マイクロコードなどによって実装されることが理解される。さらに、一般性を失うことなく、これらの操作の配置をモジュールと呼ぶことが便利な場合もある。説明された動作及びそれらに関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせで具体化されうる。
本明細書で説明されたステップ、動作、又はプロセスのいずれも、単独で又は他のデバイスと組み合わせて、1つ以上のハードウェア又はソフトウェアモジュールで実行又は実装されうる。一実施形態では、ソフトウェアモジュールは、コンピュータプログラムコードを含むコンピュータ可読媒体を含むコンピュータプログラム製品で実装され、コンピュータプロセッサによって実行されて、説明されたステップ、動作、又はプロセスのいずれか又は全てを実行できる。
実施形態は、本明細書の動作を実行するための装置にも関連しうる。この装置は、必要な目的のために特に構築されることがあり、及び/又はコンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化されるか又は再構成される汎用コンピューティングデバイスを含みうる。そのようなコンピュータプログラムは、コンピュータシステムバスに結合されうる、非一時的な実体的なコンピュータ可読記憶媒体、又は電子命令を格納するのに適した任意のタイプの媒体に格納されうる。さらに、本明細書で言及される任意のコンピューティングシステムは、単一のプロセッサを含んでもよいし、又はコンピューティング能力を向上させるために複数のプロセッサ設計を採用するアーキテクチャであってもよい。
実施形態は、また、本明細書で説明されたコンピューティングプロセスによって生成される製品に関連しうる。そのような製品は、コンピューティングプロセスから生じる情報を含むことがあり、情報は、非一時的な実体的なコンピュータ可読記憶媒体に格納され、コンピュータプログラム製品の任意の実施形態又は本明細書で説明された他のデータの組み合わせを含みうる。
本明細書で利用されるように、「一実施形態」又は「ある実施形態」への任意の参照は、実施形態に関連して説明される特定の要素、特徴、構造、又は特徴が少なくとも1つの実施形態に含まれることを意味する。本明細書の様々な箇所に現れる「一実施形態において」という語句は、必ずしも全て同じ実施形態を参照しているわけではない。同様に、要素又はコンポーネントの前の「a」又は「an」は、単に利便性のために利用されているに過ぎない。この説明は、別の意味であることが明白でない限り、要素又はコンポーネントの1つ以上が存在することを意味すると理解されるべきである。
値が「近似的に」又は「実質的に」(又はその派生物)と説明されている場合、そのような値は、コンテキストから別の意味が明らかでない限り、精度が+/-10%として解釈されるべきである。例えば、「約10」は、「9~11までの範囲」を意味すると理解されるべきである。
本明細書で使用されるように、用語「備える」「備える」「含む」「有する」「有する」又はそれらの任意の他の変形は、非排除的な包含をカバーすることを意図している。例えば、要素のリストを含むプロセス、方法、物品、又は装置は、必ずしもそれらの要素のみを限定するわけではなく、明示的に列挙されていない、又はそのようなプロセス、方法、物品、又は装置に固有ではない他の要素を含んでよい。さらに、反対のことが明確に述べられていない限り、「又は」は、包含的離接及び排他的離接を指す。例えば、条件A又はBは、以下のいずれか1つによって充足される。Aが真(又は存在する)かつBが偽(又は存在しない)、Aが偽(又は存在しない)かつBが真(又は存在する)、そして、A及びBの両方が真(又は存在する)。
この開示を読むと、当業者は、説明された技術及びアプローチを採用するために利用されうる、さらに追加的な代替的な構造及び機能設計を理解するだろう。従って、特定の実施形態及びアプリケーションが例示されて説明されたが、説明された構成要素は、開示された正確な構造及びコンポーネントに限定されないと理解されるべきである。保護範囲は、以下の特許請求の範囲によってのみ制限されるべきである。
最後に、明細書で利用される文言は、主に読みやすさ及び説明を目的として選択されたものであり、特許権を描写又は制限するために選択されたものではないことがある。従って、特許権の範囲は、この詳細な説明によってではなく、むしろ本明細書に基づく出願に関して発行されるいずれかの請求項によって制限されることが意図されている。従って、実施形態の開示は、以下の特許請求の範囲に記載される特許権の範囲の例示を意図するものであり、限定するものではない。
本出願は、2019年12月20日に提出された米国仮出願第62/951,926号の利益を主張し、その全体が参照によって組み込まれる。
本開示は、コンピュータネットワークプロトコルに関し、特に、互いに物理的に近い範囲にあるデバイス間の低レイテンシ無線通信を提供するためのプロトコルに関する。
コンピュータネットワークは、インターネットなど、データを交換する相互接続されたコンピューティングデバイスの集合である。ユーザデータグラムプロトコル(UDP)などの通信プロトコルは、コンピュータネットワークを利用してデータを交換するルールの仕組みを定義する。UDPは、データグラムの保証された配送、順序、又は非重複のないコネクションレス型通信モデルに従う。データグラムは、通信の基本ユニットであり、ヘッダ及びペイロードを含む。ヘッダは、送信元ポート、宛先ポート、データグラムの長さ、及びデータグラムのチェックサムなど、データグラムの態様を指定するメタデータである。ペイロードは、データグラムによって通信されるデータである。UDPを利用して通信するコンピューティングデバイスは、コンピュータネットワークを介して互いにデータグラムを送信する。
UDPなどのコネクションレス型通信プロトコルは、概して、データを送信する前にコンピューティングデバイス間の接続を確立する伝送制御プロトコル(TCP)のようなコネクション型通信プロトコルより低いオーバーヘッド及びレイテンシを有する。しかし、既存のコネクションレス型通信プロトコルは、既存技術によって適応されるものより低いレイテンシを要求するデータ転送に対して不十分である。例えば、毎秒60フレーム(FPS)での拡張現実(AR)環境ストリーミングは、レイテンシに、現在の技術によって提供されるものより低いオーダを要求しうる。そのようなAR環境において、フレームは、約16ミリ秒間隔で配置されることがあり、一方で、現在のネットワークプロトコルは、典型的に約100ミリ秒(又はそれより大きい)レイテンシを提供する。
かくして、既存の技術では、ユーザは、AR環境内で相互作用(interact)するとき、ある程度のレイテンシに遭遇する。このレイテンシは、AR位置データの古い状態を伴う相互作用を引き起こすことがある。例えば、パラレルリアリティゲームにおいて、プレイヤーは、古い位置(例えば、オブジェクトが100ミリ秒前にいた位置)にあるARオブジェクトを見ることがある一方、実際のAR位置データは、新しいオブジェクトの位置を有する(例えば、ARオブジェクトは、他のプレイヤーによって既に動かされている)。クライアントと、パラレルリアリティゲームをホストし又はコーディネートするサーバとの間の通信において、このレイテンシは、ユーザ体験を妨げる結果に繋がりうる。レイテンシは、AR環境の他のプレイヤーの視界に見える一人のプレーヤのアクション間の顕著な遅延を引き起こすことがあるため、この問題は、特に、一人より多くのユーザがパラレルリアリティゲームに参加する場面で深刻になりうる。さらに、プレイヤーの数が増えるにつれ、遅延に起因するミスマッチがさらにひどくなりうる。
拡張現実(AR)システムは、コンピュータが生成したコンテンツで現実世界の視界を補う。ARをパラレルリアリティゲームに組み込むことは、現実世界と仮想世界との間の統合を改善しうる。ARは、プレーヤーらが相互作用する共有ゲーミング体験に参加する機会をプレーヤーらに提供することによって、プレーヤー間のインタラクティブ性も増加させうる。例えば、戦車バトルゲームにおいて、プレーヤーは、現実世界位置の周りにある仮想戦車をナビゲートして、互いの戦車を破壊することを企てることがある。戦車の移動は、現実世界の地形によって制限されうる(例えば、戦車は、川をよりゆっくりと移動し、道路をより速く移動し、壁を通っては移動できないなど)。
既存のARセッション技術は、マスタ状態を管理し、定期的に、ネットワーク(例えば、インターネット)を介して、クライアントでの環境のローカル状態をマスタ状態に同期させるサーバを含む。しかし、デバイスのローカル状態を同期させることは、かなりの時間(例えば、~100ミリ秒)を要することがあり、ゲーム体験に有害である。プレイヤーは、事実上、現在のゲーム状態というよりむしろ、過去のゲーム状態と相互作用している。レイテンシは、他のプレイヤーの視界に見える一人のプレーヤのアクション間の顕著な遅延を引き起こすため、この問題は、特に、一人より多くのユーザがパラレルリアリティゲームに参加する場面で深刻になりうる。例えば、一人のプレーヤーがその世界でARオブジェクトを移動する場合、他のプレイヤーは、人間が知覚可能な遅延である100ミリ秒(又はそれより大きい)後まで、それが動いたことが見えないことがある。かくして、他のプレイヤーは、その以前の位置内のオブジェクトに相互作用しようと試みるが、ゲームが遅延を正すときに(例えば、プレイヤーによって要求されるアクションを実施することを拒否するか、又は最初にアクションを実行し、次いで、プレイヤーのクライアントが次にサーバと同期するときに、それを呼び出すことによって)妨げられることがある。
この問題及び他の問題は、どのようにして1つ以上のデバイスがデータグラムを処理するかを最適化するデータフローヒエラルキープロトコルを実装することによって対処されうる。データフローヒエラルキーは、データフローのための様々なネットワーク経路を含む。データフローヒエラルキーを実装するデバイスは、1つ以上のネットワーク経路を利用して、他のデバイスとのデータ通信における低レイテンシを保証しうる。いくつかの実施形態において、デバイスは、様々なネットワーク経路をサンプリングして、中間ノードを通るデータ通信に利用するための最小レイテンシのネットワーク経路を決定する。様々なネットワーク経路は、ゲームサーバを通る経路、セルタワーを通る経路、及びネットワークを通る経路などの、1つ以上の中間ノードを通る経路を含みうる。ネットワーク経路は、(例えば、ブルートゥースを利用する)デバイス間の直接接続も含みうる。データフローヒエラルキーを利用することは、レイテンシをミリ秒のオーダ、例えば、5ミリ秒未満に改善しうる。さらに、データフローヒエラルキーは、バンド幅利用可能性に従ってバンド幅利用を最適化しうる。
実施形態による、データフローヒエラルキープロトコルが実装されうるネットワーク環境を示す。 一実施形態による、クライアントを示すブロック図である。 一実施形態による、ゲームサーバを示すブロック図である。 一実施形態による、セルタワーを示すブロック図である。 実施形態による、データフローヒエラルキープロトコルを利用するプロセスを示す。 実施形態による、セルタワー周辺の地域内のクライアント間でデータを送信するプロセスを示す。 実施形態による、図1に示したコンピュータネットワーク内の利用に適した例示的なコンピュータを示す高レベルブロック図である。
図及び以下の説明では、例示のみを目的として特定の実施形態について説明する。当業者は、構造及び方法の代替的な実施形態が、説明された原理から逸脱することなく採用されうることを、以下の説明から直ちに認識するだろう。ここでは、参照が様々な実施形態に対してなされることがあり、その例は、添付図に例示される。どこでも、実質的に類似又は同様の参照番号が、類似又は同様の機能性を示すために図中で利用される。要素が共通の番号を共有し、その後に異なる文字が続く場合、要素は類似又は同一である。数字のみが、そのような要素の任意の1つ又は任意の組み合わせを指す。
ネットワーク環境
ここで開示されるように、データフローヒエラルキープロトコルは、以前のアプローチと比較すると、減少したコンピュータネットワークレイテンシを提供しうる(例えば、一実施形態において、レイテンシは~10ミリ秒である)。図1は、一実施形態による、データフローヒエラルキープロトコルを利用して通信するコンピュータネットワーク100を示す。図は、明確にする目的でブロック図を利用して簡単化した例を示す。コンピュータネットワーク100は、2つのクライアント110と、ゲームデータベース115と、ゲームサーバ120と、セルタワー130と、ローカルエリアネットワーク(LAN)140とを含む。他の実施形態において、コンピュータネットワークは、追加的なクライアント110、追加的なゲームサーバ120、追加的なセルタワー130、又は他のネットワークノードなどの、より少ない要素、追加的な要素、又は他の要素を含んでよい。クライアント110は、パラレルリアリティゲームをホストするゲームサーバ120と通信する。クライアント110は、パラレルリアリティゲームの間、パラレルリアリティゲームの他のプレイヤーと相互作用するプレイヤーとして互いに通信する。
クライアント110は、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、スマートフォンなどのようなコンピューティングデバイスである。クライアント110は、例えば、パラレルリアリティゲームをプレイしている間、データフローヒエラルキープロトコルを利用して互いに通信することができる。実施形態において、各クライアント110は、ローカルARモジュールを含み、ゲームサーバ120は、マスタARモジュールを含む。各ローカルARモジュールは、ARデータを、他のクライアント110上のローカルARモジュール及び/又はゲームサーバ120上のマスタARモジュールと通信する。クライアント110については、図2でさらに説明されよう。
ゲームサーバ120は、同様に、様々なクライアント110によってプレイされるパラレルリアリティゲームをホストするコンピューティングデバイスである。ゲームサーバ120は、クライアント110の間の接続を確立して、パラレルリアリティゲーム状態の情報を受信及び送信する。ゲームサーバ120は、プレイヤープロファイル、ゲーム状態、マップ(リアル及びバーチャル)、及びゲームデータベース115内のパラレルリアリティゲームに関する他の情報を格納する。ゲームサーバ120については、図3でさらに説明されよう。
セルタワー130は、クライアント110間のデータ通信のために構成されたネットワークである。セルタワー130は、例えば、UDPを介して、クライアント110間のデータ転送を容易にしうる。1つ以上の実施形態において、セルタワー130は、セルタワー130に接続されたクライアント110間でパラレルリアリティゲームをホストすることを補助するように構成されるローカルARモジュールを有する。セルタワー130は、例えば、周期的に又はリアルタイムで、ゲームサーバ120とゲーム状態を共有しうる。セルタワー130については、図4でさらに説明される。
LAN140は、クライアントが接続しうるローカルネットワークである。LAN140は、クライアント110が接続しうる1つ以上のルータを含む。LAN140は、Wi-Fi及びイーサネットを伴って動作する。セルタワー130と同様に、LAN140は、LANに接続されたクライアント110間でパラレルリアリティゲームをホストすることを補助するように構成されたローカルARモジュールを含みうる。同様に、LAN140は、ゲーム状態をゲームサーバ120と共有する。
クライアント110は、データフローヒエラルキープロトコル、又は他の実施形態における他のプロトコルを利用して互いに通信しうる。互いに通信するために、2つ以上のクライアントが、1つ以上の経路を介してデータを送信する。図1に示すように、クライアント110Aとクライアント110Bとの間に、コンピュータネットワーク100内に存在する3つの経路がある。第1の経路においては、クライアント110は、例えば、TCPを利用して、ゲームサーバ120を介して互いに通信しうる。第2の経路においては、クライアント110は、例えば、TCP又はUDPを利用して、セルタワー130を介して互いに通信しうる。第3の経路においては、クライアント110は、例えば、TCP又はUDPを利用して、LAN140を介して互いに通信しうる。他の実施形態(不図示)においては、例えば、イーサネット、ブルートゥース、近距離無線通信(NFC)などを介する、クライアント間の通信のための他の経路がありうる。経路のそれぞれにおいて、クライアント110は、中間ノード、例えば、ゲームサーバ120、セルタワー130、又はLAN140を介して通信する。データフローヒエラルキープロトコルは、クライアント110間の利用可能な通信経路を評価し、クライアント110間でデータを通信する際に利用する1つ以上の経路を最適化する。
実施形態において、クライアント110通信は、ゲームサーバ120を通じてルーティングされるか又はピアトゥピア(P2P)でありうる。ゲームサーバ120を通じてルーティングされる通信は、セルタワー130を介して、第1のクライアント110Aからゲームサーバ120へと進み、次いで、セルタワー130を通じて第2のクライアント110Bへと戻る。対称的に、P2P通信は、第1のクライアント110Aからセルタワー130へと進み、次いで、直接的に第2のクライアント110Bへと進む。いくつかのケースでは、通信は、信号ブースターなどの他の中間デバイスを通過しうることに留意されたい。ここで利用されるように、ゲームサーバ120を通過せずにターゲットクライアント110Bへとルーティングされる場合、通信は、P2Pとみなされる。例えば、ターゲットクライアント110Bが、送信クライアント110Aと同じセルタワー130に接続されている場合にはメッセージ(例えば、データグラム)がP2Pで送信され、そうでない場合にはゲームサーバ120を介してルーティングされうる。他の実施形態において、クライアント110は、完全にP2Pを利用して通信する。さらに、いくつかの実施形態では、UDPホールパンチング、又はネットワークアドレストランスレーション(NAT)を含むP2P通信のための他の技術が、2つ以上のクライアント110間の接続を確立するために利用されうる。
一実施形態において、クライアント110は、(例えば、ゲームサーバ120でホストされ、TCPを介して通信される)コーディネーションサービスを利用してIPアドレスを同期する。クライアント110は、次いで、公開IPアドレス又はLAN140を利用して(例えば、UDPを介して)通信することができる。例えば、第1のクライアント110Aは、ローカルAR共有環境に接続するために、TCPを介してコーディネーションサービスに要求を送信することがある。コーディネーションサービスは、第1のクライアント110Aに、(例えば、同じセルタワー130を介して)AR環境に接続された第2のクライアント110BのIPアドレスを提供しうる。コーディネーションサービスは、第1のクライアントのIPアドレスを第2のクライアント110Bに提供してもよいし、又は、第1のクライアント110Aは、第2のクライアントのIPアドレスを利用して、(コーディネーションサービスによって提供されるように)それを直接提供してもよい。いくつかの実施形態において、コーディネーションサービスは、第2のクライアントのIPアドレスが提供される前に、第2のクライアント110Bに対し、(例えば、ユーザ認証を要求するか、又は、第2のクライアント110Bに接続するために承認されたクライアント110のリストをチェックすることによって)第1のクライアント110Aを承認するように促しうる。
一実施形態において、クライアント110は、UDPを介して公開IPアドレスで通信し、通信は、公開鍵暗号で保護される。特定の実施形態においては、楕円曲線暗号(ECC)が実装される。ECCは、他のコンピューティングシステム及びネットワークに公に提供される公開鍵を暗号化するための一方向性及び決定論的関数である有限体上の楕円曲線を利用する。他の公開鍵暗号方式に対するECCの1つの利点は、ECCがよりシンプルな関数であり、より小さな鍵サイズを可能にし、結果としてバンド幅利用量を低減することである。
クライアント
図2は、実施形態による、クライアント110のブロック図である。クライアント110は、プレーヤによって利用され、ゲームサーバ120とインターフェースで接続することができる任意のポータブルコンピューティングデバイスでありうる。例えば、クライアント110は、ワイヤレスデバイス、パーソナルデジタルアシスタント(PDA)、ポータブルゲーミングデバイス、セルラフォン、スマートフォン、タブレット、ナビゲーションシステム、ハンドヘルドGPSシステム、ウェアラブルコンピューティングデバイス、1つ以上のプロセッサを持つディスプレイ、又は他のそのようなデバイスでありうる。他の例では、クライアント110は、デスクトップ又はラップトップコンピュータなどの従来のコンピューティングシステムを含む。さらに、クライアント110は、コンピューティングデバイスを持つ車両であってよい。端的に言えば、クライアント110は、プレイヤーがゲームサーバ120と相互作用することを可能にしうる任意のコンピュータデバイス又はシステムであってよい。コンピューティングデバイスとして、クライアント110は、1つ以上のプロセッサと、1つ以上のコンピュータ可読記憶媒体とを含みうる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を格納することができる。クライアント110は、好適には、スマートフォン又はタブレットなど、容易に持ち運ぶことができるか又はそうでなければプレーヤーが携帯することができるポータブルコンピューティングデバイスである。
クライアント110は、ゲームサーバ120と通信して、ゲームサーバ120に物理環境の感覚データを提供する。クライアント110は、クライアント110が位置する物理環境内のシーンの2次元のイメージデータをキャプチャするカメラアセンブリ210を含む。クライアント110は、例えば、ゲームサーバ120によってトレーニングされた機械学習モデルである深度評価モデル含む。図1に示した実施形態において、各クライアント110は、ゲーミングモジュール220及びポジショニングモジュール230などのソフトウェアコンポーネントを含む。クライアント110は、プレーヤーから情報を受信し及び/又はプレーヤーに情報を提供するための様々な他の入力/出力デバイスを含んでよい。例示的な入力/出力デバイスは、ディスプレイ画面、タッチ画面、タッチパッド、データ入力キー、スピーカー、及び音声認識に適したマイクロフォンを含む。クライアント110は、それらに限定されないが、動きセンサ、加速度計、ジャイロスコープ、他の慣性計測ユニット(IMUs)、気圧計、測位システム、温度計、光センサなどを含む、クライアント110からのデータを記録するための他の様々なセンサを含んでもよい。クライアント110は、ネットワーク介して通信を提供するためのネットワークインターフェースをさらに含みうる。ネットワークインターフェースは、1つ以上のネットワークとインターフェースで接続するための任意の適したコンポーネントを含むことができ、例えば、トランスミッタ、レシーバ、ポート、コントローラ、アンテナ、又は他の適したコンポーネントを含む。
カメラアセンブリ210は、クライアント110がいる環境のシーンのイメージデータをキャプチャする。カメラアセンブリ210は、様々なキャプチャレートで、様々なカラーキャプチャ範囲を持つ様々なフォトセンサを利用しうる。カメラアセンブリ210は、広角レンズ又はテレフォトレンズを含みうる。カメラアセンブリ210は、単一画像又はビデオをイメージデータとしてキャプチャするように構成されうる。加えて、カメラアセンブリ210の向きは、カメラアセンブリ210が水平に向けられた状態で、地面に平行でありうる。カメラアセンブリ210は、イメージデータをキャプチャし、クライアント110上のコンピューティングデバイスとイメージデータを共有する。イメージデータは、感覚データ(例えば、温度、環境の明るさ)又はキャプチャデータ(例えば、露出、暖かさ、シャッタースピード、焦点距離、撮影時間など)を含む、イメージデータの他の詳細を記述するメタデータが追加できる。カメラアセンブリ210は、イメージデータをキャプチャすることができる1つ以上のカメラを含みうる。1つの例では、カメラアセンブリ210は、1つのカメラを含み、単眼イメージデータをキャプチャするように構成される。他の例では、カメラアセンブリ210は、2つのカメラを含み、立体イメージデータをキャプチャするように構成される。様々な他の実装では、カメラアセンブリ210は、それぞれがイメージデータをキャプチャするように構成された複数のカメラを含む。
ゲーミングモジュール220は、プレーヤーに、パラレルリアリティゲームに参加するためのインターフェースを提供する。ゲームサーバ120は、クライアント110のゲーミングモジュール220で利用するゲームデータをクライアント110に送信し、ゲームサーバ120から離れた位置のプレーヤーにゲームのローカルバージョンを提供する。ゲームサーバ120は、図1で説明した様々な通信経路を提供するためのネットワークインターフェースを含みうる。ネットワークインターフェースは、1つ以上のネットワークとインターフェースで接続するための任意の適したコンポーネントを含むことができ、例えば、トランスミッタ、レシーバ、ポート、コントローラ、アンテナ、又は他の適したコンポーネントを含む。
クライアント110によって実行されるゲーミングモジュール220は、プレーヤーとパラレルリアリティゲームとの間のインターフェースを提供する。ゲーミングモジュール220は、ゲームに関連付けられた仮想世界を表示する(例えば、仮想世界の画像をレンダリングする)クライアント110に関連付けられたディスプレイデバイス上にユーザインターフェースを提示し、ユーザが仮想世界で相互作用して様々なゲーム目標を実行できるようにする。いくつかの他の実施形態では、ゲーミングモジュール220は、パラレルリアリティゲームからの仮想要素で拡張された現実世界からの(例えば、カメラアセンブリ210によってキャプチャされた)イメージデータを提示する。これらの実施形態では、ゲーミングモジュール220は、クライアントの他のコンポーネントから受信した他の情報に従って、仮想コンテンツを生成し及び/又は仮想コンテンツを調整しうる。例えば、ゲーミングモジュール220は、イメージデータでキャプチャされたシーンの(例えば、深度評価モデルよって決定された)深度マップに従って、ユーザインターフェース上に表示される仮想オブジェクトを調整しうる。
ゲーミングモジュール220は、また、様々な他の出力を制御して、ディスプレイ画面を見るようにプレーヤーに要求することなしに、プレーヤーがゲームと相互作用することを可能にする。例えば、ゲーミングモジュール220は、様々な音声、振動、又はディスプレイ画面を見ることなくプレーヤーがゲームをプレイすることを可能にする他の通知を制御することができる。ゲーミングモジュール220は、ゲームサーバ120から受信したゲームデータにアクセスして、ゲームの正確な表現をユーザに提供することができる。ゲーミングモジュール220は、プレーヤの入力を受信して処理し、ネットワーク介してゲームサーバ120にアップデートを提供することができる。ゲーミングモジュール220は、クライアント110によって表示されるゲームコンテンツを生成及び/又は調整してもよい。例えば、ゲーミングモジュール220は、(例えば、深度評価モジュールよって決定されるような)深度情報に基づいて仮想要素を生成しうる。
ポジショニングモジュール230は、クライアント110の位置をモニタリングするための任意のデバイス又は回路でありうる。例えば、ポジショニングモジュール230は、サテライトナビゲーションポジショニングシステム(例えば、GPSシステム、ガリレオポジショニングシステム、グローバルナビゲーションサテライトシステム(GLONASS)、BeiDouサテライトナビゲーション及びポジショニングシステム)、慣性ナビゲーションシステム、三角測量及び/又はセルラタワー又はWi-Fiホットスポットへの近接を利用したIPアドレスに基づく推測航法システム、及び/又は位置を決定するための他の適した技術を利用することによって、実際の又は相対的な位置を決定しうる。ポジショニングモジュール230は、正確にクライアント110の位置を測位するのに役立ちうる様々な他のセンサをさらに含みうる。いくつかの実施形態では、クライアント110は、パラレルリアリティゲームでローカルに利用されるマップの位置を格納する。ポジショニングモジュール230は、ローカルに格納されたマップに関してクライアント110を位置決めすることができる。ポジショニングモジュール230は、周期的に、ローカルに格納された(又はキャッシュされた)マップと、ゲームサーバ120によって管理されているマップデータとを同期することもできる。
プレーヤーが現実世界でクライアント110と共に動き回ると、ポジショニングモジュール230は、プレーヤーの位置をトラッキングし、プレーヤー位置情報をゲーミングモジュール220に提供する。ゲーミングモジュール220は、現実世界におけるプレーヤーの実際の位置に基づいて、ゲームに関連付けられた仮想世界におけるプレーヤーの位置をアップデートする。従って、プレーヤーは、現実世界でシンプルにクライアント110を携帯又は輸送することによって仮想世界と相互作用することができる。特に、仮想世界におけるプレーヤーの位置は、現実世界におけるプレーヤーの位置に対応しうる。ゲーミングモジュール220は、ネットワーク介して、プレーヤー位置情報をゲームサーバ120に提供することができる。これに応答して、ゲームサーバ120は、不正行為者がクライアント110の位置を偽装するのを防止するために、クライアント110の位置を検証するための様々な技術を制定しうる。プレーヤーに関連付けられた位置情報は、プレーヤーの位置情報にアクセスすること、及び位置情報がゲームのコンテキストでどのように利用されるか(例えば、仮想世界におけるプレーヤーの位置をアップデートするため)をプレーヤーに通知した後、許可が与えられた場合にのみ利用されると理解すべきである。加えて、プレーヤーに関連付けられた任意の位置情報は、プレーヤーのプライバシーを保護する方法で格納されて管理されるだろう。
データフローモジュール240は、他のコンピューティングコンポーネントと通信する。データフローモジュール240は、任意のタイプの有線及び/又は無線接続を利用し、様々な通信プロトコル(例えば、TCP/IP、HTTP、SMTP、FTP)、エンコーディング又はフォーマット(例えば、HTML、XML、JSON)、及び/又は保護スキーム(例えば、VPN、セキュアHTTP、SSL)を利用して、通信を確立しうる。
1つ以上の実施形態において、データフローモジュール240は、ゲームサーバ120と通信する。データフローモジュール240は、アクション、ゲーム状態のアップデート、様々なコンテンツアイテム(例えば、パラレルリアリティゲーム)の要求、又はゲームサーバ120への他の通信を提供する。データフローモジュール240は、例えば、TCPを介して、ゲームサーバ120との接続を確立する。TCPは、データの送信においてロバストな方法を提供する。TCPでは、データフローモジュール240は、データの送信中にロスパケットを検出し、ロストパケットの再送信を要求することができる。さらに、TCPは、意図したメッセージを生成するために、順不同で受信されたシーケンシャルデータパケットの再構築を可能にする。
データフローモジュール240は、1つ以上の他のクライアント110との通信も管理する。データフローモジュール240は、他のクライアント110と通信するための1つ以上の経路を識別する。所与の時間にクライアント110が利用可能な経路は、ゲームサーバ120を通る経路、セルタワー130を通る経路、LAN140を通る経路、他のネットワークを通る他の経路、及び直接接続(例えば、ブルートゥース経由)の任意の組み合わせを含みうる。データフローモジュール240は、データフローヒエラルキープロトコルを実装して、クライアント110間でデータを送信する際に利用するための1つ以上の利用可能な経路を選択する。単一の利用可能な経路がある状況では、データフローヒエラルキープロトコルは、唯一の識別された経路を介してデータを送信するように指示する。
複数の利用可能な経路がある状況では、データフローヒエラルキープロトコルは、1つ以上の利用可能な経路を選択して、データ通信のレイテンシを改善する。データフローモジュール240は、利用可能な経路によるデータ送信パフォーマンスを示す利用可能な経路の1つ以上のメトリック(即ち、パフォーマンスメトリック)を計算する。メトリックは、レイテンシ(ping)、ジッタ、データロス、接続強度(接続の安定性)、バンド幅、他のデータ送信メトリックなどを含む。一実施形態では、データフローヒエラルキープロトコルは、データ通信に利用する最低のレイテンシを持つ経路(又はいくつかの経路)を選択する。他の実施形態では、データフローヒエラルキープロトコルは、レイテンシに加えて又は代替的に1つ以上の他のメトリックを考慮する。例えば、データフローヒエラルキープロトコルは、各経路の総合スコア(即ち、経路スコア)を決定するために、各経路に対する1つ以上のメトリックを組み合わせうる。経路スコアは、利用可能な経路をランキングし、ある経路(例えば、最高ランクの経路)又は複数の経路(例えば、いくつかの最高ランクの経路)を選択するために利用されうる。
複数の経路がデータフローヒエラルキープロトコルに基づいて選択される場合、複数の選択された経路はそれぞれ、データ送信レートを改善するために、同じデータの別々のコピーを送信するために利用されうる。しかし、そのようなケースでは、異なる経路を介して同じデータの複数のコピーを送信することがバンド幅の利用量を増加するという点で、より多くの経路を利用することにはトレードオフがある。いくつかの実施形態では、データフローヒエラルキープロトコルは、周期的に利用可能な経路をサンプリングして、どの経路が利用に最適かを再評価する。例えば、データフローヒエラルキープロトコルは、定期的に(例えば、30秒毎に)利用可能な経路を評価し、通信に利用する1つ以上の経路の最適なセットを決定する。データフローヒエラルキープロトコルは、クライアント110Aからクライアント110Bへなど、データを利用可能な経路のエンドポイントへと送信することによって利用可能な経路をサンプリングしうる。追加的に又は代替的に、データフローヒエラルキープロトコルは、クライアント110Aからゲームサーバ120又はセルタワー130へなど、データを多くのエンドポイントに接続された中間ノードへと送信することによって、1つ以上の利用可能な経路をサンプリングしうる。いくつかの実施形態では、データフローヒエラルキープロトコルは、通信で利用する全ての利用可能な経路を選択する。データフローヒエラルキープロトコルは、バンド幅の利用可能性に従って、経路選択を調整しうる。例えば、帯域利用可能性が高い状況では、データフローヒエラルキープロトコルは、全ての利用可能な経路の選択を指示しうる。対称的に、バンド幅の利用可能性が制限されるとき、データフローヒエラルキープロトコルは、最適な経路(例えば、最小レイテンシ経路)を選択しうる。
いくつかの実施形態では、データフローモジュール240は、例えば、パラレルリアリティゲームにおける共有AR体験の間、クライアント間で送信されるデータを暗号化する。データフローモジュール240は、様々な暗号化方法を実装しうる。特定の実装では、ECCは、例えば、セルタワー130を介して、又はLAN140を介して、クライアント110間のUDP送信を保護するために実装される。
ゲームサーバ
図3は、実施形態による、ゲームサーバを示すブロック図である。ゲームサーバ120は、任意のコンピューティングデバイスであることができ、1つ以上のプロセッサと、1つ以上のコンピュータ可読記憶媒体とを含むことができる。コンピュータ可読記憶媒体は、プロセッサに動作を実行させる命令を格納することができる。ゲームサーバ120は、ゲームデータベース115を含むことができるし、又はゲームデータベース115と通信することができる。ゲームデータベース115は、パラレルリアリティゲームで利用され、クライアント110に供給又は提供されるゲームデータを格納する。
ゲームデータベース115に格納されるゲームデータは、
(1)パラレルリアリティゲーム内の仮想世界に関連付けられたデータ(例えば、ディスプレイデバイス上で仮想世界をレンダリングするために利用される画像データ、仮想世界内の位置の地理的座標など)、
(2)パラレルリアリティゲームのプレーヤーに関連付けられたデータ(例えば、それらに限定されないが、プレーヤー情報、プレーヤー経験レベル、プレーヤー通貨、仮想世界/現実世界内の現在のプレーヤーの位置、プレーヤーのエネルギーレベル、プレーヤーの好み、チーム情報、派閥情報などを含むプレーヤープロファイル)、
(3)ゲーム目標に関連付けられたデータ(例えば、現在のゲーム目標に関連付けられたデータ、ゲーム目標のステータス、過去のゲーム目標、将来のゲーム目標、望ましいゲーム目標など)、
(4)仮想世界内の仮想要素に関連付けられたデータ(例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲーム目標;仮想要素のための対応する実際の世界の位置情報;仮想要素の振る舞い、仮想要素の関連性など)、
(5)現実世界のオブジェクト、ランドマーク、仮想世界要素にリンクした位置に関連付けられたデータ(例えば、現実世界オブジェクト/ランドマークの位置、現実世界オブジェクト/ランドマークの説明、現実世界オブジェクトにリンクした仮想要素の関連性など)、
(6)ゲームステータス(例えば、現在のプレーヤー数、現在のゲーム目標のステータス、プレーヤーリーダーボードなど)、
(7)プレーヤーアクション/入力に関連付けられたデータ(例えば、現在のプレーヤーの位置、過去のプレーヤーの位置、プレーヤーの動き、プレーヤーの入力、プレーヤーのクエリ、プレーヤーの通信など)、
(8)パラレルリアリティゲームの実施期間に利用され、関連付けられ、又は取得される任意の他のデータ、
を含むことができる。
ゲームデータベース115に格納されるゲームデータは、システム管理者によって及び/又はクライアント110から受信されたデータによって、オフライン又はリアルタイムに事前設定されることができる。
ゲームサーバ120は、ゲームデータについての要求をクライアント110から(例えば、リモートプロシージャコール(RPCs)を介して)受信し、それらの要求に応答するように構成されうる。例えば、ゲームサーバ120は、1つ以上のデータファイル内のゲームデータをエンコードし、データファイルをクライアント110に提供することができる。加えて、ゲームサーバ120は、クライアント110からゲームデータ(例えば、プレーヤーの位置、プレーヤーのアクション、プレーヤーの入力など)を受信するように構成されうる。例えば、ゲームサーバ120が、ゲームデータベース115内のゲームデータをアップデートして、任意の及び全ての変更された状態をゲームに反映させるために利用する、プレーヤーの入力及び他のアップデートを、クライアント110が、周期的にゲームサーバ120に送信するように構成されうる。
示された実施形態において、サーバ120は、ユニバーサルゲーミングモジュール310と、データコレクションモジュール320と、イベントモジュール330とを含む。上記のように、ゲームサーバ120は、ゲームサーバ120の一部であるか又はリモートでアクセスされてよいゲームデータベース115と相互作用する(例えば、ゲームデータベース115は、ネットワークを介してアクセスされる分散型データベースであってよい)。他の実施形態では、ゲームサーバ120は、異なる及び/又は追加的な要素を含む。加えて、機能は、説明されたものとは異なる方式で要素間で分散されてよい。例えば、ゲームデータベース115は、ゲームサーバ120に統合されうる。
ユニバーサルゲーミングモジュール310は、全てのプレーヤーに対してパラレルリアリティゲームをホストし、パラレルリアリティゲームの現在のステータスについての全てのプレーヤーに対する信頼できる情報源としての役割を演じる。ホストとして、ユニバーサルゲーミングモジュール310は、プレーヤーに、例えば、それらの個々のクライアント110を介して提示するためのゲームコンテンツを生成する。ユニバーサルゲーミングモジュール310は、パラレルリアリティゲームをホストするとき、ゲームデータベース115にアクセスしてゲームデータを取り出し及び/又は格納しうる。ユニバーサルゲーミングモジュール310は、また、クライアント110からゲームデータ(例えば、深度情報、プレーヤーの入力、プレーヤーの位置、プレーヤーのアクション、ランドマークの情報など)を受信し、パラレルリアリティゲームの全プレーヤーについて、受信したゲームデータをパラレルリアリティゲーム全体に組み入れる。ユニバーサルゲーミングモジュール310は、また、ネットワーク介したクライアント110へのゲームデータの搬送を管理しうる。ユニバーサルゲーミングモジュール310は、また、それらに限定されないが、クライアント110とゲームサーバ120との間の接続をセキュアにすること、様々なクライアント110間の接続を確立すること、及び様々なクライアント110の位置を検証することを含む、クライアント110のセキュリティ面を管理しうる。
ゲームサーバ120は、データコレクションモジュール320をさらに含みうる。データコレクションモジュール320は、それが含まれる実施形態において、ユニバーサルゲーミングモジュール310から分離するか又はその一部とすることができる。データコレクションモジュール320は、現実世界でのデータ収集活動にリンクするパラレルリアリティゲーム内の様々なゲーム特徴の包含を管理することができる。例えば、データコレクションモジュール320は、パラレルリアリティゲーム内のデータ収集活動にリンクしたゲーム特徴を含めるように、ゲームデータベース115に格納されたゲームデータを修正することができる。データコレクションモジュール320は、また、データ収集活動に従ってプレーヤーによって収集されたデータを分析し、様々なプラットフォームによるアクセスのためのデータを提供することができる。
イベントモジュール330は、パラレルリアリティゲーム内のイベントに対するプレーヤーのアクセスを管理する。用語「イベント」が便利に利用されるけれども、この用語は、特定の場所又は時間での特定のイベントを指す必要がないと理解すべきである。むしろ、プレーヤーがそのコンテンツにアクセスしうるかどうかを決定するために1つ以上のアクセス基準が利用される、アクセス制御されたゲームコンテンツの任意の提供を指しうる。そのようなコンテンツは、アクセス制御がより少ない又は全く無いゲームコンテンツを含む、より大きなパラレルリアリティゲームの一部であってもよいし、又は、スタンドアローンの、アクセス制御されたパラレルリアリティゲームであってもよい。
セルタワー
図4は、実施形態による、セルタワーを示すブロック図である。示した実施形態では、セルタワー130は、ルーティングモジュール410と、データ取り込みモジュール420と、AR環境モジュール430と、マップ処理モジュール440と、権限チェックモジュール450と、ローカルデータストア460とを含む。セルタワー130は、また、データを交換するためにゲームサーバ120及びクライアント110に対する接続を確立するためのハードウェア及びファームウェア又はソフトウェア(不図示)を含む。例えば、セルタワー130は、光ファイバ又は他の有線インターネット接続を介してゲームサーバ120に接続され、無線接続(例えば、4G又は5G)を利用してクライアント110に接続されうる。他の実施形態では、セルタワー130は、異なる又は追加的なコンポーネントを含みうる。加えて、機能は、説明されたものとは異なる方式で要素間に分散されてよい。1つ以上の実施形態において、LAN140は、セルタワー130について説明されたものと類似のモジュールを含んでよく、同様に、LANがパラレルリアリティゲームをホストするのに役立ちうる。
ルーティングモジュール410は、データパケットを受信し、それらのパケットを1つ以上の受信デバイスに送信する。一実施形態では、ルーティングモジュール410は、データグラムをクライアント110から受信し、受信したデータグラムを適切な宛先に送信する。ルーティングモジュール410は、また、特定のクライアント110又はセルタワー130に接続されている全てのクライアントのいずれかにアドレス指定されたサーバからデータパケットを受信しうる。ルーティングモジュール410は、データパケットを、アドレス指定されているクライアント110に転送する。いくつかの実施形態では、ルーティングモジュール410は、他のクライアント110へと直接的に又はゲームサーバ120を介して、データパケット(例えば、データパケット内の情報)をルーティングするために、送信クライアント110によって選択された経路を示す情報を受信する。この場合、ルーティングモジュール410は、選択された経路を利用してデータパケットをルーティングする
データ取り込みモジュール420は、接続されたクライアント110を介してセルタワー130が共有AR体験をプレーヤーに提供するために利用する1つ以上の送信元からデータを受信する。一実施形態では、データ取り込みモジュール420は、(例えば、サードパーティサービスから)現実世界状況についてのリアルタイムの又は実質的にリアルタイムの情報を受信する。例えば、データ取り込みモジュール420は、周期的に(例えば、1時間毎に)、セルタワー周囲の地域内の気象条件を示す気象データを気象サービスから受信することがある。他の例として、データ取り込みモジュール420は、公園、美術館、又は他の公共空間の開場時間を取り込むことがある。さらに他の例として、データ取り込みモジュール420は、どのくらい多くの車両が、セルタワー130周辺の地域内の道路を走行しているかを示す交通データを受信することがある。そのような現実世界の状況についての情報は、仮想世界と現実世界との間のシナジーを改善するために利用されうる。
AR環境モジュール430は、セルタワー130周辺の地域内のプレーヤーが共有AR体験に参加しうるAR環境を管理する。一実施形態では、クライアント110は、パラレルリアリティゲームを実行している間、セルタワー130に接続し、AR環境モジュール430は、クライアントをゲーム用のAR環境に接続する。セルタワー130に接続するゲームの全プレーヤーは、単一のAR環境を共有しうるか、又はプレーヤーは、複数のAR環境間に分けられうる。例えば、特定のAR環境内ではプレーヤーの最大数(例えば、10、20、100など)が存在することがある。複数のAR環境がある場所では、新たに接続するクライアント110は、ランダムにセッションに配置されうるし、又はクライアントは、ユーザインターフェース(UI)を提供して、プレーヤーがどのセッションに参加するかを選択できるようにしうる。従って、プレーヤーは、友人と一緒にAR環境に参加することを選択しうる。いくつかの実施形態では、プレーヤーは、(例えば、参加するためにパスワード又はコードを要求する)アクセスが保護されているプライベートAR環境を構築しうる。
様々な実施形態において、ARオブジェクト(例えば、生物、乗り物など)が現実世界の特徴と相互作用するように見える(例えば、障害物を通り抜けるのではなく、障害物を飛び越える)ようにするため、AR環境モジュール430は、接続されたクライアント110に、クライアントの近くの現実世界を表す(例えば、ローカルデータストア460に格納された)マップデータを提供する。AR環境モジュール430は、クライアント110についてのローカルデータ(例えば、GPS位置)を受信し、(例えば、クライアントの現在位置の閾値距離範囲内の)クライアント周囲の地域についてのマップデータを提供しうる。
受信されたマップデータは、1つ以上の現実世界の表示を含むことができる。例えば、マップデータは、ポイントクラウドモデル、プレーンマッチングモデル、ラインマッチングモデル、ジオグラフィック情報システム(GIST)モデル、ビルディング認識モデル、ランドスケープ認識モデルなどを含むことができる。マップデータは、また、異なる詳細レベルで、所与のタイプの1つ以上の表示を含みうる。例えば、マップデータは、2つ以上のポイントクラウドモデルを含んでよく、それぞれは、異なる数のポイントを含む。
クライアント110は、マップデータと、1つ以上のセンサによって収集されたデータとを比較して、クライアントの位置を精錬する。例えば、クライアント110のカメラによってキャプチャされた画像をポイントクラウドモデルにマッピングすることによって、クライアントの位置及び向きは、正確に(例えば、1センチメートル及び0.1度の範囲で)決定されうる。クライアント110は、プレーヤーが行った任意のアクション(例えば、射撃、相互作用する仮想アイテムの選択、仮想アイテムのドロップなど)と共に、決定された位置及び向きをAR環境モジュール430に返す。従って、AR環境モジュール430は、AR環境に参加する全てのプレーヤーについてのゲームのステータスをアップデートすることができる。
マップ処理モジュール440は、現在の状況(例えば、データ取り込みモジュール420からのデータ)に基づいてマップデータをアップデートする。現実世界が静的でないため、ローカルデータストア460内のマップデータは、現在の現実世界の状況を表していないことがある。例えば、バーモント州の同じ公園の小道は、季節によって大きく異なるように見えることがある。夏なら、小道は、クリアでありるうし、周囲の木々は、葉で覆われているだろう。対照的に、冬なら、小道は、雪の吹きだまりによってブロックされていることがあるし、木々は露出しているかもしれない。マップ処理モジュール440は、マップデータを変形して、そのような変化を近似する。
一実施形態では、マップ処理モジュール440は、現在状況データを取得して変容を認識し、その変容をマップデータに適用する。異なる状況に対する変容は、ヒューリスティックルールによって定義されうるし、トレーニングされた機械学習モデルの形式をとったり、又は両方のアプローチの組み合わせを利用しうる。例えば、マップ処理モジュール440は、現在の気象状況データを受信し、現在の気象状況についての変容を選択し、マップデータにその変容を適用することがある。代替的に、マップ処理モジュール440は、変容したマップを事前計算し、それらを(例えば、ローカルデータストア460に)格納することがある。この場合、クライアント110がセルタワーに接続するとき、マップ処理モジュールは、現在の状況を決定し、適切な事前計算されたバージョンのマップデータを選択し、そのバージョンをクライアントに提供する。
権限チェックモジュール450は、異なるクライアント110のゲーム状態間の同期を管理する。一実施形態では、権限チェックモジュール450は、クライアント110から受信されたゲームアクションが、AR環境モジュール430によって管理されるゲーム状況と一致することを確認する。例えば、二人のプレーヤーが両方とも同じゲーム内のアイテムをピックアップしようとする場合、権限チェックモジュール450は、(例えば、要求に関連付けられたタイムスタンプに基づいて)どちらのプレーヤーがアイテムを受け取るかを決定する。説明されたように、P2Pプロトコル及びセルタワーでのローカル処理の利用は、他のプレーヤーのクライアント110で見られるプレーヤーのアクションのレイテンシを大きく低減させうる。従って、そのような競合が発生し、権限チェックモジュール450によって解決されるべきインスタンスの尤度(及び数)が低減される。従って、AR体験が改善されうる。
権限チェックモジュール450は、また、そのAR環境の状態のコピー(中間ノード状態)と、ゲームサーバ120によって管理されるマスタ状態との間の同期を管理しうる。一実施形態では、権限チェックモジュール450は、周期的に(例えば、1~10秒毎に)、AR環境の状態に関するグローバルアップデートをゲームサーバ120から受信する。権限チェックモジュール450は、中間ノード状態に対するこれらのアップデートを比較し、あらゆる矛盾を解決する。例えば、アイテムをピックアップするプレーヤーの要求が最初に権限チェックモジュール450によって承認されたが、プレーヤーがそれをピックアップしようとする前に、ゲームサーバ120からのゲームアップデートが、他のプレーヤーによってアイテムがピックアップされた(又は、そうでなければ、利用不可能であるとされた)ことを示す場合、権限チェックモジュール450は、プレーヤーのクライアント110に、そのアイテムはプレーヤーの目録から削除されるべきである旨を示すアップデートを送信することがある。
このプロセスは、2つ以上の異なるセルタワー130によって提供されるカバレッジ間の境界近くに位置するクライアント110についての値を提供しうる。この場合、異なるセルタワー130に接続されるクライアント110のプレーヤーが両方とも、同じ仮想要素に相互作用することができることがある。従って、個別のセルタワー130はそれぞれ、異なるクライアント110からの要素との競合する相互作用を最初に承認することがある。この場合、サーバ120は、異なるセルタワー130との同期後に競合を検出し、競合を解決するためのアップデートを送信することができる(例えば、セルタワーの1つが、アクションのその最初の承認を取り消し、それに従って、そのローカル状態をアップデートするように指示する)。
ローカルデータストア460は、セルタワーによって利用されるデータを格納するように構成された1つ以上の非一時的なコンピュータ可読記憶媒体である。一実施形態では、格納されたデータは、マップデータ、現在の状況データ、現在(又は最近)接続されているクライアント110のリスト、地域に対するゲーム状態のローカルコピーなどを含みうる。ローカルデータストア460は、単一のエンティティとして表示されているけれども、データは、複数の記憶媒体に分割されてよい。さらに、いくつかのデータは、通信ネットワーク内の別の場所に格納されてよいし、又はリモートアクセスされてよい。例えば、セルタワー130は、現在の状況データに必要に応じてリモートで(例えば、サードパーティーサーバから)アクセスしてよい。
例示的な方法
図5は、実施形態による、データフローヒエラルキープロトコルを利用するためのプロセス500を示す。図5のステップは、方法500を実行するクライアント110Aの視点から説明されている。しかし、ステップの一部又は全部は、他のエンティティ又はコンポーネントによって実行されうる。加えて、いくつかの実施形態は、ステップを並列に実行してよいし、異なる順序でステップを実行してよいし、又は異なるステップを実行してよい。
クライアント110Aは、510、データ送信のために1つ以上の利用可能なネットワーク経路を識別する。クライアント110Aは、ターゲットクライアント110Bへの事前設定された経路のセットのいずれが、クライアント110Aに現在利用可能であるかを決定することによって、そのようなネットワーク経路を識別する。クライアント110Aがゲームサーバ120との接続を確立でき、ターゲットクライアント110Bもゲームサーバ120と接続している場合、クライアント110Aは、ゲームサーバ120を介する他のクライアント110とのネットワーク経路を識別する。クライアント110Aがセルタワー130に接続されている場合、クライアント110は、他のクライアント110Bが同様にセルタワー130に接続されているかどうかを決定しうる。もしそうならば、クライアント110Aは、セルタワー130を通る他のネットワーク経路を識別する。さらに、クライアント110Aと他のクライアント110Bとが同じLAN140に接続されている場合、クライアント110Aは、LAN140を通るネットワーク経路を識別しうる。クライアント110Aは、両方のクライアント110が接続する他のネットワーク又は経路を、他の利用可能なネットワーク経路(例えば、ブルートゥース接続などの、クライアント110間の直接接続)として識別しうる。1つ以上のネットワーク経路は、データ送信のためのUDPを実装しうる。 UDP経路について、クライアント110は、データの暗号化のために公開鍵暗号を利用しうる。特に、クライアント110は、ECCを実装しうる。
クライアント110Aは、520、利用可能なネットワーク経路のそれぞれについて1つ以上のパフォーマンスメトリックを検出する。クライアント110Aは、利用可能なネットワーク経路を通じてテストデータパケットを送信することによってパフォーマンスメトリックを検出する。データパケットは、他のクライアント110Bからの他のテストデータパケットの返送を要求しうる。これらのテストパケットの送信成功に基づいて、クライアント110Aは、ネットワーク経路のメトリックを計算(又は検出)することができる。メトリックは、レイテンシ(ping)、ジッタ、データロス、接続強度、バンド幅利用可能性などを含む。
クライアント110Aは、530、検出されたメトリックに従って、データ送信に利用する1つ以上の利用可能なネットワーク経路を選択する。クライアント110Aは、ネットワーク経路を選択するとき、1つ以上の特定のメトリックを考慮しうる。一実施形態では、クライアント110Aは、レイテンシ(ping)のみを考慮する。他の実施形態では、クライアント110Aは、レイテンシと接続強度とを考慮する。先に説明したように、クライアント110Aは、「最良の」経路又は(1つ以上のメトリックによって示されるような)経路を選択してよく、又は、データ送信に利用する全ての利用可能なネットワーク経路を選択してよい。
クライアント110Aは、540、1つ以上の選択されたネットワーク経路を介してデータを送信する。パラレルリアリティゲームのコンテキストにおいては、クライアント110Aは、ゲームデータを他のクライアント110及びゲームサーバ120に送信する。クライアント間の通信は、特に、パラレルリアリティゲームにおけるAR体験を共有するときに有効であり、それらのクライアント110上の複数のプレーヤーは、互いに及びゲームサーバ120と相互作用しうる。ゲーム状態がゲームサーバ120によって同期される必要がないように、いくつかの相互作用は、クライアント110又は他のネットワーク(例えば、セルタワー130又はLAN140)によってローカルでホストされる。ローカルにAR体験をホストすることは、より合理化されたAR体験を低レイテンシで提供する。
クライアント110Aは、プロセス500を繰り返して、周期的に利用可能な経路をサンプリングし、デバイス間のデータ送信を管理するために利用する経路を反復的に最適化する。
図6は、実施形態による、セルタワー周辺の地域内のクライアント110間でデータを送信するための方法600を示す。図6のステップは、地域内のクライアントデバイス110間でのP2P通信を提供するための方法600を実行するセルタワー130の視点から説明されている。しかし、ステップの一部又は全部は、他のエンティティ又はコンポーネントによって実行されてよい。加えて、いくつかの実施形態は、並列にステップを実行してよいし、異なる順序でステップを実行してよいし、又は異なるステップを実行してよい。
図6に示した実施形態において、セルタワー130は、610、セルタワー周辺の地域内のクライアント110のためのネットワーク経路を介してP2P通信を提供する。例えば、セルタワー130は、(例えば、ゲームサーバ120によってホストされる)パラレルリアリティゲームを提供するクライアント10にP2P通信を提供しうる。セルタワー130は、620、第1のクライアント110Aからネットワーク経路を介してデータを受信する。特に、ネットワーク経路は、利用可能なネットワーク経路のそれぞれに対する1つ以上のメトリックに基づいて、第1のクライアント110Aによって、利用可能なネットワーク経路から選択される。例えば、第1のクライアントデバイスは、上記のように、データフローヒエラルキープロトコルを利用してP2P通信を提供するネットワーク経路を選択しうる。第1のクライアント110Aから受信されたデータは、地域内の地理的位置に対応するARデータのように、AR環境の仮想コンテンツに関連付けられてよい。
ネットワーク経路を利用して、セルタワー130は、630、地域内の第2のクライアント110Bにデータを送信する。例えば、データが、パラレルリアリティゲームに関連付けられたAR環境の仮想コンテンツに対するアップデートを記述する場合、セルタワー130は、セルタワー130に接続される、パラレルリアリティゲームのクライアント110の一部又は全部に対するアップデートを提供しうる。他の例として、メッセージ又は第2のクライアントを利用するプレーヤーに関連付けられた仮想コンテンツとの相互作用など、データは、第2のクライアント110Bに特にアドレス指定されうる。
例示的なコンピュータ
図7は、実施形態による、図1に示したコンピュータネットワーク内での利用に適した例示的なコンピュータ700を示す高レベルブロック図である。例示的なコンピュータ700は、チップセット704に結合された少なくとも1つのプロセッサ702を含む。チップセット704は、メモリコントローラハブ720と、入力/出力(I/O)コントローラハブ722とを含む。メモリ706及びグラフィックアダプタ712は、メモリコントローラハブ720に結合され、ディスプレイ718は、グラフィックアダプタ712に結合される。ストレージデバイス708、キーボード710、ポインティングデバイス714、及びネットワークアダプタ716は、I/Oコントローラハブ722に結合される。コンピュータ700の他の実施形態は、異なるアーキティクチャを有する。
図7に示した実施形態において、ストレージデバイス708は、ハードドライブ、コンパクトディスクリードオンリーメモリ(CD-ROM)、DVD、又はソリッドステートメモリデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ706は、プロセッサ702によって利用される命令及びデータを保持する。ポインティングデバイス714は、マウス、トラックボール、タッチスクリーン、又は他のタイプのポインティングデバイスであり、コンピュータシステム700にデータを入力するために、キーボード710(オンスクリーンキーボードであってもよい)と組み合わせて利用される。グラフィックアダプタ712は、ディスプレイ718上に画像及び他の情報を表示する。ネットワークアダプタ716は、コンピュータシステム700を1つ以上のコンピュータネットワークに結合する。
図1のエンティティによって利用されるコンピュータのタイプは、実施形態及びエンティティによって要求される処理パワーに依存して変わりうる。例えば、ゲームサーバ120は、説明した機能を提供するために一緒に動作する複数のブレード型サーバを含む分散型データベースシステムを含むことがある。さらに、コンピュータは、キーボード710、グラフィックアダプタ712、及びディスプレイ718など、上述したコンポーネントの一部を省略することができる。
当業者は、説明された概念から逸脱することなく、本明細書に開示された装置及び技術の多数の使用及び修正、及びそれらからの拡張を行うことができる。例えば、本開示で図示又は説明されたコンポーネント又は特徴は、図示又は説明された場所、設定、又はコンテキストに限定されない。本開示による装置の例は、1つ以上の前述の図を参照しながら説明されたものの全て、より少数、又は異なるコンポーネントを含むことができる。本開示は、従って、本明細書で説明された特定の実装に限定されず、むしろ、添付の特許請求の範囲及びその均等物と一致する可能な限り広い範囲が与えられるべきである。
追加的な考察
実施形態の前述の説明は、例示を目的として提示されたものであり、 網羅的であること又は特許権を開示された正確な形式に限定することを意図したものではない。当業者は、上記の開示に照らして多くの修正及び変更が可能であることを理解することができる。
この説明のいくつかの部分は、情報に対する操作のアルゴリズム及び記号表現に関して実施形態を説明する。これらのアルゴリズムの説明及び表現は、その動作の要旨を他の当業者に効果的に伝えるためにデータ処理技術の当業者によって一般的に使用される。これらの操作は、機能的、計算的、又は論理的に説明されているが、コンピュータプログラム又は等価な電気回路、マイクロコードなどによって実装されることが理解される。さらに、一般性を失うことなく、これらの操作の配置をモジュールと呼ぶことが便利な場合もある。説明された動作及びそれらに関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせで具体化されうる。
本明細書で説明されたステップ、動作、又はプロセスのいずれも、単独で又は他のデバイスと組み合わせて、1つ以上のハードウェア又はソフトウェアモジュールで実行又は実装されうる。一実施形態では、ソフトウェアモジュールは、コンピュータプログラムコードを含むコンピュータ可読媒体を含むコンピュータプログラム製品で実装され、コンピュータプロセッサによって実行されて、説明されたステップ、動作、又はプロセスのいずれか又は全てを実行できる。
実施形態は、本明細書の動作を実行するための装置にも関連しうる。この装置は、必要な目的のために特に構築されることがあり、及び/又はコンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化されるか又は再構成される汎用コンピューティングデバイスを含みうる。そのようなコンピュータプログラムは、コンピュータシステムバスに結合されうる、非一時的な実体的なコンピュータ可読記憶媒体、又は電子命令を格納するのに適した任意のタイプの媒体に格納されうる。さらに、本明細書で言及される任意のコンピューティングシステムは、単一のプロセッサを含んでもよいし、又はコンピューティング能力を向上させるために複数のプロセッサ設計を採用するアーキテクチャであってもよい。
実施形態は、また、本明細書で説明されたコンピューティングプロセスによって生成される製品に関連しうる。そのような製品は、コンピューティングプロセスから生じる情報を含むことがあり、情報は、非一時的な実体的なコンピュータ可読記憶媒体に格納され、コンピュータプログラム製品の任意の実施形態又は本明細書で説明された他のデータの組み合わせを含みうる。
本明細書で利用されるように、「一実施形態」又は「ある実施形態」への任意の参照は、実施形態に関連して説明される特定の要素、特徴、構造、又は特徴が少なくとも1つの実施形態に含まれることを意味する。本明細書の様々な箇所に現れる「一実施形態において」という語句は、必ずしも全て同じ実施形態を参照しているわけではない。同様に、要素又はコンポーネントの前の「a」又は「an」は、単に利便性のために利用されているに過ぎない。この説明は、別の意味であることが明白でない限り、要素又はコンポーネントの1つ以上が存在することを意味すると理解されるべきである。
値が「近似的に」又は「実質的に」(又はその派生物)と説明されている場合、そのような値は、コンテキストから別の意味が明らかでない限り、精度が+/-10%として解釈されるべきである。例えば、「約10」は、「9~11までの範囲」を意味すると理解されるべきである。
本明細書で使用されるように、用語「備える」「備える」「含む」「有する」「有する」又はそれらの任意の他の変形は、非排除的な包含をカバーすることを意図している。例えば、要素のリストを含むプロセス、方法、物品、又は装置は、必ずしもそれらの要素のみを限定するわけではなく、明示的に列挙されていない、又はそのようなプロセス、方法、物品、又は装置に固有ではない他の要素を含んでよい。さらに、反対のことが明確に述べられていない限り、「又は」は、包含的離接及び排他的離接を指す。例えば、条件A又はBは、以下のいずれか1つによって充足される。Aが真(又は存在する)かつBが偽(又は存在しない)、Aが偽(又は存在しない)かつBが真(又は存在する)、そして、A及びBの両方が真(又は存在する)。
この開示を読むと、当業者は、説明された技術及びアプローチを採用するために利用されうる、さらに追加的な代替的な構造及び機能設計を理解するだろう。従って、特定の実施形態及びアプリケーションが例示されて説明されたが、説明された構成要素は、開示された正確な構造及びコンポーネントに限定されないと理解されるべきである。保護範囲は、以下の特許請求の範囲によってのみ制限されるべきである。
最後に、明細書で利用される文言は、主に読みやすさ及び説明を目的として選択されたものであり、特許権を描写又は制限するために選択されたものではないことがある。従って、特許権の範囲は、この詳細な説明によってではなく、むしろ本明細書に基づく出願に関して発行されるいずれかの請求項によって制限されることが意図されている。従って、実施形態の開示は、以下の特許請求の範囲に記載される特許権の範囲の例示を意図するものであり、限定するものではない。

Claims (20)

  1. 非一時的なコンピュータ可読記憶媒体であって、コンピューティングデバイスによって実行されるとき、前記コンピューティングデバイスに、
    データ送信のための複数の利用可能なネットワーク経路を識別するステップと、
    前記複数の利用可能なネットワーク経路のそれぞれに対する1つ以上のパフォーマンスメトリックを検出するステップと、
    検出された前記1つ以上のパフォーマンスメトリックに従って、データ送信に利用するために、前記複数の利用可能なネットワーク経路から、利用可能なネットワーク経路を選択するステップと、
    選択された前記利用可能なネットワーク経路を介してデータを送信するステップと
    を含む動作を実行させる命令を格納する、非一時的なコンピュータ可読記憶媒体。
  2. 前記利用可能なネットワーク経路を選択するステップは、
    検出された前記1つ以上のパフォーマンスメトリックを利用して、前記利用可能なネットワーク経路のそれぞれに対するスコアを決定するステップと、
    決定された前記スコアに従って、前記複数の利用可能な経路のランキングを行うステップと、
    前記ランキングを利用して、前記利用可能なネットワーク経路を選択するステップと、
    を含む、
    請求項1に記載の非一時的なコンピュータ可読記憶媒体。
  3. 前記1つ又はパフォーマンスメトリックは、レイテンシを含み、前記利用可能なネットワーク経路を選択するステップは、
    選択された前記ネットワーク経路に対する前記レイテンシが、他の1つ以上の利用可能な経路のレイテンシより小さいと決定するステップと、
    前記決定に基づいて、前記利用可能なネットワーク経路を選択するステップと、
    をさらに含む、
    請求項1に記載の非一時的なコンピュータ可読記憶媒体。
  4. 前記1つ又はパフォーマンスメトリックは、バンド幅を含み、前記動作は、
    前記1つ以上の利用可能なネットワーク経路のセットの前記バンド幅が、バンド幅閾値より大きいと決定することに応答して、前記1つ以上の利用可能なネットワーク経路のそれぞれを選択するステップと、
    前記利用可能なネットワーク経路のそれぞれを介して前記データを送信するステップと、
    をさらに含む、
    請求項1に記載の非一時的なコンピュータ可読記憶媒体。
  5. 前記動作は、
    前記複数の利用可能なネットワーク経路のそれぞれに対する前記1つ以上のパフォーマンスメトリックを再検出するステップと、
    再検出された前記1つ以上のパフォーマンスメトリックに従って、データ送信に利用するために、前記複数の利用可能なネットワーク経路から、利用可能なネットワーク経路を再選択するステップと、
    再選択された前記利用可能なネットワーク経路を介してデータを送信するステップと、
    をさらに含む、
    請求項1に記載の非一時的なコンピュータ可読記憶媒体。
  6. 前記複数の利用可能なネットワーク経路は、サーバを通る経路、セルタワーを通る経路、又はローカルエリアネットワーク(LAN)を通る経路のうちの1つ以上を含む、
    請求項1に記載の非一時的なコンピュータ可読記憶媒体。
  7. 前記1つ以上のネットワーク経路は、第1のクライアントと第2のクライアントとの間でデータを送信するためのものであり、前記データを送信するステップは、前記第1のクライアントによって、選択された前記利用可能なネットワーク経路を介して、前記第2のクライアントへと前記データを送信するステップを含む、
    請求項1に記載の非一時的なコンピュータ可読記憶媒体。
  8. 前記動作は、
    前記第1のクライアントによって、ネットワークコーディネーションサービスから、共有ネットワーク環境に関連付けられた1つ以上のネットワークアドレスを要求するステップであって、前記共有ネットワーク環境は、地域内のクライアントデバイスに対するネットワークアドレスを含む、ステップと、
    前記要求に応答して、ネットワークコーディネーションサービスから、前記第2のクライアントのネットワークアドレスを受信するステップと、
    前記第2のクライアントの前記ネットワークアドレスを利用して、選択された前記利用可能なネットワーク経路を介してデータを送信するステップと、
    をさらに含む、
    請求項7に記載の非一時的なコンピュータ可読記憶媒体。
  9. 前記第1のクライアントと前記第2のクライアントとは、パブリックネットワークアドレスに関連付けられており、前記データを送信するステップは、公開鍵暗号を介して前記データを暗号的に保護するステップを含む、
    請求項7に記載の非一時的なコンピュータ可読記憶媒体。
  10. 前記共有ネットワーク環境は、インタラクティブアプリケーションに関連付けられており、前記インタラクティブアプリケーションは、前記地域内の地理的位置に関連付けられた位置情報データに対応する、
    請求項7に記載の非一時的なコンピュータ可読記憶媒体。
  11. セルタワーは、前記位置情報データのローカル状態を管理し、前記動作は、
    前記コンピューティングデバイスのユーザによるインタラクションを受信するステップであって、前記インタラクションは、前記位置情報データに関するアクションに向けられており、送信された前記データは、前記アクションを記述する、ステップと、
    前記アクションを記述する前記データを送信した後、前記セルタワーから、前記位置情報データのローカル状態を記述する情報を受信するステップであって、前記情報は、前記アクションを反映するように前記ローカル状態が前記セルタワーによって成功裏に更新されたか否かを示す、ステップと、
    をさらに含む、
    請求項1に記載の非一時的なコンピュータ可読記憶媒体。
  12. 前記データを送信するステップは、
    検出された前記1つ以上のパフォーマンスメトリックに従って、前記複数の利用可能なネットワーク経路から、追加的な利用可能なネットワーク経路を選択するステップと、
    前記追加的な利用可能なネットワーク経路を介して、前記データの追加的なコピーを送信するステップと、
    をさらに含む、
    請求項1に記載の非一時的なコンピュータ可読記憶媒体。
  13. セルタワーによって、前記セルタワー周辺の地域内のクライアントに対し、ネットワーク経路を介してピアツーピア通信を提供するステップと、
    ネットワーク経路のインジケーションにおいて、前記地域内の第1のクライアントからデータを受信するステップであって、前記第1のクライアントは、複数の利用可能なネットワーク経路のそれぞれに対する1つ以上のパフォーマンスメトリックに基づいて、前記ネットワーク経路を選択した、ステップと、
    前記セルタワーによって、選択された前記ネットワーク経路に従って、前記データを前記地域内の第2のクライアントに送信するステップと、
    を含む、コンピュータ実装方法。
  14. インタラクティブアプリケーションのための位置情報データのローカル状態を前記セルタワーで管理するステップであって、前記位置情報データは、前記セルタワー周辺の前記地域内の地理的位置に関連付けられている、ステップと、
    前記第1のクライアントから、前記位置情報データに関連付けられたアクションを記述する情報を受信するステップと、
    前記アクションを、前記位置情報データの前記ローカル状態と比較するステップと、
    前記比較に基づいて前記アクションが前記ローカル状態と矛盾しないと決定することに応答して、前記アクションを反映するように前記ローカル状態を更新するステップと、
    選択された前記ネットワーク経路に従って、前記位置情報データの更新された前記ローカル状態を記述する情報を前記第2のクライアントに送信するステップと、
    をさらに含む、
    請求項13に記載のコンピュータ実装方法。
  15. 前記第1のクライアントから、前記位置情報データに関連付けられた追加的なアクションを記述する情報を受信するステップと、
    前記追加的なアクションを前記位置情報データの前記ローカル状態と比較するステップと、
    前記比較に基づいて、前記追加的なアクションが前記位置情報データの前記ローカル状態と矛盾すると決定することに応答して、前記追加的なアクションを拒否するステップと、
    前記位置情報データの矛盾する前記ローカル状態を記述する情報を前記第1のクライアントに送信するステップと、
    をさらに含む、
    請求項14に記載の方法。
  16. 前記セルタワーによって、前記インタラクティブアプリケーションに関連付けられたサーバから、前記サーバによって管理される位置情報データのマスタ状態を記述する情報を受信するステップと、
    前記位置情報データの前記ローカル状態を前記マスタ状態と同期するステップと、
    をさらに含む、
    請求項14に記載の方法。
  17. 前記マスタ状態は、前記地域と、追加的なセルタワーの周辺の追加的な地域との間の重複領域内での第3のクライアントデバイスによる追加的なアクションを反映し、前記同期するステップは、
    前記セルタワーによって、前記追加的なアクションが前記アクションと矛盾すると決定するステップと、
    前記追加的なアクションが前記アクションと矛盾すると決定することに応答して、前記アクションに代えて前記追加的なアクションを反映させるように、前記ローカル状態を更新するステップと、
    前記位置情報データの更新された前記ローカル状態を記述する情報を前記第1のクライアントに送信するステップと、
    をさらに含む、
    請求項16に記載の方法。
  18. 前記第1のクライアントは、
    検出された前記1つ以上のパフォーマンスメトリックを利用して、前記利用可能なネットワーク経路のそれぞれに対するスコアを決定することと、
    決定された前記スコアに従って、前記複数の利用可能な経路のランキングを行うことと、
    前記ランキングを利用して、前記利用可能なネットワーク経路を選択することと、
    によって、前記ネットワーク経路を選択した、
    請求項13に記載の方法。
  19. 前記1つ以上のパフォーマンスメトリックは、レイテンシ、ジッタ、データロス、接続安定性、又はバンド幅のうちの1つ以上を含む、
    請求項12に記載の方法。
  20. サーバと、セルタワーと、複数のネットワーク経路を介して第2のクライアントデバイスに接続される第1のクライアントデバイスとを含む、システムであって、
    前記複数のネットワーク経路は、前記サーバを通る第1のネットワーク経路と、前記セルタワーを通る第2のネットワーク経路と、ローカルエリアネットワークを通る第3のネットワーク経路とを含み、
    前記第1のクライアントデバイスは、
    前記複数のネットワーク経路のそれぞれに対する1つ以上のパフォーマンスメトリックを検出し、
    検出された前記1つ以上のパフォーマンスメトリックに従って、データ送信に利用するために、前記複数のネットワーク経路から、ネットワーク経路を選択し、
    選択された前記利用可能なネットワーク経路を介して、データを前記第2のクライアントデバイスに送信する
    ように構成される、システム。
JP2022538070A 2019-12-20 2020-12-18 データ送信経路選択のためのデータヒエラルキープロトコル Active JP7485768B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962951926P 2019-12-20 2019-12-20
US62/951,926 2019-12-20
PCT/IB2020/062243 WO2021124291A1 (en) 2019-12-20 2020-12-18 Data hierarchy protocol for data transmission pathway selection

Publications (2)

Publication Number Publication Date
JP2023507770A true JP2023507770A (ja) 2023-02-27
JP7485768B2 JP7485768B2 (ja) 2024-05-16

Family

ID=

Also Published As

Publication number Publication date
CN115136559A (zh) 2022-09-30
US11757761B2 (en) 2023-09-12
WO2021124291A1 (en) 2021-06-24
TW202131662A (zh) 2021-08-16
US11489763B2 (en) 2022-11-01
EP4078906A1 (en) 2022-10-26
CA3165313A1 (en) 2021-06-24
US20230014576A1 (en) 2023-01-19
US20210194794A1 (en) 2021-06-24
KR20220115618A (ko) 2022-08-17
TWI756998B (zh) 2022-03-01
AU2020409015A1 (en) 2022-08-25
EP4078906A4 (en) 2023-06-21

Similar Documents

Publication Publication Date Title
TWI756998B (zh) 用於資料傳輸路徑選擇之資料階層協定
KR102276899B1 (ko) 낮은 레이턴시 데이터그램-응답성 컴퓨터 네트워크 프로토콜
KR102577903B1 (ko) 증강 현실 모바일 에지 컴퓨팅
JP7174139B2 (ja) 深度ヒントを使用した深度推定モデルの自己教師ありトレーニング
JP7485768B2 (ja) データ送信経路選択のためのデータヒエラルキープロトコル

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220822

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240125

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240402