Deprecated: Function set_magic_quotes_runtime() is deprecated in /users/home/dariusk/domains/orbusgameworks.com/web/public/newsite/blog/textpattern/lib/txplib_db.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at /users/home/dariusk/domains/orbusgameworks.com/web/public/newsite/blog/textpattern/lib/txplib_db.php:14) in /users/home/dariusk/domains/orbusgameworks.com/web/public/newsite/blog/textpattern/lib/txplib_misc.php on line 1494
tag_error <txp:posted/> ->  Warning: getdate(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.  on line 1051
tag_error <txp:posted/> ->  Warning: mktime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.  on line 1052
tag_error <txp:posted/> ->  Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.  on line 1088
tag_error <txp:comment_time/> ->  Warning: getdate(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.  on line 1051
tag_error <txp:comment_time/> ->  Warning: mktime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.  on line 1052
tag_error <txp:comment_time/> ->  Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.  on line 1088

Warning: Cannot modify header information - headers already sent by (output started at /users/home/dariusk/domains/orbusgameworks.com/web/public/newsite/blog/textpattern/lib/txplib_db.php:14) in /users/home/dariusk/domains/orbusgameworks.com/web/public/newsite/blog/textpattern/publish.php on line 464
Orbus Gameworks

Orbus Gameworks

articles

Why Averages Suck

Apr 12, 01:40 PM

There are a lot of game companies out there that collect important data on their games, but then aggregate that data straight out the gate into a max/min/avg trio. For instance, something like this:

Average Damage Per Second (DPS) by Class

Class Avg Min Max
Fighter 134 101 220
Groupie 87 54 110
Mathematician 20 2 35

A lot of people are happy with this kind of data! This makes me sad, and I’ll show you why.

Histograms Are Your Friend

Let’s take a look at the data for the Fighter. All that we know from the table is that nobody has fewer than 101 DPS, nobody has more than 220 DPS, and the average DPS is 134. However, we have no idea how this data is distributed! If you recorded the DPS achieved by each individual player to capture the entire distribution, you could make histograms of the data by charting, for each DPS value along the X axis, the number of players who had that DPS value on the Y axis.

For example, the histogram of recorded DPS values for the Fighter class could look like this (click on the graph to see it full size):

A normal distribution.

This is the graph that most people think of in their heads when they see the min/max/avg figures. It conforms in a basic normal distribution where most people are near the average and the min and max are outliers.

However, the distribution could just as easily look like this:

A distribution very tightly centered around the average.

This graph still conforms to the min/max/avg, but it tells a very different story, where almost everybody is clustered around the average and anyone off by more than a few percentage points is an exceptional case. In this case, you would look at the graph and say, “Oh, 99% of people who play Fighters have a DPS of about 134. Everybody else should be considered an outlier and we should figure out how they managed to get that kind of performance.”

Scarier still would be this kind of distribution:

Two clustered distributions, one near the max and one near the min.

Aaaarrgh! This is a scary, scary distribution which completely invalidates the average figure. While the average is still technically 134, there are actually two separate distributions, one clustered close to the min and one clustered close to the max. In this case, you might say, “Hmmm. Maybe the Fighters with a DPS of close to 200 all managed to get a special item or power that has a bug which gives them +70 to their DPS.”

Somewhat Safer

Now, if you absolutely can’t get individual data points for your measurements, I would at least encourage you to record min/max/avg/mode/median/#points. Basically, what the mode and the median will do is provide a sanity check: if the average is roughly equal to the mode and the median, then you can say with some confidence that you have a normal distribution, and you can sleep easier at night. And recording the number of sample points is always important. A min/max/avg table is useless if you only have a few data points!

— admin

Comment

  1. [...] because, right?). Darius of Measuring Gameplay says that I should be collecting better data, that Averages Suck when developing [...]

    Mischiefblog » Blog Archive » Good point on averages · May 11, 01:08 AM · #

Commenting is closed for this article.

recently

Blog

Links