Currently I'm doing an android game. My problem is the score. The game speeds up in every round and currently I'm counting the score like this:

private static final const int MAX_SCORE = 150;
private int countdown = 0;

public void scoreUpdate(){

   if(countdown <= 0){
      score = 0;

   score += countdown;

   countdown = MAX_SCORE;

countdown gets constantly decreased in my game loop so the less time you take to react the more score you get. Every Tap you do correctly will start the next round and call scoreUpdate().

Problem now is, that the game is speeding up, so you only get good scores the further you play the game. Does anyone has a better method to count the score more evenly?

  • 6
    \$\begingroup\$ Could you describe in more detail what you'd want the final result to be? Getting a better score the more you play seems reasonable, \$\endgroup\$
    – TomTsagk
    Sep 27 '18 at 9:05

You could always base the score on the percentage of the starting countdown:

switch round(8*countdown/MAX_SCORE) {
    case 0:
        break; // bottom 1/16 gives no score, but you keep playing
    case 1:
        score += 10;
        break; //2nd and 3rd 1/16 are grouped together, etc
    case 2:
        score += 20;
    case 3:
        score += 40;
        break;  //Non linear scoring makes better reactions worth much more
    case 4:
        score += 60;
    case 5:
        score += 90;
    case 6:
        score += 120;
    case 7:
        score += 160;
    case 8:
        score += 250;
        break;  // top 1/16 has a big score bonus

You must log in to answer this question.

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