• Advertisement
  • entries
    95
  • comments
    273
  • views
    151837

The Poor Man's Gameplay Analytics

Sign in to follow this  

4090 views

You don't want to take time away from your awesome game to write boring analytics code. So you either call up some friends, hire playtesters, integrate some 3rd party SDK (ugh), or just do without.

WRONG. You roll your own solution. Here's why.

Why you don't do without



The OODA loop models the way human individuals and groups operate. It goes like this:

  • Observe the situation
  • Orient your observations in the context of goals, past experience, etc.
  • Decide what to do
  • Act on your decision
  • Repeat!

    After the initial act of creation, game developers operate under the same principle. You play the game and observe it, orient that data in the context of your goals, decide what to do, open your IDE, and put your plan in action. Rinse and repeat.

    The problem is, unless you're a god-like game designer, your observations are fatally flawed, and there's nothing you can do about it. You're so close to the game that your view is wildly different from your players. You're sick of mechanics that should be fun. You breeze through sections that should be brutally difficult. Subtleties are blindingly obvious. Frustrating glitches are comfortable and familiar.

    Your only options are to either reincarnate as Tim Schafer, or seek outside perspectives.

    Why you don't hire playtesters



    Easy: because you're broke.

    Why you don't bring in friends



    You can't trust yourself in this scenario. Here's how it always plays out:

    [indent=1]You run into someone on the street. Maybe you know them, maybe not. Either way, you're about to monopolize their time.


[indent=1]You: Hey, want to playtest this game I'm working on?


[indent=1]Hapless victim: Um sure, I mean, I don't play video games much but


[indent=1]You: Don't worry, it's a procedurally F2P permadeath MOBA, you'll pick it right up.


[indent=1]Hapless victim starts struggling through tutorial. You hover behind them, watching and breathing heavily.

[indent=1]Hapless victim: This game is... cool. Very cool. Whoops! Died again. Haha. Hey I have to go to work/class/other vague commitment, but cool game! Very cool.

When you hand your game to a friend or stranger, you're saying "I think this is worthy of your time and I'd like to show it off to you." But the reality is, it's not (yet). It's incomplete and probably buggy. They try so hard to like it. You try so hard to convince yourself that they like it, but end up with hurt feelings anyway. Any useful data points you salvage from the wreckage are tainted by the fact that you were watching over their shoulder.

To solve these problems, you send a build to your close friend with instructions to ignore the bugs and placeholder assets, then breathlessly await their response. Maybe you get some useful feedback, maybe not. Either way, it's a big favor to ask of a friend, and you only get one new flawed perspective. Also, they're only a first-time player once.

Why you don't use third-party SDKs



Most third-party SDKs work great for F2P games where all you want to see are big-picture things like ARPU, retention, crash logs, etc. By all means, use them to get those numbers.

But to truly observe, you need to be able to watch over the player's shoulder without affecting their gameplay. Anonymously of course, and with their permission. You need to be able to record the whole gameplay session and play it back, and most third-party SDKs won't do that. The best way is to write analytics playback code directly into your game or level editor, because it already has the same code and assets.

One notable exception is GameAnalytics (if you're using Unity), which is free and offers 3D heatmaps right in the Unity editor.

Roll your own



It's the only remaining option. Send your build to friends, randos, whoever. No need to provide instructions, no awkward conversations. It's detached and impersonal, and you get exactly the data you need, because you wrote code to collect it.

What follows is my experience building custom analytics with not much time or money.

Implementation

It's easier than you think. For each gameplay session, there are three types of data you need to track: