Sharded storage of geolocation data with predictable query response times
A sharded storage system with geographic indexing and deterministic hashing maintains predictable query response times in parallel reality games by limiting data per shard and dynamically expanding storage, addressing the challenge of increased data density.
Patent Information
- Application Number
- JP2024042326
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-12-20
- Filing Date
- 2024-03-18
- Publication Date
- 2025-12-23
- Estimated Expiration
- 2040-12-18
AI Technical Summary
Traditional database storage systems experience increased query response times as the density of virtual elements and data in parallel reality games grows, exceeding the acceptable limit for real-time interactions.
Implement a sharded storage system using geographic indexing, such as the S2 library, to distribute data across shards, applying deterministic hashing for even distribution and maintaining predictable query response times by limiting data per shard and dynamically expanding shards when necessary.
Ensures consistent and predictable query response times in parallel reality games by managing data distribution across shards, maintaining performance as data volume increases.
Smart Images

Figure 0007791232000001 
Figure 0007791232000002 
Figure 0007791232000003
Abstract
Description
[Technical Field]
[0001] The present disclosure relates generally to data storage, and more particularly to sharded storage of any number of geolocated items with predictable query response times. [Background technology]
[0002] Parallel reality games that offer a shared virtual world that is parallel to at least a portion of the real world can host a variety of interactions that can captivate a community of players. Providing a virtual world with a terrain that is parallel to at least a portion of the real world allows players to navigate the virtual world by navigating the real world. Linking virtual elements in the virtual environment to real-world objects, locations, and activities can encourage players to navigate and notice real-world features that players would normally ignore. Providing virtual elements in virtual world locations that are identical to their real-world counterparts may increase the impression that the virtual elements are a hidden part of the real world.
[0003] When playing a parallel reality game, a player's client device typically receives data corresponding to virtual elements near the player. 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, this results in an increase in query response time. However, as parallel reality games may be oriented toward real-time interaction between players and the virtual world, there is an upper limit to acceptable response time. Therefore, as the data stored for a geographic region increases, there is a need for an efficient storage approach that provides predictable query response times. Summary of the Invention
[0004] These and other problems may be addressed by systems and methods for allowing any number of items to be indexed in geographic regions across a sharded database (e.g., using a geographic indexing framework, such as the S2 library, etc.) that provide predictable query response times. In various embodiments, items indexed in a geographic region are stored in a single shard, and additional items are added to that shard unless an overflow condition indicating undesirable query response times is met (e.g., the query response time remains below a desired threshold). If an overflow condition is met, the system expands storage of items indexed in the geographic region to one or more shards to maintain predictable query response times. The system may maintain a shard count that represents the total number of shards used to store items corresponding to the geographic region, which can be used to query (e.g., in parallel) one or more related shards. The system may apply deterministic hashing to evenly distribute shards across the database nodes of the sharded database (e.g., virtual or physical database servers, etc.). Rather than storing a list of all database nodes on which an item for a geographic region is stored, a database client may determine the database node on which each shard corresponding to a geographic region is stored based on the shard count. This allows for the storage of many items over a large geographic area while providing predictable response times when querying a single shard or multiple shards in parallel, for example.
[0005] In one aspect, a system receives a request indicating a geolocation. Based on the geolocation, the system identifies a geographic region. Based on the geographic region, the system identifies a database shard among a plurality of database shards of a database, the plurality of database shards corresponding to the geographic region. The system queries the identified database shard for geolocated data corresponding to the geographic region, where queries of the database shard have a predictable response time. Based on the queried geolocation data, the system processes the query results. The system returns the query results in response to the request. [Brief explanation of the drawings]
[0006] [Figure 1] FIG. 1 is a block diagram of a networked computing environment in which gaming data for any number of geo-located items may be stored with predictable query response times according to one aspect. [Figure 2] FIG. 1 illustrates a representation of a virtual world having a terrain that is parallel to the real world, according to one embodiment. [Figure 3] FIG. 1 illustrates an exemplary game interface for a parallel reality game according to one aspect. [Figure 4] FIG. 2 is a block diagram of the game database shown in FIG. 1 according to one embodiment. [Figure 5] 1 is a flowchart of a method for providing gaming data for any number of geo-located items with predictable query times according to one aspect. [Figure 6] FIG. 2 is a block diagram illustrating an example computer suitable for use in the networked computing environment of FIG. 1 according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0007] A game server can host a parallel reality game having a player gaming area that includes a virtual world with a terrain that is parallel to at least a portion of the terrain of the real world. A player can navigate a range of coordinates that define a virtual space in the virtual world by navigating a range of geographic coordinates in the real world. In particular, a player's location can 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 a network to the game server hosting the parallel reality game and used by the game to update the player's location in the virtual world. As a result, as a player with a client device continuously moves around in a range of coordinates in the real world, the game server may update the player to continuously move around in a range of coordinates in the parallel virtual world.
[0008] A virtual world can include one or more virtual elements linked to points of interest in the real world. By way of example, a virtual world can include various virtual elements associated with points of interest, such as landmarks, museums, art works, libraries, or other areas of interest in the real world. The virtual elements linked to real-world points of interest can create the illusion that the virtual world is a hidden dimension of the real world with which a player can interact by playing a parallel reality game. By way of example, as a player navigates geographic coordinates in the real world, the player can discover and interact with virtual elements provided in the parallel virtual world. Various game objectives can encourage players to interact with the just-mentioned virtual elements as part of the parallel reality game. In some aspects, a game server may orchestrate virtual events in a parallel reality game around real-world points of interest.
[0009] A virtual world may be partitioned into portions (e.g., 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 cell hierarchy that partitions the Earth, a three-dimensional object, into a set of two-dimensional cells at different levels of granularity. In other cases, a different geographic indexing framework may be used. Portions of the virtual world may be used to index various geolocation data associated with the corresponding geographic region for storage, such as information associated with the virtual elements described above. 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, virtual elements may correspond to points of interest in the real world, and new virtual elements may be added as the system learns new points of interest (e.g., due to submissions by point-of-interest owners or administrators, through crowdsourcing, or using any other suitable technique). Similarly, as new information associated with a virtual element (e.g., new photos, videos, historical information, etc.) is acquired, it may be bound to and stored with the virtual element. Thus, the amount of data corresponding to a portion of the virtual world may grow over time.
[0010] Using conventional approaches, as the amount of data increases, the query response time for identifying 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 in a given shard according to an overflow condition that indicates undesirable query response times. A shard count value for each portion may be stored and can be used to identify a shard or shards that contain data for the given portion of the virtual world. A deterministic hashing approach is used to identify a shard or shards that contain data for the given portion of the virtual world, and the shards are queried (e.g., in parallel) for relevant data. Thus, query response times are predictable regardless of the amount of data stored for a given portion of the virtual world because the amount of data in any one shard does not exceed a threshold.
[0011] While the described aspects relate to accessing geolocation data for parallel reality games, those skilled in the art will recognize that the same or similar techniques may be used with geolocation data for other purposes. For example, a tourist 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.
[0012] Exemplary Location-Based Parallel Reality Gaming System A parallel reality game is a location-based game with a virtual world geography that is parallel to at least a portion of the real-world geography, such that a player's movements and activities in the real world affect and are affected by activities in the virtual world. Using the disclosure provided herein, those skilled in the art will understand that the described subject matter is applicable in other situations where it is desirable to verify a user's location. Furthermore, those skilled in the art will appreciate that the flexibility inherent in computer-based systems allows for a wide 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 over a computer network).
[0013] FIG. 1 illustrates one embodiment of a networked computing environment 100 in which a player's real-world location may be matched based on activity in a parallel reality game. The networked computing environment 100 provides for player interaction in a virtual world having a geography that is parallel to the real world. In particular, geographic regions in the real world may be directly linked or mapped to corresponding regions in the virtual world. A player may move around in the virtual world by moving relative to various geographic locations in the real world. By way of example, a player's position in the real world may be tracked and used to update the player's position in the virtual world. Typically, a player's position in the real world is determined by locating the client device 120 from which the player is interacting with the virtual world and assuming the player is in the same (or nearly the same) location. For example, in various embodiments, a player may interact with a virtual element if the player's location in the real world is within a threshold distance (e.g., 10 meters, 20 meters, etc.) of a real-world location that corresponds to the virtual location of the virtual element in the virtual world. For convenience, various aspects are described with respect to the "location of the player," although those skilled in the art will understand that the above references may refer to the location of the player's client device 120.
[0014] Reference is now made to FIG. 2, which depicts a conceptual diagram of a virtual world 210, parallel to a real world 200, that can act as a game board for a player of a parallel reality game according to one embodiment. The illustrated virtual world 210 can include a terrain that is parallel to the terrain of the real world 200. In particular, a range of coordinates defining a geographic region or space in the real world 200 is mapped to a corresponding range of coordinates that defines a virtual space in the virtual world 210. A range of coordinates in the real world 200 can be associated with a town, block, city, campus, site, country, continent, the entire Earth, or other geographic region. Each geographic coordinate within the range of geographic coordinates is mapped to a corresponding coordinate in a virtual space in the virtual world.
[0015] The player's location in virtual world 210 corresponds to the player's location in real world 200. As an example, player A, who is located at location 212 in real world 200, has a corresponding location 222 in virtual world 210. Similarly, player B, who is located at location 214 in the real world, has a corresponding location 224 in the virtual world. As players move around in a range of geographic coordinates in the real world, they also move around in a range of coordinates that define a virtual space in virtual world 210. In particular, a positioning system (e.g., a GPS system) associated with a mobile computing device carried by a player can be used to track the player's location as the player moves through a range of geographic coordinates in the real world. Data associated with the player's location in real world 200 is used to update the player's location in the corresponding range of coordinates that define a virtual space in virtual world 210. In this way, a player can navigate continuous tracking in a range of coordinates defining a virtual space in virtual world 210 by simply moving between corresponding ranges of geographic coordinates in real world 200, without checking in to a specific discrete location in real world 200 or periodically updating location information at a specific discrete location in real world 200.
[0016] Location-based games can include multiple game objectives that require players to travel to and / or interact with various virtual elements and / or objects scattered throughout various virtual locations in a virtual world. A player can travel to the virtual locations by traveling to the corresponding locations of the virtual elements or objects in the real world. By way of example, a positioning system can continuously track a player's position as the player progresses through the real world and also as the player progresses through a parallel virtual world. A player can then interact with the various virtual elements and / or objects at a particular location to accomplish or achieve one or more game objectives.
[0017] For example, an objective of the game may require the player to capture or claim ownership of virtual elements 230 at various virtual locations in the virtual world 210. The virtual elements 230 may be linked to landmarks, geographic locations, or objects 240 in the real world 200. The real-world landmarks or objects 240 may be works of art, monuments, buildings, businesses, libraries, museums, or other suitable real-world landmarks or objects. To capture the virtual elements 230, the player must travel to the landmark or geographic location 240 linked to the virtual elements 230 in the real world and perform any necessary interactions with the virtual elements 230 in the virtual world 210. For example, Player A in FIG. 2 may have to travel to a landmark 240 in the real world 200 to interact with or capture the virtual elements 230 linked to that particular landmark 240. Interaction with the virtual element 230 may involve real-world activities, such as, for example, taking a photograph and / or verifying, obtaining, or capturing other information about a landmark or object 240 associated with the virtual element 230. In some aspects, interaction with the virtual element 230 may further facilitate verifying that the player's location in the real world 200 matches the player's location in the virtual world 210.
[0018] A game objective may require a player to use one or more virtual items collected by the player in a location-based game. By way of example, a 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 in completing a game objective. The 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 , a player uses a virtual item 232 to capture one or more virtual elements 230. In particular, a 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, placing 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.
[0019] In one particular implementation, a player may be required to accumulate virtual energy as part of a parallel reality game. The virtual energy 250 depicted in FIG. 2 may be scattered at different locations in the virtual world 210. The player may collect the virtual energy 250 by traveling to the corresponding location of the virtual energy 250 in the real world 200. The virtual energy 250 may be used to power virtual items and / or to accomplish various game objectives in the game. A player who loses all of their virtual energy 250 may be disconnected from the game.
[0020] 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 divided into distinct teams or factions and 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 inherently be a social game that encourages cooperation among players within the game. Players can be from opposing teams and work against each other during the parallel reality game (or sometimes work together to achieve each other's objectives). Players can use virtual items to attack or impede the progress of players on opposing teams. Sometimes, players are encouraged to meet at real-world locations for cooperative or interactive events in the parallel reality game. In this case, the game server attempts to ensure that players are truly physically present and not impersonating others.
[0021] Parallel reality games can have various features that enhance and encourage gameplay within the parallel reality game. For example, players can accumulate virtual currency or other virtual rewards that can be used throughout the game (e.g., to purchase in-game items). Players can progress through various levels as they complete one or more game objectives within the game and gain in-game experience. In some embodiments, players can communicate with each other via one or more communication interfaces provided within the game. Additionally, players can acquire 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 parallel reality games without departing from the scope of the present disclosure.
[0022] FIG. 3 illustrates one embodiment of a game interface 300 that may be provided on the display of a client 120 as part of an interface between a player and a 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 locations of virtual elements 230, virtual items 232, and virtual energy 250 in the virtual world 210. Additionally, the user interface 300 may display other information, such as game data information, game communications, player information, client location verification 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 a parallel reality game.
[0023] According to aspects of the present disclosure, a player can interact with a parallel reality game by simply moving a client device 120 around in the real world. By way of example, a player can play the game by simply accessing an application associated with the 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 to play a location-based game. As a result, the user interface 300 can include multiple non-visual elements that enable a user to interact with the game. By way of example, the game interface can provide audible notifications 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. A player can control these audible notifications through audio control 340. Different types of audible notifications can be provided to the user depending on the type of virtual element or virtual event. The audible notifications can increase or decrease in frequency or volume depending on the player's proximity to a virtual element or object. Other non-visual notifications or signals may be provided to the user, such as, for example, a vibration notification or other suitable notification or signal.
[0024] Using the disclosure provided herein, one skilled in the art will appreciate that numerous game interface configurations and basic functionality will become apparent in light of the present disclosure, which is not intended to be limited to any one particular configuration.
[0025] 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 can be 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 device. In short, client 120 can be any computer device or system that enables a player to interact with gaming system 100.
[0026] Client 120 may include one or more processors and one or more computer-readable media. The computer-readable media may store instructions that cause the processor to perform operations. Client 120 may include various input / output devices for providing and receiving information from a player, such as, for example, a display screen, a touchscreen, a touchpad, data entry keys, a speaker, a camera, and / or a microphone suitable for voice recognition. Additionally, client 120 may include various other sensors for recording 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. Client 120 may further include a network interface for providing communication over network 130. The network interface may include any suitable components for interfacing with one or more networks, including, for example, a transmitter, a receiver, a port, a controller, an antenna, or other suitable components.
[0027] Because network computing environment 100 provides location-based gaming, clients 120 are preferably portable computing devices that players can easily carry or otherwise transport, such as, for example, smartphones or tablets. 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, clients 120 may include different or additional elements, such as, for example, a display (either as a component of client 120 or external to client 120), various input devices (e.g., a touchscreen, a mouse, a stylus, etc.), etc.
[0028] The gaming module 122 provides an interface for players to participate in the parallel reality game. The game server 110 transmits game data to the clients 120 over the network 130 for use by the gaming modules 122 of the clients 120 to provide local versions of the game to players at locations remote from the game server 110. The server 110 may include a network interface for providing communications over the network 130. The network interface may include any suitable components for interfacing with one or more networks, including, for example, a transmitter, a receiver, a port, a controller, an antenna, or other suitable components.
[0029] The gaming module 122 executed by the client 120 provides an interface between the player and the parallel reality game. The gaming module 122 may present a user interface on a display device associated with the client 120 that displays a virtual world associated with the game (e.g., renders images of the virtual world) and allows the user to interact with the virtual world and accomplish various game objectives. Additionally, the gaming module 122 may control various other outputs that allow the player to interact with the game without needing to see a display screen. For example, the gaming module 122 may control various sounds, vibrations, or other notifications that allow the player to play the game without seeing a display screen. The gaming module 122 may access game data received from the game server 110 to provide the user with an accurate representation of the game. The gaming module 122 may receive and process player input and provide updates to the game server 110 over the network 130.
[0030] The positioning module 124 can be any device or circuitry for monitoring the position of the client 120. For example, the positioning module 124 can determine the actual or relative position using a satellite navigation positioning system (e.g., a GPS system, a Galileo positioning system, a Global Navigation satellite system (GLONASS), a BeiDou satellite navigation and positioning system), an inertial navigation system, a dead reckoning system, 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 may further include various other sensors that may assist in accurately determining the location of the client 120.
[0031] As a player moves around in the real world with the client 120, the positioning module 124 tracks the player's location and provides the player's location information to the gaming module 122. The 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 carrying or transporting the client 120 in the real world. In particular, a player's location in the virtual world can be matched with the player's location in the real world. The gaming module 122 can provide the player's location information to the game server 110 over the network 130 so that the universal game module 112 keeps track of all players' locations throughout the game. It should be understood that location information associated with a player is used only if permission is granted, after the player has been notified that their location information will be accessed and how the location information will be used in the context of the game (e.g., to update the player's location in the virtual world). Additionally, any location information associated with a player will be stored and managed in a manner that protects the player's privacy.
[0032] The networked computing environment 100 employs a client-server architecture in which a game server 110 communicates with one or more clients 120 over a network 130 to provide a parallel reality game to players at the clients 120. Additionally, the networked computing environment 100 may include other external systems, such as, for example, 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 the game server 110 over the network 130. Furthermore, the networked computing environment 100 may include different or additional elements and functionality that may be distributed between the clients 120 and the server 110 in a manner different from that described below.
[0033] The game server 110 may be any computing device and may include one or more processors and one or more computer-readable media. The computer-readable media may store instructions that cause the processor to perform operations. The game server 110 may include or be in communication with a game database 115. The game database 115 stores game data used in the parallel reality game that is served or provided to the client(s) 120 over the network 130.
[0034] The game data stored in the game database 115 may include: (1) data associated with the virtual world in the parallel reality game (e.g., image data used to render the virtual world on a display device, geographic coordinates of locations in the virtual world, etc.); (2) data associated with the player of the parallel reality game (e.g., player profile including, but not limited to, player information, player experience level, player currency, current player location in the virtual world / real world, player energy level, player preferences, team information, faction information, etc.); (3) data associated with the objective of the game (e.g., data associated with current game objective, game objective state, past game objective, future game objective, desired game objective, etc.); and (4) data associated with virtual elements in the virtual world. (4) game data (e.g., location of virtual elements, type of virtual elements, game objectives associated with virtual elements, real-world location information corresponding to virtual elements, virtual element behavior, virtual element relevance, etc.), (5) data associated with real-world objects, landmarks, and locations linked to virtual world elements (e.g., location of real-world objects / landmarks, descriptions of real-world objects / landmarks, relevance of virtual elements linked to real-world objects, etc.), (6) game state (e.g., current number of players, current state of game objectives, player leaderboard, etc.), (7) data associated with player activities / inputs (e.g., current player positions, past player positions, player movements, player inputs, player queries, player communications, etc.), and (8) other data used, related to, or obtained during implementation of the parallel reality game. The game data stored in the game database 115 can be populated either offline or in real time by a system administrator and / or by data received from users / players of the system 100, such as from one or more clients 120 via the network 130.
[0035] Game server 110 may be configured to receive requests for game data from one or more clients 120 (e.g., via remote procedure calls (RPCs)) and respond to those requests over network 130. By way of example, game server 110 may encode game data into one or more data files and provide the data files to clients 120. Additionally, game server 110 may be configured to receive game data (e.g., player positions, player activities, player inputs, etc.) from one or more clients 120 over network 130. By way of example, clients 120 may be configured to periodically send player inputs and other updates to game server 110, which game server 110 uses to update game data in game database 115 to reflect any and all changed circumstances for the game.
[0036] In the embodiment shown, server 110 includes a universal game module 112, a commercial game feature 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 embodiments of query module 119 and game database 115 are described in more detail below with respect to FIG. 4. In other embodiments, game server 110 includes different and / or additional elements. Furthermore, functionality may be distributed among the elements differently than described. By way of example, game database 115 may be integrated into game server 110.
[0037] The universal game module 112 hosts the parallel reality game for all players and acts as the authoritative source for the current state of the parallel reality game for all players. The universal game module 112 receives game data (e.g., player input, player location, player activity, landmark information, etc.) from the client devices 120 and incorporates the received game data into the overall parallel reality game for all players in the parallel reality game. Additionally, the universal game module 112 may manage the distribution of game data to the clients 120 over the network 130. Additionally, the universal game module 112 may manage security aspects of the clients 120, including, but not limited to, securing connections between the clients 120 and the game server 110, establishing connections between various clients 120, and verifying the locations of various clients 120.
[0038] The commercial game feature module 114, in embodiments where one is included, can be separate from or part of the universal game module 112. The commercial game feature module 114 can manage the inclusion of various game features within the parallel reality game that are linked to commercial activity in the real world. By way of example, the commercial game feature module 114 can receive a request from an external system, such as a sponsor / advertiser, business, or other entity over the network 130 (via a network interface), to include a game feature linked to a commercial activity in the parallel reality game. The commercial game feature module 114 can then arrange for the inclusion of the just-mentioned game feature in the parallel reality game.
[0039] The game server 110 may further include a data collection module 116. In embodiments where one is included, the data collection module 116 may be separate from or part of the universal game module 112. The 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. By way of example, the data collection module 116 may modify the game data stored in the game database 115 to include game features linked to data collection activities in the parallel reality game. Additionally, the data collection module 116 may analyze data collected by players in response to data collection activities and provide the data for access by various platforms.
[0040] The event module 118 manages player access to events in a parallel reality game. While the term "event" is used for convenience, it should be understood that the term does not necessarily refer to a specific event at a specific location or time. Rather, it may refer to any supply of access-controlled game content, where one or more access criteria are used to determine whether a player may access the game content. Such content may be part of a larger parallel reality game that includes game content with less or no access control, or may be a standalone access-controlled parallel reality game.
[0041] 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., the gaming module 122 of the 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, which indicate undesirable response times for queries of data stored at the nodes, and by extension, for queries of the shards. The overflow condition 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 starts 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 case just mentioned, 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.
[0042] 1 , the query module 119 generates queries for geolocation data in response to requests received from the client device 120 based on the location of the client device 120. The queries may retrieve, update, or otherwise manipulate the geolocation data. Furthermore, the query module 119 provides a query response to the client device 120 based on processing the queried geolocation data, such as a query response including the requested geolocation data. In one aspect, the query module 119 receives a location (e.g., a GPS location generated by the positioning module 124) from the client 120 and identifies one or more portions of the virtual world of interest based on the location, such as by querying a geographic cell index for a cell that represents a portion of the virtual world corresponding to a geographic region that includes the location. For example, if S2 cells are used, the query module may identify S2 cells at a specified level (e.g., level 12) in which the client 120 is located, any S2 cells at a specified level (e.g., level 16) at least a portion of which are within a specified radius (e.g., 2 kilometers) of the location, any S2 cells at a specified level that are entirely 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 travel).
[0043] Each S2 cell has a cell ID. In addition, the query module 119 also stores a shard number indicating the number of shards containing data for the cell. The query module 119 uses the cell ID and shard number to generate a unique key for each shard containing data for the cell. One unique key or multiple 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, and 7686-2. Any suitable combination method of generating unique keys may be used, such as concatenation.
[0044] The query module 119 determines the node of the distributed database 115 where each shard having the relevant data is located based on the unique key. In some aspects, the query module 119 applies a deterministic hashing technique that converts the unique key to a slot number. As an example, the database 115 may have a maximum number of slots (e.g., 16565), and the query module 119 may apply a modular hashing technique to the unique key using the maximum number of slots to generate a slot number (e.g., a slot number that is the modulo maximum of the unique key). In other aspects, other deterministic hashing techniques may be used to convert the unique key to a slot number.
[0045] The query module 119 stores a mapping indicating which node 410 in the database 115 stores each slot. Based on the mapping, the query module 119 generates parallel queries to each of the indicated nodes 410 for the cell data. Each of the parallel queries has a predictable response time, and by extension the entire set of parallel queries has a predictable response time due to the 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. The query module 119 aggregates (e.g., concatenates) the results from each query and provides them to requesting clients 120.
[0046] Network 130 can be any type of communications 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 client 120 and game server 110. In general, communication between game server 110 and client 120 can occur over 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).
[0047] The technology described herein refers to operations taken by and information sent to and from servers, databases, software applications, and other computer-based systems as well. Those skilled in the art will recognize 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. By way of example, the server processes described herein may be implemented using a single server or multiple servers working in cooperation. Unless otherwise stated, databases and applications may be implemented on a single system or distributed across multiple systems. Similarly, distributed components may operate sequentially or in parallel.
[0048] Furthermore, in situations where the systems and methods described herein access and analyze personal information about a user or use personal information, such as location information, the user may be provided with the opportunity to control whether the program or feature collects the information and whether and / or how they receive content from the system or other applications. No such information is collected or used unless the user is provided meaningful notice of what information will be collected and how it will be used. Information will not be collected or used unless the user provides consent, which can 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 an application or system. Furthermore, some information or data may be treated in one or more ways before being stored or used so that personally identifiable information is removed. For example, the user's identity may be treated so that no personally identifiable information can be determined about the user.
[0049] Exemplary Methods 5 illustrates an example method 500 for providing geolocation data containing any number of items with predictable query response times. The steps of FIG. 5 are illustrated from the perspective of the query module 119 performing the method 500. However, some or all of the steps may be performed by other entities and / or components. Additionally, some aspects may perform steps in parallel, perform steps in a different order, or perform different steps.
[0050] 5, method 500 begins with query module 119 receiving a request indicating a geolocation (e.g., GPS coordinates of client 120). The aforementioned request 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 the geolocation. For example, the aforementioned geographic regions may be S2 cells for a particular level within a predetermined distance from the location.
[0051] The query module 119 identifies one or more database shards of the database, where the one or more database shards each correspond to a respective geographic region of the one or more geographic regions 530. The aforementioned shards 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 550 the query results using the queried geolocation data and returns 560 the query results as a response to the received request. For example, if the query module 119 queries multiple shards in parallel, the query module 119 may aggregate the query results from each of the parallel queries (e.g., geolocation data retrieved from each of the respective shards) into a total query result and provide the total query result in response to the received request.
[0052] 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 in a processor (or controller). Specifically, FIG. 6 shows a diagrammatic representation of a machine in the exemplary form of a computer system 600. The computer system 600 can be used to execute instructions 624 (e.g., program code or software) to cause the 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 (e.g., networked) devices to provide the described functionality. The machine may operate in the capacity of a server or a client in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
[0053] The machine may be a server computer, a client computer, a personal computer (PC), a tablet PC, a smartphone, a network router, or any other machine capable of executing (serially or otherwise) instructions 1024 that specify actions to be taken by the machine. Additionally, although only a single machine is illustrated, the term "machine" should also be taken to include any collection of machines that individually or collectively execute instructions 624 to perform any one or more of the procedures described herein.
[0054] 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, memory 604, and storage unit 616 communicate via a bus 608.
[0055] Additionally, computer system 600 may include static memory 606, a display driver 610 (e.g., to drive a plasma display panel (PDP), a liquid crystal display (LCD), or a projector). Additionally, computer system 600 may also include an alphanumeric input device 612 (e.g., a keyboard), a cursor control device 614 (e.g., a mouse, trackball, joystick, motion sensor, touch screen, or other pointing device), a signal generating device 618 (e.g., a speaker), and a network interface device 620, which are also configured to communicate via bus 608. Additionally, computer system 600 may also include other input devices / sensors, such as, for example, a microphone, a camera, a barometer, a gyroscope, an accelerometer, etc.
[0056] Storage unit 616 includes machine-readable medium 622 having stored thereon instructions 624 (e.g., software) that embody any one or more of the procedures or functions described herein. Further, instructions 624 may reside, completely or at least partially, within main memory 604 or within processor 602 (e.g., within a processor's cache memory) during execution by computer system 600; further, main memory 604 and processor 602 also constitute machine-readable media. Instructions 624 may be transmitted or received over network 130 via network interface device 620.
[0057] While machine-readable medium 622 is shown in the exemplary embodiment to be a single medium, the term "machine-readable medium" will be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) capable of storing instructions 624. Furthermore, the term "machine-readable medium" should also be taken to include any medium capable of storing instructions 624 for execution by a machine, causing the machine to perform any one or more of the procedures disclosed herein. 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.
[0058] Additional Considerations The foregoing description of the embodiments has been provided for purposes of illustration and is not intended to be exhaustive or to limit the patent rights to the precise form disclosed. Those skilled in the relevant art will recognize that many modifications and variations are possible in light of the above disclosure.
[0059] Some portions of the present description describe aspects in terms of algorithms and symbolic representations of operations of information. These algorithmic descriptions and representations are typically used by those skilled in the data processing arts to effectively convey the substance of their work to others skilled in the art. While the presently described operations are described functionally, computationally, or logically, it will be understood that they may be implemented in computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has proven convenient at times, without loss of generality, to refer to the presently described arrangements of operations as modules. The described operations and associated modules may be embodied in software, firmware, hardware, or any combination thereof.
[0060] Any of the steps, operations, 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, the software modules are implemented by a computer program product that includes a computer-readable medium containing computer program code that can be executed by a computer processor to perform any or all of the described steps, operations, or processes.
[0061] Additionally, aspects may relate to apparatus for performing the operations herein. The presently described apparatus may be specially constructed for the required purposes and / or may include general-purpose computing devices selectively activated or reconfigured by a computer program stored in a computer. The computer program may be stored on a non-transitory, tangible, computer-readable medium 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 utilizing a multiple processor design to increase computing power.
[0062] Additionally, aspects may relate to products produced by the computer processes described herein. The products may include information resulting from the computer processes, where the information is stored on a non-transitory, tangible, non-transitory computer-readable storage medium and may include any aspect of the computer program product or other data combination described herein.
[0063] As used herein, any reference to "one embodiment" or "an embodiment" means that a particular element, feature, structure, or characteristic described in connection with an embodiment is included in at least one embodiment. The appearances of the phrase "in one embodiment" in various places in this specification are not necessarily all referring to the same embodiment. Similarly, the use of "a" or "an" before an element or component is done merely as a matter of convenience. It should be understood that the present description means that there are one or more elements or components present, unless it is clear that this is not intended.
[0064] When values are described as "approximately" or "substantially" (or their derivatives), the above values should be constructed as accurate to ±10%, unless another meaning is clear from the context. For example, "approximately 10" should be understood to mean "in the range of 9 to 11."
[0065] As used herein, the terms "comprises," "comprising," "includes," "including," "has," "having," or any variations thereof are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus comprising a list of elements is not necessarily limited to only those elements and may include other elements not expressly listed or inherent in the process, method, article, or apparatus. Furthermore, unless expressly stated to the contrary, "or" refers to an inclusive "or," not an exclusive "or." For example, condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or absent), A is false (or absent) and B is true (or present), and both A and B are true (or present).
[0066] Upon reading this disclosure, those skilled in the art will recognize still further alternative structural and functional designs that may be used to utilize the described techniques and approaches. Thus, while particular embodiments 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.
[0067] Finally, as a general rule, the language used in the specification has been selected for ease of reading and educational purposes, and may not be selected to clearly delineate or delimit the boundaries of patent rights. Accordingly, the scope of patent rights is not intended to be limited by this detailed description, but rather by the claims that may be obtained in an application based thereon. Accordingly, the disclosure of embodiments is intended to be illustrative, not limiting, of the scope of patent rights set forth in the following claims. [Explanation of symbols]
[0068] 200 Real World 210 Virtual World 212 positions 214 position 222 positions 224 positions 230 Virtual Elements 232 Virtual Items 250 Virtual Energy 310 Display Window 315 Player Information 320 Menu 330 Communication Interface 340 Voice Control 500 ways 600 Computer Systems 602 processor 604 main memory 606 Static Memory 608 Bus 610 Display Driver 612 Alphanumeric Input Device 614 Cursor Control Device 616 Storage Unit 618 Signal Generating Device 620 Network Interface Device 622 Possible medium 624 Command
Claims
1. receiving a request from a client device for geolocation data corresponding to a geographic region; identifying a plurality of database shards containing geolocation data corresponding to the geographic region, the plurality of database shards being identified from a set of database shards storing geolocation data for the geographic region, the identified plurality of database shards each storing an amount of data due to an overflow condition indicative of undesirable query response times; querying the identified plurality of database shards in parallel for geolocation data corresponding to the geographic region, the parallel queries having query response times that are less than the undesirable query response times due to the overflow condition of the identified plurality of database shards; receiving query results for the parallel queries; sending results of the query to the client device; 10. A computer-implemented method comprising:
2. 2. The method of claim 1, wherein identifying the plurality of database shards containing geolocation data corresponding to the geographic region comprises referencing a shard count value representing a total number of database shards used to store geolocation data corresponding to the geographic region.
3. 3. The method of claim 2, wherein identifying the plurality of database shards is based on the shard count value.
4. 10. The method of claim 1, wherein the plurality of database shards are identified using a deterministic hashing technique.
5. 5. The method of claim 4, wherein the deterministic hashing technique is a modular hashing technique.
6. Assigning a cell ID and a shard number to a first database shard of the set of database shards; generating a unique key for the first database shard based on the cell ID and the shard number; applying a deterministic hashing technique to convert the unique key into a slot number; storing a mapping indicating a node in a shard database that stores the slot number; The method of claim 1 further comprising:
7. 10. The method of claim 1, wherein the set of database shards storing geolocation data for a geographic region are evenly distributed across database nodes of a sharded database.
8. The method of claim 1 , wherein the geolocation data includes one or more virtual elements associated with locations within the geographic region.
9. 10. 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 the client device.
10. When executed by a processor, the processor: receiving a request from a client device for geolocation data corresponding to a geographic region; identifying a plurality of database shards containing geolocation data corresponding to the geographic region, the plurality of database shards being identified from a set of database shards storing geolocation data for the geographic region, the identified plurality of database shards each storing an amount of data due to an overflow condition indicative of undesirable query response times; querying the identified plurality of database shards in parallel for geolocation data corresponding to the geographic region, the parallel queries having query response times that are less than the undesirable query response times due to the overflow condition of the identified plurality of database shards; receiving query results for the parallel queries; sending results of the query to the client device; A non-transitory computer-readable storage medium comprising instructions for performing operations including:
11. 11. The non-transitory computer-readable storage medium of claim 10, wherein identifying the plurality of database shards containing geolocation data corresponding to the geographic region comprises referencing a shard count value representing a total number of database shards used to store geolocation data corresponding to the geographic region.
12. 12. The non-transitory computer-readable medium of claim 11, wherein identifying the plurality of database shards is based on the shard count value.
13. 11. The non-transitory computer-readable medium of claim 10, wherein the plurality of database shards are identified using a deterministic hashing technique.
14. 14. The non-transitory computer-readable medium of claim 13, wherein the deterministic hashing technique is a modular hashing technique.
15. The operation is assigning a cell ID and a shard number to a first database shard of the set of database shards; generating a unique key for the first database shard based on the cell ID and the shard number; applying a deterministic hashing technique to convert the unique key into a slot number; storing a mapping indicating a node in a shard database that stores the slot number; 11. The non-transitory computer-readable storage medium of claim 10, further comprising:
16. 11. The non-transitory computer-readable storage medium of claim 10, wherein the set of database shards storing geolocation data for a geographic region are evenly distributed across database nodes of a sharded database.
17. The non-transitory computer-readable medium of claim 10, wherein the geolocation data includes one or more virtual elements associated with locations within the geographic region.
Citation Information
Patent Citations
Server load balancing using geodata
US20110276692A1
Virtual world query response system
US20120054217A1
Geographically partitioned onlne search system
US20130073581A1
Partitioning of geographic data
US20170097942A1
Systems and methods for database zone sharding and API integration
US20180300385A1