Dreamless: Analytics for Ludum Dare

, Ludum Dare, Dreamless, Analytics

Do people like my game? Dreamless collects analytics data about each level to help answer that question. Every time a level is completed, a short record is stored in an SQL database.

How hard is each level?

graph of number of players who reached each level,
              the average amount of time spent in each level,
              and the average number of times each level was restarted

You can see that levels 6 and 8 are the harder ones, averaging between two and three restarts. About 60% of the players finished the game.

Time spent in level

The first thing noticeable in the data are a couple players who spent a long time in certain levels.

select level, timeend, status
from dr_levelend
order by timeend desc
limit 5;

One player even spent 57 minutes on level 6. This is not data we care about, it’s probably just a player who left the game open and did something else for an hour. We can ignore any level time over ten minutes when we compute the average.

select level, avg(time) from (
    select level, sum(timeend) as time from dr_levelend
    where timeend <= 00:'10:00'
    group by sessionid, level
) ss
group by level
order by level;

Number of times restarted

Here is the query for the number of times each level was restarted. This only counts players who played each level.

select level, round(avg(restarts), 2) from (
    select level,
    count(case when status='restart' then 1 else null end)
      as restarts
    from dr_levelend
    group by sessionid, level
) ss
group by level
order by level;

Number of players

This is the simplest query. Out of 37 players, 22 players made it to level 9.

select level, count(distinct sessionid) from dr_levelend
group by level
order by level;

Number of players per day

Rather than watch the game’s rating count creep up, you can find out how many people played each day. This only counts plays since the Windows port came out.

You can see how much more ratings developers earn for their early ratings. When I started rating games, I was earning ratings for my own game at about a 1:1 ratio. After a week, I have to rate two games to earn one rating for my game.

graph of number of players who played the game each day

select starttime::date as start, count(*)
from dr_session
group by start
order by start;

How long do people play the game?

Most players spedn between about 5 and 10 minutes, a significant percentage stop playing quickly, and a few people leave the game open for a half hour or longer. This graph excludes the outliers.

graph of amount of time spent in the game, on average,
              with quantile bars

select max(timestart + timeend) as time from dr_levelend
where timeend <= '00:10:00'
group by sessionid
order by time;

What operating system do players use?

This only counts players from after the the OS X and Linux releases.

chart of which operating systems players use

select osversion, count(*)
from dr_session
where starttime > '2014-08-31'
group by osversion
order by osversion;