How to Create a Scoring System for Games with Time and Correct Answers

algorithms

o create a scoring system with time and correct answers for a game?
up vote 0 down vote favorite

I have a small mobile quiz game, which consists of 30 questions, and a timer which starts from 0 seconds, and goes all the way up to 1 hour. Below you can see that my timer starts from 0, and it is displayed in the format of MM:SS.

var timestamp = new Date(0, 0, 0, 0, 0, 0);

function pad(n) { return ("0" + n).slice(-2); }

Number.prototype.pad = function (len) {
    return (new Array(len+1).join("0") + this).slice(-len);
}

So, what I actually need is, some kind of formula, or system in order to receive a final score. So the more correct answers a user has, and the faster finishes the quiz, the more points gets. I know that this is kind of unrelated question for this forum, but I'm kind of stuck. I would like to hear your opinions, about the scoring system. So the smallest score should be 0, and the highest, well no limit.

Best Answer

I would make the minimum = 0 when 0 questions were answered and time elapsed was 60 mins.

From there, add points for every question answered and total time left, e.g.

Let's say each correct answer = 200 points. Each unused minute = 20 points.

5 questions answered in 60 mins = 1000 points. 5 questions answered in 30 mins = 1000 + 600 = 1600 points. 10 questions answered in 60 mins = 2000 points.

With this methodology, you may have to put in a minimum bound, i.e. the user must play for so many minutes and must have answered so many questions, e.g. let's say at least 2 answers and 2 minutes, which means that if someone quits a game after 2 mins and answering 2 questions:

2 questions answered in 2 mins = 400 + 1160 = 1560.

If you don't put this in, then if the user quits without answering at all in the very first minute, they still get 1200 points!

This is a very simple formula such that each question and every minute of time carries same weight. It makes it simpler for participants IMO. However, you may need to adjust your reward for each question and each unused minute, and that could make it better, for example, give so large a reward for questions as opposed to unused minutes (such as 600 points each for the question answered vs 5 each for unused time) so that if the user leaves in the first minute, they're still quite at the bottom.

An alternate approach is to use average # of questions per minute and reward that. You could calculate this ratio and multiply it with some constant (say 5000). Since the questions answered are the numerator and time taken is the denominator, if questions answered increase or time decreases then the reward increases. If questions answered decrease or the time increases, the reward decreases. With the same numbers as used before, the points using such a scheme could be like the following:

5 questions answered in 60 mins = 5/60 * 5000 = 416. 5 questions answered in 30 mins = 5/30 * 5000 = 833. 10 questions answered in 60 mins = 10/60 * 5000 = 833.

See though that the difference between the first approach and this one is that for the same number of average questions answered per minute (i.e. 5 q in 30 min vs. 10 q in 60 mins), the first approach rewarded differently, the second one rewards the same.

Related Topic