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".
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.
All this can be done with site building features only (no custom code involved), though hooks are available to integrate it in custom coding also). For some examples of using these hooks, refer to the answers to these questions):
For more details, refer to its Community Documentation. For some details about how it differs from the Achievements module (which is a possible alternative), refer to What is the difference with the Achievements module?, which states:
The Goals module is built around using the admin interface configuration. Plus, goals and tasks within the Goals module are fieldable entities, so you have the flexibility to add additional fields and incorporate these entities into views.
I can't speak definitively for the Achievements module, but my best understanding is that it relies heavily on custom coding to handle many of the functions.
Disclosure: I'm the maintainer of this module.