I'm working on an app that teaches real-life skills by pitting players against each other to compete in skill improvement tasks. The problem is, players have a number of different tasks they're working on at the same time, and the better they get at one task, the more they'll want to choose that task over others as the easiest way to get points.
I'm thinking of tweaking the scoring so that it rewards players for doing things that are difficult for them, but I'm having trouble coming up with a reasonable way of implementing this. How do you motivate players to do hard things?
Ideas so far:
- I like models grounded in solid math, though models grounded in intuition are great too. What about using time-weighted data about player performance to predict the likelihood of a player attaining the score they did, and rewarding them based on how unlikely the performance was? Vaguely like Elo for single-player games, where a player is "beating" their achieved score as opposed to beating another player. Super complex though.
- Much simpler way of doing the above. Use time-weighted data to calculate descriptive statistics of the user's scores so far, then score the user based on the z-score of their performance, probably scaled exponentially to account for difficulty at the extremes. One sigma above expected? 10 points. Two sigmas? 100 points. Three sigmas? 1000 points.