# How do you encourage players to do hard things?

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.

A good way to encourage the player to explore all the features of your game are achievements. Log achievements for mastering all the different skills at different levels. In order to tease the players completionist instincts, create an achievement screen which shows both the obtained and unobtained achievement badges.

A way to encourage players to do different things is to discourage them in doing always the same thing.

As they "do the same task", reduce the benefit gained from this task until they have accomplished enough of the other tasks.

E.g. with tasks of type A, B, C, at the start, each have a score multiplier of 1, then, as they perform a task of a specific type, reduce the multiplier by 0.1 for tasks of that type, until they get to, say, 0.5. Once every task type has its multiplier down to 0.5, reset everything back to 1.

Another way would be to have a personalized rotating daily bonus. If Player A seems to never do Task B, when they start their game session, tell them that they'll earn bonus points or some kind of reward if they perform Task B today.

Another way would be to increase a cost to do the easier tasks: a high demand task will cost more; you could reward them with "coins" when they do less popular tasks, and have them "pay" with coins to do more popular tasks.

Yet another simple way would be to put a hard limit on how many times they can repeat the same task per period of time. They can perform task C only three times per day, after that, they'll need to find another task to try.

That being said, if your users do a specific task to get points, the questions is, why do you give points in the first place. Users will do anything/everything to get points, they'll optimize their gameplay in order to get points. Maybe you should reconsider the concept of points and go with something already suggested by the previous answer, or go with a scoring system that cannot be compared, e.g. unlocking hats or other cosmetics instead of giving points.