Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
September 17, 2014
arrowPress Releases
September 17, 2014
PR Newswire
View All





If you enjoy reading this site, you might also want to check out these UBM Tech sites:


 
Indie Game Analytics 101
by Ben Chong on 11/21/11 03:29:00 pm   Featured Blogs

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.

 

Call it designer ego, but I think the world owes me something when I release a game. I mean, I spent like 5 months making this thing from scratch and now it's SO pretty and therefore everybody including my hero Jordan Mechner should be playing this.

Ignore everything I just said. Obviously the first version bombed and I went back to drawing cute levels on my napkins. Not GOOD enough. I still wasn't communicating with my players!

As an indie, I had a bunch of friends that helped playtest and shape the game into something that we *think players will like. I've gotten lots of "dude, this is awesome stuff"-type compliments, but these meant nothing when the game goes into the wild. 

Shiny new term

I heard about this new thing they call analytics. Turns out you could see what the player is doing in your game, track their behaviour, tweak it to give them a great experience!

I googled for "game analytics" and found this free cross-platform service called Playtomic . Holy cow: it tracks player events and presents it in a pretty GUI that even a noob like me can fathom. Perfect!


Background of my game

Private Joe is a 2d platform shooter. You play a soldier and try to eliminate enemies with various weapons. Gain coins, badges and powerups along the way. The web version is playable here

Here are some metrics that I'd like to share from my game's 30 levels.


Metric #1 - Beginnings and Deaths

Started Levels vs Deaths

Blue line: steep player drop rates right after Levels 1 and 6. 

  • I knew immediately why most players left after Level 1 : the user flow was horrible! The missions menu was poorly designed. 
  • Most players couldn't progress beyond Level 6 because too many died there!


Orange line: most players get killed in levels 5, 6 and 10. 

Note: I excluded Level 10's deaths because it's a boss level. I shall write a separate article about boss level analytics soon

What I didn't expect was a high number of players dying in Levels 5 and 6. I had to investigate the cause of this! First thing that comes to mind is to record the x,y coordinates where players die frequently, and plot this over the level map. Enter heatmaps!


Metric #2 - Heatmaps

These were pretty easy to implement. Added the tracking code, uploaded the maps of Levels 5 and 6 as .PNG files, let Playtomic crunch the numbers.

Heatmap Level 6

Heatmap of Level 6

Some definitions:

StartPosition (Purple box) : Spawn position of player at start of level
WeaponBazooka : Collecting this unlocks the Bazooka for the player
RefuelStation: A checkpoint to emit messages ( not important here )
Ger_schutzer: Basic enemy soldier 
Ger_captain: Advanced enemy soldier
Ger_tank2: Advanced enemy tank

Notice the two colorful spots in Level 6. The first (300,200) is green-bluish, signaling a lower intensity of deaths. The killer is the 2nd, more colorful one near (600,200). What could be the reason?

The enemy tank packs a powerful punch. Getting hit by a tank shell gives 3x more damage than a regular bullet from an enemy soldier. Most players die fighting the 2nd tank, because their lives were reduced too much after fighting the 1st tank. Having two health packs after the 1st tank didn't seem to help much.

To reduce death numbers, I could add more healthpacks, reduce tank damage, remove the soldiers, remove the 2nd tank, etc... the options are endless for the game designer. Without analytics, I wouldn't have considered them!

Let's look at another heatmap

Heatmap Level 5

Heatmap of Level 5

This is a survival mission, requiring 60 seconds of not dying before winning. A wave of soldiers will approach from the right every X seconds, trying to force the player into a defensive position.

Some players get pushed back by the wave of enemy soldiers, causing deaths near (30,200).

Most players get killed between x=500 and x=650 (death zone). It makes sense: players are inclined to move to the right once the level loads. They couldn't beat the small tank just above the ledge, taking heavy fire in the process from incoming soldiers. To pour salt on the wound, I also had an enemy jet bomber drop bombs on the player's head every X seconds (avoidable of course). 

Too much action is concentrated in the death zone. Are tanks just too powerful? Should I just remove the jet bomber? Maybe increase the interval between enemy soldier rushes? All valid options to try out.

SummaryHeatmaps are awesome: you get to see where the action is, and tweak the game accordingly. My goal is to allow more players to progress through, so I made a few *secret decisions that would not affect other levels too drastically. 


Metric #3 - Favourite weapons to buy

Favourite weapons  

