Gameplay Analytics

While monitoring the release of my game, I really wanted to know what the churn of each level was. That's analytics speak for the amount of people that abandoned the game while or after playing a certain level.

I imagine an api like

playdate.analytics.registerEvent(string eventName)
playdate.analytics.registerEvent(table event)

example:

playdate.analytics.registerEvent("level1_started")
playdate.analytics.registerEvent({ name = "get_key", levelNum=1, keyColor="blue" time=204 })

These events would be stored in memory until the gameWillPause event is triggered (when the menu button is pressed). At that moment, the events will be written to disk.
Whether a non-personal-identifiable-device-id game-install-id is included is up for discussion. This would allow developers to group events per user, without learning any privacy sensitive data of the user. Might be best to use a different id per game so users cannot be tracked accross games. Privacy / GDPR in general should be considered.

On every wifi sync (nightly) these events are sent to Panic's server. Developers can download a csv with these events from their play.date account. In case the event is a table, all table keys are columns in the csv

7 Likes

Since the playdate’s mic and accelerometer can be accessed without permission from the user (which I think is good for non-networked games), what’s to stop someone from putting mic or accelerometer data (or something potentially private derived from those, like the type of environment they’re in, whether they’re in a moving vehicle, maybe their age/sex as determined from the frequencies in their voice) into their game’s analytics data?

I agree that this would be useful though. Maybe the answer is to only allow analytics for games that don’t use the mic or accelerometer? Or show a warning for games that use both analytics and mic/accel? Only support predefined events, not arbitrary values?

I suppose another way to accomplish this (sort of – only some players would do it) would be to prompt players to “take our survey” which would have the game generate a QR code of their stats which they could choose to submit. That way it’s more explicitly opt-in. I know BRAAINS Trivia already does this for high scores.

1 Like

I'd love to see this too.

One of those things that is probably far more complicated than I can imagine.

Addition to limit the possibility of abuse: max event size and frequency.

Enforcement should be done during the nightly sync instead of taking cpu away from the game.

I don't like it when the devices I own phone home with information about me or how I use the device. That said, I think if the Playdate had a device-wide or per game opt-in/opt-out, I think it would be okay. Players should have that option.

As a developer you should have to convince players that you are actually providing value to them by tracking their every move in the game/application. It's their device and their time you are using. They are doing a service to you by allowing you to gain insights--don't think you are entitled to make their device spy on them.

I don't expect you personally would do anything malicious, but as soon as one person can do it, anyone can, which means someone might. Whereas right now, it's not possible, so no one could.

1 Like

As a professional dev, it certainly feels weird requesting an analytics feature where I am usually one of the lines of defense against Marketing's possibly privancy-invading requests.

I wrote this request when I was very excited about my first playdate release, where I was mostly concerned about whether the game wouldn't be too hard.

Now that that storm has settled and the response is overwhelmingly positive, I can relativize.

Perhaps it's part of the charm of Playdate that games are more a finished product that you have to playtest before release and then hope for the best, just like the cartridge games of old.
Progress tracking might push decision making to make the game too easy, where you just want to get as many people to the finish line as possible. This could detract from the sense of achievement for other players. Still the same data could also be used to strike a healthy balance.

Implementing as suggested would certainly be iffy, esp. if my popular request for playdate.getPlayerNickName() gets implemented.

So I'm a bit on the fence now.

I'll adjust my request to not allow free format data to be sent.

Keys should be one of a list of values provided by the api, such as LEVEL_START, LEVEL_COMPLETE, LEVEL_ABANDONED, ACHIEVEMENT_UNLOCKED.
Values should be of type Number only. For the achievement event, the developer would then have their own mapping table in Excel to map achievement 2534 to "Threading the Needle" or whatever achievements are available in their Sewing Simulator game.

If providing developers with the tools they need to see how people play their games, results in better, more balanced games, I am all for this. That said, it should be opt-in, at a system level. Presumably PlayDate themselves are gathering some form of deveice usage data, so what not give developers a way to see how their games are being played.

1 Like