Gamasutra: The Art & Business of Making Gamesspacer
arrowPress Releases
July 24, 2014
PR Newswire
View All
View All     Submit Event

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

Four ways to keep players in love with your game
by Ben Lowry on 11/16/11 07:18:00 pm

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.


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

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

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

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 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

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:

Related Jobs

InnoGames GmbH
InnoGames GmbH — Hamburg, Germany

Game Designer Tribal Wars (m/f)
Firaxis Games
Firaxis Games — Sparks, Baltimore, Maryland, United States

Senior Visual Effects Artist
Nordeus — Belgrade, Serbia

Senior Game Designer
InnoGames GmbH
InnoGames GmbH — Hamburg, Germany

Quest Writer (m/f) for The West