Sponsored By

Four ways to keep players in love with your game

4 simple techniques you can leverage to identify problems in your games and improve the player's experience.

Game Developer, Staff

November 16, 2011

5 Min Read
Game Developer logo in a gray background | Game Developer

At Playtomic we have a very strong focus on finding where players are falling out of love with games.  Our level metrics (available in all apis) are a very simple, very powerful tool you can quickly use to find where players fall out of love with your game.  They allow you to track a variety of information across levels and you can use that individually or cross-reference them to pinpoint problems.

Here are four simple strategies you can use in your game to spot the problems that are going to hurt its ratings in iTunes or Android App Stores, Kongregate or anywhere else.

Track how many people begin each level
This is probably the most valuable thing you can track to improve your engagement.  By just logging when each person begins a level you can see two things:

1) how far into your game people are playing.   
2) how your traffic drops off across your levels.  This *is* inevitable, 100% of people are not going to play your game all the way through.  But it's really easy to make a game where you lose 80% of players in the first few levels.

Level metrics

Using metrics to improve your level completion

AS3: Log.LevelCounterMetric("started", levelnameornumber);
AS2: Playtomic.Log.LevelCounterMetric("started", levelnameornumber);
iOS: [[Playtomic Log] levelCounterMetricName:@"started" andLevel: name andUnique:NO];
iOS: [[Playtomic Log] levelCounterMetricName:@"started" andLevelNumber: number andUnique:NO];
Android: Playtomic.Log().levelCounterMetric("started",  "name", false);
Android: Playtomic.Log().levelCounterMetric("started", levelnumber, false);
C++: Log()->LevelCounterMetric("started", levelnumber);
C++: Log()->LevelCounterMetric("started", levelname);
Unity3d: Playtomic.Log.LevelCounterMetric("started", levelnumber);
Unity3d: Playtomic.Log.LevelCounterMetric("started", levelname);
HTML5: Playtomic.Log.LevelCounterMetric("started", levelnameornumber);

When you're logging this stuff you can easily see it visualized in a chart that will tell you straight away your game is a trainwreck on levels x, y and z.

Track achievements
If your game hands out bronze, silver and golds or three stars or whatever rating system that judges how the player completed each level, use a Ranged level metric to track each value.  That way when you look at the "started" graph and see you lost 50% of players on level 4 (happened to me once) you can come over to this chart and start looking at how the players are actually performing - you lost 50% of players, and 90% of players couldn't get gold!

(couldn't find exactly the image I wanted for this one .... haven't made any games in too long)!

Tracking achievements across levels

Tracking achievement metrics

AS3: Log.LevelRangedMetric("achievement", levelnameornumber, achievement);
AS2: Playtomic.Log.LevelRangedMetric("achievement", levelnameornumber, achievement);
iOS: [[Playtomic Log] levelRangedMetricName:@"achievement" andLevel: name andTrackValue: achievement andUnique:NO];
iOS: [[Playtomic Log] levelRangedMetricName:@"achievement" andLevelNumber: number andTrackValue: achievement andUnique:NO];
Android: Playtomic.Log().levelRangedMetric("achievement",  "name", achievement, false);
Android: Playtomic.Log().levelRangedMetric("achievement", levelnumber, achievement, false);
C++: Log()->LevelRangedMetric("achievement", levelnumber, achievement);
C++: Log()->LevelRangedMetric("achievement", levelname, achievement);
Unity3d: Playtomic.Log.LevelRangedMetric("achievement", levelnumber, achievement);
Unity3d: Playtomic.Log.LevelRangedMetric("achievement", levelname, achievement);
HTML5: Playtomic.Log.LevelRangedMetric("achievement", levelnameornumber, achievement);


Track performance
The Average level metric is used to track the average, minimum and maximum of whatever event.  For games that use time, clicks, moves or some other measurement to to judge the player's quality you can use the Average level metric to help interpret those dropoffs, for instance in a racing game maybe track 3 actually takes 3 minutes when you guessed it should take 2, most people are failing and abandoning your game.  Or one of those puzzle games where you have to move from x to y in the fewest moves, it's really easy to get these things wrong and create a situation where *we* think the level and the information flow and everything else are aligned just right, and players think you're a jerk.

Tracking performance metrics

Track the performance across levels

AS3: Log.LevelAverageMetric("moves", levelnameornumber, moves);
AS2: Playtomic.Log.LevelAverageMetric("moves", levelnameornumber, moves);
iOS: [[Playtomic Log] levelAverageMetricName:@"moves" andLevel: levelname andValue: moves andUnique:NO];
iOS: [[Playtomic Log] levelAverageMetricName:@"moves" andLevelNumber: levelnumber andValue: moves andUnique:NO];
Android: Playtomic.Log().levelAverageMetric("moves",  "name", moves, false);
Android: Playtomic.Log().levelAverageMetric("moves", levelnumber, moves, false);
C++: Log()->LevelAverageMetric("moves", levelnumber, moves);
C++: Log()->LevelAverageMetric("moves", levelname, moves);
Unity3d: Playtomic.Log.LevelAverageMetric("moves", levelnumber, moves);
Unity3d: Playtomic.Log.LevelAverageMetric("moves", levelname, moves);
HTML5: Playtomic.Log.LevelAverageMetric("moves", levelnameornumber, moves);


With this you can see first hand that players are requiring more time, more moves, more clicks, more energy to complete your levels than you expected, and than they want to give you.

Heatmaps
Heatmaps remain the most awesome invention in the world - they can reveal so much data in such a stunning way.  They're not universally applicable to all games but if your game suits them, you're going to love them.  You can use them to track things like where people die, where they explore, where they click, if they collect powerups, if they collect necessary items to complete a level.  You can be hugely imaginative with these things, anything that has an x and a y (and with a z you just have to look top down ... for now)  is a candidate for a heatmap.  Heatmaps are also super easy to use.  This is using a special exporter to load them into the Unity3d editor, more news on that later.

Unity3d heatmaps

Heatmaps are awesome

AS3: Log.Heatmap("level1died", "level1", x, y);
AS2: Playtomic.Log.Heatmap("level1died", "level1", x, y);
iOS: [[Playtomic Log] heatMapName:@"level1died" andGroup: @"level1" andX: x andY: y];
Android: Playtomic.Log().heatMap("level1died",  "level1", x, y);
C++: Log()->Heatmap("level1died", "level1", x, y);
Unity3d: Playtomic.Log.Heatmap("level1died", "level1", x, y);
HTML5: Playtomic.Log.Heatmap("level1died", "level1", x, y);



These 4 techniques can improve your engagement and make your game more fun than alcohol.

And they're all available for free:

Read more about:

Blogs
Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like