Player Metrics Analysis

Replica Island reports simple play statistics back to a server. These statistics communicate three states: when the player has died, when the player has completed a level, and when the player has completed the game. The messages are completely anonymous and users can choose to opt-out of statistics reporting. Using these data we can build a profile of each level that is very useful in finding frustration points and difficulty spikes. This page describes aggregate player statistics as of March 18, 2010, about a week after the game was released.

Unique Player Count as of 3/18/2010: 12954

First, let's take a look at all of the levels as a whole. The two graphs below describe the average number of player deaths per level and the average amount of time required to complete each level (including deaths and restarts).


You can see that the number of deaths starts to spike in the later levels. These levels were intended to be harder, but the spikes might indicate a frustration point. The spike in level 27 is an interesting example. This level is Memory #34, and if you look at the heat map for that level you can see that all the deaths are concentrated in a single spot. This is a puzzle which the player has seen once before, albeit in a simpler form. Lots and lots of players are trying to solve this puzzle the wrong way and dying as a result. This probably indicates that the game is failing to teach the player which of his powers to apply to this sort of situation.


Our goal in designing these levels was to ensure that they generally get harder as the game progresses yet rarely require more than five minutes to complete. The graphs clearly show that these goals are mostly fullfilled, though the end of the game is marked by pretty major changes in difficulty from level to level. Some of this is intentional, but most of it is not; the end game levels need work to smooth out the level of difficulty here.


Finally, here's a breakdown of the number of players per level. You can see that the number of players drops off quickly at first and then slowly degrades toward the end of the game. The slow degrade is normal and ideal: it's produced by people progressing at a regular rate through the game. The large drop off the first four levels indicates that lots of players quit the game early on. This sort of drop-off is probably inevidible, but it also shows how important it is to make those first few levels interesting. At the point at which this data was captured, only about 30% of players who begin the game make it to the forth level.

The encouraging thing about this graph is that there's no major drop in users after level 4. This means that people who do make it to the fourth level will probably play through the rest of the game. There are a few very small drops (like right after level 27, again telling us that the puzzle in that level is a progression blocker), but generally the degrade is linear, which is good.

Next let's look at individual levels. Below is a chart containing all of the aggregated event data for each level. Fields that have gone over some threshold are colored in red, and represent areas that might need rework. Clicking on memory name will display a heat map of the death events in that level. Thanks very much to this page for the crash course in heat maps and the useful image files (and if you are interested in how these are generated, read the disclaimer at the bottom). Areas where lots of users have died are brighter than areas were no users died. Bright red areas are the spots where lots of players died. Note that looking at these images will spoil parts of the game for you!

Note that Replica Island levels do not play out in chronological order, so the levels in this list are sorted in the order that they occur in the game.

LevelDeathsPlayersDeaths / PlayerDeaths from FallsMin TimeAverage TimeMax Time
Memory #001104391170.116.52%0.82.3717.93
Memory #025146277140.190%0.732.4733.27
Memory #002779355141.410%0.885.8973.07
Memory #026179333540.530%0.672.8549.48
Memory #003112028330.40%0.672.4322.07
Memory #004124124770.50%0.93.1127.65
Memory #005302823281.30.13%0.954.7278.83
Memory #027299320001.563.65%0.62.9827.7
Memory #012542817873.0430.12%0.725.3435.67
Memory #028584615403.80%0.987.7164.92
Memory #007230012201.890.09%0.95.8862.97
Memory #013211411011.920%0.84.5841.12
Memory #014133510191.310.3%0.622.5569.45
Memory #02912389511.30%0.824.6627.03
Memory #0249738901.090%1.24.221.25
Memory #03026018593.0327.49%1.256.9454.18
Memory #030.512477841.590.32%0.382.1710.42
Memory #0318937621.1718.37%1.24.720.35
Memory #00829887254.120.07%0.674.8933.88
Memory #01514546862.120%1.889.8752.93
Memory #02149956467.7397.6%1.327.8688.82
Memory #0326865781.190%1.486.1246
Memory #03315885372.960%0.933.315.87
Memory #017425150.08100%0.451.37.83
Memory #022695050.140%0.924.2159.47
Memory #03452345279.930%3.1717.44114.07
Memory #0103773721.010.53%1.286.2130.85
Memory #0189003612.4969.11%1.024.0117.33
Memory #03511783583.2922.5%1.085.7535.97
Memory #01919443565.4663.99%0.956.1942.92
Memory #02325933537.350%4.116.9898.12
Memory #03720013056.5611.79%1.8315.11226.62
Memory #0381192570.460%0.552.5313.97
Memory #01112442564.8658.6%2.712.32200.53
Memory #02024082469.7964%1.389.85573.13
Memory #039952250.420%1.222.839.75
Memory #0404872272.150%0.322.9817.8


Disclaimer: these heat maps are slightly incorrect. In a correctly renderered heat map, areas of maximum intensity (the red spots) must be areas in which the majority of events occurred. The contribution of each event spot is scaled by the total number of events, so only areas in which there is a lot of overlap result in an intense color. However, when there's a lot of data points contributing to the map, each spot may contribute so little to the resulting image that the calculation cannot be performed with normal image formats. To do the calculation correctly, you need floating point color values for each pixel so that you can represent a color contribution that is less than 1. I wrote my heat map tool in php, which does not support floating point colors, and is also not fast enough to implement the feature in php itself, so I ended up clamping the minimum contribution to 1. This means that some spots are more intense than they should be. However, the data is still highly useful for game tuning.

Scan to download!
(Click for bigger image)