Несколько советов по настройке правильной системы подсчета очков для игры, основанной на ответах.

Я разрабатываю онлайн-игру с вопросами и ответами и хотел бы получить помощь в отношении моей системы подсчета очков. Или совет.

По сути, игра представляет собой набор головоломок, в каждой головоломке есть набор вопросов. Пользователь проходит через вопросы и баллы в одной головоломке. В свою очередь, он делает то же самое с остальными. Это онлайн-игра, основанная на пользователях, что означает, что каждая головоломка имеет рейтинг 10 лучших игроков для каждой головоломки, а также общее табло для всех головоломок вместе взятых. Более того, пользователь может приобрести дополнительные пазлы. Игра предложит приз через некоторое время, и чем больше вы будете разгадывать головоломки, тем больше у вас будет шансов на победу.

У меня нет проблем ни с тем, чтобы получить высокий балл пользователя за каждую головоломку, ни с тем, чтобы получить 10 лучших игроков только по этой головоломке. Проблема в том, когда я думаю об общей таблице результатов.

У меня вопрос: как я буду ранжировать 10 лучших игроков, зная, что игрок, который покупает больше головоломок, должен иметь преимущество, но в то же время он не может быть лучше, чем другой игрок, у которого более высокий процент.

Подробно рассмотрим этот сценарий:

- Player1
   * Free Puzzle 1: 60 points 80%
   * Free Puzzle 2: 80 points 85%
   * Paid Puzzle 1: 80 points 89%
-Player2
   * Free Puzzle 1: 50 points 72%
   * Free Puzzle 2: 40 points 66%
   * Paid Puzzle 1: 40 points 55%
   * Paid Puzzle 2: 70 points 80%

Если мы сравним этих двух игроков, мы увидим, что второй игрок купил больше головоломок, но игрок 1 набрал по ним больше очков.

Как я могу решить эту проблему, сохранив оба аспекта. Потраченные игроками деньги по сравнению с выступлениями игроков. Если я усредню их вот так,

Player 1: (80+85+89)/3 = 84.66%
Player 2: (72+66+55+80)/4 = 68.25%

и это повысит рейтинг игрока на 1. Также примите во внимание, что пользователь может сыграть только одну головоломку и набрать больше очков, чем все остальные. Мне нужно найти компромисс.

Обратите внимание, мне не нужна помощь с какой-либо логикой кода, это просто общая идея того, что мне нужно реализовать.

Спасибо


person M O H    schedule 28.01.2014    source источник
comment
Вам действительно нужно, чтобы окончательные результаты игроков были в процентах?   -  person T. Benjamin Larsen    schedule 28.01.2014
comment
@nickfalk Спасибо за ваш комментарий. По сути, если я не использую проценты, система очков все равно будет оценивать, что игрок, который платит за одну головоломку, получит более высокий балл, даже если он набрал гораздо меньше.   -  person M O H    schedule 29.01.2014


Ответы (1)


Существует, наверное, миллиарды разных способов сделать это, вот несколько идей, пришедших моим в голову:

Довольно простой способ добавить дополнительный вес игрокам, покупающим больше головоломок, — фактически использовать количество оплаченных головоломок в качестве некоторого параметра:

- Player1
   * Free Puzzle 1: 60 points 80%
   * Free Puzzle 2: 80 points 85%
   * Paid Puzzle 1: 80 points 89%
-Player2
   * Free Puzzle 1: 50 points 72%
   * Free Puzzle 2: 40 points 66%
   * Paid Puzzle 1: 40 points 55%
   * Paid Puzzle 2: 70 points 80%

Player 1: numberOfPaidPuzzles + (80+85+89)/3 = 86.66    
Player 2: numberOfPaidPuzzles + (72+66+55+80)/4 = 70.25

Достаточно легко понять, что количество платных головоломок само по себе не сократит его, поэтому вы, вероятно, захотите несколько взвесить этот параметр, как в приведенном ниже примере для части вашего вопроса «вознаграждение игрока за то, что он сыграл больше головоломок»:

weightFactor = totalNumberOfAvailablePuzzles / n;
playerAverageScore = playerAverageScore * (weightFactor * totalNumberOfPuzzlesPlayed)
person T. Benjamin Larsen    schedule 28.01.2014
comment
Я подумаю об этом @nickfalk и посмотрю, что я могу придумать. - person M O H; 29.01.2014