My Ranking Systems

I made 2 ranking systems that are designed to please competitive gamers as well as address the issues that come with it. Whether or not they accomplish this is what you have to decide.

tl;dr: What these ranking systems are supposed to accomplish:

  1. Determines the player’s skill and matches similar players
  2. Prevents people from exploiting the system
  3. Reduces the black market of buying and selling accounts

There are 2 ranking systems: “Custom” and "Arena Style"

Highlights:
=“Custom” system uses features of the Halo 2 ranking system. It is the one I made from the ground up.
=“Arena Style” uses modified Halo Reach Arena system. It is not the Halo Reach Arena system. The formula is used to help calculate skill.
=Each system changes a player’s rank on a game-by-game basis.

Notes:

  1. These ranking systems can only be implemented in Team Slayer game types. Examples: Team Snipers, Team Swat, Team Slayer, and MLG Slayer. Another ranking system will have to be created for objective based and other game types.
  2. This system does not take into account quitters. I didn’t implement this because Halo 4 said that players could join in-game progress. I don’t know the specifics so I didn’t implement a penalty system for quitters. If you want me to I can, but I will let you figure that out.
  3. Because it doesn’t penalize quitters, the systems don’t work for Halo 4 and need to be changed, but this is something I feel the Halo 4 ranking system should run like.
  4. I am not saying the systems are flawless. There will always be flaws in ranking systems.

Excel File: here


HOW TO USE EXCEL FILE:

  1. Download or copy the file so you can edit it.
    Click File>Make a copy… (Note: You must be signed into Google)
    OR
    File>Download as>Excel (Note: You must have excel)
  2. Change stuff in yellow to simulate a game.
  3. Make sure the game is possible
  4. Look at change in rank.
    Red: change calculated by “Custom” system
    Green: change calculated by “Arena Style” system
    END OF tl;dr.

I set out to develop my own ranking system for Halo. I did it to see just how hard it is to make a ranking system. The system can’t be implemented for objective game types. Another ranking system would have to be added on to this. These ranking systems are just the tip of the iceberg–a starting point. It is meant to help represent the core of a ranking system for competitive play. It is also necessary that the game implements social and ranked playlists for these systems to work. I also believe that a progressive system has to be implemented along with these systems. In Halo 3, 1 win = 1 EXP. Halo Reach used a credit system. I am not here to discuss which ranking system should be implemented or why a progressive system should be implemented on top of the skill ranking system. Please talk about that else where. I am here to discuss a skill based ranking system. Test it out and if you don’t like it tell me why. However, when you do so, be constructive and use logic to backup your argument.

How the systems work:
These systems define a player’s true skill and give them a number from 1 to 50 (like previous halo installments). The way it is different from other Halo ranking systems is that it doesn’t rank people based on if they win (1 reason why it can’t be used in other game types). It ranks them on how well they did in game. It looks at the post-game stats and determines how much a player should rank up or down in comparison with the team. So if you get a positive K/D spread, you will more than likely move upwards in rank. Read below for an in-depth analysis on how I calculated skill.
I tried to create a system that should be hard to exploit. I have tested situations from boosting, joining and not playing the game, to constantly committing suicide. I could have created the penalty system for quitters but I don’t know the specifics for quitting and joining in Halo 4. I can implement a quitting system that would work for Halo Reach, Halo 2, and Halo 3 if need be. I am also fully aware that just because I have tested and created these systems does not make them good or flawless. That is for you to decide. I believe the “Custom” system is good because of the logic behind it. If the logic is flawed, tell me why. However, be polite and use logic to back up your argument. I will keep an open mind as long as you do this. Read below for an in-depth analysis on how I helped prevent exploiting the system.
The systems also reduce the black market of buying and selling accounts. I say reduce because as with any ranking system, there will always be a black market. I recently came across how to really reduce the black market by looking at the forums here. I found 3 solutions that help solve this problem. But by doing so, it also creates some more problems. This is where you need to decide which problems are worse: the black market, or the ones created by the solutions. Read below for an in-depth analysis on how I created a system to reduce creating a black market.

