WO2023203439A1 - Triggering location-based functionality based on user proximity - Google Patents
Triggering location-based functionality based on user proximity Download PDFInfo
- Publication number
- WO2023203439A1 WO2023203439A1 PCT/IB2023/053746 IB2023053746W WO2023203439A1 WO 2023203439 A1 WO2023203439 A1 WO 2023203439A1 IB 2023053746 W IB2023053746 W IB 2023053746W WO 2023203439 A1 WO2023203439 A1 WO 2023203439A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- client device
- user
- game
- proximity
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/02—Services making use of location information
- H04W4/023—Services making use of location information using mutual or relative location information between multiple location based services [LBS] targets or of distance thresholds
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/20—Input arrangements for video game devices
- A63F13/21—Input arrangements for video game devices characterised by their sensors, purposes or types
- A63F13/216—Input arrangements for video game devices characterised by their sensors, purposes or types using geographical information, e.g. location of the game device or player using GPS
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/31—Communication aspects specific to video games, e.g. between several handheld game devices at close range
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/32—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections
- A63F13/327—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using local area network [LAN] connections using wireless networks, e.g. Wi-Fi® or piconet
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/34—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using peer-to-peer connections
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/45—Controlling the progress of the video game
- A63F13/48—Starting a game, e.g. activating a game device or waiting for other players to join a multiplayer session
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
- A63F13/795—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories for finding other players; for building a team; for providing a buddy list
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
Definitions
- the present disclosure relates generally to device proximity detection and, in particular, to detecting player devices over a local area network for use in location-based applications.
- Location-based applications use the real world as their geography.
- Parallel reality games are a type of location-based application that use a virtual world that parallels the real- world geography.
- the parallel virtual world may span the entire real world, and players from all over the world may interact and perform various game objectives in the parallel virtual world by navigating and performing actions in the real world.
- Certain location-based applications may also offer multi-user activities.
- similarly-located players may play together in the same physical locations in the real world, such as by engaging in organized community game actions (e.g., live game actions associated with a particular geographic location).
- similarly-located application users may cross paths in the physical world during their daily lives without being aware of each other.
- two players of a parallel reality game may pass each other in public space while carrying their respective mobile devices used to play the parallel-reality game.
- application users may be unaware of the user community and opportunities for dynamic interactions that they encounter.
- a method, system, and computer-readable storage medium are disclosed for proximity detection between client devices associated with users of a location-based application.
- a user may detect client devices associated with other users within a proximity of the client device.
- a proximity detection of other client devices may result in application functionality (e.g., game actions in a location-based parallel reality game) corresponding to the detection, such as an exchange of application data (e.g., game data between players or their client devices, game progress for a player, access to a game feature, or establishing a connection between players).
- detection of client devices is performed using personal area network devices of the client devices, such as Bluetooth® devices or Wi-Fi Direct devices.
- proximity detection can occur when client devices are disconnected from an online system hosting the location-based application.
- the player devices can store proximity detections of other client devices and provide information describing the detections to the online system after connecting to the online system (e.g., via the internet).
- the online system then performs application functionality (e.g., game actions) based on received information describing proximity detections.
- a first client device detects a second client device within a proximity of the first client device.
- a first player of a location-based application is associated with the first client device and a second player is associated with the second client device.
- the first client device provides a notification of availability of a multiplayer activity involving the first player and the second player.
- the first client device displays on the screen of the first client device a prompt asking if the user wants to participate in a raid with a nearby player.
- the first client device receives user input indicating that the first player has selected the notification and in response, provides the multiplayer activity of the location-based application.
- the first client device detects the second client device via a third client device.
- the second client device is within a first proximity of the first client device.
- the second client device and the first client device may be outside of broadcasting network range of one another but are within an enhanced range of one another.
- the first client device detects the third client device within a second proximity (e.g., within a Bluetooth® broadcasting range).
- the first client device receives data from the third client device indicating that the third client device has detected the second client device to be within a third proximity of the third client device.
- the third client device may be located in the middle of the first and second client devices and within both of their broadcasting ranges.
- the first client device determines, using the data received from the third client device, a likelihood that the second client device is within the first proximity. For example, the first client device may use a player identifier of a player using the second client device and timestamp of a Bluetooth LE advertisement broadcasted by the second client device to determine a threshold-exceeding likelihood of the second client device being within the first proximity of the first client device at substantially the same time as identified in the timestamp (e.g., within five minutes before or after the time identified in the timestamp).
- FIG. l is a block diagram illustrating a computing environment for a location-based gaming system, according to one embodiment.
- FIG. 2 is block diagram of a client device shown in FIG. 1, according to one embodiment.
- FIG. 3 is a block diagram of the game server shown in FIG. 1, according to one embodiment.
- FIG. 4 is a conceptual illustration of an approach to extending the range of deviceproximity detection, according to one embodiment.
- FIG. 5 is a flowchart illustrating a method for device proximity detection, according to one embodiment.
- FIG. 6 is a flowchart illustrating a method for trading game items using device proximity detection, according to one embodiment.
- FIG. 7 is a flowchart illustrating an embodiment of a method for coordinating a multiplayer activity for devices detected to be within a proximity of each other.
- FIG. 8 is a flowchart illustrating an embodiment of a method for detecting a second client device within a proximity of a first client device.
- FIG. 9 is a block diagram illustrating an example computer suitable for use in the computing environment of FIG. 1, according to one embodiment.
- proximity detection and functionalities triggered by proximity detection described may extend to suitable multi-user online applications.
- multi-user online applications include, but are not limited to, social networking, educational programs, group health and fitness activities, multi-user gaming, or any suitable multi-user activity facilitated over a wireless network.
- a parallel reality game is a locationbased game having a virtual world geography that parallels 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.
- a parallel reality game is a locationbased game having a virtual world geography that parallels 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.
- the subject matter of the present disclosure may be equally applicable to other location-based applications, such as other types of games or interactive applications.
- FIG. 1 is a block diagram illustrating one embodiment of a computing environment for a location-based gaming system 100.
- the location-based gaming system 100 provides for the interaction of a plurality of players in a virtual world having a geography that parallels the real world.
- a geographic area in the real world can be linked or mapped directly to a corresponding area in the virtual world.
- a player can move about in the virtual world by moving to various geographic locations in the real world.
- 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.
- a coordinate system in the real world e.g., longitude and latitude
- a coordinate system in the virtual world may be mapped to a coordinate system in the virtual world (e.g., x/y coordinates, virtual longitude and latitude, etc.).
- the system 100 has a client-server architecture, where a game server 110 communicates with one or more client devices 120 over a network 130. Although three client devices 120 are illustrated in FIG. 1, any number of client devices 120 can be connected to the game server 110 over the network 130.
- the distributed location-based gaming system 100 includes different or additional elements. Furthermore, the functions may be distributed among the elements in a different manner than described.
- the game server 110 hosts a universal state of the location-based game and provides game status updates to players’ client devices 120 (e.g., based on actions taken by other players in the game, changes in real-world conditions, changes in game state or condition, 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 players’ client devices 120 send to the game server 110 in conjunction with the players’ inputs.
- the game server hosts several location-based games, other types of games, or other applications.
- the game server 110 processes game actions based on client devices 120 detecting each other in the real world.
- the game server 110 receives information from a client device 120 indicating that a client device 120 (e.g., client device 120A) was in proximity to another client device (e g., client device 120B).
- the information identifies one or more players associated with the relevant client devices 120, such as a player username or ID or a device ID.
- Proximity detection is described in greater detail below with reference to the client devices 120 and FIG. 2.
- the game server 110 further performs various game actions based on the information received from client devices 120 describing detections of another client device 120. Game actions based on device proximity detection and various embodiments of the game server 110 are described in greater detail below with reference to FIG. 3.
- the client devices 120 are computing devices with which players can interact with the game server 110.
- a client device 120 can be a smartphone, portable gaming device, tablet, personal digital assistant (PDA), cellular phone, navigation system, handheld GPS system, or other such device.
- PDA personal digital assistant
- FIG 1 the location-based gaming system 100 may include any number of client devices 120.
- a client device 120 executes software associated with the location-based game hosted by the server 110, such as a client game application, to allow a player to interact with the virtual world.
- a client device 120 may also include hardware, software, or both for providing a user interface for chat rooms.
- the client devices 120 are configured to detect other client devices 120 when the devices are in proximity to each other in the physical world (i.e., device proximity detections).
- client devices 120 perform proximity detection using a personal area network (PAN) device and associated communication protocols (e.g., Bluetooth, ZigBee, infrared, ultra-wideband, nearfield communication, Wi-Fi Direct, etc.).
- PAN personal area network
- the client device 120 may store information describing the detections of other client device 120 in the physical world (e.g., player identifiers associated with a user of the detected client device or device identifiers associated with the detected client device).
- the client device 120 may provide the stored information corresponding to the detections to the game server 110.
- Various embodiments of client device 120 are described in greater detail below, with reference to FIG. 2.
- the distance range at which client devices 120 can perform proximity detections of other client devices 120 may vary depending on the technique or devices used. If the client devices 120 use a PAN device for proximity detection, as described above, the distance range for proximity detection is a range at which the particular PAN device is able to detect another PAN device. For example, in the case of Bluetooth Low Energy (LE), a Bluetooth LE device can detect or connect to other Bluetooth LE devices at a range of approximately sixty meters. As another example, in the case of Wi-Fi direct, a Wi-Fi direct device can detect or connect to other Wi-Fi direct devices at a range of approximately one hundred meters. In the same or different embodiments, the client device 120 may use other devices or techniques to perform proximity detection of other client devices 120.
- LE Bluetooth Low Energy
- Wi-Fi direct a Wi-Fi direct device can detect or connect to other Wi-Fi direct devices at a range of approximately one hundred meters.
- the client device 120 may use other devices or techniques to perform proximity detection of other client devices 120.
- the client devices 120 may use geographic coordinates of client devices 120 determined using GPS receivers on the client devices 120.
- the distance range for proximity detection may be an established threshold distance (e.g., twenty meters).
- the client device 120 may connect to local area networks (LANs), such as Wi-Fi networks, and identify other devices connected to the same LAN.
- LANs local area networks
- the distance range for proximity detection may be the range at which client devices 120 can connect to a particular LAN, which may be influenced by relevant software and hardware providing the LAN (e.g., a type of wireless LAN router used).
- the network 130 can be any type of communications network, such as a local area network (e.g., intranet), wide area network (e.g., internet), or some combination thereof.
- the network can also include a direct connection between a client 120 and the game server 110.
- communication between the game server 110 and a client 120 can be carried via a network interface using any type of wired and/or wireless connection, using a variety of communication protocols (e.g., TCP/IP, HTTP, SlvlTP, FTP), encodings or formats (e.g., HTML, JSON, XML), and/or protection schemes (e.g., VPN, secure HTTP, SSL).
- FIG. 2 is block diagram of one embodiment of the client device 120A shown in FIG. 1.
- the client device 120A is associated with a player of the parallel-reality game.
- Other client devices e.g., client devices 120B and 120C
- the client devices 120 are preferably portable computing devices, such as smartphones or other portable devices, that can be easily carried or otherwise transported with a player. A player can interact with the virtual world simply by carrying or transporting their client device 120 in the actual world.
- the client device 120A includes a device proximity module 210, a game module 220, a user interface module 230, a device detection data store 240, and a local data store 250. In other embodiments, the client device 120A includes additional or different components than those depicted in FIG. 2.
- the device proximity module 210 detects other client devices 120 which come within proximity to the client device 120A associated with the player of the location-based game (i.e., a player device) as the player moves around with the client device 120A in the real world.
- the device proximity module 210 includes a PAN device.
- the PAN device broadcasts information describing the broadcasting client device 120 or a player associated with the broadcasting client device 120, such that another client device 120 within a proximity of the broadcasting client device 120 can receive the broadcast information.
- the PAN device includes a scanner which identifies information broadcast by PAN devices of other client devices 120.
- the Bluetooth LE device may use one more channels to continuously broadcast an advertisement data packet including a Universally Unique Identifier (UUID) corresponding to the Bluetooth LE device and a message including an identifier of the player (e.g., a player ID or username).
- UUID Universally Unique Identifier
- the Bluetooth LE device may periodically or continuously listen to the one or more channels used to broadcast the advertisement data packet, as described above.
- the device proximity module 210 stores information describing the detection in the device detection data store 240.
- the device proximity module 210 stores information identifying the player received by the PAN device or other contextual information, such as a timestamp indicating when the detection occurred.
- the device proximity module 210 provides information corresponding to device detections to the game module 220.
- the device proximity module 210 provides information corresponding to device detection directly to the game server 110.
- the device proximity module 210 verifies that a particular device proximity detection satisfies one or more criteria before storing information describing the device proximity detection in the device detection data store 240 or providing the information to the game module 220. For example, the device proximity module 210 may verify device proximity detections based on criteria corresponding to a time of the device proximity detection, a geographic location of the device proximity detection, a player associated with the detected device, or other contextual information.
- the device proximity module 210 verifies that a detected client device 120 or a player associated with a detected client device 120 has not been detected within a previous time interval (e.g., the previous hour, previous day, previous week, etc.) For instance, the location-based game may perform game actions based on proximity detections of the same client device 120 only once per time interval. In this way, the location-based game can prevent multiple or frequent game actions for two players whose client devices 120 are in the same physical location for a period of time or otherwise detect each other multiple times in some time interval. By verifying device proximity detections satisfy one or more criteria, the device proximity module 120 prevents duplicate storage of proximity detections which will not result in additional game actions after being provided to the game server 110. In alternative embodiments, the device proximity module 210 stores information describing all device proximity detections and the device proximity detections are instead verified based on one or more criteria as described above by the game module 220 or the game server 110.
- a previous time interval e.g., the previous hour, previous day, previous week, etc.
- the device proximity module 210 can enable a range enhancement for proximity detection.
- An enhanced range may be a distance between two devices that is greater than a local network or PAN broadcasting range.
- a device’s Bluetooth® LE network range is approximately a sixty meter radius, and another device that is one hundred and ten meters away may not be within detectability range of the device’s Bluetooth® network range.
- the device proximity module 210 enables a range enhancement that enables the other device to be within proximity of the device.
- the device proximity module 210 can detect another device (e.g., the device 120B) within its network broadcasting range (e.g., local network or PAN).
- the device proximity module 210 can determine the presence of yet another device (e.g., the device 120C) that is within the network broadcasting range of the client device 120B but is not within the network broadcasting range of the client device 120A.
- the client device 120C is in an enhanced range of the client device 120A.
- the device proximity module 210 determines that the client devices 120A, 120B, and 120C are proximal to one another.
- An enhanced range may be a distance that is a multiple of a broadcasting network range.
- two devices may be within a Bluetooth® range (e.g., sixty meters) of each other and a third device may be sixty meters away from one but one hundred and twenty meters away from another (e.g., in a configuration similar to that as shown in FIG. 4).
- devices may be within one hundred and eighty meters of each other while being within an enhanced range of one another: a fourth device is within sixty meters of the third device but one hundred and eighty meters away from the first device, but the Bluetooth advertisement of the fourth device is passed along from the third device to the second device, which in turn passes it along to the first device for the first device to determine that the fourth device is within its enhanced proximity.
- a maximum distance of the enhanced range may be preconfigured or dynamically adjusted based on a threshold number of players detected to be within an enhanced range of one another For example, the enhanced proximity range may be increased until at least a threshold number of devices are within the enhanced proximity range or a maximum enhanced range is reached. Thus, players in more sparsely populated areas may have a greater enhanced range than those in densely populated areas.
- a client device 120A may receive proximity information of another device, determine that the other device is outside of the enhanced range, and determine that the other device is not proximate. For example, client devices may annotate proximity information passed along from device to device with a number indicating how many times the data has hopped from device to device (e.g., a device increments the number it receives before passing it along to another device). A client device may use a maximum hop number to determine a device is located further than an enhanced range away (e.g., a maximum enhanced range of thirty meters may be equivalent to a maximum hop number of three).
- the device proximity module 210 may communicate with proximal devices to determine whether a device is within an enhanced range, which is also referred to as an enhanced proximity.
- the device proximity module 210 can receive data from the client device 120B indicating that the client device 120C is within its network broadcasting range (e.g., after a device proximity module of the client device 120B determines which devices are within the proximity of the client device 120B).
- the device proximity module 210 may determine, after receiving the data from the client device 120B, whether the client device 120C is already within the network broadcasting range of the client device 120A.
- the device proximity module 210 may add a record of the client device 120C as being within an enhanced range of the client device 120 A.
- the device proximity module 210 may broadcast information about the client device 120A or devices within the proximity of the client device 120A to other devices.
- the device proximity module 210 may broadcast a list of devices within the proximity of the client device 120A.
- the list may include devices within an enhanced proximity or a non-enhanced proximity (e.g., within a Bluetooth® broadcast range).
- a client device may automatically determine whether to broadcast a list of devices within an enhanced or non-enhanced proximity depending on the number of players within a nonenhanced proximity.
- the client device may determine to limit the list of devices to within a non-enhanced proximity (e.g., to prioritize multiplayer activities with players in the immediate vicinity).
- a sparsely populated area e.g., a rural area
- the client device may determine to share lists of devices within an enhanced proximity.
- the device proximity module 210 may determine a likelihood that another client device is within a proximity of the client device 120 A.
- the device proximity module 210 can use information provided within broadcast messages transmitted from nearby devices (e.g., Bluetooth® LE advertisements) to determine the likelihood.
- Information may include a timestamp at which the advertisement is generated, a hardware identifier of the device generating the advertisement, device type, device manufacturer, device movement data (e.g., accelerometer data), device capabilities, or any other suitable information about the device or broadcasting metadata.
- the device proximity module 210 can use information provided within messages generated by the location-based game application that include information relevant to the game.
- the device proximity module of a nearby client device can generate a message that includes a player’s identifier and the player’s intention to participate or not participate in a multiplayer activity with proximate players. The generated message can then be transmitted over a local or personal area network to nearby devices.
- the device proximity module 210 may receive data indicating that another client device has detected one or more other client devices within proximity or enhanced proximity. In some embodiments, the device proximity module 210 may receive a first timestamp of a first broadcast message generated by a first client device and receive a second timestamp of a second broadcast message generated by a second client device. The timestamps may indicate when the respective broadcast messages were generated or transmitted.
- the broadcast messages may be local or personal area network broadcast messages.
- the device proximity module 210 can compare the first and second timestamps. In response to determining that the first timestamp is within a threshold time range of the second timestamp, the device proximity module 210 may determine that the second client device is within the proximity or enhanced proximity of the first client device.
- the device proximity module 210 may use the broadcast message data and a model (e.g., rules-based model, machine learning model, statistical model, or any suitable predictive algorithm) to determine a likelihood that devices are proximate to each other.
- a model e.g., rules-based model, machine learning model, statistical model, or any suitable predictive algorithm
- the device proximity module 210 applies a machine learning model trained on broadcast message data for two or more devices labeled with whether the two or more devices were proximate to one another.
- the device proximity module 210 may represent the broadcast message data as feature vectors, where dimensions of the feature vectors correspond to independent data provided in the broadcast messages (e.g., timestamps, device type, and accelerometer data).
- the machine learning model may thus be trained to determine that two devices broadcasting messages that have substantially similar timestamps but one device is moving at ten kilometers per hour while one is stationary may have less than a ten percent likelihood of being proximate to one another._
- the game server 110 facilitates device proximity detection using information that the client devices transmit to the game server 110.
- the client device 120A may transmit to the game server 110 the broadcast messages received from proximate devices.
- the game server 110 may then use the contents of the messages to determine the likelihood that devices are within proximity of each other.
- the game server 110 receives broadcast messages from multiple client devices and uses timestamps of the broadcast messages and player identifiers provided in the broadcast messages to determine that the devices were in proximity to one another and transmit instructions to the respective client devices to initiate an action (e.g., an in-game item trade).
- the game server 110 may determine that the timestamps list substantially similar times (e.g., within one minute of one another). However, in response to determining that the timestamps do not list substantially similar times (e.g., beyond one minute of one another), the game server 110 may determine that the devices were not proximate to one another.
- a client device or a game server receives local or personal area network broadcast messages from two or more client devices.
- a device proximity module hosted on the client device may perform this determination.
- the client device or game server compares timestamps of the broadcast messages (e.g., to compare when the broadcast messages were generated or transmitted).
- the client device or game server determines that the devices associated with the compared timestamps were within proximity of one another.
- the client device or game server may then notify the client devices associated with the compared timestamps of the determination that the devices were within proximity of one another (e.g., a message listing device identifiers or player identifiers and a binary flag indicating that the devices were within proximity or enhanced proximity of one another)
- client devices associated with the compared timestamps of the determination that the devices were within proximity of one another e.g., a message listing device identifiers or player identifiers and a binary flag indicating that the devices were within proximity or enhanced proximity of one another
- a player’s client device receives a Bluetooth® advertisement of another device that had been at the player’s present location ten minutes ago, but has since left, but the advertisement was still being communicated by remaining, local devices maintaining a list of devices that, at some time, were determined to be proximate.
- the player’s client device, or a game server that has been forwarded the broadcast information from the player’s client device may determine that the timestamp indicating the advertisement was broadcasted ten minutes ago is beyond a threshold time duration of one minute since broadcast and that the other device is no longer within proximity.
- the game module 220 operates a client-side game application for a parallel reality game hosted by the game server 110.
- the game module 220 communicates information about the virtual world with the user interface module 230, such as to display content associated with the virtual world.
- the game module 220 further receives or obtains game data from the game server 110.
- the game module 220 may receive game data from the game server 110 describing available game content based on the location of a client device 120 (e g., game items), the geographic locations of devices associated with other players, or upcoming community events (e.g., competitive tournaments).
- the game module 220 transmits information describing device proximity detections made by the device proximity module 210, or stored in the device detection data store 240, to the game server 110.
- the game module 220 receives or obtains game data from the game server 110 describing one or more game actions based on information describing device proximity detections provided by the game module 220 to the game server 110. Game actions based on device detections are described in greater detail below with reference to FIG. 3. [0042]
- the game module 220 transmits information describing device detections to the game sever 210 based on the occurrence of certain events.
- the device proximity module 210 may store information describing any device detections which occurred during a time period when the game module 220 was disconnected. In this case, after the game module 220 reconnects to the game server 110 (e.g., over the network 130), the game module 220 may transmit some or all of the device detections which occurred during the time period. As another example, the game module 220 may transmit information describing one or more device proximity detections in response to certain user interactions with the client device 120, such as a user launching or resuming a client game application associated with a location-based game hosted by the game server 110.
- the player associated with the client device 120 may manually indicate a desire to provide stored device detections through a user interaction with the client device 120.
- the game module 220 provides information describing one or more stored device detections to the game server 110 periodically, such as at a pre-defined time interval (e.g., every minute).
- the client-side game application operated by the game module 220 can include a multiplayer activity (e.g., an AR activity).
- the game module 220 may receive from the game server 110 game data that includes data for providing the multiplayer activity at the client device 120A.
- the game data of a multiplayer activity can include AR objects, game actions based on a number of players involved or players’ proximities, reward objects for completing the multiplayer activities, special effects for rendering an environment of the multiplayer activity, etc.
- the game module 220 can receive the data for providing the multiplayer activity while the client device 120Ais connected to the game server 110 and when the client device 120A cannot maintain a network connection with the game server 110, the game module 220 can still provide the multiplayer activity to the client device 120A (e.g., in an offline mode of the location-based game).
- the game module 220 may provide the multiplayer activity to the client device 120A in response to receiving user input indicating that the user is requesting to participate in the multiplayer activity.
- the game module 220 may use a local network or PAN to communicate data between the game modules of other client devices to facilitate offline gameplay.
- the game module 220 may use Bluetooth® to transmit a player’s data (e.g., avatar appearance, gameplay statistics, gameplay inventory, etc.) to a game module of another client device, where the other game module may display the player’s data via a user interface module of the other client device.
- the game module 220 can upload game data generated at the client device 120A during offline gameplay to the game server 110 when the client device 120Ais online again (e.g., connected to the game server 110 through the network 130).
- the game data communicated by the game module 220 can include player status information indicating their availability to participate in a multiplayer activity. This status information can indicate that player does not want to participate in a multiplayer activity, wants to participate, is currently participating and can accept additional players, is participating and cannot accept additional players, or any suitable status to enable another game module to facilitate a multiplayer activity between two or more players.
- the game module 220 can request status information of the other client device and begin facilitating a multiplayer activity depending on the received status information.
- the client device 120A is offline from the game server 110 and presently within Bluetooth range of the client device 120B, as determined by the device proximity module 210.
- the game module 220 transmits a request to the client device 120B for status information.
- the game module 220 uses received status information to determine that the client device 120B is not presently participating in a multiplayer activity but the corresponding player may like to participate.
- the game module 220 transmits an multiplayer activity invitation to the client device 120B, where the invitation serves as a request for the availability of the multiplayer activity involving the players of the client devices 120A and 120B.
- the game module 220 determines that the multiplayer activity is indeed available and provides the multiplayer activity to at least the player of the client device 120A (e.g., the game module 220 may also transmit the game data of the multiplayer activity to the client device 120B).
- the client device 120A is presently online but was offline when the device proximity module 210 detected it was within proximity of the client device 120B. Furthermore, the player was not engaged with the location-based game at the earlier time (e.g., the client device 120A was in their backpack or the player was watching a movie downloaded to their device rather than playing the locationbased game). At the earlier time, the game module 220 requests status information from the client device 120B, and the status information indicates that the client device 120B is presently participating in a multiplayer activity (e.g., with the client device 120C) and is accepting additional players.
- a multiplayer activity e.g., with the client device 120C
- the game module 220 can record an identifier of the multiplayer activity or other suitable metadata of the multiplayer activity (e g., a timestamp, a location, identifiers of the players involved in the multiplayer activity, etc.) for future access to game data of the multiplayer activity when the client device 120A returns online and can download the game data from the game server 110.
- suitable metadata of the multiplayer activity e g., a timestamp, a location, identifiers of the players involved in the multiplayer activity, etc.
- the game module 220 can download the game data of the multiplayer activity from the client device 120B while within proximity with the client device 120B. At the present time, the game module 220 provides a notification to the player that the multiplayer activity is available now. For example, the game module 220 may treat the real players as non-player characters and recreate gameplay as if the player of the client device 120A was participating in the live gameplay. When the devices were within proximity with one another, the devices may exchange game data relevant to the multiplayer activity (e.g., player identifiers, information, such as damage statistics, of game items usable by other players, or any other suitable information for facilitating multiplayer activity).
- game data relevant to the multiplayer activity e.g., player identifiers, information, such as damage statistics, of game items usable by other players, or any other suitable information for facilitating multiplayer activity.
- the client devices may query the game server 110 for additional data about the other players associated with the proximate devices (e.g., query when their connection to the network 130 has returned).
- the client device 120A may use the player identifier associated with the player of the client device 120B to query the game server 110 for a history of the actions that the player of the client device 120B has performed during multiplayer activities.
- the game data received when the devices were within proximity to one another, the additional game data queried from the game server 110, or a combination of both may be used by the game module 220 to recreate or simulate gameplay of the other players regardless of the current proximity of the client device 120A to other client devices.
- the game module 220 may use geofencing associated with a point of interest (e.g., a landmark or other geographical location) to determine one or more players with which to recreate or simulate gameplay.
- a point of interest e.g., a landmark or other geographical location
- the game module 220 provides the multiplayer activity to the player (e.g., at the display of the client device 120A).
- the user interface module 230 of the client device 120 constructs and displays components of user interfaces of the client device 120.
- the user interface displays depictions of the virtual world to the user including components of the virtual world, such as virtual elements and virtual experiences, as received from the game module 220.
- the user interface module 230 may also display chat room locations in the virtual world, as well as messages sent between users in the chat rooms.
- a user may interact with the client device 120 to engage with virtual elements, participate in virtual experiences, or converse in chat rooms.
- the user interface module 230 may display a view of the virtual world depicting points of interest, chat rooms, and other virtual experiences.
- the user interface module 230 provides user interfaces relevant to proximity detections of one or more other client device 120. For example, the user interface module 230 may display a notification indicating that another client device 120 was detected and information relevant to the detection, such as a player ID of a player associated with the detected device or a time when the detection occurred. In the same or different embodiments, the user interface module 230 provides elements allowing a user of the client device 120 to determine what happens based on a proximity detection of other client devices.
- the user interface module 230 may provide user interfaces including elements for adjusting proximity detection preferences (e.g., enable or disable device proximity detection), initiating a transmittal of information describing device proximity detections stored in the device detection data store 240, reviewing device proximity detections stored in the device detection data store 240, or selecting from possible game actions based on proximity detections.
- the user interface module 230 may provide an interface including elements for initiating proximity detection, such as a “search for other players” element (e g., a button).
- the user interface module 230 may provide user inputs for participating in a multiplayer activity with client devices proximate to the client device 120A.
- the user interface module 230 may provide a notification of an available multiplayer activity, where the notification may include game data describing the activity or players arranged to be involved in the activity.
- the notification can be a push notification provided at the client device 120Awhen the client device 120Ais not executing the location-based application. For example, a notification may appear in the notifications bar of the user’s smartphone.
- the user interface module 230 causes a push notification popup to appear over other applications executing on the client device 120A. The user may select the push notification and cause the client device 120Ato launch the location-based application and participate in the multiplayer activity.
- the notification may be an invitation to join the multiplayer activity.
- the notification may be displayed by the user interface module 230 responsive to the device proximity module 210 detecting another device within range of the client device 120A and responsive to the game module 220 determining that status information received from the other device indicates that the other player wants to participate in the multiplayer activity
- the user interface module 230 may receive user input selecting the displayed notification (e.g., a “Join Now” button of the displayed notification).
- the game module 220 may provide the multiplayer activity.
- the device detection data store 240 is one or more computer-readable media configured to store information describing device proximity detections by the client device 120.
- the information stored by the device detection data store 240 may be received from the client device 120 or otherwise obtained or determined by the game server 110.
- the device detection data store 240 stores at least an identifier of a player associated with a device detected based on a device proximity detection.
- the device detection data store 240 may further store contextual information describing a device proximity detection, such as a timestamp indicating when a device proximity detection occurred or a geographic location (e.g., GPS coordinates) indicating where a device proximity detection occurred.
- the device detection data store 240 stores information describing one or more games corresponding to a given device proximity detection (e.g., a game name or identifier). In still further embodiments, the device detection data store 240 stores security information preventing inaccurate or fraudulent proximity detections, a duration of time a proximity detection occurred (e.g., an amount of time another device was detected for), or other information describing players or devices relevant to a proximity detection.
- the local data store 250 is one or more computer-readable media configured to store data used by the client device 120.
- the local data store 250 may store the 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.
- the local data store 250 may also store player settings or preferences such as their preference to join a multiplayer activity, which can be used by a game module to determine whether a multiplayer activity should be facilitated between two proximate devices.
- the local data store 250 is shown as a single entity, the data may be split across multiple media. Furthermore, data may be stored elsewhere (e.g., in a distributed database) and accessed remotely via the network 130.
- the game server 110 hosting a location-based parallel reality game.
- the game server 110 includes a universal game module 310, a game action module 320, and a game database 330.
- the game server 110 contains different or additional elements.
- the functions may be distributed among the elements in a different manner than described.
- the game server 110 can be configured to receive requests for game data from one or more client devices 120 (for instance, via remote procedure calls (RPCs)) and to respond to those requests via the network 130.
- the game server 110 can encode game data in one or more data files and provide the data files to a client device 120.
- the game server 110 can be configured to receive game data (e.g., player location, player actions, player input, etc.) from one or more client devices 120 via the network 130.
- the client device 120 can be configured to periodically send player input, player location, and other updates to the game server 110, which the game server 110 uses to update game data in the game database 330 to reflect changed conditions for the game.
- the game server 110 may also send game data to client devices 120, such as other player locations, chat room locations, or virtual element locations.
- the universal game module 310 hosts the location-based game for players and acts as the authoritative source for the current status of the location-based game.
- the universal game module 310 receives game data from client devices 120 (e.g., player input, player location, player actions, player status, landmark information, etc.) and incorporates the game data received into the overall location-based game for all players of the location-based game.
- the universal game module 310 stores a total game state of the game that can be sent to a client device 120 to update the local games state in the game module 220.
- the universal game module 310 can also manage the delivery of game data to the client devices 120 over the network 130.
- the game action module 320 can be a part of or separate from the universal game module 310.
- the game action module may also be referred to generally as an application action module (e.g., for applications for fitness or social networking that are not necessarily facilitating gaming and exchanging game data).
- the game action module 320 is configured to perform game actions based on proximity detections performed by client devices 120.
- the game action module 320 receives information describing proximity detections from client devices 120. Using the received proximity detection information, the game action module 320 performs game actions which create, modify, or otherwise process game data.
- the game action module 220 can provide game data to client devices 120 based on performed game actions, such as a client device 120 which provided the proximity detection information to the game action module 320 resulting in the game actions.
- the game action module 320 performs game actions which process game data corresponding to players of the location-based game (e.g., associated with a profile or account for the player), such as any combination of game data described below with reference to the game database 330 (e.g., game data of types (l)-(9)).
- game data e.g., associated with a profile or account for the player
- the game action module 320 may modify the player profiles of player A or player B based on a game action.
- the game action module 320 communicates with the universal game module 310 in order to perform game actions. For example, the game action module 320 may communicate with the universal game module 310 to determine what game actions can be performed based on the received proximity detection information or other contextual information (e.g., the current time or game features). In the same or different embodiments, the game action module 320 provides information describing one or more game actions performed to a client device 120, such as information describing the processing performed on game data corresponding to one or more game actions. The information describing the one more game actions performed may include a notification for display on the client device 120, such as a notification indicating the game action occurred or describing the game action.
- the game action module 320 performs a game action which processes game data of one or both players corresponding to a device proximity detection. In some embodiments, the game action module 320 performs a game action for a player associated with a client device 120 which provided the information describing a proximity detection (i.e., the detecting device). For instance, if client device 120A provided information describing a device proximity detection of client device 120B, the game action module 320 could perform a game action affecting game data for a player associated with client device 120A.
- Such game actions may include the game action module 320 providing a game item as a reward to the player, providing game experience to the player (e g., leveling up a game character associated with the player), recommending the player send a friend request to the other player, or other game actions specific to the player.
- the game action module 320 may provide a notification of a multiplayer activity to client devices detected to be within proximity of each other. If both users select the notifications and indicate that they want to participate in the multiplayer activity, the game action module 320 may provide the multiplayer activity to the proximate client devices.
- the game action module 320 performs a game action which processes game data of a player associated with the detected device (e.g., client device 120B in the previous example).
- the game action module 320 may perform game actions for the player associated with the detected device which are the same or different as those performed on for the player associated with the detecting device.
- the game action module 320 performs a game action which processes game data of both the player associated with the detecting device and the player associated with the detected device (e g., both client device 120A and client device 120B in the above example).
- Game actions performed by the game action module 320 affecting the game data of both players may include exchanging game elements between the players (e g., game items, images, messages, game statuses, etc ), providing game elements from one player to the other player, initiating an in-game event for both of the players (e.g., a battle), adding one player to an existing augmented reality experience in which the other player is already engaged, updating an in-game map associated with one or both of the players, or providing information describing the opposite player for establishing a connection between the players.
- game elements between the players e g., game items, images, messages, game statuses, etc
- game elements from one player to the other player e.g., a battle
- an in-game event for both of the players e.g., a battle
- adding one player to an existing augmented reality experience in which the other player is already engaged e.g., a battle
- updating an in-game map associated with one or both of the players e.g., a battle
- the game action module 320 determines one or more game actions to perform based on whether the game action module 320 received information describing a device proximity detection from both client devices 120 involved in the proximity detection. For example, if the game action module receives information describing a detection of client device 120B from client device 120 A, the game action module 320 may determine one or more game actions to perform based on whether information describing a detection of client device 120A from client device 120B is also received. In other embodiments, the game action module 320 determines one or more game action to perform based on device proximity detection information received from a single client device 120.
- a game action performed by the game action module 320 is an exchange of game items between two players of the location-based game (i.e., a game item trade). For instance, in response to receiving information describing a proximity detection between a first player and a second player, the game action module 320 can obtain one or more game items associated with the first player to trade for one or more game items associated with the second player. In one embodiment, players are able to designate one or more game items (e.g., game items associated with their player profile or account) which they desire to trade with other players.
- game items e.g., game items associated with their player profile or account
- a player may select from a set of game items they have collected by playing the location-based game to be added to a group of game items which can be traded with other players when a device proximity detection occurs. This selection may be made by the player using a client device 120 associated with the player or another device (e.g., a laptop or desktop computer) which can communicate with the game server 110.
- the game action module 320 can then execute a trade between two players when one or both of their associated client devices 120 detects the other device in the real world, as indicated by received device proximity detection information. For example, if client device 120A detects client device 120B, the game action module 320 can exchange one or more game items for a player associated with client device 120A and a player associated game client device 120B.
- the game action module 320 updates game data in the game database 330.
- the game action module 320 may additionally, or alternatively, communicate with the universal game module 310 to execute the game item trade or convey that the game item trade occurred.
- the game action module 320 provides a notification for display to one or both of the client device 120 involved in a game item trade indicating the trade occurred or describing the details of the trade.
- the game action module 320 performs additional processing in order to execute a game item trade.
- the game action module 320 determines or identifies values associated with game items designated for trade by players corresponding to a device proximity detection.
- a value for a game item may correspond to characteristics of a game item, a price for game items in a real or in-game currency, other indicators of a game item value, or some combination thereof.
- the game action module 320 uses the values of the game items in order to select a one or more game items for each player corresponding to a device proximity detection to trade. For example, the game action module 320 may exchange game items which have the same value or values with a difference within a trade threshold.
- Other examples of information which the game action module 320 may consider in executing trades between players include associations between players in the location-based game (e.g., are the players friends, are they both associated with an in-game organization, such as a team, etc.), or characteristics of the game items (e.g., a game item type).
- the game database 330 includes one or more machine-readable media configured to store game data used in the location-based game to be served or provided to client devices 120 over the network 130.
- the game data stored in the game database 330 can include: (1) data associated with the virtual world in the location-based game (e.g. imagery 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, such as player profile or account data (e.g. player information, player experience level, player currency, player inventory, current player locations in the virtual world/real world, player energy level, player preferences, team information, etc ); (3) data associated with game objectives (e.g.
- the game data stored in the game database 330 can be populated either offline or in real time by system administrators or by data received from players, such as from one or more client devices 120 over the network 130.
- the game database 330 may also store real-world data.
- the real-world data may include population density data describing the aggregate locations of individuals in the real world; player density data describing the aggregate locations of players in the real world; player actions associated with locations of cultural value or commercial value; player heat map data describing the distribution of game actions in a geographic area; point of interest data describing real-world locations that correspond to locations of virtual elements in the virtual world; terrain data describing the locations of various terrains and ecological conditions, such as large bodies of water, mountains, canyons, and more; 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 travelled, minutes exercised, etc.); and other suitable data.
- the real-world data can be collected or obtained from any suitable source.
- the game database 330 can be coupled to, include, or be part of a map database storing map information, such as one or more map databases accessed by a mapping service.
- the game server 110 can be coupled to one or more external data sources or services that periodically provide population data, hazard data, weather data, event calendar data, or the like.
- modules beyond the modules shown in FIG. 3 can be used with the game server 110. Any number of modules can be programmed or otherwise configured to carry out the server-side functionality described herein. In addition, the various components on the server-side can be rearranged. Other configurations will be apparent in light of this disclosure and the present disclosure is not intended to be limited to any particular configuration.
- FIG. 4 is a conceptual illustration of an approach to extending the range of deviceproximity detection, according to one embodiment.
- the conceptual illustration include an environment in which the client devices 120A and 120C are proximate to one another through an enhanced range.
- the client devices 120A-C have respective network broadcasting ranges 400, 410, and 420.
- the broadcasting ranges 400, 410, and 420 may be Bluetooth® LE broadcasting ranges of approximately sixty meters. Thus, each circle of the broadcasting range may have a radius of sixty meters.
- the client device 120A and the client device 120B may be separated from one another by less than sixty meters, and the device proximity modules of the respective devices may use a short-range, local connection 430 to determine that the two devices are within proximity of one another.
- the client device 120B and the client device 120C are within ten meters of one another and may use a connection 440 to determine that the two devices are within proximity of one another.
- the client devices 120Aand 120C are out of the broadcasting range from one another, and the device proximity modules of the respective devices may be unable to establish a short-range local connection and initially determine that the two devices are not within proximity of one another.
- a device proximity module of either the device 120Aor 120C may determine that the client device 120B is proximate to the other device, and accordingly, determine that the other device is within an enhanced range and is indeed proximate.
- the client devices 120Aand 120C may form a connection 450, which can be facilitated by the client device 120B.
- the device proximity module may request information of the proximate devices from the client device 120B.
- the client device 120A receives, from the client device 120B, a player identifier of the player using the client device 120C.
- FIG. 5 is a flowchart illustrating an embodiment of a method 500 for device proximity detection.
- the steps of FIG. 5 are illustrated from the perspective a client device 120 performing the method 500. However, some or all of the steps may be performed by other entities or components. In addition, some embodiments may perform different steps or perform some of the steps in a different order or in parallel.
- the method 500 begins with a first client device (e.g., the client device 120A) scanning 510 a PAN for other client devices.
- the first client device may use a scanner of a PAN device to scan for information broadcast by PAN devices of other client devices 120 in order to make device proximity detections.
- the first client device receives 520 an identifier from a second client device (e g., the client device 120B) via the PAN which corresponds to an application on the second client device.
- the first client device may perform a proximity detection of the second client device by receiving information broadcast by the second client device (e.g., using the device proximity module 210) including a player ID of a location-based game player associated with the second client device.
- the first client device stores 530 the identifier received from the second client device.
- the first client device may store the identifier in the device detection data store 240.
- the first client device provides 540 the identifier to an online system corresponding to the application.
- the first client device may provide the identifier to the game server 110 (e.g., using the game module 220).
- the first client device receives 550 data for the application corresponding to an action performed by the online system based on the receiving of the identifier by the first client device.
- the first client device may receive game data corresponding to a game action performed by the game server 110.
- FIG. 6 is a flowchart illustrating an embodiment of a method 600 for trading game items using device proximity detection.
- the steps of FIG. 6 are illustrated from the perspective of a client device 120 performing the method 600.
- some or all of the steps may be performed by other entities or components.
- some embodiments may perform different steps or perform some of the steps in a different order or in parallel.
- the method 600 begins with identifying 610 a first game item for a first player of a location-based game associated with a first client device (e.g., the client device 120A) as being available to trade.
- the first player may designate one or more game items included in game data for the first player as available to trade.
- the first client device detects 620 a second client device associated with a second player (e.g., the client device 120B) within a proximity of the first client device.
- the first client device receives an identifier of the second player based on a proximity detection of the second client device.
- the first client may perform a proximity detection of the second client device using the device proximity module 210.
- the first client device stores 630 the identifier of the second player.
- the first client device may store the player identifier in the device detection data store 240.
- the first client device provides 640 the identifier to an online system hosting the location-based game.
- the first client device may provide the identifier to the game server 110 (e.g., using the game module 220).
- the first client device receives 650 game data from the online system indicating an exchange of the first game item for the second game item.
- the first client device may receive a push notification from the game server 110 indicating the exchange occurred or describing the game item which the first player received.
- FIG. 7 is a flowchart illustrating an embodiment of a method 700 for coordinating a multiplayer activity for devices detected to be within a proximity of each other.
- the steps of FIG. 7 are illustrated from the perspective of a client device 120 performing the method 700. However, some or all of the steps may be performed by other entities or components. In addition, some embodiments may perform different steps or perform some of the steps in a different order or in parallel.
- a first client device detects 710 a second client device within a proximity of the first client device.
- the first client device is associated with a first player and the second device is associated with a second player.
- the first client device may be offline from a game server (e g., the game server 110) and within Bluetooth® range of the second client device.
- a device proximity module of the first client device detects that the second client device is within the Bluetooth broadcasting range of the first client device, and thus, is within the proximity.
- the first client device provides 720 a notification of availability of a multiplayer activity involving the first and second players.
- a game module of the first client device provides a notification for display at a screen of the first client device that includes an invitation to participate in a multiplayer activity (e.g., an AR activity) with the second client device.
- the game module may determine whether the second player is available or wants to participate in the multiplayer activity.
- the game module can transmit a request to the second client device for status information.
- the game module can then use received status information to determine that the second client device is presently participating in a multiplayer activity (e.g., with a third client device) and is accepting additional players for the multiplayer activity.
- the game module can then provide 720 the notification for display at the first client device’s screen (e.g., a string of text describing the invitation “Another trainer nearby is currently participating in a raid with other trainers. Would you like to join them?” and a user input button for accepting the invitation) [0077]
- the first client device receives 730 user input indicating selecting of the notification.
- a user interface module of the first client device displays the notification at the first client device with a user input element (e.g., a button) for the user to select the notification.
- the user input element may be for providing approval or rejection of an invitation to join a multiplayer activity.
- the first client device 740 provides the multiplayer activity of the location-based game at the first client device.
- the game module of the first client device in response to receiving the user’s approval to join the multiplayer activity, sends a request to the second client device for an invitation to join the multiplayer activity.
- the game module of the second client device may generate and transmit the requested invitation to the game module of the first client device, where the invitation may include game data of the multiplayer activity that is stored locally at the second client device or at a game server (e.g., the second client device is online but the first client device is not).
- the game module of the first client device may use the received game data to provide the multiplayer activity at the first client device (e.g., via a user interface module).
- FIG. 8 is a flowchart illustrating an embodiment of a method 800 for detecting a second client device within a proximity of a first client device.
- the method 800 is shown as one embodiment of the detecting 710 step in the method 700 of FIG. 7.
- the steps of FIG. 8 are illustrated from the perspective of a client device 120 performing the method 800. However, some or all of the steps may be performed by other entities or components. In addition, some embodiments may perform different steps or perform some of the steps in a different order or in parallel.
- a first client device detects 810 a third client device within a second proximity of a first client device.
- the third client device is associated with a third player.
- a device proximity module of the first client device may detect 810 other client devices within proximity of the first client device. Referring to the layout of client devices shown in FIG. 4, the client device 120A, the first client device, can detect 710 the client device 120C, the second client device, using the method 800.
- the client device 120A detects 810 the client device 120B, the third client device.
- the detection 810 may be achieved through a local network or PAN connection such as Bluetooth® LE.
- the first client device receives 820 data indicating that the third client device has detected the second client device to be within a third proximity of the third client device.
- the device proximity module of the first client device may receive 820 the data.
- the received 820 data may include broadcast information identifying the broadcasting device, the broadcast itself, or a combination thereof.
- the client device 120A can receive 820 data from the client device 120B, where the data includes or is derived from broadcast information transmitted by the client device 120C to the client device 120B.
- the client device 120C transmits data such as an identifier of the device, an identifier of the player, or a timestamp of the transmission within a broadcast message (e.g., a Bluetooth LE advertisement).
- the client device 120B receives the broadcast message from the client device 120C and can store the data or derive additional data from the received broadcast message. For example, the client device 120B may create a record of the broadcast message’s contents and append data of the signal strength at which the broadcast message was received. The client device 120B can subsequently provide data received from other devices regarding their proximity, such as this example record, to other devices such as the client device 120A.
- the first client device may receive 820 the data in response to requesting the data from other client devices within proximity of its broadcasting range. Alternatively or additionally, the first client device may receive 820 the data automatically as part of the broadcast message received from other devices announcing their presence. Likewise, the first client device may broadcast data about devices within its proximity to other devices.
- the third client device determines that both the first and second client devices are within proximity of the third client device using timestamps and subsequently, the third client device transmits data to the first client device indicative of this determination.
- the client device 120B receives local network broadcasting messages (e.g., Bluetooth® advertisements) from both the client device 120A and the client device 120C. The client device 120B then compares the timestamps of the received messages to determine whether the messages were generated or transmitted by the respective devices within a threshold time duration of one another (e.g., the time difference is one minute or less).
- the client device 120B may also have a device proximity module, a game module, and other components of FIG. 2 shown as hosted on the client device 120A.
- the device proximity module described here may be configured to perform this timestamp comparison to determine whether two or more devices are within proximity of each other.
- the first client device determines 830, using the received data, a likelihood that the second client device is within the first proximity of the first client device.
- the device proximity module of the first client device may make this determination.
- the device proximity module may compare the determined 830 likelihood to a threshold to determine whether another device is within a proximity or enhanced proximity of the first client device.
- the first client device may implement a statistical model, decision tree, machine learning model, or any other suitable algorithm for determining a likelihood that two devices are within proximity of one another based on broadcasted data (e g., timestamp of the broadcast, signal strength of received broadcast, broadcast sender, broadcast author, etc.).
- the first client device may also use additional context information such as a current location (e.g., GPS coordinates) as input into an algorithm for determining a likelihood that two devices are within proximity of one another.
- additional context information such as a current location (e.g., GPS coordinates) as input into an algorithm for determining a likelihood that two devices are within proximity of one another.
- the first client device may determine 830, using a received confirmation that the timestamps met a condition indicating the devices are proximate (e g., difference among timestamps is within a threshold time difference), that the likelihood that the second device is within proximity to the first device exceeds a threshold likelihood (e g., 100% likelihood).
- a threshold likelihood e.g., 100% likelihood
- the client device 120A applies data received from the client device 120B to a statistical model to determine that the client device 120C is within proximity of the client device 120A with at least a threshold likelihood.
- the statistical model may be generated by the first client device or by a game server (e.g., the game server 110) and stored at the first client device.
- the first client device may use historical broadcast data received from client devices and verification of proximity to create the statistical model. Examples verifying proximity include confirmations from players confirming to the device proximity module 210 that another player is within an enhanced proximity or location information provided by the game server 110 while devices are online confirming that the other player is within the enhanced proximity.
- the client device 120A receives, from the client device 120B, a timestamp of the broadcast message from the client device 120C, a signal strength of the broadcast message from the client device 120C, and player identifier associated with the client device 120C and applies the received data to the statistical model.
- the output of the statistical model is a likelihood or score meeting a threshold (e.g., preconfigured threshold) indicating that the client device 120C is likely within an enhanced proximity of the client device 120A, as shown in FIG. 4.
- a threshold e.g., preconfigured threshold
- FIG. 9 is a block diagram illustrating an example computer suitable for use in the network computing environment of FIG. 1, according to one embodiment. Specifically, FIG. 9 shows a diagrammatic representation of a machine in the example form of a computer system 900.
- the computer system 900 can be used to execute instructions 924 (e.g., program code or software) for causing the machine to perform any one or more of the methodologies (or processes) described herein, including those associated, and described, with the components (or modules) of a game server 110 or client device 120.
- instructions 924 e.g., program code or software
- 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, switch or bridge, a cell phone tower, or any machine capable of executing instructions 924 (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- tablet PC tablet PC
- STB set-top box
- smartphone smartphone
- network router switch or bridge
- cell phone tower or any machine capable of executing instructions 924 (sequential or otherwise) that specify actions to be taken by that machine.
- machine shall also be taken to include any collection of machines that individually or jointly execute instructions 924 to perform any of the disclosed methods.
- the example computer system 900 includes one or more processing units (generally one or more processors 902).
- the processor 902 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 of these. Any reference to a processor 902 may refer to a single processor or multiple processors.
- the computer system 900 also includes a main memory 904.
- the computer system may include a storage unit 916.
- the processor 902, memory 904, and storage unit 916 communicate via a bus 908.
- the computer system 900 can include a static memory 906, a display driver 910 (e.g., to drive a plasma display panel (PDP), a liquid crystal display (LCD), or a projector).
- the computer system 900 may also include alphanumeric input device 912 (e.g., a keyboard), a cursor control device 914 (e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument), a signal generation device 918 (e g., a speaker), and a network interface device 820, which also are configured to communicate via the bus 908.
- the storage unit 916 includes a machine-readable medium 922 which may store instructions 924 (e.g., software) for performing any of the methods or functions described herein.
- the instructions 924 may also reside, completely or partially, within the main memory 904 or within the processor 902 (e.g., within a processor’s cache memory) during execution by the computer system 900.
- the main memory 904 and the processor 902 also constitute machine-readable media.
- the instructions 924 may be transmitted or received over a network 130 via the network interface device 920.
- machine-readable medium 922 is shown in an example 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) able to store the instructions 924.
- the term “machine-readable medium” shall also be taken to include any medium that is capable of storing instructions 924 for execution by the machine and that 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.
- 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 appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
- use of “a” or “an” preceding an element or component is done merely for convenience. This description should be understood to mean that one or more of the element or component is present unless it is obvious that it is meant otherwise.
- the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion.
- a process, method, article, or apparatus that comprises 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.
- “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Child & Adolescent Psychology (AREA)
- Health & Medical Sciences (AREA)
- Environmental & Geological Engineering (AREA)
- Radar, Positioning & Navigation (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
- Telephonic Communication Services (AREA)
Abstract
Description
Claims
Priority Applications (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP23791417.1A EP4512114A4 (en) | 2022-04-22 | 2023-04-12 | Triggering location-based functionality based on user proximity |
| JP2024562252A JP2025515453A (en) | 2022-04-22 | 2023-04-12 | Triggering location-based functionality based on user proximity |
| CN202380047231.5A CN119404526A (en) | 2022-04-22 | 2023-04-12 | Trigger location-based features based on user proximity |
| AU2023257644A AU2023257644A1 (en) | 2022-04-22 | 2023-04-12 | Triggering location-based functionality based on user proximity |
| KR1020247035988A KR20250005192A (en) | 2022-04-22 | 2023-04-12 | Triggering location-based features based on user proximity |
| CA3255912A CA3255912A1 (en) | 2022-04-22 | 2023-04-12 | Triggering location-based functionality based on user proximity |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/727,550 | 2022-04-22 | ||
| US17/727,550 US12219425B2 (en) | 2022-04-22 | 2022-04-22 | Triggering location-based functionality based on user proximity |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2023203439A1 true WO2023203439A1 (en) | 2023-10-26 |
Family
ID=88415063
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/IB2023/053746 Ceased WO2023203439A1 (en) | 2022-04-22 | 2023-04-12 | Triggering location-based functionality based on user proximity |
Country Status (9)
| Country | Link |
|---|---|
| US (2) | US12219425B2 (en) |
| EP (1) | EP4512114A4 (en) |
| JP (1) | JP2025515453A (en) |
| KR (1) | KR20250005192A (en) |
| CN (1) | CN119404526A (en) |
| AU (1) | AU2023257644A1 (en) |
| CA (1) | CA3255912A1 (en) |
| TW (1) | TW202401210A (en) |
| WO (1) | WO2023203439A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2026060142A1 (en) * | 2024-09-16 | 2026-03-19 | Snap Inc. | Multiplayer digital effects system on wearable devices |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12219425B2 (en) * | 2022-04-22 | 2025-02-04 | Niantic, Inc. | Triggering location-based functionality based on user proximity |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20080056215A1 (en) * | 2006-08-29 | 2008-03-06 | Milind Kopikare | Wi-fi based geo-location connectivity |
| US20150273321A1 (en) * | 2014-04-01 | 2015-10-01 | E-Squared Labs, Inc. | Interactive Module |
| US20150373509A1 (en) | 2014-06-19 | 2015-12-24 | Dewmobile, Inc. | Group gaming platform for mobile devices in proximity |
| KR20200070443A (en) * | 2016-06-24 | 2020-06-17 | 에이지 18, 엘엘씨 | Interactive gaming among a plurality of players systems and methods |
| US20210387098A1 (en) | 2020-06-15 | 2021-12-16 | Niantic, Inc. | Player device proximity detection for a location-based game |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8116323B1 (en) * | 2007-04-12 | 2012-02-14 | Qurio Holdings, Inc. | Methods for providing peer negotiation in a distributed virtual environment and related systems and computer program products |
| US12219425B2 (en) * | 2022-04-22 | 2025-02-04 | Niantic, Inc. | Triggering location-based functionality based on user proximity |
-
2022
- 2022-04-22 US US17/727,550 patent/US12219425B2/en active Active
-
2023
- 2023-04-12 CN CN202380047231.5A patent/CN119404526A/en active Pending
- 2023-04-12 WO PCT/IB2023/053746 patent/WO2023203439A1/en not_active Ceased
- 2023-04-12 KR KR1020247035988A patent/KR20250005192A/en active Pending
- 2023-04-12 JP JP2024562252A patent/JP2025515453A/en active Pending
- 2023-04-12 TW TW112113570A patent/TW202401210A/en unknown
- 2023-04-12 CA CA3255912A patent/CA3255912A1/en active Pending
- 2023-04-12 AU AU2023257644A patent/AU2023257644A1/en active Pending
- 2023-04-12 EP EP23791417.1A patent/EP4512114A4/en active Pending
-
2025
- 2025-01-03 US US19/009,698 patent/US20250142288A1/en active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20080056215A1 (en) * | 2006-08-29 | 2008-03-06 | Milind Kopikare | Wi-fi based geo-location connectivity |
| US20150273321A1 (en) * | 2014-04-01 | 2015-10-01 | E-Squared Labs, Inc. | Interactive Module |
| US20150373509A1 (en) | 2014-06-19 | 2015-12-24 | Dewmobile, Inc. | Group gaming platform for mobile devices in proximity |
| KR20200070443A (en) * | 2016-06-24 | 2020-06-17 | 에이지 18, 엘엘씨 | Interactive gaming among a plurality of players systems and methods |
| US20210387098A1 (en) | 2020-06-15 | 2021-12-16 | Niantic, Inc. | Player device proximity detection for a location-based game |
Non-Patent Citations (1)
| Title |
|---|
| See also references of EP4512114A4 |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2026060142A1 (en) * | 2024-09-16 | 2026-03-19 | Snap Inc. | Multiplayer digital effects system on wearable devices |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20250005192A (en) | 2025-01-09 |
| US12219425B2 (en) | 2025-02-04 |
| AU2023257644A1 (en) | 2024-12-05 |
| US20250142288A1 (en) | 2025-05-01 |
| CN119404526A (en) | 2025-02-07 |
| CA3255912A1 (en) | 2023-10-26 |
| EP4512114A4 (en) | 2025-09-03 |
| US20230345200A1 (en) | 2023-10-26 |
| TW202401210A (en) | 2024-01-01 |
| EP4512114A1 (en) | 2025-02-26 |
| JP2025515453A (en) | 2025-05-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12151173B2 (en) | Player device proximity detection for a location-based game | |
| US20250142288A1 (en) | Triggering location-based functionality based on user proximity | |
| US11229846B2 (en) | Providing a shared virtual experience in a location-based game | |
| US8490007B1 (en) | Method and apparatus for motivating interactions between users in virtual worlds | |
| US11020672B2 (en) | GPS tracking with map overlay | |
| JP2021168922A (en) | Validating player's real-world location using activity within parallel reality game | |
| US20090227374A1 (en) | Seamless mobility of location-based gaming across virtual and physical worlds | |
| US20110237225A1 (en) | Systems, methods, and computer readable media for providing information related to virtual environments to wireless devices | |
| US8376857B1 (en) | Multi-player online game player proximity feature | |
| WO2019190648A1 (en) | System and method for updating an application client | |
| US20180272235A1 (en) | System and method for modifying gameplay according to user geographical location | |
| US20120089908A1 (en) | Leveraging geo-ip information to select default avatar | |
| JP2023530204A (en) | Data processing method and device, equipment, storage medium | |
| US12303790B2 (en) | Generating additional content items for parallel-reality games based on geo-location and usage characteristics | |
| US20180207536A1 (en) | System and method for managing global position information in online games |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23791417 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2024562252 Country of ref document: JP |
|
| WWE | Wipo information: entry into national phase |
Ref document number: AU2023257644 Country of ref document: AU |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2023791417 Country of ref document: EP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 2023791417 Country of ref document: EP Effective date: 20241122 |
|
| ENP | Entry into the national phase |
Ref document number: 2023257644 Country of ref document: AU Date of ref document: 20230412 Kind code of ref document: A |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 202380047231.5 Country of ref document: CN |
|
| WWP | Wipo information: published in national office |
Ref document number: 202380047231.5 Country of ref document: CN |