At OneUpMe Eric and I have created several formulas that correlate one user to another based on the votes each player has made. We’ve used this “friend score” to bring people closer together, both as they play the game and also as they communicate with other players. Similarly, we’ve created formulas that rank players’ popularity and taste scores, ultimately showing how good or bad a player is at playing the game. And with these formulas we’ve been able to create a significantly richer OneUpMe experience, connecting similar players together to forge new and deep friendships. In this post I’ll talk specifically about the friend score, and how math has helped OneUpMe players make friends.
The Math Behind The Friend
Let’s talk about our “friend score” formula first. On OneUpMe players compete by supplying creative responses to seed topics. Every day sees a new topic, and players vote on other players’ responses, the best voted response winning for the day. A player’s response is initially anonymous to all players, until a post is voted on, at which point the voter is able to see the post’s author. So, if Eric posts a response, I won’t know it’s his until I vote on it. The formula we chose to determine friend score is listed below. For sake of example let’s say this formula is calculating the friend score from person A to person B.
N * T / P
In this formula N represents the number of times person A voted for B, T represents the total number of posts made by person B, and P represents the total number of posts made by person B since I’ve joined the game. Basically, what we’re doing is we’re multiplying the number of votes person A has made for person B by the ratio of posts person A has had the opportunity to vote on. So friend score will be maximized if person A has voted for each of person B’s posts, assuming person A joined the site earlier than person B. The math is simple, but in this case simplicity is all we need to represent meaningful relationships.
After we’ve calculated the friend score between each player we normalize the scores, effectively assigning percentiles to friendships.
Applying the friend score
With the normalized friend score–meaning we can say that person A and person B have a friendship strength in the Nth percentile–we’re able to do a lot of things in the game to really drive engagement between friends. For example, the “hottest” list of posts utilizes the normalized friend score to increase the likeliness of me voting on a post made by someone I’ve previously voted for. Take a look, in the below example I voted for Eric’s and Carla’s posts, both players I often vote for:
Similarly, we’ve built a news feed feature which takes relevant forum and wall discussions and displays them on my news feed. The news feed scores discussions based on the friend score between me and the people in discussion, only displaying posts of people I’ve voted for previously, or, people I’m interested in chatting with.
Ultimately we’ve changed the dynamic of the game to be more social, to be played more between friends, friends that develop and change as you play the game. Our users have said they’re less overwhelmed with the thousands of posts the site sees per day, because the “hottest” post list and the news feed let them connect with the people they already know. And the OneUpMe champion players, known on the site as “Elders,” have made powerful friendships, and are visiting one and other all across the world. Seriously, last week a pair met up in London! Math makes friends!
We base friendship on a player’s voting pattern, and we use friendships to encourage discussion and further playing among friends. Currently a friend score is purely based on gameplay–people you vote for become your friends. However, such a measurement isn’t quite complete. We need to start using forum commenting, wall posting, and liking to measure friend strength as well. So instead of just using game play, we also need to use discussion.