GameIndustry.eu /  Development Insights / Carry Castle AB


 

Carry Castle AB

About

Carry Castle is a one man studio behind the games Source of Madness, Zen Garden and Everything Must Fall.
Status:
 Independent company
 Göteborg, Vastra Gotaland, Sweden
 contact@carrycastle.se
 
 

Analytics in our game Source of Madness


In our game Source of Madness we added analytics in order to help us balance the game, and see how fast people progress and what upgrades they choose etc. However, since we had to change some behaviour in regard to personal data we would like to give you an overview of what has happened since then.

Playfab: What got collected?

The following were (unpurposely) collected while playing the game, via our use of Playfab:
- Full IP addresses.
- Device info (hardware, OS, some local file paths)

Data is only accessible by me, and has not been shared with any third-parties. Data is only stored for 30 days (this is the minimum setting in Playfab).

How we addressed this


1. Disabled sending of unnecessary personal info


After the collection was pointed out on Steam  , we quickly disabled the sending of unnecessary data directly via the Playfab website. This was possible to do quickly without patching the game.

playfab-data-collection-settings.PNG
Data settings on the Playfab website (these were all enabled previously, by default)

This chart shows that the player "device info" events stopped being sent. "Player created" events are still sent, but they are anonymous.
we-still-log-players-created.PNG



The device data event contained device info and IP, but is no longer sent:
player-device-data-which-is-no-longer-collected.PNG



"Player created" events are still being sent, but only contain anonymous data:
player-created-event-has-only-anonymous-data.PNG



Similarly, the client focus change events were disabled too (the green bars). These events have no personal data but we didn't need them so we disabled that.
events-since-launch-before-purge.PNG



Example of client focus change event (no longer collected):

client-focus-event-was-anonymous-but-we-dont-need-it.PNG

2. Released patch with Opt-out checkbox



We also worked hard on Friday and Saturday to release a patch. The patch went live around 5PM CEST on Sat 14 May, and introduced an opt-out checkbox that disables the playfab analytics.

Patch notes: https://store.steampowered.com/news/app/1315610/view/3201507759920203539  

added-analytics-opt-out-checkbox.PNG
Added analytics opt-out checkbox


added-code-for-opting-out.PNG
Our code for Playfab events, and how we modified it for opt-out. All analytics in our game use this function.

The patch is not yet live on consoles since it takes longer to release patches there, but we are working on getting it there as soon as possible. Still, the personal data is already disabled as of step 1 above.

3. Delete historic data

It proved extremely hard to remove historic data, although it is only stored for 30 days. We're still working on this, but have found that the only way is to delete the entire project on Playfab.

I already tried to remove all players, but this didn't purge the stored events:

task-remove-all-users.PNG
Also tried setting retention to one day hoping it would clear older data, but that didn't work since the minimum is 30 days.
minimum-retention-is-30-days.PNG


Anyway we're preparing now to remove the entire project. Just need to make sure this will not break any unpatched game clients, such as on consoles.

4. Add a Privacy Policy

We're working on a privacy policy which we will add on the store pages. It's a bit of work remaining but we'll get up asap.

Data we still collect

Some data which is important to us is still collected, but anonymized. This will be clearly listed in the upcoming Privacy Policy


Gameplay Analytics


We still collect with Unity Analytics about some important actions in the game, such as when you die, unlock items, or complete a biome. This is sent together with some info about how long you've played in total, how much blood you've collected, etc. This gives us a way to check and balance the progression curve.

When a player logs in a login event is sent unless "Opt-out" has been enabled. This event contains the player's IP but the last part of it is masked to 0. Note that although the location is shown in the event, this location is based on the ip, AFTER being masked. No GPS or additional location data is used.
Player login event example (with IP masking):
player-logged-in-event-contained-IP-and-location-but-is-now-masked.PNG

Crash logs

We use the default Unity error/crash reporting. This contains device info, but nothing personally identifiable as far as we were able to find. We might add a check box to opt-out of this too if requested, but at least we will make this clear in a Privacy Policy.

Why Playfab?

We got a recommendation to use Playfab, and it seemed good. We were not really aware of the criticism against it which was pointed out on Steam  . We could've probably just used Unity Analytics instead. Anyway, the only part of Playfab we actually use is the analytics. Nothing else, no "online-only single player" or microtransactions etc.