The Goals module is a possible solution to answer this question. It can be used to incentivize anything on your site, such as voting, sharing content, creating relationships, etc.
Goals and Tasks are implemented using fieldable entities. So you can customize Goals via "Manage Fields" and/or "Manage display". And it integrates very well, out-of-the-box, with the Views module also.
Head over to the Goals video which includes:
- a general introduction to the module.
- a demonstration to install, configure and use it.
- samples of how it uses the Rules modules to do its magic (i.e. to track the progress of a user to achieve the various goals).
Using the Goals Extras sub-module it integrates with the User Points module also.
For more details, refer to its Community Documentation, which also includes a summary of what this module is really about, ie (quote from that page):
What is a "Goal"?
A "goal" is a set of one or more tasks a user must complete. A goal is a container for tasks. Once a user completes all tasks for a goal, the goal is automatically marked complete.
By creating a number of goals that align with behaviors encouraged on a site, a gamification system can quickly be established which is easy to administer, highly customizable, and tailored to the needs of the site.
What is a "Task"?
A "task" is any action that site users must complete one or more times. In addition to simply counting the number of times an action is performed, administrators have the ability to place constraints on the timeframe in which an action is performed. Examples of tasks created by site administrators include:
- A user "Likes" another user’s post.
- A user contributes three posts of content within a week.
- A user logs in to the site for three consecutive days.
Disclosure: I'm the maintainer of this module.