Region division based on player density for region chat
By clustering player locations into centroid areas and adjusting chat room placements using iterative k-means clustering and boundary refinement, the game server optimizes chat room distribution in location-based games, enhancing player interaction and connectivity.
Patent Information
- Application Number
- JP2023111405
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-11-06
- Filing Date
- 2023-07-06
- Publication Date
- 2026-01-30
- Estimated Expiration
- 2040-10-29
AI Technical Summary
In location-based parallel reality games, players often find that chat rooms do not effectively connect with nearby players when moving to new locations, leading to disconnection from immediate virtual experiences and players in the real world.
A game server determines chat room locations by clustering player locations into centroid areas, adjusting for player density, and dispersing chat rooms to balance player interaction, using iterative k-means clustering and boundary refinement to ensure even distribution and natural groupings.
This approach enhances player connectivity by ensuring chat rooms are strategically located near high-density player areas, improving interaction and reducing frustration from overcrowded or underutilized chat rooms.
Smart Images

Figure 0007809087000001 
Figure 0007809087000002 
Figure 0007809087000003
Abstract
Description
[Technical Field]
[0001] FIELD OF THE DISCLOSURE The present disclosure relates generally to location-based gaming, and more particularly to determining chat room locations in such games. [Background technology]
[0002] Location-based games use the real world as their geography. Parallel reality games are a type of location-based game that uses a virtual world that is parallel to the real-world geography. Players can interact and accomplish various game objectives in the parallel virtual world by moving and performing activities in the real world. To communicate within a parallel reality game, players may converse in chat rooms located throughout the virtual world. For example, players may join one chat room to communicate with other players during a raid. However, if a player travels to a new location in the real world and participates in another virtual experience with a different group of players, the original chat room located near the raid will not connect with other players in the immediate vicinity in the real world who may be using other chat rooms. Furthermore, even if a player travels only a short distance away from the original chat room, the immediate virtual experience and players may differ from those in the player's original location. Summary of the Invention
[0003] In location-based parallel reality games, players navigate the virtual world through the real world using location-aware client devices, such as smartphones. As players navigate the virtual world or interact with virtual elements participating in the virtual experience, they may chat with each other via chat rooms strategically located within the virtual world. These chat rooms may be located regionally in the virtual world, such that they are located near geographic locations with a high observed density of player locations. Additionally, chat rooms may be located near points of interest within the parallel reality game, such as virtual elements or virtual experiences.
[0004] Many client devices used by players in a parallel reality game may include positioning devices that track player location information as the players move throughout the real world and simultaneously play the parallel reality game. In various embodiments, the client devices send the player location information to a server hosting the parallel reality game. The game server determines the location of the chat room based on the player location information.
[0005] In one aspect, the game server determines chat room locations for a geographic region by iteratively clustering player locations within the geographic region into centroid areas and adjusting the clusters to more evenly average the number of players associated with each centroid area while also further dispersing chat rooms in a manner that takes into account natural groupings of players in the real world. Once the chat room locations are determined, the game server may select chat rooms for individual users based on their current location in the game and provide messages from the chat rooms to the users.
[0006] The foregoing, as well as other features, aspects, and advantages, may be better understood with regard to the following description and the appended claims. The accompanying drawings are illustrations of certain embodiments and, together with the description, serve to explain various principles. However, the drawings should not be considered limiting. Rather, the scope of protection should be determined from the claims. [Brief explanation of the drawings]
[0007] [Figure 1] FIG. 1 is a block diagram illustrating a networked computing environment suitable for operating a location-based game according to one aspect. [Figure 2] FIG. 2 is a block diagram of a client device shown in FIG. 1 according to one embodiment. [Figure 3] FIG. 2 is a block diagram of the game server shown in FIG. 1 according to one embodiment. [Figure 4A] 10 is an example of player locations grouped into aggregation points within a geographic region that are used to further determine a centroid according to one embodiment. [Figure 4B] 10 is an example of player locations grouped into aggregation points within a geographic region that are used to further determine a centroid according to one embodiment. [Figure 5A] 1A-1C illustrate centroids at various stages of a process for determining chat room locations according to one aspect. [Figure 5B] 1A-1C illustrate centroids at various stages of a process for determining chat room locations according to one aspect. [Figure 5C] 1A-1C illustrate centroids at various stages of a process for determining chat room locations according to one aspect. [Figure 6] 1 is an example of a chat room location with a point of interest within a geographic region according to one aspect. [Figure 7] 1 is a flowchart illustrating a method for providing messages to users from a chat room according to one aspect. [Figure 8] 1 is a flowchart illustrating a method for determining chat room location according to one aspect. [Figure 9] 1 is a flowchart illustrating a method for grouping aggregated points into centroids in a map according to one aspect. [Figure 10] FIG. 2 is a block diagram illustrating an exemplary computer suitable for use in the network computing environment of FIG. 1 according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0008] The drawings and the following description illustrate certain embodiments by way of example only. Those skilled in the art will readily appreciate from the following description that alternative embodiments of structure and method may be utilized without departing from the principles described. Reference will now be made to several embodiments, examples, illustrated in the accompanying drawings. It is noted that wherever practical, similar or like reference numerals are used in the drawings to indicate similar or like functionality. Furthermore, where similar elements are identified by a reference numeral followed by a letter, reference to a single numeral in the following description may refer to all such elements, any one of such elements, or any combination of such elements.
[0009] overview Generally, the present disclosure relates to determining chat room locations for parallel reality games that take place in virtual worlds that are mapped to real-world locations.
[0010] The game server can host a location-based parallel reality game having a player gaming area that includes a virtual environment having a geography that is parallel to at least a portion of a real-world geography. A player can navigate a virtual space in the virtual world by navigating a corresponding geographic space in the real world. In particular, 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.
[0011] In one aspect, for example, a player's location can be monitored or tracked using a positioning system (e.g., a GPS system) associated with the player's mobile computing device (e.g., a mobile phone, smartphone, gaming device, or other device). As the player moves around in the real world, player location information can be provided over a network to a game server hosting the parallel reality game. The game server can update the player's location in the parallel virtual world to correspond with the player's location in the real world.
[0012] Additionally, a parallel reality game may include one or more points of interest with which a player can interact during the progression of the parallel reality game. Points of interest may include, but are not limited to, virtual elements, virtual objects, virtual experiences, etc. Additionally, points of interest may be located in virtual locations in the real world that correspond to landmarks, stores, recreational areas, or other real-world features that may be of interest to a player. To interact with a point of interest, a player may travel to the location in the real world that corresponds to the point of interest and select the point of interest in the parallel reality game.
[0013] As players progress through and interact with the virtual world, they may communicate with one another through chat rooms located throughout the virtual world. When players join a chat room, they may send and receive messages with other players in the chat room. Chat rooms may be located at subsets of points of interest. Chat room locations according to aspects of the present disclosure may be determined based on player location data collected by game players' client devices as they progress through the virtual world. The data may be analyzed to determine chat room locations that minimize the average distance between player locations and the nearest chat room by equalizing the number of players in each chat room.
[0014] In one aspect, a game server associated with a parallel reality game may access data associated with an individual's location in the real world. The data associated with an individual's location in the real world may be obtained or derived from any suitable source. The data associated with an individual's location in the real world may include the real-world location of a mobile device associated with the individual. In particular, a user of a mobile device, such as a smartphone, may optionally provide location information to enhance certain location-based features or other functionality regarding their geographic location in the real world. Any information optionally provided by a mobile device user may be provided anonymously to protect the privacy of the user who optionally provides location information.
[0015] Additionally, data associated with an individual's location in the real world may also include data associated with a player's location in a parallel reality game. In particular, a game server may receive a snapshot of device location information at a given time from each client device of a player in a parallel reality game. The game server may analyze the snapshot to determine the individual's location in the real world and generate chat room locations based on the data. The game server may use the chat room locations for a given period of time (e.g., a day, a month, a year, etc.) and may periodically update the chat room locations with new snapshots of player device information.
[0016] Exemplary Location-Based Parallel Reality Gaming System An exemplary computer-implemented location-based gaming system according to exemplary aspects of the present disclosure will now be described. The present subject matter will be described with reference to parallel reality games. Parallel reality games are location-based games 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. Those skilled in the art should understand, using the disclosure provided herein, that the subject matter of the present disclosure is equally applicable to other gaming systems.
[0017] FIG. 1 illustrates an exemplary computer-implemented location-based gaming system 100 configured according to an embodiment. The location-based gaming system 100 provides for multi-player interaction in a virtual world having a geography that parallels the real world. In particular, geographic regions in the real world can be directly linked or mapped to corresponding regions in the virtual world. Players can navigate around the virtual world by moving relative to various geographic locations in the real world. By way of example, the system 100 can track a player's position in the real world and update the player's position in the virtual world based on the player's current position in the real world. For example, a coordinate system in the real world (e.g., longitude and latitude) may be mapped to a coordinate system in the virtual world (x / y coordinates, virtual longitude and virtual latitude, etc.).
[0018] 1, system 100 has a client-server architecture, with game server 110 communicating with one or more client devices 120 via network 130. Although three client devices 120 are illustrated in FIG. 1, any number of client devices 120 can be connected to game server 110 via network 130. In other embodiments, distributed location-based gaming system 100 includes different or additional elements. Furthermore, functionality may be distributed among elements differently than described.
[0019] The game server 110 hosts the master state of the location-based game and provides game status updates to the player's client device 120 (e.g., based on actions taken by other players in the game, changes in the real-world surroundings, changes in game state or conditions, etc.). The game server 110 receives and processes input from players in the location-based game. Players may be identified by a username or player ID (e.g., a unique number or alphanumeric string) that the player's client device 120 combines with the player's input and sends to the game server 110.
[0020] For example, the game server 110 may determine locations for chat rooms based on snapshots of device location information indicating multiple player locations in the real world. The game server 110 subdivides a geographic region of a map into cells (e.g., S-cells) and creates aggregated points weighted by the number of player locations within each cell. The game server determines centroids using a clustering algorithm (e.g., an iterative k-means clustering algorithm) and repeated boundary refinement. The game server determines chat room locations based on the centroids. Chat room locations may be points of interest in the map, such as monuments, stores, public buildings, sculptures, or other identifiable real-world locations. For each chat room established within the virtual world, the game server 110 may select players of the parallel reality game and provide messages. Various aspects of the game server 110 are described in more detail below with respect to FIG. 3.
[0021] Client device 120 is a computing device through which a player can interact with game server 100. By way of example, client device 120 can be a smartphone, portable gaming device, tablet, personal digital assistant (PDA), mobile phone, navigation system, handheld GPS system, or other device. Client device 120 may run software (e.g., a gaming application or app) to enable a player to interact with a virtual world. Additionally, client device 120 may include hardware, software, or both for providing a user interface for a chat room. Users may choose to join the chat room and send and receive messages through the user interface. Various aspects of client device 120 are described in more detail below with respect to FIG. 2.
[0022] 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, S1v1TP, FTP), encodings or formats (e.g., HTML, JSON, XML), and / or protection schemes (e.g., VPN, Secure HTTP, SSL).
[0023] 2 is a block diagram of client device 120 shown in FIG. 1 according to one embodiment. Because gaming system 100 is for location-based gaming, client device 120 is preferably a portable computing device that a player can easily carry or otherwise transport, such as a smartphone or other portable device. A player can interact with the virtual world simply by carrying or transporting client device 120 in the real world. Client device 120 may include a positioning device 210 that monitors the location of client device 120 in the real world. Positioning device 210 may be any device or circuitry for monitoring the location of client device 120. For example, the positioning device 210 may determine its actual or relative location based on 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 location.
[0024] As the player moves around with the client 120 in the real world, the positioning device 210 tracks the location of the player's client device 120 and provides the client device's location information to the game module 220. The game module 220 updates the player's location in the virtual world based on the coordinates of the player's client device 120's location in the real world. Thus, the game module 220 maintains a local state of the virtual world at the client device 120. The game module 220 can provide the player location information to the game server 110 over the network 130 so that the game server 110 maintains a global game state with updated player locations and provides periodic updates to the game module 220 so that the local game state can reflect the global game state.
[0025] The game module 220 communicates information about the virtual world with the user interface 230. The user interface 230 of the client device 120 constructs and displays components of the user interface of the client device 120. The user interface may display to the user a representation of the virtual world including components of the virtual world, such as virtual elements and virtual experiences, received from the game module 220. Additionally, the user interface 230 may display chat room locations in the virtual world, as well as messages sent between users in the chat room. Users may interact with the client device 120 to engage with virtual elements, participate in virtual experiences, or converse in chat rooms. For example, the user interface 230 may display a view of the virtual world depicting points of interest, chat rooms, and other virtual experiences. Users of the client device 120 can interact with the aforementioned components through the user interface to complete tasks, join chat rooms, or participate in raids and other activities.
[0026] Local data store 240 is one or more computer-readable media configured to store data used by client device 120. For example, local data store 240 may store player location information tracked by positioning device 210, a local copy of the current state of a parallel reality game, or any other suitable data. Although local data store 240 is shown as a single entity, the data may be distributed across multiple media. Furthermore, the data may be stored elsewhere (e.g., in a distributed database) and accessed remotely via network 130.
[0027] 3 illustrates one embodiment of a game server 110 suitable for hosting a location-based parallel-reality game. In the embodiment shown, the game server 110 includes a universal game module 310, a locator module 320, a chat room module 330, and a game database 340. In other embodiments, the game server 110 includes different or additional elements. Furthermore, functionality may be distributed among the elements differently than described.
[0028] The game server 110 may be configured to receive requests for game data from one or more client devices 120 (e.g., via remote procedure calls (RPCs)) and respond to those requests over the network 130. By way of example, the game server 110 may encode game data into one or more data files and provide the data files to the client devices 120. Additionally, the game server 110 may be configured to receive game data (e.g., player locations, player activity, player input, etc.) from one or more client devices 120 over the network 130. By way of example, the client devices 120 may be configured to periodically send player input, player locations, and other updates to the game server 110, which the game server 110 uses to update the game data in the game database 340 to reflect changed circumstances for the game. Additionally, the game server 110 may send game data for the client devices 120, such as, for example, other player locations, chat room locations, virtual element locations, etc.
[0029] The universal game module 310 hosts the location-based game for the players and acts as the authoritative source for the current state of the location-based game. The universal game module 310 receives game data (e.g., player input, player location, player activity, player state, landmark information, etc.) from the client devices 120 and incorporates the received game data into the overall location-based game for all players of the location-based game. The game data allows the universal game module 310 to store the overall game state of the game, which can be sent to the client devices 120 to update the local game state in the game module 220. Additionally, the universal game module 310 can manage the distribution of game data to the client devices 120 over the network 130.
[0030] The locator module 320 can be part of the universal game module 310 or separate from the universal game module 310. The locator module 320 is configured to access data associated with real-world activities, analyze the data, and determine virtual experiences in the virtual world based on the data associated with the real-world activities. As an example, the locator module 320 can modify game data stored in the game database 340 to provide virtual experiences in the virtual world based on the data associated with the real-world activities. As an example, a sponsor's virtual elements can be in virtual locations that correspond to real-world locations such as the sponsor's stores, restaurants, outlets, etc. A special virtual experience can become available to a player in a parallel-reality game if the player makes a purchase, enters a code that becomes available at the real-world location, or performs an activity at the real-world location that meets specified criteria.
[0031] The chat room module 330 determines chat room locations in the virtual world based on player locations. The chat room locations may correspond to points of interest in the real world. The chat room module 330 analyzes player locations collected from the client devices 120 of the universal game module 310 and identifies groups of players, each corresponding to a geographic region, using clustering and boundary refinement methods. The chat room module 330 may identify points of interest in each geographic region as chat room locations based on data about players in that region (e.g., by comparing the centroids of player locations with the locations of the points of interest, or by analyzing the frequency or amount of interactions between players located at the points of interest and virtual elements). The chat room module 330 may update the chat room locations periodically (e.g., daily, weekly, monthly, etc.) or when triggered by a provider via the game server 110. The chat room module 330 provides chat room locations to the universal game module 310, includes chat rooms in the overall game state, and provides messages between users of the chat rooms.
[0032] In various embodiments, the chat room module 330 performs iterative k-means clustering before repeated boundary adjustment to determine chat room locations. Using k-means clustering alone may result in some centroids corresponding to a larger number of players than other centroids. For example, chat rooms in high-density regions (e.g., within a city) may have a large number of players assigned to them, resulting in a crowded chat room where the conversation moves too quickly for players to easily keep up. Conversely, chat rooms in low-density regions (e.g., rural areas) may contain relatively few players, which may lead to players becoming frustrated by a lack of interaction. Boundary adjustment counteracts this by forcing the number of players associated with each chat room closer together to become even. The chat rooms may remain at their determined chat room locations in the virtual world until the game server 110 triggers the chat room module 330 to update the chat room locations (e.g., after a certain period of time has passed).
[0033] Generally, to determine chat room locations, the chat room module 330 accesses player locations relative to a geographic region (e.g., from the game database 340). Player locations may be represented as points on a map, where a map is a two-dimensional representation of the physical world. The chat room module 330 groups player locations into aggregated points on the map.
[0034] In one aspect, to group player locations, the chat room module 330 subdivides the map into a number of cells (e.g., S cells) that cover a portion of a geographic area. A cell is a geometric shape that allocates a geographic region. The size of the cell may be determined via input from the provider or based on the content or user population of the geographic region. The chat room module 330 assigns each player location to a cell in the map and creates a singular point (called an "aggregation point") for each cell, which the chat room module 330 weights by the number of player locations assigned to that particular cell. Generally, point weight increases with the number of players associated with that aggregation point. For example, an aggregation point for a cell with 20 assigned player locations may have a higher point weight than an aggregation point for a cell with only three assigned player locations. The point weight may be the number of players associated with the aggregation point (i.e., the aggregation points in the previous example would have a point weight of 20 and a point weight of 3, respectively), or some other function of the number of players. Additionally, the chat room module 330 assigns the aggregation point a location in the geographic region corresponding to the cell (e.g., the center of the cell or the middle of the player locations represented by the aggregation point), and thus the aggregation point represents one or more users located within the cell associated with the aggregation point.
[0035] The chat room module 330 uses iterative clustering at the aggregation points to determine centroids based on the distance between the centroids and the corresponding aggregation points. For convenience, this specification describes k-means clustering and uses the term "iterative k-means clustering." However, other clustering algorithms may be used.
[0036] To begin the iterative k-means clustering, the chat room module 330 randomly selects multiple locations in the geographic region to be centroids. In some embodiments, the chat room module 330 selects the number of locations using a random grid generator or k-means++ initialization. The provider may specify the number of centroids the chat room module 330 uses via the game server 110, or the chat room module 330 may determine the number of centroids to use based on the number of weighted aggregation points for the geographic region. The chat room module 330 assigns each aggregation point to the nearest centroid. The aggregation points assigned to a centroid define a centroid region. For example, a geographic region is made up of all S cells corresponding to the aggregation points assigned to a centroid. The chat room module 330 determines the average location of the aggregation points assigned to each centroid region and updates the centroid to be at the corresponding average location. The chat room location module 330 repeats the just-described process with the updated centroid until one or more completion criteria are met.
[0037] The chat room module 330 can utilize several different completion criteria for iterating with k-means clustering. In one aspect, the chat room module 330 terminates an iteration when no aggregation points move from one centroid region to another between one iteration and the next. In other aspects, the completion criteria are met when the average distance from each aggregation point to its centroid is less than a threshold or when a specified number of iterations are completed.
[0038] The chat room module 330 performs iterative boundary adjustments to refine the centroid regions determined using k-means clustering. Using the centroid regions generated from the last iteration of iterative k-means clustering, the chat room module 330 determines a cluster weight for each centroid region based on the point weights of the assigned aggregation points. In one aspect, the cluster weight for a centroid region is the cumulative number of associated players. For example, a centroid region is assigned three aggregation points and has 10, 17, and 5 associated player locations, respectively. Therefore, the cluster weight would be 32.
[0039] The chat room module 330 reallocates aggregation points among centroids to more closely average the cluster weights of the centroids. The chat room module 330 determines how to reallocate aggregation points for each iteration of the iterative boundary adjustment based on one or more conditions. In one aspect, the chat room module 330 reallocates aggregation points if a centroid pair includes a source centroid and a sink centroid, and the source centroid has a centroid area greater than a minimum size. A centroid is a source centroid if its cluster weight (representing the number of player locations associated with the centroid) is higher than the average (e.g., mean) cluster weight of all centroids, and is a sink centroid if its cluster weight is lower than the average (e.g., mean) cluster weight of all centroids. In other aspects, a centroid is a source centroid if its cluster weight is above a maximum threshold, and is a sink centroid if its cluster weight is below a minimum threshold. The just-mentioned thresholds may be set as numbers given by the provider or may be a percentage of the player population. The just-mentioned condition helps the chat room module 330 prevent moving a player from a centroid with a high cluster weight to a centroid with a low cluster weight, thereby averaging the influence of the player location on the determined chat room location. Based on the condition, the chat room module 330 determines a set of aggregation points to move between centroids, calculates the movement cost for moving the aggregation points, and moves the aggregation point with the lowest movement cost.
[0040] For each iteration of the repeated boundary adjustment, the chat room module 330 finds neighboring centroid pairs in which one centroid is the source centroid and the other centroid is the sink centroid, and the centroid areas are directly adjacent to each other in the geographic region. For each neighboring centroid pair, the chat room module 330 determines whether the source centroid is above a minimum size. The size of the source centroid may be the physical size of the corresponding area in the geographic region, the cluster weight, or a combination of both (e.g., the area and weight must both be above corresponding thresholds). In some aspects, the chat room module 330 uses only centroids with centroid areas between the minimum and maximum area sizes for the centroid pair to avoid creating chat rooms that are too close together in dense urban areas. For neighboring centroid pairs that meet the just-mentioned condition, the chat room module 330 identifies a set of aggregation points to move from the source centroid to the sink centroid of the neighboring centroid pair and calculates a movement cost for moving the set of aggregation points from the source centroid to the sink centroid.
[0041] The movement cost is a function of the increase in the average distance between each aggregation point and the source centroid if the aggregation point is reassigned to the sink centroid. For example, an aggregation point closer to the boundary between the two centroid regions for a centroid pair will have a lower movement cost than an aggregation point closer to the center of the centroid region of the source centroid. In some aspects, the movement cost is based on the point weight of the aggregation point. The chat room module 330 moves the aggregation point between the centroids of adjacent centroid pairs with the lowest movement cost, provided that the movement cost is below a threshold movement value, making one movement per iteration of the iterative boundary adjustment. In a further aspect, the chat room module 330 moves multiple sets of aggregation points per iteration.
[0042] In some embodiments, the chat room module 330 checks whether moving the set of aggregation points satisfies a travel cost threshold. The chat room module 330 determines the travel cost of the set of aggregation points, and if the travel cost is above the travel cost threshold (i.e., the average distance has increased too much), the chat room module 330 does not reallocate the set of aggregation points. Otherwise, the chat room module 330 reallocates the set of aggregation points. The travel cost threshold may be determined by the provider or may be determined in other ways based on the population of players within the geographic region.
[0043] The chat room module 330 determines a new centroid from the average of the centroids with newly assigned aggregation points, as done by iterative k-means clustering. The chat room module 330 iterates through determining the centroid's cluster weight, reassigning the aggregation points, and determining a new centroid until a set of criteria is met. The criteria may include no adjacent centroid pairs having both a source centroid and a sink centroid, no source centroid above a minimum region size, no source centroid above a minimum cluster weight, and no valid centroid pairs with a movement cost below a threshold movement value. In a further aspect, the chat room module 330 stops iterating through the iterative boundary adjustment after a fixed number of iterations, which may be input by the provider. Additionally, the chat room module 330 may stop iterating if all centroid regions of adjacent pairs contain a number of player locations between a minimum threshold and a maximum threshold.
[0044] The chat room module 330 creates chat rooms in the virtual world for geographic regions corresponding to centroids. The chat rooms may be located at points of interest within the geographic regions corresponding to the centroids. In various aspects, the chat room module 330 places one chat room corresponding to each centroid. For a given centroid, the chat room module 330 retrieves the locations of points of interest within the centroid region from the game database 340. In one aspect, the chat room module 330 places the chat room for the centroid at the point of interest in the centroid region closest to the centroid. Alternatively, the chat room module 330 may place the chat room at the point of interest in the centroid region that has the most player interactions or has the shortest average (e.g., median) distance to the player locations corresponding to the centroid. In yet another aspect, the chat room module 330 places the chat rooms at the centroids such that the chat rooms are not necessarily located at or near the points of interest. The chat room module 330 facilitates conversations between players in chat room locations and stores information describing the chat room locations and conversations in the game database 340 .
[0045] Game database 340 includes one or more machine-readable media configured to store game data used in a location-based game that is served or provided to client device 120 over network 130. The game data stored in game database 340 may include (1) data associated with the virtual world in the location-based 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 players of the location-based game (e.g., player information, player experience level, player currency, player inventory, current player location in the virtual world / real world, player energy level, player preferences, team information, etc.), (3) data associated with game objectives (e.g., data associated with current game objectives, game objective states, past game objectives, future game objectives, desired game objectives, etc.), and (4) data associated with the virtual world (e.g., player information, player experience level, player currency, player inventory, current player location in the virtual world / real world, player energy level, player preferences, team information, etc.). ) Data related to virtual elements in the virtual world (e.g., location of virtual elements, type of virtual element, game objectives associated with virtual elements, real-world location information corresponding to virtual elements, behavior of virtual elements, 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, description of real-world objects / landmarks, relevance of virtual elements linked to real-world objects, etc.); (6) Game state (current number of players, current state of game objectives, player leaderboard, etc.); (7) Data associated with player activity / input (e.g., current player location, past player locations, player movement, player input, player queries, player communications, etc.); (8) Data associated with the virtual experience (e.g.,The game data stored in the game database 340 may include the location of the virtual experience, player activities related to the virtual experience (e.g., virtual events such as raids), and (9) other data used, related to, or obtained during the implementation of the location-based game. The game data stored in the game database 340 may be entered either offline or in real time by a system administrator, or by data received from players, such as from one or more client devices 120 over the network 130.
[0046] Additionally, the game database 340 may store real-world situation data. The real-world situation data may include aggregate locations of players in the real world, player activities associated with locations of cultural or commercial value, map data providing the locations of roads, highways, and waterways, current and past locations of individual players, hazard data, weather data, event calendar data, activity data for players (e.g., distance traveled, minutes exercised, etc.), and other suitable data. The real-world situation data may be collected or obtained from any suitable source. For example, the game database 340 may be coupled to, included in, or be part of a map database that stores map information, such as one or more map databases accessed by a mapping service. As another example, the game server 110 may be coupled to one or more external data sources or services that periodically provide population data, hazard data, weather data, event calendar data, etc.
[0047] Other modules than those shown in Figure 3 may be used by game server 110. Any number of modules may be programmed or otherwise configured to perform the server-side functionality described herein. Additionally, various components of the server-side may be rearranged. Other configurations will be apparent in light of this disclosure, and this disclosure is not intended to be limited to any particular configuration.
[0048] Chat Room Location Clustering Example 4A-4B are examples of player locations grouped into aggregation points within a geographic region that are used to further determine a centroid according to one embodiment. In FIG. 4A, a subset 400 of a geographic region includes four cells 410 with player locations 420 dispersed throughout the cells 410. Each cell 410 has player locations 420 located therein, and each cell 410 is associated with an aggregation point 430. The aggregation point 430 is weighted by the number of player locations 420 in the cell 410. In the example just described, the point weight 440 is the number of player locations 420, e.g., 6 for the top-left cell 410 or 5 for the bottom-right cell 410. FIG. 4B shows the entire geographic region 450 of FIG. 4B, including a centroid area 460 of a centroid 470 and a subset 400 of the geographic region 450. The centroid area 460 covers only a portion of the geographic region 450. A centroid 470 is located within the centroid region 460 based on the point weights 440 for each cell 410 within the centroid region 460. In particular, the centroid 470 is located at a location within the centroid region 460 that has a large point weight.
[0049] 5A-5C illustrate centroids 500 from the beginning to the end of a process of iterative k-means clustering and iterative boundary refinement according to one embodiment. FIG. 5A shows an initial set of centroids 500A randomly generated by the chat room module 330 for a geographic region 510. FIG. 5B shows centroids 500B after the chat room module 330 has performed iterative k-means clustering. Here, the centroids 500B are more densely clustered in one area in the upper right corner of the geographic region 510. FIG. 5C shows centroids after the chat room module 330 has performed iterative boundary refinement. Here, the centroids 500C are more clustered in the upper right corner of the geographic region 510 than the centroids 500B in FIG. 5B. This indicates that there is likely a higher density of player locations 420 in that portion of the geographic region 510.
[0050] 6 is an example of a chat room location 610 associated with a point of interest 600 within a geographic region according to one embodiment. The chat room location may be located at the point of interest 600, such as chat room location 610A, or may be located within a portion of the geographic region 510 where points of interest 600 are densely concentrated, such as chat room location 610B. The chat room module 330 may determine the chat room location 610 based on the location of the point of interest 600, either through weighting the centroid by the number of points of interest in the associated aggregation point or cell, or through establishing a certain number of chat rooms in points of interest with high user activity.
[0051] Exemplary Flow Diagram for Determining and Selecting a Chat Room Location 7 is a flowchart illustrating a method for providing messages to a user from a chat room according to one embodiment. The game server 110 retrieves 710 chat room locations and selects 720 a chat room for a joining virtual reality game user. In some embodiments, the game server 110 receives the user's location and selects the chat room closest to the user. In other embodiments, the game server 110 provides the user with multiple chat room options based on the user's current location, a desired route, virtual elements, other users the user likes, or any other criteria. The game server 110 provides 730 messages from the chat room to the user through the user interface module 230 of the user's client device 120.
[0052] FIG. 8 is a flowchart depicting a method 710 for determining chat room locations according to one embodiment. The game server 110 may determine chat room locations via the chat room module 330, which in some embodiments utilizes a machine learning model to determine chat room locations. The game server 110 retrieves player data 810 from the game database 340 describing player location information. In some embodiments, the same method 710 is performed using other game data, such as point-of-interest locations. The game server clusters player locations into aggregation points 820 by subdividing the geographic region for the chat room location into cells weighted by player locations. The game server 110 generates a set of centroids with assigned aggregation points and iteratively refines the centroids 830 based on constraints, such as the distance of the aggregation points to the centroids and the centroids' cluster weights. In some embodiments, this is performed through iterative k-means clustering followed by repeated boundary refinement. The game server 110 iteratively adjusts the centroids until a set of criteria is met, such as, for example, no aggregation points moving between centroids during an iteration. Additional criteria may include no adjacent centroid pairs having both a source centroid and a sink centroid, no source centroids above a minimum region size, no source centroids above a minimum cluster weight, and no valid centroid pairs with a movement cost below a threshold movement value. In a further aspect, the game server 110 adjusts the cluster weight of each centroid so that it is as close as possible to the average for all centroids without increasing the average distance from the centroid to its assigned aggregation point by a threshold amount.
[0053] Finally, the game server 110 determines chat room locations based on the adjusted centroid 840. Additionally, in some embodiments, the game server 110 searches for point-of-interest locations in the virtual reality game and also places chat room locations at the point-of-interest locations. Additionally, according to another embodiment, the game server may place chat room locations only at point-of-interest locations with the highest number of user interactions.
[0054] 9 is a flowchart illustrating a method 820 for clustering player locations into aggregated points on a map according to one embodiment. In this embodiment, the game server 110 assigns 910 each player location to a cell. A cell is a geometric shape that allocates a geographic region (e.g., S cell). For each cell, the game server 110 creates 920 a singular point, known as an aggregated point, that is associated with a point weight and a location in the geographic region. The game server 110 clusters 930 the aggregated points into centroids using a clustering algorithm (e.g., k-means clustering).
[0055] FIG. 10 is a block diagram illustrating an exemplary computer suitable for use in the network computing environment of FIG. 1 according to one embodiment. Specifically, FIG. 10 shows a diagrammatic representation of a machine in the exemplary form of a computer system 1000. The computer system 1000 can be associated with a component (or module) of a game server 110 or a client device 120 and can be used to execute instructions 1024 (e.g., program code or software) to cause the machine to perform any one or more of the methodologies (or processes) described herein, including those described.
[0056] The machine may be a server computer, a client computer, a personal computer (PC), a tablet PC, a set-top box (STB), a smartphone, a network router, a switch or bridge, a cell phone tower, or any machine capable of executing (serially or otherwise) instructions 1024 that specify actions to be taken by that machine. Additionally, although only a single machine is shown, the term "machine" should also be taken to include any collection of machines that individually or collectively execute instructions 1024 to perform any of the disclosed methods.
[0057] The exemplary computer system 1000 includes one or more processing units (typically, one or more processors 1002). The processor 1002 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 1002 may refer to a single processor or multiple processors. Additionally, the computer system 1000 also includes a main memory 1004. The computer system may include a storage unit 1016. The processor 1002, memory 1004, and storage unit 1016 communicate via a bus 1008.
[0058] Additionally, computer system 1000 may include static memory 1006, a display driver 1010 (e.g., to drive a plasma display panel (PDP), a liquid crystal display (LCD), or a projector). Additionally, computer system 1000 may also include an alphanumeric input device 1012 (e.g., a keyboard), a cursor control device 1014 (e.g., a mouse, trackball, joystick, motion sensor, or other pointing device), a signal generating device 1018 (e.g., a speaker), and a network interface device 1020, which are also configured to communicate via bus 1008.
[0059] The storage unit 1016 includes a machine-readable medium 1022 that may store instructions 1024 (e.g., software) for performing any of the methods or functions described herein. Further, the instructions 1024 may reside, completely or partially, within the main memory 1004 or within the processor 1002 (e.g., within a processor's cache memory) during execution by the computer system 1000. Moreover, the main memory 1004 and the processor 1002 also constitute machine-readable media. The instructions 1024 may be transmitted or received over the network 130 via the network interface device 1020.
[0060] While machine-readable medium 1022 is shown in the exemplary embodiment to be a single medium, the term "machine-readable medium" should 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 1024. Furthermore, the term "machine-readable medium" should also be taken to include any medium capable of storing instructions 1024 for execution by a machine, causing the machine to perform any one or more of the methods or functions 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.
[0061] While the present subject matter has been described in detail with reference to certain exemplary embodiments and methods, it will be understood that those skilled in the art, upon attaining the foregoing understanding, may readily make modifications, variations, and equivalents to the above-described embodiments. Accordingly, the scope of the present disclosure is intended to be illustrative rather than limiting, and the disclosure of the subject matter does not preclude the inclusion of such modifications, variations, or additions to the present subject matter that would be readily apparent to those skilled in the art.
[0062] Additional Considerations Some portions of the above description describe aspects in terms of algorithmic processes or operations. Typically, the presently described algorithmic descriptions and representations are used by those skilled in the computing 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 are implemented by computer programs including instructions for execution by a processor or equivalent electrical circuitry, microcode, or the like. Furthermore, it has proven convenient at times, without loss of generality, to refer to the presently described arrangements of functional operations as modules.
[0063] References to servers, databases, software applications, and other computer-based systems, as well as references to operations and transmitting information taken against such systems, are provided to explain various concepts. Those skilled in the art will recognize 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 components and between three or more components. By way of example, server processing may be implemented by a single server or multiple servers working in cooperation, databases and applications may be implemented on a single system or distributed across multiple systems, and distributed components may operate sequentially or in parallel.
[0064] In situations where the systems and methods access and analyze personal information about players, such as location information, players may be provided with an opportunity to control whether the program or feature collects the information. No such information is collected or used until the player is provided meaningful notice of what information will be collected and how the information will be used. Information will not be collected or used unless the player provides consent, which can be revoked or modified by the player at any time. Thus, players may have control over how information about them is collected and used by an application or system. Additionally, some information or data may be treated in one or more ways before being stored or used so as to be anonymized. For example, a player's identity may be treated so that no personally identifiable information can be determined about the player.
[0065] 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 appearance of the phrase "in one embodiment" in various places in this specification does not necessarily refer all to the same embodiment. Similarly, the use of "a" or "an" before an element or component is made merely for convenience. It should be understood that the present description implies that there are one or more elements or components present, unless it is clear that this is not intended.
[0066] When values are described as "approximately" or "substantially" (or their derivatives), the value should be constructed as accurate to ±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."
[0067] 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).
[0068] Yet, upon reading this disclosure, those skilled in the art will recognize additional alternative structural and functional designs for systems and processes using ad hoc neural networks to process transactions. 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 structure and components disclosed. The scope of protection shall be limited only by the following claims. [Explanation of symbols]
[0069] 400 subset 410 cells 420 Player Locations 430 Concentration Points 440 point weight 450 Geographic Regions 460 centroid area 470 centroid
Claims
1. When executed by a game server, the game server: Retrieving a location for a chat room, the location for the chat room comprising: For users of the mobile application, retrieving user data describing a user location for each user; for each user location, assigning the user location to a cell of a plurality of cells in a map; creating, for each cell of the plurality of cells, a cell point for the cell, each cell point having a cell location and a weight indicative of a number of user locations within the cell; clustering the cells into geographic regions based on the respective cell locations and the weight of each cell of the plurality of cells; dividing the user's geographic region into geographic areas by searching for locations of interest belonging to points of interest within said geographic region; retrieving from the user data data describing user interactions with the points of interest within the geographic region; For each geographical area, identifying a subset of the locations of interest within the geographic region; selecting, from the subset of locations of interest within the geographic region, a location of interest having the most user interactions; establishing the chat room at the selected location of interest; is determined automatically by selecting one of the chat rooms for a user of a client device connected to a server for the mobile application; automatically providing messages associated with the selected chat room for display to the user within the mobile application; A non-transitory computer-readable storage medium storing instructions for causing a
2. The instructions, when executed by the game server, cause the game server to: dividing a geographic region into the geographical areas that includes the location of the user of the mobile application, and the user data includes the location of the user; The non-transitory computer-readable medium of claim 1 , further comprising instructions to cause:
3. 3. The non-transitory computer-readable medium of claim 2, wherein the cells to which user locations are assigned are geometric shapes that map a two-dimensional representation of the physical world.
4. The instructions, when executed by the game server, cause the game server to: reassigning a set of one or more users located within a cell if the cost of moving the set of one or more users located within the cell is less than or equal to a moving cost threshold, wherein the set of one or more users located within the cell indicates the set of cell points; The non-transitory computer-readable medium of claim 1 , further comprising instructions to cause:
5. The instructions, when executed by the game server, cause the game server to: creating a centroid of said geographic region at a point of interest within said geographic region for establishing a chat room; The non-transitory computer-readable medium of claim 1 , further comprising instructions to cause:
6. The instructions, when executed by the game server, cause the game server to: iteratively adjusting the centroid of the geographic region to minimize the average distance from each user location to the nearest centroid, and the adjusted centroid is used to determine a location for the chat room. The non-transitory computer-readable medium of claim 1 , further comprising instructions to cause:
7. The instructions for selecting one of the chat rooms for the user, when executed by the game server, cause the game server to: receiving a current location of the user; selecting the chat room whose location is closest to the user's current location; The non-transitory computer-readable medium of claim 1 , further comprising instructions to cause:
8. The instructions for selecting one of the chat rooms for the user, when executed by the game server, cause the game server to: receiving a current location of the user; identifying a predetermined number of chat rooms whose corresponding chat room locations are closest to said user's current location; receiving a selection of one of the predetermined number of chat rooms from the user's client device; The non-transitory computer-readable medium of claim 1 , further comprising instructions to cause:
9. 10. The non-transitory computer-readable storage medium of claim 1, wherein the mobile application is a parallel reality game that includes a virtual world that is parallel to the real world, and a player of the parallel reality game navigates through the virtual world by moving in the real world with a location-aware client device.
10. Retrieving a location for a chat room by a server, the server comprising: For users of the mobile application, retrieving user data describing a user location for each user; for each user location, assigning the user location to a cell of a plurality of cells in a map; creating, for each cell of the plurality of cells, a cell point for the cell, each cell point having a cell location and a weight indicative of a number of user locations within the cell; clustering the cells into geographic regions based on the respective cell locations and the weight of each cell of the plurality of cells; dividing the user's geographic region into geographic areas by searching for locations of interest belonging to points of interest within said geographic region; retrieving from the user data data describing user interactions with the points of interest within the geographic region; For each geographical area, identifying a subset of the locations of interest within the geographic region; selecting, from the subset of locations of interest within the geographic region, a location of interest having the most user interactions; establishing the chat room at the selected location of interest; automatically determining the location for the chat room by selecting, by the server, for the mobile application, one of the chat rooms for a user of a client device connected to the server; automatically providing, by the server, to the client device, messages associated with the selected chat room for display to the user within the mobile application; A method comprising:
11. dividing a geographic region into the geographical areas that includes a location of the user of the mobile application, the user data including the location of the user; The method of claim 10 further comprising:
12. 12. The method of claim 11, wherein the cells to which user locations are assigned are geometric shapes that map a map of a geographic region to the geographic area, the map being a two-dimensional representation of the physical world.
13. reassigning a set of one or more users located within a cell if moving the set of one or more users located within the cell is less than or equal to a moving cost threshold, wherein the set of one or more users located within the cell indicates the set of cell points; The method of claim 10 further comprising:
14. creating a centroid of said geographic region at a point of interest within said geographic region for establishing chat rooms; The method of claim 10 further comprising:
15. determining the chat rooms by iteratively adjusting the centroids of the geographic regions to minimize the average distance from each user location to the nearest centroid; The method of claim 10 further comprising:
16. Selecting one of the chat rooms for the user includes: receiving a current location of the user; selecting the chat room whose location is closest to the user's current location; 11. The method of claim 10, comprising:
17. Selecting one of the chat rooms for the user includes: receiving a current location of the user; identifying a predetermined number of chat rooms whose corresponding chat room locations are closest to said user's current location; receiving a selection of one of the predetermined number of chat rooms from the user's client device; 11. The method of claim 10, comprising:
18. 11. The method of claim 10, wherein the mobile application is a parallel reality game that includes a virtual world that is parallel to the real world, and a player of the parallel reality game navigates the virtual world by moving in the real world with a location-aware client device.
Citation Information
Patent Citations
Communication system and communication method
JP2019164645A