I have a website where users can choose the winner of a sporting event. If they guess correctly they get 1 point, otherwise they receive zero points. At the end all users are ranked based on their score, which is computed like this:

score = points * (number_of_guesses / number_of_misses)

It's a rudimentary system but it works alright. However I am looking for a points system that's more interesting to the user, that makes the game more engaging. For example giving more points for picking the underdog in an event might make the game a bit more interesting.

Can you offer me some suggestions?

  • \$\begingroup\$ I'm not really sure if gamification falls into the category of regular game design... But I guess it does. \$\endgroup\$
    – jcora
    Feb 6, 2012 at 20:17
  • 6
    \$\begingroup\$ Look up the equations used for horse-betting. Then just pretend that everytime someone votes, they are "betting" an imaginary dollar on that team. Then voting for the underdog will automatically be compensated, because the odds are changed based on how many people bet on each team. \$\endgroup\$ Feb 6, 2012 at 21:05

2 Answers 2


This is pretty much what normal betting is about, so checking out what bookmakers do is certainly good research.

Stating percentages
One game that force players to consider the chances of the underdog is having them state the chance of each possible outcome instead of just choosing one. So if GreatTeam is playing against NotSoGreatTeam a player might put 95% on GreatTeam and 5% on NotSoGreatTeam.

The trick to making this work is to have a scoring rule that on average pays the most when you guess the right percentages. Here is a simple formula that does the job:

Score = 1 - (1 - [dictated chance of outcome])^2

So in the example the player would score 0.9975 points if GreatTeam won and 0.0975 points if NotSoGreatTeam won, averaging 0.9525 points if the 95/5 split is correct, which is more than any other guess.

The weakest point of this system is that it relies on the players trusting that the formula actually works as advertised, since there is no way you are going to be able to explain it to the majority. There will from time to time be a simpleton claiming that it's all a lie and the best option is to put 100% on the most likely outcome, but I'd consider that part of the fun.

The formula by the way still works if there is more than 2 possible outcomes.

Greater score for minority bets
A simple way of giving more points for betting on outsiders is to distribute the same number of points per participant no matter how many or few players hit the right answer. So for each winning player:

Score = [Participants] / [Correct guesses]

Alternately written as:

Score = [Fraction of players who guessed correctly] ^ -1

This should make it advantageous for a small part of the players to take the side of the underdog, though if too many do so the advantage will be too low. Thus how much information on the other players choices you disclose will make a big difference, players might want to move their bets if too many bet like them.

  • 2
    \$\begingroup\$ The "Greater score for minority bets" should go by ratio of bets, rather than actual number of bets, so the reward isn't dependent on the number of people participating. This still has flaws (one person betting gives out twice as many points as two people), but it's a start. \$\endgroup\$ Feb 6, 2012 at 23:37
  • \$\begingroup\$ @BlueRaja-DannyPflughoeft, I guess that part isn't very clear, I think you mean the same thing as I do. I'll try to rephrase it. \$\endgroup\$ Feb 7, 2012 at 14:53

You could map the points distribution to an asymptotic curve (like dividing by the exponential function, for example).

enter image description here

In other words, you could define a point cap on the award, and then calculate it as follows:

score = max_points * (number_of_guesses / number_of_misses) / exp(player_rep)

Where player_rep is some form of metric indicating the player's likelihood of success or overall reputation.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .