Density-based zone division for zone chat
By using client devices to track player locations in location-based parallel reality games and utilizing iterative k-means clustering and boundary adjustment algorithms to determine chat room locations, the problem of virtual chat rooms following player locations is solved, thereby improving player communication efficiency and interactive experience.
Patent Information
- Application Number
- CN202080091542.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-11-06
- Filing Date
- 2020-10-29
- Publication Date
- 2025-09-19
- Estimated Expiration
- 2040-10-29
AI Technical Summary
In location-based parallel reality games, when players move in the real world, the virtual chat room cannot effectively follow the player's location changes, making it difficult to communicate with nearby players.
By using client devices to track the player's location information, the game server determines the chat room location based on iterative k-means clustering and iterative boundary adjustment algorithm, ensuring that the chat room is located in areas with high player density and is evenly distributed, using points of interest as location references for the chat room.
It realizes the dynamic adjustment of the chat room location, improves the communication efficiency between players, and ensures the consistency and naturalness of the players' interactive experience in the virtual world.
Smart Images

Figure CN115052668B_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates generally to location-based gaming and, in particular, to determining chat room locations in such games. Background Art
[0002] Location-based games use the real world as their geography. Parallel reality games are a type of location-based game that utilizes a virtual world parallel to the real world's geography. Players can interact and accomplish various game objectives in the parallel virtual world by navigating and performing actions in the real world. To communicate in a parallel reality game, players can converse in chat rooms located within the virtual world. For example, a player can join a chat room during a raid to communicate with other players. However, if a player moves to a new location within the real world to participate in another virtual experience with a different group of players, the original chat room located near the raid will not connect to other nearby players who may be using other chat rooms in the real world. Furthermore, even if the player moves only a short distance from the original chat room, the virtual experience and nearby players may be different from the player's original location. Summary of the Invention
[0003] In location-based parallel reality games, players navigate a virtual world in the real world using location-aware client devices (such as smartphones). As players navigate the virtual world to participate in virtual experiences or interact with virtual elements, they can chat with each other via chat rooms strategically located within the virtual world. These chat rooms can be placed regionally within the virtual world so that they are located near geographic locations with a high density of observed player locations. Chat rooms can also 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 can include a positioning device that tracks player location information as the player moves through the real world while playing the parallel reality game. In various embodiments, the client device sends the player location information to a server hosting the parallel reality game. The game server determines a chat room location based on the player location information.
[0005] In one embodiment, the game server determines chat room locations for a geographic region by iteratively clustering player locations within the geographic region into hubs, adjusting the clustering to more evenly balance the number of players associated with each hub, while still distributing the chat rooms in a manner that accounts for natural groupings of players in the real world. After the chat room locations have been determined, the game server can select a chat room for each user based on their current location within the game and provide messages from the chat room to the user.
[0006] These and other features, aspects, and advantages may be better understood with reference to the following description and appended claims. The accompanying drawings illustrate specific embodiments and, together with the description, serve to explain the various principles. However, these drawings should not be construed as limiting. Rather, the scope of protection should be determined based on the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0007] Figure 1 is a block diagram illustrating a networked computing environment suitable for operating location-based games, according to one embodiment.
[0008] Figure 2 According to one embodiment Figure 1 A block diagram of the client device is shown in FIG.
[0009] Figure 3 According to one embodiment Figure 1 Block diagram of the game server shown in .
[0010] Figure 4A-4B is an example of player locations grouped into aggregation points within a geographic area, which are used to further determine the center, according to one embodiment.
[0011] Figures 5A-5C A diagram illustrating the various stages of a process for determining a chat room location according to one embodiment.
[0012] Figure 6 is an example of chat room locations with points of interest within a geographic area, according to one embodiment.
[0013] Figure 7 is a flow chart depicting a method for providing messages to users from a chat room, according to one embodiment.
[0014] Figure 8 is a flow chart depicting a method for determining chat room locations according to one embodiment.
[0015] Figure 9 is a flow chart illustrating a method of grouping cluster points into centers on a map according to one embodiment.
[0016] Figure 10 is a diagram showing an embodiment of the invention Figure 1 A block diagram of an example computer of a network computing environment. DETAILED DESCRIPTION
[0017] The drawings and the following description describe certain embodiments only as illustrations. Those skilled in the art will readily appreciate from the following description that alternative embodiments of the structures and methods may be employed without departing from the principles described. Reference will now be made to several embodiments, examples of which are shown in the accompanying drawings. Note that, whenever possible, similar or identical reference numerals are used in the drawings to indicate similar or identical functions. In addition, where similar elements are identified by a reference numeral followed by a letter, a reference to that numeral alone in the subsequent description may refer to all such elements, any one such element, or any combination of such elements.
[0018] Overview
[0019] Generally speaking, the present disclosure relates to determining chat room locations mapped to real-world locations for a parallel reality game occurring in a virtual world.
[0020] A game server may host a location-based parallel reality game having a player play area comprising a virtual environment having geography parallel to at least a portion of real-world geography. A player may navigate a virtual space in the virtual world by navigating the corresponding geographic space in the real world. Specifically, a player may navigate a coordinate range defining a virtual space in the virtual world by navigating a range of geographic coordinates in the real world.
[0021] In one aspect, a positioning system (e.g., a GPS system) associated with a player's mobile computing device (e.g., a cell phone, smartphone, gaming device, or other device) can be used to monitor or track the player's location. As the player moves in the real world, the player's location information can be provided to the game server hosting the parallel reality game over the network. The game server can update the player's location in the parallel virtual world to match the player's location in the real world.
[0022] Parallel reality games may also include one or more points of interest (POIs) that players can interact with during the parallel reality game. POIs may include, but are not limited to, virtual elements, virtual objects, virtual experiences, and the like. POIs may also be located at virtual locations that correspond to real-world locations of landmarks, stores, entertainment areas, or other real-world features that may be of interest to the player. To interact with a POI, the player may travel to the corresponding location of the POI in the real world and select the POI in the parallel reality game.
[0023] As players navigate and interact with the virtual world, they can communicate with each other via chat rooms located within 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 a subset of points of interest. According to aspects of the present disclosure, chat room locations can be determined based on player location data collected by a game player's client device as the player navigates the virtual world. The data can be analyzed to determine chat room locations that strike a balance between minimizing the average distance between a player's location and the nearest chat room and balancing the number of players in each chat room.
[0024] In one embodiment, a game server associated with a parallel reality game can access data associated with an individual's location in the real world. The data associated with an individual's location in the real world can be obtained or acquired from any appropriate source. The data associated with an individual's location in the real world can include the real-world locations of mobile devices associated with these individuals. Specifically, users of mobile devices such as smart phones can optionally provide location information about their geographic locations in the real world to enhance certain location-based features or other functions. Any information that a mobile device user optionally provides can be provided anonymously to protect the privacy of the user who optionally provides the location information.
[0025] Data associated with the location of individuals in the real world may also include data associated with the location of players of the parallel reality game. Specifically, the game server may receive a snapshot of device location information from each client device of a player of the parallel reality game at a given time. The game server may analyze this snapshot to determine the location of the individual in the real world and generate chat room locations based on this data. The game server may use these chat room locations for a given time period (e.g., a day, month, year, etc.) and may periodically update the chat room locations using new snapshots of player device information.
[0026] Exemplary Location-Based Parallel Reality Gaming System
[0027] An exemplary computer-implemented location-based gaming system according to an exemplary embodiment of the present disclosure will now be described. This subject matter will be discussed with reference to a parallel reality game. 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 player movement and actions in the real world affect actions in the virtual world, and vice versa. Using the disclosure provided herein, one of ordinary skill in the art will appreciate that the subject matter of this disclosure is equally applicable to other gaming systems.
[0028] Figure 1An exemplary computer-implemented location-based gaming system 100 configured in accordance with an embodiment is shown. The location-based gaming system 100 provides for interaction among multiple players in a virtual world having a geographic location parallel to the real world. Specifically, geographic areas in the real world can be directly linked or mapped to corresponding areas in the virtual world. Players can move around in the virtual world by moving to various geographic locations in the real world. For example, the system 100 can track the player's location in the real world and update the player's location in the virtual world based on the player's current location in the real world. For example, a coordinate system in the real world (e.g., longitude and latitude) can be mapped to a coordinate system in the virtual world (e.g., x / y coordinates, virtual longitude and latitude, etc.).
[0029] exist Figure 1 In the illustrated embodiment, the system 100 has a client-server architecture in which a game server 110 communicates with one or more client devices 120 via a network 130. Figure 1 Three client devices 120 are shown, but any number of client devices 120 may be connected to the game server 110 via the network 130. In other embodiments, the distributed location-based gaming system 100 includes different or additional elements. Furthermore, functionality may be allocated between the elements in a manner different from that described.
[0030] The game server 110 hosts the master state of the location-based game and provides game state updates (e.g., based on actions taken by other players in the game, changes in real-world conditions, changes in game state or conditions, etc.) to the player's client device 120. The game server 110 receives and processes input from players in the location-based game. Players can be identified by a username or player ID (e.g., a unique number or alphanumeric string) that the player's client device 120 sends to the game server 110 in conjunction with the player's input.
[0031] For example, the game server 110 can determine the location of the chat room based on a snapshot of device location information that indicates a large number of player locations in the real world. The game server 110 breaks down the geographic area of the map into cells (e.g., S-cells) and creates cluster points weighted by the number of player locations within each cell. The game server uses a clustering algorithm (e.g., an iterative k-means clustering algorithm) and iterative boundary adjustments to determine the center. The game server determines the chat room location based on the center. The chat room location can be a point of interest on the map, such as a monument, store, public building, sculpture, or other identifiable real-world location. For each chat room located within the virtual world, the game server 110 can select a message and provide the message to the players of the parallel reality game. Figure 3Various embodiments of the game server 110 are described in more detail.
[0032] The client device 120 is a computing device that a player can use to interact with the game server 100. For example, the client device 120 can be a smartphone, a portable gaming device, a tablet computer, a personal digital assistant (PDA), a cellular phone, a navigation system, a handheld GPS system, or other such device. The client device 120 can execute software (e.g., a gaming application or app) to allow the player to interact with the virtual world. The client device 120 can also include hardware, software, or both for providing a user interface for the chat room. Users can choose to join the chat room and send and receive messages via the user interface. Figure 2 Various embodiments of client device 120 are described in further detail.
[0033] The network 130 can be any type of communication network, such as a local area network (e.g., an intranet), a wide area network (e.g., the Internet), or some combination thereof. The network can also include a direct connection between the client 120 and the game server 110. In general, the communication between the game server 110 and the client 120 can be carried via a network interface using any type of wired and / or wireless connection, using various 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).
[0034] Figure 2 According to one embodiment Figure 1 . Because the gaming system 100 is used for location-based gaming, the client device 120 is preferably a portable computing device, such as a smartphone or other portable device, that can be easily carried or otherwise transported with the player. The player can interact with the virtual world simply by carrying or transporting the client device 120 in the real world. The client device 120 may include a positioning device 210 that monitors the location of the client device 120 in the real world. The positioning device 210 may be any device or circuit for monitoring the location of the client 120. For example, the positioning device 210 may determine the actual or relative location by 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 based on an IP address, by using triangulation and / or proximity to cellular towers or WiFi hotspots, and / or other appropriate techniques for determining location.
[0035] As the player moves with the client 120 in the real world, the positioning device 210 tracks the position of the player's client device 120 and provides the client device location information to the game module 220. The game module 220 updates the player's position in the virtual world based on the coordinates of the player's client device 120 in the real world. Thus, the game module 220 maintains a local state of the virtual world on the client device 120. The game module 220 can provide the player's location information to the game server 110 via the network 130, so that the game server 110 maintains an overall game state with the updated player's location, and provide periodic updates to the game module 220 so that the local game state can reflect the overall game state.
[0036] The game module 220 communicates information about the virtual world with the user interface module 230. The user interface module 230 of the client device 120 constructs and displays components of the user interface of the client device 120. The user interface can display a description of the virtual world to the user, including components of the virtual world received from the game module 220, such as virtual elements and virtual experiences. The user interface module 230 can also display chat room locations in the virtual world and messages sent between users in the chat room. The user can interact with the client device 120 to activate virtual elements, participate in virtual experiences, or chat in the chat room. For example, the user interface module 230 can display a view of the virtual world showing points of interest, chat rooms, and other virtual experiences. The user of the client device 120 can interact with these components via the user interface to complete tasks, join chat rooms, participate in raids, and other actions.
[0037] The local data repository 240 is one or more computer-readable media configured to store data used by the client device 120. For example, the local data repository 240 may store player location information tracked by the positioning device 210, a local copy of the current state of the parallel reality game, or any other appropriate data. Although the local data repository 240 is shown as a single entity, the data may be split across multiple media. In addition, the data may be stored elsewhere (e.g., in a distributed database) and accessed remotely via the network 130.
[0038] Figure 3 One embodiment of a game server 110 suitable for hosting a location-based parallel reality game is shown. In the illustrated embodiment, the game server 110 includes a global 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 components. Furthermore, functionality may be allocated between the components in a manner different from that described.
[0039] The game server 110 can 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 these requests via the network 130. For example, the game server 110 can encode the game data in one or more data files and provide the data files to the client devices 120. In addition, the game server 110 can be configured to receive game data (e.g., player positions, player actions, player input, etc.) from one or more client devices 120 via the network 130. For example, the client devices 120 can be configured to periodically send player input, player positions, and other updates to the game server 110, which uses these updates to update the game data in the game database 340 to reflect the changed conditions of the game. The game server 110 can also send game data such as other player positions, chat room positions, and virtual element positions to the client devices 120.
[0040] The global game module 310 hosts location-based games for players and serves as the authoritative source for the current state of the location-based game. The global game module 310 receives game data (e.g., player input, player location, player actions, player status, landmark information, etc.) from the client devices 120 and merges the received game data into an overall location-based game for all players of the location-based game. Using the game data, the global game module 310 stores 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. The global game module 310 can also manage the delivery of game data to the client devices 120 via the network 130.
[0041] The locator module 320 can be part of the global game module 310 or independent of the global game module 310. The locator module 320 is configured to access data associated with real-world actions, analyze the data, and determine virtual experiences in the virtual world based on the data associated with the real-world actions. For example, the locator module 320 can modify the game data stored in the game database 340 to locate virtual experiences in the virtual world based on the data associated with the real-world actions. For example, sponsored virtual elements can be located at virtual locations corresponding to real-world locations of sponsors' stores, restaurants, dealerships, etc. If the player makes a purchase, enters a code available at the real-world location, or takes another action at the real-world location that meets specified criteria, a special virtual experience can be provided to the player in the parallel reality game.
[0042] The chat room module 330 determines chat room locations in the virtual world based on player locations. Chat room locations can correspond to points of interest in the real world. The chat room module 330 analyzes player locations collected from client devices 120 in the global game module 310 and uses clustering and boundary adjustment methods to identify groups of players, each of which corresponds to a geographic region. The chat room module 330 can identify points of interest in a geographic region as chat room locations based on data about players in that geographic region (e.g., by comparing the center of the player locations to the locations of the points of interest, or by analyzing the frequency or number of interactions between players and virtual elements located at the points of interest, etc.). The chat room module 330 can 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 the chat room locations to the global game module 310, which includes the chat room in the overall game state and provides messaging between chat room users.
[0043] In various embodiments, the chat room module 330 performs iterative k-means clustering to determine chat room locations before iterative boundary adjustment. Using k-means clustering alone can produce some centers that correspond to a much larger number of players than other centers. For example, chat rooms in high-density areas (e.g., within a city) may have a large number of players assigned to them, resulting in crowded chat rooms where conversations move too quickly for players to easily follow. Conversely, chat rooms in low-density areas (e.g., rural areas) may include relatively few players, and players may become frustrated by the lack of interaction. Boundary adjustment counteracts this by making the number of players associated with each chat room more closely equal. The chat room may remain at the determined chat room location in the virtual world until the game server 110 triggers the chat room module 330 to update the chat room location (e.g., when a certain time period has passed).
[0044] Generally speaking, to determine chat room locations, the chat room module 330 accesses player locations in a geographic area (e.g., from the game database 330). Player locations can be represented as points on a map, where the map is a two-dimensional representation of the physical world. The chat room module 330 groups player locations into clustered points on the map.
[0045] In one embodiment, to group player locations, the chat room module 330 breaks the map into multiple cells (e.g., S-cells) that cover portions of a geographic area. These cells are geometric shapes that divide the geographic area. The size of the cells can be determined via input from the provider or based on the content or number of users in the geographic area. The chat room module 330 assigns each player location to a cell on the map and creates a single point (called a "gathering point") for each cell. The chat room module 330 weights the gathering point by the number of player locations assigned to that particular cell. Generally speaking, the point weight increases with the number of players associated with that gathering point. For example, a gathering point assigned to a cell with 20 player locations may have a higher point weight than a gathering point assigned to a cell with only 3 player locations. The point weight can be the number of players associated with the gathering point (i.e., the gathering points in the previous example would have point weights of 20 and 3, respectively) or some other function of the number of players. The chat room module 330 also assigns a gathering point to the location in the geographic area corresponding to that cell (e.g., the middle of the cell or the average of the player locations represented by the gathering point). Thus, a gathering point represents one or more users located within a cell associated with the gathering point.
[0046] The chat room module 330 uses iterative clustering on the cluster points to determine the center based on the distance between the center and the corresponding cluster point. For convenience, this specification describes k-means clustering, in which the term "iterative k-means clustering" is used. However, other clustering algorithms can also be used.
[0047] To begin iterative k-means clustering, the chat room module 330 randomly selects multiple locations in the geographic area as centers. In some embodiments, the chat room module 330 uses a random grid generator or k-means++ initialization to select the number of locations. The provider can specify the number of centers to be used by the chat room module 330 via the game server 110, or the chat room module 330 can determine the number of centers to be used based on the number of weighted clustering points in the geographic area. The chat room module 330 assigns each clustering point to the nearest center. The clustering points assigned to the centers define the central area. For example, the geographic area consists of all S-cells corresponding to the clustering points assigned to the centers. The chat room module 330 determines the average position of the clustering points assigned to each central area and updates the center to be at the corresponding average position. The chat room positioning module 330 iterates the process using the updated centers until one or more completion criteria are met.
[0048] The chat room module 330 can employ a number of different completion criteria for iterating using k-means clustering. In one embodiment, the chat room module 330 ends an iteration when no cluster points move from one central region to another between one iteration and the next. In other embodiments, the completion criteria are met when the average distance from each cluster point to its center is less than a threshold or a specified number of iterations have been completed.
[0049] The chat room module 330 performs iterative boundary adjustments to modify the central regions determined using k-means clustering. Using the central regions generated from the final iteration of iterative k-means clustering, the chat room module 330 determines a cluster weight for each central region based on the point weights of its assigned cluster points. In one embodiment, the cluster weight of a central region is the cumulative number of players associated with it. For example, a central region may be assigned three cluster points, each with ten, seventeen, and five player locations associated with it, respectively. Thus, the cluster weight would be thirty-two.
[0050] The chat room module 330 redistributes cluster points among the hubs to more closely balance the cluster weights of the hubs. The chat room module 330 determines how to redistribute cluster points for each iteration of iterative boundary adjustment based on one or more conditions. In one embodiment, the chat room module 330 redistributes cluster points if a pair of hubs includes a source hub and a sink hub, and the source hub has a central area greater than a minimum size. A hub is considered a source hub if its cluster weight (representing the number of player locations associated with the hub) is greater than the average (e.g., mean) cluster weight of all hubs, and a sink hub if its cluster weight is less than the average (e.g., mean) cluster weight of all hubs. In other embodiments, a hub is considered a source hub if its cluster weight is greater than a maximum threshold, and a sink hub if its cluster weight is less than a minimum threshold. These thresholds can be set numerically by the provider or as a percentage of the player population. These conditions help prevent the chat room module 330 from moving players from high-cluster weight hubs to low-cluster weight hubs, thereby balancing the influence of player locations on the determined chat room location. Based on these conditions, the chat room module 330 determines a set of gathering points to be moved between the centers, calculates the movement cost of moving the gathering points, and moves the gathering point with the lowest movement cost.
[0051] For each iteration of iterative boundary adjustment, the chat room module 330 finds a pair of adjacent centers where one center is a source center and the other is a sink center, and where the center areas are directly adjacent to each other in the geographic region. For each adjacent center pair, the chat room module 330 determines whether the source center is larger than a minimum size. The size of the source center can be the physical size of the corresponding area in the geographic region, the cluster weight, or a combination of the two (e.g., both the area and the weight must be above a corresponding threshold). In some embodiments, the chat room module 330 only uses centers whose center areas are between the minimum and maximum area sizes of the center pair to avoid creating chat rooms that are too close together in dense urban areas. For adjacent center pairs that meet these conditions, the chat room module 330 identifies a set of cluster points to be moved from the source center to the sink center of the adjacent center pair and calculates the movement cost of moving the set of cluster points from the source center to the sink center.
[0052] If a gathering point is reassigned to a sink center, the movement cost is a function of the average increase in distance between each gathering point and the source center. For example, a gathering point closer to the boundary between the two center regions of a center pair will have a lower movement cost than a gathering point closer to the center of the center region of the source center. In some embodiments, the movement cost is based on the point weight of the gathering point. If the movement cost is below a threshold movement value and one movement is performed in each iteration of the iterative boundary adjustment, the chat room module 330 moves the gathering point between the centers of the adjacent center pair with the lowest movement cost. In other embodiments, the chat room module 330 moves multiple sets of gathering points in each iteration.
[0053] In some embodiments, the chat room module 330 checks whether the set of moving gathering points meets a moving cost threshold. The chat room module 330 determines the moving cost of the gathering point set, and if the moving cost is higher than the moving cost threshold (i.e., the average distance has increased too much), the chat room module 330 does not reallocate the gathering point set. Otherwise, the chat room module 330 reallocates the gathering point set. The moving cost threshold may be determined by the provider, or may be based on the number of players in the geographic area, or other methods.
[0054] The chat room module 330 determines new centers based on the mean of the centers with their newly assigned cluster points, as done by iterative k-means clustering. The chat room module 330 iterates the steps of determining the cluster weights of the centers, reallocating cluster points, and determining new centers until a set of criteria are met. These criteria may include the absence of adjacent center pairs that have both a source center and a sink center, the absence of source centers above a minimum cell domain size, the absence of source centers above a minimum cluster weight, and the absence of valid center pairs with a move cost below a threshold move value. In other embodiments, the chat room module 330 completes the iteration by iterative boundary adjustment after a fixed number of iterations that can be input by the provider. The chat room module 330 may also complete the iteration after all center regions of adjacent pairs are contained within a number of player positions between a minimum and maximum threshold.
[0055] The chat room module 330 creates a chat room in the virtual world for the geographic area corresponding to the center. The chat room can be located at a point of interest within the geographic area corresponding to the center. In various embodiments, the chat room module 330 places a chat room corresponding to each center. For a given center, the chat room module 330 retrieves the locations of points of interest within the center area from the game database 340. In one embodiment, the chat room module 330 places the center's chat room at the point of interest in the center area closest to the center. Alternatively, the chat room module 330 may locate the chat room at the point of interest in the center area with the highest player interaction or the lowest average (e.g., mean) distance to the player locations corresponding to the center. In another embodiment, the chat room module 330 places the chat room at the center, so that the chat room does not have to be located at or near a point of interest. The chat room module 330 facilitates conversations between players at the chat room locations and stores information describing the chat room locations and the conversations in the game database 340.
[0056] The game database 340 includes one or more machine-readable media configured to store game data used in a location-based game to be served or provided to the client device 120 via the network 130. The game data stored in the game database 340 may include: (1) data associated with a virtual world in the location-based game (e.g., image data for presenting 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 a game objective (e.g., data associated with a current game objective, the state of a game objective, past game objectives, future game objectives, desired game objectives, etc.); (4) data associated with virtual elements in the virtual world (e.g., the location of the virtual element, the type of the virtual element, the game objective associated with the virtual element, the location of the virtual element, the game objective associated with ... (e.g., corresponding real-world location information of virtual elements, behavior of virtual elements, relevance of virtual elements, etc.); (5) data associated with real-world objects, landmarks, locations linked to virtual-world elements (e.g., locations 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 leaderboards, etc.); (7) data associated with player actions / inputs (e.g., current player location, past player locations, player movements, player inputs, player queries, player communications, etc.); (8) data associated with virtual experiences (e.g., locations of virtual experiences, player actions related to virtual experiences, virtual events such as raids, etc.); and (9) any other data used, related, or obtained during the implementation of the location-based game. The game data stored in the game database 340 can be populated by a system administrator offline or in real time, or by data received from players (e.g., received from one or more client devices L20 via the network 130).
[0057] The game database 340 may also store real-world condition data. The real-world condition data may include locations where players gather in the real world; player actions associated with locations of cultural or commercial value; map data providing the locations of roads, highways, and waterways; the current and past locations of individual players; hazard data; weather data; event calendar data; player activity data (e.g., distance traveled, minutes exercised, etc.); and other appropriate data. The real-world condition data may be collected or obtained from any appropriate source. For example, the game database 340 may be coupled to, include, or be part of a map database that stores map information, such as one or more map databases accessed by a map service. As another example, the game server 110 may be coupled to one or more external data sources or services that periodically provide crowd data, hazard data, weather data, event calendar data, and the like.
[0058] Apart from Figure 3 Other modules outside of the modules shown can be used with game server 110. Any number of modules can be programmed or otherwise configured to perform the server-side functions described herein. In addition, the various components of the server side can also be rearranged. In view of this disclosure, other configurations will be apparent, and this disclosure is not intended to be limited to any particular configuration.
[0059] Chat room location clustering example
[0060] Figure 4A-4B is an example of player locations grouped into clusters within a geographic area that are used to further determine the center, according to one embodiment. Figure 4A In FIG. 4 , a subset 400 of a geographic area contains four cells 410, with player locations 420 scattered across the cells 410. Because each cell 410 has a player location 420 located therein, and each cell 410 is associated with a gathering point 430, the gathering point 430 is weighted by the number of player locations 420 in the cell 410. In this example, the point weight 440 is the number of player locations 420, such as 6 for the upper left cell 410 or 5 for the lower right cell 410. Figure 4B Shown Figure 4B 4. The entire geographic area 450 of FIG. 4 is shown, which includes the central area 460 of the center 470 and the subset 400 of the geographic area 450. The central area 460 covers only a portion of the geographic area 450. Based on the point weight 440 of each cell 410 within the central area 460, the center 470 is located within the central area 460. Specifically, the center 470 is located at a location with a larger point weight within the central area 460.
[0061] Figures 5A-5CThe center 500 is shown throughout the process of performing iterative k-means clustering and iterative boundary adjustment, according to one embodiment. Figure 5A A set of initial centers 500A randomly generated by the chat room module 330 for the geographic area 510 is shown. Figure 5B 5. Centers 500B are shown after chat room module 330 performs iterative k-means clustering. Here, centers 500B are more concentrated in an area in the upper right portion of geographic area 510. Figure 5C The center is shown after the chat room module 330 performs iterative boundary adjustments. Figure 5B The center 500B of the is more clustered in the upper right corner of the geographic area 510. This indicates that there may be a high density of player locations 420 in this part of the geographic area 510.
[0062] Figure 6 6 is an example of a chat room location 610 associated with a point of interest 600 within a geographic area, according to one embodiment. The chat room location can be located at a point of interest 600, such as chat room location 610A, or can be located within a portion of geographic area 510 with a high concentration of points of interest 600, such as chat room location 610B. The chat room module 330 can determine the chat room locations 610 based on the locations of the points of interest 600, either by weighting the centers according to the number of interactions with the points of interest in the associated cluster or cell, or by locating a certain number of chat rooms at points of interest with a high amount of user activity.
[0063] Exemplary Flowchart for Determining and Selecting Chat Room Locations
[0064] Figure 7 7 is a flow chart describing a method for providing a message from a chat room to a user, according to one embodiment. A game server 110 retrieves 710 chat room locations and selects 720 a chat room for a user of a virtual reality game to join. 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 multiple chat room options to the user based on the user's current location, desired path, virtual elements, other users with whom the user has close relationships, or any other criteria. The game server 110 provides 730 the message from the chat room to the user via the user interface module 230 of the user's client device 120.
[0065] Figure 8is a flow chart of a method 710 for determining chat room locations, according to one embodiment. The game server 110 can determine the chat room location via the chat room module 330. In some embodiments, the chat room module 330 employs a machine learning model to determine the chat room location. The game server 110 retrieves 810 player data describing player location information from the game database 340. In some embodiments, the same method 710 is performed using other game data, such as point of interest locations. The game server clusters 820 the player locations into clustering points by decomposing the geographic area of the chat room location into units weighted by player location. The game server 110 generates a set of centers with assigned clustering points and iteratively adjusts 830 the centers based on constraints such as the distance from the clustering point to the center and the clustering weight of the center. In some embodiments, this is accomplished by iterative k-means clustering followed by iterative boundary adjustment. The game server 110 iteratively adjusts the centers until a set of criteria is met, such as no clustering points move between centers between iterations. Additional criteria may include the absence of adjacent center pairs that have both a source center and a sink center, the absence of source centers above a minimum cell domain size, the absence of source centers above a minimum cluster weight, and the absence of valid center pairs with a move cost below a threshold move value. In other embodiments, the game server 110 adjusts the cluster weight of each center so that the cluster weight of each center is as close as possible to the average of all centers without increasing the average distance from the center to the assigned cluster point by a threshold amount.
[0066] Finally, the game server 110 determines 840 a chat room location based on the adjusted center. In some embodiments, the game server 110 also retrieves the location of a point of interest in the virtual reality game and places the chat room location at the point of interest location. Furthermore, according to another embodiment, the game server may only place the chat room location at the point of interest location with the highest number of user interactions.
[0067] Figure 9 8 is a flow chart of a method 820 for clustering player positions into clustering points on a map according to one embodiment. In this embodiment, the game server 110 assigns 910 each player position to a cell. A cell is a geometric shape (e.g., an S-cell) that divides a geographic area. The game server 110 creates 920 a single point for each cell, referred to as a clustering point, which is associated with a point weight and a location in the geographic area. The game server 110 uses a clustering algorithm (e.g., k-means clustering) to cluster the clustering points 930 as centers.
[0068] Figure 10 is a diagram showing an embodiment of the invention Figure 1 A block diagram of an example computer of a network computing environment. Specifically, Figure 10A diagrammatic representation of a machine in the exemplary form of a computer system 1000 is shown. The computer system 1000 may be used to execute instructions 1024 (e.g., program code or software) for causing the machine to perform any one or more of the methods (or processes) described herein, including those associated with and described in connection with components (or modules) of the game server 110 or client device 120.
[0069] The machine can 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 cellular phone tower, or any machine capable of executing instructions 1024 (sequentially or otherwise) specifying actions to be taken by the machine. Furthermore, while only a single machine is shown, the term "machine" should be taken to include any collection of machines that individually or jointly execute the instructions 1024 to perform any disclosed method.
[0070] The example computer system 1000 includes one or more processing units (typically one or more processors 1002). Processor 1002 is, 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 processor 1002 may refer to a single processor or multiple processors. Computer system 1000 also includes main memory 1004. The computer system may include a storage unit 1016. Processor 1002, memory 1004, and storage unit 1016 communicate via bus 1008.
[0071] In addition, the computer system 1000 may include static memory 1006, a display driver 1010 (e.g., for driving a plasma display panel (PDP), a liquid crystal display (LCD), or a projector). The computer system 1000 may also include an alphanumeric input device 1012 (e.g., a keyboard), a cursor control device 1014 (e.g., a mouse, a trackball, a joystick, a 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 the bus 1008.
[0072] The storage unit 1016 includes a machine-readable medium 1022 that can store instructions 1024 (e.g., software) for performing any of the methods or functions described herein. The instructions 1024 may also reside, in whole or in part, within the main memory 1004 or within the processor 1002 (e.g., within a cache memory of the processor) during execution by the computer system 1000. The main memory 1004 and the processor 1002 also constitute machine-readable media. The instructions 1024 may be sent or received over the network 130 via the network interface device 1020.
[0073] Although the machine-readable medium 1022 is shown as a single medium in the example embodiment, 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) that can store the instructions 1024. The term "machine-readable medium" should also be taken to include any medium that can store the instructions 1024 for execution by a machine and cause 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 memories, optical media, and magnetic media.
[0074] Although the subject matter has been described in detail with respect to specific exemplary embodiments and methods thereof, it is understood that those skilled in the art, once understanding the foregoing, can readily generate changes, modifications, and equivalents to these embodiments. Therefore, the scope of the present disclosure is by way of example and not by way of limitation, and the present disclosure does not exclude modifications, modifications, or additions to the subject matter that are obvious to those of ordinary skill in the art.
[0075] Other considerations
[0076] Portions of the foregoing description describe embodiments in terms of algorithmic procedures or operations. These algorithmic descriptions and representations are commonly used by those skilled in the computing arts to effectively convey the essence of their work to others skilled in the art. Although these operations are described functionally, computationally, or logically, it is understood that these operations are implemented by computer programs comprising instructions executed by a processor or equivalent circuitry, microcode, or the like. Furthermore, it has sometimes proven convenient to refer to these arrangements of functional operations as modules, without loss of generality.
[0077] References to servers, databases, software applications, and other computer-based systems, as well as actions taken and information sent to and from such systems, are provided to illustrate various concepts. 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 and among components. For example, server processes can be implemented using a single server or multiple servers working in combination, databases and applications can be implemented on a single system or distributed across multiple systems, and distributed components can operate sequentially or in parallel.
[0078] In cases where the system and method access and analyze personal information about a player (such as location information), the player may be provided with an opportunity to control whether the program or feature collects the information. Such information or data will not be collected or used until the player is provided with meaningful notice of what information will be collected and how it will be used. This information will not be collected or used unless the player consents, which the player can revoke or modify at any time. Thus, the player can control how the application or system collects and uses information about the player. Furthermore, certain information or data may be processed in one or more ways before being stored or used, thereby rendering it anonymous. For example, the player's identity may be processed so that personally identifiable information about the player cannot be determined.
[0079] As used herein, any reference to "one embodiment" or "an embodiment" means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearance of the phrase "in one embodiment" in various places in the specification does not necessarily refer to the same embodiment. Similarly, the use of "a" or "an" before an element or component is merely for convenience. This specification should be understood to indicate the presence of one or more elements or components unless it is obvious that it means otherwise.
[0080] When a value is described as "about" or "substantially" (or derivatives thereof), such value should be interpreted as being accurate to + / - 10%, unless the context clearly indicates otherwise. For example, "about 10" should be understood to mean "within the range of 9 to 11."
[0081] As used herein, the terms "comprises," "includes," "has," or any other variations thereof are intended to encompass a non-exclusive inclusion. For example, a process, method, article, or apparatus that includes a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Furthermore, unless expressly stated to the contrary, "or" refers to an inclusive or and not an exclusive or. For example, any of the following satisfies condition A or B: A is true (or exists) and B is false (or does not exist), A is false (or does not exist) and B is true (or exists), and both A and B are true (or exist).
[0082] After reading this disclosure, those skilled in the art will appreciate additional alternative structural and functional designs for systems and processes for processing transactions using self-organizing neural networks. Thus, while specific embodiments and applications have been illustrated and described, it is to be understood that the described subject matter is not limited to the precise configurations and components disclosed. The scope of protection shall be limited only by the appended claims.
Claims
1. A computer-implemented method comprising: A location for a chat room is retrieved by a server, wherein the server automatically determines the location for the chat room by: retrieving user data for a user of a mobile application, the user data describing a user location; Applying a clustering algorithm to form clusters of user locations, each cluster is assigned to a center; identifying the geographic region corresponding to the center; adjusting the geographic area based on the assigned location of the user; updating the center based on the adjusted geographic area; as well as Determining chat room locations within the geographic area based on the center by: Retrieving a location of interest of a point of interest within the geographic area; as well as For each geographic region: identifying a subset of the locations of interest within the geographic area; selecting a location of interest in the subset of locations of interest within the geographic area having a highest number of user interactions; as well as placing the chat room at the selected location of interest; selecting, by the server, one of the chat rooms for a user of a client device connected to the server for the mobile application; as well as Messages associated with the selected chat room are automatically provided by the server to the client device for display to the user within the mobile application.
2. The method of claim 1 , wherein the user data further describes user interactions with points of interest within the mobile application, and wherein clustering the user locations comprises: Assign each user location to a cell on the map; creating a single point for each cell having a cell location and a weight indicating the number of user locations assigned to the cell; as well as Based on the cell locations and weights, the cell points are clustered into points on the map.
3. The method of claim 2, wherein the cells are granular polygons that partition a map, wherein the map is a two-dimensional representation of the physical world.
4. The method of claim 1 , wherein selecting one of the chat rooms for the user comprises: receiving a current location of the user; as well as The chat room whose location is closest to the current location of the user is selected.
5. The method of claim 1 , wherein selecting one of the chat rooms for the user comprises: receiving a current location of the user; Identifying a predetermined number of chat rooms whose corresponding chat room locations are closest to the current location of the user; as well as A selection of one of the predetermined number of chat rooms is received from a client device of the user.
6. The method of claim 1, wherein the centers are iteratively adjusted so that the average distance from each user location to the nearest center is minimized.
7. The method of claim 1 , wherein the mobile application is a parallel reality game including a virtual world parallel to the real world, and a player of the parallel reality game navigates the virtual world by moving into the real world with a location-aware client device.
8. A non-transitory computer-readable storage medium comprising instructions executable by a processor, the instructions comprising: Instructions for retrieving, by a server, a location for a chat room, wherein the server automatically determines the location for the chat room by: retrieving user data for a user of a mobile application, the user data describing a user location; clustering the user locations to generate location clusters; adjusting the centers of the location clusters based on the constraints; identifying the geographic region corresponding to the center; as well as Determining a chat room location within the geographic area based on the user location within the corresponding geographic area based on the center by: Retrieving a location of interest of a point of interest within the geographic area; as well as For each geographic region: identifying a subset of the locations of interest within the geographic area; selecting a location of interest in the subset of locations of interest within the geographic area having a highest number of user interactions; as well as placing the chat room location at the selected location of interest; instructions for selecting, by the server, one of the chat rooms for a user of a client device connected to the server for the mobile application; as well as Instructions for 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.
9. The non-transitory computer-readable storage medium of claim 8, wherein the user data further describes user interactions with points of interest within the mobile application, and wherein the instructions for clustering the user locations comprise: instructions for assigning each user location to a cell on a map; instructions for creating a single point for each cell, the cell having a cell location and a weight indicating the number of user locations assigned to the cell; as well as Instructions for clustering the points of the cells into points on the map based on the cell locations and weights.
10. The non-transitory computer-readable storage medium of claim 9, wherein the cells are granular polygons that segment a map, wherein the map is a two-dimensional representation of the physical world.
11. The non-transitory computer-readable storage medium of claim 8, wherein the instructions for selecting one of the chat rooms for the user comprise: receiving a current location of the user; as well as The chat room whose location is closest to the current location of the user is selected.
12. The non-transitory computer-readable storage medium of claim 8, wherein the instructions for selecting one of the chat rooms for the user comprise: instructions for receiving a current location of the user; instructions for identifying a predetermined number of chat rooms whose corresponding chat room locations are closest to the user's current location; as well as Instructions are provided for receiving, from a client device of the user, a selection of one of the predetermined number of chat rooms.
13. The non-transitory computer-readable storage medium of claim 8, wherein the centers are iteratively adjusted such that the average distance from each user location to the nearest center is minimized.
14. A method for determining a chat room location, comprising: A location for a chat room is retrieved by a server, wherein the server automatically determines the location for the chat room by: retrieving user data for a user of a mobile application, the user data describing a user location; Applying a clustering algorithm to form clusters of user locations, each cluster is assigned to a center; identifying the geographic region corresponding to the center; adjusting the geographic area based on the assigned location of the user; updating the center based on the adjusted geographic area; as well as Determining chat room locations within the geographic area based on the center by: Retrieving a location of interest of a point of interest within the geographic area; as well as placing chat room locations for a geographic region at object locations closest to corresponding points of interest; selecting, by the server, one of the chat rooms for a user of a client device connected to the server for the mobile application; as well as Messages associated with the selected chat room are provided by the server to the client device for display to the user within the mobile application.
15. The method of claim 14, wherein the user data further describes user interactions with points of interest within the mobile application, and wherein clustering the user locations comprises: Assign each user location to a cell on the map; creating a single point for each cell having a cell location and a weight indicating the number of user locations assigned to the cell; as well as Based on the cell locations and weights, the cell points are clustered into points on the map.
16. The method of claim 15, wherein the cells are granular polygons that partition a map, wherein the map is a two-dimensional representation of the physical world.
17. The method of claim 14, wherein selecting one of the chat rooms for the user comprises: receiving a current location of the user; as well as The chat room whose location is closest to the current location of the user is selected.
18. The method of claim 14, wherein selecting one of the chat rooms for the user comprises: receiving a current location of the user; identifying a predetermined number of chat rooms whose corresponding chat room locations are closest to the current location of the user; as well as A selection of one of the predetermined number of chat rooms is received from a client device of the user.
19. The method of claim 14, wherein the centers are iteratively adjusted such that the average distance from each user location to the nearest center is minimized.
20. The method of claim 14, wherein the mobile application is a parallel reality game including a virtual world parallel to the real world, and a player of the parallel reality game navigates the virtual world by moving into the real world with a location-aware client device.
Citation Information
Patent Citations
Systems and methods for location-based social networking
US20180359287A1