Thank you for your time and patience reading this.

This post inspired me to make the ranking system.

I share similar thoughts to these posts also:
Post 1
Post 2

Thinking Process of the “Custom” System

When I started creating the “Custom” system, I had one goal in mind: try to make a ranking system that would rank a person mainly based on his K/D spread. Obviously, there are other factors but this was the central idea that I had when I was creating this system. If a player had a positive K/D spread, reward them for their valiant effort. If their K/D spread is 0, have their rank not really change. And if it was negative, make their rank go down. Now these were general “guidelines” that I had while I was making the ranking system.

How much Trueskill should be wagered each match?
The total amount wagered (TotalPotSize) each match should be the number of players playing times a percentage of a rank (RankPercentage). This RankPercentage is 1.0 (100%) for the “Custom” system and 0.5 (50%) for the “Arena Style” system. I did this because it allows a player’s rank to change by 0.10 of a rank. This basically represents how much of a rank each person will wager. This number needs to change on a game-by-game basis to prevent boosters (check exploitation section for more info). For example, if a player is playing a 4 vs. 4 match, the TotalPotSize would be (1.0*20,000)8=160,000 Trueskill Points. The 20,000 represents the amount of Trueskill points needed to rank up 1 level. This number is arbitrary. But it must be greater than 1. The 8 represents the number of players. The (1.020,000) means that for each player playing the game, 20,000 points are added to the pot. So a player can rank up a total of 8 ranks per game. This, however, will NEVER happen, as this ranking system won’t allow it.

How much Trueskill should each team wager? (Same as “Arena Style” System)
~Theory: Each team should wager an amount based on the entire teams’ Trueskill. If a team has a bunch of higher ranked players than the other, then it makes sense that that team would wager more. ~Calculations: Take the sum of one team’s Trueskill (Team’sTotalTrueskill) and divide it by the sum of all the team’s Trueskill to get a percentage (lets call it TeamWagerPercentage). Take the TeamWagerPercentage and multiply it by the TotalPotSize which gives you how much each team will wager (Team’sWagerPot).

How much should each Team member wager?
~Theory: If a level 50 and level 3 paired up with each other and searched for a match, the level 3 should only have to wager a little percent of their Trueskill while the level 50 would have to wager a bigger percentage of their Trueskill. ~Calculations: Take a player’s Trueskill and divide it by the Team’sTotalTrueskill to get a percentage (Player’sWagerPercentage). Take the Player’sWagerPercentage and multiply it with the Team’sWagerPot to get the total amount of Trueskill that the player is wagering (Player’sWagerAmount).

Now that everyone has wagered his or her own amount of Trueskill, play the game.
Now we look at the stats and distribute each Player’sWagerAmount.

NOTE: Unlike the “Arena Style” system, the points are distributed based on each player’s stats. The “Arena Style” system distributes the Trueskill based on the team’s stats and then on the player’s stats. But there is somewhat of a problem with this, which is explained in the “Thinking Process of the “Arena Style” System” section. Therefore, this system distributes Trueskill among the players and then the team.

How are each player’s post-game stats analyzed?
~Theory: The system breaks each player’s stats into two scores: a score that helps the team (HelpfulnessScore) and a score that hurts the team (Hurtfulness Score). ~Calculations: The HelpfulnessScore is the number of kills the player gets plus the number of assists multiplied by 0.75. I multiplied the number of assists by 0.75 because the Halo reach system gave a person an assist if they hurt a player more than 50% of the way. So basically shoot him 3 times with a DMR and have someone else finish the person off. However, most of the time I hurt the player over 50% before someone finished them off. If a power weapon doesn’t kill a person, it usually knocks out all of their shields. The HurtfulnessScore is the number of deaths plus the number of suicides and betrayals.

