Using Heatmap Tool


POINT CLOUD HEATMAP TO TRACK PLAYER MOVEMENT IN PLAYTEST SESSIONS

TLDR: we track the player position at 2Hz and write it to a CSV file. The CSV file then gets parsed as a point cloud and visualized via VFX. Big thanks to dylanebert for this tutorial on visualizing Gaussian Splats in Unity.

STEP 1: Track the player's position. 


Then we write it to a file, in this case, we write it in OnDisable() and OnDestroy(). This means CSV gets written anytime the player dies or the game is exited.


STEP 2: Importing those CSV files to Scriptable objects for the VFX graph to use. 

While short playtests can only be about 1000-3000 points, since we are making a heatmap, we will use many samples, meaning it could go as high as 100k points as we scale this tool. It is always better to leave these kinds of SIMD tasks to the GPU, therefore VFX graph.

STEP 2.5: Looking at the path the player took. 

Since each line in the CSV is in order of time, and we do timestamp it too, we can replay how the player moved. With the 'Show Path' part of loading, you should see cubes being drawn in the scene.  The Importer tool has created a GameObject with HeatmapPath.cs attached. 

Scrub the Time Slider and you'll get real-time playback of the player's movement. If this data is useful for heatmap later, go ahead and 'Generate Splat Data', and it will create the scriptable objects.

At lower time
At higher time

STEP 3:  Preparing Heatmap.

In the Heatmap Maker tool, drop in all the scriptable objects you want to make heatmap out of.  This will make a new 'Heatmap' scriptable object in the assigned location.

STEP 4: Viewing Heatmap.

Drag the 'Heatmap as Splat' prefab, add SplatDataBinder component, and drop in the just-made Heatmap scriptable object. Check-uncheck the Visual Effect component to refresh.


AND WITH THAT YOU ARE ALL SET.

Since the CSV tracker is attached to the player, it is simple in its job to just track the player's position and write it. The trick is in parsing those CSVs.

For future updates and scalability, we can write positions when certain events happens, like item use, health threshold drops, and so on. This way, in the Path viewing, we can see more information on how the player reacted to the levels. 

Together with the path tool and the heatmap tool, level designers will have a better idea of how their levels interact with the player. And since the CSV is just player positions, this tool should work with almost any 3D game you are working on!

Files

splatHeatmap.unitypackage 77 kB
3 days ago

Get Point Cloud Heatmap

Leave a comment

Log in with itch.io to leave a comment.