Request Overview
A way to collect visual data points from a session that can be created, started, and stopped from the website that a game server can post too as long as the session for that profile is active. The collection of these datapoints from the session could then be downloaded. Roblox engineers could expand on the tool and create a heatmap generator with a few different visual displays from that data.
Request Motivation & Improvement
It would be nice to have a natively supported heatmap system that could be used in tons of different ways to enhance game experiences to figure out things out like -
- Retention issues
- Common player access points
- Map layout and utilisation, whats prioritised most by players, player traffic
- Ad placement
- Areas with most time spent
- Death locations
- Common loot location
- Areas most interacted with
- Most common firefight positions
- etc
If developers had a tool to figure things out like this and get direct feedback from live player experiences then games could reduce technical debt and improve upon problem areas. These teams would discover those issues a lot faster which would allow them to better understand where to focus their efforts. They would be able to increase metrics across the board, especially for things like monetization with a lot more ease.
Functionality - - Possible proposal to how this system could function on roblox
- New tab is added under Analytics on a game page within the Creator Hub called ‘Heatmap’
- Within this page a new profile can be created with input parameters name, sizeX, sizeY and maybe a list of supported tags that the game can read into.
- Created profiles can be Started/Stopped and can continue for a finite amount of either a customizable or set amount of 12 hours.
- Once a profile stops it dumps the data collected into a downloadable file and a button also appears called ‘Generate Heatmap’ maybe with a few options of heatmap generation, i.e. point based visualization or grouping based - more grouped together points make a darker area on the map and as points decrease outwards it becomes green and then white. If its a point based visualization and theres tags added those points can be colored via tag color.
- Once a new session is started the downloadable session file is deleted. Finite amount of data could be recorded, finite amount of sessions, finite amount of active sessions, etc. Maybe sampling size too, out of 1,000 active servers only accept data retrieval from 10% of those sessions.
The reason for the profiles and the setup like this is that it’s extremely dynamic and can support any developers use case. In a tycoon game for example maybe I want to see exactly where each player is going inside of their base and every player has the same base layout so I send datapoints by calculating player position within their set zone
API Request
Service: HeatmapService
-
HeatmapService:AddDataPoint(profileName, x%, y%, tag (optional)) → Having multiple tags to display different things on one heatmap, maybe just utilise the below function to reduce calls and batch in data points every few minutes with restrictions set on how many points can actually be sent at one time.
-
HeatmapService:AddDataBatch(profileName, {}) → Batch in data points with above parameters
-
HeatmapService:GetProfiles() → {} List of all actively in-session profiles
-
HeatmapService:GetProfileData(profileName) → returns all data points within active or last active session