How are the Player’sWagerAmounts divided?
This process is the bread-and-butter of the system. It is divided into two parts:
Part 1:
~Theory: Each player’s HurtfulnessScore is compared to the total team’s HurtfulnessScore and a percentage (% of Hurtfulness) of a percentage (CompletionFactor) of the Player’sWagerAmount is taken out and distributed among the other team. ~Calculations: Each player’s HurtfulnessScore is divided by the sum of all player’s HurtfulnessScore to get a percentage out of a hundred (% of Hurtfulness). So if the player is the only one on the team to die, he is the only one that loses points. Which means that players are not penalized for sucky teammates. This percentage is not the only percentage that dictates how many points you lose. If it were, there would be a huge problem. Look at this example, a match is played and blue team beats red team 50 to 1. Now, assuming no betrayals or suicides, the player on the blue team that got the 1 death, his % of hurtfulness would be 100%. And if this were the only percent that dictated how many points he would give up, he would have to give up all of his WagerAmount. It took me tons of thinking to figure out how to get around it. The solution is so simple: multiply this score by the other teams CompletionFactor. The CompletionFactor for each team is the percent of points that each team got out of the score they are playing to. So, in this case, the red team’s completion factor is 1/50=0.02%, assuming that the score that they were playing to was 50. This score is multiplied to every team member’s % of hurtfulness on the opposite team. Thus, the points lost by blue player that got 1 death would be 0.02% of his WagerAmount (100%*0.02%=0.02%). The points lost by each player are given to the other team.

Part 2:
~Theory:` The points lost by a team is then distribute among the other team. Each player’s HelpfulnessScore is compared to the total team’s HelpfulnessScore and a percentage (% of Helpfulness) is taken out of the points lost by the other team.
~Calculations:’ Each player’s HelpfulnessScore is divided by the sum of all player’s HelpfulnessScore to get a percentage out of a hundred (% of Helpfulness). Each player’s % of Helpfulness is then multiplied by the total points lost by the other team to get the points gained by each player. Using the same example as above, the 1 member on the red team that killed the blue team member would get his points. Finally, the winnings of each player are calculated by taking the points gained, subtracting the points lost, and subtracting any penalties. The Penalties are covered in the “Exploitation” section.

How is the Win/Loss Factor determined? (Same as “Arena Style” system)
View the Arena Style to get the information.

Thinking Process of the “Arena Style” System

How much Trueskill should be wagered each match? (very similar to “Custom” System)
The total amount wagered (TotalPotSize) each match should be the number of players playing times a percentage of a rank (RankPercentage). This RankPercentage would be like 0.5. This just means that for each player, half a rank will be wagered to the TotalPotSize. This number needs to change on a game-by-game basis to prevent boosting (see exploitation section). For example, if a player is playing a 4 vs. 4 match, the TotalPotSize would be (0.5*20,000)8=80,000 Trueskill Points. The 20,000 represents the amount of Trueskill points needed to rank up 1 level. This number is arbitrary. The 8 represents the number of players. The (0.520,000) means that for each player playing the game, 10,000 points are added to the pot. So a player can rank up a total of 4 ranks per game. This, however, will NEVER happen, as this ranking system won’t allow it.

How much Trueskill should each team wager? (Same as “Custom” System)
~Theory: Each team should wager an amount based on the entire teams’ Trueskill. If a team has a bunch of higher ranked players than the other, then it makes sense that that team would wager more. ~Calculations: Take the sum of one team’s Trueskill (Team’sTotalTrueskill) and divide it by the sum of all the team’s Trueskill to get a percentage (lets call it TeamWagerPercentage). Take the TeamWagerPercentage and multiply it by the TotalPotSize which gives you how much each team will wager (Team’sWagerPot).

How much should each Team member wager? (Same as “Custom” System)
~Theory: If a level 50 and level 3 paired up with each other and searched for a match, the level 3 should only have to wager a little percent of their Trueskill while the level 50 would have to wager a bigger percentage of their Trueskill. ~Calculations: Take a player’s Trueskill and divide it by the Team’sTotalTrueskill to get a percentage (Player’sWagerPercentage). Take the Player’sWagerPercentage and multiply it with the Team’sWagerPot to get the total amount of Trueskill that the player is wagering (Player’sWagerAmount).

Now that everyone has wagered his or her own amount of Trueskill, play the game.
Now we look at the stats and determine how the TotalPotSize will be distributed among the teams.

How many Trueskill points should a team win?
~Theory:` If red team wins, the number of Trueskill points that red team gains (Team’sWinnings) should be a percentage (Team’sWinningsPercentage) of blue Team’sWagerPot and vise versa.
~Calculations:’ The Team’sWinningsPercentage is the variance in scores (Team’sScoreVariance) divided by the score to win the game (ScoreToWin).
For example, if the game is team snipers, the ScoreToWin is 50, and red team beats blue team 50 to 0, then the red Team’sScoreVariance is 50-0=50. The red Team’sWinningsPercentage is 50/50=1 or 100%. This means that the red team took 100%, or all, of blue Team’sWagerPot. If the score was 50 to 40, then the red Team’sScoreVariance is 50-40=10. The red Team’sWinningsPercentage is 10/50=0.2 or 20%.
Also the team’s total winnings are just the Team’sWinnings plus the Team’sWagerPot (Team’sTotalWinnings).

Now that we know how the points are being distributed between teams, lets look at how the points will be distributed between players.

How many Trueskill points can a player lose?
A player will be able to lose all the points that he or she wagered and could actually lose more depending on their score. I don’t feel like a player should lose more than they wagered but this happens if there is a high rank player on the team and he does poorly. If a high rank player is on the team, the team has to wager more. If the top player doesn’t do well, he loses most of his points but some of it comes out of the other player’s points. If they did poorly also, they will loose more than they wagered. However, it doesn’t take too much out of the other players but I still see this as a problem. That is why I invented the “Custom” system to solve this problem. This also means that an individual brings down the team. And some people like this this because they believe that the team’s effort is more important than the individual’s abilities. I believe that crappy teammates should not bring you down and that is why I designed the “Custom” System.

How is a player’s score calculated?
~Theory: The system uses a changed Halo Reach Arena Ranking to determine a players score. I broke the raw score down into 2 parts. I took the part that helps a team (HelpfulnesScore) and the subtracted the part that hurts the team (HurtfulnessScore) and then plugged it in. ~Calculations: The HelpfulnessScore is the number of kills the player gets plus the number of assists multiplied by 0.75. I multiplied the number of assists by 0.75 because the Halo reach system gave a person an assist if they hurt a player more than 50% of the way. So basically shoot him 3 times with a DMR and have someone else finish the person off. However, most of the time I hurt the player over 50% before someone finished them off. If a power weapon doesn’t kill a person, it usually knocks out all of their shields. The HurtfulnessScore is the number of deaths plus the number of suicides and betrayals. Take the HelpfulnessScore and subtract the HurtfulnessScore to get the Raw Score like in Halo Reach. I got rid of the 0.96 losing factor because the way the pot is distributed between teams takes care of that.

How are the winnings divided between players?
~Theory:` The winnings are divided by taking the Player’sWagerPercentage and adding it to the player’s arena score percentage to get a final percentage of the Team’sTotalWinnings.
We take the player’s arena score and divided it by the total teams arena score. Now subtract 25% from that score. This is because if a game happens where no one gets a kill, no one’s rank changes. Add the Player’sWagerPercentage and this finally gives you the % of Player’s Winnings. So now we multiply this percentage by the Team’sTotalWinnings and subtract the Penalties and Player’sWagerAmount to get the player’s winnings (Winnings). The player’s winnings are then multiplied by a Win/Loss Factor just like Halo 2. The Penalties are covered in the “Exploitation” section.

How is the Win/Loss Factor determined? (Same as “Custom” System)
The Win/Loss Factor is determined the same way in Halo 2 but I found a few errors with the Win/Loss Factors that I fixed. We add this Win/Loss Factor in order to add points to a global pot. It makes ranking up a little quicker for lower levels. The Win Factor also takes the away from the global pot. It makes it harder for level 40s to rank up and therefore means less level 50s. Add the Win/Loss Factor to the player’s original Trueskill to get their new Trueskill Value. Then just calculate their rank based on the ranking charts.

Exploitations of the Systems

Like with any ranking system, there are ways to exploit it. These exploitations usually are done for a variety of different reasons. One exploitation would be to commit suicide the entire game and that could change the way the points are distributed amongst a player’s team. If a level 1 were to commit suicide the entire game, his teammates wouldn’t be as penalized for their deaths. In order to combat this, I set up a penalty system so this wouldn’t happen.

How do players receive penalties?
I set two penalty flags to monitor each player’s suicides and betrayals. If a person receives more than 5 suicides then the suicide penalty flag is activated. If a player betrays a teammate more than 5 times, then the betrayals penalty flag is activated.

What do penalty flags do?
~Theory: Once a penalty flag is activated, the player’s HurtfulnesScore now removes all the player’s suicides or betrayals depending on which flags are activated. A suicide or betrayal penalty factor is applied to the suicides or betrayals. ~Calculations: The HurtfulnessScore has two “if” statements that look at the penalty flags for each player. If any one of them is true, then the amount of betrayals or suicides, depending on which one is activated, will not be calculated by setting the value to 0. If the value is false, then the amount of suicides or betrayals that the player has is calculated in to the HurfulnessScore.

NOTE: Each team gets a Anti-Penalty Score which also removes each player’s betrayals and suicides that have been flagged. Which means that if a player commits suicide 40 times in match, those 40 suicides will not be calculated in the total score. This means that a teammate cannot screw your team over by making your team lose.

What are the penalty factors?
The penalty factors represent the number of levels a player will lose for each suicide or betrayal that is over 5.

How are the penalties applied?
The penalty factors are applied when calculating the player’s winnings. The amount subtracted from the winnings is equal to the number of suicides multiplied by the penalty factor, multiplied by the amount of points it takes to rank up one level.

There is a problem with doing this method. Up until this point, the amount of Trueskill points that are added globally are equal to 0 before the Win/Loss Factor is applied. But now, the penalties are reducing the global pot. This means that the Win/Loss Factor is not the only thing that adds and reduces the global pot. However, in order for this to be a true problem, a tremendous amount of players have to commit suicide every game while being a very high rank. This is because the penalties are applied to the winnings before the Win/Loss Factor is applied. So the global pot size wouldn’t decrease if a player were a low rank. Also, doing this would kill your rank. And I feel these systems make it very hard to be a high level rank without having a lot of skill.

Another way to exploit the system would be to try and lose on purpose. In Halo 3, people would lose hundreds of games so that way they would be put against people that were easier. They would never really play against people who were of the same skill level and it made it easy for them to climb the rankings.

The solution to this problem lies in the matching system. The matching system is the system that matches people together (usually by skill). For this ranking system, the matching system should look at the Trueskill, W/L, K/D spread, and other factors to match players. But it should first try to match people based on these Trueskills (not talking about Halo 3 anymore). It should then look at the previous 5-10 games that the person played. If they are all losses, then the matching system should try to match similar people with 5-10 losses. It should not try to match people of lower skill. That way, if a person loses 100 times on purpose, the person will lose many ranks but will play against easier opponents for 5-10 games, rank up 1 rank, and then he will start playing against really good players in that Trueskill range. Therefore making it harder for him to get back to the original rank and therefore making him worse off.

Preventing Boosting
The next way to exploit the system is boosting. Boosting is using a high level player to play against high level players even though they are a low level. To combat this, the system has an Anti-Boost Percentage. The Anti-Boosting Percentage changes how fast or slow people are able to rank up every game. For example, if a level 50 player and level 1 player join up and play ranked matchmaking, they might join a match where everyone’s rank averages 40. If the level 1 is actually good, the players rank could go up very high and the other teams would drop. To combat this, the Anti-BoostingPercentage takes into account that the player has a really low rank compared to everyone else and the Anit-BoostPercentage would drop. This would decrease the amount of Trueskill points in the TotalPot and would basically prevent the player’s rank from changing for that game (it would change a very small amount). This means that as long as a level 1 is with a level 50, that player would go up in rank very slowly. But as soon as the level 1 plays against people of his skill level, he is able to rank up quickly again. The Anti-BoostingPercentage needs to be fine-tuned to make this effective. I simply took the difference between the maximum and minimum rank, subtracted that from 50, divided by 50, and then multiplied this by the RankPercentage to get the new RankPercentage. You can kind of think of the RankPercentage as the maximum speed that players rank up at and the Anti-BoostingPercentage as the dial that controls the speed. This does bring the up the question: Is it fair to semi-freeze everyone’s rank (in that match) for just 1 game to prevent a booster? That is for you to decide.

So the only other way that I know of to exploit the systems would be for a 50 to get a second account and level up to level 50 again. The systems don’t prevent this from happening because if the player is truly one of the best, he will eventually be a level 50. But it would just as hard to get to a level 50 as he did before. Basically, in order to be a 50, you have to play with people of the same skill level and be one of the best, a true level 50, or you could always buy your level 50… which brings me to my next topic: Preventing people from buying level 50s.

How to reduce the Halo black market:

Whenever I refer to the “black market” of halo, I am referring to the buying and selling of Xbox Live accounts in order to give players a Halo rank that they didn’t earn. There are 3 ways that I know of to reduce the buying and selling of accounts. To my knowledge, there is no way to prevent this market from happening as long as you have a ranking system in place—regardless if it is skill based or progressive. People pay others to get them a lot of experience so that they don’t have to put in the time to get it. Although this might be a very small number of people, I am simply pointing out that it will still happen. So the whole point is to reduce this black market as much as possible.
There are 4 ways of doing it:

  1. Make the system invisible such that people don’t know their ranks.
  2. Make the system only visible to you such that only you can view your rank.
  3. Make peoples’ ranks decay once they are in a certain skill range.
  4. Implement 2 and 3.

Some people believe the first one will remove the motivation to become a better Halo player. I am not here to discuss whether that is right or wrong. Implementing the first one would make these systems more of a matching system rather than a ranking system. I wanted to design a ranking system.

The second choice prevents others from seeing your rank. This reduces the black market because if nobody can see someone’s rank, then you have no evidence to believe what he or she is saying is true. There are still ways of showing the rank, such as a photo, but it is just not that practical. Doing this will put the motivation back into competitive players and it will also reduce the bragging and flaming of other players. Some people like the bragging aspect of a ranking system while others don’t.

The third choice would make it so that a player would have to keep constantly playing on a playlist in order to keep the highest rank. For example, in halo 3, General was the highest rank you could achieve with skill. If this system were implemented, the person’s rank would slowly decay to level 45 and stop and his rank would be lost. This would only prevent the black market if the rank of General also got demoted to Brigadier. Otherwise, this would have little effect on preventing the black market. There are two ways that I came up with to implement this system. One would be to have the rank slowly decay after level 45, making the player have to keep playing. The problem with this is that it would radically decrease the global pot size. Another way to do it would be to have a certain number of level 46,47,47,49,50’s. Once the population exceeds that number, the decay of levels would start until the population came back under the limit. As more people go above the limit, the ranking system could increase the speed of decay of ranks. This would make the game extremely more competitive and would prevent people from selling accounts because they would only get to enjoy the General rank for a very brief period. At the same time, bragging and flaming would increase. Some people like this while others don’t. This is simply a point everyone needs to be aware of.

The last choice would be to simply implement 2 and 3. There isn’t really much detail I can go into for this.

All of these topics are heavily debated. Which choice outweighs the others is debatable and is something for you to decide. I simply am trying to present all the possibilities of decreasing the black market while still maintaining a competitive ranking system.

If you read all of this, thank you for your time. Pat yourself on the back.