JP7458485B2 - Sharded storage for geolocation data with predictable query response times - Google Patents

Sharded storage for geolocation data with predictable query response times Download PDF

Info

Publication number
JP7458485B2
JP7458485B2 JP2022538067A JP2022538067A JP7458485B2 JP 7458485 B2 JP7458485 B2 JP 7458485B2 JP 2022538067 A JP2022538067 A JP 2022538067A JP 2022538067 A JP2022538067 A JP 2022538067A JP 7458485 B2 JP7458485 B2 JP 7458485B2
Authority
JP
Japan
Prior art keywords
database
shard
game
shards
geographic region
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.)
Active
Application number
JP2022538067A
Other languages
Japanese (ja)
Other versions
JP2023507499A (en
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 JP2023507499A publication Critical patent/JP2023507499A/en
Priority to JP2024042326A priority Critical patent/JP2024088654A/en
Application granted granted Critical
Publication of JP7458485B2 publication Critical patent/JP7458485B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • 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/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/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • 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/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/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
    • 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/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • 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/90Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
    • A63F13/92Video game devices specially adapted to be hand-held while playing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/29Geographical information databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Environmental & Geological Engineering (AREA)
  • Remote Sensing (AREA)
  • Operations Research (AREA)
  • Computing Systems (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Description

本開示は、一般に、データストレージに関し、特に、予測可能なクエリ応答時間を有する任意の数のジオロケーションアイテム(geolocated item)のシャードストレージに関する。 This disclosure relates generally to data storage, and more particularly to sharded storage of any number of geolocated items with predictable query response times.

現実世界の少なくとも一部とパラレルである共有仮想世界を提供するパラレルリアリティゲームは、プレイヤーのコミュニティを魅了することが可能であるいろいろなインタラクションをホストすることがある。現実世界の少なくとも一部とパラレルである地形を有する仮想世界を提供することは、プレイヤーに、現実世界を進むことによって仮想世界を進むことを可能にする。仮想環境における仮想要素を、現実世界における物体、ロケーション、および活動とリンクさせることは、プレイヤーがふつうは無視するだろう現実世界における特徴に移動するように、および気づくようにプレイヤーに勧めることが可能である。現実世界において対をなす現実世界における物体またはロケーションと同一の仮想世界のロケーションにおいて仮想要素を提供することは、仮想要素が現実世界における隠れた一部であるという印象を増大させるだろう。 Parallel reality games that provide a shared virtual world that is parallel to at least a portion of the real world may host a variety of interactions that can engage a community of players. Providing a virtual world with terrain that is parallel to at least a portion of the real world allows a player to navigate the virtual world by navigating the real world. Linking virtual elements in a virtual environment with objects, locations, and activities in the real world can encourage players to move toward and notice features in the real world that they would normally ignore. It is. Providing a virtual element in the same virtual world location as its real world counterpart will increase the impression that the virtual element is a hidden part of the real world.

パラレルリアリティゲームをプレイするとき、プレイヤーのクライアントデバイスは、通常、プレイヤーの近くの仮想要素に対応するデータを受信する。仮想要素の密度が大きくなり、利用可能な情報の豊かさが増大すると、ゲームデータベースにおけるデータ量は増大する。従来のデータベースストレージを用いると、今述べたことは、クエリ応答時間における増加に帰着する。しかしながら、パラレルリアリティゲームが、プレイヤーと仮想世界との間のリアルタイムインタラクションに向けられることがあると、許容し得る応答時間に上限がある。それゆえ、地理的なリージョンに対して格納されるデータが増大すると、予測可能なクエリ応答時間を提供する効率的なストレージアプローチに対する要求がある。 When playing a parallel reality game, a player's client device typically receives data corresponding to virtual elements in the player's vicinity. As the density of virtual elements increases and the richness of available information increases, the amount of data in the game database grows. With traditional database storage, what has just been stated results in an increase in query response times. However, as parallel reality games may be oriented towards real-time interaction between the player and the virtual world, there is an upper limit to acceptable response times. Therefore, as the data stored for a geographic region grows, there is a demand for efficient storage approaches that provide predictable query response times.

上記および他の問題は、任意の数のアイテムに、シャードデータベース(sharded database)にわたって、予測可能なクエリ応答時間を提供する地理的なリージョンにおいてインデックスをつけられることができるようにする(例えば、地理的なインデックスをつけるフレームワーク、たとえばS2ライブラリなどを用いて)ためのシステムおよび方法によって取り組まれることがある。種々の態様において、地理的なリージョンにインデックスをつけられたアイテムは、単一のシャードに格納され、追加のアイテムは、望ましくないクエリ応答時間を示すオーバーフロー条件が満たされない限り(例えば、クエリ応答時間が、望ましいしきい値未満のままである)、そのシャードに追加される。オーバーフロー条件が満たされるならば、システムは、予測可能なクエリ応答時間を維持するために、地理的なリージョンにインデックスをつけられたアイテムのストレージを1つまたは複数のシャードに拡張する。システムは、1つまたは複数の関連シャードに(例えば、並列に)問い合わせるのに用いられることが可能である、地理的なリージョンに対応するアイテムを格納するのに用いられているシャードの総数を表すシャードカウントを維持することがある。システムは、シャードデータベースのデータベースノードにわたって、シャードを均等に分散させるために、決定論的なハッシングを適用することがある(たとえば仮想または物理データベースサーバーなど)。データベースのクライアントは、地理的なリージョンに対するアイテムが格納されるあらゆるデータベースノードのリストを格納することよりもむしろ、地理的なリージョンに対応する各シャードがシャードカウントに基づいて格納されるデータベースノードを決定することがある。今述べたことは、例えば、単一のシャードまたは複数のシャードを並行して問い合わせるとき、予測可能な応答時間を提供している間、広い地形上領域に対して多くのアイテムの格納を可能にする。 These and other issues allow any number of items to be indexed across a sharded database and in a geographic region that provides predictable query response times (e.g. systems and methods for indexing (using a standard indexing framework, such as the S2 library). In various aspects, items indexed by a geographic region are stored in a single shard, and additional items are not added unless an overflow condition is met that indicates an undesirable query response time (e.g., if the query response time remains below the desired threshold), it is added to that shard. If the overflow condition is met, the system expands the storage of indexed items into the geographic region to one or more shards in order to maintain predictable query response times. The system represents the total number of shards used to store items corresponding to a geographic region, which can be used to query one or more related shards (e.g., in parallel). May maintain shard count. The system may apply deterministic hashing to evenly distribute shards across database nodes of a sharded database (e.g., virtual or physical database servers) . Rather than storing a list of every database node on which items are stored for a geographic region, a database client determines which database node each shard corresponding to a geographic region is stored on based on the shard count. There are things to do. What we have just described allows the storage of many items over large terrain areas while providing predictable response times when interrogating a single shard or multiple shards in parallel, for example. do.

一態様では、システムは、ジオロケーションを示す要求を受信する。ジオロケーションに基づいて、システムは、地理的なリージョンを識別する。地理的なリージョンに基づいて、システムは、データベースの複数のデータベースシャード(database shard)のうちのデータベースシャードを識別し、複数のデータベースシャードが、地理的なリージョンに対応する。システムは、地理的なリージョンに対応するジオロケーションデータ(geolocated data)に対して、識別されたデータベースシャードに問い合わせ、データベースシャードのクエリが、予測可能な応答時間を有する。問い合わされたジオロケーションデータに基づいて、システムは、クエリ結果を処理する。システムは、要求に応答して、クエリ結果を戻す。 In one aspect, a system receives a request indicating a geolocation. Based on geolocation, the system identifies geographic regions. Based on the geographic region, the system identifies a database shard among multiple database shards of the database, where the multiple database shards correspond to the geographic region. The system queries the identified database shards for geolocated data corresponding to the geographic region, and queries of the database shards have predictable response times. Based on the queried geolocation data, the system processes the query results. The system returns query results in response to the request.

一態様に係る任意の数のジオロケーションアイテムに対するゲームデータが予測可能なクエリ応答時間により格納されることがあるネットワーク化されたコンピューティング環境のブロック図である。FIG. 2 is a block diagram of a networked computing environment in which game data for any number of geolocation items may be stored with predictable query response times, according to one aspect. 一態様に係る現実世界とパラレルである地形を有する仮想世界の表現を示す図である。FIG. 3 is a diagram illustrating a representation of a virtual world having terrain that is parallel to the real world according to one aspect. 一態様に係るパラレルリアリティゲームの例示的なゲームインターフェースを示す図である。FIG. 1 illustrates an exemplary game interface for a parallel reality game according to one aspect. 一態様に係る図1に示されるゲームデータベースのブロック図である。FIG. 2 is a block diagram of the game database shown in FIG. 1 according to one aspect. 一態様に係る予測可能なクエリ時間を有する任意の数のジオロケーションアイテムにゲームデータを提供する方法のフローチャートである。3 is a flowchart of a method for providing game data to a number of geolocation items with predictable query times according to one aspect. 一態様に係る図1のネットワーク化されたコンピューティング環境における使用に適した例示的なコンピューターを例示するブロック図である。FIG. 2 is a block diagram illustrating an example computer suitable for use in the networked computing environment of FIG. 1 in accordance with one aspect.

ゲームサーバーは、実世界の地形の少なくとも一部にパラレルである地形を有する仮想世界を含むプレイヤーゲーミング領域を有するパラレルリアリティゲームをホストすることが可能である。プレイヤーは、現実世界において地理座標の範囲を進むことによって、仮想世界において仮想空間を定義する座標の範囲を進むことが可能である。特に、プレイヤーの位置は、例として、モバイルコンピューティングデバイスであり得る、プレイヤーのクライアントデバイスに関連付けられた測位システム(例えば、GPSシステム)を用いて、監視されるまたはトラッキングされることが可能である。プレイヤーの位置情報は、ネットワークを介してパラレルリアリティゲームをホストするゲームサーバーに提供されることが可能であり、ゲームによって用いられて、仮想世界におけるプレイヤーのロケーションを更新することが可能である。結果として、プレイヤーが、クライアントデバイスを有して、現実世界における座標の範囲においてあちこちと連続して移動する時に、ゲームサーバーは、プレイヤーがパラレルな仮想世界の座標の範囲においてあちこちと連続して移動するように、更新することがある。 The game server can host a parallel reality game that has a player gaming area that includes a virtual world that has terrain that is parallel to at least a portion of the real world terrain. By traveling through a range of geographic coordinates in the real world, a player can travel through a range of coordinates that define virtual space in the virtual world. In particular, the player's location may be monitored or tracked using a positioning system (e.g., a GPS system) associated with the player's client device, which may be, by way of example, a mobile computing device. . The player's location information can be provided over the network to the game server hosting the parallel reality game and can be used by the game to update the player's location in the virtual world. As a result, when a player, with a client device, moves sequentially back and forth in a range of coordinates in the real world, the game server allows the player to move sequentially back and forth in a range of coordinates in a parallel virtual world. It may be updated as required.

仮想世界は、実世界のポイントオブインタレストとリンクされる1つまたは複数の仮想要素を含むことが可能である。例として、仮想世界は、たとえば、現実世界における、ランドマーク、博物館、美術品、図書館、または関心のある他の領域など、ポイントオブインタレストに関連付けられた種々の仮想要素を含むことが可能である。実世界のポイントオブインタレストとリンクされる仮想要素は、仮想世界が、プレイヤーがパラレルリアリティゲームをプレイすることによってインタラクションすることが可能である、現実世界の隠れた次元であるという錯覚を与えることが可能である。例として、プレイヤーが現実世界における地理座標を進む時に、プレイヤーは、パラレルな仮想世界に提供される仮想要素を発見し、インタラクションすることが可能である。種々のゲームの目的は、パラレルリアリティゲームの一部として、プレイヤーに、今述べた仮想要素とのインタラクションするように勧めることが可能である。いくつかの態様では、ゲームサーバーは、実世界のポイントオブインタレストの周りにパラレルリアリティゲームにおける仮想イベントを統制することがある。 A virtual world may include one or more virtual elements that are linked to points of interest in the real world. By way of example, a virtual world may include various virtual elements associated with points of interest, such as, for example, landmarks, museums, artifacts, libraries, or other areas of interest in the real world. . Virtual elements that are linked to points of interest in the real world can give the illusion that the virtual world is a hidden dimension of the real world that players can interact with by playing parallel reality games. It is possible. As an example, as a player navigates through geographic coordinates in the real world, the player can discover and interact with virtual elements provided in a parallel virtual world. Various game objectives may invite players to interact with the virtual elements just described as part of a parallel reality game. In some aspects, a game server may orchestrate virtual events in a parallel reality game around real-world points of interest.

仮想世界は、現実世界の連続した地理的なリージョンに対応する部分(例えば、セル)に区分されることがある。種々の態様において、仮想世界の部分は、地理的なインデックスをつけるフレームワークに従って、定義される。例として、仮想世界の一部は、地球、3次元物体を、粒度の異なるレベルにて2次元セルのセットに区分するセルの階層を定義するS2ライブラリに従って定義されることがある。他の場合では、異なる、地理的なインデックスをつけるフレームワークが、用いられることがある。仮想世界の部分は、たとえば、上に説明された仮想要素に関連付けられた情報など、ストレージに対して、対応する地理的なリージョンに関連付けられた種々のジオロケーションデータにインデックスをつけるのに用いられることが可能である。時間をかけて、新しい仮想要素が、仮想世界に追加されることがあり、仮想要素に関連付けられたデータ量が、増加することがある。例えば、仮想要素は、現実世界におけるポイントオブインタレストに対応することがあり、新しい仮想要素は、システムが新しいポイントオブインタレストを学習する時に(例えば、ポイントオブインタレストの所有者または管理者による提出のために、クラウドソーシングを通じて、またはどんな他適切な技法でも用いてなど)、加えられることがある。同様に、仮想要素に関連付けられた新しい情報(例えば、新しい写真、ビデオ、歴史の情報など)が取得される時、仮想要素に結合して格納されることがある。ゆえに、仮想世界の一部に対応するデータ量は、時間をかけて増えることがある。 The virtual world may be partitioned into portions (eg, cells) that correspond to contiguous geographic regions of the real world. In various aspects, portions of the virtual world are defined according to a geographic indexing framework. As an example, a portion of the virtual world may be defined according to the S2 library, which defines a hierarchy of cells that partitions the earth, a three-dimensional object, into a set of two-dimensional cells at different levels of granularity. In other cases, different geographic indexing frameworks may be used. The virtual world portion is used to index various geolocation data associated with the corresponding geographic region for storage, such as, for example, information associated with the virtual elements described above. Is possible. Over time, new virtual elements may be added to the virtual world, and the amount of data associated with the virtual elements may increase. For example, a virtual element may correspond to a point of interest in the real world, and a new virtual element may be created when the system learns a new point of interest (e.g., due to a submission by the point of interest's owner or administrator). (such as through crowdsourcing or using any other suitable technique). Similarly, when new information associated with a virtual element (eg, new photos, videos, historical information, etc.) is obtained, it may be stored in conjunction with the virtual element. Therefore, the amount of data corresponding to a portion of the virtual world may increase over time.

従来のアプローチを用いて、データ量が増える時に、さらに、そのデータを識別するためのクエリ応答時間も増大する。しかしながら、パラレルリアリティゲームの首尾一貫したパフォーマンスを提供するために、仮想世界の与えられた部分に対して格納されるデータ量に関係なく、予測可能なクエリ応答時間を提供することが望ましい。以下により詳細に説明されるように、種々の態様は、望ましくないクエリ応答時間を示すオーバーフロー条件に従って、与えられたシャードに格納されるデータ量を制限することによって、予測可能なクエリ応答時間を提供する。各部分に対するシャードカウント値は、格納されることがあり、仮想世界の与えられた部分に対するデータを含む単数のシャードまたは複数のシャードを識別するのに用いられることが可能である。決定論的なハッシングのアプローチが用いられて、仮想世界の与えられた部分に対するデータを含む単数のシャードまたは複数のシャードを識別し、シャードは、関連データに対して(例えば、並列に)問い合わせられる。ゆえに、クエリ応答時間は、仮想世界の与えられた部分に対して格納されたデータ量にかかわらず、いずれか1つのシャードのデータ量がしきい値を越えないので、予測可能である。 Using traditional approaches, as the amount of data increases, the query response time to identify that data also increases. However, to provide consistent performance of parallel reality games, it is desirable to provide predictable query response times regardless of the amount of data stored for a given portion of the virtual world. As described in more detail below, various aspects provide predictable query response times by limiting the amount of data stored on a given shard, subject to overflow conditions that indicate undesirable query response times. do. A shard count value for each portion may be stored and used to identify the shard or shards that contain data for a given portion of the virtual world. A deterministic hashing approach is used to identify a shard or shards containing data for a given portion of the virtual world, and the shards are queried (e.g., in parallel) for related data. . Therefore, the query response time is predictable because the amount of data in any one shard does not exceed the threshold, regardless of the amount of data stored for a given part of the virtual world.

説明される態様が、パラレルリアリティゲームに対して、ジオロケーションデータをアクセスすることに関係するが、当業者であれば、同一のまたは同様の技法が、他の目的に対して、ジオロケーションデータにより用いられることがあることを認識するだろう。例えば、地元の名所、レストラン、美術館、他のランドマークについてのジオロケーション情報(geolocated information)を有する旅行者ガイドアプリケーションは、予測可能なクエリ応答時間を提供する同様のやり方においてシャーディングされることがある。 Although the described aspects relate to accessing geolocated data for parallel reality games, one skilled in the art will recognize that the same or similar techniques may be used with geolocated data for other purposes. For example, a travel guide application with geolocated information about local attractions, restaurants, museums, and other landmarks may be sharded in a similar manner to provide predictable query response times.

例示的なロケーションベースのパラレルリアリティゲーミングシステム
パラレルリアリティゲームは、実世界におけるプレイヤーの移動およそ活動が仮想世界における活動に影響を与え、また与えられるような、実世界の地理の少なくとも一部にパラレルである仮想世界の地理を有するロケーションベースゲームである。当業者であれば、本明細書に提供される開示を用いて、説明される主題が、ユーザーのロケーションを照合することが望ましい他の状況において適用可能であることを理解するだろう。さらに、コンピュータベースシステムに固有の柔軟性が、システムの2つのコンポーネント間および3つ以上のコンポーネント間のタスクおよび機能性のバラエティに富む可能な構成、組み合わせ、および分割を考慮することを認めるだろう。例として、本開示の様相に従うシステムおよび方法は、単一のコンピューティングデバイスを用いて、または複数のコンピューティングデバイスにわたって(例えば、コンピューターネットワークに接続されて)実装されることが可能である。
Exemplary Location-Based Parallel Reality Gaming System A parallel reality game is a location-based game having a virtual world geography that is parallel to at least a portion of the real world geography, such that player movement and activity in the real world affects and is affected by activity in the virtual world. With the disclosure provided herein, one of ordinary skill in the art will appreciate that the subject matter described is applicable in other situations in which it is desirable to match a user's location. Moreover, one will appreciate that the flexibility inherent in computer-based systems allows for a variety of possible configurations, combinations, and divisions of tasks and functionality between two and three or more components of the system. By way of example, systems and methods according to aspects of the present disclosure can be implemented using a single computing device or across multiple computing devices (e.g., connected to a computer network).

図1は、プレイヤーの実世界のロケーションが、パラレルリアリティゲーム内の活動に基づいて、照合されることがあるネットワークコンピューティング環境100の一態様を示す図である。ネットワークコンピューティング環境100は、現実世界とパラレルである地理を有する仮想世界におけるプレイヤーのインタラクションに対して提供する。特に、現実世界における地理的な領域は、仮想世界において対応する領域に直接的にリンクされるまたはマッピングされることが可能である。プレイヤーは、現実世界における種々の地理的なロケーションに対して移動することによって、仮想世界において、あちこちと移動することが可能である。例として、現実世界におけるプレイヤーの位置は、トラッキングされ、仮想世界におけるプレイヤーの位置を更新するのに用いられることが可能である。通常、現実世界におけるプレイヤーの位置は、プレイヤーが仮想世界とインタラクションしているクライアントデバイス120のロケーションを見つけ、同一の(またはほぼ同一の)ロケーションにプレイヤーがいると仮定することによって、決定される。例えば、種々の態様において、プレイヤーは、現実世界におけるプレイヤーのロケーションが、仮想世界における仮想要素の仮想ロケーションに対応する実世界のロケーションのしきい値距離(例えば、10メートル、20メートルなど)以内にあるならば、仮想要素とインタラクションすることがある。便利なように、種々の態様は、「プレイヤーのロケーション」に関して説明されるが、当業者であれば、上記の参照が、プレイヤーのクライアントデバイス120のロケーションを引用することがあることを理解するだろう。 FIG. 1 is a diagram illustrating one aspect of a network computing environment 100 in which a player's real-world location may be verified based on activity within a parallel reality game. Network computing environment 100 provides for player interaction in a virtual world whose geography is parallel to the real world. In particular, geographic regions in the real world can be directly linked or mapped to corresponding regions in the virtual world. A player can move around in the virtual world by moving relative to various geographic locations in the real world. As an example, a player's location in the real world can be tracked and used to update the player's location in the virtual world. Typically, the player's location in the real world is determined by finding the location of the client device 120 with which the player is interacting with the virtual world and assuming that the player is at the same (or nearly the same) location. For example, in various aspects, the player determines that the player's location in the real world is within a threshold distance (e.g., 10 meters, 20 meters, etc.) of the corresponding real world location to the virtual location of the virtual element in the virtual world. If so, it may interact with virtual elements. For convenience, various aspects are described in terms of a "player's location," but those skilled in the art will appreciate that the above references may refer to the location of the player's client device 120. Dew.

さて、参照は、一態様に係るパラレルリアリティゲームのプレイヤーに対してゲームボードとして作動することが可能である、現実世界200とパラレルである仮想世界210の概念図を描く図2になされる。例示されている仮想世界210は、現実世界200の地形とパラレルである地形を含むことが可能である。特に、現実世界200における地理的な領域または空間を定義する座標の範囲は、仮想世界210における仮想空間を定義する座標の対応する範囲にマッピングされる。現実世界200における座標の範囲は、町、街区、都市、キャンパス、現場、国、大陸、地球全体、または他の地理的な領域と関連付けられることが可能である。地理座標の範囲の中の各地理座標は、仮想世界の中の仮想空間における対応する座標にマッピングされる。 Reference is now made to FIG. 2, which depicts a conceptual diagram of a virtual world 210 parallel to the real world 200, which can act as a game board for players of a parallel reality game according to one aspect. The illustrated virtual world 210 may include terrain that is parallel to the terrain of the real world 200. In particular, ranges of coordinates that define geographic regions or spaces in the real world 200 are mapped to corresponding ranges of coordinates that define virtual spaces in the virtual world 210. A range of coordinates in the real world 200 can be associated with a town, city block, city, campus, site, country, continent, entire globe, or other geographic area. Each geographic coordinate within the range of geographic coordinates is mapped to a corresponding coordinate in virtual space within the virtual world.

仮想世界210におけるプレイヤーの位置は、現実世界200におけるプレイヤーの位置に対応する。例として、現実世界200において位置212に位置されるプレイヤーAは、仮想世界210において対応する位置222を有する。同様に、現実世界において位置214に位置されるプレイヤーBは、仮想世界において対応する位置224を有する。プレイヤーが現実世界における地理座標の範囲においてあちこちと動く時、さらに、プレイヤーは、仮想世界210における仮想空間を定義する座標の範囲においてあちこちと動く。特に、プレイヤーが持って行くモバイルコンピューティングデバイスに関連付けられた測位システム(例えば、GPSシステム)が用いられて、プレイヤーが現実世界における地理座標の範囲を進む時、プレイヤーの位置をトラッキングすることが可能である。現実世界200におけるプレイヤーの位置に関連付けられたデータは、仮想世界210における仮想空間を定義する座標の対応する範囲においてプレイヤーの位置を更新するのに用いられる。このようにして、プレイヤーは、現実世界200における特定の離散的なロケーションにチェックインすることなく、または現実世界200における特定の離散的なロケーションにてロケーション情報を周期的に更新することなく、現実世界200における地理座標の対応する範囲の間を単に移動することによって、仮想世界210における仮想空間を定義する座標の範囲において連続的なトラッキングを操縦することが可能である。 The player's position in the virtual world 210 corresponds to the player's position in the real world 200. As an example, player A located at location 2 12 in real world 200 has a corresponding location 222 in virtual world 210 . Similarly, player B, located at location 214 in the real world, has a corresponding location 224 in the virtual world. As the player moves around in a range of geographic coordinates in the real world, the player also moves around in a range of coordinates that define virtual space in the virtual world 210. In particular, a positioning system (e.g., a GPS system) associated with a mobile computing device that the player carries may be used to track the player's location as the player moves through a range of geographic coordinates in the real world. It is. Data associated with the player's position in the real world 200 is used to update the player's position in a corresponding range of coordinates that define virtual space in the virtual world 210. In this way, the player can access the real world without checking in to specific discrete locations in the real world 200 or periodically updating location information at specific discrete locations in the real world 200. It is possible to maneuver continuous tracking in the range of coordinates that define virtual space in virtual world 210 by simply moving between corresponding ranges of geographic coordinates in world 200.

ロケーションベースゲームは、仮想世界において種々の仮想ロケーションに散在する種々の仮想要素および/または仮想物体に移動することをおよび/またはこれらとインタラクションすることを、プレイヤーに要求する複数のゲームの目的を含むことが可能である。プレイヤーは、今述べた仮想的なロケーションに、現実世界において仮想要素または仮想物体の対応するロケーションに移動することによって、移動することが可能である。例として、測位システムは、プレイヤーが連続して現実世界を進む時、さらにプレイヤーが連続してパラレルな仮想世界も進むように、プレイヤーの位置を連続してトラッキングすることが可能である。次に、プレイヤーは、特定のロケーションにて種々の仮想要素および/または仮想物体とインタラクションして、1つまたは複数のゲームの目的を達成する、または成し遂げることが可能である。 A location-based game includes multiple game objectives that require the player to move to and/or interact with various virtual elements and/or virtual objects dispersed in various virtual locations in a virtual world. Is possible. The player can move to the virtual location just mentioned by moving to the corresponding location of the virtual element or virtual object in the real world. As an example, the positioning system may continuously track the player's position as the player sequentially moves through the real world, and also as the player sequentially moves through a parallel virtual world. The player can then interact with various virtual elements and/or virtual objects at a particular location to accomplish or complete one or more game objectives.

例えば、ゲームの目的は、プレイヤーに、仮想世界210における種々の仮想ロケーションにて仮想要素230を捕らえる、または所有権を主張することを要求することが可能である。今述べた仮想要素230は、現実世界200におけるランドマーク、地理的なロケーション、または物体240にリンクさせることが可能である。実世界のランドマークまたは物体240は、芸術作品、モニュメント、建物、企業、図書館、博物館、または他の適切な実世界のランドマークもしくは物体であることが可能である。今述べた仮想要素230を捕らえるために、プレイヤーは、現実世界において、仮想要素230にリンクされたランドマークまたは地理的なロケーション240に移動しなければならず、仮想世界210において、仮想要素230との必要などんなインタラクションでも行わなければならない。例えば、図2のプレイヤーAは、特定のランドマーク240にリンクされた仮想要素230とインタラクションするために、またはそれらを捕らえるために、現実世界200において、ランドマーク240に移動しなければならないことがある。仮想要素230とのインタラクションは、たとえば、仮想要素230に関連付けられたランドマークまたは物体240について、写真を撮る、および/または他の情報を照合する、取得する、または捕らえるなど、実世界における活動を必要とすることが可能である。いくつかの態様では、仮想要素230とのインタラクションは、現実世界200におけるプレイヤーのロケーションが、仮想世界210におけるプレイヤーのロケーションとマッチすることの照合をさらに促すことがある。 For example, a game objective may require a player to capture or claim ownership of virtual elements 230 at various virtual locations in virtual world 210. The virtual elements 230 just described can be linked to landmarks, geographic locations, or objects 240 in the real world 200. Real-world landmark or object 240 may be a work of art, monument, building, business, library, museum, or other suitable real-world landmark or object. In order to capture the virtual element 230 just mentioned, the player must travel in the real world to a landmark or geographic location 240 linked to the virtual element 230 and in the virtual world 210 to the Any interaction required must be performed. For example, player A in FIG. 2 may have to move to a landmark 240 in the real world 200 in order to interact with or capture a virtual element 230 linked to a particular landmark 240. be. Interactions with virtual elements 230 may involve real-world activities, such as, for example, taking pictures and/or collating, obtaining, or capturing other information about landmarks or objects 240 associated with virtual elements 230. It is possible to do what you need. In some aspects, interaction with virtual element 230 may further prompt a match between the player's location in real world 200 and the player's location in virtual world 210.

ゲームの目的は、プレイヤーが、ロケーションベースゲームにてプレイヤーによって収集された1つまたは複数の仮想アイテムを用いることを要求することがある。例として、プレイヤーは、ゲームの目的を完了するために有用であることが可能である仮想アイテム(例えば、武器、クリーチャー、パワーアップ、または他のアイテム)を捜し求めて、仮想世界210を移動することがある。今述べた仮想アイテムは、現実世界200において異なるロケーションに移動すること、または仮想世界210か現実世界200かのいずれかにおいて種々の活動を完了することによって、見つけられるまたは収集されることが可能である。図2に示される例では、プレイヤーは、仮想アイテム232を用いて、1つまたは複数の仮想要素230を捕らえる。特に、プレイヤーは、仮想要素230に最も近いまたは仮想要素230内の仮想世界210におけるロケーションに仮想アイテム232を配置させることが可能である。このようにして、1つまたは複数の仮想アイテム232を配置させることは、特定のプレイヤーに対して、または特定のプレイヤーのチーム/ファクションに対して、仮想要素230の捕獲に帰着することが可能である。 The objective of the game may require the player to use one or more virtual items collected by the player in the location-based game. As an example, the player may travel through the virtual world 210 in search of virtual items (e.g., weapons, creatures, power-ups, or other items) that may be useful to complete the objective of the game. The just mentioned virtual items may be found or collected by traveling to different locations in the real world 200 or by completing various activities in either the virtual world 210 or the real world 200. In the example shown in FIG. 2, the player uses the virtual item 232 to capture one or more virtual elements 230. In particular, the player may place the virtual item 232 at a location in the virtual world 210 that is closest to or within the virtual element 230. In this manner, the placement of one or more virtual items 232 may result in the capture of the virtual element 230 for a particular player or for a particular player's team/faction.

1つの特定の実装では、プレイヤーは、パラレルリアリティゲームの一部として、仮想エネルギーを蓄えなければならないことがある。図2に描かれている仮想エネルギー250は、仮想世界210において、異なるロケーションに散在させることが可能である。プレイヤーは、現実の世界200において、仮想エネルギー250の対応するロケーションに移動することによって、仮想エネルギー250を収集することが可能である。仮想エネルギー250は、仮想アイテムにパワーを供給するのに、および/またはゲームにおける種々のゲームの目的を成し遂げるのに、用いられることが可能である。すべての仮想エネルギー250を失ったプレイヤーは、ゲームから切断されることが可能である。 In one particular implementation, a player may be required to store virtual energy as part of a parallel reality game. The virtual energy 250 depicted in FIG. 2 can be scattered at different locations in the virtual world 210. A player can collect virtual energy 250 by moving to a corresponding location of virtual energy 250 in the real world 200. Virtual energy 250 can be used to power virtual items and/or to accomplish various game objectives in a game. A player who loses all virtual energy 250 can be disconnected from the game.

本開示の様相によれば、パラレルリアリティゲームは、ゲームにおけるあらゆる参加者が同一の仮想世界を共有する大規模マルチプレイヤーロケーションベースゲームであることが可能である。プレイヤーは、別個のチームまたはファクションに区分されることが可能であり、たとえば、仮想要素を捕らえる、または仮想要素の所有権を主張するなど、1つまたは複数のゲームの目的を達成するためにいっしょに働くことが可能である。このようにして、パラレルリアリティゲームは、本質的に、ゲーム内のプレイヤー間の協力を勧めるソーシャルゲームであることが可能である。プレイヤーは、対抗するチームから、パラレルリアリティゲームの間、お互いに抵抗して働く(または、時々、共同して互いの目的を達成する)ことが可能である。プレイヤーは、仮想アイテムを用いて、対抗するチームのプレイヤーを攻撃する、または対抗するチームのプレイヤーの進行を妨げることがある。時には、プレイヤーは、パラレルリアリティゲームにおいて、協同のまたは双方向のイベントに対して、実世界のロケーションにて集まるように勧められる。今述べた場合、ゲームサーバーは、プレイヤーが本当に物理的に存在し、なりすましをしていないことを確実にしようとする。 According to aspects of the present disclosure, a parallel reality game can be a massively multiplayer location-based game in which all participants in the game share the same virtual world. Players can be partitioned into separate teams or factions and can work together to achieve one or more game objectives, such as capturing or claiming ownership of virtual elements. In this way, a parallel reality game can be essentially a social game that encourages cooperation between players in the game. Players can be from opposing teams and work against each other (or sometimes work together to achieve each other's objectives) during the parallel reality game. Players can use virtual items to attack or impede the progress of players on opposing teams. At times, players are encouraged to meet in real-world locations for cooperative or interactive events in the parallel reality game. In this case, the game server tries to ensure that players are truly physically present and are not impersonating others.

パラレルリアリティゲームは、パラレルリアリティゲーム内のゲームプレイを強化し、勧める種々の特徴を有することが可能である。例として、プレイヤーは、ゲームじゅうくまなく用いられることが可能である(例えば、インゲームアイテム(in-game item)を購入する)仮想通貨または他の仮想報酬を蓄積することが可能である。プレイヤーは、ゲーム内の1つまたは複数のゲームの目的を完了し、ゲーム内の経験を得る時、種々のレベルを通して前進することが可能である。いくつかの態様では、プレイヤーは、ゲームの中に提供される1つまたは複数の通信インターフェースを介して、お互い通信することが可能である。さらに、プレイヤーは、ゲーム内のゲームの目的を完了するのに用いられることが可能である強化された「パワー」またはバーチャルアイテムを取得することも可能である。当業者は、本明細書に提供される開示を用いて、種々の他のゲーム特徴が、本開示の範囲から逸脱することなく、パラレルリアリティゲームを有して含まれることが可能であることを理解すべきである。 Parallel reality games can have a variety of features that enhance and encourage gameplay within the parallel reality game. By way of example, players can accumulate virtual currency or other virtual rewards (e.g., to purchase in-game items) that can be used throughout the game. Players can progress through various levels as they complete one or more game objectives within the game and gain in-game experience. In some aspects, players can communicate with one another via one or more communication interfaces provided within the game. Additionally, players can obtain enhanced "powers" or virtual items that can be used to complete game objectives within the game. Using the disclosure provided herein, one of ordinary skill in the art should understand that various other game features can be included with a parallel reality game without departing from the scope of the present disclosure.

図3は、プレイヤーと仮想世界210との間のインターフェースの一部としてクライアント120のディスプレイに与えられることが可能であるゲームインターフェース300の一態様を描く。ゲームインターフェース300は、仮想世界210と、たとえば、仮想世界210における、プレイヤーの位置222、ならびに仮想要素230、仮想アイテム232、および仮想エネルギー250のロケーションなど、ゲームの種々の他の様相とを表示するのに用いられることが可能である表示ウィンドウ310を含む。さらに、ユーザーインターフェース300は、他の情報を、たとえば、ゲームデータ情報、ゲーム通信、プレイヤー情報、クライアントロケーション照合命令、およびゲームに関連付けられた他の情報などを、表示することも可能である。例えば、ユーザーインターフェースは、たとえば、プレイヤー名、経験レベル および他の情報など、プレイヤー情報315を表示することが可能である。ユーザーインターフェース300は、種々のゲーム設定、およびゲームに関連付けられた他の情報にアクセスするためのメニュー320を含むことが可能である。ユーザーインターフェース300は、ゲームシステムとプレイヤーとの間の、およびパラレルリアリティゲームの1人または複数のプレイヤーとの間の通信を可能にする通信インターフェース330も含むことが可能である。 3 illustrates one embodiment of a game interface 300 that may be provided on the display of the client 120 as part of an interface between the player and the virtual world 210. The game interface 300 includes a display window 310 that may be used to display the virtual world 210 and various other aspects of the game, such as, for example, the player's position 222 and the location of the virtual elements 230, virtual items 232, and virtual energy 250 in the virtual world 210. In addition, the user interface 300 may display other information, such as, for example, game data information, game communications, player information, client location matching instructions, and other information associated with the game. For example, the user interface may display player information 315, such as, for example, player name, experience level, and other information. The user interface 300 may include a menu 320 for accessing various game settings and other information associated with the game. The user interface 300 may also include a communication interface 330 that enables communication between the game system and the player, and between one or more players of the parallel reality game.

本開示の様相によれば、プレイヤーは、現実世界において、あちこちとクライアントデバイス120を単に持って行くことによって、パラレルリアリティゲームとインタラクションすることが可能である。例として、プレイヤーは、単に、スマートフォンのパラレルリアリティゲームに関連付けられたアプリケーションにアクセスし、スマートフォンを持って現実世界においてあちこちと動くことによって、ゲームをプレイすることが可能である。この点については、プレイヤーは、ロケーションベースゲームをプレイするために、ディスプレイ画面の仮想世界の視覚表現を連続して見る必要はない。結果として、ユーザーインターフェース300は、ユーザーに、ゲームとインタラクションすることができるようにする複数の非視覚的な要素を含むことが可能である。例として、ゲームインターフェースは、プレイヤーがゲームの中の仮想要素または仮想物体に近づく時、または重要なイベントがパラレルリアリティゲームにで生じる時、プレイヤーに可聴通知を提供することが可能である。プレイヤーは、音声制御340により、今述べた可聴通知を制御することが可能である。別々のタイプの可聴通知は、仮想要素または仮想イベントのタイプによって決まり、ユーザーに提供されることが可能である。可聴通知は、仮想要素または仮想物体へのプレイヤーの接近によって決まる頻度または音量において、増えるまたは減ることが可能である。他の非視覚的な通知または信号は、たとえば振動通知または他の適切な通知もしくは信号など、ユーザーに提供されることが可能である。 According to aspects of the present disclosure, a player can interact with a parallel reality game by simply taking the client device 120 from place to place in the real world. As an example, a player may play the game simply by accessing an application associated with a parallel reality game on a smartphone and moving around in the real world with the smartphone. In this regard, a player does not need to continuously view a visual representation of the virtual world on a display screen in order to play a location-based game. As a result, user interface 300 may include multiple non-visual elements that allow a user to interact with the game. By way of example, a game interface can provide an audible notification to a player when the player approaches a virtual element or object in the game, or when an important event occurs in the parallel reality game. The player is able to control the audible notifications just mentioned via audio controls 340. Different types of audible notifications can be provided to the user depending on the type of virtual element or virtual event. The audible notification may increase or decrease in frequency or volume depending on the player's proximity to the virtual element or object. Other non-visual notifications or signals may be provided to the user, such as, for example, vibration notifications or other suitable notifications or signals.

当業者であれば、本明細書に提供される開示を用いて、多数のゲームインターフェース構成および基本的な機能性が、本開示を考慮して明らかになることを理解するだろう。本開示は、どの1つの特定の構成をとっても限定されることを意図しない。 Those skilled in the art will appreciate, using the disclosure provided herein, that numerous game interface configurations and basic functionality will become apparent in light of this disclosure. This disclosure is not intended to be limited to any one particular configuration.

図1に戻って参照すると、クライアント120は、ゲームシステム100とインターフェースするプレイヤーによって用いられることが可能である、いずれかのポータブルコンピューティングデバイスであることが可能である。例として、クライアント120は、ワイヤレスデバイス、パーソナルデジタルアシスタント(PDA)、ポータブルゲーミングデバイス、携帯電話、スマートフォン、タブレット、ナビゲーションシステム、ハンドヘルドGPSシステム、ウェアラブルコンピューティングデバイス、1つまたは複数のプロセッサーを有するディスプレイ、または他のそのようなデバイスであることが可能である。手短に言えば、クライアント120は、プレイヤーに、ゲームシステム100とインタラクションできるようにすることを可能にする、いずれかのコンピューターデバイスまたはシステムであることが可能である。 Referring back to FIG. 1, client 120 can be any portable computing device that can be used by a player to interface with gaming system 100. By way of example, client 120 may include a wireless device, a personal digital assistant (PDA), a portable gaming device, a mobile phone, a smartphone, a tablet, a navigation system, a handheld GPS system, a wearable computing device, a display with one or more processors, or other such devices. Briefly, client 120 can be any computing device or system that allows players to interact with gaming system 100.

クライアント120は、1つまたは複数のプロセッサーと、1つまたは複数のコンピューター読取り可能媒体とを含むことが可能である。コンピューター読取り可能媒体は、プロセッサーに、動作を行わせる命令を格納することが可能である。クライアント120は、たとえば、ディスプレイ画面、タッチスクリーン、タッチパッド、データ入力キー、スピーカー、カメラ、および/または音声認識に適したマイクなど、プレイヤーからの情報を提供するおよび受信するための種々の入力/出力デバイスを含むことが可能である。さらに、クライアント120は、限定されないが、動作センサー、加速度センサー、ジャイロスコープ、他の慣性測定装置(IMU)、気圧計、測位システム、温度計、光センサーなどを含む、クライアント120からのデータを記録するための他の種々のセンサーを含むこともある。クライアント120は、ネットワーク130を介して通信を提供するためのネットワークインターフェースをさらに含むことが可能である。ネットワークインターフェースは、例えば、トランスミッター、レシーバー、ポート、コントローラー、アンテナ、または他の適切なコンポーネントを含む、1つまたは複数のネットワークとインターフェースするためのどんな適切なコンポーネントでも含むことが可能である。 Client 120 may include one or more processors and one or more computer-readable media. A computer-readable medium can store instructions that cause a processor to perform operations. The client 120 may have various inputs/inputs for providing and receiving information from the player, such as, for example, a display screen, a touch screen, a touch pad, data entry keys, speakers, a camera, and/or a microphone suitable for voice recognition. May include output devices. Additionally, client 120 records data from client 120 including, but not limited to, motion sensors, accelerometers, gyroscopes, other inertial measurement units (IMUs), barometers, positioning systems, thermometers, light sensors, etc. It may also include a variety of other sensors for use. Client 120 may further include a network interface for providing communications over network 130. A network interface may include any suitable components for interfacing with one or more networks, including, for example, transmitters, receivers, ports, controllers, antennas, or other suitable components.

ネットワークコンピューティング環境100が、ロケーションベースゲームを提供するので、好ましくは、クライアント120は、たとえばスマートフォンまたはタブレットなど、プレイヤーが容易に持って行くないしは別のやり方により運ぶことが可能であるポータブルコンピューティングデバイスである。図1に示される態様では、各クライアント120は、たとえばゲーミングモジュール122およびポジショニングモジュール124など、ソフトウェアコンポーネントを含む。他の態様では、クライアント120は、たとえば、(クライアント120のコンポーネントとしての、またはクライアント120の外部の)ディスプレイ、種々の入力デバイス(例えば、タッチスクリーン、マウス、スタイラスなど)などの異なるまたは追加の要素を含むことがある。 Because the network computing environment 100 provides location-based gaming, preferably the clients 120 are portable computing devices that players can easily carry or otherwise transport, such as, for example, a smartphone or tablet. In the embodiment shown in FIG. 1, each client 120 includes software components, such as, for example, a gaming module 122 and a positioning module 124. In other embodiments, the clients 120 may include different or additional elements, such as, for example, a display (either as a component of the client 120 or external to the client 120), various input devices (e.g., a touch screen, a mouse, a stylus, etc.), etc.

ゲーミングモジュール122は、パラレルリアリティゲームに参加するインターフェースをプレイヤーに提供する。ゲームサーバー110は、クライアント120のゲーミングモジュール122による使用のために、ネットワーク130を介してクライアント120にゲームデータを送信して、ゲームサーバー110から離れたロケーションのプレイヤーにゲームのローカルバージョンを提供する。サーバー110は、ネットワーク130を介して通信を提供するためのネットワークインターフェースを含むことが可能である。ネットワークインターフェースは、例えば、トランスミッター、レシーバー、ポート、コントローラー、アンテナ、または他の適切なコンポーネントを含む、1つまたは複数のネットワークとインターフェースするためのどんな適切なコンポーネントでも含むことが可能である。 Gaming module 122 provides an interface for players to participate in parallel reality games. Game server 110 transmits game data to client 120 over network 130 for use by gaming module 122 of client 120 to provide a local version of the game to players at locations remote from game server 110. Server 110 may include a network interface for providing communications over network 130. A network interface may include any suitable components for interfacing with one or more networks, including, for example, transmitters, receivers, ports, controllers, antennas, or other suitable components.

クライアント120によって実行されるゲーミングモジュール122は、プレイヤーとパラレルリアリティゲームとの間のインターフェースを提供する。ゲーミングモジュール122は、ゲームに関連付けられた仮想世界を表示する(例えば、仮想世界のイメージをレンダリングする)クライアント120に関連付けられたディスプレイデバイスにユーザーインターフェースを与え、ユーザーに、仮想世界において、インタラクションし、種々のゲームの目的を成し遂げることを可能にすることが可能である。さらに、ゲーミングモジュール122は、プレイヤーに、ディスプレイ画面を見ることを必要とすることなく、ゲームとインタラクションすることを可能にする種々の他の出力を制御することも可能である。例として、ゲーミングモジュール122は、プレイヤーに、ディスプレイ画面を見ることなく、ゲームをプレイすることが可能である種々の音声、振動、または他の通知を制御することが可能である。ゲーミングモジュール122は、ゲームサーバー110から受信したゲームデータにアクセスして、ゲームの正確な表現をユーザーに提供することが可能である。ゲーミングモジュール122は、プレイヤーの入力を受信し処理し、ネットワーク130を介してゲームサーバー110に更新を提供することが可能である。 A gaming module 122 executed by client 120 provides an interface between the player and the parallel reality game. Gaming module 122 provides a user interface to a display device associated with client 120 that displays a virtual world associated with a game (e.g., renders an image of the virtual world) and allows a user to interact in the virtual world; It is possible to make it possible to accomplish various game objectives. Additionally, gaming module 122 can also control various other outputs that allow players to interact with the game without having to look at a display screen. By way of example, gaming module 122 may control various audio, vibration, or other notifications that allow the player to play the game without looking at the display screen. Gaming module 122 can access game data received from game server 110 to provide an accurate representation of the game to the user. Gaming module 122 can receive and process player input and provide updates to game server 110 via network 130.

ポジショニングモジュール124は、クライアント120の位置を監視するためのいずれかのデバイスまたは回路であることが可能である。例えば、ポジショニングモジュール124は、衛星ナビゲーション測位システム(例えば、GPSシステム、ガリレオ測位システム、グローバルナビゲーション衛星システム(Global Navigation satellite system:GLONASS)、BeiDou衛星ナビゲーションおよび測位システム)、慣性ナビゲーションシステム、デッドレコニングシステム、IPアドレスに基づいて、三角測量および/またはセルラータワーもしくはWiFiホットスポットへの接近を用いることによって、および/または位置を決定する他の適切な技法を用いて、実際のまたは相対的な位置を決定することが可能である。ポジショニングモジュール124は、クライアント120のロケーションを正確に測位することを支援することがある種々の他のセンサーをさらに含むことがある。 The positioning module 124 can be any device or circuit for monitoring the position of the client 120. For example, the positioning module 124 can determine an actual or relative position using a satellite navigation positioning system (e.g., GPS system, Galileo positioning system, Global Navigation satellite system (GLONASS), BeiDou satellite navigation and positioning system), an inertial navigation system, a dead reckoning system, based on an IP address, by using triangulation and/or proximity to cellular towers or WiFi hotspots, and/or other suitable techniques for determining position. The positioning module 124 can further include various other sensors that may assist in precisely locating the location of the client 120.

プレイヤーが現実世界においてクライアント120を持ってあちこちと動く時、ポジショニングモジュール124は、プレイヤーの位置をトラッキングし、プレイヤーの位置情報をゲーミングモジュール122に提供する。ゲーミングモジュール122は、現実世界におけるプレイヤーの実際の位置に基づいて、ゲームに関連付けられた仮想世界におけるプレイヤーの位置を更新する。ゆえに、プレイヤーは、現実世界において、単に、クライアント120を持って行くことまたは運ぶことによって、仮想世界とインタラクションすることが可能である。特に、仮想世界におけるプレイヤーのロケーションは、現実世界におけるプレイヤーのロケーションと対応させることが可能である。ゲーミングモジュール122は、ユニバーサルゲームモジュール112がゲームの至る所におけるすべてのプレイヤーの位置についてのトラッキングを保持するように、ネットワーク130を介してプレイヤーの位置情報をゲームサーバー110に提供することが可能である。プレイヤーに関連付けられたロケーション情報は、プレイヤーのロケーション情報がアクセスされることが、およびロケーション情報がゲームという状況ではどのように利用されるか(例えば、仮想世界におけるプレイヤーの位置を更新すること)がプレイヤーに通知された後、許可が与えられる場合のみ利用されることは、理解されるべきである。さらに、プレイヤーに関連付けられたどんなロケーション情報でも、プレイヤーのプライバシーを保護するやり方により格納され管理されるだろう。 As the player moves around with the client 120 in the real world, the positioning module 124 tracks the player's location and provides the player's location information to the gaming module 122. Gaming module 122 updates the player's location in the virtual world associated with the game based on the player's actual location in the real world. Thus, a player can interact with the virtual world simply by taking or carrying the client 120 in the real world. In particular, the player's location in the virtual world can be made to correspond to the player's location in the real world. Gaming module 122 may provide player location information to game server 110 via network 130 such that universal gaming module 112 maintains tracking of all player locations throughout the game. . Location information associated with a player determines whether the player's location information can be accessed and how the location information is used in the context of the game (e.g., to update the player's location in the virtual world). It should be understood that it will only be used if permission is granted after the player has been notified. Furthermore, any location information associated with a player will be stored and managed in a manner that protects the player's privacy.

ネットワークコンピューティング環境100は、ゲームサーバー110が、ネットワーク130を介して1つまたは複数のクライアント120と通信して、クライアント120のプレイヤーにパラレルリアリティゲームを提供する、クライアントサーバーアーキテクチャを用いる。さらに、ネットワークコンピューティング環境100は、たとえばスポンサー/広告主システムまたは企業システムなど、他の外部システムを含むこともある。1つのクライアント120のみが図1に例示されるが、何台のクライアント120または他の外部システムでも、ネットワーク130を介してゲームサーバー110に接続されることがある。その上さらに、ネットワークコンピューティング環境100は、以下に説明されるのとは異なるやり方によりクライアント120とサーバー110との間に分散されることがある、異なるまたは追加の要素および機能性を含むことがある Network computing environment 100 uses a client-server architecture in which a game server 110 communicates with one or more clients 120 over a network 130 to provide parallel reality games to players of clients 120. Additionally, network computing environment 100 may include other external systems, such as sponsor/advertiser systems or corporate systems. Although only one client 120 is illustrated in FIG. 1, any number of clients 120 or other external systems may be connected to game server 110 via network 130. Furthermore, network computing environment 100 may include different or additional elements and functionality that may be distributed between client 120 and server 110 in ways different from those described below. There is .

ゲームサーバー110は、いずれかのコンピューティングデバイスであることが可能であり、1つまたは複数のプロセッサーと1つまたは複数のコンピューター読取り可能媒体とを含むことが可能である。コンピューター読取り可能媒体は、プロセッサーに、動作を行わせる命令を格納することが可能である。ゲームサーバー110は、ゲームデータベース115を含むことが可能である、またはゲームデータベース115と通信をしていることが可能である。ゲームデータベース115は、ネットワーク130を介してクライアント(複数可)120に供されるまたは提供されるパラレルリアリティゲームに用いられるゲームデータを格納する。 Game server 110 can be any computing device and can include one or more processors and one or more computer-readable media. A computer-readable medium can store instructions that cause a processor to perform operations. Game server 110 may include or be in communication with game database 115. Game database 115 stores game data used in parallel reality games that are served or provided to client(s) 120 via network 130 .

ゲームデータベース115に格納されるゲームデータは、(1)パラレルリアリティゲームにおける仮想世界に関連付けられたデータ(例えば、ディスプレイデバイスに仮想世界をレンダリングするのに用いられるイメージデータ、仮想世界におけるロケーションの地理座標など)、(2)パラレルリアリティゲームのプレイヤーに関連付けられたデータ(例えば、限定されないが、プレイヤー情報、プレイヤー体験レベル、プレイヤー通貨、仮想世界/現実世界における現在のプレイヤー位置、プレイヤーエネルギーレベル、プレイヤープリファレンス、チーム情報、ファクション情報などを含むプレイヤープロファイル)、(3)ゲームの目的に関連付けられたデータ(例えば、現在のゲームの目的、ゲームの目的の状態、過去のゲームの目的、将来のゲームの目的、望ましいゲームの目的に関連付けられたデータなど)、(4)仮想世界における仮想要素関連付けられたデータ(例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲームの目的、仮想要素に対応する現実の世界の位置情報、仮想要素の挙動、仮想要素の関連性など)、(5)仮想世界の要素にリンクした実世界の物体、ランドマーク、位置に関連付けられたデータ(例えば、実世界の物体/ランドマークのロケーション、実世界の物体/ランドマークの説明、実世界の物体にリンクした仮想要素の関連性など)、(6)ゲーム状態(例えば、プレイヤーの現在の数、ゲームの目的の現在の状態、プレイヤーリーダーボードなど)、(7)プレイヤーの活動/入力に関連付けられたデータ(例えば、現在のプレイヤー位置、過去のプレイヤー位置、プレイヤー移動、プレイヤー入力、プレイヤー問い合わせ、プレイヤー通信など)、および(8)パラレルリアリティゲームの実装の間、用いられる、関係する、または取得される他のデータを含むことが可能である。ゲームデータベース115に格納されたゲームデータは、システム管理者によってオフラインかリアルタイムにかのいずれか、および/または、たとえばネットワーク130を介して1つまたは複数のクライアント120からなど、システム100のユーザー/プレイヤーから受信されるデータによって、居住することが可能である。 The game data stored in the game database 115 includes (1) data associated with a virtual world in a parallel reality game (e.g., image data used to render the virtual world on a display device, geographic coordinates of a location in the virtual world; (2) data associated with players in a parallel reality game (e.g., without limitation, player information, player experience level, player currency, current player location in the virtual/real world, player energy level, player play (3) data associated with game objectives (e.g., current game objectives, game objective status, past game objectives, future game objectives); (4) data associated with the virtual element in the virtual world (e.g., location of the virtual element, type of the virtual element, data associated with the game objective associated with the virtual element); purpose, real world location information corresponding to the virtual element, behavior of the virtual element, association of the virtual element, etc.), (5) associated with real world objects, landmarks, and locations linked to the virtual world element. (6) game state (e.g., the player's current (7) data associated with player activity/input (e.g., current player position, past player position, player movement, player input, player (e.g., inquiries, player communications, etc.); and (8) other data used, related to, or obtained during implementation of the parallel reality game. Game data stored in game database 115 may be accessed by a system administrator, either offline or in real time, and/or by users/players of system 100, such as from one or more clients 120 over network 130. It is possible to inhabit by the data received from.

ゲームサーバー110は、1つまたは複数のクライアント120から(例として、リモートプロシージャコール(RPC)を介して)ゲームデータに対する要求を受信し、ネットワーク130を介してそれらの要求に応答するように構成されることが可能である。例として、ゲームサーバー110は、ゲームデータを1つまたは複数のデータファイルにエンコードし、データファイルをクライアント120に提供することが可能である。さらに、ゲームサーバー110は、ネットワーク130を介して1つまたは複数のクライアント120からゲームデータ(例えば、プレイヤー位置、プレイヤー活動、プレイヤー入力など)を受信するように構成されることが可能である。例として、クライアント120は、ゲームサーバー110が、ゲームに対して変化した周囲のどんな状況でもおよびすべての状況を反映するために、ゲームデータベース115においてゲームデータを更新するのに用いるプレイヤー入力および他の更新を、ゲームサーバー110に周期的に送るように構成されることが可能である。 Game server 110 is configured to receive requests for game data (e.g., via remote procedure calls (RPC)) from one or more clients 120 and respond to those requests over network 130. It is possible to As an example, game server 110 may encode game data into one or more data files and provide the data files to client 120. Additionally, game server 110 may be configured to receive game data (eg, player location, player activity, player input, etc.) from one or more clients 120 via network 130. As an example, the client 120 may receive player input and other information that the game server 110 uses to update game data in the game database 115 to reflect any and all circumstances surrounding the game that have changed. Updates can be configured to be sent to game server 110 periodically.

示される態様では、サーバー110は、ユニバーサルゲームモジュール112、コマーシャルゲーム特徴モジュール114、データ収集モジュール116、イベントモジュール118、およびクエリモジュール119を含む。ゲームサーバー110は、遠隔の分散ゲームデータベース115からゲームデータにアクセスする。クエリモジュール119およびゲームデータベース115の種々の態様は、図4に関して、以下により詳細に説明される。他の態様では、ゲームサーバー110は、異なるおよび/または追加の要素を含む。さらに、機能は、説明されるのとは異なるように、要素の間に、分散されることがある。例として、ゲームデータベース115は、ゲームサーバー110に統合されることが可能である。 In the embodiment shown, server 110 includes a universal game module 112, a commercial game features module 114, a data collection module 116, an event module 118, and a query module 119. Game server 110 accesses game data from a remote distributed game database 115. Various aspects of query module 119 and game database 115 are described in more detail below with respect to FIG. In other aspects, game server 110 includes different and/or additional elements. Additionally, functionality may be distributed among elements differently than described. As an example, game database 115 may be integrated with game server 110.

ユニバーサルゲームモジュール112は、すべてのプレイヤーに対して、パラレルリアリティゲームをホストし、すべてのプレイヤーに対して、パラレルリアリティゲームの現在の状態に対する権威あるソースとして作動する。ユニバーサルゲームモジュール112は、クライアントデバイス120からのゲームデータ(例えば、プレイヤーの入力、プレイヤーの位置、プレイヤーの活動、ランドマーク情報など)を受信し、受信したゲームデータを、パラレルリアリティゲームのすべてのプレイヤーに対して、全パラレルリアリティゲームに組み入れる。さらに、ユニバーサルゲームモジュール112は、ネットワーク130を介して、クライアント120へのゲームデータの配信を管理することも可能である。さらに、ユニバーサルゲームモジュール112は、限定されないが、クライアント120とゲームサーバー110との間の接続をセキュアにすること、種々のクライアント120間の接続を確立すること、および種々のクライアント120のロケーションを照合することを含む、クライアント120のセキュリティの側面を管理することもある。 Universal game module 112 hosts the parallel reality game for all players and acts as an authoritative source for the current state of the parallel reality game for all players. Universal game module 112 receives game data (e.g., player input, player location, player activity, landmark information, etc.) from client device 120 and distributes the received game data to all players of the parallel reality game. Incorporated into all parallel reality games. Additionally, universal game module 112 may also manage the distribution of game data to clients 120 via network 130 . Additionally, the universal game module 112 is configured to perform, without limitation, secure connections between clients 120 and game server 110, establish connections between various clients 120, and verify locations of various clients 120. The client 120 may also manage security aspects of the client 120, including managing the security aspects of the client 120.

コマーシャルゲーム特徴モジュール114は、1つが含まれる態様では、ユニバーサルゲームモジュール112から分離される、またはユニバーサルゲームモジュール112の一部であることが可能である。コマーシャルゲーム特徴モジュール114は、現実世界における商業活動とリンクされる、パラレルリアリティゲーム内の種々のゲーム特徴についての含有を管理することが可能である。例として、コマーシャルゲーム特徴モジュール114は、たとえば、ネットワーク130を介して(ネットワークインターフェースを介して)スポンサー/広告主、企業、または他のエンティティなど、外部システムから要求を受信して、パラレルリアリティゲームにおいて商業活動とリンクしたゲーム特徴を含むことが可能である。次に、コマーシャルゲーム特徴モジュール114は、パラレルリアリティゲームにおける今述べたゲーム特徴の含有を手配することが可能である。 Commercial game feature module 114 can be separate from universal game module 112 or can be part of universal game module 112 in aspects where one is included. Commercial game features module 114 can manage the inclusion of various game features within a parallel reality game that are linked to commercial activities in the real world. By way of example, the commercial game feature module 114 may receive requests from external systems, such as sponsors/advertisers, companies, or other entities over the network 130 (via network interfaces) to create a parallel reality game. It is possible to include game features linked to commercial activities. The commercial game features module 114 can then arrange for the inclusion of the just-described game features in the parallel reality game.

ゲームサーバー110は、データ収集モジュール116をさらに含むことが可能である。データ収集モジュール116は、1つが含まれる態様では、ユニバーサルゲームモジュール112から分離される、またはユニバーサルゲームモジュール112の一部であることが可能である。データ収集モジュール116は、現実世界におけるデータ収集活動とリンクされる、パラレルリアリティゲーム内の種々のゲーム特徴についての含有を管理することが可能である。例として、データ収集モジュール116は、ゲームデータベース115に格納されたゲームデータを変更して、パラレルリアリティゲームにおけるデータ収集活動とリンクしたゲーム特徴を含むことが可能である。さらに、データ収集モジュール116は、データ収集活動に応じて、プレイヤーによって収集されたデータ分析し、種々のプラットフォームによるアクセスのためにデータを提供することが可能である。 Game server 110 may further include a data collection module 116. Data collection module 116 can be separate from universal game module 112 or can be part of universal game module 112 in aspects where one is included. Data collection module 116 may manage the inclusion of various game features within the parallel reality game that are linked to data collection activities in the real world. As an example, data collection module 116 may modify game data stored in game database 115 to include game features linked to data collection activities in a parallel reality game. Additionally, data collection module 116 may analyze data collected by players and provide the data for access by various platforms in response to data collection activities.

イベントモジュール118は、パラレルリアリティゲームにおけるイベントへのプレイヤーのアクセスを管理する。用語「イベント」が、便利なように用いられるが、この用語が、特定のロケーションまたは時間における特定のイベントに言及する必要はないことは、理解されるべきである。むしろ、1つまたは複数のアクセス基準が用いられて、プレイヤーがゲームコンテンツにアクセスしてもよいかどうかを決定する、アクセス制御されたゲームコンテンツのいずれかの供給に言及することがある。上記のコンテンツは、アクセス制御の少ないまたはないゲームコンテンツを含む、より大きなパラレルリアリティゲームの一部であり得る、またはスタンドアロンのアクセス制御されたパラレルリアリティゲームであり得る。 Event module 118 manages player access to events in the parallel reality game. Although the term "event" is used for convenience, it should be understood that this term need not refer to a particular event at a particular location or time. Rather, it may refer to any provision of access-controlled game content in which one or more access criteria are used to determine whether a player may access the game content. The above content may be part of a larger parallel reality game, including game content with little or no access control, or may be a standalone access controlled parallel reality game.

クエリモジュール119は、ゲームデータベース115に対するクエリを構築しおよび実行し、結果を、ネットワークコンピューティング環境100の他のコンポーネント(例えば、パラレルリアリティゲームにおける使用のためのクライアントデバイス120のゲーミングモジュール122)に提供する。図4は、ゲームデータベース115の一態様を示す図である。示される態様では、ゲームデータベース115は、N個のノード410A~Nを含む。各ノード410は、異なる物理マシン、または異なる仮想マシンであり得る。ゆえに、ノード410は、独立して問い合わされることがある。地理的なリージョンを表すセルに対応するシャードに対するジオロケーションデータがノード410に追加される時、クエリモジュール119は、ノードに格納されたデータのクエリに対する、および拡張としてシャードのクエリに対する応答時間が望ましくないことを示すオーバーフロー条件に対して、ノードを監視する。オーバーフロー条件は、ノードに格納されるデータ量の制限、ノードに格納されるアイテム数の制限、ノードにおけるクエリ応答時間の制限、またはノードに格納されるデータ量を示す、ゆえに、予想されるクエリ応答時間を示すどんな他の適切なパラメーターでもあることが可能である。オーバーフロー条件が満たされるならば、クエリモジュール119は、セルに対してャードカウントをインクリメントし、異なるノード410のセルに対して新しいシャードを開始する。ゆえに、与えられたセルに対してデータ量が増加する時、セルに対応するジオロケーションデータが動的に格納されるノード410の数が増加する一方、いずれか1つのノードのデータ量は、クエリ応答時間が予測可能のままであるように制限される。いくつかの態様では、クエリモジュール119は、セルに関連付けられたシャードが別のノードに展開したことを示すノードのシャードに関連付けられたフラグ(例えば、格納されたパラメーター)を設定する。例えば、クエリモジュール119は、セルに対して新しいデータを格納するとき、セルに関連付けられた1つまたは複数の共有されるためのフラグが設定されているかどうかを検査することがある。今述べた場合、クエリモジュール119が特定のシャードに対するフラグが設定されていることを決定するならば、クエリモジュール119が、フラグが設定されていないシャードを識別するまで、または新しいシャードがセルに対して生成されるまで、別のシャードにデータを格納しようとすることがある。 The query module 119 constructs and executes queries against the game database 115 and provides results to other components of the network computing environment 100 (e.g., a gaming module 122 of a client device 120 for use in a parallel reality game). FIG. 4 illustrates one embodiment of the game database 115. In the embodiment shown, the game database 115 includes N nodes 410A-N. Each node 410 may be a different physical machine, or a different virtual machine. Thus, the nodes 410 may be queried independently. As geolocation data for shards corresponding to cells representing geographic regions is added to the nodes 410, the query module 119 monitors the nodes for overflow conditions that indicate undesirable response times for queries of data stored at the node, and by extension, queries of the shards. The overflow conditions can be a limit on the amount of data stored at the node, a limit on the number of items stored at the node, a limit on the query response time at the node, or any other suitable parameter indicative of the amount of data stored at the node and therefore the expected query response time. If an overflow condition is met, the query module 119 increments the shard count for the cell and initiates a new shard for the cell on a different node 410. Thus, as the amount of data for a given cell increases, the number of nodes 410 on which geolocation data corresponding to the cell is dynamically stored increases, while the amount of data on any one node is limited so that query response times remain predictable. In some aspects, the query module 119 sets a flag (e.g., a stored parameter) associated with the node's shard indicating that the shard associated with the cell has been deployed to another node. For example, when storing new data for a cell, the query module 119 may check whether one or more shared flags associated with the cell are set. In the present case, if the query module 119 determines that the flag for a particular shard is set, the query module 119 may attempt to store the data in another shard until it identifies a shard that does not have the flag set or until a new shard is created for the cell.

図1に戻って参照すると、クエリモジュール119は、クライアントデバイス120のロケーションに基づいて、クライアントデバイス120から受信した要求に応答して、ジオロケーションデータに対するクエリを生成する。クエリは、ジオロケーションデータを検索する、更新する、ないしは別のやり方により操作することがある。さらに、クエリモジュール119は、問い合わされたジオロケーションデータの処理に基づいて、たとえば、要求されたジオロケーションデータを含むクエリ応答など、クエリ応答をクライアントデバイス120に提供する。一態様では、クエリモジュール119は、クライアント120からロケーション(例えば、ポジショニングモジュール124によって生成されたGPSロケーション)を受信し、たとえばロケーションを含む地理的なリージョンに対応する仮想世界の部分を表すセルに対して地理的なセルのインデックスを問い合わせることによってなど、ロケーションに基づいて関心のある仮想世界の1つまたは複数の部分を識別する。例えば、S2セルが用いられる場合、クエリモジュールは、クライアント120が位置される指定されたレベル(例えば、レベル12)のS2セル、その少なくとも一部がロケーションの指定された半径(例えば、2キロメートル)内にある指定されたレベル(例えば、レベル16)のいずれかのS2セル、指定された半径内に完全にある指定されたレベルのいずれかのS2セル、またはS2セルのどんな他の適切なセット(例えば、クライアントの現在の移動方向を説明する楕円内)でも識別することがある。 Referring back to FIG. 1, query module 119 generates queries for geolocation data in response to requests received from client device 120 based on the location of client device 120. Queries may retrieve, update, or otherwise manipulate geolocation data. Additionally, query module 119 provides a query response to client device 120 based on the processing of the queried geolocation data, such as, for example, a query response that includes the requested geolocation data. In one aspect, query module 119 receives a location (e.g., a GPS location generated by positioning module 124) from client 120 and queries a cell representing a portion of the virtual world that corresponds to, e.g., a geographic region that includes the location. identifying one or more portions of the virtual world of interest based on location, such as by querying geographic cell indices in the virtual world; For example, if an S2 cell is used, the query module may include an S2 cell at a specified level (e.g., level 12) at which client 120 is located, at least a portion of which is within a specified radius of the location (e.g., 2 kilometers). any S2 cell at a specified level (e.g., level 16) that is within a specified radius, any S2 cell at a specified level that is completely within a specified radius, or any other suitable set of S2 cells. (e.g., within an ellipse that describes the client's current direction of movement).

各S2セルには、セルIDを有する。さらに、クエリモジュール119は、セルに対してデータを含むシャードの数を示すシャード番号も格納する。クエリモジュール119は、セルIDおよびシャード番号を用いて、セルに対してデータを含む各シャードに対して一意的なキーを生成する。1つの一意的なキーまたは複数の一意的なキーは、セルIDを、0からシャード番号までの各整数値と組み合わせて、生成されることがある。例えば、7686のセルID、および3のシャード番号に対して、3つのキーは、7686-0、7686-1、7686-2として生成されることがある。一意的なキーを生成するどんな適切な組み合わせのメソッドでも、たとえば連接(concatenation)など、用いられることがある。 Each S2 cell has a cell ID. Additionally, query module 119 also stores a shard number indicating the number of shards that contain data for the cell. Query module 119 uses the cell ID and shard number to generate a unique key for each shard that contains data for the cell. A unique key or unique keys may be generated by combining the cell ID with each integer value from 0 to the shard number. For example, for a cell ID of 7686 and a shard number of 3, three keys may be generated as 7686-0, 7686-1, 7686-2. Any suitable combination of methods for generating unique keys may be used, such as concatenation.

クエリモジュール119は、関連データを有する各シャードが一意的なキーに基づいて位置される、分散データベース115のノードを決定する。いくつかの態様では、クエリモジュール119は、一意的なキーをスロット番号に変換する、決定論的なハッシングの技法を適用する。例として、データベース115は、スロットの最大数(例えば、16565)を有することがあり、クエリモジュール119は、スロットの最大数を用いて一意的なキーにモジュラーハッシング(modular hashing)の技法を適用して、スロット番号(例えば、一意的なキーのモジュロマキシマム(modulo maximum)なスロット番号)を生成することがある。他の態様では、他の決定論的なハッシングの技法を用いて、一意的なキーをスロット番号に変換することがある。 Query module 119 determines the node of distributed database 115 where each shard with associated data is located based on the unique key. In some aspects, query module 119 applies deterministic hashing techniques that convert unique keys to slot numbers. As an example, database 115 may have a maximum number of slots (e.g., 16,565), and query module 119 applies modular hashing techniques to the unique key using the maximum number of slots. may generate a slot number (eg, a unique key modulo maximum slot number). In other aspects, other deterministic hashing techniques may be used to convert the unique key to a slot number.

クエリモジュール119は、データベース115のどのノード410が各スロットを格納しているかを示すマッピングを格納する。マッピングに基づいて、クエリモジュール119は、セルデータに対して、示されたノード410の各々に対して並列クエリを生成する。並列クエリの各々は、予測可能な応答時間を有し、および拡張として並列クエリ全体は、上に説明されたクエリモジュール119によるオーバーフロー条件に対する監視のために、予測可能な応答時間を有する。各並列クエリは、対応するノード410によって格納されるシャードに対するジオロケーションデータを戻す。クエリモジュール119は、各クエリからの結果を集約(例えば、連接)し、要求するクライアント120に提供する。 Query module 119 stores a mapping indicating which node 410 of database 115 stores each slot. Based on the mapping, query module 119 generates parallel queries for each of the indicated nodes 410 on the cell data. Each of the parallel queries has a predictable response time, and by extension the entire parallel query has a predictable response time due to monitoring for overflow conditions by the query module 119 described above. Each parallel query returns geolocation data for the shard stored by the corresponding node 410. Query module 119 aggregates (eg, concatenates) the results from each query and provides them to requesting client 120.

ネットワーク130は、いずれかのタイプの通信ネットワーク、たとえば、ローカルエリアネットワーク(例えばイントラネット)、ワイドエリアネットワーク(例えばインターネット)、またはそれらのいくつかの組み合わせなどであることが可能である。さらに、ネットワークは、クライアント120とゲームサーバー110との間の直接接続を含むことも可能である。一般に、ゲームサーバー110とクライアント120との間の通信は、いろいろの通信プロトコル(例えば、TCP/IP、HTTP、SMTP、FTP)、エンコーディングまたはフォーマット(例えば、HTML、XML、JSON)、および/または保護スキーム(例えば、VPN、セキュアHTTP、SSL)を用いて、ワイヤードおよび/またはワイヤレス接続のどのタイプでも用いて、ネットワークインターフェースを介して行うことが可能である。 The network 130 can be any type of communication network, such as a local area network (e.g., an intranet), a wide area network (e.g., the Internet), or some combination thereof. Additionally, the network can include a direct connection between the client 120 and the game server 110. In general, communication between the game server 110 and the client 120 can be via a network interface using any type of wired and/or wireless connection, using a variety of communication protocols (e.g., TCP/IP, HTTP, SMTP, FTP), encodings or formats (e.g., HTML, XML, JSON), and/or protection schemes (e.g., VPN, Secure HTTP, SSL).

本明細書に述べられる技術は、サーバー、データベース、ソフトウェアアプリケーション、および他のコンピュータベースシステムに、とられる作動および上記システムへの送信情報および上記システムからの送信情報も同様に、言及する。当業者であれば、コンピュータベースシステムに固有の柔軟性が、2つのコンポーネント間および3つ以上のコンポーネント間のタスクおよび機能性のバラエティに富む可能な構成、組み合わせ、および分割を考慮することを認めるだろう。例として、本明細書に述べられるサーバー処理は、単一のサーバー、または協働して働く複数のサーバーを用いて実装されることがある。特段の明言がある場合を除き、データベースおよびアプリケーションは、単一のシステムに実装されることがある、または複数のシステムにわたって分散されることがある。同様に、分散されたコンポーネントは、順次にまたは並列に動作することがある。 The techniques described herein also refer to operations taken on and information transmitted to and from servers, databases, software applications, and other computer-based systems. Those skilled in the art will appreciate that the inherent flexibility of computer-based systems allows for a wide variety of possible configurations, combinations, and divisions of tasks and functionality between two components and between three or more components. right. By way of example, the server processing described herein may be implemented using a single server or multiple servers working together. Unless explicitly stated otherwise, databases and applications may be implemented on a single system or distributed across multiple systems. Similarly, distributed components may operate sequentially or in parallel.

さらに、本明細書で述べられるシステムおよび方法がユーザーについての個人情報にアクセスおよび分析する、または、たとえばロケーション情報など、個人情報の使用がなされるという状況では、ユーザーは、プログラムまたは特徴が情報を収集するかどうかを制御し、システムまたは他のアプリケーションからコンテンツを、受信するかどうかおよび/またはどのように受信するかを制御する機会を提供されることがある。ユーザーが、どの情報が収集され、どのように情報が用いられるかについての意味のある通知を提供されるまで、収集されるまたは用いられる上記の情報はない。情報は、ユーザーが、ユーザーによっていつでも取り消せるまたは修正されることが可能である同意を提供しない限り、収集されないまたは用いられない。ゆえに、ユーザーは、アプリケーションまたはシステムによって、情報が、ユーザーについてどのように収集され用いられるかに対する制御を有することが可能である。さらに、ある情報またはデータは、個人の識別が可能な情報が取り除かれるように、格納されるまたは用いられる前に1つまたは複数のやり方により扱われることが可能である。例えば、ユーザーの身元は、ユーザーに対して決定されることが可能である個人的に識別可能な情報がないように、扱われることがある。 Furthermore, in situations where the systems and methods described herein access and analyze personal information about a user or use of personal information, such as, for example, location information, the user may be provided with an opportunity to control whether the program or feature collects the information and to control whether and/or how the user receives content from the system or other applications. No such information is collected or used unless the user is provided with meaningful notice of what information is collected and how the information is used. No information is collected or used unless the user provides consent, which may be revoked or modified by the user at any time. Thus, the user may have control over how information is collected and used about the user by the application or system. Furthermore, some information or data may be handled in one or more ways before being stored or used, such that personally identifiable information is removed. For example, the identity of the user may be handled such that no personally identifiable information can be determined about the user.

例示的な方法
図5は、予測可能なクエリ応答時間を有する任意の数のアイテムを含むジオロケーションデータを提供するための例示的な方法500を示す図である。図5のステップは、方法500を行うクエリモジュール119の視点から例示される。しかしながら、ステップのいくつかまたはすべては、他のエンティティおよび/またはコンポーネントによって行われることがある。さらに、いくつかの態様は、ステップを並列に行う、ステップを異なる順に行う、または異なるステップを行うことがある。
Exemplary Method FIG. 5 illustrates an example method 500 for providing geolocation data including any number of items with predictable query response times. The steps of FIG. 5 are illustrated from the perspective of query module 119 performing method 500. However, some or all of the steps may be performed by other entities and/or components. Additionally, some embodiments may perform steps in parallel, perform steps in a different order, or perform different steps.

図5に示される態様では、方法500は、クエリモジュール119が、ジオロケーション(例えば、クライアント120のGPS座標)を示す要求を受信することにより始まる。先に述べている要求は、たとえば、ジオロケーションデータを検索する、更新する、ないしは別のやり方により変更するなど、種々のデータベースクエリを説明することがある。クエリモジュール119は、ジオロケーションに基づいて、1つまたは複数の地理的なリージョンを識別する520。例えば、先に述べている地理的なリージョンは、ロケーションから予め決められた距離内の特定のレベルについてのS2セルであり得る。 In the aspect illustrated in FIG. 5, method 500 begins with query module 119 receiving a request indicating a geolocation (eg, GPS coordinates of client 120). The aforementioned requests may describe various database queries, such as, for example, retrieving, updating, or otherwise modifying geolocation data. Query module 119 identifies 520 one or more geographic regions based on geolocation. For example, the aforementioned geographical region may be an S2 cell for a particular level within a predetermined distance from the location.

クエリモジュール119は、データベースの1つまたは複数のデータベースシャードを識別し、ただし、1つまたは複数のデータベースシャードは、各々、1つまたは複数の地理的なリージョンのうちのそれぞれの地理的なリージョンに対応する530。先に述べているシャードは、決定論的なハッシングの技法を用いて識別されることがある。クエリモジュール119は、1つまたは複数の地理的なリージョンに対応するジオロケーションデータに対して識別されたシャードに問い合わせること540をし、ただし、問い合わせること540は、予測可能なクエリ応答時間を有する。上に説明されている、識別されたデータベースシャードが複数のデータベースシャードを含むならば、クエリモジュール119は、複数のシャードに並列に問い合わせをすることがある。クエリモジュール119は、問い合わされたジオロケーションデータを用いてクエリ結果を処理し550、受信した要求に対する応答としてクエリ結果を戻す560。例えば、クエリモジュール119が複数のシャードを並列に問い合わせるならば、クエリモジュール119は、並列のクエリの各々からクエリ結果(例えば、それぞれのシャードの各々から検索されるジオロケーションデータ)を全クエリ結果に集約し、受信した要求への応答として全クエリ結果を提供することがある。 The query module 119 identifies one or more database shards of the database, where each of the one or more database shards corresponds to a respective geographic region of the one or more geographic regions 530. The shards described above may be identified using deterministic hashing techniques. The query module 119 queries the identified shards 540 for geolocation data corresponding to the one or more geographic regions, where the querying 540 has a predictable query response time. If the identified database shards, as described above, include multiple database shards, the query module 119 may query the multiple shards in parallel. The query module 119 processes the query results using the queried geolocation data 550 and returns the query results as a response to the received request 560. For example, if the query module 119 queries multiple shards in parallel, the query module 119 may aggregate the query results (e.g., geolocation data retrieved from each of the respective shards) from each of the parallel queries into a total query result and provide the total query result as a response to the received request.

例示的なコンピューティングシステム
図6は、マシン読取り可能媒体から命令を読み、プロセッサー(またはコントローラー)において実行することができる例示的なマシンの構成要素を例示するブロック図である。具体的には、図6は、コンピューターシステム600の例示的なかたちにおけるマシンの図式的な表現を示す。コンピューターシステム600は、マシンに、本明細書に説明されるメソドロジー(またはプロセス)のいずれかを行わせるための命令624(例えば、プログラムコードまたはソフトウェア)を実行するのに用いられることが可能である。マシンは、スタンドアロンデバイスとして動作する、または、説明される機能性を、他の接続された(例えば、ネットワーク接続された)デバイスと協働して提供することがある。マシンは、サーバークライアントネットワーク環境におけるサーバーもしくはクライアントの性能において、またはピアツーピア(または分散)ネットワーク環境におけるピアマシンとして、動作することがある。
Exemplary Computing System FIG. 6 is a block diagram illustrating components of an exemplary machine that can read instructions from a machine-readable medium and execute them on a processor (or controller). Specifically, FIG. 6 shows a diagrammatic representation of a machine in the exemplary form of a computer system 600. Computer system 600 can be used to execute instructions 624 (e.g., program code or software) to cause a machine to perform any of the methodologies (or processes) described herein. . The machine may operate as a standalone device or may cooperate with other connected (eg, networked) devices to provide the described functionality. A machine may operate in the capacity of a server or client in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.

マシンは、サーバーコンピューター、クライアントコンピューター、パーソナルコンピュータ(PC)、タブレットPC、スマートフォン、ネットワークルータ、またはそのマシンによってとられることになる作動を指定する命令1024を(連続的にまたは別のやり方により)実行できるどんな他のマシンでもあり得る。さらに、単一のマシンのみが例示されているが、用語「マシン」は、本明細書に述べられる手順のうちのいずれか1つまたは複数を行う命令624を個別にまたは共同で実行するマシンのどんな集まりでも含むとも受け取られるべきである。 The machine executes (continuously or otherwise) instructions 1024 that specify actions to be taken by the server computer, client computer, personal computer (PC), tablet PC, smartphone, network router, or the machine. It could be any other machine that can. Further, although only a single machine is illustrated, the term "machine" refers to the machines that individually or jointly execute instructions 624 to perform any one or more of the procedures described herein. It should also be taken to include any gathering.

例示的なコンピューターシステム600は、1つまたは複数の処理ユニット(一般に、1つまたは複数のプロセッサー602)を含む。プロセッサー602は、例えば、中央処理装置(CPU)、GPU(graphics processing unit)、デジタル信号プロセッサー(DSP)、コントローラー、ステートマシン、1つまたは複数の特定用途向け集積回路(ASIC)、1つまたは複数のRFIC(radio-frequency integrated circuit)、またはこれらのいずれかの組み合わせである。プロセッサー602へのどんな参照でも、単一のプロセッサーまたは複数のプロセッサーを引用することがある。さらに、コンピューターシステム600は、メインメモリー604も含む。コンピューターシステムは、ストレージユニット616を含むことがある。プロセッサー602、メモリー604、およびストレージユニット616は、バス608を介して通信する。 The exemplary computer system 600 includes one or more processing units, typically one or more processors 602. The processor 602 may be, for example, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), a controller, a state machine, one or more application specific integrated circuits (ASICs), one or more radio-frequency integrated circuits (RFICs), or any combination thereof. Any reference to a processor 602 may refer to a single processor or multiple processors. Additionally, the computer system 600 also includes a main memory 604. The computer system may include a storage unit 616. The processor 602, the memory 604, and the storage unit 616 communicate via a bus 608.

さらに、コンピューターシステム600は、スタティックメモリー606、ディスプレイドライバー610(例えば、プラズマディスプレイパネル(PDP)、液晶ディスプレイ(LCD)、またはプロジェクタを駆動するために)を含むことが可能である。さらに、コンピューターシステム600は、英数字入力デバイス612(例えば、キーボード)、カーソル制御デバイス614(例えば、マウス、トラックボール、ジョイスティック、モーションセンサー、タッチスクリーン、または他のポインティング機器)、信号生成デバイス618(例えば、スピーカー)、およびネットワークインターフェースデバイス620も含むことがあり、さらにこれらはバス608を介して通信するようにも構成される。さらに、コンピューターシステム600は、たとえば、マイク、カメラ、気圧計、ジャイロスコープ、加速度計など、他の入力デバイス/センサーを含むこともある。 Additionally, computer system 600 can include static memory 606 and a display driver 610 (eg, to drive a plasma display panel (PDP), liquid crystal display (LCD), or projector). Additionally, computer system 600 may include alphanumeric input devices 612 (e.g., a keyboard), cursor control devices 614 (e.g., a mouse, trackball, joystick, motion sensor, touch screen, or other pointing device), signal generation devices 618 (e.g., mouse, trackball, joystick, motion sensor, touch screen, or other pointing device), For example, a speaker), and a network interface device 620 may also be included, which are also configured to communicate via bus 608 . Additionally, computer system 600 may include other input devices/sensors, such as, for example, a microphone, camera, barometer, gyroscope, accelerometer, and the like.

ストレージユニット616は、本明細書に説明される手順または機能のうちのいずれか1つまたは複数を具象化する命令624(例えば、ソフトウェア)を格納されるマシン読取り可能媒体622を含む。さらに、命令624は、コンピューターシステム600による実行中に、完全にまたは少なくとも部分的に、メインメモリー604内にまたはプロセッサー602内に(例えば、プロセッサーのキャッシュメモリ内に)常駐することもあり、さらに、メインメモリー604およびプロセッサー602は、マシン読取り可能媒体も構成する。命令624は、ネットワークインターフェースデバイス620を介して、ネットワーク130によって送信されるまたは受信されることがある。 Storage unit 616 includes machine-readable media 622 having stored thereon instructions 624 (eg, software) that implement any one or more of the procedures or functions described herein. Further, instructions 624 may reside wholly or at least partially within main memory 604 or within processor 602 (e.g., within a cache memory of the processor) during execution by computer system 600; Main memory 604 and processor 602 also constitute machine-readable media. Instructions 624 may be sent or received by network 130 via network interface device 620.

マシン読取り可能媒体622は、例示的な態様では単一の媒体であるように示されるが、用語「マシン読取り可能媒体」は、命令624を格納することができる単一の媒体または複数の媒体(例えば、集中データベースもしくは分散データベース、または関連するキャッシュおよびサーバー)を含むことを受け取られるだろう。さらに、用語「マシン読取り可能媒体」は、マシンによる実行のための命令624を格納する性能があり、マシンに、本明細書に開示された手順のいずれか1つまたは複数を行わせるどんな媒体でも含むことも受け取られるべきである。用語「マシン読取り可能媒体」は、限定されないが、ソリッドステートメモリー、光学媒体、および磁気媒体のかたちにおいてデータリポジトリを含む。 Although machine-readable medium 622 is depicted as being a single medium in the exemplary aspect, the term "machine-readable medium" refers to a single medium or multiple mediums that can store instructions 624. for example, a centralized or distributed database, or associated caches and servers). Additionally, the term "machine-readable medium" refers to any medium capable of storing instructions 624 for execution by a machine that causes the machine to perform any one or more of the procedures disclosed herein. Inclusion should also be accepted. The term "machine-readable medium" includes, but is not limited to, data repositories in the form of solid state memory, optical media, and magnetic media.

追加の考慮事項
態様の前述の説明は、例示の目的のために与えられ、包括的であること、または開示された正確なかたちに対して特許権を限定することを意図しない。関連当業者は、多くの変更および変形が、上記の開示を考慮して可能であることを理解することが可能である。
ADDITIONAL CONSIDERATIONS The foregoing description of aspects is given for purposes of illustration and is not intended to be exhaustive or to limit patent rights to the precise form disclosed. Those of relevant skill in the art will appreciate that many modifications and variations are possible in light of the above disclosure.

今述べた説明のいくつかの部分は、情報の動作のアルゴリズムおよび記号表現に関して態様を説明する。通例、今述べたアルゴリズムの説明および表現は、効果的に他の当業者に研究内容を伝達するデータ処理技術の当業者によって用いられる。今述べた動作は、機能的に、計算的に、または論理的に説明される一方、コンピュータープログラムにまたは同等の電気回路、マイクロコード等によって実装されることが理解される。その上さらに、動作の今述べた配置をモジュールと呼ぶことは、一般性を損なうことなく、ときどき便利であることが示されている。説明した動作および関連モジュールは、ソフトウェア、ファームウェア、ハードウェア、またはどんなそれらの組み合わせにでも、具象化されることがある。 Some portions of the description just described describe aspects in terms of algorithms and symbolic representations of operations on information. The algorithmic descriptions and representations just described are commonly used by those skilled in the data processing arts to effectively convey the substance of their work to others skilled in the art. It is understood that while the operations just described may be described functionally, computationally, or logically, they may be implemented in a computer program or equivalent electrical circuitry, microcode, or the like. Furthermore, it has proven convenient at times, without loss of generality, to refer to the just described arrangement of operations as modules. The described operations and related modules may be implemented in software, firmware, hardware, or any combination thereof.

本書に説明されたステップ、動作、または処理のいずれも、1つまたは複数のハードウェアまたはソフトウェアモジュールにより、単独にてまたは他のデバイスとの組み合わせにて、行われるまたは実装されることがある。一態様では、ソフトウェアモジュールは、説明したステップ、動作、または処理のいずれかまたはすべてを行うために、コンピュータープロセッサーによって実行されることが可能であるコンピュータープログラムコードを含むコンピューター読取り可能媒体を含むコンピュータープログラム製品により実装される。 Any of the steps, acts, or processes described herein may be performed or implemented by one or more hardware or software modules, alone or in combination with other devices. In one aspect, a software module is a computer program product that includes a computer readable medium that includes computer program code that is capable of being executed by a computer processor to perform any or all of the steps, acts, or processes described. Implemented by the product.

さらに、態様は、本明細書の動作を行うための装置に関することもある。今述べた装置は、必要とされる目的に対して特別に構築されることがある、および/または、コンピューターに格納されたコンピュータープログラムによって選択的にアクティベートされるもしくは再構成される汎用コンピューティングデバイスを含むことがある。コンピュータープログラムは、コンピュータシステムバスに結合される、非一時的な有形のコンピューター読取り可能媒体に、または、電子命令を記憶するのに適したどんなタイプの媒体にも、格納されることがある。その上さらに、本明細書にて言及されるどんなコンピューティングシステムでも、単一のプロセッサーを含むことがある、またはコンピューティング能力を高めるために複数のプロセッサー設計を利用するアーキテクチャであり得る。 Additionally, aspects may relate to an apparatus for performing the operations herein. The apparatus just described may be specially constructed for the purpose required and/or may be a general purpose computing device that may be selectively activated or reconfigured by a computer program stored in the computer. may include. A computer program may be stored on a non-transitory, tangible computer-readable medium that is coupled to a computer system bus or on any type of medium suitable for storing electronic instructions. Furthermore, any computing system referred to herein may include a single processor or may be an architecture that utilizes multiple processor designs to increase computing power.

さらに、態様は、本明細書に説明されたコンピューター処理によって生成される製品に関することもある。製品は、コンピューター処理に起因する情報を含むことがあり、ただし、情報は、非一時的な有形の非一時的なコンピューター読取り可能記録媒体に格納され、本明細書に説明されるコンピュータープログラム製品または他のデータの組み合わせのどんな態様でも含むことがある。 Additionally, embodiments may relate to products generated by the computer processes described herein. The product may include information resulting from computer processing, provided that the information is stored on a non-transitory, tangible, non-transitory computer-readable storage medium and is not a computer program product or a computer program product as described herein. It may also include any aspect of other data combinations.

本明細書に用いられている、「一態様」または「ある態様」へのどんな言及でも、態様に関連して説明される特定の要素、特徴、構造、または特性が、少なくとも1つの態様に含まれることを意味する。本明細書の種々の場所における語句「一態様では」の出現は、同一の態様にすべて言及しているとは限らない。同様に、要素またはコンポーネントの前の「a」または「an」の使用は、単に便利なようになされる。今述べた説明は、そうは意味されないことが明白でない限り、1つまたは複数の要素またはコンポーネントが存在していることを意味することが理解されるべきだろう。 As used herein, any reference to "an aspect" or "an aspect" refers to the fact that the particular element, feature, structure, or property described in connection with the aspect is included in at least one aspect. means to be The appearances of the phrase "in one aspect" in various places in this specification are not necessarily all referring to the same aspect. Similarly, the use of "a" or "an" before an element or component is merely for convenience. It should be understood that the descriptions just set forth imply that one or more elements or components are present, unless it is clear that this is not meant to be the case.

値が「おおよその」または「実質的に」(または、それらの派生語)として記述される場合、上記の値は、別の意味が文脈から明らかでない限り、正確な±10%として構築されるべきだろう。例えば、「およそ10」は、「9から11の範囲にある」ことを意味することを理解されるべきだろう。 When values are described as "approximately" or "substantially" (or derivatives thereof), the above values should be constructed as accurate ±10%, unless a different meaning is clear from the context. For example, "approximately 10" should be understood to mean "in the range of 9 to 11."

本明細書に用いられている、用語「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」またはどんな変形でも、非排他的な包含に及ぶよう意図される。例えば、要素のリスト含む処理、方法、物品、または装置は、必ずしもそれらの要素のみに限定されず、明白にリストアップされない他の要素、または上記の処理、方法、物品、または装置に固有の他の要素を含むことがある。さらに、明白に反対のことが述べられない限り、「または」は、包括的な「または」に言及し、排他的な「または」に言及しない。例えば、条件AまたはBは、次の、Aが真である(または存在する)かつBが偽である(または存在しない)、Aが偽である(または存在しない)かつBが真である(または存在する)、ならびに、AおよびBの両方が真である(または存在する)、のうちのいずれか1つによって満たされる。 As used herein, the terms "comprise", "comprising", "include", "include", "having", "having" or any variation thereof are non-exclusive inclusive. is intended to extend to. For example, a process, method, article, or apparatus that includes a list of elements is not necessarily limited to only those elements, and may include other elements not explicitly listed or that are unique to the process, method, article, or apparatus described above. It may contain elements of Further, unless expressly stated to the contrary, "or" refers to an inclusive or and not to an exclusive or. For example, a condition A or B is such that A is true (or exists) and B is false (or does not exist), A is false (or does not exist) and B is true ( or exists), and both A and B are true (or exist).

本開示を読むとすぐに、当業者は、説明された技法およびアプローチを利用するのに用いられることがある、さらに追加の代替の構造設計および機能設計を理解するだろう。ゆえに、特定の態様および適用が例示され説明された一方、説明された主題は、開示された厳密な構造およびコンポーネントに限定されないことが理解されることである。保護の範囲は、次の特許請求の範囲によってのみ制限されるべきだろう。 Upon reading this disclosure, those skilled in the art will appreciate still additional alternative structural and functional designs that may be used to utilize the described techniques and approaches. Thus, while particular aspects and applications have been illustrated and described, it is to be understood that the described subject matter is not limited to the precise structures and components disclosed. The scope of protection shall be limited only by the following claims.

最後に、原則として、明細書に用いられた言葉は、読みやすさと教育の目的とのために選択され、特許権の境界を明示する、または境界を定めるために選択されていないことがある。それゆえ、特許権の範囲は、本詳細な説明によって限定されず、むしろ、本明細書に基づく出願に得られる特許請求の範囲によって限定されることが意図される。したがって、態様の開示は、次の特許請求の範囲に記載される特許権の範囲の例証であることを意図され、限定していない。 Finally, as a general rule, the language used in the specification may be chosen for readability and educational purposes and not to clarify or delimit the boundaries of patent rights. It is therefore intended that the scope of patent rights be limited not by this detailed description, but rather by the claims appended hereto. Therefore, the disclosure of the embodiments is intended to be illustrative of, and not limiting, the scope of the patent rights set forth in the following claims.

Claims (19)

ジオロケーションデータを検索するための方法であって、
ジオロケーションを示す要求を受信することと、
前記ジオロケーションに基づいて地理的なリージョンを識別することと、
地理的なリージョンに関してジオロケーションデータを格納するデータベースの複数のデータベースシャードのうちのデータベースシャードを識別することであって、前記識別されたデータベースシャードの各々は、前記地理的なリージョンに対応するジオロケーションデータを含む、ことと、
記識別されたデータベースシャードに並列に問い合わせることであって、各並列な問い合わせは、前記地理的なリージョンに対応するジオロケーションデータに関してデータベースシャードに問い合わせ、データベースシャードに問い合わせる各並列な問い合わせは、しきい値を超えない応答時間を有する、ことと、
前記要求に応答して前記問い合わせの結果を戻すことと
を備えることを特徴とする方法。
A method for searching geolocation data, the method comprising:
receiving a request indicating a geolocation;
identifying a geographic region based on the geolocation;
identifying a database shard of a plurality of database shards of a database storing geolocation data with respect to a geographic region , each of the identified database shards storing geolocation data corresponding to the geographic region; including data ; and
querying the identified database shards in parallel , each parallel query querying the database shard for geolocation data corresponding to the geographic region, each parallel query querying the database shard comprising : having a response time that does not exceed a threshold ;
and returning results of the query in response to the request.
オーバーフロー条件に従って、前記複数のデータベースシャードのうちのデータベースシャード内に格納されたジオロケーションデータを評価することであって、前記データベースシャードの問い合わせに対する応答時間を示す前記オーバーフロー条件は、望ましくない、ことと、
前記評価に基づいて、前記データベースシャード内に格納された前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することと、
前記オーバーフロー条件が満たされると決定することに応答して、前記地理的なリージョンに対応する前記複数のデータベースシャードに新しいデータベースシャードを追加することと、
格納に対して、前記地理的なリージョンに関連付けられた追加のジオロケーションデータを受信することに応答して、前記新しいデータベースシャードに前記追加のジオロケーションデータを格納することと
をさらに備えることを特徴とする請求項1に記載の方法。
evaluating geolocation data stored in a database shard of the plurality of database shards according to an overflow condition, the overflow condition indicating a response time of the database shard to a query is undesirable; ,
determining that the geolocation data stored in the database shard satisfies the overflow condition based on the evaluation ;
adding a new database shard to the plurality of database shards corresponding to the geographic region in response to determining that the overflow condition is met;
The storing further comprises, in response to receiving additional geolocation data associated with the geographic region, storing the additional geolocation data in the new database shard. The method according to claim 1, wherein:
前記オーバーフロー条件は、前記データベースシャード内に格納されるジオロケーションデータのしきい値メモリーサイズ、前記データベースシャード内に格納されるデータベースレコードのしきい値数、または前記データベースシャードの問い合わせに対するしきい値問い合わせ応答時間のうちの1つまたは複数を含むことを特徴とする請求項に記載の方法。 3. The method of claim 2, wherein the overflow condition comprises one or more of a threshold memory size of geolocation data stored in the database shard, a threshold number of database records stored in the database shard, or a threshold query response time for a query of the database shard . 前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することに応答して、前記地理的なリージョンに対応するデータベースシャードの数が増加したことを示す、前記データベースシャードに関連付けられたフラグを設定すること
をさらに備えることを特徴とする請求項に記載の方法。
in response to determining that the geolocation data satisfies the overflow condition, setting a flag associated with the database shard indicating that the number of database shards corresponding to the geographic region has increased; 3. The method of claim 2 , further comprising:
前記要求は、前記地理的なリージョンのサイズを示すセルレベルを含み、前記地理的なリージョンを識別することは、
前記地理的なリージョンに対応する地理的なセルに対して、前記ジオロケーションおよび前記セルレベルを用いて地理的なセルのインデックスを問い合わせること
を含むことを特徴とする請求項1に記載の方法。
The request includes a cell level indicating the size of the geographic region, and identifying the geographic region includes:
The method of claim 1, comprising: querying a geographic cell corresponding to the geographic region for a geographic cell index using the geolocation and the cell level.
前記地理的なセルは、セル識別子とデータベースシャードの数とに関連付けられ、前記識別された複数のデータベースシャードに並列に問い合わせることは、
前記識別された複数のデータベースシャードの各々に対して、
前記地理的なセルに対する前記セル識別子と、前記地理的なセルに関連付けられたデータベースシャードの前記数とに基づいて、前記データベースシャードに対して一意的なキーを決定することと、
前記一意的なキーに対応する前記データベースシャードを格納するデータベースノードを決定することと、
前記一意的なキーに対応する前記データベースシャードに含まれるジオロケーションデータに対して、前記データベースノードに問い合わせることと
を含むことを特徴とする請求項に記載の方法。
The geographic cell is associated with a cell identifier and a number of database shards, and querying the identified plurality of database shards in parallel comprises :
For each of the identified plurality of database shards,
determining a unique key for the database shard based on the cell identifier for the geographic cell and the number of database shards associated with the geographic cell;
determining a database node that stores the database shard corresponding to the unique key;
6. The method of claim 5 , comprising: querying the database node for geolocation data contained in the database shard corresponding to the unique key.
前記一意的なキーに対応する前記データベースシャードを格納する前記データベースノードを決定することは
前記一意的なキー、前記データベースノードのスロットの最大数をハッシュ関数に適用することによって、スロット番号を生成することと、
前記スロット番号に関連付けられたデータベーススロットが前記データベースノードに格納されることを示すデータベースマッピングと、前記スロット番号を比較することと
を含むことを特徴とする請求項に記載の方法。
Determining the database node storing the database shard corresponding to the unique key comprises:
generating a slot number by applying the unique key and a maximum number of slots of the database node to a hash function;
7. The method of claim 6 , comprising: comparing the slot number with a database mapping indicating that a database slot associated with the slot number is stored in the database node.
前記ジオロケーションデータは、前記地理的なリージョン内のロケーションに関連付けられた1つまたは複数の仮想要素を含むことを特徴とする請求項1に記載の方法。 The method of claim 1, wherein the geolocation data includes one or more virtual elements associated with locations within the geographic region. 前記1つまたは複数の仮想要素は、クライアントデバイスにおけるパラレルリアリティゲームアプリケーションの仮想世界と関連付けられることを特徴とする請求項に記載の方法。 9. The method of claim 8 , wherein the one or more virtual elements are associated with a virtual world of a parallel reality gaming application on a client device. 前記1つまたは複数の仮想要素は、前記クライアントデバイスの前記地理的な位置のしきい値距離内のロケーションと関連付けられることを特徴とする請求項9に記載の方法。10. The method of claim 9, wherein the one or more virtual elements are associated with a location within a threshold distance of the geographic location of the client device. コンピューターのプロセッサーによって実行されると、前記プロセッサーに、
ジオロケーションを示す要求を受信することと、
前記ジオロケーションに基づいて地理的なリージョンを識別することと、
地理的なリージョンに関してジオロケーションデータを格納するデータベースの複数のデータベースシャードのうちのデータベースシャードを識別することであって、前記識別されたデータベースシャードの各々は、前記地理的なリージョンに対応するジオロケーションデータを含む、ことと、
記識別されたデータベースシャードに並列に問い合わせることであって、各並列な問い合わせは、前記地理的なリージョンに対応するジオロケーションデータに関してデータベースシャードに問い合わせ、データベースシャードに問い合わせる各並列な問い合わせは、しきい値を超えない応答時間を有する、ことと、
前記要求に応答して前記問い合わせの結果を戻すことと
を含む動作を行わせる命令を含むことを特徴とする非一時的なコンピューター読取り可能記録媒体。
When executed by a computer's processor, said processor:
receiving a request indicating a geolocation;
identifying a geographic region based on the geolocation;
identifying a database shard of a plurality of database shards of a database storing geolocation data with respect to a geographic region , each of the identified database shards storing geolocation data corresponding to the geographic region; including data ; and
querying the identified database shards in parallel , each parallel query querying the database shard for geolocation data corresponding to the geographic region, each parallel query querying the database shard comprising : having a response time that does not exceed a threshold ;
and returning a result of the query in response to the request.
前記命令は、前記プロセッサーに、
オーバーフロー条件に従って、前記複数のデータベースシャードのうちのデータベースシャード内に格納されたジオロケーションデータを評価することであって、前記データベースシャードの問い合わせに対する応答時間を示す前記オーバーフロー条件は、望ましくない、ことと、
前記評価に基づいて、前記データベースシャード内に格納された前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することと、
前記オーバーフロー条件が満たされると決定することに応答して、前記地理的なリージョンに対応する前記複数のデータベースシャードに新しいデータベースシャードを追加することと、
格納に対して、前記地理的なリージョンに関連付けられた追加のジオロケーションデータを受信することに応答して、前記新しいデータベースシャードに前記追加のジオロケーションデータを格納することと
を含む動作をさらに行わせることを特徴とする請求項11に記載のコンピューター読取り可能記録媒体。
The instructions cause the processor to:
evaluating geolocation data stored in a database shard of the plurality of database shards according to an overflow condition, the overflow condition indicating a response time of the database shard to a query is undesirable; ,
determining that the geolocation data stored in the database shard satisfies the overflow condition based on the evaluation ;
adding a new database shard to the plurality of database shards corresponding to the geographic region in response to determining that the overflow condition is met;
and, in response to receiving additional geolocation data associated with the geographic region, storing the additional geolocation data in the new database shard. 12. The computer-readable recording medium according to claim 11 .
前記オーバーフロー条件は、前記データベースシャード内に格納されるジオロケーションデータのしきい値メモリーサイズ、前記データベースシャード内に格納されるデータベースレコードのしきい値数、または前記データベースシャードの問い合わせに対するしきい値問い合わせ応答時間のうちの1つまたは複数を含むことを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。 The overflow condition may include a threshold memory size of geolocation data stored in the database shard, a threshold number of database records stored in the database shard, or a threshold query for a query of the database shard. 13. The computer-readable medium of claim 12 , comprising one or more of response times. 前記命令は、前記プロセッサーに、
前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することに応答して、前記地理的なリージョンに対応するデータベースシャードの数が増加したことを示す、前記データベースシャードに関連付けられたフラグを設定すること
を含む動作をさらに行わせることを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。
The instructions cause the processor to:
in response to determining that the geolocation data satisfies the overflow condition, setting a flag associated with the database shard indicating that the number of database shards corresponding to the geographic region has increased; The computer-readable recording medium according to claim 12 , further comprising the following operations.
前記要求は、前記地理的なリージョンのサイズを示すセルレベルを含み、前記地理的なリージョンを識別することは、
前記地理的なリージョンに対応する地理的なセルに対して、前記ジオロケーションおよび前記セルレベルを用いて地理的なセルのインデックスを問い合わせること
を含むことを特徴とする請求項11に記載のコンピューター読取り可能記録媒体。
The request includes a cell level indicating a size of the geographic region, and identifying the geographic region includes:
12. The computer-readable medium of claim 11 , further comprising: querying a geographic cell index using the geolocation and the cell level for a geographic cell corresponding to the geographic region.
前記地理的なセルは、セル識別子とデータベースシャードの数とに関連付けられ、前記識別された複数のデータベースシャードに並列に問い合わせることは、
前記識別された複数のデータベースシャードの各々に対して、
前記地理的なセルに対する前記セル識別子と、前記地理的なセルに関連付けられたデータベースシャードの前記数とに基づいて、前記データベースシャードに対して一意的なキーを決定することと、
前記一意的なキーに対応する前記データベースシャードを格納するデータベースノードを決定することと、
前記一意的なキーに対応する前記データベースシャードに含まれるジオロケーションデータに対して、前記データベースノードに問い合わせることと
を含むことを特徴とする請求項15に記載のコンピューター読取り可能記録媒体。
The geographic cell is associated with a cell identifier and a number of database shards, and querying the identified plurality of database shards in parallel includes :
For each of the identified plurality of database shards,
determining a unique key for the database shard based on the cell identifier for the geographic cell and the number of database shards associated with the geographic cell;
determining a database node that stores the database shard corresponding to the unique key; and
and querying the database node for geolocation data contained in the database shard that corresponds to the unique key.
前記一意的なキーに対応する前記データベースシャードを格納する前記データベースノードを決定することは
前記一意的なキー、前記データベースノードのスロットの最大数をハッシュ関数に適用することによって、スロット番号を生成することと、
前記スロット番号に関連付けられたデータベーススロットが前記データベースノードに格納されることを示すデータベースマッピングと、前記スロット番号を比較することと
を含むことを特徴とする請求項16に記載のコンピューター読取り可能記録媒体。
Determining the database node that stores the database shard corresponding to the unique key includes:
generating a slot number by applying a hash function to the unique key and a maximum number of slots for the database node ;
17. The computer-readable medium of claim 16 , further comprising: comparing the slot number with a database mapping indicating that a database slot associated with the slot number is stored in the database node.
前記ジオロケーションデータは、前記地理的なリージョン内のロケーションに関連付けられた1つまたは複数の仮想要素を含むことを特徴とする請求項11に記載のコンピューター読取り可能記録媒体。12. The computer-readable medium of claim 11, wherein the geolocation data includes one or more virtual elements associated with locations within the geographic region. 前記1つまたは複数の仮想要素は、クライアントデバイスにおけるパラレルリアリティゲームアプリケーションの仮想世界と関連付けられることを特徴とする請求項18に記載のコンピューター読取り可能記録媒体。The computer-readable medium of claim 18, wherein the one or more virtual elements are associated with a virtual world of a parallel reality gaming application on a client device.
JP2022538067A 2019-12-20 2020-12-18 Sharded storage for geolocation data with predictable query response times Active JP7458485B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2024042326A JP2024088654A (en) 2019-12-20 2024-03-18 Sharded storage of geolocation data with predictable query response times

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962952140P 2019-12-20 2019-12-20
US62/952,140 2019-12-20
PCT/IB2020/062239 WO2021124287A1 (en) 2019-12-20 2020-12-18 Sharded storage of geolocated data with predictable query response times

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2024042326A Division JP2024088654A (en) 2019-12-20 2024-03-18 Sharded storage of geolocation data with predictable query response times

Publications (2)

Publication Number Publication Date
JP2023507499A JP2023507499A (en) 2023-02-22
JP7458485B2 true JP7458485B2 (en) 2024-03-29

Family

ID=76438462

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2022538067A Active JP7458485B2 (en) 2019-12-20 2020-12-18 Sharded storage for geolocation data with predictable query response times
JP2024042326A Pending JP2024088654A (en) 2019-12-20 2024-03-18 Sharded storage of geolocation data with predictable query response times

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2024042326A Pending JP2024088654A (en) 2019-12-20 2024-03-18 Sharded storage of geolocation data with predictable query response times

Country Status (9)

Country Link
US (2) US11687530B2 (en)
EP (1) EP4076691A4 (en)
JP (2) JP7458485B2 (en)
KR (1) KR20220114076A (en)
CN (1) CN115175747A (en)
AU (1) AU2020407633A1 (en)
CA (1) CA3165438A1 (en)
TW (2) TWI813413B (en)
WO (1) WO2021124287A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11504632B1 (en) * 2019-12-12 2022-11-22 Amazon Technologies, Inc. Dynamic adjustment of shard count for player matchmaking

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276692A1 (en) 2010-05-10 2011-11-10 Apple Inc. Server load balancing using geodata
US20120054217A1 (en) 2010-08-24 2012-03-01 International Business Machines Corporation Virtual world query response system
US20130073581A1 (en) 2011-09-15 2013-03-21 Thomas E. Sandholm Geographically partitioned onlne search system
WO2013180355A1 (en) 2012-05-30 2013-12-05 모다정보통신 주식회사 Method for providing m2m overlay network, and system, server, and gateway for same
WO2015192117A1 (en) 2014-06-14 2015-12-17 Magic Leap, Inc. Methods and systems for creating virtual and augmented reality
JP2016512620A (en) 2013-03-30 2016-04-28 ツィンファ ユニバーシティ Method and server for specifying geographical location of IP using location data of portable terminal
JP2018060212A (en) 2013-11-27 2018-04-12 マジック リープ, インコーポレイテッドMagic Leap,Inc. Virtual and augmented reality system and method
US20190121902A1 (en) 2017-10-25 2019-04-25 International Business Machines Corporation Database Sharding

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8447757B1 (en) * 2009-08-27 2013-05-21 A9.Com, Inc. Latency reduction techniques for partitioned processing
US10997211B2 (en) * 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
US8550909B2 (en) * 2011-06-10 2013-10-08 Microsoft Corporation Geographic data acquisition by user motivation
US9128789B1 (en) * 2012-07-31 2015-09-08 Google Inc. Executing cross-cutting concerns for client-server remote procedure calls
US9274863B1 (en) * 2013-03-20 2016-03-01 Google Inc. Latency reduction in distributed computing systems
CN105100150B (en) * 2014-05-13 2020-03-31 中兴通讯股份有限公司 Cloud desktop migration method and device and distributed cloud desktop system
US9875272B1 (en) 2015-06-23 2018-01-23 Google Inc. Method and system for designing a database system for high event rate, while maintaining predictable query performance
US10027748B2 (en) * 2015-07-10 2018-07-17 Facebook, Inc. Data replication in a tree based server architecture
US10331710B2 (en) 2015-10-01 2019-06-25 Microsoft Technology Licensing, Llc Partitioning of geographic data
SG11201805281YA (en) * 2016-03-04 2018-07-30 Google Llc Resource allocation for computer processing
US11496588B2 (en) * 2016-06-21 2022-11-08 Micro Focus Llc Clustering layers in multi-node clusters
CN106178506A (en) * 2016-07-09 2016-12-07 杨跃龙 A kind of parallel real border game interactive point corresponding with terrestrial reference arranges framework

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276692A1 (en) 2010-05-10 2011-11-10 Apple Inc. Server load balancing using geodata
US20120054217A1 (en) 2010-08-24 2012-03-01 International Business Machines Corporation Virtual world query response system
US20130073581A1 (en) 2011-09-15 2013-03-21 Thomas E. Sandholm Geographically partitioned onlne search system
WO2013180355A1 (en) 2012-05-30 2013-12-05 모다정보통신 주식회사 Method for providing m2m overlay network, and system, server, and gateway for same
JP2016512620A (en) 2013-03-30 2016-04-28 ツィンファ ユニバーシティ Method and server for specifying geographical location of IP using location data of portable terminal
JP2018060212A (en) 2013-11-27 2018-04-12 マジック リープ, インコーポレイテッドMagic Leap,Inc. Virtual and augmented reality system and method
WO2015192117A1 (en) 2014-06-14 2015-12-17 Magic Leap, Inc. Methods and systems for creating virtual and augmented reality
US20190121902A1 (en) 2017-10-25 2019-04-25 International Business Machines Corporation Database Sharding

Also Published As

Publication number Publication date
JP2024088654A (en) 2024-07-02
TW202247009A (en) 2022-12-01
AU2020407633A1 (en) 2022-08-11
TWI813413B (en) 2023-08-21
CN115175747A (en) 2022-10-11
EP4076691A4 (en) 2023-06-14
US20210191940A1 (en) 2021-06-24
KR20220114076A (en) 2022-08-17
TWI777334B (en) 2022-09-11
US11687530B2 (en) 2023-06-27
EP4076691A1 (en) 2022-10-26
WO2021124287A1 (en) 2021-06-24
TW202131204A (en) 2021-08-16
US20230359618A1 (en) 2023-11-09
JP2023507499A (en) 2023-02-22
CA3165438A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
JP6905154B2 (en) Verification of player's real-world position using in-game activities
US9723107B1 (en) Executing cross-cutting concerns for client-server remote procedure calls
US10471358B1 (en) Regulating and scoring player interactions within a virtual world associated with a location-based parallel reality game
US10130888B1 (en) Game data validation
JP2024088654A (en) Sharded storage of geolocation data with predictable query response times
TWI804257B (en) Method, non-transitory computer-readable storage medium, and computer system for multi-user route tracking in an augmented reality environment
JP2022153228A (en) Travel of virtual character
US20220351518A1 (en) Repeatability predictions of interest points
US20230271088A1 (en) Anonymizing User Location Data in a Location-Based Application
US11007429B2 (en) Background process for importing real-world activity data into a location-based game
US20210228988A1 (en) Background process for importing real-world activity data into a location-based game
US20230016152A1 (en) Reducing latency in anticheat dataflow
US20240033631A1 (en) Maintaining object alignment in 3d map segments

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230815

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231114

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: 20240116

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240318

R150 Certificate of patent or registration of utility model

Ref document number: 7458485

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150