Appears that the rifle (blue) is the favourite weapon, followed by the pistol (orange). Ironically, these were the two weapons I spent the LEAST development time making. I poured most time into making fancy Machine Gun recoils, Grenade mechanics and Bazooka explosion effects. Bummer.

Does that mean I wasted precious dev juice doing unimportant things? No. I just had to tweak the other 7 weapons to make sure they're utilized more. This can mean: increasing firepower for the big guns, reducing the prices ( players need coins to purchase weapons ) or giving players more "trial bullets" to begin with.

So now we have like a billion options to test against. This sets the scene for a future AB or multivariate testing. To do this, we can use the "GameVars" feature in Playtomic to selectively manipulate variables in-game. AB/multivariate testing is a science which deserves it's own article: more on this in future posts...


Metric #4 - Favourite menu items

Favourite menu items

I expected most players to click on the "Store" button and it turned out right! Players need to spend the coins gained from defeating enemies.

It appears that initially, the "Objectives" and "How to play" links got a lot of clicks because players were figuring out how to play. To placate this effect, I added a simple tutorial that pops up the moment players start Level 1.

Over time, more players cared about the Store and Inventory, possibly due to low bullet count. Opportunity rings! I could implement a 12 or 24-hour return bonus that awards free bullets if players come back to play. 


Metric #5 - Free vs. paid

Free vs paid
 
As a kid, I always hated the "INSERT CREDIT TO CONTINUE" screen in arcades. Just couldn't afford all the quarters it took to finish Asterix and Obelix.

To encourage players with zero lives to continue playing, I offered them two choices:

  1. buy 8 lives for 80 coins, then respawn at the nearest checkpoint
  2. take the free life, but respawn all the way back at the starting point
"Free life" won by majority. The upside? Some people are willing to pay for lives, because it provides value: you don't need to respawn from the beginning, PLUS you won't get nagged at for at least the next 8 deaths!


Summary

So there you have it: 5 metrics out of the dozens that I am tracking. Done properly, analytics is an amazing tool that everyone can use - from community managers, to game designers, to upper management.

PS: i'm also interested in how you guys utilize analytics to track game performance. Feel free to comment!

Future articles

- AB/multivariate testing
- Heatmaps for dynamic maps (randomly generated) 
- Funnel testing
- Dynamic object tracking ( like bosses that have crazy movements )
- Your suggestions 

Related Jobs

Whow Games GmbH
Whow Games GmbH — Hamburg, Germany
[09.17.14]

Games Developer
Bright Future GmbH
Bright Future GmbH — Cologne/Koeln, Germany
[09.17.14]

Senior ActionScript Developer Mobile
InnoGames GmbH
InnoGames GmbH — Hamburg, Germany
[09.17.14]

Mobile Developer C++ (m/f)
Amazon
Amazon — Irvine, California, United States
[09.16.14]

Software Development Manager






Comments


MichaelVaughn Green
profile image
Thanks for the article. Really cool info! I like your decision in letting players buy lives or respawn at the starting point. I don't think games give players enough options to continue their experience; too often games punish their players that make choices the game thinks they should be making.

Ben Chong
profile image
i got a lot of inspiration from Robot Invader's Android game, Wind Up Knight. They allow very very good players to play for free. Casual gamers can pay if they want to, but nothing is being forced.



Link

http://robotinvader.com/blog/?p=133

Felipe Budinich
profile image
Awesome article, I wish I had known about Playtomic earlier. I just downloaded the API and it is really simple to use :-D

Ben Chong
profile image
i guess it's one of those hidden treasures of the Web. They do casual game analytics better than any other service i've seen. The fact that it's cross-platform really helps developers like me who ship games on all fronts.

Lucas Jock
profile image
Playtomic looks really nice!



What about Mochi Analytics? Have anyone here tried? Which one is better?

Ben Chong
profile image
I haven't tried them, but based on their documentation, it's for Flash games only.

Josh Callebaut
profile image
Just now discovering this article, and all I have to say is: "Wow." This is exactly the kind of information I, as a statistic aficionado, absolutely adore. Thank you for taking the time out and actually sharing such normally close to the chest information with us.



I understand the game is still relatively new, but have you considered AB testing to monitor various difficulties with different users? Half damage, or even 40 coins = 4 lives to see how retention is affected?



Thanks again for this extremely interesting article, I just love graphs, good luck with your project!

Ben Chong
profile image
thanks for the comment! working on AB testing, hope to get it implemented soon!


none
 
Comment: